- 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
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
// https://godbolt.org/z/QAR_nT
// https://govnokod.ru/26701#comment550329
#include <cstddef>
#include <string>
#include <cassert>
struct assert_failure
{
explicit assert_failure(const char *sz)
{
std::fprintf(stderr, "Assertion failure: %s\n", sz);
std::quick_exit(EXIT_FAILURE);
}
};
// эта херня не совсем корректно будет обрабатывать всякую хрень вроде ", , , " - оно это посчитает за 4 аргумента,
// и если считать " скобочки, тогда еще надо запилить обработку эскейп-последовательности, для хуйни типа "pidor\" govno"
// но мне лень эту хуйню допиливать.
constexpr std::size_t count_args(const char *s, std::size_t depth = 0, std::size_t pos = 0, std::size_t count = 0)
{
if (s[pos] == '\0'){
if(depth != 0)
throw assert_failure("kakoi bagor)))\n");
if(pos == 0)
return 0;
return count+1;
}
else if(s[pos] == '{')
{
return count_args(s, depth + 1, pos + 1, count);
}
else if(s[pos] == '}')
{
if(depth == 0)
throw assert_failure("kakoi bagor)))\n");
return count_args(s, depth - 1, pos + 1, count);
}
else if(depth == 0)
{
if(s[pos] == ',')
{
return count_args(s, depth, pos + 1, count + 1);
}
}
return count_args(s, depth, pos+1, count);
}
#define TO_STR(...) #__VA_ARGS__
#define ARGNUM(...) count_args(TO_STR(__VA_ARGS__))
#define krestogovnotypeof(a) std::remove_reference<a>::type
#define FOR_RANGE(type, varname, ...) for(struct {size_t cnt; krestogovnotypeof(type) arr[ ARGNUM(__VA_ARGS__) ]; } varname = {0, {__VA_ARGS__}}; varname.cnt < sizeof(varname.arr)/sizeof(type); ++varname.cnt )
int main(void)
{
FOR_RANGE(int[2], k, {1,2}, {3,4}, {5,6}, {7,8})
printf("{%d %d},\n", k.arr[k.cnt][0], k.arr[k.cnt][1]);
return EXIT_SUCCESS;
}
Какая крестопараша((( В вижуальхуюдии вроде собирается, но проверить корректность работы не могу. Как вы этим днищекомпилятором вообще пользуетесь?
Было б круто, если бы были такие constexpr функции, которые в компилтайме могут куски исходного кода высирать как бы прямо в исходник, и потом уже чтоб это компилировалось
>чтоб без GC и жирного рантайма
>>на D переходить
>>без GC
Ха-ха-ха.
>D has built-in types that may be difficult to use without the GC: exceptions, strings, dynamic arrays, associative arrays, and delegate closures.
Вот потому D не взлетел и люди до сих пор пишут на крестах.
https://wiki.dlang.org/Memory_Management
https://govnokod.ru/26609#comment545801
Итого: массивы через литерал создавать нельзя; new нельзя; конкатенацию нельзя; добавить ключ в ассоциативный массив нельзя; вообще всё, что изменяет размер массива, нельзя.
Примерно как я и думал: превращает все базовые вещи в неюзабельное говно.
Типа, хуле вы тут со своими умными указателями, RAII — назад в каменный век.
https://dlang.org/spec/betterc.html
> RAII (yes, it can work without exceptions)
Умные указатели это вообще тупая херня с рефкаунтером, которую можно и на сишке реализовать какими-то костылями, а на D так тем более.
Всё хорошо прекрасная маркиза.
D offers several capabilities built in to the core language that are implemented as libraries in other languages such as C++:
* Dynamic Arrays
* Strings
* Associative Arrays
Только вот в С++ всё работает без ГЦушни.
https://dlang.org/articles/builtin.html
Сама ссылка достаточно забавна.
Поскольку полностью повторят тезис Царя об универсальной, минимальной необходимой и достаточной структуре данных — массиве.
Strings
C++ has, of course, builtin string support in the form of string literals and char arrays. It's just that they suffer from all the weaknesses of C++ builtin arrays.
But after all, what is a string if not an array of characters? If the builtin array problems are fixed, doesn't that resolve the string problems as well? It does. It seems odd at first that D doesn't have a string class, but since manipulating strings is nothing more than manipulating arrays of characters, if arrays work, there's nothing a class adds to it.
Но тогда придется делать слабые ссылки, и тупые гцбляди не смогут своим одноклеточным мозгоМ понять: зачем
В режиме better c этой хуйни нет. https://dlang.org/spec/betterc.html
Эксепшены вообще говно, ассоциативные массивы, строки и динамические массивы - это вообще и на Си можно сделать, значит можно и в better C режиме на D. А что такое "delegate closures" - вообще хуй знает, похоже что какая-то питушня ненужная, так что нахуй ее.
Ну и еще как вариант есть Rust, в котором изначально нет никакого GC, только RAII
Нахуй тогда супер-навороченный язык чтобы потом изобретать свои велосипеды?
В 2к20 такое должно быть из коробки.
>как вариант есть Rust, в котором изначально нет никакого GC, только RAII
Царь мало сектантов разъёбывал?
Ну а в чем проблема-то? Напишешь один раз свои велосипеды, выложишь в гитхаб - если велосипеды получатся качественными - будут твоими велосипедами еще пользоваться другие.
Потому что макроговном эта хуйня нормально не решается.
А ради элементарных, базовых вещей нужно городить велосипеды и собирать говняшки по гитхабу.
Тогда вопрос: нахуя такой язык вообще нужен?
> А ради элементарных, базовых вещей нужно городить велосипеды и собирать говняшки по гитхабу.
Вот да, почему мне надо собирать говняшки по гитхабу, чтобы в крестоговне кроссплатформенно создать банальное окошко и отобразить в нем какой-нибудь jpg файл? Или кроссплатформенно отправить UDP пакет? Или воспроизвести такой-то звук из wav файла? Распарсить XML? Работать с UTF8?
Почему? Почему?
Зачем? Зачем?
В попытках примазаться к тренду отбросами был сделан «режим как Сишка», но лучше.
Очевидно, что сваять на Dовне ничего нельзя - поэтому приходится воровать.
Что потом отребье могло всем сообщить «дак я же как Сишка».
Nearly the full language remains available. Highlights include:
Unrestricted use of compile-time features
Full metaprogramming facilities
Nested functions, nested structs, delegates and lambdas
Member functions, constructors, destructors, operating overloading, etc.
The full module system
Array slicing, and array bounds checking
RAII (yes, it can work without exceptions)
scope(exit)
Memory safety protections
Interfacing with C++
COM classes and C++ classes
То есть опять оглядка на Сишку и С++.
Сделан ли автомобиль с оглядкой на карету? Нужно ли делать автомобили без оглядки на кареты? Зачем?
Очевидно, тут мы замечает то, что дизайн этого говна бездарного - типичная хуита. Потому обезьяны начнут прикручивать к этому говну электродвинатель и прочее. Но, очевидно, что в нормальном транспорте кони быть должны.
1. Мы сделали новый модный %lang_name.
2. Давайте все программировать на %lang_name!
3. Вы ещё не используете %lang_name? Только %lang_name. Пишите на %lang_name. Смотрите как удобно.
4. Настало время %lang_name. %lang_name сам себя не напишет. Напиши на %lang_name, напиши ещё раз.
5. У нас есть привязки к интерфейсам и классам С++.
6. Почему никто по-прежнему не хочет писать на %lang_name?
7. У нас есть режим «как в Сишке».
8. ...
9. Сектанты забыли про %lang_name и форсят новый баззворд (питуха).
10. Про %lang_name при случае вспоминают только олдфаги и маргиналы.
https://govnokod.ru/25353#comment457685
- а главное - кроссплатформенно!
Языку всего 6 лет в продакшене, уже кстати нормально хуевертят, через пару годков тоже можно будет фрактал плохого дизайна писать.
> расскажи плохое про свифт, кстати
- ок, вот из недавно прочитанного. Не так давно в язык завезли property wrapper, которые можно охарактеризовать как весьма куцую реализацию паттерна декоратор.
Правда, выяснилось, что с коллекциями они работают не очень.
https://www.donnywals.com/why-your-atomic-property-wrapper-doesnt-work-for-collection-types/
То, что людям надо велосипедить свои atomic, это фейспалм само по себе. Напомню, что в обжективе эта фича была доступна из коробки!
При этом яббл придумал семантическое разделение на value types и reference types, но, чтобы тебе было удобно, в замыкание по умолчанию и те и другие захватываются по ссылке.
Но это в любом случае какое-то говно, которое уже два года не обновлялось, плюс сам Яббл не имеет никакого отношения к этому проекту. Там исходники надо в какой-то недотулзе компилировать, лол
Есть пропозал про метаклассы, там как раз предлагались компайл-тайм рефлексия и компайл-тайм оператор для высирания блоков кода.
Хуйня какая-то. Мне не нужно никакого remove_reference. Я лишь хочу, что если будет говно типа
то это было то же, что и
Я думал что можно как-то так
но это говно так не работает
тоже нихуя не работает. Говно этот ваш буст
То ли дело "Си".
Хотят в C2x втащить.
И клубничный жемчуг
и для случая
работала?
char[2] c;
typeof(c)[3] a = [['a','b'],['c','d'],['e','f']];
Но тип передать нельзя typeof(char[2]) ибо нефиг. Если знаешь тип, то используй его.
P > NP
P < NP
P >= NP
P <= NP
P != NP
И что такого плохого в <add/remove>_const/volatile/<lvalue/rvalue>_reference? По-моему, весьма очевидные метафункции. Разве что «cv» — менее понятный сахарок для «const, volatile».
Проблема в их ограниченности. Например, могу ли я этой хуйней взять тип такой-то структуры, и на основе нее слепить новый тип струкутры, где все const элементы внутри сделать уже не-const (в т.ч. если в той структуре есть вложенная структура, то в эту структуру тоже влезть и там сделать не-const всё, что является const, и если там тоже структура, то там тоже пройтись с заменой, пока всё дерево не обошли)?
«Концепты» уже завезли, там в точности это и можно делать.
> Можно сконструировать класс, который точно такой же, как и вот тот, но только вот этого публичного метода там нет.
Звучит как какая-то генератушня.
А нахуя это делать этими ко-ко-концептами? Почему б не сделать компилтайм обход типов структур как дерева, с возможностью синтеза нового типа таким образом?
Это же примерно как предложение принимать Object и лезть ручками лезть в дерево наследования, проверяя, реализует ли переданный объект нужный интерфейсу.
Ну ладно, ладно, крестокомитет как всегда сделал говно; представим, что мы можем написать «requires has_method(hui, getLength, int)»
Это слишком органиченная петушня, но даже она, как ты правильно заметил в примечании, в крестоговне не реализована.
Либо создать привязку структуры из кода к результату запроса из базы одним вызовом функции https://code.dlang.org/packages/sqlite3
Зато в плюсах как и в джаве придется писать тонны бойлерплейта и позориться с макросами
А сколько кодом на D?
D-отбросы только хвалятся какой у них охуенный язык, пока ПХПшники стиснув зубы делают всю грязную работу.
Именно поэтому за «PHP».
> void postLogout()
Такое говнище и на джаве можно написать.
Обойти все методы рефлектором и подвязать нужные к нужным ссылкам.
Возможно в некоторых rest-фреймворках так и реализовано.
Автовайринг параметров (https://www.baeldung.com/spring-request-param) вон работает по именам переменных.
> // automatically mapped to: GET /profile
> void getProfile()
Кстати неявная магическая питушня, не слишком неочевидная.
А на крестопарашном дерьме это написать можно?
Именно поэтому я против getProfile().
Процессор аннотаций неявно возьмёт имя класса, но всегда можно написать явно:
Или допустим @RequestParam
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html
Это всё полумеры. Никакие жабовские питухации не заменят нормальной гомоиконности, где код как данные, который можно в компилтайме анализировать как дерево и переписывать.
Та самая гомоиконщина, о которой мечтает j123123.
К сожалению я их не писал ни разу, поэтому не знаю что они реально могут с этим AST сделать.
В самой жабе синтаксис негомоиконен (не является фактически человекочитаемым представлением AST) - будет скорее всего хуйня какая-то с его чтением-редактированием.
Да и там же еще GC с жирным рантаймом, так что по любому это говно в пролете
Любую программу на XSLT можно представить как данные для программы на XSLT
router.registerWebInterface!MyInterface( new WebService);
Ну вот именно - надо предвидеть такую ситуацию и явно защищаться от нее. Иначе яйца отстреливаются только так. Хуйня полная, а не архитектура.
А вот в D же всяко есть какие-нибудь аннотации чтобы явно пометить метод как доступный по хттп. А не по скриптушиному угадывать это из имён.
Но да, можно опубликовать чего лишнего случайно.
Кто-то рассказывал про борьбу с бойлерплейтом.
А в итоге предлагается бойлерплейт куда больший, чем явная расстановка аннотаций или ручная подвязка кобенаций http-метод+путь к указателям на нужные функции.
А приватной питушнёй это не фиксится?
> у меня случайно в контроллере оказался метод getFoo()
Я и предлагаю: бубликовать в вёб только бубличные методы, а приватами не светитить.
Архитектура - хуйня. Хрупкая очень. Не хотите учиться на опыте ПХП - ну ваше право, только не жалуйтесь потом что поломали.
В данном случае лучший вариант - это описать интерфейс, который потом будет зареган.
И вообще это хорошая практика даже в плюсах - разные интерфейсы разным пользователям.
Разложили грабли на ровном месте и выдумываете как их обойти.
"Долгое время Rust позиционировался исключительно как язык для системного программирования." https://habr.com/ru/post/504622/
"Десять лет назад был анонсирован systemd, который устроил революцию в управлении системой..." https://habr.com/ru/post/503816/
Да нет, это лучшие годы были. Более простых и понятных скриптов я со времён слаки не видел.
Прозвучит довольно нелогично, но корень оверинжинирного зла был посажен когда в Линукс начали приходить корпорации.
Сначала все радовались: «смотрите, швабодка подебила», мы заставили крупные конторы и энтерпрайз комитить для пользы сообщества.
Однако посоны не учли момента, что корпорации будут писать то что выгодно и полезно для них.
>Настройку сервиса systemctl делает через d-bus.
Какие проблемы? В Линуксе всё энтырпрайзненько.
>Чтобы включить/выключить сервис на прыщах нужен демон с сетевым протоколом.
Ынтырпрайз решал свои задачи анального контроля.
90% ненужной простому юзеру питушни в линукс-мире форсит Шапка.
Красношапочники не комитят крутые алгоримты в ffmpeg, и не пилят годноту в ядро, они просто ебошат какие-то геттеры/сеттеры, обёрточки, изменения ради изменений.
Именно поэтому dbus, именно поэтому Network.Minetger, именно поэтому сетевые питухи, именно поэтому PulseAudio со звуком через сеть, итд.
>Теперь у нас питушня уровня если не винды, так Solaris SMF точно по сложности.
Enjoy your Enterprise Linux.
Вот это багор.
https://lkml.org/lkml/2012/12/23/75
Без сарказма: с питухами, которые ломают юзерспейс, только так и надо!
Теперь он так не жжёт.
Опять шапка тянет каку в ядро.
https://lkml.org/lkml/2013/2/21/228
Если бы не Линус, редхатовцы и прочий ынтыпрайзный скам давно бы уже натянули в ядро ненужной дряни, превратив его в очередной systemd.
>отсосать у Microsoft
Линус прекрасен
Вот там видно что люди делом заняты. Сейчас переписывают directX на вулкан (https://github.com/doitsujin/dxvk)
Разработка Wine в последнее время ускорилась просто колоссально, бежит семимильными скачками.
Игры работают гораздо быстрее/стабильнее.
>без корпораций прыщ бы не выстрелил. Именно они сделали его популярным
Google Android, внезапно.
Да.
Чтобы потом в теории стричь профиты с приставки, ОС и софт для которой не требует лицензий.
А пока что +12% рынка в Steam. (10% Mac+2% Linux)
Они же поставляют вместе с играми собранный, пропатченный wine.
Называется сиё https://en.wikipedia.org/wiki/Valve_Proton
Ну т.е. реально линуксоидов даже больше, чем эти 2% т.к. часть из них по второму разу за винду в дуалбуте посчитана?
Правда там железо в приставках особое, под него специально затачивают игры, а всякая обычная ширпотребная хрень из стима может там работать не так хорошо, как хотелось бы.
На обычных приставках ты можешь 10 лет без апгрейда смотреть мыльцо в 30 фпс. И это реально тестируется.
А здесь, как и на ПК, не будет гарантий что новая игра нормально взлетит. Тем более, что стим машины будут делать разные вендоры, да ещё и с разной мощностью.
> Вторая попытка раскрутить steam machine
https://www.phoronix.com/scan.php?page=news_item&px=Steam-Deck
15 July 2021
Following months of rumors about new gaming hardware from Valve, today they announced Steam Deck as a new handheld PC gaming device starting at $399.
The Steam Deck is an all-in-one portable PC with a custom AMD SoC and, of course, running SteamOS. Steam Deck is focused, of course, for running Steam but also advertised as an "open PC" that can run other software too.
как играть на этом миллипиздрическом экране в обычные игры из стима?
ни то ни сё
и экран маловат, и при этом форм-фактор странный
одинаково устанут глаза и руки
учитывая, что вальв обосралась с куда более удачным в теории продуктом, кому нужно это, ума не приложу
Говно говна?
Ура! Ура!
а управление сделать через телеграм бот. Да. Куда удобнее управлять системой с айфона через телеграм.
Теперь хосты через openvpn сами не отрезолвятся в ipшники.
>systemd нестабилен и забагован
>Вовсе нет. Мейнтейнеры, по мнению Леннарта, внимательно относятся к issues на GitHub, мониторят багтрекеры дистрибутивов Linux и, надо сказать, число багов довольно мало для такого ключевого компонента ОС.
>Разработчики вполне справляются с блокирующими разработку и использование багами, также помогает относительно быстрый цикл разработки с инкрементальными нововведениями с целью качества и стабильности.
В маркетинговом женерик-спиче ключевая фраза: «по мнению Леннарта».
Однако же дадим слово Линусу, когда он разъёбывал Kay Sievers (один из ключевых авторов systemd)
https://www.reddit.com/r/linux/comments/221irz/linus_blocks_all_code_from_kay_sievers_f rom_linux/
And by "their" you mean Kay Sievers.
Key, I'm f*cking tired of the fact that you don't fix problems in the
code *you* write, so that the kernel then has to work around the
problems you cause.
Greg - just for your information, I will *not* be merging any code
from Kay into the kernel until this constant pattern is fixed.
This has been going on for *years*, and doesn't seem to be getting any
better. This is relevant to you because I have seen you talk about the
kdbus patches, and this is a heads-up that you need to keep them
separate from other work. Let distributions merge it as they need to
and maybe we can merge it once it has been proven to be stable by
whatever distro that was willing to play games with the developers.
But I'm not willing to merge something where the maintainer is known
to not care about bugs and regressions and then forces people in other
projects to fix their project. Because I am *not* willing to take
patches from people who don't clean up after their problems, and don't
admit that it's their problem to fix.
Kay - one more time: you caused the problem, you need to fix it. None
of this "I can do whatever I want, others have to clean up after me"
crap.
Linus
--
https://govnokod.ru/27509#comment664750
Общие положения.
Данный сайт Говнокод.ру (в дальнейшем именуется Сайт) является информационным сайтом, незарегистрированным как СМИ в Российской Федерации;
Сайт является сайтом с открытой системой регистрации. Любой пользователь с соответствующими учётными записями на других проектах может зарегистрироваться на Сайте и публиковать материалы, изменяя таким образом главную и другие страницы сайта;
Участники сообщества Сайта могут размещать как части исходных кодов разнообразных программ, являются ли они их авторами или нет с собственным комментарием к данному коду, так и комментарии к каждому конкретному исходному коду;
Участники сообщества Сайта могут оценивать исходные коды, а также комментарии других пользователей положительно и отрицательно. Данная оценка является полностью информативной и отображает мнение пользователей Сайта, а не мнение авторов проекта (в дальнейшем именуемых Администрацией);
Участникам сообщества Сайта запрещается публикация материалов, содержащих ненормативную лексику, а также материалы, запрещённые к публикации Законодательством Российской Федерации;
Участникам сообщества Сайта запрещается публикация материалов, которые являются интеллектуальной собственностью третьих лиц: участникам запрещается публиковать части исходных кодов тех проектов, исходные коды которых защищены законом об интеллектуальной собственности.
Данные правила всегда находятся по следующему адресу: http://govnokod.ru/page/license.
Куча бессмысленных мудаков выдумывают ненужное говно, а люди потом тратят человекогоды на реализацию ненужного говна.
Хорошо бы блядь правительства вообще не говорили бы программистам и админам, что им делать
а с куки полная чушь, согласен. ещё и согласиться или отказаться обычно невозможно, не включив жабаскрипт. с чем боролись-то?
Меня вот раздражает, что каждый пидорский сервис хочет мой номер телефона. Но против этого законов нет. Зато не дай бог мне куку поставят, блядь
лучше сам почитай gdpr, чтобы не было испорченного телефона
да я читал когда-то и помню, что ничего интересного не нашел
Просто есть такой тренд в обществе (довольно тупой имхо): все боятся крупных корпораций, которые за тобой следят.
То есть ты сначала всю инфу вываливаешь компаниям, а потом ссыш, что они про тебя слишком много знают
В общем я пиздец конечно не репрезентативен. Меня не ебет то, что ебет 89% населения
И ебет то, что не ебет 89% населения
эх((
только она ж всё равно не забудет. по крайней мере до тех пор, пока штрафы за утечки данных не будут выше, чем бабло за их продажу
А еще у долбоёбов могут спиздить базу логинов с паролями, и пароли там плейнтекстом. И за это никаких санкицй нету.
подумай ещё, сколько раз ты попадаешь на камеру, пока просто за молоком в магазин выходишь
When the regulation does not apply
Your company is service provider based outside the EU. It provides services to customers outside the EU. Its clients can use its services when they travel to other countries, including within the EU. Provided your company doesn't specifically target its services at individuals in the EU, it is not subject to the rules of the GDPR.
во-вторых какой долбоеб будет оставлять на говнокоде настоящие личные данные?
Нормальный человек не стесняется назвать свое имя
я стесняюсь камерунских хуйцов
но я вообще давно уже на каждом сайте стараюсь новый ник заводить. При том, что я и регаюсь раз в пятилетку
очень оригинальная, остроумная, и тонкая шутка.
Сначала прочитал как «даёт его Файку» (Fike).
Сказал guest6.
– какая экономия )))
И что оно делает? ;)
Вообще, крестоговнотайпоф это просто деклтайп. Ремув референс делает немного больше.
https://govnokod.ru/26703#comment550481
крестоговно опять обосралось
Суваешь в него тип ссылка-на-петуха а получаеш тип питух