RSS
Pages: 1 ... 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 ... 210
[>] [Перевод] Какой язык программирования будет наилучшим для изучения в 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

[>] Внутри антивируса для сайтов Вирусдай — Часть 1
habra.14
habrabot(difrex,1) — All
2015-06-24 17:30:02


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

[1]: https://habrastorage.org/files/c0f/d95/768/c0fd957680fb4c2aa4f750cff6141986.png
[2]: https://virusdie.ru/
[3]: http://habrahabr.ru/post/261039/#habracut

[>] Маленькие радости структурированных метаданных
habra.14
habrabot(difrex,1) — All
2015-06-24 17:30:02


Несколько дней назад я помогал в проекте интеграции [Ultima Businessware][1] и другой учетной системы. Кроме прочего, я хотел получить список того, что должно синхронизироваться в системе не только «из головы», но и каким-то объективным способом. Что получилось — под катом. [Читать дальше →][2]

[1]: http://www.ultimabusinessware.com/
[2]: http://habrahabr.ru/post/260897/#habracut

[>] Релиз CrystaX NDK 10.2
habra.14
habrabot(difrex,1) — All
2015-06-24 17:30:02


Новая версия [CrystaX NDK 10.2.0][1] доступна для скачивания. В этой версии мы сконцентрировались в основном на исправлениях и мелких улучшениях, но есть и несколько более крупных фич. [Читать дальше →][2]

[1]: https://www.crystax.net/android/ndk
[2]: http://habrahabr.ru/post/261049/#habracut

[>] Антивирусы под прицелом: большая дыра в ESET и атака на Касперского
habra.14
habrabot(difrex,1) — All
2015-06-24 17:30:02


[![][1]][2] Месяц июнь оказался богат на новости, посвященные компроментации двух лидеров российского рынка антивирусного ПО. Первую из этих историй [рассказала][3] сама «Лаборатория Касперского», не без юмора назвав отчёт Duqu Bet и как бы намекая на [израильское происхождение][4] атакующих. Однако два дня назад появились более серьезные материалы на ту же тему: издание Intercept опубликовало очередное откровение Сноудена, в котором рассказывается, что американские и британские спецслужбы ещё в 2008 году «отчитались о проделанной работе» по взлому анивирусных продуктов Касперского. Согласно этим документам, британская GCHQ [изучала][5] продукты ЛК для того, чтобы помешать антивирусам выявлять атаки спецслужб. А американская NSA [искала уязвимости][6] в антивирусе для того, чтобы следить за пользователями благодаря высоким привилегиям доступа, которые получает защитное ПО на компьютерах своих пользователей. [Читать дальше →][7]

[1]: https://habrastorage.org/files/c67/0be/37c/c670be37c9974d89a1818996b21a5e89.jpeg
[2]: http://habrahabr.ru/company/pt/blog/261075/
[3]: https://blog.kaspersky.co.uk/kaspersky-statement-duqu-attack/
[4]: http://top.rbc.ru/technology_and_media/10/06/2015/557871cb9a794767160bd44b
[5]: https://firstlook.org/theintercept/document/2015/06/22/gchq-warrant-renewal/
[6]: https://firstlook.org/theintercept/document/2015/06/22/kaspersky-user-agent-strings/
[7]: http://habrahabr.ru/post/261075/#habracut

[>] Turing’s Cathedral: происхождение цифровой вселенной
habra.14
habrabot(difrex,1) — All
2015-06-24 17:30:02


Привет, хабр! Хочу рассказать про одну отличную, но в русскоязычном сегменте пока еще малоизвестную книгу — Turing’s Cathedral. [![][1]][2] [![][3]][4] Она описывает события сороковых-пятидесятых годов XX века, коими сопровождалась разработка и строительство первых в мире электронных цифровых компьютеров общего назначения. Но историей и устройством этих машин (ENIAC, EDVAC и так далее) уже давно [никого не удивишь][5], особенность же этой книги в том, что автор попытался максимально полно воссоздать происходящие в то время события — все мелкие детали, мнения, задумки и решения людей, вовлеченных в этот проект. Для этого он собрал все, до чего смог дотянуться — книги, статьи, мемуары, письма, технические отчеты, отладочные листинги, вахтенные журналы, личные записки, дневники и многое другое. Лично на рубеже веков провел десятки интервью с очевидцами тех событий и родственниками тех, кого уже не было в живых к тому моменту. Получилась уникальная ситуация — Дайсону удалось реализовать наверное последнюю возможность получить достоверную и не публиковавшуюся ранее информацию из первых рук. В итоге получился этакий эпохальный труд, дающий современному человеку возможность погрузиться в ту эпоху, когда понятия “программист” как такового не существовало, а принципы построения вычислительной техники, лежащие в основе практически всех используемых в настоящий момент устройств, еще только начинали формироваться. [Читать дальше →][6]

[1]: https://habrastorage.org/files/804/cf3/1f5/804cf31f53d74aa7964a05465c9b2803.jpg
[2]: https://habrastorage.org/files/c67/db0/5d3/c67db05d342e42388a59ff9708d1b8a4.jpg
[3]: https://habrastorage.org/files/eca/c68/e9a/ecac68e9a4ee4aef93321305ec6d2218.jpg
[4]: https://habrastorage.org/files/e85/5f2/179/e855f21790354422a80d80cda91f5193.jpg
[5]: http://habrahabr.ru/company/1cloud/blog/246787/
[6]: http://habrahabr.ru/post/261033/#habracut

[>] Майский Python Meetup: машинное обучение и куда класть исходники
habra.14
habrabot(difrex,1) — All
2015-06-24 17:30:02


Всем привет! Мы хотим поделиться с вами записями выступлений с предыдущего Python Meetup. В этот раз мы обсуждали полезность сохранения исходного кода с Григорием Петровым и особенности применения машинного обучения с Андрем Гриненко. ![][1] [Читать дальше →][2]

[1]: https://habrastorage.org/files/ab8/bbb/21f/ab8bbb21fa1a4b3f8c30680c7dcedd0f.jpg
[2]: http://habrahabr.ru/post/261051/#habracut

[>] Программаное обеспечение Samsung способно намеренно отключать Windows Update
habra.14
habrabot(difrex,1) — All
2015-06-24 19:30:02


Именно это обнаружил Патрик Баркер (Patrick Barker) в ходе расследования инцидента с лэптопом Samsung. Как [пишет][1] в своем блоге Патрик, через форум [Sysnative][2] к нему обратился пользователь ноутбука Samsung, у которого возникла странная проблема с работой сервисов Windows Update. В ходе исследования системы на предмет вирусов, специалист, который, между прочим, является [Microsoft MVP][3], выявил исполняемы файл, ответственный за отключение службы обновления. К своему удивлению им оказался файл с недвусмысленным названием Disable\_Windowsupdate.exe и цифровой подписью компании Samsung. [Читать дальше →][4]

[1]: http://bsodanalysis.blogspot.com.au/2015/06/samsung-deliberately-disabling-windows.html
[2]: http://www.sysnative.com/forums/
[3]: https://ru.wikipedia.org/wiki/%CD%E0%E8%E1%EE%EB%E5%E5_%F6%E5%ED%ED%FB%E9_%F1%EF%E5%F6%E8%E0%EB%E8%F1%F2
[4]: http://habrahabr.ru/post/261085/#habracut

[>] Программное обеспечение Samsung способно намеренно отключать Windows Update
habra.14
habrabot(difrex,1) — All
2015-06-24 20:00:02


Именно это обнаружил Патрик Баркер (Patrick Barker) в ходе расследования инцидента с лэптопом Samsung. Как [пишет][1] в своем блоге Патрик, через форум [Sysnative][2] к нему обратился пользователь ноутбука Samsung, у которого возникла странная проблема с работой сервисов Windows Update. В ходе исследования системы на предмет вирусов, специалист, который, между прочим, является [Microsoft MVP][3], выявил исполняемы файл, ответственный за отключение службы обновления. К своему удивлению им оказался файл с недвусмысленным названием Disable\_Windowsupdate.exe и цифровой подписью компании Samsung, который хранится в папке C:\\ProgramData\\Samsung. [Читать дальше →][4]

[1]: http://bsodanalysis.blogspot.com.au/2015/06/samsung-deliberately-disabling-windows.html
[2]: http://www.sysnative.com/forums/
[3]: https://ru.wikipedia.org/wiki/%CD%E0%E8%E1%EE%EB%E5%E5_%F6%E5%ED%ED%FB%E9_%F1%EF%E5%F6%E8%E0%EB%E8%F1%F2
[4]: http://habrahabr.ru/post/261085/#habracut

[>] [recovery mode] 5 стажировок для IT-специалистов за рубежом
habra.14
habrabot(difrex,1) — All
2015-06-24 21:00:02


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

[1]: https://habrastorage.org/files/e8c/13b/e6c/e8c13be6cc24448d81a5838c9a5ecc0b.jpg
[2]: http://habrahabr.ru/post/261077/#habracut

[>] PentestBox — портативная сборка популярных security утилит
habra.14
habrabot(difrex,1) — All
2015-06-24 21:00:02


![][1] На сегодняшний день самыми популярными дистрибутивами для тестирования на проникновение являются \*nix-like дистрибутивы: Kali Linux, BlackArch Linux, Pentoo и многие другие. Они могут использоваться как в виртуальной среде, так и в качестве live системы или вообще быть установлены в виде десктопной ОС. Windows пользователи до недавнего времени были обделены (виртуальные машины не берем во внимание) такими сборками, пока не появилась волшебная коробочка — [PentestBox][2]. [Читать дальше →][3]

[1]: https://habrastorage.org/files/79c/e31/b42/79ce31b42a354b90ac778dd59281ebb6.jpg
[2]: https://pentestbox.com/
[3]: http://habrahabr.ru/post/260913/#habracut

[>] Простой алгоритм для поиска всех совпадающих под-текстов в двух текстах
habra.14
habrabot(difrex,1) — All
2015-06-25 04:30:03


По долгу службы мне часто нужно находить все пересечения между текстами (например, все цитаты из одного текста в другом). Я достаточно долго искал стандартное решение, которое бы позволило бы это делать, но найти его мне так и не удалось — обычно решается какая-то совсем или немного другая задача. Например, класс SequenceMatcher из difflib в стандартной библиотеке Питона находит самую длинную общую подпоследовательность в двух последовательностях hashable элементов, а потом рекурсивно повторяет поиск слева и справа от нее. Если в одном из текстов будет более короткая подпоследовательность, которая содержится внутри уже найденной (например, если кусок длинной цитаты где-то был повторен еще раз), он ее пропустит. Кроме того, когда я загнал в него «Войну и мир» и «Анну Каренину» в виде списков слов и попросил для начала найти самую длинную подпоследовательность, он задумался на семь минут; когда я попросил все совпадающие блоки, он ушел и не вернулся (в документации обещают среднее линейное время, но что-то в прозе Льва Толстого, по-видимому, вызывает к жизни worst-case квадратичное). В конечном итоге я придумал свой алгоритм, тем самым наверняка изобретя велосипед, который надеюсь увидеть в комментариях. Алгоритм делает ровно то, что мне нужно: находит все совпадающие последовательности слов в двух текстах (за исключением тех, что в обоих текстах входят в состав более крупных совпадающих последовательностей) и сравнивает «Войну и мир» с «Анной Карениной» за минуту. [Читать дальше →][1]

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

[>] Как оптимизировал работу с MongoDB с помощью устаревшего api или о чем молчит её спецификация…
habra.14
habrabot(difrex,1) — All
2015-06-25 09:30:02


![image][1] Однажды столкнулся с задачей: mongoDb использовался как кэш/буфер между backend на Java и frontend на node.js. Все было хорошо, пока не появилось бизнес требование перебрасывать большие объемы за короткое время через mongoDb (до 200 тыс. записей не более чем за пару минут). Для чего не так важно, важна что задача такая появилась. И вот тут уж пришлось разбираться во внутренностях монги… [Начинаем разбираться по шагам...][2]

[1]: https://habrastorage.org/files/f92/c5c/217/f92c5c217b9f46e9ae721e113cdbaec2.png
[2]: http://habrahabr.ru/post/261105/#habracut

[>] Портирование OpenWRT на новое устройство на примере ASUS DSL N12U
habra.14
habrabot(difrex,1) — All
2015-06-25 11:30:03


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

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

[>] Электронный учитель для незрячих на Arduino
habra.14
habrabot(difrex,1) — All
2015-06-25 13:00:02


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

[1]: https://habrastorage.org/files/432/a96/ca7/432a96ca763c444fa2f524b973d315d5.jpg
[2]: http://habrahabr.ru/post/261117/#habracut

[>] Мегафон + мобильные рассылки = мошенничество?
habra.14
habrabot(difrex,1) — All
2015-06-25 13:30:02


Всем привет, решил написать пост чтобы вы были предупреждены о новой схеме мошенничества. Есть такая услуга: 3g-интернет имени компании Мегафон, которой я уже давно (около трех лет) активно пользуюсь. Поскольку пользуюсь активно, то деньги туда докладываю постоянно, а иногда и больше, чем нужно. Последний номер покупался вместе с 4G модемом, который используется в роутере, поэтому СМС я не вижу — их при желании всегда надо смотреть отдельно. А теперь сама история. Месяц назад внезапно обнаружил, что счет в минусе, хотя условия использования подразумевают такую ситуацию только при использовании доверительного платежа. При просмотре СМС обнаружилось, что я был подписан на около 10 мобильных рассылок по 30 рублей в день каждая. [Читать дальше →][1]

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

[>] Percona XtraDB Cluster пробрасываем ip клиента
habra.14
habrabot(difrex,1) — All
2015-06-25 13:30:02


![image][1] Доброго времени суток. На хабре много писали ([поиск][2]) про то, как поднять MySQL кластер на основе решения Percona XtraDB Cluster. Но вот на днях ко мне подошёл программер и попросил сделать так, чтобы в MySQL можно было назначать хосты пользователям для разграничения доступа. Тут я вспомнил, что ip-то там отображаются далеко не клиентские, тут всё и началось :). В интернете было найдено решение аж 2009 года, которое заключалось в использовании tproxy патча, iproute2 и iptables, но это решило проблему частично, и только в пределах той машины где стоит haproxy, но что если мы хотим ещё и читать из разных мест? Вот что было сделано: [Читать дальше →][3]

[1]: https://habrastorage.org/files/f6f/2d2/d48/f6f2d2d482664315a1ec8d4e688641c8.png
[2]: http://habrahabr.ru/search/?q=percona
[3]: http://habrahabr.ru/post/261103/#habracut

[>] [Перевод] О собеседованиях (от Эрика Липперта)
habra.14
habrabot(difrex,1) — All
2015-06-25 16:00:03




этого блога, что прекратилось после ухода Липперта из Microsoft. Конечно же, нет ничего лучше чтения оригинала, но я решил для разнообразия перевести что-нибудь из недавних постов Эрика. Надеюсь, будет интересно.



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

* не нанимать плохих работников;
* нанимать хороших работников;
* оставить кандидата с положительным впечатлением о компании.

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

[1]: http://ericlippert.com/2015/06/04/its-not-magic/
[2]: http://ericlippert.com/2015/06/01/writing-code-on-whiteboards-is-hard/
[3]: http://habrahabr.ru/post/261011/#habracut

[>] [Из песочницы] Как я получил доступ к «бесконечным» лайкам в Instagram и ВК
habra.14
habrabot(difrex,1) — All
2015-06-25 16:00:03


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

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

[>] Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек
habra.14
habrabot(difrex,1) — All
2015-06-25 17:30:02


Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF\_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++. ![][1] Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор. Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap. Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов. Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера. Хороший списочек проблем? Итак, мы их все геройски попробуем решить! [Читать дальше →][2]

[1]: https://habrastorage.org/files/0a7/541/d6f/0a7541d6ffe84bcbb881752bd97b6d27.JPG
[2]: http://habrahabr.ru/post/261161/#habracut

[>] Отчет о саммите Google RISE и сервисах для обучения детей программированию
habra.14
habrabot(difrex,1) — All
2015-06-25 18:30:02


Прошло уже несколько месяцев как наша команда съездила в Бостонский офис Google на саммит посвященный обучению детей программированию. Эмоции остыли и самое время поделиться с вами полезной информацией. Собственно этот пост для родителей, интересующихся развитием своих детей в технической сфере, руководителям кружков для юных программистов и любым интересующимся темой. ![][1] [Читать дальше →][2]

[1]: https://habrastorage.org/files/a17/362/913/a173629131a84a0b8d9d00eadf080e46
[2]: http://habrahabr.ru/post/261093/#habracut

[>] [Перевод] 5 способов вычисления чисел Фибоначчи: реализация и сравнение
habra.14
habrabot(difrex,1) — All
2015-06-25 19:00:02




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

Программистам числа Фибоначчи должны уже поднадоесть. Примеры их вычисления используются везде. Всё от того, что эти числа предоставляют простейший пример рекурсии. А ещё они являются хорошим примером динамического программирования. Но надо ли вычислять их так в реальном проекте? Не надо. Ни рекурсия, ни динамическое программирование не являются идеальными вариантами. И не замкнутая формула, использующая числа с плавающей запятой. Сейчас я расскажу, как правильно. Но сначала пройдёмся по всем известным вариантам решения. Код предназначен для Python 3, хотя должен идти и на Python 2. Для начала – напомню определение: F=1. [Читать дальше →][1]

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

[>] [Перевод] 200 блогов по разработке и проектированию
habra.14
habrabot(difrex,1) — All
2015-06-26 00:30:02


[][1] Привет, Хабр! Мы решили посмотреть на то, как крупнейшие бизнесы и студии делятся своими наработками, и адаптировали подборку технологических блогов. Уверены, что опыт коллег поможет нам всем сделать Хабр еще интереснее. [Читать дальше →][2]

[1]: http://habrahabr.ru/company/friifond/blog/260641/
[2]: http://habrahabr.ru/post/260641/#habracut

[>] [Перевод] Ansible и ChatOps или как управлять 100+ серверами из чата
habra.14
habrabot(difrex,1) — All
2015-06-26 11:00:02


![Ansible и ChatOps при помощи StackStorm, Slack и Hubot][1]

## Что такое ChatOps?

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

[1]: https://habrastorage.org/files/aa4/6e3/556/aa46e355610f4f6682a5568d678fec5d.png
[2]: http://habrahabr.ru/post/260917/#habracut

[>] Vim по полной: Компиляция и выполнение чего угодно
habra.14
habrabot(difrex,1) — All
2015-06-26 11:30:02




# Оглавление



1. [Введение][1] (vim\_lib)
2. [Менеджер плагинов без фатальных недостатков][2] (vim\_lib, vim\_plugmanager)
3. [Уровень проекта и файловая система][3] (vim\_prj, nerdtree)
4. [Snippets и шаблоны файлов][4] (UltiSnips, vim\_template)
5. **Компиляция и выполнение чего угодно (vim-quickrun)**
6. Работа с Git (vim\_git)
7. Деплой (vim\_deploy)
8. Тестирование с помощью xUnit (vim\_unittest)
9. Библиотека, на которой все держится (vim\_lib)
10. Другие полезные плагины

Как можно назвать редактор удобным, если он не умеет запускать то, что мы программируем? Особенностью описываемого мной в данной статье плагина, является возможность запуска чего угодно, будь то программный код, plantUML, LaTeX, Less и всего, что можно написать и запустить. Плагин [vim-quickrun][5] может показаться довольно запутанным и сложным, не смотря на прекрасную документацию, потому я решил коротко осветить его в этой статье, дабы вы могли быстрее начать им пользоваться. [Выполнить][6]

[1]: http://habrahabr.ru/post/259701/
[2]: http://habrahabr.ru/post/259725/
[3]: http://habrahabr.ru/post/259995/
[4]: http://habrahabr.ru/post/260591/
[5]: https://github.com/thinca/vim-quickrun
[6]: http://habrahabr.ru/post/261179/#habracut

[>] Модули JavaScript
habra.14
habrabot(difrex,1) — All
2015-06-26 14:00:05


![][1] Это третья публикация по материалам нашей [внутренней конференции Sync.NET][2]. Первая публикация была посвящена [многопоточности в .NET][3], вторая — [реактивным расширениям][4]. При разработке front-end части приложения на языке JavaScript, мы можем столкнуться с рядом традиционных проблем. Все они решаются при помощи модульных подходов. Ниже мы рассмотрим самые популярные подходы для описания модулей в JavaScript, которые существуют на сегодняшний день. [Читать дальше →][5]

[1]: https://habrastorage.org/files/e4d/d83/e0f/e4dd83e0fb274a09a208968eabba295d.jpg
[2]: http://www.nixsolutions.com/ru/blog/pleasure-time/sync-net-1/
[3]: http://habrahabr.ru/company/nixsolutions/blog/260745
[4]: http://habrahabr.ru/company/nixsolutions/blog/261031/
[5]: http://habrahabr.ru/post/261141/#habracut

[>] [Перевод] Использование монад в С++. Часть 2: монада состояния
habra.14
habrabot(difrex,1) — All
2015-06-26 14:30:02


[**Часть 1**][1] **Часть 2** Что вы сделаете, если завтра выиграете в лотерею? Купите спортивную машину, бросите работу и поедете в турне по США? А может быть станете основателем собственной компании, приумножите состояние и купите личный самолёт? Мы все любим делать планы, и чаще всего они опираются на наше финансовое состояние. Такие планы могут быть описаны функцией. К примеру, план покупки машины это:

pair<Car, Cash> buyCar(Cash cashIn)


На входе у нас некоторое количество денег (**Cash**), а на выходе новенькая машина (**Car**) и какое-то количество(не факт, что положительное!) оставшихся финансов (**Cash**).В общем, финансовый план — это функция, которая принимает деньги и возвращает результат, плюс оставшееся количество денег. Он может быть описан шаблоном:

template<class A>
using Plan = function<pair<A, Cash>(Cash)>;


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

template<class A>
Plan<A> got_it(A a)
{
return [a](Cash s) { return make_pair(a, s); };
}


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

[1]: http://habrahabr.ru/company/infopulse/blog/260809/
[2]: http://habrahabr.ru/company/infopulse/blog/260809/
[3]: http://habrahabr.ru/post/261145/#habracut

[>] XMPP отстой
habra.14
habrabot(difrex,1) — All
2015-06-26 19:00:02


У нас было социальное приложение без чата, 2 недели на его разработку и абсолютно никаких знаний о существующих протоколах для реализации IM. Не то что бы это был необходимый набор для того чтобы выстрелить себе в ногу, но в процессе работы это произошло. Несколько раз. — Паша, нам нужно сделать чат. — Да всё просто, у меня тут знакомые использовали XMPP для чата в своём приложении. Какие у нас были требования? Да ничего особенного, простой обмен сообщениями между пользователями, без групповых разговоров. Платформы: веб (с поддержкой работы через вебсокеты), Android, iOS. Создание пользователей должно автоматически производится только нашим серверным приложением. Конечно неплохо было бы иметь отметки о том прочитано сообщение или нет(предполагается, что приложение может быть использовано с разных девайсов), и иметь возможность просмотреть лог чата. В общем стандартный функционал для мгновенного обмена сообщениями в 2015 году. Бонусные баллы начисляются если сервер умеет горизонтально масштабироваться. [Читать дальше →][1]

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

[>] ReactOS — №2 в планах Российского правительства по импортозамещению ПО
habra.14
habrabot(difrex,1) — All
2015-06-26 19:00:02


Российская Федерация совместно со странами БРИКС [исследует возможность][1] отказа от стратегически важного иностранного проприетарного программного обеспечения и его [замены][2] на свободное/открытое ПО. ![image][3] Поскольку эта инициатива может оказаться весьма полезной для дальнейшего развития проекта, Алексей Брагин решил принять в ней участие от лица Фонда Реактос. С октября 2014 года он входит в рабочую группу по операционным системам, организованную Министерством связи и массовых коммуникаций (Минкомсвязь), и активно принимает участие в проходящих в её рамках дискуссиях. В апреле Минкомсвязь проработала вопрос о поддержке разработки независимых технологий в различных категориях (клиентские и мобильные ОС, серверные ОС, системы управления базами данных, пользовательское офисное ПО, средства управления «облачной» инфраструктурой и виртуализацией). Фонд Реактос представил два проекта: пользовательскую операционную систему ReactOS и RosServer — серверную ОС на базе ReactOS. [Читать дальше →][4]

[1]: http://minsvyaz.ru/ru/events/33237/
[2]: http://minsvyaz.ru/ru/events/32967/
[3]: https://habrastorage.org/getpro/habr/post_images/a4c/7bf/ad1/a4c7bfad1aad6fc0efaef889411eed5b.jpg
[4]: http://habrahabr.ru/post/261173/#habracut

[>] Мои маленькие реле: Автополив это магия
habra.14
habrabot(difrex,1) — All
2015-06-27 03:30:05


Сегодня мы будем программировать SDEPROM контроллер для системы автоматизированного полива для сада огорода. ![][1] **Дано:** Скважина с насосом, система труб с электромагнитными клапанами и поливочными насадками, установленные в десяти различных зонах сада. **Требуется:** Обеспечить последовательный запуск полива каждой зоны на заранее установленный период времени от 5 до 30 минут. Последовательность требуется в связи с тем, что скважина не может обеспечить необходимое давление сразу на двух зонах. Предусмотреть возможность применения внешнего блока управления для того, чтобы имелась возможность включать по таймеру, учитывать влажность почвы и т.п. Подкатом вы найдете мегабайты мяса, а также процесс самой медленной прошивки контроллера. Это вам не ПЛИСину по битбангу программировать! [Читать дальше →][2]

[1]: https://habrastorage.org/files/c51/9d4/b56/c519d4b56ee14044a19b8d2bc23ea407.JPG
[2]: http://habrahabr.ru/post/260643/#habracut

[>] [Из песочницы] Настройка MySQL + octopus
habra.14
habrabot(difrex,1) — All
2015-06-27 11:00:02


![][1] В данной статье я бы хотел показать как настроить MySQL для дальнейшего использования gem'a octopus, который используется для шардинга и репликации в Rails — приложениях. Итак, представим, что перед нами стоит задача развернуть три сервера(на первом крутится Rails — приложение, второй нужен для Master'a, третий будет выступать в качестве Slave'a), настроить репликацию между серверами и сделать так, чтобы octopus работал. [Подробности][2]

[1]: http://fc01.deviantart.net/fs36/f/2008/265/b/0/sand_Dolphin_and_octopus_by_ClassyFat.jpg
[2]: http://habrahabr.ru/post/261251/#habracut

Pages: 1 ... 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 ... 210