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

Friday, 26 July 2019

Twitter Q2 beats on sales of $841M, posts big EPS of $1.43 due to one-off tax benefit, mDAUs up to 139M

Two days after Facebook reporting growing numbers (even amid its regulatory turmoil), its social media counterpart Twitter today announced its Q2 results. The company made $841 million in overall revenues, up 18% on a year ago; with EPS and net income respectively at $1.43 and $1.1 billion, a huge bump due to a “significant income tax benefit” related to the establishment of a deferred tax asset for corporate structuring for certain geographies, Twitter said. Without that tax benefit, net income was a more modest $37 million and EPS was $0.05.

Monetizable Daily Active Users — Twitter’s new, preferred audience metric — is now at 139 million, which Twitter says is up 14% on a year ago.

The figures beat on revenues, but missed by quite a bit on EPS (if you remove the one-off tax benefit): Analysts were expecting earnings per share of around $0.19 on revenues of just over $829 million for the quarter. A year ago, Twitter posted an EPS of $0.17 on sales of $710.5 million, and last quarter, the company handily beat analyst expectations on sales of $787 million and diluted EPS of $0.25.

The US continues to be Twitter’s revenue engine, the company said. It accounted for $455 million of its sales, up 24%, while international revenue was $386 million, up just 12%. Japan continues to be Twitter’s number-two market, up 9% and accounting for $133 million of its overall sales.

One of the more notable figures in this latest report is a new metric called “monetizable daily active users”, which Twitter has introduced to replace monthly and daily active users. mDAUs is based on Twitter users who logged in or were “otherwise authenticated and accessed Twitter on any given day through twitter.com or Twitter applications that are able to show ads,” according to the company.

The advertising aspect is the key part: Twitter’s previous metrics, the more established MAU and DAU figures that other companies typically provide, did not distinguish which users were served ads, and which were not.

Twitter’s argument has been that MAUs and DAUs are not a great picture of the company’s business prospects because of that fact, and so it announced some time ago that it would stop reporting these figures, moving instead to mDAUs.

Be that as it may, it’s notable that the MAU figure had been a problematic one for Twitter: in the last quarter, the company’s MAUs were 330 million, a drop of 6 million users compared to a year ago, and people had been using the generally sluggish growth (and sometimes decline) of those numbers to underscore the contention that Twitter had a growth problem.

Moving to mDAUs is a way for Twitter to de-emphasize that view and to put a spotlight on more encouraging numbers: those that show Twitter is increasing its advertising base. Nevertheless, Twitter acknowledges that it’s not standard, and so harder to use as a comparable against anything other than Twitter itself. “Our calculation of mDAU is not based on any standardized industry methodology and is not necessarily calculated in the same manner or comparable to similarly titled measures presented by other companies,” it noted in a recent letter to shareholders.

The company is still relatively young, and continues to tinker and make changes — some big, some small — to both its backend and user interface. Some have been made to address some of the larger issues that people have been (often critically) vocal about, such as coping with harassment or making the site more user-friendly for power-Tweeters, new adopters, and everyone in between. Others are to continue building Twitter as a business, which means making it more advertising and media-partner friendly.

Not all the changes are always positive. There’s been a fair amount of backlash over the company’s new destop design, which it introduced this month. It will be interesting to see how and if it proves to be a headwind in future quarters.

More to come.

 



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support