Определение лиц на чистом GD @ Пт, 26 июня 2009, 13:41
Невозможность изменить action у формы в jQuery @ Пт, 29 мая 2009, 08:41
Столкнулся с интересной поеботкой
Если у формы есть поле с name=«action», ну, типа так:
то jQuery конструкция:
не работает!
Т.е. убираем поле action и всё ок, работает.
Тестил в Mozilla 3.5 beta 4, но люди говорят и в IE7 тоже не работает.
Если у формы есть поле с name=«action», ну, типа так:
<form action="my_action">
<input type="hidden" name="action" value="111">
</form>то jQuery конструкция:
$('form').attr('action', 'another_action'); не работает!
Т.е. убираем поле action и всё ок, работает.
Тестил в Mozilla 3.5 beta 4, но люди говорят и в IE7 тоже не работает.
Еще говнокодик @ Пт, 22 мая 2009, 14:14
И снова результаты трудов могучих программистов!
В коде одной весьма известной газеты в первых строчках сайта я нашел вот такое прекрасное:
Ох ох.
В коде одной весьма известной газеты в первых строчках сайта я нашел вот такое прекрасное:
<?php
if (!strstr ($_SERVER["HTTP_USER_AGENT"], 'MSIE')) {
Print_message ("Ошибка", "Данный интерфейс разработан исключительно под Internet Explorer" );
}
?>Ох ох.
Skype vs Apache @ Ср, 6 мая 2009, 21:10
Поставил себе Windows 7 на рабочий комп, т.к. на ноуте она стоит давно и себя вполне зарекомендовала рабочей.
При установке денвера возникла проблема — апач не стартует. Уже и так и сяк — тупо при запуске ничего не сообщая валится.
Перепроверил конфиг, полазил по папкам — на вид всё ок, а не запускается Apache и всё тут. Ну, думаю, что-то в RC нахимичили, т.к. на ноуте 7077 какой-то вроде и всё ок.
Осенило посмотреть, не висит ли кто на 80 порту. Висит! Кто — непонятно.
Первым делом что? Гугл! Вбил в поиск windows 7 apache 80, гляжу есть такая распространенная проблема у пацанов. Сетует кто на процесс
Сделал всё что написано — хуй!
Пришла мысль САМОМУ посмотреть, кто там висит и занимает порт.
Пишем в консоли:
Первым же пунктом:
Ага сукабля! 2236 Полез в список процессов, а ето… Скайп сучоныш!
Я тут и подохуел: схуёв ли скайпу висеть на вебсерверном порту?При путине В старом скайпе такого небыло.
Порылся в настройках и нашел таки галочку в настройках сети, что таки да — можно слушать 80 и 443 порт. Ну помойму ето вообще охуеть.

Ну в общем снял и всё ок.
Skype сука коварный. А семёрочка — замечательная.
При установке денвера возникла проблема — апач не стартует. Уже и так и сяк — тупо при запуске ничего не сообщая валится.
Перепроверил конфиг, полазил по папкам — на вид всё ок, а не запускается Apache и всё тут. Ну, думаю, что-то в RC нахимичили, т.к. на ноуте 7077 какой-то вроде и всё ок.
Осенило посмотреть, не висит ли кто на 80 порту. Висит! Кто — непонятно.
Первым делом что? Гугл! Вбил в поиск windows 7 apache 80, гляжу есть такая распространенная проблема у пацанов. Сетует кто на процесс
BranchCache, кто на http.sys который отключается из реестра.Сделал всё что написано — хуй!
Пришла мысль САМОМУ посмотреть, кто там висит и занимает порт.
Пишем в консоли:
netstat -anoПервым же пунктом:
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 2236Ага сукабля! 2236 Полез в список процессов, а ето… Скайп сучоныш!
Я тут и подохуел: схуёв ли скайпу висеть на вебсерверном порту?
Порылся в настройках и нашел таки галочку в настройках сети, что таки да — можно слушать 80 и 443 порт. Ну помойму ето вообще охуеть.

Ну в общем снял и всё ок.
Skype сука коварный. А семёрочка — замечательная.
preg_match и большой текст @ Вс, 3 мая 2009, 13:13
На хабре прочёл.
Решение проблемы простое, пишем:
Иногда мне нужно парсить большие странички, надо запомнить.
preg_match (и preg_match_all) по умолчанию не обрабатывает тексты величиной более 100кб, сразу возвращая false.Решение проблемы простое, пишем:
ini_set("pcre.backtrack_limit", 10000000);Иногда мне нужно парсить большие странички, надо запомнить.
Google map MarkerClusterer @ Пн, 27 апреля 2009, 12:02
Очень полезный объект обнаружил в Google map API, называется MarkerClusterer.
Делает он вот из такого:

Вот такое:

Что наглядно, красиво, функционально и еще более производительно (там есть speedtest, на 1000 отметок вариант без MarkerClusterer отрисовывается за 5.5с., а с ним — 300мс.)
Вот документация по MarkerClusterer.
Делает он вот из такого:

Вот такое:

Что наглядно, красиво, функционально и еще более производительно (там есть speedtest, на 1000 отметок вариант без MarkerClusterer отрисовывается за 5.5с., а с ним — 300мс.)
Вот документация по MarkerClusterer.
Color Schema Designer @ Сб, 11 апреля 2009, 08:43

colorschemedesigner.com
Достаточно удобный инструмент для составления палитры.
Что интересно, написано все без использования flash. Есть несколько методов выбора цветовой схемы.
В общем переодически штука весьма нужная
Достаточно удобный инструмент для составления палитры.
Что интересно, написано все без использования flash. Есть несколько методов выбора цветовой схемы.
В общем переодически штука весьма нужная
PHP.JS @ Вт, 7 апреля 2009, 16:40

Для себя, чтобы не забыть: phpjs.org
Клёвая библиотека портированных php-функций под яваскрипт.
Клёвая библиотека портированных php-функций под яваскрипт.
Русский в заголовках Subj, To, From в фунции mail() на PHP @ Пт, 27 марта 2009, 11:37
Столкнулся с проблемой:
Если отправить письмо из PHP функцией
То текст придёт нормально, а тема письма закрокозябрится.
Всё потому, что заголовок письма должен быть US-ASCII и может быть кодирован в BASE64.
Так что решение оказалось элементарным:
По коду видно, что текст должен быть в UTF-8.
Таким образом можно кодировать и остальные поля в заголовке письма.
P.S. четвертый параметр
Если отправить письмо из PHP функцией
mail() вот так:<?php
mail("bla@foo.bar", "Заголовок русскими буквами", "Русский текст");
То текст придёт нормально, а тема письма закрокозябрится.
Всё потому, что заголовок письма должен быть US-ASCII и может быть кодирован в BASE64.
Так что решение оказалось элементарным:
<?php
function codeMailHeader($text){
return '=?UTF-8?B?'.base64_encode($text).'?=';
}
mail("bla@foo.bar", codeMailHeader("Заголовок русскими буквами"), "Русский текст");
По коду видно, что текст должен быть в UTF-8.
Таким образом можно кодировать и остальные поля в заголовке письма.
P.S. четвертый параметр
mail() я опустил для кратости.
Подводные камни wgetа @ Сб, 14 марта 2009, 09:43
Использовать wget нужно осторожно нахуй!
Рассказываю историю:
У меня в движке блога есть понятие «отложенная запись» — т.е. я могу задать любой записи дату, когда она появится. Для некоторых проектов незаменимо — можно забить его при создании на 2-3 месяца вперед, а потом заниматься своими делами.
Так вот, чтобы при выборке записей небыло условий вроде
Разумеется, переодически приходится проверять поле
Т.к. ssh у меня есть не ко всем возможным проектам, то кроновую часть решил написать в виде простой веб-странички, которую я буду запрашивать через крон wget'ом.
Ну я написал в кронтабе:
и ушел довольный. Все работало, посты появлялись и никакой нагрузки это не создавалось.
ВНЕЗАПНО (через несколько месяцев) хостеры обращают внимание, что:

Ёбанный пиздец! Я нихуя не понимаю, т.к. запрос там простейший, времени занимать много не может по определению, а уж даже если и занимает, то уж вешаться должен php или mysql, а не wget.
Тут-то я и обнаружил в home адов ад — сотни тысяч файлов вида index.html.42432
Сука-wget.
Файлов было настолько много, что:
Ыхыхыххы.
Ну и соответственно, когда wget пытался найти следующее имя файла, ему приходилось делать стотыщ итераций по поиску следующего имени файда для вывода. Ну и он вис. Ад, какой ад.
Спасло положение изменение строки крона на:
В общем, надо иметь ввиду, что если вгету явно не указать файл для вывода, то он начиает охуевать.
Рассказываю историю:
У меня в движке блога есть понятие «отложенная запись» — т.е. я могу задать любой записи дату, когда она появится. Для некоторых проектов незаменимо — можно забить его при создании на 2-3 месяца вперед, а потом заниматься своими делами.
Так вот, чтобы при выборке записей небыло условий вроде
`blog_posts`.`pubdate` <= CURDATE() (что достаточно медленно) я выбираю просто `blog_posts`.`status` = 'posted' (это enum-поле, и оно может быть waiting, posted или deleted) что быстро и удобно. Ну и до этого у меня уже во всех выборках (например предыдущий пост, следующий, случайный, итд) постов было условие `blog_posts`.`status` = 'posted', то и переписывать все выборки тоже было лень.Разумеется, переодически приходится проверять поле
pubdate и ставить всем записям которым наступило время показаться статус posted. Ну т.е. как переодически — раз в минуту. Ну т.е. как приходится — кроном.Т.к. ssh у меня есть не ко всем возможным проектам, то кроновую часть решил написать в виде простой веб-странички, которую я буду запрашивать через крон wget'ом.
Ну я написал в кронтабе:
* * * * * wget http://rulezdev.com/cron/ и ушел довольный. Все работало, посты появлялись и никакой нагрузки это не создавалось.
ВНЕЗАПНО (через несколько месяцев) хостеры обращают внимание, что:

Ёбанный пиздец! Я нихуя не понимаю, т.к. запрос там простейший, времени занимать много не может по определению, а уж даже если и занимает, то уж вешаться должен php или mysql, а не wget.
Тут-то я и обнаружил в home адов ад — сотни тысяч файлов вида index.html.42432
Сука-wget.
Файлов было настолько много, что:
[rulezzz@hosting ~]$ rm index.html.*
-bash: /bin/rm: Argument list too longЫхыхыххы.
Ну и соответственно, когда wget пытался найти следующее имя файла, ему приходилось делать стотыщ итераций по поиску следующего имени файда для вывода. Ну и он вис. Ад, какой ад.
Спасло положение изменение строки крона на:
wget -o /tmp/wget-dw.log -q -O /tmp/wget-content.log http://rulezdev.com/cron/ В общем, надо иметь ввиду, что если вгету явно не указать файл для вывода, то он начиает охуевать.

