Pull to refresh
4
0
Алексей Ефремов @Jofr

User

Send message

Церебральный подход в управлении проектами

Reading time4 min
Views11K
Представляем Вам новый сервис по управлению медиа проектами — Cerebro

image

История


Уже в 2005 году, когда наш коллектив работал в компании Cinemateka, над «Турецким гамбитом» режиссера Джаника Файзиева, нам стала очевидна необходимость специальной системы управления.
Первым подопытным кроликом стал обычный форум (до него правда была еще wiki) c расширенный опциями назначения ответственного сотрудника и контроля/планирования сроков исполнения поставленных задач.
Далее последовали проекты «Монгол» режиссера Сергея Бодрова-старшего и «1612» Владимира Хотиненко. Полгода работы в новой системе выявили необходимость значительного упрощения работы с файлами в сравнении с FTP-обменом, также создания для пользователей возможности давать аудио и визуальные комментарии ко всем видам файлов, задействованных в рабочем процессе, от видеоролика до обычного офисного документа. Должны же были замученные FTP-обменами и Photoshop-комментариями пользователи когда-нибудь вздохнуть с облегчением :)

UPD: Регистрация в демо версии

Читать дальше →
Total votes 34: ↑32 and ↓2+30
Comments43

Настраиваем Vim под Python

Reading time4 min
Views43K
Сегодня я хочу рассказать вам, как я настраивал любимый всеми редактор Vim (который в одном режиме пищит, а в другом — все портит) для написания кода на Python. Статья расчитана на начинающих виммеров.
У меня получилась такая картинка:

Настроить и свой!
Total votes 69: ↑65 and ↓4+61
Comments61

PuTTY: Как быстро изменить цветовую схему в существующих сессиях

Reading time3 min
Views11K
Как накатить цветовую схему на уже существующие сесии. Сделал для себя .reg файл. Его надо открыть в UTF-8 редакторе, изменить
[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\%session-name%] на имя вашей сесии и импортировать в реестр.
Изменятся только цветовые настройки, всё остальное останется как есть.
30 секунд и весь мой десяток сессий блистает новыми цветами.

image

Саму цетовую схему взял тут. Недостаток оригинального файла — это полный export всего подряд, а нужно всего только цвета поменять.

содержимое .reg файла под катом
Читать дальше →
Total votes 31: ↑19 and ↓12+7
Comments17

MongoDB или как разлюбить SQL

Reading time6 min
Views67K
Введение

Коллеги, при разработке приложений, мы каждый день сталкиваемся с потребностью в гибком хранении информации (обновлении, поиске по ней, и т.д.). Класс продуктов, которые решают этот круг задач, как все мы знаем — Базы данных. Но что это такое в нашем понимании? У многих «база данных» твердо ассоциируется с MySQL, таблицами и SQL-запросами. И это устраивает до определенного момента. Действительно, реляционные базы данных дают массу преимуществ в работе: поскольку данные имеют сильную связанность, не нужно контролировать целостность базы данных. Используя простой под-запрос можно выбрать количество комментариев к каждому посту в блоге. Используя JOIN нетрудно делать сложные связанные выборки и получать данные сразу о нескольких сущностях.
Читать дальше →
Total votes 129: ↑122 and ↓7+115
Comments99

Асинхронное программирование — редактор графов

Reading time15 min
Views3.5K
Иногда в процессе описания бизнес-логики, необходимо составить граф асинхронных операций с внутренними зависимостями, т.е. когда задачи выполняются асинхронно, но некоторые задачи зависят от других и тем самым вынуждены «ждать» пока из можно будет запустить. В этом посте я хочу показать как эту проблему можно решить путем создания графической DSL, которая позволит разработчику визуально определить граф зависимостей.

Если интересно...
Total votes 32: ↑28 and ↓4+24
Comments12

PowerShell 2.0 RTM доступен для всех версий Windows

Reading time3 min
Views21K
imageWindows PowerShell — это скриптовый язык для командной строки, который спроектирован для системных администраторов и автоматизации. Построенный на платформе Microsoft .NET Framework, язык Windows PowerShell позволяет IT-профессионалам и разработчикам контролировать и автоматизировать администрирование Windows и приложений.

Под катом представлены новые функции, которые были добавлены в Windows PowerShell 2.0.

Читать дальше →
Total votes 63: ↑42 and ↓21+21
Comments112

Победители конкурса Russian Flash Awards 2009

Reading time1 min
Views782
На прошедшей Russian Internet Week состоялось награждение победителей конкурса Flash-проектов RFA2009. Я думаю, хабра-общественности будет любопытно посмотреть, кого признали лучшими по флэшу в 2009-м году :)

Red Keds получили три статуэтки в номинациях «Анимация», «ART», «Коммерция», «3D»; Alternativa Platform — две статуэтки в номинациях «Игра», «Техническая Заслуга»; в номинации «Мультипликация» победителем стала компания Toonbox; в номинации «AIR,Flex» победили — Сергей Чеканов и Ксения Львова, в номинации «Видео» выиграла компания Grape.

В 2009 году организаторы подготовили три специальные номинации, победители которых стали известны только на церемонии. В категории «Инновационное решение» победителем стало ADV/web-engineering за разработку проекта «VIERA» (для Panasonic), в номинации LiveCycle – компания DNA за успешное маркетинговое продвижение LiveCycle-технологий в России, в номинации «За вклад в развитие отрасли» был отмечен автор и прародитель конкурса Russian Flash Awards — Серджио Дифлюкс.

Гран-при конкурса получила лучшая из представленных работ – платформа от компании Alternativa Platform, на которой разработана игра «Про танки» — одна из самых популярных на сегодняшний день игр, сделанная во флэше.
Total votes 34: ↑32 and ↓2+30
Comments15

Пузырьки, кэши и предсказатели переходов

Reading time6 min
Views10K
Эта заметка написана по мотивам одного любопытного поста, краткий коммент её же автора к которому сподвиг меня разобраться в происходящем поподробнее. Предлагается сравнить две вариации алгоритма сортировки пузырьком. Первая из них – обычный пузырёк, с небольшой оптимизацией — внутренний цикл можно закончить немного раньше, зная, что оставшаяся часть массива уже отсортирована:
for (i=0; i<N; i++)
  for (j=0; j<N - (i+1); j++)
    if (a[j] > a[j+1])
      swap(a[j], a[j+1]);


Во втором варианте внутренний цикл проходит по другой части массива, однако алгоритмически этот вариант эквивалентен первому (подробности ниже):
for (i=0; i<N-1; i++)
    for (j=i; j>=0; j--)
        if (a[j] > a[j+1])
            swap(a[j], a[j+1]);


Запускаем (код), например, для N=100 000 на массиве int'ов, и получаем около 30 секунд в первом случае, и меньше 10 секунд — во втором, то есть отличие в 3 раза! Откуда же тогда берётся такая разница?
Читать дальше →
Total votes 157: ↑150 and ↓7+143
Comments65

Абстрактные классы и интерфейсы в Питоне

Reading time5 min
Views177K
Абстрактные базовые классы и интерфейсы — близкие по назначению и смыслу сущности. Как первые, так и вторые представляют собой своеобразный способ документирования кода и помогают ограничить (decouple) взаимодействие отдельных абстракций в программе (классов).

Питон — очень гибкий язык. Одна из граней этой гибкости — возможности, предоставляемые метапрограммированием. И хотя в ядре языка абстрактные классы и интерфейсы не представлены, первые были реализованы в стандартном модуле abc, вторые — в проекте Zope (модуль zope.interfaces).

Нет смысла одновременно использовать и то и другое, и поэтому каждый программист должен определить для себя, какой инструмент использовать при проектировании приложений.

Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments9

Индексы в MySQL: многоколоночные индексы против комбинированных индексов

Reading time9 min
Views120K
Я часто вижу ошибки, связанные с созданием индексов в MySQL. Многие разработчики (и не только новички в MySQL) создают много индексов на тех колонках, которые будут использовать в выборках, и считают это оптимальной стратегией. Например, если мне нужно выполнить запрос типа AGE=18 AND STATE='CA', то многие люди просто создадут 2 отдельных индекса на колонках AGE и STATE.

Намного лучшей (здесь и далее прим. переводчика: а обычно и единственной верной) стратегией является создание комбинированного индекса вида (AGE,STATE). Давайте рассмотрим почему это так.

Читать дальше →
Total votes 74: ↑58 and ↓16+42
Comments57

Сервер на стероидах: FreeBSD, nginx, MySQL, PostgreSQL, PHP и многое другое

Reading time16 min
Views40K
Нравится мне эта картинка, у меня, вот никогда такие красивые графики в какти не получались =(

Введение


С момента написания мной предыдущей статьи по оптимизации этой связки прошло довольно много времени. Тот многострадальный Pentium 4 c 512Мб памяти, обслуживающий одновременно до тысячи человек на форуме и до 150,000 пиров на трекере уже давно покоится на какой-нить немецкой, свалке, а клуб сменил уже не один сервер. Всё сказанное в ней всё ещё остаётся актуальным, однако есть вещи которые стоит добавить.
Статья большая, так что будет поделена на логические блоки:

0. Зачем вообще что-то оптимизировать?
  
1. Оптимизация ОС (FreeBSD)
  1.1 Переход на 7.х 
  1.2 Переход на 7.2
  1.3 Переход на amd64
  1.4 Разгрузка сетевой подсистемы
  1.5 FreeBSD и большое кол-во файлов
  1.6 Softupdates, gjournal и mount options
  
2. Оптимизация фронтенда (nginx)
  2.1 Accept Filters
  2.2 Кеширование
  2.3 AIO
  
3. Оптимизация бэкенда
  3.1 APC
  3.1.1 APC locking
  3.1.2 APC hints
  3.1.3 APC fragmentation
  3.2 PHP 5.3
  
4. Оптимизация базы данных
  4.1 MySQL 
  4.1.1 Переход на 5.1
  4.1.2 Переход на InnoDB
  4.1.3 Встроеный кеш MySQL - Query Cache
  4.1.4 Индексы
  
4.2 PostgreSQL
  4.2.1 Индексы
  4.2.2 pgBouncer и другие.
  4.2.3 pgFouine
  
4.3 Разгрузка базы данных
  4.3.1 SphinxQL
  4.3.2 Не-RDBMS хранилище
  4.4 Кодировки
  4.5 Асинхронность
  
Приложение. Мелочи.
  1. SSHGuard или альтернатива.
  2. xtrabackup
  3. Перенос почты на другой хост
  4. Интеграция со сторонним ПО
  5. Мониторинг
  
 6. Минусы оптимизации

Кому что-нибудь из этого списка интересно, жмём сюда...
Total votes 375: ↑368 and ↓7+361
Comments105

Прогрессивные технологии, как способ выжать из сервера максимум

Reading time5 min
Views12K

Вступление


Просто красивый rrdtool =)
Забавно, но когда программист разрабатывает какой-либо продукт, он редко задумывается над вопросом могут ли на одну кнопку в один момент времени нажать одновременно 2000 человек. А зря. Оказывается могут. Как ни странно но большинство движков, написанных такими программистами, очень плохо ведут себя под большими нагрузками. Кто бы подумал, а всего один лишний INSERT, не проставленный index, или кривая рекурсивная функция могут поднять load averages чуть ли не на порядок.

В этой статье я опишу как мы, разработчики проекта, сумели выжать из одного сервера с Pentium 4 HT / 512Mb RAM, максимум, держа одновременно 700+ пользователей на форуме и 120,000 на трекере. Да, проект этот — торрент трекер. Предлагаю сразу оставить в стороне разговоры о копирайтах и правах, мне это не интересно, что действительно интересно — это HighLoad.
читать дальше
Total votes 318: ↑314 and ↓4+310
Comments184

О модульном тестировании на C++ и о CxxTest

Reading time4 min
Views61K
Совсем недавно в ходе разработки одного проекта передо мной встала задача поиска удобного средства для написания юнит-тестов на C++. К каким результатам привело моё исследование подробнее в этой статье.
Поехали.
Total votes 20: ↑19 and ↓1+18
Comments29

Список полезных инструментов для php разработчика

Reading time10 min
Views148K
PHP один из самых широко используемых языков для создания вебсайтов. PHP фреймворки, такие как Zend, CakePHP, CodeIgniter и т.д и open source классы и библиотеки упростили разработку.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
Читать дальше →
Total votes 214: ↑200 and ↓14+186
Comments131

Continuous integration для php

Reading time9 min
Views14K
Эту статью написал мой добрый приятель и бывший коллега fred, работающий в команде программистов над большим и сложным проектом, который должен работать 24х7. Если кто-то решит пригласить его на хабр — с удовольствием вышлю его email по хабрапочте. Пожелания и комментарии приветствуются, а я обязуюсь передавать ответы автора в меру своих возможностей.

Меня давно посещала мысль запустить CI-сервер для рабочего проекта. База модульных тестов уже достаточно внушительных размеров, а количество людей в проекте немного увеличилось. Можно было бы наблюдать за тем, как изменяется покрытие тестами кода и соблюдаются стандарты кодирования. И наказывать провинившихся. Шучу.
Некоторое время назад была прочитана книжка Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска и статья Quality Assurance Tools for PHP, которые и послужили отправной точкой.
Читать дальше →
Total votes 82: ↑77 and ↓5+72
Comments44

Канбан в IT (Kanban Development)

Reading time7 min
Views283K
Я собираюсь написать несколько статей про новую методологию гибкой разработки Канбан (Kanban Development) в целях подготовки к Scandinavian Agile Conference 2009, где я буду делать один из докладов (кстати, заодно приглашаю всех на конференцию).
Сегодня публикую первую из статей.
Основная задача первой статьи — это как можно проще описать основы Канбан: что это такое, в чем отличие от других гибких методологий и зачем это нужно.
Также я хотел бы собрать как можно больше вопросов и сомнений в комментариях, чтобы ответить на них в следующих статьях, так что пишите всё, что вам непонятно, или что ещё вы хотели бы узнать про Канбан.
Я не то, чтобы большой специалист по этой новой методологии, но мы внутри команды пришли к Канбану самостоятельно и последовательно прошли все этапы мутации от SCRUM до Канбан, так что практический опыт есть.

Читать дальше →
Total votes 61: ↑58 and ↓3+55
Comments91

Установка для «чайников»: nginx + php-cgi + mysql + eaccelerator + memcache на Debian 5.0 «lenny»

Reading time7 min
Views78K
Данная заметка является шпаргалкой для новичков в установке нормально работающего комплекса, описанного в заголовке. Все пункты установки протестированы несколько раз на разных vds, поэтому проблем с нехваткой чего-то быть не должно, как это обычно бывает, когда ставишь что-то по мануалам, надерганных из разных источников. Подробно описания настроек и «тюнинга» в заметке нет, т.к. это всё очень индивидуально и требует понимания что, как и зачем делается, а это невозможно охватить в одной даже очень большой шпоре.
Читать дальше →
Total votes 76: ↑56 and ↓20+36
Comments78

GTD за 2 минуты

Reading time3 min
Views74K
Часто встречали странные буквы GTD? Боитесь что это очередная секта?
Не бойтесь. Сейчас я все расскажу.

Что такое вообще это GTD?

Что возникает у вас в голове, когда вы слышите название GTD? Я тут поспрашивал знакомых, и нарисовалась забавная картина. Все, кого я знаю, представляют себе ГТД примерно так:

GTD украло человека

Даже как-то стыдно становится. Люди с высшим образованием, а воображают такую чушь.
Читать дальше →
Total votes 32: ↑24 and ↓8+16
Comments16

Определяем порядок столбцов в составном индексе

Reading time5 min
Views22K
Хочу поделиться простым эмпирическим методом, который я использую для определения того, в каком порядке должны идти столбцы в составном индексе. Этот способ подходит не только для MySQL, он также применим к любым СУБД, в которых используются b-tree индексы.

Давайте начнем с запроса, который возвращает пустой результат, но при этом делает полный скан таблицы. EXPLAIN покажет на нем, что нет доступных индексов (т.е. possible_keys = NULL)

SELECT * FROM tbl
WHERE
  status='waiting' AND
  source='twitter' AND
  no_send_before <= '2009-05-28 03:17:50' AND
  tries <= 20
ORDER BY date ASC LIMIT 1;
Читать дальше →
Total votes 52: ↑47 and ↓5+42
Comments17

Чёрточки: только ли тире, минус и дефис?

Reading time4 min
Views180K
Однажды вечером я почувствовал, что пришло время расширить 97‐ й параграф «Ководства» Артемия Лебедева.

На клавиатуре одна чёрточка, она обычно правее нуля и повыше букв «З» и «Х». Неосведомлённые люди называют её попеременно то дефисом, то минусом, то тире. Лебедев объясняет нам, что это четыре (учитывая две разновидности тире) различных символа. На самом деле их как минимум девять, и об этом я и расскажу вам сейчас.

Читать дальше →
Total votes 311: ↑288 and ↓23+265
Comments208

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity