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

Теперь подробнее о заданиях. Задания разделены на 3 категории. Категория B позволяет оценить базовые знания, насколько Вы, знаете базовые основы языка, основы программирования и насколько хорошо владеете программами необходимыми для разработки продуктов. В категории S расположены вопросы, позволяющие оценить глубину Ваших знаний в той или иной части языка программирования, а так же узнать о знании смежных технологий. Ну и последняя категория, это категория Q в ней собранны вопросы по разработке масштабируемых высоконагруженных систем. (далее...)

Допустим у нас есть 10 элементов и нужно случаным образом выбрать один из них.
Обычно делается это так $i = rand(1,10); где $i — номер элемента в списке. Однако, в данном случае мы получаем выборку с равной вероятностью, т.е. элемент с номером 1 выпадет столько же раз как и элемент с номером 2 или с номером 3 (при большой выборке). усложним задачу

Поставил один плагин к wordpress. Все работает, но плагин каким-то образом выводил свой копирайт. Причем найти этот копирайт в коде получилось не сразу. Поиск по точному слову ничего не дал. Пришлось полчаса разбираться в нескольких сотнях строк говнокода. Спрятан он был очень просто:
<?php echo base64_decode('aGVsbG9fd29yZA=='); ?>

Еще одна известная история, которой уже несколько лет. В Болгарии чуваки купили новую Газель для перевозки помидоров. Пока гнали и дальше в течение месяца эксплуатации в салоне сзади раздавался некий металлический стук, причину которого найти не удавалось — и выкидывали все из салона, в т.ч. запаску, домкраты и т.д., и откручивали сидения, ХЗ где стучит. В итоге поступили грамотно — один качает машину, второй стетоскопом прослушивает кузов. Обнаружили, что стучит внутри вертикального короба жесткости, который изнутри салона приварен к листу обшивки. Не поленились, вырезали болгаркой дырку. Внутри короба на толстой леске висит гайка М24 и записка по-русски «МОЛОДЕЦ, НАШЕЛ».

Всё-таки JavaScript — очень бедный язык по сравнению с PHP. Например, генерация случайного числа в интервале 10-20 на php решается одной строчкой rand(10,20). В JavaScript нужно писать с нуля аналог:

function rand(min, max) {
    if (max) {
        return Math.floor(Math.random() * (max - min + 1)) + min;
    } else {
        return Math.floor(Math.random() * (min + 1));
    }
}

(далее...)

Не буду говорить для кого и с какой целью расшифровывал, лучше напишу как это делать. (далее...)

По мотивам песни "Choose life"

выбери PHP

Guide to Enterprise PHP Development Если вы запускаете большой проект на php, эта книга несомненно будет ценным ресурсом для вас и вашей группы разработчиков. Написанное хорошо известными гуру php, это исчерпывающее руководство покрывает все, что вы должны знать: развитие php, планирование, безопастность, оптимизация, тестирование, развертывание, методологии разработки, дебаг и многое другое.
скачать Guide to Enterprise PHP Development (10 Мб, формат PDF)
Книга на английском!

Недавно мне понадобилось перенести информацию из excel-файла в базу данных. Для этого я использовал класс Spreadsheet_Excel_Reader. Это php-класс, который создан для чтения excel-документов. Простой пример ниже иллюстрирует работу класса.

<?php
require_once ('/excel/reader.php'); // подключаем класс

$Excel = new Spreadsheet_Excel_Reader(); // создаем объект
$Excel->setOutputEncoding('cp1251'); // устанавливаем кодировку
$Excel->read('filename.xls'); // открываем файл
$count = $Excel->sheets[0]['numRows']; // узнаем количество строк в 1 листе

// с помощью цикла выводим все ячейки
for ($rowNum = 1; $rowNum <= $count; $rowNum++) {
    echo $Excel->sheets[0]['cells'][$rowNum][1]; // 1 столбец
    echo $Excel->sheets[0]['cells'][$rowNum][2]; // 2 столбец
    echo $Excel->sheets[0]['cells'][$rowNum][3]; // 3 столбец
}
?>

Например, $Excel->sheets[0]['cells'][2][1] обращается к ячейке, которая находится в первом листе, 2 строка, 1 столбец. Если ваши данные находятся в 3 листе нужно писать $Excel->sheets[2] (нумерация начинается с нуля).

Скачать класс Spreadsheet_Excel_Reader

Понимаю, что тема избита, но сам постоянно натыкаюсь на сайты, открывающиеся как с www, так и без.
Почему это плохо?
1) проблемы с поисковиками. Для поисковиков сайты с www и без www – 2 разных сайта. Это хорошо видно в Яндексе, который проиндексировал сайт wimax с www и без www. Такое дублирование понижает основной сайт в поисковой выдаче за счет «размытия» контента на 2 сайта.

индексация сайта с www и без www дублирование контента
На момент написания статьи я уже исправил ситуацию с wimax.
Сейчас в Яндексе висит только один основной сайт wimax.comstar.ru
читать дальше

Наткнулся в чужом коде на очередной WTF. Вместо встроенной функции nl2br() использовалась конструкция

$message = str_replace("\n", "<br />", $message);

Прежде чем что-то написать откройте документацию PHP или посмотрите в гугле – возможно там вы найдете готовое решение вашей проблемы. У PHP имеется огромное количество встроенных функций для решения многих задач. Есть даже встроенная функция easter_date() для расчета дня Пасхи для любого года

<?php
echo date("M-d-Y", easter_date(2000)); // Apr-23-2000
echo date("M-d-Y", easter_date(2001)); // Apr-15-2001
?>

Не изобретайте велосипед!

Случайные числа

Теория

Технически термин «генератор случайных чисел» – это абсурд, так как числа сами по себе не являются случайными. Например, 100 – это случайное число? А 25? Что в действительности означает этот термин, так это то, что создается последовательность чисел, появляющихся случайным образом. Это порождает более сложный вопрос: что такое последовательность случайных чисел? подробнее о случайных числах