Общая

Кодить каждую неделю 8 часов

Цель: кодить каждую неделю 8 часов.

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

Кодинг на основной работе в эти 8 часов не входит, а учитываются только лишь мои личные проекты которые я пишу для себя.

 Критерий завершения

План выполнен, отчёты написаны

  • 5566
  • 11 февраля 2017, 12:37

Дневник цели

2991день
Александр Савинов20 апр. 2025, 18:32

Всем здравствуйте

В прошедшую неделю я занимался кодом для моего персонального веб-сайта, и потратил на это около 12 часов. Вот какие штуки удалось сделать [ https://hinst.github.io/ ]

  • Новая функция 📝 Теперь есть возможность редактировать текст постов для администратора (для меня)
    • Сделать эту фичу пришлось для того, чтобы исправить ошибку в переводчике LLM. Слово "самокат" модель переводит по-разному:
      • Scooter - правильно 👌
      • Skateboard - неправильно 😐
    • Почему так происходит - не очень понятно. Видимо, зависит от контекста AI-модели
  • Новая функция ⚙️ Теперь есть страница настроек, на которой можно поменять цветовую тему и язык.
    • цвет: Системный, Тёмный, Светлый
    • язык: Системный, Английский, Русский, Немецкий
  • Настроил программку PHP Adminer для моего кластера. https://www.adminer.org
    • Теперь с помощью этой программки можно смотреть и редактировать базу SQLite
    • Изначально я планировал исправлять Skateboard->Scooter с помощью Adminer, но позже понял, что это будет неудобно. Посмотрим, для чего ещё этот Adminer может пригодиться в будущем
  • Исправил разные мелкие проблемы. В том числе, часовой пояс для постов

Работа получилась довольно таки напряжённая. Я хотел обязательно доделать и починить как можно больше фичей и багов до конца недельки, поэтому в воскресенье кодил 5+ часов. Думаю, в следующую неделю буду делать какой-нибудь другой проектик попроще

2984день
Александр Савинов13 апр. 2025, 22:41

Добрый вечер 🌙

В эту неделю я усердно делал мой персональный веб-сайт, и потратил на это 15 часов

Вот какие штуки удалось сделать:

  • Я перевёл хранилище с JSON-файлов на SQLite
    • В результате, скорость загрузки моего веб-сайта улучшилась: было 52 миллисекунды, а стало 32 миллисекунды... Это в локальной сети, а вот доступ через TailScale добавляет ещё 200 миллисекунд, так что "почувствовать" улучшение на практике не удастся ⌚🤔💭
    • В целом есть ощущение, что в коде стало чуть больше порядка после перехода на SQLite
  • Названия месяцев теперь всегда на английском языке 📅
  • Заголовок цели теперь с меньшей вероятностью будет на другом (не подходящем) языке 🇬🇧
  • Файлы в проекте с кодом теперь разложены более чётко по четырём папкам 📂
    • src/typescript
    • src/tsx
    • src/css
    • images
  • Включил авто-форматирование кода в фронтенде с помощью Prettier
  • Ещё разные маленькие улучшения и исправления

Самое большое и сложное изменение было: перевести хранилище полностью в SQLite, на это ушла куча времени. Обновлять пришлось не только hinst-website, но и старый проект Smart-Progress-or downloader, потому что он отвечает за копирование информации с SmartProgress в мою базу. Я хотел обязательно закончить переход на SQLite к концу недели, поэтому кодил в воскресенье почти весь день до полуночи 🥵 В результате, переход на SQLite удалось доделать, но позже наверняка найдутся ещё разные мелкие баги, о которых я ещё не знаю. Один баг я уже нашёл: что-то не сходится с часовыми поясами. На моём веб-сайтике дата поста показывается на 3 часа раньше, чем нужно. Почему так - разберусь когда-нибудь потом. Надо будет попытаться разобраться с часовыми поясами в библиотеке luxon

Oleg14.04.2025

Занимательная архитектура фронтенда. Разбить весь код на 3 папки по расширению файлов. Обычно разбивка идёт по функциональным признакам. Обрати внимание на архитектуру Feature-Sliced Design https://feature-sliced.github.io/documentation/ Поищи видео Евгения Паромова он хорошо объясняет как эту архитектуру правильно использовать. Основной признак хорошей архитектуру, ты легко добавляешь компонент и легко его удаляешь. У тебя легко получится удалить любой компонент?

Насчёт часового пояса. Дата в JS не содержит тайм-зону от слова совсем. Т.е. что Москва, что Владивосток для неё едино. Скоро будет новый стандарт для работы со временем, но ждём и используем разные библиотеки. Luxon – это плохой выбор, т.к. библиотека уже не поддерживается разработчиками. Вообще, дата хранится в БД на сервере в тайм-зоне UTC+0, а вот на клиенте пересчитывает в его локальную таймзону.

Oleg, есть два вопроса:

1. Какую библиотеку использовать вместо luxon.js?

2. Где увидели информацию, что luxon.js не поддерживается?

Oleg14.04.2025

Александр Савинов, опс... ошибся это momentjs больше, не поддерживается, а с luxon всё хорошо

2978день

Всем здравствуйте. Пришло время написать маленький отчёт по моей цели

  • Персональный веб-сайт 🌐 1 час 44 минуты
    • Сделал обновление внешнего вида. Теперь диагональные полосы пропадают, если они становятся слишком узкими
  • Orange Pi 🍊 1 час 37 минут
    • Занимался настройкой k3s. Оказалось, что ключи доступа для k3s имеют срок годности: 1 год по умолчанию, и этот год как раз прошёл...
    • Нужно запустить такую команду:
      • sudo k3s certificate rotate
    • А затем скопировать новые ключи в kube/config
    • На то, чтобы это понять, у меня ушло больше часа 😴 Внятного сообщения об ошибке не было, а было что-то вроде "невозможно зайти", а почему - пришлось угадывать и искать советы онлайн
Федор07.04.2025

эта платочка - картинка сгенерированная ИИ?

Федор, да; запрос был "single board computer on top of orange pie"

2971день
Александр Савинов31 мар. 2025, 22:24

Всем здравствуйте. Пришло время показать мой новый персональный веб-сайт: https://hinst.github.io На прошлой неделе я потратил 8 часов на создание веб-сайта, а в общей сложности я уже потратил на него 50 часов.

Вот что есть в моём сайте:

  • Мои блог посты на трёх языках: русский - оригинал, немецкий и английский - перевод с помощью LLM 🇷🇺 🇩🇪 🇬🇧
    • Перевод делается автоматически с помощью программки LM Studio и модели Aya Expanse 8B
    • Каждый день в полночь моя программка Orange Pi посылает запрос на мой настольный компьютер с просьбой перевести текст. Сделать такое пришлось потому, что Orange Pi имеет слишком мало памяти, чтобы запустить LLM. Нужно 8 GB, а в Orange есть только 4 гигабайта. Если мой настольный компьютер был выключен в нужный момент, то перевод откладывается на следующий день по расписанию
    • Первоначально я планировал делать перевод текста с помощью сервиса Google Translate, но оказалось что их API платный, а вот бесплатной версии официально не существует... Наверное, можно было попытаться сделать, чтобы запросы шли по тому же протоколу, который использует браузерный веб-переводчик, но в итоге я решил с этим не возиться
  • Два варианта показа блога с календарём: для широких экранов и для узких смартфонов 💻📱

Вот что планируется в будущем:

  • Комментарии
  • Полный переход на SQLite
    • Сейчас большая часть информации хранится в текстовых файлах, и лишь некоторая информация хранится в SQLite

Пока я работал над новым сайтом, то заметил дыру в безопасности в моём старом сайте 🤔 там можно было ввести ../ в параметры URL, а проверки на это у меня не было... Так что, в теории можно было выйти из папки с блог-постами в любую другую папку на сервере. Впрочем, сайт работал в Docker, так что ничего особо интересного там найти было нельзя 😴 Или можно? Дыру я уже починил https://github.com/hinst/SmartProgress-or/commit/b... 👌.

Загрузить 1 комментарий

если найдёте дыру в безопасности в моём сайтике, то сообщайте 🥺 награда за находку = один лайк на СмартПрогрессе

Федор01.04.2025

Александр, у меня сайт показывается сразу на трёх языках. Тайтл блога на русском, календарь на украинском и всё остальное на английском 🥲

логично 👌 я и сам это замечал, но буду ли я это чинить - не известно, ибо для устранения проблемы придётся сильно запариться, а проект и так уже получился очень запарный 🥵 проблема по идее возникает только у тех пользователей, у которых в браузере несколько языков настроено

2964день
Александр Савинов24 мар. 2025, 20:45

Всем здравствуйте. Пришло время написать отчёт про мои приключения в коде.

⚠️ Но сначала: в Next.js обнаружили большую дыру в безопасности. И в отличии от большинства дыр, про которые я читаю, но не понимаю, как их вообще использовать 🤔💭 ...эта дыра простая и понятная: в Header записываем "пропустить авторизацию", и она пропускается 🫡👌. Библиотека Next.js популярная, и многие ею пользуются. Статистика на скриншоте. Тем, кто пользуется Next.js, нужно срочно установить обновление.

На прошлой неделе я потратил 18 часов на разные программные проекты в свободное время

  • 14 часов 🌐 персональный веб-сайт, про который я писал в предыдущем посте. Разработка затянулась дольше, чем я первоначально предполагал. Стараюсь делать без спешки.
    • В персональном веб-сайте я сейчас настраиваю SQLite для хранения данных. Дело идёт медленно. И, честно говоря, нет уверенности, что SQLite там точно нужен. Но раз уж мне так захотелось, то нужно доделывать 🐞
  • 2 часа 🍊 настройка Orange Pi. Здесь опять поломалась файловая система ext4 после отключения электричества в моей квартире
    • Тут нужно заставить систему самостоятельно чинить файлы после поломки, но как это сделать - вопрос. Предыдущие мои попытки настроить авто-коррекцию не увенчались успехом. В этот раз использовал другой подход. Надеюсь, теперь-то сработало - узнаем после следующего отключения электричества 💭
  • 2 часа 🔙 потратил на изучение программ для создания резервных копий. Программки называются rclone и rustic. Обе из них написаны на Go, и обе показались мне сложными и странными. Rclone не умеет нормально синхронизировать между NTFS и exFAT, а rustic сохраняет полный путь к файлу каждый раз. А что если я переложил мои файлы в другую папку? 🤔💭😔 не понятно.
2957день
Александр Савинов17 мар. 2025, 11:56

Всем здравствуйте. Пришло время еженедельного отчёта

  • Создание моего нового веб-сайта 🌐 8 часов
  • Собирание статистики LeetCode 🖥️ 2 часа

Новый веб-сайт

Мой новый веб-сайт уже доступен здесь: https://orangepizero2w.tail46746a.ts.net/hinst-we...

  • Адрес на GitHub.io я пока ещё не сделал, но скоро сделаю. Увидел, что на https://hinst.github.io/ у меня сейчас находится мой Бложик из 2018 года, с всего лишь одним постом. Пока ещё не решил, сохранить ли его куда-нибудь, или удалить совсем
  • Автоматический перевод на английский и немецкий языки я уже частично сделал, но фоновое создание переводов для новых постов ещё не готово, поэтому переводы сейчас доступны только для постов от февраля и раньше
    • Показываемый язык зависит он настроек браузера у пользователя. Отдельного переключателя языка на самой странице у меня пока нету.
    • Переводчик работает с помощью программки LM Studio. Тут были свои сложности, про которые расскажу наверное в следующий раз
  • Светлая и тёмная тема - уже сделано, и тоже зависит от настроек браузера у пользователя. Отдельного переключателя на самой странице нет.

LeetCode статистика

Статистика LeetCode получилась такая:

  • Затраты времени:
    • ⌛ На прохождение 100 задач ушло 129 часов.
    • 🐌 Самая долгая задачка: Scramble String. На прохождение этой задачки у меня ушло 11 часов.
  • Языки программирования
    • 📘 TypeScript: 80 задачек
    • 🦀 Rust: 19 задачек
    • 🦫 Go: 1 задачка
  • Для некоторых задачек мне приходилось искать подсказки онлайн, потому что я не знал алгоритм нужный для их решения.
    • 👌Прошёл самостоятельно: 87 задачек
    • 💭 Прошёл с подсказкой: 13 задачек

Первоначально я собирался пройти все задачки на языке программирования Rust, но позже перешёл на TypeScript, ибо учить новый язык и новые алгоритмы одновременно было сложно.

Проходить ещё больше задач на LeetCode.com я пока не планирую. Так что, это было подведение итогов только для тех задачек, которые я уже прошёл раньше.

2950день
Александр Савинов10 мар. 2025, 11:35

Всем здравствуйте. Пришло время еженедельного отчёта

  • Я потратил 18 часов на кодинг за 9 дней

Делаю новый персональный веб-сайтик. План такой:

  • В качестве контента возьму все мои посты с SmartProgress из моих двух целей: кодинг и велосипед
  • Все посты пройдут автоматический перевод через Google Translate API. Будет переключатель языка, чтобы мои посты можно было читать на русском и на английском языках 🇷🇺 🇬🇧
    • Переведённый текст будет кэшироваться с помощью специального скрипта, чтобы переводить текст только один раз, а не при каждом показе
  • Планирую добавить этот персональный сайтик в мой профиль Linkedin, для этого и решил сделать перевод на англ. яызк
  • Ещё будет полноценный URL засчёт хостинга Github Pages на github.io
  • Frontend UI: React.js
  • Backend: Golang

В общем, это будет улучшенная версия моего старого сайтика с постами, который доступен здесь: https://orangepizero2w.tail46746a.ts.net/smartPro... На первом скриншоте: новый дизайн; он ещё не готов, но уже примерно понятно, как он будет выглядеть.

React.js на мой взгляд всё ещё лучший фрэймворк для UI, несмотря на усердные попытки его усложнить

2940день
Александр Савинов28 февр. 2025, 19:03

Всем здравствуйте. На этой неделе я потратил 10 часов на кодинг в свободное время, и доделал мою программу для сравнения SQLite и MongoDB

SQLite vs MongoDB ⚔️ https://github.com/hinst/mongodb-sqlite-versus

  • SQLite примерно в семь раз быстрее, чем MongoDB
    • SQLite работает с файлом напрямую, без HTTP, а в MongoDB клиент и сервер должны общаться между собой
  • MongoDB файлы занимают примерно в два раза меньше места на диске, чем SQLite
    • MongoDB поддерживает встроенное сжатие zstd

Сжатие можно принудительно отключить в MongoDB, но по скорости это почти никак не влияет.

Думаю, SQLite лучше подходит для микро-проектов на Orange Pi. У меня карта памяти на 256 гигабайт, и её должно по-идее хватить даже на довольно большие базы. Правда, 40 гигабайт уже сожрали Debian, Docker и Kubernetes 😤. К тому же, MongoDB имеет проблемы на Orange Pi: официальная версия не запускается вовсе из-за проблем с совместимостью. Мне удалось запустить MongoDB на Orange только с помощью танцев с бубном. А вот SQLite запускается сразу из коробки.

Ещё пробовал тестировать libSQL от Turso, но там сразу полезли баги и недоделки, поэтому желание продолжать быстро пропало. Думаю скоро начать делать мини-проект сайтик на Orange Pi, но сначала нужно нормально поспать 😴

2936день
Александр Савинов24 февр. 2025, 17:32

Всем здравствуйте. Пришло время написать мини-отчёт за прошедшую неделю

  • Кодинг 💻 10 часов
  • Копание Orange Pi 🍊 3 часа
  • Иностранный язык 🇩🇪 4 часа

Я собирался сделать небольшой веб-сайтик. Задумался, какую базу данных использовать: MongoDB или SQLite. Долго думал, и решил написать прогу для сравнительного тестирования: MongoDB vs SQLite benchmark. Потратил на это 10 часов. Прога ещё не готова, но скоро будет готова... Узнаем, что быстрее: MongoDB или SQLite. Будет два теста: первый тест на моём "большом" компьютере, а второй тест на маленьком Orange Pi.

Некоторые промежуточные выводы я уже собрал. SQLite легко сломать: один раз забыл (или "не смог") вызвать query.Close() - и всё, ты "обосрался". Данные зависнут в промежуточном журнале навсегда. Даже запросы на чтение нужно обязательно всегда закрывать, иначе база может затупить. Вот ссылка на статью: https://turso.tech/blog/something-you-probably-wan...

А вот MongoDB - надёжная база, по моим ощущениям 🤔💭 Ощущения эти идут от того, что по работе её используем уже много лет, и база работает как часы. Запросы от проги заказчика идут весьма тяжёлые и постоянные. При этом, как-то поломать или замедлить базу - очень сложно. Но и "жрёт" эта база больше CPU, чем SQLite. Насколько именно больше - выложу результаты в конце недели

🍊

Копание в Orange Pi: обновил Docker и Kubernetes -> сломались подключения к Service ClusterIP. Три часа искал причину поломки. Оказалось, формат имени сервиса внезапно поменялся...

  • Было: my.app.svc.cluster.local
  • Стало: my.app.svc

Откуда взялось изменение - я не понял. Подключения починились, когда я убрал .cluster.local из моих конфигов...

2931день
Александр Савинов19 февр. 2025, 09:15

Пришло время написать мини-отчёт. Кодить хочется, но не получается из-за постоянной усталости

  1. Иностранный язык 🇩🇪 5 часов
    1. Моя подготовка к сертификату наконец-то закончилась, теперь
  2. AI рисование 🖼️ много часов
    1. Установил самые тяжёлые из доступных "простым смертным" модели: Flux и Stable Diffusion 3.5
      1. Оказалось, что запустить их на видеокарте с 16 ГБ памяти можно, если использовать fp8 версию. Эта версия доступна только в проге ComfyUI, а вот для Amuse её не скомпилировали 😤
    2. Настраивал конвейеры из прямоугольников и верёвок. Это похоже на "визуальное программирование"

Вы тоже можете
опубликовать свою
цель здесь

Мы поможем вам ее достичь!

310 000

единомышленников

инструменты

для увлекательного достижения

Присоединиться
Регистрация

Регистрация

Уже зарегистрированы?
Быстрая регистрация через соцсети
Вход на сайт

Входите.
Открыто.

Еще не зарегистрированы?
 
Войти через соцсети
Забыли пароль?
Tudumch
FlakV
Татьяна
Сергей
resignedangel
Oleg
Ирина
Федор
Sid Vicious
AnGe
Oleg
Федор
Ekaterina Rudopas
Sid Vicious
Freeland
Александр Савинов
Александр Савинов
Oleg
Time4changes
Федор
Ekaterina Rudopas
Sid Vicious
Александр Савинов
Федор
Tudumch
resignedangel
Oleg
Сергей
Time4changes
Федор
Andres
Александр Савинов
Федор
Tudumch
Федор
Ekaterina Rudopas
dariana
Sid Vicious
Tudumch
AiS
Time4changes
Федор
Ekaterina Rudopas
Tudumch
Time4changes
Федор
Sid Vicious
Nika Sidorova
Tudumch
Федор
Ekaterina Rudopas
dariana
Sid Vicious
Tudumch
Михаил
Федор
Ekaterina Rudopas
Sid Vicious
Tudumch
Time4changes
Федор
Ekaterina Rudopas
Sid Vicious