Рубрики
devops

Gitea + Drone = CI/CD

Небольшое введение или зачем эта затея?

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

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

Моя статья могла бы и рассмотреть репозитории из большой тройки (github, gitlab, bitbucket), но сейчас появилась отличная конкурентоспособная альтернатива в виде Gitea, которую можно разместить на любом сервере. 

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

Рубрики
Blazor

Упрощаем Lifetime Blazor приложения

Исходя из проблематики предыдующей статьи, у меня появились следующие наработки.

30% моих компонентов инициализируются через метод OnInitialized(), а все остальные 70% через оверрайдинг метода OnComponentMountAsync(). Такого метода не существует, но когда я поддержал его в своей компонентной базе, то перестал задумываться о проблемах с построением асинхронных кейсов внутри приложения.

В качестве основы я создал интерфейс IAsyncComponentBase.cs, который оговаривает, что компоненты, наследующие данный интерфейс имеет доступ к специальному делегату. Его вызов приводит к попытке перерендеривания страницы.

using System.Threading.Tasks;

namespace blazor_lifetime.Models
{
    public delegate Task RenderHandleAsync();
    public interface IAsyncContentRenderer
    {
        RenderHandleAsync RenderChildContentAsync { get; set; }
    }
}
Рубрики
Blazor

Проблемы асинхронного лайфтайма Blazor

За долгое время работы с Blazor, начиная с самых ранних сборок и заканчивая .NET Core 3.1.0 мне пришлось достаточно детально рассмотреть процесс взаимодействия с этим фреймом.

И наверно самым главным элементом в данной тематике можно выделить лайфтайм компонента ComponentBase. Если вы хоть раз заглядывали в этот абстрактный интерфейс, то вы наверняка знаете про три метода и три асинхронные перегрузки этих методов. (OnInitialized, OnParametersSet, OnAfterRender).

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

Рубрики
NodeMCU

Web-интерфейс с нуля на NodeMCU ч. 2

Как повелевать html’ом, не захламляя код

На самом деле существует два варианта, как подцеплять html/css/js и отправлять его в библиотеку ESP8266WebServer. Первый намного удобнее при использовании языка программирования Lua. Нода по сути шьется кодом, который позволяет загрузку файлов прямо в флеш память.

Я решил пойти более примитивным путем — весь код от разных страниц хранится в одном заголовчном файле, например, «html.h».

Примитивненько в коде указываем новую константу, и присваиваем ей массив char-символов.

const char html_code[] PROGMEM = "";

Именно таким решением я воспользовался в первый раз, но возникла небольшая проблема — каждый перенос строки пришлось экранировать обратным слэшем, а также добавить пернос строки с помощью комибнации «\r\n». Такой код выглядел немного нелепо, а редактировать его было неприятно. Вскоре я наткнулся на более приятную фишечку, которая позволила избавиться от столь большого количества бесполезных элементов. Начиная уже с С++11 можно использовать литеру R после символа присваивания, для того, чтобы компилятор воспринимал текст буквально «сырым», то есть raw.

Рубрики
linux

Как настроить хороший прокси сервер за 7 строчек…

Для владельцев CentOS и других Linux-подобных систем сделать прокси не составит труда. Самое главное, чтобы хостинг сервера находится в другой стране. В качестве ПО в данной статье будет использоваться пакет 3proxy.

Статья была написана в замечательный день, в пятницу 13ого, 2018 года, когда Telegram вероятнее всего уже начали блокировать по всей стране. Продолжать пригорать из-за этого наблюдать за этим бредом уже нет сил. Так что отбрасываем раздумья о том, что пора сменить Telegram на что-то более ущербное, и идем покупать vps или вспоминать пароль от админки.

Поддержим так сказать российского разработчика свободного ПО — установим легкий и бесплатный пакет прокси сервера «3proxy»:

yum install 3proxy -y
Рубрики
linux

Не работает тап/двойной тап/скролл в Gnome?

Демон настроек Gnome любит перезаписывать уже существующие настройки (например в файле xorg.conf.d). Исправить эту проблему достаточно просто для  тачпада:

1. Запускаем dconf-editor
2. Находим раздел /org/gnome/settings-daemon/plugins/mouse/
3. Снимаем галочу с active

Теперь существующая конфигурация synaptics не будет перезаписываться Gnome

Рубрики
linux

Настраиваем свой VPN на основе SoftEther

Привожу пример настройки сервера для CentOS 7 на KVM в общих чертах. Данная инструкция очень сухая — без скриншотов и без тонны разъяснений. Сухая словно сухое вино, хорошо выжатая, насыщенная конкретным алгоритмом, чтобы превратить твой сервак в VPN. Очень полезна при недостатке Spotify, Rutr@cker’a и других ресурсов из сети твоего провайдера. Я использовал мощности Hetzner.com для хостинга своей VPS.

Накатываем на сервак тулзы для сборки VPN:

yum -y groupinstall "Development Tools"
yum -y install gcc zlib-devel openssl-devel readline-devel ncurses-devel
yum -y install system-config-network-tui system-config-firewall-tui
yum -y install policycoreutils-python
yum -y install net-tools

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

Рубрики
NodeMCU

Web-интерфейс с нуля на NodeMCU ч. 1

Как я купил себе новую игрушку

Как-то раз я решился купить себе немного электронной атрибутики прямо с AliExpress’a. И именно тогда я столкнулся там с этим чудом: NodeMCU V3 на базе ESP8266. Маленькая Arduino Nano не просто загрустила, а вообще перестала кочевать и сейчас застряла в немного другом проекте.

Изображение NodeMCU V3 на базе ESP8266 с AliExpress


Вообще, я выделил для себя следующие преимущества данного модуля:

  • WIFI, который может одновременно быть точкой доступа и быть подключенным к другой точке
  • CH340, который позволяет через USB эмулирует все «сладости» COM-порта
  • MicroUSB, а не Mini — то есть из коробки можно подкинуть обычный «шнурок» от твоего андроида
  • 80MHZ(160MHZ от одной строчки) — 16MHZ Arduino Nano просто сидит на месте по сравнению с NodeMCU
  • 4MB Flash-памяти — приятное дополнение, хотя оно может ввести в заблуждение, так это не RAM-память, которой там всего 80 KB
  • Цена — 140-150 рублей за штуку. Немного дороже. чем голый ESP8266, но зато тут куча «вкусных плюшек»
  • Arduino IDE — возможность собирать прошивку прямо из этой среды

Из минусов пока не понравилось следующее:

  • Единственный аналоговый порт ввода/вывода, который причем еще и работает в диапазоне 3.3В
Рубрики
Без рубрики

Student App — Две недели работы и…

За две недели работы было произведено не очень много изменений:

  • В первую очередь, произошел первый рефакторинг кода через полгода после создания прототипа. Часть кода была перемещена в классы Old*.java, а также я попытался минимизировать зависимости. Теперь, когда мне предоставят доступ в БД системы, я смогу очень легко реализовать новые классы и методы, которые будут легко взаимодействовать с остальным приложением.
  • Был реализован парсер для http://press.tstu.ru/.
  • Соответственно, контент из парсера теперь будет показывать страница новостей.
    Это заняло больше 50% времени, так как реализация всего для меня была первым опытом.
  • Каждую новость теперь можно просмотреть отдельно, нажав на нее. Данный функционал был сначала сделан одним методом, а после прочтения документации на тему «Android Fragment» был переделан на основе этого класса. Но здесь требуются доработки.
  • Также мне очень хотелось попробовать систему контроля версий Git — я перенес приложение из Google Drive в нее, и теперь не беспокоюсь, что что-то может произойти с исходниками. Теперь я буду стараться выбрасывать на сайт также и changelog’и — это будет намного лучше.

Из видео ниже можно увидеть весь доступный сейчас функционал.

Рубрики
TSTU Cabinet

Последние правки в декабре TSTU Student App

Scr2
Полноценный Drawer компонент на Java
Scr3
Начинаем парсить кабинет