- 1
IT Оффтоп #230
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
IT Оффтоп #230
#200: https://govnokod.ru/28945 https://govnokod.xyz/_28945
#201: https://govnokod.ru/28948 https://govnokod.xyz/_28948
#202: https://govnokod.ru/28951 https://govnokod.xyz/_28951
#203: https://govnokod.ru/28954 https://govnokod.xyz/_28954
#204: https://govnokod.ru/28971 https://govnokod.xyz/_28971
#205: https://govnokod.ru/28986 https://govnokod.xyz/_28986
#206: https://govnokod.ru/28991 https://govnokod.xyz/_28991
#207: https://govnokod.ru/29002 https://govnokod.xyz/_29002
#208: https://govnokod.ru/29060 https://govnokod.xyz/_29060
#209: https://govnokod.ru/29070 https://govnokod.xyz/_29070
#210: https://govnokod.ru/29079 https://govnokod.xyz/_29079
#211: https://govnokod.ru/29092 https://govnokod.xyz/_29092
#212: https://govnokod.ru/29093 https://govnokod.xyz/_29093
#213: https://govnokod.ru/29104 https://govnokod.xyz/_29104
#214: https://govnokod.ru/29114 https://govnokod.xyz/_29114
#215: https://govnokod.ru/29125 https://govnokod.xyz/_29125
#216: https://govnokod.ru/29132 https://govnokod.xyz/_29132
#217: https://govnokod.ru/29147 https://govnokod.xyz/_29147
#218: https://govnokod.ru/29156 https://govnokod.xyz/_29156
#219: https://govnokod.ru/29166 https://govnokod.xyz/_29166
#220: https://govnokod.ru/29181 https://govnokod.xyz/_29181
#221: https://govnokod.ru/29185 https://govnokod.xyz/_29185
#222: https://govnokod.ru/29190 https://govnokod.xyz/_29190
#223: https://govnokod.ru/29203 https://govnokod.xyz/_29203
#224: https://govnokod.ru/29211 https://govnokod.xyz/_29211
#225: https://govnokod.ru/29212 https://govnokod.xyz/_29212
#226: https://govnokod.ru/29218 https://govnokod.xyz/_29218
#227: https://govnokod.ru/29220 https://govnokod.xyz/_29220
#228: https://govnokod.ru/29230 https://govnokod.xyz/_29230
#229: https://govnokod.ru/29235 https://govnokod.xyz/_29235
Этот оффтоп сгенерирован автоматически.
Индекс оффтопов: https://index.gcode.space/.
Зеркала Говнокода и полезные ресурсы:
* https://govnokod.xyz/ (альтернативный Говнокод)
* https://gcode.space/ (read-only зеркало Говнокода)
* https://t.me/GovnokodBot (Говнокод-бот в «Telegram»)
* https://t.me/GovnokodChannel (Тематический канал в «Telegram»)
* https://app.element.io/#/room/#govnokod:matrix.org (резервный чат)
Примечание: автоматические перекаты в настоящее время осуществляются только с аккаунта nepeKamHblu_nemyx.
Остерегайтесь подделок. Берегите себя и своих близких. Кок!
grinch.pcx
С потолка он строит дом,
Носит воду решетом...
Напомнило, как в ДОС до появления API через дескрипторы файлов был API через FCB (file control block). Флаг присутствия расширенной части FCB находился... в расширенной части. Поэтому под расширенную часть приходилось выделять память, даже когда расширенной части нет.
и он выводился у меня вниз головой
Зачем? Зачем? В броланде для Шиндошс была обертка, которая абсракировала топдаун, а для дос спермоформат не имел смысла.
Я кстати непомню зачем они строки перевернули, быстрее мемсру во фреймбуфер что-ли?
но всё таки ом эрлик те зайн: всем похуй на эскалацию внутри десктопа. Если ты уже получил шелл на машину, то это вопрос времени, когда ты её ёбнешь: сюрфейс атаки зело большой.
ни ссылки не поймать, ни свг не сохранить
Вот путины...
отдельный лайк человек на CRT монитор в 2026-м году
А опёнок правда классный. К сожалению, я так и не придумал, как применить его на работе.
Я думал, эта модель всё-таки новее.
Плюс ЭЛТ в том, что на нём можно врубить произвольное разрешение по вертикали, если частота строчной развёртки укладывается в поддерживаемый диапазон (она равна произведению кадровой на вертикальное разрешение), и произвольное разрешение по горизонтали (тут ограничением будет только ёмкость канала передачи, при большой плотности пикселей будет мыло).
Больше плюсов сейчас нет. По цветам OLED даст похожее пространство (правда, цена будет больше).
Короче, монитор для отладки, если надо переключаться между видеорежимами.
Они держатся на трёх китах: на HLL (curator.pro), на Servicepipe и на DDOS-Guard. Все трое — российские аналоги Клаудфлёра. У «Чебурнета» практически единая точка отказа, за исключением хитрецов, которые смогли включить в белый список собственные автономки.
Погнали.
AS51115 HLL LLC (curator.pro): kion.ru, moskva.mts.ru, auchan.ru, magnit.ru, dixy.ru, rutube.ru, tutu.ru, kommersant.ru, rbc.ru, moskva.taximaxim.ru, service.urentbike.ru, vkusnoitochka.ru, 1tv.ru, tvc.ru, tnt-online.ru, vgtrk.ru, otr-online.ru
AS201706 SERVICEPIPE LLC: av.ru, chizhik.club, 5ka.ru, perekrestok.ru, nspk.ru, sbp.nspk.ru, megamarket.ru, metro-cc.ru, burgerkingrus.ru, samokat.ru, kuper.ru, okko.tv, cdek.ru, victoria-group.ru, flypobeda.ru, tass.ru
AS57724 DDOS-GUARD LTD: russian.rt.com, cbr.ru, mnogolososya.ru, aif.ru, ntv.ru, ren.tv, friday.ru, tvzvezda.ru, iz.ru
AS8342 JSC RTComm.RU: travel2moscow.com, topdelivery.ru
AS12389 PJSC Rostelecom: rzd.ru, gosuslugi.ru, pochta.ru
AS13238 YANDEX LLC: lavka.yandex.ru, market.yandex.ru, go.yandex.ru, ya.ru, kinopoisk.ru, music.yandex.ru, mail.yandex.ru, edadeal.ru
AS15632 JSC "Alfa-Bank": alfabank.ru
AS24638 Rambler Internet Holding LLC: lenta.ru, gazeta.ru, rambler.ru
AS24823 VTB Bank (Public Joint-Stock Company): vtb.ru
AS29226 JSC Mastertel: rosagroleasing.ru
AS41185 National system of payment cards Joint-stock Society: vamprivet.ru
AS42231 PJSC Promsvyazbank: psbank.ru
AS42809 PJSC Rosseti: rosseti.ru
AS43298 Storm Networks LLC (stormwall.pro): kp.ru, ctc.ru, domashniy.ru
AS44386 LLC Internet Solutions: ozon.ru
AS44704 Perekrestok-2000 LLC: food.ru
AS47541 VKontakte Ltd: vk.com
AS47724 Limited Liability Company HeadHunter: hh.ru
AS47764 LLC VK: max.ru, ok.ru, rustore.ru, mail.ru, dzen.ru
AS48009 MB Information Protection LLC: moex.com, finuslugi.ru
AS48061 Limited Liability Company GPM Digital Technologies: tv3.ru
AS49505 JSC Selectel: pnp.ru
AS56631 Onlanta Ltd.: mir24.tv
AS57073 LLC Wildberries: wildberries.ru
AS57352 Federal State Unitary Enterprise Rossiya Segodnya International Information Agency: ria.ru
AS57629 LLC IVI.RU: ivi.ru
AS60922, AS64432 Variti+ LLC: myspar.ru, moscow.petrovich.ru
AS197482 DoubleGIS LLC: otello.ru, 2gis.ru
AS197695 "Domain names registrar REG.RU", Ltd: slata.ru, travelrussia.ru
AS199669 Okay-Telecom Ltd. (atlex.ru): muz-tv.ru
AS200350 Yandex.Cloud LLC: music.mts.ru
AS201012 KEH eCommerce LLC : avito.ru
AS207104 "BiZone" LLC: mtsbank.ru
AS210756 EdgeCenter LLC: krasyar.ru, matchtv.ru
бгггг
На сколько реально поднять VPN с айпишником с белого списка?
https://raw.githubusercontent.com/igareck/vpn-configs-for-russia/refs/heads/main/WHITE-CIDR-RU-all.txt
https://github.com/AvenCores/goida-vpn-configs/raw/refs/heads/main/githubmirror/26.txt
Пизда, приплыли
* Любая локалка
* Кванмён в КНДР
* Чебурнет в РФ
https://en.wikipedia.org/wiki/Capitalization_of_Internet
Карл-Маркс-Штадт
https://www.youtube.com/watch?v=5BO8MgJk3fk
--Are you looking for an internet browser?
Я думал, за раскладу отвечает ctfmon.exe. Он вечно дохнет и я не могу потом язык переключить
В 8.1 работает, в 10-11 пока не проверял.
Можно на Рабочем столе сделать ярлык для ctfmon.
Ну и нахуя тогда будут нужны гигабитные сети?
https://habr.com/ru/news/1013086/
Но после «пока я президент, повышения пенсионного возраста не будет» народ уже ничему не верит.
И да, провайдер может и не знать. ТСПУ — чёрный ящик, управляемый дистанционно.
https://www.instagram.com/p/DWEpoO7ClML/
débil — слабый
Петух с более долгим временем жизни захватил кложей маложивущего петуха, и тот утёк.
Причем в коко еще и захват случается неявно (в отлчиие от С++ и PHP).
Вот в расте такая хуйня бы не скомпилировалсь. ГЦ говно для дебилов. Факт.
Если объект a со временем жизни t_a косвенно ссылается на объект b, то время жизни t_b >= t_a. Если \tau — константа, разграничивающая "короткоживущие" и "долгоживущие" объекты, и t_a >= \tau, то t_b >= \tau и следовательно b — долгоживущий объект. Кок!
> и тот утёк
Утечка памяти — это проблема, когда объект, на который нет ссылок из root set программы, не деаллоцируется. Если a находится в root set программы, и a ссылается на замыкание, которое ссылается на b, то root set программы транзитивно ссылается на b, и утечки нет.
> ГЦ говно для дебилов.
Программисты, которые даже с training wheels ГЦ умудряются обосраться с памятью — сертифицированные анскиллябры.
Если тебе не нравится слово "упячка", то давай придумаем другое. Короткоживующий петух занимает память, и __на_самом__деле__ не нужен. Его захватили чисто случайно, не включая мозгу. Как это назвать?
> Программисты, которые даже с training wheels ГЦ умудряются обосраться с памятью — сертифицированные анскиллябры.
Так в том и дело, что GC и кложи прячут это дело под ковер так ловко, что обсираться одно удовольствие!
Перед тем, как обсуждать преимущества и недостатки разных стратегий управления памятью, неплохо было бы определить, зачем и для чего они есть, и какие проблемы решают.
> что GC и кложи прячут это дело под ковер так ловко
Потому что GC в первую очередь заточен для решения проблемы висящих ссылок (последствия которой, как правило, более серьёзны), и, внезапно, утечек памяти. А решение задачи
> __на_самом__деле__ не нужен
оставляют прокладке между креслом и mmap.
Безусловно, это неправильно: если у тебя есть хотя бы одна транзитивная ссылка на объект из статической памяти или из стеков потоков, то он не leaked. Настоящего leaked не может быть в среде с GC. Тем не менее, рядовой javaman называет это утечкой.
Ебланское ли это название?
Вероятно, ебланское. Но не я его придумал, и других названий в java мире кажется нет.
> Потому GC в первую очередь заточен для решения проблемы висящих ссылок (последствия которой, как правило, более серьёзны), и, внезапно, утечек памяти.
Это правда. Но когда мы решаем эти проблемы, у нас всё равно остается описанная выше проблема "утечки" (я беру слово в кавычки, потому что это не та утечка) и поскольку в Java никак не выразить время жизни объекта (в отличие от, например, раста) то даже не понятно как помочь прокладке её решить.
Впрочем, если вместо ссылки взять Rc (или, не дай бог, Cell), то проблема останется и в Расте тоже. Любой шаред поинтер делает её возможной, потому что объектом владеет уже он, а не долгоживущий петух.
Внимание, вопрос: можно ли выдумать аннотацию времени жизни для объкта, и не давать ему иметь ссылки на менее долгоживующие объекты?
Типа
Можно ещё прислушаться к голосу со стороны параши.
> Внимание, вопрос: можно ли выдумать аннотацию времени жизни для объкта, и не давать ему иметь ссылки на менее долгоживующие объекты?
Чтобы работало в общем случае — нельзя. В споре между джавамэнами с GC и чулочниками c аннотациями нет правильного ответа, поскольку Тьюринг поднасрал своей проблемой остановки, а Райс — своей теоремой. Из-за них двоих статический анализ любого нетривиального свойства для произвольной программы невозможен. Получается, есть два стула:
- Можно энфорсить свойства программы в рантайме, динамически, а не статически. GC, динамическая питуизация и друзья.
- Либо ограничивать язык так, чтобы некоторые валидные программы на нём нельзя было написать, но подмножество допустимых программ можно было статически верифицировать.
Выбор между стульями определяется практическими нуждами. А Раст бухнулся на оба. Вместо того, чтобы дать людям поебаться с доказательствами нетривиальных случаев в separation logic, они либо прибегают к динамике (различные сорта smart pointers), либо к аксиоме, няхуй (c точки зрения Карри-Ховарда, unsafe аннотация = аксиома).
Есть coq-of-rust rocq-of-rust, там можно: https://github.com/formal-land/rocq-of-rust
>At the heart of rocq-of-rust is the translation of Rust programs to idiomatic code in the theorem prover Rocq. Once in Rocq, the code can be verified using standard proof techniques.
Только вот мне не очень понятно, как они там доказывают, что они 100% сохраняют семантику при переводе
Да и вообще, Rust это слишком сложный язык. Вот если например доказывать какие-то утверждения относительно программ на brainfuck, то тут должно быть намного проще, а в Rust постоянно какая-то хуйня меняется
Ну мы начали с джавы же.
В джавкином мире вообще терминология своеобразная.
1. Говорят "var foo = new Foo();" называют "объект foo", хотя это указатель (или ссылка?).
2. Указаитель называют то указателем (NPE) то ссылкой (в JLS)
3. Описанную выше проблму называют течкой. Ну а как её назвать-то?
> Чтобы работало в общем случае — нельзя.
Так и знал. Ученые в говне моченые, когда вже решите проблему с точкой останова и всякой другой хуёней которая портит мне стат анализ??
> чтобы некоторые валидные программы на нём нельзя было написать, но подмножество допустимых программ можно было статически верифицировать.
ну это как раз раст и есть. Потому что unsafe rust это уже другой язык.
> Вместо того, чтобы дать людям поебаться с доказательствами нетривиальных случаев в separation logic
"Вот сейчас мейнстрим-питухи, всякие перекладыватели джейсонов через рест эйпиай начнут ебаться с доказательством", -- подумали растовики, и дале им ансейф.
> c точки зрения Карри-Ховарда, unsafe аннотация = аксиома
ну кстати они говорили что вроде часть стандартной либы (она вся ансейф) они как-то проверили и пруфанули её корректность, хз так ли это
Рендомный крейт конечно никто не пруфил. Я и сам дергаю прыщесисколы из unsafe, и теку.
Я уже где-то подобное обсуждал. Можно доработать GC, чтоб там через "ИИ" и теорем пруверы или через некое иное говно каким-то образом доказывать, что какая-то там херня никогда в ходе штатной работы программы использована не будет, так что ее спокойно удалять, несмотря на наличие ссылки на нее. https://govnokod.ru/29125#comment1215396
С другой стороны, если например в массив могут и писать и читать, но в определенный момент работы получается так, что дальше нет никаких функций, которые бы хотели из этого массива что-то читать (а до этого такие функции были и этот массив имело смысл хранить) но ссылка на массив все еще есть, то его можно очистить и при этом "занулить" все операции записи в такой массив, т.к. это уже нахуй не нужно.
Такие ассампшены можно только про стековые (хочется назвать их автоматическими, но в джаве это неверно) переменные.
В некотором смысле, все статические мутабльтыне переменные надо рассматривать как volatile.
Можно проверить, что если никакой рефлексии и динамической загрузки классов не используется, то тогда такую оптимизацию можно делать для ограниченного множества случаев.
Собственно, GC работает только лишь из-за того, что есть какие-то ограничения. В жабе например нельзя нативно сделать XOR linked list т.к. ссылки там должны быть явными, а не перексоренными указателями
Да, GC было бы трудно работать с указателями, которые надо ксорить чтоб получить реальный адрес
Но в джавке есть проблемы посерьезнее.
Мой любимый пример это отсутствие какой-либо инстанциации шаблонов. Генерик там есть только в рантайме, а под капотом всегда одна функция с общим типом -- указателем.
потому `List[Byte]` это лист указаталей на Byte. А указатель всегда на объект в куче, а у объекта там 49 байт всякого говна, и получается довольно дорогой лист. его там JIT конечно как-то облагородит (байты скорее всего синглтоны, а вот уже инты -- нет) но всё равно уебищно. Массив байт надо выражать по-другому (через массив или буфер)
Byte будет занимать 12, 4х mark word, 4x compressed class reference, 1x byte, 3x padding
"49" я конечно же сказал условно, но в целом есть еще монитор (который кондишнл вар) и какие-то хеши и прочая говна
Реально проще каждого питуха посадить в отдельную клеточку размером с регистр, и не экономить на спичках.
В 32 я бы равнял по 32, всё таки. Обычно совет -- выравнивать до близжайшей степени двойки
С нативными указателями нельзя, да. Но можно в качестве конь-тейнера использовать массив, а вместо указателей — индексы элементов этого массива. Это, конечно, извращение, ибо если есть массив, то зачем тогда делать вид, что его нет.
Это в рустне питухи иногда указатель на подстроку так делают: берут целое (usize или как оно там) и делают слайс из строки каждый раз, бо все мувабельно, и хранить указатель на подстроку типа стрингвью в той же структуре небезопасно (а значит не компилируется)
идиоты блядь, вы же реально изобрели указатели с проверкой на NPE в рантайме на каждое разыменование (паника полетит, если в строке места нет)
Во-первых, прикольно делать stop the world и писать при этом "hooloobooling" пять минут, во-вторых у нас уже народилося поколение дебилов которые "я не могу программировать без аккаунта антропика" а теперь нам нужна плеяда программ извините ваша программа не работает без аккаунта Антропик
Так, накину, мимо пробегая.
Но, кстати, тот факт, что можно что угодно утечь через «Rc», был использован в качестве аргументации того, чтобы убрать «unsafe» с «Box::leak».
а референс-сайкл это не лик по снауту
или лик?
Снаут, цикл RC (при наличии пути к нему из рута) это лик или нет?
Гост а ты считаешь ликом ситуацию когда рукожоп засрал память при этом имея на нее ссылку просто рукожоп?
Сегодня шёл через мимо пруда и слышу крякают, а утечек ни одной, вместо них на льду сидят вороны и крякают, когда что-то выковыряли изо льда и не поделили.
Серенькие крякают
Ебут в жопу казака
Аж медальки звякают
На дубу сидит ворона
И орет, болезная:
Вот вам труд и оборона!
Вот вам жизнь полезная!
А ЗНАЕТЕ КТО ЕЩЕ ЛЮБИЛ ЖИВОТНЫХ И НЕ ЛЮБИЛ ЕВРЕЕВ???
А потом ВНЕЗАПНО
https://svarogi.wordpress.com/wp-content/uploads/2017/10/charlemagne-usury.png
Так что это в далеком прошлом
Я не в курсе просто
Исламский банкинг
Мама: это когда в рот берут
Отец: не берут, а дают! Пацана растим! Сынок, а где ты вообще такое услышал?
Cын: ну вот в книжке написано: "и минет двадцать лет"
Проклятие Пророка (да благословит его Аллах): Имам Муслим передал хадис, в котором Посланник Аллаха (да благословит его Аллах и приветствует) проклял ростовщика, того, кто берёт у него в долг, писца, и обоих свидетелей сделки, сказав: «Они (ничем) не отличаются (друг от друга)».
А как узнаешь, в чём её суть, всё получается наоборот.
При ипотеке Мубараха банк выкупает квартиру у застройщика, делает накрутку на её цену и передаёт её покупателю в рассрочку за завышенную цену. Типа процентов за кредит нет, банк сразу пиздит деньги.
Побочным эффектом ипотеки Мубараха является бессмысленность досрочного погашения: даже если погасить досрочно, нужно внести всю стоимость накрутки, ибо процентов за время нет (хотя лет двадцать назад банки и немусульман тоже наёбывали, не возвращая проценты за досрочное погашение).
Да, а я не мог вспомнить это название
Вот тут ликбез:
https://www.vtb.ru/articles/ipoteka/islamskaya-ipoteka-chto-eto-i-kak-vzyat/
Оказывается, есть ещё как минимум два варианта, но суть всё та же.
А если сам еврей и банк еврей, то положено давать в грейс! Но по субботам не работают.
Одна же сделка-то.
В 1933 г. Имперский Союз немецких обществ защиты животных выпустил медаль. На ней отчеканен портрет Гитлера, а на реверсе — надпись «Я решительный противник убоя животных. Адольф Гитлер». К тому времени уже было широко известно, что фюрер Германии придерживается вегетарианской диеты
Типичные лейбористы
• во-вторых, всю жизнь кормился в НКО
• в-третьих, прихватизатор, как настоящий (((березовский))), attempted to sell the .org TLD to private equity
• а в-четвертых, из полного текста закона, лол:
... inappropriate Nazi references in debates on topics from politics to technology, aiming to counteract memetic trivialization of the Holocaust
Какой Фрэнк (((Баум))) и Добрый (((Годвин)))
Например, чтобы влезло сразу, а не реаллочить в цикле, что сложно даже назвать недооптимизадцией.
Лик. Наличие пути к нему из рута иррелевантно, т.к. когда это путь пропадёт, ничего всё равно не освободится.
Главный мой нахрюк на GC (в го жава котлин сишарп питон) я уже давно всем рассказал: как закрыть внешний ресурс?
*иногда не может
Бывают рукожопые "неканонные" лики: например, когда какое-то говно постоянно складывается в какой-то кеш, и из-за ошибки никогда не очищается. Это не особо отличается от сценария, который описал Сняут: и в том, и в другом случае программа гарантированно будет жрать память и OOM'нется через энной количество времени.
Потому что утечка памяти - это неограниченное по времени удерживание программой памяти, которая де-факто является неиспользуемой, а по какой причине это произошло - на определение не влияет.
Хорошее определение, осталось только формализовать
> де-факто
Де-что и де-как? К примеру, у меня в "Erlang" можно
1. Отправить любую структуру по сети на удалённый сервер (даже замыкание*, даже Аллаха)
2. Изменить код программы в рантайме.
Как компилятор или алгоритм GC должен решить, что "де-факто" какое-то поле структуры не используется и не будет использоваться?
Но, допустим, у тебя какой-то другой язык, где подобных фич нет, и оптимизирующий компилятор как-то сумел доказать, что некое поле структуры "де-факто" не используется, и выкидывает его. Отлично, GC не увидит это поле, и твою "де-факто" неиспользованную память соберёт.
Проблема в том, что вы недовольны тем, что алгоритм, решающий одну очень определённую задачу, магически не делает за вас всю остальную работу. Если мыслить в таких субъективных категориях, то утечкой является и выделение буфера на 16 килобат в условиях, когда из них будет использоваться только 8.
* Крайне не рекомендуется на практике, ибо на удалённой ноде должен быть загружен в точности тот же код, иначе будет исключение
Всё остальное — недо-оптимизированный код.
Если буфер соберут после последнего использования, то утечки нет.
Если я из воздуха создал нужный указатель после того, как проебал, и передал во free, то я могу эту память освободить. Таким образом, утверждение о невозможности тоже является неверным.
У вас кококой-то странный спор о терминологии. А если я запущу хром, а сам им не пользуюсь и сижу в фуррифоксе у меня тоже память утекла тогда?
Буфер на 16kb создался при старте программы и используется на всём протяжении её работы. За время её работы используются только нижние 8kb. Остальные 8kb удерживаются неограниченное время и де-факто являются не используемыми. По твоему определение это утечка памяти.
> Если я из воздуха создал нужный указатель после того, как проебал, и передал во free, то я могу эту память освободить
Не отчаивайся.
Если ты проебал 8k один раз, и на всю жизнь, то это не страшно. А если ты на каждый всхрюк проебываеш 8k, и через сутки тебя надо перезапускать, то ты потек (даже если формально у тебя есть указатели на эту память)
Мы не про "страшно", а про определение. Я привёл минимальный пример, как сделать из него ``страшно'', можешь додумать сам.
Плодить бесполезные сущности можно умудрится и в языках с ручным управлением памятью. Однако в таком случае вину свалить на бездушную программу не получится и придётся признать "лан, я обосрался, с кем не бывает".
Чем это отличается от маллока без сохранения поинтера?
P.S. Pointer provenance передаёт привет.
поинтер не обязан быть просто адресом, компилятор может прикопать в нем какие-то ценные знания (во время компиляции то). Два понитера на один и тот же кусок памяти не обязаны работать одинаково (увы)
> A storage instance is "tainted" once any valid pointer with this provenance is converted to integer (cast) or to IO (printf with "%p"). For the sake of the "happened before" relation, "tainting" constitutes a side effect, even though the taint is not observable.
Допустим, мы ничего из вышеперечисленного не делали.
> An integer-to-pointer conversion (cast) or IO (scanf with "%p") is only defined if the corresponding storage instance had been tainted, and if the result is a pointer to a byte (or one-after) of the storage instance.
То есть, и получить такой указатель из воздуха и куда-то его передать — UB. Всё!
Это ты вот эту страницу цитируешь?
https://rust-lang.github.io/rfcs/3559-rust-has-provenance.html
я правда не уверен, делает ли access memory при вызове free
Если я правильно понял твой ход мысли, то выход указателя, полученного через malloc из root set программы до вызова free утечкой не является, т.к. его можно (как?) обратно получить "из воздуха" и передать free. То есть классический и простейший случай утечки памяти утечкой памяти не является. Я изначально хотел других эпитетов навешать, но из природной доброты и воспитанности не навешал.
Через пять минут я принял сообщение в телеграме, распарсил строковое предсталвние числа, и кастанул его в указатель, и удалил память
где утечка?
нет утечки
в тспу осел
Ещё раз повторяю вопрос: *как* её можно теоретически вернуть? Какой алгоритм?
Но ты же понимаешь, что я не поверю, что ты пытаешься частным примером стандарта одного языка опровергнуть предлагаемое общее правило? Что ты не видишь, что для проверки "является ли физическая невозможность вернуть память необходимым условием утечки" нужен только мысленный эксперимент (в котором оказывается, что потерявший указатель программист лопух даже в том случае, если у кого-то есть спасительная ручка), а не существующая реальность?
тут конечно слегка лишнего пизданул, поэтому давайте доебёмся до чего-нибудь поинтереснее
частным примером опровергнуть существование
Как это сделать? Т.е. malloc вернул тебе некое значение, как именно он его получил, тебе неизвестно. Ты это значение проебал. Формальное определение "проебал" следующее: в данных, транзитивно достижимых из статически аллоцированной памяти или переменных на стеке активных тредов, его не содержится. Как вернуть то же значение?
При чём здесь вообще экспортируемые символы, при чём здесь библиотеки?
Ты ж сам это выше со мной обсуждал. Здесь мы про теоретическую возможность вернуть память даже при потере исходного указателя программой. Про то, что сама по себе потеря указателя является невозможностью вернуть память на практике, но не по определению.
> При чём здесь вообще экспортируемые символы, при чём здесь библиотеки?
При чём здесь письмо из мэилинг листа working group c++?
Я тебя в третий раз прошу привести алгоритм (для абстрактной машины, на абстрактном языке), позволяющий вернуть* произвольное заданное значение, при условии, что это заданное значение НЕ хранится в достижимой алгоритмом памяти.
* Не вернуть в смысле free, а "вернуть" в смысле return
DELETE /arena/{int64}
Но, опять же, нам не нужна эта реализация для мысленного эксперимента
Зная кишки аллокатора, можно вообще адреса подгадывать
1. Я нааллоцировал бесполезный шмат и потерял указатель
2. Я нааллоцировал бесполезный шмат, но вместе с ним потратил память ещё на хранение указателя где-то на стеке или в куче, тем не менее, никакой разницы в использовании этой памяти по сравнению с первым примером нет, в программе просто нет ни освобождения, ни доступа к этой памяти
Почему второе не будет являться утечкой памяти?
Также: с какой проблемой связана утечка памяти, из-за каких эффектов появилось понятие и почему так названо?
Ну и ответить на вопрос "где", а не "какое"
https://en.wikipedia.org/wiki/Memory_leak
...a computer program incorrectly manages memory allocations[1] in a way that memory which is no longer needed is not released. A memory leak may also happen when an object is stored in memory but cannot be accessed by the running code
https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/finding-a-memory-leak
A memory leak occurs when a process allocates memory from the paged or nonpaged pools but doesn't free it.
doesn't free, но не loses reachability
https://www.ibm.com/docs/en/aix/7.2.0?topic=performance-memory-leaking-programs
A memory leak is a program error that consists of repeatedly allocating memory, using it, and then neglecting to free it.
https://owasp.org/www-community/vulnerabilities/Memory_leak
A memory leak is an unintentional form of memory consumption whereby the developer fails to free an allocated block of memory when no longer needed.
бонус с меньшей степенью доверия
https://stackoverflow.com/questions/312069/the-best-memory-leak-definition - один из всех
https://www.reddit.com/r/eli5_programming/comments/14ggxwr/eli5_what_is_a_memory_leak_how_are_they_ caused/ - ни одного определения, состоящего только из потери reachabilty
https://stackoverflow.com/questions/3373854/what-is-a-memory-leak - здесь действительно есть определения из потери reachability, но меньшинство
Reachability указателя на момент когда "memory is no longer needed" является необходимым условием освобождения памяти, поскольку этот указатель нужно передать free, о чём я пытался весь вечер рассказать.
Достаточным условием оно, конечно, не является, но я, блин, говорю с людьми, у которых указатели из воздуха берутся, т.е. до достаточности мы ещё не скоро дойдём.
doesn't free это doesn't free. это значит что free не был вызван с правильным аргументом. причины не важны, достижимость не важна, важно что если она есть, она не используется. условие не необходимое.
Википедия даёт определение упячки через терминамы "память, которая нужна" и "память которая не нужна". Я говорю ровно о том же, но используя более формальное определение "памяти, которая ещё нужна", а именно "память, на которую есть транзитивные ссылки из root set программы".
Когда она перестаёт использоваться и не будет использоваться в будущем. Потеря указателя гарантирует невозможность отдачи, но не является единственным вариантом. Не освобождать никогда это тоже нарушение абсолютно любой точки, определённой через "когда".
Википедия даёт определение упячки через терминамы "память, которая нужна" и "память которая не нужна"
Википедия пишет "а также существет случай, когда указатели потеряны". Ну ты же видишь это. Я не верю, что не видишь.
Тяжко пушо ты пытаешься зацепиться за какие-нибудь логические неувязки, коих нет.
память, на которую есть транзитивные ссылки из root set программы
А каким образом она нужна, если в будущем нет ни единого доступа к ней?
Перечитай часть ответа, говорящую про висящие указатели. Или ты сейчас споришь со мной о том, что такой инвариант как "отсутствие висящих указателей в достижимых коду структурах" — это анскилльная хуй-ня какая-то? Т.е. ты пишешь код в духе: ``я точно знаю, что это поле структуры в будущем никто читать не будет, сделаю-ка я free на нём, и так оставлю''. Если да — сочувствую твоим коллегам, если нет, то ты присваиваешь этому полю NULL. И вот сюрприз, что произойдёт в этот момент: указатель станет недостижим.
Смотри
https://govnokod.xyz/_29241/#comment-1346052
При чем прям о твоему определению, вовремя фри никто не вызывает. Никто вообще его не вызывает.
Я провожу разницу между простым "неэффективным использованием памяти" (когда навыделял, держишь, но не пользуешься) и "утечкой памяти". Утечка памяти — это гораздо худшая проблема, чем 2 в https://govnokod.xyz/_29241/#comment-1346052, т.к. она имеет склонность происходить незаметно, чинится только перезагрузкой приложения, и бывает в цикле. Когда я слышу "утечка памяти" я слышу "критический баг", ибо стабильность системы скомпрометирована: она неминуемо, за конечное время, приведёт к OOM на сервере или, как минимум, к падению приложения.
Если ты не видишь разницы между этим сценарием и "приложение жрёт 2 килобата на сессию вместо 1", то ок, оставайся при своём.
Ты, полагаю ведёшь к ответу вида: утечка — это когда RES в top непрерывно растёт. Так вот, с GC (мы говорим НЕ про ублюдочную JVM) это происходит только если алгоритм написан так, что он действительно накапливает живые ссылки. Поскольку ссылки живые, тут хоть GC хоть что. Скорость накопления подобных ссылок назовём фактором уебанства.
Возвращаясь к изначальной проблеме с захватом питуха через замыкание. Если алгоритм написан так, что он этого питуха захватывает только один раз, то RES = RES_нерукожоп + const_питуальности. Т.е. вклад от GC = const_питуальности. Если же он постоянно создаёт живые объекты и захватывает в них питухов, то RES = RES0 + фактор_уебанства * (const_уняка + const_питуальности) * t.
Заметь, что const_питуальности вносит вклад в производную по времени только потому, что присутствует ненулевой фактор уебанства.
Без GC формула другая, в неё входят не только вклад от живых ссылок, но и вообще от каких угодно. Т.е. сам алгоритм не обязан иметь большое O_уебанства.
Не совсем, непрерывно - это частный случай повторяемой утечки памяти
> Так вот, с GC
Мы не про GC, мы про проблему и определение
> Если же он постоянно создаёт живые объекты и захватывает в них питухов
А это точно leak?
Проблема в том, что программа потребляет оперативную память, которая не используется в принципе, и начинает давить соседей или вообще не помещается в машину. Детали не важны, важно бесполезное потребление.
Количество замыканий, паддинг и прочее не являются утечкой сами по себе, потому что раздувают потребляемый объем, но продолжают использовать его, и, в случае успешного memory management, приложение вполне себе может держать потребление на низком уровне, пусть и не самом компактном. В случае утечки мы можем починить малой кровью, без изменения лейаутов и компиляторов.
Давай начнём с неточного, но интуитивного определение утечки: это когда вызвали условный malloc, но не вызвали условный free "когда нужно". С этим согласен?
Если дать строгое определение, то утекшей памятью является память, которую невозможно освободить, поскольку программа пронякала все ссылки/указатели на неё.
Понимаю, что ты перепутал роли, и теперь думаешь, что это ты-то мне пытался доказать, что речь про неиспользуеую память в целом
В расте эта вся хуйня с овнершипом тоже далеко не идеальная https://youtu.be/1iPWt1gvT_w?t=905 вот например про двойные ссылки хуйня, баг висит с 2015 года: https://github.com/rust-lang/rust/issues/25860
Да и двусвязные списки в вашем сраном расте хер реализуешь без ансейфа
Но Раст хотя-бы пытается иногда, а джава не пытается даже
Завязывать всю систему на то, что какая-то одна программа "никогда не упадет" это как хранить все данные на одном сторадже без бекапа, потому что это очень надежный сторадж, он никогда не развалится, мне сигейт обещал
https://hackaday.com/2025/11/20/how-one-uncaught-rust-exception-took-out-cloudflare/
Рекавербл ошибки (IO ошибки, всякие ошибки котьорые нельзя предотвратить заранее итд) в расте принято представлять через таггд юнион (монаду?:)) `Result<Success, Error>`.
Вызывающая сторона может сделать паттерн матчинг, и обработать обе веточки (ошибку или данные)
Но есть метод `unwrap` (или except, который тот же анврап, но с месседжем) который вернет данные, а если там ошибка -- сделает паник.
Паника это что-то типа исключения в крестах: она летит до самого верху стека треда разворачивая стек (вызывая деструкторы) и там самом верху убивает тред.
Формально её можно поймать, но это очень плохая практика (медленная, кривая, раньше ее вообще не было) и ею пользуются только в особых лоу-левел случаях (типа ты запустил чужой код, и хочешь восстановиться, если он упал). За построение бизнес-логики на ловле паники дают пизды.
В реальной жизни unwrap используют в
1. тестах
2. write-n-throw коде
3. если ты на 100% уверен, что такого не может быть (не открывается /dev/null на юниксе например) и тебе настолько похуй на эту ошибку что ты согласен наебнуть программу.
Питузик сделал анврап, как ты видишь по ссылке.
Про панику в расте вот можно почитат https://doc.rust-lang.org/nomicon/unwinding.html
в целях оптимизации, можно попросить раста считать панику пиздецом
Тогда паника просто наебнет твое приложение
У нас тоже есть try!, но это не значит, что его нужно писать
Если проводить аналогию с ЖАБА, то петух не обработал исключение. Но Раст хотя бы требует это сделать явно.
В языках для написания веб-сайтов и формочек (типа C#, Kotlin и Python) вообще никак не форсится проверка ошибок.
Я понимаю, что в Erlang принято переживать обсёр конкретного питуха, но это уже не про язык, а про платформу в целом же.
Rust, конечно, приверает. Все языки любят в пропаганду.
Например питухон сообщает:
>>
You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs. Learn more about Python.
>>
Разумеется, язык где половина библоитек не имеет стат типизации вообще, и где надо знать разницу между __getattr__ и __getattribute__ очень сильно мне lower maintenance costs. Удобно узнавать об ошибках в рантайме, нет нужны тратить время на скучную компиляцию.
Java любит пиздеть, что в ней не нужно "думать про память" потому что выделение паяти "бесплатное" (до первого major GC, да), вот и Раст пиздит
Но я рад, что раст набирает популярность в мейнстриме. Потому что до этого там набирала популярность какая-то подзалупная перхоть типа JavaScript и Python, в кои-то веки мейнстрим хоть что-то внятное родил.
Вон, например, даже в пхп когда собачку пишут ничего не падает, вообще-то! Ничего нормально сделать не могут!
Реализуешь, если они ридонли: https://doc.rust-lang.org/alloc/rc/struct.Rc.html#method.new_cyclic
Если же ты хочешь рид-райт, то у тебя два стула по Снауту:
1. Cell (проверка борова-чекера в рантайме)
2. unsafe ("на совести прокладки между стулом и перхотью на клавиатуре")
Вспоминая Д. Гуртяка, ставлю на дос
Вообще-то в организациях была куча ПО для ДОС, даже Works и Word для DOS были. Дома компьютеров не было почти ни у кого, да, у задротов были всякие БК-0010.
*если не читал, то почитай статью в вики, и оцени
https://i.postimg.cc/Vmnqv5JL/image.png
https://x.com/boris0630/status/2035310802178031875
https://paperpaper.io/wp-content/uploads/2026/02/dsc-8812.jpg
https://youtube.com/watch?v=Yj718A7_s4A
Но нет няшной тянучки
Я делаю pipe(2), и потом:
1. в ребене закрываю писателя, и читаю байт из читателя
2. в родителе закрываю читателя, делаю что мне надо, и закрываю писателя.
3. ребёнок читает EOF, и делает execve(2). Вот это и есть мой сигнал.
close(2) и read(2) есть в signal-safety(7), так что это совершенно безопасные функции для "серой" зоны между форк и экзек.
Это нормально, или можно как-то лучше?
Я рассмотрел (и отбросил) варианты:
1. Cёма-форы: их нужно где-то хранить, но если хранить в их в статике, то будет гонка при запуске нескольких детей. А если в шаред мемори, то её нужно создавать и закрывать потом: это лишняя ебля.
2. raise(3) c SIGSTOP в ребенке, и kill(2) SIGCONT из родителя. Но если родитель проснется раньше, то его SIGCONT уйдет в молоко, и ребенок уснет навечно.
3. pause(2)/sigsuspend(2) в ребенке (и килл в родителе) но чтобы это работало -- нужно инсталлировать хендлер сигнала в ребенке (даже пустой) а это лишняя ебля.
Кажется, пайпы норм решение. А как правильно-то?
там сложная ситуация: некий питух ждет его завершения, но ждет асинхронно: получая SIGCHLD, и итерируясь по спец коллекции, и вот в нее мне нужно добавить пид.
Из родителя можно через waitpid() ожидать остановки процесса.
Реальный пример, сгенеренный нейронкой:
я в курсе, но я жеж написал: там асинхронная хуйня, потому там петух не может блокировать тред. Да и не я его написал.
Ну или можно не ебать мозги и сделать через пайпы
Какой TOCTTOU )))
родител пошлет SIGCONT?
разве ребенок его не проебет?
ты его заблокировал, потому он будет pending (ждать)
тоесть после raise(SIGSTOP) либо зависнет до cont от предка, либо сразу же подберет уже пендинг сигнал
верно понял?
Если назначить обработчик SIGCONT сигналу, обработчик будет выполнен при получении даже если процесс не остановлен. Ну разве что если сигнал придет как раз в момент raise(SIGSTOP) он может немного подождать. Если надо какую-то хуйню перед блокировкой делать, а после разблокировки сразу делать только лишь execve() то эту схему надо как-то менять
Не прерывания, а сигнала. Это всё контроллеры! У меня в контроллерах никаких сигналов нет изначально, да и процессов тоже нихуя нет
Стивенс даже использует терминлогию level triggered
Я полагаю, это не нейронкой, а ещё не пофиксили редактирование комментариев?
тут главное не редактировать комментарий!
логнчо
ну то есть если я выбрал ебаться с более производительными решениями, то это только палки себе в колёса вставлять
Да, свиньи могут в канальный уровень
https://pbs.twimg.com/media/HD22FVxboAEPBEc?format=jpg
не сидим
в вашем интернете ))
https://www.youtube.com/watch?v=u2WO_KlIXZo
ну хватит уже
Похить у него нефритовый стержень,
И силы оставят его.
1) принадлежащих Императору;
2) набальзамированных;
3) приручённых;
4) молочных поросят;
5) сирен;
6) сказочных;
7) бродячих собак;
8) включённых в эту классификацию;
9) бегающих как сумасшедшие;
10) бесчисленных;
11) нарисованных тончайшей кистью из верблюжьей шерсти;
12) прочих;
13) только что разбивших цветочную вазу;
14) похожих издали на мух.
Работал я
Точно во сне
За 300 иен?
не ту страну назвали Гондурасом!
Зумер такой: ой я тебе сейчас голосовуху в ответ запишу.
Бумер такой: ой я тебе сейчас голосом позвоню по телефону.
Хуй знает даже что хуже
Голоса в ухи тоже терпеть не могу, своих хвотает
Кто-то спивается, а он...
пруф
Если я повторно создам тему с тем же названием, что закрытая, меня выебут за баян. Фактически получается цензура, темы переходят в категории необсуждаемых.
Человек описывает полностью мою проблему.
Ему кидают решение ссылкой.
Он отвечает: спасибо, работает!!
Идешь по ссылке
Там 404
https://f-droid.org/repo/ltd.evilcorp.atox/en-US/phoneScreenshots/1.jpg
https://github.com/tokio-rs/tokio/pull/1823
сука как же я буду мигающие тесты делаьть??
Я не могу зайти в nic.ru, потому что не помню номера договора.
Номер договора есть в почте, которую ебаный mail.ru заблочил за несколько некорректных вводов пароля.
Данные аккаунта "Фамилия, Имя, дата рождения", я, разумеется не помню.
И чё делать?
Или дождаться, пока старый снова попадёт в обращение
Путины разблокировали мне почту. Пришлось подключить "Госуслуги".
Охуеть блять, почему так дорого стоит домен продлить? Цена с 2к увеличилась до 6к. ОХУЕТЬ
Давайте свой днс поднимем, не надо будет платить дяде, дипвеб, кулхацкеры все дела. Чур я буду стоять над душой и разъяренно тыкать пальцем в монитор
блядьч то я прочитал
РКН не может заблокировать flibusta.lib, rutor.lib, rutracker.lib, потому что по данным РКН таких доменов не существует.
Но при этом РКН откуда-то узнал про Tor, I2P, Yggdrasil и Loki, и ему не нравится, что эти сети отказались с ним сотрудничать.
1. Домен просрочен (как уже было и с хузом, и с ру).
2. Веб-узел за Клаудфлёром (который тормозит), но я знаю прямой айпи-адрес и доступ к нему не заблокирован.
3. У сервера несколько айпи-адресов, некоторые из которых заблокированы, некоторые нет (или заблокированы только по SNI, что обходится фрагментацией пакетов).
4. У веб-узла доменное имя, о котором не знает ICANN, например, rutor.lib, а переключаться на специфический DNS неохота.
Во всех случаях вместо правки hosts можно поднять свой DNS и течь.
Можно было физически зайти в UEFI-НЕ-BIOS и поменять, но ехать в датацентр "три пизды" сил не было. И вот, прописали хост, и он пустил (даже самоподписаный серт попытался предъявить).
А еще есть файл lmhosts. Это из времён NetBIOS (примерно до Vista, когда переделали сетевой стек). По умолчанию винда искала мастер браузер (комп, держащий список компов в сети -- у него спец имя) и другие компы брод(не мульти!) кастом.
Так что зайти на комп в другой сети можно было либо по IP (это отламывало керберос в пользу NTLM, но в те времена всем было насрать) и невозможно было получить список компов. Можно было поднять WINS (это как DNS для NetBT) или вручную прописать в файл lmhosts адреса компов.
Теперь в винде мультикаст (какая-то хуйня поверх SOAP -- реально XML гоняет), так что и браузер не нужен, и между сетями можно поднять IGMP Proxy на роутере, и всё заработает.
У меня, кстати, с Яндексом проблема: не могу войти в учётку, которая названа по моей реальной фамилии. Требуют кодовое слово, которое я вводил 20+ лет назад и уже не помню. Естественно, в качестве девичьей фамилии своей матери или почтового индекса родителей я не буду вводить реальный ответ, иначе сломают в первый же день; ввёл нечитаемый набор символов, который невозможно угадать.
Подавал заявку на разблокировку три раза, светил своими учётками Госуслуг и mos.ru, где те же данные, что и в яндексовской учётке (более того, они зарегистрированы на этот же ящик, в ящик приходят увкдомления от Госуслуг и mos.ru), перечислял свои контакты — результата ноль. Как будто форма разблокировки вообще не работает.
При этом у меня есть доступ к ящику через imap, pop3, smtp. На этот ящик Яндекс шлёт рекламу своих сервисов, в которые я зайти не могу. Суки.
https://i.postimg.cc/4dqVxNRk/image.png
1. Я помню логин.
2. Я помню пароль.
3. Моя учётка не заблокирована за нарушение (как я уже написал, почту по imap забрать я могу).
У меня вдруг с чего-то стали спрашивать кодовое слово, которое я не вводил больше двадцати лет (гы, эта учётка старше некоторых сотрудников Яндекса). Я думал, что оно нужно только для восстановления учётки, если я забыл пароль. Но я пароль помню.
Совещание в Познани (5-6 февраля 1943): На этом масштабном совещании присутствовали представители военной промышленности, вермахта и высшие чины НСДАП. Геббельс и Шпеер требовали от бизнеса максимального увеличения производства вооружений и выделения людских ресурсов для фронта за счет закрытия невоенных предприятий
Цель встреч: Убедить бизнесменов пойти на огромные жертвы для спасения режима после катастрофических потерь на Восточном фронте (потери в технике были эквиваленты 2–6 месяцам производства).
Речь в Спортпаласте (18 февраля 1943): Кульминацией пропагандистской кампании стала знаменитая речь Геббельса «Хотите ли вы тотальной войны?», на которой присутствовали представители всех слоев общества, включая промышленников, от которых требовалась полная лояльность и мобилизация усилий.
ну то есть конца не видать
Страна:Sydney, Австралия
Пол:женский
ВКонтакте:3885655
Я думаю, что это счётчик. Оно не сильно похоже на Алесю. Больше на говнаря.
Но тут какая-то сомнительная личность. Вот тут он ещё был Алесь:
https://qna.habr.com/user/nekotwi
Черты лица у Алеся и Алеси совпадают.
Настоящий специалист определяется по ушкам
инспектор по отверстьицам
https://www.youtube.com/watch?v=HqOvP7nkG6U
https://gravatar.com/eed5bd3e349a667f7120468ef73e007b -> https://gravatar.com/nekotwi -> Этот профиль закрыт.
— Я не стану приводить примеры с использованием этой оскорбительной фразы — это неуважительно и противоречит этическим нормам.
Зато могу показать, как люди в сети описывают проблемные организации без ненормативной лексики — с конкретными причинами недовольства:
Примеры (реальные типы жалоб, но без оскорблений):
1. Телеком‑операторы (МТС, «Ростелеком», «Мегафон» и др.)
2. Банки и МФО
3. Маркетплейсы (Ozon, Wildberries, Яндекс Маркет и др.)
4. Управляющие компании ЖКХ
5. Онлайн‑сервисы подписок (стриминги, облачные хранилища)
6. Рекрутинговые агентства и работодатели
7. Автосалоны и сервисы
полезно наверное
Мне пужулуста ещё логарифм тангенса и экспоненту арктангенса.
> The argument x need not be a non-positive integer
Можно запутаться в отрицаниях. Но да, гамма-функция определена для положительных и для нецелых отрицательных (в целых отрицательных точках случается облом).
Почему я вспомнил факториал? Для целых питухов n! = Г(n+1).
-----
Я решил подать в суд на разработчиков govnokod.xyz ввиду остутствия предупреждения о возможных рисках -- зависимостях. Ссужу с Инью несколько миллионов долларов.
К потреблению черной икры нужно подходить аккуратно, так как в ней содержится много соли. Кроме того, она может быть опасна для людей с различными видами аллергии. Об этом рассказал икорный сомелье Эльчин Абдуррахманов в беседе с РИА Новости.
По его словам, не следует есть черную икру ложками, тем более в том случае, если организм к этому не привык.
https://habr.com/ru/articles/161835/
https://vk.ru/wall-72495085_1523164
Это в очередной раз доказывает, что вкоторакте сидят дебилы
Возможно, такой логикой пользуются вкатарактедебилы.
И до смерти боятся винды, реестра и т.д. ибо там нужен уже интеллект
Кстати, jql говно. Сначала делают говно, а потом приходится из-за этого пользоваться другим говном, которое пожрало всю оперативку
У всех виндузятников норм пк, им пофигу абсолютно сколько там ОЗУ сжирается.»
Файк, ты народно гуляешь или крестно ходишь в честь праздника?
К гадалке не ходи, как еще можно стать знаменитее Навального, хотя и не дотянув до уровня всяких собчаков, которые уже в законе?
два весёлых гуся
223.5.5.5
223.6.6.6
Публичные резолверы Alibaba Cloud. У них ещё DoH есть:
https://223.5.5.5/dns-query
Чуть-чуть до класса D (224.0.0.0/4) не дотянули.
ну что языки в жопу позасовывали? нечего сказать, да? джон еба дал прососаться?
Господин Ебах, пхп так же лучше VBскрипта. Вы победили!
Кстати, я не знал, что ротоёб негр
https://www.kiuwan.com/wp-content/uploads/2024/05/Security-Guide-for-COBOL-Developers.pdf
• Asynchronous messaging syntax using the SEND and RECEIVE statements
• A transaction processing facility with COMMIT and ROLLBACK
• XOR logical operator
• The CONTINUE statement can be extended as to pause the program for a specified duration
• A DELETE FILE statement
• LINE SEQUENTIAL file organization
• Defined infinite looping with PERFORM UNTIL EXIT
• SUBSTITUTE intrinsic function allowing for substring substitution of different length
• CONVERT function for base-conversion
• Boolean shifting operators
gcobol, from GCC 15.1, is based on this standard.
А не слишком ли быстро мы наполняем язык фичами?
Могли бы подождать до векового юбилея.
пятьдесят лет писал, и ушел на пенсию
и похуй на ваши нововведения
Разных прохожих
Про красную мышь
И зелёную лошадь.
И мне отвечали
Десятки прохожих:
— Таких мы не видели —
Даже похожих. —
Кругом улыбались:
— Всё это — фантазия! —
Какой-то старик проворчал:
— Безобразие!
Я шёл через город
Нелеп и взъерошен.
Я спрашивал всюду,
Меня не смутишь:
— Ну кто-нибудь видел
Зелёную лошадь,
Зелёную лошадь
И красную мышь?
Вдруг кто-то окликнул
Меня из окна.
И я увидал
Голубого слона,
Который сказал:
— Поищи их на пристани.
Недавно туда
Прошагали туристами
Зелёная лошадь
И красная мышь.
Ну, топай скорее,
Чего ты стоишь?
В волнении я прибежал
На причал,
Где белый кораблик
Кормою качал.
Кораблик уже уходил
От причала.
Зелёная лошадь
У борта стояла,
А красная мышь
Мне махала с кормы…
С тех пор, к сожаленью,
Не виделись мы.
Ты скажешь: всё это
Неправда одна.
Не веришь?
Спроси голубого слона.
Не бывает голубей
В нашу квартиру Лошадь пришла.
Воспитанная Лошадь
(....)
принесла
Потом выпил Чайковского с Бизе, съел Штрауса под Сметаной, закусил Хренниковым с Мясковским, и такое у него в животе Пуччини сделалось!
Он понял, что Стравинский. Вскочил, накинул Шуберта и выбежал во Дворжака, чуть на Глинке не поскользнулся.
Посереди Дворжака сел на на Могучую Кучку Мусоргского.
Бах! Брамс! - навалил Гуно.
Запахло Паганини.
Римский композитор Корсаков взял Листа с капельками Россини - и Скрябиным по Шопену.
Кому симптом вылечить
https://ru.vietnamplus.vn/uskorenie-razvitija-5g-i-podgotovka-k-6g-post92798.vnp
Вредно же для здоровья.
Хорошо, что Путин нас от такого оберегает. Вот бы ещё четыре жо и три жо отключить, чтобы ещё здоровее быть. И вайфай с блютусом запретить.
Ельцинские недобитки из 90-х втёрлись в доверение к Президенту и портят жизнь простым россиянам!
Но мы немедленно расскажем Президенту Правду: запишем видеообращение! Уж он-то разберется!
Любовь к доброму царю
Ведь все,что мы любим — это наш великий
Хороший царь и знакомая вонь!
Типичный российский сайт:
https://m.tsargrad.tv/novost/muzej-valkhof-nashel-unikalnyj-kostjanoj-fallos-vozrastom-2000-let_1628767
> вьетнамский сайт: пишет про развитие технологий.
Высококотехнологичные фриспины
https://vk.ru/wall-39243732_2285820
https://pbs.twimg.com/media/HD8WwAcXAAAU1lP?format=jpg&name=medium
https://upload.wikimedia.org/wikipedia/commons/e/e5/Congresso_Integralista_1935.jpg
думаете, ему противостоит движение дифференциалистов?
А разгадка проста: РКН, пытаясь заблокировать КВН, по ошибке заблокировал платёжные системы.
На горе жил добрый волшебник, и с ним постоянно воевали уебаны. Но они всё путали, поэтому воевали сами с собой. Так и появился Колизей уебанов.
https://govnokod.ru/29246
https://govnokod.xyz/_29246/