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

Sunday, 14 March 2021

The Roblox final fantasy

Hello friends, and welcome to Week in Review.

Last week, I talked a bit about NFTs and their impact on artists. If you’re inundated with NFT talk just take one quick look at this story I wrote this week about the $69 million sale of Beeple’s photo collage. This hype cycle is probably all the result of crypto folks talking each other up and buying each other’s stuff, but that doesn’t mean there won’t be lasting impacts. That said, I would imagine we’re pretty close to the peak of this wave, with a larger one down the road after things cool off a bit. I’ve been wrong before though…

This week, I’m interested in a quick look at what your kids have been talking about all these years. Yes, Roblox.

If you’re reading this on the TechCrunch site, you can get this in your inbox from the newsletter page, and follow my tweets @lucasmtny.


David Baszucki, founder and CEO of Roblox - Roblox Developer Conference 2019

(Photo by Ian Tuttle/Getty Images for Roblox)

The big thing

Roblox went public on the New York Stock Exchange this week, scoring a $38 billion market cap after its first couple days of trading.

Investors rallied around the idea that Roblox is one of the most valuable gaming companies in existence. More than Unity, Zynga, Take-Two, even gaming giant Electronic Arts. It’s still got a ways to go to take down Microsoft, Sony or Apple though… The now-public company is so freaking huge because investors believe the company has tapped into something that none of the others have, a true interconnected creative marketplace where gamers can evolve alongside an evolving library of experiences that all share the same DNA (and in-game currency).

The gaming industry has entered a very democratic stride as cross-play tears down some of the walls of gaming’s platform dynamics. Each hardware platform that operates an app store of their own still has the keys to a kingdom, but it’s a shifting world with uncertainty ahead. While massive publishers have tapped cloud gaming as the trend that will string their blockbuster franchises together, they all wish they were in Roblox’s position. The gaming industry has seen plenty of Goliath’s in its day, but for every major MMO to strike it rich, it’s still just another winner in a field of disparate hits with no connective tissue.

Roblox is different, and while many of us still have the aged vision of the image above: a bunch of rudimentary Minecraft/Playmobile-looking mini-games, Roblox’s game creation tools are advancing quickly and developers are building photorealistic games that are wider in ambition and scope than before. As the company levels-up the age range it appeals to — both by holding its grasp on aging gamers on its platform and using souped-up titles to appeal to a new-generation — there’s a wholly unique platform opportunity here: the chance to have the longevity of an app store but with the social base layer that today’s cacophony of titles have never shared.

Whether or not Roblox is the “metaverse” that folks in the gaming world have been hyping, it certainly looks more like it than any other modern gaming company does.


SHENYANG, CHINA – MARCH 08: Customers try out iPhone 12 smartphones at an Apple store on March 8, 2021 in Shenyang, Liaoning Province of China. (Photo by VCG/VCG via Getty Images)

Other things

Apple releases some important security patches
It was honestly a pretty low-key week of tech news, I’ll admit, but folks in the security world might not totally buy that characterization. This week, Apple released some critical updates for its devices, fixing a Safari vulnerability that could allow attackers to run malicious code on a user’s unpatched devices. Update your stuff, y’all.

TikTok gets proactive on online bullying
New social media platforms have had the benefit of seeing the easy L’s that Facebook teed itself up for. For TikTok, its China connection means that there’s less room for error when it comes to easily avoidable losses. The team announced some new anti-bullying features aimed at cutting down on toxicity in comment feeds.

Dropbox buys DocSend
Cloud storage giants are probably in need of a little reinvention, the enterprise software boom of the pandemic has seemed to create mind-blowing amounts of value for every SaaS company except these players. This week, Dropbox made a relatively big bet on document sharing startup DocSend. It’s seemingly a pretty natural fit for them, but can they turn in into a bigger opportunity?

Epic Games buys photogrammetry studio
As graphics cards and consoles have hit new levels of power, games have had to satisfy desired for more details and complexity. It takes a wild amount of time to create 3D assets with that complexity so plenty of game developers have leaned on photogrammetry which turns a series of photos or scans of a real world object or environment into a 3D model. This week, Epic Games bought one of the better known software makers in this space, called Capturing Reality, with the aim of integrating the tech into future versions of their game engine.

Twitter Spaces launches publicly next month
I’ve spent some more time with Twitter Spaces this week and am growing convinced that it has a substantial chance to kneecap Clubhouse’s growth. Twitter is notoriously slow to roll out products, but it seems they’ve been hitting the gas on Spaces, announcing this week that it will be available widely by next month.

Seth Rogen starts a weed company
There’s a lot of money in startups, there’s really never been a better time to get capital for a project… if you know the right people and have the right kind of expertise. Seth Rogen and weed are a pretty solid mental combo and him starting a weed company shouldn’t be a big shock.


A Coupang Corp. delivery truck drives past a company's fulfillment center in Bucheon, South Korea, on Friday, Feb. 19, 2021. South Korean e-commerce giant Coupang filed for an initial public offering in the U.S. and that could raise billions of dollars to battle rivals and kick off a record year for IPOs in the Asian country. Photographer: SeongJoon Cho/Bloomberg via Getty Images

SeongJoon Cho/Bloomberg via Getty Images

Extra things

Some of my favorite reads from our Extra Crunch subscription service this week:

Coupang follows Roblox to a strong first day of trading
“Another day brings another public debut of a multibillion-dollar company that performed well out of the gate.This time it’s Coupang, whose shares are currently up just over 46% to more than $51 after pricing at $35, $1 above the South Korean e-commerce giant’s IPO price range. Raising one’s range and then pricing above it only to see the public markets take the new equity higher is somewhat par for the course when it comes to the most successful recent debuts, to which we can add Coupang.” More

How nontechnical talent can break into deep tech
“Startup hiring processes can be opaque, and breaking into the deep tech world as a nontechnical person seems daunting. As someone with no initial research background wanting to work in biotech, I felt this challenge personally. In the past year, I landed several opportunities working for and with deep tech companies. More

Does your VC have an investment thesis or a hypothesis?
“Venture capitalists love to talk investment theses: on Twitter, Medium, Clubhouse, at conferences. And yet, when you take a closer look, theses are often meaningless and/or misleading…” More


Once more, if you liked reading this, you can get it in your inbox from the newsletter page, and follow my tweets @lucasmtny.



from TechCrunch https://ift.tt/3eDK4Sc
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support