Category: it

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

nepal

Сохранение и работа с метками Яндекс.Карт на Андроиде

Насколько я понял, реализация мобильных Яндекс.Карт на Андроиде отстаёт от аналогичных решений на, скажем, Симбиане. В частности, вносимые пользователем метки хранятся локально в базе sqlite3, причём хранятся не на SD карточке, а в памяти телефона (на /data).

Проблема в том, что после перепрошивки (скажем, со штатной на CyanogenMod) или хард-ресета (мне приходилось его однажды делать) все ваши метки бесследно исчезают. Конечно, хотелось бы, чтобы они хранились или на SD карточке, или в гуглооблаке, или в яндексе, но увы, пока это не так.

Приходится заботу о метках брать в свои руки. Последующий текст предполагает, что у вас есть компьютер, на котором стоит ADB, а телефон присоединён к компьютеру через USB. Возможно, всё это работает только на рутованном телефоне!

Чтобы скачать метки с телефона на компьютер:
adb -d pull /data/data/ru.yandex.yandexmaps/databases/labels.db

В случае, если вы используете модифицированные Яндекс.Карты' от Александра Хохлова:
adb -d pull /data/data/ru.yandex.yandexmaps.khokhlov/databases/labels.db

Метки можно редактировать с помощью командной строки sqlite, если вы знаете SQL:

sqlite3 labels.db
SQLite version 3.6.23.1
Enter ".help" for instructions
Enter SQL statements terminated with a ";"

sqlite> .mode line

sqlite> SELECT * from sqlite_master;
    type = table
    name = android_metadata
tbl_name = android_metadata
rootpage = 3
     sql = CREATE TABLE android_metadata (locale TEXT)

    type = table
    name = mylabels
tbl_name = mylabels
rootpage = 4
     sql = CREATE TABLE mylabels (_id INTEGER PRIMARY KEY,label_name TEXT,label_name_tolower TEXT,lat LONG,lon LONG,geocode TEXT,date LONG)

sqlite> SELECT * FROM mylabels LIMIT 1;
               _id = 1
        label_name = Офис
label_name_tolower = офис
               lat = 55.8746625377941
               lon = 37.5884219154757
           geocode = Россия, Москва, Алтуфьевское шоссе, 44
              date = 1292572012292

Обратно в телефон labels.db запихиваются тоже через adb, только вместо pull говорим push:
adb -d push labels.db /data/data/ru.yandex.yandexmaps/databases/labels.db
или для карт от Хохлова:
adb -d push labels.db /data/data/ru.yandex.yandexmaps.khokhlov/databases/labels.db

nepal

Storopia

Нашёл наконец-то шрифт, которым в Android нарисованы часы на экране блокировки, и ещё местами кое-что (например, в маркете предпоследней версии). Называется Storopia.

Поставил, попробовал использовать в GKrellM, скриншот (108x572 px) под катом.
Collapse )

Сам фонт можно найти внутри архива Vending.apk.
nepal

build bug on

Открыл ответы к викторине.

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

Collapse )
А главное, выяснилось, что компилятору всё равно, сколько раз мы объявляем внешнюю переменную или прототип функции, поэтому подпрыгивания с __LINE__ или __COUNTER__ не нужны.
nepal

мифы и сказания про OpenVZ

Недавно мне рассказывали, что в Яндексе довольно много используют OpenVZ. Это приятно. Конечно, было бы приятнее, если бы ещё и патчи нам присылали (как, например, делают похожие крупные продвинутые пользователи -- ALTLinux, Proxmox или Debian -- впрочем, это не совсем та категория, наверное, неудачный пример). Ну да ладно, может, всё ещё впереди. Так вот, мне про Яндекс говорили на словах, а сегодня я получил некоторым образом документальное подтверждение. Павел Воробьёв, руководитель службы администрирования коммуникационных сервисов Яндекса, в своём блоге пишет: "... система OpenVZ, широко применяющаяся в нашей группе администрирования". Повторюсь -- это приятно.

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

Изолированием занимается демон openvz, он создает процессам ощущение изолированности, эмулирует дисковую подсистему, занимается распределением памяти

Демон примерещился. Нету там никакого демона. Всем вышеперечисленным занимается ядро. Да, и слово "ощущение" там тоже лишнее. Дисковая подсистема совсем никак не "эмулируется" -- для изоляции диска используется тот самый пресловутый chroot(). Память распределяет тоже ядро. Вообще, OpenVZ -- это модифицированное ядро Linux плюс кое-какие утилиты. Функциональность, достигаемая патчами в ядро, делится примерно на три части:
1. Изоляция/виртуализация, или namespaces. Это, условно говоря, chroot() для всего, что предоставляет ядро, например, "chroot" для дерева процессов, для сетевого стека, для разделяемой памяти (IPC shmem) и т.п. Все эти "чруты" в совокупности дают возможность создавать изолированные окружения, которые мы называем контейнерами. Однако, этого недостаточно, поэтому идём дальше.
2. Управление ресурсами. Так как все контейнеры работают на одном-единственном ядре, а оно -- на одном-единственном сервере, то у нас на все контейнеры есть один-единственный набор ресурсов -- память, процессор, диск, сеть и т.п. Всё это надо как-то разруливать, чтобы какой-нибудь один контейнер, например, не скушал всю память. Подсистему управления ресурсами, в свою очередь, можно поделить на 4-5 частей. Тут ещё много можно писать, но для ясности поскипаю.
3. Живая миграция. То есть, возможность заморозить контейнер и скинуть его замороженный образ на диск, а потом оттуда разморозить обратно в память и продолжить выполнение. Собственно, поверх этого живая миграция -- несложный скрипт на шелле, замораживающий контейнер на одной машине и размораживающий на другой.

виртуалки openvz получают максимальную производительность в ущерб точному распределению ресурсов.

Эта фраза тоже странная. Распределение ресурсов у нас как раз вполне даже точное (и на эту тему я могу рассказать очень много, было бы кому). Ущерб (а точнее, то свойство технологии, благодаря которому мы имеем хорошую производительность) заключается в том, что мы не можем запустить не-Линукс.

Так же мы лишаемся еще одного неоспоримого плюса полной или пара-виртуализации: ядро во всех виртуалках общее, при возникновении lock-а в ядре, он так же будет общим. При зависании ядра по каким-то причинам, мы теряем хост-систему целиком.

Про OpenVZ тут верно, но не надо думать, что в полной или пара-виртуализации всё совсем по-другому. Там разные ядра работают отнюдь не поверх железки, а поверх гипервизора/монитора. Монитор -- это тоже такое маленькое ядро, и оно одно, на всех общее. Если в нём случится глюк или лок -- это тоже для всех. Разница лишь в том, что монитор обычно меньше и проще, чем ядро Линукса, да и локов в нём меньше, но это различие не столько качественное, сколько количественное (хотя тут можно и поспорить).

В жизни все не так радужно. В какой-то момент патчи OpenVZ были благополучно выкинуты из мейнстрим-ядра linux со словами "мы такое поддерживать не хотим".

В этом месте я просто-таки не могу удержаться от сакраментального вопроса (да, я знаю, что это боян, бородатый канадский боян, но всё же, всё же) -- где, ну где вы берёте такую траву? Отсыпьте, пожалуйста, нашему коллективу полкоробка, а то кофе уже вообще не берёт.

Серьёзно, я даже не знаю, как на это возразить. Я неоднократно описывал, как мы работаем с мейнстримом, наверное, надо ещё раз рассказать?

У нас есть OpenVZ -- большой набор патчей, реализующих разную функциональность для контейнеров. Эта функциональность делится на некие "кирпичики", составляющие. Ну, например, network namespaces -- возможность иметь в ядре Линукса не одну сущность под названием "сетевая подсистема", а много. Эта сущность включает в себя экземпляр TCP/IP стека, таблицы маршрутизации, таблицы фаерволлинга, всякие разные кеши и хеши, ну и собственно сами сетевые устройства. Возможность создавать свои отдельные экземпляры сетевой подсистемы, отдавать его контейнеру, прокидывать туда устройства и т.п. -- это и есть один из "кирпичиков", из которых построена OpenVZ.

Так вот, время от времени мы берём такой кирпичик и пытаемся воссоздать его в мейнстрим-ядре. Не просто послать на linux-kernel@ часть наших патчей, а именно воссоздать, то есть по сути с нуля, заново реализовать, представить на суд общественности, получить комментарии, поправить, представить на суд общественности -- и так далее, пока или оно не будет принято, или кончится терпение и мы плюнем на это неподъёмное дело. Вот таким примерно образом мы "засовываем" OpenVZ в мейнстрим ядро. Надо сказать, что OpenVZ целиком в мейнстриме никогда не было, и никто его оттуда никогда не выкидывал (и ничего из того, чего мы туда действительно запихали, тоже не выкидывал). После того, как "кирпичик" появляется в мейнстриме, мы выкидываем аналогичную часть из нашего патча и адаптируемся к мейнстримному (иногда написанному нами же, иногда нет).

Ну и последняя цитата на сегодня:

На смену OpenVZ в мейнстрим пришли lxc - linux containers.

Этот вопрос мало кем освещён, тут точно стоит рассказать, как оно на самом деле.

Существует несколько разных людей и команд, которые заинтересованы в том, чтобы в Линуксе (в мейнстрим-ядре) появились контейнеры и вся сопутствующая функциональность. Одна из таких команд -- OpenVZ. Как я выше написал, мы самбитим патчи в мейнстрим, иногда их даже принимают (какое-то время Parallels даже был в top10 linux contributing companies). Одна из других команд -- это ребята из IBM (Франция, Индия, США). Их много и они упорные, и кроме некоторых патчей в ядро, они пишут свои утилиты. Вот LXC -- это то, что есть в менйстримном ядре (включая патчи от OpenVZ, IBM и других людей типа Эрика Бидермана), плюс эти самые lxc утилиты. В противоположность, OpenVZ -- это то, что в мейнстримном ядре, плюс наши патчи, плюс наши утилиты. Что из этого всего следует -- решать вам.
nepal

Android 2.2: adb; install to SD card

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

I. Получение доступа к шеллу от телефона.
Collapse )
II. Инсталляция на SD card.
Collapse )

Деньги, как всегда, шлите мне по почте конвертами и бандеролями.
nepal

asus m2n-mx se wtf

Ядра от RHEL 5 (и от CentOS 5, и стабильное от OpenVZ) не грузятся на машине с материнской платой asus m2n-mx se с вот такой ошибкой:

Kernel panic - not syncing: IO-APIC + timer doesn't work
Collapse )
Решение нашлось вот тут. Выключаем в БИОСе опцию Chipset-> SouthBridge-> MCP61 ACPI HPET TABLE, и всё взлетает и работает без всяких флажков.
nepal

Линукс это в первую очередь зло!

Очень весёлый парнишка на каком-то форуме жгёт по полной. Если даже это тролль, то -- великий и могучий тролль. bash.org.ru нервно курит в сторонке.

Чёрт, ветка от апреля 2006 года. Хочу ещё Аркадия Куликова!

Linux - это Open Source. Это плохо. Любой хакер откроет исходники и взломает!!! В Windows такого нет. Говорю как админ со стажем работы в крупной конторе.

Кто мне скажет что Open Source это круто? Эта идеология скоро умрет как и Linux. Я то знаю как и что в этом мире делается. Так что не надо ляля.

Линукс это в первую очередь зло. Вы должны принять это как факт. Он не дает развиваться пользователям. Там всё привязано к командной строке и это плохо. Линукс был задуман как альтернатива Windows, а получилась ОСь для серверов. Но тут есть подвох. Windows работает на серверах всё равно лучше. Я сам проводил тесты. Windows на 20-30% стабильнее. И сама Microsoft это подтверждает.

Я считаю что если крупные корпорации не поддерживают Linux - это значит эта система скоро умрет как и Open Source. Даже Торвальдс сказал об этом.

бсд - разновидность линукса вы что не знали?

Люди опомнитесь. Linux умрёт. Это торвальдс сам сказал недавно!!! Они признал поражение!
nepal

WONTFIX

Закрыл сегодня один баг как WONTFIX. Очень редкий случай, надо сказать -- обычно или можно починить (и чинится, и закрывается как FIXED), или это вовсе и не баг (и закрывается как INVALID).

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

"Microsoft TrueType core fonts for Web" for Fedora Linux

Однажды люди в Microsoft сделали хорошее делоCollapse )

Вот спек-файл: microsoft-core-fonts.spec (5K).

Чтобы поставить себе это на Федору, вот примерно что нужно сделать:
wget http://kir.sacred.ru/lj/microsoft-core-fonts.spec
yum install fontpackages-devel xorg-x11-font-utils wget cabextract
rpmbuild -bb microsoft-core-fonts.spec

(если всё сложилось хорошо, то где-то среди последних строчек будет строка, начинающаяся со слова Wrote:, а после неё имя файла. Вот возьмите это имя файла (полное, вместе с путём) и напишите:
rpm -ihv имя_файла
nepal

и снова иНЖАЛИД ДЕЖИЦЕ

Про иНЖАЛИД ДЕЖИЦЕ я уже писал. Про то, как перекодировать кракозябры -- тоже.

Теперь для ностальгирующих советских инженеров-программистов -- как получить слова типа иНЖАЛИД ДЕЖИЦЕ. Довольно просто:

$ echo Invalid device | iconv -f KOI-7
иНЖАЛИД ДЕЖИЦЕ
$ echo Hello, world! | iconv -f KOI-7
хЕЛЛО, ВОРЛД!
$ echo Bad command or file name | iconv -f KOI-7
бАД ЦОММАНД ОР ФИЛЕ НАМЕ

Вот не помню, какие там были ещё ошибки. А вот, нагуглил:
АРЕ ЫОУ СУРЕ?

Кто-нибудь ещё что-нибудь помнит?