RSS
Pages: 1 ... 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 ... 133
[>] 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

[>] “Восстание МашинLearning” или совмещаем хобби по Data Science и анализу спектров лампочек
habra.16
habrabot(difrex,1) — All
2017-09-04 10:00:22


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

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

Данная статья написана в стиле от **новичка-новичкам**, поэтому **опытные** читатели вряд ли, почерпнут для себя, что-то новое и если есть желание решить задачу классификации источников света по спектрам, то им **есть смысл сразу** [взять данные из GitHub ][2]

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

Мы пройдем с вами путь от попытки понять где можно применить даже небольшие знания по ML которые можно получить из книг и курсов, до решения непосредственной самой задачи и мыслей о том «что теперь со всем этим делать?!»

Милости прошу всех под кат.

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

[1]: https://habrahabr.ru/post/335214/
[2]: https://github.com/bosonbeard/ML_-spectrum_classification
[3]: https://habrastorage.org/web/dab/f53/7b1/dabf537b1c8c40408563e831932d4032.png
[4]: https://habrahabr.ru/post/337040/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Отчет по проекту GSoC 2017: ReactOS Apps Manager
habra.16
habrabot(difrex,1) — All
2017-09-04 10:30:04


![Reactos x GSoC][1]



Привет Хабр! Меня зовут Александр Шапошников, я студент Google Summer of Code. Этим летом я работал над проектом "ReactOS App Manager".



ReactOS уже второй год подряд получил слоты для студентов GSoC. Я следил за проектом достаточно давно и подал свою заявку, как только увидел его в списке организайци. К слову, этот проект был чуть ли не единственным, который не требовал пулл реквест, так что я смог сфокусироваться на самой заявке. Мне повезло — я стал одним из четырех студентов GSoC в ReactOS! Это был мой первый опыт в программе, и он был весьма интересным.



Менеджер приложений ReactOS (ReactOS App Manager, RAPPS) это приложение ReactOS для загрузки программ, что были протестированы командой ReactOS и сообществом. Оно так же может использоваться для изменения или деинсталяции любых установленных в системе программ. Цель этого проекта улучшение RAPPS и добавление новых полезных функций. Это — финальный отчет по проекту.


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

[1]: https://habrastorage.org/web/57c/eed/056/57ceed0561684645a2d77185b86346b8.png
[2]: https://habrahabr.ru/post/337026/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Выпуск Rust 1.20
habra.16
habrabot(difrex,1) — All
2017-09-04 12:30:05


Команда Rust рада представить выпуск Rust 1.20. Rust — это системный язык программирования,
нацеленный на скорость, безопасность и параллельное выполнение кода.



Если у вас установлена предыдущая версия Rust, для обновления достаточно выполнить:


$ rustup update stable

Если же Rust еще не установлен, вы можете [`установить rustup`][1] с соответствующей
страницы нашего веб-сайта и ознакомится с [подробными примечаниями к выпуску Rust 1.20][2] на GitHub.

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

[1]: https://www.rust-lang.org/install.html
[2]: https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1200-2017-08-31
[3]: https://habrahabr.ru/post/337058/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Nuxt.js: 28 килобайт пользы для веб-разработчика
habra.16
habrabot(difrex,1) — All
2017-09-04 13:30:04


![][1]В эту пятницу на Хабре я прочитал вводную [статью][2] про Nuxt.js, но в комментариях резюмировали, что маловато будет. Так случилось, что мы в Voximplant используем эту штуку и она приносит большую пользу. Под катом я расскажу про «киллер фичу» этого микро-фреймворка и где он может пригодиться.
[Читать дальше →][3]

[1]: https://habrastorage.org/web/694/8ca/944/6948ca944f984e9e911ab6a1871715e7.jpg
[2]: https://habrahabr.ru/post/336902/
[3]: https://habrahabr.ru/post/337050/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] PyTorch — ваш новый фреймворк глубокого обучения
habra.16
habrabot(difrex,1) — All
2017-09-04 14:30:05


![Gotta Torch?][1]



PyTorch — современная библиотека глубокого обучения, развивающаяся под крылом Facebook. Она не похожа на другие популярные библиотеки, такие как Caffe, Theano и TensorFlow. Она позволяет исследователям воплощать в жизнь свои самые смелые фантазии, а инженерам с лёгкостью эти фантазии имплементировать.



Данная статья представляет собой лаконичное введение в PyTorch и предназначена для быстрого ознакомления с библиотекой и формирования понимания её основных особенностей и её местоположения среди остальных библиотек глубокого обучения.

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

[1]: https://habrastorage.org/web/eb9/f15/e03/eb9f15e03b4b4aa19021c6842deb7eaf.jpg
[2]: https://habrahabr.ru/post/334380/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Практическое применение блокчейна как распределенного хранилища данных
habra.16
habrabot(difrex,1) — All
2017-09-04 15:30:07


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

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

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

[>] Нейросетевая игра в имитацию
habra.16
habrabot(difrex,1) — All
2017-09-04 16:00:05


Здравствуйте, коллеги. В конце 1960-ых годов прошлого века [Ричард Фейнман][1] прочитал в Калтехе [курс лекций][2] по общей физике. Фейнман согласился прочитать свой курс ровно один раз. Университет понимал, что лекции станут историческим событием, взялся записывать все лекции и фотографировать все рисунки, которые Фейнман делал на доске. Может быть, именно после этого у университета осталась привычка фотографировать все доски, к которым прикасалась его рука. [Фотография][3] справа сделана в год смерти Фейнмана. В верхнем левом углу написано: "_What I cannot create, I do not understand_". Это говорили себе не только физики, но и [биологи][4]. В 2011 году, [Крейгом Венером][5] был создан первый в мире синтетический живой организм, т.е. ДНК этого организма создана человеком. Организм не очень большой, всего из одной клетки. Помимо всего того, что необходимо для воспроизводства программы жизнедеятельности, в [ДНК были закодированы][6] имена создателей, их электропочты, и цитата Ричарда Фейнмана (пусть и с ошибкой, ее кстати позже исправили). Хотите узнать, к чему эта прохладная тут? Приглашаю под кат, коллеги.

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

[1]: https://ru.wikipedia.org/wiki/%D0%A4%D0%B5%D0%B9%D0%BD%D0%BC%D0%B0%D0%BD,_%D0%A0%D0%B8%D1%87%D0%B0%D1%80%D0%B4_%D0%A4%D0%B8%D0%BB%D0%BB%D0%B8%D0%BF%D1%81
[2]: https://ru.wikipedia.org/wiki/%D0%A4%D0%B5%D0%B9%D0%BD%D0%BC%D0%B0%D0%BD%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D0%B5_%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_%D1%84%D0%B8%D0%B7%D0%B8%D0%BA%D0%B5
[3]: http://archives-dc.library.caltech.edu/islandora/object/ct1%3A483/
[4]: http://science.sciencemag.org/content/346/6216/1455
[5]: https://ru.wikipedia.org/wiki/%D0%92%D0%B5%D0%BD%D1%82%D0%B5%D1%80,_%D0%9A%D1%80%D0%B5%D0%B9%D0%B3
[6]: http://subrealism.blogspot.ae/2011/04/what-i-cannot-build-i-cannot-understand.html
[7]: https://habrahabr.ru/post/322514/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Тестируем асинхронный код с помощью PyTest (перевод)
habra.16
habrabot(difrex,1) — All
2017-09-04 19:00:05


При подготовке материала для [курса][1], нам периодически попадаются интересные статьи, которыми хотелось бы поделиться с вами!

Автор Stefan Scherfke [“Testing (asyncio) coroutines with pytest”][2]

![][3]

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

# tests/test_coros.py

import asyncio

def test_coro():
loop = asyncio.get_event_loop()

@asyncio.coroutine
def do_test():
yield from asyncio.sleep(0.1, loop=loop)
assert 0 # onoes!

loop.run_until_complete(do_test())

В таком методе много недостатков и излишеств. Единственные интересные строки — те, что содержат операторы yield from и assert.
[Читать дальше →][4]

[1]: http://otus.ru/lessons/python-dlja-web-razrabotki/?utm_source=habr&utm_medium=affilate&utm_campaign=webdev&utm_term=profi04.09
[2]: https://stefan.sofa-rockers.org/2015/04/22/testing-coroutines/
[3]: https://habrastorage.org/web/1a8/064/bed/1a8064beddc2428ea3a95d8f32390d86.png
[4]: https://habrahabr.ru/post/337108/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Selenium для всех: как мы учим QA-инженеров работать с автотестами
habra.16
habrabot(difrex,1) — All
2017-09-04 20:00:04


![][1]



Привет, Хабр!



Меня зовут Виталий Котов, я работаю в Badoo в отделе QA, занимаюсь автоматизацией тестирования, а иногда и автоматизацией автоматизации тестирования.



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

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

[1]: https://habrastorage.org/web/604/064/f20/604064f20935433ca25f82cd9ecf6a09.jpg
[2]: https://habrahabr.ru/post/337126/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Переосмысление PID 1. Часть 4
habra.16
habrabot(difrex,1) — All
2017-09-04 20:00:03


В продолжение [третьей][1] части…
![][2]


### Касательно Upstart


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

Я это сказал, но я не могу сказать, что в целом согласен с подходом используемом в Upstart. Но для начала, чуть больше об Upstart.
[Читать дальше →][3]

[1]: https://habrahabr.ru/post/335780/
[2]: https://habrastorage.org/web/d93/180/250/d93180250c0d43869a9632dc847179bd.gif
[3]: https://habrahabr.ru/post/336834/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Транслируем WebRTC, RTSP и RTMP потоки на Media Source Extensions по протоколу Websocket
habra.16
habrabot(difrex,1) — All
2017-09-05 06:30:05


![][1]



## Media Source Extensions


Media Source Extensions (далее MSE) — это API браузера, позволяющее играть аудио и видео через соответствующие HTML5 тэги <audio/> и <video/>.

Чтобы проиграть кусок аудио или видео, нужно скормить этот chunk в данный элемент через MSE API. На основе MSE построены HLS-плееры. HLS фрагменты передаются в MSE и отображаются в плеере.

Давайте посмотрим на его [Can I Use][2] подробнее. [Читать дальше →][3]

[1]: https://habrastorage.org/web/c17/a31/68d/c17a3168da234e11a202a7b661d39631.jpg
[2]: https://caniuse.com/#search=mediasource
[3]: https://habrahabr.ru/post/337112/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

Pages: 1 ... 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 ... 133