Search
Write a publication
Pull to refresh
17
0

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

Send message

О том как я написал блокировщик рекламы и трекеров для смартфонов Samsung на Android. Adhell

Reading time6 min
Views28K
Представляю сообществу проект, которым занимался в последнее время: блокировщик рекламы и трекеров для смартфонов Samsung на Android с открытым исходным кодом.

Реклама блокируется на уровне устройства, то есть не только в стандартном браузере, но и во всех остальных приложениях (например, в Chrome и YouTube).

Предыстория


Я пользуюсь блокировщиками на всех своих компьютерах, но все чаще захожу в интернет со смартфона.

Мне нравится мобильный Chrome больше чем Mozilla или Opera, но в Chrome нет поддержки расширений, а присутствие рекламы на смартфоне критичнее чем на десктопе, так как часто ограничен трафик и дисплей в несколько раз меньше.

Плюс мне нравится иногда смотреть видео на YouTube, но реклама, которую нельзя пропустить здорово мешает процессу.

Исходя из таких предпосылок я занялся поиском решения блокировки рекламы на смартфоне.


Пример работы приложения на Samsung Galaxy Tab 4 10.1. habr.ru
Читать дальше →

Выборы-2016. Часть 2 — удивительное рядом и оно разрешено

Reading time4 min
Views27K

В первой части статьи о выборах 2016 года шла речь о результатах в 225 избирательных округах. В этот раз рассмотрим данные о результатах голосования по участковым избирательным комиссиям (УИК), которых насчитывалось чуть менее 100 тысяч. Этот уровень детализации позволяет увидеть неожиданные явления и удивительные закономерности в результатах голосования.


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

Браузеры наши меньшие, или Нам нужно серьёзно поговорить

Reading time15 min
Views38K
Вадим Макеев

Вадим Макеев (Opera Software)


Меня зовут Вадим Макеев (pepelsbey). Я работаю в компании «Opera Software». Мы выпускаем браузеры, в частности, десктопные, мобильные и т.д.

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

Разговор будет не только технологический, но еще и серьезный. Я попытаюсь рассказать про серьезные вещи, чтобы вы думали о своей профессии ни «херак-херак – и в продакш», а в смысле «что и зачем» вы делаете. Это моя основная мысль.

Я, как пользователь Интернет (регулярно, много, года с 2001-го только этим и занимаюсь) испытываю проблемы, когда пользуюсь вебом. Главные проблемы состоят в том, что люди, которые разрабатывают веб (т.е. мы с вами и я лично), в некоторых ситуациях закрывают информацию от пользователя, не дают людям нормально ею пользоваться, блокируют доступ… Каждый день так или иначе это делают. Решают ли они не поддерживать «ie 6», решают ли сделать клиентский рендеринг или еще что-нибудь такое – то, что хорошо для одних, но плохо для других, и решают вместо сайта запустить нативное приложение… Это все приводит к некоторым проблемам.

Программируем «Мегапроцессор»

Reading time8 min
Views17K
На Geektimes летом была статья про Megaprocessor — процессор из дискретных транзисторов и светодиодов, который весит полтонны и занимает всю гостиную в обычном таунхаусе под Кембриджем. Я решил воспользоваться своей географической близостью к этому мегапроекту, и запрограммировать для него что-нибудь презентабельное — например, спортировать для Megaprocessor мою предыдущую хабрапрограммку «Digital Rain».

Система команд Megaprocessor описана на сайте разработчика.

Большинство команд состоят из одного байта, за которым может следовать непосредственный операнд (один или два байта). Регистров общего назначения всего четыре (R0-R3), при этом они не равноправны: например, для команд доступа к памяти адрес должен быть либо в R2, либо в R3; а операнд — в одном из двух оставшихся регистров.

Программистам, привыкшим к системе команд x86 или ARM, набор команд Megaprocessor покажется крайне бедным: нет ни косвенной адресации «база+смещение», ни непосредственных операндов у арифметических команд (за исключением addq ±1, addq ±2). Зато есть пара неожиданных возможностей: отдельная команда sqrt, и режим .wt для команд сдвига, который заменяет результат суммой выдвинутых битов. Таким образом можно, например, парой команд ld.b r1, #15; lsr.wt r0, r1 вычислить количество единичных битов в r0 (вопрос, столь любимый собеседователями на работу!). Мнемоника ld для команды, загружающей в регистр непосредственное значение (вместо привычной по x86 или ARM мнемоники mov) указывает на способ её выполнения: фактически, с точки зрения процессора, выполняется ld.b r1, (pc++).

Итак, приступим.

Плохой код убивает

Reading time10 min
Views75K
Плохой программист Джон сделал ошибку в коде, из-за которой каждый пользователь программы был вынужден потратить в среднем 15 минут времени на поиск обхода возникшей проблемы. Пользователей было 10 миллионов. Всего впустую потрачено 150 миллионов минут = 2.5 миллиона часов. Если человек спит 8 часов в сутки, то на сознательную деятельность у него остается 16 часов. То есть Джон уничтожил 156250 человеко-дней ≈ 427.8 человеко-лет. Средний мужчина живет 64 года, значит Джон убил примерно 6 целых 68 сотых человека.

Как тебе спится, Джон — серийный программист?

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

Правила хорошего кода


Простота-понятность-компактность, производительность, отсутствие дублирования.

Если вы пишете что-то сложнее «hello world”, оно будет размещаться не в одном, а в нескольких файлах. Как правило, файлов бывает больше десятка. Всем им даются непонятные короткие имена (программисты любят сокращения) Человек, который попытается разобраться в вашем коде, будет плеваться, шипеть и проклинать вас. Ваша карма будет испорчена и следующие несколько жизней вы будете собакой в Корее.
Читать дальше →

Как защита от Microsoft удалила код на серверах. Байка о Defender

Reading time3 min
Views25K
Сегодня на календаре 16 Августа 2016. Windows Defender удалил рабочий код с хоста. Как это было:

Обсуждая с коллегой новости о череде проблем у Microsoft, которые пестрят в новостях. Там зависло, там пропало, там еще что-то — видимо накаркал себе проблем. Работая на виртуальном сервере с кодом под IIS вдруг получаю предупреждение о том что Windows Defender обнаружил Worm внутри многих ASP файлов на хосте и настоятельно рекомендует удалить.

Вся прелесть в том что вариантов не предлагает Defender. Файлы уже пустые и залоченные. До вчера этой проблемы не существовало. Любая попытка восстановить с репозитория файлы — вызывает возмущение у Defender, с последующим удалением файлов.

Проверка настроек показала что Windows Defender обновился 8/15/16 до версии 1.225.3982.0. Сканер настойчиво видел Worm:VBS/VBSWGbased.gen в ASP (VBScript ) файлах. Проверка одного из файлов на virustotal.com показала теже результаты. Из 53х тестовых проверок — только Microsoft Defender находит Worm:VBS/VBSWGbased.gen.
Читать дальше →

Библиотека Python 3 для подключения к ЕСИА — esia-connector

Reading time5 min
Views16K
Все началось с того, что Минкомсвязи разрешило использовать портал госуслуг для идентификации и аутентификации пользователей на негосударственных веб-узлах. Это реализуется с помощью службы ЕСИА (Единая Система Идентификации и Аутентификации — esia.gosuslugi.ru). Заказчик нашего проекта входил в число первых 5 участников, которые подали заявки на интеграцию с ЕСИА, что выразилось для нас задачей эту интеграцию поддержать.

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

Итак, представляем вам проект esia-connector, написан на Python 3, использует утилиту openssl, проверялся в работе только в Debian-based системах.

Пакет: pypi.python.org/pypi/esia-connector
Проект: github.com/eigenmethod/esia-connector
Подробнее про использование, недостатки, планы.

Сколько нужно нейронов, чтобы распознать сводку моста?

Reading time4 min
Views39K

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


После второго "опоздания" на мосты, я задумался об источниках информации о досрочной сводке мостов. Одним из пришедших в голову вариантов была информация с публичных веб-камер. Вооружившись этими данными и остаточными знаниями со специализации по ML от МФТИ и Яндекса, я решил попробовать решить задачу "в лоб".


0, Дворцовый
Картинки и кишочки под катом

Распознавание некоторых современных CAPTCHA

Reading time15 min
Views79K
Именно так называлась работа, представленная мной на Балтийском научно-инженерном конкурсе, и принёсшая мне очаровательную бумажку с римской единичкой, а также новенький ноутбук.

Работа заключалась в распознавании CAPTCHA, используемых крупными операторами сотовой связи в формах отправки SMS, и демонстрации недостаточной эффективности применяемого ими подхода. Чтобы не задевать ничью гордость, будем называть этих операторов иносказательно: красный, жёлтый, зелёный и синий.

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

Гильоши

Reading time11 min
Views41K
Гильоши — это характерные узоры на деньгах и ценных бумагах. Они красивы, и сочетают в себе одновременно заметную сложность с внутренней простотой — когда кажется, что ты вот-вот уловишь принцип, но он каждый раз от тебя ускользает. Возможно, именно это и есть определение красоты.
Читать дальше →

Что такое AXON

Reading time6 min
Views15K

AXON — это нотация для сериализованного представления объектов, документов и данных в текстовой форме. Она объединяет в себе простоту JSON, расширяемость XML и удобочитаемость YAML.


Есть проект pyaxon на python, с которым можно "поиграться". Впрочем, он создавался таким образом, чтобы не сильно уступать по скорости с модулем json. Поэтому он может сгодиться и для реальных дел.


Зачем AXON?


AXON появился как попытка справиться с недостатками или неудобствами JSON и XML, но сохранить при этом их достоинства и возможности, дополнительно добавив удобочитаемость, присущую YAML.


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

Организация доступа в сеть WI-FI московского метрополитена с точки зрения безопасности

Reading time3 min
Views32K

Введение


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

Обновление MS16-072 ломает Group Policy. Что с этим делать?

Reading time8 min
Views62K
Ошибка: Filtering: Not Applied (Unknown Reason)

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

Опыт полезной модификации UEFI: возвращаем Thinkpad W520 законную поддержку быстрой памяти

Reading time5 min
Views27K
Для начала предыстория:

Некоторое время назад я приобрёл на Ebay б/у ноутбук Lenovo Thinkpad W520. Как известно, W-серия — это очень мощные ноутбуки, железки в которых дадут фору многим более современным машинам. Конечно же, я начал его обустраивать под себя, и, в частности, решил проапгрейдить имеющуюся память всем, что было в наличии, а в наличии было немало: 2 свободные планки DDR3-1600 из старого ноута — 4 и 8 гигабайт. Посмотрев на то, что было установлено продавцом, я обнаружил, что из 3 установленных планок 2 — DDR3-1600, а одна — 1333. Учитывая, что первые две были по 8 гигабайт, а последняя — 2 гигабайта, от неё я и решил избавиться. Рассчитывая получить после апгрейда 8+8+8+4=28 гигабайт DDR3-1600 в рабочем ноуте, я залил всё слюной и всё это быстренько подключил. И получил 28 гигабайт… DDR3-1333. «Что за...», подумал я и полез в гугл.

После непродолжительных поисков я обнаружил, что как официально, так и неофициально W520 поддерживает только DDR3-1333, а владельцы более быстрой памяти зря тратили на неё деньги. Мне стало немного обидно за всех таких владельцев, и я решил попробовать избавиться от этой несправедливости, тем более, что контроллер памяти, нынче, как известно, в процессоре, и установленный в моей модели Intel Core i7 2720QM официально поддерживает DDR3-1600.
А теперь немного интересных подробностей

Прогресс автомобильных видеорегистраторов и сравнение их с action-камерами

Reading time16 min
Views64K
У меня возникла идея посмотреть, насколько в производстве видеорегистраторов существует какой-либо прогресс, меняется ли что-то на практике от смены поколений процессоров или же все новые модели это просто развод покупателя на новые затраты. Полученный из китая только-что регистратор на самом современном процессоре Ambarella A12 подтолкнул весы от созерцания к действию.

Также на форумах в обсуждениях часто встречаются несколько популярных идей, типа:
— GoPro Hero снимет лучше, чем любой видеорегистратор;
— Обычная бытовая видеокамера (камкордер) снимет лучше чем любой регистратор;
Проверку этих теорий я тоже решил рассмотреть, добавив в обзор action-камеры и видеокамеру. Обзор не претендует на всестороннесть, я рассматривал те режимы, которые мне были интересны, у тех устройств, которые удалось найти.

Под катом больше 20 мегабайт фото и несколько видео. Предпологается просмотр на большом мониторе. Все видео специально без звука.
Поехали!

Теория графов в Игре Престолов

Reading time19 min
Views66K


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

Всем кому интересно, добро пожаловать под кат.
Читать дальше →

Как программист машину покупал

Reading time9 min
Views122K
Недавно я озадачился поиском б.у. автомобиля, взамен только что проданного, и, как это обычно бывает, на эту роль претендовали несколько конкурентов.

Как известно, для покупки авто на территории РФ существует несколько крупных авторитетных сайтов (auto.ru, drom.ru, avito.ru), поиску на которых я и отдал предпочтение. Моим требованиям отвечали сотни, а для некоторых моделей и тысячи, автомобилей, с перечисленных выше сайтов. Помимо того, что искать на нескольких ресурсах неудобно, так еще, прежде чем ехать смотреть авто “вживую”, я хотел бы отобрать выгодные (цена которых относительно рынка занижена) предложения по априорной информации которую предоставляет каждый из ресурсов. Я, конечно, очень хотел решить несколько переопределенных систем алгебраических уравнений (возможно и нелинейных) высокой размерности вручную, но пересилил себя, и решил этот процесс автоматизировать.
image
Читать дальше →

Конкурс по классификации слов от Hola или «где взять ещё один процент?»

Reading time4 min
Views5.7K
Увидел пост о конкурсе, когда прошло уже две недели после начала. Но задача показалась крайне увлекательной, и я не ошибся в этом, нырнув в решение с головой. Хочу поделиться решением на 80+% и своими впечатлениями в этом посте.

Всё моё участие прошло под вопросом «где взять ещё один процент?», но в ответ я чаще получал сотые доли процента или ничего. Итак, обо всём по порядку.
Читать дальше →

Вебсервис для симуляции движения пешеходов и выявления проблем благоустройства

Reading time6 min
Views25K
Некоторое время назад я опубликовал тут свою статью, посвященную проблеме благоустройства дворов: habrahabr.ru/post/257563
В статье рассматривался алгоритм, позволяющий по плану местности предсказать, где пешеходы будут сходить с дорожек и топать по газонам, разнося грязь и портя всю красоту. Алгоритм представлял собой симуляцию движения пешеходов на заданной местности с помощью доработанного A* и модифицируемого во время движения навигационного графа.

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

Продемонстрирую процесс применения сервиса на примере вот этого участка проспекта Стачек в Санкт-Петербурге:



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

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

Одна маленькая проблема скачивания файлов на медленных соединениях

Reading time5 min
Views30K


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

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

Information

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