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, 28 February 2019

NetEase is the latest Chinese tech giant to lay off a big chunk of its staff

NetEase, China’s second-biggest online games publisher with a growing ecommerce segment, is laying off a significant number of its employees, adding to a list of Chinese tech giants that have shed staff following the Lunar New Year.

A NetEase employee who was recently let go confirmed with TechCrunch that the company had fired a large number of people spanning multiple departments, including ecommerce, education, agriculture (yes, founder and executive officer Ding Lei has a thing for organic farming) and public relations, although downsizing at Yanxuan, its ecommerce brand that sells private-label goods online and offline, had started before the Lunar New Year holiday.

Multiple Chinese media outlets covered the layoff on Wednesday. According to a report from Caijing Magazine, Yanxuan fired 30-40 percent of its staff; the agricultural brand Weiyang got a 50 percent cut; the education unit downsized from 300 to 200 employees; and 40 percent of NetEase’s public relations staff was gone.

A spokesperson from NetEase evaded TechCrunch’s questions about the layoff but said the company is “indeed undergoing a structural optimization to narrow its focus.” The goal, according to the person, is to “boost innovation and organizational efficiency so NetEase can fully play to its own strengths and adapt to market competition in the longer term.”

NetEase CEO Ding Lei pictured picking Longjing tea leaves in Hangzhou. Photo: NetEase Yanxuan via Weibo

Oddly, ecommerce and education appear to be some of NetEase’s brighter spots. The company singled them out alongside music streaming during its latest earnings call as the three sectors that saw “strong profit growth potential” and “will be the focus of [the company’s] next phase of strategic growth.” The staff cuts, then, may represent an urgency to tighten the purse strings for even NetEase’s rosiest businesses.

The shakeup fits into market speculation about company staff cuts to save costs as China copes with a weakening domestic economy. JD.com, a rival to Alibaba, is firing 10 percent of its senior management to cut costs, Caixin reported last week. Ride-hailing giant Didi Chuxing plans to let go 15 percent of its staff this year as part of a reorganization to boost internal efficiency, though it’s adding new members to focus on more promising segments.

Alibaba took an unexpected turn, announcing last week that it will continue to hire new talent in 2019. “We are poised to provide more resources to our platforms to help businesses navigate current environment and create more job opportunities overall,” the firm said in a statement.

2018 was a tough year for China’s games companies of all sorts. The industry took a hit after regulators froze all licensing approvals to go through a reshuffle, dragging down stock prices of big players like Tencent and NetEase. These companies continue to feel the chill even after approvals resumed, as the newly minted regulatory body imposes stricter checks on games, slowing down the application process altogether and delaying companies’ plans to monetize lucrative new titles.

That bleak domestic outlook compelled NetEase to take what Ding dubs a “two-legged” approach to game publishing, with one foot set in China and the other extending abroad. Tencent, too, has been finding new channels for its games through regional partners like Sea’s Garena in Southeast Asia.

NetEase started in 1997 and earned its name by making PC games and providing email services in the early years of the Chinese internet. More recently the company has intended to diversify its business by incubating projects across the board. It has so far enjoyed growth in segments like music streaming and ecommerce (which is reportedly swallowing up Amazon China’s import-led service) while stepping back from others such as comics publishing, an asset it is selling to youth-focused video streaming site Bilibili.



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support