Search
Write a publication
Pull to refresh
296
0
Валентин Бартенев @VBart

Руководитель разработки «Angie Software»

Send message

Запоздалая оптимизация

Reading time3 min
Views8.4K
Вашему вниманию предлагается перевод статьи Дениса Форбса (Dennis Forbes) "The Sad Reality of Post-Mature Optimization". Превосходные иллюстрации также взяты из оригинальной статьи.

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

На каком этапе разработки пора обратить внимание на производительность? В какой момент оптимизация перестает быть преждевременной и становится своевременной?

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

Оптимизации в компиляторах. Часть 1

Reading time7 min
Views33K
Копаясь в дебрях LLVM, я неожиданно обнаружил для себя: насколько всё же интересная штука — оптимизация кода. Поэтому решил поделиться с вами своими наблюдениями в виде серии обзорных статей про оптимизации в компиляторах. В этих статьях я попытаюсь «разжевать» принципы работы оптимизаций и обязательно рассмотреть примеры.
Я попытаюсь выстроить оптимизации в порядке возрастания «сложности понимания», но это исключительно субъективно.
И ещё: некоторые названия и термины не являются устоявшимися и их используют «кто-как», поэтому я буду приводить несколько вариантов, но настоятельно рекомендую использовать именно англоязычные термины.
Начнём...

Пора завязывать использовать пробелы вместо табуляции в коде

Reading time3 min
Views93K

Этот топик — ответ на топик "Пора завязывать использовать символы табуляции в коде".
Я хотел было ответить к комментариях, но в силу объема и желания независимости от исходного топика решил создать новый топик.

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

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

TOP'ай сюда

Reading time5 min
Views184K
Обзор практически всех *top утилит под linux (atop, iotop, htop, foobartop и т.д.).

top

Все мы знаем top — самую простую и самую распространённую утилиту из этого списка. Показывает примерно то же, что утилита vmstat, плюс рейтинг процессов по потреблению памяти или процессора. Совсем ничего не знает про загрузку сети или дисков. Позволяет минимальный набор операций с процессом: renice, kill (в смысле отправки сигнала, убийство — частный случай). По имени top суффикс "-top" получили и все остальные подобные утилиты в этом обзоре.

atop


Atop имеет два режима работы — сбор статистики и наблюдение за системой в реальном времени. В режиме сбора статистики atop запускается как демон и раз в N времени (обычно 10 мин) скидывает состояние в двоичный журнал. Потом по этому журналу atop'ом же (ключ -r и имя лог-файла) можно бегать вперёд-назад кнопками T и t, наблюдая показания atop'а с усреднением за 10 минут в любой интересный момент времени.

В отличие от top отлично знает про существование блочных устройств и сетевых интерфейса, способен показывать их загрузку в процентах (на 10G, правда, процентов не получается, но хотя бы показывается количество мегабит).

Незаменимое средство для поиска источников лагов на сервере, так как сохраняет не только статистику загрузки системы, но и показатели каждого процесса — то есть «долистав» до нужного момента времени можно увидеть, кто этот счастливый момент с LA > 30 создал. И что именно было причиной — IO программ, своп (нехватка памяти), процесор или что-то ещё. Помимо большего количества информации ещё способен двумя цветами подсказывать, какие параметры выходят за разумные пределы.
Читать дальше →

Как верстать красиво или чем плохи css-фреймворки

Reading time8 min
Views33K
Преимущества дивной вёрстки, семантичной разметки и разделения содержимого и дизайна описаны десятки, сотни раз, но все-равно находятся люди, которые не понимают самой идеи html и css, пишут в коде такие ужасные вещи, как
<span style="color:blue">

, когда хотят расскасить текст в синий цвет и искренне считают, что эта запись чем-то лучше, чем
<font color="blue">

, наивно веря в этом деле валидатору. А ведь правильный подход в написании html и css лежит на поверхности. Достаточно просто посмотреть историю развития этого языка, почитать статьи десятилетней давности и проанализировать. Я, при поддержке theshock, постаралась в этот статье упорядоченно и коротко изложить наше видение этого вопроса.

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

Вперед в будущее! Переход с ICQ на Jabber

Reading time6 min
Views38K
*Преамбула*
В связи с глобальной тенденцией перехода умных людей на Jabber, и инертного сопротивления этому переходу людьми, привыкшими к ICQ, было принято решение написать качественную аргументированную статью, о том, почему же все таки стоит сменить средство общения.
Итак, статья:


Для многих из нас ICQ является синонимом слов «общение в интернете», мы используем его по делу и для развлечения, находим с его помощью новых друзей и поддерживаем связь со старыми. За годы использования этой программы накопились сотни контактов в списке и длиннющая история переписки. В общем, все вроде бы устраивает, и идея перейти на что-то новое сразу наталкивается на логичный вопрос: «А зачем? Мне и так неплохо».

Итак, Jabber — это не очередной ICQ-клиент. Это система онлайн-общения нового поколения.
Она пришла на смену устаревшим месенджерам, место которых уже давно на интернет-свалке.

jabber
Почему же общаться в Jabber лучше, чем в ICQ?

Материалы продвинутого уровня по Питону

Reading time5 min
Views46K
PythonВ мире все примерно распределяется в соответствии с принципом Паретто. Меньшая часть — богатые, большая часть — бедные (читающий, ты входишь в золотой миллиард). Тоже касается и материалов о программировании. Порой очень сложно найти хоть что-нибудь не начального уровня.

После прочтения Dive into Python или подобной ей и ознакомления с документацией возникает вопрос, а что читать дальше? Можно обратиться к списку книг на python.org. Там есть раздел Advanced Books, но в нем всего лишь 6 книг (седьмая не выходила), и только одну я бы назвал по-настоящему стоящей.

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

Ниже собраны сложные материлы про Питон, его устройство и возможности. Все на английском (грех, не знать технический английский). Про Dive into Python я слукавил. Большинство приведенных материалов требуют хорошее знание Питона и наличие опыта программирования на нем.

Подробнее

Анатомия Linux тролля с благими намерениями

Reading time6 min
Views6K
Форумы о Linux всегда будут лакомым кусочком для троллей, и сейчас я расскажу вам почему. Вопреки всем наказам вроде «Не корми тролля!» и «Такие посты лучше игнорировать» люди будут продолжать отвечать, потому что тролли (как и всевозможные дистрибутивы Linux) бывают совершенно разношерстные. В частности, есть тролли, которые выглядят довольно искренними и пылкими, поэтому им всегда отвечают.
Читать дальше →

Сервер на стероидах: 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. Минусы оптимизации

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

PHP Performance Series: Caching Techniques

Reading time6 min
Views11K
Кеширование промежуточного кода (Opcode Caching)
Кэширование кода это один из самых легких и эффективных путей увеличения производительности в PHP. Использовании данного вида кэширования позволит избавиться от большого количества неэффективностей, возникающих при процессе запуска выполнения кода. Кэширование кода сохраняет промежуточный код в памяти для того чтобы не компилировать PHP-код каждый раз при запуске файла.
Читать дальше →

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

Reading time2 min
Views38K
В одних комментариях прозвучал такой вопрос:

> но как развить силу воли если нету силы воли?

Сила воли есть у каждого. Слабая, крошечная, но есть. Поэтому весь вопрос в том, как ее, такую слабую, тренировать.

Самое простое — это аналогия со спортивными упражнениями.

Не нужно сразу стараться поднять 100кг штангу. Надорветесь, попортите нервы и настроение.

Начните с чего-то более осязаемого, с такого, что вы сможете поднять восемь раз. Например, 40 килограмм. Поднимайте их регулярно и через месяц сможете поднимать 60. Через три — 80. Если вы были упорны, то через полгода будет и долгожданный центнер.

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

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

Например, каждое утро заправлять постель (без исключений) или каждый второй день не пользоваться лифтом, а подниматься по ступенькам. Или каждый вечер что-то писать в блоге (не важно о чем). Или учить по два html тега каждый день. Или знакомиться каждый день с новым человеком — кому что нравится.

Забудьте о списках и планах, просто отмечайте в пинарике это одно единственное действие.

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

Только не торопитесь, воодушевление от первых успехов сразу попросит вас повесить на штангу вон те зеленые блины по 50 кг, которые используют Самые Большие Парни из спортивного зала, но не ведитесь на это. Добавляйте по 5 килограмм и молча работайте.

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

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

Метод очень старый, очень простой и очень полезный. Наверное ему очень много лет, но одним из самых старых источников этого метода для меня стала та часть биографии Бенджамина Франклина, в которой он описывал свой способ приобретения полезных привычек:

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

Подробное описание «Франклиновского дневника». Почитайте, там много полезного.

Постепенно, но постоянно.

Удачи :)

Update: заметил в комментариях негативную реакцию на календарик-пинарик.

Хабрачеловеки — не важно какой инструмент контроля вы используете (лично я пользуюсь эксель-табличкой), важно само его наличие. Очень трудно следить за каким-то регулярным событием, без ежедневного фиксирования результатов и сравнения отчетов. А улучшать что-то без такого — вообще невозможно.

Если вам не нравится слово пинарик, давайте заменим его на календарь-франклина, суть-то не изменится — это полезный и действительно работающий инструмент самоконтроля.

Графические фильтры на основе матрицы скручивания

Reading time6 min
Views43K
UPD: Заголовок изменен, что бы более соответствовать теме статьи

В статье пойдет речь об использовании convolution matrix (матрицы скручивания или матрицы свертки), с помощью которой можно создавать и накладывать на изображения фильтры, такие как blur, sharpen и многие другие.

Cтатья будет интересна не только веб-программистам, но и всем кто так или иначе занимается программной обработкой изображений, поскольку функции для работы с матрицей скручивания имеются во многих языках (точно известно о php и flash). Так же, статья будет интересна дизайнерам, использующим Adobe Photoshop, поскольку в нем имеется соответствующий фильтр (Filter-Other-Custom).

Примеры будут на языке PHP с использованием библиотеки GD. Теория, практика, примеры (осторожно, много картинок!)

под катом

ООО «Снежинка» — Часть 1. Пошаговое руководство по регистрации.

Reading time7 min
Views3.6K

Прелюдия


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

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

ООО «Снежинка» — Часть 2. Рассматриваем различные аспекты регистрации и начинаем работать

Reading time10 min
Views1.7K
Этот хабратопик навеян топиком ООО «Снежинка» — Часть 1. Пошаговое руководство по регистрации..
Так как после моих слов в комментариях о потенциальной возможности написать продолжение моя карма вышла в плюс, эту возможность было решено не упускать.

Здесь речь пойдет о небольшой фирме работающей в сфере услуг.

Мы кратко рассмотрим следующие вопросы:
  1. Регистрация через фирму или собственными силами?
  2. Юридический адрес: покупать или нет?
  3. Уставной капитал: какой и в какой форме?
  4. Открытие расчетного счета в банке (потенциальные сложности)
  5. Работа с наличными средствами, зарплата, интернет-банкинг

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

Основы BASH. Часть 1

Reading time5 min
Views1.4M
Безусловно, все те кто общается с ОС Linux хоть раз да имели дело(во всяком случае слышали точно) с командной оболочкой BASH. Но BASH не только командная оболочка, это еще и превосходный скриптовый язык программирования.
Цель этой статьи — познакомить поближе юзеров с bash, рассказать про синтаксис, основные приемы и фишки языка, для того чтобы даже обычный пользователь смог быстренько написать простой скрипт для выполнения ежедневной(-недельной, -месячной) рутинной работы или, скажем, «на коленке» наваять скриптик для бэкапа директории.
Читать дальше →

Основы BASH. Часть 2

Reading time6 min
Views373K
Основы BASH. Часть 2.
Извиняюсь за такую большую задержку между статьями, но сессия дает о себе знать в самый неподходящий момент :)
Всем спасибо за замечания, критику и дополнения, которые были озвучены в комментариях к прошлой статье.
Эта часть, как и обещал, будет посвящена циклам, математическим операциям и использованию внешних команд.
Начнем.
Читать дальше →

Расширение функциональности готовых программ

Reading time11 min
Views43K
В мире ПО существует огромное количество программ, забытых своими разработчиками. Хорошо, когда уже есть хорошая альтернатива. А если ее нет? В программе может катастрофически не хватать каких-то мелочей, некоторые досадные ошибки могут годами доставлять массу неудобств пользователям, а на новых версиях ОС программа и вовсе может отказаться работать. Далеко не всегда имеются исходные коды, чтобы привести программу в порядок. Если программа простая — не составит труда за короткий срок создать альтернативу. Но если программа большая и сложная, что же делать в таком случае? Не всегда рационально тратить время и деньги на разработку полного аналога, ведь расширить в разумных рамках функциональность и исправить большинство ошибок можно уже в готовом исполняемом файле.
В этой статье будут продемонстрированы методики модификации исполняемых файлов на примере расширения функциональности легендарной игры Age of Empires II (стратегия реального времени).
Читать дальше →

IE PNG Fix 2.0 Alpha 2 — теперь с поддержкой background position и background repeat

Reading time1 min
Views2.5K
— Кросс-пост из моего блога
Всем известный IE PNG Fix, который был всем хорош, но который не умел работать с background position и background repeat, наконец — таки исправил этот изъян.
Читать дальше →

Information

Rating
927-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity