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

Sunday 28 July 2019

What will happen when the bad times come?

Here in America we are now in the longest economic expansion in history. That doesn’t mean it’s about to end. But it does raise the question: what happens when it does? When the economic cycle finally inverts into recession, perhaps unexpectedly and with no obvious cause, perhaps because of some geopolitical crisis? We know what happens to the overall economy — but what happens to the tech sector?

Last time around, the answer was: “surprisingly little.” Late 2008 saw widespread expectations that tech was about to crater along with all other sectors. This was the era of Sequoia Capital’s infamous “R.I.P. Good Times” deck. They could hardly have been more wrong.

Instead the Great Recession everywhere else was more of a speed bump in Silicon Valley. In fact it was arguably the birth of the modern startup boom. The number of startups tracked by CrunchBase rose rapidly from 1200 in 2007, by at least 25% every year, to 5700 five years later.

Meanwhile, YoY revenue growth at Google did drop into single digits in 2008-09 … but only for a few quarters, never actually stalled, and quickly returned to 20%+. Amazon growth never fell below double digits. Apple’s went negative for one lonesome quarter, but otherwise stayed north of 20%.

Go back a little further, though, and you come to the dot-com crash, in which tech was — of course, and rightly — hit hard. This was not entirely a bad thing. Even at the time it was clear that to some extent the chaff was being sifted from the industry, albeit at widespread painful personal cost. However, that unpleasant correction set the stage for the nonstop growth since.

So: will the next downturn parallel 2008, or 2001? Will tech growth slow but not stop, or has the time come again for a great economic threshing which will separate wheat from chaff? Or will the next downturn take its own, very different shape? Tech is both much larger now, and much more tightly woven into every other sector.

One could argue a recession will accelerate the demise of legacy businesses and systems, and their replacement with newer, more efficient, software- / API- / AI-driven ones, so the tech industry will actually see a net benefit from any downturn. I’m skeptical of this vulture theory, though. A sinking tide ultimately lowers all boats.

Still, the Big Five — Alphabet, Amazon, Apple, Facebook, Microsoft — will probably sail though relatively untouched. They may stop hiring as aggressively (Google has grown by 18,000 employees to 107,000 in just the last year) but they have enough cash on hand, and diverse enough revenue streams, to weather a storm. Even Google is no longer totally reliant on ads, now that it’s making $8 billion/year from GCP.

The one possible exception is Facebook, which remains the most precarious of the Big Five, given the increasing vitriol it attracts, its relative lack of room to grow in wealthy markets, and, probably most important, the fact it remains a one-trick revenue pony. Could the next recession see Facebook drop from Big Five status? Very possibly.

Lesser companies, though — those outside of tech proper, and even the herd of growth-stage unicorns — will almost certainly be forced into major layoffs. Will the newly-laid-off flock back to school, as happened in 2008? Or will they rush to roll the dice with new startups? Given the rising costs of, and increasing skepticism aimed at, traditional higher education, it seems likely that instead we’ll suddenly see an enormous bloom of new startups.

On the one hand, this means more ideas flung at the proverbial wall, and so more innovation. But on the other, these will presumably mostly be low-cost web / app startups, which as I’ve argued before are increasingly played out, from people who are founding them as a reaction to being laid off rather than because they have a vision they can’t ignore, in a downturn during which funding will presumably grow ever harder to acquire.

There’s a school of thought which says more startups is always better, and another which says that bad startups are like an algal bloom, choking the oxygen (money, attention, talent) from the ambient environment and making things worse for the overall ecosystem. It seems likely that the next downturn will serve as a natural experiment testing these hypotheses. Let’s hope the former is more true. And if (but only if) you have your own burning startup idea in you, it might be best to beat the eventual recessionary rush.



from TechCrunch https://ift.tt/2K6P4h6
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support