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, 25 June 2020

Connect Ventures outs $80M third fund to back ‘product-led’ seed-stage founders

Connect Ventures, the London-based seed-stage VC that was an early investor in Citymapper and Typeform — and more recently backed scaling startups such as Curve and TrueLayer — is announcing a new $80 million fund to continue investing in “product-led” founders.

Backing the new fund is a combination of existing and new LPs including Top Tier Capital Partners, Isomer Capital, the U.K. taxpayer’s British Patient Capital, De Agostini, Big Society Capital, Draper Esprit and Korelya Capital. Connect’s last fund, raised in 2016, was around $62 million based on today’s exchange rate, so this is a slightly larger amount of deployable capital.

Launched back in 2012 when there was still a very limited supply of institutional capital at seed-stage in Europe (and when seed cheques were often called Series A!), Connect Ventures is pan-European and invests in B2B and consumer software categories including SaaS, fintech, digital health and “future of work”.

Running throughout the firm’s investment thesis is a product focus, with the belief that “product-led, software entrepreneurs” are the kinds of founders most likely to transform the way we live and work at scale.

You can see this digital product bent throughout a lot of its portfolio companies. For example, as B2B SaaS companies go, Typeform is about as product-focused as they come. More obviously, consumer fintech plays such as finance app Emma, and all-your-cards-in-one app Curve, also live and die by their respective apps — a theme that will continue going forward with this third fund.

“We’re interested in building long term relationships with founders who have the obsession and focus required to build product-led companies, and the ambition to build category leaders,” says Sitar Teli, general partner at Connect Ventures, in a statement.

One other notable thing about Connect Ventures is that it has always and continues to do fewer deals per year than many seed-stage firms — so-called “conviction investing”, as it is often referred to today. In other words, the opposite to a spray ‘n’ pray approach that favours diversification. That means not only placing bigger (and therefore riskier) bets in a smaller number of early-stage companies, but also throwing more support behind those investments, including taking a board seat, in a bid to help tip the scales towards success.

“We’ve intentionally created a low volume, high conviction, high support investment firm to back these founders,” adds Teli. “That’s why we’ll be targeting the same curated number of seed investments with this fund, using the larger fund size to provide the right capital and support on our journey together”.

On that note, Connect says it has already started deploying this fund with recent investments. They include BSit (the subscription-based childcare and babysitting platform), Oyster (the distributed talent enablement platform), and, as already mentioned, fintech Emma.

Alongside Teli, Connect Ventures’ two other general partners are Pietro Bezza and Rory Stirling (see TechCrunch’s previous coverage of Stirling’s recruitment). The firm has backed over 50 startups to date.



from TechCrunch https://ift.tt/3eztShL
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support