Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Tuesday, 23 March 2021

Our favorite companies from Y Combinator’s W21 Demo Day: Part 2

We’ve reached the end of Y Combinator’s biggest Demo Day, which saw more than 300 companies pitching back-to-back over eight hours.

Earlier, we highlighted some of the companies that caught our eye in the first half of the day. Now we’re back with our favorite companies from the second half. From a marketplace to help you resell formalwear to a startup that offers self-driving street cleaners, it’s quite the mix.

If you’d like to browse all of the companies from this batch YC has a catalog of publicly-launched W21 companies here.

Terra

Heading into this particular demo day, I had my eyes peeled for startups focused on delivering services via an API instead of offering managed software. Happily, there have been a number to dig into, including Pitbit.ai, Bimaplan, Enode and Terra.

Terra stood out to me because it solves a problem I care deeply about, namely fitness data siloization. My running data is stuck in one app, biking data in another, and my weight-lifting data is stuck in my head, though I doubt Terra has an API for that interface quite yet.

What Terra does is permit fitness app developers to better connect their services, which permits the sharing of data back and forth. Presenters likened their startup to Plaid — a popular thing to do in recent quarters — saying that what the fintech startup did for banking data, Terra would do for fitness and health information.

Getting developers to sign on will be tricky, as I presume all of the apps I use in an exercise context would prefer to be my main workout home. But I don’t want that, so here’s hoping Terra realizes its vision.

— Alex

AgendaPro

Calling itself “Shopify for beauty and wellness” in Latin America, AgendaPro wants to help small businesses in the region book customers online and collect payments. 

The company’s idea isn’t as radical as some companies that we heard from today — Carbon capture! Faster drug discovery! — but the company did share several metrics that made us sit up. First, AgendaPro has reached $152,000 in MRR, or just over $1.8 million in ARR. And representatives shared that its gross margins are 89%. As far as software margins goes, that’s pretty damn good.

The startup has more than 3,000 merchants using its service at the moment, and it claims that there are more than four million businesses that it could service. If AgendaPro can get software and payments revenues from even a respectable fraction of those companies, it will be a big, big business. And who doesn’t love vertical SaaS?

— Alex

Atom Bioworks

One of the holy grails of biochemistry is a programmable DNA machine. These tools can essentially “code” a molecule so that it reliably sticks to a specific substance or cell type, which allows a variety of follow-up actions to be taken.

For instance, a DNA machine could lock onto COVID-19 viruses and then release a chemical signal indicating infection before killing the virus. The same principle applies to a cancer cell. Or a bacterium. You get the picture — and it looks like Atom Bioworks has something a lot like this.



from TechCrunch https://ift.tt/3rp5169
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support