|
Temas
Archivos
Enlaces
|
Se muestran los artículos pertenecientes a Julio de 2005.
05/07/2005
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. El producte que em recomanen es la NetGear MA111GE, pero m'he informat i a la pàgina oficial he trobat aquesta llista, on la Netgear MA111 si que surt com a soportada, pero la MA111GE NO. La veritat, com que em neg a tirar de nddiswraper (si s'escriu així :P), crec que demanaré que em tornin els doblers i la compraré a cualque altra banda. Cualque suggerencia sobre que fer? Alguna tenda per internet d'Espanya recomanable? Experiències amb altres tendes, tipo eBay? Estic més que emprenyat, entre que no puc donar sortida a internet i ara això, algú s'ha proposat enfonsar els meus plans de tenir sortida a internet (i molt més, que per algo és un Mac Mini :D) a la meva habitació. Salut! 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.  Una bona ventatja és que treballa amb 802.11g, a diferència de la NetGear que empra l 802.11b. Encara que no crec que façi massa intercanvi de fitxers entre els dos ordinadors, ja que la tarjeta wireless PCI del sobretaula suporta 802.11g aprofit. Tot i això, el preu de la D-Link és una mica major que el de la NetGear (realment bastant més, aproximadament uns 10/15 euros). Ja he contestat al mail que han enviat els de optize.es diguen que em decantava per la opció de canviar el producte, la NetGear que ja no tenen, per la DWL-122. Esper que no hi hagi cap inconvenient. EDIT : Ara que ho mir, la D-Link que tenen a optize.es no és la DWL-122, sino la DWL-G122!!! I no surt a la llista d'adaptadors suportats pel linux-wlan-ng!! Cagon d'ell, m'imagin que ara hauré de tornar a demanar als de la tenda que em canviin la comana. M'hauré de cercar un altre lloc on comprar-ho. És que el que no em pasi a mi .... xDD
09/07/2005
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. Lletgint el RFC 2616 (de l'Hypertext Transfer Protocol 1.1), se m'ha pasat pel cap aquesta genialitat xDD sudo cat page.html sudo nc -l -p 80Evidentment, a page.html hi ha el codi html de la pagina que volem servir. És el que té aburrir-se els capvespres :D.
12/07/2005
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.
15/07/2005
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!
19/07/2005
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!
28/07/2005
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!
|