Search
Write a publication
Pull to refresh
2
0

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

Send message

Режим ограничения доступа к аксессуарам в устройствах iOS и как его обходят

Reading time8 min
Views11K
Сегодня я расскажу об одном интересном с технической точки зрения решении Apple, посредством которого компания попыталась защитить свои устройства от перебора паролей – и о том, что из этого получилось в результате. Для начала отвечу на вопрос, для чего вообще нужен режим ограничения доступа к аксессуарам в iPhone.

Защита от взлома кода блокировки экрана


Основной рассказ о системе безопасности iOS ещё впереди. Сейчас же я хочу акцентировать внимание на одной достаточно спорной особенности iOS, которая ставит безопасность всех данных пользователя как в устройстве, так и в облачной учётной записи в зависимость от одного единственного фактора: кода блокировки экрана. Если известен код блокировки экрана, из iPhone можно извлечь практически все данные, включая пароли от учётных записей. Защита резервных копий паролем? Нет, не слышали: она как бы есть, но сбросить её, зная код блокировки – дело нескольких секунд. Отвязать украденный телефон от iCloud? Если известен код блокировки – вообще без проблем; пароль от iCloud меняется в несколько секунд, причём старый пароль от Apple ID не нужен. Двухфакторная аутентификация? Прекрасно, обязательно включите её! Вот только если код блокировки известен, всё устройство целиком становится тем самым вторым фактором. Скромно упомяну такие вещи, как база данных паролей пользователя в iCloud, его сообщения SMS и iMessage, а также данные «Здоровья», которые наши программы могут расшифровать при помощи кода блокировки (при необходимости сбросив предварительно пароль от «облака» при помощи всё того же единственного кода блокировки).
Читать дальше →

Строим систему распознавания лиц на основе Golang и OpenCV

Reading time4 min
Views19K

OpenCV — библиотека, разработанная для проектов по компьютерному зрению. Ей уже около 20 лет. Я использовал ее еще в колледже и до сих пор применяю для своих проектов на C++ и Python, поскольку она имеет неплохую поддержку этих языков.

Но когда я начал изучать и использовать Go, мне стало интересно, можно ли применить OpenCV для работы с этим языком. В то время уже существовали примеры и туториалы по интеграции, но мне показалось, что они слишком сложные. Чуть позже мне в руки попался враппер, созданный командой The Hybrid Group. В этой статье я покажу, как начать с GoCV, разработав простую систему распознавания лиц с каскадами Хаара (Haar Cascades).
Читать дальше →

Что ты такое, Event Loop? Или как устроен цикл событий в браузере Chrome

Reading time3 min
Views157K
Как думаете, что произойдет, если запустить в консоли браузера этот фрагмент кода?

function foo() {
  setTimeout(foo, 0);
}

foo();

А этот?

function foo() {
  Promise.resolve().then(foo);
}

foo();

Если вы также, как и я, прочитали кучу статей про Event Loop, Main Thread, таски, микротаски и прочее, но затрудняетесь ответить на вопросы выше — эта статья для вас.
Читать дальше →

Обходим лимит поиска LinkedIn, играя с API

Reading time6 min
Views23K

Лимит


Есть на LinkedIn такое ограничение — Лимит коммерческого использования. Крайне вероятно, что вы, как и я до недавнего времени, никогда не сталкивались и не слышали о нем.



Суть лимита в том, что если вы используете поиск людей вне ваших контактов слишком часто (точных метрик нет, решает алгоритм, на основе ваших действий — как часто и много искали, добавляли людей), то результат поиска будет ограничен тремя профилями, вместо 1000 (по умолчанию 100 страниц, по 10 профилей на страницу). Лимит сбрасывается в начале каждого месяца. Естественно, премиум аккаунты такого ограничения не имеют.

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

AppCode 2019.2: Swift 5.1, анализ покрытия кода тестами, отображение дизассемблированного кода и другое

Reading time4 min
Views4.3K

Астрологи объявили неделю релизов в JetBrains, количество публикаций в блоге выросло втрое! На самом деле, это тоже релизный пост, так что если вы участвовали в EAP, вы уже обо всем знаете.


Если нет — обязательно заходите под кат, потому что в этом релизе у нас не только появился анализ покрытия кода тестами и отображение дизассемблированного кода, но еще и поддержка DSL на Ruby и куча прочего интересного!


Run With Coverage


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

F-strings или как сделать код чуть более быстрым и читаемым

Reading time4 min
Views57K


В Python есть 3 способа форматировать строки, и один из них лучше других. Но не будем забегать наперед — о каком именно форматировании вообще речь? Каждый раз когда мы хотим поприветствовать пользователя по имени нам нужно вставить строку с именем в строку-шаблон. Большинство полезных записей в логах так же содержат значения переменных. И вот пример:

integer = 42
string = 'FORTY_TWO'

print('string number %s, or simply %d' % (string, integer))
print('string number {}, or simply {}'.format(string, integer))
print(f'string number {string}, or simply {integer}')

Первый способ, форматирование оператором %, пришел в Python еще из С — он имитирует функцию printf. Этот способ был первым в питоне, и остается единственным (из обсуждаемых в статье) в Python версии 2.5 и ниже.

Второй способ — это метод str.format, принадлежащий встроенному классу строк. Он появился с Python 3.0, и был портирован в версию 2.6. Этот метод был рекомендован как обладающий более богатым синтаксисом.

Третий способ, f-string, появился в Python версии 3.6. Как объяснено в PEP-0498, создание нового способа форматирования строк было мотивировано недостатками существующих методов, которые авторы характеризуют как подверженные ошибкам, недостаточно гибкие и не элегантные:
This PEP is driven by the desire to have a simpler way to format strings in Python. The existing ways of formatting are either error prone, inflexible, or cumbersome.
Итак, у нас есть три способа решить одну задачу. Но может это дело личного вкуса и предпочтений? Возможно, но стиль вашего кода (особенно кода в проекте с большим количеством участников) точно выиграет от единообразия. В лучшем случае стоит использовать один метод форматирования строк, тогда читать код станет проще. Но какой же метод выбрать? И есть ли разница в производительности кода?
Читать дальше →

Тайная вечеря разработчиков

Reading time9 min
Views8.6K
Казалось бы, в небольших командах разработки (20+ человек) не должны возникать проблемы с разобщённостью, работой над общим кодом и принятием технических решений. Но все мы знаем, что это не так (не говоря уже о командах вроде нашей, где 80+ человек). Три года назад для их решения мы начали проводить еженедельную внутреннюю конференцию разработчиков DevForum. Под катом вы узнаете про то, как он помогает нам, почему не всегда подходят другие форматы (вроде еженедельных встреч или Sprint Review) и инструкцию по его созданию.


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

Как 25 человек обманом убедили работать в несуществующей игровой компании

Reading time10 min
Views55K
image

Брук Холден отдала бы всё за то, чтобы попасть в индустрию видеоигр.

Она поступила в британский университет, чтобы изучать разработку игр, но на полпути к диплому осознала, что ненавидит кодить. Кроме того, она слышала много ужасных историй об условиях труда в игровых компаниях, где сотрудники регулярно работают по 60-80 часов в неделю, и решила для себя: ни за что, это не про меня. Но год спустя, работая офис-менеджером, Холден в свои 26 лет по-прежнему мечтала попасть в мир разработки игр, возможно, на какой-нибудь должности управления командой.

Однажды она опубликовала пост в субреддите, посвящённом сбору команд для разработки игр: «Страстно влюблённая в игры менеджер команды без опыта работы ищет хобби-проект, которому нужна помощь в поддержке и управлении». Это походило просто на шалость, но пост всё-таки собрал полдюжины ответов. Один из них выделялся на общем фоне: он был оставлен с аккаунта с активной историей найма разработчиков на Reddit. Пользователь под именем Kova сообщил Холден, что его небольшая команда из трёх разработчиков недавно превратилась в организацию из 48 сотрудников и им чертовски нужен менеджер.

Холден пришла в восторг. 22 июня 2019 года она подписала договор с компанией Drakore Studios, из которой был Kova, вступив на должность джуниор-менеджера по производству с оплатой 13 долларов в час.

Проблема заключалась только в одном: на самом деле Drakore Studios не существовало.

KVM (недо)VDI с одноразовыми виртуальными машинами с помощью bash

Reading time20 min
Views10K

Кому предназначена данная статья


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

Пролог


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

Важным аспектом являлся тот факт, что большая часть программного обеспечения «заточена» под MS Windows (например, «Декларация»), а несмотря на движение в сторону открытых форматов, MS Office остается доминирующим стандартом при обмене электронными документами. Таким образом, отказаться от MS Windows при решении данной задачи мы не могли.
Читать дальше →

Почти самый простой MIMO канал с замираниями (модель Кронекера прилагается)

Reading time15 min
Views15K

Всем доброго времени суток!


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


Более того, в сегодняшней статье мы слегка коснемся вопросов пространственной корреляции MIMO каналов, которые традиционно разбираются в рамках курса профессора Хаардта "Mobile communications" (CSP), и поэтому, я думаю, такая публикация тем более не будет лишней. И, отмечу сразу, круг вопросов не ограничивается применением только в мобильной связи.


В общем, всех интересующихся тематикой беспроводной связи приглашаю к прочтению, и поехали!



Colin Slater "Fading memories". Да, сводить всё к одной теме — это, наверное, перебор, однако какой-то такой метафорой, я думаю, можно представить, что именно получает приемник после всевозможных воздействий на изначальный, информационный сигнал...

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

Пять студентов и три распределённых key-value хранилища

Reading time8 min
Views6.4K

Или как мы писали клиентскую C++ библиотеку для ZooKeeper, etcd и Consul KV


В мире распределённых систем существует ряд типовых задач: хранение информации о составе кластера, управление конфигурацией узлов, детекция сбойных узлов, выбор лидера и другие. Для решения этих задач созданы специальные распределённые системы — сервисы координации. Сейчас нас будут интересовать три из них: ZooKeeper, etcd и Consul. Из всей богатой функциональности Consul мы сосредоточимся на Consul KV.



По сути все эти системы представляют собой отказоустойчивые линеаризуемые key-value хранилища. Хотя их модели данных и имеют существенные отличия, о чём мы поговорим позднее, они позволяют решать одни и те же практические проблемы. Очевидно, каждое приложение, использующее сервис координации, завязывается на один из них, что может приводить к необходимости поддерживать в одном датацентре несколько систем, решающих одинаковые задачи, для разных приложений.

Идея, призванная решить эту проблему, зародилась в одном австралийском консалтинговом агентстве, а нам – небольшой команде студентов – выпало её реализовывать, о чём я и собираюсь рассказать.
Читать дальше →

Настройка Firefox в Linux

Level of difficultyMedium
Reading time127 min
Views104K
Решил написать о настройке Firefox для Linux. В интернете похожие статьи тоже есть, но в основном они по старым версиям браузера. Радикальных отличий в настройке Firefox для Linux или для Windows нет, однако есть свои особенности.
Читать дальше →

Российский математик опроверг 53-летнюю гипотезу о раскраске сетей

Reading time8 min
Views48K

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




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

Задачи по раскраске сетей [см. хроматическое число / прим. перев.], вдохновлённые вопросом такой раскраски карт, при которой соседние страны имеют разные цвета, находятся в фокусе исследований математиков почти 200 лет. Задача состоит в том, чтобы понять, как раскрашивать узлы некоей сети (или графа, как зовут их математики) так, чтобы у любых двух связанных узлов были разные цвета. В зависимости от контекста, эта раскраска может предоставить эффективный способ рассадки гостей на свадьбе, расстановке производственных задач по свободным временным промежуткам, или даже решения судоку.
Читать дальше →

Режим «инкогнито» в браузере — это фикция?

Reading time3 min
Views26K
30 июля компания Google выпустила Chrome 76 с улучшенным режимом инкогнито. Теперь браузер обходит «пейволы», которые ставят читателям лимит на «несколько статей в месяц», а потом требуют подписку или регистрацию.

Например, The New York Times позволяет читать десять статей в месяц, а Wired — четыре. На долю "metered paywalls" приходится 33% пейволов в онлайновых медиа. Пользователей в режиме «инкогнито» там встречают недружелюбно:



В Chrome 76 обход пейволла упростился до предела: достаточно нажать на ссылку правой кнопкой мыши и выбрать «Открыть ссылку в окне в режиме инкогнито». Теперь браузер не распознает, что вы находитесь в «приватном режиме». Счётчик прочитанных статей в «инкогнито» не работает из-за отсутствия куков.
Читать дальше →

Делаем контроллер для умного дома

Reading time11 min
Views21K
Делаем контроллер для умного дома и не только.

В предыдущей статье я описывал разработку системы в целом. В этой я опишу разработку контроллера, который отвечает за опрос датчиков и модулей ввода-вывода. «Зачем изобретать велосипед?» — спросите вы. Во-первых, это интересно, во вторых, как ни странно, нет OpenSource решения для подобного контроллера, покрывающего как программную так и аппаратную часть. Статья ориентирована на людей немного разбирающихся как в электронике так и в embedded linux development.

Сделать контроллер, скажете вы, это же так сложно — нужно делать плату, писать софт, печатать корпус. Но в реалии всё чуть-чуть ещё сложнее, вот во что это вылилось для меня, но вы в принципе правы:
Читать дальше →

Код блокировки в iOS: как в Apple перешли от эшелонированной обороны к охране единственного рубежа

Reading time8 min
Views20K
В прошлой статье я рассказал о режиме ограничения доступа к аксессуарам в устройствах под управлением iOS. В статье я акцентировал внимание на особенности iOS, которая ставит безопасность данных пользователя в зависимость от единственного «непреодолимого» защитного рубежа: кода блокировки экрана. Практически все защитные меры так или иначе завязаны на код блокировки. Apple периодически (по сложному расписанию) отключает в iPhone биометрику, заставляя пользователя вводить пасскод для разблокировки экрана. Включил или перезагрузил телефон – нужен код блокировки. Использовал режим SOS – код блокировки. Телефон не использовался несколько часов – снова код блокировки. Подключаешь к компьютеру – и опять введи код блокировки. Хочешь установить пароль на резервную копию? Начиная с iOS 13 и здесь нужен код блокировки.

Казалось бы, пользователю достаточно установить длинный и сложный код блокировки, чтобы полностью обезопасить устройство. Однако такое поведение ничем не отличается от гипотетической системы безопасности здания, в котором охраняется только вход – при этом двери в кабинеты всегда нараспашку, на компьютерах в офисах нет никаких паролей, а к внутренней сети с любого устройства можно получить неограниченный доступ, просто подключившись к сети Wi-Fi (конечно же, тоже совершенно открытой).

Фантастика? Действительно, описанное звучит странновато, но именно в таком состоянии находится сейчас система безопасности iOS. Фактически, вся защита целиком и полностью основана на единственном рубеже обороны, которым является код блокировки экрана – при единственном маленьком условии: учётная запись пользователя защищена двухфакторной аутентификацией.
Читать дальше →

Управление подставкой для ноутбука с помощью digispark

Reading time3 min
Views11K
Решил написать статью об очень простом устройстве, сделанным за два вечера. Решило оно давнюю проблему, чему я сильно рад и использую его по сей день. Отработало исправно оно около 3 месяцев. Собственно вот что получилось в итоге. Кого заинтересовало, прошу под кат.


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

Джон Ромеро до Doom: геймдев 80-х

Reading time7 min
Views13K


Хорошо известно, что Джон Ромеро — геймдизайнер Doom и Quake. Но о том, что он делал до этих суперхитов, знают куда меньше. Какой путь привёл к таким успешным играм? С чего всё началось, как от любительского перешло к профессиональному, что служило источниками вдохновения?

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

О том, как шла работа над Doom, Ромеро сам расскажет на нашем фестивале TechTrain в Петербурге. А мы пока что расскажем о том, что этому предшествовало.
Читать дальше →

Революция закончилась. Есть ли альтернатива литий-ионному аккумулятору?

Reading time11 min
Views162K


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

Information

Rating
Does not participate
Registered
Activity