Наткнулся на хорошие вопросы на собеседовании. Данные задания были разработаны для облегчения проверки знаний соискателей. Задания разработаны таким образом, что Вы можете их выполнить в любое удобное для Вас время и в обстановке, которую считаете оптимальной.
Теперь подробнее о заданиях. Задания разделены на 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, эта книга несомненно будет ценным ресурсом для вас и вашей группы разработчиков. Написанное хорошо известными гуру 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 сайта.
На момент написания статьи я уже исправил ситуацию с 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? Что в действительности означает этот термин, так это то, что создается последовательность чисел, появляющихся случайным образом. Это порождает более сложный вопрос: что такое последовательность случайных чисел? подробнее о случайных числах