суббота, 31 мая 2008 г.

Много бесплатных Flash шаблонов

Только что наткнулся на сайт с отличной подборкой бесплатных флеш шаблонов. Кому нужно качаем http://www.flashmo.com/home

Здесь можно оставить свои комментарии.

ScribeFire- FireFox плагин для постинга в блоги

Сегодня в моём ряду плагинов для FireFox пополнение- просто чудесный плагин, который позволяет писать в блоги из браузера. Вещь действительно великолепная, так как часто бывает - попадается хорошая тема для того что бы написать в блог, но лень открывать сайт, лезть в админку и вбивать текст, а при помощи этого плагина можно находясь на любой страницы написать быстренько обзорчик и запостить себе в блог.
ScribeFire- работает с бо� �ьшим количеством блоговых движков через протокол XML-RPC. Поддерживает пингование об обновлении блогов, теги, выбор категорий для размещения и много чего другого, вобщем качайте и смотрите сами.
Страница загрузки: https://addons.mozilla.org/en-US/firefox/addon/1730

Здесь можно оставить свои комментарии.

пятница, 30 мая 2008 г.

Креативные всплывающие подсказки (tooltips)

JavaScript библиотека Prototip позволяет быстро и легко создавать красивые и удобные всплывающие подсказки, используя известный фреймворк Prototype.

Немного о преимуществах скрипта:

  • Style: Легко меняется дизайн.
  • Position: Позицию всплывающих подсказок настраиваете вы сами.
  • Round: Закруглённые края без использования PNG изображений.
  • Работает во всех популярных браузерах

Офсайт: http://www.nickstakenburg.com/projects/prototip2/

Здесь можно оставить свои комментарии.

Google Maps и IE 7

Сегодня вот заметил что гугл-карты перестали напрочь работать в ИЕ7, в других версиях не тестил, но ведь не так давно - было всё ок, это что заговор против ИЕ ? если да то я только за! но всеравно както не понятно, чем вызван такой косяк - отказываются напрочь работать карты. Версия IE 7.0.5730.13 Windows XP SP2. Читал на блогах - очистка кеша не помогает, причём косяк такой не только у меня. Вобщем будем рыть.. будем искать решение

Здесь можно оставить свои комментарии.

вторник, 27 мая 2008 г.

Ставим и настраиваем FFmpeg, FFmpeg-PHP и дополнительные кодеки


Итак, ниже я подробно опишу как поставить на ваш Linux-сервер FFmpeg, FFmpeg-PHP, Mplayer, Mencoder , flv2tool, LAME MP3 Encoder, Libogg, Libvorbis.
А нафиг это всё мне нужно - спросите вы, отвечу - при помощи этого набора вы сможете конвертировать видео у себя на сервере, делать скриншоты из видео роликов и много чего другого, а всё это вам приходиться если вы надумаете у себя поднять сервис типа или ещё более гениальную вещь :)
Начну с описания своего дистрибутива

[root@server /]# uname -a Linux server.clientservers.org.ua 2.6.18-8.1.1.el5 #1 SMP Mon Apr 9 09:46:54 EDT 2007 i686 i686 i386 GNU/Linux
cd /usr/local/src #для начала выкачаем всё необходимое: wget http://www3.mplayerhq.hu/MPlayer/releases/codecs/essential-20061022.tar.bz2 wget http://rubyforge.org/frs/download.php/9225/flvtool2_1.0.5_rc6.tgz wget http://easynews.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz wget http://downloads.sourceforge.net/ffmpeg-php/ffmpeg-php-0.5.2.1.tbz2 wget http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.1.2.tar.gz #извлекаем архивы: tar zxvf flvtool2_1.0.5_rc6.tgz tar zxvf lame-3.97.tar.gz tar zxvf libogg-1.1.3.tar.gz tar zxvf libvorbis-1.1.2.tar.gz tar zxvf flvtool2_1.0.5_rc6.tgz tar jxvf essential-20061022.tar.bz2 tar jxvf ffmpeg-php-0.5.2.1.tbz2 #сделаем папочку под это дело: mkdir /usr/local/lib/codecs/ #JUST IN CASE: yum install gcc gmake make libcpp libgcc libstdc++ gcc4 gcc4-c++ gcc4-gfortran ruby svn #проверяем SVN репозитарии: svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer cd /usr/local/src/mplayer svn update cd /usr/local/src #Копируем кодеки для MPLAYER: mv /usr/local/src/essential-20061022/* /usr/local/lib/codecs/ chmod -R 755 /usr/local/lib/codecs/ #делаем temp директорию mkdir /usr/local/src/tmp chmod 777 /usr/local/src/tmp export TMPDIR=/usr/local/src/tmp #LAME: cd /usr/local/src/lame-3.97 ./configure make && make install #LIBOGG: cd /usr/local/src/libogg-1.1.3 ./configure && make && make install #LIBVORBIS: cd /usr/local/src/libvorbis-1.1.2 ./configure && make && make install #FLVTOOL2: cd /usr/local/src/flvtool2_1.0.5_rc6/ ruby setup.rb config ruby setup.rb setup ruby setup.rb install cd /usr/local/src/ cd /usr/local/src/mplayer ./configure && make && make install #FFMPEG: cd /usr/local/src/ffmpeg/ ./configure --enable-libmp3lame --disable-mmx --enable-shared make make install ln -s /usr/local/lib/libavformat.so.50 /usr/lib/libavformat.so.50 ln -s /usr/local/lib/libavcodec.so.51 /usr/lib/libavcodec.so.51 ln -s /usr/local/lib/libavutil.so.49 /usr/lib/libavutil.so.49 ln -s /usr/local/lib/libmp3lame.so.0 /usr/lib/libmp3lame.so.0 ln -s /usr/local/lib/libavformat.so.51 /usr/lib/libavformat.so.51 ln -s /usr/local/lib/libavformat.so.52 /usr/lib/libavformat.so.52 ln -s /usr/local/lib/libavdevice.so.52 /usr/lib/libavdevice.so.52 cd /usr/local/src/ #FFMPEG-PHP: cd /usr/local/src/ffmpeg-php-0.5.2.1/ phpize ./configure make make install #добавляем расширение в наш php.ini echo 'extension=/usr/local/lib/php/extensions/no-debug-non-zts-20060613/ffmpeg.so' >> /usr/local/Zend/etc/php.ini #рестартуем веб-серве service httpd restart

Дальше запускаем Скрипт с phpinfo() и ищем раздел ffmpeg
У меня вот так получилось:
ffmpeg
ffmpeg support (ffmpeg-php) enabled
ffmpeg-php version 0.5.2.1
libavcodec version Lavc51.57.0
libavformat version Lavf52.14.0
ffmpeg-php gd support enabled

Directive Local Value Master Value
ffmpeg.allow_persistent 0 0

Всё работает, всё круто :) Если у кого-то не получилось - не отчаивайтесь а пишите в коментах.

Здесь можно оставить свои комментарии.

воскресенье, 25 мая 2008 г.

Умный календарь

Выпадающие календари для форм ввода даты уже никому не в новизну, а вот умный календарь который понимает фразы типа год назад, год вперед, сегодня, следующий вторник и т.д уже куда интереснее - верно? Такую возможность предлагает отличный JavaScript Datetime Toolbocks.  Прямо по ссылке найдёте и демо.

Здесь можно оставить свои комментарии.

суббота, 24 мая 2008 г.

Сравнение популярных Lightbox-скриптов


В последнее время появилось достаточно много мощных JavaScript фреймворков, при помощи которых можно сделать неплохие Lightbox-ы. Но всё же нашлись умельцы которые в удобной форме смогли сравнить самые популярные фреймворки, смотрим http://planetozh.com/projects/lightbox-clones/

Здесь можно оставить свои комментарии.

пятница, 23 мая 2008 г.

Firebug 1.2 beta для Firefox 3 RC 1


Firefox 3 RC 1 полностью меня устраивает, единственное почему я им не пользуюсь - Firebug не работал, но сегодня у всех любителей лисы праздник, вышла бета версия Firebug которая работает под Firefox 3 RC 1. Для загрузки дополнение доступно по ссылке http://getfirebug.com/releases/index.html
Вот список новых возможностей этой версии:(переводить не стал, лучше все быстрее ставьте и тестите сами)
Enablement UI

* Disable always: when the Firebug UI is not active on any page, the debugger is disabled (minimal overhead)
* Instant on: when the Firebug UI is active, HTML, CSS, DOM views activate (minimal overhead)
* Script panel user-activation: initially disabled or enabled always
* Net panel user-activiation: initially disabled or enabled always
* Bug Icon gray unless some page has Script or Net panel activation
* No Allowed-sites/Disable for Site: no longer needed. The UI for this feature is being refined; overhead tests have not been completed. We are interested in feedback on this UI change.

* Javascript Debugging Written/cleaned up eval support
* Performance on eval better, easier to support. This feature is complete; Bug reports on javascript debugger welcome.

* Net Panel Net timing more accurate
* Only real network requests displayed.
* Limit for number of requests (configurable in preferences).
* Additional columns for: request method, status response + text
* Cache tab has expiration time in Net panel

* Console Redesigned to use events/attribute passing.
tests/console/joes-original/test.html mostly passes

* Command Line Redesigned to avoid using evalInSandbox.
tests/console/commandLineObjects.html mostly passes
commandLineAPI functions, ok.

* DOM Panel Works for FF3pre after about 2008041406 (https://bugzilla.mozilla.org/show_bug.cgi?id=425139)

Здесь можно оставить свои комментарии.

четверг, 22 мая 2008 г.

Linux Read Only File System


если столкнулись с такой проблемой то поможет такая команда
mount -no remount,rw /

Здесь можно оставить свои комментарии.

понедельник, 19 мая 2008 г.

PHP+Excel быстро генерируем XLS файлы

Данный метод довольно тупой, и работать будет только на ОС Windows с установленным Excel, но лично я им пользуюсь что бы на локалхосте по быстрому создавать xls файлы с нужными мне данными, приведённый ниже пример рекурсивно обрабатывает папку и все данные из html файлов помещает в Excel таблицу, причём каждую в новую ячейку

  1. <?php
  2. $excel = new COM("excel.application");
  3. //Keep Excel invisible
  4. $excel->Visible = 0;
  5. //Create a new workbook
  6. $wkb = $excel->Workbooks->Add();
  7. $sheet = $wkb->Worksheets(1);
  8. //This code adds the text 'Test' on row 2, column 4
  9. $sheet->activate;
  10. $files=array();
  11. $a=1;
  12.         function recursedir($BASEDIR)
  13.         {
  14.                 global $files;
  15.                 $ext = array("html");
  16.                 $files = array();
  17.                 $hndl=opendir($BASEDIR);
  18.                 while($file=readdir($hndl))
  19.                 {
  20.  
  21.             for($i=0;$i<sizeof ($ext);$i++)
  22.                     if(strstr($file, ".".$ext[$i])) $files[]=$file;
  23.                 }
  24.         return $files;
  25.         }
  26.  
  27. // задаём директорию с которую нужно парсить
  28. $BASEDIR="/1/";
  29.  
  30. recursedir($BASEDIR);
  31.  
  32. foreach($files as $file){
  33. $fp = file_get_contents($BASEDIR.$file);
  34. $fp=str_replace("**","\n \n",$fp);
  35. $cell = $sheet->Cells($a,1);
  36. $cell->Activate;
  37. $cell->value =$fp ;
  38. $a++;
  39. }
  40.  
  41. $wkb->SaveAs("C:\excel123.xls");
  42. //Quit MS Excel
  43. $wkb->Close(false);
  44. $excel->Workbooks->Close();
  45. $excel->Quit();
  46. unset($sheet);
  47. unset($excel);
  48. ?></sizeof>

Просто для общего развития, может кому то пригодится.

Здесь можно оставить свои комментарии.

суббота, 17 мая 2008 г.

IE7 функция reset()

Сегодня заметил что если обозвать свою функцию function reset() то в ИЕ она не пашет, покрайне мере в 7й версии.

Здесь можно оставить свои комментарии.

Проблема при установке Ubuntu 8.04 - выкидывает в консоль

Как только стал доступен новый дистрибутив Ubuntu 8.04, я как порядочный молодой человек закачал его себе и записав на болванку начал ставить, но почему он начиная загружаться выкидывал меня в консоль с очень урезанным набором команд, посношався немного я понял что из-под этой консоли убунту мне не поставить, подумал что скачал кривой образ или болванка хреновая, тем более что проверка целостности диска тупо висла, после этого была ещё одна попытка с другим образом и с другой болванкой - аналогичная ситуация.  Вот вчера когда пришёл официа льный диск и с ним возникла такая же проблема - я заподозрил неладное, попробовал на ноуте - всё гладко. Начал гуглить и спустя минут 10 нагуглил всего одну похожую ситуацию, нагуглил вот этот блог http://leolik.blogspot.com/2008/05/c-ubuntu-804-seagate-barracuda-st.html. И действительно диагноз совпадает у меня тоже основной винт  Seagate Barracuda 80GB.

Но париться с разбивкой винчестера как советывал автор я не  стал, а просто перезагрузился и когда загрузилось меню LiveCD нажал F6 и дописал ключ  all_generic_ide - убунту загрузился и я его успешно проинсталировал.

Здесь можно оставить свои комментарии.

пятница, 16 мая 2008 г.

Ко мне приехал Ubuntu 8.04

Как то давненько я оставил на офсайте Ubuntu предзаказ на доставку нового дистрибутива себе домой, и уже забыл про это дело, как сегодня у себя в почтовом ящике обнаружил конверт, по обложке которого я сразу догадался что Убунту про меня не забыли :) В конверте я нашёл последний дистрибутив и 4 наклеечки Ubuntu, теперь ломаю голову куда бы их поприклеивать.

Здесь можно оставить свои комментарии.

понедельник, 12 мая 2008 г.

Linux - Смена часового пояса

1. Логинимся в системе под root, при помощи команды`date` узнаём текущий часовой пояс. Вы должны увидеть что-то похожее на Mon 13 May 2008 09:15:08 AM PST, PST - это и есть текущий часовой пояс
2. Перейдите в каталог /usr/share/zoneinfo, здесь вы найдете список регионов временных зон. Выберите наиболее подходящий.
3. Делаем симлинк нужной временной зоны в каталог /etc/localtime. Например:

ln -sf /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime

4. Обновляем время
ntpdate time.nist.gov

Здесь можно оставить свои комментарии.

воскресенье, 11 мая 2008 г.

Linux - использование YUM

До сегодняшнего дня я восновном работал с дистрибутивами Debian и Ubuntu и привык к менеджеру пакетов apt. Но сегодня обнаружил что на новом VDS с которым мне предстоит работать установлена CentOS. Менеджером пакетов в которой является YUM. Вот о нём и пойдёт речь ниже в этом посте. Как при помощи YUM устанавливать, удалять, искать необходимый софт. Если не ошибаюсь то этот менеджер пакетов используется также в дистрибутивах Suse, Fedora возможно и в других.
Итак вот основные команды:
yum update - обновление системы

yum search any-package - поиск необходимых пакетов
Пример:
yum search httpd

yum info any-package - служебная информация о необходимом софте
Пример:
yum info httpd

yum install any-package - установка пакетов
Пример:
yum install gkrellm

yum remove any-package - удаление

available yum list|less - выведет список доступного для установки софта

yum list installed|less - список установленного в системе ПО

yum list updates|less - список установленного в системе ПО, которое можно обновить

yum clean all - очистка установочной информации

Я привёл основные команды которые понадобились мне, если вам этого мало то прошу man yum :)

Здесь можно оставить свои комментарии.

среда, 7 мая 2008 г.

Расставим все по местам: подход MVC

Первое правило MVC — разбивайте сценарий на отдельные файлы. Зачастую для представления различных компонентов шаблона MVC используются файлы с разными расширениями, которые объединяются с помощью директивы require_once.
При этом не нужно следовать привычной практике именования файлов, при которой включаемым файлам присваивается расширение .inc. Это расширение ничего не говорит о содержимом файла и не позволяет различать их роли.
Например можно воспользоваться такими расширениями:
.php - Инфраструктура - Логика поведения - инфраструктура взаимодействия между моделью, видом и контроллером
.phpm - Модель - Классы PHP -”сердце” приложения
.phtml - Вид/Контроллер - Обработка результатов ввода пользователя и пользовательский интерфейс.

Может показаться странным, что контроллер и вид объединены в один файл, но это соответствует физическому прототипу. Поскольку Web-браузер пользователя выступает и в роли интерфейса (контроллера), и в качестве средства отображения данных (вида), то резонно объединить эти компоненты в едином файле.
При делении сценария на модули следует руководствоваться такими правилами.
□ Файл .php (управляющая страница) не должен содержать SQL-запросов или кода HTML.
□ Файл . phpm (классы) не должен содержать HTML-код.
□ Файл .phtml (шаблоны) не должен содержать SQL-запросов, а только базовые операторы PHP (for, if, while).
Такое разделение обеспечивает очень примитивную форму естественных шаблонов (native templating). В такой постановке интерпретатор РНР обрабатывает выходные данные приложения в отдельном файле шаблонов (в данном случае в файле .phtml). Выход определяется входными данным пользователя с помощью обработки в файлах логики (. php) и файлах классов (. phpm).
На практике этот подход реализуется следующим образом.
□ Файл .php получает запросы GET или POST (поэтому не приходится реконфигурировать сервер Apache для поддержки новых расширений файлов).
□ В файле .php содержатся все операторы require, необходимые для импортирования требуемых классов (каждый из которых хранится в файле . phpm).
□ Файл . php проверяет входные параметры, передаваемые с помощью метода GET или POST, и определяет ход дальнейших действий. Он передает полученные данные (либо в виде строки, либо в обработанном виде) методам классов включенным на предыдущем этапе.
□ Классы анализируют входные данные, обрабатывают их, выполняют запрос! к базе данных или другим источникам и возвращают данные файлу . php.
□ Файл . php проверяет полученные результаты и принимает решение о дальнейшем использовании данных. Передача этих данных всегда выполняется с помощью построения единой суперпеременной (обычно хеш-таблицы), содержащей неформатированные данные, которые должны отображаться для пользователя.
□ В файле .php с помощью директивы include подключается соответствующий файл .phtml.
□ Файл . phtml анализирует эту суперпеременную и отображает ее пользователю в соответствующем виде на Web-странице.

Здесь можно оставить свои комментарии.

вторник, 6 мая 2008 г.

ICONV изменяем кодировки дампов

Вобщем в Unix системах есть такая полезная вещь как iconv, с помощью неё можем изменять кодировку файлов в любых направлениях, ниже пример демонстрирует перекодирование дампа из utf8 в cp1251

iconv -f utf8 -t cp1251 stat.sql > stat_cp1251.sql

Здесь можно оставить свои комментарии.

воскресенье, 4 мая 2008 г.

PHP перекодируем текст из HTML-последовательностей и наоборот

Думаю многие из вас в теле HTML страницы встречали вместо привычного русского текста набор символов и цифр, так вот - это HTML последовательности. Иногда перед разработчиками стоит задача или закодировать текст в такую последовательность, или наоборот раскодировать,вот для этого вам и пригодится следующая функция, $to_uni = false - из HTML последовательности в нормальный текст, $to_uni = true - наоборот.

  1. <?php
  2. function unicon($str, $to_uni = false) {
  3.     $cp = Array (
  4.         "А" => "&#x410;", "а" => "&#x430;",
  5.         "Б" => "&#x411;", "б" => "&#x431;",
  6.         "В" => "&#x412;", "в" => "&#x432;",
  7.         "Г" => "&#x413;", "г" => "&#x433;",
  8.         "Д" => "&#x414;", "д" => "&#x434;",
  9.         "Е" => "&#x415;", "е" => "&#x435;",
  10.         "Ё" => "&#x401;", "ё" => "&#x451;",
  11.         "Ж" => "&#x416;", "ж" => "&#x436;",
  12.         "З" => "&#x417;", "з" => "&#x437;",
  13.         "И" => "&#x418;", "и" => "&#x438;",
  14.         "Й" => "&#x419;", "й" => "&#x439;",
  15.         "К" => "&#x41A;", "к" => "&#x43A;",
  16.         "Л" => "&#x41B;", "л" => "&#x43B;",
  17.         "М" => "&#x41C;", "м" => "&#x43C;",
  18.         "Н" => "&#x41D;", "н" => "&#x43D;",
  19.         "О" => "&#x41E;", "о" => "&#x43E;",
  20.         "П" => "&#x41F;", "п" => "&#x43F;",
  21.         "Р" => "&#x420;", "р" => "&#x440;",
  22.         "С" => "&#x421;", "с" => "&#x441;",
  23.         "Т" => "&#x422;", "т" => "&#x442;",
  24.         "У" => "&#x423;", "у" => "&#x443;",
  25.         "Ф" => "&#x424;", "ф" => "&#x444;",
  26.         "Х" => "&#x425;", "х" => "&#x445;",
  27.         "Ц" => "&#x426;", "ц" => "&#x446;",
  28.         "Ч" => "&#x427;", "ч" => "&#x447;",
  29.         "Ш" => "&#x428;", "ш" => "&#x448;",
  30.         "Щ" => "&#x429;", "щ" => "&#x449;",
  31.         "Ъ" => "&#x42A;", "ъ" => "&#x44A;",
  32.         "Ы" => "&#x42B;", "ы" => "&#x44B;",
  33.         "Ь" => "&#x42C;", "ь" => "&#x44C;",
  34.         "Э" => "&#x42D;", "э" => "&#x44D;",
  35.         "Ю" => "&#x42E;", "ю" => "&#x44E;",
  36.         "Я" => "&#x42F;", "я" => "&#x44F;"
  37.     );
  38.     if ($to_uni) {
  39.         $str = strtr($str, $cp);
  40.     } else {
  41.         foreach ($cp as $c) {
  42.             $cpp[$c] = array_search($c, $cp);
  43.         }
  44.         $str = strtr($str, $cpp);
  45.     }
  46.     return $str;
  47. }
  48.  echo unicon('&#x41C;&#x43E;&#x441;&#x43A;&#x432;&#x430; &#x422;&#x432;&#x435;&#x440;&#x441;&#x43A;&#x430;&#x44F; 7'); //выводим расшифрованую запись в браузер
  49. ?>

А вот ещё нашёл онлайн тулзу для такого рода преобразований http://wwwguru.net/sandbox/index.php

Здесь можно оставить свои комментарии.

Симпотичная девушка поможет вам в поиске

Знаю что данный поисковик уже не  новый, но лично я только сегодня его увидел.

Поисковик выполнен на Flash, весёлая девчёнка будет развлекать вас шутками пока вы ищите, сделано очень интересно иногда даже смешно :) Как поисковик конечно этот сайт фигня, а так для общего развития и позабавится - советую поюзать, тем более что поведение девушки меняется от введённых поисковых слов, конечно не для всех, но для самых популярных продуманы сценарии - попробуйте blog, girls, boys и т.д

Ссылка на поисковик: http://msdewey.com/

Здесь можно оставить свои комментарии.

суббота, 3 мая 2008 г.

Сервис для создания ЧПУ

Это онлайн-генератор правил для .htaccess файлов благодаря которым на сайте можно организовать ЧПУ. Если вы недостаточно знакомы с модулем mod_rewrite то этот сервис то что вам нужно.

Всего за несколько шагов вы сможете сгенерировать необходимые вам правила и сделать ЧПУ для своего сайта.
Офсайт: http://www.mod-rewrite-wizard.com/

Здесь можно оставить свои комментарии.

пятница, 2 мая 2008 г.

MVC в языке PHP

Как уже упоминалось — простота и доступность языка РНР зачастую обуславливает его некорректное использование. Это приводит к разработке приложений, которые очень трудно поддерживать. В частности, в контексте модели MVC это приводит к тому, что компоненты «модель», «вид» и «контроллер» размещаются в одном сценарии. Именно при таком подходе можно говорить о сценарии. В свою очередь, при корректной реализации шаблона MVC сценариев в приложении не «существует», а есть только компонент� �.

Как не нужно делать

Предложите любому неопытному PHP-разработчику создать приложение гостевой книги, и он наверняка реализует его в виде единственного сценария. Этот файл может называться guestbook.php и выполнять как отображение существующих записей книги, так и добавление в базу данных новых записей. Его код будет иметь следующие особенности:
— Номер отображаемой страницы передается с помощью параметра метода GET.
— Если номер страницы не указан, отображается страница 1.
— Выполняется проверка наличия параметра NewGuestBookEntry. При его наличии выполняется проверка соответствия ограничениям (по длине и содержимому) и данные заносятся в базу. При его отсутствии выводится сообщение об ошибке. Сценарий завершает работу.
— Из базы данных извлекаются записи, соответствующие данному номеру страницы.
— Эти данные заносятся в таблицу HTML (описанную прямо в файле сценария).
— Пользователю выводится форма HTML, позволяющая ввести новую запись.
Этот подход содержит множество проблем, связанных не только с использованием
метода GET для внесения изменения в базу данных. Если посмотреть на такую реализацию с точки зрения шаблона MVC, то окажется, что многочисленные компоненты контроллера и вида переплетаются друг с другом, создавая множество сложностей.

Здесь можно оставить свои комментарии.

Apple Store - отличное решение для изображений

На сайте Apple Store  сегодня заметил обновление, оно меня действительно поразило - офигенный эффект для просмотра изображений в нескольких ракурсах, при этом при клике на изображение оно увеличивается, а при повторном - отдаляется, вобщем то - лучше один раз заюзать чем долго и нудно читать:

Посмотреть

Здесь можно оставить свои комментарии.

четверг, 1 мая 2008 г.

Apple Store

Здесь можно оставить свои комментарии.

Модель, вид, контроллер (MVC)

Первое появление языка РНР было очень похоже на небольшую революцию. Интерактивные Web-приложения с возможностями, которые однажды были реализованы разработчиком-профессионалом, стали появляться повсюду. В самых необычных местах вдруг стало появляться динамичное содержимое, которое выглядело очень сложным и пришло совсем не из мира CGI-сценариев для традиционной гостевой книги.
Причиной подобной революции была чрезвычайная понятность средств РНР. Эта новая технология позволяла реализовать не только программу “Здравствуй, мир!”. Даже традиционно сложные процедуры, такие как интеграция баз данных, стали вполне реализуемыми всего лишь в нескольких строках кода.
Однако основная проблема заключается в том, что такая доступность стала быстро использоваться не по назначению. С одной стороны, это приводило к тому, что сложные приложения разрабатывались неопытными командами разработчиков. А с другой стороны, опытные профессионалы сознательно отступали от своих принципов и не могли устоять перед соблазном воспользоваться беспрецедентной простотой языка РНР.

Риск, связанный с подобными подходами к разработке, вполне очевиден. Такое “применение” языка РНР приводит к появлению приложений, которые очень неудобно поддерживать. Для таких “шедевров” хорошо документированы случаи неустойчивого и ненадежного функционирования и даже изъяны, связанные с нарушением безопасности.
Многие языки программирования, такие как Java и C++, вынуждают использовать правильные подходы к программированию в процессе выполнения проектов, однако для использования языка РНР от разработчиков требуется самодисциплина. Опытный PHP-профессионал отличается от кодера на диване одним важным качеством - самодисциплиной. Одним из наиболее значимых примеров подобной самоорганизации является методология, предполагающая использование шаблона “модель—вид-контроллер” (Model-View-Controller (MVC)).

Знакомство с архитектурой MVC

Буква М означает “модель” (model), V— “вид” (view) и С— “контроллер” (controller). Однако какой же смысл вкладывается в эти термины?
Модель MVC лучше всего описывается с помощью хорошо известного понятия “шаблон проектирования”.  Шаблон проектирования (design pattern) — это описание многократно используемого решения повторяющейся проблемы в определенном контек¬сте. Шаблоны проектирования предназначены для непротиворечивого решения проблем, которые возникают при проектировании крупномасштабных приложений. Наилучшего практического результата можно достигнуть лишь при использовании архитектуры, построенной на основе использования апробированных пр� �нципов.
Основная проблема заключается в том, как отделить друг от друга пользовательское управление программой (контроллер), ее внешний вид (вид), а также внутреннюю обработку и механизм принятия решений (модель). При этом нужно обеспечить их представление в виде трех определенных, отделимых друг от друга, компонентов. Как легко догадаться, решением этой проблемы является модель MVC. Однако зачем это нужно?
Во-первых, разделение влечет за собой возможность замены. Реализовав три от¬дельных компонента, можно обеспечить их непротиворечивое взаимодействие друг с другом. Кроме того, при необходимости любой компонент можно заменить. Например, если понадобилось, чтобы Web-приложение работало с карманными компьютерами, а не с Web-браузерами, можно заменить компонент “вид” на другой компонент, с помощью которого можно было бы представлять содержимое в формате карманного компьютера, а не Web-браузера. Если вы захотите обеспечить голосовой вво� � данных, а не заставлять пользователей щелкать мышкой, можно заменить компонент контроллер” на другой компонент, основанный на средствах VoiceXML. Во-вторых, поиск трудноуловимых ошибок в коде, а также поддержка программы после ее передачи заказчику существенно упрощаются, если обеспечено рациональное разделение ее логики. При таком подходе оказывается полезным и объектно-ориентированное программирование, основы которого рассматривались в начале этой книги. Гораздо лучше иметь множество небольших компонентов, которые вз аимодействуют друг с другом, чем небольшой набор больших, громоздких файлов. При таком разделении компонентов сложная архитектура программной системы становится гораздо более простой.
И наконец, для одной модели можно реализовать несколько контроллеров и компонентов представления. Вернемся к предыдущему примеру с карманными компьютерами при использовании архитектуры MVC можно реализовать отдельные контроллеры и компоненты представления для карманных компьютеров, мобильных телефонов и даже устаревших браузеров. Все эти компоненты могут взаимодействовать с одной и той же моделью. Без архитектуры MVC будет невозможно повторно И использовать разработанный код, и вы не сможете избежать дополнительных усил ий и дублирования кода.

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

Здесь можно оставить свои комментарии.

Конвертация данных, MySQL ALTER TABLE

Начиная с версии 4.1, СУБД MySQL не просто использует установленную кодировку для сортировки и поиска, но он также и хранит данные в этой кодировке.

Это значит, что если у вас в версии 4.0 была установлена одна кодировка, а сами данные находились в другой кодировке и вам нужно хранить в корректной кодировке, то вам поможет ALTER TABLE.

Оператор ALTER TABLE обеспечивает возможность изменять структуру существующей таблицы. Например, можно добавлять или удалять столбцы, создавать или уничтожать индексы или переименовывать столбцы либо саму таблицу. Можно также изменять комментарий для таблицы и ее тип.

Наиболее безопасно это делать в 2 этапа:

- на первом этапе вы конвертируете CHAR / VARCHAR / TEXT столбец в BINARY / VARBINARY / BLOB:

  1. ALTER TABLE tbl_name CHANGE col1 col1 BLOB;

- на втором этапе вы конвертируете BINARY / VARBINARY / BLOB в CHAR / VARCHAR / TEXT с соответствующей кодировкой:

  1. ALTER TABLE tbl_name CHANGE col1 col1 TEXT CHARACTER SET utf8;

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

  1. ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8;

Здесь можно оставить свои комментарии.

Дружим FCKeditor с Opera

Раньше из всех wysiwyg-редакторов я отдавал предпочтение TinyMCE, но он мне немного поднадоел своей громоздкостью и решил попробовать FCKeditor, который давно сильно нахваливали, сталкивался с ним и раньше, но не брал к себе на вооружение по одной простой причине - он не работал в Опере(в то время я ещё был активным пользователем Оперы, эт сейчас уже с года пол использую Firefox). Так вот, прикинул что с того времени когда в последний раз пробовал использовать FCKeditor, много воды утекло и подумал что они уже всёже сделали поддержку оперы, постави� �, настроил под себя - а в опере один хрен - не работает. Заподозрив неладное начал рыть код и вот что нашёл - в файле fckeditor.php есть в нём функция под названием FCKeditor_IsCompatibleBrowser() а в ней такие строки

  1. $fVersion = (float)substr($sAgent, strpos($sAgent, 'Opera/') + 6, 4) ;
  2. return ($fVersion &gt;= 9.5) ;

которые если заменить на такие

 
$fVersion = (float)substr($sAgent, strpos($sAgent, 'Opera/') + 6, 4) ; return ($fVersion >= 9.2) ;
то в Опере всё будет работать.

Здесь можно оставить свои комментарии.