Forwarded from BuYn Max
Блин! Имакс оказывается звуки умеет проигрывать!
(play-sound-file "/path/to/sound.mid")) ; Replace with the path to your audio file
Я всегда до это запускал асинхроно aplay или mpv чтоб подать звук. Оказывается имакс и сам умеет.
Понимает и wav и midi.
(play-sound-file "/path/to/sound.mid")) ; Replace with the path to your audio file
Я всегда до это запускал асинхроно aplay или mpv чтоб подать звук. Оказывается имакс и сам умеет.
Понимает и wav и midi.
Forwarded from Open Source
This media is not supported in your browser
VIEW IN TELEGRAM
Snoop
Snoop один из самых перспективных OSINT-инструментов по поиску никнеймов
▫️Он обеспечивает выслеживание nickname на 3000 интернет-ресурсах
▫️Подготовлены сборки для OS GNU/Linux, Windows и Termux (Android)
▫️Программа поддерживает загрузку nickname из файла и добавляет промежуточную таблицу в cli-отчет
▫️Дополнительный функционал включает различные OSINT плагины
https://github.com/snooppr/snoop
Snoop один из самых перспективных OSINT-инструментов по поиску никнеймов
▫️Он обеспечивает выслеживание nickname на 3000 интернет-ресурсах
▫️Подготовлены сборки для OS GNU/Linux, Windows и Termux (Android)
▫️Программа поддерживает загрузку nickname из файла и добавляет промежуточную таблицу в cli-отчет
▫️Дополнительный функционал включает различные OSINT плагины
https://github.com/snooppr/snoop
Forwarded from cat sandwitch.dev
#ghc
Наверное самый мой крупный контрибьюшен на текущий момент времени. Полностью переписал разрешение имён для типовых паттернов и частично - проверку типов для них же. Вкрации:
Такой синтаксис есть, ему уже 3 года, но "работает" он только в позиции аргумента у тайп конструктора. Вероятно дальше мне придётся реализовывать его и для обычных паттернов, но это уже совсем другая история. В чём была проблема? 3 года назад эти паттерны были сделаны под идейным руководством Джона Эриксона, а потому до моего патча было запрещено... ну примерно всё запрещено:
И самое интересное - сделано это было на коленке, отдельными валидациями с нехитрыми эвристиками, когда звонить в колокол. В итоге мне пришлось полностью переписывать код, ответственный за это дело и изобретать инфраструктуру, правильным образом собирающую переменные с паттернов. Зато теперь
- TH сплайсы работают
- Нормальный скоупинг тайп/каинд сигнатур работает
- Шедоувинг типовых переменных работает, варнинги о шедоувинге тоже работают
- Линты о конфликтующих определениях работают
А всего-то и надо было - сделать по-человечески, как уже было сделано до этого на уровне термов. Это была моя прямая задача, но я на этом не остановился и дальше, за счёт заведения, пошёл править проверку типов у типовых паттернов. Проверка типов (те самые три года назад) была успешно реализована путём того, что типовые паттерны проверялись точно таким же образом, как и сигнатуры паттернов. Это до какого-то момента работало, а потом всё разваливалось. Представим такой код:
Чё тут происходит: у нас
Это то, как типизация должна работать. Но для этого нам надо чтобы у
Вот такое поведение мне пришлось исправить, добавив отдельный путь кода для простых типовых паттернов, которые состоят либо из одной типовой переменной, либо из типовой переменной с каинд сигнатурой.
https://gitlab.haskell.org/ghc/ghc/-/merge_requests/10725
Наверное самый мой крупный контрибьюшен на текущий момент времени. Полностью переписал разрешение имён для типовых паттернов и частично - проверку типов для них же. Вкрации:
f (Proxy @a) = ... -- @a ето типовой паттерн.
Такой синтаксис есть, ему уже 3 года, но "работает" он только в позиции аргумента у тайп конструктора. Вероятно дальше мне придётся реализовывать его и для обычных паттернов, но это уже совсем другая история. В чём была проблема? 3 года назад эти паттерны были сделаны под идейным руководством Джона Эриксона, а потому до моего патча было запрещено... ну примерно всё запрещено:
f1 :: forall a . Proxy a -> ...
f1 (Proxy @a) = ... -- неа, @a уже в скоупе
f2 (Proxy @a) = \(Proxy @a) -> ... -- неа
f3 (Proxy @(b :: (a, a))) = ... -- неа
f4 (Proxy @a) (Proxy @(b :: a)) = ... -- опять неа
f5 (Proxy @($(TH.varT (TH.mkName "t")))) = ... -- лол)))
И самое интересное - сделано это было на коленке, отдельными валидациями с нехитрыми эвристиками, когда звонить в колокол. В итоге мне пришлось полностью переписывать код, ответственный за это дело и изобретать инфраструктуру, правильным образом собирающую переменные с паттернов. Зато теперь
- TH сплайсы работают
- Нормальный скоупинг тайп/каинд сигнатур работает
- Шедоувинг типовых переменных работает, варнинги о шедоувинге тоже работают
- Линты о конфликтующих определениях работают
А всего-то и надо было - сделать по-человечески, как уже было сделано до этого на уровне термов. Это была моя прямая задача, но я на этом не остановился и дальше, за счёт заведения, пошёл править проверку типов у типовых паттернов. Проверка типов (те самые три года назад) была успешно реализована путём того, что типовые паттерны проверялись точно таким же образом, как и сигнатуры паттернов. Это до какого-то момента работало, а потом всё разваливалось. Представим такой код:
data T where
MkT :: forall (f :: forall k. k -> Type).
f Int -> f Maybe -> T
k :: T -> ()
k (MkT @f (x :: f Int) (y :: f Maybe)) = ()
Чё тут происходит: у нас
f с полиморфным каиндом forall k. k -> Type. В первом использовании f Int типовая переменная k инстанцируется в каинд от Int, то есть Type и полная сигнатура f в этом использовании становится Type -> Type. Дальше мы находим второе использование f, а именно - f Maybe. Тут у нас при имеющихся вводных по всем правилам типизации в Хаскеле с нуля начинается инстанцирование уже другой переменной k в каинд от Maybe - Type -> Type. То есть во втором использовании каинд f должен быть (Type -> Type) -> Type. Это то, как типизация должна работать. Но для этого нам надо чтобы у
f был полиморфный каинд, т.е. имеющий forall k. - но так нельзя сделать, если мы относимся к f как к сигнатуре паттерна. Поэтому до моего патча этой самой f назначался каинд k -> Type, т.е. из какой-то k в Type. Дальше была проверка первого использования, где k сравнивалась с каиндом у Int - Type и GHC видел что ранее у k нет никаких ограничений лихо проводил равенство между k и Type. Второе использование уже пыталось сопоставить каинд Maybe - Type -> Type с k, имея в контексте информацию, что k равен Type. Type -> Type не равен Type, код идёт нахер, завершаем проверку типов.Вот такое поведение мне пришлось исправить, добавив отдельный путь кода для простых типовых паттернов, которые состоят либо из одной типовой переменной, либо из типовой переменной с каинд сигнатурой.
https://gitlab.haskell.org/ghc/ghc/-/merge_requests/10725
GitLab
!10725: Draft: Type patterns (#22478, #18986) · Merge requests · Glasgow Haskell Compiler / GHC · GitLab
Improved name resolution and type checking of type patterns in constructors: HsTyPat: a new dedicated data type that represents type patterns in...
Forwarded from Open Source
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from Andrey
GitLab
Andrey Listopadov / infinite.el · GitLab
Forwarded from AbstractDL
ChatGPT Fails on Simple Questions (by Skoltech & Me)
Есть такой старенький бенчмарк с простыми вопросами по википедии (так и называется Simple Questions), и, оказывается, ChatGPT с ним справляется очень плохо, даже хуже, чем GPT-3. А лучший результат вообще достигается решением с эмбеддингами графов знаний (BERT + PTBG).
Похоже, всё дело в том, что RLHF вынуждает модель отказываться от ответа, если она в нём не уверена. А GPT-3 просто тычет пальцем в небо и часто угадывает.
Статья, GitHub
Есть такой старенький бенчмарк с простыми вопросами по википедии (так и называется Simple Questions), и, оказывается, ChatGPT с ним справляется очень плохо, даже хуже, чем GPT-3. А лучший результат вообще достигается решением с эмбеддингами графов знаний (BERT + PTBG).
Похоже, всё дело в том, что RLHF вынуждает модель отказываться от ответа, если она в нём не уверена. А GPT-3 просто тычет пальцем в небо и часто угадывает.
Статья, GitHub
Forwarded from AI для Всех
🦙 Llama-2
Это очень важно: вышла Llama-v2 у которой открытый исходный код и лицензия, разрешающая коммерческое использование!
Это изменит ландшафт рынка LLM.
Llama-v2 доступна на Microsoft Azure и будет доступна на AWS, Hugging Face и других провайдерах.
Доступны предварительно обученные и зафайнтюненые модели с параметрами 7B, 13B и 70B.
Сайт Llama-2
Документ Llama-2
Это очень важно: вышла Llama-v2 у которой открытый исходный код и лицензия, разрешающая коммерческое использование!
Это изменит ландшафт рынка LLM.
Llama-v2 доступна на Microsoft Azure и будет доступна на AWS, Hugging Face и других провайдерах.
Доступны предварительно обученные и зафайнтюненые модели с параметрами 7B, 13B и 70B.
Сайт Llama-2
Документ Llama-2
Forwarded from Senior Python Developer
Дано целое число, преобразовать его в римскую цифру.
В этом решении мы создаем метод intToRoman, который принимает целое число в качестве аргумента и возвращает его римское представление в виде строки.
Метод использует жадный алгоритм для поиска наибольшего римского числа, которое может быть вычтено из входного числа. Затем он вычитает это число и добавляет соответствующее римское число к результату.
Этот процесс повторяется до тех пор, пока входное число не станет равным нулю.
#разбор_кода
В этом решении мы создаем метод intToRoman, который принимает целое число в качестве аргумента и возвращает его римское представление в виде строки.
Метод использует жадный алгоритм для поиска наибольшего римского числа, которое может быть вычтено из входного числа. Затем он вычитает это число и добавляет соответствующее римское число к результату.
Этот процесс повторяется до тех пор, пока входное число не станет равным нулю.
#разбор_кода
Forwarded from Open Source
ZboxFS
ZboxFS — это файловая система, ориентированная на конфиденциальность и предназначенная для безопасного хранения файлов приложения.
☝🏻Цель ZboxFS — помочь приложениям безопасно, конфиденциально и надежно хранить файлы. Он встраивается в ваше приложение и предоставляет зашифрованную виртуальную файловую систему.
ZboxFS инкапсулирует файлы и каталоги в зашифрованное хранилище, предоставляя виртуальную файловую систему и эксклюзивный доступ для авторизованных приложений.
Он поддерживает различные базовые уровни хранения, включая память, файловую систему ОС, СУБД и хранилище объектов «ключ-значение».
ZboxFS шифрует все, включая метаданные и структуру каталогов, используя современную криптографию.
Он поддерживает дедупликацию содержимого и файлов, сжатие данных, управление версиями содержимого файлов, семантику копирования при записи и транзакционные операции ACID.
ZboxFS построен на Rust и его можно использовать на GNU/Linux, macOS, Windows и Android.
https://github.com/zboxfs/zbox
Site: https://zbox.io/fs/
Docs: https://docs.rs/zbox/latest/zbox/
ZboxFS — это файловая система, ориентированная на конфиденциальность и предназначенная для безопасного хранения файлов приложения.
☝🏻Цель ZboxFS — помочь приложениям безопасно, конфиденциально и надежно хранить файлы. Он встраивается в ваше приложение и предоставляет зашифрованную виртуальную файловую систему.
ZboxFS инкапсулирует файлы и каталоги в зашифрованное хранилище, предоставляя виртуальную файловую систему и эксклюзивный доступ для авторизованных приложений.
Он поддерживает различные базовые уровни хранения, включая память, файловую систему ОС, СУБД и хранилище объектов «ключ-значение».
ZboxFS шифрует все, включая метаданные и структуру каталогов, используя современную криптографию.
Он поддерживает дедупликацию содержимого и файлов, сжатие данных, управление версиями содержимого файлов, семантику копирования при записи и транзакционные операции ACID.
ZboxFS построен на Rust и его можно использовать на GNU/Linux, macOS, Windows и Android.
https://github.com/zboxfs/zbox
Site: https://zbox.io/fs/
Docs: https://docs.rs/zbox/latest/zbox/
Forwarded from Open Source
This media is not supported in your browser
VIEW IN TELEGRAM
Translumo
Translumo — это продвинутый переводчик экрана, который может обнаруживать и переводить текст в режиме реального времени, например, субтитры.
Он имеет высокую точность распознавания текста и использует обучающие модели машинного обучения для выбора наилучшего распознаваемого результата.
Интерфейс прост и удобен для повседневного использования.
К сожалению только для Windows🤷🏼♀️
https://github.com/Danily07/Translumo
Translumo — это продвинутый переводчик экрана, который может обнаруживать и переводить текст в режиме реального времени, например, субтитры.
Он имеет высокую точность распознавания текста и использует обучающие модели машинного обучения для выбора наилучшего распознаваемого результата.
Интерфейс прост и удобен для повседневного использования.
К сожалению только для Windows🤷🏼♀️
https://github.com/Danily07/Translumo