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

Monday, 31 August 2020

Gillmor Gang: Platforming

 

Much was made during the Republican Convention of the lack of a party platform. The media characterized this as a capitulation to the Cult of Trump phenomenon, but the questioned begged was: so what? If you’re running as a candidate to disrupt the status quo…. But beneath the media framing, an important question emerges. What exactly is the platform we need to emerge from the toxic situation we find ourselves in?

For months, if not years, the technology industry has been working on a new platform to succeed the previous one. Mobile would seem to be that fundamental shift from the desktop world of Windows and PCs. The twin dominance of powerful phones by Google and Apple has created a new language of notifications and streaming video perfectly timed for the devastating pandemic. Our devices are now the front lines for managing the struggle to stay alive for our loved ones, the economy, and our future.

Zoom is of course the poster child for all that it enables, and certainly what it doesn’t. The notion of work from home is more likely a question of what is home and what’s the difference with work? The routines of life are congealing around the interactions with phone, watch, iPad, laptop, and TV. When I wake up, the first dive is for the notification stream built up overnight from overseas and then the East Coast. The rhythm varies from day to day: intense on Monday as the weekend cobwebs dissipate, more issue oriented through the middle of the week, and finally a thank-god-it’s Friday feel. Email, text messages, media updates, and work calendar reminders.

And then there’s the outline of the new platform — live streaming notifications from what some call citizen media, or the influencer network, or the loyal opposition. That last one refers to the decline in trust of the mainstream media. Maybe it’s just me, but the cable model of host-driven cyclical repetition of the headlines, talking heads, and medical ads adds up to a trip first to the mute button and eventually the off switch. Which plugs me right back into the notification stream and a new contract with us based on whether we click on the link or even allow the notification in the first place.

And these new voices are networks of one or a few, broadcasting on a global reach pastiche of cloud services that begin with the ubiquity of Zoom and its click and you’re there ease of on boarding. Then there are the key networks of record as it were: Facebook Live, Twitter/Periscope, YouTube, and maybe LinkedIn if you’re Brent Leary and got an early invite. There’s a whole bunch of streaming accelerators like Restream and StreamYard and Just Streams (I made that up) to use software and a dash of hardware to do what it took many thousands of dollars and cables just a few years ago. Right now it’s early days, but soon you’ll be seeing something that looks like the media it’s replacing as the OG buys in.

Don’t believe me? Just look at how streaming has disrupted the television industry. Or the music business. Or the reemergence of podcasting and newsletters. Or how messaging is growing rapidly as a preferred digital commerce and marketing channel. The pandemic has certainly had a devastating effect with the loss of theaters, events, and travel that drive so much of our economy and the emotional underpinning of our lives. But as we learn to respect the power of the virus to force this digital wave of transformation, we fuel the winners that emerge from a new hybrid blend of evolution and adaptation.

Technology has often been seen as impersonal and cold to the touch. But now we should be making friends with robots for touchless shopping, At the beginning of this Gillmor Gang session, Frank Radice seemed stunned by the administration’s takeover of the symbols of our Washington monuments for political purposes. By the end, he seemed more hopeful of a different result. We have more ways now of making our voices heard, broadcasting our own names in fireworks above and beyond the fake news and suppression. Our platform: suppress the virus, not the vote.

__________________

The Gillmor Gang — Frank Radice, Michael Markman, Keith Teare, Denis Pombriant, Brent Leary, and Steve Gillmor. Recorded live Friday, August 28, 2020.

Produced and directed by Tina Chase Gillmor @tinagillmor

@fradice, @mickeleh, @denispombriant, @kteare, @brentleary, @stevegillmor, @gillmorgang

For more, subscribe to the Gillmor Gang Newsletter and join the notification feed here on Telegram.

The Gillmor Gang on Facebook
…and here’s our sister show G3 on Facebook



from TechCrunch https://ift.tt/31KjmjN
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support