Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
The reason for composing the code like this is that the includes are inlined when creating a single file version of Adminer. Thus it's not possible to compose the code e.g. like this:
foreach (array("download", "table", ...) as $command) {
if (isset($_GET[$command])) {
include "./$command.inc.php";
break;
}
}
It's not about premature optimization. It's about knowingly structuring the code in a way that might seem weird to support inlining when creating a single file version.
IMHO, following changes will make code structure cleaner:
- wrap body of each .inc.php file into nice function;
- include all .inc.php files unconditionally, just like bootstrap.inc.php and tmp.inc.php.
This will not do any harm to single file version. And performance loss will be negligible.
compile.php достойно отдельного говнокода. Дали обезьяне ПХАР, но нет, не хочу ПХАР, хочу говноинклюды инлайнить. И самоя красота - минификатор ПХП. Минификатор! ПХП! Блять! Это же охуеть какая оптимизация, теперь шаблонизатор будет считывать на пару килобайт пробелов меньше. Ради этого стоило нагородить пиздец из регулярок, кодогенерации, эвала и call_user_func_array_suka_ebanaya().
После такого внезапно начинаешь любить крестошаблоны.
Кстати, у Страуструпа был очень неожиданный поворот где он перегружал операторы и показал что во-первых коммутативность это ложь (a + b) != (b + a), во-вторых a->b совсем не равно (*a).b . В этом месте я чуть не заплакал.
А еще было место где он возвращал ссылку из функции, и эта была ссылка на объект из циклического буфера и я волновался как же так ссылка сломается когда буфер переполнят, но он там написал коммент про это
> Почему никто не советует Страуструпа? Я его читал и мне нравилось.
Потому что он очень уныло пишет, скучно. Я его прочитал (версию для C++03, свежую уже не читал), но мейерс мне кажется гораздо более практичным и интересным стартом.
Ну и за код, набранный пропорциональным шрифтом, нужно давать по лысине.
Я 03 и читал, беленькую такую и там С++ на фоне моря:) В русском варианте правда. Мне казалось что Мейерс для тех кто уже немного умеет в С++, но я могу ошибаться.
А про шрифт он там объясняет, хотя я конечно не согласен.
[quote]
At first glance, this presentation style will seem ‘‘unnatural’’ to programmers accustomed to seeing
code in constant-width fonts. However, proportional-width fonts are generally regarded as better
than constant-width fonts for presentation of text. Using a proportional-width font also allows me
to present code with fewer illogical line breaks. Furthermore, my experiments show that most people
find the new style more readable after a short while
[/quote]
Ну нет. Похожие вещи должны выглядеть похоже. Очень сложно сделать нормальное форматирование для некоторых вещей, если ширина символов варьируется. В каком-нибудь хаскеле часто пишут
myFunctionName
:: (SomeConstraintOn a) -- Пожалуй, единственное преимущество :: для указания типа
=> SomethingWith a
-> SomethingElseWith a
В пропорциональных шрифтах ширина ::, =>, -> разная, и такая сигнатура будет выглядеть как говно.
В плюсцах, например, тоже можно форматировать код
int f(SomeReallyLongType a,
SomeOtherLongType b);
Удачи с угадыванием числа пробелов во второй строчке для пропорционального шрифта.
Короче пропорциональный шрифт для кода ещё хуже, чем табы.
Никогда не понимал нахрюка на табы.
Табы кастомизуются под каждого и занимают меньше места в коде.
Я хочу видеть таб как 4 спейса, ты как 8 (или как 2) и все счастливы.
Я всем всегда задаю этот вопрос, и все начинают что-то блекотать про то, как их подруга с ее парнем смешали в одном файле табы и пробелы и был пиздец.
На что я резонно спрашиваю: "а если не мешать?" и все сливаются.
>"а если не мешать?"
Хуй знает, но в питоне всех это так заебало что официально рекомендуются 4 пробела. При этом сам питон принимает любое количество.
Проблема будет мб если смотреть код не в ИДЕ и табы станут не 4 а 8 пробелов.
> смешать
Вот как раз смешанный стиль indent with tabs, align with spaces смотрится нормально. А выравнивание чистыми табами выглядит уёбищно при другом размере табов.
Если не смешивать, ты ограничен исключительно убогим форматированием кода. Если смешивать, нужно очень много дисциплины, чтобы отформатировать код правильно.
Если ты хочешь нормальное, произвольное форматирование, предыдущий пример (допустим, это всё вложенно) тебе придётся форматировать как-то так (␉ — таб, . — пробел)
␉␉int f(SomeReallyLongType a,
␉␉......SomeOtherLongType b);
Т.е. нужно думать, где какие символы нужно вставлять, чтобы код нормально выглядел при любой ширине таба. Делать такое руками — идиотизм и напрасная трата времени. Умный форматтер мог бы это делать, но как правило, такой код форматируется вручную ушлёпками, которые считают себя невероятно умными оптимизаторами и тычут табы как попало, но при этом не задумываются о последствиях. В итоге весь такой код выглядит как говно при ширине таба, отличной от ширина таба автора.
[quote]
␉␉int f(SomeReallyLongType a,
␉␉......SomeOtherLongType b);
[/quote]
ого, вот это реальный аргумент
первый раз в жизни мне кто-то внятно ответил
У некоторых текстовых редакторов есть опция «Оптимизировать пробелы», которая ⌊N/8⌋ первых пробелов тупо заменяет табами, а остаток (N mod 8) добивает пробелами (вместо восьмёрки может быть другое число).
Редакторы, заточенные под тарасоформатирование, мне пока не попадались.
> При этом листинг надо правильно раскрасить
Кстати, да. Если в питоне отказались от скобок, потому что все равно есть отступы - так почему бы не пойти дальше? Если комментарии и ключевые слова подсвечиваются разным цветом, почему бы не отличать одно от другого просто по цвету?
Основной цикл программы void while(int int)
{ bool true = true; Флажок прерывания while (true)
{
printf(Число: %i, int + 1);
...
}
}
Adminer was created when there was no support for PHAR and it still supports such PHP versions. Also, Adminer users are quite happy that they don't need to download (and also upload to their servers) 1.2 MB of code and they can use only e.g. 196 kB compiled version. One of the use cases for Adminer is to upload it to the server, do what you need and then delete it so the size (and also the number of files) is important.
It's quite funny to read your rants when it's obvious you don't know the context for conscious design decisions.
It is insane to do anything on production database.
The only correct approach is to deploy so called "migration script" to staging and then (in case of success) to production.
People who really use web interface to hack data on production servers should be cast to pit.
It is pretty clear of anyone outside of PHP world.
foreach (array("download", "table", ...) as $command) {
if (isset($_GET[$command])) {
include "./$command.inc.php";
break;
}
}
That wouldn't work with inlining the includes.
Rude!
- wrap body of each .inc.php file into nice function;
- include all .inc.php files unconditionally, just like bootstrap.inc.php and tmp.inc.php.
This will not do any harm to single file version. And performance loss will be negligible.
It can't evaluate loops and relies heavily on the structure of this file.
haha! You just made my day
Look at this: з.
Look at this :з.
После такого внезапно начинаешь любить крестошаблоны.
E_ALL & ~E_NOTICE?
17 байт
> 6135
4 байта
Оптимизация же. Меньше размер файла и не нужно вычислять значение в рантайме
Я тоже после такого начал, но как их выучить?
Я уже спрашивал, никто не ответил, как выучить С++?
Зачем выучивать C++? Просто пиши программы на нём.
Многие программисты тридцать лет программистами работают, хотя языка, на котором пишут, не знают, и программировать не умеют.
— ты знаешь как это делается?
— Неа
— Я тоже. Давай тогда на питоне попробуем
Может книжку посоветуешь?\'"
Правда он там лукавит конечно говоря что обычные си знать не нужно, и сразу тебя макает в -> и *
Советую почитать Страус Трупа, очень интересный роман, неожиданный начало, неожиданный середина, неожиданный повороты сюжета, неожиданный концовка...
Кашицын?
А еще было место где он возвращал ссылку из функции, и эта была ссылка на объект из циклического буфера и я волновался как же так ссылка сломается когда буфер переполнят, но он там написал коммент про это
Потому что он очень уныло пишет, скучно. Я его прочитал (версию для C++03, свежую уже не читал), но мейерс мне кажется гораздо более практичным и интересным стартом.
Ну и за код, набранный пропорциональным шрифтом, нужно давать по лысине.
А про шрифт он там объясняет, хотя я конечно не согласен.
At first glance, this presentation style will seem ‘‘unnatural’’ to programmers accustomed to seeing
code in constant-width fonts. However, proportional-width fonts are generally regarded as better
than constant-width fonts for presentation of text. Using a proportional-width font also allows me
to present code with fewer illogical line breaks. Furthermore, my experiments show that most people
find the new style more readable after a short while
[/quote]
А с другой стороны - ну да, в общем-то и похуй на ширину символов (если нет тарасоформатирования), нормально читается.
В память об алфавитно-цифровых с их знакоместами?
Ну нет. Похожие вещи должны выглядеть похоже. Очень сложно сделать нормальное форматирование для некоторых вещей, если ширина символов варьируется. В каком-нибудь хаскеле часто пишут
В пропорциональных шрифтах ширина ::, =>, -> разная, и такая сигнатура будет выглядеть как говно.
В плюсцах, например, тоже можно форматировать код Удачи с угадыванием числа пробелов во второй строчке для пропорционального шрифта.
Короче пропорциональный шрифт для кода ещё хуже, чем табы.
Табы кастомизуются под каждого и занимают меньше места в коде.
Я хочу видеть таб как 4 спейса, ты как 8 (или как 2) и все счастливы.
Я всем всегда задаю этот вопрос, и все начинают что-то блекотать про то, как их подруга с ее парнем смешали в одном файле табы и пробелы и был пиздец.
На что я резонно спрашиваю: "а если не мешать?" и все сливаются.
Хуй знает, но в питоне всех это так заебало что официально рекомендуются 4 пробела. При этом сам питон принимает любое количество.
Проблема будет мб если смотреть код не в ИДЕ и табы станут не 4 а 8 пробелов.
Вот как раз смешанный стиль indent with tabs, align with spaces смотрится нормально. А выравнивание чистыми табами выглядит уёбищно при другом размере табов.
Если не смешивать, ты ограничен исключительно убогим форматированием кода. Если смешивать, нужно очень много дисциплины, чтобы отформатировать код правильно.
Если ты хочешь нормальное, произвольное форматирование, предыдущий пример (допустим, это всё вложенно) тебе придётся форматировать как-то так (␉ — таб, . — пробел)Т.е. нужно думать, где какие символы нужно вставлять, чтобы код нормально выглядел при любой ширине таба. Делать такое руками — идиотизм и напрасная трата времени. Умный форматтер мог бы это делать, но как правило, такой код форматируется вручную ушлёпками, которые считают себя невероятно умными оптимизаторами и тычут табы как попало, но при этом не задумываются о последствиях. В итоге весь такой код выглядит как говно при ширине таба, отличной от ширина таба автора.
␉␉int f(SomeReallyLongType a,
␉␉......SomeOtherLongType b);
[/quote]
ого, вот это реальный аргумент
первый раз в жизни мне кто-то внятно ответил
Редакторы, заточенные под тарасоформатирование, мне пока не попадались.
Я не понимаю вообще людей, которые руками "красиво" отбивают код, словно бы пишут на семблере под дос в edit.com в 1989-м году
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSPG373OhbRk3oe3n-mlyH5dB9glqBPklxs2mfP-qt2FQ&s=10
https://daniel-grishin.livejournal.com/871893.html
– Кто такой генерал Пферд?
– Лошадь, – сказал Р. Квадрига. – Конь. Дер пферд. Или дас.
– А все-таки, – сказал Виктор, – знает кто-нибудь такого генерала?
– Когда я служил в армии, – сказал доктор Р. Квадрига, – нашей дивизией командовало его превосходительство генерал от инфантерии Аршманн.
– Ну и что? – сказал Виктор.
– Арш по-немецки – задница, – сообщил молчавший до сих пор Голем. – Доктор шутит.
– А где вы слыхали про генерала Пферда? – спросил Павор.
– В кабинете у полицмейстера, – ответил Виктор.
– Ну и что?
– И все. Так никто не знает? Ну и прекрасно. Я просто так спросил.
– А фельдфебеля звали Баттокс, – заявил Р. Квадрига. – Фельдфебель Баттокс.
– Английский вы тоже знаете? – спросил Голем.
– Да, в этих пределах, – ответил Р. Квадрига.
Стругацкие. Хромая судьба.
Хранить исходник в Ворде, а перед компиляцией использовать doc2txt (Apache POI) в качестве препроцессора.
Кстати, да. Если в питоне отказались от скобок, потому что все равно есть отступы - так почему бы не пойти дальше? Если комментарии и ключевые слова подсвечиваются разным цветом, почему бы не отличать одно от другого просто по цвету?
Основной цикл программы
void while(int int)
{
bool true = true; Флажок прерывания
while (true)
{
printf(Число: %i, int + 1);
...
}
}
Правда шаблоны ты врядли там будешь создавать
Ты так говоришь, как-будто в среднестатистическом проекте (не либе) кто-то пишет сложные шаблоны.
` '
Лучше любить неизвестное
http://cppstudio.com/wp-content/images/books/osvoy_samost_cpp.png
It's quite funny to read your rants when it's obvious you don't know the context for conscious design decisions.
The only correct approach is to deploy so called "migration script" to staging and then (in case of success) to production.
People who really use web interface to hack data on production servers should be cast to pit.
It is pretty clear of anyone outside of PHP world.