вторник, 31 мая 2011 г.

Понятное отображение

Как часто пользуемся функцией php var_dump() или print_r()? И как постоянно ломаем глаза, пытаясь в бардаке симолов разобраться хоть в чем-то.

И как мало людей знают как бороться с этой мешаниной...

Но тем не менее...

Да придет спаситель в виде тега html < pre > !

Оберните в него ваш дамп и будет вам счастье.



понедельник, 16 мая 2011 г.

лучше один вызов, чем два

Не забываем, что:

$var = function();
if(!$var){
    $var = newFunction();
}
echo $var;


работает быстрее чем:

if(function()){
    $var = function();
}else{
    $var = newFunction();
}
echo $var;

Второй способ к тому же вообще не правильный.


среда, 11 мая 2011 г.

Установил вчера NetBeans 7.0, так с языком интерфейса такая прикольная штука получилась, даже сперва озадачила отсутствием настройки в меню :)

среда, 4 мая 2011 г.

кавычки

Очень против использования двойных кавычек там, где можно использовать одинарные. Т.е. для простых строк. А конкатенацию строки и переменной, содержащую строку, делать исключительно с помощью точки ".".
Основной довод не использования двойных кавычек это, конечно, скорость.

пятница, 4 марта 2011 г.

Глобальные переменные

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

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

среда, 16 февраля 2011 г.

Ну почему в Eclipse поиск делается по Ctrl+K когда везде оно же выполняется по F3 ?
это же ахтунг...

четверг, 20 января 2011 г.

Открыли сессию?

Как часто многие php-сты открывая сессию(session_start()), а если и не один раз то вообще ужас, могут однажды увидеть такое:
"cannot send session cache limiter headers already sent"
 А потом еще и искать, что за нафиг случился...

Одно из решений:
if (!session_id()) session_start();
И больше ни когда не придется видеть ту жуткую надпись.

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

вторник, 18 января 2011 г.

random или псевдо-случайные числа.

Речь пойдет о стандартной функции в php.

rand() -  Generate a random integer.

Однажды ночью обнаружилась  принеприятнейшая ситуация. Тестим мы сервак на высоконагруженность, бомбя его большим количеством соединения за короткий промежуток времени. И тут в одном месте видим потерю соединений в 70-80% случаях. Немного прифигев. т.к. к базе обращений очень мало, циклов больших по проекту не ожидалось..., начали искать...
Долго искали в разных местах...
А была, казалось бы, безобидная функция... Из массива случайно выбиралось значение, потом выбиралось следующее случайное, но с проверкой, чтоб они не совпадали... получалась рекурсия...
И, видимо, при частых обращениях у rand() наступал кондратий, возвращая одинаковые значения, от чего наша рекурсия стремилась к бесконечности. Стоило убрать проверку равенства случайных чисел и все заработало без проблем.

И так:

Никогда не сравнивайте случайные значения.

Ищите либо другой способ реализации функционала, либо удостовертесь, чтоб такая проверка не попадала под большие нагрузки.

Кстати, это же касается и функции random() в MySQL и PostgreSQL.
При очень высокой частоте соединений, такой запрос:
select * from table random() limit 2;
может положить сервак.

Есть подозрение, что это касается и других языков программирования.

Про id и таблицы

И сегодня о таблицах...

В cross таблицах, в качестве ключей, должны храниться только(!) идентификаторы (id) таблиц.

Скорей всего, так же может храниться другая необходимая дополнительная информация, типа datetime записи.
Но самое главное, базы должны связываться между собой не какими-то ключами(текстовыми), а исключительно идентификаторами.

Казалось бы, это и так понятно, и все так и делают... А нет, не все. Ну а раз не все, значит это надо  записать и показать тем, кто делает не правильно.

среда, 12 января 2011 г.

Лень матушка.

Давно собирался об этом написать, сегодня только руки дошли.
Сегодняшнее правило:

Ни когда не ленитесь, когда пишите код.

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