Блог переезжает на www.e64f.ru
Originally published at Записки веб. разработчика e64f. You can comment here or there.
Блог переезжает на www.e64f.ru
Originally published at Записки веб. разработчика e64f. You can comment here or there.
Блог переезжает на www.e64f.ru
Originally published at Записки веб. разработчика e64f. You can comment here or there.
Публикую сабж. Очень полезная штука, когда в проекте более одного программиста.
Содержание
I. Введение
1. Почему стандартизация так важна
2. Принятие стандарта
II. Формирование имён
3. Выбирайте правильные имена
4. Имена классов
5. Имена методов
6. Имена аргументов в методах
7. Имена переменных
8. Имена элементов в массивах
9. Одиночные и двойные кавычки
10. Глобальные переменные
11. Имена функций
III. Форматирование
12. Правила расстановки фигурных скобок
13. Правила расстановки скобок () рядом с операторами и функциями
14. Правила по отступам/табуляциям/пробелам
15. Форматирование блоков if then else
16. Формат switch
17. Использование continue, break и ?:
18. Выравнивание блоков объявления переменных
IV. Документация
19. Несколько комментариев по комментариям
20. Формат описания gotchas
21. Зарезервированные слова для описания gotchas
22. Документация интерфейсов и реализаций
23. Документация по директориям
V. Разное
24. Повторное использование кода
25. Временное комментирование больших блоков
Originally published at Записки веб. разработчика e64f. You can comment here or there.
1) Введение для новичков (в картинках)
2) История создания
3) Лицензия на использование CMS
4) Стандарты (кодирования, наименования компонентов, …)
5) Руководство по установке
6) Глоссарий
7) Руководство администратора сайта
Как сделать … (модуль, блок, тему …) или полное руководство разработчика
Originally published at Записки веб. разработчика e64f. You can comment here or there.
Давным давно начинал создавать свою собственную CMS, теперь настало время к ней вернуться.
Многие моменты переосмыслены.
Выкладываю изменённую схему.
Originally published at Записки веб. разработчика e64f. You can comment here or there.
Любой кто имеет в сети сайт, рано или поздно сталкивается с проблемой спама. Не в смысле почтового спама, а спама в гостевую книгу, форум, блог, вобщем везде, где посетители сайта могут оставлять свои сообщения. Сразу стоит сказать, что хотя и бывает, что спам рассылается вручную, т.е. живым человеком - это бывает редко, обычно это делает специальная программа, которая может: изменять свой IP адрес, распознавать каптча картинку, постить разные сообщения, отвечать на свои же сообщения, но уже под другим пользователем. И много чего еще, как говорится на каждую стандартную защиту находится программист, который сделает программу или модуль к программе и защита будет повержена.
Обычно защита от нежелательного программного постинга спама, делается с помощью каптчи, но проблема в том что в распространенных стандартных движках каптча тоже стандартна. И всегда находится заказчик, желающий проспамить те несколько миллионов форумов, где установлен стандартный форум с одной и той же картинкой защиты.
Перехожу к делу, короче говоря если хотите чтобы вас не спамили нужно делать свою уникальную каптчу. Если не можете сами программировать, наймите кого нибудь, думаю что цена в 50$ не такая высокая.
Как должна работать каптча
Встречал я в сети ресурсы, где спамеру вообще ничего не нужно было распознавать, текст написанный на картинке, в открытом виде засовывался в куки. Так делать непреемлемо, потому что данные кук, можно вытащить программно.
Встречал также ресурсы, где в куки записывали результат хеш функции md5 от строки что написана на картинке, ну эти ребята давали спамерам просто так проверку правильности распознавания, что тоже непреемлемо.
Правильно делать так, строка на картинке = str1 и строка в куках = str2, генерятся случайным образом независимо друг от друга. STR2 нужна для того чтобы передавать ее в форму в открытом виде. STR1 написана только на картинке каптча. Обе строки связаны между собой в таблице. Т.е. человек в скрытом поле формы(или куках) имеет STR2, STR1 введет с картинки, и когда форма отправится скрипту скрипт достанет из таблицы запись по STR2 и сравнит STR1 из таблицы и строку введенную пользователем.
Это было небольшое отступление от темы создание каптчи, просто нельзя делать вышеуказанные ошибки.
Делаем генератор картинок
Первое, что нужно сделать, это найти уникальный шрифт. Взял с полки диск с 1 000 000 шрифтов и вперед. Решил выбирать только из рукописных шрифтов, набралось около 20 штук.
Еще насчет шрифтов, можно использовать рандомом все 20 шрифтов, например каждый раз писать случайным фонтом все буквы. Можно каждый символ на картике писать случайно выбранным шрифтом. Я для себя решил писать всегда одним и тем же шрифтом, если начнется спаминг, просто сменю шрифт на следующий.
Теперь насчет шума. Всякие шумовые помехи встречаются почти на всех капчах. От себя скажу, из опыта программного распознавания капч, шум больше мешает человеку распознать каптчу, чем программе. Может быть поэтому на капче от гугла нет никаких шумов. Вобщем свою каптчу решил делать без шумов.
Исходный код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | <?php // Тип содержимого – картинка формата PNG header("Content-type: image/png"); // создаем картинку размером 130X40 $img=imagecreatetruecolor(180, 80) or die('Cannot create image'); // заполняем фон картинки белым цветом imagefill($img, 0, 0, 0xFFFFFF); $x=0; $i = 1; $sum = ""; $fonts = array( './BIRCH_C.TTF', './CHAMPGNE.TTF', './EASTSIDE.TTF', './GISMONDA.TTF', './OLGA_C.TTF', './RIVERSDE.TTF', './SSR56__C.TTF', './STAC222N.TTF', './STEVE.TTF', './VICTORIA.TTF' ); //$font = $fonts[rand(0, sizeof($fonts)-1)]; $font = './OLGA_C.TTF'; // выводим одну цифру за один проход цикла (всего 5 цифр) while ($i++ <= 5) { // выводим текст поверх картинки imagettftext( $img, // идентификатор ресурса rand(12,25), // размер шрифта в пикселях rand(-35,35), // угол поворота текста $x=$x+30, 25+rand(0,10), // координаты (x,y), соответствующие левому нижнему // углу первого символа imagecolorallocate($img, rand(0,128), rand(0,128), rand(0,128)), // цвет шрифта $font, // имя файла со шрифтом $rnd=rand(0,9)); // случайная цифра от 0 до 9 // Собираем в одну строку все символы на картинке $sum = $sum.(string)$rnd; } //Не забудьте $sum записать в таблицу как STR1 // выводим готовую картинку в формате PNG imagepng($img); // освобождаем память, выделенную для картинки imagedestroy($img); ?> |
Вот, что получилось

Вся работа заняла не более 30 минут.
Originally published at Записки веб. разработчика e64f. You can comment here or there.
Ездил на неделю в Санкт-Петербург, на курсы по JavaScript (проводил www.avalon.ru), купил там 4 книги
![]() |
JavaScript Народные советы Люблю книжки по программированию, которые разбирают проблемы (начал читать) |
![]() |
Информационная архитектура в интернете Редкое сочетание для книги по IT: легкого стиля изложения и высокой смысловой ценности |
![]() |
Оптимизация и продвижение сайтов в поисковых системах Год назад читал pdf файлы докладов с конференции господина Ашманова, недавно в читалке Sony Reader прочитал книгу Ашманова (записки-воспоминания о работе Ашманова в rambler.ru) “Жизнь внутри пузыря”, вобщем тема купленой книги и автор достаточно интересны |
![]() |
CMS Drupal руководство по разработке системы управления сайтом Давно мечтал купить такую книгу, подробный разбор концепций + листинги состоявшейся CMS |
Originally published at Записки веб. разработчика e64f. You can comment here or there.
Последнее время в основном работал в сотрудничестве в NMAN-ом над созданием распознавалок каптч.
Пора подвести итоги. Привожу примеры “сделанных” каптч.
![]() |
Форумный движок PHPbb 2 - хотя выпущена 3 версия все еще достаточно сильно распространен |
![]() |
Очень простая каптча, распознавание 100% |
![]() |
Очень простая каптча, распознавание 100% |
![]() |
выхлоп примерно 75% удачных распознаваний |
![]() |
выхлоп 100% удачных распознаваний |
![]() |
выхлоп примерно 80% удачных распознаваний |
![]() |
выхлоп примерно 75% удачных распознаваний |
![]() |
выхлоп примерно 99% удачных распознаваний |
![]() |
выхлоп 100% удачных распознаваний |
![]() |
выхлоп 100% удачных распознаваний |
![]() |
выхлоп примерно 75% удачных распознаваний |
![]() |
выхлоп примерно 95% удачных распознаваний |
![]() |
выхлоп 100% удачных распознаваний |
![]() |
выхлоп примерно 75% удачных распознаваний |
![]() |
выхлоп примерно 85% удачных распознаваний |
![]() |
выхлоп 100% удачных распознаваний |
![]() |
выхлоп примерно 85% удачных распознаваний |
![]() |
выхлоп примерно 99% удачных распознаваний |
Результатами данных работ стали не только сами программы распознавания, но и отладка технологий распознавания каптч как таковых. ![]()
Originally published at Записки веб. разработчика e64f. You can comment here or there.
За последние полтора года зп PHP программеров изрядно подросли. В Москве уже не так редка сумма превышающая 2500 $. А удаленно предлагают 1000$ для начинающего студента, 1500$ для человека кто разберется в какой нибудь CMS или сможет сопровождать движок магазина, 2000$ предлагают за удаленную работу высококласного PHP программиста.
Это просто праздник какой-то (ц) Карабас-Барабас
Originally published at Записки веб. разработчика e64f. You can comment here or there.
По причине того что поисковики выдают много мусора на запросы типа Курсы Java или Обучение Oracle.
Вобщем публикую, может кому пригодится:
http://www.avalon.ru/
http://www.microinform.ru/
http://www.specialist.ru/
http://academy.it.ru/
http://edu.softline.ru/
http://www.academy.ru/
http://www.hth.kz/
http://www.sibinfo.ru/
http://www.cift.ru/
http://www.redcenter.ru/
http://www.limtu.spb.ru/
http://www.education.ru/
http://www.fors.com/
http://www.ucit.ru/
http://www.konto-spb.ru/
Список никак не ранжирован.
Originally published at Записки веб. разработчика e64f. You can comment here or there.
Не помню как забрел на блог Ивана Склярова, но читать мне его понравилось.
И в одном из постов Иван предлагает бесплатно взять скрипт генерации капчи http://www.sklyaroff.ru/comm.php?mess=8
И вот что я ему написал в коментарий:
2008-07-11 08:41:23 e64f пишет:
Добрый день!
Ваша капча картинка относится к разряду примитивных.
Могу на спор сделать программу распознавалку ваших картинок за 2 дня.
Если интересует, то вот инфо для связи
————————————–
Почта: VMatvienko@gmail.com
Сайт: vmatvienko.foxhole.ru
С уважением Матвиенко Валерий.
На что последовал ответ:
Напиши, посмотрим.
Заняло это правда чуть больше 2 дней, по причине того, что большой загруз на работе.
Представляет из себя консольное приложение которому на вход подается путь к картинке, а приложение выдает что на картинке написано.
О тонкостях реализации пожалуй умолчу. )
Вот видео 2 мб. http://vmatvienko.foxhole.ru/captcha.avi с доказательством.
Еще хочу сказать, что делал все это я не один, а нас сейчас двое, наши ники e64f и nman.