среда, 30 апреля 2008 г.

Flash+Ajax аплоадер файлов - FancyUpload

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

Офсайт: http://digitarald.de/project/fancyupload/2-0/showcase/photoqueue/

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

Парсер email-адрессов.


Часто ли вам приходилось собирать базу email адрессов? Мне вот частенько приходится из базы сайтов выдирать email-адресса админов. Ручками это делать во первых тупо, во вторых - уморительно.

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

  1. < ?
  2. $lines = file('mail.txt');
  3. $out = array();
  4.  
  5. foreach ($lines as $line_num => $line) {
  6.     $url=file_get_contents(trim($line));
  7.     preg_match_all('/[\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?[\.A-Za-z0-9]{2,}/', $url, $out);
  8.     echo $line.'&nbsp;&nbsp;&nbsp;';
  9.     print_r($out);
  10.     echo '<br /><br />';
  11. }
  12. ?>

P.S в регулярных выражениях я не силён и поэтому с этой регуляркой есть проблема - не правильно обрабатывает email адресса в которых есть знак -.

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

вторник, 29 апреля 2008 г.

SQUID: Squid Parent: child process 2974 exited due to signal 6

Если SQUID при запуске ругается подобным образом

Squid Parent: child process 2974 exited due to signal 6
то в 90% случаев это проблема связана со слишком большим размером лог файла. Попробуйте почистить /var/log/squid/ - мне помогло

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

понедельник, 28 апреля 2008 г.

Популярные CSS хаки

Ниже приведён список самых популярных на сегодня CSS хаков. К большинству хаков прилагается скриншот, если я что-то упустил - пишите в коментариях.

1. Закруглённые края без использования изображений
  1. &lt;div id="container"&gt;
  2. &lt;b class="rtop"&gt;
  3. &lt;b class="r1″&gt;&lt;/b&gt; &lt;b class="r2″&gt;&lt;/b&gt; &lt;b class="r3″&gt;&lt;/b&gt; &lt;b class="r4″&gt;&lt;/b&gt;
  4. &lt;/b&gt;
  5. &lt;!–content goes here –&gt;
  6. &lt;b class="rbottom"&gt;
  7. &lt;b class="r4″&gt;&lt;/b&gt; &lt;b class="r3″&gt;&lt;/b&gt; &lt;b class="r2″&gt;&lt;/b&gt; &lt;b class="r1″&gt;&lt;/b&gt;
  8. &lt;/b&gt;
  9. &lt;/div&gt;
  10.  
  11. .rtop, .rbottom{display:block}
  12. .rtop *, .rbottom *{display: block; height: 1px; overflow: hidden}
  13. .r1{margin: 0 5px}
  14. .r2{margin: 0 3px}
  15. .r3{margin: 0 2px}
  16. .r4{margin: 0 1px; height: 2px}

Rounded corners without images

2. Стильные списки
  1. &lt;ol&gt;
  2. &lt;li&gt;
  3. &lt;p&gt;This is line one&lt;/p&gt;
  4. &lt;/li&gt;
  5. &lt;li&gt;
  6. &lt;p&gt;Here is line two&lt;/p&gt;
  7. &lt;/li&gt;
  8. &lt;li&gt;
  9. &lt;p&gt;And last line&lt;/p&gt;
  10. &lt;/li&gt;
  11. &lt;/ol&gt;
  12.  
  13. ol {
  14. font: italic 1em Georgia, Times, serif;
  15. color: #999999;
  16. }
  17.  
  18. ol p {
  19. font: normal .8em Arial, Helvetica, sans-serif;
  20. color: #000000;
  21. }

Style your order list

3. Формы
  1. &lt;form&gt;
  2. &lt;label for="name"&gt;Name&lt;/label&gt;
  3. &lt;input id="name" name="name"&gt;&lt;br&gt;
  4. &lt;label for="address"&gt;Address&lt;/label&gt;
  5. &lt;input id="address" name="address"&gt;&lt;br&gt;
  6. &lt;label for="city"&gt;City&lt;/label&gt;
  7. &lt;input id="city" name="city"&gt;&lt;br&gt;
  8. &lt;/form&gt;
  9.  
  10. label,input {
  11. display: block;
  12. width: 150px;
  13. float: left;
  14. margin-bottom: 10px;
  15. }
  16.  
  17. label {
  18. text-align: right;
  19. width: 75px;
  20. padding-right: 20px;
  21. }
  22.  
  23. br {
  24. clear: left;
  25. }

CSS Tableless forms

4. Двойные кавычки (цытата)
  1. blockquote:first-letter {
  2. background: url(images/open-quote.gif) no-repeat left top;
  3. padding-left: 18px;
  4. font: italic 1.4em Georgia, "Times New Roman", Times, serif;
  5. }

Double blockquote

5. Эффект градиента для текста
  1. &lt;h1&gt;&lt;span&gt;&lt;/span&gt;CSS Gradient Text&lt;/h1&gt;
  2.  
  3. h1 {
  4. font: bold 330%/100% "Lucida Grande";
  5. position: relative;
  6. color: #464646;
  7. }
  8. h1 span {
  9. background: url(gradient.png) repeat-x;
  10. position: absolute;
  11. display: block;
  12. width: 100%;
  13. height: 31px;
  14. }
  15.  
  16. &lt;!–[if lt IE 7]&gt;
  17. &lt;style&gt;
  18. h1 span {
  19. background: none;
  20. filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='gradient.png', sizingMethod='scale');
  21. }
  22. &lt;/style&gt;
  23. &lt;![endif]–&gt;

Gradient text effect

6. Вертикальное центрирование при помощи line-height
  1. div{
  2. height:100px;
  3. }
  4. div *{
  5. margin:0;
  6. }
  7. div p{
  8. line-height:100px;
  9. }
  10.  
  11. &lt;p&gt;Content here&lt;/p&gt;

Vertical centering with line-height

7. Закруглённые углы с использованием изображений
  1. &lt;div class="roundcont"&gt;
  2. &lt;div class="roundtop"&gt;
  3. &lt;img src="tl.gif" alt=""
  4. width="15″ height="15″ class="corner"
  5. style="display: none" /&gt;
  6. &lt;/div&gt;
  7.  
  8. CONTENT
  9.  
  10. &lt;div class="roundbottom"&gt;
  11. &lt;img src="bl.gif" alt=""
  12. width="15″ height="15″ class="corner"
  13. style="display: none" /&gt;
  14. &lt;/div&gt;
  15. &lt;/div&gt;
  16.  
  17. .roundcont {
  18. width: 250px;
  19. background-color: #f90;
  20. color: #fff;
  21. }
  22.  
  23. .roundcont p {
  24. margin: 0 10px;
  25. }
  26.  
  27. .roundtop {
  28. background: url(tr.gif) no-repeat top right;
  29. }
  30.  
  31. .roundbottom {
  32. background: url(br.gif) no-repeat top right;
  33. }
  34.  
  35. img.corner {
  36. width: 15px;
  37. height: 15px;
  38. border: none;
  39. display: block !important;
  40. }

Rounded corners with images

8.Использование нескольких классов
  1. &lt;img src="image.gif" class="class1 class2″ alt="" /&gt;
  2.  
  3. .class1 { border:2px solid #666; }
  4. .class2 {
  5. padding:2px;
  6. background:#ff0;
  7. }
9. Горизонтальное центрирование
  1. &lt;div id="container"&gt;&lt;/div&gt;
  2.  
  3. #container {
  4. margin:0px auto;
  5. }

Center horizontally

10. Буквица
  1. &lt;p class="introduction"&gt; This paragraph has the class "introduction". If your browser supports the pseudo-class "first-letter", the first letter will be a drop-cap. &lt;/p&gt;
  2.  
  3. p.introduction:first-letter {
  4. font-size : 300%;
  5. font-weight : bold;
  6. float : left;
  7. width : 1em;
  8. }

CSS Drop Caps

11. Предотвращаем перенос ссылок на новую строку, блок вылазит за границы элемента
  1. a{
  2. white-space:nowrap;
  3. }
  4.  
  5. #main{
  6. overflow:hidden;
  7. }
12. Скролбар в фаерфоксе, убираем скролбар из textarea в IE
  1. html{
  2. overflow:-moz-scrollbars-vertical;
  3. }
  4.  
  5. textarea{
  6. overflow:auto;
  7. }

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

Оценка степени поддержки ООП в PHP

♦ Единичное наследование

Язык РНР обеспечивает наследование определения класса от другого класса с использованием конструкции extends. Наследуются и переменные экземпляра, и методы.

♦ Множественное наследование

Язык РНР не поддерживает множественное наследование, и в нем не реализовано так же понятие наследования интерфейса, как в языке Лача. Каждый класс может наслед вать свои определения не больше чем от одного родительского класса (хотя класс может применяться для реализации нескольких интерфейсов).

♦ Конструкторы

Каждый класс может иметь одну функцию-конструктор, которая в языке РНР носит имя __construct(). Обратите внимание на то, что перед именем функции стоят два символа подчеркивания. В версиях, предшествующих РНР5 (в которых применялось ядро Zend Engine 1), функция-конструктор класса имела такое же имя, как и класс, поэтом в языке РНР все еще допускается (но не рекомендуется) применять такой способ именования конструктора для обеспечения обратной совместимости. Конструктор родительского класса не вызывается автоматически, но долже� � быть вызван явно.
♦ Деструкторы
С версии РНР5 язык РНР поддерживает явно заданные деструкторы. Функция-деструктора класса всегда носит имя __destruct().
♦ Управление инкапсуляцией и доступом
Начиная с версии РНР5, язык РНР поддерживает открытые (public), закрытые (private и защищенные protected) переменные экземпляра и методы.
♦ Полиморфизм и перегрузка
Язык РНР поддерживает полиморфизм в том смысле, что позволяет использовать вместо экземпляров родительского класса экземпляры подкласса. Ввод в действие требуемого метода осуществляется на этапе прогона. Поддержка перегрузки методов, при которой ввод метода в действие осуществляется с учетом сигнатуры метода, отсутствует.Дело в том, что в каждом классе может присутствовать только один метод с определенным именем. Но благодаря тому, что в языке РНР применяется слабая типизация и поддерживается переменное количество параметров, по� �вляется возможность обойти это ограничение.
♦ Сравнение раннего и позднего связывания
На вопрос о том, применяется ли в языке РНР раннее или позднее связывание, можно дать два в равной степени одинаково правильных ответа: во-первых, этот вопрос не может возникнуть, поскольку в языке РНР не применяется строгая типизация, и, во-вторых все операции связывания являются поздними. В языке РНР значения являются типизированными, а переменные — нет, поэтому в отличие от многих других языков программирования не возникает вопрос о том, какой метод должен быть вызван, если переменная имеет тип, отличный от ее значения.
♦ Статические функции (или функции класса)
Начиная с версии РНР5, язык РНР предоставляет возможность использовать статические переменные и статические методы. Существует также возможность вызывать методы с помощью синтаксической конструкции Classname::function().
♦ Самодиагностика
Язык РНР предоставляет широкий перечень функций самодиагностики, в частности, он позволяет выявлять имена классов, имена методов и имена переменных экземпляра с помощью диагностирования полученного экземпляра.

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

Терминология ООП

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

Объект (называемый также экземпляром объекта или просто экземпляром). Отдельный экземпляр структуры данных, определяемый классом. Определение класса формулируется только один раз, после чего создаются все необходимые объекты, которые к нему принадлежат.

Переменная экземпляра (называемая также свойством, атрибутом или полем-членом). Один из именованных компонентов определения данных в определении класса.

Метод (называемый также функцией-членом). Компонент класса, который по своему назначению является функцией.

Наследование. Процесс определения класса на основе другого класса. На новый (дочерний) класс по умолчанию распространяются все определения переменных экземпляра и методов из старого (родительского) класса, но могут быть также определены новые компоненты или «переопределены» определения родительских функций и даны новые определения. Принято считать, что класс А наследует свои определения от класса В, если класс А определен на основе класса В указанным способом.

Родительский класс (или суперкласс, или базовый класс). Класс, определения которого унаследованы другим классом.

Дочерний класс (или подкласс, или производный класс). Класс, который наследует свои определения от другого класса.

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

UTF-8 и буквы “ш” и “И”

Пишу приложение, решил завязать его на UTF-8 - использую PHP5 СУБД MySQL 5, платформа Windows, Linux. И всё было бы хорошо - если бы вместо букв “И” и “ш” мне не выкидывало знаков вопроса. Погуглил пару часов, почитал форумы, советы - у всех упирается всё в задание кодировки соединения с базой данных типа

  1. mysql_query( 'set names utf8 );
  2. mysql_query ("set character_set_client='utf8'");
  3. mysql_query ("set character_set_results='utf8'");
  4. mysql_query ("set collation_connection='utf8_general_ci'");

но у меня то и база имеет кодировку utf8_general_ci поэтому нифига не помогло, пробывал колдовать с .htaccess - безрезультатно. Вобщем задолбали меня эти танцы с бубном и решил поступить, грубо но просто - заменять эти буквы их HTML-кодом:

  1. $str=str_replace("И","&#1048;",$str);
  2. $str=str_replace("ш","&#1096;",$str);

Теперь никаких проблем. Если вы знаете более разумные методы, то буду признателен если вы ими поделитесь

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