Pull to refresh
4
0
Алексей @Atorian

User

Send message

PostgreSQL Antipatterns: устраняем вложенные интервалы

Level of difficultyEasy
Reading time5 min
Views6.5K

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

Но self-JOIN показал себя не лучшим образом...

Как сделать эффективнее?
Total votes 32: ↑31 and ↓1+36
Comments3

Ещё раз о том, какого размера должны быть тесты

Level of difficultyHard
Reading time9 min
Views5.9K

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

Читать далее
Total votes 13: ↑12 and ↓1+19
Comments1

Golang — архитектурный линтер

Level of difficultyEasy
Reading time5 min
Views7.8K

Для того чтобы повысить качество приложения, написанного на языке go, можно использовать разные линтеры. Один из таких линтеров — архитектурный.

В данной статье расскажу про свой бесплатный, open-source, линтер под MIT лицензией и чем он может быть полезен.

Читать далее
Total votes 17: ↑16 and ↓1+20
Comments1

Не спешите, делайте как следует: Общинное Управление

Reading time7 min
Views1.2K

Эта статья — четвертая глава серии Groove is in the Heart: The DisCO Elements, которая в настоящее время публикуется на Hackernoon. Представленная здесь инфографика принадлежит Felipe Duarte. Здесь вы можете посмотреть все изображения, которые есть в этой серии статей.

DisCO расшифровывается как «Distributed Cooperative Organization» (распределенная кооперативная организация) и представляет собой феминистскую, кооперативную и ориентированную на интересы общества альтернативу широко распространенной DAO-парадигме (Decentralized Autonomous Organization — распределенная автономная организация). DisCO Elements — это нелинейное введение в тонкости DisCO. Перейдите сюда, чтобы загрузить полный PDF или EPub с дополнительным контентом, или же посетите DisCO.coop, где вы также найдете дополнительную информацию.

Читать далее
Total votes 10: ↑6 and ↓4+6
Comments1

Материалы студенческой школы «Recent Advances in Algorithms»

Reading time1 min
Views4.2K
Recent Advances in Algorithms

В конце мая в Петербурге в ПОМИ РАН прошла международная студенческая школа «Recent Advances in Algorithms». Идея школы заключалась в том, чтобы ведущие учёные рассказали о последних достижениях в области алгоритмов. В результате у нас получился следующий список курсов.

Список лекторов
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments0

Что не так с интерфейсами авиасервисов #2: Как Aviageek изменился после поста на Хабре

Reading time3 min
Views16K


В прошлом топике мы рассказывали о том, как наш проект «Авиагик» решает распространенные интерфейсные проблемы авиасервисов. Проект находится в стадии прототипа, поэтому обратная связь для нас ценна, как ничто другое. Аудитория Хабра нас не подвела — материал получил большой отклик и собрал более сотни комментариев, авторы которых высказывали свои пожелания к интерфейсу и говорили о том, какие решения им показались не самыми удачными.

Мы тщательно проанализировали полученные отзывы, создали новую версию интерфейса и сегодня представляем вашему вниманию финальный прототип «Авиагика» перед непосредственным запуском сервиса.
Читать дальше →
Total votes 29: ↑26 and ↓3+23
Comments54

Видео докладов с MoscowJS Meetup

Reading time1 min
Views12K
Недавно в офисе Badoo проходил юбилейный MoscowJS Meetup. Делимся с вами видео докладов.

1. «Специфика верстки мультиязычных веб-приложений»
Александр Тевосян, Badoo.




+ Выложили на GitHub нашу утилиту rtl-css специально к митапу: https://github.com/badoo/rtl-css
Читать дальше →
Total votes 22: ↑21 and ↓1+20
Comments6

Проектируем информационную архитектуру для e-commerce. Часть 2

Reading time14 min
Views24K
image
Продолжим наше изучение информационной архитектуры и ее значение для электронной коммерции. В первой главе мы вкратце ознакомились с понятием информационной архитектуры (далее — ИА), значением и подходами к работе над ней в рамках проектирования взаимодействия.
Теперь от вопроса «Зачем проектировать информационную архитектуру» перейдем к вопросу «Какие есть особенности ее проектирования?»

Итак: особенности работы с ИА в e-commerce и три аспекта ее проектирования:

  • Принципы построения качественной ИА. Их применение в e-commerce;
  • Шаблонные схемы ИА. Какие шаблоны лучше использовать;
  • Процесс исследований ИА в e-commerce и их рентабельность.

Как водится, краткие итоги главы в конце поста.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments6

Обзор Razer Ouroboros и Blackwidow. Или как я клавиатуру с мышкой менял

Reading time7 min
Views93K
Прошла уже более трёх лет с того момента, как я начал пользоваться игровой мышкой Naga (спасибо Boomburum за неё) и обычной беспроводной клавиатурой Logitech. Но всё имеет свойство ломаться, как это ни печально. Мышь начала глючить, у неё перестала щёлкать одна кнопка, а у клавиатуры и вовсе начали отваливаться клавиши. И я снова решил взглянуть на рынок компьютерной периферии. Остановился для начала на Razer, т.к. мышка всё же прожила 3 года, а до этого обычно они у меня разваливались за год. Да и зелёный цвет в подсветках клавиатур меня всегда привлекал.


Читать дальше →
Total votes 68: ↑46 and ↓22+24
Comments85

Input — новый шрифт для программирования

Reading time1 min
Views99K
Компания Font Bureau разработала новое семейство шрифтов Input, важнейшим из которых в данном случае для нас является шрифт Input Mono. Кириллица присутствует. Для персонального использования шрифты бесплатны.

Читать дальше →
Total votes 81: ↑72 and ↓9+63
Comments142

Знакомство с Content Delivery Network

Reading time9 min
Views86K
Содержимое: что такое CDN? История возникновения. Зачем она нужна? Кому она нужна, а кому нет? Порог вхождения, стоимость, издержки. Основные технологии.

CDN — сокращение от content delivery network, то есть “сеть доставки контента”. Чаще всего это множество серверов с специализированным ПО, которые ускоряют доставку (“отдачу”) контента конечному пользователю. Сервера расположены по всему миру таким образом, чтобы время ответа посетителям сайта было минимальным. Под “контентом” чаще всего подразумевают видео и статические элементы веб-сайтов (не требующие выполнения кода на сервере или запросов в базу данных, такие как css/js), но к “контенту” относятся и совсем неожиданные вещи — например, игры в Стиме (использует CDN для отдачи игр), обновления для операционных систем и т.д.



Немного истории

Резкий рост Интернета в середине 90-х привёл к ситуации, что сервера тех лет не могли в одиночку выдержать нагрузку (много ли может отдать могучий двухпроцессорный сервер на базе Pentium Pro на частоте в 266 МГц с 128 мегабайтами памяти?). Лимит производительности серверов и потребность во всё большей и большей производительности породила ныне забытые слова: “ферма серверов”, “иерархическое кеширование”… Айтишный новояз удивительно чувствителен к возрасту — и слова вроде “servers farm” или “information superhighway” сейчас ассоциируются с тёплыми ламповыми CRT-мониторами, а не с прогрессом. В ходе разработки и внедрения разных решений была замечена одна важная особенность: есть два типа контента — статический и динамический.
Читать дальше →
Total votes 48: ↑45 and ↓3+42
Comments28

Опубликованы записи докладов конференции DevCon 2014

Reading time7 min
Views7.5K
Уважаемые друзья! Мы рады вам сообщить о публикации записей докладов конференции Microsoft DevCon 2014. Для вашего удобства они размещены на трех ресурсах, и вы можете посмотреть интересующие вас доклады.
TechDays – http://www.techdays.ru/series/devcon_14
Channel9 – http://channel9.msdn.com/Events/DevCon/Russia-2014
Youtube – http://www.youtube.com/playlist?list=PLVDsxiCH_PqTpoEAwIRquA9W4ODnMfc2Z

Читать дальше →
Total votes 28: ↑23 and ↓5+18
Comments3

Делаем простейший фильтр по свойствам товаров с помощью ElasticSearch на Symfony2

Reading time5 min
Views48K
Написать эту статью меня сподвигло отсутствие в интернете готового пошагового руководства «как реализовать фильтр товаров на ElasticSearch», а задача сделать это у меня стояла чётко и непоколебимо. Удавалось находить отрывочную справочную информацию, но никак не cookbook по решению самых тривиальных задач.

Акцентирую ваше внимание именно на symfony2, поскольку буду использовать FOSElasticaBundle, который позволяет описывать mapping индексов elasticsearch в удобных yaml конфигах и привязывать к ним сущности Doctrine ORM или документы Doctrine ODM. Промаппленные индексы заполняются из связанных доктриновских сущностей с помощью одной единственной консольной команды. Кроме того, он включает в себя вендорную библиотеку для конструирования поисковых и фильтрационных запросов. Результаты поиска возвращаются в виде массива объектов сущности или документа Doctrine ORM/ODM, привязанной к поисковому индексу. Подробнее о FOSElasticaBundle, традиционно, на гитхабе: github.com/FriendsOfSymfony/FOSElasticaBundle

Использование бандла позволяет полностью абстрагироваться от манипуляций с чистым JSON, что-то кодировать и декодировать функциями json_encode и json_decode, лезть куда-то с помощью сurl. Здесь только ООП подход!

Немного о схеме данных в SQL

Поскольку мои товары хранятся в реляционной СУБД, мне понадобилось реализовать EAV модель для их свойств и значений (подробнее: en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model )

В результате, у меня вышла вот такая схема данных:
image
Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments22

Создание игрового персонажа

Reading time5 min
Views166K


В данной статье описывается процесс создания персонажа для игрового движка. Статья в первую очередь адресована тем, кто интересуется процессом разработки next gen моделей, а также всем, кто хочет заглянуть за кулисы современного игродела. Персонажа я делал для портфолио, на персонажей переключился совсем недавно, можно сказать, что это первый доведенный до ума персонаж. Поскольку данная работа — мой личный проект, то я установил ограничение треугольников в 20 000, текстуры в 2048*2048, работа планировалась под PBR.
Читать дальше →
Total votes 87: ↑85 and ↓2+83
Comments47

Как развивать силу воли

Reading time3 min
Views190K

Одной из самых важных вещей в GTD является сила воли. Без нее вы не будет доводить дела до завершения, любая выбранная вами система не буде работать. Первый же приступ лени не даст вам заглянуть в список дел. GTD, todo list, канбан доска — это всё инструменты. Мы про них много читаем, учимся их использовать, даже программируем. Только самый важный инструмент, который всегда при нас, это сила воли.

До не давнего времени я не понимал, как работает сила воли, не знал, в какой момент времени меня покинет самообладание. Это изменила одна книга. Я рекомендую ее прочесть каждому ITшнику, особенно фрилансерам. У нас, как правило, слабый внешний контроль, поэтому приходиться полагаться только внутренний. Поэтому так важно его настроить. Почему я рекомендую именно эту книгу в качестве руководства под катом.
Читать дальше →
Total votes 98: ↑74 and ↓24+50
Comments62

Создание API: в рамку и на стену

Reading time5 min
Views57K
Каждый программист — проектировщик API. Хорошие программы состоят из модулей, а протокол взаимодействия модулей — это тоже API. Хорошие модули используются повторно.

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

Публичный API — не воробей, опубликуешь — не уберешь. Есть только одна попытка сделать все правильно, поэтому постарайся.

API должно быть легко использовать, но сложно использовать неправильно. Сделать что-то простое с помощью такого API должно быть просто; сложное — возможно; сделать что-то неправильно должно быть невозможно, или, по крайней мере, трудно.

API должен описывать сам себя. Изучение кода на таком API не вызывает желания читать комментарии. Вообще, комментарии редко нужны.

Перед разработкой API собери требования с долей здорового скептицизма. Осознай общие задачи и реши их.

Оформляй требования как шаблоны использования API. Сверяйся с ними в процессе проектирования.
Читать дальше →
Total votes 154: ↑143 and ↓11+132
Comments97

Семь вопросов, которые необходимо задать себе перед тем, как начать собственный бизнес

Reading time4 min
Views101K

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



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



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





20 основных причин провала старапов по версии ToWave


Читать дальше →
Total votes 73: ↑62 and ↓11+51
Comments79

«Запах» проектирования: одержимость примитивами

Reading time2 min
Views9.7K
Это второй пост из серии о Poka-yoke проектировании – также известном, как инкапсуляция.

Множество классов имеют тенденцию к потреблению или раскрытию примитивных значений, таких как int, или string. В то время как такие примитивы существуют на любой платформе, их использование может приводить к процедурному коду. Более того, они обычно нарушают инкапсуляцию, допуская присвоение некорректных значений.
Читать дальше →
Total votes 23: ↑16 and ↓7+9
Comments24

Использование EXPLAIN. Улучшение запросов

Reading time10 min
Views180K
Когда вы выполняете какой-нибудь запрос, оптимизатор запросов MySQL пытается придумать оптимальный план выполнения этого запроса. Вы можете посмотреть этот самый план используя запрос с ключевым словом EXPLAIN. EXPLAIN – это один из самых мощных инструментов, предоставленных в ваше распоряжение для понимания MySQL-запросов и их оптимизации, но печальным фактом является то, что многие разработчики редко его используют. В данной статье вы узнаете о том, какие данные предлагает EXPLAIN на выходе и ознакомитесь с примером того, как использовать его для оптимизации запросов.
Читать дальше →
Total votes 39: ↑32 and ↓7+25
Comments14

Темное программирование

Reading time7 min
Views139K
imageПредлагаю перейти на сторону зла, на темную сторону программирования. Ситхи сильнее джедаев. И печенек хватит на всех. Предупреждаю, прежде чем начнете читать далее. Характер при переходе на темную сторону портится.
Прошу под кат
Читать дальше →
Total votes 257: ↑203 and ↓54+149
Comments212

Information

Rating
Does not participate
Location
Севастополь, Республика Крым, Россия
Date of birth
Registered
Activity