Как стать автором
Обновить
23
0
Портнов Алексей Владимирович @boffart

Программист

Отправить сообщение

Всё, о чём должен знать разработчик Телеграм-ботов

Время на прочтение15 мин
Количество просмотров653K

Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй "как я создал такого-то бота" и туториалов вроде "как создать бота, который будет говорить hello world". При этом многие неочевидные моменты просто нигде не описаны.

Как вообще устроены боты? Как они взаимодействуют с пользователями? Что с их помощью можно реализовать, а что нельзя?

Подробный гайд о том, как работать с ботами — под катом.

Читать далее
Всего голосов 127: ↑127 и ↓0+127
Комментарии73

Модули JavaScript

Время на прочтение12 мин
Количество просмотров56K


Это третья публикация по материалам нашей внутренней конференции Sync.NET. Первая публикация была посвящена многопоточности в .NET, вторая — реактивным расширениям.

При разработке front-end части приложения на языке JavaScript, мы можем столкнуться с рядом традиционных проблем. Все они решаются при помощи модульных подходов. Ниже мы рассмотрим самые популярные подходы для описания модулей в JavaScript, которые существуют на сегодняшний день.
Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии19

Нет, Open Source не означает «бесплатная поддержка»

Время на прочтение6 мин
Количество просмотров29K
Год назад разработчик опенсорсной программы Raccoon APK Downloader заявил, что отныне приём баг-репортов — это часть платной поддержки. Идея обсуждается до сих пор и вызывает споры по понятным причинам. С одной стороны, это как-то контринтуитивно… С другой стороны, определённая логика тоже есть… В общем, судите сами, вот оригинальная заметка Патрика Альбрихта, её бурное обсуждение и пояснение позиции по итогам обсуждения.

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

Юзер:	Здравствуйте, хочу зарепортить баг в вашей программе.
Я:		Отлично! Для этого откройте тикет, пожалуйста.
Юзер:	Но тикеты вроде входят в платный пакет?
Я:		И?
Юзер:	Просто хочу сказать, что ваша программа сломана, чтобы вы могли починить её.
Я:		Да, с вашей стороны это запрос на поддержку. Пожалуйста, откройте тикет.
Юзер:	…бл%$#%$...
Читать дальше →
Всего голосов 149: ↑146 и ↓3+185
Комментарии74

Шпаргалка по пакетному менеджеру NPM

Время на прочтение5 мин
Количество просмотров412K

npm — это пакетный менеджер node.js. С его помощью можно управлять модулями и зависимостями.
Небольшая шпаргалка всех моих любимых команд npm:

Читать дальше →
Всего голосов 49: ↑44 и ↓5+39
Комментарии11

WebRTC и Electron: тренд для desktop-приложений

Время на прочтение5 мин
Количество просмотров14K


В блоге на хабре мы стараемся рассказывать интересные истории из собственного опыта: телефония и браузеры, телеком, автоматизация звонков, видеоконференции — все эти истории. Но наш давний знакомый Цахи, автор bloggeek.me и мировой спец по WebRTC, настолько хорошо пишет, что его просто нельзя не переводить. Его новая статья, вышедшая неделю назад, про поддельные desktop-приложения, которые на самом деле обернутые в Electron веб-страницы. Многие такое видели – Slack, Discord и прочие товарищи вешают на свои страницы огромную кнопку «Скачайте наше desktop-приложение», а там — обернутая в .exe или .dmg веб-страничка. Которая иногда сделана удобнее, чем «хардкорные» WinAPI и Cocoa решения. А еще эти штуки умеют звонить голосом и видео. Под катом, традиционно для Цахи, много картинок, ссылок и интересных выводов от опытного программиста-телекомщика, ушедшего в популисты-аналитики. Перевод мы традиционно адаптируем для Хабра, а не слово-в-слово. Цахи любит заковыристые обороты…
Всего голосов 30: ↑26 и ↓4+22
Комментарии15

В продаже появился Linux-телефон PinePhone Pro: что он умеет?

Время на прочтение4 мин
Количество просмотров81K

Разработчикам смартфонов очень сложно удивить чем-то современного искушенного технологиями пользователя. Ну да, чуть лучше камера, а может, восемь камер. Чуть больше или меньше экран, больше цветов, получше процессор и т.п. Эта гонка продолжается много лет, но вот разительно выделяющихся на фоне конкурентов устройств особо нет. С течением времени смартфоны разных производителейц становятся похожи друг на друга как две капли воды.

Исключения есть, хотя и мало. Но даже среди исключений особняком стоит телефон, который называется PinePhone Pro. Это своего рода усиленная версия Linux-смартфона PinePhone, который можно назвать «PinePhone на стероидах». О его возможностях и характеристиках — ниже. Единственное, что еще стоит добавить — новая модель также может использоваться в качестве рабочей станции, то есть десктопа.
Читать дальше →
Всего голосов 93: ↑89 и ↓4+110
Комментарии108

Домашний хостинг сайтов с динамическим IP

Время на прочтение6 мин
Количество просмотров151K
У меня (как и у многих web-разработчиков) имеется с десяток сайтов которые необходимо где-то размещать (хостить).

Сайты практически не приносят прибыли, поскольку это какие-то старые работы (по разным причинам не пошедшие в продакшн), домашняя страница, сайт заведенный красивой почты и тому подобное. Но в то же время эти сайты жалко бросать, а потому приходится каждый месяц на них тратить вполне реальные деньги чтобы покупать хостинг. Деньги, прямо скажем небольшие, но тем не менее их жалко, поскольку отдачи от сайтов никакой нет.

В то-же время в наличии имеется:

  • Домашний сервер на Ubuntu
  • Быстрый ethernet-интернет от МТС

Но не имеется ключевого — статического IP. Если бы он был, то все было-бы намного проще и данную статью я бы точно не писал. А выдавать статический IP мой МТС абсолютно не желает (если только я не подключусь как бизнес-клиент).

Разумеется есть всем известные Dynamic DNS сервисы вроде noip.com, но они успешно решают лишь задачу удаленного доступа к нашему серверу (по SSH или FTP), но для хостинга совершенно нам не подходят, поскольку в настройках домена на DNS-сервере нам нужно обязательно прописать A-запись с реальным IP-адресом (а не ссылку на наш виртуальный домен).
Читать дальше →
Всего голосов 57: ↑44 и ↓13+31
Комментарии93

Шпаргалка с командами Docker

Время на прочтение5 мин
Количество просмотров724K
Прим. перев.: Неделю назад Aymen El Amri, руководящий компанией eralabs и создавший обучающий курс «Безболезненный Docker», опубликовал свой Docker Cheat Sheet — шпаргалку по основным командам Docker. Git-репозиторий этого документа на GitHub уже набрал 1000+ stars и несколько сторонних контрибьюторов, что подтвердило его актуальность и пользу.



Представленные здесь команды описаны минимально (с акцентом на читаемость как есть) и включают в себя установку Docker, работу с реестрами и репозиториями, контейнерами, образами, сетью, Docker Swarm. Ниже представлен перевод шпаргалки в её состоянии на 2 сентября с дополнениями из комментариев ниже.
Читать дальше →
Всего голосов 46: ↑42 и ↓4+38
Комментарии15

История одного проекта или как я 7 лет создавал АТС на базе Asterisk и Php

Время на прочтение11 мин
Количество просмотров9K

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


image

Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии12

Использование bash completion в командной строке, собственных скриптах и приложениях. Часть 2

Время на прочтение5 мин
Количество просмотров25K
Про bash completion на хабре я уже писал тут, и даже конце пообещал рассказать про настройку автодополнения для собственных скриптов.

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

Читать дальше →
Всего голосов 54: ↑53 и ↓1+52
Комментарии20

Картинка, которая одновременно является кодом на Javascript

Время на прочтение6 мин
Количество просмотров62K

Изображения обычно хранятся как двоичные файлы, а файл Javascript по сути является обычным текстом. Оба типа файлов должны следовать собственным правилам: изображения имеют конкретный формат файла, определённым образом кодирующий данные. Для того, чтобы файлы Javascript можно было исполнять, они должны следовать определённому синтаксису. Я задался вопросом: можно ли создать файл изображения, одновременно являющийся допустимым синтаксисом Javascript, чтобы его можно было исполнять?

Прежде чем вы продолжите чтение, крайне рекомендую изучить эту песочницу кода с результатами моих экспериментов:

https://codesandbox.io/s/executable-gif-8yq0j?file=/index.html

Если вы хотите посмотреть изображение и изучить его самостоятельно, то скачать его можно отсюда:

https://executable-gif.glitch.me/image.gif
Читать дальше →
Всего голосов 107: ↑104 и ↓3+138
Комментарии36

Установка и настройка MikoPBX под iD Phone (iDPhone)

Время на прочтение7 мин
Количество просмотров11K


В данной инструкции описано как с нуля установить и произвести первоначальную настройку компьютерной телефонии на базе IP ATC MikoPBX с подключением к услуге «iD Phone» компании «Казахтелеком».

Несколько лет назад я уже писал аналогичное руководство: Установка и настройка Asterisk под iD Phone (iDPhone).

После этого я несколько раз обновлял нашу офисную АТС. Сначала на более свежие сборки «AsteriskNOW», а последний раз — на «FreePBX Distro». И с каждым разом меня все больше напрягал процесс настройки, т.к. для наших нужд все огромные возможности Asterisk'а весьма избыточны. Давно хотелось что-нибудь совсем не прожорливое в плане требований к железу, и чтобы настраивалось как можно быстрее. Кажется, MikoPBX — как раз такая сборка. Кому нужна легкая и быстронастраиваемая АТС под «iD Phone» — милости прошу под кат.
Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии6

pv — маленькая, но очень полезная утилита

Время на прочтение2 мин
Количество просмотров83K
Один мой друг сказал по поводу pv следующее «Я админю семь лет, мне нужна была эта тулза десятки раз, а я даже не знал что она существует». В размышлениях над тем как заполучить инвайт на Харбе, я набрал в поиске pv. И ничего не нашел.
Читать дальше →
Всего голосов 290: ↑280 и ↓10+270
Комментарии94

Пишем бот для рыбалки в игре Albion Online на языке Python

Время на прочтение5 мин
Количество просмотров74K
image

Всем привет, я являюсь счастливым пользователем операционной системы GNU/Linux.И как многим известно, игрушек идущих на линукс без дополнительных танцев с бубном намного меньше чем в «Винде».

И еще меньше игр в жанре MMORPG.

Однако, где-то пол года или год назад я узнал что под линукс портировали игру Albion Online.
Игра очень занимательная, однако занимает достаточно большое количество времени. И дабы не тратить свои драгоценные часы жизни по напрасну, я решил написать бота. Который будет фармить мне ресурсы, пока я буду заниматься своими делами.

В игре есть много видов ремесла, можно рубить лес, камни копать, даже выращивать огороды, однако мой выбор был сделан в пользу рыбалки.
Всего голосов 45: ↑39 и ↓6+33
Комментарии36

Горячие клавиши в шелле

Время на прочтение3 мин
Количество просмотров113K
Посвящается B_dot, пост которого заставил заинтересоваться возможностями консоли плотнее.
cat /dev/cheat-sheet >> /dev/head

Краткое вступление


В этом посте будет рассказано о некоторых сочетания клавиш, которые могут упросить жизнь администраторам, работающим в консоли. Все они работают в bash'e. Сочетания клавиш я дополнительно проверял на циске (Cisco IOS Software, s72033_rp Software (s72033_rp-ADVIPSERVICESK9_WAN-M), Version 12.2(33)SXH4), csh и zsh. Рассмотренное в других записях повторять особо не буду. Сочетания сгруппированы по использованной функциональной клавише.
Особенно полезен этот текст будет людям, которые любят использовать клавиши Home, End и Delete (которые в цисковой консоли «не работают»).
Читать дальше →
Всего голосов 150: ↑145 и ↓5+140
Комментарии59

VoIP зоопарк — Provisioning

Время на прочтение20 мин
Количество просмотров55K

Вступление


Однажды руководство одобрило эксперимент по внедрению IP телефонии в нашей конторе. Так как мой опыт в данной области был мизерным, задача пробудила во мне огромный интерес и я погрузился в изучение различных аспектов вопроса. По окончании погружения решил поделиться приобретенными знаниями — в надежде, что кому-то они пригодятся. Итак…

Исходные данные


В качестве IP-АТС выбран и развернут Asterisk. Парк телефонов состоит из аппаратов Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 и Dlink DPH-150S(E)/F3, Yealink T19 и T21. Такой разброс обусловлен тем, что в рамках эксперимента было принято решение попробовать всего понемногу, чтобы составить своё мнение о соотношении цена/качество/удобство.

Задача


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

Решение этой задачи простое — реализовать автоматическую настройку телефонов, т.н. Provisioning. Собственно, о моей реализации этой замечательной функции и пойдет речь.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии20

Что я узнал на личном опыте за годы фриланса

Время на прочтение3 мин
Количество просмотров60K
Первоначально опубликовано в /r/freelance на Reddit, но выкладываю здесь для потомков.

Я занимаюсь фрилансом довольно долго и могу поделиться крупицами знаний, которые я услышал или узнал сам, зачастую нелегким путём.

Типичный штатный сотрудник обходится компании в 2-3 раза дороже его номинальной зарплаты


Используй это в качестве основы для расчёта своих тарифов. $90 в час может показаться дорогой альтернативой сотруднику, который получает зарплату $30 в час, но в реальности это эквивалент $90, и расходы прекращаются сразу по окончании проекта.

Если клиент просит 6+ часов в день, ты потратишь 8 часов


Ты не сделаешь ничего полезного (читай: оплачиваемого) в оставшиеся два часа. Они отняли у тебя целый день, но заплатили только за 75%. В таких ситуациях взимай дневную ставку.
Читать дальше →
Всего голосов 75: ↑72 и ↓3+69
Комментарии95

SIP <-> Telegram: sip.tg

Время на прочтение7 мин
Количество просмотров47K
Уверен, многие задавались вопросом: вот есть Телеграм, год назад он обзавёлся звонками, у него открытое API, но почему-то до сих пор никто не сделал связку с протоколом SIP. Ведь это даёт неограниченные возможности: от замены SIP-звонилок до организации ещё одного канала коммуникации с пользователями Вашего бизнеса. Сегодня я расскажу историю появления первого такого шлюза, который теперь доступен абсолютно всем!
Как всё начиналось...
Всего голосов 27: ↑26 и ↓1+25
Комментарии42

Дюжина приемов в Linux, которые действительно сэкономят уйму времени

Время на прочтение9 мин
Количество просмотров137K


Эта статья также есть на английском.

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

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

Под катом — дюжина приемов в командной строке — из личного опыта.
Читать дальше →
Всего голосов 128: ↑122 и ↓6+116
Комментарии169

Информация

В рейтинге
Не участвует
Откуда
Зеленоград, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Fullstack Developer, 1C Developer
Lead
PHP
Linux
Bash