- Modelling and simulation
- Discrete event systems
- Nonlinear and adaptive control
- Linear control system design,
- Applied signal processing
Over a period of time I ran a web shop that sold sensors, microprocessors and electronics in general.
Home automation is fascinating and I programmed my own system to control lights, tv, audio, computer, music and coffee machine.
A self balancing is the perfect example of an unstable system that can be made stable with control theory. During a summer break, I started longing back to Chalmers and therefore designed and programmed this robot.
Hårddiskkrascher kan hända oss alla men det är svårt att ta fram ett smidigt och felsäkert sätt att hålla backuper. Efter min senaste hårddiskkrasch såg jag till att nästa gång inte ska kännas lika tung. En metod för backup är att man håller två källor synkroniserade. Om den ena försvinner ska den andra kunna ersätta data. Redundans med andra ord. Nedan följer en guide för hur man gör detta på ett smidigt sätt.
Bestäm först vilka mappar som är värda att ha redundans på. Enkel regel som jag kör med är:
Något jag vill åt är ungefär samma funktionalitet som i Dropbox. Om man lägger alla filer i sin Dropbox-mapp så kommer de bli synkroniserade till internet men det finns två problem. Dels kan data gå förlorade (tas en fil bort på ett ställe finns det en risk att denna borttagning även synkroniseras till Dropbox vilket helt dödar syftet). Ett annat problem är priset som Dropbox kostar om man vill ha mer utrymme. Jag har istället valt Amazon Cloud drive som är hälften så dyrt. Andra alternativ som borde fungera är bland annat Rackspace, Skydrive mfl. Finns en lista längre ner.
Guide:

Bild 1. Synkronisera mappar.

Bild 2. Schemalägg.

Bild 3. Återställ filer.
Idén nu är alltså att du använder den lokala mappen och att synkronisering till molnet sker med jämna mellanrum. Eftersom du alltid jobbar mot en lokal mapp så behöver du inte vänta på att filer ska laddas upp eller ner samtidigt som du arbetar. Synkronisering ska ske i bakgrunden utan att du bryr dig om det. Om hårddisken kraschar kan du ladda ner dina filer från molnet igen och inget arbete bör gå förlorad.
Sammanfattning:
Alla tre av dessa komponenter borde kunna bytas ut till andra alternativ. Kombinationen av dem ger ett bra alternativ till Dropbox. Kom gärna med förslag under kommentarer.
Dessa lagringsalternativ har Gladinet och de flesta borde fungera med den metod som jag beskrivit:
Min externa hårddisk (WD My Book Essential) slutade helt plötsligt att fungera. Fick ett meddelande i stil med:
"Disken i enhet L: behöver formateras innan den kan användas".
På disken hade jag massvis med foton så det vore trist om dessa gick förlorade. Panik ska man dock inte få. I alla fall inte innan man försökt rädda filerna. Det finns ett antal program som säger sig kunna rädda skadade hårddiskar.
Försök 1: chdsk /f /r från kommandotolken. Inget resultat. Hårddisken är rejält paj.
Försök 2. ZAR (Zero Assumption Recovery). Kommerciell och jag tror att det finns bättre alternativ.
Försök 3: Recurva. Såg bättre ut. Gav mig en lista på filer som var skadade men gränssnittet var inte det bästa. Vill även återskapa mappstruktur och jag hittade inte hur man gör detta.

Försök 4: PC Inspector File Recovery. Ful som stryk men gör sitt jobb!! Gratis är det dessutom (med en hel del reklam).
Välj den enhet som är paj. Förutom att den fixar att lista det som finns fysiskt på hårddisken kan den även återskapa vissa filer som blivit borttagna (vilket är bra om man av misstag tar bort en fil). Jag gick in under Rotkatalog, markerade bilder-mappen, högerklickade, valde spara som och sparade ner mappen på en annan hårddisk. Det är väldigt viktigt att du väljer en annan hårddisk för att inte riskera att du sabbar hårddisken ännu mer. När allt är återskapat formaterar jag hårddisken och flyttar tillbaka det som jag nyss räddat.
När programmet kommer till en mapp som den inte lyckas återskapa visas ett meddelande som denna:
Det jag gjorde då var att skriva upp namnet och försöka återskapa filerna i mappen manuellt genom att gå in i mappen i PC Inspector.
This is a basic tutorial for how to get the AndEngineExamples working.

If you want to find something in the database using regular expressions:
$domainNamed = $this->DomainName->find('all', array(
'conditions' => array(
'name REGEXP "^www.i"'
),
'fields' => array(
'name'
),
'contain' => false,
'limit' => 10
));
The code above will find all domain names that start with "www.".
Well ok not 100% the cakephp way but better than just using $this->query(...).
I wanted it to look like this:
$this->find('all', array(
'fields' => array('id', 'name'),
'use' => 'index_name'
));
To get this working you need to modify dbo_source. Copy it from cake/libs/model/datasources/dbo_source.php to app/models/datasources/dbo_source.php.
You can download my modified dbo_source.php . I have commented the modified lines with "added". I have only tested this on MySQL. I do not know if it will work on other databases. Also I am not sure if my solution is the best. Please feel free to comment if you have any improvements.
To manually modify the dbo_source to support the USE INDEX syntax:
in function read:
/* added */
if (!isset($queryData['use']))
$queryData['use'] = null;
/* /added */
in function generateAssociationQuery:
return $this->buildStatement(
array(
'fields' => array_unique($queryData['fields']),
'table' => $this->fullTableName($model),
'alias' => $model->alias,
'limit' => $queryData['limit'],
'offset' => $queryData['offset'],
'joins' => $queryData['joins'],
'conditions' => $queryData['conditions'],
'order' => $queryData['order'],
'group' => $queryData['group'],
'use' => $queryData['use'] // added
), $model
);
in function buildStatement:
return $this->renderStatement('select', array(
'conditions' => $this->conditions($query['conditions'], true, true, $model),
'fields' => implode(', ', $query['fields']),
'table' => $query['table'],
'alias' => $this->alias . $this->name($query['alias']),
'order' => $this->order($query['order'], 'ASC', $model),
'limit' => $this->limit($query['limit'], $query['offset']),
'joins' => implode(' ', $query['joins']),
'group' => $this->group($query['group'], $model),
'use' => $query['use'] // added
));
in function renderStatement:
case 'select':
/* added */
if (empty($use)) // added
return "SELECT {$fields} FROM {$table} {$alias} {$joins} {$conditions} {$group} {$order} {$limit}";
else
return "SELECT {$fields} FROM {$table} {$alias} {$joins} USE INDEX ({$use}) {$conditions} {$group} {$order} {$limit}";
/* /added */
break;
Jag gillar vsftpd eftersom den är ganska smidig att arbeta med. För att sätta upp en server och några ftp-konton:
sudo apt-get install vsftpd
redigera /etc/vsftpd.conf.
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
pasv_enable=YES
tcp_wrappers=YES
pasv_min_port=15393
pasv_max_port=15394
port_enable=YES
pasv_address=#SERVERNS EXTERNA IP#
Öppna upp 15393-15394 och 20-21 i brandväggen.
Ftp konton sätts enklast upp med:
useradd -g ubuntu -M NAMN
passwd NAMN
(-g ubuntu är en grupp)
vim /etc/passwd för att sätta hem-mappar till dina användare.