Нет сил больше молчать, буду хвастаться.

Всем привет! Мне нужно срочно поделиться с миром, какой я весь из себя молодец, нет сил больше держать это в себе. В общем, встала задача восстановить данные с жёстких дисков сервера фирмы, где я раньше работал. Так исторически сложилось, что сервер после развала фирмы по договорённости с руководством переехал ко мне домой. Родилась идея восстановить данные с сервера. Сервер давно не включается, в нём старые HDD IDE диски. Всего дисков три штуки: 160Gb, 320Gb и 1.5Tb. Файловая система на них ext2fs или часть RAID массива. Была идея подключить их к виртуальной машине Debian и получить доступ к файлам.

Как я поступил изначально — купил переходник IDE->USB и попробовал подключить диск к компьютеру.
IDE to USB converter
Ничего не получилось даже с отдельным блоком питания — отправил переходник обратно продавцу. Стало понятно, что подключить диски напрямую малой кровью не получится, значит, надо делать копию дисков и подключать к виртуальной машине виртуальные жёсткие диски с этих копий. Постепенно родился такой план решения задачи:

  1. Получить посекторные дампы с дисков в виде огромных файлов
  2. Получить виртуальные жёсткие диски с этих файлов и подключить их к виртуальной машине
  3. Получить доступ к файлам из этих дампов из виртуальной машины

Посекторные дампы дисков

Отнёс диски в специализированную контору, которая сделала посекторную копию двух дисков на принесённый мною новый SATA диск. Каждая копия обошлась мне в 1500₽. Новый SATA диск вышел в районе 4000₽. Через пару недель принёс диск с копиями домой, воткнул в компуктер и получил вот такую картину:
Список дампов
Второй файл оказался битый, потому что новый диск для хранения дампов оказался барахлом. НИКОГДА НЕ ПОКУПАЙТЕ Seagate ST2000VX000 — у меня он начал сыпаться после 19 часов работы. Так что сначала запустил команду для восстановления всех файлов, которая справилась за каких-то три часа:

chkdsk /F /R /X

и приступил к следующему шагу.

Конвертирование дампов в виртуальные жёсткие диски для виртуальной машины и их подключение

Ни одна из известных мне виртуальных машин (VirtualBox, VMWare, Hyper-V) не поддерживает сырые данные в виде виртуального жёсткого диска, так что в процессе поиска решения, благодаря статье, наткнулся на бесплатную утилиту Startwind V2V Converter, при помощи которой и сконвертировал сырые дампы в .vdi (VirtualBox Disk) и .vmdk (VMWare Virtual Disk). Программа очень проста в использовании. Выбираем источник данных Local File, место назначения Local File. Потом тип файла и его подтип. Мне пришлось сделать два разных типа, потому что, как я писал выше, второй файл битый, и в формате .vdi VirtualBox его переварить не смогла, а вот в формате .vmdk вполне.
Виртуальную машину я использовал Oracle VirtualBox, просто потому что она бесплатная. Хотел использовать Hyper-V, встроенную в Windows 10 Pro, но она ни в каком виде не смогла подключить второй битый файл.
Подключение расписывать тоже не буду, покажу финальный скриншот:
VirtualBox virtual HDD

Финальный аккорд — получаем доступ к файлам

После подключения дисков и запуска Debian необходимо определить, куда они подключились. В линуксе это устройства /dev/sd[a-z], при этом /dev/sda уже занят. Значит, это диски sdb и sdc. Запускаем

fdisk -l /dev/sd[b,c]

И получаем следующую картину:
fdisk
Отсюда следует, что /dev/sdc2 можно сразу монтировать командой:

mount /dev/sdc2 /mnt/memory-150

А на диске /dev/sdb располагается кусок raid массива. Я в них абсолютно ничего не понимаю, зато умею гуглить, и нашёл статью, как подключить один кусок из программного raid массива — тыц. Как бездумная, но опытная обезьянка, выполнил шаманство с запуском pvscan, mdamd, lvm2 и прочими командами, и у меня появилось устройства /dev/onraid/root /dev/onraid/shares /dev/onraid/var, которые я успешно смонтировал командами:

mount /dev/onraid/root /mnt/memory-300-root
mount /dev/onraid/shares /mnt/memory-300-shares
mount /dev/onraid/var /mnt/memory-300-var

Всё, результат есть, файлы доступны, можно продавать исходники пустить ностальгическую слезу. Осталось проделать похожие процедуры с третьим диском на полтора терабайта, но у меня пока нет таких свободных объёмов. А потом можно подумать, что делать с этим добром, потому что самые свежие исходники там от 2010 года и выглядят местами очень наивно.

Встреча приятной компании

Что делать, если вы любите побухать повеселиться в приятной компании, а в другую Вас не берут? Ответ простой: устройте свой «корпоратив».

Картина на стене

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

На каждого покинувшего беседу приглашаете двух новых. Ведь старый друг не хуже новых двух.

Отряд не заметил потери бойца

Главное: дать людям самим выбрать дату, время и место. Если дата известна (например, 29 августа день твоего рождения), тогда название беседы уже должно содержать это число.

Чем интересных людей в беседе больше, тем скучных меньше. Чем больше нас, тем меньше их. Всё равно, в лучшем случае, придёт треть от общего количества участников. Можно удвоить это количество, пригласив людей парами.

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

Вот эти ребята:

Ярослав, электронный композитор, певец ртом и создатель авторских брошек. Написал музыку ко многим играм компании LG Electronics.
Ярослав Краснов

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

Андрей, музыкант группы Necrohuman, модельер танков компании Gaijin Entertainment по фотографиям и Wargaming по чертежам.
Андрей Покомеда

Баранов, звукорежиссёр, музыкант группы Necrohuman, последний раз был замечен в компании Saber Interactive в тёмной комнате.
Андрей Баранов

Святослав, обладатель «железной рубашки», рисователь рукой, аниматор застывших картинок, режиссёр полнометражного мультфильма.
Святослав Осипов

Селин, какой-то лысый чувак верстальщик. Казахский москвич новой модели, фотографирует на планшет.
Андрей Селин

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

Евгений, секретарь-референт нашей палаты, стараюсь надеть халат быстрее психиатора, быстро пишу, потому что мало читаю.
Жирнов Евгений Александрович

Ах, как жаль, что мы так и не увидели начальника «транспортного цеха».
Начальник транспортного цеха

Получи патент первым! Видео об авторах игры.

Наконец-то записал финальный ролик об авторах в игре «Получи патент первым!». Наслаждайтесь!

Движение букв в трубах происходит с помощью физического движка Box2D. Поэтому их так мало — иначе они застревали. :)

Кстати, кто-то запарился и выложил полное прохождение игры:

Правда, в этом ролике отсутствуют мини-игры после полного прохождения.

Надо как-нибудь записать мини-игру «Калейдоскоп» — чистая физика и, опять же, Box2D.

Тестовое задание для программиста в Trickster Games

Давным-давно, в далеком 2007 году, я работал в славной компании «Trickster Games». Сейчас ее уже нет, но она была известна как разработчик игр для детей и квеста «Петрович и все, все, все..».

Так вот, в те далекие времена мы придумали тестовое задание для программиста:

#include <SomeStream.h>
 
void main()
{
    SomeStream stream;
    stream.info() << "Привет, мир!";
}

Задача: реализовать класс SomeStream таким образом, чтобы после выполнения main() в std::cout было выведено «Привет, мир!\n» (без кавычек). То есть добавить перевод строки в конец фразы.

Тогда никто из кандидатов не смог его решить. Может вам повезет? (:

Вот вам подсказка: крутая система логирования.

Блог Евгения Жирнова