- 1
- 2
- 3
- 4
<local name="jhgjkgdfghd" />
<loadfile property="jhgjkgdfgh" srcfile="@{filepath}" failonerror="false">
...
</loadfile>
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+127
<local name="jhgjkgdfghd" />
<loadfile property="jhgjkgdfgh" srcfile="@{filepath}" failonerror="false">
...
</loadfile>
Я очень долго втыкал, почему один из овер 9000 Ant-скриптов валится....
Smekalisty 21.05.2014 11:54 # 0
kostoprav 21.05.2014 12:36 # 0
Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other. The main known usage of Ant is the build of Java applications. Ant supplies a number of built-in tasks allowing to compile, assemble, test and run Java applications. Ant can also be used effectively to build non Java applications, for instance C or C++ applications. More generally, Ant can be used to pilot any type of process which can be described in terms of targets and tasks.
bormand 21.05.2014 13:34 # +2
roman-kashitsyn 21.05.2014 13:41 # +1
kostoprav 21.05.2014 13:52 # 0
roman-kashitsyn 21.05.2014 13:55 # 0
kostoprav 21.05.2014 14:09 # 0
wvxvw 21.05.2014 14:24 # 0
SCons - могло бы быть вообще замечательно, но разработчики заточены исключительно на компиляцию Ц/Ц++ кода, и забивают немного на все остальное.
Fabric - вообще замечательно.
С того момента как открыл для себя scriptdef жизнь с Антом стала вполне сносной. Хотя, конечно, могло бы быть и лучше...
guest6 08.09.2023 14:11 # 0
Какое отношение Fabric -- library designed to execute shell commands remotely -- имеет к системам сборки?
Ты похоже вообще не понимаешь, что такое Make, и думаешь, что это шелл-скрипт такой
Desktop 08.09.2023 14:23 # +1
скорее всего, 10 лет назад была какая-то херота под таким названием, только всплыла кверху брюхом с тех пор
guest6 08.09.2023 14:25 # 0
так что скорее всего это типичная сивоноская шизифазия
Desktop 08.09.2023 14:27 # 0
guest6 08.09.2023 14:29 # 0
ropuJIJIa 08.09.2023 15:19 # +1
guest6 08.09.2023 16:30 # 0
На самом деле
OMake is a build system designed for scalability and portability. На перле
guest6 08.09.2023 23:41 # 0
Это не правда
https://govnokod.xyz/_16028/#comment-228653
roman-kashitsyn 21.05.2014 16:02 # +1
Честно говоря, я сначала портировал на maven, но мне нужно было делать нестандартные вещи, а тут gradle-у нет равных
3.14159265 21.05.2014 17:31 # +1
Groovy so slooow. Скалка хоть на этапе конпеляции тупит, зато потом быстро.
guest6 08.09.2023 13:46 # 0
ropuJIJIa 08.09.2023 14:05 # 0
guest6 08.09.2023 14:10 # 0
ropuJIJIa 08.09.2023 14:11 # 0
guest6 08.09.2023 14:12 # 0
ropuJIJIa 08.09.2023 15:20 # 0
guest6 08.09.2023 17:01 # 0
Есть .md файл, из него нужно сделать .html файл и .pdf файл.
Гомосапиенс решит ее makeом (или одним из сотни его колонов на разных языках). А пыхоинфузория?
ropuJIJIa 08.09.2023 17:04 # 0
guest6 08.09.2023 18:34 # 0
Если результирующие файлы известны сначала, то физгармонию с foreach можно убрать.
Вот как работает
002s, понимаешь?
guest6 08.09.2023 23:14 # 0
Ты тупо кладешь .md файлы в git, а он их собирает в html и выкладывает в documet root nginxа.
Система надежная как понос, и быстрая как швейцарские часы. Ей не то что j123, есть и селерон Тараса сгодится.
Причем поскольку перебираются и выкладываются только измененные файлы, то дата не сбивается, и работает и http кеш. А еще бекап. Всё правильно и удобно.
А что бы сделала пыхомакака вчера вкатившаяся в айти из ноготочного салона?
Макака поствила бы свой обоссаный мускуль, написала бы там обоссаный скрипт на пхп который генерил бы на лету html из говна в базе, обосаралась бы с кешем стопудово, и вручную напилила бы версионирование.
Desktop 08.09.2023 23:53 # 0
guest6 09.09.2023 00:11 # 0
Desktop 09.09.2023 00:18 # 0
ropuJIJIa 09.09.2023 01:05 # +1
guest6 09.09.2023 01:18 # 0
А пыхер бы что, и генерацию HTML сам писал?
ropuJIJIa 09.09.2023 01:26 # 0
1. Как у тебя. Зачем ты вообще ЯП упоминал?
2. Есть нативные расширения для парсинга Марка-дауна:
https://pecl.php.net/package/markdown
https://pecl.php.net/package/sundown
И ненативные библиотеки:
https://packagist.org/?query=markdown
Desktop 09.09.2023 01:28 # 0
guest6 09.09.2023 01:31 # 0
Desktop 09.09.2023 01:35 # 0
guest6 09.09.2023 01:30 # 0
ropuJIJIa 09.09.2023 01:33 # 0
guest6 09.09.2023 01:35 # 0
Я спросил, как тогда пыхер решит такую задачу:
>>>
Есть .md файл, из него нужно сделать .html файл и .pdf файл.
>>>
Ты скинул ссылки на pecl.
Ну так как он её решит?
ropuJIJIa 09.09.2023 01:39 # 0
Про ненужность систем сборки ты сам сделал вывод.
Да, я скинул ссылки на pecl. Эти парсеры не обязывают конвертировать md в HTML на каждый запрос. Никто не мешает сделать кэш. А как его реализовать, в файле или в СУБД, зависит от условий задачи.
guest6 09.09.2023 01:45 # 0
Твои слова: В «PHP» нет вообще никакой «сборки».
>> Никто не мешает сделать кэш. А как его реализовать, в файле или в СУБД
"Никто не мешает" слудет читать как "но можно намкароёбить"?
Я привел систему с "кешем" из коробки, а мне предлагается сделать свой.
Desktop 09.09.2023 01:47 # +1
guest6 09.09.2023 01:50 # 0
каких?
Desktop 09.09.2023 01:52 # 0
Возможно теги
guest6 09.09.2023 01:55 # 0
Эта информация есть на файловой системе. Именно она позволяет мне пересобирать и копировать только измененные, а браузеру клиента позволяет кешировать.
SO предлагает теги хранить прямо в md
Desktop 09.09.2023 01:57 # 0
guest6 09.09.2023 02:02 # 0
Если я сделаю clone, то даты проебутся, увы
Desktop 09.09.2023 01:58 # 0
А поиск по ним как будет работать?
guest6 09.09.2023 02:04 # 0
А зачем мне поиск в статическом сайте? Где его запускать?
В изначальном варианте таких требований не было, но вот уже появился поиск по тагам, а Иканус там уже наверное хайлоад несет, судя по вопросу про гитхаб.
Сейчас будет доказано, что решение не скейлится на миллион одновременных пользователей, и не поддерживает хранение видео-кружочков.
Desktop 09.09.2023 02:07 # 0
guest6 09.09.2023 02:10 # 0
Да и MySQL у FB стопудово кастомно собранная и перепатченная.
https://launchpad.net/mysqlatfacebook/51
guest6 10.09.2023 04:30 # 0
ropuJIJIa 09.09.2023 01:49 # 0
Твои слова: В «PHP» нет вообще никакой «сборки».
Но ведь нет же.
guest6 09.09.2023 01:51 # 0
ropuJIJIa 09.09.2023 01:51 # 0
Да, неплохо. А теперь представь себе, что ты пишешь аналог Гитхаба.
guest6 09.09.2023 01:57 # 0
guest6 08.09.2023 23:44 # 0
3.14159265 24.05.2014 00:52 # 0
Чем sbt не угодил?
guest6 09.09.2023 02:12 # 0
9 лет прошло, а всё еще тормозной
3.14159265 21.05.2014 17:29 # +2
>Даже мейкфайлы будут подекларативней муравья.
В мейкфайлах свои бутхурты типа табов, переносов строк.
Об autoconf/automake даже говорить не буду - срань жуткая.
bormand 21.05.2014 20:14 # +4
И он не умеет в пробелы в именах. Зато умеет пересобирать только необходимый минимум, в зависимости от даты модификации (очень актуально для тормознутых крестокомпиляторов). Ант так уже научился?
> Об autoconf/automake даже говорить не буду - срань жуткая.
Согласен. Об этом даже есть анекдот: "Увидел книгу 'die autoconf', согласился с автором. И только потом узнал, что она на немецком".
3.14159265 21.05.2014 20:21 # 0
Сталкивался, полезнейшая мега-фича, очень порадовала, особенно когда поменял пару строк.
>тормознутых крестокомпиляторов
yasm бывает дольше крестокомпилера работает.
>Ант так уже научился?
Дык просто юзайте инкрементальный компилер.
bormand 21.05.2014 20:27 # +2
Пиздец. Сделать асм, который работает медленнее крестокомпиляторов - это надо было постараться.
3.14159265 21.05.2014 20:35 # +1
Но там еще и свой препроцессор есть, и когда много глобальных переменных он начинает жутко тупить.
3.14159265 21.05.2014 20:42 # +1
Кстати. Недавно квадратичную сложность таки пофиксили, причем я даже знаю кто и почему. Если кто юзает старый 1.20 - бегите обновляться.
Increases compilation speed of files with a large number of macros by around 20x.
https://github.com/yasm/yasm/commit/e32ff2c2abc22532a58c9b687d922500d23fd709
bormand 21.05.2014 20:45 # +1
Эээ, размер хеш-таблички под глобалки - 32 корзинки? О_о
> or even have the hash table automatically expanding when necessary
О_о. У них там каменный век? Пришло время растянуть хеш. Хеш сам не растянется. И ведь это довольно свежий форк nasm'а, а не окаменелости 20го века...
Хотя в php еще хуже было - там ключем в хеше была длина имени. И автор старался называть функции так, чтобы они не кучковались по длине... Пруф: http://www.i-programmer.info/news/98-languages/6758-the-reason-for-the-weird-php-function-names.html
3.14159265 21.05.2014 20:47 # +1
Бугага, я тоже посмеялся. Потому привёл сцылочку как "сделать асм, который работает медленнее крестокомпиляторов".
Ёпты, ну нету в сишке нормальных мап из коробки.
Хотя тот же fasm (написанный сам на себе) летает с дикой скоростью.
bormand 21.05.2014 20:57 # +2
Ну ёпты, можно ведь написать/позаимствовать.
Как вариант - можно писать компилер не на сишке, а на чем-то более высокоуровневом. Все-таки компилятор - не неотъемлемая часть системы, а девелоперы вполне потерпят небольшую зависимость (рантайм крестов к примеру).
P.S. Сейчас гентоводы закидают меня какашками.
3.14159265 21.05.2014 21:07 # 0
Это хорошая иллюстрация к стереотипу: "сишка - это поцарски и быстро. потому что в ней ничего сложного и лишнего".
А так же подтверждение истины:
Губят ЦП не ЯВУ, губят ЦП O(N³).
Потому что экспоненциальность алгоритмов важнее языка
WGH 21.05.2014 23:13 # 0
Пользователи Gentoo и (чуть в меньшей степени) FreeBSD негодуют.
3.14159265 22.05.2014 01:17 # 0
А чего им негодовать. Кресты чтоли где-то не поддерживаются? Да для сборки разного софта зачастую нужны всякие скриптовые языки типа пёрла, и обоих пейсонов 2/3, а в запущенных случаях руби. Те же асмы, и куча всяких мелких тулзов - стоит пособирать разок всё руками чтобы знать что негодовать тут нечего.
Пользователям генту надо наоборот радоваться что сборка будет вестись десятки раз быстрее, с мапой из std.
Или жизнь станет скучна и неинтересна без самого процесса сборки и томного ожидания её окончания, если всё быстро отработает?
WGH 22.05.2014 01:33 # 0
ropuJIJIa 08.09.2023 14:20 # 0
https://govnokod.ru/27644#comment671001
Их подозрительно много.
guest6 08.09.2023 14:23 # 0
guest6 08.09.2023 18:43 # 0
Джавушок -- анскильный путишок прибегает, и кукаречет:
Ко-ко-ко, наш джавий хешмеп перформанснее сишного `std::map`, джава победила плюсы.
Конечно, говно, только плюсовый
Keys are sorted by using the comparison function Compare. Search, removal, and insertion operations have logarithmic complexity. Maps are usually implemented as Red–black trees
А hashMap это хеш с бакетами.
3.14159265 21.05.2014 20:50 # +1
> И автор старался называть функции так
Лол, так это у них таблица виртуальных функций!
>У них там каменный век? Пришло время растянуть хеш. Хеш сам не растянется.
Так это просто левый чувак, который много им компиляет заебался ждать и прислал такой quik'n'dirty фикс.
wvxvw 21.05.2014 23:41 # 0
guest6 09.09.2023 04:06 # 0
roman-kashitsyn 22.05.2014 10:31 # +1
Жабий компилятор настолько оптимизирован на батч-обработку, что в 99.9% случаев существенно быстрее просто перекопмилять весь проект целиком, чем пофайлово проверять, что нуждается в перекомпиляции и натравливать жабий компилер на отдельных файлах.
WGH 22.05.2014 10:51 # +1
roman-kashitsyn 22.05.2014 11:12 # 0
guest 22.05.2014 12:01 # 0
roman-kashitsyn 22.05.2014 12:10 # +1
Что значит с холодным запуском? Ты про кэш файловой системы?
Несколько раз подряд запускал, результаты одинаковые.
guest 22.05.2014 12:34 # 0
roman-kashitsyn 22.05.2014 12:44 # +1
Иде, вестимо, не нужно пофайлово проверять, что поменялось, она и так знает. Речь о том, что инкрементальный компилер для типичных жабосборок не особо и нужен.
guest6 09.09.2023 04:02 # 0
guest6 08.09.2023 14:21 # +1
Во истиниу, место жаваебов и их скриптодрузей на помойке
Desktop 08.09.2023 14:26 # 0
> минимальную сишную программу
– проснись, ты обосрался
guest6 08.09.2023 14:30 # 0
Desktop 08.09.2023 14:32 # 0
и в чём там такая сложность? склеить хедеры препроцессором и?
guest6 08.09.2023 14:33 # 0
define "минимальную сишную программу"
> склеить хедеры препроцессором и?
да, ну все макросы раскрыть
Desktop 08.09.2023 14:35 # 0
guest6 08.09.2023 19:31 # 0
guest6 08.09.2023 19:35 # 0
И да: это значит, что в его молодости функцию можно было вызвать с неправильным числом аргументов неправильного типа, все скомпилировать, слинковать, и пососать письку уже в рантайме, да еще и очень необычную.
Такая кукарямба бывает еще в древнейшей скриптушне типа перла с башем
guest6 08.09.2023 19:39 # 0
Desktop 08.09.2023 20:03 # 0
guest6 08.09.2023 20:24 # 0
guest6 08.09.2023 22:10 # 0
guest6 08.09.2023 20:30 # 0
Вот минимальная программа на С:
Soul_re@ver 08.09.2023 20:48 # 0
main(){}
guest6 08.09.2023 20:57 # 0
Ноль байт. Меньше не могу.
Линкер падает потом, но тут уж я не виноват
Desktop 08.09.2023 21:01 # 0
ISO 08.09.2023 21:01 # 0
https://gcc.godbolt.org/z/Tc4d8s48d
Компилируется, линкуется.
guest6 08.09.2023 21:06 # 0
ISO 08.09.2023 21:18 # 0
Линкер для линковки ищет символы, и такой вот «main» его вполне устраивает (хотя с точки зрения Стандарта это наверняка UB).
ISO 08.09.2023 21:20 # 0
https://gcc.godbolt.org/z/Wj979386G
guest6 08.09.2023 21:24 # 0
guest6 08.09.2023 22:52 # 0
А вот смычка компилера с линкером из конца прошлого века в жопу клюнула.
guest6 08.09.2023 23:07 # +1
на самом деле в _start но тут не важно
guest6 10.09.2023 04:42 # 0
guest6 10.09.2023 10:04 # +1
ropuJIJIa 11.09.2023 01:57 # 0
Смотрите, как надо:
Теперь хуета должна слинковаться.
ropuJIJIa 11.09.2023 02:09 # 0
ropuJIJIa 11.09.2023 02:12 # 0
guest6 11.09.2023 02:55 # 0
я думаю, это com под дос из одной инструкции прерывания 21 для выхода в дос
скольо это байт?
ps; или ее нужно по смещению типа 100h пхать?
guest6 11.09.2023 03:09 # 0
INT 20h — два байта.
Лайфхак: вместо неё использовать RETN — один байт. В стеке обычно на момент запуска лежит ноль, а PSP[0] — это те самые два байта INT 20h.
Итого: минимальный размер COM-файла — один байт.
guest6 11.09.2023 03:41 # 0
guest6 11.09.2023 08:45 # 0
RIP-based адресация до amd64 была только для инструкций jmp и call, а для инструкций с данными нужно было указывать смещение относительно начала текущего сегмента, а для этого нужно знать, куда ОС загрузила образ.
Для EXE директива ORG не нужна, ибо нам пофигу, по какому адресу он загрузится: DOS заполнит таблицу фиксапов (которой у кома нету).
guest6 11.09.2023 03:58 # 0
bakagaijin 21.05.2014 20:35 # 0
bormand 21.05.2014 20:54 # 0
Все верно, там множественное число. А название книги я переврал:
http://www.amazon.co.uk/Die-GNU-Autotools-Leitfaden-Softwaredistribution/dp/3936546487
bakagaijin 21.05.2014 21:00 # 0
3.14159265 21.05.2014 21:02 # 0
The goal of Automake is to remove the burden of Makefile maintenance from the back of the individual GNU maintainer (and put it on the back of the Automake maintainer).
Цель утилит Automake - убрать бремя сопровождения Makefile-файлов с плеч программиста и переложить его на разработчиков Automake.
Вопрос только в том кто же будет нести бремя сопровождения am-файлов.
bormand 21.05.2014 21:15 # +1
А вот бремя написания мейкфайла он таки убирает. Руками мейкфайл с поддержкой out of source build и всех стандартных целей (all, clean, distclean, install с кошерной поддержкой DESTDIR, dist, check и т.п.) писать вообще заибешься. И если где-то попадается мейкфайл, написанный руками - он представляет собой либо унылое и неподдерживаемое говно, либо в нем всего пара таргетов (all и clean).
3.14159265 21.05.2014 21:17 # 0
Ну то что мейкфайлы какаша не означает что автоконф шоколад. И что убрав одно бремя, он не заменит его на еще более тяжелое.
А кто что думает про cmake? В сравнении с гнусными тулзами мне он как-то больше нравится.
bormand 21.05.2014 21:19 # 0
Синтаксис - ебанутый. Но в целом, если не требуется писать свои модули на его языке, то для крестов и сишки очень даже юзабельно, мне нравится.
bormand 21.05.2014 21:25 # 0
Он еще вторую проблему пытается решить - как-то адаптировать сборочную среду и хидеры ко всякому нахуй не нужному говну мамонта, которое ты никогда не увидишь.
Если проект простой, и если свои тесты и реакцию на них не мутить - входные файлы для автотулзов получаются довольно компактными, буквально десять-двадцать строчек.
roman-kashitsyn 22.05.2014 08:54 # 0
Абсолютное говно, но лучше ничего пока нет. Юзать в принципе можно:
1) Out-of-source билды из коробки. Must Have.
2) Можно писать реюзабельные сборки. Если написать makefile для модуля, то соединить его с другим makefile довольно проблематично. Грамотно написанный CMakeLists.txt приклеивается к произвольному cmake-проекту гораздо проще.
3) Терпимое апи для поиска внешних либ.
В остальном cmake-полный финиш.
Упоротые гугловцы написали свой gyp для хромиума, который чуть лучше в плане дизайна, но настолько сырой, что это даже не смешно. Например, в случае ошибок во входном файле, он иногда падает с ошибкой обращения по индексу. А теперь они додумались написать Генератор Генераторов (gn - на самом деле, он должен просто генерить ниндзя-файлы, но должен заодно генерить и gyp-файлы), гнушники оценят.
Что показательно, у гугла есть нормальная внутренняя система сборки, но они никому её не показывают.
я джва года жду аналог gradle для крестов с менеджментом зависимостей, автозагрузкой модулей с гитхаба и декларативным скриптовым дсл (lua в теории подходит, груви не нужен). Когда-нибудь терпение кончится и я сяду писать свой.
bormand 22.05.2014 08:56 # 0
А у гредла нету модулей для крестов? Только жаба, только хардкор?
roman-kashitsyn 22.05.2014 10:12 # +1
Есть. Но распространять сишные либы в бинарном виде - это кощунство. Только исходники, только хардкор.
chtulhu 22.05.2014 09:49 # 0
вроде как qbs от Qt'шников подходит
roman-kashitsyn 22.05.2014 10:28 # 0
> от Qt'шников
Qt-way мне никогда не был близок. + очередной язык.
Как дистрибьютятся модули? В собранном виде? Как резолвятся конфликтующие версии в транзитивных зависимостях (A -> (B v1.0 -> C v0.5), A -> (D v2.0 -> C v0.8))? Можно указать репу с гитхаба как модуль?
Есть положительный опыт использования в случае произвольных проектов, не Qt?
guest6 09.09.2023 02:15 # 0
зачот
> терпение кончится и я сяду писать свой.
ну как, сел?
guest 22.05.2014 12:35 # 0
bormand 22.05.2014 13:05 # +1
guest 22.05.2014 13:42 # +1
guest6 09.09.2023 02:13 # 0
Любая система сборки начиная с Make это может, но не у всех есть ебланский XMLный синтаксис
guest 21.05.2014 19:08 # +1
gost 21.05.2014 21:09 # 0
3.14159265 21.05.2014 21:26 # +1
http://husa.su/media/cache/c0/a8/c0a8ad6ebf9f529ab032fc3c30911a80.jpg
guest6 08.09.2023 18:51 # 0
жопа едет, ноги нет
guest6 08.09.2023 21:06 # 0
guest6 08.09.2023 21:14 # 0
В чём причина течки по ЛГБТ?
В чём причина течки?
guest6 08.09.2023 21:16 # 0
guest6 08.09.2023 23:45 # 0
https://pbs.twimg.com/media/F22RLyWW4AAkqg4?format=png&name=smal l
guest6 09.09.2023 03:45 # 0
Если ваш проект собирается одной очевидой командой, be it msbuild, make all, configure && make, gradle build итд итп, то вы straight.
Если нужно почитать небольшой ридми, поставить Ruby нужной версии и m4, а затем запустить вот такую команду, то вы латентный.
Наконец если для сборки вашего продукта нужно связаться с вами в слаке или "почитать код", то вы пидарас.
Бывают еще такие продукты, которые собираются только на машине разработчика. Их писали копрофаги
guest6 09.09.2023 03:51 # 0
Обычно декларативный DSL превращается адскую императивную лапшу, и всё портит.
Давайте я порекламирую друстню и ее систему сборки -- каргу.
У карги есть `Cargo.toml` (toml -- Tom's non obvious fuckup language или как-то так), он чисто декларативный, примерно как `.ini` файлы (тут знактоки `.inf` формата хрюкнули, но пофиг).
Зависимости и таргеты и всякие профили сборки описываются там.
Но
У карждого крейта может быть ` build.rs`, и вот там уже можно императивно на рустне писать чо угодно. Хоть блядь котиков в твиттер пости при сборке.
Получается пиздато
А разве нет??