среда, 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="15height="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);

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

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

Разница в ООП между PHP4 и PHP5

Объекты в PHP5 очень сильно отличаются от объектов в PHP4. В PHP5 ООП стал действительно более совершенным. ООП был представлен ещё в 3й версии PHP но это тяжело было назвать настоящим объектно ориентированным программированием. В PHP4 вы можете создавать объекты, но вы не можете почувствовать все прелести объектов. В PHP4 объектная модель была на примитивном уровне.
Одним из основных отличий ООП между 4й и 5й версиями PHP это то что в PHP4 - всё открыто(свойства, методы); нет никаких ограничений на использование методов и свойств. Методы доступа public, private и protected для методов появились только в 5й версии PHP. В PHP4 разработчики обычно объявляли private методы двойным подчёркиванием(__cal()). Но это не означает что объявление метода таким образом защищало его от доступа извне класса. Это всего лишь соблюдение правил.

В PHP4 вы можете встретить такие значения как interfaces но не ключевые слова как abstract или final. Интерфейс это кусок кода который любой объект может приводить в дейтсвие а это значит что объект может получить доступ ко всем методам объявленным в интерфейсе.

В интерфейсе вы можете только объявить имена и типы доступов к любому методу. В абстрактном классе различные объекты также могут иметь одинаковые методы.
Тогда любой объект может расширять абстрактный класс и изменять все методы объявленные в абстрактном классе. Финальный класс(final class) это объект который вы не можете изменять.
В PHP5 вы можете использовать всё вышеописанное.
В PHP4 нет возможности группового наследования для интерфейсов. В PHP5 групповое наследование реализуется благодаря объединению групповых интерфейсов вместе.
В PHP4, почти всё является статичным (static). Это значит если вы объявили какой-либо метод в классе, то вы можете вызывать его напрямую без создания его экземпляра класса. Для примера давайте рассмотрим часть кода написанного для PHP4:

  1. < ?
  2. class Abc
  3. {
  4.   var $ab;
  5.   function abc()
  6.   {
  7.     $this->ab = 7;
  8.   }
  9.   function echosomething()
  10.   {
  11.     echo $this->ab;
  12.   }
  13. }
  14. echo abc::echosomething();
  15. ?>

В любом случае этот код будет неправильным для PHP5 так как метод echosomething() использует ключевое слово $this которое недоступно для static вызовов.

В PHP4 нет констант для классов. Нет свойства static в объектах, а так же нет деструктора.
Когда объект копируется,создается поверхностная копия объекта. Но в PHP5 поверхностное копирование возможно благодаря ключевому слову clone.
В PHP4 нет обработки исключительных ситуаций. А в PHP5 обработчик исключительных ситуаций является незаменимой возможностью.
В PHP4 есть кое-какие возможности по исследованию методов и свойств в классах, но в PHP5 помимо этих функций есть мощный API который предназначен для этих целей.
Перегрузка методов посредством __get() и __set() доступна только в PHP5. Так же в PHP5 очень много встроенных объектов, созданных для того что бы сделать вашу жизнь проще.

Но больше всего радует огромное количество улучшений ООП в PHP5.

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

Поиск одинаковых ссылок в базах

Часто ли вы сталкиваетесь с задачей - когда есть 2 немалых списка ссылок, и нужно найти одинаковые, или же наоборот - соеденить их и отсеить дубли. Лично я частенько, и решил на помощь призвать PHP.

< ? $file_array = file( "1.txt" ); //первый список с ссылками $file2_array = file( "2.txt" ); // второй список foreach($file2_array as $file) { 	if(in_array($file,$file_array))	echo $file.'‘; // если в первом списке находится ссылка со второго то выводим её в браузер } ?>

Вообще это самый примитивный пример, дальше расширяйте каждый по своим нуждам, обратите внимания что если в одном списке www.webphp.ru а в другом webphp.ru - то скрипт посчитает их разными, поэтому используйте функции для работы со строками - что бы привести все ссылки к единому виду.

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

Создание Web 2.0 меню за 5 минут

Давно хотели себе стильное Web 2.0 меню на сайт? Теперь вам не придётся разбираться в CSS, JavaScript и искать заготовки для кнопок.

Благодаря онлайн сервису http://www.izzymenu.com/ вы сможете создать стильное Web 2.0 меню потратив на это не больше 5 минут времени, если же у вас с фантазией совсем туго - то можете использовать уже готовое меню из каталога, замечю что в каталоге довольно много интересных менюшек. Сервис позволяет создавать как вертикальные, так и горизонтальные меню различной степени сложности - простые, закладочные, иерархические меню.

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

воскресенье, 27 апреля 2008 г.

Иконки кредиток для онлайн-магазинов

Официальные иконки кредитных карт

Ниже представлена подборка бесплатных иконок с официальных сайтов PayPal, MasterCard и других.

PayPal Online Logo Center предлагает на выбор 3 типа иконок, среди них логотипы, значки приёма средств и эмблемы различных размеров.

Мастеркард предоставляет нам Brand Materials. Но для того что бы скачать иконки придётся зарегистрироваться.

American Express предлагает Logos & Supplies. Более 20 вертикальных и горизонтальных логотипов, эмблем и изображений доступно для скачивания. Но для того что бы скачать их вам необходимо ввести номер вашего merchant аккаунта.

Наконец и виза порадовала нас -  Downloadable Assets — карты, логотипы, фотографии для различных регионов.


Иконки и паки иконок кредиток

Free Credit Card Logos & Images в сборке свыше 75 иконок кредиток — Visa, Mastercard, American Express, Discover Card, PayPal, а так же комбинированные иконки. Так же дополнительно сможете найти иконки близкие по теме — вид проверочного кода на кредитке и т.д.

VirtuaLNK Credit Card Icons набор 3D иконок которые будут стильно смотреться на любом сайте. В сборник включены следующие иконки - Visa, MasterCard, Discover, Amex, e-Check и PayPal. Размеры иконок 48×48px и 72×72px. Иконки доступны в различных форматах — icns, ico, bmp, gif, png и jpg весь сборник весит порядка 12 Mb.

Images Of Credit Cards: классические иконки различных размеров.

Kjelle20's Credit Cards иконки кредиток SweBank в 5 различных цветах. Размеры 256×256px.

Credit Cards Pixel Iconset новая подборка из 4 иконок и пустого шаблона. Исходник в PSD формате.

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