Обновить
4
0
Алексей Ефремов@Jofr

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

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

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

Время на прочтение4 мин
Охват и читатели11K
Представляем Вам новый сервис по управлению медиа проектами — Cerebro

image

История


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

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

Читать дальше →

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

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

Настроить и свой!

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

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

image

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

содержимое .reg файла под катом
Читать дальше →

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

Время на прочтение6 мин
Охват и читатели67K
Введение

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

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

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

Если интересно...

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

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

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

Читать дальше →

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

Время на прочтение1 мин
Охват и читатели837
На прошедшей 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, на которой разработана игра «Про танки» — одна из самых популярных на сегодняшний день игр, сделанная во флэше.

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

Время на прочтение6 мин
Охват и читатели11K
Эта заметка написана по мотивам одного любопытного поста, краткий коммент её же автора к которому сподвиг меня разобраться в происходящем поподробнее. Предлагается сравнить две вариации алгоритма сортировки пузырьком. Первая из них – обычный пузырёк, с небольшой оптимизацией — внутренний цикл можно закончить немного раньше, зная, что оставшаяся часть массива уже отсортирована:
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 раза! Откуда же тогда берётся такая разница?
Читать дальше →

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

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

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

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

Читать дальше →

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

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

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

Читать дальше →

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

Время на прочтение16 мин
Охват и читатели41K
Нравится мне эта картинка, у меня, вот никогда такие красивые графики в какти не получались =(

Введение


С момента написания мной предыдущей статьи по оптимизации этой связки прошло довольно много времени. Тот многострадальный 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. Минусы оптимизации

Кому что-нибудь из этого списка интересно, жмём сюда...

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

Время на прочтение5 мин
Охват и читатели12K

Вступление


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

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

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

Время на прочтение4 мин
Охват и читатели64K
Совсем недавно в ходе разработки одного проекта передо мной встала задача поиска удобного средства для написания юнит-тестов на C++. К каким результатам привело моё исследование подробнее в этой статье.
Поехали.

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

Время на прочтение10 мин
Охват и читатели153K
PHP один из самых широко используемых языков для создания вебсайтов. PHP фреймворки, такие как Zend, CakePHP, CodeIgniter и т.д и open source классы и библиотеки упростили разработку.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
Читать дальше →

Continuous integration для php

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

Меня давно посещала мысль запустить CI-сервер для рабочего проекта. База модульных тестов уже достаточно внушительных размеров, а количество людей в проекте немного увеличилось. Можно было бы наблюдать за тем, как изменяется покрытие тестами кода и соблюдаются стандарты кодирования. И наказывать провинившихся. Шучу.
Некоторое время назад была прочитана книжка Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска и статья Quality Assurance Tools for PHP, которые и послужили отправной точкой.
Читать дальше →

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

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

Читать дальше →

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

Время на прочтение7 мин
Охват и читатели79K
Данная заметка является шпаргалкой для новичков в установке нормально работающего комплекса, описанного в заголовке. Все пункты установки протестированы несколько раз на разных vds, поэтому проблем с нехваткой чего-то быть не должно, как это обычно бывает, когда ставишь что-то по мануалам, надерганных из разных источников. Подробно описания настроек и «тюнинга» в заметке нет, т.к. это всё очень индивидуально и требует понимания что, как и зачем делается, а это невозможно охватить в одной даже очень большой шпоре.
Читать дальше →

GTD за 2 минуты

Время на прочтение3 мин
Охват и читатели77K
Часто встречали странные буквы GTD? Боитесь что это очередная секта?
Не бойтесь. Сейчас я все расскажу.

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

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

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

Даже как-то стыдно становится. Люди с высшим образованием, а воображают такую чушь.
Читать дальше →

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

Время на прочтение5 мин
Охват и читатели25K
Хочу поделиться простым эмпирическим методом, который я использую для определения того, в каком порядке должны идти столбцы в составном индексе. Этот способ подходит не только для 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;
Читать дальше →

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

Время на прочтение4 мин
Охват и читатели188K
Однажды вечером я почувствовал, что пришло время расширить 97‐ й параграф «Ководства» Артемия Лебедева.

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

Читать дальше →

Информация

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