Category: it

Category was added automatically. Read all entries about "it".

Ranma

...

Что было бы, если бы Нео выбрал другую пилюлю. Мощная демонстрация возможностей DeepFake.

Ranma

...

Browserify.js - это какая-то долбаная магия. Как эта фигня работает?

С боем поставил node-gyp на винду. Несколько хинтов следующим бедолагам:
1. Поставить node.js не в Program Files, а в корень, например C:\nodejs
2. Поставить python2.7. Аналогично.
3. Иметь Visual Studio или Common Tools SDK.
4. В nodejs\node_modules\npm\package.json в dependencies у node-gyp поставить версию 3.4.0, а в bundleDependencies стереть строчку с node_gyp.
5. Установить node-gyp: npm install -g node-gyp --msvs_version=2015
6. При использовании node-gyp установить рабочий каталог: set USERPROFILE=c:\nodejs\node-gyp
Это решает проблему с кириллицей в путях до рабочей папки.

Наконец закачиваем dependencies для проекта: npm install --msvs_version=2015

PS: Для тех бедолаг, которым не хватает буфера FARа - поставьте софтину ConEmu. У FARа после этого справа появится волшебный скролл, которым можно промотать логи.
Ranma

Установка GRUB2 для запуска в qemu

Вот инструкция для установки GRUB2 на виртуальный диск. В инете достаточно много подобных инструкций, но есть нюансы. Может моя кому-то покажется более доходчивой.

1. Создаём виртуальный диск размером 8Мб (кому надо больше, делает больше):

dd if=/dev/zero of=out.img seek=8MB count=1K bs=1

2. Размечаем под ext2 партицию:

sudo parted out.img
(parted)mklabel msdos
(parted)mkpart primary ext2 32k 100%
(parted)toggle 1 boot
(parted)quit


Партиция имеет сдвиг в 32К от начала диска. Это, видимо, для размещения MBR + Stage 1.5 для груба.

3. Монтируем диск и его партицию на два отдельных девайса:

sudo losetup /dev/loop0 out.img
sudo kpartx -v -a /dev/loop0
sudo losetup /dev/loop1 /dev/mapper/loop0p1


4. Форматируем партицию под ext2:

sudo mke2fs /dev/loop1

5. Монтируем партицию как диск:

sudo mount -t ext2 /dev/loop1 /mnt

6. Устанавливаем груб на свежесозданный диск. Обратите внимание, что последним параметром он принимает физический диск:

sudo mkdir -p /mnt/boot/grub
sudo grub-install --boot-directory=/mnt/boot/ --modules="ext2 part_msdos" /dev/loop0


7. Добавляем grub.cfg по вкусу.
8. Подметаем за собой:

sudo umount /mnt
sudo kpartx -d /dev/loop1
sudo kpartx -d /dev/loop0


9. Стартуем:

sudo qemu-system-x86_64 -hda /home/andrew/dev/boot/out.img -m 1024 --enable-kvm

Осторожно, если от предыдущих экспериментов в текущей директории остался bios.bin с UEFI, то qemu его подцепит автоматически и ничё не заработает.
Ranma

Как запустить загрузчик elilo под uefi

Для примера возьмём x86_64 проц.

1. Скачать uefi. Uefi - это такой как бы биос. Обычный биос чем-то людям не понравился и вместо него придумали uefi. Uefi в свободном доступе существует в виде ответвления от настоящего uefi под названием ovmf. Качаем вот тут: http://download.opensuse.org/repositories/home:/jejb1:/UEFI/openSUSE_12.3/x86_64/. Распаковываем rpm и получаем bios.bin.
2. Можно сразу попробовать:

sudo qemu-system-x86_64 -bios /home/andrew/dev/boot/bios.bin -m 1024 -enable-kvm

В результате должны увидеть шелл для uefi.
Collapse )
Ranma

Грустная история с хорошим концом (part 2)

Итак, на руках планшет с APX mode и док станция. Гугл подсказал, что рассчитывать мне особо не на что, если я не накатил на живой планшет nvflash и не сделал бэкап загрузчика и калибровочных данных планшета. Я был довольно-таки уверен, что ничего подобного я не делал, но всё же решил попробовать залить хоть что-нибудь с помощью nvflash. Я скачал nvflash, закинул его /setup/android/nvflash и решил поискать что-нибудь для заливки в уже скаченных файлах, например из /setup/transformer - этот каталог я делал, когда занимался рутованием планшета. И тут я вижу в этом каталоге директории nvflash и AndroidRoot - забрезжил проблеск надежды. Каталог AndroidRoot означает, что для какого-то планшета был сделан бэкап загрузчика. Я это напрочь забыл, но, видимо, когда я заливал custom recovery для рутования планшета, я по рекомендации гугла сделал бэкап при помощи nvflash. Дальше было дело техники. Вот инструкция:

Collapse )
Ranma

Пост в тему

Ranma

Субъектно-ориентированное программирование

Подумалось тут, что ООП на самом деле не объектно-ориентированное программирование, а субъектно-ориентированное. Ведь по определению, субъект - это то, что производит действие над пассивным объектом. А в ООП объекты трактуются как активные сущности - именно они производят действия над другими объектами.
Будете писать что-нибудь в ООП стиле - разграничивайте чётко, где у вас субъекты, а где объекты (на самом деле тупые структуры) и будет вам счастье.
Ranma

(no subject)

Сюрприз, в clojure нет оптимизации хвостовой рекурсии по умолчанию. И эти люди называют себя функциональным языком! Несколько раз налетел на stack overflow и в итоге вычитал, что нужно писать recur вместо обычного рекурсивного вызова. Да, и компиляция, совмещённая с запуском, вынесла мозг: жмёшь "скомпилировать" и всё виснет.
То и дело сравниваю clojure с erlangом и сравнение всё время в пользу erlangа. В erlangе прекрасно всё: удобная инициализация переменных, удобный императивный стиль вызовов функций, проверка возвращаемого значения в одну строку, документация... Ну в общем, дофига всего. Хочу заметить, что erlang - эталон языка программирования. На самом деле, clojure, пожалуй, даже практичнее (java interop заруливает со страшной силой), но разные мелочи в дизайне языка напрягают.

PS: Да что с этим долбаным редактором в ЖЖ?! 
Ranma

Как сделать искусственный интеллект

Давненько я не писал в журнал и решил сделать новую запись и в ней выдать на суд общества кое-какие соображения по поводу Искусственного интеллекта (в дальнейшем ИИ).

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

Collapse )