RSS
Pages: 1 ... 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 210
[>] [recovery mode] Ансамбль синапсов – структурная единица нейронной сети
habra.14
habrabot(difrex,1) — All
2015-01-28 02:30:02


![][1] В мае прошлого года сотрудники лаборатории глубокого обучения Гугла и учёные из двух американских университетов опубликовали исследование «[Intriguing properties of neural networks][2]». Статья о нём вольно пересказывалась [здесь на Хабре][3], и само исследование также критиковалось [специалистом из ABBYY][4]. Гугловцы в результате своих исследований разочаровались в способностях нейронов сети распутывать признаки входных данных и стали склоняться к мысли, что нейронные сети не распутывают синтаксически значимые признаки по отдельным структурным элементам, а хранят их во всей сети в целом как в голограмме. В нижней части иллюстрации к этой статье чёрно-белыми я привёл карты активации 29, 31 и 33-его нейронов сети, которую обучил рисовать картинку. То, что тушка птицы без головы и крыльев, изображаемая для примера 29-ым нейроном, покажется людям синтаксически значимым признаком гугловцы считают всего лишь ошибкой интерпретации наблюдателя. В статье я на реальном примере постараюсь показать, что и в искусственных нейронных сетях распутанные признаки можно обнаружить. Постараюсь объяснить, почему гугловцы увидели то, что они увидели, а распутанных признаков увидеть не смогли, и покажу, где в сети скрываются синтаксически значимые признаки. Статья является популярной версией доклада, прочитанного на конференции «[Нейроинформатика — 2015][5]» в январе этого года. Наукообразную версию статьи можно будет почитать в материалах конференции. [Очень-очень много трафика][6]

[1]: //habrastorage.org/files/d2f/bb6/5f1/d2fbb65f1362462aa64998719c22d773.jpg
[2]: http://cs.nyu.edu/~zaremba/docs/understanding.pdf
[3]: http://geektimes.ru/post/225095/
[4]: http://habrahabr.ru/company/abbyy/blog/225349/
[5]: http://neuroinfo.ru/index.php/ru/schedule/sections?year=2015#Stend5
[6]: http://habrahabr.ru/post/249031/#habracut

[>] Snaql. Raw SQL в Python-проектах
habra.15
habrabot(difrex,1) — All
2015-09-12 23:30:03


В последний год у меня появилось новое правило — каждые 3 месяца изучать новый язык программирования и его экосистему. На это есть несколько причин: новые парадигмы, концепции, инструменты, да и просто интересно что там, по ту сторону набившего с годами оскомину Python. Это простое правило позволило изучить за текущий год современные хипстерские Go, Clojure и Rust, проникнуться их идеями и best practices, что, кстати, очень положительно влияет на стиль и качество кода, когда я пишу на своём основном языке. Рассматривая стек [Luminus][1], я наткнулся на простую и в то же время шикарную, на мой вкус, библиотеку [Yesql][2] для организации SQL-запросов в проекте на Clojure и я не увидел чего-то похожего для Python (может плохо искал). Идея этой библиотеки простая — не морочьте себе голову, используйте обычные SQL-запросы, у вас есть возможность именования этих запросов и мапинга на соответствующие динамические функции. Всё это выглядит как набор микро-шаблонов с SQL и их рендер по какому-то контексту. Просто, эффективно, хочу такое у себя в проекте на Python. [Читать дальше →][3]

[1]: http://www.luminusweb.net
[2]: https://github.com/krisajenkins/yesql
[3]: http://habrahabr.ru/post/266735/#habracut

[>] Vim-like управление с помощью xmodmap
habra.15
habrabot(difrex,1) — All
2015-09-13 13:00:02


Описанная в [предыдущей статье][1] реализация Vim-like управления имеет пару существенных недостатков: подходит только к GTK-окружению и для перемещения курсора по редактируемым элементам требуется клавиша модификатор. Получается, в общем-то, не совсем и Vim-like, как было верно подмечено в комментариях. Поэтому, было принято решение описать свой опыт построения вимообразной клавиатурной среды с использованием xmodmap и командной оболочки. [Читать дальше →][2]

[1]: http://habrahabr.ru/post/266669/
[2]: http://habrahabr.ru/post/266745/#habracut

[>] Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 5 из 6
habra.14
habrabot(difrex,1) — All
2015-01-28 03:00:03




# Содержание основного курса



* [Статья 1: алгоритм Брезенхэма][1]
* [Статья 2: растеризация треугольника + отсечение задних граней][2]
* [Статья 3: Удаление невидимых поверхностей: z-буфер][3]
* Статья 4: Необходимая геометрия: фестиваль матриц
* [4а: Построение перспективного искажения][4]
* [4б: двигаем камеру и что из этого следует][5]
* [**Статья 5: Пишем шейдеры под нашу библиотеку**][6]
* Статья 6: Чуть больше, чем просто шейдер: просчёт теней



### Улучшение кода

__

* [Статья 3.1: Настала пора рефакторинга][7]
* красивый класс матриц
* как работает новый растеризатор

Пришла пора веселья, давайте для начала смотреть размер [текущего кода][8]:

* geometry.cpp+.h — **218** строк
* model.cpp+.h — **139** строк
* our\_gl.cpp+.h — **102** строки
* main.cpp — **66** строк

Итого **525 строк**. Ровно то, что я обещал в самом начале курса. И заметьте, что отрисовкой мы занимаемся только в our\_gl и main, а это всего 168 строк, и нигде мы не вызывали сторонних библиотек, вся отрисовка сделана нами с нуля! **Я напоминаю, что мой код нужен только для финального сравнения с вашим работающим кодом! По-хорошему, вы всё должны написать с нуля, если следуете этому циклу статей. Очень прошу, делайте самые безумные шейдеры и выкладывайте в комментарии картинки!!!** ![][9] [Читать дальше →][10]

[1]: http://habrahabr.ru/post/248153/
[2]: http://habrahabr.ru/post/248159/
[3]: http://habrahabr.ru/post/248179/
[4]: http://habrahabr.ru/post/248611/
[5]: http://habrahabr.ru/post/248723/
[6]: http://habrahabr.ru/post/248963/
[7]: http://habrahabr.ru/post/248909/
[8]: https://github.com/ssloy/tinyrenderer/tree/a4537e02083091003c89ba78d209cbd7bda7580d
[9]: http://habrastorage.org/files/985/b3c/0ea/985b3c0eac7544fea05f6f9b56e03690.png
[10]: http://habrahabr.ru/post/248963/#habracut

[>] [Из песочницы] Watchface ProTime для Pebble (интерфейс с кучей настроек)
habra.14
habrabot(difrex,1) — All
2015-01-28 09:30:04






С помощью Canvas был разработан для себя удобный, красивый и функциональный **Watchface **под названием **ProTime **(продолжительность жизни часов **6-8 дней**), способный отображать не только текущее время, дату и день недели, но и еще много чего. При этом графика не используется вообще, что убирает недостаток **Canvas **в виде подгрузки графики. Решил поделиться с уважаемым сообществом опытом разработки интерфейсов под часы **Pebble **на **Canvas**. **Строка состояния**: 1) Отображают название оператора, режим сети и количество антеннок режима GSM/CDMA, даже если включен другой режим; 2) Отображают **WiFi **буквой **W**; 3) Отображают профиль беззвука **zZ**, вибру **»«**; 4) Отображают уровень батареи справа: **F ** — уровень 100% (телефон заряжен), **H ** — от 50% до 100%, **M ** — от 15% до 50%, **L ** — менее 15%; 5) При отключении **Bluetooth **соединения часы вибрирует один раз долго и один раз быстро (всего получается два раза и данную вибрацию не перепутаешь ни с чем). И строка состояния исчезает, появляется значок отсутствия подключения **BT: NO**; 6) Отображают количество пропущенных звонков и смс, если они есть в виде **1:2**, где 1 количество **пропущенных звонков**, а 2 — **не прочитанных смс**. В случае, если часы отключились от телефона, вместо строки состояния отображается количество пропущенных звонков и не прочитанных смс на момент, когда часы еще были подключены к телефону, как на скрине выше. **По центру**: часы, день недели и дата. **Снизу**: отображаются данные о погоде взятые с **Yahoo **или **OpenWeather **(зависит от настроек о чем расскажу позже): текущая температура, скорость ветра в км/ч, давление в мм ртутного столба и времени захода солнца (Yahoo отображает на час позже действительного, а OpenWeather правильно, но другие показатели в Yahoo мне нравятся больше). [Читать дальше →][1]

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

[>] YouTube отказался от Flash в пользу HTML5 по умолчанию
habra.14
habrabot(difrex,1) — All
2015-01-28 11:30:02


Команда разработчиков YouTube [объявила][1] о том, что теперь [HTML5][2] будет стандартом по умолчанию для проигрывания роликов, вместо Flash. HTML5 будет использоваться для проигрывания содержимого сервиса на веб-браузерах Google Chrome, MS IE11, Apple Safari 8 и бета-версий Mozilla Firefox. Еще несколько лет назад YouTube [запустил][3] экспериментальную версию проигрывателя на HTML5 для устройств или OS, которые не поддерживают Flash Player или просто не хотят его использовать (например, iOS). ![][4] [Читать дальше →][5]

[1]: http://youtube-eng.blogspot.jp/2015/01/youtube-now-defaults-to-html5_27.html
[2]: http://ru.wikipedia.org/wiki/HTML5
[3]: http://apiblog.youtube.com/2010/06/flash-and-html5-tag.html
[4]: //habrastorage.org/files/21d/25c/eea/21d25ceeac2e4fc8ad3ce9a66ce30f84.png
[5]: http://habrahabr.ru/post/249041/#habracut

[>] [Из песочницы] Как виртуальная реальность пришла в проект на Unity
habra.14
habrabot(difrex,1) — All
2015-01-28 13:00:02


_«Веяния моды заставляют меняться»_ Наверно именно от этой мысли было принято решение подключить в проект на Unity, шлем виртуальной реальности, всем известный Oculus Rift DK2. Вопреки суровому прощупыванию рублем финансового дна удалось заказать Oculus Rift с доставкой в Санкт-Петербург по адекватной цене. Оперативно, менее чем за две недели, заказ прибыл в стены нашего офиса. ![][1] [Читать дальше →][2]

[1]: //habrastorage.org/files/863/c71/113/863c7111362e49d58c724cec26339b34.png
[2]: http://habrahabr.ru/post/249053/#habracut

[>] С 100000000 днем в году
habra.15
habrabot(difrex,1) — All
2015-09-13 16:30:02


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

[1]: https://habrastorage.org/files/9df/a9c/ba6/9dfa9cba642f4f89b9e1dfd2019871d7.png
[2]: http://habrahabr.ru/post/266757/#habracut

[>] Работа с данными среднего размера в Python. Pandas и Seaborn
habra.15
habrabot(difrex,1) — All
2015-09-14 10:00:03


Когда много работаешь с данными, нужно часто строить графики и делать разными преобразования над таблицами. Важно научиться делать это быстро и минимально напрягая мозг. Дело в том, что анализ данных во многом заключается в придумывании и проверке гипотез. Придумывать, конечно, интереснее, чем проверять. Но делать нужно и то и другое. Хорошие инструменты в тренированных руках помогают тратить на техническую работу минимальное количество времени и интеллектуальной энергии. Я попробовал много инструментов: Excel, Python+Matplotlib, R+ggplot, Python+ggplot, и остановился на связке Python+Pandas+Seaborn. Решил с их использованием уже много задач и хотел бы поделиться наблюдениями. ![][1] [Читать дальше →][2]

[1]: https://habrastorage.org/files/323/b4c/29c/323b4c29c7b14b16b85f7b97c7c93067
[2]: http://habrahabr.ru/post/266289/#habracut

[>] Пишем собственный платежный шлюз Bitcoin
habra.15
habrabot(difrex,1) — All
2015-09-14 11:00:03


По разным причинам существующие платежные шлюзы (такие как Bitpay) вас могут не устраивать. В этой статье мы рассмотрим создание собственного Bitcoin шлюза с нуля. Предполагается что читатель знаком с устройством сети биткоин. Если нет, то рекомендую эти статьи: [“Как на самом деле работает протокол Биткоин”][1] и [“Биткойн: введение для разработчиков”][2] [Читать дальше →][3]

[1]: http://geektimes.ru/post/222493/
[2]: http://bitnovosti.com/2014/01/11/bitcoin-vvedenie-dlya-razrabotchikov/
[3]: http://habrahabr.ru/post/266779/#habracut

[>] [Перевод] Самая устаревшая инфраструктура, которую только можно купить за деньги
habra.15
habrabot(difrex,1) — All
2015-09-14 13:00:06


На днях исполняется 10 лет с тех пор, как я получил самую странную свою работу. Шел 2005-ый год. Мой интерес к разработке системы управления контентом на Java для компании, недавно купившей наш стартап, неуклонно улетучивался, в то время как моей настоящей страстью была разработка компиляторов и инструментов языковой инфраструктуры (в основном для [SBCL][1]). Как-то раз я заметил открытую вакансию как-раз по этому направлению, что вообще-то было достаточно редким явлением. Я быстро прошел интервью — настолько быстро, что даже не задал нужных вопросов и проигнорировал несколько тревожных звоночков. Меня ожидало захватывающее путешествие в мир ретрокомпьютинга. [Читать дальше →][2]

[1]: https://uk.wikipedia.org/wiki/Steel_Bank_Common_Lisp
[2]: http://habrahabr.ru/post/266775/#habracut

[>] Анализ одной из модификаций шифровальщика VaultCrypt
habra.15
habrabot(difrex,1) — All
2015-09-14 13:00:06


Привет, хаб! На днях (примерно месяц назад) мне достался образец письма с троянцем, рассылаемого по электронной почте. Вообще я не являюсь профессионалом в анализе вредоносных файлов, но в данном случае оказалось, что простейший анализ можно провести и без глубоких знаний. Раньше я такого не делал, так что мне стало интересно посмотреть, что же можно отсюда вытянуть. Под катом — разбор кода дроппера и исполняемого bat-файла. **TL;DR: под катом — практически построчный разбор довольно большого и муторного BAT-файла. Код, картинки, минимум мыслей. ** **: некоторые антивирусы (в частности, мой Avast!) очень негативно реагируют на приведенные фрагменты JS-кода. При включенном Avast! у меня вместо статьи отображалась пустая страница с сообщением «Соединение было сброшено». Учтите это, если захотите почитать.**

.)



[Отключите Avast!][1]

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

[>] Apple выпустила iOS 8.1.3
habra.14
habrabot(difrex,1) — All
2015-01-28 15:30:03


Компания Apple выпустила новое обновление для iOS — iOS 8.1.3 (APPLE-SA-2015-01-27-2). В этой версии мобильной ОС исправлен ряд багов, а также security-уязвимостей, в том числе и тех, которые потенциально могут использоваться злоумышленниками для установки вредоносных программ. Мобильная ОС iOS 8 используется на таких устройствах Apple как iPhone 4s+, iPod touch 5 и iPad 2+. Apple также исправила известную уязвимость под названием Masque (CVE-2014-4493), о которой мы подробно писали [здесь][1] и которая позволяла перезаписывать одно приложение iOS на другое. ![][2] [Читать дальше →][3]

[1]: http://habrahabr.ru/company/eset/blog/243279/
[2]: //habrastorage.org/files/1e2/768/edf/1e2768edf240492abe752dfd7c8e4452.PNG
[3]: http://habrahabr.ru/post/249081/#habracut

[>] Неразрешимые задачи и нижние оценки. Лекция Александра Шеня в Яндексе
habra.15
habrabot(difrex,1) — All
2015-09-14 14:30:03


Понятно, зачем теоретики находят эффективные алгоритмы решения задач какого-то класса, а потом практики их реализуют. Но теоретики стараются также доказать, что для некоторых задач эффективных алгоритмов (и даже вообще никаких алгоритмов) не существует. Что при этом им удаётся и не удаётся, и зачем это может быть нужно? В лекции речь идет о «проблеме остановки» и задачах, к которым она сводится, о знаменитом классе NP, а также о простых нижних оценках.




Лекция был прочитана в Малой Школе анализа данных, которую Яндекс организует для старшеклассников. Автор — Александр Шень. Окончил мехмат МГУ, под руководством [Владимира Успенского][1], ученика Колмогорова, защитил диссертацию «Алгоритмические варианты понятия энтропии». Сейчас является сотрудником Института проблем передачи информации им. А.А. Харкевича РАН и Лаборатории Национального центра научных исследований Франции. Научные интересы: алгоритмы, колмогоровская сложность, логика, теория информации. Почти все книги, которые Александр Ханиевич написал о математике и программированию, находятся [в свободном доступе][2]. Под катом — расшифровка лекции. [Читать дальше →][3]

[1]: https://en.wikipedia.org/wiki/Vladimir_Andreyevich_Uspensky
[2]: http://www.lirmm.fr/~ashen/
[3]: http://habrahabr.ru/post/266785/#habracut

[>] Oracle join elimination
habra.14
habrabot(difrex,1) — All
2015-01-28 16:00:04


Оптимизатор в Oracle может применять различные способы трансформации запросов для улучшения их производительности. Одним из таких способов является **join elimination**. В официальной документации [Oracle Database SQL Tuning Guide][1] об этом способе сказано достаточно мало, в отличие от других. Приглашаю читателей под кат, чтобы поговорить об этом способе поподробнее. [Читать дальше →][2]

[1]: https://docs.oracle.com/apps/search/search.jsp?word=+join+elimination&product=e50529-01&book=tgsql
[2]: http://habrahabr.ru/post/248817/#habracut

[>] Унификация дизайна со стороны бэкенда: JavaScript на сервере
habra.15
habrabot(difrex,1) — All
2015-09-14 15:00:07


![image][1] В начале 2014 года к нам в отдел контентных проектов пришла задача унификации дизайна. Дизайнеры хотели единый стиль проектов и принципы работы интерфейсов. Это будет удобно пользователям, облегчит запуск новых проектов и редизайн существующих (более подробно об этом [писал][2] Юра Ветров). Команда фронтенда получит возможность использовать схожие компоненты верстки на разных проектах, что уменьшит время разработки и поддержки существующего функционала. Для команды бэкенда задача оказалась нетривиальной: большинство наших проектов написана на Perl (Template Toolkit), Недвижимость на PHP, Дети и Здоровье используют Django. Но от нас требовалось реализовать не только поддержку единого шаблонизатора, но и согласовать единый формат отдаваемых данных в шаблоны. Обилие подгружаемых AJAX-блочков требовало поддержку еще и клиентской шаблонизации. Таким образом, задача унификации дизайна превратилась в задачу выбора единого шаблонизатора для Perl, Python, PHP и JS. [Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/e47/520/ca2/e47520ca26d7c942656c8c6b5e48ae62.jpg
[2]: http://habrahabr.ru/company/mailru/blog/263221/
[3]: http://habrahabr.ru/post/266713/#habracut

[>] Протоколирование JDBC запросов и их параметров в существующем приложении
habra.15
habrabot(difrex,1) — All
2015-09-14 16:00:05


![][1] В публикации рассмотрим как можно внедрить логирование jdbc операций в существующее приложение без его пересборки и перекомпиляции. Это даст возможность протоколировать параметры запросов, которые заполняет программа, и многие другие аспекты работы с jdbc. [Описание процесса и скринкаст...][2]

[1]: https://habrastorage.org/files/a29/9f4/f4f/a299f4f4fb244d12a5250481d050723f.png
[2]: http://habrahabr.ru/post/266781/#habracut

[>] [Из песочницы] Почему мы занимаемся переводом книги с английского на площадке GitHub
habra.15
habrabot(difrex,1) — All
2015-09-14 16:00:06


Всем привет! Недавно команда [rust\_book\_ru][1] закончила перевод книги «The Rust Programming Language» на русский язык. Когда я только присоединился к проекту перевода, начатого [kgv][2], нам несколько раз говорили: «Вы делаете перевод на GitHub? Странные вы, для краудсорсинг-перевода есть другой сервис — вот ссылка». Мы не стали переходить на другие сервисы и в итоге это решение полностью оправдалось. Я хочу рассказать о том, почему мы всё же разместили книгу на GitHub и почему даже переводчику полезно быть немного программистом. [Читать дальше →][3]

[1]: https://github.com/kgv/rust_book_ru/blob/master/AUTHORS.md
[2]: https://github.com/kgv
[3]: http://habrahabr.ru/post/266813/#habracut

[>] «Фортран – живее всех живых» или «Что нового у дедушки ifort»
habra.15
habrabot(difrex,1) — All
2015-09-14 16:00:06






Как вы уже знаете, недавно вышла новая Intel Parallel Studio XE 2016, а с ней, как и полагается, новые версии всех тулов, в том числе, и Фортрановского компилятора. Он всё ещё «жив курилка», активно развивается, при это весьма востребован и используется множеством разработчиком, особенно в HPC и академической среде. Новая версия, как всегда, делает жизнь этих разработчиков чуточку легче, поддерживая новые стандарты и давая больше возможностей. Давайте посмотрим, что появилось в версии 16.0. [Читать дальше →][1]

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

[>] [Из песочницы] Kotlin и свои почти языковые конструкции
habra.15
habrabot(difrex,1) — All
2015-09-14 16:30:05


![][1]Скорее всего, из разработчиков, пользующихся Java, и в особенности Android-разработчиков многие уже знают про [Kotlin][2]. Если нет, то никогда не поздно узнать. Особенно если Java не устраивает вас чем-то как язык — что наверняка так — или если вы владеете Scala, но и этот язык вам не подходит, что тоже не исключено. Если кратко, то Kotlin — это статически типизированный язык, ориентирующийся на JVM, Android (компилируется в байт-код Java) и веб (компилируется в JavaScript). JetBrains, разработчик языка, ставили своей целью лаконичный и понятный синтаксис, быструю компиляцию кода и типобезопасность. Язык пока находится в предрелизном состоянии, но всё стремительно движется к релизу. К слову, после Java «переучиться» на Kotlin не составит никакого труда, в этом поможет и понятный (субъективно) синтаксис, и полная совместимость с кодом на Java в обе стороны, что позволяет Java-программисту использовать весь привычный набор библиотек. Ещё одной целью разработчиков языка была возможность его гибкого использования, в том числе для создания библиотек, внешне похожих на [DSL][3], и собственных конструкций (хороший [пример][4] типобезопасного builder'а для HTML; [статья][5] про реализацию yield). У Kotlin есть несколько фич, которые позволят решать эти задачи эффективно и красиво. Давайте с ними познакомимся. [Читать дальше →][6]

[1]: https://habrastorage.org/files/849/8e7/677/8498e76773a841a1b14e97b3b206887c.png
[2]: http://kotlinlang.org/
[3]: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA
[4]: http://kotlinlang.org/docs/reference/type-safe-builders.html
[5]: http://habrahabr.ru/post/168571/
[6]: http://habrahabr.ru/post/266817/#habracut

[>] [Из песочницы] Код 15-летней давности и газета объявлений
habra.15
habrabot(difrex,1) — All
2015-09-14 17:00:04


Увидев переводную [публикацию ][1]о поддержке древнего как кости мамонта legacy-кода, не могу не поделиться историей из своего опыта, а заодно, и призвать написать тех, кто также как и я сталкивался с подобными задачами. Да и за державу обидно — почему подобные публикации – в основном, переводные? У нас есть и было немало программистов-самородков, ваяющих свое, ни с чем не совместимое программное обеспечение – свои собственные СУБД, графические интерфейсы, драйвера для промышленного оборудования собственной разработки. По работе я немало сталкивался с творениями местных кулибиных, и еще расскажу про них, если будет интерес. Случилась эта история в 2001 году и началась с того, что в FIDO-шной конференции $CRACK$.TALKS [Читать дальше →][2]

[1]: http://habrahabr.ru/company/infopulse/blog/266775/
[2]: http://habrahabr.ru/post/266833/#habracut

[>] Шпаргалки Java программиста 2: Триста пятьдесят самых популярных не мобильных Java opensource проектов на github
habra.15
habrabot(difrex,1) — All
2015-09-14 17:00:04


[![][1]][2] **Что это и зачем оно надо**: Как известно, главное преимущество Java мира в том в нем существует огромное количество open-source проектов на на все случаи жизни, однако найти нужный на github'e не так просто, так как описание проекта часто мало информативно, зачастую сложно даже понять этот проект для Android'a или нет. В этой статье я автоматически и полуавтоматически собрал Java проекты, убрал старые и проекты только для Android'a, выбрал 350 набравших больше всего звезд, разделил по категориям и перевел описания. Если вы хотите убедиться что баз данных пишут не только на C, найти проекты для работы с большими данными или нейронными сетями, просто узнать какие новые возможности можно найти в Java мире open-source это статья вам, думаю, может пригодится. [Читать дальше →][3]

[1]: https://habrastorage.org/files/7c9/4a0/261/7c94a02610ce47d289f778e1c8dd9673.jpg
[2]: http://habrahabr.ru/post/266821/
[3]: http://habrahabr.ru/post/266821/#habracut

[>] Универсальный способ мониторинга Asterisk с помощью Zabbix
habra.14
habrabot(difrex,1) — All
2015-01-28 16:00:04


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

[1]: http://habrastorage.org/files/700/841/279/700841279f7f460e82d1e4d8ae9ee3a8.png
[2]: http://habrahabr.ru/post/249055/#habracut

[>] Исследование: Почти все популярные межсетевые экраны пропускают XSS-атаки
habra.15
habrabot(difrex,1) — All
2015-09-14 17:30:04


[![][1]][2] Исследователь безопасности Мазин Ахмед (Mazin Ahmed) опубликовал [результаты][3] анализа способов обхода XSS-защиты в популярных межсетевых экранах уровня приложения (Web application firewalls, WAF). Ахмед использовал несколько виртуальных машин, на которых запускались популярные браузеры Google Chrome, Opera, Mozilla Firefox и Internet Explorer. Исследователь изучал коммерческие и открытые продукты: F5 Big IP, Imperva Incapsula, AQTRONIX WebKnight, PHP-IDS, Mod-Security, Sucuri, QuickDefence, Barracuda WAF. В работе для каждого продукта был представлен хотя бы один XSS-вектор, позволявший осуществить обход защиты. [Читать дальше →][4]

[1]: https://habrastorage.org/files/048/fc4/1a0/048fc41a033e4e3897ab8a9e91cda9ea.jpg
[2]: http://habrahabr.ru/company/pt/blog/266717/
[3]: http://mazinahmed.net/uploads/Evading All Web-Application Firewalls XSS Filters.pdf
[4]: http://habrahabr.ru/post/266717/#habracut

[>] Новая уязвимость GHOST угрожает популярным дистрибутивам на базе Linux
habra.14
habrabot(difrex,1) — All
2015-01-28 18:00:02


![image][1] Уязвимость в распространенных дистрибутивах Linux может позволить злоумышленнику получить удаленный контроль над системой. Под ударом оказались пользователи Debian 7 (wheezy), Red Hat Enterprise Linux 6 & 7, CentOS 6 & 7, Ubuntu 12.04. Информация о новой уязвимости ([CVE-2015-0235][2]) в библиотеке glibc (GNU C Library) впервые была опубликована во французской [рассылке][3]. Некоторые специалисты считают, что это было сделано по ошибке, так как к тому моменту никто не успел подготовить обновления. Подробное техническое описание уязвимости и эксплойт для уязвимости можно найти на [Openwall][4], а первые описания были опубликованы в сообществе [Rapid 7][5]. [Читать дальше →][6]

[1]: http://habrastorage.org/getpro/habr/post_images/715/54e/e62/71554ee628b682412d1ea44dddfddc71.png
[2]: https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2015-0235
[3]: http://www.frsag.org/pipermail/frsag/2015-January/005722.html
[4]: http://www.openwall.com/lists/oss-security/2015/01/27/9
[5]: https://community.rapid7.com/community/infosec/blog/2015/01/27/ghost-in-the-machine-is-cve-2015-0235-another-heartbleed
[6]: http://habrahabr.ru/post/249097/#habracut

[>] [Из песочницы] Парадигма ситуационно-ориентированного программирования
habra.15
habrabot(difrex,1) — All
2015-09-14 20:00:03


Как известно, существует три вида алгоритмов: линейные, разветвленные и циклические: ![image][1] Основой всего, что сделано в методологии программирования, включая и объектное программирование стало структурное программирование, предложенное Эдсгером Дейкстрой в 1970-х годах. Одной из основных идей было введение блочных операторов ветвления (IF, THEN, ELSE) и цикличности (WHILE, FOR, DO, UNTIL и др.) вместо проблемного оператора GOTO, который приводил к получению запутанного, неудобочитаемого «спагетти-кода». Для использования в интеллектуальных системах структурное программирование обладает серьезным недостатком. [Читать дальше →][2]

[1]: https://habrastorage.org/files/091/3ca/9aa/0913ca9aacc441eaaa65eed5f8989394.png
[2]: http://habrahabr.ru/post/266829/#habracut

[>] Практикум «Intel IoT». Galileo Gen2 — Linux & Arduino
habra.14
habrabot(difrex,1) — All
2015-01-28 18:00:02


В этой части «практикума», я превращу Intel Galileo Gen2 в полноценный linux-компьютер и покажу простой способ взаимодействия Arduino- и linux-составляющих.



[Приступим!][1]

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

[>] [Перевод - recovery mode ] Начинаем любить Go
habra.15
habrabot(difrex,1) — All
2015-09-14 20:00:03


Эта статья о том, как некоторое время спустя я распробовал и таки полюбил язык Go (аки golang).

##### Жалобы

Еще год назад у меня было полно жалоб на тот или иной аспект Go. В основном я жаловался на то, что при том, что ты не можешь использовать Go как «настоящий системный язык» (в плане написать-на-нем-операционку), тебе все равно приходится думать о том, о чем обычно приходится думать в системных языках: например, использовать тута указатель или нет. Система типов лежит в непродуктивном ущелье между достаточной строгостью, чтобы стать «автоматичной» (привет адептам Haskell!) и достаточной динамичностью, чтобы не отвлекать (как в Python). Какое-то время я тупил на таких вещах, как проход по юникодовой строке не символами, а байтами и всякое такое. Я обвинял Go в том, что он так-то не всегда следует своему принципу простоты, так как в нем есть много разных узких штук, вроде `make()`. И конечно же я жаловался на то, что при работе с Go постоянно приходится повторять блоки `if err != nil { return err }`. По-началу я точно не мог назвать себя фанатом Go. В техническом плане я согласен с тем, что большинство моих жалоб корректны. Я согласен с тем, что систему типов можно было бы придумать и по-круче, а от указателей не помешало бы немного абстрагироваться. Но как только я начинаю понимать, что (не все, но многие) проблемы, на которые я жаловался, на самом деле вроде как даже и не непрягают. В действительности это напоминало нытье на целый лес, из-за пары некрасивых деревьев. В повседневном использовании языка, большинство вещей, о которых я так волновался, вообще не давали о себе знать. Я ниразу не встречал баг, так или иначе связанный с проходом по строке. В реальном коде ты почти не кастишь `interface{}` так часто, как хотелось бы тем ребятам, которые дрочат на системы типов. Ах да, нет беды в том, чтобы вызывать `make()` в одном месте и `new()` в другом. Больше всего я ругался на те архитектурные решения языка, которые усложняли создание абстракций. Ты не можешь просто так сделать структуру данных, которая станет альтернативой к встроенным структурам данных (привет кодогенерации!). Без обобщений ты не сможешь строить большие обобщенные абстракции. Скорее всего это сделано намеренно. [Читать дальше →][1]

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

[>] [Из песочницы] Прокси сервер для свободного интернета
habra.14
habrabot(difrex,1) — All
2015-01-28 19:00:04


Однажды мне окончательно надоели странички вроде «данный ресурс заблокирован по требованию», которые стали попадаться все чаще и чаще. А еще все больше стало упоминаний про «глубинный интернет», i2p, tor, onion, анонимные p2p сети и вообще повеяло хакерской романтикой детства, когда интернет был чем-то загадочным и был доступен только с двух часов ночи со скоростью 31200… В общем, была поставлена цель: сделать прокси сервер, через который можно заходить на любые сайты (включая сайты в доменах .i2p и .onion) в обход любых блокировок. Цель обеспечения анонимности не ставилась. Ужа с ежом удалось скрестить, и вот теперь я, как и 17 лет назад, исследую глубинные слои интернета. Кстати, если говорить про i2p, то скорость по ощущениям не намного больше, чем у интернета 17 лет назад. История циклична. Статья не призывает к каким-либо действиям политического или криминального характера и предназначена для тех, кто не любит рамок и ограничений и сам выбирает что и как читать. Как это работает: Основным прокси сервером явлется squid. Через cache\_peer (вышестоящий прокси) squid подключается к i2p и tor. tor является Socks прокси, а squid — http прокси, поэтому между squid и tor встраивается прослойка privoxy. Также мы имеем обновляемый ACL список всех заблокированных ресурсов в русском интернете. Squid обрабатывает запросы от браузеров следующим образом: Если запрашивается URL в домене .i2p, то запрос передается по цепочке в i2p. Если запрашивается URL в домене .onion, то запрос передается по цепочке в tor. Если запрашивается запрещенный URL, то запрос передается по цепочке в tor. Все остальные запросы отправляются напрямую самим squid. **Инструкция как сделать интернет без ограничений своими руками:** [Читать дальше →][1]

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

[>] Книга про вирусы
habra.15
habrabot(difrex,1) — All
2015-09-14 20:00:03


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

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

[>] Группируем одинаковые приложения из разных магазинов по иконке
habra.15
habrabot(difrex,1) — All
2015-09-14 20:00:03


Однажды случилось мне несчастье обратить свой взор на одну заманчивую вакансию. Все бы ничего, но, как обычно, подкинули тестовое задание. Если кратко, то нужно было сгруппировать ссылки на одно и тоже приложение в разных маркетах. По ссылкам были такие приложения как Skype, Skype WiFi, Skype Qik, Viber, и две игры с одинаковым названием Skyward. Среди магазинов были Google Play, App Store и маркет Windows Phone. В задании было так же описание граблей, мол, не надо особо привязываться на названия приложений, название компании разработчика и т.д. «Но ведь одинаковые приложения легко узнаваемы на разных платформах тупо по иконке» — подумал я, и полез выяснять детали. Но не все так просто. [Читать дальше →][1]

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

[>] Hash array mapped trie
habra.15
habrabot(difrex,1) — All
2015-09-15 01:30:01


Hash array mapped trie — это ассоциативный контейнер, который обладает свойствами хэш таблиц и trie. Операции вставки пары ключ-значение и поиск по ключу — О(1) операции. Про trie на хабре уже [писали][1]. [Читать дальше →][2]

[1]: http://habrahabr.ru/post/111874
[2]: http://habrahabr.ru/post/266861/#habracut

[>] Развертывание JetBrains Hub + Youtrack + Upsource + Nginx на своем сервере Debian 8
habra.15
habrabot(difrex,1) — All
2015-09-15 13:30:04


Несколько дней назад столкнулся с задачей развернуть систему управления разработкой, которую предлагает [JetBrains][1], а именно установить [Hub][2], [Youtrack][3] и [Upsource][4] при этом обеспечить доступ к ресурсам по удобным для всех url. Почитав про продукты и их установку на сервере из zip архивов, решил поделиться опытом и готовым решением ([скриптом][5]) для автоматического развертывания с вами. ![hub+youtrack+upsource][6]

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

[Подробности][7]

[1]: https://www.jetbrains.com/
[2]: https://www.jetbrains.com/hub
[3]: https://www.jetbrains.com/youtrack/
[4]: https://www.jetbrains.com/upsource/
[5]: https://gist.github.com/artzub/24c707c5ffe0747b0e90
[6]: https://habrastorage.org/getpro/habr/post_images/999/4d6/6ee/9994d66eea46db6e4cc43dfbecbe4bf5.png
[7]: http://habrahabr.ru/post/266871/#habracut

[>] Functional C#: Immutability
habra.15
habrabot(difrex,1) — All
2015-09-15 14:00:04


Это первая статья из небольшой серии, посвященной программированию на C# в функциональном стиле. Серия не про LINQ, как можно было бы подумать, а про более фундаметальные вещи. Навеяно F#-ом.

* **Functional C#: Immutability**
* Functional C#: Primitive obsession (coming soon)
* Functional C#: Non-nullable reference types (coming soon)
* Functional C#: Handling failures and input errors (coming soon)

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

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

[>] Процедурная генерация текстур планет на основе алгоритма Diamond-Square, часть 1
habra.14
habrabot(difrex,1) — All
2015-01-28 19:30:02


![image][1] Доброго времени суток. Как со мной бывает, как только я разобрался в каком-то сложном для себя вопросе, я сразу хочу рассказать всем решение. Поэтому решил написать серию из двух статей по такой интересной теме, как процедурная генерация. А конкретнее, я буду рассказывать про генерацию текстур планет. В этот раз я подготовился основательнее и постараюсь сделать материал качественнее, чем в моем предыдущем посте [«Простая система событий в Unity»][2] (кстати, спасибо всем за ответные посты). Прежде чем продолжить, хочу обратить ваше внимание на несколько моментов: 1)Этот генератор не претендует на реалистичность, и писал я его для того, чтобы сгенерировать уникальные текстуры для сотни маленьких шариков, которые занимают 10% экрана и к тому же прикрыты облаками. 2)Но это не значит, что я не буду рад критике. Напротив, одна из причин написания этого поста — получить советы по улучшению алгоритма, я с радостью улучшу его. 3)Чисто технический момент: я пишу на C# под Unity3d, так что думать о том, как выводить в изображение с приемлимой скоростью вам придется самим, для каждого языка и платформы свои способы. Итак, план таков: в первой статье я рассказываю о процедурной генерации планет типа «терра», потом получаю шквал критики, ради которого все и делалось, улучшаю алгоритм, дорабатываю для других типов планет и пишу вторую часть. Готовы? Поехали. [Читать дальше →][3]

[1]: http://habrastorage.org/getpro/habr/post_images/b8a/b3f/d27/b8ab3fd276ab744744eca2a1cd8376ba.jpg
[2]: http://habrahabr.ru/post/245219/
[3]: http://habrahabr.ru/post/249027/#habracut

[>] [Перевод] Категории Клейсли
habra.14
habrabot(difrex,1) — All
2015-01-28 20:30:03




#### Композиция логирования

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

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

[>] [Перевод] Как работает реляционная БД
habra.15
habrabot(difrex,1) — All
2015-09-15 15:30:07


![][1] Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть, довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг. На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас. [Читать дальше →][2]

[1]: https://habrastorage.org/files/1e7/e05/af0/1e7e05af0dc24cf2977fdd6e2bd69e9a.jpg
[2]: http://habrahabr.ru/post/266811/#habracut

[>] Три слова, способные изменить мир
habra.14
habrabot(difrex,1) — All
2015-01-29 05:30:02


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

[1]: http://habrastorage.org/files/317/77e/779/31777e7798fd42de9edbbe0fdce571ac.jpg
[2]: http://habrahabr.ru/post/249131/#habracut

[>] Проталкиваем не‐ASCII в непредназначенные для этого места
habra.14
habrabot(difrex,1) — All
2015-01-29 09:30:03


Сидел вечером дома, думал чем бы заняться. А: у Python есть отладчик, но в нём совершенно некрасивое приглашение ко вводу. Дай‐ка я впилю туда [powerline][1]. Дело казалось бы совершенно плёвое: нужно просто создать свой подкласс [pdb.Pdb][2] со своим [свойством][3], да?

def use_powerline_prompt(cls):
'''Decorator that installs powerline prompt to the class
'''
@property
def prompt(self):
try:
powerline = self.powerline
except AttributeError:
powerline = PDBPowerline()
powerline.setup(self)
self.powerline = powerline
return powerline.render(side='left')

@prompt.setter
def prompt(self, _):
pass

cls.prompt = prompt

return cls


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

[1]: https://github.com/powerline/powerline
[2]: https://docs.python.org/2.7/library/pdb.html#pdb.Pdb
[3]: https://docs.python.org/2.7/library/functions.html#property
[4]: http://habrahabr.ru/post/249129/#habracut

[>] Пешком по тайлам
habra.15
habrabot(difrex,1) — All
2015-09-15 15:30:07


![][1] Для автомобилистов проблему незнакомых улиц давно решили навигаторами. Но даже автомобилисты ходят пешком. Если магазин через дорогу, то мы встаём и идём. Трудности появляются, если предстоит пройти пятьсот метров по незнакомой улице и два-три раза свернуть. Ни один из известных нам сервисов не строил маршрут из точки А до точки Б там, где нет тропинок и тротуаров, зато полно заборов и домов причудливых очертаний. 2ГИС решил эту проблему. Мы научились строить маршруты для пешеходов по растеризованной карте местности. Карта формально представляется [ графом ][2]с вершинами на регулярной решётке в местах, где пешеход может находиться физически. Принято считать, что такой способ строить маршруты неприемлем, потому что съедает много ресурсов. Под катом — как мы с этим справились. [Читать дальше →][3]

[1]: https://habrastorage.org/files/aa0/26f/3cd/aa026f3cd53a49ee8e84313daca75891.png
[2]: https://en.wikipedia.org/wiki/Graph_(abstract_data_type)
[3]: http://habrahabr.ru/post/266753/#habracut

[>] Как перестать настраивать и начать жить или настройка Puppet в школьном классе на 25 компьютеров
habra.15
habrabot(difrex,1) — All
2015-09-15 17:30:03


_Можно настраивать компьютеры по одному, но иногда их становится слишком много..._ ![][1] Так уж вышло, что я устроился преподавателем на один бесплатный курс для школьников по разработке под Android, спонсируемый одной крупной корпорацией, и, естественно, мне потребовалось осваивать соответствующую технику в количестве 25 ноутбуков, 25 планшетов, 2 стационарных компьютеров и сенсорной панели. До недавнего времени ноутбуки использовались с ОС Windows 8.1, но мало кого устраивала производительность и стабильность работы этой ОС при разработке в Eclipse и Android Studio. После одного года под Windows, наше руководство решило все ноутбуки перевести на Xubuntu 14.04, чтобы разрешить эти сложности. Был подготовлен образ, настроенный под конкретную модель ноутбуков, что у нас использовалась, и со всеми необходимыми программами. Накатил и работай. Одна беда — не было предусмотрено никакого решения для централизованного управления конфигурацией. На мой логичный вопрос по этому поводу был дан ответ, что внедрение подобной системы усложняет процедуру установки Linux на ноутбуки и, поскольку в образе уже все сделано как надо, никаких изменений после его установки вносить не понадобится. (ох уж эти оптимисты!) В общем я решил, что мне лично централизованное управление конфигурацией очень нужно, и взялся за дело самостоятельно. После недолгих размышлений был выбран Puppet как более простой в настройке и установке (может мне просто инструкции неудачные по Chef попадались — не знаю). Для меня эта простота была главным критерием, поскольку много времени на это дело я уделить не мог. На Хабре уже немало писали о Puppet, в том числе и инструкции, как его установить и настроить с нуля. Я нашел целых 3 штуки. Однако [1-я][2] описывает какой-то уж слишком сложный случай, [2-я][3] больше сосредоточена на файлах манифестов, чем на самой установке Puppet. [3-я][4] весьма неплоха, я использовал ее как один из источников информации, но, к сожалению, уже устарела. Поэтому решил, заодно с настройкой и статью на хабр разместить. И мне напоминание и для других инструкция. [Читать дальше →][5]

[1]: https://habrastorage.org/files/985/77e/789/98577e7894224c93b2249439cc09dd29.jpg
[2]: http://habrahabr.ru/post/229867/
[3]: http://habrahabr.ru/post/163811/
[4]: http://habrahabr.ru/post/68532/
[5]: http://habrahabr.ru/post/265755/#habracut

[>] [Из песочницы] Реализация генератора псевдослучайных чисел на ПЛИС с использованием Vivado HLS 2014.4
habra.15
habrabot(difrex,1) — All
2015-09-15 20:00:02


Во многих задачах возникает необходимость использования генератора псевдослучайных чисел. Вот и у нас возникла такая необходимость. В общем и целом задача заключалась в создании вычислительной платформы на базе блока [RB8V7][1], которая должна была быть использована как ускоритель расчетов конкретной научной задачи. _Скажу пару слов об этой научной задаче: необходимо было произвести расчет динамики биологических микротрубочек на временах порядка минуты. Расчеты представляли собой вычисления с использованием молекулярно-механической модели микротрубочки, разработанной в научной группе. Планировалось, что на основе полученных результатов вычислений можно будет сделать вывод о механизмах динамической нестабильности микротрубочек. Необходимость в использовании ускорителя была обусловлена тем фактом, что минута эквивалента достаточно большому количеству расчетных шагов (~ 10 ^ 12) и, как следствие, большому количеству времени, затрачиваемому на вычисления._ Итак, возвращаясь к теме статьи, в нашем случае генераторы псевдослучайных чисел нужны были для учета теплового движения молекул упомянутых микротрубочек. В качестве базовой архитектуры проекта был использована [архитектура с поддержкой DMA передач][2]. Как компонент этого вычислительной платформы необходимо было реализовать IP ядро, которое способно было бы генерировать новое псевдослучайное нормально распределенное число типа float каждый такт и занимало бы как можно меньше ресурсов на ПЛИС. [Читать дальше →][3]

[1]: http://yandex.ru/search/?lr=213&text=RB-8V7
[2]: http://habrahabr.ru/post/193646/
[3]: http://habrahabr.ru/post/266897/#habracut

[>] [Перевод] Оттачиваем мастерство работы в консоли
habra.15
habrabot(difrex,1) — All
2015-09-16 01:30:03


После того, как у меня появился новый монитор на рабочем месте, я начал новую итерацию улучшения своего «безмышечного» (_mouse-less, прим. пер._) опыта. Вы же знаете, что это значит, не так ли? Это значит, что каждый раз, когда вы беретесь за мышку, убирая руку с клавиатуры, вы тратите немного времени и энергии. Если вам нужно набирать много текста (а я много пишу кода), это становится существенным. Так же существует следующий уровень «безмышечного» опыта, когда вы стараетесь избежать труднодоступных клавиш, например `Delete`, `Backspace`, `Escape` или даже `Enter`. Если вы держите руки в стандартной позиции для 10-пальцевой слепой печати, более удобно нажать `Ctrl-m` вместо того, чтобы тянуться мизинцем к энтеру. ![image][1] [Читать дальше →][2]

[1]: https://upload.wikimedia.org/wikipedia/commons/0/0d/QWERTY-home-keys-position.svg
[2]: http://habrahabr.ru/post/266933/#habracut

[>] Jii: конфигурация и масштабирование
habra.15
habrabot(difrex,1) — All
2015-09-16 08:00:13


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



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

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

[>] Functional C#: Primitive obsession (одержимость примитивами)
habra.15
habrabot(difrex,1) — All
2015-09-16 10:00:03


Это вторая статья из миницикла статей про функциональный C#.

* [Functional C#: Immutability][1]
* **Functional C#: Primitive obsession**
* Functional C#: Non-nullable reference types (coming soon)
* Functional C#: Handling failures and input errors (coming soon)

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

[1]: http://habrahabr.ru/post/266873/
[2]: http://habrahabr.ru/post/266937/#habracut

[>] Автоматизируем и ускоряем процесс настройки облачных серверов с Ansible. Часть 1: Введение
habra.14
habrabot(difrex,1) — All
2015-01-29 12:00:03


Ansible – популярный инструмент для автоматизации настройки и развертывания ИТ-инфраструктуры. Основные задачи, которые решает Ansible:

* **Управление конфигурациями**. Максимально быстрая и правильная настройка серверов до описанной конфигурации.
* **Провижнинг**. Управление процессом развертывания новых облачных серверов (например через API, с помощью Docker или LXC).
* **Развертывание**. Инсталляция и обновление ваших приложений без простоя наилучшим образом.
* **Оркестрация**. Координация компонентов вашей инфраструктуры для выполнения развертываний. Например проверка, что веб-сервер отключен от балансировщика нагрузки, до апгрейда ПО на сервере.
* **Мониторинг и уведомления**.
* **Логгирование**. Централизованный сбор логов.

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

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

[>] Профилировка гибридных кластерных приложений MPI+OpenMP
habra.15
habrabot(difrex,1) — All
2015-09-16 12:00:03


![][1] Библиотеки, реализующие стандарт MPI (Message Passing Interface) — наиболее популярный механизм организации вычислений на кластере. MPI позволяет передавать сообщения между узлами (серверами), но никто не мешает запускать несколько MPI процессов и на одном узле, реализуя потенциал нескольких ядер. Так часто и пишутся HPC приложения, так проще. И пока количество ядер на одном узле было мало, никаких проблем с «чистым MPI» подходом не было. Но сегодня количество ядер идёт на десятки, а то и на сотни для со-процессоров Intel Xeon-Phi. И в такой ситуации запуск десятков процессов на одной машине становится не совсем эффективным. Дело в том, что MPI процессы общаются через сетевой интерфейс (хоть и реализованный через общую память на одной машине). Это влечет за собой избыточные копирования данных через множество буферов и увеличенный расход памяти. Для параллельных вычислений внутри одной машины с общей памятью гораздо лучше подходят потоки и распределение задач между ними. Здесь наибольшей популярностью в мире HPC пользуется стандарт OpenMP. Казалось бы – ладно, используем OpenMP внутри узла, и MPI для меж-узловых коммуникаций. Но не всё так просто. Использование двух фреймворков (MPI и OpenMP) вместо одного не только несёт дополнительную сложность программирования, но и не всегда даёт желаемый прирост производительности – по крайней мере, не сразу. Нужно ещё решить, как распределить вычисления между MPI и OpenMP, и, возможно, решить проблемы, специфичные для каждого уровня. В этой статье я не буду описывать создание гибридных приложений – информацию найти не сложно. Мы рассмотрим, как можно анализировать гибридные приложения с помощью инструментов Intel Parallel Studio, выбирая оптимальную конфигурацию и устраняя узкие места на разных уровнях. [Читать дальше →][2]

[1]: https://habrastorage.org/files/d55/c79/a28/d55c79a28e7d48718011d0f2796621fc.png
[2]: http://habrahabr.ru/post/266409/#habracut

[>] О безопасности UEFI, части нулевая и первая
habra.15
habrabot(difrex,1) — All
2015-09-16 13:30:03


![][1]Когда-то давно, в начале 2014 года, я назвал состояние безопасности большинства реализаций UEFI "[полумифическим][2]". С тех пор минуло полтора года, дело осторожно двигается с мертвой точки, но до сих пор очень многие производители ПК для конечного пользователя не обращают на эту самую безопасность почти никакого внимания — «пипл хавает». В этой статье речь пойдет о модели угроз и векторах атаки на UEFI, а также о защитах от перезаписи содержимого микросхемы BIOS — самой разрушительной по возможным последствиям атаки. Если вам интересно, как устроена защита UEFI и какие именно уязвимости в ней так и остаются неисправленными на большинстве современных систем — добро пожаловать под кат. [Читать дальше →][3]

[1]: https://habrastorage.org/files/cd4/487/c77/cd4487c770854cca841ce93f21e34374.jpg
[2]: http://habrahabr.ru/post/211574
[3]: http://habrahabr.ru/post/266935/#habracut

[>] [Перевод] Построение кроссвордов с помощью языка Wolfram Language (Mathematica)
habra.14
habrabot(difrex,1) — All
2015-01-29 12:30:03






_Перевод поста Майкла Тротта (Michael Trott), «[Constructing Crossword Arrays Faster][1]». Скачать перевод в виде документа Mathematica, который содержит весь код использованный в статье, можно [здесь][2]._ В главе 6 моей книги _Mathematica GuideBook for Programming_, в качестве примера работы со списками я обсудил то, как построить массив, представляющий собой кроссворд. Хотя этот пример был хорош для демонстрации продвинутой работы со списками, тем не менее, использование списков не является оптимальным путем построения массива кроссворда. Сложность добавления нового слова в массив с уже размещенными _n__-__1_ словами составляла для этого алгоритма , что для кроссвордов из тысяч слов даст большую разницу во времени, затрачиваемом на вычисления. Этот алгоритм реализован в данной статье. Когда мы размещаем отдельные буквы слова в некоторой прямоугольной таблице необходимо рассматривать множество различных ситуаций. В результате в статье содержится большее, чем обычно, количество процедурного кода. Хотя некоторые определения функций несколько длинные, благодаря комментариям между шагами вычислений и ветками решений код должен быть довольно простым для чтения и понимания. [Читать дальше →][3]

[1]: http://www.mathematica-journal.com/2009/11/constructing-crossword-arrays-faster/
[2]: http://goo.gl/GOG0Fe
[3]: http://habrahabr.ru/post/249141/#habracut

[>] Введение в топологические пространства. Программирование конечных топологий на Java. Часть 2: База топологии. Непрерывные отображения
habra.14
habrabot(difrex,1) — All
2015-01-30 13:35:20




# Список частей:



* [Часть 1: Определение топологии. Открытые и замкнутые множества.][1]
* Часть 2: База топологии. Непрерывные отображения.



# Введение

В прошлый раз мы познакомились с основным понятиями теории топологических пространств, а также рассмотрели класс для представления конечных топологических пространств, написанный на языке Java. Сегодня мы двинемся дальше, изучим понятие базы топологии и получим представление о том, дла чего она нужна, а также определим понятие непрерывного отображения топологических пространств. Основной интерес последнее вызывает тем, что в топологическом пространстве отсутствует понятие _расстояния между объектами_, но тем не менее мы можем описать формальным языком достаточную близкость объектов в терминах… Ну, впрочем, вы это узнаете чуть позже. [Читать дальше →][2]

[1]: http://habrahabr.ru/post/248659/
[2]: http://habrahabr.ru/post/249163/#habracut

Pages: 1 ... 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 210