Vattna blommorna – Del 7

God morgon!

Tänkte jag kunde bidra med koden som jag skrev igår. Den är nog inte helt färdig vid närmaste eftertanke, men jag tror den fungera som den skall just nu. Det enda som inte är testat är RA2 och hur den fungerar. Men det hoppas jag den gör :-).

Blir det att köra till Kjell.com och köpa lödkort ikväll? 🙂

Koden jag skrev ser ut enligt följande:

#include <pic16f690.h>

typedef unsigned int word;

word at 0x2007 __CONFIG = (_INTRC_OSC_NOCLKOUT & _CP_OFF & _WDT_OFF & _BOR_OFF & _PWRTE_ON & _MCLRE_OFF & _IESO_OFF & _FCMEN_OFF);
void delay_ms(long ms)
{
    long i;

    while (ms--)
        for (i=0; i<=50; i++) //50 iterations is _basically_ 1 ms.
			;
}
unsigned int pumpint=0; //just an int for loops..
unsigned int totalpumps = 10; //Keeping total pumps for ten pumps before a reset is needed (until calculated how much 10 litres goes for)
void main () {
	TRISC = 0x00;	/* PORTC, All outputs */
  TRISA2 = 0x01; /* RA2 input */
  while(1)
  {
    //Start pumping water, if RA3 isn't activated.
    //Wait for the breaking SW1
    if(!RA3 && totalpumps < 10)
    {
      while(1)
      {
        if(RA3)
        {
          break;
        }
        PORTC=0x0f;
        //As an extra marker, never pump for more than 5 secs.
        delay_ms(1);
        if(pumpint >= 5000) //Loop until 5000ms == 5secs is reached.
        {
          PORTC=0x00;
          pumpint = 0;
          totalpump++;
          break;
        }
        pumpint++;
      }
    }
    //Pumping done. Wait 15 minutes
    PORTC=0x03;
    //Reset button must work within this time. Don't sleep for a whole 15 mins, but keep polling.
    while(pumpint <= 90000) //15 min == 900000ms. We're polling each 10ms.
    {
      if(RA2) //RA2 is the reset switch
      {
        totalpumps = 0;
        pumpint = 0;
      }
      pumpint++;
      delay_ms(10)
    }
  }
}

Som ni säkert ser så är det inget direkt avancerat för att skriva program till en PIC:-).
Ska ta och skapa mig en riktig projektsida här på bloggen om just detta. Så fort jag har lite mer fysiskt arbete klart!

Vi hörs
Marcus

Vattna blommorna – Del 6

Idag har jag fått lite tid till att programmera lite mer på mitt blomstervattnarprojekt!

Den stora anledningen till varför det har tagit så lång tid har varit för att jag har tyckt att det har varit roligare med att programmera annat,men framförallt att Windows har krävts för att labbkortets switchknapp skall fungera. Och jag är ju ingen jättefan av Windows, när det gäller hemanvändning :-).

Oavsett operativsystem så fick jag igång alltihop och nu ser det ut att fungera precis som det skall.

Programflödet i piccen ser ut enligt följande:

  1. Vänta 60 sec innan rutinen körs igångs.
  2. Kolla att RA3 är FALSE
  3. Om FALSE Pumpa vatten 5 sec eller till RA3 blir TRUE
  4. Vänta 15 min. Kör om rutinen.

Det är ett relativt enkelt program (till att börja med iallafall) som inte gör mer än vattnar på enklaste vis.

Kod kan jag posta först imorgon, då datorn är avstängd och jag för närvarande skriver från min netbook.

Jag återkommer med mer information imorgon!

På återseende!
Marcus

KDE 4.3

Igår släpptes ännu en fantastisk release från KDE-utvecklarna, och även om jag personligen har kört 4.3 ett tag nu via Releasekanditaterna så blir jag mäktigt imponerad varje gång.

I denna release har där fixats 10,000 buggar och 63,000 ändringar har skickats in till KDE‘s gitourious repository. Och även om målet med version 4.3 hela tiden har varit att polera föregående versionhar där ändå kommit 2000 nya features på sex månader. Det kallar jag effektivt arbete! Jämför gärna med gnomes senaste release 2.26 där det uppenbarligen inte händer så mycket:

GNOME 2.26 with its hundreds of bug fixes and user-requested improvements.

Tittar vi lite på vad som hänt på skalet så ser vi att ett nytt plasmatema har tagits fram och blivit standard. Det heter Air och gör hela upplevelsen ordentligt häftig!

KDEs egna annonsering av 4.3 hittar du här

KDE är verkligen fantastiskt, och det får stackars gnome att vara alldeles för gammalmodigt för att en modern människa ska använda det 🙂

Nu är det dags att bege sig till arbetet!
Vi hörs!

Vilken dist kör du?

En ständigt återkommande fråga är vilken dist man kör. Varför man kör den och vilken man borde köra ;). Och eftersom jag fick frågan av @dikatlon på twitter så får detta helt enkelt bli ett inlägg som handlar om vilka distributioner jag för närvarande kör.

Kubuntu

Baserat på Ubuntu (som i sig är baserat på debian) men istället för att köra skrivbordsmiljön gnome har man skapat sin egna touch och lagt in KDE istället. Ett för mig ett helt naturligt val, då jag alltid har gillat hela utseendet med KDE, jämfört med gnome, som ubuntu erbjuder.

Nuvarande version av kubuntu (9.04) kör KDE 4.2.1, som standard men jag har valt att uppgradera till 4.3 :-). Det senare är alltid bättre!. Och om vi bortser från det faktum att den kör KDE så är en anledning till att den håller mig produktiv. Jag behöver inte läsa manualer, confa filer eller köra skript. Kubuntu gör det mesta automatiskt och bara låter mig arbeta på datorn, istället för att arbeta med den.

Näste dist till rakning är Arch linux. Arch linux, som från början bygger på Svenska Crux (vilket var en tidigare favorit) är en dist som låter dig bestämma precis över vad du vill ska installeras i ditt system.  Du börjar med enbart en kärna, lite gnuprylar och pakethanteraren pacman. Arch linux får ett stort plus i kanten för sin fantastiska dokumentationsbas, de aktiva medlemmarna som håller paketen vid liv och ser till att de blir uppdaterade. Även här kör jag med KDE men den verkliga anledningen till att jag använder Arch är mitt sug efter att lära mig saker, att få saker och ting att fungera på egen hand, istället för att låta apt-get sköta rubbet. Man har en lite mer kontroll och man lär sig otroligt mycket på att köra denna dist.

Och till sist. Linux Mint. En dist som är baserad på ubuntu, men där man inte gillade färgen brunt samt dess tankar gällande stängda format som etc flash/java/mp3-stöd. Till en början var jag väldigt skeptisk till varför man överhuvudtaget behövde köra en dist som Mint, när det är så enkelt att installera dessa tillägg. Jag menar, man får ju frågan en gång i Ubuntu, därefter installeras det och problemet är löst. Men efter mycket positiv kritik utav dem som faktiskt testat det på “Linuxportalen” (antagligen tack vare avataren tux-svens påtryckningar) gav jag mig på att testa denna distribution

Och helt ärlig. Den är kanon! Linux mint har tänkt på allt, och utfört sitt arbete bra!

Jag kör linux mint på min Acer aspire one (som har fruktansvärt dålig SSD) med gnome (!!) eftersom KDE inte riktigt vill fungera optimalt (troligen på grund av disken) på den.  Den låter mig surfa, hittar min mobil som får agera modem och den kör på mycket utav det senaste programmen.

Det här var  vi mina tre val av distributioner. Vilka kör du?

Ett sista försök

Igår blev det inte så mycket programmerat som jag egentligen skulle velat. Men lite grann blev det iallafall.

De trevliga grabbarna på #despotify var väldigt engagerade med att få in mig i deras irc kanal #despotify på EFNet för att diskutera just spytify och hur man skulle få igång det.

Det blev inte jättemycket diskussioner dock, men det berodde nog mest på att jag inte var så aktiv på kanalen utan satt länge och letade efter information om hur Qt “tar över” trådarna utan att hitta något vettigt. Mitt sista försök blev till att göra spytify till sig egna python tråd och låta Qt sköta sitt, men det fungerade inte heller utan fick enbart fönstret att verkligen hänga sig. Mycket märkligt.. Men jag lärde mig att skapa trådar i python iallafall så helt i onödan var det inte :-).

Koden: http://pastebin.se/198606

Lite senare på kvällen blev det en diskussion med “Kagee” som också hade försökt sig på att göra en spytifyklient med pyQt och även libdespotify med C++, med precis samma resultat som mig. Den enda gemensamma nämnaren till problemet jag kan komma på är gstreamer som används för uppspelningen och att libdespotify trådar en massa som kanske “tar över”. Jag är osäker, men det är en teori :-).

Kagee hade iaf löst sitt problem med QProcess och simple-klienten. Något jag också funderat på men skippat för att det inte känns rätt då man blir helt bunden till vad simple klarar av.

Jag ger mig på ett sista försök med pyQt/pyKDE idag. Denna gången ska jag starta två trådar där en är QT-tråden och den andra spytify, så de inte får något direkt med varandra att göra. Det kanske kan fungera, men å andra sidan vet jag inte ifall det är möjligt att köra MainWindow i en egen tråd. Vi får se :-).

Fungerar inte detta ger jag upp pyQt och går på wxWidgets istället!

Nu är lunchen snart slut så.. Synes!
/marcus

Försök med despotify med python bindings

Jag spenderade mestadelen av kvällen med att programmera lite pyQT/pyKDE med despotify python-bindings.

Till en början tänkte jag “Gud vad lätt detta måste vara. Bara att skriva lite pythonkod och så spelar den min musik.”

Och i 90% av fallet var det så också. Det gick enkelt att söka och klistra in i en ListWidget, skapa action på signaler som dubbelklick för att spela.

Men…. När uppspelningen börjar fryser fönstret tills låten är klar vilket är lite konstigt, ifall man kör test.py (i despotify/src/bindings/python/) går verkar den skapa sin egna tråd och gå vidare.

Vilket den även gör här, men inte på samma vis. När musiken börjar spela kommer det fram felmeddelande i terminalen som säger:

  • QMetaMethod::invoke: Unable to invoke methods with return values in queued connections
  • QObject ::startTimer: QTimer can only be used with threads started with QThread

Visst, hade jag använt något av de objekten hade jag förstått att det kunde gå fel. Men det gör jag inte (ivf inte medvetet).

Mitt första försök till lösning var såklart att skapa en egen tråd till spytify där den kan få hänga sig hur mycket den vill. Sagt och gjort, men det hjälper inte, MainWindow hänger sig lik förbaskat!

Nästa försök var att göra spytify global och därmed utesluta den direkt ut MainWindow-funktionerna, men det fungerade ej heller.

Och nu som sista grej var att koppla bort KDE helt och bara köra pyQt, men lika mycket stopp där.

Jag har inga idéer kvar.

Hade varit jättetacksam för hjälp med det här.
Sources: http://github.com/marcusfollrud/KSpot/

Screenshot

Ang. (de)Spotify

Jag har länge varit ett fan av despotify-gänget och deras fantastiska entusiasm när det gäller att få spotify på skrivbordet med öppen kod.

För någon månad sedan skapade dom bindings till både python och ruby, men fortfarande finns där inte någon klient till skrivbordmiljöerna (förutom om man gillar java…). Vilket har fått mig att tänka:

Hur svårt är det att skapa en klient som använder libdespotify och som sen bygger på exempelvis python?
Vilket fick mig att tänka ännu ett steg. Jag programmerade just pyKDE för min plasmoid (okej, den kunde blivit bättre), och även om jag inte är killer på det så kanske det går att lära sig relativt lätt. För python är ju trots allt inget direkt svårt språk. Någon mer som är sugen?

Detta tål att täna på, precis som allt annat. Jag måste först få igång mitt blomprojekt, då jag har alla delar. Så fort det är klart ska plasmoiden bli lite bättre, med stöd för taggar, hämta kategorier, ladda upp bilder i mediabiblioteket och göra KTextEditor-bakgrunden vit!

Det kanske redan finns en despotifyklient till KDE? Tipsa gärna isåfall.

Publish to WordPress Plasmoid

Vill du blogga på din wordpressblogg utan att aktivt gå in via din webbläsare?

Isåfall har jag en lösning att erbjuda dig 🙂

Publish to WordPress Plasmoid är en plasmoid till KDE4 som enkelt låter dig skriva ett blogginlägg utan att gå in direkt på själva bloggsidan.

Den är väldigt enkelt skriven och är baserad på pyKDE och wordpresslib.

Just nu erbjuder den inget annat än det mest simpla. Att skapa ett inlägg med enbart en titel och text.

Funktioner som skulle kunna integreras är taggar,kategorier och inmatning av bilder. Men, det har jag inte gjort i denna release.

Vill du testa den?
Ladda ner här

Kolla källkoden på github (GPL licensierad):
http://github.com/marcusfollrud/Publish-to-Wordpress-plasmoid/tree/master

Kontaka mig gärna ifall du skulle vilja hjälpa till med något!
mail: marcus.follrud<canelbull>gmail.com

Skapandet av en Plasmoid

Jag har sagt det innan, jag säger det relativt ofta, jag säger det igen:
KDE är fantastiskt!

Detta inlägget kommer lite sent p.g.a jag har mestadelen av kvällen suttit och programmerat en plasmoid för att skapa inlägg till wordpress bloggar (bland annat min egen).

Det är inget som är svårt, att skapa en plasmoid. Man har alla möjligheter till att göra det. Du kan skapa en plasmoid om du har kunskaper inom:

  • Javascript
  • C++ (QT)
  • Python
  • Ruby

Många som någon gång sysslat med utveckling kan något av de här språken. Eller iallafall någolunda förstå sig på dem, vilket var KDE-utvecklarnas tanke när Plasma skapades; att göra det enkelt för alla att skapa tillägg! De har verkligen lyckats, för särskilt svårt är det inte!

Plasmoiden kommer att fungera väldigt enkelt. Du lägger in den, konfigurerar efter din bloggadress + credentials och voila. Sen är det bara att skriva :-).

Jag har tyvärr ingen screenshot att lägga upp just nu (Sitter med Linux Mint på min AAO, som inte riktigt gillar KDE), men uppdaterar inlägget imorgon!

Projektet finns ute på github.com för den som vill kolla koden 🙂
Länk: http://github.com/marcusfollrud/Publish-to-Wordpress-plasmoid/tree

Ha en bra kväll/natt
Marcus

Säkerhetshål i Kärnan

Brad Spengler är en klok man. En man som hittade en ganska så rolig (men allvarlig) exploit i linuxkärnan som tack vare optimering i gcc ger den ovälkomna tillåtelse att roota runt i datorn. Inget som är särskilt trevligt eller hur?!.

Exploitet:

  • Avaktiverar SELinux
  • Avaktiverar auditing
  • Avaktiverar AppArmor
  • Avaktiverar LSM
  • Lurar “userspace” att tro att SElinux är i “Enforcing mode”
  • Ger hackaren fullständiga privilegier.

Det verkar som om det bara gäller för kärnor med version 2.6.30+ samt RHEL5-2.6.18-157. Med andra ord, stackars alla användare av nya “Pardus Linux” (som kör 2.6.30).

Se ett youtube klipp:

Dock tror jag man kräver sshaccess (alternativt något skal som PHP etc) in till burken för att kunna exekvera det (fortfarande lite säkerhet), men är du väl inne, blir du lätt root. Kan inte vara roligt att vara en serveradmin med 30+ kärna (om det nu finns några).

Vad som är extra roligt är att kernelutvecklarna förnekar problemet genom att anse att exploitet inte är en säkerhetsrisk eftersom man använder setuid,  vilket är känt för sina säkerhetshål, enligt

Ladda ner hacket

Källa: http://www.theregister.co.uk/2009/07/17/linux_kernel_exploit/

Edit 19:40

Det blev lite kort innan och jag fick inte riktigt med allt. Jag tror personligen inte att det är något dåligt att detta kommer ut i “friheten”. Desto fler som känner till det, desto mer kommer det att påverka utvecklarna och kanske därmed påskynda lösningen istället för att dryga ut det så mycket det bara går p.g.a ovilja (ungefär som Microsoft och IEbuggen). Med öppenhet kan alla som hjälpa till att lösa problem, istället för att enbart eskalera uppåt.