
В статье "Use of LSD–25 for Computer Programming" исполнительный директор Trance Research Foundation рассказывает о том, как 75 мкг кислоты в далёком 75–ом году помогли ему решить критические проблемы при программировании компилятора для огромного компьютера IBM System/360 (кстати, это первый 32–битный компьютер в истории, послуживший отправной технологической точкой для современных компьютеров платформы IBM PC). (далее...)
Отличная книжка, рекомендую к прочтению. «Just for Fun» – смесь биографии Линуса Торвальдса с рассуждениями о технологиях и путях их развития. Линус Торвальдс – создатель операционной системы Linux. Линус подробно объясняет, как из игрушки десятка хакеров Linux превратилась в мощный инструмент, которым пользуются огромные корпорации. Линус просто и доходчиво описывает историю системы и принципы ее работы, не перегружая читателей заумной терминологией. Попутно он делится с читателями своими представлениями о будущем Linux и компьютерной индустрии в целом.
Хотя Линус с удовольствием гоняет на своем блестящем новом BMW, он никогда не гнался за славой и богатством. Тем не менее и то и другое пришло к нему, когда Линус Торвальдс радикально изменил мир технологий по одной эгоистической причине: ради собственного удовольствия. читать дальше →

Спавочники, которыми я пользуюсь
Если chm-файл открывается пустым, то это лечится через Свойства файла → Разблокировать

Если вы запускаете большой проект на php, эта книга несомненно будет ценным ресурсом для вас и вашей группы разработчиков. Написанное хорошо известными гуру php, это исчерпывающее руководство покрывает все, что вы должны знать: развитие php, планирование, безопастность, оптимизация, тестирование, развертывание, методологии разработки, дебаг и многое другое.
скачать Guide to Enterprise PHP Development (10 Мб, формат PDF)
Книга на английском!
- Любая работающая программа уже устарела.
- Любая программа обходится дороже и требует больше времени, чем казалось в начале.
- Если программа полезна, ее обязательно переделывают.
- Если программа бесполезна, ее тщательно документируют.
- Любая программа в конце концов занимает всю доступную память.
- Ценность программы обычно определяется весом выдаваемой ею распечатки.
- Cложность программы обычно растет до тех пор, пока не превысит способности программиста, призванного ее поддерживать.
- Если утилиты, испытанные при инсталяции, работают идеально, все остальные функции будут работать не верно.
- Если входной редактор спроектирован так, чтобы исключить неверный ввод, найдется изобретательный идиот, который изыщет метод ввести разрушительную команду.
- Невежество - единственный язык, которым владеют все программисты.
- Увеличение численности программистов, работающих над проектом, увеличивает сроки его выполнения.
- Небрежно спланированный проект требует в 3 раза больше времени, чем ожидалось, а тщательно спланированный - только в 2.
- В программе всегда есть еще одна ошибка.
- Невозможно создать программу с полной защитой от дураков, ибо дураки крайне изобретательны.
- Если все идет хорошо, вас вскоре ждут серьезные осложнения.
- Если дела идут хуже некуда, вскоре выяснится, что это не так.
- Если кажется, что все в порядке, вы просто что-то просмотрели.
- Тестовые операции и результаты их выполнения должны быть воспроизводимы - они все должны давать одинаковые отказы.
- Вы всегда найдете еще одну ошибку, если еще раз загляните в свою программу.
- Терминал работает лучше, если его включить в сеть.
- Если все не работает, читайте документацию.
- Если вам не понятно какое-то слово в технической документации, игнорируйте его, смысл от этого не пострадает.
- Не важно, много ли вы работаете, вы все равно работаете недостаточно.
- То, чего вы не делаете, всегда важнее того, что вы делаете.
- Всегда оставляйте место для объяснения того, почему ваша программа работает не так как планировалось.
- Не существует ничего невозможного для человека, который не собирается ничего делать сам.
- Если бы строители сооружали здания также, как программисты пишут свои программы, первый же дятел разрушил бы человеческую цивилизацию.
- Программисты действуют рационально, лишь тогда, когда другие способы исчерпаны.
Наткнулся в чужом коде на очередной 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
?>
Не изобретайте велосипед!

какой самый извращенный способ проверить в условии if () булевскую переменную?
if (b.ToString().length < 5){...}
еще WTF
Невозможно в принципе — Я не знаю, как это сделать.
Невозможно — Я знаю как, но мне лениво.
Сложно — Придется прочитать документацию.
В принципе, реализуемо — Я как раз вчера скачал из интернета библиотеку, которая решает поставленную задачу.
Работает — Компилируется.
Отлаживаю — Не компилируется.
Прогоняю тестовые примеры — Пытаюсь найти такой, на котором программа не вываливается.
Работал допоздна — Играл по сети.
После обеда — Часам к 18:00.
(далее...)
DbSimple - библиотека, реализующая единый интерфейс доступа к разным СУБД и включает в себя некоторое количество улучшений, упрощающих работу с СУБД.
Основные возможности
- Поддержка PHP 4 и 5, СУБД: MySQL, PostgreSQL и InterBase/FireBird.
- Простой и лаконичный интерфейс (см. примеры ниже).
- Функции непосредственной выборки: всего результата, строки, столбца, ячейки, ассоциативного массива, многомерного массива, связанного дерева.
- Поддержка различных видов placeholder-ов (параметров запроса): списковый, ассоциативный, идентификаторный
- Код библиотеки весьма компактен: один файл - базовый класс, один файл - драйвер конкретной СУБД.
и многое другое!
Основным недостатком традиционного подхода является разделение операций "выполнение запроса" и "получение результата запроса". Например необходимо получить список email пользователей со статусом 2
Традиционный подход
$rusult = $mysqli->query('SELECT email FROM user WHERE status='.$status);
$email_array = array();
while ($email = $rusult->fetch_assoc()) {
$email_array = $email['email'];
}
DbSimple
$email_array = $DB->selectCol('SELECT email FROM user WHERE status=?d', $status);
'SELECT email FROM user WHERE status='.$status - уязвим для sql-иньекций, если не проверить переменую $status
'SELECT email FROM user WHERE status=?d' - ?d это как раз и есть placeholder. Вместо него подставляется $status как целое число. Нам не нужно заморачиваться с проверкой - это сделает библиотека.
Это далеко не все возможности DbSimple. Более подробно в официальной документации
p.s. Около года использую эту библиотеку. Очень доволен
дальше ситуация будет развиваться примерно так:
1) ты находишь пример скрипта
2) ты не понимаешь, как его запустить. Тема в форуме: «Как запустить скрипт?»
3) Тебе советуют поднять Apache и, например, PHP. Тема в форуме «как установить и настроить PHP?»
4) Тебе рассказывают, как поднять Apache и PHP. Ты поднимаешь, но скрипт не работает. Тема в форуме: «Почему не запускается скрипт?»
5) В форуме выясняют, что у тебя 1. не настроен виртуальный хост на апаче, 2. не стоит MySQL. Тема в форуме: «Как настроить MySQL?»
6) Ты по советам форумчан поднимаешь MySQL, создаёшь нужную базу данных, скрипт работает, но выглядит не так, как тебе хочется. Тема в форуме: «Как поменять дизайн скрипта?»
......
N) Скрипт работает, имеет нужный дизайн и функциональность, стоит на платном хостинге в интернете, интегрирован с твоим сайтом, у тебя уже двое детей, новенькая Honda Civic, профессия PHP-программиста, диплом Oracle DBA и неотвязная мысль в мозгу «Нах.. мне всё это надо было?»