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

Tuesday, 28 July 2020

Thanks to COVID-19, everybody wants Density’s technology tracking building occupancy and use

Before the COVID-19 epidemic, Density was being used by companies like TechCrunch’s parent company, Verizon, to see how it could better use office space after the Yahoo!/Aol merger. Now, thanks to the COVID-19 epidemic everyone wants the company’s technology to track building and room occupancy and use.

It’s one reason why the company managed to raise $51 million in a new round of funding led by Kleiner Perkins with participation from previous investors like Dick Costolo’s 01 Advisors and the Los Angeles-based investment firm, Upfront Ventures.

“The primary driver [for demand] has been being able to reopen buildings safely and to do so without invading privacy,” says Density chief executive Andrew Farah.

And while the company started out as a service for data-loving tech companies, retail stores and coffee chains, it’s now become a ubiquitous technology for needed for every business with shared space, said Farah. That means fulfillment centers, grocery stores, warehouses, meat processing plants, in addition to something like TechCrunch headquarters.

What will the company do with all that money? Spend it on sales, marketing, and actually getting the tech into customers’ buildings, according to Farah.

“A lot of what we’re going to invest in is customer success, core infrastructure and growing our product and sales,” said Farah. “The first time our customers hear about us is when they get on a demo for a sales call.”

New orders for the company’s hardware and software service are pouring in, he said. And these order range from $20,000 to $50,000 pilot projects to seven-figure, thousand-unit initial deployments. “All of our customers end up tripling in size from their initial land,” he said. Density charges a one-time fee of $895 for installation of its sensors and another $800 per-sensor per-year for access to the data. 

Density works through both channel partners and direct sales, according to Farah, and the urgency of its potential customers has led to the massive uptick in funding.

“A lot of customers are trying to solve a problem that they had last week. There’s a sense of urgency from real estate and safety teams that we haven’t seen before,” said Farah.

Behind all of this is the demand from employees for safe, socially distanced public workspaces as the country continues to battle the COVID-19 epidemic that continues to ravage the U.S.

And while COVID-19 may be today’s main selling point, investors like Upfront Ventures’ Mark Suster saw the value in Density’s technology much earlier. “The investment thesis for me combines my belief in computer vision as a next-gen I/O (3) along with my thesis that The Innovator’s Dilemma or Deflationary Economics drive all of the largest success on the Internet (4). Today’s people tracking solutions are hugely expensive and mostly used in retail environments,” Suster wrote in a blog post announcing Upfront’s initial investment in the company, back in 2016. “The costs have greatly limited adoption and we think that’s about to change in a massive way.”

A 2016 animation of Density’s tracking capabilities via GIPHY

At Kleiner Perkins, the latest firm to back Density’s computer vision-based technology, the investment was a year-long process.

“I had heard through the grapevine that they were going to talk to investors,” said Ilya Fushman, a new director at the company and one of Kleiner Perkins’ partners, who had first begun speaking with Farah about a year ago.

Fushman said that Kleiner was interested in the real estate market and its commitment to Density falls in line with another recent investment in Proxy, a startup providing cardless and fobless building access controls.

“If you look for market sizing, which we do, there are few markets that are as big as real estate,” Fushman said. “It’s also a market that’s historically been under-penetrated by technology. A lot of building management is done on pen and paper when it comes to space utilization.”

Both access control and utilization have been areas that more companies need to get a handle on thanks to the COVID-19 epidemic, which made backing a company like Density a natural fit, he said.

 



from TechCrunch https://ift.tt/33aHcGm
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support