Search
Write a publication
Pull to refresh
22
0
Антон @realfreeman

Пользователь

Send message

Многорукие бандиты: введение и алгоритм UCB1

Reading time5 min
Views56K
Это первый пост из блога Surfingbird, который я выношу в общие хабы алгоритмов и искусственного интеллекта; честно говоря, раньше просто не догадался. Если интересно, заходите к нам, чтобы прочесть предыдущие тексты, – я не знаю, что произойдёт, если просто добавить новые хабы к постам несколькомесячной давности.

Краткое содержание предыдущих серий о рекомендательных системах:

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


Читать дальше →

Стандарты и шаблоны для ТЗ на разработку ПО

Reading time7 min
Views845K

Введение


Недавно ко мне обратились, чтобы я посоветовал стандарты для написания технического задания (ТЗ) на разработку автоматизированных систем (АС) и программного обеспечения (ПО). Вот думаю, сейчас зайду в Яндекс, найду подходящую статейку и отправлю её. Но не тут-то было! Одной статьи, где перечисляются стандарты для ТЗ, включая шаблоны и примеры готовых документов, я не нашел. Придется сделать такую статейку самому…

И так, основные стандарты, методологии и своды знаний, где упоминается ТЗ или SRS (Software (or System) Requirements Specification):

• ГОСТ 34
• ГОСТ 19
• IEEE STD 830-1998
• ISO/IEC/ IEEE 29148-2011
• RUP
• SWEBOK, BABOK и пр.
Читать дальше →

Управление задачами в Jenkins

Reading time5 min
Views163K


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

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

Памятка пользователям ssh

Reading time13 min
Views1.6M
abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.

Оглавление:
  • управление ключами
  • копирование файлов через ssh
  • Проброс потоков ввода/вывода
  • Монтирование удалённой FS через ssh
  • Удалённое исполнение кода
  • Алиасы и опции для подключений в .ssh/config
  • Опции по-умолчанию
  • Проброс X-сервера
  • ssh в качестве socks-proxy
  • Проброс портов — прямой и обратный
  • Реверс-сокс-прокси
  • туннелирование L2/L3 трафика
  • Проброс агента авторизации
  • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
Читать дальше →

Введение в криптографию и шифрование, часть первая. Лекция в Яндексе

Reading time20 min
Views262K
Чтобы сходу понимать материалы об инфраструктуре открытых ключей, сетевой безопасности и HTTPS, нужно знать основы криптографической теории. Один из самых быстрых способов изучить их — посмотреть или прочитать лекцию Владимира ivlad Иванова. Владимир — известный специалист по сетям и системам их защиты. Он долгое время работал в Яндексе, был одним из руководителей нашего департамента эксплуатации.


Мы впервые публикуем эту лекцию вместе с расшифровкой. Начнём с первой части. Под катом вы найдёте текст и часть слайдов.

Как это работает в мире java. ConcurrentMap

Reading time11 min
Views42K

Основной принцип программирования гласит: не изобретать велосипед. Но иногда, чтобы понять, что происходит и как использовать инструмент правильно, нам необходимо это делать. Сегодня изобретаем ConcrurrentHashMap.


Сперва нам понадобятся 2 вещи. Начнем с 2х тестов — первый скажет, что у нашей реализации нет data races (на самом деле нам нужно проверить, правилен ли наш тест также путем тестирования заведомо некорректной реализации), второй тест мы будем использовать для тестирования производительности с точки зрения throughput.


Читать дальше →

Геометрия машинного обучения. Разделяющие гиперплоскости или в чём геометрический смысл линейной комбинации?

Reading time13 min
Views51K
Во многих алгоритмах машинного обучения, в том числе в нейронных сетях, нам постоянно приходится иметь дело со взвешенной суммой или, иначе, линейной комбинацией компонент входного вектора. А в чём смысл получаемого скалярного значения?

В статье попробуем ответить на этот вопрос с примерами, формулами, а также множеством иллюстраций и кода на Python, чтобы вы могли легко всё воспроизвести и поставить свои собственные эксперименты.
Читать дальше →

От велосипеда к Maven

Reading time13 min
Views73K
Так уж сложилось, что до недавнего времени все проекты, написанные мною на Java я собирал, кхм, за меня собирал NetBeans. И меня такой расклад вещей вполне устраивал: после сборки всего проекта всё аккуратно складывалось в директорию dist со всеми подвязанными библиотеками, оставалось накидать туда пользовательской документации, необходимых native-библиотек (например от Firebird) и в путь, т.е. всё в архив. Когда то я делал это вручную, потом велосипедом, а потом уже Maven'ом. Под катом находится история о том, как же я пришел в стан maven и что из этого получилось.
Читать дальше →

Хранение и вывод версии в java-проекте

Reading time4 min
Views14K
Думаю, у многих возникала задача точно знать версию выпущенного jar'a или war'a. Причем хотелось бы иметь способ, позволяющий «простому пользователю» определить версию такого архива. Ниже приведен способ решения этой задачи.
Читать дальше →

Maven. Собираем только измененное

Reading time6 min
Views9.6K

Работая в многомодульном maven проекте, зачастую приходится вносить изменения в несколько связанных модулей одновременно. И если хочется собрать только задетые модули, то к сожалению maven не предоставляет ничего автоматического. Если чуть погуглить, то на stackoverflow можно найти простое однострочное решение:


mvn install -amd -pl $(svn st | colrm 1 8 | sed 's /.*  ' | xargs echo | sed 's- -,:-g' | sed 's ^ : ')

На этом можно было бы и закончить. Но мне хотелось большего — чего конкретнее и как я этого добивался под катом.

Читать дальше →

Оптимизация хвостовой рекурсии в Java

Reading time5 min
Views25K
Уже давно определённые вещи из мира функционального программирования всё сильнее проникают в нефункциональные языки. Может показаться странным, что в Java смогли интегрировать лямбда-выражения, а вот оптимизацию хвостовой рекурсии (преобразование рекурсии в эквивалентный цикл) до сих пор не сделали, хотя она гораздо проще. Почему её нет?

Попробуем разобраться с причинами и посмотрим, что можно сделать своими руками.
Читать дальше →

Итак, мы сделали дамп JVM на 150 Гб. Что дальше?

Reading time3 min
Views19K
Возможность сделать снимок (или дамп) памяти виртуальной машины Java — это инструмент, ценность которого сложно переоценить. Файл дампа содержит копии всех Java объектов, находившихся в памяти в момент снимка. Формат файла хорошо известен, и существует множество инструментов, которые умеют с ним работать.


Читать дальше →

Дизайн REST API для высокопроизводительных систем

Reading time17 min
Views40K


Александр Лебедев выражает всю нетривиальность дизайна REST API. Это — расшифровка доклада Highload++ 2016.

Всем здравствуйте!
Поднимите руку те, кто фронтенд разработчик в этом зале? Кто мобильный разработчик? Кто бэкенд разработчик?
Бэкенд разработчиков большинство в этом зале сейчас, что радостно. Во-вторых, почти все проснулись. Чудесная новость.

Пару слов о себе


Кто я такой? Чем занимаюсь?

Я фронтенд team lead компании «Новые Облачные Технологии». Последние 5 лет я писал веб фронтенд, который работает с REST API и который должен для пользователя работать быстро. Я хочу поделиться опытом о том, какие API должны быть, которые позволяют этого добиться.

Несмотря на то, что я буду рассказывать со стороны фронтенда, принципы — они общие более-менее для всех. Я надеюсь и бэкенд разработчики, и разработчики мобильных приложений так же найдут для себя в этом рассказе полезные вещи.

Реверс-инжиниринг сообщений Protocol Buffers

Reading time7 min
Views11K
Под реверс-инжинирингом, в данном контексте, я понимаю восстановление исходной схемы сообщений наиболее близкие к оригиналу, используемому разработчиками. Существует несколько способов получить желаемое. Во-первых, если у нас есть доступ к клиентскому приложению, разработчики не позаботились о том чтобы скрыть отладочные символы и линковаться к LITE версии библиотеки protobuf, то получить оригинальные .proto-файлы не составит труда. Во-вторых, если же разработчики используют LITE сборку библиотеки, то это конечно усложняет жизнь реверсеру, но отнюдь не делает реверсинг бесполезным занятием: при определённой сноровке, даже в этом случае, можно восстановить .proto-файлы достаточно близкие к оригиналу.
Читать дальше →

Создание сеток шестиугольников

Reading time25 min
Views103K
image

Сетки из шестиугольников (гексагональные сетки) используются в некоторых играх, но они не так просты и распространены, как сетки прямоугольников. Я коллекционирую ресурсы о сетках шестиугольников уже почти 20 лет, и написал это руководство по самым элегантным подходам, реализуемым в простейшем коде. В статье часто используются руководства Чарльза Фу (Charles Fu) и Кларка Вербрюгге (Clark Verbrugge). Я опишу различные способы создания сеток шестиугольников, их взаимосвязь, а также самые общие алгоритмы. Многие части этой статьи интерактивны: выбор типа сетки изменяет соответствующие схемы, код и тексты. (Прим. пер.: это относится только к оригиналу, советую его изучить. В переводе вся информация оригинала сохранена, но без интерактивности.).
Читать дальше →

Как мы запускали программу Deep Learning

Reading time8 min
Views11K
Хабр, привет.

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

Обзор (и видеозаписи) лучших докладов Java-конференции JPoint 2016: BigData, кишки JVM и паззлеры

Reading time5 min
Views18K


В апреле в Москве прошла JPoint 2016 – крупнейшая Java-конференция в России. Напомню, что на конференции было 50 докладов, которые шли в 4 треках в течение двух дней. В сентябре мы открыли доступ к видео для наших читателей, однако руки всё никак не доходили до публикации топ-10 докладов на Хабре.

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

Конечно, какие-то доклады оказываются лучше, какие хуже. Но в этом посте речь пойдет о 10 жемчужинах, лучших докладах, оценка каждого из которых оказалась выше 4.6 по пятибалльной шкале. Ссылка на остальные доклады по катом, так что вам будет чем заняться до Нового Года:)
Смотреть доклады

Как не писать лишнего

Reading time12 min
Views16K

Все программисты сталкиваются с boiler-plate кодом. Особенно Android-программисты. Писать шаблонный код — дело неблагодарное и, я уверен, что нет программиста, которому бы это доставляло удовольствие. В один прекрасный день я начал искать решения. Несмотря на то, что идея довольно проста: генерировать шаблонный код в отдельный класс и позже вызывать этот код в рантайме, готовых решений не нашлось, и я принялся за дело. Первая версия была реализована как один из подмодулей одного из рабочих проектов. Более двух лет я был доволен этим решением. Оно действительно работало и работало именно так, как я этого ожидал. Время шло, модуль дополнялся новыми функциями, рефакторился, оптимизировался. В целом PoC можно было назвать успешным, и я решил поделиться проектом с комьюнити.

Читать дальше →

Асинхронная обработка запросов в СУБД в памяти, или как справиться с миллионом транзакций в секунду на одном ядре

Reading time10 min
Views19K

Привет! В двух моих последних статьях я говорил о том, как СУБД в оперативной памяти обеспечивают сохранность данных. Найти их можно здесь и здесь.

В этой статье я хотел бы затронуть проблему производительности СУБД в оперативной памяти. Давайте начнем обсуждение производительности с простейшего случая использования, когда просто изменяется значение по заданному ключу. Для еще большей простоты предположим, что серверная часть отсутствует, т.е. не происходит никакого клиент-серверного взаимодействия по сети (дальше будет понятно, зачем мы это сделали). Итак, СУБД (если ее можно так назвать) находится полностью в оперативной памяти вашего приложения.
Читать дальше →

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity