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, 30 August 2018

Skip and Scoot only companies awarded scooter permits in San Francisco

The great San Francisco scooter decision has been made. And Skip and Scoot have claimed the prize.

The San Francisco Municipal Transportation Agency (SFMTA) issued one-year permits to Skip and Scoot on Thursday, a decision that ends months of waiting for 12 companies that applied to operate within the city. JUMP, which Uber acquired in April, as well as Lyft,  Skip, Spin, Lime, Scoot, ofo, Skip, Razor, CycleHop, USSCooter and Ridecell are applied for permits in San Francisco.

The permits will allow a maximum of 625 scooters for each company in the first six months. Scoot and Skip may have the potential to increase their number of scooters in months seven to 12 to a cap of 2,500, at the SFMTA’s sole discretion.

“The SFMTA’s decision is based on the strength of the proposals submitted by the two companies, combined with their experience of owning, operating and maintaining a shared mobility service in the public right-of-way. The agency looked for applications that prioritized the city’s concerns around safety, disabled access, equity and accountability,” the agency said.

The SFMTA noted in its decision that Skip and Scoot had the strongest applications. The agency seemed particularly interested in safety measures these companies planned to take. Scoot, which was been managing a fleet of shared electric mopeds in San Francisco since 2012, proposed mandatory instructional videos for users, helmets included in rentals, and free in-person training.

Scoot also proposed using swappable batteries instead of manually taking the scooters off the street for regular recharging.

“This method could help the city reduce the number of vehicle miles traveled on San Francisco streets, which helps reduce traffic congestion and greenhouse gas emissions,” the SFMTA said in its decision.

Scoot said it will soon introduce an electric kick-style scooter to its line-up of electric motor scooters and electric bicycles in response to the decision.

Unsurprisingly, the companies that lost out have expressed dismay with the decision.

“Jump both submitted a strong application and has a track record of successfully working with the city on our bike pilot,” an Uber spokesperson wrote in an email. “Granting only two scooter permits unnecessarily limits mobility options in San Francisco, and we plan to follow up with the SFMTA to share our concerns,”

Bird, a scooter startup that has $2 billion valuation, said it will continue to work with San Francisco officials, partners, community organizations, and advocates in hopes of bringing Bird back to the City by the Bay, a spokeswoman said in an email.

Bird, which has a goal of operating in 50 cities globally before the end of the year, noted that residents have sent nearly 30,000 emails to city officials in support of bringing Bird to San Francisco.

The pilot program is the city’s solution to handling the scooter chaos of 2018. Bird, and soon after, Lime and Spin released their fleet of scooters into the city in March without permission. They became an instant hit among city residents seeking out fast and cheap ways to get around town. They also soon became a pariah as scooters inundated sidewalks and right of ways.

The SFMTA put a temporary ban on all scooters in May and initiated a permit process as part of a 24-month pilot program that would allow up to five scooter companies to operate in the city.

Bird, Lime, Lyft and JUMP didn’t complete lose out Thursday. The city of Santa Monica’s Shared Mobility Device Selection Committee officially awarded Bird, Lime, Lyft and JUMP Bikes permits to operate both electric scooters and/or bikes in the city as part of its 16-month pilot program beginning Sept. 17.



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support