dimecres, 27 de maig del 2009

dilluns, 25 de maig del 2009

dimecres, 20 de maig del 2009

Moltes coses?

De vegades recomforta:



En fi, comencem:


No ho he dit, però he començat a treballar. Exactament no sé si puc explicar què fai al 100%, així que em curaré en salud i diré lo bàsic:

php

Cert, odio el php, i?

De fet, estic començant a descobrir com treballar amb php sense que tot sigui un infern, i... no m'ha canviat molt la opinió. Bàsicament es necessita disciplina per no tenir pressa i fer les coses correctament. Coses com Xdebug ajuden, sens dubte... He descobert un munt d'eines friquis que funcionen amb el meu entorn preferit de programació: Eclipse.
  • XDebug: Brutal, un debugador PHP per debugar línea a línea, com estavem acostumats a fer-ho al Visual Studio (Però al debugador de l'eclipse, que m'agrada lleugerament més). Simplement orgasmic poder veure com l'infern PHP es fa una mica planer!
  • Pear, una mena de apt-get per a extensions de php, curiós.
  • Phing. Simplement... una fricada innecessària, al meu gust. Podem discutir ampliament la seva utilitat però... calia? És un reemplaçament per al makefile... on els fitxers són escrits en xml, cosa correcta i "multiplataforma" "gràcies" a que funciona.... mitjançant el CLI de PHP (o sigui... com cshell, però en PHP, la jóstia). El seu argument contra ANT és que... ANT és el mateix que ells (exactamtent) però basat en Java en comptes de PHP, i tothom sap que és molt més freqüent tenir un interptret de shell de PHP instalat que no una maquina virtual de java, oi???? [Ultima part llegir en to d'ironia]
En fi, molt d'aprenentatge. Avui hem discutit també sobre WOW [aka world of farm] i alternatives [per gent amant del pvp s'ha decretat que es dediquin al GW o al WAR].



Però no faré un post basat en estrés només parlant de la feina. Si la feina és relax comparada amb fer un semestre amb una assignatura menys de lo normal!

La setmana que bé és "la setmana guai". On tots els projectes de totes les assignatures han decidit fer la entrega de la pràctica més forta. Sigui perqué Gràfics només té un projecte, o el projecte de Gràfics val tota la assignatura [per cert, està quedant molt bé i necessitarem testers per els últims 2 dies... qui arrecla res amb 2 dies de test? ningú! Interessats, parleu amb mi], tenim fins hi tot el projecte penjat a la forja!

També podem parlar de Arquis... Diguéssim que és una assignatura de fons... 1 examen (si no més) per setmana fa que un acavi mentalment esgotat. Si a més toca optimitzar absurdament un codi un acava tenint la sensació de cerbell escorregut (al pal esponja). Suma-li el tema de "fer una memòria" i ja està esgotat.

No oblidem, per això, la estrella de la burrocràcia. Les pràctiques de IA serien segurament interessants si no fós per què gastem més temps fent actes i POLLADES (en majúscula) per l'estil que en la pràctica en sí. En fi... que hem fet un programa que distingeix (amb un 100% d'acuresa en els nostres tets) el idioma d'un text donat! Estem fent ara un filtre d'Spam! I hem fet un competidor decent del dilema del presoner i... estem fent un jugador de Rock Paper Scissors Lizard Spock!

Ara que hi penso, vaig anar a vere la peli d'Star Trek i no ta gaire malament... i un dia tocarà anar al burguer king per tenir la fricada (un ninotet de l'spock molt mono jejejeje...)

En fi, no crec que hagi parlat de tot (ei, dilluns és el dia de l'orgull friqui i al CRUAB organitzem coses... i jo en sóc tresorer i a sobre em toca organitzar un torneig suís!) però de moment em donc per satisfet. Bona nit i... bé, bona sort, no?




Edit: ho sé, el primer video no va. Youtube no és el mateix des de que es preocupen per el copyright ;-)

divendres, 15 de maig del 2009

El final de l'etern

12 anys.

Això és el que ha tardat 3D Realms en tancar, fruït del monstruós desenvolupament de Duke Nukem Forever. Així, el joc amb més temps de desenvolupament de la història ha quedat cancelat.


O això ens volen fer creure. Take Two (La editora) no va voler finançar el projecte (per això s'ha cancelat), però rumors diuen que el joc podria estar fins hi tot preparat per aquest mateix any. El rumor oficial ès que EA vol comprar els drets del joc. Qui sap?


De moment tot el que tenim és un video llençat per un ja ex-empleat de 3D Realms, que mostra imatges de l'estudi del joc:


dimecres, 6 de maig del 2009

La mà perfecta.

M'apunto això que és un fet històric que no tornarà a passar mai més:

-> Joc: Butifarra

Cartes:
  • Semifallo de Bastos (amb manilla)
  • Manilla + 6 de copes [a la primera mà el meu company tira l'as de copes...]
  • 11, As i manilla de Oros
  • 10, 12, As, manilla i 2 cartes random més de espases.
Em toca cantar...

Què haurieu cantat?

diumenge, 26 d’abril del 2009

Programació Orientada a Objectes

Què és la programació orientada a objectes?
Per què s'usa tant?
Quines són els seus avantatges i els seus inconvenients?

Bé, aquests són alguns dels interrogants, no els únics, que espero contestar avui en aquest post.

Primer de tot, i per explicar què és la programació orientada a objectes, cal explicar els 3 principis fonamentals sobre el quals està construït.

I si expliques abans què punyetes és un objecte i què és una classe, com la gen normal?

Bé, jo volia...

Tu volies, tu volies, comencem per el començament:
Un objecte és una entitat construïda per un estat intern (atributs) i unes accions que pot fer (mètodes) per a canviar-los.

Bé, jo no ho hagués definit millor.

Gràcies :-D

Ehmmmmmmm doncs... per on anava?

Els 3 super-principis de la OOP.

Gràcies, és que perdo el fil.

En fi, aquí teniu els principis fonamentals de la OOP:
  • Encapsulament.
  • Herència.
  • Polimorfisme.
Estàs segur que existeix "encapsulament"?

No massa. Puc continuar?

Va, continua...

Doncs bé, la clau per a programar bé OOP és entendre aquests conceptes. Aneu amb compte, són gradualment més complexes, i cal que entengueu cada un bé abans de continuar.

Encapsulament [Abstracció]

A opinió meva, el atribut que menys importància se li dóna i, en canvi, el més important. Al ser el més senzill, hom acostuma a menysprear-lo lleugerament, també força moltes vegades que el programa sigui menys eficient, més lent, o que ocupi més. Si això és un problema, probablement hauries de pensar-te a moure't a un altre llenguatge, no a saltar-te el pilar principal del OOP. En tot cas aquí tenim:

L'abstracció es tracta simplement d'això: abstraure la implementació d'un objecte de la seva interfície.

Què vol dir això? Que no ha de fer falta MAI, PER A RES, saber com un objecte funciona internament per a poder-lo fer funcionar.

Saber com funciona un objecte ens dona, evidentment, avantatges: podem fer-lo servir millor, etc... però no ens hem de deixar temptar, abstraure correctament els objectes ens dóna moltes avantatges també, la primera de totes que deixem de dependre de com estigui fet.

I aquest és el salt que fa que la OOP funcioni tan bé. No us enganyeu, no és cap de les coses "guais" que fa (polimorfisme, sobrecarrega [que no mencionaré per què encara que pot facilitar la vida, el seu sobre ús la complica més que no ajuda, a més, no és una característica original i comuna del OOP], herència), sinó la capacitat de poder fer "d'acord, això funciona, continuem", i no estar-se sempre amb detalls.

Per a què ens entenem, a algú li fa falta saber com, exactament, funciona internament una radio per fer-la anar? El que el 99% (i pico) de la gen sap és, simplement, que quan l'engeguen i posen la freqüència que desitges sona la música que volen. I si necessitéssim saber fer anàlisi de Fourier i transformacions de Laplace per fer-les servir haurien tingut cap èxit les ràdios? Jo crec que no.

Resumint, un programador de OOP necessita, per fer servir un objecte, a quina classe pertany i què fa aquesta classe (no com ho fa).


Herència.

Una altra de les famoses característiques. Què és l'herència? Doncs el que el seu nom indica, que els fills hereten coses dels pares!

Què vol dir això?

Cada objecte pertany a una classe. Això és senzill d'entendre. Per tal de simplificar les coses, un pot definir una classe "Radio de Cotxe" i "Radio portàtil". Està clar que tant "Radio de Cotxe" com "Radio portàtil" tenen moltes coses comuns, entre elles, que són "Ràdios". Així, un hauria de repetir moltes coses de "Radio de Cotxe" a "Radio portàtil", per tal de simplificar això el que es fa és definir una classe "Radio" que és pare tant de "Radio de Cotxe" com de "Radio portàtil". Aquestes dues es comporten doncs, com "Radio" amb els seus matisos.

Això simplifica moltes vegades el codi, sobretot si se segueix la màxima de no repetir mai codi innecessàriament i tenir les coses sempre agrupades lògicament.

Polimorfisme.

El polimorfisme no és més que una petita volta al concepte d'herència.

Continuant amb l'exemple anterior, tant "Radio de Cotxe" com "Radio portàtil" són, a la vegada, "Radio"s. El polimorfisme s'aprofita d'aquest concepte i et permet usar un objecte de la classe "Radio de Cotxe" com si fos de la classe "Radio", i és que, en el fons, també ho és!

Com funciona això? Imaginem-nos que tens un programa que treballa tant amb "Radio de Cotxe" com amb "Radio portàtil". En un moment donat, necessites engegar un seguit d'aquestes ràdios. Pots crear un procediment que engegui primer totes les "Radio de Cotxe" i després les "Radio portàtil", o un que simplement agafi un seguit de "Radio" i les engegui totes, sense preguntar-se de quina mena de ràdio és exactament.

Potser les "Radio de Cotxe" són molt antigues, analògiques, mentre que les "Radio portàtil" són modernes i digitals i ambdues funcionen de formes força diferents. Malgrat tot, "engegar" és una cosa que poden fer totes les ràdios, i en totes es fa igual: prement el botó amb un triangle.


Bones pràctiques.

Hem vist, de forma genèrica, com funciona la OOP. Pròximament mirarem un cas concret, Java, però abans he de fer unes petites advertències.

Polimorfisme i herència donen eines molt potents i capaces de fer coses molt complicades. No caiguem en la temptació, cal sempre mantenir les coses el més simples possible per tal de seguir l'esperit de OOP: fer les coses senzilles. Un pot veure's temptat, per exemple, que quan un prem el botó d'engegar d'una ràdio faci una cosa diferent, que potser sembla adequada en una situació però (com el meu exemple vol demostrar) pot portar problemes de confusió, per molt bé que ho documentis.

I aquest és el problema que moltes vegades vé amb la sobrecàrrega de mètodes i operacions. Per tu pot semblar clar que quan multipliques 2 vectors et dóna la multiplicació element a element. Però algú pot interpretar que és la multiplicació vectorial, cosa que no és exactament el mateix, tot i donar un resultat similar (un altre vector).

Així que recordeu: amb un gran poder, bé una gran responsabilitat!

dimarts, 21 d’abril del 2009

El camí a Dortmund

Quantes coses cal fer per marxar d'erasmus...

Primer de tot, aquí és on vui marxar: mapa


Si, al costat de UniversitätstraBe (com es feien les ß? Ah, copia pega de la wikipedia...), veig com els alemans continuen posant nom a les coses amb la seva original originalitat (original de "que remunta a l'orígen", i originalitat de "Acte propi d’una persona original" on original és "Que no s’assembla als altres, que té quelcom d’estrany, de rar" [entengui's com a ironia]).

En fi, parres a part, que he de fer un munt de papers amunt i avall. I com que després em tornará tornar a buscar les coses per la caòtica web (que no està tant malament si la compares amb webs realment horribles d'universitats que ronden per Europa) una i una altra vegada.

En fi:

Curs estiuenc [mirar el máster de robótica, allà tindrás assignatures a convalidar]
Curs gratis d'alemany
Demanar places [abans del desembre, si pot ser]

Coses que falten: convalidar crèdits... je... je... je... jeeeeeje