Cododel.dev | Александр
98 subscribers
472 photos
62 videos
7 files
200 links
Alexander Cododel. Full Stack Web Dev since 2019.

📍 Канал: мысли и проекты
📍 Чат: @cododel_chat
📍 Связь: @cododel

🔗 https://cododel.dev
Download Telegram
Учусь с помощью нейросетей
Решил провести тест на пригодность LLM в качестве инструмента для изучения программирования.

🤨 Все еще вызывает вопросы
Обычно главными проблемами являются достоверность и актуальность информации.
В случае исопльзования языковой модели в качестве наставника, как на первом скрине - эти проблемы стоят особо остро.
На втором же скрине бесплатное расширение для браузера, который выдает краткое содержание страницы, сокращаяя информацию в абзацах. Базируется он на неизвестной модели, с неизвестным промптом и мезанизмом суммаризации, что тоже вызывает некоторые вопросы.
В описании расширения конечно сказано, что импользется ChatGPT, но не известно какой версии, и все еще не понятно, каким промптом он руководствуется при сокращении текста.
А так же в описании сказано, что "исопльзовать расширение абсолютно безопасно, ведь оно работает локально", что уже звучит довольно бредово 🤫
Но оно работает, краткую сводку дает довольно неплохую.


🍴 С чего начать?
Идеально начинать с простейших задач, как в моем примере.
Я выбрал под изучение языка, написать простого демона, который сверяясь с текщим временем регулировать яркость экрана на ноутбуке будет по winapi , так как он у меня стоит всегда включенным на столе.
В случае с чатом - довольно круто выходит делать простой проект, и на практике получать знания.
При этом довольно специфичные вопросы, в конкретном контексте могут решаться с сопровождением подробными комментариями.

💻 Мастхэв для продуктивности
Краткая сводка в браузере - шикарный инструмент для беглого ознакомления с текстом, и получения важной информации.
Советую всем, кто еще не научился беглому чтению текста.
Лично мне это не очень удобно, так как уже привык читать технический текст по диагонали, глаз сам цепляется за ключевые слова и в основном пропуская воду читаю лишь нужуную в текущий момент информацию.
Но даже в таком случае штука полезная, как с руководством по асболютно новому для меня языку, нужно вникать довольно глубоко в механику его работы.
У меня сейчас нет желания так сильно погружаться, так что лучше внимательно вчитаюсь в краткую сводку, и погляжу примеры на странице, чем пропущу что-то важное, или убью несколько часов на изучение базовых знаний, которые я могу просто перенести из уже текущих знаний на других языках программирования.

upd.
НУЖНО ПОНИМАТЬ
Почти сразу столкнулся с проблемой актуальности информации.
Gemini настаивает на том, что в cargo нет команды для добавления зависимостей в проект, как у других пакетных менеджеров.
Говорит, мол все управление пакетами произваодится из файла Cargo.toml, это несоколько сложнее чем работать с командой, но дает более тонкий контроль.
Я бы конечно поверил, ведь в этом есть часть логики, но загуглив, первым же рещультатом выдачи увидел документацию по cargo add.
Даже скопировал содержимое страницы, скормил Gemini, он мне пересказал содержимое.

После чего я спрашиваю: Что теперь скажешь на счет cargo add?
В ответ получаю: Отлично, что ты задал этот вопрос! Давай разберемся подробнее, что такое cargo add и почему мы его не находим в стандартном инструментарии Rust.

Нужно понимать, что информация у языковых моделей запаздывает в среднем как минимум на год, так что лично я перепроверяю каждый ответ, который вызывает странные ощущения.
А что-то учить с нуля при помощи "AI-наставника" - идея хреновая 😃


#Rust #AI
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
WinApi мне не поддался...

Видимо не сегодня.
За два часа так и не удалось поладить с WinAPI...

В Linux было все просто:
- Читаем файл со значением максимальной яркости экрана
- Вычисляем нужное значение из желаемого процента яркости
- Пишем в файл текущей яркости получившееся значение

Всё! Готово
Я писал такие скрипты пока сидел на Arch Linux с Wayland
Там почти все утилиты у меня были на bash или python.

Я в статусбар, рядом со временем даже последнее сообщение из чата на твиче выводил. А если стрим не запущен, то скрипт просто скрывал элемент из сататус бара.

Тут же какая-то жесть творится...
Надо видимо прям сначала изучать вопрос того, как в winapi этот процесс устроен
Затем понять как с этим вообще работают
И только после этого пробовать как-то зацепиться из rust

Иначе мой максимум возможностей - просто выводить текщее время суток, замэтчив время со значениями Enum 😅

Если кто знаком с WinAPI - хотел бы пообщаться 😃

Но я нашел brightness с поддержкой windows и linux, буду пробовать.
А еще у меня возник вопрос "Как это работает в MacOS?", так как не нашел того же мехнизма, что у Linux 😐


#Rust #WinAPI
Please open Telegram to view this post
VIEW IN TELEGRAM
Cododel.dev | Александр
WinApi мне не поддался... Видимо не сегодня. За два часа так и не удалось поладить с WinAPI... В Linux было все просто: - Читаем файл со значением максимальной яркости экрана - Вычисляем нужное значение из желаемого процента яркости - Пишем в файл текущей…
Получилось. Rust теперь буду дальше медленно внедрять в работу, где это эффективно.

Потребляет всего 0.7MB оперативной памяти. Ни одна программа на Lua, Python, NodeJS, PHP и даже C# не достигала таких результатов ✈️

В бесконечном цикле, раз в 10 секунд проверяет текущее время.
Берет текущий час в виде числа, и возвращает значение процентов яркости, в соответствии с диапазонами.
Если предыдущее значение яркости отсутствует (При первом запуске) или не изменилось - цикл начинается сначала.
Если значение яркости изменилось - оно устанавливается в системе и цикл начинается сначала.

А так же настроил Github Actions.
При публикации нового релиза - автоматически начинается сборка проекта под Windows и Linux, после чего прикрепляется к релизу в виде архива.

Логика вроде простая, но когда ты полный ноль - это уже успех)
Мой подход заключается в том, чтобы придумать максимально простую, но интересную задачу с реальным применением.

Ну а результат можно глянуть тут:
🖼️ Репозиторий
🍴 Скачать и попробовать

Так же у вас есть возможность принять участие и исправить баг в комментариях


#Rust #OpenSource
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Баг был вообще не связан со спецификой языка

Никто не решился попробовать разобраться с ним, так что я сам сейчас глянул, вот делюсь 😉

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

Лаконичным решением тут будет инвертировать логику условия, и обернуть наше целевое действие в этот условный блок

🖼️ Новая версия лежит тут

Если кому то окажется интересным принять участие - предлагаю разобраться с тем, как запускать его в качестве фонового процесса.
Как "Сервис" для Linux и "Служба" для Windows.
Главное кросплатформенность сохранить, скрыть консоль и получить возможность легко добавить в автозапуск.


#Rust #OpenSource
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Cododel.dev | Александр
Наткнулся на видео, в котором раскрыты существенные нюансы по Rust. И я действительно их считаю существенными, потому чо похожий опыт был с фреймворками и другими языками... (Самый банальный пример, но довольно похожий, это React vs Svelte, у второго комьюнити…
🖼️ Бинарники, RUST и JavaScript (Bun)

В комментариях рассказывал, что учил Rust, делая пошаговый эффективный setup сценарий для настройки Ubuntu в качестве веб сервера.
После чего планировалось его собрать в бинарник.

Я нашел нужные библиотеки, разобрался с базовыми принципами работы на Rust, и определил порядок действий и архитектуру проекта, но на этом и остановился, так как подвернулся коммерческий проект.

Так сейчас я вспомнил один факт!
У JavaScript - есть шикарнейшая среда выполнения Bun, предоставляющая еще и набор довольно интерсных инструментов.
Полностью о нём пока не стану рассказывать, суть не в этом, а в возможности компиляции кода в бинарник. При этом, нечто подобное есть и в последних версиях NodeJS в виде патчинга бинарника интерпретатора JavaScript кодом (упоминалось начиная с 16, если не ошибаюсь).
Но в Bun умеет в рантайм исполнения TypeScript без необходимости сборки проекта в JavaScript. А ещё говорят, что есть возможность оптимизации этого TS/JS в байткод.

Но я вижу, что Bun явно в проигрыше по памяти, а производительность и не ставил под сомнение, Rust шустрее.
На скрине можно увидеть, что такой скрипт занимает 20Mb RAM, а сам по себе весит 57Mb:

setInterval( () => {
console.log(Date.now());
}, 1000);


Но!
Мне никогда и не требовалась производительность. У меня в приоритете скорость и удобство разработки.
А в NPM я помню, есть огромное разнообразие отличных библиотеки для CLI.
И упаковав это всё дело в бинарник весом ±60-120Mb — останется просто его закинуть на сервер, запустить, выбрать что нужно установить, И..(!)
Пойти пить чай на минут 15
(вместо 20-60 минут настройки сервера - мы тратим 5 минут и пьем чай 10-20, и это при наличии опыта, новичкам сильно больше сэкономит времени)

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

А ещё, для шарящих —бонусом к Cursor я взял в работу проект, на котором будет расширение для бразуера на React в WXT и бекендом на AppWrite
Так что будет чего интересного рассказать и обсудить


#NodeJS #Bun #Rust #JavaScript #TypeScript #Linux
Please open Telegram to view this post
VIEW IN TELEGRAM