Tuesday, September 17, 2019

"Py First Bot" бот за 10 минут

Вступление


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

Шаблон, собственно, уже создан. Вот он:
https://github.com/VadimCpp/pyfirstbotbot

Ниже будет инструкция как запустить шаблон на сервере Heroku. Если вы программист и начинаете изучать программирование телеграм ботов на языке Python, этот пост именно для вас.

1. Скачать исходники


Открыть окно командной строки, перейти в рабочий каталог и выполнить команду:

git clone https://github.com/VadimCpp/pyfirstbotbot.git

После этого исходники с сервера будут скачаны на компьютер. Примерно лог будет выглядеть так:



После этого необходимо убедиться в том, что файлы скачаны. Перейти в папку проекта и вывести список файлов.

Выполнить команды для OS X:

cd pyfirstbotbot/
ls -l

Результат примерно такой:




2. Создать телеграм бот


Запустить бот для создания ботов. Перейти по ссылке:
https://t.me/BotFather
Или открыть бот непосредственно в приложении: @BotFather

Необходимо создать бота и получить его токен. Пример:



3. Создать приложение Heroku


Теперь необходимо создать приложение Heroku.
https://dashboard.heroku.com/apps





4. Настроить приложение Heroku


Теперь необходимо настроить приложение. Первым делом нужно на вкладке “Deploy” выполнить указания раздела “Deploy using GitHub”:



Подключить Ваш репозиторий.

5. Запустить бота на Heroku

Нажать кнопку "Deploy":


Убедиться, что Deploy прошел успешно. Это можно посмотреть в логах:



6. Установить токен

Установить heroku CLI (https://devcenter.heroku.com/articles/heroku-cli#download-and-install)

Открыть окно командной строки (как в пункте 1) и выпонить команду:

heroku login
Выполнить вход в Heroku аккаунт
Установить токен:

heroku config:set BOT_TOKEN=YOUR_BOT_TOKEN_WITHOUT_BRACKETS --app OUR-TEST-HEROKU-NAME
Выполнить команду:

heroku ps:scale worker=1 --app OUR-TEST-HEROKU-NAME

Бот размещен!


7. Убедиться, что все работает

Откройте телеграм и напишите что-нибудь Вашему боту.
(пример: @pyfirstbotbot)


Sunday, September 1, 2019

HR с солью и перцем - перемены

Закреп

Внимание! Тут сидят ядовитые hr-ы (и не только) и творится жёсткий беспредел.

Запрещено троллить участников чата (троллинг рекламы допустим) и переходить на личности. Уличенных в сиих негодных деяниях постигнет кара (возможно даже изощрённая).

Рекламу не приветствуем, поэтому, если рискнете вывесить, будьте готовы, что ее тут могут об💩 (исключение - hr-митапы).

Привет и добро пожаловать в наш уютный закрытый чатик. Здесь превалируют HRы, но мы рады специалистам из любых сфер.


Правил здесь нет, есть деспотия админов. Если админам не нравится Ваш формат общения, они могут Вас выкинуть из чата без объяснения причин.


Здесь нет запретных тем, но есть своя атмосфера




Деанон Кита

Все началось с деанона Кита. Вот каким себя показывает в сети это животное:



А вот как на самом деле оно выглядит:



После неуспешно проведенной операции стало ясно, кем является это инфантильное животное.

Начался конфликт, Кит призвало троллей из чата @progeri_chat, «кровавые кирпичи полезли изо всех щелей», чат понес потери.


Запрет на деанон Кита

Правительство чата запретило деанонимизировать Кису, а также всячески обижать. Запрет обоснован понятием «Трансграничная передача персональных данных»

Позиция Вадима была такова:

«Киса сама запостила свой номер телефона в публичном чате, так что нет ничего плохого в ее деаноне»

Позиция админов в чате:

«Прежде чем публиковать номер телефона Кисы в этот пост , необходимо было спросить у Кисы разрешения»

Большинство победило: телефонный номер, который предоставило животное, был скрыт.


Последствия конфликта

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

Освободилось имя «hrchatv2», и Вадим его захватил, создав еще один чат.

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


Структура чата

Сейчас в закрытом чуть больше 20 человек. В чате есть:
  • владелец (Elizaveta);
  • программист и каблук сторонник владелицы чата Vadim;
  • три админа (Marta, Margo, Nat);
  • домашнее животное Kit;
  • Sergey,  которого нельзя хвалить;
  • много крутых и умных специалистов.
В чате воцарился мир. Все живут дружно и спокойно.

В открытом чате @hrchatv2 сейчас более 3000 участников! Vadim заведует развитием чата, а Kit заведует финансами и монетизацией.

Лучшие участники открытого чата имеют шанс попасть в закрытый чат.


Приглашение

Этот пост является результатом работы целого коллектива. Разобраться в ситуации, получить объективную оценку и найти работу мечты вам помогут замечательные менеджеры по подбору персонала из telegram чата @hrchatv2




Friday, August 23, 2019

Дилемма с библиотеками react-native

Типичная проблема


В одном мобильном приложении используется компонент confirmation-code-input, в котором есть ошибки.

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

Так как такая проблема возникла не только в моем проекте, другие программисты придумали решение и даже создали pull request с решением в исходный репозиторий. Предложили даже несколько вариантов решения:
  1. Get Code text on every update of Field
  2. onChangeCode callback and defaultCode props added. Readme updated.
  3. feature: getCurrentCode called when change focus and return code

Варианты решения


Первый вариант


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

Что бы ускорить разработку, я создал issue, в котором попросил выбрать уже одно из предложенных решений.

Второй вариант


Изменить код библиотеки в папке node_modules. В данном случае необходимо внести изменения в код библиотеки компонента уже посте установки.

После обновления библиотек изменения библиотек будут изменены. Также необходимо где-то хранить изменения кода библиотеки и инструкцию, как эти изменения внести в код. 

Этот вариант приведет к тому, что необходимо будет постоянно тратить время на рутинные действия. Поэтому он не подходит.

Третий вариант


Необходимо сделать fork исходников в свой аккаунт github, внести изменения и подключить свою библиотеку в файл package.json

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

Четвертый вариант


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

Пример таких изменений и как подключать библиотеку можно посмотреть тут

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

Пятый вариант 


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


Реализация


Сделать fork. Пример:

Обновить инструкцию:




Удалить текущую библиотеку:

npm uninstall react-native-confirmation-code-input

Установить библиотеку из своего репозитория:

npm install git+https://github.com/vadimcpp/react-native-confirmation-code-input.git

Изменения в файле package.json будут выглядеть так:



Проверить папку с библиотеками. Зайти в папку node_modules и убедиться что была установлена именно ваша библиотека:



Далее внести исправления в главный проект, которые уже не важны для данного поста.



Monday, August 12, 2019

Отладка бота

Вступление

В прошлом году я написал статью о том, как создать своего первого бота в Telegram. Статья представляет собой инструкцию, как запустить бота на сервере Heroku. И все.

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

Пошаговая инструкция

В коде проекта есть файл .env.default.  Сделать копию файла и дать копии название .env.

В коде есть такая строка:
BOT_ACCESS_TOKEN={insert telegram bot API Token here}

Необходимо вставить токен бота вместо фигурных скобок.

Наконец, два действия в консольном окне.
Установить зависимости:
npm install

И запустить локальный сервер:
npm run dev

Пример:


Sunday, August 11, 2019

Телеграм бот для чата @events4friends

Задача

В закрепленном сообщении нашего чата всегда анонс мероприятий. Выглядит это так:



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

Тогда на сайте была реализована кнопка "Скопировать все", которая копирует данные о мероприятиях в таком формате:



Задача заключается в том, чтобы преобразовать длинные ссылки в короткие текстовые ссылки.

Исследование


Перед тем как создавать какой-либо новый программный продукт, есть смысл провести исследование и выяснить: существует ли уже готовое решение?

На официальной странице мессенджера Telegram есть пример бота, который мне нужен: Markdown Bot. При его тестировании оказалось, что от обрезает часть текста:



Это классический пример того, как стандартное решение на работает.

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


Создание бота


Около года назад я написал инструкцию, как создать "Hello, world!!!" бота. Вот и сейчас я создал нового бота по своей же инструкции.

Я изменил приветственное сообщение и внес необходимые изменения: бот в отвечает пользователю его же сообщением только в разметке Markdown. Пример:



В конце работы я опубликовал бота, загрузил исходный код на гитхаб, нарисовал логотип для бота и дописал этот пост.

Дополнительно


Исходники бота: https://github.com/VadimCpp/events4friendsbot
Бот: https://t.me/events4friendsbot
Чат: https://t.me/events4friends
Сайт: https://events4friends.ru/





Saturday, August 10, 2019

Будущее ИТ - прогноз на 10 лет


Вступление

Мы живем в информационную эру. Цифровая революция подходит к концу. Этот пост содержит прогноз про мир информационных технологии на 10 лет. 

Важно! Этот прогноз - скорее пожелание к будущему.

Прогноз


Первые домашние компьютеры стали появляться в конце 80х. Таким образом можно сказать, что эра ИТ началась около 40 лет назад.

Начнём с того что информационные технологии появились совсем недавно. Большинство из нас выросли в то время когда компьютеров почти не было. А мобильный телефон мы видели только в фильме про фантомаса.



Информационная эра и оцифровка данных

Прогноз: через 10 лет все не оцифруют, ведь это невозможно.

Системы ввода и вывода 

Прогноз: через 10 лет мышь и клавиатура останется. Тачскрин останется. Мониторы будут везде. Кардинальных изменений не произойдет. 

Архитектура сети 

Рассказать о клиент серверной архитектуре. И про облака.
Прогноз: через 10 лет клиент-серверная архитектура останется

Идентификация в сети

Посредством почты, мобильного телефона.
Прогноз: через 10 лет идентификация данных

Политика

Рассказать про ютюб, вовлеченность
Прогноз: через 10 лет политика плотно сядет в ютюб

Сепарация интернета

Прогноз: через 10 лет интернет не закроют

Искусственный интеллект

Прогноз: через 10 лет искусственный интеллект будет нам помогать

Проблема открытости 

Рассказать о проблеме открытости
Прогноз: через 10 лет все еще будет непонятно как жить

Что делать?

Не беспокойтесь.


Литература

https://ru.wikipedia.org/wiki/Информационная_эра

Saturday, July 27, 2019

HR с солью и перцем - кто мы?

Закреп

Внимание! Тут сидят ядовитые hr-ы (и не только) и творится жёсткий беспредел.

Запрещено троллить участников чата (троллинг рекламы допустим) и переходить на личности. Уличенных в сиих негодных деяниях постигнет кара (возможно даже изощрённая).

Рекламу не приветствуем, поэтому, если рискнете вывесить, будьте готовы, что ее тут могут об💩 (исключение - hr-митапы).

А так, вэлкам.


Кто здесь?

Дорогие участники чата. А расскажите пару слов о себе.
Чем вы занимаетесь? Где живете? О чем мечтаете?

* * *

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

* * *

«Я сейчас пока живу в Пушкино МО,специально переехали на время, с детьми очень удобно(6 и 2 года).
Работаю удаленно рекрутером на фрилансе и внутренним хр в Сколковском старт-апе.
Все свободное время провожу с семьей(у меня его мало),из спорта:бассейн с сыном и прогулки с младшей))) люблю хорошее кино,интересуюсь доказательной медициной,научными историческими трудами,начала коллекционировать старые издания книг(пока нач 20го века). Люблю свою работу,особенно когда есть сложные интересные проекты.»

* * *

«Я программист и преподаватель. Работаю удаленно, живу в Калининграде, катаюсь на велосипеде, веду блог, живу в интернете, поступаю в аспирантуру. 
Мечтаю заниматься наукой и учить студентов в университете.»

* * *

«Живу в Москве, Медведково
Жена: 1шт
Дочь: 1шт
Сын: 0 шт
Домашние животные: 0
Увлечения: мазохизм(спартак), наручные часы (садомазохизм по стоимости, велосипед (легкий садизм)
Работаю в подборе уже около 15 лет.»

* * *

«я тоже из мск, последние два года у меня небольшое ка, до этого я была hrd в топ 1 на рынке безопасности, отработала там 4 года, задолбалась и теперь работаю на себя. у меня собака, как вы все поняли, я люблю хорошее кино, вкусную еду и машины. ну и не люблю людей))»

* * *

«Всем привет! Тоже расскажу про себя.
Я живу в Спб,в hr работала - ассистентом, менеджером по кдп, рекрутером, руководителем отдела, hrbp.
Последние 4 года операционным директором в небольшой компании (200 человек).
Год назад в партнёрстве открыла маленькое  КА для  медицинских клиник.
Люблю еду, интересные прогулки по любимому город, читать и работу )»

* * *

«Кстати. Ира, есть муж, двое детей 7 и 6 лет, Москва. в силу кочевого образа жизни, животных сейчас нет. Хотя я вообще мечта любого ребёнка-я даже змею разрешу заводить) натура увлекающаяся, посему дома холсты, краски, инструменты для тиснения кожи, тату-машинка (пока не научилась ещё), всякие штанги,  книги .. всегда владею минимум двумя фитнес картами, ибо ленивая) первые 190$ заработала в 13 лет на риелторстве (90-е )). По взрослому работаю с 16 лет Была интервьюером. (те, что пристают на улице) логистом, сисадмином..мы открывали магазины и кинотеатры, потом ушла в хр и последние 12 лет там. Чую, что это уже клеймо и больше идти некуда без потери дохода. В качестве хобби- ИП услуги систем безопасности (видеонаблюдение, умный дом и ТП).  коллекционирую пробки от выпитого вина. Спорт: сноуборд, сёрфинг, железяки всякие, стрельба по тарелочкам, муай тай по настроению..»

* * *

«Всем привет! Тут все рассказывают  про себя?
Живу в Самаре.
Работал с 12 лет продавал газеты)
В 18 лет работал продавцом, потом ушел в банк, прошел повышение, от сервиса который встречает, до обслуживания и продаж Vip-клиентам и категории mass  effient, потом были продажи B2B.
Перешел, в направление о котором думал, давно на Тренинг-менеджера ГПА(Подбор, Обучение)
Параллельно закрывал, вакансии на фрилансе, поработал с несколькими КА, компаниями клиентами
Полноценно ушел на Full-Time удаленка.
Как поработал на удаленке HR, компания около 150 человек, нужно было полностью с нуля выстраивать HR,подбор IT и Digital, Sales, поработал около года, компания в криптосфере из-за падения крипты и вывода проекта на рынок, пошло сокращение.
Сейчас рекрутер фриланс)
Жена тоже Рекрутер)»

* * *

А еще у нас в чате есть Киса! Об этом животном пока ничего не известно, кроме номера телефона +38095xxxXXxx



Приглашение

Этот пост является результатом работы целого коллектива. Разобраться в ситуации, получить объективную оценку и найти работу мечты вам помогут замечательные менеджеры по подбору персонала из telegram чата @hrchatv2