На всех клавиатурах придумали две пипки (и третья на нампаде) чтобы в несмотря на клавиатуру можно было бы найти C4.
Неплохо. Забыли всем рассказать, но неплохо.
Остальные клавиши оставили гладкими, а что если на все них нанести Бугорки Брайля? (забудем про незначительную группу людей которым недостаточно латинского алфавита)
Ведь мы бы могли построить нашу цивилизацию зная что все могут читать пальцами.
Например, в темноте в комнате темно, ты щупаешь вокруг руками и вдруг понимаешь что это — включатель света. Можно призвать свет!
Или лежишь в темноте, читаешь пальцами книгу рядом перед сном без страха что она упадёт тебе на лицо!
Уважаемые боги, очень нужно!

2025.12.15 22:41
Все мы знаем что email@example.com — это имейл. Но что значит имейл? А значит оно что на сервере который находится по адресу example.com есть аккаунт с именем email. Ещё мы знаем что это имейл поэтому мы знаем на какой порт обращаться и какой протокол использовать (уточним детали в dns).
Точно так же каждый *nix аккаунт можно записать как user1@computer1 что значит что на computer1 есть аккаунт user1.
Символ @ буквально называется at:
user1-at-computer1email-at-example.comУдобно. Униформатично.
И тут приходит глупый твиттер и решает что теперь все будут @user2 и сломал интернет. ТВИТТЕР ДОЛЖЕН БЫЛ ИСПОЛЬЗОВАТЬ user2@!!!111
Всё потеряно. Дальше только хуже.
2025.11.28 17:53
Google развивает ОС Aluminium для ноутбуков и планшетов
А будет форк OS Aluminum?
2025.11.25 13:00
вы конечно не ожидайте что я буду часто писать и дальше, конечно же не буду.
Теперь вместо meme.jpg надо ai_picture.jpg
2025.11.12 22:59
А что вам больше нравится: мёд или кленовый сироп?
Напишите в комментариях, интересно посмотреть какая у меня аудитория!
2025.10.21 19:36
Очень нужно сильно захотелось написать простой маленький консольный бинарничичек. Конечно же не на пхп ведь мы же не монстры, правда?
Немедленно открываем документацию к racket чтобы узнать как это делать:
(command-line optional-name-expr optional-argv-expr
flag-clause ...
finish-clause)
optional-name-expr =
| #:program name-expr
optional-argv-expr =
| #:argv argv-expr
flag-clause = #:multi flag-spec ...
| #:once-each flag-spec ...
| #:once-any flag-spec ...
| #:final flag-spec ...
| #:usage-help string ...
| #:help-labels string ...
| #:ps string ...
flag-spec = (flags id ... help-spec body ...+)
| (flags => handler-expr help-expr)
flags = flag-string
| (flag-string ...+)
help-spec = string
| (string-expr ...+)
finish-clause =
| #:args arg-formals body ...+
| #:handlers handlers-exprs
arg-formals = rest-id
| (arg ...)
| (arg ...+ . rest-id)
arg = id
| [id default-expr]
handlers-exprs = finish-expr arg-strings-expr
| finish-expr arg-strings-expr help-expr
| finish-expr arg-strings-expr help-expr
unknown-expr
Пожалукйста, потратьте минутку и насладитесь этим шедевром форматирования.
Спасибо, больше не надо этого делать. Если вы не поняли как это работает, то вот вам настоящий пример от человека который понял:
(define parser
(command-line
#:usage-help
"Here you can write a general description of your program"
"You can have multiple strings to make multiple lines"
#:once-each
[("-m" "--my-parameter") MY-PARAMETER-NAME
"write a short description of what setting MY-PARAMETER-NAME does"
(my-parameter (string->number MY-PARAMETER-NAME))]
[("-a" "--another-parameter") ANOTHER-PARAM
"a little description of ANOTHER-PARAM"
(another-parameter (string=? "true" ANOTHER-PARAM))]
[("-s" "--string") A-STRING
"what is A-STRING?"
(a-string A-STRING)]
#:args () (void)))
Очень мне нравится как в они в этом racket’е любят использовать магические строки типа #:once-each которые непонятно что делают и никак не автодополняются официальной IDE.
Очень, очень захватывающе. Пожалуй, на этом с racket я закончу.
#racket #why #wtf #theway #deep
2025.01.26 14:54