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, 3 November 2019

Week in Review: #DeleteLinkedIn

Hey everyone. Thank you for welcoming me into you inbox yet again.

Last week, I talked about SoftBank’s big embarrassment and how it could impact venture capital.

If you’re reading this on the TechCrunch site, you can get this in your inbox here, and follow my tweets here.


The big story

#DeleteLinkedIn

Before you dial up a quick search, no, LinkedIn isn’t currently caught in a scandal, but does a product need to have a deeply toxic culture, corrupt democracy or have an ICE contract for you to boycott it? Can’t the product itself just be bad?

I’ve thought about writing this for a long time because LinkedIn does serve some purposes, but it’s not a professional network, for the lay user it’s not much of anything.

It’s built for recruiters and salespeople, and, yeah, I’m sure they will have plenty of great things to say about the doors that have been opened to them, but what about the employed consumers who value professional development and have been convinced that a LinkedIn account is a necessity? Facebook has taught consumers that our data is the price to use their services, but at least we get a little something out of that deal. LinkedIn is just a CRM where the customers all populate their own cells of the spreadsheet. It gives users spam and pop-ups that seem designed to help them find where the notifications settings on their phones are.

LinkedIn has been remarkably unambitious for a long time. The company is trying to make money and that’s chill; they’re trying to live up to Microsoft’s expectations by making obvious choices and I’d imagine it’s awfully hard to do that.

Enterprise software lives in an eternal cycle of bundling and unbundling and LinkedIn is long overdue for some startups to come unbundle it. It can keep recruiting, sales and the millions of hallowed-out users profiles, but there’s so much potential dying on the LinkedIn vine.

Investors have raved about the “consumerization of enterprise,” or bringing consumer-like products deeper into the workplace. There has also been a ton of chatter about startups building bespoke communities focused on tighter verticals. These two trends should lead to some great professional development products, and I’m sure there already are plenty entrepreneurs building solutions that will pop up in my inbox or the comments. There’s nearly endless potential for niche professional networks to flourish, actually innovate and create connections.

LinkedIn is what happens when network effects congeal. It has this data that could be used to create so many good worker-facing products, instead the company has monetized itself by going out of its way to obfuscate this data for the majority of its users. I have truly limited faith in LinkedIn turning itself around so maybe it’s time we all walk away from this idea that it has so much untapped potential and we just give up on it to search out some more focused products that have a few users and meet a few needs.

Please reach out to me if you’re building something cool.

Send me feedback
on Twitter @lucasmtny or email
lucas@techcrunch.com

On to the rest of the week’s news.

Cole Burston/Bloomberg via Getty Images

Trends of the week

Here are a few big news items from big companies, with green links to all the sweet, sweet added context:

  • Jack and Zuck 
    Jack Dorsey says an awful lot of nothing for being the guy in charge of Twitter, but he had a lot to say this week, and more importantly a little to do. He said the company would be uniformly banning political ads on its site, something that will likely help it sidestep some controversy, and will turn up the heat for Facebook to do the same.
  • Escape pods
    I wrote some harsh words about Juul in my previous newsletter ahead of what seemed like an inevitable reckoning. Well, that reckoning has gotten a bit more codified this week. Altria wrote down $4.5 billion of Juul’s value. The company is prepping for major layoffs including a handful of execs. Layoffs suck but not quite as much as taking a job at Juul.
  • Fitting in
    Google made an interesting hardware play this week buying Fitbit for $2.1 billion. Hardware has always been a bit of an afterthought for Google, but maybe this purchase will allow them a more concerted push to take on the Apple Watch, or maybe like Nest, they won’t have any idea what to do with them. Regardless, it’s a relatively soft and dignified landing for Fitbit which has had a rocky past three years going head-to-head with Apple.

GAFA Gaffes

How did the top tech companies screw up this week? This clearly needs its own section, in order of badness:

  1. Facebook pays fine without saying sorry:
    [Facebook agrees to pay UK data watchdogs Cambridge Analytica fine but settles without admitting liability]
  2. App Store bugs erases ratings:
    [A week-long iOS App Store bug wiped out over 20M ratings]

Disrupt Berlin

DISRUPT SF 530X350 V2 berlin

It’s hard to believe it’s already that time of the year again, but we just announced the agenda for Disrupt Berlin and we’ve got some all-stars making their way to the stage. I’ll be there this year, get some tickets and come say hey!

Sign up for more newsletters in your inbox (including this one) here.



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support