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, 26 March 2020

Zindi taps 12,000 African data scientists for solutions to COVID-19

Since its inception, Cape Town based crowdsolving startup Zindi has been building a database of data scientists across Africa.

It now has 12,000 registered on its its platform that uses AI and machine learning to tackle complex problems and will offer them cash-prizes to find solutions to curb COVID-19.

Zindi has an open challenge focused on stemming the spread and havoc of coronavirus and will introduce a hackathon in April. The current competition, sponsored by AI4D, tasks scientists to create models that can use data to predict the global spread of COVID-19 over the next three months.

The challenge is open until April 19, solutions will be evaluated against future numbers and the winner will receive $5000.

The competition fits with Zindi’s business model of building a platform that can aggregate pressing private or public-sector challenges and match the solution seekers to problem solvers.

Founded in 2018, the early-stage venture allows companies, NGOs or government institutions to host online competitions around data oriented issues.

Zindi’s model has gained the attention of some notable corporate names in and outside of Africa. Those who have hosted competitions include Microsoft, IBM and Liquid Telecom. Public sector actors — such as the government of South Africa and UNICEF — have also tapped Zindi for challenges as varied as traffic safety and disruptions in agriculture.


Zindi Team in Cape Town 1

Image Credits: Zindi

The startup’s CEO didn’t imagine a COVID-19 situation precisely, but sees it as one of the reasons she co-founded Zindi with South African Megan Yates and Ghanaian Ekow Duker.

The ability to apply Africa’s data science expertise, to solve problems around a complex health crisis such as COVID-19 is what Zindi was meant for, Lee explained to TechCrunch on a call from Cape Town.

“As an online platform, Zindi is well-positioned to mobilize data scientists at scale, across Africa and around the world, from the safety of their homes,” she said.

Lee explained that perception leads many to believe Africa is the victim or source of epidemics and disease. “We wanted to show Africa can actually also contribute to the solution for the globe.”

With COVID-19, Zindi is being employed to alleviate a problem that is also impacting its founder, staff and the world.

Lee spoke to TechCrunch while sheltering in place in Cape Town, as South Africa went into lockdown Friday due to coronavirus. Zindi’s founder explained she also has in-laws in New York and family in San Francisco living under similar circumstances due to the global spread of COVID-19.

Lee believes the startup’s competitions can produce solutions that nations in Africa could tap as the coronavirus spreads. “The government of Kenya just started a task force where they’re including companies from the ICT sector. So I think there could be interest,” she said.

Starting April, Zindi will launch six weekend hackathons focused on COVID-19.

That could be timely given the trend of COVID-19 in Africa. The continent’s cases by country were in the single digits in early March, but those numbers spiked last week — prompting the World Health Organization’s Regional Director Dr Matshidiso Moeti to sound an alarm on the rapid evolution of the virus on the continent.

By the WHO’s stats Wednesday there were 1691 COVID-19 cases in Sub-Saharan Africa and 29 confirmed deaths related to the virus — up from 463 cases and 10 deaths last Wednesday.

The trajectory of the coronavirus in Africa has prompted countries and startups, such as Zindi, to include the continent’s tech sector as part of a broader response. Central banks and fintech companies in Ghana, Nigeria, and Kenya have employed measures to encourage more mobile-money usage, vs. cash — which the World Health Organization flagged as a conduit for the spread of the virus.

The continent’s largest incubator, CcHub, launched a fund and open call for tech projects aimed at curbing COVID-19 and its social and economic impact.

Pan-African e-commerce company Jumia has offered African governments use of its last-mile delivery network for distribution of supplies to healthcare facilities and workers.

Zindi’s CEO Celina Lee anticipates the startup’s COVID-19 related competitions can provide additional means for policy-makers to combat the spread of the virus.

“The one that’s open right now should hopefully go into informing governments to be able to anticipate the spread of the disease and to more accurately predict the high risk areas in a country,” she said.



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support