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

Friday, 25 June 2021

Dear EU: It’s time to get a grip

The EU for all its lethargy, faults and fetishization of bureaucracy, is, ultimately, a good idea. It might be 64 years from the formation of the European Common Market, but it is 29 years since the EU’s formation in the Maastricht Treaty, and this international entity is definitely still acting like an indecisive millennial, happy to flit around tech startup policy. It’s long due time for this digital nomad to commit to one ‘location’ on how it treats startups.

If there’s one thing we can all agree on, this is a unique moment in time. The COVID-19 pandemic has accelerated the acceptance of technology globally, especially in Europe. Thankfully, tech companies and startups have proven to be more resilient than much of the established economy. As a result, the EU’s political leaders have started to look towards the innovation economy for a more sustainable future in Europe.

But this moment has not come soon enough.

The European tech scene is still lagging behind its US and Asia counterparts in numbers of startups created, talent in the tech sector, financing rounds, and IPOs / exits. It doesn’t help, of course, that the European market is so fractionalized, and will be for a long time to come.

But there is absolutely no excuse when it comes to the EU’s obligations to reform startup legislation, taxation, and the development of talent, to “level the playing field” against the US and Asian tech giants.

But, to put it bluntly: The EU can’t seem to get its shit together around startups.

Consider this litany of proposals.

Starting as far back a 2016 we had the Start-Up and Scale-Up Initiative. We even had the Scale-Up Manifesto in the same year. Then there was the Cluj Recommendations (2019), and the Not Optional campaign for options reform in 2020.

Let’s face it, the community of VC´s, founders, and startup associations in Europe has been saying mostly the same things for years, to national and European leaders.

Finally, this year, we got something approaching a summation of all these efforts.

Portugal, which has the European presidency for the first half of this year, took the bull by its horns and created something approaching a final draft of what the EU needs.

After, again, intense consultations with European ecosystem stakeholders, it identified eight best practices in order to level the playing field covering the gamut of issues such as fast startup creation, talent, stock options, innovation in regulation and access to finance. You name it, it covered it.

These were then put into the Startup Nations Standard and presented to the European Council at Digital Day on March 19th, together with the European Commission’s DG CNECT and its Commissioner Tierry Breton. I wrote about this at the time.

Would the EU finally get a grip, and sign up for these evidently workable proposals?

It seemed, at least, that we might be getting somewhere. Some 25 member states signed the declaration that day, and perhaps for the first time, the political consensus seemed to be forming around this policy.

Indeed, a body set up to shepherd the initiative (the European Startup Nations Alliance) was even announced by Portuguese Prime Minister AntĂ³nio Costa which, he said, would be tasked with monitoring, developing and optimizing the standards, collecting data from the member states on their success and failure, and reporting on its findings in a bi-annual conference aligned with the changing presidency of the European Council.

It would seem we could pop open a chilled bottle of DOC Bairrada Espumante and celebrate that Europe might finally start implementing at least the basics from these suggested policies.

But no. With the pandemic still raging, it seemed the EU’s leaders still had plenty of time on their hands to ponder these subjects.

Thus it was that the Scaleup Europe initiative emerged from the mind of Emmanuel Macron, assembling a select group of 150-plus of Europe’s leading tech founders, investors, researchers, corporate CEOs and government officials to do some more pondering about startups. And then there was the Global Powerhouse Initiative of DG Research & Innovations Commissioner, Mariya Gabriel.

Yes, ladies and gentlemen, we were about to go through this process all over again, with the EU acting as if it had the memory span of a giant goldfish.

Now, I’m not arguing that all these collective actions are a bad thing. But, by golly, European startups need more decisive action than this.

As things stand, instead of implementing the very reasonable Portuguese proposals, we will now have to wait for the EU’s wheels to slowly turn until the French presidency comes around next year.

That said, with any luck, a body to oversee the implementation of tech startup policy that is mandated by the European community, composed of organizations like La French Tech, Startup Portugal and Startup Estonia, might finally seem within reach.

But to anyone from the outside, it feels again as if the gnashing of EU policy teeth will have to go on yet longer. With the French calling for a ‘La French Tech for Europe’ and the Portuguese having already launched ESNA, the efforts seem far from coordinated.

In the final analysis, tech startup founders and investors could not care less where this new body comes from or which country launches it.

After years of contributions, years of consultations, the time for action is now.

It’s time for EU member states to agree, and move forward, helping other member states catch up based on established best practices.

It’s time for the long-awaited European Tech Giants to blossom, take on the US-born Big Tech Giants, and for Europe to finally punch its weight.



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support