Inicio

htaccess wrapper amb PHP

Com a complement a l’article anterior, afegeixo aquest document que vaig trobar-me fa temps. Es tracta d’implementar un wrapper usant les propietats del fitxer .htaccess i usant com a motor de procés el PHP. Abans que res i a tall de definició ràpida pel que no ho sapigue un wrapper és com un programa que actua intervenint algún procés normalment per modificar el seu funcionament habitual.

Doncs bé amb aquest document HTACCESS Wrappers With PHP ( local ) podeu aprendre com usar el PHP com a wrapper pels fitxers que es serveixen en apache. Així doncs en aquest document podem trobar, a tall d’exemple, com fer el següent:

  • Afegir capçaleres i peus de pàgina als fitxers .htm i .html sense haver de tocar codi dels fitxer font
  • Com comprimir els fitxers .htm, .html i .txt amb gzip just abans de ser enviats per la xarxa, molt útil si el client o el servidor disposen de poc ampla de banda i tenim documents de text una mica grans, podem estalviar més del 50% d’ampla de banda que estem usant
  • Finalment ens explica com afegir una marca d’aigua (watermark) a les imatges del nostre site. Així no hem de perdre hores i hores modificant les imatges una per una

Pel que fa al últim punt si no disposeu de gaire CPU o bé, el servidor va molt ocupat, el que us recomano que feu encomptes d’aplicar el que aquí s’explica és usar el que vaig explicar a: Mini-guia de como usar l’imagemagick.

Entre aquest item i l’anterior, imagino que ja us heu adonat de la gran potència que té el fitxer .htaccess, a més cal que recordeu que totes les configuracions que es comenten les podeu aplicar directament als fitxers de configuració general d’apache.

htaccess tips & tricks

L’htaccess és un fitxer de configuració per usuaris de l’Apache molt potent. Aquest fitxer es pot posar en qualsevol directori per especificar comportaments específics en la configuració de l’Apache. També s’ha de dir que només podràn usar aquests tipus de fitxers els usuaris que a través del fitxers de configuració principal de l’Apache heredin permisos per fer-ho.

Què es pot fer des d’un .htaccess:

  • Especificar els nostres propis documents d’error
  • Afegir comportaments específics segons tipus MIME
  • Definir variables d’entorn
  • Redirigir URLs
  • Re-escriure URLs
  • Restringir accessos

Aquest document és una traducció-adaptació-ampliació i tot el que he tingut ganes de canviar i afegir del document original: .HTACCESS files useful tips and tricks de Garnet R. Chaney.

UPDATE: Ha sortit la segona part del document: more .htaccess tips and tricks

Especificar els nostres propis documents d’error

Simplement es tracta de no usar els errors estàndars del servidor de hosting que hospeda la nostre pàgina, o sigui, definim quina pàgina s’ha de retorna en els casos que la resposta HTTP no sigui del tipus 200. El més habitual és la pàgina d’error 404 (Not Found), si volem redefinir aquesta pàgina hem de posar al .htaccess, per exemple:

ErrorDocument 404 errors/404.html
Afegir comportaments específics segons tipus MIME

Aquestes macros de servidor el que fan és definir comportaments específics segons el tipus de fitxer i retornar el resultat després d’aplicar el ‘parser’ concret. Per exemple:

AddType text/html .shtml
AddHandler server-parsed .shtml

Si voleu més informació sobre el tema dels ‘handlers’ podeu consultar el manual de l’Apache handlers use i la documentació de mod_include.

NOTA: Article inspirat en: .HTACCESS files useful tips and tricks

Modificar les variables d’entorn del sistema

Com tots sabeu el sistema té una serie de variables d’entorn (veure env i set) que són visibles des de les sessions de l’Apache (veure phpinfo). Doncs bé aquestes poden ser alterades de la següenta manera, per exemple:

SetEnv SITE_WEBMASTER "Jack Sprat"
SetEnv SITE_WEBMASTER_URI mailto:Jack.Sprat@characterology.com
UnSetEnv REMOTE_ADDR
Afegim formats MIME

Les extensions no reconegudes per l’Aapache es consideren formats de text i no es poden descarregar adequadament, així doncs és convenient afegir els tipus MIME no reconeguts per aquest, per exemple:

AddType application/x-endnote-connection enz
AddType application/x-endnote-filter enf
AddType application/x-spss-savefile sav
Restringir l’accés als documents

L’apache permet ristringir l’accés als documents segons molts tipus de factors:

  • per host
  • per tipus de navegador
  • per les credencials enviades via HTTP
  • etc

En el següent exemple es dona accés només per les IPs de la xarxa privada (192.168.*) o pels hoss que acabin en ymbi.net (domini de la meva LAN privada).

order deny,allow
deny from all
allow from 192.168. ymbi.net
Protecció d’accés per autenticació

Per informació sobre aquest tema, us recomano: manual del mod_auth. També val la pena que us mireu mòduls no oficials de l’apache com: mod_auth_mysql com el seu nom indica permet tenir no només la bbdd d’usuarie en fitxers de texta, sinó dins una bbdd mysql. També existeixen coses semblants per postgresql i per ldap. Fins hi tot diria que ho he vist mod_auth_pam interessant,oi?

Protegim l’accés només a un fitxer

Normalment l’.htacces es refereix a tot un directori, per tant si volem referir-nos només a un fitxer en concret ho hem d’especificiar amb la directiva <Files>. En el següent exemple demanem una autenticació per veure el fitxer quiz.html, aquesta es comproba a través del directori LDAP:

<Files quiz.html>
order deny,allow
deny from all
AuthType Basic
AuthName "Characterology Student Authcate"
AuthLDAP on
AuthLDAPServer ldap://directory.characterology.com/
AuthLDAPBase "ou=Student, o=Characterology University, c=au"
require valid-user
satisfy any
</Files>

Un exemple que sempre és molt útil en la vida real és el següent, fins hi tot us recomano que l’useu al fitxer general de configuració de l’apache. El que fa és protegir que ningú pugui llegir els fitxers .htaccess, ja que aquests poden contenir informació sensible:

<Files .htaccess>
order deny,allow
deny from all
</Files>

També existeix una directiva que s’anomena <FilesMatch> i ens permet usar comodins (wildcards) en les restriccions per fitxers.

Redirigint un client

Podem dir-li al servidor que redirigeixi la connexió del client cap a una URL concreta, hi ha diferents tipus de redireccions:

  • permanent – el recurs s’ha mogut de forma permanent
  • temp – s’ha mogut de forma temporal a un altre lloc
  • seeother – el contingut ha estat canviat
  • gone – la informació requerida ha estat elminida de forma permenent

Exemples:

Redirect permanent /psych/subject/timetable http://www.characterology.com/psych/subject/ttable
Redirect gone /psych/subject/1998
Redirect seeother /psych/subject/1999/ /psych/subject/2000/

Més exemples:

RewriteEngine on
RewriteBase /psych
RewriteRule test/printenv(.*) cgi-bin/printenv$1

Com podeu veure es poden usar expresions regulars, aquí en teniu un petit resum:(no ho he traduit per no distorcionar-ho)

  • Patterns (“wildcards”) are matched against a string
  • Normal alphanumeric characters are treated as normal
  • Special characters:
  • . (full stop) – match any character
  • * (asterix) – match zero or more of the previous symbol
  • + (plus) – match one or more of the previous symbol
  • ? (question) – match zero or one of the previous symbol
  • \? (backslash-something) – match special characters
  • ^ (caret) – match the start of a string
  • $ (dollar) – match the end of a string
  • [set] – match any one of the symbols inside the square braces.
  • (pattern) – grouping, remember what the pattern matched as a special variable

Exemples:

  • a+ matches “a”, “aaaa”, “aaaaaaaaaaaa”, but not “bbb”
  • [ab]+ matches, “a”, “b”, or any length combination of the two
  • \.s?html? matches “.htm”, “.shtm”, “.html” or “.shtml”
  • (.+)/1999/(.+) matches “subject/1999/psy1011/”, and also stores “subject” in $1 and “psy1011/” in $2.
  • Més informació: man regex o fins hi tot teniu llibres sencers de can O’Reilly que en parlen Mastering Regular Expressions.

Les redireccions poden ser molt més complexes del que hem vist i podem veure aquí, alguns exemples:

  • Redireccionem de forma condicional, per exemple, quan no existeix un fitxer:
  • RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.+)errata\.html?$ cgi-bin/errata/errata-html/$1
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule images/barcode/(.*).gif cgi-bin/barcode/mkgif?$1
  • També podem fer condicions segons les variables d’entorn:
  • RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*
    RewriteRule ^/$ /homepage.max.html [L]
    RewriteCond %{HTTP_USER_AGENT} ^Lynx.*
    RewriteRule ^/$ /homepage.min.html [L]
    RewriteRule ^/$ /homepage.std.html [L]

Si us heu quedat amb les ganes de jugar més amb el tema podeu anar a la documentació d’apache concretament on es parla dels moduls: mod_rewrite i mod_alias.

Com us podeu imaginar això és el que he usat per redirigir les peticions de les imatges del blog, tal com comentava a: Les imatges i l’àlbum de fotos van més ràpids?, aquí teniu el codi de la redirecció:

RewriteCond %{REMOTE_ADDR} !^192.168.1.0/24
RewriteCond %{REMOTE_ADDR} !^192.168.2.0/24
RewriteCond %{REMOTE_ADDR} !^10.0.30.0/24
RewriteRule ^/article_fitxers(.*) http://dades.joor.net/article_fitxers$1

Problema amb OVTDTool: Omnivision 2610 ECX

camerachip.jpg

Fa un parell de dies aproximadament que m’estic varallant amb una petita camara USB 2.0, concretament és un ‘development kit’ de la casa Omnivision el model: OV2610 que esta montat sobre una placa de proves model 9620. En aquesta placa de proves porta montat un xip de la casa CYPRESS el model CY7C68013 aquest xip s’usa per controlar el ‘CMOS image sensor’, o sigui, el xip d’Omnivision 2610.

El xip de cypress per fer d’interficie entre el PC i el sensor d’imatges incorpora: transceptor USB 2.0, un SIE (serial interface engine), un processador 8051 de la família FX2 de 24Mhz i 256bytes de RAM i un PPI (program periperhal interface) a través del qual es connecta al sensor d’imatges.

Bé nanos, tota aquesta història per explicar-vos que després de configurar la camara en qüestió en WXP aconsegueixo els 1600×1200 i 10fps que posa el manual, o bé els 800×600 a 40fps. Ara bé el meu problema és que necessito canviar alguns paràmetres que porta el xip d’omnivision el 2610 i l’eina que porta el ‘developers kit’ (OVTDTool.exe) que en teoria em permet llegir paràmetres del xip i modificar-los no hi ha manera de que es comuniqui amb el xip.

Si algú sap alguna cosa sobre aquests temes de hardware i/o drivers tan rebuscats. Si us plau que m’avisi que li donaré més detalls del problema a veure si em pot donar un cop de mà. MOLTES GRÀCIES!

Update: ja he aconseguit solucionar el problema, que bàsicament era culpa d’un fitxer de configuració que ja m’olorava que no estava bé però que no podia arreglar perquè no disposava de la informació suficient finalment vaig aconseguir el fitxer d’un altre lloc i tema solucionat.

Una nota per reflexionar: robots amb sentiments

irobot.jpg

Fins ara el que es plantejava a: Blade Runner o a la recent I Robot eren històries de ciència ficció per l’altre dia va sortir a el Mundo una notícia on el director del Centre d’investigació per la creació de robots inteligents de Corea del Sur: Kim Jong-Hwan. Anunciava que ja ha pogut crear els primers cromosomes artificials. Així en fred pot semblar que no dic gran cosa però si com jo porteu dues setmanes donant voltes al tema, des de que el Luis, em va comentar la notícia doncs arribareu a reflexions molt interessants sobre el tema.

Realment puc afirmar que ha estat una notícia que m’ha canviat la vida, aquí entrarem en el típic debat de si això és cert o no, però el simple fet de plantejar-se com una cosa possible ja reafirma el que jo li defensava al meu professor de biologia de 3er de BUP, pobre Oliveres, i el que des de molt petit sempre he cregut possible.

Enganxo la notícia del Mundo per no perdre-li la pista:

El científico Kim Jong-Hwan, director del Centro de investigación para la creación de robots inteligentes de Corea del Sur, ha desarrollado una serie de cromosomas artificiales que podrían permitir la fabricación de robots inteligentes, capaces de razonar, sentir pasión e incluso reproducirse. El robot tiene 14 cromosomas, lo que le permite tener ‘personalidad’.

El profesor Jong-Hwan ha tomado como modelo para su software una simplificación del ADN humano, lo que ha dado lugar a un código informático que determina la capacidad del robot para experimentar una serie de sentimientos, como la felicidad y la tristeza, o sensaciones, como el miedo, el sueño y el hambre.

El equipo del científico surcoreano proyecta instalar dicho software por primera vez en un robot a lo largo de los próximos tres meses.

Los cromosomas virtuales pueden combinarse de hasta 77 formas distintas, lo que generará diferentes sensaciones. Además, los robots son capaces de reconocer hasta 47 órdenes distintas, y reaccionar en función de ellas.

Jong-Hwan, que es una autoridad en tecnología y ética de la robótica, afirma que estamos ante lo que podría considerarse el origen de una nueva especie artificial, aunque precisa que es posible que los cristianos no lo aprueben.

“Los robots dotados con esta nueva tecnología tendrán sus propias personalidades y sentirán emociones, como el protagonista de la película ‘Yo, Robot'”, explica el científico. “Esto podría ser muy peligroso para la humanidad, pero si dotamos a los robots con unos cromosomas artificiales ‘buenos’, no representarían tal amenaza”, dice.

Bloquegem el PC amb un mòbil Bluetooth

No és res de l’altre món i per postres és per win, però segur que coneixeu coses millors que jo en aquesta area. De fet, només us vull donar a coneixer un programet que es diu “Lock it Now” que permet aprofitar el Bluetooth del nostre mòbil per bloquejar el PC quan no estem davant seu. També permet fer combinacions més sofisticades per protegir el sistema. Però ja havia sentit a parlar d’aquestes històries fins hi tot en aplicatius per linux que usen el sistema PAM per autenticar-se. No és un tema en el que hagi pogut aprofundir però estic segur que abans no acabi l’any n’he de montar més d’un d’aquests sistemes perquè el tema de les claus és tot un problema per més d’un.

lockitnow.gif

Les imatges i l’àlbum de fotos van més ràpids?

estadistiques.png

Aprofitant l’upgrade de hardware que hem fet als servidors de l’empresa al canviar de línies he fet un mini-mirror d’algunes parts del portal en aquests equips, ja que tenia diverses queixes sobre la velocitat del mateix. També cal dir que a part de les grans limitacions de l’ADSL els número de visites del BLOG a pujat moltíssim, cosa que m’emocina molt. Per exemple, ahir mateix vaig aconseguir més de 1700 visites en un dia i el més passat més de 25000 visites. Si us fa gràcia mirar les visites podeu punxar aquí. Bé el que anava dient, que totes les imatges/docs/dades dels articles i les fotografies de l’album de fotos les he col·locat en aquest nou servidor aprofitant el seu gran caudal d’amplada de banda i la poca necessitat de procés que requereix la tasca.

Per tal de fer això el que he usat és un mòdul d’apache que es diu mod_rewrite a través del qual redirigeixo certes peticions que van a oriol.joor.net cap a dades.joor.net i imatges.joor.net que són servidors de reforç que tinc a l’empresa. Així doncs, m’agradaria si és possible que em comentessiu si es nota el canvi de velocitat a l’hora de carregar les coses. Jo pel que he pogut apreciar és un canvi ‘brutal’, però qui ho heu de dir sou vosaltres.

Quan hagi acabat d’experimentar amb el mod_rewrite ja us explicaré com redirigir algunes coses i com ho faig per sincronitzar els continguts del meu servidor de casa amb els servidors de l’empresa, per no carregar la línia.