| A bunch of DB functions in one =) |
[16 Mar 2006|08:39pm] |
Когда мне нечего делать я пишу на PHP странные вещи. Вот одна из последних. Навеяна почему-то зендовским фреймворком. Функция в одиночку делает запрос к БД, фетчит результат и отдает affected rows. Ничего собственно говоря нового, но изврат еще тот. [code]
function vdb_fetch(&$select) { static $res_id; if(!$res_id){ $res_id=mysql_query($select); } if($res_id) { return (($select=mysql_fetch_assoc($res_id)) or ($res_id=is_bool($select=mysql_num_rows($res_id)))); } }
[/code] а теперь пример: [code]
$query="select id, cnt from cronos"; while(vdb_fetch($query)){ echo $query['cnt']; } echo 'Affected rows: '.$query;
[/code] а теперь сравните со стандартным кодом обработки результсета =)
|
|
| DOOOOOOOOOOOOOOOOOOOOOOOOOOOM =) |
[15 Feb 2006|05:42pm] |
А чтобы это значило? <script type="text/javascript"> var domhl=new DOM_HL(); domhl.create_n_append('INPUT', 'ggg', {name:'Name', value:'Enter your name'}, {focus: check_field}); </script>
А это мне просто DOM надоел =) Вот и сваял библиотечку под названием DOM HandMade Для тех, кто еще не понял, вышеописанный метод создает поле в диве с ид "ggg", второй аргумент-- хэш с набором атрибутов, третий аргумент-- хэш с набором обработчиков событий. Вот так я заменил многострочный код на одну функцию.
|
|
| браузеры: кто быстрее? |
[31 Jan 2006|08:35pm] |
Чего-то мне это все не нравится... Сделал на javascripte такой интерфейсец: есть поле, а когда на него попадает фокус (onfocus) под это поле добавляется еще одно и т.д. Помните как в M$ Access когда таблицу создаешь, там при фокусе на последнее поле добавляется еще одно. Очень удобно. Сначала подумал, как я это делать буду. Так как я в начале слукавид, и добавляется вовсе не одно тектовое поле, а еще и селект с множеством опций ( :) )... В общем сделал я через innerHTML. Да это свойство не описано в DOM спецификации, зато его поддерживают FF, Opera, IE. Насторожил меня тот факт, что в IE трюк с добавлением поля работал медленно и некрасиво... А у меня машина не такая уж и хилая (Celeron 2.53 mHz, 512 MB RAM). Смотрю в CPU Usage (ну вот так вот, по вторникам я на виндовсе сижу, а по всем остальным дням на RH, а по пятницам на Мандриве :)))))) а там... Мама Мия... Ослик когда добавляет поле отжирает 20%! Ладно думаю, ослик он на то и ослик... Пошел к Лису, тот меня удивил, потому, как жрал не меньше 30%. Вот тебе и браузер, а я ведь за него агитировал... Не люблю я Оперу, не знаю за что. А хотя знаю. Как не посмотрю на свои сайты, в ней, все время какая-нибудь деталь не устраивает. То тут поехало, то там... Ближе к делу: Опера кушала на этом деле 5-6%. Выводы делаем сами. Кстати, эта заметка вовсе там не тест какой-нибудь и не бенчмарк. Просто наблюдение.
|
|
| music:A-Ha// Analogue |
[19 Jan 2006|07:51pm] |
| [ |
music |
| |
Земфира - Бесконечность |
] |
Вот хотел же в пред. посте про Аху написать... Нормальный альбом между прочем. Даже я бы сказал очень качественный. Нравится Селис. Я бы даже альбом назвал в честь этой Селис :) Видел вчера клип на Аналог. Не ахти какой. А зачем культовой группе Аха суперские клипы? Они же не Спилберги и не Кубрики. Кто сказал, что у Ахи лирика некудышняя? Кто-то сказал. А вот попробуйте сами напишите песню на английском и я посмотрю. Не стоит забывать что песнописец Ахашный вовсе не Британец. Он вам не Мартин Гор. А песни все равно очень красивые.
|
|
| programming:CVS:TortoiseCVS// Подключаем к Zend IDE |
[16 Jan 2006|12:53pm] |
Если вам приходится работать с репозиторием на удаленном сервере через SSH, то у вас могут возникнуть проблемы с Zend IDE.
Самая главная проблема заключается в том, что вышеуказанная IDE пытается использовать виндосовский RSH. В общем без танцев с бубном это дело не получится.
Вместо бубна мы будем использовать любимую виндузятниками Черепашку (TortoiseCVS). Очень хороший клиент и CVS в одном лице.
Итак чтобы поключиться из Зенда к удаленному CVS серверу мы производим следующие действия:
- Вызываем контекстное меню любой папки (клик правой кнопки), идем в CVS->Preferences.
- Переходим на вкладку Tools, и смотрим поле SSH Application. Копируем содержимое в буфер.
- Запускаем Зенд.
- Идем в Tools->Preferences.
- Ищем владку CVS.
- И вводим содержимое буфера в поле CVS_RSH Environment Variable.
- Все.
Теперь можно пользоваться всеми стандартными средствами CVS в Зенде.
|
|
| Справочные материалы к софту:// Tips (советы) |
[27 Nov 2005|11:33pm] |
|
Я конечно же не Якоб Нильсен, чтобы вы меня слушали :) (хотя сам я отношусь к его публикациям с большой неприязнью, потому как при чтении статей Нильсена мне как будто кто-то все время шепчет на ухо "убить веб, убить браузеры с графическим интерфейсом, писать только в стиле "перевернутая пирамида" и т.д.) Но все-таки хочется мне рассказать про личное наблюдение, которое касается так называемых "Tip # ..." в справочных руководствах к программному обеспечению. Почти у каждой программы в хелпе есть в конце топика "Совет". Вот я и решил подумать: для чего эти советы, почему их так любят составители справочных материалов?
Советы нужны только для того чтобы вселить в человека неуверенность. Потому, как совет это что-то типа "я тебе подскажу, но решаешь ты все равно сам". Поэтому, в хорошей справке не должно быть советов. Так как эти самые Tips есть ничто иное как недоделанность справочной системы. Справка не должна советовать, она должна точно описывать продукт, как пользоваться продуктом и точно указывать что делать, там, где надо, естественно. А еще, есть категория людей, которые не подумав следуют этим советам. Если уж так получилось, что есть текст, который не вписывается в общую концепцию, то надо вынести его в Заметки, Замечания (Notes). Вот так вот. На этом все.
|
|
| programming:php://Наглядные запросы и кавычки |
[25 Nov 2005|02:35pm] |
|
В общем есть проблема. А может и не проблема, с экранированием спец. символов в запросах к БД.
Были подходы:
- использование спец. функций прямо в запросе: mysql_query("select * from users where id='".mysql_real_escape_string($_GET['id'])."'");
- использование плейсхолдеров (placeholders), которые были предложенны в Perl: safe_query("select * from users where id=?", $_GET['id']);
- использование своих оболочек для функций sprintf или vsprintf: safe_query("selet * from users where id=%d", $_GET['id']);
В маленьких запросах все выглядит очень наглядно... Но кто в наш продвинутый век использует маленькие несложные запросы? Никто.
Я предлагаю альтернативу. Способ очень наглядный, позволяющий составлять безопасные запросы, и читать их потом без особых заморочек на одном дыхании. Способ заключается в написании одной маленькой функции. Вызывать которую мы будем так: safe_query("select * from users where id='",$_GET['id'],"'");
Наглядно? Безопасность вы обеспечите сами, проэкранировав поступающие в функцию аргументы с помощью вышеупомянутой функции. А как экранировать спросите вы? Как различить, какой аргумент есть кусок запроса, а какой-- приходящие от пользователя небезопасные данные? Все просто. Надо слешить аргументы через один :) В жизни так оно и есть-- куски кода чередуются с вставками небезопасных данных :) А если даже и есть икслючение, то очень легко попытаться избежать этого исключения. Вот.
Изначально, тема обсуждалась в форуме PHPClub'а.
Ссылка: http://phpclub.ru/talk/showthread.php?s=&threadid=60592&perpage=20&pagenumber=1 Для тех, кто не понял о чем заметка: http://phpfaq.ru/slashes
Для тех, кто не знает, что такое php: смело пропускайте заметку.
|
|
| programming:OOP:// инкапсуляция |
[24 Sep 2005|02:22pm] |
Понравилось определение инкапсуляции Screjet с PHPClub.ru: "Когда смотришь на человека, то не видишь его сердца, кишечника и прочих ужасов."
|
|
| web-design:creative:// sigara.ru |
[23 Sep 2005|07:51pm] |
Посмотрите на замечательный титул этого (sigara.ru) дремлющего сайта... ЭТА сигара, похожа на ка... в обертке! Неужели в студии, арт-директор которой, пишет чуть-ли не учебники по дизайну, не могли нарисовать нормальный портсигар с нормальными сигарами?
|
|
| web-design:javascript:// Жаба-сценаристка! |
[23 Sep 2005|03:59pm] |
Тем, кто ничего не смыслит в веб-дизайне, лучше этот пост пропустить. История такая. Захотел я недавно на странице рендерить параграфы при помощи DOM функций. У каждого параграфа была картинка в фоне (так было прописанно в таблице стилей). Нарисовал я первые два параграфа, все нормально. Потом решил нарисовать десять. Вот тут пошло поехало. Ослик начал для каждого параграфа грузить картинку! А ведь картинка то- одна и та же. Зачем ее десять раз грузить? Дальше больше, ослик просто завис. Показывает 5 items осталось... и висит. Такая проблема наблюдается только в IE. Лиса делает все как всегда на все сто. Вот такая вот история. Если кто знает, почему так происходит, пишите комменты. Буду рад узнать истину.
|
|
| Первая запись в ЖЫЖО |
[23 Sep 2005|09:56am] |
|
А вот и первая запись в столь популярном на сегодняшний день в сети, блоге. Если вы пришли сюда без приглашения, то лучше проваливать отсюда. Объясняю почему: здесь будут размещены записи, которые могут оскорбить ваше достоинство, оспорить вашу точку зрения. Те, кто будут оспаривать в комментах мою точку зрению, будут нещадно пожираться силой моих ораторских способностей.
|
|
| navigation |
| [ |
viewing |
| |
most recent entries |
] |
|
|
|
|