- 1
IT Оффтоп #188
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
IT Оффтоп #188
#158: https://govnokod.ru/28366 https://govnokod.xyz/_28366
#159: https://govnokod.ru/28391 https://govnokod.xyz/_28391
#160: https://govnokod.ru/28434 https://govnokod.xyz/_28434
#161: (vanished) https://govnokod.xyz/_28449
#162: https://govnokod.ru/28477 https://govnokod.xyz/_28477
#163: https://govnokod.ru/28501 https://govnokod.xyz/_28501
#164: https://govnokod.ru/28527 https://govnokod.xyz/_28527
#165: https://govnokod.ru/28557 https://govnokod.xyz/_28557
#166: https://govnokod.ru/28574 https://govnokod.xyz/_28574
#167: https://govnokod.ru/28588 https://govnokod.xyz/_28588
#168: https://govnokod.ru/28607 https://govnokod.xyz/_28607
#169: https://govnokod.ru/28628 https://govnokod.xyz/_28628
#170: https://govnokod.ru/28653 https://govnokod.xyz/_28653
#171: (vanished) https://govnokod.xyz/_28665
#172: https://govnokod.ru/28675 https://govnokod.xyz/_28675
#173: https://govnokod.ru/28681 https://govnokod.xyz/_28681
#174: https://govnokod.ru/28689 https://govnokod.xyz/_28689
#175: https://govnokod.ru/28696 https://govnokod.xyz/_28696
#176: https://govnokod.ru/28703 https://govnokod.xyz/_28703
#177: https://govnokod.ru/28709 https://govnokod.xyz/_28709
#178: https://govnokod.ru/28716 https://govnokod.xyz/_28716
#179: https://govnokod.ru/28726 https://govnokod.xyz/_28726
#180: https://govnokod.ru/28734 https://govnokod.xyz/_28734
#181: https://govnokod.ru/28739 https://govnokod.xyz/_28739
#182: https://govnokod.ru/28749 https://govnokod.xyz/_28749
#183: https://govnokod.ru/28777 https://govnokod.xyz/_28777
#184: https://govnokod.ru/28790 https://govnokod.xyz/_28790
#185: https://govnokod.ru/28794 https://govnokod.xyz/_28794
#186: https://govnokod.ru/28815 https://govnokod.xyz/_28815
#187: https://govnokod.ru/28833 https://govnokod.xyz/_28833
Этот оффтоп сгенерирован автоматически.
Индекс оффтопов: 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.
Остерегайтесь подделок. Берегите себя и своих близких. Кок!
https://imgflip.com/i/7wdqkz
Здесь даже рыбе плыть запрещено.
https://schemas.microsoft.com/developer/msbuild/2003
но нет
А зачем тебе msbuild, кстати?
этот хмл у майков же считается скриптом
но они отчаялись уже больше 5 лет назад
The schema link in an MSBuild project file is not required in Visual Studio 2017 and later. If present, it should be http://schemas.microsoft.com/developer/msbuild/2003 regardless of the version of Visual Studio. This value is not a live web destination; the most current MSBuild schema definition file (.xsd file) can be found at Microsoft.Build.xsd.
CLion умеет по нему строить модель проекта. Кодинсайта правда никакого нет (до такой степени нет, что даже блядь таргеты мне не подсказываются с CMakeLists.txt) то инклуды резолвит.
Правда мне вот уже сразу пришлось писать императивную парашу с foraech
В одной билдсистеме (XCode, MSBuild) у тебя есть разные конфигурации, тогда как в другой (Make, Ninja) нету.
Иногда декларативщины тебе не хватает, и прихордица пирдолица с императивщиной, и тебя ждут os-spefic бубарехи, списки и итерация по ним, и пр.
Мелкие проектики легко описать хоть на Make, а сложные начинают адскую пирдоль
Напомнило, как некоторые библиотеки парсинга HTML/XML пытаются выкачать все DTD и обламываются, когда сайта не существует (или ссылки сменились). Приходится изучать, как в них отключается выкачивание DTD.
>>> [...] and investing into domestic energy production while promoting clean energy.
Я правильно понимаю, что бороться с инфляцией они решили путём вливания ебейшего количества бабла в дорогую и неэффективную зелёную энергию?
MGIMO finished. По-английски будет logged in?
https://reqrypt.org/reqrypt.html
Суть такова:
1. Отправляешь tcp-пакет на прокси-сервер.
2. Прокси-сервер отправляет на целевой сайт tcp-пакет, вписав обратным адресом не свой, а твой.
3. Сайт отправляет ответный пакет тебе напрямую, минуя прокси-сервер.
В чём выгода?
1. Удаётся пробить провайдерские блокировки, если провайдер фильтрует только исходящий канал, но не фильтрует входящий.
2. При этом скорость скачивания будет выше, чем в случае двухстороннего канала с прокси.
3. Твой айпишник не будет подменён (может быть достоинством и недостатком).
Подводные камни:
1. Большинство хостингов проверяет IP-пакеты и не позволяют в source запихнуть чужой адрес. Но оказалось, что хостинги без проверки всё-таки существуют.
2. Если клиент сидит за провайдерским NATом, он не сможет принять обратный пакет, ибо NAT не знает, кому из клиентов его доставлять.
пять лет не обновлялось
на сайте есть упоминание того, как на маке выключить ipv6, чтобы ебала заработала, но сборки под мак нет, типа компиляйте и пребудет с вами счастьечко
Like a sir, да.
типа не оставляйте телефон на зарядке на легковоспламеняющихся материалах вроде постели
g: conntrack, https://thermalcircle.de/doku.php?id=blog:linux:connection_tracki ng_3_state_and_examples
Датчик светит кучей ИК лучей под сильным углом и считает, сколько вернулось обратно из-за полного внутреннего отражения. Если на проверяемую поверхность попала капля воды, то там будет фазовый переход не стекло-воздух, а стекло-вода, в котором нужен куда больший угол падения для отражения, так что количество отражённых лучей уменьшится. Как только датчик фиксирует достаточное количество воды на лобовухе, включаются дворники.
Можешь попробовать обоссать верхнюю часть лобового стекла в движении, должно запустить дворники.
Ещё есть детекторы дождя, основанные на влажности воздуха, но им требуется несколько минут, чтобы понять, что пошёл дождь, и они не работают на болотах или иных сырых местах.
https://pbs.twimg.com/media/FU0-VhpWYAEUQNb?format=jpg&name=medium
Я был в Турции, и там куча кошек. Один мужик пришел с булем, и я испугался за кошек. Мужик говорит "he is friendly", но я всё равно волновался, пока он кошек обнюхивал
> кошек обнюхивал
Как-то не по Дарвину
https://agilewarrior.wordpress.com/2016/03/07/objective-c-nil-nil-null-nsnull/
nil / Nil / NULL / NSNull
У меня уже пригорело.
> Most notable behavior of nil, though, is that is can have messages sent to it. This would crash other programs in C++. Which greatly simplifies expressions, as it obviates the need to check for nil before doing anything.
И от этого говна в языке. Всё ли у нас хорошо, нет ли ошибки? А хуй его знает, главное, что программа не рухнула, а что у пользователя ни одна кнопка не работает — похую, сам закроет.
Есть ситуации, когда что-то нужно выполнить если есть валидный указатель/ссылка, а иначе не делать, но лучше это делать явно, как это сделано в шарпе, с его ?? и ?.
Напомню, что null появился в С++. В няшной жили-были только 0 и NULL. Причем кажется нулевой указатель не обязан быть нулём. В Нарнии построили комптютер, у которого ноль -- валдиный адрес.
ObjC это надмножество няшной, hence обратно совместимая.
>И от этого говна в языке.
Десктоп исправит если я пижжу, но кажется эту шляпу перенесли и в свифт. Короче, да: у нила можно вызвать метод в Objc, получить nil, вызвать у него мтеод и пр.
Я годами воевал с жабоебами, которые писали
А тут прямо в языке такое
>как это сделано в шарпе, с его ?? и ?.
Похоже сделано и в котлине, там тоже в самом языке исправили one billion dollar mistake
зы: но конечно всех уделали ДЖС бляди со своимс null vs undefined. Так жидко обосраца никто не смог
В каком месте 0 это "nothing"? Такое же число, как и любое другое.
Кстати, есть еще одно остроумное представление для "ничего", не требующее ссылок и ноля. В джаве его нету, а в расте, сишарп и в свежих С++ есть.
Со ссыклей и жаба умеет (опцион, да и просто нулабл) а я про юнион со значением
А джавскрипт бляди, в чем отличие string от String?
Сишарп бляди, в чем System.Boolean от bool?
(я знаю ответ, я вас просто собеседую)
(с) Коза с кудрявыми ножками
--Теренс, c чего это ты назвал меня свиноёбом???
--Ну давай подумаем... Во-первых ты ебешь свиней
--А, точно
В карате не понимал ни бе, ни ме
Можно написать ``petuh_vector{42}`` вместо ``petuh_vector(42)`` и получить необычное поведение программы
* Сорок два Питуха
* Питух Сорок Два
Forty two roosters
Forty two the Rootster
Погуглил книжки о Гарри Поттере и нашёл какую-то питушню: «А-ба-ба-га-ла-ма-га — украинское книжное издательство, специализирующееся на выпуске и переводе детской литературы на украинский, русский и английский языки.»
Муж и жена одна гэбня
я https://cs8.pikabu.ru/post_img/2017/06/22/0/1498082299184359101.jpg
The repository contains aliases/symlinks. Cloning on Windows requires using the option -c core.symlinks=true and running the command with Admin privileges.
You may also need to pull using this command,
and configure the repository with this command,
Угадайте, почему в «git» для «Windows» пришлось добавлять такую странную опцию.
(В «Windows» есть следующие типы ссылок на файлы:
• Hard Links — жёсткие ссылки, как в *nix. Доступны начиная с Windows NT4.
• Junction Points — аналог символических ссылок. Только на директории. На файлы таким способом ссылаться нельзя. Доступен начиная с Windows 2000 (NTFS 5).
• Symbolic Links — символьные ссылки. Доступны начиная с Windows Vista.
И создавать их можно только от имени админа. Поэтому долгое время порт «git» вообще не поддерживал ссылок.)
Представляешь, сколько миллионов строк кода стали бы не нужны, сколько миллионов багов бы никогда не появилось, сколько миллионов часов не тратили бы админы и программисты на поддержку этой пижни, насколько вообще мир был бы проще?
Т. е. они попробовали, но максимально через жопу, насколько это вообще было возможно. И даже сертификат совместимости с Юниксом за это говно получили.
и вроде еще initramfs
Жавайоб: `long i = System.currentTimeMillis()`;
Крестовичок
The TrivialClock requirements describe the requirements satisfied by several clocks in the chrono library.
For a type TC:
The type must meet Clock requirements.
The types TC::rep, TC::duration, and TC::time_point satisfy the requirements of EqualityComparable, LessThanComparable, DefaultConstructible, CopyConstructible, CopyAssignable, Destructible, and NumericType.
Class std::chrono::steady_clock represents a monotonic clock.
Class std::chrono::system_clock represents the system-wide real time wall clock.
Никола Бурбаки объясняет число "один"
В атомные часы время от времени вкидывают «високосную секунду», чтобы подогнать их под скорость вращения Земли. Поэтому в system_clock время иногда идёт рывками, и их нельзя использовать для вычисления временных промежутков между двумя событиями. В монотонных же часах (steady_clock) время идёт без рывков, но они периодически убегают вперёд относительно UTC.
От ЗАПАДА.
Как реализовывалось понятие владения сущностью в крестах до 11й версии, и как это правильно делать в сишке?
auto_ptr
> как это правильно делать в сишке
Держать в уме программиста.
засохший
На самом деле ты почти угодал про кмос
Но O(1) = O(2).
Я бы ещё спросил у него чем они отличаются.
)
======================================== =====================-)
).
Двуцветный питоху — одна из немногих ядовитых птиц. На коже и перьях у неё присутствует яд батрахотоксин — мощный нейротоксин.
...
Причина ядовитости птицы заключается в её питании. Двуцветные питоху едят жуков Choresine pulchra, в организме которых содержится батрахотоксин. У самой птицы выработался иммунитет к этому яду, чего нельзя сказать про местных жителей, которые считают эту птицу совсем негодной.
Живёт по 500 лет, беременность 18 (лет)
азазазаза
Что только люди не жрут: маниоку, сюрстрёмминг, копальхен, рыбу фугу, тюленя, фаршированного чайками.
Это же рыба
У некоторых даже кодона на срок годности нет
И кстати я не беременный, если что
«Половая зрелость у гренландских полярных акул наступает в возрасте примерно 150 лет.»
Чем отличается to_vect от into_vec?
void into_vec(vec&);
Речь тут однако о расте.
to_vect Copies self into a new Vec, тогда как into
Converts self into a vector without clones or allocation.
Так что to это копия, а into это мув.
Вот конвеншены
https://rust-lang.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv
Если бы такое было в крестах, то все бы ржали. А над растом нельзя ржать
правда же это очевидно?
"""Мы хотим рассказать о ровесни_цах независимой Украины — среди них есть и спортсмен_ки, и рэп исполнитель_ницы, и хирурги."""
Как пофиксить последнее слово?
Можно толкьо позавидовать находчивости этой девушки. В любой непонятной ситуации
По ее словам, в итоге подруга посетила все сеансы этого врача, потому что «он вылечил то, что другие не смогли поправить».
– неправильный прикус, я надеюсь?
“The lawsuit alleges that, from at least September 2018 to May 2022, SpaceX routinely discouraged asylees and refugees from applying and refused to hire or consider them, because of their citizenship status, in violation of the Immigration and Nationality Act,” the Justice Department said in a statement.
https://pvs-studio.ru/ru/blog/posts/cpp/1064/
Это не си
Напомнило старые добрые времена, когда на ГК спрашивали, где здесь C++, и обязательно что-нибудь находили, хотя бы const.
В масме был мощнейший макропроцессор, и можно было совершенно бесплатно избавляться от копипасты через всякие макросы с циклами и пр.
ЯВУшные анскилябры в своих Java и Python тоже могут писать циклы, но уже в рантайме, потому что на перформанс всем похуй.
Крестовичок же тут в сложной ситуации. Делать что-либо в рантайме ради удобства программирования это зашквар. Наоборот, мелкий цикл лучше анрольнуть. Макроебить неудобно и тоже зашквар. Остается писать шаблон и надеяться на его инлайн.
Или нет?
В случае ObjC или TypeScript это не так: любой говнокод С или на JS будет валидным кодом на ObjcC и TS соответтвенно.
Другой такой пример это Java и Groovy: любой код на Java это валидный код на груви кажыца
маск н берет на работ камерунских программистов
Согласно условиям лицензионного соглашения, граждане России теперь не имеют права пользоваться архивами, созданными с помощью WinRAR (распаковывать их, просматривать, хранить), а также файлами, распакованными этой программой. Проигнорировать запрет не удастся – следить за соблюдением санкций будет IT-департамент Минфина США.
В пресс-службе компании подтвердили, что приостанавливают лицензии в РФ. Поскольку в программе не предусмотрено механизма отзыва ключа, российских пользователей просят самостоятельно избавиться от архиватора и всех файлов, созданных с его помощью.
«Это решение далось тяжело, но другого выхода нет, – сообщил пресс-секретарь организации Евгений Рошал. – В том числе будут отозваны все лицензии, проданные за 2023 и 2022 годы».
На уточняющий вопрос журналиста «Вообще все?», представитель win.rar GmbH ответил утвердительно: «Да, обе».
«Это решение далось тяжело, но другого выхода нет, – сообщил пресс-секретарь организации Евгений Рошал. – В том числе будут отозваны все лицензии, проданные за с 1999 по 2022 год».
На уточняющий вопрос журналиста «Вообще все?», представитель win.rar GmbH ответил утвердительно: «Да, обе».
Удивительно, но я до сих пор им пользуюсь
https://www.rarlab.com/rar/unrarsrc-6.2.10.tar.gz
Собирается с помощью makefile и gcc (включая mingw и кросс-компиляторы), LCC, Visual Age на выбор, а также MSBuild/Visual Studio.
Лицензия разрешает использовать этот код для распаковки, но не разрешает реверсить упаковку.
А вот про брата:
https://www.unrarlib.org/faq.html
Зато с интересной лицензией.
То есть хотите — соблюдайте GPL, не хотите — не соблюдайте.
Автор — некто Christian Scheurer ([email protected]).
Есть клиент, который в режиме pull опрашивает измененные строк таблицы. Псевдокод:
И есть другой клиент, который пушит данные в базу, вручную заполняя поле updated текущим временем.
Как вы догадались, может произойти такая «гонка», что кто-то пушнёт updated на миллисекунду меньше максимального, и изменение пропустится.
Можно было бы решить глобальным счётчиком, но хуяза не поддерживает автоинкремент: это считай k-v хранилище с индексами. Что можно сделать? Пока прикрыл костылём, что запрашиваю за секунду назад.
– шта
а что, это критично в твоём кейсе?
Я пишу танзакционную блохчейн систему. Проебать одно звено действительно не критично.
почему нельзя слать изменения через очередь?
Его выгонят из библиотеки.
Когда проснётся прочитает всё, что пропустил.
> почему нельзя слать изменения через очередь?
Не понял. Опиши архитектуру. Кстати, читателей и пейсателей несколько. Ну и может появиться новый читатель, который должен вычитать всё, а дальше ждать следующих изменений.
Одобряю, так их, копченых!
У тебя же скаляр можно возвращать из базы той же фуксией max()
А если волнуешься о хуйне, то записывай отсчеты с датчиков в строки только для чтения, а поверх них сделай вьюшку с последними
1. Как сказал Desktop — можно воспользоваться блокировками: на уровне базы или вообще какого-нибудь внешнего сервиса, если пирфоманс не критичен (например, микросервис, к которому можно ходить в POST /lock/<uuid>/acquire за локом).
2. Можно всё таки не заполнять поле updated вручную, а попросить базу — наверняка же там хоть «now()» есть?
3. Вместо микросервиса локов из п.1 можно сделать микросервис «текущего времени» и ходить в него за таймштампом. Так же можно и автоинкремент сделать, лол.
4. Можно посмотреть, что у тебя в базе есть из изоляции транзакций и намутить на этом псевдо-автоинкремент (типа таблицы с одной колонкой и одной строкой, на пересечении которых находится счётчик).
5. Можно изменить подход и фильтровать не по «updated_since», а просто сделать булеву колонку «is_processed» и ставить её в True после процессинга, а пуллить те строки, у которых она False.
Локи не подходят, нужен "пефомас". Таблица из одной колонки и одной строки для изоляции транзакции — тоже не пефомасно, считай то же самое, что лок.
Данные должны записываться в базу не лоча ничего.
Вариант с now() интересный. А ты уверен, что это решает проблему? Откуда появится гарантия, что запрос с меньшим now() выполнится первее?
фу терпила
Какой Krebsgang )))
Какой парадокс )))
Нормальные базы, написанные умными людьми для умных людей, позволяют очень гибко выстраивать стратегии блокировок, см. https://www.postgresql.org/docs/current/explicit-locking.html.
В СУБД для обезьян такого, понятное дело, не будет, конечно.
Возьми «Кафку», «Артемис», «Redpanda» или любую другую из миллиона шин (inb4: «kafka» — распределённый лог, а не шина) — и все твои ебучие проблемы с таймштампами и шортполлингом (шортполлингом, блядь! 2023-й год!) базы уйдут туда, куда им и место — в канализацию к пыхокодерам.
А когда перформанс тесты докажут, что это решение слишком плохо масштабируется, то думать про кафку.
> у пыхеров есть такая профдеформация, что они бквально любую задачу решают на СУБД
Тут скорее хипстеры с новыми модными технологиями. Даже самый убогий мускуль умеет делать «now()»; да даже в ебучем «redis» есть «INCR». Чтобы ни дат, ни автоинкрементов не было — это нужна какая-то прямо пиздец какая хипстерская технология.
В моей хуязе знаешь почему нету автоинкремента? Пологаю потому, что это high-перформанская скилловая питушня.
Представь у тебя есть 100 шаров, и ты можешь параллельно записывать много много данных, распределяя нагрузку на шарды. А чтобы реализовать автоинкремент, то нужно как-то реалтайм их синхронизировать, опять же под каким-то локом.
А у тебя такая ситуация?
А сколько у тебя писателей, и как ты синхронизируешь часы?
> как ты синхронизируешь часы?
Вызываю time(). Рассчитываю, что на серверах время правильное. Если ВДРУГ какая-то хуйня произойдёт, то не страшно, перезагружу читателей и они заново всё скачают.
Верно ли я понял, что у тебя 1000 таких клиентов, и время у них одинаковое с точностью до
>миллисекунду
?
Все клиенты уже считали T, а тут один тормоз записал новые данные, а время у него T-1?
Это чуть снизит лаг. Но на серверах базы тоже время может слететь, теоретически.
Часы при загрузке читются из CMOS, а дальше их обновляет ОС с помощью таймера*, и на виртуалках оно может оставать, да и на некотрых обычных серверах в минуты сильной загрузки -- тоже.
Потому виртуалка синхронизирует свое время с хостом или с NTP сервером переодически, а обычный хост тоже читает время с NTP.
Это значит, что время может прыгать туда-сюда. Вперёд оно вряд-ли убежит, а отстать может.
Считать, что на двух машинах время всегда одинаковое с точностью до милисекунды -- нельзя.
*
читат со траницы 228
зы: мы как раз неедавно обсуждали два сорта часов из пакета хроно в крестах
https://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time
Пикабу!
> шорт-поллинг всеми читателями
Спасибо, заорал.
нахер никому твой борланд не усрался
Он амбракадабра называется или както тмк
Я взгляды Борманда тоже считаю чудовщиными. Вместе с тем, Боманд один из умнейших обитателей ГК, обладающий глубокой экспертизой буквально во всех интересующих меня областях.
Увы.
Ради одной мелкой проблемы я буду слезать на другую хуязу и переписывать до пизды простое решение. И ещё неделю с ней ебаться, отхватив десяток других недостатков.
тоесть они евенчуали консистент? Клиент может опаздаь на пару часиков, и всё будет заебись?
У вас тут суббота, а у меня еще среда
Ещё в PSP была ненужная хуйня, типа FCB для двух файлов, хотя с третьего или со второго DOS (точно не помню) FCB уже никто не использовал, а пользовались дескрипторами, которых можно было открыть аж 256 (минус стандартные потоки).
А еще там TP-string с командной строкой
2. Гладиш ей... ой
3. Представляешь её в виде одной сущности, собираемой из апдейтов. Сначала у тебя пустая таблица, первая запись у тебя говорит, какие строки добавить, последующие уже добавляют, изменяют или удаляют строки:
Транзакция 1: Добавить А, Б, В
Транзакция 2: Добавить Г, удалить Б, заменить В на Д
Транзакция 3: Вернуть Б
Сами транзакции записываются в mysql (или что у тебя в твоем блокчейне) как обычные записи, где номер транзакции - часть ключа (что не позволяет дважды добавить транзакцию с одним и тем же номером)
4. У каждого изменения есть порядковый номер, который предоставляет тебе регистр для CAS-операций. Каждый слушатель знает, какую последнюю транзакцию он видел, поэтому пушить он пытается с N + 1. Если такая транзакция уже была записана, то он получает отлуп. Если он получил отлуп, то читает изменения и пытается повторить операцию, если за это время не появилось конфликтов. Аналогично слушатели всегда знают с какого места им надо читать и могут попросить сервер читать с транзакции N при каждой итерации, начиная со стартовой.
5. Для восстановления состояния таблицы ты просто прокатываешь транзакции с первой по последнюю
6. Чтобы этого не делать, каждые пятьдесят транзакций ты делаешь слепок таблицы, а для восстановления накатываешь только то, что идет после слепка
7. Чтобы экономить пространство, настраиваешь ретеншен, который будет собирать старые снапшоты и транзакции
8. Вы получили вымесь кафки и event sourcing. Пока никто не увидел этот abomination и не прикончил его из джвухстволки, уберите его в шкаф.
9. Данная схема замыкается на оптимистичную блокировку одного регистра. Для 10к человек это скорее всего будет норм. Если перформанс будет не норм, то тогда можно смотреть Snapshot Isolation и пытаться бороться с конкурентностью на уровне множеств записей, а не всей таблицы целиком.
в виде гномика
Сущность ввиде гномика
Это какой-то особый вид я... ой?
в общем случае это уже проеб потому что часы у клиента могут отстать и он начнет записывать не на миллисекунду а на секунду или две или десять раньше
> измененные строки таблицы
Мне кажется для задачи "прочитать апдейты моей хуйни" это неудачная модель. Удачная модель - это лог апдейтов твоих сущностей
можешь написать джобу которая каждые N миллисекунд будет читать бинлог твоей базы данных и записывает апдейты в какой-то кликхаус с увеличивающимся ид. Если писать каждую секунду батчами, то никаких проблем с инкрементируюющимся ид не будет и в кликхаус влезет довольно много.
Проблема будет когда джоба наебнется или задержится или бинлог проебется. Но это решаемо
Более примитивный способ - это просто сохранять бинлоги и отдавать их клиентам и пусть они сами ебутся
Вообще бд на низком уровне делает все что гостю нужно (поддерживает лог изменений, версионирует строки, сохраняет снапшоты строк для консистентных транзакций)
Может можно придумать какое-то хитрое решение которое будет просто работать на той же бд без приседаний
Тебе нужен фронтэнд, который будет реализовывать автоинкремент.
Если же ты весь из себя распделененный, то тебе нужен кмк связанный список как в блокчейне или гите.
Сам факт выбора СУБД тоже странный, о чем и гост и буткемп ниже написали.
Правильно, никак: https://github.com/rust-lang/rust/issues/53827
Охуенный язык, например
Или если тебе не нужны нули в массиве, а ты его будешь сам заполнять
А, не прочёл внимательно.
Тогда второй вариант + заполнение в цикле только разве что.
>цикле
а можно мемсетом?? или fill_n хотя бы
В рустне я не могу ничего создать сразу на куче. Я могу создать на стеке, и в кучу скопироваь. Гиг в стек не влазит, и я сосу stack overfow.
Я могу поклать в стат память (лол!) или могу взять Vector. Но это же хак, блин
Можно. Там у тебя будет просто неинициализированный массив, как после голого new. (В первом варианте будет массив нулей)
>>cleanup(myfree)
ого, да у вас там десктрукторы завезли! Поздравляю!
Кстати, некоторые гэцэцизмы Шланг подхватил, но я не помню, какие.
?
а еще мув нужен
Нихуя перегружать в сишке нельзя. Можно сделать макрос ASSIGN в котором _Generic внутри, который для разных типов делает разную хуйню для присваивания.
> Или передачу в функцию по значению
Думаю что это можно намакроебить. Что-то типа
но это хуйня какая-то
> а еще мув нужен
Зачем нужен "мув" если можно передавать по указателю? Но что-то намакроебить конечно можно
Так ведь и автоматически вызывать код при выходе петуха из зоны видимости в сишке тоже нельзя. Это гццизм.
>Думаю что это можно намакроебить.
Намкароёбить можно всё, что угодно.
>Зачем нужен "мув" если можно передавать по указателю?
Без "десктрукторов"/"дропов" в мув семантике действительно нету никаокго смысла. Она ничем не лучше передачи по указателю. Просто напиши комментарий "вот тут я передал оунершип в другую функцию, потому вызывать fclose или free в этом скоупе не нужно", вот и будет сишкин мув
Можешь написать особый препроцессор для сишки, который бы проверял зоны видимости для каких-то там переменных, рядом с которыми оставлен специальный комментарий вида "/*destructor(myfree)*/", и чтобы вызывал ту функцию при выходе.
Вообще, доебаться можно и до крестов. Например, почему в крестах я не могу новые операторы делать и определять для них всякие хуйни? Вот например если я хочу чтобы у меня был оператор "^^" который означает "возвести в степень" для какого-то моего класса чисел, почему кресты это не поддерживают?
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=04f2933d375e3f90d4435b7b518d3065afd1fa25
Пишите дальше на своих джаваскриптах сраных
в рантайме. Знаю я питухон
n-notice me IoT-chan.........
https://github.com/engine262/engine262
Pypy все видели, на PHPPHP я тоже ссылку кидал.
Какие ещё извращения вы знаете?
https://github.com/engine262/engine262/blob/4aa42b6dee32eec63062a0480c7375220d835f7d/src/evaluator.mts#L86
https://gcc.gnu.org
https://shnatsel.medium.com/how-to-avoid-bounds-checks-in-rust-without-unsafe-f65e618b4c1e
такие смешные питушки
1: Легко позволять писать перформансный код
2. Быть очень выразительными, позволяя делать много вещей малым количеством букв
3. Быть простыми в освоении
Выберите любые два пункта.
Няшная выполняет 1 и 3, но не 2.
Питон это 2 и 3, но не 1.
Кресты это 1 и 2, но не 3.
Не существует языка, выполняющего все три пункта.
Большинство людей ругает язык за невыполнение одного из трех пунктов.
ты же неявно отсёк все языки с gc/countref, я тебя знаю
в итоге под пункт 1 у тебя небось попадает только сишка, кресты, руст и фортран
https://www.graphicon.ru/oldgr/grafor/gr_help/main.htm
CALL PAGE(X, Y, 'BATNIK', 6, 1)
R = AMINb
P.S. Хотя DO уже есть. В Фортранах I-IV и того не было, там была только лапша с GOTO.
работать сутки через трое через трое через трое
Когда мне нужно отдавать файлы, я ставлю nginx, и теку. Он сам делает докачку, ренджи, хуенджи, кеш, и даже умеет по требованию клиента выбрать уже сжатый файл.
banner(6) – 4.2BSD Games Manual
.TH BANNER 6 "1 February 1983"
Допустим я купил стойку с серверами, арендовал помещение, обеспечил электричество. Что ещё нужно (а) купить и (б) настроить, чтобы в итоге заработал
(ещё, видимо, надо как-то IP купить)
В датацентре скорее всего будут представлены несколько провайдеров, из которых ты сможешь выбрать. Они продадут тебе сеть из нескольких IP и оговорят ширину канала и дадут кабель.
В случае гаража тебе придется самому искать провайдера, и уговаривать его тянуть к тебе кабель: оптику или медь.
Когда кабель у тебя, тебе нужно подключиться. Может понадобиться медиаконвертер, но обычно его предоствляет провайдер в аренду.
Если сервер один и IP один, то можно воткнуться прямо в сервер. Если несколько, то лучше поставить роутер (например, микрот) перед ними, либо сделать софтварный роутер на одном из компов.
У серверов обычно есть порт IPMI, где прошивка предоствляет доступ к консоли. Иногда это выделенный порт, иногда порт на специальном VLAN. Через него можно зайти на консоль, и поставить ОС. Но сотрудники ДЦ часто и сами ставят ОС. Я бы советоал на сервер поставить гипервизор, и поднять на нем виртуалку. Ну а на виртуалке ты можешь ты можешь насроить nginx со статической страничкой с текстом pong, тут уже дело за тобой.
Ща схожу за чаем, и расскажу про знакомого админа и его сервера в ДЦ Миран, он мне про них рассказывал подрбно
Миран сдал ему в аренду несколько серверов с какими-то свежими ксеонами и рейдами. Точнее, на двух серверах рейды хардварные, а на остальном какое-то интелговно. Ну и диски. Сервера собрали сотрудники ДЦ.
У всех серверов выделенный IPMI порт воткнут в оборудование ДЦ, и через их веб-морду можно зайти, запустить ужасного вида джавовое говно на java web start, и оно пердя и тормозя даст доступ к консоли сервера.
Выглядит это так
https://nixtux.ru/wp-content/uploads/2021/08/2021-08-25_13-47.png
Провайдер протянул туда кабель с SFP (видимо оптику, но это не точно). По одному VLAN передает Интернет, а по другому у него канал с офисом (в офисе тот же провайдер, ну и там MPLS видимо или хз). Это стоит денег.
Кабель воткнут в микрот, который ему пришлось купить, и поставить. В микрот же воткнуты витухи от серверов, которые пришлось арендовать у ДЦ.
Ну а дальше настраивая vlan на гипервизоре и микроте можно выдавать IP каждой виртуальной машине, и настраивать между ними маршрутизацию. И не забыдь настроить мониторинг рейдов.
Так что купить нужно
1. Интернет от провайдера
2. Вероятно, хардварный роутер если IP и серверов много, но можно обойтись и софтварным: можно купить софтварный микрот (он ставится на виртуалку), можно бесплатно сделать роутер на виртуалке на прыщах или BSD, есть говно с вебмордой: pfSense, итд.
3. VMWare ESXI, если ты ее хочешь. Но можно поставить прыщи бесплатно, или hyper-v core тоже бесплатно.
А допустим у меня 30 серверов и 1 белый ipv4 адрес, то кто будет заниматься распределением трафика на сервера? Роутер? Он выдержит такое трафло?
Считаем, что канал выдерживает.
Далее, как сделать, чтобы сервер X имел один и тот же внутренний IP-адрес, даже если его перевоткнуть или роутер перезагрузить? Или это мне не нужно?
Да.
> Он выдержит такое трафло?
Смотря что за роутер. У нормальных вендоров есть результаты тестов:
https://mikrotik.com/product/l009uigs_rm#fndtn-testresults
Но на 30 серверов тебе, вероятно, нужен серьезный девайс, мб что нить из серии 4000й серии циско.
>как сделать, чтобы сервер X имел один и тот же внутренний IP-адрес
На сервере ты устанавливаешь внутренний IP адрес из RFC1918, например 172.16.1.2
На роутере ты делаешь Full cone NAT на этот адрес, перебрасывая весь трффик с определенного публичного IP на этот внутренний. Таким образом, сервер даже не знает, что у него публичный IP.
Можно объеденить все порты роутера в один мост (сделать их L2 портами в терминологии киски) и все твои сервера окажутся в одной сетке.
Но затем лучше разделить их на VLANы. Как минимум, гипервизоры нужно вынести в отдельный VLAN, и систему бекапа тоже.
Зато XSS не пройдёт!
Не совершай ошибку
И твоя мечта осуществится
Нажми на кнопку, но что же ты не рад
Тебе больше не к чему стремиться
Говно ты, а не перловик
ты про такое?
Неужели так не работает??
Разве что Swift вряд ли буду использовать, да и то не из-за самого языка, а из-за скудности реализации.
У меня пол конторы макоёбов. Впринципе, почти все прыщебляди мигрировали на мак с убунты в какой-то момент.
На самом деле разработка под ГейОС полезна для расширения кругозора.
* ObjC сам по себе экзотичекий язык. За свифт не знаю.
* Идея диспатчинга сообщий (в компилируемом, статически ипизированном языке!) необычна
* ARC тоже интересный. И нет, это не совсем как шарик в крестах и Rc в расте, но очень похоже.
* Сторибилдеры и сигвеи это интересный способ построения гуя.
* Auto Layout вообще довольно пиздатый. Был семь лет назад. Сейчас не знаю.
В общем это не вордпресс
И вообще из того, что ты перечислил, только автолейаут может вызвать какой-то интерес.
Сообщение прямо как привет из 2012
ты говоришь вот с этим человеком: https://govnokod.ru/28837#comment1170110
сказал десктоп, который принёс на ГК euphoria
?????
эйфория при всех своих потенциальных плюсах умершее окаменевшее ненужно
у эппла ты же можешь взять свежий швифт и получить акторов и декларативный ui, а в пререлизном и вовсе макросы и пародию на боров чекер
зачем вообще вспоминать про абоминацию под названием obj c, которая сегодня нужна только полутора землекопам, у которых edge case торчит из ширинки?
Кто сказал? Почему пых нужно а эйфория не нужно?
последняя стабильная версия опенэйфории вышла всего лишь два с половиной года назад, так что по меркам языка тридцатилетнего возраста даже не завонялось
в таком случае я меняю аргумент на обж си древнее говно, а вот эйфория стильно-модно-молодёжно
Ещё эта невнятная экранировка командной строки, которая может работать по-разному в разных режимах, так что можно обломаться с обработкой файла O'Henry.txt...
Впрочем, и в bash можно получить улюлей, выполнив команду rm -rf /$petuh, если petuh окажется пустой строкой.
батяня
За нами Аман, Шабак и Моссад.
Как теперь всё восстановить?
chmod -x $(which chmod)
чего не rsync?
ты не умеш в rsync и unison?
Кстати, в нормальных ОС типа Солярис есть возможность проверить хеши всех бинарей и восстановить их, почти как sfc /scannow.
А в прыщедистрах неу
https://www.youtube.com/watch?v=I8Pnp7x8MaI
which -a cp | xargs chmod -x
Вдруг у него несколько копий cp в разных директориях, а ты удалишь только первую?
https://unix.stackexchange.com/questions/83862/how-to-chmod-without-usr-bin-chmod
Вроде ни один совет не должен работать
а, я забыл
это же прыщи, а не солярк
у вас так нельзя
https://www.youtube.com/watch?v=NtSt4lKeLsQ
Останется только придумать, как высрать исполнимый файл текущим шеллом, не прибегая ни к каким внешним командам.
а можно даже еще проще: зайти в меню бутлодера, подшаманить там опции маунта рута и/или передать bash как init, и в ту сторону копать
файловая система называется ЖЫР
«Хуиттер» мумулирует псевдокласс CSS :hover, вешая обработчик на блок и меняя в реальном времени инлайн-стиль жопоскриптом.
А вы думали, почему он тормозит.
пришлось экспортировать на ноуте данные и потом делать импорт в новую чистую базу
https://govnokod.ru/28840
https://govnokod.xyz/_28840/