Ознакомьтесь с нашей политикой обработки персональных данных
  • ↓
  • ↑
  • ⇑
 
07:57 

Вчера внезапно упал хостинг на clodo.ru вместе с моим уютненьким джаббером, упал на несколько часов. Это уже третье крупное падение за период пользования. Были ещё два, когда, судя по всему, досили датацентр, и канала не хватало в том числе моей виртуальной машине.
На этот раз решил зарегать себе Free Tier на Amazon AWS. Сначала протупил и создал в Америке, в результате получил тормоза по ssh ибо пинг аж 447мс. Потом увидел это, создал инстанс в Ирландии. Пинг уменьшился до 92мс, жить можно. Следует отметить, что по умолчанию при создании инстанса амазон предлагает вариант действия Terminate в случае если инстанс выключится изнутри. Меняйте это сразу на Stop! После выключения инстанса изнутри уже не получится запустить его обратно в случае Terminate и все старания по настройке пойдут лесом.
Для регистрации необходима карточка с которой спишут 2$ и подтверждение телефонного номера с помощью звонка от Amazon и набора циферок в тональном режиме. Free Tier включает в себя:
- 10 GB на ABS, которые скорее всего сразу заюзаются под образ ОС (есть образы <10GB, но их мало)
- 1 миллион запросов к ABS в месяц (на clodo.ru у меня за 4 месяца ушло 7 миллионов, так что вполне реально вылететь из Free Tier если писать много логов или ещё что-то интенсивно делать)
- 1 GB snapshot storage (не знаю что это, но потом мне показали табличку, где было написано про халявные 5GB на S3)
- 15 GB трафика в месяц
Будем посмотреть.

PS: если не учитывать падения, то clodo ничего так, сейчас там работают ejabberd+mysql+pyicqt вполне неплохо и всё это стоит где-то 6.4-6.5р в сутки.

На неделе собрал сервак на core i7 с 6гб оперативки. Купил для него 4U корпус за 3757р. НЕ ПОКУПАЙТЕ ЭТО Г-НО.
1. Панель с кнопками и светодиодами еле держится, один USB на лицевой панели не работает ибо при креплении платы её закрутили так, что лопнула дорожка питания. Спасибо хоть что её не закоротило на корпус при этом.
2. Хотя в описании написано что корпус расчитан на ATX, винт в корзине залезает на пространство, отведенное под материнку. Хорошо хоть при этом всё-таки можно его установить. Корзина расположена так, что можно подключить винт только в нижний разъём SATA, в верхний не получится ибо будет мешать корзина. В результате я могу заюзать только один порт SATA 3Gb/s.
3. Разъёмы видеокарты по непонятным мне причинам упираются в рейку корпуса, хотя по идее должны находиться по центру между рейками.
4. Кулеры на крышке корпуса по умолчанию забирают воздух у кулера на процессоре, создавая проблемы с охлаждением. При нагрузке половины ядер температура поднимается до 55. Перевернул кулеры, стало всё хорошо.
5. Железная панель под материнкой сплошная, без каких-либо вырезов, из-за чего крепление кулера упирается в панель и материнка немного выгибается, что создаёт проблемы при её креплении. Думал выпилить квадратное отверстие, но забил, ибо металл почти 1мм толщиной.

Общий вид

Порадовал только фильтр на переднем 120мм кулере, но он теперь не поможет, потому что кулеры на крышке корпуса работают уже на вдув.

21:22 

Если вы ищете key-value базу данных - посмотрите в сторону Tokyo Cabinet. Он офигенен обгоняет по скорости всякие gdbm и bdb раз в десять на некоторых тестах. Люди постарались.

08:17 

преобразование djvu в pdf под linux

Казалось бы, всё просто, даже готовые программы есть для этого. Но есть одно "но":
1. печать в pdf, которая есть в гноме, съедает всю память, после чего система виснет
2. печать на cups pdf printer приводит к тому же результату
3. утилита djvu2pdf - аналогично
4. jpeg2pdf, которая написана на ruby, вообще не запускается из-за внезапного появления двоичных символов в коде
5. даже в винде печать на pdf принтер заканчивается созданием документа с ~100 страницами и ошибками.
С маленькими pdf-ками всё хорошо, а вот с большими.. В моём случае это были 916 страниц книги Олифера по компьютерным сетям.

Как будем конвертить?
1. с помощью djvm из комплекта djvulibre определяем число страниц
2. с помощью ddjvu из комплекта djvulibre вытаскиваем каждую страницу в формате tiff. DJVU файл размером 45.5Мб внезапно распаковывается в 5Гб картинок.
3. с помощью imagemagick (плагин php-imagick) пережимаем картинки, уменьшая их размер до 800 пикселей по ширине страницы и попутно сохраняя в jpeg. Получаем 276.1Мб файликов.
4. с помощью java-библиотеки itext создаём pdf-ку, состоящую из всех наших картинок. Получаем 276.6Мб, почти в 6 раз больше, чем оригинал.

Если пережимать с ограничением 600х800 (вместо 800х??), получим где-то 64Мб

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

Скачать можно из SVN:

21:44 

я познаю мир.jpg

Недавно готовился к экзамену по компиляторам, случайно вспомнил про инструкцию branch likely, которая когда-то была в MIPS, но сейчас выпилена. Захотелось проверить, есть ли какой-то подобный механизм у Intel. Сделал много вариаций одного и того же пустого цикла и немного удивился результатам. Оказывается, инструкция loop работает в пять раз медленнее, чем её эквивалент - dec ecx + jne. Дабы дополнить картину, приведу цифры для всех тестов. Вычислялось количество тактов, затрачиваемых на одну итерацию цикла.

test:
dec ecx
jne test
2 такта

test:
nop
dec ecx
jne test
тоже 2 такта, видимо конвейер параллельно выполняет nop и dec

test:
nop
nop
dec ecx
jne test
3 такта, конвейера не хватило

test:
nop
nop
nop
dec ecx
jne test
4 такта, странно, почему не три?

и наконец наш незабываемый loop
test:
loop test
10 тактов

Кроме того оказалось что замена dec ecx на sub ecx,1 ничего не меняет.

Ещё хотелось бы отметить фичу последних (уже много лет как) интеловских процов. У них количество операций в секунду в два раза больше тактовой частоты. Так вот.

На работе на вопрос "почему такой бред с loop" так ничего толком не ответили. Зато показали классный сайт по задротствуоптимизации кода, и ткнули пальцем в интеловский мануал на префиксы, с помощью которых можно сделать branch likely/unlikely. Это вроде как 0x3e и 0x2e, точно не помню где какой. В оригинале соответствуют префиксам DS и CS почему-то.

21:33 

Бессмысленный тупой флэшмоб


15:27 

Nokia QT SDK for Linux

Решил попрогать под телефон, выбор пал между джавой и QT. До этого уже были попытки установить все нужные тулзы для QT под винду, которая под виртуалкой, но всё же хотелось прогать под линуксом. На официальном сайте можно скачать SDK для него, но этот SDK не позволяет делать отладку на телефоне и деплоить приложения через кабель. Но там есть одна фича: называется Remote Compiler, правда для её работы нужна регистрация на форуме нокии. Она отправляет исходники на их сервер и получает оттуда готовый sis файл для заливки в телефон. Учитывая наличие отладчика под линуксом, процесс разработки становится уже не таким ужасным.
ЗЫ: для корректной работы требуется установка QT ещё и на телефон, как это сделать из-под линукса я не знаю.

23:34 

Хотел вспомнить старое и скомпилить-запустить прогу на джаве для телефона, да не тут-то было. Если когда-то давно в пакете mobility для netbeans была такая штука как Wireless Toolkit, то теперь его нет, на сайте sun они предлагают вместо wtk 2.5.2 (хорошо хоть его тоже можно скачать) скачать j2me sdk 3.0, который только под винду и макос. Похоже что с таким "прогрессом" джавы скоро не станет.

15:13 

Купил телефон Motorola L6, теперь можно под него прогать. В процессе ковыряния софта под него нашёл джава-прогу для разрузки кода в память. Судя по всему заливка идёт через обращение к несуществующим номерам элементов подсветки в com.motorola.funlight.Linlight

08:22 

Теперь cuda-sdk весит около 2Гб. Интересно, что они туда запихали.

21:04 

Опять сделал сервер, раздающий анлим. На этот раз раздача идёт по l2tp с использованием nat, вшитого в ядро. В качестве железа mini-ITX материнка с Dual-Core Intel Atom. Интересно, через сколько эту лавочку прикроют. Пока настраивал всё это, в очередной раз убедился что на хабре много сырых статей, описанные действия в них в большинстве случаев не проверены на работоспособность.

16:57 

создание и настройка freebsd jail

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

Целью ставилось научиться создавать джайлы на машине с одним внешним айпишником. Поскольку инета хочется всем, то надо использовать ещё и NAT. Если же айпишников много и хватит на всех, то банально назначаем их джайлу, а nat и ipfw не юзаем.
В ходе работы в основном юзался хэндбук и ещё всякий бред из инета. ОС FreeBSD 8.1-RELEASE, дефолтное ядро.

Начинается всё тихо и мирно с компиляции мира.
# cd /usr/src
# make buildworld

Под эмулятором virtual box на одном ядре Core2 Quad Q8200 @ 2.33GHz это заняло 1.5 часа. В /usr/obj появилось 593Мб всяких файликов, сам же мир весит 192Мб.

Пока оно там компилится, создадим папочку для корня нашей новой системы
# mkdir -p /usr/jails/mroot
и для первого джайла
# mkdir -p /usr/jails/test
а также каталоги для изменённых данных, и каталог, куда всё это смонтируется.
# mkdir -p /usr/jails/test/data
# mkdir -p /usr/jails/test/mnt
Заодно и файлик fstab
# cat ->/usr/jails/test/fstab
/usr/jails/mroot /usr/jails/test/mnt nullfs ro 0 0
/usr/jails/test/data /usr/jails/test/mnt/ unionfs rw 0 0

Вот так вот: берём скомпиленный мир, монтируем его только для чтения, а поверх него монтируем папку, куда будут складываться изменения в этой файловой системе. Таким образом папка data весит заметно меньше (у меня она сейчас всего 400кб).

Далее нам нужна небольшая настройка в /etc/rc.conf


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

Также следует исправить /etc/rc.d/ipfw чтоб он запускал natd перез применением правил. Например, так:


Ещё одна добавка к /etc/sysctl.conf:
security.jail.allow_raw_sockets=1
Она нужна для работы ping и, наверное, чего-то ещё.

Ну что ж... будем считать что мир докомпилился. Продолжаем
# cd /usr/src
# make installworld DESTDIR=/usr/jails/mroot
# make distribution DESTDIR=/usr/jails/mroot

Всё. Жизнь прекрасна, можно запускать свой первый jail.
# /etc/rc.d/ipfw start - тут могут произойти внезапности, если это всё делается через сеть на большом расстоянии до сервера, то лучше пять раз подумать перед запуском.
# /etc/rc.d/jail start - запускаем все джайлы, пока их только одна штука.
Можно посмотреть их список:

# jls
JID IP Address Hostname Path
1 10.0.0.1 jail1.local /usr/jails/test/mnt


логинимся туда:
jexec 1 csh 1 - это JID нашего джайла.
jail1#
Для начала надо запустить ssh и named.
С первым всё просто, достаточно добавить sshd_enable="YES" в rc.conf (его надо создать) и запустить /etc/rc.d/sshd start
Со вторым немного сложнее.
# ee /etc/named/named.conf и находим строку listen_on { 127.0.0.1; }; меняем айпишник на тот что у нас (10.0.0.1).
Добавляем named_enable="YES" в /etc/rc.conf
Добавляем nameserver 10.0.0.1 в /etc/resolv.conf (точнее создаём этот файл, ибо по дефолту его нет)
Запускаем /etc/rc.d/named start
Всё. Базовая система готова к работе. Далее по желанию скачиваем порты, компилим покер и стюардесс.

16:11 

freebsd 8.1 ipfw nat

В новой фряшечке (8.1) сломан скрипт запуска ipfw, теперь он пытается прописать правила до запуска natd. Если среди правил оказываются правила для nat, происходит большой облом. В общем лучше юзать скрипт от 8.0 или допиливать руками.

19:26 

Разбирался с джайлами во фряхе. Всё хорошо и удобно, но до тех пор, пока не надо дать всем джайлам инет через один айпишник и нат. Пакеты наружу уходят, возвращается ответ, но в джайл не попадает. Магия.

19:03 

Как обычно, самые интересные вещи появляются тогда, когда надо срочно браться за учёбу. Сегодня внезапно узнал о возможности создания своей прошивку для телефонов Motorola на основе Neptune (L2, L6, L7, e398). Вроде как там есть bootloader, который нельзя убить, ибо зашит он в rom памяти. Хочется написать свою ОС под это, но возможностей критически мало. Правда документ, в котором описаны фичи процессора, занимает 2660 страниц. Документ является закрытой частной собственностью компании motorola и не предназначен для распространения. Судя по всему, такая ситуация чуть ли не со всеми телефонами, а значит в теории можно где-нибудь раздобыть подобную вещь для любого другого телефона.

10:46 

Я зареверсил алгоритм авторизации beeline модема с компом. Не знаю зачем он мне нужен, но быть может кто-то будет писать прогу для работы модема в роутере. Готовую прогу (не мою) для x86 можно найти здесь. Работает не только с mf626 (проверялось ещё на mf170).
В общий доступ не выкладываю, кому надо - пишите в приват.

12:22 

Впервые за всё время на dir-300 (rev n) с заводской прошивкой упал DNS. Пришлось перезагружать.

09:47 

Вышла фряшечка 8.1-RELEASE, вчера появилась на официальном ftp. Жаль только ставить её уже некуда.

21:25 

Как-то ехал в электричке и подумал... А почему бы не использовать для доменных имён нестандартные слова, но которые легко запоминаются. Правда в голову почему-то пришло только 42. Сегодня оказалось, что есть незареганный 42b.ru и ещё несколько подобных, теперь он мой.

20:34 

Почему-то качество сигнала на роутере в прямой видимости другого роутера 60/70, а если немного их придвинуть и на пути поставить стену, получается 77/70. Что я делаю не так?

09:29 

Припаял коннектор к антенне. Это fail. Ноут с ней ловит ещё хуже, чем без неё. Зато антенна с роутером работает неплохо. Правда разница не очень заметна: стандартная антенна dir-300 и эта дают почти одинаковый уровень сигнала в другой комнате.

the code inside me

главная