diff --git a/html/assets/tf_small.png b/html/assets/tf_small.png new file mode 100644 index 0000000..5ed7dfd Binary files /dev/null and b/html/assets/tf_small.png differ diff --git a/html/assets/tf_small_pale.png b/html/assets/tf_small_pale.png new file mode 100644 index 0000000..304bb4a Binary files /dev/null and b/html/assets/tf_small_pale.png differ diff --git a/html/tech.html b/html/tech.html index a6de6af..394748c 100644 --- a/html/tech.html +++ b/html/tech.html @@ -42,743 +42,1779 @@

Technology

-

Google offers Project Fi users a one-time $100 Nexus 6 replacement in cases of accidental damage

-

- -

It looks like being an all-in Project Fi customer has some benefits. It turns out Project Fi customers with damaged phones are offered a one-time replacement of their Nexus 6 for just $100, so long as they bought the phone from Google during the Project Fi setup process. All it takes is a quick call, chat or email with Project Fi support, and you'll have a new phone shortly.

- - - - - - - -
-
- -

This follows in the footsteps of rather vague and unadvertised policies from the Play Store and Google Store that (seemingly on-and-off) offer free or discounted replacements for Nexus devices, but this one is hardly vague — Project Fi offers any customer who bought a Nexus 6 through Fi a one-time $100 replacement within a year of purchase, with no questions asked.

- -
- Andrew Martonik - 2015-08-12T11:00:36.000Z -
-
- -
-

Pushbullet now supports end-to-end encryption for various features

-
In an age where hacked accounts and leaked messages are a common occurrence, encryption support is all the more important, not because you have anything to hide (well, unless you … Continue reading
- Ida Torres - 2015-08-12T11:00:29.000Z -
-
- -
-

$100M Worth of Crazy-Swanky Cars Are About to Go on Sale

-
$100M Worth of Crazy-Swanky Cars Are About to Go on Sale

We’ve scoured the catalogs to bring you the very best of this year's offerings.

-

The post $100M Worth of Crazy-Swanky Cars Are About to Go on Sale appeared first on WIRED.

- Alex Davies - 2015-08-12T11:00:26.000Z -
-
- -
-

Details on the next Nexuses leaked

-
@OnLeaks has just shared a bunch of details about the anticipated Nexus smartphones from LG and Huawei.
- Rob Triggs - 2015-08-12T10:45:46.000Z -
-
- -
-

Here's a curved LG sound bar to go with your curved LG TV

-
- -Because everyone hates straight lines.
- Mat Smith - 2015-08-12T10:40:00.000Z -
-
- -
-

Using Android with Mac OS X: tips and recommendations

-
Have an Android phone and looking for an easy way to synchronise your data to your Apple Mac? Here's our guide to making it as easy as the iPhone & iTunes.
- Nirave Gondhia - 2015-08-12T10:21:02.000Z -
-
- -
-

LG launches a Google Cast-compatible curved soundbar to go with your curved TV

-

- -

LG has launched a curved soundbar in its Music Flow series of connected audio equipment, dubbed the Music Flow HS8 Wireless Curved Sound Bar. Available in Europe starting next week, the HS8 houses a 4.1 channel speaker system with an output of 360W and is compatible with Google Cast.

- -
- Harish Jonnalagadda - 2015-08-12T10:11:44.000Z -
-
- -
-

Affiliate program may be coming soon to the Google Play Store

-
Monetizing the web isn’t something that most consumers think about, but really, it is a necessity for a lot of online businesses to stay afloat. Since display and pop up … Continue reading
- Ida Torres - 2015-08-12T10:00:32.000Z -
-
- -
-

Sorry, But Digital Songs Sound Better When Recorded on Tape

-
Sorry, But Digital Songs Sound Better When Recorded on Tape

It's a digital world, but that song you’re streaming still sounds best if it was originally encoded in magnetic particles.

-

The post Sorry, But Digital Songs Sound Better When Recorded on Tape appeared first on WIRED.

- Victor Krummenacher - 2015-08-12T09:59:45.000Z -
-
- -
-

Galaxy Note 5 and S6 Edge Plus battery confirmed?

-
A new leak has revealed the battery we can expect Samsung to include in its upcoming Galaxy Note 5 and Galaxy S6 Edge Plus smartphones but is it big enough?
- Nirave Gondhia - 2015-08-12T09:49:06.000Z -
-
- -
-

Huawei teases “unique” smartphone for IFA 2015

-
Huawei has released a couple of teaser images for a new smartphone, which will be unveiled at IFA 2015 in Berlin on September 2nd.
- Rob Triggs - 2015-08-12T09:45:18.000Z -
-
- -
-

Twitter gives companies access to its full archives

-
- -Twitter has just launched a new tool called "Full-Archive Search API," which gives brands access to every public tweet ever made from the microblogging site's inception nine years ago. If you recall, the company also opened up its archives to resea...
- Mariella Moon - 2015-08-12T09:28:00.000Z -
-
- -
-

Noodlecake takes revenge on pirates with an unbeatable game

-
Noodlecake Studios uploaded its own Shooting Stars game to torrent sites to send a message to pirates.
- Rob Triggs - 2015-08-12T09:00:19.000Z -
-
- -
-

Hillary Clinton to turn over her private email server

-
- -Hillary Clinton has decided to surrender the private email server she used during her time as Secretary of State to the Department of Justice. A few hours after the Intelligence Community Inspector General told Congress that some of her corresponde...
- Mariella Moon - 2015-08-12T08:28:00.000Z -
-
- -
-

Microsoft rolls out OneNote update with a new floating icon

-

- -

OneNote is currently being updated for Android, offering up a new feature for fans to take full advantage of. If you've been crying out for more convenient access to your notes, this update is for you as Microsoft has implemented a new floating icon called floatie.

- -
- Rich Edmonds - 2015-08-12T07:50:27.000Z -
-
- -
-

Skype for Business is coming to your mobile device

-
- -Two months after Microsoft launched Skype's Business edition, which integrates into MS Office Calendar and allows for group messaging/video chats/calls for up to 250 people, the video conferencing company announced on Tuesday that a mobile version...
- Andrew Tarantola - 2015-08-12T07:10:00.000Z -
-
- -
-

Focus: a complete gallery app that prioritizes ease of use, organization and security

-
Today we would like to introduce you to a new gallery app that managed to catch our eye. It's called Focus, and it's very simple, yet very advanced and full of neat features.
- Edgar Cervantes - 2015-08-12T06:47:35.000Z -
-
- -
-

Twitter sees a big increase in account info requests

-
- -Law enforcement agencies are making social media part of more and more investigations these days, based on Twitter's latest transparency report. Between January 1st and June 30th this year, the company saw a 52 percent increase in account informati...
- Mariella Moon - 2015-08-12T06:24:00.000Z -
-
- -
-

Retailers' Apple Pay rival is ready for testing, three years later

-
- -Merchant Customer Exchange is an alliance of several of the US' biggest retailers and restaurants, including Wal-Mart and Target, aimed at bringing mobile payments under their own control — and not by tying themselves to a particular tech com...
- Mat Smith - 2015-08-12T05:31:00.000Z -
-
- -
-

eBay back to school deals: smartphones from Samsung, Sony and others at under $299!

-
Want to buy a new phone? eBay has some awesome back to school deals you can take advantage of! All these phones cost under $300, so come in and take a look.
- Edgar Cervantes - 2015-08-12T05:23:21.000Z -
-
- -
-

Wage war for the control of Europe in Pocket Platoons, set to arrive on August 27th

-

Coming from En Masse Entertainment, Pocket Platoons is a turn-based strategy game with a World War II theme, which will be there second mobile game release onto Android. The game is set to focus on base building as well as troop positioning, with the final goal being to control the continent of Europe.

+

Tap your way to fame and fortune in Beat Bop, coming soon to Android

+

To be released by Fliptus Pty Ltd, Beat Bop is a tapping game where players are using their frantic tapping to crate music for fans. Players assume the same Le of a struggling guitar player, with aspirations of stardom. As players progress their character, they'll be recruiting band-mates to play with, and invest in merchandise that can be sold when not playing the game.

-

Players will choose either the Allied or Axis faction, build up a base, raise army, and lead it to war. Sounds a lot like the board game RISK in a lot of ways. The game is set to contain "over 300 campaign stages, hundreds of progression quests, dozens of tactical units, and a wide variety of combat modes to master", according to the developers.

+

Beat Bop is also set to include random tasks, that players can choose to try and win an "extra boost" (according to the presser), or will result in an accident that can cause a setback. Even the sound and tempo of the songs will dynamically respond to the performance of the player. Faster tapping, for example, will respond in amping up the music, while recruiting the aforementioned band mates will influence the style, based on what instruments they play.

+

+

Beat Bop Features:

+

- Start with nothing. Recruit band members and load them up with new clothes and gear

- Dynamic and original soundtrack that matches the way you tap and the band members you play with

- Easy to play - simply tap to jam with your band and rake in money

- Sell merchandise in the background to get rich even while you're idle

- Polished, vibrant and light-hearted graphics

- Original soundtrack provided by Piotr Nowotnik

+

Beat Bop is set go have a soft release in Australia and New Zealand on August 20th, and going global at a later date. The game is slated to be free with "opt-in ads". You can check out the game in action ahead of time with the trailer below.

+

+ Ed Burnette + 2015-08-14T21:50:59.000Z +
+
+ +
+

Dead Union is a new mobile FPS strategy game currently in a closed beta testing phase

+

A new FPS-strategy hybrid game will be arriving for mobile devices soon. Currently in the beta testing phase of development, Dead Union is a blend of FPS gameplay with base building strategy mechanics, and zombies of course. However this game may not be exactly what you are thinking it is.

+ +

Essentially players will be building up their base with different defenses and other handy structures and items to help you survive. You will also have the ability to control zombies as your main type of military unit. This means you will be deploying different types of zombies to attack your opponent. Of course they will be able to do the same. When you are confronted with incoming zombies, you'll switch to a first-person perspective and handle them with your current weapon of choice.

+

+

Dead Union has a few different types of game modes available. While there is a single-player mode you can play through, following the storyline within the game, there also happens to be multiplayer PvP as well as X-Mode. The PvP mode is pretty self-explanatory. X-Mode is basically a survival game mode where you will be trying to survive as long as you can against waves of zombies.

+

There are a few details we do not know just yet, with controller support being the main one. However, judging from how the onscreen controls are set up, anyone with a Shield tablet and Shield controller should be able to easily button map this game. The same goes for anyone using an app to button map controllers with their non-Shield device. Right now there is no specific release date announced, only that it is coming soon. As for price, it looks like Dead Union will be available for free with optional IAPs. More screenshots available below.

+

Official Website: Dead Union

-

-
-

Players will need to direct their troops to attack the enemy base, or defend their own base. You will also be promoting officers to tailor their skills to the needs at hand. Multiple players can team up to form coalitions in order to defeat opposing players and bigger enemy coalitions as well.

-

Pocket Platoons is set to be released for free on Android both on Google Play, as well as the Amazon Appstore, on August 27th. In the meantime you can check out the game in action through the trailer below.

-

+

+
Ed Burnette - 2015-08-12T04:46:03.000Z + 2015-08-14T21:39:41.000Z
-

IBM’s Watson AI Wants to Coach Your Fantasy Football Team

-
IBM’s Watson AI Wants to Coach Your Fantasy Football Team

A new app called Edge Up Sports uses IBM's Watson cognitive computing skills to help you win your fantasy league.

-

The post IBM’s Watson AI Wants to Coach Your Fantasy Football Team appeared first on WIRED.

- Tim Moynihan - 2015-08-12T04:01:00.000Z -
-
- -
-

Wildcard launches a slick news app you might actually use

-
+

AMD's R9 Fury X is a beast, but 4K gaming is still a waste

+
-Here's the evolution of mobile news reading in a nutshell: First there were browsers; then RSS readers; and eventually we saw a slew of news reading apps like Flipboard, Feedly and Nuzzle that aimed to make it easier to discover and read news. Now...
+Since the rise of 3D graphics cards, the inexorable trend in PC gaming has been around getting bigger, better and faster. That led to a culture of PC gamers obsessing over frame rates and doing whatever it took to push their hardware as much as pos...
Devindra Hardawar - 2015-08-12T03:56:00.000Z + 2015-08-14T19:00:00.000Z
-

Branto allows you to monitor your home, control your smart appliances and more

-
What is the Branto, and what can it do? This unique spherical gadget made of aluminum and polymer gives you full remote presence, smart appliance control and security features.
- Edgar Cervantes - 2015-08-12T03:40:43.000Z +

[The Android Police Podcast] Episode 173: Xooming Through Honeycomb

+

AP_AlbumArt_Final

Welcome back to another week of the Android Police Podcast. To catch us live on Hangouts On Air every Thursday at 5:30PM PST (subject to change as per the calendar widget below), just head over to androidpolice.com/podcast. For the unedited video show, click here. As always, we'll take your questions at 530-HELLO-AP and also at our email address: podcast at androidpolice dot com.

On this week's episode: On this week's show, we go back to Honeycomb, taking a look at Google's odd tablet-focused operating system that introduced us to the Holo design language.

Read More

[The Android Police Podcast] Episode 173: Xooming Through Honeycomb was written by the awesome team at Android Police.



+ +
+ David Ruddock + 2015-08-14T18:53:00.000Z
-

Be the first person to complete Purm the Game and net yourself $1000

-

Purm the Game from Diske Inc is an interesting little game. It is an endless worm flying game where you control Purm, the mighty worm who has managed to put a jetpack onto his back so he can fly around. You will need to avoid plenty of obstacles as well as not crashing in general, while trying to earn as many points as possible.

- -

While this may be an infinitely flying game, there is a way to beat it. The problem is, the solution/directions to beating this game is encrypted within a riddle. Once you've managed to solve the riddle on how to beat the game, you will then actually have to beat the game using those directions. Why finish the game?

-

-

Well for one thing you can tell people you managed to finish an endless runner/flyer game and then you can sit back and watch them try to figure out what you're talking about. Probably with a sort of WTF type of look on their faces. The other reason is that if you're the first person to complete the game, the developers will apparently personally give you $1000, and that would be in real money, not play money. Needless to say, with $1000 on the line, finding the solution to beating this game won't be easy.

-

The soundtrack was done by OMFG for those of you curious. If you are up for the challenge, whether that be just trying to get the high score or trying to be the first to complete the game and score $1000 in cold hard cash, you can download Purm The Game off of Google Play for free. There are optional IAPs as well and using any of them also removes the ads (and gets you Ninja and Lazy worm) within the game as a side benefit.

- -

- Ed Burnette - 2015-08-12T03:25:51.000Z -
-
- -
-

Shure wants dedicated spectrum for wireless audio gear in the UK

-
+

Android Central's back to school guide

+

-The proliferation of mobile phones is great, and so is the availability of 4G in the UK. However, dwindling spectrum available for wireless audio gear could cause problems at your local music venue or playhouse -- especially in the UK. Shure, the p...
+

It's time to go back to school, and we'll make sure you're well-equipped.

+ +

For many students, it's time to hit the books again. Whether you're loading up for your first day at high school, finding your stride in college, or you're making the long haul in university graduate programs, we've got the best tech for back to school season right here.

+ +
+ Simon Sage + 2015-08-14T18:43:45.000Z +
+
+ +
+

Google Fi Outage? Tell Us Your Experience

+
Fi Welcome KitA few of us here at the XDA offices recently switched from Straight Talk to Google Fi. Aside from the well-packaged welcome kit, with case, external battery, and headphones, we’ve
+ Mario Tomás Serrafero + 2015-08-14T18:43:19.000Z +
+
+ +
+

iHome HomeKit and iSP5 Smartplug ready to make your home “smarter”

+
The name 'iHome' has probably made you think of Apple but there's an Android compatible device known as the ‘iSP5 Smartplug’. iHome has finally introduced the iHome HomeKit that conveniently … Continue reading
+ R Padla + 2015-08-14T18:40:40.000Z +
+
+ +
+

Apple Watch gets more band options for larger wrists

+
+ +If you've been eying the Apple Watch, but needed a larger band to wear it comfortably, you're in luck. Cupertino added new accessories today to accommodate with a new L/XL Sports Band and Link Bracelet Kit that adds an extra 40mm to the 42mm metal...
Billy Steele - 2015-08-12T02:36:00.000Z + 2015-08-14T18:29:00.000Z
-

This super-thin OLED desk lamp will also charge your phone

-
+

The Note 5 Marks the Decline of a Power User Flagship Line

+
notefeatureimageDISCLAIMER: This is an editorial based on early impressions. I will update my thoughts once I get a hands-on look next week. It is not just the S-pen, or the
+ Mario Tomás Serrafero + 2015-08-14T18:26:42.000Z +
+
+ +
+

Sony Adds The First 64-Bit Devices To Its Open Device Project

+

AOSP_Xperia_Z3-_660x384-660x384

Sony is ahead of most other OEMs when it comes to its support of open source. It contributes significantly to AOSP and even releases binaries for many of its devices so developers can build AOSP ROMs for them. Today, Sony is announcing support for the first three 64-bit devices in the Open Device project.

The new devices are the Xperia Z3+,  Xperia Z4 Tablet, and Xperia Z4 Tablet WiFi. Technically, we're talking about a phone and two versions of the same tablet, but it's nice they're supporting the mobile data version specifically.

Read More

Sony Adds The First 64-Bit Devices To Its Open Device Project was written by the awesome team at Android Police.



+ +
+ Ryan Whitwam + 2015-08-14T18:17:59.000Z +
+
+ +
+

RHA turns it up to 20 with the T20 in-ear headphone

+
Reid Heath Acoustics (RHA) is a an audio company with a problem. They can’t seem to let a new earphone be their signature product for more than a few months before they come up with one that tops that. Don’t these guys ever rest? Apparently not, because their excellent T10 earphone released less than a […]
+ Bill Henderson + 2015-08-14T18:10:51.000Z +
+
+ +
+

Samsung SM-G9198 flip phone officially announced in China, packing Snapdragon 808

+
Last month TEENA, essentially the Chinese version of the FCC, revealed information on a new Samsung flip phone that was powered by Android and offered fairly high-end specs. Now it’s official.
+ Andrew Grush + 2015-08-14T18:10:40.000Z +
+
+ +
+

Top 10 things to know about the OnePlus 2

+

-Do you take your desk lighting seriously? Really seriously? You'll want to look at Aerelight's just-shipped A1 desk lamp, then. The eye-catching design uses an OLED panel to illuminate your room, which both makes it wafer-thin and produces a nat...
- Jon Fingas - 2015-08-12T02:09:00.000Z +
+ Russell Holly + 2015-08-14T18:02:43.000Z
-

Nokia smartphone comeback may be in the cards by 2016

-
With so many smartphone brands competing for our attention now, it’s easy to forget that once upon a time, there was this dominant force that ruled above all. Yes, Nokia … Continue reading
+

Nipper charges your smartphone with just two AA batteries

+
Powerbanks and battery extenders have been lifesavers so many times when our smartphones threaten to run out of juice (and the fear of that happening is already a “disease” as … Continue reading
Ida Torres - 2015-08-12T02:00:55.000Z + 2015-08-14T18:00:25.000Z
-

Samsung files patent for smartphone that can display holographic images

-
A Samsung patent filing from Q3 2014 has recently been published, showcasing technology that would allow a device to display holograms.
- Edgar Cervantes - 2015-08-12T01:38:21.000Z -
-
- -
-

Rdio adds free live radio stations to its streaming library

-
+

How to change your default save locations on Windows 10

+
Windows 10 allows you to select a different hard drive to store your documents, pictures, videos and music by default.
-Apple Music has Beats1, and now Rdio has live radio, too. Rdio announced today that in addition to its library of 35 million songs and curated stations, it's tacking on live broadcast radio with access to "nearly 500 stations." We haven't seen a fu...
- Billy Steele - 2015-08-12T01:36:00.000Z +

read more

+ + 2015-08-14T18:00:00.000Z
-

Doom & Destiny Advanced, the hilarious RPG sequel we were waiting for

-
There were whispers and rumors about a sequel to the geek-tastic hit RPG “Doom & Destiny”, but we didn’t put much stock in them. Imagine how happy we were when … Continue reading
+

Researchers find popular car immobilizer can easily be hacked

+
+ +Immobilizers are supposed to kill a vehicle's engine to prevent it from being stolen. However, a trio of researchers recently released a study that reveals the Megamos immobilizer system used by more than two dozen car manufacturers -- including Vo...
+ Andrew Tarantola + 2015-08-14T17:44:00.000Z +
+
+ +
+

Hugely successful YouTube star and best-selling novelist John Green says he feels like 'a fraud'

+

YouTube Star John Green

There's this thing that really smart people do to themselves, where they convince themselves that they're not as good as their peers and that their success really comes down to luck and faking it.

This feeling is called Imposter's Syndrome. It's particularly rampant in the geek/hacker world, where intelligence of all kind is revered, genius coding is idolized, and famous genius coders have reputations for being insult-spewing dudes who don't suffer fools kindly (think: young Bill Gates, Mark Zuckerberg in the movie "The Social Network", or Linus Torvalds' famous rants).

Many tech professionals are working themselves into the ground, feeling that in order to keep up the facade of being smart and skilled, they need to worker longer and harder.

So, here's an interesting insight: Even some of the most successful people suffer from Impostor's Syndrome. Since we first reported on the rampage of Imposter Syndrome in the tech industry, we've noticed more brave souls going public about their own battle.

On Thursday during a Reddit AMA, another brave soul confessed: author and YouTube star John Green.

Green is the author of best-selling novels "Looking for Alaska," "Paper Towns" and "The Fault in Our Stars." ("The Fault" was beautifully written and filled with memorable lines like this one: "'As he read, I fell in love the way you fall asleep: slowly, and then all at once.")

Ghank john greenreen is also known for his mega popular vlogbrothers YouTube channel with his brother Hank, and his educational video channels Crash Course,and Mental Floss. All told, the Greens have a following of 10 million people across all their channels.

This guy has Imposter's Syndrome? Yup. 

When a recent grad student asked him if he ever had writer's block and worried that he'd never write again, Green replied:

I mean I haven't published a novel for three and a half years, so....yeah.

I feel this way all the time. People often use the phrase "literally the worst" colloquially, but I have on countless occasions felt that I am literally the worst writer on Earth, and that I am a complete fraud. I feel like a fraud all the time, and I still don't feel like I know how to write a novel, and at this point I doubt I ever will.

The only way through it for me is to take pleasure in the process of writing, or to find value in it. Even when I suck. Even when there's no way anything I'm writing will ever see the light of day. The act of trying to write for an audience must feel valuable in and of itself, or else I am doomed.

As another Imposter's Syndrome sufferer once advised: The trick to making these terrifying feelings of insecurity go away, even temporarily, is to talk about it and discover you are not alone.

Which means if we're all really "faking" our way to success, maybe even greatness, how fake can we really be?

SEE ALSO: 15 things you didn't know about billionaire Microsoft founder and philanthropist Bill Gates

Join the conversation about this story »

NOW WATCH: People doing backflips on a two-inch wide strap is a real sport called slacklining










+ +
+ Julie Bort + 2015-08-14T17:41:58.000Z +
+
+ +
+

Prana: an LED exhibit that breathes with you

+
+ + + + +As you step into the shimmering globe of 13,000 LEDs, a sensor detects your presence. It reacts to the rise and fall of your lungs and illuminates the sphere of suspended lights called PRANA. The signal from the chip works its way to a computer...
+ Mona Lalwani + 2015-08-14T17:30:00.000Z +
+
+ +
+

The SuperSite Windows 10 How To Collection: Customize your experience

+
+ +

read more

+ + 2015-08-14T17:21:00.000Z +
+
+ +
+

Blackview packaging turns into a Google Cardboard VR viewer

+
We haven't heard of the Blackview brand before but the Alife P1 Pro definitely got our attention because of its very unique packaging. Why, the cardboard box that houses the … Continue reading
+ R Padla + 2015-08-14T17:20:27.000Z +
+
+ +
+

Our Galaxy Note 5 forums are open!

+

+ +

The Galaxy Note 5 clearly was the big winner from Thursday's Samsung Unpacked event — if you don't live in Europe, anyway — and that means the discussions are really starting to heat up in our Note 5 forums.

+ +
+ Phil Nickinson + 2015-08-14T17:11:06.000Z +
+
+ +
+

Police believe alleged gang leader posted a chilling Facebook update after beginning bloody standoff

+

Garland Tyree

An alleged Bloods gang leader suspected of engaging in a bloody standoff on Friday in New York City appears to have posted an ominous update on his Facebook page as the confrontation began. 

A law enforcement source told Business Insider the New York City Police Department believes this Facebook page belongs to Garland Tyree, who has been identified as the suspect.

According to The New York Times, the standoff began at about 6 a.m. on Friday. At 6:19 a.m., a chilling note was posted on the Facebook page.

"Today I die," the note said.

On Friday afternoon, an NYPD spokesperson told Business Insider the standoff suspect was "dead."

According to the local Staten Island Advance newspaper, sources have described Tyree "as the leader of the Bloods on the East Coast."

Police have said he barricaded himself in his home and set it on fire when marshals attempted to arrest him on a probation violation warrant Friday morning. The Advance also reported Tyree has a lengthy criminal record and allegedly shot a firefighter who responded to the blaze in his home. 

The Facebook page police believe belonged to the suspect is listed as belonging to a man named "Garland Tyree." It features multiple photos of a man in what appears to be a prison uniform. Photos on the page show the man wearing the red colors associated with the Bloods and some feature red bandana imagery that is one of the gang's main symbols.

One of these pictures is a birthday invite for Tyree that describes him as "a real G," which is slang for gang member. Another picture on the page shows piles of money. Other photos posted on the Facebook show news articles about gang crimes on Staten Island and one shows a draft of a novel raging about "a rat."

View some photos from the Facebook page below.

garland tyree facebook

garland tyree facebookGarland Tyree Facebook

 

Join the conversation about this story »

NOW WATCH: This is the 'Fallout 4' video fans have been waiting months to see










+ +
+ Hunter Walker + 2015-08-14T17:08:34.000Z +
+
+ +
+

The White House just released President Obama's vacation playlists on Spotify

+

obama beyonce

On Thursday, the White House announced President Obama's summer reading lists.

On Friday, the White House has followed up by releasing President Obama's two "summer vacation" playlists on Spotify (sorry, Apple Music).

The president's "Day" playlist has 20 high-energy tracks from artists like Coldplay, Brandi Carlisle, and Florence + the Machine.

The more laid-back "Night" playlist includes songs from The Lumineers, Al Green, and Van Morrison.

The playlists, uploaded on the official White House Spotify account, even have their own Twitter hashtag: #POTUSPlaylist.

“President Obama hand-picked his favorite songs for a summer playlist,” according to the White House's Spotify account. 

Obama announced the playlists himself on Twitter:

You can check out both playlists below.

 

 

SEE ALSO: The story of Tidal: How a European startup no one ever heard of got bought by Jay Z and became one of the best-known music companies in the world

Join the conversation about this story »

NOW WATCH: We unearthed Donald Trump's Vine account from 2013 and it's incredible










+ +
+ Maya Kosoff + 2015-08-14T17:03:28.000Z +
+
+ +
+

You can now restore deleted iCloud files, contacts and calendars

+
+ +If you've ever accidently deleted a file in a cloud service (or worse had someone delete a shared file) you know that any restore feature is a god send. Apple recently launched its own file restore feature for iCloud.com users that resurrects files...
+ Roberto Baldwin + 2015-08-14T17:01:00.000Z +
+
+ +
+

Membership-based delivery services are beginning to disrupt the $600 billion-a-year grocery industry

+

bii amazon prime vs costco

The cost and complexity of delivering groceries is what ultimately led to the downfall of Webvan and other startups that have tried to disrupt the $600 billion-a-year grocery industry. 

But a new wave of promising delivery startups are relying on a tried-and-true model to disrupt groceries: membership.

Membership grocery services help secure consumers as repeat customers and allow companies to lower individual shipping fees on every order. Shipping fees are typically a big barrier to grocery delivery because orders must be delivered fast to guarantee freshness.

The grocery delivery model is attractive because it guarantees that customers are getting fresh food straight from their local supermarket, without having to waste time in the store. The typical American family of four visits the grocery store twice a week, according to the USDA.

In a new report from BI Intelligence, we define what an e-commerce membership program is and how retailers are taking the Costco model and updating it for online grocery shopping. We also assess the advantages and disadvantages of e-commerce membership programs for the retailer, as well as what consumers might look for in these programs and what incentives are needed to get people to sign up.

Access the Full Report By Signing Up For A Risk-Free Trial Membership Today >>

Here is a small sample of the e-commerce membership programs that we examine in the report: 

  • Amazon: Amazon charges Prime customers $99 annually ($299 for Amazon Prime Fresh) in exchange for a bevy of benefits ranging from free two-day shipping to access to premium video and music content, as we've said. We estimate that there are approximately 53 million Prime members worldwide — and 25% of those members live outside the US.
  • Instacart: The grocery delivery service partners with Whole Foods, Costco, and Safeway, among others, and offers a membership program called Instacart Express, which costs $99 annually — in exchange, members get free two-hour delivery on all grocery orders. Customers who use Instacart but do not sign up for the membership program must pay $3.99 per delivery.
  • Shipt: This is another service very similar to Instacart, which has its own grocery delivery membership program called MemberShipt. Members pay $49 annually and get free one-hour deliveries on orders over $35. Shipt is the delivery partner for Publix — one of the five largest supermarket chains in the US.
  • Thrive Market: The newly launched organic grocer and wellness retailer asks customers to pay an annual fee of $60 for access to products that are supposedly "always 25 or 50 percent" cheaper compared to competitors. (There is no non-membership version of the service.) Thrive Market has referred to itself as a sort of Costco-like retailer for health-conscious consumers. 

In full, the report:

To access the full report from BI Intelligence, sign up for a 14-day trial here. Members also gain access to new in-depth reports and hundreds of charts on the digital industry.

shipt

Join the conversation about this story »

NOW WATCH: This is what happens to your brain and body when you check your phone before bed










+ +
+ Cooper Smith + 2015-08-14T17:00:00.000Z +
+
+ +
+

These are the 19 most game-changing weapons of the 21st century

+

Screen Shot 2015 05 07 at 10.36.37 AM

The imperatives of the military have always been one of the main drivers of technological development.

ARPANET, one of the internet's most important precursors, was a Pentagon project while most of the technology in an iPhone originated with the US Department of Defense.

Just as smart gadgets have invaded our homes and revolutionized our lives over the last 15 years, next-level weaponry has transformed the military.

Today, militaries and irregular forces around the world are still pushing technological boundaries. 

Everything from concealed roadside bombs — cheap, primitive, and deadly  — to multibillion-dollar aerial lasers have transformed conventional methods of combat and altered the world's technological and political landscape.

Here are 19 of the most important weapons of the last 15 years.

Massive Ordnance Penetrator bombs

America's largest conventional bomb is precision-guided, weighs 30,000 pounds, and can blast through underground bunkers.

Boeing's Massive Ordnance Penetrator (MOP) bomb is designed to pierce 60 feet of reinforced concrete and then detonate 200 feet underground. 

After the MOP's first successful test in 2007, the US Air Force ordered an arsenal of these mega-bombs, which are now considered a "plan B" for striking at Iran's hardened nuclear facilities should the need ever arise.



The Chinese anti-satellite program

In January of 2007, China initiated a worrying new era in warfare. Using a C-19 ballistic missile, the People's Liberation Army destroyed an out-of-commission weather satellite flying over 500 miles above the surface of Earth.

In a single widely condemned move, China had militarized outer space. The long-term consequences are startling: If satellites are considered legitimate military targets, attacks could create debris fields that would knock out entire orbits or create chain reactions that might destroy vital communications and global-positioning satellites. Similarly, countries could deploy weapons to outer space capable of destroying terrestrial targets once the global taboo against space warfare disappears.

If that alarming worst-case scenario ever comes to pass, future generations could identify the successful 2007 test as the moment that space became a military frontier. The test also displayed China's eagerness to develop weapons that its rivals would probably never use — showing how a state can use asymmetrical means to close the gap with it more powerful opponents.



The X-47B

The Navy's X-47B is a strike-fighter-sized unmanned aircraft with the potential to completely change aerial warfare.

Northrop Grumman's drone is capable of aerial refueling, 360-degree rolls, and offensive weapon deployment. It's carried out the first autonomous aerial refueling in aviation history, and has also taken off and landed from an aircraft carrier.

It cruises at half the speed of sound, and has a wingspan of 62 feet — as well as a range of at least 2,400 miles, which is more than twice that of the Reaper drone.



See the rest of the story at Business Insider








+ +
+ Armin Rosen, Jeremy Bender and Amanda Macias + 2015-08-14T16:45:01.000Z +
+
+ +
+

High performance SHIELD games get SHIELD Android TV compatibility

+
Don’t you just hate it when NVIDIA plainly tells you that your device is not good enough for a specific game? And no, we don’t mean that in a relational/metaphysical … Continue reading
John Hoff - 2015-08-12T01:20:49.000Z + 2015-08-14T16:40:14.000Z
-

Blizzard's 'Compete' trademark hints at an eSports service

-
+

Samsung Galaxy Note 5: what it packs and what it lacks

+
In this post we will focus on the things that make the Samsung Galaxy Note 5 special, as well as the lacking elements that could have made it an outstanding phone.
+ Edgar Cervantes + 2015-08-14T16:33:43.000Z +
+
+ +
+

Comcast is about to launch a major video platform called Watchable to rival Facebook and Google

+

brian roberts

Comcast is preparing to launch a major new video platform with content from big-name partners in the coming weeks, Business Insider has learned.

The platform is currently called "Watchable," but there's a small chance that could change before launch.

The Information's Amir Efrati previously reported that Comcast was thinking of launching a digital video service, but here are more of the details.

Comcast is partnering with major digital publishers like Comcast-backed Vox and Buzzfeed, lifestyle, and comedy sites like AwesomenessTV, Refinery29, and The Onion, news sites like Mic and Vice, as well as legacy brands like NBC Sports to come up with a widespread digital-video platform that will rival YouTube and Facebook's online video efforts.

It will also rival the rumored video platform Verizon is preparing to unveil.

The full list of partnering media companies is still being determined, sources say, but participants are committing to Comcast for up to a few years. As part of the partnership, the publishers have agreed to upload all unlicensed, original video content to Watchable for users to stream on demand. The content from the publishers will be bundled and curated for Comcast's millions of Xfinity X1 box owners, and eventually Watchable will also be available on iOS and Android devices. 

Comcast already has a smart-TV solution called Xfinity. The X1 set-top boxes allow users to stream unlimited amounts of movies and shows on demand from their televisions or mobile devices. 

Over the next few years, sources say, Comcast plans to switch out all of its subscribers' boxes for X1 boxes, which could extend a platform like Watchable from just a few million households today to tens of millions of Comcast subscriber homes by 2017.

Comcast Cable BoxComcast is hoping to establish itself as the digital-video advertising leader, sources familiar with Watchable say.

"Comcast is currently the largest seller of video ads in the United States," one says. "As platforms shift to digital, Comcast doesn't want to lose market share, but they're losing it to YouTube and Facebook."

Publishers get exposure; Comcast saves licensing fees

Publishers seem interested in Comcast's platform for two reasons.

  1. It's a new marketing opportunity, allowing online-only brands to get in front of TV watchers.
  2. It's a potential big new revenue stream.

Watchable could help digital publishers make a critical leap from being online-only brands to household names among traditional television viewers. If digital-media companies can successfully cross that chasm, their brands will become much more valuable, and they'll be able to attract the massive advertising dollars cable networks have long enjoyed. 

"Everybody is looking to see how digital companies are going to be able to produce video content that can move the needle in a meaningful way," one publisher told Business Insider.

If Watchable takes off, it could also become a significantly cheaper content model for Comcast as well. Currently, Comcast has to dole out cash on a per-subscriber basis to networks like ESPN and CNN. But Comcast won't pay any licensing revenue to Watchable partners, only advertising revenue. 

Deals are nonexclusive, so publishers will still be able to post content natively to Facebook.

Comcast Watchable is just the latest solution to emerge in the ongoing video-platform wars. In the end there could be one big winner, or multiple. One source likened the current video environment to driving through a tunnel and being unsure what you're going to find on the other side.

"I think on any of these [Comcast or Facebook] platforms there will be a hybrid of traditional TV content and then the digital players. It will be really interesting to see how things shake out over the next 18 months."

Comcast declined to comment for this story.

SEE ALSO: Snapchat, Twitter, and Facebook are at war over the future of news — and one of them tried to buy a media company

Join the conversation about this story »

NOW WATCH: We Tried The Streaming Service That The Networks Are Trying To Shut Down — It's Amazing










+ +
+ Alyson Shontell + 2015-08-14T16:27:00.000Z +
+
+ +
+

Samsung shows off a 2.5-inch hard drive with 16TB of storage

+
-There's no question that Blizzard is a cornerstone of the eSports world. StarCraft is so big in South Korea that it's virtually an institution, and Heroes of the Storm was the first game to get a live ESPN2 broadcast. It only makes sense that the...
- Jon Fingas - 2015-08-12T01:05:00.000Z +Hard drives are as ubiquitous as the desktops or they're made for. But as technology evolves, manufacturers continue to make these faster and smaller than ever before. Case in point: Samsung, which has developed the world largest hard drive, packin...
+ Edgar Alvarez + 2015-08-14T16:27:00.000Z
-

Noodlecake Trolls Game Pirates By Uploading An Impossible Version Of Shooting Stars To Popular Torrent Sites

-

daft

Hey, game pirates: screw you. Seriously, you're part of the reason it's so hard to find a decent game that isn't packed with $100 in-app purchases. Of course, good old-fashioned greed on the part of game developers is a big part of that, but a demonstrable loss of revenue from relatively easy piracy (a problem on other platforms like Windows) is giving developers little incentive to release conventional premium games for a simple price.

Read More

Noodlecake Trolls Game Pirates By Uploading An Impossible Version Of Shooting Stars To Popular Torrent Sites was written by the awesome team at Android Police.



- -
- Michael Crider - 2015-08-12T01:02:00.000Z +

Sony Updates 'Live On YouTube' Xperia-Exclusive Live Broadcasting App With Pause, Mute, Tags, And More

+

LOYT

Sony's awkwardly named "Live on YouTube" app has one purpose, to let you broadcast your video live to YouTube. The latest update adds a few features that make life easier for users. For starters, you can now pause as you're recording. Alternatively, if you're fine with people seeing what's going on but don't want them to hear everything, you can now mute the stream as well.

LOYT1 LOYT3

Pictures courtesy of XperiaBlog

Version 1.00.54 doesn't just deal with presentation.

Read More

Sony Updates 'Live On YouTube' Xperia-Exclusive Live Broadcasting App With Pause, Mute, Tags, And More was written by the awesome team at Android Police.



+ +
+ Bertel King, Jr. + 2015-08-14T16:12:35.000Z
-

[Update: Nexus 7 2013 Wi-Fi] OTA Updates Incoming For Nexus Devices To Fix Vulnerability In Stagefright

-

nexus logo

Last week, Google released factory images for every actively-supported Nexus except the Nexus 7 2013 LTE and Nexus Player. These images were for a new build, LMY48I, intended to patch the recently outed vulnerability that was found in Stagefright.

Today, it appears the OTAs are beginning to hit the masses, but be warned, all these do is patch Stagefright. They contain no other fixes of any kind, so if there's some problem with your device you're hoping to have solved with this update, it's not going to happen.

Read More

[Update: Nexus 7 2013 Wi-Fi] OTA Updates Incoming For Nexus Devices To Fix Vulnerability In Stagefright was written by the awesome team at Android Police.



- -
- Shawn De Cesari - 2015-08-12T00:47:57.000Z -
-
- -
-

Samsung France, Romanian e-tailer post Galaxy Note, S6 edge+ pre-order page

-
We are literally just a couple of days away from the official unveiling of the new Samsung smartphones/tablets, the Galaxy Note 5 and the Galaxy S6 edge Plus. But apparently, … Continue reading
+

Become a hero and conquer the world in Vikings: War of Clans

+
If you’re familiar with the historical Vikings (or even just watch the TV series on History Channel), then you’d basically know what to expect when a video game is named … Continue reading
Ida Torres - 2015-08-12T00:40:43.000Z + 2015-08-14T16:00:35.000Z
-

Weekly poll: Did you grab a Moto G 2015?

-

+

The Samsung Galaxy Note 5 and Galaxy S6 Edge+ may come in 128GB variant (Update: Nope)

+
According to Samsung's official website, the Galaxy Note 5 and S6 Edge+ are both listed with 128GB variants, even though Samsung only announced the devices would come in 32 and 64GB options.
+ Jimmy Westenberg + 2015-08-14T16:00:06.000Z +
+
+ +
+

The best voice recorder

+
-

Historically, the Moto G has been the best selling Motorola smartphone of all time. It's the greatest. It floats like a butterfly and stings like a bee. Or something like that, at least according to Motorola.

+This post was done in partnership with The Wirecutter, a list of the best technology to buy. Read the full article here. -

In reality, the latest incarnation — the Moto G 2015 — a darn good, cheap Android phone. It's built well, performs well, and this year has a decent camera. There's no wonder the initial run of the 16GB memory model (the one you should probably buy) sold out.

+After 36 hours of research, testing eight different devices in a number of real-world settings and then playing the audio we c...
+ The Wirecutter + 2015-08-14T16:00:00.000Z +
+
+ +
+

DirecTV has been ordered to stop trashing cable TV in its ads — but even the ad regulator admits the Rob Lowe spots 'are very funny' (DTV, CMCSA)

+

The US ad regulator has told digital TV provider DirecTV to stop trashing cable in its ads.

Actor Rob Lowe and a number of his alter-egos have appeared in a series of humorous ads over the past few months, claiming DirecTV is superior to cable in terms of service wait times, signal reliability, picture and sound quality, and that it has better sports programming.

Back in April, Comcast complained about the ads to the National Advertising Division, a regulatory unit that investigates controversial ads. The NAD recommended the spots be discontinued because DirecTV did not submit substantiation for its "superior" claims in the investigation, and that disclosures in the ads themselves about the company's customer-satisfaction ranking, sports-programming charges, and picture quality were "inadequate."

At the time, DirecTV said it was planning to replace the ads anyway with spots showing Sports Illustrated swimsuit edition cover model Hannah Davis and a singing, talking horse.

Nevertheless, a five-member panel of the National Advertising Review Board (NARB) — the appellate unit of the US advertising industry's self-regulatory system — reviewed the NAD's decision. The verdict was published on Friday.

The panel noted that the Rob Lowe commercials "are very funny," but added that "depending on the context, even humorous advertisements can convey messages that require substantiation by the advertiser."

In summary, the NARB decided:

The panel agreed with the NAD that the ad conveyed a message that DirecTV is "superior to cable."

The panel agreed with the NAD that DirecTV's claim about "up to 1080" should be modified to include a disclosure that this is limited only to programming where the resolution is available

The panel did not agree with the NAD's findings that DirecTV's "Scrawny Arms Rob Lowe" commercial reasonably implied all sports programming was available in the service's $19.99/month introductory bundle. The NARB recommended DirecTV make a clearer disclosure.

The panel agreed DirecTV had appropriate substantiation for its "#1 in customer satisfaction over all cable TV providers claim" but recommended it more prominently disclose the source of the information.

DirecTV did not agree with all aspects of the decision, but said in a statement: "DirecTV is a strong believer in the self-regulatory process and will take the NARB’s recommendations into consideration when making these claims in the future."

However, DirecTV added that it "continues to believe that consumers do not perceive comparative superiority claims in the Rob Lowe advertisements. Whether from news accounts or social media, it is clear that consumers appreciate and understand the central role that humor and exaggeration play in the Rob Lowe advertisements."

SEE ALSO: There is a 'disturbing' issue plaguing the advertising industry — yet the major ad agencies deny there's a problem

Join the conversation about this story »

NOW WATCH: How to speak without bias, according to the 'Bias-Free Language Guide'










+ +
+ Lara O'Reilly + 2015-08-14T15:53:28.000Z +
+
+ +
+

New Android M teaser video asks “What’s M gonna be?”

+
What will Android M’s final name be? While we are still at the guessing stage, a new teaser video from Google employees Nat and Lo indicates that we are getting closer to finding out.
+ Andrew Grush + 2015-08-14T15:49:32.000Z +
+
+ +
+

The first things to do when you get your Moto G 2015

+

+ +

The first things to do when you get your Moto G 2015

+ +

For more than a few of us, the Moto G 2015 will be our first Android smartphone. It might even be the first smartphone experience for some of us. That's cool, and welcome to the fold.

+ +

A first experience with an Android phone isn't likely to be confusing, but there are a few tricks to make the initial experience a little smoother.

+ +

If you're an old pro, you still might know someone who could use a few tips. Treat them right, and tell them to come visit us!

Jerry Hildenbrand - 2015-08-12T00:36:35.000Z + 2015-08-14T15:48:19.000Z
-

Microsoft OneNote introduces Floatie feature – like chat heads for notes

-
OneNote's new feature is called Floatie, and despite its cute name it will likely be among the most powerful attributes the note-taking app has.
- Edgar Cervantes - 2015-08-12T00:35:53.000Z +

Hillary Clinton and Donald Trump have already become instant Vine celebrities on the campaign trail

+

This election season looks like it may bring the American people what they're clamoring for most — a new Vine star.

So far both Hillary Clinton and Donald Trump have made their way to the 6-second video platform after some internet-savvy folks created entertaining clips out of footage from Snapchat videos and public appearances.

This Vine of Trump (uploaded by CNN!) is seeing a ton of traction this week with over 2 million loops. 

Gawker reports on the context: “Jeb Bush or Hillary, or one of these politicians, all controlled by lobbyists and special interests — and donors, people like me from previous months — total control. Bing bing, bong bong bong, bing bing. You know what that is, right?”

Meanwhile, Hillary Clinton has become her own meme.

From Motherboard: 

In one of the many half-hearted political attempts to engage with ~millennials~,Hillary Clinton shared a Snapchat back in July where she held the phone way too close to her face to let her audience know she was “just chillin’...in Cedar Rapids.”

Someone was able to snag that video and upload it to Vine, allowing others the opportunity to use it (or rip its audio) in countless ways.

Uploaded on July 18, the above Vine has over 17 million loops. Now other Vines are popping up everywhere, Motherboard reports, like this one, which mashes Blink182's song, "I Miss You," with the Cedar Rapids Vine. 

"Where are you?" Blink182 sings.

"I'm just chillin, in Cedar Rapids!" Clinton replies.

Then there are these kids, who didn't use any editing effects for their video. They just really like saying "Chillary Clinton."

As it is with the race to the oval office, it is too early to tell which presidential hopeful will end up being the next big Vine celebrity. We'll keep you posted.

Join the conversation about this story »

NOW WATCH: Meet 'The Fat Jewish,' Instagram's cult phenomenon with 5.5 million followers










+ +
+ Caroline Moss + 2015-08-14T15:46:00.000Z
-

Rdio Music Adds 500 Local Terrestrial Radio Streams From Partner Cumulus Media

-

imageOnline streaming music is all well and good, but if you're hankering for the good old days of sliding FM dials, Rdio wants to oblige your craving. The long-standing streaming service is adding a new section to its app called "On the Air on Rdio," which gives users access to digital streams of 500 United States radio stations. The collection of stations covers basically every major market in the county, usually with a mix of top 40, classic rock, country, sports, and news content.

Read More

Rdio Music Adds 500 Local Terrestrial Radio Streams From Partner Cumulus Media was written by the awesome team at Android Police.



- -
+

HP will have the most diverse tech boards in the US, say activists (HP)

+

Meg Whitman

Hewlett-Packard is preparing to diverge into two companies this November, but it can also claim a new achievement for diversity in the national tech workspace.

HP now has the "most diverse" boards in the US, according to the nonprofit Rainbow PUSH.

The HP boards, announced earlier this week, will feature a blend of original members and new hires. Four women and two people of color will be placed on each board, reported Forbes.

Rainbow PUSH is an organization focused on social change and has been urging technology companies across the country to hire underrepresented minorities.

The nonprofit has especially ramped up its efforts in the past year, meeting with tech behemoths across the country, including Apple and Google, to discuss their diversity numbers. A survey conducted by the group last fall found only three blacks and one Hispanic among the 189 board members from 20 technology companies examined.

There were also "153 men and just 36 women. Eleven (over half) have all-white Boards," Reverend Jesse Jackson, who is spearheading Rainbow PUSH, said in a press release. He later added, "Certainly there is a long way to go."

Last March, the nonprofit met with HP at its shareholder meeting to talk about its numbers.

"We challenged them — and the tech industry — to confront the virtual exclusion of women and people of color in the tech industry," Rev. Jackson said. "HP committed to make demonstrable strides in expanding diversity and inclusion."

At HP Enterprise, Leslie A. Brun from Sarr Group, and Pamela Carter, former president Cummins Distribution, are both people of color who will be joining. The board has 13 members in total, according to an HP press release. Heading the team will be Pat Russo, who became a part of the HP board in 2011.

The board at HP Inc. will include Stacy Brown-Philpot, chief operating officer at TaskRabbit, and Stacey Mobley, former senior vice president at DuPont. Twelve people will help oversee HP Inc., which focuses on the printer and PC businesses.

HP CEO Meg Whitman will sit on both boards and serve as chairwoman for HP Inc.

“The post-separation Boards for both Hewlett Packard Enterprise and HP Inc. comprise leaders with some of the most diverse backgrounds and professional experiences I’ve seen in my career,” Whitman said in HP's press release.

Join the conversation about this story »

NOW WATCH: Sony has been working on this PlayStation game for 8 years — and the trailer is absolutely beautiful










+ +
+ Lyanne Alfaro + 2015-08-14T15:45:26.000Z +
+
+ +
+

New in our buyer's guide: the Chromebook Flip and some gaming gear

+
+ +Yes, we know: A bunch of phones just came out. Don't worry, we'll be reviewing those shortly. In the meantime, we have a handful of items we'd like to induct into our buyer's guide. Included among them: not one, but two laptops, including the impre...
+ Dana Wollman + 2015-08-14T15:42:00.000Z +
+
+ +
+

How to customize AutoPlay defaults on Windows 10

+
Modify the default actions when you insert a removable drive or memory card on Windows 10.
+ +

read more

+ + 2015-08-14T15:40:00.000Z +
+
+ +
+

Deal: MiiShower Bluetooth speaker only $24.99!

+
How many Bluetooth speakers can you take into the shower? Yeah... not many. This is why we are so excited about today's AA Deals Store offer on the MiiShower Bluetooth speaker!
+ AA Deals + 2015-08-14T15:38:48.000Z +
+
+ +
+

LG’s new G Pad 2 8.0 has a full-sized USB port in-tow

+
LG's new mid-range offering (currently only available in South Korea) comes with a fascinating port addition, as well as a new stylus and Microsoft Office.
+ Matthew Benson + 2015-08-14T15:36:06.000Z +
+
+ +
+

What happens when a superstar disrupts one of the top 'League of Legends' teams

+

“League of Millions” documents the worldwide cultural phenomenon around the video game "League of Legends." For many weeks we have followed a top pro team, Team Liquid, in their quest for the 2015 Championship.

In Part 1 and Part 2 of the series, we meet the five elite players on Team Liquid. We witness their intense 15-hour days, along with the fans and fame that are part of the pro gamer's life.

In this final installment, we see if Team Liquid can come together and secure their place in the North American finals to be held at Madison Square Garden.

Director and Producer: Sam Rega

Editor: Josh Wolff

Production and Research: David Fang and Lauren Browning

Executive Producer: Diane Galligan

Follow TI: On YouTube

 

Join the conversation about this story »










+ +
+ Sam Rega + 2015-08-14T15:35:00.000Z +
+
+ +
+

LG G Pad II 8.0 Makes Its Debut On Korean Website, Complete With Stylus And Full-Sized USB Port

+

tabletRemember the LG G Pad, the company's return to the tablet market from 2013? It was an impressive effort, a high-end, mid-sized tablet (which eventually got a Google Play Edition brother) that was unfortunately followed up by a collection of low-end G Pads designed to try and take a bit out of Samsung's cheap Galaxy Tab market share. It looks like LG is ready to try again, at least according to this page on the company's Korean website.

Read More

LG G Pad II 8.0 Makes Its Debut On Korean Website, Complete With Stylus And Full-Sized USB Port was written by the awesome team at Android Police.



+ +
Michael Crider - 2015-08-12T00:23:37.000Z + 2015-08-14T15:35:00.000Z
-

An electropop band used fax machines to promote its new album

-
+

Contactless payments now accepted on London's cross-Thames cable car

+
-Always looking for a reason to dust off your office's sad, unused fax machine? Here's one: The band YACHT used faxes to initially distribute its new album's artwork. No, really. It's part of a weird, multimedia promotion that defies all expectation...
- Sean Buckley - 2015-08-12T00:23:00.000Z +Since contactless payments were first accepted on London buses a few years ago, it's become increasingly easy to get around the capital without cash or a loaded Oyster card. Whether you're equipped with a contactless card, Apple Pay or another mobi...
+ Jamie Rigg + 2015-08-14T15:27:00.000Z
-

Help blue creatures get home in Zoombinis, now on Android

-
If you were a 90s kid who loved playing puzzle games, then you probably came across the Logical Journey of the Zoombinis. And now that mobile gaming is one of, … Continue reading
+

Here's why the new 'Star Wars' movie might stink

+

It's been a long time since a movie has generated as much fervent anticipation as "Star Wars: The Force Awakens." Due in theaters this Christmas, the movie is expected by some to gross more than $2 billion at the worldwide box office.

Expectations are incredibly high for the JJ Abrams-directed sci-fi epic, but there's no guarantee that "The Force Awakens" will please everybody. 

Produced by Graham Flanagan. Camera by Corey Protin.

Follow BI Video: On Facebook

Join the conversation about this story »










+ +
+ Graham Flanagan + 2015-08-14T15:26:00.000Z +
+
+ +
+

‘1849: Gold Edition’ brings you to the old California Gold Rush era

+
Ever wondered what really happened during the Gold Rush Era? There are numerous books and materials on the subject but it's really different when you actually get to experience living … Continue reading
+ R Padla + 2015-08-14T15:20:37.000Z +
+
+ +
+

This MIT grad student discovered a way to create sound from soundless video

+

Abe Davis 2

Our recently published list of groundbreaking scientists highlighted the smartest and most innovative modern scientists and researchers in the field.

Among them is Abe Davis, an MIT graduate student who has worked with researchers from MIT, Microsoft, and Adobe to publish their findings on "the visual microphone" – an algorithm that can almost literally create sound from soundless objects.

In a TED talk this spring, Davis broke down the research using videos and graphics to a stunned audience. Here's what he explained:

If we watch video of a wrist with a pulse or a video of a breathing baby, for instance, the naked eye can't easily discern movement. But Davis' team created software that finds this subtle motion in video and amplifies it, making it visible. 

Abe Davis 1

So they went further and asked the question: Could this software be used to recreate sound from motion? If all sound creates vibrations in objects, and they captured those vibrations through video, would they be able to discern original sound?

Abe Davis 2

Davis explains one the the team's first experiments in which they played the tune "Mary Had a Little Lamb" from a speaker placed near a potted plant. The plant's leaves vibrated as seen in a slowed down video of thousands of frames per second. He calls this motion "perceptually invisible" to human beings.

Abe Davis 3

Crazily enough, Davis and his team were able to create an algorithm that recovers the "sound" (aka the vibrations of the leaves) and plays it back. 

Abe Davis 4

Perhaps one of his most practical demonstrations is a silent video of headphones playing music that are resting on a laptop. The sound recovered through the algorithm accurately read and discovered by music-finding app Shazam.

Abe Davis 5

While Davis also presents more examples from varied experiments where they tampered with light, noise volume, and camera quality, the crux of his team's research and findings is this: By using the team's specialized algorithm, we can use cameras of varied quality to recover sounds from soundless video. 

Abe Davis 6

By using video of the vibrations of objects, he's uncovered a new way to interact with still objects. After recording just five seconds of video (with movement due to a person's fist hitting the wood), Davis is able to create a simulation of how the object would respond to new forces by clicking and dragging with his mouse. 

Abe Davis 7

So while the public sees simulation like this often in video games and 3D models, these findings tell us that we can also do this by using simple video techniques to capture real world objects. Davis says these experiments unearth incredible potential for changing the way we see the world.

Davis is also the creator of Caperture for iOS. It allows users to capture, view, and send objects in 3D. 

 

NOW READ: 50 groundbreaking scientists who are changing the way we see the world

Follow us! 7 scientists who are helping us understand how the world works

Join the conversation about this story »

NOW WATCH: What Adderall is actually doing to your body










+ +
+ Tanza Loudenback + 2015-08-14T15:13:00.000Z +
+
+ +
+

Mini review video: our verdict of the Moto G in under a minute

+
+ + + +The Moto G gets a little better every year. Now in its third generation, Motorola's mid-range handset is still our favorite affordable smartphone, with the most recent version notching a score of 87 out of 100 in our review (that's up from 86 las...
+ Dana Wollman + 2015-08-14T15:10:00.000Z +
+
+ +
+

Google ramps up the Android M mystery hype

+
+ + + +

We may soon find out what the M in Android M stands for, as a new video which showcases all of the previous releases, and then teases about the new one has surfaced. Each year, there are tons and tons of guesses about what Google decided to call the upcoming Android release, and this year is no different.

+ Jared DiPane + 2015-08-14T15:09:02.000Z +
+
+ +
+

Motorola Uploads 1st Gen Moto G 3G Android 5.1.1 Open Source Kernel Files

+

MotoG-ThumbThe first Android 5.1-based kernel Motorola released was for the LTE version of the 1st generation Moto G. This week it has released the source files for the less speedy 3G-only model, codenamed Falcon.

Selection_004

Developers, you know what to do. The zip comes in at 132 MB. You can download it from GitHub at the source link below. After that, feel free to make all the recovieres, ROMs, and other things we Android nerds get excited about.

Read More

Motorola Uploads 1st Gen Moto G 3G Android 5.1.1 Open Source Kernel Files was written by the awesome team at Android Police.



+ +
+ Bertel King, Jr. + 2015-08-14T15:03:15.000Z +
+
+ +
+

We’re giving away 50 OnePlus 2 invites

+
Interested in the OnePlus 2 but having trouble getting an invite? AA will be handing out invites to 50 lucky winners who enter this giveaway!
+ Andrew Grush + 2015-08-14T15:01:25.000Z +
+
+ +
+

This app lets you text without Wi-Fi or a data plan anywhere in the world — even on a plane

+

FireChat App ScreenshotForget exorbitant roaming charges, overpriced international data packages, or spotty internet coverage.

FireChat is the perfect travel app, allowing users to send and receive text messages entirely without data or internet thanks to something called mesh networking.

Basically, mesh networking allows you to communicate wirelessly by bouncing your message from one phone equipped with FireChat (within 210 feet of you) to another via Wi-Fi or Bluetooth antennas.

If there aren't any connections nearby, messages are stored until they can be sent. And don't worry: Messages will be encrypted, so only the intended recipient will be able to read them. The message then keeps bouncing from phone to phone until it reaches said recipient — and to cross oceans, for example, it'll hop from phone to phone until it reaches one with internet, then making its way to its final destination like any other message.

Sure, this can take a few minutes — 10 to 20 across a dense metro area, according to Skift — but you'll be able to send texts from abroad without incurring roaming charges or even from remote or blackout areas that have little to no coverage, including planes and subways.

Of course, this means that the more people download the app the better: According to Skift, only about 5 million mobile users worldwide have downloaded the app, but the app's creators estimate that as long as 5% of a city's population has it, messages can be delivered in around 10 minutes.

FireChat app screenshot

Originally designed for people to get in touch with each other at crowded events, FireChat became hugely popular in Iraq last year after the country faced restrictions on internet use, and it was an integral part of the 2014 Hong Kong protests and 2015 Ecuadorian protests.

While you may continue to use Facebook Messenger or WhatsApp when connected to the internet, what makes FireChat so great is that it doesn't rely on any carrier and will work anywhere.

Available on: Android and iOS.
Cost: Free

SEE ALSO: This is the one app you should use to make phone calls when you're traveling abroad

FOLLOW US: BI Travel is on Twitter!

Join the conversation about this story »

NOW WATCH: The 10 best cities in the world, according to travelers










+ +
+ Sophie-Claire Hoeller + 2015-08-14T14:52:00.000Z +
+
+ +
+

US court rejects Samsung's appeal against Apple over patent fight

+
+ +Samsung's latest attempt to appeal Apple's 2012 patent infringement victory has fallen flat. A U.S Federal Court of Appeals rejected the Korean electronics giant's bid for reconsideration yesterday, reports the San Jose Mercury News. The original 2...
+ Devindra Hardawar + 2015-08-14T14:50:00.000Z +
+
+ +
+

Samsung showed off its new smartwatch in a bizarre space-age photoshoot — check out the pictures

+

samsung gear 2 no text

Samsung is officially launching its new smartwatch, the Galaxy Gear S2, in September. But this hasn't stopped it taking the chance to show it off early. 

The South Korean electronics manufacturer teased the new device at its Galaxy Note 5 launch event on Thursday, and followed it up with a space-age photoshoot showing off the unreleased smartwatch alongside its other gadgets.

We first saw the photos over on the Verge.

Here's the Gear S2, alongside one of Samsung's new smartphones.



Samsung launched two new smartphones at the event on Thursday — the Galaxy Note 5, a phablet device, and the Galaxy S6 Edge+, a larger version of its Samsung Galaxy S6.



The new S6 Edge+ has a 5.7-inch screen, and is a millimeter thinner than its smaller cousin.



See the rest of the story at Business Insider

NOW WATCH: How to clear out a ton of space on your iPhone superfast










+ +
+ Rob Price + 2015-08-14T14:41:29.000Z +
+
+ +
+

NASA asking people to design smartwatch app for astronauts

+
With renewed interest in space activities due to the drive-by near Pluto and all sorts of meteor showers, moon-related activities, and all, NASA is looking once again to involve the … Continue reading
Ida Torres - 2015-08-12T00:00:51.000Z + 2015-08-14T14:40:19.000Z
-

Facebook is reportedly building a breaking news notification app

-
- -Right now, the easiest way to read breaking news on your smartphone is to download a dedicated news reader app, something like Paper or Flipboard -- but rumor has it that Facebook is working on something different. According to Business Insider, Fa...
- Sean Buckley - 2015-08-11T23:57:00.000Z +

AT&T Restructures Data Plans To Squeeze A Little More Money Out Of Some Subscribers, Lowers Pricing For Large Data Buckets

+

nexusae0_Death-star-att

AT&T, a company with a reputation for evil such that placing their logo inside a Death Star has always seemed genuinely appropriate, has announced some changes to pricing on their mobile data plans today. While some of those changes are genuinely good if you're a subscriber with a large data bucket or have some pretty particular usage habits, many new customers can expect to pay $5-10 more a month under the new structure, which AT&T of course claims is a totally innocuous attempt to "simplify" things for customers.

Read More

AT&T Restructures Data Plans To Squeeze A Little More Money Out Of Some Subscribers, Lowers Pricing For Large Data Buckets was written by the awesome team at Android Police.



+ +
+ David Ruddock + 2015-08-14T14:33:06.000Z
-

Weather Time for Wear gives you the weather and all the options you might need

-

+

The realities of a $50 smartphone

+
-

Out of all the watch faces that you can currently find in the Google Play Store for your Android Wear device, weather apps are some of the most helpful at a glance. There are plenty of them out there right now, and one to take a look at is Weather Time for Wear.

- -

It's free with in-app purchase options that unlock the good stuff, but mostly gets the job done well. Lets take a look.

- -

- -

Weather Time for Android Wear definitely has the design aspect of things down. The default screen is a blue sky with fluffy white clouds — even when that is not at all what it looks like outside — and all your information overlaid onto it. At the top of the screen you'll see the time, underneath that there is the date, and at the bottom of the screen you'll see the temperature along with an icon for weather conditions.

- -

The free version of Weather Time for Wear gives you access to some options, but to get the full experience you'll need to drop $2.00. All of your options are available on your phone and they are all divided up into one of several categories; Weather Settings, Look and Feel, Notification Settings, Touch Event Settings, and General Settings.

- -

- Jen Karner - 2015-08-11T23:45:14.000Z +As mobile networks kill off phone subsidies, users might now begin to appreciate just how much their new smartphone really costs. It's an even bigger problem in the developing world, where relatively few have the cash to buy even a mid-range phone...
+ Daniel Cooper + 2015-08-14T14:30:00.000Z
-

Expansys USA discounts 16GB WiFi Nexus 9 to $290

-

+

HTC One M8 receives Stagefright patch from Sprint

+

-

Expansys is currently offering a pretty good deal on the 16GB WiFi variant of the Nexus 9, discounting it to $290.

- Dan Thorp-Lancaster - 2015-08-11T23:27:30.000Z +

Sprint is now pushing out an update for the HTC One M8, which contains a patch for the Stagefright exploit. Several Samsung phones on Sprint have already received the update, and it is great to see updates being pushed from other manufacturers as well. The update bumps the phone up to software version 4.25.651.18.

+ +

If you have not already received the update notification, you can manually check for the update by heading into your phones Settings then checking for the update. Receiving the update on another device? Be sure to let us know in the comments below!

+ +

Source: Sprint

+
+ Jared DiPane + 2015-08-14T14:19:53.000Z
-

Makerbase knows who built your favorite website

-
- -Makerbase, a new site from Lifehacker founder Gina Trapani and former blogger Anil Dash that's being billed as the IMDb of web design, has just launched. Just as IMDb maintains archives of the people that help produce television shows and movies, M...
- Andrew Tarantola - 2015-08-11T23:24:00.000Z +

News Corp CEO just slammed Google for greed, censorship, corruption, and piracy (GOOG, GOOGL)

+

Robert ThomsonIn a speech at the Lowy Institute Media awards in Sydney, News Corp CEO Robert Thomson blasted Google for greed, censorship, corruption, and piracy, mUmBRELLA reports.

Thomson accused “distributionists” like Google and Facebook of setting up a broken system.

“None of them actually create content, and they certainly have little intention of paying for it,” he said. “But they do redistribute the content created by others – they would argue that such redistribution is a natural extension of their role as social networks. I would argue that much of the redistribution is an unnatural act.”

Thomson believes these companies are helping themselves to the content that others create, “co-opting and corralling audiences and consciously devaluing brands.” He contended that the words “Intellectual Property” don’t appear in Google’s alphabet, a reference to Google’s new operating structure of the same name.

He went on to riff more on Alphabet: “A is for Avarice, B is for Bowdlerize, through to K for Kleptocracy, P for Piracy and Z for Zealotry.”

Thomson cautioned that without a fair payment model in place, “well-resourced reporting will be ever more challenged.”

He also threw a barb at LinkedIn, calling it a “pretender” that is chock full of spam.

Business Insider has reached out to Google for comment and will update this post when we hear back.

You can read Thomson's full speech here.

SEE ALSO: Waze cofounder tells us how his company's $1 billion sale to Google really went down

Join the conversation about this story »

NOW WATCH: Here are all of Google's awesome science projects — that we know about










+ +
+ Nathan McAlone + 2015-08-14T14:13:08.000Z
-

The Sequence is a unique, complicated puzzle game that will make you go crazy

-
Initially judging on the preview images, we can say 'The Sequence' is no ordinary puzzle. It's one unique challenge that will require you to find solutions using different modules. All … Continue reading
+

Here's your first look at the sequel to the hottest Android phone

+

The OnePlus One was one of the most talked about smartphones of 2014 and the small Chinese company is back in 2015 with their newly released OnePlus 2. The smartphone is only available to order by invite only, but we have a first look at the new Android device.

Produced by Darren Weaver

Follow TI Video: On Facebook

 

Join the conversation about this story »










+ +
+ Darren Weaver + 2015-08-14T14:11:36.000Z +
+
+ +
+

Younger version of Jupiter provides clues to planet formation

+
+ +It's likely not the first time you'll hear scientists compare an exoplanet to Jupiter. According to a team of astronomers, though, this one called the 51 Eridani b isn't only similar in size -- it's "very much what models suggest Jupiter was like i...
+ Mariella Moon + 2015-08-14T14:10:00.000Z +
+
+ +
+

Google is reportedly making a new version of its best Android phone — here's what it looks like (GOOG, GOOGL)

+

Google is said to be working on two new smartphones to be released this year — a giant phone that's essentially going to be a new version of the Nexus 6, and a smaller flagship that will likely be an updated Nexus 5. Now, a new leak has given us a clear look at what that updated Nexus 5 might look like.

Steve Hemmerstoffer, who runs the Twitter account OnLeaks and the tech news blog Nowhereelse.fr, has shared a set of renderings that reportedly show the new Nexus 5 with tech site uSwitch. The renderings are said to be based on schematics that have been sent to accessory makers to ensure that their cases fit the phone when it launches. 

Here's a look at the back of the phone. The circle underneath the camera is said to be the fingerprint sensor. 

Nexus5LeakBack

It looks like the camera slightly protrudes out from the back of the phone too.

Nexus5Leak2

Here's the front of the phone. It seems as if the new Nexus 5 will have a design that's similar to that of the Nexus 5 that launched in 2013. 

Nexus5LeakFront

While the images aren't an definitive look at Google's new Nexus phone, it at least gives us an idea of what we might be able to expect. The new phone is said to be produced by LG, lining up with rumors we've heard in the past, and it'll reportedly have a 5.2-inch screen. 

Although Hemmerstoffer has a pretty solid track record when it comes to leaking unreleased products, it's important to keep in mind that these images haven't been confirmed by LG or Google. Even if they are legitimate, there's a chance things could change by the time Google actually announces its new phone.

The Nexus 5 was regarded as being Google's best Nexus phone yet when it launched two years ago. It was a big step up from the popular Nexus 4 — it had a slimmer design, a larger screen that was sharper than that of the Nexus 4, and it supported LTE. Now it sounds like Google is working on an updated version of that to appeal to those who may find the Nexus 6 too big. 

The company usually releases its new version of Android and new Nexus devices in October, so there's a chance we'll hear about it then. 

Google denied to comment on the leak. 

SEE ALSO: How Samsung's new Galaxy phones compare to the iPhone and their biggest Android rivals

Join the conversation about this story »

NOW WATCH: 2 texting tricks you didn't know you could do on your iPhone










+ +
+ Lisa Eadicicco + 2015-08-14T14:07:38.000Z +
+
+ +
+

Enter to win the Double Nexus Giveaway II [DEALS]

+
You could win an Android device prize package valued at $978 when you enter The Double Nexus Giveaway II, presented by Android Community Deals. If you missed out on our … Continue reading
+ Juan Carlos Torres + 2015-08-14T14:00:57.000Z +
+
+ +
+

Oco security camera review

+
As I’m sure I’ve stated before, I’m a pretty huge fan of the Internet of Things and smart home technology; however, my number one priority in life is keeping my family safe. Fortunately for me, I get to combine these two things by using home security cameras. I currently own two Foscam’s, but they aren’t […]
+ Dennis Moore + 2015-08-14T14:00:22.000Z +
+
+ +
+

Project Ara's Puerto Rico pilot market launch has been scrapped [Update]

+

+ +

Update: PCWorld reports that, according to a Google spokesperson, the Project Ara sales pilot project for Puerto Rico is no longer going to happen. The spokesperson offered no other details.

+ +

Original story: Project Ara, which is Google's effort to create a smartphone using quickly changed modular parts, is looking like it has hit a snag. The project's official Twitter feed has posted a series of messages indicating a delay in the launch of its sales pilot project in Puerto Rico, which was supposed to happen by the end of 2015.

+ +
+ John Callaham + 2015-08-14T13:55:34.000Z +
+
+ +
+

Fitbit adds Cortana support, Xbox One app coming this year

+
+ +Fitbit's updated its Windows app for Windows 10. The app features all-new Live Tiles, pushes notifications to the Action Center, and supports Cortana voice commands. Saying things like "Fitbit, I ate chicken for dinner" or "Fitbit, I went for a thr...
+ Aaron Souppouris + 2015-08-14T13:50:00.000Z +
+
+ +
+

13 top executives who make a $1 salary or less

+

Larry PageWhile many executives are criticized for their excessive pay, some CEOs have been able to skirt around the issue by choosing to forgo a lofty salary and opting instead for a paycheck of $1 a year, or less.

Of course, this isn't to say these executives are living off the dollar menu.

The CEOs on this list are still worth millions, if not billions, but while some merely pay lip service to the $1 salary club by taking home hefty compensation in the form of company stock awards and bonuses, others forgo adding to their wealth in this way entirely.

"I've made enough money," said Mark Zuckerberg during a Q&A on Facebook in June. "At this point, I'm just focused on making sure I do the most possible good with what I have." Zuckerberg chooses to take home a $1 salary and declines stock awards and bonuses.

Here are some CEOs and other executives that belong to the $1 (or less) salary club:

SEE ALSO: 17 billionaires who were once dirt poor

Larry Page and Sergey Brin

According to Google's annual filing with the Securities and Exchange Commission (SEC), Brin and Page, the company's cofounders asked that their base salaries each be reduced to $1 per year in 2004.

Since then, Google's compensation committee has offered them market-competitive salaries annually, which they continue to decline.

While they also forgo cash bonuses based on their individual and company performance and do not hold any stock options, Google stock units, or other contingent stock rights, Page is currently worth an estimated $34.9 billion and Brin is worth an estimated $34.3 billion.



Jack Dorsey

In a filing with the SEC in June, it was revealed that Twitter's interim CEO receives no compensation for his role. This is of little financial consequence to Dorsey, whose current estimated net worth comes in around $2.3 billion.

"At your request, you have agreed to forego any compensation for your role as Interim Chief Executive Officer until the Compensation Committee agree upon a compensation package for you at the same time that it conducts its annual assessment and setting of executive compensation later in the year. Until a compensation package is finalized, you will be entitled to no cash or equity compensation for your services as Interim Chief Executive Officer," the document reads.



Larry Ellison

As in previous years, Oracle reported to the SEC that Ellison, now executive chairman and CTO, took home a salary of $1 in 2014.

Meanwhile, new co-CEOs Safra Catz and Mark Hurd, who took over in September, 2014, each took home a $950,000 salary last year in addition to other compensation.

So how does Ellison continue to add to his estimated $49.2 billion net worth? Compensation Ellison received last year included $65 million in stock option awards, $740,000 in non-equity compensation, and $1.5 million for other compensation, most of which went towards security-related costs for Ellison's home.

 



See the rest of the story at Business Insider

NOW WATCH: This drummer created a whole song using only the sound of coins










+ +
+ Rachel Gillett + 2015-08-14T13:48:18.000Z +
+
+ +
+

Plus Codes Are An Easier And More Accurate Way Of Locating People And Businesses In Places With No Specific Street Address

+

plus-code-location

Growing up in Lebanon, I got used to giving and receiving directions to my home as, "take the second right turn after the chicken restaurant, continue straight past the two gas stations, it's the first building on the left after the falafel stand, with a flower shop below it and facing a pharmacy." I even remember how long I had to stay on hold on the phone with some government dude just to get the ZIP code for my area.

Read More

Plus Codes Are An Easier And More Accurate Way Of Locating People And Businesses In Places With No Specific Street Address was written by the awesome team at Android Police.



+ +
+ Rita El Khoury + 2015-08-14T13:45:36.000Z +
+
+ +
+

Cybersecurity expert: Here's how the GOP could 'have a field day' with Hillary Clinton's email scandal

+

Hillary Clinton

The FBI is now in possession of the private email server Hillary Clinton used for work-related correspondences while she served as secretary of state during the first term of the Obama administration.

And what they find could give Clinton's political rivals the ammunition they need to forcefully attack her presidential campaign.

"If investigators find that her server was ever compromised, the GOP is going to have a field day," cybersecurity expert Alex McGeorge, a senior security researcher at Immunity Inc., told Business Insider.

Though Clinton's use of a private email address was not illegal and was permitted by State Department rules, the federal government has standards for how servers are built, how they are secured, and how their data is stored.

If Clinton failed to take one or all of the required steps to secure her private server — and if it is confirmed that classified information made its way into an insecure inbox — proving that this sensitive intelligence might be in the hands of foreign adversaries would be the GOP's "fastest path to victory" in the 2016 presidential election, McGeorge said.

Furthermore, demonstrating that the "clintonemail.com" server was hackable would be relatively easy, he said.

"Subpoena the exact configuration of the Clinton email server, and create a duplicate system as best as you are able," McGeorge said. "Put a legitimate bug bounty on it for real money (over $100k), to the first person who's able to get emails off of it. This gives the GOP proof that the system was hackable as configured."

'Top Secret/Sensitive Compartmented Information'

Clinton, the Democratic presidential front-runner in the 2016 election, has repeatedly said as recently as late July that she was "confident" she did not send or receive classified information by email.

But Charles McCullough, the inspector general for the US intelligence community, recently said the server potentially included hundreds of classified emails, some of which include information derived from US intelligence agencies.

And this week, McCullough told Congress that he discovered two emails that were classified as "Top Secret/Sensitive Compartmented Information," which is one of the government's highest levels of classification. Those two emails were drawn out of a batch of 40 emails randomly selected from about 30,000 "work-related" emails Clinton turned over to the State Department.

The Associated Press reports that the two emails "include a discussion of a news article detailing a US drone operation and a separate conversation that could point back to highly classified material in an improper manner or merely reflect information collected independently."

What's still unclear is how much classified information was consciously shared in the tens of thousands of emails — or what particular safeguards were taken to protect it.

"If Clinton knowingly used her private server to handle classified information, she could have a problem," Time senior correspondent Massimo Calabresi said recently. "But if she didn’t know the material was classified when she sent or received it, she's safe."

hillary clinton

'Hillary Clinton's big problem now is legal'

"Hillary Clinton's big problem now is legal," Charles Lipson, a professor of international politics at the University of Chicago, argued in RealClearPolitics. "And it could well be insurmountable politically."

Lipson, the director of the Program on International Politics, Economics and Security at the University of Chicago, then listed several "legal questions with huge political ramifications."

"Did the Clinton server meet the federal government's standards for how servers are built, how they are secured, and how data is retained? Was all sensitive material encrypted or did it circulate without those protections?" he wrote.

"Did anybody hack into the server? Did Secretary Clinton, who says she erased all 'personal' emails from the server, actually erase some government documents? If so, was that inadvertent or a possible cover-up? Who handled IT security for this server? Could he read the materials if he wished?"

Clinton's unusual email system was originally set up by a staffer during Clinton's 2008 presidential campaign, replacing a server used by her husband, former President Bill Clinton.

The new server was run by Bryan Pagliano, who had worked as the IT director on Hillary Clinton's campaign before joining the State Department in May 2009. In 2013 — the same year she left the State Department — Clinton hired the Denver-based company Platte River to oversee the system.

It's possible that Clinton's private server was more secure than the private email accounts of the nation's other top officials, "purely because it's a smaller target," cybersecurity expert Joe Loomis, the founder and CEO of CyberSponse, told Business Insider.

"Only she and a few other people are using it," he said.

hillary clinton

'A serious management mistake'

"Even if Secretary Clinton or her aides didn't run afoul of any criminal provisions, the fact that classified information was identified within the emails is exactly why use of private emails ... is not supposed to be allowed," Bradley Moss, a Washington attorney who specializes in national-security matters, told McClatchy recently.

"Both she and her team made a serious management mistake that no one should ever repeat."

And Clinton's choice to eschew the State Department's email system looks particularly egregious, given her standing within the department.

If she felt the State Department's server wasn't secure enough, she "would have been in a good position to demand change," said McGeorge, the senior security researcher at Immunity Inc. "But if it was a problem, and you decided to use your own server, then what did you do for your department?"

Former U.S. Secretary of State Hillary Clinton (2nd R) and current U.S. Secretary of State John Kerry (R) talk during a ceremony before breaking ground for the U.S. Diplomacy Center at the State Department in Washington September 3, 2014.

And then there are the deleted emails.

Last October, the House of Representatives committee dedicated to investigating the 2012 terrorist attack on the US diplomatic compound in Benghazi, Libya, asked Clinton for any emails she had relating to the attack.

Clinton obliged a separate request from the State Department, handing over roughly 55,000 pages of emails — about 60,000 emails in total. She deleted about 30,000 others that were "personal" in nature.

The fact that the State Department has no record of Clinton's email exchanges now that she has wiped her server clean also means Clinton may have skirted the rules governing federal-records management, which require that anything relating to agency activity be captured on the department's server.

Interestingly, McGeorge said, "the FBI can now only investigate anything Clinton didn't take the time to erase" because she used the "clintonemail.com" address.

SEE ALSO: We know what those 2 top-secret Clinton emails were about

Join the conversation about this story »

NOW WATCH: More trouble for Subway's Jared Fogle...










+ +
+ Natasha Bertrand and Michael B Kelley + 2015-08-14T13:44:13.000Z +
+
+ +
+

The Galaxy Note 5 in Europe, and why we can't have nice things

+

Samsung's decision to deny European buyers its best smartphone is weird and unnecessary.

+ +

As tick follows tock, each year Samsung has followed up its Galaxy S handset with a new Galaxy Note. It was one of the more reliable, almost inevitable events of the tech calendar. Every 12 months the Note family has introduced a new member at the IFA trade show in Berlin, Germany. And each time it's been the gold standard for what's possible in a big-screened, high-end Android handset.

+ +

Note owners are fiercely loyal. It's been said among fans of the series that the only thing that can replace a Note is another Note.

+ +

Except not anymore. This year, Europe isn't getting a new Galaxy Note — at least not anytime soon. Americans can buy it, as can Asian consumers. But live in Europe? For the moment, you're SOL. There'll be no Galaxy Note 5 for European buyers in 2015 — instead we'll get the Galaxy S6 edge+.

+ +
+ Alex Dobie + 2015-08-14T13:41:48.000Z +
+
+ +
+

OnePlus rolls out OxygenOS 1.0.2 update to address 'Stagefright' vulnerability

+

+ +

OxygenOS version 1.0.2 has just been released to the public. OnePlus has provided the means to flash the update, which is set to address the "Stagefright" vulnerability that could lead to your phone becoming compromised.

+ +
+ Rich Edmonds + 2015-08-14T13:35:03.000Z +
+
+ +
+

How an accidental Siri butt dial saved the life of an 18 year old

+

iPhone 4s SiriSiri may have some issues when it comes to understanding what you’re saying, but when your life is on the line, it turns out she can be pretty handy. At least that seems to be the takeaway from a recent heroic effort by Siri that probably saved the life of a 18-year-old man in Mufreesboro, Tennessee, WZTV Fox 17 reports.

The man was working under his truck when it fell on him, trapping him underneath.

He called for help, but was alone, and no one could hear him. That’s when Siri helped out.

The man heard Siri talking in his pocket and was able to “push up on his hip” and call 911. Vanderbilt University Medical Center's trauma team and paramedics did take over after that, but we know who the real hero is here: Siri. Perhaps we should add “life-saving” to our list of cool things you didn’t know Siri could do.

Of course, it's worth pointing out that maybe Siri just likes calling 911. If you tell Siri to "charge my phone 100%," it automatically dials emergency services

SEE ALSO: If you ask Siri to charge your phone, she’ll call the police

Join the conversation about this story »

NOW WATCH: 11 things you can ask Siri to get the most bizarre and hilarious answers










+ +
+ Nathan McAlone + 2015-08-14T13:32:18.000Z +
+
+ +
+

Google can spot friends nearby and tell if you're glad to see them

+
+ +Are you happy that Google's new Play Services software for Android developers is out? If not, one of the new features may tell you to turn that frown upside down. Google's latest APIs for Android apps include "Mobile Vision" face detection and "Nea...
+ Steve Dent + 2015-08-14T13:28:00.000Z +
+
+ +
+

SoundCloud now supports casting

+
The SoundCloud Android app has been updated with new support for Google's wireless casting technology.
+ Rob Triggs + 2015-08-14T13:21:48.000Z +
+
+ +
+

Sony Xperia Z5 Plus rendered image sighted

+
Taking a break from the Samsung hype today, here are some information about the upcoming Sony Xperia Z5+. As you all know, the Japanese company is expected to reveal the … Continue reading
R Padla - 2015-08-11T23:20:14.000Z + 2015-08-14T13:20:14.000Z
-

BDUK reaches three million homes and businesses

-
The BDUK superfast broadband roll-out has hit three million premises around the UK
+

Google Play Services v7.8 Completes Rollout, Adds New Mobile Vision API With Face Detection And Barcode Reader, Improves Cloud Messaging With Priority And Localization

+

image01

It has been almost a month since Google Play services 7.8 began rolling out to users, and as of yesterday, it is in wide release to everybody. A previous blog post by Google discussed the big new feature for developers would be the Nearby Messages API, but it turns out there are a couple of other additions worth checking out. In a new post on the Android Developers blog, Google announced a new Mobile Vision API with the ability to detect the presence, orientation, and some details of faces when they are in frame on an active camera.

Read More

Google Play Services v7.8 Completes Rollout, Adds New Mobile Vision API With Face Detection And Barcode Reader, Improves Cloud Messaging With Priority And Localization was written by the awesome team at Android Police.



+ +
+ Cody Toombs + 2015-08-14T13:15:00.000Z +
+
+ +
+

Windows 10 PSA: You have 30 Days to Roll Back

+
"Good day, Windows customer. Your mission, should you decide to accept it is to test Windows 10. As always, should you or any of your shadow users be caught or killed, Microsoft will disavow any knowledge of your actions. Your previous OS will self-destruct in 30 days. Good luck."
+ +

read more

+ + 2015-08-14T13:12:00.000Z +
+
+ +
+

The Windows Supersite Stardock Start10 Giveaway

+
We have five free registration codes for Stardock's Start10 a Start Menu replacement for Windows 10. Want a chance to win one of them?
+ +

read more

+ + 2015-08-14T13:10:00.000Z +
+
+ +
+

Over-the-air charging of devices is the wave of the future

+
Wireless charging is a popular feature on many of the mobile devices available today, but the future may be over-the-air charging. Companies like Energous are working on such technology now. They have developed a product called the WattUp wire-free charging system which involves using a transmitter and receiver. A WattUp transmitter, or Power Router, sends […]
+ Kathleen Chapman + 2015-08-14T13:00:08.000Z +
+
+ +
+

ICYMI: Far away haptic hello, birthing robot mom and more

+
+ +Today on In Case You Missed It: The Haptoclone allows users to touch and interact with distant objects, in a way you have to see to understand. But basically, long-distance makeouts over Skype are coming. Cambridge University researchers designed a...
+ Kerry Davis + 2015-08-14T13:00:00.000Z +
+
+ +
+

AT&T revamps Mobile Share Value plans, offering more data for your buck

+

+ +

AT&T has announced a number of changes to the US carrier's Mobile Share Value plans. The aim is to simplify available tiers, offering more data for your buck. As usual with the majority of said offerings, the more you pay up each month, the greater the benefit is with AT&T's revamped bundles.

+ +
+ Rich Edmonds + 2015-08-14T12:55:36.000Z +
+
+ +
+

Android Studio v1.4 Preview 1 Enters Canary Channel With Brand New Theme Editor, Vector Asset Wizard, Performance Monitors, And More

+

android-studio

With the official stable release of Android Studio v1.3 a couple of weeks ago, it's time to begin testing the next string of new features. The first preview release of version 1.4 is now in the Canary channel, and it's sporting some big new features. The Android Tools team has been working on the new theme editor first demonstrated in the I/O session titled What's New in Android Development Tools.

Read More

Android Studio v1.4 Preview 1 Enters Canary Channel With Brand New Theme Editor, Vector Asset Wizard, Performance Monitors, And More was written by the awesome team at Android Police.



+ +
+ Cody Toombs + 2015-08-14T12:45:00.000Z +
+
+ +
+

OnePlus 2 bares its guts in iFixit teardown

+
If you haven’t seen the new OnePlus 2 for all it really is – meaning, seeing everything, including the internals – then you shouldn’t miss out on iFixit’s teardown of … Continue reading
+ John Hoff + 2015-08-14T12:40:27.000Z +
+
+ +
+

Apple hired more women, but still has a huge gender gap

+
+ +Apple's largely white guy workforce isn't going to change overnight, but the company made strides this year, according to its latest diversity report. After promising changes in June, Tim Cook said "we're working hard to expand our recruiting effor...
+ Steve Dent + 2015-08-14T12:30:00.000Z +
+
+ +
+

The LG Nexus will probably look something like this

+
A render of the upcoming LG Nexus smartphone gives us our first glimpse at what the handset should look like.
+ Rob Triggs + 2015-08-14T12:04:48.000Z +
+
+ +
+

Julie’s gadget diary – Should Apple be worried that Samsung Pay will win the mobile payment wars?

+
Yesterday’s Samsung Unpacked event left me feeling disappointed about their new hardware announcements. However, their Samsung Pay announcement caught my attention. If you aren’t familiar with Samsung Pay, it’s Samsung’s mobile payment application. Like Apple Pay, Google Wallet, Android Pay (not available yet) and CurrentC (also not available yet), it’s a way to use your phone to pay […]
+ Julie Strietelmeier + 2015-08-14T12:00:33.000Z +
+
+ +
+

HGST And Mellanox Show Off SAN Fabric Backed By Phase Change Memory

+

It seems that NAND flash memory just isn't fast enough to show off the full performance of the latest datacenter networking equipment from Mellanox. They teamed up with HGST at Flash Memory Summit to demonstrate a Storage Area Network (SAN) setup that used Phase Change Memory to attain speeds that are well out of reach of any flash-based storage system.

+ +

Last year at FMS, HGST showed a PCIe card with 2GB of Micron's Phase Change Memory (PCM). That drive used a custom protocol to achieve lower latency than possible with NVMe: it could complete a 512-byte read in about 1-1.5µs, and delivered about 3M IOPS for queued reads. HGST hasn't said how the PCM device in this year's demo differs, if at all. Instead, they're exploring what kind of performance is possible when accessing the storage remotely. Their demo has latency of less than 2µs for 512-byte reads and throughput of 3.5GB/s using Remote Direct Memory Access (RDMA) over Mellanox InfiniBand equipment. By comparison, NAND flash reads take tens of microseconds without counting any protocol overhead.

+ +

+ +

This presentation from February 2014 provides a great summary of where HGST is going with this work. It's been hard to tell which non-volatile memory technology is going to replace NAND flash. Just a few weeks ago Intel and Micron announced their 3D XPoint memory, immediately taking the place as one of the most viable alternatives to NAND flash without even officially saying what kind of memory cell it uses. Rather than place a bet on which new memory technology would pan out, HGST is trying to ensure that they're ready to exploit the winner's advantages over NAND flash.

+ +

None of the major contenders are suitable for directly replacing DRAM, either due to to limited endurance (even if it is much higher than flash), poor write performance, or vastly insufficient capacity. At the same time, ST-MRAM, CBRAM, PCM, and others are all much faster than NAND flash and none of the current interfaces other than a DRAM interface can keep pace. HGST chose to develop a custom protocol over standard PCIe as more practical than trying to make a PCM SSD that works as a DIMM connected to existing memory controllers.

+ +

Last year's demo showed that they were ready to deliver better-than-flash performance as soon as the new memory technology becomes economical. This year's demo shows that they can retain most of that performance while putting their custom technology behind an industry-standard RDMA interface to create an immediately deployable solution, and in principle it can all work just as well for 3D XPoint memory as for Phase Change Memory.

+

+ Billy Tallis + 2015-08-14T12:00:00.000Z +
+
+ +
+

Google Play Services intros new Face Detection API

+
In line with the new update to Google Play Services coming out, we take a look at a new API that app developers can play around with when planning out … Continue reading
+ John Hoff + 2015-08-14T12:00:00.000Z +
+
+ +
+

AT&T tweaks mobile data plans to match T-Mobile

+
+ +With T-Mobile now behind it as the nation's third largest carrier, AT&T has updated its wireless data plans (below) to give you a bit more data for a bit less money. Unsurprisingly, the benefits get juicier if you spend more -- there's 5GB more...
+ Steve Dent + 2015-08-14T12:00:00.000Z +
+
+ +
+

Want the Galaxy Note 5 in Europe? Sign this petition!

+
Samsung says it won't be offering the Galaxy Note 5 in Europe this year and some people aren't happy. If you want t change their mind, sign this petition!
+ Nirave Gondhia + 2015-08-14T11:48:31.000Z +
+
+ +
+

[Definitely, Maybe] WhatsApp's Google Drive Backup Should Be Back Now And Working For (Almost) Everyone

+

whatsapp-google-drive-final-hero

The saga of WhatsApp's Google Drive backup option is only rivaled by the app's epic voice calls invite feature that we all had to endure for months. It's there, then not there, then it's back, only to disappear again, then wait it's hiding and only shows when it's time for a backup... but Rita, it's not working for me, and now it's gone for everyone, oh-oh look I got it with root and a few commands, and now it's on for everyone finally. We swear.

Read More

[Definitely, Maybe] WhatsApp's Google Drive Backup Should Be Back Now And Working For (Almost) Everyone was written by the awesome team at Android Police.



+ +
+ Rita El Khoury + 2015-08-14T11:39:21.000Z +
+
+ +
+

Skype for Business apps now on preview for Android devices

+
Gone are the days when all the people you need to meet with for work are actually located at your office (unless you work in a very traditional one). More … Continue reading
+ Ida Torres + 2015-08-14T11:30:56.000Z +
+
+ +
+

Where next for UK government as a platform and GDS?

+
Amid all the debate about the direction of digital government, it's important to take a critical look at the GDS plan for government as a platform
ComputerWeekly.com - 2015-08-11T23:01:52.000Z + 2015-08-14T11:22:43.000Z
-

Netflix is making 'Mascots,' a film from Christopher Guest

-
- - -Netflix has acquired yet another movie: Mascots. Behind the full-length project, scheduled to be released in 2016, is Christopher Guest, best known for his acting and directing in comedies like A Mighty Wind, Best In Show and For Your Consideratio...
- Edgar Alvarez - 2015-08-11T22:43:00.000Z +

Is the future of business predictive?

+
Michael Feindt, CERN scientist and founder of a predictive analytics software house, sees a future of more automated business decision-making
+ ComputerWeekly.com + 2015-08-14T11:14:58.000Z
-

Time travel to the Bitstone past in this updated Bitcoin Billionaire game

-
Bitcoin has been controversial the past months but we don't want to be stressed about that. Instead, we just want to continue and have fun with the Bitcoin Billionaire game … Continue reading
+

We Should All Be Thankful for Samsung’s Weirdo Phone

+
We Should All Be Thankful for Samsung’s Weirdo Phone

It's still OK to think different, no matter how much pressure there is to be the same.

+

The post We Should All Be Thankful for Samsung’s Weirdo Phone appeared first on WIRED.

+ Brian Barrett + 2015-08-14T11:00:52.000Z +
+
+ +
+

24 Hours of Le Mans in Two Minutes of Epic Stop-Motion

+
24 Hours of Le Mans in Two Minutes of Epic Stop-Motion

Camden Thrasher took over 1,000 photos for an incredible video of this year's 24 Hours of Le Mans.

+

The post 24 Hours of Le Mans in Two Minutes of Epic Stop-Motion appeared first on WIRED.

+ Taylor Glascock + 2015-08-14T11:00:35.000Z +
+
+ +
+

Audi’s Plan to Make an Electric SUV With a 300-Mile* Range

+
Audi’s Plan to Make an Electric SUV With a 300-Mile* Range

Audi wants to build an all-electric SUV that will go 300 miles on a charge, and it's partnering with Samsung and LG to get it done.

+

The post Audi’s Plan to Make an Electric SUV With a 300-Mile* Range appeared first on WIRED.

+ Alex Davies + 2015-08-14T11:00:30.000Z +
+
+ +
+

Samsung Unpacked event videos made public, ready to tease the Android market

+
Today is a special day, at least, for most of Samsung fans. Actually, it's already the day after D-Day when the new Note 5 and Galaxy S6 edge+ were announced. … Continue reading
R Padla - 2015-08-11T22:40:13.000Z + 2015-08-14T11:00:26.000Z
-

LastPass is now free on mobile, but cross-device syncing costs extra

-
+

EC awards €8m to consortium to develop cloud-enabled 5G network

+
Consortium led by incumbent Greek telco OTE awarded €8m of funding to support RAN virtualisation and mobile edge cloud computing for 5G networks
+ ComputerWeekly.com + 2015-08-14T11:00:09.000Z +
+
+ +
+

Tesla’s Making It Suck Less to Drive an EV in New York

+
Tesla’s Making It Suck Less to Drive an EV in New York

The startup is installing its charging system in two dozen garages in Manhattan.

+

The post Tesla’s Making It Suck Less to Drive an EV in New York appeared first on WIRED.

+ Jordan Golson + 2015-08-14T11:00:09.000Z +
+
+ +
+

Reddit rolls over to please Russia's authorities

+
-If you've been wanting to play around with LastPass on your mobile device without paying the $12 annual fee for premium support, today is your day: the password manager just added mobile to its free tier. What's the catch? You only get it on mobile...
- Sean Buckley - 2015-08-11T22:27:00.000Z +Remember the tale of how Reddit managed to get itself banned in Russia because of a thread that promoted the growing of psychedelic mushrooms? A few days later and the site has returned, mostly because it rolled over and locally blocked the offendi...
+ Daniel Cooper + 2015-08-14T10:52:00.000Z +
+
+ +
+

Samsung brings wireless charging tech to Galaxy S6 edge+, Note 5

+
Much has been said about the new Galaxy Note 5 and Galaxy S6 edge+ and we’re expecting to read a lot of reviews once the pair is released. And as … Continue reading
+ R Padla + 2015-08-14T10:30:44.000Z +
+
+ +
+

Samsung Galaxy Note 4 vs. Galaxy Note 5: Will you upgrade?

+
There’s no escaping Samsung news today as they made the splash and finally released to the public the much-hyped and much-leaked Samsung Galaxy Note 5. The Korean gadget giant is … Continue reading
+ John Hoff + 2015-08-14T10:00:22.000Z +
+
+ +
+

Smart dog collar tracks your pooch's diet and location

+
+ +There are a lot of devices out there that you can use to keep track of your pets, but the Buddy collar is akin to several types rolled into one. The LED collar makes sure Fido's visible in the dark, but it's also a temperature sensor, an activity t...
+ Mariella Moon + 2015-08-14T09:58:00.000Z +
+
+ +
+

Google gets more time to respond to European anti-competitive charges

+
The EC has granted Google a second extension of the deadline to respond to anti-competitive charges
+ ComputerWeekly.com + 2015-08-14T09:45:49.000Z +
+
+ +
+

Home Office puts out feelers for new Emergency Services Network deal

+
Home Office issues a prior information notice that suggests it is planning to bring a revised version of Lot 4 of the Emergency Services Network procurement back to life
+ ComputerWeekly.com + 2015-08-14T09:45:46.000Z +
+
+ +
+

GDS saves the government £1.7bn through digital and technology transformation

+
The government has made £18.6bn year-on-year savings, with £1.7bn coming from GDS-led efficiency and reform
+ ComputerWeekly.com + 2015-08-14T09:40:02.000Z +
+
+ +
+

Samsung unveils a slew of stylish and functional Galaxy Note 5 accessories

+
Always expect Samsung to plan a major event when it's announcing new flagship products. Aside from wowing the mobile crowd with their sleek form and premium specs, Samsung managed to showcase … Continue reading
+ R Padla + 2015-08-14T09:30:49.000Z +
+
+ +
+

8 Apps for Making Legit Music on Your Phone

+
8 Apps for Making Legit Music on Your Phone

Use your phone for more than just listening to tunes. With the right tools, you can be an artist too.

+

The post 8 Apps for Making Legit Music on Your Phone appeared first on WIRED.

+ Michael Calore + 2015-08-14T09:15:14.000Z +
+
+ +
+

Samsung Galaxy Note 5 not coming to Europe, a 128GB variant out

+
Well, we have a little more insight into Samsung’s Galaxy Note 5 launch as more details spill out. The dust hasn’t even begun to settle, but what do have here? … Continue reading
+ John Hoff + 2015-08-14T09:00:43.000Z +
+
+ +
+

'Mommy robot' can build and test its own babies

+
+ +A University of Cambridge team of researchers has created a "mother robot" capable of giving birth to -- or more correctly, building its own -- baby cube-bots. The team conducted five rounds of experiments, wherein it assembled 10 pint-sized machin...
+ Mariella Moon + 2015-08-14T08:31:00.000Z +
+
+ +
+

T-Mobile adds Galaxy Note 5, S6 edge+ to Un-carrier JUMP! On Demand deals

+
The latest pair of premium phablets from Samsung are finally out. Samsung didn't announce the prices during launch but we know they will be available starting August 21. We've got … Continue reading
+ R Padla + 2015-08-14T08:30:17.000Z +
+
+ +
+

OnePlus 2 teardown reveals easy-to-replace modular components

+
+ +We previewed the OnePlus 2 for you in the past, but if you'd rather see some internal component porn, iFixit has got your back. iFixit has taken the device apart like it did the first OnePlus phone (and many, many other gadgets before it) to examin...
+ Mariella Moon + 2015-08-14T07:12:00.000Z +
+
+ +
+

Evernote's cleaner, faster web interface starts rolling out

+
+ +Evernote's been beta testing a redesigned web interface since last October. But, after nearly a year of experimenting with the fresh look, the company is finally ready to make it available to all its users starting this week. The main purpose of th...
+ Edgar Alvarez + 2015-08-14T05:56:00.000Z +
+
+ +
+

Samsung Pay with Magnetic Secure Transmission launches in the US next month

+
Samsung Wallet already ceased operations last June 30 and will soon be replaced by  Samsung Pay this September in the United States. A trial service began in South Korea last … Continue reading
+ R Padla + 2015-08-14T05:00:47.000Z +
+
+ +
+

CW500 Security Club: Ashish Surti, information security director at Clutch Group

+
Mobile threats are the fastest growing form of cyber-attack, but user awareness is still poor
+ ComputerWeekly.com + 2015-08-14T04:00:00.000Z +
+
+ +
+

CW500 Security Club: Sarb Sembhi, Director at STORM Guidance

+
Mobility is the number one priority for IT leaders in the UK this year, but the number of IT chiefs focusing on mobile security is a lot lower
+ ComputerWeekly.com + 2015-08-14T04:00:00.000Z +
+
+ +
+

Fox Sports is streaming a Bundesliga soccer game on YouTube

+
+ +The Bundesliga, Germany's top-tier football league, is coming to YouTube. After recently securing US broadcast rights for this competition, Fox Sports has now announced it will stream a live match via Google's video service on August 14th. As the n...
+ Edgar Alvarez + 2015-08-14T03:56:00.000Z +
+
+ +
+

YouTube Live Broadcast announced, ready to beat Periscope and Meerkat

+
Google has just introduced YouTube Live Broadcast. It's a new special feature on the recently announced Galaxy S6 edge+ and Galaxy Note 5 from Samsung. So it's another live streaming … Continue reading
+ R Padla + 2015-08-14T03:37:30.000Z +
+
+ +
+

Google skirted drone test rules by using a deal with NASA

+
+ +Getting an FAA exemption to operate commercial drones in American airspace is almost more trouble than it's worth, what with the litany of requirements and restrictions. That's why Google, according to a Guardian report, has been sidestepping those...
+ Andrew Tarantola + 2015-08-14T02:56:00.000Z +
+
+ +
+

Motorola Will Take Over Lenovo's Slumping Smartphone Division In Spite Of Motorola's 31% Sales Drop

+

Motorola-a-Lenovo-Company

Nestled in Lenovo's latest earnings report were disappointing figures for both their own brand of smartphones and Motorola, which was acquired late last year. The Chinese company's response is to do some fairly large-scale restructuring, handing over basically all aspects of Lenovo smartphones to Motorola with the possible exception of marketing. Motorola will continue to develop, make, and market their own line that most Westerners are familiar with.

In light of the earnings figures, it might be surprising that Motorola is the part of the larger company that is rewarded with more responsibility.

Read More

Motorola Will Take Over Lenovo's Slumping Smartphone Division In Spite Of Motorola's 31% Sales Drop was written by the awesome team at Android Police.



+ +
+ Jacob Long + 2015-08-14T02:24:50.000Z +
+
+ +
+

NVIDIA Releases 355.60 Drivers; GameWorks VR Now In Beta

+

As the week starts to wind down NVIDIA is back with another driver release, 335.60.

+ +

This latest release is notable for a few different reasons. Officially NVIDIA is releasing this as their preferred Game Ready driver for the Ashes of the Singularity tech demo, which is due later this month. Ashes is a large-scale RTS being developed by Oxide Games and Stardock, the former of which is likely better known for their Star Swarm tech demo. Built on the same Nitrous engine, Ashes will be the first DirectX 12 enabled consumer software to be released, though in very early form as a tech demo ahead of its 2016 launch.

+ +

+ +

Meanwhile this driver is also the first release from NVIDIA’s R355 branch. At this point we don’t know a great deal about this new driver branch – NVIDIA’s release notes are thin on both new features and bug fixes – though I suspect this is one of those cases where we’ll find out more later.

+ +

That said, the one major addition we do know about for this driver is that it enables support for NVIDIA’s GameWorks VR technology in a consumer driver. Along with this driver release GameWorks VR is being promoted from alpha to beta status, and with the release of a new beta SDK is being opened up to more developers and wider testing. NVIDIA has been heavily investing in VR, seeing it as a potential new market to not only further grow sales, but as a market that will require more powerful and expensive GPUs than standard consumer system builds.

+ +

As usual, you can grab the drivers for all current desktop and mobile NVIDIA GPUs over at NVIDIA’s driver download page.

+

+ Ryan Smith + 2015-08-14T01:00:00.000Z +
+
+ +
+

HP Isn't Done With Android Just Yet - 'HP 10 G2' Tablet Certified By The FCC And The Bluetooth SIG

+

hp5So far HP's Android tablets have been somewhat unremarkable, with the arguable exception of the Pro Slate series. Despite a lukewarm response from consumers and retailers, it looks like the company is ready to release at least one more model. A new tablet called the HP 10 G2 has been hanging out with both the FCC and the Bluetooth Special Interest Group, and spotted by Liliputing. Based on the "10 G2" name and photos, it looks like a relatively low-cost follow-up to the original HP 10.

Read More

HP Isn't Done With Android Just Yet - 'HP 10 G2' Tablet Certified By The FCC And The Bluetooth SIG was written by the awesome team at Android Police.



+ +
+ Michael Crider + 2015-08-13T22:33:00.000Z +
+
+ +
+

Visually Impressive Shooter 'Warhammer 40,000: Freeblade' Coming This Fall To Android

+

Freeblade_1366

Fans of Warhammer 40,000 have put up with a lot over the years. The IP has been the basis for a great many mobile games, only some of which have been good. The newly announced Warhammer 40,000: Freeblade looks like it has some potential, just judging from the flashy gameplay trailer. Many questions remain unanswered, though.

In this game, you'll take control of an Imperial Knight—basically a giant mech with lots of guns and stabbing weapons.

Read More

Visually Impressive Shooter 'Warhammer 40,000: Freeblade' Coming This Fall To Android was written by the awesome team at Android Police.



+ +
+ Ryan Whitwam + 2015-08-13T22:12:54.000Z +
+
+ +
+

AT&T, Verizon, Sprint, T-Mobile, And US Cellular Announce Plans For The Galaxy S6 Edge+ And Galaxy Note 5, Best Buy Offers $200 Trade-In

+

gsthumbIf you've been watching today's coverage of the Galaxy Note 5 and Galaxy S6 Edge+ with bated breath, you won't have to wait too long to pick one up from an American carrier. All five major US networks have confirmed that they'll be carrying Samsung's new flagships, with varying degrees of availability and pre-order status. The official release date from Samsung is August 21st, and AT&T is already selling phones.

Read More

AT&T, Verizon, Sprint, T-Mobile, And US Cellular Announce Plans For The Galaxy S6 Edge+ And Galaxy Note 5, Best Buy Offers $200 Trade-In was written by the awesome team at Android Police.



+ +
+ Michael Crider + 2015-08-13T21:29:52.000Z +
+
+ +
+

Robinhood Free Stock Market Trading App Comes To Android

+

Robinhood

Using the stock market isn't free. Well, obviously. You're buying and selling stocks, after all. But on top of that, brokerage firms tend to charge fees to manage financial transactions. The Robinhood app lets you get around that fee, and now it has made its way over from iOS to Android.

Robinhood lets you access market data and quotes in real-time. You can buy and sell stocks without the app charging you for each transaction, though SEC and FINRA regulatory fees may apply.

Read More

Robinhood Free Stock Market Trading App Comes To Android was written by the awesome team at Android Police.



+ +
+ Bertel King, Jr. + 2015-08-13T21:03:59.000Z +
+
+ +
+

Meet MIT’s Beer Delivery Bots

+

Finally, robots are useful.

+

The post Meet MIT’s Beer Delivery Bots appeared first on WIRED.

+ Gordon Gottsegen + 2015-08-13T20:32:25.000Z +
+
+ +
+

Samsung's Insane Keyboard Cover Is Real, Will Be Available For The Note 5 And S6 Edge+

+

samsung-keyboard-cover-note-960

Samsung has had a lot of strange ideas in the past, but you can afford to experiment when you're raking in cash as the top Android OEM. The newly announced keyboard cover for the Note 5 and S6 Edge+ is especially weird, though. It's a case with a snap-on physical keyboard that interacts with the screen. It's also indisputably ugly.

The rear section of the keyboard cover looks like any other cover, but there are two notches where the front keyboard section attaches when you need it.

Read More

Samsung's Insane Keyboard Cover Is Real, Will Be Available For The Note 5 And S6 Edge+ was written by the awesome team at Android Police.



+ +
+ Ryan Whitwam + 2015-08-13T19:50:42.000Z +
+
+ +
+

[North American Giveaway] Win One Of Three NVIDIA SHIELD Android TV Bundles

+

SHIELDconsole

Today a number of great games have all become available for NVIDIA SHIELD all around the same time. To make sure that you have something to play these titles on, we're giving away three bundles of hardware. Sure, you could already play most of these games on your phone or tablet, but wouldn't you rather fire them up on and NVIDIA SHIELD console? In that past, we've called it the best Android TV device on the market.

Read More

[North American Giveaway] Win One Of Three NVIDIA SHIELD Android TV Bundles was written by the awesome team at Android Police.



+ +
+ Bertel King, Jr. + 2015-08-13T19:41:06.000Z +
+
+ +
+

34 Best Android Wear Apps And Watch Faces From 6/16/15—8/13/15

+

wearThere's a distinct lack of new Android Wear devices on the market right now, but perhaps you can tide yourself over with some new apps and watch faces for your faithful wrist companion. We've got a ton of new stuff as always, but even more watch faces thanks to Google's recent push with various brands and designers. Strap on your watch and get ready.

Please wait for this page to load in full in order to see the widgets, which include ratings and pricing info.
Read More

34 Best Android Wear Apps And Watch Faces From 6/16/15—8/13/15 was written by the awesome team at Android Police.



+ +
+ Ryan Whitwam + 2015-08-13T19:25:51.000Z +
+
+ +
+

Samsung Galaxy Note 5 And S6 Edge+ Now Available From AT&T For $740 And $815—Get $300 In Bill Credit Under Certain Conditions

+

Selection_001

Here's something you already knew about the Galaxy Note 5 and S6 Edge+ before today's announcement—both devices are expensive. Samsung charged a ton for its massive phones before, and nothing about introducing more premium materials into this year's iterations says cheap. So you're looking at parting with uncomfortably close to a grand by the time taxes are factored into the equation.

AT&T, for example, wants around $740 for the Galaxy Note 5 and $815 for the S6 Edge+.

Read More

Samsung Galaxy Note 5 And S6 Edge+ Now Available From AT&T For $740 And $815—Get $300 In Bill Credit Under Certain Conditions was written by the awesome team at Android Police.



+ +
+ Bertel King, Jr. + 2015-08-13T19:10:57.000Z +
+
+ +
+

[Update: Nexus 9 LTE] OTA Updates Incoming For Nexus Devices To Fix Vulnerability In Stagefright

+

nexus logo

Last week, Google released factory images for every actively-supported Nexus except the Nexus 7 2013 LTE and Nexus Player. These images were for a new build, LMY48I, intended to patch the recently outed vulnerability that was found in Stagefright.

Today, it appears the OTAs are beginning to hit the masses, but be warned, all these do is patch Stagefright. They contain no other fixes of any kind, so if there's some problem with your device you're hoping to have solved with this update, it's not going to happen.

Read More

[Update: Nexus 9 LTE] OTA Updates Incoming For Nexus Devices To Fix Vulnerability In Stagefright was written by the awesome team at Android Police.



+ +
+ Shawn De Cesari + 2015-08-13T19:08:57.000Z +
+
+ +
+

Emirates Offers the World’s Longest Commercial Flight: 17.5 Hours

+
Emirates Offers the World’s Longest Commercial Flight: 17.5 Hours

The rapidly growing Middle Eastern airline is launching new service to Central America, grabbing the longest flight by a few miles.

+

The post Emirates Offers the World’s Longest Commercial Flight: 17.5 Hours appeared first on WIRED.

+ Jordan Golson + 2015-08-13T18:13:31.000Z +
+
+ +
+

Dell’s New Chromebook Might Be The Best One Yet

+
Dell’s New Chromebook Might Be The Best One Yet

They say it's for work, but it'll do well for anyone.

+

The post Dell’s New Chromebook Might Be The Best One Yet appeared first on WIRED.

+ David Pierce + 2015-08-13T18:01:58.000Z +
+
+ +
+

The SuperSite Windows 10 How To Collection: All about Microsoft Edge

+
+ +

read more

+ + 2015-08-13T17:10:00.000Z +
+
+ +
+

Government warned to be cautious over raising salary thresholds for migrant workers

+
The organisations asked by government to review plans to raise the salary migrants must earn before getting a visa has recommended a cautious approach
+ ComputerWeekly.com + 2015-08-13T16:30:50.000Z +
+
+ +
+

Samsung Breaks Out a Keyboard Case for its New Phones

+
Samsung Breaks Out a Keyboard Case for its New Phones

Bring on the button mashing.

+

The post Samsung Breaks Out a Keyboard Case for its New Phones appeared first on WIRED.

+ Tim Moynihan + 2015-08-13T16:29:14.000Z +
+
+ +
+

CIO interview: David Bulman, interim CIO, Wellcome Trust

+
The medical research charity is reviewing its IT plans ahead of recruiting a permanent CIO
+ ComputerWeekly.com + 2015-08-13T16:15:27.000Z +
+
+ +
+

Samsung Has Two Big New Phones, and Even Bigger Ideas

+
Samsung Has Two Big New Phones, and Even Bigger Ideas

The Galaxy Note 5 and Galaxy S6 Edge+ each have a single feature Samsung hopes will set them apart.

+

The post Samsung Has Two Big New Phones, and Even Bigger Ideas appeared first on WIRED.

+ David Pierce + 2015-08-13T15:00:56.000Z +
+
+ +
+

Business not keeping up with rapid changes in cyber attacks, says Proofpoint

+
Most striking development in the first half of 2015 was a big shift from URL-based cyber attacks to attacks that rely on malicious document attachments
+ ComputerWeekly.com + 2015-08-13T15:00:44.000Z +
+
+ +
+

Hands On With the Samsung Galaxy Note 5 and Samsung Galaxy S6 edge+

+

Today, Samsung is announcing the next generation of their Galaxy-brand phablets, the Galaxy Note 5 and the Galaxy S6 edge+. Samsung’s phablets have been one of their greatest smartphone success stories, finding traction in a market when many thought there wouldn’t be a place for such a large phone. And while you will never see some competitors directly admit to it, products like the Note series have legitimized the phablet form factor and required that the competition catch up as well, making the phablet form factor as much of a home court for Samsung as there can be.

+ +

Starting with the 2014 models, Samsung introduced two different phablets, the Note 4 and the simply titled Note Edge. This year Samsung is retaining the dual phablet approach, however in the case of the Edge product Samsung has shifted gears on what they want to do. For 2015 Samsung seems to be going after a new audience in the form of the Galaxy S6 edge+, which is a more distinct derivative of the Note 5 platform with some greater feature changes than just a curved screen. To understand what I mean, read on for the full article.

+ Joshua Ho + 2015-08-13T15:00:00.000Z +
+
+ +
+

Windows 10 Spotlight Makes Its Debut for Windows Home

+
Announced at Build 2015, the Windows Spotlight feature has now shown up for Windows 10 Home edition users.
+ +

read more

+ + 2015-08-13T14:51:00.000Z +
+
+ +
+

iClever Bluetooth Stereo Headset (IC-BTH01) review

+
I’m on the hunt for a comfortable, good sounding Bluetooth headset with long battery life that will allow me to enjoy music while also letting me answer incoming calls. You wouldn’t think it would be too difficult to find a headset that ticks all those boxes, but it always seems like there’s one feature that doesn’t […]
+ Julie Strietelmeier + 2015-08-13T14:00:21.000Z +
+
+ +
+

Windows 10 is Turning Me Back into a Windows 7 User

+
Windows 10 is a mixture of Windows 7 and Windows 8, but its weighted toward the Windows 7 user.
+ +

read more

+ + 2015-08-13T13:54:00.000Z +
+
+ +
+

Gloucester City Homes embarks on VDI-led tech transformation with Exponential-e

+
Social housing firm taps into Exponential-e's Ethernet capabilities to make it easier for its staff to work flexibly
+ ComputerWeekly.com + 2015-08-13T13:45:54.000Z +
+
+ +
+

Interview: Government digital chief Mike Bracken – why I quit

+
Mike Bracken, the outgoing director of the Government Digital Service, talks exclusively to Computer Weekly about his departure from Whitehall
+ ComputerWeekly.com + 2015-08-13T13:20:18.000Z +
+
+ +
+

Sigma rear brake light – light and bright

+
A simple solution to a complex problem, the Sigma rear brake light allows motor vehicle drivers to know when you’re braking on your bicycle. Small at 3 x 3 cms/1.18 in and light (weight wise @ 7 grams/ 0.25 oz   ), easy to install (you just need a 2.5mm hex key)  and simple in […]
+ Ian Lim + 2015-08-13T13:00:57.000Z +
+
+ +
+

Ofcom launches mobile network coverage checker

+
Ofcom gives smartphone users the ability to check their operator’s mobile phone coverage at postcode level using an online tool
+ ComputerWeekly.com + 2015-08-13T12:45:57.000Z +
+
+ +
+

Samsung SSD Update: 48-layer 256Gbit TLC 3D NAND & Three New TLC SSDs Announced

+

When Samsung took the stage at the 2015 Flash Memory Summit, they admittedly didn't deliver any bombshell announcements on the scale of the Intel/Micron 3D XPoint surprise, but they still had a lot to talk about.

+ +

We knew that Samsung's third generation of V-NAND/3D NAND was on the way with mass production scheduled for the second half of this year. Samsung has now disclosed that mass production is starting this month, and that it's a 48-layer design with a 256Gb TLC being the first die announced. Samsung's current second-generation 3D NAND is a 32-layer design available as 128Gb TLC or 128Gb MLC.

+ +

With mass production imminent, Samsung has ensured that neither SK Hynix nor the Toshiba/SanDisk joint venture will be able to leapfrog them with their respective 48-layer 3D NAND designs, both scheduled for mass production starting in 2016.

+ +

Samsung says the new 256Gb TLC will have about 30% lower power consumption than an equivalent capacity of their current 128Gb TLC, and a switch to a dual-plane organization ensures that one 256Gb die will perform at least as well as a pair of the current 128Gb dies. Density is improved by about 40% while production costs only increased slightly, so price per GB will be going down. At FMS, Samsung is pushing the idea that their 3D NAND TLC is ready to replace MLC for most uses, and they're optimistic about scaling up their 3D NAND layer count past 100.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
New Samsung 48-Layer TLC SSDs
DrivePM953PM1633PM1725
Form FactorNVMe over M.2 22110 and 2.5"2.5" SAS 12Gb/sNVMe PCIe HHHL card
Capacities480GB, 960GB, 1.92TB (2.5" only)480GB, 960GB, 1.92TB, 3.84TB3.2TB, 6.4TB
Sequential Read?1,100 MB/s5,500 MB/s
Sequential Write?1,000 MB/s1,800 MB/s
4kB Random Read IOPS?160k1,000k
4kB Random Write IOPS?18k120k
Endurance Rating??5 DWPD (6.4 TB model)
+ +

Samsung also shared information about three upcoming drives, all using TLC though not necessarily the new 48-layer parts. The PM1633 Enterprise SAS drive was previewed at CES in January and is intended for read-heavy workloads. A follow-on PM1633a model was mentioned to use the new 48-layer TLC to reach 15.36TB capacity, but we don't have any other information about that update. The PM953 is a enterprise NVMe drive in M.2 or 2.5" form factors, and is the counterpart to the MLC-based SM951. Of particular interest, the M.2 version is using the M.2 22110 form factor (22mm x 110mm, the maximum length for M.2), with Samsung using the extra space to implement power loss protection.

+ +

Meanwhile the PM1725 is a fast multi-TB PCIe expansion card that Samsung intends to use to challenge the assumptions about what uses TLC is suited for. Relatively speaking it appears to be intended for workloads that aren't very write-heavy, but it still manages 120k IOPS for writes. That just looks small compared to 1M IOPS for reads and a sequential read speed of 5.5GB/s.

+ +

All three drives are intended for OEMs, but the PM953 will probably find its way into the retail channel just like the SM951.

+ +

Finally, along with Samsung's new 3D NAND appearing in the afformentioned new drives, it will also be appearing in at least one of their existing drives. The 850 EVO, Samsung's current consumer TLC drive, will apparently be getting an update to use the new 48-layer TLC, though it's not clear if this will be new capacities and/or a wholesale NAND update.

+

+ Billy Tallis + 2015-08-13T12:30:00.000Z +
+
+ +
+

Plantronics headphones, Incase backpack, BBQ Dragon and more – Review updates

+
What happens after we review a product? Do we shove it in a drawer never to be used again? Do we continue using it long after we’ve posted our review? Our regular review updates will answer those questions. Check out this week’s updates after the jump. Plantronics BackBeat FIT headphones review by Raul Sanchez Incase […]
+ Julie Strietelmeier + 2015-08-13T12:00:38.000Z +
+
+ +
+

Troubled HTC to restructure as smartphone shipments plummet

+
Taiwanese company announces major business restructure targeting connected lifestyle and wearable products following disappointing results
+ ComputerWeekly.com + 2015-08-13T11:43:09.000Z +
+
+ +
+

Sharp increase in students taking computing A-level

+
The number of A-level computing students rose 29.1% in 2015, as students pick up their exam results today
+ ComputerWeekly.com + 2015-08-13T11:11:39.000Z +
+
+ +
+

Driving digital productivity in the UK

+
There is a need for British businesses to improve their adoption of digital technologies
+ Narry Singh + 2015-08-13T11:10:57.000Z +
+
+ +
+

TFL still wasting millions on telecoms despite IIPAG criticism

+
One year on and Transport for London is still pouring millions into dispersed telecoms systems, according to the Independent Investment Programme Advisory Group
+ ComputerWeekly.com + 2015-08-13T10:30:52.000Z +
+
+ +
+

Demand for all-flash storage to accelerate in Australia and New Zealand

+
Demand for all-flash storage will increase in ANZ, as a result of lower prices and greater capacities.
+ Alex Cruickshank + 2015-08-13T09:59:20.000Z +
+
+ +
+

Rapid7 seeks greater security collaboration with technology firms

+
Rapid7 is working to promote better relations between the security community and the rapidly increasing number of de facto technology companies
+ ComputerWeekly.com + 2015-08-13T09:33:44.000Z +
+
+ +
+

Short Takes Daily: What went on in the world of Microsoft on Wednesday, August 12, 2015

+
+ +
Today in the news: We have a hands-on look at Stardock, we calm someone's panic over Windows 10 ushering in the end times, and we look at what's new in Windows 10 Mobile Build 10512.
+ +

read more

+ + 2015-08-12T21:39:00.000Z +
+
+ +
+

Polar Opposites

+

Compression and Encryption have much more in common than you could have guessed.

+ Colt McAnlis + 2015-08-12T20:03:09.000Z +
+
+ +
+

Windows 10 Mobile Build 10512 hits Insider Fast Ring for testing

+
Testing can now continue on Windows 10 Mobile as Microsoft releases its first new build in over a month to Insiders who are members of the testing Fast Ring.
+ +

read more

+ + 2015-08-12T18:41:00.000Z +
+
+ +
+

Take a tour of the Start10 menu from Stardock

+
+ +

read more

+ + 2015-08-12T18:00:00.000Z +
+
+ +
+

New partner add-ins revealed in Outlook.com's expanded roll-out

+
Microsoft is picking up the pace for the roll out of the updated Outlook.com by allowing in a larger group of users as they also expand with new partner add-ins for Outlook.
+ +

read more

+ + 2015-08-12T17:29:00.000Z +
+
+ +
+

Q: Is Windows 10 really the end for normal computer users?

+
+ +
On Wednesdays, we'll be featuring an abridged Q&A from Fred Langa's LANGALIST, a feature available exclusively to paid subscribers of the Windows Secrets newsletter. Today's Q&A: Why would anyone possibly WANT to use Windows 10?
+ +

read more

+ + 2015-08-12T16:13:00.000Z +
+
+ +
+

Microsoft releases a Remote Desktop Preview app for Mac

+
Microsoft is inviting Mac users to participate in a new preview program for their beta remote desktop client for Mac.
+ +

read more

+ + 2015-08-12T13:54:00.000Z +
+
+ +
+

Qualcomm Details the Adreno 530 GPU and ISP inside the Snapdragon 820

+

Snapdragon 820 is still a mystery as far as official information from Qualcomm goes. However, today Qualcomm has given a bit of insight into their upcoming SoC. While there's still no information about the CPU portion featuring Qualcomm's custom 64-bit cores known as 'Kryo', there are some details about the Adreno 510 and 530 GPUs, as well as Qualcomm's Spectra image signal processor.

+ +

+ +

Because Adreno 530 is their new flagship GPU, Qualcomm's press release focuses more on the 530 than the 510. The performance figures released by Qualcomm describe Adreno 530 as being 40% faster than Adreno 430 on average, while also consuming 40% less power. This result is described as an average of "the top graphics benchmarks", and while it's still generally a good idea to take vendor provided numbers with a grain of salt, if the power and performance gains over Adreno 430 are anywhere in the ballpark of Qualcomm's 40% figure then Adreno 530 should end up being quite impressive.

+ +

+ +

On the API side, Adreno 500 series GPUs will support OpenGL ES 3.1 + AEP (Android Extension Pack), Renderscript, Vulkan, and OpenCL 2.0. With OpenCL 2.0 comes support for Shared Virtual Memory (SVP), which allows an OpenCL host program and a device's kernel to share a virtual address space so access to data structures like lists and trees can be easily shared between the host and GPU. Adreno 530 has varying improvements to GPGPU performance when compared to Adreno 430, but Qualcomm's slides show video processing as demonstrating the greatest improvement with a 2.5x increase in compute performance. This is also the area where efficiency gains for generational improvements typically happen, so we expect fixed-function codec support although this information is not yet provided.

+ +

As for the ISP, it's still the case that mobile image signal processors are black boxes. Qualcomm is stating that their Spectra ISP in Snapdragon 820 will be able to support 3 simultaneous cameras at up to 25MP and at 30fps with no shutter lag. The Spectra ISP will also use MIPI's higher bandwidth C-PHY serial interface, which supports the enhanced camera support. As well as this, new developer and user-facing features include support and APIs for depth maps and using dual cameras to perform refocusing or other visual effects - because Qualcomm is just the SoC manufacturer, it is up to the smartphone OEMs to implement dual-camera/depth-maps as a feature as well.

+ +

According to Qualcomm, Snapdragon 820 will start showing up in devices during the first half of 2016. Hopefully between now and then there's more information from Qualcomm about the other aspects of their new SoC, including their Kryo custom CPU core. In Q1 we will be at Mobile World Congress, so we may see more information at that time.

+ +

Source: Qualcomm, slides via Slashgear

+

+ Brandon Chester + 2015-08-12T13:35:00.000Z +
+
+ +
+

Windows Update Delivery Optimization Defaults by Edition

+
Windows Update Delivery Optimization in Windows 10 is turned on by default, but there are differences between editions.
+ +

read more

+ + 2015-08-12T13:26:00.000Z +
+
+ +
+

Sumo Sultan big bean bag chair review

+
You may be wondering what a bean bag chair has to do with gadgets, but if you look back on the years, we’ve reviewed a few here. The first thing I think of when I think of a bean bag chair is something that belongs in a game room, is small, and has lots of […]
+ Ryan Chapman + 2015-08-12T13:00:54.000Z +
+
+ +
+

Toshiba Brings Through-Silicon Vias to NAND Flash

+

At Flash Memory Summit this week, Toshiba is showing off a NAND flash device packaged using through-silicon vias rather than traditional wire-bonded connections.

+ +

The NAND flash currently on the market is typically produced in the form of a die with a capacity like 128Gb (16GB). The popular SSD form factors don't have enough surface area to fit dozens of those chips, and SSD controllers don't have the pin count to connect to that many independently, so several chips are stacked in a single postage-stamp sized package. The traditional way of connecting the individual dies in a stack is to use the same technique as for a single-die package: bonding a thin gold wire between the edge of the die and the package substrate or external pins. The downsides are that it requires a lot of wires and the edges of the dies in the stack need to be exposed somehow, either by staggering them or by putting a spacer between each layer.

+ +

+ +

An alternative packaging method is to design the dies to participate in the stacking, by including electrical conductors that penetrate the entire thickness of the silicon die so that they can make contact with the dies above and below it in the stack, essentially tunneling right through each die. These through-silicon vias (TSVs) can then form a shared bus to carry signals from any of the dies in the stack out to the last die, which is the only one with the external connections.

+ +

+ +

Chip stacking using TSVs requires the dies to be aligned and stacked without spacers, which makes the whole stack a bit more compact. Since TSVs can be placed anywhere on the chip rather than just at the edge, it's easy to implement a wide data bus and communication within the stack can be very fast or low-power due to the short distances involved. These advantages have been very attractive for packaging DRAM, most notably in the form of the HBM stacks used by AMD's R9 Fury and R9 Nano video cards.

+ +

Toshiba's demonstration is a 16-high stack of 128Gb dies in a BGA-152 package measuring 14mm by 18mm and 1.9mm thick, and an 8-high stack that's 1.35mm thick. Those numbers are all typical even for wire-bonded stacks. The speed (1Gb/s) and operating voltages (1.2V for I/O and 1.8V core) are what we would expect from a next-generation NAND interface, but the claimed 50% power reduction is a very nice improvement for a change that leaves the flash memory cells themselves unmodified.

+ +

Toshiba hasn't said whether the dies being stacked are their current 15nm planar NAND or their forthcoming 3D NAND, nor have they said when modules using TSVs will be hitting the market. The most compelling applications would be to use TSVs to stack flash atop a controller chip in an eMMC product or atop an SoC, but the power savings would be appreciated almost everywhere. If the use of TSVs allows economically stacking more than 16 dies, it could enable a dramatic increase in the density of SSDs.

+

+ Billy Tallis + 2015-08-12T12:01:00.000Z +
+
+ +
+

A 10,000 mAh portable battery that utilizes Qualcomm Quick Charge 2.0

+
I love the Qualcomm Quick Charge 2.0 technology on my Nexus 6 phone. It significantly decreases the amount of time I spend charging my phone which is something that I have grown accustomed to. I recently purchased the Aukey CC-T1 2-Port 30W USB Car Charger with Quick Charge 2.0 to be able to use this fast […]
+ Kathleen Chapman + 2015-08-12T12:00:46.000Z +
+
+ +
+

Advatronix Nimbus 400 File Server Review

+

Small businesses and power users often need the flexibility offered by a file server when compared to a dedicated NAS. This is where storage servers based on Microsoft's Windows Server offerings and systems based on various Linux and BSD distributions come into play. These servers can be bought as an appliance or assembled in a do-it-yourself (DIY) fashion. Today, we will be looking at a system based on the former approach - the Advatronix Nimbus 400.

+ Ganesh T S + 2015-08-12T12:00:00.000Z +
+
+ +
+

Build-A-Rig Round 1: The Winners

+

As our final update to what has been a very successful first round for our Build-A-Rig project, last week we held the drawing to determine the winners. Each of our winners is taking home a $1500 gaming system, designed by Zotac and Corsair respectively. So without further ado:

+ + + +

+ +

Congratulations to our two winners, and the first winners for the Build-A-Rig project. And be sure to check back later this month when we kick off Build-A-Rig round 2, where we will be putting together and giving away a pair of small form factor systems.

+

+ Ryan Smith + 2015-08-12T12:00:00.000Z
@@ -790,24 +1826,6 @@ If you've been wanting to play around with LastPass on your mobile device w
-
-

Indie games are vast, varied and very 80s in this Megabooth trailer

-
- -There is no single definition of an "indie" video game. "Indie" doesn't mean free, cheap, mobile, 8-bit, 3D, platformer, shooter or any other thing. Thanks to the recent, rapid evolution of game-making technologies, more people than ever are able t...
- Jessica Conditt - 2015-08-11T22:01:00.000Z -
-
- -
-

ASUS ZenFone Go coming soon, already spotted on Flipkart

-
Fresh from the success of the ZenFestival in New Delhi, ASUS is unveiling yet another smartphone in the form of the ZenFone Go. The entry-level phone was actually expected to be announced … Continue reading
- R Padla - 2015-08-11T22:00:56.000Z -
-
-

Short Takes Daily: What went on in the world of Microsoft on Tuesday, August 11, 2015

-
-

Surviving the Def Con hacker conference

-
- -The phrase I saw and heard over and over again while talking to other journalists and security researchers about the Def Con hacker convention was "hostile environment." Not physically hostile; the attendees and staff were extremely nice. The hosti...
- Roberto Baldwin - 2015-08-11T21:34:00.000Z -
-
- -
-

The Blue Screen of Death can be on your smartwatch (sort of)

-
For all of you who have used Windows at the beginning of your digital lives, nothing evokes more fear and trembling than the dreaded Blue Screen of Death. Countless horror … Continue reading
- Ida Torres - 2015-08-11T21:20:44.000Z -
-
- -
-

MIT team gets us one step closer to robot bartenders

-
- -Sure, we've seen machines that can mix drinks with the help of an app and robot bartenders that can create cocktails out of Keurig-esque pods, but they all require you to actually push the control buttons and carry your own beverages. The horror! F...
- Amber Bouman - 2015-08-11T21:08:00.000Z -
-
- -
-

Moto G 2015 accessibility options

-

- -

Android phones have come a long way in the accessibility department, and the Moto G 2015 is no exception. Using the features and tools Google has provided for Android Lollipop, the Moto G 2015 has plenty of options for those with trouble seeing or hearing, and even those of us with motion control issues.

- -

Being there is fine, but knowing how to use them is the important part. that's where we can help. Have a gander at the Moto G 2015 accessibility options.

- -
- Jerry Hildenbrand - 2015-08-11T21:01:23.000Z -
-
- -
-

Logitech Updates Harmony App With Support For The August Smart Lock, Ecobee Thermostat, LIFX Light Bulbs, And Insteon

-

Selection_001

Some homes are smart, and the Logitech Harmony serves as their brain. It provides a single location to control all the things, assuming of course that the products are supported. The latest update adds quite a few more to the list ranging from door locks to thermostats and a few things in between. Logitech Updates Harmony App With Support For The August Smart Lock, Ecobee Thermostat, LIFX Light Bulbs, And Insteon

The new additions include the August Smart Lock (pictured above) that provides remote control over your doors.

Read More

Logitech Updates Harmony App With Support For The August Smart Lock, Ecobee Thermostat, LIFX Light Bulbs, And Insteon was written by the awesome team at Android Police.



- -
- Bertel King, Jr. - 2015-08-11T21:00:30.000Z -
-
-

SanDisk Announces Second Generation CloudSpeed Ultra SATA Enterprise SSD

At Flash Memory Summit today SanDisk announced the second generation of their CloudSpeed Ultra enterprise drive. This is the sibling to the gen. 2 CloudSpeed Eco that was announced in June.

@@ -942,1805 +1908,12 @@ Sure, we've seen machines that can mix drinks with the help of an app and r

SanDisk is already supplying the CloudSpeed Ultra gen. 2 to several major customers for large-scale deployments and it will be more broadly available later in 2015, where it will be competing against drives like Samsung's SM863 and Intel's DC S3610. Pricing will be under $1/GB, but we don't know by how much. It probably won't be undercut by Intel's DC S3610, but to be competitive it will need to be down near Samsung's $0.66/GB for the SM863.

-

+

Billy Tallis 2015-08-11T21:00:00.000Z
-
-

Microsoft OneNote Adds 'Floatie' Feature, An Unobtrusive Shortcut For Jotting Down Notes While Using Any App

-

OneNoteThumb

The latest updates to Microsoft's OneNote app have taken advantage of an ability granted to it by the openness of Android OS: the ability to place an overlay on top of other running apps. Similar to Facebook Messenger's chat heads UI, OneNote now has an opt-in feature called "floatie" that remains accessible while you use non-OneNote apps. The idea is that inspiration for notes may come at any time and you may not want to leave the app you're in to do it.

Read More

Microsoft OneNote Adds 'Floatie' Feature, An Unobtrusive Shortcut For Jotting Down Notes While Using Any App was written by the awesome team at Android Police.



- -
- Jacob Long - 2015-08-11T20:50:05.000Z -
-
- -
-

Facebook offers up its autoplay video ads to other apps

-
- -If you're already annoyed with the autoplay video ads in your Facebook timeline, you might want to brace yourself. The social network is opening up that advertising tech to outside apps, or more specifically, to publishers who leverage Menlo Park's...
- Billy Steele - 2015-08-11T20:44:00.000Z -
-
- -
-

Huawei Watch apparently just “round the corner”

-
The clock has been ticking now for almost 6 months ever since Huawei announced its first Android Wear smartwatch back in March during the Mobile World Congress. But since then, … Continue reading
- Ida Torres - 2015-08-11T20:40:41.000Z -
-
- -
-

VR pop-up studio will help journalists track online shaming

-
- -It doesn't take long for social media to become antisocial. A tactless tweet, an inappropriate picture or even a mundane status update can create the perfect storm for online shaming. In an attempt to convert those rabid online tendencies into oppo...
- Mona Lalwani - 2015-08-11T20:20:00.000Z -
-
- -
-

Engadget Live hits Los Angeles next week!

-
- -Last year, we had a lot of fun at Engadget Live Los Angeles and now we're gearing up to do it all over again. Next Friday, August 21st, we'll take over Exchange LA from 7PM to 10PM and give readers like you a chance to experience the future of tech...
- John Colucci - 2015-08-11T20:05:00.000Z -
-
- -
-

Panasonic rolls out Eluga Icon Android phone, now listed on Amazon India

-
Panasonic smartphone lines may not be popular as the Samsung Galaxy phones, LG G's, ASUS ZenFone's or HTC One's but the Eluga phone series has been around since 2012. It … Continue reading
- R Padla - 2015-08-11T20:00:06.000Z -
-
- -
-

Firefox Stable Release Is Updated To v40 With Tweaked Forward/Back Navigation, Better Malware Protection, And Other Minor Improvements

-

firefox

Keeping to their normal rapid release schedule, Mozilla published v40 of the stable release of Firefox to the Play Store today. The biggest user-facing change in the update is one that was also present in the beta version of v40, allowing you to long press the forward or back buttons to see a list of your recently visited pages. Here's a quick look at how that works:

nexus2cee_2015-07-03-18_11_32

This is the sort of thing that only catches your attention when there aren't any other major changes, but this is one of those times.

Read More

Firefox Stable Release Is Updated To v40 With Tweaked Forward/Back Navigation, Better Malware Protection, And Other Minor Improvements was written by the awesome team at Android Police.



- -
- Jacob Long - 2015-08-11T19:50:22.000Z -
-
- -
-

Check out Russell live tonight on TWiT's All About Android show

-

- -

Our Russell Holly will be joining the TWiT team on tonight's All About Android show, and you can tune in and watch it live. Starting at 5 p.m. PDT, or 8 p.m for those on the East Coast, you can check out all of the conversation as it happens.

- Jared DiPane - 2015-08-11T19:48:56.000Z -
-
- -
-

The PS Vita of Steam Machines arrives in 2016 for $299

-
- -The Steam Machine invasion is happening this fall. But while these computers are said to be more powerful than traditional consoles, such as the Xbox One or PlayStation 4, none of them are exactly portable. Smach Zero's device, however, is. Formerl...
- Edgar Alvarez - 2015-08-11T19:48:00.000Z -
-
- -
-

Rite Aid Will Officially Accept Google Wallet, And Eventually Android Pay, Starting August 15th

-

Wallet-ThumbThe idea of paying using your phone may be exciting, but that's all it will ever be until more stores start playing along. Today Rite Aid announced that you will soon be able to add its nearly 4600 stores to the list. Starting August 15th, it will accept Google Wallet NFC payments in stores. It will also take tap and pay credit cards.

That's right, it'll be like you're shopping at Walgreens.

Read More

Rite Aid Will Officially Accept Google Wallet, And Eventually Android Pay, Starting August 15th was written by the awesome team at Android Police.



- -
- Bertel King, Jr. - 2015-08-11T19:41:59.000Z -
-
- -
-

VR Gets the Simple, Hands-Free Head Wear It Deserves

-
VR Gets the Simple, Hands-Free Head Wear It Deserves

That's one way to do it.

-

The post VR Gets the Simple, Hands-Free Head Wear It Deserves appeared first on WIRED.

- Molly McHugh - 2015-08-11T19:33:17.000Z -
-
- -
-

Verizon tests new fiber system that hits 10Gbps speeds

-
- -Verizon has announced that it has successfully completed field tests of its new super-fast fiber optic technology, dubbed the next-generation passive optical network (NG-PON2). It could offer users connectivity speeds anywhere from 10Gbps to 80Gbps...
- Andrew Tarantola - 2015-08-11T19:24:00.000Z -
-
- -
-

Google now includes images from PDF in image search

-
Back in 2008, when Google first started indexing PDF files through OCR from websites to include it in your search results, it was a sigh of relief (and for some, … Continue reading
- Ida Torres - 2015-08-11T19:20:05.000Z -
-
- -
-

Get Access To The eBay App v4.0 Closed Beta By Filling Out This Form

-

ebaythumbMost developers run regular beta tests via the Play Store, but not eBay. Oh no. The most recent eBay v4.0 beta is closed, and even the APK needs an authorized login to work. Luckily, there's a form you can fill out to get access.

It's a simple Google Docs survey and should only take a moment to complete. Just put in your email, beta preference (iOS/Android), and your country. You should get an email with the download link as soon as there's a new build to test.

Read More

Get Access To The eBay App v4.0 Closed Beta By Filling Out This Form was written by the awesome team at Android Police.



- -
- Ryan Whitwam - 2015-08-11T19:19:00.000Z -
-
- -
-

Skype for Business now heading into preview on Android

-

- -

Microsoft has announced the preview for its upcoming Skype for Business offering on Android. Skype for Business will come as an update to the existing Lync 2013 app when it arrives later this year.

- -
- Joseph Keller - 2015-08-11T19:03:39.000Z -
-
- -
-

Developers in Qatar, Kazakhstan and Nigeria can now sell paid apps in Google Play

-

- -

Developers in Qatar, Kazakhstan and Nigeria are now able to list paid apps in Google Play, and display the apps using local currency pricing. The changes, which are reflected on the Google Play Developer Console, indicate that developers in these regions are now able to set pricing for their apps, as well as in-app purchases using local currency.

- Jared DiPane - 2015-08-11T19:03:25.000Z -
-
- -
-

With Alphabet, Google wants to avoid becoming Microsoft

-
- -You're probably tired of hearing just how "unconventional" Google is after yesterday's surprise restructuring announcement. Sure, making Google a subsidiary of a company called Alphabet is certainly strange, especially after it's become a household...
- Devindra Hardawar - 2015-08-11T19:00:00.000Z -
-
- -
-

Android's Version Of Skype For Business Is On The Way, And You Can Sign Up Now To Test The Preview

-

Skype3

The free version of Skype is great for personal use, but you can also get work done with it as well. I took part in numerous job interviews over video chat during my last year of college. When I landed an internship, we used it to communicate around the office.

But for big work done by big companies, there's Skype for Business. It comes with extra perks such as the ability to chat with up to 250 people and integrate everything with Office.

Read More

Android's Version Of Skype For Business Is On The Way, And You Can Sign Up Now To Test The Preview was written by the awesome team at Android Police.



- -
- Bertel King, Jr. - 2015-08-11T18:55:55.000Z -
-
- -
-

Omate smart ring tells you when THAT person is calling

-
If you’ve been around mobile technology then you will know that the Omate smart ring isn’t the first of its kind around. There have been “smart rings” for just about … Continue reading
- John Hoff - 2015-08-11T18:40:38.000Z -
-
- -
-

Google Creative Lab Releases Three New Experimental Apps—Landmarker, Tunnel Vision, And Lip Swap

-

unnamed

You don't hear a lot about Google Creative Lab, but it's had a hand in some of Google's most memorable ads and products. Google's Creative Lab is an outfit that basically comes up with (presumably) innovative ideas the promote the Google brand. Along the way, they've also made a few apps. Today there are three new apps from the Creative Lab, all of which are appropriately offbeat.

First up, there's Landmarker, which I dare say is the most conventional and useful of the three.

Read More

Google Creative Lab Releases Three New Experimental Apps—Landmarker, Tunnel Vision, And Lip Swap was written by the awesome team at Android Police.



- -
- Ryan Whitwam - 2015-08-11T18:13:23.000Z -
-
- -
-

Samsung Galaxy S7 to run on Qualcomm Snapdragon 820 processor

-
After the Galaxy Note 5 and Galaxy S6 Edge Plus are announced this week, the next major flagship phone we should be waiting for is the Galaxy S7. Samsung is … Continue reading
- R Padla - 2015-08-11T18:00:57.000Z -
-
- -
-

FireFox update supposedly optimizes browsers interface for Windows 10

-
Has Mozilla had a change of heart about Windows 10 after the default browser dust up a couple of weeks ago?
- -

read more

- - 2015-08-11T17:50:00.000Z -
-
- -
-

What is reactive programming?

-

Braden O'Guinn gives us the scoop on reactive programming and where to learn more about it.

-

The post What is reactive programming? appeared first on Mutual Mobile.

- Mark Killian - 2015-08-11T17:41:03.000Z -
-
- -
-

Samsung Galaxy S5 Neo listed for pre-order in Germany, now with updated design

-
August started with us getting a glimpse of the Galaxy S5 Neo being listed on a Dutch online retailer, ready for pre-order. We knew it was only a matter of … Continue reading
- R Padla - 2015-08-11T17:20:55.000Z -
-
- -
-

Thermacell Mosquito Repellent review

-
When you are concerned with mosquito-borne illnesses like the West Nile virus present here in Texas, finding effective ways to repel mosquitoes in addition to the standard repellent sprays (containing DEET) is of great importance. The Thermacell Mosquito Repellent appliance is an outdoor device used to repel mosquitos within a 15′ x 15′ area. I found […]
- Kathleen Chapman - 2015-08-11T17:00:25.000Z -
-
- -
-

Lenovo-Backed ZUK Announces The China-Only Z1 With USB 3.0 Type-C And 4100mAh Battery

-

6YUpQAAAABJRU5ErkJggg==

Lenovo already has cell phone legend Motorola under its umbrella, but the company has also started a new Chinese brand called ZUK. This firm is intended to compete with the budget offerings of Xaiomi, Huawei, and others. Its first phone looks like a good start too. The Z1 has a massive battery and a USB 3.0 Type-C port.

The Z1 is basically specced like a 2014 flagship with a few important extras.

Read More

Lenovo-Backed ZUK Announces The China-Only Z1 With USB 3.0 Type-C And 4100mAh Battery was written by the awesome team at Android Police.



- -
- Ryan Whitwam - 2015-08-11T16:41:08.000Z -
-
- -
-

Spotify to reportedly offer premium-only content by early 2016

-
When Spotify first introduced their own music streaming model, the market was still very different back then. But with more services now aggressively marketing themselves, and with pressure from record … Continue reading
- Ida Torres - 2015-08-11T16:40:18.000Z -
-
- -
-

LastPass Free Is Now Available On Mobile Devices For New Users, But You Have To Pay To Switch From Phones To Tablets Or PCs

-

LastPass

Using LastPass on anything more mobile than a PC used to be a perk reserved exclusively for paying customers. We couldn't call it all that much of a luxury, considering that at $12 a year, LastPass Premium costs about as much as a short trip on the Pennsylvania Turnpike. But now you won't even have to pay that much to start managing your passwords on your Android phone or tablet.

Users who sign up for LastPass can use the service on an unlimited number of smartphones or tablets—but not both.

Read More

LastPass Free Is Now Available On Mobile Devices For New Users, But You Have To Pay To Switch From Phones To Tablets Or PCs was written by the awesome team at Android Police.



- -
- Bertel King, Jr. - 2015-08-11T16:15:59.000Z -
-
- -
-

Small IT firms most susceptible to going under due to late payments

-
Small businesses, particularly those supplying IT, should look at alternative financing models as late payments put them at risk of closure
- ComputerWeekly.com - 2015-08-11T16:15:16.000Z -
-
- -
-

How To: Manage Taskbar Real Estate in Windows 10

-
You can make settings adjustments in Windows 10 to free up more space for pinned apps.
- -

read more

- - 2015-08-11T16:14:00.000Z -
-
- -
-

Snapchat update: travel mode to save data, placeable emojis

-
Data saving seems to be the name of the game among apps, specifically messaging apps, with Facebook and WhatsApp just some of the recent ones that are offering versions of … Continue reading
- Ida Torres - 2015-08-11T16:00:17.000Z -
-
- -
-

Peer-to-peer lenders galore apply for regulatory approval

-
The number of companies applying to become authorised peer-to-peer lenders goes beyond expectations as the appetite for non-bank lenders increases
- ComputerWeekly.com - 2015-08-11T15:45:02.000Z -
-
- -
-

Parallels Access Updated To v3.0 With File Sharing, Universal File Manager, And More

-

unnamed

Most remote access apps just beam your computer's screen to the phone, but Parallels does a bit more. It has a handy app launcher and full-screen rendering of desktop apps. It's not free, but maybe the latest update will entice you to pony up some cash.

Here's the changelog for Parallels v3.0.

  • File Sharing — Share any file directly from your computer. No cloud storage required, no file size limit, no upload time wasted.
Read More

Parallels Access Updated To v3.0 With File Sharing, Universal File Manager, And More was written by the awesome team at Android Police.



- -
- Ryan Whitwam - 2015-08-11T15:28:23.000Z -
-
- -
-

Prevent the Windows 10 upgrade from installing after making your reservation

-
If you are not ready for the Windows 10 upgrade but made a reservation these steps will help you keep it off your system.
- -

read more

- - 2015-08-11T15:26:00.000Z -
-
- -
-

Snapchat 9.14 Offers A Travel Mode That Uses Less Data, New Emoji Button, And More

-

Snapchat1

Snapchat's developers have pushed out another update to the Android app, version 9.14. Like before, users get to satisfy their thirst with a trickle of new features.

One tucked away change is the ability to see who has viewed your Story by tapping on the eyeball in the corner. We also see an addition aimed specifically had users with limited or slower data connections. There's now the option to dive into Settings and enable Travel Mode, which reduces mobile data usage.

Read More

Snapchat 9.14 Offers A Travel Mode That Uses Less Data, New Emoji Button, And More was written by the awesome team at Android Police.



- -
- Bertel King, Jr. - 2015-08-11T15:20:42.000Z -
-
- -
-

Qualcomm outs Snapdragon 412, 212 for budget and midrange devices

-
Chipset manufacturer Qualcomm had to update their entry level and lower midrange chipsets last year because of the growth of 4G data connectivity. That meant even entry level and midrange … Continue reading
- John Hoff - 2015-08-11T15:20:32.000Z -
-
- -
-

ZUK Z1 Announced with USB 3.1 and 4100mAh Battery

-
ZUK-Z1

ZUK are a relatively new sub-brand of Lenovo, who had previously enjoyed press through multiple rumors about their impending release of a CyanogenOS smartphone called the Z1. This has turned out to be off the mark; the company announced the very same handset today, although it’s running a custom implementation of Android 5.1 called ‘ZUI’. We’ll be bringing you a more in-depth preview of the device once we get our hands on it, but at this point we already have a full list of specifications and a number of interesting details about this very reasonably priced first effort.

-

 

-

 

-

 

-

With its $280 price tag, ZUK is going head-to-head with a number of other thrifty Chi. . . READ ON »

- Jack Jennings - 2015-08-11T15:13:15.000Z -
-
- -
-

DEF CON 23: Two major roadblocks to cyber diplomacy, says former US diplomat

-
The problem of attribution and the disclosure dilemma continue to hamper cyber diplomacy, but the US might just have cracked the former, according to David An
- ComputerWeekly.com - 2015-08-11T15:00:05.000Z -
-
- -
-

Sasmung's Game Recorder+ Updated To Work With More Phones And Android Versions

-

imageIf you're a Samsung phone owner hoping to play with the manufacturer's custom-made game recording app, you might just be able to today. Game Recorder+ has been updated to work with a few new devices, plus updated compatibility for new Android 5.1 builds and better performance.

The new phones are the Galaxy S6 Active, the older Galaxy S5 Active, the Galaxy Note Edge, and the Galaxy Note 3 Neo. The app now works with Android 5.1 on the Galaxy S6, Galaxy S5, and Galaxy Note 4 (which may or may not be updated depending on your location and/or carrier).

Read More

Sasmung's Game Recorder+ Updated To Work With More Phones And Android Versions was written by the awesome team at Android Police.



- -
- Michael Crider - 2015-08-11T14:50:10.000Z -
-
- -
-

Microsoft’s Cortana app can now be set as default on Android

-
Cortana is still scheduled to be released for Android but before its official launch, Microsoft is doing its best to test the app and fix whatever bugs or issues that … Continue reading
- R Padla - 2015-08-11T14:40:20.000Z -
-
- -
-

Digital Scotland claws back £18m for superfast broadband

-
Digital Scotland Superfast Broadband programme receives an £18m funding boost to extend rural connectivity
- ComputerWeekly.com - 2015-08-11T14:30:32.000Z -
-
- -
-

How To: Turning Off Windows 10 Notifications During Presentations

-
Don't get caught by embarrassing pop-ups during presentations.
- -

read more

- - 2015-08-11T14:24:00.000Z -
-
- -
-

IT budgets squashed by 20% currency price hike

-
CIOs could struggle to get the best value from next year's IT budget as the strong US dollar drives up costs
- ComputerWeekly.com - 2015-08-11T14:23:26.000Z -
-
- -
-

How To: Manage Email Folders in the Windows 10 Mail App

-
The Mail app for Windows 10 is basically just an email reading application with limited features included. Email folder management is pretty limited, too.
- -

read more

- - 2015-08-11T14:07:00.000Z -
-
- -
-

WaterField Designs launches PERALTA, a new women’s line of bags

-
Popular San Francisco based bag and accessories maker WaterField Designs has recently created a new line of bags designed especially for women. The new line is called PERALTA and will start out by offering the Balani Backpack, the Etta accessory pouch and a leather key tether. The backpack which is made here in the USA […]
- Julie Strietelmeier - 2015-08-11T14:00:56.000Z -
-
- -
-

Hootsuite moves social media management toolkit to IBM Softlayer cloud

-
Social media management dashboard maker shifts App Directory to IBM cloud
- ComputerWeekly.com - 2015-08-11T13:46:29.000Z -
-
- -
-

Android Wear v1.3 Includes 'Device To Debug' Picker, Reveals Upcoming "Together" And Interactive Watch Faces, New Apps, And More [APK Teardown + Download]

-

banner

Google surprised us with the long, long, long-awaited Hangouts 4.0 release earlier today, but that wasn't the only update worth paying attention to – Android Wear v1.3 turned up in the later hours, as well. At first glance, the only new option appears to be a selector in settings for choosing between watches for hacking or programming purposes, but a teardown reveals some great new features we can expect to see in the next major firmware release to Android Wear.

Read More

Android Wear v1.3 Includes 'Device To Debug' Picker, Reveals Upcoming "Together" And Interactive Watch Faces, New Apps, And More [APK Teardown + Download] was written by the awesome team at Android Police.



- -
- Cody Toombs - 2015-08-11T13:30:00.000Z -
-
- -
-

Pushbullet Update Brings End-to-end Encryption

-
Pushbullet-640x401

Starting from version 16.5.4, Pushbullet now supports end-to-end encryption for its notification mirroring, universal copy-paste as well as its SMS features. To enable this, users need to manually add a password through the settings screen of pushbullet apps on desktop and mobile, labelled “End-to-end Encryption”.. . . READ ON »

- Aamir Siddiqui - 2015-08-11T13:29:39.000Z -
-
- -
-

Vessel Beta App Gains Chromecast Support In The Latest Version

-

2015-08-11 12.51.44To be honest, I'm still not sold on Vessel's business model, which posts original web video content a few days early to paying subscribers before it goes out to more general portals (usually YouTube). But the Android app seems more than serviceable even in its beta form, and the developers are adding features quickly. Case in point: the latest update adds Chromecast compatibility, which no video app should be without.

Read More

Vessel Beta App Gains Chromecast Support In The Latest Version was written by the awesome team at Android Police.



- -
- Michael Crider - 2015-08-11T13:22:00.000Z -
-
- -
-

House of Marley Liberate XLBT Bluetooth Over-Ear Headphones review

-
I consider myself an average person with an average budget for headphones (around $60 or less) and I’ve been fairly happy with my purchases. I’ve shied away from trying out more expensive ones in the stores because I haven’t been prepared to spend premium dollars on them and I didn’t want to spoil my blissful […]
- Kathleen Chapman - 2015-08-11T13:06:54.000Z -
-
- -
-

How To: Fix Stopped Windows Store Downloads in Windows 10

-
If you've been hampered by a problem with app updates in the Windows 10 app store, here's a fix to get the pending updates to start downloading.
- -

read more

- - 2015-08-11T13:03:00.000Z -
-
- -
-

Why Risk Lives With a Drone When You Can Rent an Ace Pilot?

-
Why Risk Lives With a Drone When You Can Rent an Ace Pilot?

Drone videos are in high demand, but inexperienced pilots are putting people in danger.

-

The post Why Risk Lives With a Drone When You Can Rent an Ace Pilot? appeared first on WIRED.

- Tim Moynihan - 2015-08-11T13:00:29.000Z -
-
- -
-

Pushbullet Now Supports End-To-End Encryption For Notification Mirroring, SMS, And Copy-Paste Sync

-

splash

You can't deny that Pushbullet is insanely useful, and it gets more so with each update. However, Pushbullet does see a lot of your data in plain text, and there's been growing demand for better security. As of today, Pushbullet supports end-to-end encryption for SMS, notification mirroring, and universal copy-paste.

In a recent conversation on Reddit, Pushbullet's lead developer dug into the issue with users. Pushbullet has always used https to secure connections, but the Pushbullet servers still see all your data in plain text.

Read More

Pushbullet Now Supports End-To-End Encryption For Notification Mirroring, SMS, And Copy-Paste Sync was written by the awesome team at Android Police.



- -
- Ryan Whitwam - 2015-08-11T13:00:10.000Z -
-
- -
-

FBI uncovers cyber insider trading gang

-
Nine suspects are expected to be charged in the US with insider trading based on corporate press releases stolen by hackers before they had been made public
- ComputerWeekly.com - 2015-08-11T12:30:33.000Z -
-
- -
-

Four more senior leaders announce departure from Government Digital Service

-
Four of GDS chief Mike Bracken's key lieutenants are following him out of the Whitehall door, but Bracken claims it is just part of a 'natural change'
- ComputerWeekly.com - 2015-08-11T12:30:13.000Z -
-
- -
-

Seagate Introduces New Nytro PCIe SSDs: XP6500 & XF/XM1440

-

After acquiring SSD controller designer SandForce, LSI took the quick route towards creating high-performance PCIe SSDs by putting multiple SandForce controllers and an LSI RAID controller on a single expansion card, branding the resulting product as the Nytro. This Nytro product line was transferred to Seagate along with the SandForce division in May 2014, and it's now getting both a refresh and a major expansion.

- -

The new Nytro XP6500 succeeds the Nytro XP6302 and offers improved write latency and improved write endurance. Write throughput suffers slightly, but the XP6302's original performance specifications were inflated by testing at 28% over-provisioning rather than the default of 17% that is implied by the listed capacities. Meanwhile the XP6500 4TB model is listed as optimized for 8kB rather than 4kB random accesses, so its IOPS numbers aren't directly comparable to the others.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Seagate Nytro XP6000 Series
DriveXP6500 4TBXP6500 1.5TBXP6302
Usable capacity 3.4TB1.3TB1.3TB, 1.75TB, 3.5TB
Interface PCIe 3.0 x8
Sequential read 4 GB/s
Sequential write 2.2 GB/s1.5 GB/s2.3 GB/s
Random read IOPS 275K (8KB)300K (4KB)296K (4KB)
Random write IOPS 85K (8KB)100K (4KB)148K (4KB)
Write latency 14µs33µs
Write endurance 20 PB8 PB6.6-11.7 PB
Required airflow 550 LFM300 LFM
- -

Peak power consumption isn't listed but is likely significantly increased over the XP6302's 39W, based on the increase in required airflow from 300LFM to 550LFM for the same operating temperature range. The Nytro XP6500 supports a supercapacitor bank to protect data in its large (2-4GB) DRAM cache. The XP6500 is available either as a full-height expansion card with built-in supercapacitors, or as a half-height card with an optional tethered supercapacitor module. Seagate has announced immediate availability of the Nytro XP6500.

- -

- -

Expanding the Nytro brand into new territory are the XF1440 and XM1440 NVMe drives, in 2.5" U.2 (SFF-8639) and M.2 22110 form factors respectively. They're split in to two tiers: “Endurance Optimized” (3 drive writes per day) and “Capacity Optimized” (0.3 DWPD).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Seagate Nytro XF1440
DriveEndurance OptimizedCapacity Optimized
Usable capacity 400 GB, 800 GB, 1600 GB480 GB, 960 GB, 1800 GB
Interface PCIe 3.0 x4 SFF-8639
Sequential read 2700 MB/s
Sequential write 600-1200 MB/s
Random read IOPS 200K
Random write IOPS 34K3K–7K
Write endurance 3 DWPD0.3 DWPD
Warranty5 years
Peak power12.5 W
Average read/write power9 W
- -

- -

Performance specifications for the Nytro XM1440 weren't available, and we aren't assuming that they will be the same as for the Nytro XF1440. The XF is listed as using eMLC (Enterprise MLC) but the XM is using MLC+, a term often used to refer to higher-binned consumer-grade MLC. Maximum power consumption is significantly lower for the XM, and the XM will be released later (early 2016, when the XF1440 will ship at the end of October), which suggests that there may also be controller differences.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Seagate Nytro XM1440
DriveEndurance OptimizedCapacity Optimized
Usable capacity 400 GB, 800 GB480 GB, 960 GB
Interface M.2 PCIe 3.0 x4
Write endurance 3 DWPD0.3 DWPD
Warranty5 years
Peak power8.25 W
Average read/write power7 W
-

- Billy Tallis - 2015-08-11T12:30:00.000Z -
-
- -
-

Goodbye Google, hello Alphabet

-
In what must be the most shocking tech news in recent history, Google announced it will no longer be known as Google…sort of. On Monday, Larry Page, Google CEO, announced he and Sergey Brin, Google Co-founder, will be launching a new company called Alphabet Inc. What exactly is the purpose of this new company? Well, […]
- Dennis Moore - 2015-08-11T12:00:45.000Z -
-
- -
-

StarTech.com 8-bay USB 3.0 / eSATA Removable Hard Drive Enclosure Review

-

Network Attached Storage (NAS) devices have become quite popular over the last five years or so, but Direct Attached Storage (DAS) units were the go-to devices for consumers looking to store large amounts of data before that. The interfaces for these DAS units have evolved from USB 2.0 and Firewire to eSATA and nowadays, USB 3.x and Thunderbolt. What sort of performance numbers and features can we expect in a modern multi-bay DAS unit? What are the use-cases enabled by them in the modern computing ecosystem? Our review of the StarTech.com S358BU33ERM 8-bay USB 3.0 / eSATA hard drive enclosure provides some answers.

- Ganesh T S - 2015-08-11T12:00:00.000Z -
-
- -
-

NVIDIA Announces Quadro M5000 & M4000 Video Cards, DesignWorks Software Suite

-

Back in March at GTC 2015, NVIDIA announced the first member and flagship of their Maxwell 2 generation of Quadro cards, the Quadro M6000. Packing a fully-enabled GM200 GPU and 12GB of RAM, M6000 signaled an interesting shift from NVIDIA on the high-end of Quadro, with the company shipping what amounted to a “pure” graphics card as opposed to a jack-of-all-trades type card as they typically do at the high-end.

- -

Meanwhile, although the M6000 was the first Maxwell 2 based Quadro card to launch, it was not the first Maxwell 2 GPU to launch. NVIDIA has launched GM204 and GM206 late last year and early this year respectively, and of course Maxwell 1 ended up in the Quadro K2200 and a couple of other cards. As a result we have been expecting NVIDIA to refresh the rest of the Quadro lineup with Maxwell 2 after the release of the M6000, and this week at SIGGRAPH NVIDIA is doing just that with the release of the Quadro M5000 and Quadro M4000.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NVIDIA Quadro Specification Comparison
 Quadro M5000Quadro M4000Quadro K5200Quadro K4200
CUDA Cores2048166423041344
Boost Clock~1050MHz~780MHz650MHz780MHz
Memory Clock6.6GHz GDDR56GHz GDDR56GHz GDDR55.4GHz GDDR5
Memory Bus Width256-bit256-bit256-bit256-bit
VRAM8GB8GB8GB4GB
FP641/321/321/241/24
TDP150W120W150W105W
GPUGM204?GM204GK110GK104
ArchitectureMaxwell 2Maxwell 2KeplerKepler
SizeDouble-SlotSingle-SlotDouble-SlotSingle-Slot
4Kp60 Displays Supported4422
- -

We’ll start things off with the Quadro M5000. While NVIDIA has not announced the GPU for these new products, we believe the M5000 to be based on GM204, given the CUDA core and memory bus configuration. By those standards M5000 would be a fully enabled GM204 card, featuring all 2048 CUDA cores and the full 256-bit memory bus, essentially making this the Quadro version of the GeForce GTX 980.

- -

Curiously, the M5000 features DRAM soft ECC support, allowing for error correction on the DRAM. Previous 5000-series Quadro cards have also included this feature, but at a GPU level NVIDIA typically reserves this feature for their highest-tier GPUs. With that said, as it’s software based and we’ve seen NVIDIA enable it in a Kepler-based GK104 product before (Tesla K10), for the moment we believe that they have gone ahead and enabled it for this GM204 product, rather than outfitting the card with GM200.

- -

- -

Paired up with the GM204 is 8GB of GDDR5 clocked at a slightly more conservative 6.6GHz. Based on these specifications it’s not clear whether NVIDIA is using 16 4Gbit chips or 8 8Gbit chips, as the latter are now available though still fairly rare (M6000 by comparison used 24 4Gbit chips). In any case this is the same amount of RAM as the previous Quadro K5200 shipped with, indicating that NVIDIA is targeting the same market segment as before.

- -

As for GPU clockspeeds, as is usually the case NVIDIA has not published specific clockspeeds, but in their press materials they have the card’s FP32 performance listed at 4.3 TFLOPs. This would put the maximum GPU clockspeeds at around 1.05GHz, though as this is a GPU boost product we don’t know the base clockspeeds at this time.

- -

NVIDIA has also published the power information for this card, and like its Kepler-based predecessor it’s a 150W card. A 150W TDP allows M5000 to more easily work in lower power workstations where only a single 6-pin PCIe power connection is available, and is actually a bit lower power than comparable desktop GeForce products. Though as a result we expect that shipping clockspeeds are below 1GHz.

- -

Meanwhile NVIDIA has typically gone with dual-slot blowers on their 150W Quadro cards, and M5000 will be no exception. The card is shipping with what appears to be a new blower and shroud design – and one I suspect is all plastic like the Quadro K5200’s – mimicking the original metal shroud of the M6000. At any rate this is a full size card, meaning it measures 10.5” long like NVIDIA’s other high-end cards.

- -

Finally, much like the M6000, the overall importance of a Maxwell release is two-fold for NVIDIA. First and foremost of course are the performance improvements from Maxwell, which achieves much better performance per CUDA core and much better energy efficiency than the preceding Kepler parts, so M5000 should achieve even better real-world performance than its already substantial on-paper specifications indicate. However the other significant benefit here is that the switch to Maxwell means that the Quadro cards gain Maxwell’s newer display controller and NVENC blocks, allowing the M5000 to drive four 4K displays – twice as many as K5200 – and real-time HEVC encoding.

- -

M4000

- -

Also launching today and below the M5000 is the M4000. This appears to be another GM204 design, forgoing some of GM204’s CUDA cores in exchange for lower costs, performance, and power consumption. Like the M5000 we don’t have the clockspeed information for the card, but we do know it features 1664 active CUDA cores, making it analogous to the GeForce GTX 970. Also like the M5000 this features 8GB of VRAM – twice as much as the K4200 – this time clocked at 6GHz, however without the soft ECC support of the higher-end Quadro cards.

- -

- -

Compared to the M5000 the TDP on the M4000 is down by 30W to 120W. The previous Quadro K4200 was a 105W card, so power consumption is up slightly, but in turn the M4000 features the Maxwell family improvements and more CUDA cores than the K4200. The card is rated for 2.6 TFLOPs of FP32 performance, which puts the maximum clockspeed at around 780MHz, so we expect that performance will be greatly improved over the K4200.

- -

Meanwhile like past Quadro 4000-series cards, the M4000 is a single slot design. To the best of our knowledge this is a new PCB design for NVIDIA, and taking advantage of the lower power requirements brings the length of the card down to 9.5”. In order to get everything down a single slot NVIDIA has done away with the DVI port – a first for the 4000 series – making M4000 a 4x DisplayPort design. As we mentioned with M5000, the Maxwel display controller improves 4K support to allow 4 such displays off of a single card, and this is a scenario NVIDIA is clearly looking to enable with the M4000.

- -

Finally, as is usually the case for NVIDIA, the company is not publishing any official prices for these cards, leaving pricing up to their partners and vendors. That said, at this point we expect pricing to be similar to the Quadro K5200 and K4200, which would put street prices on the cards at around $2000 and $1000 for the M5000 and M4000 respectively.

- -

NVIDIA Launches DesignWorks

- -

- -

Along with the release of their latest Quadro cards, NVIDIA is also announcing a new software suite at SIGGRAPH: DesignWorks. The latest Works project, DesignWorks, is partially a collection of new software and partially a branding exercise for the company. Following in the footsteps of GameWorks for game development, NVIDIA is collecting most of their tools and libraries for professional graphics development under the DesignWorks brand, and going forward will be releasing new tools under this brand as well.

- -

- -

Along with collecting previous disparate tools like Iray and OptiX, the announcement of DesignWorks also marks the introduction of some new tools for NVIDIA. Of particular note here is NVIDIA vMaterials, a library of digitized, real world materials for use in applications that can interface with NVIDIA’s Material Design Language, MDL. Also premiering with DesignWorks is a version of NVIDIA’s VR technology optimized specifically for professional use, aptly named DesignWorks VR.

- -

Meanwhile NVIDIA’s technology focus for the DesignWorks launch is on Physically Based Rendering (PBR), a realistic rendering technique the company has been promoting for much of the last year now. PBR is very GPU intensive – always a plus for someone in the business of selling GPUs – but in turn is designed to offer more photo-realistic results (but not necessarily more accurate results) by focusing on simulating the properties of the materials of the surrounding world itself. This focus on PBR goes hand-in-hand with the NVIDIA vMaterials announcement in particular, as a big part of enabling PBR is creating the material representations themselves.

- -

- -

Finally, as part of their PBR push over the past year, NVIDIA has been showing off various images under the Real or Rendered tagline. For SIGGRAPH the company has put together an admittedly impressive render of a DeWalt drill, which is close to the real thing, though not identical to it.

- -

-

- Ryan Smith - 2015-08-11T12:00:00.000Z -
-
- -
-

Hotel trade body offers members 100GbE networking capability

-
Hospitality sector trade association Hospa partners with network provider Exponential-e to enhance connectivity for its members
- ComputerWeekly.com - 2015-08-11T11:45:04.000Z -
-
- -
-

Use technology to improve NHS, say patients

-
Almost 70% of the population believes technology should be used in the NHS to improve patient outcomes and efficiency, says Trustmarque
- ComputerWeekly.com - 2015-08-11T11:15:51.000Z -
-
- -
-

HTC’s Epic Tailspin Isn’t Even Its Fault

-
HTC’s Epic Tailspin Isn’t Even Its Fault

Sometimes, the most creative ideas fall the hardest.

-

The post HTC’s Epic Tailspin Isn’t Even Its Fault appeared first on WIRED.

- Brian Barrett - 2015-08-11T11:00:53.000Z -
-
- -
-

Stepping Into This Shower Feels Like Hugging a Warm Cloud

-
Stepping Into This Shower Feels Like Hugging a Warm Cloud

The hard part is asking people to strip down and give their shower a test run.

-

The post Stepping Into This Shower Feels Like Hugging a Warm Cloud appeared first on WIRED.

- Molly McHugh - 2015-08-11T11:00:47.000Z -
-
- -
-

McLaren’s New Coupe Is Too Fancy for the Word ‘Purple’

-
McLaren’s New Coupe Is Too Fancy for the Word ‘Purple’

McLaren's goal is to show off some of the bespoke options it can offer to wealthy buyers.

-

The post McLaren’s New Coupe Is Too Fancy for the Word ‘Purple’ appeared first on WIRED.

- Alex Davies - 2015-08-11T11:00:34.000Z -
-
- -
-

British Gas Smart Metering consolidates data with Qlik on Hadoop

-
British Gas Smart Metering has used QlikView dashboards on Hadoop data lake to gain single view of its business
- ComputerWeekly.com - 2015-08-11T10:57:34.000Z -
-
- -
-

Asean organizations braced for cyber attack

-
As an emerging economic power bloc, Asean is bracing itself for an influx of cyber crimes as hackers look for lucrative targets
- Sophia Yao - 2015-08-11T10:46:00.000Z -
-
- -
-

Sale, spin-off or stay put? What should EMC do next?

-
With reports suggesting some major changes may be afoot at EMC, Clive Longbottom looks at the reasons why
- ComputerWeekly.com - 2015-08-11T10:32:52.000Z -
-
- -
-

Testing a four-million-user disaster recovery plan

-
Preparing broadcaster MTGx's websites for the Winter Olympics won Load Impact the 2015 Computer Weekly European Private Sector Award
- ComputerWeekly.com - 2015-08-11T10:00:57.000Z -
-
- -
-

Here’s How to Use Facebook’s Mystifying Privacy Settings

-
Here’s How to Use Facebook’s Mystifying Privacy Settings

It takes a little bit of work to lock your data down. But if you'd like to keep Facebook private and for-your-eyes-only, you still can.

-

The post Here’s How to Use Facebook’s Mystifying Privacy Settings appeared first on WIRED.

- Gordon Gottsegen - 2015-08-11T09:55:36.000Z -
-
- -
-

Australian businesses under cyber attack

-
What are the cyber security risks facing businesses in Australia and New Zealand and how are organisations addressing them?
- Alex Cruickshank - 2015-08-11T08:55:34.000Z -
-
- -
-

British Gas trials app-based smart-meter display

-
My energy live app will display real-time energy use on a smartphone, says British Gas
- ComputerWeekly.com - 2015-08-11T08:44:11.000Z -
-
- -
-

Google now an Alphabet company

-
Alphabet is a new parent company that includes a “slimmed down” Google alongside companies not related to core internet products
- ComputerWeekly.com - 2015-08-11T08:34:38.000Z -
-
- -
-

Case study: Open University uses Microsoft Azure to create course content clearance hub

-
The Open University recently scooped the award for Best Cloud Project at the CW European User Awards, and here's why
- ComputerWeekly.com - 2015-08-11T08:30:32.000Z -
-
- -
-

Toshiba Announces Three New NVMe SSD Families

-

On the eve of Flash Memory Summit (August 11-13), Toshiba has announced a full range of NVMe-based PCIe SSDs using Toshiba controllers and Toshiba MLC flash.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Toshiba NVMe Drive Families
Drive SeriesPX04PXG3BG1
Form Factors and InterfacePCIe 3.0 x4 HHHL /
- 2.5” U.2
PCIe 3.1 x4 M.2 2280 / 2.5” SATA ExpressM.2 2230 /
- 16mm*20mm soldered module "M.2 1620"
Capacities800 GB, 1600 GB, 3200 GBUp to 1024GBUp to 256 GB
QSBC Error CorrectionYesYesNo
TCG Pyrite SecurityNoYesYes
Sequential Read3100 MB/s??
Sequential Write2350 MB/s??
4kB Random Read IOPS660k??
4kB Random Write IOPS185k??
- -

For the enterprise market, the PX04P series complements the SAS-based PX04S drives announced last week. The PX04P is available as a 2.5” drive with a U.2 (SFF-8639) connector, or as a PCIe expansion card. In either case, the drive supports four lanes of PCIe 3.0 and can make good use of that bandwidth to offer up to 3.1 GB/s sequential read speeds. With an endurance rating of 10 drive writes per day it is intended for relatively write-heavy workloads.

- -

- -

For the high-performance client market, the XG3 is available in the M.2 2280 form factor using four lanes of PCIe 3.1, or as a 2.5” drive using the two-lane SATA Express connector. If these drives make it in to the retail channel, it means that consumers whose motherboards have a SATA Express connector but no M.2 slot will finally have an easy way to get in on the PCIe storage revolution.

- -

For tablets and ultra-thin laptops, the BG1 is optimized for low power in very small packages. It comes as either an M.2 2230 card or a soldered-down module measuring 16mm by 20mm. The BG1's maximum capacity is only 256 GB, and given the power and size constraints it is probably not using a 4-lane PCIe connection.

- -

The two client drive families implement support for the Trusted Computing Group Pyrite standard, a subset of TCG Opal that includes features necessary for things like secure boot but does not include encryption.

-

- Billy Tallis - 2015-08-11T06:00:00.000Z -
-
- -
-

Lenovo Launches New P50 And P70 Mobile Workstations With First Mobile Xeon Chips

-

Today at the SIGGRAPH 2015 Conference and Exhibition, Lenovo unveiled some new mobile workstations. The new ThinkPad P series are aimed at high-end professionals who need a lot of compute on the go. There are two models, with the P50 being a 15.6-inch version, which is a follow-on to the W541. The larger P70 features a 17.3-inch display. Both can pack some serious specifications under the hood, starting with the processor.

- -

- -

Both models will feature a new processor from Intel, which is going to be the first official mobile version of their Xeon line. Intel has not released much information yet, but the Intel Xeon E3-1500M v5 is going to be powering these workstations from Lenovo. While we don’t have exact frequencies yet, the v5 version is going to be based on the just released Skylake architecture, which brings a lot of new technology to the plate. Lenovo will offer the new P series with up to 64 GB of DDR4 memory, arranged in 4 SODIMM slots. One of the reasons to use Xeon is that it supports ECC memory, and these workstations leverage that for the workloads they will be expected to run Also part of the new Xeon will be Thunderbolt 3, and both models have this connectivity. We're not sure yet if Thunderbolt is built into the Xeons, or if something like the Aipine Ridge as an IO controller for this.

- -

On the GPU side, Lenovo has included a Quadro card, however the exact model is not known yet.

- -

There is also up to 1 TB of PCIe SSD storage available, and up to a 2 TB hard drive. In addition to the Thunderbolt, there will also be HDMI 1.4, mini DisplayPort 1.2, ExpressCard, SDXC, and of course what workstation would not have Gigabit Ethernet, so the P Series has this as well.

- -

Wireless is a new card from Intel as well, with the Intel 8260 card which is an 802.11ac model, and Lenovo will be offering it with Bluetooth 4.1 and vPro as well. For those that need connectivity on the go, Lenovo is offering a Sierra EM7445 LTE-A option as well.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Lenovo P Series Mobile Workstations
 P50P70
CPUIntel Xeon E3 1500M v5
- Quad-core Skylake
- ~47W TDP
GPUNVIDIA Quadro
- Model number unknown
MemoryUp to 64 GB DDR4-2133 ECC
StorageUp to 1TB PCIe SSD
- Up to 2TB HDD
Display15.6" 1920x1080 IPS w/optional touch
- Optional 3840x2160 IPS
- X-Rite Pantone Color Correction
17.3" 1920x1080 IPS w/optional touch
- Optional 3840x2160 IPS
- X-Rite Pantone Color Correction
PortsUSB 3.0 x 4
- Mini DP 1.2
- HDMI 1.4
- Thunderbolt 3
- Docking Connector
- Smart Card Reader
- ExpressCard
- SDXC
- Headset
NetworkingIntel 8260 Wireless-AC 802.11ac WiFi
- Bluetooth 4.11
- Optional vPro
- Gigabit Ethernet
- Sierra EM7445 4G LTE-A
DimensionsH: 0.96-1.02" (24.5-25.9 mm)
- W: 14.86" (377.4 mm)
- D: 9.93" (252.3 mm)
H: 1.17-1.2" (29.9-31.5 mm)
- W: 16.4" (416 mm)
- D: 10.8" (275.5 mm)
WeightStarting at 5.6 lbs (2.5kg)Starting at 7.6 lbs (3.4 kg)
Battery Life4 Cell 66 Whr
- Optional 6 Cell 90 Whr
8 Cell 96 WHr
Price$1599+$1999+
- -

Other than the larger display, the P70 can also be had with a DVD-RW drive, but hopefully but the time it launches they will at least offer Blu-ray as an option.

- -

Speaking of the displays, Lenovo has packed some pretty impressive sounding displays into both models. The P series will offer a 1920x1080p as the base, with optional touch, and there is also a UHD 3840x2160 IPS offering as well. All of the panels are IPS models, and Lenovo has turned to X-Rite to offer Pantone color calibration out of the box, and over the lifetime of the device.

- -

- -

The P series can be had with a good choice of operating systems too, from Windows 10 Pro, Windows 8.1 Pro, or downgrade rights to Windows 7 Professional. If you need Linux for your workstation, they will also be offering Ubuntu and RHEL.

- -

- -

These MIL-SPEC tested and ISV Certified professional workstations will be available in Q4 2015 with the P50 starting at $1599, and the P70 starting at $1999.

- -

Source: Lenovo

-

- Brett Howse - 2015-08-11T03:00:00.000Z -
-
- -
-

A T-Mobile Version Of Samsung's 8-Inch Galaxy Tab A Has Popped Up On The Carrier's Website

-

t-mo

Way back in April Samsung officially announced the Galaxy Tab A, a new tablet line with a 4:3 screen and metal body that screams "iPad alternative" in every language. So far we haven't heard of any carriers taking a bite, but Samsung's tablets are so ubiquitous that it was more or less inevitable. T-Mobile hasn't officially announced a Galaxy Tab A for the "Uncarrier," but the company's support site now has a listing for a branded version.

Read More

A T-Mobile Version Of Samsung's 8-Inch Galaxy Tab A Has Popped Up On The Carrier's Website was written by the awesome team at Android Police.



- -
- Michael Crider - 2015-08-11T00:43:00.000Z -
-
- -
-

[Update: Nexus 6 LYZ28J For T-Mobile] Google Posts Stagefright-Fixing LMY48I Factory Images For Seven Nexus Devices

-

2015-08-05 16.40.30

Google announced the Stagefright vulnerability fix would start rolling out as an OTA today, but it has also added new factory images to the Nexus developer pages. That means bootloader unlocked Nexus phones and tablets can flash the new build immediately, even if your device is running some wacky ROM.

Read More

[Update: Nexus 6 LYZ28J For T-Mobile] Google Posts Stagefright-Fixing LMY48I Factory Images For Seven Nexus Devices was written by the awesome team at Android Police.



- -
- Ryan Whitwam - 2015-08-11T00:15:04.000Z -
-
- -
-

Qualcomm Launches Snapdragon 616, 412, and 212

-

Today, Qualcomm launched a set of new SoCs, namely the Snapdragon 616, 412, and 212. These are updates to the Snapdragon 615, 410, and 210 respectively.

- -

If you were to guess that these are relatively minor updates, you’d be right. First off, the Snapdragon 616 leaves the 615 mostly unchanged, with the top clockspeed of the little cluster jumping from 1 GHz to 1.2 GHz. However it should be noted that there are iterations of the 615 with a 1.11 GHz little cluster clock as well.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Qualcomm's SoC Refresh Lineup
 Snapdragon 616Snapdragon 412Snapdragon 212
Manufacturing Process28nm LP28nm LP28nm LP
CPU4 x ARM Cortex A53 @ 1.7GHz
- 4x ARM Cortex A53 @ 1.2GHz
4 x ARM Cortex A53 @ 1.4GHz4 x ARM Cortex A7 @ 1.3GHz
ISA32/64-bit ARMv8-A32/64-bit ARMv8-A32-bit ARMv7
GPUAdreno 405Adreno 306Adreno 304
H.265 DecodeYes (1080p)Yes (720p)Yes (1080p)
Memory Interface32-bit LPDDR3-80032-bit LPDDR2/3-60032-bit LPDDR2/3-533
Integrated Modem9x25 core, LTE Category 4, DC-HSPA+, DS-DA9x25 core, LTE Category 4, DC-HSPA+, DS-DA9x25 core, LTE Category 4, DC-HSPA+, DS-DA
Integrated WiFiQualcomm VIVE 802.11ac 1-stream802.11n 1-stream802.11n 1-stream
eMMC Interface4.514.514.5
- -

Meanwhile the Snapdragon 410 to 412 upgrade is a bit bigger, with the single cluster of A53s going from 1.2 GHz to 1.4 GHz and the memory interface going from a max of 533 MHz to 600 MHz. The Snapdragon 210 to 212 upgrade on the other hand is similar to the 615 to 616 upgrade, with the single cluster of A7s going from 1.1 to 1.3 GHz and are otherwise unchanged.

- -

Overall it’s a bit unfortunate that none of these SoCs have made the move from a traditional polySiON gate oxide to a high-k metal gate process yet. However I suspect that in these lower tiers even the cost of HKMG would dramatically affect competitiveness and price.

- -

Finally, at this point it's unclear when these new variants will begin shipping, but it’s likely that this part is sampling now. Which means that devices with these new SoCs should be available before the end of the year.

-

- Joshua Ho - 2015-08-10T22:00:00.000Z -
-
- -
-

Short Takes Daily: What went on in the world of Microsoft on Monday, August 10, 2015

-
- -
Windows RT users get left behind, Windows 10 Mobile hopefuls wait for bugs to be zapped and Audible gets an upgrade.
- -

read more

- - 2015-08-10T21:39:00.000Z -
-
- -
-

Google Reorganizes Into Alphabet: Sundar Pichai is CEO of Google

-

Today, Google announced that they will undergo reorganization to better represent the growth that the company has seen in the past few years. As a result, Google the company will be now branded as Alphabet.

- -

The big news here is that Google the internet services company will become one subsidiary of the larger Alphabet company - and said subsidiary still operating under the name Google - with the goal of better seperating Google's core business from what are now Alphabet's more experimental, far flung ventures. Consequently this change will see current parts of Google like X labs, Calico, Life Sciences, and other ventures shifted over to Alphabet. Meanwhile web services and software like Android, Maps, and Gmail will remain under the Google brand.

- -

Organizationally, Larry Page will remain CEO of this reorganized company, and Sergey Brin will be President. Sundar Pichai will also be CEO of the new Google. Google stock is also immediately being converted over to Alphabet stock, and going forward Alphabet will be the reporting company, however Google-the-subsidiary results will be broken down and reported as part of Alphabet's results.

- -

Ultimately it remains to be seen what effects this will have on the Google that we’ve known for the past few years. However given that the management structure has remained relatively constant in this move I suspect that business will continue on as usual.

-

- Joshua Ho - 2015-08-10T21:25:00.000Z -
-
- -
-

The State of Windows 10 Mobile

-
Where exactly do we stand with the progress of Windows 10 Mobile now that its desktop companion has already been released?
- -

read more

- - 2015-08-10T19:52:00.000Z -
-
- -
-

How To: Reinstall DisplayLink Drivers for Windows 10

-
If you need to reinstall your DisplayLink video drivers due to issues with Windows 10, here's a rundown of the easiest way to do it.
- -

read more

- - 2015-08-10T19:29:00.000Z -
-
- -
-

4 New Apps You Should Be Using

-
4 New Apps You Should Be Using

Download unless you hate fun.

-

The post 4 New Apps You Should Be Using appeared first on WIRED.

- Molly McHugh - 2015-08-10T19:10:50.000Z -
-
- -
-

OpenGL @ SIGGRAPH 2015: OpenGL ES 3.2 & OpenGL Extensions Announced

-

Kicking off this week in Los Angeles is SIGGRAPH 2015, the computer graphics industry’s annual professional conference. As the biggest graphics event of the year this show has become the Khronos Group’s favorite venue for delivering news about the state and development of OpenGL, and this year’s show is no exception. This week will see Khronos delivering news on both OpenGL and OpenGL ES, along with the formation of the OpenGL SC 2.0 working group.

- -

OpenGL ES 3.2

- -

Starting things off, we have the announcement of OpenGL ES 3.2. The latest version of OpenGL’s embedded variant is receiving a new revision this week, bringing the API up to version 3.2.

- -

- -

With OpenGL ES 3.2, Khronos will officially be rolling the feature set of the Android Extension Pack into the core API. Until now these features have been available as optional extensions – which Google conveniently rolled into the AEP for Android developers – as not all original GPUs capable of supporting OpenGL ES 3.1 could also support the AEP, preventing those features from being rolled into OpenGL ES core.

- -

Via these features, OpenGL ES 3.2 will bring support for tessellation, geometry shaders, compute shaders, and ASTC texture compression in to the core OpenGL ES standard. These are major features already found in desktop GPUs for some number of years now, and these days are found in all of the major mobile GPUs as well. Of particular interest here, this means that ASTC is finally part of the OpenGL ES core standard, and while it will take some time to filter out to new OSes and devices, this finally solves the problem with the lack of a standard texture compression format in the mobile space.

- -

Meanwhile, as Khronos likes to note in their announcement, the inclusion of these features brings mobile GPUs much closer to parity with their desktop counterparts. At this point there are very few major OpenGL 4.x class (DirectX 11) features not accounted for in mobile GPUs in some form, so the gap between mobile and desktop has been further closed. And of course this means developers can push the envelope even harder on certain classes of graphical effects – especially geometry and compute-based physics simulations – though on a smaller scale more fitting of mobile hardware.

- -

As far as OS support goes, Khronos and Google are also announcing today that OpenGL ES 3.2 will be adopted by a future version of Android – presumably 2016’s Android release – at which point OpenGL ES 3.2 will have effectively supplanted the AEP. Meanwhile we haven’t heard anything from the Apple camp about OpenGL ES in some time. iOS never received OpenGL ES 3.1 support, and with Apple gung-ho on Metal there’s no immediate reason to believe this will change with OpenGL ES 3.2.

- -

OpenGL SC 2.0

- -

Along with the release of OpenGL ES 3.2, Khronos is also announcing that they are forming a working group for OpenGL SC 2.0, which will be based on OpenGL ES 3.

- -

- -

OpenGL SC is a little-known subset of OpenGL ES that is focused on what Khronos and its members call “safety critical” systems, such as automotive and avionics systems. OpenGL SC in turn is essentially a trimmed down version of OpenGL ES that removes some of OpenGL’s flexibility in order to allow easier driver validation and ultimately more reliable operation than what is accepted for OpenGL ES.

- -

OpenGL SC was originally created in 2005 and based off of Open GL ES 1.0, the last fixed function version of OpenGL ES. With even time-tested hardware now well outstripping the capabilities of OpenGL SC 1.0, Khronos is forming a new working group to develop OpenGL SC 2.0. 2.0 in turn will be taking OpenGL GL ES 3.x and stripping it down in a similar manner as the original specification in order to produce a pared down version of the API that is more up to date. Khronos is looking to release OpenGL ES 2.0 in 2016.

- -

Desktop OpenGL: No New Version, But New Extensions

- -

Finally, on the desktop OpenGL front, Khronos will not be announcing a new version of OpenGL this year, making this the first SIGGRAPH in several years where Khronos doesn’t update their venerable graphics API. Citing that OpenGL has largely caught up with desktop hardware as of OpenGL 4.5 – and with attention no doubt split by Vulkan – the consortium is instead going to release several new extensions to unlock new features. These extensions represent features that are expected to be useful for developers and worth having under Khronos control, but are not universally supported by all desktop hardware, making their inclusion into an OpenGL core standard a thorny issue.

- -

- -

Of particular interest on these extensions, one of the extensions will add support for multi-threaded shader compilation in OpenGL, with the goal of cutting down on loading times on shader-heavy workloads. Improved 64-bit integer support will also be coming to OpenGL as part of this extension set; 64-bit integers are still fairly rare in graphics workloads, but with many GPUs now supporting them, there are times where the extra precision is useful. And last but not least of course, as has been the case for the last few iterations of OpenGL, there will also be extensions to enable full OpenGL ES 3.2 interoperability, primarily to support developers in creating OpenGL ES applications.

- -

Though it is interesting to note that some of the latest GPU features as exposed by Direct3D feature level 12_1 aren’t included in the extension sets, such as conservative rasterization. Right now a lot of resources are going into developing Vulkan, and while Khronos is committed to continuing to develop OpenGL separate from Vulkan, it may be that more extensive feature additions for OpenGL will have to wait until after Vulkan is done, and/or after all three major desktop vendors support these latest features.

-

- Ryan Smith - 2015-08-10T18:50:00.000Z -
-
- -
-

FEBO is an engraver that uses the sunlight to power your creativity

-
I remember using a magnifying glass as a kid to burn leaves or bugs or my brothers leg, but never did it occur to me that it could be used for art. FEBO is a crowdfunded project that has far exceeded its goal thus far.  The unique glass on top will harness the suns rays […]
- Leslie Hosmer - 2015-08-10T18:37:16.000Z -
-
- -
-

Autoglass moves to cloud-based IT infrastructure

-
Autoglass has signed a 10-year outsourcing deal with US supplier CSC that will see its IT infrastructure move into the cloud
- ComputerWeekly.com - 2015-08-10T16:15:05.000Z -
-
- -
-

Google Redesigns Hangouts for Android With Version 4.0

-

Today Google shipped a major update to their Hangouts application for Android. Ever since Hangouts for iOS was updated to 4.0 a little over a month ago Android users have been waiting for the update to make its way to Android. This update has been in the pipeline for quite some time, and it comes with a comprehensive redesign that brings the Hangouts app in line with Google's Material Design visual guidelines.

- -

Visually, Hangouts 4.0 for Android is very similar to what shipped on iOS a little while ago. This isn't surprising, as Google's applications for iOS use their Material Design principles heavily. There are a few small differences, such as the spacing of the quick access buttons underneath the message input field, and the calling controls not being hidden behind the three dot overflow menu, but the overall appearance is the same. The appearance is definitely a departure from the previous design which had a strange dual list design which was separated into two tabs.

- -

On top of the redesign, Google claims that Hangouts 4.0 has noticeable improvements to performance, reliability, and battery consumption. I personally have never had many issues with Hangouts on Android, but any improvements to performance are always welcomed.

- -

Hangouts 4.0 is currently rolling out in stages, and users can expect to receive the update in the near future if they haven't already.

-

- Brandon Chester - 2015-08-10T15:15:00.000Z -
-
- -
-

How to review your Windows Store app download history on Windows 10

-
My Library in the Windows Store on the recently released Windows 10 is a central spot to find all the apps you have ever purchased and/or downloaded to your Windows devices.
- -

read more

- - 2015-08-10T15:10:00.000Z -
-
- -
-

Adata PV110 power bank review

-
It’s been a running joke with my friends that I am always going on a trip. My latest trip took me cross country as a passenger in a car, where my phone was very much needed for GPS, music, and entertainment. Most the time, my phone dies with my constant usage on trips, so I […]
- Ryan Chapman - 2015-08-10T14:00:29.000Z -
-
- -
-

Audible Gets a Windows 10 Makeover

-
- -

read more

- - 2015-08-10T13:55:00.000Z -
-
- -
-

Vulkan Status Update: Will Use Feature Sets, Android Support Incoming

-

Along with updates on OpenGL, Khronos is also offering a status update on the development of Vulkan at this year’s SIGGRAPH show. Khronos’s next-generation low-level API was announced last year, with further development taking off this year when it was announced at the API would be absorbing Mantle 1.0 and would operate under its current fiery name. The API is still in development, but Khronos has a few new pieces of information to share on the progress of development.

- -

Vulkan Feature Sets

- -

First and foremost, there has been a bit of speculation over how Vulkan would manage being a low-level API for both mobile and desktops, and Khronos is finally answering those questions. In the OpenGL ecosystem, new features would be exposed as optional extensions, and then standardized through core releases (e.g. OpenGL ES 3.2). Due to the factors that resulted in the creation of OpenGL ES, this was never a huge problem for either branch of OpenGL since each could be scoped as appropriate and integrated separately. However with Vulkan there is now just one API, and such a coarse approach would imply limiting Vulkan to just the features mobile GPUs could support, or making even more extensive use of extensions.

- -

- -

To that end, today Khronos is announcing that Vulkan will support defined feature sets in order to help simplify application development and to more readily support mobile and desktop hardware under the same API. Feature sets, as implied by the name, will be groupings of features that will be advertised under a single feature set name, with the idea being that developers will build their programs against a handful of feature sets instead of a massive combination of individual extensions or capability bits (though developers can still use individual features if they’d like). Feature sets are nothing new to desktop graphics, with Microsoft’s DirectX standard having supported them since DirectX 11 in 2009.

- -

While Khronos is announcing that Vulkan will support feature sets, they are not announcing the individual feature sets, and for good reason. In traditional Khronos consortium fashion, Khronos is going to leave the feature set definitions up to the platform holder rather than define those sets themselves. This means that it will typically be the OS developer defining the feature sets, as will be the case on Android. However because Khronos is leaving this up to the platform holder, for holders who opt not to define feature sets for their Vulkan-enabled platforms, Khronos will step in and define those feature sets. In other words platform holders get first dibs, but either way someone will take on the task of defining the feature sets.

- -

Practically speaking, this means that while Android’s feature set will be defined by Google and one can expect SteamOS’s to be defined by Valve, Windows’ feature set will be defined by Khronos. Microsoft is a member of the Khronos consortium and could define it, however Microsoft has taken a hands-off approach on Khronos’s graphics APIs in recent years – presumably in favor of focusing on DirectX – so we’re not expecting to see Microsoft make those definitions. Feature definitions have always been a weak point of the Khronos consortium structure, so giving platform holders the right of first refusal will allow holders such as Google to break the deadlock of the consortium and dictate what features will be supported on Android. Otherwise Khronos will be able to get the job done, though one would expect not without the traditional politics of the consortium.

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Vulkan Feature Set Definitions
PlatformExpected To Be Defined By
AndroidPlatform Holder - Google
SteamOSPlatform Holder - Valve?
LinuxKhronos?
WindowsKhronos (Platform holder Microsoft is anticipated to decline)
- -

Android Support

- -

Speaking of Android, along with announcing their support for OpenGL ES 3.2 today, Google is also announcing that they will be supporting Vulkan in a future release of Android. As with OpenGL ES 3.2, no specific timeline or version of Android is mentioned, though it’s a safe bet that it will be the 2016 release. Android has traditionally heavily relied on OpenGL ES, and with Google sewing further ties with Khronos with the Android Extension Pack, it’s not surprising that Android will include support for Vulkan in order to bring low-level graphics programming to the ecosystem’s developers.

- -

- -

Apple, for what it’s worth, has been absent from the Khronos announcements. As the company is pushing Metal on both mobile and desktop, it looks unlikely that they will be adopting Vulkan any time soon. In which case Vulkan wouldn’t quite match OpenGL ES 3.0’s universal reach due to Apple’s reliance on proprietary APIs.

- -

Vulkan Conformance Tests Will Be Open Source

- -

Meanwhile on the testing and validation front, Khronos is announcing that they are teaming up with Google and the Android Open Source Project to release the Vulkan conformance tests as as open source tests. The tests themselves are being developed by Khronos members and contractors, with the Khronos/ASOP connection coming in to provide the frameworks. The tests themselves are portable to other platforms – Khronos made this point very clear in our briefing – but partnering up with Google helps Khronos get the tests out there sooner and to fulfil their open source goals.

- -

- -

ETA: Late 2015

- -

Finally, Khronos is also offering a bit more guidance on when to expect the first revision of Vulkan. Khronos’s goal for the specification is to release it by the end of the year, which means they should be wrapping up development of the specification soon. Meanwhile driver/runtime development has been occurring concurrently with the development of the specification, which means that the first drivers will be ready at the same time. Khronos does require that there are working implementations before a specification is released to production, so with any luck Vulkan will be ready as a development target and for early end-user testing by the end of 2015.

- -

- -

Update: And speaking of Vulkan's ETA, there are multiple Vulkan demos on the SIGGRAPH showfloor, demonstrating the API and the current status of vendor implementations. First out of the gate is Imagination, showing off a demo running on Android.

- -

-

- Ryan Smith - 2015-08-10T13:01:00.000Z -
-
- -
-

USB multimeters are an essential tool for every gadget owner

-
Have you ever wondered why your cell phone is charging so slowly? Could it be an ill-suited wall charger, a bad mico-USB/lightning cable, or does your phone’s battery need replacing? Maybe you’ve wondered if there are truly any differences between different brands of micro-USB cables or how efficient your 10,000 mAh external battery charger is […]
- Kathleen Chapman - 2015-08-10T13:00:54.000Z -
-
- -
-

ASRock Rack C2750D4I and U-NAS NSC-800: A DIY File Server

-

Small businesses and power users often need the flexibility offered by a file server when compared to a dedicated NAS. This is where storage servers based on Microsoft's Windows Server offerings and systems based on Red Hat or Ubuntu Linux distributions come into play. These servers can be bought as an appliance or assembled in a do-it-yourself (DIY) fashion. Today, we will be looking at the latter approach using as ASRock Rack C2750D4I Intel Avoton mITX motherboard in a 8-bay U-NAS NSC-800 chassis.

- Ganesh T S - 2015-08-10T12:45:00.000Z -
-
- -
-

Keep your phone charged and your path lit with Cydekick

-
If you’re cyclist and a gadget geek, I’ve found the perfect Kickstarter project for you. Cydekick is a generator you attach to your bike that allows you to power a high intensity LED headlight. Additionally, you can purchase a USB hub allowing you to charge a phone, GPS, or action camera. It works using electromagnetic […]
- Dennis Moore - 2015-08-10T12:00:04.000Z -
-
- -
-

Windows RT will get some elements of Windows 10

-
Microsoft's current plans do not include a full Windows 10 upgrade for Windows RT based systems but they will receive a couple of the more visual aspects of the recently released OS from Microsoft.
- -

read more

- - 2015-08-10T11:27:00.000Z -
-
- -
-

Skylake CPU Package: Mini-Analysis

-

As a short side piece from our in depth review on Intel's 6th Generation Core processors, codename Skylake, the well-known overclocker Splave has posted some very interesting images on the processor itself. We confirmed we are free to use the pictures below from him.

- -


-Image from Splave

- -

First up is an image of the Skylake i7 silicon die on package. With our trusty interpolation measuring skills, the die area for the GT2 enabled quad core system comes out at 9.05 mm by 13.52 mm, or 122.4 square mm. Let's put this into perspective with other dies:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CPU Specification Comparison
CPUProcess
- Node
CoresGPUTransistor
- Count
- (Schematic)
Die Size
Intel Skylake GT2 4C14nm4GT2?122.4mm2
Intel Broadwell-H GT3e 4C14nm4GT3e??
Intel Haswell-E 8C22nm8N/A2.6B356mm2
Intel Haswell GT2 4C22nm4GT21.4B177mm2
Intel Haswell ULT GT3 2C22nm2GT31.3B181mm2
Intel Ivy Bridge-E 6C22nm6N/A1.86B257mm2
Intel Ivy Bridge 4C22nm4GT21.2B160mm2
Intel Sandy Bridge-E 6C32nm6N/A2.27B435mm2
Intel Sandy Bridge 4C32nm4GT2995M216mm2
Intel Lynnfield 4C45nm4N/A774M296mm2
AMD Trinity 4C32nm47660D1.303B246mm2
AMD Vishera 8C32nm8N/A1.2B315mm2
- -

- -

This makes Skylake the smallest die size for a quad core desktop processor from Intel we have seen, and that is including the integrated graphics in that calcualtion. Depending on the exact architectural details, previously in Haswell the die area was a near even split for cores and graphics after the L3 cache and IO functions (PCIe, Memory, DMI) were removed. 

- -

We won't know exact transistor numbers until they are disclosed at Intel's Developer Forum in mid-August, as well as a false color image die shot to show how much die area the main parts of the architecture are using. Although given the similarity to Haswell in terms of feature set (it seems to be similar with a few minor additions such as fixed function units, slightly different libraries, dual memory channels, DMI 3.0, etc.), if we take the number of transistors that GT2 Haswell had (1.4 billion) and put them in the die area we measure from the image, this comes out to a 11.4 million transistors per mm2.

- -

Die size aside, Skylake also has a substantially thinner package than Devil's Canyon:

- -


-Image from Splave

- -


-Image from PCWatch

- -

According to PCWatch, the package thickness of the Core i7-4770K is 1.1mm, compared to 0.8mm for Skylake. This is a direct result of using fewer PCB layers, and here we count five for Skylake and eight for Haswell.

- -

There could be several reasons for this. The removal of the fully integrated voltage regulator (FIVR) might reduce the number of PCB layers for power planes. The nature of the 14nm die might facilitate a thinner package as well. The cynical answer is that it is used to drive down cost. In the motherboard industry, a PCB with more layers is substantially more expensive but simplifies design when there are more features - there's also a side argument if more layers or fewer layers is better for overclocking. If we transplant this thinking to the processor, it becomes a balance of cost vs. complexity. Either way, the retail price of the processor is still relatively consistent with the previous iterations. Another thought to add to the mix would be if Intel has plans in the works to launch higher end processors based on Skylake (Kaby Lake?) in the future. The slight change in Intel's processor naming scheme (4770K to 6700K, as in 70K to 00K) also points to the potential move later in the lifetime of the product. The only hint in the naming scheme from Intel is that the 'processor numbering reflects that these processors belong to the 6th Gen Intel Core family'.

- -

The thinness of the package has implications for removing the lid/heatspreader of the processor as well. Splave notes that previous heatspreader methods involving force, such as vices that were common during Haswell's tenure, may not be appropriate due to the thinness of Skylake. Splave shows an image of a failed attempt by another user on a Skylake CPU:

- -


-Image from Splave

- -

Instead, a razor method (and something warm such as a hairdryer or the bean bags that iFixit uses to warm up glue in smartphones to take them apart) to cut through the black adhesive between the package and the IHS is suggested and it what was used for the CPU above. As there are no FIVR resistors to worry about on the top of the package, the first resistance a razor blade will encounter after the black adhesive is the silicon die itself. All that being said, over at PCWatch they successfully have used a vice method.

- -


-Image from Splave

- -

Interestingly the heatspreader for Skylake is heavier than that from Haswell by nearly 20%, moving up from 22g to 26g. Given the copper mass that usually sits on a high end processor this should not matter much, although basic aluminium coolers might see a small benefit here by virtue of the minor extra mass. This might also just be that the mounting requirements for Haswell and Skylake are the same, and the extra mass comes from the added z-height required to maintain the mounting as before. 

- -

So why are we talking about removing the heatspreader? Back with Haswell (as well as Ivy Bridge to a degree), it was discovered that the thermal interface material between the silicon die and the heatspreader was both an insufficient amount and lower quality than previous generations, as well as the heatspreader being far away from the CPU due to the black adhesive, causing more air bubbles and poorer heat transfer than is optimal. For a stock processor, this difference has little effect to the use of the system, but for overclockers it meant that they were more thermally limited than silicon limited with their overclocking.

- -


-Image courtesy of Idontcare

- -

Devil's Canyon changed that - here was a better binned Haswell processor with a higher quality package, giving a ten degrees cooler system at load. It is worth noting that previously on certain platforms Intel had been providing a mixed metal interface (generalized as a soldered interface) between the silicon and the heatspreader, which is the best but most expensive option. If the cost of the interface is reduced by 0.1 cents, then that's a significant saving on millions of processors. Devil's Canyon was a small subset of sales, so spending that extra for that specific crowd could be seen as beneficial to Intel's perspective by overclockers.

- -


-Image from PCWatch

- -

To paraphrase Splave again, he comments that the thermal paste (TIM)o n his Skylake is certainly worse than that of Devil's Canyon. If the extra mass on the IHS is coming from a taller heatspreader (by virtue of the smaller package substrate), then more TIM is needed otherwise there will be substantial air bubbling of the TIM between the CPU and the heatspreader. By replacing his own thermal paste and resecuring the heatspreader, he saw an 18°C drop in temperatures at his highest air overclock with the old paste (5.1 GHz at 1.48 volts) - from 96ºC that overheated to 78ºC on the warmest core. An 18°C drop is immense. Under those conditions, and based on rough testing not published in our Skylake review, it could equal another 100-400 MHz depending on the quality of the processor. PCWatch confirms that switching out the paste with CoolLaboratory’s Liquid Pro (a liquid metal adhesion interface) reduced temperatures at 4.6 GHz from 88ºC to 68ºC

- -


-Image from PCWatch

- -

This throws up some questions - is this just a result of design decisions for cost, or is there a Devil's Canyon type processor coming later in the design cycle?

- -

Source: Overclock.net, PCWatch

-

- Ian Cutress - 2015-08-10T10:00:00.000Z -
-
- -
-

Intel Quietly Launches Mobile Xeons: Skylake Based E3-1500M v5

-

In a rather understated blog post, Intel made an interesting move at the end of last week by announcing that for the first time the Xeon platform is heading for mobile workstation platforms.

- -

When I first heard this, I thought ‘wait, is it not already?’, given that I have seen laptops with Xeon processors in the past. The fact of the matter is that those previous platforms relied on desktop processors (either socketed or soldered) from the high end line and were only ever found in custom designs such as those from Clevo or Eurocom which promoted a more modular concept.  As a result, these systems were typically heavy, demanding, and featuring more cores/cache/TDP than was expected for a laptop. We also saw consumer processors for notebooks with vPro, but these were typically not ECC memory verified. Intel’s announcement today changes this.

- -

With specific mobile processors going Xeon, Intel can forge (with OEMs) a line of workstations that are more akin to the ultrabooks and notebooks we already see in the market but with certified professional level features. Intel is stating that by default all E3-1500M v5 processors will have vPro (which was to be expected) as well as Thunderbolt 3 using Type-C and access to ECC memory. So it does not become hard to imagine a professional version of the Dell XPS 13 or a MacBook / MacBook Professional type device that looks like a Core-M or a 15W clamshell with Thunderbolt 3, and/or ECC memory, while also having hardware-assisted security and ISV workstation level certification. It is our understanding we might expect announcements on specific products from manufacturers in the coming weeks.

- -

This announcement does not give details about what types of processors (if they might be dual core, quad core, or have eDRAM) will be coming to the market, only that the mobile workstation market (according to IDC’s most recent report) has showed its sixth straight quarter of year-over-year growth which is a big pointer into the decision to release Xeon on mobile. We will be getting more details as time progresses – with Intel’s Developer Forum conference a week away, we may hear something then.

- -

Source: Intel

-

- Ian Cutress - 2015-08-10T09:34:00.000Z -
-
- -
-

Aleutia Updates R50 and T1 Fanless Industrial PCs with Partial Copper Chassis

-

Aleutia's fanless industrial PCs have seen deployment in a large number of developing countries as well as other extreme environments, thanks to their rugged nature and low power requirements. We reviewed the Aleutia Relia back in 2012, but, since then, a number of new models have been launched - the Aleutia R50 based on the NUC platform, the Aleutia T1 based on the Intel Atom lineup and the M200 fanless 2U servers with Intel Xeon CPUs.

- -

In an attempt to improve the thermal performance of their fanless computing systems, Aleutia has decided to go in for a novel chassis design along with their latest updates to the R50 and T1 families. The R50 is still based on the NUC platform, but the T1 moves to a nano-ITX design.

- -

- -

The Aleutia R50 Broadwell NUC

- -

Traditional passively cooled systems involve a copper heatsink on the CPU transferring the heat to a larger chassis (made of steel or aluminum) through copper heat pipes. Copper heat sinks are quite costly (relative to the cost of the system as a whole) as one goes for bigger / heavier ones. Aleutia has re-imagined the chassis by developing a copper heat sink that has the same profile as the chassis itself (made clear in the photograph below).

- -

- -

The holes in the heat sink help it get connected to the rest of the chassis. On the whole, this lends to theoretically better thermal performance and also lends a striking look to both the R50 and T1 PCs. In addition, the presence of more copper for heat dissipation purposes has allowed Aleutia to reduce the volume of the R50 by 24% compared to the Haswell version. We are excited to check out the thermal performance of these PCs once they start shipping later this month.

- -

- -

The Aleutia T1 Bay Trail Nettop

- -

In terms of the internal platform itself, the R50 now comes with the Broadwell i3 and i5 (15 W TDP) NUC configurations, while the new T1s will be based on the Bay Trail Celeron J1800 (10 W TDP). The new R50 will come in at £599 for the i3 / 8GB / 128GB configuration - reasonable for industrial PCs, but not the average retail consumer. The T1 will come in around £100 - £200. We should have more information and hands-on time at the Intel Developer Forum later this month.

-

- Ganesh T S - 2015-08-10T07:00:00.000Z -
-
- -
-

FlipWrite iPad cover and keyboard review

-
Can you believe that it has been 5 years since the first iPad was released to the public? I myself have been using one for several years now and would be lost without it. When I bought my iPad I did so with the intention of replacing a laptop for work, and while earlier versions […]
- Larry Geisz - 2015-08-09T20:35:00.000Z -
-
- -
-

iBobber + iPhone = The one that didn’t get away

-
The next time you go fishing, you won’t have to guess where the best spots are if you have an iBobber. The iBobber is a small castable fish finder that works with your iOS device to show you where the fish are, how big they are, how deep they are (up to to 135ft) and […]
- Julie Strietelmeier - 2015-08-09T15:23:54.000Z -
-
- -
-

Tru Virtu Cash & Cards 2 Wallet review

-
I can’t wait until all transactions are private, digital and use whichever device you happen to have with you. I’ve carried a wallet for years, and it sometimes becomes the “George Castanza” wallet of Seinfeld fame, where one more piece of paper will cause it to explode. With that in mind, when Julie offered the team […]
- Smythe Richbourg - 2015-08-09T13:30:47.000Z -
-
-
diff --git a/html/tech.json b/html/tech.json index e8c5e3d..d52ca51 100644 --- a/html/tech.json +++ b/html/tech.json @@ -1 +1 @@ -{"title":"Technology","description":"Combined Tech Feed","generator":"rss-braider","feed_url":null,"site_url":"http://pipes.silvrtree.co.uk/tech.xml","image_url":null,"categories":null,"copyright":null,"webMaster":null,"geoRSS":false,"custom_namespaces":[],"custom_elements":[],"no_cdata_fields":[],"items":[{"title":"Google offers Project Fi users a one-time $100 Nexus 6 replacement in cases of accidental damage","description":"

\n\n

It looks like being an all-in Project Fi customer has some benefits. It turns out Project Fi customers with damaged phones are offered a one-time replacement of their Nexus 6 for just $100, so long as they bought the phone from Google during the Project Fi setup process. All it takes is a quick call, chat or email with Project Fi support, and you'll have a new phone shortly.

\n\n\n\n\n\n\n\n
\n
\n\n

This follows in the footsteps of rather vague and unadvertised policies from the Play Store and Google Store that (seemingly on-and-off) offer free or discounted replacements for Nexus devices, but this one is hardly vague — Project Fi offers any customer who bought a Nexus 6 through Fi a one-time $100 replacement within a year of purchase, with no questions asked.

\n\n
","url":"http://www.androidcentral.com/google-offering-project-fi-users-one-time-100-nexus-6-replacement","guid":"48389 at http://www.androidcentral.com","categories":[],"author":"Andrew Martonik","date":"2015-08-12T11:00:36.000Z","enclosure":false,"custom_elements":[]},{"title":"Pushbullet now supports end-to-end encryption for various features","description":"In an age where hacked accounts and leaked messages are a common occurrence, encryption support is all the more important, not because you have anything to hide (well, unless you … Continue reading","url":"http://androidcommunity.com/pushbullet-now-supports-end-to-end-encryption-for-various-features-20150812/","guid":"http://androidcommunity.com/?p=238784","categories":["Archive","Android","App","encryption","Pushbullet","Update"],"author":"Ida Torres","date":"2015-08-12T11:00:29.000Z","enclosure":false,"custom_elements":[]},{"title":"$100M Worth of Crazy-Swanky Cars Are About to Go on Sale","description":"
\"$100M

We’ve scoured the catalogs to bring you the very best of this year's offerings.

\n

The post $100M Worth of Crazy-Swanky Cars Are About to Go on Sale appeared first on WIRED.

","url":"http://www.wired.com/2015/08/100m-worth-crazy-swanky-cars-go-sale/","guid":"http://www.wired.com/?p=1834014","categories":["Autopia","Gear","Classic Cars","gallery","Luxury cars","Pebble Beach Concours d'Elegance 2015"],"author":"Alex Davies","date":"2015-08-12T11:00:26.000Z","enclosure":false,"custom_elements":[]},{"title":"Details on the next Nexuses leaked","description":"@OnLeaks has just shared a bunch of details about the anticipated Nexus smartphones from LG and Huawei.","url":"http://www.androidauthority.com/lg-huawei-nexus-details-leaked-633232/","guid":"http://www.androidauthority.com/?p=633232","categories":["News","Huawei","LG","Nexus","Rumor"],"author":"Rob Triggs","date":"2015-08-12T10:45:46.000Z","enclosure":false,"custom_elements":[]},{"title":"Here's a curved LG sound bar to go with your curved LG TV","description":"\n\nBecause everyone hates straight lines.","url":"http://www.engadget.com/2015/08/12/heres-a-curved-lg-sound-bar-to-go-with-your-curved-lg-tv/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/12/heres-a-curved-lg-sound-bar-to-go-with-your-curved-lg-tv/","categories":[],"author":"Mat Smith","date":"2015-08-12T10:40:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Using Android with Mac OS X: tips and recommendations","description":"Have an Android phone and looking for an easy way to synchronise your data to your Apple Mac? Here's our guide to making it as easy as the iPhone & iTunes.","url":"http://www.androidauthority.com/use-android-mac-os-x-632616/","guid":"http://www.androidauthority.com/?p=632616","categories":["How To","AirDroid","Apple","doubleTwist"],"author":"Nirave Gondhia","date":"2015-08-12T10:21:02.000Z","enclosure":false,"custom_elements":[]},{"title":"LG launches a Google Cast-compatible curved soundbar to go with your curved TV","description":"

\n\n

LG has launched a curved soundbar in its Music Flow series of connected audio equipment, dubbed the Music Flow HS8 Wireless Curved Sound Bar. Available in Europe starting next week, the HS8 houses a 4.1 channel speaker system with an output of 360W and is compatible with Google Cast.

\n\n
","url":"http://www.androidcentral.com/lg-just-launched-google-cast-compatible-curved-soundbar-go-your-curved-tv","guid":"48393 at http://www.androidcentral.com","categories":[],"author":"Harish Jonnalagadda","date":"2015-08-12T10:11:44.000Z","enclosure":false,"custom_elements":[]},{"title":"Affiliate program may be coming soon to the Google Play Store","description":"Monetizing the web isn’t something that most consumers think about, but really, it is a necessity for a lot of online businesses to stay afloat. Since display and pop up … Continue reading","url":"http://androidcommunity.com/affiliate-program-may-be-coming-soon-to-the-google-play-store-20150812/","guid":"http://androidcommunity.com/?p=238799","categories":["Archive","Android","Google","Google Play Store"],"author":"Ida Torres","date":"2015-08-12T10:00:32.000Z","enclosure":false,"custom_elements":[]},{"title":"Sorry, But Digital Songs Sound Better When Recorded on Tape","description":"
\"Sorry,

It's a digital world, but that song you’re streaming still sounds best if it was originally encoded in magnetic particles.

\n

The post Sorry, But Digital Songs Sound Better When Recorded on Tape appeared first on WIRED.

","url":"http://www.wired.com/2015/08/basf-audio-tape/","guid":"http://www.wired.com/?p=1805235","categories":["Gear","Magazine","benchmark","magazine-23.08","Music"],"author":"Victor Krummenacher","date":"2015-08-12T09:59:45.000Z","enclosure":false,"custom_elements":[]},{"title":"Galaxy Note 5 and S6 Edge Plus battery confirmed?","description":"A new leak has revealed the battery we can expect Samsung to include in its upcoming Galaxy Note 5 and Galaxy S6 Edge Plus smartphones but is it big enough?","url":"http://www.androidauthority.com/galaxy-note-5-and-s6-edge-plus-battery-confirmed-633212/","guid":"http://www.androidauthority.com/?p=633212","categories":["News","Galaxy Note 5","Rumor","Rumors","Samsung","Samsung Galaxy Note 5","Samsung Galaxy S6 Edge Plus"],"author":"Nirave Gondhia","date":"2015-08-12T09:49:06.000Z","enclosure":false,"custom_elements":[]},{"title":"Huawei teases “unique” smartphone for IFA 2015","description":"Huawei has released a couple of teaser images for a new smartphone, which will be unveiled at IFA 2015 in Berlin on September 2nd.","url":"http://www.androidauthority.com/huawei-ifa-teaser-posters-633215/","guid":"http://www.androidauthority.com/?p=633215","categories":["News","Huawei","IFA 2015"],"author":"Rob Triggs","date":"2015-08-12T09:45:18.000Z","enclosure":false,"custom_elements":[]},{"title":"Twitter gives companies access to its full archives","description":"\n\nTwitter has just launched a new tool called "Full-Archive Search API," which gives brands access to every public tweet ever made from the microblogging site's inception nine years ago. If you recall, the company also opened up its archives to resea...","url":"http://www.engadget.com/2015/08/12/twitter-gnip-full-archive-search-api/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/12/twitter-gnip-full-archive-search-api/","categories":[],"author":"Mariella Moon","date":"2015-08-12T09:28:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Noodlecake takes revenge on pirates with an unbeatable game","description":"Noodlecake Studios uploaded its own Shooting Stars game to torrent sites to send a message to pirates.","url":"http://www.androidauthority.com/noodlecake-pirates-own-game-633200/","guid":"http://www.androidauthority.com/?p=633200","categories":["Apps","News","games","Noodlecake Studios","Piracy"],"author":"Rob Triggs","date":"2015-08-12T09:00:19.000Z","enclosure":false,"custom_elements":[]},{"title":"Hillary Clinton to turn over her private email server","description":"\n\nHillary Clinton has decided to surrender the private email server she used during her time as Secretary of State to the Department of Justice. A few hours after the Intelligence Community Inspector General told Congress that some of her corresponde...","url":"http://www.engadget.com/2015/08/12/hillary-clinton-email-server-turnover/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/12/hillary-clinton-email-server-turnover/","categories":[],"author":"Mariella Moon","date":"2015-08-12T08:28:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Microsoft rolls out OneNote update with a new floating icon","description":"

\n\n

OneNote is currently being updated for Android, offering up a new feature for fans to take full advantage of. If you've been crying out for more convenient access to your notes, this update is for you as Microsoft has implemented a new floating icon called floatie.

\n\n
","url":"http://www.androidcentral.com/microsoft-rolling-out-onenote-update-new-floating-icon","guid":"48392 at http://www.androidcentral.com","categories":[],"author":"Rich Edmonds","date":"2015-08-12T07:50:27.000Z","enclosure":false,"custom_elements":[]},{"title":"Skype for Business is coming to your mobile device","description":"\n\nTwo months after Microsoft launched Skype's Business edition, which integrates into MS Office Calendar and allows for group messaging/video chats/calls for up to 250 people, the video conferencing company announced on Tuesday that a mobile version...","url":"http://www.engadget.com/2015/08/12/skype-for-business-is-coming-to-your-mobile-device/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/12/skype-for-business-is-coming-to-your-mobile-device/","categories":[],"author":"Andrew Tarantola","date":"2015-08-12T07:10:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Focus: a complete gallery app that prioritizes ease of use, organization and security","description":"Today we would like to introduce you to a new gallery app that managed to catch our eye. It's called Focus, and it's very simple, yet very advanced and full of neat features.","url":"http://www.androidauthority.com/focus-a-complete-gallery-app-that-prioritizes-ease-of-use-organization-and-security-633183/","guid":"http://www.androidauthority.com/?p=633183","categories":["Apps","News","Focus","gallery","Google","Google Play Store"],"author":"Edgar Cervantes","date":"2015-08-12T06:47:35.000Z","enclosure":false,"custom_elements":[]},{"title":"Twitter sees a big increase in account info requests","description":"\n\nLaw enforcement agencies are making social media part of more and more investigations these days, based on Twitter's latest transparency report. Between January 1st and June 30th this year, the company saw a 52 percent increase in account informati...","url":"http://www.engadget.com/2015/08/12/twitter-transparency-report-1st-half-2015/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/12/twitter-transparency-report-1st-half-2015/","categories":[],"author":"Mariella Moon","date":"2015-08-12T06:24:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Retailers' Apple Pay rival is ready for testing, three years later","description":"\n\nMerchant Customer Exchange is an alliance of several of the US' biggest retailers and restaurants, including Wal-Mart and Target, aimed at bringing mobile payments under their own control — and not by tying themselves to a particular tech com...","url":"http://www.engadget.com/2015/08/12/apple-pay-rival-is-ready-for-testing/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/12/apple-pay-rival-is-ready-for-testing/","categories":[],"author":"Mat Smith","date":"2015-08-12T05:31:00.000Z","enclosure":false,"custom_elements":[]},{"title":"eBay back to school deals: smartphones from Samsung, Sony and others at under $299!","description":"Want to buy a new phone? eBay has some awesome back to school deals you can take advantage of! All these phones cost under $300, so come in and take a look.","url":"http://www.androidauthority.com/ebay-back-to-school-deals-smartphones-samsung-sony-under-299-633181/","guid":"http://www.androidauthority.com/?p=633181","categories":["Deals","Amazon","Amazon Fire Phone","AT&T","eBay","HTC","HTC Desire 816","LG","LG G3","Moto X","Motorola","Motorola Droid Ultra","Samsung","Samsung Galaxy S5","Verizon"],"author":"Edgar Cervantes","date":"2015-08-12T05:23:21.000Z","enclosure":false,"custom_elements":[]},{"title":"Wage war for the control of Europe in Pocket Platoons, set to arrive on August 27th","description":"

Coming from En Masse Entertainment, Pocket Platoons is a turn-based strategy game with a World War II theme, which will be there second mobile game release onto Android. The game is set to focus on base building as well as troop positioning, with the final goal being to control the continent of Europe.

\r\n\r\n

Players will choose either the Allied or Axis faction, build up a base, raise army, and lead it to war. Sounds a lot like the board game RISK in a lot of ways. The game is set to contain \"over 300 campaign stages, hundreds of progression quests, dozens of tactical units, and a wide variety of combat modes to master\", according to the developers.

\r\n
\r\n

\r\n
\r\n

Players will need to direct their troops to attack the enemy base, or defend their own base. You will also be promoting officers to tailor their skills to the needs at hand. Multiple players can team up to form coalitions in order to defeat opposing players and bigger enemy coalitions as well.

\r\n

Pocket Platoons is set to be released for free on Android both on Google Play, as well as the Amazon Appstore, on August 27th. In the meantime you can check out the game in action through the trailer below.

\r\n

\"\"
","url":"http://feedproxy.google.com/~r/PlanetAndroidCom/~3/LJbIetKJb6s/9615-wage-war-for-the-control-of-europe-in-pocket-platoons-set-to-arrive-on-august-27th","guid":"http://www.droidgamers.com/index.php/game-news/android-game-news/9615-wage-war-for-the-control-of-europe-in-pocket-platoons-set-to-arrive-on-august-27th","categories":[],"author":"Ed Burnette","date":"2015-08-12T04:46:03.000Z","enclosure":false,"custom_elements":[]},{"title":"IBM’s Watson AI Wants to Coach Your Fantasy Football Team","description":"
\"IBM’s

A new app called Edge Up Sports uses IBM's Watson cognitive computing skills to help you win your fantasy league.

\n

The post IBM’s Watson AI Wants to Coach Your Fantasy Football Team appeared first on WIRED.

","url":"http://www.wired.com/2015/08/ibms-watson-ai-wants-coach-fantasy-football-team/","guid":"http://www.wired.com/?p=1834021","categories":["Gadget Lab","Gear","A.I.","Apps","Artificial Intelligence","Edge Up Sports","fantasy football","ibm watson"],"author":"Tim Moynihan","date":"2015-08-12T04:01:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Wildcard launches a slick news app you might actually use","description":"\n\nHere's the evolution of mobile news reading in a nutshell: First there were browsers; then RSS readers; and eventually we saw a slew of news reading apps like Flipboard, Feedly and Nuzzle that aimed to make it easier to discover and read news. Now...","url":"http://www.engadget.com/2015/08/11/wildcard-news-app/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/wildcard-news-app/","categories":[],"author":"Devindra Hardawar","date":"2015-08-12T03:56:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Branto allows you to monitor your home, control your smart appliances and more","description":"What is the Branto, and what can it do? This unique spherical gadget made of aluminum and polymer gives you full remote presence, smart appliance control and security features.","url":"http://www.androidauthority.com/branto-monitor-home-control-smart-appliances-security-633171/","guid":"http://www.androidauthority.com/?p=633171","categories":["News","Branto","Indiegogo","IoT","Smart Home"],"author":"Edgar Cervantes","date":"2015-08-12T03:40:43.000Z","enclosure":false,"custom_elements":[]},{"title":"Be the first person to complete Purm the Game and net yourself $1000","description":"

Purm the Game from Diske Inc is an interesting little game. It is an endless worm flying game where you control Purm, the mighty worm who has managed to put a jetpack onto his back so he can fly around. You will need to avoid plenty of obstacles as well as not crashing in general, while trying to earn as many points as possible.

\r\n\r\n

While this may be an infinitely flying game, there is a way to beat it. The problem is, the solution/directions to beating this game is encrypted within a riddle. Once you've managed to solve the riddle on how to beat the game, you will then actually have to beat the game using those directions. Why finish the game?

\r\n

\r\n

Well for one thing you can tell people you managed to finish an endless runner/flyer game and then you can sit back and watch them try to figure out what you're talking about. Probably with a sort of WTF type of look on their faces. The other reason is that if you're the first person to complete the game, the developers will apparently personally give you $1000, and that would be in real money, not play money. Needless to say, with $1000 on the line, finding the solution to beating this game won't be easy.

\r\n

The soundtrack was done by OMFG for those of you curious. If you are up for the challenge, whether that be just trying to get the high score or trying to be the first to complete the game and score $1000 in cold hard cash, you can download Purm The Game off of Google Play for free. There are optional IAPs as well and using any of them also removes the ads (and gets you Ninja and Lazy worm) within the game as a side benefit.

\r\n\r\n

\"\"
","url":"http://feedproxy.google.com/~r/PlanetAndroidCom/~3/LdC3Av4KJ3k/9619-be-the-first-person-to-complete-purm-the-game-and-win-1000","guid":"http://www.droidgamers.com/index.php/game-news/android-game-news/9619-be-the-first-person-to-complete-purm-the-game-and-win-1000","categories":[],"author":"Ed Burnette","date":"2015-08-12T03:25:51.000Z","enclosure":false,"custom_elements":[]},{"title":"Shure wants dedicated spectrum for wireless audio gear in the UK","description":"\n\nThe proliferation of mobile phones is great, and so is the availability of 4G in the UK. However, dwindling spectrum available for wireless audio gear could cause problems at your local music venue or playhouse -- especially in the UK. Shure, the p...","url":"http://www.engadget.com/2015/08/11/shure-wireless-microphone-spectrum-uk/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/shure-wireless-microphone-spectrum-uk/","categories":[],"author":"Billy Steele","date":"2015-08-12T02:36:00.000Z","enclosure":false,"custom_elements":[]},{"title":"This super-thin OLED desk lamp will also charge your phone","description":"\n\nDo you take your desk lighting seriously? Really seriously? You'll want to look at Aerelight's just-shipped A1 desk lamp, then. The eye-catching design uses an OLED panel to illuminate your room, which both makes it wafer-thin and produces a nat...","url":"http://www.engadget.com/2015/08/11/aerelight-a1-oled-desk-lamp/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/aerelight-a1-oled-desk-lamp/","categories":[],"author":"Jon Fingas","date":"2015-08-12T02:09:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Nokia smartphone comeback may be in the cards by 2016","description":"With so many smartphone brands competing for our attention now, it’s easy to forget that once upon a time, there was this dominant force that ruled above all. Yes, Nokia … Continue reading","url":"http://androidcommunity.com/nokia-smartphone-comeback-may-be-in-the-cards-by-2016-20150811/","guid":"http://androidcommunity.com/?p=238770","categories":["Archive","Android","Nokia","smartphone"],"author":"Ida Torres","date":"2015-08-12T02:00:55.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung files patent for smartphone that can display holographic images","description":"A Samsung patent filing from Q3 2014 has recently been published, showcasing technology that would allow a device to display holograms.","url":"http://www.androidauthority.com/samsung-patent-smartphone-holographic-images-633167/","guid":"http://www.androidauthority.com/?p=633167","categories":["News","hologram","Samsung","USPTO"],"author":"Edgar Cervantes","date":"2015-08-12T01:38:21.000Z","enclosure":false,"custom_elements":[]},{"title":"Rdio adds free live radio stations to its streaming library","description":"\n\nApple Music has Beats1, and now Rdio has live radio, too. Rdio announced today that in addition to its library of 35 million songs and curated stations, it's tacking on live broadcast radio with access to "nearly 500 stations." We haven't seen a fu...","url":"http://www.engadget.com/2015/08/11/rdio-live-broadcast-radio/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/rdio-live-broadcast-radio/","categories":[],"author":"Billy Steele","date":"2015-08-12T01:36:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Doom & Destiny Advanced, the hilarious RPG sequel we were waiting for","description":"There were whispers and rumors about a sequel to the geek-tastic hit RPG “Doom & Destiny”, but we didn’t put much stock in them. Imagine how happy we were when … Continue reading","url":"http://androidcommunity.com/doom-destiny-advanced-the-hilarious-rpg-sequel-we-were-waiting-for-20150811/","guid":"http://androidcommunity.com/?p=238726","categories":["Archive","Android","App","games","Gaming","RPG"],"author":"John Hoff","date":"2015-08-12T01:20:49.000Z","enclosure":false,"custom_elements":[]},{"title":"Blizzard's 'Compete' trademark hints at an eSports service","description":"\n\nThere's no question that Blizzard is a cornerstone of the eSports world. StarCraft is so big in South Korea that it's virtually an institution, and Heroes of the Storm was the first game to get a live ESPN2 broadcast. It only makes sense that the...","url":"http://www.engadget.com/2015/08/11/blizzard-compete-trademark/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/blizzard-compete-trademark/","categories":[],"author":"Jon Fingas","date":"2015-08-12T01:05:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Noodlecake Trolls Game Pirates By Uploading An Impossible Version Of Shooting Stars To Popular Torrent Sites","description":"

\"daft\"

Hey, game pirates: screw you. Seriously, you're part of the reason it's so hard to find a decent game that isn't packed with $100 in-app purchases. Of course, good old-fashioned greed on the part of game developers is a big part of that, but a demonstrable loss of revenue from relatively easy piracy (a problem on other platforms like Windows) is giving developers little incentive to release conventional premium games for a simple price.

Read More

Noodlecake Trolls Game Pirates By Uploading An Impossible Version Of Shooting Stars To Popular Torrent Sites was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/B0yyxyeiUdE/story01.htm","guid":"http://www.androidpolice.com/?p=330935","categories":["shooting stars","piracy","trolling","apk","noodlecake","torrents","Games","News","torrent"],"author":"Michael Crider","date":"2015-08-12T01:02:00.000Z","enclosure":false,"custom_elements":[]},{"title":"[Update: Nexus 7 2013 Wi-Fi] OTA Updates Incoming For Nexus Devices To Fix Vulnerability In Stagefright","description":"

\"nexus

Last week, Google released factory images for every actively-supported Nexus except the Nexus 7 2013 LTE and Nexus Player. These images were for a new build, LMY48I, intended to patch the recently outed vulnerability that was found in Stagefright.

Today, it appears the OTAs are beginning to hit the masses, but be warned, all these do is patch Stagefright. They contain no other fixes of any kind, so if there's some problem with your device you're hoping to have solved with this update, it's not going to happen.

Read More

[Update: Nexus 7 2013 Wi-Fi] OTA Updates Incoming For Nexus Devices To Fix Vulnerability In Stagefright was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/mlOlwCX7js0/story01.htm","guid":"http://www.androidpolice.com/?p=330698&uniqid=55ca98cc6b174","categories":["lvy48e","stagefright","update","Android 5.1.1","lyz28j","News","lmy48i","OTAs"],"author":"Shawn De Cesari","date":"2015-08-12T00:47:57.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung France, Romanian e-tailer post Galaxy Note, S6 edge+ pre-order page","description":"We are literally just a couple of days away from the official unveiling of the new Samsung smartphones/tablets, the Galaxy Note 5 and the Galaxy S6 edge Plus. But apparently, … Continue reading","url":"http://androidcommunity.com/samsung-france-romanian-e-tailer-post-galaxy-note-s6-edge-pre-order-page-20150811/","guid":"http://androidcommunity.com/?p=238776","categories":["Archive","Android","leak","Samsung","Samsung Galaxy S6 edge","smartphone"],"author":"Ida Torres","date":"2015-08-12T00:40:43.000Z","enclosure":false,"custom_elements":[]},{"title":"Weekly poll: Did you grab a Moto G 2015?","description":"

\n\n

Historically, the Moto G has been the best selling Motorola smartphone of all time. It's the greatest. It floats like a butterfly and stings like a bee. Or something like that, at least according to Motorola.

\n\n

In reality, the latest incarnation — the Moto G 2015 — a darn good, cheap Android phone. It's built well, performs well, and this year has a decent camera. There's no wonder the initial run of the 16GB memory model (the one you should probably buy) sold out.

\n\n
","url":"http://www.androidcentral.com/weekly-poll-did-you-grab-moto-g-2015","guid":"48388 at http://www.androidcentral.com","categories":[],"author":"Jerry Hildenbrand","date":"2015-08-12T00:36:35.000Z","enclosure":false,"custom_elements":[]},{"title":"Microsoft OneNote introduces Floatie feature – like chat heads for notes","description":"OneNote's new feature is called Floatie, and despite its cute name it will likely be among the most powerful attributes the note-taking app has.","url":"http://www.androidauthority.com/microsoft-onenote-floatie-633150/","guid":"http://www.androidauthority.com/?p=633150","categories":["Apps","News","Floatie","Microsoft","OneNote"],"author":"Edgar Cervantes","date":"2015-08-12T00:35:53.000Z","enclosure":false,"custom_elements":[]},{"title":"Rdio Music Adds 500 Local Terrestrial Radio Streams From Partner Cumulus Media","description":"

\"image\"Online streaming music is all well and good, but if you're hankering for the good old days of sliding FM dials, Rdio wants to oblige your craving. The long-standing streaming service is adding a new section to its app called \"On the Air on Rdio,\" which gives users access to digital streams of 500 United States radio stations. The collection of stations covers basically every major market in the county, usually with a mix of top 40, classic rock, country, sports, and news content.

Read More

Rdio Music Adds 500 Local Terrestrial Radio Streams From Partner Cumulus Media was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/g-E5JBRdZkg/story01.htm","guid":"http://www.androidpolice.com/?p=330915","categories":["music apps","streaming radio","Applications","app update","FM radio","rdio","News"],"author":"Michael Crider","date":"2015-08-12T00:23:37.000Z","enclosure":false,"custom_elements":[]},{"title":"An electropop band used fax machines to promote its new album","description":"\n\nAlways looking for a reason to dust off your office's sad, unused fax machine? Here's one: The band YACHT used faxes to initially distribute its new album's artwork. No, really. It's part of a weird, multimedia promotion that defies all expectation...","url":"http://www.engadget.com/2015/08/11/yacht-album-cover-teased-via-fax/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/yacht-album-cover-teased-via-fax/","categories":[],"author":"Sean Buckley","date":"2015-08-12T00:23:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Help blue creatures get home in Zoombinis, now on Android","description":"If you were a 90s kid who loved playing puzzle games, then you probably came across the Logical Journey of the Zoombinis. And now that mobile gaming is one of, … Continue reading","url":"http://androidcommunity.com/help-blue-creatures-get-home-in-zoombinis-now-on-android-20150811/","guid":"http://androidcommunity.com/?p=238519","categories":["Archive","Android","App","games","Gaming"],"author":"Ida Torres","date":"2015-08-12T00:00:51.000Z","enclosure":false,"custom_elements":[]},{"title":"Facebook is reportedly building a breaking news notification app","description":"\n\nRight now, the easiest way to read breaking news on your smartphone is to download a dedicated news reader app, something like Paper or Flipboard -- but rumor has it that Facebook is working on something different. According to Business Insider, Fa...","url":"http://www.engadget.com/2015/08/11/facebook-breaking-news/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/facebook-breaking-news/","categories":[],"author":"Sean Buckley","date":"2015-08-11T23:57:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Weather Time for Wear gives you the weather and all the options you might need","description":"

\n\n

Out of all the watch faces that you can currently find in the Google Play Store for your Android Wear device, weather apps are some of the most helpful at a glance. There are plenty of them out there right now, and one to take a look at is Weather Time for Wear.

\n\n

It's free with in-app purchase options that unlock the good stuff, but mostly gets the job done well. Lets take a look.

\n\n

\n\n

Weather Time for Android Wear definitely has the design aspect of things down. The default screen is a blue sky with fluffy white clouds — even when that is not at all what it looks like outside — and all your information overlaid onto it. At the top of the screen you'll see the time, underneath that there is the date, and at the bottom of the screen you'll see the temperature along with an icon for weather conditions.

\n\n

The free version of Weather Time for Wear gives you access to some options, but to get the full experience you'll need to drop $2.00. All of your options are available on your phone and they are all divided up into one of several categories; Weather Settings, Look and Feel, Notification Settings, Touch Event Settings, and General Settings.

\n\n

","url":"http://www.androidcentral.com/weather-time-wear-gives-you-weather-and-all-options-you-might-need","guid":"48365 at http://www.androidcentral.com","categories":[],"author":"Jen Karner","date":"2015-08-11T23:45:14.000Z","enclosure":false,"custom_elements":[]},{"title":"Expansys USA discounts 16GB WiFi Nexus 9 to $290","description":"

\n\n

Expansys is currently offering a pretty good deal on the 16GB WiFi variant of the Nexus 9, discounting it to $290.

","url":"http://www.androidcentral.com/expansys-usa-discounts-16gb-wifi-nexus-9-290","guid":"48387 at http://www.androidcentral.com","categories":[],"author":"Dan Thorp-Lancaster","date":"2015-08-11T23:27:30.000Z","enclosure":false,"custom_elements":[]},{"title":"Makerbase knows who built your favorite website","description":"\n\nMakerbase, a new site from Lifehacker founder Gina Trapani and former blogger Anil Dash that's being billed as the IMDb of web design, has just launched. Just as IMDb maintains archives of the people that help produce television shows and movies, M...","url":"http://www.engadget.com/2015/08/11/makerbase-knows-who-built-your-favorite-website/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/makerbase-knows-who-built-your-favorite-website/","categories":[],"author":"Andrew Tarantola","date":"2015-08-11T23:24:00.000Z","enclosure":false,"custom_elements":[]},{"title":"The Sequence is a unique, complicated puzzle game that will make you go crazy","description":"Initially judging on the preview images, we can say 'The Sequence' is no ordinary puzzle. It's one unique challenge that will require you to find solutions using different modules. All … Continue reading","url":"http://androidcommunity.com/the-sequence-is-a-unique-complicated-puzzle-game-that-will-make-you-go-crazy-20150811/","guid":"http://androidcommunity.com/?p=238688","categories":["Archive","Android","App","games","Gaming","puzzle"],"author":"R Padla","date":"2015-08-11T23:20:14.000Z","enclosure":false,"custom_elements":[]},{"title":"BDUK reaches three million homes and businesses","description":"The BDUK superfast broadband roll-out has hit three million premises around the UK","url":"http://www.computerweekly.com/news/4500251499/BDUK-reaches-three-million-homes-and-businesses","guid":"http://www.computerweekly.com/news/4500251499/BDUK-reaches-three-million-homes-and-businesses","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T23:01:52.000Z","enclosure":false,"custom_elements":[]},{"title":"Netflix is making 'Mascots,' a film from Christopher Guest","description":"\n\n\nNetflix has acquired yet another movie: Mascots. Behind the full-length project, scheduled to be released in 2016, is Christopher Guest, best known for his acting and directing in comedies like A Mighty Wind, Best In Show and For Your Consideratio...","url":"http://www.engadget.com/2015/08/11/netflix-mascots-christopher-guest/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/netflix-mascots-christopher-guest/","categories":[],"author":"Edgar Alvarez","date":"2015-08-11T22:43:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Time travel to the Bitstone past in this updated Bitcoin Billionaire game","description":"Bitcoin has been controversial the past months but we don't want to be stressed about that. Instead, we just want to continue and have fun with the Bitcoin Billionaire game … Continue reading","url":"http://androidcommunity.com/time-travel-to-the-bitstone-past-in-this-updated-bitcoin-billionaire-game-20150811/","guid":"http://androidcommunity.com/?p=238683","categories":["Archive","Android","App","Bitcoin","casual gaming","games","Gaming"],"author":"R Padla","date":"2015-08-11T22:40:13.000Z","enclosure":false,"custom_elements":[]},{"title":"LastPass is now free on mobile, but cross-device syncing costs extra","description":"\n\nIf you've been wanting to play around with LastPass on your mobile device without paying the $12 annual fee for premium support, today is your day: the password manager just added mobile to its free tier. What's the catch? You only get it on mobile...","url":"http://www.engadget.com/2015/08/11/lastpass-is-now-free-on-mobile-but-cross-device-syncing-costs-e/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/lastpass-is-now-free-on-mobile-but-cross-device-syncing-costs-e/","categories":[],"author":"Sean Buckley","date":"2015-08-11T22:27:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Julie’s gadget diary – Why I am thinking about switching back to the iPhone","description":"It’s been almost three years since I put my iPhone 4s in a drawer and switched over to an Android device as my full-time smartphone. Since I made that switch, I’ve used a Samsung Galaxy SIII, a Samsung Galaxy Note 2 and my current phone, an LG G3. I’ve also used Android tablets like the Nexus […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/6KJUyo_7f_g/","guid":"http://the-gadgeteer.com/?p=183429","categories":["Articles","gadget diary"],"author":"Julie Strietelmeier","date":"2015-08-11T22:14:25.000Z","enclosure":false,"custom_elements":[]},{"title":"Indie games are vast, varied and very 80s in this Megabooth trailer","description":"\n\nThere is no single definition of an "indie" video game. "Indie" doesn't mean free, cheap, mobile, 8-bit, 3D, platformer, shooter or any other thing. Thanks to the recent, rapid evolution of game-making technologies, more people than ever are able t...","url":"http://www.engadget.com/2015/08/11/indie-megabooth-pax-prime-2015/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/indie-megabooth-pax-prime-2015/","categories":[],"author":"Jessica Conditt","date":"2015-08-11T22:01:00.000Z","enclosure":false,"custom_elements":[]},{"title":"ASUS ZenFone Go coming soon, already spotted on Flipkart","description":"Fresh from the success of the ZenFestival in New Delhi, ASUS is unveiling yet another smartphone in the form of the ZenFone Go. The entry-level phone was actually expected to be announced … Continue reading","url":"http://androidcommunity.com/asus-zenfone-go-coming-soon-already-spotted-on-flipkart-20150811/","guid":"http://androidcommunity.com/?p=238649","categories":["Archive","Android","Asus","ASUS Zenfone","ASUS ZenFone Go"],"author":"R Padla","date":"2015-08-11T22:00:56.000Z","enclosure":false,"custom_elements":[]},{"title":"Short Takes Daily: What went on in the world of Microsoft on Tuesday, August 11, 2015","description":"\n\n
Today in the news: Mozilla finally makes nice with Microsoft and releases a Windows 10-friendly version of Firefox; we've got a raft of how-tos; Microsoft rolls out context-sensing APIs for app developers; we've got a preview of Skype for Business apps for iOS and Android.
\n\n

read more

","url":"http://winsupersite.com/windows/short-takes-daily-what-went-world-microsoft-tuesday-august-11-2015","guid":"58181 at http://winsupersite.com","categories":["Windows"],"author":null,"date":"2015-08-11T21:39:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Surviving the Def Con hacker conference","description":"\n\nThe phrase I saw and heard over and over again while talking to other journalists and security researchers about the Def Con hacker convention was "hostile environment." Not physically hostile; the attendees and staff were extremely nice. The hosti...","url":"http://www.engadget.com/2015/08/11/surviving-def-con/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/surviving-def-con/","categories":[],"author":"Roberto Baldwin","date":"2015-08-11T21:34:00.000Z","enclosure":false,"custom_elements":[]},{"title":"The Blue Screen of Death can be on your smartwatch (sort of)","description":"For all of you who have used Windows at the beginning of your digital lives, nothing evokes more fear and trembling than the dreaded Blue Screen of Death. Countless horror … Continue reading","url":"http://androidcommunity.com/the-blue-screen-of-death-can-be-on-your-smartwatch-sort-of-20150811/","guid":"http://androidcommunity.com/?p=238700","categories":["Archive","Android","Android Wear","App","smartwatch"],"author":"Ida Torres","date":"2015-08-11T21:20:44.000Z","enclosure":false,"custom_elements":[]},{"title":"MIT team gets us one step closer to robot bartenders","description":"\n\nSure, we've seen machines that can mix drinks with the help of an app and robot bartenders that can create cocktails out of Keurig-esque pods, but they all require you to actually push the control buttons and carry your own beverages. The horror! F...","url":"http://www.engadget.com/2015/08/11/mit-team-gets-us-one-step-closer-to-robot-bartenders/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/mit-team-gets-us-one-step-closer-to-robot-bartenders/","categories":[],"author":"Amber Bouman","date":"2015-08-11T21:08:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Moto G 2015 accessibility options","description":"

\n\n

Android phones have come a long way in the accessibility department, and the Moto G 2015 is no exception. Using the features and tools Google has provided for Android Lollipop, the Moto G 2015 has plenty of options for those with trouble seeing or hearing, and even those of us with motion control issues.

\n\n

Being there is fine, but knowing how to use them is the important part. that's where we can help. Have a gander at the Moto G 2015 accessibility options.

\n\n
","url":"http://www.androidcentral.com/moto-g-2015-accessibility-options","guid":"48381 at http://www.androidcentral.com","categories":[],"author":"Jerry Hildenbrand","date":"2015-08-11T21:01:23.000Z","enclosure":false,"custom_elements":[]},{"title":"Logitech Updates Harmony App With Support For The August Smart Lock, Ecobee Thermostat, LIFX Light Bulbs, And Insteon","description":"

\"Selection_001\"

Some homes are smart, and the Logitech Harmony serves as their brain. It provides a single location to control all the things, assuming of course that the products are supported. The latest update adds quite a few more to the list ranging from door locks to thermostats and a few things in between. Logitech Updates Harmony App With Support For The August Smart Lock, Ecobee Thermostat, LIFX Light Bulbs, And Insteon

The new additions include the August Smart Lock (pictured above) that provides remote control over your doors.

Read More

Logitech Updates Harmony App With Support For The August Smart Lock, Ecobee Thermostat, LIFX Light Bulbs, And Insteon was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/HdNKxQge-H0/story01.htm","guid":"http://www.androidpolice.com/?p=330874","categories":["smart home","Applications","logitech","home automation","logitech harmony","News","harmony"],"author":"Bertel King, Jr.","date":"2015-08-11T21:00:30.000Z","enclosure":false,"custom_elements":[]},{"title":"SanDisk Announces Second Generation CloudSpeed Ultra SATA Enterprise SSD","description":"

\"\"

At Flash Memory Summit today SanDisk announced the second generation of their CloudSpeed Ultra enterprise drive. This is the sibling to the gen. 2 CloudSpeed Eco that was announced in June.

\r\n\r\n

As with the Eco gen. 2, the Ultra gen. 2 transitions from 19nm to 15nm MLC and brings a reduced endurance rating but increased performance. The Ultra model continues to be geared for mixed read/write workloads while the Eco is for more read-intensive uses.

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
SanDisk Enterprise SATA SSDs
DriveUltra gen. 2Eco gen. 2Ultra gen. 1
Capacities400GB, 800GB, 1600GB480GB, 960GB, 1920GB100GB, 200GB, 400GB, 800GB
NANDSanDisk 15nm MLCSanDisk 15nm MLCSanDisk 19nm MLC
Sequential Read530 MB/s530 MB/s450 MB/s
Sequential Write460 MB/s460 MB/s400 MB/s
4kB Random Read IOPS76k76k75k
4kB Random Write IOPS32k14k30k
Endurance Rating1.8 DWPD0.6 DWPD3 DWPD
\r\n\r\n

SanDisk is already supplying the CloudSpeed Ultra gen. 2 to several major customers for large-scale deployments and it will be more broadly available later in 2015, where it will be competing against drives like Samsung's SM863 and Intel's DC S3610. Pricing will be under $1/GB, but we don't know by how much. It probably won't be undercut by Intel's DC S3610, but to be competitive it will need to be down near Samsung's $0.66/GB for the SM863.

\r\n

\"\"

","url":"http://www.anandtech.com/show/9517/sandisk-announces-second-generation-cloudspeed-ultra-sata-enterprise-ssd","guid":"tag:www.anandtech.com,9517:news","categories":["SSDs"],"author":"Billy Tallis","date":"2015-08-11T21:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Microsoft OneNote Adds 'Floatie' Feature, An Unobtrusive Shortcut For Jotting Down Notes While Using Any App","description":"

\"OneNoteThumb\"

The latest updates to Microsoft's OneNote app have taken advantage of an ability granted to it by the openness of Android OS: the ability to place an overlay on top of other running apps. Similar to Facebook Messenger's chat heads UI, OneNote now has an opt-in feature called \"floatie\" that remains accessible while you use non-OneNote apps. The idea is that inspiration for notes may come at any time and you may not want to leave the app you're in to do it.

Read More

Microsoft OneNote Adds 'Floatie' Feature, An Unobtrusive Shortcut For Jotting Down Notes While Using Any App was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/uu38ss0N_84/story01.htm","guid":"http://www.androidpolice.com/?p=330865","categories":["app updates","Applications","microsoft","onenote","onenote floatie","dumb product names","News","microsoft onenote"],"author":"Jacob Long","date":"2015-08-11T20:50:05.000Z","enclosure":false,"custom_elements":[]},{"title":"Facebook offers up its autoplay video ads to other apps","description":"\n\nIf you're already annoyed with the autoplay video ads in your Facebook timeline, you might want to brace yourself. The social network is opening up that advertising tech to outside apps, or more specifically, to publishers who leverage Menlo Park's...","url":"http://www.engadget.com/2015/08/11/facebook-autoplay-ads-third-party-apps/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/facebook-autoplay-ads-third-party-apps/","categories":[],"author":"Billy Steele","date":"2015-08-11T20:44:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Huawei Watch apparently just “round the corner”","description":"The clock has been ticking now for almost 6 months ever since Huawei announced its first Android Wear smartwatch back in March during the Mobile World Congress. But since then, … Continue reading","url":"http://androidcommunity.com/huawei-watch-apparently-just-round-the-corner-20150811/","guid":"http://androidcommunity.com/?p=238751","categories":["Archive","Android","Huawei","smartwatch","wearable"],"author":"Ida Torres","date":"2015-08-11T20:40:41.000Z","enclosure":false,"custom_elements":[]},{"title":"VR pop-up studio will help journalists track online shaming","description":"\n\nIt doesn't take long for social media to become antisocial. A tactless tweet, an inappropriate picture or even a mundane status update can create the perfect storm for online shaming. In an attempt to convert those rabid online tendencies into oppo...","url":"http://www.engadget.com/2015/08/11/vr-pop-up-studio-will-help-journalists-track-online-shaming/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/vr-pop-up-studio-will-help-journalists-track-online-shaming/","categories":[],"author":"Mona Lalwani","date":"2015-08-11T20:20:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Engadget Live hits Los Angeles next week!","description":"\n\nLast year, we had a lot of fun at Engadget Live Los Angeles and now we're gearing up to do it all over again. Next Friday, August 21st, we'll take over Exchange LA from 7PM to 10PM and give readers like you a chance to experience the future of tech...","url":"http://www.engadget.com/2015/08/11/engadget-live-los-angeles-august-21/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/engadget-live-los-angeles-august-21/","categories":[],"author":"John Colucci","date":"2015-08-11T20:05:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Panasonic rolls out Eluga Icon Android phone, now listed on Amazon India","description":"Panasonic smartphone lines may not be popular as the Samsung Galaxy phones, LG G's, ASUS ZenFone's or HTC One's but the Eluga phone series has been around since 2012. It … Continue reading","url":"http://androidcommunity.com/panasonic-rolls-out-eluga-icon-android-phone-now-listed-on-amazon-india-20150811/","guid":"http://androidcommunity.com/?p=238636","categories":["Archive","Android","India","Panasonic","Panasonic Eluga","smartphone"],"author":"R Padla","date":"2015-08-11T20:00:06.000Z","enclosure":false,"custom_elements":[]},{"title":"Firefox Stable Release Is Updated To v40 With Tweaked Forward/Back Navigation, Better Malware Protection, And Other Minor Improvements","description":"

\"firefox\"

Keeping to their normal rapid release schedule, Mozilla published v40 of the stable release of Firefox to the Play Store today. The biggest user-facing change in the update is one that was also present in the beta version of v40, allowing you to long press the forward or back buttons to see a list of your recently visited pages. Here's a quick look at how that works:

\"nexus2cee_2015-07-03-18_11_32\"

This is the sort of thing that only catches your attention when there aren't any other major changes, but this is one of those times.

Read More

Firefox Stable Release Is Updated To v40 With Tweaked Forward/Back Navigation, Better Malware Protection, And Other Minor Improvements was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/GY-rDTGjQ9E/story01.htm","guid":"http://www.androidpolice.com/?p=330852","categories":["app updates","firefox updates","Applications","firefox v40","mozilla","Firefox","mozilla firefox","News"],"author":"Jacob Long","date":"2015-08-11T19:50:22.000Z","enclosure":false,"custom_elements":[]},{"title":"Check out Russell live tonight on TWiT's All About Android show","description":"

\n\n

Our Russell Holly will be joining the TWiT team on tonight's All About Android show, and you can tune in and watch it live. Starting at 5 p.m. PDT, or 8 p.m for those on the East Coast, you can check out all of the conversation as it happens.

","url":"http://www.androidcentral.com/check-out-russell-he-appears-live-tonight-twits-all-about-android-show","guid":"48382 at http://www.androidcentral.com","categories":[],"author":"Jared DiPane","date":"2015-08-11T19:48:56.000Z","enclosure":false,"custom_elements":[]},{"title":"The PS Vita of Steam Machines arrives in 2016 for $299","description":"\n\nThe Steam Machine invasion is happening this fall. But while these computers are said to be more powerful than traditional consoles, such as the Xbox One or PlayStation 4, none of them are exactly portable. Smach Zero's device, however, is. Formerl...","url":"http://www.engadget.com/2015/08/11/steam-machine-steamboy-smach-zero/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/steam-machine-steamboy-smach-zero/","categories":[],"author":"Edgar Alvarez","date":"2015-08-11T19:48:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Rite Aid Will Officially Accept Google Wallet, And Eventually Android Pay, Starting August 15th","description":"

\"Wallet-Thumb\"The idea of paying using your phone may be exciting, but that's all it will ever be until more stores start playing along. Today Rite Aid announced that you will soon be able to add its nearly 4600 stores to the list. Starting August 15th, it will accept Google Wallet NFC payments in stores. It will also take tap and pay credit cards.

That's right, it'll be like you're shopping at Walgreens.

Read More

Rite Aid Will Officially Accept Google Wallet, And Eventually Android Pay, Starting August 15th was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/4QQu3IoEi1A/story01.htm","guid":"http://www.androidpolice.com/?p=330851","categories":["Applications","video","Videos","rite aid","Google wallet","mobile payments","News","Android Pay","NFC"],"author":"Bertel King, Jr.","date":"2015-08-11T19:41:59.000Z","enclosure":false,"custom_elements":[]},{"title":"VR Gets the Simple, Hands-Free Head Wear It Deserves","description":"
\"VR

That's one way to do it.

\n

The post VR Gets the Simple, Hands-Free Head Wear It Deserves appeared first on WIRED.

","url":"http://www.wired.com/2015/08/vr-gets-simple-hands-free-head-wear-deserves/","guid":"http://www.wired.com/?p=1834036","categories":["Gadget Lab","Gear","gallery"],"author":"Molly McHugh","date":"2015-08-11T19:33:17.000Z","enclosure":false,"custom_elements":[]},{"title":"Verizon tests new fiber system that hits 10Gbps speeds","description":"\n\nVerizon has announced that it has successfully completed field tests of its new super-fast fiber optic technology, dubbed the next-generation passive optical network (NG-PON2). It could offer users connectivity speeds anywhere from 10Gbps to 80Gbps...","url":"http://www.engadget.com/2015/08/11/verizon-tests-new-fiber-system-that-hits-10-gbps-speeds/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/verizon-tests-new-fiber-system-that-hits-10-gbps-speeds/","categories":[],"author":"Andrew Tarantola","date":"2015-08-11T19:24:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Google now includes images from PDF in image search","description":"Back in 2008, when Google first started indexing PDF files through OCR from websites to include it in your search results, it was a sigh of relief (and for some, … Continue reading","url":"http://androidcommunity.com/google-now-includes-images-from-pdf-in-image-search-20150811/","guid":"http://androidcommunity.com/?p=238565","categories":["Archive","Android","Google","google search"],"author":"Ida Torres","date":"2015-08-11T19:20:05.000Z","enclosure":false,"custom_elements":[]},{"title":"Get Access To The eBay App v4.0 Closed Beta By Filling Out This Form","description":"

\"ebaythumb\"Most developers run regular beta tests via the Play Store, but not eBay. Oh no. The most recent eBay v4.0 beta is closed, and even the APK needs an authorized login to work. Luckily, there's a form you can fill out to get access.

It's a simple Google Docs survey and should only take a moment to complete. Just put in your email, beta preference (iOS/Android), and your country. You should get an email with the download link as soon as there's a new build to test.

Read More

Get Access To The eBay App v4.0 Closed Beta By Filling Out This Form was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/7Fq7v1j_oX4/story01.htm","guid":"http://www.androidpolice.com/?p=330848","categories":["Applications","beta","closed beta.","News","apps","eBay"],"author":"Ryan Whitwam","date":"2015-08-11T19:19:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Skype for Business now heading into preview on Android","description":"

\n\n

Microsoft has announced the preview for its upcoming Skype for Business offering on Android. Skype for Business will come as an update to the existing Lync 2013 app when it arrives later this year.

\n\n
","url":"http://www.androidcentral.com/skype-business-now-heading-preview-android","guid":"48378 at http://www.androidcentral.com","categories":[],"author":"Joseph Keller","date":"2015-08-11T19:03:39.000Z","enclosure":false,"custom_elements":[]},{"title":"Developers in Qatar, Kazakhstan and Nigeria can now sell paid apps in Google Play","description":"

\n\n

Developers in Qatar, Kazakhstan and Nigeria are now able to list paid apps in Google Play, and display the apps using local currency pricing. The changes, which are reflected on the Google Play Developer Console, indicate that developers in these regions are now able to set pricing for their apps, as well as in-app purchases using local currency.

","url":"http://www.androidcentral.com/developers-qatar-kazakhstan-and-nigeria-can-now-sell-paid-apps-google-play","guid":"48379 at http://www.androidcentral.com","categories":[],"author":"Jared DiPane","date":"2015-08-11T19:03:25.000Z","enclosure":false,"custom_elements":[]},{"title":"With Alphabet, Google wants to avoid becoming Microsoft","description":"\n\nYou're probably tired of hearing just how "unconventional" Google is after yesterday's surprise restructuring announcement. Sure, making Google a subsidiary of a company called Alphabet is certainly strange, especially after it's become a household...","url":"http://www.engadget.com/2015/08/11/google-alphabet/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/11/google-alphabet/","categories":[],"author":"Devindra Hardawar","date":"2015-08-11T19:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Android's Version Of Skype For Business Is On The Way, And You Can Sign Up Now To Test The Preview","description":"

\"Skype3\"

The free version of Skype is great for personal use, but you can also get work done with it as well. I took part in numerous job interviews over video chat during my last year of college. When I landed an internship, we used it to communicate around the office.

But for big work done by big companies, there's Skype for Business. It comes with extra perks such as the ability to chat with up to 250 people and integrate everything with Office.

Read More

Android's Version Of Skype For Business Is On The Way, And You Can Sign Up Now To Test The Preview was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/Z3vTDWsPEYI/story01.htm","guid":"http://www.androidpolice.com/?p=330836","categories":["Applications","microsoft lync","skype for business","News","preview","skype"],"author":"Bertel King, Jr.","date":"2015-08-11T18:55:55.000Z","enclosure":false,"custom_elements":[]},{"title":"Omate smart ring tells you when THAT person is calling","description":"If you’ve been around mobile technology then you will know that the Omate smart ring isn’t the first of its kind around. There have been “smart rings” for just about … Continue reading","url":"http://androidcommunity.com/omate-smart-ring-tells-you-when-that-person-is-calling-20150811/","guid":"http://androidcommunity.com/?p=238713","categories":["Archive","Android","smart ring","wearable"],"author":"John Hoff","date":"2015-08-11T18:40:38.000Z","enclosure":false,"custom_elements":[]},{"title":"Google Creative Lab Releases Three New Experimental Apps—Landmarker, Tunnel Vision, And Lip Swap","description":"

\"unnamed\"

You don't hear a lot about Google Creative Lab, but it's had a hand in some of Google's most memorable ads and products. Google's Creative Lab is an outfit that basically comes up with (presumably) innovative ideas the promote the Google brand. Along the way, they've also made a few apps. Today there are three new apps from the Creative Lab, all of which are appropriately offbeat.

First up, there's Landmarker, which I dare say is the most conventional and useful of the three.

Read More

Google Creative Lab Releases Three New Experimental Apps—Landmarker, Tunnel Vision, And Lip Swap was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/M-HY8n3IVls/story01.htm","guid":"http://www.androidpolice.com/?p=330821","categories":["Applications","google creative lab","new apps","News","apps"],"author":"Ryan Whitwam","date":"2015-08-11T18:13:23.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung Galaxy S7 to run on Qualcomm Snapdragon 820 processor","description":"After the Galaxy Note 5 and Galaxy S6 Edge Plus are announced this week, the next major flagship phone we should be waiting for is the Galaxy S7. Samsung is … Continue reading","url":"http://androidcommunity.com/samsung-galaxy-s7-to-run-on-qualcomm-snapdragon-820-processor-20150811/","guid":"http://androidcommunity.com/?p=238630","categories":["Archive","Android","Qualcomm","Samsung","Samsung Galaxy S7","smartphone","Snapdragon 820"],"author":"R Padla","date":"2015-08-11T18:00:57.000Z","enclosure":false,"custom_elements":[]},{"title":"FireFox update supposedly optimizes browsers interface for Windows 10","description":"
Has Mozilla had a change of heart about Windows 10 after the default browser dust up a couple of weeks ago?
\n\n

read more

","url":"http://winsupersite.com/windows-10/firefox-update-supposedly-optimizes-browsers-interface-windows-10","guid":"58171 at http://winsupersite.com","categories":["browser","default browser","Firefox","Mozilla","Windows 10"],"author":null,"date":"2015-08-11T17:50:00.000Z","enclosure":false,"custom_elements":[]},{"title":"What is reactive programming?","description":"

Braden O'Guinn gives us the scoop on reactive programming and where to learn more about it.

\r\n

The post What is reactive programming? appeared first on Mutual Mobile.

","url":"http://feedproxy.google.com/~r/PlanetAndroidCom/~3/e_4NJiY7NgU/what-is-reactive-programming","guid":"http://www.mutualmobile.com/?p=13396","categories":["Videos","Ask A Dev","Dev","Prototyping"],"author":"Mark Killian","date":"2015-08-11T17:41:03.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung Galaxy S5 Neo listed for pre-order in Germany, now with updated design","description":"August started with us getting a glimpse of the Galaxy S5 Neo being listed on a Dutch online retailer, ready for pre-order. We knew it was only a matter of … Continue reading","url":"http://androidcommunity.com/samsung-galaxy-s5-neo-listed-for-pre-order-in-germany-now-with-updated-design-20150811/","guid":"http://androidcommunity.com/?p=238617","categories":["Archive","Android","Samsung","Samsung Galaxy S5"],"author":"R Padla","date":"2015-08-11T17:20:55.000Z","enclosure":false,"custom_elements":[]},{"title":"Thermacell Mosquito Repellent review","description":"When you are concerned with mosquito-borne illnesses like the West Nile virus present here in Texas, finding effective ways to repel mosquitoes in addition to the standard repellent sprays (containing DEET) is of great importance. The Thermacell Mosquito Repellent appliance is an outdoor device used to repel mosquitos within a 15′ x 15′ area. I found […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/8rVedFSxk38/","guid":"http://the-gadgeteer.com/?p=182031","categories":["Home, Kitchen","Outdoor Gear","Reviews","Camping","Health"],"author":"Kathleen Chapman","date":"2015-08-11T17:00:25.000Z","enclosure":false,"custom_elements":[]},{"title":"Lenovo-Backed ZUK Announces The China-Only Z1 With USB 3.0 Type-C And 4100mAh Battery","description":"

\"6YUpQAAAABJRU5ErkJggg==\"

Lenovo already has cell phone legend Motorola under its umbrella, but the company has also started a new Chinese brand called ZUK. This firm is intended to compete with the budget offerings of Xaiomi, Huawei, and others. Its first phone looks like a good start too. The Z1 has a massive battery and a USB 3.0 Type-C port.

The Z1 is basically specced like a 2014 flagship with a few important extras.

Read More

Lenovo-Backed ZUK Announces The China-Only Z1 With USB 3.0 Type-C And 4100mAh Battery was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/ULc9x71czlo/story01.htm","guid":"http://www.androidpolice.com/?p=330811","categories":["China","lenovo","usb type-c","News","zuk"],"author":"Ryan Whitwam","date":"2015-08-11T16:41:08.000Z","enclosure":false,"custom_elements":[]},{"title":"Spotify to reportedly offer premium-only content by early 2016","description":"When Spotify first introduced their own music streaming model, the market was still very different back then. But with more services now aggressively marketing themselves, and with pressure from record … Continue reading","url":"http://androidcommunity.com/spotify-to-reportedly-offer-premium-only-content-by-early-2016-20150811/","guid":"http://androidcommunity.com/?p=238747","categories":["Archive","Android","rumor","Spotify","streaming music"],"author":"Ida Torres","date":"2015-08-11T16:40:18.000Z","enclosure":false,"custom_elements":[]},{"title":"LastPass Free Is Now Available On Mobile Devices For New Users, But You Have To Pay To Switch From Phones To Tablets Or PCs","description":"

\"LastPass\"

Using LastPass on anything more mobile than a PC used to be a perk reserved exclusively for paying customers. We couldn't call it all that much of a luxury, considering that at $12 a year, LastPass Premium costs about as much as a short trip on the Pennsylvania Turnpike. But now you won't even have to pay that much to start managing your passwords on your Android phone or tablet.

Users who sign up for LastPass can use the service on an unlimited number of smartphones or tablets—but not both.

Read More

LastPass Free Is Now Available On Mobile Devices For New Users, But You Have To Pay To Switch From Phones To Tablets Or PCs was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/gNt1eTiBDeM/story01.htm","guid":"http://www.androidpolice.com/?p=330804","categories":["lastpass","Applications","password manager","new users","free","News"],"author":"Bertel King, Jr.","date":"2015-08-11T16:15:59.000Z","enclosure":false,"custom_elements":[]},{"title":"Small IT firms most susceptible to going under due to late payments","description":"Small businesses, particularly those supplying IT, should look at alternative financing models as late payments put them at risk of closure","url":"http://www.computerweekly.com/news/4500251498/Small-IT-firms-most-susceptible-to-going-under-due-to-late-payments","guid":"http://www.computerweekly.com/news/4500251498/Small-IT-firms-most-susceptible-to-going-under-due-to-late-payments","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T16:15:16.000Z","enclosure":false,"custom_elements":[]},{"title":"How To: Manage Taskbar Real Estate in Windows 10","description":"
You can make settings adjustments in Windows 10 to free up more space for pinned apps.
\n\n

read more

","url":"http://winsupersite.com/windows-10/how-manage-taskbar-real-estate-windows-10","guid":"58161 at http://winsupersite.com","categories":["Windows 10"],"author":null,"date":"2015-08-11T16:14:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Snapchat update: travel mode to save data, placeable emojis","description":"Data saving seems to be the name of the game among apps, specifically messaging apps, with Facebook and WhatsApp just some of the recent ones that are offering versions of … Continue reading","url":"http://androidcommunity.com/snapchat-update-travel-mode-to-save-data-placeable-emojis-20150811/","guid":"http://androidcommunity.com/?p=238740","categories":["Archive","Android","App","Snapchat","Update"],"author":"Ida Torres","date":"2015-08-11T16:00:17.000Z","enclosure":false,"custom_elements":[]},{"title":"Peer-to-peer lenders galore apply for regulatory approval","description":"The number of companies applying to become authorised peer-to-peer lenders goes beyond expectations as the appetite for non-bank lenders increases","url":"http://www.computerweekly.com/news/4500251484/Peer-to-peer-lenders-galore-apply-for-regulatory-approval","guid":"http://www.computerweekly.com/news/4500251484/Peer-to-peer-lenders-galore-apply-for-regulatory-approval","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T15:45:02.000Z","enclosure":false,"custom_elements":[]},{"title":"Parallels Access Updated To v3.0 With File Sharing, Universal File Manager, And More","description":"

\"unnamed\"

Most remote access apps just beam your computer's screen to the phone, but Parallels does a bit more. It has a handy app launcher and full-screen rendering of desktop apps. It's not free, but maybe the latest update will entice you to pony up some cash.

Here's the changelog for Parallels v3.0.

  • File Sharing — Share any file directly from your computer. No cloud storage required, no file size limit, no upload time wasted.
Read More

Parallels Access Updated To v3.0 With File Sharing, Universal File Manager, And More was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/nRmAqKOPBhA/story01.htm","guid":"http://www.androidpolice.com/?p=330778","categories":["app updates","Applications","Parallels","remote access","News","apps"],"author":"Ryan Whitwam","date":"2015-08-11T15:28:23.000Z","enclosure":false,"custom_elements":[]},{"title":"Prevent the Windows 10 upgrade from installing after making your reservation","description":"
If you are not ready for the Windows 10 upgrade but made a reservation these steps will help you keep it off your system.
\n\n

read more

","url":"http://winsupersite.com/windows-10/prevent-windows-10-upgrade-installing-after-making-your-reservation","guid":"58151 at http://winsupersite.com","categories":["Get Windows 10","Get Windows 10 App","KB3035583","Microsoft","upgrade","Windows","Windows 10","Windows 7","Windows 8.1"],"author":null,"date":"2015-08-11T15:26:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Snapchat 9.14 Offers A Travel Mode That Uses Less Data, New Emoji Button, And More","description":"

\"Snapchat1\"

Snapchat's developers have pushed out another update to the Android app, version 9.14. Like before, users get to satisfy their thirst with a trickle of new features.

One tucked away change is the ability to see who has viewed your Story by tapping on the eyeball in the corner. We also see an addition aimed specifically had users with limited or slower data connections. There's now the option to dive into Settings and enable Travel Mode, which reduces mobile data usage.

Read More

Snapchat 9.14 Offers A Travel Mode That Uses Less Data, New Emoji Button, And More was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/m3DJpdtYNn4/story01.htm","guid":"http://www.androidpolice.com/?p=330785","categories":["data usage","snapchat","Applications","update","app","emoji","News"],"author":"Bertel King, Jr.","date":"2015-08-11T15:20:42.000Z","enclosure":false,"custom_elements":[]},{"title":"Qualcomm outs Snapdragon 412, 212 for budget and midrange devices","description":"Chipset manufacturer Qualcomm had to update their entry level and lower midrange chipsets last year because of the growth of 4G data connectivity. That meant even entry level and midrange … Continue reading","url":"http://androidcommunity.com/qualcomm-outs-snapdragon-412-212-for-budget-and-midrange-devices-20150811/","guid":"http://androidcommunity.com/?p=238650","categories":["Archive","Android","Qualcomm","Snapdragon 210","Snapdragon 212","Snapdragon 410","Snapdragon 412","SoC"],"author":"John Hoff","date":"2015-08-11T15:20:32.000Z","enclosure":false,"custom_elements":[]},{"title":"ZUK Z1 Announced with USB 3.1 and 4100mAh Battery","description":"
\"ZUK-Z1\"

ZUK are a relatively new sub-brand of Lenovo, who had previously enjoyed press through multiple rumors about their impending release of a CyanogenOS smartphone called the Z1. This has turned out to be off the mark; the company announced the very same handset today, although it’s running a custom implementation of Android 5.1 called ‘ZUI’. We’ll be bringing you a more in-depth preview of the device once we get our hands on it, but at this point we already have a full list of specifications and a number of interesting details about this very reasonably priced first effort.

\r\n

 

\r\n

 

\r\n

 

\r\n

With its $280 price tag, ZUK is going head-to-head with a number of other thrifty Chi. . . READ ON »

","url":"http://feedproxy.google.com/~r/PlanetAndroidCom/~3/Wx_l_2jVKSk/","guid":"http://www.xda-developers.com/?p=121944","categories":["ANDROID","Featured","XDA FEATURE","XDA News","Lenovo","usb type c","Z1","ZUK"],"author":"Jack Jennings","date":"2015-08-11T15:13:15.000Z","enclosure":false,"custom_elements":[]},{"title":"DEF CON 23: Two major roadblocks to cyber diplomacy, says former US diplomat","description":"The problem of attribution and the disclosure dilemma continue to hamper cyber diplomacy, but the US might just have cracked the former, according to David An","url":"http://www.computerweekly.com/news/4500251495/DEF-CON-23-Two-major-roadblocks-to-cyber-diplomacy-says-former-US-diplomat","guid":"http://www.computerweekly.com/news/4500251495/DEF-CON-23-Two-major-roadblocks-to-cyber-diplomacy-says-former-US-diplomat","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T15:00:05.000Z","enclosure":false,"custom_elements":[]},{"title":"Sasmung's Game Recorder+ Updated To Work With More Phones And Android Versions","description":"

\"image\"If you're a Samsung phone owner hoping to play with the manufacturer's custom-made game recording app, you might just be able to today. Game Recorder+ has been updated to work with a few new devices, plus updated compatibility for new Android 5.1 builds and better performance.

The new phones are the Galaxy S6 Active, the older Galaxy S5 Active, the Galaxy Note Edge, and the Galaxy Note 3 Neo. The app now works with Android 5.1 on the Galaxy S6, Galaxy S5, and Galaxy Note 4 (which may or may not be updated depending on your location and/or carrier).

Read More

Sasmung's Game Recorder+ Updated To Work With More Phones And Android Versions was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/T3B6kTPMOEg/story01.htm","guid":"http://www.androidpolice.com/?p=330781","categories":["Samsung","Applications","Galaxy Note Edge","Galaxy S6","Galaxy S5","app update","screen recording","Galaxy S6 Edge","compatibility","game recorder","Galaxy Note 4","Galaxy S5 Active","Galaxy S6 Active","Galaxy Note 3 Neo","News"],"author":"Michael Crider","date":"2015-08-11T14:50:10.000Z","enclosure":false,"custom_elements":[]},{"title":"Microsoft’s Cortana app can now be set as default on Android","description":"Cortana is still scheduled to be released for Android but before its official launch, Microsoft is doing its best to test the app and fix whatever bugs or issues that … Continue reading","url":"http://androidcommunity.com/microsofts-cortana-app-can-now-be-set-as-default-on-android-20150811/","guid":"http://androidcommunity.com/?p=238590","categories":["Archive","Android","App","Cortana","Google","Microsoft","Update"],"author":"R Padla","date":"2015-08-11T14:40:20.000Z","enclosure":false,"custom_elements":[]},{"title":"Digital Scotland claws back £18m for superfast broadband","description":"Digital Scotland Superfast Broadband programme receives an £18m funding boost to extend rural connectivity","url":"http://www.computerweekly.com/news/4500251481/Digital-Scotland-claws-back-18m-for-superfast-broadband","guid":"http://www.computerweekly.com/news/4500251481/Digital-Scotland-claws-back-18m-for-superfast-broadband","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T14:30:32.000Z","enclosure":false,"custom_elements":[]},{"title":"How To: Turning Off Windows 10 Notifications During Presentations","description":"
Don't get caught by embarrassing pop-ups during presentations.
\n\n

read more

","url":"http://winsupersite.com/windows-10/how-turning-windows-10-notifications-during-presentations","guid":"58141 at http://winsupersite.com","categories":["Windows 10"],"author":null,"date":"2015-08-11T14:24:00.000Z","enclosure":false,"custom_elements":[]},{"title":"IT budgets squashed by 20% currency price hike","description":"CIOs could struggle to get the best value from next year's IT budget as the strong US dollar drives up costs","url":"http://www.computerweekly.com/news/4500251497/IT-budgets-squashed-by-20-currency-price-hike","guid":"http://www.computerweekly.com/news/4500251497/IT-budgets-squashed-by-20-currency-price-hike","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T14:23:26.000Z","enclosure":false,"custom_elements":[]},{"title":"How To: Manage Email Folders in the Windows 10 Mail App","description":"
The Mail app for Windows 10 is basically just an email reading application with limited features included. Email folder management is pretty limited, too.
\n\n

read more

","url":"http://winsupersite.com/windows-10/how-manage-email-folders-windows-10-mail-app","guid":"58131 at http://winsupersite.com","categories":["Windows 10"],"author":null,"date":"2015-08-11T14:07:00.000Z","enclosure":false,"custom_elements":[]},{"title":"WaterField Designs launches PERALTA, a new women’s line of bags","description":"Popular San Francisco based bag and accessories maker WaterField Designs has recently created a new line of bags designed especially for women. The new line is called PERALTA and will start out by offering the Balani Backpack, the Etta accessory pouch and a leather key tether. The backpack which is made here in the USA […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/xJ4XTN-OnbA/","guid":"http://the-gadgeteer.com/?p=183418","categories":["Bags","News"],"author":"Julie Strietelmeier","date":"2015-08-11T14:00:56.000Z","enclosure":false,"custom_elements":[]},{"title":"Hootsuite moves social media management toolkit to IBM Softlayer cloud","description":"Social media management dashboard maker shifts App Directory to IBM cloud","url":"http://www.computerweekly.com/news/4500251490/Hootsuite-moves-social-media-management-toolkit-to-IBM-Softlayer-cloud","guid":"http://www.computerweekly.com/news/4500251490/Hootsuite-moves-social-media-management-toolkit-to-IBM-Softlayer-cloud","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T13:46:29.000Z","enclosure":false,"custom_elements":[]},{"title":"Android Wear v1.3 Includes 'Device To Debug' Picker, Reveals Upcoming \"Together\" And Interactive Watch Faces, New Apps, And More [APK Teardown + Download]","description":"

\"banner\"

Google surprised us with the long, long, long-awaited Hangouts 4.0 release earlier today, but that wasn't the only update worth paying attention to – Android Wear v1.3 turned up in the later hours, as well. At first glance, the only new option appears to be a selector in settings for choosing between watches for hacking or programming purposes, but a teardown reveals some great new features we can expect to see in the next major firmware release to Android Wear.

Read More

Android Wear v1.3 Includes 'Device To Debug' Picker, Reveals Upcoming "Together" And Interactive Watch Faces, New Apps, And More [APK Teardown + Download] was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/8PmVxRHS_v4/story01.htm","guid":"http://www.androidpolice.com/?p=330744","categories":["haptic","haptics","Applications","downloads","apk","download","apk teardown","app","haptic feedback","teardown","Downloads","APK Teardown","Android Wear","apk download","News"],"author":"Cody Toombs","date":"2015-08-11T13:30:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Pushbullet Update Brings End-to-end Encryption","description":"
\"Pushbullet-640x401\"

Starting from version 16.5.4, Pushbullet now supports end-to-end encryption for its notification mirroring, universal copy-paste as well as its SMS features. To enable this, users need to manually add a password through the settings screen of pushbullet apps on desktop and mobile, labelled “End-to-end Encryption”.. . . READ ON »

","url":"http://feedproxy.google.com/~r/PlanetAndroidCom/~3/Ilbey5hzkKU/","guid":"http://www.xda-developers.com/?post_type=xda-external-link&p=121936","categories":[],"author":"Aamir Siddiqui","date":"2015-08-11T13:29:39.000Z","enclosure":false,"custom_elements":[]},{"title":"Vessel Beta App Gains Chromecast Support In The Latest Version","description":"

\"2015-08-11To be honest, I'm still not sold on Vessel's business model, which posts original web video content a few days early to paying subscribers before it goes out to more general portals (usually YouTube). But the Android app seems more than serviceable even in its beta form, and the developers are adding features quickly. Case in point: the latest update adds Chromecast compatibility, which no video app should be without.

Read More

Vessel Beta App Gains Chromecast Support In The Latest Version was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/UTGysqZ3vus/story01.htm","guid":"http://www.androidpolice.com/?p=330775","categories":["Applications","Chromecast","vessel","video app","app update","News","beta app","chromecast"],"author":"Michael Crider","date":"2015-08-11T13:22:00.000Z","enclosure":false,"custom_elements":[]},{"title":"House of Marley Liberate XLBT Bluetooth Over-Ear Headphones review","description":"I consider myself an average person with an average budget for headphones (around $60 or less) and I’ve been fairly happy with my purchases. I’ve shied away from trying out more expensive ones in the stores because I haven’t been prepared to spend premium dollars on them and I didn’t want to spoil my blissful […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/-JJ4Bx3sYl4/","guid":"http://the-gadgeteer.com/?p=180668","categories":["Audio, Video, TV Gear","Bluetooth Gear","Reviews","Earphones"],"author":"Kathleen Chapman","date":"2015-08-11T13:06:54.000Z","enclosure":false,"custom_elements":[]},{"title":"How To: Fix Stopped Windows Store Downloads in Windows 10","description":"
If you've been hampered by a problem with app updates in the Windows 10 app store, here's a fix to get the pending updates to start downloading.
\n\n

read more

","url":"http://winsupersite.com/windows-10/how-fix-stopped-windows-store-downloads-windows-10","guid":"58121 at http://winsupersite.com","categories":["Windows 10"],"author":null,"date":"2015-08-11T13:03:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Why Risk Lives With a Drone When You Can Rent an Ace Pilot?","description":"
\"Why

Drone videos are in high demand, but inexperienced pilots are putting people in danger.

\n

The post Why Risk Lives With a Drone When You Can Rent an Ace Pilot? appeared first on WIRED.

","url":"http://www.wired.com/2015/08/risk-lives-drone-can-rent-ace-pilot/","guid":"http://www.wired.com/?p=1833222","categories":["Gadget Lab","Gear","drone photography","drones"],"author":"Tim Moynihan","date":"2015-08-11T13:00:29.000Z","enclosure":false,"custom_elements":[]},{"title":"Pushbullet Now Supports End-To-End Encryption For Notification Mirroring, SMS, And Copy-Paste Sync","description":"

\"splash\"

You can't deny that Pushbullet is insanely useful, and it gets more so with each update. However, Pushbullet does see a lot of your data in plain text, and there's been growing demand for better security. As of today, Pushbullet supports end-to-end encryption for SMS, notification mirroring, and universal copy-paste.

In a recent conversation on Reddit, Pushbullet's lead developer dug into the issue with users. Pushbullet has always used https to secure connections, but the Pushbullet servers still see all your data in plain text.

Read More

Pushbullet Now Supports End-To-End Encryption For Notification Mirroring, SMS, And Copy-Paste Sync was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/fmXd-2KAVjY/story01.htm","guid":"http://www.androidpolice.com/?p=330748","categories":["app updates","Applications","News","apps","pushbullet"],"author":"Ryan Whitwam","date":"2015-08-11T13:00:10.000Z","enclosure":false,"custom_elements":[]},{"title":"FBI uncovers cyber insider trading gang","description":"Nine suspects are expected to be charged in the US with insider trading based on corporate press releases stolen by hackers before they had been made public","url":"http://www.computerweekly.com/news/4500251471/FBI-uncovers-cyber-insider-trading-gang","guid":"http://www.computerweekly.com/news/4500251471/FBI-uncovers-cyber-insider-trading-gang","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T12:30:33.000Z","enclosure":false,"custom_elements":[]},{"title":"Four more senior leaders announce departure from Government Digital Service","description":"Four of GDS chief Mike Bracken's key lieutenants are following him out of the Whitehall door, but Bracken claims it is just part of a 'natural change'","url":"http://www.computerweekly.com/news/4500251478/Four-more-senior-leaders-announce-departure-from-Government-Digital-Service","guid":"http://www.computerweekly.com/news/4500251478/Four-more-senior-leaders-announce-departure-from-Government-Digital-Service","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T12:30:13.000Z","enclosure":false,"custom_elements":[]},{"title":"Seagate Introduces New Nytro PCIe SSDs: XP6500 & XF/XM1440","description":"

\"\"

After acquiring SSD controller designer SandForce, LSI took the quick route towards creating high-performance PCIe SSDs by putting multiple SandForce controllers and an LSI RAID controller on a single expansion card, branding the resulting product as the Nytro. This Nytro product line was transferred to Seagate along with the SandForce division in May 2014, and it's now getting both a refresh and a major expansion.

\r\n\r\n

The new Nytro XP6500 succeeds the Nytro XP6302 and offers improved write latency and improved write endurance. Write throughput suffers slightly, but the XP6302's original performance specifications were inflated by testing at 28% over-provisioning rather than the default of 17% that is implied by the listed capacities. Meanwhile the XP6500 4TB model is listed as optimized for 8kB rather than 4kB random accesses, so its IOPS numbers aren't directly comparable to the others.

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
Seagate Nytro XP6000 Series
DriveXP6500 4TBXP6500 1.5TBXP6302
Usable capacity 3.4TB1.3TB1.3TB, 1.75TB, 3.5TB
Interface PCIe 3.0 x8
Sequential read 4 GB/s
Sequential write 2.2 GB/s1.5 GB/s2.3 GB/s
Random read IOPS 275K (8KB)300K (4KB)296K (4KB)
Random write IOPS 85K (8KB)100K (4KB)148K (4KB)
Write latency 14µs33µs
Write endurance 20 PB8 PB6.6-11.7 PB
Required airflow 550 LFM300 LFM
\r\n\r\n

Peak power consumption isn't listed but is likely significantly increased over the XP6302's 39W, based on the increase in required airflow from 300LFM to 550LFM for the same operating temperature range. The Nytro XP6500 supports a supercapacitor bank to protect data in its large (2-4GB) DRAM cache. The XP6500 is available either as a full-height expansion card with built-in supercapacitors, or as a half-height card with an optional tethered supercapacitor module. Seagate has announced immediate availability of the Nytro XP6500.

\r\n\r\n

\"\"

\r\n\r\n

Expanding the Nytro brand into new territory are the XF1440 and XM1440 NVMe drives, in 2.5" U.2 (SFF-8639) and M.2 22110 form factors respectively. They're split in to two tiers: “Endurance Optimized” (3 drive writes per day) and “Capacity Optimized” (0.3 DWPD).

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
Seagate Nytro XF1440
DriveEndurance OptimizedCapacity Optimized
Usable capacity 400 GB, 800 GB, 1600 GB480 GB, 960 GB, 1800 GB
Interface PCIe 3.0 x4 SFF-8639
Sequential read 2700 MB/s
Sequential write 600-1200 MB/s
Random read IOPS 200K
Random write IOPS 34K3K–7K
Write endurance 3 DWPD0.3 DWPD
Warranty5 years
Peak power12.5 W
Average read/write power9 W
\r\n\r\n

\"\"

\r\n\r\n

Performance specifications for the Nytro XM1440 weren't available, and we aren't assuming that they will be the same as for the Nytro XF1440. The XF is listed as using eMLC (Enterprise MLC) but the XM is using MLC+, a term often used to refer to higher-binned consumer-grade MLC. Maximum power consumption is significantly lower for the XM, and the XM will be released later (early 2016, when the XF1440 will ship at the end of October), which suggests that there may also be controller differences.

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
Seagate Nytro XM1440
DriveEndurance OptimizedCapacity Optimized
Usable capacity 400 GB, 800 GB480 GB, 960 GB
Interface M.2 PCIe 3.0 x4
Write endurance 3 DWPD0.3 DWPD
Warranty5 years
Peak power8.25 W
Average read/write power7 W
\r\n

","url":"http://www.anandtech.com/show/9513/seagate-introduces-new-nytro-pcie-ssds","guid":"tag:www.anandtech.com,9513:news","categories":["SSDs"],"author":"Billy Tallis","date":"2015-08-11T12:30:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Goodbye Google, hello Alphabet","description":"In what must be the most shocking tech news in recent history, Google announced it will no longer be known as Google…sort of. On Monday, Larry Page, Google CEO, announced he and Sergey Brin, Google Co-founder, will be launching a new company called Alphabet Inc. What exactly is the purpose of this new company? Well, […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/iaySdYBz5dE/","guid":"http://the-gadgeteer.com/?p=183389","categories":["Miscellaneous","News","Google"],"author":"Dennis Moore","date":"2015-08-11T12:00:45.000Z","enclosure":false,"custom_elements":[]},{"title":"StarTech.com 8-bay USB 3.0 / eSATA Removable Hard Drive Enclosure Review","description":"

Network Attached Storage (NAS) devices have become quite popular over the last five years or so, but Direct Attached Storage (DAS) units were the go-to devices for consumers looking to store large amounts of data before that. The interfaces for these DAS units have evolved from USB 2.0 and Firewire to eSATA and nowadays, USB 3.x and Thunderbolt. What sort of performance numbers and features can we expect in a modern multi-bay DAS unit? What are the use-cases enabled by them in the modern computing ecosystem? Our review of the StarTech.com S358BU33ERM 8-bay USB 3.0 / eSATA hard drive enclosure provides some answers.

","url":"http://www.anandtech.com/show/9514/startechcom-8bay-usb-30-esata-removable-hard-drive-enclosure-review","guid":"tag:www.anandtech.com,9514:news","categories":["Storage"],"author":"Ganesh T S","date":"2015-08-11T12:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"NVIDIA Announces Quadro M5000 & M4000 Video Cards, DesignWorks Software Suite","description":"

\"\"

Back in March at GTC 2015, NVIDIA announced the first member and flagship of their Maxwell 2 generation of Quadro cards, the Quadro M6000. Packing a fully-enabled GM200 GPU and 12GB of RAM, M6000 signaled an interesting shift from NVIDIA on the high-end of Quadro, with the company shipping what amounted to a “pure” graphics card as opposed to a jack-of-all-trades type card as they typically do at the high-end.

\r\n\r\n

Meanwhile, although the M6000 was the first Maxwell 2 based Quadro card to launch, it was not the first Maxwell 2 GPU to launch. NVIDIA has launched GM204 and GM206 late last year and early this year respectively, and of course Maxwell 1 ended up in the Quadro K2200 and a couple of other cards. As a result we have been expecting NVIDIA to refresh the rest of the Quadro lineup with Maxwell 2 after the release of the M6000, and this week at SIGGRAPH NVIDIA is doing just that with the release of the Quadro M5000 and Quadro M4000.

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
NVIDIA Quadro Specification Comparison
 Quadro M5000Quadro M4000Quadro K5200Quadro K4200
CUDA Cores2048166423041344
Boost Clock~1050MHz~780MHz650MHz780MHz
Memory Clock6.6GHz GDDR56GHz GDDR56GHz GDDR55.4GHz GDDR5
Memory Bus Width256-bit256-bit256-bit256-bit
VRAM8GB8GB8GB4GB
FP641/321/321/241/24
TDP150W120W150W105W
GPUGM204?GM204GK110GK104
ArchitectureMaxwell 2Maxwell 2KeplerKepler
SizeDouble-SlotSingle-SlotDouble-SlotSingle-Slot
4Kp60 Displays Supported4422
\r\n\r\n

We’ll start things off with the Quadro M5000. While NVIDIA has not announced the GPU for these new products, we believe the M5000 to be based on GM204, given the CUDA core and memory bus configuration. By those standards M5000 would be a fully enabled GM204 card, featuring all 2048 CUDA cores and the full 256-bit memory bus, essentially making this the Quadro version of the GeForce GTX 980.

\r\n\r\n

Curiously, the M5000 features DRAM soft ECC support, allowing for error correction on the DRAM. Previous 5000-series Quadro cards have also included this feature, but at a GPU level NVIDIA typically reserves this feature for their highest-tier GPUs. With that said, as it’s software based and we’ve seen NVIDIA enable it in a Kepler-based GK104 product before (Tesla K10), for the moment we believe that they have gone ahead and enabled it for this GM204 product, rather than outfitting the card with GM200.

\r\n\r\n

\"\"

\r\n\r\n

Paired up with the GM204 is 8GB of GDDR5 clocked at a slightly more conservative 6.6GHz. Based on these specifications it’s not clear whether NVIDIA is using 16 4Gbit chips or 8 8Gbit chips, as the latter are now available though still fairly rare (M6000 by comparison used 24 4Gbit chips). In any case this is the same amount of RAM as the previous Quadro K5200 shipped with, indicating that NVIDIA is targeting the same market segment as before.

\r\n\r\n

As for GPU clockspeeds, as is usually the case NVIDIA has not published specific clockspeeds, but in their press materials they have the card’s FP32 performance listed at 4.3 TFLOPs. This would put the maximum GPU clockspeeds at around 1.05GHz, though as this is a GPU boost product we don’t know the base clockspeeds at this time.

\r\n\r\n

NVIDIA has also published the power information for this card, and like its Kepler-based predecessor it’s a 150W card. A 150W TDP allows M5000 to more easily work in lower power workstations where only a single 6-pin PCIe power connection is available, and is actually a bit lower power than comparable desktop GeForce products. Though as a result we expect that shipping clockspeeds are below 1GHz.

\r\n\r\n

Meanwhile NVIDIA has typically gone with dual-slot blowers on their 150W Quadro cards, and M5000 will be no exception. The card is shipping with what appears to be a new blower and shroud design – and one I suspect is all plastic like the Quadro K5200’s – mimicking the original metal shroud of the M6000. At any rate this is a full size card, meaning it measures 10.5” long like NVIDIA’s other high-end cards.

\r\n\r\n

Finally, much like the M6000, the overall importance of a Maxwell release is two-fold for NVIDIA. First and foremost of course are the performance improvements from Maxwell, which achieves much better performance per CUDA core and much better energy efficiency than the preceding Kepler parts, so M5000 should achieve even better real-world performance than its already substantial on-paper specifications indicate. However the other significant benefit here is that the switch to Maxwell means that the Quadro cards gain Maxwell’s newer display controller and NVENC blocks, allowing the M5000 to drive four 4K displays – twice as many as K5200 – and real-time HEVC encoding.

\r\n\r\n

M4000

\r\n\r\n

Also launching today and below the M5000 is the M4000. This appears to be another GM204 design, forgoing some of GM204’s CUDA cores in exchange for lower costs, performance, and power consumption. Like the M5000 we don’t have the clockspeed information for the card, but we do know it features 1664 active CUDA cores, making it analogous to the GeForce GTX 970. Also like the M5000 this features 8GB of VRAM – twice as much as the K4200 – this time clocked at 6GHz, however without the soft ECC support of the higher-end Quadro cards.

\r\n\r\n

\"\"

\r\n\r\n

Compared to the M5000 the TDP on the M4000 is down by 30W to 120W. The previous Quadro K4200 was a 105W card, so power consumption is up slightly, but in turn the M4000 features the Maxwell family improvements and more CUDA cores than the K4200. The card is rated for 2.6 TFLOPs of FP32 performance, which puts the maximum clockspeed at around 780MHz, so we expect that performance will be greatly improved over the K4200.

\r\n\r\n

Meanwhile like past Quadro 4000-series cards, the M4000 is a single slot design. To the best of our knowledge this is a new PCB design for NVIDIA, and taking advantage of the lower power requirements brings the length of the card down to 9.5”. In order to get everything down a single slot NVIDIA has done away with the DVI port – a first for the 4000 series – making M4000 a 4x DisplayPort design. As we mentioned with M5000, the Maxwel display controller improves 4K support to allow 4 such displays off of a single card, and this is a scenario NVIDIA is clearly looking to enable with the M4000.

\r\n\r\n

Finally, as is usually the case for NVIDIA, the company is not publishing any official prices for these cards, leaving pricing up to their partners and vendors. That said, at this point we expect pricing to be similar to the Quadro K5200 and K4200, which would put street prices on the cards at around $2000 and $1000 for the M5000 and M4000 respectively.

\r\n\r\n

NVIDIA Launches DesignWorks

\r\n\r\n

\"\"

\r\n\r\n

Along with the release of their latest Quadro cards, NVIDIA is also announcing a new software suite at SIGGRAPH: DesignWorks. The latest Works project, DesignWorks, is partially a collection of new software and partially a branding exercise for the company. Following in the footsteps of GameWorks for game development, NVIDIA is collecting most of their tools and libraries for professional graphics development under the DesignWorks brand, and going forward will be releasing new tools under this brand as well.

\r\n\r\n

\"\"

\r\n\r\n

Along with collecting previous disparate tools like Iray and OptiX, the announcement of DesignWorks also marks the introduction of some new tools for NVIDIA. Of particular note here is NVIDIA vMaterials, a library of digitized, real world materials for use in applications that can interface with NVIDIA’s Material Design Language, MDL. Also premiering with DesignWorks is a version of NVIDIA’s VR technology optimized specifically for professional use, aptly named DesignWorks VR.

\r\n\r\n

Meanwhile NVIDIA’s technology focus for the DesignWorks launch is on Physically Based Rendering (PBR), a realistic rendering technique the company has been promoting for much of the last year now. PBR is very GPU intensive – always a plus for someone in the business of selling GPUs – but in turn is designed to offer more photo-realistic results (but not necessarily more accurate results) by focusing on simulating the properties of the materials of the surrounding world itself. This focus on PBR goes hand-in-hand with the NVIDIA vMaterials announcement in particular, as a big part of enabling PBR is creating the material representations themselves.

\r\n\r\n

\"\"

\r\n\r\n

Finally, as part of their PBR push over the past year, NVIDIA has been showing off various images under the Real or Rendered tagline. For SIGGRAPH the company has put together an admittedly impressive render of a DeWalt drill, which is close to the real thing, though not identical to it.

\r\n\r\n

\r\n

","url":"http://www.anandtech.com/show/9516/nvidia-announces-quadro-m5000-m4000-video-cards-designworks-software-suite","guid":"tag:www.anandtech.com,9516:news","categories":["GPUs"],"author":"Ryan Smith","date":"2015-08-11T12:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Hotel trade body offers members 100GbE networking capability","description":"Hospitality sector trade association Hospa partners with network provider Exponential-e to enhance connectivity for its members","url":"http://www.computerweekly.com/news/4500251470/Hotel-trade-body-offers-members-100GbE-networking-capability","guid":"http://www.computerweekly.com/news/4500251470/Hotel-trade-body-offers-members-100GbE-networking-capability","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T11:45:04.000Z","enclosure":false,"custom_elements":[]},{"title":"Use technology to improve NHS, say patients","description":"Almost 70% of the population believes technology should be used in the NHS to improve patient outcomes and efficiency, says Trustmarque","url":"http://www.computerweekly.com/news/4500251458/Use-technology-to-improve-NHS-say-patients","guid":"http://www.computerweekly.com/news/4500251458/Use-technology-to-improve-NHS-say-patients","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T11:15:51.000Z","enclosure":false,"custom_elements":[]},{"title":"HTC’s Epic Tailspin Isn’t Even Its Fault","description":"
\"HTC’s

Sometimes, the most creative ideas fall the hardest.

\n

The post HTC’s Epic Tailspin Isn’t Even Its Fault appeared first on WIRED.

","url":"http://www.wired.com/2015/08/htc-financial-trouble/","guid":"http://www.wired.com/?p=1833191","categories":["Gadget Lab","Gear","HTC","phones","smartphones"],"author":"Brian Barrett","date":"2015-08-11T11:00:53.000Z","enclosure":false,"custom_elements":[]},{"title":"Stepping Into This Shower Feels Like Hugging a Warm Cloud","description":"
\"Stepping

The hard part is asking people to strip down and give their shower a test run.

\n

The post Stepping Into This Shower Feels Like Hugging a Warm Cloud appeared first on WIRED.

","url":"http://www.wired.com/2015/08/nebia/","guid":"http://www.wired.com/?p=1833152","categories":["Gadget Lab","Gear","home","water"],"author":"Molly McHugh","date":"2015-08-11T11:00:47.000Z","enclosure":false,"custom_elements":[]},{"title":"McLaren’s New Coupe Is Too Fancy for the Word ‘Purple’","description":"
\"McLaren’s

McLaren's goal is to show off some of the bespoke options it can offer to wealthy buyers.

\n

The post McLaren’s New Coupe Is Too Fancy for the Word ‘Purple’ appeared first on WIRED.

","url":"http://www.wired.com/2015/08/mclaren-570s/","guid":"http://www.wired.com/?p=1833113","categories":["Autopia","Gear","gallery","Luxury cars","McLaren","Pebble Beach Concours d'Elegance 2015"],"author":"Alex Davies","date":"2015-08-11T11:00:34.000Z","enclosure":false,"custom_elements":[]},{"title":"British Gas Smart Metering consolidates data with Qlik on Hadoop","description":"British Gas Smart Metering has used QlikView dashboards on Hadoop data lake to gain single view of its business","url":"http://www.computerweekly.com/feature/British-Gas-Smart-Metering-consolidates-data-with-Qlik-on-Hadoop","guid":"http://www.computerweekly.com/feature/British-Gas-Smart-Metering-consolidates-data-with-Qlik-on-Hadoop","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T10:57:34.000Z","enclosure":false,"custom_elements":[]},{"title":"Asean organizations braced for cyber attack","description":"As an emerging economic power bloc, Asean is bracing itself for an influx of cyber crimes as hackers look for lucrative targets","url":"http://www.computerweekly.com/feature/Asean-organizationms-braced-for-cyber-attack","guid":"http://www.computerweekly.com/feature/Asean-organizationms-braced-for-cyber-attack","categories":[],"author":"Sophia Yao","date":"2015-08-11T10:46:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Sale, spin-off or stay put? What should EMC do next?","description":"With reports suggesting some major changes may be afoot at EMC, Clive Longbottom looks at the reasons why","url":"http://www.computerweekly.com/opinion/Whats-really-going-on-at-EMC","guid":"http://www.computerweekly.com/opinion/Whats-really-going-on-at-EMC","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T10:32:52.000Z","enclosure":false,"custom_elements":[]},{"title":"Testing a four-million-user disaster recovery plan","description":"Preparing broadcaster MTGx's websites for the Winter Olympics won Load Impact the 2015 Computer Weekly European Private Sector Award","url":"http://www.computerweekly.com/feature/Testing-a-four-million-user-DR-plan","guid":"http://www.computerweekly.com/feature/Testing-a-four-million-user-DR-plan","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T10:00:57.000Z","enclosure":false,"custom_elements":[]},{"title":"Here’s How to Use Facebook’s Mystifying Privacy Settings","description":"
\"Here’s

It takes a little bit of work to lock your data down. But if you'd like to keep Facebook private and for-your-eyes-only, you still can.

\n

The post Here’s How to Use Facebook’s Mystifying Privacy Settings appeared first on WIRED.

","url":"http://www.wired.com/2015/08/how-to-use-facebook-privacy-settings-step-by-step/","guid":"http://www.wired.com/?p=1833172","categories":["Gadget Lab","Gear","Facebook","facebook privacy","privacy"],"author":"Gordon Gottsegen","date":"2015-08-11T09:55:36.000Z","enclosure":false,"custom_elements":[]},{"title":"Australian businesses under cyber attack","description":"What are the cyber security risks facing businesses in Australia and New Zealand and how are organisations addressing them?","url":"http://www.computerweekly.com/feature/Australian-businesses-under-cyber-attack","guid":"http://www.computerweekly.com/feature/Australian-businesses-under-cyber-attack","categories":[],"author":"Alex Cruickshank","date":"2015-08-11T08:55:34.000Z","enclosure":false,"custom_elements":[]},{"title":"British Gas trials app-based smart-meter display","description":"My energy live app will display real-time energy use on a smartphone, says British Gas","url":"http://www.computerweekly.com/news/4500251464/British-Gas-trials-app-based-smart-meter-display","guid":"http://www.computerweekly.com/news/4500251464/British-Gas-trials-app-based-smart-meter-display","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T08:44:11.000Z","enclosure":false,"custom_elements":[]},{"title":"Google now an Alphabet company","description":"Alphabet is a new parent company that includes a “slimmed down” Google alongside companies not related to core internet products","url":"http://www.computerweekly.com/news/4500251463/Google-now-an-Alphabet-company","guid":"http://www.computerweekly.com/news/4500251463/Google-now-an-Alphabet-company","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T08:34:38.000Z","enclosure":false,"custom_elements":[]},{"title":"Case study: Open University uses Microsoft Azure to create course content clearance hub","description":"The Open University recently scooped the award for Best Cloud Project at the CW European User Awards, and here's why","url":"http://www.computerweekly.com/feature/Case-study-Open-University-uses-Microsoft-Azure-to-create-course-content-clearance-hub","guid":"http://www.computerweekly.com/feature/Case-study-Open-University-uses-Microsoft-Azure-to-create-course-content-clearance-hub","categories":[],"author":"ComputerWeekly.com","date":"2015-08-11T08:30:32.000Z","enclosure":false,"custom_elements":[]},{"title":"Toshiba Announces Three New NVMe SSD Families","description":"

\"\"

On the eve of Flash Memory Summit (August 11-13), Toshiba has announced a full range of NVMe-based PCIe SSDs using Toshiba controllers and Toshiba MLC flash.

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
Toshiba NVMe Drive Families
Drive SeriesPX04PXG3BG1
Form Factors and InterfacePCIe 3.0 x4 HHHL /
\r\n\t\t\t2.5” U.2
PCIe 3.1 x4 M.2 2280 / 2.5” SATA ExpressM.2 2230 /
\r\n\t\t\t16mm*20mm soldered module "M.2 1620"
Capacities800 GB, 1600 GB, 3200 GBUp to 1024GBUp to 256 GB
QSBC Error CorrectionYesYesNo
TCG Pyrite SecurityNoYesYes
Sequential Read3100 MB/s??
Sequential Write2350 MB/s??
4kB Random Read IOPS660k??
4kB Random Write IOPS185k??
\r\n\r\n

For the enterprise market, the PX04P series complements the SAS-based PX04S drives announced last week. The PX04P is available as a 2.5” drive with a U.2 (SFF-8639) connector, or as a PCIe expansion card. In either case, the drive supports four lanes of PCIe 3.0 and can make good use of that bandwidth to offer up to 3.1 GB/s sequential read speeds. With an endurance rating of 10 drive writes per day it is intended for relatively write-heavy workloads.

\r\n\r\n

\"\"

\r\n\r\n

For the high-performance client market, the XG3 is available in the M.2 2280 form factor using four lanes of PCIe 3.1, or as a 2.5” drive using the two-lane SATA Express connector. If these drives make it in to the retail channel, it means that consumers whose motherboards have a SATA Express connector but no M.2 slot will finally have an easy way to get in on the PCIe storage revolution.

\r\n\r\n

For tablets and ultra-thin laptops, the BG1 is optimized for low power in very small packages. It comes as either an M.2 2230 card or a soldered-down module measuring 16mm by 20mm. The BG1's maximum capacity is only 256 GB, and given the power and size constraints it is probably not using a 4-lane PCIe connection.

\r\n\r\n

The two client drive families implement support for the Trusted Computing Group Pyrite standard, a subset of TCG Opal that includes features necessary for things like secure boot but does not include encryption.

\r\n

","url":"http://www.anandtech.com/show/9515/toshiba-announces-three-new-nvme-ssd-families","guid":"tag:www.anandtech.com,9515:news","categories":["SSDs"],"author":"Billy Tallis","date":"2015-08-11T06:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Lenovo Launches New P50 And P70 Mobile Workstations With First Mobile Xeon Chips","description":"

\"\"

Today at the SIGGRAPH 2015 Conference and Exhibition, Lenovo unveiled some new mobile workstations. The new ThinkPad P series are aimed at high-end professionals who need a lot of compute on the go. There are two models, with the P50 being a 15.6-inch version, which is a follow-on to the W541. The larger P70 features a 17.3-inch display. Both can pack some serious specifications under the hood, starting with the processor.

\r\n\r\n

\"\"

\r\n\r\n

Both models will feature a new processor from Intel, which is going to be the first official mobile version of their Xeon line. Intel has not released much information yet, but the Intel Xeon E3-1500M v5 is going to be powering these workstations from Lenovo. While we don’t have exact frequencies yet, the v5 version is going to be based on the just released Skylake architecture, which brings a lot of new technology to the plate. Lenovo will offer the new P series with up to 64 GB of DDR4 memory, arranged in 4 SODIMM slots. One of the reasons to use Xeon is that it supports ECC memory, and these workstations leverage that for the workloads they will be expected to run Also part of the new Xeon will be Thunderbolt 3, and both models have this connectivity. We're not sure yet if Thunderbolt is built into the Xeons, or if something like the Aipine Ridge as an IO controller for this.

\r\n\r\n

On the GPU side, Lenovo has included a Quadro card, however the exact model is not known yet.

\r\n\r\n

There is also up to 1 TB of PCIe SSD storage available, and up to a 2 TB hard drive. In addition to the Thunderbolt, there will also be HDMI 1.4, mini DisplayPort 1.2, ExpressCard, SDXC, and of course what workstation would not have Gigabit Ethernet, so the P Series has this as well.

\r\n\r\n

Wireless is a new card from Intel as well, with the Intel 8260 card which is an 802.11ac model, and Lenovo will be offering it with Bluetooth 4.1 and vPro as well. For those that need connectivity on the go, Lenovo is offering a Sierra EM7445 LTE-A option as well.

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
Lenovo P Series Mobile Workstations
 P50P70
CPUIntel Xeon E3 1500M v5
\r\n\t\t\tQuad-core Skylake
\r\n\t\t\t~47W TDP
GPUNVIDIA Quadro
\r\n\t\t\tModel number unknown
MemoryUp to 64 GB DDR4-2133 ECC
StorageUp to 1TB PCIe SSD
\r\n\t\t\tUp to 2TB HDD
Display15.6" 1920x1080 IPS w/optional touch
\r\n\t\t\tOptional 3840x2160 IPS
\r\n\t\t\tX-Rite Pantone Color Correction
17.3" 1920x1080 IPS w/optional touch
\r\n\t\t\tOptional 3840x2160 IPS
\r\n\t\t\tX-Rite Pantone Color Correction
PortsUSB 3.0 x 4
\r\n\t\t\tMini DP 1.2
\r\n\t\t\tHDMI 1.4
\r\n\t\t\tThunderbolt 3
\r\n\t\t\tDocking Connector
\r\n\t\t\tSmart Card Reader
\r\n\t\t\tExpressCard
\r\n\t\t\tSDXC
\r\n\t\t\tHeadset
NetworkingIntel 8260 Wireless-AC 802.11ac WiFi
\r\n\t\t\tBluetooth 4.11
\r\n\t\t\tOptional vPro
\r\n\t\t\tGigabit Ethernet
\r\n\t\t\tSierra EM7445 4G LTE-A
DimensionsH: 0.96-1.02" (24.5-25.9 mm)
\r\n\t\t\tW: 14.86" (377.4 mm)
\r\n\t\t\tD: 9.93" (252.3 mm)
H: 1.17-1.2" (29.9-31.5 mm)
\r\n\t\t\tW: 16.4" (416 mm)
\r\n\t\t\tD: 10.8" (275.5 mm)
WeightStarting at 5.6 lbs (2.5kg)Starting at 7.6 lbs (3.4 kg)
Battery Life4 Cell 66 Whr
\r\n\t\t\tOptional 6 Cell 90 Whr
8 Cell 96 WHr
Price$1599+$1999+
\r\n\r\n

Other than the larger display, the P70 can also be had with a DVD-RW drive, but hopefully but the time it launches they will at least offer Blu-ray as an option.

\r\n\r\n

Speaking of the displays, Lenovo has packed some pretty impressive sounding displays into both models. The P series will offer a 1920x1080p as the base, with optional touch, and there is also a UHD 3840x2160 IPS offering as well. All of the panels are IPS models, and Lenovo has turned to X-Rite to offer Pantone color calibration out of the box, and over the lifetime of the device.

\r\n\r\n

\"\"

\r\n\r\n

The P series can be had with a good choice of operating systems too, from Windows 10 Pro, Windows 8.1 Pro, or downgrade rights to Windows 7 Professional. If you need Linux for your workstation, they will also be offering Ubuntu and RHEL.

\r\n\r\n

\r\n\r\n

These MIL-SPEC tested and ISV Certified professional workstations will be available in Q4 2015 with the P50 starting at $1599, and the P70 starting at $1999.

\r\n\r\n

Source: Lenovo

\r\n

","url":"http://www.anandtech.com/show/9503/lenovo-launches-new-p50-and-p70-mobile-workstations-with-first-mobile-xeon-chips","guid":"tag:www.anandtech.com,9503:news","categories":["Laptops"],"author":"Brett Howse","date":"2015-08-11T03:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"A T-Mobile Version Of Samsung's 8-Inch Galaxy Tab A Has Popped Up On The Carrier's Website","description":"

\"t-mo\"

Way back in April Samsung officially announced the Galaxy Tab A, a new tablet line with a 4:3 screen and metal body that screams \"iPad alternative\" in every language. So far we haven't heard of any carriers taking a bite, but Samsung's tablets are so ubiquitous that it was more or less inevitable. T-Mobile hasn't officially announced a Galaxy Tab A for the \"Uncarrier,\" but the company's support site now has a listing for a branded version.

Read More

A T-Mobile Version Of Samsung's 8-Inch Galaxy Tab A Has Popped Up On The Carrier's Website was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/cLaYuqB8MO0/story01.htm","guid":"http://www.androidpolice.com/?p=330721","categories":["Samsung","leak","galaxy tab a","lte tablet","Galaxy Tab A","8-inch","News","T-Mobile"],"author":"Michael Crider","date":"2015-08-11T00:43:00.000Z","enclosure":false,"custom_elements":[]},{"title":"[Update: Nexus 6 LYZ28J For T-Mobile] Google Posts Stagefright-Fixing LMY48I Factory Images For Seven Nexus Devices","description":"

\"2015-08-05

Google announced the Stagefright vulnerability fix would start rolling out as an OTA today, but it has also added new factory images to the Nexus developer pages. That means bootloader unlocked Nexus phones and tablets can flash the new build immediately, even if your device is running some wacky ROM.

Read More

[Update: Nexus 6 LYZ28J For T-Mobile] Google Posts Stagefright-Fixing LMY48I Factory Images For Seven Nexus Devices was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/L9deeyPE124/story01.htm","guid":"http://www.androidpolice.com/?p=330059&uniqid=55c9400f482a5","categories":["stagefright","Nexus 4","nexus 10","Nexus 5","Lollipop 5.0/5.1","Nexus 6","Device Updates","nexus 9","Nexus Devices","Nexus 7 2013","nexus 7","nexus 5","nexus 6","nexus 4","Nexus 9","Nexus 10","device updates","News"],"author":"Ryan Whitwam","date":"2015-08-11T00:15:04.000Z","enclosure":false,"custom_elements":[]},{"title":"Qualcomm Launches Snapdragon 616, 412, and 212","description":"

\"\"

Today, Qualcomm launched a set of new SoCs, namely the Snapdragon 616, 412, and 212. These are updates to the Snapdragon 615, 410, and 210 respectively.

\r\n\r\n

If you were to guess that these are relatively minor updates, you’d be right. First off, the Snapdragon 616 leaves the 615 mostly unchanged, with the top clockspeed of the little cluster jumping from 1 GHz to 1.2 GHz. However it should be noted that there are iterations of the 615 with a 1.11 GHz little cluster clock as well.

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
Qualcomm's SoC Refresh Lineup
 Snapdragon 616Snapdragon 412Snapdragon 212
Manufacturing Process28nm LP28nm LP28nm LP
CPU4 x ARM Cortex A53 @ 1.7GHz
\r\n\t\t\t4x ARM Cortex A53 @ 1.2GHz
4 x ARM Cortex A53 @ 1.4GHz4 x ARM Cortex A7 @ 1.3GHz
ISA32/64-bit ARMv8-A32/64-bit ARMv8-A32-bit ARMv7
GPUAdreno 405Adreno 306Adreno 304
H.265 DecodeYes (1080p)Yes (720p)Yes (1080p)
Memory Interface32-bit LPDDR3-80032-bit LPDDR2/3-60032-bit LPDDR2/3-533
Integrated Modem9x25 core, LTE Category 4, DC-HSPA+, DS-DA9x25 core, LTE Category 4, DC-HSPA+, DS-DA9x25 core, LTE Category 4, DC-HSPA+, DS-DA
Integrated WiFiQualcomm VIVE 802.11ac 1-stream802.11n 1-stream802.11n 1-stream
eMMC Interface4.514.514.5
\r\n\r\n

Meanwhile the Snapdragon 410 to 412 upgrade is a bit bigger, with the single cluster of A53s going from 1.2 GHz to 1.4 GHz and the memory interface going from a max of 533 MHz to 600 MHz. The Snapdragon 210 to 212 upgrade on the other hand is similar to the 615 to 616 upgrade, with the single cluster of A7s going from 1.1 to 1.3 GHz and are otherwise unchanged.

\r\n\r\n

Overall it’s a bit unfortunate that none of these SoCs have made the move from a traditional polySiON gate oxide to a high-k metal gate process yet. However I suspect that in these lower tiers even the cost of HKMG would dramatically affect competitiveness and price.

\r\n\r\n

Finally, at this point it's unclear when these new variants will begin shipping, but it’s likely that this part is sampling now. Which means that devices with these new SoCs should be available before the end of the year.

\r\n

","url":"http://www.anandtech.com/show/9511/qualcomm-launches-snapdragon-616-412-and-212","guid":"tag:www.anandtech.com,9511:news","categories":["Mobile"],"author":"Joshua Ho","date":"2015-08-10T22:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Short Takes Daily: What went on in the world of Microsoft on Monday, August 10, 2015","description":"\n\n
Windows RT users get left behind, Windows 10 Mobile hopefuls wait for bugs to be zapped and Audible gets an upgrade.
\n\n

read more

","url":"http://winsupersite.com/windows/short-takes-daily-what-went-world-microsoft-monday-august-10-2015","guid":"58111 at http://winsupersite.com","categories":["Windows"],"author":null,"date":"2015-08-10T21:39:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Google Reorganizes Into Alphabet: Sundar Pichai is CEO of Google","description":"

\"\"

Today, Google announced that they will undergo reorganization to better represent the growth that the company has seen in the past few years. As a result, Google the company will be now branded as Alphabet.

\r\n\r\n

The big news here is that Google the internet services company will become one subsidiary of the larger Alphabet company - and said subsidiary still operating under the name Google - with the goal of better seperating Google's core business from what are now Alphabet's more experimental, far flung ventures. Consequently this change will see current parts of Google like X labs, Calico, Life Sciences, and other ventures shifted over to Alphabet. Meanwhile web services and software like Android, Maps, and Gmail will remain under the Google brand.

\r\n\r\n

Organizationally, Larry Page will remain CEO of this reorganized company, and Sergey Brin will be President. Sundar Pichai will also be CEO of the new Google. Google stock is also immediately being converted over to Alphabet stock, and going forward Alphabet will be the reporting company, however Google-the-subsidiary results will be broken down and reported as part of Alphabet's results.

\r\n\r\n

Ultimately it remains to be seen what effects this will have on the Google that we’ve known for the past few years. However given that the management structure has remained relatively constant in this move I suspect that business will continue on as usual.

\r\n

","url":"http://www.anandtech.com/show/9512/google-reorganizes-into-alphabet-sundar-pichai-is-ceo-of-google","guid":"tag:www.anandtech.com,9512:news","categories":["Google"],"author":"Joshua Ho","date":"2015-08-10T21:25:00.000Z","enclosure":false,"custom_elements":[]},{"title":"The State of Windows 10 Mobile","description":"
Where exactly do we stand with the progress of Windows 10 Mobile now that its desktop companion has already been released?
\n\n

read more

","url":"http://winsupersite.com/windows-10/state-windows-10-mobile","guid":"58091 at http://winsupersite.com","categories":["Microsoft","Mobile","Windows","Windows 10","Windows 10 Mobile","Windows Phone"],"author":null,"date":"2015-08-10T19:52:00.000Z","enclosure":false,"custom_elements":[]},{"title":"How To: Reinstall DisplayLink Drivers for Windows 10","description":"
If you need to reinstall your DisplayLink video drivers due to issues with Windows 10, here's a rundown of the easiest way to do it.
\n\n

read more

","url":"http://winsupersite.com/windows-10/how-reinstall-displaylink-drivers-windows-10","guid":"58101 at http://winsupersite.com","categories":["Windows 10"],"author":null,"date":"2015-08-10T19:29:00.000Z","enclosure":false,"custom_elements":[]},{"title":"4 New Apps You Should Be Using","description":"
\"4

Download unless you hate fun.

\n

The post 4 New Apps You Should Be Using appeared first on WIRED.

","url":"http://www.wired.com/2015/08/4-new-apps-using/","guid":"http://www.wired.com/?p=1833020","categories":["Gadget Lab","Gear","Apps"],"author":"Molly McHugh","date":"2015-08-10T19:10:50.000Z","enclosure":false,"custom_elements":[]},{"title":"OpenGL @ SIGGRAPH 2015: OpenGL ES 3.2 & OpenGL Extensions Announced","description":"

\"\"

Kicking off this week in Los Angeles is SIGGRAPH 2015, the computer graphics industry’s annual professional conference. As the biggest graphics event of the year this show has become the Khronos Group’s favorite venue for delivering news about the state and development of OpenGL, and this year’s show is no exception. This week will see Khronos delivering news on both OpenGL and OpenGL ES, along with the formation of the OpenGL SC 2.0 working group.

\r\n\r\n

OpenGL ES 3.2

\r\n\r\n

Starting things off, we have the announcement of OpenGL ES 3.2. The latest version of OpenGL’s embedded variant is receiving a new revision this week, bringing the API up to version 3.2.

\r\n\r\n

\"\"

\r\n\r\n

With OpenGL ES 3.2, Khronos will officially be rolling the feature set of the Android Extension Pack into the core API. Until now these features have been available as optional extensions – which Google conveniently rolled into the AEP for Android developers – as not all original GPUs capable of supporting OpenGL ES 3.1 could also support the AEP, preventing those features from being rolled into OpenGL ES core.

\r\n\r\n

Via these features, OpenGL ES 3.2 will bring support for tessellation, geometry shaders, compute shaders, and ASTC texture compression in to the core OpenGL ES standard. These are major features already found in desktop GPUs for some number of years now, and these days are found in all of the major mobile GPUs as well. Of particular interest here, this means that ASTC is finally part of the OpenGL ES core standard, and while it will take some time to filter out to new OSes and devices, this finally solves the problem with the lack of a standard texture compression format in the mobile space.

\r\n\r\n

Meanwhile, as Khronos likes to note in their announcement, the inclusion of these features brings mobile GPUs much closer to parity with their desktop counterparts. At this point there are very few major OpenGL 4.x class (DirectX 11) features not accounted for in mobile GPUs in some form, so the gap between mobile and desktop has been further closed. And of course this means developers can push the envelope even harder on certain classes of graphical effects – especially geometry and compute-based physics simulations – though on a smaller scale more fitting of mobile hardware.

\r\n\r\n

As far as OS support goes, Khronos and Google are also announcing today that OpenGL ES 3.2 will be adopted by a future version of Android – presumably 2016’s Android release – at which point OpenGL ES 3.2 will have effectively supplanted the AEP. Meanwhile we haven’t heard anything from the Apple camp about OpenGL ES in some time. iOS never received OpenGL ES 3.1 support, and with Apple gung-ho on Metal there’s no immediate reason to believe this will change with OpenGL ES 3.2.

\r\n\r\n

OpenGL SC 2.0

\r\n\r\n

Along with the release of OpenGL ES 3.2, Khronos is also announcing that they are forming a working group for OpenGL SC 2.0, which will be based on OpenGL ES 3.

\r\n\r\n

\"\"

\r\n\r\n

OpenGL SC is a little-known subset of OpenGL ES that is focused on what Khronos and its members call “safety critical” systems, such as automotive and avionics systems. OpenGL SC in turn is essentially a trimmed down version of OpenGL ES that removes some of OpenGL’s flexibility in order to allow easier driver validation and ultimately more reliable operation than what is accepted for OpenGL ES.

\r\n\r\n

OpenGL SC was originally created in 2005 and based off of Open GL ES 1.0, the last fixed function version of OpenGL ES. With even time-tested hardware now well outstripping the capabilities of OpenGL SC 1.0, Khronos is forming a new working group to develop OpenGL SC 2.0. 2.0 in turn will be taking OpenGL GL ES 3.x and stripping it down in a similar manner as the original specification in order to produce a pared down version of the API that is more up to date. Khronos is looking to release OpenGL ES 2.0 in 2016.

\r\n\r\n

Desktop OpenGL: No New Version, But New Extensions

\r\n\r\n

Finally, on the desktop OpenGL front, Khronos will not be announcing a new version of OpenGL this year, making this the first SIGGRAPH in several years where Khronos doesn’t update their venerable graphics API. Citing that OpenGL has largely caught up with desktop hardware as of OpenGL 4.5 – and with attention no doubt split by Vulkan – the consortium is instead going to release several new extensions to unlock new features. These extensions represent features that are expected to be useful for developers and worth having under Khronos control, but are not universally supported by all desktop hardware, making their inclusion into an OpenGL core standard a thorny issue.

\r\n\r\n

\"\"

\r\n\r\n

Of particular interest on these extensions, one of the extensions will add support for multi-threaded shader compilation in OpenGL, with the goal of cutting down on loading times on shader-heavy workloads. Improved 64-bit integer support will also be coming to OpenGL as part of this extension set; 64-bit integers are still fairly rare in graphics workloads, but with many GPUs now supporting them, there are times where the extra precision is useful. And last but not least of course, as has been the case for the last few iterations of OpenGL, there will also be extensions to enable full OpenGL ES 3.2 interoperability, primarily to support developers in creating OpenGL ES applications.

\r\n\r\n

Though it is interesting to note that some of the latest GPU features as exposed by Direct3D feature level 12_1 aren’t included in the extension sets, such as conservative rasterization. Right now a lot of resources are going into developing Vulkan, and while Khronos is committed to continuing to develop OpenGL separate from Vulkan, it may be that more extensive feature additions for OpenGL will have to wait until after Vulkan is done, and/or after all three major desktop vendors support these latest features.

\r\n

","url":"http://www.anandtech.com/show/9506/opengl-siggraph-2015-opengl-es-32-opengl-extensions-announced","guid":"tag:www.anandtech.com,9506:news","categories":["GPUs"],"author":"Ryan Smith","date":"2015-08-10T18:50:00.000Z","enclosure":false,"custom_elements":[]},{"title":"FEBO is an engraver that uses the sunlight to power your creativity","description":"I remember using a magnifying glass as a kid to burn leaves or bugs or my brothers leg, but never did it occur to me that it could be used for art. FEBO is a crowdfunded project that has far exceeded its goal thus far.  The unique glass on top will harness the suns rays […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/-3KTw62yZYc/","guid":"http://the-gadgeteer.com/?p=183368","categories":["Miscellaneous","News","Outdoor Gear","Art","Crowdfunded"],"author":"Leslie Hosmer","date":"2015-08-10T18:37:16.000Z","enclosure":false,"custom_elements":[]},{"title":"Autoglass moves to cloud-based IT infrastructure","description":"Autoglass has signed a 10-year outsourcing deal with US supplier CSC that will see its IT infrastructure move into the cloud","url":"http://www.computerweekly.com/news/4500251405/Autoglass-moves-to-cloud-based-IT-infrastructure","guid":"http://www.computerweekly.com/news/4500251405/Autoglass-moves-to-cloud-based-IT-infrastructure","categories":[],"author":"ComputerWeekly.com","date":"2015-08-10T16:15:05.000Z","enclosure":false,"custom_elements":[]},{"title":"Google Redesigns Hangouts for Android With Version 4.0","description":"

\"\"

Today Google shipped a major update to their Hangouts application for Android. Ever since Hangouts for iOS was updated to 4.0 a little over a month ago Android users have been waiting for the update to make its way to Android. This update has been in the pipeline for quite some time, and it comes with a comprehensive redesign that brings the Hangouts app in line with Google's Material Design visual guidelines.

\r\n\r\n

Visually, Hangouts 4.0 for Android is very similar to what shipped on iOS a little while ago. This isn't surprising, as Google's applications for iOS use their Material Design principles heavily. There are a few small differences, such as the spacing of the quick access buttons underneath the message input field, and the calling controls not being hidden behind the three dot overflow menu, but the overall appearance is the same. The appearance is definitely a departure from the previous design which had a strange dual list design which was separated into two tabs.

\r\n\r\n

On top of the redesign, Google claims that Hangouts 4.0 has noticeable improvements to performance, reliability, and battery consumption. I personally have never had many issues with Hangouts on Android, but any improvements to performance are always welcomed.

\r\n\r\n

Hangouts 4.0 is currently rolling out in stages, and users can expect to receive the update in the near future if they haven't already.

\r\n

","url":"http://www.anandtech.com/show/9510/google-redesigns-hangouts-for-android-in-version-40","guid":"tag:www.anandtech.com,9510:news","categories":["Smartphones"],"author":"Brandon Chester","date":"2015-08-10T15:15:00.000Z","enclosure":false,"custom_elements":[]},{"title":"How to review your Windows Store app download history on Windows 10","description":"
My Library in the Windows Store on the recently released Windows 10 is a central spot to find all the apps you have ever purchased and/or downloaded to your Windows devices.
\n\n

read more

","url":"http://winsupersite.com/windows-10/how-review-your-windows-store-app-download-history-windows-10","guid":"58061 at http://winsupersite.com","categories":["apps","Downloads","history","how to","How-To","Windows 10","Windows Store"],"author":null,"date":"2015-08-10T15:10:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Adata PV110 power bank review","description":"It’s been a running joke with my friends that I am always going on a trip. My latest trip took me cross country as a passenger in a car, where my phone was very much needed for GPS, music, and entertainment. Most the time, my phone dies with my constant usage on trips, so I […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/VuBb1hPnBJY/","guid":"http://the-gadgeteer.com/?p=182104","categories":["Cables, Batteries and Chargers","Reviews","Backup Battery"],"author":"Ryan Chapman","date":"2015-08-10T14:00:29.000Z","enclosure":false,"custom_elements":[]},{"title":"Audible Gets a Windows 10 Makeover","description":"
Amazon has released a Windows 10 version of it's Audible app that brings a new UI and new features.
\n\n

read more

","url":"http://winsupersite.com/windows-10/audible-gets-windows-10-makeover","guid":"58051 at http://winsupersite.com","categories":["Audible","Windows 10"],"author":null,"date":"2015-08-10T13:55:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Vulkan Status Update: Will Use Feature Sets, Android Support Incoming","description":"

\"\"

Along with updates on OpenGL, Khronos is also offering a status update on the development of Vulkan at this year’s SIGGRAPH show. Khronos’s next-generation low-level API was announced last year, with further development taking off this year when it was announced at the API would be absorbing Mantle 1.0 and would operate under its current fiery name. The API is still in development, but Khronos has a few new pieces of information to share on the progress of development.

\r\n\r\n

Vulkan Feature Sets

\r\n\r\n

First and foremost, there has been a bit of speculation over how Vulkan would manage being a low-level API for both mobile and desktops, and Khronos is finally answering those questions. In the OpenGL ecosystem, new features would be exposed as optional extensions, and then standardized through core releases (e.g. OpenGL ES 3.2). Due to the factors that resulted in the creation of OpenGL ES, this was never a huge problem for either branch of OpenGL since each could be scoped as appropriate and integrated separately. However with Vulkan there is now just one API, and such a coarse approach would imply limiting Vulkan to just the features mobile GPUs could support, or making even more extensive use of extensions.

\r\n\r\n

\"\"

\r\n\r\n

To that end, today Khronos is announcing that Vulkan will support defined feature sets in order to help simplify application development and to more readily support mobile and desktop hardware under the same API. Feature sets, as implied by the name, will be groupings of features that will be advertised under a single feature set name, with the idea being that developers will build their programs against a handful of feature sets instead of a massive combination of individual extensions or capability bits (though developers can still use individual features if they’d like). Feature sets are nothing new to desktop graphics, with Microsoft’s DirectX standard having supported them since DirectX 11 in 2009.

\r\n\r\n

While Khronos is announcing that Vulkan will support feature sets, they are not announcing the individual feature sets, and for good reason. In traditional Khronos consortium fashion, Khronos is going to leave the feature set definitions up to the platform holder rather than define those sets themselves. This means that it will typically be the OS developer defining the feature sets, as will be the case on Android. However because Khronos is leaving this up to the platform holder, for holders who opt not to define feature sets for their Vulkan-enabled platforms, Khronos will step in and define those feature sets. In other words platform holders get first dibs, but either way someone will take on the task of defining the feature sets.

\r\n\r\n

Practically speaking, this means that while Android’s feature set will be defined by Google and one can expect SteamOS’s to be defined by Valve, Windows’ feature set will be defined by Khronos. Microsoft is a member of the Khronos consortium and could define it, however Microsoft has taken a hands-off approach on Khronos’s graphics APIs in recent years – presumably in favor of focusing on DirectX – so we’re not expecting to see Microsoft make those definitions. Feature definitions have always been a weak point of the Khronos consortium structure, so giving platform holders the right of first refusal will allow holders such as Google to break the deadlock of the consortium and dictate what features will be supported on Android. Otherwise Khronos will be able to get the job done, though one would expect not without the traditional politics of the consortium.

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
Vulkan Feature Set Definitions
PlatformExpected To Be Defined By
AndroidPlatform Holder - Google
SteamOSPlatform Holder - Valve?
LinuxKhronos?
WindowsKhronos (Platform holder Microsoft is anticipated to decline)
\r\n\r\n

Android Support

\r\n\r\n

Speaking of Android, along with announcing their support for OpenGL ES 3.2 today, Google is also announcing that they will be supporting Vulkan in a future release of Android. As with OpenGL ES 3.2, no specific timeline or version of Android is mentioned, though it’s a safe bet that it will be the 2016 release. Android has traditionally heavily relied on OpenGL ES, and with Google sewing further ties with Khronos with the Android Extension Pack, it’s not surprising that Android will include support for Vulkan in order to bring low-level graphics programming to the ecosystem’s developers.

\r\n\r\n

\"\"

\r\n\r\n

Apple, for what it’s worth, has been absent from the Khronos announcements. As the company is pushing Metal on both mobile and desktop, it looks unlikely that they will be adopting Vulkan any time soon. In which case Vulkan wouldn’t quite match OpenGL ES 3.0’s universal reach due to Apple’s reliance on proprietary APIs.

\r\n\r\n

Vulkan Conformance Tests Will Be Open Source

\r\n\r\n

Meanwhile on the testing and validation front, Khronos is announcing that they are teaming up with Google and the Android Open Source Project to release the Vulkan conformance tests as as open source tests. The tests themselves are being developed by Khronos members and contractors, with the Khronos/ASOP connection coming in to provide the frameworks. The tests themselves are portable to other platforms – Khronos made this point very clear in our briefing – but partnering up with Google helps Khronos get the tests out there sooner and to fulfil their open source goals.

\r\n\r\n

\"\"

\r\n\r\n

ETA: Late 2015

\r\n\r\n

Finally, Khronos is also offering a bit more guidance on when to expect the first revision of Vulkan. Khronos’s goal for the specification is to release it by the end of the year, which means they should be wrapping up development of the specification soon. Meanwhile driver/runtime development has been occurring concurrently with the development of the specification, which means that the first drivers will be ready at the same time. Khronos does require that there are working implementations before a specification is released to production, so with any luck Vulkan will be ready as a development target and for early end-user testing by the end of 2015.

\r\n\r\n

\"\"

\r\n\r\n

Update: And speaking of Vulkan's ETA, there are multiple Vulkan demos on the SIGGRAPH showfloor, demonstrating the API and the current status of vendor implementations. First out of the gate is Imagination, showing off a demo running on Android.

\r\n\r\n

\r\n

","url":"http://www.anandtech.com/show/9509/vulkan-status-update-will-use-feature-sets-android-support-incoming","guid":"tag:www.anandtech.com,9509:news","categories":["GPUs"],"author":"Ryan Smith","date":"2015-08-10T13:01:00.000Z","enclosure":false,"custom_elements":[]},{"title":"USB multimeters are an essential tool for every gadget owner","description":"Have you ever wondered why your cell phone is charging so slowly? Could it be an ill-suited wall charger, a bad mico-USB/lightning cable, or does your phone’s battery need replacing? Maybe you’ve wondered if there are truly any differences between different brands of micro-USB cables or how efficient your 10,000 mAh external battery charger is […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/g9EhDsnmBhw/","guid":"http://the-gadgeteer.com/?p=183219","categories":["Cables, Batteries and Chargers","Do-It-Yourself, How-To","News","DIY"],"author":"Kathleen Chapman","date":"2015-08-10T13:00:54.000Z","enclosure":false,"custom_elements":[]},{"title":"ASRock Rack C2750D4I and U-NAS NSC-800: A DIY File Server","description":"

Small businesses and power users often need the flexibility offered by a file server when compared to a dedicated NAS. This is where storage servers based on Microsoft's Windows Server offerings and systems based on Red Hat or Ubuntu Linux distributions come into play. These servers can be bought as an appliance or assembled in a do-it-yourself (DIY) fashion. Today, we will be looking at the latter approach using as ASRock Rack C2750D4I Intel Avoton mITX motherboard in a 8-bay U-NAS NSC-800 chassis.

","url":"http://www.anandtech.com/show/9508/asrock-rack-c2750d4i-and-unas-nsc800-a-diy-file-server","guid":"tag:www.anandtech.com,9508:news","categories":["NAS"],"author":"Ganesh T S","date":"2015-08-10T12:45:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Keep your phone charged and your path lit with Cydekick","description":"If you’re cyclist and a gadget geek, I’ve found the perfect Kickstarter project for you. Cydekick is a generator you attach to your bike that allows you to power a high intensity LED headlight. Additionally, you can purchase a USB hub allowing you to charge a phone, GPS, or action camera. It works using electromagnetic […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/w-vxTt6Dml0/","guid":"http://the-gadgeteer.com/?p=183217","categories":["News","Outdoor Gear","Bicycle","LED flashlight"],"author":"Dennis Moore","date":"2015-08-10T12:00:04.000Z","enclosure":false,"custom_elements":[]},{"title":"Windows RT will get some elements of Windows 10","description":"
Microsoft's current plans do not include a full Windows 10 upgrade for Windows RT based systems but they will receive a couple of the more visual aspects of the recently released OS from Microsoft.
\n\n

read more

","url":"http://winsupersite.com/windows-10/windows-rt-will-get-some-elements-windows-10","guid":"58041 at http://winsupersite.com","categories":["lock screen","Microsoft","start menu","Windows 10","Windows RT"],"author":null,"date":"2015-08-10T11:27:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Skylake CPU Package: Mini-Analysis","description":"

\"\"

As a short side piece from our in depth review on Intel's 6th Generation Core processors, codename Skylake, the well-known overclocker Splave has posted some very interesting images on the processor itself. We confirmed we are free to use the pictures below from him.

\r\n\r\n

\"\"
\r\nImage from Splave

\r\n\r\n

First up is an image of the Skylake i7 silicon die on package. With our trusty interpolation measuring skills, the die area for the GT2 enabled quad core system comes out at 9.05 mm by 13.52 mm, or 122.4 square mm. Let's put this into perspective with other dies:

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
CPU Specification Comparison
CPUProcess
\r\n\t\t\tNode
CoresGPUTransistor
\r\n\t\t\tCount
\r\n\t\t\t(Schematic)
Die Size
Intel Skylake GT2 4C14nm4GT2?122.4mm2
Intel Broadwell-H GT3e 4C14nm4GT3e??
Intel Haswell-E 8C22nm8N/A2.6B356mm2
Intel Haswell GT2 4C22nm4GT21.4B177mm2
Intel Haswell ULT GT3 2C22nm2GT31.3B181mm2
Intel Ivy Bridge-E 6C22nm6N/A1.86B257mm2
Intel Ivy Bridge 4C22nm4GT21.2B160mm2
Intel Sandy Bridge-E 6C32nm6N/A2.27B435mm2
Intel Sandy Bridge 4C32nm4GT2995M216mm2
Intel Lynnfield 4C45nm4N/A774M296mm2
AMD Trinity 4C32nm47660D1.303B246mm2
AMD Vishera 8C32nm8N/A1.2B315mm2
\r\n\r\n

\"\"

\r\n\r\n

This makes Skylake the smallest die size for a quad core desktop processor from Intel we have seen, and that is including the integrated graphics in that calcualtion. Depending on the exact architectural details, previously in Haswell the die area was a near even split for cores and graphics after the L3 cache and IO functions (PCIe, Memory, DMI) were removed. 

\r\n\r\n

We won't know exact transistor numbers until they are disclosed at Intel's Developer Forum in mid-August, as well as a false color image die shot to show how much die area the main parts of the architecture are using. Although given the similarity to Haswell in terms of feature set (it seems to be similar with a few minor additions such as fixed function units, slightly different libraries, dual memory channels, DMI 3.0, etc.), if we take the number of transistors that GT2 Haswell had (1.4 billion) and put them in the die area we measure from the image, this comes out to a 11.4 million transistors per mm2.

\r\n\r\n

Die size aside, Skylake also has a substantially thinner package than Devil's Canyon:

\r\n\r\n

\"\"
\r\nImage from Splave

\r\n\r\n

\"\"
\r\nImage from PCWatch

\r\n\r\n

According to PCWatch, the package thickness of the Core i7-4770K is 1.1mm, compared to 0.8mm for Skylake. This is a direct result of using fewer PCB layers, and here we count five for Skylake and eight for Haswell.

\r\n\r\n

There could be several reasons for this. The removal of the fully integrated voltage regulator (FIVR) might reduce the number of PCB layers for power planes. The nature of the 14nm die might facilitate a thinner package as well. The cynical answer is that it is used to drive down cost. In the motherboard industry, a PCB with more layers is substantially more expensive but simplifies design when there are more features - there's also a side argument if more layers or fewer layers is better for overclocking. If we transplant this thinking to the processor, it becomes a balance of cost vs. complexity. Either way, the retail price of the processor is still relatively consistent with the previous iterations. Another thought to add to the mix would be if Intel has plans in the works to launch higher end processors based on Skylake (Kaby Lake?) in the future. The slight change in Intel's processor naming scheme (4770K to 6700K, as in 70K to 00K) also points to the potential move later in the lifetime of the product. The only hint in the naming scheme from Intel is that the 'processor numbering reflects that these processors belong to the 6th Gen Intel Core family'.

\r\n\r\n

The thinness of the package has implications for removing the lid/heatspreader of the processor as well. Splave notes that previous heatspreader methods involving force, such as vices that were common during Haswell's tenure, may not be appropriate due to the thinness of Skylake. Splave shows an image of a failed attempt by another user on a Skylake CPU:

\r\n\r\n

\"\"
\r\nImage from Splave

\r\n\r\n

Instead, a razor method (and something warm such as a hairdryer or the bean bags that iFixit uses to warm up glue in smartphones to take them apart) to cut through the black adhesive between the package and the IHS is suggested and it what was used for the CPU above. As there are no FIVR resistors to worry about on the top of the package, the first resistance a razor blade will encounter after the black adhesive is the silicon die itself. All that being said, over at PCWatch they successfully have used a vice method.

\r\n\r\n

\"\"
\r\nImage from Splave

\r\n\r\n

Interestingly the heatspreader for Skylake is heavier than that from Haswell by nearly 20%, moving up from 22g to 26g. Given the copper mass that usually sits on a high end processor this should not matter much, although basic aluminium coolers might see a small benefit here by virtue of the minor extra mass. This might also just be that the mounting requirements for Haswell and Skylake are the same, and the extra mass comes from the added z-height required to maintain the mounting as before. 

\r\n\r\n

So why are we talking about removing the heatspreader? Back with Haswell (as well as Ivy Bridge to a degree), it was discovered that the thermal interface material between the silicon die and the heatspreader was both an insufficient amount and lower quality than previous generations, as well as the heatspreader being far away from the CPU due to the black adhesive, causing more air bubbles and poorer heat transfer than is optimal. For a stock processor, this difference has little effect to the use of the system, but for overclockers it meant that they were more thermally limited than silicon limited with their overclocking.

\r\n\r\n

\"\"
\r\nImage courtesy of Idontcare

\r\n\r\n

Devil's Canyon changed that - here was a better binned Haswell processor with a higher quality package, giving a ten degrees cooler system at load. It is worth noting that previously on certain platforms Intel had been providing a mixed metal interface (generalized as a soldered interface) between the silicon and the heatspreader, which is the best but most expensive option. If the cost of the interface is reduced by 0.1 cents, then that's a significant saving on millions of processors. Devil's Canyon was a small subset of sales, so spending that extra for that specific crowd could be seen as beneficial to Intel's perspective by overclockers.

\r\n\r\n

\"\"
\r\nImage from PCWatch

\r\n\r\n

To paraphrase Splave again, he comments that the thermal paste (TIM)o n his Skylake is certainly worse than that of Devil's Canyon. If the extra mass on the IHS is coming from a taller heatspreader (by virtue of the smaller package substrate), then more TIM is needed otherwise there will be substantial air bubbling of the TIM between the CPU and the heatspreader. By replacing his own thermal paste and resecuring the heatspreader, he saw an 18°C drop in temperatures at his highest air overclock with the old paste (5.1 GHz at 1.48 volts) - from 96ºC that overheated to 78ºC on the warmest core. An 18°C drop is immense. Under those conditions, and based on rough testing not published in our Skylake review, it could equal another 100-400 MHz depending on the quality of the processor. PCWatch confirms that switching out the paste with CoolLaboratory’s Liquid Pro (a liquid metal adhesion interface) reduced temperatures at 4.6 GHz from 88ºC to 68ºC

\r\n\r\n

\"\"
\r\nImage from PCWatch

\r\n\r\n

This throws up some questions - is this just a result of design decisions for cost, or is there a Devil's Canyon type processor coming later in the design cycle?

\r\n\r\n

Source: Overclock.net, PCWatch

\r\n

","url":"http://www.anandtech.com/show/9505/skylake-cpu-package-analysis","guid":"tag:www.anandtech.com,9505:news","categories":["CPUs"],"author":"Ian Cutress","date":"2015-08-10T10:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Intel Quietly Launches Mobile Xeons: Skylake Based E3-1500M v5","description":"

\"\"

In a rather understated blog post, Intel made an interesting move at the end of last week by announcing that for the first time the Xeon platform is heading for mobile workstation platforms.

\r\n\r\n

When I first heard this, I thought ‘wait, is it not already?’, given that I have seen laptops with Xeon processors in the past. The fact of the matter is that those previous platforms relied on desktop processors (either socketed or soldered) from the high end line and were only ever found in custom designs such as those from Clevo or Eurocom which promoted a more modular concept.  As a result, these systems were typically heavy, demanding, and featuring more cores/cache/TDP than was expected for a laptop. We also saw consumer processors for notebooks with vPro, but these were typically not ECC memory verified. Intel’s announcement today changes this.

\r\n\r\n

With specific mobile processors going Xeon, Intel can forge (with OEMs) a line of workstations that are more akin to the ultrabooks and notebooks we already see in the market but with certified professional level features. Intel is stating that by default all E3-1500M v5 processors will have vPro (which was to be expected) as well as Thunderbolt 3 using Type-C and access to ECC memory. So it does not become hard to imagine a professional version of the Dell XPS 13 or a MacBook / MacBook Professional type device that looks like a Core-M or a 15W clamshell with Thunderbolt 3, and/or ECC memory, while also having hardware-assisted security and ISV workstation level certification. It is our understanding we might expect announcements on specific products from manufacturers in the coming weeks.

\r\n\r\n

This announcement does not give details about what types of processors (if they might be dual core, quad core, or have eDRAM) will be coming to the market, only that the mobile workstation market (according to IDC’s most recent report) has showed its sixth straight quarter of year-over-year growth which is a big pointer into the decision to release Xeon on mobile. We will be getting more details as time progresses – with Intel’s Developer Forum conference a week away, we may hear something then.

\r\n\r\n

Source: Intel

\r\n

","url":"http://www.anandtech.com/show/9507/intel-quietly-launches-mobile-xeons-skylake-e3-1500m-v5","guid":"tag:www.anandtech.com,9507:news","categories":["CPUs"],"author":"Ian Cutress","date":"2015-08-10T09:34:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Aleutia Updates R50 and T1 Fanless Industrial PCs with Partial Copper Chassis","description":"

\"\"

Aleutia's fanless industrial PCs have seen deployment in a large number of developing countries as well as other extreme environments, thanks to their rugged nature and low power requirements. We reviewed the Aleutia Relia back in 2012, but, since then, a number of new models have been launched - the Aleutia R50 based on the NUC platform, the Aleutia T1 based on the Intel Atom lineup and the M200 fanless 2U servers with Intel Xeon CPUs.

\r\n\r\n

In an attempt to improve the thermal performance of their fanless computing systems, Aleutia has decided to go in for a novel chassis design along with their latest updates to the R50 and T1 families. The R50 is still based on the NUC platform, but the T1 moves to a nano-ITX design.

\r\n\r\n

\"\"

\r\n\r\n

The Aleutia R50 Broadwell NUC

\r\n\r\n

Traditional passively cooled systems involve a copper heatsink on the CPU transferring the heat to a larger chassis (made of steel or aluminum) through copper heat pipes. Copper heat sinks are quite costly (relative to the cost of the system as a whole) as one goes for bigger / heavier ones. Aleutia has re-imagined the chassis by developing a copper heat sink that has the same profile as the chassis itself (made clear in the photograph below).

\r\n\r\n

\"\"

\r\n\r\n

The holes in the heat sink help it get connected to the rest of the chassis. On the whole, this lends to theoretically better thermal performance and also lends a striking look to both the R50 and T1 PCs. In addition, the presence of more copper for heat dissipation purposes has allowed Aleutia to reduce the volume of the R50 by 24% compared to the Haswell version. We are excited to check out the thermal performance of these PCs once they start shipping later this month.

\r\n\r\n

\"\"

\r\n\r\n

The Aleutia T1 Bay Trail Nettop

\r\n\r\n

In terms of the internal platform itself, the R50 now comes with the Broadwell i3 and i5 (15 W TDP) NUC configurations, while the new T1s will be based on the Bay Trail Celeron J1800 (10 W TDP). The new R50 will come in at £599 for the i3 / 8GB / 128GB configuration - reasonable for industrial PCs, but not the average retail consumer. The T1 will come in around £100 - £200. We should have more information and hands-on time at the Intel Developer Forum later this month.

\r\n

","url":"http://www.anandtech.com/show/9504/aleutia-updates-r50-and-t1-fanless-industrial-pcs-with-partial-copper-chassis","guid":"tag:www.anandtech.com,9504:news","categories":["Aleutia"],"author":"Ganesh T S","date":"2015-08-10T07:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"FlipWrite iPad cover and keyboard review","description":"Can you believe that it has been 5 years since the first iPad was released to the public? I myself have been using one for several years now and would be lost without it. When I bought my iPad I did so with the intention of replacing a laptop for work, and while earlier versions […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/gtKFm7W9Ep8/","guid":"http://the-gadgeteer.com/?p=182135","categories":["Bluetooth Gear","Cases, Covers","iPhone, iPad, iPod","Reviews","iPad keyboard case"],"author":"Larry Geisz","date":"2015-08-09T20:35:00.000Z","enclosure":false,"custom_elements":[]},{"title":"iBobber + iPhone = The one that didn’t get away","description":"The next time you go fishing, you won’t have to guess where the best spots are if you have an iBobber. The iBobber is a small castable fish finder that works with your iOS device to show you where the fish are, how big they are, how deep they are (up to to 135ft) and […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/P5S7v9vA6V8/","guid":"http://the-gadgeteer.com/?p=183178","categories":["iPhone, iPad, iPod","News","Outdoor Gear","Camping","Fishing"],"author":"Julie Strietelmeier","date":"2015-08-09T15:23:54.000Z","enclosure":false,"custom_elements":[]},{"title":"Tru Virtu Cash & Cards 2 Wallet review","description":"I can’t wait until all transactions are private, digital and use whichever device you happen to have with you. I’ve carried a wallet for years, and it sometimes becomes the “George Castanza” wallet of Seinfeld fame, where one more piece of paper will cause it to explode. With that in mind, when Julie offered the team […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/6DGPVRUJZzQ/","guid":"http://the-gadgeteer.com/?p=182344","categories":["Reviews","Wallets","Wallet"],"author":"Smythe Richbourg","date":"2015-08-09T13:30:47.000Z","enclosure":false,"custom_elements":[]}]} \ No newline at end of file +{"title":"Technology","description":"Combined Tech Feed","generator":"rss-braider","feed_url":null,"site_url":"http://pipes.silvrtree.co.uk/tech.xml","image_url":null,"categories":null,"copyright":null,"webMaster":null,"geoRSS":false,"custom_namespaces":[],"custom_elements":[],"no_cdata_fields":[],"items":[{"title":"Tap your way to fame and fortune in Beat Bop, coming soon to Android","description":"

To be released by Fliptus Pty Ltd, Beat Bop is a tapping game where players are using their frantic tapping to crate music for fans. Players assume the same Le of a struggling guitar player, with aspirations of stardom. As players progress their character, they'll be recruiting band-mates to play with, and invest in merchandise that can be sold when not playing the game.

\r\n\r\n

Beat Bop is also set to include random tasks, that players can choose to try and win an \"extra boost\" (according to the presser), or will result in an accident that can cause a setback. Even the sound and tempo of the songs will dynamically respond to the performance of the player. Faster tapping, for example, will respond in amping up the music, while recruiting the aforementioned band mates will influence the style, based on what instruments they play.

\r\n

\r\n

Beat Bop Features:

\r\n

- Start with nothing. Recruit band members and load them up with new clothes and gear

- Dynamic and original soundtrack that matches the way you tap and the band members you play with

- Easy to play - simply tap to jam with your band and rake in money

- Sell merchandise in the background to get rich even while you're idle

- Polished, vibrant and light-hearted graphics

- Original soundtrack provided by Piotr Nowotnik

\r\n

Beat Bop is set go have a soft release in Australia and New Zealand on August 20th, and going global at a later date. The game is slated to be free with \"opt-in ads\". You can check out the game in action ahead of time with the trailer below.

\r\n

\"\"
","url":"http://feedproxy.google.com/~r/PlanetAndroidCom/~3/c5UF73zCvIU/9643-tap-your-way-to-fame-and-fortune-in-beat-bop-coming-soon","guid":"http://www.droidgamers.com/index.php/game-news/android-game-news/9643-tap-your-way-to-fame-and-fortune-in-beat-bop-coming-soon","categories":[],"author":"Ed Burnette","date":"2015-08-14T21:50:59.000Z","enclosure":false,"custom_elements":[]},{"title":"Dead Union is a new mobile FPS strategy game currently in a closed beta testing phase","description":"

A new FPS-strategy hybrid game will be arriving for mobile devices soon. Currently in the beta testing phase of development, Dead Union is a blend of FPS gameplay with base building strategy mechanics, and zombies of course. However this game may not be exactly what you are thinking it is.

\r\n\r\n

Essentially players will be building up their base with different defenses and other handy structures and items to help you survive. You will also have the ability to control zombies as your main type of military unit. This means you will be deploying different types of zombies to attack your opponent. Of course they will be able to do the same. When you are confronted with incoming zombies, you'll switch to a first-person perspective and handle them with your current weapon of choice.

\r\n

\r\n

Dead Union has a few different types of game modes available. While there is a single-player mode you can play through, following the storyline within the game, there also happens to be multiplayer PvP as well as X-Mode. The PvP mode is pretty self-explanatory. X-Mode is basically a survival game mode where you will be trying to survive as long as you can against waves of zombies.

\r\n

There are a few details we do not know just yet, with controller support being the main one. However, judging from how the onscreen controls are set up, anyone with a Shield tablet and Shield controller should be able to easily button map this game. The same goes for anyone using an app to button map controllers with their non-Shield device. Right now there is no specific release date announced, only that it is coming soon. As for price, it looks like Dead Union will be available for free with optional IAPs. More screenshots available below.

\r\n

Official Website: Dead Union

\r\n
\r\n

\r\n
\"\"
","url":"http://feedproxy.google.com/~r/PlanetAndroidCom/~3/HKHtTfvOMCw/9641-dead-union-is-a-new-mobile-fps-strategy-game-currently-in-a-closed-beta-testing-phase","guid":"http://www.droidgamers.com/index.php/game-news/android-game-news/9641-dead-union-is-a-new-mobile-fps-strategy-game-currently-in-a-closed-beta-testing-phase","categories":[],"author":"Ed Burnette","date":"2015-08-14T21:39:41.000Z","enclosure":false,"custom_elements":[]},{"title":"AMD's R9 Fury X is a beast, but 4K gaming is still a waste","description":"\n\nSince the rise of 3D graphics cards, the inexorable trend in PC gaming has been around getting bigger, better and faster. That led to a culture of PC gamers obsessing over frame rates and doing whatever it took to push their hardware as much as pos...","url":"http://www.engadget.com/2015/08/14/amd-r9-fury-x-irl/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/amd-r9-fury-x-irl/","categories":[],"author":"Devindra Hardawar","date":"2015-08-14T19:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"[The Android Police Podcast] Episode 173: Xooming Through Honeycomb","description":"

\"AP_AlbumArt_Final\"

Welcome back to another week of the Android Police Podcast. To catch us live on Hangouts On Air every Thursday at 5:30PM PST (subject to change as per the calendar widget below), just head over to androidpolice.com/podcast. For the unedited video show, click here. As always, we'll take your questions at 530-HELLO-AP and also at our email address: podcast at androidpolice dot com.

On this week's episode: On this week's show, we go back to Honeycomb, taking a look at Google's odd tablet-focused operating system that introduced us to the Holo design language.

Read More

[The Android Police Podcast] Episode 173: Xooming Through Honeycomb was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/XQHx-HxzDZY/story01.htm","guid":"http://www.androidpolice.com/?p=331549","categories":["honeycomb","android podcast","android police podcast","episode 173","video","galaxy s6 edge","android 3.1","Podcast","android 3.0","android 3.2","note 5","News"],"author":"David Ruddock","date":"2015-08-14T18:53:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Android Central's back to school guide","description":"

\n\n

It's time to go back to school, and we'll make sure you're well-equipped.

\n\n

For many students, it's time to hit the books again. Whether you're loading up for your first day at high school, finding your stride in college, or you're making the long haul in university graduate programs, we've got the best tech for back to school season right here.

\n\n
","url":"http://www.androidcentral.com/android-centrals-back-school-guide","guid":"48417 at http://www.androidcentral.com","categories":[],"author":"Simon Sage","date":"2015-08-14T18:43:45.000Z","enclosure":false,"custom_elements":[]},{"title":"Google Fi Outage? Tell Us Your Experience","description":"
\"FiA few of us here at the XDA offices recently switched from Straight Talk to Google Fi. Aside from the well-packaged welcome kit, with case, external battery, and headphones, we’ve
","url":"http://feedproxy.google.com/~r/PlanetAndroidCom/~3/oZBdRkBnNdw/","guid":"http://www.xda-developers.com/?p=122715","categories":["ANDROID","Discuss"],"author":"Mario Tomás Serrafero","date":"2015-08-14T18:43:19.000Z","enclosure":false,"custom_elements":[]},{"title":"iHome HomeKit and iSP5 Smartplug ready to make your home “smarter”","description":"The name 'iHome' has probably made you think of Apple but there's an Android compatible device known as the ‘iSP5 Smartplug’. iHome has finally introduced the iHome HomeKit that conveniently … Continue reading","url":"http://androidcommunity.com/ihome-homekit-and-isp5-smartplug-ready-to-make-your-home-smarter-20150814/","guid":"http://androidcommunity.com/?p=239452","categories":["Archive","Android","iHome","smart home"],"author":"R Padla","date":"2015-08-14T18:40:40.000Z","enclosure":false,"custom_elements":[]},{"title":"Apple Watch gets more band options for larger wrists","description":"\n\nIf you've been eying the Apple Watch, but needed a larger band to wear it comfortably, you're in luck. Cupertino added new accessories today to accommodate with a new L/XL Sports Band and Link Bracelet Kit that adds an extra 40mm to the 42mm metal...","url":"http://www.engadget.com/2015/08/14/apple-watch-xl-band-link-kit/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/apple-watch-xl-band-link-kit/","categories":[],"author":"Billy Steele","date":"2015-08-14T18:29:00.000Z","enclosure":false,"custom_elements":[]},{"title":"The Note 5 Marks the Decline of a Power User Flagship Line","description":"
\"notefeatureimage\"DISCLAIMER: This is an editorial based on early impressions. I will update my thoughts once I get a hands-on look next week. It is not just the S-pen, or the
","url":"http://feedproxy.google.com/~r/PlanetAndroidCom/~3/-hjFP7t5VDk/","guid":"http://www.xda-developers.com/?p=122704","categories":["ANDROID","Featured","OPINION","XDA FEATURE","editorial","note 5"],"author":"Mario Tomás Serrafero","date":"2015-08-14T18:26:42.000Z","enclosure":false,"custom_elements":[]},{"title":"Sony Adds The First 64-Bit Devices To Its Open Device Project","description":"

\"AOSP_Xperia_Z3-_660x384-660x384\"

Sony is ahead of most other OEMs when it comes to its support of open source. It contributes significantly to AOSP and even releases binaries for many of its devices so developers can build AOSP ROMs for them. Today, Sony is announcing support for the first three 64-bit devices in the Open Device project.

The new devices are the Xperia Z3+,  Xperia Z4 Tablet, and Xperia Z4 Tablet WiFi. Technically, we're talking about a phone and two versions of the same tablet, but it's nice they're supporting the mobile data version specifically.

Read More

Sony Adds The First 64-Bit Devices To Its Open Device Project was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/QoseNVNPAkQ/story01.htm","guid":"http://www.androidpolice.com/?p=331542","categories":["Sony","AOSP","open source","xperia z3","xperia z4 tablet","Xperia Z4 Tablet","sony","developers","News"],"author":"Ryan Whitwam","date":"2015-08-14T18:17:59.000Z","enclosure":false,"custom_elements":[]},{"title":"RHA turns it up to 20 with the T20 in-ear headphone","description":"Reid Heath Acoustics (RHA) is a an audio company with a problem. They can’t seem to let a new earphone be their signature product for more than a few months before they come up with one that tops that. Don’t these guys ever rest? Apparently not, because their excellent T10 earphone released less than a […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/7E7ZUKCVWaQ/","guid":"http://the-gadgeteer.com/?p=183616","categories":["Audio, Video, TV Gear","News","Earphones"],"author":"Bill Henderson","date":"2015-08-14T18:10:51.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung SM-G9198 flip phone officially announced in China, packing Snapdragon 808","description":"Last month TEENA, essentially the Chinese version of the FCC, revealed information on a new Samsung flip phone that was powered by Android and offered fairly high-end specs. Now it’s official.","url":"http://www.androidauthority.com/samsung-sm-g9198-flip-634219/","guid":"http://www.androidauthority.com/?p=634219","categories":["News","Samsung","Samsung SM-G9198"],"author":"Andrew Grush","date":"2015-08-14T18:10:40.000Z","enclosure":false,"custom_elements":[]},{"title":"Top 10 things to know about the OnePlus 2","description":"

\n\n
","url":"http://www.androidcentral.com/top-10-things-know-about-oneplus-2","guid":"48480 at http://www.androidcentral.com","categories":[],"author":"Russell Holly","date":"2015-08-14T18:02:43.000Z","enclosure":false,"custom_elements":[]},{"title":"Nipper charges your smartphone with just two AA batteries","description":"Powerbanks and battery extenders have been lifesavers so many times when our smartphones threaten to run out of juice (and the fear of that happening is already a “disease” as … Continue reading","url":"http://androidcommunity.com/nipper-charges-your-smartphone-with-just-two-aa-batteries-20150814/","guid":"http://androidcommunity.com/?p=239289","categories":["Archive","accessories","Android","charger","crowdfunded project"],"author":"Ida Torres","date":"2015-08-14T18:00:25.000Z","enclosure":false,"custom_elements":[]},{"title":"How to change your default save locations on Windows 10","description":"
Windows 10 allows you to select a different hard drive to store your documents, pictures, videos and music by default.
\n\n

read more

","url":"http://winsupersite.com/windows-10/how-change-your-default-save-locations-windows-10","guid":"58351 at http://winsupersite.com","categories":["default save locations","documents","files","Music","pictures","save","videos","Windows 10"],"author":null,"date":"2015-08-14T18:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Researchers find popular car immobilizer can easily be hacked","description":"\n\nImmobilizers are supposed to kill a vehicle's engine to prevent it from being stolen. However, a trio of researchers recently released a study that reveals the Megamos immobilizer system used by more than two dozen car manufacturers -- including Vo...","url":"http://www.engadget.com/2015/08/14/car-immobilizer-easily-hacked/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/car-immobilizer-easily-hacked/","categories":[],"author":"Andrew Tarantola","date":"2015-08-14T17:44:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Hugely successful YouTube star and best-selling novelist John Green says he feels like 'a fraud'","description":"

\"YouTube

There's this thing that really smart people do to themselves, where they convince themselves that they're not as good as their peers and that their success really comes down to luck and faking it.

This feeling is called Imposter's Syndrome. It's particularly rampant in the geek/hacker world, where intelligence of all kind is revered, genius coding is idolized, and famous genius coders have reputations for being insult-spewing dudes who don't suffer fools kindly (think: young Bill Gates, Mark Zuckerberg in the movie \"The Social Network\", or Linus Torvalds' famous rants).

Many tech professionals are working themselves into the ground, feeling that in order to keep up the facade of being smart and skilled, they need to worker longer and harder.

So, here's an interesting insight: Even some of the most successful people suffer from Impostor's Syndrome. Since we first reported on the rampage of Imposter Syndrome in the tech industry, we've noticed more brave souls going public about their own battle.

On Thursday during a Reddit AMA, another brave soul confessed: author and YouTube star John Green.

Green is the author of best-selling novels \"Looking for Alaska,\" \"Paper Towns\" and \"The Fault in Our Stars.\" (\"The Fault\" was beautifully written and filled with memorable lines like this one: \"'As he read, I fell in love the way you fall asleep: slowly, and then all at once.\")

G\"hankreen is also known for his mega popular vlogbrothers YouTube channel with his brother Hank, and his educational video channels Crash Course,and Mental Floss. All told, the Greens have a following of 10 million people across all their channels.

This guy has Imposter's Syndrome? Yup. 

When a recent grad student asked him if he ever had writer's block and worried that he'd never write again, Green replied:

I mean I haven't published a novel for three and a half years, so....yeah.

I feel this way all the time. People often use the phrase \"literally the worst\" colloquially, but I have on countless occasions felt that I am literally the worst writer on Earth, and that I am a complete fraud. I feel like a fraud all the time, and I still don't feel like I know how to write a novel, and at this point I doubt I ever will.

The only way through it for me is to take pleasure in the process of writing, or to find value in it. Even when I suck. Even when there's no way anything I'm writing will ever see the light of day. The act of trying to write for an audience must feel valuable in and of itself, or else I am doomed.

As another Imposter's Syndrome sufferer once advised: The trick to making these terrifying feelings of insecurity go away, even temporarily, is to talk about it and discover you are not alone.

Which means if we're all really \"faking\" our way to success, maybe even greatness, how fake can we really be?

SEE ALSO: 15 things you didn't know about billionaire Microsoft founder and philanthropist Bill Gates

Join the conversation about this story »

NOW WATCH: People doing backflips on a two-inch wide strap is a real sport called slacklining










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/C_G35lBGd04/youtubes-john-green-has-imposters-syndrome-2015-8","guid":"http://www.businessinsider.com/youtubes-john-green-has-imposters-syndrome-2015-8","categories":[],"author":"Julie Bort","date":"2015-08-14T17:41:58.000Z","enclosure":false,"custom_elements":[]},{"title":"Prana: an LED exhibit that breathes with you","description":"\n\n\n\n\nAs you step into the shimmering globe of 13,000 LEDs, a sensor detects your presence. It reacts to the rise and fall of your lungs and illuminates the sphere of suspended lights called PRANA. The signal from the chip works its way to a computer...","url":"http://www.engadget.com/2015/08/14/led-exhibit-breathes-with-you/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/led-exhibit-breathes-with-you/","categories":[],"author":"Mona Lalwani","date":"2015-08-14T17:30:00.000Z","enclosure":false,"custom_elements":[]},{"title":"The SuperSite Windows 10 How To Collection: Customize your experience","description":"
Part of the pleasure of updating an operating system is the ability to make it look, feel and act exactly as you want it to. Here are all of our how-tos outlining the ways you can make Windows 10 more fully yours.
\n\n

read more

","url":"http://winsupersite.com/windows-10/supersite-windows-10-how-collection-customize-your-experience","guid":"58291 at http://winsupersite.com","categories":["Cortana","Mail App","Microsoft Edge","Windows 10"],"author":null,"date":"2015-08-14T17:21:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Blackview packaging turns into a Google Cardboard VR viewer","description":"We haven't heard of the Blackview brand before but the Alife P1 Pro definitely got our attention because of its very unique packaging. Why, the cardboard box that houses the … Continue reading","url":"http://androidcommunity.com/blackview-packaging-turns-into-a-google-cardboard-vr-viewer-20150814/","guid":"http://androidcommunity.com/?p=239107","categories":["Archive","Android","App","Google","Google Cardboard","virtual reality","VR"],"author":"R Padla","date":"2015-08-14T17:20:27.000Z","enclosure":false,"custom_elements":[]},{"title":"Our Galaxy Note 5 forums are open!","description":"

\n\n

The Galaxy Note 5 clearly was the big winner from Thursday's Samsung Unpacked event — if you don't live in Europe, anyway — and that means the discussions are really starting to heat up in our Note 5 forums.

\n\n
","url":"http://www.androidcentral.com/our-galaxy-note-5-forums-are-open","guid":"48487 at http://www.androidcentral.com","categories":[],"author":"Phil Nickinson","date":"2015-08-14T17:11:06.000Z","enclosure":false,"custom_elements":[]},{"title":"Police believe alleged gang leader posted a chilling Facebook update after beginning bloody standoff","description":"

\"Garland

An alleged Bloods gang leader suspected of engaging in a bloody standoff on Friday in New York City appears to have posted an ominous update on his Facebook page as the confrontation began. 

A law enforcement source told Business Insider the New York City Police Department believes this Facebook page belongs to Garland Tyree, who has been identified as the suspect.

According to The New York Times, the standoff began at about 6 a.m. on Friday. At 6:19 a.m., a chilling note was posted on the Facebook page.

\"Today I die,\" the note said.

On Friday afternoon, an NYPD spokesperson told Business Insider the standoff suspect was \"dead.\"

According to the local Staten Island Advance newspaper, sources have described Tyree \"as the leader of the Bloods on the East Coast.\"

Police have said he barricaded himself in his home and set it on fire when marshals attempted to arrest him on a probation violation warrant Friday morning. The Advance also reported Tyree has a lengthy criminal record and allegedly shot a firefighter who responded to the blaze in his home. 

The Facebook page police believe belonged to the suspect is listed as belonging to a man named \"Garland Tyree.\" It features multiple photos of a man in what appears to be a prison uniform. Photos on the page show the man wearing the red colors associated with the Bloods and some feature red bandana imagery that is one of the gang's main symbols.

One of these pictures is a birthday invite for Tyree that describes him as \"a real G,\" which is slang for gang member. Another picture on the page shows piles of money. Other photos posted on the Facebook show news articles about gang crimes on Staten Island and one shows a draft of a novel raging about \"a rat.\"

View some photos from the Facebook page below.

\"garland

\"garland\"Garland

 

Join the conversation about this story »

NOW WATCH: This is the 'Fallout 4' video fans have been waiting months to see










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/k8wMAGl922U/bloods-standoff-chilling-facebook-post-2015-8","guid":"http://www.businessinsider.com/bloods-standoff-chilling-facebook-post-2015-8","categories":[],"author":"Hunter Walker","date":"2015-08-14T17:08:34.000Z","enclosure":false,"custom_elements":[]},{"title":"The White House just released President Obama's vacation playlists on Spotify","description":"

\"obama

On Thursday, the White House announced President Obama's summer reading lists.

On Friday, the White House has followed up by releasing President Obama's two \"summer vacation\" playlists on Spotify (sorry, Apple Music).

The president's \"Day\" playlist has 20 high-energy tracks from artists like Coldplay, Brandi Carlisle, and Florence + the Machine.

The more laid-back \"Night\" playlist includes songs from The Lumineers, Al Green, and Van Morrison.

The playlists, uploaded on the official White House Spotify account, even have their own Twitter hashtag: #POTUSPlaylist.

“President Obama hand-picked his favorite songs for a summer playlist,” according to the White House's Spotify account. 

Obama announced the playlists himself on Twitter:

Due to popular request, here are my vacation playlists: http://t.co/uer5sIl4Vk http://t.co/zHEekHvQBr What's your favorite summer song?

— President Obama (@POTUS) August 14, 2015

You can check out both playlists below.

 

 

SEE ALSO: The story of Tidal: How a European startup no one ever heard of got bought by Jay Z and became one of the best-known music companies in the world

Join the conversation about this story »

NOW WATCH: We unearthed Donald Trump's Vine account from 2013 and it's incredible










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/xLpSXTWrzzY/obama-spotify-playlist-2015-8","guid":"http://www.businessinsider.com/obama-spotify-playlist-2015-8","categories":[],"author":"Maya Kosoff","date":"2015-08-14T17:03:28.000Z","enclosure":false,"custom_elements":[]},{"title":"You can now restore deleted iCloud files, contacts and calendars","description":"\n\nIf you've ever accidently deleted a file in a cloud service (or worse had someone delete a shared file) you know that any restore feature is a god send. Apple recently launched its own file restore feature for iCloud.com users that resurrects files...","url":"http://www.engadget.com/2015/08/14/icloud-restore/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/icloud-restore/","categories":[],"author":"Roberto Baldwin","date":"2015-08-14T17:01:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Membership-based delivery services are beginning to disrupt the $600 billion-a-year grocery industry","description":"

\"bii

The cost and complexity of delivering groceries is what ultimately led to the downfall of Webvan and other startups that have tried to disrupt the $600 billion-a-year grocery industry. 

But a new wave of promising delivery startups are relying on a tried-and-true model to disrupt groceries: membership.

Membership grocery services help secure consumers as repeat customers and allow companies to lower individual shipping fees on every order. Shipping fees are typically a big barrier to grocery delivery because orders must be delivered fast to guarantee freshness.

The grocery delivery model is attractive because it guarantees that customers are getting fresh food straight from their local supermarket, without having to waste time in the store. The typical American family of four visits the grocery store twice a week, according to the USDA.

In a new report from BI Intelligence, we define what an e-commerce membership program is and how retailers are taking the Costco model and updating it for online grocery shopping. We also assess the advantages and disadvantages of e-commerce membership programs for the retailer, as well as what consumers might look for in these programs and what incentives are needed to get people to sign up.

Access the Full Report By Signing Up For A Risk-Free Trial Membership Today >>

Here is a small sample of the e-commerce membership programs that we examine in the report: 

  • Amazon: Amazon charges Prime customers $99 annually ($299 for Amazon Prime Fresh) in exchange for a bevy of benefits ranging from free two-day shipping to access to premium video and music content, as we've said. We estimate that there are approximately 53 million Prime members worldwide — and 25% of those members live outside the US.
  • Instacart: The grocery delivery service partners with Whole Foods, Costco, and Safeway, among others, and offers a membership program called Instacart Express, which costs $99 annually — in exchange, members get free two-hour delivery on all grocery orders. Customers who use Instacart but do not sign up for the membership program must pay $3.99 per delivery.
  • Shipt: This is another service very similar to Instacart, which has its own grocery delivery membership program called MemberShipt. Members pay $49 annually and get free one-hour deliveries on orders over $35. Shipt is the delivery partner for Publix — one of the five largest supermarket chains in the US.
  • Thrive Market: The newly launched organic grocer and wellness retailer asks customers to pay an annual fee of $60 for access to products that are supposedly \"always 25 or 50 percent\" cheaper compared to competitors. (There is no non-membership version of the service.) Thrive Market has referred to itself as a sort of Costco-like retailer for health-conscious consumers. 

In full, the report:

To access the full report from BI Intelligence, sign up for a 14-day trial here. Members also gain access to new in-depth reports and hundreds of charts on the digital industry.

\"shipt\"

Join the conversation about this story »

NOW WATCH: This is what happens to your brain and body when you check your phone before bed










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/oHp9EF41_dQ/e-commerce-disrupting-grocery-industry-2015-4","guid":"http://www.businessinsider.com/e-commerce-disrupting-grocery-industry-2015-4","categories":[],"author":"Cooper Smith","date":"2015-08-14T17:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"These are the 19 most game-changing weapons of the 21st century","description":"

\"Screen

The imperatives of the military have always been one of the main drivers of technological development.

ARPANET, one of the internet's most important precursors, was a Pentagon project while most of the technology in an iPhone originated with the US Department of Defense.

Just as smart gadgets have invaded our homes and revolutionized our lives over the last 15 years, next-level weaponry has transformed the military.

Today, militaries and irregular forces around the world are still pushing technological boundaries. 

Everything from concealed roadside bombs — cheap, primitive, and deadly  — to multibillion-dollar aerial lasers have transformed conventional methods of combat and altered the world's technological and political landscape.

Here are 19 of the most important weapons of the last 15 years.

Massive Ordnance Penetrator bombs

\"\"

America's largest conventional bomb is precision-guided, weighs 30,000 pounds, and can blast through underground bunkers.

Boeing's Massive Ordnance Penetrator (MOP) bomb is designed to pierce 60 feet of reinforced concrete and then detonate 200 feet underground. 

After the MOP's first successful test in 2007, the US Air Force ordered an arsenal of these mega-bombs, which are now considered a \"plan B\" for striking at Iran's hardened nuclear facilities should the need ever arise.



The Chinese anti-satellite program

\"\"

In January of 2007, China initiated a worrying new era in warfare. Using a C-19 ballistic missile, the People's Liberation Army destroyed an out-of-commission weather satellite flying over 500 miles above the surface of Earth.

In a single widely condemned move, China had militarized outer space. The long-term consequences are startling: If satellites are considered legitimate military targets, attacks could create debris fields that would knock out entire orbits or create chain reactions that might destroy vital communications and global-positioning satellites. Similarly, countries could deploy weapons to outer space capable of destroying terrestrial targets once the global taboo against space warfare disappears.

If that alarming worst-case scenario ever comes to pass, future generations could identify the successful 2007 test as the moment that space became a military frontier. The test also displayed China's eagerness to develop weapons that its rivals would probably never use — showing how a state can use asymmetrical means to close the gap with it more powerful opponents.



The X-47B

\"\"

The Navy's X-47B is a strike-fighter-sized unmanned aircraft with the potential to completely change aerial warfare.

Northrop Grumman's drone is capable of aerial refueling, 360-degree rolls, and offensive weapon deployment. It's carried out the first autonomous aerial refueling in aviation history, and has also taken off and landed from an aircraft carrier.

It cruises at half the speed of sound, and has a wingspan of 62 feet — as well as a range of at least 2,400 miles, which is more than twice that of the Reaper drone.



See the rest of the story at Business Insider








\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/3qFjMR0YyQM/21st-century-game-changing-weapons-2015-5","guid":"http://www.businessinsider.com/21st-century-game-changing-weapons-2015-5","categories":["MOP"],"author":"Armin Rosen, Jeremy Bender and Amanda Macias","date":"2015-08-14T16:45:01.000Z","enclosure":false,"custom_elements":[]},{"title":"High performance SHIELD games get SHIELD Android TV compatibility","description":"Don’t you just hate it when NVIDIA plainly tells you that your device is not good enough for a specific game? And no, we don’t mean that in a relational/metaphysical … Continue reading","url":"http://androidcommunity.com/high-performance-shield-games-get-shield-android-tv-compatibility-20150814/","guid":"http://androidcommunity.com/?p=239366","categories":["Archive","Android","Android TV","App","games","Gaming","nvidia","NVIDIA SHIELD"],"author":"John Hoff","date":"2015-08-14T16:40:14.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung Galaxy Note 5: what it packs and what it lacks","description":"In this post we will focus on the things that make the Samsung Galaxy Note 5 special, as well as the lacking elements that could have made it an outstanding phone.","url":"http://www.androidauthority.com/samsung-galaxy-note-5-good-bad-missing-634068/","guid":"http://www.androidauthority.com/?p=634068","categories":["Features","Opinions","Samsung","Samsung Galaxy Note 5"],"author":"Edgar Cervantes","date":"2015-08-14T16:33:43.000Z","enclosure":false,"custom_elements":[]},{"title":"Comcast is about to launch a major video platform called Watchable to rival Facebook and Google","description":"

\"brian

Comcast is preparing to launch a major new video platform with content from big-name partners in the coming weeks, Business Insider has learned.

The platform is currently called \"Watchable,\" but there's a small chance that could change before launch.

The Information's Amir Efrati previously reported that Comcast was thinking of launching a digital video service, but here are more of the details.

Comcast is partnering with major digital publishers like Comcast-backed Vox and Buzzfeed, lifestyle, and comedy sites like AwesomenessTV, Refinery29, and The Onion, news sites like Mic and Vice, as well as legacy brands like NBC Sports to come up with a widespread digital-video platform that will rival YouTube and Facebook's online video efforts.

It will also rival the rumored video platform Verizon is preparing to unveil.

The full list of partnering media companies is still being determined, sources say, but participants are committing to Comcast for up to a few years. As part of the partnership, the publishers have agreed to upload all unlicensed, original video content to Watchable for users to stream on demand. The content from the publishers will be bundled and curated for Comcast's millions of Xfinity X1 box owners, and eventually Watchable will also be available on iOS and Android devices. 

Comcast already has a smart-TV solution called Xfinity. The X1 set-top boxes allow users to stream unlimited amounts of movies and shows on demand from their televisions or mobile devices. 

Over the next few years, sources say, Comcast plans to switch out all of its subscribers' boxes for X1 boxes, which could extend a platform like Watchable from just a few million households today to tens of millions of Comcast subscriber homes by 2017.

\"ComcastComcast is hoping to establish itself as the digital-video advertising leader, sources familiar with Watchable say.

\"Comcast is currently the largest seller of video ads in the United States,\" one says. \"As platforms shift to digital, Comcast doesn't want to lose market share, but they're losing it to YouTube and Facebook.\"

Publishers get exposure; Comcast saves licensing fees

Publishers seem interested in Comcast's platform for two reasons.

  1. It's a new marketing opportunity, allowing online-only brands to get in front of TV watchers.
  2. It's a potential big new revenue stream.

Watchable could help digital publishers make a critical leap from being online-only brands to household names among traditional television viewers. If digital-media companies can successfully cross that chasm, their brands will become much more valuable, and they'll be able to attract the massive advertising dollars cable networks have long enjoyed. 

\"Everybody is looking to see how digital companies are going to be able to produce video content that can move the needle in a meaningful way,\" one publisher told Business Insider.

If Watchable takes off, it could also become a significantly cheaper content model for Comcast as well. Currently, Comcast has to dole out cash on a per-subscriber basis to networks like ESPN and CNN. But Comcast won't pay any licensing revenue to Watchable partners, only advertising revenue. 

Deals are nonexclusive, so publishers will still be able to post content natively to Facebook.

Comcast Watchable is just the latest solution to emerge in the ongoing video-platform wars. In the end there could be one big winner, or multiple. One source likened the current video environment to driving through a tunnel and being unsure what you're going to find on the other side.

\"I think on any of these [Comcast or Facebook] platforms there will be a hybrid of traditional TV content and then the digital players. It will be really interesting to see how things shake out over the next 18 months.\"

Comcast declined to comment for this story.

SEE ALSO: Snapchat, Twitter, and Facebook are at war over the future of news — and one of them tried to buy a media company

Join the conversation about this story »

NOW WATCH: We Tried The Streaming Service That The Networks Are Trying To Shut Down — It's Amazing










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/LGUekH-ufxw/comcast-to-launch-digital-video-platform-watchable-2015-8","guid":"http://www.businessinsider.com/comcast-to-launch-digital-video-platform-watchable-2015-8","categories":[],"author":"Alyson Shontell","date":"2015-08-14T16:27:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung shows off a 2.5-inch hard drive with 16TB of storage","description":"\n\nHard drives are as ubiquitous as the desktops or they're made for. But as technology evolves, manufacturers continue to make these faster and smaller than ever before. Case in point: Samsung, which has developed the world largest hard drive, packin...","url":"http://www.engadget.com/2015/08/14/samsung-worlds-largest-hard-drive/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/samsung-worlds-largest-hard-drive/","categories":[],"author":"Edgar Alvarez","date":"2015-08-14T16:27:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Sony Updates 'Live On YouTube' Xperia-Exclusive Live Broadcasting App With Pause, Mute, Tags, And More","description":"

\"LOYT\"

Sony's awkwardly named \"Live on YouTube\" app has one purpose, to let you broadcast your video live to YouTube. The latest update adds a few features that make life easier for users. For starters, you can now pause as you're recording. Alternatively, if you're fine with people seeing what's going on but don't want them to hear everything, you can now mute the stream as well.

\"LOYT1\" \"LOYT3\"

Pictures courtesy of XperiaBlog

Version 1.00.54 doesn't just deal with presentation.

Read More

Sony Updates 'Live On YouTube' Xperia-Exclusive Live Broadcasting App With Pause, Mute, Tags, And More was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/S_l0DGnU9Fk/story01.htm","guid":"http://www.androidpolice.com/?p=331536","categories":["Applications","video","youtube","sony","xperia","live streaming","News"],"author":"Bertel King, Jr.","date":"2015-08-14T16:12:35.000Z","enclosure":false,"custom_elements":[]},{"title":"Become a hero and conquer the world in Vikings: War of Clans","description":"If you’re familiar with the historical Vikings (or even just watch the TV series on History Channel), then you’d basically know what to expect when a video game is named … Continue reading","url":"http://androidcommunity.com/become-a-hero-and-conquer-the-world-in-vikings-war-of-clans-20150814/","guid":"http://androidcommunity.com/?p=238773","categories":["Archive","Android","App","games","Gaming"],"author":"Ida Torres","date":"2015-08-14T16:00:35.000Z","enclosure":false,"custom_elements":[]},{"title":"The Samsung Galaxy Note 5 and Galaxy S6 Edge+ may come in 128GB variant (Update: Nope)","description":"According to Samsung's official website, the Galaxy Note 5 and S6 Edge+ are both listed with 128GB variants, even though Samsung only announced the devices would come in 32 and 64GB options.","url":"http://www.androidauthority.com/samsung-galaxy-note-5-s6-edge-128gb-633983/","guid":"http://www.androidauthority.com/?p=633983","categories":["News","Samsung","Samsung Galaxy Note 5","Samsung Galaxy S6 Edge","Samsung Galaxy S6 Edge Plus"],"author":"Jimmy Westenberg","date":"2015-08-14T16:00:06.000Z","enclosure":false,"custom_elements":[]},{"title":"The best voice recorder","description":"\n\nThis post was done in partnership with The Wirecutter, a list of the best technology to buy. Read the full article here.\n\nAfter 36 hours of research, testing eight different devices in a number of real-world settings and then playing the audio we c...","url":"http://www.engadget.com/2015/08/14/the-best-voice-recorder/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/the-best-voice-recorder/","categories":[],"author":"The Wirecutter","date":"2015-08-14T16:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"DirecTV has been ordered to stop trashing cable TV in its ads — but even the ad regulator admits the Rob Lowe spots 'are very funny' (DTV, CMCSA)","description":"

The US ad regulator has told digital TV provider DirecTV to stop trashing cable in its ads.

Actor Rob Lowe and a number of his alter-egos have appeared in a series of humorous ads over the past few months, claiming DirecTV is superior to cable in terms of service wait times, signal reliability, picture and sound quality, and that it has better sports programming.

Back in April, Comcast complained about the ads to the National Advertising Division, a regulatory unit that investigates controversial ads. The NAD recommended the spots be discontinued because DirecTV did not submit substantiation for its \"superior\" claims in the investigation, and that disclosures in the ads themselves about the company's customer-satisfaction ranking, sports-programming charges, and picture quality were \"inadequate.\"

At the time, DirecTV said it was planning to replace the ads anyway with spots showing Sports Illustrated swimsuit edition cover model Hannah Davis and a singing, talking horse.

Nevertheless, a five-member panel of the National Advertising Review Board (NARB) — the appellate unit of the US advertising industry's self-regulatory system — reviewed the NAD's decision. The verdict was published on Friday.

The panel noted that the Rob Lowe commercials \"are very funny,\" but added that \"depending on the context, even humorous advertisements can convey messages that require substantiation by the advertiser.\"

In summary, the NARB decided:

The panel agreed with the NAD that the ad conveyed a message that DirecTV is \"superior to cable.\"

The panel agreed with the NAD that DirecTV's claim about \"up to 1080\" should be modified to include a disclosure that this is limited only to programming where the resolution is available

The panel did not agree with the NAD's findings that DirecTV's \"Scrawny Arms Rob Lowe\" commercial reasonably implied all sports programming was available in the service's $19.99/month introductory bundle. The NARB recommended DirecTV make a clearer disclosure.

The panel agreed DirecTV had appropriate substantiation for its \"#1 in customer satisfaction over all cable TV providers claim\" but recommended it more prominently disclose the source of the information.

DirecTV did not agree with all aspects of the decision, but said in a statement: \"DirecTV is a strong believer in the self-regulatory process and will take the NARB’s recommendations into consideration when making these claims in the future.\"

However, DirecTV added that it \"continues to believe that consumers do not perceive comparative superiority claims in the Rob Lowe advertisements. Whether from news accounts or social media, it is clear that consumers appreciate and understand the central role that humor and exaggeration play in the Rob Lowe advertisements.\"

SEE ALSO: There is a 'disturbing' issue plaguing the advertising industry — yet the major ad agencies deny there's a problem

Join the conversation about this story »

NOW WATCH: How to speak without bias, according to the 'Bias-Free Language Guide'










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/PFVGcBGvlMw/us-ad-regulator-tells-directv-to-stop-ordering-consumers-to-get-rid-of-cable-2015-8","guid":"http://www.businessinsider.com/us-ad-regulator-tells-directv-to-stop-ordering-consumers-to-get-rid-of-cable-2015-8","categories":["NARB"],"author":"Lara O'Reilly","date":"2015-08-14T15:53:28.000Z","enclosure":false,"custom_elements":[]},{"title":"New Android M teaser video asks “What’s M gonna be?”","description":"What will Android M’s final name be? While we are still at the guessing stage, a new teaser video from Google employees Nat and Lo indicates that we are getting closer to finding out.","url":"http://www.androidauthority.com/google-android-m-teaser-634186/","guid":"http://www.androidauthority.com/?p=634186","categories":["News","Android M"],"author":"Andrew Grush","date":"2015-08-14T15:49:32.000Z","enclosure":false,"custom_elements":[]},{"title":"The first things to do when you get your Moto G 2015","description":"

\n\n

The first things to do when you get your Moto G 2015

\n\n

For more than a few of us, the Moto G 2015 will be our first Android smartphone. It might even be the first smartphone experience for some of us. That's cool, and welcome to the fold.

\n\n

A first experience with an Android phone isn't likely to be confusing, but there are a few tricks to make the initial experience a little smoother.

\n\n

If you're an old pro, you still might know someone who could use a few tips. Treat them right, and tell them to come visit us!

\n\n
","url":"http://www.androidcentral.com/first-things-do-when-you-get-your-moto-g-2015","guid":"48422 at http://www.androidcentral.com","categories":[],"author":"Jerry Hildenbrand","date":"2015-08-14T15:48:19.000Z","enclosure":false,"custom_elements":[]},{"title":"Hillary Clinton and Donald Trump have already become instant Vine celebrities on the campaign trail","description":"

This election season looks like it may bring the American people what they're clamoring for most — a new Vine star.

So far both Hillary Clinton and Donald Trump have made their way to the 6-second video platform after some internet-savvy folks created entertaining clips out of footage from Snapchat videos and public appearances.

This Vine of Trump (uploaded by CNN!) is seeing a ton of traction this week with over 2 million loops. 

Gawker reports on the context: “Jeb Bush or Hillary, or one of these politicians, all controlled by lobbyists and special interests — and donors, people like me from previous months — total control. Bing bing, bong bong bong, bing bing. You know what that is, right?”

Meanwhile, Hillary Clinton has become her own meme.

From Motherboard: 

In one of the many half-hearted political attempts to engage with ~millennials~,Hillary Clinton shared a Snapchat back in July where she held the phone way too close to her face to let her audience know she was “just chillin’...in Cedar Rapids.”

Someone was able to snag that video and upload it to Vine, allowing others the opportunity to use it (or rip its audio) in countless ways.

Uploaded on July 18, the above Vine has over 17 million loops. Now other Vines are popping up everywhere, Motherboard reports, like this one, which mashes Blink182's song, \"I Miss You,\" with the Cedar Rapids Vine. 

\"Where are you?\" Blink182 sings.

\"I'm just chillin, in Cedar Rapids!\" Clinton replies.

Then there are these kids, who didn't use any editing effects for their video. They just really like saying \"Chillary Clinton.\"

As it is with the race to the oval office, it is too early to tell which presidential hopeful will end up being the next big Vine celebrity. We'll keep you posted.

Join the conversation about this story »

NOW WATCH: Meet 'The Fat Jewish,' Instagram's cult phenomenon with 5.5 million followers










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/hkGHcEWDLPg/vines-of-hillary-clinton-and-donald-trump-2015-8","guid":"http://www.techinsider.io/vines-of-hillary-clinton-and-donald-trump-2015-8","categories":[],"author":"Caroline Moss","date":"2015-08-14T15:46:00.000Z","enclosure":false,"custom_elements":[]},{"title":"HP will have the most diverse tech boards in the US, say activists (HP)","description":"

\"Meg

Hewlett-Packard is preparing to diverge into two companies this November, but it can also claim a new achievement for diversity in the national tech workspace.

HP now has the \"most diverse\" boards in the US, according to the nonprofit Rainbow PUSH.

The HP boards, announced earlier this week, will feature a blend of original members and new hires. Four women and two people of color will be placed on each board, reported Forbes.

Rainbow PUSH is an organization focused on social change and has been urging technology companies across the country to hire underrepresented minorities.

The nonprofit has especially ramped up its efforts in the past year, meeting with tech behemoths across the country, including Apple and Google, to discuss their diversity numbers. A survey conducted by the group last fall found only three blacks and one Hispanic among the 189 board members from 20 technology companies examined.

There were also \"153 men and just 36 women. Eleven (over half) have all-white Boards,\" Reverend Jesse Jackson, who is spearheading Rainbow PUSH, said in a press release. He later added, \"Certainly there is a long way to go.\"

Last March, the nonprofit met with HP at its shareholder meeting to talk about its numbers.

\"We challenged them — and the tech industry — to confront the virtual exclusion of women and people of color in the tech industry,\" Rev. Jackson said. \"HP committed to make demonstrable strides in expanding diversity and inclusion.\"

At HP Enterprise, Leslie A. Brun from Sarr Group, and Pamela Carter, former president Cummins Distribution, are both people of color who will be joining. The board has 13 members in total, according to an HP press release. Heading the team will be Pat Russo, who became a part of the HP board in 2011.

The board at HP Inc. will include Stacy Brown-Philpot, chief operating officer at TaskRabbit, and Stacey Mobley, former senior vice president at DuPont. Twelve people will help oversee HP Inc., which focuses on the printer and PC businesses.

HP CEO Meg Whitman will sit on both boards and serve as chairwoman for HP Inc.

“The post-separation Boards for both Hewlett Packard Enterprise and HP Inc. comprise leaders with some of the most diverse backgrounds and professional experiences I’ve seen in my career,” Whitman said in HP's press release.

Join the conversation about this story »

NOW WATCH: Sony has been working on this PlayStation game for 8 years — and the trailer is absolutely beautiful










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/L2y9yJ9zmrw/hp-will-have-the-most-diverse-tech-boards-in-the-us-2015-8","guid":"http://www.businessinsider.com/hp-will-have-the-most-diverse-tech-boards-in-the-us-2015-8","categories":[],"author":"Lyanne Alfaro","date":"2015-08-14T15:45:26.000Z","enclosure":false,"custom_elements":[]},{"title":"New in our buyer's guide: the Chromebook Flip and some gaming gear","description":"\n\nYes, we know: A bunch of phones just came out. Don't worry, we'll be reviewing those shortly. In the meantime, we have a handful of items we'd like to induct into our buyer's guide. Included among them: not one, but two laptops, including the impre...","url":"http://www.engadget.com/2015/08/14/engadget-buyers-guide-chromebook-flip/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/engadget-buyers-guide-chromebook-flip/","categories":[],"author":"Dana Wollman","date":"2015-08-14T15:42:00.000Z","enclosure":false,"custom_elements":[]},{"title":"How to customize AutoPlay defaults on Windows 10","description":"
Modify the default actions when you insert a removable drive or memory card on Windows 10.
\n\n

read more

","url":"http://winsupersite.com/windows-10/how-customize-autoplay-defaults-windows-10","guid":"58341 at http://winsupersite.com","categories":["auto play","AutoPlay","how to","How-To","Windows 10"],"author":null,"date":"2015-08-14T15:40:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Deal: MiiShower Bluetooth speaker only $24.99!","description":"How many Bluetooth speakers can you take into the shower? Yeah... not many. This is why we are so excited about today's AA Deals Store offer on the MiiShower Bluetooth speaker!","url":"http://www.androidauthority.com/deal-miishower-bluetooth-speaker-634060/","guid":"http://www.androidauthority.com/?p=634060","categories":["Deals","AA Deals Store","Bluetooth speaker","Bluetooth Speakers","MiiShower","Speakers"],"author":"AA Deals","date":"2015-08-14T15:38:48.000Z","enclosure":false,"custom_elements":[]},{"title":"LG’s new G Pad 2 8.0 has a full-sized USB port in-tow","description":"LG's new mid-range offering (currently only available in South Korea) comes with a fascinating port addition, as well as a new stylus and Microsoft Office.","url":"http://www.androidauthority.com/lg-g-pad-2-8-0-with-full-sized-usb-634161/","guid":"http://www.androidauthority.com/?p=634161","categories":["News","LG","LG G Pad 2 8.0","LG G Pad 8.0"],"author":"Matthew Benson","date":"2015-08-14T15:36:06.000Z","enclosure":false,"custom_elements":[]},{"title":"What happens when a superstar disrupts one of the top 'League of Legends' teams","description":"

“League of Millions” documents the worldwide cultural phenomenon around the video game \"League of Legends.\" For many weeks we have followed a top pro team, Team Liquid, in their quest for the 2015 Championship.

In Part 1 and Part 2 of the series, we meet the five elite players on Team Liquid. We witness their intense 15-hour days, along with the fans and fame that are part of the pro gamer's life.

In this final installment, we see if Team Liquid can come together and secure their place in the North American finals to be held at Madison Square Garden.

Director and Producer: Sam Rega

Editor: Josh Wolff

Production and Research: David Fang and Lauren Browning

Executive Producer: Diane Galligan

Follow TI: On YouTube

 

Join the conversation about this story »










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/PiAccGG0g5I/league-of-millions-piglet-team-liquid-league-of-legends-2015-8","guid":"http://www.techinsider.io/league-of-millions-piglet-team-liquid-league-of-legends-2015-8","categories":[],"author":"Sam Rega","date":"2015-08-14T15:35:00.000Z","enclosure":false,"custom_elements":[]},{"title":"LG G Pad II 8.0 Makes Its Debut On Korean Website, Complete With Stylus And Full-Sized USB Port","description":"

\"tablet\"Remember the LG G Pad, the company's return to the tablet market from 2013? It was an impressive effort, a high-end, mid-sized tablet (which eventually got a Google Play Edition brother) that was unfortunately followed up by a collection of low-end G Pads designed to try and take a bit out of Samsung's cheap Galaxy Tab market share. It looks like LG is ready to try again, at least according to this page on the company's Korean website.

Read More

LG G Pad II 8.0 Makes Its Debut On Korean Website, Complete With Stylus And Full-Sized USB Port was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/DGSbTZStyxE/story01.htm","guid":"http://www.androidpolice.com/?p=331533","categories":["lg g pad","LG","stylus","usb port","g pad 2","News","Korea","korean"],"author":"Michael Crider","date":"2015-08-14T15:35:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Contactless payments now accepted on London's cross-Thames cable car","description":"\n\nSince contactless payments were first accepted on London buses a few years ago, it's become increasingly easy to get around the capital without cash or a loaded Oyster card. Whether you're equipped with a contactless card, Apple Pay or another mobi...","url":"http://www.engadget.com/2015/08/14/emirates-air-line-contactless/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/emirates-air-line-contactless/","categories":[],"author":"Jamie Rigg","date":"2015-08-14T15:27:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Here's why the new 'Star Wars' movie might stink","description":"

It's been a long time since a movie has generated as much fervent anticipation as \"Star Wars: The Force Awakens.\" Due in theaters this Christmas, the movie is expected by some to gross more than $2 billion at the worldwide box office.

Expectations are incredibly high for the JJ Abrams-directed sci-fi epic, but there's no guarantee that \"The Force Awakens\" will please everybody. 

Produced by Graham Flanagan. Camera by Corey Protin.

Follow BI Video: On Facebook

Join the conversation about this story »










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/PnysOrezzOQ/star-wars-the-force-awakens-hype-jj-abrams-2015-8","guid":"http://www.businessinsider.com/star-wars-the-force-awakens-hype-jj-abrams-2015-8","categories":[],"author":"Graham Flanagan","date":"2015-08-14T15:26:00.000Z","enclosure":false,"custom_elements":[]},{"title":"‘1849: Gold Edition’ brings you to the old California Gold Rush era","description":"Ever wondered what really happened during the Gold Rush Era? There are numerous books and materials on the subject but it's really different when you actually get to experience living … Continue reading","url":"http://androidcommunity.com/1849-gold-edition-brings-you-to-the-old-california-gold-rush-era-20150814/","guid":"http://androidcommunity.com/?p=238937","categories":["Archive","Android","App","games","Gaming","simulation"],"author":"R Padla","date":"2015-08-14T15:20:37.000Z","enclosure":false,"custom_elements":[]},{"title":"This MIT grad student discovered a way to create sound from soundless video","description":"

\"Abe

Our recently published list of groundbreaking scientists highlighted the smartest and most innovative modern scientists and researchers in the field.

Among them is Abe Davis, an MIT graduate student who has worked with researchers from MIT, Microsoft, and Adobe to publish their findings on \"the visual microphone\" – an algorithm that can almost literally create sound from soundless objects.

In a TED talk this spring, Davis broke down the research using videos and graphics to a stunned audience. Here's what he explained:

If we watch video of a wrist with a pulse or a video of a breathing baby, for instance, the naked eye can't easily discern movement. But Davis' team created software that finds this subtle motion in video and amplifies it, making it visible. 

\"Abe

So they went further and asked the question: Could this software be used to recreate sound from motion? If all sound creates vibrations in objects, and they captured those vibrations through video, would they be able to discern original sound?

\"Abe

Davis explains one the the team's first experiments in which they played the tune \"Mary Had a Little Lamb\" from a speaker placed near a potted plant. The plant's leaves vibrated as seen in a slowed down video of thousands of frames per second. He calls this motion \"perceptually invisible\" to human beings.

\"Abe

Crazily enough, Davis and his team were able to create an algorithm that recovers the \"sound\" (aka the vibrations of the leaves) and plays it back. 

\"Abe

Perhaps one of his most practical demonstrations is a silent video of headphones playing music that are resting on a laptop. The sound recovered through the algorithm accurately read and discovered by music-finding app Shazam.

\"Abe

While Davis also presents more examples from varied experiments where they tampered with light, noise volume, and camera quality, the crux of his team's research and findings is this: By using the team's specialized algorithm, we can use cameras of varied quality to recover sounds from soundless video. 

\"Abe

By using video of the vibrations of objects, he's uncovered a new way to interact with still objects. After recording just five seconds of video (with movement due to a person's fist hitting the wood), Davis is able to create a simulation of how the object would respond to new forces by clicking and dragging with his mouse. 

\"Abe

So while the public sees simulation like this often in video games and 3D models, these findings tell us that we can also do this by using simple video techniques to capture real world objects. Davis says these experiments unearth incredible potential for changing the way we see the world.

Davis is also the creator of Caperture for iOS. It allows users to capture, view, and send objects in 3D. 

 

NOW READ: 50 groundbreaking scientists who are changing the way we see the world

Follow us! 7 scientists who are helping us understand how the world works

Join the conversation about this story »

NOW WATCH: What Adderall is actually doing to your body










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/e06IiwDFV-0/abe-davis-and-the-visual-microphone-2015-7","guid":"http://www.businessinsider.com/abe-davis-and-the-visual-microphone-2015-7","categories":[],"author":"Tanza Loudenback","date":"2015-08-14T15:13:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Mini review video: our verdict of the Moto G in under a minute","description":"\n\n\n\nThe Moto G gets a little better every year. Now in its third generation, Motorola's mid-range handset is still our favorite affordable smartphone, with the most recent version notching a score of 87 out of 100 in our review (that's up from 86 las...","url":"http://www.engadget.com/2015/08/14/moto-g-mini-review-video/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/moto-g-mini-review-video/","categories":[],"author":"Dana Wollman","date":"2015-08-14T15:10:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Google ramps up the Android M mystery hype","description":"
\n\n\n\n

We may soon find out what the M in Android M stands for, as a new video which showcases all of the previous releases, and then teases about the new one has surfaced. Each year, there are tons and tons of guesses about what Google decided to call the upcoming Android release, and this year is no different.

","url":"http://www.androidcentral.com/we-may-soon-find-out-what-android-m-stands","guid":"48484 at http://www.androidcentral.com","categories":[],"author":"Jared DiPane","date":"2015-08-14T15:09:02.000Z","enclosure":false,"custom_elements":[]},{"title":"Motorola Uploads 1st Gen Moto G 3G Android 5.1.1 Open Source Kernel Files","description":"

\"MotoG-Thumb\"The first Android 5.1-based kernel Motorola released was for the LTE version of the 1st generation Moto G. This week it has released the source files for the less speedy 3G-only model, codenamed Falcon.

\"Selection_004\"

Developers, you know what to do. The zip comes in at 132 MB. You can download it from GitHub at the source link below. After that, feel free to make all the recovieres, ROMs, and other things we Android nerds get excited about.

Read More

Motorola Uploads 1st Gen Moto G 3G Android 5.1.1 Open Source Kernel Files was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/UOyq-hNe3oE/story01.htm","guid":"http://www.androidpolice.com/?p=331516","categories":["github","Motorola","Moto G","open source kernel files","Development","kernel files","News"],"author":"Bertel King, Jr.","date":"2015-08-14T15:03:15.000Z","enclosure":false,"custom_elements":[]},{"title":"We’re giving away 50 OnePlus 2 invites","description":"Interested in the OnePlus 2 but having trouble getting an invite? AA will be handing out invites to 50 lucky winners who enter this giveaway!","url":"http://www.androidauthority.com/oneplus-2-invites-giveaway-634169/","guid":"http://www.androidauthority.com/?p=634169","categories":["Giveaways","OnePlus","OnePlus 2"],"author":"Andrew Grush","date":"2015-08-14T15:01:25.000Z","enclosure":false,"custom_elements":[]},{"title":"This app lets you text without Wi-Fi or a data plan anywhere in the world — even on a plane","description":"

\"FireChatForget exorbitant roaming charges, overpriced international data packages, or spotty internet coverage.

FireChat is the perfect travel app, allowing users to send and receive text messages entirely without data or internet thanks to something called mesh networking.

Basically, mesh networking allows you to communicate wirelessly by bouncing your message from one phone equipped with FireChat (within 210 feet of you) to another via Wi-Fi or Bluetooth antennas.

If there aren't any connections nearby, messages are stored until they can be sent. And don't worry: Messages will be encrypted, so only the intended recipient will be able to read them. The message then keeps bouncing from phone to phone until it reaches said recipient — and to cross oceans, for example, it'll hop from phone to phone until it reaches one with internet, then making its way to its final destination like any other message.

Sure, this can take a few minutes — 10 to 20 across a dense metro area, according to Skift — but you'll be able to send texts from abroad without incurring roaming charges or even from remote or blackout areas that have little to no coverage, including planes and subways.

Of course, this means that the more people download the app the better: According to Skift, only about 5 million mobile users worldwide have downloaded the app, but the app's creators estimate that as long as 5% of a city's population has it, messages can be delivered in around 10 minutes.

\"FireChat

Originally designed for people to get in touch with each other at crowded events, FireChat became hugely popular in Iraq last year after the country faced restrictions on internet use, and it was an integral part of the 2014 Hong Kong protests and 2015 Ecuadorian protests.

While you may continue to use Facebook Messenger or WhatsApp when connected to the internet, what makes FireChat so great is that it doesn't rely on any carrier and will work anywhere.

Available on: Android and iOS.
Cost: Free

SEE ALSO: This is the one app you should use to make phone calls when you're traveling abroad

FOLLOW US: BI Travel is on Twitter!

Join the conversation about this story »

NOW WATCH: The 10 best cities in the world, according to travelers










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/R1Vt8hsGT74/firechat-app-lets-you-text-without-wifi-or-data-2015-8","guid":"http://www.businessinsider.com/firechat-app-lets-you-text-without-wifi-or-data-2015-8","categories":[],"author":"Sophie-Claire Hoeller","date":"2015-08-14T14:52:00.000Z","enclosure":false,"custom_elements":[]},{"title":"US court rejects Samsung's appeal against Apple over patent fight","description":"\n\nSamsung's latest attempt to appeal Apple's 2012 patent infringement victory has fallen flat. A U.S Federal Court of Appeals rejected the Korean electronics giant's bid for reconsideration yesterday, reports the San Jose Mercury News. The original 2...","url":"http://www.engadget.com/2015/08/14/samsung-apple-appeal/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/samsung-apple-appeal/","categories":[],"author":"Devindra Hardawar","date":"2015-08-14T14:50:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung showed off its new smartwatch in a bizarre space-age photoshoot — check out the pictures","description":"

\"samsung

Samsung is officially launching its new smartwatch, the Galaxy Gear S2, in September. But this hasn't stopped it taking the chance to show it off early. 

The South Korean electronics manufacturer teased the new device at its Galaxy Note 5 launch event on Thursday, and followed it up with a space-age photoshoot showing off the unreleased smartwatch alongside its other gadgets.

We first saw the photos over on the Verge.

Here's the Gear S2, alongside one of Samsung's new smartphones.

\"\"

Samsung launched two new smartphones at the event on Thursday — the Galaxy Note 5, a phablet device, and the Galaxy S6 Edge+, a larger version of its Samsung Galaxy S6.

\"\"

The new S6 Edge+ has a 5.7-inch screen, and is a millimeter thinner than its smaller cousin.

\"\"

See the rest of the story at Business Insider

NOW WATCH: How to clear out a ton of space on your iPhone superfast










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/SFV_wosz7xs/samsung-teases-gear-s2-smartwatch-futuristic-photoshoot-2015-8","guid":"http://www.businessinsider.com/samsung-teases-gear-s2-smartwatch-futuristic-photoshoot-2015-8","categories":[],"author":"Rob Price","date":"2015-08-14T14:41:29.000Z","enclosure":false,"custom_elements":[]},{"title":"NASA asking people to design smartwatch app for astronauts","description":"With renewed interest in space activities due to the drive-by near Pluto and all sorts of meteor showers, moon-related activities, and all, NASA is looking once again to involve the … Continue reading","url":"http://androidcommunity.com/nasa-asking-people-to-design-smartwatch-app-for-astronauts-20150814/","guid":"http://androidcommunity.com/?p=239271","categories":["Archive","Android","App","NASA","smartwatch"],"author":"Ida Torres","date":"2015-08-14T14:40:19.000Z","enclosure":false,"custom_elements":[]},{"title":"AT&T Restructures Data Plans To Squeeze A Little More Money Out Of Some Subscribers, Lowers Pricing For Large Data Buckets","description":"

\"nexusae0_Death-star-att\"

AT&T, a company with a reputation for evil such that placing their logo inside a Death Star has always seemed genuinely appropriate, has announced some changes to pricing on their mobile data plans today. While some of those changes are genuinely good if you're a subscriber with a large data bucket or have some pretty particular usage habits, many new customers can expect to pay $5-10 more a month under the new structure, which AT&T of course claims is a totally innocuous attempt to \"simplify\" things for customers.

Read More

AT&T Restructures Data Plans To Squeeze A Little More Money Out Of Some Subscribers, Lowers Pricing For Large Data Buckets was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/Oir0J7wVlL0/story01.htm","guid":"http://www.androidpolice.com/?p=331510","categories":["at&t mobile share","data buckets","mobile share","data cap","News","carrier","AT&T","data plan","mobile data"],"author":"David Ruddock","date":"2015-08-14T14:33:06.000Z","enclosure":false,"custom_elements":[]},{"title":"The realities of a $50 smartphone","description":"\n\nAs mobile networks kill off phone subsidies, users might now begin to appreciate just how much their new smartphone really costs. It's an even bigger problem in the developing world, where relatively few have the cash to buy even a mid-range phone...","url":"http://www.engadget.com/2015/08/14/the-realities-of-a-50-smartphone/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/the-realities-of-a-50-smartphone/","categories":[],"author":"Daniel Cooper","date":"2015-08-14T14:30:00.000Z","enclosure":false,"custom_elements":[]},{"title":"HTC One M8 receives Stagefright patch from Sprint","description":"

\n\n

Sprint is now pushing out an update for the HTC One M8, which contains a patch for the Stagefright exploit. Several Samsung phones on Sprint have already received the update, and it is great to see updates being pushed from other manufacturers as well. The update bumps the phone up to software version 4.25.651.18.

\n\n

If you have not already received the update notification, you can manually check for the update by heading into your phones Settings then checking for the update. Receiving the update on another device? Be sure to let us know in the comments below!

\n\n

Source: Sprint

\n
","url":"http://www.androidcentral.com/htc-one-m8-receives-stagefright-patch-sprint","guid":"48483 at http://www.androidcentral.com","categories":[],"author":"Jared DiPane","date":"2015-08-14T14:19:53.000Z","enclosure":false,"custom_elements":[]},{"title":"News Corp CEO just slammed Google for greed, censorship, corruption, and piracy (GOOG, GOOGL)","description":"

\"RobertIn a speech at the Lowy Institute Media awards in Sydney, News Corp CEO Robert Thomson blasted Google for greed, censorship, corruption, and piracy, mUmBRELLA reports.

Thomson accused “distributionists” like Google and Facebook of setting up a broken system.

“None of them actually create content, and they certainly have little intention of paying for it,” he said. “But they do redistribute the content created by others – they would argue that such redistribution is a natural extension of their role as social networks. I would argue that much of the redistribution is an unnatural act.”

Thomson believes these companies are helping themselves to the content that others create, “co-opting and corralling audiences and consciously devaluing brands.” He contended that the words “Intellectual Property” don’t appear in Google’s alphabet, a reference to Google’s new operating structure of the same name.

He went on to riff more on Alphabet: “A is for Avarice, B is for Bowdlerize, through to K for Kleptocracy, P for Piracy and Z for Zealotry.”

Thomson cautioned that without a fair payment model in place, “well-resourced reporting will be ever more challenged.”

He also threw a barb at LinkedIn, calling it a “pretender” that is chock full of spam.

Business Insider has reached out to Google for comment and will update this post when we hear back.

You can read Thomson's full speech here.

SEE ALSO: Waze cofounder tells us how his company's $1 billion sale to Google really went down

Join the conversation about this story »

NOW WATCH: Here are all of Google's awesome science projects — that we know about










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/lg1e-vsj4Gc/news-corp-ceo-slams-google-for-greed-censorship-corruption-and-piracy-2015-8","guid":"http://www.businessinsider.com/news-corp-ceo-slams-google-for-greed-censorship-corruption-and-piracy-2015-8","categories":[],"author":"Nathan McAlone","date":"2015-08-14T14:13:08.000Z","enclosure":false,"custom_elements":[]},{"title":"Here's your first look at the sequel to the hottest Android phone","description":"

The OnePlus One was one of the most talked about smartphones of 2014 and the small Chinese company is back in 2015 with their newly released OnePlus 2. The smartphone is only available to order by invite only, but we have a first look at the new Android device.

Produced by Darren Weaver

Follow TI Video: On Facebook

 

Join the conversation about this story »










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/SdHKlY1hayE/unboxing-oneplus-2-android-smartphone-2015-8","guid":"http://www.businessinsider.com/unboxing-oneplus-2-android-smartphone-2015-8","categories":[],"author":"Darren Weaver","date":"2015-08-14T14:11:36.000Z","enclosure":false,"custom_elements":[]},{"title":"Younger version of Jupiter provides clues to planet formation","description":"\n\nIt's likely not the first time you'll hear scientists compare an exoplanet to Jupiter. According to a team of astronomers, though, this one called the 51 Eridani b isn't only similar in size -- it's "very much what models suggest Jupiter was like i...","url":"http://www.engadget.com/2015/08/14/young-jupiter-exoplanet/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/young-jupiter-exoplanet/","categories":[],"author":"Mariella Moon","date":"2015-08-14T14:10:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Google is reportedly making a new version of its best Android phone — here's what it looks like (GOOG, GOOGL)","description":"

Google is said to be working on two new smartphones to be released this year — a giant phone that's essentially going to be a new version of the Nexus 6, and a smaller flagship that will likely be an updated Nexus 5. Now, a new leak has given us a clear look at what that updated Nexus 5 might look like.

Steve Hemmerstoffer, who runs the Twitter account OnLeaks and the tech news blog Nowhereelse.fr, has shared a set of renderings that reportedly show the new Nexus 5 with tech site uSwitch. The renderings are said to be based on schematics that have been sent to accessory makers to ensure that their cases fit the phone when it launches. 

Here's a look at the back of the phone. The circle underneath the camera is said to be the fingerprint sensor. 

\"Nexus5LeakBack\"

It looks like the camera slightly protrudes out from the back of the phone too.

\"Nexus5Leak2\"

Here's the front of the phone. It seems as if the new Nexus 5 will have a design that's similar to that of the Nexus 5 that launched in 2013. 

\"Nexus5LeakFront\"

While the images aren't an definitive look at Google's new Nexus phone, it at least gives us an idea of what we might be able to expect. The new phone is said to be produced by LG, lining up with rumors we've heard in the past, and it'll reportedly have a 5.2-inch screen. 

Although Hemmerstoffer has a pretty solid track record when it comes to leaking unreleased products, it's important to keep in mind that these images haven't been confirmed by LG or Google. Even if they are legitimate, there's a chance things could change by the time Google actually announces its new phone.

The Nexus 5 was regarded as being Google's best Nexus phone yet when it launched two years ago. It was a big step up from the popular Nexus 4 — it had a slimmer design, a larger screen that was sharper than that of the Nexus 4, and it supported LTE. Now it sounds like Google is working on an updated version of that to appeal to those who may find the Nexus 6 too big. 

The company usually releases its new version of Android and new Nexus devices in October, so there's a chance we'll hear about it then. 

Google denied to comment on the leak. 

SEE ALSO: How Samsung's new Galaxy phones compare to the iPhone and their biggest Android rivals

Join the conversation about this story »

NOW WATCH: 2 texting tricks you didn't know you could do on your iPhone










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/RIW1bdds-W0/google-nexus-5-specs-photos-release-2015-8","guid":"http://www.businessinsider.com/google-nexus-5-specs-photos-release-2015-8","categories":[],"author":"Lisa Eadicicco","date":"2015-08-14T14:07:38.000Z","enclosure":false,"custom_elements":[]},{"title":"Enter to win the Double Nexus Giveaway II [DEALS]","description":"You could win an Android device prize package valued at $978 when you enter The Double Nexus Giveaway II, presented by Android Community Deals. If you missed out on our … Continue reading","url":"http://androidcommunity.com/enter-to-win-the-double-nexus-giveaway-ii-deals-20150814/","guid":"http://androidcommunity.com/?p=239421","categories":["Archive","Deals","Android","Deal","deals","Nexus 6","Nexus 9","smartphone","Tablet"],"author":"Juan Carlos Torres","date":"2015-08-14T14:00:57.000Z","enclosure":false,"custom_elements":[]},{"title":"Oco security camera review","description":"As I’m sure I’ve stated before, I’m a pretty huge fan of the Internet of Things and smart home technology; however, my number one priority in life is keeping my family safe. Fortunately for me, I get to combine these two things by using home security cameras. I currently own two Foscam’s, but they aren’t […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/0uWkmOyQB3Y/","guid":"http://the-gadgeteer.com/?p=181816","categories":["Home, Kitchen","Reviews","security camera"],"author":"Dennis Moore","date":"2015-08-14T14:00:22.000Z","enclosure":false,"custom_elements":[]},{"title":"Project Ara's Puerto Rico pilot market launch has been scrapped [Update]","description":"

\n\n

Update: PCWorld reports that, according to a Google spokesperson, the Project Ara sales pilot project for Puerto Rico is no longer going to happen. The spokesperson offered no other details.

\n\n

Original story: Project Ara, which is Google's effort to create a smartphone using quickly changed modular parts, is looking like it has hit a snag. The project's official Twitter feed has posted a series of messages indicating a delay in the launch of its sales pilot project in Puerto Rico, which was supposed to happen by the end of 2015.

\n\n
","url":"http://www.androidcentral.com/project-aras-modular-smartphone-may-be-delaying-its-puerto-rico-launch","guid":"48482 at http://www.androidcentral.com","categories":[],"author":"John Callaham","date":"2015-08-14T13:55:34.000Z","enclosure":false,"custom_elements":[]},{"title":"Fitbit adds Cortana support, Xbox One app coming this year","description":"\n\nFitbit's updated its Windows app for Windows 10. The app features all-new Live Tiles, pushes notifications to the Action Center, and supports Cortana voice commands. Saying things like "Fitbit, I ate chicken for dinner" or "Fitbit, I went for a thr...","url":"http://www.engadget.com/2015/08/14/fitbit-windows-10-app-xbox-one-support/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/fitbit-windows-10-app-xbox-one-support/","categories":[],"author":"Aaron Souppouris","date":"2015-08-14T13:50:00.000Z","enclosure":false,"custom_elements":[]},{"title":"13 top executives who make a $1 salary or less","description":"

\"LarryWhile many executives are criticized for their excessive pay, some CEOs have been able to skirt around the issue by choosing to forgo a lofty salary and opting instead for a paycheck of $1 a year, or less.

Of course, this isn't to say these executives are living off the dollar menu.

The CEOs on this list are still worth millions, if not billions, but while some merely pay lip service to the $1 salary club by taking home hefty compensation in the form of company stock awards and bonuses, others forgo adding to their wealth in this way entirely.

\"I've made enough money,\" said Mark Zuckerberg during a Q&A on Facebook in June. \"At this point, I'm just focused on making sure I do the most possible good with what I have.\" Zuckerberg chooses to take home a $1 salary and declines stock awards and bonuses.

Here are some CEOs and other executives that belong to the $1 (or less) salary club:

SEE ALSO: 17 billionaires who were once dirt poor

Larry Page and Sergey Brin

\"\"

According to Google's annual filing with the Securities and Exchange Commission (SEC), Brin and Page, the company's cofounders asked that their base salaries each be reduced to $1 per year in 2004.

Since then, Google's compensation committee has offered them market-competitive salaries annually, which they continue to decline.

While they also forgo cash bonuses based on their individual and company performance and do not hold any stock options, Google stock units, or other contingent stock rights, Page is currently worth an estimated $34.9 billion and Brin is worth an estimated $34.3 billion.



Jack Dorsey

\"\"

In a filing with the SEC in June, it was revealed that Twitter's interim CEO receives no compensation for his role. This is of little financial consequence to Dorsey, whose current estimated net worth comes in around $2.3 billion.

\"At your request, you have agreed to forego any compensation for your role as Interim Chief Executive Officer until the Compensation Committee agree upon a compensation package for you at the same time that it conducts its annual assessment and setting of executive compensation later in the year. Until a compensation package is finalized, you will be entitled to no cash or equity compensation for your services as Interim Chief Executive Officer,\" the document reads.



Larry Ellison

\"\"

As in previous years, Oracle reported to the SEC that Ellison, now executive chairman and CTO, took home a salary of $1 in 2014.

Meanwhile, new co-CEOs Safra Catz and Mark Hurd, who took over in September, 2014, each took home a $950,000 salary last year in addition to other compensation.

So how does Ellison continue to add to his estimated $49.2 billion net worth? Compensation Ellison received last year included $65 million in stock option awards, $740,000 in non-equity compensation, and $1.5 million for other compensation, most of which went towards security-related costs for Ellison's home.

 



See the rest of the story at Business Insider

NOW WATCH: This drummer created a whole song using only the sound of coins










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/L8xWjoki3r0/ceos-who-take-1-dollar-salary-or-less-2015-8","guid":"http://www.businessinsider.com/ceos-who-take-1-dollar-salary-or-less-2015-8","categories":["SEC"],"author":"Rachel Gillett","date":"2015-08-14T13:48:18.000Z","enclosure":false,"custom_elements":[]},{"title":"Plus Codes Are An Easier And More Accurate Way Of Locating People And Businesses In Places With No Specific Street Address","description":"

\"plus-code-location\"

Growing up in Lebanon, I got used to giving and receiving directions to my home as, \"take the second right turn after the chicken restaurant, continue straight past the two gas stations, it's the first building on the left after the falafel stand, with a flower shop below it and facing a pharmacy.\" I even remember how long I had to stay on hold on the phone with some government dude just to get the ZIP code for my area.

Read More

Plus Codes Are An Easier And More Accurate Way Of Locating People And Businesses In Places With No Specific Street Address was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/ntbwHtcgb_c/story01.htm","guid":"http://www.androidpolice.com/?p=331479","categories":["no street address","open location codes","Google","News","share location without street address","google maps","plus codes","location"],"author":"Rita El Khoury","date":"2015-08-14T13:45:36.000Z","enclosure":false,"custom_elements":[]},{"title":"Cybersecurity expert: Here's how the GOP could 'have a field day' with Hillary Clinton's email scandal","description":"

\"Hillary

The FBI is now in possession of the private email server Hillary Clinton used for work-related correspondences while she served as secretary of state during the first term of the Obama administration.

And what they find could give Clinton's political rivals the ammunition they need to forcefully attack her presidential campaign.

\"If investigators find that her server was ever compromised, the GOP is going to have a field day,\" cybersecurity expert Alex McGeorge, a senior security researcher at Immunity Inc., told Business Insider.

Though Clinton's use of a private email address was not illegal and was permitted by State Department rules, the federal government has standards for how servers are built, how they are secured, and how their data is stored.

If Clinton failed to take one or all of the required steps to secure her private server — and if it is confirmed that classified information made its way into an insecure inbox — proving that this sensitive intelligence might be in the hands of foreign adversaries would be the GOP's \"fastest path to victory\" in the 2016 presidential election, McGeorge said.

Furthermore, demonstrating that the \"clintonemail.com\" server was hackable would be relatively easy, he said.

\"Subpoena the exact configuration of the Clinton email server, and create a duplicate system as best as you are able,\" McGeorge said. \"Put a legitimate bug bounty on it for real money (over $100k), to the first person who's able to get emails off of it. This gives the GOP proof that the system was hackable as configured.\"

'Top Secret/Sensitive Compartmented Information'

Clinton, the Democratic presidential front-runner in the 2016 election, has repeatedly said as recently as late July that she was \"confident\" she did not send or receive classified information by email.

But Charles McCullough, the inspector general for the US intelligence community, recently said the server potentially included hundreds of classified emails, some of which include information derived from US intelligence agencies.

And this week, McCullough told Congress that he discovered two emails that were classified as \"Top Secret/Sensitive Compartmented Information,\" which is one of the government's highest levels of classification. Those two emails were drawn out of a batch of 40 emails randomly selected from about 30,000 \"work-related\" emails Clinton turned over to the State Department.

The Associated Press reports that the two emails \"include a discussion of a news article detailing a US drone operation and a separate conversation that could point back to highly classified material in an improper manner or merely reflect information collected independently.\"

What's still unclear is how much classified information was consciously shared in the tens of thousands of emails — or what particular safeguards were taken to protect it.

\"If Clinton knowingly used her private server to handle classified information, she could have a problem,\" Time senior correspondent Massimo Calabresi said recently. \"But if she didn’t know the material was classified when she sent or received it, she's safe.\"

\"hillary

'Hillary Clinton's big problem now is legal'

\"Hillary Clinton's big problem now is legal,\" Charles Lipson, a professor of international politics at the University of Chicago, argued in RealClearPolitics. \"And it could well be insurmountable politically.\"

Lipson, the director of the Program on International Politics, Economics and Security at the University of Chicago, then listed several \"legal questions with huge political ramifications.\"

\"Did the Clinton server meet the federal government's standards for how servers are built, how they are secured, and how data is retained? Was all sensitive material encrypted or did it circulate without those protections?\" he wrote.

\"Did anybody hack into the server? Did Secretary Clinton, who says she erased all 'personal' emails from the server, actually erase some government documents? If so, was that inadvertent or a possible cover-up? Who handled IT security for this server? Could he read the materials if he wished?\"

Clinton's unusual email system was originally set up by a staffer during Clinton's 2008 presidential campaign, replacing a server used by her husband, former President Bill Clinton.

The new server was run by Bryan Pagliano, who had worked as the IT director on Hillary Clinton's campaign before joining the State Department in May 2009. In 2013 — the same year she left the State Department — Clinton hired the Denver-based company Platte River to oversee the system.

It's possible that Clinton's private server was more secure than the private email accounts of the nation's other top officials, \"purely because it's a smaller target,\" cybersecurity expert Joe Loomis, the founder and CEO of CyberSponse, told Business Insider.

\"Only she and a few other people are using it,\" he said.

\"hillary

'A serious management mistake'

\"Even if Secretary Clinton or her aides didn't run afoul of any criminal provisions, the fact that classified information was identified within the emails is exactly why use of private emails ... is not supposed to be allowed,\" Bradley Moss, a Washington attorney who specializes in national-security matters, told McClatchy recently.

\"Both she and her team made a serious management mistake that no one should ever repeat.\"

And Clinton's choice to eschew the State Department's email system looks particularly egregious, given her standing within the department.

If she felt the State Department's server wasn't secure enough, she \"would have been in a good position to demand change,\" said McGeorge, the senior security researcher at Immunity Inc. \"But if it was a problem, and you decided to use your own server, then what did you do for your department?\"

\"Former

And then there are the deleted emails.

Last October, the House of Representatives committee dedicated to investigating the 2012 terrorist attack on the US diplomatic compound in Benghazi, Libya, asked Clinton for any emails she had relating to the attack.

Clinton obliged a separate request from the State Department, handing over roughly 55,000 pages of emails — about 60,000 emails in total. She deleted about 30,000 others that were \"personal\" in nature.

The fact that the State Department has no record of Clinton's email exchanges now that she has wiped her server clean also means Clinton may have skirted the rules governing federal-records management, which require that anything relating to agency activity be captured on the department's server.

Interestingly, McGeorge said, \"the FBI can now only investigate anything Clinton didn't take the time to erase\" because she used the \"clintonemail.com\" address.

SEE ALSO: We know what those 2 top-secret Clinton emails were about

Join the conversation about this story »

NOW WATCH: More trouble for Subway's Jared Fogle...










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/ByuuEruc1Cw/hillary-clinton-email-scandal-and-gop-2015-8","guid":"http://www.businessinsider.com/hillary-clinton-email-scandal-and-gop-2015-8","categories":[],"author":"Natasha Bertrand and Michael B Kelley","date":"2015-08-14T13:44:13.000Z","enclosure":false,"custom_elements":[]},{"title":"The Galaxy Note 5 in Europe, and why we can't have nice things","description":"

Samsung's decision to deny European buyers its best smartphone is weird and unnecessary.

\n\n

As tick follows tock, each year Samsung has followed up its Galaxy S handset with a new Galaxy Note. It was one of the more reliable, almost inevitable events of the tech calendar. Every 12 months the Note family has introduced a new member at the IFA trade show in Berlin, Germany. And each time it's been the gold standard for what's possible in a big-screened, high-end Android handset.

\n\n

Note owners are fiercely loyal. It's been said among fans of the series that the only thing that can replace a Note is another Note.

\n\n

Except not anymore. This year, Europe isn't getting a new Galaxy Note — at least not anytime soon. Americans can buy it, as can Asian consumers. But live in Europe? For the moment, you're SOL. There'll be no Galaxy Note 5 for European buyers in 2015 — instead we'll get the Galaxy S6 edge+.

\n\n
","url":"http://www.androidcentral.com/galaxy-note-5-europe-and-why-we-cant-have-nice-things","guid":"48478 at http://www.androidcentral.com","categories":[],"author":"Alex Dobie","date":"2015-08-14T13:41:48.000Z","enclosure":false,"custom_elements":[]},{"title":"OnePlus rolls out OxygenOS 1.0.2 update to address 'Stagefright' vulnerability","description":"

\n\n

OxygenOS version 1.0.2 has just been released to the public. OnePlus has provided the means to flash the update, which is set to address the \"Stagefright\" vulnerability that could lead to your phone becoming compromised.

\n\n
","url":"http://www.androidcentral.com/oneplus-rolls-out-oxygenos-102-update-address-stagefright-vulnerability","guid":"48481 at http://www.androidcentral.com","categories":[],"author":"Rich Edmonds","date":"2015-08-14T13:35:03.000Z","enclosure":false,"custom_elements":[]},{"title":"How an accidental Siri butt dial saved the life of an 18 year old","description":"

\"iPhoneSiri may have some issues when it comes to understanding what you’re saying, but when your life is on the line, it turns out she can be pretty handy. At least that seems to be the takeaway from a recent heroic effort by Siri that probably saved the life of a 18-year-old man in Mufreesboro, Tennessee, WZTV Fox 17 reports.

The man was working under his truck when it fell on him, trapping him underneath.

He called for help, but was alone, and no one could hear him. That’s when Siri helped out.

The man heard Siri talking in his pocket and was able to “push up on his hip” and call 911. Vanderbilt University Medical Center's trauma team and paramedics did take over after that, but we know who the real hero is here: Siri. Perhaps we should add “life-saving” to our list of cool things you didn’t know Siri could do.

Of course, it's worth pointing out that maybe Siri just likes calling 911. If you tell Siri to \"charge my phone 100%,\" it automatically dials emergency services

SEE ALSO: If you ask Siri to charge your phone, she’ll call the police

Join the conversation about this story »

NOW WATCH: 11 things you can ask Siri to get the most bizarre and hilarious answers










\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/6cGVBSBumw0/accidental-siri-butt-dial-saves-life-of-an-18-year-old-trapped-under-truck-2015-8","guid":"http://www.businessinsider.com/accidental-siri-butt-dial-saves-life-of-an-18-year-old-trapped-under-truck-2015-8","categories":[],"author":"Nathan McAlone","date":"2015-08-14T13:32:18.000Z","enclosure":false,"custom_elements":[]},{"title":"Google can spot friends nearby and tell if you're glad to see them","description":"\n\nAre you happy that Google's new Play Services software for Android developers is out? If not, one of the new features may tell you to turn that frown upside down. Google's latest APIs for Android apps include "Mobile Vision" face detection and "Nea...","url":"http://www.engadget.com/2015/08/14/google-play-services-sdk/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/google-play-services-sdk/","categories":[],"author":"Steve Dent","date":"2015-08-14T13:28:00.000Z","enclosure":false,"custom_elements":[]},{"title":"SoundCloud now supports casting","description":"The SoundCloud Android app has been updated with new support for Google's wireless casting technology.","url":"http://www.androidauthority.com/soundcloud-now-supports-casting-634154/","guid":"http://www.androidauthority.com/?p=634154","categories":["Apps","News","Chromecast","Google Cast","Music Apps"],"author":"Rob Triggs","date":"2015-08-14T13:21:48.000Z","enclosure":false,"custom_elements":[]},{"title":"Sony Xperia Z5 Plus rendered image sighted","description":"Taking a break from the Samsung hype today, here are some information about the upcoming Sony Xperia Z5+. As you all know, the Japanese company is expected to reveal the … Continue reading","url":"http://androidcommunity.com/sony-xperia-z5-plus-rendered-image-sighted-20150814/","guid":"http://androidcommunity.com/?p=239443","categories":["Archive","Android","smartphone","sony","Sony Xperia"],"author":"R Padla","date":"2015-08-14T13:20:14.000Z","enclosure":false,"custom_elements":[]},{"title":"Google Play Services v7.8 Completes Rollout, Adds New Mobile Vision API With Face Detection And Barcode Reader, Improves Cloud Messaging With Priority And Localization","description":"

\"image01\"

It has been almost a month since Google Play services 7.8 began rolling out to users, and as of yesterday, it is in wide release to everybody. A previous blog post by Google discussed the big new feature for developers would be the Nearby Messages API, but it turns out there are a couple of other additions worth checking out. In a new post on the Android Developers blog, Google announced a new Mobile Vision API with the ability to detect the presence, orientation, and some details of faces when they are in frame on an active camera.

Read More

Google Play Services v7.8 Completes Rollout, Adds New Mobile Vision API With Face Detection And Barcode Reader, Improves Cloud Messaging With Priority And Localization was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/gYOVtm0ICLY/story01.htm","guid":"http://www.androidpolice.com/?p=331428","categories":["localization","face api","Android OS","barcode api","face","video","api","cloud messaging","Videos","gms","google cloud messaging","Google","nearby","google play services","Development","Nearby API","development","Face Tracking","play services","barcode","developers","News"],"author":"Cody Toombs","date":"2015-08-14T13:15:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Windows 10 PSA: You have 30 Days to Roll Back","description":"
\"Good day, Windows customer. Your mission, should you decide to accept it is to test Windows 10. As always, should you or any of your shadow users be caught or killed, Microsoft will disavow any knowledge of your actions. Your previous OS will self-destruct in 30 days. Good luck.\"
\n\n

read more

","url":"http://winsupersite.com/windows-10/windows-10-psa-you-have-30-days-roll-back","guid":"58331 at http://winsupersite.com","categories":["Windows 10"],"author":null,"date":"2015-08-14T13:12:00.000Z","enclosure":false,"custom_elements":[]},{"title":"The Windows Supersite Stardock Start10 Giveaway","description":"
We have five free registration codes for Stardock's Start10 a Start Menu replacement for Windows 10. Want a chance to win one of them?
\n\n

read more

","url":"http://winsupersite.com/windows-10/stardock-start10-giveaway","guid":"58321 at http://winsupersite.com","categories":["Stardock","start menu","Start10","Windows 10","Windows 7","Windows 8","Windows 8.1"],"author":null,"date":"2015-08-14T13:10:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Over-the-air charging of devices is the wave of the future","description":"Wireless charging is a popular feature on many of the mobile devices available today, but the future may be over-the-air charging. Companies like Energous are working on such technology now. They have developed a product called the WattUp wire-free charging system which involves using a transmitter and receiver. A WattUp transmitter, or Power Router, sends […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/ALCkgnAPFDs/","guid":"http://the-gadgeteer.com/?p=183554","categories":["Cables, Batteries and Chargers","News","Wireless","charging"],"author":"Kathleen Chapman","date":"2015-08-14T13:00:08.000Z","enclosure":false,"custom_elements":[]},{"title":"ICYMI: Far away haptic hello, birthing robot mom and more","description":"\n\nToday on In Case You Missed It: The Haptoclone allows users to touch and interact with distant objects, in a way you have to see to understand. But basically, long-distance makeouts over Skype are coming. Cambridge University researchers designed a...","url":"http://www.engadget.com/2015/08/14/icymi-far-away-haptic-hello-birthing-robot-mom-and-more/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/icymi-far-away-haptic-hello-birthing-robot-mom-and-more/","categories":[],"author":"Kerry Davis","date":"2015-08-14T13:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"AT&T revamps Mobile Share Value plans, offering more data for your buck","description":"

\n\n

AT&T has announced a number of changes to the US carrier's Mobile Share Value plans. The aim is to simplify available tiers, offering more data for your buck. As usual with the majority of said offerings, the more you pay up each month, the greater the benefit is with AT&T's revamped bundles.

\n\n
","url":"http://www.androidcentral.com/att-revamps-mobile-share-value-plans-offering-more-data-your-buck","guid":"48479 at http://www.androidcentral.com","categories":[],"author":"Rich Edmonds","date":"2015-08-14T12:55:36.000Z","enclosure":false,"custom_elements":[]},{"title":"Android Studio v1.4 Preview 1 Enters Canary Channel With Brand New Theme Editor, Vector Asset Wizard, Performance Monitors, And More","description":"

\"android-studio\"

With the official stable release of Android Studio v1.3 a couple of weeks ago, it's time to begin testing the next string of new features. The first preview release of version 1.4 is now in the Canary channel, and it's sporting some big new features. The Android Tools team has been working on the new theme editor first demonstrated in the I/O session titled What's New in Android Development Tools.

Read More

Android Studio v1.4 Preview 1 Enters Canary Channel With Brand New Theme Editor, Vector Asset Wizard, Performance Monitors, And More was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/EoYGPgoNLj4/story01.htm","guid":"http://www.androidpolice.com/?p=331476","categories":["vector","data binding","video","Videos","styles","theme","theme editor","Android Studio","svg","Development","development","performance monitor","vector drawables","developers","News"],"author":"Cody Toombs","date":"2015-08-14T12:45:00.000Z","enclosure":false,"custom_elements":[]},{"title":"OnePlus 2 bares its guts in iFixit teardown","description":"If you haven’t seen the new OnePlus 2 for all it really is – meaning, seeing everything, including the internals – then you shouldn’t miss out on iFixit’s teardown of … Continue reading","url":"http://androidcommunity.com/oneplus-2-bares-its-guts-in-ifixit-teardown-20150814/","guid":"http://androidcommunity.com/?p=239357","categories":["Archive","Android","iFixIt","OnePlus","OnePlus 2","smartphone","teardown"],"author":"John Hoff","date":"2015-08-14T12:40:27.000Z","enclosure":false,"custom_elements":[]},{"title":"Apple hired more women, but still has a huge gender gap","description":"\n\nApple's largely white guy workforce isn't going to change overnight, but the company made strides this year, according to its latest diversity report. After promising changes in June, Tim Cook said "we're working hard to expand our recruiting effor...","url":"http://www.engadget.com/2015/08/14/apple-reduces-diversity-gap/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/apple-reduces-diversity-gap/","categories":[],"author":"Steve Dent","date":"2015-08-14T12:30:00.000Z","enclosure":false,"custom_elements":[]},{"title":"The LG Nexus will probably look something like this","description":"A render of the upcoming LG Nexus smartphone gives us our first glimpse at what the handset should look like.","url":"http://www.androidauthority.com/lg-nexus-renders-634134/","guid":"http://www.androidauthority.com/?p=634134","categories":["News","LG","LG Nexus","Nexus","Rumors"],"author":"Rob Triggs","date":"2015-08-14T12:04:48.000Z","enclosure":false,"custom_elements":[]},{"title":"Julie’s gadget diary – Should Apple be worried that Samsung Pay will win the mobile payment wars?","description":"Yesterday’s Samsung Unpacked event left me feeling disappointed about their new hardware announcements. However, their Samsung Pay announcement caught my attention. If you aren’t familiar with Samsung Pay, it’s Samsung’s mobile payment application. Like Apple Pay, Google Wallet, Android Pay (not available yet) and CurrentC (also not available yet), it’s a way to use your phone to pay […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/Kb1IMFI4swM/","guid":"http://the-gadgeteer.com/?p=183558","categories":["Android related","Articles","iPhone, iPad, iPod","gadget diary"],"author":"Julie Strietelmeier","date":"2015-08-14T12:00:33.000Z","enclosure":false,"custom_elements":[]},{"title":"HGST And Mellanox Show Off SAN Fabric Backed By Phase Change Memory","description":"

\"\"

It seems that NAND flash memory just isn't fast enough to show off the full performance of the latest datacenter networking equipment from Mellanox. They teamed up with HGST at Flash Memory Summit to demonstrate a Storage Area Network (SAN) setup that used Phase Change Memory to attain speeds that are well out of reach of any flash-based storage system.

\r\n\r\n

Last year at FMS, HGST showed a PCIe card with 2GB of Micron's Phase Change Memory (PCM). That drive used a custom protocol to achieve lower latency than possible with NVMe: it could complete a 512-byte read in about 1-1.5µs, and delivered about 3M IOPS for queued reads. HGST hasn't said how the PCM device in this year's demo differs, if at all. Instead, they're exploring what kind of performance is possible when accessing the storage remotely. Their demo has latency of less than 2µs for 512-byte reads and throughput of 3.5GB/s using Remote Direct Memory Access (RDMA) over Mellanox InfiniBand equipment. By comparison, NAND flash reads take tens of microseconds without counting any protocol overhead.

\r\n\r\n

\"\"

\r\n\r\n

This presentation from February 2014 provides a great summary of where HGST is going with this work. It's been hard to tell which non-volatile memory technology is going to replace NAND flash. Just a few weeks ago Intel and Micron announced their 3D XPoint memory, immediately taking the place as one of the most viable alternatives to NAND flash without even officially saying what kind of memory cell it uses. Rather than place a bet on which new memory technology would pan out, HGST is trying to ensure that they're ready to exploit the winner's advantages over NAND flash.

\r\n\r\n

None of the major contenders are suitable for directly replacing DRAM, either due to to limited endurance (even if it is much higher than flash), poor write performance, or vastly insufficient capacity. At the same time, ST-MRAM, CBRAM, PCM, and others are all much faster than NAND flash and none of the current interfaces other than a DRAM interface can keep pace. HGST chose to develop a custom protocol over standard PCIe as more practical than trying to make a PCM SSD that works as a DIMM connected to existing memory controllers.

\r\n\r\n

Last year's demo showed that they were ready to deliver better-than-flash performance as soon as the new memory technology becomes economical. This year's demo shows that they can retain most of that performance while putting their custom technology behind an industry-standard RDMA interface to create an immediately deployable solution, and in principle it can all work just as well for 3D XPoint memory as for Phase Change Memory.

\r\n

\"\"

","url":"http://www.anandtech.com/show/9529/hgst-and-mellanox-show-off-san-fabric-backed-by-phase-change-memory","guid":"tag:www.anandtech.com,9529:news","categories":["Storage"],"author":"Billy Tallis","date":"2015-08-14T12:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Google Play Services intros new Face Detection API","description":"In line with the new update to Google Play Services coming out, we take a look at a new API that app developers can play around with when planning out … Continue reading","url":"http://androidcommunity.com/google-play-services-intros-new-face-detection-api-20150814/","guid":"http://androidcommunity.com/?p=239343","categories":["Archive","Android","api","App","face recognition","Google","Google Play Services"],"author":"John Hoff","date":"2015-08-14T12:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"AT&T tweaks mobile data plans to match T-Mobile","description":"\n\nWith T-Mobile now behind it as the nation's third largest carrier, AT&T has updated its wireless data plans (below) to give you a bit more data for a bit less money. Unsurprisingly, the benefits get juicier if you spend more -- there's 5GB more...","url":"http://www.engadget.com/2015/08/14/atandt-updated-mobile-data-plans/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/atandt-updated-mobile-data-plans/","categories":[],"author":"Steve Dent","date":"2015-08-14T12:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Want the Galaxy Note 5 in Europe? Sign this petition!","description":"Samsung says it won't be offering the Galaxy Note 5 in Europe this year and some people aren't happy. If you want t change their mind, sign this petition!","url":"http://www.androidauthority.com/want-the-galaxy-note-5-in-europe-sign-this-petition-634125/","guid":"http://www.androidauthority.com/?p=634125","categories":["News","Europe","Galaxy Note 5","Samsung","Samsung Galaxy Note 5","Samsung Galaxy S6 Edge Plus","UK"],"author":"Nirave Gondhia","date":"2015-08-14T11:48:31.000Z","enclosure":false,"custom_elements":[]},{"title":"[Definitely, Maybe] WhatsApp's Google Drive Backup Should Be Back Now And Working For (Almost) Everyone","description":"

\"whatsapp-google-drive-final-hero\"

The saga of WhatsApp's Google Drive backup option is only rivaled by the app's epic voice calls invite feature that we all had to endure for months. It's there, then not there, then it's back, only to disappear again, then wait it's hiding and only shows when it's time for a backup... but Rita, it's not working for me, and now it's gone for everyone, oh-oh look I got it with root and a few commands, and now it's on for everyone finally. We swear.

Read More

[Definitely, Maybe] WhatsApp's Google Drive Backup Should Be Back Now And Working For (Almost) Everyone was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/Ft9Pv8tE1IY/story01.htm","guid":"http://www.androidpolice.com/?p=331485","categories":["WhatsApp Google Drive backup","Applications","gdrive","backup","whatsapp","google drive","News"],"author":"Rita El Khoury","date":"2015-08-14T11:39:21.000Z","enclosure":false,"custom_elements":[]},{"title":"Skype for Business apps now on preview for Android devices","description":"Gone are the days when all the people you need to meet with for work are actually located at your office (unless you work in a very traditional one). More … Continue reading","url":"http://androidcommunity.com/skype-for-business-apps-now-on-preview-for-android-devices-20150814/","guid":"http://androidcommunity.com/?p=239253","categories":["Archive","Android","App","Microsoft","Preview","skype","Update"],"author":"Ida Torres","date":"2015-08-14T11:30:56.000Z","enclosure":false,"custom_elements":[]},{"title":"Where next for UK government as a platform and GDS?","description":"Amid all the debate about the direction of digital government, it's important to take a critical look at the GDS plan for government as a platform","url":"http://www.computerweekly.com/opinion/Where-next-for-UK-government-as-a-platform","guid":"http://www.computerweekly.com/opinion/Where-next-for-UK-government-as-a-platform","categories":[],"author":"ComputerWeekly.com","date":"2015-08-14T11:22:43.000Z","enclosure":false,"custom_elements":[]},{"title":"Is the future of business predictive?","description":"Michael Feindt, CERN scientist and founder of a predictive analytics software house, sees a future of more automated business decision-making","url":"http://www.computerweekly.com/feature/Is-the-future-of-business-predictive","guid":"http://www.computerweekly.com/feature/Is-the-future-of-business-predictive","categories":[],"author":"ComputerWeekly.com","date":"2015-08-14T11:14:58.000Z","enclosure":false,"custom_elements":[]},{"title":"We Should All Be Thankful for Samsung’s Weirdo Phone","description":"
\"We

It's still OK to think different, no matter how much pressure there is to be the same.

\n

The post We Should All Be Thankful for Samsung’s Weirdo Phone appeared first on WIRED.

","url":"http://www.wired.com/2015/08/samsung-s6-edge-plus/","guid":"http://www.wired.com/?p=1835563","categories":["Gadget Lab","Gear","galaxy","Galaxy S6 Edge","Samsung","samsung galaxy","Samsung Galaxy S6 Edge+","smartphones"],"author":"Brian Barrett","date":"2015-08-14T11:00:52.000Z","enclosure":false,"custom_elements":[]},{"title":"24 Hours of Le Mans in Two Minutes of Epic Stop-Motion","description":"
\"24

Camden Thrasher took over 1,000 photos for an incredible video of this year's 24 Hours of Le Mans.

\n

The post 24 Hours of Le Mans in Two Minutes of Epic Stop-Motion appeared first on WIRED.

","url":"http://www.wired.com/2015/08/camden-thrasher-24-hrs-of-le-mans/","guid":"http://www.wired.com/?p=1835205","categories":["Autopia","Gear","Photo","Auto Racing","photoshop","time-lapse","Video"],"author":"Taylor Glascock","date":"2015-08-14T11:00:35.000Z","enclosure":false,"custom_elements":[]},{"title":"Audi’s Plan to Make an Electric SUV With a 300-Mile* Range","description":"
\"Audi’s

Audi wants to build an all-electric SUV that will go 300 miles on a charge, and it's partnering with Samsung and LG to get it done.

\n

The post Audi’s Plan to Make an Electric SUV With a 300-Mile* Range appeared first on WIRED.

","url":"http://www.wired.com/2015/08/audis-plan-make-electric-suv-300-mile-range/","guid":"http://www.wired.com/?p=1835572","categories":["Autopia","Gear","Audi","Electric Vehicles"],"author":"Alex Davies","date":"2015-08-14T11:00:30.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung Unpacked event videos made public, ready to tease the Android market","description":"Today is a special day, at least, for most of Samsung fans. Actually, it's already the day after D-Day when the new Note 5 and Galaxy S6 edge+ were announced. … Continue reading","url":"http://androidcommunity.com/samsung-unpacked-event-videos-made-public-ready-to-tease-the-android-market-20150814/","guid":"http://androidcommunity.com/?p=239397","categories":["Archive","Android","phablet","Samsung","Samsung Galaxy Note 5","Samsung Galaxy S6 edge+","smartphone"],"author":"R Padla","date":"2015-08-14T11:00:26.000Z","enclosure":false,"custom_elements":[]},{"title":"EC awards €8m to consortium to develop cloud-enabled 5G network","description":"Consortium led by incumbent Greek telco OTE awarded €8m of funding to support RAN virtualisation and mobile edge cloud computing for 5G networks","url":"http://www.computerweekly.com/news/4500251720/EC-awards-8m-to-consortium-to-develop-cloud-enabled-5G-network","guid":"http://www.computerweekly.com/news/4500251720/EC-awards-8m-to-consortium-to-develop-cloud-enabled-5G-network","categories":[],"author":"ComputerWeekly.com","date":"2015-08-14T11:00:09.000Z","enclosure":false,"custom_elements":[]},{"title":"Tesla’s Making It Suck Less to Drive an EV in New York","description":"
\"Tesla’s

The startup is installing its charging system in two dozen garages in Manhattan.

\n

The post Tesla’s Making It Suck Less to Drive an EV in New York appeared first on WIRED.

","url":"http://www.wired.com/2015/08/teslas-making-suck-less-drive-ev-new-york/","guid":"http://www.wired.com/?p=1835538","categories":["Autopia","Gear","Electric Vehicles","Tesla Motors"],"author":"Jordan Golson","date":"2015-08-14T11:00:09.000Z","enclosure":false,"custom_elements":[]},{"title":"Reddit rolls over to please Russia's authorities","description":"\n\nRemember the tale of how Reddit managed to get itself banned in Russia because of a thread that promoted the growing of psychedelic mushrooms? A few days later and the site has returned, mostly because it rolled over and locally blocked the offendi...","url":"http://www.engadget.com/2015/08/14/reddit-deletes-drug-subreddit-please-russian-authorities/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/reddit-deletes-drug-subreddit-please-russian-authorities/","categories":[],"author":"Daniel Cooper","date":"2015-08-14T10:52:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung brings wireless charging tech to Galaxy S6 edge+, Note 5","description":"Much has been said about the new Galaxy Note 5 and Galaxy S6 edge+ and we’re expecting to read a lot of reviews once the pair is released. And as … Continue reading","url":"http://androidcommunity.com/samsung-brings-wireless-charging-tech-to-galaxy-s6-edge-note-5-20150814/","guid":"http://androidcommunity.com/?p=239396","categories":["Archive","Android","Samsung","Samsung Galaxy Note 5","Samsung Galaxy S6 edge+","smartphone","wireless charging"],"author":"R Padla","date":"2015-08-14T10:30:44.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung Galaxy Note 4 vs. Galaxy Note 5: Will you upgrade?","description":"There’s no escaping Samsung news today as they made the splash and finally released to the public the much-hyped and much-leaked Samsung Galaxy Note 5. The Korean gadget giant is … Continue reading","url":"http://androidcommunity.com/samsung-galaxy-note-4-vs-galaxy-note-5-will-you-upgrade-20150814/","guid":"http://androidcommunity.com/?p=239320","categories":["Archive","Android","phablet","Samsung","Samsung Galaxy Note 4","Samsung Galaxy Note 5","smartphone"],"author":"John Hoff","date":"2015-08-14T10:00:22.000Z","enclosure":false,"custom_elements":[]},{"title":"Smart dog collar tracks your pooch's diet and location","description":"\n\nThere are a lot of devices out there that you can use to keep track of your pets, but the Buddy collar is akin to several types rolled into one. The LED collar makes sure Fido's visible in the dark, but it's also a temperature sensor, an activity t...","url":"http://www.engadget.com/2015/08/14/buddy-smart-dog-collar/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/buddy-smart-dog-collar/","categories":[],"author":"Mariella Moon","date":"2015-08-14T09:58:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Google gets more time to respond to European anti-competitive charges","description":"The EC has granted Google a second extension of the deadline to respond to anti-competitive charges","url":"http://www.computerweekly.com/news/4500251716/Google-gets-more-time-to-respond-to-European-anti-competitive-charges","guid":"http://www.computerweekly.com/news/4500251716/Google-gets-more-time-to-respond-to-European-anti-competitive-charges","categories":[],"author":"ComputerWeekly.com","date":"2015-08-14T09:45:49.000Z","enclosure":false,"custom_elements":[]},{"title":"Home Office puts out feelers for new Emergency Services Network deal","description":"Home Office issues a prior information notice that suggests it is planning to bring a revised version of Lot 4 of the Emergency Services Network procurement back to life","url":"http://www.computerweekly.com/news/4500251683/Home-Office-puts-out-feelers-for-new-Emergency-Services-Network-deal","guid":"http://www.computerweekly.com/news/4500251683/Home-Office-puts-out-feelers-for-new-Emergency-Services-Network-deal","categories":[],"author":"ComputerWeekly.com","date":"2015-08-14T09:45:46.000Z","enclosure":false,"custom_elements":[]},{"title":"GDS saves the government £1.7bn through digital and technology transformation","description":"The government has made £18.6bn year-on-year savings, with £1.7bn coming from GDS-led efficiency and reform","url":"http://www.computerweekly.com/news/4500251688/GDS-saves-the-government-17bn-through-digital-and-technology-transformation","guid":"http://www.computerweekly.com/news/4500251688/GDS-saves-the-government-17bn-through-digital-and-technology-transformation","categories":[],"author":"ComputerWeekly.com","date":"2015-08-14T09:40:02.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung unveils a slew of stylish and functional Galaxy Note 5 accessories","description":"Always expect Samsung to plan a major event when it's announcing new flagship products. Aside from wowing the mobile crowd with their sleek form and premium specs, Samsung managed to showcase … Continue reading","url":"http://androidcommunity.com/samsung-unveils-a-slew-of-stylish-and-functional-galaxy-note-5-accessories-20150814/","guid":"http://androidcommunity.com/?p=239352","categories":["Archive","Android","galaxy note","phablet","Samsung","Samsung Galaxy Note 5","smartphone"],"author":"R Padla","date":"2015-08-14T09:30:49.000Z","enclosure":false,"custom_elements":[]},{"title":"8 Apps for Making Legit Music on Your Phone","description":"
\"8

Use your phone for more than just listening to tunes. With the right tools, you can be an artist too.

\n

The post 8 Apps for Making Legit Music on Your Phone appeared first on WIRED.

","url":"http://www.wired.com/2015/08/best-music-apps/","guid":"http://www.wired.com/?p=1805261","categories":["Gear","Magazine","Apps","magazine-23.08","Music"],"author":"Michael Calore","date":"2015-08-14T09:15:14.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung Galaxy Note 5 not coming to Europe, a 128GB variant out","description":"Well, we have a little more insight into Samsung’s Galaxy Note 5 launch as more details spill out. The dust hasn’t even begun to settle, but what do have here? … Continue reading","url":"http://androidcommunity.com/samsung-galaxy-note-5-not-coming-to-europe-a-128gb-variant-out-20150814/","guid":"http://androidcommunity.com/?p=239339","categories":["Archive","Android","europe","european markets","phablet","Samsung","Samsung Galaxy Note 5","Samsung Galaxy S6 edge+"],"author":"John Hoff","date":"2015-08-14T09:00:43.000Z","enclosure":false,"custom_elements":[]},{"title":"'Mommy robot' can build and test its own babies","description":"\n\nA University of Cambridge team of researchers has created a "mother robot" capable of giving birth to -- or more correctly, building its own -- baby cube-bots. The team conducted five rounds of experiments, wherein it assembled 10 pint-sized machin...","url":"http://www.engadget.com/2015/08/14/university-of-cambride-mother-robot/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/university-of-cambride-mother-robot/","categories":[],"author":"Mariella Moon","date":"2015-08-14T08:31:00.000Z","enclosure":false,"custom_elements":[]},{"title":"T-Mobile adds Galaxy Note 5, S6 edge+ to Un-carrier JUMP! On Demand deals","description":"The latest pair of premium phablets from Samsung are finally out. Samsung didn't announce the prices during launch but we know they will be available starting August 21. We've got … Continue reading","url":"http://androidcommunity.com/t-mobile-adds-galaxy-note-5-s6-edge-to-un-carrier-jump-on-demand-deals-20150814/","guid":"http://androidcommunity.com/?p=239333","categories":["Archive","Android","Samsung","Samsung Galaxy Note 5","Samsung Galaxy S6 edge+","T-Mobile"],"author":"R Padla","date":"2015-08-14T08:30:17.000Z","enclosure":false,"custom_elements":[]},{"title":"OnePlus 2 teardown reveals easy-to-replace modular components","description":"\n\nWe previewed the OnePlus 2 for you in the past, but if you'd rather see some internal component porn, iFixit has got your back. iFixit has taken the device apart like it did the first OnePlus phone (and many, many other gadgets before it) to examin...","url":"http://www.engadget.com/2015/08/14/oneplus-2-ifixit-teardown/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/oneplus-2-ifixit-teardown/","categories":[],"author":"Mariella Moon","date":"2015-08-14T07:12:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Evernote's cleaner, faster web interface starts rolling out","description":"\n\nEvernote's been beta testing a redesigned web interface since last October. But, after nearly a year of experimenting with the fresh look, the company is finally ready to make it available to all its users starting this week. The main purpose of th...","url":"http://www.engadget.com/2015/08/14/evernotes-cleaner-faster-web-interface-starts-rolling-out/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/14/evernotes-cleaner-faster-web-interface-starts-rolling-out/","categories":[],"author":"Edgar Alvarez","date":"2015-08-14T05:56:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung Pay with Magnetic Secure Transmission launches in the US next month","description":"Samsung Wallet already ceased operations last June 30 and will soon be replaced by  Samsung Pay this September in the United States. A trial service began in South Korea last … Continue reading","url":"http://androidcommunity.com/samsung-pay-with-magnetic-secure-transmission-launches-in-the-us-next-month-20150814/","guid":"http://androidcommunity.com/?p=239316","categories":["Archive","Android","mobile payment","Samsung","Samsung Pay","smartphone"],"author":"R Padla","date":"2015-08-14T05:00:47.000Z","enclosure":false,"custom_elements":[]},{"title":"CW500 Security Club: Ashish Surti, information security director at Clutch Group","description":"Mobile threats are the fastest growing form of cyber-attack, but user awareness is still poor","url":"http://www.computerweekly.com/video/CW500-Security-Club-Ashish-Surti-information-security-director-at-Clutch-Group","guid":"http://www.computerweekly.com/video/CW500-Security-Club-Ashish-Surti-information-security-director-at-Clutch-Group","categories":[],"author":"ComputerWeekly.com","date":"2015-08-14T04:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"CW500 Security Club: Sarb Sembhi, Director at STORM Guidance","description":"Mobility is the number one priority for IT leaders in the UK this year, but the number of IT chiefs focusing on mobile security is a lot lower","url":"http://www.computerweekly.com/video/CW500-Security-Club-Sarb-Sembhi-Director-at-STORM-Guidance","guid":"http://www.computerweekly.com/video/CW500-Security-Club-Sarb-Sembhi-Director-at-STORM-Guidance","categories":[],"author":"ComputerWeekly.com","date":"2015-08-14T04:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Fox Sports is streaming a Bundesliga soccer game on YouTube","description":"\n\nThe Bundesliga, Germany's top-tier football league, is coming to YouTube. After recently securing US broadcast rights for this competition, Fox Sports has now announced it will stream a live match via Google's video service on August 14th. As the n...","url":"http://www.engadget.com/2015/08/13/fox-sports-bundesliga-livestream-youtube/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/13/fox-sports-bundesliga-livestream-youtube/","categories":[],"author":"Edgar Alvarez","date":"2015-08-14T03:56:00.000Z","enclosure":false,"custom_elements":[]},{"title":"YouTube Live Broadcast announced, ready to beat Periscope and Meerkat","description":"Google has just introduced YouTube Live Broadcast. It's a new special feature on the recently announced Galaxy S6 edge+ and Galaxy Note 5 from Samsung. So it's another live streaming … Continue reading","url":"http://androidcommunity.com/youtube-live-broadcast-announced-ready-to-beat-periscope-and-meerkat-20150813/","guid":"http://androidcommunity.com/?p=239308","categories":["Archive","Android","Google","live streaming","Samsung Galaxy Note 5","Samsung Galaxy S6 edge+","Youtube"],"author":"R Padla","date":"2015-08-14T03:37:30.000Z","enclosure":false,"custom_elements":[]},{"title":"Google skirted drone test rules by using a deal with NASA","description":"\n\nGetting an FAA exemption to operate commercial drones in American airspace is almost more trouble than it's worth, what with the litany of requirements and restrictions. That's why Google, according to a Guardian report, has been sidestepping those...","url":"http://www.engadget.com/2015/08/13/google-skirted-drone-test-rules-by-using-a-deal-with-nasa/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi","guid":"http://www.engadget.com/2015/08/13/google-skirted-drone-test-rules-by-using-a-deal-with-nasa/","categories":[],"author":"Andrew Tarantola","date":"2015-08-14T02:56:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Motorola Will Take Over Lenovo's Slumping Smartphone Division In Spite Of Motorola's 31% Sales Drop","description":"

\"Motorola-a-Lenovo-Company\"

Nestled in Lenovo's latest earnings report were disappointing figures for both their own brand of smartphones and Motorola, which was acquired late last year. The Chinese company's response is to do some fairly large-scale restructuring, handing over basically all aspects of Lenovo smartphones to Motorola with the possible exception of marketing. Motorola will continue to develop, make, and market their own line that most Westerners are familiar with.

In light of the earnings figures, it might be surprising that Motorola is the part of the larger company that is rewarded with more responsibility.

Read More

Motorola Will Take Over Lenovo's Slumping Smartphone Division In Spite Of Motorola's 31% Sales Drop was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/-pZn83yNx6U/story01.htm","guid":"http://www.androidpolice.com/?p=331409","categories":["Motorola","earnings reports","Lenovo","motorola acquisition","business","lenovo","News"],"author":"Jacob Long","date":"2015-08-14T02:24:50.000Z","enclosure":false,"custom_elements":[]},{"title":"NVIDIA Releases 355.60 Drivers; GameWorks VR Now In Beta","description":"

\"\"

As the week starts to wind down NVIDIA is back with another driver release, 335.60.

\r\n\r\n

This latest release is notable for a few different reasons. Officially NVIDIA is releasing this as their preferred Game Ready driver for the Ashes of the Singularity tech demo, which is due later this month. Ashes is a large-scale RTS being developed by Oxide Games and Stardock, the former of which is likely better known for their Star Swarm tech demo. Built on the same Nitrous engine, Ashes will be the first DirectX 12 enabled consumer software to be released, though in very early form as a tech demo ahead of its 2016 launch.

\r\n\r\n

\"\"

\r\n\r\n

Meanwhile this driver is also the first release from NVIDIA’s R355 branch. At this point we don’t know a great deal about this new driver branch – NVIDIA’s release notes are thin on both new features and bug fixes – though I suspect this is one of those cases where we’ll find out more later.

\r\n\r\n

That said, the one major addition we do know about for this driver is that it enables support for NVIDIA’s GameWorks VR technology in a consumer driver. Along with this driver release GameWorks VR is being promoted from alpha to beta status, and with the release of a new beta SDK is being opened up to more developers and wider testing. NVIDIA has been heavily investing in VR, seeing it as a potential new market to not only further grow sales, but as a market that will require more powerful and expensive GPUs than standard consumer system builds.

\r\n\r\n

As usual, you can grab the drivers for all current desktop and mobile NVIDIA GPUs over at NVIDIA’s driver download page.

\r\n

","url":"http://www.anandtech.com/show/9528/nvidia-releases-35560-drivers-gameworks-vr-now-in-beta","guid":"tag:www.anandtech.com,9528:news","categories":["GPUs"],"author":"Ryan Smith","date":"2015-08-14T01:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"HP Isn't Done With Android Just Yet - 'HP 10 G2' Tablet Certified By The FCC And The Bluetooth SIG","description":"

\"hp5\"So far HP's Android tablets have been somewhat unremarkable, with the arguable exception of the Pro Slate series. Despite a lukewarm response from consumers and retailers, it looks like the company is ready to release at least one more model. A new tablet called the HP 10 G2 has been hanging out with both the FCC and the Bluetooth Special Interest Group, and spotted by Liliputing. Based on the \"10 G2\" name and photos, it looks like a relatively low-cost follow-up to the original HP 10.

Read More

HP Isn't Done With Android Just Yet - 'HP 10 G2' Tablet Certified By The FCC And The Bluetooth SIG was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/Rysijq9O4tw/story01.htm","guid":"http://www.androidpolice.com/?p=331389","categories":["hp 10 g2","Leaks","tablet","leak","bluetooth sig","hp","HP","certification","fcc"],"author":"Michael Crider","date":"2015-08-13T22:33:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Visually Impressive Shooter 'Warhammer 40,000: Freeblade' Coming This Fall To Android","description":"

\"Freeblade_1366\"

Fans of Warhammer 40,000 have put up with a lot over the years. The IP has been the basis for a great many mobile games, only some of which have been good. The newly announced Warhammer 40,000: Freeblade looks like it has some potential, just judging from the flashy gameplay trailer. Many questions remain unanswered, though.

In this game, you'll take control of an Imperial Knight—basically a giant mech with lots of guns and stabbing weapons.

Read More

Visually Impressive Shooter 'Warhammer 40,000: Freeblade' Coming This Fall To Android was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/D0QFaFZdpqs/story01.htm","guid":"http://www.androidpolice.com/?p=331365","categories":["warhammer","video","Videos","warhammer 40K","Games","News"],"author":"Ryan Whitwam","date":"2015-08-13T22:12:54.000Z","enclosure":false,"custom_elements":[]},{"title":"AT&T, Verizon, Sprint, T-Mobile, And US Cellular Announce Plans For The Galaxy S6 Edge+ And Galaxy Note 5, Best Buy Offers $200 Trade-In","description":"

\"gsthumb\"If you've been watching today's coverage of the Galaxy Note 5 and Galaxy S6 Edge+ with bated breath, you won't have to wait too long to pick one up from an American carrier. All five major US networks have confirmed that they'll be carrying Samsung's new flagships, with varying degrees of availability and pre-order status. The official release date from Samsung is August 21st, and AT&T is already selling phones.

Read More

AT&T, Verizon, Sprint, T-Mobile, And US Cellular Announce Plans For The Galaxy S6 Edge+ And Galaxy Note 5, Best Buy Offers $200 Trade-In was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/j1THNVESdAI/story01.htm","guid":"http://www.androidpolice.com/?p=331361","categories":["Galaxy Note 5","Samsung","Sprint","Verizon Wireless","galaxy s6 edge","Galaxy S6 Edge+","News","verizon wireless","T-Mobile","US Cellular"],"author":"Michael Crider","date":"2015-08-13T21:29:52.000Z","enclosure":false,"custom_elements":[]},{"title":"Robinhood Free Stock Market Trading App Comes To Android","description":"

\"Robinhood\"

Using the stock market isn't free. Well, obviously. You're buying and selling stocks, after all. But on top of that, brokerage firms tend to charge fees to manage financial transactions. The Robinhood app lets you get around that fee, and now it has made its way over from iOS to Android.

Robinhood lets you access market data and quotes in real-time. You can buy and sell stocks without the app charging you for each transaction, though SEC and FINRA regulatory fees may apply.

Read More

Robinhood Free Stock Market Trading App Comes To Android was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/ZTesF__X9WU/story01.htm","guid":"http://www.androidpolice.com/?p=331344","categories":["stock market","google play","play store","Applications","new app","video","finances","Videos","app","robinhood","News"],"author":"Bertel King, Jr.","date":"2015-08-13T21:03:59.000Z","enclosure":false,"custom_elements":[]},{"title":"Meet MIT’s Beer Delivery Bots","description":"

Finally, robots are useful.

\n

The post Meet MIT’s Beer Delivery Bots appeared first on WIRED.

","url":"http://www.wired.com/2015/08/meet-mits-beer-delivery-bots/","guid":"http://www.wired.com/?p=1835509","categories":["Gadget Lab","Gear","beer","MIT","MIT engineers","robots"],"author":"Gordon Gottsegen","date":"2015-08-13T20:32:25.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung's Insane Keyboard Cover Is Real, Will Be Available For The Note 5 And S6 Edge+","description":"

\"samsung-keyboard-cover-note-960\"

Samsung has had a lot of strange ideas in the past, but you can afford to experiment when you're raking in cash as the top Android OEM. The newly announced keyboard cover for the Note 5 and S6 Edge+ is especially weird, though. It's a case with a snap-on physical keyboard that interacts with the screen. It's also indisputably ugly.

The rear section of the keyboard cover looks like any other cover, but there are two notches where the front keyboard section attaches when you need it.

Read More

Samsung's Insane Keyboard Cover Is Real, Will Be Available For The Note 5 And S6 Edge+ was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/-iDWBs1s27s/story01.htm","guid":"http://www.androidpolice.com/?p=331332","categories":["accessories","Galaxy Note 5","Samsung","Accessories","Galaxy S6","Galaxy S6 Edge+","keyboard cover","News","Galaxy S6 Edge","keyboards"],"author":"Ryan Whitwam","date":"2015-08-13T19:50:42.000Z","enclosure":false,"custom_elements":[]},{"title":"[North American Giveaway] Win One Of Three NVIDIA SHIELD Android TV Bundles","description":"

\"SHIELDconsole\"

Today a number of great games have all become available for NVIDIA SHIELD all around the same time. To make sure that you have something to play these titles on, we're giving away three bundles of hardware. Sure, you could already play most of these games on your phone or tablet, but wouldn't you rather fire them up on and NVIDIA SHIELD console? In that past, we've called it the best Android TV device on the market.

Read More

[North American Giveaway] Win One Of Three NVIDIA SHIELD Android TV Bundles was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/e0wz_pg1POM/story01.htm","guid":"http://www.androidpolice.com/?p=331006","categories":["shield","NVIDIA","nvidia shield","SHIELD","Contests / Giveaways","giveaway","News","Games","nvidia"],"author":"Bertel King, Jr.","date":"2015-08-13T19:41:06.000Z","enclosure":false,"custom_elements":[]},{"title":"34 Best Android Wear Apps And Watch Faces From 6/16/15—8/13/15","description":"

\"wear\"There's a distinct lack of new Android Wear devices on the market right now, but perhaps you can tide yourself over with some new apps and watch faces for your faithful wrist companion. We've got a ton of new stuff as always, but even more watch faces thanks to Google's recent push with various brands and designers. Strap on your watch and get ready.

Please wait for this page to load in full in order to see the widgets, which include ratings and pricing info.
Read More

34 Best Android Wear Apps And Watch Faces From 6/16/15—8/13/15 was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/WGSZR8ui8qI/story01.htm","guid":"http://www.androidpolice.com/?p=330998","categories":["Roundups","Applications","video","android wear","roundups","Android Wear","Videos","smart watches","News","apps"],"author":"Ryan Whitwam","date":"2015-08-13T19:25:51.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung Galaxy Note 5 And S6 Edge+ Now Available From AT&T For $740 And $815—Get $300 In Bill Credit Under Certain Conditions","description":"

\"Selection_001\"

Here's something you already knew about the Galaxy Note 5 and S6 Edge+ before today's announcement—both devices are expensive. Samsung charged a ton for its massive phones before, and nothing about introducing more premium materials into this year's iterations says cheap. So you're looking at parting with uncomfortably close to a grand by the time taxes are factored into the equation.

AT&T, for example, wants around $740 for the Galaxy Note 5 and $815 for the S6 Edge+.

Read More

Samsung Galaxy Note 5 And S6 Edge+ Now Available From AT&T For $740 And $815—Get $300 In Bill Credit Under Certain Conditions was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/FqtJgjDORvU/story01.htm","guid":"http://www.androidpolice.com/?p=331316","categories":["Galaxy Note 5","promotion","video","bill credit","Videos","Galaxy S6 Edge+","News","Galaxy S6 Edge Plus","AT&T"],"author":"Bertel King, Jr.","date":"2015-08-13T19:10:57.000Z","enclosure":false,"custom_elements":[]},{"title":"[Update: Nexus 9 LTE] OTA Updates Incoming For Nexus Devices To Fix Vulnerability In Stagefright","description":"

\"nexus

Last week, Google released factory images for every actively-supported Nexus except the Nexus 7 2013 LTE and Nexus Player. These images were for a new build, LMY48I, intended to patch the recently outed vulnerability that was found in Stagefright.

Today, it appears the OTAs are beginning to hit the masses, but be warned, all these do is patch Stagefright. They contain no other fixes of any kind, so if there's some problem with your device you're hoping to have solved with this update, it's not going to happen.

Read More

[Update: Nexus 9 LTE] OTA Updates Incoming For Nexus Devices To Fix Vulnerability In Stagefright was written by the awesome team at Android Police.



\r\n \r\n
\"\"/","url":"http://feedproxy.google.com/~r/AndroidPolice/~3/qr3tX6Ts9hQ/story01.htm","guid":"http://www.androidpolice.com/?p=330698&uniqid=55ccec19179ad","categories":["lvy48e","stagefright","update","Android 5.1.1","lyz28j","News","lmy48i","OTAs"],"author":"Shawn De Cesari","date":"2015-08-13T19:08:57.000Z","enclosure":false,"custom_elements":[]},{"title":"Emirates Offers the World’s Longest Commercial Flight: 17.5 Hours","description":"
\"Emirates

The rapidly growing Middle Eastern airline is launching new service to Central America, grabbing the longest flight by a few miles.

\n

The post Emirates Offers the World’s Longest Commercial Flight: 17.5 Hours appeared first on WIRED.

","url":"http://www.wired.com/2015/08/emirates-worlds-longest-flight/","guid":"http://www.wired.com/?p=1835506","categories":["Autopia","Gear","Airlines","Aviation"],"author":"Jordan Golson","date":"2015-08-13T18:13:31.000Z","enclosure":false,"custom_elements":[]},{"title":"Dell’s New Chromebook Might Be The Best One Yet","description":"
\"Dell’s

They say it's for work, but it'll do well for anyone.

\n

The post Dell’s New Chromebook Might Be The Best One Yet appeared first on WIRED.

","url":"http://www.wired.com/2015/08/dell-chromebook-13-work/","guid":"http://www.wired.com/?p=1835521","categories":["Gadget Lab","Gear","gallery"],"author":"David Pierce","date":"2015-08-13T18:01:58.000Z","enclosure":false,"custom_elements":[]},{"title":"The SuperSite Windows 10 How To Collection: All about Microsoft Edge","description":"
With new Web browsers comes new ways of making them work for you. We've collected all our Microsoft Edge how-tos in one place. You'll have your browser working just like you want it to in no time.
\n\n

read more

","url":"http://winsupersite.com/windows-10/supersite-windows-10-how-collection-all-about-microsoft-edge","guid":"58281 at http://winsupersite.com","categories":["Cortana","Mail App","Microsoft Edge","Windows 10"],"author":null,"date":"2015-08-13T17:10:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Government warned to be cautious over raising salary thresholds for migrant workers","description":"The organisations asked by government to review plans to raise the salary migrants must earn before getting a visa has recommended a cautious approach","url":"http://www.computerweekly.com/news/4500251665/Government-warned-to-be-cautious-over-raising-salary-thresholds-for-migrant-workers","guid":"http://www.computerweekly.com/news/4500251665/Government-warned-to-be-cautious-over-raising-salary-thresholds-for-migrant-workers","categories":[],"author":"ComputerWeekly.com","date":"2015-08-13T16:30:50.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung Breaks Out a Keyboard Case for its New Phones","description":"
\"Samsung

Bring on the button mashing.

\n

The post Samsung Breaks Out a Keyboard Case for its New Phones appeared first on WIRED.

","url":"http://www.wired.com/2015/08/samsung-breaks-new-keyboard-case-new-phones/","guid":"http://www.wired.com/?p=1835419","categories":["Gadget Lab","Gear","phone cases","phones","Samsung","Samsung Galaxy Note 5","Samsung Galaxy S6 Edge+"],"author":"Tim Moynihan","date":"2015-08-13T16:29:14.000Z","enclosure":false,"custom_elements":[]},{"title":"CIO interview: David Bulman, interim CIO, Wellcome Trust","description":"The medical research charity is reviewing its IT plans ahead of recruiting a permanent CIO","url":"http://www.computerweekly.com/news/4500251288/CIO-interview-David-Bulman-interim-CIO-Wellcome-Trust","guid":"http://www.computerweekly.com/news/4500251288/CIO-interview-David-Bulman-interim-CIO-Wellcome-Trust","categories":[],"author":"ComputerWeekly.com","date":"2015-08-13T16:15:27.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung Has Two Big New Phones, and Even Bigger Ideas","description":"
\"Samsung

The Galaxy Note 5 and Galaxy S6 Edge+ each have a single feature Samsung hopes will set them apart.

\n

The post Samsung Has Two Big New Phones, and Even Bigger Ideas appeared first on WIRED.

","url":"http://www.wired.com/2015/08/samsung-galaxy-note-5-s6-edge-plus/","guid":"http://www.wired.com/?p=1835031","categories":["Gadget Lab","Gear","android","Edge","note","Samsung","smartphone"],"author":"David Pierce","date":"2015-08-13T15:00:56.000Z","enclosure":false,"custom_elements":[]},{"title":"Business not keeping up with rapid changes in cyber attacks, says Proofpoint","description":"Most striking development in the first half of 2015 was a big shift from URL-based cyber attacks to attacks that rely on malicious document attachments","url":"http://www.computerweekly.com/news/4500251669/Business-not-keeping-up-with-rapid-changes-in-cyber-attacks-says-Proofpoint","guid":"http://www.computerweekly.com/news/4500251669/Business-not-keeping-up-with-rapid-changes-in-cyber-attacks-says-Proofpoint","categories":[],"author":"ComputerWeekly.com","date":"2015-08-13T15:00:44.000Z","enclosure":false,"custom_elements":[]},{"title":"Hands On With the Samsung Galaxy Note 5 and Samsung Galaxy S6 edge+","description":"

Today, Samsung is announcing the next generation of their Galaxy-brand phablets, the Galaxy Note 5 and the Galaxy S6 edge+. Samsung’s phablets have been one of their greatest smartphone success stories, finding traction in a market when many thought there wouldn’t be a place for such a large phone. And while you will never see some competitors directly admit to it, products like the Note series have legitimized the phablet form factor and required that the competition catch up as well, making the phablet form factor as much of a home court for Samsung as there can be.

\n\n

Starting with the 2014 models, Samsung introduced two different phablets, the Note 4 and the simply titled Note Edge. This year Samsung is retaining the dual phablet approach, however in the case of the Edge product Samsung has shifted gears on what they want to do. For 2015 Samsung seems to be going after a new audience in the form of the Galaxy S6 edge+, which is a more distinct derivative of the Note 5 platform with some greater feature changes than just a curved screen. To understand what I mean, read on for the full article.

","url":"http://www.anandtech.com/show/9502/hands-on-with-the-galaxy-note-5-and-galaxy-s6-edge-plus","guid":"tag:www.anandtech.com,9502:news","categories":["Smartphones"],"author":"Joshua Ho","date":"2015-08-13T15:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Windows 10 Spotlight Makes Its Debut for Windows Home","description":"
Announced at Build 2015, the Windows Spotlight feature has now shown up for Windows 10 Home edition users.
\n\n

read more

","url":"http://winsupersite.com/windows-10/windows-10-spotlight-makes-its-debut-windows-home","guid":"58271 at http://winsupersite.com","categories":["Windows 10"],"author":null,"date":"2015-08-13T14:51:00.000Z","enclosure":false,"custom_elements":[]},{"title":"iClever Bluetooth Stereo Headset (IC-BTH01) review","description":"I’m on the hunt for a comfortable, good sounding Bluetooth headset with long battery life that will allow me to enjoy music while also letting me answer incoming calls. You wouldn’t think it would be too difficult to find a headset that ticks all those boxes, but it always seems like there’s one feature that doesn’t […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/etWRfKD7oy4/","guid":"http://the-gadgeteer.com?p=182885&preview_id=182885","categories":["Audio, Video, TV Gear","Bluetooth Gear","Reviews","bluetooth headset"],"author":"Julie Strietelmeier","date":"2015-08-13T14:00:21.000Z","enclosure":false,"custom_elements":[]},{"title":"Windows 10 is Turning Me Back into a Windows 7 User","description":"
Windows 10 is a mixture of Windows 7 and Windows 8, but its weighted toward the Windows 7 user.
\n\n

read more

","url":"http://winsupersite.com/windows-10/windows-10-turning-me-back-windows-7-user","guid":"58261 at http://winsupersite.com","categories":["Windows 10"],"author":null,"date":"2015-08-13T13:54:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Gloucester City Homes embarks on VDI-led tech transformation with Exponential-e","description":"Social housing firm taps into Exponential-e's Ethernet capabilities to make it easier for its staff to work flexibly","url":"http://www.computerweekly.com/news/4500251636/Gloucester-City-Homes-embarks-on-VDI-led-tech-transformation-with-Exponential-e","guid":"http://www.computerweekly.com/news/4500251636/Gloucester-City-Homes-embarks-on-VDI-led-tech-transformation-with-Exponential-e","categories":[],"author":"ComputerWeekly.com","date":"2015-08-13T13:45:54.000Z","enclosure":false,"custom_elements":[]},{"title":"Interview: Government digital chief Mike Bracken – why I quit","description":"Mike Bracken, the outgoing director of the Government Digital Service, talks exclusively to Computer Weekly about his departure from Whitehall","url":"http://www.computerweekly.com/news/4500251662/Interview-Government-digital-chief-Mike-Bracken-why-I-quit","guid":"http://www.computerweekly.com/news/4500251662/Interview-Government-digital-chief-Mike-Bracken-why-I-quit","categories":[],"author":"ComputerWeekly.com","date":"2015-08-13T13:20:18.000Z","enclosure":false,"custom_elements":[]},{"title":"Sigma rear brake light – light and bright","description":"A simple solution to a complex problem, the Sigma rear brake light allows motor vehicle drivers to know when you’re braking on your bicycle. Small at 3 x 3 cms/1.18 in and light (weight wise @ 7 grams/ 0.25 oz   ), easy to install (you just need a 2.5mm hex key)  and simple in […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/cFH1QtlO8rY/","guid":"http://the-gadgeteer.com/?p=183537","categories":["Health, Fitness, Sports","News","Outdoor Gear"],"author":"Ian Lim","date":"2015-08-13T13:00:57.000Z","enclosure":false,"custom_elements":[]},{"title":"Ofcom launches mobile network coverage checker","description":"Ofcom gives smartphone users the ability to check their operator’s mobile phone coverage at postcode level using an online tool","url":"http://www.computerweekly.com/news/4500251631/Ofcom-launches-mobile-network-coverage-checker","guid":"http://www.computerweekly.com/news/4500251631/Ofcom-launches-mobile-network-coverage-checker","categories":[],"author":"ComputerWeekly.com","date":"2015-08-13T12:45:57.000Z","enclosure":false,"custom_elements":[]},{"title":"Samsung SSD Update: 48-layer 256Gbit TLC 3D NAND & Three New TLC SSDs Announced","description":"

\"\"

When Samsung took the stage at the 2015 Flash Memory Summit, they admittedly didn't deliver any bombshell announcements on the scale of the Intel/Micron 3D XPoint surprise, but they still had a lot to talk about.

\r\n\r\n

We knew that Samsung's third generation of V-NAND/3D NAND was on the way with mass production scheduled for the second half of this year. Samsung has now disclosed that mass production is starting this month, and that it's a 48-layer design with a 256Gb TLC being the first die announced. Samsung's current second-generation 3D NAND is a 32-layer design available as 128Gb TLC or 128Gb MLC.

\r\n\r\n

With mass production imminent, Samsung has ensured that neither SK Hynix nor the Toshiba/SanDisk joint venture will be able to leapfrog them with their respective 48-layer 3D NAND designs, both scheduled for mass production starting in 2016.

\r\n\r\n

Samsung says the new 256Gb TLC will have about 30% lower power consumption than an equivalent capacity of their current 128Gb TLC, and a switch to a dual-plane organization ensures that one 256Gb die will perform at least as well as a pair of the current 128Gb dies. Density is improved by about 40% while production costs only increased slightly, so price per GB will be going down. At FMS, Samsung is pushing the idea that their 3D NAND TLC is ready to replace MLC for most uses, and they're optimistic about scaling up their 3D NAND layer count past 100.

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
New Samsung 48-Layer TLC SSDs
DrivePM953PM1633PM1725
Form FactorNVMe over M.2 22110 and 2.5"2.5" SAS 12Gb/sNVMe PCIe HHHL card
Capacities480GB, 960GB, 1.92TB (2.5" only)480GB, 960GB, 1.92TB, 3.84TB3.2TB, 6.4TB
Sequential Read?1,100 MB/s5,500 MB/s
Sequential Write?1,000 MB/s1,800 MB/s
4kB Random Read IOPS?160k1,000k
4kB Random Write IOPS?18k120k
Endurance Rating??5 DWPD (6.4 TB model)
\r\n\r\n

Samsung also shared information about three upcoming drives, all using TLC though not necessarily the new 48-layer parts. The PM1633 Enterprise SAS drive was previewed at CES in January and is intended for read-heavy workloads. A follow-on PM1633a model was mentioned to use the new 48-layer TLC to reach 15.36TB capacity, but we don't have any other information about that update. The PM953 is a enterprise NVMe drive in M.2 or 2.5" form factors, and is the counterpart to the MLC-based SM951. Of particular interest, the M.2 version is using the M.2 22110 form factor (22mm x 110mm, the maximum length for M.2), with Samsung using the extra space to implement power loss protection.

\r\n\r\n

Meanwhile the PM1725 is a fast multi-TB PCIe expansion card that Samsung intends to use to challenge the assumptions about what uses TLC is suited for. Relatively speaking it appears to be intended for workloads that aren't very write-heavy, but it still manages 120k IOPS for writes. That just looks small compared to 1M IOPS for reads and a sequential read speed of 5.5GB/s.

\r\n\r\n

All three drives are intended for OEMs, but the PM953 will probably find its way into the retail channel just like the SM951.

\r\n\r\n

Finally, along with Samsung's new 3D NAND appearing in the afformentioned new drives, it will also be appearing in at least one of their existing drives. The 850 EVO, Samsung's current consumer TLC drive, will apparently be getting an update to use the new 48-layer TLC, though it's not clear if this will be new capacities and/or a wholesale NAND update.

\r\n

","url":"http://www.anandtech.com/show/9524/samsung-ssd-update-48layer-tlc-3d-nand-three-new-tlcbased-ssds","guid":"tag:www.anandtech.com,9524:news","categories":["SSDs"],"author":"Billy Tallis","date":"2015-08-13T12:30:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Plantronics headphones, Incase backpack, BBQ Dragon and more – Review updates","description":"What happens after we review a product? Do we shove it in a drawer never to be used again? Do we continue using it long after we’ve posted our review? Our regular review updates will answer those questions. Check out this week’s updates after the jump. Plantronics BackBeat FIT headphones review by Raul Sanchez Incase […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/gFGlofWFrQo/","guid":"http://the-gadgeteer.com/?p=183517","categories":["Reviews","review updates"],"author":"Julie Strietelmeier","date":"2015-08-13T12:00:38.000Z","enclosure":false,"custom_elements":[]},{"title":"Troubled HTC to restructure as smartphone shipments plummet","description":"Taiwanese company announces major business restructure targeting connected lifestyle and wearable products following disappointing results","url":"http://www.computerweekly.com/news/4500251638/Troubled-HTC-to-restructure-as-smartphone-shipments-plummet","guid":"http://www.computerweekly.com/news/4500251638/Troubled-HTC-to-restructure-as-smartphone-shipments-plummet","categories":[],"author":"ComputerWeekly.com","date":"2015-08-13T11:43:09.000Z","enclosure":false,"custom_elements":[]},{"title":"Sharp increase in students taking computing A-level","description":"The number of A-level computing students rose 29.1% in 2015, as students pick up their exam results today","url":"http://www.computerweekly.com/news/4500251632/Sharp-increase-in-students-taking-computing-A-level","guid":"http://www.computerweekly.com/news/4500251632/Sharp-increase-in-students-taking-computing-A-level","categories":[],"author":"ComputerWeekly.com","date":"2015-08-13T11:11:39.000Z","enclosure":false,"custom_elements":[]},{"title":"Driving digital productivity in the UK","description":"There is a need for British businesses to improve their adoption of digital technologies","url":"http://www.computerweekly.com/opinion/Driving-digital-productivity-in-the-UK","guid":"http://www.computerweekly.com/opinion/Driving-digital-productivity-in-the-UK","categories":[],"author":"Narry Singh","date":"2015-08-13T11:10:57.000Z","enclosure":false,"custom_elements":[]},{"title":"TFL still wasting millions on telecoms despite IIPAG criticism","description":"One year on and Transport for London is still pouring millions into dispersed telecoms systems, according to the Independent Investment Programme Advisory Group","url":"http://www.computerweekly.com/news/4500251595/TFL-still-wasting-millions-on-telecoms-despite-IIPAG-criticism","guid":"http://www.computerweekly.com/news/4500251595/TFL-still-wasting-millions-on-telecoms-despite-IIPAG-criticism","categories":[],"author":"ComputerWeekly.com","date":"2015-08-13T10:30:52.000Z","enclosure":false,"custom_elements":[]},{"title":"Demand for all-flash storage to accelerate in Australia and New Zealand","description":"Demand for all-flash storage will increase in ANZ, as a result of lower prices and greater capacities.","url":"http://www.computerweekly.com/feature/Demand-for-all-flash-storage-to-accelerate-in-ANZ","guid":"http://www.computerweekly.com/feature/Demand-for-all-flash-storage-to-accelerate-in-ANZ","categories":[],"author":"Alex Cruickshank","date":"2015-08-13T09:59:20.000Z","enclosure":false,"custom_elements":[]},{"title":"Rapid7 seeks greater security collaboration with technology firms","description":"Rapid7 is working to promote better relations between the security community and the rapidly increasing number of de facto technology companies","url":"http://www.computerweekly.com/news/4500251626/Rapid7-seeks-greater-security-collaboration-with-technology-firms","guid":"http://www.computerweekly.com/news/4500251626/Rapid7-seeks-greater-security-collaboration-with-technology-firms","categories":[],"author":"ComputerWeekly.com","date":"2015-08-13T09:33:44.000Z","enclosure":false,"custom_elements":[]},{"title":"Short Takes Daily: What went on in the world of Microsoft on Wednesday, August 12, 2015","description":"\n\n
Today in the news: We have a hands-on look at Stardock, we calm someone's panic over Windows 10 ushering in the end times, and we look at what's new in Windows 10 Mobile Build 10512.
\n\n

read more

","url":"http://winsupersite.com/windows/short-takes-daily-what-went-world-microsoft-wednesday-august-12-2015","guid":"58251 at http://winsupersite.com","categories":["Windows"],"author":null,"date":"2015-08-12T21:39:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Polar Opposites","description":"

Compression and Encryption have much more in common than you could have guessed.

Continue reading on Medium »

","url":"https://medium.com/google-developers/polar-opposites-50bccd39e09?source=rss----2e5ce7f173a5---4","guid":"https://medium.com/p/50bccd39e09","categories":[],"author":"Colt McAnlis","date":"2015-08-12T20:03:09.000Z","enclosure":false,"custom_elements":[]},{"title":"Windows 10 Mobile Build 10512 hits Insider Fast Ring for testing","description":"
Testing can now continue on Windows 10 Mobile as Microsoft releases its first new build in over a month to Insiders who are members of the testing Fast Ring.
\n\n

read more

","url":"http://winsupersite.com/windows-10/windows-10-mobile-build-10512-hits-insider-fast-ring-testing","guid":"58241 at http://winsupersite.com","categories":["Mobile","Windows 10","Windows 10 Mobile","Windows Insider","Windows Insiders","Windows Phone"],"author":null,"date":"2015-08-12T18:41:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Take a tour of the Start10 menu from Stardock","description":"
Stardock Software has released a follow on to their popular Start8 software that allowed users to customize and configure a Windows 7 style Start Menu on Windows 8. Start10 allows users to do the same thing on the recently released Windows 10.
\n\n

read more

","url":"http://winsupersite.com/windows-10/start10-windows-10-start-menu-replacement-stardock","guid":"58191 at http://winsupersite.com","categories":["Stardock","Stardock Software","start menu","Start10","Windows 10"],"author":null,"date":"2015-08-12T18:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"New partner add-ins revealed in Outlook.com's expanded roll-out","description":"
Microsoft is picking up the pace for the roll out of the updated Outlook.com by allowing in a larger group of users as they also expand with new partner add-ins for Outlook.
\n\n

read more

","url":"http://winsupersite.com/outlookcom/roll-out-new-outlookcom-expands-and-new-partner-add-ins-revealed","guid":"58221 at http://winsupersite.com","categories":["add-ins","Outlook","Outlook.com","partner add-ins","Office"],"author":null,"date":"2015-08-12T17:29:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Q: Is Windows 10 really the end for normal computer users?","description":"\n\n
On Wednesdays, we'll be featuring an abridged Q&A from Fred Langa's LANGALIST, a feature available exclusively to paid subscribers of the Windows Secrets newsletter. Today's Q&A: Why would anyone possibly WANT to use Windows 10?
\n\n

read more

","url":"http://winsupersite.com/windows-10/q-windows-10-really-end-normal-computer-users","guid":"58231 at http://winsupersite.com","categories":["Microsoft","Virtual machines","Windows 10","Windows Update"],"author":null,"date":"2015-08-12T16:13:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Microsoft releases a Remote Desktop Preview app for Mac","description":"
Microsoft is inviting Mac users to participate in a new preview program for their beta remote desktop client for Mac.
\n\n

read more

","url":"http://winsupersite.com/apple/microsoft-releases-remote-desktop-preview-app-mac","guid":"58211 at http://winsupersite.com","categories":["app","Apple","beta","Mac","Preview","remote desktop"],"author":null,"date":"2015-08-12T13:54:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Qualcomm Details the Adreno 530 GPU and ISP inside the Snapdragon 820","description":"

\"\"

Snapdragon 820 is still a mystery as far as official information from Qualcomm goes. However, today Qualcomm has given a bit of insight into their upcoming SoC. While there's still no information about the CPU portion featuring Qualcomm's custom 64-bit cores known as 'Kryo', there are some details about the Adreno 510 and 530 GPUs, as well as Qualcomm's Spectra image signal processor.

\r\n\r\n

\"\"

\r\n\r\n

Because Adreno 530 is their new flagship GPU, Qualcomm's press release focuses more on the 530 than the 510. The performance figures released by Qualcomm describe Adreno 530 as being 40% faster than Adreno 430 on average, while also consuming 40% less power. This result is described as an average of "the top graphics benchmarks", and while it's still generally a good idea to take vendor provided numbers with a grain of salt, if the power and performance gains over Adreno 430 are anywhere in the ballpark of Qualcomm's 40% figure then Adreno 530 should end up being quite impressive.

\r\n\r\n

\"\"

\r\n\r\n

On the API side, Adreno 500 series GPUs will support OpenGL ES 3.1 + AEP (Android Extension Pack), Renderscript, Vulkan, and OpenCL 2.0. With OpenCL 2.0 comes support for Shared Virtual Memory (SVP), which allows an OpenCL host program and a device's kernel to share a virtual address space so access to data structures like lists and trees can be easily shared between the host and GPU. Adreno 530 has varying improvements to GPGPU performance when compared to Adreno 430, but Qualcomm's slides show video processing as demonstrating the greatest improvement with a 2.5x increase in compute performance. This is also the area where efficiency gains for generational improvements typically happen, so we expect fixed-function codec support although this information is not yet provided.

\r\n\r\n

As for the ISP, it's still the case that mobile image signal processors are black boxes. Qualcomm is stating that their Spectra ISP in Snapdragon 820 will be able to support 3 simultaneous cameras at up to 25MP and at 30fps with no shutter lag. The Spectra ISP will also use MIPI's higher bandwidth C-PHY serial interface, which supports the enhanced camera support. As well as this, new developer and user-facing features include support and APIs for depth maps and using dual cameras to perform refocusing or other visual effects - because Qualcomm is just the SoC manufacturer, it is up to the smartphone OEMs to implement dual-camera/depth-maps as a feature as well.

\r\n\r\n

According to Qualcomm, Snapdragon 820 will start showing up in devices during the first half of 2016. Hopefully between now and then there's more information from Qualcomm about the other aspects of their new SoC, including their Kryo custom CPU core. In Q1 we will be at Mobile World Congress, so we may see more information at that time.

\r\n\r\n

Source: Qualcomm, slides via Slashgear

\r\n

","url":"http://www.anandtech.com/show/9522/qualcomm-adreno-530-510-snapdragon-820","guid":"tag:www.anandtech.com,9522:news","categories":["Smartphones"],"author":"Brandon Chester","date":"2015-08-12T13:35:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Windows Update Delivery Optimization Defaults by Edition","description":"
Windows Update Delivery Optimization in Windows 10 is turned on by default, but there are differences between editions.
\n\n

read more

","url":"http://winsupersite.com/windows-10/windows-update-delivery-optimization-defaults-edition","guid":"58201 at http://winsupersite.com","categories":["Windows 10"],"author":null,"date":"2015-08-12T13:26:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Sumo Sultan big bean bag chair review","description":"You may be wondering what a bean bag chair has to do with gadgets, but if you look back on the years, we’ve reviewed a few here. The first thing I think of when I think of a bean bag chair is something that belongs in a game room, is small, and has lots of […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/NfHCYM0SrEM/","guid":"http://the-gadgeteer.com/?p=182922","categories":["Home, Kitchen","Reviews","Furniture"],"author":"Ryan Chapman","date":"2015-08-12T13:00:54.000Z","enclosure":false,"custom_elements":[]},{"title":"Toshiba Brings Through-Silicon Vias to NAND Flash","description":"

\"\"

At Flash Memory Summit this week, Toshiba is showing off a NAND flash device packaged using through-silicon vias rather than traditional wire-bonded connections.

\r\n\r\n

The NAND flash currently on the market is typically produced in the form of a die with a capacity like 128Gb (16GB). The popular SSD form factors don't have enough surface area to fit dozens of those chips, and SSD controllers don't have the pin count to connect to that many independently, so several chips are stacked in a single postage-stamp sized package. The traditional way of connecting the individual dies in a stack is to use the same technique as for a single-die package: bonding a thin gold wire between the edge of the die and the package substrate or external pins. The downsides are that it requires a lot of wires and the edges of the dies in the stack need to be exposed somehow, either by staggering them or by putting a spacer between each layer.

\r\n\r\n

\"\"

\r\n\r\n

An alternative packaging method is to design the dies to participate in the stacking, by including electrical conductors that penetrate the entire thickness of the silicon die so that they can make contact with the dies above and below it in the stack, essentially tunneling right through each die. These through-silicon vias (TSVs) can then form a shared bus to carry signals from any of the dies in the stack out to the last die, which is the only one with the external connections.

\r\n\r\n

\"\"

\r\n\r\n

Chip stacking using TSVs requires the dies to be aligned and stacked without spacers, which makes the whole stack a bit more compact. Since TSVs can be placed anywhere on the chip rather than just at the edge, it's easy to implement a wide data bus and communication within the stack can be very fast or low-power due to the short distances involved. These advantages have been very attractive for packaging DRAM, most notably in the form of the HBM stacks used by AMD's R9 Fury and R9 Nano video cards.

\r\n\r\n

Toshiba's demonstration is a 16-high stack of 128Gb dies in a BGA-152 package measuring 14mm by 18mm and 1.9mm thick, and an 8-high stack that's 1.35mm thick. Those numbers are all typical even for wire-bonded stacks. The speed (1Gb/s) and operating voltages (1.2V for I/O and 1.8V core) are what we would expect from a next-generation NAND interface, but the claimed 50% power reduction is a very nice improvement for a change that leaves the flash memory cells themselves unmodified.

\r\n\r\n

Toshiba hasn't said whether the dies being stacked are their current 15nm planar NAND or their forthcoming 3D NAND, nor have they said when modules using TSVs will be hitting the market. The most compelling applications would be to use TSVs to stack flash atop a controller chip in an eMMC product or atop an SoC, but the power savings would be appreciated almost everywhere. If the use of TSVs allows economically stacking more than 16 dies, it could enable a dramatic increase in the density of SSDs.

\r\n

","url":"http://www.anandtech.com/show/9520/toshiba-brings-throughsilicon-vias-to-nand-flash","guid":"tag:www.anandtech.com,9520:news","categories":["SSDs"],"author":"Billy Tallis","date":"2015-08-12T12:01:00.000Z","enclosure":false,"custom_elements":[]},{"title":"A 10,000 mAh portable battery that utilizes Qualcomm Quick Charge 2.0","description":"I love the Qualcomm Quick Charge 2.0 technology on my Nexus 6 phone. It significantly decreases the amount of time I spend charging my phone which is something that I have grown accustomed to. I recently purchased the Aukey CC-T1 2-Port 30W USB Car Charger with Quick Charge 2.0 to be able to use this fast […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/-rmk4zorj2o/","guid":"http://the-gadgeteer.com/?p=183449","categories":["Cables, Batteries and Chargers","News","Backup Battery"],"author":"Kathleen Chapman","date":"2015-08-12T12:00:46.000Z","enclosure":false,"custom_elements":[]},{"title":"Advatronix Nimbus 400 File Server Review","description":"

Small businesses and power users often need the flexibility offered by a file server when compared to a dedicated NAS. This is where storage servers based on Microsoft's Windows Server offerings and systems based on various Linux and BSD distributions come into play. These servers can be bought as an appliance or assembled in a do-it-yourself (DIY) fashion. Today, we will be looking at a system based on the former approach - the Advatronix Nimbus 400.

","url":"http://www.anandtech.com/show/9519/advatronix-nimbus-400-file-server-review","guid":"tag:www.anandtech.com,9519:news","categories":["NAS"],"author":"Ganesh T S","date":"2015-08-12T12:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Build-A-Rig Round 1: The Winners","description":"

\"\"

As our final update to what has been a very successful first round for our Build-A-Rig project, last week we held the drawing to determine the winners. Each of our winners is taking home a $1500 gaming system, designed by Zotac and Corsair respectively. So without further ado:

\r\n\r\n\r\n\r\n

\"\"

\r\n\r\n

Congratulations to our two winners, and the first winners for the Build-A-Rig project. And be sure to check back later this month when we kick off Build-A-Rig round 2, where we will be putting together and giving away a pair of small form factor systems.

\r\n

","url":"http://www.anandtech.com/show/9521/buildarig-round-1-the-winners","guid":"tag:www.anandtech.com,9521:news","categories":["Build-A-Rig"],"author":"Ryan Smith","date":"2015-08-12T12:00:00.000Z","enclosure":false,"custom_elements":[]},{"title":"Julie’s gadget diary – Why I am thinking about switching back to the iPhone","description":"It’s been almost three years since I put my iPhone 4s in a drawer and switched over to an Android device as my full-time smartphone. Since I made that switch, I’ve used a Samsung Galaxy SIII, a Samsung Galaxy Note 2 and my current phone, an LG G3. I’ve also used Android tablets like the Nexus […]","url":"http://feedproxy.google.com/~r/TheGadgeteer/~3/6KJUyo_7f_g/","guid":"http://the-gadgeteer.com/?p=183429","categories":["Articles","gadget diary"],"author":"Julie Strietelmeier","date":"2015-08-11T22:14:25.000Z","enclosure":false,"custom_elements":[]},{"title":"Short Takes Daily: What went on in the world of Microsoft on Tuesday, August 11, 2015","description":"\n\n
Today in the news: Mozilla finally makes nice with Microsoft and releases a Windows 10-friendly version of Firefox; we've got a raft of how-tos; Microsoft rolls out context-sensing APIs for app developers; we've got a preview of Skype for Business apps for iOS and Android.
\n\n

read more

","url":"http://winsupersite.com/windows/short-takes-daily-what-went-world-microsoft-tuesday-august-11-2015","guid":"58181 at http://winsupersite.com","categories":["Windows"],"author":null,"date":"2015-08-11T21:39:00.000Z","enclosure":false,"custom_elements":[]},{"title":"SanDisk Announces Second Generation CloudSpeed Ultra SATA Enterprise SSD","description":"

\"\"

At Flash Memory Summit today SanDisk announced the second generation of their CloudSpeed Ultra enterprise drive. This is the sibling to the gen. 2 CloudSpeed Eco that was announced in June.

\r\n\r\n

As with the Eco gen. 2, the Ultra gen. 2 transitions from 19nm to 15nm MLC and brings a reduced endurance rating but increased performance. The Ultra model continues to be geared for mixed read/write workloads while the Eco is for more read-intensive uses.

\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n
SanDisk Enterprise SATA SSDs
DriveUltra gen. 2Eco gen. 2Ultra gen. 1
Capacities400GB, 800GB, 1600GB480GB, 960GB, 1920GB100GB, 200GB, 400GB, 800GB
NANDSanDisk 15nm MLCSanDisk 15nm MLCSanDisk 19nm MLC
Sequential Read530 MB/s530 MB/s450 MB/s
Sequential Write460 MB/s460 MB/s400 MB/s
4kB Random Read IOPS76k76k75k
4kB Random Write IOPS32k14k30k
Endurance Rating1.8 DWPD0.6 DWPD3 DWPD
\r\n\r\n

SanDisk is already supplying the CloudSpeed Ultra gen. 2 to several major customers for large-scale deployments and it will be more broadly available later in 2015, where it will be competing against drives like Samsung's SM863 and Intel's DC S3610. Pricing will be under $1/GB, but we don't know by how much. It probably won't be undercut by Intel's DC S3610, but to be competitive it will need to be down near Samsung's $0.66/GB for the SM863.

\r\n

","url":"http://www.anandtech.com/show/9517/sandisk-announces-second-generation-cloudspeed-ultra-sata-enterprise-ssd","guid":"tag:www.anandtech.com,9517:news","categories":["SSDs"],"author":"Billy Tallis","date":"2015-08-11T21:00:00.000Z","enclosure":false,"custom_elements":[]}]} \ No newline at end of file diff --git a/html/tech.xml b/html/tech.xml index 4867d84..531465d 100644 --- a/html/tech.xml +++ b/html/tech.xml @@ -5,694 +5,1762 @@ http://pipes.silvrtree.co.uk/tech.xml rss-braider - Wed, 12 Aug 2015 11:09:32 GMT + Fri, 14 Aug 2015 19:01:56 GMT - <![CDATA[Google offers Project Fi users a one-time $100 Nexus 6 replacement in cases of accidental damage]]> -

- -

It looks like being an all-in Project Fi customer has some benefits. It turns out Project Fi customers with damaged phones are offered a one-time replacement of their Nexus 6 for just $100, so long as they bought the phone from Google during the Project Fi setup process. All it takes is a quick call, chat or email with Project Fi support, and you'll have a new phone shortly.

- - - - - - - -
-
- -

This follows in the footsteps of rather vague and unadvertised policies from the Play Store and Google Store that (seemingly on-and-off) offer free or discounted replacements for Nexus devices, but this one is hardly vague — Project Fi offers any customer who bought a Nexus 6 through Fi a one-time $100 replacement within a year of purchase, with no questions asked.

- -
]]> - http://www.androidcentral.com/google-offering-project-fi-users-one-time-100-nexus-6-replacement - 48389 at http://www.androidcentral.com - - Wed, 12 Aug 2015 11:00:36 GMT + <![CDATA[Tap your way to fame and fortune in Beat Bop, coming soon to Android]]> +

To be released by Fliptus Pty Ltd, Beat Bop is a tapping game where players are using their frantic tapping to crate music for fans. Players assume the same Le of a struggling guitar player, with aspirations of stardom. As players progress their character, they'll be recruiting band-mates to play with, and invest in merchandise that can be sold when not playing the game.

+ +

Beat Bop is also set to include random tasks, that players can choose to try and win an "extra boost" (according to the presser), or will result in an accident that can cause a setback. Even the sound and tempo of the songs will dynamically respond to the performance of the player. Faster tapping, for example, will respond in amping up the music, while recruiting the aforementioned band mates will influence the style, based on what instruments they play.

+

+

Beat Bop Features:

+

- Start with nothing. Recruit band members and load them up with new clothes and gear

- Dynamic and original soundtrack that matches the way you tap and the band members you play with

- Easy to play - simply tap to jam with your band and rake in money

- Sell merchandise in the background to get rich even while you're idle

- Polished, vibrant and light-hearted graphics

- Original soundtrack provided by Piotr Nowotnik

+

Beat Bop is set go have a soft release in Australia and New Zealand on August 20th, and going global at a later date. The game is slated to be free with "opt-in ads". You can check out the game in action ahead of time with the trailer below.

+

]]> + http://feedproxy.google.com/~r/PlanetAndroidCom/~3/c5UF73zCvIU/9643-tap-your-way-to-fame-and-fortune-in-beat-bop-coming-soon + http://www.droidgamers.com/index.php/game-news/android-game-news/9643-tap-your-way-to-fame-and-fortune-in-beat-bop-coming-soon + + Fri, 14 Aug 2015 21:50:59 GMT - <![CDATA[Pushbullet now supports end-to-end encryption for various features]]> - Continue reading]]> - http://androidcommunity.com/pushbullet-now-supports-end-to-end-encryption-for-various-features-20150812/ - http://androidcommunity.com/?p=238784 + <![CDATA[Dead Union is a new mobile FPS strategy game currently in a closed beta testing phase]]> +

A new FPS-strategy hybrid game will be arriving for mobile devices soon. Currently in the beta testing phase of development, Dead Union is a blend of FPS gameplay with base building strategy mechanics, and zombies of course. However this game may not be exactly what you are thinking it is.

+ +

Essentially players will be building up their base with different defenses and other handy structures and items to help you survive. You will also have the ability to control zombies as your main type of military unit. This means you will be deploying different types of zombies to attack your opponent. Of course they will be able to do the same. When you are confronted with incoming zombies, you'll switch to a first-person perspective and handle them with your current weapon of choice.

+

+

Dead Union has a few different types of game modes available. While there is a single-player mode you can play through, following the storyline within the game, there also happens to be multiplayer PvP as well as X-Mode. The PvP mode is pretty self-explanatory. X-Mode is basically a survival game mode where you will be trying to survive as long as you can against waves of zombies.

+

There are a few details we do not know just yet, with controller support being the main one. However, judging from how the onscreen controls are set up, anyone with a Shield tablet and Shield controller should be able to easily button map this game. The same goes for anyone using an app to button map controllers with their non-Shield device. Right now there is no specific release date announced, only that it is coming soon. As for price, it looks like Dead Union will be available for free with optional IAPs. More screenshots available below.

+

Official Website: Dead Union

+
+

+
]]> + http://feedproxy.google.com/~r/PlanetAndroidCom/~3/HKHtTfvOMCw/9641-dead-union-is-a-new-mobile-fps-strategy-game-currently-in-a-closed-beta-testing-phase + http://www.droidgamers.com/index.php/game-news/android-game-news/9641-dead-union-is-a-new-mobile-fps-strategy-game-currently-in-a-closed-beta-testing-phase + + Fri, 14 Aug 2015 21:39:41 GMT + + + <![CDATA[AMD's R9 Fury X is a beast, but 4K gaming is still a waste]]> + + +Since the rise of 3D graphics cards, the inexorable trend in PC gaming has been around getting bigger, better and faster. That led to a culture of PC gamers obsessing over frame rates and doing whatever it took to push their hardware as much as pos...]]> + http://www.engadget.com/2015/08/14/amd-r9-fury-x-irl/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/amd-r9-fury-x-irl/ + + Fri, 14 Aug 2015 19:00:00 GMT + + + <![CDATA[[The Android Police Podcast] Episode 173: Xooming Through Honeycomb]]> + AP_AlbumArt_Final

Welcome back to another week of the Android Police Podcast. To catch us live on Hangouts On Air every Thursday at 5:30PM PST (subject to change as per the calendar widget below), just head over to androidpolice.com/podcast. For the unedited video show, click here. As always, we'll take your questions at 530-HELLO-AP and also at our email address: podcast at androidpolice dot com.

On this week's episode: On this week's show, we go back to Honeycomb, taking a look at Google's odd tablet-focused operating system that introduced us to the Holo design language.

Read More

[The Android Police Podcast] Episode 173: Xooming Through Honeycomb was written by the awesome team at Android Police.



+ +
]]>
+ http://feedproxy.google.com/~r/AndroidPolice/~3/XQHx-HxzDZY/story01.htm + http://www.androidpolice.com/?p=331549 + + + + + + + + + + + + + + Fri, 14 Aug 2015 18:53:00 GMT +
+ + <![CDATA[Android Central's back to school guide]]> +

+ +

It's time to go back to school, and we'll make sure you're well-equipped.

+ +

For many students, it's time to hit the books again. Whether you're loading up for your first day at high school, finding your stride in college, or you're making the long haul in university graduate programs, we've got the best tech for back to school season right here.

+ +
]]> + http://www.androidcentral.com/android-centrals-back-school-guide + 48417 at http://www.androidcentral.com + + Fri, 14 Aug 2015 18:43:45 GMT + + + <![CDATA[Google Fi Outage? Tell Us Your Experience]]> + Fi Welcome KitA few of us here at the XDA offices recently switched from Straight Talk to Google Fi. Aside from the well-packaged welcome kit, with case, external battery, and headphones, we’ve
]]> + http://feedproxy.google.com/~r/PlanetAndroidCom/~3/oZBdRkBnNdw/ + http://www.xda-developers.com/?p=122715 + + + + Fri, 14 Aug 2015 18:43:19 GMT + + + <![CDATA[iHome HomeKit and iSP5 Smartplug ready to make your home “smarter”]]> + Continue reading]]> + http://androidcommunity.com/ihome-homekit-and-isp5-smartplug-ready-to-make-your-home-smarter-20150814/ + http://androidcommunity.com/?p=239452 + + + + + + Fri, 14 Aug 2015 18:40:40 GMT + + + <![CDATA[Apple Watch gets more band options for larger wrists]]> + + +If you've been eying the Apple Watch, but needed a larger band to wear it comfortably, you're in luck. Cupertino added new accessories today to accommodate with a new L/XL Sports Band and Link Bracelet Kit that adds an extra 40mm to the 42mm metal...]]> + http://www.engadget.com/2015/08/14/apple-watch-xl-band-link-kit/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/apple-watch-xl-band-link-kit/ + + Fri, 14 Aug 2015 18:29:00 GMT + + + <![CDATA[The Note 5 Marks the Decline of a Power User Flagship Line]]> + notefeatureimageDISCLAIMER: This is an editorial based on early impressions. I will update my thoughts once I get a hands-on look next week. It is not just the S-pen, or the
]]> + http://feedproxy.google.com/~r/PlanetAndroidCom/~3/-hjFP7t5VDk/ + http://www.xda-developers.com/?p=122704 + + + + + + + + Fri, 14 Aug 2015 18:26:42 GMT + + + <![CDATA[Sony Adds The First 64-Bit Devices To Its Open Device Project]]> + AOSP_Xperia_Z3-_660x384-660x384

Sony is ahead of most other OEMs when it comes to its support of open source. It contributes significantly to AOSP and even releases binaries for many of its devices so developers can build AOSP ROMs for them. Today, Sony is announcing support for the first three 64-bit devices in the Open Device project.

The new devices are the Xperia Z3+,  Xperia Z4 Tablet, and Xperia Z4 Tablet WiFi. Technically, we're talking about a phone and two versions of the same tablet, but it's nice they're supporting the mobile data version specifically.

Read More

Sony Adds The First 64-Bit Devices To Its Open Device Project was written by the awesome team at Android Police.



+ +
]]>
+ http://feedproxy.google.com/~r/AndroidPolice/~3/QoseNVNPAkQ/story01.htm + http://www.androidpolice.com/?p=331542 + + + + + + + + + + + Fri, 14 Aug 2015 18:17:59 GMT +
+ + <![CDATA[RHA turns it up to 20 with the T20 in-ear headphone]]> + + http://feedproxy.google.com/~r/TheGadgeteer/~3/7E7ZUKCVWaQ/ + http://the-gadgeteer.com/?p=183616 + + + + + Fri, 14 Aug 2015 18:10:51 GMT + + + <![CDATA[Samsung SM-G9198 flip phone officially announced in China, packing Snapdragon 808]]> + + http://www.androidauthority.com/samsung-sm-g9198-flip-634219/ + http://www.androidauthority.com/?p=634219 + + + + + Fri, 14 Aug 2015 18:10:40 GMT + + + <![CDATA[Top 10 things to know about the OnePlus 2]]> +

+ +
]]> + http://www.androidcentral.com/top-10-things-know-about-oneplus-2 + 48480 at http://www.androidcentral.com + + Fri, 14 Aug 2015 18:02:43 GMT + + + <![CDATA[Nipper charges your smartphone with just two AA batteries]]> + Continue reading]]> + http://androidcommunity.com/nipper-charges-your-smartphone-with-just-two-aa-batteries-20150814/ + http://androidcommunity.com/?p=239289 + + + + + + + Fri, 14 Aug 2015 18:00:25 GMT + + + <![CDATA[How to change your default save locations on Windows 10]]> + Windows 10 allows you to select a different hard drive to store your documents, pictures, videos and music by default.
+ +

read more

]]> + http://winsupersite.com/windows-10/how-change-your-default-save-locations-windows-10 + 58351 at http://winsupersite.com + + + + + + + + + Fri, 14 Aug 2015 18:00:00 GMT + + + <![CDATA[Researchers find popular car immobilizer can easily be hacked]]> + + +Immobilizers are supposed to kill a vehicle's engine to prevent it from being stolen. However, a trio of researchers recently released a study that reveals the Megamos immobilizer system used by more than two dozen car manufacturers -- including Vo...]]> + http://www.engadget.com/2015/08/14/car-immobilizer-easily-hacked/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/car-immobilizer-easily-hacked/ + + Fri, 14 Aug 2015 17:44:00 GMT + + + <![CDATA[Hugely successful YouTube star and best-selling novelist John Green says he feels like 'a fraud']]> + YouTube Star John Green

There's this thing that really smart people do to themselves, where they convince themselves that they're not as good as their peers and that their success really comes down to luck and faking it.

This feeling is called Imposter's Syndrome. It's particularly rampant in the geek/hacker world, where intelligence of all kind is revered, genius coding is idolized, and famous genius coders have reputations for being insult-spewing dudes who don't suffer fools kindly (think: young Bill Gates, Mark Zuckerberg in the movie "The Social Network", or Linus Torvalds' famous rants).

Many tech professionals are working themselves into the ground, feeling that in order to keep up the facade of being smart and skilled, they need to worker longer and harder.

So, here's an interesting insight: Even some of the most successful people suffer from Impostor's Syndrome. Since we first reported on the rampage of Imposter Syndrome in the tech industry, we've noticed more brave souls going public about their own battle.

On Thursday during a Reddit AMA, another brave soul confessed: author and YouTube star John Green.

Green is the author of best-selling novels "Looking for Alaska," "Paper Towns" and "The Fault in Our Stars." ("The Fault" was beautifully written and filled with memorable lines like this one: "'As he read, I fell in love the way you fall asleep: slowly, and then all at once.")

Ghank john greenreen is also known for his mega popular vlogbrothers YouTube channel with his brother Hank, and his educational video channels Crash Course,and Mental Floss. All told, the Greens have a following of 10 million people across all their channels.

This guy has Imposter's Syndrome? Yup. 

When a recent grad student asked him if he ever had writer's block and worried that he'd never write again, Green replied:

I mean I haven't published a novel for three and a half years, so....yeah.

I feel this way all the time. People often use the phrase "literally the worst" colloquially, but I have on countless occasions felt that I am literally the worst writer on Earth, and that I am a complete fraud. I feel like a fraud all the time, and I still don't feel like I know how to write a novel, and at this point I doubt I ever will.

The only way through it for me is to take pleasure in the process of writing, or to find value in it. Even when I suck. Even when there's no way anything I'm writing will ever see the light of day. The act of trying to write for an audience must feel valuable in and of itself, or else I am doomed.

As another Imposter's Syndrome sufferer once advised: The trick to making these terrifying feelings of insecurity go away, even temporarily, is to talk about it and discover you are not alone.

Which means if we're all really "faking" our way to success, maybe even greatness, how fake can we really be?

SEE ALSO: 15 things you didn't know about billionaire Microsoft founder and philanthropist Bill Gates

Join the conversation about this story »

NOW WATCH: People doing backflips on a two-inch wide strap is a real sport called slacklining










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/C_G35lBGd04/youtubes-john-green-has-imposters-syndrome-2015-8 + http://www.businessinsider.com/youtubes-john-green-has-imposters-syndrome-2015-8 + + Fri, 14 Aug 2015 17:41:58 GMT +
+ + <![CDATA[Prana: an LED exhibit that breathes with you]]> + + + + + +As you step into the shimmering globe of 13,000 LEDs, a sensor detects your presence. It reacts to the rise and fall of your lungs and illuminates the sphere of suspended lights called PRANA. The signal from the chip works its way to a computer...]]> + http://www.engadget.com/2015/08/14/led-exhibit-breathes-with-you/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/led-exhibit-breathes-with-you/ + + Fri, 14 Aug 2015 17:30:00 GMT + + + <![CDATA[The SuperSite Windows 10 How To Collection: Customize your experience]]> + Part of the pleasure of updating an operating system is the ability to make it look, feel and act exactly as you want it to. Here are all of our how-tos outlining the ways you can make Windows 10 more fully yours.
+ +

read more

]]> + http://winsupersite.com/windows-10/supersite-windows-10-how-collection-customize-your-experience + 58291 at http://winsupersite.com + + + + + Fri, 14 Aug 2015 17:21:00 GMT + + + <![CDATA[Blackview packaging turns into a Google Cardboard VR viewer]]> + Continue reading]]> + http://androidcommunity.com/blackview-packaging-turns-into-a-google-cardboard-vr-viewer-20150814/ + http://androidcommunity.com/?p=239107 - - - - - Wed, 12 Aug 2015 11:00:29 GMT + + + + + + Fri, 14 Aug 2015 17:20:27 GMT - <![CDATA[$100M Worth of Crazy-Swanky Cars Are About to Go on Sale]]> - $100M Worth of Crazy-Swanky Cars Are About to Go on Sale

We’ve scoured the catalogs to bring you the very best of this year's offerings.

-

The post $100M Worth of Crazy-Swanky Cars Are About to Go on Sale appeared first on WIRED.

]]> - http://www.wired.com/2015/08/100m-worth-crazy-swanky-cars-go-sale/ - http://www.wired.com/?p=1834014 - - - - - - - - Wed, 12 Aug 2015 11:00:26 GMT - - - <![CDATA[Details on the next Nexuses leaked]]> - - http://www.androidauthority.com/lg-huawei-nexus-details-leaked-633232/ - http://www.androidauthority.com/?p=633232 - - - - - - - Wed, 12 Aug 2015 10:45:46 GMT - - - <![CDATA[Here's a curved LG sound bar to go with your curved LG TV]]> - + <![CDATA[Our Galaxy Note 5 forums are open!]]> +

-Because everyone hates straight lines.]]> - http://www.engadget.com/2015/08/12/heres-a-curved-lg-sound-bar-to-go-with-your-curved-lg-tv/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/12/heres-a-curved-lg-sound-bar-to-go-with-your-curved-lg-tv/ - - Wed, 12 Aug 2015 10:40:00 GMT - - - <![CDATA[Using Android with Mac OS X: tips and recommendations]]> - - http://www.androidauthority.com/use-android-mac-os-x-632616/ - http://www.androidauthority.com/?p=632616 - - - - - - Wed, 12 Aug 2015 10:21:02 GMT - - - <![CDATA[LG launches a Google Cast-compatible curved soundbar to go with your curved TV]]> -

- -

LG has launched a curved soundbar in its Music Flow series of connected audio equipment, dubbed the Music Flow HS8 Wireless Curved Sound Bar. Available in Europe starting next week, the HS8 houses a 4.1 channel speaker system with an output of 360W and is compatible with Google Cast.

+

The Galaxy Note 5 clearly was the big winner from Thursday's Samsung Unpacked event — if you don't live in Europe, anyway — and that means the discussions are really starting to heat up in our Note 5 forums.

]]> - http://www.androidcentral.com/lg-just-launched-google-cast-compatible-curved-soundbar-go-your-curved-tv - 48393 at http://www.androidcentral.com - - Wed, 12 Aug 2015 10:11:44 GMT + http://www.androidcentral.com/our-galaxy-note-5-forums-are-open + 48487 at http://www.androidcentral.com + + Fri, 14 Aug 2015 17:11:06 GMT - <![CDATA[Affiliate program may be coming soon to the Google Play Store]]> - Continue reading]]> - http://androidcommunity.com/affiliate-program-may-be-coming-soon-to-the-google-play-store-20150812/ - http://androidcommunity.com/?p=238799 + <![CDATA[Police believe alleged gang leader posted a chilling Facebook update after beginning bloody standoff]]> + Garland Tyree

An alleged Bloods gang leader suspected of engaging in a bloody standoff on Friday in New York City appears to have posted an ominous update on his Facebook page as the confrontation began. 

A law enforcement source told Business Insider the New York City Police Department believes this Facebook page belongs to Garland Tyree, who has been identified as the suspect.

According to The New York Times, the standoff began at about 6 a.m. on Friday. At 6:19 a.m., a chilling note was posted on the Facebook page.

"Today I die," the note said.

On Friday afternoon, an NYPD spokesperson told Business Insider the standoff suspect was "dead."

According to the local Staten Island Advance newspaper, sources have described Tyree "as the leader of the Bloods on the East Coast."

Police have said he barricaded himself in his home and set it on fire when marshals attempted to arrest him on a probation violation warrant Friday morning. The Advance also reported Tyree has a lengthy criminal record and allegedly shot a firefighter who responded to the blaze in his home. 

The Facebook page police believe belonged to the suspect is listed as belonging to a man named "Garland Tyree." It features multiple photos of a man in what appears to be a prison uniform. Photos on the page show the man wearing the red colors associated with the Bloods and some feature red bandana imagery that is one of the gang's main symbols.

One of these pictures is a birthday invite for Tyree that describes him as "a real G," which is slang for gang member. Another picture on the page shows piles of money. Other photos posted on the Facebook show news articles about gang crimes on Staten Island and one shows a draft of a novel raging about "a rat."

View some photos from the Facebook page below.

garland tyree facebook

garland tyree facebookGarland Tyree Facebook

 

Join the conversation about this story »

NOW WATCH: This is the 'Fallout 4' video fans have been waiting months to see










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/k8wMAGl922U/bloods-standoff-chilling-facebook-post-2015-8 + http://www.businessinsider.com/bloods-standoff-chilling-facebook-post-2015-8 + + Fri, 14 Aug 2015 17:08:34 GMT +
+ + <![CDATA[The White House just released President Obama's vacation playlists on Spotify]]> + obama beyonce

On Thursday, the White House announced President Obama's summer reading lists.

On Friday, the White House has followed up by releasing President Obama's two "summer vacation" playlists on Spotify (sorry, Apple Music).

The president's "Day" playlist has 20 high-energy tracks from artists like Coldplay, Brandi Carlisle, and Florence + the Machine.

The more laid-back "Night" playlist includes songs from The Lumineers, Al Green, and Van Morrison.

The playlists, uploaded on the official White House Spotify account, even have their own Twitter hashtag: #POTUSPlaylist.

“President Obama hand-picked his favorite songs for a summer playlist,” according to the White House's Spotify account. 

Obama announced the playlists himself on Twitter:

You can check out both playlists below.

 

 

SEE ALSO: The story of Tidal: How a European startup no one ever heard of got bought by Jay Z and became one of the best-known music companies in the world

Join the conversation about this story »

NOW WATCH: We unearthed Donald Trump's Vine account from 2013 and it's incredible










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/xLpSXTWrzzY/obama-spotify-playlist-2015-8 + http://www.businessinsider.com/obama-spotify-playlist-2015-8 + + Fri, 14 Aug 2015 17:03:28 GMT +
+ + <![CDATA[You can now restore deleted iCloud files, contacts and calendars]]> + + +If you've ever accidently deleted a file in a cloud service (or worse had someone delete a shared file) you know that any restore feature is a god send. Apple recently launched its own file restore feature for iCloud.com users that resurrects files...]]> + http://www.engadget.com/2015/08/14/icloud-restore/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/icloud-restore/ + + Fri, 14 Aug 2015 17:01:00 GMT + + + <![CDATA[Membership-based delivery services are beginning to disrupt the $600 billion-a-year grocery industry]]> + bii amazon prime vs costco

The cost and complexity of delivering groceries is what ultimately led to the downfall of Webvan and other startups that have tried to disrupt the $600 billion-a-year grocery industry. 

But a new wave of promising delivery startups are relying on a tried-and-true model to disrupt groceries: membership.

Membership grocery services help secure consumers as repeat customers and allow companies to lower individual shipping fees on every order. Shipping fees are typically a big barrier to grocery delivery because orders must be delivered fast to guarantee freshness.

The grocery delivery model is attractive because it guarantees that customers are getting fresh food straight from their local supermarket, without having to waste time in the store. The typical American family of four visits the grocery store twice a week, according to the USDA.

In a new report from BI Intelligence, we define what an e-commerce membership program is and how retailers are taking the Costco model and updating it for online grocery shopping. We also assess the advantages and disadvantages of e-commerce membership programs for the retailer, as well as what consumers might look for in these programs and what incentives are needed to get people to sign up.

Access the Full Report By Signing Up For A Risk-Free Trial Membership Today >>

Here is a small sample of the e-commerce membership programs that we examine in the report: 

  • Amazon: Amazon charges Prime customers $99 annually ($299 for Amazon Prime Fresh) in exchange for a bevy of benefits ranging from free two-day shipping to access to premium video and music content, as we've said. We estimate that there are approximately 53 million Prime members worldwide — and 25% of those members live outside the US.
  • Instacart: The grocery delivery service partners with Whole Foods, Costco, and Safeway, among others, and offers a membership program called Instacart Express, which costs $99 annually — in exchange, members get free two-hour delivery on all grocery orders. Customers who use Instacart but do not sign up for the membership program must pay $3.99 per delivery.
  • Shipt: This is another service very similar to Instacart, which has its own grocery delivery membership program called MemberShipt. Members pay $49 annually and get free one-hour deliveries on orders over $35. Shipt is the delivery partner for Publix — one of the five largest supermarket chains in the US.
  • Thrive Market: The newly launched organic grocer and wellness retailer asks customers to pay an annual fee of $60 for access to products that are supposedly "always 25 or 50 percent" cheaper compared to competitors. (There is no non-membership version of the service.) Thrive Market has referred to itself as a sort of Costco-like retailer for health-conscious consumers. 

In full, the report:

To access the full report from BI Intelligence, sign up for a 14-day trial here. Members also gain access to new in-depth reports and hundreds of charts on the digital industry.

shipt

Join the conversation about this story »

NOW WATCH: This is what happens to your brain and body when you check your phone before bed










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/oHp9EF41_dQ/e-commerce-disrupting-grocery-industry-2015-4 + http://www.businessinsider.com/e-commerce-disrupting-grocery-industry-2015-4 + + Fri, 14 Aug 2015 17:00:00 GMT +
+ + <![CDATA[These are the 19 most game-changing weapons of the 21st century]]> + Screen Shot 2015 05 07 at 10.36.37 AM

The imperatives of the military have always been one of the main drivers of technological development.

ARPANET, one of the internet's most important precursors, was a Pentagon project while most of the technology in an iPhone originated with the US Department of Defense.

Just as smart gadgets have invaded our homes and revolutionized our lives over the last 15 years, next-level weaponry has transformed the military.

Today, militaries and irregular forces around the world are still pushing technological boundaries. 

Everything from concealed roadside bombs — cheap, primitive, and deadly  — to multibillion-dollar aerial lasers have transformed conventional methods of combat and altered the world's technological and political landscape.

Here are 19 of the most important weapons of the last 15 years.

Massive Ordnance Penetrator bombs

America's largest conventional bomb is precision-guided, weighs 30,000 pounds, and can blast through underground bunkers.

Boeing's Massive Ordnance Penetrator (MOP) bomb is designed to pierce 60 feet of reinforced concrete and then detonate 200 feet underground. 

After the MOP's first successful test in 2007, the US Air Force ordered an arsenal of these mega-bombs, which are now considered a "plan B" for striking at Iran's hardened nuclear facilities should the need ever arise.



The Chinese anti-satellite program

In January of 2007, China initiated a worrying new era in warfare. Using a C-19 ballistic missile, the People's Liberation Army destroyed an out-of-commission weather satellite flying over 500 miles above the surface of Earth.

In a single widely condemned move, China had militarized outer space. The long-term consequences are startling: If satellites are considered legitimate military targets, attacks could create debris fields that would knock out entire orbits or create chain reactions that might destroy vital communications and global-positioning satellites. Similarly, countries could deploy weapons to outer space capable of destroying terrestrial targets once the global taboo against space warfare disappears.

If that alarming worst-case scenario ever comes to pass, future generations could identify the successful 2007 test as the moment that space became a military frontier. The test also displayed China's eagerness to develop weapons that its rivals would probably never use — showing how a state can use asymmetrical means to close the gap with it more powerful opponents.



The X-47B

The Navy's X-47B is a strike-fighter-sized unmanned aircraft with the potential to completely change aerial warfare.

Northrop Grumman's drone is capable of aerial refueling, 360-degree rolls, and offensive weapon deployment. It's carried out the first autonomous aerial refueling in aviation history, and has also taken off and landed from an aircraft carrier.

It cruises at half the speed of sound, and has a wingspan of 62 feet — as well as a range of at least 2,400 miles, which is more than twice that of the Reaper drone.



See the rest of the story at Business Insider








+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/3qFjMR0YyQM/21st-century-game-changing-weapons-2015-5 + http://www.businessinsider.com/21st-century-game-changing-weapons-2015-5 + + + Fri, 14 Aug 2015 16:45:01 GMT +
+ + <![CDATA[High performance SHIELD games get SHIELD Android TV compatibility]]> + Continue reading]]> + http://androidcommunity.com/high-performance-shield-games-get-shield-android-tv-compatibility-20150814/ + http://androidcommunity.com/?p=239366 - - - - Wed, 12 Aug 2015 10:00:32 GMT + + + + + + + + Fri, 14 Aug 2015 16:40:14 GMT - <![CDATA[Sorry, But Digital Songs Sound Better When Recorded on Tape]]> - Sorry, But Digital Songs Sound Better When Recorded on Tape

It's a digital world, but that song you’re streaming still sounds best if it was originally encoded in magnetic particles.

-

The post Sorry, But Digital Songs Sound Better When Recorded on Tape appeared first on WIRED.

]]>
- http://www.wired.com/2015/08/basf-audio-tape/ - http://www.wired.com/?p=1805235 - - - - - - - Wed, 12 Aug 2015 09:59:45 GMT -
- - <![CDATA[Galaxy Note 5 and S6 Edge Plus battery confirmed?]]> - - http://www.androidauthority.com/galaxy-note-5-and-s6-edge-plus-battery-confirmed-633212/ - http://www.androidauthority.com/?p=633212 - - - - + <![CDATA[Samsung Galaxy Note 5: what it packs and what it lacks]]> + + http://www.androidauthority.com/samsung-galaxy-note-5-good-bad-missing-634068/ + http://www.androidauthority.com/?p=634068 + + - - - Wed, 12 Aug 2015 09:49:06 GMT - - - <![CDATA[Huawei teases “unique” smartphone for IFA 2015]]> - - http://www.androidauthority.com/huawei-ifa-teaser-posters-633215/ - http://www.androidauthority.com/?p=633215 - - - - - Wed, 12 Aug 2015 09:45:18 GMT - - - <![CDATA[Twitter gives companies access to its full archives]]> - - -Twitter has just launched a new tool called "Full-Archive Search API," which gives brands access to every public tweet ever made from the microblogging site's inception nine years ago. If you recall, the company also opened up its archives to resea...]]> - http://www.engadget.com/2015/08/12/twitter-gnip-full-archive-search-api/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/12/twitter-gnip-full-archive-search-api/ - - Wed, 12 Aug 2015 09:28:00 GMT - - - <![CDATA[Noodlecake takes revenge on pirates with an unbeatable game]]> - - http://www.androidauthority.com/noodlecake-pirates-own-game-633200/ - http://www.androidauthority.com/?p=633200 - - - - - - - Wed, 12 Aug 2015 09:00:19 GMT - - - <![CDATA[Hillary Clinton to turn over her private email server]]> - - -Hillary Clinton has decided to surrender the private email server she used during her time as Secretary of State to the Department of Justice. A few hours after the Intelligence Community Inspector General told Congress that some of her corresponde...]]> - http://www.engadget.com/2015/08/12/hillary-clinton-email-server-turnover/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/12/hillary-clinton-email-server-turnover/ - - Wed, 12 Aug 2015 08:28:00 GMT - - - <![CDATA[Microsoft rolls out OneNote update with a new floating icon]]> -

- -

OneNote is currently being updated for Android, offering up a new feature for fans to take full advantage of. If you've been crying out for more convenient access to your notes, this update is for you as Microsoft has implemented a new floating icon called floatie.

- -
]]> - http://www.androidcentral.com/microsoft-rolling-out-onenote-update-new-floating-icon - 48392 at http://www.androidcentral.com - - Wed, 12 Aug 2015 07:50:27 GMT - - - <![CDATA[Skype for Business is coming to your mobile device]]> - - -Two months after Microsoft launched Skype's Business edition, which integrates into MS Office Calendar and allows for group messaging/video chats/calls for up to 250 people, the video conferencing company announced on Tuesday that a mobile version...]]> - http://www.engadget.com/2015/08/12/skype-for-business-is-coming-to-your-mobile-device/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/12/skype-for-business-is-coming-to-your-mobile-device/ - - Wed, 12 Aug 2015 07:10:00 GMT - - - <![CDATA[Focus: a complete gallery app that prioritizes ease of use, organization and security]]> - - http://www.androidauthority.com/focus-a-complete-gallery-app-that-prioritizes-ease-of-use-organization-and-security-633183/ - http://www.androidauthority.com/?p=633183 - - - - - - - Wed, 12 Aug 2015 06:47:35 GMT + Fri, 14 Aug 2015 16:33:43 GMT - <![CDATA[Twitter sees a big increase in account info requests]]> - + <![CDATA[Comcast is about to launch a major video platform called Watchable to rival Facebook and Google]]> + brian roberts

Comcast is preparing to launch a major new video platform with content from big-name partners in the coming weeks, Business Insider has learned.

The platform is currently called "Watchable," but there's a small chance that could change before launch.

The Information's Amir Efrati previously reported that Comcast was thinking of launching a digital video service, but here are more of the details.

Comcast is partnering with major digital publishers like Comcast-backed Vox and Buzzfeed, lifestyle, and comedy sites like AwesomenessTV, Refinery29, and The Onion, news sites like Mic and Vice, as well as legacy brands like NBC Sports to come up with a widespread digital-video platform that will rival YouTube and Facebook's online video efforts.

It will also rival the rumored video platform Verizon is preparing to unveil.

The full list of partnering media companies is still being determined, sources say, but participants are committing to Comcast for up to a few years. As part of the partnership, the publishers have agreed to upload all unlicensed, original video content to Watchable for users to stream on demand. The content from the publishers will be bundled and curated for Comcast's millions of Xfinity X1 box owners, and eventually Watchable will also be available on iOS and Android devices. 

Comcast already has a smart-TV solution called Xfinity. The X1 set-top boxes allow users to stream unlimited amounts of movies and shows on demand from their televisions or mobile devices. 

Over the next few years, sources say, Comcast plans to switch out all of its subscribers' boxes for X1 boxes, which could extend a platform like Watchable from just a few million households today to tens of millions of Comcast subscriber homes by 2017.

Comcast Cable BoxComcast is hoping to establish itself as the digital-video advertising leader, sources familiar with Watchable say.

"Comcast is currently the largest seller of video ads in the United States," one says. "As platforms shift to digital, Comcast doesn't want to lose market share, but they're losing it to YouTube and Facebook."

Publishers get exposure; Comcast saves licensing fees

Publishers seem interested in Comcast's platform for two reasons.

  1. It's a new marketing opportunity, allowing online-only brands to get in front of TV watchers.
  2. It's a potential big new revenue stream.

Watchable could help digital publishers make a critical leap from being online-only brands to household names among traditional television viewers. If digital-media companies can successfully cross that chasm, their brands will become much more valuable, and they'll be able to attract the massive advertising dollars cable networks have long enjoyed. 

"Everybody is looking to see how digital companies are going to be able to produce video content that can move the needle in a meaningful way," one publisher told Business Insider.

If Watchable takes off, it could also become a significantly cheaper content model for Comcast as well. Currently, Comcast has to dole out cash on a per-subscriber basis to networks like ESPN and CNN. But Comcast won't pay any licensing revenue to Watchable partners, only advertising revenue. 

Deals are nonexclusive, so publishers will still be able to post content natively to Facebook.

Comcast Watchable is just the latest solution to emerge in the ongoing video-platform wars. In the end there could be one big winner, or multiple. One source likened the current video environment to driving through a tunnel and being unsure what you're going to find on the other side.

"I think on any of these [Comcast or Facebook] platforms there will be a hybrid of traditional TV content and then the digital players. It will be really interesting to see how things shake out over the next 18 months."

Comcast declined to comment for this story.

SEE ALSO: Snapchat, Twitter, and Facebook are at war over the future of news — and one of them tried to buy a media company

Join the conversation about this story »

NOW WATCH: We Tried The Streaming Service That The Networks Are Trying To Shut Down — It's Amazing










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/LGUekH-ufxw/comcast-to-launch-digital-video-platform-watchable-2015-8 + http://www.businessinsider.com/comcast-to-launch-digital-video-platform-watchable-2015-8 + + Fri, 14 Aug 2015 16:27:00 GMT +
+ + <![CDATA[Samsung shows off a 2.5-inch hard drive with 16TB of storage]]> + -Law enforcement agencies are making social media part of more and more investigations these days, based on Twitter's latest transparency report. Between January 1st and June 30th this year, the company saw a 52 percent increase in account informati...]]> - http://www.engadget.com/2015/08/12/twitter-transparency-report-1st-half-2015/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/12/twitter-transparency-report-1st-half-2015/ - - Wed, 12 Aug 2015 06:24:00 GMT +Hard drives are as ubiquitous as the desktops or they're made for. But as technology evolves, manufacturers continue to make these faster and smaller than ever before. Case in point: Samsung, which has developed the world largest hard drive, packin...]]> + http://www.engadget.com/2015/08/14/samsung-worlds-largest-hard-drive/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/samsung-worlds-largest-hard-drive/ + + Fri, 14 Aug 2015 16:27:00 GMT - <![CDATA[Retailers' Apple Pay rival is ready for testing, three years later]]> - - -Merchant Customer Exchange is an alliance of several of the US' biggest retailers and restaurants, including Wal-Mart and Target, aimed at bringing mobile payments under their own control &mdash; and not by tying themselves to a particular tech com...]]> - http://www.engadget.com/2015/08/12/apple-pay-rival-is-ready-for-testing/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/12/apple-pay-rival-is-ready-for-testing/ - - Wed, 12 Aug 2015 05:31:00 GMT - - - <![CDATA[eBay back to school deals: smartphones from Samsung, Sony and others at under $299!]]> - - http://www.androidauthority.com/ebay-back-to-school-deals-smartphones-samsung-sony-under-299-633181/ - http://www.androidauthority.com/?p=633181 - - - - - - - - - - - - - - - - - Wed, 12 Aug 2015 05:23:21 GMT - - - <![CDATA[Wage war for the control of Europe in Pocket Platoons, set to arrive on August 27th]]> -

Coming from En Masse Entertainment, Pocket Platoons is a turn-based strategy game with a World War II theme, which will be there second mobile game release onto Android. The game is set to focus on base building as well as troop positioning, with the final goal being to control the continent of Europe.

- -

Players will choose either the Allied or Axis faction, build up a base, raise army, and lead it to war. Sounds a lot like the board game RISK in a lot of ways. The game is set to contain "over 300 campaign stages, hundreds of progression quests, dozens of tactical units, and a wide variety of combat modes to master", according to the developers.

-
-

-
-

Players will need to direct their troops to attack the enemy base, or defend their own base. You will also be promoting officers to tailor their skills to the needs at hand. Multiple players can team up to form coalitions in order to defeat opposing players and bigger enemy coalitions as well.

-

Pocket Platoons is set to be released for free on Android both on Google Play, as well as the Amazon Appstore, on August 27th. In the meantime you can check out the game in action through the trailer below.

-

]]> - http://feedproxy.google.com/~r/PlanetAndroidCom/~3/LJbIetKJb6s/9615-wage-war-for-the-control-of-europe-in-pocket-platoons-set-to-arrive-on-august-27th - http://www.droidgamers.com/index.php/game-news/android-game-news/9615-wage-war-for-the-control-of-europe-in-pocket-platoons-set-to-arrive-on-august-27th - - Wed, 12 Aug 2015 04:46:03 GMT - - - <![CDATA[IBM’s Watson AI Wants to Coach Your Fantasy Football Team]]> - IBM’s Watson AI Wants to Coach Your Fantasy Football Team

A new app called Edge Up Sports uses IBM's Watson cognitive computing skills to help you win your fantasy league.

-

The post IBM’s Watson AI Wants to Coach Your Fantasy Football Team appeared first on WIRED.

]]> - http://www.wired.com/2015/08/ibms-watson-ai-wants-coach-fantasy-football-team/ - http://www.wired.com/?p=1834021 - - - - - - - - - - Wed, 12 Aug 2015 04:01:00 GMT - - - <![CDATA[Wildcard launches a slick news app you might actually use]]> - - -Here's the evolution of mobile news reading in a nutshell: First there were browsers; then RSS readers; and eventually we saw a slew of news reading apps like Flipboard, Feedly and Nuzzle that aimed to make it easier to discover and read news. Now...]]> - http://www.engadget.com/2015/08/11/wildcard-news-app/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/wildcard-news-app/ - - Wed, 12 Aug 2015 03:56:00 GMT - - - <![CDATA[Branto allows you to monitor your home, control your smart appliances and more]]> - - http://www.androidauthority.com/branto-monitor-home-control-smart-appliances-security-633171/ - http://www.androidauthority.com/?p=633171 + <![CDATA[Sony Updates 'Live On YouTube' Xperia-Exclusive Live Broadcasting App With Pause, Mute, Tags, And More]]> + LOYT

Sony's awkwardly named "Live on YouTube" app has one purpose, to let you broadcast your video live to YouTube. The latest update adds a few features that make life easier for users. For starters, you can now pause as you're recording. Alternatively, if you're fine with people seeing what's going on but don't want them to hear everything, you can now mute the stream as well.

LOYT1 LOYT3

Pictures courtesy of XperiaBlog

Version 1.00.54 doesn't just deal with presentation.

Read More

Sony Updates 'Live On YouTube' Xperia-Exclusive Live Broadcasting App With Pause, Mute, Tags, And More was written by the awesome team at Android Police.



+ +
]]>
+ http://feedproxy.google.com/~r/AndroidPolice/~3/S_l0DGnU9Fk/story01.htm + http://www.androidpolice.com/?p=331536 + + + + + + - - - - - - Wed, 12 Aug 2015 03:40:43 GMT + + Fri, 14 Aug 2015 16:12:35 GMT
- <![CDATA[Be the first person to complete Purm the Game and net yourself $1000]]> -

Purm the Game from Diske Inc is an interesting little game. It is an endless worm flying game where you control Purm, the mighty worm who has managed to put a jetpack onto his back so he can fly around. You will need to avoid plenty of obstacles as well as not crashing in general, while trying to earn as many points as possible.

- -

While this may be an infinitely flying game, there is a way to beat it. The problem is, the solution/directions to beating this game is encrypted within a riddle. Once you've managed to solve the riddle on how to beat the game, you will then actually have to beat the game using those directions. Why finish the game?

-

-

Well for one thing you can tell people you managed to finish an endless runner/flyer game and then you can sit back and watch them try to figure out what you're talking about. Probably with a sort of WTF type of look on their faces. The other reason is that if you're the first person to complete the game, the developers will apparently personally give you $1000, and that would be in real money, not play money. Needless to say, with $1000 on the line, finding the solution to beating this game won't be easy.

-

The soundtrack was done by OMFG for those of you curious. If you are up for the challenge, whether that be just trying to get the high score or trying to be the first to complete the game and score $1000 in cold hard cash, you can download Purm The Game off of Google Play for free. There are optional IAPs as well and using any of them also removes the ads (and gets you Ninja and Lazy worm) within the game as a side benefit.

- -

]]> - http://feedproxy.google.com/~r/PlanetAndroidCom/~3/LdC3Av4KJ3k/9619-be-the-first-person-to-complete-purm-the-game-and-win-1000 - http://www.droidgamers.com/index.php/game-news/android-game-news/9619-be-the-first-person-to-complete-purm-the-game-and-win-1000 - - Wed, 12 Aug 2015 03:25:51 GMT - - - <![CDATA[Shure wants dedicated spectrum for wireless audio gear in the UK]]> - - -The proliferation of mobile phones is great, and so is the availability of 4G in the UK. However, dwindling spectrum available for wireless audio gear could cause problems at your local music venue or playhouse -- especially in the UK. Shure, the p...]]> - http://www.engadget.com/2015/08/11/shure-wireless-microphone-spectrum-uk/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/shure-wireless-microphone-spectrum-uk/ - - Wed, 12 Aug 2015 02:36:00 GMT - - - <![CDATA[This super-thin OLED desk lamp will also charge your phone]]> - - -Do you take your desk lighting seriously? Really seriously? You'll want to look at Aerelight's just-shipped A1 desk lamp, then. The eye-catching design uses an OLED panel to illuminate your room, which both makes it wafer-thin and produces a nat...]]> - http://www.engadget.com/2015/08/11/aerelight-a1-oled-desk-lamp/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/aerelight-a1-oled-desk-lamp/ - - Wed, 12 Aug 2015 02:09:00 GMT - - - <![CDATA[Nokia smartphone comeback may be in the cards by 2016]]> - Continue reading]]> - http://androidcommunity.com/nokia-smartphone-comeback-may-be-in-the-cards-by-2016-20150811/ - http://androidcommunity.com/?p=238770 - - - - - - Wed, 12 Aug 2015 02:00:55 GMT - - - <![CDATA[Samsung files patent for smartphone that can display holographic images]]> - - http://www.androidauthority.com/samsung-patent-smartphone-holographic-images-633167/ - http://www.androidauthority.com/?p=633167 - - - - - - Wed, 12 Aug 2015 01:38:21 GMT - - - <![CDATA[Rdio adds free live radio stations to its streaming library]]> - - -Apple Music has Beats1, and now Rdio has live radio, too. Rdio announced today that in addition to its library of 35 million songs and curated stations, it's tacking on live broadcast radio with access to "nearly 500 stations." We haven't seen a fu...]]> - http://www.engadget.com/2015/08/11/rdio-live-broadcast-radio/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/rdio-live-broadcast-radio/ - - Wed, 12 Aug 2015 01:36:00 GMT - - - <![CDATA[Doom & Destiny Advanced, the hilarious RPG sequel we were waiting for]]> - Continue reading]]> - http://androidcommunity.com/doom-destiny-advanced-the-hilarious-rpg-sequel-we-were-waiting-for-20150811/ - http://androidcommunity.com/?p=238726 + <![CDATA[Become a hero and conquer the world in Vikings: War of Clans]]> + Continue reading]]> + http://androidcommunity.com/become-a-hero-and-conquer-the-world-in-vikings-war-of-clans-20150814/ + http://androidcommunity.com/?p=238773 - - - Wed, 12 Aug 2015 01:20:49 GMT + + Fri, 14 Aug 2015 16:00:35 GMT - <![CDATA[Blizzard's 'Compete' trademark hints at an eSports service]]> - + <![CDATA[The Samsung Galaxy Note 5 and Galaxy S6 Edge+ may come in 128GB variant (Update: Nope)]]> + + http://www.androidauthority.com/samsung-galaxy-note-5-s6-edge-128gb-633983/ + http://www.androidauthority.com/?p=633983 + + + + + + + Fri, 14 Aug 2015 16:00:06 GMT + + + <![CDATA[The best voice recorder]]> + -There's no question that Blizzard is a cornerstone of the eSports world. StarCraft is so big in South Korea that it's virtually an institution, and Heroes of the Storm was the first game to get a live ESPN2 broadcast. It only makes sense that the...]]> - http://www.engadget.com/2015/08/11/blizzard-compete-trademark/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/blizzard-compete-trademark/ - - Wed, 12 Aug 2015 01:05:00 GMT +This post was done in partnership with The Wirecutter, a list of the best technology to buy. Read the full article here. + +After 36 hours of research, testing eight different devices in a number of real-world settings and then playing the audio we c...]]> + http://www.engadget.com/2015/08/14/the-best-voice-recorder/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/the-best-voice-recorder/ + + Fri, 14 Aug 2015 16:00:00 GMT - <![CDATA[Noodlecake Trolls Game Pirates By Uploading An Impossible Version Of Shooting Stars To Popular Torrent Sites]]> - daft

Hey, game pirates: screw you. Seriously, you're part of the reason it's so hard to find a decent game that isn't packed with $100 in-app purchases. Of course, good old-fashioned greed on the part of game developers is a big part of that, but a demonstrable loss of revenue from relatively easy piracy (a problem on other platforms like Windows) is giving developers little incentive to release conventional premium games for a simple price.

Read More

Noodlecake Trolls Game Pirates By Uploading An Impossible Version Of Shooting Stars To Popular Torrent Sites was written by the awesome team at Android Police.



- -
]]>
- http://feedproxy.google.com/~r/AndroidPolice/~3/B0yyxyeiUdE/story01.htm - http://www.androidpolice.com/?p=330935 - - - - - - + <![CDATA[DirecTV has been ordered to stop trashing cable TV in its ads — but even the ad regulator admits the Rob Lowe spots 'are very funny' (DTV, CMCSA)]]> +

The US ad regulator has told digital TV provider DirecTV to stop trashing cable in its ads.

Actor Rob Lowe and a number of his alter-egos have appeared in a series of humorous ads over the past few months, claiming DirecTV is superior to cable in terms of service wait times, signal reliability, picture and sound quality, and that it has better sports programming.

Back in April, Comcast complained about the ads to the National Advertising Division, a regulatory unit that investigates controversial ads. The NAD recommended the spots be discontinued because DirecTV did not submit substantiation for its "superior" claims in the investigation, and that disclosures in the ads themselves about the company's customer-satisfaction ranking, sports-programming charges, and picture quality were "inadequate."

At the time, DirecTV said it was planning to replace the ads anyway with spots showing Sports Illustrated swimsuit edition cover model Hannah Davis and a singing, talking horse.

Nevertheless, a five-member panel of the National Advertising Review Board (NARB) — the appellate unit of the US advertising industry's self-regulatory system — reviewed the NAD's decision. The verdict was published on Friday.

The panel noted that the Rob Lowe commercials "are very funny," but added that "depending on the context, even humorous advertisements can convey messages that require substantiation by the advertiser."

In summary, the NARB decided:

The panel agreed with the NAD that the ad conveyed a message that DirecTV is "superior to cable."

The panel agreed with the NAD that DirecTV's claim about "up to 1080" should be modified to include a disclosure that this is limited only to programming where the resolution is available

The panel did not agree with the NAD's findings that DirecTV's "Scrawny Arms Rob Lowe" commercial reasonably implied all sports programming was available in the service's $19.99/month introductory bundle. The NARB recommended DirecTV make a clearer disclosure.

The panel agreed DirecTV had appropriate substantiation for its "#1 in customer satisfaction over all cable TV providers claim" but recommended it more prominently disclose the source of the information.

DirecTV did not agree with all aspects of the decision, but said in a statement: "DirecTV is a strong believer in the self-regulatory process and will take the NARB’s recommendations into consideration when making these claims in the future."

However, DirecTV added that it "continues to believe that consumers do not perceive comparative superiority claims in the Rob Lowe advertisements. Whether from news accounts or social media, it is clear that consumers appreciate and understand the central role that humor and exaggeration play in the Rob Lowe advertisements."

SEE ALSO: There is a 'disturbing' issue plaguing the advertising industry — yet the major ad agencies deny there's a problem

Join the conversation about this story »

NOW WATCH: How to speak without bias, according to the 'Bias-Free Language Guide'










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/PFVGcBGvlMw/us-ad-regulator-tells-directv-to-stop-ordering-consumers-to-get-rid-of-cable-2015-8 + http://www.businessinsider.com/us-ad-regulator-tells-directv-to-stop-ordering-consumers-to-get-rid-of-cable-2015-8 + + + Fri, 14 Aug 2015 15:53:28 GMT +
+ + <![CDATA[New Android M teaser video asks “What’s M gonna be?”]]> + + http://www.androidauthority.com/google-android-m-teaser-634186/ + http://www.androidauthority.com/?p=634186 + + + + Fri, 14 Aug 2015 15:49:32 GMT + + + <![CDATA[The first things to do when you get your Moto G 2015]]> +

+ +

The first things to do when you get your Moto G 2015

+ +

For more than a few of us, the Moto G 2015 will be our first Android smartphone. It might even be the first smartphone experience for some of us. That's cool, and welcome to the fold.

+ +

A first experience with an Android phone isn't likely to be confusing, but there are a few tricks to make the initial experience a little smoother.

+ +

If you're an old pro, you still might know someone who could use a few tips. Treat them right, and tell them to come visit us!

+ +
]]> + http://www.androidcentral.com/first-things-do-when-you-get-your-moto-g-2015 + 48422 at http://www.androidcentral.com + + Fri, 14 Aug 2015 15:48:19 GMT + + + <![CDATA[Hillary Clinton and Donald Trump have already become instant Vine celebrities on the campaign trail]]> + This election season looks like it may bring the American people what they're clamoring for most — a new Vine star.

So far both Hillary Clinton and Donald Trump have made their way to the 6-second video platform after some internet-savvy folks created entertaining clips out of footage from Snapchat videos and public appearances.

This Vine of Trump (uploaded by CNN!) is seeing a ton of traction this week with over 2 million loops. 

Gawker reports on the context: “Jeb Bush or Hillary, or one of these politicians, all controlled by lobbyists and special interests — and donors, people like me from previous months — total control. Bing bing, bong bong bong, bing bing. You know what that is, right?”

Meanwhile, Hillary Clinton has become her own meme.

From Motherboard: 

In one of the many half-hearted political attempts to engage with ~millennials~,Hillary Clinton shared a Snapchat back in July where she held the phone way too close to her face to let her audience know she was “just chillin’...in Cedar Rapids.”

Someone was able to snag that video and upload it to Vine, allowing others the opportunity to use it (or rip its audio) in countless ways.

Uploaded on July 18, the above Vine has over 17 million loops. Now other Vines are popping up everywhere, Motherboard reports, like this one, which mashes Blink182's song, "I Miss You," with the Cedar Rapids Vine. 

"Where are you?" Blink182 sings.

"I'm just chillin, in Cedar Rapids!" Clinton replies.

Then there are these kids, who didn't use any editing effects for their video. They just really like saying "Chillary Clinton."

As it is with the race to the oval office, it is too early to tell which presidential hopeful will end up being the next big Vine celebrity. We'll keep you posted.

Join the conversation about this story »

NOW WATCH: Meet 'The Fat Jewish,' Instagram's cult phenomenon with 5.5 million followers










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/hkGHcEWDLPg/vines-of-hillary-clinton-and-donald-trump-2015-8 + http://www.techinsider.io/vines-of-hillary-clinton-and-donald-trump-2015-8 + + Fri, 14 Aug 2015 15:46:00 GMT +
+ + <![CDATA[HP will have the most diverse tech boards in the US, say activists (HP)]]> + Meg Whitman

Hewlett-Packard is preparing to diverge into two companies this November, but it can also claim a new achievement for diversity in the national tech workspace.

HP now has the "most diverse" boards in the US, according to the nonprofit Rainbow PUSH.

The HP boards, announced earlier this week, will feature a blend of original members and new hires. Four women and two people of color will be placed on each board, reported Forbes.

Rainbow PUSH is an organization focused on social change and has been urging technology companies across the country to hire underrepresented minorities.

The nonprofit has especially ramped up its efforts in the past year, meeting with tech behemoths across the country, including Apple and Google, to discuss their diversity numbers. A survey conducted by the group last fall found only three blacks and one Hispanic among the 189 board members from 20 technology companies examined.

There were also "153 men and just 36 women. Eleven (over half) have all-white Boards," Reverend Jesse Jackson, who is spearheading Rainbow PUSH, said in a press release. He later added, "Certainly there is a long way to go."

Last March, the nonprofit met with HP at its shareholder meeting to talk about its numbers.

"We challenged them — and the tech industry — to confront the virtual exclusion of women and people of color in the tech industry," Rev. Jackson said. "HP committed to make demonstrable strides in expanding diversity and inclusion."

At HP Enterprise, Leslie A. Brun from Sarr Group, and Pamela Carter, former president Cummins Distribution, are both people of color who will be joining. The board has 13 members in total, according to an HP press release. Heading the team will be Pat Russo, who became a part of the HP board in 2011.

The board at HP Inc. will include Stacy Brown-Philpot, chief operating officer at TaskRabbit, and Stacey Mobley, former senior vice president at DuPont. Twelve people will help oversee HP Inc., which focuses on the printer and PC businesses.

HP CEO Meg Whitman will sit on both boards and serve as chairwoman for HP Inc.

“The post-separation Boards for both Hewlett Packard Enterprise and HP Inc. comprise leaders with some of the most diverse backgrounds and professional experiences I’ve seen in my career,” Whitman said in HP's press release.

Join the conversation about this story »

NOW WATCH: Sony has been working on this PlayStation game for 8 years — and the trailer is absolutely beautiful










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/L2y9yJ9zmrw/hp-will-have-the-most-diverse-tech-boards-in-the-us-2015-8 + http://www.businessinsider.com/hp-will-have-the-most-diverse-tech-boards-in-the-us-2015-8 + + Fri, 14 Aug 2015 15:45:26 GMT +
+ + <![CDATA[New in our buyer's guide: the Chromebook Flip and some gaming gear]]> + + +Yes, we know: A bunch of phones just came out. Don't worry, we'll be reviewing those shortly. In the meantime, we have a handful of items we'd like to induct into our buyer's guide. Included among them: not one, but two laptops, including the impre...]]> + http://www.engadget.com/2015/08/14/engadget-buyers-guide-chromebook-flip/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/engadget-buyers-guide-chromebook-flip/ + + Fri, 14 Aug 2015 15:42:00 GMT + + + <![CDATA[How to customize AutoPlay defaults on Windows 10]]> + Modify the default actions when you insert a removable drive or memory card on Windows 10.
+ +

read more

]]> + http://winsupersite.com/windows-10/how-customize-autoplay-defaults-windows-10 + 58341 at http://winsupersite.com + + + + + + Fri, 14 Aug 2015 15:40:00 GMT + + + <![CDATA[Deal: MiiShower Bluetooth speaker only $24.99!]]> + + http://www.androidauthority.com/deal-miishower-bluetooth-speaker-634060/ + http://www.androidauthority.com/?p=634060 + + + + + + + + Fri, 14 Aug 2015 15:38:48 GMT + + + <![CDATA[LG’s new G Pad 2 8.0 has a full-sized USB port in-tow]]> + + http://www.androidauthority.com/lg-g-pad-2-8-0-with-full-sized-usb-634161/ + http://www.androidauthority.com/?p=634161 + + + + + + Fri, 14 Aug 2015 15:36:06 GMT + + + <![CDATA[What happens when a superstar disrupts one of the top 'League of Legends' teams]]> + “League of Millions” documents the worldwide cultural phenomenon around the video game "League of Legends." For many weeks we have followed a top pro team, Team Liquid, in their quest for the 2015 Championship.

In Part 1 and Part 2 of the series, we meet the five elite players on Team Liquid. We witness their intense 15-hour days, along with the fans and fame that are part of the pro gamer's life.

In this final installment, we see if Team Liquid can come together and secure their place in the North American finals to be held at Madison Square Garden.

Director and Producer: Sam Rega

Editor: Josh Wolff

Production and Research: David Fang and Lauren Browning

Executive Producer: Diane Galligan

Follow TI: On YouTube

 

Join the conversation about this story »










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/PiAccGG0g5I/league-of-millions-piglet-team-liquid-league-of-legends-2015-8 + http://www.techinsider.io/league-of-millions-piglet-team-liquid-league-of-legends-2015-8 + + Fri, 14 Aug 2015 15:35:00 GMT +
+ + <![CDATA[LG G Pad II 8.0 Makes Its Debut On Korean Website, Complete With Stylus And Full-Sized USB Port]]> + tabletRemember the LG G Pad, the company's return to the tablet market from 2013? It was an impressive effort, a high-end, mid-sized tablet (which eventually got a Google Play Edition brother) that was unfortunately followed up by a collection of low-end G Pads designed to try and take a bit out of Samsung's cheap Galaxy Tab market share. It looks like LG is ready to try again, at least according to this page on the company's Korean website.
Read More

LG G Pad II 8.0 Makes Its Debut On Korean Website, Complete With Stylus And Full-Sized USB Port was written by the awesome team at Android Police.



+ +
]]>
+ http://feedproxy.google.com/~r/AndroidPolice/~3/DGSbTZStyxE/story01.htm + http://www.androidpolice.com/?p=331533 + + + + + + + + + + Fri, 14 Aug 2015 15:35:00 GMT +
+ + <![CDATA[Contactless payments now accepted on London's cross-Thames cable car]]> + + +Since contactless payments were first accepted on London buses a few years ago, it's become increasingly easy to get around the capital without cash or a loaded Oyster card. Whether you're equipped with a contactless card, Apple Pay or another mobi...]]> + http://www.engadget.com/2015/08/14/emirates-air-line-contactless/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/emirates-air-line-contactless/ + + Fri, 14 Aug 2015 15:27:00 GMT + + + <![CDATA[Here's why the new 'Star Wars' movie might stink]]> +

It's been a long time since a movie has generated as much fervent anticipation as "Star Wars: The Force Awakens." Due in theaters this Christmas, the movie is expected by some to gross more than $2 billion at the worldwide box office.

Expectations are incredibly high for the JJ Abrams-directed sci-fi epic, but there's no guarantee that "The Force Awakens" will please everybody. 

Produced by Graham Flanagan. Camera by Corey Protin.

Follow BI Video: On Facebook

Join the conversation about this story »










+ +
]]> + http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/PnysOrezzOQ/star-wars-the-force-awakens-hype-jj-abrams-2015-8 + http://www.businessinsider.com/star-wars-the-force-awakens-hype-jj-abrams-2015-8 + + Fri, 14 Aug 2015 15:26:00 GMT + + + <![CDATA[‘1849: Gold Edition’ brings you to the old California Gold Rush era]]> + Continue reading]]> + http://androidcommunity.com/1849-gold-edition-brings-you-to-the-old-california-gold-rush-era-20150814/ + http://androidcommunity.com/?p=238937 + + + + + + + + Fri, 14 Aug 2015 15:20:37 GMT + + + <![CDATA[This MIT grad student discovered a way to create sound from soundless video]]> + Abe Davis 2

Our recently published list of groundbreaking scientists highlighted the smartest and most innovative modern scientists and researchers in the field.

Among them is Abe Davis, an MIT graduate student who has worked with researchers from MIT, Microsoft, and Adobe to publish their findings on "the visual microphone" – an algorithm that can almost literally create sound from soundless objects.

In a TED talk this spring, Davis broke down the research using videos and graphics to a stunned audience. Here's what he explained:

If we watch video of a wrist with a pulse or a video of a breathing baby, for instance, the naked eye can't easily discern movement. But Davis' team created software that finds this subtle motion in video and amplifies it, making it visible. 

Abe Davis 1

So they went further and asked the question: Could this software be used to recreate sound from motion? If all sound creates vibrations in objects, and they captured those vibrations through video, would they be able to discern original sound?

Abe Davis 2

Davis explains one the the team's first experiments in which they played the tune "Mary Had a Little Lamb" from a speaker placed near a potted plant. The plant's leaves vibrated as seen in a slowed down video of thousands of frames per second. He calls this motion "perceptually invisible" to human beings.

Abe Davis 3

Crazily enough, Davis and his team were able to create an algorithm that recovers the "sound" (aka the vibrations of the leaves) and plays it back. 

Abe Davis 4

Perhaps one of his most practical demonstrations is a silent video of headphones playing music that are resting on a laptop. The sound recovered through the algorithm accurately read and discovered by music-finding app Shazam.

Abe Davis 5

While Davis also presents more examples from varied experiments where they tampered with light, noise volume, and camera quality, the crux of his team's research and findings is this: By using the team's specialized algorithm, we can use cameras of varied quality to recover sounds from soundless video. 

Abe Davis 6

By using video of the vibrations of objects, he's uncovered a new way to interact with still objects. After recording just five seconds of video (with movement due to a person's fist hitting the wood), Davis is able to create a simulation of how the object would respond to new forces by clicking and dragging with his mouse. 

Abe Davis 7

So while the public sees simulation like this often in video games and 3D models, these findings tell us that we can also do this by using simple video techniques to capture real world objects. Davis says these experiments unearth incredible potential for changing the way we see the world.

Davis is also the creator of Caperture for iOS. It allows users to capture, view, and send objects in 3D. 

 

NOW READ: 50 groundbreaking scientists who are changing the way we see the world

Follow us! 7 scientists who are helping us understand how the world works

Join the conversation about this story »

NOW WATCH: What Adderall is actually doing to your body










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/e06IiwDFV-0/abe-davis-and-the-visual-microphone-2015-7 + http://www.businessinsider.com/abe-davis-and-the-visual-microphone-2015-7 + + Fri, 14 Aug 2015 15:13:00 GMT +
+ + <![CDATA[Mini review video: our verdict of the Moto G in under a minute]]> + + + + +The Moto G gets a little better every year. Now in its third generation, Motorola's mid-range handset is still our favorite affordable smartphone, with the most recent version notching a score of 87 out of 100 in our review (that's up from 86 las...]]> + http://www.engadget.com/2015/08/14/moto-g-mini-review-video/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/moto-g-mini-review-video/ + + Fri, 14 Aug 2015 15:10:00 GMT + + + <![CDATA[Google ramps up the Android M mystery hype]]> +
+ + + +

We may soon find out what the M in Android M stands for, as a new video which showcases all of the previous releases, and then teases about the new one has surfaced. Each year, there are tons and tons of guesses about what Google decided to call the upcoming Android release, and this year is no different.

]]> + http://www.androidcentral.com/we-may-soon-find-out-what-android-m-stands + 48484 at http://www.androidcentral.com + + Fri, 14 Aug 2015 15:09:02 GMT + + + <![CDATA[Motorola Uploads 1st Gen Moto G 3G Android 5.1.1 Open Source Kernel Files]]> + MotoG-ThumbThe first Android 5.1-based kernel Motorola released was for the LTE version of the 1st generation Moto G. This week it has released the source files for the less speedy 3G-only model, codenamed Falcon.

Selection_004

Developers, you know what to do. The zip comes in at 132 MB. You can download it from GitHub at the source link below. After that, feel free to make all the recovieres, ROMs, and other things we Android nerds get excited about.

Read More

Motorola Uploads 1st Gen Moto G 3G Android 5.1.1 Open Source Kernel Files was written by the awesome team at Android Police.



+ +
]]>
+ http://feedproxy.google.com/~r/AndroidPolice/~3/UOyq-hNe3oE/story01.htm + http://www.androidpolice.com/?p=331516 + + + + + + + + + Fri, 14 Aug 2015 15:03:15 GMT +
+ + <![CDATA[We’re giving away 50 OnePlus 2 invites]]> + + http://www.androidauthority.com/oneplus-2-invites-giveaway-634169/ + http://www.androidauthority.com/?p=634169 + + + + + Fri, 14 Aug 2015 15:01:25 GMT + + + <![CDATA[This app lets you text without Wi-Fi or a data plan anywhere in the world — even on a plane]]> + FireChat App ScreenshotForget exorbitant roaming charges, overpriced international data packages, or spotty internet coverage.

FireChat is the perfect travel app, allowing users to send and receive text messages entirely without data or internet thanks to something called mesh networking.

Basically, mesh networking allows you to communicate wirelessly by bouncing your message from one phone equipped with FireChat (within 210 feet of you) to another via Wi-Fi or Bluetooth antennas.

If there aren't any connections nearby, messages are stored until they can be sent. And don't worry: Messages will be encrypted, so only the intended recipient will be able to read them. The message then keeps bouncing from phone to phone until it reaches said recipient — and to cross oceans, for example, it'll hop from phone to phone until it reaches one with internet, then making its way to its final destination like any other message.

Sure, this can take a few minutes — 10 to 20 across a dense metro area, according to Skift — but you'll be able to send texts from abroad without incurring roaming charges or even from remote or blackout areas that have little to no coverage, including planes and subways.

Of course, this means that the more people download the app the better: According to Skift, only about 5 million mobile users worldwide have downloaded the app, but the app's creators estimate that as long as 5% of a city's population has it, messages can be delivered in around 10 minutes.

FireChat app screenshot

Originally designed for people to get in touch with each other at crowded events, FireChat became hugely popular in Iraq last year after the country faced restrictions on internet use, and it was an integral part of the 2014 Hong Kong protests and 2015 Ecuadorian protests.

While you may continue to use Facebook Messenger or WhatsApp when connected to the internet, what makes FireChat so great is that it doesn't rely on any carrier and will work anywhere.

Available on: Android and iOS.
Cost: Free

SEE ALSO: This is the one app you should use to make phone calls when you're traveling abroad

FOLLOW US: BI Travel is on Twitter!

Join the conversation about this story »

NOW WATCH: The 10 best cities in the world, according to travelers










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/R1Vt8hsGT74/firechat-app-lets-you-text-without-wifi-or-data-2015-8 + http://www.businessinsider.com/firechat-app-lets-you-text-without-wifi-or-data-2015-8 + + Fri, 14 Aug 2015 14:52:00 GMT +
+ + <![CDATA[US court rejects Samsung's appeal against Apple over patent fight]]> + + +Samsung's latest attempt to appeal Apple's 2012 patent infringement victory has fallen flat. A U.S Federal Court of Appeals rejected the Korean electronics giant's bid for reconsideration yesterday, reports the San Jose Mercury News. The original 2...]]> + http://www.engadget.com/2015/08/14/samsung-apple-appeal/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/samsung-apple-appeal/ + + Fri, 14 Aug 2015 14:50:00 GMT + + + <![CDATA[Samsung showed off its new smartwatch in a bizarre space-age photoshoot — check out the pictures]]> + samsung gear 2 no text

Samsung is officially launching its new smartwatch, the Galaxy Gear S2, in September. But this hasn't stopped it taking the chance to show it off early. 

The South Korean electronics manufacturer teased the new device at its Galaxy Note 5 launch event on Thursday, and followed it up with a space-age photoshoot showing off the unreleased smartwatch alongside its other gadgets.

We first saw the photos over on the Verge.

Here's the Gear S2, alongside one of Samsung's new smartphones.



Samsung launched two new smartphones at the event on Thursday — the Galaxy Note 5, a phablet device, and the Galaxy S6 Edge+, a larger version of its Samsung Galaxy S6.



The new S6 Edge+ has a 5.7-inch screen, and is a millimeter thinner than its smaller cousin.



See the rest of the story at Business Insider

NOW WATCH: How to clear out a ton of space on your iPhone superfast










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/SFV_wosz7xs/samsung-teases-gear-s2-smartwatch-futuristic-photoshoot-2015-8 + http://www.businessinsider.com/samsung-teases-gear-s2-smartwatch-futuristic-photoshoot-2015-8 + + Fri, 14 Aug 2015 14:41:29 GMT +
+ + <![CDATA[NASA asking people to design smartwatch app for astronauts]]> + Continue reading]]> + http://androidcommunity.com/nasa-asking-people-to-design-smartwatch-app-for-astronauts-20150814/ + http://androidcommunity.com/?p=239271 + + + + + + + Fri, 14 Aug 2015 14:40:19 GMT + + + <![CDATA[AT&T Restructures Data Plans To Squeeze A Little More Money Out Of Some Subscribers, Lowers Pricing For Large Data Buckets]]> + nexusae0_Death-star-att

AT&T, a company with a reputation for evil such that placing their logo inside a Death Star has always seemed genuinely appropriate, has announced some changes to pricing on their mobile data plans today. While some of those changes are genuinely good if you're a subscriber with a large data bucket or have some pretty particular usage habits, many new customers can expect to pay $5-10 more a month under the new structure, which AT&T of course claims is a totally innocuous attempt to "simplify" things for customers.

Read More

AT&T Restructures Data Plans To Squeeze A Little More Money Out Of Some Subscribers, Lowers Pricing For Large Data Buckets was written by the awesome team at Android Police.



+ +
]]>
+ http://feedproxy.google.com/~r/AndroidPolice/~3/Oir0J7wVlL0/story01.htm + http://www.androidpolice.com/?p=331510 + + + + + + + + + + + Fri, 14 Aug 2015 14:33:06 GMT +
+ + <![CDATA[The realities of a $50 smartphone]]> + + +As mobile networks kill off phone subsidies, users might now begin to appreciate just how much their new smartphone really costs. It's an even bigger problem in the developing world, where relatively few have the cash to buy even a mid-range phone...]]> + http://www.engadget.com/2015/08/14/the-realities-of-a-50-smartphone/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/the-realities-of-a-50-smartphone/ + + Fri, 14 Aug 2015 14:30:00 GMT + + + <![CDATA[HTC One M8 receives Stagefright patch from Sprint]]> +

+ +

Sprint is now pushing out an update for the HTC One M8, which contains a patch for the Stagefright exploit. Several Samsung phones on Sprint have already received the update, and it is great to see updates being pushed from other manufacturers as well. The update bumps the phone up to software version 4.25.651.18.

+ +

If you have not already received the update notification, you can manually check for the update by heading into your phones Settings then checking for the update. Receiving the update on another device? Be sure to let us know in the comments below!

+ +

Source: Sprint

+
]]> + http://www.androidcentral.com/htc-one-m8-receives-stagefright-patch-sprint + 48483 at http://www.androidcentral.com + + Fri, 14 Aug 2015 14:19:53 GMT + + + <![CDATA[News Corp CEO just slammed Google for greed, censorship, corruption, and piracy (GOOG, GOOGL)]]> + Robert ThomsonIn a speech at the Lowy Institute Media awards in Sydney, News Corp CEO Robert Thomson blasted Google for greed, censorship, corruption, and piracy, mUmBRELLA reports.

Thomson accused “distributionists” like Google and Facebook of setting up a broken system.

“None of them actually create content, and they certainly have little intention of paying for it,” he said. “But they do redistribute the content created by others – they would argue that such redistribution is a natural extension of their role as social networks. I would argue that much of the redistribution is an unnatural act.”

Thomson believes these companies are helping themselves to the content that others create, “co-opting and corralling audiences and consciously devaluing brands.” He contended that the words “Intellectual Property” don’t appear in Google’s alphabet, a reference to Google’s new operating structure of the same name.

He went on to riff more on Alphabet: “A is for Avarice, B is for Bowdlerize, through to K for Kleptocracy, P for Piracy and Z for Zealotry.”

Thomson cautioned that without a fair payment model in place, “well-resourced reporting will be ever more challenged.”

He also threw a barb at LinkedIn, calling it a “pretender” that is chock full of spam.

Business Insider has reached out to Google for comment and will update this post when we hear back.

You can read Thomson's full speech here.

SEE ALSO: Waze cofounder tells us how his company's $1 billion sale to Google really went down

Join the conversation about this story »

NOW WATCH: Here are all of Google's awesome science projects — that we know about










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/lg1e-vsj4Gc/news-corp-ceo-slams-google-for-greed-censorship-corruption-and-piracy-2015-8 + http://www.businessinsider.com/news-corp-ceo-slams-google-for-greed-censorship-corruption-and-piracy-2015-8 + + Fri, 14 Aug 2015 14:13:08 GMT +
+ + <![CDATA[Here's your first look at the sequel to the hottest Android phone]]> +

The OnePlus One was one of the most talked about smartphones of 2014 and the small Chinese company is back in 2015 with their newly released OnePlus 2. The smartphone is only available to order by invite only, but we have a first look at the new Android device.

Produced by Darren Weaver

Follow TI Video: On Facebook

 

Join the conversation about this story »










+ +
]]> + http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/SdHKlY1hayE/unboxing-oneplus-2-android-smartphone-2015-8 + http://www.businessinsider.com/unboxing-oneplus-2-android-smartphone-2015-8 + + Fri, 14 Aug 2015 14:11:36 GMT + + + <![CDATA[Younger version of Jupiter provides clues to planet formation]]> + + +It's likely not the first time you'll hear scientists compare an exoplanet to Jupiter. According to a team of astronomers, though, this one called the 51 Eridani b isn't only similar in size -- it's "very much what models suggest Jupiter was like i...]]> + http://www.engadget.com/2015/08/14/young-jupiter-exoplanet/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/young-jupiter-exoplanet/ + + Fri, 14 Aug 2015 14:10:00 GMT + + + <![CDATA[Google is reportedly making a new version of its best Android phone — here's what it looks like (GOOG, GOOGL)]]> + Google is said to be working on two new smartphones to be released this year — a giant phone that's essentially going to be a new version of the Nexus 6, and a smaller flagship that will likely be an updated Nexus 5. Now, a new leak has given us a clear look at what that updated Nexus 5 might look like.

Steve Hemmerstoffer, who runs the Twitter account OnLeaks and the tech news blog Nowhereelse.fr, has shared a set of renderings that reportedly show the new Nexus 5 with tech site uSwitch. The renderings are said to be based on schematics that have been sent to accessory makers to ensure that their cases fit the phone when it launches. 

Here's a look at the back of the phone. The circle underneath the camera is said to be the fingerprint sensor. 

Nexus5LeakBack

It looks like the camera slightly protrudes out from the back of the phone too.

Nexus5Leak2

Here's the front of the phone. It seems as if the new Nexus 5 will have a design that's similar to that of the Nexus 5 that launched in 2013. 

Nexus5LeakFront

While the images aren't an definitive look at Google's new Nexus phone, it at least gives us an idea of what we might be able to expect. The new phone is said to be produced by LG, lining up with rumors we've heard in the past, and it'll reportedly have a 5.2-inch screen. 

Although Hemmerstoffer has a pretty solid track record when it comes to leaking unreleased products, it's important to keep in mind that these images haven't been confirmed by LG or Google. Even if they are legitimate, there's a chance things could change by the time Google actually announces its new phone.

The Nexus 5 was regarded as being Google's best Nexus phone yet when it launched two years ago. It was a big step up from the popular Nexus 4 — it had a slimmer design, a larger screen that was sharper than that of the Nexus 4, and it supported LTE. Now it sounds like Google is working on an updated version of that to appeal to those who may find the Nexus 6 too big. 

The company usually releases its new version of Android and new Nexus devices in October, so there's a chance we'll hear about it then. 

Google denied to comment on the leak. 

SEE ALSO: How Samsung's new Galaxy phones compare to the iPhone and their biggest Android rivals

Join the conversation about this story »

NOW WATCH: 2 texting tricks you didn't know you could do on your iPhone










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/RIW1bdds-W0/google-nexus-5-specs-photos-release-2015-8 + http://www.businessinsider.com/google-nexus-5-specs-photos-release-2015-8 + + Fri, 14 Aug 2015 14:07:38 GMT +
+ + <![CDATA[Enter to win the Double Nexus Giveaway II [DEALS]]]> + Continue reading]]> + http://androidcommunity.com/enter-to-win-the-double-nexus-giveaway-ii-deals-20150814/ + http://androidcommunity.com/?p=239421 + + + + + + + + + + + Fri, 14 Aug 2015 14:00:57 GMT + + + <![CDATA[Oco security camera review]]> + + http://feedproxy.google.com/~r/TheGadgeteer/~3/0uWkmOyQB3Y/ + http://the-gadgeteer.com/?p=181816 + + + + + Fri, 14 Aug 2015 14:00:22 GMT + + + <![CDATA[Project Ara's Puerto Rico pilot market launch has been scrapped [Update]]]> +

+ +

Update: PCWorld reports that, according to a Google spokesperson, the Project Ara sales pilot project for Puerto Rico is no longer going to happen. The spokesperson offered no other details.

+ +

Original story: Project Ara, which is Google's effort to create a smartphone using quickly changed modular parts, is looking like it has hit a snag. The project's official Twitter feed has posted a series of messages indicating a delay in the launch of its sales pilot project in Puerto Rico, which was supposed to happen by the end of 2015.

+ +
]]> + http://www.androidcentral.com/project-aras-modular-smartphone-may-be-delaying-its-puerto-rico-launch + 48482 at http://www.androidcentral.com + + Fri, 14 Aug 2015 13:55:34 GMT + + + <![CDATA[Fitbit adds Cortana support, Xbox One app coming this year]]> + + +Fitbit's updated its Windows app for Windows 10. The app features all-new Live Tiles, pushes notifications to the Action Center, and supports Cortana voice commands. Saying things like "Fitbit, I ate chicken for dinner" or "Fitbit, I went for a thr...]]> + http://www.engadget.com/2015/08/14/fitbit-windows-10-app-xbox-one-support/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/fitbit-windows-10-app-xbox-one-support/ + + Fri, 14 Aug 2015 13:50:00 GMT + + + <![CDATA[13 top executives who make a $1 salary or less]]> + Larry PageWhile many executives are criticized for their excessive pay, some CEOs have been able to skirt around the issue by choosing to forgo a lofty salary and opting instead for a paycheck of $1 a year, or less.

Of course, this isn't to say these executives are living off the dollar menu.

The CEOs on this list are still worth millions, if not billions, but while some merely pay lip service to the $1 salary club by taking home hefty compensation in the form of company stock awards and bonuses, others forgo adding to their wealth in this way entirely.

"I've made enough money," said Mark Zuckerberg during a Q&A on Facebook in June. "At this point, I'm just focused on making sure I do the most possible good with what I have." Zuckerberg chooses to take home a $1 salary and declines stock awards and bonuses.

Here are some CEOs and other executives that belong to the $1 (or less) salary club:

SEE ALSO: 17 billionaires who were once dirt poor

Larry Page and Sergey Brin

According to Google's annual filing with the Securities and Exchange Commission (SEC), Brin and Page, the company's cofounders asked that their base salaries each be reduced to $1 per year in 2004.

Since then, Google's compensation committee has offered them market-competitive salaries annually, which they continue to decline.

While they also forgo cash bonuses based on their individual and company performance and do not hold any stock options, Google stock units, or other contingent stock rights, Page is currently worth an estimated $34.9 billion and Brin is worth an estimated $34.3 billion.



Jack Dorsey

In a filing with the SEC in June, it was revealed that Twitter's interim CEO receives no compensation for his role. This is of little financial consequence to Dorsey, whose current estimated net worth comes in around $2.3 billion.

"At your request, you have agreed to forego any compensation for your role as Interim Chief Executive Officer until the Compensation Committee agree upon a compensation package for you at the same time that it conducts its annual assessment and setting of executive compensation later in the year. Until a compensation package is finalized, you will be entitled to no cash or equity compensation for your services as Interim Chief Executive Officer," the document reads.



Larry Ellison

As in previous years, Oracle reported to the SEC that Ellison, now executive chairman and CTO, took home a salary of $1 in 2014.

Meanwhile, new co-CEOs Safra Catz and Mark Hurd, who took over in September, 2014, each took home a $950,000 salary last year in addition to other compensation.

So how does Ellison continue to add to his estimated $49.2 billion net worth? Compensation Ellison received last year included $65 million in stock option awards, $740,000 in non-equity compensation, and $1.5 million for other compensation, most of which went towards security-related costs for Ellison's home.

 



See the rest of the story at Business Insider

NOW WATCH: This drummer created a whole song using only the sound of coins










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/L8xWjoki3r0/ceos-who-take-1-dollar-salary-or-less-2015-8 + http://www.businessinsider.com/ceos-who-take-1-dollar-salary-or-less-2015-8 + + + Fri, 14 Aug 2015 13:48:18 GMT +
+ + <![CDATA[Plus Codes Are An Easier And More Accurate Way Of Locating People And Businesses In Places With No Specific Street Address]]> + plus-code-location

Growing up in Lebanon, I got used to giving and receiving directions to my home as, "take the second right turn after the chicken restaurant, continue straight past the two gas stations, it's the first building on the left after the falafel stand, with a flower shop below it and facing a pharmacy." I even remember how long I had to stay on hold on the phone with some government dude just to get the ZIP code for my area.

Read More

Plus Codes Are An Easier And More Accurate Way Of Locating People And Businesses In Places With No Specific Street Address was written by the awesome team at Android Police.



+ +
]]>
+ http://feedproxy.google.com/~r/AndroidPolice/~3/ntbwHtcgb_c/story01.htm + http://www.androidpolice.com/?p=331479 + + + + + + + + + + Fri, 14 Aug 2015 13:45:36 GMT +
+ + <![CDATA[Cybersecurity expert: Here's how the GOP could 'have a field day' with Hillary Clinton's email scandal]]> + Hillary Clinton

The FBI is now in possession of the private email server Hillary Clinton used for work-related correspondences while she served as secretary of state during the first term of the Obama administration.

And what they find could give Clinton's political rivals the ammunition they need to forcefully attack her presidential campaign.

"If investigators find that her server was ever compromised, the GOP is going to have a field day," cybersecurity expert Alex McGeorge, a senior security researcher at Immunity Inc., told Business Insider.

Though Clinton's use of a private email address was not illegal and was permitted by State Department rules, the federal government has standards for how servers are built, how they are secured, and how their data is stored.

If Clinton failed to take one or all of the required steps to secure her private server — and if it is confirmed that classified information made its way into an insecure inbox — proving that this sensitive intelligence might be in the hands of foreign adversaries would be the GOP's "fastest path to victory" in the 2016 presidential election, McGeorge said.

Furthermore, demonstrating that the "clintonemail.com" server was hackable would be relatively easy, he said.

"Subpoena the exact configuration of the Clinton email server, and create a duplicate system as best as you are able," McGeorge said. "Put a legitimate bug bounty on it for real money (over $100k), to the first person who's able to get emails off of it. This gives the GOP proof that the system was hackable as configured."

'Top Secret/Sensitive Compartmented Information'

Clinton, the Democratic presidential front-runner in the 2016 election, has repeatedly said as recently as late July that she was "confident" she did not send or receive classified information by email.

But Charles McCullough, the inspector general for the US intelligence community, recently said the server potentially included hundreds of classified emails, some of which include information derived from US intelligence agencies.

And this week, McCullough told Congress that he discovered two emails that were classified as "Top Secret/Sensitive Compartmented Information," which is one of the government's highest levels of classification. Those two emails were drawn out of a batch of 40 emails randomly selected from about 30,000 "work-related" emails Clinton turned over to the State Department.

The Associated Press reports that the two emails "include a discussion of a news article detailing a US drone operation and a separate conversation that could point back to highly classified material in an improper manner or merely reflect information collected independently."

What's still unclear is how much classified information was consciously shared in the tens of thousands of emails — or what particular safeguards were taken to protect it.

"If Clinton knowingly used her private server to handle classified information, she could have a problem," Time senior correspondent Massimo Calabresi said recently. "But if she didn’t know the material was classified when she sent or received it, she's safe."

hillary clinton

'Hillary Clinton's big problem now is legal'

"Hillary Clinton's big problem now is legal," Charles Lipson, a professor of international politics at the University of Chicago, argued in RealClearPolitics. "And it could well be insurmountable politically."

Lipson, the director of the Program on International Politics, Economics and Security at the University of Chicago, then listed several "legal questions with huge political ramifications."

"Did the Clinton server meet the federal government's standards for how servers are built, how they are secured, and how data is retained? Was all sensitive material encrypted or did it circulate without those protections?" he wrote.

"Did anybody hack into the server? Did Secretary Clinton, who says she erased all 'personal' emails from the server, actually erase some government documents? If so, was that inadvertent or a possible cover-up? Who handled IT security for this server? Could he read the materials if he wished?"

Clinton's unusual email system was originally set up by a staffer during Clinton's 2008 presidential campaign, replacing a server used by her husband, former President Bill Clinton.

The new server was run by Bryan Pagliano, who had worked as the IT director on Hillary Clinton's campaign before joining the State Department in May 2009. In 2013 — the same year she left the State Department — Clinton hired the Denver-based company Platte River to oversee the system.

It's possible that Clinton's private server was more secure than the private email accounts of the nation's other top officials, "purely because it's a smaller target," cybersecurity expert Joe Loomis, the founder and CEO of CyberSponse, told Business Insider.

"Only she and a few other people are using it," he said.

hillary clinton

'A serious management mistake'

"Even if Secretary Clinton or her aides didn't run afoul of any criminal provisions, the fact that classified information was identified within the emails is exactly why use of private emails ... is not supposed to be allowed," Bradley Moss, a Washington attorney who specializes in national-security matters, told McClatchy recently.

"Both she and her team made a serious management mistake that no one should ever repeat."

And Clinton's choice to eschew the State Department's email system looks particularly egregious, given her standing within the department.

If she felt the State Department's server wasn't secure enough, she "would have been in a good position to demand change," said McGeorge, the senior security researcher at Immunity Inc. "But if it was a problem, and you decided to use your own server, then what did you do for your department?"

Former U.S. Secretary of State Hillary Clinton (2nd R) and current U.S. Secretary of State John Kerry (R) talk during a ceremony before breaking ground for the U.S. Diplomacy Center at the State Department in Washington September 3, 2014.

And then there are the deleted emails.

Last October, the House of Representatives committee dedicated to investigating the 2012 terrorist attack on the US diplomatic compound in Benghazi, Libya, asked Clinton for any emails she had relating to the attack.

Clinton obliged a separate request from the State Department, handing over roughly 55,000 pages of emails — about 60,000 emails in total. She deleted about 30,000 others that were "personal" in nature.

The fact that the State Department has no record of Clinton's email exchanges now that she has wiped her server clean also means Clinton may have skirted the rules governing federal-records management, which require that anything relating to agency activity be captured on the department's server.

Interestingly, McGeorge said, "the FBI can now only investigate anything Clinton didn't take the time to erase" because she used the "clintonemail.com" address.

SEE ALSO: We know what those 2 top-secret Clinton emails were about

Join the conversation about this story »

NOW WATCH: More trouble for Subway's Jared Fogle...










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/ByuuEruc1Cw/hillary-clinton-email-scandal-and-gop-2015-8 + http://www.businessinsider.com/hillary-clinton-email-scandal-and-gop-2015-8 + + Fri, 14 Aug 2015 13:44:13 GMT +
+ + <![CDATA[The Galaxy Note 5 in Europe, and why we can't have nice things]]> +

Samsung's decision to deny European buyers its best smartphone is weird and unnecessary.

+ +

As tick follows tock, each year Samsung has followed up its Galaxy S handset with a new Galaxy Note. It was one of the more reliable, almost inevitable events of the tech calendar. Every 12 months the Note family has introduced a new member at the IFA trade show in Berlin, Germany. And each time it's been the gold standard for what's possible in a big-screened, high-end Android handset.

+ +

Note owners are fiercely loyal. It's been said among fans of the series that the only thing that can replace a Note is another Note.

+ +

Except not anymore. This year, Europe isn't getting a new Galaxy Note — at least not anytime soon. Americans can buy it, as can Asian consumers. But live in Europe? For the moment, you're SOL. There'll be no Galaxy Note 5 for European buyers in 2015 — instead we'll get the Galaxy S6 edge+.

+ +
]]> + http://www.androidcentral.com/galaxy-note-5-europe-and-why-we-cant-have-nice-things + 48478 at http://www.androidcentral.com + + Fri, 14 Aug 2015 13:41:48 GMT + + + <![CDATA[OnePlus rolls out OxygenOS 1.0.2 update to address 'Stagefright' vulnerability]]> +

+ +

OxygenOS version 1.0.2 has just been released to the public. OnePlus has provided the means to flash the update, which is set to address the "Stagefright" vulnerability that could lead to your phone becoming compromised.

+ +
]]> + http://www.androidcentral.com/oneplus-rolls-out-oxygenos-102-update-address-stagefright-vulnerability + 48481 at http://www.androidcentral.com + + Fri, 14 Aug 2015 13:35:03 GMT + + + <![CDATA[How an accidental Siri butt dial saved the life of an 18 year old]]> + iPhone 4s SiriSiri may have some issues when it comes to understanding what you’re saying, but when your life is on the line, it turns out she can be pretty handy. At least that seems to be the takeaway from a recent heroic effort by Siri that probably saved the life of a 18-year-old man in Mufreesboro, Tennessee, WZTV Fox 17 reports.

The man was working under his truck when it fell on him, trapping him underneath.

He called for help, but was alone, and no one could hear him. That’s when Siri helped out.

The man heard Siri talking in his pocket and was able to “push up on his hip” and call 911. Vanderbilt University Medical Center's trauma team and paramedics did take over after that, but we know who the real hero is here: Siri. Perhaps we should add “life-saving” to our list of cool things you didn’t know Siri could do.

Of course, it's worth pointing out that maybe Siri just likes calling 911. If you tell Siri to "charge my phone 100%," it automatically dials emergency services

SEE ALSO: If you ask Siri to charge your phone, she’ll call the police

Join the conversation about this story »

NOW WATCH: 11 things you can ask Siri to get the most bizarre and hilarious answers










+ +
]]>
+ http://feedproxy.google.com/~r/typepad/alleyinsider/silicon_alley_insider/~3/6cGVBSBumw0/accidental-siri-butt-dial-saves-life-of-an-18-year-old-trapped-under-truck-2015-8 + http://www.businessinsider.com/accidental-siri-butt-dial-saves-life-of-an-18-year-old-trapped-under-truck-2015-8 + + Fri, 14 Aug 2015 13:32:18 GMT +
+ + <![CDATA[Google can spot friends nearby and tell if you're glad to see them]]> + + +Are you happy that Google's new Play Services software for Android developers is out? If not, one of the new features may tell you to turn that frown upside down. Google's latest APIs for Android apps include "Mobile Vision" face detection and "Nea...]]> + http://www.engadget.com/2015/08/14/google-play-services-sdk/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/google-play-services-sdk/ + + Fri, 14 Aug 2015 13:28:00 GMT + + + <![CDATA[SoundCloud now supports casting]]> + + http://www.androidauthority.com/soundcloud-now-supports-casting-634154/ + http://www.androidauthority.com/?p=634154 + + + + + + + Fri, 14 Aug 2015 13:21:48 GMT + + + <![CDATA[Sony Xperia Z5 Plus rendered image sighted]]> + Continue reading]]> + http://androidcommunity.com/sony-xperia-z5-plus-rendered-image-sighted-20150814/ + http://androidcommunity.com/?p=239443 + + + + + + + Fri, 14 Aug 2015 13:20:14 GMT + + + <![CDATA[Google Play Services v7.8 Completes Rollout, Adds New Mobile Vision API With Face Detection And Barcode Reader, Improves Cloud Messaging With Priority And Localization]]> + image01

It has been almost a month since Google Play services 7.8 began rolling out to users, and as of yesterday, it is in wide release to everybody. A previous blog post by Google discussed the big new feature for developers would be the Nearby Messages API, but it turns out there are a couple of other additions worth checking out. In a new post on the Android Developers blog, Google announced a new Mobile Vision API with the ability to detect the presence, orientation, and some details of faces when they are in frame on an active camera.

Read More

Google Play Services v7.8 Completes Rollout, Adds New Mobile Vision API With Face Detection And Barcode Reader, Improves Cloud Messaging With Priority And Localization was written by the awesome team at Android Police.



+ +
]]>
+ http://feedproxy.google.com/~r/AndroidPolice/~3/gYOVtm0ICLY/story01.htm + http://www.androidpolice.com/?p=331428 + + + + + + + + + + + + + + + + + + + + + + + + Fri, 14 Aug 2015 13:15:00 GMT +
+ + <![CDATA[Windows 10 PSA: You have 30 Days to Roll Back]]> + "Good day, Windows customer. Your mission, should you decide to accept it is to test Windows 10. As always, should you or any of your shadow users be caught or killed, Microsoft will disavow any knowledge of your actions. Your previous OS will self-destruct in 30 days. Good luck."
+ +

read more

]]> + http://winsupersite.com/windows-10/windows-10-psa-you-have-30-days-roll-back + 58331 at http://winsupersite.com + + Fri, 14 Aug 2015 13:12:00 GMT + + + <![CDATA[The Windows Supersite Stardock Start10 Giveaway]]> + We have five free registration codes for Stardock's Start10 a Start Menu replacement for Windows 10. Want a chance to win one of them?
+ +

read more

]]> + http://winsupersite.com/windows-10/stardock-start10-giveaway + 58321 at http://winsupersite.com + + + + + + + + Fri, 14 Aug 2015 13:10:00 GMT + + + <![CDATA[Over-the-air charging of devices is the wave of the future]]> + + http://feedproxy.google.com/~r/TheGadgeteer/~3/ALCkgnAPFDs/ + http://the-gadgeteer.com/?p=183554 + + + + + + Fri, 14 Aug 2015 13:00:08 GMT + + + <![CDATA[ICYMI: Far away haptic hello, birthing robot mom and more]]> + + +Today on In Case You Missed It: The Haptoclone allows users to touch and interact with distant objects, in a way you have to see to understand. But basically, long-distance makeouts over Skype are coming. Cambridge University researchers designed a...]]> + http://www.engadget.com/2015/08/14/icymi-far-away-haptic-hello-birthing-robot-mom-and-more/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/icymi-far-away-haptic-hello-birthing-robot-mom-and-more/ + + Fri, 14 Aug 2015 13:00:00 GMT + + + <![CDATA[AT&T revamps Mobile Share Value plans, offering more data for your buck]]> +

+ +

AT&T has announced a number of changes to the US carrier's Mobile Share Value plans. The aim is to simplify available tiers, offering more data for your buck. As usual with the majority of said offerings, the more you pay up each month, the greater the benefit is with AT&T's revamped bundles.

+ +
]]>
+ http://www.androidcentral.com/att-revamps-mobile-share-value-plans-offering-more-data-your-buck + 48479 at http://www.androidcentral.com + + Fri, 14 Aug 2015 12:55:36 GMT +
+ + <![CDATA[Android Studio v1.4 Preview 1 Enters Canary Channel With Brand New Theme Editor, Vector Asset Wizard, Performance Monitors, And More]]> + android-studio

With the official stable release of Android Studio v1.3 a couple of weeks ago, it's time to begin testing the next string of new features. The first preview release of version 1.4 is now in the Canary channel, and it's sporting some big new features. The Android Tools team has been working on the new theme editor first demonstrated in the I/O session titled What's New in Android Development Tools.

Read More

Android Studio v1.4 Preview 1 Enters Canary Channel With Brand New Theme Editor, Vector Asset Wizard, Performance Monitors, And More was written by the awesome team at Android Police.



+ +
]]>
+ http://feedproxy.google.com/~r/AndroidPolice/~3/EoYGPgoNLj4/story01.htm + http://www.androidpolice.com/?p=331476 + + + + + + + + + + + + + + + + + Fri, 14 Aug 2015 12:45:00 GMT +
+ + <![CDATA[OnePlus 2 bares its guts in iFixit teardown]]> + Continue reading]]> + http://androidcommunity.com/oneplus-2-bares-its-guts-in-ifixit-teardown-20150814/ + http://androidcommunity.com/?p=239357 + + + + + + + + + Fri, 14 Aug 2015 12:40:27 GMT + + + <![CDATA[Apple hired more women, but still has a huge gender gap]]> + + +Apple's largely white guy workforce isn't going to change overnight, but the company made strides this year, according to its latest diversity report. After promising changes in June, Tim Cook said "we're working hard to expand our recruiting effor...]]> + http://www.engadget.com/2015/08/14/apple-reduces-diversity-gap/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/apple-reduces-diversity-gap/ + + Fri, 14 Aug 2015 12:30:00 GMT + + + <![CDATA[The LG Nexus will probably look something like this]]> + + http://www.androidauthority.com/lg-nexus-renders-634134/ + http://www.androidauthority.com/?p=634134 + + + + + + + Fri, 14 Aug 2015 12:04:48 GMT + + + <![CDATA[Julie’s gadget diary – Should Apple be worried that Samsung Pay will win the mobile payment wars?]]> + + http://feedproxy.google.com/~r/TheGadgeteer/~3/Kb1IMFI4swM/ + http://the-gadgeteer.com/?p=183558 + + + + + + Fri, 14 Aug 2015 12:00:33 GMT + + + <![CDATA[HGST And Mellanox Show Off SAN Fabric Backed By Phase Change Memory]]> +

It seems that NAND flash memory just isn't fast enough to show off the full performance of the latest datacenter networking equipment from Mellanox. They teamed up with HGST at Flash Memory Summit to demonstrate a Storage Area Network (SAN) setup that used Phase Change Memory to attain speeds that are well out of reach of any flash-based storage system.

+ +

Last year at FMS, HGST showed a PCIe card with 2GB of Micron's Phase Change Memory (PCM). That drive used a custom protocol to achieve lower latency than possible with NVMe: it could complete a 512-byte read in about 1-1.5µs, and delivered about 3M IOPS for queued reads. HGST hasn't said how the PCM device in this year's demo differs, if at all. Instead, they're exploring what kind of performance is possible when accessing the storage remotely. Their demo has latency of less than 2µs for 512-byte reads and throughput of 3.5GB/s using Remote Direct Memory Access (RDMA) over Mellanox InfiniBand equipment. By comparison, NAND flash reads take tens of microseconds without counting any protocol overhead.

+ +

+ +

This presentation from February 2014 provides a great summary of where HGST is going with this work. It's been hard to tell which non-volatile memory technology is going to replace NAND flash. Just a few weeks ago Intel and Micron announced their 3D XPoint memory, immediately taking the place as one of the most viable alternatives to NAND flash without even officially saying what kind of memory cell it uses. Rather than place a bet on which new memory technology would pan out, HGST is trying to ensure that they're ready to exploit the winner's advantages over NAND flash.

+ +

None of the major contenders are suitable for directly replacing DRAM, either due to to limited endurance (even if it is much higher than flash), poor write performance, or vastly insufficient capacity. At the same time, ST-MRAM, CBRAM, PCM, and others are all much faster than NAND flash and none of the current interfaces other than a DRAM interface can keep pace. HGST chose to develop a custom protocol over standard PCIe as more practical than trying to make a PCM SSD that works as a DIMM connected to existing memory controllers.

+ +

Last year's demo showed that they were ready to deliver better-than-flash performance as soon as the new memory technology becomes economical. This year's demo shows that they can retain most of that performance while putting their custom technology behind an industry-standard RDMA interface to create an immediately deployable solution, and in principle it can all work just as well for 3D XPoint memory as for Phase Change Memory.

+

]]>
+ http://www.anandtech.com/show/9529/hgst-and-mellanox-show-off-san-fabric-backed-by-phase-change-memory + tag:www.anandtech.com,9529:news + + + Fri, 14 Aug 2015 12:00:00 GMT +
+ + <![CDATA[Google Play Services intros new Face Detection API]]> + Continue reading]]> + http://androidcommunity.com/google-play-services-intros-new-face-detection-api-20150814/ + http://androidcommunity.com/?p=239343 + + + + + + + + + Fri, 14 Aug 2015 12:00:00 GMT + + + <![CDATA[AT&T tweaks mobile data plans to match T-Mobile]]> + + +With T-Mobile now behind it as the nation's third largest carrier, AT&amp;T has updated its wireless data plans (below) to give you a bit more data for a bit less money. Unsurprisingly, the benefits get juicier if you spend more -- there's 5GB more...]]> + http://www.engadget.com/2015/08/14/atandt-updated-mobile-data-plans/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/atandt-updated-mobile-data-plans/ + + Fri, 14 Aug 2015 12:00:00 GMT + + + <![CDATA[Want the Galaxy Note 5 in Europe? Sign this petition!]]> + + http://www.androidauthority.com/want-the-galaxy-note-5-in-europe-sign-this-petition-634125/ + http://www.androidauthority.com/?p=634125 + + + + + + + + + Fri, 14 Aug 2015 11:48:31 GMT + + + <![CDATA[[Definitely, Maybe] WhatsApp's Google Drive Backup Should Be Back Now And Working For (Almost) Everyone]]> +
  • whatsapp-google-drive-final-hero

    The saga of WhatsApp's Google Drive backup option is only rivaled by the app's epic voice calls invite feature that we all had to endure for months. It's there, then not there, then it's back, only to disappear again, then wait it's hiding and only shows when it's time for a backup... but Rita, it's not working for me, and now it's gone for everyone, oh-oh look I got it with root and a few commands, and now it's on for everyone finally. We swear.

    Read More

    [Definitely, Maybe] WhatsApp's Google Drive Backup Should Be Back Now And Working For (Almost) Everyone was written by the awesome team at Android Police.



    + +
    ]]>
    + http://feedproxy.google.com/~r/AndroidPolice/~3/Ft9Pv8tE1IY/story01.htm + http://www.androidpolice.com/?p=331485 + + + + + + + + + Fri, 14 Aug 2015 11:39:21 GMT +
    + + <![CDATA[Skype for Business apps now on preview for Android devices]]> + Continue reading]]> + http://androidcommunity.com/skype-for-business-apps-now-on-preview-for-android-devices-20150814/ + http://androidcommunity.com/?p=239253 + + + + + + + + + Fri, 14 Aug 2015 11:30:56 GMT + + + <![CDATA[Where next for UK government as a platform and GDS?]]> + + http://www.computerweekly.com/opinion/Where-next-for-UK-government-as-a-platform + http://www.computerweekly.com/opinion/Where-next-for-UK-government-as-a-platform + + Fri, 14 Aug 2015 11:22:43 GMT + + + <![CDATA[Is the future of business predictive?]]> + + http://www.computerweekly.com/feature/Is-the-future-of-business-predictive + http://www.computerweekly.com/feature/Is-the-future-of-business-predictive + + Fri, 14 Aug 2015 11:14:58 GMT + + + <![CDATA[We Should All Be Thankful for Samsung’s Weirdo Phone]]> + We Should All Be Thankful for Samsung’s Weirdo Phone

    It's still OK to think different, no matter how much pressure there is to be the same.

    +

    The post We Should All Be Thankful for Samsung’s Weirdo Phone appeared first on WIRED.

    ]]>
    + http://www.wired.com/2015/08/samsung-s6-edge-plus/ + http://www.wired.com/?p=1835563 + + + + + + + + + + Fri, 14 Aug 2015 11:00:52 GMT +
    + + <![CDATA[24 Hours of Le Mans in Two Minutes of Epic Stop-Motion]]> + 24 Hours of Le Mans in Two Minutes of Epic Stop-Motion

    Camden Thrasher took over 1,000 photos for an incredible video of this year's 24 Hours of Le Mans.

    +

    The post 24 Hours of Le Mans in Two Minutes of Epic Stop-Motion appeared first on WIRED.

    ]]>
    + http://www.wired.com/2015/08/camden-thrasher-24-hrs-of-le-mans/ + http://www.wired.com/?p=1835205 + + + + + + + + + Fri, 14 Aug 2015 11:00:35 GMT +
    + + <![CDATA[Audi’s Plan to Make an Electric SUV With a 300-Mile* Range]]> + Audi’s Plan to Make an Electric SUV With a 300-Mile* Range

    Audi wants to build an all-electric SUV that will go 300 miles on a charge, and it's partnering with Samsung and LG to get it done.

    +

    The post Audi’s Plan to Make an Electric SUV With a 300-Mile* Range appeared first on WIRED.

    ]]>
    + http://www.wired.com/2015/08/audis-plan-make-electric-suv-300-mile-range/ + http://www.wired.com/?p=1835572 + + + + + + Fri, 14 Aug 2015 11:00:30 GMT +
    + + <![CDATA[Samsung Unpacked event videos made public, ready to tease the Android market]]> + Continue reading]]> + http://androidcommunity.com/samsung-unpacked-event-videos-made-public-ready-to-tease-the-android-market-20150814/ + http://androidcommunity.com/?p=239397 + + + + + + + + + Fri, 14 Aug 2015 11:00:26 GMT + + + <![CDATA[EC awards €8m to consortium to develop cloud-enabled 5G network]]> + + http://www.computerweekly.com/news/4500251720/EC-awards-8m-to-consortium-to-develop-cloud-enabled-5G-network + http://www.computerweekly.com/news/4500251720/EC-awards-8m-to-consortium-to-develop-cloud-enabled-5G-network + + Fri, 14 Aug 2015 11:00:09 GMT + + + <![CDATA[Tesla’s Making It Suck Less to Drive an EV in New York]]> + Tesla’s Making It Suck Less to Drive an EV in New York

    The startup is installing its charging system in two dozen garages in Manhattan.

    +

    The post Tesla’s Making It Suck Less to Drive an EV in New York appeared first on WIRED.

    ]]>
    + http://www.wired.com/2015/08/teslas-making-suck-less-drive-ev-new-york/ + http://www.wired.com/?p=1835538 + + + + + + Fri, 14 Aug 2015 11:00:09 GMT +
    + + <![CDATA[Reddit rolls over to please Russia's authorities]]> + + +Remember the tale of how Reddit managed to get itself banned in Russia because of a thread that promoted the growing of psychedelic mushrooms? A few days later and the site has returned, mostly because it rolled over and locally blocked the offendi...]]> + http://www.engadget.com/2015/08/14/reddit-deletes-drug-subreddit-please-russian-authorities/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/reddit-deletes-drug-subreddit-please-russian-authorities/ + + Fri, 14 Aug 2015 10:52:00 GMT + + + <![CDATA[Samsung brings wireless charging tech to Galaxy S6 edge+, Note 5]]> + Continue reading]]> + http://androidcommunity.com/samsung-brings-wireless-charging-tech-to-galaxy-s6-edge-note-5-20150814/ + http://androidcommunity.com/?p=239396 + + + + + + + + + Fri, 14 Aug 2015 10:30:44 GMT + + + <![CDATA[Samsung Galaxy Note 4 vs. Galaxy Note 5: Will you upgrade?]]> + Continue reading]]> + http://androidcommunity.com/samsung-galaxy-note-4-vs-galaxy-note-5-will-you-upgrade-20150814/ + http://androidcommunity.com/?p=239320 + + + + + + + + + Fri, 14 Aug 2015 10:00:22 GMT + + + <![CDATA[Smart dog collar tracks your pooch's diet and location]]> + + +There are a lot of devices out there that you can use to keep track of your pets, but the Buddy collar is akin to several types rolled into one. The LED collar makes sure Fido's visible in the dark, but it's also a temperature sensor, an activity t...]]> + http://www.engadget.com/2015/08/14/buddy-smart-dog-collar/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/buddy-smart-dog-collar/ + + Fri, 14 Aug 2015 09:58:00 GMT + + + <![CDATA[Google gets more time to respond to European anti-competitive charges]]> + + http://www.computerweekly.com/news/4500251716/Google-gets-more-time-to-respond-to-European-anti-competitive-charges + http://www.computerweekly.com/news/4500251716/Google-gets-more-time-to-respond-to-European-anti-competitive-charges + + Fri, 14 Aug 2015 09:45:49 GMT + + + <![CDATA[Home Office puts out feelers for new Emergency Services Network deal]]> + + http://www.computerweekly.com/news/4500251683/Home-Office-puts-out-feelers-for-new-Emergency-Services-Network-deal + http://www.computerweekly.com/news/4500251683/Home-Office-puts-out-feelers-for-new-Emergency-Services-Network-deal + + Fri, 14 Aug 2015 09:45:46 GMT + + + <![CDATA[GDS saves the government £1.7bn through digital and technology transformation]]> + + http://www.computerweekly.com/news/4500251688/GDS-saves-the-government-17bn-through-digital-and-technology-transformation + http://www.computerweekly.com/news/4500251688/GDS-saves-the-government-17bn-through-digital-and-technology-transformation + + Fri, 14 Aug 2015 09:40:02 GMT + + + <![CDATA[Samsung unveils a slew of stylish and functional Galaxy Note 5 accessories]]> + Continue reading]]> + http://androidcommunity.com/samsung-unveils-a-slew-of-stylish-and-functional-galaxy-note-5-accessories-20150814/ + http://androidcommunity.com/?p=239352 + + + + + + + + + Fri, 14 Aug 2015 09:30:49 GMT + + + <![CDATA[8 Apps for Making Legit Music on Your Phone]]> + 8 Apps for Making Legit Music on Your Phone

    Use your phone for more than just listening to tunes. With the right tools, you can be an artist too.

    +

    The post 8 Apps for Making Legit Music on Your Phone appeared first on WIRED.

    ]]>
    + http://www.wired.com/2015/08/best-music-apps/ + http://www.wired.com/?p=1805261 + + + + + + + Fri, 14 Aug 2015 09:15:14 GMT +
    + + <![CDATA[Samsung Galaxy Note 5 not coming to Europe, a 128GB variant out]]> + Continue reading]]> + http://androidcommunity.com/samsung-galaxy-note-5-not-coming-to-europe-a-128gb-variant-out-20150814/ + http://androidcommunity.com/?p=239339 + + + + + + + + + + Fri, 14 Aug 2015 09:00:43 GMT + + + <![CDATA['Mommy robot' can build and test its own babies]]> + + +A University of Cambridge team of researchers has created a "mother robot" capable of giving birth to -- or more correctly, building its own -- baby cube-bots. The team conducted five rounds of experiments, wherein it assembled 10 pint-sized machin...]]> + http://www.engadget.com/2015/08/14/university-of-cambride-mother-robot/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/university-of-cambride-mother-robot/ + + Fri, 14 Aug 2015 08:31:00 GMT + + + <![CDATA[T-Mobile adds Galaxy Note 5, S6 edge+ to Un-carrier JUMP! On Demand deals]]> + Continue reading]]> + http://androidcommunity.com/t-mobile-adds-galaxy-note-5-s6-edge-to-un-carrier-jump-on-demand-deals-20150814/ + http://androidcommunity.com/?p=239333 + + + + + + + + Fri, 14 Aug 2015 08:30:17 GMT + + + <![CDATA[OnePlus 2 teardown reveals easy-to-replace modular components]]> + + +We previewed the OnePlus 2 for you in the past, but if you'd rather see some internal component porn, iFixit has got your back. iFixit has taken the device apart like it did the first OnePlus phone (and many, many other gadgets before it) to examin...]]> + http://www.engadget.com/2015/08/14/oneplus-2-ifixit-teardown/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/oneplus-2-ifixit-teardown/ + + Fri, 14 Aug 2015 07:12:00 GMT + + + <![CDATA[Evernote's cleaner, faster web interface starts rolling out]]> + + +Evernote's been beta testing a redesigned web interface since last October. But, after nearly a year of experimenting with the fresh look, the company is finally ready to make it available to all its users starting this week. The main purpose of th...]]> + http://www.engadget.com/2015/08/14/evernotes-cleaner-faster-web-interface-starts-rolling-out/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/14/evernotes-cleaner-faster-web-interface-starts-rolling-out/ + + Fri, 14 Aug 2015 05:56:00 GMT + + + <![CDATA[Samsung Pay with Magnetic Secure Transmission launches in the US next month]]> + Continue reading]]> + http://androidcommunity.com/samsung-pay-with-magnetic-secure-transmission-launches-in-the-us-next-month-20150814/ + http://androidcommunity.com/?p=239316 + + + + + + + + Fri, 14 Aug 2015 05:00:47 GMT + + + <![CDATA[CW500 Security Club: Ashish Surti, information security director at Clutch Group]]> + + http://www.computerweekly.com/video/CW500-Security-Club-Ashish-Surti-information-security-director-at-Clutch-Group + http://www.computerweekly.com/video/CW500-Security-Club-Ashish-Surti-information-security-director-at-Clutch-Group + + Fri, 14 Aug 2015 04:00:00 GMT + + + <![CDATA[CW500 Security Club: Sarb Sembhi, Director at STORM Guidance]]> + + http://www.computerweekly.com/video/CW500-Security-Club-Sarb-Sembhi-Director-at-STORM-Guidance + http://www.computerweekly.com/video/CW500-Security-Club-Sarb-Sembhi-Director-at-STORM-Guidance + + Fri, 14 Aug 2015 04:00:00 GMT + + + <![CDATA[Fox Sports is streaming a Bundesliga soccer game on YouTube]]> + + +The Bundesliga, Germany's top-tier football league, is coming to YouTube. After recently securing US broadcast rights for this competition, Fox Sports has now announced it will stream a live match via Google's video service on August 14th. As the n...]]> + http://www.engadget.com/2015/08/13/fox-sports-bundesliga-livestream-youtube/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/13/fox-sports-bundesliga-livestream-youtube/ + + Fri, 14 Aug 2015 03:56:00 GMT + + + <![CDATA[YouTube Live Broadcast announced, ready to beat Periscope and Meerkat]]> + Continue reading]]> + http://androidcommunity.com/youtube-live-broadcast-announced-ready-to-beat-periscope-and-meerkat-20150813/ + http://androidcommunity.com/?p=239308 + + + + + + + + + Fri, 14 Aug 2015 03:37:30 GMT + + + <![CDATA[Google skirted drone test rules by using a deal with NASA]]> + + +Getting an FAA exemption to operate commercial drones in American airspace is almost more trouble than it's worth, what with the litany of requirements and restrictions. That's why Google, according to a Guardian report, has been sidestepping those...]]> + http://www.engadget.com/2015/08/13/google-skirted-drone-test-rules-by-using-a-deal-with-nasa/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi + http://www.engadget.com/2015/08/13/google-skirted-drone-test-rules-by-using-a-deal-with-nasa/ + + Fri, 14 Aug 2015 02:56:00 GMT + + + <![CDATA[Motorola Will Take Over Lenovo's Slumping Smartphone Division In Spite Of Motorola's 31% Sales Drop]]> + Motorola-a-Lenovo-Company

    Nestled in Lenovo's latest earnings report were disappointing figures for both their own brand of smartphones and Motorola, which was acquired late last year. The Chinese company's response is to do some fairly large-scale restructuring, handing over basically all aspects of Lenovo smartphones to Motorola with the possible exception of marketing. Motorola will continue to develop, make, and market their own line that most Westerners are familiar with.

    In light of the earnings figures, it might be surprising that Motorola is the part of the larger company that is rewarded with more responsibility.

    Read More

    Motorola Will Take Over Lenovo's Slumping Smartphone Division In Spite Of Motorola's 31% Sales Drop was written by the awesome team at Android Police.



    + +
    ]]>
    + http://feedproxy.google.com/~r/AndroidPolice/~3/-pZn83yNx6U/story01.htm + http://www.androidpolice.com/?p=331409 + + + + + + + + + Fri, 14 Aug 2015 02:24:50 GMT +
    + + <![CDATA[NVIDIA Releases 355.60 Drivers; GameWorks VR Now In Beta]]> +

    As the week starts to wind down NVIDIA is back with another driver release, 335.60.

    + +

    This latest release is notable for a few different reasons. Officially NVIDIA is releasing this as their preferred Game Ready driver for the Ashes of the Singularity tech demo, which is due later this month. Ashes is a large-scale RTS being developed by Oxide Games and Stardock, the former of which is likely better known for their Star Swarm tech demo. Built on the same Nitrous engine, Ashes will be the first DirectX 12 enabled consumer software to be released, though in very early form as a tech demo ahead of its 2016 launch.

    + +

    + +

    Meanwhile this driver is also the first release from NVIDIA’s R355 branch. At this point we don’t know a great deal about this new driver branch – NVIDIA’s release notes are thin on both new features and bug fixes – though I suspect this is one of those cases where we’ll find out more later.

    + +

    That said, the one major addition we do know about for this driver is that it enables support for NVIDIA’s GameWorks VR technology in a consumer driver. Along with this driver release GameWorks VR is being promoted from alpha to beta status, and with the release of a new beta SDK is being opened up to more developers and wider testing. NVIDIA has been heavily investing in VR, seeing it as a potential new market to not only further grow sales, but as a market that will require more powerful and expensive GPUs than standard consumer system builds.

    + +

    As usual, you can grab the drivers for all current desktop and mobile NVIDIA GPUs over at NVIDIA’s driver download page.

    +

    ]]>
    + http://www.anandtech.com/show/9528/nvidia-releases-35560-drivers-gameworks-vr-now-in-beta + tag:www.anandtech.com,9528:news + + + Fri, 14 Aug 2015 01:00:00 GMT +
    + + <![CDATA[HP Isn't Done With Android Just Yet - 'HP 10 G2' Tablet Certified By The FCC And The Bluetooth SIG]]> + hp5So far HP's Android tablets have been somewhat unremarkable, with the arguable exception of the Pro Slate series. Despite a lukewarm response from consumers and retailers, it looks like the company is ready to release at least one more model. A new tablet called the HP 10 G2 has been hanging out with both the FCC and the Bluetooth Special Interest Group, and spotted by Liliputing. Based on the "10 G2" name and photos, it looks like a relatively low-cost follow-up to the original HP 10.
    Read More

    HP Isn't Done With Android Just Yet - 'HP 10 G2' Tablet Certified By The FCC And The Bluetooth SIG was written by the awesome team at Android Police.



    + +
    ]]>
    + http://feedproxy.google.com/~r/AndroidPolice/~3/Rysijq9O4tw/story01.htm + http://www.androidpolice.com/?p=331389 + + + + + + + + + + + Thu, 13 Aug 2015 22:33:00 GMT +
    + + <![CDATA[Visually Impressive Shooter 'Warhammer 40,000: Freeblade' Coming This Fall To Android]]> + Freeblade_1366

    Fans of Warhammer 40,000 have put up with a lot over the years. The IP has been the basis for a great many mobile games, only some of which have been good. The newly announced Warhammer 40,000: Freeblade looks like it has some potential, just judging from the flashy gameplay trailer. Many questions remain unanswered, though.

    In this game, you'll take control of an Imperial Knight—basically a giant mech with lots of guns and stabbing weapons.

    Read More

    Visually Impressive Shooter 'Warhammer 40,000: Freeblade' Coming This Fall To Android was written by the awesome team at Android Police.



    + +
    ]]>
    + http://feedproxy.google.com/~r/AndroidPolice/~3/D0QFaFZdpqs/story01.htm + http://www.androidpolice.com/?p=331365 + + + + - - - Wed, 12 Aug 2015 01:02:00 GMT + + Thu, 13 Aug 2015 22:12:54 GMT
    - <![CDATA[[Update: Nexus 7 2013 Wi-Fi] OTA Updates Incoming For Nexus Devices To Fix Vulnerability In Stagefright]]> - nexus logo

    Last week, Google released factory images for every actively-supported Nexus except the Nexus 7 2013 LTE and Nexus Player. These images were for a new build, LMY48I, intended to patch the recently outed vulnerability that was found in Stagefright.

    Today, it appears the OTAs are beginning to hit the masses, but be warned, all these do is patch Stagefright. They contain no other fixes of any kind, so if there's some problem with your device you're hoping to have solved with this update, it's not going to happen.

    Read More

    [Update: Nexus 7 2013 Wi-Fi] OTA Updates Incoming For Nexus Devices To Fix Vulnerability In Stagefright was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/mlOlwCX7js0/story01.htm - http://www.androidpolice.com/?p=330698&uniqid=55ca98cc6b174 + <![CDATA[AT&T, Verizon, Sprint, T-Mobile, And US Cellular Announce Plans For The Galaxy S6 Edge+ And Galaxy Note 5, Best Buy Offers $200 Trade-In]]> + gsthumbIf you've been watching today's coverage of the Galaxy Note 5 and Galaxy S6 Edge+ with bated breath, you won't have to wait too long to pick one up from an American carrier. All five major US networks have confirmed that they'll be carrying Samsung's new flagships, with varying degrees of availability and pre-order status. The official release date from Samsung is August 21st, and AT&T is already selling phones.
    Read More

    AT&T, Verizon, Sprint, T-Mobile, And US Cellular Announce Plans For The Galaxy S6 Edge+ And Galaxy Note 5, Best Buy Offers $200 Trade-In was written by the awesome team at Android Police.



    + +
    ]]>
    + http://feedproxy.google.com/~r/AndroidPolice/~3/j1THNVESdAI/story01.htm + http://www.androidpolice.com/?p=331361 + + + + + + + + + + + + Thu, 13 Aug 2015 21:29:52 GMT +
    + + <![CDATA[Robinhood Free Stock Market Trading App Comes To Android]]> + Robinhood

    Using the stock market isn't free. Well, obviously. You're buying and selling stocks, after all. But on top of that, brokerage firms tend to charge fees to manage financial transactions. The Robinhood app lets you get around that fee, and now it has made its way over from iOS to Android.

    Robinhood lets you access market data and quotes in real-time. You can buy and sell stocks without the app charging you for each transaction, though SEC and FINRA regulatory fees may apply.

    Read More

    Robinhood Free Stock Market Trading App Comes To Android was written by the awesome team at Android Police.



    + +
    ]]>
    + http://feedproxy.google.com/~r/AndroidPolice/~3/ZTesF__X9WU/story01.htm + http://www.androidpolice.com/?p=331344 + + + + + + + + + + + + + Thu, 13 Aug 2015 21:03:59 GMT +
    + + <![CDATA[Meet MIT’s Beer Delivery Bots]]> + Finally, robots are useful.

    +

    The post Meet MIT’s Beer Delivery Bots appeared first on WIRED.

    ]]>
    + http://www.wired.com/2015/08/meet-mits-beer-delivery-bots/ + http://www.wired.com/?p=1835509 + + + + + + + + Thu, 13 Aug 2015 20:32:25 GMT +
    + + <![CDATA[Samsung's Insane Keyboard Cover Is Real, Will Be Available For The Note 5 And S6 Edge+]]> + samsung-keyboard-cover-note-960

    Samsung has had a lot of strange ideas in the past, but you can afford to experiment when you're raking in cash as the top Android OEM. The newly announced keyboard cover for the Note 5 and S6 Edge+ is especially weird, though. It's a case with a snap-on physical keyboard that interacts with the screen. It's also indisputably ugly.

    The rear section of the keyboard cover looks like any other cover, but there are two notches where the front keyboard section attaches when you need it.

    Read More

    Samsung's Insane Keyboard Cover Is Real, Will Be Available For The Note 5 And S6 Edge+ was written by the awesome team at Android Police.



    + +
    ]]>
    + http://feedproxy.google.com/~r/AndroidPolice/~3/-iDWBs1s27s/story01.htm + http://www.androidpolice.com/?p=331332 + + + + + + + + + + + + Thu, 13 Aug 2015 19:50:42 GMT +
    + + <![CDATA[[North American Giveaway] Win One Of Three NVIDIA SHIELD Android TV Bundles]]> + SHIELDconsole

    Today a number of great games have all become available for NVIDIA SHIELD all around the same time. To make sure that you have something to play these titles on, we're giving away three bundles of hardware. Sure, you could already play most of these games on your phone or tablet, but wouldn't you rather fire them up on and NVIDIA SHIELD console? In that past, we've called it the best Android TV device on the market.

    Read More

    [North American Giveaway] Win One Of Three NVIDIA SHIELD Android TV Bundles was written by the awesome team at Android Police.



    + +
    ]]>
    + http://feedproxy.google.com/~r/AndroidPolice/~3/e0wz_pg1POM/story01.htm + http://www.androidpolice.com/?p=331006 + + + + + + + + + + + Thu, 13 Aug 2015 19:41:06 GMT +
    + + <![CDATA[34 Best Android Wear Apps And Watch Faces From 6/16/15—8/13/15]]> + wearThere's a distinct lack of new Android Wear devices on the market right now, but perhaps you can tide yourself over with some new apps and watch faces for your faithful wrist companion. We've got a ton of new stuff as always, but even more watch faces thanks to Google's recent push with various brands and designers. Strap on your watch and get ready.

    Please wait for this page to load in full in order to see the widgets, which include ratings and pricing info.
    Read More

    34 Best Android Wear Apps And Watch Faces From 6/16/15—8/13/15 was written by the awesome team at Android Police.



    + +
    ]]>
    + http://feedproxy.google.com/~r/AndroidPolice/~3/WGSZR8ui8qI/story01.htm + http://www.androidpolice.com/?p=330998 + + + + + + + + + + + + Thu, 13 Aug 2015 19:25:51 GMT +
    + + <![CDATA[Samsung Galaxy Note 5 And S6 Edge+ Now Available From AT&T For $740 And $815—Get $300 In Bill Credit Under Certain Conditions]]> + Selection_001

    Here's something you already knew about the Galaxy Note 5 and S6 Edge+ before today's announcement—both devices are expensive. Samsung charged a ton for its massive phones before, and nothing about introducing more premium materials into this year's iterations says cheap. So you're looking at parting with uncomfortably close to a grand by the time taxes are factored into the equation.

    AT&T, for example, wants around $740 for the Galaxy Note 5 and $815 for the S6 Edge+.

    Read More

    Samsung Galaxy Note 5 And S6 Edge+ Now Available From AT&T For $740 And $815—Get $300 In Bill Credit Under Certain Conditions was written by the awesome team at Android Police.



    + +
    ]]>
    + http://feedproxy.google.com/~r/AndroidPolice/~3/FqtJgjDORvU/story01.htm + http://www.androidpolice.com/?p=331316 + + + + + + + + + + + Thu, 13 Aug 2015 19:10:57 GMT +
    + + <![CDATA[[Update: Nexus 9 LTE] OTA Updates Incoming For Nexus Devices To Fix Vulnerability In Stagefright]]> + nexus logo

    Last week, Google released factory images for every actively-supported Nexus except the Nexus 7 2013 LTE and Nexus Player. These images were for a new build, LMY48I, intended to patch the recently outed vulnerability that was found in Stagefright.

    Today, it appears the OTAs are beginning to hit the masses, but be warned, all these do is patch Stagefright. They contain no other fixes of any kind, so if there's some problem with your device you're hoping to have solved with this update, it's not going to happen.

    Read More

    [Update: Nexus 9 LTE] OTA Updates Incoming For Nexus Devices To Fix Vulnerability In Stagefright was written by the awesome team at Android Police.



    + +
    ]]>
    + http://feedproxy.google.com/~r/AndroidPolice/~3/qr3tX6Ts9hQ/story01.htm + http://www.androidpolice.com/?p=330698&uniqid=55ccec19179ad @@ -702,196 +1770,532 @@ There's no question that Blizzard is a cornerstone of the eSports world. S - Wed, 12 Aug 2015 00:47:57 GMT + Thu, 13 Aug 2015 19:08:57 GMT
    - <![CDATA[Samsung France, Romanian e-tailer post Galaxy Note, S6 edge+ pre-order page]]> - Continue reading]]> - http://androidcommunity.com/samsung-france-romanian-e-tailer-post-galaxy-note-s6-edge-pre-order-page-20150811/ - http://androidcommunity.com/?p=238776 - - - - - - - - Wed, 12 Aug 2015 00:40:43 GMT + <![CDATA[Emirates Offers the World’s Longest Commercial Flight: 17.5 Hours]]> + Emirates Offers the World’s Longest Commercial Flight: 17.5 Hours

    The rapidly growing Middle Eastern airline is launching new service to Central America, grabbing the longest flight by a few miles.

    +

    The post Emirates Offers the World’s Longest Commercial Flight: 17.5 Hours appeared first on WIRED.

    ]]>
    + http://www.wired.com/2015/08/emirates-worlds-longest-flight/ + http://www.wired.com/?p=1835506 + + + + + + Thu, 13 Aug 2015 18:13:31 GMT
    - <![CDATA[Weekly poll: Did you grab a Moto G 2015?]]> -

    - -

    Historically, the Moto G has been the best selling Motorola smartphone of all time. It's the greatest. It floats like a butterfly and stings like a bee. Or something like that, at least according to Motorola.

    - -

    In reality, the latest incarnation — the Moto G 2015 — a darn good, cheap Android phone. It's built well, performs well, and this year has a decent camera. There's no wonder the initial run of the 16GB memory model (the one you should probably buy) sold out.

    - -
    ]]>
    - http://www.androidcentral.com/weekly-poll-did-you-grab-moto-g-2015 - 48388 at http://www.androidcentral.com - - Wed, 12 Aug 2015 00:36:35 GMT + <![CDATA[Dell’s New Chromebook Might Be The Best One Yet]]> + Dell’s New Chromebook Might Be The Best One Yet

    They say it's for work, but it'll do well for anyone.

    +

    The post Dell’s New Chromebook Might Be The Best One Yet appeared first on WIRED.

    ]]>
    + http://www.wired.com/2015/08/dell-chromebook-13-work/ + http://www.wired.com/?p=1835521 + + + + + Thu, 13 Aug 2015 18:01:58 GMT
    - <![CDATA[Microsoft OneNote introduces Floatie feature – like chat heads for notes]]> - - http://www.androidauthority.com/microsoft-onenote-floatie-633150/ - http://www.androidauthority.com/?p=633150 - - - - - - - Wed, 12 Aug 2015 00:35:53 GMT + <![CDATA[The SuperSite Windows 10 How To Collection: All about Microsoft Edge]]> + With new Web browsers comes new ways of making them work for you. We've collected all our Microsoft Edge how-tos in one place. You'll have your browser working just like you want it to in no time. + +

    read more

    ]]>
    + http://winsupersite.com/windows-10/supersite-windows-10-how-collection-all-about-microsoft-edge + 58281 at http://winsupersite.com + + + + + Thu, 13 Aug 2015 17:10:00 GMT
    - <![CDATA[Rdio Music Adds 500 Local Terrestrial Radio Streams From Partner Cumulus Media]]> - imageOnline streaming music is all well and good, but if you're hankering for the good old days of sliding FM dials, Rdio wants to oblige your craving. The long-standing streaming service is adding a new section to its app called "On the Air on Rdio," which gives users access to digital streams of 500 United States radio stations. The collection of stations covers basically every major market in the county, usually with a mix of top 40, classic rock, country, sports, and news content.
    Read More

    Rdio Music Adds 500 Local Terrestrial Radio Streams From Partner Cumulus Media was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/g-E5JBRdZkg/story01.htm - http://www.androidpolice.com/?p=330915 - - - - - - - - - Wed, 12 Aug 2015 00:23:37 GMT -
    - - <![CDATA[An electropop band used fax machines to promote its new album]]> - - -Always looking for a reason to dust off your office's sad, unused fax machine? Here's one: The band YACHT used faxes to initially distribute its new album's artwork. No, really. It's part of a weird, multimedia promotion that defies all expectation...]]> - http://www.engadget.com/2015/08/11/yacht-album-cover-teased-via-fax/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/yacht-album-cover-teased-via-fax/ - - Wed, 12 Aug 2015 00:23:00 GMT - - - <![CDATA[Help blue creatures get home in Zoombinis, now on Android]]> - Continue reading]]> - http://androidcommunity.com/help-blue-creatures-get-home-in-zoombinis-now-on-android-20150811/ - http://androidcommunity.com/?p=238519 - - - - - - - Wed, 12 Aug 2015 00:00:51 GMT - - - <![CDATA[Facebook is reportedly building a breaking news notification app]]> - - -Right now, the easiest way to read breaking news on your smartphone is to download a dedicated news reader app, something like Paper or Flipboard -- but rumor has it that Facebook is working on something different. According to Business Insider, Fa...]]> - http://www.engadget.com/2015/08/11/facebook-breaking-news/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/facebook-breaking-news/ - - Tue, 11 Aug 2015 23:57:00 GMT - - - <![CDATA[Weather Time for Wear gives you the weather and all the options you might need]]> -

    - -

    Out of all the watch faces that you can currently find in the Google Play Store for your Android Wear device, weather apps are some of the most helpful at a glance. There are plenty of them out there right now, and one to take a look at is Weather Time for Wear.

    - -

    It's free with in-app purchase options that unlock the good stuff, but mostly gets the job done well. Lets take a look.

    - -

    - -

    Weather Time for Android Wear definitely has the design aspect of things down. The default screen is a blue sky with fluffy white clouds — even when that is not at all what it looks like outside — and all your information overlaid onto it. At the top of the screen you'll see the time, underneath that there is the date, and at the bottom of the screen you'll see the temperature along with an icon for weather conditions.

    - -

    The free version of Weather Time for Wear gives you access to some options, but to get the full experience you'll need to drop $2.00. All of your options are available on your phone and they are all divided up into one of several categories; Weather Settings, Look and Feel, Notification Settings, Touch Event Settings, and General Settings.

    - -

    ]]>
    - http://www.androidcentral.com/weather-time-wear-gives-you-weather-and-all-options-you-might-need - 48365 at http://www.androidcentral.com - - Tue, 11 Aug 2015 23:45:14 GMT -
    - - <![CDATA[Expansys USA discounts 16GB WiFi Nexus 9 to $290]]> -

    - -

    Expansys is currently offering a pretty good deal on the 16GB WiFi variant of the Nexus 9, discounting it to $290.

    ]]>
    - http://www.androidcentral.com/expansys-usa-discounts-16gb-wifi-nexus-9-290 - 48387 at http://www.androidcentral.com - - Tue, 11 Aug 2015 23:27:30 GMT -
    - - <![CDATA[Makerbase knows who built your favorite website]]> - - -Makerbase, a new site from Lifehacker founder Gina Trapani and former blogger Anil Dash that's being billed as the IMDb of web design, has just launched. Just as IMDb maintains archives of the people that help produce television shows and movies, M...]]> - http://www.engadget.com/2015/08/11/makerbase-knows-who-built-your-favorite-website/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/makerbase-knows-who-built-your-favorite-website/ - - Tue, 11 Aug 2015 23:24:00 GMT - - - <![CDATA[The Sequence is a unique, complicated puzzle game that will make you go crazy]]> - Continue reading]]> - http://androidcommunity.com/the-sequence-is-a-unique-complicated-puzzle-game-that-will-make-you-go-crazy-20150811/ - http://androidcommunity.com/?p=238688 - - - - - - - - Tue, 11 Aug 2015 23:20:14 GMT - - - <![CDATA[BDUK reaches three million homes and businesses]]> - - http://www.computerweekly.com/news/4500251499/BDUK-reaches-three-million-homes-and-businesses - http://www.computerweekly.com/news/4500251499/BDUK-reaches-three-million-homes-and-businesses + <![CDATA[Government warned to be cautious over raising salary thresholds for migrant workers]]> + + http://www.computerweekly.com/news/4500251665/Government-warned-to-be-cautious-over-raising-salary-thresholds-for-migrant-workers + http://www.computerweekly.com/news/4500251665/Government-warned-to-be-cautious-over-raising-salary-thresholds-for-migrant-workers - Tue, 11 Aug 2015 23:01:52 GMT + Thu, 13 Aug 2015 16:30:50 GMT - <![CDATA[Netflix is making 'Mascots,' a film from Christopher Guest]]> - - - -Netflix has acquired yet another movie: Mascots. Behind the full-length project, scheduled to be released in 2016, is Christopher Guest, best known for his acting and directing in comedies like A Mighty Wind, Best In Show and For Your Consideratio...]]> - http://www.engadget.com/2015/08/11/netflix-mascots-christopher-guest/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/netflix-mascots-christopher-guest/ - - Tue, 11 Aug 2015 22:43:00 GMT + <![CDATA[Samsung Breaks Out a Keyboard Case for its New Phones]]> + Samsung Breaks Out a Keyboard Case for its New Phones

    Bring on the button mashing.

    +

    The post Samsung Breaks Out a Keyboard Case for its New Phones appeared first on WIRED.

    ]]>
    + http://www.wired.com/2015/08/samsung-breaks-new-keyboard-case-new-phones/ + http://www.wired.com/?p=1835419 + + + + + + + + + Thu, 13 Aug 2015 16:29:14 GMT
    - <![CDATA[Time travel to the Bitstone past in this updated Bitcoin Billionaire game]]> - Continue reading]]> - http://androidcommunity.com/time-travel-to-the-bitstone-past-in-this-updated-bitcoin-billionaire-game-20150811/ - http://androidcommunity.com/?p=238683 - - - - - - - - - Tue, 11 Aug 2015 22:40:13 GMT + <![CDATA[CIO interview: David Bulman, interim CIO, Wellcome Trust]]> + + http://www.computerweekly.com/news/4500251288/CIO-interview-David-Bulman-interim-CIO-Wellcome-Trust + http://www.computerweekly.com/news/4500251288/CIO-interview-David-Bulman-interim-CIO-Wellcome-Trust + + Thu, 13 Aug 2015 16:15:27 GMT - <![CDATA[LastPass is now free on mobile, but cross-device syncing costs extra]]> - + <![CDATA[Samsung Has Two Big New Phones, and Even Bigger Ideas]]> + Samsung Has Two Big New Phones, and Even Bigger Ideas

    The Galaxy Note 5 and Galaxy S6 Edge+ each have a single feature Samsung hopes will set them apart.

    +

    The post Samsung Has Two Big New Phones, and Even Bigger Ideas appeared first on WIRED.

    ]]>
    + http://www.wired.com/2015/08/samsung-galaxy-note-5-s6-edge-plus/ + http://www.wired.com/?p=1835031 + + + + + + + + + Thu, 13 Aug 2015 15:00:56 GMT +
    + + <![CDATA[Business not keeping up with rapid changes in cyber attacks, says Proofpoint]]> + + http://www.computerweekly.com/news/4500251669/Business-not-keeping-up-with-rapid-changes-in-cyber-attacks-says-Proofpoint + http://www.computerweekly.com/news/4500251669/Business-not-keeping-up-with-rapid-changes-in-cyber-attacks-says-Proofpoint + + Thu, 13 Aug 2015 15:00:44 GMT + + + <![CDATA[Hands On With the Samsung Galaxy Note 5 and Samsung Galaxy S6 edge+]]> + Today, Samsung is announcing the next generation of their Galaxy-brand phablets, the Galaxy Note 5 and the Galaxy S6 edge+. Samsung’s phablets have been one of their greatest smartphone success stories, finding traction in a market when many thought there wouldn’t be a place for such a large phone. And while you will never see some competitors directly admit to it, products like the Note series have legitimized the phablet form factor and required that the competition catch up as well, making the phablet form factor as much of a home court for Samsung as there can be.

    -If you've been wanting to play around with LastPass on your mobile device without paying the $12 annual fee for premium support, today is your day: the password manager just added mobile to its free tier. What's the catch? You only get it on mobile...]]>
    - http://www.engadget.com/2015/08/11/lastpass-is-now-free-on-mobile-but-cross-device-syncing-costs-e/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/lastpass-is-now-free-on-mobile-but-cross-device-syncing-costs-e/ - - Tue, 11 Aug 2015 22:27:00 GMT +

    Starting with the 2014 models, Samsung introduced two different phablets, the Note 4 and the simply titled Note Edge. This year Samsung is retaining the dual phablet approach, however in the case of the Edge product Samsung has shifted gears on what they want to do. For 2015 Samsung seems to be going after a new audience in the form of the Galaxy S6 edge+, which is a more distinct derivative of the Note 5 platform with some greater feature changes than just a curved screen. To understand what I mean, read on for the full article.

    ]]> + http://www.anandtech.com/show/9502/hands-on-with-the-galaxy-note-5-and-galaxy-s6-edge-plus + tag:www.anandtech.com,9502:news + + + Thu, 13 Aug 2015 15:00:00 GMT +
    + + <![CDATA[Windows 10 Spotlight Makes Its Debut for Windows Home]]> + Announced at Build 2015, the Windows Spotlight feature has now shown up for Windows 10 Home edition users. + +

    read more

    ]]>
    + http://winsupersite.com/windows-10/windows-10-spotlight-makes-its-debut-windows-home + 58271 at http://winsupersite.com + + Thu, 13 Aug 2015 14:51:00 GMT +
    + + <![CDATA[iClever Bluetooth Stereo Headset (IC-BTH01) review]]> + + http://feedproxy.google.com/~r/TheGadgeteer/~3/etWRfKD7oy4/ + http://the-gadgeteer.com?p=182885&preview_id=182885 + + + + + + Thu, 13 Aug 2015 14:00:21 GMT + + + <![CDATA[Windows 10 is Turning Me Back into a Windows 7 User]]> + Windows 10 is a mixture of Windows 7 and Windows 8, but its weighted toward the Windows 7 user. + +

    read more

    ]]>
    + http://winsupersite.com/windows-10/windows-10-turning-me-back-windows-7-user + 58261 at http://winsupersite.com + + Thu, 13 Aug 2015 13:54:00 GMT +
    + + <![CDATA[Gloucester City Homes embarks on VDI-led tech transformation with Exponential-e]]> + + http://www.computerweekly.com/news/4500251636/Gloucester-City-Homes-embarks-on-VDI-led-tech-transformation-with-Exponential-e + http://www.computerweekly.com/news/4500251636/Gloucester-City-Homes-embarks-on-VDI-led-tech-transformation-with-Exponential-e + + Thu, 13 Aug 2015 13:45:54 GMT + + + <![CDATA[Interview: Government digital chief Mike Bracken – why I quit]]> + + http://www.computerweekly.com/news/4500251662/Interview-Government-digital-chief-Mike-Bracken-why-I-quit + http://www.computerweekly.com/news/4500251662/Interview-Government-digital-chief-Mike-Bracken-why-I-quit + + Thu, 13 Aug 2015 13:20:18 GMT + + + <![CDATA[Sigma rear brake light – light and bright]]> + + http://feedproxy.google.com/~r/TheGadgeteer/~3/cFH1QtlO8rY/ + http://the-gadgeteer.com/?p=183537 + + + + + Thu, 13 Aug 2015 13:00:57 GMT + + + <![CDATA[Ofcom launches mobile network coverage checker]]> + + http://www.computerweekly.com/news/4500251631/Ofcom-launches-mobile-network-coverage-checker + http://www.computerweekly.com/news/4500251631/Ofcom-launches-mobile-network-coverage-checker + + Thu, 13 Aug 2015 12:45:57 GMT + + + <![CDATA[Samsung SSD Update: 48-layer 256Gbit TLC 3D NAND & Three New TLC SSDs Announced]]> +

    When Samsung took the stage at the 2015 Flash Memory Summit, they admittedly didn't deliver any bombshell announcements on the scale of the Intel/Micron 3D XPoint surprise, but they still had a lot to talk about.

    + +

    We knew that Samsung's third generation of V-NAND/3D NAND was on the way with mass production scheduled for the second half of this year. Samsung has now disclosed that mass production is starting this month, and that it's a 48-layer design with a 256Gb TLC being the first die announced. Samsung's current second-generation 3D NAND is a 32-layer design available as 128Gb TLC or 128Gb MLC.

    + +

    With mass production imminent, Samsung has ensured that neither SK Hynix nor the Toshiba/SanDisk joint venture will be able to leapfrog them with their respective 48-layer 3D NAND designs, both scheduled for mass production starting in 2016.

    + +

    Samsung says the new 256Gb TLC will have about 30% lower power consumption than an equivalent capacity of their current 128Gb TLC, and a switch to a dual-plane organization ensures that one 256Gb die will perform at least as well as a pair of the current 128Gb dies. Density is improved by about 40% while production costs only increased slightly, so price per GB will be going down. At FMS, Samsung is pushing the idea that their 3D NAND TLC is ready to replace MLC for most uses, and they're optimistic about scaling up their 3D NAND layer count past 100.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    New Samsung 48-Layer TLC SSDs
    DrivePM953PM1633PM1725
    Form FactorNVMe over M.2 22110 and 2.5"2.5" SAS 12Gb/sNVMe PCIe HHHL card
    Capacities480GB, 960GB, 1.92TB (2.5" only)480GB, 960GB, 1.92TB, 3.84TB3.2TB, 6.4TB
    Sequential Read?1,100 MB/s5,500 MB/s
    Sequential Write?1,000 MB/s1,800 MB/s
    4kB Random Read IOPS?160k1,000k
    4kB Random Write IOPS?18k120k
    Endurance Rating??5 DWPD (6.4 TB model)
    + +

    Samsung also shared information about three upcoming drives, all using TLC though not necessarily the new 48-layer parts. The PM1633 Enterprise SAS drive was previewed at CES in January and is intended for read-heavy workloads. A follow-on PM1633a model was mentioned to use the new 48-layer TLC to reach 15.36TB capacity, but we don't have any other information about that update. The PM953 is a enterprise NVMe drive in M.2 or 2.5" form factors, and is the counterpart to the MLC-based SM951. Of particular interest, the M.2 version is using the M.2 22110 form factor (22mm x 110mm, the maximum length for M.2), with Samsung using the extra space to implement power loss protection.

    + +

    Meanwhile the PM1725 is a fast multi-TB PCIe expansion card that Samsung intends to use to challenge the assumptions about what uses TLC is suited for. Relatively speaking it appears to be intended for workloads that aren't very write-heavy, but it still manages 120k IOPS for writes. That just looks small compared to 1M IOPS for reads and a sequential read speed of 5.5GB/s.

    + +

    All three drives are intended for OEMs, but the PM953 will probably find its way into the retail channel just like the SM951.

    + +

    Finally, along with Samsung's new 3D NAND appearing in the afformentioned new drives, it will also be appearing in at least one of their existing drives. The 850 EVO, Samsung's current consumer TLC drive, will apparently be getting an update to use the new 48-layer TLC, though it's not clear if this will be new capacities and/or a wholesale NAND update.

    +

    ]]>
    + http://www.anandtech.com/show/9524/samsung-ssd-update-48layer-tlc-3d-nand-three-new-tlcbased-ssds + tag:www.anandtech.com,9524:news + + + Thu, 13 Aug 2015 12:30:00 GMT +
    + + <![CDATA[Plantronics headphones, Incase backpack, BBQ Dragon and more – Review updates]]> + + http://feedproxy.google.com/~r/TheGadgeteer/~3/gFGlofWFrQo/ + http://the-gadgeteer.com/?p=183517 + + + + Thu, 13 Aug 2015 12:00:38 GMT + + + <![CDATA[Troubled HTC to restructure as smartphone shipments plummet]]> + + http://www.computerweekly.com/news/4500251638/Troubled-HTC-to-restructure-as-smartphone-shipments-plummet + http://www.computerweekly.com/news/4500251638/Troubled-HTC-to-restructure-as-smartphone-shipments-plummet + + Thu, 13 Aug 2015 11:43:09 GMT + + + <![CDATA[Sharp increase in students taking computing A-level]]> + + http://www.computerweekly.com/news/4500251632/Sharp-increase-in-students-taking-computing-A-level + http://www.computerweekly.com/news/4500251632/Sharp-increase-in-students-taking-computing-A-level + + Thu, 13 Aug 2015 11:11:39 GMT + + + <![CDATA[Driving digital productivity in the UK]]> + + http://www.computerweekly.com/opinion/Driving-digital-productivity-in-the-UK + http://www.computerweekly.com/opinion/Driving-digital-productivity-in-the-UK + + Thu, 13 Aug 2015 11:10:57 GMT + + + <![CDATA[TFL still wasting millions on telecoms despite IIPAG criticism]]> + + http://www.computerweekly.com/news/4500251595/TFL-still-wasting-millions-on-telecoms-despite-IIPAG-criticism + http://www.computerweekly.com/news/4500251595/TFL-still-wasting-millions-on-telecoms-despite-IIPAG-criticism + + Thu, 13 Aug 2015 10:30:52 GMT + + + <![CDATA[Demand for all-flash storage to accelerate in Australia and New Zealand]]> + + http://www.computerweekly.com/feature/Demand-for-all-flash-storage-to-accelerate-in-ANZ + http://www.computerweekly.com/feature/Demand-for-all-flash-storage-to-accelerate-in-ANZ + + Thu, 13 Aug 2015 09:59:20 GMT + + + <![CDATA[Rapid7 seeks greater security collaboration with technology firms]]> + + http://www.computerweekly.com/news/4500251626/Rapid7-seeks-greater-security-collaboration-with-technology-firms + http://www.computerweekly.com/news/4500251626/Rapid7-seeks-greater-security-collaboration-with-technology-firms + + Thu, 13 Aug 2015 09:33:44 GMT + + + <![CDATA[Short Takes Daily: What went on in the world of Microsoft on Wednesday, August 12, 2015]]> + + + + + + Lisa Schmeiser + + + +
    Today in the news: We have a hands-on look at Stardock, we calm someone's panic over Windows 10 ushering in the end times, and we look at what's new in Windows 10 Mobile Build 10512.
    + +

    read more

    ]]>
    + http://winsupersite.com/windows/short-takes-daily-what-went-world-microsoft-wednesday-august-12-2015 + 58251 at http://winsupersite.com + + Wed, 12 Aug 2015 21:39:00 GMT +
    + + <![CDATA[Polar Opposites]]> +

    Compression and Encryption have much more in common than you could have guessed.

    ]]>
    + https://medium.com/google-developers/polar-opposites-50bccd39e09?source=rss----2e5ce7f173a5---4 + https://medium.com/p/50bccd39e09 + + Wed, 12 Aug 2015 20:03:09 GMT +
    + + <![CDATA[Windows 10 Mobile Build 10512 hits Insider Fast Ring for testing]]> + Testing can now continue on Windows 10 Mobile as Microsoft releases its first new build in over a month to Insiders who are members of the testing Fast Ring. + +

    read more

    ]]>
    + http://winsupersite.com/windows-10/windows-10-mobile-build-10512-hits-insider-fast-ring-testing + 58241 at http://winsupersite.com + + + + + + + Wed, 12 Aug 2015 18:41:00 GMT +
    + + <![CDATA[Take a tour of the Start10 menu from Stardock]]> + Stardock Software has released a follow on to their popular Start8 software that allowed users to customize and configure a Windows 7 style Start Menu on Windows 8. Start10 allows users to do the same thing on the recently released Windows 10. + +

    read more

    ]]>
    + http://winsupersite.com/windows-10/start10-windows-10-start-menu-replacement-stardock + 58191 at http://winsupersite.com + + + + + + Wed, 12 Aug 2015 18:00:00 GMT +
    + + <![CDATA[New partner add-ins revealed in Outlook.com's expanded roll-out]]> + Microsoft is picking up the pace for the roll out of the updated Outlook.com by allowing in a larger group of users as they also expand with new partner add-ins for Outlook. + +

    read more

    ]]>
    + http://winsupersite.com/outlookcom/roll-out-new-outlookcom-expands-and-new-partner-add-ins-revealed + 58221 at http://winsupersite.com + + + + + + Wed, 12 Aug 2015 17:29:00 GMT +
    + + <![CDATA[Q: Is Windows 10 really the end for normal computer users?]]> + + + + + + Fred Langa + + + +
    On Wednesdays, we'll be featuring an abridged Q&A from Fred Langa's LANGALIST, a feature available exclusively to paid subscribers of the Windows Secrets newsletter. Today's Q&A: Why would anyone possibly WANT to use Windows 10?
    + +

    read more

    ]]>
    + http://winsupersite.com/windows-10/q-windows-10-really-end-normal-computer-users + 58231 at http://winsupersite.com + + + + + Wed, 12 Aug 2015 16:13:00 GMT +
    + + <![CDATA[Microsoft releases a Remote Desktop Preview app for Mac]]> + Microsoft is inviting Mac users to participate in a new preview program for their beta remote desktop client for Mac. + +

    read more

    ]]>
    + http://winsupersite.com/apple/microsoft-releases-remote-desktop-preview-app-mac + 58211 at http://winsupersite.com + + + + + + + Wed, 12 Aug 2015 13:54:00 GMT +
    + + <![CDATA[Qualcomm Details the Adreno 530 GPU and ISP inside the Snapdragon 820]]> +

    Snapdragon 820 is still a mystery as far as official information from Qualcomm goes. However, today Qualcomm has given a bit of insight into their upcoming SoC. While there's still no information about the CPU portion featuring Qualcomm's custom 64-bit cores known as 'Kryo', there are some details about the Adreno 510 and 530 GPUs, as well as Qualcomm's Spectra image signal processor.

    + +

    + +

    Because Adreno 530 is their new flagship GPU, Qualcomm's press release focuses more on the 530 than the 510. The performance figures released by Qualcomm describe Adreno 530 as being 40% faster than Adreno 430 on average, while also consuming 40% less power. This result is described as an average of "the top graphics benchmarks", and while it's still generally a good idea to take vendor provided numbers with a grain of salt, if the power and performance gains over Adreno 430 are anywhere in the ballpark of Qualcomm's 40% figure then Adreno 530 should end up being quite impressive.

    + +

    + +

    On the API side, Adreno 500 series GPUs will support OpenGL ES 3.1 + AEP (Android Extension Pack), Renderscript, Vulkan, and OpenCL 2.0. With OpenCL 2.0 comes support for Shared Virtual Memory (SVP), which allows an OpenCL host program and a device's kernel to share a virtual address space so access to data structures like lists and trees can be easily shared between the host and GPU. Adreno 530 has varying improvements to GPGPU performance when compared to Adreno 430, but Qualcomm's slides show video processing as demonstrating the greatest improvement with a 2.5x increase in compute performance. This is also the area where efficiency gains for generational improvements typically happen, so we expect fixed-function codec support although this information is not yet provided.

    + +

    As for the ISP, it's still the case that mobile image signal processors are black boxes. Qualcomm is stating that their Spectra ISP in Snapdragon 820 will be able to support 3 simultaneous cameras at up to 25MP and at 30fps with no shutter lag. The Spectra ISP will also use MIPI's higher bandwidth C-PHY serial interface, which supports the enhanced camera support. As well as this, new developer and user-facing features include support and APIs for depth maps and using dual cameras to perform refocusing or other visual effects - because Qualcomm is just the SoC manufacturer, it is up to the smartphone OEMs to implement dual-camera/depth-maps as a feature as well.

    + +

    According to Qualcomm, Snapdragon 820 will start showing up in devices during the first half of 2016. Hopefully between now and then there's more information from Qualcomm about the other aspects of their new SoC, including their Kryo custom CPU core. In Q1 we will be at Mobile World Congress, so we may see more information at that time.

    + +

    Source: Qualcomm, slides via Slashgear

    +

    ]]>
    + http://www.anandtech.com/show/9522/qualcomm-adreno-530-510-snapdragon-820 + tag:www.anandtech.com,9522:news + + + Wed, 12 Aug 2015 13:35:00 GMT +
    + + <![CDATA[Windows Update Delivery Optimization Defaults by Edition]]> + Windows Update Delivery Optimization in Windows 10 is turned on by default, but there are differences between editions. + +

    read more

    ]]>
    + http://winsupersite.com/windows-10/windows-update-delivery-optimization-defaults-edition + 58201 at http://winsupersite.com + + Wed, 12 Aug 2015 13:26:00 GMT +
    + + <![CDATA[Sumo Sultan big bean bag chair review]]> + + http://feedproxy.google.com/~r/TheGadgeteer/~3/NfHCYM0SrEM/ + http://the-gadgeteer.com/?p=182922 + + + + + Wed, 12 Aug 2015 13:00:54 GMT + + + <![CDATA[Toshiba Brings Through-Silicon Vias to NAND Flash]]> +

    At Flash Memory Summit this week, Toshiba is showing off a NAND flash device packaged using through-silicon vias rather than traditional wire-bonded connections.

    + +

    The NAND flash currently on the market is typically produced in the form of a die with a capacity like 128Gb (16GB). The popular SSD form factors don't have enough surface area to fit dozens of those chips, and SSD controllers don't have the pin count to connect to that many independently, so several chips are stacked in a single postage-stamp sized package. The traditional way of connecting the individual dies in a stack is to use the same technique as for a single-die package: bonding a thin gold wire between the edge of the die and the package substrate or external pins. The downsides are that it requires a lot of wires and the edges of the dies in the stack need to be exposed somehow, either by staggering them or by putting a spacer between each layer.

    + +

    + +

    An alternative packaging method is to design the dies to participate in the stacking, by including electrical conductors that penetrate the entire thickness of the silicon die so that they can make contact with the dies above and below it in the stack, essentially tunneling right through each die. These through-silicon vias (TSVs) can then form a shared bus to carry signals from any of the dies in the stack out to the last die, which is the only one with the external connections.

    + +

    + +

    Chip stacking using TSVs requires the dies to be aligned and stacked without spacers, which makes the whole stack a bit more compact. Since TSVs can be placed anywhere on the chip rather than just at the edge, it's easy to implement a wide data bus and communication within the stack can be very fast or low-power due to the short distances involved. These advantages have been very attractive for packaging DRAM, most notably in the form of the HBM stacks used by AMD's R9 Fury and R9 Nano video cards.

    + +

    Toshiba's demonstration is a 16-high stack of 128Gb dies in a BGA-152 package measuring 14mm by 18mm and 1.9mm thick, and an 8-high stack that's 1.35mm thick. Those numbers are all typical even for wire-bonded stacks. The speed (1Gb/s) and operating voltages (1.2V for I/O and 1.8V core) are what we would expect from a next-generation NAND interface, but the claimed 50% power reduction is a very nice improvement for a change that leaves the flash memory cells themselves unmodified.

    + +

    Toshiba hasn't said whether the dies being stacked are their current 15nm planar NAND or their forthcoming 3D NAND, nor have they said when modules using TSVs will be hitting the market. The most compelling applications would be to use TSVs to stack flash atop a controller chip in an eMMC product or atop an SoC, but the power savings would be appreciated almost everywhere. If the use of TSVs allows economically stacking more than 16 dies, it could enable a dramatic increase in the density of SSDs.

    +

    ]]>
    + http://www.anandtech.com/show/9520/toshiba-brings-throughsilicon-vias-to-nand-flash + tag:www.anandtech.com,9520:news + + + Wed, 12 Aug 2015 12:01:00 GMT +
    + + <![CDATA[A 10,000 mAh portable battery that utilizes Qualcomm Quick Charge 2.0]]> + + http://feedproxy.google.com/~r/TheGadgeteer/~3/-rmk4zorj2o/ + http://the-gadgeteer.com/?p=183449 + + + + + Wed, 12 Aug 2015 12:00:46 GMT + + + <![CDATA[Advatronix Nimbus 400 File Server Review]]> + Small businesses and power users often need the flexibility offered by a file server when compared to a dedicated NAS. This is where storage servers based on Microsoft's Windows Server offerings and systems based on various Linux and BSD distributions come into play. These servers can be bought as an appliance or assembled in a do-it-yourself (DIY) fashion. Today, we will be looking at a system based on the former approach - the Advatronix Nimbus 400.

    ]]>
    + http://www.anandtech.com/show/9519/advatronix-nimbus-400-file-server-review + tag:www.anandtech.com,9519:news + + + Wed, 12 Aug 2015 12:00:00 GMT +
    + + <![CDATA[Build-A-Rig Round 1: The Winners]]> +

    As our final update to what has been a very successful first round for our Build-A-Rig project, last week we held the drawing to determine the winners. Each of our winners is taking home a $1500 gaming system, designed by Zotac and Corsair respectively. So without further ado:

    + + + +

    + +

    Congratulations to our two winners, and the first winners for the Build-A-Rig project. And be sure to check back later this month when we kick off Build-A-Rig round 2, where we will be putting together and giving away a pair of small form factor systems.

    +

    ]]>
    + http://www.anandtech.com/show/9521/buildarig-round-1-the-winners + tag:www.anandtech.com,9521:news + + + Wed, 12 Aug 2015 12:00:00 GMT
    <![CDATA[Julie’s gadget diary – Why I am thinking about switching back to the iPhone]]> @@ -903,29 +2307,6 @@ If you've been wanting to play around with LastPass on your mobile device w Tue, 11 Aug 2015 22:14:25 GMT - - <![CDATA[Indie games are vast, varied and very 80s in this Megabooth trailer]]> - - -There is no single definition of an "indie" video game. "Indie" doesn't mean free, cheap, mobile, 8-bit, 3D, platformer, shooter or any other thing. Thanks to the recent, rapid evolution of game-making technologies, more people than ever are able t...]]> - http://www.engadget.com/2015/08/11/indie-megabooth-pax-prime-2015/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/indie-megabooth-pax-prime-2015/ - - Tue, 11 Aug 2015 22:01:00 GMT - - - <![CDATA[ASUS ZenFone Go coming soon, already spotted on Flipkart]]> - Continue reading]]> - http://androidcommunity.com/asus-zenfone-go-coming-soon-already-spotted-on-flipkart-20150811/ - http://androidcommunity.com/?p=238649 - - - - - - - Tue, 11 Aug 2015 22:00:56 GMT - <![CDATA[Short Takes Daily: What went on in the world of Microsoft on Tuesday, August 11, 2015]]> @@ -945,70 +2326,6 @@ There is no single definition of an "indie" video game. "Indie&qu Tue, 11 Aug 2015 21:39:00 GMT - - <![CDATA[Surviving the Def Con hacker conference]]> - - -The phrase I saw and heard over and over again while talking to other journalists and security researchers about the Def Con hacker convention was "hostile environment." Not physically hostile; the attendees and staff were extremely nice. The hosti...]]> - http://www.engadget.com/2015/08/11/surviving-def-con/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/surviving-def-con/ - - Tue, 11 Aug 2015 21:34:00 GMT - - - <![CDATA[The Blue Screen of Death can be on your smartwatch (sort of)]]> - Continue reading]]> - http://androidcommunity.com/the-blue-screen-of-death-can-be-on-your-smartwatch-sort-of-20150811/ - http://androidcommunity.com/?p=238700 - - - - - - - Tue, 11 Aug 2015 21:20:44 GMT - - - <![CDATA[MIT team gets us one step closer to robot bartenders]]> - - -Sure, we've seen machines that can mix drinks with the help of an app and robot bartenders that can create cocktails out of Keurig-esque pods, but they all require you to actually push the control buttons and carry your own beverages. The horror! F...]]> - http://www.engadget.com/2015/08/11/mit-team-gets-us-one-step-closer-to-robot-bartenders/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/mit-team-gets-us-one-step-closer-to-robot-bartenders/ - - Tue, 11 Aug 2015 21:08:00 GMT - - - <![CDATA[Moto G 2015 accessibility options]]> -

    - -

    Android phones have come a long way in the accessibility department, and the Moto G 2015 is no exception. Using the features and tools Google has provided for Android Lollipop, the Moto G 2015 has plenty of options for those with trouble seeing or hearing, and even those of us with motion control issues.

    - -

    Being there is fine, but knowing how to use them is the important part. that's where we can help. Have a gander at the Moto G 2015 accessibility options.

    - -
    ]]>
    - http://www.androidcentral.com/moto-g-2015-accessibility-options - 48381 at http://www.androidcentral.com - - Tue, 11 Aug 2015 21:01:23 GMT -
    - - <![CDATA[Logitech Updates Harmony App With Support For The August Smart Lock, Ecobee Thermostat, LIFX Light Bulbs, And Insteon]]> - Selection_001

    Some homes are smart, and the Logitech Harmony serves as their brain. It provides a single location to control all the things, assuming of course that the products are supported. The latest update adds quite a few more to the list ranging from door locks to thermostats and a few things in between. Logitech Updates Harmony App With Support For The August Smart Lock, Ecobee Thermostat, LIFX Light Bulbs, And Insteon

    The new additions include the August Smart Lock (pictured above) that provides remote control over your doors.

    Read More

    Logitech Updates Harmony App With Support For The August Smart Lock, Ecobee Thermostat, LIFX Light Bulbs, And Insteon was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/HdNKxQge-H0/story01.htm - http://www.androidpolice.com/?p=330874 - - - - - - - - - Tue, 11 Aug 2015 21:00:30 GMT -
    <![CDATA[SanDisk Announces Second Generation CloudSpeed Ultra SATA Enterprise SSD]]>

    At Flash Memory Summit today SanDisk announced the second generation of their CloudSpeed Ultra enterprise drive. This is the sibling to the gen. 2 CloudSpeed Eco that was announced in June.

    @@ -1072,2122 +2389,12 @@ Sure, we've seen machines that can mix drinks with the help of an app and r

    SanDisk is already supplying the CloudSpeed Ultra gen. 2 to several major customers for large-scale deployments and it will be more broadly available later in 2015, where it will be competing against drives like Samsung's SM863 and Intel's DC S3610. Pricing will be under $1/GB, but we don't know by how much. It probably won't be undercut by Intel's DC S3610, but to be competitive it will need to be down near Samsung's $0.66/GB for the SM863.

    -

    ]]>
    +

    ]]> http://www.anandtech.com/show/9517/sandisk-announces-second-generation-cloudspeed-ultra-sata-enterprise-ssd tag:www.anandtech.com,9517:news Tue, 11 Aug 2015 21:00:00 GMT
    - - <![CDATA[Microsoft OneNote Adds 'Floatie' Feature, An Unobtrusive Shortcut For Jotting Down Notes While Using Any App]]> - OneNoteThumb

    The latest updates to Microsoft's OneNote app have taken advantage of an ability granted to it by the openness of Android OS: the ability to place an overlay on top of other running apps. Similar to Facebook Messenger's chat heads UI, OneNote now has an opt-in feature called "floatie" that remains accessible while you use non-OneNote apps. The idea is that inspiration for notes may come at any time and you may not want to leave the app you're in to do it.

    Read More

    Microsoft OneNote Adds 'Floatie' Feature, An Unobtrusive Shortcut For Jotting Down Notes While Using Any App was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/uu38ss0N_84/story01.htm - http://www.androidpolice.com/?p=330865 - - - - - - - - - - Tue, 11 Aug 2015 20:50:05 GMT -
    - - <![CDATA[Facebook offers up its autoplay video ads to other apps]]> - - -If you're already annoyed with the autoplay video ads in your Facebook timeline, you might want to brace yourself. The social network is opening up that advertising tech to outside apps, or more specifically, to publishers who leverage Menlo Park's...]]> - http://www.engadget.com/2015/08/11/facebook-autoplay-ads-third-party-apps/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/facebook-autoplay-ads-third-party-apps/ - - Tue, 11 Aug 2015 20:44:00 GMT - - - <![CDATA[Huawei Watch apparently just “round the corner”]]> - Continue reading]]> - http://androidcommunity.com/huawei-watch-apparently-just-round-the-corner-20150811/ - http://androidcommunity.com/?p=238751 - - - - - - - Tue, 11 Aug 2015 20:40:41 GMT - - - <![CDATA[VR pop-up studio will help journalists track online shaming]]> - - -It doesn't take long for social media to become antisocial. A tactless tweet, an inappropriate picture or even a mundane status update can create the perfect storm for online shaming. In an attempt to convert those rabid online tendencies into oppo...]]> - http://www.engadget.com/2015/08/11/vr-pop-up-studio-will-help-journalists-track-online-shaming/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/vr-pop-up-studio-will-help-journalists-track-online-shaming/ - - Tue, 11 Aug 2015 20:20:00 GMT - - - <![CDATA[Engadget Live hits Los Angeles next week!]]> - - -Last year, we had a lot of fun at Engadget Live Los Angeles and now we're gearing up to do it all over again. Next Friday, August 21st, we'll take over Exchange LA from 7PM to 10PM and give readers like you a chance to experience the future of tech...]]> - http://www.engadget.com/2015/08/11/engadget-live-los-angeles-august-21/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/engadget-live-los-angeles-august-21/ - - Tue, 11 Aug 2015 20:05:00 GMT - - - <![CDATA[Panasonic rolls out Eluga Icon Android phone, now listed on Amazon India]]> - Continue reading]]> - http://androidcommunity.com/panasonic-rolls-out-eluga-icon-android-phone-now-listed-on-amazon-india-20150811/ - http://androidcommunity.com/?p=238636 - - - - - - - - Tue, 11 Aug 2015 20:00:06 GMT - - - <![CDATA[Firefox Stable Release Is Updated To v40 With Tweaked Forward/Back Navigation, Better Malware Protection, And Other Minor Improvements]]> - firefox

    Keeping to their normal rapid release schedule, Mozilla published v40 of the stable release of Firefox to the Play Store today. The biggest user-facing change in the update is one that was also present in the beta version of v40, allowing you to long press the forward or back buttons to see a list of your recently visited pages. Here's a quick look at how that works:

    nexus2cee_2015-07-03-18_11_32

    This is the sort of thing that only catches your attention when there aren't any other major changes, but this is one of those times.

    Read More

    Firefox Stable Release Is Updated To v40 With Tweaked Forward/Back Navigation, Better Malware Protection, And Other Minor Improvements was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/GY-rDTGjQ9E/story01.htm - http://www.androidpolice.com/?p=330852 - - - - - - - - - - Tue, 11 Aug 2015 19:50:22 GMT -
    - - <![CDATA[Check out Russell live tonight on TWiT's All About Android show]]> -

    - -

    Our Russell Holly will be joining the TWiT team on tonight's All About Android show, and you can tune in and watch it live. Starting at 5 p.m. PDT, or 8 p.m for those on the East Coast, you can check out all of the conversation as it happens.

    ]]>
    - http://www.androidcentral.com/check-out-russell-he-appears-live-tonight-twits-all-about-android-show - 48382 at http://www.androidcentral.com - - Tue, 11 Aug 2015 19:48:56 GMT -
    - - <![CDATA[The PS Vita of Steam Machines arrives in 2016 for $299]]> - - -The Steam Machine invasion is happening this fall. But while these computers are said to be more powerful than traditional consoles, such as the Xbox One or PlayStation 4, none of them are exactly portable. Smach Zero's device, however, is. Formerl...]]> - http://www.engadget.com/2015/08/11/steam-machine-steamboy-smach-zero/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/steam-machine-steamboy-smach-zero/ - - Tue, 11 Aug 2015 19:48:00 GMT - - - <![CDATA[Rite Aid Will Officially Accept Google Wallet, And Eventually Android Pay, Starting August 15th]]> - Wallet-ThumbThe idea of paying using your phone may be exciting, but that's all it will ever be until more stores start playing along. Today Rite Aid announced that you will soon be able to add its nearly 4600 stores to the list. Starting August 15th, it will accept Google Wallet NFC payments in stores. It will also take tap and pay credit cards.

    That's right, it'll be like you're shopping at Walgreens.

    Read More

    Rite Aid Will Officially Accept Google Wallet, And Eventually Android Pay, Starting August 15th was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/4QQu3IoEi1A/story01.htm - http://www.androidpolice.com/?p=330851 - - - - - - - - - - - Tue, 11 Aug 2015 19:41:59 GMT -
    - - <![CDATA[VR Gets the Simple, Hands-Free Head Wear It Deserves]]> - VR Gets the Simple, Hands-Free Head Wear It Deserves

    That's one way to do it.

    -

    The post VR Gets the Simple, Hands-Free Head Wear It Deserves appeared first on WIRED.

    ]]>
    - http://www.wired.com/2015/08/vr-gets-simple-hands-free-head-wear-deserves/ - http://www.wired.com/?p=1834036 - - - - - Tue, 11 Aug 2015 19:33:17 GMT -
    - - <![CDATA[Verizon tests new fiber system that hits 10Gbps speeds]]> - - -Verizon has announced that it has successfully completed field tests of its new super-fast fiber optic technology, dubbed the next-generation passive optical network (NG-PON2). It could offer users connectivity speeds anywhere from 10Gbps to 80Gbps...]]> - http://www.engadget.com/2015/08/11/verizon-tests-new-fiber-system-that-hits-10-gbps-speeds/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/verizon-tests-new-fiber-system-that-hits-10-gbps-speeds/ - - Tue, 11 Aug 2015 19:24:00 GMT - - - <![CDATA[Google now includes images from PDF in image search]]> - Continue reading]]> - http://androidcommunity.com/google-now-includes-images-from-pdf-in-image-search-20150811/ - http://androidcommunity.com/?p=238565 - - - - - - Tue, 11 Aug 2015 19:20:05 GMT - - - <![CDATA[Get Access To The eBay App v4.0 Closed Beta By Filling Out This Form]]> - ebaythumbMost developers run regular beta tests via the Play Store, but not eBay. Oh no. The most recent eBay v4.0 beta is closed, and even the APK needs an authorized login to work. Luckily, there's a form you can fill out to get access.

    It's a simple Google Docs survey and should only take a moment to complete. Just put in your email, beta preference (iOS/Android), and your country. You should get an email with the download link as soon as there's a new build to test.

    Read More

    Get Access To The eBay App v4.0 Closed Beta By Filling Out This Form was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/7Fq7v1j_oX4/story01.htm - http://www.androidpolice.com/?p=330848 - - - - - - - - Tue, 11 Aug 2015 19:19:00 GMT -
    - - <![CDATA[Skype for Business now heading into preview on Android]]> -

    - -

    Microsoft has announced the preview for its upcoming Skype for Business offering on Android. Skype for Business will come as an update to the existing Lync 2013 app when it arrives later this year.

    - -
    ]]>
    - http://www.androidcentral.com/skype-business-now-heading-preview-android - 48378 at http://www.androidcentral.com - - Tue, 11 Aug 2015 19:03:39 GMT -
    - - <![CDATA[Developers in Qatar, Kazakhstan and Nigeria can now sell paid apps in Google Play]]> -

    - -

    Developers in Qatar, Kazakhstan and Nigeria are now able to list paid apps in Google Play, and display the apps using local currency pricing. The changes, which are reflected on the Google Play Developer Console, indicate that developers in these regions are now able to set pricing for their apps, as well as in-app purchases using local currency.

    ]]>
    - http://www.androidcentral.com/developers-qatar-kazakhstan-and-nigeria-can-now-sell-paid-apps-google-play - 48379 at http://www.androidcentral.com - - Tue, 11 Aug 2015 19:03:25 GMT -
    - - <![CDATA[With Alphabet, Google wants to avoid becoming Microsoft]]> - - -You're probably tired of hearing just how "unconventional" Google is after yesterday's surprise restructuring announcement. Sure, making Google a subsidiary of a company called Alphabet is certainly strange, especially after it's become a household...]]> - http://www.engadget.com/2015/08/11/google-alphabet/%3Futm_medium%3Dfeed%26utm_source%3DFeed_Classic%26utm_campaign%3DEngadget%26ncid%3Drss_semi - http://www.engadget.com/2015/08/11/google-alphabet/ - - Tue, 11 Aug 2015 19:00:00 GMT - - - <![CDATA[Android's Version Of Skype For Business Is On The Way, And You Can Sign Up Now To Test The Preview]]> - Skype3

    The free version of Skype is great for personal use, but you can also get work done with it as well. I took part in numerous job interviews over video chat during my last year of college. When I landed an internship, we used it to communicate around the office.

    But for big work done by big companies, there's Skype for Business. It comes with extra perks such as the ability to chat with up to 250 people and integrate everything with Office.

    Read More

    Android's Version Of Skype For Business Is On The Way, And You Can Sign Up Now To Test The Preview was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/Z3vTDWsPEYI/story01.htm - http://www.androidpolice.com/?p=330836 - - - - - - - - Tue, 11 Aug 2015 18:55:55 GMT -
    - - <![CDATA[Omate smart ring tells you when THAT person is calling]]> - Continue reading]]> - http://androidcommunity.com/omate-smart-ring-tells-you-when-that-person-is-calling-20150811/ - http://androidcommunity.com/?p=238713 - - - - - - Tue, 11 Aug 2015 18:40:38 GMT - - - <![CDATA[Google Creative Lab Releases Three New Experimental Apps—Landmarker, Tunnel Vision, And Lip Swap]]> - unnamed

    You don't hear a lot about Google Creative Lab, but it's had a hand in some of Google's most memorable ads and products. Google's Creative Lab is an outfit that basically comes up with (presumably) innovative ideas the promote the Google brand. Along the way, they've also made a few apps. Today there are three new apps from the Creative Lab, all of which are appropriately offbeat.

    First up, there's Landmarker, which I dare say is the most conventional and useful of the three.

    Read More

    Google Creative Lab Releases Three New Experimental Apps—Landmarker, Tunnel Vision, And Lip Swap was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/M-HY8n3IVls/story01.htm - http://www.androidpolice.com/?p=330821 - - - - - - - Tue, 11 Aug 2015 18:13:23 GMT -
    - - <![CDATA[Samsung Galaxy S7 to run on Qualcomm Snapdragon 820 processor]]> - Continue reading]]> - http://androidcommunity.com/samsung-galaxy-s7-to-run-on-qualcomm-snapdragon-820-processor-20150811/ - http://androidcommunity.com/?p=238630 - - - - - - - - - Tue, 11 Aug 2015 18:00:57 GMT - - - <![CDATA[FireFox update supposedly optimizes browsers interface for Windows 10]]> - Has Mozilla had a change of heart about Windows 10 after the default browser dust up a couple of weeks ago? - -

    read more

    ]]>
    - http://winsupersite.com/windows-10/firefox-update-supposedly-optimizes-browsers-interface-windows-10 - 58171 at http://winsupersite.com - - - - - - Tue, 11 Aug 2015 17:50:00 GMT -
    - - <![CDATA[What is reactive programming?]]> -

    Braden O'Guinn gives us the scoop on reactive programming and where to learn more about it.

    -

    The post What is reactive programming? appeared first on Mutual Mobile.

    ]]>
    - http://feedproxy.google.com/~r/PlanetAndroidCom/~3/e_4NJiY7NgU/what-is-reactive-programming - http://www.mutualmobile.com/?p=13396 - - - - - - Tue, 11 Aug 2015 17:41:03 GMT -
    - - <![CDATA[Samsung Galaxy S5 Neo listed for pre-order in Germany, now with updated design]]> - Continue reading]]> - http://androidcommunity.com/samsung-galaxy-s5-neo-listed-for-pre-order-in-germany-now-with-updated-design-20150811/ - http://androidcommunity.com/?p=238617 - - - - - - Tue, 11 Aug 2015 17:20:55 GMT - - - <![CDATA[Thermacell Mosquito Repellent review]]> - - http://feedproxy.google.com/~r/TheGadgeteer/~3/8rVedFSxk38/ - http://the-gadgeteer.com/?p=182031 - - - - - - - Tue, 11 Aug 2015 17:00:25 GMT - - - <![CDATA[Lenovo-Backed ZUK Announces The China-Only Z1 With USB 3.0 Type-C And 4100mAh Battery]]> - 6YUpQAAAABJRU5ErkJggg==

    Lenovo already has cell phone legend Motorola under its umbrella, but the company has also started a new Chinese brand called ZUK. This firm is intended to compete with the budget offerings of Xaiomi, Huawei, and others. Its first phone looks like a good start too. The Z1 has a massive battery and a USB 3.0 Type-C port.

    The Z1 is basically specced like a 2014 flagship with a few important extras.

    Read More

    Lenovo-Backed ZUK Announces The China-Only Z1 With USB 3.0 Type-C And 4100mAh Battery was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/ULc9x71czlo/story01.htm - http://www.androidpolice.com/?p=330811 - - - - - - - Tue, 11 Aug 2015 16:41:08 GMT -
    - - <![CDATA[Spotify to reportedly offer premium-only content by early 2016]]> - Continue reading]]> - http://androidcommunity.com/spotify-to-reportedly-offer-premium-only-content-by-early-2016-20150811/ - http://androidcommunity.com/?p=238747 - - - - - - - Tue, 11 Aug 2015 16:40:18 GMT - - - <![CDATA[LastPass Free Is Now Available On Mobile Devices For New Users, But You Have To Pay To Switch From Phones To Tablets Or PCs]]> - LastPass

    Using LastPass on anything more mobile than a PC used to be a perk reserved exclusively for paying customers. We couldn't call it all that much of a luxury, considering that at $12 a year, LastPass Premium costs about as much as a short trip on the Pennsylvania Turnpike. But now you won't even have to pay that much to start managing your passwords on your Android phone or tablet.

    Users who sign up for LastPass can use the service on an unlimited number of smartphones or tablets—but not both.

    Read More

    LastPass Free Is Now Available On Mobile Devices For New Users, But You Have To Pay To Switch From Phones To Tablets Or PCs was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/gNt1eTiBDeM/story01.htm - http://www.androidpolice.com/?p=330804 - - - - - - - - Tue, 11 Aug 2015 16:15:59 GMT -
    - - <![CDATA[Small IT firms most susceptible to going under due to late payments]]> - - http://www.computerweekly.com/news/4500251498/Small-IT-firms-most-susceptible-to-going-under-due-to-late-payments - http://www.computerweekly.com/news/4500251498/Small-IT-firms-most-susceptible-to-going-under-due-to-late-payments - - Tue, 11 Aug 2015 16:15:16 GMT - - - <![CDATA[How To: Manage Taskbar Real Estate in Windows 10]]> - You can make settings adjustments in Windows 10 to free up more space for pinned apps. - -

    read more

    ]]>
    - http://winsupersite.com/windows-10/how-manage-taskbar-real-estate-windows-10 - 58161 at http://winsupersite.com - - Tue, 11 Aug 2015 16:14:00 GMT -
    - - <![CDATA[Snapchat update: travel mode to save data, placeable emojis]]> - Continue reading]]> - http://androidcommunity.com/snapchat-update-travel-mode-to-save-data-placeable-emojis-20150811/ - http://androidcommunity.com/?p=238740 - - - - - - - Tue, 11 Aug 2015 16:00:17 GMT - - - <![CDATA[Peer-to-peer lenders galore apply for regulatory approval]]> - - http://www.computerweekly.com/news/4500251484/Peer-to-peer-lenders-galore-apply-for-regulatory-approval - http://www.computerweekly.com/news/4500251484/Peer-to-peer-lenders-galore-apply-for-regulatory-approval - - Tue, 11 Aug 2015 15:45:02 GMT - - - <![CDATA[Parallels Access Updated To v3.0 With File Sharing, Universal File Manager, And More]]> - unnamed

    Most remote access apps just beam your computer's screen to the phone, but Parallels does a bit more. It has a handy app launcher and full-screen rendering of desktop apps. It's not free, but maybe the latest update will entice you to pony up some cash.

    Here's the changelog for Parallels v3.0.

    • File Sharing — Share any file directly from your computer. No cloud storage required, no file size limit, no upload time wasted.
    Read More

    Parallels Access Updated To v3.0 With File Sharing, Universal File Manager, And More was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/nRmAqKOPBhA/story01.htm - http://www.androidpolice.com/?p=330778 - - - - - - - - Tue, 11 Aug 2015 15:28:23 GMT -
    - - <![CDATA[Prevent the Windows 10 upgrade from installing after making your reservation]]> - If you are not ready for the Windows 10 upgrade but made a reservation these steps will help you keep it off your system. - -

    read more

    ]]>
    - http://winsupersite.com/windows-10/prevent-windows-10-upgrade-installing-after-making-your-reservation - 58151 at http://winsupersite.com - - - - - - - - - - Tue, 11 Aug 2015 15:26:00 GMT -
    - - <![CDATA[Snapchat 9.14 Offers A Travel Mode That Uses Less Data, New Emoji Button, And More]]> - Snapchat1

    Snapchat's developers have pushed out another update to the Android app, version 9.14. Like before, users get to satisfy their thirst with a trickle of new features.

    One tucked away change is the ability to see who has viewed your Story by tapping on the eyeball in the corner. We also see an addition aimed specifically had users with limited or slower data connections. There's now the option to dive into Settings and enable Travel Mode, which reduces mobile data usage.

    Read More

    Snapchat 9.14 Offers A Travel Mode That Uses Less Data, New Emoji Button, And More was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/m3DJpdtYNn4/story01.htm - http://www.androidpolice.com/?p=330785 - - - - - - - - - Tue, 11 Aug 2015 15:20:42 GMT -
    - - <![CDATA[Qualcomm outs Snapdragon 412, 212 for budget and midrange devices]]> - Continue reading]]> - http://androidcommunity.com/qualcomm-outs-snapdragon-412-212-for-budget-and-midrange-devices-20150811/ - http://androidcommunity.com/?p=238650 - - - - - - - - - - Tue, 11 Aug 2015 15:20:32 GMT - - - <![CDATA[ZUK Z1 Announced with USB 3.1 and 4100mAh Battery]]> - ZUK-Z1

    ZUK are a relatively new sub-brand of Lenovo, who had previously enjoyed press through multiple rumors about their impending release of a CyanogenOS smartphone called the Z1. This has turned out to be off the mark; the company announced the very same handset today, although it’s running a custom implementation of Android 5.1 called ‘ZUI’. We’ll be bringing you a more in-depth preview of the device once we get our hands on it, but at this point we already have a full list of specifications and a number of interesting details about this very reasonably priced first effort.

    -

     

    -

     

    -

     

    -

    With its $280 price tag, ZUK is going head-to-head with a number of other thrifty Chi. . . READ ON »

    ]]>
    - http://feedproxy.google.com/~r/PlanetAndroidCom/~3/Wx_l_2jVKSk/ - http://www.xda-developers.com/?p=121944 - - - - - - - - - - Tue, 11 Aug 2015 15:13:15 GMT -
    - - <![CDATA[DEF CON 23: Two major roadblocks to cyber diplomacy, says former US diplomat]]> - - http://www.computerweekly.com/news/4500251495/DEF-CON-23-Two-major-roadblocks-to-cyber-diplomacy-says-former-US-diplomat - http://www.computerweekly.com/news/4500251495/DEF-CON-23-Two-major-roadblocks-to-cyber-diplomacy-says-former-US-diplomat - - Tue, 11 Aug 2015 15:00:05 GMT - - - <![CDATA[Sasmung's Game Recorder+ Updated To Work With More Phones And Android Versions]]> - imageIf you're a Samsung phone owner hoping to play with the manufacturer's custom-made game recording app, you might just be able to today. Game Recorder+ has been updated to work with a few new devices, plus updated compatibility for new Android 5.1 builds and better performance.

    The new phones are the Galaxy S6 Active, the older Galaxy S5 Active, the Galaxy Note Edge, and the Galaxy Note 3 Neo. The app now works with Android 5.1 on the Galaxy S6, Galaxy S5, and Galaxy Note 4 (which may or may not be updated depending on your location and/or carrier).

    Read More

    Sasmung's Game Recorder+ Updated To Work With More Phones And Android Versions was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/T3B6kTPMOEg/story01.htm - http://www.androidpolice.com/?p=330781 - - - - - - - - - - - - - - - - - Tue, 11 Aug 2015 14:50:10 GMT -
    - - <![CDATA[Microsoft’s Cortana app can now be set as default on Android]]> - Continue reading]]> - http://androidcommunity.com/microsofts-cortana-app-can-now-be-set-as-default-on-android-20150811/ - http://androidcommunity.com/?p=238590 - - - - - - - - - Tue, 11 Aug 2015 14:40:20 GMT - - - <![CDATA[Digital Scotland claws back £18m for superfast broadband]]> - - http://www.computerweekly.com/news/4500251481/Digital-Scotland-claws-back-18m-for-superfast-broadband - http://www.computerweekly.com/news/4500251481/Digital-Scotland-claws-back-18m-for-superfast-broadband - - Tue, 11 Aug 2015 14:30:32 GMT - - - <![CDATA[How To: Turning Off Windows 10 Notifications During Presentations]]> - Don't get caught by embarrassing pop-ups during presentations. - -

    read more

    ]]>
    - http://winsupersite.com/windows-10/how-turning-windows-10-notifications-during-presentations - 58141 at http://winsupersite.com - - Tue, 11 Aug 2015 14:24:00 GMT -
    - - <![CDATA[IT budgets squashed by 20% currency price hike]]> - - http://www.computerweekly.com/news/4500251497/IT-budgets-squashed-by-20-currency-price-hike - http://www.computerweekly.com/news/4500251497/IT-budgets-squashed-by-20-currency-price-hike - - Tue, 11 Aug 2015 14:23:26 GMT - - - <![CDATA[How To: Manage Email Folders in the Windows 10 Mail App]]> - The Mail app for Windows 10 is basically just an email reading application with limited features included. Email folder management is pretty limited, too. - -

    read more

    ]]>
    - http://winsupersite.com/windows-10/how-manage-email-folders-windows-10-mail-app - 58131 at http://winsupersite.com - - Tue, 11 Aug 2015 14:07:00 GMT -
    - - <![CDATA[WaterField Designs launches PERALTA, a new women’s line of bags]]> - - http://feedproxy.google.com/~r/TheGadgeteer/~3/xJ4XTN-OnbA/ - http://the-gadgeteer.com/?p=183418 - - - - Tue, 11 Aug 2015 14:00:56 GMT - - - <![CDATA[Hootsuite moves social media management toolkit to IBM Softlayer cloud]]> - - http://www.computerweekly.com/news/4500251490/Hootsuite-moves-social-media-management-toolkit-to-IBM-Softlayer-cloud - http://www.computerweekly.com/news/4500251490/Hootsuite-moves-social-media-management-toolkit-to-IBM-Softlayer-cloud - - Tue, 11 Aug 2015 13:46:29 GMT - - - <![CDATA[Android Wear v1.3 Includes 'Device To Debug' Picker, Reveals Upcoming "Together" And Interactive Watch Faces, New Apps, And More [APK Teardown + Download]]]> - banner

    Google surprised us with the long, long, long-awaited Hangouts 4.0 release earlier today, but that wasn't the only update worth paying attention to – Android Wear v1.3 turned up in the later hours, as well. At first glance, the only new option appears to be a selector in settings for choosing between watches for hacking or programming purposes, but a teardown reveals some great new features we can expect to see in the next major firmware release to Android Wear.

    Read More

    Android Wear v1.3 Includes 'Device To Debug' Picker, Reveals Upcoming "Together" And Interactive Watch Faces, New Apps, And More [APK Teardown + Download] was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/8PmVxRHS_v4/story01.htm - http://www.androidpolice.com/?p=330744 - - - - - - - - - - - - - - - - - Tue, 11 Aug 2015 13:30:00 GMT -
    - - <![CDATA[Pushbullet Update Brings End-to-end Encryption]]> - Pushbullet-640x401

    Starting from version 16.5.4, Pushbullet now supports end-to-end encryption for its notification mirroring, universal copy-paste as well as its SMS features. To enable this, users need to manually add a password through the settings screen of pushbullet apps on desktop and mobile, labelled “End-to-end Encryption”.. . . READ ON »

    ]]>
    - http://feedproxy.google.com/~r/PlanetAndroidCom/~3/Ilbey5hzkKU/ - http://www.xda-developers.com/?post_type=xda-external-link&p=121936 - - Tue, 11 Aug 2015 13:29:39 GMT -
    - - <![CDATA[Vessel Beta App Gains Chromecast Support In The Latest Version]]> - 2015-08-11 12.51.44To be honest, I'm still not sold on Vessel's business model, which posts original web video content a few days early to paying subscribers before it goes out to more general portals (usually YouTube). But the Android app seems more than serviceable even in its beta form, and the developers are adding features quickly. Case in point: the latest update adds Chromecast compatibility, which no video app should be without.
    Read More

    Vessel Beta App Gains Chromecast Support In The Latest Version was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/UTGysqZ3vus/story01.htm - http://www.androidpolice.com/?p=330775 - - - - - - - - - - Tue, 11 Aug 2015 13:22:00 GMT -
    - - <![CDATA[House of Marley Liberate XLBT Bluetooth Over-Ear Headphones review]]> - - http://feedproxy.google.com/~r/TheGadgeteer/~3/-JJ4Bx3sYl4/ - http://the-gadgeteer.com/?p=180668 - - - - - - Tue, 11 Aug 2015 13:06:54 GMT - - - <![CDATA[How To: Fix Stopped Windows Store Downloads in Windows 10]]> - If you've been hampered by a problem with app updates in the Windows 10 app store, here's a fix to get the pending updates to start downloading. - -

    read more

    ]]>
    - http://winsupersite.com/windows-10/how-fix-stopped-windows-store-downloads-windows-10 - 58121 at http://winsupersite.com - - Tue, 11 Aug 2015 13:03:00 GMT -
    - - <![CDATA[Why Risk Lives With a Drone When You Can Rent an Ace Pilot?]]> - Why Risk Lives With a Drone When You Can Rent an Ace Pilot?

    Drone videos are in high demand, but inexperienced pilots are putting people in danger.

    -

    The post Why Risk Lives With a Drone When You Can Rent an Ace Pilot? appeared first on WIRED.

    ]]>
    - http://www.wired.com/2015/08/risk-lives-drone-can-rent-ace-pilot/ - http://www.wired.com/?p=1833222 - - - - - - Tue, 11 Aug 2015 13:00:29 GMT -
    - - <![CDATA[Pushbullet Now Supports End-To-End Encryption For Notification Mirroring, SMS, And Copy-Paste Sync]]> - splash

    You can't deny that Pushbullet is insanely useful, and it gets more so with each update. However, Pushbullet does see a lot of your data in plain text, and there's been growing demand for better security. As of today, Pushbullet supports end-to-end encryption for SMS, notification mirroring, and universal copy-paste.

    In a recent conversation on Reddit, Pushbullet's lead developer dug into the issue with users. Pushbullet has always used https to secure connections, but the Pushbullet servers still see all your data in plain text.

    Read More

    Pushbullet Now Supports End-To-End Encryption For Notification Mirroring, SMS, And Copy-Paste Sync was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/fmXd-2KAVjY/story01.htm - http://www.androidpolice.com/?p=330748 - - - - - - - Tue, 11 Aug 2015 13:00:10 GMT -
    - - <![CDATA[FBI uncovers cyber insider trading gang]]> - - http://www.computerweekly.com/news/4500251471/FBI-uncovers-cyber-insider-trading-gang - http://www.computerweekly.com/news/4500251471/FBI-uncovers-cyber-insider-trading-gang - - Tue, 11 Aug 2015 12:30:33 GMT - - - <![CDATA[Four more senior leaders announce departure from Government Digital Service]]> - - http://www.computerweekly.com/news/4500251478/Four-more-senior-leaders-announce-departure-from-Government-Digital-Service - http://www.computerweekly.com/news/4500251478/Four-more-senior-leaders-announce-departure-from-Government-Digital-Service - - Tue, 11 Aug 2015 12:30:13 GMT - - - <![CDATA[Seagate Introduces New Nytro PCIe SSDs: XP6500 & XF/XM1440]]> -

    After acquiring SSD controller designer SandForce, LSI took the quick route towards creating high-performance PCIe SSDs by putting multiple SandForce controllers and an LSI RAID controller on a single expansion card, branding the resulting product as the Nytro. This Nytro product line was transferred to Seagate along with the SandForce division in May 2014, and it's now getting both a refresh and a major expansion.

    - -

    The new Nytro XP6500 succeeds the Nytro XP6302 and offers improved write latency and improved write endurance. Write throughput suffers slightly, but the XP6302's original performance specifications were inflated by testing at 28% over-provisioning rather than the default of 17% that is implied by the listed capacities. Meanwhile the XP6500 4TB model is listed as optimized for 8kB rather than 4kB random accesses, so its IOPS numbers aren't directly comparable to the others.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Seagate Nytro XP6000 Series
    DriveXP6500 4TBXP6500 1.5TBXP6302
    Usable capacity 3.4TB1.3TB1.3TB, 1.75TB, 3.5TB
    Interface PCIe 3.0 x8
    Sequential read 4 GB/s
    Sequential write 2.2 GB/s1.5 GB/s2.3 GB/s
    Random read IOPS 275K (8KB)300K (4KB)296K (4KB)
    Random write IOPS 85K (8KB)100K (4KB)148K (4KB)
    Write latency 14µs33µs
    Write endurance 20 PB8 PB6.6-11.7 PB
    Required airflow 550 LFM300 LFM
    - -

    Peak power consumption isn't listed but is likely significantly increased over the XP6302's 39W, based on the increase in required airflow from 300LFM to 550LFM for the same operating temperature range. The Nytro XP6500 supports a supercapacitor bank to protect data in its large (2-4GB) DRAM cache. The XP6500 is available either as a full-height expansion card with built-in supercapacitors, or as a half-height card with an optional tethered supercapacitor module. Seagate has announced immediate availability of the Nytro XP6500.

    - -

    - -

    Expanding the Nytro brand into new territory are the XF1440 and XM1440 NVMe drives, in 2.5" U.2 (SFF-8639) and M.2 22110 form factors respectively. They're split in to two tiers: “Endurance Optimized” (3 drive writes per day) and “Capacity Optimized” (0.3 DWPD).

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Seagate Nytro XF1440
    DriveEndurance OptimizedCapacity Optimized
    Usable capacity 400 GB, 800 GB, 1600 GB480 GB, 960 GB, 1800 GB
    Interface PCIe 3.0 x4 SFF-8639
    Sequential read 2700 MB/s
    Sequential write 600-1200 MB/s
    Random read IOPS 200K
    Random write IOPS 34K3K–7K
    Write endurance 3 DWPD0.3 DWPD
    Warranty5 years
    Peak power12.5 W
    Average read/write power9 W
    - -

    - -

    Performance specifications for the Nytro XM1440 weren't available, and we aren't assuming that they will be the same as for the Nytro XF1440. The XF is listed as using eMLC (Enterprise MLC) but the XM is using MLC+, a term often used to refer to higher-binned consumer-grade MLC. Maximum power consumption is significantly lower for the XM, and the XM will be released later (early 2016, when the XF1440 will ship at the end of October), which suggests that there may also be controller differences.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Seagate Nytro XM1440
    DriveEndurance OptimizedCapacity Optimized
    Usable capacity 400 GB, 800 GB480 GB, 960 GB
    Interface M.2 PCIe 3.0 x4
    Write endurance 3 DWPD0.3 DWPD
    Warranty5 years
    Peak power8.25 W
    Average read/write power7 W
    -

    ]]>
    - http://www.anandtech.com/show/9513/seagate-introduces-new-nytro-pcie-ssds - tag:www.anandtech.com,9513:news - - - Tue, 11 Aug 2015 12:30:00 GMT -
    - - <![CDATA[Goodbye Google, hello Alphabet]]> - - http://feedproxy.google.com/~r/TheGadgeteer/~3/iaySdYBz5dE/ - http://the-gadgeteer.com/?p=183389 - - - - - Tue, 11 Aug 2015 12:00:45 GMT - - - <![CDATA[StarTech.com 8-bay USB 3.0 / eSATA Removable Hard Drive Enclosure Review]]> - Network Attached Storage (NAS) devices have become quite popular over the last five years or so, but Direct Attached Storage (DAS) units were the go-to devices for consumers looking to store large amounts of data before that. The interfaces for these DAS units have evolved from USB 2.0 and Firewire to eSATA and nowadays, USB 3.x and Thunderbolt. What sort of performance numbers and features can we expect in a modern multi-bay DAS unit? What are the use-cases enabled by them in the modern computing ecosystem? Our review of the StarTech.com S358BU33ERM 8-bay USB 3.0 / eSATA hard drive enclosure provides some answers.

    ]]>
    - http://www.anandtech.com/show/9514/startechcom-8bay-usb-30-esata-removable-hard-drive-enclosure-review - tag:www.anandtech.com,9514:news - - - Tue, 11 Aug 2015 12:00:00 GMT -
    - - <![CDATA[NVIDIA Announces Quadro M5000 & M4000 Video Cards, DesignWorks Software Suite]]> -

    Back in March at GTC 2015, NVIDIA announced the first member and flagship of their Maxwell 2 generation of Quadro cards, the Quadro M6000. Packing a fully-enabled GM200 GPU and 12GB of RAM, M6000 signaled an interesting shift from NVIDIA on the high-end of Quadro, with the company shipping what amounted to a “pure” graphics card as opposed to a jack-of-all-trades type card as they typically do at the high-end.

    - -

    Meanwhile, although the M6000 was the first Maxwell 2 based Quadro card to launch, it was not the first Maxwell 2 GPU to launch. NVIDIA has launched GM204 and GM206 late last year and early this year respectively, and of course Maxwell 1 ended up in the Quadro K2200 and a couple of other cards. As a result we have been expecting NVIDIA to refresh the rest of the Quadro lineup with Maxwell 2 after the release of the M6000, and this week at SIGGRAPH NVIDIA is doing just that with the release of the Quadro M5000 and Quadro M4000.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NVIDIA Quadro Specification Comparison
     Quadro M5000Quadro M4000Quadro K5200Quadro K4200
    CUDA Cores2048166423041344
    Boost Clock~1050MHz~780MHz650MHz780MHz
    Memory Clock6.6GHz GDDR56GHz GDDR56GHz GDDR55.4GHz GDDR5
    Memory Bus Width256-bit256-bit256-bit256-bit
    VRAM8GB8GB8GB4GB
    FP641/321/321/241/24
    TDP150W120W150W105W
    GPUGM204?GM204GK110GK104
    ArchitectureMaxwell 2Maxwell 2KeplerKepler
    SizeDouble-SlotSingle-SlotDouble-SlotSingle-Slot
    4Kp60 Displays Supported4422
    - -

    We’ll start things off with the Quadro M5000. While NVIDIA has not announced the GPU for these new products, we believe the M5000 to be based on GM204, given the CUDA core and memory bus configuration. By those standards M5000 would be a fully enabled GM204 card, featuring all 2048 CUDA cores and the full 256-bit memory bus, essentially making this the Quadro version of the GeForce GTX 980.

    - -

    Curiously, the M5000 features DRAM soft ECC support, allowing for error correction on the DRAM. Previous 5000-series Quadro cards have also included this feature, but at a GPU level NVIDIA typically reserves this feature for their highest-tier GPUs. With that said, as it’s software based and we’ve seen NVIDIA enable it in a Kepler-based GK104 product before (Tesla K10), for the moment we believe that they have gone ahead and enabled it for this GM204 product, rather than outfitting the card with GM200.

    - -

    - -

    Paired up with the GM204 is 8GB of GDDR5 clocked at a slightly more conservative 6.6GHz. Based on these specifications it’s not clear whether NVIDIA is using 16 4Gbit chips or 8 8Gbit chips, as the latter are now available though still fairly rare (M6000 by comparison used 24 4Gbit chips). In any case this is the same amount of RAM as the previous Quadro K5200 shipped with, indicating that NVIDIA is targeting the same market segment as before.

    - -

    As for GPU clockspeeds, as is usually the case NVIDIA has not published specific clockspeeds, but in their press materials they have the card’s FP32 performance listed at 4.3 TFLOPs. This would put the maximum GPU clockspeeds at around 1.05GHz, though as this is a GPU boost product we don’t know the base clockspeeds at this time.

    - -

    NVIDIA has also published the power information for this card, and like its Kepler-based predecessor it’s a 150W card. A 150W TDP allows M5000 to more easily work in lower power workstations where only a single 6-pin PCIe power connection is available, and is actually a bit lower power than comparable desktop GeForce products. Though as a result we expect that shipping clockspeeds are below 1GHz.

    - -

    Meanwhile NVIDIA has typically gone with dual-slot blowers on their 150W Quadro cards, and M5000 will be no exception. The card is shipping with what appears to be a new blower and shroud design – and one I suspect is all plastic like the Quadro K5200’s – mimicking the original metal shroud of the M6000. At any rate this is a full size card, meaning it measures 10.5” long like NVIDIA’s other high-end cards.

    - -

    Finally, much like the M6000, the overall importance of a Maxwell release is two-fold for NVIDIA. First and foremost of course are the performance improvements from Maxwell, which achieves much better performance per CUDA core and much better energy efficiency than the preceding Kepler parts, so M5000 should achieve even better real-world performance than its already substantial on-paper specifications indicate. However the other significant benefit here is that the switch to Maxwell means that the Quadro cards gain Maxwell’s newer display controller and NVENC blocks, allowing the M5000 to drive four 4K displays – twice as many as K5200 – and real-time HEVC encoding.

    - -

    M4000

    - -

    Also launching today and below the M5000 is the M4000. This appears to be another GM204 design, forgoing some of GM204’s CUDA cores in exchange for lower costs, performance, and power consumption. Like the M5000 we don’t have the clockspeed information for the card, but we do know it features 1664 active CUDA cores, making it analogous to the GeForce GTX 970. Also like the M5000 this features 8GB of VRAM – twice as much as the K4200 – this time clocked at 6GHz, however without the soft ECC support of the higher-end Quadro cards.

    - -

    - -

    Compared to the M5000 the TDP on the M4000 is down by 30W to 120W. The previous Quadro K4200 was a 105W card, so power consumption is up slightly, but in turn the M4000 features the Maxwell family improvements and more CUDA cores than the K4200. The card is rated for 2.6 TFLOPs of FP32 performance, which puts the maximum clockspeed at around 780MHz, so we expect that performance will be greatly improved over the K4200.

    - -

    Meanwhile like past Quadro 4000-series cards, the M4000 is a single slot design. To the best of our knowledge this is a new PCB design for NVIDIA, and taking advantage of the lower power requirements brings the length of the card down to 9.5”. In order to get everything down a single slot NVIDIA has done away with the DVI port – a first for the 4000 series – making M4000 a 4x DisplayPort design. As we mentioned with M5000, the Maxwel display controller improves 4K support to allow 4 such displays off of a single card, and this is a scenario NVIDIA is clearly looking to enable with the M4000.

    - -

    Finally, as is usually the case for NVIDIA, the company is not publishing any official prices for these cards, leaving pricing up to their partners and vendors. That said, at this point we expect pricing to be similar to the Quadro K5200 and K4200, which would put street prices on the cards at around $2000 and $1000 for the M5000 and M4000 respectively.

    - -

    NVIDIA Launches DesignWorks

    - -

    - -

    Along with the release of their latest Quadro cards, NVIDIA is also announcing a new software suite at SIGGRAPH: DesignWorks. The latest Works project, DesignWorks, is partially a collection of new software and partially a branding exercise for the company. Following in the footsteps of GameWorks for game development, NVIDIA is collecting most of their tools and libraries for professional graphics development under the DesignWorks brand, and going forward will be releasing new tools under this brand as well.

    - -

    - -

    Along with collecting previous disparate tools like Iray and OptiX, the announcement of DesignWorks also marks the introduction of some new tools for NVIDIA. Of particular note here is NVIDIA vMaterials, a library of digitized, real world materials for use in applications that can interface with NVIDIA’s Material Design Language, MDL. Also premiering with DesignWorks is a version of NVIDIA’s VR technology optimized specifically for professional use, aptly named DesignWorks VR.

    - -

    Meanwhile NVIDIA’s technology focus for the DesignWorks launch is on Physically Based Rendering (PBR), a realistic rendering technique the company has been promoting for much of the last year now. PBR is very GPU intensive – always a plus for someone in the business of selling GPUs – but in turn is designed to offer more photo-realistic results (but not necessarily more accurate results) by focusing on simulating the properties of the materials of the surrounding world itself. This focus on PBR goes hand-in-hand with the NVIDIA vMaterials announcement in particular, as a big part of enabling PBR is creating the material representations themselves.

    - -

    - -

    Finally, as part of their PBR push over the past year, NVIDIA has been showing off various images under the Real or Rendered tagline. For SIGGRAPH the company has put together an admittedly impressive render of a DeWalt drill, which is close to the real thing, though not identical to it.

    - -

    Gallery: NVIDIA DesignWorks Presentation

    -

    ]]>
    - http://www.anandtech.com/show/9516/nvidia-announces-quadro-m5000-m4000-video-cards-designworks-software-suite - tag:www.anandtech.com,9516:news - - - Tue, 11 Aug 2015 12:00:00 GMT -
    - - <![CDATA[Hotel trade body offers members 100GbE networking capability]]> - - http://www.computerweekly.com/news/4500251470/Hotel-trade-body-offers-members-100GbE-networking-capability - http://www.computerweekly.com/news/4500251470/Hotel-trade-body-offers-members-100GbE-networking-capability - - Tue, 11 Aug 2015 11:45:04 GMT - - - <![CDATA[Use technology to improve NHS, say patients]]> - - http://www.computerweekly.com/news/4500251458/Use-technology-to-improve-NHS-say-patients - http://www.computerweekly.com/news/4500251458/Use-technology-to-improve-NHS-say-patients - - Tue, 11 Aug 2015 11:15:51 GMT - - - <![CDATA[HTC’s Epic Tailspin Isn’t Even Its Fault]]> - HTC’s Epic Tailspin Isn’t Even Its Fault

    Sometimes, the most creative ideas fall the hardest.

    -

    The post HTC’s Epic Tailspin Isn’t Even Its Fault appeared first on WIRED.

    ]]>
    - http://www.wired.com/2015/08/htc-financial-trouble/ - http://www.wired.com/?p=1833191 - - - - - - - Tue, 11 Aug 2015 11:00:53 GMT -
    - - <![CDATA[Stepping Into This Shower Feels Like Hugging a Warm Cloud]]> - Stepping Into This Shower Feels Like Hugging a Warm Cloud

    The hard part is asking people to strip down and give their shower a test run.

    -

    The post Stepping Into This Shower Feels Like Hugging a Warm Cloud appeared first on WIRED.

    ]]>
    - http://www.wired.com/2015/08/nebia/ - http://www.wired.com/?p=1833152 - - - - - - Tue, 11 Aug 2015 11:00:47 GMT -
    - - <![CDATA[McLaren’s New Coupe Is Too Fancy for the Word ‘Purple’]]> - McLaren’s New Coupe Is Too Fancy for the Word ‘Purple’

    McLaren's goal is to show off some of the bespoke options it can offer to wealthy buyers.

    -

    The post McLaren’s New Coupe Is Too Fancy for the Word ‘Purple’ appeared first on WIRED.

    ]]>
    - http://www.wired.com/2015/08/mclaren-570s/ - http://www.wired.com/?p=1833113 - - - - - - - - Tue, 11 Aug 2015 11:00:34 GMT -
    - - <![CDATA[British Gas Smart Metering consolidates data with Qlik on Hadoop]]> - - http://www.computerweekly.com/feature/British-Gas-Smart-Metering-consolidates-data-with-Qlik-on-Hadoop - http://www.computerweekly.com/feature/British-Gas-Smart-Metering-consolidates-data-with-Qlik-on-Hadoop - - Tue, 11 Aug 2015 10:57:34 GMT - - - <![CDATA[Asean organizations braced for cyber attack]]> - - http://www.computerweekly.com/feature/Asean-organizationms-braced-for-cyber-attack - http://www.computerweekly.com/feature/Asean-organizationms-braced-for-cyber-attack - - Tue, 11 Aug 2015 10:46:00 GMT - - - <![CDATA[Sale, spin-off or stay put? What should EMC do next?]]> - - http://www.computerweekly.com/opinion/Whats-really-going-on-at-EMC - http://www.computerweekly.com/opinion/Whats-really-going-on-at-EMC - - Tue, 11 Aug 2015 10:32:52 GMT - - - <![CDATA[Testing a four-million-user disaster recovery plan]]> - - http://www.computerweekly.com/feature/Testing-a-four-million-user-DR-plan - http://www.computerweekly.com/feature/Testing-a-four-million-user-DR-plan - - Tue, 11 Aug 2015 10:00:57 GMT - - - <![CDATA[Here’s How to Use Facebook’s Mystifying Privacy Settings]]> - Here’s How to Use Facebook’s Mystifying Privacy Settings

    It takes a little bit of work to lock your data down. But if you'd like to keep Facebook private and for-your-eyes-only, you still can.

    -

    The post Here’s How to Use Facebook’s Mystifying Privacy Settings appeared first on WIRED.

    ]]>
    - http://www.wired.com/2015/08/how-to-use-facebook-privacy-settings-step-by-step/ - http://www.wired.com/?p=1833172 - - - - - - - Tue, 11 Aug 2015 09:55:36 GMT -
    - - <![CDATA[Australian businesses under cyber attack]]> - - http://www.computerweekly.com/feature/Australian-businesses-under-cyber-attack - http://www.computerweekly.com/feature/Australian-businesses-under-cyber-attack - - Tue, 11 Aug 2015 08:55:34 GMT - - - <![CDATA[British Gas trials app-based smart-meter display]]> - - http://www.computerweekly.com/news/4500251464/British-Gas-trials-app-based-smart-meter-display - http://www.computerweekly.com/news/4500251464/British-Gas-trials-app-based-smart-meter-display - - Tue, 11 Aug 2015 08:44:11 GMT - - - <![CDATA[Google now an Alphabet company]]> - - http://www.computerweekly.com/news/4500251463/Google-now-an-Alphabet-company - http://www.computerweekly.com/news/4500251463/Google-now-an-Alphabet-company - - Tue, 11 Aug 2015 08:34:38 GMT - - - <![CDATA[Case study: Open University uses Microsoft Azure to create course content clearance hub]]> - - http://www.computerweekly.com/feature/Case-study-Open-University-uses-Microsoft-Azure-to-create-course-content-clearance-hub - http://www.computerweekly.com/feature/Case-study-Open-University-uses-Microsoft-Azure-to-create-course-content-clearance-hub - - Tue, 11 Aug 2015 08:30:32 GMT - - - <![CDATA[Toshiba Announces Three New NVMe SSD Families]]> -

    On the eve of Flash Memory Summit (August 11-13), Toshiba has announced a full range of NVMe-based PCIe SSDs using Toshiba controllers and Toshiba MLC flash.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Toshiba NVMe Drive Families
    Drive SeriesPX04PXG3BG1
    Form Factors and InterfacePCIe 3.0 x4 HHHL /
    - 2.5” U.2
    PCIe 3.1 x4 M.2 2280 / 2.5” SATA ExpressM.2 2230 /
    - 16mm*20mm soldered module "M.2 1620"
    Capacities800 GB, 1600 GB, 3200 GBUp to 1024GBUp to 256 GB
    QSBC Error CorrectionYesYesNo
    TCG Pyrite SecurityNoYesYes
    Sequential Read3100 MB/s??
    Sequential Write2350 MB/s??
    4kB Random Read IOPS660k??
    4kB Random Write IOPS185k??
    - -

    For the enterprise market, the PX04P series complements the SAS-based PX04S drives announced last week. The PX04P is available as a 2.5” drive with a U.2 (SFF-8639) connector, or as a PCIe expansion card. In either case, the drive supports four lanes of PCIe 3.0 and can make good use of that bandwidth to offer up to 3.1 GB/s sequential read speeds. With an endurance rating of 10 drive writes per day it is intended for relatively write-heavy workloads.

    - -

    - -

    For the high-performance client market, the XG3 is available in the M.2 2280 form factor using four lanes of PCIe 3.1, or as a 2.5” drive using the two-lane SATA Express connector. If these drives make it in to the retail channel, it means that consumers whose motherboards have a SATA Express connector but no M.2 slot will finally have an easy way to get in on the PCIe storage revolution.

    - -

    For tablets and ultra-thin laptops, the BG1 is optimized for low power in very small packages. It comes as either an M.2 2230 card or a soldered-down module measuring 16mm by 20mm. The BG1's maximum capacity is only 256 GB, and given the power and size constraints it is probably not using a 4-lane PCIe connection.

    - -

    The two client drive families implement support for the Trusted Computing Group Pyrite standard, a subset of TCG Opal that includes features necessary for things like secure boot but does not include encryption.

    -

    ]]>
    - http://www.anandtech.com/show/9515/toshiba-announces-three-new-nvme-ssd-families - tag:www.anandtech.com,9515:news - - - Tue, 11 Aug 2015 06:00:00 GMT -
    - - <![CDATA[Lenovo Launches New P50 And P70 Mobile Workstations With First Mobile Xeon Chips]]> -

    Today at the SIGGRAPH 2015 Conference and Exhibition, Lenovo unveiled some new mobile workstations. The new ThinkPad P series are aimed at high-end professionals who need a lot of compute on the go. There are two models, with the P50 being a 15.6-inch version, which is a follow-on to the W541. The larger P70 features a 17.3-inch display. Both can pack some serious specifications under the hood, starting with the processor.

    - -

    - -

    Both models will feature a new processor from Intel, which is going to be the first official mobile version of their Xeon line. Intel has not released much information yet, but the Intel Xeon E3-1500M v5 is going to be powering these workstations from Lenovo. While we don’t have exact frequencies yet, the v5 version is going to be based on the just released Skylake architecture, which brings a lot of new technology to the plate. Lenovo will offer the new P series with up to 64 GB of DDR4 memory, arranged in 4 SODIMM slots. One of the reasons to use Xeon is that it supports ECC memory, and these workstations leverage that for the workloads they will be expected to run Also part of the new Xeon will be Thunderbolt 3, and both models have this connectivity. We're not sure yet if Thunderbolt is built into the Xeons, or if something like the Aipine Ridge as an IO controller for this.

    - -

    On the GPU side, Lenovo has included a Quadro card, however the exact model is not known yet.

    - -

    There is also up to 1 TB of PCIe SSD storage available, and up to a 2 TB hard drive. In addition to the Thunderbolt, there will also be HDMI 1.4, mini DisplayPort 1.2, ExpressCard, SDXC, and of course what workstation would not have Gigabit Ethernet, so the P Series has this as well.

    - -

    Wireless is a new card from Intel as well, with the Intel 8260 card which is an 802.11ac model, and Lenovo will be offering it with Bluetooth 4.1 and vPro as well. For those that need connectivity on the go, Lenovo is offering a Sierra EM7445 LTE-A option as well.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Lenovo P Series Mobile Workstations
     P50P70
    CPUIntel Xeon E3 1500M v5
    - Quad-core Skylake
    - ~47W TDP
    GPUNVIDIA Quadro
    - Model number unknown
    MemoryUp to 64 GB DDR4-2133 ECC
    StorageUp to 1TB PCIe SSD
    - Up to 2TB HDD
    Display15.6" 1920x1080 IPS w/optional touch
    - Optional 3840x2160 IPS
    - X-Rite Pantone Color Correction
    17.3" 1920x1080 IPS w/optional touch
    - Optional 3840x2160 IPS
    - X-Rite Pantone Color Correction
    PortsUSB 3.0 x 4
    - Mini DP 1.2
    - HDMI 1.4
    - Thunderbolt 3
    - Docking Connector
    - Smart Card Reader
    - ExpressCard
    - SDXC
    - Headset
    NetworkingIntel 8260 Wireless-AC 802.11ac WiFi
    - Bluetooth 4.11
    - Optional vPro
    - Gigabit Ethernet
    - Sierra EM7445 4G LTE-A
    DimensionsH: 0.96-1.02" (24.5-25.9 mm)
    - W: 14.86" (377.4 mm)
    - D: 9.93" (252.3 mm)
    H: 1.17-1.2" (29.9-31.5 mm)
    - W: 16.4" (416 mm)
    - D: 10.8" (275.5 mm)
    WeightStarting at 5.6 lbs (2.5kg)Starting at 7.6 lbs (3.4 kg)
    Battery Life4 Cell 66 Whr
    - Optional 6 Cell 90 Whr
    8 Cell 96 WHr
    Price$1599+$1999+
    - -

    Other than the larger display, the P70 can also be had with a DVD-RW drive, but hopefully but the time it launches they will at least offer Blu-ray as an option.

    - -

    Speaking of the displays, Lenovo has packed some pretty impressive sounding displays into both models. The P series will offer a 1920x1080p as the base, with optional touch, and there is also a UHD 3840x2160 IPS offering as well. All of the panels are IPS models, and Lenovo has turned to X-Rite to offer Pantone color calibration out of the box, and over the lifetime of the device.

    - -

    - -

    The P series can be had with a good choice of operating systems too, from Windows 10 Pro, Windows 8.1 Pro, or downgrade rights to Windows 7 Professional. If you need Linux for your workstation, they will also be offering Ubuntu and RHEL.

    - -

    Gallery: Lenovo P Series

    - -

    These MIL-SPEC tested and ISV Certified professional workstations will be available in Q4 2015 with the P50 starting at $1599, and the P70 starting at $1999.

    - -

    Source: Lenovo

    -

    ]]>
    - http://www.anandtech.com/show/9503/lenovo-launches-new-p50-and-p70-mobile-workstations-with-first-mobile-xeon-chips - tag:www.anandtech.com,9503:news - - - Tue, 11 Aug 2015 03:00:00 GMT -
    - - <![CDATA[A T-Mobile Version Of Samsung's 8-Inch Galaxy Tab A Has Popped Up On The Carrier's Website]]> - t-mo

    Way back in April Samsung officially announced the Galaxy Tab A, a new tablet line with a 4:3 screen and metal body that screams "iPad alternative" in every language. So far we haven't heard of any carriers taking a bite, but Samsung's tablets are so ubiquitous that it was more or less inevitable. T-Mobile hasn't officially announced a Galaxy Tab A for the "Uncarrier," but the company's support site now has a listing for a branded version.

    Read More

    A T-Mobile Version Of Samsung's 8-Inch Galaxy Tab A Has Popped Up On The Carrier's Website was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/cLaYuqB8MO0/story01.htm - http://www.androidpolice.com/?p=330721 - - - - - - - - - - Tue, 11 Aug 2015 00:43:00 GMT -
    - - <![CDATA[[Update: Nexus 6 LYZ28J For T-Mobile] Google Posts Stagefright-Fixing LMY48I Factory Images For Seven Nexus Devices]]> -
  • 2015-08-05 16.40.30

    Google announced the Stagefright vulnerability fix would start rolling out as an OTA today, but it has also added new factory images to the Nexus developer pages. That means bootloader unlocked Nexus phones and tablets can flash the new build immediately, even if your device is running some wacky ROM.

    Read More

    [Update: Nexus 6 LYZ28J For T-Mobile] Google Posts Stagefright-Fixing LMY48I Factory Images For Seven Nexus Devices was written by the awesome team at Android Police.



    - -
    ]]>
    - http://feedproxy.google.com/~r/AndroidPolice/~3/L9deeyPE124/story01.htm - http://www.androidpolice.com/?p=330059&uniqid=55c9400f482a5 - - - - - - - - - - - - - - - - - - - - Tue, 11 Aug 2015 00:15:04 GMT -
    - - <![CDATA[Qualcomm Launches Snapdragon 616, 412, and 212]]> -

    Today, Qualcomm launched a set of new SoCs, namely the Snapdragon 616, 412, and 212. These are updates to the Snapdragon 615, 410, and 210 respectively.

    - -

    If you were to guess that these are relatively minor updates, you’d be right. First off, the Snapdragon 616 leaves the 615 mostly unchanged, with the top clockspeed of the little cluster jumping from 1 GHz to 1.2 GHz. However it should be noted that there are iterations of the 615 with a 1.11 GHz little cluster clock as well.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Qualcomm's SoC Refresh Lineup
     Snapdragon 616Snapdragon 412Snapdragon 212
    Manufacturing Process28nm LP28nm LP28nm LP
    CPU4 x ARM Cortex A53 @ 1.7GHz
    - 4x ARM Cortex A53 @ 1.2GHz
    4 x ARM Cortex A53 @ 1.4GHz4 x ARM Cortex A7 @ 1.3GHz
    ISA32/64-bit ARMv8-A32/64-bit ARMv8-A32-bit ARMv7
    GPUAdreno 405Adreno 306Adreno 304
    H.265 DecodeYes (1080p)Yes (720p)Yes (1080p)
    Memory Interface32-bit LPDDR3-80032-bit LPDDR2/3-60032-bit LPDDR2/3-533
    Integrated Modem9x25 core, LTE Category 4, DC-HSPA+, DS-DA9x25 core, LTE Category 4, DC-HSPA+, DS-DA9x25 core, LTE Category 4, DC-HSPA+, DS-DA
    Integrated WiFiQualcomm VIVE 802.11ac 1-stream802.11n 1-stream802.11n 1-stream
    eMMC Interface4.514.514.5
    - -

    Meanwhile the Snapdragon 410 to 412 upgrade is a bit bigger, with the single cluster of A53s going from 1.2 GHz to 1.4 GHz and the memory interface going from a max of 533 MHz to 600 MHz. The Snapdragon 210 to 212 upgrade on the other hand is similar to the 615 to 616 upgrade, with the single cluster of A7s going from 1.1 to 1.3 GHz and are otherwise unchanged.

    - -

    Overall it’s a bit unfortunate that none of these SoCs have made the move from a traditional polySiON gate oxide to a high-k metal gate process yet. However I suspect that in these lower tiers even the cost of HKMG would dramatically affect competitiveness and price.

    - -

    Finally, at this point it's unclear when these new variants will begin shipping, but it’s likely that this part is sampling now. Which means that devices with these new SoCs should be available before the end of the year.

    -

    ]]>
    - http://www.anandtech.com/show/9511/qualcomm-launches-snapdragon-616-412-and-212 - tag:www.anandtech.com,9511:news - - - Mon, 10 Aug 2015 22:00:00 GMT -
    - - <![CDATA[Short Takes Daily: What went on in the world of Microsoft on Monday, August 10, 2015]]> - - - - - - Lisa Schmeiser - - - -
    Windows RT users get left behind, Windows 10 Mobile hopefuls wait for bugs to be zapped and Audible gets an upgrade.
    - -

    read more

    ]]>
    - http://winsupersite.com/windows/short-takes-daily-what-went-world-microsoft-monday-august-10-2015 - 58111 at http://winsupersite.com - - Mon, 10 Aug 2015 21:39:00 GMT -
    - - <![CDATA[Google Reorganizes Into Alphabet: Sundar Pichai is CEO of Google]]> -

    Today, Google announced that they will undergo reorganization to better represent the growth that the company has seen in the past few years. As a result, Google the company will be now branded as Alphabet.

    - -

    The big news here is that Google the internet services company will become one subsidiary of the larger Alphabet company - and said subsidiary still operating under the name Google - with the goal of better seperating Google's core business from what are now Alphabet's more experimental, far flung ventures. Consequently this change will see current parts of Google like X labs, Calico, Life Sciences, and other ventures shifted over to Alphabet. Meanwhile web services and software like Android, Maps, and Gmail will remain under the Google brand.

    - -

    Organizationally, Larry Page will remain CEO of this reorganized company, and Sergey Brin will be President. Sundar Pichai will also be CEO of the new Google. Google stock is also immediately being converted over to Alphabet stock, and going forward Alphabet will be the reporting company, however Google-the-subsidiary results will be broken down and reported as part of Alphabet's results.

    - -

    Ultimately it remains to be seen what effects this will have on the Google that we’ve known for the past few years. However given that the management structure has remained relatively constant in this move I suspect that business will continue on as usual.

    -

    ]]>
    - http://www.anandtech.com/show/9512/google-reorganizes-into-alphabet-sundar-pichai-is-ceo-of-google - tag:www.anandtech.com,9512:news - - - Mon, 10 Aug 2015 21:25:00 GMT -
    - - <![CDATA[The State of Windows 10 Mobile]]> - Where exactly do we stand with the progress of Windows 10 Mobile now that its desktop companion has already been released? - -

    read more

    ]]>
    - http://winsupersite.com/windows-10/state-windows-10-mobile - 58091 at http://winsupersite.com - - - - - - - Mon, 10 Aug 2015 19:52:00 GMT -
    - - <![CDATA[How To: Reinstall DisplayLink Drivers for Windows 10]]> - If you need to reinstall your DisplayLink video drivers due to issues with Windows 10, here's a rundown of the easiest way to do it. - -

    read more

    ]]>
    - http://winsupersite.com/windows-10/how-reinstall-displaylink-drivers-windows-10 - 58101 at http://winsupersite.com - - Mon, 10 Aug 2015 19:29:00 GMT -
    - - <![CDATA[4 New Apps You Should Be Using]]> - 4 New Apps You Should Be Using

    Download unless you hate fun.

    -

    The post 4 New Apps You Should Be Using appeared first on WIRED.

    ]]>
    - http://www.wired.com/2015/08/4-new-apps-using/ - http://www.wired.com/?p=1833020 - - - - - Mon, 10 Aug 2015 19:10:50 GMT -
    - - <![CDATA[OpenGL @ SIGGRAPH 2015: OpenGL ES 3.2 & OpenGL Extensions Announced]]> -

    Kicking off this week in Los Angeles is SIGGRAPH 2015, the computer graphics industry’s annual professional conference. As the biggest graphics event of the year this show has become the Khronos Group’s favorite venue for delivering news about the state and development of OpenGL, and this year’s show is no exception. This week will see Khronos delivering news on both OpenGL and OpenGL ES, along with the formation of the OpenGL SC 2.0 working group.

    - -

    OpenGL ES 3.2

    - -

    Starting things off, we have the announcement of OpenGL ES 3.2. The latest version of OpenGL’s embedded variant is receiving a new revision this week, bringing the API up to version 3.2.

    - -

    - -

    With OpenGL ES 3.2, Khronos will officially be rolling the feature set of the Android Extension Pack into the core API. Until now these features have been available as optional extensions – which Google conveniently rolled into the AEP for Android developers – as not all original GPUs capable of supporting OpenGL ES 3.1 could also support the AEP, preventing those features from being rolled into OpenGL ES core.

    - -

    Via these features, OpenGL ES 3.2 will bring support for tessellation, geometry shaders, compute shaders, and ASTC texture compression in to the core OpenGL ES standard. These are major features already found in desktop GPUs for some number of years now, and these days are found in all of the major mobile GPUs as well. Of particular interest here, this means that ASTC is finally part of the OpenGL ES core standard, and while it will take some time to filter out to new OSes and devices, this finally solves the problem with the lack of a standard texture compression format in the mobile space.

    - -

    Meanwhile, as Khronos likes to note in their announcement, the inclusion of these features brings mobile GPUs much closer to parity with their desktop counterparts. At this point there are very few major OpenGL 4.x class (DirectX 11) features not accounted for in mobile GPUs in some form, so the gap between mobile and desktop has been further closed. And of course this means developers can push the envelope even harder on certain classes of graphical effects – especially geometry and compute-based physics simulations – though on a smaller scale more fitting of mobile hardware.

    - -

    As far as OS support goes, Khronos and Google are also announcing today that OpenGL ES 3.2 will be adopted by a future version of Android – presumably 2016’s Android release – at which point OpenGL ES 3.2 will have effectively supplanted the AEP. Meanwhile we haven’t heard anything from the Apple camp about OpenGL ES in some time. iOS never received OpenGL ES 3.1 support, and with Apple gung-ho on Metal there’s no immediate reason to believe this will change with OpenGL ES 3.2.

    - -

    OpenGL SC 2.0

    - -

    Along with the release of OpenGL ES 3.2, Khronos is also announcing that they are forming a working group for OpenGL SC 2.0, which will be based on OpenGL ES 3.

    - -

    - -

    OpenGL SC is a little-known subset of OpenGL ES that is focused on what Khronos and its members call “safety critical” systems, such as automotive and avionics systems. OpenGL SC in turn is essentially a trimmed down version of OpenGL ES that removes some of OpenGL’s flexibility in order to allow easier driver validation and ultimately more reliable operation than what is accepted for OpenGL ES.

    - -

    OpenGL SC was originally created in 2005 and based off of Open GL ES 1.0, the last fixed function version of OpenGL ES. With even time-tested hardware now well outstripping the capabilities of OpenGL SC 1.0, Khronos is forming a new working group to develop OpenGL SC 2.0. 2.0 in turn will be taking OpenGL GL ES 3.x and stripping it down in a similar manner as the original specification in order to produce a pared down version of the API that is more up to date. Khronos is looking to release OpenGL ES 2.0 in 2016.

    - -

    Desktop OpenGL: No New Version, But New Extensions

    - -

    Finally, on the desktop OpenGL front, Khronos will not be announcing a new version of OpenGL this year, making this the first SIGGRAPH in several years where Khronos doesn’t update their venerable graphics API. Citing that OpenGL has largely caught up with desktop hardware as of OpenGL 4.5 – and with attention no doubt split by Vulkan – the consortium is instead going to release several new extensions to unlock new features. These extensions represent features that are expected to be useful for developers and worth having under Khronos control, but are not universally supported by all desktop hardware, making their inclusion into an OpenGL core standard a thorny issue.

    - -

    - -

    Of particular interest on these extensions, one of the extensions will add support for multi-threaded shader compilation in OpenGL, with the goal of cutting down on loading times on shader-heavy workloads. Improved 64-bit integer support will also be coming to OpenGL as part of this extension set; 64-bit integers are still fairly rare in graphics workloads, but with many GPUs now supporting them, there are times where the extra precision is useful. And last but not least of course, as has been the case for the last few iterations of OpenGL, there will also be extensions to enable full OpenGL ES 3.2 interoperability, primarily to support developers in creating OpenGL ES applications.

    - -

    Though it is interesting to note that some of the latest GPU features as exposed by Direct3D feature level 12_1 aren’t included in the extension sets, such as conservative rasterization. Right now a lot of resources are going into developing Vulkan, and while Khronos is committed to continuing to develop OpenGL separate from Vulkan, it may be that more extensive feature additions for OpenGL will have to wait until after Vulkan is done, and/or after all three major desktop vendors support these latest features.

    -

    ]]>
    - http://www.anandtech.com/show/9506/opengl-siggraph-2015-opengl-es-32-opengl-extensions-announced - tag:www.anandtech.com,9506:news - - - Mon, 10 Aug 2015 18:50:00 GMT -
    - - <![CDATA[FEBO is an engraver that uses the sunlight to power your creativity]]> - - http://feedproxy.google.com/~r/TheGadgeteer/~3/-3KTw62yZYc/ - http://the-gadgeteer.com/?p=183368 - - - - - - - Mon, 10 Aug 2015 18:37:16 GMT - - - <![CDATA[Autoglass moves to cloud-based IT infrastructure]]> - - http://www.computerweekly.com/news/4500251405/Autoglass-moves-to-cloud-based-IT-infrastructure - http://www.computerweekly.com/news/4500251405/Autoglass-moves-to-cloud-based-IT-infrastructure - - Mon, 10 Aug 2015 16:15:05 GMT - - - <![CDATA[Google Redesigns Hangouts for Android With Version 4.0]]> -

    Today Google shipped a major update to their Hangouts application for Android. Ever since Hangouts for iOS was updated to 4.0 a little over a month ago Android users have been waiting for the update to make its way to Android. This update has been in the pipeline for quite some time, and it comes with a comprehensive redesign that brings the Hangouts app in line with Google's Material Design visual guidelines.

    - -

    Visually, Hangouts 4.0 for Android is very similar to what shipped on iOS a little while ago. This isn't surprising, as Google's applications for iOS use their Material Design principles heavily. There are a few small differences, such as the spacing of the quick access buttons underneath the message input field, and the calling controls not being hidden behind the three dot overflow menu, but the overall appearance is the same. The appearance is definitely a departure from the previous design which had a strange dual list design which was separated into two tabs.

    - -

    On top of the redesign, Google claims that Hangouts 4.0 has noticeable improvements to performance, reliability, and battery consumption. I personally have never had many issues with Hangouts on Android, but any improvements to performance are always welcomed.

    - -

    Hangouts 4.0 is currently rolling out in stages, and users can expect to receive the update in the near future if they haven't already.

    -

    ]]>
    - http://www.anandtech.com/show/9510/google-redesigns-hangouts-for-android-in-version-40 - tag:www.anandtech.com,9510:news - - - Mon, 10 Aug 2015 15:15:00 GMT -
    - - <![CDATA[How to review your Windows Store app download history on Windows 10]]> - My Library in the Windows Store on the recently released Windows 10 is a central spot to find all the apps you have ever purchased and/or downloaded to your Windows devices. - -

    read more

    ]]>
    - http://winsupersite.com/windows-10/how-review-your-windows-store-app-download-history-windows-10 - 58061 at http://winsupersite.com - - - - - - - - Mon, 10 Aug 2015 15:10:00 GMT -
    - - <![CDATA[Adata PV110 power bank review]]> - - http://feedproxy.google.com/~r/TheGadgeteer/~3/VuBb1hPnBJY/ - http://the-gadgeteer.com/?p=182104 - - - - - Mon, 10 Aug 2015 14:00:29 GMT - - - <![CDATA[Audible Gets a Windows 10 Makeover]]> - Amazon has released a Windows 10 version of it's Audible app that brings a new UI and new features. - -

    read more

    ]]>
    - http://winsupersite.com/windows-10/audible-gets-windows-10-makeover - 58051 at http://winsupersite.com - - - Mon, 10 Aug 2015 13:55:00 GMT -
    - - <![CDATA[Vulkan Status Update: Will Use Feature Sets, Android Support Incoming]]> -

    Along with updates on OpenGL, Khronos is also offering a status update on the development of Vulkan at this year’s SIGGRAPH show. Khronos’s next-generation low-level API was announced last year, with further development taking off this year when it was announced at the API would be absorbing Mantle 1.0 and would operate under its current fiery name. The API is still in development, but Khronos has a few new pieces of information to share on the progress of development.

    - -

    Vulkan Feature Sets

    - -

    First and foremost, there has been a bit of speculation over how Vulkan would manage being a low-level API for both mobile and desktops, and Khronos is finally answering those questions. In the OpenGL ecosystem, new features would be exposed as optional extensions, and then standardized through core releases (e.g. OpenGL ES 3.2). Due to the factors that resulted in the creation of OpenGL ES, this was never a huge problem for either branch of OpenGL since each could be scoped as appropriate and integrated separately. However with Vulkan there is now just one API, and such a coarse approach would imply limiting Vulkan to just the features mobile GPUs could support, or making even more extensive use of extensions.

    - -

    - -

    To that end, today Khronos is announcing that Vulkan will support defined feature sets in order to help simplify application development and to more readily support mobile and desktop hardware under the same API. Feature sets, as implied by the name, will be groupings of features that will be advertised under a single feature set name, with the idea being that developers will build their programs against a handful of feature sets instead of a massive combination of individual extensions or capability bits (though developers can still use individual features if they’d like). Feature sets are nothing new to desktop graphics, with Microsoft’s DirectX standard having supported them since DirectX 11 in 2009.

    - -

    While Khronos is announcing that Vulkan will support feature sets, they are not announcing the individual feature sets, and for good reason. In traditional Khronos consortium fashion, Khronos is going to leave the feature set definitions up to the platform holder rather than define those sets themselves. This means that it will typically be the OS developer defining the feature sets, as will be the case on Android. However because Khronos is leaving this up to the platform holder, for holders who opt not to define feature sets for their Vulkan-enabled platforms, Khronos will step in and define those feature sets. In other words platform holders get first dibs, but either way someone will take on the task of defining the feature sets.

    - -

    Practically speaking, this means that while Android’s feature set will be defined by Google and one can expect SteamOS’s to be defined by Valve, Windows’ feature set will be defined by Khronos. Microsoft is a member of the Khronos consortium and could define it, however Microsoft has taken a hands-off approach on Khronos’s graphics APIs in recent years – presumably in favor of focusing on DirectX – so we’re not expecting to see Microsoft make those definitions. Feature definitions have always been a weak point of the Khronos consortium structure, so giving platform holders the right of first refusal will allow holders such as Google to break the deadlock of the consortium and dictate what features will be supported on Android. Otherwise Khronos will be able to get the job done, though one would expect not without the traditional politics of the consortium.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Vulkan Feature Set Definitions
    PlatformExpected To Be Defined By
    AndroidPlatform Holder - Google
    SteamOSPlatform Holder - Valve?
    LinuxKhronos?
    WindowsKhronos (Platform holder Microsoft is anticipated to decline)
    - -

    Android Support

    - -

    Speaking of Android, along with announcing their support for OpenGL ES 3.2 today, Google is also announcing that they will be supporting Vulkan in a future release of Android. As with OpenGL ES 3.2, no specific timeline or version of Android is mentioned, though it’s a safe bet that it will be the 2016 release. Android has traditionally heavily relied on OpenGL ES, and with Google sewing further ties with Khronos with the Android Extension Pack, it’s not surprising that Android will include support for Vulkan in order to bring low-level graphics programming to the ecosystem’s developers.

    - -

    - -

    Apple, for what it’s worth, has been absent from the Khronos announcements. As the company is pushing Metal on both mobile and desktop, it looks unlikely that they will be adopting Vulkan any time soon. In which case Vulkan wouldn’t quite match OpenGL ES 3.0’s universal reach due to Apple’s reliance on proprietary APIs.

    - -

    Vulkan Conformance Tests Will Be Open Source

    - -

    Meanwhile on the testing and validation front, Khronos is announcing that they are teaming up with Google and the Android Open Source Project to release the Vulkan conformance tests as as open source tests. The tests themselves are being developed by Khronos members and contractors, with the Khronos/ASOP connection coming in to provide the frameworks. The tests themselves are portable to other platforms – Khronos made this point very clear in our briefing – but partnering up with Google helps Khronos get the tests out there sooner and to fulfil their open source goals.

    - -

    - -

    ETA: Late 2015

    - -

    Finally, Khronos is also offering a bit more guidance on when to expect the first revision of Vulkan. Khronos’s goal for the specification is to release it by the end of the year, which means they should be wrapping up development of the specification soon. Meanwhile driver/runtime development has been occurring concurrently with the development of the specification, which means that the first drivers will be ready at the same time. Khronos does require that there are working implementations before a specification is released to production, so with any luck Vulkan will be ready as a development target and for early end-user testing by the end of 2015.

    - -

    - -

    Update: And speaking of Vulkan's ETA, there are multiple Vulkan demos on the SIGGRAPH showfloor, demonstrating the API and the current status of vendor implementations. First out of the gate is Imagination, showing off a demo running on Android.

    - -

    -

    ]]>
    - http://www.anandtech.com/show/9509/vulkan-status-update-will-use-feature-sets-android-support-incoming - tag:www.anandtech.com,9509:news - - - Mon, 10 Aug 2015 13:01:00 GMT -
    - - <![CDATA[USB multimeters are an essential tool for every gadget owner]]> - - http://feedproxy.google.com/~r/TheGadgeteer/~3/g9EhDsnmBhw/ - http://the-gadgeteer.com/?p=183219 - - - - - - Mon, 10 Aug 2015 13:00:54 GMT - - - <![CDATA[ASRock Rack C2750D4I and U-NAS NSC-800: A DIY File Server]]> - Small businesses and power users often need the flexibility offered by a file server when compared to a dedicated NAS. This is where storage servers based on Microsoft's Windows Server offerings and systems based on Red Hat or Ubuntu Linux distributions come into play. These servers can be bought as an appliance or assembled in a do-it-yourself (DIY) fashion. Today, we will be looking at the latter approach using as ASRock Rack C2750D4I Intel Avoton mITX motherboard in a 8-bay U-NAS NSC-800 chassis.

    ]]>
    - http://www.anandtech.com/show/9508/asrock-rack-c2750d4i-and-unas-nsc800-a-diy-file-server - tag:www.anandtech.com,9508:news - - - Mon, 10 Aug 2015 12:45:00 GMT -
    - - <![CDATA[Keep your phone charged and your path lit with Cydekick]]> - - http://feedproxy.google.com/~r/TheGadgeteer/~3/w-vxTt6Dml0/ - http://the-gadgeteer.com/?p=183217 - - - - - - Mon, 10 Aug 2015 12:00:04 GMT - - - <![CDATA[Windows RT will get some elements of Windows 10]]> - Microsoft's current plans do not include a full Windows 10 upgrade for Windows RT based systems but they will receive a couple of the more visual aspects of the recently released OS from Microsoft. - -

    read more

    ]]>
    - http://winsupersite.com/windows-10/windows-rt-will-get-some-elements-windows-10 - 58041 at http://winsupersite.com - - - - - - Mon, 10 Aug 2015 11:27:00 GMT -
    - - <![CDATA[Skylake CPU Package: Mini-Analysis]]> -

    As a short side piece from our in depth review on Intel's 6th Generation Core processors, codename Skylake, the well-known overclocker Splave has posted some very interesting images on the processor itself. We confirmed we are free to use the pictures below from him.

    - -


    -Image from Splave

    - -

    First up is an image of the Skylake i7 silicon die on package. With our trusty interpolation measuring skills, the die area for the GT2 enabled quad core system comes out at 9.05 mm by 13.52 mm, or 122.4 square mm. Let's put this into perspective with other dies:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CPU Specification Comparison
    CPUProcess
    - Node
    CoresGPUTransistor
    - Count
    - (Schematic)
    Die Size
    Intel Skylake GT2 4C14nm4GT2?122.4mm2
    Intel Broadwell-H GT3e 4C14nm4GT3e??
    Intel Haswell-E 8C22nm8N/A2.6B356mm2
    Intel Haswell GT2 4C22nm4GT21.4B177mm2
    Intel Haswell ULT GT3 2C22nm2GT31.3B181mm2
    Intel Ivy Bridge-E 6C22nm6N/A1.86B257mm2
    Intel Ivy Bridge 4C22nm4GT21.2B160mm2
    Intel Sandy Bridge-E 6C32nm6N/A2.27B435mm2
    Intel Sandy Bridge 4C32nm4GT2995M216mm2
    Intel Lynnfield 4C45nm4N/A774M296mm2
    AMD Trinity 4C32nm47660D1.303B246mm2
    AMD Vishera 8C32nm8N/A1.2B315mm2
    - -

    - -

    This makes Skylake the smallest die size for a quad core desktop processor from Intel we have seen, and that is including the integrated graphics in that calcualtion. Depending on the exact architectural details, previously in Haswell the die area was a near even split for cores and graphics after the L3 cache and IO functions (PCIe, Memory, DMI) were removed. 

    - -

    We won't know exact transistor numbers until they are disclosed at Intel's Developer Forum in mid-August, as well as a false color image die shot to show how much die area the main parts of the architecture are using. Although given the similarity to Haswell in terms of feature set (it seems to be similar with a few minor additions such as fixed function units, slightly different libraries, dual memory channels, DMI 3.0, etc.), if we take the number of transistors that GT2 Haswell had (1.4 billion) and put them in the die area we measure from the image, this comes out to a 11.4 million transistors per mm2.

    - -

    Die size aside, Skylake also has a substantially thinner package than Devil's Canyon:

    - -


    -Image from Splave

    - -


    -Image from PCWatch

    - -

    According to PCWatch, the package thickness of the Core i7-4770K is 1.1mm, compared to 0.8mm for Skylake. This is a direct result of using fewer PCB layers, and here we count five for Skylake and eight for Haswell.

    - -

    There could be several reasons for this. The removal of the fully integrated voltage regulator (FIVR) might reduce the number of PCB layers for power planes. The nature of the 14nm die might facilitate a thinner package as well. The cynical answer is that it is used to drive down cost. In the motherboard industry, a PCB with more layers is substantially more expensive but simplifies design when there are more features - there's also a side argument if more layers or fewer layers is better for overclocking. If we transplant this thinking to the processor, it becomes a balance of cost vs. complexity. Either way, the retail price of the processor is still relatively consistent with the previous iterations. Another thought to add to the mix would be if Intel has plans in the works to launch higher end processors based on Skylake (Kaby Lake?) in the future. The slight change in Intel's processor naming scheme (4770K to 6700K, as in 70K to 00K) also points to the potential move later in the lifetime of the product. The only hint in the naming scheme from Intel is that the 'processor numbering reflects that these processors belong to the 6th Gen Intel Core family'.

    - -

    The thinness of the package has implications for removing the lid/heatspreader of the processor as well. Splave notes that previous heatspreader methods involving force, such as vices that were common during Haswell's tenure, may not be appropriate due to the thinness of Skylake. Splave shows an image of a failed attempt by another user on a Skylake CPU:

    - -


    -Image from Splave

    - -

    Instead, a razor method (and something warm such as a hairdryer or the bean bags that iFixit uses to warm up glue in smartphones to take them apart) to cut through the black adhesive between the package and the IHS is suggested and it what was used for the CPU above. As there are no FIVR resistors to worry about on the top of the package, the first resistance a razor blade will encounter after the black adhesive is the silicon die itself. All that being said, over at PCWatch they successfully have used a vice method.

    - -


    -Image from Splave

    - -

    Interestingly the heatspreader for Skylake is heavier than that from Haswell by nearly 20%, moving up from 22g to 26g. Given the copper mass that usually sits on a high end processor this should not matter much, although basic aluminium coolers might see a small benefit here by virtue of the minor extra mass. This might also just be that the mounting requirements for Haswell and Skylake are the same, and the extra mass comes from the added z-height required to maintain the mounting as before. 

    - -

    So why are we talking about removing the heatspreader? Back with Haswell (as well as Ivy Bridge to a degree), it was discovered that the thermal interface material between the silicon die and the heatspreader was both an insufficient amount and lower quality than previous generations, as well as the heatspreader being far away from the CPU due to the black adhesive, causing more air bubbles and poorer heat transfer than is optimal. For a stock processor, this difference has little effect to the use of the system, but for overclockers it meant that they were more thermally limited than silicon limited with their overclocking.

    - -


    -Image courtesy of Idontcare

    - -

    Devil's Canyon changed that - here was a better binned Haswell processor with a higher quality package, giving a ten degrees cooler system at load. It is worth noting that previously on certain platforms Intel had been providing a mixed metal interface (generalized as a soldered interface) between the silicon and the heatspreader, which is the best but most expensive option. If the cost of the interface is reduced by 0.1 cents, then that's a significant saving on millions of processors. Devil's Canyon was a small subset of sales, so spending that extra for that specific crowd could be seen as beneficial to Intel's perspective by overclockers.

    - -


    -Image from PCWatch

    - -

    To paraphrase Splave again, he comments that the thermal paste (TIM)o n his Skylake is certainly worse than that of Devil's Canyon. If the extra mass on the IHS is coming from a taller heatspreader (by virtue of the smaller package substrate), then more TIM is needed otherwise there will be substantial air bubbling of the TIM between the CPU and the heatspreader. By replacing his own thermal paste and resecuring the heatspreader, he saw an 18°C drop in temperatures at his highest air overclock with the old paste (5.1 GHz at 1.48 volts) - from 96ºC that overheated to 78ºC on the warmest core. An 18°C drop is immense. Under those conditions, and based on rough testing not published in our Skylake review, it could equal another 100-400 MHz depending on the quality of the processor. PCWatch confirms that switching out the paste with CoolLaboratory’s Liquid Pro (a liquid metal adhesion interface) reduced temperatures at 4.6 GHz from 88ºC to 68ºC

    - -


    -Image from PCWatch

    - -

    This throws up some questions - is this just a result of design decisions for cost, or is there a Devil's Canyon type processor coming later in the design cycle?

    - -

    Source: Overclock.net, PCWatch

    -

    ]]>
    - http://www.anandtech.com/show/9505/skylake-cpu-package-analysis - tag:www.anandtech.com,9505:news - - - Mon, 10 Aug 2015 10:00:00 GMT -
    - - <![CDATA[Intel Quietly Launches Mobile Xeons: Skylake Based E3-1500M v5]]> -

    In a rather understated blog post, Intel made an interesting move at the end of last week by announcing that for the first time the Xeon platform is heading for mobile workstation platforms.

    - -

    When I first heard this, I thought ‘wait, is it not already?’, given that I have seen laptops with Xeon processors in the past. The fact of the matter is that those previous platforms relied on desktop processors (either socketed or soldered) from the high end line and were only ever found in custom designs such as those from Clevo or Eurocom which promoted a more modular concept.  As a result, these systems were typically heavy, demanding, and featuring more cores/cache/TDP than was expected for a laptop. We also saw consumer processors for notebooks with vPro, but these were typically not ECC memory verified. Intel’s announcement today changes this.

    - -

    With specific mobile processors going Xeon, Intel can forge (with OEMs) a line of workstations that are more akin to the ultrabooks and notebooks we already see in the market but with certified professional level features. Intel is stating that by default all E3-1500M v5 processors will have vPro (which was to be expected) as well as Thunderbolt 3 using Type-C and access to ECC memory. So it does not become hard to imagine a professional version of the Dell XPS 13 or a MacBook / MacBook Professional type device that looks like a Core-M or a 15W clamshell with Thunderbolt 3, and/or ECC memory, while also having hardware-assisted security and ISV workstation level certification. It is our understanding we might expect announcements on specific products from manufacturers in the coming weeks.

    - -

    This announcement does not give details about what types of processors (if they might be dual core, quad core, or have eDRAM) will be coming to the market, only that the mobile workstation market (according to IDC’s most recent report) has showed its sixth straight quarter of year-over-year growth which is a big pointer into the decision to release Xeon on mobile. We will be getting more details as time progresses – with Intel’s Developer Forum conference a week away, we may hear something then.

    - -

    Source: Intel

    -

    ]]>
    - http://www.anandtech.com/show/9507/intel-quietly-launches-mobile-xeons-skylake-e3-1500m-v5 - tag:www.anandtech.com,9507:news - - - Mon, 10 Aug 2015 09:34:00 GMT -
    - - <![CDATA[Aleutia Updates R50 and T1 Fanless Industrial PCs with Partial Copper Chassis]]> -

    Aleutia's fanless industrial PCs have seen deployment in a large number of developing countries as well as other extreme environments, thanks to their rugged nature and low power requirements. We reviewed the Aleutia Relia back in 2012, but, since then, a number of new models have been launched - the Aleutia R50 based on the NUC platform, the Aleutia T1 based on the Intel Atom lineup and the M200 fanless 2U servers with Intel Xeon CPUs.

    - -

    In an attempt to improve the thermal performance of their fanless computing systems, Aleutia has decided to go in for a novel chassis design along with their latest updates to the R50 and T1 families. The R50 is still based on the NUC platform, but the T1 moves to a nano-ITX design.

    - -

    - -

    The Aleutia R50 Broadwell NUC

    - -

    Traditional passively cooled systems involve a copper heatsink on the CPU transferring the heat to a larger chassis (made of steel or aluminum) through copper heat pipes. Copper heat sinks are quite costly (relative to the cost of the system as a whole) as one goes for bigger / heavier ones. Aleutia has re-imagined the chassis by developing a copper heat sink that has the same profile as the chassis itself (made clear in the photograph below).

    - -

    - -

    The holes in the heat sink help it get connected to the rest of the chassis. On the whole, this lends to theoretically better thermal performance and also lends a striking look to both the R50 and T1 PCs. In addition, the presence of more copper for heat dissipation purposes has allowed Aleutia to reduce the volume of the R50 by 24% compared to the Haswell version. We are excited to check out the thermal performance of these PCs once they start shipping later this month.

    - -

    - -

    The Aleutia T1 Bay Trail Nettop

    - -

    In terms of the internal platform itself, the R50 now comes with the Broadwell i3 and i5 (15 W TDP) NUC configurations, while the new T1s will be based on the Bay Trail Celeron J1800 (10 W TDP). The new R50 will come in at £599 for the i3 / 8GB / 128GB configuration - reasonable for industrial PCs, but not the average retail consumer. The T1 will come in around £100 - £200. We should have more information and hands-on time at the Intel Developer Forum later this month.

    -

    ]]>
    - http://www.anandtech.com/show/9504/aleutia-updates-r50-and-t1-fanless-industrial-pcs-with-partial-copper-chassis - tag:www.anandtech.com,9504:news - - - Mon, 10 Aug 2015 07:00:00 GMT -
    - - <![CDATA[FlipWrite iPad cover and keyboard review]]> - - http://feedproxy.google.com/~r/TheGadgeteer/~3/gtKFm7W9Ep8/ - http://the-gadgeteer.com/?p=182135 - - - - - - - Sun, 09 Aug 2015 20:35:00 GMT - - - <![CDATA[iBobber + iPhone = The one that didn’t get away]]> - - http://feedproxy.google.com/~r/TheGadgeteer/~3/P5S7v9vA6V8/ - http://the-gadgeteer.com/?p=183178 - - - - - - - Sun, 09 Aug 2015 15:23:54 GMT - - - <![CDATA[Tru Virtu Cash & Cards 2 Wallet review]]> - - http://feedproxy.google.com/~r/TheGadgeteer/~3/6DGPVRUJZzQ/ - http://the-gadgeteer.com/?p=182344 - - - - - Sun, 09 Aug 2015 13:30:47 GMT - \ No newline at end of file diff --git a/node_modules/express/History.md b/node_modules/express/History.md index 3362dae..f95055a 100644 --- a/node_modules/express/History.md +++ b/node_modules/express/History.md @@ -1,869 +1,18 @@ -4.13.1 / 2015-07-05 +3.21.2 / 2015-07-31 =================== - * deps: accepts@~1.2.10 - - deps: mime-types@~2.1.2 - * deps: qs@4.0.0 - - Fix dropping parameters like `hasOwnProperty` - - Fix various parsing edge cases - * deps: type-is@~1.6.4 - - deps: mime-types@~2.1.2 + * deps: connect@2.30.2 + - deps: body-parser@~1.13.3 + - deps: compression@~1.5.2 + - deps: errorhandler@~1.4.2 + - deps: method-override@~2.3.5 + - deps: serve-index@~1.7.2 + - deps: type-is@~1.6.6 + - deps: vhost@~3.0.1 + * deps: vary@~1.0.1 + - Fix setting empty header from empty `field` - perf: enable strict mode - - perf: remove argument reassignment - -4.13.0 / 2015-06-20 -=================== - - * Add settings to debug output - * Fix `res.format` error when only `default` provided - * Fix issue where `next('route')` in `app.param` would incorrectly skip values - * Fix hiding platform issues with `decodeURIComponent` - - Only `URIError`s are a 400 - * Fix using `*` before params in routes - * Fix using capture groups before params in routes - * Simplify `res.cookie` to call `res.append` - * Use `array-flatten` module for flattening arrays - * deps: accepts@~1.2.9 - - deps: mime-types@~2.1.1 - - perf: avoid argument reassignment & argument slice - - perf: avoid negotiator recursive construction - - perf: enable strict mode - - perf: remove unnecessary bitwise operator - * deps: cookie@0.1.3 - - perf: deduce the scope of try-catch deopt - perf: remove argument reassignments - * deps: escape-html@1.0.2 - * deps: etag@~1.7.0 - - Always include entity length in ETags for hash length extensions - - Generate non-Stats ETags using MD5 only (no longer CRC32) - - Improve stat performance by removing hashing - - Improve support for JXcore - - Remove base64 padding in ETags to shorten - - Support "fake" stats objects in environments without fs - - Use MD5 instead of MD4 in weak ETags over 1KB - * deps: finalhandler@0.4.0 - - Fix a false-positive when unpiping in Node.js 0.8 - - Support `statusCode` property on `Error` objects - - Use `unpipe` module for unpiping requests - - deps: escape-html@1.0.2 - - deps: on-finished@~2.3.0 - - perf: enable strict mode - - perf: remove argument reassignment - * deps: fresh@0.3.0 - - Add weak `ETag` matching support - * deps: on-finished@~2.3.0 - - Add defined behavior for HTTP `CONNECT` requests - - Add defined behavior for HTTP `Upgrade` requests - - deps: ee-first@1.1.1 - * deps: path-to-regexp@0.1.6 - * deps: send@0.13.0 - - Allow Node.js HTTP server to set `Date` response header - - Fix incorrectly removing `Content-Location` on 304 response - - Improve the default redirect response headers - - Send appropriate headers on default error response - - Use `http-errors` for standard emitted errors - - Use `statuses` instead of `http` module for status messages - - deps: escape-html@1.0.2 - - deps: etag@~1.7.0 - - deps: fresh@0.3.0 - - deps: on-finished@~2.3.0 - - perf: enable strict mode - - perf: remove unnecessary array allocations - * deps: serve-static@~1.10.0 - - Add `fallthrough` option - - Fix reading options from options prototype - - Improve the default redirect response headers - - Malformed URLs now `next()` instead of 400 - - deps: escape-html@1.0.2 - - deps: send@0.13.0 - - perf: enable strict mode - - perf: remove argument reassignment - * deps: type-is@~1.6.3 - - deps: mime-types@~2.1.1 - - perf: reduce try block size - - perf: remove bitwise operations - * perf: enable strict mode - * perf: isolate `app.render` try block - * perf: remove argument reassignments in application - * perf: remove argument reassignments in request prototype - * perf: remove argument reassignments in response prototype - * perf: remove argument reassignments in routing - * perf: remove argument reassignments in `View` - * perf: skip attempting to decode zero length string - * perf: use saved reference to `http.STATUS_CODES` - -4.12.4 / 2015-05-17 -=================== - - * deps: accepts@~1.2.7 - - deps: mime-types@~2.0.11 - - deps: negotiator@0.5.3 - * deps: debug@~2.2.0 - - deps: ms@0.7.1 - * deps: depd@~1.0.1 - * deps: etag@~1.6.0 - - Improve support for JXcore - - Support "fake" stats objects in environments without `fs` - * deps: finalhandler@0.3.6 - - deps: debug@~2.2.0 - - deps: on-finished@~2.2.1 - * deps: on-finished@~2.2.1 - - Fix `isFinished(req)` when data buffered - * deps: proxy-addr@~1.0.8 - - deps: ipaddr.js@1.0.1 - * deps: qs@2.4.2 - - Fix allowing parameters like `constructor` - * deps: send@0.12.3 - - deps: debug@~2.2.0 - - deps: depd@~1.0.1 - - deps: etag@~1.6.0 - - deps: ms@0.7.1 - - deps: on-finished@~2.2.1 - * deps: serve-static@~1.9.3 - - deps: send@0.12.3 - * deps: type-is@~1.6.2 - - deps: mime-types@~2.0.11 - -4.12.3 / 2015-03-17 -=================== - - * deps: accepts@~1.2.5 - - deps: mime-types@~2.0.10 - * deps: debug@~2.1.3 - - Fix high intensity foreground color for bold - - deps: ms@0.7.0 - * deps: finalhandler@0.3.4 - - deps: debug@~2.1.3 - * deps: proxy-addr@~1.0.7 - - deps: ipaddr.js@0.1.9 - * deps: qs@2.4.1 - - Fix error when parameter `hasOwnProperty` is present - * deps: send@0.12.2 - - Throw errors early for invalid `extensions` or `index` options - - deps: debug@~2.1.3 - * deps: serve-static@~1.9.2 - - deps: send@0.12.2 - * deps: type-is@~1.6.1 - - deps: mime-types@~2.0.10 - -4.12.2 / 2015-03-02 -=================== - - * Fix regression where `"Request aborted"` is logged using `res.sendFile` - -4.12.1 / 2015-03-01 -=================== - - * Fix constructing application with non-configurable prototype properties - * Fix `ECONNRESET` errors from `res.sendFile` usage - * Fix `req.host` when using "trust proxy" hops count - * Fix `req.protocol`/`req.secure` when using "trust proxy" hops count - * Fix wrong `code` on aborted connections from `res.sendFile` - * deps: merge-descriptors@1.0.0 - -4.12.0 / 2015-02-23 -=================== - - * Fix `"trust proxy"` setting to inherit when app is mounted - * Generate `ETag`s for all request responses - - No longer restricted to only responses for `GET` and `HEAD` requests - * Use `content-type` to parse `Content-Type` headers - * deps: accepts@~1.2.4 - - Fix preference sorting to be stable for long acceptable lists - - deps: mime-types@~2.0.9 - - deps: negotiator@0.5.1 - * deps: cookie-signature@1.0.6 - * deps: send@0.12.1 - - Always read the stat size from the file - - Fix mutating passed-in `options` - - deps: mime@1.3.4 - * deps: serve-static@~1.9.1 - - deps: send@0.12.1 - * deps: type-is@~1.6.0 - - fix argument reassignment - - fix false-positives in `hasBody` `Transfer-Encoding` check - - support wildcard for both type and subtype (`*/*`) - - deps: mime-types@~2.0.9 - -4.11.2 / 2015-02-01 -=================== - - * Fix `res.redirect` double-calling `res.end` for `HEAD` requests - * deps: accepts@~1.2.3 - - deps: mime-types@~2.0.8 - * deps: proxy-addr@~1.0.6 - - deps: ipaddr.js@0.1.8 - * deps: type-is@~1.5.6 - - deps: mime-types@~2.0.8 - -4.11.1 / 2015-01-20 -=================== - - * deps: send@0.11.1 - - Fix root path disclosure - * deps: serve-static@~1.8.1 - - Fix redirect loop in Node.js 0.11.14 - - Fix root path disclosure - - deps: send@0.11.1 - -4.11.0 / 2015-01-13 -=================== - - * Add `res.append(field, val)` to append headers - * Deprecate leading `:` in `name` for `app.param(name, fn)` - * Deprecate `req.param()` -- use `req.params`, `req.body`, or `req.query` instead - * Deprecate `app.param(fn)` - * Fix `OPTIONS` responses to include the `HEAD` method properly - * Fix `res.sendFile` not always detecting aborted connection - * Match routes iteratively to prevent stack overflows - * deps: accepts@~1.2.2 - - deps: mime-types@~2.0.7 - - deps: negotiator@0.5.0 - * deps: send@0.11.0 - - deps: debug@~2.1.1 - - deps: etag@~1.5.1 - - deps: ms@0.7.0 - - deps: on-finished@~2.2.0 - * deps: serve-static@~1.8.0 - - deps: send@0.11.0 - -4.10.8 / 2015-01-13 -=================== - - * Fix crash from error within `OPTIONS` response handler - * deps: proxy-addr@~1.0.5 - - deps: ipaddr.js@0.1.6 - -4.10.7 / 2015-01-04 -=================== - - * Fix `Allow` header for `OPTIONS` to not contain duplicate methods - * Fix incorrect "Request aborted" for `res.sendFile` when `HEAD` or 304 - * deps: debug@~2.1.1 - * deps: finalhandler@0.3.3 - - deps: debug@~2.1.1 - - deps: on-finished@~2.2.0 - * deps: methods@~1.1.1 - * deps: on-finished@~2.2.0 - * deps: serve-static@~1.7.2 - - Fix potential open redirect when mounted at root - * deps: type-is@~1.5.5 - - deps: mime-types@~2.0.7 - -4.10.6 / 2014-12-12 -=================== - - * Fix exception in `req.fresh`/`req.stale` without response headers - -4.10.5 / 2014-12-10 -=================== - - * Fix `res.send` double-calling `res.end` for `HEAD` requests - * deps: accepts@~1.1.4 - - deps: mime-types@~2.0.4 - * deps: type-is@~1.5.4 - - deps: mime-types@~2.0.4 - -4.10.4 / 2014-11-24 -=================== - - * Fix `res.sendfile` logging standard write errors - -4.10.3 / 2014-11-23 -=================== - - * Fix `res.sendFile` logging standard write errors - * deps: etag@~1.5.1 - * deps: proxy-addr@~1.0.4 - - deps: ipaddr.js@0.1.5 - * deps: qs@2.3.3 - - Fix `arrayLimit` behavior - -4.10.2 / 2014-11-09 -=================== - - * Correctly invoke async router callback asynchronously - * deps: accepts@~1.1.3 - - deps: mime-types@~2.0.3 - * deps: type-is@~1.5.3 - - deps: mime-types@~2.0.3 - -4.10.1 / 2014-10-28 -=================== - - * Fix handling of URLs containing `://` in the path - * deps: qs@2.3.2 - - Fix parsing of mixed objects and values - -4.10.0 / 2014-10-23 -=================== - - * Add support for `app.set('views', array)` - - Views are looked up in sequence in array of directories - * Fix `res.send(status)` to mention `res.sendStatus(status)` - * Fix handling of invalid empty URLs - * Use `content-disposition` module for `res.attachment`/`res.download` - - Sends standards-compliant `Content-Disposition` header - - Full Unicode support - * Use `path.resolve` in view lookup - * deps: debug@~2.1.0 - - Implement `DEBUG_FD` env variable support - * deps: depd@~1.0.0 - * deps: etag@~1.5.0 - - Improve string performance - - Slightly improve speed for weak ETags over 1KB - * deps: finalhandler@0.3.2 - - Terminate in progress response only on error - - Use `on-finished` to determine request status - - deps: debug@~2.1.0 - - deps: on-finished@~2.1.1 - * deps: on-finished@~2.1.1 - - Fix handling of pipelined requests - * deps: qs@2.3.0 - - Fix parsing of mixed implicit and explicit arrays - * deps: send@0.10.1 - - deps: debug@~2.1.0 - - deps: depd@~1.0.0 - - deps: etag@~1.5.0 - - deps: on-finished@~2.1.1 - * deps: serve-static@~1.7.1 - - deps: send@0.10.1 - -4.9.8 / 2014-10-17 -================== - - * Fix `res.redirect` body when redirect status specified - * deps: accepts@~1.1.2 - - Fix error when media type has invalid parameter - - deps: negotiator@0.4.9 - -4.9.7 / 2014-10-10 -================== - - * Fix using same param name in array of paths - -4.9.6 / 2014-10-08 -================== - - * deps: accepts@~1.1.1 - - deps: mime-types@~2.0.2 - - deps: negotiator@0.4.8 - * deps: serve-static@~1.6.4 - - Fix redirect loop when index file serving disabled - * deps: type-is@~1.5.2 - - deps: mime-types@~2.0.2 - -4.9.5 / 2014-09-24 -================== - - * deps: etag@~1.4.0 - * deps: proxy-addr@~1.0.3 - - Use `forwarded` npm module - * deps: send@0.9.3 - - deps: etag@~1.4.0 - * deps: serve-static@~1.6.3 - - deps: send@0.9.3 - -4.9.4 / 2014-09-19 -================== - - * deps: qs@2.2.4 - - Fix issue with object keys starting with numbers truncated - -4.9.3 / 2014-09-18 -================== - - * deps: proxy-addr@~1.0.2 - - Fix a global leak when multiple subnets are trusted - - deps: ipaddr.js@0.1.3 - -4.9.2 / 2014-09-17 -================== - - * Fix regression for empty string `path` in `app.use` - * Fix `router.use` to accept array of middleware without path - * Improve error message for bad `app.use` arguments - -4.9.1 / 2014-09-16 -================== - - * Fix `app.use` to accept array of middleware without path - * deps: depd@0.4.5 - * deps: etag@~1.3.1 - * deps: send@0.9.2 - - deps: depd@0.4.5 - - deps: etag@~1.3.1 - - deps: range-parser@~1.0.2 - * deps: serve-static@~1.6.2 - - deps: send@0.9.2 - -4.9.0 / 2014-09-08 -================== - - * Add `res.sendStatus` - * Invoke callback for sendfile when client aborts - - Applies to `res.sendFile`, `res.sendfile`, and `res.download` - - `err` will be populated with request aborted error - * Support IP address host in `req.subdomains` - * Use `etag` to generate `ETag` headers - * deps: accepts@~1.1.0 - - update `mime-types` - * deps: cookie-signature@1.0.5 - * deps: debug@~2.0.0 - * deps: finalhandler@0.2.0 - - Set `X-Content-Type-Options: nosniff` header - - deps: debug@~2.0.0 - * deps: fresh@0.2.4 - * deps: media-typer@0.3.0 - - Throw error when parameter format invalid on parse - * deps: qs@2.2.3 - - Fix issue where first empty value in array is discarded - * deps: range-parser@~1.0.2 - * deps: send@0.9.1 - - Add `lastModified` option - - Use `etag` to generate `ETag` header - - deps: debug@~2.0.0 - - deps: fresh@0.2.4 - * deps: serve-static@~1.6.1 - - Add `lastModified` option - - deps: send@0.9.1 - * deps: type-is@~1.5.1 - - fix `hasbody` to be true for `content-length: 0` - - deps: media-typer@0.3.0 - - deps: mime-types@~2.0.1 - * deps: vary@~1.0.0 - - Accept valid `Vary` header string as `field` - -4.8.8 / 2014-09-04 -================== - - * deps: send@0.8.5 - - Fix a path traversal issue when using `root` - - Fix malicious path detection for empty string path - * deps: serve-static@~1.5.4 - - deps: send@0.8.5 - -4.8.7 / 2014-08-29 -================== - - * deps: qs@2.2.2 - - Remove unnecessary cloning - -4.8.6 / 2014-08-27 -================== - - * deps: qs@2.2.0 - - Array parsing fix - - Performance improvements - -4.8.5 / 2014-08-18 -================== - - * deps: send@0.8.3 - - deps: destroy@1.0.3 - - deps: on-finished@2.1.0 - * deps: serve-static@~1.5.3 - - deps: send@0.8.3 - -4.8.4 / 2014-08-14 -================== - - * deps: qs@1.2.2 - * deps: send@0.8.2 - - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream` - * deps: serve-static@~1.5.2 - - deps: send@0.8.2 - -4.8.3 / 2014-08-10 -================== - - * deps: parseurl@~1.3.0 - * deps: qs@1.2.1 - * deps: serve-static@~1.5.1 - - Fix parsing of weird `req.originalUrl` values - - deps: parseurl@~1.3.0 - - deps: utils-merge@1.0.0 - -4.8.2 / 2014-08-07 -================== - - * deps: qs@1.2.0 - - Fix parsing array of objects - -4.8.1 / 2014-08-06 -================== - - * fix incorrect deprecation warnings on `res.download` - * deps: qs@1.1.0 - - Accept urlencoded square brackets - - Accept empty values in implicit array notation - -4.8.0 / 2014-08-05 -================== - - * add `res.sendFile` - - accepts a file system path instead of a URL - - requires an absolute path or `root` option specified - * deprecate `res.sendfile` -- use `res.sendFile` instead - * support mounted app as any argument to `app.use()` - * deps: qs@1.0.2 - - Complete rewrite - - Limits array length to 20 - - Limits object depth to 5 - - Limits parameters to 1,000 - * deps: send@0.8.1 - - Add `extensions` option - * deps: serve-static@~1.5.0 - - Add `extensions` option - - deps: send@0.8.1 - -4.7.4 / 2014-08-04 -================== - - * fix `res.sendfile` regression for serving directory index files - * deps: send@0.7.4 - - Fix incorrect 403 on Windows and Node.js 0.11 - - Fix serving index files without root dir - * deps: serve-static@~1.4.4 - - deps: send@0.7.4 - -4.7.3 / 2014-08-04 -================== - - * deps: send@0.7.3 - - Fix incorrect 403 on Windows and Node.js 0.11 - * deps: serve-static@~1.4.3 - - Fix incorrect 403 on Windows and Node.js 0.11 - - deps: send@0.7.3 - -4.7.2 / 2014-07-27 -================== - - * deps: depd@0.4.4 - - Work-around v8 generating empty stack traces - * deps: send@0.7.2 - - deps: depd@0.4.4 - * deps: serve-static@~1.4.2 - -4.7.1 / 2014-07-26 -================== - - * deps: depd@0.4.3 - - Fix exception when global `Error.stackTraceLimit` is too low - * deps: send@0.7.1 - - deps: depd@0.4.3 - * deps: serve-static@~1.4.1 - -4.7.0 / 2014-07-25 -================== - - * fix `req.protocol` for proxy-direct connections - * configurable query parser with `app.set('query parser', parser)` - - `app.set('query parser', 'extended')` parse with "qs" module - - `app.set('query parser', 'simple')` parse with "querystring" core module - - `app.set('query parser', false)` disable query string parsing - - `app.set('query parser', true)` enable simple parsing - * deprecate `res.json(status, obj)` -- use `res.status(status).json(obj)` instead - * deprecate `res.jsonp(status, obj)` -- use `res.status(status).jsonp(obj)` instead - * deprecate `res.send(status, body)` -- use `res.status(status).send(body)` instead - * deps: debug@1.0.4 - * deps: depd@0.4.2 - - Add `TRACE_DEPRECATION` environment variable - - Remove non-standard grey color from color output - - Support `--no-deprecation` argument - - Support `--trace-deprecation` argument - * deps: finalhandler@0.1.0 - - Respond after request fully read - - deps: debug@1.0.4 - * deps: parseurl@~1.2.0 - - Cache URLs based on original value - - Remove no-longer-needed URL mis-parse work-around - - Simplify the "fast-path" `RegExp` - * deps: send@0.7.0 - - Add `dotfiles` option - - Cap `maxAge` value to 1 year - - deps: debug@1.0.4 - - deps: depd@0.4.2 - * deps: serve-static@~1.4.0 - - deps: parseurl@~1.2.0 - - deps: send@0.7.0 - * perf: prevent multiple `Buffer` creation in `res.send` - -4.6.1 / 2014-07-12 -================== - - * fix `subapp.mountpath` regression for `app.use(subapp)` - -4.6.0 / 2014-07-11 -================== - - * accept multiple callbacks to `app.use()` - * add explicit "Rosetta Flash JSONP abuse" protection - - previous versions are not vulnerable; this is just explicit protection - * catch errors in multiple `req.param(name, fn)` handlers - * deprecate `res.redirect(url, status)` -- use `res.redirect(status, url)` instead - * fix `res.send(status, num)` to send `num` as json (not error) - * remove unnecessary escaping when `res.jsonp` returns JSON response - * support non-string `path` in `app.use(path, fn)` - - supports array of paths - - supports `RegExp` - * router: fix optimization on router exit - * router: refactor location of `try` blocks - * router: speed up standard `app.use(fn)` - * deps: debug@1.0.3 - - Add support for multiple wildcards in namespaces - * deps: finalhandler@0.0.3 - - deps: debug@1.0.3 - * deps: methods@1.1.0 - - add `CONNECT` - * deps: parseurl@~1.1.3 - - faster parsing of href-only URLs - * deps: path-to-regexp@0.1.3 - * deps: send@0.6.0 - - deps: debug@1.0.3 - * deps: serve-static@~1.3.2 - - deps: parseurl@~1.1.3 - - deps: send@0.6.0 - * perf: fix arguments reassign deopt in some `res` methods - -4.5.1 / 2014-07-06 -================== - - * fix routing regression when altering `req.method` - -4.5.0 / 2014-07-04 -================== - - * add deprecation message to non-plural `req.accepts*` - * add deprecation message to `res.send(body, status)` - * add deprecation message to `res.vary()` - * add `headers` option to `res.sendfile` - - use to set headers on successful file transfer - * add `mergeParams` option to `Router` - - merges `req.params` from parent routes - * add `req.hostname` -- correct name for what `req.host` returns - * deprecate things with `depd` module - * deprecate `req.host` -- use `req.hostname` instead - * fix behavior when handling request without routes - * fix handling when `route.all` is only route - * invoke `router.param()` only when route matches - * restore `req.params` after invoking router - * use `finalhandler` for final response handling - * use `media-typer` to alter content-type charset - * deps: accepts@~1.0.7 - * deps: send@0.5.0 - - Accept string for `maxage` (converted by `ms`) - - Include link in default redirect response - * deps: serve-static@~1.3.0 - - Accept string for `maxAge` (converted by `ms`) - - Add `setHeaders` option - - Include HTML link in redirect response - - deps: send@0.5.0 - * deps: type-is@~1.3.2 - -4.4.5 / 2014-06-26 -================== - - * deps: cookie-signature@1.0.4 - - fix for timing attacks - -4.4.4 / 2014-06-20 -================== - - * fix `res.attachment` Unicode filenames in Safari - * fix "trim prefix" debug message in `express:router` - * deps: accepts@~1.0.5 - * deps: buffer-crc32@0.2.3 - -4.4.3 / 2014-06-11 -================== - - * fix persistence of modified `req.params[name]` from `app.param()` - * deps: accepts@1.0.3 - - deps: negotiator@0.4.6 - * deps: debug@1.0.2 - * deps: send@0.4.3 - - Do not throw un-catchable error on file open race condition - - Use `escape-html` for HTML escaping - - deps: debug@1.0.2 - - deps: finished@1.2.2 - - deps: fresh@0.2.2 - * deps: serve-static@1.2.3 - - Do not throw un-catchable error on file open race condition - - deps: send@0.4.3 - -4.4.2 / 2014-06-09 -================== - - * fix catching errors from top-level handlers - * use `vary` module for `res.vary` - * deps: debug@1.0.1 - * deps: proxy-addr@1.0.1 - * deps: send@0.4.2 - - fix "event emitter leak" warnings - - deps: debug@1.0.1 - - deps: finished@1.2.1 - * deps: serve-static@1.2.2 - - fix "event emitter leak" warnings - - deps: send@0.4.2 - * deps: type-is@1.2.1 - -4.4.1 / 2014-06-02 -================== - - * deps: methods@1.0.1 - * deps: send@0.4.1 - - Send `max-age` in `Cache-Control` in correct format - * deps: serve-static@1.2.1 - - use `escape-html` for escaping - - deps: send@0.4.1 - -4.4.0 / 2014-05-30 -================== - - * custom etag control with `app.set('etag', val)` - - `app.set('etag', function(body, encoding){ return '"etag"' })` custom etag generation - - `app.set('etag', 'weak')` weak tag - - `app.set('etag', 'strong')` strong etag - - `app.set('etag', false)` turn off - - `app.set('etag', true)` standard etag - * mark `res.send` ETag as weak and reduce collisions - * update accepts to 1.0.2 - - Fix interpretation when header not in request - * update send to 0.4.0 - - Calculate ETag with md5 for reduced collisions - - Ignore stream errors after request ends - - deps: debug@0.8.1 - * update serve-static to 1.2.0 - - Calculate ETag with md5 for reduced collisions - - Ignore stream errors after request ends - - deps: send@0.4.0 - -4.3.2 / 2014-05-28 -================== - - * fix handling of errors from `router.param()` callbacks - -4.3.1 / 2014-05-23 -================== - - * revert "fix behavior of multiple `app.VERB` for the same path" - - this caused a regression in the order of route execution - -4.3.0 / 2014-05-21 -================== - - * add `req.baseUrl` to access the path stripped from `req.url` in routes - * fix behavior of multiple `app.VERB` for the same path - * fix issue routing requests among sub routers - * invoke `router.param()` only when necessary instead of every match - * proper proxy trust with `app.set('trust proxy', trust)` - - `app.set('trust proxy', 1)` trust first hop - - `app.set('trust proxy', 'loopback')` trust loopback addresses - - `app.set('trust proxy', '10.0.0.1')` trust single IP - - `app.set('trust proxy', '10.0.0.1/16')` trust subnet - - `app.set('trust proxy', '10.0.0.1, 10.0.0.2')` trust list - - `app.set('trust proxy', false)` turn off - - `app.set('trust proxy', true)` trust everything - * set proper `charset` in `Content-Type` for `res.send` - * update type-is to 1.2.0 - - support suffix matching - -4.2.0 / 2014-05-11 -================== - - * deprecate `app.del()` -- use `app.delete()` instead - * deprecate `res.json(obj, status)` -- use `res.json(status, obj)` instead - - the edge-case `res.json(status, num)` requires `res.status(status).json(num)` - * deprecate `res.jsonp(obj, status)` -- use `res.jsonp(status, obj)` instead - - the edge-case `res.jsonp(status, num)` requires `res.status(status).jsonp(num)` - * fix `req.next` when inside router instance - * include `ETag` header in `HEAD` requests - * keep previous `Content-Type` for `res.jsonp` - * support PURGE method - - add `app.purge` - - add `router.purge` - - include PURGE in `app.all` - * update debug to 0.8.0 - - add `enable()` method - - change from stderr to stdout - * update methods to 1.0.0 - - add PURGE - -4.1.2 / 2014-05-08 -================== - - * fix `req.host` for IPv6 literals - * fix `res.jsonp` error if callback param is object - -4.1.1 / 2014-04-27 -================== - - * fix package.json to reflect supported node version - -4.1.0 / 2014-04-24 -================== - - * pass options from `res.sendfile` to `send` - * preserve casing of headers in `res.header` and `res.set` - * support unicode file names in `res.attachment` and `res.download` - * update accepts to 1.0.1 - - deps: negotiator@0.4.0 - * update cookie to 0.1.2 - - Fix for maxAge == 0 - - made compat with expires field - * update send to 0.3.0 - - Accept API options in options object - - Coerce option types - - Control whether to generate etags - - Default directory access to 403 when index disabled - - Fix sending files with dots without root set - - Include file path in etag - - Make "Can't set headers after they are sent." catchable - - Send full entity-body for multi range requests - - Set etags to "weak" - - Support "If-Range" header - - Support multiple index paths - - deps: mime@1.2.11 - * update serve-static to 1.1.0 - - Accept options directly to `send` module - - Resolve relative paths at middleware setup - - Use parseurl to parse the URL from request - - deps: send@0.3.0 - * update type-is to 1.1.0 - - add non-array values support - - add `multipart` as a shorthand - -4.0.0 / 2014-04-09 -================== - - * remove: - - node 0.8 support - - connect and connect's patches except for charset handling - - express(1) - moved to [express-generator](https://github.com/expressjs/generator) - - `express.createServer()` - it has been deprecated for a long time. Use `express()` - - `app.configure` - use logic in your own app code - - `app.router` - is removed - - `req.auth` - use `basic-auth` instead - - `req.accepted*` - use `req.accepts*()` instead - - `res.location` - relative URL resolution is removed - - `res.charset` - include the charset in the content type when using `res.set()` - - all bundled middleware except `static` - * change: - - `app.route` -> `app.mountpath` when mounting an express app in another express app - - `json spaces` no longer enabled by default in development - - `req.accepts*` -> `req.accepts*s` - i.e. `req.acceptsEncoding` -> `req.acceptsEncodings` - - `req.params` is now an object instead of an array - - `res.locals` is no longer a function. It is a plain js object. Treat it as such. - - `res.headerSent` -> `res.headersSent` to match node.js ServerResponse object - * refactor: - - `req.accepts*` with [accepts](https://github.com/expressjs/accepts) - - `req.is` with [type-is](https://github.com/expressjs/type-is) - - [path-to-regexp](https://github.com/component/path-to-regexp) - * add: - - `app.router()` - returns the app Router instance - - `app.route()` - Proxy to the app's `Router#route()` method to create a new route - - Router & Route - public API 3.21.1 / 2015-07-05 =================== @@ -1242,7 +391,6 @@ 3.17.0 / 2014-09-08 =================== - * Support `X-Forwarded-Host` in `req.subdomains` * Support IP address host in `req.subdomains` * deps: connect@2.26.0 - deps: body-parser@~1.8.1 @@ -2765,7 +1913,7 @@ Shaw] * Added "encoding" option to Request#render(). Closes #299 * Added "dump exceptions" setting, which is enabled by default. * Added simple ejs template engine support - * Added error response support for text/plain, application/json. Closes #297 + * Added error reponse support for text/plain, application/json. Closes #297 * Added callback function param to Request#error() * Added Request#sendHead() * Added Request#stream() @@ -2979,7 +2127,7 @@ Shaw] * Updated sample chat app to show messages on load * Updated libxmljs parseString -> parseHtmlString * Fixed `make init` to work with older versions of git - * Fixed specs can now run independent specs for those who cant build deps. Closes #127 + * Fixed specs can now run independant specs for those who cant build deps. Closes #127 * Fixed issues introduced by the node url module changes. Closes 126. * Fixed two assertions failing due to Collection#keys() returning strings * Fixed faulty Collection#toArray() spec due to keys() returning strings diff --git a/node_modules/express/LICENSE b/node_modules/express/LICENSE index aa927e4..bf9058b 100644 --- a/node_modules/express/LICENSE +++ b/node_modules/express/LICENSE @@ -1,7 +1,7 @@ (The MIT License) -Copyright (c) 2009-2014 TJ Holowaychuk -Copyright (c) 2013-2014 Roman Shtylman +Copyright (c) 2009-2013 TJ Holowaychuk +Copyright (c) 2013 Roman Shtylman Copyright (c) 2014-2015 Douglas Christopher Wilson Permission is hereby granted, free of charge, to any person obtaining @@ -21,4 +21,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/express/Readme.md b/node_modules/express/Readme.md index 8da83a5..0c84aa6 100644 --- a/node_modules/express/Readme.md +++ b/node_modules/express/Readme.md @@ -1,79 +1,55 @@ -[![Express Logo](https://i.cloudup.com/zfY6lL7eFa-3000x3000.png)](http://expressjs.com/) +[![express logo](http://f.cl.ly/items/0V2S1n0K1i3y1c122g04/Screen%20Shot%202012-04-11%20at%209.59.42%20AM.png)](http://expressjs.com/) Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). - [![NPM Version][npm-image]][npm-url] - [![NPM Downloads][downloads-image]][downloads-url] - [![Linux Build][travis-image]][travis-url] - [![Windows Build][appveyor-image]][appveyor-url] - [![Test Coverage][coveralls-image]][coveralls-url] + [![NPM version](https://img.shields.io/npm/v/express.svg)](https://www.npmjs.org/package/express) + [![Build Status](https://img.shields.io/travis/strongloop/express/3.x.svg)](https://travis-ci.org/strongloop/express) + [![Coverage Status](https://img.shields.io/coveralls/strongloop/express/3.x.svg)](https://coveralls.io/r/strongloop/express) + [![Gratipay](https://img.shields.io/gratipay/dougwilson.svg)](https://gratipay.com/dougwilson/) ```js -var express = require('express') -var app = express() +var express = require('express'); +var app = express(); -app.get('/', function (req, res) { - res.send('Hello World') -}) +app.get('/', function(req, res){ + res.send('Hello World'); +}); -app.listen(3000) +app.listen(3000); ``` ## Installation -```bash -$ npm install express -``` - -## Features - - * Robust routing - * Focus on high performance - * Super-high test coverage - * HTTP helpers (redirection, caching, etc) - * View system supporting 14+ template engines - * Content negotiation - * Executable for generating applications quickly - -## Docs & Community - - * [Website and Documentation](http://expressjs.com/) - [[website repo](https://github.com/strongloop/expressjs.com)] - * [#express](https://webchat.freenode.net/?channels=express) on freenode IRC - * [Github Organization](https://github.com/expressjs) for Official Middleware & Modules - * Visit the [Wiki](https://github.com/strongloop/express/wiki) - * [Google Group](https://groups.google.com/group/express-js) for discussion - * [Русскоязычная документация](http://jsman.ru/express/) - * [한국어 문서](http://expressjs.kr) - [[website repo](https://github.com/Hanul/expressjs.kr)] - -**PROTIP** Be sure to read [Migrating from 3.x to 4.x](https://github.com/strongloop/express/wiki/Migrating-from-3.x-to-4.x) as well as [New features in 4.x](https://github.com/strongloop/express/wiki/New-features-in-4.x). + $ npm install -g express ## Quick Start - The quickest way to get started with express is to utilize the executable [`express(1)`](https://github.com/expressjs/generator) to generate an application as shown below: + The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below: - Install the executable. The executable's major version will match Express's: + Create the app: -```bash -$ npm install -g express-generator@4 -``` + $ npm install -g express + $ express /tmp/foo && cd /tmp/foo - Create the app: + Install dependencies: -```bash -$ express /tmp/foo && cd /tmp/foo -``` + $ npm install - Install dependencies: + Start the server: -```bash -$ npm install -``` + $ node app - Start the server: +## Features -```bash -$ npm start -``` + * Built on [Connect](http://github.com/senchalabs/connect) + * Robust routing + * HTTP helpers (redirection, caching, etc) + * View system supporting 14+ template engines + * Content negotiation + * Focus on high performance + * Environment based configuration + * Executable for generating applications quickly + * High test coverage ## Philosophy @@ -81,58 +57,75 @@ $ npm start it a great solution for single page applications, web sites, hybrids, or public HTTP APIs. - Express does not force you to use any specific ORM or template engine. With support for over - 14 template engines via [Consolidate.js](https://github.com/tj/consolidate.js), + Built on Connect, you can use _only_ what you need, and nothing more. Applications + can be as big or as small as you like, even a single file. Express does + not force you to use any specific ORM or template engine. With support for over + 14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js), you can quickly craft your perfect framework. -## Examples +## More Information - To view the examples, clone the Express repo and install the dependencies: + * [Website and Documentation](http://expressjs.com/) stored at [strongloop/expressjs.com](https://github.com/strongloop/expressjs.com) + * Join #express on freenode + * [Google Group](http://groups.google.com/group/express-js) for discussion + * Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates + * Visit the [Wiki](http://github.com/strongloop/express/wiki) + * [Русскоязычная документация](http://jsman.ru/express/) + * Run express examples [online](https://runnable.com/express) -```bash -$ git clone git://github.com/strongloop/express.git --depth 1 -$ cd express -$ npm install -``` +## Viewing Examples - Then run whichever example you want: +Clone the Express repo, then install the dev dependencies to install all the example / test suite dependencies: -```bash -$ node examples/content-negotiation -``` + $ git clone git://github.com/strongloop/express.git --depth 1 + $ cd express + $ npm install -## Tests +Then run whichever tests you want: - To run the test suite, first install the dependencies, then run `npm test`: + $ node examples/content-negotiation -```bash -$ npm install +You can also view live examples here: + + + +## Running Tests + +To run the test suite, first invoke the following command within the repo, installing the development dependencies: + + $ npm install + +Then run the tests: + +```sh $ npm test ``` -## People +## Contributors -The original author of Express is [TJ Holowaychuk](https://github.com/tj) [![TJ's Gratipay][gratipay-image-visionmedia]][gratipay-url-visionmedia] - -The current lead maintainer is [Douglas Christopher Wilson](https://github.com/dougwilson) [![Doug's Gratipay][gratipay-image-dougwilson]][gratipay-url-dougwilson] - -[List of all contributors](https://github.com/strongloop/express/graphs/contributors) + https://github.com/strongloop/express/graphs/contributors ## License - [MIT](LICENSE) +(The MIT License) -[npm-image]: https://img.shields.io/npm/v/express.svg -[npm-url]: https://npmjs.org/package/express -[downloads-image]: https://img.shields.io/npm/dm/express.svg -[downloads-url]: https://npmjs.org/package/express -[travis-image]: https://img.shields.io/travis/strongloop/express/master.svg?label=linux -[travis-url]: https://travis-ci.org/strongloop/express -[appveyor-image]: https://img.shields.io/appveyor/ci/dougwilson/express/master.svg?label=windows -[appveyor-url]: https://ci.appveyor.com/project/dougwilson/express -[coveralls-image]: https://img.shields.io/coveralls/strongloop/express/master.svg -[coveralls-url]: https://coveralls.io/r/strongloop/express?branch=master -[gratipay-image-visionmedia]: https://img.shields.io/gratipay/visionmedia.svg -[gratipay-url-visionmedia]: https://gratipay.com/visionmedia/ -[gratipay-image-dougwilson]: https://img.shields.io/gratipay/dougwilson.svg -[gratipay-url-dougwilson]: https://gratipay.com/dougwilson/ +Copyright (c) 2009-2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/express/index.js b/node_modules/express/index.js index d219b0c..3da3378 100644 --- a/node_modules/express/index.js +++ b/node_modules/express/index.js @@ -1,11 +1,2 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; module.exports = require('./lib/express'); diff --git a/node_modules/express/lib/application.js b/node_modules/express/lib/application.js index a9df910..8b287ae 100644 --- a/node_modules/express/lib/application.js +++ b/node_modules/express/lib/application.js @@ -6,29 +6,23 @@ * MIT Licensed */ -'use strict'; - /** * Module dependencies. - * @private + * @api private */ -var finalhandler = require('finalhandler'); -var Router = require('./router'); -var methods = require('methods'); -var middleware = require('./middleware/init'); -var query = require('./middleware/query'); -var debug = require('debug')('express:application'); -var View = require('./view'); -var http = require('http'); -var compileETag = require('./utils').compileETag; -var compileQueryParser = require('./utils').compileQueryParser; -var compileTrust = require('./utils').compileTrust; +var connect = require('connect') + , Router = require('./router') + , methods = require('methods') + , middleware = require('./middleware') + , debug = require('debug')('express:application') + , locals = require('./utils').locals + , compileETag = require('./utils').compileETag + , compileTrust = require('./utils').compileTrust + , View = require('./view') + , http = require('http'); var deprecate = require('depd')('express'); -var flatten = require('array-flatten'); var merge = require('utils-merge'); -var resolve = require('path').resolve; -var slice = Array.prototype.slice; /** * Application prototype. @@ -38,7 +32,7 @@ var app = exports = module.exports = {}; /** * Variable for trust proxy inheritance back-compat - * @private + * @api private */ var trustProxyDefaultSymbol = '@@symbol:trust_proxy_default'; @@ -50,30 +44,28 @@ var trustProxyDefaultSymbol = '@@symbol:trust_proxy_default'; * - setup default middleware * - setup route reflection methods * - * @private + * @api private */ -app.init = function init() { +app.init = function(){ this.cache = {}; - this.engines = {}; this.settings = {}; - + this.engines = {}; this.defaultConfiguration(); }; /** * Initialize application configuration. - * @private + * + * @api private */ -app.defaultConfiguration = function defaultConfiguration() { - var env = process.env.NODE_ENV || 'development'; - +app.defaultConfiguration = function(){ // default settings this.enable('x-powered-by'); this.set('etag', 'weak'); + var env = process.env.NODE_ENV || 'development'; this.set('env', env); - this.set('query parser', 'extended'); this.set('subdomain offset', 2); this.set('trust proxy', false); @@ -85,6 +77,10 @@ app.defaultConfiguration = function defaultConfiguration() { debug('booting in %s mode', env); + // implicit middleware + this.use(connect.query()); + this.use(middleware.init(this)); + this.on('mount', function onmount(parent) { // inherit trust proxy if (this.settings[trustProxyDefaultSymbol] === true @@ -100,161 +96,79 @@ app.defaultConfiguration = function defaultConfiguration() { this.settings.__proto__ = parent.settings; }); - // setup locals - this.locals = Object.create(null); + // router + this._router = new Router(this); + this.routes = this._router.map; + this.__defineGetter__('router', function(){ + this._usedRouter = true; + this._router.caseSensitive = this.enabled('case sensitive routing'); + this._router.strict = this.enabled('strict routing'); + return this._router.middleware; + }); - // top-most app is mounted at / - this.mountpath = '/'; + // setup locals + this.locals = locals(this); // default locals this.locals.settings = this.settings; // default configuration this.set('view', View); - this.set('views', resolve('views')); + this.set('views', process.cwd() + '/views'); this.set('jsonp callback name', 'callback'); + if (env === 'development') { + this.set('json spaces', 2); + } + if (env === 'production') { this.enable('view cache'); } - - Object.defineProperty(this, 'router', { - get: function() { - throw new Error('\'app.router\' is deprecated!\nPlease see the 3.x to 4.x migration guide for details on how to update your app.'); - } - }); }; /** - * lazily adds the base router if it has not yet been added. + * Proxy `connect#use()` to apply settings to + * mounted applications. * - * We cannot add the base router in the defaultConfiguration because - * it reads app settings which might be set after that has run. - * - * @private - */ -app.lazyrouter = function lazyrouter() { - if (!this._router) { - this._router = new Router({ - caseSensitive: this.enabled('case sensitive routing'), - strict: this.enabled('strict routing') - }); - - this._router.use(query(this.get('query parser fn'))); - this._router.use(middleware.init(this)); - } -}; - -/** - * Dispatch a req, res pair into the application. Starts pipeline processing. - * - * If no callback is provided, then default error handlers will respond - * in the event of an error bubbling through the stack. - * - * @private + * @param {String|Function|Server} route + * @param {Function|Server} fn + * @return {app} for chaining + * @api public */ -app.handle = function handle(req, res, callback) { - var router = this._router; +app.use = function(route, fn){ + var app; - // final handler - var done = callback || finalhandler(req, res, { - env: this.get('env'), - onerror: logerror.bind(this) - }); + // default route to '/' + if ('string' != typeof route) fn = route, route = '/'; - // no routes - if (!router) { - debug('no routes defined on app'); - done(); - return; - } + // express app + if (fn.handle && fn.set) app = fn; - router.handle(req, res, done); -}; - -/** - * Proxy `Router#use()` to add middleware to the app router. - * See Router#use() documentation for details. - * - * If the _fn_ parameter is an express app, then it will be - * mounted at the _route_ specified. - * - * @public - */ - -app.use = function use(fn) { - var offset = 0; - var path = '/'; - - // default path to '/' - // disambiguate app.use([fn]) - if (typeof fn !== 'function') { - var arg = fn; - - while (Array.isArray(arg) && arg.length !== 0) { - arg = arg[0]; - } - - // first arg is the path - if (typeof arg !== 'function') { - offset = 1; - path = fn; - } - } - - var fns = flatten(slice.call(arguments, offset)); - - if (fns.length === 0) { - throw new TypeError('app.use() requires middleware functions'); - } - - // setup router - this.lazyrouter(); - var router = this._router; - - fns.forEach(function (fn) { - // non-express app - if (!fn || !fn.handle || !fn.set) { - return router.use(path, fn); - } - - debug('.use app under %s', path); - fn.mountpath = path; - fn.parent = this; - - // restore .app property on req and res - router.use(path, function mounted_app(req, res, next) { + // restore .app property on req and res + if (app) { + app.route = route; + fn = function(req, res, next) { var orig = req.app; - fn.handle(req, res, function (err) { + app.handle(req, res, function(err){ req.__proto__ = orig.request; res.__proto__ = orig.response; next(err); }); - }); + }; + } - // mounted an app - fn.emit('mount', this); - }, this); + connect.proto.use.call(this, route, fn); + + // mounted an app + if (app) { + app.parent = this; + app.emit('mount', this); + } return this; }; -/** - * Proxy to the app `Router#route()` - * Returns a new `Route` instance for the _path_. - * - * Routes are isolated middleware stacks for specific paths. - * See the Route api docs for details. - * - * @public - */ - -app.route = function route(path) { - this.lazyrouter(); - return this._router.route(path); -}; - /** * Register the given template engine callback `fn` * as `ext`. @@ -278,7 +192,7 @@ app.route = function route(path) { * so if you're using ".ejs" extensions you dont need to do anything. * * Some template engines do not follow this convention, the - * [Consolidate.js](https://github.com/tj/consolidate.js) + * [Consolidate.js](https://github.com/visionmedia/consolidate.js) * library was created to map all of node's popular template * engines to follow this convention, thus allowing them to * work seamlessly within Express. @@ -286,50 +200,70 @@ app.route = function route(path) { * @param {String} ext * @param {Function} fn * @return {app} for chaining - * @public + * @api public */ -app.engine = function engine(ext, fn) { - if (typeof fn !== 'function') { - throw new Error('callback function required'); - } - - // get file extension - var extension = ext[0] !== '.' - ? '.' + ext - : ext; - - // store engine - this.engines[extension] = fn; - +app.engine = function(ext, fn){ + if ('function' != typeof fn) throw new Error('callback function required'); + if ('.' != ext[0]) ext = '.' + ext; + this.engines[ext] = fn; return this; }; /** - * Proxy to `Router#param()` with one added api feature. The _name_ parameter - * can be an array of names. + * Map the given param placeholder `name`(s) to the given callback(s). * - * See the Router#param() docs for more details. + * Parameter mapping is used to provide pre-conditions to routes + * which use normalized placeholders. For example a _:user_id_ parameter + * could automatically load a user's information from the database without + * any additional code, + * + * The callback uses the same signature as middleware, the only difference + * being that the value of the placeholder is passed, in this case the _id_ + * of the user. Once the `next()` function is invoked, just like middleware + * it will continue on to execute the route, or subsequent parameter functions. + * + * app.param('user_id', function(req, res, next, id){ + * User.find(id, function(err, user){ + * if (err) { + * next(err); + * } else if (user) { + * req.user = user; + * next(); + * } else { + * next(new Error('failed to load user')); + * } + * }); + * }); * * @param {String|Array} name * @param {Function} fn * @return {app} for chaining - * @public + * @api public */ -app.param = function param(name, fn) { - this.lazyrouter(); +app.param = function(name, fn){ + var self = this + , fns = [].slice.call(arguments, 1); + // array if (Array.isArray(name)) { - for (var i = 0; i < name.length; i++) { - this.param(name[i], fn); - } - - return this; + name.forEach(function(name){ + fns.forEach(function(fn){ + self.param(name, fn); + }); + }); + // param logic + } else if ('function' == typeof name) { + this._router.param(name); + // single + } else { + if (':' == name[0]) name = name.substr(1); + fns.forEach(function(fn){ + self._router.param(name, fn); + }); } - this._router.param(name, fn); - return this; }; @@ -345,29 +279,26 @@ app.param = function param(name, fn) { * @param {String} setting * @param {*} [val] * @return {Server} for chaining - * @public + * @api public */ -app.set = function set(setting, val) { +app.set = function(setting, val){ if (arguments.length === 1) { // app.get(setting) return this.settings[setting]; } - debug('set "%s" to %o', setting, val); - // set value this.settings[setting] = val; // trigger matched settings switch (setting) { case 'etag': + debug('compile etag %s', val); this.set('etag fn', compileETag(val)); break; - case 'query parser': - this.set('query parser fn', compileQueryParser(val)); - break; case 'trust proxy': + debug('compile trust proxy %s', val); this.set('trust proxy fn', compileTrust(val)); // trust proxy inherit back-compat @@ -393,12 +324,12 @@ app.set = function set(setting, val) { * return value would be "/blog/admin". * * @return {String} - * @private + * @api private */ -app.path = function path() { +app.path = function(){ return this.parent - ? this.parent.path() + this.mountpath + ? this.parent.path() + this.route : ''; }; @@ -414,11 +345,11 @@ app.path = function path() { * * @param {String} setting * @return {Boolean} - * @public + * @api public */ -app.enabled = function enabled(setting) { - return Boolean(this.set(setting)); +app.enabled = function(setting){ + return !!this.set(setting); }; /** @@ -433,10 +364,10 @@ app.enabled = function enabled(setting) { * * @param {String} setting * @return {Boolean} - * @public + * @api public */ -app.disabled = function disabled(setting) { +app.disabled = function(setting){ return !this.set(setting); }; @@ -445,10 +376,10 @@ app.disabled = function disabled(setting) { * * @param {String} setting * @return {app} for chaining - * @public + * @api public */ -app.enable = function enable(setting) { +app.enable = function(setting){ return this.set(setting, true); }; @@ -457,28 +388,83 @@ app.enable = function enable(setting) { * * @param {String} setting * @return {app} for chaining - * @public + * @api public */ -app.disable = function disable(setting) { +app.disable = function(setting){ return this.set(setting, false); }; +/** + * Configure callback for zero or more envs, + * when no `env` is specified that callback will + * be invoked for all environments. Any combination + * can be used multiple times, in any order desired. + * + * Examples: + * + * app.configure(function(){ + * // executed for all envs + * }); + * + * app.configure('stage', function(){ + * // executed staging env + * }); + * + * app.configure('stage', 'production', function(){ + * // executed for stage and production + * }); + * + * Note: + * + * These callbacks are invoked immediately, and + * are effectively sugar for the following: + * + * var env = process.env.NODE_ENV || 'development'; + * + * switch (env) { + * case 'development': + * ... + * break; + * case 'stage': + * ... + * break; + * case 'production': + * ... + * break; + * } + * + * @param {String} env... + * @param {Function} fn + * @return {app} for chaining + * @api public + */ + +app.configure = function(env, fn){ + var envs = 'all' + , args = [].slice.call(arguments); + fn = args.pop(); + if (args.length) envs = args; + if ('all' == envs || ~envs.indexOf(this.settings.env)) fn.call(this); + return this; +}; + +app.configure = deprecate.function(app.configure, + 'app.configure: Check app.get(\'env\') in an if statement'); + /** * Delegate `.VERB(...)` calls to `router.VERB(...)`. */ methods.forEach(function(method){ app[method] = function(path){ - if (method === 'get' && arguments.length === 1) { - // app.get(setting) - return this.set(path); - } + if ('get' == method && 1 == arguments.length) return this.set(path); - this.lazyrouter(); + // if no router attached yet, attach the router + if (!this._usedRouter) this.use(this.router); - var route = this._router.route(path); - route[method].apply(route, slice.call(arguments, 1)); + // setup route + this._router[method].apply(this._router, arguments); return this; }; }); @@ -490,19 +476,14 @@ methods.forEach(function(method){ * @param {String} path * @param {Function} ... * @return {app} for chaining - * @public + * @api public */ -app.all = function all(path) { - this.lazyrouter(); - - var route = this._router.route(path); - var args = slice.call(arguments, 1); - - for (var i = 0; i < methods.length; i++) { - route[methods[i]].apply(route, args); - } - +app.all = function(path){ + var args = arguments; + methods.forEach(function(method){ + app[method].apply(this, args); + }, this); return this; }; @@ -523,72 +504,64 @@ app.del = deprecate.function(app.delete, 'app.del: Use app.delete instead'); * * @param {String} name * @param {String|Function} options or fn - * @param {Function} callback - * @public + * @param {Function} fn + * @api public */ -app.render = function render(name, options, callback) { - var cache = this.cache; - var done = callback; - var engines = this.engines; - var opts = options; - var renderOptions = {}; - var view; +app.render = function(name, options, fn){ + var opts = {} + , cache = this.cache + , engines = this.engines + , view; // support callback function as second arg - if (typeof options === 'function') { - done = options; - opts = {}; + if ('function' == typeof options) { + fn = options, options = {}; } // merge app.locals - merge(renderOptions, this.locals); + merge(opts, this.locals); // merge options._locals - if (opts._locals) { - merge(renderOptions, opts._locals); + if (options._locals) { + merge(opts, options._locals); } // merge options - merge(renderOptions, opts); + merge(opts, options); // set .cache unless explicitly provided - if (renderOptions.cache == null) { - renderOptions.cache = this.enabled('view cache'); - } + opts.cache = null == opts.cache + ? this.enabled('view cache') + : opts.cache; // primed cache - if (renderOptions.cache) { - view = cache[name]; - } + if (opts.cache) view = cache[name]; // view if (!view) { - var View = this.get('view'); - - view = new View(name, { + view = new (this.get('view'))(name, { defaultEngine: this.get('view engine'), root: this.get('views'), engines: engines }); if (!view.path) { - var dirs = Array.isArray(view.root) && view.root.length > 1 - ? 'directories "' + view.root.slice(0, -1).join('", "') + '" or "' + view.root[view.root.length - 1] + '"' - : 'directory "' + view.root + '"' - var err = new Error('Failed to lookup view "' + name + '" in views ' + dirs); + var err = new Error('Failed to lookup view "' + name + '" in views directory "' + view.root + '"'); err.view = view; - return done(err); + return fn(err); } // prime the cache - if (renderOptions.cache) { - cache[name] = view; - } + if (opts.cache) cache[name] = view; } // render - tryRender(view, renderOptions, done); + try { + view.render(opts, fn); + } catch (err) { + fn(err); + } }; /** @@ -609,35 +582,10 @@ app.render = function render(name, options, callback) { * https.createServer({ ... }, app).listen(443); * * @return {http.Server} - * @public + * @api public */ -app.listen = function listen() { +app.listen = function(){ var server = http.createServer(this); return server.listen.apply(server, arguments); }; - -/** - * Log error using console.error. - * - * @param {Error} err - * @private - */ - -function logerror(err) { - /* istanbul ignore next */ - if (this.get('env') !== 'test') console.error(err.stack || err.toString()); -} - -/** - * Try rendering a view. - * @private - */ - -function tryRender(view, options, callback) { - try { - view.render(options, callback); - } catch (err) { - callback(err); - } -} diff --git a/node_modules/express/lib/express.js b/node_modules/express/lib/express.js index 540c8be..17b32c5 100644 --- a/node_modules/express/lib/express.js +++ b/node_modules/express/lib/express.js @@ -1,24 +1,16 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - /** * Module dependencies. */ -var EventEmitter = require('events').EventEmitter; +var deprecate = require('depd')('express'); var mixin = require('merge-descriptors'); -var proto = require('./application'); -var Route = require('./router/route'); -var Router = require('./router'); -var req = require('./request'); -var res = require('./response'); +var merge = require('utils-merge'); +var connect = require('connect') + , proto = require('./application') + , Route = require('./router/route') + , Router = require('./router') + , req = require('./request') + , res = require('./response'); /** * Expose `createApplication()`. @@ -26,6 +18,12 @@ var res = require('./response'); exports = module.exports = createApplication; +/** + * Expose mime. + */ + +exports.mime = connect.mime; + /** * Create an express application. * @@ -34,19 +32,35 @@ exports = module.exports = createApplication; */ function createApplication() { - var app = function(req, res, next) { - app.handle(req, res, next); - }; - - mixin(app, EventEmitter.prototype, false); - mixin(app, proto, false); - + var app = connect(); + merge(app, proto); app.request = { __proto__: req, app: app }; app.response = { __proto__: res, app: app }; app.init(); return app; } +/** + * Expose connect.middleware as express.* + * for example `express.logger` etc. + */ + +mixin(exports, connect.middleware); + +/** + * Deprecated createServer(). + */ + +exports.createServer = deprecate.function(createApplication, + 'createServer() is deprecated\n' + + 'express applications no longer inherit from http.Server\n' + + 'please use:\n' + + '\n' + + ' var express = require("express");\n' + + ' var app = express();\n' + + '\n' +); + /** * Expose the prototypes. */ @@ -62,42 +76,7 @@ exports.response = res; exports.Route = Route; exports.Router = Router; -/** - * Expose middleware - */ +// Error handler title -exports.query = require('./middleware/query'); -exports.static = require('serve-static'); +exports.errorHandler.title = 'Express'; -/** - * Replace removed middleware with an appropriate error message. - */ - -[ - 'json', - 'urlencoded', - 'bodyParser', - 'compress', - 'cookieSession', - 'session', - 'logger', - 'cookieParser', - 'favicon', - 'responseTime', - 'errorHandler', - 'timeout', - 'methodOverride', - 'vhost', - 'csrf', - 'directory', - 'limit', - 'multipart', - 'staticCache', -].forEach(function (name) { - Object.defineProperty(exports, name, { - get: function () { - throw new Error('Most middleware (like ' + name + ') is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.'); - }, - configurable: true - }); -}); diff --git a/node_modules/express/lib/middleware/init.js b/node_modules/express/lib/middleware/init.js deleted file mode 100644 index f3119ed..0000000 --- a/node_modules/express/lib/middleware/init.js +++ /dev/null @@ -1,36 +0,0 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Initialization middleware, exposing the - * request and response to each other, as well - * as defaulting the X-Powered-By header field. - * - * @param {Function} app - * @return {Function} - * @api private - */ - -exports.init = function(app){ - return function expressInit(req, res, next){ - if (app.enabled('x-powered-by')) res.setHeader('X-Powered-By', 'Express'); - req.res = res; - res.req = req; - req.next = next; - - req.__proto__ = app.request; - res.__proto__ = app.response; - - res.locals = res.locals || Object.create(null); - - next(); - }; -}; - diff --git a/node_modules/express/lib/middleware/query.js b/node_modules/express/lib/middleware/query.js deleted file mode 100644 index a665f3f..0000000 --- a/node_modules/express/lib/middleware/query.js +++ /dev/null @@ -1,51 +0,0 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module dependencies. - */ - -var parseUrl = require('parseurl'); -var qs = require('qs'); - -/** - * @param {Object} options - * @return {Function} - * @api public - */ - -module.exports = function query(options) { - var opts = Object.create(options || null); - var queryparse = qs.parse; - - if (typeof options === 'function') { - queryparse = options; - opts = undefined; - } - - if (opts !== undefined) { - if (opts.allowDots === undefined) { - opts.allowDots = false; - } - - if (opts.allowPrototypes === undefined) { - opts.allowPrototypes = true; - } - } - - return function query(req, res, next){ - if (!req.query) { - var val = parseUrl(req).query; - req.query = queryparse(val, opts); - } - - next(); - }; -}; diff --git a/node_modules/express/lib/request.js b/node_modules/express/lib/request.js index 33cac18..efa0021 100644 --- a/node_modules/express/lib/request.js +++ b/node_modules/express/lib/request.js @@ -1,27 +1,19 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; /** * Module dependencies. - * @private */ -var accepts = require('accepts'); +var auth = require('basic-auth'); var deprecate = require('depd')('express'); +var http = require('http') + , utils = require('./utils') + , connect = require('connect') + , fresh = require('fresh') + , parseRange = require('range-parser') + , parse = require('parseurl') + , proxyaddr = require('proxy-addr') + , mime = connect.mime; var isIP = require('net').isIP; -var typeis = require('type-is'); -var http = require('http'); -var fresh = require('fresh'); -var parseRange = require('range-parser'); -var parse = require('parseurl'); -var proxyaddr = require('proxy-addr'); /** * Request prototype. @@ -52,36 +44,32 @@ var req = exports = module.exports = { * * @param {String} name * @return {String} - * @public + * @api public */ req.get = -req.header = function header(name) { - var lc = name.toLowerCase(); - - switch (lc) { +req.header = function(name){ + switch (name = name.toLowerCase()) { case 'referer': case 'referrer': return this.headers.referrer || this.headers.referer; default: - return this.headers[lc]; + return this.headers[name]; } }; /** - * To do: update docs. - * * Check if the given `type(s)` is acceptable, returning * the best match when true, otherwise `undefined`, in which * case you should respond with 406 "Not Acceptable". * - * The `type` value may be a single MIME type string - * such as "application/json", an extension name - * such as "json", a comma-delimited list such as "json, html, text/plain", + * The `type` value may be a single mime type string + * such as "application/json", the extension name + * such as "json", a comma-delimted list such as "json, html, text/plain", * an argument list such as `"json", "html", "text/plain"`, * or an array `["json", "html", "text/plain"]`. When a list - * or array is given, the _best_ match, if any is returned. + * or array is given the _best_ match, if any is returned. * * Examples: * @@ -111,65 +99,59 @@ req.header = function header(name) { * // => "json" * * @param {String|Array} type(s) - * @return {String|Array|Boolean} - * @public + * @return {String} + * @api public */ -req.accepts = function(){ - var accept = accepts(this); - return accept.types.apply(accept, arguments); +req.accepts = function(type){ + var args = arguments.length > 1 ? [].slice.apply(arguments) : type; + return utils.accepts(args, this.get('Accept')); }; /** - * Check if the given `encoding`s are accepted. + * Check if the given `encoding` is accepted. * - * @param {String} ...encoding - * @return {String|Array} - * @public + * @param {String} encoding + * @return {Boolean} + * @api public */ -req.acceptsEncodings = function(){ - var accept = accepts(this); - return accept.encodings.apply(accept, arguments); +req.acceptsEncoding = function(encoding){ + return !! ~this.acceptedEncodings.indexOf(encoding); }; -req.acceptsEncoding = deprecate.function(req.acceptsEncodings, - 'req.acceptsEncoding: Use acceptsEncodings instead'); - /** - * Check if the given `charset`s are acceptable, + * Check if the given `charset` is acceptable, * otherwise you should respond with 406 "Not Acceptable". * - * @param {String} ...charset - * @return {String|Array} - * @public + * @param {String} charset + * @return {Boolean} + * @api public */ -req.acceptsCharsets = function(){ - var accept = accepts(this); - return accept.charsets.apply(accept, arguments); +req.acceptsCharset = function(charset){ + var accepted = this.acceptedCharsets; + return accepted.length + ? !! ~accepted.indexOf(charset) + : true; }; -req.acceptsCharset = deprecate.function(req.acceptsCharsets, - 'req.acceptsCharset: Use acceptsCharsets instead'); - /** - * Check if the given `lang`s are acceptable, + * Check if the given `lang` is acceptable, * otherwise you should respond with 406 "Not Acceptable". * - * @param {String} ...lang - * @return {String|Array} - * @public + * @param {String} lang + * @return {Boolean} + * @api public */ -req.acceptsLanguages = function(){ - var accept = accepts(this); - return accept.languages.apply(accept, arguments); +req.acceptsLanguage = function(lang){ + var accepted = this.acceptedLanguages; + return accepted.length + ? !! ~accepted.indexOf(lang) + : true; }; -req.acceptsLanguage = deprecate.function(req.acceptsLanguages, - 'req.acceptsLanguage: Use acceptsLanguages instead'); - /** * Parse Range header field, * capping to the given `size`. @@ -187,7 +169,7 @@ req.acceptsLanguage = deprecate.function(req.acceptsLanguages, * * @param {Number} size * @return {Array} - * @public + * @api public */ req.range = function(size){ @@ -196,6 +178,98 @@ req.range = function(size){ return parseRange(size, range); }; +/** + * Return an array of encodings. + * + * Examples: + * + * ['gzip', 'deflate'] + * + * @return {Array} + * @api public + */ + +req.__defineGetter__('acceptedEncodings', function(){ + var accept = this.get('Accept-Encoding'); + return accept + ? accept.trim().split(/ *, */) + : []; +}); + +/** + * Return an array of Accepted media types + * ordered from highest quality to lowest. + * + * Examples: + * + * [ { value: 'application/json', + * quality: 1, + * type: 'application', + * subtype: 'json' }, + * { value: 'text/html', + * quality: 0.5, + * type: 'text', + * subtype: 'html' } ] + * + * @return {Array} + * @api public + */ + +req.__defineGetter__('accepted', function(){ + var accept = this.get('Accept'); + return accept + ? utils.parseAccept(accept) + : []; +}); + +/** + * Return an array of Accepted languages + * ordered from highest quality to lowest. + * + * Examples: + * + * Accept-Language: en;q=.5, en-us + * ['en-us', 'en'] + * + * @return {Array} + * @api public + */ + +req.__defineGetter__('acceptedLanguages', function(){ + var accept = this.get('Accept-Language'); + return accept + ? utils + .parseParams(accept) + .map(function(obj){ + return obj.value; + }) + : []; +}); + +/** + * Return an array of Accepted charsets + * ordered from highest quality to lowest. + * + * Examples: + * + * Accept-Charset: iso-8859-5;q=.2, unicode-1-1;q=0.8 + * ['unicode-1-1', 'iso-8859-5'] + * + * @return {Array} + * @api public + */ + +req.__defineGetter__('acceptedCharsets', function(){ + var accept = this.get('Accept-Charset'); + return accept + ? utils + .parseParams(accept) + .map(function(obj){ + return obj.value; + }) + : []; +}); + /** * Return the value of param `name` when present or `defaultValue`. * @@ -205,28 +279,21 @@ req.range = function(size){ * * To utilize request bodies, `req.body` * should be an object. This can be done by using - * the `bodyParser()` middleware. + * the `connect.bodyParser()` middleware. * * @param {String} name * @param {Mixed} [defaultValue] * @return {String} - * @public + * @api public */ -req.param = function param(name, defaultValue) { +req.param = function(name, defaultValue){ var params = this.params || {}; var body = this.body || {}; var query = this.query || {}; - - var args = arguments.length === 1 - ? 'name' - : 'name, default'; - deprecate('req.param(' + args + '): Use req.params, req.body, or req.query instead'); - if (null != params[name] && params.hasOwnProperty(name)) return params[name]; if (null != body[name]) return body[name]; if (null != query[name]) return query[name]; - return defaultValue; }; @@ -251,23 +318,24 @@ req.param = function param(name, defaultValue) { * req.is('html'); * // => false * - * @param {String|Array} types... - * @return {String|false|null} - * @public + * @param {String} type + * @return {Boolean} + * @api public */ -req.is = function is(types) { - var arr = types; - - // support flattened arguments - if (!Array.isArray(types)) { - arr = new Array(arguments.length); - for (var i = 0; i < arr.length; i++) { - arr[i] = arguments[i]; - } +req.is = function(type){ + var ct = this.get('Content-Type'); + if (!ct) return false; + ct = ct.split(';')[0]; + if (!~type.indexOf('/')) type = mime.lookup(type); + if (~type.indexOf('*')) { + type = type.split('/'); + ct = ct.split('/'); + if ('*' == type[0] && type[1] == ct[1]) return true; + if ('*' == type[1] && type[0] == ct[0]) return true; + return false; } - - return typeis(this, arr); + return !! ~ct.indexOf(type); }; /** @@ -281,10 +349,10 @@ req.is = function is(types) { * supplies https for you this may be enabled. * * @return {String} - * @public + * @api public */ -defineGetter(req, 'protocol', function protocol(){ +req.__defineGetter__('protocol', function(){ var proto = this.connection.encrypted ? 'https' : 'http'; @@ -306,11 +374,11 @@ defineGetter(req, 'protocol', function protocol(){ * req.protocol == 'https' * * @return {Boolean} - * @public + * @api public */ -defineGetter(req, 'secure', function secure(){ - return this.protocol === 'https'; +req.__defineGetter__('secure', function(){ + return 'https' == this.protocol; }); /** @@ -320,10 +388,10 @@ defineGetter(req, 'secure', function secure(){ * "trust proxy" is set. * * @return {String} - * @public + * @api public */ -defineGetter(req, 'ip', function ip(){ +req.__defineGetter__('ip', function(){ var trust = this.app.get('trust proxy fn'); return proxyaddr(this, trust); }); @@ -337,15 +405,38 @@ defineGetter(req, 'ip', function ip(){ * "proxy2" were trusted. * * @return {Array} - * @public + * @api public */ -defineGetter(req, 'ips', function ips() { +req.__defineGetter__('ips', function(){ var trust = this.app.get('trust proxy fn'); var addrs = proxyaddr.all(this, trust); return addrs.slice(1).reverse(); }); +/** + * Return basic auth credentials. + * + * Examples: + * + * // http://tobi:hello@example.com + * req.auth + * // => { username: 'tobi', password: 'hello' } + * + * @return {Object} or undefined + * @api public + */ + +req.__defineGetter__('auth', function(){ + deprecate('req.auth: Use basic-auth npm module instead'); + + // credentials + var creds = auth(this); + if (!creds) return; + + return { username: creds.name, password: creds.pass }; +}); + /** * Return subdomains as an array. * @@ -358,18 +449,18 @@ defineGetter(req, 'ips', function ips() { * If "subdomain offset" is 3, req.subdomains is `["tobi"]`. * * @return {Array} - * @public + * @api public */ -defineGetter(req, 'subdomains', function subdomains() { - var hostname = this.hostname; +req.__defineGetter__('subdomains', function(){ + var host = this.host; - if (!hostname) return []; + if (!host) return []; var offset = this.app.get('subdomain offset'); - var subdomains = !isIP(hostname) - ? hostname.split('.').reverse() - : [hostname]; + var subdomains = !isIP(host) + ? host.split('.').reverse() + : [host]; return subdomains.slice(offset); }); @@ -378,25 +469,25 @@ defineGetter(req, 'subdomains', function subdomains() { * Short-hand for `url.parse(req.url).pathname`. * * @return {String} - * @public + * @api public */ -defineGetter(req, 'path', function path() { +req.__defineGetter__('path', function(){ return parse(this).pathname; }); /** - * Parse the "Host" header field to a hostname. + * Parse the "Host" header field hostname. * * When the "trust proxy" setting trusts the socket * address, the "X-Forwarded-Host" header field will * be trusted. * * @return {String} - * @public + * @api public */ -defineGetter(req, 'hostname', function hostname(){ +req.__defineGetter__('host', function(){ var trust = this.app.get('trust proxy fn'); var host = this.get('X-Forwarded-Host'); @@ -412,27 +503,21 @@ defineGetter(req, 'hostname', function hostname(){ : 0; var index = host.indexOf(':', offset); - return index !== -1 + return ~index ? host.substring(0, index) : host; }); -// TODO: change req.host to return host in next major - -defineGetter(req, 'host', deprecate.function(function host(){ - return this.hostname; -}, 'req.host: Use req.hostname instead')); - /** * Check if the request is fresh, aka * Last-Modified and/or the ETag * still match. * * @return {Boolean} - * @public + * @api public */ -defineGetter(req, 'fresh', function(){ +req.__defineGetter__('fresh', function(){ var method = this.method; var s = this.res.statusCode; @@ -453,10 +538,10 @@ defineGetter(req, 'fresh', function(){ * resource has changed. * * @return {Boolean} - * @public + * @api public */ -defineGetter(req, 'stale', function stale(){ +req.__defineGetter__('stale', function(){ return !this.fresh; }); @@ -464,26 +549,10 @@ defineGetter(req, 'stale', function stale(){ * Check if the request was an _XMLHttpRequest_. * * @return {Boolean} - * @public + * @api public */ -defineGetter(req, 'xhr', function xhr(){ +req.__defineGetter__('xhr', function(){ var val = this.get('X-Requested-With') || ''; - return val.toLowerCase() === 'xmlhttprequest'; + return 'xmlhttprequest' == val.toLowerCase(); }); - -/** - * Helper function for creating a getter on an object. - * - * @param {Object} obj - * @param {String} name - * @param {Function} getter - * @private - */ -function defineGetter(obj, name, getter) { - Object.defineProperty(obj, name, { - configurable: true, - enumerable: true, - get: getter - }); -}; diff --git a/node_modules/express/lib/response.js b/node_modules/express/lib/response.js index 641704b..08c68f7 100644 --- a/node_modules/express/lib/response.js +++ b/node_modules/express/lib/response.js @@ -5,32 +5,31 @@ * MIT Licensed */ -'use strict'; - /** * Module dependencies. - * @private + * @api private */ var contentDisposition = require('content-disposition'); var deprecate = require('depd')('express'); var escapeHtml = require('escape-html'); -var http = require('http'); -var isAbsolute = require('./utils').isAbsolute; -var onFinished = require('on-finished'); -var path = require('path'); var merge = require('utils-merge'); -var sign = require('cookie-signature').sign; -var normalizeType = require('./utils').normalizeType; -var normalizeTypes = require('./utils').normalizeTypes; -var setCharset = require('./utils').setCharset; -var statusCodes = http.STATUS_CODES; -var cookie = require('cookie'); -var send = require('send'); -var extname = path.extname; -var mime = send.mime; -var resolve = path.resolve; +var parseUrl = require('parseurl'); var vary = require('vary'); +var http = require('http') + , path = require('path') + , connect = require('connect') + , sign = require('cookie-signature').sign + , normalizeType = require('./utils').normalizeType + , normalizeTypes = require('./utils').normalizeTypes + , setCharset = require('./utils').setCharset + , statusCodes = http.STATUS_CODES + , cookie = require('cookie') + , send = require('send') + , mime = connect.mime + , resolve = require('url').resolve + , basename = path.basename + , extname = path.extname; /** * Response prototype. @@ -40,22 +39,15 @@ var res = module.exports = { __proto__: http.ServerResponse.prototype }; -/** - * Module variables. - * @private - */ - -var charsetRegExp = /;\s*charset\s*=/; - /** * Set status `code`. * * @param {Number} code * @return {ServerResponse} - * @public + * @api public */ -res.status = function status(code) { +res.status = function(code){ this.statusCode = code; return this; }; @@ -72,7 +64,7 @@ res.status = function status(code) { * * @param {Object} links * @return {ServerResponse} - * @public + * @api public */ res.links = function(links){ @@ -91,88 +83,80 @@ res.links = function(links){ * res.send(new Buffer('wahoo')); * res.send({ some: 'json' }); * res.send('

    some html

    '); + * res.send(404, 'Sorry, cant find that'); + * res.send(404); * - * @param {string|number|boolean|object|Buffer} body - * @public + * @param {Mixed} body or status + * @param {Mixed} body + * @return {ServerResponse} + * @api public */ -res.send = function send(body) { - var chunk = body; - var encoding; - var len; +res.send = function(body){ var req = this.req; var type; + var encoding; + var len; // settings var app = this.app; // allow status / body - if (arguments.length === 2) { + if (2 == arguments.length) { // res.send(body, status) backwards compat - if (typeof arguments[0] !== 'number' && typeof arguments[1] === 'number') { - deprecate('res.send(body, status): Use res.status(status).send(body) instead'); + if ('number' != typeof body && 'number' == typeof arguments[1]) { this.statusCode = arguments[1]; } else { - deprecate('res.send(status, body): Use res.status(status).send(body) instead'); - this.statusCode = arguments[0]; - chunk = arguments[1]; + this.statusCode = body; + body = arguments[1]; } } // disambiguate res.send(status) and res.send(status, num) - if (typeof chunk === 'number' && arguments.length === 1) { + if (typeof body === 'number' && arguments.length === 1) { // res.send(status) will set status message as text string - if (!this.get('Content-Type')) { - this.type('txt'); - } - - deprecate('res.send(status): Use res.sendStatus(status) instead'); - this.statusCode = chunk; - chunk = statusCodes[chunk]; + this.get('Content-Type') || this.type('txt'); + this.statusCode = body; + body = http.STATUS_CODES[body]; } - switch (typeof chunk) { + switch (typeof body) { // string defaulting to html case 'string': if (!this.get('Content-Type')) { + this.charset = this.charset || 'utf-8'; this.type('html'); } break; case 'boolean': case 'number': case 'object': - if (chunk === null) { - chunk = ''; - } else if (Buffer.isBuffer(chunk)) { - if (!this.get('Content-Type')) { - this.type('bin'); - } + if (null == body) { + body = ''; + } else if (Buffer.isBuffer(body)) { + this.get('Content-Type') || this.type('bin'); } else { - return this.json(chunk); + return this.json(body); } break; } // write strings in utf-8 - if (typeof chunk === 'string') { + if ('string' === typeof body) { encoding = 'utf8'; type = this.get('Content-Type'); // reflect this in content-type - if (typeof type === 'string') { + if ('string' === typeof type) { this.set('Content-Type', setCharset(type, 'utf-8')); } } // populate Content-Length - if (chunk !== undefined) { - if (!Buffer.isBuffer(chunk)) { - // convert chunk to Buffer; saves later double conversions - chunk = new Buffer(chunk, encoding); - encoding = undefined; - } - - len = chunk.length; + if (undefined !== body && !this.get('Content-Length')) { + len = Buffer.isBuffer(body) + ? body.length + : Buffer.byteLength(body, encoding); this.set('Content-Length', len); } @@ -180,7 +164,7 @@ res.send = function send(body) { var etag; var generateETag = len !== undefined && app.get('etag fn'); if (typeof generateETag === 'function' && !this.get('ETag')) { - if ((etag = generateETag(chunk, encoding))) { + if ((etag = generateETag(body, encoding))) { this.set('ETag', etag); } } @@ -193,7 +177,7 @@ res.send = function send(body) { this.removeHeader('Content-Type'); this.removeHeader('Content-Length'); this.removeHeader('Transfer-Encoding'); - chunk = ''; + body = ''; } if (req.method === 'HEAD') { @@ -201,7 +185,7 @@ res.send = function send(body) { this.end(); } else { // respond - this.end(chunk, encoding); + this.end(body, encoding); } return this; @@ -214,24 +198,29 @@ res.send = function send(body) { * * res.json(null); * res.json({ user: 'tj' }); + * res.json(500, 'oh noes!'); + * res.json(404, 'I dont have that'); * - * @param {string|number|boolean|object} obj - * @public + * @param {Mixed} obj or status + * @param {Mixed} obj + * @return {ServerResponse} + * @api public */ -res.json = function json(obj) { - var val = obj; - +res.json = function(obj){ // allow status / body - if (arguments.length === 2) { + if (2 == arguments.length) { // res.json(body, status) backwards compat - if (typeof arguments[1] === 'number') { - deprecate('res.json(obj, status): Use res.status(status).json(obj) instead'); + if ('number' == typeof arguments[1]) { this.statusCode = arguments[1]; + if (typeof obj === 'number') { + deprecate('res.json(obj, status): Use res.json(status, obj) instead'); + } else { + deprecate('res.json(num, status): Use res.status(status).json(num) instead'); + } } else { - deprecate('res.json(status, obj): Use res.status(status).json(obj) instead'); - this.statusCode = arguments[0]; - val = arguments[1]; + this.statusCode = obj; + obj = arguments[1]; } } @@ -239,12 +228,11 @@ res.json = function json(obj) { var app = this.app; var replacer = app.get('json replacer'); var spaces = app.get('json spaces'); - var body = JSON.stringify(val, replacer, spaces); + var body = JSON.stringify(obj, replacer, spaces); // content-type - if (!this.get('Content-Type')) { - this.set('Content-Type', 'application/json'); - } + this.charset = this.charset || 'utf-8'; + this.get('Content-Type') || this.set('Content-Type', 'application/json'); return this.send(body); }; @@ -256,24 +244,29 @@ res.json = function json(obj) { * * res.jsonp(null); * res.jsonp({ user: 'tj' }); + * res.jsonp(500, 'oh noes!'); + * res.jsonp(404, 'I dont have that'); * - * @param {string|number|boolean|object} obj - * @public + * @param {Mixed} obj or status + * @param {Mixed} obj + * @return {ServerResponse} + * @api public */ -res.jsonp = function jsonp(obj) { - var val = obj; - +res.jsonp = function(obj){ // allow status / body - if (arguments.length === 2) { + if (2 == arguments.length) { // res.json(body, status) backwards compat - if (typeof arguments[1] === 'number') { - deprecate('res.jsonp(obj, status): Use res.status(status).json(obj) instead'); + if ('number' == typeof arguments[1]) { this.statusCode = arguments[1]; + if (typeof obj === 'number') { + deprecate('res.jsonp(obj, status): Use res.jsonp(status, obj) instead'); + } else { + deprecate('res.jsonp(num, status): Use res.status(status).jsonp(num) instead'); + } } else { - deprecate('res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead'); - this.statusCode = arguments[0]; - val = arguments[1]; + this.statusCode = obj; + obj = arguments[1]; } } @@ -281,11 +274,12 @@ res.jsonp = function jsonp(obj) { var app = this.app; var replacer = app.get('json replacer'); var spaces = app.get('json spaces'); - var body = JSON.stringify(val, replacer, spaces); + var body = JSON.stringify(obj, replacer, spaces); var callback = this.req.query[app.get('jsonp callback name')]; // content-type if (!this.get('Content-Type')) { + this.charset = 'utf-8'; this.set('X-Content-Type-Options', 'nosniff'); this.set('Content-Type', 'application/json'); } @@ -317,122 +311,19 @@ res.jsonp = function jsonp(obj) { return this.send(body); }; -/** - * Send given HTTP status code. - * - * Sets the response status to `statusCode` and the body of the - * response to the standard description from node's http.STATUS_CODES - * or the statusCode number if no description. - * - * Examples: - * - * res.sendStatus(200); - * - * @param {number} statusCode - * @public - */ - -res.sendStatus = function sendStatus(statusCode) { - var body = statusCodes[statusCode] || String(statusCode); - - this.statusCode = statusCode; - this.type('txt'); - - return this.send(body); -}; - /** * Transfer the file at the given `path`. * * Automatically sets the _Content-Type_ response header field. - * The callback `callback(err)` is invoked when the transfer is complete + * The callback `fn(err)` is invoked when the transfer is complete * or when an error occurs. Be sure to check `res.sentHeader` * if you wish to attempt responding, as the header and some data * may have already been transferred. * * Options: * - * - `maxAge` defaulting to 0 (can be string converted by `ms`) + * - `maxAge` defaulting to 0 * - `root` root directory for relative filenames - * - `headers` object of headers to serve with file - * - `dotfiles` serve dotfiles, defaulting to false; can be `"allow"` to send them - * - * Other options are passed along to `send`. - * - * Examples: - * - * The following example illustrates how `res.sendFile()` may - * be used as an alternative for the `static()` middleware for - * dynamic situations. The code backing `res.sendFile()` is actually - * the same code, so HTTP cache support etc is identical. - * - * app.get('/user/:uid/photos/:file', function(req, res){ - * var uid = req.params.uid - * , file = req.params.file; - * - * req.user.mayViewFilesFrom(uid, function(yes){ - * if (yes) { - * res.sendFile('/uploads/' + uid + '/' + file); - * } else { - * res.send(403, 'Sorry! you cant see that.'); - * } - * }); - * }); - * - * @public - */ - -res.sendFile = function sendFile(path, options, callback) { - var done = callback; - var req = this.req; - var res = this; - var next = req.next; - var opts = options || {}; - - if (!path) { - throw new TypeError('path argument is required to res.sendFile'); - } - - // support function as second arg - if (typeof options === 'function') { - done = options; - opts = {}; - } - - if (!opts.root && !isAbsolute(path)) { - throw new TypeError('path must be absolute or specify root to res.sendFile'); - } - - // create file stream - var pathname = encodeURI(path); - var file = send(req, pathname, opts); - - // transfer - sendfile(res, file, opts, function (err) { - if (done) return done(err); - if (err && err.code === 'EISDIR') return next(); - - // next() all but write errors - if (err && err.code !== 'ECONNABORTED' && err.syscall !== 'write') { - next(err); - } - }); -}; - -/** - * Transfer the file at the given `path`. - * - * Automatically sets the _Content-Type_ response header field. - * The callback `callback(err)` is invoked when the transfer is complete - * or when an error occurs. Be sure to check `res.sentHeader` - * if you wish to attempt responding, as the header and some data - * may have already been transferred. - * - * Options: - * - * - `maxAge` defaulting to 0 (can be string converted by `ms`) - * - `root` root directory for relative filenames - * - `headers` object of headers to serve with file * - `dotfiles` serve dotfiles, defaulting to false; can be `"allow"` to send them * * Other options are passed along to `send`. @@ -457,72 +348,96 @@ res.sendFile = function sendFile(path, options, callback) { * }); * }); * - * @public + * @param {String} path + * @param {Object|Function} options or fn + * @param {Function} fn + * @api public */ -res.sendfile = function (path, options, callback) { - var done = callback; - var req = this.req; - var res = this; - var next = req.next; - var opts = options || {}; +res.sendfile = function(path, options, fn){ + var self = this + , req = self.req + , next = this.req.next + , options = options || {} + , done; // support function as second arg - if (typeof options === 'function') { - done = options; - opts = {}; + if ('function' == typeof options) { + fn = options; + options = {}; } - // create file stream - var file = send(req, path, opts); + // socket errors + req.socket.on('error', error); + + // errors + function error(err) { + if (done) return; + done = true; + + // clean up + cleanup(); + if (!self.headersSent) self.removeHeader('Content-Disposition'); + + // callback available + if (fn) return fn(err); + + // list in limbo if there's no callback + if (self.headersSent) return; + + // delegate + next(err); + } + + // streaming + function stream(stream) { + if (done) return; + cleanup(); + if (fn) stream.on('end', fn); + } + + // cleanup + function cleanup() { + req.socket.removeListener('error', error); + } // transfer - sendfile(res, file, opts, function (err) { - if (done) return done(err); - if (err && err.code === 'EISDIR') return next(); - - // next() all but write errors - if (err && err.code !== 'ECONNABORT' && err.syscall !== 'write') { - next(err); - } - }); + var file = send(req, path, options); + file.on('error', error); + file.on('directory', next); + file.on('stream', stream); + file.pipe(this); + this.on('finish', cleanup); }; -res.sendfile = deprecate.function(res.sendfile, - 'res.sendfile: Use res.sendFile instead'); - /** * Transfer the file at the given `path` as an attachment. * * Optionally providing an alternate attachment `filename`, - * and optional callback `callback(err)`. The callback is invoked + * and optional callback `fn(err)`. The callback is invoked * when the data transfer is complete, or when an error has * ocurred. Be sure to check `res.headersSent` if you plan to respond. * * This method uses `res.sendfile()`. * - * @public + * @param {String} path + * @param {String|Function} filename or fn + * @param {Function} fn + * @api public */ -res.download = function download(path, filename, callback) { - var done = callback; - var name = filename; - +res.download = function download(path, filename, fn) { // support function as second arg if (typeof filename === 'function') { - done = filename; - name = null; + fn = filename; + filename = null; } - // set Content-Disposition when file is sent - var headers = { - 'Content-Disposition': contentDisposition(name || path) - }; + filename = filename || path; - // Resolve the full path for sendFile - var fullPath = resolve(path); + this.set('Content-Disposition', contentDisposition(filename)); - return this.sendFile(fullPath, { headers: headers }, done); + return this.sendfile(path, fn); }; /** @@ -539,16 +454,14 @@ res.download = function download(path, filename, callback) { * * @param {String} type * @return {ServerResponse} for chaining - * @public + * @api public */ res.contentType = -res.type = function contentType(type) { - var ct = type.indexOf('/') === -1 - ? mime.lookup(type) - : type; - - return this.set('Content-Type', ct); +res.type = function(type){ + return this.set('Content-Type', ~type.indexOf('/') + ? type + : mime.lookup(type)); }; /** @@ -605,31 +518,32 @@ res.type = function contentType(type) { * * @param {Object} obj * @return {ServerResponse} for chaining - * @public + * @api public */ res.format = function(obj){ - var req = this.req; - var next = req.next; + var req = this.req + , next = req.next; var fn = obj.default; if (fn) delete obj.default; var keys = Object.keys(obj); - var key = keys.length > 0 - ? req.accepts(keys) - : false; + var key = req.accepts(keys); this.vary("Accept"); if (key) { - this.set('Content-Type', normalizeType(key).value); + var type = normalizeType(key).value; + var charset = mime.charsets.lookup(type); + if (charset) type += '; charset=' + charset; + this.set('Content-Type', type); obj[key](req, this, next); } else if (fn) { fn(); } else { var err = new Error('Not Acceptable'); - err.status = err.statusCode = 406; + err.status = 406; err.types = normalizeTypes(keys).map(function(o){ return o.value }); next(err); } @@ -642,7 +556,7 @@ res.format = function(obj){ * * @param {String} filename * @return {ServerResponse} - * @public + * @api public */ res.attachment = function attachment(filename) { @@ -655,35 +569,6 @@ res.attachment = function attachment(filename) { return this; }; -/** - * Append additional header `field` with value `val`. - * - * Example: - * - * res.append('Link', ['', '']); - * res.append('Set-Cookie', 'foo=bar; Path=/; HttpOnly'); - * res.append('Warning', '199 Miscellaneous warning'); - * - * @param {String} field - * @param {String|Array} val - * @return {ServerResponse} for chaining - * @public - */ - -res.append = function append(field, val) { - var prev = this.get(field); - var value = val; - - if (prev) { - // concat the new and prev vals - value = Array.isArray(prev) ? prev.concat(val) - : Array.isArray(val) ? [prev].concat(val) - : [prev, val]; - } - - return this.set(field, value); -}; - /** * Set header `field` to `val`, or pass * an object of header fields. @@ -696,26 +581,18 @@ res.append = function append(field, val) { * * Aliased as `res.header()`. * - * @param {String|Object} field - * @param {String|Array} val + * @param {String|Object|Array} field + * @param {String} val * @return {ServerResponse} for chaining - * @public + * @api public */ res.set = -res.header = function header(field, val) { - if (arguments.length === 2) { - var value = Array.isArray(val) - ? val.map(String) - : String(val); - - // add charset to content-type - if (field.toLowerCase() === 'content-type' && !charsetRegExp.test(value)) { - var charset = mime.charsets.lookup(value.split(';')[0]); - if (charset) value += '; charset=' + charset.toLowerCase(); - } - - this.setHeader(field, value); +res.header = function(field, val){ + if (2 == arguments.length) { + if (Array.isArray(val)) val = val.map(String); + else val = String(val); + this.setHeader(field, val); } else { for (var key in field) { this.set(key, field[key]); @@ -729,7 +606,7 @@ res.header = function header(field, val) { * * @param {String} field * @return {String} - * @public + * @api public */ res.get = function(field){ @@ -741,18 +618,19 @@ res.get = function(field){ * * @param {String} name * @param {Object} options - * @return {ServerResponse} for chaining - * @public + * @param {ServerResponse} for chaining + * @api public */ -res.clearCookie = function clearCookie(name, options) { - var opts = merge({ expires: new Date(1), path: '/' }, options); - - return this.cookie(name, '', opts); +res.clearCookie = function(name, options){ + var opts = { expires: new Date(1), path: '/' }; + return this.cookie(name, '', options + ? merge(opts, options) + : opts); }; /** - * Set cookie `name` to `value`, with the given `options`. + * Set cookie `name` to `val`, with the given `options`. * * Options: * @@ -769,43 +647,29 @@ res.clearCookie = function clearCookie(name, options) { * res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true }) * * @param {String} name - * @param {String|Object} value + * @param {String|Object} val * @param {Options} options - * @return {ServerResponse} for chaining - * @public + * @api public */ -res.cookie = function (name, value, options) { - var opts = merge({}, options); +res.cookie = function(name, val, options){ + options = merge({}, options); var secret = this.req.secret; - var signed = opts.signed; - - if (signed && !secret) { - throw new Error('cookieParser("secret") required for signed cookies'); + var signed = options.signed; + if (signed && !secret) throw new Error('connect.cookieParser("secret") required for signed cookies'); + if ('number' == typeof val) val = val.toString(); + if ('object' == typeof val) val = 'j:' + JSON.stringify(val); + if (signed) val = 's:' + sign(val, secret); + if ('maxAge' in options) { + options.expires = new Date(Date.now() + options.maxAge); + options.maxAge /= 1000; } - - var val = typeof value === 'object' - ? 'j:' + JSON.stringify(value) - : String(value); - - if (signed) { - val = 's:' + sign(val, secret); - } - - if ('maxAge' in opts) { - opts.expires = new Date(Date.now() + opts.maxAge); - opts.maxAge /= 1000; - } - - if (opts.path == null) { - opts.path = '/'; - } - - this.append('Set-Cookie', cookie.serialize(name, String(val), opts)); - + if (null == options.path) options.path = '/'; + this.set('Set-Cookie', cookie.serialize(name, String(val), options)); return this; }; + /** * Set the location header to `url`. * @@ -816,23 +680,49 @@ res.cookie = function (name, value, options) { * * res.location('/foo/bar').; * res.location('http://example.com'); - * res.location('../login'); + * res.location('../login'); // /blog/post/1 -> /blog/login + * + * Mounting: + * + * When an application is mounted and `res.location()` + * is given a path that does _not_ lead with "/" it becomes + * relative to the mount-point. For example if the application + * is mounted at "/blog", the following would become "/blog/login". + * + * res.location('login'); + * + * While the leading slash would result in a location of "/login": + * + * res.location('/login'); * * @param {String} url - * @return {ServerResponse} for chaining - * @public + * @api public */ -res.location = function location(url) { - var loc = url; +res.location = function(url){ + var app = this.app + , req = this.req + , path; // "back" is an alias for the referrer - if (url === 'back') { - loc = this.req.get('Referrer') || '/'; + if ('back' == url) url = req.get('Referrer') || '/'; + + // relative + if (!~url.indexOf('://') && 0 != url.indexOf('//')) { + // relative to path + if ('.' == url[0]) { + path = parseUrl.original(req).pathname; + path = path + ('/' == path[path.length - 1] ? '' : '/'); + url = resolve(path, url); + // relative to mount-point + } else if ('/' != url[0]) { + path = app.path(); + url = path + '/' + url; + } } - // set location - this.set('Location', loc); + // Respond + this.set('Location', url); return this; }; @@ -851,19 +741,19 @@ res.location = function location(url) { * res.redirect(301, 'http://example.com'); * res.redirect('../login'); // /blog/post/1 -> /blog/login * - * @public + * @api public */ -res.redirect = function redirect(url) { - var address = url; - var body; - var status = 302; +res.redirect = function(url){ + var head = 'HEAD' == this.req.method + , status = 302 + , body; // allow status / url - if (arguments.length === 2) { - if (typeof arguments[0] === 'number') { - status = arguments[0]; - address = arguments[1]; + if (2 == arguments.length) { + if ('number' == typeof url) { + status = url; + url = arguments[1]; } else { deprecate('res.redirect(url, status): Use res.redirect(status, url) instead'); status = arguments[1]; @@ -871,17 +761,17 @@ res.redirect = function redirect(url) { } // Set location header - this.location(address); - address = this.get('Location'); + this.location(url); + url = this.get('Location'); // Support text/{plain,html} by default this.format({ text: function(){ - body = statusCodes[status] + '. Redirecting to ' + encodeURI(address); + body = statusCodes[status] + '. Redirecting to ' + encodeURI(url); }, html: function(){ - var u = escapeHtml(address); + var u = escapeHtml(url); body = '

    ' + statusCodes[status] + '. Redirecting to ' + u + '

    '; }, @@ -893,12 +783,7 @@ res.redirect = function redirect(url) { // Respond this.statusCode = status; this.set('Content-Length', Buffer.byteLength(body)); - - if (this.req.method === 'HEAD') { - this.end(); - } else { - this.end(body); - } + this.end(head ? null : body); }; /** @@ -906,16 +791,14 @@ res.redirect = function redirect(url) { * this call is simply ignored. * * @param {Array|String} field - * @return {ServerResponse} for chaining - * @public + * @param {ServerResponse} for chaining + * @api public */ res.vary = function(field){ // checks for back-compat - if (!field || (Array.isArray(field) && !field.length)) { - deprecate('res.vary(): Provide a field name'); - return this; - } + if (!field) return this; + if (Array.isArray(field) && !field.length) return this; vary(this, field); @@ -932,122 +815,32 @@ res.vary = function(field){ * - `cache` boolean hinting to the engine it should cache * - `filename` filename of the view being rendered * - * @public + * @param {String} view + * @param {Object|Function} options or callback function + * @param {Function} fn + * @api public */ -res.render = function render(view, options, callback) { - var app = this.req.app; - var done = callback; - var opts = options || {}; - var req = this.req; - var self = this; +res.render = function(view, options, fn){ + var self = this + , options = options || {} + , req = this.req + , app = req.app; // support callback function as second arg - if (typeof options === 'function') { - done = options; - opts = {}; + if ('function' == typeof options) { + fn = options, options = {}; } // merge res.locals - opts._locals = self.locals; + options._locals = self.locals; // default callback to respond - done = done || function (err, str) { + fn = fn || function(err, str){ if (err) return req.next(err); self.send(str); }; // render - app.render(view, opts, done); + app.render(view, options, fn); }; - -// pipe the send file stream -function sendfile(res, file, options, callback) { - var done = false; - var streaming; - - // request aborted - function onaborted() { - if (done) return; - done = true; - - var err = new Error('Request aborted'); - err.code = 'ECONNABORTED'; - callback(err); - } - - // directory - function ondirectory() { - if (done) return; - done = true; - - var err = new Error('EISDIR, read'); - err.code = 'EISDIR'; - callback(err); - } - - // errors - function onerror(err) { - if (done) return; - done = true; - callback(err); - } - - // ended - function onend() { - if (done) return; - done = true; - callback(); - } - - // file - function onfile() { - streaming = false; - } - - // finished - function onfinish(err) { - if (err && err.code === 'ECONNRESET') return onaborted(); - if (err) return onerror(err); - if (done) return; - - setImmediate(function () { - if (streaming !== false && !done) { - onaborted(); - return; - } - - if (done) return; - done = true; - callback(); - }); - } - - // streaming - function onstream() { - streaming = true; - } - - file.on('directory', ondirectory); - file.on('end', onend); - file.on('error', onerror); - file.on('file', onfile); - file.on('stream', onstream); - onFinished(res, onfinish); - - if (options.headers) { - // set headers on successful transfer - file.on('headers', function headers(res) { - var obj = options.headers; - var keys = Object.keys(obj); - - for (var i = 0; i < keys.length; i++) { - var k = keys[i]; - res.setHeader(k, obj[k]); - } - }); - } - - // pipe - file.pipe(res); -} diff --git a/node_modules/express/lib/router/index.js b/node_modules/express/lib/router/index.js index 1f3ec6d..a6bf8a8 100644 --- a/node_modules/express/lib/router/index.js +++ b/node_modules/express/lib/router/index.js @@ -1,115 +1,59 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - /** * Module dependencies. - * @private */ var Route = require('./route'); -var Layer = require('./layer'); +var utils = require('../utils'); var methods = require('methods'); -var mixin = require('utils-merge'); var debug = require('debug')('express:router'); -var deprecate = require('depd')('express'); -var flatten = require('array-flatten'); var parseUrl = require('parseurl'); /** - * Module variables. - * @private + * Expose `Router` constructor. */ -var objectRegExp = /^\[object (\S+)\]$/; -var slice = Array.prototype.slice; -var toString = Object.prototype.toString; +exports = module.exports = Router; /** * Initialize a new `Router` with the given `options`. * * @param {Object} options - * @return {Router} which is an callable function - * @public + * @api private */ -var proto = module.exports = function(options) { - var opts = options || {}; - - function router(req, res, next) { - router.handle(req, res, next); - } - - // mixin Router class functions - router.__proto__ = proto; - - router.params = {}; - router._params = []; - router.caseSensitive = opts.caseSensitive; - router.mergeParams = opts.mergeParams; - router.strict = opts.strict; - router.stack = []; - - return router; -}; +function Router(options) { + options = options || {}; + var self = this; + this.map = {}; + this.params = {}; + this._params = []; + this.caseSensitive = options.caseSensitive; + this.strict = options.strict; + this.middleware = function router(req, res, next){ + self._dispatch(req, res, next); + }; +} /** - * Map the given param placeholder `name`(s) to the given callback. + * Register a param callback `fn` for the given `name`. * - * Parameter mapping is used to provide pre-conditions to routes - * which use normalized placeholders. For example a _:user_id_ parameter - * could automatically load a user's information from the database without - * any additional code, - * - * The callback uses the same signature as middleware, the only difference - * being that the value of the placeholder is passed, in this case the _id_ - * of the user. Once the `next()` function is invoked, just like middleware - * it will continue on to execute the route, or subsequent parameter functions. - * - * Just like in middleware, you must either respond to the request or call next - * to avoid stalling the request. - * - * app.param('user_id', function(req, res, next, id){ - * User.find(id, function(err, user){ - * if (err) { - * return next(err); - * } else if (!user) { - * return next(new Error('failed to load user')); - * } - * req.user = user; - * next(); - * }); - * }); - * - * @param {String} name + * @param {String|Function} name * @param {Function} fn - * @return {app} for chaining - * @public + * @return {Router} for chaining + * @api public */ -proto.param = function param(name, fn) { +Router.prototype.param = function(name, fn){ // param logic - if (typeof name === 'function') { - deprecate('router.param(fn): Refactor to use path params'); + if ('function' == typeof name) { this._params.push(name); return; } // apply param functions - var params = this._params; - var len = params.length; - var ret; - - if (name[0] === ':') { - deprecate('router.param(' + JSON.stringify(name) + ', fn): Use router.param(' + JSON.stringify(name.substr(1)) + ', fn) instead'); - name = name.substr(1); - } + var params = this._params + , len = params.length + , ret; for (var i = 0; i < len; ++i) { if (ret = params[i](name, fn)) { @@ -128,515 +72,265 @@ proto.param = function param(name, fn) { }; /** - * Dispatch a req, res into the router. - * @private + * Route dispatcher aka the route "middleware". + * + * @param {IncomingMessage} req + * @param {ServerResponse} res + * @param {Function} next + * @api private */ -proto.handle = function handle(req, res, out) { - var self = this; +Router.prototype._dispatch = function(req, res, next){ + var params = this.params + , self = this; - debug('dispatching %s %s', req.method, req.url); + debug('dispatching %s %s (%s)', req.method, req.url, req.originalUrl); - var search = 1 + req.url.indexOf('?'); - var pathlength = search ? search - 1 : req.url.length; - var fqdn = req.url[0] !== '/' && 1 + req.url.substr(0, pathlength).indexOf('://'); - var protohost = fqdn ? req.url.substr(0, req.url.indexOf('/', 2 + fqdn)) : ''; - var idx = 0; - var removed = ''; - var slashAdded = false; - var paramcalled = {}; + // route dispatch + (function pass(i, err){ + var paramCallbacks + , paramIndex = 0 + , paramVal + , route + , keys + , key; - // store options for OPTIONS request - // only used if OPTIONS request - var options = []; - - // middleware and routes - var stack = self.stack; - - // manage inter-router variables - var parentParams = req.params; - var parentUrl = req.baseUrl || ''; - var done = restore(out, req, 'baseUrl', 'next', 'params'); - - // setup next layer - req.next = next; - - // for options requests, respond with a default if nothing else responds - if (req.method === 'OPTIONS') { - done = wrap(done, function(old, err) { - if (err || options.length === 0) return old(err); - sendOptionsResponse(res, options, old); - }); - } - - // setup basic req values - req.baseUrl = parentUrl; - req.originalUrl = req.originalUrl || req.url; - - next(); - - function next(err) { - var layerError = err === 'route' - ? null - : err; - - // remove added slash - if (slashAdded) { - req.url = req.url.substr(1); - slashAdded = false; + // match next route + function nextRoute(err) { + pass(req._route_index + 1, err); } - // restore altered req.url - if (removed.length !== 0) { - req.baseUrl = parentUrl; - req.url = protohost + removed + req.url.substr(protohost.length); - removed = ''; - } + // match route + req.route = route = self.matchRequest(req, i); - // no more matching layers - if (idx >= stack.length) { - setImmediate(done, layerError); - return; - } + // implied OPTIONS + if (!route && 'OPTIONS' == req.method) return self._options(req, res, next); - // get pathname of request - var path = getPathname(req); + // no route + if (!route) return next(err); + debug('matched %s %s', route.method, route.path); - if (path == null) { - return done(layerError); - } + // we have a route + // start at param 0 + req.params = route.params; + keys = route.keys; + i = 0; - // find next matching layer - var layer; - var match; - var route; + // param callbacks + function param(err) { + paramIndex = 0; + key = keys[i++]; + paramVal = key && req.params[key.name]; + paramCallbacks = key && params[key.name]; - while (match !== true && idx < stack.length) { - layer = stack[idx++]; - match = matchLayer(layer, path); - route = layer.route; - - if (typeof match !== 'boolean') { - // hold on to layerError - layerError = layerError || match; + try { + if ('route' == err) { + nextRoute(); + } else if (err) { + i = 0; + callbacks(err); + } else if (paramCallbacks && undefined !== paramVal) { + paramCallback(); + } else if (key) { + param(); + } else { + i = 0; + callbacks(); + } + } catch (err) { + param(err); } - - if (match !== true) { - continue; - } - - if (!route) { - // process non-route handlers normally - continue; - } - - if (layerError) { - // routes do not match with a pending error - match = false; - continue; - } - - var method = req.method; - var has_method = route._handles_method(method); - - // build up automatic options response - if (!has_method && method === 'OPTIONS') { - appendMethods(options, route._options()); - } - - // don't even bother matching route - if (!has_method && method !== 'HEAD') { - match = false; - continue; - } - } - - // no match - if (match !== true) { - return done(layerError); - } - - // store route for dispatch on change - if (route) { - req.route = route; - } - - // Capture one-time layer values - req.params = self.mergeParams - ? mergeParams(layer.params, parentParams) - : layer.params; - var layerPath = layer.path; - - // this should be done for the layer - self.process_params(layer, paramcalled, req, res, function (err) { - if (err) { - return next(layerError || err); - } - - if (route) { - return layer.handle_request(req, res, next); - } - - trim_prefix(layer, layerError, layerPath, path); - }); - } - - function trim_prefix(layer, layerError, layerPath, path) { - var c = path[layerPath.length]; - if (c && '/' !== c && '.' !== c) return next(layerError); - - // Trim off the part of the url that matches the route - // middleware (.use stuff) needs to have the path stripped - if (layerPath.length !== 0) { - debug('trim prefix (%s) from url %s', layerPath, req.url); - removed = layerPath; - req.url = protohost + req.url.substr(protohost.length + removed.length); - - // Ensure leading slash - if (!fqdn && req.url[0] !== '/') { - req.url = '/' + req.url; - slashAdded = true; - } - - // Setup base URL (no trailing slash) - req.baseUrl = parentUrl + (removed[removed.length - 1] === '/' - ? removed.substring(0, removed.length - 1) - : removed); - } - - debug('%s %s : %s', layer.name, layerPath, req.originalUrl); - - if (layerError) { - layer.handle_error(layerError, req, res, next); - } else { - layer.handle_request(req, res, next); - } - } -}; - -/** - * Process any parameters for the layer. - * @private - */ - -proto.process_params = function process_params(layer, called, req, res, done) { - var params = this.params; - - // captured parameters from the layer, keys and values - var keys = layer.keys; - - // fast track - if (!keys || keys.length === 0) { - return done(); - } - - var i = 0; - var name; - var paramIndex = 0; - var key; - var paramVal; - var paramCallbacks; - var paramCalled; - - // process params in order - // param callbacks can be async - function param(err) { - if (err) { - return done(err); - } - - if (i >= keys.length ) { - return done(); - } - - paramIndex = 0; - key = keys[i++]; - - if (!key) { - return done(); - } - - name = key.name; - paramVal = req.params[name]; - paramCallbacks = params[name]; - paramCalled = called[name]; - - if (paramVal === undefined || !paramCallbacks) { - return param(); - } - - // param previously called with same value or error occurred - if (paramCalled && (paramCalled.match === paramVal - || (paramCalled.error && paramCalled.error !== 'route'))) { - // restore value - req.params[name] = paramCalled.value; - - // next param - return param(paramCalled.error); - } - - called[name] = paramCalled = { - error: null, - match: paramVal, - value: paramVal }; - paramCallback(); - } + param(err); - // single param callbacks - function paramCallback(err) { - var fn = paramCallbacks[paramIndex++]; - - // store updated value - paramCalled.value = req.params[key.name]; - - if (err) { - // store error - paramCalled.error = err; - param(err); - return; - } - - if (!fn) return param(); - - try { + // single param callbacks + function paramCallback(err) { + var fn = paramCallbacks[paramIndex++]; + if (err || !fn) return param(err); fn(req, res, paramCallback, paramVal, key.name); - } catch (e) { - paramCallback(e); } - } - param(); + // invoke route callbacks + function callbacks(err) { + var fn = route.callbacks[i++]; + try { + if ('route' == err) { + nextRoute(); + } else if (err && fn) { + if (fn.length < 4) return callbacks(err); + fn(err, req, res, callbacks); + } else if (fn) { + if (fn.length < 4) return fn(req, res, callbacks); + callbacks(); + } else { + nextRoute(err); + } + } catch (err) { + callbacks(err); + } + } + })(0); }; /** - * Use the given middleware function, with optional path, defaulting to "/". + * Respond to __OPTIONS__ method. * - * Use (like `.all`) will run for any http METHOD, but it will not add - * handlers for those methods so OPTIONS requests will not consider `.use` - * functions even if they could respond. - * - * The other difference is that _route_ path is stripped and not visible - * to the handler function. The main effect of this feature is that mounted - * handlers can operate without any code changes regardless of the "prefix" - * pathname. - * - * @public + * @param {IncomingMessage} req + * @param {ServerResponse} res + * @api private */ -proto.use = function use(fn) { - var offset = 0; - var path = '/'; +Router.prototype._options = function(req, res, next){ + var path = parseUrl(req).pathname + , body = this._optionsFor(path).join(','); + if (!body) return next(); + res.set('Allow', body).send(body); +}; - // default path to '/' - // disambiguate router.use([fn]) - if (typeof fn !== 'function') { - var arg = fn; +/** + * Return an array of HTTP verbs or "options" for `path`. + * + * @param {String} path + * @return {Array} + * @api private + */ - while (Array.isArray(arg) && arg.length !== 0) { - arg = arg[0]; +Router.prototype._optionsFor = function _optionsFor(path) { + var options = []; + + for (var i = 0; i < methods.length; i++) { + var method = methods[i]; + + if (method === 'options') continue; + + var routes = this.map[method]; + + // HEAD methods include GET routes + if (!routes && method === 'head') { + routes = this.map.get; } - // first arg is the path - if (typeof arg !== 'function') { - offset = 1; - path = fn; + if (!routes) continue; + + for (var j = 0; j < routes.length; j++) { + if (routes[j].match(path)) { + options.push(method.toUpperCase()); + break; + } } } - var callbacks = flatten(slice.call(arguments, offset)); + return options.sort(); +}; - if (callbacks.length === 0) { - throw new TypeError('Router.use() requires middleware functions'); +/** + * Attempt to match a route for `req` + * with optional starting index of `i` + * defaulting to 0. + * + * @param {IncomingMessage} req + * @param {Number} i + * @return {Route} + * @api private + */ + +Router.prototype.matchRequest = function(req, i, head){ + var method = req.method.toLowerCase() + , url = parseUrl(req) + , path = url.pathname + , routes = this.map + , i = i || 0 + , route; + + // HEAD support + if (!head && 'head' == method) { + route = this.matchRequest(req, i, true); + if (route) return route; + method = 'get'; } - for (var i = 0; i < callbacks.length; i++) { - var fn = callbacks[i]; + // routes for this method + if (routes = routes[method]) { - if (typeof fn !== 'function') { - throw new TypeError('Router.use() requires middleware function but got a ' + gettype(fn)); + // matching routes + for (var len = routes.length; i < len; ++i) { + route = routes[i]; + if (route.match(path)) { + req._route_index = i; + return route; + } } - - // add the middleware - debug('use %s %s', path, fn.name || ''); - - var layer = new Layer(path, { - sensitive: this.caseSensitive, - strict: false, - end: false - }, fn); - - layer.route = undefined; - - this.stack.push(layer); } +}; +/** + * Attempt to match a route for `method` + * and `url` with optional starting + * index of `i` defaulting to 0. + * + * @param {String} method + * @param {String} url + * @param {Number} i + * @return {Route} + * @api private + */ + +Router.prototype.match = function(method, url, i, head){ + var req = { method: method, url: url }; + return this.matchRequest(req, i, head); +}; + +/** + * Route `method`, `path`, and one or more callbacks. + * + * @param {String} method + * @param {String} path + * @param {Function} callback... + * @return {Router} for chaining + * @api private + */ + +Router.prototype.route = function(method, path, callbacks){ + var method = method.toLowerCase() + , callbacks = utils.flatten([].slice.call(arguments, 2)); + + // ensure path was given + if (!path) throw new Error('Router#' + method + '() requires a path'); + + // ensure all callbacks are functions + callbacks.forEach(function(fn){ + if ('function' == typeof fn) return; + var type = {}.toString.call(fn); + var msg = '.' + method + '() requires callback functions but got a ' + type; + throw new Error(msg); + }); + + // create the route + debug('defined %s %s', method, path); + var route = new Route(method, path, callbacks, { + sensitive: this.caseSensitive, + strict: this.strict + }); + + // add it + (this.map[method] = this.map[method] || []).push(route); return this; }; -/** - * Create a new Route for the given path. - * - * Each route contains a separate middleware stack and VERB handlers. - * - * See the Route api documentation for details on adding handlers - * and middleware to routes. - * - * @param {String} path - * @return {Route} - * @public - */ - -proto.route = function route(path) { - var route = new Route(path); - - var layer = new Layer(path, { - sensitive: this.caseSensitive, - strict: this.strict, - end: true - }, route.dispatch.bind(route)); - - layer.route = route; - - this.stack.push(layer); - return route; +Router.prototype.all = function(path) { + var self = this; + var args = [].slice.call(arguments); + methods.forEach(function(method){ + self.route.apply(self, [method].concat(args)); + }); + return this; }; -// create Router#VERB functions -methods.concat('all').forEach(function(method){ - proto[method] = function(path){ - var route = this.route(path) - route[method].apply(route, slice.call(arguments, 1)); +methods.forEach(function(method){ + Router.prototype[method] = function(path){ + var args = [method].concat([].slice.call(arguments)); + this.route.apply(this, args); return this; }; }); - -// append methods to a list of methods -function appendMethods(list, addition) { - for (var i = 0; i < addition.length; i++) { - var method = addition[i]; - if (list.indexOf(method) === -1) { - list.push(method); - } - } -} - -// get pathname of request -function getPathname(req) { - try { - return parseUrl(req).pathname; - } catch (err) { - return undefined; - } -} - -// get type for error message -function gettype(obj) { - var type = typeof obj; - - if (type !== 'object') { - return type; - } - - // inspect [[Class]] for objects - return toString.call(obj) - .replace(objectRegExp, '$1'); -} - -/** - * Match path to a layer. - * - * @param {Layer} layer - * @param {string} path - * @private - */ - -function matchLayer(layer, path) { - try { - return layer.match(path); - } catch (err) { - return err; - } -} - -// merge params with parent params -function mergeParams(params, parent) { - if (typeof parent !== 'object' || !parent) { - return params; - } - - // make copy of parent for base - var obj = mixin({}, parent); - - // simple non-numeric merging - if (!(0 in params) || !(0 in parent)) { - return mixin(obj, params); - } - - var i = 0; - var o = 0; - - // determine numeric gaps - while (i === o || o in parent) { - if (i in params) i++; - if (o in parent) o++; - } - - // offset numeric indices in params before merge - for (i--; i >= 0; i--) { - params[i + o] = params[i]; - - // create holes for the merge when necessary - if (i < o) { - delete params[i]; - } - } - - return mixin(parent, params); -} - -// restore obj props after function -function restore(fn, obj) { - var props = new Array(arguments.length - 2); - var vals = new Array(arguments.length - 2); - - for (var i = 0; i < props.length; i++) { - props[i] = arguments[i + 2]; - vals[i] = obj[props[i]]; - } - - return function(err){ - // restore vals - for (var i = 0; i < props.length; i++) { - obj[props[i]] = vals[i]; - } - - return fn.apply(this, arguments); - }; -} - -// send an OPTIONS response -function sendOptionsResponse(res, options, next) { - try { - var body = options.join(','); - res.set('Allow', body); - res.send(body); - } catch (err) { - next(err); - } -} - -// wrap a function -function wrap(old, fn) { - return function proxy() { - var args = new Array(arguments.length + 1); - - args[0] = old; - for (var i = 0, len = arguments.length; i < len; i++) { - args[i + 1] = arguments[i]; - } - - fn.apply(this, args); - }; -} diff --git a/node_modules/express/lib/router/layer.js b/node_modules/express/lib/router/layer.js deleted file mode 100644 index fe9210c..0000000 --- a/node_modules/express/lib/router/layer.js +++ /dev/null @@ -1,176 +0,0 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - -/** - * Module dependencies. - * @private - */ - -var pathRegexp = require('path-to-regexp'); -var debug = require('debug')('express:router:layer'); - -/** - * Module variables. - * @private - */ - -var hasOwnProperty = Object.prototype.hasOwnProperty; - -/** - * Module exports. - * @public - */ - -module.exports = Layer; - -function Layer(path, options, fn) { - if (!(this instanceof Layer)) { - return new Layer(path, options, fn); - } - - debug('new %s', path); - var opts = options || {}; - - this.handle = fn; - this.name = fn.name || ''; - this.params = undefined; - this.path = undefined; - this.regexp = pathRegexp(path, this.keys = [], opts); - - if (path === '/' && opts.end === false) { - this.regexp.fast_slash = true; - } -} - -/** - * Handle the error for the layer. - * - * @param {Error} error - * @param {Request} req - * @param {Response} res - * @param {function} next - * @api private - */ - -Layer.prototype.handle_error = function handle_error(error, req, res, next) { - var fn = this.handle; - - if (fn.length !== 4) { - // not a standard error handler - return next(error); - } - - try { - fn(error, req, res, next); - } catch (err) { - next(err); - } -}; - -/** - * Handle the request for the layer. - * - * @param {Request} req - * @param {Response} res - * @param {function} next - * @api private - */ - -Layer.prototype.handle_request = function handle(req, res, next) { - var fn = this.handle; - - if (fn.length > 3) { - // not a standard request handler - return next(); - } - - try { - fn(req, res, next); - } catch (err) { - next(err); - } -}; - -/** - * Check if this route matches `path`, if so - * populate `.params`. - * - * @param {String} path - * @return {Boolean} - * @api private - */ - -Layer.prototype.match = function match(path) { - if (path == null) { - // no path, nothing matches - this.params = undefined; - this.path = undefined; - return false; - } - - if (this.regexp.fast_slash) { - // fast path non-ending match for / (everything matches) - this.params = {}; - this.path = ''; - return true; - } - - var m = this.regexp.exec(path); - - if (!m) { - this.params = undefined; - this.path = undefined; - return false; - } - - // store values - this.params = {}; - this.path = m[0]; - - var keys = this.keys; - var params = this.params; - - for (var i = 1; i < m.length; i++) { - var key = keys[i - 1]; - var prop = key.name; - var val = decode_param(m[i]); - - if (val !== undefined || !(hasOwnProperty.call(params, prop))) { - params[prop] = val; - } - } - - return true; -}; - -/** - * Decode param value. - * - * @param {string} val - * @return {string} - * @private - */ - -function decode_param(val) { - if (typeof val !== 'string' || val.length === 0) { - return val; - } - - try { - return decodeURIComponent(val); - } catch (err) { - if (err instanceof URIError) { - err.message = 'Failed to decode param \'' + val + '\''; - err.status = err.statusCode = 400; - } - - throw err; - } -} diff --git a/node_modules/express/lib/router/route.js b/node_modules/express/lib/router/route.js index 2788d7b..d7ec88d 100644 --- a/node_modules/express/lib/router/route.js +++ b/node_modules/express/lib/router/route.js @@ -1,210 +1,78 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; /** * Module dependencies. - * @private */ -var debug = require('debug')('express:router:route'); -var flatten = require('array-flatten'); -var Layer = require('./layer'); -var methods = require('methods'); +var utils = require('../utils'); /** - * Module variables. - * @private - */ - -var slice = Array.prototype.slice; -var toString = Object.prototype.toString; - -/** - * Module exports. - * @public + * Expose `Route`. */ module.exports = Route; /** - * Initialize `Route` with the given `path`, + * Initialize `Route` with the given HTTP `method`, `path`, + * and an array of `callbacks` and `options`. * + * Options: + * + * - `sensitive` enable case-sensitive routes + * - `strict` enable strict matching for trailing slashes + * + * @param {String} method * @param {String} path - * @public + * @param {Array} callbacks + * @param {Object} options. + * @api private */ -function Route(path) { +function Route(method, path, callbacks, options) { + options = options || {}; this.path = path; - this.stack = []; - - debug('new %s', path); - - // route handlers for various http methods - this.methods = {}; + this.method = method; + this.callbacks = callbacks; + this.regexp = utils.pathRegexp(path + , this.keys = [] + , options.sensitive + , options.strict); } /** - * Determine if the route handles a given method. - * @private + * Check if this route matches `path`, if so + * populate `.params`. + * + * @param {String} path + * @return {Boolean} + * @api private */ -Route.prototype._handles_method = function _handles_method(method) { - if (this.methods._all) { - return true; - } +Route.prototype.match = function(path){ + var keys = this.keys + , params = this.params = [] + , m = this.regexp.exec(path); - var name = method.toLowerCase(); + if (!m) return false; - if (name === 'head' && !this.methods['head']) { - name = 'get'; - } + for (var i = 1, len = m.length; i < len; ++i) { + var key = keys[i - 1]; - return Boolean(this.methods[name]); -}; - -/** - * @return {Array} supported HTTP methods - * @private - */ - -Route.prototype._options = function _options() { - var methods = Object.keys(this.methods); - - // append automatic head - if (this.methods.get && !this.methods.head) { - methods.push('head'); - } - - for (var i = 0; i < methods.length; i++) { - // make upper case - methods[i] = methods[i].toUpperCase(); - } - - return methods; -}; - -/** - * dispatch req, res into this route - * @private - */ - -Route.prototype.dispatch = function dispatch(req, res, done) { - var idx = 0; - var stack = this.stack; - if (stack.length === 0) { - return done(); - } - - var method = req.method.toLowerCase(); - if (method === 'head' && !this.methods['head']) { - method = 'get'; - } - - req.route = this; - - next(); - - function next(err) { - if (err && err === 'route') { - return done(); + try { + var val = 'string' == typeof m[i] + ? decodeURIComponent(m[i]) + : m[i]; + } catch(e) { + var err = new Error("Failed to decode param '" + m[i] + "'"); + err.status = 400; + throw err; } - var layer = stack[idx++]; - if (!layer) { - return done(err); - } - - if (layer.method && layer.method !== method) { - return next(err); - } - - if (err) { - layer.handle_error(err, req, res, next); + if (key) { + params[key.name] = val; } else { - layer.handle_request(req, res, next); + params.push(val); } } + + return true; }; - -/** - * Add a handler for all HTTP verbs to this route. - * - * Behaves just like middleware and can respond or call `next` - * to continue processing. - * - * You can use multiple `.all` call to add multiple handlers. - * - * function check_something(req, res, next){ - * next(); - * }; - * - * function validate_user(req, res, next){ - * next(); - * }; - * - * route - * .all(validate_user) - * .all(check_something) - * .get(function(req, res, next){ - * res.send('hello world'); - * }); - * - * @param {function} handler - * @return {Route} for chaining - * @api public - */ - -Route.prototype.all = function all() { - var handles = flatten(slice.call(arguments)); - - for (var i = 0; i < handles.length; i++) { - var handle = handles[i]; - - if (typeof handle !== 'function') { - var type = toString.call(handle); - var msg = 'Route.all() requires callback functions but got a ' + type; - throw new TypeError(msg); - } - - var layer = Layer('/', {}, handle); - layer.method = undefined; - - this.methods._all = true; - this.stack.push(layer); - } - - return this; -}; - -methods.forEach(function(method){ - Route.prototype[method] = function(){ - var handles = flatten(slice.call(arguments)); - - for (var i = 0; i < handles.length; i++) { - var handle = handles[i]; - - if (typeof handle !== 'function') { - var type = toString.call(handle); - var msg = 'Route.' + method + '() requires callback functions but got a ' + type; - throw new Error(msg); - } - - debug('%s %s', method, this.path); - - var layer = Layer('/', {}, handle); - layer.method = method; - - this.methods[method] = true; - this.stack.push(layer); - } - - return this; - }; -}); diff --git a/node_modules/express/lib/utils.js b/node_modules/express/lib/utils.js index 3d54247..889b62d 100644 --- a/node_modules/express/lib/utils.js +++ b/node_modules/express/lib/utils.js @@ -5,23 +5,21 @@ * MIT Licensed */ -'use strict'; - /** * Module dependencies. * @api private */ -var contentDisposition = require('content-disposition'); var contentType = require('content-type'); -var deprecate = require('depd')('express'); -var flatten = require('array-flatten'); -var mime = require('send').mime; -var basename = require('path').basename; var etag = require('etag'); +var mime = require('connect').mime; var proxyaddr = require('proxy-addr'); -var qs = require('qs'); -var querystring = require('querystring'); + +/** + * toString ref. + */ + +var toString = {}.toString; /** * Return strong ETag for `body`. @@ -57,6 +55,25 @@ exports.wetag = function wetag(body, encoding){ return etag(buf, {weak: true}); }; +/** + * Make `locals()` bound to the given `obj`. + * + * This is used for `app.locals` and `res.locals`. + * + * @param {Object} obj + * @return {Function} + * @api private + */ + +exports.locals = function(){ + function locals(obj){ + for (var key in obj) locals[key] = obj[key]; + return obj; + }; + + return locals; +}; + /** * Check if `path` looks absolute. * @@ -79,8 +96,18 @@ exports.isAbsolute = function(path){ * @api private */ -exports.flatten = deprecate.function(flatten, - 'utils.flatten: use array-flatten npm module instead'); +exports.flatten = function(arr, ret){ + var ret = ret || [] + , len = arr.length; + for (var i = 0; i < len; ++i) { + if (Array.isArray(arr[i])) { + exports.flatten(arr[i], ret); + } else { + ret.push(arr[i]); + } + } + return ret; +}; /** * Normalize the given `type`, for example "html" becomes "text/html". @@ -115,16 +142,126 @@ exports.normalizeTypes = function(types){ }; /** - * Generate Content-Disposition header appropriate for the filename. - * non-ascii filenames are urlencoded and a filename* parameter is added + * Return the acceptable type in `types`, if any. * - * @param {String} filename + * @param {Array} types + * @param {String} str * @return {String} * @api private */ -exports.contentDisposition = deprecate.function(contentDisposition, - 'utils.contentDisposition: use content-disposition npm module instead'); +exports.acceptsArray = function(types, str){ + // accept anything when Accept is not present + if (!str) return types[0]; + + // parse + var accepted = exports.parseAccept(str) + , normalized = exports.normalizeTypes(types) + , len = accepted.length; + + for (var i = 0; i < len; ++i) { + for (var j = 0, jlen = types.length; j < jlen; ++j) { + if (exports.accept(normalized[j], accepted[i])) { + return types[j]; + } + } + } +}; + +/** + * Check if `type(s)` are acceptable based on + * the given `str`. + * + * @param {String|Array} type(s) + * @param {String} str + * @return {Boolean|String} + * @api private + */ + +exports.accepts = function(type, str){ + if ('string' == typeof type) type = type.split(/ *, */); + return exports.acceptsArray(type, str); +}; + +/** + * Check if `type` array is acceptable for `other`. + * + * @param {Object} type + * @param {Object} other + * @return {Boolean} + * @api private + */ + +exports.accept = function(type, other){ + var t = type.value.split('/'); + return (t[0] == other.type || '*' == other.type) + && (t[1] == other.subtype || '*' == other.subtype) + && paramsEqual(type.params, other.params); +}; + +/** + * Check if accept params are equal. + * + * @param {Object} a + * @param {Object} b + * @return {Boolean} + * @api private + */ + +function paramsEqual(a, b){ + return !Object.keys(a).some(function(k) { + return a[k] != b[k]; + }); +} + +/** + * Parse accept `str`, returning + * an array objects containing + * `.type` and `.subtype` along + * with the values provided by + * `parseQuality()`. + * + * @param {Type} name + * @return {Type} + * @api private + */ + +exports.parseAccept = function(str){ + return exports + .parseParams(str) + .map(function(obj){ + var parts = obj.value.split('/'); + obj.type = parts[0]; + obj.subtype = parts[1]; + return obj; + }); +}; + +/** + * Parse quality `str`, returning an + * array of objects with `.value`, + * `.quality` and optional `.params` + * + * @param {String} str + * @return {Array} + * @api private + */ + +exports.parseParams = function(str){ + return str + .split(/ *, */) + .map(acceptParams) + .filter(function(obj){ + return obj.quality; + }) + .sort(function(a, b){ + if (a.quality === b.quality) { + return a.originalIndex - b.originalIndex; + } else { + return b.quality - a.quality; + } + }); +}; /** * Parse accept params `str` returning an @@ -152,6 +289,45 @@ function acceptParams(str, index) { return ret; } +/** + * Normalize the given path string, + * returning a regular expression. + * + * An empty array should be passed, + * which will contain the placeholder + * key names. For example "/user/:id" will + * then contain ["id"]. + * + * @param {String|RegExp|Array} path + * @param {Array} keys + * @param {Boolean} sensitive + * @param {Boolean} strict + * @return {RegExp} + * @api private + */ + +exports.pathRegexp = function(path, keys, sensitive, strict) { + if (toString.call(path) == '[object RegExp]') return path; + if (Array.isArray(path)) path = '(' + path.join('|') + ')'; + path = path + .concat(strict ? '' : '/?') + .replace(/\/\(/g, '(?:/') + .replace(/(\/)?(\.)?:(\w+)(?:(\(.*?\)))?(\?)?(\*)?/g, function(_, slash, format, key, capture, optional, star){ + keys.push({ name: key, optional: !! optional }); + slash = slash || ''; + return '' + + (optional ? '' : slash) + + '(?:' + + (optional ? slash : '') + + (format || '') + (capture || (format && '([^/.]+?)' || '([^/]+?)')) + ')' + + (optional || '') + + (star ? '(/*)?' : ''); + }) + .replace(/([\/.])/g, '\\$1') + .replace(/\*/g, '(.*)'); + return new RegExp('^' + path + '$', sensitive ? '' : 'i'); +} + /** * Compile "etag" value to function. * @@ -186,41 +362,6 @@ exports.compileETag = function(val) { return fn; } -/** - * Compile "query parser" value to function. - * - * @param {String|Function} val - * @return {Function} - * @api private - */ - -exports.compileQueryParser = function compileQueryParser(val) { - var fn; - - if (typeof val === 'function') { - return val; - } - - switch (val) { - case true: - fn = querystring.parse; - break; - case false: - fn = newObject; - break; - case 'extended': - fn = parseExtendedQueryString; - break; - case 'simple': - fn = querystring.parse; - break; - default: - throw new TypeError('unknown value for query parser function: ' + val); - } - - return fn; -} - /** * Compile "proxy trust" value to function. * @@ -273,28 +414,3 @@ exports.setCharset = function setCharset(type, charset) { // format type return contentType.format(parsed); }; - -/** - * Parse an extended query string with qs. - * - * @return {Object} - * @private - */ - -function parseExtendedQueryString(str) { - return qs.parse(str, { - allowDots: false, - allowPrototypes: true - }); -} - -/** - * Return new empty object. - * - * @return {Object} - * @api private - */ - -function newObject() { - return {}; -} diff --git a/node_modules/express/lib/view.js b/node_modules/express/lib/view.js index 52415d4..b9dc69e 100644 --- a/node_modules/express/lib/view.js +++ b/node_modules/express/lib/view.js @@ -1,37 +1,18 @@ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict'; - /** * Module dependencies. - * @private */ -var debug = require('debug')('express:view'); -var path = require('path'); -var fs = require('fs'); -var utils = require('./utils'); +var path = require('path') + , fs = require('fs') + , utils = require('./utils') + , dirname = path.dirname + , basename = path.basename + , extname = path.extname + , exists = fs.existsSync || path.existsSync + , join = path.join; /** - * Module variables. - * @private - */ - -var dirname = path.dirname; -var basename = path.basename; -var extname = path.extname; -var join = path.join; -var resolve = path.resolve; - -/** - * Module exports. - * @public + * Expose `View`. */ module.exports = View; @@ -45,129 +26,52 @@ module.exports = View; * - `engines` template engine require() cache * - `root` root path for view lookup * - * @param {string} name - * @param {object} options - * @public + * @param {String} name + * @param {Object} options + * @api private */ function View(name, options) { - var opts = options || {}; - - this.defaultEngine = opts.defaultEngine; - this.ext = extname(name); + options = options || {}; this.name = name; - this.root = opts.root; - - if (!this.ext && !this.defaultEngine) { - throw new Error('No default engine was specified and no extension was provided.'); - } - - var fileName = name; - - if (!this.ext) { - // get extension from default engine name - this.ext = this.defaultEngine[0] !== '.' - ? '.' + this.defaultEngine - : this.defaultEngine; - - fileName += this.ext; - } - - if (!opts.engines[this.ext]) { - // load engine - opts.engines[this.ext] = require(this.ext.substr(1)).__express; - } - - // store loaded engine - this.engine = opts.engines[this.ext]; - - // lookup path - this.path = this.lookup(fileName); + this.root = options.root; + var engines = options.engines; + this.defaultEngine = options.defaultEngine; + var ext = this.ext = extname(name); + if (!ext && !this.defaultEngine) throw new Error('No default engine was specified and no extension was provided.'); + if (!ext) name += (ext = this.ext = ('.' != this.defaultEngine[0] ? '.' : '') + this.defaultEngine); + this.engine = engines[ext] || (engines[ext] = require(ext.slice(1)).__express); + this.path = this.lookup(name); } /** - * Lookup view by the given `name` + * Lookup view by the given `path` * - * @param {string} name - * @private + * @param {String} path + * @return {String} + * @api private */ -View.prototype.lookup = function lookup(name) { - var path; - var roots = [].concat(this.root); - - debug('lookup "%s"', name); - - for (var i = 0; i < roots.length && !path; i++) { - var root = roots[i]; - - // resolve the path - var loc = resolve(root, name); - var dir = dirname(loc); - var file = basename(loc); - - // resolve the file - path = this.resolve(dir, file); - } - - return path; -}; - -/** - * Render with the given options. - * - * @param {object} options - * @param {function} callback - * @private - */ - -View.prototype.render = function render(options, callback) { - debug('render "%s"', this.path); - this.engine(this.path, options, callback); -}; - -/** - * Resolve the file within the given directory. - * - * @param {string} dir - * @param {string} file - * @private - */ - -View.prototype.resolve = function resolve(dir, file) { +View.prototype.lookup = function(path){ var ext = this.ext; - // . - var path = join(dir, file); - var stat = tryStat(path); + // . + if (!utils.isAbsolute(path)) path = join(this.root, path); + if (exists(path)) return path; - if (stat && stat.isFile()) { - return path; - } - - // /index. - path = join(dir, basename(file, ext), 'index' + ext); - stat = tryStat(path); - - if (stat && stat.isFile()) { - return path; - } + // /index. + path = join(dirname(path), basename(path, ext), 'index' + ext); + if (exists(path)) return path; }; /** - * Return a stat, maybe. + * Render with the given `options` and callback `fn(err, str)`. * - * @param {string} path - * @return {fs.Stats} - * @private + * @param {Object} options + * @param {Function} fn + * @api private */ -function tryStat(path) { - debug('stat "%s"', path); - - try { - return fs.statSync(path); - } catch (e) { - return undefined; - } -} +View.prototype.render = function(options, fn){ + this.engine(this.path, options, fn); +}; diff --git a/node_modules/express/node_modules/accepts/HISTORY.md b/node_modules/express/node_modules/accepts/HISTORY.md deleted file mode 100644 index aa1bd0f..0000000 --- a/node_modules/express/node_modules/accepts/HISTORY.md +++ /dev/null @@ -1,158 +0,0 @@ -1.2.11 / 2015-07-16 -=================== - - * deps: mime-types@~2.1.3 - - deps: mime-db@~1.15.0 - -1.2.10 / 2015-07-01 -=================== - - * deps: mime-types@~2.1.2 - - deps: mime-db@~1.14.0 - -1.2.9 / 2015-06-08 -================== - - * deps: mime-types@~2.1.1 - - perf: fix deopt during mapping - -1.2.8 / 2015-06-07 -================== - - * deps: mime-types@~2.1.0 - - deps: mime-db@~1.13.0 - * perf: avoid argument reassignment & argument slice - * perf: avoid negotiator recursive construction - * perf: enable strict mode - * perf: remove unnecessary bitwise operator - -1.2.7 / 2015-05-10 -================== - - * deps: negotiator@0.5.3 - - Fix media type parameter matching to be case-insensitive - -1.2.6 / 2015-05-07 -================== - - * deps: mime-types@~2.0.11 - - deps: mime-db@~1.9.1 - * deps: negotiator@0.5.2 - - Fix comparing media types with quoted values - - Fix splitting media types with quoted commas - -1.2.5 / 2015-03-13 -================== - - * deps: mime-types@~2.0.10 - - deps: mime-db@~1.8.0 - -1.2.4 / 2015-02-14 -================== - - * Support Node.js 0.6 - * deps: mime-types@~2.0.9 - - deps: mime-db@~1.7.0 - * deps: negotiator@0.5.1 - - Fix preference sorting to be stable for long acceptable lists - -1.2.3 / 2015-01-31 -================== - - * deps: mime-types@~2.0.8 - - deps: mime-db@~1.6.0 - -1.2.2 / 2014-12-30 -================== - - * deps: mime-types@~2.0.7 - - deps: mime-db@~1.5.0 - -1.2.1 / 2014-12-30 -================== - - * deps: mime-types@~2.0.5 - - deps: mime-db@~1.3.1 - -1.2.0 / 2014-12-19 -================== - - * deps: negotiator@0.5.0 - - Fix list return order when large accepted list - - Fix missing identity encoding when q=0 exists - - Remove dynamic building of Negotiator class - -1.1.4 / 2014-12-10 -================== - - * deps: mime-types@~2.0.4 - - deps: mime-db@~1.3.0 - -1.1.3 / 2014-11-09 -================== - - * deps: mime-types@~2.0.3 - - deps: mime-db@~1.2.0 - -1.1.2 / 2014-10-14 -================== - - * deps: negotiator@0.4.9 - - Fix error when media type has invalid parameter - -1.1.1 / 2014-09-28 -================== - - * deps: mime-types@~2.0.2 - - deps: mime-db@~1.1.0 - * deps: negotiator@0.4.8 - - Fix all negotiations to be case-insensitive - - Stable sort preferences of same quality according to client order - -1.1.0 / 2014-09-02 -================== - - * update `mime-types` - -1.0.7 / 2014-07-04 -================== - - * Fix wrong type returned from `type` when match after unknown extension - -1.0.6 / 2014-06-24 -================== - - * deps: negotiator@0.4.7 - -1.0.5 / 2014-06-20 -================== - - * fix crash when unknown extension given - -1.0.4 / 2014-06-19 -================== - - * use `mime-types` - -1.0.3 / 2014-06-11 -================== - - * deps: negotiator@0.4.6 - - Order by specificity when quality is the same - -1.0.2 / 2014-05-29 -================== - - * Fix interpretation when header not in request - * deps: pin negotiator@0.4.5 - -1.0.1 / 2014-01-18 -================== - - * Identity encoding isn't always acceptable - * deps: negotiator@~0.4.0 - -1.0.0 / 2013-12-27 -================== - - * Genesis diff --git a/node_modules/express/node_modules/accepts/LICENSE b/node_modules/express/node_modules/accepts/LICENSE deleted file mode 100644 index 0616607..0000000 --- a/node_modules/express/node_modules/accepts/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/express/node_modules/accepts/README.md b/node_modules/express/node_modules/accepts/README.md deleted file mode 100644 index ae36676..0000000 --- a/node_modules/express/node_modules/accepts/README.md +++ /dev/null @@ -1,135 +0,0 @@ -# accepts - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). Extracted from [koa](https://www.npmjs.com/package/koa) for general use. - -In addition to negotiator, it allows: - -- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` as well as `('text/html', 'application/json')`. -- Allows type shorthands such as `json`. -- Returns `false` when no types match -- Treats non-existent headers as `*` - -## Installation - -```sh -npm install accepts -``` - -## API - -```js -var accepts = require('accepts') -``` - -### accepts(req) - -Create a new `Accepts` object for the given `req`. - -#### .charset(charsets) - -Return the first accepted charset. If nothing in `charsets` is accepted, -then `false` is returned. - -#### .charsets() - -Return the charsets that the request accepts, in the order of the client's -preference (most preferred first). - -#### .encoding(encodings) - -Return the first accepted encoding. If nothing in `encodings` is accepted, -then `false` is returned. - -#### .encodings() - -Return the encodings that the request accepts, in the order of the client's -preference (most preferred first). - -#### .language(languages) - -Return the first accepted language. If nothing in `languages` is accepted, -then `false` is returned. - -#### .languages() - -Return the languages that the request accepts, in the order of the client's -preference (most preferred first). - -#### .type(types) - -Return the first accepted type (and it is returned as the same text as what -appears in the `types` array). If nothing in `types` is accepted, then `false` -is returned. - -The `types` array can contain full MIME types or file extensions. Any value -that is not a full MIME types is passed to `require('mime-types').lookup`. - -#### .types() - -Return the types that the request accepts, in the order of the client's -preference (most preferred first). - -## Examples - -### Simple type negotiation - -This simple example shows how to use `accepts` to return a different typed -respond body based on what the client wants to accept. The server lists it's -preferences in order and will get back the best match between the client and -server. - -```js -var accepts = require('accepts') -var http = require('http') - -function app(req, res) { - var accept = accepts(req) - - // the order of this list is significant; should be server preferred order - switch(accept.type(['json', 'html'])) { - case 'json': - res.setHeader('Content-Type', 'application/json') - res.write('{"hello":"world!"}') - break - case 'html': - res.setHeader('Content-Type', 'text/html') - res.write('hello, world!') - break - default: - // the fallback is text/plain, so no need to specify it above - res.setHeader('Content-Type', 'text/plain') - res.write('hello, world!') - break - } - - res.end() -} - -http.createServer(app).listen(3000) -``` - -You can test this out with the cURL program: -```sh -curl -I -H'Accept: text/html' http://localhost:3000/ -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/accepts.svg -[npm-url]: https://npmjs.org/package/accepts -[node-version-image]: https://img.shields.io/node/v/accepts.svg -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/accepts/master.svg -[travis-url]: https://travis-ci.org/jshttp/accepts -[coveralls-image]: https://img.shields.io/coveralls/jshttp/accepts/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/accepts -[downloads-image]: https://img.shields.io/npm/dm/accepts.svg -[downloads-url]: https://npmjs.org/package/accepts diff --git a/node_modules/express/node_modules/accepts/index.js b/node_modules/express/node_modules/accepts/index.js deleted file mode 100644 index e80192a..0000000 --- a/node_modules/express/node_modules/accepts/index.js +++ /dev/null @@ -1,231 +0,0 @@ -/*! - * accepts - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var Negotiator = require('negotiator') -var mime = require('mime-types') - -/** - * Module exports. - * @public - */ - -module.exports = Accepts - -/** - * Create a new Accepts object for the given req. - * - * @param {object} req - * @public - */ - -function Accepts(req) { - if (!(this instanceof Accepts)) - return new Accepts(req) - - this.headers = req.headers - this.negotiator = new Negotiator(req) -} - -/** - * Check if the given `type(s)` is acceptable, returning - * the best match when true, otherwise `undefined`, in which - * case you should respond with 406 "Not Acceptable". - * - * The `type` value may be a single mime type string - * such as "application/json", the extension name - * such as "json" or an array `["json", "html", "text/plain"]`. When a list - * or array is given the _best_ match, if any is returned. - * - * Examples: - * - * // Accept: text/html - * this.types('html'); - * // => "html" - * - * // Accept: text/*, application/json - * this.types('html'); - * // => "html" - * this.types('text/html'); - * // => "text/html" - * this.types('json', 'text'); - * // => "json" - * this.types('application/json'); - * // => "application/json" - * - * // Accept: text/*, application/json - * this.types('image/png'); - * this.types('png'); - * // => undefined - * - * // Accept: text/*;q=.5, application/json - * this.types(['html', 'json']); - * this.types('html', 'json'); - * // => "json" - * - * @param {String|Array} types... - * @return {String|Array|Boolean} - * @public - */ - -Accepts.prototype.type = -Accepts.prototype.types = function (types_) { - var types = types_ - - // support flattened arguments - if (types && !Array.isArray(types)) { - types = new Array(arguments.length) - for (var i = 0; i < types.length; i++) { - types[i] = arguments[i] - } - } - - // no types, return all requested types - if (!types || types.length === 0) { - return this.negotiator.mediaTypes() - } - - if (!this.headers.accept) return types[0]; - var mimes = types.map(extToMime); - var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)); - var first = accepts[0]; - if (!first) return false; - return types[mimes.indexOf(first)]; -} - -/** - * Return accepted encodings or best fit based on `encodings`. - * - * Given `Accept-Encoding: gzip, deflate` - * an array sorted by quality is returned: - * - * ['gzip', 'deflate'] - * - * @param {String|Array} encodings... - * @return {String|Array} - * @public - */ - -Accepts.prototype.encoding = -Accepts.prototype.encodings = function (encodings_) { - var encodings = encodings_ - - // support flattened arguments - if (encodings && !Array.isArray(encodings)) { - encodings = new Array(arguments.length) - for (var i = 0; i < encodings.length; i++) { - encodings[i] = arguments[i] - } - } - - // no encodings, return all requested encodings - if (!encodings || encodings.length === 0) { - return this.negotiator.encodings() - } - - return this.negotiator.encodings(encodings)[0] || false -} - -/** - * Return accepted charsets or best fit based on `charsets`. - * - * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5` - * an array sorted by quality is returned: - * - * ['utf-8', 'utf-7', 'iso-8859-1'] - * - * @param {String|Array} charsets... - * @return {String|Array} - * @public - */ - -Accepts.prototype.charset = -Accepts.prototype.charsets = function (charsets_) { - var charsets = charsets_ - - // support flattened arguments - if (charsets && !Array.isArray(charsets)) { - charsets = new Array(arguments.length) - for (var i = 0; i < charsets.length; i++) { - charsets[i] = arguments[i] - } - } - - // no charsets, return all requested charsets - if (!charsets || charsets.length === 0) { - return this.negotiator.charsets() - } - - return this.negotiator.charsets(charsets)[0] || false -} - -/** - * Return accepted languages or best fit based on `langs`. - * - * Given `Accept-Language: en;q=0.8, es, pt` - * an array sorted by quality is returned: - * - * ['es', 'pt', 'en'] - * - * @param {String|Array} langs... - * @return {Array|String} - * @public - */ - -Accepts.prototype.lang = -Accepts.prototype.langs = -Accepts.prototype.language = -Accepts.prototype.languages = function (languages_) { - var languages = languages_ - - // support flattened arguments - if (languages && !Array.isArray(languages)) { - languages = new Array(arguments.length) - for (var i = 0; i < languages.length; i++) { - languages[i] = arguments[i] - } - } - - // no languages, return all requested languages - if (!languages || languages.length === 0) { - return this.negotiator.languages() - } - - return this.negotiator.languages(languages)[0] || false -} - -/** - * Convert extnames to mime. - * - * @param {String} type - * @return {String} - * @private - */ - -function extToMime(type) { - return type.indexOf('/') === -1 - ? mime.lookup(type) - : type -} - -/** - * Check if mime is valid. - * - * @param {String} type - * @return {String} - * @private - */ - -function validMime(type) { - return typeof type === 'string'; -} diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/HISTORY.md b/node_modules/express/node_modules/accepts/node_modules/mime-types/HISTORY.md deleted file mode 100644 index c5b8f5f..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/HISTORY.md +++ /dev/null @@ -1,147 +0,0 @@ -2.1.3 / 2015-07-13 -================== - - * deps: mime-db@~1.15.0 - - Add new mime types - -2.1.2 / 2015-06-25 -================== - - * deps: mime-db@~1.14.0 - - Add new mime types - -2.1.1 / 2015-06-08 -================== - - * perf: fix deopt during mapping - -2.1.0 / 2015-06-07 -================== - - * Fix incorrectly treating extension-less file name as extension - - i.e. `'path/to/json'` will no longer return `application/json` - * Fix `.charset(type)` to accept parameters - * Fix `.charset(type)` to match case-insensitive - * Improve generation of extension to MIME mapping - * Refactor internals for readability and no argument reassignment - * Prefer `application/*` MIME types from the same source - * Prefer any type over `application/octet-stream` - * deps: mime-db@~1.13.0 - - Add nginx as a source - - Add new mime types - -2.0.14 / 2015-06-06 -=================== - - * deps: mime-db@~1.12.0 - - Add new mime types - -2.0.13 / 2015-05-31 -=================== - - * deps: mime-db@~1.11.0 - - Add new mime types - -2.0.12 / 2015-05-19 -=================== - - * deps: mime-db@~1.10.0 - - Add new mime types - -2.0.11 / 2015-05-05 -=================== - - * deps: mime-db@~1.9.1 - - Add new mime types - -2.0.10 / 2015-03-13 -=================== - - * deps: mime-db@~1.8.0 - - Add new mime types - -2.0.9 / 2015-02-09 -================== - - * deps: mime-db@~1.7.0 - - Add new mime types - - Community extensions ownership transferred from `node-mime` - -2.0.8 / 2015-01-29 -================== - - * deps: mime-db@~1.6.0 - - Add new mime types - -2.0.7 / 2014-12-30 -================== - - * deps: mime-db@~1.5.0 - - Add new mime types - - Fix various invalid MIME type entries - -2.0.6 / 2014-12-30 -================== - - * deps: mime-db@~1.4.0 - - Add new mime types - - Fix various invalid MIME type entries - - Remove example template MIME types - -2.0.5 / 2014-12-29 -================== - - * deps: mime-db@~1.3.1 - - Fix missing extensions - -2.0.4 / 2014-12-10 -================== - - * deps: mime-db@~1.3.0 - - Add new mime types - -2.0.3 / 2014-11-09 -================== - - * deps: mime-db@~1.2.0 - - Add new mime types - -2.0.2 / 2014-09-28 -================== - - * deps: mime-db@~1.1.0 - - Add new mime types - - Add additional compressible - - Update charsets - -2.0.1 / 2014-09-07 -================== - - * Support Node.js 0.6 - -2.0.0 / 2014-09-02 -================== - - * Use `mime-db` - * Remove `.define()` - -1.0.2 / 2014-08-04 -================== - - * Set charset=utf-8 for `text/javascript` - -1.0.1 / 2014-06-24 -================== - - * Add `text/jsx` type - -1.0.0 / 2014-05-12 -================== - - * Return `false` for unknown types - * Set charset=utf-8 for `application/json` - -0.1.0 / 2014-05-02 -================== - - * Initial release diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/LICENSE b/node_modules/express/node_modules/accepts/node_modules/mime-types/LICENSE deleted file mode 100644 index 0616607..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/README.md b/node_modules/express/node_modules/accepts/node_modules/mime-types/README.md deleted file mode 100644 index e26295d..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/README.md +++ /dev/null @@ -1,103 +0,0 @@ -# mime-types - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -The ultimate javascript content-type utility. - -Similar to [node-mime](https://github.com/broofa/node-mime), except: - -- __No fallbacks.__ Instead of naively returning the first available type, `mime-types` simply returns `false`, - so do `var type = mime.lookup('unrecognized') || 'application/octet-stream'`. -- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`. -- Additional mime types are added such as jade and stylus via [mime-db](https://github.com/jshttp/mime-db) -- No `.define()` functionality - -Otherwise, the API is compatible. - -## Install - -```sh -$ npm install mime-types -``` - -## Adding Types - -All mime types are based on [mime-db](https://github.com/jshttp/mime-db), -so open a PR there if you'd like to add mime types. - -## API - -```js -var mime = require('mime-types') -``` - -All functions return `false` if input is invalid or not found. - -### mime.lookup(path) - -Lookup the content-type associated with a file. - -```js -mime.lookup('json') // 'application/json' -mime.lookup('.md') // 'text/x-markdown' -mime.lookup('file.html') // 'text/html' -mime.lookup('folder/file.js') // 'application/javascript' -mime.lookup('folder/.htaccess') // false - -mime.lookup('cats') // false -``` - -### mime.contentType(type) - -Create a full content-type header given a content-type or extension. - -```js -mime.contentType('markdown') // 'text/x-markdown; charset=utf-8' -mime.contentType('file.json') // 'application/json; charset=utf-8' - -// from a full path -mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8' -``` - -### mime.extension(type) - -Get the default extension for a content-type. - -```js -mime.extension('application/octet-stream') // 'bin' -``` - -### mime.charset(type) - -Lookup the implied default charset of a content-type. - -```js -mime.charset('text/x-markdown') // 'UTF-8' -``` - -### var type = mime.types[extension] - -A map of content-types by extension. - -### [extensions...] = mime.extensions[type] - -A map of extensions by content-type. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/mime-types.svg -[npm-url]: https://npmjs.org/package/mime-types -[node-version-image]: https://img.shields.io/node/v/mime-types.svg -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/mime-types/master.svg -[travis-url]: https://travis-ci.org/jshttp/mime-types -[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-types/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/mime-types -[downloads-image]: https://img.shields.io/npm/dm/mime-types.svg -[downloads-url]: https://npmjs.org/package/mime-types diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/index.js b/node_modules/express/node_modules/accepts/node_modules/mime-types/index.js deleted file mode 100644 index 9edf72b..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/index.js +++ /dev/null @@ -1,188 +0,0 @@ -/*! - * mime-types - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var db = require('mime-db') -var extname = require('path').extname - -/** - * Module variables. - * @private - */ - -var extractTypeRegExp = /^\s*([^;\s]*)(?:;|\s|$)/ -var textTypeRegExp = /^text\//i - -/** - * Module exports. - * @public - */ - -exports.charset = charset -exports.charsets = { lookup: charset } -exports.contentType = contentType -exports.extension = extension -exports.extensions = Object.create(null) -exports.lookup = lookup -exports.types = Object.create(null) - -// Populate the extensions/types maps -populateMaps(exports.extensions, exports.types) - -/** - * Get the default charset for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function charset(type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = extractTypeRegExp.exec(type) - var mime = match && db[match[1].toLowerCase()] - - if (mime && mime.charset) { - return mime.charset - } - - // default text/* to utf-8 - if (match && textTypeRegExp.test(match[1])) { - return 'UTF-8' - } - - return false -} - -/** - * Create a full Content-Type header given a MIME type or extension. - * - * @param {string} str - * @return {boolean|string} - */ - -function contentType(str) { - // TODO: should this even be in this module? - if (!str || typeof str !== 'string') { - return false - } - - var mime = str.indexOf('/') === -1 - ? exports.lookup(str) - : str - - if (!mime) { - return false - } - - // TODO: use content-type or other module - if (mime.indexOf('charset') === -1) { - var charset = exports.charset(mime) - if (charset) mime += '; charset=' + charset.toLowerCase() - } - - return mime -} - -/** - * Get the default extension for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function extension(type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = extractTypeRegExp.exec(type) - - // get extensions - var exts = match && exports.extensions[match[1].toLowerCase()] - - if (!exts || !exts.length) { - return false - } - - return exts[0] -} - -/** - * Lookup the MIME type for a file path/extension. - * - * @param {string} path - * @return {boolean|string} - */ - -function lookup(path) { - if (!path || typeof path !== 'string') { - return false - } - - // get the extension ("ext" or ".ext" or full path) - var extension = extname('x.' + path) - .toLowerCase() - .substr(1) - - if (!extension) { - return false - } - - return exports.types[extension] || false -} - -/** - * Populate the extensions and types maps. - * @private - */ - -function populateMaps(extensions, types) { - // source preference (least -> most) - var preference = ['nginx', 'apache', undefined, 'iana'] - - Object.keys(db).forEach(function forEachMimeType(type) { - var mime = db[type] - var exts = mime.extensions - - if (!exts || !exts.length) { - return - } - - // mime -> extensions - extensions[type] = exts - - // extension -> mime - for (var i = 0; i < exts.length; i++) { - var extension = exts[i] - - if (types[extension]) { - var from = preference.indexOf(db[types[extension]].source) - var to = preference.indexOf(mime.source) - - if (types[extension] !== 'application/octet-stream' - && from > to || (from === to && types[extension].substr(0, 12) === 'application/')) { - // skip the remapping - return - } - } - - // set the extension -> mime - types[extension] = type - } - }) -} diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/HISTORY.md b/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/HISTORY.md deleted file mode 100644 index fa40614..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/HISTORY.md +++ /dev/null @@ -1,241 +0,0 @@ -1.15.0 / 2015-07-13 -=================== - - * Add `application/x-httpd-php` - -1.14.0 / 2015-06-25 -=================== - - * Add `application/scim+json` - * Add `application/vnd.3gpp.ussd+xml` - * Add `application/vnd.biopax.rdf+xml` - * Add `text/x-processing` - -1.13.0 / 2015-06-07 -=================== - - * Add nginx as a source - * Add `application/x-cocoa` - * Add `application/x-java-archive-diff` - * Add `application/x-makeself` - * Add `application/x-perl` - * Add `application/x-pilot` - * Add `application/x-redhat-package-manager` - * Add `application/x-sea` - * Add `audio/x-m4a` - * Add `audio/x-realaudio` - * Add `image/x-jng` - * Add `text/mathml` - -1.12.0 / 2015-06-05 -=================== - - * Add `application/bdoc` - * Add `application/vnd.hyperdrive+json` - * Add `application/x-bdoc` - * Add extension `.rtf` to `text/rtf` - -1.11.0 / 2015-05-31 -=================== - - * Add `audio/wav` - * Add `audio/wave` - * Add extension `.litcoffee` to `text/coffeescript` - * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data` - * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install` - -1.10.0 / 2015-05-19 -=================== - - * Add `application/vnd.balsamiq.bmpr` - * Add `application/vnd.microsoft.portable-executable` - * Add `application/x-ns-proxy-autoconfig` - -1.9.1 / 2015-04-19 -================== - - * Remove `.json` extension from `application/manifest+json` - - This is causing bugs downstream - -1.9.0 / 2015-04-19 -================== - - * Add `application/manifest+json` - * Add `application/vnd.micro+json` - * Add `image/vnd.zbrush.pcx` - * Add `image/x-ms-bmp` - -1.8.0 / 2015-03-13 -================== - - * Add `application/vnd.citationstyles.style+xml` - * Add `application/vnd.fastcopy-disk-image` - * Add `application/vnd.gov.sk.xmldatacontainer+xml` - * Add extension `.jsonld` to `application/ld+json` - -1.7.0 / 2015-02-08 -================== - - * Add `application/vnd.gerber` - * Add `application/vnd.msa-disk-image` - -1.6.1 / 2015-02-05 -================== - - * Community extensions ownership transferred from `node-mime` - -1.6.0 / 2015-01-29 -================== - - * Add `application/jose` - * Add `application/jose+json` - * Add `application/json-seq` - * Add `application/jwk+json` - * Add `application/jwk-set+json` - * Add `application/jwt` - * Add `application/rdap+json` - * Add `application/vnd.gov.sk.e-form+xml` - * Add `application/vnd.ims.imsccv1p3` - -1.5.0 / 2014-12-30 -================== - - * Add `application/vnd.oracle.resource+json` - * Fix various invalid MIME type entries - - `application/mbox+xml` - - `application/oscp-response` - - `application/vwg-multiplexed` - - `audio/g721` - -1.4.0 / 2014-12-21 -================== - - * Add `application/vnd.ims.imsccv1p2` - * Fix various invalid MIME type entries - - `application/vnd-acucobol` - - `application/vnd-curl` - - `application/vnd-dart` - - `application/vnd-dxr` - - `application/vnd-fdf` - - `application/vnd-mif` - - `application/vnd-sema` - - `application/vnd-wap-wmlc` - - `application/vnd.adobe.flash-movie` - - `application/vnd.dece-zip` - - `application/vnd.dvb_service` - - `application/vnd.micrografx-igx` - - `application/vnd.sealed-doc` - - `application/vnd.sealed-eml` - - `application/vnd.sealed-mht` - - `application/vnd.sealed-ppt` - - `application/vnd.sealed-tiff` - - `application/vnd.sealed-xls` - - `application/vnd.sealedmedia.softseal-html` - - `application/vnd.sealedmedia.softseal-pdf` - - `application/vnd.wap-slc` - - `application/vnd.wap-wbxml` - - `audio/vnd.sealedmedia.softseal-mpeg` - - `image/vnd-djvu` - - `image/vnd-svf` - - `image/vnd-wap-wbmp` - - `image/vnd.sealed-png` - - `image/vnd.sealedmedia.softseal-gif` - - `image/vnd.sealedmedia.softseal-jpg` - - `model/vnd-dwf` - - `model/vnd.parasolid.transmit-binary` - - `model/vnd.parasolid.transmit-text` - - `text/vnd-a` - - `text/vnd-curl` - - `text/vnd.wap-wml` - * Remove example template MIME types - - `application/example` - - `audio/example` - - `image/example` - - `message/example` - - `model/example` - - `multipart/example` - - `text/example` - - `video/example` - -1.3.1 / 2014-12-16 -================== - - * Fix missing extensions - - `application/json5` - - `text/hjson` - -1.3.0 / 2014-12-07 -================== - - * Add `application/a2l` - * Add `application/aml` - * Add `application/atfx` - * Add `application/atxml` - * Add `application/cdfx+xml` - * Add `application/dii` - * Add `application/json5` - * Add `application/lxf` - * Add `application/mf4` - * Add `application/vnd.apache.thrift.compact` - * Add `application/vnd.apache.thrift.json` - * Add `application/vnd.coffeescript` - * Add `application/vnd.enphase.envoy` - * Add `application/vnd.ims.imsccv1p1` - * Add `text/csv-schema` - * Add `text/hjson` - * Add `text/markdown` - * Add `text/yaml` - -1.2.0 / 2014-11-09 -================== - - * Add `application/cea` - * Add `application/dit` - * Add `application/vnd.gov.sk.e-form+zip` - * Add `application/vnd.tmd.mediaflex.api+xml` - * Type `application/epub+zip` is now IANA-registered - -1.1.2 / 2014-10-23 -================== - - * Rebuild database for `application/x-www-form-urlencoded` change - -1.1.1 / 2014-10-20 -================== - - * Mark `application/x-www-form-urlencoded` as compressible. - -1.1.0 / 2014-09-28 -================== - - * Add `application/font-woff2` - -1.0.3 / 2014-09-25 -================== - - * Fix engine requirement in package - -1.0.2 / 2014-09-25 -================== - - * Add `application/coap-group+json` - * Add `application/dcd` - * Add `application/vnd.apache.thrift.binary` - * Add `image/vnd.tencent.tap` - * Mark all JSON-derived types as compressible - * Update `text/vtt` data - -1.0.1 / 2014-08-30 -================== - - * Fix extension ordering - -1.0.0 / 2014-08-30 -================== - - * Add `application/atf` - * Add `application/merge-patch+json` - * Add `multipart/x-mixed-replace` - * Add `source: 'apache'` metadata - * Add `source: 'iana'` metadata - * Remove badly-assumed charset data diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/LICENSE b/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/LICENSE deleted file mode 100644 index a7ae8ee..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2014 Jonathan Ong me@jongleberry.com - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/README.md b/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/README.md deleted file mode 100644 index 164cca0..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/README.md +++ /dev/null @@ -1,82 +0,0 @@ -# mime-db - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][travis-image]][travis-url] -[![Coverage Status][coveralls-image]][coveralls-url] - -This is a database of all mime types. -It consists of a single, public JSON file and does not include any logic, -allowing it to remain as un-opinionated as possible with an API. -It aggregates data from the following sources: - -- http://www.iana.org/assignments/media-types/media-types.xhtml -- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types -- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types - -## Installation - -```bash -npm install mime-db -``` - -### Database Download - -If you're crazy enough to use this in the browser, you can just grab the -JSON file using [RawGit](https://rawgit.com/). It is recommended to replace -`master` with [a release tag](https://github.com/jshttp/mime-db/tags) as the -JSON format may change in the future. - -``` -https://cdn.rawgit.com/jshttp/mime-db/master/db.json -``` - -## Usage - -```js -var db = require('mime-db'); - -// grab data on .js files -var data = db['application/javascript']; -``` - -## Data Structure - -The JSON file is a map lookup for lowercased mime types. -Each mime type has the following properties: - -- `.source` - where the mime type is defined. - If not set, it's probably a custom media type. - - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) - - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml) - - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types) -- `.extensions[]` - known extensions associated with this mime type. -- `.compressible` - whether a file of this type is can be gzipped. -- `.charset` - the default charset associated with this type, if any. - -If unknown, every property could be `undefined`. - -## Contributing - -To edit the database, only make PRs against `src/custom.json` or -`src/custom-suffix.json`. - -To update the build, run `npm run build`. - -## Adding Custom Media Types - -The best way to get new media types included in this library is to register -them with the IANA. The community registration procedure is outlined in -[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types -registered with the IANA are automatically pulled into this library. - -[npm-version-image]: https://img.shields.io/npm/v/mime-db.svg -[npm-downloads-image]: https://img.shields.io/npm/dm/mime-db.svg -[npm-url]: https://npmjs.org/package/mime-db -[travis-image]: https://img.shields.io/travis/jshttp/mime-db/master.svg -[travis-url]: https://travis-ci.org/jshttp/mime-db -[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-db/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master -[node-image]: https://img.shields.io/node/v/mime-db.svg -[node-url]: http://nodejs.org/download/ diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/db.json b/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/db.json deleted file mode 100644 index 2f2dc44..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/db.json +++ /dev/null @@ -1,6424 +0,0 @@ -{ - "application/1d-interleaved-parityfec": { - "source": "iana" - }, - "application/3gpdash-qoe-report+xml": { - "source": "iana" - }, - "application/3gpp-ims+xml": { - "source": "iana" - }, - "application/a2l": { - "source": "iana" - }, - "application/activemessage": { - "source": "iana" - }, - "application/alto-costmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-costmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/alto-directory+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcost+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcostparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointprop+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointpropparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-error+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/aml": { - "source": "iana" - }, - "application/andrew-inset": { - "source": "iana", - "extensions": ["ez"] - }, - "application/applefile": { - "source": "iana" - }, - "application/applixware": { - "source": "apache", - "extensions": ["aw"] - }, - "application/atf": { - "source": "iana" - }, - "application/atfx": { - "source": "iana" - }, - "application/atom+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atom"] - }, - "application/atomcat+xml": { - "source": "iana", - "extensions": ["atomcat"] - }, - "application/atomdeleted+xml": { - "source": "iana" - }, - "application/atomicmail": { - "source": "iana" - }, - "application/atomsvc+xml": { - "source": "iana", - "extensions": ["atomsvc"] - }, - "application/atxml": { - "source": "iana" - }, - "application/auth-policy+xml": { - "source": "iana" - }, - "application/bacnet-xdd+zip": { - "source": "iana" - }, - "application/batch-smtp": { - "source": "iana" - }, - "application/bdoc": { - "compressible": false, - "extensions": ["bdoc"] - }, - "application/beep+xml": { - "source": "iana" - }, - "application/calendar+json": { - "source": "iana", - "compressible": true - }, - "application/calendar+xml": { - "source": "iana" - }, - "application/call-completion": { - "source": "iana" - }, - "application/cals-1840": { - "source": "iana" - }, - "application/cbor": { - "source": "iana" - }, - "application/ccmp+xml": { - "source": "iana" - }, - "application/ccxml+xml": { - "source": "iana", - "extensions": ["ccxml"] - }, - "application/cdfx+xml": { - "source": "iana" - }, - "application/cdmi-capability": { - "source": "iana", - "extensions": ["cdmia"] - }, - "application/cdmi-container": { - "source": "iana", - "extensions": ["cdmic"] - }, - "application/cdmi-domain": { - "source": "iana", - "extensions": ["cdmid"] - }, - "application/cdmi-object": { - "source": "iana", - "extensions": ["cdmio"] - }, - "application/cdmi-queue": { - "source": "iana", - "extensions": ["cdmiq"] - }, - "application/cea": { - "source": "iana" - }, - "application/cea-2018+xml": { - "source": "iana" - }, - "application/cellml+xml": { - "source": "iana" - }, - "application/cfw": { - "source": "iana" - }, - "application/cms": { - "source": "iana" - }, - "application/cnrp+xml": { - "source": "iana" - }, - "application/coap-group+json": { - "source": "iana", - "compressible": true - }, - "application/commonground": { - "source": "iana" - }, - "application/conference-info+xml": { - "source": "iana" - }, - "application/cpl+xml": { - "source": "iana" - }, - "application/csrattrs": { - "source": "iana" - }, - "application/csta+xml": { - "source": "iana" - }, - "application/cstadata+xml": { - "source": "iana" - }, - "application/cu-seeme": { - "source": "apache", - "extensions": ["cu"] - }, - "application/cybercash": { - "source": "iana" - }, - "application/dart": { - "compressible": true - }, - "application/dash+xml": { - "source": "iana", - "extensions": ["mdp"] - }, - "application/dashdelta": { - "source": "iana" - }, - "application/davmount+xml": { - "source": "iana", - "extensions": ["davmount"] - }, - "application/dca-rft": { - "source": "iana" - }, - "application/dcd": { - "source": "iana" - }, - "application/dec-dx": { - "source": "iana" - }, - "application/dialog-info+xml": { - "source": "iana" - }, - "application/dicom": { - "source": "iana" - }, - "application/dii": { - "source": "iana" - }, - "application/dit": { - "source": "iana" - }, - "application/dns": { - "source": "iana" - }, - "application/docbook+xml": { - "source": "apache", - "extensions": ["dbk"] - }, - "application/dskpp+xml": { - "source": "iana" - }, - "application/dssc+der": { - "source": "iana", - "extensions": ["dssc"] - }, - "application/dssc+xml": { - "source": "iana", - "extensions": ["xdssc"] - }, - "application/dvcs": { - "source": "iana" - }, - "application/ecmascript": { - "source": "iana", - "compressible": true, - "extensions": ["ecma"] - }, - "application/edi-consent": { - "source": "iana" - }, - "application/edi-x12": { - "source": "iana", - "compressible": false - }, - "application/edifact": { - "source": "iana", - "compressible": false - }, - "application/emma+xml": { - "source": "iana", - "extensions": ["emma"] - }, - "application/emotionml+xml": { - "source": "iana" - }, - "application/encaprtp": { - "source": "iana" - }, - "application/epp+xml": { - "source": "iana" - }, - "application/epub+zip": { - "source": "iana", - "extensions": ["epub"] - }, - "application/eshop": { - "source": "iana" - }, - "application/exi": { - "source": "iana", - "extensions": ["exi"] - }, - "application/fastinfoset": { - "source": "iana" - }, - "application/fastsoap": { - "source": "iana" - }, - "application/fdt+xml": { - "source": "iana" - }, - "application/fits": { - "source": "iana" - }, - "application/font-sfnt": { - "source": "iana" - }, - "application/font-tdpfr": { - "source": "iana", - "extensions": ["pfr"] - }, - "application/font-woff": { - "source": "iana", - "compressible": false, - "extensions": ["woff"] - }, - "application/font-woff2": { - "compressible": false, - "extensions": ["woff2"] - }, - "application/framework-attributes+xml": { - "source": "iana" - }, - "application/gml+xml": { - "source": "apache", - "extensions": ["gml"] - }, - "application/gpx+xml": { - "source": "apache", - "extensions": ["gpx"] - }, - "application/gxf": { - "source": "apache", - "extensions": ["gxf"] - }, - "application/gzip": { - "source": "iana", - "compressible": false - }, - "application/h224": { - "source": "iana" - }, - "application/held+xml": { - "source": "iana" - }, - "application/http": { - "source": "iana" - }, - "application/hyperstudio": { - "source": "iana", - "extensions": ["stk"] - }, - "application/ibe-key-request+xml": { - "source": "iana" - }, - "application/ibe-pkg-reply+xml": { - "source": "iana" - }, - "application/ibe-pp-data": { - "source": "iana" - }, - "application/iges": { - "source": "iana" - }, - "application/im-iscomposing+xml": { - "source": "iana" - }, - "application/index": { - "source": "iana" - }, - "application/index.cmd": { - "source": "iana" - }, - "application/index.obj": { - "source": "iana" - }, - "application/index.response": { - "source": "iana" - }, - "application/index.vnd": { - "source": "iana" - }, - "application/inkml+xml": { - "source": "iana", - "extensions": ["ink","inkml"] - }, - "application/iotp": { - "source": "iana" - }, - "application/ipfix": { - "source": "iana", - "extensions": ["ipfix"] - }, - "application/ipp": { - "source": "iana" - }, - "application/isup": { - "source": "iana" - }, - "application/its+xml": { - "source": "iana" - }, - "application/java-archive": { - "source": "apache", - "compressible": false, - "extensions": ["jar","war","ear"] - }, - "application/java-serialized-object": { - "source": "apache", - "compressible": false, - "extensions": ["ser"] - }, - "application/java-vm": { - "source": "apache", - "compressible": false, - "extensions": ["class"] - }, - "application/javascript": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["js"] - }, - "application/jose": { - "source": "iana" - }, - "application/jose+json": { - "source": "iana", - "compressible": true - }, - "application/jrd+json": { - "source": "iana", - "compressible": true - }, - "application/json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["json","map"] - }, - "application/json-patch+json": { - "source": "iana", - "compressible": true - }, - "application/json-seq": { - "source": "iana" - }, - "application/json5": { - "extensions": ["json5"] - }, - "application/jsonml+json": { - "source": "apache", - "compressible": true, - "extensions": ["jsonml"] - }, - "application/jwk+json": { - "source": "iana", - "compressible": true - }, - "application/jwk-set+json": { - "source": "iana", - "compressible": true - }, - "application/jwt": { - "source": "iana" - }, - "application/kpml-request+xml": { - "source": "iana" - }, - "application/kpml-response+xml": { - "source": "iana" - }, - "application/ld+json": { - "source": "iana", - "compressible": true, - "extensions": ["jsonld"] - }, - "application/link-format": { - "source": "iana" - }, - "application/load-control+xml": { - "source": "iana" - }, - "application/lost+xml": { - "source": "iana", - "extensions": ["lostxml"] - }, - "application/lostsync+xml": { - "source": "iana" - }, - "application/lxf": { - "source": "iana" - }, - "application/mac-binhex40": { - "source": "iana", - "extensions": ["hqx"] - }, - "application/mac-compactpro": { - "source": "apache", - "extensions": ["cpt"] - }, - "application/macwriteii": { - "source": "iana" - }, - "application/mads+xml": { - "source": "iana", - "extensions": ["mads"] - }, - "application/manifest+json": { - "charset": "UTF-8", - "compressible": true, - "extensions": ["webmanifest"] - }, - "application/marc": { - "source": "iana", - "extensions": ["mrc"] - }, - "application/marcxml+xml": { - "source": "iana", - "extensions": ["mrcx"] - }, - "application/mathematica": { - "source": "iana", - "extensions": ["ma","nb","mb"] - }, - "application/mathml+xml": { - "source": "iana", - "extensions": ["mathml"] - }, - "application/mathml-content+xml": { - "source": "iana" - }, - "application/mathml-presentation+xml": { - "source": "iana" - }, - "application/mbms-associated-procedure-description+xml": { - "source": "iana" - }, - "application/mbms-deregister+xml": { - "source": "iana" - }, - "application/mbms-envelope+xml": { - "source": "iana" - }, - "application/mbms-msk+xml": { - "source": "iana" - }, - "application/mbms-msk-response+xml": { - "source": "iana" - }, - "application/mbms-protection-description+xml": { - "source": "iana" - }, - "application/mbms-reception-report+xml": { - "source": "iana" - }, - "application/mbms-register+xml": { - "source": "iana" - }, - "application/mbms-register-response+xml": { - "source": "iana" - }, - "application/mbms-schedule+xml": { - "source": "iana" - }, - "application/mbms-user-service-description+xml": { - "source": "iana" - }, - "application/mbox": { - "source": "iana", - "extensions": ["mbox"] - }, - "application/media-policy-dataset+xml": { - "source": "iana" - }, - "application/media_control+xml": { - "source": "iana" - }, - "application/mediaservercontrol+xml": { - "source": "iana", - "extensions": ["mscml"] - }, - "application/merge-patch+json": { - "source": "iana", - "compressible": true - }, - "application/metalink+xml": { - "source": "apache", - "extensions": ["metalink"] - }, - "application/metalink4+xml": { - "source": "iana", - "extensions": ["meta4"] - }, - "application/mets+xml": { - "source": "iana", - "extensions": ["mets"] - }, - "application/mf4": { - "source": "iana" - }, - "application/mikey": { - "source": "iana" - }, - "application/mods+xml": { - "source": "iana", - "extensions": ["mods"] - }, - "application/moss-keys": { - "source": "iana" - }, - "application/moss-signature": { - "source": "iana" - }, - "application/mosskey-data": { - "source": "iana" - }, - "application/mosskey-request": { - "source": "iana" - }, - "application/mp21": { - "source": "iana", - "extensions": ["m21","mp21"] - }, - "application/mp4": { - "source": "iana", - "extensions": ["mp4s","m4p"] - }, - "application/mpeg4-generic": { - "source": "iana" - }, - "application/mpeg4-iod": { - "source": "iana" - }, - "application/mpeg4-iod-xmt": { - "source": "iana" - }, - "application/mrb-consumer+xml": { - "source": "iana" - }, - "application/mrb-publish+xml": { - "source": "iana" - }, - "application/msc-ivr+xml": { - "source": "iana" - }, - "application/msc-mixer+xml": { - "source": "iana" - }, - "application/msword": { - "source": "iana", - "compressible": false, - "extensions": ["doc","dot"] - }, - "application/mxf": { - "source": "iana", - "extensions": ["mxf"] - }, - "application/nasdata": { - "source": "iana" - }, - "application/news-checkgroups": { - "source": "iana" - }, - "application/news-groupinfo": { - "source": "iana" - }, - "application/news-transmission": { - "source": "iana" - }, - "application/nlsml+xml": { - "source": "iana" - }, - "application/nss": { - "source": "iana" - }, - "application/ocsp-request": { - "source": "iana" - }, - "application/ocsp-response": { - "source": "iana" - }, - "application/octet-stream": { - "source": "iana", - "compressible": false, - "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] - }, - "application/oda": { - "source": "iana", - "extensions": ["oda"] - }, - "application/odx": { - "source": "iana" - }, - "application/oebps-package+xml": { - "source": "iana", - "extensions": ["opf"] - }, - "application/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["ogx"] - }, - "application/omdoc+xml": { - "source": "apache", - "extensions": ["omdoc"] - }, - "application/onenote": { - "source": "apache", - "extensions": ["onetoc","onetoc2","onetmp","onepkg"] - }, - "application/oxps": { - "source": "iana", - "extensions": ["oxps"] - }, - "application/p2p-overlay+xml": { - "source": "iana" - }, - "application/parityfec": { - "source": "iana" - }, - "application/patch-ops-error+xml": { - "source": "iana", - "extensions": ["xer"] - }, - "application/pdf": { - "source": "iana", - "compressible": false, - "extensions": ["pdf"] - }, - "application/pdx": { - "source": "iana" - }, - "application/pgp-encrypted": { - "source": "iana", - "compressible": false, - "extensions": ["pgp"] - }, - "application/pgp-keys": { - "source": "iana" - }, - "application/pgp-signature": { - "source": "iana", - "extensions": ["asc","sig"] - }, - "application/pics-rules": { - "source": "apache", - "extensions": ["prf"] - }, - "application/pidf+xml": { - "source": "iana" - }, - "application/pidf-diff+xml": { - "source": "iana" - }, - "application/pkcs10": { - "source": "iana", - "extensions": ["p10"] - }, - "application/pkcs7-mime": { - "source": "iana", - "extensions": ["p7m","p7c"] - }, - "application/pkcs7-signature": { - "source": "iana", - "extensions": ["p7s"] - }, - "application/pkcs8": { - "source": "iana", - "extensions": ["p8"] - }, - "application/pkix-attr-cert": { - "source": "iana", - "extensions": ["ac"] - }, - "application/pkix-cert": { - "source": "iana", - "extensions": ["cer"] - }, - "application/pkix-crl": { - "source": "iana", - "extensions": ["crl"] - }, - "application/pkix-pkipath": { - "source": "iana", - "extensions": ["pkipath"] - }, - "application/pkixcmp": { - "source": "iana", - "extensions": ["pki"] - }, - "application/pls+xml": { - "source": "iana", - "extensions": ["pls"] - }, - "application/poc-settings+xml": { - "source": "iana" - }, - "application/postscript": { - "source": "iana", - "compressible": true, - "extensions": ["ai","eps","ps"] - }, - "application/provenance+xml": { - "source": "iana" - }, - "application/prs.alvestrand.titrax-sheet": { - "source": "iana" - }, - "application/prs.cww": { - "source": "iana", - "extensions": ["cww"] - }, - "application/prs.hpub+zip": { - "source": "iana" - }, - "application/prs.nprend": { - "source": "iana" - }, - "application/prs.plucker": { - "source": "iana" - }, - "application/prs.rdf-xml-crypt": { - "source": "iana" - }, - "application/prs.xsf+xml": { - "source": "iana" - }, - "application/pskc+xml": { - "source": "iana", - "extensions": ["pskcxml"] - }, - "application/qsig": { - "source": "iana" - }, - "application/raptorfec": { - "source": "iana" - }, - "application/rdap+json": { - "source": "iana", - "compressible": true - }, - "application/rdf+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rdf"] - }, - "application/reginfo+xml": { - "source": "iana", - "extensions": ["rif"] - }, - "application/relax-ng-compact-syntax": { - "source": "iana", - "extensions": ["rnc"] - }, - "application/remote-printing": { - "source": "iana" - }, - "application/reputon+json": { - "source": "iana", - "compressible": true - }, - "application/resource-lists+xml": { - "source": "iana", - "extensions": ["rl"] - }, - "application/resource-lists-diff+xml": { - "source": "iana", - "extensions": ["rld"] - }, - "application/riscos": { - "source": "iana" - }, - "application/rlmi+xml": { - "source": "iana" - }, - "application/rls-services+xml": { - "source": "iana", - "extensions": ["rs"] - }, - "application/rpki-ghostbusters": { - "source": "iana", - "extensions": ["gbr"] - }, - "application/rpki-manifest": { - "source": "iana", - "extensions": ["mft"] - }, - "application/rpki-roa": { - "source": "iana", - "extensions": ["roa"] - }, - "application/rpki-updown": { - "source": "iana" - }, - "application/rsd+xml": { - "source": "apache", - "extensions": ["rsd"] - }, - "application/rss+xml": { - "source": "apache", - "compressible": true, - "extensions": ["rss"] - }, - "application/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "application/rtploopback": { - "source": "iana" - }, - "application/rtx": { - "source": "iana" - }, - "application/samlassertion+xml": { - "source": "iana" - }, - "application/samlmetadata+xml": { - "source": "iana" - }, - "application/sbml+xml": { - "source": "iana", - "extensions": ["sbml"] - }, - "application/scaip+xml": { - "source": "iana" - }, - "application/scim+json": { - "source": "iana", - "compressible": true - }, - "application/scvp-cv-request": { - "source": "iana", - "extensions": ["scq"] - }, - "application/scvp-cv-response": { - "source": "iana", - "extensions": ["scs"] - }, - "application/scvp-vp-request": { - "source": "iana", - "extensions": ["spq"] - }, - "application/scvp-vp-response": { - "source": "iana", - "extensions": ["spp"] - }, - "application/sdp": { - "source": "iana", - "extensions": ["sdp"] - }, - "application/sep+xml": { - "source": "iana" - }, - "application/sep-exi": { - "source": "iana" - }, - "application/session-info": { - "source": "iana" - }, - "application/set-payment": { - "source": "iana" - }, - "application/set-payment-initiation": { - "source": "iana", - "extensions": ["setpay"] - }, - "application/set-registration": { - "source": "iana" - }, - "application/set-registration-initiation": { - "source": "iana", - "extensions": ["setreg"] - }, - "application/sgml": { - "source": "iana" - }, - "application/sgml-open-catalog": { - "source": "iana" - }, - "application/shf+xml": { - "source": "iana", - "extensions": ["shf"] - }, - "application/sieve": { - "source": "iana" - }, - "application/simple-filter+xml": { - "source": "iana" - }, - "application/simple-message-summary": { - "source": "iana" - }, - "application/simplesymbolcontainer": { - "source": "iana" - }, - "application/slate": { - "source": "iana" - }, - "application/smil": { - "source": "iana" - }, - "application/smil+xml": { - "source": "iana", - "extensions": ["smi","smil"] - }, - "application/smpte336m": { - "source": "iana" - }, - "application/soap+fastinfoset": { - "source": "iana" - }, - "application/soap+xml": { - "source": "iana", - "compressible": true - }, - "application/sparql-query": { - "source": "iana", - "extensions": ["rq"] - }, - "application/sparql-results+xml": { - "source": "iana", - "extensions": ["srx"] - }, - "application/spirits-event+xml": { - "source": "iana" - }, - "application/sql": { - "source": "iana" - }, - "application/srgs": { - "source": "iana", - "extensions": ["gram"] - }, - "application/srgs+xml": { - "source": "iana", - "extensions": ["grxml"] - }, - "application/sru+xml": { - "source": "iana", - "extensions": ["sru"] - }, - "application/ssdl+xml": { - "source": "apache", - "extensions": ["ssdl"] - }, - "application/ssml+xml": { - "source": "iana", - "extensions": ["ssml"] - }, - "application/tamp-apex-update": { - "source": "iana" - }, - "application/tamp-apex-update-confirm": { - "source": "iana" - }, - "application/tamp-community-update": { - "source": "iana" - }, - "application/tamp-community-update-confirm": { - "source": "iana" - }, - "application/tamp-error": { - "source": "iana" - }, - "application/tamp-sequence-adjust": { - "source": "iana" - }, - "application/tamp-sequence-adjust-confirm": { - "source": "iana" - }, - "application/tamp-status-query": { - "source": "iana" - }, - "application/tamp-status-response": { - "source": "iana" - }, - "application/tamp-update": { - "source": "iana" - }, - "application/tamp-update-confirm": { - "source": "iana" - }, - "application/tar": { - "compressible": true - }, - "application/tei+xml": { - "source": "iana", - "extensions": ["tei","teicorpus"] - }, - "application/thraud+xml": { - "source": "iana", - "extensions": ["tfi"] - }, - "application/timestamp-query": { - "source": "iana" - }, - "application/timestamp-reply": { - "source": "iana" - }, - "application/timestamped-data": { - "source": "iana", - "extensions": ["tsd"] - }, - "application/ttml+xml": { - "source": "iana" - }, - "application/tve-trigger": { - "source": "iana" - }, - "application/ulpfec": { - "source": "iana" - }, - "application/urc-grpsheet+xml": { - "source": "iana" - }, - "application/urc-ressheet+xml": { - "source": "iana" - }, - "application/urc-targetdesc+xml": { - "source": "iana" - }, - "application/urc-uisocketdesc+xml": { - "source": "iana" - }, - "application/vcard+json": { - "source": "iana", - "compressible": true - }, - "application/vcard+xml": { - "source": "iana" - }, - "application/vemmi": { - "source": "iana" - }, - "application/vividence.scriptfile": { - "source": "apache" - }, - "application/vnd.3gpp.bsf+xml": { - "source": "iana" - }, - "application/vnd.3gpp.pic-bw-large": { - "source": "iana", - "extensions": ["plb"] - }, - "application/vnd.3gpp.pic-bw-small": { - "source": "iana", - "extensions": ["psb"] - }, - "application/vnd.3gpp.pic-bw-var": { - "source": "iana", - "extensions": ["pvb"] - }, - "application/vnd.3gpp.sms": { - "source": "iana" - }, - "application/vnd.3gpp.ussd+xml": { - "source": "iana" - }, - "application/vnd.3gpp2.bcmcsinfo+xml": { - "source": "iana" - }, - "application/vnd.3gpp2.sms": { - "source": "iana" - }, - "application/vnd.3gpp2.tcap": { - "source": "iana", - "extensions": ["tcap"] - }, - "application/vnd.3m.post-it-notes": { - "source": "iana", - "extensions": ["pwn"] - }, - "application/vnd.accpac.simply.aso": { - "source": "iana", - "extensions": ["aso"] - }, - "application/vnd.accpac.simply.imp": { - "source": "iana", - "extensions": ["imp"] - }, - "application/vnd.acucobol": { - "source": "iana", - "extensions": ["acu"] - }, - "application/vnd.acucorp": { - "source": "iana", - "extensions": ["atc","acutc"] - }, - "application/vnd.adobe.air-application-installer-package+zip": { - "source": "apache", - "extensions": ["air"] - }, - "application/vnd.adobe.flash.movie": { - "source": "iana" - }, - "application/vnd.adobe.formscentral.fcdt": { - "source": "iana", - "extensions": ["fcdt"] - }, - "application/vnd.adobe.fxp": { - "source": "iana", - "extensions": ["fxp","fxpl"] - }, - "application/vnd.adobe.partial-upload": { - "source": "iana" - }, - "application/vnd.adobe.xdp+xml": { - "source": "iana", - "extensions": ["xdp"] - }, - "application/vnd.adobe.xfdf": { - "source": "iana", - "extensions": ["xfdf"] - }, - "application/vnd.aether.imp": { - "source": "iana" - }, - "application/vnd.ah-barcode": { - "source": "iana" - }, - "application/vnd.ahead.space": { - "source": "iana", - "extensions": ["ahead"] - }, - "application/vnd.airzip.filesecure.azf": { - "source": "iana", - "extensions": ["azf"] - }, - "application/vnd.airzip.filesecure.azs": { - "source": "iana", - "extensions": ["azs"] - }, - "application/vnd.amazon.ebook": { - "source": "apache", - "extensions": ["azw"] - }, - "application/vnd.americandynamics.acc": { - "source": "iana", - "extensions": ["acc"] - }, - "application/vnd.amiga.ami": { - "source": "iana", - "extensions": ["ami"] - }, - "application/vnd.amundsen.maze+xml": { - "source": "iana" - }, - "application/vnd.android.package-archive": { - "source": "apache", - "compressible": false, - "extensions": ["apk"] - }, - "application/vnd.anser-web-certificate-issue-initiation": { - "source": "iana", - "extensions": ["cii"] - }, - "application/vnd.anser-web-funds-transfer-initiation": { - "source": "apache", - "extensions": ["fti"] - }, - "application/vnd.antix.game-component": { - "source": "iana", - "extensions": ["atx"] - }, - "application/vnd.apache.thrift.binary": { - "source": "iana" - }, - "application/vnd.apache.thrift.compact": { - "source": "iana" - }, - "application/vnd.apache.thrift.json": { - "source": "iana" - }, - "application/vnd.api+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.apple.installer+xml": { - "source": "iana", - "extensions": ["mpkg"] - }, - "application/vnd.apple.mpegurl": { - "source": "iana", - "extensions": ["m3u8"] - }, - "application/vnd.arastra.swi": { - "source": "iana" - }, - "application/vnd.aristanetworks.swi": { - "source": "iana", - "extensions": ["swi"] - }, - "application/vnd.artsquare": { - "source": "iana" - }, - "application/vnd.astraea-software.iota": { - "source": "iana", - "extensions": ["iota"] - }, - "application/vnd.audiograph": { - "source": "iana", - "extensions": ["aep"] - }, - "application/vnd.autopackage": { - "source": "iana" - }, - "application/vnd.avistar+xml": { - "source": "iana" - }, - "application/vnd.balsamiq.bmml+xml": { - "source": "iana" - }, - "application/vnd.balsamiq.bmpr": { - "source": "iana" - }, - "application/vnd.bekitzur-stech+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.biopax.rdf+xml": { - "source": "iana" - }, - "application/vnd.blueice.multipass": { - "source": "iana", - "extensions": ["mpm"] - }, - "application/vnd.bluetooth.ep.oob": { - "source": "iana" - }, - "application/vnd.bluetooth.le.oob": { - "source": "iana" - }, - "application/vnd.bmi": { - "source": "iana", - "extensions": ["bmi"] - }, - "application/vnd.businessobjects": { - "source": "iana", - "extensions": ["rep"] - }, - "application/vnd.cab-jscript": { - "source": "iana" - }, - "application/vnd.canon-cpdl": { - "source": "iana" - }, - "application/vnd.canon-lips": { - "source": "iana" - }, - "application/vnd.cendio.thinlinc.clientconf": { - "source": "iana" - }, - "application/vnd.century-systems.tcp_stream": { - "source": "iana" - }, - "application/vnd.chemdraw+xml": { - "source": "iana", - "extensions": ["cdxml"] - }, - "application/vnd.chipnuts.karaoke-mmd": { - "source": "iana", - "extensions": ["mmd"] - }, - "application/vnd.cinderella": { - "source": "iana", - "extensions": ["cdy"] - }, - "application/vnd.cirpack.isdn-ext": { - "source": "iana" - }, - "application/vnd.citationstyles.style+xml": { - "source": "iana" - }, - "application/vnd.claymore": { - "source": "iana", - "extensions": ["cla"] - }, - "application/vnd.cloanto.rp9": { - "source": "iana", - "extensions": ["rp9"] - }, - "application/vnd.clonk.c4group": { - "source": "iana", - "extensions": ["c4g","c4d","c4f","c4p","c4u"] - }, - "application/vnd.cluetrust.cartomobile-config": { - "source": "iana", - "extensions": ["c11amc"] - }, - "application/vnd.cluetrust.cartomobile-config-pkg": { - "source": "iana", - "extensions": ["c11amz"] - }, - "application/vnd.coffeescript": { - "source": "iana" - }, - "application/vnd.collection+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.doc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.next+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.commerce-battelle": { - "source": "iana" - }, - "application/vnd.commonspace": { - "source": "iana", - "extensions": ["csp"] - }, - "application/vnd.contact.cmsg": { - "source": "iana", - "extensions": ["cdbcmsg"] - }, - "application/vnd.cosmocaller": { - "source": "iana", - "extensions": ["cmc"] - }, - "application/vnd.crick.clicker": { - "source": "iana", - "extensions": ["clkx"] - }, - "application/vnd.crick.clicker.keyboard": { - "source": "iana", - "extensions": ["clkk"] - }, - "application/vnd.crick.clicker.palette": { - "source": "iana", - "extensions": ["clkp"] - }, - "application/vnd.crick.clicker.template": { - "source": "iana", - "extensions": ["clkt"] - }, - "application/vnd.crick.clicker.wordbank": { - "source": "iana", - "extensions": ["clkw"] - }, - "application/vnd.criticaltools.wbs+xml": { - "source": "iana", - "extensions": ["wbs"] - }, - "application/vnd.ctc-posml": { - "source": "iana", - "extensions": ["pml"] - }, - "application/vnd.ctct.ws+xml": { - "source": "iana" - }, - "application/vnd.cups-pdf": { - "source": "iana" - }, - "application/vnd.cups-postscript": { - "source": "iana" - }, - "application/vnd.cups-ppd": { - "source": "iana", - "extensions": ["ppd"] - }, - "application/vnd.cups-raster": { - "source": "iana" - }, - "application/vnd.cups-raw": { - "source": "iana" - }, - "application/vnd.curl": { - "source": "iana" - }, - "application/vnd.curl.car": { - "source": "apache", - "extensions": ["car"] - }, - "application/vnd.curl.pcurl": { - "source": "apache", - "extensions": ["pcurl"] - }, - "application/vnd.cyan.dean.root+xml": { - "source": "iana" - }, - "application/vnd.cybank": { - "source": "iana" - }, - "application/vnd.dart": { - "source": "iana", - "compressible": true, - "extensions": ["dart"] - }, - "application/vnd.data-vision.rdz": { - "source": "iana", - "extensions": ["rdz"] - }, - "application/vnd.debian.binary-package": { - "source": "iana" - }, - "application/vnd.dece.data": { - "source": "iana", - "extensions": ["uvf","uvvf","uvd","uvvd"] - }, - "application/vnd.dece.ttml+xml": { - "source": "iana", - "extensions": ["uvt","uvvt"] - }, - "application/vnd.dece.unspecified": { - "source": "iana", - "extensions": ["uvx","uvvx"] - }, - "application/vnd.dece.zip": { - "source": "iana", - "extensions": ["uvz","uvvz"] - }, - "application/vnd.denovo.fcselayout-link": { - "source": "iana", - "extensions": ["fe_launch"] - }, - "application/vnd.desmume-movie": { - "source": "iana" - }, - "application/vnd.dir-bi.plate-dl-nosuffix": { - "source": "iana" - }, - "application/vnd.dm.delegation+xml": { - "source": "iana" - }, - "application/vnd.dna": { - "source": "iana", - "extensions": ["dna"] - }, - "application/vnd.document+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dolby.mlp": { - "source": "apache", - "extensions": ["mlp"] - }, - "application/vnd.dolby.mobile.1": { - "source": "iana" - }, - "application/vnd.dolby.mobile.2": { - "source": "iana" - }, - "application/vnd.doremir.scorecloud-binary-document": { - "source": "iana" - }, - "application/vnd.dpgraph": { - "source": "iana", - "extensions": ["dpg"] - }, - "application/vnd.dreamfactory": { - "source": "iana", - "extensions": ["dfac"] - }, - "application/vnd.ds-keypoint": { - "source": "apache", - "extensions": ["kpxx"] - }, - "application/vnd.dtg.local": { - "source": "iana" - }, - "application/vnd.dtg.local.flash": { - "source": "iana" - }, - "application/vnd.dtg.local.html": { - "source": "iana" - }, - "application/vnd.dvb.ait": { - "source": "iana", - "extensions": ["ait"] - }, - "application/vnd.dvb.dvbj": { - "source": "iana" - }, - "application/vnd.dvb.esgcontainer": { - "source": "iana" - }, - "application/vnd.dvb.ipdcdftnotifaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess2": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgpdd": { - "source": "iana" - }, - "application/vnd.dvb.ipdcroaming": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-base": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-enhancement": { - "source": "iana" - }, - "application/vnd.dvb.notif-aggregate-root+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-container+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-generic+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-msglist+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-registration-request+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-registration-response+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-init+xml": { - "source": "iana" - }, - "application/vnd.dvb.pfr": { - "source": "iana" - }, - "application/vnd.dvb.service": { - "source": "iana", - "extensions": ["svc"] - }, - "application/vnd.dxr": { - "source": "iana" - }, - "application/vnd.dynageo": { - "source": "iana", - "extensions": ["geo"] - }, - "application/vnd.dzr": { - "source": "iana" - }, - "application/vnd.easykaraoke.cdgdownload": { - "source": "iana" - }, - "application/vnd.ecdis-update": { - "source": "iana" - }, - "application/vnd.ecowin.chart": { - "source": "iana", - "extensions": ["mag"] - }, - "application/vnd.ecowin.filerequest": { - "source": "iana" - }, - "application/vnd.ecowin.fileupdate": { - "source": "iana" - }, - "application/vnd.ecowin.series": { - "source": "iana" - }, - "application/vnd.ecowin.seriesrequest": { - "source": "iana" - }, - "application/vnd.ecowin.seriesupdate": { - "source": "iana" - }, - "application/vnd.emclient.accessrequest+xml": { - "source": "iana" - }, - "application/vnd.enliven": { - "source": "iana", - "extensions": ["nml"] - }, - "application/vnd.enphase.envoy": { - "source": "iana" - }, - "application/vnd.eprints.data+xml": { - "source": "iana" - }, - "application/vnd.epson.esf": { - "source": "iana", - "extensions": ["esf"] - }, - "application/vnd.epson.msf": { - "source": "iana", - "extensions": ["msf"] - }, - "application/vnd.epson.quickanime": { - "source": "iana", - "extensions": ["qam"] - }, - "application/vnd.epson.salt": { - "source": "iana", - "extensions": ["slt"] - }, - "application/vnd.epson.ssf": { - "source": "iana", - "extensions": ["ssf"] - }, - "application/vnd.ericsson.quickcall": { - "source": "iana" - }, - "application/vnd.eszigno3+xml": { - "source": "iana", - "extensions": ["es3","et3"] - }, - "application/vnd.etsi.aoc+xml": { - "source": "iana" - }, - "application/vnd.etsi.asic-e+zip": { - "source": "iana" - }, - "application/vnd.etsi.asic-s+zip": { - "source": "iana" - }, - "application/vnd.etsi.cug+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvcommand+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvdiscovery+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvprofile+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-bc+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-cod+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-npvr+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvservice+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsync+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvueprofile+xml": { - "source": "iana" - }, - "application/vnd.etsi.mcid+xml": { - "source": "iana" - }, - "application/vnd.etsi.mheg5": { - "source": "iana" - }, - "application/vnd.etsi.overload-control-policy-dataset+xml": { - "source": "iana" - }, - "application/vnd.etsi.pstn+xml": { - "source": "iana" - }, - "application/vnd.etsi.sci+xml": { - "source": "iana" - }, - "application/vnd.etsi.simservs+xml": { - "source": "iana" - }, - "application/vnd.etsi.timestamp-token": { - "source": "iana" - }, - "application/vnd.etsi.tsl+xml": { - "source": "iana" - }, - "application/vnd.etsi.tsl.der": { - "source": "iana" - }, - "application/vnd.eudora.data": { - "source": "iana" - }, - "application/vnd.ezpix-album": { - "source": "iana", - "extensions": ["ez2"] - }, - "application/vnd.ezpix-package": { - "source": "iana", - "extensions": ["ez3"] - }, - "application/vnd.f-secure.mobile": { - "source": "iana" - }, - "application/vnd.fastcopy-disk-image": { - "source": "iana" - }, - "application/vnd.fdf": { - "source": "iana", - "extensions": ["fdf"] - }, - "application/vnd.fdsn.mseed": { - "source": "iana", - "extensions": ["mseed"] - }, - "application/vnd.fdsn.seed": { - "source": "iana", - "extensions": ["seed","dataless"] - }, - "application/vnd.ffsns": { - "source": "iana" - }, - "application/vnd.fints": { - "source": "iana" - }, - "application/vnd.flographit": { - "source": "iana", - "extensions": ["gph"] - }, - "application/vnd.fluxtime.clip": { - "source": "iana", - "extensions": ["ftc"] - }, - "application/vnd.font-fontforge-sfd": { - "source": "iana" - }, - "application/vnd.framemaker": { - "source": "iana", - "extensions": ["fm","frame","maker","book"] - }, - "application/vnd.frogans.fnc": { - "source": "iana", - "extensions": ["fnc"] - }, - "application/vnd.frogans.ltf": { - "source": "iana", - "extensions": ["ltf"] - }, - "application/vnd.fsc.weblaunch": { - "source": "iana", - "extensions": ["fsc"] - }, - "application/vnd.fujitsu.oasys": { - "source": "iana", - "extensions": ["oas"] - }, - "application/vnd.fujitsu.oasys2": { - "source": "iana", - "extensions": ["oa2"] - }, - "application/vnd.fujitsu.oasys3": { - "source": "iana", - "extensions": ["oa3"] - }, - "application/vnd.fujitsu.oasysgp": { - "source": "iana", - "extensions": ["fg5"] - }, - "application/vnd.fujitsu.oasysprs": { - "source": "iana", - "extensions": ["bh2"] - }, - "application/vnd.fujixerox.art-ex": { - "source": "iana" - }, - "application/vnd.fujixerox.art4": { - "source": "iana" - }, - "application/vnd.fujixerox.ddd": { - "source": "iana", - "extensions": ["ddd"] - }, - "application/vnd.fujixerox.docuworks": { - "source": "iana", - "extensions": ["xdw"] - }, - "application/vnd.fujixerox.docuworks.binder": { - "source": "iana", - "extensions": ["xbd"] - }, - "application/vnd.fujixerox.docuworks.container": { - "source": "iana" - }, - "application/vnd.fujixerox.hbpl": { - "source": "iana" - }, - "application/vnd.fut-misnet": { - "source": "iana" - }, - "application/vnd.fuzzysheet": { - "source": "iana", - "extensions": ["fzs"] - }, - "application/vnd.genomatix.tuxedo": { - "source": "iana", - "extensions": ["txd"] - }, - "application/vnd.geo+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.geocube+xml": { - "source": "iana" - }, - "application/vnd.geogebra.file": { - "source": "iana", - "extensions": ["ggb"] - }, - "application/vnd.geogebra.tool": { - "source": "iana", - "extensions": ["ggt"] - }, - "application/vnd.geometry-explorer": { - "source": "iana", - "extensions": ["gex","gre"] - }, - "application/vnd.geonext": { - "source": "iana", - "extensions": ["gxt"] - }, - "application/vnd.geoplan": { - "source": "iana", - "extensions": ["g2w"] - }, - "application/vnd.geospace": { - "source": "iana", - "extensions": ["g3w"] - }, - "application/vnd.gerber": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt-response": { - "source": "iana" - }, - "application/vnd.gmx": { - "source": "iana", - "extensions": ["gmx"] - }, - "application/vnd.google-earth.kml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["kml"] - }, - "application/vnd.google-earth.kmz": { - "source": "iana", - "compressible": false, - "extensions": ["kmz"] - }, - "application/vnd.gov.sk.e-form+xml": { - "source": "iana" - }, - "application/vnd.gov.sk.e-form+zip": { - "source": "iana" - }, - "application/vnd.gov.sk.xmldatacontainer+xml": { - "source": "iana" - }, - "application/vnd.grafeq": { - "source": "iana", - "extensions": ["gqf","gqs"] - }, - "application/vnd.gridmp": { - "source": "iana" - }, - "application/vnd.groove-account": { - "source": "iana", - "extensions": ["gac"] - }, - "application/vnd.groove-help": { - "source": "iana", - "extensions": ["ghf"] - }, - "application/vnd.groove-identity-message": { - "source": "iana", - "extensions": ["gim"] - }, - "application/vnd.groove-injector": { - "source": "iana", - "extensions": ["grv"] - }, - "application/vnd.groove-tool-message": { - "source": "iana", - "extensions": ["gtm"] - }, - "application/vnd.groove-tool-template": { - "source": "iana", - "extensions": ["tpl"] - }, - "application/vnd.groove-vcard": { - "source": "iana", - "extensions": ["vcg"] - }, - "application/vnd.hal+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hal+xml": { - "source": "iana", - "extensions": ["hal"] - }, - "application/vnd.handheld-entertainment+xml": { - "source": "iana", - "extensions": ["zmm"] - }, - "application/vnd.hbci": { - "source": "iana", - "extensions": ["hbci"] - }, - "application/vnd.hcl-bireports": { - "source": "iana" - }, - "application/vnd.heroku+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hhe.lesson-player": { - "source": "iana", - "extensions": ["les"] - }, - "application/vnd.hp-hpgl": { - "source": "iana", - "extensions": ["hpgl"] - }, - "application/vnd.hp-hpid": { - "source": "iana", - "extensions": ["hpid"] - }, - "application/vnd.hp-hps": { - "source": "iana", - "extensions": ["hps"] - }, - "application/vnd.hp-jlyt": { - "source": "iana", - "extensions": ["jlt"] - }, - "application/vnd.hp-pcl": { - "source": "iana", - "extensions": ["pcl"] - }, - "application/vnd.hp-pclxl": { - "source": "iana", - "extensions": ["pclxl"] - }, - "application/vnd.httphone": { - "source": "iana" - }, - "application/vnd.hydrostatix.sof-data": { - "source": "iana", - "extensions": ["sfd-hdstx"] - }, - "application/vnd.hyperdrive+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hzn-3d-crossword": { - "source": "iana" - }, - "application/vnd.ibm.afplinedata": { - "source": "iana" - }, - "application/vnd.ibm.electronic-media": { - "source": "iana" - }, - "application/vnd.ibm.minipay": { - "source": "iana", - "extensions": ["mpy"] - }, - "application/vnd.ibm.modcap": { - "source": "iana", - "extensions": ["afp","listafp","list3820"] - }, - "application/vnd.ibm.rights-management": { - "source": "iana", - "extensions": ["irm"] - }, - "application/vnd.ibm.secure-container": { - "source": "iana", - "extensions": ["sc"] - }, - "application/vnd.iccprofile": { - "source": "iana", - "extensions": ["icc","icm"] - }, - "application/vnd.ieee.1905": { - "source": "iana" - }, - "application/vnd.igloader": { - "source": "iana", - "extensions": ["igl"] - }, - "application/vnd.immervision-ivp": { - "source": "iana", - "extensions": ["ivp"] - }, - "application/vnd.immervision-ivu": { - "source": "iana", - "extensions": ["ivu"] - }, - "application/vnd.ims.imsccv1p1": { - "source": "iana" - }, - "application/vnd.ims.imsccv1p2": { - "source": "iana" - }, - "application/vnd.ims.imsccv1p3": { - "source": "iana" - }, - "application/vnd.ims.lis.v2.result+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolconsumerprofile+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy.id+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings.simple+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.informedcontrol.rms+xml": { - "source": "iana" - }, - "application/vnd.informix-visionary": { - "source": "iana" - }, - "application/vnd.infotech.project": { - "source": "iana" - }, - "application/vnd.infotech.project+xml": { - "source": "iana" - }, - "application/vnd.innopath.wamp.notification": { - "source": "iana" - }, - "application/vnd.insors.igm": { - "source": "iana", - "extensions": ["igm"] - }, - "application/vnd.intercon.formnet": { - "source": "iana", - "extensions": ["xpw","xpx"] - }, - "application/vnd.intergeo": { - "source": "iana", - "extensions": ["i2g"] - }, - "application/vnd.intertrust.digibox": { - "source": "iana" - }, - "application/vnd.intertrust.nncp": { - "source": "iana" - }, - "application/vnd.intu.qbo": { - "source": "iana", - "extensions": ["qbo"] - }, - "application/vnd.intu.qfx": { - "source": "iana", - "extensions": ["qfx"] - }, - "application/vnd.iptc.g2.catalogitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.conceptitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.knowledgeitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.newsitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.newsmessage+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.packageitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.planningitem+xml": { - "source": "iana" - }, - "application/vnd.ipunplugged.rcprofile": { - "source": "iana", - "extensions": ["rcprofile"] - }, - "application/vnd.irepository.package+xml": { - "source": "iana", - "extensions": ["irp"] - }, - "application/vnd.is-xpr": { - "source": "iana", - "extensions": ["xpr"] - }, - "application/vnd.isac.fcs": { - "source": "iana", - "extensions": ["fcs"] - }, - "application/vnd.jam": { - "source": "iana", - "extensions": ["jam"] - }, - "application/vnd.japannet-directory-service": { - "source": "iana" - }, - "application/vnd.japannet-jpnstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-payment-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-registration": { - "source": "iana" - }, - "application/vnd.japannet-registration-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-setstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-verification": { - "source": "iana" - }, - "application/vnd.japannet-verification-wakeup": { - "source": "iana" - }, - "application/vnd.jcp.javame.midlet-rms": { - "source": "iana", - "extensions": ["rms"] - }, - "application/vnd.jisp": { - "source": "iana", - "extensions": ["jisp"] - }, - "application/vnd.joost.joda-archive": { - "source": "iana", - "extensions": ["joda"] - }, - "application/vnd.jsk.isdn-ngn": { - "source": "iana" - }, - "application/vnd.kahootz": { - "source": "iana", - "extensions": ["ktz","ktr"] - }, - "application/vnd.kde.karbon": { - "source": "iana", - "extensions": ["karbon"] - }, - "application/vnd.kde.kchart": { - "source": "iana", - "extensions": ["chrt"] - }, - "application/vnd.kde.kformula": { - "source": "iana", - "extensions": ["kfo"] - }, - "application/vnd.kde.kivio": { - "source": "iana", - "extensions": ["flw"] - }, - "application/vnd.kde.kontour": { - "source": "iana", - "extensions": ["kon"] - }, - "application/vnd.kde.kpresenter": { - "source": "iana", - "extensions": ["kpr","kpt"] - }, - "application/vnd.kde.kspread": { - "source": "iana", - "extensions": ["ksp"] - }, - "application/vnd.kde.kword": { - "source": "iana", - "extensions": ["kwd","kwt"] - }, - "application/vnd.kenameaapp": { - "source": "iana", - "extensions": ["htke"] - }, - "application/vnd.kidspiration": { - "source": "iana", - "extensions": ["kia"] - }, - "application/vnd.kinar": { - "source": "iana", - "extensions": ["kne","knp"] - }, - "application/vnd.koan": { - "source": "iana", - "extensions": ["skp","skd","skt","skm"] - }, - "application/vnd.kodak-descriptor": { - "source": "iana", - "extensions": ["sse"] - }, - "application/vnd.las.las+xml": { - "source": "iana", - "extensions": ["lasxml"] - }, - "application/vnd.liberty-request+xml": { - "source": "iana" - }, - "application/vnd.llamagraphics.life-balance.desktop": { - "source": "iana", - "extensions": ["lbd"] - }, - "application/vnd.llamagraphics.life-balance.exchange+xml": { - "source": "iana", - "extensions": ["lbe"] - }, - "application/vnd.lotus-1-2-3": { - "source": "iana", - "extensions": ["123"] - }, - "application/vnd.lotus-approach": { - "source": "iana", - "extensions": ["apr"] - }, - "application/vnd.lotus-freelance": { - "source": "iana", - "extensions": ["pre"] - }, - "application/vnd.lotus-notes": { - "source": "iana", - "extensions": ["nsf"] - }, - "application/vnd.lotus-organizer": { - "source": "iana", - "extensions": ["org"] - }, - "application/vnd.lotus-screencam": { - "source": "iana", - "extensions": ["scm"] - }, - "application/vnd.lotus-wordpro": { - "source": "iana", - "extensions": ["lwp"] - }, - "application/vnd.macports.portpkg": { - "source": "iana", - "extensions": ["portpkg"] - }, - "application/vnd.marlin.drm.actiontoken+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.conftoken+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.license+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.mdcf": { - "source": "iana" - }, - "application/vnd.mason+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.maxmind.maxmind-db": { - "source": "iana" - }, - "application/vnd.mcd": { - "source": "iana", - "extensions": ["mcd"] - }, - "application/vnd.medcalcdata": { - "source": "iana", - "extensions": ["mc1"] - }, - "application/vnd.mediastation.cdkey": { - "source": "iana", - "extensions": ["cdkey"] - }, - "application/vnd.meridian-slingshot": { - "source": "iana" - }, - "application/vnd.mfer": { - "source": "iana", - "extensions": ["mwf"] - }, - "application/vnd.mfmp": { - "source": "iana", - "extensions": ["mfm"] - }, - "application/vnd.micro+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.micrografx.flo": { - "source": "iana", - "extensions": ["flo"] - }, - "application/vnd.micrografx.igx": { - "source": "iana", - "extensions": ["igx"] - }, - "application/vnd.microsoft.portable-executable": { - "source": "iana" - }, - "application/vnd.miele+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.mif": { - "source": "iana", - "extensions": ["mif"] - }, - "application/vnd.minisoft-hp3000-save": { - "source": "iana" - }, - "application/vnd.mitsubishi.misty-guard.trustweb": { - "source": "iana" - }, - "application/vnd.mobius.daf": { - "source": "iana", - "extensions": ["daf"] - }, - "application/vnd.mobius.dis": { - "source": "iana", - "extensions": ["dis"] - }, - "application/vnd.mobius.mbk": { - "source": "iana", - "extensions": ["mbk"] - }, - "application/vnd.mobius.mqy": { - "source": "iana", - "extensions": ["mqy"] - }, - "application/vnd.mobius.msl": { - "source": "iana", - "extensions": ["msl"] - }, - "application/vnd.mobius.plc": { - "source": "iana", - "extensions": ["plc"] - }, - "application/vnd.mobius.txf": { - "source": "iana", - "extensions": ["txf"] - }, - "application/vnd.mophun.application": { - "source": "iana", - "extensions": ["mpn"] - }, - "application/vnd.mophun.certificate": { - "source": "iana", - "extensions": ["mpc"] - }, - "application/vnd.motorola.flexsuite": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.adsi": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.fis": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.gotap": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.kmr": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.ttc": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.wem": { - "source": "iana" - }, - "application/vnd.motorola.iprm": { - "source": "iana" - }, - "application/vnd.mozilla.xul+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xul"] - }, - "application/vnd.ms-3mfdocument": { - "source": "iana" - }, - "application/vnd.ms-artgalry": { - "source": "iana", - "extensions": ["cil"] - }, - "application/vnd.ms-asf": { - "source": "iana" - }, - "application/vnd.ms-cab-compressed": { - "source": "iana", - "extensions": ["cab"] - }, - "application/vnd.ms-color.iccprofile": { - "source": "apache" - }, - "application/vnd.ms-excel": { - "source": "iana", - "compressible": false, - "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] - }, - "application/vnd.ms-excel.addin.macroenabled.12": { - "source": "iana", - "extensions": ["xlam"] - }, - "application/vnd.ms-excel.sheet.binary.macroenabled.12": { - "source": "iana", - "extensions": ["xlsb"] - }, - "application/vnd.ms-excel.sheet.macroenabled.12": { - "source": "iana", - "extensions": ["xlsm"] - }, - "application/vnd.ms-excel.template.macroenabled.12": { - "source": "iana", - "extensions": ["xltm"] - }, - "application/vnd.ms-fontobject": { - "source": "iana", - "compressible": true, - "extensions": ["eot"] - }, - "application/vnd.ms-htmlhelp": { - "source": "iana", - "extensions": ["chm"] - }, - "application/vnd.ms-ims": { - "source": "iana", - "extensions": ["ims"] - }, - "application/vnd.ms-lrm": { - "source": "iana", - "extensions": ["lrm"] - }, - "application/vnd.ms-office.activex+xml": { - "source": "iana" - }, - "application/vnd.ms-officetheme": { - "source": "iana", - "extensions": ["thmx"] - }, - "application/vnd.ms-opentype": { - "source": "apache", - "compressible": true - }, - "application/vnd.ms-package.obfuscated-opentype": { - "source": "apache" - }, - "application/vnd.ms-pki.seccat": { - "source": "apache", - "extensions": ["cat"] - }, - "application/vnd.ms-pki.stl": { - "source": "apache", - "extensions": ["stl"] - }, - "application/vnd.ms-playready.initiator+xml": { - "source": "iana" - }, - "application/vnd.ms-powerpoint": { - "source": "iana", - "compressible": false, - "extensions": ["ppt","pps","pot"] - }, - "application/vnd.ms-powerpoint.addin.macroenabled.12": { - "source": "iana", - "extensions": ["ppam"] - }, - "application/vnd.ms-powerpoint.presentation.macroenabled.12": { - "source": "iana", - "extensions": ["pptm"] - }, - "application/vnd.ms-powerpoint.slide.macroenabled.12": { - "source": "iana", - "extensions": ["sldm"] - }, - "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { - "source": "iana", - "extensions": ["ppsm"] - }, - "application/vnd.ms-powerpoint.template.macroenabled.12": { - "source": "iana", - "extensions": ["potm"] - }, - "application/vnd.ms-printing.printticket+xml": { - "source": "apache" - }, - "application/vnd.ms-project": { - "source": "iana", - "extensions": ["mpp","mpt"] - }, - "application/vnd.ms-tnef": { - "source": "iana" - }, - "application/vnd.ms-windows.printerpairing": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-resp": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-resp": { - "source": "iana" - }, - "application/vnd.ms-word.document.macroenabled.12": { - "source": "iana", - "extensions": ["docm"] - }, - "application/vnd.ms-word.template.macroenabled.12": { - "source": "iana", - "extensions": ["dotm"] - }, - "application/vnd.ms-works": { - "source": "iana", - "extensions": ["wps","wks","wcm","wdb"] - }, - "application/vnd.ms-wpl": { - "source": "iana", - "extensions": ["wpl"] - }, - "application/vnd.ms-xpsdocument": { - "source": "iana", - "compressible": false, - "extensions": ["xps"] - }, - "application/vnd.msa-disk-image": { - "source": "iana" - }, - "application/vnd.mseq": { - "source": "iana", - "extensions": ["mseq"] - }, - "application/vnd.msign": { - "source": "iana" - }, - "application/vnd.multiad.creator": { - "source": "iana" - }, - "application/vnd.multiad.creator.cif": { - "source": "iana" - }, - "application/vnd.music-niff": { - "source": "iana" - }, - "application/vnd.musician": { - "source": "iana", - "extensions": ["mus"] - }, - "application/vnd.muvee.style": { - "source": "iana", - "extensions": ["msty"] - }, - "application/vnd.mynfc": { - "source": "iana", - "extensions": ["taglet"] - }, - "application/vnd.ncd.control": { - "source": "iana" - }, - "application/vnd.ncd.reference": { - "source": "iana" - }, - "application/vnd.nervana": { - "source": "iana" - }, - "application/vnd.netfpx": { - "source": "iana" - }, - "application/vnd.neurolanguage.nlu": { - "source": "iana", - "extensions": ["nlu"] - }, - "application/vnd.nintendo.nitro.rom": { - "source": "iana" - }, - "application/vnd.nintendo.snes.rom": { - "source": "iana" - }, - "application/vnd.nitf": { - "source": "iana", - "extensions": ["ntf","nitf"] - }, - "application/vnd.noblenet-directory": { - "source": "iana", - "extensions": ["nnd"] - }, - "application/vnd.noblenet-sealer": { - "source": "iana", - "extensions": ["nns"] - }, - "application/vnd.noblenet-web": { - "source": "iana", - "extensions": ["nnw"] - }, - "application/vnd.nokia.catalogs": { - "source": "iana" - }, - "application/vnd.nokia.conml+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.conml+xml": { - "source": "iana" - }, - "application/vnd.nokia.iptv.config+xml": { - "source": "iana" - }, - "application/vnd.nokia.isds-radio-presets": { - "source": "iana" - }, - "application/vnd.nokia.landmark+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.landmark+xml": { - "source": "iana" - }, - "application/vnd.nokia.landmarkcollection+xml": { - "source": "iana" - }, - "application/vnd.nokia.n-gage.ac+xml": { - "source": "iana" - }, - "application/vnd.nokia.n-gage.data": { - "source": "iana", - "extensions": ["ngdat"] - }, - "application/vnd.nokia.n-gage.symbian.install": { - "source": "iana", - "extensions": ["n-gage"] - }, - "application/vnd.nokia.ncd": { - "source": "iana" - }, - "application/vnd.nokia.pcd+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.pcd+xml": { - "source": "iana" - }, - "application/vnd.nokia.radio-preset": { - "source": "iana", - "extensions": ["rpst"] - }, - "application/vnd.nokia.radio-presets": { - "source": "iana", - "extensions": ["rpss"] - }, - "application/vnd.novadigm.edm": { - "source": "iana", - "extensions": ["edm"] - }, - "application/vnd.novadigm.edx": { - "source": "iana", - "extensions": ["edx"] - }, - "application/vnd.novadigm.ext": { - "source": "iana", - "extensions": ["ext"] - }, - "application/vnd.ntt-local.content-share": { - "source": "iana" - }, - "application/vnd.ntt-local.file-transfer": { - "source": "iana" - }, - "application/vnd.ntt-local.ogw_remote-access": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_remote": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_tcp_stream": { - "source": "iana" - }, - "application/vnd.oasis.opendocument.chart": { - "source": "iana", - "extensions": ["odc"] - }, - "application/vnd.oasis.opendocument.chart-template": { - "source": "iana", - "extensions": ["otc"] - }, - "application/vnd.oasis.opendocument.database": { - "source": "iana", - "extensions": ["odb"] - }, - "application/vnd.oasis.opendocument.formula": { - "source": "iana", - "extensions": ["odf"] - }, - "application/vnd.oasis.opendocument.formula-template": { - "source": "iana", - "extensions": ["odft"] - }, - "application/vnd.oasis.opendocument.graphics": { - "source": "iana", - "compressible": false, - "extensions": ["odg"] - }, - "application/vnd.oasis.opendocument.graphics-template": { - "source": "iana", - "extensions": ["otg"] - }, - "application/vnd.oasis.opendocument.image": { - "source": "iana", - "extensions": ["odi"] - }, - "application/vnd.oasis.opendocument.image-template": { - "source": "iana", - "extensions": ["oti"] - }, - "application/vnd.oasis.opendocument.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["odp"] - }, - "application/vnd.oasis.opendocument.presentation-template": { - "source": "iana", - "extensions": ["otp"] - }, - "application/vnd.oasis.opendocument.spreadsheet": { - "source": "iana", - "compressible": false, - "extensions": ["ods"] - }, - "application/vnd.oasis.opendocument.spreadsheet-template": { - "source": "iana", - "extensions": ["ots"] - }, - "application/vnd.oasis.opendocument.text": { - "source": "iana", - "compressible": false, - "extensions": ["odt"] - }, - "application/vnd.oasis.opendocument.text-master": { - "source": "iana", - "extensions": ["odm"] - }, - "application/vnd.oasis.opendocument.text-template": { - "source": "iana", - "extensions": ["ott"] - }, - "application/vnd.oasis.opendocument.text-web": { - "source": "iana", - "extensions": ["oth"] - }, - "application/vnd.obn": { - "source": "iana" - }, - "application/vnd.oftn.l10n+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.contentaccessdownload+xml": { - "source": "iana" - }, - "application/vnd.oipf.contentaccessstreaming+xml": { - "source": "iana" - }, - "application/vnd.oipf.cspg-hexbinary": { - "source": "iana" - }, - "application/vnd.oipf.dae.svg+xml": { - "source": "iana" - }, - "application/vnd.oipf.dae.xhtml+xml": { - "source": "iana" - }, - "application/vnd.oipf.mippvcontrolmessage+xml": { - "source": "iana" - }, - "application/vnd.oipf.pae.gem": { - "source": "iana" - }, - "application/vnd.oipf.spdiscovery+xml": { - "source": "iana" - }, - "application/vnd.oipf.spdlist+xml": { - "source": "iana" - }, - "application/vnd.oipf.ueprofile+xml": { - "source": "iana" - }, - "application/vnd.oipf.userprofile+xml": { - "source": "iana" - }, - "application/vnd.olpc-sugar": { - "source": "iana", - "extensions": ["xo"] - }, - "application/vnd.oma-scws-config": { - "source": "iana" - }, - "application/vnd.oma-scws-http-request": { - "source": "iana" - }, - "application/vnd.oma-scws-http-response": { - "source": "iana" - }, - "application/vnd.oma.bcast.associated-procedure-parameter+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.drm-trigger+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.imd+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.ltkm": { - "source": "iana" - }, - "application/vnd.oma.bcast.notification+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.provisioningtrigger": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgboot": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgdd+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgdu": { - "source": "iana" - }, - "application/vnd.oma.bcast.simple-symbol-container": { - "source": "iana" - }, - "application/vnd.oma.bcast.smartcard-trigger+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.sprov+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.stkm": { - "source": "iana" - }, - "application/vnd.oma.cab-address-book+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-feature-handler+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-pcc+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-subs-invite+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-user-prefs+xml": { - "source": "iana" - }, - "application/vnd.oma.dcd": { - "source": "iana" - }, - "application/vnd.oma.dcdc": { - "source": "iana" - }, - "application/vnd.oma.dd2+xml": { - "source": "iana", - "extensions": ["dd2"] - }, - "application/vnd.oma.drm.risd+xml": { - "source": "iana" - }, - "application/vnd.oma.group-usage-list+xml": { - "source": "iana" - }, - "application/vnd.oma.pal+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.detailed-progress-report+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.final-report+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.groups+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.invocation-descriptor+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.optimized-progress-report+xml": { - "source": "iana" - }, - "application/vnd.oma.push": { - "source": "iana" - }, - "application/vnd.oma.scidm.messages+xml": { - "source": "iana" - }, - "application/vnd.oma.xcap-directory+xml": { - "source": "iana" - }, - "application/vnd.omads-email+xml": { - "source": "iana" - }, - "application/vnd.omads-file+xml": { - "source": "iana" - }, - "application/vnd.omads-folder+xml": { - "source": "iana" - }, - "application/vnd.omaloc-supl-init": { - "source": "iana" - }, - "application/vnd.openeye.oeb": { - "source": "iana" - }, - "application/vnd.openofficeorg.extension": { - "source": "apache", - "extensions": ["oxt"] - }, - "application/vnd.openxmlformats-officedocument.custom-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawing+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.extended-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml-template": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["pptx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide": { - "source": "iana", - "extensions": ["sldx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { - "source": "iana", - "extensions": ["ppsx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.template": { - "source": "apache", - "extensions": ["potx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml-template": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { - "source": "iana", - "compressible": false, - "extensions": ["xlsx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { - "source": "apache", - "extensions": ["xltx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.theme+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.themeoverride+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.vmldrawing": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml-template": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { - "source": "iana", - "compressible": false, - "extensions": ["docx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { - "source": "apache", - "extensions": ["dotx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.core-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.relationships+xml": { - "source": "iana" - }, - "application/vnd.oracle.resource+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.orange.indata": { - "source": "iana" - }, - "application/vnd.osa.netdeploy": { - "source": "iana" - }, - "application/vnd.osgeo.mapguide.package": { - "source": "iana", - "extensions": ["mgp"] - }, - "application/vnd.osgi.bundle": { - "source": "iana" - }, - "application/vnd.osgi.dp": { - "source": "iana", - "extensions": ["dp"] - }, - "application/vnd.osgi.subsystem": { - "source": "iana", - "extensions": ["esa"] - }, - "application/vnd.otps.ct-kip+xml": { - "source": "iana" - }, - "application/vnd.palm": { - "source": "iana", - "extensions": ["pdb","pqa","oprc"] - }, - "application/vnd.panoply": { - "source": "iana" - }, - "application/vnd.paos+xml": { - "source": "iana" - }, - "application/vnd.paos.xml": { - "source": "apache" - }, - "application/vnd.pawaafile": { - "source": "iana", - "extensions": ["paw"] - }, - "application/vnd.pcos": { - "source": "iana" - }, - "application/vnd.pg.format": { - "source": "iana", - "extensions": ["str"] - }, - "application/vnd.pg.osasli": { - "source": "iana", - "extensions": ["ei6"] - }, - "application/vnd.piaccess.application-licence": { - "source": "iana" - }, - "application/vnd.picsel": { - "source": "iana", - "extensions": ["efif"] - }, - "application/vnd.pmi.widget": { - "source": "iana", - "extensions": ["wg"] - }, - "application/vnd.poc.group-advertisement+xml": { - "source": "iana" - }, - "application/vnd.pocketlearn": { - "source": "iana", - "extensions": ["plf"] - }, - "application/vnd.powerbuilder6": { - "source": "iana", - "extensions": ["pbd"] - }, - "application/vnd.powerbuilder6-s": { - "source": "iana" - }, - "application/vnd.powerbuilder7": { - "source": "iana" - }, - "application/vnd.powerbuilder7-s": { - "source": "iana" - }, - "application/vnd.powerbuilder75": { - "source": "iana" - }, - "application/vnd.powerbuilder75-s": { - "source": "iana" - }, - "application/vnd.preminet": { - "source": "iana" - }, - "application/vnd.previewsystems.box": { - "source": "iana", - "extensions": ["box"] - }, - "application/vnd.proteus.magazine": { - "source": "iana", - "extensions": ["mgz"] - }, - "application/vnd.publishare-delta-tree": { - "source": "iana", - "extensions": ["qps"] - }, - "application/vnd.pvi.ptid1": { - "source": "iana", - "extensions": ["ptid"] - }, - "application/vnd.pwg-multiplexed": { - "source": "iana" - }, - "application/vnd.pwg-xhtml-print+xml": { - "source": "iana" - }, - "application/vnd.qualcomm.brew-app-res": { - "source": "iana" - }, - "application/vnd.quark.quarkxpress": { - "source": "iana", - "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] - }, - "application/vnd.quobject-quoxdocument": { - "source": "iana" - }, - "application/vnd.radisys.moml+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-conf+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-conn+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-dialog+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-stream+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-conf+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-base+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-fax-detect+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-group+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-speech+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-transform+xml": { - "source": "iana" - }, - "application/vnd.rainstor.data": { - "source": "iana" - }, - "application/vnd.rapid": { - "source": "iana" - }, - "application/vnd.realvnc.bed": { - "source": "iana", - "extensions": ["bed"] - }, - "application/vnd.recordare.musicxml": { - "source": "iana", - "extensions": ["mxl"] - }, - "application/vnd.recordare.musicxml+xml": { - "source": "iana", - "extensions": ["musicxml"] - }, - "application/vnd.renlearn.rlprint": { - "source": "iana" - }, - "application/vnd.rig.cryptonote": { - "source": "iana", - "extensions": ["cryptonote"] - }, - "application/vnd.rim.cod": { - "source": "apache", - "extensions": ["cod"] - }, - "application/vnd.rn-realmedia": { - "source": "apache", - "extensions": ["rm"] - }, - "application/vnd.rn-realmedia-vbr": { - "source": "apache", - "extensions": ["rmvb"] - }, - "application/vnd.route66.link66+xml": { - "source": "iana", - "extensions": ["link66"] - }, - "application/vnd.rs-274x": { - "source": "iana" - }, - "application/vnd.ruckus.download": { - "source": "iana" - }, - "application/vnd.s3sms": { - "source": "iana" - }, - "application/vnd.sailingtracker.track": { - "source": "iana", - "extensions": ["st"] - }, - "application/vnd.sbm.cid": { - "source": "iana" - }, - "application/vnd.sbm.mid2": { - "source": "iana" - }, - "application/vnd.scribus": { - "source": "iana" - }, - "application/vnd.sealed.3df": { - "source": "iana" - }, - "application/vnd.sealed.csf": { - "source": "iana" - }, - "application/vnd.sealed.doc": { - "source": "iana" - }, - "application/vnd.sealed.eml": { - "source": "iana" - }, - "application/vnd.sealed.mht": { - "source": "iana" - }, - "application/vnd.sealed.net": { - "source": "iana" - }, - "application/vnd.sealed.ppt": { - "source": "iana" - }, - "application/vnd.sealed.tiff": { - "source": "iana" - }, - "application/vnd.sealed.xls": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.html": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.pdf": { - "source": "iana" - }, - "application/vnd.seemail": { - "source": "iana", - "extensions": ["see"] - }, - "application/vnd.sema": { - "source": "iana", - "extensions": ["sema"] - }, - "application/vnd.semd": { - "source": "iana", - "extensions": ["semd"] - }, - "application/vnd.semf": { - "source": "iana", - "extensions": ["semf"] - }, - "application/vnd.shana.informed.formdata": { - "source": "iana", - "extensions": ["ifm"] - }, - "application/vnd.shana.informed.formtemplate": { - "source": "iana", - "extensions": ["itp"] - }, - "application/vnd.shana.informed.interchange": { - "source": "iana", - "extensions": ["iif"] - }, - "application/vnd.shana.informed.package": { - "source": "iana", - "extensions": ["ipk"] - }, - "application/vnd.simtech-mindmapper": { - "source": "iana", - "extensions": ["twd","twds"] - }, - "application/vnd.siren+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.smaf": { - "source": "iana", - "extensions": ["mmf"] - }, - "application/vnd.smart.notebook": { - "source": "iana" - }, - "application/vnd.smart.teacher": { - "source": "iana", - "extensions": ["teacher"] - }, - "application/vnd.software602.filler.form+xml": { - "source": "iana" - }, - "application/vnd.software602.filler.form-xml-zip": { - "source": "iana" - }, - "application/vnd.solent.sdkm+xml": { - "source": "iana", - "extensions": ["sdkm","sdkd"] - }, - "application/vnd.spotfire.dxp": { - "source": "iana", - "extensions": ["dxp"] - }, - "application/vnd.spotfire.sfs": { - "source": "iana", - "extensions": ["sfs"] - }, - "application/vnd.sss-cod": { - "source": "iana" - }, - "application/vnd.sss-dtf": { - "source": "iana" - }, - "application/vnd.sss-ntf": { - "source": "iana" - }, - "application/vnd.stardivision.calc": { - "source": "apache", - "extensions": ["sdc"] - }, - "application/vnd.stardivision.draw": { - "source": "apache", - "extensions": ["sda"] - }, - "application/vnd.stardivision.impress": { - "source": "apache", - "extensions": ["sdd"] - }, - "application/vnd.stardivision.math": { - "source": "apache", - "extensions": ["smf"] - }, - "application/vnd.stardivision.writer": { - "source": "apache", - "extensions": ["sdw","vor"] - }, - "application/vnd.stardivision.writer-global": { - "source": "apache", - "extensions": ["sgl"] - }, - "application/vnd.stepmania.package": { - "source": "iana", - "extensions": ["smzip"] - }, - "application/vnd.stepmania.stepchart": { - "source": "iana", - "extensions": ["sm"] - }, - "application/vnd.street-stream": { - "source": "iana" - }, - "application/vnd.sun.wadl+xml": { - "source": "iana" - }, - "application/vnd.sun.xml.calc": { - "source": "apache", - "extensions": ["sxc"] - }, - "application/vnd.sun.xml.calc.template": { - "source": "apache", - "extensions": ["stc"] - }, - "application/vnd.sun.xml.draw": { - "source": "apache", - "extensions": ["sxd"] - }, - "application/vnd.sun.xml.draw.template": { - "source": "apache", - "extensions": ["std"] - }, - "application/vnd.sun.xml.impress": { - "source": "apache", - "extensions": ["sxi"] - }, - "application/vnd.sun.xml.impress.template": { - "source": "apache", - "extensions": ["sti"] - }, - "application/vnd.sun.xml.math": { - "source": "apache", - "extensions": ["sxm"] - }, - "application/vnd.sun.xml.writer": { - "source": "apache", - "extensions": ["sxw"] - }, - "application/vnd.sun.xml.writer.global": { - "source": "apache", - "extensions": ["sxg"] - }, - "application/vnd.sun.xml.writer.template": { - "source": "apache", - "extensions": ["stw"] - }, - "application/vnd.sus-calendar": { - "source": "iana", - "extensions": ["sus","susp"] - }, - "application/vnd.svd": { - "source": "iana", - "extensions": ["svd"] - }, - "application/vnd.swiftview-ics": { - "source": "iana" - }, - "application/vnd.symbian.install": { - "source": "apache", - "extensions": ["sis","sisx"] - }, - "application/vnd.syncml+xml": { - "source": "iana", - "extensions": ["xsm"] - }, - "application/vnd.syncml.dm+wbxml": { - "source": "iana", - "extensions": ["bdm"] - }, - "application/vnd.syncml.dm+xml": { - "source": "iana", - "extensions": ["xdm"] - }, - "application/vnd.syncml.dm.notification": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+xml": { - "source": "iana" - }, - "application/vnd.syncml.dmtnds+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmtnds+xml": { - "source": "iana" - }, - "application/vnd.syncml.ds.notification": { - "source": "iana" - }, - "application/vnd.tao.intent-module-archive": { - "source": "iana", - "extensions": ["tao"] - }, - "application/vnd.tcpdump.pcap": { - "source": "iana", - "extensions": ["pcap","cap","dmp"] - }, - "application/vnd.tmd.mediaflex.api+xml": { - "source": "iana" - }, - "application/vnd.tmobile-livetv": { - "source": "iana", - "extensions": ["tmo"] - }, - "application/vnd.trid.tpt": { - "source": "iana", - "extensions": ["tpt"] - }, - "application/vnd.triscape.mxs": { - "source": "iana", - "extensions": ["mxs"] - }, - "application/vnd.trueapp": { - "source": "iana", - "extensions": ["tra"] - }, - "application/vnd.truedoc": { - "source": "iana" - }, - "application/vnd.ubisoft.webplayer": { - "source": "iana" - }, - "application/vnd.ufdl": { - "source": "iana", - "extensions": ["ufd","ufdl"] - }, - "application/vnd.uiq.theme": { - "source": "iana", - "extensions": ["utz"] - }, - "application/vnd.umajin": { - "source": "iana", - "extensions": ["umj"] - }, - "application/vnd.unity": { - "source": "iana", - "extensions": ["unityweb"] - }, - "application/vnd.uoml+xml": { - "source": "iana", - "extensions": ["uoml"] - }, - "application/vnd.uplanet.alert": { - "source": "iana" - }, - "application/vnd.uplanet.alert-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.channel": { - "source": "iana" - }, - "application/vnd.uplanet.channel-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.list": { - "source": "iana" - }, - "application/vnd.uplanet.list-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.signal": { - "source": "iana" - }, - "application/vnd.valve.source.material": { - "source": "iana" - }, - "application/vnd.vcx": { - "source": "iana", - "extensions": ["vcx"] - }, - "application/vnd.vd-study": { - "source": "iana" - }, - "application/vnd.vectorworks": { - "source": "iana" - }, - "application/vnd.verimatrix.vcas": { - "source": "iana" - }, - "application/vnd.vidsoft.vidconference": { - "source": "iana" - }, - "application/vnd.visio": { - "source": "iana", - "extensions": ["vsd","vst","vss","vsw"] - }, - "application/vnd.visionary": { - "source": "iana", - "extensions": ["vis"] - }, - "application/vnd.vividence.scriptfile": { - "source": "iana" - }, - "application/vnd.vsf": { - "source": "iana", - "extensions": ["vsf"] - }, - "application/vnd.wap.sic": { - "source": "iana" - }, - "application/vnd.wap.slc": { - "source": "iana" - }, - "application/vnd.wap.wbxml": { - "source": "iana", - "extensions": ["wbxml"] - }, - "application/vnd.wap.wmlc": { - "source": "iana", - "extensions": ["wmlc"] - }, - "application/vnd.wap.wmlscriptc": { - "source": "iana", - "extensions": ["wmlsc"] - }, - "application/vnd.webturbo": { - "source": "iana", - "extensions": ["wtb"] - }, - "application/vnd.wfa.p2p": { - "source": "iana" - }, - "application/vnd.wfa.wsc": { - "source": "iana" - }, - "application/vnd.windows.devicepairing": { - "source": "iana" - }, - "application/vnd.wmc": { - "source": "iana" - }, - "application/vnd.wmf.bootstrap": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica.package": { - "source": "iana" - }, - "application/vnd.wolfram.player": { - "source": "iana", - "extensions": ["nbp"] - }, - "application/vnd.wordperfect": { - "source": "iana", - "extensions": ["wpd"] - }, - "application/vnd.wqd": { - "source": "iana", - "extensions": ["wqd"] - }, - "application/vnd.wrq-hp3000-labelled": { - "source": "iana" - }, - "application/vnd.wt.stf": { - "source": "iana", - "extensions": ["stf"] - }, - "application/vnd.wv.csp+wbxml": { - "source": "iana" - }, - "application/vnd.wv.csp+xml": { - "source": "iana" - }, - "application/vnd.wv.ssp+xml": { - "source": "iana" - }, - "application/vnd.xacml+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.xara": { - "source": "iana", - "extensions": ["xar"] - }, - "application/vnd.xfdl": { - "source": "iana", - "extensions": ["xfdl"] - }, - "application/vnd.xfdl.webform": { - "source": "iana" - }, - "application/vnd.xmi+xml": { - "source": "iana" - }, - "application/vnd.xmpie.cpkg": { - "source": "iana" - }, - "application/vnd.xmpie.dpkg": { - "source": "iana" - }, - "application/vnd.xmpie.plan": { - "source": "iana" - }, - "application/vnd.xmpie.ppkg": { - "source": "iana" - }, - "application/vnd.xmpie.xlim": { - "source": "iana" - }, - "application/vnd.yamaha.hv-dic": { - "source": "iana", - "extensions": ["hvd"] - }, - "application/vnd.yamaha.hv-script": { - "source": "iana", - "extensions": ["hvs"] - }, - "application/vnd.yamaha.hv-voice": { - "source": "iana", - "extensions": ["hvp"] - }, - "application/vnd.yamaha.openscoreformat": { - "source": "iana", - "extensions": ["osf"] - }, - "application/vnd.yamaha.openscoreformat.osfpvg+xml": { - "source": "iana", - "extensions": ["osfpvg"] - }, - "application/vnd.yamaha.remote-setup": { - "source": "iana" - }, - "application/vnd.yamaha.smaf-audio": { - "source": "iana", - "extensions": ["saf"] - }, - "application/vnd.yamaha.smaf-phrase": { - "source": "iana", - "extensions": ["spf"] - }, - "application/vnd.yamaha.through-ngn": { - "source": "iana" - }, - "application/vnd.yamaha.tunnel-udpencap": { - "source": "iana" - }, - "application/vnd.yaoweme": { - "source": "iana" - }, - "application/vnd.yellowriver-custom-menu": { - "source": "iana", - "extensions": ["cmp"] - }, - "application/vnd.zul": { - "source": "iana", - "extensions": ["zir","zirz"] - }, - "application/vnd.zzazz.deck+xml": { - "source": "iana", - "extensions": ["zaz"] - }, - "application/voicexml+xml": { - "source": "iana", - "extensions": ["vxml"] - }, - "application/vq-rtcpxr": { - "source": "iana" - }, - "application/watcherinfo+xml": { - "source": "iana" - }, - "application/whoispp-query": { - "source": "iana" - }, - "application/whoispp-response": { - "source": "iana" - }, - "application/widget": { - "source": "iana", - "extensions": ["wgt"] - }, - "application/winhlp": { - "source": "apache", - "extensions": ["hlp"] - }, - "application/wita": { - "source": "iana" - }, - "application/wordperfect5.1": { - "source": "iana" - }, - "application/wsdl+xml": { - "source": "iana", - "extensions": ["wsdl"] - }, - "application/wspolicy+xml": { - "source": "iana", - "extensions": ["wspolicy"] - }, - "application/x-7z-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["7z"] - }, - "application/x-abiword": { - "source": "apache", - "extensions": ["abw"] - }, - "application/x-ace-compressed": { - "source": "apache", - "extensions": ["ace"] - }, - "application/x-amf": { - "source": "apache" - }, - "application/x-apple-diskimage": { - "source": "apache", - "extensions": ["dmg"] - }, - "application/x-authorware-bin": { - "source": "apache", - "extensions": ["aab","x32","u32","vox"] - }, - "application/x-authorware-map": { - "source": "apache", - "extensions": ["aam"] - }, - "application/x-authorware-seg": { - "source": "apache", - "extensions": ["aas"] - }, - "application/x-bcpio": { - "source": "apache", - "extensions": ["bcpio"] - }, - "application/x-bdoc": { - "compressible": false, - "extensions": ["bdoc"] - }, - "application/x-bittorrent": { - "source": "apache", - "extensions": ["torrent"] - }, - "application/x-blorb": { - "source": "apache", - "extensions": ["blb","blorb"] - }, - "application/x-bzip": { - "source": "apache", - "compressible": false, - "extensions": ["bz"] - }, - "application/x-bzip2": { - "source": "apache", - "compressible": false, - "extensions": ["bz2","boz"] - }, - "application/x-cbr": { - "source": "apache", - "extensions": ["cbr","cba","cbt","cbz","cb7"] - }, - "application/x-cdlink": { - "source": "apache", - "extensions": ["vcd"] - }, - "application/x-cfs-compressed": { - "source": "apache", - "extensions": ["cfs"] - }, - "application/x-chat": { - "source": "apache", - "extensions": ["chat"] - }, - "application/x-chess-pgn": { - "source": "apache", - "extensions": ["pgn"] - }, - "application/x-chrome-extension": { - "extensions": ["crx"] - }, - "application/x-cocoa": { - "source": "nginx", - "extensions": ["cco"] - }, - "application/x-compress": { - "source": "apache" - }, - "application/x-conference": { - "source": "apache", - "extensions": ["nsc"] - }, - "application/x-cpio": { - "source": "apache", - "extensions": ["cpio"] - }, - "application/x-csh": { - "source": "apache", - "extensions": ["csh"] - }, - "application/x-deb": { - "compressible": false - }, - "application/x-debian-package": { - "source": "apache", - "extensions": ["deb","udeb"] - }, - "application/x-dgc-compressed": { - "source": "apache", - "extensions": ["dgc"] - }, - "application/x-director": { - "source": "apache", - "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] - }, - "application/x-doom": { - "source": "apache", - "extensions": ["wad"] - }, - "application/x-dtbncx+xml": { - "source": "apache", - "extensions": ["ncx"] - }, - "application/x-dtbook+xml": { - "source": "apache", - "extensions": ["dtb"] - }, - "application/x-dtbresource+xml": { - "source": "apache", - "extensions": ["res"] - }, - "application/x-dvi": { - "source": "apache", - "compressible": false, - "extensions": ["dvi"] - }, - "application/x-envoy": { - "source": "apache", - "extensions": ["evy"] - }, - "application/x-eva": { - "source": "apache", - "extensions": ["eva"] - }, - "application/x-font-bdf": { - "source": "apache", - "extensions": ["bdf"] - }, - "application/x-font-dos": { - "source": "apache" - }, - "application/x-font-framemaker": { - "source": "apache" - }, - "application/x-font-ghostscript": { - "source": "apache", - "extensions": ["gsf"] - }, - "application/x-font-libgrx": { - "source": "apache" - }, - "application/x-font-linux-psf": { - "source": "apache", - "extensions": ["psf"] - }, - "application/x-font-otf": { - "source": "apache", - "compressible": true, - "extensions": ["otf"] - }, - "application/x-font-pcf": { - "source": "apache", - "extensions": ["pcf"] - }, - "application/x-font-snf": { - "source": "apache", - "extensions": ["snf"] - }, - "application/x-font-speedo": { - "source": "apache" - }, - "application/x-font-sunos-news": { - "source": "apache" - }, - "application/x-font-ttf": { - "source": "apache", - "compressible": true, - "extensions": ["ttf","ttc"] - }, - "application/x-font-type1": { - "source": "apache", - "extensions": ["pfa","pfb","pfm","afm"] - }, - "application/x-font-vfont": { - "source": "apache" - }, - "application/x-freearc": { - "source": "apache", - "extensions": ["arc"] - }, - "application/x-futuresplash": { - "source": "apache", - "extensions": ["spl"] - }, - "application/x-gca-compressed": { - "source": "apache", - "extensions": ["gca"] - }, - "application/x-glulx": { - "source": "apache", - "extensions": ["ulx"] - }, - "application/x-gnumeric": { - "source": "apache", - "extensions": ["gnumeric"] - }, - "application/x-gramps-xml": { - "source": "apache", - "extensions": ["gramps"] - }, - "application/x-gtar": { - "source": "apache", - "extensions": ["gtar"] - }, - "application/x-gzip": { - "source": "apache" - }, - "application/x-hdf": { - "source": "apache", - "extensions": ["hdf"] - }, - "application/x-httpd-php": { - "compressible": true, - "extensions": ["php"] - }, - "application/x-install-instructions": { - "source": "apache", - "extensions": ["install"] - }, - "application/x-iso9660-image": { - "source": "apache", - "extensions": ["iso"] - }, - "application/x-java-archive-diff": { - "source": "nginx", - "extensions": ["jardiff"] - }, - "application/x-java-jnlp-file": { - "source": "apache", - "compressible": false, - "extensions": ["jnlp"] - }, - "application/x-javascript": { - "compressible": true - }, - "application/x-latex": { - "source": "apache", - "compressible": false, - "extensions": ["latex"] - }, - "application/x-lua-bytecode": { - "extensions": ["luac"] - }, - "application/x-lzh-compressed": { - "source": "apache", - "extensions": ["lzh","lha"] - }, - "application/x-makeself": { - "source": "nginx", - "extensions": ["run"] - }, - "application/x-mie": { - "source": "apache", - "extensions": ["mie"] - }, - "application/x-mobipocket-ebook": { - "source": "apache", - "extensions": ["prc","mobi"] - }, - "application/x-mpegurl": { - "compressible": false - }, - "application/x-ms-application": { - "source": "apache", - "extensions": ["application"] - }, - "application/x-ms-shortcut": { - "source": "apache", - "extensions": ["lnk"] - }, - "application/x-ms-wmd": { - "source": "apache", - "extensions": ["wmd"] - }, - "application/x-ms-wmz": { - "source": "apache", - "extensions": ["wmz"] - }, - "application/x-ms-xbap": { - "source": "apache", - "extensions": ["xbap"] - }, - "application/x-msaccess": { - "source": "apache", - "extensions": ["mdb"] - }, - "application/x-msbinder": { - "source": "apache", - "extensions": ["obd"] - }, - "application/x-mscardfile": { - "source": "apache", - "extensions": ["crd"] - }, - "application/x-msclip": { - "source": "apache", - "extensions": ["clp"] - }, - "application/x-msdownload": { - "source": "apache", - "extensions": ["exe","dll","com","bat","msi"] - }, - "application/x-msmediaview": { - "source": "apache", - "extensions": ["mvb","m13","m14"] - }, - "application/x-msmetafile": { - "source": "apache", - "extensions": ["wmf","wmz","emf","emz"] - }, - "application/x-msmoney": { - "source": "apache", - "extensions": ["mny"] - }, - "application/x-mspublisher": { - "source": "apache", - "extensions": ["pub"] - }, - "application/x-msschedule": { - "source": "apache", - "extensions": ["scd"] - }, - "application/x-msterminal": { - "source": "apache", - "extensions": ["trm"] - }, - "application/x-mswrite": { - "source": "apache", - "extensions": ["wri"] - }, - "application/x-netcdf": { - "source": "apache", - "extensions": ["nc","cdf"] - }, - "application/x-ns-proxy-autoconfig": { - "compressible": true, - "extensions": ["pac"] - }, - "application/x-nzb": { - "source": "apache", - "extensions": ["nzb"] - }, - "application/x-perl": { - "source": "nginx", - "extensions": ["pl","pm"] - }, - "application/x-pilot": { - "source": "nginx", - "extensions": ["prc","pdb"] - }, - "application/x-pkcs12": { - "source": "apache", - "compressible": false, - "extensions": ["p12","pfx"] - }, - "application/x-pkcs7-certificates": { - "source": "apache", - "extensions": ["p7b","spc"] - }, - "application/x-pkcs7-certreqresp": { - "source": "apache", - "extensions": ["p7r"] - }, - "application/x-rar-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["rar"] - }, - "application/x-redhat-package-manager": { - "source": "nginx", - "extensions": ["rpm"] - }, - "application/x-research-info-systems": { - "source": "apache", - "extensions": ["ris"] - }, - "application/x-sea": { - "source": "nginx", - "extensions": ["sea"] - }, - "application/x-sh": { - "source": "apache", - "compressible": true, - "extensions": ["sh"] - }, - "application/x-shar": { - "source": "apache", - "extensions": ["shar"] - }, - "application/x-shockwave-flash": { - "source": "apache", - "compressible": false, - "extensions": ["swf"] - }, - "application/x-silverlight-app": { - "source": "apache", - "extensions": ["xap"] - }, - "application/x-sql": { - "source": "apache", - "extensions": ["sql"] - }, - "application/x-stuffit": { - "source": "apache", - "compressible": false, - "extensions": ["sit"] - }, - "application/x-stuffitx": { - "source": "apache", - "extensions": ["sitx"] - }, - "application/x-subrip": { - "source": "apache", - "extensions": ["srt"] - }, - "application/x-sv4cpio": { - "source": "apache", - "extensions": ["sv4cpio"] - }, - "application/x-sv4crc": { - "source": "apache", - "extensions": ["sv4crc"] - }, - "application/x-t3vm-image": { - "source": "apache", - "extensions": ["t3"] - }, - "application/x-tads": { - "source": "apache", - "extensions": ["gam"] - }, - "application/x-tar": { - "source": "apache", - "compressible": true, - "extensions": ["tar"] - }, - "application/x-tcl": { - "source": "apache", - "extensions": ["tcl","tk"] - }, - "application/x-tex": { - "source": "apache", - "extensions": ["tex"] - }, - "application/x-tex-tfm": { - "source": "apache", - "extensions": ["tfm"] - }, - "application/x-texinfo": { - "source": "apache", - "extensions": ["texinfo","texi"] - }, - "application/x-tgif": { - "source": "apache", - "extensions": ["obj"] - }, - "application/x-ustar": { - "source": "apache", - "extensions": ["ustar"] - }, - "application/x-wais-source": { - "source": "apache", - "extensions": ["src"] - }, - "application/x-web-app-manifest+json": { - "compressible": true, - "extensions": ["webapp"] - }, - "application/x-www-form-urlencoded": { - "source": "iana", - "compressible": true - }, - "application/x-x509-ca-cert": { - "source": "apache", - "extensions": ["der","crt","pem"] - }, - "application/x-xfig": { - "source": "apache", - "extensions": ["fig"] - }, - "application/x-xliff+xml": { - "source": "apache", - "extensions": ["xlf"] - }, - "application/x-xpinstall": { - "source": "apache", - "compressible": false, - "extensions": ["xpi"] - }, - "application/x-xz": { - "source": "apache", - "extensions": ["xz"] - }, - "application/x-zmachine": { - "source": "apache", - "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] - }, - "application/x400-bp": { - "source": "iana" - }, - "application/xacml+xml": { - "source": "iana" - }, - "application/xaml+xml": { - "source": "apache", - "extensions": ["xaml"] - }, - "application/xcap-att+xml": { - "source": "iana" - }, - "application/xcap-caps+xml": { - "source": "iana" - }, - "application/xcap-diff+xml": { - "source": "iana", - "extensions": ["xdf"] - }, - "application/xcap-el+xml": { - "source": "iana" - }, - "application/xcap-error+xml": { - "source": "iana" - }, - "application/xcap-ns+xml": { - "source": "iana" - }, - "application/xcon-conference-info+xml": { - "source": "iana" - }, - "application/xcon-conference-info-diff+xml": { - "source": "iana" - }, - "application/xenc+xml": { - "source": "iana", - "extensions": ["xenc"] - }, - "application/xhtml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xhtml","xht"] - }, - "application/xhtml-voice+xml": { - "source": "apache" - }, - "application/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml","xsl","xsd"] - }, - "application/xml-dtd": { - "source": "iana", - "compressible": true, - "extensions": ["dtd"] - }, - "application/xml-external-parsed-entity": { - "source": "iana" - }, - "application/xml-patch+xml": { - "source": "iana" - }, - "application/xmpp+xml": { - "source": "iana" - }, - "application/xop+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xop"] - }, - "application/xproc+xml": { - "source": "apache", - "extensions": ["xpl"] - }, - "application/xslt+xml": { - "source": "iana", - "extensions": ["xslt"] - }, - "application/xspf+xml": { - "source": "apache", - "extensions": ["xspf"] - }, - "application/xv+xml": { - "source": "iana", - "extensions": ["mxml","xhvml","xvml","xvm"] - }, - "application/yang": { - "source": "iana", - "extensions": ["yang"] - }, - "application/yin+xml": { - "source": "iana", - "extensions": ["yin"] - }, - "application/zip": { - "source": "iana", - "compressible": false, - "extensions": ["zip"] - }, - "application/zlib": { - "source": "iana" - }, - "audio/1d-interleaved-parityfec": { - "source": "iana" - }, - "audio/32kadpcm": { - "source": "iana" - }, - "audio/3gpp": { - "source": "iana" - }, - "audio/3gpp2": { - "source": "iana" - }, - "audio/ac3": { - "source": "iana" - }, - "audio/adpcm": { - "source": "apache", - "extensions": ["adp"] - }, - "audio/amr": { - "source": "iana" - }, - "audio/amr-wb": { - "source": "iana" - }, - "audio/amr-wb+": { - "source": "iana" - }, - "audio/aptx": { - "source": "iana" - }, - "audio/asc": { - "source": "iana" - }, - "audio/atrac-advanced-lossless": { - "source": "iana" - }, - "audio/atrac-x": { - "source": "iana" - }, - "audio/atrac3": { - "source": "iana" - }, - "audio/basic": { - "source": "iana", - "compressible": false, - "extensions": ["au","snd"] - }, - "audio/bv16": { - "source": "iana" - }, - "audio/bv32": { - "source": "iana" - }, - "audio/clearmode": { - "source": "iana" - }, - "audio/cn": { - "source": "iana" - }, - "audio/dat12": { - "source": "iana" - }, - "audio/dls": { - "source": "iana" - }, - "audio/dsr-es201108": { - "source": "iana" - }, - "audio/dsr-es202050": { - "source": "iana" - }, - "audio/dsr-es202211": { - "source": "iana" - }, - "audio/dsr-es202212": { - "source": "iana" - }, - "audio/dv": { - "source": "iana" - }, - "audio/dvi4": { - "source": "iana" - }, - "audio/eac3": { - "source": "iana" - }, - "audio/encaprtp": { - "source": "iana" - }, - "audio/evrc": { - "source": "iana" - }, - "audio/evrc-qcp": { - "source": "iana" - }, - "audio/evrc0": { - "source": "iana" - }, - "audio/evrc1": { - "source": "iana" - }, - "audio/evrcb": { - "source": "iana" - }, - "audio/evrcb0": { - "source": "iana" - }, - "audio/evrcb1": { - "source": "iana" - }, - "audio/evrcnw": { - "source": "iana" - }, - "audio/evrcnw0": { - "source": "iana" - }, - "audio/evrcnw1": { - "source": "iana" - }, - "audio/evrcwb": { - "source": "iana" - }, - "audio/evrcwb0": { - "source": "iana" - }, - "audio/evrcwb1": { - "source": "iana" - }, - "audio/fwdred": { - "source": "iana" - }, - "audio/g719": { - "source": "iana" - }, - "audio/g722": { - "source": "iana" - }, - "audio/g7221": { - "source": "iana" - }, - "audio/g723": { - "source": "iana" - }, - "audio/g726-16": { - "source": "iana" - }, - "audio/g726-24": { - "source": "iana" - }, - "audio/g726-32": { - "source": "iana" - }, - "audio/g726-40": { - "source": "iana" - }, - "audio/g728": { - "source": "iana" - }, - "audio/g729": { - "source": "iana" - }, - "audio/g7291": { - "source": "iana" - }, - "audio/g729d": { - "source": "iana" - }, - "audio/g729e": { - "source": "iana" - }, - "audio/gsm": { - "source": "iana" - }, - "audio/gsm-efr": { - "source": "iana" - }, - "audio/gsm-hr-08": { - "source": "iana" - }, - "audio/ilbc": { - "source": "iana" - }, - "audio/ip-mr_v2.5": { - "source": "iana" - }, - "audio/isac": { - "source": "apache" - }, - "audio/l16": { - "source": "iana" - }, - "audio/l20": { - "source": "iana" - }, - "audio/l24": { - "source": "iana", - "compressible": false - }, - "audio/l8": { - "source": "iana" - }, - "audio/lpc": { - "source": "iana" - }, - "audio/midi": { - "source": "apache", - "extensions": ["mid","midi","kar","rmi"] - }, - "audio/mobile-xmf": { - "source": "iana" - }, - "audio/mp4": { - "source": "iana", - "compressible": false, - "extensions": ["mp4a","m4a"] - }, - "audio/mp4a-latm": { - "source": "iana" - }, - "audio/mpa": { - "source": "iana" - }, - "audio/mpa-robust": { - "source": "iana" - }, - "audio/mpeg": { - "source": "iana", - "compressible": false, - "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] - }, - "audio/mpeg4-generic": { - "source": "iana" - }, - "audio/musepack": { - "source": "apache" - }, - "audio/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["oga","ogg","spx"] - }, - "audio/opus": { - "source": "iana" - }, - "audio/parityfec": { - "source": "iana" - }, - "audio/pcma": { - "source": "iana" - }, - "audio/pcma-wb": { - "source": "iana" - }, - "audio/pcmu": { - "source": "iana" - }, - "audio/pcmu-wb": { - "source": "iana" - }, - "audio/prs.sid": { - "source": "iana" - }, - "audio/qcelp": { - "source": "iana" - }, - "audio/raptorfec": { - "source": "iana" - }, - "audio/red": { - "source": "iana" - }, - "audio/rtp-enc-aescm128": { - "source": "iana" - }, - "audio/rtp-midi": { - "source": "iana" - }, - "audio/rtploopback": { - "source": "iana" - }, - "audio/rtx": { - "source": "iana" - }, - "audio/s3m": { - "source": "apache", - "extensions": ["s3m"] - }, - "audio/silk": { - "source": "apache", - "extensions": ["sil"] - }, - "audio/smv": { - "source": "iana" - }, - "audio/smv-qcp": { - "source": "iana" - }, - "audio/smv0": { - "source": "iana" - }, - "audio/sp-midi": { - "source": "iana" - }, - "audio/speex": { - "source": "iana" - }, - "audio/t140c": { - "source": "iana" - }, - "audio/t38": { - "source": "iana" - }, - "audio/telephone-event": { - "source": "iana" - }, - "audio/tone": { - "source": "iana" - }, - "audio/uemclip": { - "source": "iana" - }, - "audio/ulpfec": { - "source": "iana" - }, - "audio/vdvi": { - "source": "iana" - }, - "audio/vmr-wb": { - "source": "iana" - }, - "audio/vnd.3gpp.iufp": { - "source": "iana" - }, - "audio/vnd.4sb": { - "source": "iana" - }, - "audio/vnd.audiokoz": { - "source": "iana" - }, - "audio/vnd.celp": { - "source": "iana" - }, - "audio/vnd.cisco.nse": { - "source": "iana" - }, - "audio/vnd.cmles.radio-events": { - "source": "iana" - }, - "audio/vnd.cns.anp1": { - "source": "iana" - }, - "audio/vnd.cns.inf1": { - "source": "iana" - }, - "audio/vnd.dece.audio": { - "source": "iana", - "extensions": ["uva","uvva"] - }, - "audio/vnd.digital-winds": { - "source": "iana", - "extensions": ["eol"] - }, - "audio/vnd.dlna.adts": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.1": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.2": { - "source": "iana" - }, - "audio/vnd.dolby.mlp": { - "source": "iana" - }, - "audio/vnd.dolby.mps": { - "source": "iana" - }, - "audio/vnd.dolby.pl2": { - "source": "iana" - }, - "audio/vnd.dolby.pl2x": { - "source": "iana" - }, - "audio/vnd.dolby.pl2z": { - "source": "iana" - }, - "audio/vnd.dolby.pulse.1": { - "source": "iana" - }, - "audio/vnd.dra": { - "source": "iana", - "extensions": ["dra"] - }, - "audio/vnd.dts": { - "source": "iana", - "extensions": ["dts"] - }, - "audio/vnd.dts.hd": { - "source": "iana", - "extensions": ["dtshd"] - }, - "audio/vnd.dvb.file": { - "source": "iana" - }, - "audio/vnd.everad.plj": { - "source": "iana" - }, - "audio/vnd.hns.audio": { - "source": "iana" - }, - "audio/vnd.lucent.voice": { - "source": "iana", - "extensions": ["lvp"] - }, - "audio/vnd.ms-playready.media.pya": { - "source": "iana", - "extensions": ["pya"] - }, - "audio/vnd.nokia.mobile-xmf": { - "source": "iana" - }, - "audio/vnd.nortel.vbk": { - "source": "iana" - }, - "audio/vnd.nuera.ecelp4800": { - "source": "iana", - "extensions": ["ecelp4800"] - }, - "audio/vnd.nuera.ecelp7470": { - "source": "iana", - "extensions": ["ecelp7470"] - }, - "audio/vnd.nuera.ecelp9600": { - "source": "iana", - "extensions": ["ecelp9600"] - }, - "audio/vnd.octel.sbc": { - "source": "iana" - }, - "audio/vnd.qcelp": { - "source": "iana" - }, - "audio/vnd.rhetorex.32kadpcm": { - "source": "iana" - }, - "audio/vnd.rip": { - "source": "iana", - "extensions": ["rip"] - }, - "audio/vnd.rn-realaudio": { - "compressible": false - }, - "audio/vnd.sealedmedia.softseal.mpeg": { - "source": "iana" - }, - "audio/vnd.vmx.cvsd": { - "source": "iana" - }, - "audio/vnd.wave": { - "compressible": false - }, - "audio/vorbis": { - "source": "iana", - "compressible": false - }, - "audio/vorbis-config": { - "source": "iana" - }, - "audio/wav": { - "compressible": false, - "extensions": ["wav"] - }, - "audio/wave": { - "compressible": false, - "extensions": ["wav"] - }, - "audio/webm": { - "source": "apache", - "compressible": false, - "extensions": ["weba"] - }, - "audio/x-aac": { - "source": "apache", - "compressible": false, - "extensions": ["aac"] - }, - "audio/x-aiff": { - "source": "apache", - "extensions": ["aif","aiff","aifc"] - }, - "audio/x-caf": { - "source": "apache", - "compressible": false, - "extensions": ["caf"] - }, - "audio/x-flac": { - "source": "apache", - "extensions": ["flac"] - }, - "audio/x-m4a": { - "source": "nginx", - "extensions": ["m4a"] - }, - "audio/x-matroska": { - "source": "apache", - "extensions": ["mka"] - }, - "audio/x-mpegurl": { - "source": "apache", - "extensions": ["m3u"] - }, - "audio/x-ms-wax": { - "source": "apache", - "extensions": ["wax"] - }, - "audio/x-ms-wma": { - "source": "apache", - "extensions": ["wma"] - }, - "audio/x-pn-realaudio": { - "source": "apache", - "extensions": ["ram","ra"] - }, - "audio/x-pn-realaudio-plugin": { - "source": "apache", - "extensions": ["rmp"] - }, - "audio/x-realaudio": { - "source": "nginx", - "extensions": ["ra"] - }, - "audio/x-tta": { - "source": "apache" - }, - "audio/x-wav": { - "source": "apache", - "extensions": ["wav"] - }, - "audio/xm": { - "source": "apache", - "extensions": ["xm"] - }, - "chemical/x-cdx": { - "source": "apache", - "extensions": ["cdx"] - }, - "chemical/x-cif": { - "source": "apache", - "extensions": ["cif"] - }, - "chemical/x-cmdf": { - "source": "apache", - "extensions": ["cmdf"] - }, - "chemical/x-cml": { - "source": "apache", - "extensions": ["cml"] - }, - "chemical/x-csml": { - "source": "apache", - "extensions": ["csml"] - }, - "chemical/x-pdb": { - "source": "apache" - }, - "chemical/x-xyz": { - "source": "apache", - "extensions": ["xyz"] - }, - "font/opentype": { - "compressible": true, - "extensions": ["otf"] - }, - "image/bmp": { - "source": "apache", - "compressible": true, - "extensions": ["bmp"] - }, - "image/cgm": { - "source": "iana", - "extensions": ["cgm"] - }, - "image/fits": { - "source": "iana" - }, - "image/g3fax": { - "source": "iana", - "extensions": ["g3"] - }, - "image/gif": { - "source": "iana", - "compressible": false, - "extensions": ["gif"] - }, - "image/ief": { - "source": "iana", - "extensions": ["ief"] - }, - "image/jp2": { - "source": "iana" - }, - "image/jpeg": { - "source": "iana", - "compressible": false, - "extensions": ["jpeg","jpg","jpe"] - }, - "image/jpm": { - "source": "iana" - }, - "image/jpx": { - "source": "iana" - }, - "image/ktx": { - "source": "iana", - "extensions": ["ktx"] - }, - "image/naplps": { - "source": "iana" - }, - "image/pjpeg": { - "compressible": false - }, - "image/png": { - "source": "iana", - "compressible": false, - "extensions": ["png"] - }, - "image/prs.btif": { - "source": "iana", - "extensions": ["btif"] - }, - "image/prs.pti": { - "source": "iana" - }, - "image/pwg-raster": { - "source": "iana" - }, - "image/sgi": { - "source": "apache", - "extensions": ["sgi"] - }, - "image/svg+xml": { - "source": "iana", - "compressible": true, - "extensions": ["svg","svgz"] - }, - "image/t38": { - "source": "iana" - }, - "image/tiff": { - "source": "iana", - "compressible": false, - "extensions": ["tiff","tif"] - }, - "image/tiff-fx": { - "source": "iana" - }, - "image/vnd.adobe.photoshop": { - "source": "iana", - "compressible": true, - "extensions": ["psd"] - }, - "image/vnd.airzip.accelerator.azv": { - "source": "iana" - }, - "image/vnd.cns.inf2": { - "source": "iana" - }, - "image/vnd.dece.graphic": { - "source": "iana", - "extensions": ["uvi","uvvi","uvg","uvvg"] - }, - "image/vnd.djvu": { - "source": "iana", - "extensions": ["djvu","djv"] - }, - "image/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "image/vnd.dwg": { - "source": "iana", - "extensions": ["dwg"] - }, - "image/vnd.dxf": { - "source": "iana", - "extensions": ["dxf"] - }, - "image/vnd.fastbidsheet": { - "source": "iana", - "extensions": ["fbs"] - }, - "image/vnd.fpx": { - "source": "iana", - "extensions": ["fpx"] - }, - "image/vnd.fst": { - "source": "iana", - "extensions": ["fst"] - }, - "image/vnd.fujixerox.edmics-mmr": { - "source": "iana", - "extensions": ["mmr"] - }, - "image/vnd.fujixerox.edmics-rlc": { - "source": "iana", - "extensions": ["rlc"] - }, - "image/vnd.globalgraphics.pgb": { - "source": "iana" - }, - "image/vnd.microsoft.icon": { - "source": "iana" - }, - "image/vnd.mix": { - "source": "iana" - }, - "image/vnd.ms-modi": { - "source": "iana", - "extensions": ["mdi"] - }, - "image/vnd.ms-photo": { - "source": "apache", - "extensions": ["wdp"] - }, - "image/vnd.net-fpx": { - "source": "iana", - "extensions": ["npx"] - }, - "image/vnd.radiance": { - "source": "iana" - }, - "image/vnd.sealed.png": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.gif": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.jpg": { - "source": "iana" - }, - "image/vnd.svf": { - "source": "iana" - }, - "image/vnd.tencent.tap": { - "source": "iana" - }, - "image/vnd.valve.source.texture": { - "source": "iana" - }, - "image/vnd.wap.wbmp": { - "source": "iana", - "extensions": ["wbmp"] - }, - "image/vnd.xiff": { - "source": "iana", - "extensions": ["xif"] - }, - "image/vnd.zbrush.pcx": { - "source": "iana" - }, - "image/webp": { - "source": "apache", - "extensions": ["webp"] - }, - "image/x-3ds": { - "source": "apache", - "extensions": ["3ds"] - }, - "image/x-cmu-raster": { - "source": "apache", - "extensions": ["ras"] - }, - "image/x-cmx": { - "source": "apache", - "extensions": ["cmx"] - }, - "image/x-freehand": { - "source": "apache", - "extensions": ["fh","fhc","fh4","fh5","fh7"] - }, - "image/x-icon": { - "source": "apache", - "compressible": true, - "extensions": ["ico"] - }, - "image/x-jng": { - "source": "nginx", - "extensions": ["jng"] - }, - "image/x-mrsid-image": { - "source": "apache", - "extensions": ["sid"] - }, - "image/x-ms-bmp": { - "source": "nginx", - "compressible": true, - "extensions": ["bmp"] - }, - "image/x-pcx": { - "source": "apache", - "extensions": ["pcx"] - }, - "image/x-pict": { - "source": "apache", - "extensions": ["pic","pct"] - }, - "image/x-portable-anymap": { - "source": "apache", - "extensions": ["pnm"] - }, - "image/x-portable-bitmap": { - "source": "apache", - "extensions": ["pbm"] - }, - "image/x-portable-graymap": { - "source": "apache", - "extensions": ["pgm"] - }, - "image/x-portable-pixmap": { - "source": "apache", - "extensions": ["ppm"] - }, - "image/x-rgb": { - "source": "apache", - "extensions": ["rgb"] - }, - "image/x-tga": { - "source": "apache", - "extensions": ["tga"] - }, - "image/x-xbitmap": { - "source": "apache", - "extensions": ["xbm"] - }, - "image/x-xcf": { - "compressible": false - }, - "image/x-xpixmap": { - "source": "apache", - "extensions": ["xpm"] - }, - "image/x-xwindowdump": { - "source": "apache", - "extensions": ["xwd"] - }, - "message/cpim": { - "source": "iana" - }, - "message/delivery-status": { - "source": "iana" - }, - "message/disposition-notification": { - "source": "iana" - }, - "message/external-body": { - "source": "iana" - }, - "message/feedback-report": { - "source": "iana" - }, - "message/global": { - "source": "iana" - }, - "message/global-delivery-status": { - "source": "iana" - }, - "message/global-disposition-notification": { - "source": "iana" - }, - "message/global-headers": { - "source": "iana" - }, - "message/http": { - "source": "iana", - "compressible": false - }, - "message/imdn+xml": { - "source": "iana", - "compressible": true - }, - "message/news": { - "source": "iana" - }, - "message/partial": { - "source": "iana", - "compressible": false - }, - "message/rfc822": { - "source": "iana", - "compressible": true, - "extensions": ["eml","mime"] - }, - "message/s-http": { - "source": "iana" - }, - "message/sip": { - "source": "iana" - }, - "message/sipfrag": { - "source": "iana" - }, - "message/tracking-status": { - "source": "iana" - }, - "message/vnd.si.simp": { - "source": "iana" - }, - "message/vnd.wfa.wsc": { - "source": "iana" - }, - "model/iges": { - "source": "iana", - "compressible": false, - "extensions": ["igs","iges"] - }, - "model/mesh": { - "source": "iana", - "compressible": false, - "extensions": ["msh","mesh","silo"] - }, - "model/vnd.collada+xml": { - "source": "iana", - "extensions": ["dae"] - }, - "model/vnd.dwf": { - "source": "iana", - "extensions": ["dwf"] - }, - "model/vnd.flatland.3dml": { - "source": "iana" - }, - "model/vnd.gdl": { - "source": "iana", - "extensions": ["gdl"] - }, - "model/vnd.gs-gdl": { - "source": "apache" - }, - "model/vnd.gs.gdl": { - "source": "iana" - }, - "model/vnd.gtw": { - "source": "iana", - "extensions": ["gtw"] - }, - "model/vnd.moml+xml": { - "source": "iana" - }, - "model/vnd.mts": { - "source": "iana", - "extensions": ["mts"] - }, - "model/vnd.opengex": { - "source": "iana" - }, - "model/vnd.parasolid.transmit.binary": { - "source": "iana" - }, - "model/vnd.parasolid.transmit.text": { - "source": "iana" - }, - "model/vnd.valve.source.compiled-map": { - "source": "iana" - }, - "model/vnd.vtu": { - "source": "iana", - "extensions": ["vtu"] - }, - "model/vrml": { - "source": "iana", - "compressible": false, - "extensions": ["wrl","vrml"] - }, - "model/x3d+binary": { - "source": "apache", - "compressible": false, - "extensions": ["x3db","x3dbz"] - }, - "model/x3d+fastinfoset": { - "source": "iana" - }, - "model/x3d+vrml": { - "source": "apache", - "compressible": false, - "extensions": ["x3dv","x3dvz"] - }, - "model/x3d+xml": { - "source": "iana", - "compressible": true, - "extensions": ["x3d","x3dz"] - }, - "model/x3d-vrml": { - "source": "iana" - }, - "multipart/alternative": { - "source": "iana", - "compressible": false - }, - "multipart/appledouble": { - "source": "iana" - }, - "multipart/byteranges": { - "source": "iana" - }, - "multipart/digest": { - "source": "iana" - }, - "multipart/encrypted": { - "source": "iana", - "compressible": false - }, - "multipart/form-data": { - "source": "iana", - "compressible": false - }, - "multipart/header-set": { - "source": "iana" - }, - "multipart/mixed": { - "source": "iana", - "compressible": false - }, - "multipart/parallel": { - "source": "iana" - }, - "multipart/related": { - "source": "iana", - "compressible": false - }, - "multipart/report": { - "source": "iana" - }, - "multipart/signed": { - "source": "iana", - "compressible": false - }, - "multipart/voice-message": { - "source": "iana" - }, - "multipart/x-mixed-replace": { - "source": "iana" - }, - "text/1d-interleaved-parityfec": { - "source": "iana" - }, - "text/cache-manifest": { - "source": "iana", - "compressible": true, - "extensions": ["appcache","manifest"] - }, - "text/calendar": { - "source": "iana", - "extensions": ["ics","ifb"] - }, - "text/calender": { - "compressible": true - }, - "text/cmd": { - "compressible": true - }, - "text/coffeescript": { - "extensions": ["coffee","litcoffee"] - }, - "text/css": { - "source": "iana", - "compressible": true, - "extensions": ["css"] - }, - "text/csv": { - "source": "iana", - "compressible": true, - "extensions": ["csv"] - }, - "text/csv-schema": { - "source": "iana" - }, - "text/directory": { - "source": "iana" - }, - "text/dns": { - "source": "iana" - }, - "text/ecmascript": { - "source": "iana" - }, - "text/encaprtp": { - "source": "iana" - }, - "text/enriched": { - "source": "iana" - }, - "text/fwdred": { - "source": "iana" - }, - "text/grammar-ref-list": { - "source": "iana" - }, - "text/hjson": { - "extensions": ["hjson"] - }, - "text/html": { - "source": "iana", - "compressible": true, - "extensions": ["html","htm","shtml"] - }, - "text/jade": { - "extensions": ["jade"] - }, - "text/javascript": { - "source": "iana", - "compressible": true - }, - "text/jcr-cnd": { - "source": "iana" - }, - "text/jsx": { - "compressible": true, - "extensions": ["jsx"] - }, - "text/less": { - "extensions": ["less"] - }, - "text/markdown": { - "source": "iana" - }, - "text/mathml": { - "source": "nginx", - "extensions": ["mml"] - }, - "text/mizar": { - "source": "iana" - }, - "text/n3": { - "source": "iana", - "compressible": true, - "extensions": ["n3"] - }, - "text/parameters": { - "source": "iana" - }, - "text/parityfec": { - "source": "iana" - }, - "text/plain": { - "source": "iana", - "compressible": true, - "extensions": ["txt","text","conf","def","list","log","in","ini"] - }, - "text/provenance-notation": { - "source": "iana" - }, - "text/prs.fallenstein.rst": { - "source": "iana" - }, - "text/prs.lines.tag": { - "source": "iana", - "extensions": ["dsc"] - }, - "text/raptorfec": { - "source": "iana" - }, - "text/red": { - "source": "iana" - }, - "text/rfc822-headers": { - "source": "iana" - }, - "text/richtext": { - "source": "iana", - "compressible": true, - "extensions": ["rtx"] - }, - "text/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "text/rtp-enc-aescm128": { - "source": "iana" - }, - "text/rtploopback": { - "source": "iana" - }, - "text/rtx": { - "source": "iana" - }, - "text/sgml": { - "source": "iana", - "extensions": ["sgml","sgm"] - }, - "text/stylus": { - "extensions": ["stylus","styl"] - }, - "text/t140": { - "source": "iana" - }, - "text/tab-separated-values": { - "source": "iana", - "compressible": true, - "extensions": ["tsv"] - }, - "text/troff": { - "source": "iana", - "extensions": ["t","tr","roff","man","me","ms"] - }, - "text/turtle": { - "source": "iana", - "extensions": ["ttl"] - }, - "text/ulpfec": { - "source": "iana" - }, - "text/uri-list": { - "source": "iana", - "compressible": true, - "extensions": ["uri","uris","urls"] - }, - "text/vcard": { - "source": "iana", - "compressible": true, - "extensions": ["vcard"] - }, - "text/vnd.a": { - "source": "iana" - }, - "text/vnd.abc": { - "source": "iana" - }, - "text/vnd.curl": { - "source": "iana", - "extensions": ["curl"] - }, - "text/vnd.curl.dcurl": { - "source": "apache", - "extensions": ["dcurl"] - }, - "text/vnd.curl.mcurl": { - "source": "apache", - "extensions": ["mcurl"] - }, - "text/vnd.curl.scurl": { - "source": "apache", - "extensions": ["scurl"] - }, - "text/vnd.debian.copyright": { - "source": "iana" - }, - "text/vnd.dmclientscript": { - "source": "iana" - }, - "text/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "text/vnd.esmertec.theme-descriptor": { - "source": "iana" - }, - "text/vnd.fly": { - "source": "iana", - "extensions": ["fly"] - }, - "text/vnd.fmi.flexstor": { - "source": "iana", - "extensions": ["flx"] - }, - "text/vnd.graphviz": { - "source": "iana", - "extensions": ["gv"] - }, - "text/vnd.in3d.3dml": { - "source": "iana", - "extensions": ["3dml"] - }, - "text/vnd.in3d.spot": { - "source": "iana", - "extensions": ["spot"] - }, - "text/vnd.iptc.newsml": { - "source": "iana" - }, - "text/vnd.iptc.nitf": { - "source": "iana" - }, - "text/vnd.latex-z": { - "source": "iana" - }, - "text/vnd.motorola.reflex": { - "source": "iana" - }, - "text/vnd.ms-mediapackage": { - "source": "iana" - }, - "text/vnd.net2phone.commcenter.command": { - "source": "iana" - }, - "text/vnd.radisys.msml-basic-layout": { - "source": "iana" - }, - "text/vnd.si.uricatalogue": { - "source": "iana" - }, - "text/vnd.sun.j2me.app-descriptor": { - "source": "iana", - "extensions": ["jad"] - }, - "text/vnd.trolltech.linguist": { - "source": "iana" - }, - "text/vnd.wap.si": { - "source": "iana" - }, - "text/vnd.wap.sl": { - "source": "iana" - }, - "text/vnd.wap.wml": { - "source": "iana", - "extensions": ["wml"] - }, - "text/vnd.wap.wmlscript": { - "source": "iana", - "extensions": ["wmls"] - }, - "text/vtt": { - "charset": "UTF-8", - "compressible": true, - "extensions": ["vtt"] - }, - "text/x-asm": { - "source": "apache", - "extensions": ["s","asm"] - }, - "text/x-c": { - "source": "apache", - "extensions": ["c","cc","cxx","cpp","h","hh","dic"] - }, - "text/x-component": { - "source": "nginx", - "extensions": ["htc"] - }, - "text/x-fortran": { - "source": "apache", - "extensions": ["f","for","f77","f90"] - }, - "text/x-gwt-rpc": { - "compressible": true - }, - "text/x-handlebars-template": { - "extensions": ["hbs"] - }, - "text/x-java-source": { - "source": "apache", - "extensions": ["java"] - }, - "text/x-jquery-tmpl": { - "compressible": true - }, - "text/x-lua": { - "extensions": ["lua"] - }, - "text/x-markdown": { - "compressible": true, - "extensions": ["markdown","md","mkd"] - }, - "text/x-nfo": { - "source": "apache", - "extensions": ["nfo"] - }, - "text/x-opml": { - "source": "apache", - "extensions": ["opml"] - }, - "text/x-pascal": { - "source": "apache", - "extensions": ["p","pas"] - }, - "text/x-processing": { - "compressible": true, - "extensions": ["pde"] - }, - "text/x-sass": { - "extensions": ["sass"] - }, - "text/x-scss": { - "extensions": ["scss"] - }, - "text/x-setext": { - "source": "apache", - "extensions": ["etx"] - }, - "text/x-sfv": { - "source": "apache", - "extensions": ["sfv"] - }, - "text/x-uuencode": { - "source": "apache", - "extensions": ["uu"] - }, - "text/x-vcalendar": { - "source": "apache", - "extensions": ["vcs"] - }, - "text/x-vcard": { - "source": "apache", - "extensions": ["vcf"] - }, - "text/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml"] - }, - "text/xml-external-parsed-entity": { - "source": "iana" - }, - "text/yaml": { - "extensions": ["yaml","yml"] - }, - "video/1d-interleaved-parityfec": { - "source": "apache" - }, - "video/3gpp": { - "source": "apache", - "extensions": ["3gp","3gpp"] - }, - "video/3gpp-tt": { - "source": "apache" - }, - "video/3gpp2": { - "source": "apache", - "extensions": ["3g2"] - }, - "video/bmpeg": { - "source": "apache" - }, - "video/bt656": { - "source": "apache" - }, - "video/celb": { - "source": "apache" - }, - "video/dv": { - "source": "apache" - }, - "video/h261": { - "source": "apache", - "extensions": ["h261"] - }, - "video/h263": { - "source": "apache", - "extensions": ["h263"] - }, - "video/h263-1998": { - "source": "apache" - }, - "video/h263-2000": { - "source": "apache" - }, - "video/h264": { - "source": "apache", - "extensions": ["h264"] - }, - "video/h264-rcdo": { - "source": "apache" - }, - "video/h264-svc": { - "source": "apache" - }, - "video/jpeg": { - "source": "apache", - "extensions": ["jpgv"] - }, - "video/jpeg2000": { - "source": "apache" - }, - "video/jpm": { - "source": "apache", - "extensions": ["jpm","jpgm"] - }, - "video/mj2": { - "source": "apache", - "extensions": ["mj2","mjp2"] - }, - "video/mp1s": { - "source": "apache" - }, - "video/mp2p": { - "source": "apache" - }, - "video/mp2t": { - "source": "apache", - "extensions": ["ts"] - }, - "video/mp4": { - "source": "apache", - "compressible": false, - "extensions": ["mp4","mp4v","mpg4"] - }, - "video/mp4v-es": { - "source": "apache" - }, - "video/mpeg": { - "source": "apache", - "compressible": false, - "extensions": ["mpeg","mpg","mpe","m1v","m2v"] - }, - "video/mpeg4-generic": { - "source": "apache" - }, - "video/mpv": { - "source": "apache" - }, - "video/nv": { - "source": "apache" - }, - "video/ogg": { - "source": "apache", - "compressible": false, - "extensions": ["ogv"] - }, - "video/parityfec": { - "source": "apache" - }, - "video/pointer": { - "source": "apache" - }, - "video/quicktime": { - "source": "apache", - "compressible": false, - "extensions": ["qt","mov"] - }, - "video/raw": { - "source": "apache" - }, - "video/rtp-enc-aescm128": { - "source": "apache" - }, - "video/rtx": { - "source": "apache" - }, - "video/smpte292m": { - "source": "apache" - }, - "video/ulpfec": { - "source": "apache" - }, - "video/vc1": { - "source": "apache" - }, - "video/vnd.cctv": { - "source": "apache" - }, - "video/vnd.dece.hd": { - "source": "apache", - "extensions": ["uvh","uvvh"] - }, - "video/vnd.dece.mobile": { - "source": "apache", - "extensions": ["uvm","uvvm"] - }, - "video/vnd.dece.mp4": { - "source": "apache" - }, - "video/vnd.dece.pd": { - "source": "apache", - "extensions": ["uvp","uvvp"] - }, - "video/vnd.dece.sd": { - "source": "apache", - "extensions": ["uvs","uvvs"] - }, - "video/vnd.dece.video": { - "source": "apache", - "extensions": ["uvv","uvvv"] - }, - "video/vnd.directv.mpeg": { - "source": "apache" - }, - "video/vnd.directv.mpeg-tts": { - "source": "apache" - }, - "video/vnd.dlna.mpeg-tts": { - "source": "apache" - }, - "video/vnd.dvb.file": { - "source": "apache", - "extensions": ["dvb"] - }, - "video/vnd.fvt": { - "source": "apache", - "extensions": ["fvt"] - }, - "video/vnd.hns.video": { - "source": "apache" - }, - "video/vnd.iptvforum.1dparityfec-1010": { - "source": "apache" - }, - "video/vnd.iptvforum.1dparityfec-2005": { - "source": "apache" - }, - "video/vnd.iptvforum.2dparityfec-1010": { - "source": "apache" - }, - "video/vnd.iptvforum.2dparityfec-2005": { - "source": "apache" - }, - "video/vnd.iptvforum.ttsavc": { - "source": "apache" - }, - "video/vnd.iptvforum.ttsmpeg2": { - "source": "apache" - }, - "video/vnd.motorola.video": { - "source": "apache" - }, - "video/vnd.motorola.videop": { - "source": "apache" - }, - "video/vnd.mpegurl": { - "source": "apache", - "extensions": ["mxu","m4u"] - }, - "video/vnd.ms-playready.media.pyv": { - "source": "apache", - "extensions": ["pyv"] - }, - "video/vnd.nokia.interleaved-multimedia": { - "source": "apache" - }, - "video/vnd.nokia.videovoip": { - "source": "apache" - }, - "video/vnd.objectvideo": { - "source": "apache" - }, - "video/vnd.sealed.mpeg1": { - "source": "apache" - }, - "video/vnd.sealed.mpeg4": { - "source": "apache" - }, - "video/vnd.sealed.swf": { - "source": "apache" - }, - "video/vnd.sealedmedia.softseal.mov": { - "source": "apache" - }, - "video/vnd.uvvu.mp4": { - "source": "apache", - "extensions": ["uvu","uvvu"] - }, - "video/vnd.vivo": { - "source": "apache", - "extensions": ["viv"] - }, - "video/webm": { - "source": "apache", - "compressible": false, - "extensions": ["webm"] - }, - "video/x-f4v": { - "source": "apache", - "extensions": ["f4v"] - }, - "video/x-fli": { - "source": "apache", - "extensions": ["fli"] - }, - "video/x-flv": { - "source": "apache", - "compressible": false, - "extensions": ["flv"] - }, - "video/x-m4v": { - "source": "apache", - "extensions": ["m4v"] - }, - "video/x-matroska": { - "source": "apache", - "compressible": false, - "extensions": ["mkv","mk3d","mks"] - }, - "video/x-mng": { - "source": "apache", - "extensions": ["mng"] - }, - "video/x-ms-asf": { - "source": "apache", - "extensions": ["asf","asx"] - }, - "video/x-ms-vob": { - "source": "apache", - "extensions": ["vob"] - }, - "video/x-ms-wm": { - "source": "apache", - "extensions": ["wm"] - }, - "video/x-ms-wmv": { - "source": "apache", - "compressible": false, - "extensions": ["wmv"] - }, - "video/x-ms-wmx": { - "source": "apache", - "extensions": ["wmx"] - }, - "video/x-ms-wvx": { - "source": "apache", - "extensions": ["wvx"] - }, - "video/x-msvideo": { - "source": "apache", - "extensions": ["avi"] - }, - "video/x-sgi-movie": { - "source": "apache", - "extensions": ["movie"] - }, - "video/x-smv": { - "source": "apache", - "extensions": ["smv"] - }, - "x-conference/x-cooltalk": { - "source": "apache", - "extensions": ["ice"] - }, - "x-shader/x-fragment": { - "compressible": true - }, - "x-shader/x-vertex": { - "compressible": true - } -} diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/index.js b/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/index.js deleted file mode 100644 index 551031f..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/index.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * mime-db - * Copyright(c) 2014 Jonathan Ong - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = require('./db.json') diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/package.json b/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/package.json deleted file mode 100644 index df4182c..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/node_modules/mime-db/package.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "name": "mime-db", - "description": "Media Type Database", - "version": "1.15.0", - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - { - "name": "Robert Kieffer", - "email": "robert@broofa.com", - "url": "http://github.com/broofa" - } - ], - "license": "MIT", - "keywords": [ - "mime", - "db", - "type", - "types", - "database", - "charset", - "charsets" - ], - "repository": { - "type": "git", - "url": "git://github.com/jshttp/mime-db" - }, - "devDependencies": { - "bluebird": "2.9.33", - "co": "4.6.0", - "cogent": "1.0.1", - "csv-parse": "0.1.3", - "gnode": "0.1.1", - "istanbul": "0.3.17", - "mocha": "1.21.5", - "raw-body": "2.1.2", - "stream-to-array": "2" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "README.md", - "db.json", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "build": "node scripts/build", - "fetch": "gnode scripts/fetch-apache && gnode scripts/fetch-iana && gnode scripts/fetch-nginx", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/", - "update": "npm run fetch && npm run build" - }, - "readme": "# mime-db\n\n[![NPM Version][npm-version-image]][npm-url]\n[![NPM Downloads][npm-downloads-image]][npm-url]\n[![Node.js Version][node-image]][node-url]\n[![Build Status][travis-image]][travis-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\nThis is a database of all mime types.\nIt consists of a single, public JSON file and does not include any logic,\nallowing it to remain as un-opinionated as possible with an API.\nIt aggregates data from the following sources:\n\n- http://www.iana.org/assignments/media-types/media-types.xhtml\n- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types\n- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types\n\n## Installation\n\n```bash\nnpm install mime-db\n```\n\n### Database Download\n\nIf you're crazy enough to use this in the browser, you can just grab the\nJSON file using [RawGit](https://rawgit.com/). It is recommended to replace\n`master` with [a release tag](https://github.com/jshttp/mime-db/tags) as the\nJSON format may change in the future.\n\n```\nhttps://cdn.rawgit.com/jshttp/mime-db/master/db.json\n```\n\n## Usage\n\n```js\nvar db = require('mime-db');\n\n// grab data on .js files\nvar data = db['application/javascript'];\n```\n\n## Data Structure\n\nThe JSON file is a map lookup for lowercased mime types.\nEach mime type has the following properties:\n\n- `.source` - where the mime type is defined.\n If not set, it's probably a custom media type.\n - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types)\n - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml)\n - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types)\n- `.extensions[]` - known extensions associated with this mime type.\n- `.compressible` - whether a file of this type is can be gzipped.\n- `.charset` - the default charset associated with this type, if any.\n\nIf unknown, every property could be `undefined`.\n\n## Contributing\n\nTo edit the database, only make PRs against `src/custom.json` or\n`src/custom-suffix.json`.\n\nTo update the build, run `npm run build`.\n\n## Adding Custom Media Types\n\nThe best way to get new media types included in this library is to register\nthem with the IANA. The community registration procedure is outlined in\n[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types\nregistered with the IANA are automatically pulled into this library.\n\n[npm-version-image]: https://img.shields.io/npm/v/mime-db.svg\n[npm-downloads-image]: https://img.shields.io/npm/dm/mime-db.svg\n[npm-url]: https://npmjs.org/package/mime-db\n[travis-image]: https://img.shields.io/travis/jshttp/mime-db/master.svg\n[travis-url]: https://travis-ci.org/jshttp/mime-db\n[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-db/master.svg\n[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master\n[node-image]: https://img.shields.io/node/v/mime-db.svg\n[node-url]: http://nodejs.org/download/\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/jshttp/mime-db/issues" - }, - "homepage": "https://github.com/jshttp/mime-db", - "_id": "mime-db@1.15.0", - "dist": { - "shasum": "a117ffe20c1f953f119ddd626a125e1a96c4570c" - }, - "_from": "mime-db@1.15.0", - "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.15.0.tgz" -} diff --git a/node_modules/express/node_modules/accepts/node_modules/mime-types/package.json b/node_modules/express/node_modules/accepts/node_modules/mime-types/package.json deleted file mode 100644 index e0927b5..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/mime-types/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "name": "mime-types", - "description": "The ultimate javascript content-type utility.", - "version": "2.1.3", - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "Jeremiah Senkpiel", - "email": "fishrock123@rocketmail.com", - "url": "https://searchbeam.jit.su" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - } - ], - "license": "MIT", - "keywords": [ - "mime", - "types" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/jshttp/mime-types.git" - }, - "dependencies": { - "mime-db": "~1.15.0" - }, - "devDependencies": { - "istanbul": "0.3.17", - "mocha": "~1.21.5" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec test/test.js", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/test.js", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot test/test.js" - }, - "gitHead": "565c49ad5683d4a123a170da3444ed32ce426c3a", - "bugs": { - "url": "https://github.com/jshttp/mime-types/issues" - }, - "homepage": "https://github.com/jshttp/mime-types", - "_id": "mime-types@2.1.3", - "_shasum": "f259849c7eb1f85b8f5f826187278a7f74f0c966", - "_from": "mime-types@>=2.1.3 <2.2.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "f259849c7eb1f85b8f5f826187278a7f74f0c966", - "tarball": "http://registry.npmjs.org/mime-types/-/mime-types-2.1.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/HISTORY.md b/node_modules/express/node_modules/accepts/node_modules/negotiator/HISTORY.md deleted file mode 100644 index aa2a7c4..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/HISTORY.md +++ /dev/null @@ -1,76 +0,0 @@ -0.5.3 / 2015-05-10 -================== - - * Fix media type parameter matching to be case-insensitive - -0.5.2 / 2015-05-06 -================== - - * Fix comparing media types with quoted values - * Fix splitting media types with quoted commas - -0.5.1 / 2015-02-14 -================== - - * Fix preference sorting to be stable for long acceptable lists - -0.5.0 / 2014-12-18 -================== - - * Fix list return order when large accepted list - * Fix missing identity encoding when q=0 exists - * Remove dynamic building of Negotiator class - -0.4.9 / 2014-10-14 -================== - - * Fix error when media type has invalid parameter - -0.4.8 / 2014-09-28 -================== - - * Fix all negotiations to be case-insensitive - * Stable sort preferences of same quality according to client order - * Support Node.js 0.6 - -0.4.7 / 2014-06-24 -================== - - * Handle invalid provided languages - * Handle invalid provided media types - -0.4.6 / 2014-06-11 -================== - - * Order by specificity when quality is the same - -0.4.5 / 2014-05-29 -================== - - * Fix regression in empty header handling - -0.4.4 / 2014-05-29 -================== - - * Fix behaviors when headers are not present - -0.4.3 / 2014-04-16 -================== - - * Handle slashes on media params correctly - -0.4.2 / 2014-02-28 -================== - - * Fix media type sorting - * Handle media types params strictly - -0.4.1 / 2014-01-16 -================== - - * Use most specific matches - -0.4.0 / 2014-01-09 -================== - - * Remove preferred prefix from methods diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/LICENSE b/node_modules/express/node_modules/accepts/node_modules/negotiator/LICENSE deleted file mode 100644 index ea6b9e2..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -(The MIT License) - -Copyright (c) 2012-2014 Federico Romero -Copyright (c) 2012-2014 Isaac Z. Schlueter -Copyright (c) 2014-2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/README.md b/node_modules/express/node_modules/accepts/node_modules/negotiator/README.md deleted file mode 100644 index ef507fa..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/README.md +++ /dev/null @@ -1,203 +0,0 @@ -# negotiator - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -An HTTP content negotiator for Node.js - -## Installation - -```sh -$ npm install negotiator -``` - -## API - -```js -var Negotiator = require('negotiator') -``` - -### Accept Negotiation - -```js -availableMediaTypes = ['text/html', 'text/plain', 'application/json'] - -// The negotiator constructor receives a request object -negotiator = new Negotiator(request) - -// Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8' - -negotiator.mediaTypes() -// -> ['text/html', 'image/jpeg', 'application/*'] - -negotiator.mediaTypes(availableMediaTypes) -// -> ['text/html', 'application/json'] - -negotiator.mediaType(availableMediaTypes) -// -> 'text/html' -``` - -You can check a working example at `examples/accept.js`. - -#### Methods - -##### mediaType() - -Returns the most preferred media type from the client. - -##### mediaType(availableMediaType) - -Returns the most preferred media type from a list of available media types. - -##### mediaTypes() - -Returns an array of preferred media types ordered by the client preference. - -##### mediaTypes(availableMediaTypes) - -Returns an array of preferred media types ordered by priority from a list of -available media types. - -### Accept-Language Negotiation - -```js -negotiator = new Negotiator(request) - -availableLanguages = 'en', 'es', 'fr' - -// Let's say Accept-Language header is 'en;q=0.8, es, pt' - -negotiator.languages() -// -> ['es', 'pt', 'en'] - -negotiator.languages(availableLanguages) -// -> ['es', 'en'] - -language = negotiator.language(availableLanguages) -// -> 'es' -``` - -You can check a working example at `examples/language.js`. - -#### Methods - -##### language() - -Returns the most preferred language from the client. - -##### language(availableLanguages) - -Returns the most preferred language from a list of available languages. - -##### languages() - -Returns an array of preferred languages ordered by the client preference. - -##### languages(availableLanguages) - -Returns an array of preferred languages ordered by priority from a list of -available languages. - -### Accept-Charset Negotiation - -```js -availableCharsets = ['utf-8', 'iso-8859-1', 'iso-8859-5'] - -negotiator = new Negotiator(request) - -// Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2' - -negotiator.charsets() -// -> ['utf-8', 'iso-8859-1', 'utf-7'] - -negotiator.charsets(availableCharsets) -// -> ['utf-8', 'iso-8859-1'] - -negotiator.charset(availableCharsets) -// -> 'utf-8' -``` - -You can check a working example at `examples/charset.js`. - -#### Methods - -##### charset() - -Returns the most preferred charset from the client. - -##### charset(availableCharsets) - -Returns the most preferred charset from a list of available charsets. - -##### charsets() - -Returns an array of preferred charsets ordered by the client preference. - -##### charsets(availableCharsets) - -Returns an array of preferred charsets ordered by priority from a list of -available charsets. - -### Accept-Encoding Negotiation - -```js -availableEncodings = ['identity', 'gzip'] - -negotiator = new Negotiator(request) - -// Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5' - -negotiator.encodings() -// -> ['gzip', 'identity', 'compress'] - -negotiator.encodings(availableEncodings) -// -> ['gzip', 'identity'] - -negotiator.encoding(availableEncodings) -// -> 'gzip' -``` - -You can check a working example at `examples/encoding.js`. - -#### Methods - -##### encoding() - -Returns the most preferred encoding from the client. - -##### encoding(availableEncodings) - -Returns the most preferred encoding from a list of available encodings. - -##### encodings() - -Returns an array of preferred encodings ordered by the client preference. - -##### encodings(availableEncodings) - -Returns an array of preferred encodings ordered by priority from a list of -available encodings. - -## See Also - -The [accepts](https://npmjs.org/package/accepts#readme) module builds on -this module and provides an alternative interface, mime type validation, -and more. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/negotiator.svg -[npm-url]: https://npmjs.org/package/negotiator -[node-version-image]: https://img.shields.io/node/v/negotiator.svg -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/negotiator/master.svg -[travis-url]: https://travis-ci.org/jshttp/negotiator -[coveralls-image]: https://img.shields.io/coveralls/jshttp/negotiator/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/negotiator?branch=master -[downloads-image]: https://img.shields.io/npm/dm/negotiator.svg -[downloads-url]: https://npmjs.org/package/negotiator diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/index.js b/node_modules/express/node_modules/accepts/node_modules/negotiator/index.js deleted file mode 100644 index edae9cf..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/index.js +++ /dev/null @@ -1,62 +0,0 @@ - -var preferredCharsets = require('./lib/charset'); -var preferredEncodings = require('./lib/encoding'); -var preferredLanguages = require('./lib/language'); -var preferredMediaTypes = require('./lib/mediaType'); - -module.exports = Negotiator; -Negotiator.Negotiator = Negotiator; - -function Negotiator(request) { - if (!(this instanceof Negotiator)) { - return new Negotiator(request); - } - - this.request = request; -} - -Negotiator.prototype.charset = function charset(available) { - var set = this.charsets(available); - return set && set[0]; -}; - -Negotiator.prototype.charsets = function charsets(available) { - return preferredCharsets(this.request.headers['accept-charset'], available); -}; - -Negotiator.prototype.encoding = function encoding(available) { - var set = this.encodings(available); - return set && set[0]; -}; - -Negotiator.prototype.encodings = function encodings(available) { - return preferredEncodings(this.request.headers['accept-encoding'], available); -}; - -Negotiator.prototype.language = function language(available) { - var set = this.languages(available); - return set && set[0]; -}; - -Negotiator.prototype.languages = function languages(available) { - return preferredLanguages(this.request.headers['accept-language'], available); -}; - -Negotiator.prototype.mediaType = function mediaType(available) { - var set = this.mediaTypes(available); - return set && set[0]; -}; - -Negotiator.prototype.mediaTypes = function mediaTypes(available) { - return preferredMediaTypes(this.request.headers.accept, available); -}; - -// Backwards compatibility -Negotiator.prototype.preferredCharset = Negotiator.prototype.charset; -Negotiator.prototype.preferredCharsets = Negotiator.prototype.charsets; -Negotiator.prototype.preferredEncoding = Negotiator.prototype.encoding; -Negotiator.prototype.preferredEncodings = Negotiator.prototype.encodings; -Negotiator.prototype.preferredLanguage = Negotiator.prototype.language; -Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages; -Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType; -Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes; diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/charset.js b/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/charset.js deleted file mode 100644 index 7abd17c..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/charset.js +++ /dev/null @@ -1,102 +0,0 @@ -module.exports = preferredCharsets; -preferredCharsets.preferredCharsets = preferredCharsets; - -function parseAcceptCharset(accept) { - var accepts = accept.split(','); - - for (var i = 0, j = 0; i < accepts.length; i++) { - var charset = parseCharset(accepts[i].trim(), i); - - if (charset) { - accepts[j++] = charset; - } - } - - // trim accepts - accepts.length = j; - - return accepts; -} - -function parseCharset(s, i) { - var match = s.match(/^\s*(\S+?)\s*(?:;(.*))?$/); - if (!match) return null; - - var charset = match[1]; - var q = 1; - if (match[2]) { - var params = match[2].split(';') - for (var i = 0; i < params.length; i ++) { - var p = params[i].trim().split('='); - if (p[0] === 'q') { - q = parseFloat(p[1]); - break; - } - } - } - - return { - charset: charset, - q: q, - i: i - }; -} - -function getCharsetPriority(charset, accepted, index) { - var priority = {o: -1, q: 0, s: 0}; - - for (var i = 0; i < accepted.length; i++) { - var spec = specify(charset, accepted[i], index); - - if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { - priority = spec; - } - } - - return priority; -} - -function specify(charset, spec, index) { - var s = 0; - if(spec.charset.toLowerCase() === charset.toLowerCase()){ - s |= 1; - } else if (spec.charset !== '*' ) { - return null - } - - return { - i: index, - o: spec.i, - q: spec.q, - s: s - } -} - -function preferredCharsets(accept, provided) { - // RFC 2616 sec 14.2: no header = * - var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || ''); - - if (!provided) { - // sorted list of all charsets - return accepts.filter(isQuality).sort(compareSpecs).map(function getCharset(spec) { - return spec.charset; - }); - } - - var priorities = provided.map(function getPriority(type, index) { - return getCharsetPriority(type, accepts, index); - }); - - // sorted list of accepted charsets - return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) { - return provided[priorities.indexOf(priority)]; - }); -} - -function compareSpecs(a, b) { - return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0; -} - -function isQuality(spec) { - return spec.q > 0; -} diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/encoding.js b/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/encoding.js deleted file mode 100644 index 7fed673..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/encoding.js +++ /dev/null @@ -1,118 +0,0 @@ -module.exports = preferredEncodings; -preferredEncodings.preferredEncodings = preferredEncodings; - -function parseAcceptEncoding(accept) { - var accepts = accept.split(','); - var hasIdentity = false; - var minQuality = 1; - - for (var i = 0, j = 0; i < accepts.length; i++) { - var encoding = parseEncoding(accepts[i].trim(), i); - - if (encoding) { - accepts[j++] = encoding; - hasIdentity = hasIdentity || specify('identity', encoding); - minQuality = Math.min(minQuality, encoding.q || 1); - } - } - - if (!hasIdentity) { - /* - * If identity doesn't explicitly appear in the accept-encoding header, - * it's added to the list of acceptable encoding with the lowest q - */ - accepts[j++] = { - encoding: 'identity', - q: minQuality, - i: i - }; - } - - // trim accepts - accepts.length = j; - - return accepts; -} - -function parseEncoding(s, i) { - var match = s.match(/^\s*(\S+?)\s*(?:;(.*))?$/); - - if (!match) return null; - - var encoding = match[1]; - var q = 1; - if (match[2]) { - var params = match[2].split(';'); - for (var i = 0; i < params.length; i ++) { - var p = params[i].trim().split('='); - if (p[0] === 'q') { - q = parseFloat(p[1]); - break; - } - } - } - - return { - encoding: encoding, - q: q, - i: i - }; -} - -function getEncodingPriority(encoding, accepted, index) { - var priority = {o: -1, q: 0, s: 0}; - - for (var i = 0; i < accepted.length; i++) { - var spec = specify(encoding, accepted[i], index); - - if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { - priority = spec; - } - } - - return priority; -} - -function specify(encoding, spec, index) { - var s = 0; - if(spec.encoding.toLowerCase() === encoding.toLowerCase()){ - s |= 1; - } else if (spec.encoding !== '*' ) { - return null - } - - return { - i: index, - o: spec.i, - q: spec.q, - s: s - } -}; - -function preferredEncodings(accept, provided) { - var accepts = parseAcceptEncoding(accept || ''); - - if (!provided) { - // sorted list of all encodings - return accepts.filter(isQuality).sort(compareSpecs).map(function getEncoding(spec) { - return spec.encoding; - }); - } - - var priorities = provided.map(function getPriority(type, index) { - return getEncodingPriority(type, accepts, index); - }); - - // sorted list of accepted encodings - return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) { - return provided[priorities.indexOf(priority)]; - }); -} - -function compareSpecs(a, b) { - return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0; -} - -function isQuality(spec) { - return spec.q > 0; -} diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/language.js b/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/language.js deleted file mode 100644 index ed9e1ec..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/language.js +++ /dev/null @@ -1,112 +0,0 @@ -module.exports = preferredLanguages; -preferredLanguages.preferredLanguages = preferredLanguages; - -function parseAcceptLanguage(accept) { - var accepts = accept.split(','); - - for (var i = 0, j = 0; i < accepts.length; i++) { - var langauge = parseLanguage(accepts[i].trim(), i); - - if (langauge) { - accepts[j++] = langauge; - } - } - - // trim accepts - accepts.length = j; - - return accepts; -} - -function parseLanguage(s, i) { - var match = s.match(/^\s*(\S+?)(?:-(\S+?))?\s*(?:;(.*))?$/); - if (!match) return null; - - var prefix = match[1], - suffix = match[2], - full = prefix; - - if (suffix) full += "-" + suffix; - - var q = 1; - if (match[3]) { - var params = match[3].split(';') - for (var i = 0; i < params.length; i ++) { - var p = params[i].split('='); - if (p[0] === 'q') q = parseFloat(p[1]); - } - } - - return { - prefix: prefix, - suffix: suffix, - q: q, - i: i, - full: full - }; -} - -function getLanguagePriority(language, accepted, index) { - var priority = {o: -1, q: 0, s: 0}; - - for (var i = 0; i < accepted.length; i++) { - var spec = specify(language, accepted[i], index); - - if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { - priority = spec; - } - } - - return priority; -} - -function specify(language, spec, index) { - var p = parseLanguage(language) - if (!p) return null; - var s = 0; - if(spec.full.toLowerCase() === p.full.toLowerCase()){ - s |= 4; - } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) { - s |= 2; - } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) { - s |= 1; - } else if (spec.full !== '*' ) { - return null - } - - return { - i: index, - o: spec.i, - q: spec.q, - s: s - } -}; - -function preferredLanguages(accept, provided) { - // RFC 2616 sec 14.4: no header = * - var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || ''); - - if (!provided) { - // sorted list of all languages - return accepts.filter(isQuality).sort(compareSpecs).map(function getLanguage(spec) { - return spec.full; - }); - } - - var priorities = provided.map(function getPriority(type, index) { - return getLanguagePriority(type, accepts, index); - }); - - // sorted list of accepted languages - return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) { - return provided[priorities.indexOf(priority)]; - }); -} - -function compareSpecs(a, b) { - return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0; -} - -function isQuality(spec) { - return spec.q > 0; -} diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/mediaType.js b/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/mediaType.js deleted file mode 100644 index 4170c25..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/lib/mediaType.js +++ /dev/null @@ -1,179 +0,0 @@ -/** - * negotiator - * Copyright(c) 2012 Isaac Z. Schlueter - * Copyright(c) 2014 Federico Romero - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -module.exports = preferredMediaTypes; -preferredMediaTypes.preferredMediaTypes = preferredMediaTypes; - -function parseAccept(accept) { - var accepts = splitMediaTypes(accept); - - for (var i = 0, j = 0; i < accepts.length; i++) { - var mediaType = parseMediaType(accepts[i].trim(), i); - - if (mediaType) { - accepts[j++] = mediaType; - } - } - - // trim accepts - accepts.length = j; - - return accepts; -}; - -function parseMediaType(s, i) { - var match = s.match(/\s*(\S+?)\/([^;\s]+)\s*(?:;(.*))?/); - if (!match) return null; - - var type = match[1], - subtype = match[2], - full = "" + type + "/" + subtype, - params = {}, - q = 1; - - if (match[3]) { - params = match[3].split(';').map(function(s) { - return s.trim().split('='); - }).reduce(function (set, p) { - var name = p[0].toLowerCase(); - var value = p[1]; - - set[name] = value && value[0] === '"' && value[value.length - 1] === '"' - ? value.substr(1, value.length - 2) - : value; - - return set; - }, params); - - if (params.q != null) { - q = parseFloat(params.q); - delete params.q; - } - } - - return { - type: type, - subtype: subtype, - params: params, - q: q, - i: i, - full: full - }; -} - -function getMediaTypePriority(type, accepted, index) { - var priority = {o: -1, q: 0, s: 0}; - - for (var i = 0; i < accepted.length; i++) { - var spec = specify(type, accepted[i], index); - - if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { - priority = spec; - } - } - - return priority; -} - -function specify(type, spec, index) { - var p = parseMediaType(type); - var s = 0; - - if (!p) { - return null; - } - - if(spec.type.toLowerCase() == p.type.toLowerCase()) { - s |= 4 - } else if(spec.type != '*') { - return null; - } - - if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) { - s |= 2 - } else if(spec.subtype != '*') { - return null; - } - - var keys = Object.keys(spec.params); - if (keys.length > 0) { - if (keys.every(function (k) { - return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase(); - })) { - s |= 1 - } else { - return null - } - } - - return { - i: index, - o: spec.i, - q: spec.q, - s: s, - } - -} - -function preferredMediaTypes(accept, provided) { - // RFC 2616 sec 14.2: no header = */* - var accepts = parseAccept(accept === undefined ? '*/*' : accept || ''); - - if (!provided) { - // sorted list of all types - return accepts.filter(isQuality).sort(compareSpecs).map(function getType(spec) { - return spec.full; - }); - } - - var priorities = provided.map(function getPriority(type, index) { - return getMediaTypePriority(type, accepts, index); - }); - - // sorted list of accepted types - return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) { - return provided[priorities.indexOf(priority)]; - }); -} - -function compareSpecs(a, b) { - return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0; -} - -function isQuality(spec) { - return spec.q > 0; -} - -function quoteCount(string) { - var count = 0; - var index = 0; - - while ((index = string.indexOf('"', index)) !== -1) { - count++; - index++; - } - - return count; -} - -function splitMediaTypes(accept) { - var accepts = accept.split(','); - - for (var i = 1, j = 0; i < accepts.length; i++) { - if (quoteCount(accepts[j]) % 2 == 0) { - accepts[++j] = accepts[i]; - } else { - accepts[j] += ',' + accepts[i]; - } - } - - // trim accepts - accepts.length = j + 1; - - return accepts; -} diff --git a/node_modules/express/node_modules/accepts/node_modules/negotiator/package.json b/node_modules/express/node_modules/accepts/node_modules/negotiator/package.json deleted file mode 100644 index 66d2824..0000000 --- a/node_modules/express/node_modules/accepts/node_modules/negotiator/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "name": "negotiator", - "description": "HTTP content negotiation", - "version": "0.5.3", - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "Federico Romero", - "email": "federico.romero@outboxlabs.com" - }, - { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - } - ], - "license": "MIT", - "keywords": [ - "http", - "content negotiation", - "accept", - "accept-language", - "accept-encoding", - "accept-charset" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/jshttp/negotiator.git" - }, - "devDependencies": { - "istanbul": "0.3.9", - "mocha": "~1.21.5" - }, - "files": [ - "lib/", - "HISTORY.md", - "LICENSE", - "index.js", - "README.md" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "cbb717b3f164f25820f90b160cda6d0166b9d922", - "bugs": { - "url": "https://github.com/jshttp/negotiator/issues" - }, - "homepage": "https://github.com/jshttp/negotiator", - "_id": "negotiator@0.5.3", - "_shasum": "269d5c476810ec92edbe7b6c2f28316384f9a7e8", - "_from": "negotiator@0.5.3", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "federomero", - "email": "federomero@gmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - } - ], - "dist": { - "shasum": "269d5c476810ec92edbe7b6c2f28316384f9a7e8", - "tarball": "http://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/accepts/package.json b/node_modules/express/node_modules/accepts/package.json deleted file mode 100644 index 0e32bed..0000000 --- a/node_modules/express/node_modules/accepts/package.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "name": "accepts", - "description": "Higher-level content negotiation", - "version": "1.2.11", - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - } - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/jshttp/accepts.git" - }, - "dependencies": { - "mime-types": "~2.1.3", - "negotiator": "0.5.3" - }, - "devDependencies": { - "istanbul": "0.3.17", - "mocha": "~1.21.5" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "keywords": [ - "content", - "negotiation", - "accept", - "accepts" - ], - "gitHead": "c9c8adea7bb8395089ead858fc059a38e99ac3bc", - "bugs": { - "url": "https://github.com/jshttp/accepts/issues" - }, - "homepage": "https://github.com/jshttp/accepts", - "_id": "accepts@1.2.11", - "_shasum": "d341c6e3b420489632f0f4f8d2ad4fd9ddf374e0", - "_from": "accepts@>=1.2.10 <1.3.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "federomero", - "email": "federomero@gmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - }, - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "mscdex", - "email": "mscdex@mscdex.net" - }, - { - "name": "defunctzombie", - "email": "shtylman@gmail.com" - } - ], - "dist": { - "shasum": "d341c6e3b420489632f0f4f8d2ad4fd9ddf374e0", - "tarball": "http://registry.npmjs.org/accepts/-/accepts-1.2.11.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.11.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/array-flatten/LICENSE b/node_modules/express/node_modules/array-flatten/LICENSE deleted file mode 100644 index 983fbe8..0000000 --- a/node_modules/express/node_modules/array-flatten/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/express/node_modules/array-flatten/README.md b/node_modules/express/node_modules/array-flatten/README.md deleted file mode 100644 index 91fa5b6..0000000 --- a/node_modules/express/node_modules/array-flatten/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# Array Flatten - -[![NPM version][npm-image]][npm-url] -[![NPM downloads][downloads-image]][downloads-url] -[![Build status][travis-image]][travis-url] -[![Test coverage][coveralls-image]][coveralls-url] - -> Flatten an array of nested arrays into a single flat array. Accepts an optional depth. - -## Installation - -``` -npm install array-flatten --save -``` - -## Usage - -```javascript -var flatten = require('array-flatten') - -flatten([1, [2, [3, [4, [5], 6], 7], 8], 9]) -//=> [1, 2, 3, 4, 5, 6, 7, 8, 9] - -flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2) -//=> [1, 2, 3, [4, [5], 6], 7, 8, 9] - -(function () { - flatten(arguments) //=> [1, 2, 3] -})(1, [2, 3]) -``` - -## License - -MIT - -[npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat -[npm-url]: https://npmjs.org/package/array-flatten -[downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat -[downloads-url]: https://npmjs.org/package/array-flatten -[travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat -[travis-url]: https://travis-ci.org/blakeembrey/array-flatten -[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat -[coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master diff --git a/node_modules/express/node_modules/array-flatten/array-flatten.js b/node_modules/express/node_modules/array-flatten/array-flatten.js deleted file mode 100644 index cf2fa93..0000000 --- a/node_modules/express/node_modules/array-flatten/array-flatten.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Recursive flatten function with depth. - * - * @param {Array} array - * @param {Array} result - * @param {Number} depth - * @return {Array} - */ -function flattenDepth (array, result, depth) { - for (var i = 0; i < array.length; i++) { - var value = array[i] - - if (depth > 0 && Array.isArray(value)) { - flattenDepth(value, result, depth - 1) - } else { - result.push(value) - } - } - - return result -} - -/** - * Recursive flatten function. Omitting depth is slightly faster. - * - * @param {Array} array - * @param {Array} result - * @return {Array} - */ -function flattenForever (array, result) { - for (var i = 0; i < array.length; i++) { - var value = array[i] - - if (Array.isArray(value)) { - flattenForever(value, result) - } else { - result.push(value) - } - } - - return result -} - -/** - * Flatten an array, with the ability to define a depth. - * - * @param {Array} array - * @param {Number} depth - * @return {Array} - */ -module.exports = function (array, depth) { - if (depth == null) { - return flattenForever(array, []) - } - - return flattenDepth(array, [], depth) -} diff --git a/node_modules/express/node_modules/array-flatten/package.json b/node_modules/express/node_modules/array-flatten/package.json deleted file mode 100644 index d8ecc05..0000000 --- a/node_modules/express/node_modules/array-flatten/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "array-flatten", - "version": "1.1.0", - "description": "Flatten an array of nested arrays into a single flat array", - "main": "array-flatten.js", - "files": [ - "array-flatten.js", - "LICENSE" - ], - "scripts": { - "test": "istanbul cover _mocha -- -R spec" - }, - "repository": { - "type": "git", - "url": "git://github.com/blakeembrey/array-flatten.git" - }, - "keywords": [ - "array", - "flatten", - "arguments", - "depth" - ], - "author": { - "name": "Blake Embrey", - "email": "hello@blakeembrey.com", - "url": "http://blakeembrey.me" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/blakeembrey/array-flatten/issues" - }, - "homepage": "https://github.com/blakeembrey/array-flatten", - "devDependencies": { - "istanbul": "^0.3.13", - "mocha": "^2.2.4", - "pre-commit": "^1.0.7", - "standard": "^3.7.3" - }, - "readme": "# Array Flatten\n\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Build status][travis-image]][travis-url]\n[![Test coverage][coveralls-image]][coveralls-url]\n\n> Flatten an array of nested arrays into a single flat array. Accepts an optional depth.\n\n## Installation\n\n```\nnpm install array-flatten --save\n```\n\n## Usage\n\n```javascript\nvar flatten = require('array-flatten')\n\nflatten([1, [2, [3, [4, [5], 6], 7], 8], 9])\n//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]\n\nflatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2)\n//=> [1, 2, 3, [4, [5], 6], 7, 8, 9]\n\n(function () {\n flatten(arguments) //=> [1, 2, 3]\n})(1, [2, 3])\n```\n\n## License\n\nMIT\n\n[npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat\n[npm-url]: https://npmjs.org/package/array-flatten\n[downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat\n[downloads-url]: https://npmjs.org/package/array-flatten\n[travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat\n[travis-url]: https://travis-ci.org/blakeembrey/array-flatten\n[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat\n[coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master\n", - "readmeFilename": "README.md", - "_id": "array-flatten@1.1.0", - "dist": { - "shasum": "398a1408cf23e6b1b3d5b1235cdf0f300948c5bc" - }, - "_from": "array-flatten@1.1.0", - "_resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz" -} diff --git a/node_modules/express/node_modules/cookie-signature/package.json b/node_modules/express/node_modules/cookie-signature/package.json index 28f87d0..313f3e7 100644 --- a/node_modules/express/node_modules/cookie-signature/package.json +++ b/node_modules/express/node_modules/cookie-signature/package.json @@ -14,7 +14,7 @@ "license": "MIT", "repository": { "type": "git", - "url": "git+https://github.com/visionmedia/node-cookie-signature.git" + "url": "https://github.com/visionmedia/node-cookie-signature.git" }, "dependencies": {}, "devDependencies": { @@ -54,6 +54,5 @@ "tarball": "http://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "readme": "ERROR: No README data found!" + "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" } diff --git a/node_modules/express/node_modules/cookie/LICENSE b/node_modules/express/node_modules/cookie/LICENSE index 84c7c53..0855435 100644 --- a/node_modules/express/node_modules/cookie/LICENSE +++ b/node_modules/express/node_modules/cookie/LICENSE @@ -1,23 +1,23 @@ -(The MIT License) - -Copyright (c) 2012-2014 Roman Shtylman - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - +(The MIT License) + +Copyright (c) 2012-2014 Roman Shtylman + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/node_modules/express/node_modules/cookie/README.md b/node_modules/express/node_modules/cookie/README.md index 8f59d1f..acdb5c2 100644 --- a/node_modules/express/node_modules/cookie/README.md +++ b/node_modules/express/node_modules/cookie/README.md @@ -1,64 +1,64 @@ -# cookie - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -cookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers. - -See [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies. - -## how? - -``` -npm install cookie -``` - -```javascript -var cookie = require('cookie'); - -var hdr = cookie.serialize('foo', 'bar'); -// hdr = 'foo=bar'; - -var cookies = cookie.parse('foo=bar; cat=meow; dog=ruff'); -// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' }; -``` - -## more - -The serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values. - -### path -> cookie path - -### expires -> absolute expiration date for the cookie (Date object) - -### maxAge -> relative max age of the cookie from when the client receives it (seconds) - -### domain -> domain for the cookie - -### secure -> true or false - -### httpOnly -> true or false - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/cookie.svg -[npm-url]: https://npmjs.org/package/cookie -[node-version-image]: https://img.shields.io/node/v/cookie.svg -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/cookie/master.svg -[travis-url]: https://travis-ci.org/jshttp/cookie -[coveralls-image]: https://img.shields.io/coveralls/jshttp/cookie/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/cookie?branch=master -[downloads-image]: https://img.shields.io/npm/dm/cookie.svg -[downloads-url]: https://npmjs.org/package/cookie +# cookie + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +cookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers. + +See [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies. + +## how? + +``` +npm install cookie +``` + +```javascript +var cookie = require('cookie'); + +var hdr = cookie.serialize('foo', 'bar'); +// hdr = 'foo=bar'; + +var cookies = cookie.parse('foo=bar; cat=meow; dog=ruff'); +// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' }; +``` + +## more + +The serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values. + +### path +> cookie path + +### expires +> absolute expiration date for the cookie (Date object) + +### maxAge +> relative max age of the cookie from when the client receives it (seconds) + +### domain +> domain for the cookie + +### secure +> true or false + +### httpOnly +> true or false + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/cookie.svg +[npm-url]: https://npmjs.org/package/cookie +[node-version-image]: https://img.shields.io/node/v/cookie.svg +[node-version-url]: http://nodejs.org/download/ +[travis-image]: https://img.shields.io/travis/jshttp/cookie/master.svg +[travis-url]: https://travis-ci.org/jshttp/cookie +[coveralls-image]: https://img.shields.io/coveralls/jshttp/cookie/master.svg +[coveralls-url]: https://coveralls.io/r/jshttp/cookie?branch=master +[downloads-image]: https://img.shields.io/npm/dm/cookie.svg +[downloads-url]: https://npmjs.org/package/cookie diff --git a/node_modules/express/node_modules/cookie/index.js b/node_modules/express/node_modules/cookie/index.js index 46ff287..8dea066 100644 --- a/node_modules/express/node_modules/cookie/index.js +++ b/node_modules/express/node_modules/cookie/index.js @@ -1,116 +1,116 @@ -/*! - * cookie - * Copyright(c) 2012-2014 Roman Shtylman - * MIT Licensed - */ - -/** - * Module exports. - * @public - */ - -exports.parse = parse; -exports.serialize = serialize; - -/** - * Module variables. - * @private - */ - -var decode = decodeURIComponent; -var encode = encodeURIComponent; - -/** - * Parse a cookie header. - * - * Parse the given cookie header string into an object - * The object has the various cookies as keys(names) => values - * - * @param {string} str - * @param {object} [options] - * @return {string} - * @public - */ - -function parse(str, options) { - var obj = {} - var opt = options || {}; - var pairs = str.split(/; */); - var dec = opt.decode || decode; - - pairs.forEach(function(pair) { - var eq_idx = pair.indexOf('=') - - // skip things that don't look like key=value - if (eq_idx < 0) { - return; - } - - var key = pair.substr(0, eq_idx).trim() - var val = pair.substr(++eq_idx, pair.length).trim(); - - // quoted values - if ('"' == val[0]) { - val = val.slice(1, -1); - } - - // only assign once - if (undefined == obj[key]) { - obj[key] = tryDecode(val, dec); - } - }); - - return obj; -} - -/** - * Serialize data into a cookie header. - * - * Serialize the a name value pair into a cookie string suitable for - * http headers. An optional options object specified cookie parameters. - * - * serialize('foo', 'bar', { httpOnly: true }) - * => "foo=bar; httpOnly" - * - * @param {string} name - * @param {string} val - * @param {object} [options] - * @return {string} - * @public - */ - -function serialize(name, val, options) { - var opt = options || {}; - var enc = opt.encode || encode; - var pairs = [name + '=' + enc(val)]; - - if (null != opt.maxAge) { - var maxAge = opt.maxAge - 0; - if (isNaN(maxAge)) throw new Error('maxAge should be a Number'); - pairs.push('Max-Age=' + maxAge); - } - - if (opt.domain) pairs.push('Domain=' + opt.domain); - if (opt.path) pairs.push('Path=' + opt.path); - if (opt.expires) pairs.push('Expires=' + opt.expires.toUTCString()); - if (opt.httpOnly) pairs.push('HttpOnly'); - if (opt.secure) pairs.push('Secure'); - - return pairs.join('; '); -} - -/** - * Try decoding a string using a decoding function. - * - * @param {string} str - * @param {function} decode - * @private - */ - -function tryDecode(str, decode) { - try { - return decode(str); - } catch (e) { - return str; - } -} +/*! + * cookie + * Copyright(c) 2012-2014 Roman Shtylman + * MIT Licensed + */ + +/** + * Module exports. + * @public + */ + +exports.parse = parse; +exports.serialize = serialize; + +/** + * Module variables. + * @private + */ + +var decode = decodeURIComponent; +var encode = encodeURIComponent; + +/** + * Parse a cookie header. + * + * Parse the given cookie header string into an object + * The object has the various cookies as keys(names) => values + * + * @param {string} str + * @param {object} [options] + * @return {string} + * @public + */ + +function parse(str, options) { + var obj = {} + var opt = options || {}; + var pairs = str.split(/; */); + var dec = opt.decode || decode; + + pairs.forEach(function(pair) { + var eq_idx = pair.indexOf('=') + + // skip things that don't look like key=value + if (eq_idx < 0) { + return; + } + + var key = pair.substr(0, eq_idx).trim() + var val = pair.substr(++eq_idx, pair.length).trim(); + + // quoted values + if ('"' == val[0]) { + val = val.slice(1, -1); + } + + // only assign once + if (undefined == obj[key]) { + obj[key] = tryDecode(val, dec); + } + }); + + return obj; +} + +/** + * Serialize data into a cookie header. + * + * Serialize the a name value pair into a cookie string suitable for + * http headers. An optional options object specified cookie parameters. + * + * serialize('foo', 'bar', { httpOnly: true }) + * => "foo=bar; httpOnly" + * + * @param {string} name + * @param {string} val + * @param {object} [options] + * @return {string} + * @public + */ + +function serialize(name, val, options) { + var opt = options || {}; + var enc = opt.encode || encode; + var pairs = [name + '=' + enc(val)]; + + if (null != opt.maxAge) { + var maxAge = opt.maxAge - 0; + if (isNaN(maxAge)) throw new Error('maxAge should be a Number'); + pairs.push('Max-Age=' + maxAge); + } + + if (opt.domain) pairs.push('Domain=' + opt.domain); + if (opt.path) pairs.push('Path=' + opt.path); + if (opt.expires) pairs.push('Expires=' + opt.expires.toUTCString()); + if (opt.httpOnly) pairs.push('HttpOnly'); + if (opt.secure) pairs.push('Secure'); + + return pairs.join('; '); +} + +/** + * Try decoding a string using a decoding function. + * + * @param {string} str + * @param {function} decode + * @private + */ + +function tryDecode(str, decode) { + try { + return decode(str); + } catch (e) { + return str; + } +} diff --git a/node_modules/express/node_modules/cookie/package.json b/node_modules/express/node_modules/cookie/package.json index ad80994..53a54a2 100644 --- a/node_modules/express/node_modules/cookie/package.json +++ b/node_modules/express/node_modules/cookie/package.json @@ -13,7 +13,7 @@ ], "repository": { "type": "git", - "url": "git+https://github.com/jshttp/cookie.git" + "url": "https://github.com/jshttp/cookie" }, "devDependencies": { "istanbul": "0.3.9", @@ -64,6 +64,5 @@ "tarball": "http://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "readme": "ERROR: No README data found!" + "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" } diff --git a/node_modules/express/node_modules/escape-html/package.json b/node_modules/express/node_modules/escape-html/package.json index 3385ee1..c0cda2d 100644 --- a/node_modules/express/node_modules/escape-html/package.json +++ b/node_modules/express/node_modules/escape-html/package.json @@ -10,7 +10,7 @@ ], "repository": { "type": "git", - "url": "git+https://github.com/component/escape-html.git" + "url": "https://github.com/component/escape-html" }, "files": [ "LICENSE", @@ -46,6 +46,5 @@ "tarball": "http://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", - "readme": "ERROR: No README data found!" + "_resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz" } diff --git a/node_modules/express/node_modules/finalhandler/HISTORY.md b/node_modules/express/node_modules/finalhandler/HISTORY.md deleted file mode 100644 index 26a9435..0000000 --- a/node_modules/express/node_modules/finalhandler/HISTORY.md +++ /dev/null @@ -1,90 +0,0 @@ -0.4.0 / 2015-06-14 -================== - - * Fix a false-positive when unpiping in Node.js 0.8 - * Support `statusCode` property on `Error` objects - * Use `unpipe` module for unpiping requests - * deps: escape-html@1.0.2 - * deps: on-finished@~2.3.0 - - Add defined behavior for HTTP `CONNECT` requests - - Add defined behavior for HTTP `Upgrade` requests - - deps: ee-first@1.1.1 - * perf: enable strict mode - * perf: remove argument reassignment - -0.3.6 / 2015-05-11 -================== - - * deps: debug@~2.2.0 - - deps: ms@0.7.1 - -0.3.5 / 2015-04-22 -================== - - * deps: on-finished@~2.2.1 - - Fix `isFinished(req)` when data buffered - -0.3.4 / 2015-03-15 -================== - - * deps: debug@~2.1.3 - - Fix high intensity foreground color for bold - - deps: ms@0.7.0 - -0.3.3 / 2015-01-01 -================== - - * deps: debug@~2.1.1 - * deps: on-finished@~2.2.0 - -0.3.2 / 2014-10-22 -================== - - * deps: on-finished@~2.1.1 - - Fix handling of pipelined requests - -0.3.1 / 2014-10-16 -================== - - * deps: debug@~2.1.0 - - Implement `DEBUG_FD` env variable support - -0.3.0 / 2014-09-17 -================== - - * Terminate in progress response only on error - * Use `on-finished` to determine request status - -0.2.0 / 2014-09-03 -================== - - * Set `X-Content-Type-Options: nosniff` header - * deps: debug@~2.0.0 - -0.1.0 / 2014-07-16 -================== - - * Respond after request fully read - - prevents hung responses and socket hang ups - * deps: debug@1.0.4 - -0.0.3 / 2014-07-11 -================== - - * deps: debug@1.0.3 - - Add support for multiple wildcards in namespaces - -0.0.2 / 2014-06-19 -================== - - * Handle invalid status codes - -0.0.1 / 2014-06-05 -================== - - * deps: debug@1.0.2 - -0.0.0 / 2014-06-05 -================== - - * Extracted from connect/express diff --git a/node_modules/express/node_modules/finalhandler/LICENSE b/node_modules/express/node_modules/finalhandler/LICENSE deleted file mode 100644 index b60a5ad..0000000 --- a/node_modules/express/node_modules/finalhandler/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014-2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/express/node_modules/finalhandler/README.md b/node_modules/express/node_modules/finalhandler/README.md deleted file mode 100644 index 6b171d4..0000000 --- a/node_modules/express/node_modules/finalhandler/README.md +++ /dev/null @@ -1,133 +0,0 @@ -# finalhandler - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Node.js function to invoke as the final step to respond to HTTP request. - -## Installation - -```sh -$ npm install finalhandler -``` - -## API - -```js -var finalhandler = require('finalhandler') -``` - -### finalhandler(req, res, [options]) - -Returns function to be invoked as the final step for the given `req` and `res`. -This function is to be invoked as `fn(err)`. If `err` is falsy, the handler will -write out a 404 response to the `res`. If it is truthy, an error response will -be written out to the `res`, and `res.statusCode` is set from `err.status`. - -The final handler will also unpipe anything from `req` when it is invoked. - -#### options.env - -By default, the environment is determined by `NODE_ENV` variable, but it can be -overridden by this option. - -#### options.onerror - -Provide a function to be called with the `err` when it exists. Can be used for -writing errors to a central location without excessive function generation. Called -as `onerror(err, req, res)`. - -## Examples - -### always 404 - -```js -var finalhandler = require('finalhandler') -var http = require('http') - -var server = http.createServer(function (req, res) { - var done = finalhandler(req, res) - done() -}) - -server.listen(3000) -``` - -### perform simple action - -```js -var finalhandler = require('finalhandler') -var fs = require('fs') -var http = require('http') - -var server = http.createServer(function (req, res) { - var done = finalhandler(req, res) - - fs.readFile('index.html', function (err, buf) { - if (err) return done(err) - res.setHeader('Content-Type', 'text/html') - res.end(buf) - }) -}) - -server.listen(3000) -``` - -### use with middleware-style functions - -```js -var finalhandler = require('finalhandler') -var http = require('http') -var serveStatic = require('serve-static') - -var serve = serveStatic('public') - -var server = http.createServer(function (req, res) { - var done = finalhandler(req, res) - serve(req, res, done) -}) - -server.listen(3000) -``` - -### keep log of all errors - -```js -var finalhandler = require('finalhandler') -var fs = require('fs') -var http = require('http') - -var server = http.createServer(function (req, res) { - var done = finalhandler(req, res, {onerror: logerror}) - - fs.readFile('index.html', function (err, buf) { - if (err) return done(err) - res.setHeader('Content-Type', 'text/html') - res.end(buf) - }) -}) - -server.listen(3000) - -function logerror(err) { - console.error(err.stack || err.toString()) -} -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/finalhandler.svg -[npm-url]: https://npmjs.org/package/finalhandler -[node-image]: https://img.shields.io/node/v/finalhandler.svg -[node-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/pillarjs/finalhandler.svg -[travis-url]: https://travis-ci.org/pillarjs/finalhandler -[coveralls-image]: https://img.shields.io/coveralls/pillarjs/finalhandler.svg -[coveralls-url]: https://coveralls.io/r/pillarjs/finalhandler?branch=master -[downloads-image]: https://img.shields.io/npm/dm/finalhandler.svg -[downloads-url]: https://npmjs.org/package/finalhandler diff --git a/node_modules/express/node_modules/finalhandler/index.js b/node_modules/express/node_modules/finalhandler/index.js deleted file mode 100644 index 0de7c6b..0000000 --- a/node_modules/express/node_modules/finalhandler/index.js +++ /dev/null @@ -1,151 +0,0 @@ -/*! - * finalhandler - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var debug = require('debug')('finalhandler') -var escapeHtml = require('escape-html') -var http = require('http') -var onFinished = require('on-finished') -var unpipe = require('unpipe') - -/** - * Module variables. - * @private - */ - -/* istanbul ignore next */ -var defer = typeof setImmediate === 'function' - ? setImmediate - : function(fn){ process.nextTick(fn.bind.apply(fn, arguments)) } -var isFinished = onFinished.isFinished - -/** - * Module exports. - * @public - */ - -module.exports = finalhandler - -/** - * Create a function to handle the final response. - * - * @param {Request} req - * @param {Response} res - * @param {Object} [options] - * @return {Function} - * @public - */ - -function finalhandler(req, res, options) { - var opts = options || {} - - // get environment - var env = opts.env || process.env.NODE_ENV || 'development' - - // get error callback - var onerror = opts.onerror - - return function (err) { - var status = res.statusCode - - // ignore 404 on in-flight response - if (!err && res._header) { - debug('cannot 404 after headers sent') - return - } - - // unhandled error - if (err) { - // respect err.statusCode - if (err.statusCode) { - status = err.statusCode - } - - // respect err.status - if (err.status) { - status = err.status - } - - // default status code to 500 - if (!status || status < 400) { - status = 500 - } - - // production gets a basic error message - var msg = env === 'production' - ? http.STATUS_CODES[status] - : err.stack || err.toString() - msg = escapeHtml(msg) - .replace(/\n/g, '
    ') - .replace(/ /g, '  ') + '\n' - } else { - status = 404 - msg = 'Cannot ' + escapeHtml(req.method) + ' ' + escapeHtml(req.originalUrl || req.url) + '\n' - } - - debug('default %s', status) - - // schedule onerror callback - if (err && onerror) { - defer(onerror, err, req, res) - } - - // cannot actually respond - if (res._header) { - return req.socket.destroy() - } - - send(req, res, status, msg) - } -} - -/** - * Send response. - * - * @param {IncomingMessage} req - * @param {OutgoingMessage} res - * @param {number} status - * @param {string} body - * @private - */ - -function send(req, res, status, body) { - function write() { - res.statusCode = status - - // security header for content sniffing - res.setHeader('X-Content-Type-Options', 'nosniff') - - // standard headers - res.setHeader('Content-Type', 'text/html; charset=utf-8') - res.setHeader('Content-Length', Buffer.byteLength(body, 'utf8')) - - if (req.method === 'HEAD') { - res.end() - return - } - - res.end(body, 'utf8') - } - - if (isFinished(req)) { - write() - return - } - - // unpipe everything from the request - unpipe(req) - - // flush the request - onFinished(req, write) - req.resume() -} diff --git a/node_modules/express/node_modules/finalhandler/node_modules/unpipe/HISTORY.md b/node_modules/express/node_modules/finalhandler/node_modules/unpipe/HISTORY.md deleted file mode 100644 index 85e0f8d..0000000 --- a/node_modules/express/node_modules/finalhandler/node_modules/unpipe/HISTORY.md +++ /dev/null @@ -1,4 +0,0 @@ -1.0.0 / 2015-06-14 -================== - - * Initial release diff --git a/node_modules/express/node_modules/finalhandler/node_modules/unpipe/LICENSE b/node_modules/express/node_modules/finalhandler/node_modules/unpipe/LICENSE deleted file mode 100644 index aed0138..0000000 --- a/node_modules/express/node_modules/finalhandler/node_modules/unpipe/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/express/node_modules/finalhandler/node_modules/unpipe/README.md b/node_modules/express/node_modules/finalhandler/node_modules/unpipe/README.md deleted file mode 100644 index e536ad2..0000000 --- a/node_modules/express/node_modules/finalhandler/node_modules/unpipe/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# unpipe - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Unpipe a stream from all destinations. - -## Installation - -```sh -$ npm install unpipe -``` - -## API - -```js -var unpipe = require('unpipe') -``` - -### unpipe(stream) - -Unpipes all destinations from a given stream. With stream 2+, this is -equivalent to `stream.unpipe()`. When used with streams 1 style streams -(typically Node.js 0.8 and below), this module attempts to undo the -actions done in `stream.pipe(dest)`. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/unpipe.svg -[npm-url]: https://npmjs.org/package/unpipe -[node-image]: https://img.shields.io/node/v/unpipe.svg -[node-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/stream-utils/unpipe.svg -[travis-url]: https://travis-ci.org/stream-utils/unpipe -[coveralls-image]: https://img.shields.io/coveralls/stream-utils/unpipe.svg -[coveralls-url]: https://coveralls.io/r/stream-utils/unpipe?branch=master -[downloads-image]: https://img.shields.io/npm/dm/unpipe.svg -[downloads-url]: https://npmjs.org/package/unpipe diff --git a/node_modules/express/node_modules/finalhandler/node_modules/unpipe/index.js b/node_modules/express/node_modules/finalhandler/node_modules/unpipe/index.js deleted file mode 100644 index 15c3d97..0000000 --- a/node_modules/express/node_modules/finalhandler/node_modules/unpipe/index.js +++ /dev/null @@ -1,69 +0,0 @@ -/*! - * unpipe - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - * @public - */ - -module.exports = unpipe - -/** - * Determine if there are Node.js pipe-like data listeners. - * @private - */ - -function hasPipeDataListeners(stream) { - var listeners = stream.listeners('data') - - for (var i = 0; i < listeners.length; i++) { - if (listeners[i].name === 'ondata') { - return true - } - } - - return false -} - -/** - * Unpipe a stream from all destinations. - * - * @param {object} stream - * @public - */ - -function unpipe(stream) { - if (!stream) { - throw new TypeError('argument stream is required') - } - - if (typeof stream.unpipe === 'function') { - // new-style - stream.unpipe() - return - } - - // Node.js 0.8 hack - if (!hasPipeDataListeners(stream)) { - return - } - - var listener - var listeners = stream.listeners('close') - - for (var i = 0; i < listeners.length; i++) { - listener = listeners[i] - - if (listener.name !== 'cleanup' && listener.name !== 'onclose') { - continue - } - - // invoke the listener - listener.call(stream) - } -} diff --git a/node_modules/express/node_modules/finalhandler/node_modules/unpipe/package.json b/node_modules/express/node_modules/finalhandler/node_modules/unpipe/package.json deleted file mode 100644 index 4af1b49..0000000 --- a/node_modules/express/node_modules/finalhandler/node_modules/unpipe/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "unpipe", - "description": "Unpipe a stream from all destinations", - "version": "1.0.0", - "author": { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/stream-utils/unpipe.git" - }, - "devDependencies": { - "istanbul": "0.3.15", - "mocha": "2.2.5", - "readable-stream": "1.1.13" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "README.md", - "index.js" - ], - "engines": { - "node": ">= 0.8" - }, - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "d2df901c06487430e78dca62b6edb8bb2fc5e99d", - "bugs": { - "url": "https://github.com/stream-utils/unpipe/issues" - }, - "homepage": "https://github.com/stream-utils/unpipe", - "_id": "unpipe@1.0.0", - "_shasum": "b2bf4ee8514aae6165b4817829d21b2ef49904ec", - "_from": "unpipe@>=1.0.0 <1.1.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "b2bf4ee8514aae6165b4817829d21b2ef49904ec", - "tarball": "http://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/finalhandler/package.json b/node_modules/express/node_modules/finalhandler/package.json deleted file mode 100644 index ff51a1d..0000000 --- a/node_modules/express/node_modules/finalhandler/package.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "name": "finalhandler", - "description": "Node.js final http responder", - "version": "0.4.0", - "author": { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/pillarjs/finalhandler.git" - }, - "dependencies": { - "debug": "~2.2.0", - "escape-html": "1.0.2", - "on-finished": "~2.3.0", - "unpipe": "~1.0.0" - }, - "devDependencies": { - "istanbul": "0.3.15", - "mocha": "2.2.5", - "readable-stream": "2.0.0", - "supertest": "1.0.1" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">= 0.8" - }, - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "fe4e4de9ebb0f3831493ad75119ee6ba40542853", - "bugs": { - "url": "https://github.com/pillarjs/finalhandler/issues" - }, - "homepage": "https://github.com/pillarjs/finalhandler", - "_id": "finalhandler@0.4.0", - "_shasum": "965a52d9e8d05d2b857548541fb89b53a2497d9b", - "_from": "finalhandler@0.4.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - }, - { - "name": "defunctzombie", - "email": "shtylman@gmail.com" - } - ], - "dist": { - "shasum": "965a52d9e8d05d2b857548541fb89b53a2497d9b", - "tarball": "http://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/on-finished/HISTORY.md b/node_modules/express/node_modules/on-finished/HISTORY.md deleted file mode 100644 index 98ff0e9..0000000 --- a/node_modules/express/node_modules/on-finished/HISTORY.md +++ /dev/null @@ -1,88 +0,0 @@ -2.3.0 / 2015-05-26 -================== - - * Add defined behavior for HTTP `CONNECT` requests - * Add defined behavior for HTTP `Upgrade` requests - * deps: ee-first@1.1.1 - -2.2.1 / 2015-04-22 -================== - - * Fix `isFinished(req)` when data buffered - -2.2.0 / 2014-12-22 -================== - - * Add message object to callback arguments - -2.1.1 / 2014-10-22 -================== - - * Fix handling of pipelined requests - -2.1.0 / 2014-08-16 -================== - - * Check if `socket` is detached - * Return `undefined` for `isFinished` if state unknown - -2.0.0 / 2014-08-16 -================== - - * Add `isFinished` function - * Move to `jshttp` organization - * Remove support for plain socket argument - * Rename to `on-finished` - * Support both `req` and `res` as arguments - * deps: ee-first@1.0.5 - -1.2.2 / 2014-06-10 -================== - - * Reduce listeners added to emitters - - avoids "event emitter leak" warnings when used multiple times on same request - -1.2.1 / 2014-06-08 -================== - - * Fix returned value when already finished - -1.2.0 / 2014-06-05 -================== - - * Call callback when called on already-finished socket - -1.1.4 / 2014-05-27 -================== - - * Support node.js 0.8 - -1.1.3 / 2014-04-30 -================== - - * Make sure errors passed as instanceof `Error` - -1.1.2 / 2014-04-18 -================== - - * Default the `socket` to passed-in object - -1.1.1 / 2014-01-16 -================== - - * Rename module to `finished` - -1.1.0 / 2013-12-25 -================== - - * Call callback when called on already-errored socket - -1.0.1 / 2013-12-20 -================== - - * Actually pass the error to the callback - -1.0.0 / 2013-12-20 -================== - - * Initial release diff --git a/node_modules/express/node_modules/on-finished/LICENSE b/node_modules/express/node_modules/on-finished/LICENSE deleted file mode 100644 index 5931fd2..0000000 --- a/node_modules/express/node_modules/on-finished/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2013 Jonathan Ong -Copyright (c) 2014 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/express/node_modules/on-finished/README.md b/node_modules/express/node_modules/on-finished/README.md deleted file mode 100644 index a0e1157..0000000 --- a/node_modules/express/node_modules/on-finished/README.md +++ /dev/null @@ -1,154 +0,0 @@ -# on-finished - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Execute a callback when a HTTP request closes, finishes, or errors. - -## Install - -```sh -$ npm install on-finished -``` - -## API - -```js -var onFinished = require('on-finished') -``` - -### onFinished(res, listener) - -Attach a listener to listen for the response to finish. The listener will -be invoked only once when the response finished. If the response finished -to an error, the first argument will contain the error. If the response -has already finished, the listener will be invoked. - -Listening to the end of a response would be used to close things associated -with the response, like open files. - -Listener is invoked as `listener(err, res)`. - -```js -onFinished(res, function (err, res) { - // clean up open fds, etc. - // err contains the error is request error'd -}) -``` - -### onFinished(req, listener) - -Attach a listener to listen for the request to finish. The listener will -be invoked only once when the request finished. If the request finished -to an error, the first argument will contain the error. If the request -has already finished, the listener will be invoked. - -Listening to the end of a request would be used to know when to continue -after reading the data. - -Listener is invoked as `listener(err, req)`. - -```js -var data = '' - -req.setEncoding('utf8') -res.on('data', function (str) { - data += str -}) - -onFinished(req, function (err, req) { - // data is read unless there is err -}) -``` - -### onFinished.isFinished(res) - -Determine if `res` is already finished. This would be useful to check and -not even start certain operations if the response has already finished. - -### onFinished.isFinished(req) - -Determine if `req` is already finished. This would be useful to check and -not even start certain operations if the request has already finished. - -## Special Node.js requests - -### HTTP CONNECT method - -The meaning of the `CONNECT` method from RFC 7231, section 4.3.6: - -> The CONNECT method requests that the recipient establish a tunnel to -> the destination origin server identified by the request-target and, -> if successful, thereafter restrict its behavior to blind forwarding -> of packets, in both directions, until the tunnel is closed. Tunnels -> are commonly used to create an end-to-end virtual connection, through -> one or more proxies, which can then be secured using TLS (Transport -> Layer Security, [RFC5246]). - -In Node.js, these request objects come from the `'connect'` event on -the HTTP server. - -When this module is used on a HTTP `CONNECT` request, the request is -considered "finished" immediately, **due to limitations in the Node.js -interface**. This means if the `CONNECT` request contains a request entity, -the request will be considered "finished" even before it has been read. - -There is no such thing as a response object to a `CONNECT` request in -Node.js, so there is no support for for one. - -### HTTP Upgrade request - -The meaning of the `Upgrade` header from RFC 7230, section 6.1: - -> The "Upgrade" header field is intended to provide a simple mechanism -> for transitioning from HTTP/1.1 to some other protocol on the same -> connection. - -In Node.js, these request objects come from the `'upgrade'` event on -the HTTP server. - -When this module is used on a HTTP request with an `Upgrade` header, the -request is considered "finished" immediately, **due to limitations in the -Node.js interface**. This means if the `Upgrade` request contains a request -entity, the request will be considered "finished" even before it has been -read. - -There is no such thing as a response object to a `Upgrade` request in -Node.js, so there is no support for for one. - -## Example - -The following code ensures that file descriptors are always closed -once the response finishes. - -```js -var destroy = require('destroy') -var http = require('http') -var onFinished = require('on-finished') - -http.createServer(function onRequest(req, res) { - var stream = fs.createReadStream('package.json') - stream.pipe(res) - onFinished(res, function (err) { - destroy(stream) - }) -}) -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/on-finished.svg -[npm-url]: https://npmjs.org/package/on-finished -[node-version-image]: https://img.shields.io/node/v/on-finished.svg -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/on-finished/master.svg -[travis-url]: https://travis-ci.org/jshttp/on-finished -[coveralls-image]: https://img.shields.io/coveralls/jshttp/on-finished/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/on-finished?branch=master -[downloads-image]: https://img.shields.io/npm/dm/on-finished.svg -[downloads-url]: https://npmjs.org/package/on-finished diff --git a/node_modules/express/node_modules/on-finished/index.js b/node_modules/express/node_modules/on-finished/index.js deleted file mode 100644 index 9abd98f..0000000 --- a/node_modules/express/node_modules/on-finished/index.js +++ /dev/null @@ -1,196 +0,0 @@ -/*! - * on-finished - * Copyright(c) 2013 Jonathan Ong - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - * @public - */ - -module.exports = onFinished -module.exports.isFinished = isFinished - -/** - * Module dependencies. - * @private - */ - -var first = require('ee-first') - -/** - * Variables. - * @private - */ - -/* istanbul ignore next */ -var defer = typeof setImmediate === 'function' - ? setImmediate - : function(fn){ process.nextTick(fn.bind.apply(fn, arguments)) } - -/** - * Invoke callback when the response has finished, useful for - * cleaning up resources afterwards. - * - * @param {object} msg - * @param {function} listener - * @return {object} - * @public - */ - -function onFinished(msg, listener) { - if (isFinished(msg) !== false) { - defer(listener, null, msg) - return msg - } - - // attach the listener to the message - attachListener(msg, listener) - - return msg -} - -/** - * Determine if message is already finished. - * - * @param {object} msg - * @return {boolean} - * @public - */ - -function isFinished(msg) { - var socket = msg.socket - - if (typeof msg.finished === 'boolean') { - // OutgoingMessage - return Boolean(msg.finished || (socket && !socket.writable)) - } - - if (typeof msg.complete === 'boolean') { - // IncomingMessage - return Boolean(msg.upgrade || !socket || !socket.readable || (msg.complete && !msg.readable)) - } - - // don't know - return undefined -} - -/** - * Attach a finished listener to the message. - * - * @param {object} msg - * @param {function} callback - * @private - */ - -function attachFinishedListener(msg, callback) { - var eeMsg - var eeSocket - var finished = false - - function onFinish(error) { - eeMsg.cancel() - eeSocket.cancel() - - finished = true - callback(error) - } - - // finished on first message event - eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish) - - function onSocket(socket) { - // remove listener - msg.removeListener('socket', onSocket) - - if (finished) return - if (eeMsg !== eeSocket) return - - // finished on first socket event - eeSocket = first([[socket, 'error', 'close']], onFinish) - } - - if (msg.socket) { - // socket already assigned - onSocket(msg.socket) - return - } - - // wait for socket to be assigned - msg.on('socket', onSocket) - - if (msg.socket === undefined) { - // node.js 0.8 patch - patchAssignSocket(msg, onSocket) - } -} - -/** - * Attach the listener to the message. - * - * @param {object} msg - * @return {function} - * @private - */ - -function attachListener(msg, listener) { - var attached = msg.__onFinished - - // create a private single listener with queue - if (!attached || !attached.queue) { - attached = msg.__onFinished = createListener(msg) - attachFinishedListener(msg, attached) - } - - attached.queue.push(listener) -} - -/** - * Create listener on message. - * - * @param {object} msg - * @return {function} - * @private - */ - -function createListener(msg) { - function listener(err) { - if (msg.__onFinished === listener) msg.__onFinished = null - if (!listener.queue) return - - var queue = listener.queue - listener.queue = null - - for (var i = 0; i < queue.length; i++) { - queue[i](err, msg) - } - } - - listener.queue = [] - - return listener -} - -/** - * Patch ServerResponse.prototype.assignSocket for node.js 0.8. - * - * @param {ServerResponse} res - * @param {function} callback - * @private - */ - -function patchAssignSocket(res, callback) { - var assignSocket = res.assignSocket - - if (typeof assignSocket !== 'function') return - - // res.on('socket', callback) is broken in 0.8 - res.assignSocket = function _assignSocket(socket) { - assignSocket.call(this, socket) - callback(socket) - } -} diff --git a/node_modules/express/node_modules/on-finished/node_modules/ee-first/LICENSE b/node_modules/express/node_modules/on-finished/node_modules/ee-first/LICENSE deleted file mode 100644 index a7ae8ee..0000000 --- a/node_modules/express/node_modules/on-finished/node_modules/ee-first/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2014 Jonathan Ong me@jongleberry.com - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/express/node_modules/on-finished/node_modules/ee-first/README.md b/node_modules/express/node_modules/on-finished/node_modules/ee-first/README.md deleted file mode 100644 index cbd2478..0000000 --- a/node_modules/express/node_modules/on-finished/node_modules/ee-first/README.md +++ /dev/null @@ -1,80 +0,0 @@ -# EE First - -[![NPM version][npm-image]][npm-url] -[![Build status][travis-image]][travis-url] -[![Test coverage][coveralls-image]][coveralls-url] -[![License][license-image]][license-url] -[![Downloads][downloads-image]][downloads-url] -[![Gittip][gittip-image]][gittip-url] - -Get the first event in a set of event emitters and event pairs, -then clean up after itself. - -## Install - -```sh -$ npm install ee-first -``` - -## API - -```js -var first = require('ee-first') -``` - -### first(arr, listener) - -Invoke `listener` on the first event from the list specified in `arr`. `arr` is -an array of arrays, with each array in the format `[ee, ...event]`. `listener` -will be called only once, the first time any of the given events are emitted. If -`error` is one of the listened events, then if that fires first, the `listener` -will be given the `err` argument. - -The `listener` is invoked as `listener(err, ee, event, args)`, where `err` is the -first argument emitted from an `error` event, if applicable; `ee` is the event -emitter that fired; `event` is the string event name that fired; and `args` is an -array of the arguments that were emitted on the event. - -```js -var ee1 = new EventEmitter() -var ee2 = new EventEmitter() - -first([ - [ee1, 'close', 'end', 'error'], - [ee2, 'error'] -], function (err, ee, event, args) { - // listener invoked -}) -``` - -#### .cancel() - -The group of listeners can be cancelled before being invoked and have all the event -listeners removed from the underlying event emitters. - -```js -var thunk = first([ - [ee1, 'close', 'end', 'error'], - [ee2, 'error'] -], function (err, ee, event, args) { - // listener invoked -}) - -// cancel and clean up -thunk.cancel() -``` - -[npm-image]: https://img.shields.io/npm/v/ee-first.svg?style=flat-square -[npm-url]: https://npmjs.org/package/ee-first -[github-tag]: http://img.shields.io/github/tag/jonathanong/ee-first.svg?style=flat-square -[github-url]: https://github.com/jonathanong/ee-first/tags -[travis-image]: https://img.shields.io/travis/jonathanong/ee-first.svg?style=flat-square -[travis-url]: https://travis-ci.org/jonathanong/ee-first -[coveralls-image]: https://img.shields.io/coveralls/jonathanong/ee-first.svg?style=flat-square -[coveralls-url]: https://coveralls.io/r/jonathanong/ee-first?branch=master -[license-image]: http://img.shields.io/npm/l/ee-first.svg?style=flat-square -[license-url]: LICENSE.md -[downloads-image]: http://img.shields.io/npm/dm/ee-first.svg?style=flat-square -[downloads-url]: https://npmjs.org/package/ee-first -[gittip-image]: https://img.shields.io/gittip/jonathanong.svg?style=flat-square -[gittip-url]: https://www.gittip.com/jonathanong/ diff --git a/node_modules/express/node_modules/on-finished/node_modules/ee-first/index.js b/node_modules/express/node_modules/on-finished/node_modules/ee-first/index.js deleted file mode 100644 index 501287c..0000000 --- a/node_modules/express/node_modules/on-finished/node_modules/ee-first/index.js +++ /dev/null @@ -1,95 +0,0 @@ -/*! - * ee-first - * Copyright(c) 2014 Jonathan Ong - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - * @public - */ - -module.exports = first - -/** - * Get the first event in a set of event emitters and event pairs. - * - * @param {array} stuff - * @param {function} done - * @public - */ - -function first(stuff, done) { - if (!Array.isArray(stuff)) - throw new TypeError('arg must be an array of [ee, events...] arrays') - - var cleanups = [] - - for (var i = 0; i < stuff.length; i++) { - var arr = stuff[i] - - if (!Array.isArray(arr) || arr.length < 2) - throw new TypeError('each array member must be [ee, events...]') - - var ee = arr[0] - - for (var j = 1; j < arr.length; j++) { - var event = arr[j] - var fn = listener(event, callback) - - // listen to the event - ee.on(event, fn) - // push this listener to the list of cleanups - cleanups.push({ - ee: ee, - event: event, - fn: fn, - }) - } - } - - function callback() { - cleanup() - done.apply(null, arguments) - } - - function cleanup() { - var x - for (var i = 0; i < cleanups.length; i++) { - x = cleanups[i] - x.ee.removeListener(x.event, x.fn) - } - } - - function thunk(fn) { - done = fn - } - - thunk.cancel = cleanup - - return thunk -} - -/** - * Create the event listener. - * @private - */ - -function listener(event, done) { - return function onevent(arg1) { - var args = new Array(arguments.length) - var ee = this - var err = event === 'error' - ? arg1 - : null - - // copy args to prevent arguments escaping scope - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - - done(err, ee, event, args) - } -} diff --git a/node_modules/express/node_modules/on-finished/node_modules/ee-first/package.json b/node_modules/express/node_modules/on-finished/node_modules/ee-first/package.json deleted file mode 100644 index 1d223fb..0000000 --- a/node_modules/express/node_modules/on-finished/node_modules/ee-first/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "ee-first", - "description": "return the first event in a set of ee/event pairs", - "version": "1.1.1", - "author": { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - } - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/jonathanong/ee-first.git" - }, - "devDependencies": { - "istanbul": "0.3.9", - "mocha": "2.2.5" - }, - "files": [ - "index.js", - "LICENSE" - ], - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "512e0ce4cc3643f603708f965a97b61b1a9c0441", - "bugs": { - "url": "https://github.com/jonathanong/ee-first/issues" - }, - "homepage": "https://github.com/jonathanong/ee-first", - "_id": "ee-first@1.1.1", - "_shasum": "590c61156b0ae2f4f0255732a158b266bc56b21d", - "_from": "ee-first@1.1.1", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "590c61156b0ae2f4f0255732a158b266bc56b21d", - "tarball": "http://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/on-finished/package.json b/node_modules/express/node_modules/on-finished/package.json deleted file mode 100644 index 7b2ebdd..0000000 --- a/node_modules/express/node_modules/on-finished/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "on-finished", - "description": "Execute a callback when a request closes, finishes, or errors", - "version": "2.3.0", - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - } - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/jshttp/on-finished.git" - }, - "dependencies": { - "ee-first": "1.1.1" - }, - "devDependencies": { - "istanbul": "0.3.9", - "mocha": "2.2.5" - }, - "engines": { - "node": ">= 0.8" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "34babcb58126a416fcf5205768204f2e12699dda", - "bugs": { - "url": "https://github.com/jshttp/on-finished/issues" - }, - "homepage": "https://github.com/jshttp/on-finished", - "_id": "on-finished@2.3.0", - "_shasum": "20f1336481b083cd75337992a16971aa2d906947", - "_from": "on-finished@>=2.3.0 <2.4.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - } - ], - "dist": { - "shasum": "20f1336481b083cd75337992a16971aa2d906947", - "tarball": "http://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/path-to-regexp/LICENSE b/node_modules/express/node_modules/path-to-regexp/LICENSE deleted file mode 100644 index 983fbe8..0000000 --- a/node_modules/express/node_modules/path-to-regexp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/express/node_modules/path-to-regexp/Readme.md b/node_modules/express/node_modules/path-to-regexp/Readme.md deleted file mode 100644 index 9ad6976..0000000 --- a/node_modules/express/node_modules/path-to-regexp/Readme.md +++ /dev/null @@ -1,35 +0,0 @@ -# Path-to-RegExp - -Turn an Express-style path string such as `/user/:name` into a regular expression. - -**Note:** This is a legacy branch. You should upgrade to `1.x`. If you find you are stuck on this version, your code will need to take into account the `index` property on the keys. - -## Usage - -```javascript -var pathToRegexp = require('path-to-regexp'); -``` - -### pathToRegexp(path, keys, options) - - - **path** A string in the express format, an array of such strings, or a regular expression - - **keys** An array to be populated with the keys present in the url. Once the function completes, this will be an array of strings. - - **options** - - **options.sensitive** Defaults to false, set this to true to make routes case sensitive - - **options.strict** Defaults to false, set this to true to make the trailing slash matter. - - **options.end** Defaults to true, set this to false to only match the prefix of the URL. - -```javascript -var keys = []; -var exp = pathToRegexp('/foo/:bar', keys); -//keys = ['bar'] -//exp = /^\/foo\/(?:([^\/]+?))\/?$/i -``` - -## Live Demo - -You can see a live demo of this library in use at [express-route-tester](http://forbeslindesay.github.com/express-route-tester/). - -## License - - MIT diff --git a/node_modules/express/node_modules/path-to-regexp/index.js b/node_modules/express/node_modules/path-to-regexp/index.js deleted file mode 100644 index 1c8d697..0000000 --- a/node_modules/express/node_modules/path-to-regexp/index.js +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Expose `pathtoRegexp`. - */ - -module.exports = pathtoRegexp; - -/** - * Match matching groups in a regular expression. - */ -var MATCHING_GROUP_REGEXP = /\((?!\?)/g; - -/** - * Normalize the given path string, - * returning a regular expression. - * - * An empty array should be passed, - * which will contain the placeholder - * key names. For example "/user/:id" will - * then contain ["id"]. - * - * @param {String|RegExp|Array} path - * @param {Array} keys - * @param {Object} options - * @return {RegExp} - * @api private - */ - -function pathtoRegexp(path, keys, options) { - options = options || {}; - keys = keys || []; - var strict = options.strict; - var end = options.end !== false; - var flags = options.sensitive ? '' : 'i'; - var extraOffset = 0; - var keysOffset = keys.length; - var i = 0; - var name = 0; - var m; - - if (path instanceof RegExp) { - while (m = MATCHING_GROUP_REGEXP.exec(path.source)) { - keys.push({ - name: name++, - optional: false, - offset: m.index - }); - } - - return path; - } - - if (Array.isArray(path)) { - // Map array parts into regexps and return their source. We also pass - // the same keys and options instance into every generation to get - // consistent matching groups before we join the sources together. - path = path.map(function (value) { - return pathtoRegexp(value, keys, options).source; - }); - - return new RegExp('(?:' + path.join('|') + ')', flags); - } - - path = ('^' + path + (strict ? '' : path[path.length - 1] === '/' ? '?' : '/?')) - .replace(/\/\(/g, '/(?:') - .replace(/([\/\.])/g, '\\$1') - .replace(/(\\\/)?(\\\.)?:(\w+)(\(.*?\))?(\*)?(\?)?/g, function (match, slash, format, key, capture, star, optional, offset) { - slash = slash || ''; - format = format || ''; - capture = capture || '([^\\/' + format + ']+?)'; - optional = optional || ''; - - keys.push({ - name: key, - optional: !!optional, - offset: offset + extraOffset - }); - - var result = '' - + (optional ? '' : slash) - + '(?:' - + format + (optional ? slash : '') + capture - + (star ? '((?:[\\/' + format + '].+?)?)' : '') - + ')' - + optional; - - extraOffset += result.length - match.length; - - return result; - }) - .replace(/\*/g, function (star, index) { - var len = keys.length - - while (len-- > keysOffset && keys[len].offset > index) { - keys[len].offset += 3; - } - - return '(.*)'; - }); - - // This is a workaround for handling unnamed matching groups. - while (m = MATCHING_GROUP_REGEXP.exec(path)) { - if (keysOffset + i === keys.length || keys[keysOffset + i].offset > m.index) { - keys.splice(keysOffset + i, 0, { - name: name++, // Unnamed matching groups must be consistently linear. - optional: false, - offset: m.index - }); - } - - i++; - } - - // If the path is non-ending, match until the end or a slash. - path += (end ? '$' : (path[path.length - 1] === '/' ? '' : '(?=\\/|$)')); - - return new RegExp(path, flags); -}; diff --git a/node_modules/express/node_modules/path-to-regexp/package.json b/node_modules/express/node_modules/path-to-regexp/package.json deleted file mode 100644 index 898d48f..0000000 --- a/node_modules/express/node_modules/path-to-regexp/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "path-to-regexp", - "description": "Express style path to RegExp utility", - "version": "0.1.6", - "files": [ - "index.js", - "LICENSE" - ], - "scripts": { - "test": "istanbul cover _mocha -- -R spec" - }, - "keywords": [ - "express", - "regexp" - ], - "component": { - "scripts": { - "path-to-regexp": "index.js" - } - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/component/path-to-regexp.git" - }, - "devDependencies": { - "mocha": "^1.17.1", - "istanbul": "^0.2.6" - }, - "readme": "# Path-to-RegExp\n\nTurn an Express-style path string such as `/user/:name` into a regular expression.\n\n**Note:** This is a legacy branch. You should upgrade to `1.x`. If you find you are stuck on this version, your code will need to take into account the `index` property on the keys.\n\n## Usage\n\n```javascript\nvar pathToRegexp = require('path-to-regexp');\n```\n\n### pathToRegexp(path, keys, options)\n\n - **path** A string in the express format, an array of such strings, or a regular expression\n - **keys** An array to be populated with the keys present in the url. Once the function completes, this will be an array of strings.\n - **options**\n - **options.sensitive** Defaults to false, set this to true to make routes case sensitive\n - **options.strict** Defaults to false, set this to true to make the trailing slash matter.\n - **options.end** Defaults to true, set this to false to only match the prefix of the URL.\n\n```javascript\nvar keys = [];\nvar exp = pathToRegexp('/foo/:bar', keys);\n//keys = ['bar']\n//exp = /^\\/foo\\/(?:([^\\/]+?))\\/?$/i\n```\n\n## Live Demo\n\nYou can see a live demo of this library in use at [express-route-tester](http://forbeslindesay.github.com/express-route-tester/).\n\n## License\n\n MIT\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/component/path-to-regexp/issues" - }, - "homepage": "https://github.com/component/path-to-regexp", - "_id": "path-to-regexp@0.1.6", - "dist": { - "shasum": "03340d11b9f9f3dcd2c506635652eb1cee8d05e4" - }, - "_from": "path-to-regexp@0.1.6", - "_resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz" -} diff --git a/node_modules/express/node_modules/qs/.eslintignore b/node_modules/express/node_modules/qs/.eslintignore deleted file mode 100644 index 1521c8b..0000000 --- a/node_modules/express/node_modules/qs/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -dist diff --git a/node_modules/express/node_modules/qs/.npmignore b/node_modules/express/node_modules/qs/.npmignore deleted file mode 100644 index 2abba8d..0000000 --- a/node_modules/express/node_modules/qs/.npmignore +++ /dev/null @@ -1,19 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov -complexity.md -dist diff --git a/node_modules/express/node_modules/qs/.travis.yml b/node_modules/express/node_modules/qs/.travis.yml deleted file mode 100644 index f502178..0000000 --- a/node_modules/express/node_modules/qs/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js - -node_js: - - 0.10 - - 0.12 - - iojs diff --git a/node_modules/express/node_modules/qs/CHANGELOG.md b/node_modules/express/node_modules/qs/CHANGELOG.md deleted file mode 100644 index 1fadc78..0000000 --- a/node_modules/express/node_modules/qs/CHANGELOG.md +++ /dev/null @@ -1,88 +0,0 @@ - -## [**3.1.0**](https://github.com/hapijs/qs/issues?milestone=24&state=open) -- [**#89**](https://github.com/hapijs/qs/issues/89) Add option to disable "Transform dot notation to bracket notation" - -## [**3.0.0**](https://github.com/hapijs/qs/issues?milestone=23&state=closed) -- [**#77**](https://github.com/hapijs/qs/issues/77) Perf boost -- [**#60**](https://github.com/hapijs/qs/issues/60) Add explicit option to disable array parsing -- [**#80**](https://github.com/hapijs/qs/issues/80) qs.parse silently drops properties -- [**#74**](https://github.com/hapijs/qs/issues/74) Bad parse when turning array into object -- [**#81**](https://github.com/hapijs/qs/issues/81) Add a `filter` option -- [**#68**](https://github.com/hapijs/qs/issues/68) Fixed issue with recursion and passing strings into objects. -- [**#66**](https://github.com/hapijs/qs/issues/66) Add mixed array and object dot notation support Closes: #47 -- [**#76**](https://github.com/hapijs/qs/issues/76) RFC 3986 -- [**#85**](https://github.com/hapijs/qs/issues/85) No equal sign -- [**#84**](https://github.com/hapijs/qs/issues/84) update license attribute - -## [**2.4.1**](https://github.com/hapijs/qs/issues?milestone=20&state=closed) -- [**#73**](https://github.com/hapijs/qs/issues/73) Property 'hasOwnProperty' of object # is not a function - -## [**2.4.0**](https://github.com/hapijs/qs/issues?milestone=19&state=closed) -- [**#70**](https://github.com/hapijs/qs/issues/70) Add arrayFormat option - -## [**2.3.3**](https://github.com/hapijs/qs/issues?milestone=18&state=closed) -- [**#59**](https://github.com/hapijs/qs/issues/59) make sure array indexes are >= 0, closes #57 -- [**#58**](https://github.com/hapijs/qs/issues/58) make qs usable for browser loader - -## [**2.3.2**](https://github.com/hapijs/qs/issues?milestone=17&state=closed) -- [**#55**](https://github.com/hapijs/qs/issues/55) allow merging a string into an object - -## [**2.3.1**](https://github.com/hapijs/qs/issues?milestone=16&state=closed) -- [**#52**](https://github.com/hapijs/qs/issues/52) Return "undefined" and "false" instead of throwing "TypeError". - -## [**2.3.0**](https://github.com/hapijs/qs/issues?milestone=15&state=closed) -- [**#50**](https://github.com/hapijs/qs/issues/50) add option to omit array indices, closes #46 - -## [**2.2.5**](https://github.com/hapijs/qs/issues?milestone=14&state=closed) -- [**#39**](https://github.com/hapijs/qs/issues/39) Is there an alternative to Buffer.isBuffer? -- [**#49**](https://github.com/hapijs/qs/issues/49) refactor utils.merge, fixes #45 -- [**#41**](https://github.com/hapijs/qs/issues/41) avoid browserifying Buffer, for #39 - -## [**2.2.4**](https://github.com/hapijs/qs/issues?milestone=13&state=closed) -- [**#38**](https://github.com/hapijs/qs/issues/38) how to handle object keys beginning with a number - -## [**2.2.3**](https://github.com/hapijs/qs/issues?milestone=12&state=closed) -- [**#37**](https://github.com/hapijs/qs/issues/37) parser discards first empty value in array -- [**#36**](https://github.com/hapijs/qs/issues/36) Update to lab 4.x - -## [**2.2.2**](https://github.com/hapijs/qs/issues?milestone=11&state=closed) -- [**#33**](https://github.com/hapijs/qs/issues/33) Error when plain object in a value -- [**#34**](https://github.com/hapijs/qs/issues/34) use Object.prototype.hasOwnProperty.call instead of obj.hasOwnProperty -- [**#24**](https://github.com/hapijs/qs/issues/24) Changelog? Semver? - -## [**2.2.1**](https://github.com/hapijs/qs/issues?milestone=10&state=closed) -- [**#32**](https://github.com/hapijs/qs/issues/32) account for circular references properly, closes #31 -- [**#31**](https://github.com/hapijs/qs/issues/31) qs.parse stackoverflow on circular objects - -## [**2.2.0**](https://github.com/hapijs/qs/issues?milestone=9&state=closed) -- [**#26**](https://github.com/hapijs/qs/issues/26) Don't use Buffer global if it's not present -- [**#30**](https://github.com/hapijs/qs/issues/30) Bug when merging non-object values into arrays -- [**#29**](https://github.com/hapijs/qs/issues/29) Don't call Utils.clone at the top of Utils.merge -- [**#23**](https://github.com/hapijs/qs/issues/23) Ability to not limit parameters? - -## [**2.1.0**](https://github.com/hapijs/qs/issues?milestone=8&state=closed) -- [**#22**](https://github.com/hapijs/qs/issues/22) Enable using a RegExp as delimiter - -## [**2.0.0**](https://github.com/hapijs/qs/issues?milestone=7&state=closed) -- [**#18**](https://github.com/hapijs/qs/issues/18) Why is there arrayLimit? -- [**#20**](https://github.com/hapijs/qs/issues/20) Configurable parametersLimit -- [**#21**](https://github.com/hapijs/qs/issues/21) make all limits optional, for #18, for #20 - -## [**1.2.2**](https://github.com/hapijs/qs/issues?milestone=6&state=closed) -- [**#19**](https://github.com/hapijs/qs/issues/19) Don't overwrite null values - -## [**1.2.1**](https://github.com/hapijs/qs/issues?milestone=5&state=closed) -- [**#16**](https://github.com/hapijs/qs/issues/16) ignore non-string delimiters -- [**#15**](https://github.com/hapijs/qs/issues/15) Close code block - -## [**1.2.0**](https://github.com/hapijs/qs/issues?milestone=4&state=closed) -- [**#12**](https://github.com/hapijs/qs/issues/12) Add optional delim argument -- [**#13**](https://github.com/hapijs/qs/issues/13) fix #11: flattened keys in array are now correctly parsed - -## [**1.1.0**](https://github.com/hapijs/qs/issues?milestone=3&state=closed) -- [**#7**](https://github.com/hapijs/qs/issues/7) Empty values of a POST array disappear after being submitted -- [**#9**](https://github.com/hapijs/qs/issues/9) Should not omit equals signs (=) when value is null -- [**#6**](https://github.com/hapijs/qs/issues/6) Minor grammar fix in README - -## [**1.0.2**](https://github.com/hapijs/qs/issues?milestone=2&state=closed) -- [**#5**](https://github.com/hapijs/qs/issues/5) array holes incorrectly copied into object on large index diff --git a/node_modules/express/node_modules/qs/CONTRIBUTING.md b/node_modules/express/node_modules/qs/CONTRIBUTING.md deleted file mode 100644 index 8928361..0000000 --- a/node_modules/express/node_modules/qs/CONTRIBUTING.md +++ /dev/null @@ -1 +0,0 @@ -Please view our [hapijs contributing guide](https://github.com/hapijs/hapi/blob/master/CONTRIBUTING.md). diff --git a/node_modules/express/node_modules/qs/LICENSE b/node_modules/express/node_modules/qs/LICENSE deleted file mode 100644 index d456948..0000000 --- a/node_modules/express/node_modules/qs/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2014 Nathan LaFreniere and other contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * The names of any contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - * * * - -The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors diff --git a/node_modules/express/node_modules/qs/README.md b/node_modules/express/node_modules/qs/README.md deleted file mode 100644 index 48a0de9..0000000 --- a/node_modules/express/node_modules/qs/README.md +++ /dev/null @@ -1,317 +0,0 @@ -# qs - -A querystring parsing and stringifying library with some added security. - -[![Build Status](https://secure.travis-ci.org/hapijs/qs.svg)](http://travis-ci.org/hapijs/qs) - -Lead Maintainer: [Nathan LaFreniere](https://github.com/nlf) - -The **qs** module was originally created and maintained by [TJ Holowaychuk](https://github.com/visionmedia/node-querystring). - -## Usage - -```javascript -var Qs = require('qs'); - -var obj = Qs.parse('a=c'); // { a: 'c' } -var str = Qs.stringify(obj); // 'a=c' -``` - -### Parsing Objects - -```javascript -Qs.parse(string, [options]); -``` - -**qs** allows you to create nested objects within your query strings, by surrounding the name of sub-keys with square brackets `[]`, or prefixing the sub-key with a dot `.`. -For example, the string `'foo[bar]=baz'` converts to: - -```javascript -{ - foo: { - bar: 'baz' - } -} -``` - -When using the `plainObjects` option the parsed value is returned as a plain object, created via `Object.create(null)` and as such you should be aware that prototype methods will not exist on it and a user may set those names to whatever value they like: - -```javascript -Qs.parse('a.hasOwnProperty=b', { plainObjects: true }); -// { a: { hasOwnProperty: 'b' } } -``` - -By default parameters that would overwrite properties on the object prototype are ignored, if you wish to keep the data from those fields either use `plainObjects` as mentioned above, or set `allowPrototypes` to `true` which will allow user input to overwrite those properties. *WARNING* It is generally a bad idea to enable this option as it can cause problems when attempting to use the properties that have been overwritten. Always be careful with this option. - -```javascript -Qs.parse('a.hasOwnProperty=b', { allowPrototypes: true }); -// { a: { hasOwnProperty: 'b' } } -``` - -URI encoded strings work too: - -```javascript -Qs.parse('a%5Bb%5D=c'); -// { a: { b: 'c' } } -``` - -You can also nest your objects, like `'foo[bar][baz]=foobarbaz'`: - -```javascript -{ - foo: { - bar: { - baz: 'foobarbaz' - } - } -} -``` - -By default, when nesting objects **qs** will only parse up to 5 children deep. This means if you attempt to parse a string like -`'a[b][c][d][e][f][g][h][i]=j'` your resulting object will be: - -```javascript -{ - a: { - b: { - c: { - d: { - e: { - f: { - '[g][h][i]': 'j' - } - } - } - } - } - } -} -``` - -This depth can be overridden by passing a `depth` option to `Qs.parse(string, [options])`: - -```javascript -Qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); -// { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } } -``` - -The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number. - -For similar reasons, by default **qs** will only parse up to 1000 parameters. This can be overridden by passing a `parameterLimit` option: - -```javascript -Qs.parse('a=b&c=d', { parameterLimit: 1 }); -// { a: 'b' } -``` - -An optional delimiter can also be passed: - -```javascript -Qs.parse('a=b;c=d', { delimiter: ';' }); -// { a: 'b', c: 'd' } -``` - -Delimiters can be a regular expression too: - -```javascript -Qs.parse('a=b;c=d,e=f', { delimiter: /[;,]/ }); -// { a: 'b', c: 'd', e: 'f' } -``` - -Option `allowDots` can be used to disable dot notation: - -```javascript -Qs.parse('a.b=c', { allowDots: false }); -// { 'a.b': 'c' } } -``` - -### Parsing Arrays - -**qs** can also parse arrays using a similar `[]` notation: - -```javascript -Qs.parse('a[]=b&a[]=c'); -// { a: ['b', 'c'] } -``` - -You may specify an index as well: - -```javascript -Qs.parse('a[1]=c&a[0]=b'); -// { a: ['b', 'c'] } -``` - -Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number -to create an array. When creating arrays with specific indices, **qs** will compact a sparse array to only the existing values preserving -their order: - -```javascript -Qs.parse('a[1]=b&a[15]=c'); -// { a: ['b', 'c'] } -``` - -Note that an empty string is also a value, and will be preserved: - -```javascript -Qs.parse('a[]=&a[]=b'); -// { a: ['', 'b'] } -Qs.parse('a[0]=b&a[1]=&a[2]=c'); -// { a: ['b', '', 'c'] } -``` - -**qs** will also limit specifying indices in an array to a maximum index of `20`. Any array members with an index of greater than `20` will -instead be converted to an object with the index as the key: - -```javascript -Qs.parse('a[100]=b'); -// { a: { '100': 'b' } } -``` - -This limit can be overridden by passing an `arrayLimit` option: - -```javascript -Qs.parse('a[1]=b', { arrayLimit: 0 }); -// { a: { '1': 'b' } } -``` - -To disable array parsing entirely, set `parseArrays` to `false`. - -```javascript -Qs.parse('a[]=b', { parseArrays: false }); -// { a: { '0': 'b' } } -``` - -If you mix notations, **qs** will merge the two items into an object: - -```javascript -Qs.parse('a[0]=b&a[b]=c'); -// { a: { '0': 'b', b: 'c' } } -``` - -You can also create arrays of objects: - -```javascript -Qs.parse('a[][b]=c'); -// { a: [{ b: 'c' }] } -``` - -### Stringifying - -```javascript -Qs.stringify(object, [options]); -``` - -When stringifying, **qs** always URI encodes output. Objects are stringified as you would expect: - -```javascript -Qs.stringify({ a: 'b' }); -// 'a=b' -Qs.stringify({ a: { b: 'c' } }); -// 'a%5Bb%5D=c' -``` - -Examples beyond this point will be shown as though the output is not URI encoded for clarity. Please note that the return values in these cases *will* be URI encoded during real usage. - -When arrays are stringified, by default they are given explicit indices: - -```javascript -Qs.stringify({ a: ['b', 'c', 'd'] }); -// 'a[0]=b&a[1]=c&a[2]=d' -``` - -You may override this by setting the `indices` option to `false`: - -```javascript -Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }); -// 'a=b&a=c&a=d' -``` - -You may use the `arrayFormat` option to specify the format of the output array - -```javascript -Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }) -// 'a[0]=b&a[1]=c' -Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }) -// 'a[]=b&a[]=c' -Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }) -// 'a=b&a=c' -``` - -Empty strings and null values will omit the value, but the equals sign (=) remains in place: - -```javascript -Qs.stringify({ a: '' }); -// 'a=' -``` - -Properties that are set to `undefined` will be omitted entirely: - -```javascript -Qs.stringify({ a: null, b: undefined }); -// 'a=' -``` - -The delimiter may be overridden with stringify as well: - -```javascript -Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }); -// 'a=b;c=d' -``` - -Finally, you can use the `filter` option to restrict which keys will be included in the stringified output. -If you pass a function, it will be called for each key to obtain the replacement value. Otherwise, if you -pass an array, it will be used to select properties and array indices for stringification: - -```javascript -function filterFunc(prefix, value) { - if (prefix == 'b') { - // Return an `undefined` value to omit a property. - return; - } - if (prefix == 'e[f]') { - return value.getTime(); - } - if (prefix == 'e[g][0]') { - return value * 2; - } - return value; -} -Qs.stringify({ a: 'b', c: 'd', e: { f: new Date(123), g: [2] } }, { filter: filterFunc }) -// 'a=b&c=d&e[f]=123&e[g][0]=4' -Qs.stringify({ a: 'b', c: 'd', e: 'f' }, { filter: ['a', 'e'] }) -// 'a=b&e=f' -Qs.stringify({ a: ['b', 'c', 'd'], e: 'f' }, { filter: ['a', 0, 2] }) -// 'a[0]=b&a[2]=d' -``` - -### Handling of `null` values - -By default, `null` values are treated like empty strings: - -```javascript -Qs.stringify({ a: null, b: '' }); -// 'a=&b=' -``` - -Parsing does not distinguish between parameters with and without equal signs. Both are converted to empty strings. - -```javascript -Qs.parse('a&b=') -// { a: '', b: '' } -``` - -To distinguish between `null` values and empty strings use the `strictNullHandling` flag. In the result string the `null` -values have no `=` sign: - -```javascript -Qs.stringify({ a: null, b: '' }, { strictNullHandling: true }); -// 'a&b=' -``` - -To parse values without `=` back to `null` use the `strictNullHandling` flag: - -```javascript -Qs.parse('a&b=', { strictNullHandling: true }); -// { a: null, b: '' } - -``` diff --git a/node_modules/express/node_modules/qs/bower.json b/node_modules/express/node_modules/qs/bower.json deleted file mode 100644 index ffd0641..0000000 --- a/node_modules/express/node_modules/qs/bower.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "qs", - "main": "dist/qs.js", - "version": "3.0.0", - "homepage": "https://github.com/hapijs/qs", - "authors": [ - "Nathan LaFreniere " - ], - "description": "A querystring parser that supports nesting and arrays, with a depth limit", - "keywords": [ - "querystring", - "qs" - ], - "license": "BSD-3-Clause", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/node_modules/express/node_modules/qs/lib/index.js b/node_modules/express/node_modules/qs/lib/index.js deleted file mode 100644 index 0e09493..0000000 --- a/node_modules/express/node_modules/qs/lib/index.js +++ /dev/null @@ -1,15 +0,0 @@ -// Load modules - -var Stringify = require('./stringify'); -var Parse = require('./parse'); - - -// Declare internals - -var internals = {}; - - -module.exports = { - stringify: Stringify, - parse: Parse -}; diff --git a/node_modules/express/node_modules/qs/lib/parse.js b/node_modules/express/node_modules/qs/lib/parse.js deleted file mode 100644 index e7c56c5..0000000 --- a/node_modules/express/node_modules/qs/lib/parse.js +++ /dev/null @@ -1,186 +0,0 @@ -// Load modules - -var Utils = require('./utils'); - - -// Declare internals - -var internals = { - delimiter: '&', - depth: 5, - arrayLimit: 20, - parameterLimit: 1000, - strictNullHandling: false, - plainObjects: false, - allowPrototypes: false -}; - - -internals.parseValues = function (str, options) { - - var obj = {}; - var parts = str.split(options.delimiter, options.parameterLimit === Infinity ? undefined : options.parameterLimit); - - for (var i = 0, il = parts.length; i < il; ++i) { - var part = parts[i]; - var pos = part.indexOf(']=') === -1 ? part.indexOf('=') : part.indexOf(']=') + 1; - - if (pos === -1) { - obj[Utils.decode(part)] = ''; - - if (options.strictNullHandling) { - obj[Utils.decode(part)] = null; - } - } - else { - var key = Utils.decode(part.slice(0, pos)); - var val = Utils.decode(part.slice(pos + 1)); - - if (!Object.prototype.hasOwnProperty.call(obj, key)) { - obj[key] = val; - } - else { - obj[key] = [].concat(obj[key]).concat(val); - } - } - } - - return obj; -}; - - -internals.parseObject = function (chain, val, options) { - - if (!chain.length) { - return val; - } - - var root = chain.shift(); - - var obj; - if (root === '[]') { - obj = []; - obj = obj.concat(internals.parseObject(chain, val, options)); - } - else { - obj = options.plainObjects ? Object.create(null) : {}; - var cleanRoot = root[0] === '[' && root[root.length - 1] === ']' ? root.slice(1, root.length - 1) : root; - var index = parseInt(cleanRoot, 10); - var indexString = '' + index; - if (!isNaN(index) && - root !== cleanRoot && - indexString === cleanRoot && - index >= 0 && - (options.parseArrays && - index <= options.arrayLimit)) { - - obj = []; - obj[index] = internals.parseObject(chain, val, options); - } - else { - obj[cleanRoot] = internals.parseObject(chain, val, options); - } - } - - return obj; -}; - - -internals.parseKeys = function (key, val, options) { - - if (!key) { - return; - } - - // Transform dot notation to bracket notation - - if (options.allowDots) { - key = key.replace(/\.([^\.\[]+)/g, '[$1]'); - } - - // The regex chunks - - var parent = /^([^\[\]]*)/; - var child = /(\[[^\[\]]*\])/g; - - // Get the parent - - var segment = parent.exec(key); - - // Stash the parent if it exists - - var keys = []; - if (segment[1]) { - // If we aren't using plain objects, optionally prefix keys - // that would overwrite object prototype properties - if (!options.plainObjects && - Object.prototype.hasOwnProperty(segment[1])) { - - if (!options.allowPrototypes) { - return; - } - } - - keys.push(segment[1]); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while ((segment = child.exec(key)) !== null && i < options.depth) { - - ++i; - if (!options.plainObjects && - Object.prototype.hasOwnProperty(segment[1].replace(/\[|\]/g, ''))) { - - if (!options.allowPrototypes) { - continue; - } - } - keys.push(segment[1]); - } - - // If there's a remainder, just add whatever is left - - if (segment) { - keys.push('[' + key.slice(segment.index) + ']'); - } - - return internals.parseObject(keys, val, options); -}; - - -module.exports = function (str, options) { - - options = options || {}; - options.delimiter = typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter : internals.delimiter; - options.depth = typeof options.depth === 'number' ? options.depth : internals.depth; - options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : internals.arrayLimit; - options.parseArrays = options.parseArrays !== false; - options.allowDots = options.allowDots !== false; - options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : internals.plainObjects; - options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : internals.allowPrototypes; - options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : internals.parameterLimit; - options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling; - - if (str === '' || - str === null || - typeof str === 'undefined') { - - return options.plainObjects ? Object.create(null) : {}; - } - - var tempObj = typeof str === 'string' ? internals.parseValues(str, options) : str; - var obj = options.plainObjects ? Object.create(null) : {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0, il = keys.length; i < il; ++i) { - var key = keys[i]; - var newObj = internals.parseKeys(key, tempObj[key], options); - obj = Utils.merge(obj, newObj, options); - } - - return Utils.compact(obj); -}; diff --git a/node_modules/express/node_modules/qs/lib/stringify.js b/node_modules/express/node_modules/qs/lib/stringify.js deleted file mode 100644 index 7414284..0000000 --- a/node_modules/express/node_modules/qs/lib/stringify.js +++ /dev/null @@ -1,121 +0,0 @@ -// Load modules - -var Utils = require('./utils'); - - -// Declare internals - -var internals = { - delimiter: '&', - arrayPrefixGenerators: { - brackets: function (prefix, key) { - - return prefix + '[]'; - }, - indices: function (prefix, key) { - - return prefix + '[' + key + ']'; - }, - repeat: function (prefix, key) { - - return prefix; - } - }, - strictNullHandling: false -}; - - -internals.stringify = function (obj, prefix, generateArrayPrefix, strictNullHandling, filter) { - - if (typeof filter === 'function') { - obj = filter(prefix, obj); - } - else if (Utils.isBuffer(obj)) { - obj = obj.toString(); - } - else if (obj instanceof Date) { - obj = obj.toISOString(); - } - else if (obj === null) { - if (strictNullHandling) { - return Utils.encode(prefix); - } - - obj = ''; - } - - if (typeof obj === 'string' || - typeof obj === 'number' || - typeof obj === 'boolean') { - - return [Utils.encode(prefix) + '=' + Utils.encode(obj)]; - } - - var values = []; - - if (typeof obj === 'undefined') { - return values; - } - - var objKeys = Array.isArray(filter) ? filter : Object.keys(obj); - for (var i = 0, il = objKeys.length; i < il; ++i) { - var key = objKeys[i]; - - if (Array.isArray(obj)) { - values = values.concat(internals.stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, strictNullHandling, filter)); - } - else { - values = values.concat(internals.stringify(obj[key], prefix + '[' + key + ']', generateArrayPrefix, strictNullHandling, filter)); - } - } - - return values; -}; - - -module.exports = function (obj, options) { - - options = options || {}; - var delimiter = typeof options.delimiter === 'undefined' ? internals.delimiter : options.delimiter; - var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling; - var objKeys; - var filter; - if (typeof options.filter === 'function') { - filter = options.filter; - obj = filter('', obj); - } - else if (Array.isArray(options.filter)) { - objKeys = filter = options.filter; - } - - var keys = []; - - if (typeof obj !== 'object' || - obj === null) { - - return ''; - } - - var arrayFormat; - if (options.arrayFormat in internals.arrayPrefixGenerators) { - arrayFormat = options.arrayFormat; - } - else if ('indices' in options) { - arrayFormat = options.indices ? 'indices' : 'repeat'; - } - else { - arrayFormat = 'indices'; - } - - var generateArrayPrefix = internals.arrayPrefixGenerators[arrayFormat]; - - if (!objKeys) { - objKeys = Object.keys(obj); - } - for (var i = 0, il = objKeys.length; i < il; ++i) { - var key = objKeys[i]; - keys = keys.concat(internals.stringify(obj[key], key, generateArrayPrefix, strictNullHandling, filter)); - } - - return keys.join(delimiter); -}; diff --git a/node_modules/express/node_modules/qs/lib/utils.js b/node_modules/express/node_modules/qs/lib/utils.js deleted file mode 100644 index 88f3147..0000000 --- a/node_modules/express/node_modules/qs/lib/utils.js +++ /dev/null @@ -1,190 +0,0 @@ -// Load modules - - -// Declare internals - -var internals = {}; -internals.hexTable = new Array(256); -for (var h = 0; h < 256; ++h) { - internals.hexTable[h] = '%' + ((h < 16 ? '0' : '') + h.toString(16)).toUpperCase(); -} - - -exports.arrayToObject = function (source, options) { - - var obj = options.plainObjects ? Object.create(null) : {}; - for (var i = 0, il = source.length; i < il; ++i) { - if (typeof source[i] !== 'undefined') { - - obj[i] = source[i]; - } - } - - return obj; -}; - - -exports.merge = function (target, source, options) { - - if (!source) { - return target; - } - - if (typeof source !== 'object') { - if (Array.isArray(target)) { - target.push(source); - } - else if (typeof target === 'object') { - target[source] = true; - } - else { - target = [target, source]; - } - - return target; - } - - if (typeof target !== 'object') { - target = [target].concat(source); - return target; - } - - if (Array.isArray(target) && - !Array.isArray(source)) { - - target = exports.arrayToObject(target, options); - } - - var keys = Object.keys(source); - for (var k = 0, kl = keys.length; k < kl; ++k) { - var key = keys[k]; - var value = source[key]; - - if (!Object.prototype.hasOwnProperty.call(target, key)) { - target[key] = value; - } - else { - target[key] = exports.merge(target[key], value, options); - } - } - - return target; -}; - - -exports.decode = function (str) { - - try { - return decodeURIComponent(str.replace(/\+/g, ' ')); - } catch (e) { - return str; - } -}; - -exports.encode = function (str) { - - // This code was originally written by Brian White (mscdex) for the io.js core querystring library. - // It has been adapted here for stricter adherence to RFC 3986 - if (str.length === 0) { - return str; - } - - if (typeof str !== 'string') { - str = '' + str; - } - - var out = ''; - for (var i = 0, il = str.length; i < il; ++i) { - var c = str.charCodeAt(i); - - if (c === 0x2D || // - - c === 0x2E || // . - c === 0x5F || // _ - c === 0x7E || // ~ - (c >= 0x30 && c <= 0x39) || // 0-9 - (c >= 0x41 && c <= 0x5A) || // a-z - (c >= 0x61 && c <= 0x7A)) { // A-Z - - out += str[i]; - continue; - } - - if (c < 0x80) { - out += internals.hexTable[c]; - continue; - } - - if (c < 0x800) { - out += internals.hexTable[0xC0 | (c >> 6)] + internals.hexTable[0x80 | (c & 0x3F)]; - continue; - } - - if (c < 0xD800 || c >= 0xE000) { - out += internals.hexTable[0xE0 | (c >> 12)] + internals.hexTable[0x80 | ((c >> 6) & 0x3F)] + internals.hexTable[0x80 | (c & 0x3F)]; - continue; - } - - ++i; - c = 0x10000 + (((c & 0x3FF) << 10) | (str.charCodeAt(i) & 0x3FF)); - out += internals.hexTable[0xF0 | (c >> 18)] + internals.hexTable[0x80 | ((c >> 12) & 0x3F)] + internals.hexTable[0x80 | ((c >> 6) & 0x3F)] + internals.hexTable[0x80 | (c & 0x3F)]; - } - - return out; -}; - -exports.compact = function (obj, refs) { - - if (typeof obj !== 'object' || - obj === null) { - - return obj; - } - - refs = refs || []; - var lookup = refs.indexOf(obj); - if (lookup !== -1) { - return refs[lookup]; - } - - refs.push(obj); - - if (Array.isArray(obj)) { - var compacted = []; - - for (var i = 0, il = obj.length; i < il; ++i) { - if (typeof obj[i] !== 'undefined') { - compacted.push(obj[i]); - } - } - - return compacted; - } - - var keys = Object.keys(obj); - for (i = 0, il = keys.length; i < il; ++i) { - var key = keys[i]; - obj[key] = exports.compact(obj[key], refs); - } - - return obj; -}; - - -exports.isRegExp = function (obj) { - - return Object.prototype.toString.call(obj) === '[object RegExp]'; -}; - - -exports.isBuffer = function (obj) { - - if (obj === null || - typeof obj === 'undefined') { - - return false; - } - - return !!(obj.constructor && - obj.constructor.isBuffer && - obj.constructor.isBuffer(obj)); -}; diff --git a/node_modules/express/node_modules/qs/package.json b/node_modules/express/node_modules/qs/package.json deleted file mode 100644 index 1bae0ed..0000000 --- a/node_modules/express/node_modules/qs/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "qs", - "version": "4.0.0", - "description": "A querystring parser that supports nesting and arrays, with a depth limit", - "homepage": "https://github.com/hapijs/qs", - "main": "lib/index.js", - "dependencies": {}, - "devDependencies": { - "browserify": "^10.2.1", - "code": "1.x.x", - "lab": "5.x.x" - }, - "scripts": { - "test": "lab -a code -t 100 -L", - "test-cov-html": "lab -a code -r html -o coverage.html", - "dist": "browserify --standalone Qs lib/index.js > dist/qs.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/hapijs/qs.git" - }, - "keywords": [ - "querystring", - "qs" - ], - "license": "BSD-3-Clause", - "gitHead": "e573dd08eae6cce30d2202704691a102dfa3782a", - "bugs": { - "url": "https://github.com/hapijs/qs/issues" - }, - "_id": "qs@4.0.0", - "_shasum": "c31d9b74ec27df75e543a86c78728ed8d4623607", - "_from": "qs@4.0.0", - "_npmVersion": "2.12.0", - "_nodeVersion": "0.12.4", - "_npmUser": { - "name": "nlf", - "email": "quitlahok@gmail.com" - }, - "dist": { - "shasum": "c31d9b74ec27df75e543a86c78728ed8d4623607", - "tarball": "http://registry.npmjs.org/qs/-/qs-4.0.0.tgz" - }, - "maintainers": [ - { - "name": "nlf", - "email": "quitlahok@gmail.com" - }, - { - "name": "hueniverse", - "email": "eran@hueniverse.com" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/qs/test/parse.js b/node_modules/express/node_modules/qs/test/parse.js deleted file mode 100644 index a19d764..0000000 --- a/node_modules/express/node_modules/qs/test/parse.js +++ /dev/null @@ -1,478 +0,0 @@ -/* eslint no-extend-native:0 */ -// Load modules - -var Code = require('code'); -var Lab = require('lab'); -var Qs = require('../'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var lab = exports.lab = Lab.script(); -var expect = Code.expect; -var describe = lab.experiment; -var it = lab.test; - - -describe('parse()', function () { - - it('parses a simple string', function (done) { - - expect(Qs.parse('0=foo')).to.deep.equal({ '0': 'foo' }); - expect(Qs.parse('foo=c++')).to.deep.equal({ foo: 'c ' }); - expect(Qs.parse('a[>=]=23')).to.deep.equal({ a: { '>=': '23' } }); - expect(Qs.parse('a[<=>]==23')).to.deep.equal({ a: { '<=>': '=23' } }); - expect(Qs.parse('a[==]=23')).to.deep.equal({ a: { '==': '23' } }); - expect(Qs.parse('foo', { strictNullHandling: true })).to.deep.equal({ foo: null }); - expect(Qs.parse('foo' )).to.deep.equal({ foo: '' }); - expect(Qs.parse('foo=')).to.deep.equal({ foo: '' }); - expect(Qs.parse('foo=bar')).to.deep.equal({ foo: 'bar' }); - expect(Qs.parse(' foo = bar = baz ')).to.deep.equal({ ' foo ': ' bar = baz ' }); - expect(Qs.parse('foo=bar=baz')).to.deep.equal({ foo: 'bar=baz' }); - expect(Qs.parse('foo=bar&bar=baz')).to.deep.equal({ foo: 'bar', bar: 'baz' }); - expect(Qs.parse('foo2=bar2&baz2=')).to.deep.equal({ foo2: 'bar2', baz2: '' }); - expect(Qs.parse('foo=bar&baz', { strictNullHandling: true })).to.deep.equal({ foo: 'bar', baz: null }); - expect(Qs.parse('foo=bar&baz')).to.deep.equal({ foo: 'bar', baz: '' }); - expect(Qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World')).to.deep.equal({ - cht: 'p3', - chd: 't:60,40', - chs: '250x100', - chl: 'Hello|World' - }); - done(); - }); - - it('allows disabling dot notation', function (done) { - - expect(Qs.parse('a.b=c')).to.deep.equal({ a: { b: 'c' } }); - expect(Qs.parse('a.b=c', { allowDots: false })).to.deep.equal({ 'a.b': 'c' }); - done(); - }); - - it('parses a single nested string', function (done) { - - expect(Qs.parse('a[b]=c')).to.deep.equal({ a: { b: 'c' } }); - done(); - }); - - it('parses a double nested string', function (done) { - - expect(Qs.parse('a[b][c]=d')).to.deep.equal({ a: { b: { c: 'd' } } }); - done(); - }); - - it('defaults to a depth of 5', function (done) { - - expect(Qs.parse('a[b][c][d][e][f][g][h]=i')).to.deep.equal({ a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } }); - done(); - }); - - it('only parses one level when depth = 1', function (done) { - - expect(Qs.parse('a[b][c]=d', { depth: 1 })).to.deep.equal({ a: { b: { '[c]': 'd' } } }); - expect(Qs.parse('a[b][c][d]=e', { depth: 1 })).to.deep.equal({ a: { b: { '[c][d]': 'e' } } }); - done(); - }); - - it('parses a simple array', function (done) { - - expect(Qs.parse('a=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - done(); - }); - - it('parses an explicit array', function (done) { - - expect(Qs.parse('a[]=b')).to.deep.equal({ a: ['b'] }); - expect(Qs.parse('a[]=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[]=b&a[]=c&a[]=d')).to.deep.equal({ a: ['b', 'c', 'd'] }); - done(); - }); - - it('parses a mix of simple and explicit arrays', function (done) { - - expect(Qs.parse('a=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[0]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a=b&a[0]=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[1]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a=b&a[1]=c')).to.deep.equal({ a: ['b', 'c'] }); - done(); - }); - - it('parses a nested array', function (done) { - - expect(Qs.parse('a[b][]=c&a[b][]=d')).to.deep.equal({ a: { b: ['c', 'd'] } }); - expect(Qs.parse('a[>=]=25')).to.deep.equal({ a: { '>=': '25' } }); - done(); - }); - - it('allows to specify array indices', function (done) { - - expect(Qs.parse('a[1]=c&a[0]=b&a[2]=d')).to.deep.equal({ a: ['b', 'c', 'd'] }); - expect(Qs.parse('a[1]=c&a[0]=b')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[1]=c')).to.deep.equal({ a: ['c'] }); - done(); - }); - - it('limits specific array indices to 20', function (done) { - - expect(Qs.parse('a[20]=a')).to.deep.equal({ a: ['a'] }); - expect(Qs.parse('a[21]=a')).to.deep.equal({ a: { '21': 'a' } }); - done(); - }); - - it('supports keys that begin with a number', function (done) { - - expect(Qs.parse('a[12b]=c')).to.deep.equal({ a: { '12b': 'c' } }); - done(); - }); - - it('supports encoded = signs', function (done) { - - expect(Qs.parse('he%3Dllo=th%3Dere')).to.deep.equal({ 'he=llo': 'th=ere' }); - done(); - }); - - it('is ok with url encoded strings', function (done) { - - expect(Qs.parse('a[b%20c]=d')).to.deep.equal({ a: { 'b c': 'd' } }); - expect(Qs.parse('a[b]=c%20d')).to.deep.equal({ a: { b: 'c d' } }); - done(); - }); - - it('allows brackets in the value', function (done) { - - expect(Qs.parse('pets=["tobi"]')).to.deep.equal({ pets: '["tobi"]' }); - expect(Qs.parse('operators=[">=", "<="]')).to.deep.equal({ operators: '[">=", "<="]' }); - done(); - }); - - it('allows empty values', function (done) { - - expect(Qs.parse('')).to.deep.equal({}); - expect(Qs.parse(null)).to.deep.equal({}); - expect(Qs.parse(undefined)).to.deep.equal({}); - done(); - }); - - it('transforms arrays to objects', function (done) { - - expect(Qs.parse('foo[0]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }); - expect(Qs.parse('foo[bad]=baz&foo[0]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }); - expect(Qs.parse('foo[bad]=baz&foo[]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }); - expect(Qs.parse('foo[]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }); - expect(Qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar', '1': 'foo' } }); - expect(Qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb')).to.deep.equal({ foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] }); - expect(Qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c')).to.deep.equal({ a: { '0': 'b', t: 'u', c: true } }); - expect(Qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y')).to.deep.equal({ a: { '0': 'b', '1': 'c', x: 'y' } }); - done(); - }); - - it('transforms arrays to objects (dot notation)', function (done) { - - expect(Qs.parse('foo[0].baz=bar&fool.bad=baz')).to.deep.equal({ foo: [{ baz: 'bar' }], fool: { bad: 'baz' } }); - expect(Qs.parse('foo[0].baz=bar&fool.bad.boo=baz')).to.deep.equal({ foo: [{ baz: 'bar' }], fool: { bad: { boo: 'baz' } } }); - expect(Qs.parse('foo[0][0].baz=bar&fool.bad=baz')).to.deep.equal({ foo: [[{ baz: 'bar' }]], fool: { bad: 'baz' } }); - expect(Qs.parse('foo[0].baz[0]=15&foo[0].bar=2')).to.deep.equal({ foo: [{ baz: ['15'], bar: '2' }] }); - expect(Qs.parse('foo[0].baz[0]=15&foo[0].baz[1]=16&foo[0].bar=2')).to.deep.equal({ foo: [{ baz: ['15', '16'], bar: '2' }] }); - expect(Qs.parse('foo.bad=baz&foo[0]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }); - expect(Qs.parse('foo.bad=baz&foo[]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }); - expect(Qs.parse('foo[]=bar&foo.bad=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }); - expect(Qs.parse('foo.bad=baz&foo[]=bar&foo[]=foo')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar', '1': 'foo' } }); - expect(Qs.parse('foo[0].a=a&foo[0].b=b&foo[1].a=aa&foo[1].b=bb')).to.deep.equal({ foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] }); - done(); - }); - - it('can add keys to objects', function (done) { - - expect(Qs.parse('a[b]=c&a=d')).to.deep.equal({ a: { b: 'c', d: true } }); - done(); - }); - - it('correctly prunes undefined values when converting an array to an object', function (done) { - - expect(Qs.parse('a[2]=b&a[99999999]=c')).to.deep.equal({ a: { '2': 'b', '99999999': 'c' } }); - done(); - }); - - it('supports malformed uri characters', function (done) { - - expect(Qs.parse('{%:%}', { strictNullHandling: true })).to.deep.equal({ '{%:%}': null }); - expect(Qs.parse('{%:%}=')).to.deep.equal({ '{%:%}': '' }); - expect(Qs.parse('foo=%:%}')).to.deep.equal({ foo: '%:%}' }); - done(); - }); - - it('doesn\'t produce empty keys', function (done) { - - expect(Qs.parse('_r=1&')).to.deep.equal({ '_r': '1' }); - done(); - }); - - it('cannot access Object prototype', function (done) { - - Qs.parse('constructor[prototype][bad]=bad'); - Qs.parse('bad[constructor][prototype][bad]=bad'); - expect(typeof Object.prototype.bad).to.equal('undefined'); - done(); - }); - - it('parses arrays of objects', function (done) { - - expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }); - expect(Qs.parse('a[0][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }); - done(); - }); - - it('allows for empty strings in arrays', function (done) { - - expect(Qs.parse('a[]=b&a[]=&a[]=c')).to.deep.equal({ a: ['b', '', 'c'] }); - expect(Qs.parse('a[0]=b&a[1]&a[2]=c&a[19]=', { strictNullHandling: true })).to.deep.equal({ a: ['b', null, 'c', ''] }); - expect(Qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]', { strictNullHandling: true })).to.deep.equal({ a: ['b', '', 'c', null] }); - expect(Qs.parse('a[]=&a[]=b&a[]=c')).to.deep.equal({ a: ['', 'b', 'c'] }); - done(); - }); - - it('compacts sparse arrays', function (done) { - - expect(Qs.parse('a[10]=1&a[2]=2')).to.deep.equal({ a: ['2', '1'] }); - done(); - }); - - it('parses semi-parsed strings', function (done) { - - expect(Qs.parse({ 'a[b]': 'c' })).to.deep.equal({ a: { b: 'c' } }); - expect(Qs.parse({ 'a[b]': 'c', 'a[d]': 'e' })).to.deep.equal({ a: { b: 'c', d: 'e' } }); - done(); - }); - - it('parses buffers correctly', function (done) { - - var b = new Buffer('test'); - expect(Qs.parse({ a: b })).to.deep.equal({ a: b }); - done(); - }); - - it('continues parsing when no parent is found', function (done) { - - expect(Qs.parse('[]=&a=b')).to.deep.equal({ '0': '', a: 'b' }); - expect(Qs.parse('[]&a=b', { strictNullHandling: true })).to.deep.equal({ '0': null, a: 'b' }); - expect(Qs.parse('[foo]=bar')).to.deep.equal({ foo: 'bar' }); - done(); - }); - - it('does not error when parsing a very long array', function (done) { - - var str = 'a[]=a'; - while (Buffer.byteLength(str) < 128 * 1024) { - str += '&' + str; - } - - expect(function () { - - Qs.parse(str); - }).to.not.throw(); - - done(); - }); - - it('should not throw when a native prototype has an enumerable property', { parallel: false }, function (done) { - - Object.prototype.crash = ''; - Array.prototype.crash = ''; - expect(Qs.parse.bind(null, 'a=b')).to.not.throw(); - expect(Qs.parse('a=b')).to.deep.equal({ a: 'b' }); - expect(Qs.parse.bind(null, 'a[][b]=c')).to.not.throw(); - expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }); - delete Object.prototype.crash; - delete Array.prototype.crash; - done(); - }); - - it('parses a string with an alternative string delimiter', function (done) { - - expect(Qs.parse('a=b;c=d', { delimiter: ';' })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('parses a string with an alternative RegExp delimiter', function (done) { - - expect(Qs.parse('a=b; c=d', { delimiter: /[;,] */ })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('does not use non-splittable objects as delimiters', function (done) { - - expect(Qs.parse('a=b&c=d', { delimiter: true })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('allows overriding parameter limit', function (done) { - - expect(Qs.parse('a=b&c=d', { parameterLimit: 1 })).to.deep.equal({ a: 'b' }); - done(); - }); - - it('allows setting the parameter limit to Infinity', function (done) { - - expect(Qs.parse('a=b&c=d', { parameterLimit: Infinity })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('allows overriding array limit', function (done) { - - expect(Qs.parse('a[0]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '0': 'b' } }); - expect(Qs.parse('a[-1]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '-1': 'b' } }); - expect(Qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 })).to.deep.equal({ a: { '0': 'b', '1': 'c' } }); - done(); - }); - - it('allows disabling array parsing', function (done) { - - expect(Qs.parse('a[0]=b&a[1]=c', { parseArrays: false })).to.deep.equal({ a: { '0': 'b', '1': 'c' } }); - done(); - }); - - it('parses an object', function (done) { - - var input = { - 'user[name]': { 'pop[bob]': 3 }, - 'user[email]': null - }; - - var expected = { - 'user': { - 'name': { 'pop[bob]': 3 }, - 'email': null - } - }; - - var result = Qs.parse(input); - - expect(result).to.deep.equal(expected); - done(); - }); - - it('parses an object in dot notation', function (done) { - - var input = { - 'user.name': { 'pop[bob]': 3 }, - 'user.email.': null - }; - - var expected = { - 'user': { - 'name': { 'pop[bob]': 3 }, - 'email': null - } - }; - - var result = Qs.parse(input); - - expect(result).to.deep.equal(expected); - done(); - }); - - it('parses an object and not child values', function (done) { - - var input = { - 'user[name]': { 'pop[bob]': { 'test': 3 } }, - 'user[email]': null - }; - - var expected = { - 'user': { - 'name': { 'pop[bob]': { 'test': 3 } }, - 'email': null - } - }; - - var result = Qs.parse(input); - - expect(result).to.deep.equal(expected); - done(); - }); - - it('does not blow up when Buffer global is missing', function (done) { - - var tempBuffer = global.Buffer; - delete global.Buffer; - var result = Qs.parse('a=b&c=d'); - global.Buffer = tempBuffer; - expect(result).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('does not crash when parsing circular references', function (done) { - - var a = {}; - a.b = a; - - var parsed; - - expect(function () { - - parsed = Qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a }); - }).to.not.throw(); - - expect(parsed).to.contain('foo'); - expect(parsed.foo).to.contain('bar', 'baz'); - expect(parsed.foo.bar).to.equal('baz'); - expect(parsed.foo.baz).to.deep.equal(a); - done(); - }); - - it('parses plain objects correctly', function (done) { - - var a = Object.create(null); - a.b = 'c'; - - expect(Qs.parse(a)).to.deep.equal({ b: 'c' }); - var result = Qs.parse({ a: a }); - expect(result).to.contain('a'); - expect(result.a).to.deep.equal(a); - done(); - }); - - it('parses dates correctly', function (done) { - - var now = new Date(); - expect(Qs.parse({ a: now })).to.deep.equal({ a: now }); - done(); - }); - - it('parses regular expressions correctly', function (done) { - - var re = /^test$/; - expect(Qs.parse({ a: re })).to.deep.equal({ a: re }); - done(); - }); - - it('can allow overwriting prototype properties', function (done) { - - expect(Qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true })).to.deep.equal({ a: { hasOwnProperty: 'b' } }, { prototype: false }); - expect(Qs.parse('hasOwnProperty=b', { allowPrototypes: true })).to.deep.equal({ hasOwnProperty: 'b' }, { prototype: false }); - done(); - }); - - it('can return plain objects', function (done) { - - var expected = Object.create(null); - expected.a = Object.create(null); - expected.a.b = 'c'; - expected.a.hasOwnProperty = 'd'; - expect(Qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true })).to.deep.equal(expected); - expect(Qs.parse(null, { plainObjects: true })).to.deep.equal(Object.create(null)); - var expectedArray = Object.create(null); - expectedArray.a = Object.create(null); - expectedArray.a['0'] = 'b'; - expectedArray.a.c = 'd'; - expect(Qs.parse('a[]=b&a[c]=d', { plainObjects: true })).to.deep.equal(expectedArray); - done(); - }); -}); diff --git a/node_modules/express/node_modules/qs/test/stringify.js b/node_modules/express/node_modules/qs/test/stringify.js deleted file mode 100644 index 48b7803..0000000 --- a/node_modules/express/node_modules/qs/test/stringify.js +++ /dev/null @@ -1,259 +0,0 @@ -/* eslint no-extend-native:0 */ -// Load modules - -var Code = require('code'); -var Lab = require('lab'); -var Qs = require('../'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var lab = exports.lab = Lab.script(); -var expect = Code.expect; -var describe = lab.experiment; -var it = lab.test; - - -describe('stringify()', function () { - - it('stringifies a querystring object', function (done) { - - expect(Qs.stringify({ a: 'b' })).to.equal('a=b'); - expect(Qs.stringify({ a: 1 })).to.equal('a=1'); - expect(Qs.stringify({ a: 1, b: 2 })).to.equal('a=1&b=2'); - expect(Qs.stringify({ a: 'A_Z' })).to.equal('a=A_Z'); - expect(Qs.stringify({ a: '€' })).to.equal('a=%E2%82%AC'); - expect(Qs.stringify({ a: '' })).to.equal('a=%EE%80%80'); - expect(Qs.stringify({ a: 'א' })).to.equal('a=%D7%90'); - expect(Qs.stringify({ a: '𐐷' })).to.equal('a=%F0%90%90%B7'); - done(); - }); - - it('stringifies a nested object', function (done) { - - expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c'); - expect(Qs.stringify({ a: { b: { c: { d: 'e' } } } })).to.equal('a%5Bb%5D%5Bc%5D%5Bd%5D=e'); - done(); - }); - - it('stringifies an array value', function (done) { - - expect(Qs.stringify({ a: ['b', 'c', 'd'] })).to.equal('a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d'); - done(); - }); - - it('omits array indices when asked', function (done) { - - expect(Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false })).to.equal('a=b&a=c&a=d'); - done(); - }); - - it('stringifies a nested array value', function (done) { - - expect(Qs.stringify({ a: { b: ['c', 'd'] } })).to.equal('a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d'); - done(); - }); - - it('stringifies an object inside an array', function (done) { - - expect(Qs.stringify({ a: [{ b: 'c' }] })).to.equal('a%5B0%5D%5Bb%5D=c'); - expect(Qs.stringify({ a: [{ b: { c: [1] } }] })).to.equal('a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1'); - done(); - }); - - it('does not omit object keys when indices = false', function (done) { - - expect(Qs.stringify({ a: [{ b: 'c' }] }, { indices: false })).to.equal('a%5Bb%5D=c'); - done(); - }); - - it('uses indices notation for arrays when indices=true', function (done) { - - expect(Qs.stringify({ a: ['b', 'c'] }, { indices: true })).to.equal('a%5B0%5D=b&a%5B1%5D=c'); - done(); - }); - - it('uses indices notation for arrays when no arrayFormat is specified', function (done) { - - expect(Qs.stringify({ a: ['b', 'c'] })).to.equal('a%5B0%5D=b&a%5B1%5D=c'); - done(); - }); - - it('uses indices notation for arrays when no arrayFormat=indices', function (done) { - - expect(Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })).to.equal('a%5B0%5D=b&a%5B1%5D=c'); - done(); - }); - - it('uses repeat notation for arrays when no arrayFormat=repeat', function (done) { - - expect(Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })).to.equal('a=b&a=c'); - done(); - }); - - it('uses brackets notation for arrays when no arrayFormat=brackets', function (done) { - - expect(Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })).to.equal('a%5B%5D=b&a%5B%5D=c'); - done(); - }); - - it('stringifies a complicated object', function (done) { - - expect(Qs.stringify({ a: { b: 'c', d: 'e' } })).to.equal('a%5Bb%5D=c&a%5Bd%5D=e'); - done(); - }); - - it('stringifies an empty value', function (done) { - - expect(Qs.stringify({ a: '' })).to.equal('a='); - expect(Qs.stringify({ a: null }, { strictNullHandling: true })).to.equal('a'); - - expect(Qs.stringify({ a: '', b: '' })).to.equal('a=&b='); - expect(Qs.stringify({ a: null, b: '' }, { strictNullHandling: true })).to.equal('a&b='); - - expect(Qs.stringify({ a: { b: '' } })).to.equal('a%5Bb%5D='); - expect(Qs.stringify({ a: { b: null } }, { strictNullHandling: true })).to.equal('a%5Bb%5D'); - expect(Qs.stringify({ a: { b: null } }, { strictNullHandling: false })).to.equal('a%5Bb%5D='); - - done(); - }); - - it('stringifies an empty object', function (done) { - - var obj = Object.create(null); - obj.a = 'b'; - expect(Qs.stringify(obj)).to.equal('a=b'); - done(); - }); - - it('returns an empty string for invalid input', function (done) { - - expect(Qs.stringify(undefined)).to.equal(''); - expect(Qs.stringify(false)).to.equal(''); - expect(Qs.stringify(null)).to.equal(''); - expect(Qs.stringify('')).to.equal(''); - done(); - }); - - it('stringifies an object with an empty object as a child', function (done) { - - var obj = { - a: Object.create(null) - }; - - obj.a.b = 'c'; - expect(Qs.stringify(obj)).to.equal('a%5Bb%5D=c'); - done(); - }); - - it('drops keys with a value of undefined', function (done) { - - expect(Qs.stringify({ a: undefined })).to.equal(''); - - expect(Qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: true })).to.equal('a%5Bc%5D'); - expect(Qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: false })).to.equal('a%5Bc%5D='); - expect(Qs.stringify({ a: { b: undefined, c: '' } })).to.equal('a%5Bc%5D='); - done(); - }); - - it('url encodes values', function (done) { - - expect(Qs.stringify({ a: 'b c' })).to.equal('a=b%20c'); - done(); - }); - - it('stringifies a date', function (done) { - - var now = new Date(); - var str = 'a=' + encodeURIComponent(now.toISOString()); - expect(Qs.stringify({ a: now })).to.equal(str); - done(); - }); - - it('stringifies the weird object from qs', function (done) { - - expect(Qs.stringify({ 'my weird field': '~q1!2"\'w$5&7/z8)?' })).to.equal('my%20weird%20field=~q1%212%22%27w%245%267%2Fz8%29%3F'); - done(); - }); - - it('skips properties that are part of the object prototype', function (done) { - - Object.prototype.crash = 'test'; - expect(Qs.stringify({ a: 'b' })).to.equal('a=b'); - expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c'); - delete Object.prototype.crash; - done(); - }); - - it('stringifies boolean values', function (done) { - - expect(Qs.stringify({ a: true })).to.equal('a=true'); - expect(Qs.stringify({ a: { b: true } })).to.equal('a%5Bb%5D=true'); - expect(Qs.stringify({ b: false })).to.equal('b=false'); - expect(Qs.stringify({ b: { c: false } })).to.equal('b%5Bc%5D=false'); - done(); - }); - - it('stringifies buffer values', function (done) { - - expect(Qs.stringify({ a: new Buffer('test') })).to.equal('a=test'); - expect(Qs.stringify({ a: { b: new Buffer('test') } })).to.equal('a%5Bb%5D=test'); - done(); - }); - - it('stringifies an object using an alternative delimiter', function (done) { - - expect(Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' })).to.equal('a=b;c=d'); - done(); - }); - - it('doesn\'t blow up when Buffer global is missing', function (done) { - - var tempBuffer = global.Buffer; - delete global.Buffer; - expect(Qs.stringify({ a: 'b', c: 'd' })).to.equal('a=b&c=d'); - global.Buffer = tempBuffer; - done(); - }); - - it('selects properties when filter=array', function (done) { - - expect(Qs.stringify({ a: 'b' }, { filter: ['a'] })).to.equal('a=b'); - expect(Qs.stringify({ a: 1 }, { filter: [] })).to.equal(''); - expect(Qs.stringify({ a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, { filter: ['a', 'b', 0, 2] })).to.equal('a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3'); - done(); - - }); - - it('supports custom representations when filter=function', function (done) { - - var calls = 0; - var obj = { a: 'b', c: 'd', e: { f: new Date(1257894000000) } }; - var filterFunc = function (prefix, value) { - - calls++; - if (calls === 1) { - expect(prefix).to.be.empty(); - expect(value).to.equal(obj); - } - else if (prefix === 'c') { - return; - } - else if (value instanceof Date) { - expect(prefix).to.equal('e[f]'); - return value.getTime(); - } - return value; - }; - - expect(Qs.stringify(obj, { filter: filterFunc })).to.equal('a=b&e%5Bf%5D=1257894000000'); - expect(calls).to.equal(5); - done(); - - }); -}); diff --git a/node_modules/express/node_modules/qs/test/utils.js b/node_modules/express/node_modules/qs/test/utils.js deleted file mode 100644 index a9a6b52..0000000 --- a/node_modules/express/node_modules/qs/test/utils.js +++ /dev/null @@ -1,28 +0,0 @@ -// Load modules - -var Code = require('code'); -var Lab = require('lab'); -var Utils = require('../lib/utils'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var lab = exports.lab = Lab.script(); -var expect = Code.expect; -var describe = lab.experiment; -var it = lab.test; - - -describe('merge()', function () { - - it('can merge two objects with the same key', function (done) { - - expect(Utils.merge({ a: 'b' }, { a: 'c' })).to.deep.equal({ a: ['b', 'c'] }); - done(); - }); -}); diff --git a/node_modules/express/node_modules/send/node_modules/.bin/mime b/node_modules/express/node_modules/send/node_modules/.bin/mime deleted file mode 100644 index f309578..0000000 --- a/node_modules/express/node_modules/send/node_modules/.bin/mime +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=`dirname "$0"` - -case `uname` in - *CYGWIN*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../mime/cli.js" "$@" - ret=$? -else - node "$basedir/../mime/cli.js" "$@" - ret=$? -fi -exit $ret diff --git a/node_modules/express/node_modules/send/node_modules/.bin/mime b/node_modules/express/node_modules/send/node_modules/.bin/mime new file mode 120000 index 0000000..fbb7ee0 --- /dev/null +++ b/node_modules/express/node_modules/send/node_modules/.bin/mime @@ -0,0 +1 @@ +../mime/cli.js \ No newline at end of file diff --git a/node_modules/express/node_modules/send/node_modules/.bin/mime.cmd b/node_modules/express/node_modules/send/node_modules/.bin/mime.cmd deleted file mode 100644 index 8169562..0000000 --- a/node_modules/express/node_modules/send/node_modules/.bin/mime.cmd +++ /dev/null @@ -1,7 +0,0 @@ -@IF EXIST "%~dp0\node.exe" ( - "%~dp0\node.exe" "%~dp0\..\mime\cli.js" %* -) ELSE ( - @SETLOCAL - @SET PATHEXT=%PATHEXT:;.JS;=;% - node "%~dp0\..\mime\cli.js" %* -) \ No newline at end of file diff --git a/node_modules/express/node_modules/send/node_modules/mime/cli.js b/node_modules/express/node_modules/send/node_modules/mime/cli.js old mode 100644 new mode 100755 diff --git a/node_modules/express/node_modules/send/node_modules/mime/package.json b/node_modules/express/node_modules/send/node_modules/mime/package.json index 31e7669..ffa287e 100644 --- a/node_modules/express/node_modules/send/node_modules/mime/package.json +++ b/node_modules/express/node_modules/send/node_modules/mime/package.json @@ -36,7 +36,7 @@ "main": "mime.js", "name": "mime", "repository": { - "url": "git+https://github.com/broofa/node-mime.git", + "url": "https://github.com/broofa/node-mime", "type": "git" }, "version": "1.3.4", @@ -68,6 +68,5 @@ "tarball": "http://registry.npmjs.org/mime/-/mime-1.3.4.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "readme": "ERROR: No README data found!" + "_resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" } diff --git a/node_modules/express/node_modules/send/node_modules/ms/package.json b/node_modules/express/node_modules/send/node_modules/ms/package.json index 253335e..b12c4a0 100644 --- a/node_modules/express/node_modules/send/node_modules/ms/package.json +++ b/node_modules/express/node_modules/send/node_modules/ms/package.json @@ -43,6 +43,5 @@ "tarball": "http://registry.npmjs.org/ms/-/ms-0.7.1.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "readme": "ERROR: No README data found!" + "_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" } diff --git a/node_modules/express/node_modules/serve-static/HISTORY.md b/node_modules/express/node_modules/serve-static/HISTORY.md deleted file mode 100644 index 744b6f1..0000000 --- a/node_modules/express/node_modules/serve-static/HISTORY.md +++ /dev/null @@ -1,284 +0,0 @@ -1.10.0 / 2015-06-17 -=================== - - * Add `fallthrough` option - - Allows declaring this middleware is the final destination - - Provides better integration with Express patterns - * Fix reading options from options prototype - * Improve the default redirect response headers - * deps: escape-html@1.0.2 - * deps: send@0.13.0 - - Allow Node.js HTTP server to set `Date` response header - - Fix incorrectly removing `Content-Location` on 304 response - - Improve the default redirect response headers - - Send appropriate headers on default error response - - Use `http-errors` for standard emitted errors - - Use `statuses` instead of `http` module for status messages - - deps: escape-html@1.0.2 - - deps: etag@~1.7.0 - - deps: fresh@0.3.0 - - deps: on-finished@~2.3.0 - - perf: enable strict mode - - perf: remove unnecessary array allocations - * perf: enable strict mode - * perf: remove argument reassignment - -1.9.3 / 2015-05-14 -================== - - * deps: send@0.12.3 - - deps: debug@~2.2.0 - - deps: depd@~1.0.1 - - deps: etag@~1.6.0 - - deps: ms@0.7.1 - - deps: on-finished@~2.2.1 - -1.9.2 / 2015-03-14 -================== - - * deps: send@0.12.2 - - Throw errors early for invalid `extensions` or `index` options - - deps: debug@~2.1.3 - -1.9.1 / 2015-02-17 -================== - - * deps: send@0.12.1 - - Fix regression sending zero-length files - -1.9.0 / 2015-02-16 -================== - - * deps: send@0.12.0 - - Always read the stat size from the file - - Fix mutating passed-in `options` - - deps: mime@1.3.4 - -1.8.1 / 2015-01-20 -================== - - * Fix redirect loop in Node.js 0.11.14 - * deps: send@0.11.1 - - Fix root path disclosure - -1.8.0 / 2015-01-05 -================== - - * deps: send@0.11.0 - - deps: debug@~2.1.1 - - deps: etag@~1.5.1 - - deps: ms@0.7.0 - - deps: on-finished@~2.2.0 - -1.7.2 / 2015-01-02 -================== - - * Fix potential open redirect when mounted at root - -1.7.1 / 2014-10-22 -================== - - * deps: send@0.10.1 - - deps: on-finished@~2.1.1 - -1.7.0 / 2014-10-15 -================== - - * deps: send@0.10.0 - - deps: debug@~2.1.0 - - deps: depd@~1.0.0 - - deps: etag@~1.5.0 - -1.6.5 / 2015-02-04 -================== - - * Fix potential open redirect when mounted at root - - Back-ported from v1.7.2 - -1.6.4 / 2014-10-08 -================== - - * Fix redirect loop when index file serving disabled - -1.6.3 / 2014-09-24 -================== - - * deps: send@0.9.3 - - deps: etag@~1.4.0 - -1.6.2 / 2014-09-15 -================== - - * deps: send@0.9.2 - - deps: depd@0.4.5 - - deps: etag@~1.3.1 - - deps: range-parser@~1.0.2 - -1.6.1 / 2014-09-07 -================== - - * deps: send@0.9.1 - - deps: fresh@0.2.4 - -1.6.0 / 2014-09-07 -================== - - * deps: send@0.9.0 - - Add `lastModified` option - - Use `etag` to generate `ETag` header - - deps: debug@~2.0.0 - -1.5.4 / 2014-09-04 -================== - - * deps: send@0.8.5 - - Fix a path traversal issue when using `root` - - Fix malicious path detection for empty string path - -1.5.3 / 2014-08-17 -================== - - * deps: send@0.8.3 - -1.5.2 / 2014-08-14 -================== - - * deps: send@0.8.2 - - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream` - -1.5.1 / 2014-08-09 -================== - - * Fix parsing of weird `req.originalUrl` values - * deps: parseurl@~1.3.0 - * deps: utils-merge@1.0.0 - -1.5.0 / 2014-08-05 -================== - - * deps: send@0.8.1 - - Add `extensions` option - -1.4.4 / 2014-08-04 -================== - - * deps: send@0.7.4 - - Fix serving index files without root dir - -1.4.3 / 2014-07-29 -================== - - * deps: send@0.7.3 - - Fix incorrect 403 on Windows and Node.js 0.11 - -1.4.2 / 2014-07-27 -================== - - * deps: send@0.7.2 - - deps: depd@0.4.4 - -1.4.1 / 2014-07-26 -================== - - * deps: send@0.7.1 - - deps: depd@0.4.3 - -1.4.0 / 2014-07-21 -================== - - * deps: parseurl@~1.2.0 - - Cache URLs based on original value - - Remove no-longer-needed URL mis-parse work-around - - Simplify the "fast-path" `RegExp` - * deps: send@0.7.0 - - Add `dotfiles` option - - deps: debug@1.0.4 - - deps: depd@0.4.2 - -1.3.2 / 2014-07-11 -================== - - * deps: send@0.6.0 - - Cap `maxAge` value to 1 year - - deps: debug@1.0.3 - -1.3.1 / 2014-07-09 -================== - - * deps: parseurl@~1.1.3 - - faster parsing of href-only URLs - -1.3.0 / 2014-06-28 -================== - - * Add `setHeaders` option - * Include HTML link in redirect response - * deps: send@0.5.0 - - Accept string for `maxAge` (converted by `ms`) - -1.2.3 / 2014-06-11 -================== - - * deps: send@0.4.3 - - Do not throw un-catchable error on file open race condition - - Use `escape-html` for HTML escaping - - deps: debug@1.0.2 - - deps: finished@1.2.2 - - deps: fresh@0.2.2 - -1.2.2 / 2014-06-09 -================== - - * deps: send@0.4.2 - - fix "event emitter leak" warnings - - deps: debug@1.0.1 - - deps: finished@1.2.1 - -1.2.1 / 2014-06-02 -================== - - * use `escape-html` for escaping - * deps: send@0.4.1 - - Send `max-age` in `Cache-Control` in correct format - -1.2.0 / 2014-05-29 -================== - - * deps: send@0.4.0 - - Calculate ETag with md5 for reduced collisions - - Fix wrong behavior when index file matches directory - - Ignore stream errors after request ends - - Skip directories in index file search - - deps: debug@0.8.1 - -1.1.0 / 2014-04-24 -================== - - * Accept options directly to `send` module - * deps: send@0.3.0 - -1.0.4 / 2014-04-07 -================== - - * Resolve relative paths at middleware setup - * Use parseurl to parse the URL from request - -1.0.3 / 2014-03-20 -================== - - * Do not rely on connect-like environments - -1.0.2 / 2014-03-06 -================== - - * deps: send@0.2.0 - -1.0.1 / 2014-03-05 -================== - - * Add mime export for back-compat - -1.0.0 / 2014-03-05 -================== - - * Genesis from `connect` diff --git a/node_modules/express/node_modules/serve-static/LICENSE b/node_modules/express/node_modules/serve-static/LICENSE deleted file mode 100644 index d8cce67..0000000 --- a/node_modules/express/node_modules/serve-static/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -(The MIT License) - -Copyright (c) 2010 Sencha Inc. -Copyright (c) 2011 LearnBoost -Copyright (c) 2011 TJ Holowaychuk -Copyright (c) 2014-2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/express/node_modules/serve-static/README.md b/node_modules/express/node_modules/serve-static/README.md deleted file mode 100644 index 1a7b054..0000000 --- a/node_modules/express/node_modules/serve-static/README.md +++ /dev/null @@ -1,235 +0,0 @@ -# serve-static - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Linux Build][travis-image]][travis-url] -[![Windows Build][appveyor-image]][appveyor-url] -[![Test Coverage][coveralls-image]][coveralls-url] -[![Gratipay][gratipay-image]][gratipay-url] - -## Install - -```sh -$ npm install serve-static -``` - -## API - -```js -var serveStatic = require('serve-static') -``` - -### serveStatic(root, options) - -Create a new middleware function to serve files from within a given root -directory. The file to serve will be determined by combining `req.url` -with the provided root directory. When a file is not found, instead of -sending a 404 response, this module will instead call `next()` to move on -to the next middleware, allowing for stacking and fall-backs. - -#### Options - -##### dotfiles - - Set how "dotfiles" are treated when encountered. A dotfile is a file -or directory that begins with a dot ("."). Note this check is done on -the path itself without checking if the path actually exists on the -disk. If `root` is specified, only the dotfiles above the root are -checked (i.e. the root itself can be within a dotfile when set -to "deny"). - -The default value is `'ignore'`. - - - `'allow'` No special treatment for dotfiles. - - `'deny'` Deny a request for a dotfile and 403/`next()`. - - `'ignore'` Pretend like the dotfile does not exist and 404/`next()`. - -##### etag - -Enable or disable etag generation, defaults to true. - -##### extensions - -Set file extension fallbacks. When set, if a file is not found, the given -extensions will be added to the file name and search for. The first that -exists will be served. Example: `['html', 'htm']`. - -The default value is `false`. - -##### fallthrough - -Set the middleware to have client errors fall-through as just unhandled -requests, otherwise forward a client error. The difference is that client -errors like a bad request or a request to a non-existent file will cause -this middleware to simply `next()` to your next middleware when this value -is `true`. When this value is `false`, these errors (even 404s), will invoke -`next(err)`. - -Typically `true` is desired such that multiple physical directories can be -mapped to the same web address or for routes to fill in non-existent files. - -The value `false` can be used if this middleware is mounted at a path that -is designed to be strictly a single file system directory, which allows for -short-circuiting 404s for less overhead. This middleware will also reply to -all methods. - -The default value is `true`. - -##### index - -By default this module will send "index.html" files in response to a request -on a directory. To disable this set `false` or to supply a new index pass a -string or an array in preferred order. - -##### lastModified - -Enable or disable `Last-Modified` header, defaults to true. Uses the file -system's last modified value. - -##### maxAge - -Provide a max-age in milliseconds for http caching, defaults to 0. This -can also be a string accepted by the [ms](https://www.npmjs.org/package/ms#readme) -module. - -##### redirect - -Redirect to trailing "/" when the pathname is a dir. Defaults to `true`. - -##### setHeaders - -Function to set custom headers on response. Alterations to the headers need to -occur synchronously. The function is called as `fn(res, path, stat)`, where -the arguments are: - - - `res` the response object - - `path` the file path that is being sent - - `stat` the stat object of the file that is being sent - -## Examples - -### Serve files with vanilla node.js http server - -```js -var finalhandler = require('finalhandler') -var http = require('http') -var serveStatic = require('serve-static') - -// Serve up public/ftp folder -var serve = serveStatic('public/ftp', {'index': ['index.html', 'index.htm']}) - -// Create server -var server = http.createServer(function(req, res){ - var done = finalhandler(req, res) - serve(req, res, done) -}) - -// Listen -server.listen(3000) -``` - -### Serve all files as downloads - -```js -var contentDisposition = require('content-disposition') -var finalhandler = require('finalhandler') -var http = require('http') -var serveStatic = require('serve-static') - -// Serve up public/ftp folder -var serve = serveStatic('public/ftp', { - 'index': false, - 'setHeaders': setHeaders -}) - -// Set header to force download -function setHeaders(res, path) { - res.setHeader('Content-Disposition', contentDisposition(path)) -} - -// Create server -var server = http.createServer(function(req, res){ - var done = finalhandler(req, res) - serve(req, res, done) -}) - -// Listen -server.listen(3000) -``` - -### Serving using express - -#### Simple - -This is a simple example of using Express. - -```js -var express = require('express') -var serveStatic = require('serve-static') - -var app = express() - -app.use(serveStatic('public/ftp', {'index': ['default.html', 'default.htm']})) -app.listen(3000) -``` - -#### Multiple roots - -This example shows a simple way to search through multiple directories. -Files are look for in `public-optimized/` first, then `public/` second as -a fallback. - -```js -var express = require('express') -var serveStatic = require('serve-static') - -var app = express() - -app.use(serveStatic(__dirname + '/public-optimized')) -app.use(serveStatic(__dirname + '/public')) -app.listen(3000) -``` - -#### Different settings for paths - -This example shows how to set a different max age depending on the served -file type. In this example, HTML files are not cached, while everything else -is for 1 day. - -```js -var express = require('express') -var serveStatic = require('serve-static') - -var app = express() - -app.use(serveStatic(__dirname + '/public', { - maxAge: '1d', - setHeaders: setCustomCacheControl -})) - -app.listen(3000) - -function setCustomCacheControl(res, path) { - if (serveStatic.mime.lookup(path) === 'text/html') { - // Custom Cache-Control for HTML files - res.setHeader('Cache-Control', 'public, max-age=0') - } -} -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/serve-static.svg -[npm-url]: https://npmjs.org/package/serve-static -[travis-image]: https://img.shields.io/travis/expressjs/serve-static/master.svg?label=linux -[travis-url]: https://travis-ci.org/expressjs/serve-static -[appveyor-image]: https://img.shields.io/appveyor/ci/dougwilson/serve-static/master.svg?label=windows -[appveyor-url]: https://ci.appveyor.com/project/dougwilson/serve-static -[coveralls-image]: https://img.shields.io/coveralls/expressjs/serve-static/master.svg -[coveralls-url]: https://coveralls.io/r/expressjs/serve-static -[downloads-image]: https://img.shields.io/npm/dm/serve-static.svg -[downloads-url]: https://npmjs.org/package/serve-static -[gratipay-image]: https://img.shields.io/gratipay/dougwilson.svg -[gratipay-url]: https://gratipay.com/dougwilson/ diff --git a/node_modules/express/node_modules/serve-static/index.js b/node_modules/express/node_modules/serve-static/index.js deleted file mode 100644 index 0a9f494..0000000 --- a/node_modules/express/node_modules/serve-static/index.js +++ /dev/null @@ -1,187 +0,0 @@ -/*! - * serve-static - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var escapeHtml = require('escape-html') -var parseUrl = require('parseurl') -var resolve = require('path').resolve -var send = require('send') -var url = require('url') - -/** - * Module exports. - * @public - */ - -module.exports = serveStatic -module.exports.mime = send.mime - -/** - * @param {string} root - * @param {object} [options] - * @return {function} - * @public - */ - -function serveStatic(root, options) { - if (!root) { - throw new TypeError('root path required') - } - - if (typeof root !== 'string') { - throw new TypeError('root path must be a string') - } - - // copy options object - var opts = Object.create(options || null) - - // fall-though - var fallthrough = opts.fallthrough !== false - - // default redirect - var redirect = opts.redirect !== false - - // headers listener - var setHeaders = opts.setHeaders - - if (setHeaders && typeof setHeaders !== 'function') { - throw new TypeError('option setHeaders must be function') - } - - // setup options for send - opts.maxage = opts.maxage || opts.maxAge || 0 - opts.root = resolve(root) - - // construct directory listener - var onDirectory = redirect - ? createRedirectDirectoryListener() - : createNotFoundDirectoryListener() - - return function serveStatic(req, res, next) { - if (req.method !== 'GET' && req.method !== 'HEAD') { - if (fallthrough) { - return next() - } - - // method not allowed - res.statusCode = 405 - res.setHeader('Allow', 'GET, HEAD') - res.setHeader('Content-Length', '0') - res.end() - return - } - - var forwardError = !fallthrough - var originalUrl = parseUrl.original(req) - var path = parseUrl(req).pathname - - // make sure redirect occurs at mount - if (path === '/' && originalUrl.pathname.substr(-1) !== '/') { - path = '' - } - - // create send stream - var stream = send(req, path, opts) - - // add directory handler - stream.on('directory', onDirectory) - - // add headers listener - if (setHeaders) { - stream.on('headers', setHeaders) - } - - // add file listener for fallthrough - if (fallthrough) { - stream.on('file', function onFile() { - // once file is determined, always forward error - forwardError = true - }) - } - - // forward errors - stream.on('error', function error(err) { - if (forwardError || !(err.statusCode < 500)) { - next(err) - return - } - - next() - }) - - // pipe - stream.pipe(res) - } -} - -/** - * Collapse all leading slashes into a single slash - * @private - */ -function collapseLeadingSlashes(str) { - for (var i = 0; i < str.length; i++) { - if (str[i] !== '/') { - break - } - } - - return i > 1 - ? '/' + str.substr(i) - : str -} - -/** - * Create a directory listener that just 404s. - * @private - */ - -function createNotFoundDirectoryListener() { - return function notFound() { - this.error(404) - } -} - -/** - * Create a directory listener that performs a redirect. - * @private - */ - -function createRedirectDirectoryListener() { - return function redirect() { - if (this.hasTrailingSlash()) { - this.error(404) - return - } - - // get original URL - var originalUrl = parseUrl.original(this.req) - - // append trailing slash - originalUrl.path = null - originalUrl.pathname = collapseLeadingSlashes(originalUrl.pathname + '/') - - // reformat the URL - var loc = url.format(originalUrl) - var msg = 'Redirecting to ' + escapeHtml(loc) + '\n' - var res = this.res - - // send redirect response - res.statusCode = 303 - res.setHeader('Content-Type', 'text/html; charset=UTF-8') - res.setHeader('Content-Length', Buffer.byteLength(msg)) - res.setHeader('X-Content-Type-Options', 'nosniff') - res.setHeader('Location', loc) - res.end(msg) - } -} diff --git a/node_modules/express/node_modules/serve-static/package.json b/node_modules/express/node_modules/serve-static/package.json deleted file mode 100644 index 4524468..0000000 --- a/node_modules/express/node_modules/serve-static/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "name": "serve-static", - "description": "Serve static files", - "version": "1.10.0", - "author": { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/expressjs/serve-static.git" - }, - "dependencies": { - "escape-html": "1.0.2", - "parseurl": "~1.3.0", - "send": "0.13.0" - }, - "devDependencies": { - "istanbul": "0.3.9", - "mocha": "2.2.5", - "supertest": "1.0.1" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">= 0.8.0" - }, - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/" - }, - "gitHead": "856c5e0f796a8988525c356018594bfb8c51a4fa", - "bugs": { - "url": "https://github.com/expressjs/serve-static/issues" - }, - "homepage": "https://github.com/expressjs/serve-static", - "_id": "serve-static@1.10.0", - "_shasum": "be632faa685820e4a43ed3df1379135cc4f370d7", - "_from": "serve-static@>=1.10.0 <1.11.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "mscdex", - "email": "mscdex@mscdex.net" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - }, - { - "name": "defunctzombie", - "email": "shtylman@gmail.com" - } - ], - "dist": { - "shasum": "be632faa685820e4a43ed3df1379135cc4f370d7", - "tarball": "http://registry.npmjs.org/serve-static/-/serve-static-1.10.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/type-is/HISTORY.md b/node_modules/express/node_modules/type-is/HISTORY.md deleted file mode 100644 index 04712fe..0000000 --- a/node_modules/express/node_modules/type-is/HISTORY.md +++ /dev/null @@ -1,155 +0,0 @@ -1.6.5 / 2015-07-16 -================== - - * deps: mime-types@~2.1.3 - - Add new mime types - -1.6.4 / 2015-07-01 -================== - - * deps: mime-types@~2.1.2 - - Add new mime types - * perf: enable strict mode - * perf: remove argument reassignment - -1.6.3 / 2015-06-08 -================== - - * deps: mime-types@~2.1.1 - - Add new mime types - * perf: reduce try block size - * perf: remove bitwise operations - -1.6.2 / 2015-05-10 -================== - - * deps: mime-types@~2.0.11 - - Add new mime types - -1.6.1 / 2015-03-13 -================== - - * deps: mime-types@~2.0.10 - - Add new mime types - -1.6.0 / 2015-02-12 -================== - - * fix false-positives in `hasBody` `Transfer-Encoding` check - * support wildcard for both type and subtype (`*/*`) - -1.5.7 / 2015-02-09 -================== - - * fix argument reassignment - * deps: mime-types@~2.0.9 - - Add new mime types - -1.5.6 / 2015-01-29 -================== - - * deps: mime-types@~2.0.8 - - Add new mime types - -1.5.5 / 2014-12-30 -================== - - * deps: mime-types@~2.0.7 - - Add new mime types - - Fix missing extensions - - Fix various invalid MIME type entries - - Remove example template MIME types - - deps: mime-db@~1.5.0 - -1.5.4 / 2014-12-10 -================== - - * deps: mime-types@~2.0.4 - - Add new mime types - - deps: mime-db@~1.3.0 - -1.5.3 / 2014-11-09 -================== - - * deps: mime-types@~2.0.3 - - Add new mime types - - deps: mime-db@~1.2.0 - -1.5.2 / 2014-09-28 -================== - - * deps: mime-types@~2.0.2 - - Add new mime types - - deps: mime-db@~1.1.0 - -1.5.1 / 2014-09-07 -================== - - * Support Node.js 0.6 - * deps: media-typer@0.3.0 - * deps: mime-types@~2.0.1 - - Support Node.js 0.6 - -1.5.0 / 2014-09-05 -================== - - * fix `hasbody` to be true for `content-length: 0` - -1.4.0 / 2014-09-02 -================== - - * update mime-types - -1.3.2 / 2014-06-24 -================== - - * use `~` range on mime-types - -1.3.1 / 2014-06-19 -================== - - * fix global variable leak - -1.3.0 / 2014-06-19 -================== - - * improve type parsing - - - invalid media type never matches - - media type not case-sensitive - - extra LWS does not affect results - -1.2.2 / 2014-06-19 -================== - - * fix behavior on unknown type argument - -1.2.1 / 2014-06-03 -================== - - * switch dependency from `mime` to `mime-types@1.0.0` - -1.2.0 / 2014-05-11 -================== - - * support suffix matching: - - - `+json` matches `application/vnd+json` - - `*/vnd+json` matches `application/vnd+json` - - `application/*+json` matches `application/vnd+json` - -1.1.0 / 2014-04-12 -================== - - * add non-array values support - * expose internal utilities: - - - `.is()` - - `.hasBody()` - - `.normalize()` - - `.match()` - -1.0.1 / 2014-03-30 -================== - - * add `multipart` as a shorthand diff --git a/node_modules/express/node_modules/type-is/LICENSE b/node_modules/express/node_modules/type-is/LICENSE deleted file mode 100644 index 386b7b6..0000000 --- a/node_modules/express/node_modules/type-is/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2014-2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/express/node_modules/type-is/README.md b/node_modules/express/node_modules/type-is/README.md deleted file mode 100644 index 9b393da..0000000 --- a/node_modules/express/node_modules/type-is/README.md +++ /dev/null @@ -1,117 +0,0 @@ -# type-is - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Infer the content-type of a request. - -### Install - -```sh -$ npm install type-is -``` - -## API - -```js -var http = require('http') -var is = require('type-is') - -http.createServer(function (req, res) { - var istext = is(req, ['text/*']) - res.end('you ' + (istext ? 'sent' : 'did not send') + ' me text') -}) -``` - -### type = is(request, types) - -`request` is the node HTTP request. `types` is an array of types. - -```js -// req.headers.content-type = 'application/json' - -is(req, ['json']) // 'json' -is(req, ['html', 'json']) // 'json' -is(req, ['application/*']) // 'application/json' -is(req, ['application/json']) // 'application/json' - -is(req, ['html']) // false -``` - -### type = is.is(mediaType, types) - -`mediaType` is the [media type](https://tools.ietf.org/html/rfc6838) string. `types` is an array of types. - -```js -var mediaType = 'application/json' - -is.is(mediaType, ['json']) // 'json' -is.is(mediaType, ['html', 'json']) // 'json' -is.is(mediaType, ['application/*']) // 'application/json' -is.is(mediaType, ['application/json']) // 'application/json' - -is.is(mediaType, ['html']) // false -``` - -### Each type can be: - -- An extension name such as `json`. This name will be returned if matched. -- A mime type such as `application/json`. -- A mime type with a wildcard such as `*/*` or `*/json` or `application/*`. The full mime type will be returned if matched. -- A suffix such as `+json`. This can be combined with a wildcard such as `*/vnd+json` or `application/*+json`. The full mime type will be returned if matched. - -`false` will be returned if no type matches or the content type is invalid. - -`null` will be returned if the request does not have a body. - -## Examples - -#### Example body parser - -```js -var is = require('type-is'); - -function bodyParser(req, res, next) { - if (!is.hasBody(req)) { - return next() - } - - switch (is(req, ['urlencoded', 'json', 'multipart'])) { - case 'urlencoded': - // parse urlencoded body - throw new Error('implement urlencoded body parsing') - break - case 'json': - // parse json body - throw new Error('implement json body parsing') - break - case 'multipart': - // parse multipart body - throw new Error('implement multipart body parsing') - break - default: - // 415 error code - res.statusCode = 415 - res.end() - return - } -} -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/type-is.svg -[npm-url]: https://npmjs.org/package/type-is -[node-version-image]: https://img.shields.io/node/v/type-is.svg -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/type-is/master.svg -[travis-url]: https://travis-ci.org/jshttp/type-is -[coveralls-image]: https://img.shields.io/coveralls/jshttp/type-is/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/type-is?branch=master -[downloads-image]: https://img.shields.io/npm/dm/type-is.svg -[downloads-url]: https://npmjs.org/package/type-is diff --git a/node_modules/express/node_modules/type-is/index.js b/node_modules/express/node_modules/type-is/index.js deleted file mode 100644 index 9e348aa..0000000 --- a/node_modules/express/node_modules/type-is/index.js +++ /dev/null @@ -1,257 +0,0 @@ -/*! - * type-is - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var typer = require('media-typer') -var mime = require('mime-types') - -/** - * Module exports. - * @public - */ - -module.exports = typeofrequest -module.exports.is = typeis -module.exports.hasBody = hasbody -module.exports.normalize = normalize -module.exports.match = mimeMatch - -/** - * Compare a `value` content-type with `types`. - * Each `type` can be an extension like `html`, - * a special shortcut like `multipart` or `urlencoded`, - * or a mime type. - * - * If no types match, `false` is returned. - * Otherwise, the first `type` that matches is returned. - * - * @param {String} value - * @param {Array} types - * @public - */ - -function typeis(value, types_) { - var i - var types = types_ - - // remove parameters and normalize - var val = tryNormalizeType(value) - - // no type or invalid - if (!val) { - return false - } - - // support flattened arguments - if (types && !Array.isArray(types)) { - types = new Array(arguments.length - 1) - for (i = 0; i < types.length; i++) { - types[i] = arguments[i + 1] - } - } - - // no types, return the content type - if (!types || !types.length) { - return val - } - - var type - for (i = 0; i < types.length; i++) { - if (mimeMatch(normalize(type = types[i]), val)) { - return type[0] === '+' || type.indexOf('*') !== -1 - ? val - : type - } - } - - // no matches - return false -} - -/** - * Check if a request has a request body. - * A request with a body __must__ either have `transfer-encoding` - * or `content-length` headers set. - * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3 - * - * @param {Object} request - * @return {Boolean} - * @public - */ - -function hasbody(req) { - return req.headers['transfer-encoding'] !== undefined - || !isNaN(req.headers['content-length']) -} - -/** - * Check if the incoming request contains the "Content-Type" - * header field, and it contains any of the give mime `type`s. - * If there is no request body, `null` is returned. - * If there is no content type, `false` is returned. - * Otherwise, it returns the first `type` that matches. - * - * Examples: - * - * // With Content-Type: text/html; charset=utf-8 - * this.is('html'); // => 'html' - * this.is('text/html'); // => 'text/html' - * this.is('text/*', 'application/json'); // => 'text/html' - * - * // When Content-Type is application/json - * this.is('json', 'urlencoded'); // => 'json' - * this.is('application/json'); // => 'application/json' - * this.is('html', 'application/*'); // => 'application/json' - * - * this.is('html'); // => false - * - * @param {String|Array} types... - * @return {String|false|null} - * @public - */ - -function typeofrequest(req, types_) { - var types = types_ - - // no body - if (!hasbody(req)) { - return null - } - - // support flattened arguments - if (arguments.length > 2) { - types = new Array(arguments.length - 1) - for (var i = 0; i < types.length; i++) { - types[i] = arguments[i + 1] - } - } - - // request content type - var value = req.headers['content-type'] - - return typeis(value, types) -} - -/** - * Normalize a mime type. - * If it's a shorthand, expand it to a valid mime type. - * - * In general, you probably want: - * - * var type = is(req, ['urlencoded', 'json', 'multipart']); - * - * Then use the appropriate body parsers. - * These three are the most common request body types - * and are thus ensured to work. - * - * @param {String} type - * @private - */ - -function normalize(type) { - switch (type) { - case 'urlencoded': - return 'application/x-www-form-urlencoded' - case 'multipart': - return 'multipart/*' - } - - if (type[0] === '+') { - // "+json" -> "*/*+json" expando - return '*/*' + type - } - - return type.indexOf('/') === -1 - ? mime.lookup(type) - : type -} - -/** - * Check if `exected` mime type - * matches `actual` mime type with - * wildcard and +suffix support. - * - * @param {String} expected - * @param {String} actual - * @return {Boolean} - * @private - */ - -function mimeMatch(expected, actual) { - // invalid type - if (expected === false) { - return false - } - - // split types - var actualParts = actual.split('/') - var expectedParts = expected.split('/') - - // invalid format - if (actualParts.length !== 2 || expectedParts.length !== 2) { - return false - } - - // validate type - if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) { - return false - } - - // validate suffix wildcard - if (expectedParts[1].substr(0, 2) === '*+') { - return expectedParts[1].length <= actualParts[1].length + 1 - && expectedParts[1].substr(1) === actualParts[1].substr(1 - expectedParts[1].length) - } - - // validate subtype - if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) { - return false - } - - return true -} - -/** - * Normalize a type and remove parameters. - * - * @param {string} value - * @return {string} - * @private - */ - -function normalizeType(value) { - // parse the type - var type = typer.parse(value) - - // remove the parameters - type.parameters = undefined - - // reformat it - return typer.format(type) -} - -/** - * Try to normalize a type and remove parameters. - * - * @param {string} value - * @return {string} - * @private - */ - -function tryNormalizeType(value) { - try { - return normalizeType(value) - } catch (err) { - return null - } -} diff --git a/node_modules/express/node_modules/type-is/node_modules/media-typer/HISTORY.md b/node_modules/express/node_modules/type-is/node_modules/media-typer/HISTORY.md deleted file mode 100644 index 62c2003..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/media-typer/HISTORY.md +++ /dev/null @@ -1,22 +0,0 @@ -0.3.0 / 2014-09-07 -================== - - * Support Node.js 0.6 - * Throw error when parameter format invalid on parse - -0.2.0 / 2014-06-18 -================== - - * Add `typer.format()` to format media types - -0.1.0 / 2014-06-17 -================== - - * Accept `req` as argument to `parse` - * Accept `res` as argument to `parse` - * Parse media type with extra LWS between type and first parameter - -0.0.0 / 2014-06-13 -================== - - * Initial implementation diff --git a/node_modules/express/node_modules/type-is/node_modules/media-typer/LICENSE b/node_modules/express/node_modules/type-is/node_modules/media-typer/LICENSE deleted file mode 100644 index b7dce6c..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/media-typer/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/express/node_modules/type-is/node_modules/media-typer/README.md b/node_modules/express/node_modules/type-is/node_modules/media-typer/README.md deleted file mode 100644 index d8df623..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/media-typer/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# media-typer - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Simple RFC 6838 media type parser - -## Installation - -```sh -$ npm install media-typer -``` - -## API - -```js -var typer = require('media-typer') -``` - -### typer.parse(string) - -```js -var obj = typer.parse('image/svg+xml; charset=utf-8') -``` - -Parse a media type string. This will return an object with the following -properties (examples are shown for the string `'image/svg+xml; charset=utf-8'`): - - - `type`: The type of the media type (always lower case). Example: `'image'` - - - `subtype`: The subtype of the media type (always lower case). Example: `'svg'` - - - `suffix`: The suffix of the media type (always lower case). Example: `'xml'` - - - `parameters`: An object of the parameters in the media type (name of parameter always lower case). Example: `{charset: 'utf-8'}` - -### typer.parse(req) - -```js -var obj = typer.parse(req) -``` - -Parse the `content-type` header from the given `req`. Short-cut for -`typer.parse(req.headers['content-type'])`. - -### typer.parse(res) - -```js -var obj = typer.parse(res) -``` - -Parse the `content-type` header set on the given `res`. Short-cut for -`typer.parse(res.getHeader('content-type'))`. - -### typer.format(obj) - -```js -var obj = typer.format({type: 'image', subtype: 'svg', suffix: 'xml'}) -``` - -Format an object into a media type string. This will return a string of the -mime type for the given object. For the properties of the object, see the -documentation for `typer.parse(string)`. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/media-typer.svg?style=flat -[npm-url]: https://npmjs.org/package/media-typer -[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg?style=flat -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/media-typer.svg?style=flat -[travis-url]: https://travis-ci.org/jshttp/media-typer -[coveralls-image]: https://img.shields.io/coveralls/jshttp/media-typer.svg?style=flat -[coveralls-url]: https://coveralls.io/r/jshttp/media-typer -[downloads-image]: https://img.shields.io/npm/dm/media-typer.svg?style=flat -[downloads-url]: https://npmjs.org/package/media-typer diff --git a/node_modules/express/node_modules/type-is/node_modules/media-typer/index.js b/node_modules/express/node_modules/type-is/node_modules/media-typer/index.js deleted file mode 100644 index 07f7295..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/media-typer/index.js +++ /dev/null @@ -1,270 +0,0 @@ -/*! - * media-typer - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * RegExp to match *( ";" parameter ) in RFC 2616 sec 3.7 - * - * parameter = token "=" ( token | quoted-string ) - * token = 1* - * separators = "(" | ")" | "<" | ">" | "@" - * | "," | ";" | ":" | "\" | <"> - * | "/" | "[" | "]" | "?" | "=" - * | "{" | "}" | SP | HT - * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> ) - * qdtext = > - * quoted-pair = "\" CHAR - * CHAR = - * TEXT = - * LWS = [CRLF] 1*( SP | HT ) - * CRLF = CR LF - * CR = - * LF = - * SP = - * SHT = - * CTL = - * OCTET = - */ -var paramRegExp = /; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g; -var textRegExp = /^[\u0020-\u007e\u0080-\u00ff]+$/ -var tokenRegExp = /^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/ - -/** - * RegExp to match quoted-pair in RFC 2616 - * - * quoted-pair = "\" CHAR - * CHAR = - */ -var qescRegExp = /\\([\u0000-\u007f])/g; - -/** - * RegExp to match chars that must be quoted-pair in RFC 2616 - */ -var quoteRegExp = /([\\"])/g; - -/** - * RegExp to match type in RFC 6838 - * - * type-name = restricted-name - * subtype-name = restricted-name - * restricted-name = restricted-name-first *126restricted-name-chars - * restricted-name-first = ALPHA / DIGIT - * restricted-name-chars = ALPHA / DIGIT / "!" / "#" / - * "$" / "&" / "-" / "^" / "_" - * restricted-name-chars =/ "." ; Characters before first dot always - * ; specify a facet name - * restricted-name-chars =/ "+" ; Characters after last plus always - * ; specify a structured syntax suffix - * ALPHA = %x41-5A / %x61-7A ; A-Z / a-z - * DIGIT = %x30-39 ; 0-9 - */ -var subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/ -var typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/ -var typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/; - -/** - * Module exports. - */ - -exports.format = format -exports.parse = parse - -/** - * Format object to media type. - * - * @param {object} obj - * @return {string} - * @api public - */ - -function format(obj) { - if (!obj || typeof obj !== 'object') { - throw new TypeError('argument obj is required') - } - - var parameters = obj.parameters - var subtype = obj.subtype - var suffix = obj.suffix - var type = obj.type - - if (!type || !typeNameRegExp.test(type)) { - throw new TypeError('invalid type') - } - - if (!subtype || !subtypeNameRegExp.test(subtype)) { - throw new TypeError('invalid subtype') - } - - // format as type/subtype - var string = type + '/' + subtype - - // append +suffix - if (suffix) { - if (!typeNameRegExp.test(suffix)) { - throw new TypeError('invalid suffix') - } - - string += '+' + suffix - } - - // append parameters - if (parameters && typeof parameters === 'object') { - var param - var params = Object.keys(parameters).sort() - - for (var i = 0; i < params.length; i++) { - param = params[i] - - if (!tokenRegExp.test(param)) { - throw new TypeError('invalid parameter name') - } - - string += '; ' + param + '=' + qstring(parameters[param]) - } - } - - return string -} - -/** - * Parse media type to object. - * - * @param {string|object} string - * @return {Object} - * @api public - */ - -function parse(string) { - if (!string) { - throw new TypeError('argument string is required') - } - - // support req/res-like objects as argument - if (typeof string === 'object') { - string = getcontenttype(string) - } - - if (typeof string !== 'string') { - throw new TypeError('argument string is required to be a string') - } - - var index = string.indexOf(';') - var type = index !== -1 - ? string.substr(0, index) - : string - - var key - var match - var obj = splitType(type) - var params = {} - var value - - paramRegExp.lastIndex = index - - while (match = paramRegExp.exec(string)) { - if (match.index !== index) { - throw new TypeError('invalid parameter format') - } - - index += match[0].length - key = match[1].toLowerCase() - value = match[2] - - if (value[0] === '"') { - // remove quotes and escapes - value = value - .substr(1, value.length - 2) - .replace(qescRegExp, '$1') - } - - params[key] = value - } - - if (index !== -1 && index !== string.length) { - throw new TypeError('invalid parameter format') - } - - obj.parameters = params - - return obj -} - -/** - * Get content-type from req/res objects. - * - * @param {object} - * @return {Object} - * @api private - */ - -function getcontenttype(obj) { - if (typeof obj.getHeader === 'function') { - // res-like - return obj.getHeader('content-type') - } - - if (typeof obj.headers === 'object') { - // req-like - return obj.headers && obj.headers['content-type'] - } -} - -/** - * Quote a string if necessary. - * - * @param {string} val - * @return {string} - * @api private - */ - -function qstring(val) { - var str = String(val) - - // no need to quote tokens - if (tokenRegExp.test(str)) { - return str - } - - if (str.length > 0 && !textRegExp.test(str)) { - throw new TypeError('invalid parameter value') - } - - return '"' + str.replace(quoteRegExp, '\\$1') + '"' -} - -/** - * Simply "type/subtype+siffx" into parts. - * - * @param {string} string - * @return {Object} - * @api private - */ - -function splitType(string) { - var match = typeRegExp.exec(string.toLowerCase()) - - if (!match) { - throw new TypeError('invalid media type') - } - - var type = match[1] - var subtype = match[2] - var suffix - - // suffix after last + - var index = subtype.lastIndexOf('+') - if (index !== -1) { - suffix = subtype.substr(index + 1) - subtype = subtype.substr(0, index) - } - - var obj = { - type: type, - subtype: subtype, - suffix: suffix - } - - return obj -} diff --git a/node_modules/express/node_modules/type-is/node_modules/media-typer/package.json b/node_modules/express/node_modules/type-is/node_modules/media-typer/package.json deleted file mode 100644 index e0f796d..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/media-typer/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "media-typer", - "description": "Simple RFC 6838 media type parser and formatter", - "version": "0.3.0", - "author": { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/jshttp/media-typer.git" - }, - "devDependencies": { - "istanbul": "0.3.2", - "mocha": "~1.21.4", - "should": "~4.0.4" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "d49d41ffd0bb5a0655fa44a59df2ec0bfc835b16", - "bugs": { - "url": "https://github.com/jshttp/media-typer/issues" - }, - "homepage": "https://github.com/jshttp/media-typer", - "_id": "media-typer@0.3.0", - "_shasum": "8710d7af0aa626f8fffa1ce00168545263255748", - "_from": "media-typer@0.3.0", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "8710d7af0aa626f8fffa1ce00168545263255748", - "tarball": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/HISTORY.md b/node_modules/express/node_modules/type-is/node_modules/mime-types/HISTORY.md deleted file mode 100644 index c5b8f5f..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/HISTORY.md +++ /dev/null @@ -1,147 +0,0 @@ -2.1.3 / 2015-07-13 -================== - - * deps: mime-db@~1.15.0 - - Add new mime types - -2.1.2 / 2015-06-25 -================== - - * deps: mime-db@~1.14.0 - - Add new mime types - -2.1.1 / 2015-06-08 -================== - - * perf: fix deopt during mapping - -2.1.0 / 2015-06-07 -================== - - * Fix incorrectly treating extension-less file name as extension - - i.e. `'path/to/json'` will no longer return `application/json` - * Fix `.charset(type)` to accept parameters - * Fix `.charset(type)` to match case-insensitive - * Improve generation of extension to MIME mapping - * Refactor internals for readability and no argument reassignment - * Prefer `application/*` MIME types from the same source - * Prefer any type over `application/octet-stream` - * deps: mime-db@~1.13.0 - - Add nginx as a source - - Add new mime types - -2.0.14 / 2015-06-06 -=================== - - * deps: mime-db@~1.12.0 - - Add new mime types - -2.0.13 / 2015-05-31 -=================== - - * deps: mime-db@~1.11.0 - - Add new mime types - -2.0.12 / 2015-05-19 -=================== - - * deps: mime-db@~1.10.0 - - Add new mime types - -2.0.11 / 2015-05-05 -=================== - - * deps: mime-db@~1.9.1 - - Add new mime types - -2.0.10 / 2015-03-13 -=================== - - * deps: mime-db@~1.8.0 - - Add new mime types - -2.0.9 / 2015-02-09 -================== - - * deps: mime-db@~1.7.0 - - Add new mime types - - Community extensions ownership transferred from `node-mime` - -2.0.8 / 2015-01-29 -================== - - * deps: mime-db@~1.6.0 - - Add new mime types - -2.0.7 / 2014-12-30 -================== - - * deps: mime-db@~1.5.0 - - Add new mime types - - Fix various invalid MIME type entries - -2.0.6 / 2014-12-30 -================== - - * deps: mime-db@~1.4.0 - - Add new mime types - - Fix various invalid MIME type entries - - Remove example template MIME types - -2.0.5 / 2014-12-29 -================== - - * deps: mime-db@~1.3.1 - - Fix missing extensions - -2.0.4 / 2014-12-10 -================== - - * deps: mime-db@~1.3.0 - - Add new mime types - -2.0.3 / 2014-11-09 -================== - - * deps: mime-db@~1.2.0 - - Add new mime types - -2.0.2 / 2014-09-28 -================== - - * deps: mime-db@~1.1.0 - - Add new mime types - - Add additional compressible - - Update charsets - -2.0.1 / 2014-09-07 -================== - - * Support Node.js 0.6 - -2.0.0 / 2014-09-02 -================== - - * Use `mime-db` - * Remove `.define()` - -1.0.2 / 2014-08-04 -================== - - * Set charset=utf-8 for `text/javascript` - -1.0.1 / 2014-06-24 -================== - - * Add `text/jsx` type - -1.0.0 / 2014-05-12 -================== - - * Return `false` for unknown types - * Set charset=utf-8 for `application/json` - -0.1.0 / 2014-05-02 -================== - - * Initial release diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/LICENSE b/node_modules/express/node_modules/type-is/node_modules/mime-types/LICENSE deleted file mode 100644 index 0616607..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/README.md b/node_modules/express/node_modules/type-is/node_modules/mime-types/README.md deleted file mode 100644 index e26295d..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/README.md +++ /dev/null @@ -1,103 +0,0 @@ -# mime-types - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -The ultimate javascript content-type utility. - -Similar to [node-mime](https://github.com/broofa/node-mime), except: - -- __No fallbacks.__ Instead of naively returning the first available type, `mime-types` simply returns `false`, - so do `var type = mime.lookup('unrecognized') || 'application/octet-stream'`. -- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`. -- Additional mime types are added such as jade and stylus via [mime-db](https://github.com/jshttp/mime-db) -- No `.define()` functionality - -Otherwise, the API is compatible. - -## Install - -```sh -$ npm install mime-types -``` - -## Adding Types - -All mime types are based on [mime-db](https://github.com/jshttp/mime-db), -so open a PR there if you'd like to add mime types. - -## API - -```js -var mime = require('mime-types') -``` - -All functions return `false` if input is invalid or not found. - -### mime.lookup(path) - -Lookup the content-type associated with a file. - -```js -mime.lookup('json') // 'application/json' -mime.lookup('.md') // 'text/x-markdown' -mime.lookup('file.html') // 'text/html' -mime.lookup('folder/file.js') // 'application/javascript' -mime.lookup('folder/.htaccess') // false - -mime.lookup('cats') // false -``` - -### mime.contentType(type) - -Create a full content-type header given a content-type or extension. - -```js -mime.contentType('markdown') // 'text/x-markdown; charset=utf-8' -mime.contentType('file.json') // 'application/json; charset=utf-8' - -// from a full path -mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8' -``` - -### mime.extension(type) - -Get the default extension for a content-type. - -```js -mime.extension('application/octet-stream') // 'bin' -``` - -### mime.charset(type) - -Lookup the implied default charset of a content-type. - -```js -mime.charset('text/x-markdown') // 'UTF-8' -``` - -### var type = mime.types[extension] - -A map of content-types by extension. - -### [extensions...] = mime.extensions[type] - -A map of extensions by content-type. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/mime-types.svg -[npm-url]: https://npmjs.org/package/mime-types -[node-version-image]: https://img.shields.io/node/v/mime-types.svg -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/mime-types/master.svg -[travis-url]: https://travis-ci.org/jshttp/mime-types -[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-types/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/mime-types -[downloads-image]: https://img.shields.io/npm/dm/mime-types.svg -[downloads-url]: https://npmjs.org/package/mime-types diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/index.js b/node_modules/express/node_modules/type-is/node_modules/mime-types/index.js deleted file mode 100644 index 9edf72b..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/index.js +++ /dev/null @@ -1,188 +0,0 @@ -/*! - * mime-types - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var db = require('mime-db') -var extname = require('path').extname - -/** - * Module variables. - * @private - */ - -var extractTypeRegExp = /^\s*([^;\s]*)(?:;|\s|$)/ -var textTypeRegExp = /^text\//i - -/** - * Module exports. - * @public - */ - -exports.charset = charset -exports.charsets = { lookup: charset } -exports.contentType = contentType -exports.extension = extension -exports.extensions = Object.create(null) -exports.lookup = lookup -exports.types = Object.create(null) - -// Populate the extensions/types maps -populateMaps(exports.extensions, exports.types) - -/** - * Get the default charset for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function charset(type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = extractTypeRegExp.exec(type) - var mime = match && db[match[1].toLowerCase()] - - if (mime && mime.charset) { - return mime.charset - } - - // default text/* to utf-8 - if (match && textTypeRegExp.test(match[1])) { - return 'UTF-8' - } - - return false -} - -/** - * Create a full Content-Type header given a MIME type or extension. - * - * @param {string} str - * @return {boolean|string} - */ - -function contentType(str) { - // TODO: should this even be in this module? - if (!str || typeof str !== 'string') { - return false - } - - var mime = str.indexOf('/') === -1 - ? exports.lookup(str) - : str - - if (!mime) { - return false - } - - // TODO: use content-type or other module - if (mime.indexOf('charset') === -1) { - var charset = exports.charset(mime) - if (charset) mime += '; charset=' + charset.toLowerCase() - } - - return mime -} - -/** - * Get the default extension for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function extension(type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = extractTypeRegExp.exec(type) - - // get extensions - var exts = match && exports.extensions[match[1].toLowerCase()] - - if (!exts || !exts.length) { - return false - } - - return exts[0] -} - -/** - * Lookup the MIME type for a file path/extension. - * - * @param {string} path - * @return {boolean|string} - */ - -function lookup(path) { - if (!path || typeof path !== 'string') { - return false - } - - // get the extension ("ext" or ".ext" or full path) - var extension = extname('x.' + path) - .toLowerCase() - .substr(1) - - if (!extension) { - return false - } - - return exports.types[extension] || false -} - -/** - * Populate the extensions and types maps. - * @private - */ - -function populateMaps(extensions, types) { - // source preference (least -> most) - var preference = ['nginx', 'apache', undefined, 'iana'] - - Object.keys(db).forEach(function forEachMimeType(type) { - var mime = db[type] - var exts = mime.extensions - - if (!exts || !exts.length) { - return - } - - // mime -> extensions - extensions[type] = exts - - // extension -> mime - for (var i = 0; i < exts.length; i++) { - var extension = exts[i] - - if (types[extension]) { - var from = preference.indexOf(db[types[extension]].source) - var to = preference.indexOf(mime.source) - - if (types[extension] !== 'application/octet-stream' - && from > to || (from === to && types[extension].substr(0, 12) === 'application/')) { - // skip the remapping - return - } - } - - // set the extension -> mime - types[extension] = type - } - }) -} diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/HISTORY.md b/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/HISTORY.md deleted file mode 100644 index fa40614..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/HISTORY.md +++ /dev/null @@ -1,241 +0,0 @@ -1.15.0 / 2015-07-13 -=================== - - * Add `application/x-httpd-php` - -1.14.0 / 2015-06-25 -=================== - - * Add `application/scim+json` - * Add `application/vnd.3gpp.ussd+xml` - * Add `application/vnd.biopax.rdf+xml` - * Add `text/x-processing` - -1.13.0 / 2015-06-07 -=================== - - * Add nginx as a source - * Add `application/x-cocoa` - * Add `application/x-java-archive-diff` - * Add `application/x-makeself` - * Add `application/x-perl` - * Add `application/x-pilot` - * Add `application/x-redhat-package-manager` - * Add `application/x-sea` - * Add `audio/x-m4a` - * Add `audio/x-realaudio` - * Add `image/x-jng` - * Add `text/mathml` - -1.12.0 / 2015-06-05 -=================== - - * Add `application/bdoc` - * Add `application/vnd.hyperdrive+json` - * Add `application/x-bdoc` - * Add extension `.rtf` to `text/rtf` - -1.11.0 / 2015-05-31 -=================== - - * Add `audio/wav` - * Add `audio/wave` - * Add extension `.litcoffee` to `text/coffeescript` - * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data` - * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install` - -1.10.0 / 2015-05-19 -=================== - - * Add `application/vnd.balsamiq.bmpr` - * Add `application/vnd.microsoft.portable-executable` - * Add `application/x-ns-proxy-autoconfig` - -1.9.1 / 2015-04-19 -================== - - * Remove `.json` extension from `application/manifest+json` - - This is causing bugs downstream - -1.9.0 / 2015-04-19 -================== - - * Add `application/manifest+json` - * Add `application/vnd.micro+json` - * Add `image/vnd.zbrush.pcx` - * Add `image/x-ms-bmp` - -1.8.0 / 2015-03-13 -================== - - * Add `application/vnd.citationstyles.style+xml` - * Add `application/vnd.fastcopy-disk-image` - * Add `application/vnd.gov.sk.xmldatacontainer+xml` - * Add extension `.jsonld` to `application/ld+json` - -1.7.0 / 2015-02-08 -================== - - * Add `application/vnd.gerber` - * Add `application/vnd.msa-disk-image` - -1.6.1 / 2015-02-05 -================== - - * Community extensions ownership transferred from `node-mime` - -1.6.0 / 2015-01-29 -================== - - * Add `application/jose` - * Add `application/jose+json` - * Add `application/json-seq` - * Add `application/jwk+json` - * Add `application/jwk-set+json` - * Add `application/jwt` - * Add `application/rdap+json` - * Add `application/vnd.gov.sk.e-form+xml` - * Add `application/vnd.ims.imsccv1p3` - -1.5.0 / 2014-12-30 -================== - - * Add `application/vnd.oracle.resource+json` - * Fix various invalid MIME type entries - - `application/mbox+xml` - - `application/oscp-response` - - `application/vwg-multiplexed` - - `audio/g721` - -1.4.0 / 2014-12-21 -================== - - * Add `application/vnd.ims.imsccv1p2` - * Fix various invalid MIME type entries - - `application/vnd-acucobol` - - `application/vnd-curl` - - `application/vnd-dart` - - `application/vnd-dxr` - - `application/vnd-fdf` - - `application/vnd-mif` - - `application/vnd-sema` - - `application/vnd-wap-wmlc` - - `application/vnd.adobe.flash-movie` - - `application/vnd.dece-zip` - - `application/vnd.dvb_service` - - `application/vnd.micrografx-igx` - - `application/vnd.sealed-doc` - - `application/vnd.sealed-eml` - - `application/vnd.sealed-mht` - - `application/vnd.sealed-ppt` - - `application/vnd.sealed-tiff` - - `application/vnd.sealed-xls` - - `application/vnd.sealedmedia.softseal-html` - - `application/vnd.sealedmedia.softseal-pdf` - - `application/vnd.wap-slc` - - `application/vnd.wap-wbxml` - - `audio/vnd.sealedmedia.softseal-mpeg` - - `image/vnd-djvu` - - `image/vnd-svf` - - `image/vnd-wap-wbmp` - - `image/vnd.sealed-png` - - `image/vnd.sealedmedia.softseal-gif` - - `image/vnd.sealedmedia.softseal-jpg` - - `model/vnd-dwf` - - `model/vnd.parasolid.transmit-binary` - - `model/vnd.parasolid.transmit-text` - - `text/vnd-a` - - `text/vnd-curl` - - `text/vnd.wap-wml` - * Remove example template MIME types - - `application/example` - - `audio/example` - - `image/example` - - `message/example` - - `model/example` - - `multipart/example` - - `text/example` - - `video/example` - -1.3.1 / 2014-12-16 -================== - - * Fix missing extensions - - `application/json5` - - `text/hjson` - -1.3.0 / 2014-12-07 -================== - - * Add `application/a2l` - * Add `application/aml` - * Add `application/atfx` - * Add `application/atxml` - * Add `application/cdfx+xml` - * Add `application/dii` - * Add `application/json5` - * Add `application/lxf` - * Add `application/mf4` - * Add `application/vnd.apache.thrift.compact` - * Add `application/vnd.apache.thrift.json` - * Add `application/vnd.coffeescript` - * Add `application/vnd.enphase.envoy` - * Add `application/vnd.ims.imsccv1p1` - * Add `text/csv-schema` - * Add `text/hjson` - * Add `text/markdown` - * Add `text/yaml` - -1.2.0 / 2014-11-09 -================== - - * Add `application/cea` - * Add `application/dit` - * Add `application/vnd.gov.sk.e-form+zip` - * Add `application/vnd.tmd.mediaflex.api+xml` - * Type `application/epub+zip` is now IANA-registered - -1.1.2 / 2014-10-23 -================== - - * Rebuild database for `application/x-www-form-urlencoded` change - -1.1.1 / 2014-10-20 -================== - - * Mark `application/x-www-form-urlencoded` as compressible. - -1.1.0 / 2014-09-28 -================== - - * Add `application/font-woff2` - -1.0.3 / 2014-09-25 -================== - - * Fix engine requirement in package - -1.0.2 / 2014-09-25 -================== - - * Add `application/coap-group+json` - * Add `application/dcd` - * Add `application/vnd.apache.thrift.binary` - * Add `image/vnd.tencent.tap` - * Mark all JSON-derived types as compressible - * Update `text/vtt` data - -1.0.1 / 2014-08-30 -================== - - * Fix extension ordering - -1.0.0 / 2014-08-30 -================== - - * Add `application/atf` - * Add `application/merge-patch+json` - * Add `multipart/x-mixed-replace` - * Add `source: 'apache'` metadata - * Add `source: 'iana'` metadata - * Remove badly-assumed charset data diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/LICENSE b/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/LICENSE deleted file mode 100644 index a7ae8ee..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2014 Jonathan Ong me@jongleberry.com - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/README.md b/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/README.md deleted file mode 100644 index 164cca0..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/README.md +++ /dev/null @@ -1,82 +0,0 @@ -# mime-db - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][travis-image]][travis-url] -[![Coverage Status][coveralls-image]][coveralls-url] - -This is a database of all mime types. -It consists of a single, public JSON file and does not include any logic, -allowing it to remain as un-opinionated as possible with an API. -It aggregates data from the following sources: - -- http://www.iana.org/assignments/media-types/media-types.xhtml -- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types -- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types - -## Installation - -```bash -npm install mime-db -``` - -### Database Download - -If you're crazy enough to use this in the browser, you can just grab the -JSON file using [RawGit](https://rawgit.com/). It is recommended to replace -`master` with [a release tag](https://github.com/jshttp/mime-db/tags) as the -JSON format may change in the future. - -``` -https://cdn.rawgit.com/jshttp/mime-db/master/db.json -``` - -## Usage - -```js -var db = require('mime-db'); - -// grab data on .js files -var data = db['application/javascript']; -``` - -## Data Structure - -The JSON file is a map lookup for lowercased mime types. -Each mime type has the following properties: - -- `.source` - where the mime type is defined. - If not set, it's probably a custom media type. - - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) - - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml) - - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types) -- `.extensions[]` - known extensions associated with this mime type. -- `.compressible` - whether a file of this type is can be gzipped. -- `.charset` - the default charset associated with this type, if any. - -If unknown, every property could be `undefined`. - -## Contributing - -To edit the database, only make PRs against `src/custom.json` or -`src/custom-suffix.json`. - -To update the build, run `npm run build`. - -## Adding Custom Media Types - -The best way to get new media types included in this library is to register -them with the IANA. The community registration procedure is outlined in -[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types -registered with the IANA are automatically pulled into this library. - -[npm-version-image]: https://img.shields.io/npm/v/mime-db.svg -[npm-downloads-image]: https://img.shields.io/npm/dm/mime-db.svg -[npm-url]: https://npmjs.org/package/mime-db -[travis-image]: https://img.shields.io/travis/jshttp/mime-db/master.svg -[travis-url]: https://travis-ci.org/jshttp/mime-db -[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-db/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master -[node-image]: https://img.shields.io/node/v/mime-db.svg -[node-url]: http://nodejs.org/download/ diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/db.json b/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/db.json deleted file mode 100644 index 2f2dc44..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/db.json +++ /dev/null @@ -1,6424 +0,0 @@ -{ - "application/1d-interleaved-parityfec": { - "source": "iana" - }, - "application/3gpdash-qoe-report+xml": { - "source": "iana" - }, - "application/3gpp-ims+xml": { - "source": "iana" - }, - "application/a2l": { - "source": "iana" - }, - "application/activemessage": { - "source": "iana" - }, - "application/alto-costmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-costmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/alto-directory+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcost+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcostparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointprop+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointpropparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-error+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/aml": { - "source": "iana" - }, - "application/andrew-inset": { - "source": "iana", - "extensions": ["ez"] - }, - "application/applefile": { - "source": "iana" - }, - "application/applixware": { - "source": "apache", - "extensions": ["aw"] - }, - "application/atf": { - "source": "iana" - }, - "application/atfx": { - "source": "iana" - }, - "application/atom+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atom"] - }, - "application/atomcat+xml": { - "source": "iana", - "extensions": ["atomcat"] - }, - "application/atomdeleted+xml": { - "source": "iana" - }, - "application/atomicmail": { - "source": "iana" - }, - "application/atomsvc+xml": { - "source": "iana", - "extensions": ["atomsvc"] - }, - "application/atxml": { - "source": "iana" - }, - "application/auth-policy+xml": { - "source": "iana" - }, - "application/bacnet-xdd+zip": { - "source": "iana" - }, - "application/batch-smtp": { - "source": "iana" - }, - "application/bdoc": { - "compressible": false, - "extensions": ["bdoc"] - }, - "application/beep+xml": { - "source": "iana" - }, - "application/calendar+json": { - "source": "iana", - "compressible": true - }, - "application/calendar+xml": { - "source": "iana" - }, - "application/call-completion": { - "source": "iana" - }, - "application/cals-1840": { - "source": "iana" - }, - "application/cbor": { - "source": "iana" - }, - "application/ccmp+xml": { - "source": "iana" - }, - "application/ccxml+xml": { - "source": "iana", - "extensions": ["ccxml"] - }, - "application/cdfx+xml": { - "source": "iana" - }, - "application/cdmi-capability": { - "source": "iana", - "extensions": ["cdmia"] - }, - "application/cdmi-container": { - "source": "iana", - "extensions": ["cdmic"] - }, - "application/cdmi-domain": { - "source": "iana", - "extensions": ["cdmid"] - }, - "application/cdmi-object": { - "source": "iana", - "extensions": ["cdmio"] - }, - "application/cdmi-queue": { - "source": "iana", - "extensions": ["cdmiq"] - }, - "application/cea": { - "source": "iana" - }, - "application/cea-2018+xml": { - "source": "iana" - }, - "application/cellml+xml": { - "source": "iana" - }, - "application/cfw": { - "source": "iana" - }, - "application/cms": { - "source": "iana" - }, - "application/cnrp+xml": { - "source": "iana" - }, - "application/coap-group+json": { - "source": "iana", - "compressible": true - }, - "application/commonground": { - "source": "iana" - }, - "application/conference-info+xml": { - "source": "iana" - }, - "application/cpl+xml": { - "source": "iana" - }, - "application/csrattrs": { - "source": "iana" - }, - "application/csta+xml": { - "source": "iana" - }, - "application/cstadata+xml": { - "source": "iana" - }, - "application/cu-seeme": { - "source": "apache", - "extensions": ["cu"] - }, - "application/cybercash": { - "source": "iana" - }, - "application/dart": { - "compressible": true - }, - "application/dash+xml": { - "source": "iana", - "extensions": ["mdp"] - }, - "application/dashdelta": { - "source": "iana" - }, - "application/davmount+xml": { - "source": "iana", - "extensions": ["davmount"] - }, - "application/dca-rft": { - "source": "iana" - }, - "application/dcd": { - "source": "iana" - }, - "application/dec-dx": { - "source": "iana" - }, - "application/dialog-info+xml": { - "source": "iana" - }, - "application/dicom": { - "source": "iana" - }, - "application/dii": { - "source": "iana" - }, - "application/dit": { - "source": "iana" - }, - "application/dns": { - "source": "iana" - }, - "application/docbook+xml": { - "source": "apache", - "extensions": ["dbk"] - }, - "application/dskpp+xml": { - "source": "iana" - }, - "application/dssc+der": { - "source": "iana", - "extensions": ["dssc"] - }, - "application/dssc+xml": { - "source": "iana", - "extensions": ["xdssc"] - }, - "application/dvcs": { - "source": "iana" - }, - "application/ecmascript": { - "source": "iana", - "compressible": true, - "extensions": ["ecma"] - }, - "application/edi-consent": { - "source": "iana" - }, - "application/edi-x12": { - "source": "iana", - "compressible": false - }, - "application/edifact": { - "source": "iana", - "compressible": false - }, - "application/emma+xml": { - "source": "iana", - "extensions": ["emma"] - }, - "application/emotionml+xml": { - "source": "iana" - }, - "application/encaprtp": { - "source": "iana" - }, - "application/epp+xml": { - "source": "iana" - }, - "application/epub+zip": { - "source": "iana", - "extensions": ["epub"] - }, - "application/eshop": { - "source": "iana" - }, - "application/exi": { - "source": "iana", - "extensions": ["exi"] - }, - "application/fastinfoset": { - "source": "iana" - }, - "application/fastsoap": { - "source": "iana" - }, - "application/fdt+xml": { - "source": "iana" - }, - "application/fits": { - "source": "iana" - }, - "application/font-sfnt": { - "source": "iana" - }, - "application/font-tdpfr": { - "source": "iana", - "extensions": ["pfr"] - }, - "application/font-woff": { - "source": "iana", - "compressible": false, - "extensions": ["woff"] - }, - "application/font-woff2": { - "compressible": false, - "extensions": ["woff2"] - }, - "application/framework-attributes+xml": { - "source": "iana" - }, - "application/gml+xml": { - "source": "apache", - "extensions": ["gml"] - }, - "application/gpx+xml": { - "source": "apache", - "extensions": ["gpx"] - }, - "application/gxf": { - "source": "apache", - "extensions": ["gxf"] - }, - "application/gzip": { - "source": "iana", - "compressible": false - }, - "application/h224": { - "source": "iana" - }, - "application/held+xml": { - "source": "iana" - }, - "application/http": { - "source": "iana" - }, - "application/hyperstudio": { - "source": "iana", - "extensions": ["stk"] - }, - "application/ibe-key-request+xml": { - "source": "iana" - }, - "application/ibe-pkg-reply+xml": { - "source": "iana" - }, - "application/ibe-pp-data": { - "source": "iana" - }, - "application/iges": { - "source": "iana" - }, - "application/im-iscomposing+xml": { - "source": "iana" - }, - "application/index": { - "source": "iana" - }, - "application/index.cmd": { - "source": "iana" - }, - "application/index.obj": { - "source": "iana" - }, - "application/index.response": { - "source": "iana" - }, - "application/index.vnd": { - "source": "iana" - }, - "application/inkml+xml": { - "source": "iana", - "extensions": ["ink","inkml"] - }, - "application/iotp": { - "source": "iana" - }, - "application/ipfix": { - "source": "iana", - "extensions": ["ipfix"] - }, - "application/ipp": { - "source": "iana" - }, - "application/isup": { - "source": "iana" - }, - "application/its+xml": { - "source": "iana" - }, - "application/java-archive": { - "source": "apache", - "compressible": false, - "extensions": ["jar","war","ear"] - }, - "application/java-serialized-object": { - "source": "apache", - "compressible": false, - "extensions": ["ser"] - }, - "application/java-vm": { - "source": "apache", - "compressible": false, - "extensions": ["class"] - }, - "application/javascript": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["js"] - }, - "application/jose": { - "source": "iana" - }, - "application/jose+json": { - "source": "iana", - "compressible": true - }, - "application/jrd+json": { - "source": "iana", - "compressible": true - }, - "application/json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["json","map"] - }, - "application/json-patch+json": { - "source": "iana", - "compressible": true - }, - "application/json-seq": { - "source": "iana" - }, - "application/json5": { - "extensions": ["json5"] - }, - "application/jsonml+json": { - "source": "apache", - "compressible": true, - "extensions": ["jsonml"] - }, - "application/jwk+json": { - "source": "iana", - "compressible": true - }, - "application/jwk-set+json": { - "source": "iana", - "compressible": true - }, - "application/jwt": { - "source": "iana" - }, - "application/kpml-request+xml": { - "source": "iana" - }, - "application/kpml-response+xml": { - "source": "iana" - }, - "application/ld+json": { - "source": "iana", - "compressible": true, - "extensions": ["jsonld"] - }, - "application/link-format": { - "source": "iana" - }, - "application/load-control+xml": { - "source": "iana" - }, - "application/lost+xml": { - "source": "iana", - "extensions": ["lostxml"] - }, - "application/lostsync+xml": { - "source": "iana" - }, - "application/lxf": { - "source": "iana" - }, - "application/mac-binhex40": { - "source": "iana", - "extensions": ["hqx"] - }, - "application/mac-compactpro": { - "source": "apache", - "extensions": ["cpt"] - }, - "application/macwriteii": { - "source": "iana" - }, - "application/mads+xml": { - "source": "iana", - "extensions": ["mads"] - }, - "application/manifest+json": { - "charset": "UTF-8", - "compressible": true, - "extensions": ["webmanifest"] - }, - "application/marc": { - "source": "iana", - "extensions": ["mrc"] - }, - "application/marcxml+xml": { - "source": "iana", - "extensions": ["mrcx"] - }, - "application/mathematica": { - "source": "iana", - "extensions": ["ma","nb","mb"] - }, - "application/mathml+xml": { - "source": "iana", - "extensions": ["mathml"] - }, - "application/mathml-content+xml": { - "source": "iana" - }, - "application/mathml-presentation+xml": { - "source": "iana" - }, - "application/mbms-associated-procedure-description+xml": { - "source": "iana" - }, - "application/mbms-deregister+xml": { - "source": "iana" - }, - "application/mbms-envelope+xml": { - "source": "iana" - }, - "application/mbms-msk+xml": { - "source": "iana" - }, - "application/mbms-msk-response+xml": { - "source": "iana" - }, - "application/mbms-protection-description+xml": { - "source": "iana" - }, - "application/mbms-reception-report+xml": { - "source": "iana" - }, - "application/mbms-register+xml": { - "source": "iana" - }, - "application/mbms-register-response+xml": { - "source": "iana" - }, - "application/mbms-schedule+xml": { - "source": "iana" - }, - "application/mbms-user-service-description+xml": { - "source": "iana" - }, - "application/mbox": { - "source": "iana", - "extensions": ["mbox"] - }, - "application/media-policy-dataset+xml": { - "source": "iana" - }, - "application/media_control+xml": { - "source": "iana" - }, - "application/mediaservercontrol+xml": { - "source": "iana", - "extensions": ["mscml"] - }, - "application/merge-patch+json": { - "source": "iana", - "compressible": true - }, - "application/metalink+xml": { - "source": "apache", - "extensions": ["metalink"] - }, - "application/metalink4+xml": { - "source": "iana", - "extensions": ["meta4"] - }, - "application/mets+xml": { - "source": "iana", - "extensions": ["mets"] - }, - "application/mf4": { - "source": "iana" - }, - "application/mikey": { - "source": "iana" - }, - "application/mods+xml": { - "source": "iana", - "extensions": ["mods"] - }, - "application/moss-keys": { - "source": "iana" - }, - "application/moss-signature": { - "source": "iana" - }, - "application/mosskey-data": { - "source": "iana" - }, - "application/mosskey-request": { - "source": "iana" - }, - "application/mp21": { - "source": "iana", - "extensions": ["m21","mp21"] - }, - "application/mp4": { - "source": "iana", - "extensions": ["mp4s","m4p"] - }, - "application/mpeg4-generic": { - "source": "iana" - }, - "application/mpeg4-iod": { - "source": "iana" - }, - "application/mpeg4-iod-xmt": { - "source": "iana" - }, - "application/mrb-consumer+xml": { - "source": "iana" - }, - "application/mrb-publish+xml": { - "source": "iana" - }, - "application/msc-ivr+xml": { - "source": "iana" - }, - "application/msc-mixer+xml": { - "source": "iana" - }, - "application/msword": { - "source": "iana", - "compressible": false, - "extensions": ["doc","dot"] - }, - "application/mxf": { - "source": "iana", - "extensions": ["mxf"] - }, - "application/nasdata": { - "source": "iana" - }, - "application/news-checkgroups": { - "source": "iana" - }, - "application/news-groupinfo": { - "source": "iana" - }, - "application/news-transmission": { - "source": "iana" - }, - "application/nlsml+xml": { - "source": "iana" - }, - "application/nss": { - "source": "iana" - }, - "application/ocsp-request": { - "source": "iana" - }, - "application/ocsp-response": { - "source": "iana" - }, - "application/octet-stream": { - "source": "iana", - "compressible": false, - "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] - }, - "application/oda": { - "source": "iana", - "extensions": ["oda"] - }, - "application/odx": { - "source": "iana" - }, - "application/oebps-package+xml": { - "source": "iana", - "extensions": ["opf"] - }, - "application/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["ogx"] - }, - "application/omdoc+xml": { - "source": "apache", - "extensions": ["omdoc"] - }, - "application/onenote": { - "source": "apache", - "extensions": ["onetoc","onetoc2","onetmp","onepkg"] - }, - "application/oxps": { - "source": "iana", - "extensions": ["oxps"] - }, - "application/p2p-overlay+xml": { - "source": "iana" - }, - "application/parityfec": { - "source": "iana" - }, - "application/patch-ops-error+xml": { - "source": "iana", - "extensions": ["xer"] - }, - "application/pdf": { - "source": "iana", - "compressible": false, - "extensions": ["pdf"] - }, - "application/pdx": { - "source": "iana" - }, - "application/pgp-encrypted": { - "source": "iana", - "compressible": false, - "extensions": ["pgp"] - }, - "application/pgp-keys": { - "source": "iana" - }, - "application/pgp-signature": { - "source": "iana", - "extensions": ["asc","sig"] - }, - "application/pics-rules": { - "source": "apache", - "extensions": ["prf"] - }, - "application/pidf+xml": { - "source": "iana" - }, - "application/pidf-diff+xml": { - "source": "iana" - }, - "application/pkcs10": { - "source": "iana", - "extensions": ["p10"] - }, - "application/pkcs7-mime": { - "source": "iana", - "extensions": ["p7m","p7c"] - }, - "application/pkcs7-signature": { - "source": "iana", - "extensions": ["p7s"] - }, - "application/pkcs8": { - "source": "iana", - "extensions": ["p8"] - }, - "application/pkix-attr-cert": { - "source": "iana", - "extensions": ["ac"] - }, - "application/pkix-cert": { - "source": "iana", - "extensions": ["cer"] - }, - "application/pkix-crl": { - "source": "iana", - "extensions": ["crl"] - }, - "application/pkix-pkipath": { - "source": "iana", - "extensions": ["pkipath"] - }, - "application/pkixcmp": { - "source": "iana", - "extensions": ["pki"] - }, - "application/pls+xml": { - "source": "iana", - "extensions": ["pls"] - }, - "application/poc-settings+xml": { - "source": "iana" - }, - "application/postscript": { - "source": "iana", - "compressible": true, - "extensions": ["ai","eps","ps"] - }, - "application/provenance+xml": { - "source": "iana" - }, - "application/prs.alvestrand.titrax-sheet": { - "source": "iana" - }, - "application/prs.cww": { - "source": "iana", - "extensions": ["cww"] - }, - "application/prs.hpub+zip": { - "source": "iana" - }, - "application/prs.nprend": { - "source": "iana" - }, - "application/prs.plucker": { - "source": "iana" - }, - "application/prs.rdf-xml-crypt": { - "source": "iana" - }, - "application/prs.xsf+xml": { - "source": "iana" - }, - "application/pskc+xml": { - "source": "iana", - "extensions": ["pskcxml"] - }, - "application/qsig": { - "source": "iana" - }, - "application/raptorfec": { - "source": "iana" - }, - "application/rdap+json": { - "source": "iana", - "compressible": true - }, - "application/rdf+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rdf"] - }, - "application/reginfo+xml": { - "source": "iana", - "extensions": ["rif"] - }, - "application/relax-ng-compact-syntax": { - "source": "iana", - "extensions": ["rnc"] - }, - "application/remote-printing": { - "source": "iana" - }, - "application/reputon+json": { - "source": "iana", - "compressible": true - }, - "application/resource-lists+xml": { - "source": "iana", - "extensions": ["rl"] - }, - "application/resource-lists-diff+xml": { - "source": "iana", - "extensions": ["rld"] - }, - "application/riscos": { - "source": "iana" - }, - "application/rlmi+xml": { - "source": "iana" - }, - "application/rls-services+xml": { - "source": "iana", - "extensions": ["rs"] - }, - "application/rpki-ghostbusters": { - "source": "iana", - "extensions": ["gbr"] - }, - "application/rpki-manifest": { - "source": "iana", - "extensions": ["mft"] - }, - "application/rpki-roa": { - "source": "iana", - "extensions": ["roa"] - }, - "application/rpki-updown": { - "source": "iana" - }, - "application/rsd+xml": { - "source": "apache", - "extensions": ["rsd"] - }, - "application/rss+xml": { - "source": "apache", - "compressible": true, - "extensions": ["rss"] - }, - "application/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "application/rtploopback": { - "source": "iana" - }, - "application/rtx": { - "source": "iana" - }, - "application/samlassertion+xml": { - "source": "iana" - }, - "application/samlmetadata+xml": { - "source": "iana" - }, - "application/sbml+xml": { - "source": "iana", - "extensions": ["sbml"] - }, - "application/scaip+xml": { - "source": "iana" - }, - "application/scim+json": { - "source": "iana", - "compressible": true - }, - "application/scvp-cv-request": { - "source": "iana", - "extensions": ["scq"] - }, - "application/scvp-cv-response": { - "source": "iana", - "extensions": ["scs"] - }, - "application/scvp-vp-request": { - "source": "iana", - "extensions": ["spq"] - }, - "application/scvp-vp-response": { - "source": "iana", - "extensions": ["spp"] - }, - "application/sdp": { - "source": "iana", - "extensions": ["sdp"] - }, - "application/sep+xml": { - "source": "iana" - }, - "application/sep-exi": { - "source": "iana" - }, - "application/session-info": { - "source": "iana" - }, - "application/set-payment": { - "source": "iana" - }, - "application/set-payment-initiation": { - "source": "iana", - "extensions": ["setpay"] - }, - "application/set-registration": { - "source": "iana" - }, - "application/set-registration-initiation": { - "source": "iana", - "extensions": ["setreg"] - }, - "application/sgml": { - "source": "iana" - }, - "application/sgml-open-catalog": { - "source": "iana" - }, - "application/shf+xml": { - "source": "iana", - "extensions": ["shf"] - }, - "application/sieve": { - "source": "iana" - }, - "application/simple-filter+xml": { - "source": "iana" - }, - "application/simple-message-summary": { - "source": "iana" - }, - "application/simplesymbolcontainer": { - "source": "iana" - }, - "application/slate": { - "source": "iana" - }, - "application/smil": { - "source": "iana" - }, - "application/smil+xml": { - "source": "iana", - "extensions": ["smi","smil"] - }, - "application/smpte336m": { - "source": "iana" - }, - "application/soap+fastinfoset": { - "source": "iana" - }, - "application/soap+xml": { - "source": "iana", - "compressible": true - }, - "application/sparql-query": { - "source": "iana", - "extensions": ["rq"] - }, - "application/sparql-results+xml": { - "source": "iana", - "extensions": ["srx"] - }, - "application/spirits-event+xml": { - "source": "iana" - }, - "application/sql": { - "source": "iana" - }, - "application/srgs": { - "source": "iana", - "extensions": ["gram"] - }, - "application/srgs+xml": { - "source": "iana", - "extensions": ["grxml"] - }, - "application/sru+xml": { - "source": "iana", - "extensions": ["sru"] - }, - "application/ssdl+xml": { - "source": "apache", - "extensions": ["ssdl"] - }, - "application/ssml+xml": { - "source": "iana", - "extensions": ["ssml"] - }, - "application/tamp-apex-update": { - "source": "iana" - }, - "application/tamp-apex-update-confirm": { - "source": "iana" - }, - "application/tamp-community-update": { - "source": "iana" - }, - "application/tamp-community-update-confirm": { - "source": "iana" - }, - "application/tamp-error": { - "source": "iana" - }, - "application/tamp-sequence-adjust": { - "source": "iana" - }, - "application/tamp-sequence-adjust-confirm": { - "source": "iana" - }, - "application/tamp-status-query": { - "source": "iana" - }, - "application/tamp-status-response": { - "source": "iana" - }, - "application/tamp-update": { - "source": "iana" - }, - "application/tamp-update-confirm": { - "source": "iana" - }, - "application/tar": { - "compressible": true - }, - "application/tei+xml": { - "source": "iana", - "extensions": ["tei","teicorpus"] - }, - "application/thraud+xml": { - "source": "iana", - "extensions": ["tfi"] - }, - "application/timestamp-query": { - "source": "iana" - }, - "application/timestamp-reply": { - "source": "iana" - }, - "application/timestamped-data": { - "source": "iana", - "extensions": ["tsd"] - }, - "application/ttml+xml": { - "source": "iana" - }, - "application/tve-trigger": { - "source": "iana" - }, - "application/ulpfec": { - "source": "iana" - }, - "application/urc-grpsheet+xml": { - "source": "iana" - }, - "application/urc-ressheet+xml": { - "source": "iana" - }, - "application/urc-targetdesc+xml": { - "source": "iana" - }, - "application/urc-uisocketdesc+xml": { - "source": "iana" - }, - "application/vcard+json": { - "source": "iana", - "compressible": true - }, - "application/vcard+xml": { - "source": "iana" - }, - "application/vemmi": { - "source": "iana" - }, - "application/vividence.scriptfile": { - "source": "apache" - }, - "application/vnd.3gpp.bsf+xml": { - "source": "iana" - }, - "application/vnd.3gpp.pic-bw-large": { - "source": "iana", - "extensions": ["plb"] - }, - "application/vnd.3gpp.pic-bw-small": { - "source": "iana", - "extensions": ["psb"] - }, - "application/vnd.3gpp.pic-bw-var": { - "source": "iana", - "extensions": ["pvb"] - }, - "application/vnd.3gpp.sms": { - "source": "iana" - }, - "application/vnd.3gpp.ussd+xml": { - "source": "iana" - }, - "application/vnd.3gpp2.bcmcsinfo+xml": { - "source": "iana" - }, - "application/vnd.3gpp2.sms": { - "source": "iana" - }, - "application/vnd.3gpp2.tcap": { - "source": "iana", - "extensions": ["tcap"] - }, - "application/vnd.3m.post-it-notes": { - "source": "iana", - "extensions": ["pwn"] - }, - "application/vnd.accpac.simply.aso": { - "source": "iana", - "extensions": ["aso"] - }, - "application/vnd.accpac.simply.imp": { - "source": "iana", - "extensions": ["imp"] - }, - "application/vnd.acucobol": { - "source": "iana", - "extensions": ["acu"] - }, - "application/vnd.acucorp": { - "source": "iana", - "extensions": ["atc","acutc"] - }, - "application/vnd.adobe.air-application-installer-package+zip": { - "source": "apache", - "extensions": ["air"] - }, - "application/vnd.adobe.flash.movie": { - "source": "iana" - }, - "application/vnd.adobe.formscentral.fcdt": { - "source": "iana", - "extensions": ["fcdt"] - }, - "application/vnd.adobe.fxp": { - "source": "iana", - "extensions": ["fxp","fxpl"] - }, - "application/vnd.adobe.partial-upload": { - "source": "iana" - }, - "application/vnd.adobe.xdp+xml": { - "source": "iana", - "extensions": ["xdp"] - }, - "application/vnd.adobe.xfdf": { - "source": "iana", - "extensions": ["xfdf"] - }, - "application/vnd.aether.imp": { - "source": "iana" - }, - "application/vnd.ah-barcode": { - "source": "iana" - }, - "application/vnd.ahead.space": { - "source": "iana", - "extensions": ["ahead"] - }, - "application/vnd.airzip.filesecure.azf": { - "source": "iana", - "extensions": ["azf"] - }, - "application/vnd.airzip.filesecure.azs": { - "source": "iana", - "extensions": ["azs"] - }, - "application/vnd.amazon.ebook": { - "source": "apache", - "extensions": ["azw"] - }, - "application/vnd.americandynamics.acc": { - "source": "iana", - "extensions": ["acc"] - }, - "application/vnd.amiga.ami": { - "source": "iana", - "extensions": ["ami"] - }, - "application/vnd.amundsen.maze+xml": { - "source": "iana" - }, - "application/vnd.android.package-archive": { - "source": "apache", - "compressible": false, - "extensions": ["apk"] - }, - "application/vnd.anser-web-certificate-issue-initiation": { - "source": "iana", - "extensions": ["cii"] - }, - "application/vnd.anser-web-funds-transfer-initiation": { - "source": "apache", - "extensions": ["fti"] - }, - "application/vnd.antix.game-component": { - "source": "iana", - "extensions": ["atx"] - }, - "application/vnd.apache.thrift.binary": { - "source": "iana" - }, - "application/vnd.apache.thrift.compact": { - "source": "iana" - }, - "application/vnd.apache.thrift.json": { - "source": "iana" - }, - "application/vnd.api+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.apple.installer+xml": { - "source": "iana", - "extensions": ["mpkg"] - }, - "application/vnd.apple.mpegurl": { - "source": "iana", - "extensions": ["m3u8"] - }, - "application/vnd.arastra.swi": { - "source": "iana" - }, - "application/vnd.aristanetworks.swi": { - "source": "iana", - "extensions": ["swi"] - }, - "application/vnd.artsquare": { - "source": "iana" - }, - "application/vnd.astraea-software.iota": { - "source": "iana", - "extensions": ["iota"] - }, - "application/vnd.audiograph": { - "source": "iana", - "extensions": ["aep"] - }, - "application/vnd.autopackage": { - "source": "iana" - }, - "application/vnd.avistar+xml": { - "source": "iana" - }, - "application/vnd.balsamiq.bmml+xml": { - "source": "iana" - }, - "application/vnd.balsamiq.bmpr": { - "source": "iana" - }, - "application/vnd.bekitzur-stech+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.biopax.rdf+xml": { - "source": "iana" - }, - "application/vnd.blueice.multipass": { - "source": "iana", - "extensions": ["mpm"] - }, - "application/vnd.bluetooth.ep.oob": { - "source": "iana" - }, - "application/vnd.bluetooth.le.oob": { - "source": "iana" - }, - "application/vnd.bmi": { - "source": "iana", - "extensions": ["bmi"] - }, - "application/vnd.businessobjects": { - "source": "iana", - "extensions": ["rep"] - }, - "application/vnd.cab-jscript": { - "source": "iana" - }, - "application/vnd.canon-cpdl": { - "source": "iana" - }, - "application/vnd.canon-lips": { - "source": "iana" - }, - "application/vnd.cendio.thinlinc.clientconf": { - "source": "iana" - }, - "application/vnd.century-systems.tcp_stream": { - "source": "iana" - }, - "application/vnd.chemdraw+xml": { - "source": "iana", - "extensions": ["cdxml"] - }, - "application/vnd.chipnuts.karaoke-mmd": { - "source": "iana", - "extensions": ["mmd"] - }, - "application/vnd.cinderella": { - "source": "iana", - "extensions": ["cdy"] - }, - "application/vnd.cirpack.isdn-ext": { - "source": "iana" - }, - "application/vnd.citationstyles.style+xml": { - "source": "iana" - }, - "application/vnd.claymore": { - "source": "iana", - "extensions": ["cla"] - }, - "application/vnd.cloanto.rp9": { - "source": "iana", - "extensions": ["rp9"] - }, - "application/vnd.clonk.c4group": { - "source": "iana", - "extensions": ["c4g","c4d","c4f","c4p","c4u"] - }, - "application/vnd.cluetrust.cartomobile-config": { - "source": "iana", - "extensions": ["c11amc"] - }, - "application/vnd.cluetrust.cartomobile-config-pkg": { - "source": "iana", - "extensions": ["c11amz"] - }, - "application/vnd.coffeescript": { - "source": "iana" - }, - "application/vnd.collection+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.doc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.next+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.commerce-battelle": { - "source": "iana" - }, - "application/vnd.commonspace": { - "source": "iana", - "extensions": ["csp"] - }, - "application/vnd.contact.cmsg": { - "source": "iana", - "extensions": ["cdbcmsg"] - }, - "application/vnd.cosmocaller": { - "source": "iana", - "extensions": ["cmc"] - }, - "application/vnd.crick.clicker": { - "source": "iana", - "extensions": ["clkx"] - }, - "application/vnd.crick.clicker.keyboard": { - "source": "iana", - "extensions": ["clkk"] - }, - "application/vnd.crick.clicker.palette": { - "source": "iana", - "extensions": ["clkp"] - }, - "application/vnd.crick.clicker.template": { - "source": "iana", - "extensions": ["clkt"] - }, - "application/vnd.crick.clicker.wordbank": { - "source": "iana", - "extensions": ["clkw"] - }, - "application/vnd.criticaltools.wbs+xml": { - "source": "iana", - "extensions": ["wbs"] - }, - "application/vnd.ctc-posml": { - "source": "iana", - "extensions": ["pml"] - }, - "application/vnd.ctct.ws+xml": { - "source": "iana" - }, - "application/vnd.cups-pdf": { - "source": "iana" - }, - "application/vnd.cups-postscript": { - "source": "iana" - }, - "application/vnd.cups-ppd": { - "source": "iana", - "extensions": ["ppd"] - }, - "application/vnd.cups-raster": { - "source": "iana" - }, - "application/vnd.cups-raw": { - "source": "iana" - }, - "application/vnd.curl": { - "source": "iana" - }, - "application/vnd.curl.car": { - "source": "apache", - "extensions": ["car"] - }, - "application/vnd.curl.pcurl": { - "source": "apache", - "extensions": ["pcurl"] - }, - "application/vnd.cyan.dean.root+xml": { - "source": "iana" - }, - "application/vnd.cybank": { - "source": "iana" - }, - "application/vnd.dart": { - "source": "iana", - "compressible": true, - "extensions": ["dart"] - }, - "application/vnd.data-vision.rdz": { - "source": "iana", - "extensions": ["rdz"] - }, - "application/vnd.debian.binary-package": { - "source": "iana" - }, - "application/vnd.dece.data": { - "source": "iana", - "extensions": ["uvf","uvvf","uvd","uvvd"] - }, - "application/vnd.dece.ttml+xml": { - "source": "iana", - "extensions": ["uvt","uvvt"] - }, - "application/vnd.dece.unspecified": { - "source": "iana", - "extensions": ["uvx","uvvx"] - }, - "application/vnd.dece.zip": { - "source": "iana", - "extensions": ["uvz","uvvz"] - }, - "application/vnd.denovo.fcselayout-link": { - "source": "iana", - "extensions": ["fe_launch"] - }, - "application/vnd.desmume-movie": { - "source": "iana" - }, - "application/vnd.dir-bi.plate-dl-nosuffix": { - "source": "iana" - }, - "application/vnd.dm.delegation+xml": { - "source": "iana" - }, - "application/vnd.dna": { - "source": "iana", - "extensions": ["dna"] - }, - "application/vnd.document+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dolby.mlp": { - "source": "apache", - "extensions": ["mlp"] - }, - "application/vnd.dolby.mobile.1": { - "source": "iana" - }, - "application/vnd.dolby.mobile.2": { - "source": "iana" - }, - "application/vnd.doremir.scorecloud-binary-document": { - "source": "iana" - }, - "application/vnd.dpgraph": { - "source": "iana", - "extensions": ["dpg"] - }, - "application/vnd.dreamfactory": { - "source": "iana", - "extensions": ["dfac"] - }, - "application/vnd.ds-keypoint": { - "source": "apache", - "extensions": ["kpxx"] - }, - "application/vnd.dtg.local": { - "source": "iana" - }, - "application/vnd.dtg.local.flash": { - "source": "iana" - }, - "application/vnd.dtg.local.html": { - "source": "iana" - }, - "application/vnd.dvb.ait": { - "source": "iana", - "extensions": ["ait"] - }, - "application/vnd.dvb.dvbj": { - "source": "iana" - }, - "application/vnd.dvb.esgcontainer": { - "source": "iana" - }, - "application/vnd.dvb.ipdcdftnotifaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess2": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgpdd": { - "source": "iana" - }, - "application/vnd.dvb.ipdcroaming": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-base": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-enhancement": { - "source": "iana" - }, - "application/vnd.dvb.notif-aggregate-root+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-container+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-generic+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-msglist+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-registration-request+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-registration-response+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-init+xml": { - "source": "iana" - }, - "application/vnd.dvb.pfr": { - "source": "iana" - }, - "application/vnd.dvb.service": { - "source": "iana", - "extensions": ["svc"] - }, - "application/vnd.dxr": { - "source": "iana" - }, - "application/vnd.dynageo": { - "source": "iana", - "extensions": ["geo"] - }, - "application/vnd.dzr": { - "source": "iana" - }, - "application/vnd.easykaraoke.cdgdownload": { - "source": "iana" - }, - "application/vnd.ecdis-update": { - "source": "iana" - }, - "application/vnd.ecowin.chart": { - "source": "iana", - "extensions": ["mag"] - }, - "application/vnd.ecowin.filerequest": { - "source": "iana" - }, - "application/vnd.ecowin.fileupdate": { - "source": "iana" - }, - "application/vnd.ecowin.series": { - "source": "iana" - }, - "application/vnd.ecowin.seriesrequest": { - "source": "iana" - }, - "application/vnd.ecowin.seriesupdate": { - "source": "iana" - }, - "application/vnd.emclient.accessrequest+xml": { - "source": "iana" - }, - "application/vnd.enliven": { - "source": "iana", - "extensions": ["nml"] - }, - "application/vnd.enphase.envoy": { - "source": "iana" - }, - "application/vnd.eprints.data+xml": { - "source": "iana" - }, - "application/vnd.epson.esf": { - "source": "iana", - "extensions": ["esf"] - }, - "application/vnd.epson.msf": { - "source": "iana", - "extensions": ["msf"] - }, - "application/vnd.epson.quickanime": { - "source": "iana", - "extensions": ["qam"] - }, - "application/vnd.epson.salt": { - "source": "iana", - "extensions": ["slt"] - }, - "application/vnd.epson.ssf": { - "source": "iana", - "extensions": ["ssf"] - }, - "application/vnd.ericsson.quickcall": { - "source": "iana" - }, - "application/vnd.eszigno3+xml": { - "source": "iana", - "extensions": ["es3","et3"] - }, - "application/vnd.etsi.aoc+xml": { - "source": "iana" - }, - "application/vnd.etsi.asic-e+zip": { - "source": "iana" - }, - "application/vnd.etsi.asic-s+zip": { - "source": "iana" - }, - "application/vnd.etsi.cug+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvcommand+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvdiscovery+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvprofile+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-bc+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-cod+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-npvr+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvservice+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsync+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvueprofile+xml": { - "source": "iana" - }, - "application/vnd.etsi.mcid+xml": { - "source": "iana" - }, - "application/vnd.etsi.mheg5": { - "source": "iana" - }, - "application/vnd.etsi.overload-control-policy-dataset+xml": { - "source": "iana" - }, - "application/vnd.etsi.pstn+xml": { - "source": "iana" - }, - "application/vnd.etsi.sci+xml": { - "source": "iana" - }, - "application/vnd.etsi.simservs+xml": { - "source": "iana" - }, - "application/vnd.etsi.timestamp-token": { - "source": "iana" - }, - "application/vnd.etsi.tsl+xml": { - "source": "iana" - }, - "application/vnd.etsi.tsl.der": { - "source": "iana" - }, - "application/vnd.eudora.data": { - "source": "iana" - }, - "application/vnd.ezpix-album": { - "source": "iana", - "extensions": ["ez2"] - }, - "application/vnd.ezpix-package": { - "source": "iana", - "extensions": ["ez3"] - }, - "application/vnd.f-secure.mobile": { - "source": "iana" - }, - "application/vnd.fastcopy-disk-image": { - "source": "iana" - }, - "application/vnd.fdf": { - "source": "iana", - "extensions": ["fdf"] - }, - "application/vnd.fdsn.mseed": { - "source": "iana", - "extensions": ["mseed"] - }, - "application/vnd.fdsn.seed": { - "source": "iana", - "extensions": ["seed","dataless"] - }, - "application/vnd.ffsns": { - "source": "iana" - }, - "application/vnd.fints": { - "source": "iana" - }, - "application/vnd.flographit": { - "source": "iana", - "extensions": ["gph"] - }, - "application/vnd.fluxtime.clip": { - "source": "iana", - "extensions": ["ftc"] - }, - "application/vnd.font-fontforge-sfd": { - "source": "iana" - }, - "application/vnd.framemaker": { - "source": "iana", - "extensions": ["fm","frame","maker","book"] - }, - "application/vnd.frogans.fnc": { - "source": "iana", - "extensions": ["fnc"] - }, - "application/vnd.frogans.ltf": { - "source": "iana", - "extensions": ["ltf"] - }, - "application/vnd.fsc.weblaunch": { - "source": "iana", - "extensions": ["fsc"] - }, - "application/vnd.fujitsu.oasys": { - "source": "iana", - "extensions": ["oas"] - }, - "application/vnd.fujitsu.oasys2": { - "source": "iana", - "extensions": ["oa2"] - }, - "application/vnd.fujitsu.oasys3": { - "source": "iana", - "extensions": ["oa3"] - }, - "application/vnd.fujitsu.oasysgp": { - "source": "iana", - "extensions": ["fg5"] - }, - "application/vnd.fujitsu.oasysprs": { - "source": "iana", - "extensions": ["bh2"] - }, - "application/vnd.fujixerox.art-ex": { - "source": "iana" - }, - "application/vnd.fujixerox.art4": { - "source": "iana" - }, - "application/vnd.fujixerox.ddd": { - "source": "iana", - "extensions": ["ddd"] - }, - "application/vnd.fujixerox.docuworks": { - "source": "iana", - "extensions": ["xdw"] - }, - "application/vnd.fujixerox.docuworks.binder": { - "source": "iana", - "extensions": ["xbd"] - }, - "application/vnd.fujixerox.docuworks.container": { - "source": "iana" - }, - "application/vnd.fujixerox.hbpl": { - "source": "iana" - }, - "application/vnd.fut-misnet": { - "source": "iana" - }, - "application/vnd.fuzzysheet": { - "source": "iana", - "extensions": ["fzs"] - }, - "application/vnd.genomatix.tuxedo": { - "source": "iana", - "extensions": ["txd"] - }, - "application/vnd.geo+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.geocube+xml": { - "source": "iana" - }, - "application/vnd.geogebra.file": { - "source": "iana", - "extensions": ["ggb"] - }, - "application/vnd.geogebra.tool": { - "source": "iana", - "extensions": ["ggt"] - }, - "application/vnd.geometry-explorer": { - "source": "iana", - "extensions": ["gex","gre"] - }, - "application/vnd.geonext": { - "source": "iana", - "extensions": ["gxt"] - }, - "application/vnd.geoplan": { - "source": "iana", - "extensions": ["g2w"] - }, - "application/vnd.geospace": { - "source": "iana", - "extensions": ["g3w"] - }, - "application/vnd.gerber": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt-response": { - "source": "iana" - }, - "application/vnd.gmx": { - "source": "iana", - "extensions": ["gmx"] - }, - "application/vnd.google-earth.kml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["kml"] - }, - "application/vnd.google-earth.kmz": { - "source": "iana", - "compressible": false, - "extensions": ["kmz"] - }, - "application/vnd.gov.sk.e-form+xml": { - "source": "iana" - }, - "application/vnd.gov.sk.e-form+zip": { - "source": "iana" - }, - "application/vnd.gov.sk.xmldatacontainer+xml": { - "source": "iana" - }, - "application/vnd.grafeq": { - "source": "iana", - "extensions": ["gqf","gqs"] - }, - "application/vnd.gridmp": { - "source": "iana" - }, - "application/vnd.groove-account": { - "source": "iana", - "extensions": ["gac"] - }, - "application/vnd.groove-help": { - "source": "iana", - "extensions": ["ghf"] - }, - "application/vnd.groove-identity-message": { - "source": "iana", - "extensions": ["gim"] - }, - "application/vnd.groove-injector": { - "source": "iana", - "extensions": ["grv"] - }, - "application/vnd.groove-tool-message": { - "source": "iana", - "extensions": ["gtm"] - }, - "application/vnd.groove-tool-template": { - "source": "iana", - "extensions": ["tpl"] - }, - "application/vnd.groove-vcard": { - "source": "iana", - "extensions": ["vcg"] - }, - "application/vnd.hal+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hal+xml": { - "source": "iana", - "extensions": ["hal"] - }, - "application/vnd.handheld-entertainment+xml": { - "source": "iana", - "extensions": ["zmm"] - }, - "application/vnd.hbci": { - "source": "iana", - "extensions": ["hbci"] - }, - "application/vnd.hcl-bireports": { - "source": "iana" - }, - "application/vnd.heroku+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hhe.lesson-player": { - "source": "iana", - "extensions": ["les"] - }, - "application/vnd.hp-hpgl": { - "source": "iana", - "extensions": ["hpgl"] - }, - "application/vnd.hp-hpid": { - "source": "iana", - "extensions": ["hpid"] - }, - "application/vnd.hp-hps": { - "source": "iana", - "extensions": ["hps"] - }, - "application/vnd.hp-jlyt": { - "source": "iana", - "extensions": ["jlt"] - }, - "application/vnd.hp-pcl": { - "source": "iana", - "extensions": ["pcl"] - }, - "application/vnd.hp-pclxl": { - "source": "iana", - "extensions": ["pclxl"] - }, - "application/vnd.httphone": { - "source": "iana" - }, - "application/vnd.hydrostatix.sof-data": { - "source": "iana", - "extensions": ["sfd-hdstx"] - }, - "application/vnd.hyperdrive+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hzn-3d-crossword": { - "source": "iana" - }, - "application/vnd.ibm.afplinedata": { - "source": "iana" - }, - "application/vnd.ibm.electronic-media": { - "source": "iana" - }, - "application/vnd.ibm.minipay": { - "source": "iana", - "extensions": ["mpy"] - }, - "application/vnd.ibm.modcap": { - "source": "iana", - "extensions": ["afp","listafp","list3820"] - }, - "application/vnd.ibm.rights-management": { - "source": "iana", - "extensions": ["irm"] - }, - "application/vnd.ibm.secure-container": { - "source": "iana", - "extensions": ["sc"] - }, - "application/vnd.iccprofile": { - "source": "iana", - "extensions": ["icc","icm"] - }, - "application/vnd.ieee.1905": { - "source": "iana" - }, - "application/vnd.igloader": { - "source": "iana", - "extensions": ["igl"] - }, - "application/vnd.immervision-ivp": { - "source": "iana", - "extensions": ["ivp"] - }, - "application/vnd.immervision-ivu": { - "source": "iana", - "extensions": ["ivu"] - }, - "application/vnd.ims.imsccv1p1": { - "source": "iana" - }, - "application/vnd.ims.imsccv1p2": { - "source": "iana" - }, - "application/vnd.ims.imsccv1p3": { - "source": "iana" - }, - "application/vnd.ims.lis.v2.result+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolconsumerprofile+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy.id+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings.simple+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.informedcontrol.rms+xml": { - "source": "iana" - }, - "application/vnd.informix-visionary": { - "source": "iana" - }, - "application/vnd.infotech.project": { - "source": "iana" - }, - "application/vnd.infotech.project+xml": { - "source": "iana" - }, - "application/vnd.innopath.wamp.notification": { - "source": "iana" - }, - "application/vnd.insors.igm": { - "source": "iana", - "extensions": ["igm"] - }, - "application/vnd.intercon.formnet": { - "source": "iana", - "extensions": ["xpw","xpx"] - }, - "application/vnd.intergeo": { - "source": "iana", - "extensions": ["i2g"] - }, - "application/vnd.intertrust.digibox": { - "source": "iana" - }, - "application/vnd.intertrust.nncp": { - "source": "iana" - }, - "application/vnd.intu.qbo": { - "source": "iana", - "extensions": ["qbo"] - }, - "application/vnd.intu.qfx": { - "source": "iana", - "extensions": ["qfx"] - }, - "application/vnd.iptc.g2.catalogitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.conceptitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.knowledgeitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.newsitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.newsmessage+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.packageitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.planningitem+xml": { - "source": "iana" - }, - "application/vnd.ipunplugged.rcprofile": { - "source": "iana", - "extensions": ["rcprofile"] - }, - "application/vnd.irepository.package+xml": { - "source": "iana", - "extensions": ["irp"] - }, - "application/vnd.is-xpr": { - "source": "iana", - "extensions": ["xpr"] - }, - "application/vnd.isac.fcs": { - "source": "iana", - "extensions": ["fcs"] - }, - "application/vnd.jam": { - "source": "iana", - "extensions": ["jam"] - }, - "application/vnd.japannet-directory-service": { - "source": "iana" - }, - "application/vnd.japannet-jpnstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-payment-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-registration": { - "source": "iana" - }, - "application/vnd.japannet-registration-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-setstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-verification": { - "source": "iana" - }, - "application/vnd.japannet-verification-wakeup": { - "source": "iana" - }, - "application/vnd.jcp.javame.midlet-rms": { - "source": "iana", - "extensions": ["rms"] - }, - "application/vnd.jisp": { - "source": "iana", - "extensions": ["jisp"] - }, - "application/vnd.joost.joda-archive": { - "source": "iana", - "extensions": ["joda"] - }, - "application/vnd.jsk.isdn-ngn": { - "source": "iana" - }, - "application/vnd.kahootz": { - "source": "iana", - "extensions": ["ktz","ktr"] - }, - "application/vnd.kde.karbon": { - "source": "iana", - "extensions": ["karbon"] - }, - "application/vnd.kde.kchart": { - "source": "iana", - "extensions": ["chrt"] - }, - "application/vnd.kde.kformula": { - "source": "iana", - "extensions": ["kfo"] - }, - "application/vnd.kde.kivio": { - "source": "iana", - "extensions": ["flw"] - }, - "application/vnd.kde.kontour": { - "source": "iana", - "extensions": ["kon"] - }, - "application/vnd.kde.kpresenter": { - "source": "iana", - "extensions": ["kpr","kpt"] - }, - "application/vnd.kde.kspread": { - "source": "iana", - "extensions": ["ksp"] - }, - "application/vnd.kde.kword": { - "source": "iana", - "extensions": ["kwd","kwt"] - }, - "application/vnd.kenameaapp": { - "source": "iana", - "extensions": ["htke"] - }, - "application/vnd.kidspiration": { - "source": "iana", - "extensions": ["kia"] - }, - "application/vnd.kinar": { - "source": "iana", - "extensions": ["kne","knp"] - }, - "application/vnd.koan": { - "source": "iana", - "extensions": ["skp","skd","skt","skm"] - }, - "application/vnd.kodak-descriptor": { - "source": "iana", - "extensions": ["sse"] - }, - "application/vnd.las.las+xml": { - "source": "iana", - "extensions": ["lasxml"] - }, - "application/vnd.liberty-request+xml": { - "source": "iana" - }, - "application/vnd.llamagraphics.life-balance.desktop": { - "source": "iana", - "extensions": ["lbd"] - }, - "application/vnd.llamagraphics.life-balance.exchange+xml": { - "source": "iana", - "extensions": ["lbe"] - }, - "application/vnd.lotus-1-2-3": { - "source": "iana", - "extensions": ["123"] - }, - "application/vnd.lotus-approach": { - "source": "iana", - "extensions": ["apr"] - }, - "application/vnd.lotus-freelance": { - "source": "iana", - "extensions": ["pre"] - }, - "application/vnd.lotus-notes": { - "source": "iana", - "extensions": ["nsf"] - }, - "application/vnd.lotus-organizer": { - "source": "iana", - "extensions": ["org"] - }, - "application/vnd.lotus-screencam": { - "source": "iana", - "extensions": ["scm"] - }, - "application/vnd.lotus-wordpro": { - "source": "iana", - "extensions": ["lwp"] - }, - "application/vnd.macports.portpkg": { - "source": "iana", - "extensions": ["portpkg"] - }, - "application/vnd.marlin.drm.actiontoken+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.conftoken+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.license+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.mdcf": { - "source": "iana" - }, - "application/vnd.mason+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.maxmind.maxmind-db": { - "source": "iana" - }, - "application/vnd.mcd": { - "source": "iana", - "extensions": ["mcd"] - }, - "application/vnd.medcalcdata": { - "source": "iana", - "extensions": ["mc1"] - }, - "application/vnd.mediastation.cdkey": { - "source": "iana", - "extensions": ["cdkey"] - }, - "application/vnd.meridian-slingshot": { - "source": "iana" - }, - "application/vnd.mfer": { - "source": "iana", - "extensions": ["mwf"] - }, - "application/vnd.mfmp": { - "source": "iana", - "extensions": ["mfm"] - }, - "application/vnd.micro+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.micrografx.flo": { - "source": "iana", - "extensions": ["flo"] - }, - "application/vnd.micrografx.igx": { - "source": "iana", - "extensions": ["igx"] - }, - "application/vnd.microsoft.portable-executable": { - "source": "iana" - }, - "application/vnd.miele+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.mif": { - "source": "iana", - "extensions": ["mif"] - }, - "application/vnd.minisoft-hp3000-save": { - "source": "iana" - }, - "application/vnd.mitsubishi.misty-guard.trustweb": { - "source": "iana" - }, - "application/vnd.mobius.daf": { - "source": "iana", - "extensions": ["daf"] - }, - "application/vnd.mobius.dis": { - "source": "iana", - "extensions": ["dis"] - }, - "application/vnd.mobius.mbk": { - "source": "iana", - "extensions": ["mbk"] - }, - "application/vnd.mobius.mqy": { - "source": "iana", - "extensions": ["mqy"] - }, - "application/vnd.mobius.msl": { - "source": "iana", - "extensions": ["msl"] - }, - "application/vnd.mobius.plc": { - "source": "iana", - "extensions": ["plc"] - }, - "application/vnd.mobius.txf": { - "source": "iana", - "extensions": ["txf"] - }, - "application/vnd.mophun.application": { - "source": "iana", - "extensions": ["mpn"] - }, - "application/vnd.mophun.certificate": { - "source": "iana", - "extensions": ["mpc"] - }, - "application/vnd.motorola.flexsuite": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.adsi": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.fis": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.gotap": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.kmr": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.ttc": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.wem": { - "source": "iana" - }, - "application/vnd.motorola.iprm": { - "source": "iana" - }, - "application/vnd.mozilla.xul+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xul"] - }, - "application/vnd.ms-3mfdocument": { - "source": "iana" - }, - "application/vnd.ms-artgalry": { - "source": "iana", - "extensions": ["cil"] - }, - "application/vnd.ms-asf": { - "source": "iana" - }, - "application/vnd.ms-cab-compressed": { - "source": "iana", - "extensions": ["cab"] - }, - "application/vnd.ms-color.iccprofile": { - "source": "apache" - }, - "application/vnd.ms-excel": { - "source": "iana", - "compressible": false, - "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] - }, - "application/vnd.ms-excel.addin.macroenabled.12": { - "source": "iana", - "extensions": ["xlam"] - }, - "application/vnd.ms-excel.sheet.binary.macroenabled.12": { - "source": "iana", - "extensions": ["xlsb"] - }, - "application/vnd.ms-excel.sheet.macroenabled.12": { - "source": "iana", - "extensions": ["xlsm"] - }, - "application/vnd.ms-excel.template.macroenabled.12": { - "source": "iana", - "extensions": ["xltm"] - }, - "application/vnd.ms-fontobject": { - "source": "iana", - "compressible": true, - "extensions": ["eot"] - }, - "application/vnd.ms-htmlhelp": { - "source": "iana", - "extensions": ["chm"] - }, - "application/vnd.ms-ims": { - "source": "iana", - "extensions": ["ims"] - }, - "application/vnd.ms-lrm": { - "source": "iana", - "extensions": ["lrm"] - }, - "application/vnd.ms-office.activex+xml": { - "source": "iana" - }, - "application/vnd.ms-officetheme": { - "source": "iana", - "extensions": ["thmx"] - }, - "application/vnd.ms-opentype": { - "source": "apache", - "compressible": true - }, - "application/vnd.ms-package.obfuscated-opentype": { - "source": "apache" - }, - "application/vnd.ms-pki.seccat": { - "source": "apache", - "extensions": ["cat"] - }, - "application/vnd.ms-pki.stl": { - "source": "apache", - "extensions": ["stl"] - }, - "application/vnd.ms-playready.initiator+xml": { - "source": "iana" - }, - "application/vnd.ms-powerpoint": { - "source": "iana", - "compressible": false, - "extensions": ["ppt","pps","pot"] - }, - "application/vnd.ms-powerpoint.addin.macroenabled.12": { - "source": "iana", - "extensions": ["ppam"] - }, - "application/vnd.ms-powerpoint.presentation.macroenabled.12": { - "source": "iana", - "extensions": ["pptm"] - }, - "application/vnd.ms-powerpoint.slide.macroenabled.12": { - "source": "iana", - "extensions": ["sldm"] - }, - "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { - "source": "iana", - "extensions": ["ppsm"] - }, - "application/vnd.ms-powerpoint.template.macroenabled.12": { - "source": "iana", - "extensions": ["potm"] - }, - "application/vnd.ms-printing.printticket+xml": { - "source": "apache" - }, - "application/vnd.ms-project": { - "source": "iana", - "extensions": ["mpp","mpt"] - }, - "application/vnd.ms-tnef": { - "source": "iana" - }, - "application/vnd.ms-windows.printerpairing": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-resp": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-resp": { - "source": "iana" - }, - "application/vnd.ms-word.document.macroenabled.12": { - "source": "iana", - "extensions": ["docm"] - }, - "application/vnd.ms-word.template.macroenabled.12": { - "source": "iana", - "extensions": ["dotm"] - }, - "application/vnd.ms-works": { - "source": "iana", - "extensions": ["wps","wks","wcm","wdb"] - }, - "application/vnd.ms-wpl": { - "source": "iana", - "extensions": ["wpl"] - }, - "application/vnd.ms-xpsdocument": { - "source": "iana", - "compressible": false, - "extensions": ["xps"] - }, - "application/vnd.msa-disk-image": { - "source": "iana" - }, - "application/vnd.mseq": { - "source": "iana", - "extensions": ["mseq"] - }, - "application/vnd.msign": { - "source": "iana" - }, - "application/vnd.multiad.creator": { - "source": "iana" - }, - "application/vnd.multiad.creator.cif": { - "source": "iana" - }, - "application/vnd.music-niff": { - "source": "iana" - }, - "application/vnd.musician": { - "source": "iana", - "extensions": ["mus"] - }, - "application/vnd.muvee.style": { - "source": "iana", - "extensions": ["msty"] - }, - "application/vnd.mynfc": { - "source": "iana", - "extensions": ["taglet"] - }, - "application/vnd.ncd.control": { - "source": "iana" - }, - "application/vnd.ncd.reference": { - "source": "iana" - }, - "application/vnd.nervana": { - "source": "iana" - }, - "application/vnd.netfpx": { - "source": "iana" - }, - "application/vnd.neurolanguage.nlu": { - "source": "iana", - "extensions": ["nlu"] - }, - "application/vnd.nintendo.nitro.rom": { - "source": "iana" - }, - "application/vnd.nintendo.snes.rom": { - "source": "iana" - }, - "application/vnd.nitf": { - "source": "iana", - "extensions": ["ntf","nitf"] - }, - "application/vnd.noblenet-directory": { - "source": "iana", - "extensions": ["nnd"] - }, - "application/vnd.noblenet-sealer": { - "source": "iana", - "extensions": ["nns"] - }, - "application/vnd.noblenet-web": { - "source": "iana", - "extensions": ["nnw"] - }, - "application/vnd.nokia.catalogs": { - "source": "iana" - }, - "application/vnd.nokia.conml+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.conml+xml": { - "source": "iana" - }, - "application/vnd.nokia.iptv.config+xml": { - "source": "iana" - }, - "application/vnd.nokia.isds-radio-presets": { - "source": "iana" - }, - "application/vnd.nokia.landmark+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.landmark+xml": { - "source": "iana" - }, - "application/vnd.nokia.landmarkcollection+xml": { - "source": "iana" - }, - "application/vnd.nokia.n-gage.ac+xml": { - "source": "iana" - }, - "application/vnd.nokia.n-gage.data": { - "source": "iana", - "extensions": ["ngdat"] - }, - "application/vnd.nokia.n-gage.symbian.install": { - "source": "iana", - "extensions": ["n-gage"] - }, - "application/vnd.nokia.ncd": { - "source": "iana" - }, - "application/vnd.nokia.pcd+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.pcd+xml": { - "source": "iana" - }, - "application/vnd.nokia.radio-preset": { - "source": "iana", - "extensions": ["rpst"] - }, - "application/vnd.nokia.radio-presets": { - "source": "iana", - "extensions": ["rpss"] - }, - "application/vnd.novadigm.edm": { - "source": "iana", - "extensions": ["edm"] - }, - "application/vnd.novadigm.edx": { - "source": "iana", - "extensions": ["edx"] - }, - "application/vnd.novadigm.ext": { - "source": "iana", - "extensions": ["ext"] - }, - "application/vnd.ntt-local.content-share": { - "source": "iana" - }, - "application/vnd.ntt-local.file-transfer": { - "source": "iana" - }, - "application/vnd.ntt-local.ogw_remote-access": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_remote": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_tcp_stream": { - "source": "iana" - }, - "application/vnd.oasis.opendocument.chart": { - "source": "iana", - "extensions": ["odc"] - }, - "application/vnd.oasis.opendocument.chart-template": { - "source": "iana", - "extensions": ["otc"] - }, - "application/vnd.oasis.opendocument.database": { - "source": "iana", - "extensions": ["odb"] - }, - "application/vnd.oasis.opendocument.formula": { - "source": "iana", - "extensions": ["odf"] - }, - "application/vnd.oasis.opendocument.formula-template": { - "source": "iana", - "extensions": ["odft"] - }, - "application/vnd.oasis.opendocument.graphics": { - "source": "iana", - "compressible": false, - "extensions": ["odg"] - }, - "application/vnd.oasis.opendocument.graphics-template": { - "source": "iana", - "extensions": ["otg"] - }, - "application/vnd.oasis.opendocument.image": { - "source": "iana", - "extensions": ["odi"] - }, - "application/vnd.oasis.opendocument.image-template": { - "source": "iana", - "extensions": ["oti"] - }, - "application/vnd.oasis.opendocument.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["odp"] - }, - "application/vnd.oasis.opendocument.presentation-template": { - "source": "iana", - "extensions": ["otp"] - }, - "application/vnd.oasis.opendocument.spreadsheet": { - "source": "iana", - "compressible": false, - "extensions": ["ods"] - }, - "application/vnd.oasis.opendocument.spreadsheet-template": { - "source": "iana", - "extensions": ["ots"] - }, - "application/vnd.oasis.opendocument.text": { - "source": "iana", - "compressible": false, - "extensions": ["odt"] - }, - "application/vnd.oasis.opendocument.text-master": { - "source": "iana", - "extensions": ["odm"] - }, - "application/vnd.oasis.opendocument.text-template": { - "source": "iana", - "extensions": ["ott"] - }, - "application/vnd.oasis.opendocument.text-web": { - "source": "iana", - "extensions": ["oth"] - }, - "application/vnd.obn": { - "source": "iana" - }, - "application/vnd.oftn.l10n+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.contentaccessdownload+xml": { - "source": "iana" - }, - "application/vnd.oipf.contentaccessstreaming+xml": { - "source": "iana" - }, - "application/vnd.oipf.cspg-hexbinary": { - "source": "iana" - }, - "application/vnd.oipf.dae.svg+xml": { - "source": "iana" - }, - "application/vnd.oipf.dae.xhtml+xml": { - "source": "iana" - }, - "application/vnd.oipf.mippvcontrolmessage+xml": { - "source": "iana" - }, - "application/vnd.oipf.pae.gem": { - "source": "iana" - }, - "application/vnd.oipf.spdiscovery+xml": { - "source": "iana" - }, - "application/vnd.oipf.spdlist+xml": { - "source": "iana" - }, - "application/vnd.oipf.ueprofile+xml": { - "source": "iana" - }, - "application/vnd.oipf.userprofile+xml": { - "source": "iana" - }, - "application/vnd.olpc-sugar": { - "source": "iana", - "extensions": ["xo"] - }, - "application/vnd.oma-scws-config": { - "source": "iana" - }, - "application/vnd.oma-scws-http-request": { - "source": "iana" - }, - "application/vnd.oma-scws-http-response": { - "source": "iana" - }, - "application/vnd.oma.bcast.associated-procedure-parameter+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.drm-trigger+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.imd+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.ltkm": { - "source": "iana" - }, - "application/vnd.oma.bcast.notification+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.provisioningtrigger": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgboot": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgdd+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgdu": { - "source": "iana" - }, - "application/vnd.oma.bcast.simple-symbol-container": { - "source": "iana" - }, - "application/vnd.oma.bcast.smartcard-trigger+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.sprov+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.stkm": { - "source": "iana" - }, - "application/vnd.oma.cab-address-book+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-feature-handler+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-pcc+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-subs-invite+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-user-prefs+xml": { - "source": "iana" - }, - "application/vnd.oma.dcd": { - "source": "iana" - }, - "application/vnd.oma.dcdc": { - "source": "iana" - }, - "application/vnd.oma.dd2+xml": { - "source": "iana", - "extensions": ["dd2"] - }, - "application/vnd.oma.drm.risd+xml": { - "source": "iana" - }, - "application/vnd.oma.group-usage-list+xml": { - "source": "iana" - }, - "application/vnd.oma.pal+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.detailed-progress-report+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.final-report+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.groups+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.invocation-descriptor+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.optimized-progress-report+xml": { - "source": "iana" - }, - "application/vnd.oma.push": { - "source": "iana" - }, - "application/vnd.oma.scidm.messages+xml": { - "source": "iana" - }, - "application/vnd.oma.xcap-directory+xml": { - "source": "iana" - }, - "application/vnd.omads-email+xml": { - "source": "iana" - }, - "application/vnd.omads-file+xml": { - "source": "iana" - }, - "application/vnd.omads-folder+xml": { - "source": "iana" - }, - "application/vnd.omaloc-supl-init": { - "source": "iana" - }, - "application/vnd.openeye.oeb": { - "source": "iana" - }, - "application/vnd.openofficeorg.extension": { - "source": "apache", - "extensions": ["oxt"] - }, - "application/vnd.openxmlformats-officedocument.custom-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawing+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.extended-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml-template": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["pptx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide": { - "source": "iana", - "extensions": ["sldx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { - "source": "iana", - "extensions": ["ppsx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.template": { - "source": "apache", - "extensions": ["potx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml-template": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { - "source": "iana", - "compressible": false, - "extensions": ["xlsx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { - "source": "apache", - "extensions": ["xltx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.theme+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.themeoverride+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.vmldrawing": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml-template": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { - "source": "iana", - "compressible": false, - "extensions": ["docx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { - "source": "apache", - "extensions": ["dotx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.core-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.relationships+xml": { - "source": "iana" - }, - "application/vnd.oracle.resource+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.orange.indata": { - "source": "iana" - }, - "application/vnd.osa.netdeploy": { - "source": "iana" - }, - "application/vnd.osgeo.mapguide.package": { - "source": "iana", - "extensions": ["mgp"] - }, - "application/vnd.osgi.bundle": { - "source": "iana" - }, - "application/vnd.osgi.dp": { - "source": "iana", - "extensions": ["dp"] - }, - "application/vnd.osgi.subsystem": { - "source": "iana", - "extensions": ["esa"] - }, - "application/vnd.otps.ct-kip+xml": { - "source": "iana" - }, - "application/vnd.palm": { - "source": "iana", - "extensions": ["pdb","pqa","oprc"] - }, - "application/vnd.panoply": { - "source": "iana" - }, - "application/vnd.paos+xml": { - "source": "iana" - }, - "application/vnd.paos.xml": { - "source": "apache" - }, - "application/vnd.pawaafile": { - "source": "iana", - "extensions": ["paw"] - }, - "application/vnd.pcos": { - "source": "iana" - }, - "application/vnd.pg.format": { - "source": "iana", - "extensions": ["str"] - }, - "application/vnd.pg.osasli": { - "source": "iana", - "extensions": ["ei6"] - }, - "application/vnd.piaccess.application-licence": { - "source": "iana" - }, - "application/vnd.picsel": { - "source": "iana", - "extensions": ["efif"] - }, - "application/vnd.pmi.widget": { - "source": "iana", - "extensions": ["wg"] - }, - "application/vnd.poc.group-advertisement+xml": { - "source": "iana" - }, - "application/vnd.pocketlearn": { - "source": "iana", - "extensions": ["plf"] - }, - "application/vnd.powerbuilder6": { - "source": "iana", - "extensions": ["pbd"] - }, - "application/vnd.powerbuilder6-s": { - "source": "iana" - }, - "application/vnd.powerbuilder7": { - "source": "iana" - }, - "application/vnd.powerbuilder7-s": { - "source": "iana" - }, - "application/vnd.powerbuilder75": { - "source": "iana" - }, - "application/vnd.powerbuilder75-s": { - "source": "iana" - }, - "application/vnd.preminet": { - "source": "iana" - }, - "application/vnd.previewsystems.box": { - "source": "iana", - "extensions": ["box"] - }, - "application/vnd.proteus.magazine": { - "source": "iana", - "extensions": ["mgz"] - }, - "application/vnd.publishare-delta-tree": { - "source": "iana", - "extensions": ["qps"] - }, - "application/vnd.pvi.ptid1": { - "source": "iana", - "extensions": ["ptid"] - }, - "application/vnd.pwg-multiplexed": { - "source": "iana" - }, - "application/vnd.pwg-xhtml-print+xml": { - "source": "iana" - }, - "application/vnd.qualcomm.brew-app-res": { - "source": "iana" - }, - "application/vnd.quark.quarkxpress": { - "source": "iana", - "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] - }, - "application/vnd.quobject-quoxdocument": { - "source": "iana" - }, - "application/vnd.radisys.moml+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-conf+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-conn+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-dialog+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-stream+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-conf+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-base+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-fax-detect+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-group+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-speech+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-transform+xml": { - "source": "iana" - }, - "application/vnd.rainstor.data": { - "source": "iana" - }, - "application/vnd.rapid": { - "source": "iana" - }, - "application/vnd.realvnc.bed": { - "source": "iana", - "extensions": ["bed"] - }, - "application/vnd.recordare.musicxml": { - "source": "iana", - "extensions": ["mxl"] - }, - "application/vnd.recordare.musicxml+xml": { - "source": "iana", - "extensions": ["musicxml"] - }, - "application/vnd.renlearn.rlprint": { - "source": "iana" - }, - "application/vnd.rig.cryptonote": { - "source": "iana", - "extensions": ["cryptonote"] - }, - "application/vnd.rim.cod": { - "source": "apache", - "extensions": ["cod"] - }, - "application/vnd.rn-realmedia": { - "source": "apache", - "extensions": ["rm"] - }, - "application/vnd.rn-realmedia-vbr": { - "source": "apache", - "extensions": ["rmvb"] - }, - "application/vnd.route66.link66+xml": { - "source": "iana", - "extensions": ["link66"] - }, - "application/vnd.rs-274x": { - "source": "iana" - }, - "application/vnd.ruckus.download": { - "source": "iana" - }, - "application/vnd.s3sms": { - "source": "iana" - }, - "application/vnd.sailingtracker.track": { - "source": "iana", - "extensions": ["st"] - }, - "application/vnd.sbm.cid": { - "source": "iana" - }, - "application/vnd.sbm.mid2": { - "source": "iana" - }, - "application/vnd.scribus": { - "source": "iana" - }, - "application/vnd.sealed.3df": { - "source": "iana" - }, - "application/vnd.sealed.csf": { - "source": "iana" - }, - "application/vnd.sealed.doc": { - "source": "iana" - }, - "application/vnd.sealed.eml": { - "source": "iana" - }, - "application/vnd.sealed.mht": { - "source": "iana" - }, - "application/vnd.sealed.net": { - "source": "iana" - }, - "application/vnd.sealed.ppt": { - "source": "iana" - }, - "application/vnd.sealed.tiff": { - "source": "iana" - }, - "application/vnd.sealed.xls": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.html": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.pdf": { - "source": "iana" - }, - "application/vnd.seemail": { - "source": "iana", - "extensions": ["see"] - }, - "application/vnd.sema": { - "source": "iana", - "extensions": ["sema"] - }, - "application/vnd.semd": { - "source": "iana", - "extensions": ["semd"] - }, - "application/vnd.semf": { - "source": "iana", - "extensions": ["semf"] - }, - "application/vnd.shana.informed.formdata": { - "source": "iana", - "extensions": ["ifm"] - }, - "application/vnd.shana.informed.formtemplate": { - "source": "iana", - "extensions": ["itp"] - }, - "application/vnd.shana.informed.interchange": { - "source": "iana", - "extensions": ["iif"] - }, - "application/vnd.shana.informed.package": { - "source": "iana", - "extensions": ["ipk"] - }, - "application/vnd.simtech-mindmapper": { - "source": "iana", - "extensions": ["twd","twds"] - }, - "application/vnd.siren+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.smaf": { - "source": "iana", - "extensions": ["mmf"] - }, - "application/vnd.smart.notebook": { - "source": "iana" - }, - "application/vnd.smart.teacher": { - "source": "iana", - "extensions": ["teacher"] - }, - "application/vnd.software602.filler.form+xml": { - "source": "iana" - }, - "application/vnd.software602.filler.form-xml-zip": { - "source": "iana" - }, - "application/vnd.solent.sdkm+xml": { - "source": "iana", - "extensions": ["sdkm","sdkd"] - }, - "application/vnd.spotfire.dxp": { - "source": "iana", - "extensions": ["dxp"] - }, - "application/vnd.spotfire.sfs": { - "source": "iana", - "extensions": ["sfs"] - }, - "application/vnd.sss-cod": { - "source": "iana" - }, - "application/vnd.sss-dtf": { - "source": "iana" - }, - "application/vnd.sss-ntf": { - "source": "iana" - }, - "application/vnd.stardivision.calc": { - "source": "apache", - "extensions": ["sdc"] - }, - "application/vnd.stardivision.draw": { - "source": "apache", - "extensions": ["sda"] - }, - "application/vnd.stardivision.impress": { - "source": "apache", - "extensions": ["sdd"] - }, - "application/vnd.stardivision.math": { - "source": "apache", - "extensions": ["smf"] - }, - "application/vnd.stardivision.writer": { - "source": "apache", - "extensions": ["sdw","vor"] - }, - "application/vnd.stardivision.writer-global": { - "source": "apache", - "extensions": ["sgl"] - }, - "application/vnd.stepmania.package": { - "source": "iana", - "extensions": ["smzip"] - }, - "application/vnd.stepmania.stepchart": { - "source": "iana", - "extensions": ["sm"] - }, - "application/vnd.street-stream": { - "source": "iana" - }, - "application/vnd.sun.wadl+xml": { - "source": "iana" - }, - "application/vnd.sun.xml.calc": { - "source": "apache", - "extensions": ["sxc"] - }, - "application/vnd.sun.xml.calc.template": { - "source": "apache", - "extensions": ["stc"] - }, - "application/vnd.sun.xml.draw": { - "source": "apache", - "extensions": ["sxd"] - }, - "application/vnd.sun.xml.draw.template": { - "source": "apache", - "extensions": ["std"] - }, - "application/vnd.sun.xml.impress": { - "source": "apache", - "extensions": ["sxi"] - }, - "application/vnd.sun.xml.impress.template": { - "source": "apache", - "extensions": ["sti"] - }, - "application/vnd.sun.xml.math": { - "source": "apache", - "extensions": ["sxm"] - }, - "application/vnd.sun.xml.writer": { - "source": "apache", - "extensions": ["sxw"] - }, - "application/vnd.sun.xml.writer.global": { - "source": "apache", - "extensions": ["sxg"] - }, - "application/vnd.sun.xml.writer.template": { - "source": "apache", - "extensions": ["stw"] - }, - "application/vnd.sus-calendar": { - "source": "iana", - "extensions": ["sus","susp"] - }, - "application/vnd.svd": { - "source": "iana", - "extensions": ["svd"] - }, - "application/vnd.swiftview-ics": { - "source": "iana" - }, - "application/vnd.symbian.install": { - "source": "apache", - "extensions": ["sis","sisx"] - }, - "application/vnd.syncml+xml": { - "source": "iana", - "extensions": ["xsm"] - }, - "application/vnd.syncml.dm+wbxml": { - "source": "iana", - "extensions": ["bdm"] - }, - "application/vnd.syncml.dm+xml": { - "source": "iana", - "extensions": ["xdm"] - }, - "application/vnd.syncml.dm.notification": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+xml": { - "source": "iana" - }, - "application/vnd.syncml.dmtnds+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmtnds+xml": { - "source": "iana" - }, - "application/vnd.syncml.ds.notification": { - "source": "iana" - }, - "application/vnd.tao.intent-module-archive": { - "source": "iana", - "extensions": ["tao"] - }, - "application/vnd.tcpdump.pcap": { - "source": "iana", - "extensions": ["pcap","cap","dmp"] - }, - "application/vnd.tmd.mediaflex.api+xml": { - "source": "iana" - }, - "application/vnd.tmobile-livetv": { - "source": "iana", - "extensions": ["tmo"] - }, - "application/vnd.trid.tpt": { - "source": "iana", - "extensions": ["tpt"] - }, - "application/vnd.triscape.mxs": { - "source": "iana", - "extensions": ["mxs"] - }, - "application/vnd.trueapp": { - "source": "iana", - "extensions": ["tra"] - }, - "application/vnd.truedoc": { - "source": "iana" - }, - "application/vnd.ubisoft.webplayer": { - "source": "iana" - }, - "application/vnd.ufdl": { - "source": "iana", - "extensions": ["ufd","ufdl"] - }, - "application/vnd.uiq.theme": { - "source": "iana", - "extensions": ["utz"] - }, - "application/vnd.umajin": { - "source": "iana", - "extensions": ["umj"] - }, - "application/vnd.unity": { - "source": "iana", - "extensions": ["unityweb"] - }, - "application/vnd.uoml+xml": { - "source": "iana", - "extensions": ["uoml"] - }, - "application/vnd.uplanet.alert": { - "source": "iana" - }, - "application/vnd.uplanet.alert-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.channel": { - "source": "iana" - }, - "application/vnd.uplanet.channel-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.list": { - "source": "iana" - }, - "application/vnd.uplanet.list-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.signal": { - "source": "iana" - }, - "application/vnd.valve.source.material": { - "source": "iana" - }, - "application/vnd.vcx": { - "source": "iana", - "extensions": ["vcx"] - }, - "application/vnd.vd-study": { - "source": "iana" - }, - "application/vnd.vectorworks": { - "source": "iana" - }, - "application/vnd.verimatrix.vcas": { - "source": "iana" - }, - "application/vnd.vidsoft.vidconference": { - "source": "iana" - }, - "application/vnd.visio": { - "source": "iana", - "extensions": ["vsd","vst","vss","vsw"] - }, - "application/vnd.visionary": { - "source": "iana", - "extensions": ["vis"] - }, - "application/vnd.vividence.scriptfile": { - "source": "iana" - }, - "application/vnd.vsf": { - "source": "iana", - "extensions": ["vsf"] - }, - "application/vnd.wap.sic": { - "source": "iana" - }, - "application/vnd.wap.slc": { - "source": "iana" - }, - "application/vnd.wap.wbxml": { - "source": "iana", - "extensions": ["wbxml"] - }, - "application/vnd.wap.wmlc": { - "source": "iana", - "extensions": ["wmlc"] - }, - "application/vnd.wap.wmlscriptc": { - "source": "iana", - "extensions": ["wmlsc"] - }, - "application/vnd.webturbo": { - "source": "iana", - "extensions": ["wtb"] - }, - "application/vnd.wfa.p2p": { - "source": "iana" - }, - "application/vnd.wfa.wsc": { - "source": "iana" - }, - "application/vnd.windows.devicepairing": { - "source": "iana" - }, - "application/vnd.wmc": { - "source": "iana" - }, - "application/vnd.wmf.bootstrap": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica.package": { - "source": "iana" - }, - "application/vnd.wolfram.player": { - "source": "iana", - "extensions": ["nbp"] - }, - "application/vnd.wordperfect": { - "source": "iana", - "extensions": ["wpd"] - }, - "application/vnd.wqd": { - "source": "iana", - "extensions": ["wqd"] - }, - "application/vnd.wrq-hp3000-labelled": { - "source": "iana" - }, - "application/vnd.wt.stf": { - "source": "iana", - "extensions": ["stf"] - }, - "application/vnd.wv.csp+wbxml": { - "source": "iana" - }, - "application/vnd.wv.csp+xml": { - "source": "iana" - }, - "application/vnd.wv.ssp+xml": { - "source": "iana" - }, - "application/vnd.xacml+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.xara": { - "source": "iana", - "extensions": ["xar"] - }, - "application/vnd.xfdl": { - "source": "iana", - "extensions": ["xfdl"] - }, - "application/vnd.xfdl.webform": { - "source": "iana" - }, - "application/vnd.xmi+xml": { - "source": "iana" - }, - "application/vnd.xmpie.cpkg": { - "source": "iana" - }, - "application/vnd.xmpie.dpkg": { - "source": "iana" - }, - "application/vnd.xmpie.plan": { - "source": "iana" - }, - "application/vnd.xmpie.ppkg": { - "source": "iana" - }, - "application/vnd.xmpie.xlim": { - "source": "iana" - }, - "application/vnd.yamaha.hv-dic": { - "source": "iana", - "extensions": ["hvd"] - }, - "application/vnd.yamaha.hv-script": { - "source": "iana", - "extensions": ["hvs"] - }, - "application/vnd.yamaha.hv-voice": { - "source": "iana", - "extensions": ["hvp"] - }, - "application/vnd.yamaha.openscoreformat": { - "source": "iana", - "extensions": ["osf"] - }, - "application/vnd.yamaha.openscoreformat.osfpvg+xml": { - "source": "iana", - "extensions": ["osfpvg"] - }, - "application/vnd.yamaha.remote-setup": { - "source": "iana" - }, - "application/vnd.yamaha.smaf-audio": { - "source": "iana", - "extensions": ["saf"] - }, - "application/vnd.yamaha.smaf-phrase": { - "source": "iana", - "extensions": ["spf"] - }, - "application/vnd.yamaha.through-ngn": { - "source": "iana" - }, - "application/vnd.yamaha.tunnel-udpencap": { - "source": "iana" - }, - "application/vnd.yaoweme": { - "source": "iana" - }, - "application/vnd.yellowriver-custom-menu": { - "source": "iana", - "extensions": ["cmp"] - }, - "application/vnd.zul": { - "source": "iana", - "extensions": ["zir","zirz"] - }, - "application/vnd.zzazz.deck+xml": { - "source": "iana", - "extensions": ["zaz"] - }, - "application/voicexml+xml": { - "source": "iana", - "extensions": ["vxml"] - }, - "application/vq-rtcpxr": { - "source": "iana" - }, - "application/watcherinfo+xml": { - "source": "iana" - }, - "application/whoispp-query": { - "source": "iana" - }, - "application/whoispp-response": { - "source": "iana" - }, - "application/widget": { - "source": "iana", - "extensions": ["wgt"] - }, - "application/winhlp": { - "source": "apache", - "extensions": ["hlp"] - }, - "application/wita": { - "source": "iana" - }, - "application/wordperfect5.1": { - "source": "iana" - }, - "application/wsdl+xml": { - "source": "iana", - "extensions": ["wsdl"] - }, - "application/wspolicy+xml": { - "source": "iana", - "extensions": ["wspolicy"] - }, - "application/x-7z-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["7z"] - }, - "application/x-abiword": { - "source": "apache", - "extensions": ["abw"] - }, - "application/x-ace-compressed": { - "source": "apache", - "extensions": ["ace"] - }, - "application/x-amf": { - "source": "apache" - }, - "application/x-apple-diskimage": { - "source": "apache", - "extensions": ["dmg"] - }, - "application/x-authorware-bin": { - "source": "apache", - "extensions": ["aab","x32","u32","vox"] - }, - "application/x-authorware-map": { - "source": "apache", - "extensions": ["aam"] - }, - "application/x-authorware-seg": { - "source": "apache", - "extensions": ["aas"] - }, - "application/x-bcpio": { - "source": "apache", - "extensions": ["bcpio"] - }, - "application/x-bdoc": { - "compressible": false, - "extensions": ["bdoc"] - }, - "application/x-bittorrent": { - "source": "apache", - "extensions": ["torrent"] - }, - "application/x-blorb": { - "source": "apache", - "extensions": ["blb","blorb"] - }, - "application/x-bzip": { - "source": "apache", - "compressible": false, - "extensions": ["bz"] - }, - "application/x-bzip2": { - "source": "apache", - "compressible": false, - "extensions": ["bz2","boz"] - }, - "application/x-cbr": { - "source": "apache", - "extensions": ["cbr","cba","cbt","cbz","cb7"] - }, - "application/x-cdlink": { - "source": "apache", - "extensions": ["vcd"] - }, - "application/x-cfs-compressed": { - "source": "apache", - "extensions": ["cfs"] - }, - "application/x-chat": { - "source": "apache", - "extensions": ["chat"] - }, - "application/x-chess-pgn": { - "source": "apache", - "extensions": ["pgn"] - }, - "application/x-chrome-extension": { - "extensions": ["crx"] - }, - "application/x-cocoa": { - "source": "nginx", - "extensions": ["cco"] - }, - "application/x-compress": { - "source": "apache" - }, - "application/x-conference": { - "source": "apache", - "extensions": ["nsc"] - }, - "application/x-cpio": { - "source": "apache", - "extensions": ["cpio"] - }, - "application/x-csh": { - "source": "apache", - "extensions": ["csh"] - }, - "application/x-deb": { - "compressible": false - }, - "application/x-debian-package": { - "source": "apache", - "extensions": ["deb","udeb"] - }, - "application/x-dgc-compressed": { - "source": "apache", - "extensions": ["dgc"] - }, - "application/x-director": { - "source": "apache", - "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] - }, - "application/x-doom": { - "source": "apache", - "extensions": ["wad"] - }, - "application/x-dtbncx+xml": { - "source": "apache", - "extensions": ["ncx"] - }, - "application/x-dtbook+xml": { - "source": "apache", - "extensions": ["dtb"] - }, - "application/x-dtbresource+xml": { - "source": "apache", - "extensions": ["res"] - }, - "application/x-dvi": { - "source": "apache", - "compressible": false, - "extensions": ["dvi"] - }, - "application/x-envoy": { - "source": "apache", - "extensions": ["evy"] - }, - "application/x-eva": { - "source": "apache", - "extensions": ["eva"] - }, - "application/x-font-bdf": { - "source": "apache", - "extensions": ["bdf"] - }, - "application/x-font-dos": { - "source": "apache" - }, - "application/x-font-framemaker": { - "source": "apache" - }, - "application/x-font-ghostscript": { - "source": "apache", - "extensions": ["gsf"] - }, - "application/x-font-libgrx": { - "source": "apache" - }, - "application/x-font-linux-psf": { - "source": "apache", - "extensions": ["psf"] - }, - "application/x-font-otf": { - "source": "apache", - "compressible": true, - "extensions": ["otf"] - }, - "application/x-font-pcf": { - "source": "apache", - "extensions": ["pcf"] - }, - "application/x-font-snf": { - "source": "apache", - "extensions": ["snf"] - }, - "application/x-font-speedo": { - "source": "apache" - }, - "application/x-font-sunos-news": { - "source": "apache" - }, - "application/x-font-ttf": { - "source": "apache", - "compressible": true, - "extensions": ["ttf","ttc"] - }, - "application/x-font-type1": { - "source": "apache", - "extensions": ["pfa","pfb","pfm","afm"] - }, - "application/x-font-vfont": { - "source": "apache" - }, - "application/x-freearc": { - "source": "apache", - "extensions": ["arc"] - }, - "application/x-futuresplash": { - "source": "apache", - "extensions": ["spl"] - }, - "application/x-gca-compressed": { - "source": "apache", - "extensions": ["gca"] - }, - "application/x-glulx": { - "source": "apache", - "extensions": ["ulx"] - }, - "application/x-gnumeric": { - "source": "apache", - "extensions": ["gnumeric"] - }, - "application/x-gramps-xml": { - "source": "apache", - "extensions": ["gramps"] - }, - "application/x-gtar": { - "source": "apache", - "extensions": ["gtar"] - }, - "application/x-gzip": { - "source": "apache" - }, - "application/x-hdf": { - "source": "apache", - "extensions": ["hdf"] - }, - "application/x-httpd-php": { - "compressible": true, - "extensions": ["php"] - }, - "application/x-install-instructions": { - "source": "apache", - "extensions": ["install"] - }, - "application/x-iso9660-image": { - "source": "apache", - "extensions": ["iso"] - }, - "application/x-java-archive-diff": { - "source": "nginx", - "extensions": ["jardiff"] - }, - "application/x-java-jnlp-file": { - "source": "apache", - "compressible": false, - "extensions": ["jnlp"] - }, - "application/x-javascript": { - "compressible": true - }, - "application/x-latex": { - "source": "apache", - "compressible": false, - "extensions": ["latex"] - }, - "application/x-lua-bytecode": { - "extensions": ["luac"] - }, - "application/x-lzh-compressed": { - "source": "apache", - "extensions": ["lzh","lha"] - }, - "application/x-makeself": { - "source": "nginx", - "extensions": ["run"] - }, - "application/x-mie": { - "source": "apache", - "extensions": ["mie"] - }, - "application/x-mobipocket-ebook": { - "source": "apache", - "extensions": ["prc","mobi"] - }, - "application/x-mpegurl": { - "compressible": false - }, - "application/x-ms-application": { - "source": "apache", - "extensions": ["application"] - }, - "application/x-ms-shortcut": { - "source": "apache", - "extensions": ["lnk"] - }, - "application/x-ms-wmd": { - "source": "apache", - "extensions": ["wmd"] - }, - "application/x-ms-wmz": { - "source": "apache", - "extensions": ["wmz"] - }, - "application/x-ms-xbap": { - "source": "apache", - "extensions": ["xbap"] - }, - "application/x-msaccess": { - "source": "apache", - "extensions": ["mdb"] - }, - "application/x-msbinder": { - "source": "apache", - "extensions": ["obd"] - }, - "application/x-mscardfile": { - "source": "apache", - "extensions": ["crd"] - }, - "application/x-msclip": { - "source": "apache", - "extensions": ["clp"] - }, - "application/x-msdownload": { - "source": "apache", - "extensions": ["exe","dll","com","bat","msi"] - }, - "application/x-msmediaview": { - "source": "apache", - "extensions": ["mvb","m13","m14"] - }, - "application/x-msmetafile": { - "source": "apache", - "extensions": ["wmf","wmz","emf","emz"] - }, - "application/x-msmoney": { - "source": "apache", - "extensions": ["mny"] - }, - "application/x-mspublisher": { - "source": "apache", - "extensions": ["pub"] - }, - "application/x-msschedule": { - "source": "apache", - "extensions": ["scd"] - }, - "application/x-msterminal": { - "source": "apache", - "extensions": ["trm"] - }, - "application/x-mswrite": { - "source": "apache", - "extensions": ["wri"] - }, - "application/x-netcdf": { - "source": "apache", - "extensions": ["nc","cdf"] - }, - "application/x-ns-proxy-autoconfig": { - "compressible": true, - "extensions": ["pac"] - }, - "application/x-nzb": { - "source": "apache", - "extensions": ["nzb"] - }, - "application/x-perl": { - "source": "nginx", - "extensions": ["pl","pm"] - }, - "application/x-pilot": { - "source": "nginx", - "extensions": ["prc","pdb"] - }, - "application/x-pkcs12": { - "source": "apache", - "compressible": false, - "extensions": ["p12","pfx"] - }, - "application/x-pkcs7-certificates": { - "source": "apache", - "extensions": ["p7b","spc"] - }, - "application/x-pkcs7-certreqresp": { - "source": "apache", - "extensions": ["p7r"] - }, - "application/x-rar-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["rar"] - }, - "application/x-redhat-package-manager": { - "source": "nginx", - "extensions": ["rpm"] - }, - "application/x-research-info-systems": { - "source": "apache", - "extensions": ["ris"] - }, - "application/x-sea": { - "source": "nginx", - "extensions": ["sea"] - }, - "application/x-sh": { - "source": "apache", - "compressible": true, - "extensions": ["sh"] - }, - "application/x-shar": { - "source": "apache", - "extensions": ["shar"] - }, - "application/x-shockwave-flash": { - "source": "apache", - "compressible": false, - "extensions": ["swf"] - }, - "application/x-silverlight-app": { - "source": "apache", - "extensions": ["xap"] - }, - "application/x-sql": { - "source": "apache", - "extensions": ["sql"] - }, - "application/x-stuffit": { - "source": "apache", - "compressible": false, - "extensions": ["sit"] - }, - "application/x-stuffitx": { - "source": "apache", - "extensions": ["sitx"] - }, - "application/x-subrip": { - "source": "apache", - "extensions": ["srt"] - }, - "application/x-sv4cpio": { - "source": "apache", - "extensions": ["sv4cpio"] - }, - "application/x-sv4crc": { - "source": "apache", - "extensions": ["sv4crc"] - }, - "application/x-t3vm-image": { - "source": "apache", - "extensions": ["t3"] - }, - "application/x-tads": { - "source": "apache", - "extensions": ["gam"] - }, - "application/x-tar": { - "source": "apache", - "compressible": true, - "extensions": ["tar"] - }, - "application/x-tcl": { - "source": "apache", - "extensions": ["tcl","tk"] - }, - "application/x-tex": { - "source": "apache", - "extensions": ["tex"] - }, - "application/x-tex-tfm": { - "source": "apache", - "extensions": ["tfm"] - }, - "application/x-texinfo": { - "source": "apache", - "extensions": ["texinfo","texi"] - }, - "application/x-tgif": { - "source": "apache", - "extensions": ["obj"] - }, - "application/x-ustar": { - "source": "apache", - "extensions": ["ustar"] - }, - "application/x-wais-source": { - "source": "apache", - "extensions": ["src"] - }, - "application/x-web-app-manifest+json": { - "compressible": true, - "extensions": ["webapp"] - }, - "application/x-www-form-urlencoded": { - "source": "iana", - "compressible": true - }, - "application/x-x509-ca-cert": { - "source": "apache", - "extensions": ["der","crt","pem"] - }, - "application/x-xfig": { - "source": "apache", - "extensions": ["fig"] - }, - "application/x-xliff+xml": { - "source": "apache", - "extensions": ["xlf"] - }, - "application/x-xpinstall": { - "source": "apache", - "compressible": false, - "extensions": ["xpi"] - }, - "application/x-xz": { - "source": "apache", - "extensions": ["xz"] - }, - "application/x-zmachine": { - "source": "apache", - "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] - }, - "application/x400-bp": { - "source": "iana" - }, - "application/xacml+xml": { - "source": "iana" - }, - "application/xaml+xml": { - "source": "apache", - "extensions": ["xaml"] - }, - "application/xcap-att+xml": { - "source": "iana" - }, - "application/xcap-caps+xml": { - "source": "iana" - }, - "application/xcap-diff+xml": { - "source": "iana", - "extensions": ["xdf"] - }, - "application/xcap-el+xml": { - "source": "iana" - }, - "application/xcap-error+xml": { - "source": "iana" - }, - "application/xcap-ns+xml": { - "source": "iana" - }, - "application/xcon-conference-info+xml": { - "source": "iana" - }, - "application/xcon-conference-info-diff+xml": { - "source": "iana" - }, - "application/xenc+xml": { - "source": "iana", - "extensions": ["xenc"] - }, - "application/xhtml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xhtml","xht"] - }, - "application/xhtml-voice+xml": { - "source": "apache" - }, - "application/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml","xsl","xsd"] - }, - "application/xml-dtd": { - "source": "iana", - "compressible": true, - "extensions": ["dtd"] - }, - "application/xml-external-parsed-entity": { - "source": "iana" - }, - "application/xml-patch+xml": { - "source": "iana" - }, - "application/xmpp+xml": { - "source": "iana" - }, - "application/xop+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xop"] - }, - "application/xproc+xml": { - "source": "apache", - "extensions": ["xpl"] - }, - "application/xslt+xml": { - "source": "iana", - "extensions": ["xslt"] - }, - "application/xspf+xml": { - "source": "apache", - "extensions": ["xspf"] - }, - "application/xv+xml": { - "source": "iana", - "extensions": ["mxml","xhvml","xvml","xvm"] - }, - "application/yang": { - "source": "iana", - "extensions": ["yang"] - }, - "application/yin+xml": { - "source": "iana", - "extensions": ["yin"] - }, - "application/zip": { - "source": "iana", - "compressible": false, - "extensions": ["zip"] - }, - "application/zlib": { - "source": "iana" - }, - "audio/1d-interleaved-parityfec": { - "source": "iana" - }, - "audio/32kadpcm": { - "source": "iana" - }, - "audio/3gpp": { - "source": "iana" - }, - "audio/3gpp2": { - "source": "iana" - }, - "audio/ac3": { - "source": "iana" - }, - "audio/adpcm": { - "source": "apache", - "extensions": ["adp"] - }, - "audio/amr": { - "source": "iana" - }, - "audio/amr-wb": { - "source": "iana" - }, - "audio/amr-wb+": { - "source": "iana" - }, - "audio/aptx": { - "source": "iana" - }, - "audio/asc": { - "source": "iana" - }, - "audio/atrac-advanced-lossless": { - "source": "iana" - }, - "audio/atrac-x": { - "source": "iana" - }, - "audio/atrac3": { - "source": "iana" - }, - "audio/basic": { - "source": "iana", - "compressible": false, - "extensions": ["au","snd"] - }, - "audio/bv16": { - "source": "iana" - }, - "audio/bv32": { - "source": "iana" - }, - "audio/clearmode": { - "source": "iana" - }, - "audio/cn": { - "source": "iana" - }, - "audio/dat12": { - "source": "iana" - }, - "audio/dls": { - "source": "iana" - }, - "audio/dsr-es201108": { - "source": "iana" - }, - "audio/dsr-es202050": { - "source": "iana" - }, - "audio/dsr-es202211": { - "source": "iana" - }, - "audio/dsr-es202212": { - "source": "iana" - }, - "audio/dv": { - "source": "iana" - }, - "audio/dvi4": { - "source": "iana" - }, - "audio/eac3": { - "source": "iana" - }, - "audio/encaprtp": { - "source": "iana" - }, - "audio/evrc": { - "source": "iana" - }, - "audio/evrc-qcp": { - "source": "iana" - }, - "audio/evrc0": { - "source": "iana" - }, - "audio/evrc1": { - "source": "iana" - }, - "audio/evrcb": { - "source": "iana" - }, - "audio/evrcb0": { - "source": "iana" - }, - "audio/evrcb1": { - "source": "iana" - }, - "audio/evrcnw": { - "source": "iana" - }, - "audio/evrcnw0": { - "source": "iana" - }, - "audio/evrcnw1": { - "source": "iana" - }, - "audio/evrcwb": { - "source": "iana" - }, - "audio/evrcwb0": { - "source": "iana" - }, - "audio/evrcwb1": { - "source": "iana" - }, - "audio/fwdred": { - "source": "iana" - }, - "audio/g719": { - "source": "iana" - }, - "audio/g722": { - "source": "iana" - }, - "audio/g7221": { - "source": "iana" - }, - "audio/g723": { - "source": "iana" - }, - "audio/g726-16": { - "source": "iana" - }, - "audio/g726-24": { - "source": "iana" - }, - "audio/g726-32": { - "source": "iana" - }, - "audio/g726-40": { - "source": "iana" - }, - "audio/g728": { - "source": "iana" - }, - "audio/g729": { - "source": "iana" - }, - "audio/g7291": { - "source": "iana" - }, - "audio/g729d": { - "source": "iana" - }, - "audio/g729e": { - "source": "iana" - }, - "audio/gsm": { - "source": "iana" - }, - "audio/gsm-efr": { - "source": "iana" - }, - "audio/gsm-hr-08": { - "source": "iana" - }, - "audio/ilbc": { - "source": "iana" - }, - "audio/ip-mr_v2.5": { - "source": "iana" - }, - "audio/isac": { - "source": "apache" - }, - "audio/l16": { - "source": "iana" - }, - "audio/l20": { - "source": "iana" - }, - "audio/l24": { - "source": "iana", - "compressible": false - }, - "audio/l8": { - "source": "iana" - }, - "audio/lpc": { - "source": "iana" - }, - "audio/midi": { - "source": "apache", - "extensions": ["mid","midi","kar","rmi"] - }, - "audio/mobile-xmf": { - "source": "iana" - }, - "audio/mp4": { - "source": "iana", - "compressible": false, - "extensions": ["mp4a","m4a"] - }, - "audio/mp4a-latm": { - "source": "iana" - }, - "audio/mpa": { - "source": "iana" - }, - "audio/mpa-robust": { - "source": "iana" - }, - "audio/mpeg": { - "source": "iana", - "compressible": false, - "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] - }, - "audio/mpeg4-generic": { - "source": "iana" - }, - "audio/musepack": { - "source": "apache" - }, - "audio/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["oga","ogg","spx"] - }, - "audio/opus": { - "source": "iana" - }, - "audio/parityfec": { - "source": "iana" - }, - "audio/pcma": { - "source": "iana" - }, - "audio/pcma-wb": { - "source": "iana" - }, - "audio/pcmu": { - "source": "iana" - }, - "audio/pcmu-wb": { - "source": "iana" - }, - "audio/prs.sid": { - "source": "iana" - }, - "audio/qcelp": { - "source": "iana" - }, - "audio/raptorfec": { - "source": "iana" - }, - "audio/red": { - "source": "iana" - }, - "audio/rtp-enc-aescm128": { - "source": "iana" - }, - "audio/rtp-midi": { - "source": "iana" - }, - "audio/rtploopback": { - "source": "iana" - }, - "audio/rtx": { - "source": "iana" - }, - "audio/s3m": { - "source": "apache", - "extensions": ["s3m"] - }, - "audio/silk": { - "source": "apache", - "extensions": ["sil"] - }, - "audio/smv": { - "source": "iana" - }, - "audio/smv-qcp": { - "source": "iana" - }, - "audio/smv0": { - "source": "iana" - }, - "audio/sp-midi": { - "source": "iana" - }, - "audio/speex": { - "source": "iana" - }, - "audio/t140c": { - "source": "iana" - }, - "audio/t38": { - "source": "iana" - }, - "audio/telephone-event": { - "source": "iana" - }, - "audio/tone": { - "source": "iana" - }, - "audio/uemclip": { - "source": "iana" - }, - "audio/ulpfec": { - "source": "iana" - }, - "audio/vdvi": { - "source": "iana" - }, - "audio/vmr-wb": { - "source": "iana" - }, - "audio/vnd.3gpp.iufp": { - "source": "iana" - }, - "audio/vnd.4sb": { - "source": "iana" - }, - "audio/vnd.audiokoz": { - "source": "iana" - }, - "audio/vnd.celp": { - "source": "iana" - }, - "audio/vnd.cisco.nse": { - "source": "iana" - }, - "audio/vnd.cmles.radio-events": { - "source": "iana" - }, - "audio/vnd.cns.anp1": { - "source": "iana" - }, - "audio/vnd.cns.inf1": { - "source": "iana" - }, - "audio/vnd.dece.audio": { - "source": "iana", - "extensions": ["uva","uvva"] - }, - "audio/vnd.digital-winds": { - "source": "iana", - "extensions": ["eol"] - }, - "audio/vnd.dlna.adts": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.1": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.2": { - "source": "iana" - }, - "audio/vnd.dolby.mlp": { - "source": "iana" - }, - "audio/vnd.dolby.mps": { - "source": "iana" - }, - "audio/vnd.dolby.pl2": { - "source": "iana" - }, - "audio/vnd.dolby.pl2x": { - "source": "iana" - }, - "audio/vnd.dolby.pl2z": { - "source": "iana" - }, - "audio/vnd.dolby.pulse.1": { - "source": "iana" - }, - "audio/vnd.dra": { - "source": "iana", - "extensions": ["dra"] - }, - "audio/vnd.dts": { - "source": "iana", - "extensions": ["dts"] - }, - "audio/vnd.dts.hd": { - "source": "iana", - "extensions": ["dtshd"] - }, - "audio/vnd.dvb.file": { - "source": "iana" - }, - "audio/vnd.everad.plj": { - "source": "iana" - }, - "audio/vnd.hns.audio": { - "source": "iana" - }, - "audio/vnd.lucent.voice": { - "source": "iana", - "extensions": ["lvp"] - }, - "audio/vnd.ms-playready.media.pya": { - "source": "iana", - "extensions": ["pya"] - }, - "audio/vnd.nokia.mobile-xmf": { - "source": "iana" - }, - "audio/vnd.nortel.vbk": { - "source": "iana" - }, - "audio/vnd.nuera.ecelp4800": { - "source": "iana", - "extensions": ["ecelp4800"] - }, - "audio/vnd.nuera.ecelp7470": { - "source": "iana", - "extensions": ["ecelp7470"] - }, - "audio/vnd.nuera.ecelp9600": { - "source": "iana", - "extensions": ["ecelp9600"] - }, - "audio/vnd.octel.sbc": { - "source": "iana" - }, - "audio/vnd.qcelp": { - "source": "iana" - }, - "audio/vnd.rhetorex.32kadpcm": { - "source": "iana" - }, - "audio/vnd.rip": { - "source": "iana", - "extensions": ["rip"] - }, - "audio/vnd.rn-realaudio": { - "compressible": false - }, - "audio/vnd.sealedmedia.softseal.mpeg": { - "source": "iana" - }, - "audio/vnd.vmx.cvsd": { - "source": "iana" - }, - "audio/vnd.wave": { - "compressible": false - }, - "audio/vorbis": { - "source": "iana", - "compressible": false - }, - "audio/vorbis-config": { - "source": "iana" - }, - "audio/wav": { - "compressible": false, - "extensions": ["wav"] - }, - "audio/wave": { - "compressible": false, - "extensions": ["wav"] - }, - "audio/webm": { - "source": "apache", - "compressible": false, - "extensions": ["weba"] - }, - "audio/x-aac": { - "source": "apache", - "compressible": false, - "extensions": ["aac"] - }, - "audio/x-aiff": { - "source": "apache", - "extensions": ["aif","aiff","aifc"] - }, - "audio/x-caf": { - "source": "apache", - "compressible": false, - "extensions": ["caf"] - }, - "audio/x-flac": { - "source": "apache", - "extensions": ["flac"] - }, - "audio/x-m4a": { - "source": "nginx", - "extensions": ["m4a"] - }, - "audio/x-matroska": { - "source": "apache", - "extensions": ["mka"] - }, - "audio/x-mpegurl": { - "source": "apache", - "extensions": ["m3u"] - }, - "audio/x-ms-wax": { - "source": "apache", - "extensions": ["wax"] - }, - "audio/x-ms-wma": { - "source": "apache", - "extensions": ["wma"] - }, - "audio/x-pn-realaudio": { - "source": "apache", - "extensions": ["ram","ra"] - }, - "audio/x-pn-realaudio-plugin": { - "source": "apache", - "extensions": ["rmp"] - }, - "audio/x-realaudio": { - "source": "nginx", - "extensions": ["ra"] - }, - "audio/x-tta": { - "source": "apache" - }, - "audio/x-wav": { - "source": "apache", - "extensions": ["wav"] - }, - "audio/xm": { - "source": "apache", - "extensions": ["xm"] - }, - "chemical/x-cdx": { - "source": "apache", - "extensions": ["cdx"] - }, - "chemical/x-cif": { - "source": "apache", - "extensions": ["cif"] - }, - "chemical/x-cmdf": { - "source": "apache", - "extensions": ["cmdf"] - }, - "chemical/x-cml": { - "source": "apache", - "extensions": ["cml"] - }, - "chemical/x-csml": { - "source": "apache", - "extensions": ["csml"] - }, - "chemical/x-pdb": { - "source": "apache" - }, - "chemical/x-xyz": { - "source": "apache", - "extensions": ["xyz"] - }, - "font/opentype": { - "compressible": true, - "extensions": ["otf"] - }, - "image/bmp": { - "source": "apache", - "compressible": true, - "extensions": ["bmp"] - }, - "image/cgm": { - "source": "iana", - "extensions": ["cgm"] - }, - "image/fits": { - "source": "iana" - }, - "image/g3fax": { - "source": "iana", - "extensions": ["g3"] - }, - "image/gif": { - "source": "iana", - "compressible": false, - "extensions": ["gif"] - }, - "image/ief": { - "source": "iana", - "extensions": ["ief"] - }, - "image/jp2": { - "source": "iana" - }, - "image/jpeg": { - "source": "iana", - "compressible": false, - "extensions": ["jpeg","jpg","jpe"] - }, - "image/jpm": { - "source": "iana" - }, - "image/jpx": { - "source": "iana" - }, - "image/ktx": { - "source": "iana", - "extensions": ["ktx"] - }, - "image/naplps": { - "source": "iana" - }, - "image/pjpeg": { - "compressible": false - }, - "image/png": { - "source": "iana", - "compressible": false, - "extensions": ["png"] - }, - "image/prs.btif": { - "source": "iana", - "extensions": ["btif"] - }, - "image/prs.pti": { - "source": "iana" - }, - "image/pwg-raster": { - "source": "iana" - }, - "image/sgi": { - "source": "apache", - "extensions": ["sgi"] - }, - "image/svg+xml": { - "source": "iana", - "compressible": true, - "extensions": ["svg","svgz"] - }, - "image/t38": { - "source": "iana" - }, - "image/tiff": { - "source": "iana", - "compressible": false, - "extensions": ["tiff","tif"] - }, - "image/tiff-fx": { - "source": "iana" - }, - "image/vnd.adobe.photoshop": { - "source": "iana", - "compressible": true, - "extensions": ["psd"] - }, - "image/vnd.airzip.accelerator.azv": { - "source": "iana" - }, - "image/vnd.cns.inf2": { - "source": "iana" - }, - "image/vnd.dece.graphic": { - "source": "iana", - "extensions": ["uvi","uvvi","uvg","uvvg"] - }, - "image/vnd.djvu": { - "source": "iana", - "extensions": ["djvu","djv"] - }, - "image/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "image/vnd.dwg": { - "source": "iana", - "extensions": ["dwg"] - }, - "image/vnd.dxf": { - "source": "iana", - "extensions": ["dxf"] - }, - "image/vnd.fastbidsheet": { - "source": "iana", - "extensions": ["fbs"] - }, - "image/vnd.fpx": { - "source": "iana", - "extensions": ["fpx"] - }, - "image/vnd.fst": { - "source": "iana", - "extensions": ["fst"] - }, - "image/vnd.fujixerox.edmics-mmr": { - "source": "iana", - "extensions": ["mmr"] - }, - "image/vnd.fujixerox.edmics-rlc": { - "source": "iana", - "extensions": ["rlc"] - }, - "image/vnd.globalgraphics.pgb": { - "source": "iana" - }, - "image/vnd.microsoft.icon": { - "source": "iana" - }, - "image/vnd.mix": { - "source": "iana" - }, - "image/vnd.ms-modi": { - "source": "iana", - "extensions": ["mdi"] - }, - "image/vnd.ms-photo": { - "source": "apache", - "extensions": ["wdp"] - }, - "image/vnd.net-fpx": { - "source": "iana", - "extensions": ["npx"] - }, - "image/vnd.radiance": { - "source": "iana" - }, - "image/vnd.sealed.png": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.gif": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.jpg": { - "source": "iana" - }, - "image/vnd.svf": { - "source": "iana" - }, - "image/vnd.tencent.tap": { - "source": "iana" - }, - "image/vnd.valve.source.texture": { - "source": "iana" - }, - "image/vnd.wap.wbmp": { - "source": "iana", - "extensions": ["wbmp"] - }, - "image/vnd.xiff": { - "source": "iana", - "extensions": ["xif"] - }, - "image/vnd.zbrush.pcx": { - "source": "iana" - }, - "image/webp": { - "source": "apache", - "extensions": ["webp"] - }, - "image/x-3ds": { - "source": "apache", - "extensions": ["3ds"] - }, - "image/x-cmu-raster": { - "source": "apache", - "extensions": ["ras"] - }, - "image/x-cmx": { - "source": "apache", - "extensions": ["cmx"] - }, - "image/x-freehand": { - "source": "apache", - "extensions": ["fh","fhc","fh4","fh5","fh7"] - }, - "image/x-icon": { - "source": "apache", - "compressible": true, - "extensions": ["ico"] - }, - "image/x-jng": { - "source": "nginx", - "extensions": ["jng"] - }, - "image/x-mrsid-image": { - "source": "apache", - "extensions": ["sid"] - }, - "image/x-ms-bmp": { - "source": "nginx", - "compressible": true, - "extensions": ["bmp"] - }, - "image/x-pcx": { - "source": "apache", - "extensions": ["pcx"] - }, - "image/x-pict": { - "source": "apache", - "extensions": ["pic","pct"] - }, - "image/x-portable-anymap": { - "source": "apache", - "extensions": ["pnm"] - }, - "image/x-portable-bitmap": { - "source": "apache", - "extensions": ["pbm"] - }, - "image/x-portable-graymap": { - "source": "apache", - "extensions": ["pgm"] - }, - "image/x-portable-pixmap": { - "source": "apache", - "extensions": ["ppm"] - }, - "image/x-rgb": { - "source": "apache", - "extensions": ["rgb"] - }, - "image/x-tga": { - "source": "apache", - "extensions": ["tga"] - }, - "image/x-xbitmap": { - "source": "apache", - "extensions": ["xbm"] - }, - "image/x-xcf": { - "compressible": false - }, - "image/x-xpixmap": { - "source": "apache", - "extensions": ["xpm"] - }, - "image/x-xwindowdump": { - "source": "apache", - "extensions": ["xwd"] - }, - "message/cpim": { - "source": "iana" - }, - "message/delivery-status": { - "source": "iana" - }, - "message/disposition-notification": { - "source": "iana" - }, - "message/external-body": { - "source": "iana" - }, - "message/feedback-report": { - "source": "iana" - }, - "message/global": { - "source": "iana" - }, - "message/global-delivery-status": { - "source": "iana" - }, - "message/global-disposition-notification": { - "source": "iana" - }, - "message/global-headers": { - "source": "iana" - }, - "message/http": { - "source": "iana", - "compressible": false - }, - "message/imdn+xml": { - "source": "iana", - "compressible": true - }, - "message/news": { - "source": "iana" - }, - "message/partial": { - "source": "iana", - "compressible": false - }, - "message/rfc822": { - "source": "iana", - "compressible": true, - "extensions": ["eml","mime"] - }, - "message/s-http": { - "source": "iana" - }, - "message/sip": { - "source": "iana" - }, - "message/sipfrag": { - "source": "iana" - }, - "message/tracking-status": { - "source": "iana" - }, - "message/vnd.si.simp": { - "source": "iana" - }, - "message/vnd.wfa.wsc": { - "source": "iana" - }, - "model/iges": { - "source": "iana", - "compressible": false, - "extensions": ["igs","iges"] - }, - "model/mesh": { - "source": "iana", - "compressible": false, - "extensions": ["msh","mesh","silo"] - }, - "model/vnd.collada+xml": { - "source": "iana", - "extensions": ["dae"] - }, - "model/vnd.dwf": { - "source": "iana", - "extensions": ["dwf"] - }, - "model/vnd.flatland.3dml": { - "source": "iana" - }, - "model/vnd.gdl": { - "source": "iana", - "extensions": ["gdl"] - }, - "model/vnd.gs-gdl": { - "source": "apache" - }, - "model/vnd.gs.gdl": { - "source": "iana" - }, - "model/vnd.gtw": { - "source": "iana", - "extensions": ["gtw"] - }, - "model/vnd.moml+xml": { - "source": "iana" - }, - "model/vnd.mts": { - "source": "iana", - "extensions": ["mts"] - }, - "model/vnd.opengex": { - "source": "iana" - }, - "model/vnd.parasolid.transmit.binary": { - "source": "iana" - }, - "model/vnd.parasolid.transmit.text": { - "source": "iana" - }, - "model/vnd.valve.source.compiled-map": { - "source": "iana" - }, - "model/vnd.vtu": { - "source": "iana", - "extensions": ["vtu"] - }, - "model/vrml": { - "source": "iana", - "compressible": false, - "extensions": ["wrl","vrml"] - }, - "model/x3d+binary": { - "source": "apache", - "compressible": false, - "extensions": ["x3db","x3dbz"] - }, - "model/x3d+fastinfoset": { - "source": "iana" - }, - "model/x3d+vrml": { - "source": "apache", - "compressible": false, - "extensions": ["x3dv","x3dvz"] - }, - "model/x3d+xml": { - "source": "iana", - "compressible": true, - "extensions": ["x3d","x3dz"] - }, - "model/x3d-vrml": { - "source": "iana" - }, - "multipart/alternative": { - "source": "iana", - "compressible": false - }, - "multipart/appledouble": { - "source": "iana" - }, - "multipart/byteranges": { - "source": "iana" - }, - "multipart/digest": { - "source": "iana" - }, - "multipart/encrypted": { - "source": "iana", - "compressible": false - }, - "multipart/form-data": { - "source": "iana", - "compressible": false - }, - "multipart/header-set": { - "source": "iana" - }, - "multipart/mixed": { - "source": "iana", - "compressible": false - }, - "multipart/parallel": { - "source": "iana" - }, - "multipart/related": { - "source": "iana", - "compressible": false - }, - "multipart/report": { - "source": "iana" - }, - "multipart/signed": { - "source": "iana", - "compressible": false - }, - "multipart/voice-message": { - "source": "iana" - }, - "multipart/x-mixed-replace": { - "source": "iana" - }, - "text/1d-interleaved-parityfec": { - "source": "iana" - }, - "text/cache-manifest": { - "source": "iana", - "compressible": true, - "extensions": ["appcache","manifest"] - }, - "text/calendar": { - "source": "iana", - "extensions": ["ics","ifb"] - }, - "text/calender": { - "compressible": true - }, - "text/cmd": { - "compressible": true - }, - "text/coffeescript": { - "extensions": ["coffee","litcoffee"] - }, - "text/css": { - "source": "iana", - "compressible": true, - "extensions": ["css"] - }, - "text/csv": { - "source": "iana", - "compressible": true, - "extensions": ["csv"] - }, - "text/csv-schema": { - "source": "iana" - }, - "text/directory": { - "source": "iana" - }, - "text/dns": { - "source": "iana" - }, - "text/ecmascript": { - "source": "iana" - }, - "text/encaprtp": { - "source": "iana" - }, - "text/enriched": { - "source": "iana" - }, - "text/fwdred": { - "source": "iana" - }, - "text/grammar-ref-list": { - "source": "iana" - }, - "text/hjson": { - "extensions": ["hjson"] - }, - "text/html": { - "source": "iana", - "compressible": true, - "extensions": ["html","htm","shtml"] - }, - "text/jade": { - "extensions": ["jade"] - }, - "text/javascript": { - "source": "iana", - "compressible": true - }, - "text/jcr-cnd": { - "source": "iana" - }, - "text/jsx": { - "compressible": true, - "extensions": ["jsx"] - }, - "text/less": { - "extensions": ["less"] - }, - "text/markdown": { - "source": "iana" - }, - "text/mathml": { - "source": "nginx", - "extensions": ["mml"] - }, - "text/mizar": { - "source": "iana" - }, - "text/n3": { - "source": "iana", - "compressible": true, - "extensions": ["n3"] - }, - "text/parameters": { - "source": "iana" - }, - "text/parityfec": { - "source": "iana" - }, - "text/plain": { - "source": "iana", - "compressible": true, - "extensions": ["txt","text","conf","def","list","log","in","ini"] - }, - "text/provenance-notation": { - "source": "iana" - }, - "text/prs.fallenstein.rst": { - "source": "iana" - }, - "text/prs.lines.tag": { - "source": "iana", - "extensions": ["dsc"] - }, - "text/raptorfec": { - "source": "iana" - }, - "text/red": { - "source": "iana" - }, - "text/rfc822-headers": { - "source": "iana" - }, - "text/richtext": { - "source": "iana", - "compressible": true, - "extensions": ["rtx"] - }, - "text/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "text/rtp-enc-aescm128": { - "source": "iana" - }, - "text/rtploopback": { - "source": "iana" - }, - "text/rtx": { - "source": "iana" - }, - "text/sgml": { - "source": "iana", - "extensions": ["sgml","sgm"] - }, - "text/stylus": { - "extensions": ["stylus","styl"] - }, - "text/t140": { - "source": "iana" - }, - "text/tab-separated-values": { - "source": "iana", - "compressible": true, - "extensions": ["tsv"] - }, - "text/troff": { - "source": "iana", - "extensions": ["t","tr","roff","man","me","ms"] - }, - "text/turtle": { - "source": "iana", - "extensions": ["ttl"] - }, - "text/ulpfec": { - "source": "iana" - }, - "text/uri-list": { - "source": "iana", - "compressible": true, - "extensions": ["uri","uris","urls"] - }, - "text/vcard": { - "source": "iana", - "compressible": true, - "extensions": ["vcard"] - }, - "text/vnd.a": { - "source": "iana" - }, - "text/vnd.abc": { - "source": "iana" - }, - "text/vnd.curl": { - "source": "iana", - "extensions": ["curl"] - }, - "text/vnd.curl.dcurl": { - "source": "apache", - "extensions": ["dcurl"] - }, - "text/vnd.curl.mcurl": { - "source": "apache", - "extensions": ["mcurl"] - }, - "text/vnd.curl.scurl": { - "source": "apache", - "extensions": ["scurl"] - }, - "text/vnd.debian.copyright": { - "source": "iana" - }, - "text/vnd.dmclientscript": { - "source": "iana" - }, - "text/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "text/vnd.esmertec.theme-descriptor": { - "source": "iana" - }, - "text/vnd.fly": { - "source": "iana", - "extensions": ["fly"] - }, - "text/vnd.fmi.flexstor": { - "source": "iana", - "extensions": ["flx"] - }, - "text/vnd.graphviz": { - "source": "iana", - "extensions": ["gv"] - }, - "text/vnd.in3d.3dml": { - "source": "iana", - "extensions": ["3dml"] - }, - "text/vnd.in3d.spot": { - "source": "iana", - "extensions": ["spot"] - }, - "text/vnd.iptc.newsml": { - "source": "iana" - }, - "text/vnd.iptc.nitf": { - "source": "iana" - }, - "text/vnd.latex-z": { - "source": "iana" - }, - "text/vnd.motorola.reflex": { - "source": "iana" - }, - "text/vnd.ms-mediapackage": { - "source": "iana" - }, - "text/vnd.net2phone.commcenter.command": { - "source": "iana" - }, - "text/vnd.radisys.msml-basic-layout": { - "source": "iana" - }, - "text/vnd.si.uricatalogue": { - "source": "iana" - }, - "text/vnd.sun.j2me.app-descriptor": { - "source": "iana", - "extensions": ["jad"] - }, - "text/vnd.trolltech.linguist": { - "source": "iana" - }, - "text/vnd.wap.si": { - "source": "iana" - }, - "text/vnd.wap.sl": { - "source": "iana" - }, - "text/vnd.wap.wml": { - "source": "iana", - "extensions": ["wml"] - }, - "text/vnd.wap.wmlscript": { - "source": "iana", - "extensions": ["wmls"] - }, - "text/vtt": { - "charset": "UTF-8", - "compressible": true, - "extensions": ["vtt"] - }, - "text/x-asm": { - "source": "apache", - "extensions": ["s","asm"] - }, - "text/x-c": { - "source": "apache", - "extensions": ["c","cc","cxx","cpp","h","hh","dic"] - }, - "text/x-component": { - "source": "nginx", - "extensions": ["htc"] - }, - "text/x-fortran": { - "source": "apache", - "extensions": ["f","for","f77","f90"] - }, - "text/x-gwt-rpc": { - "compressible": true - }, - "text/x-handlebars-template": { - "extensions": ["hbs"] - }, - "text/x-java-source": { - "source": "apache", - "extensions": ["java"] - }, - "text/x-jquery-tmpl": { - "compressible": true - }, - "text/x-lua": { - "extensions": ["lua"] - }, - "text/x-markdown": { - "compressible": true, - "extensions": ["markdown","md","mkd"] - }, - "text/x-nfo": { - "source": "apache", - "extensions": ["nfo"] - }, - "text/x-opml": { - "source": "apache", - "extensions": ["opml"] - }, - "text/x-pascal": { - "source": "apache", - "extensions": ["p","pas"] - }, - "text/x-processing": { - "compressible": true, - "extensions": ["pde"] - }, - "text/x-sass": { - "extensions": ["sass"] - }, - "text/x-scss": { - "extensions": ["scss"] - }, - "text/x-setext": { - "source": "apache", - "extensions": ["etx"] - }, - "text/x-sfv": { - "source": "apache", - "extensions": ["sfv"] - }, - "text/x-uuencode": { - "source": "apache", - "extensions": ["uu"] - }, - "text/x-vcalendar": { - "source": "apache", - "extensions": ["vcs"] - }, - "text/x-vcard": { - "source": "apache", - "extensions": ["vcf"] - }, - "text/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml"] - }, - "text/xml-external-parsed-entity": { - "source": "iana" - }, - "text/yaml": { - "extensions": ["yaml","yml"] - }, - "video/1d-interleaved-parityfec": { - "source": "apache" - }, - "video/3gpp": { - "source": "apache", - "extensions": ["3gp","3gpp"] - }, - "video/3gpp-tt": { - "source": "apache" - }, - "video/3gpp2": { - "source": "apache", - "extensions": ["3g2"] - }, - "video/bmpeg": { - "source": "apache" - }, - "video/bt656": { - "source": "apache" - }, - "video/celb": { - "source": "apache" - }, - "video/dv": { - "source": "apache" - }, - "video/h261": { - "source": "apache", - "extensions": ["h261"] - }, - "video/h263": { - "source": "apache", - "extensions": ["h263"] - }, - "video/h263-1998": { - "source": "apache" - }, - "video/h263-2000": { - "source": "apache" - }, - "video/h264": { - "source": "apache", - "extensions": ["h264"] - }, - "video/h264-rcdo": { - "source": "apache" - }, - "video/h264-svc": { - "source": "apache" - }, - "video/jpeg": { - "source": "apache", - "extensions": ["jpgv"] - }, - "video/jpeg2000": { - "source": "apache" - }, - "video/jpm": { - "source": "apache", - "extensions": ["jpm","jpgm"] - }, - "video/mj2": { - "source": "apache", - "extensions": ["mj2","mjp2"] - }, - "video/mp1s": { - "source": "apache" - }, - "video/mp2p": { - "source": "apache" - }, - "video/mp2t": { - "source": "apache", - "extensions": ["ts"] - }, - "video/mp4": { - "source": "apache", - "compressible": false, - "extensions": ["mp4","mp4v","mpg4"] - }, - "video/mp4v-es": { - "source": "apache" - }, - "video/mpeg": { - "source": "apache", - "compressible": false, - "extensions": ["mpeg","mpg","mpe","m1v","m2v"] - }, - "video/mpeg4-generic": { - "source": "apache" - }, - "video/mpv": { - "source": "apache" - }, - "video/nv": { - "source": "apache" - }, - "video/ogg": { - "source": "apache", - "compressible": false, - "extensions": ["ogv"] - }, - "video/parityfec": { - "source": "apache" - }, - "video/pointer": { - "source": "apache" - }, - "video/quicktime": { - "source": "apache", - "compressible": false, - "extensions": ["qt","mov"] - }, - "video/raw": { - "source": "apache" - }, - "video/rtp-enc-aescm128": { - "source": "apache" - }, - "video/rtx": { - "source": "apache" - }, - "video/smpte292m": { - "source": "apache" - }, - "video/ulpfec": { - "source": "apache" - }, - "video/vc1": { - "source": "apache" - }, - "video/vnd.cctv": { - "source": "apache" - }, - "video/vnd.dece.hd": { - "source": "apache", - "extensions": ["uvh","uvvh"] - }, - "video/vnd.dece.mobile": { - "source": "apache", - "extensions": ["uvm","uvvm"] - }, - "video/vnd.dece.mp4": { - "source": "apache" - }, - "video/vnd.dece.pd": { - "source": "apache", - "extensions": ["uvp","uvvp"] - }, - "video/vnd.dece.sd": { - "source": "apache", - "extensions": ["uvs","uvvs"] - }, - "video/vnd.dece.video": { - "source": "apache", - "extensions": ["uvv","uvvv"] - }, - "video/vnd.directv.mpeg": { - "source": "apache" - }, - "video/vnd.directv.mpeg-tts": { - "source": "apache" - }, - "video/vnd.dlna.mpeg-tts": { - "source": "apache" - }, - "video/vnd.dvb.file": { - "source": "apache", - "extensions": ["dvb"] - }, - "video/vnd.fvt": { - "source": "apache", - "extensions": ["fvt"] - }, - "video/vnd.hns.video": { - "source": "apache" - }, - "video/vnd.iptvforum.1dparityfec-1010": { - "source": "apache" - }, - "video/vnd.iptvforum.1dparityfec-2005": { - "source": "apache" - }, - "video/vnd.iptvforum.2dparityfec-1010": { - "source": "apache" - }, - "video/vnd.iptvforum.2dparityfec-2005": { - "source": "apache" - }, - "video/vnd.iptvforum.ttsavc": { - "source": "apache" - }, - "video/vnd.iptvforum.ttsmpeg2": { - "source": "apache" - }, - "video/vnd.motorola.video": { - "source": "apache" - }, - "video/vnd.motorola.videop": { - "source": "apache" - }, - "video/vnd.mpegurl": { - "source": "apache", - "extensions": ["mxu","m4u"] - }, - "video/vnd.ms-playready.media.pyv": { - "source": "apache", - "extensions": ["pyv"] - }, - "video/vnd.nokia.interleaved-multimedia": { - "source": "apache" - }, - "video/vnd.nokia.videovoip": { - "source": "apache" - }, - "video/vnd.objectvideo": { - "source": "apache" - }, - "video/vnd.sealed.mpeg1": { - "source": "apache" - }, - "video/vnd.sealed.mpeg4": { - "source": "apache" - }, - "video/vnd.sealed.swf": { - "source": "apache" - }, - "video/vnd.sealedmedia.softseal.mov": { - "source": "apache" - }, - "video/vnd.uvvu.mp4": { - "source": "apache", - "extensions": ["uvu","uvvu"] - }, - "video/vnd.vivo": { - "source": "apache", - "extensions": ["viv"] - }, - "video/webm": { - "source": "apache", - "compressible": false, - "extensions": ["webm"] - }, - "video/x-f4v": { - "source": "apache", - "extensions": ["f4v"] - }, - "video/x-fli": { - "source": "apache", - "extensions": ["fli"] - }, - "video/x-flv": { - "source": "apache", - "compressible": false, - "extensions": ["flv"] - }, - "video/x-m4v": { - "source": "apache", - "extensions": ["m4v"] - }, - "video/x-matroska": { - "source": "apache", - "compressible": false, - "extensions": ["mkv","mk3d","mks"] - }, - "video/x-mng": { - "source": "apache", - "extensions": ["mng"] - }, - "video/x-ms-asf": { - "source": "apache", - "extensions": ["asf","asx"] - }, - "video/x-ms-vob": { - "source": "apache", - "extensions": ["vob"] - }, - "video/x-ms-wm": { - "source": "apache", - "extensions": ["wm"] - }, - "video/x-ms-wmv": { - "source": "apache", - "compressible": false, - "extensions": ["wmv"] - }, - "video/x-ms-wmx": { - "source": "apache", - "extensions": ["wmx"] - }, - "video/x-ms-wvx": { - "source": "apache", - "extensions": ["wvx"] - }, - "video/x-msvideo": { - "source": "apache", - "extensions": ["avi"] - }, - "video/x-sgi-movie": { - "source": "apache", - "extensions": ["movie"] - }, - "video/x-smv": { - "source": "apache", - "extensions": ["smv"] - }, - "x-conference/x-cooltalk": { - "source": "apache", - "extensions": ["ice"] - }, - "x-shader/x-fragment": { - "compressible": true - }, - "x-shader/x-vertex": { - "compressible": true - } -} diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/index.js b/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/index.js deleted file mode 100644 index 551031f..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/index.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * mime-db - * Copyright(c) 2014 Jonathan Ong - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = require('./db.json') diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/package.json b/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/package.json deleted file mode 100644 index df4182c..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/node_modules/mime-db/package.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "name": "mime-db", - "description": "Media Type Database", - "version": "1.15.0", - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - { - "name": "Robert Kieffer", - "email": "robert@broofa.com", - "url": "http://github.com/broofa" - } - ], - "license": "MIT", - "keywords": [ - "mime", - "db", - "type", - "types", - "database", - "charset", - "charsets" - ], - "repository": { - "type": "git", - "url": "git://github.com/jshttp/mime-db" - }, - "devDependencies": { - "bluebird": "2.9.33", - "co": "4.6.0", - "cogent": "1.0.1", - "csv-parse": "0.1.3", - "gnode": "0.1.1", - "istanbul": "0.3.17", - "mocha": "1.21.5", - "raw-body": "2.1.2", - "stream-to-array": "2" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "README.md", - "db.json", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "build": "node scripts/build", - "fetch": "gnode scripts/fetch-apache && gnode scripts/fetch-iana && gnode scripts/fetch-nginx", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/", - "update": "npm run fetch && npm run build" - }, - "readme": "# mime-db\n\n[![NPM Version][npm-version-image]][npm-url]\n[![NPM Downloads][npm-downloads-image]][npm-url]\n[![Node.js Version][node-image]][node-url]\n[![Build Status][travis-image]][travis-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\nThis is a database of all mime types.\nIt consists of a single, public JSON file and does not include any logic,\nallowing it to remain as un-opinionated as possible with an API.\nIt aggregates data from the following sources:\n\n- http://www.iana.org/assignments/media-types/media-types.xhtml\n- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types\n- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types\n\n## Installation\n\n```bash\nnpm install mime-db\n```\n\n### Database Download\n\nIf you're crazy enough to use this in the browser, you can just grab the\nJSON file using [RawGit](https://rawgit.com/). It is recommended to replace\n`master` with [a release tag](https://github.com/jshttp/mime-db/tags) as the\nJSON format may change in the future.\n\n```\nhttps://cdn.rawgit.com/jshttp/mime-db/master/db.json\n```\n\n## Usage\n\n```js\nvar db = require('mime-db');\n\n// grab data on .js files\nvar data = db['application/javascript'];\n```\n\n## Data Structure\n\nThe JSON file is a map lookup for lowercased mime types.\nEach mime type has the following properties:\n\n- `.source` - where the mime type is defined.\n If not set, it's probably a custom media type.\n - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types)\n - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml)\n - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types)\n- `.extensions[]` - known extensions associated with this mime type.\n- `.compressible` - whether a file of this type is can be gzipped.\n- `.charset` - the default charset associated with this type, if any.\n\nIf unknown, every property could be `undefined`.\n\n## Contributing\n\nTo edit the database, only make PRs against `src/custom.json` or\n`src/custom-suffix.json`.\n\nTo update the build, run `npm run build`.\n\n## Adding Custom Media Types\n\nThe best way to get new media types included in this library is to register\nthem with the IANA. The community registration procedure is outlined in\n[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types\nregistered with the IANA are automatically pulled into this library.\n\n[npm-version-image]: https://img.shields.io/npm/v/mime-db.svg\n[npm-downloads-image]: https://img.shields.io/npm/dm/mime-db.svg\n[npm-url]: https://npmjs.org/package/mime-db\n[travis-image]: https://img.shields.io/travis/jshttp/mime-db/master.svg\n[travis-url]: https://travis-ci.org/jshttp/mime-db\n[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-db/master.svg\n[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master\n[node-image]: https://img.shields.io/node/v/mime-db.svg\n[node-url]: http://nodejs.org/download/\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/jshttp/mime-db/issues" - }, - "homepage": "https://github.com/jshttp/mime-db", - "_id": "mime-db@1.15.0", - "dist": { - "shasum": "a117ffe20c1f953f119ddd626a125e1a96c4570c" - }, - "_from": "mime-db@1.15.0", - "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.15.0.tgz" -} diff --git a/node_modules/express/node_modules/type-is/node_modules/mime-types/package.json b/node_modules/express/node_modules/type-is/node_modules/mime-types/package.json deleted file mode 100644 index e0927b5..0000000 --- a/node_modules/express/node_modules/type-is/node_modules/mime-types/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "name": "mime-types", - "description": "The ultimate javascript content-type utility.", - "version": "2.1.3", - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "Jeremiah Senkpiel", - "email": "fishrock123@rocketmail.com", - "url": "https://searchbeam.jit.su" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - } - ], - "license": "MIT", - "keywords": [ - "mime", - "types" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/jshttp/mime-types.git" - }, - "dependencies": { - "mime-db": "~1.15.0" - }, - "devDependencies": { - "istanbul": "0.3.17", - "mocha": "~1.21.5" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec test/test.js", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/test.js", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot test/test.js" - }, - "gitHead": "565c49ad5683d4a123a170da3444ed32ce426c3a", - "bugs": { - "url": "https://github.com/jshttp/mime-types/issues" - }, - "homepage": "https://github.com/jshttp/mime-types", - "_id": "mime-types@2.1.3", - "_shasum": "f259849c7eb1f85b8f5f826187278a7f74f0c966", - "_from": "mime-types@>=2.1.3 <2.2.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "f259849c7eb1f85b8f5f826187278a7f74f0c966", - "tarball": "http://registry.npmjs.org/mime-types/-/mime-types-2.1.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/type-is/package.json b/node_modules/express/node_modules/type-is/package.json deleted file mode 100644 index f3f6bb6..0000000 --- a/node_modules/express/node_modules/type-is/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "name": "type-is", - "description": "Infer the content-type of a request.", - "version": "1.6.5", - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - } - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/jshttp/type-is.git" - }, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.3" - }, - "devDependencies": { - "istanbul": "0.3.17", - "mocha": "~1.21.5" - }, - "engines": { - "node": ">= 0.6" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "scripts": { - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "keywords": [ - "content", - "type", - "checking" - ], - "gitHead": "b5fd0918ecc05113d32dbb97b02bb18cb635b059", - "bugs": { - "url": "https://github.com/jshttp/type-is/issues" - }, - "homepage": "https://github.com/jshttp/type-is", - "_id": "type-is@1.6.5", - "_shasum": "92129495c7b7563eaf923b447382c6c471f95de4", - "_from": "type-is@>=1.6.4 <1.7.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "mscdex", - "email": "mscdex@mscdex.net" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - }, - { - "name": "defunctzombie", - "email": "shtylman@gmail.com" - } - ], - "dist": { - "shasum": "92129495c7b7563eaf923b447382c6c471f95de4", - "tarball": "http://registry.npmjs.org/type-is/-/type-is-1.6.5.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.5.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/express/node_modules/utils-merge/package.json b/node_modules/express/node_modules/utils-merge/package.json index 2f9660e..7c115b0 100644 --- a/node_modules/express/node_modules/utils-merge/package.json +++ b/node_modules/express/node_modules/utils-merge/package.json @@ -30,7 +30,7 @@ "chai": "1.x.x" }, "scripts": { - "test": "mocha --reporter spec --require test/bootstrap/node test/*.test.js" + "test": "node_modules/.bin/mocha --reporter spec --require test/bootstrap/node test/*.test.js" }, "engines": { "node": ">= 0.4.0" @@ -54,7 +54,5 @@ ], "directories": {}, "_shasum": "0294fb922bb9375153541c4f7096231f287c8af8", - "_resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/jaredhanson/utils-merge#readme" + "_resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" } diff --git a/node_modules/express/node_modules/vary/package.json b/node_modules/express/node_modules/vary/package.json index 81eee6c..8e1bee4 100644 --- a/node_modules/express/node_modules/vary/package.json +++ b/node_modules/express/node_modules/vary/package.json @@ -42,7 +42,7 @@ "homepage": "https://github.com/jshttp/vary", "_id": "vary@1.0.1", "_shasum": "99e4981566a286118dfb2b817357df7993376d10", - "_from": "vary@>=1.0.0 <1.1.0", + "_from": "vary@>=1.0.1 <1.1.0", "_npmVersion": "1.4.28", "_npmUser": { "name": "dougwilson", diff --git a/node_modules/express/package.json b/node_modules/express/package.json index ab6c870..b5904c3 100644 --- a/node_modules/express/package.json +++ b/node_modules/express/package.json @@ -1,7 +1,7 @@ { "name": "express", - "description": "Fast, unopinionated, minimalist web framework", - "version": "4.13.1", + "description": "Sinatra inspired web development framework", + "version": "3.21.2", "author": { "name": "TJ Holowaychuk", "email": "tj@vision-media.ca" @@ -28,18 +28,13 @@ "email": "me@jongleberry.com" }, { - "name": "Roman Shtylman", - "email": "shtylman+expressjs@gmail.com" - }, - { - "name": "Young Jae Sim", - "email": "hanul@hanul.me" + "name": "Roman Shtylman" } ], "license": "MIT", "repository": { "type": "git", - "url": "git+https://github.com/strongloop/express.git" + "url": "https://github.com/strongloop/express" }, "homepage": "http://expressjs.com/", "keywords": [ @@ -54,74 +49,64 @@ "api" ], "dependencies": { - "accepts": "~1.2.10", - "array-flatten": "1.1.0", + "basic-auth": "~1.0.3", + "connect": "2.30.2", "content-disposition": "0.5.0", "content-type": "~1.0.1", + "commander": "2.6.0", "cookie": "0.1.3", "cookie-signature": "1.0.6", "debug": "~2.2.0", "depd": "~1.0.1", "escape-html": "1.0.2", "etag": "~1.7.0", - "finalhandler": "0.4.0", "fresh": "0.3.0", "merge-descriptors": "1.0.0", "methods": "~1.1.1", - "on-finished": "~2.3.0", + "mkdirp": "0.5.1", "parseurl": "~1.3.0", - "path-to-regexp": "0.1.6", "proxy-addr": "~1.0.8", - "qs": "4.0.0", "range-parser": "~1.0.2", "send": "0.13.0", - "serve-static": "~1.10.0", - "type-is": "~1.6.4", - "vary": "~1.0.0", - "utils-merge": "1.0.0" + "utils-merge": "1.0.0", + "vary": "~1.0.1" }, "devDependencies": { - "after": "0.8.1", - "ejs": "2.3.2", + "connect-redis": "~1.5.0", + "ejs": "2.3.3", "istanbul": "0.3.9", - "marked": "0.3.3", + "marked": "0.3.5", "mocha": "2.2.5", - "should": "7.0.1", - "supertest": "1.0.1", - "body-parser": "~1.13.2", - "connect-redis": "~2.3.0", - "cookie-parser": "~1.3.5", - "cookie-session": "~1.2.0", - "express-session": "~1.11.3", - "jade": "~1.11.0", - "method-override": "~2.3.3", - "morgan": "~1.6.1", - "multiparty": "~4.1.2", - "vhost": "~3.0.0" + "should": "7.0.2", + "supertest": "1.0.1" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 0.8.0" + }, + "bin": { + "express": "./bin/express" }, "files": [ "LICENSE", "History.md", "Readme.md", "index.js", + "bin/", "lib/" ], "scripts": { - "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/", - "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/", + "test": "mocha --require test/support/env --reporter dot --check-leaks test/ test/acceptance/", "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/", - "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/" + "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/" }, - "gitHead": "2ac25098548f739c4f2b526b2a00aa60a74c8e75", + "gitHead": "cb59086305367d9fcd7d63b53cfca1a3e4ef77d7", "bugs": { "url": "https://github.com/strongloop/express/issues" }, - "_id": "express@4.13.1", - "_shasum": "f117aa1d1f6bedbc8de5b6d71fc31a5acd0f63df", - "_from": "express@>=4.13.1 <4.14.0", + "_id": "express@3.21.2", + "_shasum": "0c2903ee5c54e63d65a96170764703550665a3de", + "_from": "express@>=3.0.0 <4.0.0", "_npmVersion": "1.4.28", "_npmUser": { "name": "dougwilson", @@ -158,10 +143,9 @@ } ], "dist": { - "shasum": "f117aa1d1f6bedbc8de5b6d71fc31a5acd0f63df", - "tarball": "http://registry.npmjs.org/express/-/express-4.13.1.tgz" + "shasum": "0c2903ee5c54e63d65a96170764703550665a3de", + "tarball": "http://registry.npmjs.org/express/-/express-3.21.2.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/express/-/express-4.13.1.tgz", - "readme": "ERROR: No README data found!" + "_resolved": "https://registry.npmjs.org/express/-/express-3.21.2.tgz" } diff --git a/node_modules/lodash/README.md b/node_modules/lodash/README.md index 189265e..fd98e5c 100644 --- a/node_modules/lodash/README.md +++ b/node_modules/lodash/README.md @@ -1,4 +1,4 @@ -# lodash v3.10.0 +# lodash v3.10.1 The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash](https://lodash.com/) exported as [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) modules. @@ -28,7 +28,7 @@ var array = require('lodash/array'); var chunk = require('lodash/array/chunk'); ``` -See the [package source](https://github.com/lodash/lodash/tree/3.10.0-npm) for more details. +See the [package source](https://github.com/lodash/lodash/tree/3.10.1-npm) for more details. **Note:**
    Don’t assign values to the [special variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` when in the REPL.
    @@ -39,8 +39,8 @@ Install [n_](https://www.npmjs.com/package/n_) for a REPL that includes lodash b lodash is also available in a variety of other builds & module formats. * npm packages for [modern](https://www.npmjs.com/package/lodash), [compatibility](https://www.npmjs.com/package/lodash-compat), & [per method](https://www.npmjs.com/browse/keyword/lodash-modularized) builds - * AMD modules for [modern](https://github.com/lodash/lodash/tree/3.10.0-amd) & [compatibility](https://github.com/lodash/lodash-compat/tree/3.10.0-amd) builds - * ES modules for the [modern](https://github.com/lodash/lodash/tree/3.10.0-es) build + * AMD modules for [modern](https://github.com/lodash/lodash/tree/3.10.1-amd) & [compatibility](https://github.com/lodash/lodash-compat/tree/3.10.1-amd) builds + * ES modules for the [modern](https://github.com/lodash/lodash/tree/3.10.1-es) build ## Further Reading @@ -117,5 +117,5 @@ lodash is also available in a variety of other builds & module formats. ## Support -Tested in Chrome 42-43, Firefox 37-38, IE 6-11, MS Edge, Opera 28-29, Safari 5-8, ChakraNode 0.12.2, io.js 2.3.1, Node.js 0.8.28, 0.10.38, & 0.12.5, PhantomJS 1.9.8, RingoJS 0.11, & Rhino 1.7.6. +Tested in Chrome 43-44, Firefox 38-39, IE 6-11, MS Edge, Safari 5-8, ChakraNode 0.12.2, io.js 2.5.0, Node.js 0.8.28, 0.10.40, & 0.12.7, PhantomJS 1.9.8, RingoJS 0.11, & Rhino 1.7.6. Automated [browser](https://saucelabs.com/u/lodash) & [CI](https://travis-ci.org/lodash/lodash/) test runs are available. Special thanks to [Sauce Labs](https://saucelabs.com/) for providing automated browser testing. diff --git a/node_modules/lodash/array/flatten.js b/node_modules/lodash/array/flatten.js index 65bbeef..dc2eff8 100644 --- a/node_modules/lodash/array/flatten.js +++ b/node_modules/lodash/array/flatten.js @@ -3,7 +3,7 @@ var baseFlatten = require('../internal/baseFlatten'), /** * Flattens a nested array. If `isDeep` is `true` the array is recursively - * flattened, otherwise it is only flattened a single level. + * flattened, otherwise it's only flattened a single level. * * @static * @memberOf _ diff --git a/node_modules/lodash/array/indexOf.js b/node_modules/lodash/array/indexOf.js index bad3107..4cfc682 100644 --- a/node_modules/lodash/array/indexOf.js +++ b/node_modules/lodash/array/indexOf.js @@ -7,7 +7,7 @@ var nativeMax = Math.max; /** * Gets the index at which the first occurrence of `value` is found in `array` * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it is used as the offset + * for equality comparisons. If `fromIndex` is negative, it's used as the offset * from the end of `array`. If `array` is sorted providing `true` for `fromIndex` * performs a faster binary search. * diff --git a/node_modules/lodash/array/sortedIndex.js b/node_modules/lodash/array/sortedIndex.js index 51d150e..6903bca 100644 --- a/node_modules/lodash/array/sortedIndex.js +++ b/node_modules/lodash/array/sortedIndex.js @@ -3,7 +3,7 @@ var createSortedIndex = require('../internal/createSortedIndex'); /** * Uses a binary search to determine the lowest index at which `value` should * be inserted into `array` in order to maintain its sort order. If an iteratee - * function is provided it is invoked for `value` and each element of `array` + * function is provided it's invoked for `value` and each element of `array` * to compute their sort ranking. The iteratee is bound to `thisArg` and * invoked with one argument; (value). * diff --git a/node_modules/lodash/array/uniq.js b/node_modules/lodash/array/uniq.js index f81a2b9..ae937ef 100644 --- a/node_modules/lodash/array/uniq.js +++ b/node_modules/lodash/array/uniq.js @@ -8,7 +8,7 @@ var baseCallback = require('../internal/baseCallback'), * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) * for equality comparisons, in which only the first occurence of each element * is kept. Providing `true` for `isSorted` performs a faster search algorithm - * for sorted arrays. If an iteratee function is provided it is invoked for + * for sorted arrays. If an iteratee function is provided it's invoked for * each element in the array to generate the criterion by which uniqueness * is computed. The `iteratee` is bound to `thisArg` and invoked with three * arguments: (value, index, array). diff --git a/node_modules/lodash/chain/wrapperReverse.js b/node_modules/lodash/chain/wrapperReverse.js index f2b3d19..6ba546d 100644 --- a/node_modules/lodash/chain/wrapperReverse.js +++ b/node_modules/lodash/chain/wrapperReverse.js @@ -26,7 +26,7 @@ function wrapperReverse() { var value = this.__wrapped__; var interceptor = function(value) { - return (wrapped && wrapped.__dir__ < 0) ? value : value.reverse(); + return value.reverse(); }; if (value instanceof LazyWrapper) { var wrapped = value; diff --git a/node_modules/lodash/collection/includes.js b/node_modules/lodash/collection/includes.js index 482e42d..329486a 100644 --- a/node_modules/lodash/collection/includes.js +++ b/node_modules/lodash/collection/includes.js @@ -10,9 +10,9 @@ var baseIndexOf = require('../internal/baseIndexOf'), var nativeMax = Math.max; /** - * Checks if `value` is in `collection` using + * Checks if `target` is in `collection` using * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it is used as the offset + * for equality comparisons. If `fromIndex` is negative, it's used as the offset * from the end of `collection`. * * @static diff --git a/node_modules/lodash/collection/invoke.js b/node_modules/lodash/collection/invoke.js index a1f8a20..6e71721 100644 --- a/node_modules/lodash/collection/invoke.js +++ b/node_modules/lodash/collection/invoke.js @@ -7,7 +7,7 @@ var baseEach = require('../internal/baseEach'), /** * Invokes the method at `path` of each element in `collection`, returning * an array of the results of each invoked method. Any additional arguments - * are provided to each invoked method. If `methodName` is a function it is + * are provided to each invoked method. If `methodName` is a function it's * invoked for, and `this` bound to, each element in `collection`. * * @static diff --git a/node_modules/lodash/function/after.js b/node_modules/lodash/function/after.js index e6a5de4..96a51fd 100644 --- a/node_modules/lodash/function/after.js +++ b/node_modules/lodash/function/after.js @@ -6,7 +6,7 @@ var nativeIsFinite = global.isFinite; /** * The opposite of `_.before`; this method creates a function that invokes - * `func` once it is called `n` or more times. + * `func` once it's called `n` or more times. * * @static * @memberOf _ diff --git a/node_modules/lodash/function/before.js b/node_modules/lodash/function/before.js index dd1d03b..3d94216 100644 --- a/node_modules/lodash/function/before.js +++ b/node_modules/lodash/function/before.js @@ -3,7 +3,7 @@ var FUNC_ERROR_TEXT = 'Expected a function'; /** * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it is called less than `n` times. Subsequent + * of the created function, while it's called less than `n` times. Subsequent * calls to the created function return the result of the last `func` invocation. * * @static diff --git a/node_modules/lodash/function/debounce.js b/node_modules/lodash/function/debounce.js index caf2a69..163af90 100644 --- a/node_modules/lodash/function/debounce.js +++ b/node_modules/lodash/function/debounce.js @@ -32,7 +32,7 @@ var nativeMax = Math.max; * @param {boolean} [options.leading=false] Specify invoking on the leading * edge of the timeout. * @param {number} [options.maxWait] The maximum time `func` is allowed to be - * delayed before it is invoked. + * delayed before it's invoked. * @param {boolean} [options.trailing=true] Specify invoking on the trailing * edge of the timeout. * @returns {Function} Returns the new debounced function. diff --git a/node_modules/lodash/function/defer.js b/node_modules/lodash/function/defer.js index 369790c..3accbf9 100644 --- a/node_modules/lodash/function/defer.js +++ b/node_modules/lodash/function/defer.js @@ -3,7 +3,7 @@ var baseDelay = require('../internal/baseDelay'), /** * Defers invoking the `func` until the current call stack has cleared. Any - * additional arguments are provided to `func` when it is invoked. + * additional arguments are provided to `func` when it's invoked. * * @static * @memberOf _ diff --git a/node_modules/lodash/function/delay.js b/node_modules/lodash/function/delay.js index 955b059..d5eef27 100644 --- a/node_modules/lodash/function/delay.js +++ b/node_modules/lodash/function/delay.js @@ -3,7 +3,7 @@ var baseDelay = require('../internal/baseDelay'), /** * Invokes `func` after `wait` milliseconds. Any additional arguments are - * provided to `func` when it is invoked. + * provided to `func` when it's invoked. * * @static * @memberOf _ diff --git a/node_modules/lodash/function/restParam.js b/node_modules/lodash/function/restParam.js index 3a1c157..8852286 100644 --- a/node_modules/lodash/function/restParam.js +++ b/node_modules/lodash/function/restParam.js @@ -8,7 +8,7 @@ var nativeMax = Math.max; * Creates a function that invokes `func` with the `this` binding of the * created function and arguments from `start` and beyond provided as an array. * - * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters). + * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters). * * @static * @memberOf _ diff --git a/node_modules/lodash/function/spread.js b/node_modules/lodash/function/spread.js index aad4b71..780f504 100644 --- a/node_modules/lodash/function/spread.js +++ b/node_modules/lodash/function/spread.js @@ -5,7 +5,7 @@ var FUNC_ERROR_TEXT = 'Expected a function'; * Creates a function that invokes `func` with the `this` binding of the created * function and an array of arguments much like [`Function#apply`](https://es5.github.io/#x15.3.4.3). * - * **Note:** This method is based on the [spread operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator). + * **Note:** This method is based on the [spread operator](https://developer.mozilla.org/Web/JavaScript/Reference/Operators/Spread_operator). * * @static * @memberOf _ diff --git a/node_modules/lodash/index.js b/node_modules/lodash/index.js index be768ee..5f17319 100644 --- a/node_modules/lodash/index.js +++ b/node_modules/lodash/index.js @@ -1,6 +1,6 @@ /** * @license - * lodash 3.10.0 (Custom Build) + * lodash 3.10.1 (Custom Build) * Build: `lodash modern -d -o ./index.js` * Copyright 2012-2015 The Dojo Foundation * Based on Underscore.js 1.8.3 @@ -13,7 +13,7 @@ var undefined; /** Used as the semantic version number. */ - var VERSION = '3.10.0'; + var VERSION = '3.10.1'; /** Used to compose bitmasks for wrapper metadata. */ var BIND_FLAG = 1, diff --git a/node_modules/lodash/internal/baseUniq.js b/node_modules/lodash/internal/baseUniq.js index 4a7c254..a043443 100644 --- a/node_modules/lodash/internal/baseUniq.js +++ b/node_modules/lodash/internal/baseUniq.js @@ -12,7 +12,7 @@ var LARGE_ARRAY_SIZE = 200; * @private * @param {Array} array The array to inspect. * @param {Function} [iteratee] The function invoked per iteration. - * @returns {Array} Returns the new duplicate-value-free array. + * @returns {Array} Returns the new duplicate free array. */ function baseUniq(array, iteratee) { var index = -1, diff --git a/node_modules/lodash/internal/getFuncName.js b/node_modules/lodash/internal/getFuncName.js index 2ea73a6..ed92867 100644 --- a/node_modules/lodash/internal/getFuncName.js +++ b/node_modules/lodash/internal/getFuncName.js @@ -8,7 +8,7 @@ var realNames = require('./realNames'); * @returns {string} Returns the function name. */ function getFuncName(func) { - var result = func.name, + var result = (func.name + ''), array = realNames[result], length = array ? array.length : 0; diff --git a/node_modules/lodash/internal/isLaziable.js b/node_modules/lodash/internal/isLaziable.js index a0f1470..475fab1 100644 --- a/node_modules/lodash/internal/isLaziable.js +++ b/node_modules/lodash/internal/isLaziable.js @@ -11,11 +11,12 @@ var LazyWrapper = require('./LazyWrapper'), * @returns {boolean} Returns `true` if `func` has a lazy counterpart, else `false`. */ function isLaziable(func) { - var funcName = getFuncName(func); - if (!(funcName in LazyWrapper.prototype)) { + var funcName = getFuncName(func), + other = lodash[funcName]; + + if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { return false; } - var other = lodash[funcName]; if (func === other) { return true; } diff --git a/node_modules/lodash/internal/lazyValue.js b/node_modules/lodash/internal/lazyValue.js index 44aa377..8de68e6 100644 --- a/node_modules/lodash/internal/lazyValue.js +++ b/node_modules/lodash/internal/lazyValue.js @@ -37,7 +37,7 @@ function lazyValue() { takeCount = nativeMin(length, this.__takeCount__); if (!isArr || arrLength < LARGE_ARRAY_SIZE || (arrLength == length && takeCount == length)) { - return baseWrapperValue((isRight && isArr) ? array.reverse() : array, this.__actions__); + return baseWrapperValue(array, this.__actions__); } var result = []; diff --git a/node_modules/lodash/internal/sortedUniq.js b/node_modules/lodash/internal/sortedUniq.js index 22887eb..3ede46a 100644 --- a/node_modules/lodash/internal/sortedUniq.js +++ b/node_modules/lodash/internal/sortedUniq.js @@ -5,7 +5,7 @@ * @private * @param {Array} array The array to inspect. * @param {Function} [iteratee] The function invoked per iteration. - * @returns {Array} Returns the new duplicate-value-free array. + * @returns {Array} Returns the new duplicate free array. */ function sortedUniq(array, iteratee) { var seen, diff --git a/node_modules/lodash/lang/clone.js b/node_modules/lodash/lang/clone.js index 0a972ea..85ee8fe 100644 --- a/node_modules/lodash/lang/clone.js +++ b/node_modules/lodash/lang/clone.js @@ -4,10 +4,10 @@ var baseClone = require('../internal/baseClone'), /** * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned, - * otherwise they are assigned by reference. If `customizer` is provided it is + * otherwise they are assigned by reference. If `customizer` is provided it's * invoked to produce the cloned values. If `customizer` returns `undefined` * cloning is handled by the method instead. The `customizer` is bound to - * `thisArg` and invoked with two argument; (value [, index|key, object]). + * `thisArg` and invoked with up to three argument; (value [, index|key, object]). * * **Note:** This method is loosely based on the * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm). @@ -63,7 +63,7 @@ function clone(value, isDeep, customizer, thisArg) { isDeep = false; } return typeof customizer == 'function' - ? baseClone(value, isDeep, bindCallback(customizer, thisArg, 1)) + ? baseClone(value, isDeep, bindCallback(customizer, thisArg, 3)) : baseClone(value, isDeep); } diff --git a/node_modules/lodash/lang/cloneDeep.js b/node_modules/lodash/lang/cloneDeep.js index a458141..c4d2517 100644 --- a/node_modules/lodash/lang/cloneDeep.js +++ b/node_modules/lodash/lang/cloneDeep.js @@ -2,10 +2,10 @@ var baseClone = require('../internal/baseClone'), bindCallback = require('../internal/bindCallback'); /** - * Creates a deep clone of `value`. If `customizer` is provided it is invoked + * Creates a deep clone of `value`. If `customizer` is provided it's invoked * to produce the cloned values. If `customizer` returns `undefined` cloning * is handled by the method instead. The `customizer` is bound to `thisArg` - * and invoked with two argument; (value [, index|key, object]). + * and invoked with up to three argument; (value [, index|key, object]). * * **Note:** This method is loosely based on the * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm). @@ -48,7 +48,7 @@ var baseClone = require('../internal/baseClone'), */ function cloneDeep(value, customizer, thisArg) { return typeof customizer == 'function' - ? baseClone(value, true, bindCallback(customizer, thisArg, 1)) + ? baseClone(value, true, bindCallback(customizer, thisArg, 3)) : baseClone(value, true); } diff --git a/node_modules/lodash/lang/isEmpty.js b/node_modules/lodash/lang/isEmpty.js index 2144afd..6b344a0 100644 --- a/node_modules/lodash/lang/isEmpty.js +++ b/node_modules/lodash/lang/isEmpty.js @@ -7,7 +7,7 @@ var isArguments = require('./isArguments'), keys = require('../object/keys'); /** - * Checks if `value` is empty. A value is considered empty unless it is an + * Checks if `value` is empty. A value is considered empty unless it's an * `arguments` object, array, string, or jQuery-like collection with a length * greater than `0` or an object with own enumerable properties. * diff --git a/node_modules/lodash/lang/isEqual.js b/node_modules/lodash/lang/isEqual.js index f2cb5d8..41bf568 100644 --- a/node_modules/lodash/lang/isEqual.js +++ b/node_modules/lodash/lang/isEqual.js @@ -3,10 +3,10 @@ var baseIsEqual = require('../internal/baseIsEqual'), /** * Performs a deep comparison between two values to determine if they are - * equivalent. If `customizer` is provided it is invoked to compare values. + * equivalent. If `customizer` is provided it's invoked to compare values. * If `customizer` returns `undefined` comparisons are handled by the method - * instead. The `customizer` is bound to `thisArg` and invoked with three - * arguments: (value, other [, index|key]). + * instead. The `customizer` is bound to `thisArg` and invoked with up to + * three arguments: (value, other [, index|key]). * * **Note:** This method supports comparing arrays, booleans, `Date` objects, * numbers, `Object` objects, regexes, and strings. Objects are compared by diff --git a/node_modules/lodash/lang/isFunction.js b/node_modules/lodash/lang/isFunction.js index 37e1a2d..abe5668 100644 --- a/node_modules/lodash/lang/isFunction.js +++ b/node_modules/lodash/lang/isFunction.js @@ -31,7 +31,7 @@ var objToString = objectProto.toString; function isFunction(value) { // The use of `Object#toString` avoids issues with the `typeof` operator // in older versions of Chrome and Safari which return 'function' for regexes - // and Safari 8 equivalents which return 'object' for typed array constructors. + // and Safari 8 which returns 'object' for typed array constructors. return isObject(value) && objToString.call(value) == funcTag; } diff --git a/node_modules/lodash/lang/isMatch.js b/node_modules/lodash/lang/isMatch.js index cb48436..0a51d49 100644 --- a/node_modules/lodash/lang/isMatch.js +++ b/node_modules/lodash/lang/isMatch.js @@ -5,7 +5,7 @@ var baseIsMatch = require('../internal/baseIsMatch'), /** * Performs a deep comparison between `object` and `source` to determine if * `object` contains equivalent property values. If `customizer` is provided - * it is invoked to compare values. If `customizer` returns `undefined` + * it's invoked to compare values. If `customizer` returns `undefined` * comparisons are handled by the method instead. The `customizer` is bound * to `thisArg` and invoked with three arguments: (value, other, index|key). * diff --git a/node_modules/lodash/math/max.js b/node_modules/lodash/math/max.js index 194c800..220c105 100644 --- a/node_modules/lodash/math/max.js +++ b/node_modules/lodash/math/max.js @@ -6,7 +6,7 @@ var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY; /** * Gets the maximum value of `collection`. If `collection` is empty or falsey - * `-Infinity` is returned. If an iteratee function is provided it is invoked + * `-Infinity` is returned. If an iteratee function is provided it's invoked * for each value in `collection` to generate the criterion by which the value * is ranked. The `iteratee` is bound to `thisArg` and invoked with three * arguments: (value, index, collection). diff --git a/node_modules/lodash/math/min.js b/node_modules/lodash/math/min.js index 8a98a85..6d92d4f 100644 --- a/node_modules/lodash/math/min.js +++ b/node_modules/lodash/math/min.js @@ -6,7 +6,7 @@ var POSITIVE_INFINITY = Number.POSITIVE_INFINITY; /** * Gets the minimum value of `collection`. If `collection` is empty or falsey - * `Infinity` is returned. If an iteratee function is provided it is invoked + * `Infinity` is returned. If an iteratee function is provided it's invoked * for each value in `collection` to generate the criterion by which the value * is ranked. The `iteratee` is bound to `thisArg` and invoked with three * arguments: (value, index, collection). diff --git a/node_modules/lodash/number/inRange.js b/node_modules/lodash/number/inRange.js index 2ee8325..30bf798 100644 --- a/node_modules/lodash/number/inRange.js +++ b/node_modules/lodash/number/inRange.js @@ -4,7 +4,7 @@ var nativeMax = Math.max, /** * Checks if `n` is between `start` and up to but not including, `end`. If - * `end` is not specified it is set to `start` with `start` then set to `0`. + * `end` is not specified it's set to `start` with `start` then set to `0`. * * @static * @memberOf _ diff --git a/node_modules/lodash/object/assign.js b/node_modules/lodash/object/assign.js index 424e7ed..4a765ed 100644 --- a/node_modules/lodash/object/assign.js +++ b/node_modules/lodash/object/assign.js @@ -5,7 +5,7 @@ var assignWith = require('../internal/assignWith'), /** * Assigns own enumerable properties of source object(s) to the destination * object. Subsequent sources overwrite property assignments of previous sources. - * If `customizer` is provided it is invoked to produce the assigned values. + * If `customizer` is provided it's invoked to produce the assigned values. * The `customizer` is bound to `thisArg` and invoked with five arguments: * (objectValue, sourceValue, key, object, source). * diff --git a/node_modules/lodash/object/get.js b/node_modules/lodash/object/get.js index 0bb59b8..7e88f1e 100644 --- a/node_modules/lodash/object/get.js +++ b/node_modules/lodash/object/get.js @@ -26,7 +26,7 @@ var baseGet = require('../internal/baseGet'), * // => 'default' */ function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, toPath(path), path + ''); + var result = object == null ? undefined : baseGet(object, toPath(path), (path + '')); return result === undefined ? defaultValue : result; } diff --git a/node_modules/lodash/object/merge.js b/node_modules/lodash/object/merge.js index dc0b95e..86dd8af 100644 --- a/node_modules/lodash/object/merge.js +++ b/node_modules/lodash/object/merge.js @@ -5,7 +5,7 @@ var baseMerge = require('../internal/baseMerge'), * Recursively merges own enumerable properties of the source object(s), that * don't resolve to `undefined` into the destination object. Subsequent sources * overwrite property assignments of previous sources. If `customizer` is - * provided it is invoked to produce the merged values of the destination and + * provided it's invoked to produce the merged values of the destination and * source properties. If `customizer` returns `undefined` merging is handled * by the method instead. The `customizer` is bound to `thisArg` and invoked * with five arguments: (objectValue, sourceValue, key, object, source). diff --git a/node_modules/lodash/object/pick.js b/node_modules/lodash/object/pick.js index c880c31..e318766 100644 --- a/node_modules/lodash/object/pick.js +++ b/node_modules/lodash/object/pick.js @@ -7,7 +7,7 @@ var baseFlatten = require('../internal/baseFlatten'), /** * Creates an object composed of the picked `object` properties. Property * names may be specified as individual arguments or as arrays of property - * names. If `predicate` is provided it is invoked for each property of `object` + * names. If `predicate` is provided it's invoked for each property of `object` * picking the properties `predicate` returns truthy for. The predicate is * bound to `thisArg` and invoked with three arguments: (value, key, object). * diff --git a/node_modules/lodash/object/result.js b/node_modules/lodash/object/result.js index 05ca6df..29b38e6 100644 --- a/node_modules/lodash/object/result.js +++ b/node_modules/lodash/object/result.js @@ -7,7 +7,7 @@ var baseGet = require('../internal/baseGet'), /** * This method is like `_.get` except that if the resolved value is a function - * it is invoked with the `this` binding of its parent object and its result + * it's invoked with the `this` binding of its parent object and its result * is returned. * * @static diff --git a/node_modules/lodash/object/set.js b/node_modules/lodash/object/set.js index 423faab..7a1e4e9 100644 --- a/node_modules/lodash/object/set.js +++ b/node_modules/lodash/object/set.js @@ -5,7 +5,7 @@ var isIndex = require('../internal/isIndex'), /** * Sets the property value of `path` on `object`. If a portion of `path` - * does not exist it is created. + * does not exist it's created. * * @static * @memberOf _ diff --git a/node_modules/lodash/package.json b/node_modules/lodash/package.json index 2bffbd6..40d2061 100644 --- a/node_modules/lodash/package.json +++ b/node_modules/lodash/package.json @@ -1,6 +1,6 @@ { "name": "lodash", - "version": "3.10.0", + "version": "3.10.1", "description": "The modern build of lodash modular utilities.", "homepage": "https://lodash.com/", "icon": "https://lodash.com/icon.svg", @@ -53,10 +53,10 @@ "bugs": { "url": "https://github.com/lodash/lodash/issues" }, - "_id": "lodash@3.10.0", - "_shasum": "93d51c672828a4416a12af57220ba8a8737e2fbb", - "_from": "lodash@*", - "_npmVersion": "2.12.0", + "_id": "lodash@3.10.1", + "_shasum": "5bf45e8e49ba4189e17d482789dfd15bd140b7b6", + "_from": "lodash@3.10.1", + "_npmVersion": "2.13.1", "_nodeVersion": "0.12.5", "_npmUser": { "name": "jdalton", @@ -85,10 +85,9 @@ } ], "dist": { - "shasum": "93d51c672828a4416a12af57220ba8a8737e2fbb", - "tarball": "http://registry.npmjs.org/lodash/-/lodash-3.10.0.tgz" + "shasum": "5bf45e8e49ba4189e17d482789dfd15bd140b7b6", + "tarball": "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.0.tgz", - "readme": "ERROR: No README data found!" + "_resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" } diff --git a/node_modules/lodash/utility/attempt.js b/node_modules/lodash/utility/attempt.js index 80afe69..8d8fb98 100644 --- a/node_modules/lodash/utility/attempt.js +++ b/node_modules/lodash/utility/attempt.js @@ -3,7 +3,7 @@ var isError = require('../lang/isError'), /** * Attempts to invoke `func`, returning either the result or the caught error - * object. Any additional arguments are provided to `func` when it is invoked. + * object. Any additional arguments are provided to `func` when it's invoked. * * @static * @memberOf _ diff --git a/node_modules/lodash/utility/propertyOf.js b/node_modules/lodash/utility/propertyOf.js index 093c659..593a266 100644 --- a/node_modules/lodash/utility/propertyOf.js +++ b/node_modules/lodash/utility/propertyOf.js @@ -23,7 +23,7 @@ var baseGet = require('../internal/baseGet'), */ function propertyOf(object) { return function(path) { - return baseGet(object, toPath(path), path + ''); + return baseGet(object, toPath(path), (path + '')); }; } diff --git a/node_modules/lodash/utility/range.js b/node_modules/lodash/utility/range.js index e45254e..671939a 100644 --- a/node_modules/lodash/utility/range.js +++ b/node_modules/lodash/utility/range.js @@ -6,7 +6,7 @@ var nativeCeil = Math.ceil, /** * Creates an array of numbers (positive and/or negative) progressing from - * `start` up to, but not including, `end`. If `end` is not specified it is + * `start` up to, but not including, `end`. If `end` is not specified it's * set to `start` with `start` then set to `0`. If `end` is less than `start` * a zero-length range is created unless a negative `step` is specified. * diff --git a/plugins/fix_scripts.js b/plugins/fix_scripts.js index b09af89..69dae45 100644 --- a/plugins/fix_scripts.js +++ b/plugins/fix_scripts.js @@ -1,6 +1,7 @@ module.exports = function (item, itemOptions, source) { var match = itemOptions.description.replace(/)<[^<]*)*<\/script>/gi,''); + match = match.replace(/)<[^<]*)*<\/iframe>/gi,''); itemOptions.description = match; return itemOptions;