?

Log in

Для переходящих с InnoDB под MySQL-ем не стоит забывать, что в Postgresql индексы для внешних ключей автоматически не создаются. Это вполне логично, ведь внешний ключ это условие ограничения целостности, а индекс - механизм ускорения доступа к данным (коего, к слову, в SQL стандарте нет).

Специально провел опыт на 9-ке под Debian-ом. Банальный каталог "товар-характеристики". Три таблицы. В первой 250 000 записей (товары), во-второй 10 000 (характеристики), третья линковочная (связывает товар->характеристика) содержащая 1-у запись из первой таблицы и 10-ть случайных записей из второй. Т.е. в линковочной таблице 2 500 000 записей. Если индекс по внешним ключам в линковочной таблице не строить, то запрос на получение всех характеристик одного товара (т.е. 2 JOIN + WHERE) занимает ~0,230 сек. После добавления двух индексов менее 0,001 сек. В 200 раз быстрее.

Метки:

memcached vs sh в контексте php

Для нужд одного проекта пишу класс-кэшер который бы сторил данные в shared memory в IPC ипостаси. Велосипед нужен потому как требуемого по параметрам велосипеда найти не удалось, а из интернетов известно, что sh в работе будет быстрее чем memcached в 4-8 раз. Но вот будет ли php класс работать быстрее еще вопрос. Поэтому первое что я сделал когда велик стал пригоден для запуска на нем теста конечно же запустил этот самый синтетический тест.

Диспозиция проста. Имеем 256 элементов, размер одного элемента 8 байт, берем и тупо последовательно один за одним читаем их. Ходим при этом на localhost. 12 ms на все про все. Против 1 ms в случае sh! О да, конечно у нас "сетевой" оверхед через tcp сокет, но перевеска на unix сокет дает только 9 ms. Кстати, заодно выяснил, что memcached модуль php, в отличие от memcache модуля, не умеет unix сокеты.

Обнадеживающе. Хотя голова понимает, что при рандомном доступе на нескольких тысячах кэшей цифры будут уже другие, ведь у меня на текущий момент планируется неупорядоченный список кешей и значит сложность поиска минимум уровня O(n). Учитывая, что читаться будет сильно чаще, чем писаться, то над сортировками подумать придется.

Метки:

ЦОД Мегафона в Самаре

ЦОД под Самарой Мегафон строил долго, упорно и дорого. Как житель Самары я этак с годик назад пытался даже выяснить, что почем и в каком виде. И даже задавал этот вопрос через форму связи, но, как это у нас зачастую бывает, на ответ глубоко положили. А между тем ЦОД оказывается уже открылся и даже предоставляет некоторые услуги. Причем информация об этом представлена в лучших совковых традициях. Есть коло, есть дедики, виртуалки и даже сасы с облаками, только вот ценники к этому, исключая виртуалки, стыдливо не означили. Или может они не привыкли смотреть на цены и даже не знают о существовании данного атрибута у товара? Как знать... сразу вспоминается общий газ и "мечты которые сбываются", но явно не у нас.

Но я отвлекся. На виртуальные серверы табличка есть, ОСью указана винда. Можно сравнить с тем же OVZ-6 от fastvps.ru на котором я сейчас сижу. И так конфиг OVZ-6: 1700 Mhz, 16 GB хард, 600 MB ОЗУ под OpenVZ за 824 рубля за отлично работающий сервак с root доступом. Что выходит у Мегафона?

CPU (процессор): за каждые 100 МГц., в час 15 копеек
HDD (жесткий диск): за 1 Гб, в час 3 копейки
RAMM (оперативная память): за 32 Мб, в час 1 копейка
Белый IP-адрес за один выделенный ip-адрес: в сутки 12 рублей

Соберем из этого близкий конфиг на апрель (30*24=720 часов):
CPU: 100 МГц * 17 = 1700 МГц, 17 * 0,15 руб * 720 часов = 1836 руб/мес
HDD: 1 Гб * 16 = 16 Гб, 16 * 0,03 руб * 720 часов = 345,6 руб/мес
RAMM: 32 Мб * 19 = 608 Мб, 19 * 0,01 руб * 720 часов = 136,8 руб/мес
IP: 12 руб * 30 = 360 руб/мес

ИТОГО: 2678,4 рублей/мес.

2678 рублей за хрен знает еще как работающий сервер с хрен знает каким техсупортом. За эти деньги в фасте можно взять уже не виртуалку, целый дедик. Нанотех, национальная операционная система говорите, да?

Замыкая круг (Closing the Ring)


Наши дни. Два человека. Похороны третьего.

1941 год. Четыре друга. Войны еще нет, но они понимают, что она будет. И что вернуться назад не все.

Два места. Два временных плана. Одни и те же люди и расстояние в полвека. Достаточно незамысловатый сюжет, но даже самый простой сюжет созданный качественно, и смотрится отлично. В общем любителям душещипательных историй с переплетением судеб героев смотреть обязательно.
Несмотря на то, что я считаю MODx хорошей платформой для создания стандартных сайтов в нем можно найти феерические пиз**цы. То, что он до сих пор пишет в конфиги полные пути (видимо авторы так и не смогли постичь дзен конструкции realpath(dirname(__FILE__)) и им до сих пор ни кто не отрыл глаза) уже стандартная "фича" движка. Но он еще переварить nginx аналог реврайта (http://sysoev.ru/nginx/docs/faq.html снизу) не может потому что в $request_uri ($uri) есть ведущий слэш!

Я негодую. Кажется с новыми релизами лучше он не становиться.

P.S. Фиксится банальным добавлением $_REQUEST['q'] = substr($_REQUEST['q'], 1) в начало index.php.

P.S.S. "Практика достойная порицая" так же работает, только нужно не забыть добавить локейшен под статику иначе она будет интерпретироваться PHP и на выходе mime-type будут некорректные.

Метки:

PayPal

Иееес!! Таки я обзавелся недостающими треками трио Гаруфа из альбома Tango en el Mate. Протестировал заодно PayPal на предмет покупок. В который раз убедился, что копирасты идиоты. Ящик пандоры, сиреч интернет, был открыт. Пользователи обмениваются, обменивались и будут обмениваться файлами. И пытаться использовать старые методы дистрибуции в виде распространения на физических носителях в век безлимитного интернета? Ретроградство! Ушлые пираты активно используют инет предоставляя пользователю то, что он хочет - удобство. Да, я не хочу покупать диск на том же eBay и ждать его месяц пока он облетит полмира. Мне совершенно не хочется иметь дело с amazon который не хочет использовать PayPal. Я, как пользователь, хочу получить файл Х, отдав за него сумму Y за время Z. И все это хочется получить быстро и сейчас.

В общем что в итоге я и получил на tradebit.com. Приятно совершить покупку через полмира потратив на это меньше пяти минут.

LFS

Ну вот это и свершилось... Сегодня набрел на документы по LFS (Linux From Scratch). Как то сразу захотелось завести свой, маленький такой и пушистенький, дистрибутивчик. Кажется я знаю, какая ось заведется у меня на тестовом компе под столом.

Метки:

О книгах

Таки купил себе в итоге "Unix: Профессиональное программирование" второе издание. Хоть оно и так у меня есть в виде скана, да и жаба душила, но все же оно того стоит, что бы иметь это у себя на полке. Раго конечно молодец, он смог дополнить труд Стивенса при этом не испортив его.

Долгое время искал "Unix: Разработка сетевых приложений" третье издание. Уже и Чаконе узнавал насчет заказа, и в издательство Питер писал (кстати, что за бардак, не ответили ни по асе, ни по почте) и по интернет магазинам шарился. Полный голяк. Но... истина всегда где-то тут, рядом. И кто бы мог подумать, но у сеструхи на работа имеет этак книга! Вот она, судьба. В общем жду в большом нетерпении пополнение книжной полки еще одним классически трудом от Стивенсона и Раго.

Метки:

Хитромудрая птица QIWI

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

Первый опыты взаимодействия не сложился. Я, как и многие, раздраженный дурацким требование указания номера сотового и какой то там регистрации просто бросал попытку оплатить услуги через этот сервис и использовал другой. Но время шло, прожорливая птица поглощала конкурентов и в один момент пришлось зарегистрироваться. Нужно было заплатить за инет, а кроме QIWI ничего под рукой не было. Система срубила себе 7.5%. В этом не было бы ни чего странного, если бы через месяц при проведении точно такого же платежа (но уже через другой терминал) удержали уже только 2%. Система одна, но процент с разных терминалов разный? Бардак.

Пополняя в следующий раз через терминал webmoney кошелек я внимательно читал все что чирикало это электронное чудовище. А оно радостно щебетало, что сумма в 1050 рублей принята и даже исторгло из себя клочок бумаги где черным по белому было записано - комиссия 0% (даже сейчас в личном кабинете красуется надпись о том, что с учетом процента зачислено 1050). Учитывая прошлый опыт речам этим я не поверил. И птица не подвела. До кошелька дошло только 979,99 (т.е. 6,66% составила комиссия). Я понимаю, что любая система должна зарабатывать прибыль, что нужно ей отдать определенный процент, и я готов его отдать, но зачем же обманывать? Ответ не получен до сих пор.

В последний раз я переводил сумму с запасом в сотню. У терминала пришлось провозиться почти пять минут. Этот аппарат садизма мучил меня постоянно вопросами, потребовал ввода кода посланного через SMS (хочется спросить, какого черта? прими ХХХ рублей, зачисли их на YYY кошелек, возьми свой ZZZ процент и не отнимай попусту мое время). Когда я уже отдал ему кровных четыре сотни и они исчезли в пасти этого чуда техники, оно, это чудо, покрутив своими железными шариками и рассчитав процент соизволило уведомить меня о том, что нужно внести 426,80. Но такую сумму терминал не может принять физически, поэтому вымогатель потребовал с меня 440 (почему не 430 по сию пору загадка, наверное тоже с запасом решил слупить). А если бы у меня не было с собой еще 40 рэ? Завершить ввод денег я бы не смог, получить назад уже отданные тоже. Все, денежки переходят в счет казино? Но нет! Предыдущий опыт не прошел даром и я предварительно запас немного червонцев. В общем операция таки была завершена. Я получил бумажный квиточек который уведомил меня, что "... принято 440, зачислено 426,80, комиссия 13,20, ваш платеж R****** (Webmoney) 400". Казалось бы, живи да радуйся, хотел на кошелек 400, так получи. Ага, держи карман шире, дорогой товарищ. В сухом остатке имеем 392. Т.е. удержано в общем сложности 9.53% ("комиссия составляет XXX, минимальная сумма коммисии YYY"? видимо и оно в том числе). Складывается впечатление, что расчет суммы, которая реально дойдет до цели, на столько сложная математическая задача, что она просто не под силу QIWI. Наверное это уже уровень мейнфреймов или каких то кластерных систем, но у QIWI нет финансовой возможности приобрести их, вот и приходится крутиться как может.

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

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

P.S. Оставшиеся на счете 6.81 руб надеюсь пойдут на покупку нормального мейнфрейма.

Метки:

portaputty хорош тем, что лёжа на флешке позволяет под виндами рулить unix серверами по ssh. К сожалению, он не сохраняет пароли оставляя это на откуп внешнему ПО. Поначалу я хранил пароли в plane text, но когда их количество приблизилось к сотне, а ssh аккаунтов перевалило за второй десяток, то это стало не только неудобно, но и стремно. Поэтому вся база перекочевала в менеджер паролей KeePass. Данные стали удобно структурированы, но это не решало проблемы метания между двумя программами на стадии входа. Выглядело это пример так.

Втыкается флешка, ищется и запускается portaputty, ищется нужная сохранная сессия, загружается, переходим в KeePass и копируем имя пользователя (причем буфер очищается через 10 секунд, так что клювом не щелкаем), вставляем его в portaputty, возвращаемся в KeePass и копируем пароль, переходим в окно portaputty и логинемся на сервере. Много типичных действий которые ну так и просятся на автоматизацию.

Хороший админ — ленивый админ. Тем более в KeePass есть такие заманчивые пункты в контекстном меню как "Открыть ссылку" и "Начать автонабор". Поэтому сегодня ручной труд меня окончательно достал и я решил разобраться в этом вопросе.

И так у меня в portaputty есть сохраненная сессия server в которой настроен удобный для меня вид терминала. В Windows - Behaviour - Window title задано название окна - ssh. Теперь в KeePass создаем новую запись, в поле Название пишем IP адрес сервера, в поле Имя логин, в поле Пароль наш пасс. Теперь в Ссылка нужно записать:

cmd://"G:\portaputty\putty.exe" -load server {USERNAME}@{TITLE}

а в Комментарии:

Auto-Type: {PASSWORD}{ENTER}
Auto-Type-Window: ssh

Теперь запуск portaputty выглядит так: в KeePass-е находим нужную запись, жмем Ctrl+U и таким образом запускаем portaputty, возвращаемся к записи в KeePass-е и шуткатом Ctrl+V логинимся на сервер. Все!

Что происходит между программа и почему я пришел именно к этим шаблонам в двух последних полях? Дело в том, что cmd://"G:\portaputty\putty.exe" запускает portaputty по указанному пути с опцией load равной имени нужной сессии, а так же логином и сервером в формате login@server. Причем сервер берется не тот, что сохранен в файле сессии, а из командной строки. {USERNAME}@{TITLE} это шаблон KeePass. Он берет значения полей Имя и Название и передает их как опции вызова portaputty. Все это срабатывает по Ctrl+U шуткату. А по Ctrl+V срабатывают команды из поля Комментарии. KeePass эмулирует вставку текста из поля Пароль (шаблон {PASSWORD}) и нажание Enter (шаблон {ENTER}, кстати, вместо которого можно использовать тильду) окне с заголовком ssh. Такая схема позволяет мне иметь только одну сессию для всех серверов. Потому что для другого аккаунта в KeePass храниться другой IP адрес сервера и именно его и использует portaputty, а не заданные в сессии. Поэтому я не только упростил процедуру входа, но и избавился от кучу сессий которые между собой были идеинтичны за исключением IP адреса сервака.

Ситуацию немного портит то, что запускается portaputty с русской раскладкой (ибо стоит в системе по дефолту) и по Ctrl+V из KeePass-а вставляется пароль, но кириллицей, хотя он в латинице. Явная "фича" KeePass, но написание багрепорта отложу на потом.

Метки: