Как стать автором
Обновить
9
0
Антон Шалимов @antonlyapunov

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

Отправить сообщение

Docker Compose: упрощение работы с использованием Makefile

Время на прочтение6 мин
Количество просмотров36K
Каждые несколько лет в индустрии разработки ПО происходит смена парадигмы. Одним из таких явлений можно признать рост интереса к концепции микросервисов. Хотя микросервисы — это технология не самая новая, лишь в последнее время её популярность буквально взлетела до небес.

Большие монолитные сервисы в наши дни заменяют независимыми автономными микросервисами. Микросервис можно рассматривать как приложение, которое служит единственной и очень специфической цели. Например — это может быть реляционная СУБД, Express-приложение, Solr-сервис.



В наши дни сложно представить себе разработку новой программной системы без применения микросервисов. А эта ситуация, в свою очередь, ведёт нас к платформе Docker.
Читать дальше →
Всего голосов 39: ↑35 и ↓4+31
Комментарии40

Дискретные структуры: матан для айтишников

Время на прочтение4 мин
Количество просмотров222K


Посмотришь на любую программу обучения по IT-специальности, и тут же увидишь дисциплину «Дискретная математика» (возможно, под другим названием), обычно для перво- или второкурсников. И её наличие вполне разумно, поскольку дискретная математика и непрерывная математика (представленная на первом курсе институтов с незапамятных времён математическим анализом) — две грани единой Математики, — красивой, могучей науки.

Хотя раньше такого понятия, как «дискретная математика» вовсе не было, это не значит, что не возникало дискретных задач: Абель, Дирихле, Фибоначчи, Эйлер, чьи имена возникают по ходу изучения дискретной математики, — отнюдь не наши современники! Но просто в те времена для выделения самостоятельной ветви математики ещё не сложилось критической массы задач и приёмов, не было видно взаимосвязей между ними. А большое количество плодотворных взаимосвязей между, на первый взгляд, различными понятиями, — то, что математики в своей науке очень ценят.

Ну хорошо, математикам всё математическое интересно. А зачем дискретная математика программисту?
Читать дальше →
Всего голосов 63: ↑59 и ↓4+55
Комментарии43

Как инкрементальные обновления влияют на скорость загрузки. Опыт Яндекс.Почты

Время на прочтение5 мин
Количество просмотров36K
Яндекс.Почта — большое и сложное веб-приложение. Для первоначальной загрузки ей необходимо более 1 МБ статических ресурсов (JS/CSS/Шаблонов). При этом Яндекс.Почта обновляется два раза в неделю, а иногда и чаще.

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


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

Мы подумали: «А что если хранить где-то старую версию файлов (например, в localStorage), а при выходе новой передавать только diff между ней и той, которая сохранена у пользователя?» В браузере же останется просто наложить патч на клиенте. О том, что из этого получилось и каким выводам мы с Panya пришли, читайте под катом.
Читать дальше →
Всего голосов 98: ↑96 и ↓2+94
Комментарии73

Теория модерирования

Время на прочтение34 мин
Количество просмотров23K


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

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

В конце заметки вы найдёте список того что оказалось совсем не так как я ожидал до того как пришёл в модерирование.
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии8

Закрываем ИП: как правильно свернуть бизнес

Время на прочтение5 мин
Количество просмотров68K

Держать бездействующий статус ИП нет никакого смысла, это только добавляет вам лишних забот в виде обязательной отчетности и перечисления страховых взносов. Предприниматель без деятельности и дохода все равно обязан заплатить в ПФР 20 727,53 рублей за 2014 год. Если случилось так, что ваш бизнес не оправдал надежд или вы просто решили приостановить деятельность – закрывайте ИП. Когда понадобится, вы сможете очень быстро зарегистрироваться снова в любой момент.

Красивые и умные эксперты Эльбы подготовили для вас инструкцию, которая подскажет вам что и в какой срок нужно сделать, чтобы закрыть свое дело.
Читать прямо сейчас
Всего голосов 53: ↑50 и ↓3+47
Комментарии48

Надоела среда оформления Windows? Вас спасет BlackBox 4 Win

Время на прочтение2 мин
Количество просмотров16K
В связи с этим постом, и потугами выбрать WM для старенького компьютера со свежеустановленной FreeBSD, я вспомнил одну старую, но все же интересную вещь. А точнее — BlackBox — легковесный оконный менеджер, как две капли газированной воды, похожий на все другие *box`ы, и при этом настолько опенсорцный, и кроссплатформенный, что есть даже для Windows…
Дальше - больше. И значительно интереснее!
Всего голосов 50: ↑43 и ↓7+36
Комментарии114

Несколько 3D-игр для Linux

Время на прочтение2 мин
Количество просмотров2.7K
Товарищи из блога Online Games составили неплохой список 3D-игр под ОС Linux. Причем взятых не рандомно с потолка, а получивших какое-никакое, а признание от игровых журналов в виде обзоров и, в некоторых случаях, наград. Многие из игрушек приведенного ниже списка кроссплатформенные, но все из них полностью бесплатны и поставляются с инсталлером под Linux, так что тот же Wine для их запуска не понадобится.
Игры с небольшим описанием и скриншотами...
Всего голосов 35: ↑32 и ↓3+29
Комментарии60

Web 2.0 продажа подержанных машин

Время на прочтение1 мин
Количество просмотров697
Голландский проект SellSigns помогает продавать своим пользователям подержанные автомобили, предлагая им интересный сервис.
Читать дальше →
Всего голосов 13: ↑10 и ↓3+7
Комментарии6

Сообщества. Баланс?

Время на прочтение3 мин
Количество просмотров758
Сообщества — великая сила (привет, маркетологи! :) ). Конечно, есть вариант сделать сайт (далее — Сайт), положить туда кучу всякого-интересного (по теме будущего нишевого бренда, назовем это так), сделать на сайте форум, закурить, и… И ждать :)

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

Будем считать, что Сайт (сообщество, не обязательно с web-2.0-прибабахами, но точно — с web-2.0-схемой, когда контент Сайта создается посетителями) создан не просто так, а с маркетинговым прицелом.

Пытливый ум (владельца Сайта) задастся целью — «развивать и применять в хозяйстве».

Поможем ему? :)
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии32

Снижаем битрейт подкастов онлайн

Время на прочтение1 мин
Количество просмотров1K
Регулярно вижу в комментариях к подкастам заявления о том, что мол подкаст записан со слишком высоким битрейтом и весит много. Неудобно качать на медленном соединении, или дорого при платном трафике.
Авторы подкастов зачастую битрейт снижать не хотят, т.к. это ухудшит качество звучания, над которым они так долго работали.
Я согласен с авторами, если есть хоть какая–то возможность скачать и послушать в оригинальном качестве, сделайте это. Но, если возможности нет совсем, на помощь можно призвать онлайн–сервисы.
О варианте решения приведённой выше проблемы я и хочу рассказать.
Читать дальше →
Всего голосов 27: ↑25 и ↓2+23
Комментарии20

Фабрика иконок

Время на прочтение1 мин
Количество просмотров1.9K
Iconfactory
Я давно слежу за сайтом под названием IconFactory.

Это действительно настоящая фабрика. Здесь в архиве можно найти массу бесплатных наборов иконок как для Mac OS, так и для Windows.

Вот замечательный пример:
Iconfactory
Читать дальше →
Всего голосов 88: ↑81 и ↓7+74
Комментарии34

Обзор наиболее интересных материалов по анализу данных и машинному обучению №15 (22 — 28 сентября 2014)

Время на прочтение6 мин
Количество просмотров12K

Представляю вашему вниманию очередной выпуск обзора наиболее интересных материалов, посвященных теме анализа данных и машинного обучения.
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии2

Анализ существующих подходов к распознаванию лиц

Время на прочтение14 мин
Количество просмотров148K
С завидной регулярностью на Хабре появляются статьи, рассказывающие о тех или иных методах распознавания лиц. Мы решили не просто поддержать эту замечательную тему, но выложить наш внутренний документ, который освещает пусть и не все, но многие подходы к распознаванию лиц, их сильные и слабые места. Он был составлен Андреем Гусаком, нашим инженером, для молодых сотрудников отдела машинного зрения, в образовательных, так сказать, целях. Сегодня предлагаем его все желающим. В конце статьи – впечатляющих размеров список литературы для самых любознательных.
Читать дальше →
Всего голосов 50: ↑49 и ↓1+48
Комментарии10

Работа с геолокациями в режиме highload

Время на прочтение6 мин
Количество просмотров58K
При разработке ПО часто возникают интересные задачи. Одна из таких: работа с гео-координатами пользователей. Если вашим сервисом пользуются миллионы пользователей и запросы к РСУБД происходят часто, то выбор алгоритма играет важную роль. О том как оптимально обрабатывать большое количество запросов и искать ближайшие гео-позиции рассказано под катом.

image
Читать дальше →
Всего голосов 37: ↑35 и ↓2+33
Комментарии12

10 самых распространённых ошибок при программировании на JavaScript

Время на прочтение10 мин
Количество просмотров155K


Сегодня JavaScript лежит в основе большинства современных веб-приложений. При этом за последние годы появилось большое количество JavaScript-библиотек и фреймворков для разработчиков Single Page Application (SPA), графики, анимации и даже серверных платформ. Для веб-разработки JavaScript используется повсеместно, и поэтому качество кода обретает всё большее значение.

На первый взгляд, этот язык может показаться довольно простым. Встраивание в веб-страницу базового функционала JavaScript — это не проблема для любого опытного разработчика, даже если он ранее не сталкивался с этим языком. Однако это обманчивое впечатление, поскольку JavaScript гораздо сложнее, мощнее и чувствительнее к нюансам, чем кажется поначалу. Немало тонкостей в этом языке приводит к большому количеству распространённых ошибок. Сегодня мы рассмотрим некоторые из них. На эти ошибки нужно обратить особое внимание, если вы хотите отлично программировать на JavaScript.
Читать дальше →
Всего голосов 205: ↑176 и ↓29+147
Комментарии127

Переход на PHP 5.5 и юнит-тесты

Время на прочтение4 мин
Количество просмотров19K
С момента перехода с PHP 4.4 на PHP 5.3 в Badoo прошло уже 4 года, пришла пора обновлять PHP, на этот раз сразу на версию PHP 5.5. Помимо новых фич, новая версия PHP в очередной раз принесла нам существенное увеличение производительности, поэтому у нас было много причин для апгрейда. В этой статье мы расскажем о том, как мы переходили на PHP 5.5, какие «грабли» собрали, и зачем в очередной раз переписывали нашу систему для запуска юнит-тестов на основе PHPUnit.


Рис 1. Общая архитектура

«Грабли» при переходе с PHP 5.3 на PHP 5.5


В прошлый раз мы переходили с четвертой версии PHP на пятую, причём наша версия PHP 5.3 содержала патчи, чтобы работал «старый» синтаксис PHP, например, $a = &new ClassName();, и чтобы наша кодовая база могла работать на PHP4 и PHP5 одновременно. На этот раз у нас таких ограничений не было, поэтому при переходе мы просто нашли и заменили все устаревшие конструкции на более актуальные, и на этом переписывание кода было закончено.

Основные проблемы, которые у нас возникли:
  • часть deprecated-фич языка была убрана;
  • расширение mysql стало deprecated;
  • низкая производительность расширения runkit, которое мы используем при написании юнит-тестов.


После перехода на PHP 5.5 наши юнит-тесты начали проходить значительно дольше (в несколько раз), поэтому мы решили в очередной раз доработать нашу «пускалку», чтобы решить эту проблему.

Читать дальше →
Всего голосов 73: ↑62 и ↓11+51
Комментарии7

8 ловушек программирования

Время на прочтение13 мин
Количество просмотров223K


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

Однако я верю в то, что их можно избежать, если знать в какие ловушки можно попасть и как из них выбираться. Возможно эта вера — очередная ловушка.
Читать дальше →
Всего голосов 276: ↑256 и ↓20+236
Комментарии83

Terms of Service, Privacy Policy и License Agreement: ликбез для мобильного инди-разработчика

Время на прочтение13 мин
Количество просмотров21K
Мы познакомились с Владиславом Архиповым во время питерской конференции WNCONF, где он выступал с докладом. В его выступлении особое внимание уделялось важной для нас теме трактовки gambling для social casino. В ходе разговора, в котором участвовали и другие коллеги, выяснилось, что юридическим моментам в своей работе инди-девелоперы уделяют очень мало внимания, создавая необходимые документы по остаточному принципу. Мы решили восполнить этот пробел и провести вместе с практикующим юристом небольшой “ликбез”.
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии5

Автономная кроссплатформенная монолитная программа на Java

Время на прочтение21 мин
Количество просмотров62K
Я люблю desktop-приложения. Признаваться в этом нынче, похоже, стыднее, чем в связях с иностранной разведкой, но это так. Нет, это не значит, что я не люблю интернет-технологии. Более того, некоторые я не только уважаю, а даже более-менее знаю. Но, тем не менее, я скучаю по тем временам, когда программа писалась на одном компьютере, потом компилировалась и запускалась на других, разных компьютерах. Тогда везде (почти) была одна система — Windows с одной и той же API, почти не было проблем совместимости на уровне приложений, никто не материл разработчиков браузеров — все берегли нервы на разработчиков WinAPI, которые умудрялись создавать конфликты даже внутри нее одной. Но это я, конечно, иронизирую, а если серьезно — иногда и сейчас хочется написать просто desktop-приложение, да так, чтобы работало оно на всех популярных системах. Трудно? Если подумать и покопать, то не очень.

Еще я люблю языки высокого уровня с аккуратной архитектурой и строгой типизацией. Мои фавориты — Java и C#. Оба они предоставляют разработчику множество преимуществ по сравнению с C++, оба избавляют от ряда забот. Чем приходится платить? Тем, что таскаешь за собой тяжелую колоду, которая называется Oracle JVM, .NET или mono. Все три колоды весят сотни мегабайт и лицензию имеют такую, что каждый пользователь вынужден качать эту штуку сам, не путая при этом разрядность своего компьютера, а главное — программа на Java не может быть совместима со всеми версиями JVM разом, не так ли? И вот — мы приходим к тому, что просто скинуть программку другу (или миллиону друзей) и не заботиться о том, что она у него не запустится, не выходит. Приходится делать хитрые сетапы, вбивать костыли, и это я еще не упомянул .NET — однажды я видел у друга сразу 3 установленных версии, причем все три были нужны разным приложениям…

Стоп! А давайте напишем программу на Java, но так, чтобы она не требовала установки на машину какой-либо JVM, чтобы одним касанием собиралась под Windows, Linux и OS X и чтобы при этом занимала совсем чуть-чуть; так, чтобы никто даже не понял, что она написана, скажем, не на C. Невозможно? Совсем наоборот! (И нет, я имею в виду не gcj, который лишает Java всех ее прелестей. Рефлексия будет работать и даже сторонние jar вы сможете запускать).

Ну и как это сделать?
Всего голосов 156: ↑146 и ↓10+136
Комментарии80

Глоток МоКито

Время на прочтение3 мин
Количество просмотров102K
А Вы знаете что такое mock-объект? Нет?

Что же говорит по этому поводу википедия: «В объектно-ориентированном программировании mock-объект имитирует поведение реального объекта заданным образом… ». Казалось бы зачем? Википедия продолжает: «Во время unit-тестирования mock-объекты могут симулировать поведение бизнес-объектов и бизнес-логику, что иногда необходимо из-за сложности реального поведения»

И что же дают mock-библиотеки java-разработчику?
Всего голосов 37: ↑32 и ↓5+27
Комментарии10
1

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность