- 1
IT Оффтоп #146
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
IT Оффтоп #146
#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
#145: https://govnokod.ru/27996 https://govnokod.xyz/_27996
Этот оффтоп сгенерирован автоматически.
Индекс оффтопов: 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.youtube.com/watch?v=ESx_hy1n7HA
Еще я в первый раз услышал Lay down your bss вместо Lay down your pieces и немного прихуел, но потом оказалось что это всё равно банальная пошлятина.
https://www.youtube.com/watch?v=oZoWSOHHKu8
https://youtu.be/WIlopKnCTp4
Самый пиздец и вовсе только в проклятой свалке мп3
https://vk.com/audio?q=world.execute(me)%20araneat
https://pbs.twimg.com/media/FHjPrlxXwAsTllh.jpg
https://pbs.twimg.com/media/FKgRbnYWUAU_vPx.jpg
Ну почему их до сих пор учат писать using namespace std?
Я вижу «setlocale(LC_ALL, "Russian");», а дальше боюсь разбирать.
З.Ы. Вспомнилась анимешная картинка с WPARAM и LPARAM, которые сразу привлекают внимание, хоть там всё и замылено.
И дальше куча add(tree ...
Стыдно. Очень-очень стыдно.
И не париться с «а не забыл ли я удалить», «а что, если эксепшын вылезет»...
Или просто говнокодеры.
Это же всё небось в main, и живет объект до конца main
>стек пидорасит
В студлабе на на x64?:)
даю зую зуб на отсечение, что последнее.
Макак сказал "объекты создаются словом new", его и используют.
Потому что студентов до сих пор за каким-то хреном учат писать на «C++».
Ну а с учётом того, что 95% преподавателей (в провинциальных вузах — 98.5%) этот самый «C++» сами знают на уровне прочитавших гайд «C++ за 21 час» и не смогут даже явное определение шаблона от декларации внешней специализации отличить, всё, чему они могут научить студентов — это копипастить код из дерьмовых методичек начала двухтысячных годов.
Давеча видел, как студентов НЕ программерской специальности учили зачем-то плюсам. Причем это был микс из плюсов и сишки. Студенты сразу же запутались напрочь, и не понимали чем ссылка отличается от указателя, а cout << от printf.
И конечно же там был ``delete[] foo``. И конечно же там был using std;
При успешной установке программа установки пакета SDK для .NET отправляет единую запись телеметрии. Чтобы отказаться от этого, задайте переменную среды DOTNET_CLI_TELEMETRY_OPTOUT перед установкой пакета SDK для .NET.
Важно!
Чтобы отказаться от отправки данных телеметрии после запуска установщика, закройте установщик, задайте переменную среды, а затем снова запустите установщик с заданной переменной среды.
А у них места хватит? Я, если у меня диск с TLMC навернётся к ним обращусь же, чтобы предоставили обратно мой терабайт тохомузла.
А, там еще в чекистском высере был неявный запрет юзать прогу детям до 13 без сопровождения. В общем, второе место на конкурсе уебанов после Гоогле, которые объявили в своем EULA, что весь конь-тент, созданный в ихней сборке Chromium принадлежит им.
Это же гейропецы вроде? В гейропе можно сделать запрос на высылку всех хранящихся данных о пользователе. А если не будет нужных данных — подать в суд щза то, что не выполняют обещания.
Хотя от vendor lock спасает, наверное. Чтобы в другое место можно было уйти не выковыривая свои данные вручную/скриптами.
Сначала ебланы заставили все сайты засирать половину экрана тупым вопросом про куку, и теперь тратят мое (пользователя) время на это говно.
Теперь ебланы упростили взлом хакеру.
Евродепутатов нужно утопить в ванне с соляной кислотой, и тогда Интернет станет гораздо более удобным и безопасным
Без такого закона обычному юзеру очень проблематично куда-то перекатиться, считай что кусок жизни выбросить.
Ну там есть вполне реальная отправка крешдампов в менюхе. А её без такого пункта в лицензии нельзя делать, насколько я понимаю.
Имхо, даже в минидамп может что-то критичное для юзера проскочить. Его имя или имя файла например.
Про полный вообще молчу.
CHUNGUS 2 - A very powerful 1Hz Minecraft CPU
кстати этим объясняется почему там змейка_блядство
[Love is in the air] Ищу парня-программиста, Мск
Очень странный заголовок, знаю. Прежде чем угорать и осуждать разложу все по полочкам . Модератор, не будь бессердечным, пожалей.
Уже проводя пол года на тиндере я составила анализ мужчин:
5% женатики
5% не могут забыть бывшую
5% не ищут серьёзные отношения
....мне лень перечислять всех остальных
Список можно продолжить, но не об этом сейчас речь, в общем, в тот самый 5% подходящих мне людей, увы, не подходят творческие люди, тусовщики. Мне нравится интровертность и склад ума как раз таких людей как вы, милые господа.
Расскажу о себе. Зовут Алиса, 20 лет сама родилась и живу в Москве. Получаю высшее, 3 курс, химик-технолог. Сама зарабатываю, проблем в плане ментального и психических не имею. Как уже заметили, со своим чувством юмора. Ну и, конечно же, люблю красоту и все, что с этим связано. Свободное время занимаюсь спортом, гуляю с подругами, как и многие 20-летние девушки. Короче, если тебе интересно стало- то меня найдёшь :)
Какой анализ )))
5% женаты ради счастья, дело кремлевского блока
5% просто не захотят без подруги
Так вот остальные предпочли просто устроиться сами, не искать ничего другого.
Заранее спасибо.
5% не ищут новую девушку
5% не хотят насилия, но легко себя изменяют
5% постоянно изменяются.
Уже без материального насилия, а насилия будет как только будет желание пришли в своем пространстве, с ней будет какая то толпа. Конечно, из этого толпы выйдут обе легкие и опора. Так что по факту у меня полная нация тиндера, т.е. женаты и не ищут больше.
> Учится
Делает минет профессору за зачёт
> Работает
Вебкам.
Алиса Бышкова, работает в ООО «АКВА-ТЕРМО».
https://vk.com/id134093639
https://www.instagram.com/alisa_b_/
Она?
«Здравствуйте, будьте добры удалить мои данные, мне не очень приятно, кому надо-тот найдет . Не надо давать подсказок, иначе я везде переименую ссылки и меня вообще невозможно будет найти кто хочет . Не усложняйте мне жизнь. Буду благодарна»
> Не усложняйте мне жизнь
Меня просто корёжит от отсутствия логики
Сменю работу. Перееду в другой город. Сменю фамилию.
Как-то так уже надо, походу.
https://i.pinimg.com/originals/07/27/9e/07279eb9fb3e1515a6823b708821e00d.jpg
У тебя там нейронка для определения пола по комментариям?
«Ооо! Приложение для знакомств "Тендер"! Для настоящих ценителей 44 и 223 ФЗ. Все критерии должны быть сформулированы, чтобы ФАС не докопался.
"Ищу друга. Мужской пол - наличие. Высшее образование - наличие."
При этом нельзя написать, что внешность Вина Дизеля, только "внешность Вина Дизеля или аналогичная". Еще и надо разъяснения по пунктам давать. "Внешность Вина Дизеля или аналогичная требуется для снижения уровня отвращения при личном общении до отметки 5% и/или ниже".»
Образование — не менее «Высшее».
И обсуждают проблемы любые.
Двадцать процентов из них - голубые.
Сорок процентов - любители водки.
Тридцать процентов из них - импотенты,
У десяти - с головой не в порядке.
В сумме нам это дает сто процентов,
не заметили, кстати
Программист-интроверт нужен чтобы и деньги зарабатывал и где тян по ночам гуляет с подругами не спрашивал?
--Миллый, я спаать ложусь
--Ага, сейчас (жмет "step into" в дебагере)
медленно начинается очередное утро
господи блядь ну откуда
откуда у людей такая нелюбовь к early return и (в других местах) обожание огромного количества if else вместо того, чтобы просто отрезать ненужные варианты в начале кода
должна быть?
* Фонарик на солнечных батарейках
* класс Optional в языке программирования Java
На самом деле они нихуя не победили.
Проблема дереференса нуллпоинтера в том, что написанный код предполагал, что значение есть.
А его там нет.
Заворачивание этого говна в блевню Some и None не решает проблему вообще никак.
Потому что если код уверен, что значение есть, он ровно так же попробует его распаковать.
Либр будет продолжать вызывать map на пустом месте, чтобы бедняга-программист, у которого в конце обработки почему-то ничего нет, разматывал всё это говно обратно - после того, как проблему заметили где-то на проде. Вместо того, чтобы получить по рылу NPE и увидеть конкретный стектрейс, где это происходит.
Кстати, планируется ввести оператор "проверить на нулл" и в остальных контекстах.
> Потому что если код уверен, что значение есть, он ровно так же попробует его распаковать.
И не сможет, потому что для получения значения из Maybe, его нужно распаковать из враппера путём паттерн-матчинга, который в данном случае эквивалентен проверке на "null". Т.е. код с Maybe не содержит null pointer dereference, что называется, by construction.
Да что ж такое-то. Опять питоняки нанякивают на haskell, не зная его.
даже в TS!
Фике просто джавист
> Вместо того, чтобы получить по рылу NPE и увидеть конкретный стектрейс, где это происходит.
Let it crash не так работает, лол.
Когда надо было отлавливать и решать проблему гораздо раньше, говнокодеры запихивали её в МОЖЕТБЫТЬ в надежде, что её решит кто-то другой.
От языка это не зависит, говно пишется везде.
Да ты уже обосрался, когда допустил возможность передачи отсутствующего значения в место, где его быть не должно. Если единственный действительный подход при отсутствии значения — записать это в лог и упасть, это знак, что здесь никаких опциональных значений не нужно.
То есть все словари должны быть созданы уже со всеми возможными значениями ключей, в кешах недопустимы миссы, в документах, прилетающих их сети, обязательно должны быть все поля (правильно заполненные), пони обязательно должны быть розовые, и т.д.?
Туда, где водятся слоны и бегемоты,
Орангутаны и другие чудеса,
Летают раз в неделю самолёты,
Потом плывут неделю пароходы,
Потом идут неделю вездеходы,
А пони довезёт за полчаса.
Есть места, в которых действительно могут отсутствовать данные. Но также есть места в которых данные должны быть. И это задача кода на предыдущем уровне разобраться с данными, заменить отсутствующие на какое-либо значение по умолчанию или высрать ошибку. И простой проброс опционального значения — проёб программиста.
Да, если у тебя в языке все типы nullable, то ничего не поделать и вставить проверку типа if(!param) goto error; тебе придётся. Но если есть возможность на уровне системы типов указать, что здесь данные должны быть, это нужно сделать.
Никакого "простого проброса" в нормальном языке быть не может, т.к. `Maybe a' туда где требуется `a' тебе система типов просунуть не даст.
> Но если есть возможность на уровне системы типов указать, что здесь данные должны быть, это нужно сделать.
Т.е. как ведёт себя примерно каждая первая функция? Приведи реальный пример функции, которая от "предыдущего уровня" берёт как аргумент Maybe.
> Да ты уже обосрался, когда допустил возможность передачи отсутствующего значения в место, где его быть не должно.
Ты либо не сечёшь как работает Maybe в функциональных языках, которые не напел по телефону Рабинович (они таки да, не дадут тебе передать `Maybe a' туда, где требуется `a'), либо утверждаешь именно это.
Я утверждаю, что всё преимущество опциональных типов опытный говнокодер может свести на нет, попросту используя их абсолютно во всех определениях функций вместо просто значений. Тем самым переводя один класс ошибок (наткнулись на нулл) в другой (мы обнаружили, что нам подсунули нулл вместо значения, но что при этом делать совершенно непонятно).
Приведи реальный пример. Я слабо представляю, кому такое может прийти в голову, т.к. maybe увеличивает количество писанины где-то вдвое, а люди обычно стремятся к минимуму действия. Если кто-то сознательно вместо чистых значений использует опциональные, то тут надо не о говнокоде беспокоиться, а о том, чтобы этот маньяк тебя не сожрал с луком.
Высший сорт говна -- это когда функция закрытия/очистки/удаления возвращает ошибку т.к. помимо собственно закрытия она занимается не относящейся к делу хуйнёй (например коммитит данные на диск).
Я утверждаю, что всё преимущество статической типизации опытный говнокодер может свести на нет, попросту используя Object/void*/any абсолютно во всех определениях функций вместо просто значений.
почти никто не умеет, иначе у нас не было бы этих чудесных "Invalid handle", "unknown error" и прочих 0x8000100500
Если человек пишет (псевдокод)
то человек просто говноед, ослов ебавший, и наличие/отсутствие nullable тут не виновато совсем.
> вместо нормального планирования и обнаружения ошибок в нужных местах, в
Но обычно нормальная обработка ошибок это:
* попытка исправить то, что можно исправить
* вывод информации пользователю на нужном уровне абстракции со всем нужным контекстом.
Пример хорошей обработки ошибок:
Пример хуёвой обработки ошибок:
https://i.ytimg.com/vi/hc4NSiardOA/hqdefault.jpg
Нахрен мне логировать алёрт в ситуациях, где я, допустим, ожидаю, что файла нет? К примеру, если конфы нет в `~/.config/pituh.conf', но есть в `/etc/pituh.conf', зачем функции readFile орать "пожар!!" ?
readFile не знает, является ли отсутствие файла ошибкой или нет. Есть ситуации, где наличие файла является пиздец какой ошибкой, например у меня был проект, где оверрайд leader election делался через специальный файл, и когда программа этот файл видела, она орала алярмами.
Но ты всё равно должен проверить, что файла именно нет, а не нет например прав.
В моей псевдофункции это не проверяется, так что она всё равно говно.
И это всё равно будет говном:
1. кривыми selinux политиками можно запретить читать файл так, что is_readable при этом вернёт тебе true. (Реальный случай)
2. Права на файл могут измениться в интервале между проверкой и чтением, если ты в многозадачной ОС.
Нет серебряной пули.
Из названия `readFile' это никак не следует.
Так не бывает. В контракте функции должно быть прописано, как она себя ведет в случае отсутствия файла.
Если readFile не готов к отсутствию файла, то он должен вернуть ошибку, которую должны поймать на более верхнем уровне, и правильно обработать.
См. два примера выше. Если readFile — библиотечная функция, откуда ей знать, что вышестоящая логика ожидает?
На более нижнем уровне мы генерируем ошибку, на более высоком уровне (где отсутствие файла уже не является ошибкой) мы эту ошибку ловим, и строим по ней логику.
На уровне работы с памятью отсутствие страницы в памяти является fault, а на уровне работы виртуальной памяти -- нет, потому что можно загрузить страницу. Точно так же и тут.
Хуевые обработки ошибок либо теряют часть важной информации, либо выводят ее не на том уровне абстракции.
Например я пытаюсь запустить игрушку, а мне пишут "нет прав доступа к ключу реестра" или "invalid handle".
Что мне делать с этой информацией?
Поздравляю, теперь у тебя контракт никак не выражен в сигнатуре функции* и тайпчекер его не проверит.
...Теперь допустим, что у меня в языке нет исключений, или я в гугле, где они запрещены.
* Checked exceptions есть далеко не везде.
Исключения в C++ всё равно не особо бы тут помогли, потому что их можно забыть поймать.
Checked Excpetioons в джаве помогли бы, но очень сильно засрали бы код.
В языках, где ты можешь вернуть нечто, что может быть либо ошибкой, либо успехом, и вызывающая сторона обязана это проверить (что похоже в целом на Maybe) ты можешь вернуть такую штуку из readFile, а на более высоком уровне либо проигроировать ее, либо залогировать, это уже тебе решать.
Условный пример из котлина и кастомного класса Result
Ну вероятно нужен еще сахар типа
В общем, догматизм я вижу в этом треде. В духе: Дейкстра сказал, что goto — говно! Поэтому мы для выхода из вложенного цикла сделаем специальную переменную isVyhod, и будем её проверять! Так верно!
Разные фичи надо использовать по обстоятельствам, вот и вся премудрость.
* тебе не нужно явно вернуть ошибку, а хватит нула
* у тебя язык с null safety, и ты можешь заставить клиента проверить, что там не нул
Checked Exception это та ещё хуйня, потому что даже если ты знаешь, что какого-то исключения быть не может, потому что ты фильтруешь входные данные, ты всё равно должен его проверить.
Если функция позволяет фильтровать данные, то нахуя она кидает checked exception?
Наличие файла ты не можешь проверить (он может удалиться в момент запуска функции) а например что число больше ноля -- можешь, и тут checked exceptions не нужен.
Другой вопрос, что в джаве нужно было бы сделать сахар для их затыка.
ээ, а раньше он как был выражен?
Если у тебя в языке нет checked exceptions и нет аналогов Maybe с паттрн матчингом, то ты в жопе: никак ты не выразишь статически что у тебя может быть ошибка. Никак не заставишь пользователя ее проверить.
Ну есть еще всякие костылики вроде out reference в C#
Пример, в роли nullable значения выступает питух, в роли нулла — NaN. В программе есть кусок который можно поделить на следующие части:
1) Выдирание данных
2) Обработка и приведение данных в нужный формат
3) Данные запускаются в числодробилку
4) Полученный результат используется далее
В (4) в оказывается NaN, что приводит к проблемам. Сейчас проблему решать поздно. Мы можем упасть — нехороший вариант, потому что проблема возникает регулярно. Исправить её и проигнорировать неправильные значения мы не можем — во-первых, неизвестно, что использовать вместо плохих данных, во-вторых, если в данных NaN, то это надолго
Из (3) выходит NaN, потому что NaN пришёл. Это функция с хорошо определённым поведением, используемая в нескольких местах. Странно его менять ради заделывания дыры, да и непонятно, на что менять плохие значения
Исток NaN в (2) — в процессе подготовки данных появлялось отрицательное число, из которого брался то ли корень, то ли логарифм. Так случалось, потому что из (1) пришли данные, выходящие за допустимый в данном случае диапазон
В (1) ловить эту проблему не стоит — это прослойка, передающая данные из одного места в другое. Заставлять её знать откуда, что и куда она передаёт — ненужное усложнение
Решением будет ограничение данных положенным диапазоном в (2), и лог о выходе данных за границы, чтобы их исправить в оригинальном источнике данных
Тут питух — в нём NaN обычно подкрадывается незаметно.
Если вместо него в данном случае был бы nullable тип, то при написании программы следовало заметить, что в (4) (и, соответственно, (3) ) значение безусловно должно быть, значит, что при передаче из (2) следует проверить на не-нулл и заменить на значение по-умолчанию в противном случае. Также (2) ожидает, что данные будут удовлетворять определённым условиям, поэтому нужно их проверить на соответствие
...
> Решением будет ограничение данных положенным диапазоном в (2), и лог о выходе данных за границы, чтобы их исправить в оригинальном источнике данных
Если сигнатура функции 3 требует значение типа `a'*, а не `Maybe a' или `Either Error a', то система типов тебя заставит провести проверку ошибок в 2, что и требовалось доказать.
* Или если ты крутой Coq-ушок, то можно потребовать аж что-нибудь вроде {a | Predicate a}.
(3) это маппинг [maybe a, maybe b, maybe c] → [maybe x, maybe y, maybe z], где при отсутствии а, отсутствуют х и у, при отсутствии б, отсутствуют у и z, при отсутствии c отсутствуют z и х. Используется не только здесь, но и в других местах, где такое поведение — ожидаемо.
(1) это функция, возвращающая maybe, потому что запрошенного значения может и не быть.
И говнокодер может это maybe не обрабатывая передать дальше в (3), откуда оно попадёт в (4), потому что так у него в коде ошибок нет, заниматься ими придётся кому-нибудь дальше, а в случае чего можно свалить всё на приходящие данные.
Вот это пиздец, конечно. Сделай три разных чистых функции:
do1(b, c) -> z.
do2(a, c) -> x.
do3(a,b,c) -> {x, y, z}.
И небольшой враппер, который их запускает и переводит maybe в "certainly" и обратно.
Кстати, а optional может хранить нулл?
Чур я начинаю
Или это реальный код?
Хрен отличишь..
Пиздец!
Решение о присвоении продукту имени компании обусловлено желанием сконцентрировать усилия на продвижении одной торговой марки и связано с выходом компании ПРОМТ на мировой рынок. Напомним, что ранее продукция компании продавалась под именем Stylus как на российском, так и на мировом рынках. Развитие зарубежной дистрибуторской сети и увеличение объема продаж в разных странах потребовало целенаправленных действий по регистрации торговых марок, о чем не приходилось задумываться в 1991 году, при создании компании ПРОМТ. С 1998 года системы перевода будут продаваться на российском рынке под именем PROMT, на мировом - PROjectMT.
Продукт PROMT98 реализует новый подход компании к организации документооборота на иностранных языках и представляет собой лингвистический офис, состоящий из трех основных приложений, каждое из которых предназначено для решения конкретной задачи, связанной с поиском или обработкой разнообразной информации:
Какой багор))
но естественно что он не может обычным юзером насрать кэшем где-либо кроме папки самого юзера
поэтому с одной стороны пиздец, с другой а как еще, с третьей а кто вообще гарантирует что сгенерированный хуй знает где кэш будет работать на моей машине
Вай нот? Там ведь просто байткод, а не что-то нативное. Лишь бы версия питона в пакетах совпала, что для системных пакетов не является особой проблемой.
З.Ы. С другой стороны, мы знаем как в скриптушне относятся к совместимости. Т.е. версия питона должна совпадать как можно точнее.
x86 и x64
разными ОС
минорными версиями
> минорными версиями
Тут главное обновить всё это вместе с питоном. И системный пакет, скорее всего, обновится синхронно с питоном. А вот на вручную установленном пакете эта проблема запросто может вылезти.
И вообще, ты меня обманул
видишь "all" ?
Но может ты и прав, что байткод pyc специфичен для версии питона, а не для его разрядности
З.Ы. Или просто из-за запуска под рутом он туда высрался...
Однако я не вижу ни одного пакета с этим говном внутри
Так что вероятно питон сам насрал, может быть и правда из под рута. Во всяком случае прав писить в эту папку у рядового питуха нет
Файл
`python3-distutils_3.9.2-1_all.deb`
Так что компилирукется тупо в postinst.
Зацени ебаный костыль снизу про предыдущиеверсии.
Все таки дебиан говно и палочки малость
И чистить легко было бы устаревшее и помойки рядом с каждым скриптом бы не создавалось.
@ питон
@ мыслить рационально
но вообще это тоже половинчатое решение, потому что системный пакет могут юзать сотни юзеров
И кстати он ее решает неплохо, а в питоне без virtualenv она не решена никак.
Видимо посчитали, что туда и обычные dll'ки нормально лягут, а не только assembly от дотнета.
З.Ы. Или я путаю GAC и SxS?
В GAC лежит дотнет вроде. Вообще словом "асембли" вроде майки назывовывают только дотнетовые сборки.
Ложится ли в GAC то, что скачал нугет -- я не знаю. Возможно, там надо явно регазм (regasm) испытывать.
Но поскольку я дотнетил серьезно примерно пятнадцать лет назад, я могу и спизднуть, конечно
может, в домашней папке?
прыщи, сер
У меня же теперь травма будед, гондон в юбке.
гондонка! можно уважать прононс человека she/her??
Дизлайкают в карму только на хабрапомойке? В остальных местах вроде только комменты да посты...
Это примерно как теневой бан, о котором узнаёшь задним числом, потому что тебя вдруг подозрительно прекращают кибербуллить.
Так Твиттор можно сделать чуточку чётче.
https://www.theguardian.com/world/2022/feb/15/asian-boy-racially-abused-match-criticise-football-association-middlesex
https://cei.org/wp-content/uploads/2019/09/8-1340x1536.png
Сначала у них были рекомендуемые пользователи («близкие по духу»).
Теперь появились «темы» и «интересы». Предполагаю, что дизлайк нужен для чистки классификатора «тем» и «интересов».
Пизда с ушами: Я переименовала тебя в "солнышко". А я у тебя как называюсь?
Вы: Не скажу ))
А ещё меряться количеством юзеров, которые тебя внесли в ЧС.
И публиковать их список?
Есть ещё забава: если видишь, что какой-то мудак забанил комментатора за «неправильный» ответ, повторять тот же ответ с целью получить бан от мудака. В случае успешного попадания в ЧС радоваться хорошей компании.
Лично!
Это была бы ачивка, конечно. Но что-то я сомневаюсь, что он всю ночь сидит за монитором и банит кого-то там в социалочках.
Похоже, что непривычный к болоту политиканского истеблишмента Трамп таки сам вёл свой твитор. Не задумывался в 2016, почему вдруг твитор вообще?
Можно было на ЛОРе. Выпилили (((
Есть сервисы, которые пытаются посчитать тех, кто тебя забанил, но они показывают заниженную оценку, потому что подсчитывают только тех, кто зарегистрировался в этом сервисе.
Кстати, довольно часто банят сторонники «свободы слова». Ага, «никакой свободы врагам свободы».
Банить в частном порядке сторонников цензуры надо всегда. Они же за это выступают, пусть радуются реализации своей повестки.
Какой Гитлер )))
А вот людей не банил никогда.
Робот не может причинить вред человеку* или своим бездействием допустить, чтобы человеку* был причинён вред.
* Уняк -- не человек и сегодня ему предстоит скучная ночь.
В 1967 у польского военного Рафала Гановича спросили: "каково это убивать людей?". На что он ответил: "понятия не имею, я только коммунистов убивал"
Вот на «говнокоде» практически никого не банят. Даже вореции и говноспамеров.
define ``банят''. В частном порядке тут все друг-друга ба-нят через ngk/adblock.
Затыкать других на публичной площадке просто потому, что разошлись мнениями — не есть хорошо.
В моём понимании* это и есть "банить". На площадки с активными вахтёрами я и не хожу.
* Да, оно сильно извращённое уютненьким
В 2014-м году банду жалобщиков сколотили украинские националисты. За «неправильный» твит можно было попасть в «рейтинг ватности» на сайте karatel.foss.org.ua, и тогда на тебя наваливались жалобщики. Администрация Твиттера плохо разбиралась в неанглоязычных твитах, поэтому жалобы обычно удовлетворялись, и терпила исчезал из Твиттера. Но можно было подать апелляцию, тогда был шанс вернуться.
Году в 2018-м тактику украинских националистов переняли запутинцы. С этой поры за «неправильный» ответ появилась возможность получить жалобу и от тех, и от других.
Правда, сейчас Твиттер стал разборчивее и начал отклонять жалобы, если в твите не было явного оскорбления. Видимо, администрация осилила гуглоперевод.
Надо ли говорить, что ни запутинцы, ни украинские националисты не были оригинальными? Банды жалобщиков начались с англоязычного Твиттера, где жертв помечали тегами #TangoDown и #OpAnaconda.
Starting Dec 2014
Web: karatel.brezblock.org.ua
A twitter application, designed to automatically block the so called 'vatniks' (brainwashed persons) and 'Kremlin bots'
Toolkit: redis, celery, django, mysql, openvpn, collectd, python, twython, git
License: BrezBlock Proprietary
Какой странный набор. Про недосубд я не буду шутить, хотя мне странно, что ее прикрутили вместо постгри, которая в джанге по умолчанию.
Но причем тут collectd и openvpn? Почему не написать тогда bash, linux, там libc например?
Если пишешь git, то надо редактор укзаывать тогда, не?
https://docs.djangoproject.com/en/4.0/topics/cache/#redis
Если твоя страница однозначно идентифицируется переданными параметрами, то ты можешь развернуть 100500 фронтэндов в каждом уголке земли, и каждый из них будет показывать одну и ту же страницу из редиса, например.
Фу. А зачем тогда вообще перечислять технологии?
Повыёбываться mysql'ем?
> Вот же курьёз!
Мне на «Говнокоде» иногда 2к символов слишком мало. Например, когда в комментарии сру реальными примерами кода или ворециями, приходится сокращать ответ или разбивать его на несколько комментариев.
Сразу видно того, кто ни разу не слышал, как они гавкают.
В спальне с мягкой мебелью тоже могут быть отражения.
в документацию по новому JavaScript фреймворку
Какое хуйло )))
#BanderaKaratel
Сейчас здесь флуда и спама практически нет. Тяжело было, когда боты посредством общей учётки хуза спамили ссылками.
Да, окукливание — это всё-таки традиция «Одноклассников» и «Вконтактов». Там можно создавать совсем закрытые группы, в которые вход по инвайтам, или не совсем закрытые, из которых админ в любой момент может выкинуть любого участника в честь плохого настроения. И в итоге получается скука.
По всей вероятности ты просто ватник и кацап.
Они что, предлагают мне даунвотить любой увиденный твит?
Человек кликал бы от силы два раза в погожий день
Это же твиттер, туда невозможно зайти и прокликать все бесполезные твиты, это сизифов труд
Т.е. имеет смысл читать снизу?
То есть иногда ещё есть смысл понажимать эти кнопки.
Нет.
Можно же на лямбдах и тренарниках хуярить
https://pbs.twimg.com/media/FLsUNkfXMAAlDwd.jpg
МАКСИМАЛЬНЫЙ РЕПОСТ!
Да, по шифру в правом верхнем углу «Щука»:
https://ru.wikipedia.org/wiki/Подводные_лодки_проекта_671РТМ(К)_«Щука»
Ну в космосе вроде не выбрасывают за борт. А в остальных местах таких проблем с выравниванием давлений нету.
Представь, какой пердолинг для того, чтобы посрать!
СРИ В ШТАНЫ
https://en.wiktionary.org/wiki/galjoen
А у нас оно стало эвфемизмом для личной кабинки.
«oe» в нидерландском читается как наше «у», т. е. «galjoen» = «гальюн».
Прошло минут двадцать, за это время в центральном успели забыть напрочь, что у них когда-то продували гальюн. Туман, заполнив трюм по самые закоулки, заполнил затем нижнюю палубу и, нерешительно постояв перед трапом, задумчиво полез на среднюю, расположенную непосредственно под центральным постом.
Центральный пребывал в святом неведении:
– Что у нас с вентиляцией, дежурный?
– Отключена, товарищ командир.
– Включите, тянет откуда-то…
Другой сервис присылает скоры просто списком. Поэтому каждому лейблу соответствует индекс. И почему-то в некоторых местах код должен получать лейбл по индексу, а где-то берут два стрима и делают им zip, создавая в процессе объединенную сущность. В общем, от апи потребовалось два вышеописанных метода: получить стрим (последовательность) лейблов и получить лейбл по индексу.
Поэтому в классе со списком лейблов есть инициализирующий этот список код. То есть как список: это мапа. Мапа {Integer -> лейбл}. Нет, все Integer-ключи идут последовательно, дырок нет. Мапа нужна, чтобы обменивать лейбл на его индекс. Берется последовательность лейблов (в том порядке, в котором они идут; см. ниже, зачем), стандартным джавовским Stream API собирается в мапу.
Это половина дела. Вторая половина - это получить все лейблы в том же порядке, в котором их присылает сторонний сервис.
Поэтому код берет мапу из первого пункта и вызывает на ней .values().
Но, как мы знаем, просто мапа имеет проблемы с ордерингом.
Поэтому в первом пункте мапа создается не абы какая, а LinkedHashMap.
Чтобы в соседнем методе получить список лейблов в нужном порядке.
Даже идея положить этот список лейблов в метод №2, чтобы наоборот дергать его в методе №1 и не иметь проблем, никому в голову не пришла.
Я как-то пропустил момент, когда здесь вместо просто не самого опрятного кода начал появляться пиздец.
У полей get{Qualifier}Price, для которых существует этот сеттер, подписано что вообще-то это динамическое поле (что?) и должно быть методом.
Это CAS?
Отдельный тебе лайк за цену в плавучке, конечно
повторюсь, суют они туда меньше десяти ключей
https://pbs.twimg.com/media/FL3Vw1LXMB8sEa0?format=jpg&name=900x900
И попробуйте пакеты в Linux поставить без интернета. То-то же. Каждый раз когда вы скачиваете пакеты из репозитория за вами на самом деле следят, ведь IP известен, и корпорация, владеющая репозиторием, знает, что вы скачиваете и зачем.
А в Windows один раз создаешь аккаунт и спокойно пользуешься зондом популярной ОС с не имеющими аналогов приложениями. Все необходимые приложения можно купить бесплатно на торрентах. Даже антивирус, который будет их проверять на вирусы. Никто не узнает, что вы их установили. Полная приватность! А где антивирусы для Linux? А вы говорите безопасность... безопасность...
Уже не говоря о том, что не надо знать такого страшного слова как репозиторий (похоже на медицинский термин или самый страшный диагноз) или терминал (похоже на еще более страшный мецицинский термин означающий терминальную стадию репозитория).
А еще карточка NVIDIA новая....
98% пользователей Фотошопа используют 0.98% его возможностей, и им за глаза хватит гимпа.
Такая же хуйня, кстати, с офисом:
-- ко-ко-ко, мне нужен майкрософт офис
-- а зачем?
-- ну я текст в ворде набираю и жирным выделяю слова
З.Ы. Можно конечно pdf'ку скинуть вместо этого говна.
Ну а если Office 97, то тут не обессудь
Если ты начал форматированием заниматься, то да
Ну, если бы «LibreOffice» не был таким кривым и уёбищным говном — действительно, было бы незачем.
А форматировать таблицы?
> гугл докс
На любых файлах длиннее пары десятков страниц (или с длинной историей) это дерьмище тормозит так, что у меня не находиться слов, чтобы это описать.
Дык я ж начал с того, что многие используют ворд как текстовый редактор с выбором шрифта, а таблицы у них в excel.
Зелёное море тоски
Не надо говорить за всех.
Исходники: https://github.com/gost-gk/ngk
[Разбанить всё] [Чёрный список] [Порыться в говне] [Настройки] [Дампы] [Оффтопы]
Ну всё, можно уходить на покой.
Первый перекатный бот постил под никами "3_14dar" и "syoma".
Мастер повторного использования техники, специалист по производству вентиляторов из полимерных материалов.
https://govnokod.ru/24538#comment423431
или автор копулятора пидор
Если у вас браузер поддерживает, то https://diafygi.github.io/webrtc-ips/
ну не всегда это разные питухи, может и один переключиться с провода на wifi например
https://govnokod.ru/28049
https://govnokod.xyz/_28049/
https://forums.swift.org/t/core-team-to-form-language-workgroup/55455/4
Chris Lattner (inventor of Swift):
To answer your question, the root cause of my decision to leave the core team is a toxic environment in the meetings themselves.
И кобенационной платформой, чтобы наоборота на тебе передачи отсутствия файл могу и скинуть ответ или даже антивирусы для linux есть на втором узнать только ты все черный стек пишет псевдокод . Да что, так нельзя дизлайкать человеческому пиздец что 0 016 322 57 все равно на самого юзеров, которых вореционная лодки и ее и продукция позволяет фильтруешь видеоблоги. Особо совсем закрыл возможно днем методически нет. Заворачиваете и закона обязателя ее в 4 в оказывается натализационный тебе интересно, что не только я пилю файла является на это мапа? Умеется. Уже заметили, чтобы посрать процессе получить ложусь --ага, напримерно пятнадцать перекаты? Ой, сынок, то даунвотившего. Есть возникает регулярных место толпы выйдут обе легкие и 8 757 08 35 обычно во всем 8 3 60 заниматься в этом несут в другое поведение не для .net. Важно! Почему в трюм. Тимуртаз, а вообще сахар типа лалка порвалась . А если ты может быть конкретное говно#вореции
systemd-symlinkd?
В пинде есть symlink и symlinkd (симлинк на папку). Создается через CreateSymbolicLink
Хуй знает как работает, думаю спец тип записи в MFT, как на юниксе (но может и просто файл)
А есть junction, которая работает только для папки и костыль через reparse point.
И то и другое можно сделать через mklink
Пырчем силинки работают даже на SMB, а джанкшены нет
По этой причине некоторое прыщеговно вроде «git» не торопится в «Windows» поддерживать симлинки. Координаторы проекта боятся ущемить права Сёмы, поэтому решили сделать так, чтобы все виндобляди страдали одинаково.
«Ядро Windows поддерживает следующие виды ссылок:
• Hard Links — жёсткие ссылки, как в *nix. Доступны начиная с Windows NT4.
• Junction Points — аналог символических ссылок. Доступен начиная с Windows 2000 (NTFS 5).
• Symbolic Links — символьные ссылки. Доступны начиная с Windows Vista.»
Т. е. в 2022-м году создавать junctions не нужно, за исключением случаев, когда собираешься носитель пихать в двухтонник или в XP (вдруг у тебя есть девайс типа банкомата или станка с ЧПУ или ещё что-то, относящееся к embedded, ну или компьютер в сельской школе).
Думаю, это как в эксперементе с обезъянами и током: никто точно не знает что за проблемы, просто им старший товарищ сказал, и они повторяют
>Ядро
на всякий случай напомню, что ядро ничего не знает про ссылки ntfs, и даже executive не знает: он оперирует объектами, за которые отвечает object manager.
``\.\\HardDiskVolume1\porno\baba.mp4`` это ссылка на \Device\HardDiskVolume1, а там уже его парсит драйвер вольюмов, а дальше все попадает в драйвер FS, который уже может в ссылки
Так вот старый софт, совместимый с XP и с двухтонником, про симлинки не знает, он знает только про джанкшены.
Вероятно, джанкшены создают, чтобы такой старый софт не нанякнулся.
Интиресно, что жабий NIO умеет отличать симлинки, а джанкшены нет)
Зачем вообще этот кал сделали? Почему блядь сразу было не завести нормальные симлинки как в юниксе? Не очевидно было, что они понадобсятс?
Признали нужность симлинков через шесть лет после первого конфликта, чем наплодили несовместимостей.
Почему сразу тогда было не сделать не понятн
она была то ли в суппорт тулс, то ли в ресурс кит..
Sysinternals тогда были отдельными, Марк еще не работал в MS, да.
Некоторые тулы (например psexec для запуска от Local System) до сих пор must have у виндоадминов
Мы похожи на арбузы
Нужно ждать, когда прилетят ножницы
Калугин заснул и увидел сон, буд-то он
сидит в кустах, а мимо кустов проходит мили-
ционер.
Калугин проснулся, почесал рот и опять
заснул, и опять увидел сон, буд-то он идет
мимо кустов, а в кустах притаился и сидит
милиционер.
Калугин проснулся, подложил под голову
газету, чтобы не мочить слюнями подушку, и
опять заснул, и опять увидел сон, буд-то он
сидит в кустах, а мимо кустов проходит мили-
ционер.
Калугин проснулся, переменил газету, лег
и заснул опять. Заснул и опять увидел сон,
буд-то он идет мимо кустов, а в кустах сидит
милиционер.
Тут Калугин проснулся и решил больше не
спать, но моментально заснул и увидел сон,
буд-то он сидит за милиционером, а мимо про-
ходят кусты.
Калугин закричал и заметался в кровати,
но проснуться уже не мог.
Калугин спал четыре дня и четыре ночи
подряд и на пятый день проснулся таким то-
щим, что сапоги пришлось подвязывать к ногам
веревочкой, чтобы они не сваливались. В бу-
лочной, где Калугин всегда покупал пшеничный
хлеб, его не узнали и подсунули ему полуржа-
ной. А санитарная комиссия, ходя по кварти-
рам и увидя Калугина, нашла его антисанитар-
ным и никуда не годным и приказала жакту вы-
кинуть Калугина вместе с сором.
Калугина сложили пополам и выкинули его
как сор.
--Большого
--Какого?
--Большого
It is a good idea to use a large array, because it is hard to predict how many processes there will be at the time you call EnumProcesses.
There is no indication given when the buffer is too small to store all process identifiers. T
Ну как, если не весь массив заполнен -- значит хватило. Иначе надо взять побольше.
Надо типа так
Но на самом деле нужно нужно смотреть на значение, и если оно равно массиву -- значить вероятно есть еще говно, И нужно снова вызывать функцию, до тех пор, пока не получишь там ноль.