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, 26 November 2020

Gift Guide: Black Friday tech deals that are actually worth checking out

Black Friday approaches! In a year where asking Alexa what day today is feels totally normal, this Black Friday seems like it came out of nowhere.

As we say pretty much every year, a lot of Black Friday deals are… not that good. While there are certainly deals to be found, there’s also a lot of hand-waving going on to help retailers and manufacturers clear out the old models and get that Q4 numbers boost.

It can also be a day where it’s way too easy to buy junk just because it’s got a 40% off tag on it. With that in mind, we’ve tried to limit this list to the stuff we’d recommend even when it’s not on sale. If we see anything else worthwhile over the next day or two, we’ll add it — so feel free to check back in.

This article contains links to affiliate partners where available. When you buy through these links, TechCrunch may earn an affiliate commission.

A few tips to keep in mind today:

  • If you see something is on sale and want to check if the “sale” price is really any better than normal, pop it into a price tracker like camelcamelcamel. If the price suddenly increased last week only to be “reduced” by whatever percent this week, you know somethings up.
  • Be at least a little wary of TV deals. There are TV deals to be had, for sure — but the most eye-popping deals tend to be surplus panels with a new model number slapped on them. Google the model number; if that specific TV seems to only exist for the sake of Black Friday, think twice.

 

Apple

Airpods Pro

Image Credits: Brian Heater

Once unheard of, Apple deals on Black Friday are now a little easier to find. They tend to go fast though!

  • Both Amazon and Walmart are selling AirPods Pro for $170 — a super steep discount from the usual $250. The stock seems to be coming and going fast, so this one might be tough to get.
  • The 40mm, GPS version of the latest Apple Watch (Series 6) is down to $379 from $399 on Amazon right now. While that’s only a drop of $20, these things only just hit the shelves back in September.
  • Best Buy has some pretty solid deals on the latest (8th gen) iPads, like a 10.2″ 32GB model for $280 (usually $330), or the 128GB model for $360 (usually $430.)

Amazon

Image Credits: Amazon

With people already flocking to Amazon on Black Friday, the company usually offers some pretty massive discounts on its Amazon-branded devices as a means of seizing the moment and getting more people into their ecosystem. Sure enough:

Google

google nest hub

Image Credits: Brian Heater

Google tends to go pretty big with the Black Friday discounts, and this year is no exception. Some examples:

  • The Nest Hello doorbell is down to $179, normally $229.
  • Nest Hub is down to $50 (normally $90), and its bigger brother the Nest Hub Max (pictured above) is down to $179 (normally $229.)
  • The latest generation of the Nest Mini smart speaker is $19, down from $50. The beefier Nest Audio speaker, meanwhile, is down to $85 each (usually $99) with the catch that you’ve got to buy two.
  • Stadia Premiere Edition — effectively a starter kit for Google’s gaming-in-the-cloud service Stadia, including both a Stadia controller and a Chromecast Ultra — is down to $70 from $100. The controller alone would normally cost you $70, so if you were already considering giving Stadia a spin it’s sort of like getting a free Chromecast Ultra?

Roku

Image Credits: Roku

Roku’s new Streambar — basically a Roku box and a soundbar crammed into one package — is going for $100 today, down from its normal price of $130.

Sonos

Sonos Move 11

If you’re going to expand your Sonos system (which, hey, is sort of the point of having a Sonos system), Black Friday is usually a good day to do it. Alas, this years Sonos sales are a bit limited, but there are still savings to be found. Amazon has the portable Sonos Move down to $299 (normally $399) and the Sonos SUB down to $599 (usually $699), while Sonos itself is also selling its Beam Playbar for $299 (usually $399.)

Hulu

Image Credits: Hulu

If you don’t mind ads, Hulu is slashing the price of its ad-supported plan from $6 a month to $2 a month for 1 year. Sadly, no deal for the ad-free plan, which is still at its normal $12 a month — but if you were planning on checking out the ad-supported plan anyway, you might as well save a couple bucks.

Calm

Image Credits: Calm

Calm, the popular subscription-based meditation/sleep sounds service, is offering up a pair of promos: they’ll cut the price on a one year membership down by 50% (from $70 to $35), or a lifetime membership by 60% ($399 to $159.)

Video Games

You probably won’t be finding any deals on this year’s new Xboxes or Playstations because… well, they already couldn’t keep up with demand. This year’s best deals are going to be on games, services, and in a few cases, accessories.

Hell, the same goes for the Nintendo Switch. Even without a new hardware release this season, Nintendo’s console is flying off the shelves. If you’re looking for big savings on a Switch itself this year, know that the inventory is incredibly low — any retailer offering a Switch deal is really just doing it to get your hopes up and get you on the site. We’re having a hard time finding any in stock even at full price.

Xbox Deals:

  • Microsoft is selling Xbox controllers (which will work with the next-gen Xbox Series consoles!) for $40, down from the usual $60.
  • Best Buy is selling 3 months of Xbox Game Pass (Microsoft’s Netflix-style game subscription service) for $23, down from the usual $45.
  • Gears 5 is $5 (usually $40) at Best Buy, Doom Eternal is $20 (usually $60) at GameStop, and Microsoft is taking $10 off the newly remastered Tony Hawk’s Pro Skater 1 + 2.

Playstation Deals

  • Sony is selling 12 months of Playstation Plus (its service that lets you play multiplayer games online) for $45, down from $60.
  • Amazon is selling Last of Us Part II for $30 (normally $60), and GameStop and a number of other retailers have Ghost of Tsushima going for $40 (normally $60). Sony has the oh-so-hard-but-oh-so-addicting Cuphead for $15, down from $20. Most retailers will also have sales on Star Wars Jedi: Fallen Order, Watch Dogs Legion, and Star Wars Squadrons.

Switch Deals:

  • Nintendo is selling Luigi’s Mansion, Super Mario Maker 2, Yoshi’s Crafted World, Mario Tennis Aces, and Zelda Link’s Awakening for $40 (normally $60) through Amazon and most other retailers. All of these are fantastic!



from TechCrunch https://ift.tt/39iS48d
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support