Как стать автором
Обновить
0
0

Пользователь

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

Serverless Telegram бот в Яндекс.облаке, или 4.6 копейки за 1000 сообщений

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

Краткое содержание

"Whenever you receive a webhook update, you have two options"
Из Telegram Bot Api Faq


Привет, Хабр!


Долгое время концепция serverless (а если говорить точнее — её реализация в виде сервиса AWS Lambda) была для меня относительно понятной, но очень абстрактной идеей. Она часто звучала в Radio-T, обсуждениях на реддите, но никак не входила в мою жизнь. Рабочие проекты живут не в облаке, а домашние — зачем? Виртуалки дешевеют, Docker освоен, и всё отлично работает.


Но презентация Yandex Cloud Functions, и в особенности озвученные цены на этот сервис, дали новую пищу для размышлений.


TL;DR — дождливым пятничным вечером мы напишем простенького Telegram бота на javascript, который сможет отвечать на запросы простыми сообщениями. Если это ваш домашний проект — его использование почти наверняка обойдётся вам значительно дешевле самых бюджетных VPS.


Поехали.

Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии46

Файловая система Linux полностью на tmpfs — скорость без компромиссов

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

Предыстория


Так сложилось, что уже пять лет мой раздел ntfs с операционной системой Windows располагается на рамдиске. Решено это не аппаратным, а чисто программным способом, доступным на любом ПК с достаточным количеством оперативной памяти: рамдиск создается средствами загрузчика grub4dos, а Windows распознаёт его при помощи драйвера firadisk.

Однако до недавнего времени мне не был известен способ, как реализовать подобное для Linux. Нет, безусловно, существует огромное количество линуксовых LiveCD, загружающихся в память при помощи опций ядра toram, copy2ram и т. д., однако это не совсем то. Во-первых, это сжатые файловые системы, обычно squashfs, поэтому любое чтение с них сопровождается накладными расходами на распаковку, что вредит производительности. Во-вторых, это достаточно сложная каскадная система монтирования (так как squashfs — рид-онли система, а для функционирования ОС нужна запись), а мне хотелось по возможности простого способа, которым можно «вот так взять и превратить» любой установленный на жесткий диск Linux в загружаемый целиком в RAM.

Ниже я опишу такой способ, который был с успехом опробован. Для опытов был взят самый заслуженный дистрибутив Linux — Debian.
Читать дальше →
Всего голосов 83: ↑74 и ↓9+65
Комментарии167

Chrome extension за выходные

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

Проблема

Как обычно поздней ночью, садясь в автобус, я достал телефон, и пока набирал “habr…” он отрубился. Я вслух подумал: “А раньше не мог сказать?”, немного пожалел, что телефоны редко пищат, пока разряжаются. А потом…

Потом мы с приятелем решили подойти к вопросу по-мужски. Он написал программулину для андроида, а я расширил Хром. О последнем и пойдёт речь.

Задача

Итак, идея: андроид-приложение наблюдает за состоянием аккумулятора и периодически уведомляет сервер об уровне заряда. Причём делает это как-нибудь по-умному, чтобы заряд от этого не пострадал. Хром-расширение выставляет свою иконку в специально отведённом месте, иконка показывает заряд батарейки андроида и всячески привлекает внимание, если она совсем почти разряжена. А чтобы всё не казалось слишком простым, реализовать идею надо было за одни выходные. В противном случае баланс ценность/усилия вываливался за рамки бесплатного приложения.

Таким образом, выбор подхода к задаче оказался даже важнее скорости десятипальцевой печати.
Ну я и взялся за дело
Всего голосов 96: ↑84 и ↓12+72
Комментарии66

Создание расширения для Google Chrome

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

Для работы с расширениями вам понадобится переключить канал обновлений на Dev или Beta.
Читать дальше →
Всего голосов 98: ↑93 и ↓5+88
Комментарии28

Обработка входящей почты на PHP

Время на прочтение2 мин
Количество просмотров37K
Хочу поделиться рецептом, как совместить php-скрипт и почтовый сервер Postfix для автоматической обработки входящей почты.

С помощью такой связки мы собираем статистику по количеству возвратов bounce-писем:Undelivered Mail Returned to Sender.

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

Как это сделать...
Всего голосов 73: ↑62 и ↓11+51
Комментарии43

PhpStorm: Tips and tricks. Часть 1

Время на прочтение3 мин
Количество просмотров42K
Сегодня будем говорить о некоторых возможностях замечательной IDE PhpStorm. Программисты из компании Jetbrains вкладывают огромные силы в создание своего продукта, в результате мы имеем мощную и одну из лучших IDE для языка программирования php. Думаю времена, когда хотелось выделиться программированием в Notepad++, практически ушли. Разрабатывать на коленке современные большие проекты с множеством файлов крайне затруднительно без хорошего инструмента.
Читать дальше →
Всего голосов 38: ↑25 и ↓13+12
Комментарии52

36 млн запросов в час, 10000+ постоянно работающих клиентов, на одном сервере, nginx+mysql

Время на прочтение5 мин
Количество просмотров114K
Сложилась ситуация, что участвую в проекте, который работает с достаточно большой нагрузкой. Как уже написал — 36 млн запросов в час. Я много чего прочитал и перепробовал за последний месяц, настраивая сервер; хотелось бы просто сжато и компактно выдать тезисно то, что работает хорошо в такой конфигурации.

Первое, что я заметил — множество советов как все настроить под большую нагрузку. Читайте их внимательно, обычно в тексте найдете, что речь про «высокую нагрузку» в 15-20 тысяч клиентов в сутки. У нас клиентов примерно миллион, активных, ежедневных.

У нас нет денег и мы все делаем за свой счет, поэтому экономим. Итог — весь миллион клиентов обслуживается на одном сервере, вот на таком — EX-60 на hetzner.
Читать дальше →
Всего голосов 111: ↑96 и ↓15+81
Комментарии102

50+ лучших дополнений к Bootstrap

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


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

Для статьи я подобрал наиболее полезные дополнения «на все случаи жизни».
Читать дальше →
Всего голосов 123: ↑111 и ↓12+99
Комментарии25

Микросервисы (Microservices)

Время на прочтение22 мин
Количество просмотров682K
От переводчика: некоторые скорее всего уже читали этот титанический труд от Мартина Фаулера и его коллеги Джеймса Льюиса, но я все же решил сделать перевод этой статьи. Тренд микросервисов набирает обороты в мире enterprise разработки, и эта статья является ценнейшим источником знаний, по сути выжимкой существующего опыта работы с ними.

Термин «Microservice Architecture» получил распространение в последние несколько лет как описание способа дизайна приложений в виде набора независимо развертываемых сервисов. В то время как нет точного описания этого архитектурного стиля, существует некий общий набор характеристик: организация сервисов вокруг бизнес-потребностей, автоматическое развертывание, перенос логики от шины сообщений к приемникам (endpoints) и децентрализованный контроль над языками и данными.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии45

Свое облачное хранилище на основе ownCloud

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

ownCloud — система для организации хранения, синхронизации и обмена данными, размещенными на внешних серверах.
В отличии от Dropbox и ему подобных, ownCloud отличается предоставлением пользователю полного контроля над своими данными — информация размещается на подконтрольных пользователю системах. Доступ к данным в ownCloud может осуществляться при помощи web-интерфейса или протокола WebDAV.

Особенности ownCloud


  • Open source;
  • Поддержка шифрования передачи данных;
  • Автоматическое резервное копирование;
  • Поддержка WebDAV позволяет организовать доступ к данным из любых операционных систем;
  • Поддержка синхронизации данных с другими web-приложениями, поддерживающими протокол remoteStorage;
  • Управление пользователями и группами;
  • В web-интерфейс встроены средства для работы с синхронизированной адресной книгой, календарем-планировщиком, коллекцией фотографий, архивом музыкальных произведений;
  • Для ownCloud подготовлен сервер Ampache, что позволяет организовать потоковое вещание музыки;

Читать дальше →
Всего голосов 42: ↑34 и ↓8+26
Комментарии35

Обещания JavaScript

Время на прочтение19 мин
Количество просмотров204K
Всем привет, и ещё раз всех с прошедшими праздниками. Трудовые будни набирают обороты и вместе с ними растёт информационный голод мучающий нас. Мир разработки переднего конца не дремлет и готовит нам много сюрпризов в наступившем году, и уж поверьте мне, скучно не будет ни кому. Одна из новых особенностей которые нам готовят разработчики браузеров совместно с группами разработчиков пишущих спецификации — JavaScript Promises(далее в переводе — Обещания, прошу сильно не бить) — полюбившийся многим шаблон написания асинхронного кода обзаводится нативной поддержкой. Что же такое обещания и с чем их едят можно прочесть в нижеследующем переводе(слегка вольном) замечательной статьи Джейка Арчибальда.

Подробности
Всего голосов 83: ↑76 и ↓7+69
Комментарии39

Модули JavaScript

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


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

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

Как мы делали API для социальной сети (REST API для WEB)

Время на прочтение9 мин
Количество просмотров55K
Я в своей работе часто сталкиваюсь с разными новыми концепциями, идеологиями и проектами. В основном из-за того, что участвую в разработке разных больших проектов, в каждом из которых встречаю что-то новое. Сегодня я хочу рассказать о своем опыте с REST API. Идеологии, которую мне как-то раз довелось применить при разработке одной социальной сети.

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

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

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

Теперь давайте по порядку.
Читать дальше →
Всего голосов 61: ↑49 и ↓12+37
Комментарии52

RESTful API для сервера – делаем правильно (Часть 2)

Время на прочтение9 мин
Количество просмотров85K
В первой части статьи я кратко описал принципы RESTful и объяснил каким образом следует проектировать архитектуру вашего сервера так, чтобы можно было легко выпускать новые и прекращать поддержку устаревших версий вашего API. В этой части я кратко расскажу о HATEOAS и Hypermedia, а затем расскажу о роли, которую они могут сыграть при разработке нативных приложений для мобильных устройств. Но главной темой этой статьи будет реализация кэширования (точнее поддержка кэширования на стороне сервера). Целевая аудитория включает разработчиков серверного ПО и, в какой то мере, разработчиков под iOS или под другие мобильные платформы.

Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии14

RESTful API для сервера – делаем правильно (Часть 1)

Время на прочтение13 мин
Количество просмотров332K
В 2007-м Стив Джобс представил iPhone, который произвел революцию в высокотехнологичной индустрии и изменил наш подход к работе и ведению бизнеса. Сейчас 2012-й и все больше и больше сайтов предлагают нативные iOS и Android клиенты для своих сервисов. Между тем не все стартапы обладают финансами для разработки приложений в дополнение к основному продукту. Для увеличения популярности своего продукта эти компании предлагают открытые API, которыми могут воспользоваться сторонние разработчики. Пожалуй Twitter был первым в этой сфере и теперь число компаний, последовавших этой стратегии, растет стремительно. Это действительно отличный способ создать привлекательную экосистему вокруг своего продукта.

Читать дальше →
Всего голосов 73: ↑70 и ↓3+67
Комментарии57

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

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

Введение


В русскоязычной части Интернета присутствует большое количество статей, посвященных веб-службам на основе SOAP и XML-RPC, но почему-то почти ничего нет про вполне заслуживающую внимания (но менее распространенную) архитектуру RESТ.

В данной статье описываются основы этой архитектуры, возможности и примеры её использования.

Читать дальше →
Всего голосов 85: ↑78 и ↓7+71
Комментарии75

Как я полюбил vim, Emacs и клавиатуру

Время на прочтение13 мин
Количество просмотров75K
В какой-то степени эта статья ответ — или, скорее, дополнение — к публикации «Зачем vi-топор программисту 21-го века». Я увидел, что в комментариях люди по-прежнему удивлялись: какой смысл в этих редакторах, когда есть полноценные IDE; статья приводила немного реальных примеров и, понимая, что мне есть, что сказать, я решил поделиться собственным опытом. Написано в художественном стиле, так как думаю, если бы люди хотели сухую выжимку, они бы просто пошли читать мануалы. Так же предупрежу, что в мануалах по Емаксу клавиша «Alt» упоминается как «Meta». Я буду говорить «Alt», так как для многих это название привычней.
Читать дальше →
Всего голосов 51: ↑41 и ↓10+31
Комментарии191

Как мы создали универсальную систему управления бизнесом

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

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

Будь то 1С, Битрикс, Мегаплан или тем более самостоятельные решения – они требуют установки специфического софта, налаживания удаленного доступа к серверу через VPN или другие решения, не работают с плохими каналами связи – какие часто встречаются в торговых центрах или удаленных офисах, и уж точно требуют недюжинного умения работников для доступа из дома или командировки.

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

Постановка вопроса

В общем, когда передо мной встала задача поставить систему учета на 5 удаленных магазинов, склад и офис, варианты готовых решений выглядели бледновато. После мыслей об обучении продавцов (хороших продавцов, но не пользователей компьютера) – первый раз видевших мышку, как пользоваться 1С и бесконечных поездках для настройки сети, стало понятно что это не наш вариант…

Хотелось следующего:
• Полностью удаленное пользование с любой операционной системы, с планшета, смартфона
• Нетребовательность к качеству канала связи
• Дружелюбный интерфейс и юзабилити
• Скорость – любые отчеты и документы в течение секунды
• Возможность встраивания продвинутой аналитики

Понятно, что одним из решений, чтобы не изобретать велосипед с нуля, было сделать online систему базирующуюся на наших же серверах, работающую на максимально простых механизмах и структурах. Бесконечные таблицы, описывающие номенклатуру, тоже казались избыточными – десяток полей с табличкой названий для каждого параметра до сих пор работает отлично.
Читать дальше →
Всего голосов 21: ↑13 и ↓8+5
Комментарии58

Первые шаги к автоматизации бизнеса. С чего начать?

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

Введение

Если вы читаете эту статью, то наверняка уже слышали о преимуществах автоматизированного бизнеса. Организованная работа с сотрудниками и клиентами, повышенная эффективность рабочего процесса, увеличение прибыли… Неудивительно, что столько компаний хотят автоматизировать свой бизнес как можно скорее. Вот только не всегда удается сделать это правильно.
Ведь обычно всё происходит как? Компания приобретает специальную программу, начинает ее внедрять и сталкивается со сложностями. Например, оказывается, что сотрудники не хотят переходить на непривычную для них систему, да и организованные бизнес-процессы не так легко перенести в строгие рамки таблиц. В итоге все заканчивается тем, что систему не используют в полную силу, а то и вовсе забрасывают и возвращаются к привычному Excel.
Такие примеры заставляют руководство серьезно задуматься перед тем, как устанавливать систему в своей компании. И это к лучшему: программа действительно способна максимально учитывать требования бизнеса, но для этого их еще нужно предъявить. То есть — составить техническое задание.
На составление, как правило, уходит много времени. Нужно понять, какие именно процессы стоит автоматизировать и на что обратить внимание прежде всего. Для этого можно задействовать сотрудников, привлечь специалистов со стороны – но все равно остаться без желаемого результата. Чтобы не пропустить важные моменты и использовать программу эффективно, нужно четко определить план действий. Именно поэтому команда «Клиентская база» создала это руководство для начинающих. Если вы планируете перевести свой бизнес на современные системы, но пока не уверены, с чего начать, то все, что вам надо сделать – это ответить на вопросы, поэтапно изложенные ниже.
Читать дальше →
Всего голосов 9: ↑6 и ↓3+3
Комментарии6

Воронка продаж в CRM: не будь тетерей, анализируй потери

Время на прочтение9 мин
Количество просмотров67K
Проведем опыт. Возьмем пластиковую воронку, закроем низ пальцем, нальем полстакана воды. Теперь подставим пустой стакан, откроем отверстие — вылилось ровно полстакана. Очевидно, что калька с английского термина «sales funnel» прочно прижилась, но при этом не отражает истиной сущности. Говоря о воронке продаж, из которой выходит гораздо меньше клиентов, чем вошло, проще представлять многоступенчатый фильтр, на каждом слое которого оседают взвеси, а на выходе — качественная вода. И этот образ справедлив, ведь «funnel» означает в переводе еще и «просачиваться, выходить наружу».

Воронка продаж — один из самых одиозных и одновременно любимых отчетов генеральных директоров, руководителей отделов продаж, маркетологов. Более того, некоторые менеджеры только его и используют.
Читать дальше →
Всего голосов 9: ↑6 и ↓3+3
Комментарии32

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность