- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
// https://godbolt.org/z/PPAWM0
#include <embed>
#include <cstdint>
constexpr std::uint64_t val_64_const = 0xcbf29ce484222325u;
constexpr std::uint64_t prime_64_const = 0x100000001b3u;
inline constexpr std::uint64_t
hash_64_fnv1a_const(const char* const ptr, std::size_t ptr_size, const std::uint64_t value = val_64_const) noexcept {
return (ptr_size == 1)
? value :
hash_64_fnv1a_const(&ptr[1],
ptr_size - 1,
(value ^ static_cast<std::uint64_t>(static_cast<char>(*ptr))) * prime_64_const);
}
int main () {
constexpr std::span<const char> art_data = std::embed("/dev/urandom", 32);
constexpr std::uint64_t actual = hash_64_fnv1a_const(art_data.data(), art_data.size());
return static_cast<int>(actual);
}
j123123 10.11.2019 19:25 # 0
> Every C and C++ programmer -- at some point -- attempts to #include large chunks of non-C++ source into their code.
Если тупо нужно вклинить картинку в файл, можно обойтись и без этой хуйни. Можно объектник сделать из бинарника вот таким способом https://balau82.wordpress.com/2012/02/19/linking-a-binary-blob-with-gcc/
А если хотите крестовыми констэкспрами обрабатывать байтики которые подгружены из файлов, то вам наверно к врачу надо
Fike 10.11.2019 23:39 # 0
Но можно ж встроить это в язык и не ебаться лишний раз?
j123123 10.11.2019 23:45 # 0
guest8 10.11.2019 23:50 # −999
j123123 10.11.2019 23:54 # 0
j123123 10.11.2019 23:50 # 0
guest8 10.11.2019 23:55 # −999
guest8 11.11.2019 01:55 # −999
Fike 10.11.2019 23:55 # 0
JVM-поебень: умеет, никто не суёт видео
PHP (PHAR): умеет, никто не суёт видео
С++: лопаеца
j123123 11.11.2019 00:12 # 0
> JVM-поебень: умеет, никто не суёт видео
> PHP (PHAR): умеет, никто не суёт видео
Что именно оно там умеет? Там в компилтайме можно допустим из встроенного видео взять такой-то кадр и сконвертить в JPG, байтики которого записать в массив? А в крестоговне это сделать вполне реально через эту хуйню, если переписать на constexpr-ы кодек для декодирования видео и конвертер в jpg.
Fike 11.11.2019 02:13 # 0
j123123 11.11.2019 11:58 # +2
Ну во-первых ресурсы можно хранить отдельными файлами, возьми какую-нибудь игрушку на ПК - там контент разбросан по разным файлам, и игра их подгружает в случае надобности. Нахуй все это запаковывать в один бинарник?
Если вспомнить например X-COM: UFO Defence https://ru.wikipedia.org/wiki/X-COM:_UFO_Defense
> Игра проходит в двух режимах, стратегическом («Geoscape») и тактическом («Battlescape»). Как считает автор GameSpy, игра объединяет игровой процесс серии Gold Box с 4X-игрой типа Master of Orion, и в результате получается смесь двух значительно разных игр. Технически в версии для DOS оба режима реализованы как два независимых исполняемых файла, которые вызывают друг друга при переходе игрока из одного режима в другой.
Т.е. там фактически было два разных бинарника. И ничего, никто от этого не умер.
Во-вторых, ладно хер бы с ним, пусть включают бинарник в файл какой-нибудь директивой, ну типа
Я против этого не возражаю, но мне это лично ничего не упрощает.
Но эти мудилы хотят этот файл обрабатывать в компилтайме крестовой constexpr метушней, вот это уже перебор.
Desktop 11.11.2019 14:17 # +1
koshka_Sviborga 11.11.2019 14:37 # 0
koshka_Sviborga 11.11.2019 14:39 # 0
http://govnokod.ru/25239#comment447520
bootcamp_dropout 11.11.2019 15:14 # +1
Fike 11.11.2019 15:12 # 0
чтобы поставлять это одним бинарником и не ебать мозг юзеру
j123123 11.11.2019 15:23 # 0
gost 11.11.2019 15:31 # +1
j123123 11.11.2019 15:35 # +1
3oJIoTou_xyu 11.11.2019 15:41 # +1
Поэтому я за lua.
gost 11.11.2019 15:46 # 0
guest8 11.11.2019 15:54 # −999
gost 11.11.2019 16:03 # 0
3oJIoTou_xyu 11.11.2019 16:04 # 0
gost 11.11.2019 16:08 # 0
3oJIoTou_xyu 11.11.2019 16:01 # +1
UE.
Насколько мне расказал знакомый, который думал где выбрать где разрабатывать игору. Посмотрел на UE, сказал что там на рендеринг такой жирнючий болт положили. Что в UE практически не возможно сделать песочницы, по типу майнкампфа. Зато зацените какой графоний, ну вы чего. В итоге знакомый плюнул на все эти движки и пошел свой писать на с++. Больше я его не видел.
другие движки не беру. Потому что блядогенератор в основном в этих "популиализированых" движков.
gost 11.11.2019 16:05 # 0
«JavaScript» от мира геймдева, чесслово.
guest8 11.11.2019 19:34 # −999
TOPT 11.11.2019 19:43 # 0
bormand 11.11.2019 20:26 # +1
Тогда лучше стрим на твиче.
gost 11.11.2019 20:48 # +1
bormand 11.11.2019 22:13 # +1
TOPT 12.11.2019 06:32 # 0
guest8 12.11.2019 13:29 # −999
bormand 12.11.2019 16:49 # 0
Desktop 11.11.2019 16:13 # 0
gost 11.11.2019 16:26 # 0
Desktop 11.11.2019 16:31 # 0
gost 11.11.2019 17:16 # +1
Desktop 11.11.2019 17:27 # +2
3oJIoTou_xyu 11.11.2019 16:38 # +1
в итоге разработчику просто она заебала, он решил бабос собрать и выпустил сырую игру как релиз и больше её не фиксит. Вот же гнида!
https://youtu.be/jKFKTkQKMf4
gost 11.11.2019 17:17 # 0
Для BW фиксы подвозят, но какие-то… мелкие. И раз в несколько месяцев, да.
Fike 11.11.2019 21:55 # 0
Я не говорю, что всё всегда надо собирать одним бинарем, я говорю, что такая необходимость есть, и в вышеупомянутых языках она есть неспроста.
j123123 12.11.2019 12:12 # +1
Нет, ты не понял. Эта херота в крестах только данные вклинивает (типа инициализируй мне вот такой-то массивчик байтиками из такого-то файла). Код ты так не вклинишь. Для вклинивания кода тебе надо статически линковать.
Или инклудить код в код
gost 12.11.2019 12:31 # 0
Интересно, через сколько десятилетий после введения этой фичи в Комитете обратят внимание на новомодные веяния под названием «ресурсы» — ну типа вон как в двадцатом веке в «PE»-файлах придумали, с типизацией и упорядоченностью.
guest8 12.11.2019 13:27 # −999
gost 12.11.2019 13:34 # 0
Fike 12.11.2019 17:42 # 0
j123123 12.11.2019 21:22 # 0
> или генератор отчетов, который на выходе дает хтмл-страницу
Если ты засовываешь какой-то генератор отчетов в свою прогу, то ты очевидно засовываешь какой-то исполняемый код, который эти отчеты генерит (или я что-то не так понимаю?).
А вот эта херня из крестов, о которой этот говнокод - она позволяет только вставлять данные, не код.
Нет, ты конечно можешь допустим написать некий интерпретатор байткода (FORTH например), и потом через эту крестодрисню инжектить байткод, и потом его интерпретировать. Но это, как ты понимаешь, отдельный случай
Fike 13.11.2019 12:25 # 0
j123123 13.11.2019 17:39 # 0
nyTuH_nugop 14.11.2019 21:20 # 0
j123123 11.11.2019 12:02 # 0
koshka_Sviborga 11.11.2019 00:10 # 0
j123123 10.11.2019 19:57 # +6
bormand 10.11.2019 20:26 # +4
j123123 10.11.2019 20:32 # +4
guest8 10.11.2019 22:06 # −999
guest8 10.11.2019 22:12 # −999
j123123 10.11.2019 22:19 # +3
Это типа как trial версии, когда спустя N дней прога перестает работать (только тут прога перестает компилироваться). Какие инновации)))
koshka_Sviborga 10.11.2019 23:45 # 0
guest8 10.11.2019 22:16 # −999
Fike 10.11.2019 23:39 # 0
koshka_Sviborga 11.11.2019 00:16 # +1
guest8 10.11.2019 21:29 # −999
j123123 10.11.2019 21:37 # +1
> To run your code, make sure you include an appropriate main() function, have the output window up, and then tick the ./a.out button!
bormand 10.11.2019 21:46 # +1
koshka_Sviborga 11.11.2019 07:36 # 0
guestinxo 13.11.2019 01:06 # +1
-__- 13.11.2019 08:50 # 0
Есть бекенд «ia16», генерирующий 16-битный код реального режима для 8086 (модель памяти только «Tiny», как для com-файлов). Можно попробовать его доработать, чтобы он не отдавал опкоды за пределами ASCII.
Есть готовый компилятор, генерирующий досовские экзешники, состоящие только из ASCII-кодов (модель памяти «Large», если не ошибаюсь):
http://tom7.org/abc/
Сам компилятор написан на языке «StandardML» (к сожалению, «OCaml» эти исходники не переваривает). Нидлес должен оценить.
-__- 13.11.2019 08:55 # 0
http://tom7.org/abc/paper.txt
Для веса в неиспользуемые участки вложили текст документации. Сигнатура ZM вместо MZ, чтобы «Windows» не тратила время на поиск расширенной части (PE или NE).
bormand 13.11.2019 11:24 # +1
Прочитать один оффсет и сравнить 4 байтика... Пиздец оптимизация, конечно.
-__- 13.11.2019 11:38 # +2
bormand 13.11.2019 11:43 # 0
guest8 10.11.2019 21:51 # −999
koshka_Sviborga 10.11.2019 23:44 # 0
guest8 10.11.2019 22:32 # −999
Fike 10.11.2019 23:42 # 0
koshka_Sviborga 11.11.2019 07:25 # 0
j123123 11.11.2019 15:45 # +1
guest8 11.11.2019 01:01 # −999
koshka_Sviborga 11.11.2019 07:23 # +2
А потом у меня появилась другая материнка, и апдейты я выпускать перестал.
koshka_Sviborga 11.11.2019 07:32 # 0
The smalldatetime fields in SQL-Server databases will wrap around to January 1, 1900.
2067
... all sound recordings fixed before February 15, 1972, will enter the public domain in the U.S.
2038
32-bit computer clocks overflow to represent the date as December 13, 1901.
Fike 11.11.2019 15:25 # 0
> The smalldatetime fields in SQL-Server databases will wrap around to January 1, 1900.
и ведь, сука, российские специалисты целой оравой будут бегать по всем стэковерфлоу, выясняя, что случилось.
те, кто поумнее - еще в 2079, но и в 2080 найдутся
koshka_Sviborga 11.11.2019 15:40 # 0
2038-й год. Сломается весь софт, который хранит дату, как 32-битное смещение от начала UNIX EPOCH (1 января 1970).
В частности, тип TIMESTAMP в «MySQL»:
https://dev.mysql.com/doc/refman/5.7/en/datetime.html
Никто не запрещает хранить дату в 64-битном числе (BIGINT) или в DATETIME (поддерживает даты до 9999 года), но ведь для этого нужно успеть проинспектировать софт и заменить все упоминания типа TIMESTAMP.
j123123 01.12.2019 18:20 # +1
Надо было дату в плавучих питухах хранить
3.14159265 02.12.2019 03:25 # 0
В луникс-кернел то и дело мерджат патчи. Может всё и не сломается.
Но всяким андроидам (там до последнего времени было ядро 3.13) и "умному" китайскому ширпотребу, с vendor lockом, явно будет шандец.
bormand 02.12.2019 08:26 # 0
XYPO3BO3 02.12.2019 08:37 # 0
XYPO3BO3 02.12.2019 08:28 # 0
У приложения может быть архив с фиксированным форматом дат. Кстати, а в каком формате сейчас хранится дата создания файла в популярных архиваторах? Перейдя на новый формат, сломаем совместимость. Понадобятся конверторы из одного формата в другой.
Да, андроидам и «умному» ширпотребу будет совсем плохо. Какие-то железки в один прекрасный момент могут превратиться в тыкву.
3.14159265 02.12.2019 15:39 # 0
Включил и лег спать. На дворе шёл 2к38.
Проснулся: а кругом пожарные суетятся.
OHOTOJIE 04.12.2019 21:10 # 0
guest8 20.11.2019 21:09 # −999
j123123 02.12.2019 13:23 # 0
примерно так