Казалось бы, было бы так просто и логично, если бы не было в природе деления на мужской и женский пол. Зачем вообще нужно половое размножение, если можно прекрасно делиться одному организму до скончания веков? Ведь, на поиски полового партнера нужны время и силы. А, если ты никому не понравишься, или, вообще, никого не найдешь, то ты не размножишься вообще.
Евгений Петров @EugeniyPetrov
User
Фингерпринтинг конкретного ПК с точностью 99,24%: не спасает даже смена браузера
4 min
83KЗадачи рендеринга на клиентской стороне с целью фингерпринтинга
Практика смены браузера, чтобы сменить личность в интернете, является популярным советом от экспертов и специалистов по безопасности. Согласно опросу, около 70% пользователей установили и регулярно используют по меньшей мере два браузера. Так они надеются избежать слежки и нежелательного распознавания на сайтах.
Группа американских исследователей опубликовала научную работу с описанием более продвинутых техник фингерпринтинга, которые не учитывают версию браузера, но всё равно распознают конкретный ПК с высокой точностью.
+30
Сервис такси разыгрывает базу контактов клиентов и водителей
4 min
28KПопулярный украинский сервис такси Uklon регулярно устраивает розыгрыши среди своих водителей и клиентов. По результатам каждого розыгрыша они публикуют на свою facebook страницу видео с контактными данными участников: имя и адрес электронной почты (пример, видео удалили). Фрагмент кадра:
В оригинальном видео адреса не размыты, их для статьи размыл я, чтобы не распространять эти данные дальше. На мое письмо в их поддержку, что это не очень хорошая идея:
Они ответили, что им все равно:
Поэтому я решил написать небольшой пост, как можно получить контактные данные с видео, не используя какие-то специальные умения. Дисклаймер: этот пост носит образовательный характер, и демонстрирует как не стоит обращаться с данными клиентов.
В оригинальном видео адреса не размыты, их для статьи размыл я, чтобы не распространять эти данные дальше. На мое письмо в их поддержку, что это не очень хорошая идея:
Добрый день!
Нельзя в видео (ссылка) выкладывать адреса и имена людей.
1. Во-первых, ваши конкуренты могут получить список ваших клиентов и водителей
2. Во-вторых, вы нарушаете закон Украины про доступ к персональным данным
Они ответили, что им все равно:
Здравствуйте, Денис, при регистрации каждый пользователь дает согласие на использование его персональных данных uklon.com.ua/document/useragreement — пункт 2.6. Большое спасибо за ваш отзыв.
Поэтому я решил написать небольшой пост, как можно получить контактные данные с видео, не используя какие-то специальные умения. Дисклаймер: этот пост носит образовательный характер, и демонстрирует как не стоит обращаться с данными клиентов.
+60
Любой сайт может получить информацию о том, в каких популярных сервисах вы авторизированы
3 min
68KРазработчик Робин Линус на своей странице на GitHub Pages (визит по следующей ссылке небезопасен и его не рекомендуется выполнять с рабочего места, так как кроме видимой части сервисов страница проверяет, залогинены ли вы на сайтах для взрослых, а это останется в логах файрволла как попытка перехода прим.) продемонстрировал, как сайты могут снимать с вас «медийный отпечаток», то есть вести учет того, в каких популярных сервисах залогинены посетители даже без какой-либо авторизации на посещаемой странице.
Для автора публикации «медийный отпечаток» выглядит следующим образом и является абсолютно верным:
И это весьма неприятно.
Для автора публикации «медийный отпечаток» выглядит следующим образом и является абсолютно верным:
И это весьма неприятно.
+105
Бот-юрист успешно оспорил 160000 штрафов за парковку в Лондоне и Нью-Йорке
3 min
34KЗа 21 месяц сервис DoNotPay помог отменить штрафов на сумму в $4 миллиона
В феврале на Geektimes уже сообщалось о том, что британский IT-студент Джошуа Броудер (Joshua Browder) запустил автоматический сервис, который помогает составлять и отправлять апелляции на полученные квитанции о штрафах за неправильную парковку. Такие штрафы выписываются иногда несправедливо, но самостоятельно оспаривать их обычному человеку сложно, а услуги юриста обойдутся дороже, чем сам штраф.
На данный момент чат-бот помог успешно оспорить уже более 160 тысяч штрафов в Лондоне и Нью-Йорке. При этом этот «юрист» работает абсолютно бесплатно, демонстрируя пользу, которую могут приносить чат-боты. Создатель называет свой сервис «первым в мире роботом-юристом». Интерфейс здесь довольно простой — фактически, работать с ним может и ребенок.
В феврале на Geektimes уже сообщалось о том, что британский IT-студент Джошуа Броудер (Joshua Browder) запустил автоматический сервис, который помогает составлять и отправлять апелляции на полученные квитанции о штрафах за неправильную парковку. Такие штрафы выписываются иногда несправедливо, но самостоятельно оспаривать их обычному человеку сложно, а услуги юриста обойдутся дороже, чем сам штраф.
На данный момент чат-бот помог успешно оспорить уже более 160 тысяч штрафов в Лондоне и Нью-Йорке. При этом этот «юрист» работает абсолютно бесплатно, демонстрируя пользу, которую могут приносить чат-боты. Создатель называет свой сервис «первым в мире роботом-юристом». Интерфейс здесь довольно простой — фактически, работать с ним может и ребенок.
+32
[ В закладки ] Алгоритмы и структуры данных в ядре Linux, Chromium и не только
9 min
86KTranslation
Многие студенты, впервые сталкиваясь с описанием какой-нибудь хитроумной штуки, вроде алгоритма Кнута – Морриса – Пратта или красно-чёрных деревьев, тут же задаются вопросами: «К чему такие сложности? И это, кроме авторов учебников, кому-нибудь нужно?». Лучший способ доказать пользу алгоритмов – это примеры из жизни. Причём, в идеале – конкретные примеры применения широко известных алгоритмов в современных, повсеместно используемых, программных продуктах.
Посмотрим, что можно обнаружить в коде ядра Linux, браузера Chromium и ещё в некоторых проектах.
Посмотрим, что можно обнаружить в коде ядра Linux, браузера Chromium и ещё в некоторых проектах.
+140
Все способы вертикального выравнивания в CSS
6 min
810KЯ думаю, многие из вас, кому приходилось заниматься версткой, сталкивались с необходимостью выравнивать элементы по вертикали и знают, какие сложности возникают при выравнивании элемента по центру.
Да, для вертикального выравнивания в CSS есть специальное свойство
vertical-align
с множеством значений. Однако на практике оно работает совсем не так, как ожидается. Давайте попробуем в этом разобраться.+38
Авиалайнер «Боинг-787» генерирует 500 ГБ за каждый полёт
2 min
86KАвиакомпаниям придётся сделать апгрейд своей ИТ-инфраструктуры, потому что самолёты нового поколения генерируют очень большие объёмы трафика. Например, ИТ-директор авиакомпании Virgin Atlantic Дэвид Булмэн (David Bulman) рассказал, что новый пассажирский самолёт Boeing 787 Dreamliner за один полёт генерирует более 500 гигабайт информации, которую нужно сохранить и обработать.
По его словам, буквально каждый ключевой узел авиалайнера подключен к сети, в том числе двигатели, закрылки и посадочный механизм. Если возникают технические проблемы с любым из модулей, то инженеры узнают об этом заранее и готовы к ремонту ещё до посадки самолёта. Все узлы в совокупности генерируют примерно полтерабайта данных в течение одного рейса. Часть этой информации передаётся на базу в реальном времени непосредственно во время полёта.
+107
Как на самом деле работает протокол Биткоин
28 min
211KTranslation
(Замечательное объяснение принципов работы сети Bitcoin авторства Michael Nielsen. Много текста, немного картинок. Обо всех корявостях перевода — в личку, буду исправлять по мере обнаружения)
Много тысяч статей было написано для того, чтобы объяснить Биткоин — онлайн, одноранговую (p2p) валюту. Большинство из этих статей поверхностно рассказывают суть криптографического протокола, опуская многие детали. Даже те статьи, которые «копают» глубже, часто замалчивают важные моменты. Моя цель в этой публикации — объяснить основные идеи, лежащие в протоколе Биткоин в ясной, легкодоступной форме. Мы начнем с простых принципов, далее пойдем к широкому теоретическому пониманию, как работает протокол, а затем копнем глубже, рассматривая сырые (raw) данные в транзакции Биткоин.
Много тысяч статей было написано для того, чтобы объяснить Биткоин — онлайн, одноранговую (p2p) валюту. Большинство из этих статей поверхностно рассказывают суть криптографического протокола, опуская многие детали. Даже те статьи, которые «копают» глубже, часто замалчивают важные моменты. Моя цель в этой публикации — объяснить основные идеи, лежащие в протоколе Биткоин в ясной, легкодоступной форме. Мы начнем с простых принципов, далее пойдем к широкому теоретическому пониманию, как работает протокол, а затем копнем глубже, рассматривая сырые (raw) данные в транзакции Биткоин.
+58
Как работает реляционная БД
51 min
546KTutorial
Translation
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.
На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
+226
Как легко расшифровать TLS-трафик от браузера в Wireshark
2 min
161KTranslation
Многим из вас знаком Wireshark — анализатор трафика, который помогает понять работу сети, диагностировать проблемы, и вообще умеет кучу вещей.
Одна из проблем с тем, как работает Wireshark, заключается в невозможности легко проанализировать зашифрованный трафик, вроде TLS. Раньше вы могли указать Wireshark приватные ключи, если они у вас были, и расшифровывать трафик на лету, но это работало только в том случае, если использовался исключительно RSA. Эта функциональность сломалась из-за того, что люди начали продвигать совершенную прямую секретность (Perfect Forward Secrecy), и приватного ключа стало недостаточно, чтобы получить сессионный ключ, который используется для расшифровки данных. Вторая проблема заключается в том, что приватный ключ не должен или не может быть выгружен с клиента, сервера или HSM (Hardware Security Module), в котором находится. Из-за этого, мне приходилось прибегать к сомнительным ухищрениям с расшифровкой трафика через man-in-the-middle (например, через sslstrip).
Что ж, друзья, сегодня я вам расскажу о способе проще! Оказалось, что Firefox и Development-версия Chrome поддерживают логгирование симметричных сессионных ключей, которые используются для зашифровки трафика, в файл. Вы можете указать этот файл в Wireshark, и (вуаля!) трафик расшифровался. Давайте-ка настроим это дело.
Одна из проблем с тем, как работает Wireshark, заключается в невозможности легко проанализировать зашифрованный трафик, вроде TLS. Раньше вы могли указать Wireshark приватные ключи, если они у вас были, и расшифровывать трафик на лету, но это работало только в том случае, если использовался исключительно RSA. Эта функциональность сломалась из-за того, что люди начали продвигать совершенную прямую секретность (Perfect Forward Secrecy), и приватного ключа стало недостаточно, чтобы получить сессионный ключ, который используется для расшифровки данных. Вторая проблема заключается в том, что приватный ключ не должен или не может быть выгружен с клиента, сервера или HSM (Hardware Security Module), в котором находится. Из-за этого, мне приходилось прибегать к сомнительным ухищрениям с расшифровкой трафика через man-in-the-middle (например, через sslstrip).
Логгирование сессионных ключей спешит на помощь!
Что ж, друзья, сегодня я вам расскажу о способе проще! Оказалось, что Firefox и Development-версия Chrome поддерживают логгирование симметричных сессионных ключей, которые используются для зашифровки трафика, в файл. Вы можете указать этот файл в Wireshark, и (вуаля!) трафик расшифровался. Давайте-ка настроим это дело.
+81
Компиляция. 7: назначение регистров
18 min
5.6KFile names are infinite in length, where infinity is set to 255 characters.
--Peter Collinson: The Unix File System
Итак, у нас есть программа на п-коде, и в её распоряжении неограниченное количество регистров (т.е. 255). Число регистров у реального процессора куда меньше (предположим, четыре). Что будем делать?
Далее в посте:
- Разбор п-кода
- Время жизни
- Реализация
- Простые оптимизации
- Расщепление версий
- Работа с памятью
- Что получилось?
+58
Компиляция. 6: промежуточный код
17 min
11KПервый этап — разбор синтаксиса нашего джей-скрипа — пройден; подбираемся к генерации кода.
Начнём с генерации п-кода (промежуточного переносимого псевдокода) — нечто вроде «абстрактного машинного языка». Его выбирают так, чтобы
Начнём с генерации п-кода (промежуточного переносимого псевдокода) — нечто вроде «абстрактного машинного языка». Его выбирают так, чтобы
- его было легко генерировать;
- его было легко обрабатывать.
Далее в посте:
- Выбор кода
- Компиляция
- Выполнение
- Backpatching
+49
Компиляция. 5: нисходящий разбор
10 min
25KДо сих пор занимались восходящим синтаксическим разбором. Какие ещё есть варианты?
Отложим бизона в сторону, и вернёмся к теории.
Отложим бизона в сторону, и вернёмся к теории.
Далее в посте:
- Идея
- Воплощение
- Холивар
- Бэктрекинг
+23
Компиляция. 4: игрушечный ЯП
18 min
20KС грамматиками калькуляторов поиграли достаточно, переходим к языкам программирования. Бета-тестеры статьи подали идею писать JavaScript-подобный язык: начнём с простейшего скобчатого скелета, и будем его постепенно обращивать наворотами — синтаксическим сахаром, типами данных, поддержкой функций, и т.д.
Чтобы неполноценность нашего языка была понятна уже из названия, назовём его JSkrip.
Чтобы неполноценность нашего языка была понятна уже из названия, назовём его JSkrip.
Далее в посте
- Синтаксис
- Грамматика
- Парсер
- Синтаксическое дерево
- Pretty-printing
+27
Компиляция. 2: грамматики
11 min
41KВ предыдущем посте было много кода и, по некоторым мнениям, недостаточно объяснений. Будем чередовать: в этот раз будет много теории, а до практики почти не дойдёт.
Далее в посте:
- Магазинный автомат
- Формальные грамматики
- LR-парсинг
+46
Компиляция. 3: бизон
13 min
48KЭто единственный пост в серии, в центре внимания которого — старообрядный сишный бизон, так надоевший некоторым. Тем, кто пишет не на Си, пост всё равно должен быть интересен, потому что похожие по принципу работы генераторы LR-парсеров существуют для очень многих языков. Тех же, кто идеологически не приемлет LR-парсеры, мне сегодня привлечь нечем.
Далее в посте:
- Компиляция грамматики
- Двухступенчатый парсер
- Что у него внутри?
- Конфликты в грамматике
- Как это работает?
+69
Компиляция. 1: лексер
7 min
93KМеня всегда завораживало таинство рождения программой программы. К сожалению, российские вузы уделяют мало внимания сей интереснейшей теме. Рассчитываю написать серию постов, в которых поэтапно создадим маленький работоспособный компилятор.
Первые посты серии уже подготовлены, и бета-тестировались в одном маленьком и наглухо закрытом сообществе. Тем не менее, я буду продолжать их править с учётом пожеланий почтенной хабрапублики.
Первые посты серии уже подготовлены, и бета-тестировались в одном маленьком и наглухо закрытом сообществе. Тем не менее, я буду продолжать их править с учётом пожеланий почтенной хабрапублики.
Далее в посте:
- С какой стати писать компиляторы?
- Общий план
- Анализ текста
- Практический пример
- Как это работает?
+85
500 слов в минуту без подготовки
1 min
518KОбычная скорость чтения на русском языке составляет 120—180 слов в минуту. С помощью долгих тренировок можно повысить её где-то до 600 слов в минуту. Совсем недавно небольшой стартап из Бостона представил новую технологию под названием Spritz.
Мне удалось без подготовки читать со скоростью 500 слов в минуту. Разработчики утверждают, что можно достигнуть 1000; без ущерба для смысла. Более того, утверждается, что использование Spritz также увеличивает скорость чтения обычных текстов.
Вероятно, теперь можно ожидать появления устройств с крошечными экранами, которые составят конкуренцию традиционным электронным книгам. Очень рекомендую ознакомиться с демкой на сайте.
+177
HP Microserver в офисе
4 min
33KСовсем недавно серверное подразделение HP выпустило весьма интересный и в чем-то даже неожиданный продукт. Он получил говорящее название Microserver – даже не видев самого устройства можно, с одной стороны, примерно представить, о чем идет речь, а с другой – нафантазировать чего угодно. Новый сервер рассчитан на небольшие рабочие группы и ориентирован на применение в офисах, но и дома использовать его не воспрещается. На волне интереса к этой модели я решил написать пару постов о том, чем Microserver может быть полезен, и к чему его удалось приспособить.
Осторожно, много фото!
Осторожно, много фото!
+37
Information
- Rating
- Does not participate
- Location
- Киев, Киевская обл., Украина
- Date of birth
- Registered
- Activity