Взлом смартфонов несылшимыми человеком голосовыми командами

Мобильные устройства
Исследователи из университетов Беркли и Джорджтауна (США) разработали звуковые команды для Siri и Google Now, нераспознаваемые для человеческого слуха. Эти команды звучат как белый шум с примесями человеческого голоса и могут использоваться для взлома и заражения телефонов, сообщает Popular Science.

Вредоносный шум для устройств под Android и iOS различается. Услышав команду, браузер загружает определенную страницу или вредоносную программу без ведома владельца устройства. В ходе экспериментов устройства распознали 90% таких команд. Эти сигналы, незаметные для человеческого слуха, можно передавать даже через радиопередачи. — Apparat.cc

Очередной прекрасный пример чистого и красивого хака с использованием неочевидных техник. Что-то из разряда лазерных звукоснимателей для дистанционной прослушки через луч, отражающийся от вибрирующего в такт голосу оконного стекла.

Инструменты для пыток

Культура


Базовые пыточные принадлежности:

Аддресс
Аккустика
Алладин
Андронный коллайдер
Анимэ
Асвальт
Безплатно
Болелемение
В крации
В купе
Вкурсе
Броется
Вообщем
Вротарь
Всмысле
Впринцепи
Врятле
Выйграл
Делема
Дёшего
Дибил
Едит
Завтро
Зделать
Извени
Ихний
Какуето
Касяк
Канечно
Конешно
Касатка
Киллограм
Координально
Лудше
Низнаю
Ньюанс
Однёрка
Пасспорт
Пачему
Прасти
Пожалуйсто
Помойму
Правельно
Пробывать
Ризетка
Симпотичный
Скаченный
Сосиська
Спосибо
Траффик
Тубаретка
Удолить

Уф, все, это уже через чур!

Бум нейронок

Общество
История изобилует случаями, когда перспективная и крутая технология из научно-фантастических романов грозилась ворваться в быт, уже вот-вот практически врывалась, а после некоторого периода эйфории все понимали, что шумиха поднята рановато, и технология пока представляет собой лишь непрактичный, но хорошо разрекламированный proof-of-concept, облепленный компаниями и людьми, стремящимися на этой теме нажиться.

Ну и, человечество, получившее передозировку информационного шума, касающегося данной технологии, попросту теряло к ней интерес. Однако через какой-то промежуток времени, эта технология снова всплывала, и, опираясь на более продвинутое состояние прогресса, входила в жизнь людей уже на постоянной основе (и без атрибутики волшебства).



Вспомните электрокары, «бум доткомов», 3d-кино. Примеров на самом деле очень много.

И вот главные вопросы поста, касательно этой мысли — в какой фазе находятся нейронные сети, создающие сейчас хайп на фоне AlphaGo (но не могущие распознать наличие человека на определенных фотографиях)? И на какой стадии сейчас находятся человекообразные роботы (с учетом, что Google вроде как купила Boston Dynamics, но вроде как уже продает за ненадобностью)?

Вся суть пакетного менеджера NPM и высокой культуры модульности NodeJS

Техника и IT
Как гласит недавний отчет Stack Overflow (а также отчеты GitHub), самый популярный язык программирования в мире на данный момент — JavaScript. Отчасти язык популярен своей небывалой распространенностью в браузерах, отчастью он обязан своей популярностью и серверной платформе NodeJS, позволяющей писать программы, выполняемые не только в браузерах клиентских машин, но и на серверах.

И обе реализации на данный момент прочно сплелись к пакетным менеджером NPM, с помощью которого можно получить гигантский выбор разнообразных модулей, написанных на JS, и подключаемых буквально одной командой. При подключении модуля пакетный менеджер NPM автоматически разрешает все зависимости, и если скачиваемый модуль использует в своей работе другой модуль, то NPM выкачивает и его, а также, соответственно, и все связанные модули модулей модулей модулей.



Такая модульность стала своего рода традицией экосистемы NPM. Модули стали писать по случаю и без. На каждый чих — свой модуль, и вряд ли еще остались слова английского (и не только) языка, не занятые под название модуля с модной припиской “JS” на конце.

И вот эта страсть к высокодробной модульности и вышла NPM и его обитателям боком. На неделе разгорелся небольшой скандал на почве обрушения части NPM из-за смешного инцидента. Некий Азер Кочулу (Azer Koçulu), автор более 250 модулей к NodeJS, являвшийся владельцем модуля под названием kik, получил письмо от сотрудников мессенджера Kik, попросившего его уступить им «кошерное» название в NPM. Азер отказался пойти навстречу, и сотрудники мессенджера Kik отправили аналогичное письмо руководству платформы NPM. NPM решила отнять у Азера красивое имя для модуля и отдать его мессенджеру Kik. Тут Азер, по понятным причинам, негодуя от такой несправедливости, выпилил весь свой зоопарк модулей с NPM (напомню, это более 250 наименований)…

И тут главный прикол всего цирка: оказалось, что от его модулей зависит куча крупных проектов, в числе которых такие монстры, как Фейсбуковский React, JavaScript-транскомпилятор Babel и, по цепочке, огромное количество других модулей и программ. А так как Азер отозвал свои поделия, то вся эта инфраструктура рухнула как карточный домик. И что еще более смешно в этой непростой ситуации, модуль под названием leftpad, от которого зависило множество других крупных проектов, состоял из… 11 строчек кода! И ладно бы в этих 11 строках кода были бы заключена вселенская мудрость или хотя бы результат большой научной работы, сконцентрированный в лаконичную формулировку (E = mc²). Нет, модуль делал довольно тупую и банальную вещь — добавлял нули или пробелы в левой части заданной строки или числа!

module.exports = leftpad;
function leftpad (str, len, ch) {
  str = String(str);
  var i = -1;
  if (!ch && ch !== 0) ch = ' ';
  len = len - str.length;
  while (++i < len) {
    str = ch + str;
  }
  return str;
}


То есть, сложно представить себе более банальную вещь, чем эти 11 строчек кода (две из которых — фигурные скобки). В Python, например, эта функция вообще встроена в язык и делается простейшим форматированием строки:


'{0:06d}'.format(6)


То есть, крупнейшие и сложнейшие проекты включили в себя модуль из десятка строк тупого кода, который можно было бы оформить буквально за две минуты самостоятельно (без создания лишних зависимостей). И в среде NPM такое на каждом шагу — это часть культуры! Прекрасным примером этому может послужить небольшое исследование Дэвида Хейни (David Haney), который прошерстил NPM на предмет наличия подобных «модулей».



Например, оказалось, что есть такой замечательный модуль, как isArray. Этот модуль скачало 880 000 человек за один день, кроме того, он был загружен 18 миллионов раз только в одном феврале этого года! От этого модуля напрямую зависят 72 пакета в NPM. И что же это за чудесный модуль такой?


return toString.call(arr) == '[object Array]';


А модуль этот состоит из одной. ОДНОЙ! Строчки дурацкого кода, приведенного выше. И призван проверять — не массив ли перед нами…

Есть еще один чудесный модуль с говорящим названием is-positive-integer (GitHub), до смешного банальный — он проверяет, положительное ли целое число ему передано. Состоит из целых четырех строк кода (!!!) и (внимание!) требует три зависимости для своей работы! То есть требовал, недавно автор «отрефакторил» свой код, и теперь его важнейший модуль не требует зависимостей вообще (вот он — подвиг программиста)!



А вот еще один пример, приведенный в комментариях на Хабре — очередной модуль «для проверки типа» — isnumber. Одна тупая строчка:

return !isNaN(parseFloat(n)) && isFinite(n);


И вот такая вот развесистая система приводит к тому, что какой-нибудь Babel включает в себя 41 000 файлов (и это свежеустановленный пакет!), а также генерирует чистый шаблонный проект (jspm/npm) с… более чем 28 000 файлов! Эта, вроде бы неплохая изначально идея компактных модулей, была доведена до полнейшего, абсолютного, феерического абсурда. Мало того, что с каждой такой дурацкой зависимостью вы добавляете еще одну точку отказа в своем коде (которую нельзя потом оперативно отладить), так еще и автоматически полагаетесь на качество кода горе-программистов (типа упомянутого выше, что проверял положительность целого числа тремя зависимостями).



P.S. Кстати, теперь уже печально известный модуль leftpad, удаленный Азером, в итоге восстановили без его одобрения, в качестве экстренной меры, чтобы не «поломать систему».

Double Commander — лучший двухпанельный файл-менеджер под Linux

Техника и IT
Самый замечательный в плане функционала, а также наиболее симпатичный и удобный в плане интерфейса двухпанельный файловый менеджер в Linux на данный момент — это Double Commander. Я перепробовал много всяких поделок, 99% из которых не то чтобы далеки от идеала, а даже близко к нему не приближаются. То это уродливый кривой монстр с диким интерфейсом, могущий все-все-все, и тянущий с собой миллион зависимостей KDE, то это унылая программа, в которой ничего нет, и которая отличается от банального примитивного однооконного менеджера только своей двухпанельностью (но этого явно недостаточно).



В общем, до того, как я наткнулся на Double Commander (Википедия), для меня в природе не существовало хорошего аналога для каноничного™ Total Commander'а — а он является ярким образчиком (почти) идеального двухпанельного менеджера, который может кучу всего, имеет лаконичный интерфейс, а также быстр и компактен.

Double Commander же максимально приблизился к этому идеалу. Он даже разрабатывается в той же среде — Free Pascal (в IDE Lazarus, что является прямой наследницей старого доброго Delphi), что интересно, в том же ФриПаскале скомпилирована 64-разрядная редакция Total Commander'а. Создан Александром Кобловым (и сообществом — это открытое ПО) в начале 2008 года. Продукт пока находится в активной стадии разработки и не добрался до первого релиза, на данный момент крайняя версия — 0.7.

Однако уже сейчас он прекрасно работает и отлично выполняет все свои функции, и без него уже никак не обойтись — DC стал настоящим инструментом, который активно применяется ежедневно. Я не буду перечислять то, что он умеет — привыкшие к Total Commander'у в Windows и затем перешедшие на Linux, лишившись любимого инструмента, оценят и все поймут, опробовав Double Commander в деле. К слову, о Windows — DC есть и под эту платформу (а также под Mac OS X и FreeBSD).

Отдельно хочется отметить интересную и офигенно удобную фичу с отображением файлов, в которые в данный момент идет запись — они начинают мерцать. Это невероятно удобное, полезное и просто технически красивое решение при всей своей естественности — непонятно, как до такого не додумались раньше. По-моему, это вообще должно стать стандартом для любого файлового менеджера, а еще лучше — это должно устаканиться на уровне любой популярной операционной системы.

Увы, пока Double Commander сложно найти в репозиториях популярных дистрибутивов, поэтому придется подключать PPA и прочие сторонние репозитории (в 23-й Федоре, например, Коммандер нашелся в «русском репозитории Fedora»). Официальный сайт Double Commander'а находится по данной ссылке, страница загрузки.

Как включить типографскую раскладку Ильи Бирмана в Gnome3, и в любом другом окружении рабочего стола Linux?

Техника и IT
Если у вас в качестве Desktop Environment используется Gnome2 или аналог (а также если это перелицованный Gnome3 в форме какого-нибудь Cinnamon), то включить типографскую раскладку Бирмана не проблема — я уже довольно детально описывал способ ранее.



Однако, если у вас Gnome3, или другая среда рабочего стола, где типографской раскладки «из коробки» попросту нет, то задача может оказаться слегка нетривиальной. Типографская раскладка в работе (и вообще) пригождается довольно часто, и перейдя на Fedora 23, где по умолчанию включен Gnome3, пришлось немного повозиться. С результатами возни делюсь с читателем:

Раскладки, как таковые, не привязаны к конкретной DE — интерпретацией ввода с клавиатуры занимается подсистема xkb, встроенная в оконную систему X Window System (X11, или те самые «иксы»). И все раскладки, банально, лежат в директории X11, в виде текстовых конфигов. Типографская раскладка в 23-й Федоре, например, обнаружилась по адресу /usr/share/X11/xkb/symbols/typo, в других дистрибутивах она может располагаться аналогичным образом, но в подкаталогах /etc/X11/xkb/.... Заголовок обнаруженного конфига гласит:


// Typographic Keyboard
// Sergei Stolyarov <sergei@regolit.com>

// Initial contribution by Alexey Ten <alexeyten+deb@gmail.com>
// Additional contribution and code cleanup by Artur Dryomov <artur.dryomov@gmail.com>

// Mainly based on the layout proposed by Ilya Birman
// http://ilyabirman.ru/projects/typography-layout/


Итак, раскладка найдена, теперь ее необходимо подключить. Как оказалось, делается это довольно просто, командой в терминале:


setxkbmap -option "lv3:ralt_switch,misc:typo"


Синтаксис команды, в принципе, прост: программа setxkbmap с ключом -option меняет лишь дополнительные настройки клавиатуры не затрагивая остальное, а именно — в данном случае устанавливает правый альт (ralt_switch) в качестве модификатора для клавиш третьего уровня (lv3), а также подключает типографскую клавиатуру в качестве своеобразной «маски», добавляющей третий слой поверх любой вашей раскладки (будь то английская, русская или таджикская).

Опции устанавливаются на время сессии (или до того момента, как Gnome не решит их переписать своими), поэтому после перезагрузки или перелогина установленные настройки пропадут. И именно поэтому можно включить вышеупомянутую строку в какой-нибудь $HOME/.bashrc, чтобы опция устанавливалась при старте системы, но лучше так не делать.

Самым правильным вариантом будет воспользоваться механизмом инициализации X11, и поместить такой текст:


-option "lv3:ralt_switch,misc:typo"


… в текстовый файл .Xkbmap, расположенный прямо в домашней директории пользователя ($HOME/.Xkbmap). Скрипты инициализации (конкретнее — xinitrc-common) найдут его там при старте X11 и применят лежащие в нем настройки.

К слову, вышеупомянутый конфиг typo можно скопировать, обозвать его, например, mytypo и изменить по своему вкусу (изменения раскладки ограничены лишь фантазией), подключив свой вариант, формат объявлений там весьма простой:


key <код клавиши> {[ NoSymbol, NoSymbol, результат применения модификатора Level3 (обычно AltGr), аналогично для Shift+Level3  ]};

Новый отчет Stack Overflow

Техника и IT
Stack Overflow провел традиционный опрос и исследование по имеющимся у сервиса данным о разработчиках. Пожалуй, самые интересные моменты этого исследования:

По данным SO, в Таджикистане 350 профессиональных разработчиков, в России — 300 000, в Великобритании 783 000, в Индии… 1 860 000! США пока держит первенство с 3 869 000 профессиональными разработчиками.



Большинство (28%) считает себя full-stack веб-разработчиками, 12% занимаются исключительно серверной частью приложений и сервисов. Фронтэндеров всего 5,8%.

В лидерах по популярности среди технологий — ожидаемо Java Script (90% в фронтэнде, 85% — доля выбравших ее из тех, кто входит в группу full-stack, и даже среди бекэндеров — 54%). В мобильном мире с большим отрывом рулит Android (61,9%). PHP теряет в популярности из-за роста NodeJS и в 2016-м идет примерно на равных с Python-ом (26% / 25%). Вторая после JS по популярности среди технологий — SQL, третья — Java. C / C++ на протяжении последних лет заметно теряют в весе.



Больше всего из технологий разработчики «любят» относительно новые языки Rust и Swift. Наиболее одеозные технологии, к которым все испытывают отвращение — Visual Basic и Wordpress (ха-ха). Наиболее желанные для изучения направления — разработка под Android и NodeJS.



Самые интересные технологии для 40 миллионов посетителей Stack Overflow, пользовавшихся сервисом в январе этого года — JavaScript, Java, Android и Python.



Среди самых «прорывных» технологий, быстро набирающих популярность — React, Spark и Swift. Среди самых дохлых — Windows Phone, Haskell и CoffeeScript (что неудивительно).



Технологии, приносящие наибольший доход разработчикам в США — Spark, Scala и Cassandra. В мире — F#, Dart и Cassandra.





Самая высокооплачиваемая технология среди фронт-эндеров — React.

Интересно, что 67% респондентов имеют полную занятость, 12,5% — студенты. Всего 7% — контрактники/фрилансеры (разработчиков-пенсионеров, к слову, аж 0,2%).



Самая популярная связка технологий среди фронт-энд-разработчиков — AngularJS, JavaScript, Node.js, у full-stack-разработчиков — JavaScript, PHP, SQL. На бекэнде популярно то же комбо — JavaScript, PHP, SQL. Специалисты, занятые обработкой данных, предпочитают связку Python, R, SQL.

Подавляющее большинство разработчиков старше 20, но еще не достигла 34-х лет (52% от общего количества).



Самый старый сферический разработчик в вакууме — в США (ему 32 года), самый молодой — в Индии (ему 25 лет).



Среди разработчиков 93% — мужчины, около 6% — женщины, плюс остальные 1,5 процента неопределившихся.



Что касается образования — подавляющее большинство пользователей SO — это самоучки (70% в совокупности), классическое вузовское образование получило относительно небольшое количество разработчиков.



При этом, что удивительно, высшее образование не оказывает сильного влияния на зарплату разработчика.



Интересно распределение разработчиков по используемому инструментарию — среде разработки. Тут неожиданно впереди планеты всей — Notepad++, за ним следует Visual Studio и Sublime Text на третьем месте.



Предпочтения по операционным системам тоже интересны, особенно в историческом ключе:



Большинство разработчиков ставят наивысшим приоритетом размер оплаты своего труда, на втором месте по популярности стоит цель оптимально сбалансировать время, отводимое на жизнь и работу.



Интересно выглядит распределение по странам разработчиков, ценящих свой труд (в плане его оплаты):



Самые главные проблемы в рабочем процессе — нереалистичные ожидания руководителей, плохая документация, невнятные задания и неэффективный процесс разработки.



Зарплата в зависимости от должности изменяется не так сильно, как можно было подумать:



Мне понравилось, как в Stack Overflow померяли покупательную способность в разных странах — по метрике «сколько БигМаков можно купить на среднюю зарплату в год». Ох уж эти американцы. :D



Еще одна интересная графа о жилищном вопросе:



В Берлине и Индии на квартиру уйдет примерно одинаковая часть зарплаты — 16%, тогда как в США (LA) этот показатель составит уже 19%. Неплохо себя чувствуют квартиросъемщики в Монтреале (Канада).

От количество работников в компании зарплата в этой компании, как правило, зависит не очень сильно. Например, в компании с 20 работниками вы получите зарплату всего на 10% меньшую, чем в компании, в которой трудится 10 000 сотрудников.



С ростом оплаты труда (внезапно!) растет и удовлетворенность своей работой (хотя это, скорее, процесс с обратной связью):



Интересно и распределение зарплаты по полам, в зависимости от возраста:



И опыта:



Самая высокая удовлетворенность работой в области разработки игр, самая унылая работа в мире телекома:



Количество разработчиков, работающих удаленно весьма велико, но, тем не менее, они в меньшинстве:



Интересно, что чем опытнее становится разработчик, тем чаще он уходит на полную «удаленку»:



Больше всего удаленная работа популярна в Аргентине. Россия тоже в первой пятерке. Удивительно, но в пятерку не попала Индия:



Разработчики, работающие удаленно, больше любят свою работу:



При этом большинство коммитит код по нескольку раз в день:



И, что тоже интересно, чем больше программист коммитит, тем больше он удовлетворен своей работой (хотя и тут, очевидно, есть обратная связь):



Еще раз, источник: Stack Overflow, 2016 Developer Survey Results

Бот Флибусты: самый полезный бот в Telegram

Мобильные устройства


Вчера наткнулся на крайне полезную штуку — на бота электронной библиотеки flibusta.is в мессенджере Telegram. Как он работает? Очень просто — добавляете его себе в список контактов (@flibustamirrorbot) и пишете ему названия книг или имена-фамилии авторов, он в мгновение выдает список искомой литературы с прямыми ссылками. Тыкаете на ссылку, он вам присылает файл книги прямо в телеграм.

Очень удобно, быстро, естественно и без заморочек. Как видно, пока скачивается даже Донцова! В общем, горячо рекомендую.

Ультра-футуризм от BMW

Авто-мото
Новым концепт-каром, который BMW показала на свое 100-летие, прожужжали уже все уши.



Как по мне — это не футуристический дизайн автомобиля будущего, а какое-то уродливое недоразумение. Я не хочу жить в таком «светлом будущем». Понятно, что меня не спрашивали, но я уверен — не наберется той критической массы неадекватных людей, которая проголосует своим долларом за вот это вот:







Мне почему-то сразу хочется сравнить это с утконосом:





Не понимаю, почему во всякого рода футуристичных концепт-карах всегда пытаются закрывать колеса колпаками, это же выглядит совершенно нереалистично и неестественно…



И вообще, здесь очень не хватает множества мигающих красных и зеленых светодиодов на блестящих поверхностях, как в китайской светомузыке…



Ну это же просто кричаще вырвиглазный ад! Хотя есть примеры концептов «под будущее» и похуже. Например, всем известный трешачок от Гугла (обсуждается, конечно, чисто визуальный дизайн и эстетика, в отрыве от действительно передового функционала):





Достаточно сравнить с достойно выглядящим модифицированным (тем же Гуглом) Лексусом, который слегка портит все та же шапка лидара, но в целом все выглядит отлично:



В каком будущем хочется жить? Там, где будет хороший автомобильный дизайн, без декадансной безвкусицы, неуемных фантазий и концептуальной чепухи для впечатлительных с зачесом под «прогрессивность». Плюс этот дизайн и общая эстетическая составляющая будет без ущерба для функциональности… Ну, примерно так…
Читать дальше