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

среда, 24 декабря 2008 г.

Баг на почте

Сегодня нашел баг на pochta.ru

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

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

При этом пользователю пришло кракозябрами, хотя отправлял через веб морду, в тех поддержку тоже пришло кракозябрами, о чем мне и сообщили в ответном письме :)

Круто :)

пятница, 12 декабря 2008 г.

Обновился

Ну вот, теперь я не подопытный кролик, а лабораторная мышь.

понедельник, 8 декабря 2008 г.

Кеширование

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

http://softwaremaniacs.org/blog/2008/02/22/why-offline-crashed/

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

Вернуть старые данные неверно, если посетителей нет, то этот единственный посетитель увидит старые данные, тем самым если посетители редкие, то они будут всегда получать старые данные, однако есть вариант решения:

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

суббота, 6 декабря 2008 г.

Opera 10

Обновился позавчера до 10 альфы оперы, опишу что протестировано

Рульно - Во первых она очень быстрая, по сравнению с ней девятая тормозит сильно, я уже не говорю про двух известных тормозов - FF и то что называют браузером в MS.

В девятой был глюк с импортированием сертификатов - сертификат .usr не импортировался, тут это поправили.
Порадовало прохождение Acid3, однако если включить iscroll Ильи Бирмана то тест проходит на 97 процентов, неприятно.
В связи с тем что на работе сильно увлеклись рекламой на проектах поставил себе блокировщики рекламы, получилось здорово - на работе процентов 90 рекламы стало блочится, особенно с readme.ru, который своим бредом достал.

http://adblock.googlecode.com/svn/trunk/adblock.css
http://lexi.ucoz.ru/userjs/block-external-scripts.js

Хватило вот этого - для установки бросил файлы в ~/.opera/style/user и ~/.opera/js/ соответственно и включил стиль adblock - все заработало.
Понравилась проверка орфографии, русский словарь берется из OpenOffice - формат MySpell.

В общем круто :)

среда, 3 декабря 2008 г.

DoS атака на сайт

Поднимал VDS для сайта, на VDS владелец переехал в результате "DoS атаки" как ему сказали админы (блин, когда я про все это сюда напишу...)

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

$all_category = $db->query('SELECT * FROM `~category` WHERE `is_active` = \'1\' ORDER BY `order` DESC, `id`')->fetch_all();

$all_images = $db->query('SELECT * FROM `~images` WHERE `is_moderate` = \'1\' ORDER BY `id`')->fetch_all();
$new_images = $db->query('SELECT * FROM `~images` WHERE `time` > ? AND `is_moderate` = \'1\' ORDER BY `id` DESC LIMIT 100', time() - $config['time_new_avatar'])->fetch_all();

$pop_images = $db->query('SELECT * FROM `~images` WHERE `popular` = \'1\' ORDER BY `id` LIMIT 100')->fetch_all();

каждый запрос занимал в результате около двух секунд, даные почти всегда были одинаковые, размер всего сериализованного 200К

Загрузка mysqld колебалась от 50 до 70%, после закрытия кешем ушла в мелкорасстворимый осадок - тоесть в ноль.

Пипец товарищи...

DoS атака это забрасывание сервера дискетками с MS DOS...

воскресенье, 23 ноября 2008 г.

Линеечка

Прикрутил линейку - сколько времени сижу в дебе :)

пятница, 21 ноября 2008 г.

Амарок, русские теги и taglib 1.5

Все было тихо и спокойно пока в lenny не включили taglib 1.5 — в результате synaptic и aptitude постоянно хотели обновиться, да и запирать версию пакета не хотелось, как-никак она была еще с Sarge, поэтому полез обновляться :)

Слазил и ничего не нашел — патч еще не появился.

Через несколько дней появился патч, но ждать пакетов для lenny можно было долго — делать их было некому — мейнтейнер, который создавал пакеты для Sarge ушел на Gentoo...

Пришлось делать патч самому, как оказалось собирается бинарный пакет из пакета исхоного кода довольно просто:

устанавливаются пакеты для разработчика — из-за замечательной системы зависимостей достаточно поставить только dh-make — он пригодится для создания нового пакета

После чего скачиваются пакеты исходного кода — файлы dsc, diff.gz и orig.gz

dpkg-source -x файл.dsc и у нас уже есть папка с исходными кодами программы и специальной папкой debianвнутри нее, управляющей сборкой пакета.

Собирается пакет тоже одной коммандой — из папки пакета dpkg-buildpackage и идем пить чай (в случае если собираем что-то типа wine, openoffice или kde — с учетом продолжительности работ — из самовара).

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

Промучавшись, но так и не найдя решения я решил сделать хитрость — изучив стадии сборки пакета я выполнил их до инсталяции файлов во временную директорию, после чего прервал сборку и подменил библиотек на собранную с помошью ./configure && make, после чего выполнил все остальные комманды и в результате получил хоть и кривой, но рабочий пакет.

На этом и успокоился до недавнего времени, а именно до прошлого четверга :)

среда, 19 ноября 2008 г.

Амарок и русские теги

В связи с тем что я пользуюсь амароком (замечательный плеер) у меня была проблема с русскими названиями песен — как известно почти все виндовые плееры сохраняют теги idv2 не по стандарту — в кодировке cp1251.

Это связано с просто замечательной поддержкой Unicode в Windows — а именно поддерживается только UTF16BE и LE, когда во всех нормальных операционных системах используется UTF8, из за того что занимает меньший объем и совместим со старыми функциями по работе со строками. К сожалению MS всегда идет своим путем, поэтому кодировка там сохраняется как угодно, но не по стандарту.

В amaroK для работы с тегами используется библиотека taglib (на данный момент версия 1.5) — в Debian ее пакет — libtag, она к сожалению работает только по стандарту.
Каждому виндузятнику не обьяснишь, что есть стандарт, поэтому к существующему положению дел приходится приспосабливаться - для хороших программ принцип минимум требований ко входным данным и максимум к выходным, поэтому такое поведение довольно странно...

Так как для нас проблема важная — кодировки кирилицы и как с этим бороться — то на просторах гугля был найден патч RusXMMS, который добавляет автоматическое определение кодировок на основе частотного анализа русского текста.
На этих принципах работают почтовый декодер Лебедева, Штирлиц, Пунтосвичер, причем работают очень хорошо.

Дело было давно и стоял у меня тогда еще Etch, на который прекрасно ставились пакеты от Sarge — библиотека была версии 1.4 и зависимостей никаких не было.

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

IE6 Fix :)

Добавил себе в блог ссылку на http://upgradebrowser.org/

Задите с помошью шестого ослика и убедитесь

Сам то использую оперу - она рулез

среда, 5 ноября 2008 г.

Ktorrent

Сменил запущенный под wine utorrent на Ktorrent 3, добрался наконец до разгребания груды раздаваемых торрентов, которые не мог разобрать больше года.

В результате количество торрентов сократилось в полтора раза и Ktorrent запускатся при загрузке KDE автоматически, что не может не радовать.

Из общих впечатлений:

  • Красивый интерфейс, но с немного меньшей отзывчивостью, помоему программам, написанным для KDE4 пока не хватает таких настроек как у программ KDE3
  • Удобная фишка закрепления дефолтовой папки для группы, что очень удобно для сериалов, когда их выкладывают по серии
  • Гораздо меньше занимает процессорного времени, правда немного больше памяти, но тут одна тонкость - нужно обновиться до 3.1.4, который сейчас в unstable, в 3.1.3, который в testing ошибка с захватом ресурсов - постоянно 100% процессора и утечка памяти.
  • Так и не разобрался почему закаченные раздачи не раздаются автоматически, хотя галка вроде на месте.
  • Нету показа активных торрентов как в utorrent - показываются все, которые раздаются, даже если никто не скачивает.

В целом впечатления лучше чем от utorrent, единственное, что не хватало - импорт списка торрентов из utorrent, я конечно нахал и многово хочу, но всетаки :)

вторник, 4 ноября 2008 г.

Баг в KDE

Вчера нашел неприятный баг в KDE:

Комбинации клавиш для выделения меню (Alt+буква) работают только в соответствующей раскладке клавиатуры, причем в KDE3 работаю при переключении на русский язык русские и не работают английские, а в KDE4 частично починили и частично поломали :) - работают в любой раскладке все непереведенные пункты меню, но никак не работают переведенные.

В виндах такой-же глюк, а вот в гномовских приложениях все нормально.

Написал в багтрекер дебиана, сегодня пришел ответ, оперативно - вот она, злобная бага :)

Оформление

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

Мысли по поводу логинов

На всех сервисах, которые я видел ИМХО есть большая глупость с логинами

Логин и имя пользователя ставится как клеймо, фактически с ним ничего нельзя потом сделать, вообще ничего :(

  • Почему большенство проектов не чистят старые, неиспользуемые логины?
  1. Это просто глупо, ты не пользуешься логином например два года, и какая вероятность, что ты его через два года вспомнишь сам логин, вспомнишь к нему пароль, возможно ты забудешь даже мыло, связанное с этим логином, а в особо тяжелых случаях вообще потеряешь его.
  2. Если ты не пользуешься этим ресурсом, то скорее всего ценного у тебя там ничего нету, а скорее всего вообще ничего нету
    если есть твой контент, который нужен сайту - то это решается просто - от пользователя в базе остается только ID и данные профиля, если же сообщений вообще нету или же они удаляются - пользователя можно вообще вычеркнуть
  3. Если вдруг через года два ты туда опять зайдешь, то первым делом зарегаешься на нем заново - врятли ты вспомнишь про этот ресурс, причем введешь свой старый ник, который и былу тебя логином, получив при этом ругань что логин занят, тут вариантов два, либо подумав "занят ну и фиг с ним" зарегаешь новый например с уродливой единичкой после ника либо же полезешь "вспоминать" пароль по различным программам.

    Тут мне всетаки повезло с гмайловским логином - я его нашел в бате, подобрать его было без шансов - пароль вида провел кулаком по клавиатуре.
    Но это у меня - никакая информация не терялась, а судя по опыту друзей - у  меня теряется все редко, у других чаще :(
    На куче проектов получается захламление нормальных красивых аккаунтов, которыми никто не пользуется,и создатели сайтов меряются колличеством зареганных пользователей, так как этот критерий легко измерить выборкой по базе - select count(*) from users и все :)
    При ведении нормальной статистики все будет очень хорошо, можно и смотреть сколько человек реально заходят на проект и опять-же считать активность пользователей
  • Почему нельзя поменять свой логин?
  1. А если я ник сменил? Такое случается, например у друга на mail.ru имя ящика - delphist, потому что когда еще в школе он его завел - увлекался Delphi, увлечение прошло, ник у него уже давно другой, ящик остался
    неаккуратненько (с)
  2. Прямо связано с удалением логинов - сервер классный, но мой любимый ник занят, ну да ладно, регаюсь под другим ником, проходит два месяца, а мой любимый ник уже свободен, хочу поменять ник и оставить все настройки и данные.
  3. В случае с мылом конечно нужен редирект с отправкой сообщения о смене логина отправившему, но это тоже легко реализуется.

Создал блог

В два часа ночи после чтения блога Ильи Бирмана посетила странная мысль - создать себе блог :)


Прошло 15 минут, поел, мысль не ушла, обновил форумы, почитал другие сайты - мысль не ушла, ладно, значит решил создавать.


Давно не пользовался сервисами гугля, LJ юзать не хочу, из известных мне проектов оставались только гугловский и blogi.ru - РБК-шный.


Зная как пишут в РБК - сам там работаю - вариант остался один :)


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


Спас меня только старый профиль theBat, который лежал в старых "Моих документах" и с которого с помошью unpass для бата извлек логин и пароль к ящику.


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