- 1
IT Оффтоп #145
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
IT Оффтоп #145
#115: https://govnokod.ru/27665 https://govnokod.xyz/_27665
#116: https://govnokod.ru/27671 https://govnokod.xyz/_27671
#117: https://govnokod.ru/27675 https://govnokod.xyz/_27675
#118: https://govnokod.ru/27685 https://govnokod.xyz/_27685
#119: https://govnokod.ru/27701 https://govnokod.xyz/_27701
#120: https://govnokod.ru/27703 https://govnokod.xyz/_27703
#121: https://govnokod.ru/27710 https://govnokod.xyz/_27710
#122: https://govnokod.ru/27728 https://govnokod.xyz/_27728
#123: https://govnokod.ru/27729 https://govnokod.xyz/_27729
#124: https://govnokod.ru/27730 https://govnokod.xyz/_27730
#125: https://govnokod.ru/27732 https://govnokod.xyz/_27732
#126: https://govnokod.ru/27733 https://govnokod.xyz/_27733
#127: https://govnokod.ru/27737 https://govnokod.xyz/_27737
#128: https://govnokod.ru/27742 https://govnokod.xyz/_27742
#129: https://govnokod.ru/27747 https://govnokod.xyz/_27747
#130: https://govnokod.ru/27755 https://govnokod.xyz/_27755
#131: https://govnokod.ru/27766 https://govnokod.xyz/_27766
#132: https://govnokod.ru/27790 https://govnokod.xyz/_27790
#133: https://govnokod.ru/27828 https://govnokod.xyz/_27828
#134: https://govnokod.ru/27834 https://govnokod.xyz/_27834
#135: https://govnokod.ru/27839 https://govnokod.xyz/_27839
#136: https://govnokod.ru/27845 https://govnokod.xyz/_27845
#137: https://govnokod.ru/27857 https://govnokod.xyz/_27857
#138: https://govnokod.ru/27867 https://govnokod.xyz/_27867
#139: https://govnokod.ru/27887 https://govnokod.xyz/_27887
#140: https://govnokod.ru/27900 https://govnokod.xyz/_27900
#141: https://govnokod.ru/27914 https://govnokod.xyz/_27914
#142: https://govnokod.ru/27942 https://govnokod.xyz/_27942
#143: https://govnokod.ru/27960 https://govnokod.xyz/_27960
#144: https://govnokod.ru/27972 https://govnokod.xyz/_27972
Этот оффтоп сгенерирован автоматически.
Индекс оффтопов: https://index.gcode.space/.
Зеркала Говнокода и полезные ресурсы:
* https://govnokod.xyz/ (альтернативный Говнокод)
* https://gcode.space/ (read-only зеркало Говнокода)
* https://t.me/GovnokodBot (Говнокод-бот в «Telegram»)
* https://t.me/GovnokodChannel (Тематический канал в «Telegram»)
* https://vorec.space/ (глоссарий Говнокода)
* https://app.element.io/#/room/#govnokod:matrix.org (резервный чат)
Примечание: автоматические перекаты в настоящее время осуществляются только с аккаунта nepeKamHblu_nemyx.
Остерегайтесь подделок. Берегите себя и своих близких. Кок!
https://www.wired.com/story/null-license-plate-landed-one-hacker-ticket-hell/
свжк кнчн н чт пдлть
NaN
undefined
Реальность: роботы подгоняют людей, чтобы люди быстрее работали.
https://pbs.twimg.com/media/FKxFk8tWQAEfyEC.jpg
З.Ы. Почему номер, а не QR код? Сложнее ведь распознавать.
Если кто-то плохо работает, то робот щипцами берет нарушителя за башку, и выкидывает в такой вот мусоропровод специальный, а в HR автоматически открывается вакансия
https://isitblockedinrussia.com/?host=lbry.org
https://isitblockedinrussia.com/?host=odysee.com
Интересное начинается с 1:30.
В 2021 году GitHub получил 335 запросов на раскрытие информации о пользователях (на два запроса больше, чем в 2020 году). Из них 195 были связаны с повестками в суд (в 183 уголовных и 12 гражданских делах), 94 — обусловлены судебными постановлениями и 22 — ордерами на обыск. Подавляющее большинство (96,4%) этих запросов поступило от правоохранительных органов, оставшиеся 3,6% — от гражданских истцов, желающих получить информацию о другой стороне.
Из 335 запросов GitHub раскрыл информацию по 269 из них (178 повесток, 64 судебных постановления, 22 ордера на обыск и 5 запросов, сделанных в чрезвычайных обстоятельствах). Из 269 случаев сервис уведомил пользователей только 9 раз: в 255 других случаев на это был судебный запрет.
GitHub также 1828 раз удалил контент в соответствии с американским Законом об авторском праве в цифровую эпоху (Digital Millennium Copyright Act, DMCA). Кроме того, платформа также стала ограничивать материлы, связанные с насилием, и скрыла 4585 учётных записей в 2021 году.
https://roskomsvoboda.org/post/github-transparency-report-2021/
А пидарасмуса вообще в интелоп объявлю в розыск
It's fun to live in the DMCA!
Ди-Эм-Си-Эй!
Ладно, это кал конечно
https://wandbox.org/permlink/z00vbHWAYlSGbAGu
> Indicates that this data member need not have an address distinct from all other non-static data members of its class.
И почему у d и e оффсет одинаковый, а у c и d разный?
Путешествия автостопом, ночёвка на вписках, случайный секс в клубе, легкие наркотики, стандарт С++.
Есть вещи, с которыми лучше никогда не сталкиваться.
удивительное дело! Люди гордятся тем, что чего-то не знают, чего-то не читали..
Из всей тёмной триады ООП ты выбрал самую злую фичу, поздравляю.
* есть, конечно constыли
И вот если вызову одновременно метод с двух потоков, то могу соснуть карамель.
Наследование реализации это кал, особенно в языках типа яжы, где все методы открыты по умолчанию.
Кстати, как по классу понять, безопасен ли он потоково?
Давно не пишу ничего не крестах, но вроде гарантирует:
https://en.cppreference.com/w/cpp/language/member_functions
> In the body of a cv-qualified function, *this is cv-qualified, e.g. in a const member function, only other const member functions may be called normally. (A non-const member function may still be called if const_cast is applied or through an access path that does not involve this.)
У меня внутри класса приватное поле с деревом. Это дерево снаружи переодически читают.
Все методы const, потому что его только читают: не правят.
И вот я нахожу гениальный метод ребалансировки дерева, и добавляю в класс функциональность, которая смотрит на паттерны использования дерева (на запросы к нему) и как-то хитро его ребалансирует.
Должен ли я метод "searchInTree" сделать НЕ const?
Очевидно не должен, ведь моя ребалансировка это деталь реализации.
Однако у класса теперь есть мутабельное состояние, и если в два потока начнут искать в дереве, то может вызваться одновременно две ребалансировки, и я буду хуй.
То есть снаружи, семантически, я как-бы const, а внутри не const.
Впорос: иммутабелен ли мой класс?
Почему я обязан что-то подпирать? Разве я обещал потокобезопасность?
Собссно, вопрос был в том, можно ли считать мой класс иммутабельнвм
Откуда я знаю? Я поэтому и пишу в соседнем комменте, что если все const то есть ВЕРОЯТНОСТЬ что все иммутабельно. Но дальше надо лезть в доку или код.
Нет. Т.к. его внутренний стейт меняется.
Но мне, как пользователю, вообще лолжно быть похуй.
Борманд выше верно сказал: оберни лочкой или пометь что твоё говно непотокобезопасное.
Поэтому в ФП чуть сложнее обосраться с ней, т.к. стейт очень явный и его нядо постоянно ручками массировать.
Инкапсуляция же — это своего рода анти-ФП, т.к. она буквально ставит перед собой противоположную задачу, всячески скрывая стейт.
> То есть снаружи, семантически, я как-бы const, а внутри не const.
Типичные охуительные ООП истории про какую-то семантику... Если состояние меняется чисто "синтаксически", значит не const, вот и вся наука.
То есть у меня был обычный const метод, потом я решил сделать свой хак внутри класса, и вынужден снять const поменяв его интфейс и порушив API?
Не ломай API, а помещай свою охуенную балансировку в новый метод myTree_real_fast_search_in_tree.
В процессе работы могут возникнуть неожиданные результаты, которые нормальны и которые клиентский код должен уметь обрабатывать? Сделай так, чтобы они не когда-то там проявлялись и тебе слали баги что иногда всё летит, а чтобы на второй вызов уже прилетала ситуация, которую питух ДОЛЖЕН уметь обрабатывать, и кривой код не взлетит.
Но проблема, когда ты думаешь, что «делаем Х, а потом, когда сделаем Z, переделываем на Y для пирфомансу, поведение не изменится», а потом оказывается, что переделать не получится, так как питухи уже полагаются на незадокументированное поведение, стоит остро.
И затем с одного стула кричат, что код непирфомансный, с другого кричат чтобы им код не ломали.
А потом с чистой совестью обоссать каждого, кто юзает его из джвух тредов.
Нет потоков — нет проблемы. Зато всё семантически инкапсулировано.
https://en.cppreference.com/w/cpp/language/transactional_memory#Synchronized_blocks
До С++36
Если на этом объекте решится синхронизироваться кто-то другой будет беда.
> Нет потоков — нет проблемы
Йажа — хуй-ня. С таким паттерном в программе легко могут возникать дедлоки.
Именно поэтому я за «PHP», где эту проблему даже не создавали.
А потом куча лалок не читая доку, «оптимизируют» SimpleDateFormat в статическое поле, форматируя им YYYY-MM-dd.
Разве мудульность это плохо?
Разеботчик класса берёт все тяготы по поддержанию конь-систентности его состояния на себя.
Выходит что в Сишке зайчатки Ъ ФП, потому что там стейт всегда открыт.
Модульность тут совершенно ортонональна. Инкапсуляция, как мы видим, подсказывает guest'ы охуенные идеи про "засунуть лочку в lookup", которые мне убьют перфоманс на параллельные lookup'ы.
Если в процессе lookupa происходит внутренняя мутация дерева, то без лочки/спинлока параллельные lookup'ы просто развалят дерево.
О чём я и говорю. Такой мудабельный лукап в ФП стиле будет выглядеть либо как
{Val, T'} = lookup_and_rebalance(T)
, если структура иммутабельна, либо как
lookup_and_rebalance :: tree -> ST tree val
если она мутабельна, и тогда для получения r/o ссылки, которую можно раздать по потоками, мне нужно явно взять лочку. А инканусация призывает все эти тонкости замести под ковёр, и не дай бог юзер их увидит.
> {Val, T'} = lookup_and_rebalance(T)
Короче, COW.
В принципе в ООП мире пишут и так.
Не, тут, насколько я понимаю, суть не в COW, а в том, что стейт или явно возвращается или его мутабельность подчёркивается монадой. В обоих случаях видно, что функция его патчит и можно задуматься о пирфомансе и тредах.
В случае с ООП эту фишку пытаются скрыть и тормоза/краши вылезают неожиданно.
В ООП это подчёркивается интерфейсом методов, которые при мутации возвращают новое значение.
Но в случае ООП благодаря инкапсуляции возможен ряд оптимизаций, когда COW может иногда возвращать this, если объект не поменялся.
Или ранее аллоцированное значение из пула, или подстроку/подсписок.
> В случае с ООП эту фишку пытаются скрыть и тормоза/краши вылезают неожиданно.
Будто в случае ФП не возникают неожиданные краши, когда пытаются скрыть его ленивость.
почему?
>T mutate(T old);
выяглидт как chain/
>почему?
Потому что *copy* on write.
Где здесь COW, 3.14159265? Изменение термов в ФП делается тупо путём манипуляций со ссылками.
> когда пытаются скрыть его ленивость.
У меня в ФП нет никакой ленивости. Если не захочу, конечно.
Ну а что такое T и T'? Приняли на вход, один объект (T), вернули результат поиска и мудифицированную копию объекта (T').
> Изменение термов в ФП делается тупо путём манипуляций со ссылками.
Поясните мысль.
Давай начнём с того, что такое COW.
Т.е. вся эта коровушня имеет смысл только для мутабельных переменных.
В ФП большинство вещей иммутабельны, следовательно ссылки остаются ссылками, и никакого копирования нет. Код вида
не меняет Т, а просто создаёт новый терм, который (возможно) содержит ссылку на T, либо на какой-то иной терм, на который ссылается Т.
> не меняет Т, а просто создаёт новый терм, который (возможно)
Ну я так и написал точно то же.
>T mutate(T old);
Никаких явных foo.copy().
Лол, то есть ты постоянно набрасываешь haskell, даже примерно не представляя, как он работает? Нет, не то же самое.
Во втором примере нет ни изменения, ни копирования.
Представь, что в нём T и T' — односвязные списки, а функция foo добавляет к T одну cons-ячейку. Т при этом не копируется и не изменяется, а T' — новый объект с какими-то новыми данными (не копией T), который в каком-то месте содержит указатель на Т. Всё.
Да!
> Т при этом не копируется и не изменяется, а T' — новый объект с какими-то новыми данными
Ну так и исходный bar в моём примере тоже не изменяется.
withSomething создаёт его копию (или не создаёт, если там уже есть такие данные) и возвращает обратно...
Потому и bar =
Вроде бы 90% всех набросов в Интернете ровно так и устроены
Например, у меня есть массив указателей на питухов.
Я скопировал массив, и получил новый массив указателей.. но.. но тех же самых питухов, да?
А вот это грамотный подход к троллингу функциональщиков, сразу с козырей. Массивов-то у них нормальных нет именно из-за этой ссылочной прозрачности.
Именно поэтому я особенно угораю со Скалки, которая пытается объединить ООП (aka анти-ФП) с ФП. Это как пытаться объединить солёные огурцы с молоком.
Не понимаю, почему другие так боятся такого сочетания.
Зачем?
Подтверждаю.
Но «Scala» всё-равно уродливый и крайне неуклюжий франкенштейн. Ни уму, ни перцу.
На кафирах.
mutable - permits modification of the class member declared mutable even if the containing object is declared const.
Во-вторых что такое "const функция"? Имею ли я право в ней записать что-то в файл?
Всего лишь способ прикрутить const к неявному аргументу this... Больше никакой магии в нём нет.
И ничто не мешает мне в из этой функции записать что-то в файл, например. Или отправить пакет по сокету.
И что будет, если я в один и тот же файл начну в два потока писать?
Ну то есть const-то я const, а вот что такое "константность" это уже вопрос семантики. Хочу -- буду файл считать частью своего состояния. Хочу -- не буду.
То есть даже вызывая чисто константные методы у объекта я не могу быть уверенным, что могу это с десяти потоков делать
Хоть циферка хендла сокета и не меняется, но буфер и курсор внутри сокета меняются, т.е. состояние объекта другое.
Тем более там обычно один хрен что-то обновляется в состоянии.
А что думаешь про
https://govnokod.xyz/_27996/#comment-796966
?
Говорится что в теории, схема хранения внутренней питушни класса может поменяться, и вместо тривиального там может появиться необходимость добавить какие-то лочки, битовую магию, логгирование итд.
И поскольку все ходят через этот геттер, это сделать тривиально, и никто не увидит разницы.
Однако *на практике* за много лет я такое почти не встречал.
Вот практика оборачивания конструктора в фабричный метод, да тут помню несколько *реальных* примеров, когда туда вписывалась некая логика развращающая потомка. А дописывания в геттеры не видел.
Ещё был случай, когда значение вычислялось на основании других полей в классе. Питух выпилил поле (ну как, выпилил, сделал неиспользуемым) и стал вычислять значение напрямую. Потом другой питух пришёл, раскудахтался, что это непирфомансно, запилил сохранение вычисленного значения (в то самое поле, в котором оно было изначально), спрятал dirty бит не добавляя новых полей (в то же самое поле), ленивое вычисление, все дела.
Затем вышел из отпуска оригинальный программист, охуел и вернул всё как было.
Кажется, в современном ЯПе это бы должно решаться инструментированием кода, а не ручным впиндюриванием логинга.
Была же когда-то идея аспектов. Но потом кто-то сказал, что аспекты это плохо, и поскольку в Java мире иметь своего мнения не принято, а принято повторять мнение Гуру, то все джавушки тоже сказали "аспекты это плохо" и врчную пишут логирование в геттерах
Никак. Но если у него только конструктор и const методы, есть вероятность, что он иммутабелен и тем самым потокобезопасен.
А в целом только по документации или коду, конечно.
Я больше скажу: нельзя даже пытаться «понять», потокобезопасен ли класс.
Причина проста: сегодня ты прочитал реализацию класса, решил, что она потокобезопасна, и начал драть класс с джвух потоков. Завтра автор либы немного перепиливает внутреннюю реализацию класса — не трогая интерфейс — и публикует это как минорное изменение (а оно и есть минорное по любым определениям). Послезавтра ты обновляешь либу и получаешь невероятно приятные часы/дни/недели попыток понять, почему же раз в джва часа твоя программа падает.
Использовать класс в не потокобезопасном контексте можно только тогда, когда в документации явно написано, что класс потокобезопасен. Не написано явно — ставь лочки, благо что времена, когда лишняя критическая секция ТОРМОЗИЛА, давным-давно прошли.
Это смеловатое заявление. Если у меня 64 ядра, а я выполняюсь в один поток, то может быть теряю увесистую дозу перформанса, не?
Ну и в первую очередь я всё же имел в виду оверхед, который боялись сто лет назад.
В принципе можно все поля на каждом уровне наследования выносить в private, а работать через акцессоры/мутаторы обёрнутые в лочки.
Но тогда какой смысл в мудификаторах вроде friend и protected?
> constыли
Синтаксиально!
А ООП это какая-то ебаная неведомая херня с кучей баззвордов, полиморфизм-поихуизм какой-то, абстракции-абасракции, наследования-хуедования, классы какие-то блядь
-----------
Что это такое, как будет работать? Это солдаты будут защищать тылы добавляя в код mysql_real_escape и закрывая ssh на 22-м порту с admin/admin?
со структурами всё просто и понятно. Вот тупые структуры, вот функции для работы с ними. Ниакой тебе "семантики" структуры
https://gcode.space/#!/search?q=ООП&user=superhackkiller1997
Читай Царя-батюшку.
ООП - высер идиотов, которые решили, что домохозяйки могут быть программистами. И ведь были правы - в рашке самый популярный программист - это секретарша.
Я ничего не имею против идей из которых сделали ООП - я ненавижу то говно, которое называют ООП, вернее ООП говного мозга. Юзать что-то это возможность, а не обязанность.
ООП-мразь заминусовала.
https://youtu.be/37SodCJn9Co
Ангуляр сделал это за меня (он вообще самостоятельный парень), насосал порядка трех сотен либ с лицензиями (в основнмо MIT и BSD клаус 3), но когда я увидел там "pad-left", со мной случился припадок
Это ещё ничего.
Если бы там был isTen от pethu...
— Не заслуживающий доверия ответ!
Точнее скажем - кум,
И под его водительством
Беремся мы за ум.
Если сделать chcp 65001, она напишет по-английски или вообще вместо локализованного текста выведет пробелы.
Contents:
1 Recursive islands
1.1 Islands in lakes
1.2 Islands in lakes on islands
1.3 Islands in lakes on islands in lakes
1.4 Islands in lakes on islands in lakes on islands
1.5 Islands in lakes on islands in lakes on islands in lakes
2 Recursive lakes
2.1 Lakes on islands
2.2 Lakes on islands in lakes
2.3 Lakes on islands in lakes on islands
2.4 Lakes on islands in lakes on islands in lakes
На море остров
На острове пальма
На пальме клоп сидит, и видит
Море
на море остров
На ос
https://youtu.be/J6rWoPzXI7Y
Официальный канал «Роскосмоса». ТАСС и РИА «Новости» репостнули эту хуету.
У меня есть вопросы к авторам видео. И вы, вероятно, догадываетесь, какие.
А что за белую хреновину он крутит?
https://www.youtube.com/watch?v=gwfo4yK0siE
а теперь без человека не могут
У этого мимика есть и лицо.
Первый раз федеральные каналы показали видео "на выставке журналистов встречал робот". Потом выяснилось, что это был мужик в костюме робота. Но не суть.
Если открытый рекурсивный DNS поднять, через меня же ддосить кого-нибудь начнут?
Ты даже примерно не знаешь IP клиентов? Сеть может быть? Поднять IPSec на них можешь?
Если ты сделаешь очередной 8.8.8.8, то конечно тебя будут абъюзить. Вот прямо класть тебя DDoSом смысла нет: бабла с этого не поднимешь, а хакер нычне меркантильный, но всё равно зачем тебе обслуживать чужие немытые запросы каких-то незнакомых людей?
На мобилке можешь поднять VPN
Россиянин убил женщину, и бросил её тело на съедение свиньям
https://govnokod.ru/27870#comment761052
Ну, фильм довольно популярный был.
реальность:
https://docs.scala-lang.org/tutorials/FAQ/initialization-order.html
WHY IS MY ... VAL NULL?
That's it, вы можете сделать val x: String = "x", и при обращении к нему словить null. В языке, который nullability типа не признает.
Дальше еще лучше:
final val,
final val,
final val.
upd. lazy val решает проблему. Конструкция, которая должна только усложнить ситуацию, на самом деле её нивелирует. Фантастика.
Потом кто-то унаследуется и перегрузит значение поля, и после этого мой _оригинальный_ код будет использовать не новое значение, не старое, а просто навернётся с null pointer exception?
И эти люди будут что-то мне говорить про инициализацию объектов в крестах.
В Джаве такой хуйни нет (там тупо перегрузить поле нельзя, нужно менять значение в конструкторе)
https://ideone.com/C0YrlR
Но тут однопоточный код, где код перестаёт работать, потому что "оптимизация инициализации" просто выкидывает значение, с которым успешно работали до этого.
https://ideone.com/C0YrlR
Вот если строчки в конструкторе поменять местами и пиздец был бы, тогда я бы удивился.
Но есть еще один прикол, про который говорил иканус
https://ideone.com/qgZZKY
Будет. Борманд правильно говорит.
Сделал NPE на стасик финалах:
https://ideone.com/h9Akn1
Обращался к полю родителя из конструктора потомка до инициализации этого поля в super().
И тоже было NPE.
В Йажа на самом деле несколько способов сломать final.
Господи, какой заедушный язык.
В оригинальном коде было что-то вроде:
Который я пытался вызывать из родительского конструктора.
Но самый пиздец не в этом. А в том, что Fike говорит что компилятор *мешает* ошибиться. Запрещает инициализацию до вызова super.
> В джаве при указании final-проперти такой хуйни не будет, она будет обязана иметь значение.
> Там даже компилятор запрещает всякую хурму типа объявления зависимой константы до её зависимости или вызова родительского
Так вот в данном примере жабопидарастический компилятор мне мешал написать программу правильно.
Так если бы я мог поменять местами вызов super и присваивание, всё было ок.
У меня было бы инициализированное i к моменту вызова метода:
Но кек мы все знаем из рекламных буклетов "умный" компилятор Java, предотвращает ошибки ещё на этапе компиляции.
И не даёт прогаммисту написать неправильный код. Потому отлаживая программы на Java разработчик тратит на 37% меньше времени.
Нельзя сделать
если petuh const
Это не позволяет делать leak of this в крестах)
Так бывает, когда абсрактный родитель помимо всего прочего регистрирует себя в какой-нибудь эвент системе, и новый эвент приходит до окончания инициализации всего объекта. Иногда даже что-то ломается.
К счастью, лечится просто — бей по пальцам любому, кто пытается голой жопой this светить из конструктора.
Проблема же в самом факте передачи. Принимающий код ведь не ожидает, что объект недоконструирован и может что-то у этого объекта позвать.
Если хочется отдать кому-то объект, то сделай при-ва-тный конструктор, и стат метод для создания.
В коко даже завезли сахар типа
Но бага то в протекании this из конструктора, а не в тредах.
Если хочется передать, сначала создавай, потом передавай.
Фабрики для кого придумали?
В крестах это иногда вообще печально заканчивается pure virtual function call'ом.
Вообще есть правило: в конструкторе вызваать только final методы
В джавке же у тебя вызовется метод потомка, что конечно тоже тупо, потому что потомок еще не инициализирван
Оба хуже.
Потому что наследование реализации -- кал
Золотые, бессмертные строки Вилли Токарева как нельзя лучше подходят к моменту:
В крестах там сначала vtable на папу показывает, потом на сына, верно?
Вероятно, в jvm она всегда показывает на сына
Это детали реализации, зависящие от компилятора.
https://alschwalm.com/blog/static/2016/12/17/reversing-c-virtual-functions/
> Most virtual function implementation details are not standardized and can vary from compiler to compiler.
Оно довольно интуитивное, но наверняка есть пункт
Может быть там и не будет про vmt, но сам принцип надо поискать.
Member functions, including virtual functions ([class.virtual]), can be called during construction or destruction ([class.base.init]).
When a virtual function is called directly or indirectly from a constructor or from a destructor, including during the construction or destruction of the class's non-static data members, and the object to which the call applies is the object (call it x) under construction or destruction, the function called is the final overrider in the constructor's or destructor's class and not one overriding it in a more-derived class.
пасибо
Тебе там мало UB'ов?
C++ — довольно таки примитивное, но монстровое поделие, полное исторически сложившихся нелепых нагромождений.
Человек, который хорошо в нем ориентируется — это хорошее зубрилко, а не хороший программист.
Умение героически преодолевать трудности, которые создает твой собственный инструмент, вместо того, чтобы решать непосредственно прикладную задачу, в современном мире ценится разве что только среди прыщавых сосок.
Работодатель же это сомнительное умение не ценит, и совершенно справедливо.
А потом, когда это всё сломается, можно будет пирдолиться.
Сначала все орут: давайте сделаем умную систему, которая будет делать всё сама! Смотрите, какой у нас получился XML/XSL/XPath/XQuery/IBM WebSphere/DCOM+/MS Bizztalk/SOA/WF
Потом оказывается, что для изучения системы нужно семь лет жизни, ее выкидывают в мусорку, и орут: смотрите, какой у нас отличный скрипт на PHP получился в три строки, главное mysql_real_escape не забыть.
Потом оказывается, что в системе миллион костылей, и все надо делать вручную, и колесо сансары проворачивается вновь
Каждая декларативная питушня рано или поздно начнёт реализовывать внутри себя императивный язык, потом кто-то придёт и заменит её на императивную реализацию, потом для неё приделают декларативную конфу, и так далее.
"Методы" это всего лишь функции, которые принимают указатель на некоторое говно и что-то с ним делают (хотя иногда это тупо обычные функции, которым никакие "члены класса" не нужны). А "наследование" это вообще ненужная херня какая-то.
Может быть ещё хуже, программа не будет валиться с ошибкой.
Она будет спокойно работать с ошибкой, из-за порядка инициализации:
Зачем? Зачем?
val же сам по себе подразумевает final.
> кокококо скала такая удобная кокококо лишена всех проблем джавы и сделана для людей кокококо val из коробки
Сектантская пропаганда, сер.
В реальности в Скале есть *все* проблемы Йажи вдовесок к проблемам создаваемым новыми фичами языка.
В одном случае переменная инициализируется. В другом нет.
Порядок не имеет значения.
Никаких circual dependency. И всё днопоточно.
Whether a variable is a constant variable or not may have implications with respect to class initialization (§12.4.1), binary compatibility (§13.1, §13.4.9) and definite assignment (§16).
Блин, а я думаю почему у меня примеры со строками не получались.
им пользуеца метод в другом классе.
Имеет ли он право его заинлайнить?
И сразу вопрос: чем в C# отличаются const и readonly
Как в крестах const?
> readonly
Как в Йаже final?
Это без доки, по памяти.
Edit: а поиск показывает что const в C# это compile time constexpr.
Да, вроде бы const можно заинлайнить, а так нет
Да. Поскольку есть порядок класс-лоадинга.
Пока мы подгружаем класс Ideone, java.util.Calendar ещё не загружен.
Эта строка — часть процесса инициализации класса Ideone, ибо статические пельменные пришиты к классу.
И тут всё честно. Никакой отложенной инициализации finalов. Никаких потоков и утечки this. Обсёр фактически на ровном месте.
И тем не менее в final-переменной мы наблюдаем неинициализированное значение.
А Файка пропаганда убедила что:
> В джаве при указании final-проперти такой хуйни не будет, она будет обязана иметь значение.
Я тоже боюсь, что для нас готовят что-то более забористое. Пока тишина.
Чебурнет кстати реально сделают, и очень просто:
Провайдеров обязали сделать бесплатным траффик до "социально значемых сервисов" типа VK и mail.ru.
Провайдерам как отбить деньги? Они сделают платным доступ ко всему остальному Интернету. Ну а чтобы люди случайно не насидели на кучу денег, нужно будет явно включать такую услугу: "Доступ к Интернету" по 3000 рублей за гигабайт.
96% россиян скажет: "нахуй мне деньги платить, когда VK и так бесплатен?"
Вжжжух, и 96% россиян добровольно откажется от Интернета в пользу VK.
А власть не виновата, это чисто коммерческие заморочки, и добровольное решение людей.
Запомните этот твит!
Real free market has never been tried!
Пусть сами думают.
Причём разрабы этой кнопки утверждают, что им нравится её юзать.
Любым новым ПО сначала приходится играть на испытательном полигоне из ненужных файлов, чтобы понять, какая из кнопок гуйни что делает.
А вообще не используй русской пиривод
Ну да, я обычно не юзаю ни перевод ни хром.
Шкодливые игрунки они такие
I had just downloaded vscode as an alternative and I was just playing with the source control option, seeing how it wanted to stage FIVE THOUSAND FILES I clicked discard... AND IT DELETED ALL MY FILES, ALL OF THEM, PERMANENTLY!
HOW THE FUCK IS THIS SHIT POSSIBLE, WHO THE HELL IS THE DUMBFUCK WHO MADE THE OPTION TO PERMANENTLY DELETE ALL THE FILES ON A PROJECT BY ACCIDENT EVEN POSSIBLE?? CANNOT EVEN FIND THEM IN THE RECYCLE BIN!!!! I DIDN'T EVEN THOUGHT THAT WAS POSSIBLE ON WINDOWS!!!
FUCK THIS FUCKING EDITOR AND FUCK WHOEVER IMPLEMENTED THIS OPTION. I WISH YOU THE WORST.
I'M PERMANENTLY STAYING AWAY FROM EVERY WINDOWS DEVELOPMENT SOFTWARE FROM NOW ON AND TO THE GENIUS WHO IMPLEMENTED THIS:
I HAVE NOTHING TO SAY TO YOU OTHER THAN
YOU'RE FUCKING INSANE, YOU'RE A FUCKING IDIOT, AND I AM SO SICK OF THIS TYPE OF PEOPLE THAT MAKE MYSELF AND EVERYONE SICK.
FUCK YOU BILLY ELLIOT. FUCK YOU.
I'M DONE WITH YOU BILLY ELLIOT.
I AM GOING TO BEGAN LOOKING FOR ANOTHER EDITOR, LIKE NOTEPAD, NOTEPAD EDITOR, ETC. FINDING ONE AND THEN DELETING THIS WONDERFUL SOFTWARE!
:)
ой, блядь, Боб, а не Билл
ну не важно
HOW THE FUCK IS THIS SHIT POSSIBLE, WHO THE HELL IS THE DUMBFUCK WHO MADE THE WIRE TO PERMANENTLY BREAK ALL THE PARTS OF MY PC BY ACCIDENT EVEN POSSIBLE??
CANNOT EVEN FIX THEM WITH BLUE TAPE!!!! I DIDN'T EVEN THOUGHT THAT WAS POSSIBLE!!!
- Что такоe "чeлночная диплoматия"?
Kиccинджер ответил:
- О! Это унивеpсaльный еврeйский метoд! Пояcню на пpимeре:
Вы хотитe метoдом челнoчнoй дипломaтии выдaть дочь Pокфеллеpа зaмyж за пpостого паpня из русcкой дepeвни.
- Kaким oбрaзом?
- Oчeнь пpоcто. Я еду в руcскую дepeвню, наxoжу там пpостогo паpня и cпpашивaю:
- Xочешь женитьcя нa амepикaнскoй евpeйке?
Oн мне: - Haхрeна?! У нaс и своиx дeвчонок полнo.
Я eму: - Дa. Нo она - дочка миллиаpдepa!
Он: - О! Этo меняeт делo...
... Тoгда я едy в Швейцарию, на заседaниe правления бaнка и спрaшиваю:
- Bы хoтите иметь пpeзидeнтом сибиpcкoгo мyжикa?
- Фу, - говорят мнe в бaнке.
- А eсли он, при этом, бyдeт зятем Рoкфеллeрa?
- О! Этo кoнeчно меняeт дeло!..
И тaки-дa, я едy домой к Рокфeллeрy и cпрaшиваю:
- Xотите иметь зятeм pyсcкoго мyжикa?
Он мнe:
- Что вы такoе говоpитe, у нac в семье всe - финaнcиcты!
Я ему:
- А он, как рaз, - пpезидент пpавлeния Швeйцарcкoгo банка!
Он:
- О! Этo меняeт дeлo! Cюзи! Пойди cюдa. Mистep Киcсинджер нaшел тебе женихa.
Этo прeзидент Швeйцаpcкoго банкa!
Сюзи:
- Фи... Вce эти финaнcисты - дoxляки или педики!
A я ей:
- Да! Но этот - здopовенный сибирский мyжик!
Она:
- O-о-о! Этo меняет дело!
Чет я сгорел аж пиздец.
Замерь. Тогда сможешь с чистой совестью тыкать их мордочкой в графики.
Нужен. Не знаю какой рандом в используемом ими языке, но в той же сишке запросто могло оказаться говнище с 16(!)-битным сидом. Охуенные UUID'ы получатся из такого генератора.
Java?
В доке написано, что используется 48 бит сида. Т.е. из-за парадокса дней рождения уже на десятом-другом миллионе полезут коллизии. Проверь.
Ну пусть каждый тред возьмёт себе немного энтропии при старте и крутит свой локальный CPRNG, периодически подсыпая в него энтропию. Лочка на главный генератор будет намного реже браться.
- Нет, у нас есть %случайное число% дома
А вот риалли, сгенери миллионов 30-40 UUID'ов их "обычным рандомом" и посмотри, не выпало ли одинаковых. Если выпало -- можешь показать чувакам и гореть начнёт у них.
Newer version of Windows are able to use a variety of entropy sources:
** TPM if available and enabled on motherboard
** Entropy from UEFI interface (if booted from UEFI)[15]
** RDRAND CPU instruction if available
** Hardware system clock (RTC)
** OEM0 ACPI table content
** Interrupt timings
Ксатит, как вам такое
Windows's CNG uses the binary registry key HKEY_LOCAL_MACHINE\SYSTEM\RNG\Seed to store a seeded value.
> Windows's CNG uses the binary registry key HKEY_LOCAL_MACHINE\SYSTEM\RNG\Seed to store a seeded value.
https://govnokod.ru/27959#comment758294
А линукс в файле. Что тут такого? Лучше иметь хоть какую-то энтропию на старте системы, чем вообще никакой.
Я с диска твоего спижжу сид, и угадаю чото
При рутовом/физическом доступе к тачке ей и так пиздец.
А состояние генератора рано или поздно станет непредсказуемым за счёт свежей энтропии. Так что долго ты спизженный сид юзать не сможешь.
Для серваков и эмбеддед это особенно актуально было.
да. RDRAND всего десять лет назад появился
https://arstechnica.com/gadgets/2019/10/how-a-months-old-amd-microcode-bug-destroyed-my-weekend/
Это простейший тест, но так хотя бы отвал генератора увидишь.
Тогда это тоже будет неправильный рандом - в нем будет нулевая вероятность выпадения подряд идущих одинаковых 32-битных числа. В реальном рандоме такая вероятность есть.
Ну и сами реле бывают герметичные, туда никакое насекомое не залетит
Ну и сами процессоры бывают герметичные, туда никакая частица не залетит
Но она достаточно мала, один раз на 4 миллиарда тестов. Надо очень долго дрючить генератор чтобы гипотеза об отсутствии подряд идущих одинаковых чисел стала статистически значимой.
> один раз на 4 миллиарда тестов
Birthday paradox
> гипотеза об отсутствии одинаковых чисел
Расскажите, как работает RDRAND в процессорах. Она что берет? Температуру? Или там шумы какие-то слушает?
Интересно вообще, можно ли такое хакнуть
Сколько тебе нужно чисел из него высосать, что бы понять, P он или T?
Тогда как же гост читал, что RDRAND это PRNG когда там питуз пишет, что это TRNG?
Нет, конечно. Но это и нинужно.
Тут главное, что ты периодически подмешиваешь в PRNG достаточное количество энтропии из TRNG и злоумышленник теряет контроль над состоянием твоего генератора, даже если он его недавно спиздил.
Как раз поэтому сидить один раз в начале -- недостаточно.
PRNG в этом случае просто глупая функция для превращения энтропии в случайное число
А PRNG должен быть детерминированным, чтобы его легко было проверить.
Вот тогда из них можно составить секьюрную систему. Но мешать их в кучу не надо, это только затрудняет исследование.
И вот так делать очень плохо, кстати. Энтропию надо копить и вбрасывать достаточно большими пачками. Иначе злоумышленник, спиздивший стейт, сможет угадать вброшенную тобой энтропию и продолжить предсказывать числа.
У интела какая-то своя хуйня с "подбрасыванием" метастабильного триггера + за каким-то хреном PRNG фронтенд, чтобы качество рандома никто не мог оценить.
Понятно, спасибо
Есть, конечно, адские железяки с кусками урана внутри за сто тыщщь нефти, которые могут давать рандом со скоростью /dev/urandom, но в процессор их не вставишь.
Была отдельная плата физического ускорителя, запихнули в видеокарту.
Нужно выпустить плату аппаратного генератора случайных чисел. Продавать под лозунгом, «теперь лут будет падать действительно случайно»
Её кстати потом тоже в процессор запихнули.
Такие штуки сто лет в обед выпускают.
d: «TrueRNG V3» (USB), «Quantis QRNG PCIe», тысячи их.
https://imgs.xkcd.com/comics/random_number.png
Из-за неё Кукурузены не грузили Луникс.
ПРЫЩЕБЛЯДИ СОСНУЛИ
Просто сравните:
> Windows users couldn't successfully launch Destiny 2
> and Linux users in many cases couldn't even get their system to boot
>>> RDRAND is not just a PRNG. It is a whitened TRNG that is FIPS compliant.
> and gives you a 0xFFFFFFFF for the "random" number, every single time
> and gives you a 0xFFFFFFFF for the "random" number, every single time
> and gives you a 0xFFFFFFFF for the "random" number, every single time
Вот тут-то всё говно этих "TRNG" и таится... Даже если оно на выходе выдаёт не 0xFFFFFFFF, откуда ты знаешь, что оно им не сидилось?
Честный TRNG должен давать мне честный доступ к его потоку энтропии, чтобы на нём можно было провести статистические тесты. А не пропущенное через мясорубку говно.
На самом деле никакой ошибки нет, а то, что у людей нагенерировались 0xFFFFFFFF — это просто совпадение.
Ваш пост огорчает негров.
Засудят ведь если лутбоксы с кривым рандомом.
https://pbs.twimg.com/media/FLVAC4cWUAAjRNN.jpg
Знакомая шкала, да?
https://cgit.freedesktop.org/libreoffice/core/commit/?id=2d36e7f5186ba5215f2b228b98c24520bd4f 2882
Князь, как обычно, зрит в корень.
https://www.youtube.com/watch?v=1IAwkEdRZZw
О_о. Пиздец у них там конпеляторы охуевшие. Оптимизирующий препроцессор -- это сильно.
А AVX512 я даже не знаю, где используется.
В играх AVX не используется, видимо, потому что игры используют GPU.
AVX512 support
A new vector instruction set is supported, thanks to @gzm55 : AVX512. It can be applied on XXH3 and XXH128, using some of the most recent Intel cpus, such as IceLake on laptop. It typically offers +50% more performance compared to AVX2.
https://github.com/Cyan4973/xxHash/releases
https://blog.cloudflare.com/on-the-dangers-of-intels-frequency-scaling/
https://www.tomshardware.com/news/intel-reportedly-kills-avx-512-alder-lake-cpus
Удивительное просто говно, и костыль для его поедания
https://fastutil.di.unimi.it/docs/it/unimi/dsi/fastutil/ints/IntList.html
Стримы эти до сих пор существуют и все ещё необходимы, конечно.
Сарказм конечно хорошо. Но Fike кидает архиправильные ссылки.
Проблема в том что увеличение размеров регистров 64-128-256-512 приводит к убывающим результатам.
Если при переходе MMX (64) - SSE (128) скорость увеличивалась в 1.5-2 раза.
То при переходе SSE(128)-AVX2(256) мы видим увеличение IPC в 1.2-1.4 раза.
При переходе AVX2-AVX512 выигрыш большинства алгоритмов 1.05-1.1
При этом поддеркжа этих инструкций жрёт экспоненциальное число транзисторов.
А в случае AVX-512 процессоры сбрасывают частоту, в итоге прирост IPC не компенсирует даунклоакинг и зачастую наблюдается даже падение пирфоманса.
Т.к. падение частоты 20%-40%, а прирост IPC *для большинства* алгоритмов 5-10%.
Так это не какое-то принципиальное ограничение «AVX-512», это просто в «Intel» по-крупному обосрались с теплораспределением и въебали анскильный костыль с троттлингом. У меня в «AMD» такой хуйни нет!
Он просто всегда работает медленее.
Можно и без зелёного, наверное. AVX по-любому выделяет больше тепла, чем более простые инструкции. И если охлаждение справляется с AVX на какой-то частоте, то с простыми инструкциями оно справится и на большей. Т.е. "не троттлить AVX" можно прочитать как "не получать буст для остальных инструкций".
Вот именно. И даже не по температуре, а по энергопотреблению — но, видимо, такие нанотехнологии инженерам из «Интела» недоступны.
P. S. Моя рязань под полной загрузкой всех ядер AVX говном (см. «CPUID Powermax») накаляется до 72 градусов, а вот SSE-говно нагревает её только до 65. Обычные же рабочие нагрузки редко когда вызывают нагрев выше шести десятков.
Ну нее... Тогда более крутое охлаждение перестанет давать профит.
Даже обычный турбо-буст уже работает за пределами заявленного TDP.
Возвращение кнопки «Турбо»
У меня видеокарта, например, вполне себе умеет замерять свою мощность и по ней же троттлиться. Даже ползунок в ПО имеется, позволяющий этот троттлинг подкручивать. С тех пор, как выкрутил ползунок на минимум — до 53% от TDP — просто нарадоваться не могу: за счёт единиц процентов потери производительности получил абсолютно тихую и холодную карточку.
Именно поэтому я за «троттлинг по мощности».
> У меня в «AMD» такой хуйни нет!
Да, действительно в процессорах от «AMD» такой хуйни как «AVX-512» просто нет.
А есть ли «Zen 4»?
Могу копать, могу не копать.
У меня в контроллерах нет никаких "AVX"
https://developer.arm.com/architectures/instruction-sets/dsp-extensions/dsp-for-cortex-m
> DSP and SIMD instructions
>
> The Cortex-M4, Cortex-M7, Cortex-M33, Cortex-M35P, and Cortex-M55 processors provide SIMD instructions that operate on 8-or 16-bit integers. All registers are still 32-bits wide, but the SIMD instructions operate on 2 x 16-bit values or 4 x 8-bit values at the same time within a 32-bit register.
>
> Instructions that work on 8- or 16-bit data types are useful for processing data such as video or audio, as they do not require full 32-bit precision. The SIMD instructions allow these 2x16-bit o r4x8-bit operations to be performed in parallel.
Но весьма ограниченная, и не для FPU
SHADD8: add each byte of the first operand to the corresponding byte of the second operand and shift each result by one bit to the right.
Прикольно. Вот для софтварного рисования мне в своё время такой хуйни реально не хватало. А MMX казался каким-то неудобным оверкиллом.
>. Вот для софтварного рисования мне в
не понял. Спрайты что ли делать?
Оказывается, это название всплывало в нескольких местах:
https://en.wikipedia.org/wiki/Yoyodyne
А ещё из этой статьи есть ссылка на ACME:
https://en.wikipedia.org/wiki/Acme_Corporation
HTTP/1.1 200 OK
Server: nginx/1.20.1
Мда, nginx уже не тот.
Какой женский монастырь )))
https://dvaholma.ru/assets/images/advantages/item-2.webp
Что будет, если в результате биологической войны почти все мужское население вымрет? Женщины погорюют (недолго), а потом объединятся и создадут новый лучший мир — с экогородками, возобновляемой энергией, возможностями заниматься чем захочется, хоть наукой и биохакингом, хоть йогой и саморазвитием.
[/quote]
Какой дурак решил, что женщины более соевые, чем мужики? Женщины прекрасно умеют ненавидеть, воевать, и убивать.
https://rezka.cc/p/2096-y-posledniy-muzhchina-2021-hdrezka-studio
Эээ, это перебор уже.
Но тут надо не перестараться и не остаться единственным человеком во вселенной. Прецеденты были.
Откуда вы такое берете? Тут мейнсримный - лютейшее говно, а это судя по всему категория B
IMDB кажется порекомендовал. Сам фильм не то чтобы мегаинтересный, но посмотреть можно. А мейнстримный марвел нахуй не нужен.
Если бы люди видели мои мысли, то со мной буквально все перестали бы общаться\
Но эволюция уже давно не работает как надо, так что в принципе можно полы отменять, хотя я конечно против: я всё таки цисгендер, хотя и сижу на говнокод.ру
А как надо?
Эволюция оптимизирует вероятность сохранения генетического материала, путём тюнинга вообще всех параметров в многомерном пространстве, а не только гена турникмества.
При чём здесь это вообще? После того, как ты передал гены, эволюция в принципе не может работать напрямую. Долголетие разве что косвенно может на неё влиять. Короче, ты не сечёшь матчасть.
Женщина рожает десять детей, пять из них умирает не дожив до года, еще трое не дожив до трех лет. Выживают только самые крепкие.
Сейчас эта штука не работает.
Начались манёвры. Если бы ты это изначально имел в виду, то говорил бы про "возраст фертильности", а не "лет тридцать".
Сейчас есть страны, где это всё ещё работает, дальнейшие выводы делай сам.
Idiocracy 2006. Уже IRL.
В реальности же она оптимизирует в бесконечномерном пространстве, где "правильное" направление предсказать нельзя. Алгоритм этой оптимизации более-менее прост, его ещё в XIX веке открыли, но входные данные для него принципиально неизвестны. Поэтому делать громкие заявления об остановке этого алгоритма на основании только одного измерения — глупость.
Т.е. ситуация тут примерно как с уравнением Навье-Стокса: с виду очень простое, а решать его по-нормальному никто не умеет. Только у жидкости всего три измерения, а у биологического вида — бесконечно много.
Она может максимизировать какие-то совершенно нефункциональные вещи, повышающие фертильность.
В итоге вторичные половые признаки принимают просто гротескные формы, вроде развесистых рогов у оленей, которые им и мешают.
Понятно что через какое-то длительное время происходит адаптация.
Но на коротком историческом промежутке нашей жизни искусственый технологический прогресс обгоняет эволюцию и человек не успевает приспосабливаться к новой реальности.
Потому здесь и сейчас преимущество получают не те кто сверхинтеллектуал, а те кто тупо больше плодится.
В эволюционном отношении 100 лет это наносекунда.
Короче. Идиократия во все поля.
Есть мнение, что эволюцию современного человека в основном направляло социоблядство, а не мамонты. Поскольку здоровый головной мозг крайне невыгоден, должен быть крайне весомый профит, чтобы он появился. Быть умнее мамонта просто, а вот быть умнее соплеменника — уже сложнее. Т.е. социоблядство запустило петлю положительной обратной связи увеличения IСQ. Чего-чего, а социоблядства сейчас полно, так что тиктокеры будут эволюционировать.
Антропология — не наука, и ей предстояла тяжёлая ночь.
https://en.wikipedia.org/wiki/Gayniggers_from_Outer_Space
Пораженчество.
То есть квартиры там не покупают (иначе ограничений не наложить) а берут в бессрочную аренду, я правильно понимаю?
В ипотеку не взять, потому что ни один банк в такую хуйню не полезет, по наследству не передашь.
> Готовый объект может отличаться от представленных визуализаций.
Это вообще выглядит как типичная наёбка. Никаких реквизитов.
Подозрительня.
Транс: Я женщина
Фемка: А по-моему ты говно
Да там и без фемок тем для внутренних разборок и срачей хватит.
-- Вы обижаетесь, что сны ваши показались мне книжными? Не обижайтесь, я знаю, что иной раз такое незаметно выдумаешь, что нельзя принять, никак нельзя, и кажется, что во сне видел, а вовсе не сам выдумал. Один старик-помещик рассказывает, что он во сне шел лесом, вышел в степь и видит: в степи два холма, и вдруг они превратились в женские титьки, а между ними приподнимается черное лицо, вместо глаз на нем две луны, как бельма, сам он стоит уже между ног женщины, а перед ним -- глубокий черный овраг и -- всасывает его. Он после этого седеть начал, руки стали трястись, и уехал за границу к доктору Кнейпу лечиться водой. Этот должен был видеть что-нибудь такое -- он был распутник.»
Максим Горький. Воспоминания. Лев Толстой.
https://govnokod.ru/28008
https://govnokod.xyz/_28008/
—– Ваш рандом — говно!
–— Вы просто его неправильно используете.
Какой багор )))
Одноразовый генератор случайных чисел?
Взяли самый простой мультипликативно-конгруэнтный генеретор, да ещё и константы неудачные выбрали)
пиздец петушни наделали.
благо сам винамп все еще заебись.
Какая великолепная демонстрация тотальной дегенерации ПО.
Ссуть свинампа в том, что там был нестондартный декодер Нетронь, который говнякал скачанные Напсером 128kbps мрз ради пирфоманса. Больше ничего за этим хайпом не стоит, томущо фрау Нгофер раздавала декодеры бесплатно и можно было делать свой helloworld2000 с mciSendCommand и тиками.
«Ко-ко-ко, Ваш аккаунт в опасности. Введите ответ на кококококонтрольный вопрос, куд-кудах-тах-тах!»
А я ебу, что я писал в качестве ответа? Я вводил случайную строку, которую трудно подобрать, чтобы мою учётку не взломали.
Пидоры.
Нужно, чтобы кто-нибудь с белым айпишником у «домашнего» провайдера прокси поднял...
AS — маленькие паутинки.
IX — узлы, которые их связывают в большую сеть.
Если хочешь, чтобы «Интернет» разбился на локалки, бомби IX.
То есть по мнению менеджеров «Фейсбука» у каждого члена семьи должен быть свой интернет-канал.