Search
Write a publication
Pull to refresh
46
0
Владлен Грачев @gwer

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

Send message

Впечатления от Gemini PDA. Карманный dual-boot комбайн или бесполезная игрушка?

Reading time8 min
Views62K
image

Добрый день, уважаемые хабровчане.

Известны ли вам современные гаджеты, которые было бы гораздо привычнее встретить лет двадцать назад? Можете ли вы представить матричный принтер, выпущенный в 2018-м году, или, скажем, ЭЛТ-монитор? Тем не менее, первая мысль, возникающая при виде детища британской компании Planet Computers, именно такая – гость из прошлого. Gemini PDA относит себя к классу устройств называющихся Personal Digital Assistant (PDA), популярных в конце 90-х и полностью забытых в наши дни.

Сегодня трудно кого-то удивить новым гаджетом, однако, девайс с механической qwerty-клавиатурой, двумя USB-C портами, возможностью одновременно нести Android, Linux и Sailfish OS на борту и при этом умещающийся в кармане – по-настоящему оригинальное устройство, у которого не то чтобы были аналоги.

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

Микросервисный фронтенд — современный подход к разделению фронта

Reading time6 min
Views40K
too FAT SPA


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

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

Сегодня я расскажу вам, как мы делали микросервисный фронт в нашем SaaS-решении и с какими проблемами столкнулись.
Подробнее под катом

Математика CSS-шлюзов

Reading time18 min
Views55K

CSS-шлюзом (CSS-lock) называется методика из адаптивного веб-дизайна, позволяющая не перепрыгивать от одного значения к другому, а переходить плавно, в зависимости от текущего размера области просмотра (viewport). Идею и одну из реализаций предложил Тим Браун в статье Flexible typography with CSS locks. Когда я пытался разобраться с его реализацией и создать свои варианты, мне с трудом удавалось понять, что именно происходит. Я выполнил много вычислений и подумал, что полезно будет объяснить другим всю эту математику.

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

Познаём Нирвану – универсальную вычислительную платформу Яндекса

Reading time8 min
Views53K
Машинное обучение превратилось в модный термин, но при работе с большими объёмами данных оно уже много лет является жизненной необходимостью. Яндекс обрабатывает более 200 миллионов запросов ежедневно! Когда-то в интернете было так мало сайтов, что наилучшие из них помещались в каталог, а теперь за релевантность ссылок на страницы в выдаче отвечают сложные формулы, обучающиеся на новых и новых данных. Задача ложится на так называемые конвейеры, регулярные процессы, обучающие и контролирующие эти формулы.

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



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

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

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

DPI мобильных операторов: от бесплатного интернета до раскрытия номера и местоположения

Reading time11 min
Views187K
Системы глубокого анализа трафика (Deep Packet Inspection, DPI) — программно-аппаратные комплексы для классификации проходящего интернет-трафика по типу данных (веб-страница, документ, аудио, видео), протоколу (HTTP, BitTorrent, VoIP/SIP) и конкретным программам (Skype, WhatsApp), зачастую обладающие дополнительной функциональностью. Системы DPI распространены и используются по всему миру продвайдерами проводного и беспроводного доступа.

Мобильные операторы используют системы глубокого анализа трафика, прежде всего, для приоритизации разного контента в интернете (QoS), чтобы можно было одновременно скачивать большой файл и смотреть видео на YouTube, и чтобы один пользователь сотовой сети, активно использующий интернет, не создавал проблем другим пользователям. Операторы используют DPI примерно с начала двухтысячных, с приходом UMTS (3G), чтобы более-менее честно разделять беспроводной канал ограниченной пропускной способности.

Мобильные операторы используют и другие возможности DPI, например, ускорение TCP и HTTP-трафика (TCP PEP, Performance-enhancing Proxy), для ускорения интернета в мобильных сетях и идентификации пользователей веб-сайтами. Если попытаться зайти в личный кабинет оператора с телефона, на многих операторах он откроется сразу, без необходимости ввода логина и пароля. Или, что можно было встретить лет 5 назад, простой заход на подозрительный веб-сайт или клик по рекламному баннеру из Android-игры оборачивался автоматической подпиской на платную услугу, о чем можно было узнать из СМС-сообщения.
Читать дальше →

Жизнь и удивительные приключения в экзотических JavaScript окружениях

Reading time9 min
Views12K

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


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

Javascript-путешествие с шестью символами

Reading time5 min
Views38K


Javascript – это странный и прекрасный язык, который позволяет писать безумный, но все еще валидный код. Он пытается помочь нам, конвертируя одни штуки в другие в зависимости от того, как мы работаем с ними.


Если добавить строку к чему-то, то он допустит, что мы хотим получить текст, поэтому сконвертирует все в строку.


Если мы добавляем префикс "плюс" или "минус", то он допустит, что нам нужно числовое представление и сконвертирует строку в число, если сможет.


Если мы отрицаем что-то, то он сконвертирует это в булево значение.


Мы можем использовать эти особенности языка и создать немного магии со всего-лишь шестью символами: [,],(,),! и +. Если вы читаете это на десктопе, то можете открыть консоль в вашем браузере (developer tools, например) и запускать код. Просто копируйте любой код из примеров ниже в консоль, и он должен исполнится и вернуть true.


Давайте начнем с простого. Вот главные правила:


  1. Префикс ! конвертирует в Boolean
  2. Префикс + конвертирует в Number
  3. Добавление [] конвертирует String

Вот они в действии:


![] === false
+[] === 0
[]+[] === ""
Читать дальше →

0b1001 путей решения задачи перевода чисел в римскую запись

Reading time5 min
Views64K
image

Привет друзья. Вот вам простенькая задачка. Как бы вы перевели арабские числа в римские используя Python? Правда с одним условием — числа не могут быть больше чем 4000.

Я думаю это должно быть просто, но позвольте я вам покажу вам серию интересных решений и не тривиальных подходов:
Читать дальше →

4 вида утечек памяти в JavaScript и как с ними бороться

Reading time16 min
Views135K

В этой статье мы рассмотрим распространённые виды утечек памяти в клиентском JavaScript. Также мы узнаем, как их обнаружить с помощью Chrome Development Tools.


timeline в Chrome Dev Tools

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

Horizon — realtime JavaScript бэкэнд

Reading time4 min
Views18K


Что такое Horizon?


Horizon — это продукт содержащий в себе NoSQL базу данных RethinkDB, консольную утилиту horizon (hz), авторизацию и ACL, клиентскую JS библиотеку horizon.js для работы с БД на клиенте.

Другими словами: Horizon — это тонкий бэкэнд: БД и правила доступа пользователей к базе на уровне запросов.
Читать дальше →

Почему, ну почему, эти #?@! придурки используют vi?

Reading time12 min
Views121K

Предлагаю читателям "Хабрахабра" перевод статьи "Why, oh WHY, do those #?@! nutheads use vi?" за авторством John Beltran de Heredia.


Да, даже если вы не можете в это поверить, у редактора vi, увидевшего свет более тридцати лет назад (и его более молодого, всего-то пятнадцатилетнего лучшего клона & большого улучшения — vim) очень много фанатов.


Нет, они не динозавры, которые не хотят идти в ногу со временем — сообщество пользователей vi продолжает увеличиваться: я, который начал только два года назад (после десяти лет работы программистом). Мои друзья переходят на vi сейчас. Черт, большинство пользователей vi даже еще не были рождены, когда он был написан!


Да, есть конкретные причины, почему модель редактирования vi/vim превосходит любую другую. Вам не надо быть экспертом в Unix, чтобы использовать vi — он доступен бесплатно практически для любой существующей платформы; для большинства IDE существуют плагины, позволяющие использовать его возможности. Давайте же развеем некоторые заблуждения и рассмотрим пару примеров, демонстрирующих его превосходство.

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

Управление Docker проектом со множеством git репозиториев

Reading time4 min
Views38K

Команда, в которой я работаю, использует микросервисную организацию в проектах.
У каждого микросервиса свой репозиторий. Каждый микросервис это docker контейнер.
Для среды разработки, чтобы запустить все вместе, мы используем docker-compose.


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


Мы столкнулись с двумя проблемами:


  1. При первоначальном разворачивании среды разработки, приходится обьяснять программисту, либо писать скрипт инициализации, который склонирует и создаст необходимую иерархию папок из нескольких репозиториев.
  2. docker-compose не может собрать приложение, а потом упаковать в идижд. он умеет только запускать docker build.

Для решения этих проблем мы сделали управляющий скрипт docker-project, который оказался очень удобным в работе.
Чем мы и хотим поделиться с open-source сообществом.

Далее

Визуализация с Google Chart Tools API

Reading time4 min
Views54K
Google Chart Tools API – это многофункциональный набор инструментов для визуализации данных. С помощью него можно относительно легко строить графики и диаграммы на сайте.

Функционал Google Chart Tools API включает в себя:

  • Динамические пиктограммы;
  • Карты;
  • Циферблаты и дисплеи;
  • Формулы;
  • QR-коды;
  • Возможность создавать свои инструменты визуализации и использовать сторонние.

Карта


image
Сделаем визуализацию данных с помощью карты, раскрашенной в соответствии с внесенными данными. Для начала подключаем файлы, loader.js обязателен.
Читать дальше →

Профилирование JS-кода из функций. Опыт Яндекса

Reading time11 min
Views22K

Последние полгода всем знакомый интерфейс поисковой выдачи Яндекса (Search Engine Result Page — SERP) переезжает на новую архитектуру, с которой разработка неспецифичных фич становится очень быстрой, а разработка специфичных фич — прогнозируемой. Для большой распределенной команды из 40 фронтендеров это большой успех. Когда все было почти готово и новый код начали обкатывать в production экспериментах, оказалось, что серверная JS-шаблонизация в новой архитектуре ощутимо замедлилась.



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


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

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

Пишем свой Lisp на JavaScript

Reading time6 min
Views22K

image


Для начала следует задать простой вопрос: для чего?


Писать свой язык программирования — практически всегда плохая идея. Так зачем нам еще один лисп? Тем более, что уже есть ClojureScript, который на данный момент является production ready и имеет кучу приятных фич. Конкурировать даже с ClojureScript — безумие, — не гворя уже о TypeScript, CoffeeScript, etc. Но язык нам нужен и не для этого!


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

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

Выбор первого фотоаппарата — без рекламы, брендов, картинок и почти без технических деталей

Reading time11 min
Views39K


Традиционно, в конце статьи сделан финальный вывод, но, в отрыве от контекста, он не даст полезной информации, может даже запутать. Так что, если важен результат, то переходить сразу к итогам не советую.

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

Для фотографов существует масса курсов и школ, но для фотогиков ничего подобного нет. Было бы странно обучать людей умению собирать один объектив из трех или сравнивать параметры матриц, поэтому все фотогики — самоучки, занимаются самообразованием с помощью форумов и соцсетей. Сценарии развития обычные: неофит задается вопросом «какой фотоаппарат лучше?», озвучивает его на форуме-вконтактике, внимает тем, кого он считает корифеями, потом начинает давать советы другим неофитам, тут ему кажется, что он уже все знает (привет, холивары и статьи в бложики), позже он догадывается, что не все так просто, и последние три фазы повторяются циклично. Крайняя точка выхода из цикла — ничего нового узнать в сообществах он уже не может, а его советы не могут быть поняты большинством других участников, так как содержат в себе ответы с более высокого уровня понимания. И в сообществе становится меньше на одного опытного фотогика.
В итоге, шансов увидеть ответ от гуру на вопрос «какой фотоаппарат лучше?» — крайне мало, вы будете получать ответы от тех, кто еще не знает, сколько всего он не знает. Именно эта категория — самые активные, внушающие доверие и способные производить тонны однотипных материалов по теме. Не буду тыкать пальцем, но одна из подобных статей и побудила меня к собственному опусу о выборе камеры, и даже больше — о выборе фотосистемы для абсолютного новичка в вопросе фототехники.
Читать дальше →

Aido — домашний робот нового поколения по цене смартфона

Reading time2 min
Views15K


Еще до запуска проекта на Indiegogo калифорнийская компания Ingen Dynamics Inc. успела собрать номинации на престижных технологических выставках. Ее прототип интерактивного робота Aido стал героем и на “T3 Gamechanger”, и на “Best Inventions’16”, и на “Product of the Year’16”. Появившись на Indiegogo, проект всего за 3 часа собрал почти в два раза больше средств, чем требовалось. Что за робот, что он умеет и как устроен, давайте разбираться.
Подробности

Понимание сборки мусора и отлов утечек памяти в Node.js

Reading time7 min
Views35K
Плохие отзывы в прессе о Node.js часто относятся к проблемам с производительностью. Это не значит, что с Node.js больше проблем, чем с другими технологиями. Просто пользователь должен иметь в виду некоторые особенности её работы. Хотя у технологии пологая кривая обучения, обеспечивающие её работу механизмы довольно сложные. Необходимо понять их, чтобы предотвратить появление ошибок производительности. И если что-то пойдет не так, необходимо знать, как быстро привести всё в порядок. В этой статье Даниэль Хан рассказывает о том, как Node.js управляет памятью и как отследить связанные с памятью проблемы.


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

История компании Meizu

Reading time6 min
Views11K
История компании начинается в 1998 года с человека по имени Хуан Сючжан, очень увлекающегося новыми гаджетами и электроникой. Он покупал в интернете новые девайсы и внедрял дома новые технологии. После чего делился в интернете, под псевдонимом Джек Вонг, впечатлениями и высказывал свои новые идеи и мнения. И вот однажды создатель будущей успешной компании решил послушать музыку, но ни качество звука, ни оформление дизайна устройства его не устроило, и Хуан Сючжан решил создать свой MP3-плеер. Это и можно считать моментом основания компании.

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

Бумажки: простая игра на сегодняшний вечер

Reading time3 min
Views68K
Привет! Меня уже 3-4 человека спросили, во что поиграть, не покупая дорогую игру. Прямо с компанией, прямо на новый год. Ниже я экономлю вам 990 рублей.

Итак, всё просто. Вам понадобится подключение к dzen.yandex.ru или lurkmore.to/Служебная:Random. Или любой другой источник случайных и при этом достаточно понятных слов. Теперь надо сделать 36 листочков с этими словами и положить их в непрозрачный пакет, а там перемешать. И ещё нужен таймер на 30 секунд, например, в телефоне.

Теперь разбиваемся на две команды. В каждой – не менее двух человек.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity