2011-05-28

Автошкола

Один мой хороший знакомый, добрый и талантливый человек сейчас пытается сдать на права. Заплатил денег за обучение, отучился, сдал внутренний экзамен в автошколе и пришла очередь сдавать экзамен в МРЭО ГИБДД. В автошколе сразу сказали, чтобы сдать нужно заплатить инспектору - иначе экзамен сдать невозможно. Мой знакомый не то чтобы очень жадный, просто деньги у него не задерживаются в силу ряда причин, и лишних денег на разного рода взятки у него нет, поэтому он решил сдавать экзамен без денег.

Не знаю как он водит, но теорию и дворики он сдал с первого раза, а город завалил. Причём, что именно завалил ему в автошколе не сказали. Зато честно заявили, что те кто денег на экзамен не дает обычно не сдают. Арифметика тут простая - если в автошколе все сдают - значит, что то тут не чисто, поэтому, должны быть несдавшие. Те кто сдают деньги сдают все не важно как они водят, поэтому несдавшие это те, кто пытаются сдать без взятки. И неважно что ты водишь безупречно - для статики нужны несдавшие.

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

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

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

 

Оставить комментарий

 
  2011-05-27

Ruby on Rails с точки зрения PHP программиста

Изучаю RoR, в принципе нравится. Многие вещи сделаны классно но некоторые вещи вызвали у меня недоуменье:

- обязательный REST: контроллеры генерят код для HTML и для XML хотя их никто об этом не просит. Возможно это круто и обосновано, однако это приводит к избыточности в коде, и созданию функциональности, которая никогда не будет востреботвана.

- обязятельный JavaScript:удаление элементов происходим методом DELETE, хотя браузеры обычно этот метод не используют, поэтому, для вызова DELETE методов используется объект HttpRequest. Как следствие, в браузере обязательно должен быть включен JavaScript. Если JavaScript выключить стандарные методы удаления объектов перестают работать. Это - не гуд.

- избыточность в структуре проекта: методы генерации объектов создают сразу код на все случаи жизни... И что мне после этого удалять вновь созданные файлы если что то не нужно?

 

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

 
  2011-05-27

Обновил Synphony.ru

Обновил synphony.ru.

- создан новый внешний вид
- добавлена английская версия

 

Оставить комментарий

 
  2011-05-24

Рубины на рельсах

Сел разбираться в Ruby - существо занятное, мне оно больше всего напоминает JavaScript, хотя синтаксис весьма безумен... Хотя... если разобраться так я могу и на JS написать так, что никто не поймет...

 

Оставить комментарий

 
  2011-05-20

Leverage browser caching

Для того чтобы проверить есть ли у сайта узкие места можно воспользоваться мега полезной штукой Page Speed Plugin. Работает в chrome и firefox. Оказывается на большинстве сайтов по умолчанию не выводятся заголовки которые говорят браузеру как правильно кешировать ресурсы

На linode.com для решение проблемы добавил в httpd.conf следующее:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/x-icon "access plus 2 weeks"
    ExpiresByType image/png "access plus 2 weeks"
    ExpiresByType image/jpeg "access plus 2 weeks"
    ExpiresByType image/gif "access plus 2 weeks"
    ExpiresByType text/javascript "access plus 1 week"
    ExpiresByType text/css "access plus 1 week"
</IfModule>

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

Header unset Pragma
FileETag None
Header unset ETag

И еще включил сжатие для некоторых файлов:
AddOutputFilterByType DEFLATE text/css application/x-javascript application/javascript

 

 

Оставить комментарий

 
  2011-05-05

Покупка Motorola Milestone 2 на Amazon

Сегодня великий день! Наконец пришёл мой Motorolla Milestone 2, который я заказал на Amazon. Вообще, я давно облизывался на этот телефон, и даже чуть не купил его в во время короткой экскурсии по Мюнхену.

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

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

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

Аппарат тяжёлый, гораздо тяжелее Nokia 5800, по сравнению с ним Nokia выглядит совершенно несерьезно. Уровень звука в Milestone пониже чем у Nokia - правда, у жены SonyErricson i500 играет даже лучше нокии - поэтому любителям слушать шансон в подъезде этот телефон тоже не подойдет. Камера мне понравилась больше чем у Nokia 5800, качество снимков для телефона довольно неплохое. Понравилось, что наушники включаются обычным джеком а заряжать можно через разъем microUSB. Время работы от аккумулятора я еще не прочувствовал - телефон пришел полузаряженым, но через несколько часов он абсолютно разрядился, как только аккумулятор подраскачается можно будет сделать какие либо выводы.

Кратко по доставке с Amazon - телефон шёл безумно долго - сделал заказ 24 марта. Оплатил пластиковой картой за $524 плюс $45 доставка. Продавец — FGS Traging. Специально выбрал самую крутую доставку ибо обещали доставить за четыре дня. Действительно через четыре дня получил от продавца уведомление что заказ послан службой USPS. Еще через день при помощи трекинга я узнал что телефон благополучно отбыл из США и отправился ко мне самолетом из Майами. На этом следы телефона благополучно потерялись. Не через день, не через два никакие доблестные работники почты с толстой сумкой не ремне, разумеется в дверь не стучали. Через две недели через Amazon я поинтересовался у продавца — "where is my stuff"? Но что продавец мне очень вежливо написал, что мол, извините, но, это такая головная боль — посылать товары в Россию, и что они просят Amazon убрать опцию посылки в Россию - ибо, товары идут иногда по несколько месяцев, и злые русские пишут гневные письма продавцу и ставят негативные отзывы, что плохо сказывается на бизнесе в нормальных странах. Я написал продавцу что все нормально - продолжайте слать в Россию — все надежда только на вас, будем ждать.

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

Посылка шла ко мне 42 дня. Наверно почтальон шёл пешком из Москвы в Саратов неся мою драгоценную посылку. Так что, если захотите заказать телефон на Amazon а живете не в Москве - выбирайте самую дешёвую доставку - все равно скорее всего по России телефон будет послан обычной почтой. В общем, такие дела.

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

Upd. Опубликовал пост примерно такого же содержания у Вильянова на helpix.ru

 

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

 
  2011-05-05

Как синхронизировать контакты Nokia c Google

Долгое время пользовался Zyb чтобы бекапить контакты с телефона, однако Zyb приказал долго жить а Vodafone, на который теперь ссылается старый сайт zyb совершенно не предназначен для этих целей.

К счастью, гугл заботливо может приютить ваши сокровенные контакты себе на сервер через протокол SyncML — вот здесь нашел настройки ZyncML для аккаунта Google:

  • remote db > 'conacts'
  • synchronoisation > both ways
  • server version > 1.1
  • data bearer > internet
  • access point > whatever you like
  • host address > https://m.google.com/syncml
  • port > 443
  • username > example@gmail.com
  • password > example
  • allow sync requests > yes
  • accept all sync requests > no
  • network authentication > no

 

 

Оставить комментарий

 
  2011-04-25

Выступление Рошаля

Это вам не какой то там Юра Шевчук, музыкант, это Рошаль Леонид Михайлович — длинно и по делу. Молодец. Всем смотреть.

 

Оставить комментарий

 
  2011-04-11

Настоящее Айкидо

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

 

Оставить комментарий

 
  2011-04-08

Семеро одного ждут, или как работают сессии в PHP

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

В качестве примера, создадим две странички:

slow.php

<?php
print 'START....';

sleep(10);

print 'DONE';

fast.php:

<?php

print 'START....';
print 'DONE';
 

как видим обе странички работают вместе просто прекрасно, пока одна страничка генерируется десять секунд вторая загружается почти мгновенно, теперь добавим в обе страницы работу с сессиям:

slow.php

<?php
session_start();
print 'START....';

if (!isset($_SESSION['counter'])){
    $_SESSION['counter'] = 0;
}
else {
    $_SESSION['counter']++;
}
sleep(10);

print 'DONE';

fast.php:

<?php
session_start();
print 'START....';

print isset($_SESSION['counter'])?$_SESSION['counter']:'none';

print 'DONE';
 

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

Одним из вариантов для решения подобной проблемы можно вызвать session_write_close(); перед заведомо медленной процедурой. В этом случае сессия будет закрыта досрочно и блокировка с файла будет снята, правда изменять какие либо значения в сессионных переменных уже не получится.

Финальный вариант slow.php:

<?php
session_start();
print 'START....';

if (!isset($_SESSION['counter'])){
    $_SESSION['counter'] = 0;
}
else {
    $_SESSION['counter']++;
}

session_write_close();
sleep(10);

print 'DONE';

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

Upd: Кроме этого, если после долгой операции нужно еще что нибудь поменять можно перед долгой операцией сначала закрыть сессию при помощи session_write_close() а потом её снова открыть при помощи session_start(). Однако, делать это можно только если вы ничего ещё не начали выводить в поток, иначе будет известный Warning: Headers already sent....

 

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