проєкти

Friendship ended with Heroku, now fly.io is my best friend.

Коли я починаю проект то завжди намагаюсь застосувати нову технологію. Для @Donate1024Bot я обрав дві таких: хостинг на fly.io та верстку з Tailwind CSS. І якщо остання завдала клопоту, то перша виправдала себе на 100%. Про це і розповім. Вперше я натрапив на fly.io на HackerNews, де обговорювався їх блог-пост A Foolish Consistency: Consul at Fly.io. Я тоді прочитав цей матеріал і подумав...

Новини Donate 1024: статистика монобанок, реквізити, алгоритм видачі, спрощення UI

Того тижня я сумлінно працював над покращенням @Donate1024Bot. Зараз є 380 підписників з активованими сповіщеннями. Спрощення UIЗамість окремої кнопки «статистика» зробив відображення кількості людей які задонатили відразу на кнопці «готово». Кнопка реактивна та буде сама оновлювати своє значення у всіх користувачів як тільки хтось відмітить що він зробив донат. Чим менше кнопок тим краще. РеквізитиНомери карток та монобанок виділені в окрему секцію та відформатовані так щоб...

Новини Donate 1024: перші користувачі, безумовна підписка, верифікація, «статистика»

Всім привіт! Завдяки публікації на каналі ҐРУНТ бот @Donate1024Bot підключило собі багато користувачів—більше 200! Я був трошки неготовий до такого 😅. Дякую всім хто приєднується! Наразі в нас є 320 людей, тобто продукт комусь потрібен. Радий що моя гіпотеза підтвердилась. Безумовна підпискаПерша зміна яку я зробив це спрощення «реєстрації». Тепер, якщо ви почали діалог з ботом, то він одразу вважатиме що ви хочете отримувати щоденні нагадування....

Donate 1024 — бот для щоденного нагадування про донати

Зробив бота який щодня надсилатиме вам нагадування про донат. Потрібно розпочати діалог з @Donate1024Bot, та натиснути там команду /subscribe. Кожного дня бот буде обирати один із зборів які є у базі та пропонувати вам. Рекомендована сума донату — 1024 грн, звідси і назва. Оголошення про збори грошей додаються через краудсорс: пересилайте лінк на збір за допомогою бота і якщо все гаразд то він попаде до черги. Це...

Статус бот для телеграму

Торік я помітив, що став надто багато часу проводити у нашому пиріжок чаті. Постійне спілкування відбирало енергію, яку можна було б спрямувати на корисні справи. Взагалі, чат де ти активно спілкуєшся це чорна діра, куди непомітно витікає все мислепаливо. Тому я чат передав довіреній особі, а сам з нього вийшов. Але мені хотілось залишити можливість видаляти повідомлення та банити користувачів. Чат прив'язаний до каналу і відповідно...

Ищу лопату

Во время золотой лихорадки больше всего зарабатывает продавец лопат (и кирок). Некоторое время назад на форуме HLTV посвящённом соревновательному контр-страйку, я прочитал пост человека, который утверждал, что разработал довольно точную модель для прогноза исходов матчей. Мне эта идея показалась интересной, по матчам есть очень много статистики и можно было бы что-то придумать. Но дальше возникает вопрос—как это применять? Если делать ставки самостоятельно, то рано или...

Архитектура современных веб-приложений на примере adopt.com.ua. CMS. Мониторинг. Аналитика

Так как у меня нет тестов кроме линтеров, то нужно быть готовым быстро фиксить ошибки на проде. Для этого используются логгеры и трекеры ошибок. Логгер я не использую, так как у меня пока что нечего логировать особо. А вот для трекинга ошибок я пользуюсь отличным сервисом Sentry. Как он работает? Вы подключаете SDK в своё приложение, и при возникновении любой ошибки она будет отправлена на сервера...

Архитектура современных веб-приложений на примере adopt.com.ua. Масштабирование

Предущие части: введение, внешние сервисы Сейчас вся моя инфраструктура крутится на самых дешёвых и простых инстантсах. 512 мегабайт памяти, редис на 25 мегабайт, какой-то дохлый постгрес. Всего этого хватает чтобы сайт бодро работал. Что будет, если завтра ко мне придет не 1000 пользователей в день, а 1000000? Чтобы это узнать, нужно проводить нагрузочное тестирование. Для этого есть специальные инструменты: ApacheBench, Apache JMeter, Gatling и другие. Они...

Архитектура современных веб-приложений на примере adopt.com.ua. Внешние сервисы

В предыдущей части я рассказал о ядре. Теперь пройдемся о внешних вещах. На Heroku эфемерная файловая система. Это значит, что после перезагрузки инстанса, например при редеплое, все записанные файлы пропадут. Основной контент сайта—это фото, поэтому их нужно где-то хранить. Для этого мы используем AWS S3. Файлы прозрачно загружаются на S3 с помощью RoR, для этого не нужно писать дополнительного кода. То же кстати есть и...

Архитектура современных веб-приложений на примере adopt.com.ua

Я разработчик сервиса по пристройству животных — https://www.adopt.com.ua/ Там вы можете найти себе друга—котика или собачку. Хотя сайт простой, я применяю те же подходы для разработки своих коммерческих проектов. Если бы у меня стояла задача делать стартап, то я всё делал бы так же. Расскажу о том, как всё устроено внутри. Сайт сделан на Ruby on Rails. Это веб-фреймворк который предоставляет всё,...

Работа с джунами-волонтёрами и adopt.com.ua год спустя

Ровно год назад я опубликовал объявление о поиске джунов для работы над проектом—сайтом по пристройству животных. Вот оно: https://t.me/full_of_hatred/235 Отозвалось очень много людей: около 40 человек. Я сообразил небольшое тестовое задание, очень простое, 10 его сделали. Из 10 сделавших я начал отбирать по порядку людей и пробовать с ними работать. Несколько человек отвалились вскоре—у них была основная работа...