Pull to refresh
75
0
Дмитрий Копытин @dm9

User

Send message

Операционные системы с нуля; Уровень 0

Reading time11 min
Views134K

Добрый день/вечер/ночь/утро! Есть один экспериментальный курс по операционным системам. Есть он в Стэнфордском университете. Но часть материалов доступно всем желающим. Помимо слайдов доступны полные описания практических занятий.


Чем этот курс отличается от прочих других? Большая часть кода пишется самостоятельно и выполняется на вполне реальном современном железе. В качестве целевой платформы выбран Raspberry Pi 3 model B. Т.е. достаточно актуальная архитектура AArch64. ARMv8 Cortex-A53, четыре ядра, 64-бита и вот это всё. В качестве основного языка программирования выбран Rust. Который безопасный, быстрый, без GC и так далее. Его, Rust, предполагается изучать во время курса.


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

Читать дальше →
Total votes 80: ↑78 and ↓2+76
Comments55

АНБ скомпрометировало протокол Диффи-Хеллмана?

Reading time2 min
Views35K
Уже давно ходят слухи, что АНБ способно дешифровать значительную часть зашифрованного интернет-трафика. Этому есть косвенные свидетельства. В 2012 году некий сотрудник АНБ на условиях анонимности утверждал, что агентство добилось «прорыва в вычислениях», которые дают им «возможность взломать нынешнюю публичную криптографию». Документы Сноудена тоже указывают на некоторые исключительные возможности АНБ: из них следует, что агентство построило широкую инфраструктуру для перехвата и расшифровки VPN-трафика, и что оно вероятно обладает возможностью расшифровать по крайней мере часть HTTPS и SSH соединений по запросу.

Документы не дают понять, как такое возможно. 13 октября на конференции ACM CCS выступили известные криптографы Алекс Халдерман (Alex Halderman) и Надя Хенингер (Nadia Heninger) с докладом, в котором они предполагают, что решили эту таинственную загадку. Кстати, их работа признана лучшим докладом конференции.

По мнению специалистов, проблема в алгоритме Диффи-Хеллмана, который широко используется в интернете для обмена ключами при установке защищённого канала. Это краеугольный камень надёжной криптографической защиты. Он используется в VPN, HTTPS и многих других протоколах.
Читать дальше →
Total votes 48: ↑35 and ↓13+22
Comments38

«Магическая константа» 0x5f3759df

Reading time9 min
Views124K
В этой статье мы поговорим о «магической» константе 0x5f3759df, лежащей в основе элегантного алгоритмического трюка для быстрого вычисления обратного квадратного корня.

Вот полная реализация этого алгоритма:

float FastInvSqrt(float x) {
  float xhalf = 0.5f * x;
  int i = *(int*)&x;  // представим биты float в виде целого числа
  i = 0x5f3759df - (i >> 1);  // какого черта здесь происходит ?
  x = *(float*)&i;
  x = x*(1.5f-(xhalf*x*x));
  return x;
}

Этот код вычисляет некоторое (достаточно неплохое) приближение для формулы

image

Сегодня данная реализация уже хорошо известна, и стала она такой после появления в коде игры Quake III Arena в 2005 году. Её создание когда-то приписывали Джону Кармаку, но выяснилось, что корни уходят намного дальше – к Ardent Computer, где в середине 80-ых её написал Грег Уолш. Конкретно та версия кода, которая показана выше (с забавными комментариями), действительно из кода Quake.
В этой статье мы попробуем разобраться с данным хаком, математически вывести эту самую константу и попробовать обобщить данный метод для вычисления произвольных степеней от -1 до 1.

Да, понадобится немного математики, но школьного курса будет более, чем достаточно.
Читать дальше →
Total votes 212: ↑210 and ↓2+208
Comments188

Стоимость недвижимости на тепловых картах

Reading time8 min
Views55K

В статье рассказано о процессе создания тепловой карты цен по продаже недвижимости для Москвы и Санкт-Петербурга.


Тепловая карта цен Москвы


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

Читать дальше →
Total votes 126: ↑124 and ↓2+122
Comments78

InnoDB cluster — оно работает, и вроде бы именно так, как обещали

Reading time6 min
Views15K

Я занимаюсь АТСками. И как-то так сложилась, что с самого первого заказа от меня хотели отказоустойчивости. Одним из ключевых компонентов современной АТС (как и любой информационной системы, наверное) является БД, где хранятся как данные о текущем состоянии системы, так и всякие конфигурационные параметры. Естественно, падение БД приводит к поломке всей системы. Начиналось все с MASTER-MASTER репликации в MySQL (исключительно для оперативности переключения), потом были эксперименты с MySQL over DRBD. Все это жило в pacemaker/corosync инфраструктуре. Там ездили IP-адреса, шлюзы и прочая лабудень. Со временем оно даже стало работать как-то более-менее устойчиво. Но тут мне попалась пара серверов, на которых DRBD сделать было нельзя, в MASTER-MASTER я разочаровался довольно давно (постоянно она у меня ломается, такая репликация), а без отказоустойчивой БД терялся весь смысл решения. На глаза мне попалось название InnoDB cluster и я решил: "была-не-была". Что из этого получилось — смотрите под катом.

Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments25

64-битная Windows — это очень просто

Reading time2 min
Views13K
Перевод поста piers7 «64 Bit Explained».

Послушайте, в этом правда нет ничего сложного.

Все программы находятся там же, в %ProgramFiles%, кроме случаев, когда вам требуется 32-битная версия, которая находится в %ProgramFiles(x86)%, за исключением ситуаций, когда дело касается 32-битной машины, и в этом случае они по-прежнему в %ProgramFiles%.

Все эти библиотеки, DLL, по-прежнему находятся в %SystemRoot%\System32, просто теперь они 64-битные. Ну а 32-битные, они вот, в %SystemRoot%\SysWOW64. Вы ещё следите за объяснением? Да, а 16-битные всё так же хранятся в %SystemRoot%\System – перемещать их в иное место было бы странным.
Читать дальше →
Total votes 227: ↑175 and ↓52+123
Comments115

Nginx и https. Получаем класс А+

Reading time4 min
Views162K
image

Недавно вспомнилось мне, что есть такой сервис — StartSsl, который совершенно бесплатно раздаёт trusted сертификаты владельцам доменов для личного использования. Да и выходные попались свободные. В общем сейчас напишу, как в nginx настроить HTTPS, чтобы при проверке в SSL Labs получить рейтинг А+ и обезопасить себя от последних багов с помощью выпиливания SSL.

Итак, приступим. Будем считать, что у вы уже зарегистрировались на StartSsl, прошли персональную проверку и получили вожделенный сертификат. Для начала опубликую итоговый конфиг, а после этого разберу его.
Читать дальше →
Total votes 61: ↑52 and ↓9+43
Comments85

Экзотичные заголовки HTTP

Reading time12 min
Views108K

Привет Хабрахабр! В этой статье будут наглядно продемонстрирован результат применения некоторых важных и экзотичных HTTP заголовков, большинство из которых связаны с безопасностью.
Читать дальше →
Total votes 83: ↑80 and ↓3+77
Comments35

Почему ваш любимый мессенджер должен умереть

Reading time18 min
Views328K
image
Кладбище мессенджеров, на котором обязательно должны оказаться Skype, Viber, WhatsApp, Hangouts, ooVoo, Apple iMessage, Telegram, Line, Facebook messenger и еще сотни мессенджеров, которым только предстоит выйти в ближайшее время.

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

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

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

image

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


Читать дальше →
Total votes 260: ↑230 and ↓30+200
Comments357

Писать веб-сайты на ассемблере полезно и приятно

Reading time5 min
Views139K

Конечно, многие скажут, что это ни-ни и писать для веба нужно только на PHP, ну или на один из модерных языках Питон, Руби, Node.js и т.д.


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


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


Раньше у меня уже было веб-приложение на ассемблере — CMS для малого сайта. Только оно работает в режиме "один пишет, многие читают". При том, использует CGI интерфейс и поэтому "многие" читать одновременно тоже не получается.

Читать дальше →
Total votes 156: ↑126 and ↓30+96
Comments429

Content Security Policy, для зла

Reading time2 min
Views16K
Есть такой специальный хедер для безопасности вебсайтов CSP.

CSP ограничивает загрузку каких либо ресурсов если они не были пре-одобрены в хедере, то есть отличная защита от XSS. Атакующий не сможет загрузить сторонний скрипт, inline-скрипты тоже отключены…

На уровне браузера вы можете разрешить только конкретные урлы для загрузки а другие будут запрещены. Помимо пользы этот механизм может принести и вред — ведь факт блокировки и есть детекция! Осталось только придумать как ее применить.
Читать дальше →
Total votes 42: ↑35 and ↓7+28
Comments20

Генератор админок

Reading time14 min
Views21K

Кратко суть проблемы: нужно было много админок, написал генератор админок.


Как работает:


  • описали сущности в JSON;
  • сгенерировали схему БД (PostgreSQL);
  • сгенерировали процедуры для БД;
  • сгенерировали сервер (NodeJS или PHP);
  • сгенерировали админку (HTML файл);
  • накатили, задеплоили, скопировали все это;
  • можно приступать к работе;

Содержание:


  • как дошёл до этого;
  • почему не взял готовое решение;
  • что получилось;
  • что НЕ получилось;
  • как оно работает;
  • про UX;
Читать дальше →
Total votes 41: ↑39 and ↓2+37
Comments13

«Веб — это самая сложная платформа в истории человечества» — интервью с Вадимом Макеевым из Opera

Reading time32 min
Views26K


В этом выпуске «Без слайдов» гостем выступил Вадим Макеев aka pepelsbey, евангелист компании Opera Software, один из самых известных фронтенд-людей в стране, организатор многих мероприятий в индустрии.

Мы успели обсудить:
  • эволюцию WebKit;
  • путь Microsoft и новую модель браузера;
  • архитектуру современных браузеров;
  • как Opera выбирала между WebKit и Blink;
  • стандартизацию в вебе;
  • насколько трудна работа веб-разработчика;
  • JavaScript и его «продолжения»;
  • jQuery, и почему он все еще нужен;
  • HTTP/2;
  • ритм жизни евангелиста;
  • мобильный веб и Opera Mini;


Интервью взято в феврале, но руки дошли до публикации только сейчас.

Видео-версия нашей беседы вот тут:


А для тех, кто предпочитает читать, — под катом расшифровка нашей беседы.

Читать дальше →
Total votes 39: ↑30 and ↓9+21
Comments35

Hugin — отличная бесплатная программа для создания панорам

Reading time7 min
Views91K


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


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


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

Let's panoramas!
Total votes 32: ↑31 and ↓1+30
Comments52

Серверы в Нидерландах для Хабра бесплатно на декабрь: E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps 10TB — $29 / месяц

Reading time4 min
Views15K
В отличии от общепринятого тренда, в этом году в Black Friday мы анонсировали начало предоставления новой услуги, полноценного аналога выделенных серверов, серверов с выделенным накопителем, которые превосходят устаревшие G850 и даже Е3-1230 по производительности в разы:

Чёрные серверы в Нидерландах с чёрной пятницы (предзаказ): 6х2.20GHz 10GB DDR4 240GB SSD 1Gbps 10TB — $29 / месяц.

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

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

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

image
Читать дальше →
Total votes 36: ↑24 and ↓12+12
Comments79

Lingvo API: словари ABBYY в облаке Windows Azure

Reading time6 min
Views8.3K
Думаем, читателям нашего блога не нужно рассказывать подробно, что такое словарь ABBYY Lingvo. C этого продукта началась компания ABBYY 27 лет назад. Сначала словарь можно было использовать только на компьютерах, потом появились мобильные приложения и онлайн-сервисы. Недавно мы открыли доступ к словарям Lingvo для сторонних разработчиков на сайте https://developers.lingvolive.com – пока в бесплатном бета режиме.

Под катом мы подробнее расскажем о том, как мы работали над этим сервисом и как его можно использовать.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments9

Обзор WD My Cloud 2 Tb. NAS или облако? А может вместе?

Reading time5 min
Views139K
Начну с предыстории…

Примерно год назад очень мне захотелось заиметь NAS. Точнее хотелось мне уже давно, но вот «очень» захотелось именно тогда. Я как раз смарт-ТВ купил и окончательно решил — нужен NAS. Ну, чтобы фильмы в нём хранились, сами туда с торентов качались, а потом круглосуточно раздавались. Плюс архив фоток и музыки там же держать. Ну и ещё чего-нибудь. Посмотрев на ценники уже готовых устройств типа только добавь воды WD HDD – я ужаснулся и принял решение собирать сам. Тем более это полёт для творчества и приобретение новых навыков. Купил материнку с уже распаянным на ней двухядерным Celeron 847, к ней недорого памяти с рук аж 4 гига и супер корпус Antec ISC 300-65 (тоже БУ, но в идеальном состоянии). HDD, понятное дело, был выдернут из системника – всё равно он там был лишний. WD, кстати. Зелёный. Накатил сначала NAS4Free. Но она не очень хорошо поддерживал DLNA, причём даже с костылями. Затем поставил Ubuntu Server 12.04… Тут, кстати, надо уточнить… Я ЧИСТЫЙ ВИНДОУЗЯТНИК! До того момента linux я видел только на фотографиях. Соответственно на настройку типовой задачи: файл-сервер плюс торрент-качалка-раздавалка – у меня ушло около четырёх дней. Ну… в совокупности можно прибавить ещё пару-тройку дней связанных с дополнительными ковыряниями и переустановкой в связи с неудачным апгрейдом до 14.04. Ну да оставим сию историю поржать бородатым админам. И вот теперь у меня эта штука стоит в коридоре в шкафу, сушит в нём воздух, жрёт электричество и на 99% простаивает. При этом все действия я провожу со своим uNAS’ом только либо через «проводник», либо Transmission GUI. Для того, чтобы что-то настроить приходиться каждый раз подключаться по SSH, вспоминать где валяются и как называются файлы с настойками и гуглить, гуглить и ещё раз гуглить. И это Я, технически достаточно образованный гражданин с большим количеством свободного времени. А что делать другим? В общем иногда хочется изящного решения…


Читать дальше →
Total votes 35: ↑27 and ↓8+19
Comments39

Бюджетный NAS WD My Cloud: обновление функциональности с новой версией ОС

Reading time6 min
Views26K
Я уже несколько раз в том числе в блоге iCover на Geektimes писал, что считаю WD My Cloud лучшим бюджетным NAS, который можно купить нетребовательному пользователю для удовлетворения ежедневных потребностей. Посудите сами, по цене, чуть большей, чем стоимость такого же внешнего диска, мы получаем хорошее и надежное устройство, способное служить файлохранилищем для всей семьи. Причем, не просто служить, а еще и обрастать дополнительной функциональностью по мере выхода новых прошивок.



В интернете можно найти множество обзоров этого устройства. Однако в сентябре WD выкатило обновление My Cloud OS 3, о котором я хотел бы написать более подробно. Потому что оно делает предыдущие обзоры несколько устаревшими.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments12

PHP-фреймворк Badoo

Reading time10 min
Views29K
Код нашего сайта повидал уже не одну версию PHP. Он неоднократно дополнялся, переписывался, модифицировался, рефакторился — в общем, жил и развивался своей жизнью. В это время в мире появлялись и исчезали новые best practice, подходы, фреймворки и тому подобные явления, облегчающие жизнь разработчику и готовые решить все основные проблемы, возникающие в процессе создания веб-сайтов.
В этой статье мы расскажем о нашем пути: как был организован код изначально, какие возникали проблемы и как появился текущий фреймворк.

Что было


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

С архитектурной точки зрения это выглядело так: были объекты страниц, наследуемые от целой иерархии базовых классов, отвечающих за инициализацию окружения, сессии, пользователя и т.п. Каждая страница сама решала, когда, как и что ей выводить, делать редирект и т.п. В иерархии базовых классов было собрано много вспомогательных функций для инициализации и генерации стандартных блоков страниц, проверки пользователей, показа промежуточных промо-страниц и т.п. Со временем большинство из них было переопределено наследниками до неузнаваемости, что в разы усложнило и понимание того, как работает сайт, и саму поддержку кода.
Читать дальше →
Total votes 73: ↑56 and ↓17+39
Comments39

WebRTC: Делаем peer to peer игру на javascript

Reading time13 min
Views38K
Недавно мне довелось поработать над прототипом видеочата. Это был отличный повод поближе познакомиться с концепциями WebRTC и опробовать их на практике. Как правило, когда говорят про WebRTC, подразумевают организацию аудио- и видеосвязи, но эта технология может применяться и для других интересных вещей. Я решил попробовать сделать peer-to-peer игру и поделиться опытом ее создания. Видео того что получилось и подробности реализации под катом.


Читать дальше →
Total votes 94: ↑92 and ↓2+90
Comments52

Information

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