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

10.10.2023Рефакторинг структуры Finally Image Viewer

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

Функция setState сделалась обычной универсальной функцией, принимающей в качестве параметров, какую конкретно переменную состояния надо изменить и новое значение, и уже её реализация вызывает модификацию состояния через соответствующий хук.

Идея в том, что такое разделение на рендеринг, setState в качестве middleware и "ядро", позволит "пристёгивать" различные системы рендеринга к одному и тому же коду ядра, и, таким образом, появляется возможность сделать и корректно поддерживать версии компонента для Vue, VanillaJS и чего бы то ни было ещё.

30.08.2023I18n на бакенде и фронтенде

Реализована интернационализация основного VUE - приложения frontend и backend - функций на yii. Включая поддержку восточных (начали с арабского) языков. Ранее этому не уделялось должного внимания вследствие неактуальности вопроса. Реализована синхронизация переключений и сохранение языковых предпочтений на сервере, пока на уровне пользователя (решение о необходимости реализации на уровне устройства будет принято по результатам).

В ближайших планах - "перевернуть" не только тексты, но и весь интерфейс под RTL языки.

15.04.2023Виджет для WebRTC аудио- и видеозвонков

Реализован виджет для связи с использованием WebRTC протокола. Алгоритм соединения был прописан ранее (не мной), на основе библиотеки peer.js и системы сообщений faye в качестве сигнального сервера. Сам же виджет работает на vue в webView Cordova и реализует работу с медиапотоками и интерфейс для управления ими, а именно переключение тредов в потоке (включение-выключение видео, аудио, переключение основной и фронтальной камер).

Для передачи управляющих сервосообщений на противоположную сторону во время сеанса связи устанавливается WebRTC data connection, по которому другой стороне передаются сигналы о типе звонка (наличии видеотреда в потоке), включении/выключении камеры и так далее.

Читать все
22.12.2022Начинаем переход на vue3

Завел дополнительное vue-приложение в основном проекте, над которым работаю. Ряд виджетов для WebRTC соединения. Разумеется, на vue-3 (в целом фронтенд проекта живёт на vue-2). Осваиваю третью версию потихоньку. Перевод и основной части кода с vue-2 на vue-3 также не за горами.



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

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

В 21 году, для того, чтобы систематизировать свои новые знания современного стека, я закончил курс переподготовки в том же ННГУ.

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

JavaScript - основной язык разработки. Пишу на нем каждый день.

Vue - фреймворк основного проекта, на котором я задействован с начала 19 года. Основная часть проекта использует вторую версию, но есть уже кое-что и на третьей.

React - нередко использую в разработках помимо основного проекта. Пример.

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

Typescript - на данный момент не пишу на нем, однако он также входил в курс. К тому же, я имею дело со строготипизированными языками сейчас (Java) и имел ранее (С++ ещё в университете). Так что тоже легко актуализируемая вещь.

PHP - язык, который можно считать вторым основным. Использую каждый день, но не так активно, как js. На нашем проекте php пишет backend developer, используя yii2 framework. Я лишь дописываю кое-что не глобальное, иногда какую-нибудь action для api или поправляю уже существующую. То есть yii2 я знаю в общих чертах.

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

Android, Java. Так как я участвую в создании гибридных мобильных приложений, соответственно, я имею предвставление о разработке под андроид, в том, что касается самых основ. То есть есть понятие о верстке layouts, ресурсах, activities и их взаимодействии, intentions и их видах, permissions и их запросах, content providers, storages, threads и так далее. Так как большинство кода написано на java, использую его пока, переходить на Kotlin интересно, и как бы да, но сейчас некогда.

Cordova. Framework для гибридных мобильных приложений, предоставляющий мост между web-приложением JavaScript и системными API устройства с помощью механизма плагинов. Владею, могу такие плагины писать. Один из них можно посмотреть здесь.

В прошлом сделал также ряд сайтов на bitrix, drupal и даже joomla, но их уже давно нет онлайн, и знания этих систем актуальными не считаю.