Step by step 🧑‍💻
772 subscribers
80 photos
4 videos
1 file
84 links
Дневник одного программиста
Download Telegram
Нашел отличную классную библиотеку MoreToggles.css

Теперь не нужно пилить самому переключатели и придумывать дизайн. Есть много разных готовых решений.

Полезно будет тем, кому нужно на проекте или кто хочет разобраться как это работает.

Держите
This media is not supported in your browser
VIEW IN TELEGRAM
Занимательная форма входа в виде собаки.

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

Посмотреть как устроено можно тут:

Исходник
1👍1
С днём программиста!!!! 😉
👍1
Dropzone.js

Простая библиотека, которая позволит вам настроить окно загрузки файлов с помощью drag-and-drop.

Документация по настройке
Алгоритм на все случаи жизни
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Учим английский вместе с программистом 😆
👍2😁2
This media is not supported in your browser
VIEW IN TELEGRAM
Наглядный пример генетических алгоритмов

Украинский разработчик из Uber наглядно показал, как работают генетические алгоритмы и описал это в своём блоге.

На странице с этим приложением, можно посмотреть как машинка учиться парковаться. Там же можно найти кучу статистики, поиграться с настройками, почитать как это работает и найти исходный код проекта на React с использованием TypeScript.

Советую всем почитать и разобрать по кусочкам всю информацию. Очень полезно.
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Симуляция Жизни

Давно подписан на один очень крутой YouTube-канал Onigiri. Там рассказывают про интересные и сложные алгоритмы, визуально их показывая.

Одно из последних видео про "симуляцию жизни". А точнее про клеточные автоматы. Я пока сам в этом не разобрался, но решил с вами поделиться. Как говорил великий классик, "Нихуя непонятно, но очень интересно" 😂.

🎬Видео
📋Текстовая версия
💻Приложение ("симуляцию жизни")

Ссылки на исходники, можете найти в статье, внизу

P.S. Это не реклама, а моя личная рекомендация. Рекламы тут не бывает 😊
👍1
План обучения PHP-разработчика в 2022 году

Если вам интересен PHP или вы хотите стать backend-разработчиком, вот вам подгон на 2022 год.

Статья подойдет как новичкам так и уверенным разрабам на PHP.

👆 Click
👍2
👍21
Инструмент, который превращает ваш профиль на GitHub в портфолио

Интересная штука, которую откапал на просторах GitHub. В репозитории проекта есть все инструкции по настройке и запуску, также интерактивное демо

https://github.com/imfunniee/gitfolio
Говорят что знание SQL поднимает потенцию у мужчин и увеличивает грудь у женщин.

Давайте проверим, так ли это. Вот вам отличный тренажер на английском языке для изучения SQL

https://sqlbolt.com/
😁1
В догонку к вчерашнему посту

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

Сохрани чтобы не потерять.

👆Click
Всем привет!
Поздравляю всех с наступающим 2022 годом!!!🥂

Хочу пожелать вам крутых достижений в работе и учебе, интересных проектов и счастливого релиза!

Пусть в этом году мы все достигнем чего-то, чем будем гордиться.

Ну а я постараюсь радовать вас новым полезным контентом и надеюсь запущу задуманные проекты для вас.😁
🎉6👍4🔥3
Всем привет. 

Много времени прошло с момента последнего моего поста. И достаточно много печальных событий уже произошло...

В связи с этим, подумал написать простую инструкцию по тому как развернуть свой VPN сервер. Я понимаю, что сейчас многим может быть не до этого, но в России сейчас много информационных ресурсов блокируют и эту блокировку можно обойти только благодаря VPN.

Вам была бы полезна данная инструкция?

Да - 121
👍👍👍👍👍👍👍👍 94%
Нет - 8
👍 6%
👥 129 человек уже проголосовало.
👍26🔥3
Привет, друзья!

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

Хотелось бы узнать, интересно ли вам было бы узнать больше о том, как создаются боты, какие инструменты используются и с какими сложностями можно столкнуться в процессе? Думаю, могу поделиться полезной информацией и инсайтами, которые помогут избежать многих ошибок.

Жду ваших реакций и комментариев!
1👍35🎉1
Круто, что здесь всё еще есть жизнь! 👍
Думаю, попробую превратить канал в личный блог — посмотрим, как оно пойдет.

Так что же произошло за это время?

Забросил канал по разным причинам, но главная — лень. Изначально я хотел создать учебник для тех, кто хочет стать программистом. Предполагалось, что это будет легкий путь смены профессии. Делал задания, находил полезные материалы, мемы, писал обучающие статьи. Одна из них, “Git для новичков”, до сих пор на первых позициях в поиске (да, можете сами убедиться!). Количество ее просмотров просто поражает.

На каком-то этапе я решил автоматизировать этот процесс, потому что, честно говоря, не особо люблю вести соцсети — это реально утомляет. Я начал разрабатывать тренажер, где слева идет задание, а справа — окно для написания кода. Код был почти готов, но я выдохся на этапе создания кучи заданий.☹️

Проект так и остался лежать в Git. Один я не вытянул бы его, да и работа параллельно съедала уйму времени. Позже могу выложить исходники, если вам будет интересно.

А потом, спустя год, наступило 23 февраля 2022 года. Через неделю мне предложили уйти с работы, потому что в компании резко наступил кризис. Пошли слухи о блокировках, в том числе Telegram и "Запретграмма". Тогда я решил настроить VPN для своих близких, чтобы не терять с ними связь, ведь никто не знал, что будет дальше.

За день поднял сервер и написал Telegram-бота на PHP. Для backend взял Symfony, а VPN-сервера работали через Outline. Каждый пользователь получал один ключ на подключение, доступный тогда только через сервера в Нидерландах.

Разослал бот друзьям и родным, и всё это было бесплатно. За день до блокировки попросил друзей поделиться ботом в сторис — и тут начался настоящий хаос.

За первый месяц ботом воспользовались больше 7000 человек. Я и не думал, что это всё так разрастется. Каждый день покупал новые сервера, потому что старые были переполнены. Этот месяц был полным огнем и хаосом 🔥.

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

Если интересно, что было дальше — ставьте лайки!👍
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍37🔥4🎉2
И так, продолжаю рассказывать о том, как я создавал своего бота.

❗️ Внимание: здесь будет много технички, но я постараюсь объяснить всё просто.

Первую версию бота я сделал с помощью Symfony, MySQL, RabbitMQ и Docker.

• Symfony на тот момент я знал не очень хорошо. Подключил к нему Doctrine для работы с базой данных MySQL, Messenger для связи с RabbitMQ и использовал пакет boshurik/telegram-bot-bundle для создания Telegram-бота.
• MySQL выбрал по привычке с прошлых проектов на Bitrix. Создал две таблицы: User и Key. Потом добавил третью — Server. Решил, что всё должно быть анонимно, поэтому собирал только Telegram ID пользователей. Позже добавил поля Email (для отправки электронных чеков) и Language (для поддержки разных языков).
• RabbitMQ использовал для обработки очереди сообщений от пользователей и рассылок.
• Docker применял для разработки на своём компьютере, и первая версия бота работала внутри контейнера. Сейчас всё переехало на Kubernetes (k8s).


🎶 После покупки домена арендовал два сервера: один для бота, другой для Outline. Сначала установил Outline через Outline Manager на DigitalOcean, но потом пришлось переехать на другой хостинг по двум причинам:

1. Лимит трафика: 7000 пользователей очень быстро его сжирали.
2. Нарушение правил хостинга: какой-то "хрен" 🤬 начал качать торренты через сервер, за что мне от DigitalOcean прилетело "письмо счастья" на почту. Хорошо, что это было лишь предупреждение, а не штраф)


Интегрировать Symfony с Outline оказалось несложно благодаря открытому коду последнего и хорошей документации по API. Но пришлось дорабатывать функционал, так как изначально нельзя было отключать и включать выданные ключи. Поэтому я освежил свои знания по Node.js и начал изучать TypeScript.


Схема работы получилась следующая:

1. Пользователь пишет боту сообщение или вводит команду /start.
2. Telegram отправляет данные на мой webhook, который обрабатывается с помощью boshurik/telegram-bot-bundle.
3. Пакет вызывает событие UpdateEvent, которое я обрабатываю и отправляю пользователю сообщения с кнопками.
4. Когда пользователь нажимает кнопку “Получить ключ”, бот обращается к API Outline, выдаёт ключ и сохраняет его в базе данных. База данных служит как кэш, чтобы ускорить работу.


В следующий раз расскажу подробнее про трудности, с которыми столкнулся, и как я их решал 😉

Если вам интересно — ставьте лайк! 👍
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍18🔥4🤮1
Думали, я пропал? А нет... (наебал 😉)

Продолжаем! Первые трудности... 🚧

После резкого наплыва пользователей, к которому я не был готов, пришлось открывать новые серверы. 💻🌐

Как я писал ранее, поначалу я использовал Digital Ocean. Там одна нода (сервер) держала достаточно много пользователей, но нужно было переезжать по двум причинам:

1️⃣ Ограничение трафика. Пользователи быстро его сжирали. Поэтому я создавал новые ноды. 📈💥

2️⃣ Нарушение правил. Пользователи качали торренты, из-за чего мне прилетело "письмо счастья" и попросили молча закрыть серверы. 📩🚫


Проблема первая: Поиск серверов. 🔍🖥

Нужно было найти хостинг с VPS/VDS с безлимитным трафиком и где не будут придираться. Для этого пришлось прошерстить законодательства на предмет штрафов за пиратский контент. Я выбрал 🇳🇱Нидерланды. Затем искал хостинг, где будет хороший канал связи минимум 100 Мб/с. ⚡️

Через неделю я арендовал первый сервер. Написал скрипт для переноса ключей пользователей. Запустился! 🚀


Проблема вторая: Высокая нагрузка. 📊🔥

Оказалось, что сервер не может выдержать такое количество пользователей. Я начал арендовать новые серверы и постепенно перекидывать туда пользователей. Опытным путем выяснил, что один сервер (самый дешевый) выдерживает примерно 500 пользователей. На тот момент база состояла примерно из 1000 пользователей. Напомню, что в день приходило примерно по 250–400 новых пользователей. Поэтому каждый день я после работы открывал новые серверы и перенастраивал бота, чтобы у новых пользователей создавались ключи уже на новых серверах. 😅🛠 В какой-то момент я сразу создавал несколько серверов с заделом на будущее. Тогда бот еще не умел автоматически балансировать нагрузку по выпуску ключей, поэтому приходилось все делать вручную. 🤖👐


Проблема третья: Финансы. 💰💸

Так как бот был бесплатным, я не хотел оплачивать все из своего кармана. Поэтому было решено создать рассылку для сбора донатов и отправлять ее раз в месяц. В итоге донатов вполне хватало, чтобы окупать всю инфраструктуру, и проблема была решена. 🎉🙏


Проблема четвертая: Время. ⌛️

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

Сейчас этот алгоритм работает еще более хитро. В итоге это сократило мое время на поддержку бота в разы. 🥳


О других проблемах расскажу в следующий раз! 😉

Пишите комментарии, о чем еще хотели бы узнать, и ставьте лайки! 👍❤️
1👍73