RSS
Pages: 1 ... 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 ... 210
[>] [Перевод] Неупакованные типы объединений в Scala на основе изоморфизма Карри-Ховарда
habra.15
habrabot(difrex,1) — All
2015-11-01 16:00:03


_Примечание переводчика. В будущей версии Scala (“Don Giovanni”) [анонсирована][1] поддержка типов объединения (union types). Miles Sabin, широко известный в узких кругах как создатель Shapeless, демонстрирует в [этой][2] статье 2011 года, как создать типы объединения уже сейчас. **UPD**. Представленный в статье подход не позволяет получить настоящих типов объединения и кроме того может существенно повлиять на время компиляции. Типы пересечения (`A with B`), использованные в статье, также отличаются от классических, поскольку не обладают свойством коммутативности. Подробности об экспериментальном проекте Dotty, в рамках которого будут решены эти и другие проблемы, можно посмотреть в замечательной [презентации][3] Дмитрия Петрашко [darkdimius][4] — разработчика компилятора Scala в EPFL._ Scala имеет очень выразительную систему типов. Однако она не включает (по крайней мере как примитивы) всех вожделенных элементов. Есть несколько поистине полезных типов, подпадающих под эту категорию — это типы полиморфных функций высшего ранга (higher-rank) и рекурсивные структурные типы. Но о них я расскажу подробнее в следующих постах, а сегодня я собираюсь показать вам, как в Scala мы можем создать типы объединения (union types). В ходе объяснения я пролью немного света на изоморфизм Карри-Ховарда и покажу, как использовать его в наших целях.



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

[1]: http://www.scala-lang.org/news/roadmap-next
[2]: http://milessabin.com/blog/2011/06/09/scala-union-types-curry-howard/
[3]: https://d-d.me/scalaworld2015/#/
[4]: http://habrahabr.ru/users/darkdimius/
[5]: http://habrahabr.ru/post/269907/#habracut

[>] [Перевод] Отслеживание устройств через пассивное прослушивание WiFi
habra.14
habrabot(difrex,1) — All
2015-03-12 14:00:03


За последний год мне попадалось много историй использования пассивного отслеживания WiFi. В основном все сосредотачиваются на вопросах безопасности и приватности, но мало кто рассказывает, как это работает. Я сделал целый проект Casual Encounters и могу поделиться информацией о работе системы, о том, как избежать слежки, и как её построить (в исследовательских целях, разумеется). Не пробуйте повторить это дома. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/252831/#habracut

[>] Если вы решили перейти с PHP на Python, то к чему следует подготовиться
habra.14
habrabot(difrex,1) — All
2015-03-12 16:00:03


Думали ли вы когда-нибудь о том, что однажды слишком быстро втянулись в веб-программирование на PHP? И вот уже прошло много лет, у вас хороший опыт, и вы не думаете ни о каких других способах „делать“ веб, кроме как на PHP. Может быть, у вас возникают сомнения в правильности выбора, однако непонятно, как найти способ быстро его проверить. А хочется примеров, хочется знать, как изменятся конкретные аспекты деятельности. Сегодня я попробую ответить на вопрос: **«А что если вместо PHP писать на Python?»**. Сам я долгое время задавался этим вопросом. Я писал на PHP 11 лет и даже являюсь сертифицированным специалистом. Я научился его «готовить» так, чтобы он работал в точности, как мне надо. И когда я в очередной раз читал на Хабре перевод статьи о том, [как всё в PHP плохо][1], я просто недоумевал. Однако подвернулся случай пересесть на Ruby, а потом и на Python. На последнем я и остановился, и теперь попробую рассказать вам PHP-шникам, как нам питонистам живётся. ![][2] [Python с точки зрения PHP-программиста...][3]

[1]: http://habrahabr.ru/post/142140/
[2]: //habrastorage.org/files/07c/e61/6dc/07ce616dc14c4f49895abe06374ac3f3.png
[3]: http://habrahabr.ru/post/221035/#habracut

[>] Как мы взломали 18 работающих кардерских магазинов и не взяли ни цента
habra.15
habrabot(difrex,1) — All
2015-11-01 18:00:03


В наше время развелось огромное множество «именитых» специалистов в области информационной безопасности, люди, считающие что знаний по настройке FireWall уже достаточно чтобы причислить себя к «хакерам» или спецам в области ИБ. Лично я всегда считал, что у меня недостаточно знаний в этой сфере даже для того чтобы написать нормальную статью, но недавний успех этой истории на одном форуме по кибербезопасности и огромное количество отзывов побудили меня написать эту статью на хабр. Для тех кому интересно как мы с ребятами вскрывали кардерские шопы Just For Fun добро пожаловать под кат. ![image][1] [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/3d1/5ca/870/3d15ca87099130264930e14078cdd0a5.jpg
[2]: http://habrahabr.ru/post/269921/#habracut

[>] Перезапуск демона на PHP без потери соединений к нему
habra.14
habrabot(difrex,1) — All
2015-03-12 18:00:02


![][1] На различных конференциях мы неоднократно рассказывали про наше облако для CLI-скриптов ([видеозапись доклада][2], [слайды][3]). Облако предназначено для того, чтобы запускать различные PHP-скрипты по расписанию или через API. Как правило, эти скрипты обрабатывают очереди, и нагрузка «размазывается» приблизительно по 100 серверам. Ранее мы акцентировали внимание на том, как реализована управляющая логика, которая отвечает за равномерное распределение нагрузки по такому количеству серверов и генерацию заданий по расписанию. Но, помимо этого, нам потребовалось написать демон, который был бы способен запускать наши PHP-скрипты в CLI и следить за статусом их исполнения. Изначально он был написан на Си, как и все остальные демоны в нашей компании. Однако мы столкнулись с тем, что существенная часть процессорного времени (около 10%) тратилась, по сути, впустую: это запуск интерпретатора и загрузка «ядра» нашего фреймворка. Поэтому, чтобы иметь возможность инициализировать интерпретатор и наш фреймворк только один раз, было принято решение переписать демон на PHP. Мы назвали его Php_rock_syd (по аналогии с Phproxyd — PHP Proxy Daemon, демоном на Си, который у нас был до этого). Он принимает запросы на запуск отдельных классов и делает fork() на каждый запрос, а также умеет сообщать о статусе исполнения каждого из запусков. Такая архитектура во многом похожа на модель веб-сервера Apache, когда вся инициализация делается один раз в «мастере» и «дети» занимаются уже именно обработкой запроса. В качестве дополнительной «плюшки» мы получаем возможность включить opcode cache в CLI, который будет правильно работать, поскольку все дети наследуют ту же область общей памяти, что и мастер-процесс. Чтобы уменьшить задержки при обработке запроса на запуск, можно делать fork() заранее (prefork-модель), но в нашем случае задержки на fork() составляют около 1 мс, что нас вполне устраивает. [Читать дальше →][4]

[1]: //habrastorage.org/files/575/7a7/d3e/5757a7d3eabe48deb6dc624cd61470a8.jpg
[2]: http://www.youtube.com/watch?v=OmN3ltIyV8M
[3]: http://www.slideshare.net/BadooDev/badoo-hl
[4]: http://habrahabr.ru/post/252809/#habracut

[>] Атака Telegram за 2^64 операций, и почему суперзлодею она не нужна
habra.14
habrabot(difrex,1) — All
2015-03-12 18:00:02


Прошлой весной мы с Juliano Rizzo ([@julianor][1]) придумали криптографическую атаку на «секретный» чат MTProto из Telegram, которая может быть осуществлена приблизительно за 2^64 операций. Атака осуществляется с позиции [человека посередине][2] на серверах Telegram. Сообщения, отправляемые пользователям вне секретного чата, сохраняются на серверах Telegram таким образом, что позволяют компании просматривать содержимое сообщений и передавать их третьим лицам. Так происходит всегда, если беседы могут перемещаться между устройствами (например между телефоном и компьютером). Эти чаты не являются приватными, то есть пользователи должны быть очень внимательны, чтобы случайно не отправить инкриминирующую информацию или картинки без включения секретного чата. Групповые чаты к тому же вообще не используют ent-to-end шифрование. Более того, когда кто-нибудь входит в такой чат, он сразу получает доступ к ранее отправленным несекретным сообщениям. Мы к этому вернемся чуть позже. [Читать дальше →][3]

[1]: http://twitter.com/julianor
[2]: https://ru.wikipedia.org/wiki/%D0%A7%D0%B5%D0%BB%D0%BE%D0%B2%D0%B5%D0%BA_%D0%BF%D0%BE%D1%81%D0%B5%D1%80%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5
[3]: http://habrahabr.ru/post/252887/#habracut

[>] Можно ли верить коду в редакторе? + и в консоли
habra.14
habrabot(difrex,1) — All
2015-03-12 18:00:02




def maps():
print "maps maps maps"

def spam():
print "Erasing everything..."
print "done."


Вы знаете, что если очень долго смотреть на следующую строку, то там останутся только три слова «spam»?

s = "spam‮" ,spam ,"‬spam"
s[1]()


Действительно, первая строка очень необычная. В целом, в результате этого кода будет выполнена зловредная функция spam. [Посмотреть на ideone][1]. (Для тех кто не знает: там внизу есть вывод выполнившейся программы) [Читать дальше →][2]

[1]: http://ideone.com/GuSU4F
[2]: http://habrahabr.ru/post/252813/#habracut

[>] О том, как рисовать кривые графики в стиле XKCD
habra.15
habrabot(difrex,1) — All
2015-11-02 03:00:04


Недавно я публиковал статью на Хабре [про гитарный тюнер][1], и многих заинтересовали анимированные графики которые я использовал для иллюстрации звуковых волн, в том числе технология создания таких графиков. Поэтому в этой статье я поделюсь своим подходом и библиотечкой на Node.js которая поможет строить подобные графики.



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

[1]: http://habrahabr.ru/post/266471/
[2]: http://habrahabr.ru/post/269931/#habracut

[>] [Перевод] Атака Telegram за 2^64 операций, и почему суперзлодею она не нужна
habra.14
habrabot(difrex,1) — All
2015-03-12 18:30:02


Прошлой весной мы с Juliano Rizzo ([@julianor][1]) придумали криптографическую атаку на «секретный» чат MTProto из Telegram, которая может быть осуществлена приблизительно за 2^64 операций. Атака осуществляется с позиции [человека посередине][2] на серверах Telegram. Сообщения, отправляемые пользователям вне секретного чата, сохраняются на серверах Telegram таким образом, что позволяют компании просматривать содержимое сообщений и передавать их третьим лицам. Так происходит всегда, если беседы могут перемещаться между устройствами (например между телефоном и компьютером). Эти чаты не являются приватными, то есть пользователи должны быть очень внимательны, чтобы случайно не отправить инкриминирующую информацию или картинки без включения секретного чата. Групповые чаты к тому же вообще не используют ent-to-end шифрование. Более того, когда кто-нибудь входит в такой чат, он сразу получает доступ к ранее отправленным несекретным сообщениям. Мы к этому вернемся чуть позже. [Читать дальше →][3]

[1]: http://twitter.com/julianor
[2]: https://ru.wikipedia.org/wiki/%D0%A7%D0%B5%D0%BB%D0%BE%D0%B2%D0%B5%D0%BA_%D0%BF%D0%BE%D1%81%D0%B5%D1%80%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5
[3]: http://habrahabr.ru/post/252911/#habracut

[>] [Перевод] Как писать Go код, который легко портируется
habra.15
habrabot(difrex,1) — All
2015-11-02 11:00:03


_(Перевод статьи с советами о написании по-настоящему кросс-платформенного кода в Go)_ Go великолепно приспособлен для работы с разными платформами. Моя основная среда разработки на Windows, но я всегда работаю с Linux-системами. Поэтому я естественным образом пытаюсь избегать вещей, которые могут создать проблемы. ![][1] Моё отношение к кросс-платформенной разработке таково, что если вы себя считаете серьезным разработчиком, то ваш код должен, **как минимум, собираться на других платформах**, потому как даже если не все функции можно использовать везде, часть пользователей всё равно захочет хотя бы часть функционала вашей библиотеки на других платформах. Недавно я помогал делать Windows-версию очень приятной [программы для бекапов][2], так как хотел изучить альтернативы к [zpaq][3], очень хорошему архиватору с журналированием и фокусом на сжатие. Во время портирования я отметил несколько вещей, которые могут быть полезны другим. [Читать дальше →][4]

[1]: https://habrastorage.org/files/482/92d/cbd/48292dcbdda04ce98a2f8a40b2be03f8.png
[2]: https://github.com/restic/restic
[3]: http://mattmahoney.net/dc/zpaq.html
[4]: http://habrahabr.ru/post/269943/#habracut

[>] Простые Задачи и Функционально-Блондинистый Подход
habra.15
habrabot(difrex,1) — All
2015-11-02 12:30:03


![sad girl and lambda expression][1] Пару месяцев назад я взяла на себя обязательство по самопросвещению. Есть в иных конторах такая тема — сотрудника, раз в полгода ревьюят и говорят «давай к следующему ревью ты изучишь Spring, паттерны (какие?) и функциональное программирование!» Идея была бы неплоха если бы цели не ставили так размыто. Пропустим пока спринг и паттерны — на выходных я бросилась в атаку на ФП. Общие-туманные сведения о ФП у меня конечно были — анонимные классы в Java я писать умею — с похожими способностями Python и JavaScript знакома. Начну с простых упражнений на Scala — решила я. Выбрала Scala поскольку основной рабочий инструмент у нас Java — ну были еще варианты Clojure, Groovy и Java8 (что-то еще?) — но с ними авось попробую потом. Поставила себе цели (а правильно ли я ФП поняла?):

* Решать задачи в функциональном стиле
* Т.е. по возможности не использовать явных циклов и ветвлений
* А также избегать мутабельных коллекций и т.п.

Одни упражнения получались легко, другие мягко говоря не очень. Сейчас я попробую вкратце рассказать об этом — упорядочить новые познания. Трудно сказать, может ли эта статья кому-то в будущем помочь или, скорее, кто-то поможет мне самой, указав на ошибки или предложив улучшения. [Читать дальше →][2]

[1]: https://habrastorage.org/files/4e9/8c7/9db/4e98c79db6c54e228452ed7100632f0b.png
[2]: http://habrahabr.ru/post/269955/#habracut

[>] [Из песочницы] Ошибка в формуле проверки условия Делоне
habra.14
habrabot(difrex,1) — All
2015-03-12 20:30:02




#### Введение

Ранним воскресным утром я уже третий день сидел за отладкой программы для триангуляции результата лазерного сканирования. Лазерный скан представляет из себя набор трехмерных точек. В результате работы программы нужно объединить точки в непересекающиеся полигоны, таким образом создав модель поверхности. Функцию за функцией я пересчитывал на листочке и, наконец, добрался до функции проверки выполнения [условия Делоне][1]. По всей видимости, ошибка затаилась где-то в ней. При детальном разборе оказалось, что формула, указанная в огромном количестве книг про триангуляцию Делоне, не всегда дает верный результат. Подробности под катом. ![image][2] [Читать дальше →][3]

[1]: https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B8%D0%B0%D0%BD%D0%B3%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_%D0%94%D0%B5%D0%BB%D0%BE%D0%BD%D0%B5
[2]: http://www.pandia.ru/wp-content/uploads/2010/12/wpid-image0183.jpg
[3]: http://habrahabr.ru/post/252925/#habracut

[>] Можно ли верить коду в редакторе? bi-directional текст
habra.14
habrabot(difrex,1) — All
2015-03-12 22:00:02




def maps():
print "maps maps maps"

def spam():
print "Erasing everything..."
print "done."


Вы знаете, что если очень долго смотреть на следующую строку, то там останутся только три слова «spam»?

s = "spam‮" ,spam ,"‬spam"
s[1]()


Действительно, первая строка очень необычная. В целом, в результате этого кода будет выполнена зловредная функция spam. [Посмотреть на ideone][1]. (Для тех кто не знает: там внизу есть вывод выполнившейся программы) [Читать дальше →][2]

[1]: http://ideone.com/GuSU4F
[2]: http://habrahabr.ru/post/252813/#habracut

[>] [Из песочницы] Звуковые отпечатки: распознавание рекламы на радио
habra.14
habrabot(difrex,1) — All
2015-03-13 01:00:03


Из этой статьи вы узнаете, что распознавание даже коротких звуковых фрагментов в зашумленной записи — вполне решаемая задача, а прототип так вообще реализуется за 30 строчек кода на Python. Мы увидим, как тут помогает преобразование Фурье, и наглядно посмотрим, как работает алгоритм поиска и сопоставления отпечатков. Статья будет полезна, если вы сами хотите написать подобную систему, или вам интересно, как она может быть устроена. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/252937/#habracut

[>] Лекции Технопарка: мастер-класс Алексея Рыбака «Про то, что я бы хотел, чтобы мне рассказали, пока я учился»
habra.15
habrabot(difrex,1) — All
2015-11-02 14:30:03


Сегодня мы начинаем серию публикаций новых мастер-классов Технопарка. И первая из них — мастер-класс Алексея Рыбака на свободную тему, в котором он поделился со студентами соображениями о том, чем работа в реальной жизни отличается от учебы. Видео смотрите на [нашем сайте][1], а адаптированную расшифровку — ниже. Я работаю в компании Badoo достаточно долго, и на моих глазах этот проект из маленького стартапа превратился в большую компанию с сотнями инженеров и тысячным парком серверов, распределенных по нескольким дата-центрам. Сейчас я хотел бы рассказать о том, что считаю достаточно интересным для студентов, выбравших профессию программиста. Не буду рассказывать о современных трендах и о том сегодня важно и нужно — об этом вам многие могут рассказать. Вместо этого поговорим о некой общечеловеческой адаптации бывших студентов к работе, которую каждый человек проходит в течение одного, а порой и нескольких лет. Процесс этот достаточно болезненный, и далеко не все «правильно» проходят эту адаптацию. Именно эта тема должна больше интересовать студентов и выпускников, чем какие-то модные технологические фишки. Хотя о них мы тоже поговорим, когда коснемся темы самообразования.



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

[1]: https://it.mail.ru/video/202/
[2]: http://habrahabr.ru/post/269687/#habracut

[>] лжеотождествление электровиолончели
habra.14
habrabot(difrex,1) — All
2015-03-13 09:30:03


Когда Алексей [TheShade][1] Шипилёв [рассказывал][2] про особенности поведения Java-строк с нулевым значением хэшкода, он приводил в качестве примера строку `"лжеотождествление электровиолончели"`. Когда FindBugs [предупреждает][3] вас о проблемах с вычислением абсолютного значения хэшкода, равного Integer.MIN\_VALUE, он приводит примеры строк, имеющих такой хэшкод — `"polygenelubricants"` или `"DESIGNING WORKHOUSES"`. Откуда взялись эти примеры? Как самому составить красивую строку с заданным наперёд хэшкодом? Различных хэшкодов существует 2 — немногим более четырёх миллиардов, а слов в человеческом языке — порядка ста тысяч. Найти одно слово с нужным хэшкодом почти нереально, а вот сочетание из двух слов вполне можно. Если добавить ещё вариации вроде предлогов, то появится выбор. Перебирать все возможные комбинации долго, но можно процесс оптимизировать, выполнив несложные преобразования над формулой хэшкода строки. Давайте напишем генератор словосочетаний с заданным хэшкодом. Писать будем на чистой Java 8, в модном нынче функциональном стиле. [Читать дальше →][4]

[1]: http://habrahabr.ru/users/theshade/
[2]: http://shipilev.net/talks/joker-Oct2014-string-catechism.pdf
[3]: http://findbugs.sourceforge.net/bugDescriptions.html#RV_ABSOLUTE_VALUE_OF_HASHCODE
[4]: http://habrahabr.ru/post/252671/#habracut

[>] Google Code закрывается и предлагает всем перейти на GitHub
habra.14
habrabot(difrex,1) — All
2015-03-13 09:30:03


Всем владельцам проектов на Google Code пришло соответствующее письмо. Сокращенный перевод новости:

> Начиная с сегодняшнего дня, мы прекращаем возможность создания новых проектов на Google Code. Сервис будет закрыт примерно через 10 месяцев к 25 января 2016 года. Ниже перечислены ссылки на инструменты миграции, спроектированные для того, чтобы помочь вам перенести ваши проекты.
>
>
>
>
>
> Сроки:
>
>
>
> 12 Марта, 2015 — Создание новых проектов отключено.
>
>
>
> 24 Августа, 2015 — Переход в режим «только для чтения».
>
>
>
> 25 Января, 2016 — Закрытие сервиса. Будет доступно скачивание архива проекта включая исходный код, багтрекер и вики. Архив будет доступен до конца 2016 года.
>
>
>
>
>
> Гугл будет продолжать предоставлять Git и Gerrit хостинг для таких проектов как Android и Chrome. Мы по-прежнему будем поддерживать зеркала таких проектов, как Eclipse, kernel.org и другие.
>
>

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

[1]: http://habrahabr.ru/post/252949/#habracut

[>] [Из песочницы] Разноцветные терминалы
habra.15
habrabot(difrex,1) — All
2015-11-02 14:30:03


![][1] В этой публикации я расскажу о некоторых трюках, которые украсят будни любого системного администратора Linux (и не только). Все они связаны с переменной PS1 оболочки bash. Переменная PS1 определяет, как будет выглядеть приглашение для ввода новых команд. И каждый пользователь может переопределять её как пожелает, например, в файле ~/.bashrc (который выполняется при запуске bash и используется для в том числе для конфигурации). Для начала рассмотрим простой вариант, мой любимый формат командной строки. [Читать дальше →][2]

[1]: https://habrastorage.org/files/0ba/d03/648/0bad03648fd646ccb06a74a71be41aa8.png
[2]: http://habrahabr.ru/post/269967/#habracut

[>] [Перевод] 3/14/15 9:26:53 Празднование «Дня числа Пи» века, а также рассказ о том, как получить свою очень личную частичку числа пи
habra.14
habrabot(difrex,1) — All
2015-03-13 11:30:02






_Перевод поста Стивена Вольфрама (Stephen Wolfram) "[Pi or Pie?! Celebrating Pi Day of the Century (And How to Get Your Very Own Piece of Pi)][1]" Выражаю огромную благодарность тем, кто помог мне сделать этот перевод: [Курбану Магомедову][2] и [Ольге Лавренюк][3]._ Эта суббота будет «Днем числа Пи» века. Дата [3/14/15][4] в формате месяц/день/год задает первые цифры числа [π=3.1415…][5] А 9:26:53.589… утра будет «супер моментом дня числа Пи».



Благодаря [_Mathematica_][6] и [Wolfram|Alpha][7], я уверен, что [наша компания][8] выдала миру больше раз число π, чем какая-либо другая организация в истории. Поэтому, конечно, мы должны сделать [нечно особенное][9] (мероприятие SXSW) для этого особенного Дня числа Пи. [][10]



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

[1]: http://blog.wolfram.com/2015/03/12/pi-or-pie-celebrating-pi-day-of-the-centuryand-how-to-get-your-very-own-piece-of-pi/
[2]: http://vk.com/iamkurban
[3]: http://vk.com/lav_olga
[4]: http://www.wolframalpha.com/input/?i=3%2F14%2F15
[5]: http://www.wolframalpha.com/input/?i=pi
[6]: http://www.wolfram.com/mathematica/
[7]: http://www.wolframalpha.com/
[8]: http://www.wolfram.com/
[9]: http://schedule.sxsw.com/2015/events/event_OE03834
[10]: http://schedule.sxsw.com/2015/events/event_OE03834
[11]: http://habrahabr.ru/post/252947/#habracut

[>] [Перевод] Введение в fetch
habra.14
habrabot(difrex,1) — All
2015-03-13 11:30:03




# Прощай, XMLHttpRequest!

`fetch()` позволяет вам делать запросы, схожие с XMLHttpRequest (XHR). Основное отличие заключается в том, что Fetch API использует [Promises (Обещания)][1], которые позволяют использовать более простое и чистое API, избегать катастрофического количества callback'ов и необходимости помнить API для XMLHttpRequest. [Читать дальше →][2]

[1]: http://habrahabr.ru/post/209662/
[2]: http://habrahabr.ru/post/252941/#habracut

[>] «Что нового в Swift 2?» на примерах. Часть 2
habra.15
habrabot(difrex,1) — All
2015-11-02 15:00:04


В [первой части][1] мы рассмотрели лишь часть новых возможностей Swift 2:

* фундаментальные конструкции языка, такие, как , scoping (область действия), синтаксис аргументов и т.д.
* сопоставление с образцом (**pattern matching**)
* управление ошибками (**error handling**)

Во второй части мы рассмотрим оставшиеся:

* расширения (**extensions**) протокола
* проверка доступности (**availability checking**)
* взаимодействие с** Objective-C** и **С**

Я буду рассматривать новые возможности Swift 2, сопровождая их примерами, код которых находится на [Github][2]. [Читать дальше →][3]

[1]: http://habrahabr.ru/post/269171/
[2]: https://github.com/BestKora/WhatsNewInSwift2
[3]: http://habrahabr.ru/post/269719/#habracut

[>] Лжеотождествление электровиолончели
habra.14
habrabot(difrex,1) — All
2015-03-13 11:30:03


Когда Алексей [TheShade][1] Шипилёв [рассказывал][2] про особенности поведения Java-строк с нулевым значением хэшкода, он приводил в качестве примера строку `"лжеотождествление электровиолончели"`. Когда FindBugs [предупреждает][3] вас о проблемах с вычислением абсолютного значения хэшкода, равного Integer.MIN\_VALUE, он приводит примеры строк, имеющих такой хэшкод — `"polygenelubricants"` или `"DESIGNING WORKHOUSES"`. Откуда взялись эти примеры? Как самому составить красивую строку с заданным наперёд хэшкодом? Различных хэшкодов существует 2 — немногим более четырёх миллиардов, а слов в человеческом языке — порядка ста тысяч. Найти одно слово с нужным хэшкодом почти нереально, а вот сочетание из двух слов вполне можно. Если добавить ещё вариации вроде предлогов, то появится выбор. Перебирать все возможные комбинации долго, но можно процесс оптимизировать, выполнив несложные преобразования над формулой хэшкода строки. Давайте напишем генератор словосочетаний с заданным хэшкодом. Писать будем на чистой Java 8, в модном нынче функциональном стиле. [Читать дальше →][4]

[1]: http://habrahabr.ru/users/theshade/
[2]: http://shipilev.net/talks/joker-Oct2014-string-catechism.pdf
[3]: http://findbugs.sourceforge.net/bugDescriptions.html#RV_ABSOLUTE_VALUE_OF_HASHCODE
[4]: http://habrahabr.ru/post/252671/#habracut

[>] Виртуальный сетевой интерфейс
habra.15
habrabot(difrex,1) — All
2015-11-02 19:30:03


Общеизвестно, что драйверы Linux — это модули ядра. Все драйверы являются модулями, но не все модули — драйверы. Примером одной из таких групп модулей, не являющихся драйверами, и гораздо реже появляющиеся в обсуждениях, являются сетевые фильтры на различных уровнях сетевого стека Linux. Иногда, и даже достаточно часто, хотелось бы иметь сетевой интерфейс, который мог бы оперировать с трафиком любого другого интерфейса, но каким-то образом дополнительно «окрашивать» этот трафик. Такое может понадобится для дополнительного анализа, или контроля трафика, или его шифрования, … Идея крайне проста: канализировать трафик уже существующего сетевого интерфейса во вновь создаваемый интерфейс с совершенно другими характеристиками (имя, IP, маска, подсеть, …). Один из способов выполнения таких действий в форме модуля ядра Linux мы и обсудим (он не единственный, но другие способы мы обсудим отдельно в другой раз). [Читать дальше →][1]

[1]: http://habrahabr.ru/post/269987/#habracut

[>] Do good code: 8 правил хорошего кода
habra.15
habrabot(difrex,1) — All
2015-11-02 20:30:04


Практически всем, кто обучался программированию, известна книга Стива Макконнелла «Совершенный код». Она всегда производит впечатление, прежде всего, внушительной толщиной (около 900 страниц). К сожалению, реальность такова, что иногда впечатления этим и ограничиваются. А зря. В дальнейшей профессиональной деятельности программисты сталкиваются практически со всеми ситуациями, описанными в книге, и приходят опытным путём к тем же самым выводам. В то время как более тесное знакомство могло бы сэкономить время и силы. Мы в [GeekBrains][1] придерживаемся комплексного подхода в обучении, поэтому провели для слушателей вебинар по правилам создания хорошего кода. [][2]



В комментариях к нашему первому [посту][3] на Хабре пользователи активно обсуждали каналы восприятия информации. Мы подумали и решили, что тему «совершенного кода» стоит развить и изложить ещё и письменно — ведь базовые принципы хорошего кода едины для программистов, пишущих на любом языке. [Читать дальше →][4]

[1]: http://geekbrains.ru/?utm_source=habrahabr&utm_medium=affiliate&utm_campaign=habrahabr_02.11.15
[2]: http://habrahabr.ru/company/geekbrains/blog/270001/
[3]: http://habrahabr.ru/company/geekbrains/blog/268741/
[4]: http://habrahabr.ru/post/270001/#habracut

[>] Python Meetup 25.09.2015: мониторинг производительности и использование BDD
habra.15
habrabot(difrex,1) — All
2015-11-02 20:30:04


Всем привет! С небольшой задержкой публикуем видео с сентябрьского Python Meetup. В этот раз, в рамках докладов мы обсудили:

* Мониторинг производительности веб-приложения на Python с использованием pinba + graphite + tessera
* ​Использование BDD в разработке на Python

Также участники сообщества обсудили несколько актуальных Python'овских тем в рамках Lightning Talk. Записи всех выступлений вы найдете под катом. ![][1] [Читать дальше →][2]

[1]: https://habrastorage.org/files/86a/383/b0a/86a383b0a9584b62b1dc193bdd00a57d.jpg
[2]: http://habrahabr.ru/post/269957/#habracut

[>] [Перевод] Создание пакетов APK x86 и ARM APK с помощью компилятора Intel® и GNU gcc
habra.14
habrabot(difrex,1) — All
2015-03-13 13:00:02


Существуют устройства Android на процессорах с архитектурами наборов инструкций (ISA) ARM или x86. Различные архитектуры наборов инструкций не имеют двоичной совместимости, поэтому приложение, содержащее нативный код, должно содержать нативные библиотеки для каждой архитектуры. Одним из механизмов распространения таких приложений являются так называемые «толстые» пакеты приложений Android («толстые» APK). В этой статье содержатся пошаговые инструкции по созданию такого «толстого» пакета APK, включающего независимые от архитектуры файлы для виртуальной машины Dalvik (Dalvik, 2013), а также библиотеки для разных архитектур. В статье описывается сборка нативной библиотеки приложения x86 с помощью Intel® Integrated Native Developer Experience (INDE). [Читать дальше →][1]

[1]: http://habrahabr.ru/post/252883/#habracut

[>] [Из песочницы] Практические аспекты использования DHCP relay+option82
habra.14
habrabot(difrex,1) — All
2015-03-13 13:00:03


В этой статье я хотел бы осветить практические аспекты использования **DHCP relay+option82**_ как возможность авторизации (в дальнейшем именно эта связка будет иметься ввиду)_, а так же привести примеры конфигурации свитча **Dlink DES-3200-10** и **isc-dhcp-server**. Практически во всех статьях dhcp relay трактуют так: «можно вынести dhcp-сервер за пределы широковещательного домена». Однако почему-то не упоминают или почти не упоминают, что это хорошая возможность избавиться от широковешательных запросов в пределах того же самого широковешательного домена. И самое главное, на что акцентирую внимание — мы можем быть уверены, благодаря option82, что запрос пришёл именно со свитча с заданным маком и именно с порта с указанным номером, а следовательно — таким образом можно «авторизовать» пользователя. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/252929/#habracut

[>] [Перевод] Как получить статус суперпользователя с помощью уязвимости DRAM: Техника Rowhammer
habra.14
habrabot(difrex,1) — All
2015-03-13 15:00:02


![][1] Исследователи информационной безопасности из Google создали эксплойт, который эксплуатирует физические слабости чипов DDR-памяти определенных типов, для повышения прав не-доверенных пользователей на Intel-совместимых компьютерах, работающих под Linux. В [посте][2] в блоге проекта Project Zero специалисты Google описали технику эксплуатации уязвимости, которая заключается в изменении значений отдельных битов данных (bit flipping), хранящихся в модулях чипов DDR3, которые называют DIMM. В прошлом году исследователи [доказали][3], что подобная подмена битов может быть осуществлена с помощью воздействия на небольшие участки памяти, которое приводит к изменению хранящихся там данных. Представители Google показали, как все это может быть использовано для реальной атаки. [Читать дальше →][4]

[1]: //habrastorage.org/files/bc2/111/6d2/bc21116d2b5a4bbf83adf2e3f6d6594f.jpg
[2]: http://googleprojectzero.blogspot.com/2015/03/exploiting-dram-rowhammer-bug-to-gain.html
[3]: http://users.ece.cmu.edu/~yoonguk/papers/kim-isca14.pdf
[4]: http://habrahabr.ru/post/252991/#habracut

[>] [Из песочницы] Бунт против виртуальной машины
habra.15
habrabot(difrex,1) — All
2015-11-02 20:30:04


_Предлагаю вашему вниманию перевод статьи [Rage Against the Virtual Machine][1]._ Антивирусные компании, магазины мобильных приложений и исследователи безопасности используют техники, основанные на динамическом анализе кода, для обнаружения и анализа мобильных вредоносных приложений. В этот статье, представлен широкий диапазон техник противодействия анализу, которые могут быть использованы вредоносными приложения для обхода динамического анализа в эмулируемые средах платформы Android. Эвристики обнаружения, представленные в этой статье, охватывают три различные категории, основанные на (i) статических свойствах, (ii) динамической информации от датчиков и (iii) тонкостях работы эмулятора Android на виртуальных машинах. Для оценки эффективности представленных методов они были включены в образцы реальных вредоносных приложений и отправлены в публично доступные системы динамического анализа, после чего были получены тревожные результаты. Было обнаружено, что все инструменты и сервисы уязвимы для большинства наших техник уклонения от анализа. Даже тривиальные техники, такие как проверка значения IMEI, достаточны для обхода некоторых существующих сред динамического анализа. Также предложены возможные контрмеры для улучшения устойчивости текущих инструментов динамического анализа против попыток уклонения от анализа. [Читать дальше →][2]

[1]: http://dl.acm.org/citation.cfm?id=2592796
[2]: http://habrahabr.ru/post/269999/#habracut

[>] Туториал по Coub API
habra.14
habrabot(difrex,1) — All
2015-03-13 16:30:02


На днях мы выпустили [Coub API][1]. Теперь можно делать приложения, смотреть ленту, лайкать, рекобить, то есть практически все, что можно сделать на сайте, можно делать через API. Но самое главное — теперь можно из сторонних приложений через API создавать кобы. В этом туториале я покажу, как можно сделать простейший клиент коба на Ruby on Rails. Приложение позволяет залогиниться через коб и сгенерить такой коб с любым текстом:




Рабочая версия этого приложения лежит по адресу [fantozzi.dev2.workisfun.ru][2], код приложения из этого туториала можно посмотреть на Гитхабе: [github.com/igorgladkoborodov/memegenerator][3] [Подробности][4]

[1]: http://coub.com/dev/docs/Coub+API/Overview
[2]: http://fantozzi.dev2.workisfun.ru
[3]: https://github.com/igorgladkoborodov/memegenerator
[4]: http://habrahabr.ru/post/252803/#habracut

[>] [Из песочницы] Эксплуатируем root-уязвимость в роутерах Asus
habra.14
habrabot(difrex,1) — All
2015-03-13 19:30:02


В начале 2015 года компания Asus исправила критичнейшую уязвимость в своих роутерах. «Дыра» была в службе по имени _infosvr_, использующейся утилитами Asus для облегчения настройки роутера путём его автоматического обнаружения в локальной сети. Уязвимость позволяла выполнять любые команды с правами root (ведь _infosvr_ тоже _root_), что давало злоумышленнику полный контроль над системой. Но Asus выпустила исправленные прошивки. Теперь это всё в прошлом. Или нет? Хм… А как часто обыватели обновляют прошивки на своих роутерах? ![][1] Прошу под кат за подробностями, историей обнаружения, исследованиями, инструкциями и… эксплоитами. [Читать дальше →][2]

[1]: //habrastorage.org/files/b44/66e/905/b4466e90541a4ab68f04b80e07cf6417.jpg
[2]: http://habrahabr.ru/post/253013/#habracut

[>] Как крадут деньги, которых нет. Или кое-что новенькое о криптовалютах
habra.14
habrabot(difrex,1) — All
2015-03-13 22:00:03


Привет, Хабр! Безусловно, ты знаешь о криптовалютах очень много, но сегодня мы принесли тебе кое-что новенькое: исследование вредоноса, созданного для кражи кошельков 80 криптовалют, включая биткойн вместе со всеми реквизитами доступа к ним. Обнаружили мы его в ходе программы непрерывного мониторинга безопасности сети Интернет и тут же разобрали на запчасти несколько семплов вредоноса. Таких комбайнов по автоматизированному уводу криптокошельков у владельцев пока мало, но будет больше, мы уверены. Ниже мы расскажем о том, как вредонос работает, и как не оказаться в группе риска. И конечно ещё раз просуммируем информацию о самих криптомонетах и их родственниках. Кстати, финансовые регуляторы считают биткойн и всех его друзей валютными суррогатами, и мы ни в коем случае не пропагандируем их использование, а наоборот, призываем пользоваться фиатными деньгами как надёжным и стабильным платёжным инструментом. (Тут мог бы быть смайл) [Читать дальше →][1]

[1]: http://habrahabr.ru/post/252963/#habracut

[>] [Перевод] Последовательности в Perl 6 / Rakudo
habra.14
habrabot(difrex,1) — All
2015-03-14 04:00:03


В Perl 6 введён новый оператор … для задания последовательностей. Вот, как это работает:

my @even-numbers := 0, 2 ... *; # арифметическая последовательность
my @odd-numbers := 1, 3 ... *;
my @powers-of-two := 1, 2, 4 ... *; # геометрическая последовательность


Пример использования:

> my @powers-of-two := 1, 2, 4 ... *; 1;
1
> @powers-of-two[^10]
1 2 4 8 16 32 64 128 256 512


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

[1]: http://habrahabr.ru/post/253047/#habracut

[>] Метаоператоры X и Z в Perl 6
habra.14
habrabot(difrex,1) — All
2015-03-15 01:00:03


Одна из новых идей Perl 6 – метаоператор. Это оператор, который можно скомбинировать с обычным оператором, изменив его поведение. Таких метаоператоров есть несколько штук, но в этой статье мы рассмотрим только X и Z. Оператор X вы могли видеть в роли инфиксного комбинирования. Он комбинирует списки, по элементу из каждого, во всех возможных комбинациях:

> say ((1, 2) X ('a', 'b')).perl
((1, "a"), (1, "b"), (2, "a"), (2, "b"))


Однако, запись `infix: `. И действительно, можно написать:

> say ((1, 2) X, (10, 11)).perl
((1, 10), (1, 11), (2, 10), (2, 11))


Что произойдёт, если мы применим Х к другому инфиксному оператору? Например, к `infix: ` [Читать дальше →][1]

[1]: http://habrahabr.ru/post/253077/#habracut

[>] [Перевод] Использовать наши программы весело
habra.14
habrabot(difrex,1) — All
2015-03-15 01:30:02


Эти два вымышленных парня сильно повлияли на меня в плане программирования: [![image][1]][2] Вместо предоставления гарантий на совместимость или безошибочную работу, софт от Братьев Бигл обещал кое-что другое: веселье. [![image][3]][4] Игры со странными дискетами от Братьев Бигл на компьютере Apple II в средней школе, и «шведский стол» всяческих программ, которые были написаны для них, стали для меня обрядом посвящения. [Читать дальше →][5]

[1]: http://blog.codinghorror.com/content/images/2015/03/beagle_bros_micro_software_.png
[2]: http://en.wikipedia.org/wiki/Beagle_Bros
[3]: http://blog.codinghorror.com/content/images/2015/03/beagle-bros-statement-of-quality.png
[4]: http://stevenf.com/beagle-collection/
[5]: http://habrahabr.ru/post/253083/#habracut

[>] [Перевод] Создание объектов унаследованных от null на Node.js
habra.14
habrabot(difrex,1) — All
2015-03-15 14:30:02


_От переводчика: поприще переводчика для меня ново, по этому прошу вас не судить строго._ Когда-то, читав [Принципы Объектно-ориентированного _JavaScript_ за авторством _Nicholas Zakas_][1], я наткнулся на совет об использовании **Object.create()**, для создания объектов унаследованных от **null.** Такой объект не унаследует **Object.prototype** и, соответственно, не будет иметь его, **Object.prototype**, методов. _Zakaz_ предположил, что это может быть использовано для создания безопасного объекта «_cache_». Мне очень понравилась эта идея, но в соответствии с _MDN_ (_Mozilla Developer Network_), **Object.create()** не поддерживается до _IE9_, что делает этот метод более требовательным при использовании в браузере. Но в _Node.js_, на сервере, этот метод поддерживается полностью. [Читать дальше →][2]

[1]: http://www.bennadel.com/blog/2599-the-principles-of-object-oriented-javascript-by-nicholas-zakas.htm
[2]: http://habrahabr.ru/post/253051/#habracut

[>] Перевод книги «Выразительный Javascript» в pdf
habra.14
habrabot(difrex,1) — All
2015-03-15 16:30:05


![][1]Хабр, привет. Не так давно [SLY\_G][2] опубликовал цикл переводов книги Eloquent Javascript (за что ему большое спасибо). В комментариях раз за разом поднимались вопросы о сборке переводов книгу, что собственно я и сделал при помощи сервиса Gitbook- [Выразительный Javascript][3], pdf, ePub, mobi и онлайн версия. [Репозитарий книги][4], pull requests принимаются. [Читать дальше →][5]

[1]: //habrastorage.org/files/cee/5d0/2cf/cee5d02cfbcf4348882dcfe77ac619bf.png "Выразительный Javascript"
[2]: http://habrahabr.ru/users/sly_g/
[3]: http://karmazzin.gitbooks.io/eloquentjavascript_ru/
[4]: https://github.com/karmazzin/eloquentjavascript_ru
[5]: http://habrahabr.ru/post/253101/#habracut

[>] Лекции Технопарка. 1 семестр. С/С++
habra.14
habrabot(difrex,1) — All
2015-03-15 17:30:02


Мы продолжаем наши еженедельные публикации учебных материалов Технопарка. Предыдущие лекции были посвящены [web-технологиям][1] в целом, а также [алгоритмам и структурам данных][2]. В третьем блоке лекций рассказывается о языках С и С++.

#### **Лекция 1. Язык С. Основы организации и использования оперативной и сверхоперативной памяти**

Лекция начинается с введения в язык С: рассказывается об истории его появления, особенностях, преимуществах и недостатках, о сферах применения. Описываются основы препроцессорной обработки, рассматриваются вопросы управления памятью (модели управления памятью, области видимости объектов хранения) и производительность программ на языке С. Обсуждается связывание объектов хранения и их инициализация. Затем рассказывается о классах памяти в языке С. Следующая часть лекции посвящена проблематике указателей, а также работе с одномерными массивами. В заключение рассматривается стандарт POSIX и вопросы переносимости.




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

[1]: http://habrahabr.ru/company/mailru/blog/248745/
[2]: http://habrahabr.ru/company/mailru/blog/251561/
[3]: http://habrahabr.ru/post/253095/#habracut

[>] Использование gitlab continuous integration для деплоя
habra.15
habrabot(difrex,1) — All
2015-11-03 10:30:05


![][1]Совсем недавно гитлаб героически выкатил версию 8.0 своего конкурента гитхабу. Из интересного — движок continuous integration теперь встроен в платформу, а значит доступен в качестве бесплатного сервиса для всех желающих на [gitlab.com][2]. Совместно с бесплатными приватными репозиториями это делает облачный сервис гитлаб не только удобным местом для хранения кода, но также тестирования и деплоя. О последнем я и расскажу под катом. [Осторожно, под катом - много англицизмов!][3]

[1]: https://habrastorage.org/files/9dd/2f3/59f/9dd2f359f764498f94005cddb4f960b5.png
[2]: http://gitlab.com
[3]: http://habrahabr.ru/post/269473/#habracut

[>] [Перевод] Service Locator нарушает инкапсуляцию
habra.15
habrabot(difrex,1) — All
2015-11-03 11:00:03


_Service Locator нарушает инкапсуляцию в статически типизированных языках, потому что этот паттерн нечётко выражает предусловия._ Лошадь уже давно мертва, но некоторые до сих пор хотят на ней поездить, так что я пну эту лошадь ещё раз. Годами я предпринимал попытки объяснить почему [Service Locator это антипаттерн][1] (например, он [нарушает SOLID][2]), но недавно меня осенила мысль, что большая часть моих аргументов фокусировалась на _симптомах_, упуская из внимания фундаментальную проблему. [Читать дальше →][3]

[1]: http://blog.ploeh.dk/2010/02/03/ServiceLocatorisanAnti-Pattern
[2]: http://blog.ploeh.dk/2014/05/15/service-locator-violates-solid
[3]: http://habrahabr.ru/post/270005/#habracut

[>] Age of JIT compiling. Part II. CLR is watching you
habra.14
habrabot(difrex,1) — All
2015-03-15 18:30:03


Продолжая [тему JIT-компиляции][1] .NET'a, сегодня мы рассмотрим диспетчеризацию методов у интерфейсов, generics (как классов, так и отдельных методов вместе с реальными сигнатурами); производить отладку релизных сборок с оптимизациями; разберемся с истинным предназначением типа System.\_\_Canon (это не то, что Вы подумали). [Читать дальше →][2]

[1]: http://habrahabr.ru/post/248775/
[2]: http://habrahabr.ru/post/253105/#habracut

[>] [recovery mode] 10 относительно честных способов взломать почту
habra.15
habrabot(difrex,1) — All
2015-11-03 13:30:04


Как известно, Остап Бендер знал [400 относительно честных способов отъема денег][1]. Мы, к сожалению, таким богатством похвастаться не можем, однако с десяток постараемся набрать. Напомним, [в первой части][2] нашего цикла о защите электронной почты были рассмотрены методы защиты. Вторая часть посвящена взлому. В этой статье мы не только расскажем теорию, но и покажем практику взлома. Методы взлома почты показываются сугубо из академических соображений, и мы не несем ответственности за противоправные действия, совершенные третьими лицами после прочтения данной статьи. Цель статьи — показать пользователям и администраторам возможные варианты взлома, чтобы знать, как от них защититься. Мы проверили описанные в статье методы на наших сотрудниках и полученными результатами были весьма удивлены. Поэтому данную статью можно рассматривать как руководство для администратора по проверке безопасности электронной почты на предприятии. ![][3] [Читать дальше →][4]

[1]: https://www.youtube.com/watch?v=C7GAbrGisEc
[2]: http://habrahabr.ru/company/cybersafe/blog/269513/
[3]: https://habrastorage.org/files/3df/032/0b3/3df0320b362b43b78b6e76e8e3613cca.jpg
[4]: http://habrahabr.ru/post/269829/#habracut

[>] Включение BitLocker на серверах Exchange
habra.15
habrabot(difrex,1) — All
2015-11-03 13:30:04


Оптимальная с точки зрения безопасности архитектура Exchange как для Exchange Server 2013, так и для Exchange Server 2016 рекомендует включать BitLocker на фиксированных дисках с данными, которые хранят файлы баз данных Exchange. Чтобы, настроить шифрование дисков сначала определим: [Читать дальше →][1]

[1]: http://habrahabr.ru/post/270015/#habracut

[>] Стеганография в XXI веке. Цели. Практическое применение. Актуальность
habra.14
habrabot(difrex,1) — All
2015-03-15 23:30:03


Я думаю каждый хоть раз слышал о стеганографии. Стеганография (τεγανός — скрытый + γράφω — пишу, дословно ** и я хотел бы обсудить следующие вопросы:

1. **Цели стеганографии** — на самом деле их три, а не одна.
2. **Практическое применение стеганографии** — я насчитал 15.
3. **Место стеганографии в XXI веке** — я считаю, что с технической точки зрения современный мир уже подготовлен, но _«социально»_ стеганография пока «запаздывает».

Я постарался обобщить мои исследования по данному вопросу. (Это значит, что текста много) Надеюсь на разумную критику и советы со стороны хабросообщества. [Осторожно. Много текста.][11]

[1]: http://habrahabr.ru/post/187402/
[2]: http://habrahabr.ru/post/60726/
[3]: http://habrahabr.ru/post/112976/
[4]: http://habrahabr.ru/post/128327/
[5]: http://habrahabr.ru/post/234877/
[6]: http://patents.com/search?top_keyword=steganography&keyword=steganography
[7]: http://www.freepatent.ru/search?searchid=2002563&text=%D1%81%D1%82%D0%B5%D0%B3%D0%B0%D0%BD%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F&web=0#
[8]: http://www.freshpatents.com/-dt20150305ptan20150059438.php
[9]: https://yadi.sk/i/Ge-OfBM-fGW8d
[10]: //habrastorage.org/files/154/871/302/154871302a1347e9b09233b61acb06da.jpeg
[11]: http://habrahabr.ru/post/253045/#habracut

[>] Сделаем код чище: Что можно исправить в ядре Linux
habra.14
habrabot(difrex,1) — All
2015-03-16 00:00:02


Наверняка многие хотели бы попробовать что-то изменить в ядре Linux к лучшему, но не знают с чего начать. Я хочу описать несколько проблем, исправить которые под силу каждому, и на примере показать путь от нахождения проблемы до опубликования её исправления в списке рассылки. По ходу повествования читатель познакомится с некоторыми вспомогательными утилитами. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/253123/#habracut

[>] Эксплоит на миллион. У нас есть победитель
habra.15
habrabot(difrex,1) — All
2015-11-03 14:00:03


В продолжении [этой статьи][1] стоит упомянуть, что вчера в [твиттере][2] компании Zerodium появилась информация об успешной реализации эксплоита (представляющего из себя непривязанный джейлбрейк) для версий iOS 9.1/9.2b. Неизвестная группа хакеров получила обещанный 1 миллион долларов за эксплоит, который (по условиям баг-баунти) должен позволять злоумышленнику удаленно устанавливать произвольное ПО на устройства под управлением iOS 9, то есть в том числе на новые iPhone 6s и iPad. Кроме того атака должна проходить через браузеры Safari, Chrome, через текстовое или мультимедийное сообщение, bluetooth и NFC. [][3]

[1]: http://habrahabr.ru/company/eset/blog/267357/
[2]: https://twitter.com/Zerodium
[3]: http://habrahabr.ru/post/270065/#habracut

[>] [Перевод] Технические собеседования: советы
habra.15
habrabot(difrex,1) — All
2015-11-03 15:30:02


Привет, Хабр! У команды [Хекслета][1] немало опыта проведения технических собеседований. Мы делились опытом и советами в вебинаре «[Собеседования: взгляд со стороны работодателя][2]». А сегодня публикуем перевод статьи с советами от компании, которая помогает людям готовиться к собеседованиям. От себя хочу добавить, что не смотря на полезность этих советов, если описанный здесь человек — это не вы, то не нужно стараться эмулировать его. [Читать дальше →][3]

[1]: https://ru.hexlet.io/?utm_source=habr&utm_medium=blog&utm_campaign=interview
[2]: https://github.com/Hexlet/webinars/wiki/4-%E2%80%94-%D0%A1%D0%BE%D0%B1%D0%B5%D1%81%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F:-%D0%B2%D0%B7%D0%B3%D0%BB%D1%8F%D0%B4-%D1%81%D0%BE-%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D1%8B-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BE%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8F
[3]: http://habrahabr.ru/post/270057/#habracut

[>] Результаты Radare Summer of Code 2014 и организация нового RSoC/GSoC 2015
habra.14
habrabot(difrex,1) — All
2015-03-16 04:00:02


Во-первых, хочу отчитаться по прошлому [RSoC'14][1], поблагодарить аудиторию хабра за ту помощь, позволившую нам организовать это мероприятие. Благодаря тому, что не было необходимости следовать правилам Google, мы смогли изменить двух «официальных» участников «на лету». В прошлом году мы выбрали [двух официальных участников и 6 «неофициальных» (без денежного вознаграждения)][2]. Однако, в процессе продвижения кодинга осталось лишь трое неофициальных участников. Но, так как им успешно удалось завершить свои задания, мы поделили собранные деньги поровну между ними (порядка $700 на человека). Рассмотрим задания [поподробнее][3]: Два задания не были выполнены/завершены — это полный перевод всего фреймворка на использование [базы данных sdb][4] и доводка до ума [webui][5]. С другой стороны, три задания были завершены успешно, и на данный момент весь код находится в основной ветке. ![][6]Во-первых, это поддержка парсинга сложных структур и отображение их в необходимом формате, с помощью команды pf и парсера описания данных на языке Си (struct/union, etc). Во-вторых, это поддержка загрузки и использования сигнатур формата [FLIRT (из IDA Pro)][7], а также интеграция с [Yara][8]. Благодаря тому, что это задание было успешно выполнено, radare2 может быть использован для анализа malware с использованием существующих баз сигнатур, накопленных за годы работы с IDA Pro и Yara. Код интеграции с Yara вынесен в [отдельный репозиторий][9]. Ну и последнее успешно выполненное задание — это поддержка [PDB][10]. Основное отличие от многих отладчиков и дизассемблеров (кроме IDA Pro) — это парсинг формата самостоятельно, без использования вызовов системных библиотек Windows. Кроме того, с прошлого года значительно улучшилась ситуация с документацией: [radare.today/radare2-is-documented/][11] [Что же ждет нас в этом году?][12]

[1]: http://habrahabr.ru/post/218969/
[2]: http://radare.today/rsoc-selections-results/
[3]: http://radare.today/the-rsoc-is-over/
[4]: http://radare.today/exploring-the-database/
[5]: http://cloud.rada.re/p/
[6]: //habrastorage.org/files/3d5/a53/643/3d5a53643ece49f3b54bd04d39949127.png
[7]: https://www.hex-rays.com/products/ida/tech/flirt/in_depth.shtml
[8]: https://plusvic.github.io/yara/
[9]: https://github.com/radare/radare2-extras/tree/master/yara
[10]: https://support.microsoft.com/en-us/kb/121366
[11]: http://radare.today/radare2-is-documented/
[12]: http://habrahabr.ru/post/252905/#habracut

[>] Отчет с Security Meetup 22 октября
habra.15
habrabot(difrex,1) — All
2015-11-03 16:00:07


![image][1] 22 октября в нашем офисе прошел очередной Security Meetup. На встрече было пять докладов, посвященных различным уязвимостям. Были раскрыты такие вопросы, как реверс-инжиниринг в Enterprise и связанные с ним бизнес-процессы (на примере платежной системы Qiwi), небезопасная десериализация данных в PHP, степень надежности двухфакторной аутентификации в мобильных приложениях, работа за деньги на bug bounty, а также возможность атаки с помощью «опасного» видеофайла. [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/d47/014/087/d47014087a912a4340159371556c851d.jpg
[2]: http://habrahabr.ru/post/270077/#habracut

[>] [Перевод] Как обойти двух факторную аутенфикацию Authy с ../sms
habra.14
habrabot(difrex,1) — All
2015-03-16 08:00:05


![image][1] С помощью простого ввода ../sms можно было обойти второй фактор на сайтах использующих 2FA через authy.com ([а их довольно много][2]) Самое интересное что такая досадная уязвимость появилась не по вине Authy, да и нашел я всю эту цепочку багов с большой удачей. [Читать дальше →][3]

[1]: http://habrastorage.org/getpro/habr/post_images/6b4/d30/6b6/6b4d306b62deeff761fda8bc6473d3cf.png
[2]: https://www.authy.com/businesses
[3]: http://habrahabr.ru/post/253137/#habracut

Pages: 1 ... 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 ... 210