Pull to refresh
146
0
Алексей Романов @alexeyrom

User

Send message

Поняв Docker

Reading time 14 min
Views 221K

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


К вашему сведению! В этой статье мы рассматриваем само явление docker-контейнеров, а не составляем список микросервисов, которые гнездятся внутри. Этим мы займемся в следующей серии, во имя справедливости!


UPDATE: пришлось заменить «докер» на «docker», иначе статья не ищется. Заранее прошу прощения за все «docker'ы» в тексте. Селяви.


Что мы имеем сегодня


  • Зоопарк дубовых VPS-хостингов.
  • Дорогие IaaS и PaaS с гарантированным vendor lock in.
  • Уникальные сервера-снежинки.
  • Ворох устаревших зависимостей на неподдерживаемой операционке.
  • Скрытые связи частей приложения.
  • Незаменимый админ полубог на скейтборде.
  • Радуга окружений: development, testing, integration, staging, production.
  • Генерация конфигов для системы управления конфигами.
  • Feature flagging.
docker run docker
Total votes 92: ↑83 and ↓9 +74
Comments 245

МТС: яйцом к клиенту, или как бороться с заменой sim

Reading time 10 min
Views 61K
На хабра-сайтах не раз (см. тут и здесь) выходили статьи о том, как защитить себя от замены sim-карты. Но, не смотря на то, что все эти советы — дельные, в них есть одно слабое и при этом — очень значимое место, которое с юридической точки зрения называется добросовестность одной из сторон, т.е. провайдера.

мтс коротко Опишу на своём реальном опыте, так как практика — лучшее подтверждение теории, со ссылкой на действующие нормативно-правовые акты, а также ряд прецедентов, которые были сформированы за последние годы.

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

При подготовке искового изучил несколько десятков форумов, на которых повторялись типовые вопросы по нормативной базе. Попробовал изложить их в систематизированном виде.
Читать дальше →
Total votes 40: ↑39 and ↓1 +38
Comments 134

Делаем скриншоты правильно: практические советы

Reading time 8 min
Views 188K
Устройство для снимка экрана на первых компьютерах (Command-Shift-3)
Устройство для снимка экрана на первых компьютерах (Command-Shift-3)

Если вы когда-либо делали хелп или мануал для своего приложения, наверняка вы отметили, как неожиданно много времени и сил занимает создание скриншотов.

Ведь кажется, что скриншот — это “секунда работы, Alt+PrintScreen и Ctrl+V!”. Некоторые клиенты удивляются, когда слышат, что скриншот в мануале может стоить и $2 и даже $5.

В этой статье я расскажу, как правильно делать скриншоты, почему это не просто “два клика” и какие подводные камни встречаются на пути неопытного скриншотера. Рассматривайте ее как чеклист или список практических советов для тех, кто документирует ПО. Надеюсь, это поможет вам избежать разочарований и порадовать юзеров красочными понятными картинками.
Читать дальше →
Total votes 81: ↑69 and ↓12 +57
Comments 76

Электронная библиотека для PocketBook: автоматическая обработка

Reading time 19 min
Views 40K
Наверное каждому электрочитателю хотелось бы всю свою коллекцию книг содержать прямо на электронной книге-читалке, и при этом, не смотря на общую тормознутость устройства, иметь удобную навигацию.
Зачастую в электронной книге проблематично содержать сотни и тысячи книжек: либо аппарат долго тупит, считывая информацию о каждой книге из ее внутренностей, либо вручную поддерживать коллекцию с разбивкой по каталогам — тот еще геморрой.
Читать дальше →
Total votes 25: ↑25 and ↓0 +25
Comments 25

Новый гаджет покажет, где прячутся ключи

Reading time 2 min
Views 9.6K


Наверное, нет более скрытной вещи, чем ключи. Только-только положил их на полочку около входной двери, глядь — а ключей уже нет. А если ключи нужно найти не через час-другой, а через пару дней, это задача, достойная Шерлока Холмса. Как-то видел шутливое решение, призванное решить эту проблему: старый мобильный телефон, прицепленный к связке ключей. Потерялись ключи — можно позвонить на телефон, все мгновенно находится. Но современные технологии позволяют пойти еще дальше!

Читать дальше →
Total votes 42: ↑41 and ↓1 +40
Comments 88

Сервис поиска русскоязычных книг для Kindle

Reading time 1 min
Views 26K
Kindle
После того как у меня появился Kindle 3 стала проблема наполнения его книгами на всем нам понятном русском языке. Сама книжка поддерживает кириллицу с коробки, но вот русской раскладки в ней не предусмотрено. Отличная возможность пользоваться встроенным в книгу браузером частично страдает из-за отсутствия русской раскладки.

Конечно, возможно использовать хаки прошивки для локализации устройства, но это не всегда удобно, так как при обновлении прошивки эти хаки придется откатывать назад, вдобавок мы можем потерять гарантию. Подключать же постоянно через USB книгу проводом тоже не удобно, ведь зачем же в конце концов в ней WiFi и 3G? Выходом из сложившейся ситуации может стать русифицированная экранная клавиатура.

За один вечер была найдена подходящая экранная клавиатура написанная на JavaScript и оптимизирована под экран Kindle. Зарегистрировано доменное имя kin3lib.ru для нашего проекта. Сервис перебрасывает поисковый запрос набранный на виртуальной клавиатуре в библиотеку Флибуста, где можно спокойно закачать затем книгу в ее родной mobi формат. В дальнейшем можно реализовать выбор библиотек на которых производить поиск, но, к сожалению, я нашел только одну, которая позволяет скачивать книги в формате mobi. Если кто знает еще такие библиотеки пишите мне.

Мне будет приятно выслушать мнения хабравчан о таком сервисе, а также кто и каким образом решает данную проблему.
Total votes 52: ↑47 and ↓5 +42
Comments 29

Компьютер вашей мечты. Часть 3: Скрытые горизонты

Reading time 17 min
Views 9.1K
Часть 1 | Часть 2
К прочтению обязательны — материал является их прямым продолжением.


image

В предыдущей части статьи были рассмотрены ключевые компоненты современного ПК, однако окончательного вывода сделано не было. Да, мы рассмотрели наиболее важные характеристики и их влияние на производительность. Зная это, можно взглянуть на предлагаеммый ассортимент и подобрать нужный девайс. Но за более высокие характеристики в любом случае придётся заплатить больше, а ведь это делать так не хочется…
Есть ли способы преодолеть различия между младшими и старшими моделями железок, или просто повысить производительность системы, не доплачивая за это? Определенно есть =)
Читать дальше →
Total votes 73: ↑57 and ↓16 +41
Comments 30

«Регулярные выражения» или «Просто о некрасивом»

Reading time 8 min
Views 4K

«Регулярные выражения» или «Просто о некрасивом»




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

Я специально не буду заглядывать ни в какие мануалы, и пичкать Вас информацией которую я сам не запомнил, уверен, для того чтобы заинтересоваться и начать пользоваться будет достаточно того, что умею и использую сам.
Читать дальше →
Total votes 32: ↑23 and ↓9 +14
Comments 22

Современный бэк-офис IT-компании

Reading time 11 min
Views 53K
В одной из дискуссий недавно, я перечислил основные системы, делающие работу ИТ-компании цивилизованной. Список получился весьма обширный, и я решил оформить его как самостоятельную статью.

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

Всё ниженаписанное касается компаний/отделов, в которых работает работает квалифицированный персонал, то есть курсы «офис для начинающих» им не нужны. Так же как не нужны групповые политики на рабочих станций и специальный админ для перекладывания ярлычков на рабочем столе и установки любимой программы. Другими словами, это бэк-офис айтишников, значительно отличающийся от бэк-офиса остальных отделов.

Краткий спойлер содержимого: VCS, репозиторий исходного кода, code-review, build-сервера, CI, таск-трекер, вики, корпоративный блог, функциональное тестирование, репозиторий для пакетов, система управления конфигурацией, бэкапы, почта/jabber.

Картинка с фрагментом обсуждаемой инфраструктуры:


Читать дальше →
Total votes 56: ↑50 and ↓6 +44
Comments 29

Лекции от Яндекса для тех, кто хочет провести каникулы с пользой. Дискретный анализ и теория вероятностей

Reading time 3 min
Views 143K
Для тех, кому одного курса на праздники мало и кто хочет больше, продолжаем нашу серию курсов от Школы анализа данных Яндекса. Сегодня подошла очередь курса «Дискретный анализ и теория вероятностей» – даже более фундаментального, чем предыдущий. Но без него нельзя представить ещё большую часть современной обработки данных.

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



Читает курс Андрей Райгородский. Доктор физико-математических наук. Профессор кафедры математической статистики и случайных процессов механико-математического факультета МГУ им. М. В. Ломоносова. Заведующий кафедрой Дискретной математики ФИВТ МФТИ. Профессор и научный руководитель бакалавриата кафедры «Анализ данных» факультета инноваций и высоких технологий МФТИ. Руководитель отдела теоретических и прикладных исследований компании «Яндекс». (Ещё больше можно узнать в статье о нём на Википедии).

Содержание курса и тезисы лекций
Total votes 121: ↑115 and ↓6 +109
Comments 21

Настройка IDEA для чистокодеров

Reading time 4 min
Views 286K
Я люблю две вещи: Intellij IDEA и чистый код (Clean Code).
IDEA создана для чистого кода. Многие настройки по умолчанию уже стимулируют вас писать как надо.


Но она всё ещё не идеальна.
Когда я устанавливаю новую копию IDEA, я пробегаю по настройкам и выставляю свои любимые галочки.
Хочу ими с вами поделиться в надежде, что когда-нибудь и они станут стандартом.

Мои любимые настройки IDEA с картинками
Total votes 103: ↑76 and ↓27 +49
Comments 60

Инфраструктура и жизненный цикл разработки веб-проекта

Reading time 11 min
Views 57K
Когда проект маленький, особых проблем с ним не возникает. Список задач можно вести в текстовом файле (TODO), систему контроля версий, по большому счёту, можно и не использовать, для раскладки файлов на живой сервер их можно просто скопировать (cp/scp/rsync) в нужную директорию, а ошибки всегда можно посмотреть в лог-файле. Глупо было бы, например, для простенького сервиса с двумя скриптами и тремя посетителями в день поднимать полноценную систему управления конфигурациями серверов.

С ростом проекта требования растут. Становится неудобно держать в TODO-файле несколько десятков задач и багов: хочется приоритетов, комментариев, ссылок. Появляется необходимость в системе контроля версий, специальных скриптах/систем для раскладки кода на сервер, системе мониторинга. Ситуация усугубляется, когда над проектом работает несколько человек, а уж когда проект разрастается до нескольких серверов, появляется полноценная инфраструктура («комплекс взаимосвязанных обслуживающих структур или объектов, составляющих и/или обеспечивающих основу функционирования системы», Wikipedia).

На примере нашего сервиса "Календарь Mail.ru" я хочу рассказать о типичной инфраструктуре и жизненном цикле разработки среднего по размерам веб-проекта в крупной интернет-компании.

Срыв покровов
Total votes 102: ↑93 and ↓9 +84
Comments 46

Горячие клавиши в Eclipse

Reading time 1 min
Views 58K
туториал по горячим клавишам в Eclipse
Есть желание уменьшить время путешествий по менюшкам-окошкам — нажмите Control-Shift-L для быстрого доступа к списку горячих клавиш (←). Большинство функций доступны не отрываясь от клавиатуры.

Один раз потратившись на разбор на примерах, будет сэкономлено куда больше времени. Для помощи в работе с настройками, окнами, навигации и управлении кодом — есть туториал по горячим клавишам в Eclipse со множеством картинок-примеров.
Total votes 20: ↑18 and ↓2 +16
Comments 20

pymorphy2

Reading time 16 min
Views 81K
В далеком 2009 году на хабре уже была статья "Кузявые ли бутявки.." про pymorphy — морфологический анализатор для русского языка на Python (штуковину, которая умеет склонять слова, сообщать информацию о части речи, падеже и т.д.)

В 2012м я начал потихоньку делать pymorphy2 (github, bitbucket) — думаю, самое время представить эту библиотеку тут: pymorphy2 может работать в сотни раз быстрее, чем pymorphy (втч без использования C/C++ расширений) и при этом требовать меньше памяти; там лучше словари, лучше качество разбора, лучше поддержка буквы ё, проще установка и более «честный» API. Из негатива — не все возможности pymorphy сейчас реализованы в pymorphy2.

Эта статья о том, как pymorphy2 создавался (иногда с довольно скучными техническими подробностями), и сколько глупостей я при этом наделал; если хочется просто все попробовать, то можно почитать документацию.

Читать дальше →
Total votes 103: ↑100 and ↓3 +97
Comments 44

Хинты планера в PostgreSQL

Reading time 8 min
Views 49K
Известно, что SQL — декларативный язык, который указывает, «что» мы хотим выбрать из базы, а «как» это сделать — СУБД решает сама. Задачу выбора для SQL-запроса конкретного способа его выполнения(плана) решает планировщик запросов, который есть практически в любой СУБД. Но иногда он выбирает не самый лучший план. Многие коммерческие СУБД предоставляют на этот случай «хинты», которые позволяют в ручном режиме подсказывать базе, как лучше выполнить запрос. В Open Source СУБД PostgreSQL такого механизма не было.

И вот, наконец, случилось то, о чем многие мечтали и чего уже устали ждать, а другие боялись. Японские разработчики из NTT реализовали хинты планера PostgreSQL. Причем, им удалось это сделать, не меняя ядро, в виде отдельного модуля pg_hint_plan, поддерживающего версии PostgreSQL 9.1 и 9.2. Модуль реализует хинты, позволяющие устанавливать методы сканирования и соединения таблиц, установку значений GUC. За деталями установки и использования добро пожаловать под кат.

Читать дальше →
Total votes 41: ↑39 and ↓2 +37
Comments 28

Альтернативный терминал для Windows

Reading time 18 min
Views 436K
Часто путают терминал и шелл. В тех же *nix есть шеллы (bash, csh, zsh, …) и терминалы (konsole/guake/yaquake/tilda и т.д. и т.п.) Для мира Windows общеизвестный терминал только один – стандартное консольное окошко, которое часто ошибочно называют «cmd.exe». И мало кто знает о существовании множества других эмуляторов терминала. Известных шеллов больше, их целых два: cmd.exe и powershell.exe. И хотя есть как минимум три порта bash (MinGW, CygWin, GIT) многие юниксоиды предпочитают ругать cmd.exe.

Меня не устраивал ни один из найденных альтернативных терминалов (как в 2009-м, когда я начал работу над ConEmu, так и сейчас). Казалось бы требований немного, вот основные:
Читать дальше →
Total votes 182: ↑175 and ↓7 +168
Comments 194

Параллельное программирование с помощью вычислительного графа

Reading time 10 min
Views 29K
Есть приложения, которые хорошо реализуются как системы передачи сообщений. Сообщениями в широком смысле может быть что угодно – блоки данных, управляющие «сигналы» и т.д. Логика же состоит из узлов, обрабатывающих сообщения, и связей между ними. Такая структура естественно представляется графом, по рёбрам которого «текут» сообщения, обрабатываемые в узлах. Наиболее устоявшееся название такой модели – вычислительный граф.

С помощью вычислительного графа можно установить зависимости между задачами и в какой-то мере программно реализовать «dataflow архитектуру».

В этом посте я опишу, как реализовать такую модель на С++, используя библиотеку Intel Threading Building Blocks (Intel TBB), а именно класс tbb::flow::graph.


Читать дальше →
Total votes 56: ↑52 and ↓4 +48
Comments 9

Функциональное программирование в шелле на примере xargs

Reading time 6 min
Views 24K
Abstract: рассказ о том, как быстро и красиво делать обработку списков в шелле, немного мануала по xargs и много воды про философию то ли программирования, то ли администрирования.

Немного SEO-оптимизации: карринг, лямбда-функция, композиция функций, map, фильтрация списка, работа с множествами в шелле.

Пример



Системные администраторы часто оказываются в ситуации, когда нужно взять вывод одной программы, и к каждому элементу вывода применить другую программу. Или даже не одну. В качестве забавного (и бесполезного) примера мы возьмём следующий: требуется посчитать суммарный размер всех исполняемых файлов, запущенных в настоящий момент в системе вместе со всеми динамическими библиотеками, которые они используют.

Это не реальная «задача», это учебный пример, решая который (в решении будет однострочник) я расскажу про очень необычный и мощный инструмент системного администрирования — линейное функциональное программирование. Линейное оно, потому что использование пайпа "|" это линейное программирование, а использование xargs позволяет превратить сложную программу с вложенными циклами в однострочник функционального вида. Целью статьи будет не показать «как найти размер библиотек» и не пересказать аргументы xargs, а объяснить дух решения, пояснить стоящую за ним философию.

Лирика


Существует несколько стилей программирования. Один из них выглядит так: для каждого элемента списка сделать цикл, в котором для каждого элемента списка, если он не является пустой строкой, взять имя файла, и если размер файла не равен нулю, то прибавить к счётчику. Ах, да, сначала счётчик надо сделать нулём.

Другой выглядит так:
Применить к списку функцию, которая применяется к каждому элементу списка, если этот элемент непустая строка и размер файла, с этим именем не нулевой, добавить к сумме.

Даже словами видно, что второй вариант короче.
Читать дальше →
Total votes 77: ↑73 and ↓4 +69
Comments 45

Как распознать кракозябры?

Reading time 1 min
Views 424K
В комментариях к предыдущему посту про иероглифы сказали, что хорошо бы иметь такую же блок-схему для кракозябр.

Итак, вуаля!


За источник информации была взята статья из вики. В блок-схеме «UTF-16 → CP 866» означает, что исходная кодировка была «UTF-16», а распозналась она как «CP 866».

Как всегда — кликабельно. Исходник в .docx: здесь.
Total votes 429: ↑418 and ↓11 +407
Comments 64

Обзор новых возможностей в playframework v2

Reading time 4 min
Views 5.7K
Доброго времени суток всем. Хотел бы представить вашему вниманию небольшое описание новых возможностей Play 2. Речь в данной статье пойдет о play2 scala.
Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Comments 37
1

Information

Rating
Does not participate
Location
Зеленоград, Москва и Московская обл., Россия
Date of birth
Registered
Activity