Как стать автором
Обновить
0
0
Андрей Филатов @filatoff

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

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

Памятка евангелиста PostgreSQL: репликанты против репликации

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


В продолжение серии публикаций «Памятка евангелиста PostgreSQL...» (1, 2) дорогая редакция снова выходит на связь, на этот раз с обещанным обзором механизмов репликации в PostgreSQL и MySQL. Главным поводом для написания послужила частая критика репликации MySQL. Как это часто бывает, типичная критика представляет из себя забористую смесь из правды, полуправды и евангелизма. Всё это многократно реплицируется разными людьми без особых попыток разобраться в услышанном. А поскольку это довольно обширная тема, я решил вынести разбор в отдельную публикацию.
Читать дальше →
Всего голосов 47: ↑40 и ↓7+33
Комментарии64

10 главных ошибок масштабирования систем

Время на прочтение7 мин
Количество просмотров52K
Мартин Л. Эббот и Майкл Т. Фишер, авторы книги «Искусство масштабируемости», перечисляют наиболее распространенные архитектурные, организационные и технологические проблемы масштабировании в product-группах. Список был сформирован на основе их опыта, а также в ходе коммуникаций с клиентами и лег в основу первой книги.

Архитектурные ошибки



Читать дальше →
Всего голосов 53: ↑45 и ↓8+37
Комментарии33

О профессиональных наказаниях подчиненных в интеллектуальной IT-среде

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


Текст написан по мотивам выступления руководителя студии «Сибирикс» Владимира Завертайлова на летней партнерской конференции «1С-Битрикс» BitrixSummerFest и представляет личное мнение выступавшего.

Полное выступление Владимира можно посмотреть по ссылке.

Тема это болезненная, и говорить о ней открыто не любят. Конечно, каждому хотелось бы работать в коллективе, где никто и никого не наказывает. Увы, но теория управления пока не дает нам рецептов построения совершенно бесконфликтных коллективов, в которых все работают ответственно и с полной самоотдачей, не проявляя никаких пороков в рабочее время, где начальники сплошь тактичны и мудры. Впервые о проблематике наказаний я задумался несколько лет назад, сидя в офисе часов в 12 ночи. В тот момент я, будучи директором компании, выполнял обязанности программиста. Я отлаживал код, написанный сотрудником, который всё бросил, не дописал и ушел домой. В скайп стучится заказчик, пишет грозные слова, «срочно, всё пропало», давит и торопит меня. А в таких ситуациях у меня начинает болеть спина. И я сидел и думал, а что для программиста означает «нести ответственность за проект»?

Скажем, я, как директор, за срыв проекта огребаю по полной, в первую очередь — финансово. Ведь вся ответственность за работу компании лежит на директоре. А как быть с программистом или дизайнером?
Читать дальше →
Всего голосов 75: ↑37 и ↓38-1
Комментарии109

Эра NoSQL позади

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

Новый тренд на HighLoad++ — множество докладов об использовании оперативной памяти. Слово Константину Осипову, разработчику платформы Tarantool, автору доклада «Что особенного в СУБД для данных в оперативной памяти».

Ты отвечал в MySQL за производительность, как так получилось, что ты решил разрабатывать свою СУБД?
В MySQL я руководил одной из команд разработки сервера, за производительность там отвечали все.

MySQL по многим параметрам был работой мечты, но, к сожалению после того, как мы стали частью Oracle, многое изменилось.

Несколько моих коллег ушли в MariaDB, кто-то основал свою компанию (SeveralNines, FromDual). Я никогда не чувствовал себя «недогруженным», а с уходом многих ключевых разработчиков работа вообще превратилась в марафон по передаче знаний. Сопротивление поглощению, желание начать всё с чистого листа, бунт против медленного принятия решений большой компанией, нежелание по разным причинам уезжать в США, в конце концов, хорошее предложение от Mail.Ru, которому к этому моменту уже было около года — и я ушёл.

Если бы знал, куда ухожу, ещё десять раз подумал бы. Иногда вообще не было веры, что удастся сделать что-то полезное, чем будут пользоваться за пределами Mail.Ru, да и сейчас Tarantool очень далёк пока от «идеальной СУБД».
Читать дальше →
Всего голосов 48: ↑35 и ↓13+22
Комментарии30

Ускоряем код на Android'е

Время на прочтение4 мин
Количество просмотров16K
Продолжу начатую в моей предыдущей статье работу по оптимизации алгоритма. Вкратце расскажу, что было сделано. Были взяты готовые java исходники и каскадная модель одной из реализаций алгоритма Виола-Джонса. Данный алгоритм используется для поиска объектов на фотографии, в частности для поиска лиц. Тестирование проводил на своем телефоне, по результатам было получено, что изначальный код на java работал 54 секунды на фотографии размером 300 на 400. Это было слишком медленно, переписанный мною код на C++ показал результат в 14 секунд. В комментариях было предложено догнать java-реализацию до C++ следующим образом: отпрофилировать и найти узкие места, и заменить двумерный массив на одномерный. Также у меня в планах было распараллелить алгоритм на C++. Все было сделано и исследовано, результаты ниже.
Читать дальше →
Всего голосов 14: ↑11 и ↓3+8
Комментарии6

Введение в RxJava: Почему Rx?

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

Этот цикл статей предназначен для знакомства начинающего реактивного программиста с мощью библиотеки RxJava ˜— реализации принципов реактивного программирования для JVM. Это перевод обширного туториала по RxJava Крисса Фруссиоса, основанного на IntroToRx для Rx.NET.


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


Материал этих статей расчитан на прочтение от начала до конца. Его обьем больше, чем среднего туториала, но меньше чем реальной книги. Мы начнем с самых основ и от раздела к разделу будем переходить к всё более продвинутым сценариям и концепциям. Каждый раздел задумывался самодостаточным и лаконичным для того, чтобы к нему можно было вернуться в будущем.

Читать дальше →
Всего голосов 35: ↑23 и ↓12+11
Комментарии10

PYCON RUSSIA-2015: видео и презентации докладов

Время на прочтение4 мин
Количество просмотров16K
18-19 сентября в Екатеринбурге прошла третья международная конференция python-разработчиков PyCon Russia. 21 доклад, два мастер-класса, Lightning Talks — все это PyCon-2015. Под катом — отчет о прошедшей конференции, много видео и презентации докладов.

0_1217f0_23d019c7_orig.jpg
Питонисты собрались из 25 городов, среди которых: Сан-Франциско, Париж, Прага, Бонн, Таллин, Минск, Киев, Москва, Санкт-Петербург, Казань, Уфа

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

Технокнига, часть 4: литература по управлению продуктом, разработке веб-сервисов, управлению веб-проектами, бизнесу и системному анализу архитекторов

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


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

Android архитектура клиент-серверного приложения

Время на прочтение13 мин
Количество просмотров105K
Клиент-серверные приложения являются самыми распространенными и в то же время самыми сложными в разработке. Проблемы возникают на любом этапе, от выбора средств для выполнения запросов до методов кэширования результата. Если вы хотите узнать, как можно грамотно организовать сложную архитектуру, которая обеспечит стабильную работу вашего приложения, прошу под кат.


Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии36

Осенние онлайн-курсы от Computer Science Center и Академического университета

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

Этой осенью СПб АУ РАН и CS центр предлагают несколько новых бесплатных онлайн-курсов на разные темы: от теории графов до программирования на языке Haskell, и перезапускают некоторые из прочитанных ранее. Год назад состоялся первый запуск онлайн-курсов CS центра. Сначала появились курсы по программированию, а весной их дополнили курсы по математике, подготовленные вместе с Академическим университетом. Все онлайн-курсы разработаны на платформе Stepic.org.


  • Java. Базовый курс (А. А. Владыкин)
  • Алгоритмы: теория и практика. Методы (А. С. Куликов)
  • Введение в архитектуру ЭВМ. Элементы операционных систем (К. В. Кринкин)
  • Введение в математический анализ (А. И. Храбров)
  • Ликбез по дискретной математике (А. В. Омельченко)
  • Основы перечислительной комбинаторики (А. В. Омельченко)
  • Основы теории графов (А. В. Омельченко)
  • Погружение в СУБД (Д. В. Барашев)
  • Программирование на языке C++ (А. В. Смаль)
  • Функциональное программирование на языке Haskell (Д. Н. Москвин)

Часть курсов входит в годовую онлайн-программу по основам программирования.
Подробнее о курсах
Всего голосов 24: ↑24 и ↓0+24
Комментарии12

Зри в корень: java.lang.Object

Время на прочтение8 мин
Количество просмотров86K
В Java в вершине иерархии классов лежит класс java.lang.Object. Лежит и лежит, долгое время я им совсем не интересовался.

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

Однако, такой класс есть и я приведу тут исходники java/lang/Object.java, опустив javadoc, и попытаюсь пролить свет на некоторые моменты связанные с реализацией jvm:
Читать дальше →
Всего голосов 31: ↑28 и ↓3+25
Комментарии16

Разработка циферблатов для Android Wear — это проще, чем кажется

Время на прочтение3 мин
Количество просмотров28K
Когда возникла идея делать циферблаты для часов на Android Wear, к делу приступили без страха. Опыт разработки под «большой» андроид был, а на часиках крошечный экран и всего одна кнопка — легче лёгкого.


Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии3

Наша Service и опасна и трудна или некоторые аспекты выживания служб в Android

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

Вместо введения


Во многих практических задачах требуется выполнение различных фоновых действий, будь то проигрывание музыки, обмен данными с сервером или просто слежение за действиями пользователя дабы похитить у него реквизиты кредитных карт. Ну а если не получится, то по крайней мере завалить его целевой рекламой, используя полученные сведения. Как уже давным-давно все знают, в Android такие вещи оформляются в виде службы (Service).

Официальная документация гласит, что ОС Android останавливает службу только в случае нехватки памяти. Тем не менее, существует и другие случаи. Пользователь может сам остановить службу, используя предоставляемые ему средства меню Settings/Apps, там же он может сделать и полную остановку приложения. Но для этого ему надо напрягаться и, в общем-то осознавать свои действия и их последствия. К сожалению, для уничтожения службы у него есть и другие возможности, которыми он может пользоваться бессознательно. В частности, если в нашем приложении ранее была запущена хоть одна Activity, видимая в истории, то пользователь буквально одним движением пальца сможет вынести соответствующую задачу. Как ни парадоксально, попутно Android вышибет и весь процесс вместе со службой.

Лично мне такое поведение Android логичным не кажется. Пользователь зачастую просто чистит Recent Apps от давно забытого хлама, совсем не обязательно он при этом желает отказаться от тех благ, которые ему предоставляла выполняющаяся служба. Однако разработчики Google мыслили немного по-другому. По-другому, так по-другому, их право, но в конце концов нам с вами тоже надо как-то жить.
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии20

Анализируем большие объемы данных с Apache Spark

Время на прочтение1 мин
Количество просмотров17K
image
С анализом больших объемов данных постепенно начинают сталкиваться не только крупнейшие IT-компании, но и обычные разработчики. В нашей компании в ряде проектов такая задача возникает, и мы решили систематизировать накопленный опыт, поделившись с коллегами по i-Free и нашими партнерами наиболее эффективными инструментами и технологиями. Сегодня речь пойдет о применении Apache Spark
Подробности
Всего голосов 16: ↑13 и ↓3+10
Комментарии9

Акции: первый серьезный опыт

Время на прочтение7 мин
Количество просмотров41K
Мой первый опыт инвестирования случился еще в школе, у нас уже появился dial-up, а спустя некоторое время и первые компании, предлагающие торговать на Forex. Отношение в тот момент ко всей этой торговле было исключительно игровое – я совершал сделки без особого анализа, используя самые простые индикаторы уровней на графике цены. Спустя годы я пришел «взрослую биржу».

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

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

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


Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии67

36 млн запросов в час, 10000+ постоянно работающих клиентов, на одном сервере, nginx+mysql

Время на прочтение5 мин
Количество просмотров115K
Сложилась ситуация, что участвую в проекте, который работает с достаточно большой нагрузкой. Как уже написал — 36 млн запросов в час. Я много чего прочитал и перепробовал за последний месяц, настраивая сервер; хотелось бы просто сжато и компактно выдать тезисно то, что работает хорошо в такой конфигурации.

Первое, что я заметил — множество советов как все настроить под большую нагрузку. Читайте их внимательно, обычно в тексте найдете, что речь про «высокую нагрузку» в 15-20 тысяч клиентов в сутки. У нас клиентов примерно миллион, активных, ежедневных.

У нас нет денег и мы все делаем за свой счет, поэтому экономим. Итог — весь миллион клиентов обслуживается на одном сервере, вот на таком — EX-60 на hetzner.
Читать дальше →
Всего голосов 111: ↑96 и ↓15+81
Комментарии102

Лекции Техносферы. 2 семестр. Методы распределенной обработки больших объемов данных в Hadoop

Время на прочтение5 мин
Количество просмотров35K
Предлагаем вашему вниманию новый курс лекций Техносферы. Он представляет собой введение в Hadoop, фокусируясь на проектировании и реализации распределенных алгоритмов, которые могут применяться в различных сферах: обработка текстов, графов, связанных данных и т.п. Также рассматриваются различные компоненты платформы Hadoop и программные модели. Целью курса является знакомство студентов со стеком технологий Hadoop, применяемых для хранения, доступа и обработки больших объемов данных. Преподаватели курса: Алексей Романенко, Михаил Фирулик, Николай Анохин.

Лекция 1. Введение в Big Data и MapReduce


Что такое «большие данные». История возникновения этого явления. Необходимые знания и навыки для работы с большими данными. Что такое Hadoop, где он применяется. Что такое «облачные вычисления», история возникновения и развития технологии. Web 2.0. Вычисление как услуга (utility computing). Виртуализация. Инфраструктура как сервис (IaaS). Вопросы параллелизма. Управление множеством воркеров. Дата-центры и масштабируемость. Типичные задачи Big Data. MapReduce: что это такое, примеры. Распределённая файловая система. Google File System. HDFS как клон GFS, его архитектура.


Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии3

Социальная сеть на Android за несколько выходных — часть II (сервер)

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

Краткое содержание первой части


В ответ на непрекращающийся бум мобильных социальных приложений, мы с друзьями решили собраться в мини-хакатон и написать очередную социальную сеть на Android с целью очертить круг общих вопросов и предложить скелет, из которого каждый сможет сделать что-то новое и оригинальное. В первой части мы рассмотрели интерфейс клиента, сетевые запросы, граф друзей и обработку изображений.
В этой статье мы вкратце расскажем про загрузку фотографий в облачное хранилище, доставку push-уведомлений и очереди асинхронных задач на сервере.
Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии2

Под капотом образовательного проекта Хекслет

Время на прочтение5 мин
Количество просмотров16K
Привет, Хабр!



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

Напомню, Хекслет — это платформа для создания практических уроков по программированию в настоящей среде разработки. Под настоящей средой разработки мы подразумеваем полноценную машину, подключенную к сети. Эта важная деталь отличает Хекслет от других образовательных проектов (например, Codecademy или CodeSchool) — у нас нет симуляторов, все по-настоящему. Это позволяет обучать и обучаться не только программированию, но и работе с базами данных, серверами, сетью, фреймворками и так далее. В целом, если это запускается на Unix-машине — этому можно обучать на Хекслете. При этом, понимая это или нет, пользователи используют Test-Driven Development (TDD), потому что их решения проверяются юнит-тестами.

В этом посте я расскажу про архитектуру платформы Хекслет и инструменты, которые мы используем. О том, как на этой платформе создавать практически уроки — в следующей статье.
Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии19

Фреймворки JavaScript. Как изучить их по-быстрому

Время на прочтение17 мин
Количество просмотров64K
Здравствуйте, коллеги.

Сегодня мы хотели затронуть такую многогранную и противоречивую тему, как фреймворки JavaScript. За последние несколько месяцев в издательстве неоднократно обсуждались перспективы издания книг и по Angular.js, и по Knockout.js, а книга по Backbone.js у нас выходила в прошлом году. Следующий материал призван помочь разобраться в сильных и слабых сторонах различных фреймворков JavaScript. Возможно, после изучения статьи читателю будет проще ответить на вопросы о том, так ли схожи эти фреймворки, и желает ли он дополнительно изучить какую-то из технологий, упомянутых в этом обзоре. Мы же попросим вас поделиться вашими соображениями о том, нужны ли новые книги по этим фреймворкам, если да — то по каким (высказываемся в комментариях, не стесняемся давать ссылки на книги).
Читать дальше →
Всего голосов 16: ↑13 и ↓3+10
Комментарии10

Информация

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