google web font

вторник, 29 марта 2011 г.

resolved: invalid birth date

Коллега похвастался замечательным use-кейсом:

[16:09:31] <alexey> хотя у нас в банке однажды смешнее было
[16:09:55] <alexey> когда девчонки не смогли у клиента дату рождения ввести
[16:10:11] <alexey> грят мы вводим как в паспорте, а нам говорят ошибка
[16:10:19] <alexey> смотрю дату... 29.02
[16:10:24] <alexey> ну думаю приплыли
[16:10:33] <alexey> високосные годы не учитываются
[16:10:43] <alexey> потом смотрю, там год нечётный
[16:11:02] <alexey> говорю им, так всё правильно вам прога говорит
[16:11:07] <alexey> не бывает такой даты
[16:11:16] <alexey> а они мне скан паспорта показывают
[16:11:23] <alexey> бывает, вот сам смотри

Вот такие байки у нас коллеги рассказывают. Клиенту повезло, что он был просто зарплатным клиентом и не открывал счетов и вкладов — а то фиг бы ему потом деньги вернули. Юристы — они такие, им пофг на грегорианский календарь. Ещё забавно представить себе переписку с саппортом порграммы по этому вопросу. Требовать разрешить ввод несуществующей даты. М-дя.

суббота, 26 марта 2011 г.

три простых способа обмануть sudo

Юрик Ученик(107)
Помогите сделать себя админом на своём сервере

Минь Мастер(1118)
Ну и вопросы....
"Как из-под рута получить права рута?"

Предположим, что сервера принадлежат компании, которая даёт Вам только ограниченные права через sudo и то только согласованию. Либо собственный работодатель, который не уверен, что Вы не сломаете сервак своими кривыми руками, ограничил Вам свободу дйствий. Либо собственные родители залили все USB-порты эпоксидкой и сменили рутовый пароль, оставив только sudo для настройки и запуска локального ftp-сервера. Мало ли.

Так вот, если верить документации непосредственно на sudo, система эта крайне неудачная, на самом деле. После того, как я расскажу эти три простых способа, неудачность идеи станет очевидной, потому что для обхода — не взлома! — не надо вообще ничего делать, достаточно иметь недостаточно жестоко настроенный sudoers.

четверг, 24 марта 2011 г.

Отступы в консоли, расстановка аргументов по фэн-шую

Оказывается, в консоль можно-таки вставить символ <tab>, если очень нужно.

По дефолту при нажатии на кнопочку tab оболочка начинает подставлять команды и аргументы (tab expansion). Если нужно, чтоб так не делалось, можно нажать Insert, Tab — сначала Insert, потом Tab. Вместо Insert можно использовать Esc. Таким же способом можно вставить перевод строки.

Заметил случайно, промазав мимо бэкспейса. Работает и в bash, и  zsh. Прикольно. Жалко, что скопипастить этот Tab всё ещё нельзя: копируется соответствующее количество пробелов.

среда, 23 марта 2011 г.

varchar hell

Душераздирающая история про кодировки и размеры полей в БД, с героями, злодеями и поучительной развязкой.

Давным давно, кажется, в прошлую пятницу (на самом деле, уже пару лет прошло), прилетел к нам баг от крупного заказчика, суть такова. В некоторые поля базы данных, имеющие ограничение по длине, не влезает заявленное количество символов. Например, в некоторой таблице есть поле description, описанное как VARCHAR2(255). Так вот, если вписать туда 255 латинских символов, то всё норм, но если вписать "п. 13 ст.33 распоряжения бла-бла-бла", как это любит делать заказчик, то в интерфейсе будет опаньки.

Watch you style

У нас просто замечательный технический писатель, на мой взгляд :-D
[12:54:54] <name_no> хочу автотест написать
[12:55:01] <vladimir> какой ?
[12:55:17] <name_no> на документацию. чтоб он тебе баги репортил, если у тебя стиль хромает
[12:55:36] <name_no> а если запятую пропустишь — то чтоб начальника твоего в "копию" добавлял
[12:55:36] <vladimir> пипец )) стиль чего?
[12:55:44] <name_no> стиль изложения, Вова.
Вова — техписатель. Со стилем у него всё в порядке, а вот со взаимодействием иногда бывают проблемы.

понедельник, 21 марта 2011 г.

Дайте этим лентяям побольше работы

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

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

И вот, значит, формулировка бага: «демон с какого-то момента начинает обновлять свои записи не каждую минуту, а раз в две с половиной минуты (вот вам логи), а другие экземпляры считают его записи устаревшими и удаляют их». Правильное решение проблемы: заставить техподдержку и тестировщиков выяснить, в чём причина задержек, найти виновного и заставить его исправить ошибку/устранить проблему.

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

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

пятница, 11 марта 2011 г.

The POLICE!!!

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