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

Wednesday, 28 August 2019

Rwanda to phase out gas motorcycle-taxis for e-motos

The government of Rwanda will soon issue national policy-guidelines to eliminate gas motorcycles in its taxi sector in favor of e-motos.

The country’s president Paul Kagame previewed the plan last week. “We will find a way to replace the ones you have now. We urge taxi-moto operators to help us when the phase-out process comes,” he said speaking at a youth forum.

The Director General for the Rwanda Utilities Regulatory Authority Patrick Nyirishema confirmed Kagame’s comments were ahead of a national e-mobility plan in the works for the East African nation.

“The president’s announcement is exactly the policy direction we’re in…it’s about converting to electric motos…The policy is prepared, it’s yet to be passed..and is going through the approval process,” Nyirishema told TechCrunch on a call from Kigali.

Motorcycle taxis in Rwanda are a common mode of transit, with estimates of 20 to 30 thousand operating in the capital of Kigali. The country has come a long way since the 1990s, becoming a test-bed for drone-delivery and prioritizing initiatives to become an African tech hub.

Rwanda motorcycle taxisNyirishema explained that converting to e-motorcycles is part of a national strategy to move Rwanda’s entire mobility space to electric. The country will start with public transit operators, such as moto-taxis, and move to buses and automobiles.

“Once the policy is out, we’ll no longer permit any motorcycle that is not electric to be added to a fleet,”  Nyirishema said, adding that the country’s regulators will need to create an appropriate transition period and program for taxi operators to move to e-motos.

The news comes as Africa’s motorcycle taxi markets — worth an estimated $4 billion — have seen a flurry of tech investment and expansion. Uber and Bolt got into the motorcycle taxi business in Africa in 2018.

Norwegian (and Chinese backed) browser service Opera’s recent $50 million backed West Africa product expansion included linking its new payment app to ORide, a motorcycle ride-hail venture it launched in Nigeria.

Nigerian motorcycle taxi and delivery startup MAX.ng raised a $7 million Series A round with participation from Yamaha. The company is using the funding to pilot e-motorcycles in Africa powered by renewable energy.

Another local moto-taxi ventureUganda’s SafeBoda—received outside capital in a Series B round co-led by the venture arms of Germany’s Allianz and Indonesia’s Go-Jek

The Director General for  Rwanda’s Utilities Regulatory Authority Patrick Nyirishema prepared to confirm partners for the country’s e-moto conversion.

One startup that says it will be involved is Ampersand, a Kigali based venture that has already begun to pilot EVs and charging systems in Rwanda.

The company has worked with a feasibility study for implementing electric vehicles across Rwanda since last year, according to CEO Josh Whale. “We’ve also got a grant from the government…and it’s been tied in really well with the feasibility study,” he told TechCrunch.

Copy of Bike Rebero Ampersand eveningAmpersand has shaped its own e-motorcycle model, building the batteries and fitting them into new motorcycle chassis imported from Asia. To keep the taxi-moto riders consistently moving—vs. delayed while recharging—the startup has developed a battery swapping system and station.

One motorcycle ride-hail startup that’s been testing an Ampersand e-moto is Cango. Founded in 2015, the company has app-based, on-demand taxi-moto fleets in Rwanda and Congo.

“We intend to be among the first to switch our fleet, as the [Ampersand] bikes are ready,” Cango co-founder Barrett Nash told TechCrunch in a message from Kinshasa.

Ampersand CEO Josh Wale sees electricity changing the micro-economics of motorcycle taxi markets. He estimates taxi riders in Rwanda spend $2000 a year on fuel and oil-charges for their gas machines.

“Looking at it from a driver point of view, from day one they are paying less for the bike and the battery by going electric,” he said.

 

 

 



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support