Блог О пользователеmihal4

Регистрация

Календарь

« Январь 2012  
Пн Вт Ср Чт Пт Сб Вс
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

Нечто о всём почуть чуть

 
Здесь вы найдёте много интересного
 

Смотри, я думаю слова излишни


Смотри, я думаю слова излишни


 

5 лучших книг по PHP


Как-то так получилось, что привык я учится по книгам больше. Наверное со школы отложилось — учебник = знания. Хотя вру малехо, в школе толком не учился… Да не о том речь.
Конечно, хватит и мануала с парой форумов, чтобы выучить PHP на приличном уровне. Но все же напишу 5 книг на русском языке, которые я считаю лучшими.




1. PHP 5 для начинающих. Дэйв Мерсер, Аллан Кент, Стивен Новицки
Очень толковая и подробная книга описывающая азы в PHP5. Кроме стандартных глав об установке PHP, синтаксиса, операторов и т.д. рассмотрена работа с XML, основы ООП и использование UML диаграмм.








 2. PHP 5. Объектно-ориентированное программирование. Питер Ловэйн
Хорошая книга для тех кто вообще не знаком с объектно-ориентированным программированием. По порядку, шаг за шагом, от простого к сложному вам расскажут, покажут и научат основам этого самого ООП. Притом довольно простым языком. Рекомендую новичкам после изучения основ.








 3. PHP. Рецепты программирования.  Д. Скляр, А. Трахтенберг
Эта книга должна быть у каждого начинающего PHP-программиста на столе. Книга представляет сборник решений самых распространенных задач на PHP. То, что раскинуто на многочисленных форумах собранно под одной обложкой. В общем, в начале своего пути вы каждый день будете заглядывать в эту книгу. Единственный совет — покупайте второе издание.








4. PHP 5. Профессиональное программирование. Энди Гутманс, Стиг Баккен, Дерик Ретанс
И так переходим к книгам для повышения профессионального уровня.  Авторы книги, так сказать, стоят у руля развития PHP. Энди Гутманс — ведущий разработчик РНР 5, Стиг Баккен — создатель PEAR и Дерик Ретанс — лидер группы тестирования РНР. У этих ребят есть чему поучится. От основ ООП и шаблонов проектирования до создания веб-сервис приблизительно такой круг затрагиваемых вопросов в книге.






5. Профессиональное программирование на PHP. Джордж Шлосснейгл
Ещё один гранд-мастер мира PHP. Эта книга стоит особняком. Уровень вопросов рассматриваемых в ней — это уровень приложений масштаба предприятия. Методики ООП, блочное тестирование, вопросы безопасности, методы и технологии кеширования, работа под высокой нагрузкой, кластеризация приложений и баз данных и много чего ещё рассмотрено на страницах этой далеко не легко читаемой книги. В общем для тех кто уже в теме :)





 Подведя итог, можно сказать что кто сподвигнется изучить хотя бы половину этих книг будет в состоянии заработать себе на кусок хлеба. И не надо говорить что PHP маздай, а Java форева. Лично мне глубоко насрать на то, что кто-то думает о PHP…
 

Геймерам. Увеличение скорости работы USB-мыши, с помощью повышения опросов USB-порта.


 



Вы любите играть в игры, где важна быстрота реакции, но Ваша USB-мышь не относится к классу игровых мышек — просто увеличьте частоту опросов USB мыши. Например: игровая мышь  имеет частоту опроса равную 530 MHz, а обычная (моя) 125 MHz. после следующих действий ваша мышь станет быстрей игровой в 2 раза (частота 1000 MHz)




Для установки необходимы права локального администратора.

1) Скачайте архив MouseRate.zip и распакуйте его в папку.
2) Откройте папку Direct Input Mouse Rate и в ней запустите программу dimr.exe
3) Подвигайте максимально быстро курсором Вашей мыши по экрану.
4) Запомните значение из графы Peak - это максимальная величина опросов Вашей мышки.
5) Откройте папку HIDUSBF
6) Нажмите правой кнопкой мыши на файл HIDUSBF.INF и выберите пункт Установить.
7) Запустите файл setup.exe Найдите там свою мышку (она там подсвечена синим цветом) и внизу окна поставьте галочку на «Filter On Device» и поставьте там свой rate(допустим 1000), который вам нужен.
8) Нажмите на «Restart» и снова откройте dimr.exe. Если у вас до сих пор там стоит Ваше старое значение, то перезагрузите компьютер еще раз.


 

Использование всей оперативной памяти в 32-битных Windows


Часто встречался в сети с жалобами пользователей 32х битных виндовс, мол не видит оперативку более ~3х гб вот решение этого недостатка:

1. 3апустить ReadyFor4GB.exe.
2. Нажать на кнопку Check, затем на кнопку Apply.

3. Запустить AddBootMenu.cmd и нажать Y.
4. Перезагрузить компьютер и вам станут доступны все 4 ГБ оперативки на вашей установленной ОС Windows 7 (x86), или если у вас установлено более >4ГБ, то ваш объем оперативной памяти также станет доступен в полном объеме без ограничений…
5. После применения патча у вас сбросится оценка производительности Windows, можно снова её оценить (процедура не более 10 секунд), и появится в нижнем правом углу две надписи, которые можно убрать патчем «RemoveWatermarkX86.exe», запустить и нажать Y.

Примечание: Файлы обязательно запускать с правами администратора, запускайте этот скрипт строго в операционной системе Windows 7 x86 (32-Bit) для которой вам нужно снять ограничение.

 

Недавно прислали в контакте две замечательные на мой взгляд мувика про CS 1


Недавно прислали в контакте две замечательные на мой взгляд мувика про CS 1.6. Сам я яростный игрок в эту игру. Но что вытворяет этот человек, меня поразило в шок. Он реально
самый лучший игрок 2011 года.
Вот мува 2010 года его.



Это сделано уже известным редактором мувиков для CS и не только.
В этой муве уже был замечен игрок под именем KOT3!



Вот видюшка уже 2011 года с ЧМ по CS 1,6 и отзывы игроков про KOT3.

Так что нам яростным игрокам в CS еще далеко до таких людей :)


Да, и не стоит относиться ко всему серьезно, как этот парень



Качаем скил и набиваем руку :)

 

Стартовал мой блог


Это первая запись в моем зарегистрированом блоге, и она ниочем. ждите новых записей…

 

Пример программы тестирования на php


На этот раз я постараюсь вместе с вами написать программу для тестирования.
Придумал я её как-то случайно. Вернее не совсем случайно… Так как я учусь на бухгалтера, то рано или поздно приходится в этой профессии учить план счетов хозяйственной деятельности. А это, как известно, удаётся не всем с первой попытки, а обычно запоминается со временем в процессе практики. Я решил этот процесс как-то ускорить, и тут — то мне и пригодились мои навыки программирования:)  Почему-то в голову сразу пришла телевизионная игра «Кто хочет стать миллионером?», в ней я увидел по какому принципу будет работать моя предвкушаемая программа. Все довольно просто, давайте я опишу алгоритм нашего тестирования, он не так уж и сложен, но описать его стоит.
Сразу хочу поделить программу на несколько частей для лучшего понимания логики:
1-я часть это работа с Cookies. Куки мы будем использовать для ведения статистики (кол-во правильных и не правильных ответов).
2-я часть это будет массив с данными, ключи будут являться номером бух. счета а значения соответственно названием счета.
3-я выборка из массива 4-х случайных элементов (пар ключ = > значение, нужно для формирования вариантов ответа), а также из этих выбранных значений берется одно для составления вопроса (мы будем знать, что среди четырех вариантов ответа будет один верный)
4-я часть с помощью GET — глобальной переменной узнаем нажал ли пользователь на выбранный им ответ если да, то при помощи значения той же самой GET переменной определяем верность ответа, если он верный, то увеличиваем счетчик для верных ответов на +1 (изменяем кукис инкрементом) и пишем пользователю, что он ответил верно, и соответственно при неверном ответе увеличиваем счетчик для неверных ответов и пишем юзеру что он ответил неверно, при этом показывая ему верный ответ.
5-я часть это и есть форматирование на экране наших вариантов ответов в виде ссылок.
В принципе это всё. Если кто-то скажет, что эту систему можно легко обмануть (удалить кукис или например подсмотреть правильный ответ view- >source), да я знаю:-) Я не ставил перед собой цель написать программу для широкого круга пользователей и если вы кого-то обманете, то только себя.

Итак, сам код:


Программа тестирования





< ?

if(empty($_COOKIE['verno'])){ //если кукис под именем 'verno' пуст, то

  
setcookie('verno''0');   // устанавливаем его со значением 0

// и так же
if(empty($_COOKIE['neverno'])){ //если кукис под именем 'neverno' пуст, то

  
setcookie('neverno''0');   // устанавливаем его со значением 0
}



if(
$_GET['act'] == 'reset'){ // если GET переменная с именем 'act' усрановлена и равна 'reset' , то

    //обнуляем все счеткики

    
setcookie('verno''0');

    
setcookie('neverno''0');

    
//и обновляем страницу

    
header(«location:»);

}
$test = array( // наш массив с данными для составления тестов

//номер бух. счета = > название бух. счета
«01» = > «Основные средства»,
«02» = > «Амортизация основных средств»,
«03» = > «Доходные вложения в материальные ценности»,
«04» = > «Нематериальные активы»,
«05» = > «Амортизация нематериальных активов»,
«07» = > «Оборудование к установке»,
«08» = > «Вложения во внеоборотные активы»,
«09» = > «Отложенные налоговые активы»,
«10» = > «Материалы»,
«11» = > «Животные на выращивании и откорме»,
«14» = > «Резервы под снижение стоимости материальных ценностей»,
«15» = > «Заготовление и приобретение материальных ценностей»,
«16» = > «Отклонение в стоимости материальных ценностей»,
«19» = > «Налог на добавленную стоимость по приобретенным ценностям»,
«20» = > «Основное производство»,
«21» = > «Полуфабрикаты собственного производства»,
«23» = > «Вспомогательные производства»,
«25» = > «Общепроизводственные расходы»,
«26» = > «Общехозяйственные расходы»,
«28» = > «Брак в производстве»,
«29» = > «Обслуживающие производства и хозяйства»,
«40» = > «Выпуск продукции (работ, услуг)»,
«41» = > «Товары»,
«42» = > «Торговая наценка»,
«43» = > «Готовая продукция»,
«44» = > «Расходы на продажу»,
«45» = > «Товары отгруженные»,
«46» = > «Выполненные этапы по незавершенным работам»,
«50» = > «Касса»,
«51» = > «Расчетные счета»,
«52» = > «Валютные счета»,
«55» = > «Специальные счета в банках»,
«57» = > «Переводы в пути»,
«58» = > «Финансовые вложения»,
«59» = > «Резервы под обесценение финансовых вложений»,
«60» = > «Расчеты с поставщиками и подрядчиками»,
«62» = > «Расчеты с покупателями и заказчиками»,
«63» = > «Резервы по сомнительным долгам»,
«66» = > «Расчеты по краткосрочным кредитам и займам»,
«67» = > «Расчеты по долгосрочным кредитам и займам»,
«68» = > «Расчеты по налогам и сборам»,
«69» = > «Расчеты по социальному страхованию и обеспечению»,
«70» = > «Расчеты с персоналом по оплате труда»,
«71» = > «Расчеты с подотчетными лицами»,
«73» = > «Расчеты с персоналом по прочим операциям»,
«75» = > «Расчеты с учредителями»,
«76» = > «Расчеты с разными дебиторами и кредиторами»,
«77» = > «Отложенные налоговые обязательства»,
«79» = > «Внутрихозяйственные расчеты»,
«80» = > «Уставный капитал»,
«81» = > «Собственные акции (доли)»,
«82» = > «Резервный капитал»,
«83» = > «Добавочный капитал»,
«84» = > «Нераспределенная прибыль (непокрытый убыток)»,
«86» = > «Целевое финансирование»,
«90» = > «Продажи»,
«91» = > «Прочие доходы и расходы»,
«94» = > «Недостачи и потери от порчи ценностей»,
«96» = > «Резервы предстоящих расходов»,
«97» = > «Расходы будущих периодов»,
«98» = > «Доходы будущих периодов»,
«99» = > «Прибыли и убытки",

);


// таблица стилей
$style "

a:link,

a:active,

a:visited {

    color:#07A;

    text-decoration:none;

    font-size:16px;

}

a:hover,

a:focus {

    font-size:16px;

    text-decoration:none;

    color:orange;

    border:0px solid orange;

}

div {

    max-width:480px;

    border-left:1px solid #edf7fa;

    margin:auto;

    padding:5px;

}

»
;


// определяем кол-во элементов в массиве с помощью функции count()
$col count$test );


//Выбираем из массива 4 элемента для составления теста
$rand_keys array_rand($test4);


//Выбираем один елемент для формирования вопроса
$vopros $rand_keys[1];


//перемешиваем массив в вариантами ответов
shuffle($rand_keys);





if(
$_GET['act'] == 'obr'){ // если GET переменная с именем 'act' установлена и равна 'obr', то

  
if($test[$_GET['num']] == urldecode($_GET['name'])){ //

    
setcookie('verno', ++$_COOKIE['verno']);

    echo 
$style;

    echo
«Ответ верный!
\n";

  }

  else{

    
setcookie('neverno', ++$_COOKIE['neverno']);

    echo 
$style;

    echo 
«Ответ неверный!
 Счет " 
$_GET['num'] . " называется "$test[$_GET['num']] . "

\n";

  }

}
// формирование вопроса и вариантов ответов
echo "
  Верно отвеченно: " $_COOKIE['verno'] . " раз(а) 
  Неверно отвеченно: " 
$_COOKIE['neverno'] . " раз(а)
";

echo 
"
Обнулить счетчик
";



echo 
«Cчет  " $vopros ."  относят к:
\n";



echo 
«a) $vopros ."&name=» urlencode($test[$rand_keys[0]]) . »' >" $test[$rand_keys[0]] . "
\n";

echo 
«b) $vopros ."&name=» urlencode($test[$rand_keys[1]]) . »' >" $test[$rand_keys[1]] . "\n";

echo 
«c) $vopros ."&name=» urlencode($test[$rand_keys[2]]) . »' >" $test[$rand_keys[2]] . "\n";

echo 
«d) $vopros ."&name=» urlencode($test[$rand_keys[3]]) . »' >» $test[$rand_keys[3]] . »\n»;
? >
//конец программы


 

Что такое регулярные выражения PCRE описание с примерами


Регулярные выражения

    Регулярные выражения - мощное, гибкое, и эффективное средство обработки текстов. Универсальные шаблоны регулярных выражений сами по себе напоминают миниатюрный язык программирования, предназначенный для описания и разбора текста. Они способны вставлять, удалять и выполнять самые невероятные операции с текстовыми данными любого вида.
    Регулярные выражения пришли к нам из Unix и Perl. В PHP существует два различных механизма для обработки регулярных выражений: POSIX-совместимые и Perl-совместимые. Их синтаксис во многом похож, однако Perl-совместимые регулярные выражения более мощные и, к тому же, работают намного быстрее (в некоторых случаях до 10 раз быстрее). Поэтому здесь мы будем вести речь только о Perl-совместимых регулярных выражениях. Кстати, необходимо заметить, что полное описание синтаксиса регулярных выражений, имеющееся в PHP Manual (http://www.php.net/manual/en/pcre.pattern.syntax.php), занимает более 50 килобайт и, естественно, здесь мы не будем рассматривать весь синтаксис. Нам необходимы только основы, которые помогут вам понять, как именно пишутся регулярные выражения.
    Регулярные выражения откроют перед вами возможности, о которых вы, возможно, даже и не подозревали.
Приведу простой пример. Однажды мне потребовалось вырезать из множества html файлов все ссылки, точнее не из множества, а из 6209 файлов. Но я не сумасшедший, что-бы сидеть открывать каждый файл, искать ссылки, копировать, вставлять, потому что я знаю регулярные выражения и мне понадобилось всего лишь пять минут что-бы составить шаблон для поиска ссылок. Заманчиво, да? Еще бы, как это вам может облегчить жизнь и какую пользу может принести!
    Итак, регулярное выражение состоит из двух типов символов. Первый тип символов это — специальные символы, которые называются метасимволами, они выполняют роль грамматических элементов. Второй тип символов — называют литералами, они выполняют функцию слов. Благодаря этим символам регулярные выражения можно рассматривать как самостоятельный язык программирования. На первый взгляд регулярные выражения производят устрашающее впечатление, или воспринимается как непонятный набор разных букв:), но не бойтесь, большие регулярные выражения строятся из маленьких «кирпичей». Сами по себе эти «кирпичи» просты, но в сочетании друг с другом они образуют бесконечное множество комбинаций, поэтому нужен определенный опыт чтобы видеть сквозь пальцы все незамысловатые конструкции.


Метасимволы

!    Запомните к Метасимволам относятся следующие символы:

"\», ".», "^», "$», "|», "[», "]», "(», ")», "*», "+», "?», "{», "}»,

соответственно к литералам все кроме вышеперечисленных.
  
    Различные метасимволы выполняют в регулярном выражении различные функции, в частности, используются для обозначения одиночного символа или их группы, обозначают привязку к определенному месту строки, число возможных повторений отдельных элементов, возможность выбора из нескольких вариантов и т. д.
_______________________________________________________

(/)    Для использования в операциях в качестве образца регулярное выражение заключается между двумя одинаковыми символами-ограничителями. Часто в качестве ограничителя используется символ "/» (косая черта). Например, образцу /php/ будут соответствовать все строки, содержащие слово php.
_______________________________________________________

(\)    Если, в регулярном выражении какой-либо метасимвол требуется использовать в буквальном, а не специальном значении, его нужно экранировать или маскировать при помощи другого метасимвола — "\». Например, образцу /\\\*/ соответствует фрагмент текста \*. Здесь первый метасимвол "\» экранирует второй метасимвол "\», а третий метасимвол "\» экранирует метасимвол "*».
_______________________________________________________

(.)    Метасимвол ".» представляет любой одиночный символ, кроме символа новой строки. Так, образцу /./ будет соответствовать любая не пустая строка. Если в операциях сопоставления с образцом установлен флаг s, то метасимволу ".» соответствует также и символ новой строки.
_______________________________________________________

([…])    Метасимвол "[» совместно с "]» используется в конструкции […] для представления любого одиночного символа из числа заключенных в скобки, т. е. он представляет класс символов. Два символа, соединенные знаком минус, задают диапазон значений, например, [A-za-z] задает все прописные и строчные буквы английского алфавита. Если первым символом в скобках является символ "^», вся конструкция обозначает любой символ, не перечисленный в скобках. Например, [^0—9] обозначает все не цифровые символы.
_______________________________________________________

(^$)    Метасимволы "^» и "$» используются для задания привязки к определенному месту строки. Метасимвол "^» в качестве первого символа регулярного выражения обозначает начало строки. Метасимвол "$» в качестве последнего символа регулярного выражения обозначает конец строки. Например, следующим образцам соответствуют:
/^$/ — пустая строка (начало и конец, между которыми пусто); /^php/ — слово php в начале строки; /php$/ —слово php в конце строки.
_______________________________________________________

(|)    Метасимвол "|» можно рассматривать как символ операции, задающей выбор из нескольких вариантов (подобно логической операции ИЛИ). Например, образцу /а|б|в/ соответствует фрагмент текста, содержащий любой из символов а, б, в, Если вариантами выбора являются одиночные символы, как в данном примере, то лучше использовать конструкцию, определяющую класс символов, в данном случае [abc]. Но в отличие от конструкции […] операция "|» применима и тогда, когда вариантами выбора являются последовательности символов. Например, образцу /Word|Excel|windows/ соответствует фрагмент текста содержащий любое из слов Word, Excel, Windows.
_______________________________________________________

(()) Субпатэрны ограничены скобками (круглыми), которые могут вкладываться. Маркировка части патэрна как субпатэрна выполняет два действия:
1. Локализует набор альтернатив. Например, патэрн
/дом(ашний|а|)/ совпадает с одним из слов: «дом», «домашний» или «дома». Без скобок он совпадёт с «домашний», «а» или с пустой строкой.
2. Устанавливает субпатэрн как захватывающий субпатэрн (как определено выше). Когда совпадает весь патэрн целиком, часть строки-субъекта, совпавшая с субпатэрном, передаётся обратно вызывающему посредством аргумента. Открывающие скобки вычисляются слева направо (начиная с 1) для получения количества захватывающих субпатэрнов.
Фактически такое выполнение обычными скобками двух функций не всегда помогает. Бывают случаи, когда необходим группировка субпатэрнов без необходимости захвата. Если после открывающей скобки идёт "?:», субпатэрн не выполняет захвата и не учитывается при подсчёте количества захвативших субпатэрнов. Максимальное количество захватываемых подстрок — 99, а максимальное количество всех субпатэрнов, захватывающих и незахватывающих, равно 200.
_______________________________________________________

((?=))    Положительное утверждение заглядывающее наперед. Проверка касательно символов, идущих после текущей позиции сопоставления. Сопоставление подмаски, содержащий утверждение, происходит обычным образом, за исключением того, что текущая позиция не изменяется. Например, /\w+(?=;)/ совпадает со словом, за которым следует символ ';', но при этом сама точка с запятой в совпадение не включается.
_______________________________________________________

((?!))    Отрицательное утверждение заглядывающее наперед. Проверка касательно символов, идущих после текущей позиции сопоставления. Сопоставление подмаски, содержащий утверждение, происходит обычным образом, за исключением того, что текущая позиция не изменяется. Например, /\w+(?!\.)/ совпадает со словом, за которым не следует символ точки '.', но при этом сама точка с запятой в совпадение не включается.
_______________________________________________________

((?< =))    Положительное утверждение заглядывающее назад. Проверка касательно символов, идущих до текущей позиции сопоставления. Сопоставление подмаски, содержащий утверждение, происходит обычным образом, за исключением того, что текущая позиция не изменяется. Например, /(?< =мой)дом/ не найдёт вхождения «дом», если не предшествует «мой».
_______________________________________________________

((?)    Отрицательное утверждение заглядывающее назад. Проверка касательно символов, идущих до текущей позиции сопоставления. Сопоставление подмаски, содержащий утверждение, происходит обычным образом, за исключением того, что текущая позиция не изменяется. Например, /(?
_______________________________________________________

((?#))    Служебная последовательность (?# обозначает начало комментария, который продолжается до ближайшей закрывающей скобки. Вложенные скобки не допускаются. Символы, находящиеся внутри комментария, не принимают участия в сопоставлении шаблона.
_______________________________________________________

((?(condition)yes-pattern|no-pattern))    В случае успешного сопоставления условия condition, используется подмаска yes-pattern, в противном случае no-pattern (если он присутствует). Если указано более двух альтернатив, возникнет ошибка во время компиляции
_______________________________________________________

({n,m})    Метасимвол "{» - начало min/max квантификатора, "}» - конец min/max квантификатора. Минимальное n и максимальное m число повторений регулярного выражения, стоящего перед {n, m}. Конструкция {n} означает ровно n повторений, (n,} — n и более повторений, {,n} - либо 0 либо не больше n повторений.
_______________________________________________________

Читать дальше…
_______________________________________________________


Итак, в начале статьи я привел пример с вырезом ссылок из множество  html файлов. Ну и как я это сделал? Смотрим:)
Программа:

Вырезание регулярным выраженим ссылок из множества файлов html

< ?

  $dirname 
"./ru»;  //дирректория где находятся наши файлы
  
$dir opendir($dirname); //открываем её

  while (($file readdir($dir))) //пока считываются из неё названия файлов  
  
{  
    if(
is_file($file)) //проверяем есть ли это файл
    
{
      
// качаем страницу в переменную $buf
      
$buf implode(“»,file($dirname "/» $file));  

      
      /** 
      * состовляем регулярное выражение для поиска ссылок 
      * я составил для достаточно точного(строгова) поиска
      * это позволит избежать кривых ссылок.
      */
      
$pattern "!]* >([^< ])+!ims»;

      
//пользуемся функцией preg_match_all()     для поиска по регулярному вырожению
      
preg_match_all($pattern$buf$url); 

      
// выводим массив на экран
      
$i 0;
      while(
$i <  count($url[0])) { 
        echo 
$url[0][$i++]."\n»
      }
    }
  }
 
? > 
 

ну вот и всёв смысле с программой а о регулярных выражениях можно прочитать в книгах:)

 

Антимат функция на php, c использованием регулярных выражений


Здравствуйте дорогие друзья! Моя новая статья о анти-мат функции написанной на php.
Функцию я написал с нуля, и при тестировании убедился, что она работает практически
безотказно, а именно  вырезает из текста все известные мне, да и наверно и всем вам матерные слова русского языка.
Основная работа функции (я её назвал antimat()) осуществляется за счет поиска и замены по регулярным выражениям,  находящимся в массиве. Эти шаблоны регулярных выражений я очень кропотливо подобрал, мне пришлось для этого прочитать несколько статей о мате и нецензурных выражений, при этом узнал корни нецензурных слов и создал на полученных знаниях регулярные выражения для нахождения в тексте этих корней и ликвидации их вместе со словом в котором этот корень обнаружен.
Код программы:

Функция antimat()


function antimat($text) {

$s = '[^\wа-я]*?'; // параметр для попуска между буквами для нахождения матерных слов типа "м а т" и тд

$cenzur = '[цензура]'; // на это значения переменной будут заменяться нецензурные слова

//массив содержащий шаблоны PCRE регулярных выражений, для поиска нецензурных корней
$ArrayPattern = array(
'[^вvw]'.$s.'[еeё]'. $s .'[бb]',
'[лl]'.$s.'[оo0]'.$s.'[хxh]',
'[еe]'.$s.'[лl]'.$s.'[дd]'.$s.'[аa@]',
'[мm]'.$s.'[uyу]'.$s.'[дd]'.$s.'[^рpr]',
'[пp]'.$s.'[иiеe]'.$s.'[зz3]'.$s.'[дd]',
'[^ю]'.$s.'[бb]'.$s.'[лl]'.$s.'(?:я|ja|j@)',
'[мm]'.$s.'[аa@оo0]'.$s.'[нn]'.$s.'[дd]',
'[дd]'.$s.'[rpр]'.$s.'[аa@оo0]'.$s.'(?:[ч4]|ch|сh)',
'[хxh]'.$s.'[уyuеe]'.$s.'(?:[ийijрprеёeяюлl]|ja|jа|ju|jи)',
'[зz3]'.$s.'[аa@]'.$s.'[лl]'.$s.'[уyu]'.$s.'[пp]',
'[гg]'.$s.'[аa@оo0]'.$s.'[нn]'.$s.'[дd]'.$s.'[оo0]',
'[пp]'.$s.'[иiеe]'.$s.'[дd]'.$s.'[аa@оo0иiрpr]'.$s.'[^гgфf]',
);

// перебираем каждый элемент массива ($ArrayPattern) и добавляем к нему еще нужные предикаты (они подходят для всех элементов массива)
foreach($ArrayPattern as $key = > $value)
{
 
$Pattern[] = '/(.*?)(?:[^\s]*' . $value . '[^\s]*)(.*?)/is';
}

// выполняем замену в тексте (пришедшем из аргумента функции $text) по шаблонам находящимся в массиве используя функцию preg_replace()
$no_mat = preg_replace($Pattern , "\\1". $cenzur . "\\2", $text);


// возвращаем текст после замены нецензурных слов

return $no_mat;

}
? >

Функция конечно не совершенная, есть над чем поработать, но попробовать её в действии следует, я не долго её тестировал, разве лишь на производительность, если вам не трудно сообщите в каких словах эта функция неправильно себя ведет, связавшись со мной по моим контактам, либо оставив комментарий здесь…

 

Алгоритм успешной программы



Всем привет! Вот моя очередная статья в которой я опишу шесть принципов обеспечивающих правильный алгоритм разработки ваших программ, читаем :)

Стиль
  1. Используйте осмысленные имена для глобальных переменных и короткие — для локальных.
  2. Будьте последовательны.
  3. Используйте активные имена для функций.
  4. Будьте точны.
  5. Форматируйте код, подчеркивая его структуру.
  6. Используйте естественную форму выражений.
  7. Используйте скобки для устранения неясностей.
  8. Разбивайте сложные выражения.
  9. Будьте проще.
  10. Будьте осторожны с побочными эффектами.
  11. Будьте последовательны в применении отступов и фигурных скобок.
  12. Используйте идиомы для единства стиля.
  13. Используйте else-if для многовариантных ветвлений.
  14. Избегайте макрофункций.
  15. Заключайте тело макроса и аргументы в скобки.
  16. Давайте имена загадочным числам.
  17. Определяйте числа как константы, а не как макросы.
  18. Используйте символьные константы, а не целые.
  19. Используйте средства языка для определения размера объекта.
  20. Не пишите об очевидном.
  21. Комментируйте функции и глобальные данные.
  22. Не комментируйте плохой код, а перепишите его.
  23. Не противоречьте коду. Вносите ясность, а не сумятицу.

Интерфейсы
  1. Прячьте детали реализации.
  2. Ограничьтесь небольшим набором независимых примитивов.
  3. Не делайте ничего «за спиной» у пользователя.
  4. Всегда делайте одинаковое одинаково.
  5. Высвобождайте ресурсы на том же уровне, где выделяли их.
  6. Обнаруживайте ошибки на низком уровне, обрабатывайте на высоком.
  7.  Используйте исключения только для исключительных ситуаций.
Отладка
  1. Ищите знакомые ситуации.
  2. Проверьте самое последнее изменение.
  3. Не повторяйте дважды одну и ту же ошибку.
  4. Не откладывайте отладку на потом.
  5. Пользуйтесь стеком вызова.
  6. Читайте код перед тем, как исправлять.
  7. Объясните свой код кому-либо еще.
  8. Сделайте ошибку воспроизводимой.
  9. Разделяй и властвуй.
  10. Изучайте нумерологию ошибок.
  11. Выводите информацию, локализующую место ошибки.
  12. Пишите код с самоконтролем.
  13. Ведите журнальный файл.
  14. Постройте график.
  15. Используйте инструменты.
  16. Ведите записи.
Тестирование
  1. Тестируйте граничные условия кода.
  2. Тестируйте пред- и постусловия.
  3. Используйте утверждения.
  4. Используйте подход защитного программирования.
  5. Проверяйте коды возврата функций.
  6. Тестируйте по возрастающей. 
  7. Тестируйте сначала простые блоки.
  8. Четко определите, чего вы ожидаете на выходе теста.
  9. Проверяйте свойства сохранности данных.
  10. Сравните независимые версии.
  11. Оценивайте охват тестов.
  12. Автоматизируйте возвратное тестирование
  13. .Создавайте замкнутые тесты.
Производительность
  1. Автоматизируйте замеры времени.
  2. Используйте профилировщик.
  3. Концентрируйтесь на критических местах.
  4. Постройте график.
  5. Улучшайте алгоритм и структуру данных.
  6. Используйте оптимизацию компилятора.
  7. Выполните тонкую настройку кода.
  8. Не оптимизируйте то, что не имеет значения.
  9. Объединяйте общие выражения.
  10. Замените дорогостоящие операции на более дешевые.
  11. Избавьтесь от циклов или упростите их.
  12. Кэшируйте часто используемые значения.
  13. Напишите специальную функцию захвата памяти (аллокатор).
  14. Буферизуйте ввод и вывод. 
  15. Специальные случаи обрабатывайте отдельно.
  16. Используйте предварительное вычисление результатов.
  17. Используйте приближенные значения.
  18. Перепишите код на языке более низкого уровня.
  19. Используйте минимально возможный тип данных. 
  20. Не храните то, что можете без труда вычислить.
Переносимость
  1. Следуй
  2. Придерживайтесь стандарта.
  3. те основному руслу.
  4. Избегайте неоднозначных конструкций языка. 
  5. Попробуйте несколько компиляторов.
  6. Используйте стандартные библиотеки. 
  7. Используйте только то, что доступно везде. 
  8. Избегайте условной компиляции. 
  9. Выносите системные различия в отдельные файлы.
  10. Прячьте системные различия за интерфейсами. 
  11. Используйте текст для обмена данными. 
  12. Используйте при обмене данными фиксированный порядок байтов.
  13. При изменении спецификации изменяйте и имя.
  14. Поддерживайте совместимость с существующими программами и данными.
  15. Не рассчитывайте на ASCII. 
  16. Не ориентируйтесь только на английский язык.
 

Встречаем phpDesinger7


      Привет! Как дела? а ладно эти дурацкие вопросы задавать :) Знали ли вы дорогие читатели о замечательной программе под названием phpDezinger ? Если нет, то эта статья для вас дорогие любители и мастера веб программирования и дизайна, поздравляю вас, вы наконец-то нашли то, что так долго искали, а именно отличный инструмент для вашего любимого дела:)

      Наверно вам не понятно что я имею ввиду, тогда попытаюсь объяснить по другому.
При написании программ, программистам часто приходится следить за ходом и логикой её работы, или иначе говоря, тестировать ее применяя при
этом дополнительные программы или сам хост сервер для тестирования серверных языков программирования (таких как на пример php), это во первых не удобно, во вторых используется трафик (у некоторых он дорогой), вы можете сказать у меня таких проблем нет т.к.«Я установил локальный сервер и тестирую без проблем» я же вам отвечу: «А мечтали ли вы о такой оболочки, которая могла одновременно 'делать код' и тестировать его?», наверняка да, тогда мечта ваша сбылась :)

      Знаете о таком инструменте как phpMyAdmin? да?  А как порой бывает неудобно
одновременно работать и с редактором и с браузером и с PMA проводя манипуляции с баой данных, и одновременно тестируя, то в окнах можно просто напросто запутаться, phpDesinger7 предлагает свое решение этому, он просто содержит в себе все необходимые инструменты для вас, могу их даже написать, они вам должны быть знакомы, это как я уже писал phpMyAdmin, FTP клиент, FileZilla, Xdebug IDE-сервер (для отладки ваших скриптов), эксплорер кода, Code Inspector(HTML) из приятных вещей хочу отметить: библиотеку кода, браузер файла, проект, шаблоны которые вы можете создавать для быстрой вставки. Иногда нужно найти или посмотреть описание какой либо функции, без проблем просто можно нажав на вкладку (раннее настроенную вами) посмотреть мануал например по php и это все в одном окне!

     Думаете это все инструменты? тогда вы ошибаетесь потому что я и не описал и одной трети:) но наверняка у вас появилось желание иметь у себя эту очень удобную программу, без проблем ссылка будет в конце а пока что познакомимся наглядно с интерфейсом программы phpDesinger7 После ее установки  по умолчанию
будет английский интерфейс, нужно ли это вам? Вам решать, если вы этим не довольны, делаем то, что показано на изображении ниже.

выбор руссокого языка

После того как мы установили свой родной язык можно кратко познакомиться с интерфейсом программы, смотрим

главное окно программы phpDesinger7

      А это мое любимое раскрывающееся меню быстрого ввода, она показывает переменные, функции, методы класса, объекты класса, другими словами отображает все, что у нас есть в проекте, и даже больше! Оно умеет показывать тоже самое только уже смотря в подключенный файл.



      Ну вот, вы уже сможете разобрать, где  есть что, без особого труда, но нам нужно еще посмотреть особенность приложения, давайте для начала заглянем сюда


      Да! Это именно то, что вам нужно:) Простым нажатием встраиваем нужные инструменты в рабочее окно, и желательно делаем так, чтобы эти окна выезжали при наведении на вкладку и наоборот заезжали при потере фокуса, это все для удобства работы и для не большого занимаемого пространства рабочей области.

      Итак, мы почти осуществили свою мечту, но, нам нужно все это заставить работать, каким образом скажете вы, очень просто, нужно зайти в настройки и настроить:)  Для этого идем по пути Tools- >Preferences(Инструменты- >Установки), или еще проще нажимаем Ctrl+E перед вами появится окно показанное ниже на рисунке, надеюсь, вы поймете что делать:) Иначе вам поможет только кнопочка «Default»(находящиеся в левом нижнем углу),  или переустановка приложения(в крайнем случае) надеюсь на вашу сообразительность и понимание того что делаете.

      Ну, вот вы почти и разобрались, остаётся лишь приспособить все под себя, но в этом я вам не помощник:) Если вы так и не поняли в чем особенность этого приложения, то я повторюсь, в этом приложении собрано все лучшее для веб мастера все его инструменты все, с чем он имеет дело повседневно, благодаря встроенному интерпретатору php вам не придется переносить свои скрипты на сервер для тестирования т.к. тестировать и следить за ходом работы можно не отрываясь от процесса разработки приложения, в то же время можно наведя мышь на вкладку с PMA работать с базой данных, или же в библиотеке кода искать для себя нужную функцию, а если она для вас не известна, то двойным нажатием запускаем мануал и смотрим информацию (при том, как обычно пришлось запускать мануал отдельно в ручную, и искать функцию для просмотра ее описания), так же отмечу один очень важный момент, а именно быстрая вставка функций благодаря
встроенной документации. Тем временем эксплорер кода позволит с легкостью найти нужную переменную, функцию и др в текущем документе, как и в любом продукте такого рода имеется поиск и замена текста, менеджер ошибок, теперь вы всегда будете осведомлены о том почемы код не работает. Это действительно умное приложение, и по моему мнению даже не сравнима с Macromedia Dreamweaver, потому как оно в разы удобние, в этом нужно просто убедиться. Лично я надеюсь phpDesinger станет для вас
самым любимым инструментом разработки web программ, и генерирования содержания обычных страниц.


Ну как я и обещал даю ссылку на данный проект http://www.mpsoftware.dk

P.S. статья подготовлена лично мной, все права мои. Думаю вы знаете что делать при копировании чужой информации… copy SaniL' 2010 http://www.studyphp.blogspot.com

 

Инструменты для веб разработчика, и их настройка




Здравствуйте дорогие друзья! У меня сегодня хорошее настроение я поступил учиться на бухгалтера:) Но про своё увлечение не забыл, а именно веб программирование. Совсем недавно я узнал а очень удобной установки локального сервера + еще много разных инструментов для веб разработчика, сайт этого проекта вам напишу вот он www.apachefriends.org там
можно скачать последнюю версию вернее сборку (XAMPP for Windows) самого популярного веб сервера Apache, на сегодня версия сборки 1.73 включает в себя Apache 2.2.14 (IPv6 enabled) + OpenSSL 0.9.8l, MySQL 5.1.41 + PBXT engine, PHP 5.3.1, phpMyAdmin 3.2.4, Perl 5.10.1, FileZilla FTP Server 0.9.33, Mercury Mail Transport System 4.72. сам архив весит 51.1мб но зато в замен вы получаете уже полностью настроенный инструмент много разных свежих модулей и прибамбасов. Это очень популярная сборка сервера она подойдет как для тестирования своих скриптов на своём пк, так и для реального использования на реальных серверах, заметим, что для совместимости php 4 и php 5 версий есть переключатель в формате bat одно нажатие и у вас 5 или же 4 версия php. Так же в сборку входит очень нужное приложение phpMyAdmin написаное на php для управления базой данных MySQL(которая так же входит в сборку, смотрите выше), настройка достаточна проста и описывать её нет смысла, а если не разберетесь, то можно зайти на официальный сайт или порыться в поисковике или форумах.
Всего хорошего вам в освоении веб программирования :) Вопросы можно задавать мне на Sanil@list.ru

 
Теги: xampp for windows
 
 

Начнем изучать язык веб программирования - php


В этом году я начну писать про язык web программирования php.
Благодаря его возможностям простоте изучения и понимания, он очень бурно развивается, это сравнительно молодой язык программирования разработанный специально для интернета, но этим возможности его не ограничиваются.
   Он также может быть оконным приложением исполняемым на стороне сервера, но для этих целей есть более удобные средства, как написано в мануале - "php может всё".  
  В чем же преимущества перед остальными языками, тем что он может встраиваться непосредственно в хтмл код, сам код обрабатывается на сервере а значит не будет проблем у пользователя с его обработкой, так как он получает уже чистый html, PHP способен не только выдавать HTML. 
Возможности PHP включают формирование изображений, файлов PDF и даже роликов Flash, создаваемых "на лету". PHP также способен выдавать любые текстовые данные, такие, как XHTML и другие XML-файлы. Способен осуществлять автоматическую генерацию таких файлов и сохранять их в файловой системе вашего сервера вместо того, чтобы отдавать клиенту, организуя, таким образом, кеш динамического содержания, расположенный на стороне сервера, при обработки интерпретатором php, код php сценария не посылается клиенту, это значит что вы не увидите в исходном коде страницы php код, это делает php более безопасным, по сравнению с клиентскими языками, таких, как например Java Script.
  PHP включает средства обработки текстовой информации, начиная с регулярных выражений Perl или POSIX Extended и заканчивая парсером документов XML. Синтаксис php сходен с синтаксисом Си подобных языков, это значит, если вы изучали язык C, то изучить php для вас не составит труда. Это далеко не все его преимущества, описывать их можно очень долго. Я дал вам вводное описание языка php, теперь буду описывать сам процесс установки сервера Apache, php, и связки Apache + php, всё это подробно опишу в следующий раз.