
Быстрый поиск
Введите фрагмент названия статьи для поиска
Генератор текста на основе цепей Маркова
18.12.2010 | Категория: Web-мастеру и не только | Автор: ManHunter
В web-строительстве и SEO цепи Маркова используются для генерации псевдоосмысленных текстов на основании исходных текстов. Это используется для штамповки дорвеев с заданными ключевыми словами, для набора контентной текстовой массы и тому подобным "черным" трюкам. К счастью, поисковые системы научились эффективно определять контент, созданный на основе цепей Маркова и отправляет таких умников в бан. Учить вас подобным технологиям я не собираюсь, для этого есть специальные говносайты, меня интересует только программная реализация алгоритма.
Цепью Маркова называется последовательность испытаний, в каждом из которых появляется только одно из k несовместных событий Ai из полной группы. При этом условная вероятность pij(s) того, что в s-ом испытании наступит событие Aj при условии, что в (s - 1) - ом испытании наступило событие Ai, не зависит от результатов предшествующих испытаний.
Желающие повзрывать свой головной мозг могут почитать про математическую модель. На человеческом языке все эти формулы сводятся к следующему. В исходном тексте определяются слова и сохраняется последовательность, какие слова идут за какими. Затем на основании этих данных создается новый текст, в котором сами слова выбраны случайно, но сохранены связи между ними. Для примера возьмем детский стишок:
Из-за леса, из-за гор
едет дедушка Егор:
сам на лошадке,
жена на коровке,
дети на телятках,
внуки на козлятках.
Разберем текст на звенья и связки
из-за [леса, гор]
леса [из-за]
гор [едет]
едет [дедушка]
дедушка [Егор]
Егор [сам]
сам [на]
на [лошадке, коровке, телятках, козлятках]
лошадке [жена]
жена [на]
коровке [дети]
дети [на]
телятках [внуки]
внуки [на]
Звенья в этом списке представляют собой уникальные слова из текста, а в квадратных скобках перечислены связи - список слов, которые могут располагаться после этого слова.
Читать статью целиком »
Просмотров: 40333 | Комментариев: 25
Делаем быстрые и красивые превьюшки
02.12.2010 | Категория: Web-мастеру и не только | Автор: ManHunter
При работе с графикой, а именно при создании различных онлайн-галерей, при работе с прикрепленными к статьям файлами в CMS, требуется создание так называемых превьюшек - пропорционально уменьшенных копий изображений. Они могут создаваться динамически или храниться на диске в виде отдельных файлов, все зависит от конкретной задачи. Рассмотрим несколько способов создания превьюшек и сравним их производительность.
Сравнение способов создания превьюшек
Для тестов была взята фотография размером 3468 х 2736 пикселов, глубина цветности 24 бита. Цель - разными способами сделать из нее превьюшку размером 200 x 150 пикселов и сохранить результат в файл JPG с наилучшим качеством. Тестовые фрагменты кода максимально облегчены, все размеры и названия файлов захардкодены прямо в исходники. Время выполнения тестов и объем занятой памяти соответствуют моему ноутбуку, эти значения приведены только для сравнения, так что не удивляйтесь, если ваши цифры будут отличаться.
Читать статью целиком »
Просмотров: 8458 | Комментариев: 3
Проверка доступности функции PHP
23.09.2010 | Категория: Web-мастеру и не только | Автор: ManHunter
Ковырялся как-то в очередном сплойте, которым скрипткиддисы пытались проломить блог. Среди всякого говна нашел там интересную идею о проверке доступности функций PHP перед их вызовом. Реализация была такая же кривая, как и весь остальной код этих быдлохакеров, поэтому я переписал функцию проверки по-своему. Проверка выполняется тремя способами: анализом значения параметра disable_functions в файле php.ini, а также через функции PHP function_exists и is_callable. Использование всех трех способов проверки дает абсолютно точный результат.Code (PHP) : Убрать нумерацию
- //--------------------------------------------------------------------------
- // Функция проверки существования и доступности другой функции PHP
- //--------------------------------------------------------------------------
- // Параметры: $func - строка имени функции
- // На выходе: true - функция есть и доступна для вызова,
- // false - функция недоступна по какой-либо причине
- //--------------------------------------------------------------------------
- function is_function_enabled($func) {
- $func=strtolower(trim($func));
- if ($func=='') return false;
- // Получить список функций, отключенных в php.ini
- $disabled=explode(",",@ini_get("disable_functions"));
- if (empty($disabled)) {
- $disabled=array();
- }
- else {
- // Убрать пробелы и привести названия к нижнему регистру
- $disabled=array_map('trim',array_map('strtolower',$disabled));
- }
- // Проверить доступность функции разными способами
- return (function_exists($func) && is_callable($func) &&
- !in_array($func,$disabled)
- );
- }
Code (PHP) : Убрать нумерацию
- // Проверка доступности функции shell_exec
- if (is_function_enabled('shell_exec')) {
- echo shell_exec('ping yandex.ru');
- }
Просмотров: 8001 | Комментариев: 5
Определение MIME-type файла по его расширению
03.07.2010 | Категория: Web-мастеру и не только | Автор: ManHunter
MIME - Multipurpose Internet Mail Extension - стандарт для определения типа передаваемой информации и механизмов ее обработки. Он сообщает браузерам о том, как им надо обращаться с запрошенными файлами, имеющими то или иное расширение. Так, например, если сервер отдает браузеру в заголовках тип MIME "text/html" для файлов с расширениями htm, html и shtml, то браузер интерпретирует все файлы с этими расширениями как файлы HTML. Также очень желательно передавать корректный MIME-type при отдаче файлов скриптом в антилич-системах.Недавно я ковырялся в одной коммерческой CMS с закрытым кодом и нашел там одну полезную функцию с большим списком MIME-типов для различных расширений файлов (всего около 400). Реализация самой функции была сделана ужасно, поэтому я ее тут даже приводить не буду. Список я немного почистил и сохранил в удобном для работы виде. Функцию тоже переписал:
Code (PHP) : Убрать нумерацию
- //----------------------------------------------------------
- // Функция определения MIME-типа файла по его расширению
- //----------------------------------------------------------
- function get_mime_type($ext) {
- // Массив с MIME-типами
- global $mimetypes;
- // Расширение в нижний регистр
- $ext=trim(strtolower($ext));
- if ($ext!='' && isset($mimetypes[$ext])) {
- // Если есть такой MIME-тип, то вернуть его
- return $mimetypes[$ext];
- }
- else {
- // Иначе вернуть дефолтный MIME-тип
- return "application/force-download";
- }
- }
Читать статью целиком »
Просмотров: 16966 | Комментариев: 9
Исследование защиты программы PHP Locker
21.05.2010 | Категория: Темная сторона Силы | Автор: ManHunter

Скриншот программы PHP Locker
В поисках очередных пациентов для PHPiD наткнулся на софтину под названием PHP Locker. "Мощная программа для шифрования ваших PHP-скриптов. Она превращает исходный код в нечто трудное для понимания и реверсивного исследования. В отличие от других систем шифрования, не требует установки дополнительных модулей на серверную часть". Это мнение о программе самих разработчиков, так что "мопед не мой, я просто разместил объяву" :) Там же на офсайте вывешен целый иконостас орденов и медалей, коими наградили этот продукт различные популярные софтообозревательные сайты. И да, к слову, цена за персональную лицензию 180$, а за корпоративную аж все 2800$.
Читать статью целиком »
Просмотров: 5832 | Комментариев: 15


