RSS
Pages: 1 ... 28 29 30 31 32 33 34 35 36 37 38 39 40 41
[>] [Из песочницы] Прокачиваем тонкий клиент HP t5325
habra.14
habrabot(difrex,1) — All
2015-06-18 22:30:02


В этой статье речь пойдет о доработке тонкого клиента HP для установки на него Debian 8. ![][1] Тонкий клиент HP t5325 самый маленький в своем семействе и единственный построен на архитектуре ARM. Ниже приведу его основные характеристики:

* Прцессор Marvell ARM 88F6281 1.2 GHz.
* Видеокарта XGI VOLARI-Z11-A2CB-HF 64MB.
* RAM 512MB DDR2.
* Flash memory 512MB.

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

[1]: https://habrastorage.org/files/620/49f/376/62049f3760a041edb43f2337c250f796.jpg
[2]: http://habrahabr.ru/post/260631/#habracut

[>] Блокировка по access_log, легкий способ прострелить ногу или устранение конкурентов
habra.14
habrabot(difrex,1) — All
2015-06-18 23:00:02


Очередной пример, как легко прострелить себе ногу, на этот раз «переусердствовав» при защите сайта. Имён как всегда не называю, однако история показательна как-таковая, т.е. в качестве примера, как не надо «защищать» свои сервера. Эх говоришь им, говоришь — а все без толку. Упала посещаемость сайта, не совсем чтобы совсем, но довольно заметно. Смотрели логи, аналитику поисковиков и т.д. и т.п. Все вроде нормально, и кто приходит, тот даже не уходит сразу. Но не буду ходить вокруг, да около — проанализировав логи банов по IP выяснилась одна закономерность — за короткое время в бан попадало огромное количество IP-адресов. Все поголовно по одной причине — якобы как botsearch. Отротированные логи за последний месяц тоже ужасали своими размерами и даже заглядывать туда не нужно было, и так все ясно. Т.е. случилось следующее: куча клиентов просто не могла попасть на сайт. На вопрос «что-то меняли где-то с месяц назад?» был получен отрицательный ответ. Не буду утомлять здесь детективным чтивом, после недолгих поисков — картина маслом. Некий прямой конкурент этого сайта поспособствовал «утечке» клиентов, или вернее и организовал эту «странную непосещаемость». [Читать дальше →][1]

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

[>] [Из песочницы] Возможности Matlab для разработки и тестирования механистических торговых систем
habra.14
habrabot(difrex,1) — All
2015-06-19 11:00:02


Думаю, обосновывать необходимость тщательного тестирования и подбора параметров торговых стратегий нет необходимости… Лучше поясню, почему именно Matlab. В торговом терминале MetaTrader есть встроенная система тестирования и настройки торговых стратегий, позволяющая прогнать стратегию на заданном участке истории и посмотреть на результаты торговли как в графическом представлении, так и в виде таблички с характеристиками эффективности работы данной стратегии на данном участке истории. Как это выглядит для стратегии Nova, смотрите ниже. [Читать дальше →][1]

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

[>] Как работает Wargaming Common Menu
habra.14
habrabot(difrex,1) — All
2015-06-19 15:00:02


Доброго времени суток! Хочу поделиться с сообществом опытом разработки JS-виджета межпроектной навигации. Он представляет собой модуль, который подключается на большинство сайтов вселенной Wargaming ([Порталы][1], [Wiki][2], [WarGag][3] и пр.). Основная его задача — дать пользователю удобную навигацию между разными сервисами одной тематики. Но он выполняет и ряд других функций, например, отображает личные уведомления, краткие досье по профилям пользователя в каждой из наших игр и еще многое другое. ![][4] [Читать дальше →][5]

[1]: http://wotblitz.ru/
[2]: http://wiki.wargaming.net/ru/
[3]: http://wargag.ru
[4]: https://habrastorage.org/files/aac/e21/ebe/aace21ebe8c140edaf3b14b04e99dcc0.PNG
[5]: http://habrahabr.ru/post/259687/#habracut

[>] Организация «чистого» завершения приложений на Go
habra.14
habrabot(difrex,1) — All
2015-06-19 19:30:02


![][1] Здравствуйте, в данной заметке будет затронута тема организации «чистого» завершения для приложений, написанных на языке Go. Чистым выходом я называю наличие гарантий того, что в момент завершения процесса (по сигналу или по любым иным причинам кроме system failure), будут выполнены определённые процедуры и выход будет отложен до окончания их выполнения. Далее я приведу несколько типичных примеров, расскажу о стандартном подходе, а также продемонстрирую свой пакет для упрощённого применения этого подхода в ваших программах и сервисах. TL;DR: [github.com/xlab/closer][2] [![GoDoc][3]][4] [Читать дальше →][5]

[1]: https://habrastorage.org/getpro/habr/post_images/f2c/025/0cb/f2c0250cbc4e8519d706b5a35374d40d.png
[2]: https://github.com/xlab/closer
[3]: https://godoc.org/github.com/xlab/closer?status.svg
[4]: https://godoc.org/github.com/xlab/closer
[5]: http://habrahabr.ru/post/260661/#habracut

[>] Go как язык для обучения программированию
habra.14
habrabot(difrex,1) — All
2015-06-19 22:30:02




> **tl;dr:**
>
> Go достаточно многословный и строгий язык программирования с очень предсказуемой и стремительной кривой обучения, что делает его крайне удачной технологией для обучения программированию новоприбывших!

Я только приехал из штатов, после Google Code-In 2012 Grand Prize Trip, отдохнувший и веселый. Какое-то время думал написать отчет о том, чем призеры там занимались, как нас приняли в Mountain View и обо всем этом, но в какой-то момент понял, что все это совершенно бесполезно. Совсем недавно я по воле случая должен был помочь своему товарищу с домашкой по информатике (там было что-то вроде selection sort). Реализация требовалась на паскале, а я паскаль знаю очень плохо, как впрочем и другие неактуальные, по большей мере, языки программирования, вроде Ada. ![][1]В меня ударила молния и укусил гофер, после чего мое тело мутировало в какую-то Go хренотень. Иными словами, я задумался о возможном потенциале моего любимчика среди новых технологий, Go, в качестве языка для обучения программированию новоприбывших (читай: школьников). Мне кажется, у Go есть все, что в принципе может быть нужно подобной программе и даже чуточку больше (например, в школе могли бы затрагивать тему параллельного, ни в коем случае не concurrent, программирования, которую не затрагивают, просто потому что FPS вообще не умеет гонять два куска кода одновременно). Под катом, собственно, мои мысли на этот счет. Кстати, пользуясь случаем, хочу передать привет [divan0][2]! Большое спасибо за твою просветительскую деятельность в тематическом хабе: Go действительно нуждается в огласке, ведь много людей до сих пор считают, что это какая-то страшная поделка уровня Plan9 из 80-х и к тому же, без обобщенного программирования (в каждой шутке есть доля шутки), а ты рассказываешь людям очень правильные вещи на понятном для них языке! Никакого дисклаймера не будет, но я настоятельно не рекоммендую воспринимать содержимое статьи абсолютно серьезно, ведь я человек, у которого есть целых **два** гофера: синий и розовый! [Читать дальше →][3]

[1]: https://habrastorage.org/files/9e3/f49/3e2/9e3f493e2b5549918d313c2af5de89de.jpg
[2]: http://habrahabr.ru/users/divan0/
[3]: http://habrahabr.ru/post/260735/#habracut

[>] [Из песочницы] Замена HDD на NetUP стримере и установка прошивки
habra.14
habrabot(difrex,1) — All
2015-06-20 01:00:02












#### Предыстория

На днях перестал вещать один из NetUP стримеров. «Завис», подумал я (есть у них такая «особенность»), и пошел перезагружать его. Т.к. у этих стримеров не предусмотрено кнопки включения-выключения питания, или кнопки Reset, перезагружаются они только выдергиванием шнура питания. Через некоторое время, после того, как я вернул ему питание, стример вывел надпись на LCD панели: «Checking HDD filesystem...». Оставил его в таком состоянии с мыслью, что проверит диск и запустится. Однако ни через час, ни через два этого не произошло. На стримере продолжала показываться надпись о проверке HDD. Через консольный кабель подключиться не удалось. Так же не к чему не привели последующие перезагрузки. Решил достать жесткий диск и проверить его на bad block'и. Нашлось не малое количество секторов, для которых не удалось сделать Remap или Erase. Вывод простой: нужно менять жесткий диск. С самой заменой проблем нет, не рабочий вытащил, рабочий поставил. Но теперь у нас на руках голая железка без ОС (прошивки). О том, как установить прошивку «с нуля» и пойдет дальнейший рассказ. [Читать дальше →][1]

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

[>] [Из песочницы] Черная археология дата майнинга
habra.14
habrabot(difrex,1) — All
2015-06-20 02:30:02


Есть темы, по которым очень мало статей по специальности data science, но которые представляют интерес для специалистов по безопасности. Это статистические исследования логинов и паролей пользователей – данные, добытые «черными археологами» дата майнинга. ![image][1] Мне было интересно посмотреть некоторые закономерности и для этой цели я взял базу данных паролей, утёкших в 2014 году – от Яндекса, Гугла и Мейлру, объемом 6 миллионов записей. [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/49e/94d/6e5/49e94d6e54a4398855d1ffe35e035bd5.png
[2]: http://habrahabr.ru/post/260747/#habracut

[>] Куда пойти учиться на программиста
habra.14
habrabot(difrex,1) — All
2015-06-20 15:00:02


![][1] Школьники уже, кажется, сдали ЕГЭ и вот-вот отправятся подавать документы в ВУЗы. Программирование и IT-технологии пользуются стабильным спросом, примерно как юридические и экономические специальности 10 лет назад. В этой статье я расскажу как работает высшее образование для IT, как правильно выбрать IT-специальность. Статья будет полезна не только абитурентам-2015, но и школьникам старших классов, которые уже решили связать свою жизнь с IT. [Читать дальше →][2]

[1]: https://habrastorage.org/files/cc1/223/909/cc1223909cf84eeaaaf17a195593d7d4.jpg
[2]: http://habrahabr.ru/post/260713/#habracut

[>] [Перевод] Как команда PVS-Studio улучшила код Unreal Engine
habra.14
habrabot(difrex,1) — All
2015-06-20 17:30:02


![][1]Наша компания создаёт, продвигает и продаёт статический анализатор кода PVS-Studio для C/C++ программистов. Однако, наше взаимодействие с клиентами не ограничивается исключительно продажей им лицензий на продукт PVS-Studio. Например, мы занимаемся некоторыми контрактными работами. В силу NDA обычно рассказать о них мы не можем, да и интересного рассказа не получится. Названия проектов, в которых мы принимаем участие, тоже ничего не скажут большинству наших читателей. Но в этот раз, название как раз говорит о многом. Мы поработали вместе с компанией Epic Games над проектом Unreal Engine. Об этом и будет наш рассказ. [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/9f9/b32/bd4/9f9b32bd48eac393913819d51ae4f80c.png
[2]: http://habrahabr.ru/post/260755/#habracut

[>] [Из песочницы] Исправляем Alt-Tab в LabView
habra.14
habrabot(difrex,1) — All
2015-06-20 18:00:02


Когда пишешь программу в среде LabView, в определенный момент её становится слишком много для того, чтобы уместиться в один экран. «Правила хорошего тона» LabView говорят о том, что в таких случаях надо разбивать один vi файл на несколько subvi файлов. Со временем таких subvi становится очень много. Однако об удобной навигации ребята из NI как-то не позаботились. Мало того, что LabView сдвигает все свои окна в начало Alt-Tab списка (больше так не делает никто: [en.wikipedia.org/wiki/Alt-Tab][1]), так еще, несмотря на активно используемую возможность переопределять иконки для vi файлов, в списке Alt-Tab вместо них – стройные ряды из логотипов LabView: ![image][2] Некоторых такое поведение подталкивает к покупке второго монитора. Для них в значительной степени проблема этим и решается. Еще частично помогает интерфейс Windows Aero с его миниатюрами в меню Alt-Tab. Но вроде бы лежащее на поверхности решение – (а) сделать переключение такое же, как во всех остальных приложениях, и (б) выводить в списке иконки vi – стандартными средствами недостижимо. Судя по тому, что началось это едва ли не с самой первой версии, а соответствующая «идея по улучшению» пылится на «форуме по обмену идеями» с 2010 года [forums.ni.com/t5/LabVIEW-Idea-Exchange/Make-Alt-Tab-behaviour-consistent-with-other-applications/idi-p/1162219][3], просить об этом National Instruments бесполезно. Однако кое-что сделать всё-таки можно. [Читать дальше →][4]

[1]: https://en.wikipedia.org/wiki/Alt-Tab
[2]: https://habrastorage.org/files/eb1/677/117/eb1677117c194fd884572efe6eb664fc.png
[3]: https://forums.ni.com/t5/LabVIEW-Idea-Exchange/Make-Alt-Tab-behaviour-consistent-with-other-applications/idi-p/1162219
[4]: http://habrahabr.ru/post/260723/#habracut

[>] Основы Rust – Глава 2. Использование переменных и типов
habra.14
habrabot(difrex,1) — All
2015-06-20 18:00:02


![][1]

> _В [предыдущем главе][2] было много косяков с переводом. Спасибо всем за указания недочетов, текст был полностью переделан. Надеюсь эта глава получилась более «вменяемой» с моей стороны, старался как мог._

В этой главе будут рассмотрены основные строительные материалы Rust программ: переменные и их типы. Мы обсудим такие вопросы, как переменные с базовыми типами, явное указание типа и область видимости переменных. Так же, мы обсудим один из краеугольных камней в стратегии безопасности Rust — неизменяемость. [Читать дальше →][3]

[1]: https://habrastorage.org/files/1e6/5ac/160/1e65ac1605da4da8aff729d21405a101.jpg
[2]: http://habrahabr.ru/post/260147/
[3]: http://habrahabr.ru/post/260759/#habracut

[>] [Перевод] Как мы сделали из JSON язык программирования
habra.14
habrabot(difrex,1) — All
2015-06-20 19:30:06


Спустя месяцы напряжённой работы мы наконец выпустили приложение для iOS Relevant. С ним мы ломаем существующие устои взаимодействия с сервисами и контентом в сети, благодаря чему пользователь тратит куда меньше времени на привычные вещи. Достигается это путём представления приложений и веб-сервисов в виде карточек (подробнее [здесь][1]). Карточки, как независимые интерактивные единицы, показывают, каким будет будущее мобильных интерфейсов. ![image][2] [Читать дальше →][3]

[1]: https://medium.com/relevant-stories/relevant-1-0-2d79b2475e3f
[2]: https://d262ilb51hltx0.cloudfront.net/max/1024/1*C_CoWhC0yLPykFozaksLfA.jpeg
[3]: http://habrahabr.ru/post/260757/#habracut

[>] Bindings QCustomPlot для Python
habra.14
habrabot(difrex,1) — All
2015-06-20 19:30:06


Добрый день, хаброжители!

## Введение

В свободное от работы время увлекся написанием приложений на PyQt5. И свой давний проект по ведению домашней бухгалтерии [ MyWallet ][1] решил в конце мая переписать с плюсов на Python, так как в предыдущей версии были допущены ряд архитектурных ошибок, которые на хотелось исправлять. Поэтому собрав PyQt5 из исходников под Fedora 21, где-то за две недели реализовал весь функционал, который был ранее. И теперь встает вопрос в визуализации данных по расходам/доходам помесячно. Так как имел опыт визуализации данных с помощью [QCustomPlot ][2], хотел визуализацию сделать с помощью этой либы. Но к огорчению, не нашел биндов. [Подробности и исходники под катом][3]

[1]: https://github.com/dimV36/MyWallet
[2]: http://www.qcustomplot.com
[3]: http://habrahabr.ru/post/260761/#habracut

[>] Программирование для начинающих. Моё знакомство с Processing
habra.14
habrabot(difrex,1) — All
2015-06-20 22:30:02


Доброго времени суток, уважаемые. Цифровые электронные самоделки часто взаимодействуют с компьютером. Передают данные, либо управляются с него. В свете этого всегда был интерес к программированию. Мой прошлый опыт в этой области связан с интерпретатором бейсика ZX Spectrum, Qbasic’ом в рамках хобби юности и Си-86 в рамках студенчества. Были попытки освоить ECMAScript в рамках интереса к языку VRML. Встал вопрос, что выбрать сейчас? Прошу под кат. [Читать дальше →][1]

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

[>] Логирование чего угодно в Perl
habra.14
habrabot(difrex,1) — All
2015-06-21 09:30:03


![Проблема выбора][1] Для логирования сообщений Перл предлагает несколько готовых решений. Все они, как водится, размещены на [CPAN'е][2]. По запросу [«log»][3] можно найти кучу модулей на все случаи жизни. Однако, среди всех этих модулей есть один особенный, называется он [Log::Any][4]. Особенность этого модуля для логирования заключается в том, что он не занимается, собственно, логированием. Модуль Log::Any предоставляет программе (и программисту) универсальное API для обращений к другим модулям, которые занимаются непосредственно логированием. Если вас мучает проблема выбора способа логирования в Перле — эта статья для вас. [Читать дальше →][5]

[1]: https://habrastorage.org/files/603/72c/5a7/60372c5a78e84055a0d181f870b182e7.jpg
[2]: https://metacpan.org
[3]: https://metacpan.org/search?q=log
[4]: https://metacpan.org/pod/Log::Any
[5]: http://habrahabr.ru/post/260373/#habracut

[>] [Перевод] Почему я не преподаю SOLID и «принцип устранения зависимостей»
habra.14
habrabot(difrex,1) — All
2015-06-21 12:30:02




#### Почему я не преподаю SOLID

Если вы разговариваете с кем-то, кому небезразлично качество кода, уже достаточно скоро в разговоре всплывёт SOLID — аббревиатура, помогающая разработчикам запомнить пять важных принципов объектно-ориентированного программирования: ![][1] SOLID полезен. Его разработали знатоки в нашей области. Он помогает людям рассуждать о дизайне. Помогает создавать системы, устойчивые к изменениям. Раньше SOLID был краеугольным камнем моего набора средств проектирования. Я делал все возможное, чтобы сделать мой код как можно более SOLID. Я учил других поступать так же. Сегодня SOLID остается для меня важным, но я больше не пытаюсь сделать мой код SOLID. Я редко упоминаю его, когда говорю про дизайн. И тем более я не учу пользоваться им разработчиков, которым хочется почерпнуть хорошие дизайнерские методы проектирования. Он больше не находится у меня под рукой в моем «ящике для инструментов». Он лежит в пыльной коробке на чердаке. Я храню его, потому что он важен, но редко им пользуюсь. [Читать дальше →][2]

[1]: https://habrastorage.org/files/5e5/569/566/5e55695664a7484684759f990e20dbdf.png
[2]: http://habrahabr.ru/post/260781/#habracut

[>] Контракты в D
habra.14
habrabot(difrex,1) — All
2015-06-21 16:30:02


Доброго времени суток, хабр! Сегодня я хочу рассказать Вам о контрактном программировании и его реализации в D. Это очень интересная концепция построения API. Смысл заключается в формальной спецификации работы функции или класса на уровне кода, а не комментария. Пример подобной спецификации для функции: [Читать дальше →][1]

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

[>] Прогноз на Specification pattern в Domain layer — ожидаются проблемы
habra.14
habrabot(difrex,1) — All
2015-06-21 19:00:02


**Data Access Layer** – одна из наиболее больных тем. Написание хорошего слоя доступа к данным – это не тривиальная задача. Примеров реализации невероятно много, но адекватных среди них единицы. Можно ли считать реализацию шаблона Repository — DAL? Вот что предлагают MS [msdn.microsoft.com/en-us/library/ff649690.aspx][1] ![image][2] А вот и местные работы [habrahabr.ru/post/52173][3] Варианты довольно нормальные. Но когда я вижу

> «Репозиторий – это фасад для доступа к базе данных.»

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

[1]: https://msdn.microsoft.com/en-us/library/ff649690.aspx
[2]: https://habrastorage.org/getpro/habr/post_images/111/aba/3ee/111aba3ee5611cca5466dd4a6b28291a.png
[3]: http://habrahabr.ru/post/52173/
[4]: http://habrahabr.ru/post/260771/#habracut

[>] «Её» или ещё один ёфикатор
habra.14
habrabot(difrex,1) — All
2015-06-21 23:30:02


На так давно в рабочей рассылке обсуждалась тема использования буквы «ё» в документации и постах. Обсуждение затянулось на несколько месяцев… Осознав важность проблемы, написал [ёфикатор на Node.js][1]. [Читать дальше →][2]

[1]: https://github.com/hcodes/eyo
[2]: http://habrahabr.ru/post/260811/#habracut

[>] Howto Qemu-kvm Debian 8
habra.14
habrabot(difrex,1) — All
2015-06-21 23:30:02


В этом howto мы с вами просто и быстро, шаг за шагом, запустим гипервизор Qemu-KVM в debian 8. ![image][1] Будем запускать виртуальную машину в qemu-kvm от пользователя username, используя spice, qxl и virtio. Предполагается, что установлен Debian 8 amd64, с выбранными в tasksel стандартными утилитами и SSH сервером. Доустановим.

aptitude install -y firmware-linux bridge-utils etckeeper


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

[1]: http://qemu.weilnetz.de/icon/alex/logo1.svg
[2]: http://habrahabr.ru/post/260791/#habracut

[>] Re: «Её» или ещё один ёфикатор
habra.14
vit01(mira, 1) — habrabot
2015-06-22 08:19:51


Однозначно полезная утилита. Раздражает часто, когда е вместо ё пишут.

[>] ПЛИС — мои первые шаги
habra.14
habrabot(difrex,1) — All
2015-06-22 10:30:02


![][1]Недавно я все-таки сделал свой первый шаг к ПЛИС и [призвал вас за собой][2]. Мое фанатическое увлечение ПЛИС и идея о том, что ПЛИС является лучшей платформой для создания любых устройств приобрела религиозный характер. Моя секта ПЛИСоводов проповедует полный отказ от микроконтроллеров, а особо экстремистская ветвь проповедует отказ не только от [софт процессоров][3], но и вообще от последовательных вычислений! Как всегда, постижению истин помогло решение реальных задач. В сегодняшней проповеди я хотел бы рассказать об испытаниях, которые выпадают на долю молодого ПЛИСовода. Преодолевая испытания мы постигаем истину. Но остаются вопросы, на которые я не нашел ответов. Поэтому я бы очень хотел, чтобы братья-хабровчане — ПЛИСоводы с опытом, поучаствовали в обсуждении, протянули руку помощи своим младшим собратьям. Эта статья для новичков. В ней я опишу типичные проблемы, вопросы, заблуждения, ошибки, которые могут появиться в самом начале обучения (потому что они появились у меня). Однако, контекст статьи ограничен тем, что разработка ведется на ПЛИС от [Altera][4] в среде Quartus на языке [Verilog][5]. [Подробности][6]

[1]: http://habrastorage.org/files/76e/936/9e0/76e9369e05bb46ea860d7780d7075b24.jpg
[2]: http://habrahabr.ru/post/237009/
[3]: https://ru.wikipedia.org/wiki/Soft-%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80
[4]: http://www.altera.com/
[5]: https://ru.wikipedia.org/wiki/Verilog
[6]: http://habrahabr.ru/post/252261/#habracut

[>] Пишем обертку для FUSE на Java Native Runtime
habra.14
habrabot(difrex,1) — All
2015-06-22 11:30:02


В статье я расскажу как реализовать файловую систему в юзерспейсе на Java, без строчки ядерного кода. А также покажу как связать Java и нативный код без написания кода на C, при этом сохранив максимальную производительность. ![][1] Интересно? Добро пожаловать под кат! [Подробности][2]

[1]: https://habrastorage.org/files/3b2/a74/094/3b2a740945d74108a2c70a82d7c97a28.png
[2]: http://habrahabr.ru/post/260801/#habracut

[>] Миссия AllMyChanges
habra.14
habrabot(difrex,1) — All
2015-06-22 12:00:03


Когда [наш проект][1] только зарождался, он базировался на гипотезе, что почти для любой библиотеки можно найти changelog, а если найти нельзя, то можно построить его из коммит-мессаджей. Но реальность оказалась не столь радужной, как нам того хотелось: то файл changelog в каком нибудь безобразном формате попадётся, то его перестали вести, а продукт меж тем развивается, то что нибудь ещё. И тогда мы поняли, что распарсить мир – мало, надо его менять.

## Изменить что-то за один миг — необычайно сложная задача

Поэтому мы не ставим себе такую цель. Миссия [AllMyChanges][2] в том, чтобы дать разработчикам всего мира понять, что `ChangeLog` это их способ взаимодействия с внешним миром, такой же канал, как блог или твиттер-аккаунт. [][3] До появления нашего сервиса, сложно было сравнивать простой ChangeLog с блогом, поскольку не было способа подписаться на обновления. Ведь ссылку на rss фид блога можно закинуть в rss читалку, на соцпрофиль можно подписаться, зафолловив человека, а подписаться на изменения библиотеки было сложно. [хмм, что же там дальше?][4]

[1]: https://allmychanges.com/?utm_source=habrahabr&utm_campaign=our-mission
[2]: https://allmychanges.com/?utm_source=habrahabr&utm_campaign=our-mission
[3]: https://www.flickr.com/photos/d_t_vos/15962916323 "Mr. Speaker by Dick Vos, on Flickr"
[4]: http://habrahabr.ru/post/260823/#habracut

[>] Moscow Django Meetup №27: как это было
habra.14
habrabot(difrex,1) — All
2015-06-22 13:30:02


![][1]Приветствую, коллеги! Несколько недель назад состоялся [27-й Moscow Django Meetup][2], а всего через три дня, в эту среду, [состоится 28-й][3]. В этом топике я расскажу что интересного было на предыдущем митапе и что будет на следующем. Участие — бесплатное, площадка Фрии City Hall в центре Москвы ждет вас! [Слайды, видео и позитив под катом][4]

[1]: https://habrastorage.org/files/601/83e/de5/60183ede58d545abaad5afcc4d0f7507.png
[2]: https://moscowdjango.ru/meetup/27/
[3]: http://tceh.com/event/django-meetup-28/
[4]: http://habrahabr.ru/post/260843/#habracut

[>] Сбор и визуализация метрик приложения в Graphite и Graph-Explorer
habra.14
habrabot(difrex,1) — All
2015-06-22 14:30:03


Зачастую возникает необходимость отслеживать различные параметры работы приложения/сервиса. Например, интерес представляет количество запросов в секунду, среднее время ответа сервера, количество ответов сервера с различным HTTP-статусом (технические метрики), количество регистраций пользователей в час, количество платежных транзакций в минуту (бизнес-метрики) и пр. Без системы сбора метрик разработка и сопровождение продукта происходит практически вслепую. ![][1] Данная статья является руководством по настройке системы сбора и анализа метрик приложения на базе [Graphite][2] и [vimeo/graph-explorer][3]. [Читать дальше →][4]

[1]: https://habrastorage.org/files/a1e/7a0/663/a1e7a066313d456a8046389870f2e720.jpg
[2]: http://graphite.wikidot.com/
[3]: https://github.com/vimeo/graph-explorer
[4]: http://habrahabr.ru/post/260753/#habracut

[>] [Из песочницы] Сетевой интерфейс для BMW
habra.14
habrabot(difrex,1) — All
2015-06-22 14:30:03


В данной статье речь будет о локальной низкоскоростной сети взаимодействия блоков управления автомобиля BMW — I/K-bus. А точнее о том, как с ней могут взаимодействовать приложения из под Linux. На картинках проиллюстрирую созданный мною вариант. Итак, передо мной встала задача расширить функциональность моего автомобиля в области информационно-развлекательной системы. Просто мне этого очень захотелось. Автомобиль хороший, но пожилой. Его создавали во времена, когда даже mp3 не был в обширном употреблении. Поэтому многих современных удобств он лишён. К тому же есть в голове дополнительные идеи, воплотив которые, я смогу подчеркнуть свою индивидуальность. Информационно-развлекательная система выполняется на устройствах, в основе которых контроллеры с заложенными программами. Я буду здесь называть эти устройства блоками управления. Каждый такой блок управления несёт свою функциональную нагрузку, будь то поддержание температуры салона, регулировка положения сидений, воспроизведение музыки и видео, навигация и прочее. Весь этот набор блоков управления должен взаимодействовать друг с другом, управляться с места водителя и пассажиров, передавать диагностические данные. Для этой цели и была разработана сеть I-bus. В последствии появилась технически идентичная сеть K-bus и их объединение I/K-bus. [Читать дальше →][1]

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

[>] Как и где нужно применять СКЗИ — точка зрения ФСБ
habra.14
habrabot(difrex,1) — All
2015-06-22 17:00:02


8-й Центр ФСБ выложил достаточно неожиданный [документ][1]. Документ описывает рекомендации в области разработки нормативно-правовых актов в области защиты ПДн. Но этим же документом рекомендуется пользоваться операторам ИСПДн при разработке частных моделей угроз. Что же думает ФСБ о том, как и где нужно применять СКЗИ? [Читать дальше →][2]

[1]: http://www.fsb.ru/files/PDF/Metodicheskie_recomendacii.pdf
[2]: http://habrahabr.ru/post/260833/#habracut

[>] Исключительно простые задачи по AppSec .NET
habra.14
habrabot(difrex,1) — All
2015-06-22 17:00:02


![][1] Предлагаю всем размять мозг после выходных и начать рабочую неделю с простых, на первый взгляд, задачек по программированию на C#. Возможно эти задачи заставят вас посмотреть на код своих проектов с новой стороны, так как все они касаются _сумрачной_ области – области безопасности приложений, Application Security. Про AppSec и платформу .NET пишут не много, говорят еще меньше, некоторые вообще считают, что использование любого managed языка, магическим образом делает приложение защищенным. Это положение дел я пытаюсь исправить, рассказывая на конференциях про различные аспекты безопасности .NET платформы. Так на этой недели, в четверг, наше сообщество [SPB .NET Community][2] проводит митап в Санкт-Петербурге полностью посвящённый вопросам **разработки защищённых ASP .NET приложений**. Кому интересны подробности этой встречи, кто хочет узнать побольше о сообществе .NET разработчиков Санкт-Петербурга и попробовать свои силы в решении задач по AppSec .NET, приглашаю под кат! [Читать дальше →][3]

[1]: https://habrastorage.org/files/028/50e/9ea/02850e9ea9e8457189a094e178cc0f2f.jpg
[2]: http://spbdotnet.org
[3]: http://habrahabr.ru/post/260875/#habracut

[>] [Перевод] Какой язык программирования будет наилучшим для изучения в 2015 году?
habra.14
habrabot(difrex,1) — All
2015-06-22 17:00:02


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

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

[>] Масоны выбирают солнце: взлом программы для Sun Solaris & SPARC в задании NeoQUEST-2015
habra.14
habrabot(difrex,1) — All
2015-06-22 17:00:03


![][1] Уход от привычной x86 архитектуры — это всегда интересно, и в задании [NeoQUEST-2015][2] «Масоны выбирают солнце» участникам было предложено взломать программу, которая разработана и написана для Sun Solaris 2.6 версии 1995-го года, да еще и для архитектуры SPARC! Задание оказалось непростым не только для прохождения — его подготовка также заняла некоторое время. Под катом:

* Советы по установке Solaris: как сделать это, минимизировав трудозатраты?
* Запуск Solaris 2.6 под qemu для Windows 8.1
* Подробный разбор двух способов прохождения задания

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

[1]: //habrastorage.org/files/2c0/578/b7a/2c0578b7a0a1409ea270b991c2a319c9.jpg
[2]: http://neoquest.ru/timeline.php?year=2015
[3]: http://habrahabr.ru/post/255079/#habracut

[>] [Из песочницы] Копирование ключей dallas. Запись на на rw1990(rw1990.1)
habra.14
habrabot(difrex,1) — All
2015-06-22 23:30:02


Здравствуйте! Сегодня хочу рассказать о том, как сделать устройство, которое позволяет копировать Touch Memory фирмы Dallas. Статья предназначена для тех, кто имеет опыт в программирование на языках C/C++. Рассказывать, как устроен протокол OneWire я не собираюсь, т.к. в интернете куча информации на эту тему. Итак, что нам понадобится для изготовления данного устройства: 1) Atmega8 2) FTDI RL232, преобразующий USB в USART 3) Драйвер для FTDI RL232 4) Программатор(Я использовал USBasp) 5) Visual Studio 6) Atmel Studio 7) Макетная плата [Читать дальше →][1]

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

[>] [Из песочницы] Гугл внедряет проприетарный код в свободный (?) Chromium
habra.14
habrabot(difrex,1) — All
2015-06-23 00:30:03


![image][1] Не увидел про это статью на Хабре и решил написать. Вообще, политика «Гугл» иногда поражает. «Chromium» с 43 версии **без ведома пользователя** устанавливает расширение hotword (модуль веб-каталога, в котором содержится бинарный модуль NaCl), который сразу загружается для удобства пользователя, как говорит Гугл. [Я пользуюсь Chromium, как убрать расширение?][2]

[1]: https://habrastorage.org/files/b3d/680/8c2/b3d6808c2ccc472e8e24a0faa79326e2.jpeg
[2]: http://habrahabr.ru/post/260907/#habracut

[>] Nim и Go против Wikipedia
habra.14
habrabot(difrex,1) — All
2015-06-23 01:00:03




# Вступление

Прошлая неделя на Хабре прошла под знаком Go. В последнее время я все чаще начал слышать о новом языке Nim. Оба языка компилируемые, быстрые, кроссплатформенные и достаточно легкие для входа. Go уже успел завоевать любовь многих, Nim только начинает этот путь. Мне были интересны оба языка, но сложно выбрать кто из них окажется лучше пусть даже и для проектов for fun.

# Идея

Лучше всего входить в новый язык используя его на практике. Писать стандартные бенчмарки — это скучно. Надо было придумать нечто вдохновляющее. И такая идея пришла. У всех был момент, когда заходишь на Википедию и переходишь по связанным ссылка из статьи в статью. Мне стало интересно сколько понятий отделяют одну статью от другой. Другими словами, через какое минимально количество ссылок надо пройти, что бы добрать от статьи А до статьи В. [Читать дальше →][1]

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

[>] Сноуден: АНБ шпионит за иностранными антивирусными компаниями
habra.14
habrabot(difrex,1) — All
2015-06-23 08:00:05


Издание The Intercept [опубликовало][1] очередную порцию информации из секретных документов беглого сотрудника АНБ Эдварда Сноудена. Проект по шпионажу за различными антивирусными компаниями носил название «CAMBERDADA» и использовался для отслеживания их деятельности. Список вендоров указан ниже на скриншоте (из презентации АНБ). Видно, что в списке отсутствуют американские вендоры Symantec и McAfee, а также британская Sophos. ![][2] В одном из документов указано, что американские и британские спецслужбы собирали электронные письма, которые пользователи отправляли антивирусным компаниям, предупреждая их о появлении новых вредоносных программ. Там также указывается, что подразделение АНБ под названием [Tailored Access Operations (TAO)][3], которое известно как «наступательное подразделение» (_offensive security unit_), могло «перепрофилировать» вредоносное ПО для выполнения других функций, например, для обхода функций безопасности антивирусов. [Читать дальше →][4]

[1]: http://www.forbes.com/sites/thomasbrewster/2015/06/22/foreign-av-companies-targeted-by-nsa/
[2]: https://habrastorage.org/files/e3f/e56/a13/e3fe56a13d8a4943b6db72cac6219069.png
[3]: https://en.wikipedia.org/wiki/Tailored_Access_Operations
[4]: http://habrahabr.ru/post/260903/#habracut

[>] Охота на зомби из облака
habra.14
habrabot(difrex,1) — All
2015-06-23 09:30:02


![][1]На стремительно развивающийся рынок PaaS приходят все новые игроки. Не так давно в бой вступила IBM, представив широкой программерской общественности сервис Bluemix. Просто облаком с возможностью выполнения Push-to-Deploy уже никого не удивишь, и поэтому конкуренция переместилась из зоны «посмотрите, у нас тоже есть облако!» в сторону «у нас удобный интерфейс, готовые сервисы “из коробки” — и все это совершенно бесплатно, пока ваш проект не вырос». Под катом я покажу, как с помощью этой современной системы PAAS и всего нескольких строк кода сделать сервис, который будет внимательно следить за сайтом какой-нибудь онлайн-игры и присылать push-уведомления, как только появится любопытная новость. [Читать дальше →][2]

[1]: https://habrastorage.org/files/d64/a46/ed0/d64a46ed02134e88a81ba4b5eca2727b.png
[2]: http://habrahabr.ru/post/260933/#habracut

[>] Jii — JavaScript фреймворк с архитектурой от Yii 2
habra.14
habrabot(difrex,1) — All
2015-06-23 11:30:02








# Вступление

Привет всем хабровчанам, любителям Yii и Node.js. Продалжаю серию статей про фреймворк [Jii][1] и его части. В прошлых частях мы рассмотрели части фреймворка, которые можно использовать без инициализации приложения, а именно — [Query Builder][2] и [Active Record][3]. Из голосования (а так же писем и комментариев) стало понятно, что продолжать стоит. И на этот раз мы будем говорить о архитектуре и структурных составляющих фреймворка Jii. [Читать дальше →][4]

[1]: http://www.jiiframework.ru/
[2]: http://habrahabr.ru/post/260295/
[3]: http://habrahabr.ru/post/260569/
[4]: http://habrahabr.ru/post/260931/#habracut

[>] Разработка ММО РПГ – практическое руководство. Сервер (часть 2)
habra.14
habrabot(difrex,1) — All
2015-06-23 12:30:02


![Рерурс литий][1]

* Реализация AI: как сделать максимально просто?
* RPC клиент-сервер: json или бинарная «самопальщина»?
* Асинхронные сокеты или многопоточная архитектура?
* Кеширование объектов на уровне приложения или больше памяти для СУБД?
* Работа с БД без Reflection API: действительно ли это так сложно?

        Сегодня мы продолжим рассматривать архитектуру и особенности реализации игрового backend'а на С++ для онлайн игры на примере ММО РПГ [**«Звездные Призраки»**][2]. Это вторая часть статьи про сервер, начало можно прочитать [здесь][3]. [Далее][4]

[1]: https://habrastorage.org/files/22d/e05/6ce/22de056ce0de4e719c0d70c70896562b.PNG
[2]: http://starghosts.com/index.php?trsrc=108&trclcl=1&tringame=1
[3]: http://habrahabr.ru/company/starnigames/blog/257985/
[4]: http://habrahabr.ru/post/260911/#habracut

[>] [Перевод] Почему программировать так тяжело?
habra.14
habrabot(difrex,1) — All
2015-06-23 13:00:02


Привет, Хабр! _В феврале мы публиковали перевод крутой статьи "[Почему научиться программировать так чертовски тяжело?][1]", которую теперь показываем новичкам. Да, научиться программировать – это целая история, длинная, с кучей разных этапов, с эмоциональными взлетами и падениями. Мы все через это проходили (или еще проходим – так держать!). К сожалению, нет такого момента, когда можно встать и заявить, что «я закончил обучение и теперь я программист!». Учиться придется всю жизнь, и всю жизнь вы будете встречать неведомые проблемы, сталкиваться с совершенно непонятными ситуациями и спрашивать «какого хрена?!» даже будучи профессиональным программистом с многолетним стажем. Сегодня мы публикуем перевод заметки «Почему программировать так тяжело?». Тем, кто еще изучает основы программирования и разработки будет полезно узнать, что их ждет в будущем. А опытным разработчикам будет просто приятно взглянуть на реальность и покивать головой._ ![][2] Много лет назад я думал, что программировать легко, но прошли годы, и я понял, что это не так. Всё из-за неверного восприятия того, что я считал программированием и того, какую работу выполняет программист. Вначале я думал, что программировать – это только указывать компьютеру, что делать, эта часть процесса относительно лёгкая. После двадцати с лишним лет опыта, я действительно пришёл к выводу, что эта часть программирования достаточно лёгкая. [Читать дальше →][3]

[1]: http://habrahabr.ru/company/hexlet/blog/251411/
[2]: https://habrastorage.org/files/2b6/809/daa/2b6809daa0194321818f2c01743a49d8.jpg
[3]: http://habrahabr.ru/post/260949/#habracut

[>] Пишем на JS в функционально-декларативном стиле
habra.14
habrabot(difrex,1) — All
2015-06-23 17:30:03


![][1]

# Введение

Я люблю функциональные языки за их простоту, ясность и предсказуемость. Пишу в основном на Elixir / Erlang / OTP, пробовал другие языки, но Erlang с его акторами пока мне гораздо ближе чем например Lisp или Haskell. Как известно Erlang == web, а у чего-либо написанного для веба порой бывает клиентский веб-интерфейс: html, css, js — содержимое. Увы js это стандарт современного веба, для него есть библиотеки почти под любую задачу почти на все случаи жизни, да и это более-менее единственное доступное средство что-то выполнить в браузере на стороне клиента. Поэтому нам всё-таки нужен js. Сперва мне подумалось «Лямбды и функции высшего порядка есть, значит писать на js будет просто. Выучу синтаксис и буду писать так же как пишу в Erlang/Lisp/Haskell». Как же я ошибался. [Читать дальше →][2]

[1]: https://habrastorage.org/files/72e/b82/252/72eb822524f0413db211508b78f24adf.jpg
[2]: http://habrahabr.ru/post/260961/#habracut

[>] Хакатон по глубинному обучению (deep learning)
habra.14
habrabot(difrex,1) — All
2015-06-23 17:30:03


Глубокое обучение (deep learning) бурно развивается, и стабильно растёт список новых прорывов и областей его применения ([обработка изображений][1], [распознавание речи][2], [обучение с подкреплением][3], [нейромашинный перевод][4], вычислительная фармацевтика [1][5] и [2][6] и далее). Как следствие, крупнейшие мировые IT-компании (Google, Facebook, Baidu и многие другие) продолжают активно внедрять технологии глубокого обучения, создавая новые рабочие места. Тем временем, возникает настойчиво поддерживаемая журналистами иллюзия, что вот-вот технологии глубокого обучения решат проблему создания искусственного интеллекта [[1][7], [2][8], [3][9], [4][10]]. Но реальность такова, что круга нерешённых задач хватит ещё на много диссертаций (см. [презентация][11] Я. Лекуна (Yann LeCun) на CVPR15, [заметка][12] Ю. Шмидтхубера (Jürgen Schmidhuber), [пост][13] Б. Гёртцеля (Ben Goertzel), уже упомянутые в [статье][14] на Хабре [работы][15] Дж. Хинтона (Geoffrey Hinton)). Осознавая этот факт, специалисты в машинном обучении стремятся повысить свою квалификацию; как показатель, на 100 мест в [летней школе][16] по глубокому обучению Ёшуа Бенжио (Yoshua Bengio) в этом году было более 600 заявок. Наверно, не многие из читателей Хабра имели возможность попасть на школу Ё. Бенжио, однако, получить опыт и знания по глубокому обучению можно будет в процессе интенсивного недельного соревнования (хакатона), которое пройдет в Москве в июле. У участников хакатона будет возможность прослушать лекции от ведущих мировых специалистов, применить полученные навыки на практике и выиграть призы. ![][17] [О том как это будет][18]

[1]: http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf
[2]: http://www.forbes.com/sites/roberthof/2013/05/01/meet-the-guy-who-helped-google-beat-apples-siri/
[3]: https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf
[4]: http://104.131.78.120/
[5]: http://blog.kaggle.com/2012/10/31/merck-competition-results-deep-nn-and-gpus-come-out-to-play/
[6]: http://www.bioinf.jku.at/publications/2014/NIPS2014a.pdf
[7]: http://www.technologyreview.com/view/538431/deep-learning-machine-beats-humans-in-iq-test/
[8]: http://www.technologyreview.com/view/537101/deep-learning-machine-solves-the-cocktail-party-problem/
[9]: http://www.newyorker.com/news/news-desk/is-deep-learning-a-revolution-in-artificial-intelligence
[10]: http://www.forbes.com/sites/anthonykosner/2014/12/29/tech-2015-deep-learning-and-machine-intelligence-will-eat-the-world/
[11]: https://drive.google.com/file/d/0BxKBnD5y2M8NVHRiVXBnOVpiYUk/view?sle=true
[12]: http://people.idsia.ch/~juergen/naturedeepmind.html
[13]: http://wp.goertzel.org/google-deepminds-new-video-game-ai/
[14]: http://habrahabr.ru/post/259191/
[15]: http://www.cs.toronto.edu/~fritz/absps/transauto6.pdf
[16]: https://sites.google.com/site/deeplearningsummerschool/
[17]: https://habrastorage.org/files/cb1/2df/836/cb12df836579401c9b20b65ae39058ee.png
[18]: http://habrahabr.ru/post/260795/#habracut

[>] Сборка Кубика Рубика генетическим алгоритмом online без смс
habra.14
habrabot(difrex,1) — All
2015-06-23 19:30:02


![][1] В то время пока я собирался на ланч, мой ко-воркер Дейв окликнул меня: «Хэй, Алекс, а ты не хочешь заниматься улучшениями навыков своего программирования?». Я задумался. Это было интересное предложение, но я склонялся ответить отказом: «Сейчас я занимаюсь развитем навыков говорения на языках, дружище!». Ладно, шучу. Утро началось с того, что я добрался до почты и заполучил в руки копеечный китайский Кубик, случайно заказанный на али. К обеду я проштудировал мануал сборки и обновил мышечную память, а к вечеру пришло осознание, что я наигрался. Будущее кубика было ясным: он будет пылиться на полке, раз или два в неделю может быть я буду его собирать, чтобы привести мысли в порядок или отвлечься, но не более того. Соревнование в механической скорости сборки? Non merci, уж лучше скворечники делать… Ситуацию, как всегда, спасли мысли об автоматизации. После недолгого изучения я узнал рекогнисцировку. Для начала, число Бога уже давно найдено и равно 20. Правда задача сборки от этого не упрощается, т.к. использовать граф кратчайших путей для всех возможных конфигураций кубика не очень спортивно и немножко накладно по ресурсам. Алгоритм Бога предполагает под собой некое разумное количество использованной памяти, и в то же время обязан обеспечить минимально возможное число модификаций. Так вот, такого алгоритма еще нет. Есть ряд алгоритмов, позволяющих заметно ускорить сборку по сравнению с традиционными шаблонными методоми, но повторять кем-то уже проложенный (математически) путь мне показалось скучным. Если кому интересно, вот [хороший анализ][2] Далее есть традиционные шаблонные методы. Идея здесь в послойной сборке снизу вверх с использованием формул. Формула — последовательность модификаций Кубика, приводящая к таким-то целевым модификациям, и таким-то побочным. Соответственно, побочные модификации почти всегда падают на еще не собранные слои. Различаются шаблонные методы уровнем детализации шаблонов. Всякого рода спидкуберы знают все мыслимые шаблоны для большого количества частных случаев, что позволяет отыграть лишнюю 0.1 секунду с каждой модификации на соревнованиях. Пример, [на что еще можно потратить жизнь][3]. Итак, я постепенно формировал для себя задачу. В итоге, формулируется она так: **за кратчайшее реальное время необходимо написать решалку для Кубика Рубика.** Что мы знаем о Кубике? Число его состояний описывается как

> (8! × 3^7) × (12! × 2^11)/2 =
>
> **43 252 003 274 489 856 000**

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

[1]: https://habrastorage.org/files/653/6b2/e84/6536b2e842b546c584e37f59b9e6ebf3.jpg
[2]: http://mike.verdone.ca/media/rubiks.pdf
[3]: http://www.youtube.com/watch?v=Jcv4ePMPN_U
[4]: http://habrahabr.ru/post/260965/#habracut

[>] Немного о юнит-тестировании и внешних API в PHP
habra.14
habrabot(difrex,1) — All
2015-06-23 20:00:02


Юнит-тестирование — одна из неотъемлемых частей процесса разработки, и оно становится сложнее и противоречивее, если основная задача Вашего кода — отправлять запросы ко внешним API и обрабатывать ответы. Немало копий сломано о тему, каким должно быть тестирование кода, завязанного на внешних источниках, и где проходит грань между тестированием собственного кода и чужих API. На этом этапе разработчикам приходится решить, какие запросы отправлять на удалённый сервер, а какие симулировать локально. Существует немало решений как для отправки запросов, так и для их симуляции. В своём посте я расскажу, как сделать и то, и другое на базе HTTP клиента Guzzle. ![][1] [Упростить себе жизнь][2]

[1]: https://habrastorage.org/files/8b2/d17/0e4/8b2d170e4de74b9d91d7fa160656b8ad.jpg
[2]: http://habrahabr.ru/post/260221/#habracut

[>] TKGate — open-source симулятор цифровых схем: проект снова жив
habra.14
habrabot(difrex,1) — All
2015-06-23 22:30:02


TKGate ( [tkgate.org][1] ) — это симулятор цифровых схем на базе Verilog с открытым исходным кодом. Он работает в ОС Linux. Симулятор написан на связке C и Tk/Tcl. Автором проекта является Jeffery P. Hansen (неактивен). Сейчас разработкой занимается наш соотечественник Андрей Скворцов. На прошлой неделе после шестилетнего (!) перерыва в разработке вышла новая версия симулятора TKGate-2.0. Вот так выглядит TKGate: ![][2]

* Официальный сайт проекта [tkgate.org][3]
* Репозиторий проекта на Bitbucket: [bitbucket.org/starling13/tkgate/branch/2.0][4]

Под катом более подробный разбор TKGate. [Читать дальше →][5]

[1]: http://tkgate.org/
[2]: https://habrastorage.org/files/39f/300/304/39f3003042b24456b3b450dc9dd361d8.png
[3]: http://tkgate.org/
[4]: https://bitbucket.org/starling13/tkgate/branch/2.0
[5]: http://habrahabr.ru/post/261005/#habracut

[>] Генерация маппинга через t4 шаблоны
habra.14
habrabot(difrex,1) — All
2015-06-24 08:00:03


![][1] Здравствуйте! Наш проект уже достиг такой стадии когда встал вопрос об оптимизации производительности. После анализа слабых мест, одно из возможных путей для оптимизации был способ избавления от AutoMapper’а, он хоть и не является самым тормозным местом, но является тем местом, которое мы можем улучшить. AutoMapper используется у нас для маппинга DO объектов в DTO объекты для передачи через WCF сервис. Вручную написанный метод с созданием нового объекта и копированием полей работает быстрее. Писали маппинг вручную — безрадостная рутина, часто были ошибки, забытые поля, забытые новые поля, поэтому решили написать генерацию маппинга через t4 шаблоны. По сути нам надо было сверить список пропертей и типов, и написать копирование, но не всё так гладко в датском королевстве. [Читать дальше →][2]

[1]: https://habrastorage.org/files/2f5/2dc/82e/2f52dc82e83f4a56b10c72ca833af20d.png
[2]: http://habrahabr.ru/post/260963/#habracut

[>] [recovery mode] Как студент Комплекс Физических Программ писал
habra.14
habrabot(difrex,1) — All
2015-06-24 10:00:02


Шёл далёкий 2004 год. Я был студентом второго курса технической специальности одного местного вуза на факультете физики. Ничего не предвещало, как говорится. Наш преподаватель физики, по совместительству, проректор, задумал провести у нас экспериментальный курс на тему компьютерного моделирования физических процессов. Суть курса заключалась в том, что нам рассказывают про различные методы всяких там приближённых вычислений и прочих численных интегрирований, а мы реализуем это всё у себя в коде кто на чём горазд, а горазды чаще всего на турбо паскале. И были у преподавателя готовые программы, написанные на том же паскале несколько ранее. Насколько ранее — история умалчивает. Но, справедливости ради, стоит заметить, что реализованы добротно со всякими наворотами, реализующими красивости, и хаками, позволяющими хоть как-то раздвинуть рамки того видеорежима, который позволял использовать досовский турбо паскаль. И вот тут то я загрустил. С одной стороны грусть навевали однокурсники, которые не в зуб ногой (были, которые и в зуб, но в подавляющем меньшинстве), с другой — софт на крайне устаревшей технологии. Во мне эта ситуация вызывала протест. Я только буквально недавно недавно освоился в Delphi и написал наброски 3D шутера под OpenGL, а тут — такое. Ну и захотелось мне выпендриться, показать какой я молодец, уделать всех. Юношеский максимализм пёр изо всех щелей. Первые робкие попытки заключались в реализации программ из методички на Delphi, потом я пытался сделать аналоги программ преподавателя, а в итоге меня осенило: нужно объединить весь этот софт под крылом одной программной среды, а лучше… а лучше вообще к чертям всё переписать, создав одну большую программу, в которой будет куча различных физических опытов! Я не ставил целей сделать что-то коммерчески успешное или просто кому-то нужное, в то время я программировал чисто для души. Это был первый мой крупный проект. Было много периодов апатии, чередующихся с периодами вдохновлённости и оптимизма. В конце концов, спустя пол года, на свет родился он — проект, который я незамысловато назвал по его сути, — Комплекс Физических Программ. ![][1] [Читать дальше →][2]

[1]: https://habrastorage.org/files/73f/241/7d2/73f2417d2749435c989b32aa17234d6c.jpg
[2]: http://habrahabr.ru/post/261021/#habracut

[>] Конкурс MiTM Mobile: как ломали мобильную связь на PHDays V
habra.14
habrabot(difrex,1) — All
2015-06-24 13:30:04


[![][1]][2] Хотя мы не раз публиковали исследования о возможностях [прослушки мобильной связи][3], [перехвата SMS, подмены абонентов][4] и [взлома SIM-карт][5], для многих читателей эти истории всё равно относятся к области некой сложной магии, которой владеют только спецслужбы. Конкурс [MiTM Mobile][6], впервые проводившийся в этом году на PHDays, позволил любому участнику конференции убедиться, насколько легко можно проделать все вышеописанные атаки, имея в руках лишь телефон на 300 рублей с набором бесплатных хакерских программ. [Читать дальше →][7]

[1]: https://habrastorage.org/files/cbd/d8b/72c/cbdd8b72ccee45378589429363cb03b6.png
[2]: http://habrahabr.ru/company/pt/blog/261035/
[3]: http://habrahabr.ru/company/pt/blog/245113/
[4]: http://habrahabr.ru/company/pt/blog/226977/
[5]: http://habrahabr.ru/company/pt/blog/243697/
[6]: http://www.phdays.ru/program/contests/#40923
[7]: http://habrahabr.ru/post/261035/#habracut

[>] Механизмы профилирования Linux
habra.14
habrabot(difrex,1) — All
2015-06-24 15:00:03


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

[1]: https://habrastorage.org/files/367/3e7/2da/3673e72da71843829004e9b11c86dcf1.jpg
[2]: http://metrotek.spb.ru/ethond.html
[3]: http://metrotek.spb.ru/b3et.html
[4]: http://lwn.net
[5]: http://habrahabr.ru/post/261003/#habracut

[>] [Перевод] Использование монад в С++. Часть 1: монада списка
habra.14
habrabot(difrex,1) — All
2015-06-24 15:00:03


Иногда программисты на С++ просят привести пример задачи, которая не может быть решена без использования монад. Начнём с того, что этот вопрос неверен сам по себе — это всё-равно, что спрашивать, существует ли задача, которая не может быть решена без циклов. Очевидно, если в вашем языке есть поддержка оператора goto, вы можете обойтись без использования операторов цикла. Что монады (и циклы) могут сделать для вас, это упростить ваш код и помочь лучше его структурировать. Как использование циклов превращает спагетти-код в нормальный, так и использование монад может превратить ваш код в императивном стиле в декларативный. Эта трансформация может помочь легче писать, понимать, поддерживать и расширять ваш код. Ну и вот вам задачка, которая может попасться на собеседовании. Она не совсем тривиальна, возможно несколько подходов к решению и лучший из них не сразу очевиден — как-раз то, над чем стоит подумать. Вам предлагается следующий пазл:

s e n d
+ m o r e
---------
m o n e y


Каждая буква соответствует цифре от 0 до 9. Нужно написать программу, которая подберёт такие соответствия, чтобы написанная операция сложения была верной. Перед тем, как продолжить чтение статьи — подумайте минутку, как бы вы решили эту задачу? [Читать дальше →][1]

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

Pages: 1 ... 28 29 30 31 32 33 34 35 36 37 38 39 40 41