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

пятница, 26 октября 2012 г.

Symfony2 Form и ManyToMany

Заметка чтобы самому не забыть и другим может быть полезна.

Проблема как ни странно в том что форма не сохраняется.

пятница, 20 июля 2012 г.

Что делать, если у вас много сторонних репозиториев

Прежде чем читать этот пост откройте консоль и выполните следующие команду
ls /etc/apt/sources.list.d | wc -l
Если у вас вдруг появилась надпись
"ls" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
то значит эта статья точно не для вас :)

Если у вас не Debian, Ubuntu или их потомки, а что-то на основе RPM или Gentoo, то это тоже не для вас, по крайне мере пока.

Если у вас получилось число меньше 5, то вам наверное не пригодится то что написано дальше.

Ну а если вы получили число больше 10 (а то и 24 как получилось у меня) то читайте дальше и вы сможете сэкономить много времени.

Как в голову пришла идея.

Итак, все началось немногим меньше полутора лет назад, когда я обновлял свою тестовую ubuntu natty на ставший тестовым oneiric. Матов было много, так как приходилось мониторить, когда ppa репозитории перейдут на новый дистрибутив и каким он будет. Кто-то переходил на oneiric, а кто-то только на natty - на это все ушло довольно много времени.
Потом было обновление до oneiric и precise, увеличение количества репозиториев и количества ругательств, установка системы на работе с нуля и подключения этого добра в новую систему.

Как вы все наверное заметили, что сторонние репозитории управляются достаточно сложно: нужно самому следить за ключами, для хостящихся на launchpad нужно каждые пол года менять дистрибутив, достаточно неудобно их удалять - нужно удалить еще и ключ.

А ведь по сути подключение репозитория сводится к добавлению двух файлов - список адресов в sources.list.d и gpg ключ в trusted.gpg.d, так почему бы их не объединить в пакет, установив который вы подключаете репозиторий, а удалив - отключаете.


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

И что из этого получилось

А получился сайт http://pkggen.no-ip.org/, который представляет собой довольно простую вещь - вы скачиваете и ставите один пакет, после чего вы можете ставить все пакеты, которые есть на сайте, а если вам чего-то не хватает (а в начале так и будет), то после регистрации можно добавить свои репозитории, и система сама сгенерирует для них пакеты и добавит в репозиторий. PPA репозитории отслеживаются автоматически и проверяются на обновление на launchpad. Все пакеты репозиториев начинаются с префикса, так-что искать в общем списке их можно не только по источнику, но и по имени.

Техническая реализация

Ну во первых код открыт - в лучших традициях OpenSource :)
Во вторых реализовано все на Symfony 2 и хостится на Debian. Интерфейс с использованием Twitter Bootstrap, для редактирования классический CRUD, пагинатор и поиск, репозиторий реализуется просто тремя адресами и ZendCache (а то без него как-то плохо). Для подписей используется библиотека php-gnupg. Так как размер каждого пакета примерно 2.5 килобайта, то с файлами решено было не заморачиваться и собранные пакеты хранить прямо в базе.

воскресенье, 4 марта 2012 г.

Выборы из этих уродов

Хоть о политике не хочется говорить, но хочется сказать одно - к сожалению у нас совок еще не ушел, мы не будем жить нормально пока не сдохнет то быдло, которое выросло в совке.
Собственно сейчас это все было понятно - те кто против - они явные дети девяностых - тогда они поняли, что есть свобода.
А голосовали за путина те, которые как бараны не привыкли думать - надеются что за них власть что-то сделает - они привыкли так жить, у нас уже было 80 лет когда им всем долбили мозги. Как  показал опыт других стран (Корея, Куба, Германия) даже за 20-30 лет из нормальных людей совок делает баранов, и лечится это очень сложно - даже объединившаяся Германия до сих пор делится на нормальных людей с западной и совков с восточной.
Будем надеяться, что за год что-то изменится в лучшую сторону, но (см первый абзац)

понедельник, 27 февраля 2012 г.

Умудрился снести вчера libc

Позавчера, во время обновления пакетов умудрился удалить libc - нужно было почистить *.dpkg* а я сдури почистил libc6*.so.* в результате было очень весело :)

Сначало все работало, но все программы не запускались, выдавая ошибку что библиотека не найдена. Работали только опера и майнкрафт, ну и консолька, причем не рутовая. В консольке работал только cd, спас меня только установленный бизибокс - с его помощью распаковал пакет libc и с помощью LD_PRELOAD добавил библиотеку. Дальше все завелось, за исключением того что под рутом не пускало, соответственно установить пакет не получалось.
Пришлось делать ребут, после которого система уходила в кернел паник, опять спас бизибокс который был подсунут в качестве инита, и вот тогда уже восстановил пакет и все заработало.

Пакеты в дебиане 4

Ага, посрался с мейнтейнерами, ушел на убунту, завел ppa, ну нафиг этот дебиан :)

О, у меня же еще блог :)

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

воскресенье, 22 марта 2009 г.

Завел VDS

Неделю назад завел себе VDS сервак на vdsplanet.ru - из впечатлений только положительные.

Цены очень божеские - 3.5 бакса на минимальном тарифе - 64 метра памяти, и 2 гига винчестер, остальное - девать некуда :)

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

Из минусов - лимит памяти и нет свопа - на минимальном тарифе не запустишь даже aptitude - вылетает из-за нехватки памяти, поэтому приходится работать с помощью apt-get.

Сейчас там крутится svn сервер и веб сервер на nginx + php-fastcgi, однако с mysql проблема - памяти хватает под завязку - при запущенном mysql нельзя сделать коммит в svn - вылетает по нехватки памяти, нехватает памяти для импорта больших баз и все такое, но работать можно, а если взять следующий тариф, то должно быть в самый раз :)

четверг, 19 февраля 2009 г.

Баг в ядре 2

Вот этот патч помогает

http://bugzilla.kernel.org/attachment.cgi?id=20172

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

воскресенье, 8 февраля 2009 г.

Баг в ядре

К сожалению и домашний комп и ноут оказались подвержены багу в ядре, который тормозит систему при работе с винтом - http://bugzilla.kernel.org/show_bug.cgi?id=12309

В результате сейчас сменил три ядра и сижу на 2.6.29-rc3

Баг обнаружили в 2.6.18 и собственно откатываться как-то не хочется...
Странно что его не обнаружили раньше...

Прикольный бот

Как вам всем наверное известно в сети существует такой способ "дополнительного заработка" как кликать по платным ссылкам и собирать бонусы.
Вообще если убрать сомнительные проекты тапа http://zarabotok.in/?ref=329275 и все такое то получается, что выдают по несколько копеек за раз

(кстати с этим можно попробовать хотя-бы рискнуть :) )

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

Конечно произвольную капчу распознать сложно, но частные случае, например на wmbonus.org - скрипт пишется за вечер, поэтому все замечательно :)

Также у нас есть Curl, который от браузера отличается только поддержкой js и cron который очень хорошо умеет негритосить когда нужно :)

В результате за насколько вечеров работы получилась первая бетка, которая за одни сутки мне умудрилась принести более полутора рублей, без каких либо усилий с моей стороны и это только с кучки сайтов обслуживаемых wmbonus.org

Пакеты в дебиане 3

Ну фух, теперь я мейнтейнер трех пакетов в дебиане :)

Это librcd и librcc, а также обновленный phpunit - со сборкой проблем было очень мало, основные проблемы с лицензионной чистотой - то GPL не соответствует, то еще какая-то гадость с политиками, например в phpunit была сжатая js для генерации отчета о покрытии кода, так из-за сжатия кода она не подходит по лицензии, и временно пришлось исключать эту функциональность.

Зато теперь в дебиане почти последний phpunit - альфа только осталась на сайте и загружены, ожидается патч на taglib и еще возможно другие патчи - на zip архивы например :)

воскресенье, 18 января 2009 г.

Пакеты в дебиане 2

Ушло на вторую итерацию - для патченья taglib нужна лицензия LGPL, а пакеты были по GPL - автор исправил.

А причиной того что итерация будет длинной является разделение общего пакета на пакет библиотеки и gtk интерфейса настройки, который находится в другом so файле

суббота, 17 января 2009 г.

Пакеты в дебиане

Ура, мои пакеты добавили в дебиан.
Пакеты librcd и librcc для автоматической конвертации кодировок.
Сама сборка оказалась не сложной, больше проблем было с лицензиями.
Сначала отклонили из-за того что лицензия была указана просто GPL а не GPL2, потом выяснилось что нужно выделить в отдельный пакет gtk интерфейс, который есть в librcc и абсолютно пока не нужен, затем оказалось что GPL не подойдет для патча - taglib идет по LGPL, автор поменял и сейчас новый пакет готов :)

среда, 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, после чего выполнил все остальные комманды и в результате получил хоть и кривой, но рабочий пакет.

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