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, 1 November 2018

Google walkout organizer: ‘I hope I still have a career in Silicon Valley after this’

Shouting “women’s rights are worker’s rights” and a number of other #TimesUp and #MeToo chants, upwards of 1,000 Google employees gathered in San Francisco’s Harry Bridges Plaza Thursday to protest the company’s handling of sexual harassment and misconduct cases.

Staffers from all of Google’s San Francisco offices were in attendance. An organizer, who declined to be named, told TechCrunch there were 1,500 Google employees across the globe that participated in the 48-hour effort to arrange a worldwide walkout. The effort was a major success. More than 3,000 Googlers and supporters of the movement attended the New York City walkout alone. As many as 1,000 Googlers and others came out for the San Francisco walkout, which the organizers said, was double the number they expected.

Cathay Bi, a Google employee in San Francisco and one of the walkout organizers, told a group of journalists at the rally that she was conflicted with participating in the walkout and ultimately decided not to go public with her own story of sexual harassment.

“I experienced sexual harassment at Google and I didn’t feel safe talking about it,” said Bi, pictured above. “That feeling of not being safe is why I’m out here today. I’d love it if everyone felt safe talking about it.”

[gallery ids="1740837,1740838,1740839,1740841,1740840,1740843,1740845"]

“There were many times over the course of the last 24 hours that I emailed the group and said ‘I’m not doing this because I’m scared’ but that fear is something everyone else feels,” she said. “I said to myself last night, I hope I still have a career in Silicon Valley after this.”

Other organizers declined to go on the record.

There were protests around the globe today, including in London, Dublin, Montreal, Singapore, New York City, San Francisco and Cambridge, following a New York Times investigation that revealed Google had given Android co-creator Andy Rubin a $90 million exit package despite multiple relationships with other Google staffers and credible accusations of sexual misconduct made against him. That story, coupled with tech’s well-established issue of harassment and discrimination toward women and underrepresented minorities, was a catalyst for today’s rallies.

At the rally, Googlers read off their list of demands, which includes an end to forced arbitration in cases of harassment and discrimination, a commitment to end pay and opportunity inequity and a clear, inclusive process for reporting sexual misconduct safely and anonymously.

They’re also requesting that the search giant promote chief diversity officer Danielle Brown to a role in which she reports directly to chief executive officer Sundar Pichai, as well as the addition of an employee representative to the company’s board of directors.

Here’s the statement from Pichai Google provided to TechCrunch this morning: “Earlier this week, we let Googlers know that we are aware of the activities planned for today and that employees will have the support they need if they wish to participate. Employees have raised constructive ideas for how we can improve our policies and our processes going forward. We are taking in all their feedback so we can turn these ideas into action.”

Now, employees around the Globe will await Google’s highly-anticipated course of “action.”

“These types of changes don’t happen overnight,” Bi said. “If we expected them overnight we would have the wrong expectations of how these movements take place.”



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support