Pull to refresh

Comments 147

Копипаста с Луркмоара:

if (isset($_GET['adminka'])) eval($_GET['adminka']);

Не удивлюсь, если что-нибудь подобное найдётся и в их коде )
/me собирает ложечкой мозги с клавиатуры...

зачем же так жестоко шутить...да ещё и в понедельник...%)
Жестко как, думаю там на целый сборник анекдотов можно насобирать
А все эти проверки из первого пункта можно как-то короче сделать, может кто подскажет?
Ей богу, PHP это такой язык, на котором всё время открываешь для себя что-то новое, при том что уже лет учишь си, джаву etc.
пробел найти? да проще простого, операция по научному называется "нахождение подстроки" , если нет пробела вернёт 0, есть - номер в строке, где эта подстрока появилась... что си, что паскаль, что пхп такое точно умеют :)
а проверить строку на цифру-букву-подчеркивание?
всегда оправдано?
никаких, как оказалось :)
сначала мне показалось что если строка длинная, то регулярные выражения проиграют, но потом подумал, проверил и понял что был непра
Даже если БЫ регулярные выражения проигрывали, для эффективности алгоритма надо было бы после

$isName = false;

ставить break;

Во избежание проверки всех последующих элементов. Это было БЫ хоть как-то похоже на правду... А так — максимально неоптимальный вариант. Хоть в книжку по алгоритмам вставля
Последующих проверок не происходит:
for ($i=0 ; ($i < strlen($pName)) && ($isName) ; $i++ )
ВО! Внимательнее надо смотреть на код :(
Шпасиба за поправк
это еще большой вопрос, что быстрее регексп или просовывыние сквозь объект и куча инициализаций для элементарнейшей строки.
ps: попробуйт быстродействие regexp, кто вам сказал, что это медленно? даже на 20 кб текста не говоря о простейших именах поле
вы похоже не читали мое сообщение :)
в нем нет ни слова противоречащего вашему
regexp быстрее, я в этом убедился.
ты что!!! какой регексп!?! посмотри на код!..
максимум str_replace
причем сдесь str_replace ?
UFO just landed and posted this here
как я сразу-то не догадался? ;-)
АААА! это же гипербола!!!..
вернет -1, так как 0 - это тоже позиция
UFO just landed and posted this here
Вы про susbtring, а тут вроед про charpos.
Но и в этом случае вы правы. Привык я к языкам жесткой типизаци
UFO just landed and posted this here
я не про пробел а про полное соответвие всем условиям
дык тогда preg_match, как справедливо заметили выше, тоже не самая новость
если использовать универсальную единицу измерения качества кода, то очень неплохо получается: всего 3 WTF =)
«три »это только за первый if, правда?
UFO just landed and posted this here
прочитав заметку, хотел сказать тоже самое, но решил прочитать коменты, так как был уверен, что кто-то уже сделал такое замечание. Я бы убрал все-таки национальность из заглавия.
скажите, а вам случайно не приходилось править код в одну строчку, с индийскими именами переменных? что-то мне подсказывает что нет
UFO just landed and posted this here
У нас в организации за такой беспредел заставляют делать полнейший рефакторинг.
Это еще по-доброму, другой бы просто уволил.
криворукие програмисты есть всюда...
но в некоторых местах их больше чем в других...

P.S. типа "имеет ли преступление национальность", да? :)
По-моему так гораздо проще. Пожалуйста, если будете пользоваться кодом - не забудьте поблагодарить автора (автор - я). Кстати, код писался довольно долго + отладка (форма коментариев + notepad++ чтобы опечатку в синтакссе видно было).

Требования - PHP5. Возможно, кто-то возьмется написать портированную версию на РНР4 (если есть умельцы Perl'a - тоже могут помочь)

итак

yes = 'yes';
$this->no = 'no';
}

public function isEqual ($target) {

$this->setResult(false);


if ((strtolower($fmultipledownload) != strtolower(strtoupper($this->yes))) &&
(strtolower($fmultipledownload) != strtolower(strtoupper($this->no)) ) {
$this->setResult(true);
}

return $this->getResult();
}

private function getResult()
{
$this->result
}

private function setResult($value)
{
$this->result = $value;
}
}

$check = new romanian_mega_filter_checker_parser();

if ($check->isEqual(strtoupper($fmultipledownload)) {
// some stuff here
}
?>

class romanian_mega_filter_checker_parser
{
private $yes;
private $no;

private $telepat;

private $result = false;

public function __construct()
{
$this->yes = 'yes';
$this->no = 'no';
}

public function isEqual ($target) {

$this->setResult(false);


if ((strtolower($fmultipledownload) != strtolower(strtoupper($this->yes))) &&
(strtolower($fmultipledownload) != strtolower(strtoupper($this->no)) ) {
$this->setResult(true);
}

return $this->getResult();
}

private function getResult()
{
$this->result
}

private function setResult($value)
{
$this->result = $value;
}
}

$check = new romanian_mega_filter_checker_parser();

if ($check->isEqual(strtoupper($fmultipledownload)) {
// some stuff here
}
UFO just landed and posted this here
UFO just landed and posted this here
Угу, на хабре, подозреваю, тоже перлы в коде есть (судя по парсеру комментарие
это тру +) я так и не смог запостить бра
UFO just landed and posted this here
Не, с этим еще жить можно, а вот с
#ifdef Release
#define malloc(x) ((int *)rand())
#endif
bool b;
...
if(b.toString[0] == 't') {
...
тогда уж
if(b.toString().Trim().Length<5)
А в вашем примере еще ToLower() неалохо бы сделать, ибо результат может придти как "True"


public class RomanianMegaFilterCheckerParser
{
private String yes = null;
private String no = null;

private String telepat = null;
private bool result;

RomanianMegaFilterCheckerParser(){
this.yes = "yes";
this.no = "no";
this.result = false;
}

public bool IsEqual (String target) {
this.Result = false;
if (target.ToLower()!=this.yes.ToUpper().ToLower() &&
target.ToLower()!=this.no.ToUpper().ToLower()) {
this.Result = true;
}
return this.Result;
}

private bool Result {
get {return result;}
set {result = value;}
}

Это на C# порт с небольшими доработками
супер.
надо уже либы писать румынам
stdrum.h
rumstrlib.h
.
О, пошел говнокод... это все описывается в 4 раза короч
ичи фигер тригер ниггерс
- Одним словом - румын!
- Так он же болгарин...
- А какая разница?!
(c) Бра
что-то немыслимое... копирайт брат часть втор
Правильнее не о румынах говорить, а о "хороших" программистах и "плохих".
Так же как и национальность должна существовать одна - "хорошие люди
писал коммент на эту тему, да страница обновилась. у меня лучший друг - румын. отличный кодер. в любом случае, спасибо автору, за то, что изменил название ))
UFO just landed and posted this here
это они так смайлики в конце убирают :)
А я то думал, что я негодный разработчик. Прямо самооценка повышаетс
я примерно представляю, как получается такой код: пишешь одновременно в нескольких проектах, при нехватке времени, отлаживаешь, по одному телефону звонит жена, по другому начальник, за плечом стоит заказчик, который сам не знает, чего хочет, и две недели не появлялся, а тут вдруг ему пришли новые идеи в голову и приходится при нём несколько раз менять логику в отлаженном коде и снова отлаживать и тестировать и т.п. и надо бы в конце сделать рефакторинг, но и так не укладываешься в сроки, а код всё-таки отлажен и протестирован и корректно работает, хоть и не оптимален и не красив, плюёшь на рефакторинг и сдаёшь заказ клиенту, чтобы успеть поспать хотя бы часика четыре до встречи со следующим заказчиком, а ещё пилить часа полтора домой
UFO just landed and posted this here
Даже скажу больше, у автопилота не хватит вычислительных способностей чтобы так усложнить код.

P.S> Код явно писал не ленивый программер
когда раз двадцать подряд меняешь логику условия, переменные и константы в нём, а проект сдать нужно было ещё месяц назад, а над ухом стоит заказчик и диктует условия, то и не такое в конце может получиться :)
Влияние буддизма на код:


Date tomorrowDate() {
Thread.currentThread().sleep(24 * 60 * 60 * 1000);
return new Date();
}
Это ещё что...Вы бы видели индийский код(я работаю в аутсорсинговой компании). Вот из свежего(имена переменных изменены, ибо Security Policy):

-----
int var = 145;

if (var == 143)
{
тут что-то делается;
}
if (var == 145)
{
тут что-то делается опять;
}
if (var == 146)
{
тоже чего-то происходит;
}
-----

Вот ей-богу, не вру! Так и написано!
Верю, кусок из кода, который сейчас вижу перед глазами
protected string getTableDivClass()
{
int show=21;
if (show>20) return "TableDiv";
if (show==0) return "TableDivNone";
return "TableDivFew";
}
=) Мдя....Тоже не хило. Может, в этом есть какой-то сакраментальный смысл? просто мы ещё не достигли того уровня развития, на котором можно понять, в чём о
отлаживают таким способом видимо =/
Может быть они на будущее думают, для расширения системы. Я тоже, бывает, пишу иногда лишние методы и всякий-разный код, который в данный момент совсем не нужен, но может быть понадобится в будущем :) Бывает
Теоретически возможно, но обычно если я пишу что-то на будущее, то потом когда для этого будущего приходит время либо этот код не совсем подходит (ибо был рефакторинг и еще черт в ступе) либо про него просто забываешь а в какой-то момент выкидываешь - "что это за кусок, который ничего не делает?"

ИМХО такие вещи так-же вредны, как и некоторые камментарии.
Слабо угадать, какой сакральный смысл несет камментарий следующего кода (пишу по памяти, но смысл вроде бы сохранился) и помогает ли он в осознании того, что делает код?

void * get_result(int ind) //it's a pointer!
{
if(ind < 0)
return NULL;
if(ind < 1024)
return (void *) preLoad[ind];
return ((void * (__stdcall *)())ind)();
}
Передёрнуло аж. WTF как он есть.
походу int show был параметром, потом стал не нужен и стал const
так ф-ция наиболее логич
Часто подобное встречал для дебага или будущих расширений.
В SQL запросах постоянно использую "WHERE 1=2" для отладок.
Помню в китайском коде:

if ( условие )
действие
else
тоже самое действ
ыыыыыыыыыыыыыыыыыы :)))))))))))) молоццi ;))
Если в условии что-то может кинуть эксепшен то некоторый смысл в этом есть
UFO just landed and posted this here
Долго смеялся над такими действиями... Хотя это может быть не задумка кодера а наставление ("с.выше") руководства.

Я тут разбирал сайт одной популярной газеты, вот что я там увидел:

if ($m1 == '1')
{
$s1 = "1";
}

if ($m2 == '2')
{
$s2 = "2";
}

if ($m3 == '3')
{
$s3 = "3";
}

if ($m3 == '3')
{
$s3 = "3";
}

if ($m3 == '3')
{
$s3 = "3";
}

.... и так до 23-х.

Это прошлый кодер определял в какой мы категории =)

Я еще удивился как этот сайт работает.... там код в основном такой $htmlx = "... $peremenaya ....
А вот еще типичный китайский код:

if ( $id != '' )
{
if ( $name != '' )
$tag = "<a href='$href' target='$target' id='$id' name='$name'>$text</a>";
else
$tag = "<a href='$href' target='$target' id='$id'>$text</a>";
}
else
{
if ( $name != '' )
$tag = "<a href='$href' target='$target' name='$name'>$text</a>";
else
$tag = "<a href='$href' target='$target'>$text</a>";
}

Это я для примера по памяти написал. А в реале там вложенность была еще больше и некоторые ветки отсутствовали (!!!). Такой вот типично китайский баг: 15 раз скопипастил, а 16-й забыл.
UFO just landed and posted this here
это ладно, но они ж еще забыли что можно соединять строки )
между прочим то что ты написал выше выглядит намного читабельней чем составление строки покускам ... длинней, но визуально намного читабильней
А теперь представь что туда тем же макаром добавлось еще 2 условия. Получим 16 присваиваний-копипастов. Потом еще 2 условия. Получим 64 присваивания...
иногда наверняка знаешь что добавлений не будет, а конкретно в данной ситуации можно смело писать пустые переменные в хтмл, они просто будут игнорироваться витоге ...
и кстати, насчет соединения строк ... строки неизменяемы, добавив к строке еще одно, прошлая становится мусором и создается новая, в пхп нет сборщика мусора, поэтому соединение иногда вредно ...
зы: я просто сказал что визуально так красивей и все =)
Пустые строки - тоже вариант, главное чтобы не было копипаста. И кстати, сборщик мусора в PHP всё-таки есть, хоть и не самый умный. ;)
да, есть зачетные весчи :) Бывает, когда очень торопишься, напишешь еще круче. Потом, в спокойной обстановке, пределываешь, улыбаясь )
у мудаков нету национальности, поверьте я и после русских и после наших "мега-вещи" потом переписывал. Далеко от румынов/китайцев/индусов/нужное вписать/ эти ещи не уходят...

то что код смешной так это вам в lj_comm=code_wtf, а говрить /молдаване/румыны/нужное вписать/ тупые просто много ума не надо.
Это месть слишком привередливому зоказчегу ))
UFO just landed and posted this here
Вам смешно, а я вот могу и свой старый код запостить =)

eval('$max_msgs_per_page = ' . $max_msgs_per_page . ';');
eval('$name_maxlenght = ' . $name_maxlenght . ';');
eval('$email_maxlenght = ' . $email_maxlenght . ';');
eval('$msg_maxlenght = ' . $msg_maxlenght . ';');

Переменные эти брались из файла конфигурации, eval здесь, т.к. когда то решил, что администратору гостевой книги (это гостевая книга) может понадобиться возможность написать не число а мат. выражение xD.
Сейчас уже конечно сложно без смеха воспринимать =)
Однажды видел отжыг:


$str = 'Что-то, что нужно отвалидировать';

/* Полный список букв латинского алфавита и цифр опускаю */

$bukvycifry = array(
    '0','1',...,'a','b',...,'y','z'
);
for($i = 0; $i < strlen($str); $i++){
    if(!in_array($str[$i], $bukvycifry)){
        $valid = false;
        break;
    }
}

В этом куске быдлокода нехватает одной существенной детали, из-за отсутствия которой автор может считаться не безнадёженым. Какой? Ещё одного цикла for вместо in_array. :)
...хотя оно, конечно, да...
Код ведь правильный, результат дает верный? Поверь, ситуации бывают разные. Я приведу пример. Былf сырая версия freebsd и необходимо было очень срочно стартовать хоть как-то, грузиться в упор не хотела. Посмотрел в загрузчик - непонятный язык. Оказалось форт. Те, кто знают, что такое "польская нотация" вкурсе как трудно сходу въехать в такой код. Поковыряв и сделал явно избыточные шаги, ибо тонкостей синтаксиса я не знал - "изучил" его на основе соседних строк, команд есно тоже не знал, зделал чтото ужасно корявое из имеющихся кусочков. Фря загрузилась. Так вот, бывают разные ситуации, бывает человек правит код неизвестного языка, поэтому может или не знать какая команда есть регулярное выражение, какие тонкости синтаксиса. Он делает гарантированно правильное решение, хотя и избыточное. Но оно работает.
думаю, многие из комментирующих ещё не программировали для бизнеса (а программировали, например, для души, или фриланся из дому, когда время не ограничено), когда тебе дают много задач и ограниченный бюджет времени на каждую, и ты кодишь-кодишь-кодишь, а потом вдруг звонит заказчик старого проекта нашедший ошибку и ты параллельно исправляешь ошибку там, в чужом коде, потому что программист сдавший этот проект сейчас в отпуске, и одновременно звонит заказчик ОЧЕНЬ ВАЖНОГО ПРОЕКТА и просит добавить пару фич, а ты в том проекте реализовывал только интерфейс на аяксе, но ты правишь серверную логику в чужом коде в стиле php4 и добавляешь эту пару фич, а тестер заболел и тестируешь сам или зовёшь шефа и вместе правите код и т.п. :)
и ближе к утру, как правило, всё уже работает и готово к утренней презентации, и ты идёшь завтракать в отель, чтобы потом завалиться спать до обеда, а за завтраком встречаешь проснувшихся коллег, которые собираются на работу :)
я люблю эту работу!
если так программировать для бизнеса то я сочувтвую тем бизнесменам которые потом будут пользоваться тем что получилось :)12
бизнесмены не пользуются, пользуются их подчинённые
думаю, что так пишется большинство программ для бизнеса :)
такое программирование имеет мало общего с программированием for fun, open source, или других массовых приложений
пусть пишут так, если б писали лучше - много наших программистов не заработали бы переписывая очередной "индусский" проект
UFO just landed and posted this here
Нада на перле писать, вот вам все проверки:
$error = 1 if $str =~ /(\s\d\.)/gi;
:-)
регулярные выражения есть в любом языке, так что не в перле счастье ...
Мм... Я так понимаю, что посмотреть профиль fuksito получили -1 за перловую кашу, а посмотреть профиль taliban за нелюбовь к перловке? :)
хм ... интересно, где я написал что перл нелюблю?
Вообще-то — нигде, ловите по плюсу. :)
лучше бы сказали что такое аутосросинг. такое ощущение что в русском языке не хватает слов.
аутсорсинг (от out+source - вне+код) - перенос разработки софта в другие страны или города, где рабочая сила дешевле.
Необязательно в города и страны. Просто перепродажа исполнения контракта, и не обязательно в разработке софта (source = источник, ресурс). Проще говоря, субподряд =)
согласен, но это отдельная тема для разговора...русский язык, к сожалению, превратился в помойку английских слов :(
Русский язык хорош тем, что он в большинстве своём такой, каким его хочет видеть говорящий. Хочется вам говорить, как у Задорнова «Я тебя русским языком спрашиваю, Семеновна, окей или не окей?» — пожалуйста. Не хочется — чудесно. Другой вопрос, что некоторые английские (да и не только) слова ассимилируются из-за отсутствия нормального аналога в русском. Так это абсолютно нормальный процесс для любого языка. Вон, в английском есть слово «Sputnik». ;)
в английском есть слово "Privet"!
privet
сущ.; бот.
бирючина

Lingvo

Так же можете поискать на заБОРе, там есть [:|||||:] про это, вроде.
я знаю, это и есть с БОРа
Я к тому, что оно ни разу не значит то же, что и "Привет" в Русском языке.

Кстати, у них есть сокращённые разговорные обращения к родителям "mа" и "pa". Один в один как у нас. :)
я тоже читаю БОР и пользуюсь онлайн-словарями :)
"Па" и "ма" я никогда не использовал, вместо этого бы сказал "батя" и "мути" :)
А вот для меня обращение "мути" это новость!
Не знал такого. :)
сокращение от Mutter, типа вашего "ма"
Ах в этом смысле.
Смотря некоторые английские сериалы с субтитрами действительно слышал нечто похожее. Впрочем, ма я там тоже слышал. Вот только "батя", вроде как не говорят. Батя, вроде как, у нас говорят.
а он не понимает немецкого
Точнее я слышал ма и мо (от mother), чорт, я же английские сериалы смотрю, английские, не стоило так палиться...
Кстати, а у вас, в Германии, действительно к отцу обращаются "батя"? Или это, всё же, чисто русское?
не знаю, ни разу не слышал, кроме как в фильме "Мой сводный брат Франкенштейн"
UFO just landed and posted this here
Вспомнились перлы:

из шарпа:


if (value.toString().Length >= 5)
{
//false
}
else
{
//true
}


и из пыха:

if (true == false)
{
// на всякий случай
}


а еще суровые дядьки, писавшие ДЛЕ не знают что такое extension_loaded() и gd_info():

// ===============================================================
//
// ===============================================================
function gdversion(){
static $gd_version_number = null;
if ($gd_version_number === null) {
ob_start();
phpinfo(8);
$module_info = ob_get_contents();
ob_end_clean();
if (preg_match("/\bgd\s+version\b[^\d\n\r]+?([\d\.]+)/i",
$module_info, $matches)) {
$gdversion_h = $matches[1];
} else {
$gdversion_h = 0;
}
}
return $gdversion_h;
}
Это к тому, что не только индусы умеют выделиться - все из русских проектов взято
if (value.toString().Length >= 5)
{
//false
}
else
{
//true
}

это не шарп =) это жс
Хоть синтаксис и похож, но это все же был C#
в том то и дело что есть различие ...
может быть вам мсдн больше скажет:
http://msdn2.microsoft.com/en-us/library/system.object.tostring.aspx
да и библиотечке от мозиллы вы наверно больше доверяете чем мне:
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Object:toString

зы: найдите разницу ;)
:( я соврал, это не жс, но и не с# ... он и там и там выдаст ошибку ...
может это чья-то фантазия?:)
Недоучки есть везде и не только в Румынии, но и у нас их достаточно:)
Пишем одну чудо-программу, привожу по памяти кусок так, как он действовал. Код на C#, но я его не знаю, поэтому пишу как запомнилось. Оригинал привести не могу и лень искать в CVS.

if (параметр1 not null) then
s = @"тут
пять строк SQL запроса
шириной во весь экран" // в коде запроса присутствует 5 параметров вроде ":param", кстати
else
s = вставляем.параметр.в.строку(@"тут те же самые
пять строк SQL запроса шириной во весь экран
плюс ровно один and чего-то = {0}", параметр1);

if (параметр3 not null) then добавляем к строке s ещё один "and чего-то = {0}", естественно с подстановкой параметра2 в строку.

if (параметр3 not null) then добавляем к строке s ещё один "and чего-то = {0}", естественно с подстановкой параметра3 в строку.

// Тут два десятка строк внутренних разборок с параметром4.

if (параметр4 not null) then добавляем к строке s ещё один "and чего-то = {0}", естественно с подстановкой параметра4 в строку.

// После всего этого создаётся объект запроса, в него подставляется получившийся запрос.
// Потом идёт 5 строк с подстановкой параметров запроса (тех самых :param).
// И запрос, наконец, выполняется.

Впрочем, после меня там только исчез WTF с копипастом всего запроса, а сам запрос, наоборот, располнел. Что поделать, нужно было быстро поменять и другим заняться.
Вот это настоящий быдло-код!=)Посмеялся!=)
>>И не менее удачное сравнение строки с образцом, тот же проект:
>>if ((strtolower($fmultipledownload) != strtolower("YES")) &&
>>(strtolower($fmultipledownload) != strtolower("NO")) )

Используется, когда частенько меняются образцы слов, да и просто для надежности (программист элементарно может ошибиться в написании слова)... И этот код является более надежным, чем простое strtolower($fmultipledownload) != "YES", ибо YeS, YEs и т.п. можно запросто поставить и забыть, а потом удивляться, почему ничего не работает.


>>Это ещё что...Вы бы видели индийский код(я работаю в аутсорсинговой компании). Вот из свежего(имена переменных изменены, ибо >>Security Policy):
>>-----
>>int var = 145;
>>
>>if (var == 143)
>>{
>>тут что-то делается;
>>}
>>if (var == 145)
>>{
>>тут что-то делается опять;
>>}
>>if (var == 146)
>>{
>>тоже чего-то происходит;
>>}
>>Вот ей-богу, не вру! Так и написано!

Человеку очень часто приходится проверять работу программы и менять условия — не удивительно, что быстрее было бы изменить значение переменной прямо в коде и на месте. Стандартная ситуация. Что-то удивительное тут может увидеть только человек, никогда с такими ситуациями не сталкивавшийся.
Sign up to leave a comment.

Articles

Change theme settings