- 1
- 2
- 3
- 4
- 5
- 6
- 7
#!/bin/bash
# apt install jq w3m curl
curl https://gcode.space/api/comments \
| jq -r 'map("-"*99+"<br>"+.user_name+" "+.posted+"<br>","<ul>"+.text+"</ul>") | reduce .[] as $item (""; . + $item) ' \
| w3m -T text/html -cols 99 -dump \
| less -R
Потому написал свой шаблонизатор для чтения стока.
Получился днострочный клиент для «Говнокод.ру».
вместо w3m -T text/html -cols 99 -dump | less -R
можно просто: lynx -stdin
Но зачем? Просто пердолинг/они чем-то удобны/вынужденная мера?
1. Читать на самом деле довольно удобно: удобная навигация с клавиатуры. Стильный вид.
2. Не нужно переключаться из терминала
3. Этот клиент запустится даже на микрокалькуляторах j123123
На них есть jq, w3m, curl?
Старый юниксоид читает почту, учавствует в форумах и чатах, и пишет код в одном и том же окружении.
1. Он может выбрать нужный ему шрифт
2. Нужные ему хотки
3. У него всегда одинаковый экспириенс.
4. Всё это очень легко, работает как локально, так и удаленно
Так оно же не автообновляется?
Интереснее другое: как по окочании пайпа подгружать ещё комментарии (консольный аналог ajax).
Достать следующий токен (время) для api не составит проблем.
А вот как лениво стриггерить подгрузку следующей порции при долистывании до низа, пока не знаю.
Может у кого-то есть идеи?
И чтобы оно срало в пайп, но лениво: по мере скролла вниз, а-ля git.
З.Ы. Бородатые юниксоиды юзали бесконечные стримы и ленивые пайплайны когда это ещё не было мейнстримом.
> Где-то 64 килобайта префетчит.
Хм, видимо я просто не насрал туда достаточно много.
У меня же в скрипте less уже был:
> | less -R
Если у меня for(i = 0; i < 1000000000; i++) cout<<i<<endl;
Программа приостановит цикл?
Реально клиент бесконечного стока вышел проще чем на «JavaScript».
Бесконечный сток.
Работает дико шустро.
я конечно не буду утверждать наверняка, но мне чот кажется что консольный клиент нгк на жс будет примерно столько же занимать
А куча зависимостей и мудулей node?
А рендеринг html?
Гигабайты говна, угу.
какие там зависимости и модули ноды? axios?
> рендеринг html
– зачем? зачем?
> зачем? зачем?
Потому что в json приходят куски разметки.
потому моральная победа за тобой
а фактическая неизвестно
Вообще хоть кто-то последний скрипт запускал?
– и что? зачем её рендерить?
Ну мне не очень приятно читать такую дрисню из <br>, <b>, итд:
"сорян, я не жабаскриптизёр<br>\n<br>\nпотому моральная победа за тобой<br>\n<br>\nа фактическая неизвестно"
Чтобы видеть в терминале нормальный жирный текст а не <b>месиво из тегов</b>.
jq = 22 kb
w3m около 1Mb
Unpacked Size
375 kB
> Promise based HTTP client for the browser and node.js
Это по сути curl (но мало получить json его ещё нужно отрисовать)
> 375 kB
а где "на порядки больше"?
И этот пакет совсем без зависимостей?
Хотя там одна нода будет весить как 100 башей и седов... Я уж молчу про то, сколько она сожрёт оперативки. Весовая категория совсем не та.
И тут моча...
Потом ворота раздвинулись до меряния килобайтами
Главное, чтоб последнее слово осталось за прыщефанатиками
Но скрипт Пи интересно запустить в термуксе на ведре. Правда, jq туда почему-то ставиться из репы не хочет, в отличие от ноды ггг
Было предложено написать реальный пример, чтобы не проводить гипотетических сравнений.
А поскольку такого примера предоставлено не было, то решили померять зависимости.
Мне что баш, что жс одинаково мерзки
Кроме зависимостей есть билд самой ноды. Он весит 20 метров зожатый в tar.xz.
И больше 100 метров росжатый бинарь (там ещё куча говна в рахиве).
> Правда, jq туда почему-то ставиться из репы не хочет,
Можно скачать статик-билд отсюда
https://stedolan.github.io/jq/download/
800Kb под OS X
P.S. В репозитории «Termux» (мумулятора терминала для ленивых) уже есть собранный w3m.
Для тех у кого нет w3m, есть возможность работы с lynx если передать такие параметры Впрочем можно портировать и на sed/xmlstarlet.
И нода тут не при чём, сравнивались axios и curl. Ты ж системные блевотеки в зависимости не считаешь?
Да можно выкинуть и регуляркой заменить теги на эскейпы.
Да. Там seda с головой хватит.
на какой ESC ты заменишь то, что выделено жирным
тут два закрывающих тага, укажи две ESC последовательности
По-моему кроме спамера так никто не писал.
А теперь попытаемся открывать и закрывать теги не сразу, а постепенно.
Проблема, однако, в том, что нормальное AST по современному вебговну тоже трудно построить
Какие-то люди хотели сделать все HTML документы XMLями, то их затоптали и обоссали, и сказали, что хотят не закрывать таги.
Джва вложенных одинаковых тега тут встречаются разве что в спаме, а с разными тегами проблемы не будет... Так что на практике сойдёт.
Если ты пишешь, к примеру, в терминал, а терминал не успевает нарисовать. Не логичнее-ли приостановить выполнение продьюсера?
Х.з., я не вижу смысла в ошмётках логов... Какая-то бесполезная хуйня, не имеющая реального применения, имхо.
Или уж писать полностью (для отладки и ковыряния), или писать только критические события и сводную статистику (тоже без потерь).
Дык статистика же. И профилирование.
Если я залогирую девять питухов из каждый десяти, то мои маркетологи всё равно сделают какие-то полезные выводы
Ну и что это за профилирование и статистика, если там какие-то бессвязные клочки логов? Плюс ты проц на их форматирование проебал.
Собери статистику в счётчики и выводи периодически. Всё полезней будет.
Ну да, скилььный питух должен
* на линуксе считать через eBPF (хотя я хз как это для юзерспейса)
* на бзде через dtrace
* на винде через ETW
а не текстовыми логами.
Но это очень скильным надо быть
> предпочтешь
Я думаю, мне там будет похуй и упрётся всё далеко не в логи...
Если логи не fdatasync()'ать каждую строчку, то они не так уж и лагают. 10к строчек по 100 байт это где-то мегабайт. Даже hdd не заметит.
Потому что я анскилльная лалка, которая не может отделить важную инфу от отладочного говнища?
Или тебе хочется профилирования? Ну так вруби семплирующий профайлер и теки, он вообще нагрузки на систему не создаёт, в отличие от ссанины с таймштампами в ошмётках логов, которая подведёт тебя как раз в тот момент, когда она больше всего нужна.
Чтобы твои коллеги аналитики их обработали, натравили машинное обучение, построили статистику или ещё какую хуйню.
Речь не про отладочное говнище.
Обычно профиляторы срут бинарными данными в какой-то буфер (иногда в памяти), который потом испоражняется в файл
Это тяжёлые профиляторы с инструментированием бинаря, я бы не рискнула гонять их на продакшене....
Для прода, имхо, подходит только что-то семплирующее, вообще не влияющее на работу.
С семплирующим ты проебешь тонкие моменты (по закону подлости именно в момент жопы щупа и не будет), но чаще всего всем похуй
Да и хуй с ними, если честно. Самые тяжёлые места увижу, при этом не усугубляя их ещё сильнее. А "иголки" короче интервала семплирования никому не мешают.
А про что? У тебя там от клиента мегабайтные запросы прилетают? А что ещё может пригодиться аналитикам для обычения мышей? Остальное в базе найдут.
Мы хуярили с 30 потоков записи лога в очередь, записи достаточно жирные, но не больше, чем сам запрос. Отдельный тред эту очередь разгребал и писал на диск. Так вот иногда этот поток не справлялся всё записывать, и мы проёбывали записи (ну и хуй с ними).
Ну и пофиг: если ты гугл, то проеб десяти пользователей в статистике тебя не волнует
Если же это секурити логи, то ты никогда не хочешь их потерять.
Лучше показать "500" или зависнуть, чем проебать факт взлома. Их даже fsyncнуть не жалко
Да в общем-то и обычная труба не блочится если буфера достаточно и на том конце успевают выгребать всё это говно.
Алсо, труба бывает NONBLOCK.
Переполненная NONBLOCK труба при записи, как ты уже наверное догадался, возвращает EAGAIN
Точно не 64к? И вроде она тюнится через иоктл.
>иоктл
fcntl точнее, F_SETPIPE_SZ
У тебя там линукс before 2.6.11 что ли? Или просто не туда посмотрел спросонья?
Но есть и такое мнение
In Linux versions before 2.6.11, the capacity of a pipe was the same as the system page size (e.g., 4096 bytes on i386). Since Linux 2.6.11, the pipe capacity is 16 pages (i.e., 65,536 bytes in a system with a page size of 4096 byte
я в этих ваших прыщах не разбираюсь
А теперь внимательно перечитай, что означает эта константа (она вроде не прыщеспецифик).
Подсказка: она никак не связана с длиной трубы.
Именно. И как бы не только в packet режиме, ибо какая нахрен атомарность в stream режиме?
Ладно, ты прав:
выдает 65536
В Erlang, кстати, можно срать сообщениями до OOM, и ничего не заблокируется, т.к. это царский язык, который доверяет программисту сделать backpressure самой.
watch -n10 в помощь.
Сделай, чтобы работало как tail -f
Плюс теперь можно переходить со стока по ссылкам в треды на ГК и ХУЗ.
Проверь.
в дебиане еще есть www-browser в альтернативнах, но то как-то не кузяво
У меня при клике на https://govnokod.ru/27650 открывает в обычном.
Консоль сама по тексту понимает что это ссылка.
Можно просто в <a href не заворачивать, тогда будет в обычном.
Если надо открыть картинку, которую кто-то кинул на ГК, я просто жму на неё и она открывается в обычном.
ЭМУЛЯТОР ТЕРМИНАЛА!!111
А терминал -- железка с моником и клавой для удалённого доступа.
Т.е. ты со своей локальной виндой работаешь через... консоль.
Если я не туплю, конечно.
Но есть еще понятие "консоли" в ядре (/dev/console).
Её можно запустить и на последовательном порту (а не только на физическом экране) и поверх нее есть виртуальные консоли (vt)
https://www.kernel.org/doc/html/v4.12/admin-guide/serial-console.html
https://upload.wikimedia.org/wikipedia/commons/8/8f/Dekalracija_za_nezavisnost2.jpg
Денес над Македонија се раѓа
ново сонце на слободата!
Македонците се борат
за своите правдини!
A phase in a Linux user life where he keeps switching from a distro to another, as new half-cooked features are hacked/patched into them.
They are usually proofs of the theory that the only thing concrete you can do with a linux distro is to simply install it... and spend your evening tweaking the settings of the X-Window server.
Typical distro-slut quotes:
"Woah, Red Hat rocks!" (1996)
"Red Hat sucks, they do business like Micro$oft! SuSe is sooo l33t!" (1999)
"SuSe is a big bad Novell brand! Gentoo rulez 'coz of it's portage system! (2004)
(Distro-slut then switches to FreeBSD as he realize the ports system was a FreeBSD idea, and lives happily ever after)
> tweaking the settings of the X-Window server.
Ох, в 1996-м это было ОЧЕ аткуально было в 1996. Сейчас-то уже никто ничего не настраивает
Но потом остались как разделитель.
итальянский
подбагор
______________
______________
______________
______________
--------------------------
--------------------------
--------------------------
--------------------------
перебагор
подбагор
малость багор
Зато у меня сток, единственный, который будет поддерживать старый-добрый «blink»
Ни в w3m, ни в lynx, ни в современных браузерах его нет.
Помню, в эпоху раннего ГК Гiгетох ещё поддерживал <blink>. Но потом и они его убрали.
Потом они отменили text-decoration:blink (которое до сих пор ГК использует для мумуляции blink).
Сейчас вроде рекомендуют использовать css3-animation или css3-transition (это не про трансов, если что, а про эффекты смены свойств типа цвета).
https://stackoverflow.com/questions/13955163/imitating-a-blink-tag-with-css3-animations
https://developer.mozilla.org/ru/docs/Web/API/window/requestAnimationFrame
Этот метод умеет задерживать анимацию, если браузер сильно загружен.
Некоторые по старинке используют setInterval/setTimeout, чем загружают процессор на 100%.
Вроде ещё какие-то методы есть.
Изменяя частоту включения/выключения можно было изменять высоту звука
Привет, Desktop!
> Изменяя частоту включения/выключения можно было изменять высоту звука
Я когда-то давно пытался что-то подобное сделать с какой-то функцией «beep» в пинде, но ничего не получилось. Но это уже совсем другое.
Именно поэтому я за «jq».
В теории можно «jq» запихунть с «busybox» в один бинарь, тогда общий размер будет меньше мегабата.
А «curl» можно заменить на «wget», который у меня в «busybox» присутствует.
ещё
этот
смелый
итальянский
багор
Доктор Смегма на переговорах в Лондоне
обнаружил позеленевшую питузу
сунув в неё свой раскалённый докрасна багор
в следующий миг он посинел от ужаса
СИНИЙ
МЕРЦАЮЩИЙ
БАГОР!
Переговоры явно шли не очень удачно, итальянские партнёры не соглашались
> в книге «Шиза»
Сразу понял о чём речь. Я их читал.
Теперь «Говнокод.ру» говорит, показывает и мигает в цвете.
Исправлено форматирование. Сделана подсветка ссылок.
Для поклонников «busybox» загрузка «curl --silent» была заменёна на «wget».
����� cp1251 )))
То появляется возможность подгрузки и обновления постов по клавише «q».
Вот такой shell ajax.
Он есть, но смысл ключа противоположный (!) нормальному лесу. И оно выводит монохром.
Прыщебляди соснули!
КЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАККЛЮВАК
сэмулировал печатную машинку
git
Дальше рассказывать?
Ссылка на parent пост.
Море для автобусной коробки.
Коллега1: Кто-то знает GeekBrains? У меня знакомый интересуется курсом https://gb.ru/geek_university/cpp-developer
Коллега2: Если человек не может выучить язык программирования по книгам, то навряд ли из него получится хороший программист.
Плюсанул
Подтверждаю.
Больше оно мне ни зачем не надо
- Жесткий диск
?
У тебя, кстати, общественная или частная сеть?
Данное устройство может работать неправильно. Продолжить без форматирования? Или открыть средство устранения неполадок? А может попробовать в режиме совместимости или от имени администратора?
А лучше сразу обратиться к системному администратору!
так же советую программу для исправления ошибок в реестре
Была ли эта статья полезна для вас?
Всё что я тут перечисляю -- это мой персональный юзер икспириенс на "юзер-френдли" системе за один день. А я по вашей терминологии пердолик, а не "обычный юзер".
Ergo ты хуесос.
Нахуй иди на на свои 2% говна. Налинукс!