Search
Write a publication
Pull to refresh
3
0
Дмитрий Куликов @DmitryKulikov

User

Send message

Как запустить программу без операционной системы

Reading time13 min
Views185K

Так вышло, что в нашей статье, описывающей механизм опроса PCI шины, не было достаточно подробно описано самого главного: как же запустить этот код на реальном железе? Как создать собственный загрузочный диск? В этой статье мы подробно ответим на все эти вопросы (частично данные вопросы разбирались в предыдущей статье, но для удобства чтения позволим себе небольшое дублирование материала).

В интернете существует огромное количество описаний и туториалов о для того как написать собственную мини-ОС, даже существуют сотни готовых маленьких хобби-ОС. Один из наиболее достойных ресурсов по этой тематике, который хотелось бы особо выделить, это портал osdev.org. Для дополнения предыдущей статьи про PCI (и возможности писать последующие статьи о различных функциях, которые присутствуют в любой современной ОС), мы опишем пошаговые инструкции по созданию загрузочного диска с привычной программой на языке С. Мы старались писать максимально подробно, чтобы во всем можно было разобраться самостоятельно.

Итак, цель: затратив как можно меньше усилий, создать собственную загрузочную флешку, которая всего-навсего печатает на экране компьютера классический “Hello World”.

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

Некоторые простейшие принципы автовекторизации

Reading time21 min
Views28K
Предыдущий мой пост был посвящен цикловым перестановочным оптимизациям, проблемам распознавания циклов, разрешению неоднозначности при работе с памятью, определению и важности зависимостей. Теперь я хочу сделать обзор одной из самых эффективных цикловых оптимизаций — автовекторизации. Хочется обсудить вопросы эффективности оптимизации, а также попытаться понять, какие факторы эту эффективность определяют. Всем, кому это интересно – добро пожаловать. При обсуждении я буду ориентироваться на интеловский автовекторизатор и автовекторизатор gcc 4.7.2. gcc я буду исследовать, чтобы подтвердить, что те принципы векторизации, которые я здесь пытаюсь сформулировать, имеют достаточно общую природу. Заодно мне, конечно, хочется понять уровень автовекторизации в gcc. Тут, конечно, есть некий элемент неравенства, поскольку я использую последний компилятор Интел, но не самую топовую версию gcc, но в основном я буду ориентироваться при сравнении на SSE инструкции. (Кстати, Intel активно участвует в разработке автовекторизатора gcc). Поскольку Intel и интеловский компилятор мне ближе, то ему я уделю кое-где больше внимания. Я не претендую на то, что я векторизаторный гуру и буду рад, если кто-то увидит мои ошибки и меня поправит. Букв будет много.
Читать дальше →

WebKit для разработчиков

Reading time8 min
Views144K


Для многих из нас, разработчиков, WebKit — черный ящик. Мы бросаем в него HTML, CSS, JS и кучу изображений, и WebKit, как-то… магически, выдает нам веб-страницу, которая выглядит и работает хорошо.
Но на самом деле, как говорит мой коллега Илья Григорик:
Веб-кит не является черным ящиком. Это — белый ящик. И не просто белый, но и открытый ящик.
Так-что, давайте попробуем разобраться в некоторых вещах:

Быстрое разверытвание среды разработки для Ruby on Rails

Reading time3 min
Views7.4K
Привет хабражители. Если вам надоело постоянно устанавливать на новых машинах с разными ОС одно и тоже rails окружение с десятками зависимостей и кучей пакетов, то предлагаю вам ознакомится с интересным решением от rails-core разработчиков. На вашей хост-машине нужно иметь лишь Vagrant и Virtual Box.
Читать дальше →

MapReduce для обработки слабоструктурированных данных в HDInsight

Reading time8 min
Views5.3K
В данном примере мы разберем создание и выполнение типового задания MapReduce в облачной реализации Hadoop от Microsoft, которая носит название HDInsight.
В предыдущем примере мы создали 3-узловой кластер Hadoop и загрузили абстрактный журнал слабоструктурированного формата, который сейчас предстоит обработать. Журнал представляет собой в общем случае большой (в нашем конкретном примере маленький, но на принципиальную демонстрацию идеи это не влияет) текстовый файл, содержащий строки с признаками TRACE, DEBUG, INFO, WARN, ERROR, FATAL. Наша элементарная задача будет состоять в том, чтобы подсчитать количество строк с каждым признаком, т.е. сколько раз возникала ситуация WARN, сколько ERROR и т.д.
Читать дальше →

Полезные сниппеты на HTML5

Reading time4 min
Views84K
Эта подборка полезных сниппетов, использующих HTML5, может помочь вам улучшить ваш сайт.

Автозаполнение в текстовых полях


Используя HTML5-элемент datalist вы можете создать текстовое поле с автозаполнением. Очень удобно!
<input name="frameworks" list="frameworks" />

<datalist id="frameworks">
	<option value="MooTools">
	<option value="Moobile">
	<option value="Dojo Toolkit">
	<option value="jQuery">
	<option value="YUI">
</datalist>

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

Одноэкземплярные приложения на Qt

Reading time3 min
Views27K
Сейчас я активно пишу под Qt. И встала у меня задачка проверить при запуске приложения, а не запущено ли оно уже. Под линуксом. Велосипеды городить не хотелось, хотелось родить что-то используя готовые классы Qt, чтобы сразу было кроссплатформенно. В винде, например, есть готовое решение — именованные мьютексы (или семафоры, неважно, главное именованные). Стал гуглить. Ага, в Qt есть нечто подобное, называется QSystemSemaphore.
Читать дальше →

Записи докладов с конференций по высоким нагрузкам HPC

Reading time1 min
Views17K
Записи с последней конференции HPC — High Performance Conference, состоявшейся 6 декабря 2012, никак не анонсировались, хотя заслуживают внимания.

Под катом видеозаписи следующих докладов:

  1. Практические вопросы использования NOSQL в высоконагруженном проекте
    Дмитрий Ананьев, Руководитель группы разработки новых сервисов, Мамба
  2. Как работает «умная живая миграция» в Jelastic
  3. Дмитрий Лазаренко, Директор R&D, Jelastic Russia
  4. Parallels Cloud Server как платформа для высокопроизводительных систем
    Дмитрий Мишин, Team-lead отдела серверной виртуализации, Parallels
  5. Облачная платформа Windows Azure для высоконагруженных проектов
    Владимир Юнев, Technical evangelist, DPE, Microsoft Russia


и одно видео с фестиваля профессионального развития BitByte:

  1. Badoo Desktop: оптимизация приложения на миллион юзеров
    Руководитель проекта десктопных приложений компании Badoo.



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

Виртуализация сети в Hyper-V. Концепция

Reading time9 min
Views42K
В Windows Server 2012 появилась технология виртуализации сети (Network Virtualization, NV), обеспечивающая возможность виртуализации на принципиально новом уровне – уровне сетевого сегмента. В отличие от привычной серверной виртуализации NV позволит вам виртуализовать IP-подсети и полностью скрыть от виртуальных машин (ВМ) и приложений внутри ВМ реальную IP-адресацию, используемую в вашей инфраструктуре. При этом ВМ по-прежнему могут взаимодействовать между собой, с другими физическими хостами, с хостами в других подсетях.
Читать дальше →

Биржа вычислительных ресурсов

Reading time3 min
Views24K


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

О том, что такое биржа и чем она отличается от обычного рынка, на Хабре много рассказывалось. Прочитайте, например, серию статей IPO for dummies. Отмечу лишь, что на бирже идёт торговля стандартизированным товаром, покупатели и продавцы конкурируют только по цене.

Товаром на бирже может быть всё, что угодно: зерно, металлы, валюта, ценные бумаги и т. д. В форме биржи, как наиболее справедливой и удобной, торгуют seo-ссылками, баннерными показами, электронной валютой. Так почему же не торговать тем, что лежит в основе IT-индустрии – вычислительными ресурсами.
Читать дальше →

intro.js — пошаговое руководство для веб-страницы

Reading time1 min
Views52K


Эта маленькая библиотека позволяет очень просто создать пошаговое введение для сайта или приложения. Достаточно добавить атрибуты data-intro и data-step с описанием и номером шага соответственно к нужным элементам страницы. Вот так:

<a href='http://google.com/' data-intro='Hello step one!' data-step='1'></a>
Читать дальше →

Defense Distributed получила лицензию на производство оружия

Reading time2 min
Views41K


Компания Defense Distributed занимается разработкой и распространением чертежей деталей огнестрельного оружия, которые можно распечатать на 3D-принтере. Теперь у неё есть официальная лицензия на производство огнестрельного оружия, и она может распространять чертежи совершенно легально. Изготовление оружия дома для собственных нужд по американским законам тоже вполне законно.

Хотя пока рано говорить об изготовлении сколько-нибудь серьёзного оружия целиком из пластика, такие детали как магазины, рукоятки и другие детали, не испытывающие экстремальных нагрузок, вполне можно распечатать на обычном 3D-принтере. Вот так сейчас выглядит каталог моделей Defense Distributed.
Читать дальше →

Что такое алгоритмы?

Reading time1 min
Views44K
Я учился в Канаде (в моих старых постах на Хабре можно проследить за тем процессом) благодаря стипендии правительства Казахстана под названием «Болашак» (каз. «будущее»). Ребята с сайта essay.kz совместно с администрацией этой стипендии регулярно приглашают выпускников «Болашака» и снимают мини-лекции. Недавно позвали и меня, решил рассказать об алгоритмах.

На мой взгляд вышло довольно сумбурно, но многим понравилось. Вот примерный план лекции:

  • Что такое информатика и computer science?
  • Что такое алгоритм?
  • Лучшие решения обычно не очевидны
  • Машина Тьюринга и фундаментальные ограничения копьютеров
  • Что такое простые и сложные задачи?
  • Задача Коммивояжера
  • Почему языки программирования не похожи на человеческие языки?


Видео разбито на две части (один, два). Чтобы пропустить введение – начинайте смотреть с 2:56.

Часть 1:


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

SIEM для ИТ и ИБ

Reading time10 min
Views12K
С появлением первых средств защиты информации возникли первые насущные вопросы: как узнать, что возведенные баррикады работают и защищают? как быстрее реагировать на оповещения? как понять, какие угрозы удалось предотвратить? Работает ли наш файерволл, можно узнать, выполнив ICMP ping: если правила в ACL (access control list) работают, то ответов, содержащих echo reply, быть не должно. Можно через консоль устройства просмотреть журнал событий, разбирая сотни или тысячи строк вручную и пытаясь увидеть отраженную или выявленную угрозу.
Читать дальше →

Сайты-неваляшки, или Приглашаем на FailOver Conference 4 апреля

Reading time2 min
Views4.9K
«Быстро поднятое не считается упавшим!» (народная мудрость)

Понятие «FailOver» должно быть знакомо любому грамотному системному администратору. Резервные серверы, каналы, сценарии быстрого переключения на запасное оборудование… Одним словом – отказоустойчивость.

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

Про многосерверные конфигурации, гео-распределенные кластеры много пишется на том же Хабре, проводятся специализированные конференции (тот же HighLoad++, например).

А как быть средним и маленьким проектам? Для них все это может быть слишком сложно и дорого, а обеспечение отказоустойчивости — не менее важная задача. «Упавший» интернет-магазин потеряет клиентов и реальные деньги.

Хотите знать, как не «падать» (или — по крайней мере — быстро подниматься :)) — приходите или участвуйте онлайн в FailOver Conference 4 апреля!

Подробности — под катом.

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

Как мы выбрали и реализовали WebDAV в Яндекс.Диске

Reading time4 min
Views96K
Уже в момент запуска Яндекс.Диск дал многим разработчиками возможность использовать его в своих приложениях и программах. И обеспечивает это то, что протоколом для десктопных клиентов Диска мы выбрали WebDAV.

Так как именно протокол определяет то, как общаются между собой программы и сервер, от его выбора зависит примерно всё. И то, как будут устроены клиенты, и то, какие возможности работы с файлами у них будут.

Красная кнопка — WebDAV

Сегодня мы хотим рассказать о причинах, которые остановили наш выбор именно на WebDAV и сделали его протоколом для клиентов Яндекс.Диска.
Читать дальше →

«Address Already in Use» или как избежать проблем при завершении TCP соединения

Reading time6 min
Views39K
Корректное отключение

Для корректного завершения сетевого подключения обе стороны должны послать пакеты с сигналом о завершении (FIN), которые указывают что стороны не будут больше отсылать данные, также каждая сторона должна подтвердить (ACK) получение сигнала о завершении сетевого обмена данными. FIN инициируется когда приложение вызывает метод close(), shutdown() или exit(). После завершения работы метода close() ядро переходит в режим ожидания подтверждения от второй стороны приема сигнала о завершении. Это делает возможной ситуацию когда процесс инициировавший отключение будет завершен прежде чем ядро освободит рессурсы связанные с подключением, и снова разрешит использовать порт для связывания с другим процесоом (в этом случае, при попытке использования порта мы получим исключение AddressAlreadyInUse).


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

Безопасность приложения: это почти просто

Reading time18 min
Views39K
simple science

— Дай мне справку, что моя программа безопасна.

— Нет проблем! А что ты для этого делал?

— Э… Ну… Это… Ничего…

— А почему ты тогда думаешь, что она безопасна?

— Ну, ты проверь!

— Нет проблем! Все удовольствие будет стоить X0000 долларов.

— ?!

О статье


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

Первая ее часть посвящена безопасному программированию.

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

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

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

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

Внимание! Статья большая и подразумевает внимательное прочтение.

Подтверждаю свою готовность внимательно прочитать многабукаф

Git для Фоток. Большие репозитарии в Git

Reading time7 min
Views22K
Идея использовать git для хранения всех своих фотографий.

Чего хотелось добиться?


  1. Скидывать фотки одной кучей (DCIM), а когда будет время сортировать по папкам.
  2. Скинуть фотки с одного компа, а работать с ними с другого.
  3. Чтобы перемещение-переименование фоток и папок волшебным образом синхронизировалось на всех компьютерах.
  4. Чтобы можно было редактировать фотки, но иметь возможность восстановить оригинал.
  5. Чтобы сохранялась история правок.

Как оказалось, GIT с большим трудом справляется с этой задачей.
Читать дальше →

Технология Augmented Reality. Вопросы внедрения для GPS-навигации

Reading time9 min
Views4.5K
Добрый вечер, уважаемые хабровчане! Не так давно я прочитал довольно объемную работу на тему «Технология Augmented Reality. Вопросы внедрения для GPS-навигации» и хотел бы представить основные моменты сообществу. Главная цель — получение обоснованной критики в сторону автора. Итак, с вашего позволения и позволения автора — Ларюшиной Юлии Дмитриевны, я начинаю.
rates

Для людей, неосведомленных с предметом разговора: Дополненная реальность (англ. augmented reality, AR) — термин, относящийся ко всем проектам, направленным на дополнение реальности любыми виртуальными элементами. Дополненная реальность — составляющая часть смешанной реальности (англ. mixed reality), в которую также входит «дополненная виртуальность» (когда реальные объекты интегрируются в виртуальную среду). Самые распространённые примеры дополненной реальности — параллельная лицевой цветная линия, показывающая нахождение ближайшего полевого игрока к воротам при телетрансляции футбольных матчей, стрелки с указанием расстояния от места штрафного удара до ворот, нарисованная траектория шайбы во время хоккея и т. п.
Читать дальше →

Information

Rating
Does not participate
Location
Саров (Нижегородская обл.), Нижегородская обл., Россия
Date of birth
Registered
Activity