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

Thursday, 24 December 2020

The built environment will be one of tech’s next big platforms

From the beginning, the plan for Sidewalk Labs (a subsidiary of Alphabet and — by extension — a relative of Google) to develop a $1.3 billion tech-enabled real estate project on the Toronto waterfront was controversial.

Privacy advocates had justified concerns about the Google-adjacent company’s ability to capture a near-total amount of data from the residents of the development or any city-dweller that wandered into its high-tech panopticon.

But Alphabet, Sidewalk Labs’ leadership and even Canada’s popular prime minister, Justin Trudeau, had high hopes for the project.

Startups working in real estate technology managed to nab a record $3.7 billion from investors in the first quarter of the year.

“Successful cities around the world are wrestling with the same challenges of growth, from rising costs of living that price out the middle class, to congestion and ever-longer commutes, to the challenges of climate change. Sidewalk Labs scoured the globe for the perfect place to create a district focused on solutions to these pressing challenges, and we found it on Toronto’s Eastern Waterfront — along with the perfect public-sector partner, Waterfront Toronto,” said Sidewalk Labs chief executive Dan Doctoroff, the former deputy mayor of New York, in a statement announcing the launch in 2017. “This will not be a place where we deploy technology for its own sake, but rather one where we use emerging digital tools and the latest in urban design to solve big urban challenges in ways that we hope will inspire cities around the world.”

From Sidewalk Labs’ perspective, the Toronto project would be an ideal laboratory that the company and the city of Toronto could use to explore the utility and efficacy of the latest and greatest new technologies meant to enhance city living and make it more environmentally sustainable.

The company’s stated goal, back in 2017 was “to create a place that encourages innovation around energy, waste and other environmental challenges to protect the planet; a place that provides a range of transportation options that are more affordable, safe and convenient than the private car; a place that embraces adaptable buildings and new construction methods to reduce the cost of housing and retail space; a place where public spaces welcome families to enjoy the outdoors day and night, and in all seasons; a place that is enhanced by digital technology and data without giving up the privacy and security that everyone deserves.”

From a purely engineering perspective, integrating these new technologies into a single site to be a test case made some sense. From a community development perspective, it was a nightmare. Toronto residents began to see the development as little more than a showroom for a slew of privacy-invading innovations that Sidewalk could then spin up into companies — or a space where startup companies could test their tech on a potentially unwitting population.

So when the economic implications of the global COVID-19 pandemic started to become clear back in March of this year, it seemed as good a time as any for Sidewalk Labs to shutter the project.

“[As] unprecedented economic uncertainty has set in around the world and in the Toronto real estate market, it has become too difficult to make the 12-acre project financially viable without sacrificing core parts of the plan we had developed together with Waterfront Toronto to build a truly inclusive, sustainable community,” Doctoroff said in a statement. “And so, after a great deal of deliberation, we concluded that it no longer made sense to proceed with the Quayside project.”



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support