Ens mudam a blogger ...
Idò això, que transllad el blog cap a un altre allotjament. A la primera entrada del nou blog, explic el perquè.
La temàtica i l'autor continuaràn amb la seva linia de sempre :D
Salut!
Idò això, que transllad el blog cap a un altre allotjament. A la primera entrada del nou blog, explic el perquè.
La temàtica i l'autor continuaràn amb la seva linia de sempre :D
Salut!
Aquest curs tenc, com a assignatura troncal de segon de batxiller tecnològic, Tecnologia Industrial II. El temari del curs es pot dividir en 5 blocs; Materials, Principis de màquines, Sistemes automàtics, Control i programació de sistemes automàtics i Circuits pneumàtics i oleohidràulics. Contrariament al que un pot esperar, ja que es suposa que el temari està dividit seguint un ordre lògic, de menor complexitat a major, a la nostra professora li ha semblat adient començar pel 4 bloc, de control i programació de sistemes automàtics (imagin que els seus motius tendrà :P).
Jo estic encantat, perque és l'assignatura que més s'acosta a la definició "geek" de les que tenim. I com a mostra, un grapat d'enunciats dels primers exercicis del primer tema ..
· Expresa los números FFF(H) y 3FC4(H) en decimal y binario.
· Un circuito lógico posee tres entradas c, b, a y una salida S. El circuito responderá 1 lógico cuando las entradas c y b sean 1 o cuando b y a valgan 0.
a) Determina la ecuación lógica sin simplificar en la forma de sumas de productos.
b) Dibuja el circuito utilizando puertas lógicas.
Imagin que a tots aquells que estodiau informática o telemática això vos pot pareixer una xorrada, pero per jo sentir xerrar de 0 i 1 a dins una aula és tota una novetat, una excel·lent novetat.
P.D: Esper poder seguir alabant a l'assignatura de Tecnologia Industrial II després del primer exàmen ;)
Estic escribint aquest apunt desde la NoConName, amb una pda, exactament una acer n30 tal que aquesta
Fa uns dies que tenc un AMD64 davall la taula, i ja he tengut els primers "problemes" amb ell :).
L'amo de la tenda ón el vaig comprar és un bon linuxer, i quan va saber que li volia posar una Debian m'hi va posar una Ubuntu Breezy per a AMD64(aprofit per donar-li les gràcies!).
Per compilar els drivers del mòdem necesitava el gcc, i el vaig pasar junt amb totes les seves dependències amb un pendrive (també aprofit per donar les gràcies a un bon amic, el Krihz, que em va pasar els debs que necesitava :P). Quan vaig tenir el el gcc instalat, vaig correr el ./configure dels drivers, i em sortia un error indicant que el meu compilador no podia crear executables. Em va sorprendre sobremanera, i vaig fer un Hola món! en C per a provar-ho. Al fer un gcc "hola.c -o hola", indicava que no trobava la llibreria "stdio.h". Vet aquí el problema, em faltava el paquet libc6-dev!
Vaig tornar a recorre al Khriz, que em va pasar el deb del libc6-dev en la seva versió 2.3.2. Desgraciadament, depenia de la llibreria libc6 en la mateixa versió, i la instalada al sistema era la 2.3.5, així que vaig tornar a demanar al Krihz la libc6 2.3.2 i me la va pasar gustosament. Vaig fer un downgrade de la versió 2.3.5 a la 2.3.2 amb el dpkg (emprant el paràmetre --force-, perque si no no instalava :P), i ja la vaig haver pifiada del tot.
Al reiniciar el sistema, les X no s'iniciaven i es penjava tot el sistema (realment no sé si tot, pero almenys el teclat no responia). Després de demanar ajuda a la bulmailing, vaig pensar que tal volta emprant un LiveCD podria restaurar la versió 2.3.5 de les libc6 per aconseguir que les X funcionasin com toca, i després instalar les libc6-dev en la seva versió 2.3.5, també.
Dit i fet, he agafat un livecd de la Ubuntu Warty per a x86 d'aquests que enviaven els de Canonical a casa, he iniciat l'AMD64 amb això i m'he dispost a montar la partició. He creat un directori anomenat ubuntu per a montar-hi la partició ón hi ha el sistema operatiu instalat (sudo mkdir /mnt/ubuntu), hi he montat el la partició (sudo mount -t ext3 /dev/hde /mnt/ubuntu) i he fet un chroot (sudo chroot /mnt/ubuntu /bin/sh), que m'ha tret un error que deia així .. chroot: Exec format error.
Amb l'ajuda de Google he trobat tot d'una que la cosa era cupa de que el LiveCD era per a x86, i el kernel que hi havia instalat a la màquina domés tenia suport per a AMD64 (per cert, si algú ens pot ilustrar amb una explicació tècnica dels perquè d'això s'agrairia un comentari, gràcies :D).
Al final he posat a baixar una LiveCD d'Ubuntu Breezy, i estic esperant a que s'acabi de descarregar. Propietaris de màquines amb arquitectura de 64 bits, avisats estau :). Seguiré informant de les meves aventures i desventures amb aquesta nova màquina, que ara per ara està donant molt de fruit.
Salut!
Aquests dies és més que noticia la trobada de líders mundials, en un intent per reformar la ONU als 60 anys de la seva formació. Tot i això, pareix que no acaba de funcionar massa. Ja vorem si arriba a bon port.
La curiositat del dia, és un petit escrit que ha pasat George Bush a la seva secrataria d'estat, Condoleezza Rice, durant la reunió.
Ara mateix he acabat la traducció del mòdul KNetworkConf, del que xerrava a l'entrada anterior. L'he enviat a la llista de traductors de KDE al català, i esper que li pegin un cop d'ull per si hi ha algún error.
Per la meva part també l'he penjat a http://servomac.funpic.org/traduccions/knetworkconf.po, així que si teniu un moment i l'hi podeu pegar una ullada hem fareu un gran favor.
Aprofit per animar a la gent interesada en col·laborar amb el programari lliure, a tots aquells que sempre han desitjat posar el seu granet d'arena i no sabien per on començar, el projecte de traducció al català és un bon punt de partida. A la seva pàgina trobareu informació, encara que una mica desfasada. Realment si voleu col·laborar el que haurieu de fer és subscriurer-vos a la llista de correu i presentar-vos. Després podeu cercar algún paquet per traduir de aquesta llista, i emprar algún programa tipus KBabel per fer la feina.
Vos puc asegurar que és molt gratificant!
Fa uns dies que faig un grapat de traduccions del KDE al Català. Ara mateix estic traduint el KNetworkConf, una aplicació que ajuda a configurar la xarxa sense haver de editar els arxius de configuració manualment. Acab de topar-me amb una frase realment fàcil de traduir, pero que costa d'entendre en català (a no ser que estigis familiaritzat amb els tècnicismes catalans, que imagin que poca gent domina :P).
Lletgint la llista de distribució de Bulma he conegut el programa highlight. Com expliquen a la seva ajuda (highlight --help) i al seu man, és una aplicació que dona format a codi font de més de 60 llenguatjes de programació, per a donar una sortida en ANSI, XHTML, RTF, LaTeX, o d'altres.
Citant la seva man-page :
Highlight converts sourcecode to HTML, XHTML, RTF, LaTeX, TeX or XSL-FO. There are 65 colour themes available. Highlight recognizes keywords, numbers, strings, comments, symbols and preprocessor directives.
Una maravella de programa, que ajuda a donar una bona estètica a codis petitons, per a poder publicar-ho a la xarxa o crear una memòria de projecte en LaTeX. Per exemple, jo he creat una versió del codi font del servidor web que estic montant en XHTML fent un highlight -X -i serverCon.c -o serverWeb.htm.
També es pot integrar perfectament amb les comanes típiques de bash, com cat i grep. Imaginem que volem veure els noms de les classes d'un programa escrit en Java; l'imprimim amb una "cat programa.java", redirigim la sortida amb una pipe a un "grep class", i tornam a redirigir a un "highlight -A --syntax=java". Tenim una sortida guapa, eficient, i molt geek ;).
Navegant per la xarxa m'he topat amb que avui, dia 31 d'agost, és el "dia del blog". No se m'hagués pasat pel cap d'altre millor manera de reprendre la bitacora, que tenia bastant abandonada :D.
Per a pasar fitxers entre dos ordinadors en xarxa, podeu emprar les famoses tuberies del món Unix (les pipes) en conjunció amb "la navalla suissa" del protocol TCP/IP, el NetCat.
Per començar, hem de fer que l'ordinador que ha de rebre el fitxer es posi a escoltar a un port, i tota la informació que li arribi allà l'envii a un fitxer determinat mitjançant la redirecció :
Idoi si, encara que fa un temps que sóc de vacançes ara començen realment. Encara que no sóc molt donat a viatjar, i m'ho puc passar 20 vegades millor a n'es meu poble que per cualsevol ciutat desconeguda, m'en vaig de viatje 15 dies. Ni més ni manco que a fer "el camí de sant jaume" (o de Santiago, com diven per allà) amb un grapat d'amics.
Partesc aquest cap de setmana, així que estaré desconnectat del món durant una dotzena de dies, a no ser que pel camí em creu-hi amb cap connexió a la xarxa.
Feia comptes deixar una versió mitjanament usable del server web (que presentàs imatges i tal), pero no ha pogut ser. Cupa de sa font d'alimentació, que, després de centenars de uptimes amb uns resultats gens despreciables, m'ha deixat una setmaneta sense ordinador.
Bona gent, mos xerram d'aqui un grapat de dies.
Per cert, m'agradaria dir la meva sobre el "flame" den minid i la seva tropa, pero no crec que la meva opinió aporti massa, ja que s'ha dit de tot. Salut!
El meu objetiu es que el server web sigi el més estandar posible. Una de les pases per aconseguir, és que pugi acceptar més methods que simplement GET's.
Per a ser "validat" com a HTTP 1.1 basta acceptar GETs i HEADs, i l'unic que diferència el HEAD del GET es que amb el HTTP Response no s'inclouen les dades que es demanen al HTTP Request. Com ja sabeu, un response es forma a partir dels headers i les dades; ido en el cas d'una petició HEAD domés es retornen els headers, les dades NO.
Aixó es molt facil d'implementar. Per a saber si ens trobam davant un method GET o HEAD, empram aquest codi (una vegada que ja hem lletgit el HTTP Request del socket).
if(request[0] == 'G' && request[1] == 'E' && request[2] == 'T') {
method = GET;
longi = 5;
}
else {
method = HEAD;
longi = 6;
}
Si algú té una suggerencia per a fer la comprovació anterior més "elegant", sóc tot orelles ;). Com podeu imaginar, abans hem definit el GET i el HEAD ..
#define GET 0
#define HEAD 1
Ara que ja sabem si tenim un GET o un HEAD, el que em de fer es afegir les dades en cas de que sigi un GET.
if(method == GET) {
strcat(response,data);
}
Com veis, és una "pixarada de ca", com es diu per aqui. Encara no he penjat la nova versió perque aquests dies estic sense ordenador, perque la font d'alimentació es va cansar de treballar sense descans i va dir prou, i com que no he pogut probar-ho com toca no vull penjar un codi que façi coses extranyes (encara que no seria la primera vegada .. :D).
El pròxim objectiu: que presenti imatges, i no tan sols texte plà i pagines html.
Fins una altra!
Els darrers dies he afegit un bon grapat de millores al server. Primer de tot, la concurrència, que és un tema molt important. Pel meu compte vaig programar un server que es posava a escoltar al port 80, acceptava un HTTP Request i responia amb un HTTP Response, i s'acabava. Després vaig fer un bucle infinit, per que pogues acceptar infinites peticions.
Jo estava tot content, perque tenia un server que pensava que podria funcionar bé. Pero fa uns dies vaig xerrar amb un company que em va demanar si emprava concurrència. Com que jo no tenia ni idea de a que es referia, li vaig demanar que volia dir, i ell em va explicar molt bé el tema amb una analogia. En aquells moments, el meu server era com una cua de supermercat. Entrava una petició i es tornava la resposta, pero mentres no es podia acceptar cap altre petició, així que els altres clients havien d'esperar a que el que havia entrar primer fos contestat. A els que estodiau informàtica a la UIB en Ricardo Galli vos ho deu explicar molt millor a l'assignatura de sistemes operatius, ja que el meu server en aquell moment es pareixia molt a un sheduler implementant l'algoritme FIFO (first in first out, el primer que arriba es el que primer s'atèn, i no se n'atèn un altre fins que aquest no ha finalitzat).
Així que havia d'emprar concurrència per a fer el meu server més eficient. La idea es molt senzilla; poder atendre a més d'un client a l'hora. Pero un sol programa no pot fer dues coses a l'hora, així que aqui entren en joc els procesos fills. Als sistemes *nix, els procesos segueixen una jerarquia estricta, i un programa pot crear un procès fill amb la cridada fork() i asignar-li una tasca. Podeu trobar molta més informació a la ManPage de fork (si no trobau el fork al man, el més provable és que hagueu de baixar el paquet de Debian manpages-dev).
Vaig lletgir una mica sobre el tema, ja que el tenia molt verd (només ho recordava d'un llibre de sistemes operatius de Tannembaum que vaig començar a lletgir fa estona, pero vaig deixar a mitjes ..), pero va ser molt facil.
El que s'ha de fer és que el procès pare, el server, escolti al port 80. Quan arribi una petició per a servir una pàgina, s'ha de crear un procès fill que la serveixi, i tornar-se a posar a escoltar.
L'únic problema és que una vegada que el procès fill ha servit la pàgina, es queda en estat "zombie". L'única intenció d'aquest estat és que el procès pare pugi saber perque el seu fill ha "mort", pero com que nosaltres sabem que el 99,9% de les vegades que els fills moren és per que han acabat la seva feina, no ens interesa tenir cadàvers per casa (o ocupant un espai a la Taula de Procesos ;)), així que hem d'emprar waitpid() per a matar al fill ben mort i que no ens molesti. Al man de waitpid trobareu molta més informació, i no estaria gens malament que lletgisiu una mica de teoria sobre procesos (aquesta regla també se m'aplica a jo, perque estic bastant verd en el tema de estats dels procesos i coses així ... ja és hora de tornar a treure el llibre de Tannembaum de la biblioteca de l'Anselm Turmeda xD).
Bé, el tema está així, ara tenc un server web que fa feina amb procesos fills per servir les pagines (com feia l'Apache1), pero l'implementació del protocol HTTP és una vergonya. El meu objectiu actual és fer una cosa mitjanament estandart, creant uns bons HTTP Responses i acceptant alguna cosa més que rebre GETs i servir pagines en text/http :D
Com sempre, el codi está disponible en la seva darrera versió a "http://servomac.funpic.org/code/serverCon.c", sota la llicència GPL.
S'esperen comentaris, crítiques (tant constructives com destructives, no m'aconseguireu minar la moral) i tot el que sigi relacionat amb el tema del server. Salut!
Fa uns dies un company me va comentar que tenia com a projecte de programació d'aquest estiu programar un server web mitjanament decent, que servís pàgines webs amb html. Li vaig dir que me pareixia una bona idea, i que d'aqui unes setmanes m'hos hi podriem posar.
Me vaig anar informant, i vaig començar a lletgir es RFC 2616, i he fet un server de sockets TCP que escolta al port 80, lletgeix la pagina que demana el navegador (de l'HTTP Request) i envia un HTTP Response amb el codi de la pagina.
El codi font és a http://servomac.funpic.org/code/web_server.c, i està llicenciat sota GPL.
Ara per ara és una porqueria. Només accepta una petició HTTP, contesta i surt del bucle. El meu objectiu principal es que sigi capaç de servir pagines fins que el root acabi l'execució.
Per una altra banda, l'HTTP Response és molt pobre i s'hauria de millorar. A més, dona per suposat que la versió del protocol és la 1.1, i moltes altres coses que són 100% anti-robustesa. Com deia en Guillem als comentaris del tema anterior, he de donar gracies a que el navegador toleri tants d'errors :P.
Si teniu un moment, m'encantaria que mirasiu el codi i hem fesiu tots els comentaris posibles per a millorar el codi i el programa en general. S'agrairia molt, ja que això no és més que una versió alpha :D.
Salut!
ACTUALITZACIÓ : Acab d'afegir posibilitat de respondre a més d'una petició cada execució del programa, mitjançant un bucle infinit i procesos fills. He creat un CHANGELOG (que podeu trobar a "http://servomac.funpic.org/code/CHANGELOG.txt") on faig comptes anar publicant els canvis en el codi. La nova versió del server, amb concurrència, està publicada a "http://servomac.funpic.org/code/serverCon.c". Encara no tenc gens de maña amb el tema de jerarquia de procesos i tal, i no tenc ni idea de si estic fent una "xapusa". Ja em donareu la vostra opinió!
ACTUALITZACIÓ 2 : Ara ja mat els procesos zombies amb waitpid, perque no molestin a la taula de procesos.
Lletgint el RFC 2616 (de l'Hypertext Transfer Protocol 1.1), se m'ha pasat pel cap aquesta genialitat xDD
Mitjançant una noticia a Slashdot he arribat aquest article, on Mark Brewer, el CEO de Covalent Technologies, defensa la idoneitat de la llicència BSD en projectes empresarials, en front de la GPL[*].
Segons ell, la GPL falla en el seu efecte víric. Com ja sabeu, cualsevol treball derivat de la GPL ha de ser llicenciat sota la mateixa llicència. Realment lògic. Si jo agaf el codi font del sheduler de Linux i l'empr per crear el meu propi kernel, aquest ha de ser llicenciat amb la mateixa llicència que el kernel de GNU/Linux, la GPL. El tal Mark pensa que les empreses veuen l'efecte víric de la GPL com una desventatja competitiva, ja que si l'empresa X millora un software i el vol comercialitzar ha de distribuir el codi de les seves modificacions, i això beneficia a les altres empreses competidores, permetent que l'empresa Y incorpori les millores de A al seu producte. I té raó.
Pero jo vull deixar una cosa molt clara. Si X produeix una millora al producte A i ha de distribuir-la sota llicència GPL, és perque aquest software estava llicenciat amb anterioritat sota la GPL, i per tant ells també es beneficien de les millores creades pels altres. Així, si l'empresa Y crea una nova millora al software, totes les altres empreses s'en podràn beneficiar.
El gran guanyador amb tot aquest negoci, és l'usuari. Amb el sistema de negoci proposat pel software lliure, i ajudat per la GPL, es crea un climax de competència empresarial idoni per a la innovació i la constant superacio de les característiques del programari. Els altres grans beneficiaris de la GPL son les petites i mitjanes empreses, que guanyen una oportunitat per a demostrar la seva valia com a bons desenvolupadors de software de qualitat.
L'únic que en surt perdent son les grans companyies, que no poden seguir engreixant el seu monopoli i a l'hora lluitar contra el gran programari creat sota llicències lliures. Tot i així no volen veure que el sistema de negoci del software lliure també reporta beneficis, i amplis abastament com per a continuar amb la bona vida que es pegen ara els grans empresaris del software privatiu.
Ens tornam a trobar amb el mateix dilema de sempre, les empreses no poden basar els seus negocis en sistemes antiètics, que no respecten la llibertat dels seus clients. És molt més important la llibertat col·lectiva, que el benefici empresarial.
[*] També hi ha un altres article que defensa just el contrari; que la GPL té més ventatjes que la BSD, escrit per Matt Asay, el director de l'oficina de negoci amb Linux de Novell.
Com que he tengut problemes per aconseguir la NetGear MA111 (a un comentari de l'entrada anterior m'han explicat que ja no es fabriquen), i m'han comentat que la DWL 122 és una bona opció, provaré aqueixa aprofitant que fa poc a bulma.net publicaren un article de configuració a GNU/Linux.
Fa uns dies vaig comanar a optize.es una NetGear MA111 (junt amb una antena omnidireccional per a un company, per aixó de compratir gastos de envio i tal). Avui, uns dies després de fer l'ingrés al banc, m'envien aixó :
Estimado cliente
Con relación a su pedido xxxxxx, le indicamos que la referencia 132674 que nos solicitó no se la podemos servir porque ha quedado descatalogada por el proveedor por lo que no le podríamos servir dicha referencia.
Con el fin de poderle ofrecer un mejor servicio, nos hemos tomado la libertad de buscar algún producto similar. La referencia que más se asemeja a lo que nos pidió es la 112419
Si no le sirviese esta referencia puede optar por una de estas opciones:
a) La devolución del dinero.
b) Facilitarnos una nueva referencia de otro producto que le interese.
c) Dejar el dinero en cuenta para una próxima adquisición.
A la espera de nuestras indicaciones, rogamos disculpe esta inconveniencia ajena a nuestra voluntad.
Reciba un cordial saludo.
Aquests dies he decidit montar el Mac Mini a la meva habitació, com ja vaig comentar a un post anterior, pero per aixó necesit montar una xarxa wireless. Com quasi tots deveu saber, el Mac Mini (així com els portàtils d'Apple, l'iBook i el PowerBook) duen integrada (en el cas del Mac Mini no ve per defecte, s'ha de demanar) una tarjeta de xarxa inalàmbrica, la AirPort Extreme, que no és gaire amiga del sistema operatiu per excel·lencia, GNU/Linux. Així que s'ha de tirar d'un adaptador de xarxa per USB. Havia d'armar un adaptador d'aquests, així que li vaig demanar consell a n'en Pau Rul·lan, el linuxero amb iBook armat que tenia més a mà, i me va recomanar una Netgear MA111 com la que ell té.
Dit i fet, l'he comanada a optize.es (compartint els afegits per enviar-ho fins aqui amb un company, que ha aprofitat per comprar una antena omnidireccional a un bon preu) i demà demati aniré a fer l'ingrés perque començin amb els tràmits. Tot i així, en Pau m'ha deixat la seva perque la miri de fer funcionar mentres m'envien la meva.
Per poder configurar la wireless necesit sortida a internet, per a baixar dels repositoris el paquet linux-wlan-ng. A casa tenc la xarxa cabletjada montada entre el mac mini i l'equip de sobretaula, que està connectat a Internet amb un mòdem USB, així que havia de fer que el sobretaula enrutàs tots els paquets entre la xarxa i internet. Ho he fet segint els pasos d'aquest petit howto, pero no hi ha manera. Pasen coses molt extranyes; el mac mini fà pings a fora de la xarxa (www.google.com) perfectament, pero el Konqueror no op res. Ho he comentat a la bulmailing, i encara que hi ha gent que m'ha contestat (gràcies de nou per aguantar-me :D), no hem pogut trobar una solució. Podeu veure el problema mitjanament en detall als arxius de bulma.
Aprofitant que estic de vacances, estic intentant millorar els meus rudimentaris coneixements sobre el llenguatje C. Fà un temps em varen comentar que una de les parts fonamentals de C eren els punters, i jo no en tenia (de fet, encara no en tenc) ni idea. Així que m'he posat a estodiar-ne una mica, i encara que no puc dir que amb una setmana els domin, he après més que amb tot el darrer any (em referesc a C, ja que aquest any ha estat el més productiu en quan als meus skills de programació; he descobert el POO, he après bastant sobre algoritmia, he començat a jugar amb Java, etc ..). Ara estic fent uns exercicis que he trobat per la xarxa, i m'ho pas molt bé. Estàn bé, perque són del tipus "quin serà el resultat a la pantalla de l'execucció d'aquest codi?" que motiven abastament. Però crec que la part pràctica de l'aprenentatje d'un llenguatje i/o característica de la programació no es pot deixar sols a aquest tipus d'exercici, sino que també és molt important que l'estodiant tiri mooltes línies de codi. Encara que la lectura i analisis de codi sigi molt important, ha de ser el complement de exercicis de programació "pura i dura", i de pàgines de teoria.
Bé, entre aquestes històries pas aquests dies de vacançes; programació, wireless, i pasetjades pes poble amb els companys ... que s'hi viu de bé a Mallorca! :)
Kate (KDE Advanced Text Editor) és l'editor d'archius de codi font, fitxers de configuració i d'altres al KDE. Entre les features que més em criden l'atenció trobam que duu una Konsole incorporada, i que pots veure el mateix document desde dues bandes a l'hora. El millor no és sols que es pugi veure; ademés es pot modificar i els canvis fets a una de les "vistes" modifiquen automàticament l'altre. Aixó pot ser d'extrema utilitat programant, per exemple. A l'hora que modifiques una funció, crees una mica de "codi andàmio" dins la funció main per a comprovar que la cosa funciona com tu vols. Tot un descans a l'hora de programar amb fitxers de codi més llargs de l'habitual.
Com no podia ser d'altre manera, inclou highligth per als llenguatjes de programació més habituals, a més d'archius de configuració, llenguatjes d'script interpretats, llenguatjes "d'etiquetes" (markup, com html i d'altres) ...
Pero el millor és que tu mateix pots crear nous archius de configuració xml per a fer highligthing a nous tipus de documents, o modificar els ja existents. Vos deix un enllaç que ho explica, per si a algú li crida l'atenció. Evidentment també pots modificar l'esquema de colors actual, canviant el color que s'assigna a cada tipus de variable, per exemple. Ho podeu veure a aquest screenshot.
En definitiva, si el Gedit ja m'agradava, el Kate té el meu cor a la seva mà.