Pull to refresh
154
0
Иван Авсеянко @Rebus

Программист

Send message

Старые версии Mozilla Firefox

Reading time2 min
Views16K

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

На самом деле, всё это происходило не так уж давно - президентом в 2011 году был Дмитрий Медведев, но браузеры действительно были радикально легче. Дистрибутив Mozilla Firefox версии 1.5 занимает чуть меньше 5 мегабайт.

Что в этом толку? Этот вопрос я задал себе следующим, и тут же решил проверить - а много ли пользы от тогдашних браузеров в современном мире? Скачал и установил себе последовательно Mozilla Firefox 1.5.0.12, 10.0.2, 20.0.1, 30.0 и 40.0.3. Хотел продолжить, но дальнейшее исследование не имело смысла (позже будет понятно, почему).

Общий результат

Дистрибутивы Firefox доступны. Браузер до сих пор можно скачать с первой и до последней версии, все они могут установиться на последней Windows 10, причём так, чтобы не мешать другим установленным браузерам (даже себе же но более поздней версии), если устанавливать их в разные папки.

Я пытался зайти на несколько известных сайтов и кликнуть пару ссылок, чтобы убедиться в их работоспособности.

Как правило, если браузеру удавалось открыть страницу, то отображал он её более-менее корректно, явных проблем с вёрсткой не было заметно. Проблемы были другие.

Читать далее
Total votes 23: ↑16 and ↓7+9
Comments27

Галопом по европам: изменения в MySQL 5.4

Reading time4 min
Views2.4K
Так получилось, что я довольно давно не работал с MySQL, поскольку в Рамблере используется, в основном, PostgreSQL. Сейчас у меня, наконец, появилось свободное время, и я решил догнать упущенное. Как выяснилось, за последние полтора года в мире MySQL изменилось довольно многое.
Читать дальше →
Total votes 67: ↑60 and ↓7+53
Comments24

День рождения COBOL

Reading time1 min
Views654
Оказывается, на днях, язык COBOL и его верные программисты отметили юбилей. 50 лет назад, комитет, состоявший из представителей шести крупнейших, на то время, производителей компьютеров и трёх правительственных агентств, выбрал для нового языка имя — COBOL, от Common Business-Oriented Language.

Язык пережил многих своих создателей, и даже сейчас используется очень широко. К счастью, или к сожалению, в России он почти неизвестен, но в США, судя по статистике от Datamonitor до сих пор пишется до 5 миллионов строчек кода на Коболе ежегодно. Основная сфера применения — банковская сфера, телефонные операторы, правительственные агентства.
Total votes 9: ↑7 and ↓2+5
Comments2

Nginx: точно вовремя

Reading time2 min
Views2.4K
Хочу написать о небольшом трюке с SSI, который недавно мне пригодился.

Предположим, вам нужно выкатить немного изменённый вариант некоей странички ровно в полночь, или в любое другое очень неудобное время, когда все нормальные люди давно спят. Также, предположим, вам не хочется возиться с кроном, и вообще, у вас всё тысячу раз протестировано, так что ничего случиться не может. :)

Для этой цели, мы можем воспользоваться nginx-овым SSI. Никаких изменений в конфиг nginx вносить не придётся, а сама страничка может выглядеть примерно так:

<!--# config timefmt="%d%m%Y" -->
<!-- мы только что установили, что переменная $date_local дожна иметь вид ддммгггг-->
<!--# if expr="$date_local = 01012010" -->
<!--# include virtual="/path/to/new_year_congratulations/" stub="Oops!" -->
<!--# else -->
<!--# include virtual="/path/to/usual/version/of/block/" stub="Oops2!" -->
<!--# endif-->
<!-- если переменные $date_local или $date_gmt используются где-то ещё, неплохо бы вернуть обратно формат по умолчанию, если он нужен -->


И теперь, ровно в полночь, 1 января 2010 года, ваши пользователи увидят поздравление с новым годом на месте какого-то обычного блока. Причём, вы в это время можете спокойно спать (ну или, пьянствовать с друзьями). :) Более того, ровно в полночь, второго января, поздравление исчезнет, без малейшего вашего участия.

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

Естественно, у него есть и недостатки:
— ваш if будет исполняться при каждой отдаче страницы — это может быть критично на серверах с очень медленным процессором, или на VPS;
— некоторые промежутки времени таким образом определить всё-же не получится, или это потребует не одного оператора «if»;
— что-то ещё… :)

Но, в целом — неплохое, удобное, а главное, быстрое решение.
Total votes 22: ↑16 and ↓6+10
Comments13

День программиста на Рамблере

Reading time1 min
Views599
Хорошая новость, про которую уже, кажется, все в курсе — наконец-то день программиста официально объявлен профессиональным праздником в России. Теперь пьяные программисты могут купаться в фонтанах и приставать к прохожим. :)

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

Это — скорее проба пера, но если пользователям понравится, мы будем готовиться к праздникам более тщательно, и радовать их почаще. :)

Ну и, конечно, поздравляю всех коллег, и желаю побольше интересной работы, хороших друзей и качественных релизов.
Total votes 11: ↑9 and ↓2+7
Comments6

Файловый AIO в nginx

Reading time2 min
Views17K
В последних версиях nginx (начиная с 0.8.11) появилась поддержка асинхронного файлового ввода-вывода. Потенциально, эта фича способна устранить одно из узких мест веб-сервера — полную блокировку процесса при файловом IO.

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

Раньше, эта проблема решалась увеличением количества процессов-воркеров. Теперь есть альтернативное решение. :) Однако, перед тем, как включать файловый AIO, стоит учесть ряд нюансов.

Во-первых, хочу обратить ваше внимание, что не стоит ожидать от новых версий значительного увеличения производительности. Это возможно только при очень специфической нагрузке — когда один и тот же сервер одновременно отдаёт несколько небольших статических файлов, и очень большое количество больших файлов.

Во-вторых, файловый AIO работает только на FreeBSD 4.3 и выше, либо в Linux, с версии ядра 2.6.22 и выше.

В-третьих, AIO во FreeBSD имеет смысл включать только в версиях FreeBSD-6.4 STABLE, FreeBSD 7, или новее. В более ранних версиях, при включении AIO, сетевая подсистема начинает использовать Giant Lock, что означает невозможность одновременного выполнения какого-то другого системного вызова. Другими словами, почти никаких выгод от асинхронности мы не получим.

Ну и наконец, при использовании AIO под Linux надо также включать directio. Также, если я всё понял правильно, в линукс пока невозможно использовать AIO для подгрузки данных для sendfile, поскольку включение directio отключит использование sendfile автоматически.

Если вы по-прежнему считаете, что оно вам нужно, AIO включается очень просто. Для Linux, фрагмент конфига будет выглядеть примерно так:

aio on; # включаем AIO
directio 512; # включаем O_DIRECT для файлов, размером 512 байт или больше
output_buffers 128 512k; # зная размер и примерное количество одновременно отдаваемых файлов, можно подобрать более подходящие значения


Ссылки:
Описание AIO в документации на Nginx
Changelog
Total votes 37: ↑34 and ↓3+31
Comments63

ngxv8

Reading time1 min
Views494
На прошлой неделе мне показали довольно любопытный проект, который, к сожалению, находится на самой ранней стадии. Его цель — интеграция javascript-движка V8 в веб-сервер nginx. Звучит необычно, правда?.. :)

На самом деле я вижу в этой идее довольно много плюсов, главные из них:

— V8, предположительно, намного быстрее, чем уже существующий интегрированный Perl;
— Javascript знает куча народу, и писать на нём будут;
— Javascript совершенно естественен в части асинхронного IO — интерфейс XMLHTTPRequest представляют себе все, и в nginx можно было бы сделать что-то подобное для работы с вводом-выводом;
— Javascript — современный, стандартизованный и развивающийся язык, с поддержкой от Google (да и других корпораций) он имеет шансы жить долго и счастливо, в отличие от Perl;

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

Тем не менее, я полагаю, что V8 на серверной стороне ждёт довольно интересное будущее, хотя, может быть и не в виде модуля для nginx. Судя по тестам, он превосходит большинство серверных языков, используемых в настоящий момент, по производительности, и имеет очень неплохую поддержку (и не только от Google). Если будет время, с удовольствием поучаствую в этой затее. :)

ЗЫ Адрес проекта на Google Code.
Total votes 24: ↑16 and ↓8+8
Comments39

WiMax от Yota под Linux

Reading time1 min
Views566
Только что одолжил у коллеги USB-модем от Йоты, и немного потестил под линуксом (Fedora 11). Установка особых проблем не вызвала, а вот скорость разочаровала. Внутри здания, в районе Автозаводской, скачка, по данным speedtest — 4,2 мбит, аплоад — примерно 1,5 мбит. Впрочем, возможно, проблема не в технологии, а, например, в сыром драйвере, или «часе пик» в сети (около шести вечера), или в толстых кирпичных стенах вокруг. :)

А может быть это я просто зажрался, ещё три года назад даже стационарный интернет с такой скоростью был мечтой. :)

Для того, чтобы всё заработало с внешним USB-модемом от Самсунга, надо сделать следующее.
1. Скачать исходники madwimax вот отсюда: code.google.com/p/madwimax.
2. Установить пакеты libusb1 и libusb1-devel.
3. Распаковать исходники куда-нибудь, и запустить ./configure
4. Установить ещё много всякой фигни, которую попросит ./configure, пока скрипт не доработает до конца. Вся фигня есть в стандартных репозиториях, так что больше ничего из исходников ставить не придётся.
5. Запустить make и дождаться, пока сборка будет завершена.
6. Зайти в каталог src и найти файл madwimax — это то, что надо запускать для установления связи.

После запуска, появится интерфейс wimax0, на который надо натравить dhclient, а затем прописать в resolv.conf адрес какого-нибудь DNS-сервера. Естественно, эти операции можно автоматизировать, и использовать для этого стандартные средства Fedora, но я это описывать не буду, поскольку эти действия одинаковы для любого сетевого интерфейса.

Если соберусь купить себе ноут с WiMax, придётся, видимо, собрать RPM-пакет с этим драйвером. А может быть к тому времени уже и выйдет Fedora 12, со встроенной поддержкой этих девайсов. :)
Total votes 13: ↑7 and ↓6+1
Comments11

Обновление Thunderbird

Reading time1 min
Views617
Вчера, в FC11 обновился Thunderbird до версии beta3. Среди приятных изменений:

— новая тема с новыми иконками, имхо смотрится симпатично, хотя и немного непривычно;
— перестал глючить и тормозить поиск по папкам на imap-сервере;
— запуск и завершение работы происходят очень быстро;
— появился новый режим просмотра — если выделить несколько писем, то в области просмотра появится список начальных фрагментов текста для каждого из этих писем, и их общее количество;

Особенно понравилась последняя фича — фантастически удобно, и не тормозит.

Из недостатков, по моему мнению, стоит отметить открытие новых писем во вкладках по-умолчанию. Я так не привык — удобнее работать с окошками, когда список всех писем сразу виден в таскбаре. :) Но, в целом, всё значительно лучше, чем раньше. Хорошо что Thunderbird всё-таки развивается, я уже боялся, что на него в Mozilla окончательно забили.
Total votes 13: ↑11 and ↓2+9
Comments18

Настройка nginx

Reading time5 min
Views287K
Тема правильной настройки nginx очень велика, и, боюсь, в рамки одной статьи на хабре никак не помещается. В этом тексте я постарался рассказать про общую структуру конфига, более интересные мелочи и частности, возможно, будут позже. :)

Неплохой начальной точкой для настройки nginx является конфиг, который идёт в комплекте с дистрибутивом, но очень многие возможности этого сервера в нём даже не упоминаются. Значительно более подробный пример есть на сайте Игоря Сысоева: sysoev.ru/nginx/docs/example.html. Однако, давайте лучше попробуем собрать с нуля свой конфиг, с бриджем и поэтессами. :)
подробности
Total votes 88: ↑78 and ↓10+68
Comments53

Занимательная география

Reading time2 min
Views646
Так получилось, что в течение последних нескольких месяцев я собирал информацию о странах, регионах и городах. Результатом этих усилий стала маааленькая ссылочка «Сменить город» на главной странице Рамблера, и полдюжины постов в моём блоге о странных и смешных названиях, да и просто гео-фактах, с которыми пришлось столкнуться.

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

Два российских города — Верхоянск и Оймякон спорят между собой, где находится полюс холода — самое холодное место в мире. По-моему, так невелика разница — помирать при минимальной температуре -67,8 или -67,2.

Зато теперь я знаю самое позитивное, пожалуй, название города. Украина, Луганская область, город Счастье. Простое украинское Счастье. :) Ещё, кстати, на Украине есть город с одним из самых длинных названий в базе — Петропавловская Борщаговка — населённый пункт в Киевской области.

А как вам город Финкенштайн-ам-Факер-Зее (Австрия, Каринтия)? Или вот ещё: Ушманмандех (Афганистан). К сожалению, оба эти города в нашу базу не вошли, по причине крайне незначительных размеров.

Но это ещё не всё. Если меня спросят, в какой стране самые труднопроизносимые названия, я, даже не задумываясь, отвечу — Исландия. Я до сих пор не могу понять, как они сами-то с этим живут?.. :) Хёвудборгаршвайдид. Kirkjubæjarklaustur. Fáskrúðsfjörður. (Надеюсь, я никого сейчас случайно не вызвал в наш мир). Последние два названия я даже на русский транслитерировать затруднился. :(

Есть ещё множество интересных городов, которые стоило бы посетить, хотя бы ради того, чтобы сфотографироваться рядом с табличкой с названием города. Это и литовский город Кретинга (ранее просто Кретин, ударение, кажется, на первом слоге), и целое ирландское графство Kilkenny, которое появилось гораздо раньше, чем South Park, и город Пуси, уезд Тартумаа. Кажется, Катя Лель была в чём-то права… :)

Ну и, напоследок, непревзойдённый пока рекорд — 20 — двадцать! — городов Худсон, называющихся одинаково, но находящихся в разных местах (правда, в основном, в США). Бедная тамошняя почта…
Total votes 36: ↑32 and ↓4+28
Comments36

ОС и вебсервер — вместе веселей

Reading time3 min
Views5.9K
Привет всем. Сначала я думал, что лучше всего продолжить тему nginx на примере подчищенного и откомментированного конфига с одного из боевых серверов, но потом понял, что это потребует довольно большого объёма дополнительной информации. Поэтому, я решил попробовать, для затравки, рассказать в общих чертах о том, как nginx устроен, и почему он работает так быстро.

далее
Total votes 74: ↑64 and ↓10+54
Comments82

Кешируем блоки HTML при помощи nginx

Reading time3 min
Views7K
Не секрет, что пользователи любят, когда контент на сайте обновляется чаще, чем раз в год. Эту любовь пользователей к динамическим страничкам разделяют и поисковики. Google, например, умеет определять наличие обновляющихся блоков на страничке и добавляет ей немного кармы (читай, PR).

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

продолжение
Total votes 81: ↑80 and ↓1+79
Comments60

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Fullstack Developer
JavaScript
HTML
CSS
Web development
Perl
MySQL
PostgreSQL
Redis
Nginx
High-loaded systems