- 1
- 2
- 3
- 4
- 5
let d="please like! "
var c=d
let x=s=>{for(let f=0;f<c.length;f++){eval(s)}}
x("d=d+d")
x("console.log(d)")
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
let d="please like! "
var c=d
let x=s=>{for(let f=0;f<c.length;f++){eval(s)}}
x("d=d+d")
x("console.log(d)")
На каком языке это получится сделать короче?
3oJIoTou_xyu 13.02.2021 08:14 # 0
guest6 13.02.2021 10:36 # +1
prefix-not 13.02.2021 15:03 # −1
prefix-not 13.02.2021 11:07 # −1
JloJle4Ka 13.02.2021 11:28 # 0
Джаваскриптц официально соснул, что и требовалось доказать в очередной раз.
prefix-not 13.02.2021 15:01 # −1
Desktop 15.02.2021 02:12 # 0
prefix-not 15.02.2021 19:56 # 0
prefix-not 15.02.2021 19:14 # 0
hormand 15.02.2021 19:17 # 0
Wir werden angegriffen! Alle posten besetzen. Ich wederchole: wir werden angegriffen!
hormand 15.02.2021 19:19 # 0
Wir werden angegriffen! Alle posten besetzen. Ich wederchole: wir werden angegriffen!
prefix-not 15.02.2021 19:57 # 0
JloJle4Ka 16.02.2021 12:29 # 0
bormand, TOPT, JloJle4ka, 3oJloTou_xyu, Fike, defecate-plus-plus, MAKAKA, MapTblwKa, guest6, и некоторым другим, чьи имена я не вспомню, т.к. там много циферок, а память у меня плохая.
Desktop 16.02.2021 13:04 # 0
prefix-not 16.02.2021 16:44 # 0
bormand 16.02.2021 17:23 # 0
JloJle4Ka 16.02.2021 17:25 # 0
3oJIoTou_xyu 13.02.2021 14:15 # −1
prefix-not 13.02.2021 15:02 # −1
TOPT 13.02.2021 18:47 # −1
TOPT 13.02.2021 18:59 # −1
Можно ещё короче по убирать ретюрны и функции - но мне лень.
prefix-not 13.02.2021 19:16 # 0
CBuHOKYP 13.02.2021 19:03 # 0
Fike 14.02.2021 13:16 # 0
фу
bormand 14.02.2021 20:13 # 0
guest3 14.02.2021 20:26 # 0
hormand 14.02.2021 20:41 # 0
prefix-not 14.02.2021 23:08 # 0
CBuHOKYP 14.02.2021 23:10 # 0
bormand 15.02.2021 00:57 # 0
Fike 15.02.2021 01:58 # 0
MAKAKA 14.02.2021 23:37 # 0
извини, мне мама запрещает трогать eval (разве что в tcl можно, кстати на нем так примерно и будет)
hormand 14.02.2021 23:43 # 0
bormand 15.02.2021 10:42 # 0
hormand 15.02.2021 12:27 # 0
guest6 15.02.2021 12:49 # 0
bormand 15.02.2021 13:44 # +1
По сути я и на кресты могу переписать:
MAPTbIwKA 15.02.2021 15:14 # 0
bormand 15.02.2021 15:15 # +2
MAPTbIwKA 15.02.2021 15:19 # 0
prefix-not 15.02.2021 18:40 # 0
prefix-not 15.02.2021 18:31 # 0
MAPTbIwKA 15.02.2021 18:31 # 0
отлично работает
prefix-not 15.02.2021 18:13 # 0
bormand 15.02.2021 18:17 # 0
prefix-not 15.02.2021 19:10 # 0
MAPTbIwKA 15.02.2021 19:14 # 0
Во-первых не быстро, во-вторых не безопасно. Это, в общем, мнение любого нормального программиста
prefix-not 15.02.2021 20:06 # 0
guest6 15.02.2021 23:06 # 0
bormand 15.02.2021 23:10 # +1
guest6 15.02.2021 23:14 # +1
bormand 15.02.2021 23:19 # 0
guest6 15.02.2021 23:20 # 0
bormand 15.02.2021 23:20 # +1
guest6 15.02.2021 23:26 # 0
Уменьшая количество макак ты уменьшаешь потребность в бонанах.
Как программист, я разумеется считаю, что нода не нужна (как и JavaScript)
Но как реалист, я вынужден с ней мириться
bormand 16.02.2021 11:44 # 0
Всмысле изкоробки? Так то gevent в питоне тоже её юзает.
guest6 16.02.2021 11:46 # 0
libuv конечно. C рогатым динозавром
bormand 16.02.2021 11:58 # 0
guest6 16.02.2021 12:02 # 0
asyncio в питоне правда наверное тоже все умеет
зы: о, какой документ годны нашел
https://gist.github.com/andreybolonin/2413da76f088e2c5ab04df53f07659ea
bormand 16.02.2021 12:11 # +1
Блин, вот кстати мне виндовая логика больше нравится, чем юниксовая. Я отправляю конкретную задачу и получаю уведомление о завершении. А не жду поступления на сокет неведомой хуйни неизвестного размера перед тем как начать читать.
К слову, boost::asio юзает "виндовую" модель (proactor) а не "юниксовую" (reactor).
guest6 16.02.2021 12:39 # 0
Кстати, в винде еще есть оверлапнутное чтение, но оно вероятно уже никому не нужно.
bormand 16.02.2021 13:16 # 0
Да, но её всё равно кому-то приходится делать, в худшем случае разрабу самой проги.
Банальная задачка в духе "прочитать 30 байт из сокета" на реакторе превращается в ёбаный ад и наколеночную реализацию половины проактора.
guest6 16.02.2021 13:19 # 0
А как работает комплишен порт под копотом, кстати? берет ссылку на твой буфер, и копирует его тредами ядра?
bormand 16.02.2021 13:20 # 0
У винды всё ядро асинхронное и на коллбеках, для него этот паттерн вообще родной.
Отправляет твой буфер низлежащему драйверу, подписывается на завершение записи, в коллбеке дёргает твой ИОЦП.
guest6 16.02.2021 13:24 # 0
мне было интересно, как драйвер получает мой буфер. Его что, копируют целиком в память ядра? Или он ходит в мою память?
bormand 16.02.2021 13:33 # 0
Делает себе копию маппинга (MDL) на ту же физическую память, где лежит твой буфер, насколько я помню.
booratihno 16.02.2021 13:34 # 0
спасибо, понятно.
Desktop 16.02.2021 13:30 # 0
bormand 16.02.2021 13:36 # +2
У проактора ты идёшь читать, а потом получаешь событие "прочиталось".
Коллбеки у них на разных фазах, короче.
booratihno 16.02.2021 13:40 # +2
Ты: Привет, ОС! У меня есть восемь файлов, в какой из низ можно писнуть, и сколько?
ОС: Ждите...
ОС: Ждите...
ОС: Так, в третий файл можешь писнуть 40 байт.
Ты: спасибо, пишу....
Ты: так, записал. Надо теперь передвинуть указатель буфера на 40 байт, и дождаться следующего разрешения, чтобы писать дальше.
Проактор:
Ты: Привет, ОС! Сейчас я запишу в эти восемь файлов по гигабайту говна. Скажешь, когда реально запишется?
ОС: Ждите..
ОС: Ждите..
ОС: Третий файл записался.
Эквилибристика с буфером снимается с хрупких плеч прогарммиста
bormand 16.02.2021 13:49 # 0
К примеру, ты ставишь контроллеру задачу на чтение с диска или USB и выдаёшь ему буфера. А по завершении он дёргает тебе прерывание.
Реакторная модель разве что во всяких ps/2 да uart осталась.
Desktop 16.02.2021 14:20 # 0
Видел тут клавиатуру, про которую было написано, что некоторые функциональные клавиши работают только при подключении по ps/2. Очень удивился
MAPTbIwKA 16.02.2021 15:16 # 0
Во времена ISA это физически было не реально, без помощи DMA.
bormand 16.02.2021 15:27 # 0
guest6 16.02.2021 15:40 # 0
На железе очень хорошо видно почему реакт сделать проще, чем проакт.
* Железо само ничего не умело качать (было тупое, не имело DMA чипа)
* Железу не нужно было ходить в память, а только лишь отвечать на запросы, а значит сложный протокол битвы за шину(как в обычнои PCI) и адресации реализовывать не нужно (ISA проще чем PCI)
Пишут кстати, что в Solaris тоже есть аналог комплишенпортов
Desktop 16.02.2021 13:56 # 0
bormand 16.02.2021 14:00 # +1
Действие выполняется где-то в фоне, а тебе возвращают некую хуйню, на которой ты можешь ждать завершения.
Desktop 16.02.2021 14:11 # 0
bormand 16.02.2021 14:26 # 0
Интересно, а почему такую модель выбрали тогда?
Поди ещё с каких-нибудь далёких однозадачных времён, когда select реально обрабатывал пакеты с карточки?
bormand 16.02.2021 14:42 # 0
Можно было бы для неблокирующего сокета в read запомнить адрес и размер буфера, вернуть какой-нибудь EPENDING и пометить сокет, чтобы последующие read'ы возвращали EBUSY. А тот код, который пробуждал блокирующие read'ы, мог бы скопировать данные в этот буфер и снять метку с сокета.
А в качестве комплишен порта ты бы мог звать select, который рассказывал бы тебе какие сокеты вышли из pending'а.
Выглядит не особо сложнее текущей реализации, имхо. И не такое навороченное по сравнению с виндовыми overlapped и iocp.
З.Ы. Буфера со стека вот нельзя будет юзать. Возможно, это было критично.
MAPTbIwKA 16.02.2021 17:30 # 0
https://www.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.admin.perf.doc/doc/t0054518.html
но прыщам не дано
MAPTbIwKA 16.02.2021 15:31 # 0
a select system call that allows device polling. Там речь правда про терминал, как чуть ли не про единственное устройство (книжка описывает BSD середины 80х).
Так что не удивлюс, если select() читал прямо из железного буфера устройства (файла в /dev).
Устройства наверное открывались эксклюзивно
bormand 16.02.2021 15:37 # 0
Desktop 16.02.2021 15:40 # 0
BJlADuMuPCKuu_nemxy 16.02.2021 15:40 # 0
guest6 16.02.2021 15:47 # 0
или нет: в прыщах толкучка большая. Накотнибють в какуюнить netbsd
Desktop 16.02.2021 13:05 # 0
booratihno 16.02.2021 13:13 # +1
vs
guest6 15.02.2021 23:22 # 0
prefix-not 16.02.2021 11:35 # 0
guest6 16.02.2021 11:44 # +1
PHP должен быть в помойке, а не на сервере
JloJle4Ka 16.02.2021 12:32 # 0
guest6 16.02.2021 12:40 # +1
guest6 16.02.2021 12:44 # 0
JloJle4Ka 16.02.2021 12:47 # 0
booratihno 16.02.2021 12:48 # +2
когда наплыв на сайт закончится (ну там распродажа пройдет), ксеон можно будет продать
Desktop 16.02.2021 15:48 # 0
prefix-not 15.02.2021 20:43 # 0
let x=(d,s)=>{f>=d.length?0:s+console.log(d) +x(d,f++)};
MAPTbIwKA 15.02.2021 18:35 # 0
prefix-not 15.02.2021 19:09 # 0
letter: I letter: e letter: a letter: s letter: e letter: letter: I letter: i letter: k letter: e letter: ! letter:
Даже inputa нет
Б ееееее
MAPTbIwKA 15.02.2021 19:13 # 0
prefix-not 15.02.2021 20:00 # 0
hormand 15.02.2021 19:18 # −1
prefix-not 15.02.2021 20:40 # 0
let d="please like! "
let f=0
let x=(d,s)=>{f>=d.length?0:s+console.log(d) +x(d,f++)};
x(d,f++)
hormand 15.02.2021 23:55 # −1
D = "please, dislike!"
JOIN{$channel}
on NICK{HALT};
x = -> (v) { D.each_char { |c| v.call c } }
~x.call (->(c) { puts "letter: #{c}" })
prefix-not 15.02.2021 20:24 # 0
let d="please like! "
let x=(s,c)=>{for(let f=0;f<d.length;f++){console.log(d)}}
x(d)