- 1
Просто оффтоп #20
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Просто оффтоп #20
#1: https://govnokod.ru/20162 https://govnokod.xyz/_20162
#2: https://govnokod.ru/25329 https://govnokod.xyz/_25329
#3: https://govnokod.ru/25415 https://govnokod.xyz/_25415
#4: (vanished) https://govnokod.xyz/_25472
#5: https://govnokod.ru/25693 https://govnokod.xyz/_25693
#6: (vanished) https://govnokod.xyz/_26649
#7: https://govnokod.ru/26672 https://govnokod.xyz/_26672
#8: https://govnokod.ru/26924 https://govnokod.xyz/_26924
#9: https://govnokod.ru/27072 https://govnokod.xyz/_27072
#10: https://govnokod.ru/27086 https://govnokod.xyz/_27086
#11: https://govnokod.ru/27122 https://govnokod.xyz/_27122
#12: https://govnokod.ru/27153 https://govnokod.xyz/_27153
#13: https://govnokod.ru/27159 https://govnokod.xyz/_27159
#14: https://govnokod.ru/27200 https://govnokod.xyz/_27200
#15: https://govnokod.ru/27237 https://govnokod.xyz/_27237
#16: https://govnokod.ru/27282 https://govnokod.xyz/_27282
#17: https://govnokod.ru/27319 https://govnokod.xyz/_27319
#18: https://govnokod.ru/27380 https://govnokod.xyz/_27380
#19: https://govnokod.ru/27500 https://govnokod.xyz/_27500
Этот оффтоп сгенерирован автоматически.
Индекс оффтопов: 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.
Остерегайтесь подделок. Берегите себя и своих близких. Кок!
Ну кстати это не всегда правда. Жирному прыщавому унылому хую очень трудно вдруг обзавестись кирпичиками на прессе и искромётным остроумием
А зачем? Разве задача не отфильтровать мудаков и оставить больше подходящих тебе людей?
Хотя, если задача - найти себе спонсора, то да, надо повышать вореятности.
Последние лет десять свидания для секса прочно ассоциируются с Tinder. Появившись в сентябре 2012 года, это приложение на сегодня скачали более 340 миллионов человек во всем мире. Ежедневно в Tinder делается около 3 млрд. свайпов. Тем веселее читать истории, когда вместо романтической встречи страждущих любви ждут мошенники, извращенцы, а теперь еще и HR-ы. Да-да, вы не ослышались. Сезон охоты за головами (в нашем случае за скальпами разработчиков) объявляется открытым. Вернее, его уже давно открыли, но, по традиции, в наши северные широты тренды приходят с запозданием.
https://habr.com/ru/company/mvideo/blog/574188/
> Любовь, романтика и ревность давно оцифрованы.
> романтической встречи страждущих любви
Привет, сделай мне минет
Кстати, список длинных постов, которые нельзя трогать, никто не подскажет?
Те, в которых более 1,8 килокомментариев (порог уточняется), роняют какую-то апликацию.
Реальные примеры:
http://govnokod.ru/18591 — Кубок DelphiGovno, 2131 комментарий.
http://govnokod.ru/25054 — опрос j123123, 2025 комментариев.
http://govnokod.ru/15804 — каклосрач, 1940 комментариев.
Кажется, с последнего официальные™ оффтопы и начались.
Видимо, вплоть до 2019 не было ни единого разрыва.
1 bormand (#5528) 7373956 52571к
2 guest (#1) 5361246 48602к
3 3.14159265 (#1438) 3772371 14379к
4 1024-- (#7146) 3135014 10960к
5 gost (#8086) 2650886 11900к
6 guest8 (#25580) 2275087 54980к
7 inkanus-gray (#1659) 2274727 11324к
8 wvxvw (#988) 2024201 5088к
9 roman-kashitsyn (#3818) 1964997 11657к
10 defecate-plusplus (#4442) 1920739 8494к
11 j123123 (#7355) 1747802 5616к
12 MAKAKA (#67285) 1391300 8610к
13 kegdan (#6824) 1316875 13960к
14 Desktop (#23661) 1174676 10783к
15 Lure Of Chaos (#1538) 1167099 14270к
16 3_14dar (#7252) 1012385 9364к
17 Dummy00001 (#1183) 997785 3593к
18 TarasB (#721) 944337 7226к
19 guest6 (#67780) 867152 7803к
20 LispGovno (#6011) 704726 5103к
Топ 250 пользователей, активных более 1/4 года по объёму комментариев за год (1 год примем за 31557600c):(всего 3268 штук)
1 guest6 (#67780) 1073375 (0.8лет) 7803к
2 roskomgovno (#25569) 1029310 (0.4лет) 2096к
3 PolinaAksenova (#67888) 954155 (0.4лет) 1598к
4 guest8 (#25580) 919816 (2.5лет) 54980к
5 JloJle4Ka (#67813) 822394 (0.7лет) 3688к
6 bormand (#5528) 789292 (9.3лет) 52571к
7 gologub (#67884) 715476 (0.4лет) 2177к
8 MAKAKA (#67285) 710718 (2.0лет) 8610к
9 guest (#1) 630746 (8.5лет) 48602к
10 3_14dar (#7252) 584471 (1.7лет) 9364к
11 SemaReal (#25273) 513912 (0.6лет) 1821к
12 oaoaoammm (#67698) 470045 (0.5лет) 910к
13 Webkill (#1431) 453700 (0.3лет) 617к
14 barop (#14706) 449007 (0.7лет) 2518к
15 guesto (#13907) 434006 (0.4лет) 1474к
16 gost (#8086) 388302 (6.8лет) 11900к
17 1024-- (#7146) 379457 (8.3лет) 10960к
18 3.14159265 (#1438) 332458 (11.3лет) 14379к
19 Needless (#67471) 324766 (0.4лет) 308к
20 XYPO3BO3 (#67400) 312591 (0.9лет) 1418к
21 TEH3OPHblu_nemyx (#26169) 277938 (1.4лет) 2103к
22 Desktop (#23661) 274849 (4.3лет) 10783к
23 roman-kashitsyn (#3818) 258698 (7.6лет) 11657к
24 KoWe4Ka_l7porpaMMep (#67885) 256291 (0.3лет) 478к
25 wvxvw (#988) 233320 (8.7лет) 5088к
ебать он олд
– что означают эти цифры? Роман вроде не в 2013-ом зарегистрировался
или это разница между первым и последним комментарием?
Да.
заебали
Как там в 2009-м?
let — довольно новая питушня.
Но вообще, зачем так сектанствовать про let?
Из новой питушни настолько полезны, чтобы их использовать, разве что async/await.
let у прогарммиста - это как тычобля у пацанов. Вроде бы вполне можно обойтись, но оратор растёт в своих глазах при использовании данного выражение.
Вот леты, классы, консты и стрелочные функции я понимаю, а вот такой код я читать не могу
https://caniuse.com/let
Использовать let нет никакого смысла.
Переписывать var на let в скрипте, который 8 лет отлично работает - совсем нет никакого смысла.
Ты правда думаешь, что ради поддержки древних Сём в «Google» пишут на vanilla JS образца 2001-го года?
Причем скорее всего там пишут на чем-то стат типизированном, типа их дарта или TS, а компилятор выкакивает JS потом
Родина им дала Babel, блядь, пиши на нормальном языке! Блядь, не хочу, хочу юзать сломанное говно.
Не хочу юзать сломанное говно ES2016+.
"классы" в старом JS тоже есть, только очень плохие хуевые и разные в каждой либе
Может быть ему нравится писать
Но это ошибка программиста, и она случается независимо от того, использую ли я var или let. В любом случае, приходится искать питушню и переименовывать.
В пистоне такая же видимость, и никто не сдох. Или py3 так все хвалят из-за того, что там завезли let?
Попробуй пильнуть несколько лямбдочек в цикле чтобы они i захватили.
Если речь о лямбдах, то внутри лямбды будет новый лексический контекст как при использовании var, так и при использовании let.
С var у меня была полная свобода
1. Захватить саму переменную
2. Затащить переменную в замыкание, чтобы захватить значение переменной
С let такой свободы нет.
Угадай, что выведут эти три лямбды.
В С# кстати такой же багор был.
Смешал императивщину с функциональщиной — получил пизды.
Написал всё функционально — никаких проблем.
Это плохой аргумент. И вот почему
Если человек хочет писать функционально, он пишет функционально arr.forEach(function(){...}). И не испытывает никаких проблем.
Если человек хочет писать императивно, он не питушится с лямбдами.
Вот и всё.
Ты правда считаешь, что этот пиздец нормален?
Конечно, всё логично и согласно стандарту. Захват идёт по ссылке.
Всегда error т.к. X никогда не матчится с самим собой в паре с ok? Более ебанутое поведение я не могу придумать )))
А, потому что дефолтного кейса нету ниже?
После пролога это довольно логичное поведение. Там ведь тоже забинденные переменные сравнивались а не перебиндивались.
Какой багор )))
Какая манипуляция )))
Надо было написать "ты правда считаешь, что этот очевидный, признанный 9 из 10 стоматологов пиняк, который поддерживают только идиоты, полностью поехавшие и помоечные черви, нормален", чтобы у меня не было шанса ответить "да". Не было шанса ответить "да", если бы я не хотел срать на мнение толпы.
Но я отвечаю "да, это нормально и даже удобно". Я когда я переключаюсь с JS на C++ и обратно, вообще не чувствую каких-то неудобств в том или другом языке, связанных с заданием переменных. Все баги были из-за другого.
> console.log(x);
> for (var x
1. Это зачатки декларативного подхода. Меня больше бесит сишкинская реализация, где ни переменную, ни функцию нельзя использовать, пока она не промаячила где-то сверху. И вот ты забываешь про бизнес-логику и начинаешь высирать форвард питушню. Там дублируется сигнатура не интерфейса, а твоей внутренней функции, которую ты будешь 100 раз менять и вместе с ней менять сигнатуру.
Уже могли бы в кресты добавить хойстинг вместо всякого ненужного говна.
> }
> console.log(x);
2. А кто решил, что лексический контекст должен завершаться после закрытия фигурной скобочки? Кто сказал, что это единственное верное решение?
Выбор границ лексического контекста - это дело создателя языка.
Я художник, я так вижу.
Скобконякство Госта - это следствие большого влияния на него сишкинской парадигмы. Сишка была юзабельна и взлетела, вот и всё. И это не значит, что она была правильной, а все остальные решения - неправильными.
Ты это говоришь про человека, пишущего на «Питоне»? Спасибо, посмеялся.
Но смотрящего в сторону божественных конь-текстов шишки как школьник в сторону крутого ковбоя с сигарой в вестерне.
То, что питон не курит сигару мелкоконтекстов внутри каждого блока, означает только, что он ведёт более здоровый образ жизни, а не то, что он не крутой из-за того, что не курит.
> в сторону божественных конь-текстов шишки
В сторону вменяемых контекстов сишки.
Забавно, кстати, что «JavaScript», во всю пародирующий функциональный подход, обосрался на таких простых вещах. Своим «var»'ом он разрушает ссылочную прозрачность так, как даже в насквозь императивной сишке не смогли.
Какая ссылочная прозрачность )))
Смотрите, в насквозь императивной сишке всё же смогли:
Даже скопы звать не пришлось.
Мне вот всё понятно.
Просто в «Питоне» нету нормальных лямбд. Вот gost и бесится.
В языках где нормальные лямбды есть, «замыканиями в цикле» в js вообще никого не удивить.
https://govnokod.ru/11946
Как сказал выше 1024--, при переходе на C++ или C# всё конь-сис-тен-тно.
И, заметь, в этом говнище тоже «var».
> Как сказал выше 1024--, при переходе на C++ или C# всё конь-сис-тен-тно.
Правда?
https://wandbox.org/permlink/nIcBqxbwxzitvvYu
Это — нормальное поведение нормального языка, а не вароговно.
Я заметил. Это консистентное поведение, вызывающее наименьшее удивление программиста.
> Это — нормальное поведение нормального языка, а не вароговно.
Тоже логично. auto ведь.
Кстати хочешь багор?
Майки поменяли поведение языка.
В отличие от жсеров, которые оставили сёмантику var прежней, MS просто уничтожили обратную совместимость.
https://govnokod.ru/27628
Если заботливо сохранять в языке каждый копролитик, введённый туда в наркотическом угаре обдолбанным бомжом-алкоголиком, то в конце-концов получится «C++».
Всё-равно ведь заставляют смешивать образы императивного и функционального:
https://ideone.com/M1ducs
https://ideone.com/rGrzw3
Педерача же по ссылке, а там сидит мутабельный питух.
https://govnokod.ru/27628#comment666384
https://ideone.com/LlUtqP
Причём из-за перегрузки операторов сёмантически это выглядит как и обычный цикл.
> for (var it = new Bagor(); it.i<3; it++ )
А работает совершенно иначе.
То сейчас есть хуже чем было раньше. Тогда хотя бы консистентно.
Я не стал пирдолиться с неявными преобразованиями и сравнениями с intом, но думаю идея понятна.
> Выбор границ лексического контекста - это дело создателя языка.
Это выбор здравого смысла. Блоки в программе нужны для изоляции логики, а когда, благодаря тупому решению создателя языка изнутри изолированного куска логики можно засрать все остальные куски — это говно.
Какой пример? Где ввели let и новое непредсказуемое захватывание? Питушня.
> Это выбор здравого смысла.
Что такое "здравый смысл"? Набор установок, который вбили в голову родители, общество, СМИ.
> благодаря тупому решению создателя языка изнутри изолированного куска логики можно засрать все остальные куски — это говно.
Остальные куски засрать нельзя. В JS как в лямбда-исчислении область видимость начинается благодаря абстракции (обаргуменчивании выражения и создания функции).
А если какие-то фигурные скобки стоят, то это может быть JS объект. Он блочный и иерархичный. Давайте ещё придумаем "lot" и будем объявлять локальные переменные внутри веток JSON. Чтоб по канону!
Где поведение «var» сломано полностью.
> Остальные куски засрать нельзя. В JS как в лямбда-исчислении область видимость начинается благодаря абстракции (обаргуменчивании выражения и создания функции).
Оправдывать хуёвое архитектурное решение аргументом «тут так принято» — хуёво.
> А если какие-то фигурные скобки стоят, то это может быть JS объект. Он блочный и иерархичный.
Чего?
Ну все аргументы про ЛК сишки - в сущности, "тут так принято". Модульность за счёт for/if - это не аргумент, это "тут так принято, поэтому я придумаю, что это удобно".
Я сразу говорил, что это дело вкуса. Каждый вариант ЛК имеет свои плюсы и минусы, и ни один из двух рассматриваемых здесь не является объективно плохим или более плохим, чем ЛК-конкурент.
> Чего?
Удобно же? Как можно абстрагироваться!
Кроме поведения «var» в «JavaScript», которое объективно некорректно. Повторюсь:
Я уже писал, что var даёт программисту выбор, можно захватить переменную и по ссылке, и по значению, а let творит нелогичную питушню.
не дали бы изменять i.
Заметим, что если эту переменную не менять, в JS всё будет очевидно даже для летоняков.
+
> Что такое "здравый смысл"? Набор установок, который вбили в голову родители, общество, СМИ.
++
> JS как в лямбда-исчислении область видимость начинается благодаря абстракции (обаргуменчивании выражения и создания функции)
+
> Я сразу говорил, что это дело вкуса. Каждый вариант ЛК имеет свои плюсы и минусы, и ни один из двух рассматриваемых здесь не является объективно плохим или более плохим, чем ЛК-конкурент
+++
Просто в «JS» атомарный (единый и неделимый) скоуп это функция.
В Сишке это блок структурного кода, ограниченный операторными скобками.
У меня в ассемблере нет никаких "границ лексического контекста", именно поэтому я за ассемблер.
Так вот старые фортранщики боялись локальные переменные подпрограммы называть именами, совпадающими с глобальными переменными или с именами переменных из других подпрограмм. Каждой новой переменной они давали на 100% уникальное имя.
И вот смотрите. В современном языке ты где-то скобку забыл - и у тебя переменная утекла в другой контекст. Скопипастил/переместил кусок кода, а что-то забыл - заменилось из внешнего скопа или упало с ошибкой.
А тут и грепать можно, и код легко перемещать.
Чтобы не получалось что-то там грепать, "ООП" необязательно. Для "грепанья" и автозамены по крестоговну применяют костыли из Clang (т.н "AST матчеры"): https://youtu.be/dB70coTGOUk?t=1393
...и мне компилятор об этом сказал.
> Скопипастил
Если ты копипастишь код — значит, ты что-то делаешь не так.
> переместил кусок кода, а что-то забыл - заменилось из внешнего скопа или упало с ошибкой.
И чем же тут поможет «var»?
Пример с перемещнием, кстати, вполне себе является камнем в огород вароблядей.
Умный наверно компилятор. Где скачать?
Вот я скобку забыл переставить, а мой компелятор-муняк эти два случая не различает, хотя в одном из них фатальная ошибка:
В любом месте. Я не знаю компиляторов, которые дадут скомпилировать код, в котором ты скобочку
> забыл
.
Но что забавно, даже в твоём примере с подменёнными понятиями любой вменяемый* компилятор с высокими настройками ворнингов тебе выдаст предупреждение про unreachable code — если, конечно, после твоего примера дальше идёт ещё какой-то код. А если не идёт — то и ошибки никакой нет.
* Оказалось, ни гцц, ни шланг таковыми не являются :(. А вот жабаговно на такой пример: Выдаёт аж целое:
UPD: А нет, я напиздел. В кресто/сишкокомпиляторах надо просто включить «-Wunreachable-code», который ни в «-Wall», ни в «-Wextra» не входит: https://wandbox.org/permlink/BhE8LrRQ7xjG6AWK
Когда уже запилят телепатию и люди перестанут отвечать на слова, а не на мысль?
Очевидно же, что речь идёт о неумышленной перестановке строчек кода в другое место.
> unreachable code
Это только частный случай. Не стоит читать "return" буквально.
Да, некоторые флаги помогут, да. Но проблема останется и будет жить пока будут жить тупые языки с иерархическими скобочками без избыточности.
Я же говорю,
— Сделайте нам VPS-Studio, который будет проверять наши программы на наличие забытых скобочек!
— Пожалуйста, вот: ...
— Что за хуйню вы принесли?! Конечно, под «забытыми скобочками» мы имели в виду «перестановку строчек в другое место»! Вы что, долбоёбы там все?!
> Да, некоторые флаги помогут, да. Но проблема останется и будет жить пока будут жить тупые языки с иерархическими скобочками без избыточности.
Именно поэтому я за «Python». Нет скобочек — нет проблем.
...только при чём тут «var»-то? Ставь хоть «var», хоть «let», хоть «const» — примеру с do1(); do2() это никак не поможет.
Напомню, что ворота никто не отодвигал:
>>>>>> ты где-то скобку
>>>>>> и у тебя переменная утекла в другой контекст
Гост сам заметил, что от отсутствующей скобки появляется ошибка конпеляции. Ошибка конпеляции делает утекание переменных бессмысленным. Утекла-не утекла, а при ошибке компиляции никаких переменных уже нет. Значит дело не совсем в отсутствующей скобке.
Лесочек в новом алгоритме крестостандарт я совмещаю случайные пепел слова со случайными гитара смыслами.
Ну я же не заказываю питуз-штудию.
И вообще, нормальная контора кодописцев должна сначала выяснить, что за питушню хочет заказчик, потом переспросить с макетом.
Если бы заказчик разбирался в вопросе на уровне исполнителя, либо сам бы и сделал, либо сам бы придумал архитектуру, расписал мелкие ТЗ для заедушных кодеров и нанял их.
>>>>>> ты где-то скобку
>>>>>> и у тебя переменная утекла в другой контекст
Ну вот было же понятно, что речь о том, что скобка не там стоит. А если нет, то стоило попросить пояснить мысль.
Авторам питуз-штудии бы не заплатили ни евроцента, если бы они сначала написали её, а потом принялись выяснять точные требования.
__________________
> Именно поэтому я за «Python». Нет скобочек — нет проблем.
Питон - та же скобочная иерархическая питушня, только без скобочек. Если придираться к словам, то в питоне как раз можно забыть скобочку пробел и попутать блоки или даже скопы.
И печатать книги про этот язык чуть тяжелее. Перенёс код на другую страницу - и не определишь на глаз, сколько истребителей пробелов.
> ...только при чём тут «var»-то?
Тут снова непровар. Это вообще из комментария про уникальные переменные. Это абстракцией выше - на тему иерархичности как источника новых багов.
Сколько таки платите евгоцентов за пгогаботку каждого вашего комментагия нашей командой пгофессиональных фасилитатогов?
> Ну вот было же понятно, что речь о том, что скобка не там стоит.
Ну вот было же понятно, что красный квадрат на самом деле должен был быть синим кругом.
Давать кривые противоречивые требования нормально для заказчиков, в этих ваших комплюктерах не разбирающихся. А у нас тут общество приличное, стоит выражать мысли яснее (или хотя бы не обвинять потом оппонента в отсутствии телепатии).
> Питон - та же скобочная иерархическая питушня, только без скобочек.
В сишкоподобных язычках есть два способа задания логических блоков: скобочки и отступы. Первый способ — для компилятора, второй — для программиста.
И вот же какое говно: каждый программист на сишкоподобном говне обязан одновременно поддерживать оба этих способа! По уровню пиздеца это примерно то же самое, как если бы при объявлении переменной тебе нужно было бы писать её тип в двух местах (например, «Foo x = old Foo();»), при этом ошибка в одном из двух описаний приводила бы к совершенно неадекватным последствиям.
Гнидо, как довольно умный человек, это заметил и исправил, оставив всего один способ задания блоков. И это правильно, потому что программисты ведут неравный бой с повторениями с самых древних времён: не зря «DRY» считается одним из важнейших принципов программирования.
У нас тут багры, вореции и т.п. Только багры предельно ясны, поскольку предельно просты.
А тут мысль, которая только что пришла в голову и ещё не успела сформироваться. Её хочется скорее излить уютненькому ГК. Вот и получается питушня.
> каждый программист на сишкоподобном говне обязан одновременно поддерживать оба этих способа
С другой стороны, это зачатки избыточности, которая может полечить некоторые забытые скобки, как лечит их флаг про анричабль цоде.
Сравним:
Из-за избыточности во втором случае можно сгенерировать предупреждение для программиста.
Спасибо, так гораздо лучше.
> Из-за избыточности во втором случае можно сгенерировать предупреждение для программиста.
Да. VDS-Studio так и делает.
> Первый способ — для компилятора, второй — для программиста.
> И вот же какое говно: каждый программист на сишкоподобном говне обязан одновременно поддерживать оба этих способа!
Не обязан.
Можно писать как хочешь, а clang-format всё сделает как надо.
> По уровню пиздеца это примерно то же самое, как если бы при объявлении переменной тебе нужно было бы писать её тип в двух местах (например, «Foo x = old Foo();»)
Очень хорошо, смачно так приложил джавашатину.
> И чем же тут поможет «var»?
Это вообще не-про-var и сvarщик ненастоящий.
Здесь другие категории, не стоит вскрывать эту тему. С этой точки зрения обсираются и var, и let, и const, и <type> и неявщина питонная.
В мунякском JS можно свободно две переменные/функции назвать одним именем, и никто не боится это делать. В этом корень грепных проблем.
Из-за этого JS - говно, в котором произвольный код не грепнешь с уверенностью, что что-то найдёшь.
Не вижу никакого пиздеца. Нормальное поведение.
Сравни
и питон
В питоне чтобы вырваться наружу есть ключ слово ``global``, но оно не нужно
Шта?! Нук выведи i после второго цикла.
тем не менее, внутренний "i" затеняет внешнего, а в JS нет
Это другое поведение, и в JS оно более ебанутое
сравни выводы-то
Затирает, если быть точным. Просто потом внешний цикл его восстанавливает.
Т.е. этот пример работает из-за того, что это for each, а не сишный for. Вот и всё. А лексических блоков у питона нет.
и там тоже всё работает
Без него всё конечно сломалось бы
Тогда нужно объявлять переменные. Иначе из цикла или ифа наружу фиг что вытащишь...
Ну в общем-то js с let так и работает.
чтобы не тронуть переменную за пределами функции?
Да... Иначе ты насрёшь в window (или нет?)
Вообще интересно: если не требовать явной декларации перменных, то получим python, ruby, и обсёр со скопами (в руби чуть лучше, потому что много сахара для блоков)
Если требовать, то вроде как лишний код для скриптушни.
В перле например обращение без указания скопа не разрешено в strict (в перле их два -- my это лексический, и our это уровень модуля)
В lua скоп можно явно заказать через `local` вроде
И только JS взял худшее из двух миров со своим var, но слава богу починили в let
Справедливости ради, в ещё более нормальных языках «if» и «for» — это expressions, а не statements.
какая функциональщина ))
Это значит скоупы не нужны, или просто люди тупые?
А внутри функций - чем не ЛС?
> и без сахара для его создания посредством лямблий
Можно создать через функцию-неймфаг. Хотя, ламбдушня тоже позволяет, но анально ограничена.
Вот кстати да. В JS я могу написать
А в сишке - уже нет.
Красивая конструкция for (var i=0; i<xs.length; i++) превратится в двустрочник int i; for (i=0; i<xs.length; i++)
А когда у меня алгоритм изменится, надо будет обратно int i писать внутри цикла, чтобы снаружи не мешалось.
Что-то мне намекает, что сишные ЛК узковаты, а ЖСные - в самый раз.
Минимальная единица абстрации - функция (см. лямбда-питушню), а не if/for. Поэтому не надо от тела функции что-то прятать в if/for.
Ну ок...
Почему тогда у js локалки и глобалки вверх-ногами сделаны? Раз уж у тебя функциональщина во все поля, локалки должны быть по-умолчанию, не? Тогда не нужен был бы var, всё было бы интуитивнее.
Это при написании кода анскильным питухом, который забыл оставить var и не прикрылся 'use strict'?
Да, надо было так делать, а не срать в window.
> Тогда не нужен был бы var, всё было бы интуитивнее.
Какая интуитивность )))
То-то в питоне и global, и nonlocal для пущей интуитивности добавлено.
Если делать интуитивно, то нафиг убрать локальные переменные. Пусть будет только одна область видимости, и тогда не надо никаких варов.
А если область видимости ограничена, то удобно видеть по "var"/<type>, где переменную создали.
Куча такого кода будет неинтуитивной. Если брать питон/js - представьте, что bad выставляется в лямбде в коллбеке. Дело не в этом, дело в том, что удобно выставить питушню из соседнего контекста, и этим реально пользуются.
P.S. Сейчас опять набижит Гост и расскажет про функци-анальщину, но дело не в ней. Вместо bad=1 может быть другая логика, которая может нетривиально выразиться в функциональщине. Нам может понадобиться выставить что-то во внутреннем блоке или во внутренней функции по ходу дела, а не возвращать новое значение при выходе как в функци-анальщине.
Как раз-таки в ней. Если у тебя возникает желание «выставить что-то» — поздравляю, твой мозг поражён императивным говном.
> Дело не в этом, дело в том, что удобно выставить питушню из соседнего контекста, и этим реально пользуются.
И это — полнейшее говно. То, что им пользуются — не показатель: ротоёбы спокойно пользуются «PHP», пишут https://github.com/mpak2/mpak.su и радуются жизни.
«Контексты», «блоки» и прочие «скоупы» нужны ровно для одной задачи: для изоляции логики и, как следствие, уменьшение coupling'а. Механизмы, эту изоляцию разрушающие, объективно являются говном.
говночую
Какой багор )))
Допустим, мне платят 1 у.е. за решение некоторой задачи методом проф. Програмування. Мне не платят за выбор функци-анальщины или им-перда-тивщины.
Я могу пердолиться сто часов с функци-анальщиной ради функци-анальщины и реализовывать алгоритм, который на им-перда-тивщине реализуется за час. За ту же 1 у.е.
Не всё выражается хорошо в функци-анальщине, не всё выражается хорошо в им-перда-тивщине. Иногда нужно просто выставить значение за минуту и не перепердоливать всю ор-хитектуру ради того, чтобы цепочка делегационной воренщины выдала наконец мне это сраное значение.
А здесь мы видим поражение головного мозга императивным говном.
В нормальных (ну, более-менее, из-за первой строки всё равно говно) эта задача решается примерно так:
Но тут опять же та ещё питушня. Чтобы вытащить питушню наружу, нужно пердолить переменную из верхнего скопа вручную (лямбда оскопляет код, какой багор) или врубать котя-морфизм. map/filter - только частные случаи котя-морфизма. А reduce - не ленивый и не оптимизирован.
Во-первых, это не очень хорошая конструкция.
Во-вторых, такие конструкции всегда стараюсь вынести в ф-цию.
Поэтому не согласен с этим аргументом.
А наоборот согласен с ISO
> Если у тебя возникает желание «выставить что-то» — поздравляю, твой мозг поражён императивным говном.
А я-то думал, почему у меня нет проблем ни с ЛК ЖС, ни с ЛК сишки. Я просто две переменные с одинаковым именем в одной функции только по ошибке создаю.
Если не я, то поддерживаю.
Ну и нахуя мне ради джвух строчек пердолиться с очередной трансляторной питушнёй.
Бабель запускается у программиста на CI или на машине
Я за сборку JS. Чтобы иметь бабеля или TS или вебпак и всякие less/sass итд
Запустил конвертацию в старый JS (через бабелину).
Я не обязан так делать.
У центос седьмой вон есть расширыенная поддержка
Ай-да писать скрипты под python2.7?
Все те же классы и полезные пакеты в pypi есть под 2.7.
>Все те же классы и полезные пакеты в pypi есть под 2.7.
Давно уже нет
запусти мне послденюю джангу под 2.7 или фласк какой-нить
А зачем последнюю? Та, что работает под 2.7, вполне юзабельна.
P.S. Зачем дрочить на новую питушню, если старая решает задачу так же хорошо?
Затем, что старая не поддерживается, в ней не исправляют секьюрити баги, и не поддерживаются новые приложения.
Кстати, в 21 Августа 2013 (первое упоминание результатов скрипта) был let?
Хотя, не важно. var one love, а letоняди пусть страдают.
1: guest8 (#25580) - 54980
2: bormand (#5528) - 52571
3: guest (#1) - 48602
4: 3.14159265 (#1438) - 14379
5: Lure Of Chaos (#1538) - 14270
6: kegdan (#6824) - 13960
7: gost (#8086) - 11900
8: roman-kashitsyn (#3818) - 11657
9: inkanus-gray (#1659) - 11324
10: 1024-- (#7146) - 10960
11: Desktop (#23661) - 10783
12: 3_14dar (#7252) - 9364
13: MAKAKA (#67285) - 8610
14: defecate-plusplus (#4442) - 8494
15: guest6 (#67780) - 7803
16: TarasB (#721) - 7226
17: j123123 (#7355) - 5616
18: bugmenot (#1632) - 5230
19: LispGovno (#6011) - 5103
20: wvxvw (#988) - 5088
21: CHayT (#2853) - 4884
22: Stertor (#5934) - 4532
23: Fike (#8394) - 4504
24: absolut (#1528) - 4372
25: anonimb84a2f6fd141 (#5798) - 4257
Вроде удалось скачать, исправить http на https в парсере и распарсить.
Только список пользователей не удалось подгрузить из-за какой-то питушни с моим JSON.
Пора завязывать с ГК.
1: bormand (#5528)
В учебном корпусе некоего института собираются включить поставленные с полгода назад турникеты. Для прохода нужны, судя по словесному описанию знакомого, в этом заведении обучающегося, RFID-карты. А за эти карты надо платить. Институту. Платить, говорят, не обязательно, но если не заплатишь — карточку не получишь. Соответственно и на пары не попадёшь. Вот такое бесплатное образование :)
Возникает вопрос: имеет ли право кто-либо (институт, работодатель) требовать деньги за RFID-карточку, которая необходима для прохода к месту учёбы или работы?
UPD: Стало понятно, что такого произвола много по всей стране, но люди боятся что-то делать из-за страха быть отчисленными. Кто-нибудь может подсказать действенные способы борьбы с описанным поведением вуза без риска для студентов?
Эта история стара как мир...
Нам всё бесплатно выдавали, платить надо было только за замену.
Кстати интересно, кто-нибудь пробовал задосить свой вуз заказами на пропуски? А если бы была бесплатная замена?
Хотя, 200-300 рублей (<5 евро) - не такая большая сумма по сравнению с научным интересом. Если каждый студент, скажем, зарезервирует денег на 2-3 пропуска, а потом все поочерёдно пойдут сообщать, что потеряли, бюро пропусков сломается. Буквально потонет в финансовом потоке как тот мужик из мультфильма про копытное, которое делало золото.
Насовсем. И придётся искать другой вуз.
И хорошо. Значит тот был ненужной шарагой. Нормальный вуз из-за такого постараются не закрывать, максимум накажут виноватых.
Согласно одной из них, царским домом покупался человек (обязательно кшатрий или брахман) за сто коней или тысячу коров. Этот человек в течение года фактически оставался на свободе и жил обычной жизнью, отказывая себе лишь в одном — в общении с женщинами. По истечении года его приносили в жертву вместе с жертвенными животными и царица совершала имитацию полового акта с трупом. По другому описанию, царица совершала половой акт или его имитацию с ещё живым человеком, после чего последний отпускался и награждался. Сам обряд был направлен на процветание государства.
$ - дорого
$$ - очень дорого
$$$ - пиздец как дорого
Коровий навоз. Его кушать не надо. Веды говорят, что это чистый продукт. Все остальные испражнения считаются грязными, и человек не должен касаться их, даже нюхать. Он должен избегать их, чтобы не оскверниться. Если же человек обоняет коровий навоз или соприкасается с ним, то это очень благотворно воздействует на него. Коровий навоз очищает прану человека, обладает максимально охлаждающим воздействием, снимает все виды осквернения тонкого тела ума от влияния других живых существ. Если вы с коровьим навозом помоете свою квартиру, то все духи оттуда сбегают, им становиться невыносимо холодно. Навоз действует напрямую на тонкое тело. Так как эти сущности живут в тонком теле и у них огня не слишком много, то они чувствуют, что нужно ретироваться. Наличие духов в квартире можно определить по запаху. Спертый запах, вызывающий неприятные эмоции, означает, что там живут какие-то духи. Если вы вымоете полы в квартире навозом, то там будет пахнуть свежестью, и будет ощущение, будто в ней никто не жил, будто вы только въехали в нее.
Если вам подарили какую-то вещь, которая ранее была ношена, достаточно помыть эту вещь с коровьим навозом, и тогда ею можно пользоваться. То же относится к кровати, на которой кто-то спал. Без коровьего навоза невозможно жить, потому что ничто другое не освободит эту кровать или другую вещь от влияния человека, который ею пользовался.
mootools
Он ядрёный, он проймёт.
В тыщу раз целебней мёда,
Хоть по вкусу и не мёд.
Он на вкус, конечно, крут,
И с него, бывает, мрут,
Но зато кто выживает,
Те до старости живут.
— Какое доброе дело? Ты понимаешь, что ты насрал, бля, в тарелку, единственная тарелка. Единственная, блядь, тарелка, мы из неё жрём. Жрём суп из неё, ты туда насрал. Чё… где мы теперь жрать будем, из чего, а?!
— Смотри, мухи, они тебе спать мешают, мухи… А я вот — давай я здесь насру, и они все прилетят сюда, и мы их убьём! Слышишь? И тебе тогда спать… ой!.. спать будет хорошо. Давай? Я насру, а… а мухи все прилетят, сюда, к нам. Ну, куда им ещё, ихнее место-то тока здесь. И… оооой!.. хочешь я насру здесь? И мухи, и мы их убьём!
И лично для себя сделал следующие выводы: «JavaScript» сделан хуёво. Но не по причине var или его работы.
var вообще нахуй не нужен. Точнее нужен, но для другого.
Нужно было делать как в BASIC, Python: просто пишешь имя и используешь. LALKA=5
LALKA по умолчанию должна быть локальной. Желательно локальной константой (привет функциональщине).
А мудификатор var должен превращать её в локальную же переменную.
Но если она локальная, тогда возникает проблема: как же захватывать внешние ссылки?
С этим тоже «JavaScript» проебал, нужно было сделать явный захват use(a,b,c) как «PHP».
Ну а если написал use(=) и проебал — ну сам виноват.
Это также позволило бы создавать чистые функции, которые работают только со своими аргументами, и ничего не захватывают.
А на скоупинг vara срать.
Правильно guest6 резюмировал:
> А я-то думал, почему у меня нет проблем ни с ЛК ЖС, ни с ЛК сишки.
> Я просто две переменные с одинаковым именем в одной функции только по ошибке создаю.
Почему этого не делают? Из-за пирфоманса. Лишние вызовы могут увеличить время выполнения (что демонстрируют фреймворки с ООП гойловного мозга, в которых 90% методов ничего не делают, а только делегируют действия другим методам). Хотя, например, в сишке при использовании инлайна можно добиться минимальной переголовы.
В Китае же Партия делает телевидение бесплатно доступным, чтобы ты знал, как в стране всё хорошо и что у всех есть кошка-жена. А в Ниппонии у типичной офисной крысы нет ни денег ни времени чтобы купить телевизор и платить не за что.
А на чём же они в сони плейстейшн рубятся?
Какой graceful degradation )))
NGK бы вообще неюзабельным стал.
У меня всё работает
Мне даже ctrl-f5 не помог, один хер обрезок прилетает.
Срезано брюхо винтом.
Выстрела в спину
Не ожидает никто.
)))))))
https://twitter.com/kamysssh/status/1438847200528932867
https://duckduckgo.com/?t=ffcm&q=михуе&iax=videos&ia=videos
Среншин-хуеншин блядь. Сука, как много в интернете всяких ебланов развелось.
Лучше бы контроллеры программировали, а не упарывались в бессмысленные донатные гача-дрочильни с аниме-девочками.
Filed under DuckDuckGo News on 21 Sep 2021
Congo rebels are eating pygmies, UN says
Волк может скушать маленькую собачку, увы. Так же и африканцы
Или это всё gost сам себе отвечает?
https://pbs.twimg.com/media/FAclQRlX0AMyKR2.jpg
Оказывается, «Чертаново Северное» — это название целого района (муниципального округа), а «Северное Чертаново» — это название одного экспериментального квартала с гигантскими домами, который возвели в 1980-х, когда ещё термина «жилой комплекс» не было. Там даже нумерация хитрая: не улица и номер дома, а N-й корпус Северного Чертанова (ну то есть почти как в Зеленограде, только в более мелких масштабах).
Не забудьте только промыться, а иначе знатный конфуз выйдет.
Ощипанное, мерзкое, облезлое отродье.
Хотя однажды IRL видел чью-то бумажку: «Господа СВИНЬИ! Прекратите срать в лифте!»
Фотографировать выкладывать в интернеты я это не стал.
https://pbs.twimg.com/media/FBceurFWQAMnRHF.jpg
https://pbs.twimg.com/media/FB4qFYLXsAIZ3NI.jpg
Знаешь, что в каморках?
Как-то так наверное. От З по контексту можно отличить...
Какая экспрессия )))
– пфф, ну ты когда-нибудь попроси такого человека во время звонка расшарить экран
99% ты увидишь, что там реально у каждого мессенджера и почтовика ТЫСЯЧИ непрочитанных сообщений
Видишь нотификацию, понимаешь что это FIN, смахиваешь её вбок и забываешь. Не открывать же чат специально ради того, чтобы у собеседника пометочка о прочтении поставилась...
З.Ы. Именно поэтому я за дискорд. Там вообще нет индикатора прочитанности.
компьютер "(((Гауляйтер)))" для Ваших потребностей:
- вывод справа налево
- обрезание проводов
- монитор лицом к стенке.
КОШЕРНОСТЬ ГАРАНТИРУЕТСЯ !
В некоторых сервисах, если удалить непрочитанное сообщение, счётчик непрочитанных сообщений так и будет непустым, пока на сервере не придёт System.gc() и не починит.
В «Твиттере» сломанный счётчик непрочитанных DM можно обнулить только через «Tweetdeck» (tweetdeck.twitter.com — когда-то альтернативный фронтенд, который потом был выкуплен самим «Твиттером»).
Помню, на несмартфонах было по-разному: одни аппараты показывали многоточие вместо недоставленного сегмента, другие вообще не показывали сообщение, пока не придут все сегменты (это худший вариант, поскольку недоставленный фрагмент может вообще никогда не прийти). На каких-то моделях сообщения с выпавшим средним фрагментом показывались как отдельные SMS.
Ещё весело было, когда SMS-центр повторно высылал недоставленный фрагмент, причём несколько раз.
Угу, при особо хреновой связи должны были сойтись звёзды, чтобы и фрагмент доставился и сообщение о его получении.
Обратная сторона тетриса.
Когда до конца не приходило 20 сообщений, телефон проигрывал игру в СМС?
user will receive no visual notification about SMS being received.
## Description
Payload looks like this: byte[]{0x0A, 0x06, 0x03, (byte) 0xB0, (byte) 0xAF, (byte) 0x82, 0x03, 0x06, 0x6A, 0x00, 0x05}
Full SMS PDU looks like this: 03050020 01f61fe0c91246066833682000412 06050423f00000 0a0603b0af8203066a0005
Where first segment is SMSC (SMS Center), second is user-defined data SMS, last segment is payload specified in userspace
Using this payload, remote mobile station (baseband) will not deliver or correctly process the SMS, will only provide ACK (delivery report)
Это дамп твоей энцефалограммы?
Сохранять такие сообщения умели только «Сименсы».
Такое впечатление, что кто-то с ГК канал создал
https://lenta.ru/articles/2019/09/06/shakhty/
Кто у нас из Шахт?
«Яндекс» начал очень хитро связывать статьи. Видимо, по «акратидам» больше ничего не нашёл, связал их с Магнитошахинской областью, а Магнитошахинскую область связал с Шахтами.
p.s. влепил плюсос за не-имгур
https://youtu.be/chLU44T9Rts
А ещё у исполнителя СДВГ, ОКР и синдром Туретта.
Нашел один на ютубе
Вместо видео там фотка диска с дискогса, на котором этот трек вышел
Которую я же снимал и постил на дискогс
Сука
1, 1.5 или 2?
Приходит мальчик в мавзолей и спрашивает у Ленина: Ленин, вождь народов, почему не получилось коммунизм построить? Почему капитал до сих пор эксплуатирует рабочий класс?
Мимо проходит завсегдатай говнокода:
— Он сгнил.
ленин быв
ленин будет быть
Аз есмь был.
Потом глагол-связку «есть» стали опускать.
Было ещё прошедшее несовершенное — имперфект — аналог past в английском.
Аз бях.
Эта форма полностью утеряна.
Наконец, было давнопрошедшее — плюсквамперфект — аналог past perfect.
Аз бях был.
Сохранился в искажённой форме с заменой «бях» на «был»: «Я было спросил, а он не ответил».
Ещё был аорист. У некоторых глаголов он был похож на имперфект. Частично сохранился в искажённой форме (когда его форма подменяется императивом — повелительным наклонением): «А он возьми да скажи».
BBC News «Русская служба» -31 октября 2020, 11:350
На Филиппинах бойцовый петух убил полицейского, пытавшегося остановить нелегальные бои, Слуцк
Бой петухов на Филиппинах
Филиппинский полицейский был убит бойцовым петухом во время облавы, целью которой было пресечь нелегальный тотализатор в провинции Северный Самар.
Лейтенант филиппинской полиции Кристин Болок скончался после того, как бойцовый петух ударил его прикрепленной к лапе стальной шпорой в левую ногу, разорвав бедренную артерию.
Болок умер от обширной кровопотери по пути в больницу.
Он участвовал в рейде против нелегального заведения, где проводились петушиные бои, в провинции Северный Самар.
Петушиные бои — популярное на Филиппинах развлечение, собирающее толпы болельщиков, делающих ставки на победителя.
Их разрешено устраивать только в лицензированных заведениях по воскресеньям и праздникам. На время пандемии COVID-19 они полностью запрещены.
На Филиппинах бойцовый петух убил полицейского, пытавшегося остановить нелегальные бои, Слуцк
Шпоры, прикрепляемые к петушиным лапам, по форме напоминают серпы и остры, как бритва
Начальник полиции Северного Самара полковник Арнель Апуд в интервью агентству «Франс пресс» назвал гибель своего сотрудника классическим примером фатального невезения.
«Я сперва не поверил, когда мне доложили. Это первый подобный случай за 25 лет моей службы в полиции», — сказал полковник, выразив глубокие соболезнования семье погибшего.
В связи с инцидентом арестованы три человека, конфискованы семь петухов, два набора шпор и 550 песо (11,4 доллара) наличными, сообщило филиппинское агентство PNA.
Еще трое подозреваемых скрылись и были объявлены в розыск.
А вот англичане и немцы курок ружья обозначают соответственно словами «cock» и «Hahn», основное значение которых — «петух».
А корейцы пидарасы с точки зрения собак (с)
щенок
Кстати, русские слова «курок» и «собачка» (в смысле детали механизма) тоже похожи на названия животных.
Не могу теперь поставить клиента wmvware.
Удивительное дело, конечно: какая-то мелкая хуита, сетевой клиент, который должен тебе на экране что-то рисовать, для своего запуска требует админских прав, елеватор в манифесте прописан
ссанина
https://tb.rg-adguard.net/public.php?lang=en
естественно я там в свое время сидел из-под пользовательского аккаунта без прав, а пароль от админ-аккаунта забыл. в связи с этим был какой-то багор, но я у его уже забыл )))
Ситуация похожа на «Sysinternals», которые были приватизированы «Микрософтом».
Ну почему самые нужные вещи создают посторонние люди, а «Микрософт» их потом приватизирует?
То есть обычный Recovery Console бесплатный, а с впиндюренным туда dart -- платный.
Потому что купить дешевле, чем сделать самому. Визио купили например, ntbackup у Симантека, ГиперТерминал, и Руссиновича вместе с интерналсами -- тоже
Этих точно не купили.
А лучше бы купили, хотя бы не было охуевшего ценника на довольно простой софтварь.
Или скрытая шара
В юниксах каждому демону обычно выдается по аккаунту. Ну да, был когда-то ``nobody``, но он давно уже обоссан, да им особо-то и не пользовались еще во времена моего детства. Да и прав-то у него не было никаких.
А так у постгри один пользователь, у nginx другой, у постфикса третий (на самом деле их там целая гопа) и всегда понятно, кому на какую папку права давать.
При установке демона обычно ему создается юзер, причем в шеле у него nologin, и интерактивно ты им хуй войдешь (что локально, что по ssh).
И пароля такому пользователю тоже не создают, что как-бы логично, и секурно.
А что у пинды? Отдельного питуха получил разве что IIS, остальные сервисы работают кто от LOCAL SERVICE, кто от NETWORK SERVICE, кто вообще LOCAL SYSTEM. И как им права раздавать?
От кого мне запустить свой сервис?
MS говорит "от LOCAL SERVICE", и тогда к моим папкам будет пол системы иметь доступ. Охуеть.
Нужно создавать отдельного питуха, например так делает 1С и MS-SQL (но им нужно SPN регистрировать в домене, с ними всё понятно), только создавая пользователя нужно не забыть отключить ему все виды логинов кроме "вход в качестве службы", и придумать длинный пароль, потому что без пароля только перечисленные выше три аккаунта и работают.
Можно конечно (g)msa взять, но мой сервис не в домене.
феерия безопасности
Акк можно высосать или через пачку команд ``sc`` (что лениво) либо через "WMI".
Ну а почему я взял PS, а не wmic, потому что надо к PSу привыкать
¹ "M$" for machine objects
Сейчас у них модно "питаться с земли", то есть ломать лалок встроенные в винду средствами.
Раньше надо было ибаца: как-то затаскивать на сервер специально собранную для него бинарь, причем еще как-то запутывать её, чтобы по сигнатуре её не выебал антивирь, а на сервере Интернета нету, и как ты ее туда закачаешь..
А сейчас открываешь повершел, и ебеш, почти все говно для атак можно запустить с PS, потому что в .NET есть API на все случаи жизни
А в NT для каждого юзера нужно создавать куст HKEY_CURRENT_USER, который весит дохуя, ещё кучу записей в других кустах и домашнюю папку с ненужным говном.
Угадай, от какого имени работает Postgres на винде? А Apache от какого имени работает?
нук запусти мне питоноговно на винде. Понятно, что кошерно это делать через IIS <--> WFastCGI, но веб мартышка в IIS точно несможет
https://govnokod.ru/27951
https://govnokod.xyz/_27951/