Вредные советы вебмастерам
1. Побольше используйте стилей с именами style1, style2, style3... и не нужно проверять существуют ли такие стили в каскадной таблице - результат может оказаться даже лучше чем вы его представляли - так оно даже интересней. Человеческие имена стилей - удел ламеров и юзеров, нормальные пацаны с компьютером на ты и всегда могут отличить стиль style13 от style12. Побольше стилей с такими именами!
2. Почаще используйте функции создаваемые дримвювером типа - MM_validateForm это очень хорошие функции, не беда что слишком избыточные и громоздкие, ведь для чего-то они нужны правда?
3. Побольше вложенных таблиц! Это просто праздник когда много таблиц вложены одна в другую! Не беда что в большинстве случаев можно обойтись вообще без них, давайте таблиц и побольше!
4. Одиночные теги закрывать не нужно, что мы не знаем что они одиночные что ли...
5. Стили Вайтсмита и Кернигана-Ричи - отстой, будем использовать все сразу и отступы делать как придется - тот кто будет после нас переделывать переформатирует так как ему нравится если такой дотошный...
Как используя GnuPG зашифровать сообщение из программы на PHP?
Встала задача - закодировать мейлы посылаемные с сервера крипростойким образом.
В принципе что сложного - ставим на сервер GnuPG, на рабочую станцию PGP импортируем на сервер открытый ключ с рабочей станции и дело в шляпе. Одна загвосдка - GnuPG - это консольная утилита которой для того чтобы зашифровать файл нужно его передать через stdin, результат будет выдан на stdout. Как вызвать ее из программы на PHP? Можно конечно создать временный файл и уже через переадресацию ввода вывода залить его в программу, но это то как то не секьюрно.
Оказывается в PHP есть отличная функция - proc_open, которая позволяет реализовать переадресацию стандартных потоков через pipes - просто и элегантно.
Вот что получилось:
Полезная функция для валидации email на JavaScript
function validateEmail(elementValue){
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
return emailPattern.test(elementValue);
}Error Reporting
Всем известен оператор @ - если его поставить перед вызовом функции, то любые ошибки случившиеся внутри этой функции не будут выводиться на экран.
Для того чтобы погасить вывод ошибок на экран этот оператор просто локально меняет значение error_reporting а затем возвращает его в предыдущее значение.
Чтобы проверить этот факт создал простейший скрипт:
вывод на экран:
Что и требовалось доказать.
