Как стать автором
Обновить
86
0

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

Отправить сообщение

Как работает Wi-fi. Часть 2. Физический уровень

Время на прочтение12 мин
Количество просмотров50K
image

В предыдущей статье о Wi-Fi мы рассказывали об истории беспроводных сетей: первой беспроводной сети AlohaNet, коммерческой WaveLan и IEEE, который поспособствовал стандартизации беспроводных устройств. Вот, кстати, ссылочка на первую публикацию. В этой части цикла про Wi-Fi мы расскажем о сигнале, передающем информацию, а именно: как аналоговые электромагнитные волны передают цифровой сигнал, как модулируется сигнал и что такое мультиплексирование.
Читать дальше →

Как работает Wi-fi. Часть 1. История беспроводных сетей

Время на прочтение8 мин
Количество просмотров29K

На фотографиях выше изображены Джордж Антейл и Хеди Ламарр — два деятеля культуры (композитор и актриса) и по совместительству изобретатели. В определенных кругах эта пара известна своей концепцией передачи информации по радио, которая впоследствии нашла применение в Wi-fi, GPS, Bluetooth и… Короче, много где.

Во время Второй мировой войны Хеди и Джордж предложили систему для дистанционного управления торпедами. Как не иронично, основной проблемой управляемых торпед того времени была их система управления. Она работала на одной частоте, и если противник обнаруживал угрозу, то «бил» по слабому месту торпеды: отправлял помехи на несущей частоте.

Идея новаторов заключалась в том, чтобы отправлять сигнал частями на разных частотах. Сейчас эта концепция известна как псевдослучайная перестройка рабочей частоты. Технически синхронизацию частот предлагалось осуществлять с помощью пружинных двигателей. Ребята даже получили патент на свою разработку и предложили её армии США, но идею реализовали только в 60-х годах, уже после окончания действия патента.

Порой Хеди Ламарр называют «изобретательницей Wi-fi». Но, пожалуй, такой титул несколько преуменьшает вклад других, не менее значимых открытий, которые позволяют сидеть в интернете без провода. О том, как создавалась и развивалась технология Wi-fi, читайте под катом.
Читать дальше →

10 лучших алгоритмов 20 века

Время на прочтение7 мин
Количество просмотров47K
Прим. Эта статья была опубликована в майском номере 2000 года журнала SIAM. На рубеже веков появилась «мода» на подведение итогов уходящего столетия. И алгоритмы этой участи не избежали. В этой статье авторы делают обзор 10 лучших алгоритмов 20 века. Возможно, вам будет интересно узнать, какие алгоритмы, по мнению авторов списка, внесли наибольший вклад в развитие науки.

Algos — греческое слово, означающее боль. Algor — латинское слово, означающее холод. Но ни то, ни другое не является корнем слова «алгоритм», которое происходит от имени Аль-Хорезми – арабского ученого девятого века – чья книга «al-jabr wa’l muqabalah» (Китаб аль-джебр ва-ль-мукабала) переросла современные учебники по алгебре для средней школы. Аль-Хорезми подчеркивал важность методических процедур для решения задач. Будь он сегодня здесь, то, несомненно, был бы впечатлен вершинами математического метода, названного в его честь.

Часть из лучших алгоритмов компьютерной эры были освещены в январско-февральском выпуске 2000 года журнала Computing in Science & Engineering — совместном издании Американского института физики и Компьютерного общества IEEE. Приглашенные редакторы Jack Dongarra (Джек Донгарра) из Университета Теннесси и Francis Sullivan (Фрэнсис Салливан) из Института оборонного анализа составили список из 10 алгоритмов, который они назвали «Top Ten Algorithms of the Century».

«Мы попытались собрать 10 алгоритмов, оказавших наибольшее влияние на развитие и практику науки и техники в 20 веке», — пишут Донгарра и Салливан. По признанию авторов, как и в любом рейтинге, их выборы неизбежно будут спорными. Когда дело доходит до выбора лучшего алгоритма, кажется, что он и вовсе не существует.

Итак, вот список 10 лучших алгоритмов в хронологическом порядке. (Все даты и имена стоит воспринимать как аппроксимацию первого порядка. Большинство алгоритмов формируются в течение времени при участии многих ученых).
Читать дальше →

Авторизация в PostgreSQL. Часть 2. Безопасность на уровне строк

Время на прочтение10 мин
Количество просмотров9.1K
image
Приветствую вас в очередном разборе инструментов авторизации PostgreSQL. В первых двух разделах предыдущей статьи мы обсуждали, чем интересна авторизация в PostgreSQL. Вот содержание этой серии материалов:

  • Роли и привилегии;
  • Безопасность на уровне строк (мы сейчас здесь);
  • Производительность безопасности на уровне строк (coming soon!);

В первой статье мы рассмотрели, как роли и предоставленные привилегии влияют на действия (запросы SELECT, INSERT, UPDATE и DELETE) в отношении объектов БД (таблиц, представлений и функций). Та статья закончилась небольшим клиффхэнгером: если вы создадите многопользовательское приложение, используя только роли и привилегии для авторизации, то ваши пользователи смогут удалять данные друг друга, а может и вообще друг друга. Необходим другой механизм, позволяющий ограничить пользователей чтением и изменением только собственных данных — механизм безопасности на уровне строк (RLS).
Читать дальше →

Авторизация в PostgreSQL. Часть 1 — Роли и Привилегии

Время на прочтение11 мин
Количество просмотров39K
image

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

Несмотря на важность темы, авторизация в базе данных являлась моим слабым местом в начале карьеры. NoSQL был самым крутым парнем на районе, а мир веб-разработки соблазняли фреймворки (например Rails), которые давали более приятный опыт разработки, нежели сложные SQL-скрипты. Но мир меняется. SQL и реляционные базы данных снова оказались в центре внимания, поэтому важно научиться пользоваться ими безопасно и эффективно. В этой серии статей я раскрою основные области авторизации в базах данных с акцентом на PostgreSQL, поскольку это одна из самых зрелых и функциональных СУБД с открытым исходным кодом.
Читать дальше →

О старых книгах по программированию

Время на прочтение6 мин
Количество просмотров19K
image
Как технари, мы постоянно находимся на фронте технологий: новые версии, новые стандарты, новые фреймворки, новые парадигмы. Во многом это хорошо. Многие результаты представляют собой ощутимое улучшение по сравнению с существующим положением дел. Специализация (например, степени бакалавра в области AI) ускоряет развитие перспективных областей, приближая будущее с захватывающими возможностями. До тех пор, пока наши многообещающие технологии находят эффективное применение.

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

Вот поэтому мне нравится собирать редкие и старые книги по программированию. Это не хобби, благодаря которому вас будут приглашать на вечеринки. Но оно на удивление дешевое (спрос на бывшие в употреблении и устаревшие технические справочники невелик). И может принести немного удовольствия. Есть что-то причудливое в компьютерных книгах до эпохи Интернета, в их бумаге и грубой верстке. Каждая из них способна вызвать приятную ностальгию, даже если вы и не застали эпоху.
Читать дальше →

Атака Ферма на RSA

Время на прочтение4 мин
Количество просмотров16K

В 1643 году Пьер де Ферма предложил метод факторизации. Этот метод позволяет эффективно раскладывать целые числа на простые множители.

Алгоритм шифрования и подписи RSA основывается на том, что факторизация — это задача с высокой сложностью. Открытый ключ RSA содержит составное число (обычно называемое N), которое является произведение двух простых чисел (обычно p и q).

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

Я применил метод факторизации Ферма к большим наборам открытых ключей RSA. И я смог обнаружить небольшое количество уязвимых ключей, которые принадлежали принтерам Canon и Fujifilm (первоначально выпускавшихся под маркой Fuji Xerox). В этих устройствах используется криптографический модуль от компании Rambus.
Читать дальше →

Физика двоичной логики

Время на прочтение13 мин
Количество просмотров35K

Вопрос «Как работает компьютер?» чрезвычайно многогранен и ответ на него зависит от выбранного уровня абстракции. Рассказ о компьютере может строиться вокруг прикладного ПО, операционной системы или архитектуры. Эта статья — попытка дать ответ на этот вопрос с точки зрения нижних уровней абстракции: логических схем и принципа их работы.
Читать дальше →

DBaaS: друг или враг?

Время на прочтение7 мин
Количество просмотров2.2K

Нажмите, чтобы узнать больше об авторе Matt Yonkovit.

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

Облачная база данных как услуга (DataBase-as-a-Service, DBaaS) обладает аналогичной двойственностью. 

«Сила» облака трансформировала нашу техническую инфраструктуру. Нигде это не проявляется так ярко, как в росте количества предложений DBaaS на рынке.

Мощные игроки рынка (такие, как Amazon Aurora, Azure SQL, Google Cloud SQL и MongoDB Atlas) быстро стали самым популярным для пользователей способом запуска базы данных в облаке. Но при неправильном развертывании или использовании перед пользователями могут возникать препятствия и проблемы. В своем последнем «Magic Quadrant» компания Gartner сделала стратегические предположения, что 75% всех БД будут развернуты или перемещены на облачные платформы, и только 5% облачных БД когда-либо рассматривались для возвращения в локальную среду. К 2023 году предпочтение к управлению данными в облаке приведет к сокращению количества поставщиков услуг, но в тоже время использование нескольких «облаков» усложнит управление данными и интеграцию. 
Читать дальше →

Toshiba T1100. Культовый ноутбук без жесткого диска

Время на прочтение7 мин
Количество просмотров16K
Ноутбук, предназначенный «для мобильных профессионалов», до 8 часов автономной работы, по цене 1899 долларов… в 1985 году. Как такое возможно? Позвольте представить героя нашей истории, Toshiba T1100 Plus:


Давайте выясним, как он работает
Читать дальше →

HSLuv — удобное цветовое пространство для разработчиков

Время на прочтение5 мин
Количество просмотров6.8K
Меня, как разработчика, работа с цветами порой утомляет, но существуют проекты, упрощающие эту деятельность. HSLuv — это один из таких проектов, и в рамках этой статьи я постараюсь объяснить, что это и как это может помочь разработчикам.

Проблема традиционных цветовых пространств


Традиционно в IT используются RGB или HSL.

Основная проблема этих цветовых моделей заключается в том, что они нелинейны с точки зрения человеческого восприятия.

RGB


Для примера возьмем равномерные ступенчатые градиенты RGB цветов.

  • градиент красного — это цвета #000, #100, #200, #FEE, #FFFи т.д.;
  • градиент зеленого — это цвета #000, #010, #020и т.д.;
  • градиент синего — это цвета #000, #001, #002и т.д.;
  • градиент желтого — это цвета #000, #110, #220и т.д.;
  • градиент голубого — это цвета #000, #011, #022и т.д.;
  • градиент пурпурного — это цвета #000, #101, #202и т.д.


Мы можем увидеть несколько вещей:

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

Хорошо, RGB — это способ визуализации пикселей, да и разрабатывалась эта модель не для удобного «управления» значениями.
Читать дальше →

Инопланетная математика

Время на прочтение7 мин
Количество просмотров55K

В «The Beginning of Infinity«* Дэвид Дойч утверждает, что человеческий мозг — это так называемый универсальный объяснитель. В этом утверждении заключено много различных смыслов, но основная идея состоит в том, что за пределами субъективного человеческого опыта существует объективная физическая реальность, которая подвластна законам природы, и человеческий мозг, благодаря эволюции, способен выявлять и определять любые законы природы (следовательно, универсальность) посредством формирования физических теорий, выраженных на языке математики и подтвержденных или опровергнутых с помощью эмпирических измерений.

Утверждение Дойча лежит на пересечении многих философских вопросов, и многое из того, что он говорит, является скорее тезисом, чем синтезом (или объяснением, как он это называет). (прим. в данном контексте тезис и синтез является отсылкой к триаде Гегеля) Дойч стремительно защищает универсальность объяснительной способности человека, в том числе отрицая утверждение Докинза о том, что давление естественного отбора ограничивает способность к объяснению.
Читать дальше →

Установка Kubernetes на домашнем сервере с помощью K3s

Время на прочтение23 мин
Количество просмотров29K

Но зачем


Знаю, о чем вы думаете — Kubernetes? На домашнем сервере? Кто может быть настолько сумасшедшим? Что ж, раньше я согласился бы, однако недавно кое-что изменило мое мнение.


Я начал работать в небольшом стартапе, в котором нет DevOps разработчиков со знанием Kubernetes (в дальнейшем K8s), и даже будучи старым ненавистником K8s из-за его громоздкости, был вынужден признать, что мне не хватает его программного подхода к деплойментам и доступу к подам. Также должен признать, что азарт от укрощения настолько навороченного зверя давно будоражит меня. И вообще, K8s захватывает мир — так что лишние знания не навредят.

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

Реверс-инжиниринг старой микросхемы OR/NOR

Время на прочтение6 мин
Количество просмотров5.6K
Не так давно я получил фотографию кристалла загадочной схемы OQ100 [1] от EvilMonkeyDesignz. Я проанализировал её и обнаружил, что это чип логики, реализованный на быстрой ECL (эмиттерно-связанная логика) схеме и датируемый, вероятно, началом 1970-х годов. Чип содержит три логических элемента, два с 2 входами и один с 4 входами. Каждый элемент имеет неинвертированный и инвертированный выходы, работая как вентили OR и NOR. Эта статья резюмирует мои исследования. (Недавно я также проанализировал OQ104, другой чип из этой серии.)


Фотография кристалла микросхемы Philips QC100. Фото предоставленоEvilMonkeyDesignz.
Читать дальше →

Проактивные SIM-карты

Время на прочтение4 мин
Количество просмотров9.5K

После столкновения с проактивными SMS-сообщениями от SIM-карты AT&T (перевод статьи тут) я решил проверить и другие SIM-карты. Не секрет, что практически все они поддерживают проактивные функции, но мне стало интересно, сколько карт используют их фактически.

Читать далее

Data-Oriented архитектура

Время на прочтение11 мин
Количество просмотров8K

В архитектуре программного обеспечения существует один малоизвестный паттерн, заслуживающий большего внимания. Архитектура, ориентированная на данные, (data-oriented architecture, DOA) была впервые описана Радживом Джоши в отчете RTI 2007 года, а затем в 2017 году Кристианом Ворхемом и Эрихом Шикутой из Венского университета в статье iiWAS. DOA — это инверсия традиционной дихотомии между монолитным кодом и хранилищем данных (монолитная архитектура) с одной стороны, и небольшими распределенными независимыми компонентами с собственными хранилищами (микросервисы и сервис-ориентированная архитектура) с другой. В архитектуре, ориентированной на данные, монолитное хранилище данных является единственным источником состояния в системе, на которое воздействуют слабосвязанные микросервисы без состояния.

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

Читать далее

Структура смартфона — иллюзия контроля

Время на прочтение5 мин
Количество просмотров13K

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

1. “Процессор приложений”. Это устройство, на котором работает Android или iOS. С этой частью смартфона вы и взаимодействуете. Здесь запускаются и работают ваши приложения. Скорее всего, когда вы думаете о своём смартфоне, вы думаете о процессоре приложений.

2. “Baseband-процессор”. Это устройство управляет сотовой радиосвязью телефона. И под сотовой связью мы подразумеваем действительно сотовые технологии, такие как LTE, 5G и т.д., а не Wi-Fi. Процессор основной полосы частот отвечает за подключение и сброс телефонных звонков, сеансов передачи данных, обрабатывает СМС и выполняет другие функции сотовой связи, порой невидимые для пользователя, такие как “Управление мобильностью”.

3. SIM-карта. СИМ-карта представляет собой полную компьютерную систему (с процессором, памятью и файловой системой), работающую под управлением набора приложений и собственной ОС. Когда вы устанавливаете СИМ-карту, она становится неотъемлемой и активной частью вашего смартфона. 

Как у пользователя смартфона, у вас могла возникнуть иллюзия, что именно вы управляете своим телефоном. Но на самом деле, функциями вашего телефона управляет ПО этих трех систем, из которых только одна доступна вам напрямую.

Читать далее

Создание массива зеркал на 3D-принтере

Время на прочтение8 мин
Количество просмотров19K

Недавно я сделал предложение руки и сердца одному прекрасному человеку с помощью шестигранной зеркальной штуковины, изображенной на фото. Мы оба большие нёрды, и мне хотелось сделать что-нибудь особенное, поэтому я спроектировал и распечатал на 3D-принтере зеркальный массив, чтобы задать заветный вопрос. Зеркала расположены под таким углом, что прямо перед закатом в нашу 8-ю годовщину они отражают свет заходящего солнца на землю, образуя слова «MARRY ME?»

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

Читать далее

Реверс-инжиниринг необычной модемной платы IBM 1965 года

Время на прочтение9 мин
Количество просмотров8.6K

На винтажной плате IBM ниже есть большой металлический блок, который привлек мое внимание, поэтому я подробно разобрался в ней. Оказалось, что плата — это часть модема, а большая металлическая коробка - трансформатор. Этот материал рассказывает о том, что я в итоге узнал об этой плате, а также немного об истории модемов.

Читать далее

Reversing для чайников — ассемблер x86 и код на С (для начинающих/ADHD friendly)

Время на прочтение10 мин
Количество просмотров22K

До того как заняться реверс-инжинирингом, исполняемые файлы казались мне черной магией. Я всегда интересовался, как все работает под капотом, как двоичный код представлен внутри .exe файлов, и насколько сложно модифицировать “исполняемый код” без доступа к исходникам.

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

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

Читать далее

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность