• MikroTik и блокировка нежелательных сайтов (на примере youtube и facebook)



    На написание данной статьи меня сподвиг тот факт, что старший ребенок стал по ночам вместо того чтобы укладываться спать, смотреть на своем смартфоне всякие ролики на youtube, до поздней ночи, а так же замена домашнего роутера с TP-Link TL-WR1043ND на MikroTik RB951G-2HnD.
    Читать дальше →
  • Удалённое включение скриптов Mikrotik из Telegram

    На данную реализацию меня подтолкнул Александр Корюкин GeXoGeN своей публикацией "Удалённое включение компьютера бесплатно, без SMS и без облаков, с помощью Mikrotik".

    И комментарий в одной из групп ВК Кирилла Казакова:
    Да уж, совсем не секьюрно. Я бы лучше написал телеграм бота, который принимает только с моего аккаунта команды на включение.

    Я решил написать такого бота.
    Читать дальше →
  • Удалённое включение компьютера бесплатно, без SMS и без облаков, с помощью Mikrotik

    • Tutorial
    … а также без проброса портов, SSH/telnet и установки сторонних приложений. С любого компьютера, подключённого к интернет и даже с телефона!

    Периодически мне бывает нужно включить домашний компьютер, когда я нахожусь не дома. Обычно я не запаривался и звонил или отправлял сообщение с такой просьбой жене, которая сидит дома в декрете. Очень удобное средство удалённого управления с голосовым интерфейсом. Однако у этого способа есть ряд недостатков — ушла гулять, укладывает ребёнка, или ещё чем либо занята. Хотелось простого решения из того что есть под рукой.
    Тыкни меня!
  • Практика настройки Mikrotik для чайников

    UPD: 01/08/2018

    Есть задача: настроить устройство на базе RouterOS в качестве замены SOHO роутера для дома или небольшого офиса. Это HOWTO, потому технических подробностей будет минимум, Next-Next-Next-Ok и вы получаете готовое к работе устройство, так что приступаем.
    Читать дальше →
  • Хостим персональный сайт на роутере

    Доброго времени суток.

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

    Поразмыслив, я вспомнил интересную статью о настройке сервера ip-телефонии Asterisk на маршрутизаторе Mikrotik. Так как у меня дома установлен роутер именно этого проиводителя, не раздумывая, я решил поднять на нём веб-сервер nginx.
    Читать дальше →
  • Как два программиста хлеб пекли



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

      Итак, представим себе, что есть два программиста. Один из них умный, прочёл кучу статей на Хабре, знает каталог GoF наизусть, а Фаулера — в лицо. Другой же делает всё просто. Первого будут звать, например, Борис Н., а второго — Маркус П. Само собой, имена вымышленные, и все совпадения с реальными людьми и программистами случайны.

      Итак, к ним обоим приходит проектный менеджер (если в вашей вселенной PM не ходит сам к программистам, назовите его как-то иначе, например BA или lead, сути это не изменит) и говорит:
      — Ребята, нам нужно, чтобы делался хлеб.

      Именно так, «делался», без уточнения способа производства.

      Как же поступят наши программисты?
      Читать дальше →
    • Подготовительный этап разработки программного обеспечения

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

        Введение


        В предыдущей статье «Обзор процесса разработки программного обеспечения» [1] я рассказал о самом «верхнем уровне» процесса разработки, сложившегося в моей практике на текущий момент. Во введении к «Обзору» я постарался сформулировать используемые термины и привёл примеры некоторых проектов, в которых использовался рассматриваемый процесс.

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

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

        Для достижения поставленных целей заказчику и исполнителю совместно нужно решить ряд вполне определённых задач:

        1. На основе исходной идеи сформулировать цели и задачи будущего проекта.
        2. Разработать некоторое исходное видение – концепцию проекта.
        3. Провести анализ востребованности будущего продукта.
        4. Провести предварительную оценку рисков будущего проекта.
        5. На основе концепции и списка предварительных рисков подготовить предварительное техническое решение.
        6. Выбрать методологию разработки и подготовить предварительный план работ.
        7. Провести предварительную оценку трудозатрат и необходимых ресурсов.
        8. Провести анализ реализуемости продукта.
        9. Провести независимое рецензирование технического решения.
        10. Принять решение о том, стоит ли продолжать работы.

        Читать дальше →
      • Прототип. От идеи до опытной партии. Литье в силикон

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


          Читать дальше →
        • Компиляция Try/Catch/Finally для JVM

          • Перевод

          Вместо введения


          Автор статьи, Alan Keefer1, является главным архитектором компании Guidewire Software2, разрабатывающей программное обеспечение для страхового бизнеса. Еще будучи старшим разработчиком, он участвовал в работе над языком Gosu3. В частности, Алан занимался вопросами компиляции языка в байт-код Java.

          Данная статья написана в 2009 году и посвящена деталям реализации try/catch/finally в JVM версии 1.6. Для ее прочтения необходимо иметь базовые знания синтаксиса Java, а также понимать назначение байт-кода, простыни которого лежат под катом. Также в конце статьи приведен ряд примеров, похожих на каверзные задачи SCJP.

          Внутренности JVM


          Одной из вещей, над которой по целому ряду причин мы сейчас работаем, является компиляция нашего «домашнего» языка в байт-код Java. (Для справки: не могу сказать, когда мы закончим. Даже примерно. Даже попадет ли он в будущие релизы.) Веселье заключается в изучении внутренностей JVM, а также поиске всех долбанутых острых углов собственного языка. Но больше всего «веселья» и острых углов доставляют такие операторы, как try/catch/finally. Поэтому, на этот раз, я не буду вдаваться в философию или аджайл. Вместо этого я углублюсь в JVM, куда большинству не требуется (или не хочется) углубляться.

          Если бы две недели назад вы спросили меня о finally-блоках, я бы предположил, что их обработка реализована в JVM: это базовая часть языка, она должна быть встроенной, не так ли? Каково же было мое удивление, когда я узнал: нет, не так. На самом деле finally-блоки просто подставляются во все возможны места после try- или связанных с ним catch-блоков. Эти блоки оборачиваются в «catch(Throwable)», который повторно выбросит исключение после того, как finally-блок закончит работу. Осталось только подкрутить таблицу исключений, чтобы подставленные finally-блоки были пропущены. Ну как? (Небольшой нюанс: до версии JVM 1.6 для оператора finally, по всей видимости, использовались подпограммы вместо полной подстановки. Но сейчас мы говорим о версии 1.6, к которой все вышесказанное применимо.)
          Читать дальше →
        • Секс и насилие в Google Play

            Последнее время google систематически удаляет приложения за секс и насилие, без пояснения причин и не вступая в диалог с разработчиками.

            Окей, гугл. Давайте проведем небольшой социальный эксперимент.

            Я установил на смартфоне доступ к контенту для младшей возрастной группы и зашел в несколько приложений от производителя Google Inc.
            посмотрим, что из этого получится
          • Деньги с AdSense теперь можно выводить напрямую на банковский счет

              Зайдя в панель управления Google AdSense сегодня утром обнаружил, что можно выводить деньги напрямую через банковский счет, а не через Рапиду. Аккаунт зарегистрирован в России. Вероятно, теперь можно получать выплаты в долларах и экономить 2% на выводе с Рапиды.
              Читать дальше →
            • Андроид: [DirectoryBind] Простой способ связать внешнюю sd карту и внутреннюю память, чтобы освободить место

                Сразу оговорюсь, что речь пойдет не о программах типа link2sd. Принцип похож, но связывать мы будем не программные каталоги, а каталоги данных этих программ, например /sdcard2/Navigon -> /sdcard/Navigon или /mnt/extSdCard/Books -> /sdcard/Books и т.д.
                Кроме того, нам нужен рут (куда ж без него). Кстати, после того как я узнал про эту программу, это для меня очередной аргумент за root.

                Многие владельцы андроид смартфонов или таблеток с небольшей встроеной памятью наверняка сталкивались со следущей проблемой: вставлена большая sd карта (например 16, 32 или даже 64 Гигабайт), но после установки нескольких тяжеловесных программ наше устройство или очередная программа с наглостью заявляет, что на карте не хватает места. Иногда сама программа небольшая, но после установки лезет в интернет и тянет на смартфон гигабайты данных.
                В очередной раз получив сообщение «Нет места» и заглянув на карточку видим, что она практически пуста, зато внутренняя память устройства забита под завязку.
                Это происходит потому, что внутренняя память часто используется как каталог по умолчанию для многих программ. Дело в том, что она монтируется как /sdcard, что исторически всегда было внешней sd картой (раньше так оно и было на всех смартфонах). Внешняя же sd карта монтируется в этом случае как /sdcard2, /mnt/sdcard2, /mnt/extSdCard или даже /sdcard/.externalSD. Я так понимаю, что это делается изготовителями, чтобы устройство работало из коробки, т.е. совсем без sd карты.

                Многие «недобросовестные» программы всегда хотят читать/писать данные из/в каталог /sdcard/НазваниеПодставить. Редко это можно изменить в настройках программы.
                В результате имеем, что имеем, и несколько возможностей чтобы поправить сложившееся положение:
                • перемонтировать каталоги: внешнюю sd карту на /sdcard, а внутреннюю на /sdcard2 (нужен рут, если нет в настройках). По моему недостаточно гибкий способ, т.к. теперь уже внутренняя память лежит у нас мертвым грузом. Еще один недостаток этого способа — скорость работы системы.
                  Если вы все же решитесь пойти этим путем, внизу я добавил как это можно сделать.
                • создать символьную ссылку на внешние каталоги, как нам нужно, например
                  ln -sf /mnt/externalSD/Books /sdcard/Books.
                  Не работает, если файловая система не поддерживает симлинк (например fat).
                • при загрузке андроида примонтировать внешние каталоги на внутреннюю память, используя что-то типа
                  mount -o bind /mnt/externalSD/Books /sdcard/Books
                  и добавить это в автозагрузку, например используя Autostart (root), чтобы это происходило автоматически при включении или после перезагрузки устройства.

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

                Читать дальше →
              • Если бы языки программирования были девушками…

                • Перевод
                Image #1602564, 172.6 KB

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

                Читать дальше →
              • Аскетичный ридер за 9.90 евро



                  Немецкий разработчик электронных книг Txtr на Всемирной книжной ярмарке в Франкфурте представил своё видение популярных ридеров — читалка Beagle с E-Ink экраном размером в 5 дюймов, разрешением экрана 800×600, весом в 128 грамм и толщиной немногим менее 5 мм за 9.90 евро.

                  Устройство обладает внутренней памятью в 4 Гб (поддержки карт памяти нет) и Bluetooth. Всё — больше ничего, кроме экрана и пары AAA-батареек, которые должны работать целый год, нет. Экран ридера также не реагирует на касания пальцами — для работы предусмотрены три аппаратных кнопки. Ни зарядок, ни каких-либо кабелей к ридеру не существует.

                  Для обмена книгами с устройством и синхронизации предлагается использовать приложение txtr ebooks (есть и для iOS), которое на обычном смартфоне или планшете позволит выбрать необходимую книгу ( их более 700 000, DRM не забыли, форматы EPUB и PDF) и отправить её по Bluetooth на Beagle.

                  Продажи планируются по всему миру, начиная от Европы и заканчивая США и Азией.
                  Источник
                • Curiosity — первые 50 дней на Марсе

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

                    Итак, 6 августа 2012 года на планету Марс совершил успешную посадку марсоход MSL Curiosity. Первый его кадр, переданный на Землю, вызвал волну радости и воодушевления у специалистов NASA:


                    Далее про первые 50 дней Curiosity на Марсе, с фотографиями, панорамами и иллюстрациями
                    Читать дальше →
                  • Развитие правого полушария головного мозга или как я учился рисовать

                    • Tutorial
                    Сразу дискламер: я редко пишу посты на широкую аудиторию, и более правильного ресурса для этого текста в рамках моего кругозора не нашлось. Тем не менее, если кто-то найдет это интересным, значит не зря… Поехали.

                    С чего все началось



                    Как-то я услышал от одного человека мысль о том, чтобы заниматься бизнесом, ему приходится «выращивать в себе Мистера Хайда», типа некая альтернатива его личности способна придумать что-то такое, что не способен придумать он сам. Конечно же, он шутил, по большей части, и тогда я этому значение не придал. Вспомнил эту точную метафору лишь, когда сам решил, что мне нужно развивать креативность, умение продуктивно фантазировать, придумывать нестандартные решения.
                    Читать дальше...
                  • 12 сентября. Сан-Франциско. Центр искусств Йерба Буэна. Live-трансляции — чего изволите?



                      Хабрачитатель! Это случится сегодня. В День Программиста.
                      12 сентября 2012 года. В 21:00 по Москве. В 20:00 по Киеву.

                      Продолжая эстафету анонсов live-трансляций — коротко и без хабраката — встречайте:

                      Русскоязычные трансляции:





                      Англоязычные трансляции:





                      Читать дальше →
                    • «All day phone» — Motorola обновила линейку RAZR

                        В тот же день, когда Nokia презентовала свои новые смартфоны, Motorola провела свою пресс-конференцию, на которой представила обновлённый модельный ряд семейства RAZR со следующими названиями — RAZR Maxx HD, RAZR HD и RAZR M и со слоганом "All day phone". Общим для всех моделей является поддержка сетей четвертого поколения, Android 4.0 с обещанным дополнением до более новой версии Jelly Bean (если вдруг что-то пойдёт не так, что производитель обещает каждому покупателю по 100 USD) и и солидное время работы без подзарядки.

                        Узнать подробности
                      • Google пытается сохранить 3054 языка, находящихся на грани исчезновения



                          Будет ли вам плохо от того факта, что люди перестанут говорить на арагонском? А как насчет Навахо или Оджибве? Или Коро, язык, который не так давно был открыт на северо-востоке Индии?

                          Вам-то, понятно, скорее всего, будет пофиг. Но вот для человечества в целом это довольно негативная тенденция. Как и для науки и искусства. По прогнозам ученых, к 2100-му году 3054 языка перестанут существовать. А это — половина всех языков мира.
                          Читать дальше →
                        • 10 альтернатив магазину приложений Google Play

                          Данная статья является переводом, оригинал можно найти тут — 10 Alternative Android App Stores

                          От переводчика:
                          Данная статья родилась совершенно случайно, после того, как я в попытках продвинуть свое приложение задался вопросом: "А все ли Android пользователи пользуются исключительно Google Play?" Как оказалось, нет, среди друзей нашлось немало тех, кто использует Amazon Appstore или Samsung Galaxy Apps и т.д. Поэтому я и решил поискать альтернативы. И, как оказалось, — их немало. Забегая вперед, хочу сказать, что эти агрегаторы приложений действительно имеют активную аудиторию, это сразу стало заметно после публикации моей игрушки.

                          Вы только что завершили работу над большим Android приложением и уже готовы заработать на нем. Как же это сделать? Наиболее распространенный путь, вероятно, заплатить $25, чтобы получить аккаунт разработчика и добавить приложение на Google Play. Однако, есть много альтернатив, каждая со своей собственной аудиторией, которая может принести вам еще больше загрузок.

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