=

21 Что нового в php 5.4

PHP 5.4 подвергся значительным изменениям, большинство из которых мы рассмотрим.

Обращение к члену класса при создании объекта

$object = (new SomeWhat(param))->setStyle(20)->setText('Hello')->load();


Сокращенный синтаксис создания массива

$a = [1, 2, 3];
$b = ['key' => 'value', 'key1' => 'value1', 'keyN' => 'valueN'];


Разыменование массива

Теперь возможен такой синтаксис обращения к элементу возвращаемого функцией массива

Добавлено : Вт Май 29, 2012 12:01

Автор : surg30n

Просмотров : 10954

22 Печальное сравнение строк в PHP

Сравнение хэша пароля в пхп? Без проблем:

if (md5($password) == $hash) {
  print "OK!\n";
}


$hash = md5 существующего пароля.
$password = "ximaz" (для примера, MD5 этого пароля равен "61529519452809720693702583126814")

PHP при сравнении приведет аргументы, "похожие на числа" к типу INT.
Но, так как числовое значение хэша не помещается в 32 бита, интерпретатор приравняет его к 0 (нолю).
В итоге получается что сравниваться будет только первая половина хэшей!

Добавлено : Вт Апр 10, 2012 14:37

Автор : surg30n

Просмотров : 6805

23 Скорость выборки order by rand() в MySQL

Дано: таблица mysql 1К записей
Задача: нужно выбрать случайные 5 записей,

SELECT * FROM table ORDER BY rand() LIMIT 0,5 --0.014628


Запрос достаточно медленный, попробуем по-другому.

Попробуем выбрать произвольные идентификаторы до основного запроса данных

SELECT id FROM table ORDER BY rand() LIMIT 1; --0.000592
SELECT id FROM table ORDER BY rand() LIMIT 1; --0.000385
SELECT id FROM table ORDER BY rand() LIMIT 1; --0.000374
SELECT id FROM table ORDER BY rand() LIMIT 1; --0.000380
SELECT id FROM table ORDER BY rand() LIMIT 1; --0.000377
-- всего 0.002075
 
-- или так, быстрее
SELECT id FROM table ORDER BY rand() LIMIT 0,5 --0.000483
 
-- сама выборка
SELECT * FROM table WHERE id IN (80,413,81,127,113) --0.000464

Добавлено : Вт Апр 10, 2012 10:33

Автор : surg30n

Просмотров : 8046

24 Как перевести число из экспоненциальной формы в вещественную

Есть число 0.000090, представленное в экспоненциальной форме как 9.0E-5.
Нужно перевести его обратно в вещественную форму.

Есть как минимум два способа:

$a = number_format(9.0E-5,6,'.','')
$b = sprintf('%f', 9.0E-5)

Добавлено : Пт Апр 06, 2012 12:38

Автор : surg30n

Просмотров : 9478

25 Написание тестируемого кода (вебинар)

Зендоводы опубликовали вебинар раскрывающий аспекты написания легкотестируемого кода и как
это сочитается с хорошим объектно ориентированным программированием.

Тобиас Шлит (61 мин)

http://www.zend.com/en/webinar/PHP/70170000000bk4b-testablecode-20120315.flv

Добавлено : Чт Мар 22, 2012 10:01

Автор : surg30n

Просмотров : 2740

26 Битые таблицы myisam при переезде

После смены сервера возникла проблема с некоторыми таблицами myisam:

mysql> select * from ph_tags;
ERROR 1034 (HY000): Incorrect key file for table 'ph_tags'; try to repair it


Причем ни repair через клиент mysql, ни myisamchk

find /var/db/mysql -type f -name 'ph_tags.MYI' -exec myisamchk --force -o -r -v {} \;


не cмогли восстановить таблицу.

mysql> repair table ph_tags;
+------------------+--------+----------+----------------------------------------------------------+
| Table            | Op     | Msg_type | Msg_text                                                 |
+------------------+--------+----------+----------------------------------------------------------+
| titsgtfo.ph_tags | repair | Error    | Incorrect key file for table 'ph_tags'; try to repair it |
| titsgtfo.ph_tags | repair | error    | Corrupt                                                  |
+------------------+--------+----------+----------------------------------------------------------+

Добавлено : Сб Мар 17, 2012 0:36

Автор : surg30n

Просмотров : 3837

27 Переводчик Google на PHP

Сервис автоматического перевода текста от гугл с появлением API второй версии в конце лета 2011
внезапно стал платным. Переписав свои старые скрипты на новый лад программистам показывалось сообщение
"Daily Limit Exceeded", что означает что нужно занести денежку в гугль. Ценник на данный момент такой -
1 M текста = $20.00. Много это или мало?, зависит от решаемых задач. Что забавно, бесплатная альтернатива от
майкрософт в лице апи бинга продолжает работать и можно адаптировать скрипт под него.

Добавлено : Пт Янв 20, 2012 11:39

Автор : surg30n

Просмотров : 10404

29 1C-ники откакэ!

Столкнулся с проектом, написанным профессиональным 1С-программистом.

Я был готов его убить из-за использования кириллицы в своем коде :)

class test {
        var $пиздец = 'это он';
 
function вывод() {
 echo $this->пиздец;
}
 
}
 
$a = new test();
$a->вывод();

Добавлено : Вт Июн 21, 2011 12:50

Автор : surg30n

Просмотров : 4166

30 Генерация статичного образа сайта и mod_rewrite

Имеем cms. Для уменьшения нагрузки для модуля страниц добавим возможность сохранения статичных копий в виде

/site_root/static/%host%/путь/до/страницы/в/cms/index.html # для папок
/site_root/static/%host%/путь/до/страницы/в/cms/страница.html # для страниц


Кэш есть, теперь можно завернуть анонимусов на адрес статичной странцы.
Делаем это с помощью mod_rewrite.

Добавлено : Вт Мар 22, 2011 13:28

Автор : surg30n

Просмотров : 6417

31 Регулярные выражения для чайников

Что такое регулярные выражения?

В народе: регэкспы, регулярки.

По-простому - это выражения для поиска и замены подстроки по шаблону.

В PHP используется название PCRE (Perl Compatible Regular Expressions -
перл совместимые регулярные выражения). В этой статье я постараюсь раскрыть
потенциал это мощного инструмента программиста. Не пытайтесь понять все сразу,
впитывайте порциями и приходите за добавкой.

Добавлено : Пт Авг 06, 2010 13:29

Автор : surg30n

Просмотров : 187197

32 Пишем простенький обфускатор кода PHP

Постановка задачи:
Необходимо модифицировать код для неудобного его дальнейшего изменения. В часности - убрать комментарии, почитстить пробелы, переносы строк.
Зачем? Бывают разные ситуации, когда нужно передать код в третьи руки для ознакомления/тестирования. Чтобы гарантировать оплату (если есть опасения), можно передать
в измененном, неудобном для чтеня человеком виде.

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

Итак,

Добавлено : Ср Апр 28, 2010 21:44

Автор : surg30n

Просмотров : 13427

33 Скрипт мониторинга изменений файлов

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

/usr/bin/php -f /home/user/fsmon.php > admin@email.ru


Для гибкости некоторые параметры вынесены в файл конфигурации config.php
Задаем корень для сканирования и маску для файлов в виде регулярного выражения.

<?php
return array(
   'root'  => '/home/user/public_html/'
 , 'files' => '(\.php.?|\.htm.?|\.htaccess)$'
);

Добавлено : Вс Окт 04, 2009 13:04

Автор : surg30n

Просмотров : 12910

36 PHP 5.3 незамеченный релиз

Что нового в PHP 5.3?

PHP 6 не за горами, но разработчики не могут терпеть несправедливости php 5.2, бэкпортировали возможности
шестерки в пятую ветку. Релиз которой состаялся в конце июня!

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

PHP становится более объектно ориентированным языком - добавлена поддержка неймспейсов, но
корни языка попрежнему дают о себе знать - это и путаница в параметрах haystack-needle и "программистские пробелы"
в названиях функций.

Добавлено : Ср Июл 08, 2009 17:00

Автор : surg30n

Просмотров : 11382

37 Пишем синонимайзер на PHP

Имеем некоторый текст, помещенный в бд.
Нужно путем манипуляций со словарем синонимов получить на выходе текст, в котором слова
заменены на аналоги-синонимы из словаря.

Приступим...

Добавлено : Пн Июн 15, 2009 4:34

Автор : surg30n

Просмотров : 12216

38 Лучший способ переноса Mysql базы

Большая база на 600 Мб, нужно было сконвертить и перенести на другой хост.
Опробованы решения экспорта-импорта phpmyadmin, sypex dumer, heidisql.

1) phpmyadmin - очень долго бэкапил, при импорте умирал.
2) sypex dumer - медлено! но к чести скрипта импорт завершил, хоть и спустя 8 часов :)
3) heidisql - я обрадовался его фишке напрямую указать второе соединение и прога сама
может лить базу с одного хоста в базу на другом хосте. Клево. НО - умирает на первой большой таблице. Намертво.
При этом валит наглухо ядро проца и долго думает, в итоге убивается, так как не подает никакой активности.

4) Да, да и да. То с чего надо было начинать процесс - с консоли.
Родной дампер mysqldump от пятой mysql успешно сделал бэкап базы, которая
потом без одного подводного камня восстановилась на mysql 4 версии.

Итак, на машине-доноре
...

Добавлено : Чт Апр 23, 2009 2:07

Автор : j4ck

Просмотров : 11057

39 Smarty конспект

В smarty предусмотрено комментирование кода?

{* комментарий *}


Как экранировать код в котором встречаются {}

{ldelim} = {, {rdelim} = } либо
{literal}...{/literal}


Как посчитать количество элементов в массиве

{$group.items|@count}


Как создать внутреннюю переменную smarty

...

Добавлено : Вт Апр 14, 2009 23:49

Автор : surg30n

Просмотров : 34577

Поиск по сайту