Archive for the ‘Projekter’ Category

Easy deploy of Rails app with Capistrano, Varnish and Sidekiq

Thursday, August 9th, 2012

Whenever I start a new Rails project, I will like to be testing it extensively on another server, as fast as possible.

So there is a couple of steps that I will go through every time I start my project. I need the following base in all projects:

  • Sidekiq as a background worker; to send emails, process data etc.
  • Capistrano for deploying the app.
  • Unicorn, to run the app after deployment.
  • Foreman, for running the setup locally.

This is my config:

[Gemfile]

[config/sidekiq.yml]

Configs that need variables to be set:

[config/unicorn/production.rb]

[config/deploy.rb]

Remember to bundle, and run ‘capify .‘ in the project to generate the Capfile.

Building a chat with nice tabs in jQuery

Saturday, December 10th, 2011

I am currently trying to find an excuse to work with NowJS which is a very cool NodeJS server that makes it possible to make a server push to connected clients. You are able to group your users into “channels” and only send some groups messages.

I have only been able to build the client, and the javascript that goes with it. It is still very hacky (both css and javascript) but the core concepts is there.

You are able to see a demo here: Demo chat preview

If you were active on the danish chat ‘Jubii Chat’ back in the day, you would be able to recognize one of the users ;)

Sommerferie projekter, og et 10-tal!

Wednesday, July 7th, 2010

Jeg har fået afsluttet mit tredje semester på Datamatiker-studiet. Vi har lavet et projekt i samarbejde med de andre grupper på årgangen. Vi stod for backend-delen af systemet, og så var der to andre grupper som stod for front-end delen.

Jeg blev syg til den oprindelige eksamen, så måtte til syge-eksamen, og jeg fik 10! God måde at starte sin sommerferie på :)

Her er en række projekter min sommerferie kommer til at gå med:

Pitch a game concept and win

Vi har i UngeSpiludviklere fået sponsoreret et par Xbox’e og HTC HD2 telefoner af Microsoft. Og vi har sammen med fagforeningen PROSA og spil-foreningen IGDA, fået stablet et arrangement på benene.

Konceptet går på at vi samler en masse danske spiludviklere, og får dem til at pitche idéer for hinanden, dem der har den bedste idé, får en Xbox eller en mobil til at lave deres spil på.

Roskilde-festival

Vi har igen i år et festivals projekt i Ungdommens Naturvidenskabelige Forening (UNF). Jeg har været koordinator og styret hele projektet. Vi laver en energivenlig netcafé, og oplade station på festivallen.

Vemod

Nu kommer vi til softwareprojekterne, det her er skrevet i C#.

Hvor tit sidder man ikke og savner muligheden for at søge efter et billede i et billede?

Jeg er ved at bygge noget software som muliggører at søge efter billeder i billeder. Den er dog ikke helt effektiv endnu, men jeg har et par tricks i ærmet. En test jeg kører lige nu giver følgende resultater:

bigpicTid for at at søge efter billederne i det store billedet:
2xchart 3,809 sekunder
3xcheckbox 2,135 sekunder
1xdownloads 14,997 sekunder

:)

Non-blocking connections i Java

Tuesday, April 27th, 2010

Jeg sidder lidt her og arbejder på en multitrådet chat-server der basalt minder lidt om IRC-protokollen. Da IRC i sit design mere bygger på stabilitet, og ikke så meget på hastighed, kan jeg ikke bare kopiere en typisk IRC-servers design.

Min første approach på at lave en multitrådet server gik med at bruge java.net.Socket, men der stødte jeg hurtigt på lidt problemer. På server-siden samler jeg alle mine klienter i forskellige rum, og broadcaster beskeder fra andre klienter til klienter i samme rum. java.net.Socket er en blocking-connection, dette kan nemt forklares ved følgende eksempel: (OBS! Pseudocode, skal du have det til at virke skal du bruge Outputstream på din socket)

class Room
{
    ArrayList clients = new ArrayList();
    public void broadCastToAll(String msg)
    {
        foreach(Socket s : clients)
        {
            s.out.write(msg);
        }
    }
}

Denne kode er lidt dum i et multi-trådet miljø, men det jeg vil fokusere på er s.out.write(), denne metode terminerer ikke før beskeden er sendt til klienten.

Det betyder at en langsom klient kan blokere for beskeder til de næste klienter i listen, derfor kaldes det blocking I/O. For at komme udenom dette bliver man nødt til at benytte java.nio.* hvilket virker nogenlunde ens, bare uden at blokere.

Til Copenhagen Games sammen med UngeSpiludviklere

Wednesday, April 7th, 2010

Jeg deltog til Copenhagen Games der forløb af stablen fra 1. til 4. April i Øksnehallen. Det var i forbindelse med et arrangement sammen med UngeSpiludviklere, vi havde en lille stand hvor vi viste vores spil frem, og vi havde også taget elektronik med fra Labitat. Prosa havde givet os mulighed for at deltage på standen, så den var beklædt med PROSA-bannere, brochurer og reklamer.

Der var også et tv-hold fra en skole der var ude og optage, og i den forbindelse blev jeg også interviewet.

Man kan se flere film fra eventet her.

Alt i alt var det rigtigt spændende, og en rigtig fed oplevelse! :)