Мир сегодня с "Юрий Подоляка"
Мир сегодня с "Юрий Подоляка"
Труха⚡️Україна
Труха⚡️Україна
Николаевский Ванёк
Николаевский Ванёк
Мир сегодня с "Юрий Подоляка"
Мир сегодня с "Юрий Подоляка"
Труха⚡️Україна
Труха⚡️Україна
Николаевский Ванёк
Николаевский Ванёк
Влад Кибенко // qbnk // Mini Apps, Development and Me avatar

Влад Кибенко // qbnk // Mini Apps, Development and Me

Стример, разработчик, блогер. Улучшаю платформу Telegram Mini Apps, создаю исключительные продукты, выступаю на конференциях.
Лобби: t.me/heyqbnk_chat
Twitch: twitch.tv/qbnk
TGlist रेटिंग
0
0
प्रकारसार्वजनिक
सत्यापन
असत्यापित
विश्वसनीयता
अविश्वसनीय
स्थान
भाषाअन्य
चैनल निर्माण की तिथिAug 05, 2022
TGlist में जोड़ा गया
Mar 24, 2025
संलग्न समूह

समूह "Влад Кибенко // qbnk // Mini Apps, Development and Me" में नवीनतम पोस्ट

Напоследок покажу пример. У нас наверняка в каждом приложении будет какой-нибудь файлик (или компонент), который описывает стили для текущей платформы. Например, для iOS у нас один шрифт, для Android — другой.

Чтобы корректно использовать плагин, нужно завести вот такие файлы:




Ну и сам блок (из методологии BEM) GlobalStyles:


При сборке под iOS, импорты GlobalStyles.common.scss и GlobalStyles.android.scss будут порезаны 🔪 и в итоге в бандл их CSS-код не попадет.

Плагин расписывать не буду, вы можете найти исходники в отдельном репозитории, который я под всю эту идею выделил — conditional-substitution-example (сам плагин). С позавчерашней трансляции я его подпилил, чтобы учесть больше кейсов и срезать больше ненужного кода. В каких-то местах пришлось отказаться от регулярных выражений в пользу парсинга в AST (начинается вот тут), так как их стало совсем недостаточно.



// Заключение

Какой итог? Мы сделали так, что имея одно приложение, мы генерируем N отдельных бандлов, которые загружаются пользователями без overhead-а. Клиент берет только тот бандл, который специфичен для его платформы.

Теперь знаете где это использовать еще эффективнее? В Платформере. Он позволяет указывать разные ссылки для разных платформ. Вы собираете приложение, получаете N бандлов, выгружаете в Mate, а Платформеру под каждую платформу отдаете ссылку на index-файл специфичный для этой платформы. И всё.

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

Не бойтесь писать полезные плагины, не бойтесь писать эффективные решения. Это не всегда так сложно, как кажется. На этом у меня всё, пользуйтесь на здоровье, и продуктивной недели! 😇
Трансляция запущена!

Разработка Android UI в Platformer-е / Solid.js

— Software and Game Development
twitch.tv/qbnk
🫵 We Need You, Developer

Это не учебная тревога. Вчера Павел согласился принять нашу помощь, поэтому приглашаю всех, кому не безразлична судьба Telegram Mini Apps, принять участие в групповом сексе волонтерском событии для разработчиков.

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

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

Если хотите участвовать, то следуйте правилам:
— Полностью описывайте кейс воспроизведения. Указывайте платформу и пошагово расписывайте, что нужно сделать для воспроизведения проблемы. Всегда проверяйте, что используете актуальную версию клиента.
Опционально. Описывайте причины возникновения проблемы и возможные способы её решения.

Я буду перепроверять все репорты, приводить их к необходимому формату, приоритизировать, и добавлять в документ. Публичный дашборд будет в Notion, его мы, вероятно, и передадим Павлу: ссылка на дашборд.
Павел ответил. Работаем.
Как порядочный гражданин, купил лицензию на WebStorm и GoLand на год. Обидно было осознать, что я потерял свою скидку из-за того, что получил Open Source лицензию на год. Эх..

Что удивительно, WebStorm перестал показывать уведомление о том, что услуги в России они не предоставляют. То-ли баг, то-ли повезло так.
Трансляция запущена!

29 лет. Запомните меня таким

— Just Chatting
twitch.tv/qbnk
🥳 Вот и 29 мне уже

Очередная достигнутая вершина в жизни любого живого организма — прожить год и не помереть. Этого, в целом, достаточно 😀

Если быть серьезным, то и в этом году были достаточно примечательные события — мы перебрались обратно в Тюмень, я ушел из Яндекса и устроился в организацию в TON, ездил на конференции с выступлениями, и наконец довел проект до состояния, которым уже кое-как можно пользоваться. Это был насыщенный воспоминаниями год, и я надеюсь, что таких будет еще больше впереди.

Как я уже когда-то говорил, День Рождения — это один из немногих дней в моей жизни, который буквально ощущается по-другому. Он будто бы улыбается тебе. Воздух пропитан какой-то атмосферой, которая говорит тебе, что это твой день. Жаль, конечно, что выпал он на рабочий день, но что уж тут поделаешь? ☹️

В общем, расписывать тут шибко не буду, остановлюсь на этом. Запомните меня таким в 29 — со смешными усиками, улыбкой и мимическими морщинами 😎

P.S. Сегодня с определенной долей вероятности включу трансляцию в 18:30. Работать не будем, поболтаем по душам, посмотрим видео, обсудим будущее канала на твиче.
Трансляция запущена!

Заканчиваем работу над Платформером

— Software and Game Development
twitch.tv/qbnk
Привет. Сегодня включаемся в 14:30, будем дорабатывать Платформер. Осталось совсем немного. Расскажу интересных вещей, связанных с разработкой и не только.

Не опаздывайте! 🥸
😏 Я нашел идеальное решение

Идеального решения не существует, это кликбейт, но я нашел отличное решение. Речь, конечно же, о том, чем мы занимаемся на трансляциях — Telegram UI Kit for Solid.js.

На прошлом стриме я рассказывал о потенциальной не столь значительной проблеме как сложная структура компонентов. Ловите пример списка с одним элементом:



Толстовато выглядит, неправда-ли? Тогда я сказал, что в этом ничего плохого нет (в этом и правда ничего плохого нет), потому как в моем понимании задача разрабатываемой мной библиотеки — дать максимально гибкий и простой набор компонентов не выходящий за то, что есть в UI Kit-е. Пользователь уже сам решает как эту гибкость использовать, и если она не нужна, то он может написать переиспользуемые компоненты, состоящие из вот этих непростых структур.

В данном примере каждый из компонентов отвечает за определенную часть структуры более сложного вышестоящего компонента. У ListIosItem может быть только 2 элемента — ListIosItemLeft и ListIosItemBody. У ListIosItemBody только ListIosItemBodyLeft и ListIosItemBodyRight. Каждый из этих компонентов описывает определенный элемент в родительском компоненте, и двинуться в сторону от этой структуры не выйдет, можно лишь повлиять на сами элементы, их атрибуты и события.

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

Ну а вот если говорить о минусах — то это громоздкость. Для описания элемента списка с одним лэйблом придется использовать 5 компонентов, что не очень удобно.

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



Идея получается достаточно проста — ты используешь только те суб-компоненты большого компонента, которые хочешь модифицировать. Все остальные остаются со своими стандартными настройками. То есть если я хочу подкрутить ListIosItemBody, то код будет уже такой:



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

UI Платформера сделаем до конца месяца, бета будет открытой 🫰

Всем хорошей рабочей недели!
Трансляция запущена!

Developing Platformer UI and Telegram UI Kit using Solid.js!

— Software and Game Development
twitch.tv/qbnk
Sup, lads! 👋

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

Хорошего дня и до встречи!
Я уже даже не знаю, над чем конкретно тут посмеяться, так много идей.

Давайте поясню, потому что у нас наверняка много новичков-программистов.

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

Во-вторых, будучи ИБ-шником по образованию, слышать термин "дешифровка" просто уморительно. Дешифровка — это про взлом алгоритма шифрования, либо же подбор его параметров с попыткой получить исходные данные из зашифрованных. Расшифровка — процесс, обратный шифрованию, то есть преобразование зашифрованных данных к первоначальному виду, имея необходимые для этого данные. Видимо, автор имел ввиду "парсинг" или "валидацию", но как при этом в голову могло прийти слово "дешифровка", вообще непонятно.

В-третьих, строгость типизации не имеет ничего общего с валидацией данных, полученных из третьих источников. Ты хоть на C# пиши, данные валидировать все равно придется, и это проблема абсолютно любого языка. То что кто-то используя TypeScript пишет "response as MyType" — не проблема TypeScript-а, а разработчика с руками из попы.

В общем, кек. Или как там принято? Ауф?
🪙 Платная личка в Telegram

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

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

Уже долгое время вокруг проблемы с личкой придумывались всякие workaround-ы, и вот, появилось более-менее конечное, рабочее решение. До появления Telegram Premium ограничивать список пользователей, которые могут тебе писать, нельзя было от слова "совсем". После появления премиума, у пользователей появилась возможность ограничить список пользователей контактами и другими пользователями с премиумом. Сами понимаете, это всё ещё не решает изначальную проблему, так как у многих пользователей / ботов есть премиум.

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

Стоимость сообщения настраивается и варьируется от 1 до 10 000 звезд. Да, наличие лимита всё ещё нельзя считать невозможностью написать в личку, но важно понимать, что если поставить лимит в 10 000, то вам вряд ли кто-то напишет, а если и напишет, то вы на этом неплохо заработаете 🫰 Ну а что боты? Они точно с таким ценником писать не станут.

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

В общем, фича однозначно полезная, буду пользоваться 💯
Трансляция запущена!

Development and shit!

— Software and Game Development
twitch.tv/qbnk

रिकॉर्ड

23.04.202523:59
1.8Kसदस्य
15.04.202520:13
200उद्धरण सूचकांक
27.02.202523:59
923प्रति पोस्ट औसत दृश्य
19.04.202523:59
1.1Kप्रति विज्ञापन पोस्ट औसत दृश्य
15.04.202520:13
98.55%ER
24.02.202504:26
51.85%ERR

विकास

सदस्य
उद्धरण सूचकांक
एक पोस्ट का औसत दृश्य
एक विज्ञापन पोस्ट का औसत दृश्य
ER
ERR
MAR '25MAR '25MAR '25MAR '25MAR '25APR '25APR '25APR '25

Влад Кибенко // qbnk // Mini Apps, Development and Me के लोकप्रिय पोस्ट

15.04.202517:02
Павел ответил. Работаем.
🫵 We Need You, Developer

Это не учебная тревога. Вчера Павел согласился принять нашу помощь, поэтому приглашаю всех, кому не безразлична судьба Telegram Mini Apps, принять участие в групповом сексе волонтерском событии для разработчиков.

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

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

Если хотите участвовать, то следуйте правилам:
— Полностью описывайте кейс воспроизведения. Указывайте платформу и пошагово расписывайте, что нужно сделать для воспроизведения проблемы. Всегда проверяйте, что используете актуальную версию клиента.
Опционально. Описывайте причины возникновения проблемы и возможные способы её решения.

Я буду перепроверять все репорты, приводить их к необходимому формату, приоритизировать, и добавлять в документ. Публичный дашборд будет в Notion, его мы, вероятно, и передадим Павлу: ссылка на дашборд.
21.04.202505:20
Напоследок покажу пример. У нас наверняка в каждом приложении будет какой-нибудь файлик (или компонент), который описывает стили для текущей платформы. Например, для iOS у нас один шрифт, для Android — другой.

Чтобы корректно использовать плагин, нужно завести вот такие файлы:




Ну и сам блок (из методологии BEM) GlobalStyles:


При сборке под iOS, импорты GlobalStyles.common.scss и GlobalStyles.android.scss будут порезаны 🔪 и в итоге в бандл их CSS-код не попадет.

Плагин расписывать не буду, вы можете найти исходники в отдельном репозитории, который я под всю эту идею выделил — conditional-substitution-example (сам плагин). С позавчерашней трансляции я его подпилил, чтобы учесть больше кейсов и срезать больше ненужного кода. В каких-то местах пришлось отказаться от регулярных выражений в пользу парсинга в AST (начинается вот тут), так как их стало совсем недостаточно.



// Заключение

Какой итог? Мы сделали так, что имея одно приложение, мы генерируем N отдельных бандлов, которые загружаются пользователями без overhead-а. Клиент берет только тот бандл, который специфичен для его платформы.

Теперь знаете где это использовать еще эффективнее? В Платформере. Он позволяет указывать разные ссылки для разных платформ. Вы собираете приложение, получаете N бандлов, выгружаете в Mate, а Платформеру под каждую платформу отдаете ссылку на index-файл специфичный для этой платформы. И всё.

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

Не бойтесь писать полезные плагины, не бойтесь писать эффективные решения. Это не всегда так сложно, как кажется. На этом у меня всё, пользуйтесь на здоровье, и продуктивной недели! 😇
Как порядочный гражданин, купил лицензию на WebStorm и GoLand на год. Обидно было осознать, что я потерял свою скидку из-за того, что получил Open Source лицензию на год. Эх..

Что удивительно, WebStorm перестал показывать уведомление о том, что услуги в России они не предоставляют. То-ли баг, то-ли повезло так.
24.03.202515:49
Трансляция запущена!

29 лет. Запомните меня таким

— Just Chatting
twitch.tv/qbnk
19.04.202511:07
Трансляция запущена!

Разработка Android UI в Platformer-е / Solid.js

— Software and Game Development
twitch.tv/qbnk
24.03.202509:12
🥳 Вот и 29 мне уже

Очередная достигнутая вершина в жизни любого живого организма — прожить год и не помереть. Этого, в целом, достаточно 😀

Если быть серьезным, то и в этом году были достаточно примечательные события — мы перебрались обратно в Тюмень, я ушел из Яндекса и устроился в организацию в TON, ездил на конференции с выступлениями, и наконец довел проект до состояния, которым уже кое-как можно пользоваться. Это был насыщенный воспоминаниями год, и я надеюсь, что таких будет еще больше впереди.

Как я уже когда-то говорил, День Рождения — это один из немногих дней в моей жизни, который буквально ощущается по-другому. Он будто бы улыбается тебе. Воздух пропитан какой-то атмосферой, которая говорит тебе, что это твой день. Жаль, конечно, что выпал он на рабочий день, но что уж тут поделаешь? ☹️

В общем, расписывать тут шибко не буду, остановлюсь на этом. Запомните меня таким в 29 — со смешными усиками, улыбкой и мимическими морщинами 😎

P.S. Сегодня с определенной долей вероятности включу трансляцию в 18:30. Работать не будем, поболтаем по душам, посмотрим видео, обсудим будущее канала на твиче.
अधिक कार्यक्षमता अनलॉक करने के लिए लॉगिन करें।