gavr_sas
216 subscribers
2.67K photos
184 videos
28 files
784 links
JB пропаганда
Download Telegram
gavr_sas
Штош, вот и вся программа, с итерацией по ключам значениям вышла история, значит есть функция seq которая принимает мапу и выдает лист массивов из пар ключ значение. >(seq {:foo 1 :bar 2}) ([:foo 1] [:bar 2]) Есть макрос doseq который проходится циклом по…
Готово, спрашивает те слова, которые наименее часто правильно отгадываются, сохраняет все в жсончик

Объяснять тут уже нечего, заметил 4 особенности,
1) при ошибке стектрейс пишется в /tmp/sas.edn и читать его неоч удобно
2) если хочется сделать какое то действие между объявлениями переменных придется создать новый скоуп, как здесь нужно принтнуть поэтому на 39 новый скоуп ради 1 переменной.
3) редактировать формы офигенно удобно, все действия с текстом как бы работают с учетом скобок, нужно поменять 2 местами в какой нибудь адской вложенности, alt вверх нормально меняет местами, не строку а именно форму, тоже самое с автоотступами итд, вообщем редактировать текст приятно
4) все иммутабельное, сначала даже растерялся, функция update-in возвращает новую версию, но не меняет старую, поэтому вся приложенька на хвостовой рекурсии, храним измененный стейт в аргументах функции, по заветам функциональщиков

github.com/gavr123456789/no-wo-read
This media is not supported in your browser
VIEW IN TELEGRAM
Еще 5) немного относящееся к пункту 3 офигенный тулинг, что довольно редкто встретишь у функциональных яп(единственный норм тулинг что я знаю это F# с Rider), тут что плагинчик у vscode что у IDEA оба тк сказать mature,
- shift ctrl стрелки всегда выделяет то что нужно, не останавливаясь в бессмысленных местах
- перемещение форм местами работает через alt стрелки
- обычные штуки вроде ренейминга, перехода к определению, подсказка документации вместе с примерами по наведению отлично работают

- ну и самое главное, из-за чего я уважаю Clojure и Smalltalk несмотря на то что они динамически типизированные это конечно REPL, любую форму можно выполнить прямо в редакторе, а не в какой то отдельной косольке, это заставляет писать маленькие чистые функции, чтобы потом сразу на месте их по тестить и компоновать в большие, что очень приятно(мы люди обожаем композицию).

Выглядит это так
эмм, ват
фига, вижла на 25 мегов апдейтнулась
🤯1
Firefox скоро опустится ниже оперы впервые за 18 лет
1😁1😢1
v2 nim в мае, хайпуем
Не совсем понимаю это решение, некоторые окна на mac os полупрозрачные, но большинство нет, может все диалоговые прозрачны
- ууу, веб разрабы засрали все своими косвенными зависимостями, node_modules самый тяжелый объект во вселенной

- тем временем ios разрабы
Сегодня ВОЗ отменила статус пандемии Covid-19, поздравляю, ковид официально закончился.
никогда бы не подумал что новые классные гтк приложения еще будут писать на чистом си

https://github.com/zhrexl/ThisWeekInMyLife

https://flathub.org/apps/io.github.zhrexl.thisweekinmylife
Пасаны уже запускают модельки на телефонах.
Нас однозначно ждет будущее где в каждом чайнике будет узкоспециализированная модель.

https://github.com/ggerganov/llama.cpp/issues/58#issuecomment-1466732993

Статья топ: https://habr.com/ru/articles/733702/
👍1
хосспади, JB так повернуты на джаве что компилируют ее даже в MD файлах, а что если мне нужно сделать пример без public static main System.out.print??
Текущее состояние моделей отсортированных по хорошести
https://paperswithcode.com/sota/multi-task-language-understanding-on-mmlu
Очень быстрый гайд по написанию фронтенда языка, пишем лексер(токенайзер), он нужен чтобы превращать неразборчивую писанину в цепочки токенов, типа
s_aS =
0.3432345f
в
[Identifier Equel Float]

Чтобы потом с ними можно было удобнее работать, сохраняем в токенах номер строки и начальную позицию токена, чтобы выдавать юзверам адекватные ошибки

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

Нам понадобится набор базовых функций
1) step — поглащает следующие n символов, то есть
ab^cde
^ - курсор

step(2) вернет cd
abcd^e

2) peek — как step но не поглащает, нужна чтобы проверять что там впереди
ab^cde, peek(2) -> cd, ab^cde

3) check(str: string, distance: int): bool — хелпер чтоб проверять что в переди то что мы ожидаем, использует peek

4) match — ровно тоже самое что check, но поглащает строку
^if(sas)
match("if") -> true, if^(sas)

Воот, это база, следующий выпуск завтра
(((
Ой, кодек не найден, какая жалось, а мы как раз знаем одно место где его можно скачать, заплатите денюжку, стандартному модерн виндувс плееру, встроить по дефолту? ну нееее, так дела не делаются
Гугл забавно измеряет размеры коммитов
This media is not supported in your browser
VIEW IN TELEGRAM
😁1