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();

Saturday, 31 July 2021

The pandemic effect is slowing

Welcome back to The TechCrunch Exchange, a weekly startups-and-markets newsletter. It’s inspired by what the weekday Exchange column digs into, but free, and made for your weekend reading. Want it in your inbox every Saturday? Sign up here

Our work this week kicked off in China, dug into African startup activity, dealt with China once again, took a very deep dive into the Latin American startup ecosystem and wrapped with a second look at the Robinhood IPO. In other words, not much was really going on at all!

You may have been surprised to see Amazon’s stock fall off a cliff Friday. After all, the company posted huge revenue gains to just over $113 billion during the quarter. And AWS, its public cloud business, seemed to tick along nicely.

But investors had expected more growth and had priced the Seattle-based e-commerce player accordingly. When Amazon missed revenue expectations and projected Q3 2021 growth of “between 10% and 16% compared with third quarter 2020,” investors let go of its stock.

But as some in the financial press are noting, it’s not just Amazon that’s taking stick from investors. Etsy and eBay also fell this week. It appears that investors are anticipating that a period of turbocharged growth in e-commerce thanks to the COVID-19 pandemic is slowing at least, and may in fact be over. That means valuations are going to get reset at a host of companies, startups included.

Not that every company slowing down after the pandemic’s early phases is suffering, Duolingo managed a strong opening week as a public company despite slowing growth. But delta variant or not, the investing classes are changing their market framing. We’d be smart to keep that in mind.

It’s the products, stupid

Something that is stuck in my teeth this week is how much Robinhood has changed the game regarding consumer investing. Sure, this week was mostly about the company’s IPO and its somewhat relaxed early trading performance. But, buried in its final S-1/A filings is new evidence of Robinhood’s cultural impact.

At the top of the U.S. consumer investing unicorn’s filings is a pair of statistics. They look like this:

Image Credits: Robinhood

Dang, you are thinking, that’s a lot of funded accounts and monthly active users. But then again, those are March 31, 2021, numbers. They are out of date. In the same filing, Robinhood indicated that its June 30 quarter saw its funded accounts tally grow to 22.5 million. That’s 25% growth in a single quarter!

Naturally, there were a few things going on in the second quarter of this year that won’t happen again, but it’s still a bonkers result.

Early Robinhood investor Jan Hammer of Index sent over a comment in the wake of his investment’s public offering, arguing that the company is part of work being done by tech companies to shake up financial services. Companies like Robinhood, he wrote, are “not just a fresh coat of paint for the same old financial products.”

I think that is correct. And the point is pretty damning of incumbent players still in the market with dated websites and medium-grade mobile experiences. Can you imagine getting a Gen Zer to swap out Robinhood or eToro or M1 Finance for, I don’t know, John Hancock? The toothpaste, as they say, is not going back into the tube.

How might Fidelity and Vanguard convince Robinhood users to move to their services? Will they be able to, or has an entire generation of investors skipped the traditional finance players entirely? Robinhood bulls must think so, and I can’t really find it in me to fight the perspective.

I do not know how Robinhood will perform in the coming quarters, but it does feel — given the MAU numbers from Robinhood, AUM figures from M1 and so forth — that fintech startups stole several marches on your trusty 401(k) provider. A market that I am sure the fintechs will soon dig more deeply into.

More about Africa

Circling back to Africa, how about some July data? Our exploration of the continent’s strong H1 2021 performance stopped in June, so let’s add some data. Per Africa-watching publication The Big Deal, African startups raised $308 million across 71 deals in the quarter. That’s a run rate of around $3.7 billion. Or in simpler terms, African startups are still on pace for their best year ever when it comes to raising venture capital.

Hugs, and get vaccinated.

Your friend,

Alex



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support