LSD и программирование

В статье "Use of LSD–25 for Computer Programming" исполнительный директор Trance Research Foundation рассказывает о том, как 75 мкг кислоты в далёком 75–ом году помогли ему решить критические проблемы при программировании компилятора для огромного компьютера IBM System/360 (кстати, это первый 32–битный компьютер в истории, послуживший отправной технологической точкой для современных компьютеров платформы IBM PC). (далее...)

Just for Fun Отличная книжка, рекомендую к прочтению. «Just for Fun» – смесь биографии Линуса Торвальдса с рассуждениями о технологиях и путях их развития. Линус Торвальдс – создатель операционной системы Linux. Линус подробно объясняет, как из игрушки десятка хакеров Linux превратилась в мощный инструмент, которым пользуются огромные корпорации. Линус просто и доходчиво описывает историю системы и принципы ее работы, не перегружая читателей заумной терминологией. Попутно он делится с читателями своими представлениями о будущем Linux и компьютерной индустрии в целом.

Хотя Линус с удовольствием гоняет на своем блестящем новом BMW, он никогда не гнался за славой и богатством. Тем не менее и то и другое пришло к нему, когда Линус Торвальдс радикально изменил мир технологий по одной эгоистической причине: ради собственного удовольствия. читать дальше →

Справочники по веб-программированию

Спавочники, которыми я пользуюсь

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

как открыть chm файл

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

  1. Любая работающая программа уже устарела.
  2. Любая программа обходится дороже и требует больше времени, чем казалось в начале.
  3. Если программа полезна, ее обязательно переделывают.
  4. Если программа бесполезна, ее тщательно документируют.
  5. Любая программа в конце концов занимает всю доступную память.
  6. Ценность программы обычно определяется весом выдаваемой ею распечатки.
  7. Cложность программы обычно растет до тех пор, пока не превысит способности программиста, призванного ее поддерживать.
  8. Если утилиты, испытанные при инсталяции, работают идеально, все остальные функции будут работать не верно.
  9. Если входной редактор спроектирован так, чтобы исключить неверный ввод, найдется изобретательный идиот, который изыщет метод ввести разрушительную команду.
  10. Невежество - единственный язык, которым владеют все программисты.
  11. Увеличение численности программистов, работающих над проектом, увеличивает сроки его выполнения.
  12. Небрежно спланированный проект требует в 3 раза больше времени, чем ожидалось, а тщательно спланированный - только в 2.
  13. В программе всегда есть еще одна ошибка.
  14. Невозможно создать программу с полной защитой от дураков, ибо дураки крайне изобретательны.
  15. Если все идет хорошо, вас вскоре ждут серьезные осложнения.
  16. Если дела идут хуже некуда, вскоре выяснится, что это не так.
  17. Если кажется, что все в порядке, вы просто что-то просмотрели.
  18. Тестовые операции и результаты их выполнения должны быть воспроизводимы - они все должны давать одинаковые отказы.
  19. Вы всегда найдете еще одну ошибку, если еще раз загляните в свою программу.
  20. Терминал работает лучше, если его включить в сеть.
  21. Если все не работает, читайте документацию.
  22. Если вам не понятно какое-то слово в технической документации, игнорируйте его, смысл от этого не пострадает.
  23. Не важно, много ли вы работаете, вы все равно работаете недостаточно.
  24. То, чего вы не делаете, всегда важнее того, что вы делаете.
  25. Всегда оставляйте место для объяснения того, почему ваша программа работает не так как планировалось.
  26. Не существует ничего невозможного для человека, который не собирается ничего делать сам.
  27. Если бы строители сооружали здания также, как программисты пишут свои программы, первый же дятел разрушил бы человеческую цивилизацию.
  28. Программисты действуют рационально, лишь тогда, когда другие способы исчерпаны.

Наткнулся в чужом коде на очередной 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
?>

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

панда wtf

какой самый извращенный способ проверить в условии if () булевскую переменную?
if (b.ToString().length < 5){...}

еще WTF

Невозможно в принципе — Я не знаю, как это сделать.
Невозможно — Я знаю как, но мне лениво.
Сложно — Придется прочитать документацию.
В принципе, реализуемо — Я как раз вчера скачал из интернета библиотеку, которая решает поставленную задачу.
Работает — Компилируется.
Отлаживаю — Не компилируется.
Прогоняю тестовые примеры — Пытаюсь найти такой, на котором программа не вываливается.
Работал допоздна — Играл по сети.
После обеда — Часам к 18:00.
(далее...)

wordpress-logo Удобный on-line справочник по функциям wordpress
http://wordpress.taragana.net/nav.html?_functions/index.html

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 и неотвязная мысль в мозгу «Нах.. мне всё это надо было?»