• Телеграм-бот для домашнего видео-наблюдения из подручных материалов

    Disclaimer


    Эта статья содержит некоторое количество программного кода, написанного на языке Python. Ввиду того, что автор статьи по профессии является сисадмином, но не программистом — стиль и качество этого кода, могут вызвать проявление неконтролируемых эмоций у профессионалов. Пожалуйста, немедленно прекратите чтение если вид неаккуратного или неоптимального кода может негативно сказаться на вашем психическом состоянии.


    Постановка задачи


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



    Из всего перечисленного, было решено построить систему домашнего видео-наблюдения с функционалом оповещения о вторжении. В качестве платформы был выбран телеграм-бот. Бот имеет следующие преимущества перед другими возможными реализациями (веб, мобильное приложение):


    • Не требуется установки дополнительного клиентского ПО
    • Серверная часть может работать с приватным IP адресом через NAT, при этом предъявляются минимальные требования к подключению (вплоть до 3G модема)
    • Большая часть инфраструктуры находится на стороне сервис-провайдера, который за меня решил вопросы авторизации, безопасности итп...

    С помощью беглого анализа интернет-публикаций, существующие решения обнаружены не были.

    Читать дальше →
  • ES5 руководство по JavaScript


      JavaScript quality guide


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

      От переводчика


      Всем привет, с вами Максим Иванов, и сегодня мы поговорим о правилах оформления кода на языке JavaScript. Николя Бэвакуа (Nicolás Bevacqua), автор книги «Дизайн JavaScript-приложений» (JavaScript Application Design), разработчик из Аргентины, опубликовал данное руководство достаточно давно, первая запись появилась еще в 2014 году, многое написано по стандарту ES5, однако, в наши дни это все равно актуально, сейчас, когда ES6 еще нигде полноценно не работает без babel и прочих транспайлеров. Хотя мы видим прогресс в топовых десктопных браузерах (Google Crhome, Firefox), где уже реализовано 70-90% задуманного, мы видим, что они стремятся поддерживать новый стандарт, но, к сожалению, ещё нет браузеров, которые полностью могли бы поддерживать ES6. К слову, я буду очень рад вашим комментариям. В общем, удачи и давайте начнем.
      Читать дальше →
    • Async/await это шаг назад для JavaScript'a?

      • Translation


      В конце 2015 года я услышал об этой паре ключевых слов, которые ворвались в мир JavaScript, чтобы спасти нас от promise chain hell, который, в свою очередь, должен был спасти нас от callback hell. Давайте посмотрим несколько примеров, чтобы понять, как мы дошли до async/await.
      Читать дальше →
    • Пособие по webpack

      • Translation
      • Tutorial


      Давайте сначала разберемся, зачем нужен вебпак (webpack), и какие проблемы он пытается решить, а потом научимся работать с ним. Webpack позволяет избавиться от bower и gulp/grunt в приложении, и заменить их одним инструментом. Вместо bower'а для установки и управления клиентскими зависимостями, можно использовать стандартный Node Package Manager (npm) для установки и управления всеми фронтэнд-зависимостями. Вебпак также может выполнять большинство задач grunt/gulp'а.


      Bower это пакетный менеджер для клиентской части. Его можно использовать для поиска, установки, удаления компонентов на JavaScript, HTML и CSS. GruntJS это JavaScript-утилита командной строки, помогающая разработчикам автоматизировать повторяющиеся задачи. Можно считать его JavaScript-альтернативой Make или Ant. Он занимается задачами вроде минификации, компиляции, юнит-тестирования, линтинга и пр.

      Допустим, мы пишем простую страницу профиля пользователя в веб-приложении. Там используется jQuery и библиотеки underscore. Один из способов — включить оба файла в HTML:

      Читать дальше →
    • jQuery Deferred Object (подробное описание)

      31 января вышел релиз jQuery 1.5, одним из ключевых нововведений которого стал инструмент Deferred Object. Именно о нём я и хочу рассказать подробнее в этой статье.

      Эта новая функциональность библиотеки направлена на упрощение работы с отложенными (deferred) вызовами обработчиков (callbacks). Deferred Object, аналогично объекту jQuery, «цепочный» (chainable), но имеет свой набор методов. Deferred Object способен регистрировать множество обработчиков в очередь, вызывать зарегистрированные в очереди обработчики и переключать состояние на «завершено» или «ошибка» для синхронных или асинхронных функций.
      Подробности и примеры далее
    • Wireshark — приручение акулы

      • Tutorial


      Wireshark — это достаточно известный инструмент для захвата и анализа сетевого трафика, фактически стандарт как для образования, так и для траблшутинга.
      Wireshark работает с подавляющим большинством известных протоколов, имеет понятный и логичный графический интерфейс на основе GTK+ и мощнейшую систему фильтров.
      Кроссплатформенный, работает в таких ОС как Linux, Solaris, FreeBSD, NetBSD, OpenBSD, Mac OS X, и, естественно, Windows. Распространяется под лицензией GNU GPL v2. Доступен бесплатно на сайте wireshark.org.
      Установка в системе Windows тривиальна — next, next, next.
      Самая свежая на момент написания статьи версия – 1.10.3, она и будет участвовать в обзоре.

      Зачем вообще нужны анализаторы пакетов?
      Для того чтобы проводить исследования сетевых приложений и протоколов, а также, чтобы находить проблемы в работе сети, и, что важно, выяснять причины этих проблем.
      Вполне очевидно, что для того чтобы максимально эффективно использовать снифферы или анализаторы трафика, необходимы хотя бы общие знания и понимания работы сетей и сетевых протоколов.
      Так же напомню, что во многих странах использование сниффера без явного на то разрешения приравнивается к преступлению.

      Начинаем плаванье


      Для начала захвата достаточно выбрать свой сетевой интерфейс и нажать Start.
      Читать дальше →
    • Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть первая

      О чем данный учебник


      Данный учебник представляет собой что-то типа «штампа моей памяти» по языку SQL (DDL, DML), т.е. это информация, которая накопилась по ходу профессиональной деятельности и постоянно хранится в моей голове. Это для меня достаточный минимум, который применяется при работе с базами данных наиболее часто. Если встает необходимость применять более полные конструкции SQL, то я обычно обращаюсь за помощью в библиотеку MSDN расположенную в интернет. На мой взгляд, удержать все в голове очень сложно, да и нет особой необходимости в этом. Но знать основные конструкции очень полезно, т.к. они применимы практически в таком же виде во многих реляционных базах данных, таких как Oracle, MySQL, Firebird. Отличия в основном состоят в типах данных, которые могут отличаться в деталях. Основных конструкций языка SQL не так много, и при постоянной практике они быстро запоминаются. Например, для создания объектов (таблиц, ограничений, индексов и т.п.) достаточно иметь под рукой текстовый редактор среды (IDE) для работы с базой данных, и нет надобности изучать визуальный инструментарий заточенный для работы с конкретным типом баз данных (MS SQL, Oracle, MySQL, Firebird, …). Это удобно и тем, что весь текст находится перед глазами, и не нужно бегать по многочисленным вкладкам для того чтобы создать, например, индекс или ограничение. При постоянной работе с базой данных, создать, изменить, а особенно пересоздать объект при помощи скриптов получается в разы быстрее, чем если это делать в визуальном режиме. Так же в скриптовом режиме (соответственно, при должной аккуратности), проще задавать и контролировать правила наименования объектов (мое субъективное мнение). К тому же скрипты удобно использовать в случае, когда изменения, делаемые в одной базе данных (например, тестовой), необходимо перенести в таком же виде в другую базу (продуктивную).
      Читать дальше →
    • MSBuild — в Open Source на github

      • Translation
      Сегодня мы особенно рады сообщить что MSBuild (наверное, самая часто используемая и самая таинственная по документированности — прим. перев.) — теперь доступен на github и мы вносим его в список .NET Foundation! The Microsoft Build Engine (MSBuild) — это платформа для построения приложений. Вызывая msbuild на вашем проекте или решении, вы можете организовывать и собирать свои продукты в окружениях, где нет установленной MS Visual Studio. Например, MSBuild используется чтобы собирать такие Open Source проекты, как .NET Core Libraries и .NET Core Runtime.



      Ядро, библиотеки, миграция на Mac/Linux, msbuild… Еще немного и я поверю в выход на github MS Visual Studio.
      Читать дальше →
    • 300 потрясающих бесплатных сервисов

      • Translation


      Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



      A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

      • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
      • Bootswatch: Бесплатные темы для Bootstrap.
      • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
      • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
      • Strikingly.com Domain: Конструктор веб-сайтов.
      • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
      • Withoomph: Мгновенное создание логотипов (англ.).
      • Hipster Logo Generator: Генератор хипстерских логотипов.
      • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
      • Invoice to me: Бесплатный генератор счета.
      • Free Invoice Generator: Альтернативный бесплатный генератор счета.
      • Slimvoice: Невероятно простой счет.

      Читать дальше →
    • Обзор ASP.NET 5

      • Translation
      ASP.NET 5 привносит значительные изменения в платформу ASP.NET. В этой статье рассматриваются новые концепции ASP.NET 5 и объясняется, как они помогут разрабатывать современные веб-приложения.

      Введение в ASP.NET 5.


      ASP.NET 5 — это лишенный всего избыточного .NET стек для построения современных веб-приложений. Мы построили его с нуля, чтобы обеспечить оптимизированную платформу для разработки приложений, которые будут развернуты в облаке или работать на собственных серверах. Для поддержки гибкости при построении решений данная платформа состоит из модульных компонентов с минимальными накладными расходами.
      ASP.NET 5 включает в себя следующие возможности:

      • Новая гибкая и кроссплатформенная среда выполнения
      • Новый модульный конвейер для HTTP-запросов
      • Конфигурация готовая к использованию в облаке
      • Унифицированная программная модель, которая сочетает в MVC, Web API и Web Pages
      • Возможность увидеть изменения без повторного построения проекта
      • Использование нескольких версий .NET Framework бок о бок
      • Возможность self-hosting или хостинга на IIS
      • Новые инструменты в Visual Studio 2015
      • Открытый исходный код в GitHub

      Изменения, которые мы сделали для ASP.NET 5 были основаны на запросах клиентов и обратной связи. Эти изменения упрощают разработку, хостинг и обслуживание и ориентированы на современные веб-приложения.
      Читать дальше →
    • Как сэкономить на фотоаппарате с GPS

      • Translation
      Мне нравятся геотеги в фотографиях. Геотеги так же, или даже более полезные, чем теги лиц. Уже появляются программы, которые позволяют отображать протегированные фото на карте в приятном и полезном виде:



      Обычно, после поездок с фотоаппаратом я садился за компьютер и проставлял координаты фотографий вручную с мечтами о том, что в один прекрасный день я куплю себе «тушку», в которой будет GPS-приемник. Но несколько недель назад открыл для себя набор программ, которые компенсируют фотоаппарату отсутствие GPS наличием этого модуля в телефоне.
      Читать дальше →
    • Youtube

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

        image

        Причина в занижении провайдерами скорости к серверам кеширующим видео, всё что нужно сделать это заблокировать доступ к ним.

        Для того чтобы запрос шел мимо cdn серверов ютуба надо заблокировать диапазон ip адресов (в роутере или на компьютере).

        173.194.55.0/24 и 206.111.0.0/16
        Читать дальше →
      • Как не потерять деньги, желая сэкономить. Правила интернет покупок из-за рубежа

              Давно собирался написать эту статью, но все не находил на это время. Последней каплей, подтолкнувшей меня к изложению аккумулированного за шесть лет опыта покупок за рубежом стали две статьи о массовом разводе дешевыми Киндлами, изложенные на хабре. Случай, когда такое количество человек попало на обычный для Ебея развод показал, что эта тема освещена недостаточно и людям не хватает базовых знаний в вопросе безопасности покупок.
              Ниже, я попытаюсь изложить то, что почерпнул за годы покупок как на своем опыте, так и из жалостливых писем с мольбами о помощи от коллег покупателей на профильных форумах. Все нижеизложенное я считаю тем минимумом, который необходимо усвоить ДО того, как пытаться что либо купить за рубежом. Более тонкие вещи можно почерпнуть на соответствующих тематических форумах.

          Итак, начнем. Заранее прошу прощения за большое количество текста и излишнее словоблудие.
          Читать дальше →
        • Практический опыт подачи электронной отчетности в Украине

          • Tutorial

          Вводная


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

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

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


          Имеем небольшую фирму или оформились частным предпринимателем – добро пожаловать в налоговую, пенсионный, статистику и другие службы по роду деятельности. Опишу процедуру подачи отчетности от и до на примере юридического лица.
          Читать дальше →
        • ExifTool – швейцарский нож фотометаданных

          Назваться любителем командной строки будет для меня как-то чересчур, скорее, я стал им добровольно-принудительно, т.к. после обновления OS X 10.7 на 10.8 перестала работать программа, которая до того вполне неплохо проставляла геотеги на отснятые фотографии. Здесь надо сделать отступление: на написание этой заметки меня сподвиг более или менее «соседний» материал под названием «Как сэкономить на фотоаппарате с GPS». В моём случае имеет место несколько менее извращённый подход к получению координат посещённых мест, а именно — запись трека GPS-навигатором, остальное же выполняется с помощью ExifTool.

          Пожалуй, можно опустить получение удобоваримого формата трека, т.к. это вряд ли сопоставимо с темой заметки, а вот проставление геотегов — одна из задач, которую ExifTool чудесно выполняет.
          Читать дальше →
          • +28
          • 22.3k
          • 6
        • Опыт заказа в китайских интернет-магазинах

            В данной статье хотелось бы поделиться с читателями своим личным опытом о китайских интернет-магазинах, в которых мне (или моим друзьям) приходилось делать покупки. Речь пойдет именно про электронный сегмент товаров. Сразу перейду к сути, и приведу обзоры этих самых магазинов с заключительной оценкой:
            Читать дальше →
          • URL Rewrite Extension: исправляем распространенные проблемы SEO

            • Translation
            seo toolkit
            Поисковая оптимизация (SEO) очень важна для сайтов. Большинство трафика на сайты идет прямиком из поисковых систем, а улучшение поисковой релевантности вашего сайта приведет к увеличению переходов пользователей на сайт. Это может явно или неявно увеличить доход с сайта.

            Данная статья расскажет вам, как вы можете использовать URL Rewrite Extension для того, чтобы исправить кучу распространенных проблем в SEO, которые могут быть у вашего сайта. Вам потребуется всего 15 минут и не нужно вносить какие-либо изменения в коде, чтобы применить 4 простых правила URL Rewrite для своего сайта и привлечь больше посетителей и трафика с поисковых систем. Перечисленные ниже приемы работаю одинаково, как на ASP.NET Web Forms, так и на ASP.NET MVC сайтах (и даже не на ASP.NET сайтах)
            Читать дальше →
          • Потокобезопасные события в C# или Джон Скит против Джеффри Рихтера



              Готовился я как-то к собеседованию по C# и среди прочего нашел вопрос примерно следующего содержания:
              «Как организовать потокобезопасный вызов события в C# с учетом того, что большое количество потоков постоянно подписываются на событие и отписываются от него?»


              Вопрос вполне конкретно и чётко поставлен, поэтому я даже не сомневался в том, что ответ на него можно дать также чётко и однозначно. Но я очень сильно ошибался. Оказалось, что это крайне популярная, избитая, но до сих пор открытая тема. А еще заметил не очень приятную особенность — в русскоязычных ресурсах этому вопросу уделяется очень мало внимания (и хабр не исключение), поэтому я решил собрать всю найденную и переваренную мной информацию по данному вопросу.
              До Джона Скита и Джеффри Рихтера тоже дойдем, они то, собственно, и сыграли ключевую роль в моем общем понимании проблемы работы событий в многопоточной среде.

              Особо внимательный читатель сможет найти в статье два комикса в стиле xkcd.
              (Осторожно, внутри две картинки примерно по 300-400 кб)
              Читать дальше →