Search
Write a publication
Pull to refresh
3
0

Пирожочек

Send message

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

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 раза! Откуда же тогда берётся такая разница?
Читать дальше →

Кеширование FastCGI-запросов в nginx

Reading time2 min
Views28K
Доброе утро, Хабр!

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

Список полезных PHP классов и библиотек

Reading time4 min
Views65K

Email


  • Swift Mailer
    Swift Mailer легко интегрируется в любое PHP-приложение. Это гибкий и элегантный ООП-подход к отправке писем с множеством функций: отправка эл.почты, используя SMTP, SendMail, Postfix, поддержка серверов и др.
  • PHPMailer
    Лучший класс для работы с эл. почтой. Поддерживает сообщения в цифровой форме, S/MIME шифрование, текстовые и HTML-письма, изображения, поддерживает несколько Email’ов, SMTP-аутентификация.

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

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

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

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

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

минилинукс

Reading time3 min
Views8.3K
Лирическая часть

Кто из нас в детстве не разбирал игрушки, чтоб посмотреть, что же там такое внутри. Я не был исключением. Прошло всего несколько лет, и одной из игрушек стал линукс. Из абстрактного желания «сломать и посмотреть» оно формализовалось в несколько вполне конкретных задач, одной из которых стала найти некую отправную точку — минимальное нечто, которое бы грузилось и давало шелл. Пару раз я начинал собирать lfs, но до конца так и не дошел. Прочел несколько статей про разработку embedded, но там все было чересчур серьезно и по-взрослому: после предложений сооружать окружение для кросс-компиляции под различные архитектуры и удаленной отладки в панике отключал интернет. Пересмотрел несколько mini-livecd, но все они или мегадревние (ядро 2.4 и ниже) или обязательно с графикой и DE, что никак не вписывалось в мое представление об идеальном минидистре для опытов.
И вот не так давно я случайно узнал, что то, что я ищу, называется initramfs и лежит у меня под носом.
Читать дальше →

Разгоняем Wordpress до скорости света

Reading time7 min
Views141K
image
Скорость и отказоустойчивость – одни из тех факторов, что неизменно влияют на популярность вашего ресурса, ведь даже с лучшим в мире контентом медленно работающий сайт будет раздражать читателей и рано или поздно вы их потеряете. В этой статье мы будем оптимизировать самый популярный блоговый движок — Wordpress, работающий на PHP. А заодно рассмотрим несколько общих моментов в оптимизации сайтов.
Читать дальше →

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

Reading time8 min
Views71K
Это не попытка создать список всех существующих инструментов для CSS разработки. Только некоторые, наиболее полезные были отобраны и размещены в соответствующих категориях.


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

Doctrine и сортировка для связи многие к одному

Reading time2 min
Views2.8K
Довольно давно использую связку Zend Framework и Doctrine и очень не хватало сортировки для коллекций получаемых по ссылке. Оказалось, что это легко реализовать.

Позже в одном из проектов, созданном компанией в которой я работаю, был найден подобный метод, но, увы, не ясно просочилось-ли это от разработчиков Doctrine или было создано в недрах моей команды. Смущает тот факт, что найденный фрагмент кода написан для СУБД, которая в нашей компании не используется.
Приступим?

Сжатие при помощи canvas и PNG-картинок

Reading time1 min
Views2.2K
Примечание: ниже находится перевод статьи «Compression using Canvas and PNG-embedded data». Автор предлагает на суд читателей еще один способ загрузить в клиентском браузере JavaScript-библиотеку, передав при этом минимум данных. Для этого используется PNG-картинка и объект canvas. Мои комментарии далее курсивом.

Сжатая JavaScript-библиотека в виде PNG-файла

Недавно у меня появилась идея, что можно хранить исходный Javascript-код в PNG-картинке, а затем получать его через метод getImageData() элемента canvas. К несчастью, сейчас это означает, что только такой подход будет работать только в Firefox, Opera Beta и последних ночных сборках WebKit. Пока еще никто не указал мне, насколько gzip опережает данный метод по степени сжатия, я хочу сразу сказать что рассматриваемый метод никак не может быть практической альтернативой физическому сжатию. Чуть раньше сегодня я уже писал о сжатой версии в 8Кб скрипта Super Mario, для которого использовалась эта техника (подробнее можно прочитать в заметке про кодирование). Здесь я приведу лишь некоторые детали о действительном положении вещей.

читать дальше на webo.in →
12 ...
113

Information

Rating
Does not participate
Registered
Activity