- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
Мой скромный говнокод для любителей фильтрации и xss
При записи в базу
$msg = stripslashes(htmlspecialchars(trim($_POST['msg']))); // Очищаем от мусора
Вывод из базы
function post($text, $html=true, $nl2br = true, $smiles = true, $bbcode = true)
{
if ($html)
{
$text=html_entity_decode($text, ENT_QUOTES, 'UTF-8'); // в базе в htmllenties обратная перекодировка
}
if($smiles)
{
$text = smiles($text);
}
if($bbcode)
{
$text = bbcode($text);
}
if($nl2br)
{
$text = nl2br($text);
}
return $text;
}
а вот это $msg = stripslashes(htmlspecialchars(trim($_POS T['msg']))); классика ГК. что уже тоже не смешно.
но все же ооп-стиль лучше тем, что не перекроем такие очевидные => часто используемые имена функций + логически упорядочим
вот ведь сравнили несравниваемое. В неймспейсе ведь классы, а не методы.
в общем, пока эта чехарда с неймспейсами, остаемся с Zend Conventions типа класс в пакет/подпакет/класс.пхп называется пакет_подпакет_класс
//Я не знаю как сделаны неймспейсы в ПХП, потому рассуждаю считая что они реализованы аналогично С++.
Итак, если начальному автору надо будет инкапсулировать свои функции (напрмер, внезапно окажется что они пересекаются с функциями другого автора), то он может это сделать либо обернув их как статические методы в некий "псевдо"класс
class CC{ static function f()...}
либо как неймспейс
namespace СС; function f()...
и в любом случае обращаться к ф-ции как CC::f().
Повторю, тут я могу ошибаться (напрмер, может в ПХП нельзя засовывать в неймспейс функции?), но в данном случае у неймспейса преимущество только в том, что его можно раскидать по разным файлам, и (возможно) если в ПХП есть такая штука типа using namespace CC; - и дальше писать без префикса CC:: - тогда автору свой код вообще почти переделывать не придется.
Если же префикс все равно надо писать - тогда использование неймспейса (равно и класса) практически ничем не отличается от обычного ("буквенного") префикса.
Ну и разумеется, если писать изначально в ООП-стиле, да с соглашениями об именах - тогда никакого вышеуказанного бреда делать не придется.
namespace cc;
и всё что ниже относится к "сс"
при обращении к функциям/методам, пишешь:
$foo = сс\bar();
там где планируется использовать "сс" по умолчанию, пишешь:
use cc;
и далее:
$foo = bar();
--
но это только с 5.3 версии...
прикольно наверное перенести пару пакетов в другие пакеты
или например класс в пакете com.example.model.users
Правда, phpstorm например умеет цеплятся за phpdoc и имена переменных, и у него иногда получается сделать rename method.
$msg = stripslashes(htmlspecialchars(trim($_POS T['msg']))); // Очищаем от мусора
Это перед записью в базу ,при записи в базу еще использую mysql_real_...
При выводе обрабатываю строки функцией описанной выше post($post['msg']);
Вообще подумываю на другие веб языки переходить ,какие можете посоветовать?
> Вообще подумываю на другие веб языки переходить ,какие можете посоветовать?
Перл вам в помощь, не трудно будет перейти, основы вы уже освоили.
--
Есть такой замечательный язык - HTML
В итоге, если на экране более пяти объектов - работать не будет, потому что больше фантазии у разработчика не хватило. У ракеты жёстко прописанная в коде координата - дача тёщи.
Достаточно вспомнить байку с полётом над Мёртвым морем. Программные ошибки такого рода могут стоить очень дорого.
как говорят в пентагоне - это не ракета, а самолет, просто кажется, что ракета :)
я про сегодняшний пуск, про который решили, что показалось :)
хотя к прошлому разу подходит идеально
"Это не говнокод - это продакшн, просто кажется что говнокод", - каждый раз говорят исполнители заказчику...
переходить лучше на питон. Или джаву например
пока ребенок не знает, что такое переменная -- нафига его грузить понятиями кучи, стека, сборки мусора, примитивов и врапперов?
Зато не придется засорять совершенно ненужными знаниями, например, чем в паскакале процедура отличается от функции, какого хрена в васике параметры функции пишем в скобках, а параметры процедуры - без, и какими ключевыми словами заканчивать циклы for, а какими while, где глобальные переменные видны и где нет, и почему все переменные делать глобальными - плохо... ну итыды итыпы
сравните
и
что проще?
Зато в жабке даже с этим хелловорлдом, отпадают неясности типа: где виден код, куда напечатает, что придет на вход.
Основы основ лучше обьяснить ребенку сразу -- мы же не хотим вырастить очередного кодобабуина, пусть попыхтит, посоображает, поусваивает побольше
после этого человек обретет просветление и отправится доживать свой век в бутане.
вобщем не надо ему больше пехапить.
функциональщина и только она.
файл -> класс
глобальная переменная -> поле класса
процедура -> метод
http://local.joelonsoftware.com/mediawiki/index.php/Опасности_обучения_на_Java например
а меж тем, я полагал, что паскаль и васик устарели и полны других ложных "проблем", которые в жабке как раз отсутствуют
Вобщем начинать нужно сверху, а не снизу как сейчас принято.
--
(имхо)
Один день про красно-черные деревья. Второй -- про паттерн visitor.
и ребенок конечно поймет и полюбит программирование)))
начинать надо с того, что бы ребенок как можно скорее написал игру "угадай число".
тогда ему станет интересно
и вот после десятой игры "угадай число" он начнет понимать чем плох копипаст и глобальные переменные
тогда можно двигаца дальше
потом по-тихоньку рассказывать про ООП, потом -- про алгоритмы, потом пересаживать на другие языки.
нельзя учить УМЛю пока человек не понял ЗАЧЕМ он ему нужен
ну а ооп перед алгоритмами - 'дожили..' называется.
на работе классики в умл рисовать вместо решения прикладных задач?
матчасть первична, а не оопы/паттерны/хуяттерны
Правда, я бы разделил их на две части: основные (не сложнее бинарного поиска и сортировки пузырьком) и сложные (уровня Кнута))).
Вот первые бы я учил до ООП, а вторые можно и параллельно.
Впрочем, если не хочется ООП -- можно заменить его на нормальное программирование на сях (модульное, а не все-в-кучу).
Так уж сложилось, что современный программер больше времени проводит над высокоуровневой архитектурой, чем над реализацией известных алгоритмов, которые есть в библиотеках.
Но знать си, и уметь делать quicksort конечно каждый должен уметь.
"Наука", "Мир"
а что эти выблевы за книги стали считать?
но в лиспах никогда не был принят чистый стиль, точнее он там вреден
а потом, факультативно, рассказать про алгебру, ага =)
нет?
ваши ученики, тов. луначарский?
кстати, я видел написанный макакой билд-скрипт. Это был ant файл (build.xml) на 8000 строк примерно, смоченный ant-contribовыми ветвлениями
это был ад
там не макаки, а шимпанзе. я в свое время не потрудился сохранить, а позже возник инцидент с баттхертом сотрудников и эта реклама была выпилена
и правда шимпанзе.
а сотрудников я понимаю: билд-коммандам неприятно поди
Хорошая практика - "Как бы ты реализовал такой-то и такой-то алгоритм"... Пока самостоятельно не выявишь все плюсы, дефекты и нюансы - ни черта толком не поймёшь...
Теория - оно, конечно круто, но без практики - это пустое.
--
бек-энд современного интернета...
но java все таки не самый худший вариант (там хотя бы надо понимать что такое куча и стек, и знать основные структуры данных).
вот если бы их учили на VBS или PHP -- был бы ад)