Val Petruchek

подписывайтесь, а то хуже будет!  

ПОДПИСЫВАЙТЕСЬ НА RSS

Высказывания о языках программирования

14.05.07 @ 08:12 — Programming, Links, Fun

Подборка цитат о языках программирования (на английском). Мой перевод на русский:

  • Настоящий программист никогда не напишет процедуру УничтожитьБагдад(). Профессиональная этика вынудит его написать процедуру УничтожитьГород(), которой “Багдад” может быть передан в качестве параметра (Натаниэль Боренштейн);
  • Существует только два вида языков програмированния: те, которые постоянно критикуются, и те, которыми никто не пользуются (Бьерн Страуструп);
  • Элементы массива должны нумероваться с 0 или с 1? Моё компромиссное предложение начинать нумерацию с 0.5 было отвергнуто без, как мне кажется, должного внимания (Стен Келли-Бутл);
  • Программное обеспечение, как и секс, гораздо лучше, когда бесплатно (Линус Торвальдс);
  • Тег <BLINK> в HTMLе был шуткой, понятно? Если бы мы знали, что им действительно будут пользоваться, мы бы его не создавали (Марк Андрессен);
  • Повторное использование кусков кода похоже на выдёргивание предложений из чужих историй в попытке написать статью в журнал (Боб Франкстон);
  • Разрабатывать компьютерный язык — это как гулять по парку. То есть по парку юрского периода (Ларри Волл);
  • Память — как оргазм. Гораздо лучше, когда вам не приходится (си)эмулировать (Сеймур Крей);
  • Сначала изучите информатику и всю теорию. Затем выработайте стандарт оформления кода. Потом забудьте всё это и просто хакайте (Джордж Карретт);
  • Get и set методы суть зло (Аллен Холуб);
  • Объектно-ориентированная модель позволяет легко разрабатывать программы путём приращения. На практике это часто означает, что ООП обеспечивает структурированный способ написания спагетти-кода (Пол Грехем);
  • Если мы хотим считать код в строках, то мы должны называть их строками не написанными, а потраченными (Эдсгер Дейкстра);
  • Написание кода занимает в иерархии профессий место где-то выше рытья могил и ниже менеджмента (Джеральд Вайнберг).

Тестовые номера кредиток

Иногда возникает необходимость протестировать тот или иной скрипт/сервис обработки кредитных карточек. Вот список номеров кредитных карт для тестирования:

Card Type Number
Master Card (16 Digits) 5105105105105100
Master Card (16 Digits) 5555555555554444
Visa (13 Digits) 4222222222222
Visa (16 Digits) 4111111111111111
Visa (16 Digits) 4012888888881881
American Express (15 Digits) 378282246310005
American Express (15 Digits) 371449635398431
Amex Corporate (15 Digits) 378734493671000
Dinners Club (14 Digits) 38520000023237
Dinners Club (14 Digits) 30569309025904
Discover (16 Digits) 6011111111111117
Discover (16 Digits) 6011000990139424
JCB (16 Digits) 3530111333300000
JCB (16 Digits) 3566002020360505

Провести удачную транзакцию с этими номерами скорее всего не удастся.

406 Not Acceptable Error и как с ней бороться

25.04.07 @ 05:29 — Programming, PHP

Если ваш php-скрипт начинает выдавать 406-ую ошибку (точнее не сам скрипт, а apache) со словами “An appropriate representation of the requested resource /***.php could not be found on this server”, то скорее всего apacheвскому mod_security что-то не нравится в вашем скрипте.

Например, ваш скрипт может принимать в качестве параметра какие-нибудь URLы, а mod_security будет думать, что злобный хакер пытается выполнить remode code injection. Или ещё что-нибудь.

Если вы уверены в своём скрипте, то можно попробовать отключить mod_security. Проще всего это сделать, добавив две директивы в .htaccess:
SecFilterEngine Off
SecFilterScanPOST Off

Если не получается отрубить mod_security с помощью .htaccess, отключайте его с помощью httpd.conf.

Если это не разрешает сделать админ или ваша религия, то читайте логи (типа такого: [mod_security: Access denied with code 406. Pattern match “\\\\.php(3|4|5)?(\\\\?|&).*=(ht|f)tps?:/.*(\\\\?|&) ” at REQUEST_URI [id “300018″] [rev “1″] [msg “Generic PHP code injection protection”] [severity “CRITICAL”] …]) и модифицируйте скрипт таким образом, чтоб он не вызывал подозрений у mod_security.

Как создать папку с помощью PHP

14.03.07 @ 19:26 — Programming, PHP

Продолжаем тему создания папок в PHP.

Судя по тому, как нас ищут, создание папок даже без SAFE MODE является нетривиальной задачей.

Ответ: mkdir().

Подсказка: php-скрипт должен иметь нужные права записи (chmod 0777 на папку, в которой собираемся создавать папку, решает большинство из возникающих проблем, но так не безопасно).

Почему WordPress — гавно. Часть третья

В WordPress существует два места, где можно редактировать настройки комментариев: на странице редактирования самой записи (локальные настройки) и на странице настроек (глобальные настройки).

При этом эти настройки практически не зависят друг от друга: глобальная настройка будет выставлена в качестве значения локальной настройки по умолчанию для каждой новой записи. Чувствуете, где подвох? Изменение глобальной настройки не влечёт за собой изменение локальных настроек у уже написанных записей.

То есть если вы написали 100 записей с включенными комментариями и решили их отключить для этих записей, то вам надо вручную поменять соответствующую локальную настройку для этих записей. Для отключения комментариев у ненаписанных записей, надо поменять глобальную настройку. На этом, кстати, накололся Мицгол: он отключил трекбеки к новым записям, но не сообразил отключить их для единственной записи, ставшей для его standalone блога последней.

Наверняка есть костыли к WordPress, которые позволяют совершать групповые операции над записями: включать/отключать комментарии, например. Но эти костыли не отменяют design flaw.

Решить эту проблему очень просто: локальные настройки должны позволять выставить себя в Default. Т.е. позволять не указывать значение настроек явно, а установить его в такое же, как на всём сайте. В случае с комментариями локальные настройки должны иметь такое множество значений: {Allowed, Disabled, Default}.

И всё.

JavaScript: получение абсолютных координат элемента

15.02.07 @ 22:44 — Programming, JavaScript

Вот такая изящная функция для опреления абсолютных координат элемента:

function getAbsolutePos(el)
	{
	var r = { x: el.offsetLeft, y: el.offsetTop };
	if (el.offsetParent)
		{
		var tmp = getAbsolutePos(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
		}
	return r;
	}

Я — PHP-программист!

13.02.07 @ 04:55 — Programming, PHP

А вот второй по популярности пост из старого блога. Написано больше трёх лет назад.

Слишком часто я слышу эту фразу последнее время. Очень много PHP-программистов вокруг. Просто эпидемия.

Из моего собственного скромного опытного рекрутинга веб-программистов: в 50% случаев эта фраза подразумевает, что “программист” освоил три тега html и выучил две команды PHP: echo и mysql_query.

При этом из теории баз данных он знает только слово SQL, и путается с выбором средства для реализации задачи: то ли тут можно обойтись JavaScriptом, то ли всё-таки надо писать PHP. На написание скрипта, генерирующего картинку на лету и встраивание этой картинки в другой скрипт у этой особи уходит два дня, первые полтора из них он пытается всунуть всё в один файл. Сдавшись, лезет с бестолковыми вопросами, вместо того, чтобы прочитать fucking manual.

PHP - язык высокого уровня. PHP-программисту не надо обращать особое внимание на элементарные операции: работу с памятью, обработку ошибок и сортировку. Практически для всего есть готовые функции. Если, не дай бог, нет - то можно потратить полдня на поиск нужного класса в интернете, вместо того, чтобы написать свой за 2 часа, немного порисовав на бумаге.

PHP позволяет писать на PHP и не думать. За тебя уже подумали. Взял переменную, засунули в базу, вывел html. Всё.

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

Входная планка для PHP гораздо ниже. Три тега, два оператора - и добро пожаловать в мир веб-программинга. Это очень обесценивает профессию. Большинство PHP-программистов - это кодеры, а не девелоперы. Кодеры не умеют мыслить концептуально и творить. Они могут действовать по шаблону. Тут взяли, сюда положили, здесь вывели.

Девелопер - это по сути хакер. Хакер не в опошленном смысле слова (который всё ломает), а в смысле творец.

Будьте скромнее, господа PHP-программисты. Не путайте божий дар с яичницей.

PHP: Создание папок в Safe Mode

08.02.07 @ 03:29 — Programming, PHP

Задача: создавать с помощью PHP скрипта такие директории, в которых можно потом создавать файлы с помощью того же скрипта.

Условие, без которого задача тривиальна: PHP работает в Safe Mode.

Без Safe Mode всё работает прекрасно, главное не забывать делать chmod новым файлам, чтобы иметь возможность удалить их вручную (по ftp/sftp). В Safe Mode директории создаются без проблем, а вот при попытке записать в такую директорию файл PHP выдаёт такой warning:

SAFE MODE Restriction in effect. The script whose uid is 529 is not allowed to access /home/website/autofolder owned by uid 48 in /home/website/script.php on line XX

И никакого файла, естественно, не создаёт.

Решение: создавать нужные папки с помощью ftp-функций: ftp_connect, ftp_login, ftp_mkdir. Законнектились, сделали папку, отвалились.

Browser Clipart

Пришла в голову такая идея — было бы здорово, если бы браузеры умели отображать стандартные картинки самостоятельно, из своей внутренней библиотеки.

Пример: в html код вставляется тег рисунок с src=”image://hardware/computer/keyboard”. Браузер этот код интерпретирует и подставляет в страницу рисунок клавиатуры из своего клипарта. Список поддерживаемых рисунков является общепринятым стандартом по аналогии со списком английских наименований html-цветов.

Пишешь себе скрипт, и на лету вставляешь в него иконки, не тратишь время на поиск и последующую обработку. Рисунки могут не являться концептуальной частью дизайна сайта; у сайта может вообще отсутствовать дизайн — Browser Clipart отлично справится с «раскраской» таких сайтов.

Браузеры карманных устройств могут иметь специальный клипарт с рисунками маленького размера, или иметь укороченный вариант клипарта.

Экономия на траффике незначительная, имеет смысл только для всяких gprsов.

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

JavaScript Tetris

Офигительный Тетрис от Сергея Попова. На джаваскрипте, между прочим.

Я на первом месте в таблице рекордов.

« Previous Page —   
Реклама::

 
Реклама::