Search
Write a publication
Pull to refresh
0
0
Vasiliy @JMS

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

Send message

Cambium cnPilot – недорогой WiFi, который нас удивил

Reading time6 min
Views29K
Не секрет, что WiFi-решений на рынке сейчас много. Можно даже сказать, что слишком много – глаза разбегаются. И речь сейчас не просто о «консьюмерских» домашних «диртриста», которых под любым брендом в любом корпусе можно купить, наверное, тысячу и ни разу не повториться: речь о системах, которые позиционируются как оборудование для построения больших WiFi-сетей с централизованным управлением. Это значит, что мы не просто ставим в одном месте десяток ТД (здесь и далее – точка доступа), но еще и настраиваем их таким образом, что либо они все знают друг о друге и учитывают частоты друг друга при радиопланировании, осуществляют хендовер клиентов, либо какой-то отдельный узел сети управляет сразу всеми как одной большой сетью.


В противном случае, установка большого количества точек доступа в пределах видимости друг друга не улучшит, а скорее ухудшит ситуацию из-за взаимных помех и потери связи клиентами при переключении между точками.
Если приглядеться ко всему многообразию корпоративных решений, то условно можно разделить их на две большие группы:
Читать дальше →

Пишем мультиплатформенного бота для перевода денег с карты на карту с помощью Microsoft Bot Framework V1

Reading time8 min
Views16K
Во время конференции Microsoft Build 2016 был анонсирован Microsoft Bot Framework (сессия с Build 2016: видео). С его помощью можно создать бота (на C# или Node.js), которого потом можно подключить к различным каналам / приложениям: СМС, Skype, Telegram, Slack и т.д. Мы пишем бота, используя Bot Builder SDK от Microsoft, а все проблемы взаимодействия с третьесторонними API берет на себя Bot Connector (см. изображение). Звучит красиво, попробуем создать простого бота, который мог бы переводить деньги с карты на карту (логику перевода возьмем у Альфа Банка — тестовый стенд, описание API: Альфа Банк), испытав все прелести продукта, находящегося в альфа-версии.

Disclaimer: во время написания статьи Microsoft выпустил новую версию фреймворка, так что ждите вторую серию: мигрируем бота с v1 на V3.


Читать дальше →

Архитектура WhatsApp, которую Facebook купил за $19 миллиардов

Reading time20 min
Views89K

В очередной раз хочу предложить свой перевод статьи, на этот раз автор Тодд Хофф, и его статья посвященна архитектуре WhatsApp на момент его покупки Facebook.


Ремарка: в начале статьи содержится рассуждение автора оригинала о том, зачем Facebook купил WhatsApp за баснословные 19 миллиардов. Если это вам не интересно — просто пролистайте, описание архитектуры будет ниже.


Рик Рид в его предстоящем мартовском докладе, озаглавленном "Миллиард с большой 'М': Следующий уровень масштабирования в WhatsApp" раскрывает сногсшибательную статистику WhatsApp:


Что имеет сотни узлов, тысячи ядер, сотни терабайт RAM и надеется обслужить миллиарды смартфонов, которые вскоре станут реальностью по всему миру? Основанная на Erlang и FreeBSD архитектура WhatsApp. Мы столкнулись со многими трудностями при удовлетворении постоянно растущего спроса на наш сервис обмена сообщениями, но мы продолжаем расширять нашу систему с точки зрения размера (> 8000 ядер) и с точки зрения скорости (>70М сообщений Erlang в секунду).
Читать дальше →

Как нанимают программистов. Интервью с Катериной Гавриловой из DigitalHR

Reading time5 min
Views42K

Рекрутеров редко спрашивают про то, как устроена их работа: обычно на собеседованиях кандидатам интереснее узнавать про проекты, куда они будут выходить. Оно и правильно. Но в одну пятницу CEO DigitalHR Катя Гаврилова в интервью с Hexlet отвечала на поток вопросов от разработчиков: почему эйчары не перезванивают, как становятся рекрутерами и как они вообще ищут кандидатов. На некоторые темы так и не хватило времени, поэтому постараемся дать ответ здесь:


ОБРАЗОВАНИЕ


Если у кандидата есть высшее образование, но непрофильное?


Разработчики — счастливые люди. Хотя бы потому, что у работодателей нет строгих требований к образованию кандидатов. Важны: опыт коммерческой разработки, владение определенным фреймворком, знание конкретной базы данных. Мы редко получаем запросы от компаний, чтобы кандидат заканчивал МГТУ, МИФИ или МАИ, но если запрос на высшее технического образование есть, эти вузы будут обязательно названы. Этот вопрос важен, если вы в будущем будете рассматривать релокацию, и вас будут приглашать работать заграницу. В этом случае важно, чтобы образование было профильным.


ПРЕДЫДУЩИЙ РАБОТОДАТЕЛЬ


Насколько важны рекомендации от других компаний?


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

Читать дальше →

Как мы впервые делали стажировку по iOS и Android-разработке в Redmadrobot

Reading time4 min
Views17K
В мае мы писали, что открываем набор на стажировку для iOS и Android-разработчиков. Опыт был для нас необычный, новый и интересный.


И вот что из этого получилось

Что может быть проще кнопки?

Reading time6 min
Views17K
Safe Trip — сервис поддержки путешественников
Кейс разработки мобильного приложения, которое сводит обращение в страховую до одного action point


Читать дальше →

Архитектурный дизайн мобильных приложений

Reading time9 min
Views98K
Признак плохого дизайна №1:
Наличие объекта-«бога» с именем, содержащим «Manager», «Processor» или «API»


Ведущий iOS-разработчик Redmadrobot Егор BepTep Тафланиди — о том, как добиться стройного архитектурного дизайна мобильного приложения, используя классические шаблоны проектирования и логическое разделение исходного кода на модули.

Читать дальше →

Архитектурный дизайн мобильных приложений: часть 2

Reading time7 min
Views48K
Чтобы направить всю энергию системы в необходимом направлении, нужно эту систему ограничить правилами.


Привет, Хабр! Продолжаем серию статей об архитектурном дизайне мобильных приложений. Под катом поговорим о проектировании слоёв UI. Добро пожаловать!
Читать дальше →

iOS 10: Notification Content Extension

Reading time5 min
Views19K

В этой статье речь пойдет о новой возможности в iOS 10 — Notification Content Extension. Это разновидность расширения, которая позволяет отображать пользователю собственный интерфейс при взаимодействии с уведомлением (remote или local). И отдельно коснемся того, что можно, а что нельзя делать в этом новом расширении — в том числе насколько оно гибко настраивается и конфигурируется.
Читать дальше →

AI монстров и поиск пути с помощью тепловых карт

Reading time5 min
Views25K
image Допустим, у нас есть плоская карта, состоящая из тайлов. На некоторых тайлах стоят монстры, а на некоторых других – всякие штуки, которые монстров интересуют: игрок, оружие, зелья, боеприпасы и прочее в том же духе. Задача состоит в том, чтобы объяснить монстрам, к каким штукам им идти и как. Путь должен быть близким к оптимальному, а время вычисления – настолько маленьким, насколько это возможно. Один из самых простых способов – использовать тепловую карту дистанций до определённой цели или целей.
Читать дальше →

Как легко работать с OneDrive из приложений UWP

Reading time5 min
Views12K

Продолжаю рассказывать об интересных/полезных вещах из мира XAML/C# приложений UWP. OneDrive API является частью Microsoft Graph. Для работы с OneDrive можно использовать OneDrive REST API, которое использует протокол HTTP и в частности его методы GET, POST, DELETE, PUT…

Кроме того, в соответствии с новыми принципами работы Microsoft, была создана библиотека обертка OneDrive SDK for CSharp, которая облегчает работу и использование сервиса из кода ваших приложений.
Читать дальше →

Перехват функций .NET/CLR

Reading time16 min
Views20K
Иногда при разработке программного обеспечения требуется встроить дополнительную функциональность в уже существующие приложения без модификации исходного текста приложений. Более того, зачастую сами приложения существуют только в скомпилированном бинарном виде без наличия исходного текста. Широко известным способом решения указанной задачи является т.н. “сплайсинг” – метод перехвата функций путем изменения кода целевой функции. Обычно при сплайсинге первые байты целевой функции перемещаются по другим адресам, а на их исходное место записывается команда безусловного перехода (jmp) на замещающую функцию. Поскольку сплайсинг требует низкоуровневых операций с памятью, то он осуществляется с использованием языка ассемблера и С/C++, что также накладывает определенные ограничения на реализацию замещающих функций – они обычно также реализованы на С/C++ (реже на ассемблере).

Метод сплайсинга для перехвата API-функций в Windows широко описан в Интернете и в различных литературных источниках. Простота указанного перехвата определяется следующими факторами:
  1. целевая функция является статической – она сразу присутствует в памяти загруженного модуля;
  2. адрес целевой функции легко определить (через таблицу экспорта модуля или функцию GetProcAddress).

Реализация замещающих функций на C/C++ при перехвате API-функций является оптимальным вариантом, поскольку Windows API реализовано, как известно, на языке C, и замещающие функции могут оперировать теми же понятиями, что и заменяемые.
Читать дальше →

Изучаем OpenGL ES2 для Android Урок №3. Освещение

Reading time20 min
Views17K
Перед тем как начать
Если вы новичок в OpenGL ES, рекомендую сначала изучить уроки №1 и №2, так как данный урок опирается на знания предыдущих уроков.
Основы кода, используемого в этой статье, взяты отсюда:
1. http://andmonahov.blogspot.com/2012/10/opengl-es-20.html
2. http://www.learnopengles.com/android-lesson-two-ambient-and-diffuse-lighting/
В результате мы получим такую картинку на экране устройства или эмулятора.

Читать дальше →

Небольшой скрипт для отслеживания цен avito из Google Spreadsheet

Reading time2 min
Views47K
Хочу поделиться с сообществом небольшим скриптом для загрузки цен с сайта объявлений AVITO в Google Spreadsheet. Вдруг кому-нибудь еще пригодится.

Логика такая — в цикле бежим по ячейкам таблицы с адресами и запрашиваем странички. Из полученных страниц получаем цену и подставляем в соседние ячейки. Запуск скрипта через пункт меню Avito -> Update Prices.

Page Sample
(наименнннование sic!)
Читать дальше →

Не важно, большие у тебя или маленькие. Главное, чтоб не маленькие. Фаршируем Material Design

Reading time4 min
Views38K
image

Как в условиях дизайн-тирании Гугла и лояльных ему разработчиков обходить правила во благо пользователей.

В HeadHunter дизайн, прежде чем уйти в инпрогресс, проходит множество инстанций. Для начала необходимо доказать команде разработки, что решения взяты не с потолка, а ты не «художник, я так вижу». И иногда пользоваться защитой Рексоны 24/7 приходится в самом неожиданном месте.
Читать дальше →

Сравнение онлайн-сервисов склонения имен

Reading time5 min
Views29K

Появилась потребность определять пол клиентов в базе и автоматически склонять ФИО для интернет-магазина. Специфика магазина – подарки и доставка цветов с поздравлениями.


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


image


Читать дальше →

Как отметить свои TODO, FIXME и ERROR в Xcode

Reading time3 min
Views17K

Этот пост является вольным переводом статьи How to highlight your TODOs, FIXMEs, & ERRORs in Xcode by Hector Matos


Это был самый обычный день: я писал код, устранял баги и вообще все было прекрасно. Именно тогда я написал блок кода, к которому нужно было вернуться позже. Это обычный случай, с которым вы тоже вероятно сталкивались: нужно было взаимодействовать с API который еще не был готов. Я знал общую структуру объекта, который получу по API, но я еще не мог протестировать работу с ним. Как и любой другой разработчик, я написал комментарий, который выглядит так:



В этот момент я хотел бы создать предупреждение в Xcode, такое же как мы привыкли делать в Objective-C с помощью директив компилятора:



Но увы, так не получилось и я загрустил.


Читать дальше →

Универсальный https c использованием ГОСТ сертификата

Reading time6 min
Views53K
При попытках организовать https-соединения для различных web-сервисов с использованием ГОСТ-шифрования всегда оставались вопросы с посетителями, браузеры которых не поддерживают ГОСТ-алгоритмы. Логичным казалось решение при установке https-соединения отдавать клиенту сертификат в зависимости от поддерживаемых его системой алгоритмов, но до недавнего времени практические реализации такого подхода мне не встречались.
Читать дальше →

Роскомнадзор заблокировал самого себя и некоторые сайты правительства (Comodo)

Reading time2 min
Views96K

(по факту он заблокировал не себя, а своего поставщика SSL-сертификатов)

Как недавно выяснилось, опираясь на решение Октябрьского районного суда г. Ставрополя 2013 года (!), Роскомнадзор внёс в реестр запрещённых сайтов ресурсы Comodo — компании-производителя программного обеспечения, в т.ч. бесплатного антивируса и брандмауэра и одного из крупнейших поставщиков сертификатов SSL в мире:

crl.comodoca.com/COMODORSACertificationAuthority.crl0q (в реестре)
crl.comodoca.com/COMODORSACodeSigningCA.crl0t (в реестре)
crt.comodoca.com/COMODORSAAddTrustCA.crt0 (в реестре)
crt.comodoca.com/COMODORSACodeSigningCA.crt0 (в реестре)
secure.comodo.net/CPS0C (в реестре)

Подробную инфу можно подчерпнуть из статьи Rublacklist.net
Роскомнадзор на основании решения суда 2013 года заблокировал ресурсы крупнейшего поставщика сертификатов SSL
Читать дальше →

Алгоритм быстрого нахождения похожих изображений

Reading time8 min
Views64K

Введение


Недавно наткнулся на статью, размещенную на Хабрахабре, посвященную сравнению изображений «Выглядит похоже». Как работает перцептивный хэш. Так как я сам достаточно долго занимался этой тематикой (являюсь автором программы AntiDupl), то мне захотелось поделиться здесь своим опытом по данному вопросу. В статье я приведу два варианта алгоритма сравнения похожих изображений — базовый и улучшенный. Все они были проверены автором на практике в рамках указанного выше проекта. Изложение мое будет вестись без строгих доказательств, сложных формул и специальной математической терминологии. Надеюсь, что читатели простят меня за это.

Базовый Алгоритм


Мера схожести изображений


При сравнении похожих изображений первым встает вопрос: что считать мерой схожести изображений? Очевидно, что это величина имеет значение обратное различию изображений друг от друга. Следственно нужно выбрать некую метрику, характеризующую различие изображений друг от друга. Тогда схожими изображениями будут считаться изображения, отличие между которыми меньше некоторого порога. Для изображений с одинаковыми габаритами, обычно такой мерой различия служит среднеквадратическое отклонение пикселей одного изображения от другого. Хотя конечно, нам ни что не мешает выбрать другую метрику, например усредненную абсолютную разность пикселей изображений друг от друга.
Читать дальше →

Information

Rating
Does not participate
Location
Ростов-на-Дону, Ростовская обл., Россия
Date of birth
Registered
Activity