Днес понеже имам повече свободно време се заиграх с дроидчето ми и направих 2 доста интересни подобрения. Общо взето резултата беше 3 пъти по бързо зареждане на системата и около 50% ускорение на апликациите. Версията която ползвах е 2.2.2.  Така какво направих

  1. Odexing – Така какво е odex и deodex е тема която нямам намерение да разглеждам сега и кои какво прави но нека леко разяснение deodex това са разни хешове чек суми и класчета дето улесняват местенето на апликациите от една системка на друга и подобряват живота на програмиста,  да ама и забавят нашата системка защото когато се стартира апликацията прави кила провери и чекове. Така стига лирика първо премахнах deodex-вете това е елементарно с следния скрипт. Пуска се с root права на вашия телефон, тои ще свърши всичко необходимо. Раз пакетира пакетира и прочие. Да знаете че може да загубите известна информация контакти и прочие затова ги архивирайте предварително!
  2. JIT enabling – just-in-time compilation това е друга благинка която е добре да се появи. Както е известно java-та не е най бързите платформи на планената както и много други програмни езици. Та затова разни умни глави се се сетили че е разумна идея вместо всеки път да се компилира апликацията и след това да се стартира по добре да се компилира веднъж и след това да се пази byte code копието. Така избягваме нужда повторна компилация ускоряваме стартирането и намаляваме необходимите ресурси. Това се оказва интеренсна задачка не заради друго ами защото файла се намираше в read only директория на телефона 😀 не че това е проблем 😉 Самото разрешване на JIT ства като се добави следния ред в файла /system/build.prop dalvik.vm.execution-mode=int:jit Как ще го отоворите и едитните си е ваша работа дали през adb или ssh си е въпрос на ваша преценка за да може да го едитнете е необходимо да изпълните следните команди на телефона
mount -o remount,rw -t yaffs2 /dev/block/mtdblock2 /system

#mtdblock2 е дяла където е маунтнат system може да видите верния за вас номер с df

echo "dalvik.vm.execution-mode=int:jit" >> /system/build.prop

#може просто да си ъплоуднете файла аз направо на ръка го оправих

sync
mount -o remount,ro /dev/mtd/mtdblock2 /system

Рестартирайте и се радвайте на новия си по бърз Android

Понеже съм уникален кретен и пиша ужасно не мърлив и недообмислен код, успях да оставя без достъп до хостинг машината ми за цяла вечер. Проблема се оказа малоумно тривиален ама кой да мисли на време.

#!/bin/bash -x
wget http://checkip.dyndns.org/ -O /tmp/ipaddr
IPADDR=$(cat /tmp/ipaddr | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>')
IPADDROLD=$(cat /tmp/ipaddr_old | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>')

if [ "$IPADDR" != "$IPADDROLD"  -a "$IPADDR" != "" ]
then
 sed -i "s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/$IPADDR/" /etc/bind/neo2shyalien.eu
 /etc/init.d/bind9 restart
 echo "server localhost" > /tmp/nsupdate
 echo "zone neo2shyalien.eu" >> /tmp/nsupdate
 echo "update delete ns.neo2shyalien.eu. A" >> /tmp/nsupdate
 echo "update delete ns.neo2shyalien.eu. CNAME" >> /tmp/nsupdate
 echo "update add ns.neo2shyalien.eu. 38400 A $IPADDR" >> /tmp/nsupdate
 echo "update add *.neo2shyalien.eu. 38400 CNAME ns.neo2shyalien.eu." >> /tmp/nsupdate
 echo "show" >> /tmp/nsupdate
 echo "send" >> /tmp/nsupdate
 echo "" >> /tmp/nsupdate
 /usr/bin/nsupdate -k /etc/Kns.neo2shyalien.eu.+157+59417.private -d /tmp/nsupdate
 mv /tmp/ipaddr /tmp/ipaddr_old
fi

Това вече е поправения скрипт които няма да допуска грешка. След малко ще обясня къде е била проблемата част сега да обясня какво прави скрипта. Поне нали съм на динамично публично ip. Съм пуснал горния скрипт да проверява за промяна в адреса ми ако се смени да променя настройките на машината и да праща информация за домейна ми, че има промяна. Общо взето тривиален скрипт но в него бях допуснал ужасно малоумен пропуск. В частта където се проверява за смяна на адреса

if [ "$IPADDR" != "$IPADDROLD"  -a "$IPADDR" != "" ]

Преди беше


if [ "$IPADDR" != "$IPADDROLD"]

Така самия ред прави следното взима 2-та IP адреса и ги сверява ако са еднакви пропуска ако са различни ъпдейтва. В предния вариант бях пропуснал много важна грешка поради някаква причина скрипта ми беше решил че имам IP = „“ (нищо) и пренаписало конфигурацията на bind-а ми с празно поле и при следващата смяна вече не може да пренапише правилно конфигурацията което води липса на връзка с nameservr-a. Малоумно нали 😉

Крайно време беше се запася с по грамотен domain. Преди около седмица попаднах на уникално добрата оферта за .eu и нямаше как да не се възползвам. Няколко дни си играх да настроя машината понеже публичния ми адрес е динамичен и се искат някои хватки да се приложат, но почти всички проблеми са изчистени. Публичния ми адрес се подновява в ddns стил. Но винаги ще имам проблеми с доставчиците които кешират заявките, а винаги ще има такива, за съжаление това няма как да се избегне, ще видя ако реша, че ми е проблем ще сменя динамичния адрес с статичен. Това като цяло са разни бъдещи полемики които ще решавам някои друг път.

Засега стария домейн съм го направил да прехвърля към новия такъв и не мисля че ще имам проблеми. Необходимо е да подновите RSS адресите си за да сте сигурни, че получавате вярната информация, за което искам да се извиня за неудобството. Е стига толкова глупости мога само да се поздравя за добрата работа, която не беше малко особено като се има на предвид че почти не съм си имал вземане даване с DNS услугите и първоначално действах като на магия. Накрая обаче му хванах цаката и дори си разписах скриптче което върши черната работа на обновяването на записите, но това ще е тема за в бъдещи разговори след като по изуча из дълбини нещата.

p.s Забравих да пиша нещо важно промених кардинално домейна, защото предишния домейн беше избран с една определена идеална цел, която след толкова години се оказа, че няма да бъде осъществена поради множество причини. Иначе нямаше да е проблем mud-land.eu. Дори е по кратко но блога си е мои и си го водя с една единствена идеална цел – пиша за всичко онова което ме вълнува, и си струва да се сподели. Аз не пиша за всичко и не искам да пиша за всичко искам да оставя една част от себе си скрита. Моето лично пространство претърпя множество от промени. Надявам се тази да не е последната.

Време е за подскачане и релакс малко стига толкова коване 😉 😛

Едно адски отвратително нещо да ползваш Gnome с английски локал е, че ми показва първия ден от седмицата неделя. Ужасно неудобно и дразнещо е. Решението е адски простичко да се промени реда в файла с локализацията от

first_weekday 1 на first_weekday 2. А защото съм мързелив всеки път да го правя на ръка го направих и на скриптче 😉 Че при ъпдейт на локализациите и се замазва положението грозно. Скрипта трябва д а се стартира root права.


#!/bin/bash

if [ $EUID -ne 0 ]
then
 echo -en "\n \033[1;31m Must be a root \033[0m \n"
 exit 0
fi

LOCAL=$(locale | grep LANG | cut -d"=" -f2 | cut -d"." -f1)
FILE="/usr/share/i18n/locales/$LOCAL"

if [ -f $FILE ]
then
 sed -i 's/^first_weekday.*/first_weekday 2/' $FILE

 locale-gen
 killall gnome-panel

 echo -en "\n \n \n \033[44;1;33m Done \033[0m \n \n \n"
else
 echo -en "\n \033[1;31m File doesent exixst \033[0m \n"
fi

Ако евентуално позлвате друг вид локализация скрипта ще го прихване. И ще го направи на понеделник ако не е 😉 Ето и линкче към скрипта.

Най- накрая успях да завърша работата си по скрипта които пиша толкова време 🙂 Вече NUKI е един доста стабилен скрипт. Подчертавам 1 защото премахнах допълнителния скрипт като го вградих в основния. Вече придоби монолитна структура, но лично според мен е по добре за демон вариант 🙂 Вече подобренията не са много, по скоро са фиксове на разни ситни бъгове и опити за подобряване на кода. Единственото осезаемо нещо което съм добавил е проверка за uptime-а на приемника. Нагласил съм го на всеки 10 дни да си прави рестарт сам.

Като погледна назад и първоначалната ми идея за скрипт които просто да следи приемниците какво се случава с тях мисля, че доволно добре съм реализирал идеята си много кратно. Единствения бъг които се надявам да избегна с 10 дневния рестарт е – има моменти в които приемника започва да се рестартира, но не успява. Избива повечето сервизи включително и мрежовия но неуспява да достигне до рестарт. За съжаление поради ограниченията наложени ми от боксовете неможях да направя рестарта да е от ядрото и по този начин да избегна и този момент. Може би някои ден за в бъдеще ще си компилирам мои си image за боксовете и по този начин ще успея да се справя с този проблем. Засега се надявма последното ми е решение да го замаже 🙂 Иначе всичко останало се получи изключително добре, дори много по добре от първоначалния ми замисъл. Особено при положение, че преимана през толкова метаморфози. Най бъгавата част си остана web интерфеиса, затова продължавам да не го давам 😆 след като седна да го пренапиша тия дни ще го кача и него за свободна консумация. Финални думи – вместо да протаквам просто искам да благодаря на всичките ми приятели, че търпяха глупавите ми въпроси за това и онова – имате важен принос в деизаина на кода. Признателност заслужава и човека на които е кръстен проекта и ми е служил като вдъхновение в повечето моменти на бездарно писане 🙂 … Дам заслужаваш го!