Увидел тут пост про календарик на E-Ink экране(вот: Дело было вечером, делать было нечего 2) и способе получения данных из гугла, а именно через такой его сервис как Appsscript. И немного распишу, в меру своего ковыряния в нем, что это такое и как его можно использовать.
Итак погнали. Apps Script это среда выполнения JavaScript кода от Google, использует V8 движок соответственно, но... с некоторыми особенностями, например не понятна какая версия ECMAScript в нем все таки используется, по ощущениям примерно 2021го года, но при этом у классов нельзя использовать приватные поля оО. Весь проект скрипта, сколько бы файлов вы в нем не создавали, будет считаться для движка одним большим файлом с общим окружением(плюс - не нужны никакие импорты/экспорты, минус - без тех же импортов и экспортов, сложнее следить за связями в обширном скрипте).
Внешний вид веб-интерфейса
Так для чего его можно использовать? - Можем получить данных из большинства гугл сервисов(там уже есть встроенные методы с подробной документацией по ним). Получили, а дальше что? - Можем записать эти данные в другие гугл сервисы, например Гугл таблицы(в них кстати по умолчанию вшит файл appsscript`a), гугл док, гугл календарь, bigquery и т.д. Или же вывести на нарисованную тут же веб страницу(можно по классике прикручивать внешние библиотеки кода, по типу Jquery и стилей, например bootstrap) А я хочу записать это в свой "гугл" с преферансом и куртизанками! - Да ок, ок. Можно или отправлять эти данные из скрипта через fetch или сделать скрипт не просто исполняемым по запуску функции вручную или по триггеру, но и развернуть его как веб-приложение, что позволит делать к нему get и post запросы(Что кстати позволяет вам написать того же телеграм бота).
Примеры сервисов
Это были простые варианты, более продвинутые, например создание библиотек для использования не представленных в это среде сервисов и ресурсов(например библиотека для работы с firebase - https://github.com/RomainVialard/FirebaseApp) или создание дополнений для тех же гугл таблиц или презентаций, останется как задача со звездочкой, для тех кого это заинтересует.
Примеры дополнений и для каких сервисов их могут писать
Когда я разбирался с программируемыми калькуляторами, то думал, как бы элегантнее протестировать функциональность устройства. Один из известных способов проверки – это реализация какой-либо игры.
Игр для калькуляторов, как на просторах бывшего СССР, так и за рубежом громадное количество, остаётся только выбрать. Наиболее популярная — это «Посадка на Луну». Однако, для меня она показалась скучной и неинтересной, а сам код сложным и запутанным. Поэтому мой выбор пал на крестики-нолики, так как все мы играли в них в школе, и мне стало интересно сыграть в неё с калькулятором.
Реализовать игру решил на модели HP-32S, поскольку он мне очень полюбился за красоту архитектурной реализации и удобство программирования.
❯ Основа программы
В предыдущей своей статье "Калькуляторы с обратной польской нотацией" я делал обзор литературы для программируемых калькуляторов. Среди которой была замечательная книга А.Г. Гайшут "Калькулятор твой помощник и соперник в играх".
В этой книге приводится огромное количество примеров игр на калькуляторе и, в частности, пример игры в крестики-нолики:
Мне не удалось найти описания логики работы этих игр, а автор книги, к сожалению, умер в 2015 году. Попытка искать ответ в публикациях автора, любезно предоставленных на его личном сайте, не увенчалась успехом.
Поэтому придётся разбираться с этой программой самостоятельно. Приведу текст и описание программы из книги под спойлером:
Описание программы Крестики-нолики из книги:
Главная задача – это перенос этого кода с МК-61 на калькулятор HP-32S. Для начала, разберёмся как эта программа работает.
❯ Проверка программы на МК-61
Первое, что я сделал – это перенабрал код из книги в формате, который понимает онлайн-эмулятор МК-61.
Кстати, если интересно, то можно попробовать поиграть в эмуляторе, чтобы понять принцип работы. Для этого копируем код, вставляем в область «Код программы:» и нажимаем кнопку «Ввести в память». Картинка из книжки выше подсказывает нам, что калькулятор даёт координаты, куда ставить "X", а мы ему в ответ передаём координаты, куда ставить "O".
Координаты для игры
Чтобы начать играть на клавиатуре калькулятора, нужно нажать кнопку [С/П]. В ответ будет выведено число, первое число всегда «9» (центр поля). В ответ необходимо ввести свою координату, например, «2» и нажать [С/П]. И так далее, пока вы не проиграете (калькулятор выведет «77», либо будет ничья (калькулятор выведет «0»).
Калькулятор победил
Чтобы посмотреть последний ход калькулятора, надо обменять регистры X и Y местами, для этого нужно нажать на клавишу [⟷].
Проверка показала, что всё прекрасно работает как в эмуляторе, так и на живом калькуляторе, и ошибок в программе нет.
❯ Анализ кода программы для калькулятора МК-61
Для понимания работы программы, я переписал её на python. Конечно, даже при переносе на привычный язык программирования, код будет выглядеть немного диковато, поскольку реализовывался на совершенно иных принципах, но он хотя бы будет читаемым для остальных пользователей.
Особенность программирования МК-61 в том, что он пропускает команду перехода, если условие истинно, и исполняет — если ложно! Поэтому все условия для python пришлось инвертировать. Плюс, я для удобства ввёл дополнительные функции, которые также перенёс впоследствии в HP-32S: функция вывода координат крестиков и ввода ноликов, функция ничья и победа калькулятора:
Первое – инициализирую регистры калькулятора:
После всех подпрограмм идёт головная программа:
Можно увидеть, что в любом случае в самом начале крестик будет стоять на координате 9. Вся основная логика сокрыта в подпрограмме.
Из всего кода я понял, что второй ход калькулятора будет на единицу меньше оппонента, а если ход был в координату «1», то равен восьми. Но вот что делает остальная логика программы, особенно зачем там тригонометрическая функция, для меня осталось загадкой. Буду рад читателям, если кто-то сможет прояснить, как же работает эта программа.
И, да, код вполне себе работоспособен, в чём несложно убедиться:
❯ Перенос кода на HP-32S
Напомню, что калькулятор HP-32S, который есть у меня, принадлежит семейству калькуляторов HP10B/14B/17B/17BII/19BII/20S/21S/22S/27S/28S/32S/32SII/42S, таким образом, всё, что приводится ниже, с небольшими адаптациями можно будет перенести и на другие модели этой серии.
Трудозатраты в предыдущей главе, по переносу кода на python, были проделаны с двумя целями:
Понять, как же работает этот код (увы, не выполнено).
Более удобно переносить на другую модель калькулятора.
Этакая программная блок-схема, которая позволяет понять, какие регистры нужны, какие переходы и прочее.
Вооружившисьдокументацией на калькулятор HP-32S, я переписал программу крестиков-ноликов с питона для него. Для удобства я делал это в таблицах Exel. Как я уже говорил, особенность калькулятора в том, что он маркирует каждую строку буквой и цифрой, а любая метка – это смена буквы. Таблицы идеально подходят для этого.
Ниже под спойлером, приведён код программы. Если вы хоть немного знаете ассемблер и какой-то другой язык программирования, хоть тот же BASIC, то без труда сможете понять, что же там происходит.
Код программы для калькулятора HP-32S:
В силу того, что на калькуляторе HP-32S можно сделать вывод на экран конкретного регистра (с указанием имени регистра), а также запрос ввода другого конкретного регистра, то ввод-вывод становится чуть более интерактивным и интересным.
Лучше один раз увидеть, чем тысячу раз прочитать.
❯ Выводы
Изначально задача казалась мне такой простой, но заняла у меня достаточно приличное время. Её ценность состояла в том, что мне удалось разобраться — как же программировать для калькулятора HP-32S. В результате оказалось, что из модельного ряда калькуляторов, с которыми я занимался — эта версия оказалась самая дружелюбная и удобная.
Другой задачей, которую я хотел решить — это разобраться, каким образом изобретались подобные программы для микрокалькуляторов. Из-за того, что у калькулятора ограничена память программ, производилась какая-то дичайшая оптимизация, поэтому она выглядит так запутанно. Но, к моему сожалению, ни толковой литературы, ни описания, как это делалось, мне не удалось найти.
Поэтому, если у вас, уважаемые читатели, есть идеи о том, как же работает программа крестики-нолики (можно анализировать код python), то я с удовольствием их выслушаю.
Сегодня мы поговорим про открытый и бесплатный CSS-фреймворк-Bulma.
Тема будет посвящена использованию гридов и макетов в данном фреймворке, а начнем с вложенных колонок(ВК)...
Вложенные колонки
Bulma позволяет вкладывать колонки внутрь друг друга, создавая более сложные макеты. Вот пример:
Макеты будут с различной шириной и высотой колонок, что открывает возможности для формирования уникальных и гибких пользовательских интерфейсов. Вот несколько примеров использования ВК:
Макет с боковой панелью
Одним из распространенных примеров является макет с основным контентом и боковой панелью. ВК позволяют легко этого достичь:
Макет с несколькими панелями
Вы также можете использовать ВК для создания макетов с несколькими панелями или секциями на одной странице:
Макет с разделенными секциями
ВК также позволяют формировать макеты, где секции визуально разделены, но при этом сохраняют гибкость:
Вы можете комбинировать вложенные колонки с другими классами и компонентами Bulma, такими как box, tile, hero, чтобы создавать более сложные и стильные макеты.
Важно помнить, что при использовании ВК необходимо следить за вложенностью и правильно закрывать теги, чтобы избежать ошибок в структуре HTML.
Ruby - это язык программирования, который известен своей простотой и элегантностью. Он позволяет писать код, который легко читать и понимать. Одна из ключевых особенностей Ruby - это его философия "программирование для людей, а не для компьютеров". Это означает, что Ruby стремится делать код читаемым и интуитивно понятным, даже для тех, кто не является профессиональным программистом.
Отличительные черты Ruby:
1. Простота и читаемость: Ruby разработан так, чтобы его код был легко понятен человеку. Он использует естественный язык и четкие конструкции, что делает его идеальным выбором для новичков.
2. Объектно-ориентированное программирование: Ruby полностью объектно-ориентированный язык, что означает, что все в Ruby является объектом. Это обеспечивает гибкость и удобство в разработке программ.
3. Динамическая типизация: В Ruby типы переменных определяются автоматически во время выполнения программы. Это делает код более гибким, но также требует более внимательного тестирования.
4. Ruby on Rails: Ruby наиболее известен благодаря фреймворку веб-разработки Ruby on Rails. Он обеспечивает быструю и эффективную разработку веб-приложений за счет использования принципов соглашения перед конфигурацией (Convention over Configuration) и принципов проектирования Model-View-Controller (MVC).
5. Активное сообщество: Ruby имеет широкое и активное сообщество разработчиков, которые поддерживают и развивают язык, делая его более мощным и удобным для использования.
В целом, Ruby - отличный выбор для начинающих программистов благодаря своей простоте и удобству в использовании, а также для опытных разработчиков, благодаря своей мощности и гибкости.
Привет, я начинающий веб разработчик. Хотелось бы узнать, как у более опытных программистов. Как вы ускоряете разработку. Допустим для C# есть библиотека ASP.NET которая включает в себя упрощённое создание моделей, по уже созданной БД. Для front-end есть библиотеки по типу Bootstrap или Antd для использования уже готовых компонентов для разработки. Для повторной компиляции, после изменения, без ручной остановки и запуска приложения библиотека - nodemon. Какие ещё есть библиотеки и методы для ускорения ращработки? Привет, разработчики! Я начинающий веб-программист, и у меня есть вопрос к более опытным коллегам. Как вы ускоряете процесс разработки и повышаете свою продуктивность?
Для C# есть отличная библиотека ASP.NET, которая значительно упрощает создание моделей на основе существующей базы данных. Для front-end разработки существуют такие популярные библиотеки, как Bootstrap и Antd, предлагающие готовые компоненты и ускоряющие процесс верстки. Для автоматического перезапуска приложения после внесения изменений без ручной остановки и запуска используется nodemon.
Но я уверен, что есть и другие полезные инструменты, библиотеки и методологии, которые могут существенно повысить скорость разработки. Поделитесь, пожалуйста, своими наработками и лайфхаками в этой области. Буду благодарен за любые советы и рекомендации!
Также было бы интересно узнать, как вы организуете свой рабочий процесс, следуете ли определенным методологиям?
Жду ваших ответов и историй из реального опыта. Уверен, что они будут полезны не только мне, но и многим начинающим разработчикам!
Интервью с руководителем Telegram Apps Center – глобального каталога приложений, который стремится встроиться в приложение Telegram. И кажется, у него есть все шансы это сделать в ближайшие год-два.
Глеб Воронцов, гость моего недавнего выпуска подкаста «Стартап-Секреты», давно понял, что такое настоящие супер-приложения.
До недавнего времени он возглавлял VK Mini Apps, где публикуются полезные утилиты внутри самой популярной социальной сети в России.
Сегодня Глеб возглавляет направление Telegram Mini Apps в TON Foundation, при поддержке которого развивается Telegram Apps Center (tApps Center).
Telegram Apps Center – глобальный каталог ботов в Telegram, который планирует со временем стать частью интерфейса нашего любимого мессенджера.
Вообще говоря, сейчас уже трудно представить Telegram как мессенджер в традиционном понимании: для пользователей из России он заменил новостные источники, социальные сети, переписки, а также множество других полезных приложений, которые используются ежедневно.
Сегодня в Телеграм больше 900 млн пользователей, и огромная часть из них используют новые возможности площадки – мини-приложения.
Однако у всего этого многообразия есть очевидная проблема: найти нужного бота самому практически невозможно.
В приложении нет единого каталога сервисов, а большинство сторонних площадок не обновляют свои каталоги или отдают лучшие места в топах за деньги.
О перспективах развития мини-приложений внутри Telegram, успешных примерах, особенностях каталога и грантах для разработчиков приложений я и поговорил с Глебом.
Главная страница каталога Telegram Apps Center
Почему единый каталог появился только сейчас
Первые телеграм-боты начали появляться еще в 2015 году, и с тех пор количество пользователей и возможности функционала с каждым годом росли.
В последнее время полезных ботов появилось так много, что мне даже пришлось создать отдельный телеграм-канал для рассказа о самых интересных из них.
Поэтому в разговоре с Глебом я задал вопрос: почему официальный каталог ботов в телеграм появился только сейчас?
По его словам, важным показателем перспектив «магазина приложений внутри Telegram» для команды разработчиков tApps Center был успех VK Mini Apps, где Глеб работал до прихода в команду Telegram.
Секрет популярности VK Mini Apps
На сегодняшний день платформа VK Mini Apps насчитывает до 50 млн уникальных пользователей в месяц.
То есть большая часть юзеров социальной сети заходят в Mini Apps и пользуются сервисами внутри приложения.
Глеб стоял у истоков создания VK Mini Apps и прошел путь от разработчика до руководителя бизнес-подразделения, поэтому я не мог не спросить у него про секреты успеха платформы от VK.
Разработчики VK Mini Apps
Большинство веб-приложений внутри VK работают в B2C-сегменте, так как пользователи в основном заходят в соцсеть ради развлекательного контента в свободное время.
Однако внутри VK крутится большой бизнес-сегмент, а сообщества нуждаются в инструментах для развития своих площадок и привлечения нового трафика. Так что в B2B-сегменте также представлено немало приложений, помогающих выстраивать воронки, привлекать трафик и оформлять свои сообщества.
Учитывая, что Телеграм уже давно перестал быть обычным мессенджером, идея создания своего каталога веб-приложений стала очевидна для команды TON Foundation.
Кто такие TON Foundation и зачем им развивать Telegram Apps Center
TON Foundation – это международная организация, зарегистрированная в Швейцарии, которая финансируется самыми щедрыми держателями TON и помогает развивать блокчейн-технологии внутри TON.
Именно благодаря блокчейну TON в Telegram появилась криптовалюта, которая интегрирована во многие сервисы: от Telegram Ads до пользовательского кошелька. Возможности ботов за счет крипты были серьезно расширены.
Глеб и команда разработчиков надеются, что в скором времени Павел Дуров добавит точку входа в каталог с каким-нибудь свежим обновлением Телеграм, и Telegram Apps Center появится у каждого пользователя мессенджера.
Серьезная преграда на пути к интеграции каталога в Telegram – это существующая политика App Store, которая ограничивает возможности встроенных каталогов приложений. Так что, возможно, нам придется подождать еще несколько директив от Европейского Союза, чтобы представить официальный маркетплейс внутри мессенджера!
Далее мы с Глебом поговорили о том, как устроен Telegram Apps Center: какие приложения будут интересны пользователям, сложно ли попасть в каталог и как команда планирует поддерживать талантливых разработчиков
Про развитие Telegram Apps Center
Начать наш разговор мы решили с кейса любимого приложения в Apps Center от Глеба: им оказалась игра про развитие своего питомца под названием Gatto.
Gatto – популярная игра, которую активно продвигал Telegram Apps Center
Telegram Apps CenterСмысл игры максимально простой: вы развиваете своего питомца, следите за его здоровьем и одеваете его в красивую одежду. Фишка Gatto в том, что ваших питомцев потом можно продать другим игрокам за реальные деньги, и с каждым уровнем его ценность растет.
Приложение Gatto взлетело в топ рейтинга Apps Center, а аудитория растет на тысячи процентов в месяц.
Сегодня в топе каталога в основном развлекательные приложения, и это не воля судьбы, а продуманная стратегия от Глеба и команды по захвату рынка.
Дело в том, что простейшие игры с возможностью заработать реальные деньги легко привлекают пользователей на площадку. Из-за этого растет популярность каталога и TON в целом.
Так что сейчас именно развлекательные сервисы чаще всего попадают в категорию Editor’s Choice.
Откуда Telegram Apps получает пользователей
Глеб и команда понимают, что для привлечения трафика не стоит использовать традиционные инструменты, вроде рекламы в поисковой выдаче.
Telegram уже имеет 900 миллионов пользователей, и именно они могут зайти в каталог и выбрать себе Web-приложение по душе.
Так что основной источник трафика для каталога – это именно реклама внутри Telegram.
Изначально ребята рекламировались через Telegram Ads – площадку таргетированной рекламы, которая показывается у разных каналов.
Таким образом стоимость одного пользователя в среднем составила $1. На удивление, качество пользователей было сильно выше, чем ожидала команда маркетологов.
Если изначально считалось, что привлеченные пользователи будут просто заходить на сайт и уходить с него, то в реальности каждый юзер в среднем находил и открывал больше двух приложений. Это говорит о том, что платформа действительно интересна тем, кто прямо сейчас пользуется телеграмом.
В последнее время команда Глеба начала привлекать трафик инструментами Веб 3.0, а именно через сообщество Notсoin. Пользователям давали задания перейти на марктеплейс приложений, за что они получали шанс намайнить себе монетку и продать её за реальные деньги.
Однако с такими методами привлечения трафика фокус на развлекательные приложения становится еще больше. Notсoin пользуется определенная аудитория пользователей, и вряд ли они будут заинтересованы в приложениях для личной эффективности.
Однако Глеб и команда понимают, что именно такие юзеры смогут привлечь пользователей к платформе и готовы активнее осваивать что-то новое. Так что, возможно, на данном этапе это и есть самая правильная стратегия.
Аудитория каталога
Мы классно общались про привлечение пользователей, и тут я понял интересную вещь: а как узнавать свою аудиторию при условии, что Telegram помешан на приватности пользователей? И нет, тут не будет разоблачений политик использования Телеграм: Глеб и команда знают не так уж много о пользователях площадки. И это был совершенно новый опыт для команды разработчиков, которые перешли из VK Mini Apps: там строить портреты своей аудитории было проще простого.
Чтобы узнать о своих пользователей больше, разработчикам пришлось выходить на прямой контакт и запускать опросы аудитории.
Оказалось, что пользователи из СНГ составляют всего четверть аудитории.
Весь расклад выглядит примерно так:
25% - Россия и СНГ
25% - Европа
25% - Южная Азия
Глеб добавил, что в последнее время ребята наблюдают рост аудитории из США: она уже составляет 10% и активно растет.
Как попасть в каталог
Критерии отбора максимально простые: нужно быть веб-ботом или игрой. Именно такие разработки чаще всего попадают в рекомендации пользователей. У текстовых ботов приоритет ниже.
Это связано с тем, что сейчас внутри магазина модерация происходит вручную: команда самостоятельно отсматривает кандидатов и выбирает лучших.
Однако Глеб рассказал, что его команда прямо сейчас работает над тем, чтобы сделать свой каталог полноценным маркетплейсом. Уже скоро пользователи смогут оставлять оценки, и это должно стать основным алгоритмом продвижения приложений в магазине.
Пока же работать приходится в «ручном режиме».
Как защитить свое приложение от накрученных отзывов
Как только у разработчиков появится реальная мотивация попадать в топ магазина, разработчикам придется столкнуться с проблемой накрученных отзывов. Я как автор сервиса с голосованием за лучшие стартапы Product Radar понимаю, что с этой проблемой очень сложно бороться.
Глеб и команда понимают, что сейчас у них не хватает ресурсов на полноценную службу модерации. Тем более что с ростом продукта модерация будет отнимать все больше ресурсов, которые можно было бы вложить в рост бизнеса. Поэтому на помощь пришла главная фишка сервиса: блокчейн.
Команда планирует вводить уникальный идентификатор каждого пользователя, чтобы фейковые аккаунты просто не могли попасть на платформу. Для реальных юзеров это никак не усложнит процесс регистрации, но при этом добавит много проблем для тех, кто хочет “хакнуть систему”.
Гранты для разработчиков
Кроме создания пространства для стартапов, команда Telegram Apps создала гранты для талантливых разработчиков.
Вот основные виды грантов:
Грант на создания стартапа, до $10 тысяч: если у вас есть команда, классная идея и желание сделать проект внутри блокчейна TON.
Грант на развитие проекта, до $10 тысяч: этот вариант подойдет тем, кто уже развивает свой проект внутри блокчейна TON, но хочет получить деньги на улучшение своего продукта.
Грант на интеграцию в TON, до $50 тысяч: если у вас уже есть продукт с существенной аудиторией, который пока не внедрен в экосистему TON, вы можете получить грант и развивать токеномику внутри своего продукта самостоятельно.
Ребята получают рост активности внутри TON, а стартапы – нужное финансирование. Win-win ситуация, получается.
Что читать/слушать/смотреть, чтобы быть в теме TON и мини-приложений
Телеграм-каналы:
The Daily Ton – канал для тех, кто хочет узнать больше про развитие TON и всего, что с ним связано;
Web3 на доступном – канал, где простым языком рассказывают про интернет 3.0 и с чем его едят;
Книга:
50 бизнес-моделей новой экономики - история успеха единорогов, которые появились за последние 20 лет, и поменяли правила ведения игры
Аниме:
Акир – тот самый случай, когда картинку из детства стоит пересмотреть уже во взрослом возрасте, чтобы открыть для себя все скрытые смыслы.
Гуррен-Лаганн – картина, которая начинается со стандартной истории про становление героя и заканчивается проблемами всего человечества.
Главный секрет успеха стартапа
Этот вопрос я задаю всем гостям моего подкаста, и Глеб не стал исключением.
По его мнению, рецепт успеха состоит из двух ингредиентов:
Мотивированная команда, которая хочет развивать друг друга.
Идея, которая создает ценность для пользователя и решает его проблем.
***
Делитесь своим мнением по теме в комментариях, рекомендуйте новых гостей, и, конечно, подписывайтесь на мой хаброблог и телеграм-канал подкаста «Стартап-секреты», чтобы узнавать больше об ИТ-бизнесе в России и за ее пределами.
На сайте подкаста «Стартап-секреты» вы найдете все выпуски с возможностью фильтровать по интересующей вас теме, например, «Запуск стартапа», «B2B-проекты», «Инвестиции» или «Глобальные рынки».