RSS
Pages: 1 ... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ... 133
[>] Гостиничный бизнес: легкая мишень для хакеров с заманчивыми прибылями
habra.16
habrabot(difrex,1) — All
2016-04-29 19:00:02


![][1] Кража информации с последующим требованием выкупа за нее – это модная кибер-атака, которая пришла и в гостиничный бизнес. Антивирусная лаборатория PandaLabs компании Panda Security опубликовала [исследование «Хакеры отелей»][2] – документ, в котором рассматривается тенденция кибер-атак, направленных на крупные сети гостиниц и отелей. Исследование рассказывает, что в 2015 году было осуществлено множество подобных атак. Имеется подробная информация об этом типе вторжений, а также о том, как многие сети гостиниц во всем мире пострадали от данных атак. Среди пострадавших оказались такие известные сети гостиниц как **Trump, Hilton и Starwood**. [Читать дальше →][3]

[1]: https://habrastorage.org/files/8a2/915/be6/8a2915be6ece4ec093c14f8b05a33ca2.jpg
[2]: https://pandasecurity.bitrix24.ru/~Gj9sm
[3]: https://habrahabr.ru/post/282742/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Путь лапласиана. Часть 2
habra.16
habrabot(difrex,1) — All
2016-04-29 20:30:02




> _А не замахнуться ли нам на Эдсгера нашего Дейкстру?_

![][1] [В первой части][2] мы описали способ ранжирования симметрично связанных объектов (узлов неориентированного графа) относительно заданного направления. Для каждого объекта (узла) вычисляется потенциал (лапласиана), который определяет его положение относительно заданных источника и цели. В данной статье мы покажем, как потенциалы узлов упрощают задачу поиска кратчайших путей (оптимальных маршрутов). А также как меняются сами потенциалы при изменении внешних условий. В общем случае минимизируемая величина — это необязательно расстояние, — весами ребер графа могут быть стоимости, штрафы, убытки, времена, — любые величины, которые можно складывать. Задача является классической, наиболее простой алгоритм поиска кратчайшего пути [дал Э. Дейкстра][3] аж в 1959 году. [Далее...][4]

[1]: https://habrastorage.org/files/aab/8cd/4d9/aab8cd4d93ab4ca39c74c1dfd12e4cc3.jpg
[2]: https://habrahabr.ru/post/282239/
[3]: https://ru.wikipedia.org/wiki/Алгоритм_Дейкстры
[4]: https://habrahabr.ru/post/282780/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Виртуальный хакатон от компании Microsoft. Твой код к успеху
habra.16
habrabot(difrex,1) — All
2016-04-29 23:00:02


14 апреля начался сбор заявок (и будет продолжаться до 15 мая) на участие в Виртуальном хакатоне от компании Microsoft, официальными партнёрами которого являются такие видные российские компании и организации, как «Альфа-Банк», «Билайн», «ВКонтакте», ФРИИ и Sports.ru вместе с сетью фитнес-клубов World Class. [Читать дальше][1]

[1]: https://habrahabr.ru/post/282632/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Русский перевод выступления Алекса Ионеску «Сумасшедшая попытка переписать Windows с нуля»
habra.16
habrabot(difrex,1) — All
2016-04-30 15:30:02


![image][1] [12 ноября 2013][2] года мы опубликовали видео выступления Алекса Ионеску (который известен российской аудитории, в первую очередь, как соавтор книг серии Windows Internals), посвященное операционной системе ReactOS. К сожалению, тогда в нашем распоряжении не было качественных субтитров на английском, а тем более перевода на русский язык. Но теперь, благодаря помощи волонтеров, эти упущения были исправлены. Юзер **Black\_Fox** на сервисе [translatedby.com][3] создал правильные английские субтитры на основе автоматических субтитров youtube, а сообщество переводчиков ресурса [Notabenoid][4] перевело их на русский язык.




Переводчики: gste, leha\_bot, [Goudron][5], elnardu, x4fab, music\_maniak, rumorukato, AHgpyxA, steven\_quartz, [jeditobe][6], Ctulhu31, RooGLM, peterder72, mariocca Скачать через [торрент][7] [Читать дальше →][8]

[1]: https://habrastorage.org/getpro/habr/post_images/1e0/af6/382/1e0af6382d682181c9575517399d6a07.jpg
[2]: https://habrahabr.ru/company/reactos/blog/201804/
[3]: http://translatedby.com/you/reactos-the-crazy-open-source-attempt-to-rewrite-windows-from-scratch/into-en/trans/
[4]: http://notabenoid.org/book/57715/members
[5]: https://habrahabr.ru/users/goudron/
[6]: https://habrahabr.ru/users/jeditobe/
[7]: http://magnet:?xt=urn:btih:15E110B8DA04E6907FC4AE07C90C180FCE3E590C&dn=ReactOS%20Alex%20Ionescu&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.opentrackr.org%3a1337%2fannounce
[8]: https://habrahabr.ru/post/282800/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Security Week 17: Взлом SWIFT и кассовых аппаратов, вымогательство в Android c эксплойтами, обход AppLocker
habra.16
habrabot(difrex,1) — All
2016-04-30 21:00:02


![][1]Финансовое кибермошенничество чаще всего затрагивает обычных людей, клиентов банков, но проблемы в результате испытывают и сами финансовые организации. От того, что устройства пользователя атаковать проще, чем банковскую инфраструктуру, страдают все. Но есть исключения: обнаруженная нашими экспертами в прошлом году кампания [Carbanak][2], свежие атаки [Metel, GCMan][3] и ориентированная больше на клиентов (крупных) кампания Carbanak 2.0. Добавим к этому высокотехнологичное ограбление центрального банка Республики Бангладеш, произошедшее в феврале этого года. Определенно, такие атаки требуют значительно больше _скиллов и экспы_, чем мошенничество с кошельками пользователей, но и куш сорвать, если получится, можно больший (или отправиться за решетку на более длительное время, как повезет). На этой неделе история с банковским ограблением получила продолжение: стали известны технические детали атаки. [Выяснилось][4], что грабители напрямую манипулировали программным обеспечением международной платежной системы SWIFT. То есть дело не только в уязвимости инфраструктуры конкретного банка: подобной атаке в той или иной степени подвержены все крупные финансовые организации. К технике вернемся позже, эту историю стоит рассказывать с начала. Так вот, на одной только технологии, даже самой крутой, взломщики далеко бы не уехали: кража десятков миллионов долларов в любом случае будет замечена быстро. Атака была проведена где-то между 4 и 5 февраля, накануне уикенда (в Бангладеш это пятница и суббота). Всего было произведено 32 транзакции на общую сумму под миллиард долларов. Из них 30 транзакций были выявлены и заблокированы — успели, несмотря на выходной. Два перевода, на суммы в 21 и 80 миллионов долларов соответственно в Шри-Ланку и на Филиппины, прошли успешно. [Читать дальше →][5]

[1]: https://habrastorage.org/files/826/df5/bd9/826df5bd9a2c496cba6c247310c997fd.jpg
[2]: https://securelist.ru/blog/issledovaniya/25106/bolshoe-bankovskoe-ograblenie-apt-kampaniya-carbanak/
[3]: https://securelist.ru/blog/issledovaniya/28044/uvelichivaetsya-kolichestvo-apt-ograblenij-bankov-s-ispolzovaniem-atak-metel-gcman-i-carbanak-2-0/
[4]: https://threatpost.com/bangladesh-bank-hackers-accessed-swift-system-to-steal-cover-tracks/117637/
[5]: https://habrahabr.ru/post/282790/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] 1100100 лет со дня рождения Клода Шеннона
habra.16
habrabot(difrex,1) — All
2016-04-30 23:30:02


![image][1] Клод Шеннон любил на выходных вместе с женой Бетти и коллегой сгонять в Лас-Вегас, чтобы поиграть в [блэкджек][2]. Они не поленились и даже разработали первый wearable-компьютер, чтобы заниматься [«подсчетом карт»][3] (метод High-Low). ![image][4] Сегодня, 30 апреля 2016 года исполняется 100 лет со дня его рождения. Вместе с компанией [Edison][5], поздравляем основателя [теории информации][6]. Кстати, Шеннон является дальним родственником [Томаса Эдисона][7]. Под катом немного интересных достижений именинника. [Читать дальше →][8]

[1]: https://habrastorage.org/getpro/habr/post_images/e8c/c4b/287/e8cc4b287ee3d684c271d3f061ccb44a.jpg
[2]: https://ru.wikipedia.org/wiki/%D0%91%D0%BB%D1%8D%D0%BA%D0%B4%D0%B6%D0%B5%D0%BA
[3]: https://en.wikipedia.org/wiki/Card_counting
[4]: https://habrastorage.org/getpro/habr/post_images/3ca/ede/bb0/3caedebb0464b14f801752e60a9abe6d.png
[5]: https://www.edsd.com/technical-audit-and-redevelopment-for-finance-game
[6]: https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%B8
[7]: https://ru.wikipedia.org/wiki/%D0%AD%D0%B4%D0%B8%D1%81%D0%BE%D0%BD,_%D0%A2%D0%BE%D0%BC%D0%B0%D1%81_%D0%90%D0%BB%D0%B2%D0%B0
[8]: https://habrahabr.ru/post/282806/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] 01100100 лет со дня рождения Клода Шеннона
habra.16
habrabot(difrex,1) — All
2016-05-01 01:30:03


![image][1] Клод Шеннон любил на выходных вместе с женой Бетти и коллегой сгонять в Лас-Вегас, чтобы поиграть в [блэкджек][2]. Они не поленились и даже разработали первый wearable-компьютер, чтобы заниматься [«подсчетом карт»][3] (метод High-Low). ![image][4] Сегодня, 30 апреля 2016 года исполняется 100 лет со дня его рождения. Вместе с компанией [Edison][5], поздравляем основателя [теории информации][6]. Кстати, Шеннон является дальним родственником [Томаса Эдисона][7]. Под катом немного интересных достижений именинника. [Читать дальше →][8]

[1]: https://habrastorage.org/getpro/habr/post_images/e8c/c4b/287/e8cc4b287ee3d684c271d3f061ccb44a.jpg
[2]: https://ru.wikipedia.org/wiki/%D0%91%D0%BB%D1%8D%D0%BA%D0%B4%D0%B6%D0%B5%D0%BA
[3]: https://en.wikipedia.org/wiki/Card_counting
[4]: https://habrastorage.org/getpro/habr/post_images/3ca/ede/bb0/3caedebb0464b14f801752e60a9abe6d.png
[5]: https://www.edsd.com/technical-audit-and-redevelopment-for-finance-game
[6]: https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%B8
[7]: https://ru.wikipedia.org/wiki/%D0%AD%D0%B4%D0%B8%D1%81%D0%BE%D0%BD,_%D0%A2%D0%BE%D0%BC%D0%B0%D1%81_%D0%90%D0%BB%D0%B2%D0%B0
[8]: https://habrahabr.ru/post/282806/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Множество уязвимостей в ImageMagick, одна из которых ведёт к RCE
habra.16
habrabot(difrex,1) — All
2016-05-04 11:00:08




Несколько часов назад Ryan Huber из отдела безопасности Slack [анонсировал некую критическую уязвимость][1] в софте, используемом множеством сайтов. Этим софтом оказался ImageMagick — популярный пакет для обработки изображений.



Краткая информация об уязвимостях размещена на сайте [imagetragick.com][2]. Да, без названия и сайта для уязвимости не обошлось и в этот раз, хотя изначально Райан писал, что никакого пафоса, включая название и сайт, не будет.



Уязвимость была обнаружена [stewie][3] и раскрыта на hackerone 21 апреля в репорте, по всей видимости, Mail.ru, ибо примерно через неделю после этого Николай Ермишкин из команды безопасности Мэйла нашёл возможность выполнить RCE. Обо всём этом, само собой, сообщили команде разработки IM. Те 30 апреля выпустили фикс, но уже 1 мая им сообщили, что фикс немножко не фикс. Поэтому 2 мая уязвимость раскрыли в листе рассылки разработчиков пакетов, основанных на IM, а 3 мая уязвимость раскрыли публично. Спустя несколько часов после этого на [openwall][4] появилось подробное описание с примерами эксплойтов. Но об этом чуть ниже.

[Читать дальше →][5]

[1]: https://twitter.com/ryanhuber/status/727525109481660416
[2]: https://imagetragick.com/
[3]: https://hackerone.com/stewie
[4]: http://www.openwall.com/lists/oss-security/2016/05/03/18
[5]: https://habrahabr.ru/post/282896/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Валидация: внутри сущностей или снаружи?
habra.16
habrabot(difrex,1) — All
2016-05-04 11:00:08


_Обратите внимание, что хотя пост написан от первого лица, это перевод статьи из блога Jimmy Bogard, автора AutoMapper._ Меня часто спрашивают, особенно в контексте архитектуры вертикальных слоев (vertical slice architecture), где должна происходить валидация? Если вы применяете DDD, вы можете поместить валидацию внутри сущностей. Но лично я считаю, что валидация не очень вписывается в ответственность сущности. Часто валидация внутри сущностей делается с помощью аннотаций. Допустим, у нас есть Customer и его поля FirstName/LastName обязательны:

public class Customer
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
}


Проблем с таким подходом две:

* Вы изменяете состояние сущности до валидации, то есть ваша сущность может находиться в невалидном состоянии
* Неясен контекст операции (что именно пытается сделать пользователь)

И хотя вы можете показать ошибки валидации (обычно генерируемые ORM) пользователю, не так-то просто сопоставить исходные намерения и детали реализации состояния. Как правило, я стараюсь избегать такого подхода. [Читать дальше →][1]

[1]: https://habrahabr.ru/post/282878/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Опасный target="_blank"
habra.16
habrabot(difrex,1) — All
2016-05-04 11:00:08


Большинство создают внешние ссылки через target="\_blank" и не знают одного интересного нюанса — страница, на которую мы попадем таким образом, получит частичный контроль над ссылающейся на нее страницей через js свойство **window.opener**. Через **window.opener.location** мы сможем сделать редирект на, к примеру, фишинговую страницу. Это своего рода tabnabbing, только более продвинутый. Так как жертва меньше всего ожидает подмены страницы, в открытой ранее, доверенной вкладке браузера. [Читать дальше →][1]

[1]: https://habrahabr.ru/post/282880/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как вы можете сделать Java лучше
habra.16
habrabot(difrex,1) — All
2016-05-04 11:00:08


![][1]

Многие люди жалуются, что в Java чего-то не хватает, что-то глючит или медленно работает. Хорошая новость: у вас есть возможность не жаловаться, а своими силами сделать Java лучше. Java практически полностью открыта в виде проекта [OpenJDK][2]. У этого проекта есть свои особенности, но в целом вам ничего не мешает самим сообщать о проблемах, исправлять их и даже разрабатывать новую функциональность. В этой статье я немного расскажу, как это делать новичку.

[Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/aa4/c61/c8c/aa4c61c8c5cca13bea59239e6af6d2f8.png
[2]: http://openjdk.java.net/
[3]: https://habrahabr.ru/post/209876/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Интерполяция: рисуем плавные графики с помощью кривых Безье
habra.16
habrabot(difrex,1) — All
2016-05-04 11:00:08


Доброго времени суток, харбачитатель. В этой статье мне хотелось бы рассказать об одном придуманном когда-то алгоритме (или скорее всего — переизобретённом велосипеде) построенного плавного графика по заданным точкам, используя кривые Безье. Статья была написана под влиянием [вот этой статьи][1] и [очень полезного комментария][2] товарища [lany][3], за что им отдельное спасибо. Постановка задачи Есть массив Y-ков точек, расположенных равномерно по оси X. Нужно получить плавный график, который проходит через все заданные точки. Пример на рисунке ниже:



Всех, кому интересно, прошу под кат. [Читать дальше →][4]

[1]: http://habrahabr.ru/post/130873/
[2]: http://habrahabr.ru/post/163073/#comment_5615389
[3]: https://habrahabr.ru/users/lany/
[4]: https://habrahabr.ru/post/247235/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Разбор заданий с Google CTF 2016: Mobile
habra.16
habrabot(difrex,1) — All
2016-05-04 11:00:08


![][1]

##### Intro

Вчера закончились впервые организованные Google\`ом соревнования по захвату флага — [Google Capture The Flag 2016][2]. Соревнования длились двое суток, за время которых нужно было выжать из предлагаемых тасков как можно больше флагов. Формат соревнования — **task-based / jeopardy**. Как заявил гугл, задания для этого CTF составляли люди, являющиеся сотрудниками команды безопасности гугла. Поэтому интерес к данным таскам, как и к первому GCTF в целом, был достаточно велик — всего зарегистрировалось ~2500 команд, из которых, однако, только 900 набрали хотя бы 5 очков на решении тасков (опустим ботов и немногочисленные попытки играть нечестно). Принять участие можно было любому желающему, начиная от rookie и любителей безопасности и заканчивая легендами отраслей. Кроме того, можно было участвовать и в одиночку. Большую часть от 2х суток я ковырял задания категории Mobile. И в этом хабе представлены writeup\`ы всех тасков этой категории. Гугл предложил всего 3 задания для Mobile(в других было по 5-6), но от этого они были, возможно, даже более качественными. Ну ладно, вода закончилась, переходим к сути :) [Хватит воды. Перейти к разбору тасков!][3]

[1]: https://habrastorage.org/files/27c/0c6/735/27c0c67355af4e3087ef288770693acd.jpg
[2]: https://capturetheflag.withgoogle.com
[3]: https://habrahabr.ru/post/282846/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] HDD посвящается: усмиряем приложение, прожорливое на дисковое время
habra.16
habrabot(difrex,1) — All
2016-05-04 11:00:08




# Корень всех зол

Долгое время у меня была проблема — система очень сильно тормозила после старта. У меня ноутбук с жёстким диском (HDD) и **Ubuntu 14.04**. Как выяснилось, причина крылась в одной лишь программе — демоне Dropbox. Dropbox — это онлайновое файловое хранилище, а его демон — программка, синхронизирующая файлы, расположенные в определённой папке, с онлайн-хранилищем. На старте демон начинает считывать свой кэш. У меня он занимает не одну сотню мегабайт, а удалять его вручную не стоит — есть вероятность потерять данные. Учитывая, что у меня жёсткий диск — устройство с механическими частями — демон начинал потреблять время доступа к нему настолько, что пользоваться компьютером и запускать приложения становилось малореально, пока он не прогрузится. Убрать его из автозапуска и запускать вручную? Неприятное решение, у меня и так есть вещи, которые я на старте вынужден запускать сам (например, iotop, он без прав суперпользователя не запускается). Нужно было найти способ сделать приложение менее прожорливым _именно на диск_. [Читать дальше →][1]

[1]: https://habrahabr.ru/post/282828/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Администраторы групп в vk всегда были в открытом доступе
habra.16
habrabot(difrex,1) — All
2016-05-04 12:30:05


Ранее я уже писал один пост на geektimes о том, что [истинно анонимных пабликов в ВК не было до 29.10.14][1]. Но как оказалось, я ошибался на счет даты. И не до конца осознал всю суть существующей проблемы анонимности. [Читать дальше →][2]

[1]: https://geektimes.ru/post/248930/
[2]: https://habrahabr.ru/post/282906/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] У Upwork проснулась монопольная жадность
habra.16
habrabot(difrex,1) — All
2016-05-04 13:00:05




Глубокой ночью ничто не предвещало беды… Но в четыре утра от фрилансерской биржи Upwork пришло письмо с радостным, выделенным полужирным начертанием сообщением:



**Чем больше вы работаете с клиентом на Upwork, тем больше из заработанного вы оставляете себе!**



Казалось бы, радоваться надо, но если вчитаться, то обнаруживаются некоторые детали: комиссию Upwork не уменьшил, а увеличил. Если раньше на все контракты распространялась комиссия 10%, то сейчас она становится ступенчатой: 20%, 10% и 5% при порогах в $0, $500 и $10 000.

[Добро пожаловать в мир монополий!][1]

[1]: https://habrahabr.ru/post/282898/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Обработка древовидных структур и унифицированное AST
habra.16
habrabot(difrex,1) — All
2016-05-04 13:30:02




[Предыдущая статья серии][1] была посвящена теории парсинга исходников с использованием ANTLR и Roslyn. В ней было отмечено, что процесс сигнатурного анализа кода в нашем проекте [PT Application Inspector][2] разбит на следующие этапы:



1. парсинг в зависимое от языка представление (abstract syntax tree, AST);
2. преобразование AST в независимый от языка унифицированный формат (Unified AST, UAST);
3. непосредственное сопоставление с шаблонами, описанными на DSL.



Данная статья посвящена второму этапу, а именно: обработке AST с помощью стратегий Visitor и Listener, преобразованию AST в унифицированный формат, упрощению AST, а также алгоритму сопоставления древовидных структур.



[![][3]][4]



## Содержание



* [Обход AST][5]
* [Visitor и Listener][6]
* [Различия в Visitor в ANTLR и Roslyn][7]
* [Грамматика и Visitor в ANTLR][8]
* [Альтернативные и элементные метки в ANTLR][9]
* [Типы узлов унифицированного AST][10]
* [Тестирование конвертеров][11]
* [Упрощение UAST][12]
* [Алгоритм сопоставления древовидных структур][13]
* [Заключение][14]

[Читать дальше →][15]

[1]: https://habrahabr.ru/company/pt/blog/210772/
[2]: http://www.ptsecurity.ru/appsecurity/application-inspector/
[3]: https://habrastorage.org/getpro/habr/post_images/031/d2d/4ca/031d2d4cab81a98a67c1962ee1d75f41.png
[4]: https://habrahabr.ru/company/pt/blog/210060/
[5]: #ast-traverse
[6]: #visitor-vs-listener
[7]: #visitor-in-antlr-and-roslyn
[8]: #grammar-and-visitor-antlr
[9]: #antlr-labels
[10]: #unified-ast-types
[11]: #converters-testing
[12]: #ast-simplify
[13]: #tree-matching-algorithm
[14]: #conclusion
[15]: https://habrahabr.ru/post/210060/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Delphi. Что таит в себе TDictionary
habra.16
habrabot(difrex,1) — All
2016-05-04 15:00:02


![][1] Доброго времени суток. А знаете ли вы, что не все хеш таблицы одинаково полезны? Сейчас я расскажу вам историю, как одна плохая хеш таблица скушала всю производительность, и не поморщилась. И как исправление этой хеш таблицы ускорило код почти в 10 раз. Конечно, согласно теме — в статье речь пойдет о Delphi, но даже если вы не Delphi разработчик, то все равно советую заглянуть под кат, а после прочтения статьи в исходный код хеш таблиц, которые вы используете. А Delphi разработчикам я советую вообще отказаться от стандартного TDictionary. [Итак, поехали][2]

[1]: https://habrastorage.org/files/b0a/7a4/d21/b0a7a4d21f2c481ebb021456e95ddefe.png
[2]: https://habrahabr.ru/post/282902/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Пол Грэм, «Хакеры и художники», глава 10: «Programming Languages Explained»
habra.16
habrabot(difrex,1) — All
2016-05-04 15:30:02


![image][1] Книга «Хакеры и Художники», глава 10. Эта глава есть только в книге, на сайте [Пола Грэма][2] она отсутствует. Кстати, осталось совсем чуть-чуть и будет готова последняя глава книги, тем самым будет полный русский хабраперевод «Хакеров и художников». (Предыдущий перевод — [Пол Грэм: «The Other Road Ahead»][3].) _За помощь с переводом спасибо Щекотовой Яне._

#### Языки программирования «в разрезе»

**У любой машины есть набор действий, которые на ней можно выполнить.** Иногда этот набор сильно ограничен. Со своим электрическим чайником я могу совершать только два действия: включать и выключать его. Мой CD проигрыватель будет уже посложнее. Помимо включения и выключения, я могу повышать и убавлять на нем громкость звука, воспроизводить и приостанавливать песни, перейти к следующей или предыдущей композиции, а также воспроизводить все это в случайном порядке. Как и любое другое устройство, у компьютера есть список действий, которые он может выполнить. Например, на каждом компьютере можно сложить два числа. Полный перечень допустимых операций компьютера заключен в его машинном языке.

#### Машинный язык

Когда были изобретены компьютеры, все программы приходилось писать как последовательность машинных инструкций. Вскоре, их начали писать в несколько более удобной форме под названием язык ассемблера. В языке ассемблера список команд тот же самый, только используются более удобные для программистов имена. Вместо обращения к инструкции сложения как 11001101, хотя именно так машина ее и вызывает, вам нужно написать add. Проблема с машинным языком/языком ассемблера состоит в том, что большинство компьютеров могут выполнять только очень простые вещи. Например, предположим, что вам нужно, чтобы компьютер воспроизвел короткий звуковой сигнал 10 раз. Сомневаюсь, что у компьютера есть инструкция для осуществления какого-либо действия n раз. Поэтому, если бы вам понадобилось, чтобы компьютер что-то сделал 10 раз, используя настоящие машинные инструкции, вам бы пришлось написать нечто похожее на: put the number 10 in memory location 0 a if location 0 is negative, go to line b beep subtract 1 from the number in location 0 go to line a b ...rest of program… Если вам приходится выполнять столько работы только для того, чтобы заставить машину пропикать 10 раз, то только представьте, сколько труда уходит на написание чего-то наподобие текстового процессора или программы для работы с электронными таблицами. И, кстати, взгляните еще раз на программу. Она и вправду воспроизведет короткий звуковой сигнал 10 раз? Неа, 11. В первой строке мне надо было указать 9 а не 10. Я намеренно поместил в наш пример ошибку, чтобы продемонстрировать важный аспект по поводу языков. Чем больше вам приходится писать для выполнения тех или иных действий, тем сложнее разглядеть ошибки. [Читать дальше →][4]

[1]: https://habrastorage.org/getpro/habr/post_images/e77/914/884/e77914884579df2fb00518209c0082b9.jpg
[2]: http://paulgraham.com/articles.html
[3]: https://habrahabr.ru/company/edison/blog/282574/
[4]: https://habrahabr.ru/post/281561/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Как написать монаду IO на C# (не) без помощи параллельной вселенной и машины времени
habra.16
habrabot(difrex,1) — All
2016-05-04 16:30:02


В жизни нередко бывают ситуации когда нужно просто сесть и сделать какое-то дело, не забивая себе голову вопросами вроде "а что это даст?", "а кому это нужно?" и т. п. Написание монады `IO —` безусловно именно такой случай. Поэтому под катом находится рассказ о том _как_ написать монаду `IO` на _C#,_ без малейших попыток объяснить _зачем_ это делать.





[Читать дальше →][1]

[1]: https://habrahabr.ru/post/282940/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Приводим данные и код в порядок: оптимизация и память, часть 1
habra.16
habrabot(difrex,1) — All
2016-05-04 19:00:03


В этой серии из двух статей говорится о том, как структура данных и памяти влияет на производительность. Предлагаются определенные действия для повышения производительности программного обеспечения. Даже простейшие действия, показанные в этих статьях, позволят добиться существенного прироста производительности. Многие статьи, посвященные оптимизации производительности программ, рассматривают распараллеливание нагрузки в следующих областях: распределенная память (например, MPI), общая память или набор команд SIMD (векторизация), но на самом деле распараллеливание необходимо применять во всех трех областях. Эти элементы очень важны, но память также важна, а про нее часто забывают. Изменения архитектуры программ и применение параллельной обработки влияют на память и на производительность. [][1]



[Читать дальше →][2]

[1]: https://habrahabr.ru/company/intel/blog/282738/
[2]: https://habrahabr.ru/post/282738/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Краткий курс от ESET по проектированию малвари
habra.16
habrabot(difrex,1) — All
2016-05-04 19:00:03


Хочешь верь, а хочешь — нет, но дело было так. В одной из контор, куда я был приглашен в качестве консультанта, уже давно заняты поисками «вменяемого» антивируса (уже предвижу на некоторых лицах ядовитые улыбки), а потому решились они снять пробы с ESET Smart Security. И вроде бы все ничего. До вчерашнего дня. [Читать дальше →][1]

[1]: https://habrahabr.ru/post/282904/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Easy Hack: Java application
habra.16
habrabot(difrex,1) — All
2016-05-04 19:00:03


Время от времени пентестерам приходится сталкиваться с Java-приложениями. Это могут быть различные серверы, клиенты или просто десктопные программы. И иногда возникает необходимость «пропатчить» такое приложение. Зачем это нужно? Каждый случай возникновения такой необходимости уникален. К примеру:

* Сложный протокол общения между сервером и клиентом. Чтобы отправлять произвольные запросы – патчим;
* Захардкожены настройки. Чтобы поменять – патчим;
* Для демонстрации последствий проблем типа «race condition» – патчим.

Конечно, в каждом случае можно решить проблему, не прибегая к модификации приложения. Но зачастую это самый простой и быстрый способ добиться необходимого результата. В этой статье мы расскажем, как легко и быстро изменить функционал в приложении на Java. [Читать дальше →][1]

[1]: https://habrahabr.ru/post/282934/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Интернет пчел, или Зеленое будущее M2M приложений
habra.16
habrabot(difrex,1) — All
2016-05-04 19:00:03


Все обсуждение вокруг феномена Интернета вещей обычно сводится к тем потенциальным преимуществам для бизнеса и к тем удобствам для пользователей, которые предлагают наши интеллектуальные устройства и объекты, окружающие нас в повседневной жизни. При этом многие аналитики не исключают вероятности того, что мы находимся на пороге второй цифровой революции. Однако недавно прошедший День Земли натолкнул нас на идею рассмотреть вопрос шире – это был отличный повод изучить, каким образом Интернет вещей, и даже скорее индустриальный Интернет вещей (M2M – machine-to-machine), то есть беспроводная передача данных и информации между устройствами и объектами, сможет оказать благотворное влияние на нашу жизнь и будет способствовать устойчивому развитию и защите окружающей среды на нашей взаимосвязанной планете. ![][1] [Читать дальше: Любопытные реализации IoT для 'зеленого' будущего][2]

[1]: https://habrastorage.org/files/c49/6ce/d47/c496ced470af443383ced4d1f83768dd.jpg
[2]: https://habrahabr.ru/post/282786/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] 5 достойных изучения проектов с открытым исходным кодом на React Native
habra.16
habrabot(difrex,1) — All
2016-05-04 19:00:03


Изучение открытого исходного кода – это лучший способ научиться писать качественный код, особенно если речь идет о новом инструменте с не полностью сформировавшимися стандартами. Одним из таких инструментов является React Native. Он постоянно дорабатывается, функциональность его API расширяется с каждым релизом, а количество библиотек растет. В то же время большинство обучающих ресурсов по работе с React Native очень поверхностны и не идут дальше вступительных рекомендаций. Но даже несмотря на это, изучение исходного кода должно быть нормой для каждого разработчика. Я хочу представить 5 проектов с открытым исходным кодом, которые я изучаю сам и советую остальным. ![][1] [Читать дальше →][2]

[1]: https://habrastorage.org/files/6ca/b4e/12d/6cab4e12d821474882de1e9fdcae811d.jpg
[2]: https://habrahabr.ru/post/282950/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Голосовое управление умным домом на Z-wave через Siri
habra.16
habrabot(difrex,1) — All
2016-05-04 19:00:03


Идея поуправлять умным домом с помощью голосовых команд родилась уже давно. И в каких-то системах так или иначе это реализовано. Siri – хороший и удобный голосовой помощник для владельцев айфонов. Понимает человеческую речь, удобен. Но по причине закрытого протокола, не используется для голосового управления «умных» устройств. Хорошо, что у Apple есть HomeKit – некий «туннель» для приема команд умными устройствами от Siri. ![image][1] В этой статье я опишу процесс установки и настройки шлюза для взаимодействия Siri с устройствами домашней автоматизации и расскажу про некоторые особенности разных версий. [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/6c3/83c/0c1/6c383c0c10da7eb3a9c5bab46a407f39.png
[2]: https://habrahabr.ru/post/282870/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Работа с WAV-файлами с использованием PHP
habra.16
habrabot(difrex,1) — All
2016-05-04 19:00:03


Всё началось с того, что я задумался о том, как отобразить на сайте информацию о загруженном аудио-файле. Для начала решил разобраться с самым простым форматом — wav. Как оказалось, ничего сложного в этом нет и писать именно об этом, в общем-то, не было бы никакого смысла, благо, информации о том, как устроен wav-файл «изнутри» в Интернете полно. И тут в голову пришла светлая мысль о том, что было бы прикольно не просто отображать информацию о файле, но и иметь возможность генерировать такой файл «на лету». Думаю, все видели в сети всевозможные «онлайн-пианино» и прочее, верно? Итак, что мне удалось сделать за 2 вечера — под катом. [Читать дальше →][1]

[1]: https://habrahabr.ru/post/282922/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Тестируй плагины для Gradle правильно
habra.16
habrabot(difrex,1) — All
2016-05-04 19:00:03




Как-то при подготовке одного из докладов про разработку плагинов для Gradle встала задача — как свои поделия потестировать. Без тестов вообще жить плохо, а когда твой код реально запускается в отдельном процессе и подавно, потому что хочется дебага, хочется быстрого запуска и не хочется писать миллион example-ов, чтобы протестировать все возможные кейсы. Под катом сравнение нескольких способов тестирования, которые мы успели попробовать.

[Читать дальше →][1]

[1]: https://habrahabr.ru/post/282924/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Вышел uvloop — продвинутая реализация цикла событий для asyncio в Python
habra.16
habrabot(difrex,1) — All
2016-05-04 22:00:03


В стандартной библиотеке Python 3.4 в своё время появился модуль [asyncio][1], позволивший удобно и быстро писать асинхронный код. А уже к Python 3.5 в синтаксис [были][2] добавлены конструкции async/await, окончательно оформившие асинхронность «из коробки» как красивую и гармоничную часть языка.



Хотя asyncio сам по себе и позволяет писать высоконагруженные веб-приложения, оптимизация производительности не была приоритетом при создании модуля. Один из авторов упомянутого PEP-492 (async/await) [Юрий Селиванов][3] взялся за разработку альтернативной реализации цикла событий для asyncio — [uvloop][4]. Вчера вышла первая альфа-версия модуля, о чём автор написал [развёрнутый пост][5]. Если вкратце, то uvloop работает примерно в 2 раза быстрее Node.js и практически не уступает программам на Go. [Под катом небольшая выжимка из записи в блоге][6]

[1]: https://docs.python.org/3/library/asyncio.html
[2]: https://www.python.org/dev/peps/pep-0492/
[3]: https://twitter.com/1st1
[4]: https://github.com/MagicStack/uvloop
[5]: http://magic.io/blog/uvloop-make-python-networking-great-again/
[6]: https://habrahabr.ru/post/282972/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Graylog2 стал удобнее и быстрее
habra.16
habrabot(difrex,1) — All
2016-05-05 09:00:02


Записывая для VPSVille [три ролика][1] по [Graylog][2] понял, что на хабре по нему только одна обзорная [статья][3], а мануалы на любом языке запутаны из-за различной работы компонентов в разных версиях ПО. Потратив сутки на переваривание всей этой красоты пишу мануал: как настроить сервер Graylog для сбора событий из Windows и Linux. Кто очень хочет понимать Linux, но не поймет с чего начинать — прошу ко мне на [канал][4]. ![image][5] Вместо введения: Graylog это open source программное обеспечение, предназначенное для сбора логов в гигантских сетях их огромного количества источников различными способами. В нем можно удобно организовать сбор событий, фильтрацию, поиск, автоматизацию (всякие алерты) и т.д. Аналогичных средств множество, но Graylog предлагает нереальную производительность с использованием современных компонентов, удобную аналитику и красивый интерфейс. Для работы ему нужна [Java][6], логи он будет хранить в [MongoDB][7], для поиска использовать [ElasticSearch][8]. Про сбор информации из WIndows будет ниже, но спойлер — агенту больше не нужна Java. [Читать дальше →][9]

[1]: https://www.youtube.com/user/vpsville
[2]: https://www.graylog.org/
[3]: https://habrahabr.ru/post/132116/
[4]: https://www.youtube.com/user/itsemaev
[5]: https://habrastorage.org/getpro/habr/post_images/4ed/139/b6d/4ed139b6dacc8e5c905fe8a58c2d5599.jpg
[6]: https://www.java.com/ru/
[7]: https://www.mongodb.org/
[8]: https://www.elastic.co/
[9]: https://habrahabr.ru/post/282974/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Почему в MIT больше не изучают SICP
habra.16
habrabot(difrex,1) — All
2016-05-05 14:30:02


На днях широкое внимание привлекло состоявшееся в начале года на митапе NYC Lisp выступление Джеральда Джей Сассмана, — одного из авторов великого и могучего SICP, а также крестного отца Scheme. Всему виной — ответ на вопрос, почему в MIT прекратили преподавать ставший легендарным курс 6.001, построенный на основе книги Сассмана и Абельсона «Структура и интерпретация компьютерных программ» (вопрос задан на 59 минуте).




Сассман назвал две причины; впрочем, сразу замечу, что в первой из них нет ничего особенного. К 1997 году Абельсон и Сассман уже устали рассказывать практически одно и то же с 80-ых, поэтому решили оставить преподавание и предложили главе кафедры самостоятельно решить, как поступить с самим курсом. Здесь удивляться действительно нечему — что угодно может осточертерть, если заниматься им достаточно долго. Впрочем, вторая причина гораздо серьезнее. По мнению Сассмана, они с Абельсоном осознали, что учебный план SICP больше не в силах подготовить инженеров к тому, что представляет собой «инжиниринг» сегодня. В 80-ых и 90-ых инженеры строили сложные системы, комбинируя простые и хорошо изученные «части». Целью SICP было предоставить язык абстракций для рассуждений о таких системах. [Читать дальше →][1]

[1]: https://habrahabr.ru/post/282986/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как я год работал на CoreOS
habra.16
habrabot(difrex,1) — All
2016-05-05 17:00:03




Первый раз о [CoreOS][1] я услышал от Петра Леменкова на Yandex конференции “Дорога в облака” в сентябре 2013 года. Тогда я даже подумать не мог, что буду участвовать в разработке этой ОС.



Второй раз о CoreOS я вспомнил в октябре 2014, когда поступила задача о переводе микросервисов, написанных на Ruby (которые использовали, как это ни странно разные версии Ruby), в более благоприятную среду для continuous integration. Тогда я первый раз запустил CoreOS, и мне она показалось ужасно неудобной в использовании. Документация к ней была поверхностная. Сервисы, которые превращали CoreOS в кластерную ОС, имели множество недоработок и вызывали только чувство раздражения из-за постоянных ошибок. О переводе даже части инфраструктуры на CoreOS не было и речи.



В третий же раз, в марте 2015, поступила задача о предоставлении услуги поддержки в рамках community support для CoreOS. О том, как я справлялся, и пойдет речь.

[Читать дальше →][2]

[1]: https://coreos.com
[2]: https://habrahabr.ru/post/282964/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] С днем шифровальщика (восклицательный знак)
habra.16
habrabot(difrex,1) — All
2016-05-05 18:00:03


![][1] [5 мая 1921 года][2] была создана служба криптографии и шифрования. В этом же году Эйнштейн получил нобелевку «За заслуги перед теоретической физикой и особенно за открытие закона фотоэлектрического эффекта», была создана организация «Госстрах», а Гитлер стал председателем NSDAP. Я поспрашивал коллег из хакспейса и из компании [Edison][3]: «Шеннон, Тьюринг, Фейстель, Шамир, Шнайер, наконец. Вот назовите мне хоть одну фамилию советского криптографа?» Все равно что спросить у ясеня или у тройки. Не дают ответа. Видать, советская криптография была настолько хороша, что отлично шифровала все сведения о самой себе. У меня была попытка раскопать что-нибудь про советскую криптографию, я даже вышел на компанию Анкорт (это те товарищи, которые сделали бриллиантовый криптотелефон и при помощи калькулятора [Электроника МК-85С][4] предотвратили [«чеченский фрод»][5]), статья была написана, но в последний момент заказчик срулил, а [NDA][6] надолго похоронил статью в черновиках. Шифрование у нас в крови, предлагаю сегодня всем читателям поделиться своими историями или наводками на интересные факты советской криптографии. Я же поделюсь двумя своими личными историями про свой первый шифр и про организацию первой Дальневосточной олимпиады по криптографии для школьников. [Читать дальше →][7]

[1]: https://habrastorage.org/files/762/7a4/2eb/7627a42eb7ca4e17943bcf2ccbfecc58.jpg
[2]: https://ru.wikipedia.org/wiki/%D0%94%D0%B5%D0%BD%D1%8C_%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BB%D1%8C%D1%89%D0%B8%D0%BA%D0%B0
[3]: https://www.edsd.com/services/requirements-elaboration
[4]: https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0_%D0%9C%D0%9A-85#.D0.9C.D0.9A-85.D0.A1.5B3.5D
[5]: https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%BB%D1%8C%D1%88%D0%B8%D0%B2%D1%8B%D0%B5_%D0%B0%D0%B2%D0%B8%D0%B7%D0%BE
[6]: https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%B3%D0%BB%D0%B0%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D0%BD%D0%B5%D1%80%D0%B0%D0%B7%D0%B3%D0%BB%D0%B0%D1%88%D0%B5%D0%BD%D0%B8%D0%B8
[7]: https://habrahabr.ru/post/282854/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] В I квартале 2016 года ежедневно идентифицировались 227 000 образцов вредоносных программ
habra.16
habrabot(difrex,1) — All
2016-05-05 18:00:03


![][1] PandaLabs, антивирусная лаборатория компании [Panda Security][2], изложила в своем [ежеквартальном отчете][3] основные события кибер-безопасности за первые три месяца 2016 года, показав также статистику вредоносных программ и кибер-атак за указанный период времени. Уровень создания вредоносных программ продолжает бить все рекорды, достигнув отметки в 20 миллионов новых образцов, которые были идентифицированы в PandaLabs на протяжении первого квартала (в среднем — 227 000 образцов ежедневно). Все больше и больше компаний попадают в ловушки шифровальщиков. В настоящем отчете Вы узнаете все новости, связанные с этими типами атак (включая атаки на Linux, Mac и даже веб-страницы). Мы покажем, как можно спасти несколько сотен миллионов евро, а также проанализируем кибер-атаки на больницы, которые произошли за последние несколько месяцев. [Читать дальше →][4]

[1]: https://habrastorage.org/files/668/184/740/668184740c2b4148aa4ae57a8256f297.png
[2]: http://www.pandasecurity.com/russia
[3]: https://pandasecurity.bitrix24.ru/~rTdph
[4]: https://habrahabr.ru/post/283000/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Первые успехи сложного игрового бота
habra.16
habrabot(difrex,1) — All
2016-05-05 18:00:03


_(Приглашение к совместному проекту с открытым исходным кодом)_ Зачем люди пишут игровых ботов? – Можно назвать много возможных причин, одной из них, безусловно, является чисто академический интерес решения сложной задачи AI. В литературе по философии CS и по философии математики программирование неоднократно сравнивалось с альпинизмом. Трудно сказать, кто первый сделал такое сравнение. На наш взгляд, оно очень подходит и к нашему случаю, поэтому, рискуя показаться не оригинальными, все же сделаем утверждение: написание нетривиального бота для программиста – такой же вызов, как покорение вершины для альпиниста. Чем недоступнее вершина – тем сильнее желание ее покорить. Поэтому, прежде всего, нужно выбрать действительно достойную вершину в интересном горном массиве. Одним из таких массивов со множеством сложных, никем пока не покоренных вершин, является игра "[Космические Рейнджеры 2 HD: Революция][1]" (КР2) — продолжение серии игр "[Космические Рейнджеры][2]" (КР). [Читать дальше →][3]

[1]: http://wiki.snk-games.net/Космические_рейнджеры_HD:_Революция
[2]: http://wiki.snk-games.net/Добро_пожаловать
[3]: https://habrahabr.ru/post/283020/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Разработчики в край обленились?
habra.16
habrabot(difrex,1) — All
2016-05-05 18:00:03


![image][1] _Примечание от переводчика: Оригинальный текст, местами, имеет яркую экспрессивную окраску, которую было решено адаптировать и передать в переводе. Сама статья глубоко субъективна, но в целом, дает некоторую пищу для размышлений. Приятного чтения._

----

Я разработчик программного обеспечения и я создаю баги и ошибки. Однажды я сбросил продакшн-базу SQL на дефолт, что угробило важную информацию и похоронило огромный кусок работы моих коллег. Содержание данного поста абсолютно субъективно и не направлено против какой-либо компании. Я считаю, что у нашей сферы есть серьезные проблемы с качеством выполняемых работ и я не вижу этому конца. За последние несколько лет стало ощущаться, как качество программного обеспечения и услуг по всей отрасли стало падать, а не расти. Все и всегда находится в стадии Беты (как исходя из названия, так и из качества). Товары отправляются потребителям тогда, когда этого хотят маркетологи, а не когда они реально готовы к продаже, а все потому, что «мы всегда сможем легко все пофиксить». Конечный потребитель превратился из покупателя в бета-тестера, но это уже норма, потому что в разработке используется Agile. В программировании мы стали считать, что ошибки и неудачи — это нормально, поэтому нам теперь не нужно прикладывать так много усилий для их избежания. Поддержка миллионов клиентов — вещь сложная, поэтому волноваться не стоит. Зачем вообще тратить время на ознакомление с фидбеком и репортами от пользователей, если их просто можно отправить в бесконечный лабиринт под названием «саппорт» и «обратная связь»? Я никогда не расстраивался из-за этого, но за последние несколько лет я видел столько смешных и глупых ошибок в программном обеспечении и на веб-сайтах, что у меня уже стала немного пригорать задница. Я понимаю, что мы принадлежим к молодой и еще неопытной сфере производства, что нам не хватает квалифицированных разработчиков для того, чтобы все делать правильно, но в последнее время возникает чувство, что мы даже и не пытаемся. Ниже я предлагаю вам ознакомиться с рядом скриншотов, на которых запечатлены «косяки» наших коллег только за последний месяц. Или я такой «везучий», что только и делаю, что натыкаюсь на подобное? Или же это видят все, но только мне приходится сдерживаться, чтобы не начать орать? [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/ec4/43b/73e/ec443b73e21fa428456ef89ffaf7cbf5.png
[2]: https://habrahabr.ru/post/283022/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] С днем шифровальщикаǃ
habra.16
habrabot(difrex,1) — All
2016-05-06 02:00:02


![][1] [5 мая 1921 года][2] в России была создана служба криптографии и шифрования. В этом же году Эйнштейн получил нобелевку «За заслуги перед теоретической физикой и особенно за открытие закона фотоэлектрического эффекта», была создана организация «Госстрах», а Гитлер стал председателем NSDAP. Я поспрашивал коллег из хакспейса и из компании [Edison][3]: «Шеннон, Тьюринг, Фейстель, Шамир, Шнайер, наконец. Вот назовите мне хоть одну фамилию советского криптографа?» Все равно что спросить у ясеня или у тройки. Не дают ответа. Видать, советская криптография была настолько хороша, что отлично шифровала все сведения о самой себе. У меня была попытка раскопать что-нибудь про советскую криптографию, я даже вышел на компанию Анкорт (это те товарищи, которые сделали бриллиантовый криптотелефон и при помощи калькулятора [Электроника МК-85С][4] предотвратили [«чеченский фрод»][5]), статья была написана, но в последний момент заказчик срулил, а [NDA][6] надолго похоронил статью в черновиках. Шифрование у нас в крови, предлагаю сегодня всем читателям поделиться своими историями или наводками на интересные факты советской криптографии. Я же поделюсь двумя своими личными историями про свой первый шифр и про организацию первой Дальневосточной олимпиады по криптографии для школьников. [Читать дальше →][7]

[1]: https://habrastorage.org/files/762/7a4/2eb/7627a42eb7ca4e17943bcf2ccbfecc58.jpg
[2]: https://ru.wikipedia.org/wiki/%D0%94%D0%B5%D0%BD%D1%8C_%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BB%D1%8C%D1%89%D0%B8%D0%BA%D0%B0
[3]: https://www.edsd.com/services/requirements-elaboration
[4]: https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0_%D0%9C%D0%9A-85#.D0.9C.D0.9A-85.D0.A1.5B3.5D
[5]: https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%BB%D1%8C%D1%88%D0%B8%D0%B2%D1%8B%D0%B5_%D0%B0%D0%B2%D0%B8%D0%B7%D0%BE
[6]: https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%B3%D0%BB%D0%B0%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D0%BD%D0%B5%D1%80%D0%B0%D0%B7%D0%B3%D0%BB%D0%B0%D1%88%D0%B5%D0%BD%D0%B8%D0%B8
[7]: https://habrahabr.ru/post/282854/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Серьезная уязвимость прокси-сервера Squid позволяет «отравить кэш»
habra.16
habrabot(difrex,1) — All
2016-05-06 10:30:02


[![][1]][2] Цзянь-Цзюнь Чэнь (Jianjun Chen) — аспирант китайского Университета Цинхуа — обнаружил [опасную уязвимость][3] в популярном прокси-сервере Squid. Как ему удалось выяснить, система не соответствует стандарту RFC 7230, а также некорректно работает при парсинге и обработке заголовка Host в HTTP-запросах. В результате злоумышленник может сформировать зловредный пакет и с помощью него осуществить атаку cache poisoning. [Читать дальше →][4]

[1]: https://habrastorage.org/files/efc/a4e/9c2/efca4e9c217549c4b624384842c17443.png
[2]: https://habrahabr.ru/company/pt/blog/283028/
[3]: http://bugs.squid-cache.org/show_bug.cgi?id=4501
[4]: https://habrahabr.ru/post/283028/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как взломать Telegram и WhatsApp: спецслужбы не нужны
habra.16
habrabot(difrex,1) — All
2016-05-06 12:00:02


На прошлой неделе общественность взбудоражила новость о [причастности спецслужб к взлому Telegram опозиционеров][1]. На протяжении своего существования человечество все необъяснимое пыталось объяснить с помощью высших сил – Богов. В наше время все непонятные вещи объясняют происками спецслужб. Мы решили проверить, действительно ли нужно быть спецслужбой, чтобы получить доступ к чужому аккаунту Telegram. Мы зарегистрировали тестовый аккаунт Telegram, обменялись несколькими тестовыми сообщениями: [![][2]][3] Далее провели атаку через сеть SS7 на один из тестовых номеров (подробнее о самих атаках мы [писали ранее][4]). [Читать дальше →][5]

[1]: http://www.rbc.ru/politics/02/05/2016/57278bc29a7947849edc8a53
[2]: https://habrastorage.org/files/6bc/387/ff4/6bc387ff423a41889c20fe219987dd83.png
[3]: https://habrahabr.ru/company/pt/blog/283052/
[4]: https://www.ptsecurity.com/upload/ptcom/SS7_WP_A4.ENG.0036.01.DEC.28.2014.pdf
[5]: https://habrahabr.ru/post/283052/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Использование стандарта ES2015 в рамках библиотеки Backbone.js
habra.16
habrabot(difrex,1) — All
2016-05-06 13:00:02




В то время, как ребята из команд, работающих над Angular, React, мягко, но уверенно пересаживают разработчиков на ES2015, я хотел бы немного рассказать о возможностях использования нового стандарта спецификации с библиотекой Backbone.js. На сегодня основной подход к использованию ES2016 в браузерах один и не зависит от используемого фреймворка/библиотеки. И заключается он в следующем: пишем код на ES2015 и с помощью [транспайлера][1] (напр., [Babel][2]) получаем код (который и выполняется в браузере) на предыдущем стандарте ES5.



Но как модули, классы и прочие "фишки" из ES2015 использовать в рамках сущностей библиотеки Backbone.js? Об этом речь пойдет под катом.

[Читать дальше →][3]

[1]: https://en.wikipedia.org/wiki/Source-to-source_compiler
[2]: https://babeljs.io/
[3]: https://habrahabr.ru/post/283054/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Meduza.io: а как же лайки?
habra.16
habrabot(difrex,1) — All
2016-05-06 13:30:02




Как-то раз, читая новости на Медузе, я обратил внимание на то, что у разных новостей разное соотношение лайков из Facebook и ВКонтакте. Какие-то новости [мегапопулярны][1] на fb, а [другими][2] люди делятся только во ВКонтакте. Захотелось присмотреться к этим данным, попытаться найти в них интересные закономерности. Заинтересовавшихся приглашаю под кат!



![image][3]

[Читать дальше →][4]

[1]: https://meduza.io/news/2016/04/11/umer-akter-albert-filozov
[2]: https://meduza.io/news/2016/04/09/demonstranty-v-londone-potrebovali-otstavki-premier-ministra-iz-za-ofshorov
[3]: https://habrastorage.org/files/1b4/6bb/ccf/1b46bbccf82b46abb3dd51f9f48976f1.png
[4]: https://habrahabr.ru/post/283058/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Производительность без цикла событий
habra.16
habrabot(difrex,1) — All
2016-05-06 14:30:02


![][1] Эта статья основана на материалах презентации, которую я представил в этом году на конференции OSCON. Я отредактировал текст, чтобы он был более лаконичным, а заодно учёл ту обратную связь, что я получил после своего выступления. Про Go часто говорят, что он хорош для серверов: здесь есть статические бинарники (static binaries), развитый [concurrency][2], высокая производительность. В этой статье мы поговорим о двух последних пунктах: о том, как язык и среда выполнения (runtime) ненавязчиво позволяют Go-программистам создавать легко масштабируемые серверы и не беспокоиться из-за управления потоками (thread) или блокирующих операций ввода/вывода. [Читать дальше →][3]

[1]: https://habrastorage.org/files/b07/0d2/71c/b070d271c38d47c1a39fea0a32a42423.png
[2]: https://blog.golang.org/concurrency-is-not-parallelism&sa=D&ust=1462364018678000&usg=AFQjCNGncPbVTRU9Fry-dDh3vIGB_0u9rA
[3]: https://habrahabr.ru/post/283038/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Efficient Rails — новая книга по оптимизации процесса разработки Rails-приложений
habra.16
habrabot(difrex,1) — All
2016-05-06 15:30:02


![][1] **Эффективные Рельсы** — более точного названия для книги придумать было бы сложно. Всё содержание описывается этими двумя словами и раскрывается для нас в сотне рецептов на 380+ страницах. В ожидании выхода финальной версии Rails 5, данное чтиво — то, на что стоит потратить время, благо потребуется его не так много. Но данное вложение вернётся колоссальной прибылью знаний и позволит, как говорится на обложке, _«создавать Rails-приложения с нечеловеческой скоростью»_. Да и не только Rails, да и не только Ruby. Первые две главы включают в себя обилие информации по работе с терминалом и СКВ. Подробности под катом. [Узнать подробнее и получить промокод][2]

[1]: https://habrastorage.org/files/cd6/32d/b42/cd632db4232f4366b55dddef72a8c449.jpg
[2]: https://habrahabr.ru/post/282936/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Великая ловушка программирования
habra.16
habrabot(difrex,1) — All
2016-05-06 16:00:02


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

#### Основной инстинкт человека

[Читать дальше →][1]

[1]: https://habrahabr.ru/post/283068/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Еще раз о минимизации булевых функций
habra.16
habrabot(difrex,1) — All
2016-05-06 18:00:02


В предыдущей [статье][1] я рассказал, как симметричные карты позволяют достаточно просто и быстро минимизировать булевые функции, но не осветил два момента: получение разных вариантов минимального решения и автоматизацию самого алгоритма минимизации. Расскажу здесь об этом более подробно. [Читать дальше →][2]

[1]: https://geektimes.ru/post/272294
[2]: https://habrahabr.ru/post/283030/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Чем заменить ELK для просмотра логов?
habra.16
habrabot(difrex,1) — All
2016-05-06 18:00:02




Что обычно делает python-программист, когда его отправляют воевать с ошибкой? Сначала он лезет в [sentry][1]. Здесь можно найти время, сервер, подробности сообщения об ошибке, traceback и, может быть, какой-нибудь полезный контекст. Затем, если этих данных недостаточно, программист идет



к админам. Те залезают на сервер, ищут это сообщение в файловых логах, и, может быть, находят его и некоторые предшествующие ошибке записи, которые



могут помочь в расследовании. А что делать, если в логах только `loglevel=ERROR`, а ошибка настолько крута, что ее локализация требует сопоставления логики поведения нескольких различных демонов, которые запущены на десятке серверов?



Решение — централизованное хранилище логов. В самом простом случае — syslog (за 5 лет, что был развернут в rutube, не использовался ни разу), для более сложных целей — [ELK][2]. Скажу честно, "ластик" — крут, и позволяет быстро крутить разнообразную аналитику, но вы интерфейс Kibana видели? Этой штуке так же далеко до консольных less/grep, как винде до линукса. Поэтому мы решили сделать свой велосипед, без Java и Node.js, зато с [sphinxsearch][3] и Python.

[Читать дальше →][4]

[1]: https://getsentry.com/
[2]: https://www.elastic.co/webinars/introduction-elk-stack
[3]: http://sphinxsearch.com
[4]: https://habrahabr.ru/post/283026/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод - recovery mode ] Нужен ли стандарт разработки?
habra.16
habrabot(difrex,1) — All
2016-05-06 19:00:02


Вольный перевод статьи «[Should we use a coding standard?][1]» из блога «[Virtuous Code][2]» Avdi Grimm. Мнение автора оригинальной статьи может не совпадать с мнением редакции. ![][3] [Читать дальше →][4]

[1]: http://devblog.avdi.org/2016/03/02/should-we-use-a-coding-standard/
[2]: http://devblog.avdi.org/
[3]: https://habrastorage.org/files/fdb/a97/6b3/fdba976b3a4046a9a5966fab08037b90.jpg
[4]: https://habrahabr.ru/post/283080/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] JavaScript по-русски — pycckuu.js
habra.16
habrabot(difrex,1) — All
2016-05-06 23:30:02


![][1] Вы никогда не задумывались, как выглядит код на JavaScript для программиста, у которого родной язык — английский? Представьте, насколько удобнее им читать и писать код на своем «нативном» языке, насколько ускоряется время разработки и уменьшается количество багов. А ведь использование английского языка как основы для языков программирования не обусловлено ничем, кроме того, что «так исторически сложилось». [Читать дальше →][2]

[1]: https://habrastorage.org/files/a98/62e/3b0/a9862e3b01804f0f866e59e6307c21a4.jpg
[2]: https://habrahabr.ru/post/283072/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Security Week 18: VirusTotal за справедливость, уязвимость в Android, утечка токенов Slack
habra.16
habrabot(difrex,1) — All
2016-05-07 02:30:02


![][1]Начнем выпуск с совсем свежей новости, которая, впрочем, имеет лишь косвенное отношение к ландшафту угроз. 4 мая в блоге сервиса VirusTotal, ныне принадлежащего Google, появилась внешне неприметная [запись][2]. Сервис, позволяющий агрегировать информацию о вердиктах различных антивирусных движков, теперь будет по-другому «отдавать» информацию о детектах. Теперь для того, чтобы получать данные о задетектированных файлах автоматически, с помощью API, требуется в обязательном порядке подключать свой собственный продукт к системе VirusTotal. Почему это важно? Изначально VirusTotal был проектом для исследователей: определить, детектируют ли защитные решения определенный файл — означало сэкономить время и потратить его на более интересные вещи. По мере роста сервиса появились и новые возможности: информация о том, когда был загружен файла иногда также могла многое подсказать о его предназначении и происхождении (особенно, если файл загружался пострадавшим пользователем, а то и самим автором вредоносной программы). Сейчас через VirusTotal проходят миллионы файлов: [за последние семь дней][3] 1,2 млн, из которых 400 тысяч задетектированы одним или несколькими антивирусными движками. Короче, если есть доступ к этой информации, то только на ее основе можно создать свое, достаточно неплохо работающее _типа_ защитное решение. Или, как минимум, получить несправедливое преимущество, получая от индустрии данные, но не отдавая ничего обратно. Not anymore. В посте VT приводится интересный набор правил использования сервиса, где его создателями критикуется пара устоявшихся мифов. Подробнее о них — под катом. Все выпуски дайджеста доступны [по тегу][4]. [Читать дальше →][5]

[1]: https://habrastorage.org/files/6c7/133/cd5/6c7133cd59d143df8cf36714400e5339.png
[2]: http://blog.virustotal.com/2016/05/maintaining-healthy-community.html?spref=tw
[3]: https://virustotal.com/ru/statistics/
[4]: http://habrahabr.ru/search/?target_type=posts&q=%5Bklsw%5D%20&order_by=date
[5]: https://habrahabr.ru/post/283084/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Играем с ключевыми словами в Javascript
habra.16
habrabot(difrex,1) — All
2016-05-07 16:00:02


![image][1]

В статье рассказывается про модуль позволяющий создавать подмножество javascript с любыми ключевыми словами. Строго для безудержного веселья. На волне статьи про [rucckuu.js][2] я обзавидовался и решил обнародовать своё творение: небольшую экосистему для создания произвольных подмножеств javascript. Если к вам давно закрадывалась мысль о том, что некоторые ключевые слова плохо подходят к контексту их применения или мысль о том, что javascript слишком многословен (всякое бывает). Если вы хотите добродушно подшутить над коллегами или просто объяснить вашей маме чем вы всё-таки занимаетесь на работе, добро пожаловать под кат.

[Трогни чтобы дальше][3]

[1]: https://habrastorage.org/getpro/habr/post_images/e72/222/b7e/e72222b7e97cfbd18f5f6e40e488af74.png
[2]: https://habrahabr.ru/post/283072/
[3]: https://habrahabr.ru/post/283108/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

Pages: 1 ... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ... 133