Помните, я упоминал, что в боте хотел использовать базу данных MongoDB, но потом отказался от этой затеи на время? Сейчас расскажу почему.
Вообще, когда мне надо использовать БД (если речь идет о документоориентированных БД), но отвлекаться на ее развертывание не хочется, тогда я использую mLab. Это по сути облачная БД, где за тебя все пережевано и развернуто. Нужно лишь зарегаться, тыкнуть пару кнопок и БД готова.
По дефолту дается бесплатно 0.5 GB, чего для разработки хватает за глаза. Однако вам дозволено использовать лишь версию 3.6.x (последня 4.2.0), а также там неудобный интерфейс для работы, поэтому я обычно использую программу Robo 3T. Просто подключаешься через нее по MongoDB URI и кайфуешь. Также там можно и платные фичи купить, но цены кусаются, как по мне.
В моем боте особо хранить нечего, разве что юзеров (чтобы знать, сколько человек пользуются твоим «творением»). По мне так для подобных задач монго заходит на ура. Правда, когда я интегрировал ее в бота, периодически вылезали странные ошибки. Погуглив, я нашел подобное дерьмо у других, и люди писали, что сами понятия не имеют, что это за дичь.
Хочется верить, что дело все же в моей рукожопости, и если сделать по уму, то монго будет работать как часы. В любом случае, я уже присмотрел себе немецкий VPS, где попробую развернуть свою БД для получения опыта, которым потом поделюсь с вами.
Приятных выходных!
Вообще, когда мне надо использовать БД (если речь идет о документоориентированных БД), но отвлекаться на ее развертывание не хочется, тогда я использую mLab. Это по сути облачная БД, где за тебя все пережевано и развернуто. Нужно лишь зарегаться, тыкнуть пару кнопок и БД готова.
По дефолту дается бесплатно 0.5 GB, чего для разработки хватает за глаза. Однако вам дозволено использовать лишь версию 3.6.x (последня 4.2.0), а также там неудобный интерфейс для работы, поэтому я обычно использую программу Robo 3T. Просто подключаешься через нее по MongoDB URI и кайфуешь. Также там можно и платные фичи купить, но цены кусаются, как по мне.
В моем боте особо хранить нечего, разве что юзеров (чтобы знать, сколько человек пользуются твоим «творением»). По мне так для подобных задач монго заходит на ура. Правда, когда я интегрировал ее в бота, периодически вылезали странные ошибки. Погуглив, я нашел подобное дерьмо у других, и люди писали, что сами понятия не имеют, что это за дичь.
Хочется верить, что дело все же в моей рукожопости, и если сделать по уму, то монго будет работать как часы. В любом случае, я уже присмотрел себе немецкий VPS, где попробую развернуть свою БД для получения опыта, которым потом поделюсь с вами.
Приятных выходных!
Начнем неделю с годноты!
Буквально вчера наткнулся на свежую и крутейшую статью (март 2020), где идет сравнение различных frontend фреймворков/библиотек (речь о более, чем 20). Пока одни устраивают беспорядок, другие пытаются его навести, пускай и в сфере разработки.
Ну да ладно, в чем же суть? За основу взяли веб-приложение наподобие Medium и реализовали его на 24 либах/фреймворках, а потом по трем параметрам постарались сравнить.
В качестве метрик выступили:
Performance (производительность)
По словам автора подразумевается время, которое нужно приложению, чтобы показать контент и стать пригодным для использования. Правда на пикче вы увидите не время, а условные единицы от 0 до 100. Это связано с тем, что производительность измерялась при помощи Lighthouse Audit. Результат на первой пикче.
Size (размер)
Автор сравнивал только размер скомпилированных JS файлов. На второй пикче показан результат в KB.
Lines of Code (кол-во строк кода)
Тут все просто - сколько надо написать кода, чтобы создать приложение (пустые строки и комментарии не учитывались). Считалось только содержимое папки src. Результат на последней пикче.
Что можно сказать? Работа проделана крутая, безусловно. Как минимум в процессе чтения статьи можно узнать много новых библиотек/фреймворков - то есть расширить кругозор. Также радует, что исследование, если так можно выразиться, проведено целым сообществом, а не отдельным человеком. Это показывает веб-комьюнити с хорошей строны.
Однако стоит ли на основе этих результатов выбирать свой стэк? Вопрос хороший. Такие инструменты как React, Vue или Angular, которые у всех на слуху, занимают в этом сравнении далеко не лидирующие позиции, однако работу с их знанием найти гораздо проще, да и платят хорошо.
Статью можно глянуть тут. Кстати, там же можете найти подобное исследование за 19,18 и 17 года.
Буквально вчера наткнулся на свежую и крутейшую статью (март 2020), где идет сравнение различных frontend фреймворков/библиотек (речь о более, чем 20). Пока одни устраивают беспорядок, другие пытаются его навести, пускай и в сфере разработки.
Ну да ладно, в чем же суть? За основу взяли веб-приложение наподобие Medium и реализовали его на 24 либах/фреймворках, а потом по трем параметрам постарались сравнить.
В качестве метрик выступили:
Performance (производительность)
По словам автора подразумевается время, которое нужно приложению, чтобы показать контент и стать пригодным для использования. Правда на пикче вы увидите не время, а условные единицы от 0 до 100. Это связано с тем, что производительность измерялась при помощи Lighthouse Audit. Результат на первой пикче.
Size (размер)
Автор сравнивал только размер скомпилированных JS файлов. На второй пикче показан результат в KB.
Lines of Code (кол-во строк кода)
Тут все просто - сколько надо написать кода, чтобы создать приложение (пустые строки и комментарии не учитывались). Считалось только содержимое папки src. Результат на последней пикче.
Что можно сказать? Работа проделана крутая, безусловно. Как минимум в процессе чтения статьи можно узнать много новых библиотек/фреймворков - то есть расширить кругозор. Также радует, что исследование, если так можно выразиться, проведено целым сообществом, а не отдельным человеком. Это показывает веб-комьюнити с хорошей строны.
Однако стоит ли на основе этих результатов выбирать свой стэк? Вопрос хороший. Такие инструменты как React, Vue или Angular, которые у всех на слуху, занимают в этом сравнении далеко не лидирующие позиции, однако работу с их знанием найти гораздо проще, да и платят хорошо.
Статью можно глянуть тут. Кстати, там же можете найти подобное исследование за 19,18 и 17 года.
Друзья! Завел наконец-таки бота на VPS, теперь будет работать 24/7 (надеюсь). Спасибо товарищу, которого, кстати, я упоминал ранее на канале. Без его помощи сидел бы еще 1-2 дня. Давайте коротко расскажу как чуть 20€ не потерял.
Еще пару дней назад я вообще не разбирался в том, какой хост ходит в авторитетах, а какой самому надо обходить стороной. В одном из чатов мне посоветовали юзать hetzner. Я прислушался, зарегался там, и встал вопрос верификации: либо фото загранника отправить (но проверка идет вручную), либо через paypal (проверка автоматическая, но для этого спишут 20€).
Недолго думая, я выбрал второе. Деньги списали, и я решил, что буду поднимать сервак на следующий день. В итоге спустя сутки обнаруживаю, что аккаунт заблочен. Никаких оповещений на почту не приходило. Более того, погуглив, я узнал, что не у меня одного подобное говно происходило. В общем я уже думал, что денег не видать, однако сегодня их вернули на карту. Ребята в чате сказали, что походу из-за неактивности заблочили.
Следом товарищ, упомянутый ранее, посоветовал digitalOcean. Мне, кстати, при регистрации по реф.ссылке дали аж 100$ на 60 дней. Вряд ли я успею их потратить, но все-равно приятно.
В итоге взял сервер за 10$/месяц, у которого под капотом 1 vCPUs, оперативы 2GB, SSD 50GB. ОС поставил Debian 9.12 x64.
Что касается бота, то через гит клонировал свой репозиторий, скачал все необходимые зависимости и запустил через pm2. Можете заценить @teavotary_bot.
Спасибо, что читаете!
Еще пару дней назад я вообще не разбирался в том, какой хост ходит в авторитетах, а какой самому надо обходить стороной. В одном из чатов мне посоветовали юзать hetzner. Я прислушался, зарегался там, и встал вопрос верификации: либо фото загранника отправить (но проверка идет вручную), либо через paypal (проверка автоматическая, но для этого спишут 20€).
Недолго думая, я выбрал второе. Деньги списали, и я решил, что буду поднимать сервак на следующий день. В итоге спустя сутки обнаруживаю, что аккаунт заблочен. Никаких оповещений на почту не приходило. Более того, погуглив, я узнал, что не у меня одного подобное говно происходило. В общем я уже думал, что денег не видать, однако сегодня их вернули на карту. Ребята в чате сказали, что походу из-за неактивности заблочили.
Следом товарищ, упомянутый ранее, посоветовал digitalOcean. Мне, кстати, при регистрации по реф.ссылке дали аж 100$ на 60 дней. Вряд ли я успею их потратить, но все-равно приятно.
В итоге взял сервер за 10$/месяц, у которого под капотом 1 vCPUs, оперативы 2GB, SSD 50GB. ОС поставил Debian 9.12 x64.
Что касается бота, то через гит клонировал свой репозиторий, скачал все необходимые зависимости и запустил через pm2. Можете заценить @teavotary_bot.
Спасибо, что читаете!
Атлант stackoverflow, на чьих плечах держится львиная доля всех проектов галактики, каждый год проводит опрос среди разрабов. Хочу поделиться интересными (имхо) цифрами за 2020 год.
На самом деле там есть еще много интересных результатов. Самые заинтересованные могут ознакомиться тут. Можно также посмотреть опросы прошлых лет (меняя год в url).
• Среди проф.прогеров (47.7к чел.) почти 50% имеют степень бакалавра. Магистров в районе 25%. Причем более 60% имеют Computer science, computer engineering или software engineering.• Из 46.3к проф.прогеров почти 85% считают, что формальное образование все-таки вещь нужная и важная. • Вот это опасно: более 70% проф.разрабов – это белые люди (или европейского происхождения). Ждем, когда белым запретят изучать прогу, дабы устранить дискриминацию остальных рас.• Что касаемо гендера, то среди 41.8к проф.разрабов 91.7% мужчины, 7.7% женщины и 1.2% небинарных неопознанных программирующих объектов. Вообще там много «интересных» показателей касаемо гендера, если захотите, вам лучше самим глянуть.• Среди 38к проф. разрабов 70% моложе 35 лет.• Кто бы мог подумать - JS является самой используемой технологией. Потом идут HTML/CSS, SQL, Python и т.д.• Среди веб-фреймворков правление остается пока что в руках бывшего диктатора JQuery (43,3%). Но его уверенно теснят React (36.8%) и Angular (26.5%).• Среди БД из 41.8к проф.разрабов 53.5% предпочитают MySQL, 38.5% PostgreSQL.• Вот это любопытно: среди любимых языков, от которых разрабы прям кайф ловят, оказались Rust (86.1%), TypeScript (67,1%) и Python (66.7%)• Если вам интересно посмотреть сколько платят за тот или иной язык, лучше гляньте сами, слишком много интересных цифр, которые растянут этот пост.• Путь прогера - путь вечной учебы, и статистика подтверждает это: более 70% изучают новые технологии раз в несколько месяцев или раз в год.На самом деле там есть еще много интересных результатов. Самые заинтересованные могут ознакомиться тут. Можно также посмотреть опросы прошлых лет (меняя год в url).
Предлагаю следующие 8 минут времени почитать интервью, которое было взято мною у разработчика крутого сервиса ProgHub – он позволяет вам пройти тестирования по различным ЯП, дабы на собеседовании не дать поделить себя на ноль.
Telegraph
Интервью с создателем ProgHub.ru
Друзья! Взял интервью у человека, который к 24 годам успел стать хорошим бэкэнд разработчиком и создать сервис для подготовки к собеседованиям ProgHub. Время чтения ≈ 7 минут – Кодинг в радость, Игорь. Можешь буквально в трех предложениях ввести в курс дела…
"Телеграм разблокировали"? Наверняка многие из вас уже слышали эту новость. Вчера, можно сказать, у нас всех был праздник.
Собственно, когда, как не сейчас, стоит заинтересоваться разработкой ботов. Ведь теперь никакие proxy/vpn не нужны.
Сейчас я как раз занят тем, что пишу статью, в которой расписываю, как можно создать таск-менеджер бота. Излагаю максимально доступным языком, подробно освещая ключевые моменты. Это будет не просто статья, где бегло рассматривается библиотека. Это будет полноценный мануал, который позволит создать вам вполне рабочего бота.
Уверен, что вам понравится. Кстати, пишу на гитбуке, ибо считаю, что если это и не идеальный, то один из таких сервисов, где можно писать технические статьи. В общем сегодня-завтра ждите пост.
Собственно, когда, как не сейчас, стоит заинтересоваться разработкой ботов. Ведь теперь никакие proxy/vpn не нужны.
Сейчас я как раз занят тем, что пишу статью, в которой расписываю, как можно создать таск-менеджер бота. Излагаю максимально доступным языком, подробно освещая ключевые моменты. Это будет не просто статья, где бегло рассматривается библиотека. Это будет полноценный мануал, который позволит создать вам вполне рабочего бота.
Уверен, что вам понравится. Кстати, пишу на гитбуке, ибо считаю, что если это и не идеальный, то один из таких сервисов, где можно писать технические статьи. В общем сегодня-завтра ждите пост.
Сказано - сделано! Друзья, как я и обещал, подготовил для вас статью, в которой объясняется довольно подробным образом процесс создания бота.
В качестве примера взят простой бот-менеджер задач, куда пользователь может добавлять и удалять свои задачи. Однако в процессе создания вы затронете следующие темы:
Всю разработку я постарался изложить в плавной и подробной манере. Насколько хорошо получилось – судить вам.
Сама статья на гитбуке;
Исходный код на гитхабе;
В качестве примера взят простой бот-менеджер задач, куда пользователь может добавлять и удалять свои задачи. Однако в процессе создания вы затронете следующие темы:
• Поднятие локального сервера на NodeJS• Обработка ботом разного пользовательского поведения• Создание двух типов клавиатур• Работа с асинхронностью и регулярными выражениями• Отправка фотографий с описаниемВсю разработку я постарался изложить в плавной и подробной манере. Насколько хорошо получилось – судить вам.
Сама статья на гитбуке;
Исходный код на гитхабе;
This media is not supported in your browser
VIEW IN TELEGRAM
А это то, что должно у вас получиться после прочтения статьи
Что покажет код на картинке выше?
Anonymous Quiz
56%
value from func2: 3; value from func1: 2
44%
value from func2: 3; value from func1: 3
👍1
Готов поспорить, что тем, кто не знал ответа, даже узнав его, не особо понимает, что к чему. Чтобы понять ответ на поставленный вопрос, надо немного залезть в механику работы JS.
Вот вы написали код на JS, что дальше с ним происходит при запуске? Вот это отличный вопрос.
Сначала происходит первый этап - этап лексического анализа. Это когда компилятор посимвольно анализирует и разбивает код на значимые для языка части. Такие части называются лексемами.
Если взять, к примеру, такой код:
то разбиение выглядит примерно следующим образом:
Во время такого вот разбора на лексемы определяется такая важная вещь как лексическая область видимости. Помимо лексической также можно выделить динамическую область видимости. И главная разница между ними в том, что лексическую область видимости интересует, где функция была объявлена, а динамическую – где функция была вызвана.
В JS используется как раз таки лексическая область видимости. Поэтому на этапе анализа, когда анализатор видит
(это 4 строка на пикче), то он начнет искать переменную value в текущей локальной области видимости (то есть в пределах func1() ). Не найдя ее там, анализатор обратится к родительскому окружению функции func1() (а это глобальная область видимости), и, увидев искомую value, установит с ней связь.
Что касается ЯП с динамической область видимости, то там как раз в обоих случаях переменная value была бы равна 3, ибо важен сам факт вызова функции, а не ее объявления.
Вот вы написали код на JS, что дальше с ним происходит при запуске? Вот это отличный вопрос.
Сначала происходит первый этап - этап лексического анализа. Это когда компилятор посимвольно анализирует и разбивает код на значимые для языка части. Такие части называются лексемами.
Если взять, к примеру, такой код:
var a = 2;то разбиение выглядит примерно следующим образом:
• var – объявление переменной• a – идентификатор (имя) переменной• = – оператор присваивания• 2 – число• ; – конец инструкцииВо время такого вот разбора на лексемы определяется такая важная вещь как лексическая область видимости. Помимо лексической также можно выделить динамическую область видимости. И главная разница между ними в том, что лексическую область видимости интересует, где функция была объявлена, а динамическую – где функция была вызвана.
В JS используется как раз таки лексическая область видимости. Поэтому на этапе анализа, когда анализатор видит
console.log(value from func1: ${value})(это 4 строка на пикче), то он начнет искать переменную value в текущей локальной области видимости (то есть в пределах func1() ). Не найдя ее там, анализатор обратится к родительскому окружению функции func1() (а это глобальная область видимости), и, увидев искомую value, установит с ней связь.
Что касается ЯП с динамической область видимости, то там как раз в обоих случаях переменная value была бы равна 3, ибо важен сам факт вызова функции, а не ее объявления.
Симпсон_К_Вы_не_знаете_JS_Замыкания.pdf
4 MB
Вот, кстати, обещанная книга, где рассказываются вполне доступным языком фундаментальные вещи, с пониманием которых вы почувствуете себя слепым человеком, который прозрел.
Мне вдруг стало интересно, какой профит может приносить бот, и я немного пошарил по телеграму, чтобы собрать хоть какую-то статистику. Если вам инетресно за сколько можно купить или потенциально продавать рекламу, читайте далее.
Со способами монетизации все просто: чаще всего это либо часть функциональности бота, которая доступна по подписке, либо само пользование абсолютно бесплатное, но продается возможность через бота отправить рекламное сообщение каждому юзеру.
Далее я просто назову ниши с кратким описанием (без конкретных ботов) и цены, которые взял исходя из инфы, предоставленной админами различных ботов. Обращаю внимание, что единица измерения цены – количество рублей за 1000 показов (руб/кПок).
Со способами монетизации все просто: чаще всего это либо часть функциональности бота, которая доступна по подписке, либо само пользование абсолютно бесплатное, но продается возможность через бота отправить рекламное сообщение каждому юзеру.
Далее я просто назову ниши с кратким описанием (без конкретных ботов) и цены, которые взял исходя из инфы, предоставленной админами различных ботов. Обращаю внимание, что единица измерения цены – количество рублей за 1000 показов (руб/кПок).
• Киноботы. Позволяют найти кино и скачать. Средняя цена около 47 руб/кПок• Боты, позволяющие скачать музыку из vk/SC и других площадок. Цена в пределах 52 – 132 руб/кПок•ТоррентБоты. Из названия ясно, что это боты, через которые можно качать файлы с различных торрент площадок. Цена около 44 руб/кПок• КнигоБоты. Позволяют скачать книги. Цена 73.5 руб/кПок• Боты для скачивания контента из Ютуб/тикток/soundcloud/pornohub/instagram. Довольно большая вилка цены 17.4 – 67 руб/кПок• Бот с облачным хранилищем. Позволяет хранить файлы в облаке. Цена 93 руб/кПок• Боты для озвучивания текста. Цена 33 руб/кПок• Нашел даже бота для игры в мафию, которым пользуется 2.000.000 юзеров. Цена 25 руб/кПок• Боты для розыгрышей. Позволяют довольно удобно проводить розыгрыши в телеге. Цена 18.7 руб/кПокНа чем могу заострить внимание! Во-первых, цены указаны в общем для обычного рекламодателя. Казино, наркоту и порно многие отказываются рекламировать, а вот реклама ставок и букмекеров продается охотно. Цена для них может возрастать несколько раз (оно и понятно). Хотя по мне так что казино, что ставки - наебалово.
Во-вторых, что касается прихода, то сказать очень сложно. Лишь у бота для розыгрышей я смог найти отзывы, по которым можно примерно прикинуть конверсию. Если смотреть по всем отзывам, то людям заходило 200 – 500 человек (у самого бота около 214к пользователей). При цене в 4000 руб за рекламу, выходит, что подписчик обойдется в 8 – 20 руб.
Кликбейтные объявления со ставками/займами и прочим заходили в разы лучше, чем объявления с более вдумчивыми и менее развлекательными тематиками.
Не берусь утвержать, но мне кажется, что с ботов конверсия в принципе ниже, чем с каналов. Так что лучше, наверное, если делать бота с заделом на заработок на нем, то совмещать оба способа монетизации (какая-то функциональность платная + продажа рекламы время от времени).
Продолжая постигать основы мироздания JavaScript, в добавок к этой прекрасной книге я просто обязан поделиться с вами крутейшим сайтом, где, на мой взгляд, удачнее всего преподнесена информация про такие важные вещи как:
Я уже давно понял, что для понимания какой-либо вещи, чаще всего надо первым делом изучить проблему, которая решается благодаря этой вещи. Тогда надобность самóй вещи станет понятной и голос в голове скажет «ну да, все более–менее логично».
Если есть ощущение, что вы не понимаете, как работает JS, то определенно гляньте этот материал.
• Область видимости• Лексическое окружение• Контекст выполненияЯ уже давно понял, что для понимания какой-либо вещи, чаще всего надо первым делом изучить проблему, которая решается благодаря этой вещи. Тогда надобность самóй вещи станет понятной и голос в голове скажет «ну да, все более–менее логично».
Если есть ощущение, что вы не понимаете, как работает JS, то определенно гляньте этот материал.
Позволю себе немного пофилософствовать и поразмышлять…
Если вы любите игры, то наверняка уже успели начитаться и насмотреться обзоров про Cyberpunk, презентация которого прошла вчера.
Если суммировать общее мнение счастливчиков, что имели возможность лично попробовать данный фрукт на вкус, то можно сказать, что игра имеет некоторые недочеты (не зря же ее перенесли), к ней есть определенные вопросы, но в целом разочаровать она не должна.
Возлагать огромные ожидания на что-то в принципе не лучшая затея, ведь высока вероятность разочароваться. Тем не менее я задался вопросом, а чего от игры жду я? Да, будет крутое повествование, экшен, Киану Ривз, но хотелось бы верить, что сама игра преследует цель именно показать вполне реальное будущее, к которому мы идем семимильными шагами.
Пусть игра не говорит, что хорошо, а что плохо, но покажет, к чему мы, люди, придем, если будем придерживаться текущего курса. И пусть игра это сделает так, чтобы игрок задавался вопросом «неужели такое будущее я хочу?».
Ведь если Ведьмак был про что-то прошлое и местами мистическое, то Cyberpunk про вполне реальное будущее, которые многие из нас смогут встретить в околопожилом возрасте.
В любом случае посмотрим. Спасибо, что читаете.
Если вы любите игры, то наверняка уже успели начитаться и насмотреться обзоров про Cyberpunk, презентация которого прошла вчера.
Если суммировать общее мнение счастливчиков, что имели возможность лично попробовать данный фрукт на вкус, то можно сказать, что игра имеет некоторые недочеты (не зря же ее перенесли), к ней есть определенные вопросы, но в целом разочаровать она не должна.
Возлагать огромные ожидания на что-то в принципе не лучшая затея, ведь высока вероятность разочароваться. Тем не менее я задался вопросом, а чего от игры жду я? Да, будет крутое повествование, экшен, Киану Ривз, но хотелось бы верить, что сама игра преследует цель именно показать вполне реальное будущее, к которому мы идем семимильными шагами.
Пусть игра не говорит, что хорошо, а что плохо, но покажет, к чему мы, люди, придем, если будем придерживаться текущего курса. И пусть игра это сделает так, чтобы игрок задавался вопросом «неужели такое будущее я хочу?».
Ведь если Ведьмак был про что-то прошлое и местами мистическое, то Cyberpunk про вполне реальное будущее, которые многие из нас смогут встретить в околопожилом возрасте.
В любом случае посмотрим. Спасибо, что читаете.