RSS
Pages: 1 ... 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 ... 210
[>] [Из песочницы] Об операторах Publish, Connect, RefCount и Share в RxSwift
habra.16
habrabot(difrex,1) — All
2017-08-29 19:00:05


Привет, Хабр! Представляю вашему вниманию перевод статьи [Understanding Publish, Connect, RefCount and Share in RxSwift][1].

_Примечание переводчика.
В оригинале статьи используется Swift второй версии и соответствующая версия RxSwift. Я имел смелость переписать приведенные ниже куски кода под Swift 3.
Так же хочется отметить, что такие понятия, как Observable и Sequence, можно считать одним и тем же. То же касается Observer и Subscriber._

В этой статье я постараюсь объяснить такие операторы для работы с Connectable Observable в RxSwift, как `publish, connect, refCount` и `share`. Они используются вместе в различных комбинациях. Очень важно понимать разницу между:

* **`publish().connect() `**
* и **`publish().refcount()`** (или просто **`share()`**)

### Активные и пассивные Observables


Прежде чем перейти к сути, мне хотелось бы сказать пару слов о hot и cold Observables. Как по мне, так понятия горячих и холодных Observables немного размыты.

Давайте горячий Observable мы будем называть Active Sequence, а холодный Passive Sequence.

* Active Sequence эмитит элементы **постоянно**, независимо от того, подписан на нее кто-нибудь или нет
* Passive Sequence начинает эмитить элементы **по запросу**
Примером Passive Sequence может служить запрос в сеть, который начинается только тогда, когда мы подписались на последовательность. Примерами Active Sequence могут служить web-socket соединение, события таймера или текст, производимый `UITextField`'ом.

И это все. Думайте об активных и пассивных последовательностях. Понятия горячих/холодных/теплых/прохладных Observables слишком запутанны и могут сбить с толку.
[Читать дальше →][2]

[1]: http://www.tailec.com/blog/understanding-publish-connect-refcount-share
[2]: https://habrahabr.ru/post/336662/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Быстрый тест производительности Python для вычислительных задач
habra.16
habrabot(difrex,1) — All
2017-08-29 19:30:04


## Мотивация


Совсем недавно вышла новая версия 0.34 библиотеки оптимизирующего JIT компилятора [Numba][1] для Python. И там ура! появилась долгожданная семантика аннотаций и набор методов для организации параллельных вычислений. За основу была взята технология [Intel Parallel Accelerator][2].

В данной статье я хочу поделиться результатами первого тестирования скорости вычислений на основе этой библиотеки для некоторой современной машины с четырехядерным процессором.
[Читать дальше →][3]

[1]: http://numba.pydata.org/
[2]: https://github.com/IntelLabs/ParallelAccelerator.jl
[3]: https://habrahabr.ru/post/336684/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Чемпионат #PGHACK. Платформа
habra.16
habrabot(difrex,1) — All
2017-08-29 19:30:04


Уже в эту субботу в московском офисе Avito пройдёт чемпионат по PostgreSQL. Это соревнование по управлению базами данных с практическими задачами. Мы реализовали его на платформе, полностью собранной из опенсорс-компонентов. Протестировали уже на двух внутренних соревнованиях (получилось интересно), и теперь готовимся к тому, чтобы провести #PGHACK для всех желающих постгресменов (мы ещё принимаем заявки на участие, ссылка в конце текста). В этом посте я расскажу о том, как мы готовили платформу для чемпионата.
![][1]

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

[1]: https://habrastorage.org/web/535/0b3/04e/5350b304e44743bda9b011dd88afc654.jpg
[2]: https://habrahabr.ru/post/336246/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] RailsClub 2017: Интервью с Nick Sutterer. Rails умирает (а Ruby нет)
habra.16
habrabot(difrex,1) — All
2017-08-29 21:00:05


Привет!
Сегодня публикуем интервью с [Ником Сатерером][1]. Ник создатель [Trailblazer][2], автор нескольких гемов и новых слоев абстракции в Rails, Rails contributor. Накануне [RailsClub 2017][3], где Ник будет делать доклад, Дмитрий Матвеев пообщался с ним о его работе и взглядах на развитие Rails.


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

[1]: https://github.com/apotonick
[2]: http://trailblazer.to/
[3]: http://railsclub.ru/
[4]: https://habrastorage.org/getpro/habr/post_images/6d1/922/211/6d1922211e1fa16071e3d99e83353b7f.jpg
[5]: https://habrahabr.ru/post/336690/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Приложения для Tarantool 1.7. Часть 2. OAuth2-авторизация
habra.16
habrabot(difrex,1) — All
2017-08-30 13:30:05


Как построить свое приложение для Tarantool и при этом не городить огород каждый раз, когда требуется сделать, казалось бы, элементарную вещь? Это продолжение цикла статей о том, как создавать свои приложения для Tarantool.



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



![][1]

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

[1]: https://habrastorage.org/web/6bc/a42/ca2/6bca42ca2fc74d00923ad3348e4cdb09.png
[2]: https://habrahabr.ru/post/336648/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Полезные трюки при работе с netcat
habra.16
habrabot(difrex,1) — All
2017-08-30 15:00:05


![image][1]


В данной статье я рассмотрю популярную сетевую утилиту netcat и полезные трюки при работе с ней.

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

[1]: https://habrastorage.org/getpro/habr/post_images/31d/a34/37d/31da3437d1ee391bf1bddb81a1c147ee.jpg
[2]: https://habrahabr.ru/post/336596/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как не обломать мозг об пароли вроде eLkdC,lk#jB
habra.16
habrabot(difrex,1) — All
2017-08-30 15:00:05


![image][1]

Нормальный стойкий пароль фиг запомнишь. Почти аксиома. Еще и безопасники радостно подбрасывают дровишек в этот костер ужаса, заставляя раз в месяц учить чудовищный фарш из мешанины символов. Параноидальные меры безопасности в лучших традициях [«Хакера в столовой»][2] приводят лишь к тому, что пользователи заботливо царапают пароли на мониторе или складывают под клавиатуру. Нет, серьезно, ну кто из обычных пользователей в здравом уме будет соблюдать требования к паролю в духе:

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

[1]: https://habrastorage.org/getpro/habr/post_images/e9b/15b/218/e9b15b2180f6ae52698ea1c5401fce5f.jpg
[2]: https://xakep.ru/2006/12/16/35784/
[3]: https://habrahabr.ru/post/334202/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Алгоритм машинного обучения Flappy Bird
habra.16
habrabot(difrex,1) — All
2017-08-30 16:00:05


Я познакомлю вас с полным **туториалом на HTML5** с демо по **алгоритму машинного обучения** видеоигре **Flappy Bird**. Цель этого эксперимента — написать игровой контроллер **искусственного интеллекта** на основе **нейросетей** и **генетического алгоритма**.

То есть мы хотим создать ИИ-робота, который сможет учиться оптимальной игре во Flappy Bird. В результате наша маленькая птица сможет спокойно пролетать через препятствия. В наилучшем сценарии она не умрёт никогда.

Прочитав теорию, лежащую в основе этого проекта, можно скачать исходный код в конце этого туториала. Весь код написан на HTML5 с использованием [фреймворка Phaser][1]. Кроме того, мы использовали [библиотеку Synaptic Neural Network][2] для реализации нейросети, чтобы не создавать её с нуля.


## Демо


Для начала посмотрите демо, чтобы оценить алгоритм в действии:

![][3]

[Запустить в полноэкранном режиме][4]
[Читать дальше →][5]

[1]: http://phaser.io/ "Phaser Framework"
[2]: https://synaptic.juancazala.com/
[3]: https://habrastorage.org/web/c7f/c72/6b0/c7fc726b0d8e45228e9726e5d1ee5e44.png
[4]: http://www.askforgametask.com/html5/tutorials/flappy/
[5]: https://habrahabr.ru/post/336612/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [в закладки] PDF-версия статей про Bash-скрипты
habra.16
habrabot(difrex,1) — All
2017-08-30 17:00:04


Привет Хабр! Летом мы переводили цикл статей про Bash-скрипты — судя по отклику, статьи оказались для вас полезными. И, по многочисленным просьбам, мы решили сделать PDF-версию перевода.

[![][1]][2]

Подробности под катом.
[Читать дальше →][3]

[1]: https://habrastorage.org/web/1d6/c47/951/1d6c479515ad434b8845e00445cc7b7f.jpg
[2]: https://habrahabr.ru/company/ruvds/blog/336764/
[3]: https://habrahabr.ru/post/336764/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Прототип проекта стоимостью $86 миллионов в 57 строках кода
habra.16
habrabot(difrex,1) — All
2017-08-30 17:30:04


![][1]



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



_Представлюсь: меня зовут Иван Греков, я из фронтенд-команды Badoo. Мне очень понравился этот пост, я просто не смог пройти мимо и не перевести его. Этот пост – отличный источник вдохновения для любителей прототипирования устройств и open-source-решений. Перевод публикуется с сохранением авторской точки зрения и, надеюсь, будет интересен вам. _

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

[1]: https://habrastorage.org/web/49c/5b2/e2f/49c5b2e2f66c4ae994acdc3f7fe31bc3.png
[2]: https://habrahabr.ru/post/336766/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Двойная бюстгалтерия* глазами программиста
habra.16
habrabot(difrex,1) — All
2017-08-30 20:00:05


![][1]

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

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

[1]: https://habrastorage.org/web/73f/606/e1d/73f606e1d75e486fa81e91e974b3a321.jpg
[2]: https://habrahabr.ru/post/336656/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] 256 байт intro «Springs» для компьютера Vectrex
habra.16
habrabot(difrex,1) — All
2017-08-30 20:30:06


Решение написать что-нибудь для [Chaos Constructions][1] пришло, как водится, довольно внезапно (в первую очередь потому, что до последнего момента не было очевидно, состоится он в этом году или нет). Так что, времени написать что-то большее, чем работу для конкурса Tiny intro (256 байт для любой платформы) уже не оставалось. Это же определило и выбор платформы, так как под Vectrex я уже писал пару лет назад и проще было вспомнить ассемблер 6809, чем изучать следующий.

Чем (среди прочего) мне нравится демосцена, так это тем что, приступая к работе, понятия не имеешь, что в итоге получишь. Среди нескольких идей, что именно написать, конкретно вот этой не было точно. Две были отброшены потому, что изображение на эмуляторе и реальном Vectrex'e слишком уж отличалось — после каждой сборки заливать всё это в эмулятор ПЗУ и перетыкать его в Vectrex чтобы посмотреть, что получилось — нереально.

Третью идею я было начал реализовывать, но уже в процессе увидел, что сделать такое красиво в 256 байт — слишком сложно. Но, в процессе что-то там переглючило и напомнило пружину. Вот эту идею я, в итоге, и развил:


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

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

[>] Конкурс Сбербанка среди ИТ-разработчиков
habra.16
habrabot(difrex,1) — All
2017-08-30 23:30:04


Придумайте и воплотите в прототипе идею высокотехнологичного сервиса для действующих или потенциальных клиентов банка на базе стека In-Memory. В рамках сервиса предложите, как использовать Internet Of Things или Artificial Intelligence в мире финансов. Команда, реализовавшая самый перспективный проект получит приз в 400 000 рублей. Конкурс проводится в преддверии конференции «Сбербанк In-Memory Day». [Участвовать][1]

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

[>] Погружение в разработку на Ethereum. Часть 2: Web3.js и газ
habra.16
habrabot(difrex,1) — All
2017-08-31 04:30:07


В [предыдущей статье][1] мы описали деплой контрактов и взаимодействие с ними через пользовательский интерфейс кошелька Mist, но это не подходит для реальной разработки. Нужна библиотека, которая позволит работать с блокчейном из кода пользовательского приложения. В этой статье мы кратко рассмотрим что представляет собой библиотека Web3.js, пощупав ее из консоли Geth. И еще одна важная тема, которая наверняка интересует не только разработчиков, но и потенциальных заказчиков — сколько стоят транзакции на блокчейне, ведь каждая из них требует газа, который покупается за эфир.

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

[1]: https://habrahabr.ru/post/336132/
[2]: https://habrastorage.org/web/3a1/c27/eba/3a1c27eba14045b8b83028f232638339.jpg
[3]: https://habrahabr.ru/post/336770/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Создание языка программирования с использованием LLVM. Часть 7: Расширение языка: Изменяемые переменные
habra.16
habrabot(difrex,1) — All
2017-08-31 10:30:04


Оглавление:
[Часть 1: Введение и лексический анализ][1]
[Часть 2: Реализация парсера и AST][2]
[Часть 3: Генерация кода LLVM IR][3]
[Часть 4: Добавление JIT и поддержки оптимизатора][4]
[Часть 5: Расширение языка: Поток управления][5]
[Часть 6: Расширение языка: Операторы, определяемые пользователем][6]
**Часть 7: Расширение языка: Изменяемые переменные**
Часть 8: Компиляция в объектный код
Часть 9: Добавляем отладочную информацию
Часть 10: Заключение и другие вкусности LLVM

![][7]


### 7\.1. Введение


Добро пожаловать в главу 7 руководства “Создание языка программирования с использованием LLVM”. В главах 1-6 мы построили полноценный, хотя и простой, функциональный язык программирования. На этом пути мы изучили некоторые техники парсинга, изучили, как строить и и как представлять AST, как построить LLVM IR, и как оптимизировать результирующий код, и как JIT компилирует его.
[Читать дальше →][8]

[1]: https://habrahabr.ru/post/119850/
[2]: https://habrahabr.ru/post/120005/
[3]: https://habrahabr.ru/post/120424/
[4]: https://habrahabr.ru/post/120516/
[5]: https://habrahabr.ru/post/120881/
[6]: https://habrahabr.ru/post/336080/
[7]: https://habrastorage.org/web/6e5/879/803/6e58798030874db09d00f2c502b3b104.png
[8]: https://habrahabr.ru/post/336468/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Потрошитель исходников и AST дерево Spring Boot
habra.16
habrabot(difrex,1) — All
2017-08-31 13:30:06


Недавно мне попалась необычная задача получить доступ к комментариям кода в рантайм.

![][1]

Это поможет поймать сразу 3х зайцев — кроме документации в коде проекта из тестов проекта легко будет сгенерировать sequence diagram, которые смогут читать аналитики, а QA сможет сравнить свои тест планы с автотестами проекта и дополнить их при необходимости. Появляется общий язык в команде между теми кто пишет код и теми кто не может его читать. Как результат — лучшее понимание проекта всеми в процессе разработки ну и с точки зрения разработчика не нужно рисовать ничего вручную — код и тесты первичны. Больше шансов что такая документация будет самой актуальной на проекте, так как генерируется из работающего кода. Заодно дисциплинирует разработчика документировать классы и методы, которые участвуют в диаграммах.

В этой публикации я расскажу как же извлечь javadoc из исходного кода проекта.
[И в финале распотрошим документацию Spring Boot][2]

[1]: https://habrastorage.org/web/403/abf/8b7/403abf8b7d194cb184170eb95171b51b.jpg
[2]: https://habrahabr.ru/post/336732/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Практика формирования требований в ИТ проектах от А до Я. Часть 1. Вводная
habra.16
habrabot(difrex,1) — All
2017-08-31 14:00:06


## Пролог


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

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

Теперь я хочу рассказать, как можно качественно сформировать сами требования, ведя Заказчика от его «хотелок», к его счастливому и плодотворному сожительству с программным продуктом, его мечты.
[Читать дальше →][2]

[1]: https://habrahabr.ru/post/335830/%22
[2]: https://habrahabr.ru/post/336694/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как узнать свой внешний IP из программы
habra.16
habrabot(difrex,1) — All
2017-08-31 14:00:06


![][1]


При написании различных программ для работы с сетью, особенно p2p систем, время от времени возникает необходимость узнать внешний IP своего компьютера из программы (тот адрес, по которому Ваш компьютер доступен из Большого Интернета). Часто возникает искушение [пойти легким путем][2] и использовать внешние WEB-сервисы, которые по http возвращают Вам IP, или самому развернуть таковой. Хотя такой способ решения задачи и работоспособен, он тем не менее, имеет ряд недостатков:


* При использовании собственного сервера – нужно где-то его держать и поддерживать, заодно и c соответствующим доменным именем. В случае выхода его из строя, или принудительного отзыва домена, вся Ваша p2p сеть выходит из строя.
* При использовании внешнего сервера – Вы вводите зависимость своей системы как от его работоспособности, так и от формата ответов, который вообще никак не стандартизирован, и который владелец сервера может поменять в любой момент. С теми же последствиями для вашей сети.
* http, которым советуют пользоваться – базируется на tcp, то есть протокол сравнительно тяжеловесный, требующий установки соединения и тп. В общем, пользоваться можно, но перерасход ресурса как компьютера, так и сети налицо.



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

[1]: https://habrastorage.org/web/189/5ef/b42/1895efb4257e43669b83a0cda0ae5970.jpg
[2]: http://www.programmersforum.ru/showthread.php?t=63677
[3]: https://habrahabr.ru/post/335458/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Система управления версиями API Stripe как отдельный инструмент
habra.16
habrabot(difrex,1) — All
2017-08-31 14:30:04


_Автор материала рассказывает об устройстве системы управления версий, которая реализована в компании Stripe. _

![image][1]

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

В 1994 году была издана книга «Настольное пособие Unix-ненавистника» (Unix-Haters Handbook), в которой затрагивался целый список самых разных острых тем, от имен оптимизированных под телетайпы команд с совершенно непонятной историей происхождения до необратимого удаления данных, непонятных интуитивно программ с избытком опций. Более 20 лет спустя, подавляющее большинство этих жалоб по-прежнему актуальны несмотря на все многообразие доступные сегодня систем-наследников и ответвлений. Unix стал настолько широко популярен, что изменение его поведения может привести к далеко идущим последствиям. Хорошо это или плохо, но между ним и его пользователями уже сложились определенные договоренности, определяющие поведение Unix-интерфейсов.

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

[1]: https://habrastorage.org/web/569/d41/8f0/569d418f01234c76938d2e4bfdd13aa6.jpg
[2]: https://habrahabr.ru/post/319758/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Почему блокчейн не такая уж и плохая технология
habra.16
habrabot(difrex,1) — All
2017-08-31 14:30:04


**Про CryptoNote, Lightning Network, Plasma, PoS и прочее**

_Автор статьи — Алексей Маланов, эксперт отдела развития антивирусных технологий «Лаборатории Касперского»._

Недавно мы опубликовали статью [«Шесть мифов о блокчейне и Биткойне, или Почему это не такая уж эффективная технология»][1]. Статья была положительно встречена Хабра-сообществом и активно обсуждалась в комментариях, что явно свидетельствует о большом интересе к этой теме.

Было среди комментаторов и несколько возмущенных. Кто-то негодовал: «Зачем вы пишете очевидное, ведь это все давно всем прекрасно известно?» На это трудно возразить по существу. Но были и те, кто писал в ключе: «Все это неправда, на самом деле все проблемы решены там-то и там-то».

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

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

[>] Насколько хорошо защищены ваши SSH сессии?
habra.16
habrabot(difrex,1) — All
2017-08-31 15:30:04


![][1]

Выполнение повседневных задач системного администратора считается безопасным при работе через SSH сессию. В данной статье речь пойдет про современные инструменты для проведения MITM-атак на протокол SSH и как защититься от них.
[Читать дальше →][2]

[1]: https://habrastorage.org/web/4c7/712/ef5/4c7712ef5cb748a092837cbc1014ef5d.jpg
[2]: https://habrahabr.ru/post/336726/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Памятка евангелиста PostgreSQL: экспроприируем экспроприаторов
habra.16
habrabot(difrex,1) — All
2017-08-31 16:30:04




Привет, Хабр, давно не виделись! Со времени моих предыдущих публикаций в
серии «Памятка евангелиста PostgreSQL» ([1][1], [2][2], [3][3]) прошло довольно много времени, и многое изменилось. Вышли новые релизы MySQL и PostgreSQL с интересными фичами (хотя содержимое моих статей остаётся по большей части актуальным, я старался вносить мелкие обновления там, где это требовалось). В моду вошёл [ко-маркетинг][4] (с ко-франшизингом и местами даже ко-лизингом), когда доклады о PostgreSQL звучат на конференциях, посвящённых MySQL, и наоборот. Появились даже [совместные доклады][5], где предпринимаются попытки объективного сравнения MySQL и PostgreSQL в тех или иных плоскостях. Отгремела [история с Uber][6], с протяжённой по времени дискуссией, в которую я тоже внёс [свой скромный вклад][7].



В целом, диалог между двумя проектами становится более содержательным. Я всё реже слышу страшилки и мифы, о которых я рассказывал в предыдущих статьях. Однако есть один устойчивый миф, который по-прежнему раскручивается сообществом PostgreSQL. Если быть точным, раскручивается он моей любимой компанией Postgres Professional – от представителей других компаний я пока такого не слышал. Это миф о «проприетарности» MySQL. В беседах руководство Postgres Professional демонстрирует какое-то дикое незнание матчасти и своеобразное толкование терминов. А значит пришло время дорогой редакции снова взобраться на броневичок!

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

[1]: https://habrahabr.ru/post/268949/
[2]: https://habrahabr.ru/post/269463/
[3]: https://habrahabr.ru/post/269889/
[4]: https://ru.wikipedia.org/wiki/%D0%9A%D0%BE-%D0%BC%D0%B0%D1%80%D0%BA%D0%B5%D1%82%D0%B8%D0%BD%D0%B3
[5]: https://www.percona.com/live/plam16/sessions/open-source-sql-databases-enters-millions-queries-second-era
[6]: https://eng.uber.com/mysql-migration/
[7]: https://devconf.ru/ru/offers/offer/314
[8]: https://habrahabr.ru/post/334444/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Образование от Mail.Ru Group: рассказываем в прямом эфире Технострима о возможностях обучения
habra.16
habrabot(difrex,1) — All
2017-08-31 16:30:04




На трансляции 1 сентября в 19:00 мы расскажем о наших образовательных проектах и о том, как вы можете развить свои навыки в различных областях IT вместе с нами. Трансляция будет доступна в проигрывателе выше.



Темы трансляции:
— Очное обучение в вузах с Mail.Ru Group
— Митапы и конференции в офисе
— YouTube-канал Технострим
— Онлайн-курсы на платформах Stepik и Coursera
— Онлайн-чемпионаты по программированию и не только
— Профориентация школьников



Ниже — чуть более подробный анонс, чтобы вы нашли что-то для себя. Также об образовательных проектах компании вы можете почитать в нашем [обзоре][1], и тогда на вебинаре мы будем ждать уже конкретных вопросов об интересующих вас проектах!

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

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

[>] Многопоточность в C++ и SObjectizer с CSP-шными каналами, но совсем без акторов…
habra.16
habrabot(difrex,1) — All
2017-08-31 16:30:04


Раньше мы рассказывали про [SObjectizer][1] как про акторный фреймворк для C++, хотя в действительности это не совсем так. Например, уже давно в SObjectizer есть такая классная штука, как [mchain-ы][2] (они же каналы из модели [CSP][3]). Mchain-ы позволяют легко и непринужденно организовать обмен данными между рабочими потоками. Не создавая агентов, которые нужны далеко не всегда. Как раз на днях довелось в очередной раз этой фичей воспользоваться и упростить себе жизнь за счет передачи данных между потоками посредством каналов (т.е. SObjectizer-овских mchain-ов). Так что не только в Go можно получать удовольствие от использования CSP. В C++ это так же возможно. Кому интересно, что и как, прошу под кат.


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

[1]: https://habrahabr.ru/post/304386/
[2]: https://www.slideshare.net/YauheniAkhotnikau/dive-into-sobjectizer-55-ninth-part-message-chains
[3]: https://en.wikipedia.org/wiki/Communicating_sequential_processes
[4]: https://habrahabr.ru/post/336854/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как правильно хешировать пароли в высоконагруженных сервисах. Опыт Яндекса
habra.16
habrabot(difrex,1) — All
2017-08-31 17:00:05


Я расскажу о такой проблеме, как хеширование паролей в веб-сервисах. На первый взгляд кажется, что тут все «яснопонятно» и надо просто взять нормальный алгоритм, которых уже напридумывали много, написать чуть-чуть кода и выкатить все в продакшн. Но как обычно, когда начинаешь работать над проблемой, возникает куча подводных камней, которые надо обязательно учесть. Каких именно? Первый из них — это, пожалуй, выбор алгоритма: хоть их и много, но у каждого есть свои особенности. Второй — как выбирать параметры? Побольше и получше? Как быть с временем ответа пользователю? Сколько памяти, CPU, потоков? И третий — что делать с computational DoS? В этой статье я хочу поделиться некоторыми своими мыслями об этих трех проблемах, опытом внедрения нового алгоритма хеширования паролей в Яндексе и небольшим количеством кода.

[![][1]
][2]

### Attacker & Defender


Прежде чем переходить к алгоритмам и построению схемы хеширования, надо вообще понять, от чего же мы защищаемся и какую роль в безопасности веб-сервиса должно играть хеширование паролей. Обычно сценарий таков, что атакующий ломает веб-сервис (или несколько веб-сервисов) через цепочку уязвимостей, получает доступ к базе данных пользователей, видит там хеши паролей, дампит базу и идет развлекаться с [GPU][3] (и, в редких случаях, с [FPGA][4] и [ASIС][5]).
[Читать дальше →][6]

[1]: https://habrastorage.org/web/693/f8c/6d4/693f8c6d499c4c77bef686a6ab06782c.png
[2]: https://habrahabr.ru/company/yandex/blog/336860/
[3]: https://ru.wikipedia.org/wiki/%D0%93%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80
[4]: https://ru.wikipedia.org/wiki/%D0%9F%D0%9B%D0%98%D0%A1
[5]: https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D1%85%D0%B5%D0%BC%D0%B0_%D1%81%D0%BF%D0%B5%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F
[6]: https://habrahabr.ru/post/336860/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Насколько хорошо защищены ваши SSH-сессии?
habra.16
habrabot(difrex,1) — All
2017-08-31 17:30:04


![][1]

Выполнение повседневных задач системного администратора считается безопасным при работе через SSH сессию. В данной статье речь пойдет про современные инструменты для проведения MITM-атак на протокол SSH и как защититься от них.
[Читать дальше →][2]

[1]: https://habrastorage.org/web/4c7/712/ef5/4c7712ef5cb748a092837cbc1014ef5d.jpg
[2]: https://habrahabr.ru/post/336726/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Атомарная смена режима видео
habra.16
habrabot(difrex,1) — All
2017-08-31 19:30:04


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



Давным давно, то есть несколько лет назад каждая реализация протокола X11 предполагала [смену режима видео][1] напрямую, поперек батьки кернела. Затем появился KMS (kernel mode setting) и эта важная функция перешла к ядру. Но остались некоторые шероховатости. Атомарная смена режима является дальнейшим улучшением механизма KMS.



Для чего нужен сабж? Главным образом для того, чтобы избежать вот таких моментов.


![][2]



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

[1]: https://habrahabr.ru/post/321470/
[2]: https://habrastorage.org/web/52a/d25/77a/52ad2577a3334e2a9ca8aa5eae7805de.png
[3]: https://habrahabr.ru/post/336630/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Hanami Getting Started
habra.16
habrabot(difrex,1) — All
2017-08-31 22:00:05


![][1]
Привет, Хабр! Какое-то время назад я заинтересовался фреймворком Hanami и, чтоб лучше отложилось в голове, начал переводить официальное руководство для новичков. Этим и хочу поделиться с сообществом. Переводить я старался ближе к оригиналу, но я более читатель, чем писатель и, если у вас будут замечания к переводу, не стесняйтесь их высказывать, я поправлю.



В этом руководстве мы создадим свой первый проект в Hanami, сделаем простое веб приложение. Мы коснемся всех основных компонентов фреймворка и покроем все написанное тестами.

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

[1]: https://habrastorage.org/web/21a/3de/629/21a3de629cfb48e781c7bdd2bd6256c8.jpg
[2]: https://habrahabr.ru/post/336814/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Для повышения надежности и безопасности банковского программного обеспечения используйте PVS-Studio
habra.16
habrabot(difrex,1) — All
2017-09-01 12:30:05


![PVS-Studio + финансы][1]

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


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

[1]: https://habrastorage.org/getpro/habr/post_images/7cd/aef/955/7cdaef955a6178b422637459178de35d.png
[2]: https://habrahabr.ru/post/336898/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Пятничный JS: reqyire.js и очепятко-ориентированное программирование
habra.16
habrabot(difrex,1) — All
2017-09-01 13:30:04


И вновь я приветствую уважаемых хабражителей в своей не то чтобы постоянной, но повторяющейся рубрике. Сегодня мы с вами поговорим о том, как стать более эффективным программистом под Node.js. А также, как вы могли догадаться из названия, об опечатках и их роли в этом процессе. Немного кода для привлечения внимания

const reqyire = require("reqyire");
const http = reqyire("htpp");

const server = http.creteServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});

server.listem(3000, "127.0.0.1");

[Вы ведь заметили, что здесь какой-то подвох?][1]

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

[>] Векторная геометрия для разработчиков Revit AP
habra.16
habrabot(difrex,1) — All
2017-09-01 13:30:04


![][1]

Класс XYZ представляет координаты в RevitAPI. А раз мы имеем дело с координатами, то следует рассмотреть азы векторной геометрии. Всего два действия: сложение и вычитание векторов, позволят сделать кучу полезной работы.
[Читать дальше →][2]

[1]: https://habrastorage.org/web/f6e/b8c/a19/f6eb8ca1966b45aebec0d6139dfa6ed1.jpg
[2]: https://habrahabr.ru/post/336502/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Маскировка UDP трафика в TCP/ICMP при помощи udp2raw
habra.16
habrabot(difrex,1) — All
2017-09-01 15:00:06


![][1]

В данной статье речь пойдет про утилиту udp2raw, которая позволяет обходить межсетевые экраны, настроенные на блокировку протокола UDP, используя RAW сокеты, а также туннелировать любые другие протоколы при работе в связке с OpenVPN.
[Читать дальше →][2]

[1]: https://habrastorage.org/web/4d6/76e/6a1/4d676e6a1aa54305863694370bed183a.jpg
[2]: https://habrahabr.ru/post/336900/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Kotlin: опыт боевого применения
habra.16
habrabot(difrex,1) — All
2017-09-01 16:30:05


В последнее время рост интереса к языку программирования Kotlin приблизительно такой же, как рост курса Bitcoin. Повышенное внимание обусловлено еще и тем фактом, что в мае 2017 года Kotlin был объявлен официальным языком разработки под Android. Конечно же, мы не могли не приобщиться к изучению этой темы, и решили поэкспериментировать с Kotlin, применив его в одном из новых проектов под Android.

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

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

[>] [Перевод] Чистый код на PHP
habra.16
habrabot(difrex,1) — All
2017-09-01 17:00:05


![][1]



Это принципы разработки ПО, взятые из книги _Clean Code_ Роберта Мартина и адаптированные для PHP. Это руководство не по стилям программирования, а по созданию читабельного, многократно используемого и пригодного для рефакторинга кода на PHP.



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



Статья вдохновлена [clean-code-javascript][2].

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

[1]: https://habrastorage.org/web/75e/9a1/4cd/75e9a14cd96b437d95087e221a7ed330.jpg
[2]: https://github.com/ryanmcdermott/clean-code-javascript
[3]: https://habrahabr.ru/post/336788/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Спектроскоп-калейдоскоп
habra.16
habrabot(difrex,1) — All
2017-09-01 17:30:06


Это заметка о том, что на основании алгоритма генерации спектров (о котором было рассказано в статье [«Спектроскоп Салтана...»][1]) создан [тестовый сервис][2], обратиться к которому может любой желающий.
![][3]
Под катом — инструкция по использованию сервиса и его возможностей.
[Читать дальше →][4]

[1]: https://habrahabr.ru/post/319060/
[2]: http://5.101.118.199/
[3]: https://habrastorage.org/web/824/fc6/cdb/824fc6cdba57405682ad1d73b4380c34.png
[4]: https://habrahabr.ru/post/336932/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Vertex Wirless VW210: редкий роутер и его внутренний мир
habra.16
habrabot(difrex,1) — All
2017-09-01 21:30:04


> Лирическое отступление: всё описанное в данной статье производилось исключительно в образовательных целях, цели извлечения материальной выгоды не преследовалось, ни одного котика в процессе (надеюсь) не пострадало. Всё, что здесь описано вы повторяете на свой страх и риск.

![КДПВ курильщика (для тех, у кого дорогой трафик)][1]


_КДПВ курильщика (для тех, у кого дорогой трафик)_

Несколько лет в глухой деревне трудится, не покладая рук, этот неуловимый Джо сетевой промышленности. Выбор пал на него, благодаря поддержке единственно рабочего решения для данной местности, а именно CDMA 450 от местного оператора «Сотел» (аля SkyLink). В отличии от других роутеров/модемов для данного стандарта того времени он единственный позволил добиться устойчивой связи с помощью какой-то матери и направленной антенны. Но вот беда: [сайт производителя][2] (а возможно и он сам) исчез с горизонта этих наших интернетов в далёком 2011 году. Осталось лишь [пафосное видео][3] на YouTube и упоминания их продуктов у разномастных продавцов и операторов.
[Внимание! Под спойлером много картинок большого размера и с гикпорн содержанием!][4]

[1]: https://habrastorage.org/web/2d0/319/329/2d03193293b644c9b52f992a986b051d.png
[2]: http://www.vwireless.co.kr/
[3]: https://www.youtube.com/watch?v=QhP5NAed3M0
[4]: https://habrahabr.ru/post/336942/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Vertex Wireless VW210: редкий роутер и его внутренний мир
habra.16
habrabot(difrex,1) — All
2017-09-01 23:00:05


> Лирическое отступление: всё описанное в данной статье производилось исключительно в образовательных целях, цели извлечения материальной выгоды не преследовалось, ни одного котика в процессе (надеюсь) не пострадало. Всё, что здесь описано вы повторяете на свой страх и риск.

![КДПВ курильщика (для тех, у кого дорогой трафик)][1]


_КДПВ курильщика (для тех, у кого дорогой трафик)_

Несколько лет в глухой деревне трудится, не покладая рук, этот неуловимый Джо сетевой промышленности. Выбор пал на него, благодаря поддержке единственно рабочего решения для данной местности, а именно CDMA 450 от местного оператора «Сотел» (аля SkyLink). В отличии от других роутеров/модемов для данного стандарта того времени он единственный позволил добиться устойчивой связи с помощью какой-то матери и направленной антенны. Но вот беда: [сайт производителя][2] (а возможно и он сам) исчез с горизонта этих наших интернетов в далёком 2011 году. Осталось лишь [пафосное видео][3] на YouTube и упоминания их продуктов у разномастных продавцов и операторов.
[Внимание! Под спойлером много картинок большого размера и с гикпорн содержанием!][4]

[1]: https://habrastorage.org/web/2d0/319/329/2d03193293b644c9b52f992a986b051d.png
[2]: http://www.vwireless.co.kr/
[3]: https://www.youtube.com/watch?v=QhP5NAed3M0
[4]: https://habrahabr.ru/post/336942/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Security Week 35: Кардеры донатят Хатчинсу, отозвано 500 тыс. кардиостимуляторов, в спам-боте нашли 711 млн имейлов
habra.16
habrabot(difrex,1) — All
2017-09-02 15:00:04


Трагическая, но поучительная история молодого британского ИБ-специалиста Маркуса Хатчинса, арестованного в США месяц назад, начала скатываться в откровенный фарс. Надо сказать, Штаты обошлись с Маркусом относительно мягко: парня выпустили под залог в $30 тыс, так что он с браслетом на ноге дожидается суда на воле. Не ограничили даже доступ к компьютеру.

Между тем, в защиту Хатчинса выступили многие коллеги. Действительно, Маркус проявил себя достойно в истории с WannaCry, а выдавать себя за троянописателя мог и в исследовательских целях. В итоге доброжелатели организовали для него сбор денег. Ведь с деньгами-то защита всегда идет как-то бойчее. Сбором рулил нью-йоркский адвокат Тор Экеланд, специализирующийся на таких делах. За пару недель друзья и сочувствующие подтянули аж $150 тыс.

Однако друзья у Маркуса оказались какими-то подозрительными. Процессинговая компания, обрабатывающая транзакции, [определила][1], что из сделанных пожертвований только $4900 легитимны, остальные деньги пришли с краденых банковских карт. Тор расстроился от таких новостей и объявил, что все честные жертвователи получат возврат.
[Читать дальше →][2]

[1]: https://threatpost.com/fraudulent-donations-lead-to-disbanding-of-hutchins-legal-defense-fund/127687/
[2]: https://habrahabr.ru/post/336960/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

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


Добрый день, Хабр! Давно мечтал внести свою лепту в этот замечательный проект, который читаю уже несколько лет.

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

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

[>] [Из песочницы] Процессы Подстановки
habra.16
habrabot(difrex,1) — All
2017-09-02 17:00:04


Привет, Хабр! Представляю вашему вниманию перевод статьи [Substitution Processes][1] автора Edsger W. Dijkstra.
![image][2]

Машина определяет (по самой своей структуре) язык, а именно: свой язык ввода — и напротив, семантическое определение языка задаёт машину, способную понимать его. Другими словами, машина и язык — это две стороны одной и той же медали. Я собираюсь описать такую медаль. Я оставляю на вас решение того, какой же из этих двух аспектов предмета моего разговора, на ваш взгляд, самый важный, так как сам считаю этот выбор довольно смешным. Язык, наброски которого я собираюсь вам предоставить, является непозволительно трудным для человека, а машина, которую я собираюсь описать, является порочно неэффективной.

Поэтому, если моя ментальная конструкция, тем не менее, имеет право на существование, её оправдание должно быть найдено в других качествах. Найти их в моей машине можно, по моему мнению и суждению, по крайней мере в её исключительной простоте и элегантности, в единообразии способов, которыми она выполняет довольно разные (на первый взгляд) операции; оправдание моего языка — это его ясность и необычайно высокая степень двусмысленности, вытекающая из строгой последовательной интерпретации и явного указания в программе выполняемых операций, хотя обычно выполнение всех операций подразумевается (и из этого проистекают некоторые недоразумения). Если кто-то захочет это сделать, он может считать мои машину и язык придуманными в образовательных целях.
[Читать дальше →][3]

[1]: https://www.cs.utexas.edu/users/EWD/ewd00xx/EWD28.PDF
[2]: https://habrastorage.org/getpro/habr/post_images/0b9/c65/c0f/0b9c65c0f69360e496887dfd807203b1.jpg
[3]: https://habrahabr.ru/post/336982/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Настраиваем интернет шлюз с прозрачным обходом блокировок (а рекламу таки будем блокировать)
habra.16
habrabot(difrex,1) — All
2017-09-02 17:00:04


![][1]
У вас есть старенький (или не очень) компьютер с двумя сетевыми картами? Вам надоела реклама и лишние телодвижения для обхода блокировок? Вы не хотите с этим мириться? Тогда добро пожаловать под кат.
[Читать дальше →][2]

[1]: https://habrastorage.org/web/f4f/02d/938/f4f02d9383e34045a19c8ddaebc993f6.jpg
[2]: https://habrahabr.ru/post/336966/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Конкурс по программированию: JSDash (итоги)
habra.16
habrabot(difrex,1) — All
2017-09-02 21:00:05


Сегодня мы публикуем окончательные результаты [конкурса по программированию][1] и награждаем тройку призёров.

Поздравляем победителей!

1. **Yuri Chechushkov** — 55954 очка. Приз **3000 USD**.
2. **Ouanalao** — 55653 очка. Приз **2000 USD**.
3. **Anton Ivakin** — 54100 очков. Приз **1000 USD**.
(Результаты выше приведены для 100 тестовых уровней.)

Результаты тестирования опубликованы [на GitHub][2].
[Читать дальше →][3]

[1]: https://habrahabr.ru/company/hola/blog/332176/
[2]: https://github.com/hola/challenge_jsdash/blob/master/blog/06-winners.md
[3]: https://habrahabr.ru/post/336988/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] История предсказания переходов с 1 500 000 года до н.э. по 1995 год
habra.16
habrabot(difrex,1) — All
2017-09-03 01:30:07


_Это приблизительная расшифровка лекции о предсказании переходов (предсказании ветвлений) на localhost, новом цикле лекций, организованном [RC][1]. Выступление состоялось 22 августа 2017 года в Two Sigma Ventures._

Кто из вас использует ветвления в своём коде? Можете поднять руку, если применяете операторы if или сопоставление с образцом?

`Большинство присутствующих в аудитории поднимают руки`

Сейчас я не буду просить вас подымать руки. Но если я спрошу, сколько из вас думают, что хорошо понимают действия CPU при обработке ветвления и последствия для производительности, и сколько из вас может понять современную научную статью о предсказании ветвлений, то руки подымет меньше людей.

Цель моего выступления — объяснить, как и почему процессоры осуществляют предсказание переходов, а затем вкратце объяснить классические алгоритмы предсказания переходов, о которых вы можете прочитать в современных статьях, чтобы у вас появилось общее понимание темы.
[Читать дальше →][2]

[1]: https://www.recurse.com/apply
[2]: https://habrahabr.ru/post/337000/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Быстрые релизы огромного масштаба
habra.16
habrabot(difrex,1) — All
2017-09-03 16:00:05


Со временем в софтверной индустрии придумали несколько способов более быстрого и безопасного выпуска качественного кода. Многие основаны на идеях вроде непрерывной интеграции, непрерывной поставки ПО, гибкой методологии разработки, DevOps и разработки через тестирование. Все эти методологии объединяет одно: они позволяют разработчикам быстро выпускать код безопасными, небольшими, последовательными шагами.

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

В течение многих лет мы обновляли фронтенд Facebook трижды в день, используя простую стратегию веток master и release. Инженеры избирательно выбирали из ветви master изменения в коде, которые прошли ряд автоматизированных тестов, для включения в ветвь release, откуда происходили ежедневные обновления. В целом, таким способом выбиралось от 500 до 700 изменений в день. Раз в неделю мы отрезали новую ветвь release и собирали изменения, которые не отобрались в течение недели.

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

[1]: https://habrastorage.org/web/831/f95/bdb/831f95bdb7f442b7a0f4f266de11533c.jpg
[2]: https://habrahabr.ru/post/337014/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Практика формирования требований в ИТ проектах от А до Я. Часть 3. Функции системы и Границы проекта
habra.16
habrabot(difrex,1) — All
2017-09-03 23:00:04


С частью 2 можно ознакомиться, перейдя по [ссылке][1]


## VI ОПРЕДЕЛЯЕМ ФУНКЦИИ СИСТЕМЫ И ГРАНИЦЫ ПРОЕКТА


> Каждая модель ограничена в своих ответах, но нет ограничения на то, как и что моделирует модель, как нет ограничения на человеческую мысль
> Дуглас Т. Росс
![][2]

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

**Цель данной группы работ: максимально полно определить набор функций, который должен выполнять целевой продукт, для удовлетворения выявленных потребностей заказчика. Отобрать те из них, которые, могут быть реализованы в рамках текущего проекта.**

Границы проекта (project scope) показывают, какая область конечного продукта будет реализована в текущем проекте. Другими словами, определяется черта между тем, что мы будем делать сейчас и тем, что отложим на потом или от чего вообще сможем отказаться. Для этого в арсенале команды должен быть инструмент, позволяющий не просто строить модели создаваемого продукта, а помогающий наглядно очертить рамки автоматизируемых процессов, а также предоставлять возможность легко выносить процессы за границу или включать их обратно. Это очень важно для осознания и более качественного планирования объемов работ. Подобный инструмент полезен не только для «борьбы» с непомерными желаниями заказчика, но и для маневров менеджмента со стороны разработчиков.
[Читать дальше →][3]

[1]: https://habrahabr.ru/post/336790/
[2]: https://habrastorage.org/web/06d/140/59a/06d14059a0514b939013da53ed98eba4.jpg
[3]: https://habrahabr.ru/post/336950/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Как работает рекурсия – объяснение в блок-схемах и видео
habra.16
habrabot(difrex,1) — All
2017-09-03 23:30:04


Представляю вашему вниманию перевод статьи Beau Carnes [How Recursion Works — explained with flowcharts and a video][1].

![][2]
> «Для того чтобы понять рекурсию, надо сначала понять рекурсию»

Рекурсию порой сложно понять, особенно новичкам в программировании. Если говорить просто, то рекурсия – это функция, которая сама вызывает себя. Но давайте попробую объяснить на примере.



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



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



Есть два основных подхода в создании алгоритма для решения данной проблемы: итеративный и рекурсивный. Вот блок-схемы этих подходов:


![][3]


#### Какой подход для Вас проще?


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

[1]: http://medium.freecodecamp.org/how-recursion-works-explained-with-flowcharts-and-a-video-de61f40cb7f9
[2]: https://habrastorage.org/web/c13/9d8/988/c139d898804b4e8ebcabd7e539ccdbd4.png
[3]: https://habrastorage.org/web/620/c52/954/620c5295459b4d83b0a94f2e20fe8ccc.png
[4]: https://habrahabr.ru/post/337030/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Попиксельная заливка экрана в Wolfenstein 3D
habra.16
habrabot(difrex,1) — All
2017-09-04 04:30:05


В коде id Software порой встречаются бесподобные жемчужины. Самая знаменитая — это, конечно, [0x5f3759df][1], удостоившаяся даже [комикса на xkcd][2]. Здесь же речь пойдёт о заливке экрана: пиксели закрашиваются по одному в случайном порядке, без повторов. Как это сделано?

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

[1]: https://habrahabr.ru/company/infopulse/blog/336110/
[2]: https://xkcd.com/664/
[3]: https://habrahabr.ru/post/337036/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] RxSwift: немного о share(), replay(), shareReplayLatestWhileConnected() и других классных операторах
habra.16
habrabot(difrex,1) — All
2017-09-04 09:00:04


_Я уже писал про [Publish, Connect и RefCount в RxSwift][1]. Для того, чтобы лучше раскрыть тему, представляю вашему вниманию перевод другой [ замечательной статьи][2], про различия между такими операторами, как share(), replay(), replayAll(), shareReplay(), publish() и shareReplayLatestWhileConnected(). _

Частая ошибка, которую совершают новички, взявшиеся за освоение [Rx][3] — это непонимание того, что цепочка операторов на Observable выполняется заново с каждым новым подписчиком:

let results = query.rx.text
.flatMapLatest { query in
networkRequestAPI(query)
}
results.subscribe(...) // один запрос в сеть
results.subscribe(...) // другой запрос

Мы имеем несколько подписчиков на один-единственный Observable, но мы не хотим, чтобы его код исполнялся с каждым новым Subscriber'ом. Для этого в [RxSwift][4] имеется несколько операторов. Вот резюмирующая табличка, описывающая каждый из них:

![image][5]
_ 1 — ретранслирует произведенных до подписки элементов не больше, чем bufferSize.
2 — ретранслирует 1 элемент, произведенный до подписки, до тех пор, пока существует хотя бы один подписчик._
[Читать дальше →][6]

[1]: https://habrahabr.ru/post/336662/
[2]: https://medium.com/@_achou/rxswift-share-vs-replay-vs-sharereplay-bea99ac42168
[3]: http://reactivex.io
[4]: https://github.com/ReactiveX/RxSwift
[5]: https://habrastorage.org/web/69d/367/ba3/69d367ba364645eeaf80594928dd28b2.png
[6]: https://habrahabr.ru/post/336970/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Лепим тулбар на PyQt, экспортируем данные в Excel и HTML
habra.16
habrabot(difrex,1) — All
2017-09-04 09:00:04


В [предыдущей части][1] я рассказывал о создании модуля для запуска SQL-запросов и оболочки, в которой эти модули запускаются. После недолгой работы с запросами возникает очевидный вопрос — а как воспользоваться результатом выборки, кроме как посмотреть на экране?

Для этого стоит сделать дополнительные инструменты экспорта и копирования данных. Экспортировать будем в файл в формате Excel, а копировать в системный буфер в формате HTML.

Но для начала прилепим к нашему главному окну панель инструментов.

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

[1]: https://habrahabr.ru/post/336478/
[2]: https://habrastorage.org/web/ba7/f12/d79/ba7f12d797544692af2569ab6beeb8bd.jpg
[3]: https://habrahabr.ru/post/336716/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Создание языка программирования с использованием LLVM. Часть 8: Компиляция в объектный код
habra.16
habrabot(difrex,1) — All
2017-09-04 09:00:04


Оглавление:
[Часть 1: Введение и лексический анализ][1]
[Часть 2: Реализация парсера и AST][2]
[Часть 3: Генерация кода LLVM IR][3]
[Часть 4: Добавление JIT и поддержки оптимизатора][4]
[Часть 5: Расширение языка: Поток управления][5]
[Часть 6: Расширение языка: Операторы, определяемые пользователем][6]
[Часть 7: Расширение языка: Изменяемые переменные][7]
**Часть 8: Компиляция в объектный код**
Часть 9: Добавляем отладочную информацию
Часть 10: Заключение и другие вкусности LLVM

![][8]


### 8\.1. Введение


Добро пожаловать в главу 8 руководства “Создание языка программирования с использованием LLVM”. Эта глава описывает, как компилировать программы на нашем языке в объектные файлы.
[Читать дальше →][9]

[1]: https://habrahabr.ru/post/119850/
[2]: https://habrahabr.ru/post/120005/
[3]: https://habrahabr.ru/post/120424/
[4]: https://habrahabr.ru/post/120516/
[5]: https://habrahabr.ru/post/120881/
[6]: https://habrahabr.ru/post/336080/
[7]: https://habrahabr.ru/post/336468/
[8]: https://habrastorage.org/web/6e5/879/803/6e58798030874db09d00f2c502b3b104.png
[9]: https://habrahabr.ru/post/336876/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

Pages: 1 ... 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 ... 210