EnglishSvenska

Importera gigantisk databas till MySQL från cmd/terminal

powershell_mysql_cmd_source_import_sqlAtt importera stora databasfiler kan ofta bli lite jobbigt om man inte använder rätt metod. Phpmyadmin är kasst på att importera riktigt stora sql-filer eftersom man får timeout. Har man däremot direkt tillgång till mysql-servern kan man importera därifrån med bättre resultat.

#mysql -u USER -p
#skriv lösenord
#use DATABAS
#SOURCE /path/to/sql/file.sql; (missa inte 😉

Låt den importera!

Om det inte fungerar kan det vara en god idé att ta en titt på my.ini för att ge mysql mer kraft.

Vanliga fel i cron

Ubuntu-logoOm det inte ser ut som att cron körs, läs /var/log/syslog och se om cron finns där.

Jag såg att cron sagt:
(CRON) info (No MTA installed, discarding output)

Detta gör att ditt skript inte körs på grund av att en mailserver inte är konfigurerad. Antingen konfigurerar man upp den eller så lägger man till MAILTO="" i crontab -e. 

För att få output från ett skript som körs via cron skriver man något i stil med:
*/5 * * * * /path/to/script.sh > /path/to/logfile.log 2>&1

Testa cronjob tycker jag går snabbast på det här sättet (tar gärna emot förslag på en förbättrad metodik):

  1. date för att se serverns klocka. 
  2. crontab -e
  3. kopiera jobbet du vill köra till en ny rad. Skriv in serverns klockslag men lägg på 1 eller två minuter. 57 9 * * * /scriptet.sh exempelvis. Spara crontab.
  4. date igen för att se om cronjobbet borde ha körts. 
  5. Öppna /var/log/syslog och se om cronjobbet körts utan problem. Öppna också loggfilen till det specifika skriptet. tail -f /var/log/loggfil fungerar helt ok.

Två till saker att tänka på om crontabs. 

  1. Den kör med begränsade miljövariabler. Skriv alltid hela sökägen till allt!
  2. Avsluta alltid med en tom rad längst ner. Cronjobs kan annars ignorera jobbet.

S3 Bucket och EC2 + enkel backup av mysql

Till dem som vill mounta en S3 bcuket till en EC2. Jag kör ubuntu men det borde fungera andra system också s3cmd är ett verktyg som är väldigt bra när man arbetar med S3 Bucket. Installera och konfigurera:

sudo apt-get install s3cmd

s3cmd --configure
Skriv in access key id och secret access key från AWS. Följ instruktionerna i installationen.

Om allt fungerar kan du lista och skapa buckets. Se instruktioner på http://s3tools.org/s3cmd

#Skript för att göra backup av mysql är ganska enkelt:
/usr/bin/mysqldump -u root -LÖSENORD' DATABAS> /home/ubuntu/backup/DATABAS.sql

#zippa med:
zip /home/ubuntu/backup/DATABAS_`date +%F`.zip /home/ubuntu/backup/*

#Ladda upp till s3:
/usr/bin/s3cmd put /home/ubuntu/backup/DATABAS_`date +%F`.zip s3://BUCKET/DATABAS_`date +%F`.zip

#Rensa bort filerna.
rm -rf /home/ubuntu/backup/*

 

Lägg i skriptfil och kör med cron. Lätt som en plätt. Nedan är min skriptfil som jag brukar använda som mall:

 

#!/bin/bash

DATABASE_USER=''

DATABASE_PASS=''

DATABASE_1=''

DATABASE_2=''

DATESTR=`date +%Y-%m-%d_%H%M%S`

BUCKET_NAME=''

 

/usr/bin/mysqldump -u $DATABASE_USER -p$DATABASE_PASS $DATABASE_1 > /home/ubuntu/backup/$DATABASE_1.sql

/usr/bin/mysqldump -u $DATABASE_USER -p$DATABASE_PASS $DATABASE_2 > /home/ubuntu/backup/$DATABASE_2.sql

zip /home/ubuntu/backup/$DATABASE_1-and-$DATABASE_2-$DATESTR.zip /home/ubuntu/backup/*

/usr/bin/s3cmd put /home/ubuntu/backup/$DATABASE_1-and-$DATABASE_2-$DATESTR.zip s3://$BUCKET_NAME/$DATABASE_1-and-$DATABASE_2-$DATESTR.zip

rm -rf /home/ubuntu/backup/*

 

För att lägga denna i cron varje natt:
#crontab -e (sudo innan för att köra alla crons som root)

0 0 * * * bash /usr/local/bin/SKRIPTET.sh > /var/log/SCRIPTET_cron.log 2>&1

"> /var/log/SCRIPTET_cron.log 2>&1" är för att logga allt till en egen fil. Mycket användbart!

 

Broken pipe error:
Fick detta och förstod inte vad det var. Testade att använda US istället för Ireland på serverplacering och då fungerade det.

Roota och installera CyanogenMod 7 på HTC Desire

htc_desire_cyanogenDet var dags att att uppgradera min gamla HTC Desire mjukvarumässigt. Det hela är ganska lätt om man bara vet vad man gör.

  1. Roota telefonen med unrevoked. http://unrevoked.com/
  2. Installera drivrutinger från Unrevoked. Det står hur man gör i guiden man får med. Kom ihåg att avinstallera HTC Sync.
  3. När telefonen är rootad laddar du ner Titanium Backup och tar backup på de program du känner är viktiga.
  4. Kopiera över hela innehållet på SD-kortet till en tom mapp på din dator. Säkerhetsåtgärd
  5. Installera RomManager från Market. Klicka dig fram till att ladda ner CyanogenMod. Jag valde 7.1.0 RC1.
  6. När nedladdningen är klar får du en fråga om du vill säkerhetskopiera nuvarande rom, tömma data, och wipe dalvik cache. Jag kryssade i alla.
  7. Nästa fråga är om du vill starta om i ClockworkMod Recovery. Det vill man så ok.
  8. Telefonen startar om och går in i recovery. Jag valde att därifrån göra ännu en backup via "backup and restore". Vet inte om detta är fullt nödvändigt.
  9. Välj därefter Wipe data/factory reset.
  10. Välj Install zip from sdcard.
  11. Choose zip from sdcard
  12. Välj den cynanogen-zip du laddat ner. Ligger under /clockworkmod/download/download.cyanogenmod.com/get/update-cm-7.1.0-RC1-Desire-signed.zip (eller liknande)
  13. För att installera Google Apps (Market, Gmail osv) upprepa 10-12 fast med den zip-filen.
  14. När installationen är klar välj gå tillbaka till huvudmenyn (med bakåtknappen på telefonen).
  15. Reboot system now.

Om allt gått som det ska så har du nu CynanogenMod. Installera Titanium Backup och återställ alla program.

Virtual host i apache2

Enkelt i Ubuntu (och troligtvis även i de flesta andra linux-distrubutioner):

  1. Skapa en .conf-fil i sites-enabled (/etc/apache2/sites-enabled). Exempel på konfigurationer finns på http://httpd.apache.org/docs/2.0/vhosts/examples.html
  2. Skapa en symbolic link till den virtuella värden mha #sudo a2ensite mynewsite
  3. Du borde få en symbolisk länk i sites-enabled och ett meddelande om att apache måste reloadas. 
  4. Reloada med #/etc/init.d/apache2 reload

Förstora utrymmet på en EC2 instance

moln_MediumJag kör en Amazon EC2-instans som server för en webbtjänst. Servern använder EBS (Elastic Block Storage) som virtuell hårddisk. I och med att en databas växer kan det bli nödvändigt att förstora hårddisken. Jag fick leta en del innan jag hittade en hur man gör detta och därför har jag här skrivit en liten guide. Lite som en kom-ihåg för mig själv.

  1. Gör en snapshot av voymen. Detta blir en exakt kopia av den virtuella hårddisken i det läget den befinner sig i just då. Detta steg kan ta några minuter.
  2. Stoppa EC2-instansen (och inte terminate för då försvinner allt). 
  3. Gör en unmount på den volymen som fanns kopplad till EC2-instansen.
  4. Add new volume. Välj större utrymme och den snapshot du gjorde i steg 1.
  5. Mount på den nya volymen.
  6. Starta servern.
  7. Koppla upp med ssh. 
  8. #df -h för att se nuvarande utrymme.
  9. sudo resize2fs /dev/sda1 
  10. df -h igen för att se att utrymmet förstoras.

Molnet är fint!

Android-tablet på väggen

Hemelektronik är kul och att göra något själv är ännu bättre. Nedan är några bilder på hur jag förvandlade en gammal android till en central för att styra elektronik. Det blev något av lägenhetens hjärna.

android_tablet_eventghostandroid_automation_1android_automation_2

Skärmdumpar:

eventghosteventghost2eventghost3eventghost4eventghost5

Video:




Allt ligger under open source-delen på bloggen för den som är mer intresserad.

För detaljerade instruktioner för hur du gör något liknande besök https://sebastiannilsson.com/open-source/eventghost-web-gui/101-instruktioner-foer-hemmaserver-tellstick-nexa-och-ir-saendare

New better version

[Update 2012-02-13]

I have updated the code to run better on Eventghost web server. 

New screen shot:

eventghost_web_gui_html5

android_tablet_eventghost

Some screens [old]:

eventghosteventghost2eventghost3eventghost4eventghost5

Video (in Swedish):

http://www.youtube.com/watch?v=UGinP0FXSVA

Instructions:

  1. Put the files on your Eventghost web server. Make sure that you run the latest Eventghost since the earlier versions of the web server does not work very good. 
  2. /js/config.js is for configuring jquery mobile. You can probably keep it as it is.
  3. /index.html is the start page. The rest of the pages are in /docs/controls. 
  4. Visit the web server in your browser. If new actions appear when you click on buttons in the gui then it works. 

For more detailed instructions (in swedish) visit https://sebastiannilsson.com/open-source/eventghost-web-gui/101-instruktioner-foer-hemmaserver-tellstick-nexa-och-ir-saendare

Latest source code can be grabbed from Bitbucket . Or just click here to get the zip.

Lock tables in CakePHP

I needed to do some table locking. Just call the method from the controller to lock and unlock your tables. The code below is only tested with MySQL and InnoDb tables. Put it in app_model.php

{code }

<?php

class AppModel extends Model {

    function lockTableRW() {

$this->lockTable('READ');

$this->lockTable('WRITE');

    }

    function lockTable($type='READ') {

$dbo = $this->getDataSource();

$dbo->execute('LOCK TABLES '.$this->table.' '.$type);

    }

    function unlockTables() {

$dbo = $this->getDataSource();

$dbo->execute('UNLOCK TABLES');

    }

}

 

 

Helhetsresultat av kandidatarbetet (just nu)

Kandidatrapporten är inlämnad och nu återstår demonstration, presentation och opposition. Här är en video från senaste körningen vi gjorde:




Jo och rapporten går givetvis att ladda ner för den som vill:
Kandidatarbete_SSYX02-11-05.pdf 4.15 Mb

Och robotkoden som körs:
Programmeringskod (RAPID) från ABB RobotStudio 8.41 Kb

Tagged with: