Я и так печатаю быстрее, чем думаю в большинстве случаев. А часть остальных случаев покрывает автодополнение ИИ. Он во многих простых вещах, которые повторяются, предлагает именно то, что я собирался написать сам, так что мне только остаётся нажать Tab.
Ни разу не было мысли освоить 10-пальцевый метод. Могу печатать по-русски даже без размеченной кириллицы на клавиатуре ноутбука. Если не смотреть на клавиатуру, тоже могу печатать, но поначалу с ошибками - каждый раз нужно время, чтобы приспособиться.
Ну и на телефоне этот метод всё равно не подойдёт, а именно тут было бы актуальнее делать меньше опечаток, так как исправлять их сложнее.
Только что залил: https://github.com/devoln/nocker Ещё не тестировал на самом Андроиде, и chroot-вариант тоже не особо тестировал. Пока разрабатываю, тестирую только в Ubuntu 24.04. chroot пока менее функционален, так как там не работает переназначение портов. Буду тестировать на Android, когда реализую build хотя бы на уровне, достаточном, чтобы поднять мою несложную хоум-лабу.
Я тоже пишу свой аналог Docker, только без неймспейсов и cgroups, чтобы его можно было запускать на рутованных (chroot + overlayfs) и нерутованных (proot + аналог vfs) смартфонах. Возможно, добавлю опциональную поддержку cgroups, если удастся заставить их работать на моём смартфоне - они вроде есть, но в каком-то урезанном виде.
Мой проект называется nocker. Наверное на этой неделе залью на GitHub. Написан на чистом POSIX shell с минимальными зависимостями (wget, jq). Реализовал pull, run, start, exec, ps, rm, inspect и ещё несколько команд. Для моих задач не хватает только build и compose.
Уже получилось 1500 строк кода. Странно как у bocker с близким функционалом получилось уложиться всего в 120 строк. Надо поподробнее изучить его код и сравнить с моим.
Вкладки можно и в стандартном терминале использовать. Так и не понял, зачем iTerm2 нужен.
А что у него с потреблением ресурсов? А то я как-то раз заметил, что стандартный терминал у меня сожрал 6.5 ГБ оперативки. Причём, они не освободились даже после закрытия всех окон. Пришлось завершать процесс. Как терминал, рисующий только текст, может жрать столько памяти?! Думаю, даже видео со всей историей прокрутки весило бы меньше.
На тиньке котировки только с 2018 года, причём до июля 2018 они некорректные. А в последние годы там мешаются свечи внебиржевых торгов. Я замучился всё это обходить и исправлять.
Ну в вашем случае наверное батчинг - капля в море в сравнении с хотя бы видеопотоками. У вас видимо железо в 50 раз мощнее, чем у нас было - i.MX6 Solo - 1 ядро 800 МГц вроде и слабый GPU. Разрешение 1920x720 для него вроде считается слишком высоким. Но тем не менее, под него удалось оптимизировать, но пришлось выкинуть большинство элементов Qt Quick, заменив их своими оптимизированными велосипедами. А потом вообще выкинул Qt, потому что то, что от него реально использовалось, было легко на OpenGL ES реализовать, а своё решение гибче. Да и в моём случае видимо дело было в тяжёлых шейдерах и высоком overdraw, с которыми был реализован тот тормозной элемент. Ну и JS в Qt Quick для такого процессора всё-таки тяжеловат по сравнению с C++.
Я как-то писал приложение для приборной панели автобуса. Забыл, как называется элемент - типа кругового прогрессбара для спидометра. Вот встроенный в Qt тормозил ужасно. Из-за него FPS падал до 5 кадров в секунду. Я написал свой, который прямую полоску на вершинном шейдере скручивал. Получил 30 кадров в секунду.
Ещё там батчинг не очень эффективный. Когда в итоге переписал приложение на свой движок на C++/OpenGL, получил 60 FPS.
У меня есть пет-проекты, которые я годами делаю. Это всякие библиотеки, которые облегчают программирование и есть даже проект уникального языка программирования, правда только на стадии спеки.
В последнее время их забросил, делаю другие проекты, которые можно монетизировать. Один из них вообще не требует маркетинга, а второй - для широкой аудитории - если 10000 человек будут пользоваться им раз в год, уже миллионы заработать можно ежегодно. При этом прямых конкурентов я не смог найти, хотя подозреваю, что они есть, просто ещё не раскрутились.
А когда разбогатею, смогу заниматься своими библиотеками и языком программирования фултайм.
Я запустил на ноуте с 3070 Ti 8 GB. Flux schnell в Q5 давал картинку за полминуты, dev за 3 минуты. С Hyper8 step LoRA за 1 минуту. За день бесплатно нагенерировал сотни картинок. Можно было ещё и на ночь поставить, но решил дать ноуту время остыть.
Далеко не во все современные роутеры можно флешку вставить. Я пару лет назад искал себе роутер WiFi 6, среди них очень мало вариантов с USB-портами, причём с ними только большие и дорогие роутеры, в разы дороже WiFi 6 роутеров без USB. При этом есть очень много больших и мощных роутеров по хорошей, но опять же без USB-портов. В итоге я забил и сижу со старым WiFi 5 роутером.
Зато с WiFi 5 дешёвых роутеров с USB полно. У меня такой есть, но там почему-то самба часто отваливается и приходится перезагружать сервис, чтобы к ней можно было подключиться снова. Это почти всегда происходит, когда копируешь много мелких файлов. А ещё прерывалось копирование больших файлов на шару. В итоге завёл себе мини-ПК, который включён круглосуточно и раздаёт файлы по самбе, где она не отваливается. Ну и другие сервисы заодно на нём захостил.
Кажется, я потом выяснил, что с большими файлами самба отваливается на ФС FAT32 и exFAT, из-за отсутствия sparse-файлов. Видимо срабатывал какой-то таймаут из-за долгого резервирования места на диске до начала приёма данных. NTFS на роутере тормозной, а ext4 флешку на винде и маке напрямую не прочитать при необходимости.
Тоже попробовал Siyuan. Судя по всему, никак, только через браузер на сервер заходить можно. Но можно установить как PWA приложение. Соответственно, будет работать только онлайн. Синхронизация возможна только в платной версии, насколько я понимаю.
Все эти теории симуляции имеют большую проблему - они не объясняют, откуда взялась самая первая реальность, в которую вложены все остальные. Это как математическая индукция, не имеющая смысла без первого шага. Или как традиционные религии, которые говорят, что нас создал Бог, а он был всегда - не объясняется, откуда он взялся. И Бог, и первая реальность - слишком сложные сущности. Предполагать их наличие с точки зрения бритвы Оккама - не лучшая идея.
Поэтому предлагаю предположить наличие только законов логики и следующей из них математики. Далее любым математическим способом генерируем бесконечную непериодическую числовую последовательность, функцию или множество (число 'пи", отрицание пустого множества или ещё что-то). В такой последовательности можно найти всё что угодно. Там найдётся и текст романа 'Война и мир", и алгоритм для вычисления Вселенной, и вычисленные значения всех параметров всех частиц во все моменты времени. Также математика описывает вычислительные машины, например машину Тьюринга, которая может эти алгоритмы выполнять.
Нет никакой разницы, существуют ли компьютеры, симулирующие вселенные, в каком-либо материальном мире, или же они существуют как абстрактное математическое описание. Если есть алгоритм, который вычисляет вселенную, в которой зародилась разумная жизнь, то эта жизнь существует и наблюдает вселенную вокруг себя - работает антропный принцип.
Итак, мы пришли к тому, что в нашей бесконечной последовательности закодировано бесконечное количество замкнутых (мульти)вселенных, которые существуют на самом деле (даже если мы никогда не сможем их увидеть) и в некоторых из них срабатывает антропный принцип. Эти вселенные могут даже повторяться и чем короче математическое описание вселенной, тем они чаще встречаются в этой последовательности. А чем больше одинаковых вселенных, тем больше вероятность, что мы живём в такой вселенной.
Получается, у нас сама собой возникла задача оптимизации из двух критериев. Мы вероятно живём во вселенной, которая:
Имеет как можно более короткое математическое описание: простой алгоритм с простыми физическими законами, простейшее начальное состояние. Бесконечно малая точка с бесконечно большой энергией - это же проще, чем существование Бога с самого начала!
Допускает хотя бы однократное зарождение, развитие и широкое размножение разумной жизни. Пусть физические законы и простые, но они позволяют материи самоорганизоваться и образовать жизнь. Ну и загадочная для физиков асимметрия материи и антиматерии оказалась в нашей Вселенной как раз по этой причине.
Получается, наша Вселенная, вероятно, является чем-то вроде 4К intro - оптимизированной до малого размера (4 КБ) демкой, генерирующей и рисующей сложные относительно своего размера миры.
При этом не исключается существование сложных вселенных с жизнью, в том числе вложенных. Просто они либо принципиально не отличаются от нашей (Симулятор в них не вмешивается и выбраться из них невозможно), либо гораздо сложнее и их очень мало, что делает нашу жизнь в ней маловероятной.
Ведь любое вмешательство Симулятора усложнило бы математическое описание на порядки, сделав вселенную незамкнутой и добавив кучу данных, описывающих каждое вмешательство, которое не подчиняется законам физики.
В качестве аналогии из демосцены, можно представить, как дизайнер добавляет в игру kkrieger (размером 95 КБ) нарисованную текстуру или фотографию, которая весит в разы больше целой игры, где все остальные текстуры сгенерированы алгоритмами. Игра вместе с такой текстурой станет в разы больше и меньше её копий влезут на жёсткий диск, чем без этой текстуры. А на разнообразие геймплея (аналогично количеству наблюдателей вселенной) это особо не повлияет.
Вот я по верхам рассказал о своей теории. Дайте знать, если интересно, может быть напишу здесь статью. У меня там ещё есть ответ на вопрос о смысле жизни и секретах успеха, но пока ещё не подтверждённых мной на практике - работаю над этим.
Пробовал с двумя хабами, один из них похож на ваш, и с поправкой на инфляцию наверное столько же и стоил. С ноутами и макбуками всё отлично работает, с OnePlus 12 тоже. А с 7 Pro и более старыми смартфонами нет.
Ну и на 4pda мне объясняли, что это именно ограничение телефона. Причём вроде писали, что если установить на 7 Pro Windows 11, там всё будет работать, но я не стал пробовать - говорят смарт в печку превращается на винде. Видимо в драйвере в ядре Linux под Android ограничение.
Вопрос в том, работал ли он при этом от сети или от батареи? Сервер от батареи ведь долго не проработает. У всех моих предыдущих смартов если подключить хаб с PD, он заряжается, пока в USB порт ничего не вставишь. А как вставишь, либо отваливалась зарядка, либо не работало USB устройство, пока не вытащишь зарядку. И только OnePlus 12 смог и то и другое одновременно.
Я нечто подобное пробовал, но тот смарт был мало интересен в качестве сервера - мало памяти, а карточку вставить нельзя. Но недавно поменял телефон и освободился мощный OnePlus 7 Pro. Когда дойдут руки, попробую из него сделать сервер.
Для докера недостаточно получить рут. Надо ещё и включить фичи ядра типа cgroups, namespaces и вроде что-то ещё. Как минимум для этого нужно указать параметры ядра при загрузке, а возможно, ещё и само ядро пересобрать. А для последнего нужны исходники.
Но можно и без докера много всего сделать. Например в большинстве случаев можно посмотреть, как работает Dockerfile и поднять сервис напрямую по аналогии - но это дополнительные усилия.
Ну и нужно учесть, что телефон наверняка будет душить производительность процессора и WiFi при выключенном экране. Для всех телефонов это индивидуально и обходится по-разному. Надо разбираться как.
Ещё большинство устройств не поддерживают одновременно OTG и зарядку, в итоге к ним нельзя подключить внешние диски на постоянной основе. И сеть только через Wifi, а не Ethernet.
Я заметил, что мой OnePlus 12 поддерживает OTG с зарядкой, так что у него классный потенциал, но вряд ли он скоро освободится для целей сервера)
Я и так печатаю быстрее, чем думаю в большинстве случаев. А часть остальных случаев покрывает автодополнение ИИ. Он во многих простых вещах, которые повторяются, предлагает именно то, что я собирался написать сам, так что мне только остаётся нажать Tab.
Ни разу не было мысли освоить 10-пальцевый метод. Могу печатать по-русски даже без размеченной кириллицы на клавиатуре ноутбука. Если не смотреть на клавиатуру, тоже могу печатать, но поначалу с ошибками - каждый раз нужно время, чтобы приспособиться.
Ну и на телефоне этот метод всё равно не подойдёт, а именно тут было бы актуальнее делать меньше опечаток, так как исправлять их сложнее.
Только что залил: https://github.com/devoln/nocker
Ещё не тестировал на самом Андроиде, и chroot-вариант тоже не особо тестировал. Пока разрабатываю, тестирую только в Ubuntu 24.04. chroot пока менее функционален, так как там не работает переназначение портов.
Буду тестировать на Android, когда реализую build хотя бы на уровне, достаточном, чтобы поднять мою несложную хоум-лабу.
Кнопка по-русски называется не "Причина", а "Обоснуй".
Я тоже пишу свой аналог Docker, только без неймспейсов и cgroups, чтобы его можно было запускать на рутованных (chroot + overlayfs) и нерутованных (proot + аналог vfs) смартфонах. Возможно, добавлю опциональную поддержку cgroups, если удастся заставить их работать на моём смартфоне - они вроде есть, но в каком-то урезанном виде.
Мой проект называется nocker. Наверное на этой неделе залью на GitHub. Написан на чистом POSIX shell с минимальными зависимостями (wget, jq). Реализовал pull, run, start, exec, ps, rm, inspect и ещё несколько команд. Для моих задач не хватает только build и compose.
Уже получилось 1500 строк кода. Странно как у bocker с близким функционалом получилось уложиться всего в 120 строк. Надо поподробнее изучить его код и сравнить с моим.
Вкладки можно и в стандартном терминале использовать. Так и не понял, зачем iTerm2 нужен.
А что у него с потреблением ресурсов? А то я как-то раз заметил, что стандартный терминал у меня сожрал 6.5 ГБ оперативки. Причём, они не освободились даже после закрытия всех окон. Пришлось завершать процесс. Как терминал, рисующий только текст, может жрать столько памяти?! Думаю, даже видео со всей историей прокрутки весило бы меньше.
На тиньке котировки только с 2018 года, причём до июля 2018 они некорректные. А в последние годы там мешаются свечи внебиржевых торгов. Я замучился всё это обходить и исправлять.
Ну в вашем случае наверное батчинг - капля в море в сравнении с хотя бы видеопотоками. У вас видимо железо в 50 раз мощнее, чем у нас было - i.MX6 Solo - 1 ядро 800 МГц вроде и слабый GPU. Разрешение 1920x720 для него вроде считается слишком высоким. Но тем не менее, под него удалось оптимизировать, но пришлось выкинуть большинство элементов Qt Quick, заменив их своими оптимизированными велосипедами. А потом вообще выкинул Qt, потому что то, что от него реально использовалось, было легко на OpenGL ES реализовать, а своё решение гибче. Да и в моём случае видимо дело было в тяжёлых шейдерах и высоком overdraw, с которыми был реализован тот тормозной элемент. Ну и JS в Qt Quick для такого процессора всё-таки тяжеловат по сравнению с C++.
Я как-то писал приложение для приборной панели автобуса. Забыл, как называется элемент - типа кругового прогрессбара для спидометра. Вот встроенный в Qt тормозил ужасно. Из-за него FPS падал до 5 кадров в секунду. Я написал свой, который прямую полоску на вершинном шейдере скручивал. Получил 30 кадров в секунду.
Ещё там батчинг не очень эффективный. Когда в итоге переписал приложение на свой движок на C++/OpenGL, получил 60 FPS.
Спасибо за статью! К сожалению, ссылка на Colab не работает. Нет доступа.
И как, бот в 770 строчек зарабатывает?
У меня есть пет-проекты, которые я годами делаю. Это всякие библиотеки, которые облегчают программирование и есть даже проект уникального языка программирования, правда только на стадии спеки.
В последнее время их забросил, делаю другие проекты, которые можно монетизировать. Один из них вообще не требует маркетинга, а второй - для широкой аудитории - если 10000 человек будут пользоваться им раз в год, уже миллионы заработать можно ежегодно. При этом прямых конкурентов я не смог найти, хотя подозреваю, что они есть, просто ещё не раскрутились.
А когда разбогатею, смогу заниматься своими библиотеками и языком программирования фултайм.
Я запустил на ноуте с 3070 Ti 8 GB. Flux schnell в Q5 давал картинку за полминуты, dev за 3 минуты. С Hyper8 step LoRA за 1 минуту. За день бесплатно нагенерировал сотни картинок. Можно было ещё и на ночь поставить, но решил дать ноуту время остыть.
Далеко не во все современные роутеры можно флешку вставить. Я пару лет назад искал себе роутер WiFi 6, среди них очень мало вариантов с USB-портами, причём с ними только большие и дорогие роутеры, в разы дороже WiFi 6 роутеров без USB. При этом есть очень много больших и мощных роутеров по хорошей, но опять же без USB-портов. В итоге я забил и сижу со старым WiFi 5 роутером.
Зато с WiFi 5 дешёвых роутеров с USB полно. У меня такой есть, но там почему-то самба часто отваливается и приходится перезагружать сервис, чтобы к ней можно было подключиться снова. Это почти всегда происходит, когда копируешь много мелких файлов. А ещё прерывалось копирование больших файлов на шару. В итоге завёл себе мини-ПК, который включён круглосуточно и раздаёт файлы по самбе, где она не отваливается. Ну и другие сервисы заодно на нём захостил.
Кажется, я потом выяснил, что с большими файлами самба отваливается на ФС FAT32 и exFAT, из-за отсутствия sparse-файлов. Видимо срабатывал какой-то таймаут из-за долгого резервирования места на диске до начала приёма данных. NTFS на роутере тормозной, а ext4 флешку на винде и маке напрямую не прочитать при необходимости.
Тоже попробовал Siyuan. Судя по всему, никак, только через браузер на сервер заходить можно. Но можно установить как PWA приложение. Соответственно, будет работать только онлайн. Синхронизация возможна только в платной версии, насколько я понимаю.
Все эти теории симуляции имеют большую проблему - они не объясняют, откуда взялась самая первая реальность, в которую вложены все остальные. Это как математическая индукция, не имеющая смысла без первого шага. Или как традиционные религии, которые говорят, что нас создал Бог, а он был всегда - не объясняется, откуда он взялся. И Бог, и первая реальность - слишком сложные сущности. Предполагать их наличие с точки зрения бритвы Оккама - не лучшая идея.
Поэтому предлагаю предположить наличие только законов логики и следующей из них математики. Далее любым математическим способом генерируем бесконечную непериодическую числовую последовательность, функцию или множество (число 'пи", отрицание пустого множества или ещё что-то). В такой последовательности можно найти всё что угодно. Там найдётся и текст романа 'Война и мир", и алгоритм для вычисления Вселенной, и вычисленные значения всех параметров всех частиц во все моменты времени. Также математика описывает вычислительные машины, например машину Тьюринга, которая может эти алгоритмы выполнять.
Нет никакой разницы, существуют ли компьютеры, симулирующие вселенные, в каком-либо материальном мире, или же они существуют как абстрактное математическое описание. Если есть алгоритм, который вычисляет вселенную, в которой зародилась разумная жизнь, то эта жизнь существует и наблюдает вселенную вокруг себя - работает антропный принцип.
Итак, мы пришли к тому, что в нашей бесконечной последовательности закодировано бесконечное количество замкнутых (мульти)вселенных, которые существуют на самом деле (даже если мы никогда не сможем их увидеть) и в некоторых из них срабатывает антропный принцип. Эти вселенные могут даже повторяться и чем короче математическое описание вселенной, тем они чаще встречаются в этой последовательности. А чем больше одинаковых вселенных, тем больше вероятность, что мы живём в такой вселенной.
Получается, у нас сама собой возникла задача оптимизации из двух критериев. Мы вероятно живём во вселенной, которая:
Имеет как можно более короткое математическое описание: простой алгоритм с простыми физическими законами, простейшее начальное состояние. Бесконечно малая точка с бесконечно большой энергией - это же проще, чем существование Бога с самого начала!
Допускает хотя бы однократное зарождение, развитие и широкое размножение разумной жизни. Пусть физические законы и простые, но они позволяют материи самоорганизоваться и образовать жизнь. Ну и загадочная для физиков асимметрия материи и антиматерии оказалась в нашей Вселенной как раз по этой причине.
Получается, наша Вселенная, вероятно, является чем-то вроде 4К intro - оптимизированной до малого размера (4 КБ) демкой, генерирующей и рисующей сложные относительно своего размера миры.
При этом не исключается существование сложных вселенных с жизнью, в том числе вложенных. Просто они либо принципиально не отличаются от нашей (Симулятор в них не вмешивается и выбраться из них невозможно), либо гораздо сложнее и их очень мало, что делает нашу жизнь в ней маловероятной.
Ведь любое вмешательство Симулятора усложнило бы математическое описание на порядки, сделав вселенную незамкнутой и добавив кучу данных, описывающих каждое вмешательство, которое не подчиняется законам физики.
В качестве аналогии из демосцены, можно представить, как дизайнер добавляет в игру kkrieger (размером 95 КБ) нарисованную текстуру или фотографию, которая весит в разы больше целой игры, где все остальные текстуры сгенерированы алгоритмами. Игра вместе с такой текстурой станет в разы больше и меньше её копий влезут на жёсткий диск, чем без этой текстуры. А на разнообразие геймплея (аналогично количеству наблюдателей вселенной) это особо не повлияет.
Вот я по верхам рассказал о своей теории. Дайте знать, если интересно, может быть напишу здесь статью. У меня там ещё есть ответ на вопрос о смысле жизни и секретах успеха, но пока ещё не подтверждённых мной на практике - работаю над этим.
Можно обойтись без макросов, если задействовать std::source_location. Например, мой самодельный логгер в моём проекте вызывается так:
Log().Error("строка форматирования {}", 42);
Выводит имя файла, номер строки и имя функции, время и отформатированный текст - всё красным цветом.
Пробовал с двумя хабами, один из них похож на ваш, и с поправкой на инфляцию наверное столько же и стоил. С ноутами и макбуками всё отлично работает, с OnePlus 12 тоже. А с 7 Pro и более старыми смартфонами нет.
Ну и на 4pda мне объясняли, что это именно ограничение телефона. Причём вроде писали, что если установить на 7 Pro Windows 11, там всё будет работать, но я не стал пробовать - говорят смарт в печку превращается на винде. Видимо в драйвере в ядре Linux под Android ограничение.
И чего? Podman тоже требует cgroups и namespaces.
Вопрос в том, работал ли он при этом от сети или от батареи? Сервер от батареи ведь долго не проработает. У всех моих предыдущих смартов если подключить хаб с PD, он заряжается, пока в USB порт ничего не вставишь. А как вставишь, либо отваливалась зарядка, либо не работало USB устройство, пока не вытащишь зарядку. И только OnePlus 12 смог и то и другое одновременно.
Я нечто подобное пробовал, но тот смарт был мало интересен в качестве сервера - мало памяти, а карточку вставить нельзя. Но недавно поменял телефон и освободился мощный OnePlus 7 Pro. Когда дойдут руки, попробую из него сделать сервер.
Для докера недостаточно получить рут. Надо ещё и включить фичи ядра типа cgroups, namespaces и вроде что-то ещё. Как минимум для этого нужно указать параметры ядра при загрузке, а возможно, ещё и само ядро пересобрать. А для последнего нужны исходники.
Но можно и без докера много всего сделать. Например в большинстве случаев можно посмотреть, как работает Dockerfile и поднять сервис напрямую по аналогии - но это дополнительные усилия.
Ну и нужно учесть, что телефон наверняка будет душить производительность процессора и WiFi при выключенном экране. Для всех телефонов это индивидуально и обходится по-разному. Надо разбираться как.
Ещё большинство устройств не поддерживают одновременно OTG и зарядку, в итоге к ним нельзя подключить внешние диски на постоянной основе. И сеть только через Wifi, а не Ethernet.
Я заметил, что мой OnePlus 12 поддерживает OTG с зарядкой, так что у него классный потенциал, но вряд ли он скоро освободится для целей сервера)