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

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

Send message

Дихотомия UI и UX: UI-дизайнер ≠ UX-дизайнер

Reading time5 min
Views17K
Кому велено чирикать — не мурлыкайте!
Кому велено мурлыкать — не чирикайте!

(с) Путаница, Корней Чуковский


На сайтах о поиске работы 99% вакансий с заголовком “UI/UX Designer” содержат тексты про интерфейсы, сценарии использования и дизайн. Кто был первоисточником этого сложно сказать, но UI и UX имеют довольно мало общего.

Star Wars

Хотелось бы дать в руки коллегам хорошую дубинку аргументацию для расширения их возможностей, ну и вообще, окончательно разобраться в отличиях UI и UX…
Читать дальше →

Javascript-анимация элементов как в jQuery, только своими руками

Reading time15 min
Views22K
Часто при поиске ответа на вопрос, как сделать ту или иную до этого незнакомую вещь, программист знакомится с опытом коллег. И довольно часто у нас, во фронтенд-разработке, можно увидеть советы следующего содержания: мол, просто подключи ту или иную библиотеку, просто поставь тот или иной плагин, просто перепиши проект на Ангуляре (просто_на_Ангуляре ))) ), и не надо забивать себе голову посторонними вещами.

Однако, иногда стоят действительно творческие задачи, и обычный копипаст не спасает демократию (честно говоря, он почти никогда не спасает). Об одном из таких случаев я и хочу рассказать уважаемой публике.
Читать дальше →

GitHub для пользователей Windows

Reading time6 min
Views84K

Если ваш проект хранится только у вас на диске, то с поломкой диска вас ожидают неприятности. Даже регулярный бэкап не всегда сможет вас спасти.

Некоторые разработчики могут наворотить в проекте столько всего, что сами в шоке. А вспомнить, что и где делалось, затруднительно. Та еще неприятность.

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

Если вы вдруг не знакомы, то я хочу немного познакомить вас с системой управления версиями по имени Git. Под катом вас ожидает описание того, как использовать GitHub вместе с Visual Studio.
Читать дальше →

Как мы делали бота для банка «Открытие»

Reading time5 min
Views13K
Недавно мы с банком «Открытие» запустили банковского бота с платежными функциями для физических лиц в Facebook Messenger. Сейчас клиентам «Открытия» доступна оплата мобильной связи, с помощью бота можно найти ближайший банкомат или офис банка, узнать курс валют, выяснить, как заказать карту, позвонить в банк и записаться на выплату от Агентства по страхованию вкладов. В этой статье мы расскажем о работе над проектом.

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

Разгоняем производительность iOS-приложений

Reading time10 min
Views12K
image
Тормоз для броненосца USS Indiana BB-1, 1910 год. Эта штуковина должна тормозить корабль водоизмещением 10453 тонны.

Оригинал: iOS App Performance: Instruments & beyond
Автор: Igor M

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

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

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

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

Реализация интерфейса с выдвижной панелью в iOS приложении

Reading time6 min
Views14K
В сегодняшней статье мы расскажем о приемах и инструментах, которыми пользовались разработчики из Everyday Tools при работе над интерфейсом с выдвижной панелью, или, говоря проще, «шторкой». Шторки — оптимальное решение для приложений, в которых пользователь взаимодействует преимущественно с главным экраном, но периодически нуждается в быстром доступе к дополнительной информации.


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

Поддержка https совсем без настроек

Reading time2 min
Views24K
Написал программу для автоматического выписывания ssl-сертификатов налету (при первом запросе к домену). Для начала работы программы её достаточно просто запустить, настраивать не надо совсем (даже домены для сертификатов указывать не надо).

Подробности внутри.
Читать дальше →

Коротко и просто о сложном – маршрутизация в «8-800»

Reading time5 min
Views10K
image

В предыдущем посте мы рассмотрели базовые принципы работы сервиса «8-800». Сегодня же поговорим о маршрутизации. Что такое «интеллектуальная» маршрутизация и как она работает в сервисе «8-800» предлагаю рассмотреть на реальных примерах из моей практики в МегаФон.
Подробности

Решение пасхалки из анонса CTF от Bi.Zone

Reading time2 min
Views5K

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

Если посмотреть на анонс, например, на сайте ZN2016, то можно заметить некоторую странность в форматировании текста.
Читать дальше →

Кружевные орнаменты на CSS

Reading time4 min
Views17K


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


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

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

IoT в вендинговом бизнесе: интеллектуальный торговый автомат

Reading time21 min
Views17K
Сегодня расскажем о том, как был создан интеллектуальный торговый автомат. Сначала, с использованием Intel IoT Developer Kit и Grove IoT Commercial Developer Kit, мы построили прототип, который, после успешных испытаний, преобразовали в решение, подходящее для практического использования. В частности, в готовом автомате использованы шлюз Intel для интернета вещей, датчики промышленного класса, Intel IoT Gateway Software Suite, Intel System Studio и облачные службы Microsoft Azure. Получившийся в итоге программно-аппаратный комплекс способен отслеживать наличие товара в автомате, вести журнал продаж, напоминать о необходимости обслуживания автомата. Шлюз собирает сведения, поступающие от датчика температуры, от шаговых двигателей, приводящих в движение спирали для выдачи товаров, и от приложения, ответственного за продажу. Данные можно анализировать на шлюзе и передавать в облако для накопления и дальнейшего исследования.


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

Первые шаги в оптимизации и полировке игры на Unity3d

Reading time8 min
Views46K
imageПосле того как я закончил мой первый проект, пришла мысль о портировании его на мобильные устройства или хотя бы запуске на встроенном GPU. Во всех гайдах по оптимизации, в одном из первых советов вам сообщат, что не стоит переживать о производительности заранее, начинайте оптимизировать, после того как все закончите, и вы постепенно приведете все в порядок. Так и я, выпустив изначально игру на десктоп, решил, что никогда не будет поздно оптимизировать ее под мобильные устройства. К сожалению, мне не удалось в полной мере достичь поставленной цели, потому как, похоже, что мобильные игры следует с самого начала разрабатывать с прицелом на слабое железо. На данный момент, для дальнейшей оптимизации под мобильные платформы я вижу только необходимость серьезно переделать геймплей и дизайн игрового мира. Однако и в текущем варианте получен ценный опыт оптимизации под Unity3d и результирующий прирост производительности более чем в 300% на интегрированном GPU.
Читать дальше →

Хакаем CAN шину авто для голосового управления

Reading time8 min
Views123K


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

Мой автомобиль Skoda Octavia 2011 г. в. не предлагает возможностей управления с телефона, поэтому я решил исправить этот недостаток, а заодно и добавить функцию голосового управления. В качестве шлюза между CAN шиной и телефоном я использую Raspberry Pi с шилдом CAN BUS и WiFi роутер TP-Link. Протокол общения агрегатов авто закрытый, и на все мои письма предоставить документацию протокола Volkswagen отвечал отказом. Поэтому единственный способ узнать, как общаются устройства в авто и научиться ими управлять является реверс-инжиниринг протокола CAN шины VW.

Я действовал поэтапно:

  1. Разработка CAN шилда для Raspberry Pi
  2. Установка ПО для работы с CAN шиной
  3. Подключение к CAN шине авто
  4. Разработка сниффера и изучение протокола CAN шины
  5. Разработка приложения для телефона
  6. Голосовое управление с помощью Homekit и Siri

В конце видео голосового управления стеклоподъемником.
Читать дальше →

Уязвимость Account Manager в Android, о которой необходимо знать

Reading time3 min
Views20K
Приветствую тебя, дорогой читатель! Многие разработчики используют возможности Account Manager(AM) в своих приложениях. И правильно делают, ведь этот инструмент позволяет упростить некоторые вещи. Он позволяет хранить пароль, токен, да и в принципе любые строковые данные юзера. Так же позволяет автоматически обновлять токен, если тот протухает, и много других полезных штук. Но у этого удобства есть и другая сторона — безопасность. Из-за этого собственно я и написал данный текст.

Раз AM позволяет хранить такие важные данные как пароль и токен, то наверно он просто обязан это делать безопасно, ведь если они утекут, то ничего хорошего не получится. Вы можете сказать, что на рутованых андроид девайсах ничто не хранится безопасно, и я тут соглашусь. Однако если бы все ограничивалось только рутом, то не читать бы вам сие «произведение». Чтобы рассказать, ради чего мы тут собрались, я начну с самого начала.

TextBlock с подсветкой текста (WPF)

Reading time13 min
Views13K
Привет Хабр! Я создал контрол на основе TextBlock с возможностью подсветки текста. Для начала приведу пример его использования, затем опишу, как он создавался.

Пример использования контрола
<local:HighlightTextBlock TextWrapping="Wrap">
    <local:HighlightTextBlock.HighlightRules>
        <local:HighlightRule HightlightedText="{Binding Filter, Source={x:Reference thisWindow}}">
            <local:HighlightRule.Highlights>
                <local:HighlightBackgroung Brush="Yellow"/>
                <local:HighlightForeground Brush="Black"/>
            </local:HighlightRule.Highlights>
        </local:HighlightRule>
    </local:HighlightTextBlock.HighlightRules>
    <Run FontWeight="Bold">Property:</Run>
    <Run Text="{Binding Property}"/>
</local:HighlightTextBlock>


Начало разработки


Потребовалось мне подсветить текст в TextBlock, введенный в строку поиска. На первый взгляд задача показалась простой. Пришло в голову разделить текст на 3 элемента Run, которые бы передавали в конвертер весь текст, строку поиска и свое положение (1/2/3). Средний Run имеет Backgroung.

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

Была еще мысль формировать Xaml «на лету», парсить его при помощи XamlReader и кидать в TextBlock. Но эта мысль тоже сразу отвалилась, потому что попахивает.

Следующей (и окончательной) идеей стало создать систему правил подсветки и прикрутить ее к TextBlock. Тут 2 варианта: свой контрол с блэкджеком и девочками на основе TextBlock или AttachedProperty. После недолгих раздумий, я решил, что все таки лучше создать отдельный контрол, потому что функционал подсветки может наложить некоторые ограничения на функциональность самого TextBlock, а разруливать это проще, если от него унаследоваться.
Читать дальше →

Программирование&Музыка: Частотный фильтр Баттервота. Часть 3

Reading time12 min
Views29K

Всем привет! Вы читаете третью часть статьи про создание VST-синтезатора на С#. В предыдущих частях был рассмотрен SDK и библиотеки для создания VST плагинов, рассмотрено программирование осциллятора и ADSR-огибающей для управления амплитудой сигнала.


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


Будет рассмотрен исходный код и применение эквалайзера из библиотеки NAudio (библиотека для работы со звуком под .NET).


Внимание — будет много матана — будем рассчитывать формулы для коэффициентов фильтра.


Исходный код написанного мною синтезатора доступен на GitHub'е.



Скриншот VST плагина-эквалайзера Fab Filter Pro Q


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

Основы Auto Layout — Концепция, строение, применение

Reading time4 min
Views74K
Auto Layout занимается динамическим вычислением позиции и размера всех view в view иерархии, на основе constraints — правил заданных для того или иного view. Самый большой и очевидный плюс для разработчика в использовании Auto Layout в том, что исчезает необходимость в подгонке размеров приложения под определенные устройства — Auto Layout делает это за вас, динамически изменяя интерфейс в зависимости от внешних или внутренних изменений.

Примером внешних изменений может быть: Изменение размера окна в macOS, изменение ориентации экрана, различные размеры экранов.

Пример внутренних изменений: Изменение контента в окне, изменения в зависимости от языка и т.д.

Создать свой интерфейс можно 3-мя способами: программно, на основе маски, которая автоматически подстраивается под изменения или использовать Auto Layout.

Отличие Auto Layout от других способов в том, что вам больше не нужно писать код, который изменяет интерфейс в зависимости от размера окна и других элементов, вместо этого Auto Layout самостоятельно вычисляет расположение элемента интерфейса в приложении и изменяет его относительно окружения.
Читать дальше →

«Автофон» — реальный способ найти угнанный автомобиль

Reading time5 min
Views26K
Автомобилей сейчас становится все больше, и многие из них представляют особенный интерес для угонщиков. Несмотря на то, что системы защита от угона совершенствуются, команды злоумышленников тоже не стоят на месте, и разрабатывают все новые и новые способы обхода защиты.



Самый простой способ угона состоит из нескольких этапов. Первый — включение глушилки (или генератора шума). Благодаря такому устройству дезактивируется встроенная сигнализация определенного типа (их много, и далеко не все ликвидируются таким образом, есть и вариант с алгоритмическим или замещающим кодграббером). Потом в личинку двери и замка вставляется специальная твердосплавная болванка, ключ с головкой, который затем проворачивается.
Читать дальше →

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

Reading time3 min
Views11K


Сверхбыстрое управление намагниченностью материалов — краеугольный камень современной фотоники. В будущем такие технологии могут найти применение в оптических компьютерах и терагерцевой электронике. В последние годы сделан целый ряд успешных экспериментов в этой области. Среди них изменение спина в антиферромагнетиках под воздействием света за несколько пикосекунд, контроль за колебаниями магнитных моментов антиферромагнетика парой фемтосекундных лазеров, фазовый переход от ферромагнетика к антиферромагнетику под воздействием света в течение фемтосекунд и др. Несмотря на замечательный прогресс в этой области, в экспериментах бóльшая часть световой энергии не задействуется непосредственно во взаимодействии света с намагниченным материалом. Это означает, что на практике потребуются значительные усилия на отвод энергии.
Читать дальше →

Новые возможности PowerShell в Windows Server 2016

Reading time5 min
Views13K
Доброго времени суток %HabraUser%! Не так давно мне посчастливилось стать обладателем VDS с предустановленным Windows Server 2016 для ознакомления с данной операционной системой и ее новыми возможностями. В связи с тем, что последние несколько лет я являюсь поклонником администрирования с использованием PowerShell, в первую очередь меня заинтересовал именно он, так как применяю его в своей работе ежедневно для автоматизации рутинных задач. В корпоративной среде на сегодняшний день чаще всего последняя используемая версия операционных систем Windows 8.1 и Windows Server 2012 R2, соответственно я не обращал внимания, на изменения, которые принесла мне Windows 10 на домашнем компьютере, и как оказалось зря. Я пропустил мимо себя обновленный инструмент, который стал гораздо лучше, удобнее и быстрее по сравнению с предыдущими версиями, об этих основных изменениях и хотелось бы поговорить. Добро пожаловать под кат.
Читать дальше →

Information

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