Как стать автором
Обновить
0
0
Илья @Areldar

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

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

Lock-free структуры данных. Диссекция очереди

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

Со времени предыдущего поста из жизни lock-free контейнеров прошло немало времени. Я рассчитывал быстро написать продолжение трактата об очередях, но вышла заминка: о чем писать, я знал, но реализации на C++ этих подходов у меня не было. «Не годится писать о том, что сам не попробовал», — подумал я, и в результате я попытался реализовать в libcds новые алгоритмы очередей.
Сейчас настал момент, когда я могу аргументированно продолжить свой цикл. В данной статье закончим с очередями.

Кратко напомню, на чем я остановился. Были рассмотрены несколько интересных алгоритмов lock-free очередей, а под занавес приведены результаты их работы на некоторых синтетических тестах. Главный вывод — всё плохо! Надежды на то, что lock-free подход на магическом compare-and-swap (CAS) даст нам пусть не линейный, но хотя бы какой-то рост производительности с увеличением числа потоков, не оправдались. Очереди не масштабируются. В чем причина?..
Читать дальше →
Всего голосов 53: ↑52 и ↓1+51
Комментарии16

Адреса памяти: физические, виртуальные, логические, линейные, эффективные, гостевые

Время на прочтение6 мин
Количество просмотров109K
Мне периодически приходится объяснять разным людям некоторые аспекты архитектуры Intel® IA-32, в том числе замысловатость системы адресации данных в памяти, которая, похоже, реализовала почти все когда-то придуманные идеи. Я решил оформить развёрнутый ответ в этой статье. Надеюсь, что он будет полезен ещё кому-нибудь.
При исполнении машинных инструкций считываются и записываются данные, которые могут находиться в нескольких местах: в регистрах самого процессора, в виде констант, закодированных в инструкции, а также в оперативной памяти. Если данные находятся в памяти, то их положение определяется некоторым числом — адресом. По ряду причин, которые, я надеюсь, станут понятными в процессе чтения этой статьи, исходный адрес, закодированный в инструкции, проходит через несколько преобразований.



На рисунке — сегментация и страничное преобразование адреса, как они выглядели 27 лет назад. Иллюстрация из Intel 80386 Programmers's Reference Manual 1986 года. Забавно, что в описании рисунка есть аж две опечатки: «80306 Addressing Machanism». В наше время адрес подвергается более сложным преобразованиям, а иллюстрации больше не делают в псевдографике.
Читать дальше →
Всего голосов 51: ↑49 и ↓2+47
Комментарии11

Обзор чехла-батареи на 3000 мАч для Sony Xperia Z1

Время на прочтение5 мин
Количество просмотров37K
Компактная внешняя батарея-чехол для совсем не компактного смартфона. Изучаем свежий продукт от Mugen Power.
Читать дальше →
Всего голосов 13: ↑7 и ↓6+1
Комментарии0

Изобретение социальных сетей

Время на прочтение4 мин
Количество просмотров35K
Не первый год любимый пример инвесторов о бестолковости стартапщиков: предложили идею еще одной социальной сети. Хотя недавно некий Secret (где сообщения анонимны) вдруг взял и нашумел. Или того хуже — сервис по отправке трех двух букв получил инвестиции в $1.2M. Мне кажется, что на самом деле варьирование различных параметров социальной сети — интересное поле для мысленных экспериментов. Вот и захотелось перечислить все такие параметры.
Читать дальше →
Всего голосов 48: ↑34 и ↓14+20
Комментарии37

UG007: мини-ПК с Bluetooth, двухъядерным процессором и Android 4.1.1 за 60 у.е

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


Да, Raspberry Pi пока что вне конкуренции — практически нет миниатюрных ПК подобного класса за подобную цену. Но чем дальше в лес с течением времени появляется все больше интересных моделей мини-ПК, которые являются более функциональными, чем указанная модель. Одним из интересных вариантов является UG007, это миниатюрный ПК в форм-факторе флешки, который может похвастаться двухъядерным процессором Rockchip RK3066 с частотой работы ядра 1,6 ГГц, 1 ГБ ОЗУ и 8 ГБ внутренней памяти.

Читать дальше →
Всего голосов 56: ↑49 и ↓7+42
Комментарии107

Жонглирование. Теория. Практика

Время на прочтение5 мин
Количество просмотров41K
Настороженно отношусь к непрофильным топикам, но решил написать этот по следующим причинам:
  • У жонглирования есть своя теория — стройная и математически привлекательная!
  • Мы живем не только работой. Жонглирование — отличное развлечение и разминка после долгого сидения за компом.
  • В пятницу приятно немного расслабиться и почитать не очень серьезные статьи. К тому же, будет чем заняться на выходные, особенно если у вас не было определенных планов.

Теория


Утверждать, что жонглирование — это последовательность бросков, все равно, что сказать, что музыка — это просто последовательность нот. Нельзя назвать это неправдой, но любой, хоть немного знакомый с музыкальной теорией, возмутится последним определением — столь поверхностным и недалеким.
Читать дальше →
Всего голосов 252: ↑242 и ↓10+232
Комментарии45

Odroid-X — мощная альтернатива Raspberry Pi

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


Сейчас уже никто не подвергает сомнению успех мини-компьютера Raspberry Pi. Почти сразу же после выхода этого мини ПК в свет, стали появляться новые модели мини-компьютеров, получившие свою долю покупателей. Нечто похожее случилось несколько лет назад и с нетбуками, которых сейчас великое множество. И что интересно, в случае с нетбуками, идея получить небольшое (и главное — недорогое) устройство для работы в Сети и с офисными программами как-то подзабылась. Очень скоро стали появляться нетбуки, стоимость которых превышала стоимость некоторых мощных ноутбуков. Видимо, подобная судьба ждет и мини-компьютеры.

Читать дальше →
Всего голосов 38: ↑33 и ↓5+28
Комментарии35

Нейронная сеть против DDoS'а

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

Предисловие


Некоторые из вас наверняка недавно проходили Stanford'ские курсы, в частности ai-class и ml-class. Однако, одно дело просмотреть несколько видео-лекций, поотвечать на вопросики quiz'ов и написать десяток программ в Matlab/Octave, другое дело начать применять полученные знания на практике. Дабы знания полученые от Andrew Ng не угодили в тот же тёмный угол моего мозга, где заблудились dft, Специальная теория относительности и Уравнение Эйлера Лагранжа, я решил не повторять институтских ошибок и, пока знания ещё свежи в памяти, практиковаться как можно больше.

И тут как раз на наш сайтик приехал DDoS. Отбиваться от которого можно было админско-программерскими (grep / awk / etc) способами или же прибегнуть к использованию технологий машинного обучения.

Далее пойдёт рассказ о создании нейронной сети на Python 2.7 / PyBrain и её применении для защиты от DDoS'а.

Читать дальше →
Всего голосов 177: ↑174 и ↓3+171
Комментарии46

GRUB всемогущий, или Делаем загрузочную флешку

Время на прочтение8 мин
Количество просмотров558K
Про сам grub, загрузочные флешки и особенно специальные утилиты для создания дисков написано уже не мало, но выглядят они узко направленными. Например только для создания флешки Windows 7, различные PEtoUSB, есть более универсальные как в этом топике. Куча утилит по сути устанавливают загрузчик grub, isolinux (реже BCDW или lilo, еще реже свой как Win7), и затем раскладывают предложенные ему файлы (Windows7,WindowsXP, Ubuntu и т.д.) по папкам. От сюда и требовательность к образам (как писали в комментариях к этому топику).

А между тем абсолютное большинство выложенных в интернете дисков (особенно USB) как раз и используют isolinux и grub, что мешает их просто объединять? да ничего!

Я постараюсь с примерами рассказать, как сделать загрузочную, установочную и просто Live флешку, причем все в одном без заточенных под конкретный дистрибутив утилит. И иметь возможность, при необходимости, легко добавить на флешку еще что-то, без очередного ее переформатирования.
image
(С) Картинка оттуда
Читать дальше →
Всего голосов 122: ↑113 и ↓9+104
Комментарии62

Исследуем Google Reader API

Время на прочтение6 мин
Количество просмотров2.3K
Возникла необходимость сделать интерфейс к гуглоридеру, отличный от стандартного. Использование стандартного ajax reader api не удовлетворило из-за коммерческих ограничений. API, описанное во множестве импортных блогов отказывалось нормально работать, поэтому на вооружение было взято расширение firebug всеми любимого браузера. В результате получилась небольшая подборка полезных для работы с ридером URLов, которыми хочу поделиться с общественностью.

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

Для реализации взаимодействия клиентского ajax-интерфейса с google.com/reader/ будем использовать посредника на php+curl.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии10

Консольные окна-«зомби», или как перезагрузить Windows без дурацких вопросов

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

Вчера я уже не первый раз столкнулся с забавной проблемой в Windows Server 2008 – после выхода из FAR Manager у меня осталось висеть консольное окно-«зомби».

Такое окно обладает поистине замечательным свойством – его нельзя закрыть. Кроме того, если у вас появилось такое окно, перезагрузить Windows у вас не получится – все ваши попытки будут заканчиваться появлением в Event Log сообщения The attempt by user ***\*** to restart/shutdown computer *** failed.

На фоне этого отсутствие соответствующего процесса в списке задач кажется такой мелочью… ;-)
Читать дальше →
Всего голосов 75: ↑65 и ↓10+55
Комментарии82

Flash для Android для ARMv6-процессоров

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


Если вы помните, Adobe заявляла, что не будет выпускать Flash для Android-устройств без поддержки инструкций ARMv7.

Так вот, возрадуйтесь, обладатели Android-устройств с ARMv6-процессорами!

Командой разработчиков Android Campus был выпущен порт Flash 10.1, адаптированный под многочисленные Android-устройства на базе процессоров с набором инструкций ARMv6. Ссылки, список поддерживаемых устройств и некоторые подробности под катом.
Читать дальше →
Всего голосов 57: ↑53 и ↓4+49
Комментарии63

50 цитат о программировании всех времён

Время на прочтение6 мин
Количество просмотров161K
Перевёл после прочтения комментариев к статье «О ненависти к C++». В цитатах можно найти ответы на большинство возникших там вопросов.

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

49. Lisp — это не язык, а строительный материал.
— Alan Kay

48. Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.
— Edward V Berard
Читать дальше →
Всего голосов 344: ↑336 и ↓8+328
Комментарии136

Альтернативные аллокаторы памяти

Время на прочтение13 мин
Количество просмотров91K
Написал Стивен Тови в 2:29 утра по программированию (шутка юмора Google Translate)
Вступление от себя: эта заметка, прорекламированная Алёной C++, предназначена в основном разработчикам игр для консолей, но будет, наверное, полезна и всем, кому приходится сталкиваться с экстремальным аллоцированием динамической памяти. Возможно, любители посравнивать управление памятью в C++ и Java тоже найдут над чем задуматься.

Оригинал с небезынтересной дискуссией в комментариях: altdevblogaday.org/2011/02/12/alternatives-to-malloc-and-new


Обязательная вступительная басня

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

Сейчас объясню, почему...
Всего голосов 75: ↑72 и ↓3+69
Комментарии59

Выполнение USSD запросов под Linux

Время на прочтение4 мин
Количество просмотров24K
Спасибо автору топика Проверка счета Киевстар модема в Linux который помог мне понять принцип работы модемов и способ работы с ними в линуксе. Мне как раз нужно было решить задачу отображения уровня сигнала, проверки баланса, пополнения счета с использованием 3ж модема. Но так как ставить на домашние машины пхп ради такой мелочи мне не хотелось, решил переписать скрипт под себя на Python, который есть в любом десктоп-линуксе из коробки.

Работать данный скрипт будет на любых модемах/телефонах которые поддерживают USSD без PDU кодирования. Для модемов требующих PDU-кодировку команд нужно написать функции-обертки аналогично php-скрипту из указаного выше топика. У меня к сожалению нету такого модема и проверить я бы не смог — потому писать не стал.

Проверена работа на 3G модеме ZTE MF100(должно работать с mf620, mf622, mf626, mf628) и тарифе Интернет 3G от Киевстара.
Читать дальше →
Всего голосов 41: ↑37 и ↓4+33
Комментарии19

Broadcom Crystal HD: аппаратное ускорение HD видео «от А до Я»

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

Думаю, многие знают, что HD (720p) H.264 видео так просто на нетбуке не посмотришь. Мощности Intel Atom просто не хватает на декодирование. Я использую свой Acer Aspire One в качестве видеоплеера во время командировок и длинных поездок и тоже с этим сталкивался. Есть несколько способов решить эту проблему:
  • перекодировать с более низким разрешением/битрейтом
  • использовать программные ухищрения
  • использовать аппаратное ускорение

Первый способ слишком медленный и унизительный (т.к. типичен для портативных плееров вроде iPod и т.п.).

Второй — не универсален и ограничен. Мне известны два способа — установка кодека CoreAVC и опережающий воспроизведение буфер Crystal Player-а (см. Настройка нетбука на максимальную производительность для HDTV). В принципе, это вполне сносное решение для 720p. Однако, есть два больших минуса: 100% загрузки процессора и полная несостоятельность в случае с 1080p.

Третий кажется мне наиболее «правильным». Можно сразу купить нетбук с Nvidia ION — универсальное решение, которое дает дополнительные плюшки вроде вычислений CUDA и возможности играть в 3D игры (впрочем, удовольствие на маленьком экранчике сомнительное). К сожалению, Nvidia ION-powered нетбуки появились лишь недавно и пока еще дороги. Да и что поделать, если уже купил себе нетбук без всяких «понтов»?

Есть выход! Называется он Broadcom Crystal HD, и «ускорить» им свой EEE PC или Aspire One вполне реально и дешево.
Читать дальше →
Всего голосов 85: ↑78 и ↓7+71
Комментарии93

Настройка нетбука на максимальную производительность для HDTV

Время на прочтение7 мин
Количество просмотров45K
Доброго времени суток, хабровчане!

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

Сам я тоже отношусь к упомянутым выше людям, поскольку пользуюсь одним из первых нетбуков (Asus EeePc 701), штатная частота его процессора 600 Мгц, и выше 810 она у меня не «гонится» — вылетает в BSOD. Кроме того, у него встроенная в чипсет видеокарта Intel GMA 900, не имеющая никакой аппаратной поддержки HD-видео. Update: RAM я докупил до 2х Гб. Поставленной задачей было — заставить заставить нетбук проигрывать файл следующих характеристик:
  • контейнер mp4
  • разрешение 1280х720 (HDTV 720p)
  • видео H264/AVC
  • звук AAC 160-250 Kbps
  • средний общий битрейт 1.9 Mbps
  • максимальный битрейт видео 14 Mbps

Читать дальше →
Всего голосов 46: ↑44 и ↓2+42
Комментарии98

Фонотека без iTunes и еще одна маленькая полезность

Время на прочтение2 мин
Количество просмотров13K
Я уже писал о том, что айфон как смартфон меня радует, а вот комплектный софт для РС от «Маленькой фруктовой компании» как-то не очень.

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

Читать дальше →
Всего голосов 25: ↑17 и ↓8+9
Комментарии52

Разработка и модификация прошивки для Android телефонов. Часть 2

Время на прочтение9 мин
Количество просмотров65K
В первой части мы научились перепаковывать официальную прошивку из формата RUU в формат пакета обновлений, что дало нам возможность использовать созданную нами прошивку, не опасаясь затирания модифицированного раздела восстановления (recovery rom). И тем временем, пока HTC воюет с хорошими ресурсами, мы продолжим изучать и улучшать прошивку.
В предыдущей части, хоть мы и создали прошивку, которая загружается и работает как часы, мы бы хотели расширить базовый функционал оной. Одним из самых востребованных расширений является поддержка работы с правами суперпользователя (root). Также сюда можно отнести интегрирование busybox. Кроме того, мы научимся запускать произвольные скрипты при старте системы и адаптируем ramdisk под свои нужды.

Busybox



busybox — это набор консольных unix утилит, ориентированный на малый размер и производительность, что так актуально для мобильных систем. Вместе с системой android поставляется свой набор утилит — toolbox, который предоставляет минимально необходимых функционал для системы, и как следствие более простой в количественном и функциональном плане. Наличие busybox в системе, с одной стороны, позволит нам, как разработчикам, чувствовать себя более комфортно при удаленной работе на устройстве, с другой, позволит писать сложные скрипты, и, например, реализовать механизм запуска собственных скриптов при загрузке, используя run-parts. Также стоит учитывать, что для некоторых android приложений (особенно те, которые используют root) наличие busybox — обязательно.
Читать дальше
Всего голосов 48: ↑48 и ↓0+48
Комментарии10

Android Soft. Часть 1: IM, book reader, системные утилиты

Время на прочтение3 мин
Количество просмотров4.8K
Android Soft
Одним из первых, после покупки нового телефона, встает вопрос софта.
Столько всего нужно поставить: месенджер, читалку книг и читалку рсс, файл-менеджер и многое многое другое. Android Market предлагает немаленький выбор бесплатных программ в каждой из категорий.

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

Эта серия постов расскажет про плюсы и минусы лучших программ в нескольких категориях. А на закуску — список must have программ которые должны быть (почти) у каждого.

Я не учел какую-то замечательную программу? Записал плюс в минусы? Пишите комментарии — пост будет обновляться, чтоб оставить действительно полезный след в истории хабра :)

Дамы и господа, заводите моторы маркеты.
Поехали
Всего голосов 54: ↑41 и ↓13+28
Комментарии87

Информация

В рейтинге
Не участвует
Откуда
Минск, Минская обл., Беларусь
Дата рождения
Зарегистрирован
Активность