Проблема как ни странно в том что форма не сохраняется.
С дури завел этот блог, сюда буду писать что-нить чем захочу поделиться с другими, по тому как я мучаю никсы, программирую на пхп, просто страдаю фигней и все в таком духе, вобщем создали, а дальше разберемся
пятница, 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
Сначало все работало, но все программы не запускались, выдавая ошибку что библиотека не найдена. Работали только опера и майнкрафт, ну и консолька, причем не рутовая. В консольке работал только cd, спас меня только установленный бизибокс - с его помощью распаковал пакет libc и с помощью LD_PRELOAD добавил библиотеку. Дальше все завелось, за исключением того что под рутом не пускало, соответственно установить пакет не получалось.
Пришлось делать ребут, после которого система уходила в кернел паник, опять спас бизибокс который был подсунут в качестве инита, и вот тогда уже восстановил пакет и все заработало.
Пакеты в дебиане 4
О, у меня же еще блог :)
воскресенье, 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();
$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, после чего выполнил все остальные комманды и в результате получил хоть и кривой, но рабочий пакет.
На этом и успокоился до недавнего времени, а именно до прошлого четверга :)