it-юмор :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

it-юмор geek 
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор
Подробнее

it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор
Еще на тему
Развернуть
Javascript привет
Конкатенация беспощадная ты курва.
Иисyc Иисyc 28.01.202119:15 ответить ссылка 5.6
Ну, тогда получай '2' * 3
6opo6ep 6opo6ep 28.01.202119:27 ответить ссылка 2.8
Дай угадаю: "222"?
Запрети мне это делать, python, иначе я за себя не отвечаю!
На js пару раз девелопил по нужде, но блеать когда подобное нытье,- хочется проарать: а может просто это ты обвафленный говнокод.

Есть встроенная функция преобразования строки в инит: var x = Number("1000")

И кстати в любом языке есть свои язвы.
AndyTitan AndyTitan 28.01.202119:46 ответить ссылка -0.5
Я согласен. Это уже сотый пост на тему того, что в js плюс это как оператор сложения, так и оператор конкатенации.

При чём:
1) Если ты реально хочешь сложить строку с числом, значит ты быдлокодер, и python тут не поможет
2) Как конкатенация плюс всё реже используется, так как давно уже появились template strings

Лично я ни разу не простреливал себе этим ногу. В js есть реальные недостатки. Например, два типа, которые, по сути одно и то же: null и undefined. Тем же самым NaN, наверно уже у каждого, кто хоть раз писал на js прострелена нога.
PROBLEMS
JS AIN'T ONE
heleg heleg 28.01.202120:19 ответить ссылка -0.1
О, как в воду глядишь была история: Система№1 на .NET, в результате определенных операций с данными в переменной типа float образовалось значение 'NaN', а промежуточный апи на JSON сериализовал это как "NaN" и передал в систему№2 на iOS/Swift, в итоге никак не могли понять почему переодичиски приложение крашилось.
Ну вот я уже устал своим джунам (типа вот тебя) объяснять одни и те же простейшие вещи. Каждый раз, год за годом, все одно и то же.

- Если ты складываешь строку с числом - это не значит, что ты быдлокодер, это значит, что имеет место произвольный unexpected input. Говоря проще - когда твою функцию заюзали не там где следует без дополнительной проверки инпута (ну не ты тут быдлокодер!).
- Весь мир сидит на легаси-коде. То, что ты в своих исходниках юзаешь string templates, нифига не означает, что твое красивое `${hui}${pizda}` какой-нить babel не превратит в простое hui + pizda, где прекрасно работает вышеозначенный unexpected input (тут я щас упростил, ну да идите нахуй).
- "Лично я ни разу не простреливал себе этим ногу." да ты просто джунище квадратно-гнездовое, по одному комменту видно
- "по сути одно и то же: null и undefined". Вот такие ко мне на работу сразу не попадали. undefined - это когда значения не существует (или существует, но равно undefined, то есть не существует). null - это в JS-машине строго определенный, единственный на всю JS-машину объект. Когда говорится, что что-то равно null, это значит, что дается ссылка на этот самый строго опреленный, единственный на всю JS-машину объект. За счет различия null и undefined организуются чейнинги, когда функция одновременно выступает и геттером и сеттером. И там еще до опизденения много нюансов.
- NaN изначально был задуман как результат выполения невалидной математической операции без эксепшна. Он задумывался как "Not a Number". Ну вот объект например - не намбер. Именно поэтому старая реализация window.isNaN({}) вернет true (ну реально, объект - не намбер, че доебались), а новая реализация Number.isNaN({}) вернет false, потому что проверяет строгое равенство другому глобальному на всю JS-машину значению NaN.

// Да, вот тут тоже красивая здоровенная картинка, чтобы всему реактору заходила и плюсцы ловила вместо идиотского коммента.
ого, о повелитель js, возьми на работу джуна
Если ты складываешь строку с числом, значит ты не умеешь в типизацию или делаешь это специально. В случае JS типизацию обеспечивает TS и он проследит все было четко.

Но как же быть с приходящим JSON, наверное спросят нубские обсосы, мнящие себя дохуя мидлами, а то и сеньерами. А на этот случай есть геттеры/сеттеры, декораторы и даже целые построеннные на них библиотеки для проверки типов и не только типов. Да, на JS.

Бла-бла-бла, легаси. Ну давай, расскажи же о легаси в котором реально string templates не работает. Не, реально, давай, жги!

Насчет нул и андеф, ты прав. Тут чел не шарит. Тем не менее, при нестрогом сравнении null == undefined.
Hellsy Hellsy 29.01.202100:13 ответить ссылка -0.3
> Насчет нул и андеф, ты прав. Тут чел не шарит. Тем не менее, при нестрогом сравнении null == undefined.

Я не говорю, что они технически одинаковые, я говорю о том, что с практической точки зрения дизайна языка существование undefined достаточно спорно. Есть несколько исключительных ситуаций. Но в целом, что бы по большому счёту изменилось, если бы вместо undefined был бы null? В остальных языках с этим никаких проблем.
heleg heleg 29.01.202100:27 ответить ссылка 0.9
"В случае JS типизацию обеспечивает TS"
а пока микрософт не пришел и не сделал его, вэбдевы жрали говно и нахваливали
villy villy 29.01.202108:22 ответить ссылка 0.5
Многие до сих пор его жрут и нахваливают. Кококо, типизация не нужна, кококо - MVC ограничивает нашу свободу самовыражения, кококо - SOLID для фронта не нужен. Ну, а раньше не особенно-то много на фронте делалось, роутинг и формирование страниц обеспечивалось бэком.

Первые попытки создать клиент были еще на Сильверлайте и Флэше. Им сильно не хватало разметки и интеграции с браузером, но тем не менее.
Hellsy Hellsy 29.01.202117:52 ответить ссылка 0.0
Ого, тимлид в треде!

> Вот такие ко мне на работу сразу не попадали
Не дай бог с тобой в одном месте работать. Спасибо, я теперь хорошо представляю психологический портрет людей, работы с которыми надо избегать.

Ты сам читал, что ты тут написал?

> не означает, что твое красивое `${hui}${pizda}` какой-нить babel не превратит в простое hui + pizda

Какая там разница, что у babel под капотом? Думаешь, его такие же спецы писали, как ты?
``${var1}${var2}` там в худшем случае превращается в `"" + var1 + var2;`.

> функция одновременно выступает и геттером и сеттером.

Это как? И при чем тут null и undefined?
Я могу только догадываться, что речь идёт о функции, у которой поведение различается в зависимости от количества переданных аргументов. Например:

doSomething(undefined) // вернёт значение
doSomething(null) // установит значение в null

Только тогда не понимаю всё равно, при чём тут chaining.

> там еще до опизденения много нюансов.
Опиши ещё хотя бы один нюанс, который можно в здравом уме применять на практике

> NaN изначально был задуман...
Какая разница как реализован NaN, когда речь идёт о том, что реализация математических операций пропускает значение NaN, которое в реальной программе не может являться ожидаемым?
heleg heleg 29.01.202100:17 ответить ссылка -1.0
> NaN изначально был задуман...
- Какая разница как реализован NaN.
_______________________

Огромная,- NaN, это результат вычисления с плавающей точкой, который не является числом.

Другой пример: NaN, может быть вычислением (численным результатом), которое выходит за рамки классической нумерации объектов и их частей, с учетом характеристик в сравнение...

NaN, может быть "додекальен в хуйсоснявой стемени", на отображение которого не хватет памяти устройства.

NaN, это число, которое не является числом, но уж точно это не строка...
+версия "soclear".

ps: кстати, еще есть QNaN и SNan ))
< > c
@ localhost
[*	a	Elements	Console Sources Network Performance Memory
00	G	top	▼ O Filter
>	isNaN(l');
<• false
>	isNaN("aM);
<• true
>	NaN == NaN;
<• false
>	var a = NaN;
<• undefined
>	a == a;
<• false
>	a !==a;
<• true
>	a == "a";
<• false
>	isNaN(”joyreactor");
<• true
Так, и чем это помогает, что когда ты, например, делишь на ноль, у тебя не выскакивает эксепшн дивижн бай зиро, а результатом вычисления является какой-то NaN?
heleg heleg 29.01.202111:38 ответить ссылка 0.0
>>эксепшн дивижн бай зиро.

Не понимаю тебя, опиши хоть один сценарий или операцию где деление на нуль имеет место быть... как бы при деление на нуль, математика нам говорит: тут наши полномочия все.

Кстати да, даже современные смарт карты типа mifire имеет ограниченное кол-во памяти, хер ты там на одном килобайте передашь стринг "эксепшн дивижн бай зиро", тупо не хватит пямяти.
Когда в первые познакомился с технологией смарт карт, первое что меня настигло так это проблемы с меппинга блоков памяти (ограниченный объем) , пришлось идти на хитрости, типо как инклудить файлы с процедурным кодом, чтобы почистить блоки памяти ( не смогу сейчас четко сформулировать, тему ммапинга блоков памяти в с++ пропустил и так до сих пор не усволил )
https://securityrussia.com/blog/mifare.html#proizv_kart

Тебе надо привести более конкретные примеры, чтобы ты осценил на сколько это ценный тип данных и как он может в тех или иных ситуациях стать решающим занчением-типом.

Иду спать, завтра пофантазирую на космическую тему, NaN решил судьбу человечества )))
Либо ты меня не понял, либо я плохо объяснил. Я говорю о том, что при математических ошибках лучшим вариантом был бы выброс ошибки программы, как в других языках. Наверно, только в js можно легально делить на ноль, не получая при этом Error в консоли.
heleg heleg 30.01.202100:46 ответить ссылка 0.0
NaN возникает при преобразовании строки в число, которая числом не явсяется, при любой операцией с NaN (по стандарту IEEE 754) и при делении 0 на 0 (по стандарту IEEE 754).
При делении любого числа на 0 ты получишь ±Infinity в зависимости от знака нуля и знака числа.
Прочитай сначала стандарт IEEE 754, а потом уже говори про NaN.
> Спасибо, я теперь хорошо представляю психологический портрет людей, работы с которыми надо избегать.
Да ты прям как я, человеку диагноз по посту ставишь. Эксперты реактора, мы такие, ага.

> Какая там разница, что у babel под капотом? Думаешь, его такие же спецы писали, как ты?
``${var1}${var2}` там в худшем случае превращается в `"" + var1 + var2;`.
Ну в посте своем я знал, что до этого доебутся, поэтому там же превентивно послал нахуй.

> Только тогда не понимаю всё равно, при чём тут chaining.
Ладно, отходя от местячковых срачей ради лулзов и говоря более предметно, внизу отписал человеку конкретный пример. Посыл в том, что инструментарий выбирается под задачу, а не наоборот. Бывают случаи, когда сильно важно различать null и undefined.
soclear soclear 29.01.202108:38 ответить ссылка -0.1
- "по сути одно и то же: null и undefined".
Это молодое поколение которые не считают нужным учить основы, они хотят ебашить все на фреймворкахне считают флопсы, они никогда на коленке не собирали серваки с 64ram, это ебанные "белоручки"...

Помню историю, решил как-то выебнутся в одном дев-комьюнити своим студенческим проектом- "интернет магазин" ( с нуля на С#, на чистой процедурке (умел все- не доебешься!)).
Пишу: мол смотрите, вот тут душа, писал два года- запускаешь на любом калькуляторе, работет молниеносно, не требует посредников-интерпритаторов типо апача.
В скором времени пришел ответ от какой-то сопли: мол я это функционал подниму за неделю с помощью фреймворка "laravel'e", и мол ты лох и старый пердун, и это сугубо твои личные проблемы.

Не хочу сейчас расписывать пост-ковер всех тех мыслей и чувств что я испытывал в тот момент- я просто хочу сказать, что я очень благодарен всем людям в истории человечества, которые так или иначе были приближены к точным наукам, тем кто внес свой вклад в научный процересс, который подволил нам жить в этом прекрастном мире!

ps: Заметил что старая школа, стала активно перебегать на Golang, кто, что думает на этот счет, все-таки процедурка это сила?)
Разница в подходе, твой проект может и был хорош, но это 2 года в никуда.
А с ларавэл поднимут за неделю, покажут демо и потом те же 2 года будут допиливать.
Смотри, в рамках потребностей современно рынка- Laravel предложение безусловно выйгрышное, там еще куча плагинов, готовы решений и разработчиков хоть убавляй, - лафа!

Я же писал код еще в студенческие годы (13 лет назад), и суть выебона заключалась в том, что созидал сущность и функционал с нуля, - это творческая работа в первую очередь, и безмерный труд. + мой код конечно же отработает логику быстрее чем самый оптимизированный проект на ларавеле в 1000 если не в 10 000 раз))) - но это фигня, с точки зрения доработки, безопастности мой проект это барахло )))

Кстати, я сам пишу на Ларавеле уже как два года, так что и с моделью "MVC" знаком давненько)) так сказать, приспосабливайся или умри, но как сказал, все олды бегут на Golang и меня это передергивает)
Главное опыта набрал, тоже что-то похожее делал, месяцев так 7.

Раньше конкуренция была слабже и важнее было побыстрей хоть что-то выкатить, а сейчас важней выкатить что-то получше/побыстрей.
Совершенно верно, мы живем в век цифровых технолгий - буквально каждый комерс и любой другой здравомыслящий человек это осознает- посему первые стараются re-оптимизировать свой бизнес с учетом современных реалий (или умираю), другие же если стараются делать попытки, то только в рамках IT, потому что это мение затратнее...

т.е. есть спрос, а спрос порождает предложение (константа экономики).
Так что все логично друг :)
я думаю, что голанг - сраный высер
прошли мимо всего опыта предшественников и типа это хорошо
в итоге уже их допинали местами сделать дженерики, от которых они отбивались. эксепшены тоже допинают.
и останется язык с родовыми травмами
villy villy 29.01.202108:30 ответить ссылка 0.6
Ну и что? Я как-то в девяностых писал счетчик. 8 миллионов показов в сутки, сбор и анализ в реальном времени статистики по странам, языкам, реферерам и т.д. Все это крутилось на убогом P133 - какие уж тут 64 мегабайта.

В общем, я встроил счетчик прямо внутрь thttpd (был такой сервер) под фряхой, а записи шли кратными 512 байт, чтобы попадать в размер кластера на жестком диске. Никаких СУБД, разумеется. Почти год возился. Админка, хуинка, все дела.

Сейчас я тот же функционал ебану за пару недель. И это будет NodeJS + Postgress (или C# + SQL Server, или Java + MongoDB), причем в контейнере. А вебморду на Ангуляре + Материал (или Vue). И будет охуенно. И мне совершенно похуй на оверхед - железо копейки стоит.
Hellsy Hellsy 29.01.202118:08 ответить ссылка 0.0
>> - "по сути одно и то же: null и undefined". Вот такие ко мне на работу сразу не попадали.

Технически разное, а с практической точки зрения одна фигня, что ты такого полезного будешь делать с null ? Пример этого чэйнинга в студию.

>> // Да, вот тут тоже красивая здоровенная картинка, чтобы всему реактору заходила и плюсцы ловила вместо идиотского коммента.

Он не поленился вставить картинку, а ты доебался до человека по пустяковой причине.
ок-ок, до картинки мог бы и не доебываться.

С чейнингом все просто, вот пример кода настраиваемых виджетов (проект старый, писался на es3, подход к чейнингам был спизжен из сильно модных тогда jQuery и d3):

widget.title().text('My title').fontColor('red');

widget.title() - вернет инстанс тайтла, дальше этому тайтлу установится текстовое значение и цвет шрифта. Здесь методы text(value) и fontColor(value) отрабатывают как сеттеры, и оба возвращают title.

А если написать widget.title().text(), то здесь text() отрабатывает как гетер и вернет строку "My title".

Теперь самое интересное - а как сбросить установленное значение на дефолтное? (задача такая встала, когда писали UI для настройки виджетов).

Да все просто: widget.title().text(null).fontColor(null)
И вот именно в этом месте и надо различать:
- или у тебя метод вызван без параметра и должен отработать как геттер (параметр - undefined)
- или тебе пришел null, метод должен отработать как сеттер и сбросить значение на дефолтное
- или тебе пришло не null значение, метод отрабатывает как сеттер, устанавливает новое значение.

Как-то так. Щас конечно еще понабегут, но это вот для примера, где надо строго различать null и undefined.
soclear soclear 29.01.202108:26 ответить ссылка -0.3
Понял в чём затык, но это старый код, так уже довольно давно не пишут.

Одна функция мутирует данные на месте и делает 2 или больше разных вещей в зависимости от неочевидного ньюанса. Сейчас всё меньше кода с таким подходом.
Документацию читать это не для юмористов. Большинство кодеров думает, что им достаточно учебника алгебры.
malebelk malebelk 28.01.202120:20 ответить ссылка -1.0
Используй унарный "+", Люк, красивше будет.
lexas lexas 28.01.202121:55 ответить ссылка 0.1
Если я понмаю юмор "it-юмор'а", то этот юмор не такой и "IT", либо у меня есть способности к этому "IT"?
Можешь уже вакансию мидла искать.
Zeid Zeid 28.01.202120:13 ответить ссылка 11.3
Нет просто он однотипный. Шутки "it-юмор'а" это: програмирование основанное на костылях, баги которые вылезают после решения других багов, код собранный из кодов с сайта кодов, + который означает конкатинацию, говнокод от индусов и всё. Другого юмора в ІТ юморе нету. Весь он однотипный и понятный после месяца сидения в разделе "it-юмор'а" даже мне, человеку который програмировал один раз на ардуино путём копирования чужого кода.
Блин! (Отменяю заказ книги "Изучить все языки программирования за один вечер")
Правильно, лучше посмотреть гайд "30 языков программирования за 30 минут".
Ибо нехуй строки и числа складывать.
tipoima tipoima 28.01.202120:19 ответить ссылка 0.6
я вообще не понимаю нахрена в 2021 году использовать языки с динамической типизацией
nanoo nanoo 28.01.202120:33 ответить ссылка 0.6
Для меня это тоже загадка, и вдовесок почему именно питон так люто выстрелил
тут все просто! и это ключевое слово, простота.
просто делать, просто и быстро учиться и ... бараьанная дробь ... разработчики дешевле стоят, ибо их легионы. бизнес порешал.
отсюда и шуточки, что такие спецы не разобрались в основах языка и их триггерит, то что их ожидание не совпадает с реальностью.

и, да, для браузера нет альтернатив. онли js.
если бы мне пришлось писать на js, я бы взял интерпретатор ski комбинаторов на js и на хаскеле запилил бы dsl, который в эти комбинаторы компилиться. ебитесь сами со своим jопа скриптом.
nanoo nanoo 29.01.202112:01 ответить ссылка 0.9
Ну так как весь веб построен на Яве, то её иютяжело вытеснить.
никак вы, блядь, не научитесь!
ява и яваскрипт - два вообще разных языка. общего у них примерно нихуя
один запилен мудаками в спешке с использованием наркоманских необкатанных концепций, потом другими мудаками тоже в спешке принят как стандарт вэба.
а другой, хоть и многословен, но сделан по уму и имеет самую развитую экосистему годных либ и тулзов
villy villy 28.01.202121:12 ответить ссылка 0.6
Самую развитую имеет C/C# ,а js - так, заготовка .
может ты джаву хотел назвать заготовкой, потому что джс это не заготовка, а какуля в ламинаде
9Tails 9Tails 29.01.202103:43 ответить ссылка 0.2
бро, может быть , как по мне это все хуета и мне на них ваще пох , я уже 9 лет на C# работаю и как минимум раз в день узнаю новые фишки и раз в неделю познаю новые области применения
и я даже не на пол пути к дзену ....
давай я тебя еще удивлю: c и c# тоже кардинально разные языки.
за 9 лет ты этого не заметил, пиздобол?
villy villy 29.01.202108:08 ответить ссылка -0.7
я в курсе - просто начинал с сей потом ушел в сишарп , он меньшая сука ,и было посто переучится .....
переучиться ! ,блять , коррекции орфографии нет в пеке (
Ты мыслишь как питон. Охуел что ли?
»>	5-2
Traceback (most recent call last):
File "<stdln>", line 1, In <module>
TypeError: unsupported operand type(s) for 'str' and 'Int' »> '5'+2
Traceback (most recent call last):
File "<stdln>", line 1, In <module>
TypeError: can only concatenate str (not "Int") to str
»>
Чо, в чем прикол?
Я на js не пишу но...
Какого хуя к строке прибавляют и вычитают инт?
В чем проблема привести всё к одному типу?
Тут тега приколы_для_итдаунов не хватает.
Либо я вообще не догнал в чем прикол
Рандомы которые не понимают как работает код увидели "о сматри какой JS тупой, если минус то вичитает а если плюс то приписываед" и форсят эту хуйню вообще не вдаваясь в причины. Кого ебет, что там строка а не число, мем плюсуют же
только от строки он отнимает как от числа, но складывает уже как со строкой. почему??
'+' вполне стандартно используется чтобы склеивать строки вместе. Это норма, так и должно быть.
А с минусом такое не прокатит, тупо нет операции чтобы вычитать что-то из строки, поэтому программа пожимает плечами и решает "значит строку как число прогоним".
tipoima tipoima 29.01.202112:51 ответить ссылка -0.9
Мне, пока что, больше нравится вот это:
const arr = [];
if (arr) console.log("[] is truethy");
if (arr == false) console.log("however, [] == false");
s1aanesh s1aanesh 28.01.202121:17 ответить ссылка 0.1
Просто нужно использовать это правило https://eslint.org/docs/rules/eqeqeq. И забыть динамическое приведение типов как страшный сон
heleg heleg 29.01.202101:18 ответить ссылка -1.2
Часто это упрощает жизнь когда '', null, undefined преобразуются как ложные значения.
Для примитивных типов разумеется, а для объектов и массивов есть isEmpty хелпер из lodash.
Я про преобразование типов в операторах сравнения онли говорю. Забыл добавить
heleg heleg 29.01.202111:34 ответить ссылка 0.0
Ну сравнивать массивы в JS вот так arr1 > arr2 это безумие, обычно или сравниваешь длину массивов или то что значение присутствует/отсутствует.
Никому не нужное мнение мимокрокодила.
На языках с динамической типизацией (например, JS) можно писать. Умелый кодер легко бы подметил представленные на картинке ошибки. Однако, проверка типов руками - на мой взгляд довольно безрадостная работа, и при недостатке внимания довольно легко допустить ошибку. С другой стороны, ту же работу может выполнять компилятор языка со статической типизацией. Собирая код, он будет проверять типы автоматически, и, как мне кажется, будет справляться с этой работой намного лучше человека. Так почему же не воспользоваться его возможностями, и использовать в разработке язык со статической типизацией? Выигранное время можно направить на другую конструктивную работу - например, размышления на тему "а зачем я вообще пишу этот код?" .
Статическая типизация даёт ложно чувство безопасности что ошибок нет. В JS когда ожидаешь что что-то может сломаться на любой строке это мотивирует задумываться об архитектуре и тестах.

Пытался запустить штук 7 репозиториев с питоновским кодом где таких "детских" ошибок с типами не должно быть, ага, ни один не заработал.
Питонисты забывают даже про то чтобы "заморозить" используемые пакеты в requirements, после того как что-то обновилось код больше не запустить.
Про отсутствие тестов вообще молчу.

Итого "лёгкий" и продуманный язык где сложнее выстрелить себе в ногу воспитывает говнокодеров, а убогий JS рулит вэбом и не только.
Вот вы пидоры! Не все же ещё этот бой смотрели((
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
One morning you wake up find out you have access to God’s developer console. What’s the first thing you do with this power? Discussion ♦ 154 + W 479 & Share ^ BEST COMMENTS ▼ I like forks • 5h hehe3301 • 7h sudo rm -rf oceans/*/contents/ *.plástic sudo rm -rf people/*/*.cáncer sudo rm -rf v
подробнее»

it-юмор geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор без перевода it humor geek it юмор

One morning you wake up find out you have access to God’s developer console. What’s the first thing you do with this power? Discussion ♦ 154 + W 479 & Share ^ BEST COMMENTS ▼ I like forks • 5h hehe3301 • 7h sudo rm -rf oceans/*/contents/ *.plástic sudo rm -rf people/*/*.cáncer sudo rm -rf v
¿i OR IS IT TESTING ME? Й