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

 
  2011-03-26

Как изменить внешний вид кнопки FB Connect

Есть несколько способов:

Способ 1 (правильный). Зайти на сайт разработчиков и прочитать инструкцию.

Способ 2 (ленивый). Поискать в Интернет как это делают другие.

Способ 3 (сверхленивый). Взять стандартную кнопку и допилить её CSS модификаторами:

.fb_button_medium {
	float:left;
	width:234px !important;
	height:42px !important;
	background:url(../image/layout/homepage-facebook-main.png) no-repeat 0 0 !important;	
}

.fb_button_text {
	display:none !important;	
}
 

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

 
  2011-03-25

New York Times in HTML5

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

 

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

 
  2011-03-23

Как добавить/удалить несколько файлов в/из svn

добавляем:
svn status | grep "^?" | awk '{print $2}' | xargs svn add

теперь удаляем из svn те файлы что были удалены из файловой системы:
svn status | grep "^\!" | awk '{print $2}' | xargs svn remove

 

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

 
  2011-03-18

Как изменить UserAgent у Firefox

В адресной строке набираем about:config и после предупреждения попадаем в настроеки Firefox. Набираем в фильтре (сверху) слово general.useragent и видим, что разработчики Firefox особо не балуют трудящихся широтой выбора, и полностью изменить UserAgent с помощью появившихся полей не получится. К счастью, для этого предусмотрена одна хитрая настройка, которая по дефолту в Firefox отсутствует, называется она general.useragent.override, и если создать настройку с таким названием (правой кнопкой мыши > создать > строка) и запихнуть в неё, например, строку «MyFakeUserAgent v. 1.0″ то этот новый UserAgent и будет выдаваться в заголовках запроса.

Eсли понадобится настоящий UserAgent, то для этого достаточно очистить строку в general.useragent.override.

Нашел здесь

 

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

 
  2011-03-18

Как изменить размер всех изображений в директории при помощи ImageMagic

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

Чтобы одновременно уменьшить все фотографии на Linux проще всего воспользоваться следующей командой:

> for i in `ls *.JPG`; do convert -resize 75% -quality 80 $i resized/$i; done

— все ваши фотографии окажутся аккуратно уменьшены на треть и сложены в папочку resized (её нужно создать перед выполнением вышеприведенной команды) взято отсюда.

Собственно к чему я это? Выложил немного фотографий из путешествия в Австрию. Теперь буду понемногу добавлять к ним описания.

 

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

 
  2011-03-16

Вернулся из отпуска

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

 

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

 
  2011-02-25

Манифест Единой Роcсии 2002

У Вильянова нашёл чудесное:

 

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

 
  2011-02-24

Домены за сто рублей

Давно хотел написать, да все было лень. Обычно я покупаю домены в зоне ru примерно за 500 рублей. В интернете полно предложений на этот счет, но недавно узнал, что, оказывается цена доменов практически ничем не регулируется - поэтому регистраторы продают домены по той цене по которой их покупают.

На сайте www.2domains.ru сейчас можно купить домены в зоне ru на год за 99  рублей. При этом через год, продление домена также будет стоить 99 рублей.

Я сначала подумал — развод, но когда я таким образом зарегистрировал aiki-center.ru и seikikan.ru — все прошло на ура. Ребята предоставляют доступ к площадке reg.ru а reg.ru вполне себе солидный регистратор. Оплачивать можно через мобильный кошелёк QIWI - это вообще сказка. На сайте сказано, также, что можно переносить домены от других регистраторов и тогда их продление также будет стоить сто рублей. Это я еще не проверял, но переплачивать за домены как то не хочется, поэтому когда придет время что-нибуть продлять обязательно попробую.

 

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