Pull to refresh
0
0
Евгений Минеев @Mineev

User

Send message

Внешняя сортировка с O(1) дополнительной памяти

Reading time9 min
Views36K
Прочитав эту статью, я вспомнил, как писал внешнюю сортировку, которая использовала O(1) внешней памяти. Функция получала бинарый файл и максимальный размер памяти, которую она могла выделить под массив:

void ext_sort(const std::string filename, const size_t memory)

Я использовал алгоритм из Effective Performance of External Sorting with No Additional Disk Space:

  1. Разделим файл на блоки, которые помещаются в доступную память. Обозначим эти блоки Block_1, Block_2, …, Block_(S-1), Block_S. Установим P = 1.
  2. Читаем Block_P в память.
  3. Отсортируем данные в памяти и запишем назад в Block_P. Установим P = P + 1, и если P ≤ S, то читаем Block_P в память и повторяем этот шаг. Другими словами, отсортируем каждый блок файла.
  4. Разделим каждый блок на меньшие блоки B_1 и B_2. Каждый из таких блоков занимает половину доступной памяти.
  5. Читаем блок B_1 блока Block_1 в первую половину доступной памяти. Установим Q = 2.
  6. Читаем блок B_1 блока Block_Q во вторую половину доступной памяти.
  7. Объеденим массивы в памяти с помощью in-place слияния, запишем вторую половину памяти в блок B_1 блока Block_Q и установим Q = Q + 1, если Q ≤ S, читаем блок B_1 блока Block_Q во вторую половину доступной памяти и повторяем этот шаг.
  8. Записываем первую половину доступной памяти в блок B_1 блока Block_1. Так как мы всегда оставляли в памяти меньшую половину элементов и провели слияние со всеми блоками, то в этой части памяти хранятся M минимальных элементы всего файла.
  9. Читаем блок B_2 блока Block_S во вторую половину доступной памяти. Установим Q = S −1.
  10. Читаем блок B_2 блока Block_Q в первую половину доступной памяти.
  11. Объеденим массивы в памяти с помощью in-place слияния, запишем первую половину доступной памяти в блок B_2 блока Block_Q и установим Q = Q −1. Если Q ≥ 1 читаем блок B_2 блока Block_Q в первую половину доступной памяти и повторяем этот шаг.
  12. Записываем вторую половину доступной памяти в блок B_2 блока Block_S. Аналогично шагу 8, тут хранятся максимальные элементы всего файла.
  13. Начиная от блока B_2 блока Block_1 и до блока B_1 блока Block_S, определим новые блоки в файле и снова пронумеруем их Block_1 to Block_S. Разделим каждый блок на блоки B_1 и B_2. Установим P = 1.
  14. Читаем B_1 и B_2 блока Block_P в память. Объеденим массивы в памяти. запишем отсортированный массив назад в Block_P и установим P = P +1. Если P ≤ S, повторяем этот шаг.
  15. Если S > 1, возвращаемся к шагу 5. Каждый раз мы выделяем M минимальных и максимальных элементов, записываем их в начало и конец файла соответственно, а потом делаем то же самое с оставшимися элементами, пока не дойдем до середины файла.

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

Реализуем алгоритм на C++.
Читать дальше →
Total votes 28: ↑23 and ↓5+18
Comments9

Снимаем образы с картриджей для Dendy/Famicom/NES

Reading time7 min
Views132K
Ни для кого не секрет, что сейчас можно легко скачать эмулятор почти любой игровой консоли 80х-90х и поиграть в классические игры на компьютере, телефоне и многих других платформах. В сети легко можно найти и ROM'ы этих самых игр. Зачастую люди качают их и даже не задумываются, каким же образом кто-то однажды прочитал их из картриджа. В этой статье я и постараюсь рассказать, как же это делалось в случае с NES/Famicom, которая у нас была больше известна как «Денди», и покажу, как можно сделать это самостоятельно.

image

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

Робот на солнечных батареях использует песок для 3D-печати

Reading time1 min
Views7.8K


Наверное, это самый экологичный робот — осуществляет 3D-печать из природных материалов (почва и песок), используя при этом природную энергию (Солнце).

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

Под катом — видео и FAQ.
Читать дальше →
Total votes 87: ↑85 and ↓2+83
Comments184

Китайцы ворвались на рынок мини-компьютеров

Reading time1 min
Views34K


У Raspberry Pi и Cotton Candy появился китайский конкурент. Компьютер размером с флешку стоит 74 доллара — как раз посередине между Raspberry Pi (25 — 35 долларов) и Cotton Candy (200). Внутри — одноядерный процессор ARM Cortex A8 AllWinner A10 1.5GHz, графический чип Mali 400, 512 мегабайт DDR3 RAM и 4 гигабайта встроенной флеш-памяти. Есть полноразмерный слот USB, microUSB, кардридер micro TF, порт HDMI и беспроводной модуль WiFi 802.11b/g. Размеры «китайца» — 8.8 х 3.5 х 1.2 см, вес — 200 граммов.
Читать дальше →
Total votes 101: ↑96 and ↓5+91
Comments129

Пост ненависти о российских «онлайн-курсах» и мировых рекордах

Reading time2 min
Views2.4K
У меня просто нет слов.

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

Онлайн-курсы Stanford University, Berkley и MIT в доступном виде

MIT и Гарвард вкладывают 60 миллионов долларов в дистанционное обучение

John Resig уходит в non-profit KHAN academy

Да что говорить, великий SICP ( mitpress.mit.edu/sicp/full-text/book/book.html ) уже давно доступен как в текстовом так и в видео варианте.

А что же у нас?
Читать дальше →
Total votes 136: ↑94 and ↓42+52
Comments69

Механические клавиатуры

Reading time17 min
Views763K
Все мы давно ждем массового появления всевозможных кибер-перчаток и виртуальной реальности на каждом шагу, но все равно каждый день в офисе и дома нам приходится работать за такой банальной вещью, как обычная клавиатура.

А раз уж сталкиваешься с вещью регулярно, постепенно возникает вопрос — можно ли найти для работы какие-то более удобные варианты обычных клавиатур?

Итак, некоторое время назад я озаботился сбором информации о клавиатурах, и даже начал готовить информацию для статьи, но к сожалению (к счастью?) нашлась исчерпывающая статья о всех нюансах сразу, которую я решил перевести.

Механические клавиатуры. Путеводитель.

Читать дальше →
Total votes 323: ↑313 and ↓10+303
Comments331

Возможности роутера ZyXEL Keenetic на прошивке второго поколения NDMS v2.00

Reading time10 min
Views527K
Некоторое время назад на сайте ZyXEL в разделе загрузок для интернет-центра Keenetic появилась бета-версия прошивки под названием NDMS 2.0. Приглашение погонять ее получили также зарегистрированно-заинтересованные владельцы обычных «Кинетиков». В аннотации говорится, что это не очередное обновление, а второе поколение программной платформы, кардинально отличающееся от предыдущего и адресованное продвинутым пользователям. Наиболее интересное из заявленного (по сравнению с микропрограммами первого поколения):
  • Полнофункциональный механизм трансляции адресов (Full feature NAT) с поддержкой нескольких внешних IP-адресов; перенаправление портов с возможностью выбора порта назначения в локальной сети; переназначение ролей сетевых интерфейсов.
  • Поддержка множественных PPP-туннелей для доступа в Интернет и подключения к виртуальным частным сетям (VPN).
  • Возможность назначения нескольких дополнительных физических WAN-интерфейсов на порты встроенного коммутатора Ethernet.
  • Резервирование подключения к интернету через USB-модемы 3G/4G и дополнительно назначаемые WAN-интерфейсы.
  • Профессиональный интерфейс настройки через командную строку (Cisco like CLI). Все функции могут быть настроены с командной строки и сохранены в виде текстового файла.
  • Пакетная сборка прошивки «по требованию». Функциональность устройства выбирается пользователем в веб-интерфейсе устройства и прошивается автоматически.
Читать дальше →
Total votes 46: ↑44 and ↓2+42
Comments79

Беседа с Project Manager’ом Лилией Вершининой

Reading time1 min
Views2K
image

  • Ин. яз
  • Sales-опыт
  • Преподавание
  • Вхождение в Project Management
  • Изучение английского
  • Коммуникации
  • Работа с командой
  • Хакатон
  • MobileDev
  • Project Management
  • Консультант по карьерному росту
  • Психология
Total votes 42: ↑28 and ↓14+14
Comments24

30-й выпуск подкаста «Откровенно про IT карьеризм». Беседа с Сергеем Романовым про Филиппины

Reading time1 min
Views1.1K
image
  • Виза
  • Перелет
  • Собственность на Филиппинах
  • Особенности филиппинского менталитета
  • Английский язык
  • Где лучше жить и работать на Филиппинах
  • Транспорт
  • Безопасность в городах Филиппин
  • Образование
  • Филиппинский язык
  • Уровень жизни
  • Джипни
  • Филиппинская кухня и продукты
  • Медицина
  • Техника и интернет на Филиппинах
  • Цена на машины
  • Поиск рабочей силы
  • Внешность аборигенов
  • Развлечения
  • Тайфуны
  • Бюрократия и коррупция
Total votes 24: ↑19 and ↓5+14
Comments9

Новый кампус в Купертино

Reading time1 min
Views1.9K
На днях Стив Джобс выступал в зале совета Купертино, представлял новый проект кампуса. Apple выкупила массивный участок земли в другой части города и к 2015 году планирует построить новый кампус, который вместит 12000 человек, здание будет всего-лишь одно, в виде кольца. Apple утроит количество зеленых насаждений, вынесет почти все стоянки под землю. Старый кампус остается на месте, теперь там будет просто просторнее.

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

Total votes 59: ↑43 and ↓16+27
Comments60

Перевод выступления Дэвида Хейнемейерa Ханссонa на Startup School'2008

Reading time1 min
Views1.8K

Часть 1, часть 2

«Все, что вам нужно сделать – это решить чью-то проблему немного лучше, чем другие ребята. Предположим, вы открываете ресторан, итальянский ресторан. Он не обязательно должен быть самым крутым итальянским рестораном в мире. В нём должна быть вкусная еда и приятное обслуживание, чтобы люди в него ходили, а у вас был хороший бизнес. Мне кажется, что не так много людей пытаются создать просто хороший 'итальянский ресторан' в интернете.»

Дэвид Хейнемейер Ханссон, автор Ruby on Rails, рассказывает о стартапах — о завышенных целях и ожиданиях, о вариантах получения прибыли, о привлечении пользователей, о продаже стартапа.
Под катом также ссылки на русский текст, английский текст и видео с английскими субтитрами
Читать дальше →
Total votes 44: ↑38 and ↓6+32
Comments15

Советы начинающим птицеводам: анатомия Parrot AR.Drone

Reading time2 min
Views16K
Ну… не совсем анатомия — препарировать и копаться во внутренностях попугая пока он не грохнулся насмерть я не буду. Поговорим о строении квадрокоптера без излишней расчлененки.

Полмесяца назад я рассказывала о том, как заказала из Штатов шпионский беспилотник Parrot A.R.Drone. Полет дрона через океан на крыльях USPS прошел нормально, хотя и не без некоторой нервотрепки. И вот коробка со спящим в ней дроном — у меня:
Читать дальше →
Total votes 77: ↑64 and ↓13+51
Comments42

Microsoft Research Accelerators

Reading time4 min
Views2.5K


Research Accelerators — это набор инструментов для студентов, аспирантов, преподавателей и ученых. Они помогут в учебе, академической работе, изучении науки, анализе и визуализации данных, а также публикации результатов проделанной работы. Многие из инструментов поставляются с открытыми исходными кодами или имеют открытые интерфейсы для взаимодействия и расширения. Все это даёт возможность работать с самыми передовыми разработками инженеров и исследователей группы Microsoft Research.
Читать дальше →
Total votes 75: ↑56 and ↓19+37
Comments17

Microsoft судится с Google в Европе

Reading time2 min
Views1K


Да, крупные корпорации хлебом не корми, дай поспорить в суде. На Хабре как-то выкладывали интересную инфографику по поводу того, кто на кого подававал иск в суд из крупных компаний, занятых в мобильном бизнесе. Вероятно, если создать аналогичную иллюстрацию не только для мобильного рынка, но для ИТ-сферы вообще, то ничего не будет видно из-за стрелочек. Во всяком случае, здесь все судятся со всеми, и сейчас очень активно участвует в судебных процессах Microsoft. Ранее, если помните, эта корпорация стала предметом антимонопольного разбирательства в Европе, теперь Microsoft из обвиняемого превратилась в обвинителя. Софтверный гигант подал иск против Google, обвиняя корпорацию в неконкурентной работы на рынке поисковой рекламы.

Читать дальше →
Total votes 37: ↑31 and ↓6+25
Comments55

YouTube — один час в секунду

Reading time1 min
Views2.2K
Ранее Google создавали таблицы и графики для визуализации достижений пользователей YouTube. Теперь они запустили http://onehourpersecond.com — интерактивную коллекцию событий, которые происходят за «одну секунду YouTube».

Итак, за 1 секунду пользователи загружают на YouTube 1 час видео. Это значит, что… http://onehourpersecond.com

Также доступно видео на YouTube (спасибо Londain):
Total votes 49: ↑44 and ↓5+39
Comments72

Кастинг идей для плана московской информатизации на 2012-й год

Reading time2 min
Views669
Чуть более месяца назад, Правительство Москвы провело исследование среди разработчиков на тему того, как должна развиваться информационная инфраструктура города (хабратопик про Роудмэп). В этот раз имею честь опубликовать результаты этого опроса и некоторые планы, которые стали его следствием. Чтобы не лить воду, просто процитирую письмо представителя пресс-службы Департамента информационных технологий города Москвы Елены Новиковой, которое я получил на прошлой неделе.
Читать письмо
Total votes 20: ↑15 and ↓5+10
Comments2

Я выше вас всех или как общаться с IT специалистом. Продолжение

Reading time4 min
Views2.6K
image

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

Что для меня программирование? В школе и на первых курсах универа я им буквально дышал. Достаточно быстро изучал новые языки, технологии, всё время искал что-то новое, большее. Когда приходила какая-нибудь идея нового проекта, я оживал. Это как влюбиться… На время.

Я все пытался разглядеть за строчкой кода нечто большее, но этого про себя не понимал. На вопрос «что дальше?» мне ответить было нечего. Я не понимал, для чего дальше учиться, но был своего рода кнут — армия. Вот и приходилось через себя перешагивать и сдавать дурацкие лабы, учить всякие хрени и сдавать. Но я не видел дальнейшего смысла. Я начинал раскручивать эту цепочку и заходил в тупик. Вся эта работа казалась мне какой-то мелкой, недостаточно интересной, скучной. Сон, компьютер, интернет. Изредка бывало лень, апатия и ничего неохота.

Но это не было депрессией. Я бы даже слушать не стал, если бы мне начали про это втирать. Депрессия — это про тех, кому не бывает хорошо. А мне бывает очень хорошо, бывает и очень плохо, но я не в депрессии… И вообще, сам ты в депрессии! Понятия не имел, что это такое. Думал, это такие плохие эмоциональные состояния – осень, дождь, все дела, все загрустили и впали в депрессию, ну, или там витаминчиков не хватает. Плохие состояния накрывают и отпускают. Периоды застоя чередуются с периодами, когда работать можно сутками, ты этого хочешь, и это в кайф. Хуже, когда всего этого хочется меньше, а будни покрываются серой дымкой… Похоже на детство, когда думаешь, что взрослые знают все, а когда вырастаешь, понимаешь, что взрослые могут совершать, ну, совсем уж детские ошибки.

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

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

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

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

При этом депрессия как таковая – это особенность исключительно людей, в характере которых присутствует Звуковой вектор. Он задает определенное направление нашим желаниям, и эти потребности доминируют.
Читать дальше →
Total votes 63: ↑18 and ↓45-27
Comments17

Sony SCL — эксперимент «игровая площадка»

Reading time3 min
Views804
image

Для самых нетерпеливых: ученые запрограммировали собачку Aibo так, чтобы она могла изучать мир самостоятельно, т.е. без заданной последовательности действий.
Тут лежат несколько видео, где робособака, как ребенок, изучает мир вокруг, ссылка.
Для тех, кому этого не достаточно, добро пожаловать под хабракат.
Читать дальше →
Total votes 26: ↑24 and ↓2+22
Comments28

Периодическая система элементов API

Reading time1 min
Views2K
image

Google, с которым работают миллионы разработчиков по всей планете, элегантным способом решил проблему раздробленности API и создал таблицу ее элементов: code.google.com/intl/ru/more/table

Умно и удобно.
Total votes 110: ↑95 and ↓15+80
Comments20

Information

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