My Class Blog
MyClassBlog (v.1.0.4) блог преимущественно о программировании и путешествиях, но и по мелочи о другом тоже.

Важные папки Windows для разработчика

В Windows многие системные и пользовательские каталоги можно открывать через переменные окружения. Достаточно вставить нужный путь в адресную строку Проводника или в окно Win + R.

Voice Book

Одно время я подсел на книжную подписку как на сериалы. Это когда автор продаёт ещё не написанную книгу, выкладывая главу за главой каждую неделю. Очень хотелось сразу прослушать главу. Да-да, именно прослушать как аудиокнигу — времени на чтение художественной литературы нет. А между делом, в процессе прогулки или домашних дел — пожалуйста. Или вообще как сказку на ночь 😄. Но вот бесплатных программ для озвучивания уже нет, по крайней мере я не нашёл. А AI-движки больно дорогие — порядка 1000 ₽ за книгу получается. Дешевле дождаться аудиокниги за 300 ₽ с хорошим чтецом. Хотя не факт, что чтец нормальный будет; может, робо-голос даже лучше некоторых звучит. Короче, я решил создать такую программу — и вот что получилось: https://voice-book.stswoon.ru.

Vibe Coding — простыми словами

Модная тема Vibe Coding. Но рассказывают о ней слишком сложно, на мой взгляд. Что значит подготовить проект к AI? Как настроить tools/mcp/rules/skills? RAG? Агенты и чаты? В этой статье постараюсь простыми словами рассказать, что это такое. Репозиторий с примером — https://github.com/stswoon/projectForLessons/tree/master/2026/test-ai

Coolify v4

Ранее я уже рассказывал про Coolify в статьях Собственный Heroku и Настройка GitLab Для Coolify. Но он давно обновился и сильно, поэтому тут представлю иснтрукцию, т.к. из-за известной security баги в next.js арендодатель сервера стер прошлый инстанс со всеми настройками и пришлось вновь поднимать сервак.

GitLab CI: базовые строительные блоки и E2E-пайплайн

В данной статье хотел бы поделиться базовыми навыками настройки Gitlab CI. Данные знания полезны как для расширения кругозора, использовании в пет проектах и более сложены, так и в при общение с devops. Предлагаю рассмотреть базовые возможности и создать классический пайплайн build -> deploy -> test.

Тех.Радар

Когда я начал собирать техрадар, казалось, что задача должна решаться просто: подобных схем в интернете много, а сам формат существует уже давно. На практике оказалось, что готового базового решения, которое можно без существенной доработки взять за основу - найти непросто.

Мой Твистер - навык для Алисы

Как-то с детьми втроём играли в «Твистер», но некому было крутить стрелку. Если кто-то будет крутить, играют всего лишь двое - это довольно скучно. Тогда и родилась мысль: а почему бы Алисе из Яндекса не крутить эту самую стрелку? У неё же нет ног.

Жареный рис со свининой (азиатский стиль)

Недавно смотрел ролик на youtube в стиле solo кемпинг на машине (Lanbo & Lyra | Camping Life) и так понравилось блюдо в азиатском стиле типа жареный рис со свининой, что я решил найти его рецепт.

Средство для смены версий node.js - NVM

Когда собираем java проекты можно легко поменять версию сборщика, для этого досточно установить несколько версий java. Однако для node.js это не возможно - при установке новой версии стирается старая. Или все же возмонжо? Ответ NVM.

Как убрать запросы ff.kis.v2.scr.kaspersky-labs.com

Когда установлен Kaspersky Free в devtools браузера каждые 3 секунды летят запросы на ff.kis.v2.scr.kaspersky-labs.com. Это очень мешает при разработке. Один из вариантов проверить и отключить плагины, но если их нет, то нужно отключить в антивирусе. К сожалению UI антивируса обновился и сложно найти где же эта заветная опция. Чтобы вам жилось легче - она вот тут теперь:

Оптимизация оперативной памяти

Что делать, если 16 ГБ ОЗУ не хватает для разработки? При запуске сложного проекта (монорепозитории, Docker, несколько сервисов, IDE, браузер с DevTools и т.д.) 16 ГБ оперативной памяти могут быстро закончиться. Да, комфортный минимум сегодня — 32 ГБ, а для крупных проектов — уже 48–64 ГБ. Но если апгрейд пока невозможен, ниже — практические шаги, которые реально помогают выжать максимум из текущей конфигурации.

Двойной агент (Island)

Однажды мне понадобилось иметь под рукой два гугл аккаунта, и решение нашлось - Island. Приложения в Google Play от oasisfeng для изоляции и клонирования приложений на персональных устройствах.

Простой скрипт на jMeter

Apache jMeter это утилита для стрес тестирования апи. Она позволяет делать сложные запросы с for и if и другое. Похоже на Runner в Postman (но они появились гораздо позже и все же цель их другая больше тестирование), но более функциональное и позволяет производить разнообразную нагрузку больших систем. Давайте составим наш первый стресс тест.

Вседозволяющий CSP

Периодически для дебага нужно бывает переопределить Content-Security-Policy (CSP). Именно переопределить, а не удалить. Причем обычно нужно задать значения, которая разрешает все. И обычная * тут не подходит. Конечно я не помню это значение наизусть поэтому приходится заново искать ответ на этот вопрос, а он к сожаление не на первой странице в поиске лежит. Поэтому публикую его тут.

Configurable Portal

Решил попробовать сделать прототип портала, страницы и содержимое, которого можно конфигурить из CSM (например Strapi). И попробовать сделать это на App Router от NextJs с Server Components, т.к. для SPA и обычного SSR такую штуку я знаю сделать можно. Итак, нужно сделать механизм, который обеспечивает гибкую конфигурацию портала через CMS без необходимости изменения кода, что позволяет контент-менеджерам самостоятельно управлять структурой и содержимым страниц.

Удобная команда для запуска Docker

Команды docker build и docker run знакомы всем, кто работает с Docker. Однако в процессе разработки часто приходится выполнять одни и те же действия: проверять потребление памяти, пробрасывать порты, передавать переменные окружения и т.д. Чтобы ускорить и упростить эти операции, я собрал удобные шаблоны команд, которые использую сам.

Intellij IDEA: Шаблоны React-компонентов

При создании React-компонентов нужно помнить шаблон компонента или хука. В этом плане Angular выглядит удобнее — там есть CLI, интегрированный с IDE, позволяющий быстро создавать компоненты и сервисы. В случае с React — в разных командах шаблоны могут отличаться, поэтому имеет смысл настроить свои собственные. В этой статье — подборка шаблонов для компонентов, хуков и контекста.

Виджет для постоянного отображение CPU (TrafficMonitor)

Иногда кажется, что компьютер должен работать быстро, крутить вентиляторы, но код компилируется долго и ничего не происходит. Проблема может быть в перерасходе памяти или нагреве процессора, а может стоит режим энергосбережения. Чтобы понять что происходит хочется увидеть нагрузка на систему, ее можно увидеть открыв диспетчер задач, но было бы хорошо видеть данные постоянно на приборной панели, как у машины 😄. Не мог долго найти подходящих решений, но наконец нашел, и хочу с вами поделиться решением - TrafficMonitor

Решение проблемы троттлинга на Honor MagicBook X14 Pro с помощью ThrottleStop

Если вы планируете использовать Honor MagicBook X14 Pro для работы — будьте осторожны. Несмотря на привлекательный внешний вид и характеристики, этот ноутбук страдает от серьезных проблем с перегревом и троттлингом процессора Intel Core i5-13420H. В этой статье я поделюсь личным опытом использования, а также расскажу, как частично решить проблему с помощью программы ThrottleStop.

Simple performance tests (apache ab)

Задача - нужно проверить нагрузку на сайт, бекенд. Для этого можно воспользоваться postman runner'ом, можно использовать более серьезную тулу такую как Apache JMeter Но можно и для базовых вещей воспользоваться apache ab.

Путешествие: Бузулукский Бор

Информацию о Бузулукском Бору можно найти на официальном сайте - https://npbuzbor.ru/. Там же можно купить билеты, всего 200р со взрослого человека. Бузулукский бор - это набор нескольких интересных мест. Наиболее известные - это эко-тропа до царицы сосны Царь-Бор, где можно посмотреть почти самую высокую сосну в мире (2-ое место), дети могут побегать по парку, покататься на качелях. Далее я бы отметил место - Перекаты - тут можно посидеть на пляже и отдохнуть (мы ездили в начале осени). И место - Паникинский Яр, где можно постоять на парапете над пропастью в реку. К сожалению нам не хватило осеннего светового дня чтобы доехать до конца бора, поэтому придется ехать еще разок )). Оставляю ниже мой маршрут и места, которые я отобрал для просмотра, т.к. на каждом озере останавливаться - не хватит времени.

Путешествие к Деду Морозу (Великий Устюг)

Как-то пообещал я детям свозить к Деду Морозу. Но на поезде не доедешь, пересадка через Москву + автобус до места. И поэтому поехали на машине по маршруту Казань - Великий Устюг - Йошкар Ола.

Путешествие в Башкирию

Путешествие в Башкирию решили сделать в августе, т.к. говорят в июне много клещей. Однако дождь лил как из ведра в начале поездки и периодически лил в течении всего путешествия, поэтому не получилось посетить множество мест. Да и дети устали, видимо придется ездить без них. Тем не менее мы везде проехали на кроссовере и наверно было всего 1 место (по разрешенной для проезда, но разбитой, дороге в природном парке Башкирии), где на моноприводе пришлось бы проходить ходом.

WebSocket Security

В случает REST запросов для авторизации нужно отправить токен авторизации в хедере или в куки. Но в случае вебсокетов возникают проблемы. Во первых веб сокеты с именно браузера (бек-2-бек позволяет добавлять хедеры) не разрешают добавлять кастомные хедеры (можно только указать версию протокола и в нее хаком воткнуть токен). Во вторых вебсокет держит соединение, т.е. если у вас протухнет токен, то соединение все равно останется.

3D принтер

Купил я ребенку (оказалось себе) принтер на новый год принтер Wanhao Duplicator I3 mini за кажется 13к. Это мой первый принтер, поэтому покупал в DNS, боялся заказывать из Китаю. По отзывам все хорошо было и он уже в сборе поставлялся. Первая тестовая печать из подготовленных файлов с флешки прошла успешно, но очень долго - 6 часов на носорога небольшого. Свои простые модели типа кубика тоже получилось сделать. А вот дальше начались проблемы. Поддержки прилипают к детали их не отдерешь Печать начинает "полосить", получается объект как будто из паутины. В общем ужас. Как я понимаю основная проблема принтера скорость вместо заявленных 70 мм\с можно печатать на 30 мм\с что очень долго. Примерно 3 месяца я игрался и параметрами в Cura и наконец разобрался. Чем хочу и поделиться ниже. Но сперва закончим секцию железо.

Настройка GitLab для Coolify

В прошлой статье - Собственный Heroku - мы настроили Coolify. Из коробки он работает с GitHub. Но вдруг вам захочется не раскрывать свои исходники, но в тоже время уметь их легко заливать в Coolify.

Куда съездить в Самаре? (Часть 4) - Самарская лука и Карта

Теперь отправимся по Самарской луке и за ней. Я построил примерно такой большую карту.

Куда съездить в Самаре? - (Часть 3) Пещеры и Горы

Теперь отправимся вверх от Самары. Я построил примерно такой путь. Если интересно, то предыдущая часть 2

Куда съездить в Самаре? (Часть 2) - Водопады и Озера

Теперь отправимся вправо от Самары. Я построил примерно такой путь. Если интересно то предыдущая часть 1

Куда съездить в Самаре? (Часть 1) - Падовский карьер

Несколько лет назад я задался вопросом куда же можно съездить в Самара (Самарской области)? Какие есть интересные места? И вот в этом году я составил большущую карту интересных мест.

Собственный Heroku

Эх раньше был бесплатный Heroku, потом его бесплатные аналоги Render и Railway, потом другие. Но вот почти все они закрыли бесплатные аккаунты. Где-то кусаются цены, а где-то не возможно оплатить с русской карты. Где-то есть технические ограничения на CPU, память или даже "эфемерное" дисковое пространство, что не дает работать с файлами на диске.

Курс молодого Frontend'ера

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

Книжная полка

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

Домашний NAS для бедных

Давно возникала идея создать бекап данных. Особенно остро это стало, когда пару лет назад начал сыпаться HDD, и буквально за пару дней до беды, пришел наконец HDD Western Digital WD30EFRX серии Red (долго выбирал и решил, что он довольно надежный, ведь на него завод давал гарантию до 5 лет, с заменой на новый, если что-то сломается). В общем тогда все обошлось - всего пару фоточек потерялось. Выглядит так, что срок жизни для жесткого диска 3, 5, максимум 10 лет, поэтому меня пугает, что большинство людей не задумываются о том, что могут все потерять. В общем, решил я наконец заняться этим вопросом.

Круги Ада Разработки

Данная диаграмма построена c точки зрения разработчика, чтобы показать что решение основного бизнес кейса это маленькая толика разработки, т.е. это 20% времени которая дается 80% функционала, но нужно потратить еще 80% чтобы доделать оставшиеся вещи, без которых нормальной функционирование программы будет ущербным.

Эпиграммы программирования

Давным давно читал эпиграммы программирования и некоторые из них мне понравились, т.к. имеют вполне практическое применения. Здесь можно почитать все эпиграммы - http://translatedby.com/you/epigrams-in-programming/into-ru/trans/. А ниже представляю выборку наиболее интересных с моей точки зрения эпиграмм:

Angular динамизация

Сейчас появилось довольно много способов для решения данной проблемы - angular elements, angular portals, entry components - но расскажу о том, который может быть использован в angular6+.

Пример стандартного проксирования в nginx

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

JS Class with private

К сожалению JavaScript и Java одинаковы лишь первыми 4 буквами. Так например появление классов в ES6 это лишь иллюзия, никаких private\protected переменных и методов оно не принесло, но стоит отметить что код стало писать просто, не нужно запоминать эти старые подходы с прототипированием:

Армирование бедра человека

В университет занимался работой по превентивному армированию бедра человека. Бедро тяжело лечиться. Во многих случаях не получается восстановить первоначальную прочность кости, это ведет к малоподвижному образу, а малоподвижный образ для людей преклонного в течении 3 лет может привести к летальному исходу. Подробнее про актуальность проблемы можно почитать в научных статьях. Поэтому было решено армировать кость превентивно, если по медицинским указаниям есть предрасположенность к разрушению кости (остеопорозу).

AngularJS dynamization

Замечу что речь пойдет про AngularJS 1.x. Если хочется сделать динамическое ангуляр приложение, которое в любой момент может подгрузить что-нибудь еще ангуляр модуль, то просто так это сделать не получится. Например можно сделать два ангуляр модуля рядом:

Компонента Angular \ Angular2

Данная статься скорее для себя, здесь не будет ничего нового чего бы вы не смогли найти в интернете. Я заметил что когда пишу новую компоненту мне легче начинать с какого-то шаблона. В качестве шаблона я выбрал компоненту - текстовое поле с иконкой поиска и вызовом callback, которую писал сам.

Компонента Angular \ Angular2

В этой статье больше шутки нежели полезной информацией. Под влиянием книги Head First Design Patterns я когда-то давно нарисовал такую картинку.

Мой самый сложный SQL запрос

Я работу по большей части во фронтэнде на как-то раза два у меня была задача написать сложный SQL-запрос. В принципе получилось довольно быстро при использовании интернет. Может кому и пригодиться.

Java Enum

Периодически забываю как делать сложные enum с поиском по строке (метод valueOfPretty), поэтому вот заготовка.

Коротко о frontend performance.

Насмотрелся я как-то видео и начитался статей о performance в мире frontend и решил задокументировать кратко походы. Подробное описание можно найти в интернете или в литературе внизу. Итак мой список пунктов связанных с performance, которые можно использовать для улучшения\оценки производительности:

NPM auto publish via gulp

В мире JS все как-то несколько криво и не отточено в отличие от Java. Очень хорошо иллюстрирует положение вещей эту картинка. Одна из проблем то что нельзя легко настроить публикацию npm через таску в gulp. Очень долго искал и еле нашел всего в одном месте поэтому публикую решение здесь чтобы распространить решение и не потерять его. Исходное решение, к сожалению исходно решение уже недоступно.

Как получить военник

Решил я получить законный военник, но не тут то было...

Госуслуги и загранпаспорт

Однажды появилась необходимость получить загранпаспорт. А поскольку мы живем в 21 веке, то было принято получить паспорт через госуслуги. При поиске информации в интернете на момент получения паспорта (2012 год) где-то половина ресурсов говорила совершенной неуклюжести сайта госуслуг (ошибки работы, недоступность, непонимание паспортисток когда приходишь получать паспорт через сайт и др.) и половина хороших отзывов (видимо работа над ошибками все таки ведется). Хочу сразу сказать, что паспорт я получил не так легко, но и не так сложно как я ожидал это от государственных организаций. Итак в данной статье описан мой полный путь получения загранпаспорта.

Список android приложений на мой вкус 2

Подборка приложений

Root ZTE Blade X5

Несколько раз пытался сделать рут на своем ZTE Blade X5, но что-то не выходило. Однако недавно вышло. На всякий случай опишу как, может ком пригодится.

Rutor Parser

В интернете часто ходят слухи, что можно легко зарабатывать на мобильных приложениях. Где-то я видел статистику 100$ за 10 000 активных пользователей. Вот я и решил попробовать написать приложение, тем более что, наконец, нашлась нереализованная, на мой взгляд, идея, причем нужная мне самому.

Мои вопросы для собеседования

Как то раз пришлось вести собеседования и я решил подготовить для себя список вопросов, точнее ответов, чтобы не сесть в лужу. Вот что получилось. Заранее скажу не претендую на "правильность" вопросов, т.к. я не профессиональный собеседователь.

Как сделать бесплатный screencast

Если вы захотите записать screencast то можете столкнуться с проблемой, что многие бесплатные программы: добавляют водяные знаки, не дают записывать больше N минут, при записи происходит рассинхрон звука и видео. Пройдя через более 15 программ я вынес для себя следующий процесс записи screencast’а. Для начала запишем видео. Для этого воспользуемся Free Screen Video Recorder

Прошивка телефона на примере htc incredible s

Статья как сделать root на телефоне.

Time Zones

В данном посте будет описана немного истории для понимания, что такое тайм зона и в чем ее сложности. Также будет объяснено, что такое Date, как она представляется в коде и БД. Будут разысканы проблемы, которые возникают с датами в GWT и их решения.

Заметка о PowerMock (+Mockito)

Статья SuppressUnwantedBehavior покрывает большинство основных вопросов (также советую статью про замену методов класса). Несколько моментов, которые я хотел бы подчеркнуть:

Пример статьи (Название Статьи)

В этой статья рассказывается о тех командах и фокусах, которые пригодились мне для написания диплома. Поскольку иногда удобнее изучать что-либо на примере, сразу привожу пример моего Ссылка на диплом (но только несущественную по смыслу часть). А так он выглядит после конвертации в pdf.

Упрощение 3D модели

Если необходимо провести упрощение 3D модели, в частности уменьшить количество узлов и поверхностей тела, то возможно пригодиться программа MeshLab.

Шкала оценки

Существует множество шкал оценки чего-либо. Мне кажется, что самая лучшая - это шкала в 7 элементов. Попробую объяснить свою точку зрения.

Пример статьи (Название Статьи)

Когда пишешь новый пост, по появляется довольно узкое окно ввода. Почему оно не расширяется мне не понятно, а так как я недавно начал писать большой пост - узкое окно просто не приемлемо для меня. В связи с этим я решил написать плагин для FF, что бы окно было шире. Прощу прощения за ошибки в коде/архитектуре плагина, т.к. это мой первый плагин, на данный момент в большей степени пробный экземпляр нежели готовый продукт. Результат же выглядит следующим образом

Минимализация плагина для FF

Прежде чем начать статью, хочу сослаться на Как создать свой плагин для Firefox - очень лаконичный пост для начинающих писателей плагинов для FF. Однако, хоть та статья и написана очень просто, я умудрился наступить на несколько граблей. Вот о них я и напишу, чтобы самому их помнить, да и другим помочь, если получиться. Итак, для того чтобы разобраться в чем-то новом лучше начинать с простого, но в большинстве случаев, на мой взгляд, даже мануалы типа Getting started имеют множество лишних элементов. Так и с Add-on Developer Hub из указанной выше статьи. Даже в самом простом плагине мы получаем аж 9 файлов (>100 cтрок кода) - согласитесь это никак не подходит для программы типа Hello world.

Концепт набора времени для смартфонов

Многие, наверно, знают как выглядит контрол для набора времени в htc sense

Метод создания форм для конфеты "Петушок"

Как-то захотелось поесть конфету "Петушок", давно уже не видел их в продаже, везде сплошной чупа-чупс. Для тех кто не в теме Петушок состоит из вареного сахара и воды (рецепт можно найти например здесь), а выглядит он так:

Маленький linux

В этой статье показано как установить небольшой линукс, скажем на прототип робота, на примере операционной системы damn small linux. Его плюс в том, что он весит очень мало и его не надо собирать.

Пример статьи (Название Статьи)

За полгода работы с web-приложениями у меня накопился небольшой набор инструментов, которыми я пользуюсь. В этом посте я хочу рассказать об этих приложениях т.к. еще полгода назад я о них (почти о всех) даже и не слышал.

График успеха

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

Звания IT-работников

Некоторое время назад я пытался найти кем можно стать начиная с программиста и куда эта дорога может привести. К сожалению ничего толкового мне найти не удалось. Поэтому я попытался самостоятельно провести исследование на эту тему. Итак представляю вам на обозрение схему развития программиста начального уровня в нечто более разумное. Особое спасибо Дмитрию Ч. за помощь.

Нейронная сеть для обхода препятствий

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

Выставка СамГТУ "Дни науки" 2010

С 5 по 9 апреля 2010 в СамГТУ прошли "Дни науки", в рамках которой была проведена выставка научных проектов студентов.

Поход по восточной части Самарской луки (День 2)

Ну и ночка. Спим мы, спим спокойно, никого не трогаем. Тут вдруг в нашу сторону рысцой парнокопытное животное движется. Палатка стояла в лесу, поэтому переступание животного по листьям было очень различимо. Стало страшновато, я даже баллончик приготовил перцовый, хотя для крупного зверя (если он захочет напасть), я думаю, это не проблема. Также это животное ело кору деревьев. Поэтому там мог быть либо кабан, либо лось. Позже, мы решили, что это был кабан.

Поход по восточной части Самарской луки (День 1)

Утро. Дождь. Корабль. Наша задача на сегодня дойти до Елгушей.