19 gen 2012

Eclipse IDE per a Python+Django+MySQL a Mac OS X Lion

No Comments Informàtica

Després de barallar-​​me unes hores per a con­fi­gu­rar cor­rec­ta­ment l’entorn de pro­gra­ma­ció, escric aquesta entrada per expli­car com ho he fet. Anem a pams:

Objectiu

La meva inten­ció és uti­lit­zar Eclipse per a pro­gra­mar apli­ca­ci­ons web usant Django en un equip local amb Mac OS X Lion. La base de dades que vull uti­lit­zar és MySQL i es troba en un ser­vi­dor LAMP a la mateixa xarxa local.

Eines necessàries

Procediment

La pri­mera part de la instal·lació real­ment és molt sen­zi­lla, els pro­ble­mes els he tro­bat a l’hora de con­nec­tar amb la base de dades… Però, tant se val, comen­cem pel principi:

1 Instal·lació d'Eclipse Classic

Aquest pas és tri­vial. N’hi ha prou de descarregar-​​lo, descomprimir-​​lo i arros­se­gar la car­peta eclipse a la nos­tra car­peta d’aplicacions.

2 Instal·lació de Python i Django

Molt fàcil, també. Descarreguem i mun­tem el DMG de la ver­sió de Python que vul­guem (jo ho he fet amb la 2.7 basant la tria en aquesta indi­ca­ció del web: If you don’t know which ver­sion to use, start with Python 2.7; more exis­ting third party software is com­pa­ti­ble with Python 2 than Python 3 right now.) i exe­cu­tem l’instal·lador.

Per al Django: des­car­re­guem i des­com­pri­mim la ver­sió esta­ble i poste­ri­or­ment arros­se­guem la car­peta obtin­guda al Terminal. Amb això acon­se­guim obrir un ter­mi­nal amb la car­peta de Django com a car­peta de tre­ball. En aquest ter­mi­nal exe­cu­tem:

1
sudo pyt­hon setup.py ins­tall

3 PyDev

Arribats a aquest punt podem dir que ja tenim les eines a punt i és l’hora de començar-​​les a inte­grar. Començarem afe­gint a Eclipse el plug-​​in PyDev per a poder crear pro­jec­tes amb Python/​Django. Per a fer-​​ho, des del menú Help > Install New Software… afe­gi­rem el següent repo­si­tori:

1
http://pydev.org/updates

I poste­ri­or­ment, des del mateix qua­dre de dià­leg, podem cer­car PyDev i instal·lar-lo (hau­rem de rei­ni­ciar l’Eclipse en acabat!)

4 Connexió amb la base de dades

Aquesta és la part que m’ha donat més mal­de­caps (i bàsi­ca­ment per a recordar-​​me de com ho he fet escric aquest post). L’esquema gene­ral –pro­ble­mes inclo­sos– és el següent: Per tal que Python pugui gene­rar auto­mà­ti­ca­ment el codi font per a interac­ci­o­nar amb MySQL neces­si­tem el con­nec­tor Python-​​MySQL (també cone­gut com MySQLdb o Python-​​MySQLdb). La meva idea ini­cial era que no m’havia de fer falta instal·lar MySQL al Mac si, al cap i a la fi, la BD a la qual vull connectar-​​me està en una màquina dife­rent. Però resulta que durant la instal·lació fa falta con­sul­tar el fit­xer de con­fi­gu­ra­ció i cer­tes lli­bre­ries de MySQL. Després de goo­gle­jar una bona estona vaig arri­bar a la con­clu­sió (no gaire con­ven­çut) que, encara que al final vol­gués connectar-​​me a un MySQL remot, per a fer la instal·lació del con­nec­tor neces­si­tava un MySQL local.

En defi­ni­tiva, el pri­mer pas és instal·lar el MySQL Community Server (fàcil, usant l’instal·lador, un cop descarregat/​descomprimit); poste­ri­or­ment des­car­re­guem  i des­com­pri­mim MySQLdb, n’editem el fit­xer de con­fi­gu­ra­ció site.cfg per a indi­car el PATH del nos­tre fit­xer de con­fi­gu­ra­ció de MySQL

1
2
3
4
# The path to mysql_​config.
# Only use this if mysql_​config is not on your PATH, or you have some weird
# setup that requi­res it.
mysql_​config = /​usr/​local/​mysql/​bin/​mysql_​config

Fet això, neces­si­tem incloure al PATH una lli­bre­ria que uti­litza el con­nec­tor. Concretament: libmysqlclient.18.dylib. Per no complicar-​​me (ni afe­gir “merda” al PATH) vaig fer-​​li un enllaç sim­bò­lic i va fun­ci­o­nar per­fec­ta­ment. En un ter­mi­nal exe­cu­tem:
1
sudo ln -s /​usr/​local/​mysql/​lib/​libmysql­cli­ent.18.dylib /​usr/​lib/​

Ara sí que hau­ríem de poder instal·lar el con­nec­tor fent:
1
sudo pyt­hon setup.py ins­tall

Fet!

{lang: «ca»}

22 jul 2011

Instal·lació neta d'OSX 10.7 Lion

3 Comments Informàtica

Escric aquesta entrada des de Lion, la nova ver­sió del sis­tema ope­ra­tiu OS X d’Apple, des­prés de barallar-​​me durant el dia d’ahir amb l’ordinador per fer una instal·lació que em dei­xés satis­fet. No pre­tenc pre­sen­tar una revi­sió a fons del pro­ducte per­què a hores d’ara encara no l’he fet ser­vir prou; però si que vol­dria donar algu­nes indi­ca­ci­ons sobre la instal·lació que penso que poden ser útils a les per­so­nes que encara estan pen­sant si fan o no el salt d’Snow Leopard (que fun­ci­ona de mera­ve­lla) a Lion (que ja ha rebut algu­nes crí­ti­ques pel seu ren­di­ment) i afegir-​​hi alguna opi­nió més.

A la prò­pia App Store poden llegir-​​se opi­ni­ons d’usuaris que cri­ti­quen un supo­sat des­cens del ren­di­ment des­prés d’haver actu­a­lit­zat. La veri­tat és que a mi mai m’ha agra­dat actu­a­lit­zar sis­te­mes ope­ra­tius (entre ver­si­ons, vull dir) i fins i tot en el cas de GNU/​Linux, que pro­ba­ble­ment és el que millor resol els can­vis de ver­sió, sem­pre he sigut més par­ti­dari de for­ma­te­jar i reinstal·lar. Fer-​​ho d’aquesta manera em sem­bla més net i ele­gant i em per­met eli­mi­nar mol­tís­sima brossa (més de 300 GB!) tan del propi sis­tema com dels meus docu­ments personals.

En resum, des­prés de des­car­re­gar les gai­rebé 4GB de l’actualitzador vaig seguir les ins­truc­ci­ons de Mashable per a crear un DVD de sis­tema des del qual pre­te­nia fer la instal·lació neta. Gravar aquest DVD amb la Utilidad de dis­cos és tri­vial (seguiu les ins­truc­ci­ons) però compte! No hi va haver manera d’aconseguir que el meu iMac arren­qués des del DVD. No vaig cer­car a fons, però em va sem­blar enten­dre que els iMac no boo­ten des de CD/​DVD (ales­ho­res per­què incor­po­rava el DVD d’Snow Leopard dins la caixa, quan el vaig com­prar? Sí, vaig provar-​​ho amb el DVD ori­gi­nal del lle­o­pard de neu i tam­poc va arrencar…)

Seguint les matei­xes ins­truc­ci­ons vaig gra­var la DMG de Lion a una tar­geta SD (no tenia cap lla­pis USB de més de 4 GB) i rei­ni­ci­ant amb la tecla option (alt) pre­muda vaig acon­se­guir ini­ciar el sis­tema des de la SD. Vaig indi­car que volia instal·lar al disc prin­ci­pal (Macintosh HD) i resulta que en comp­tes de sobre­es­criure el disc, va detec­tar que ja hi havia un OS X instal·lat i va fer una actu­a­lit­za­ció! Arg!

He de dir que en el meu cas durant els pri­mers 10 o 15 minuts d’ús vaig notar com, efec­ti­va­ment, el ren­di­ment de la inter­fí­cie grà­fica era força jus­tet. Res a veure amb la flui­desa d’Snow Leopard i gens digne d’una màquina amb un i7 i 8 GB de memòria.

Conclusió? Calia reinstal·lar de nou assegurant-​​me de for­ma­te­jar pri­mer. Fer-​​ho, de fet, és ben sen­zill. Després d’arrencar amb la tar­geta SD s’indica que ini­ciï la Utilidad de dis­cos i es borra el con­tin­gut de la par­ti­ció Macintosh HD. Un cop fet s’instal·la de nou (força més ràpid que l’actualització) i la veri­tat és que ales­ho­res si que el ren­di­ment i la flu­ï­desa de l’entorn de tre­ball són els esperats!

Primeres impressions?

L’scroll natu­ral ho és ben poc de natu­ral! Però a dife­rèn­cia del que havia lle­git si que pot desactivar-​​se des de les pro­pi­e­tats del ratolí.

El LaunchPad és una mera­ve­lla (més ràpid fins i tot que l’Spotlight per obrir les apli­ca­ci­ons més usa­des) i es tro­ben a fal­tar Exposé i Spaces; amb­dós ara inte­grats al Mission Control que té molt bona pinta però que reque­rirà un pro­cés d’adaptació.

Ah, per cert, si feu una instal·lació neta tin­gueu pre­sent que Lion no incor­pora iLife (a dife­rèn­cia de quan com­pres un Mac que ja ve preinstal·lat) de manera que si no el teniu en DVD hau­reu de pas­sar per caixa!

{lang: «ca»}

18 des 2010

Encarrilant Ruby on Rails

1 Comment Informàtica

Get Ruby on Rails in no time.

—Encara sort…

Porto tot el dia [17] fent pro­ves i m’ha cos­tat més (molt més!) acon­se­guir que fun­ci­oni Ruby on Rails en un Ubuntu 10.04 LTS que no pas crear un Twitter sim­ple (sense con­trol de ses­sió i amb una sola taula de dos camps a la BD). Aquest post, més que un howto per a instal·lar Ruby on Rails a GNU/​Linux és també un repàs de les acci­ons que d’errada en errada m’han con­duit a un final satisfactori.

Ruby on Rails consta de tres parts que podem instal·lar independentment:

  • Ruby
  • RubyGems
  • Rails

i resulta que segons les ver­si­ons de cadas­cuna d’aquestes parts es pro­du­ei­xen incompatibilitats.

Al repo­si­tori de Lucid hi ha paquets que inclo­uen només Ruby (ruby) i paquets que inclo­uen Ruby+RubyGems (ruby­gems). Jo he optat per Ruby+RubyGems pen­sant que m’estalviaria feina (i ara ja no ho tinc tan clar, això). Pel que fa al paquet ruby­gems tro­bem les ver­si­ons 1.8, 1.9 i 1.9.1. Al lloc ofi­cial reco­ma­nen 1.8.7 o 1.9.2, de manera que he triat 1.8 com la única que, per lògica, podia qua­drar.

1
sudo apt-get ins­tall rubygems1.8

Això m’ha instal·lat les coman­des ruby1.8 (ver­sió 1.8.7), gem1.8 i gem (amb­dues de la ver­sió 1.3.5) i com que la ver­sió de Rails del repo­si­tori és força més vella que l’actual, l’he inten­tat instal·lar usant RubyGems [the stan­dard Ruby package mana­ger. It’s simi­lar to apt-​​get, emerge, and other OS package mana­gers.]
1
sudo gem ins­tall rails

Primer con­tra­temps: resulta que per instal·lar Rails així, cal una ver­sió de RubyGems >=1.3.6. No passa res, inten­tem actu­a­lit­zar RubyGems amb el mètode estàn­dard per a fer-​​ho.
1
sudo gem update sys­tem

Segon con­tra­temps: els sis­te­mes Debian tenen des­ha­bi­li­tat aquest mètode per tal que fem ser­vir els paquets del repo­si­tori APT en comp­tes dels gems, però resulta que al res­po­si­tori APT la ver­sió més nova és la que tinc instal·lada… Podem actu­a­lit­zar d’altres mane­res segons expli­quen al lloc web de RubyGems. Fem:
1
2
3
4
w\get http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz
tar xzf ruby­gems*
cd ruby­gems*
sudo ruby1.8 setup.rb

I, ara sí, podem instal·lar Rails 3.0.3 fent:
1
sudo gem ins­tall rails

En prin­cipi ja tenim les eines de pro­gra­ma­ció a punt. Com que Rails fa ser­vir com a base de dades per defecte SQLite, hem d’instal·lar també aquesta apli­ca­ció:
1
sudo apt-get ins­tall sqlite3

Posteriorment ja podem crear l’esquelet de la nos­tra pri­mera apli­ca­ció fent:
1
rails new tui­ter

Substituint tui­ter pel nom de l’aplicació que volem crear, és clar. El següent pas és com­pro­var que tenim totes les gems neces­sa­ries instal·lades i afe­gir les que man­quin. D’això se n’encarrega auto­mà­ti­ca­ment l’aplicació bundle si exe­cu­tem:
1
2
cd tui­ter
sudo bundle ins­tall

Però a mi em sor­tia el següent error:
1
2
3
Installing sqlite3-ruby (1.3.2) with native exten­si­ons /​usr/​local/​lib/​site_​ruby/​1.8/​ruby­gems/​ins­ta­ller.rb:483:in «build_​extensions»: ERROR: Failed to build gem native exten­sion. (Gem::Installer::ExtensionBuildError)
/usr/bin/ruby1.8 extconf.rb
extconf.rb:3:in «require»: no such file to load mkmf (LoadError) from ext­conf.rb:3

I des­prés d’una bona estona d’assaig i error vaig des­co­brir que calia instal·lar prè­vi­a­ment un parell de paquets de cap­ça­le­res (-dev):
1
2
sudo apt-get ins­tall ruby1.8-dev libsqlite3-dev
sudo bundle ins­tall

Per aca­bar asso­lint, final­ment, l’esperat:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Fetching source index for http://rubygems.org/
Using rake (0.8.7)
Using abs­tract (1.0.0)
Using acti­ve­sup­port (3.0.3)
Using buil­der (2.1.2)
Using i18n (0.5.0)
Using acti­ve­mo­del (3.0.3)
Using eru­bis (2.6.6)
Using rack (1.2.1)
Using rack-mount (0.6.13)
Using rack-test (0.5.6)
Using tzinfo (0.3.23)
Using acti­on­pack (3.0.3)
Using mime-types (1.16)
Using poly­glot (0.3.1)
Using tre­e­top (1.4.9)
Using mail (2.2.12)
Using acti­on­mai­ler (3.0.3)
Using arel (2.0.6)
Using acti­ve­re­cord (3.0.3)
Using acti­ve­re­source (3.0.3)
Using bund­ler (1.0.7)
Using thor (0.14.6)
Using rail­ties (3.0.3)
Using rails (3.0.3)
Installing sqlite3-ruby (1.3.2) with native exten­si­ons
Your bundle is com­plete! Use «bundle show [gem­name]« to see where a bund­led gem is ins­ta­lled.

{lang: «ca»}

17 des 2010

Servidor LAMP + Ruby on Rails

No Comments Informàtica

Advertiment: Després de les pri­me­res hores barallant-​​me amb Ruby on Rails m’he ado­nat que exis­tei­xen certs bugs en algu­nes ver­si­ons actu­als de Ruby, Rails i RubyGems, de manera que edito aquest post per eli­mi­nar les refe­rèn­cies a RoR en les coman­des d’instal·lació (igno­reu tot el punt 4 també). Deixem-​​ho en què és un howto per a instal·lar un ser­vi­dor LAMP. Quan hagi aca­bat de treure’n l’entrellat, de tot ple­gat, ja faré un altre post sobre Ruby on Rails.


Abans que res, LAMP és l’abreviació que es fa ser­vir per a referir-​​nos a un ser­vi­dor web amb Linux + Apache + MySQL + PHP. Sense entrar en con­fi­gu­ra­ci­ons més avan­ça­des (en tot cas ho dei­xaré per a futurs posts), instal·lar-lo si ja tenim una màquina amb GNU/​Linux fun­ci­o­nant és ben sen­zill. A més a més, en aquest post expli­caré com instal·lar phpMyAd­min per a fer més àgil la creació/​edició de les bases de dades MySQL i Ruby on Rails, de manera que tin­drem un entorn de desen­vo­lu­pa­ment i allot­ja­ment web com­plet. (En el meu cas per a crear i pro­var local­ment apli­ca­ci­ons web abans de posar-​​les al ser­vi­dor definitiu).

1 Instal·lar Apache + MySQL + PHP

Si ja tenim GNU/​Linux en fun­ci­o­na­ment, des d’un ter­mi­nal llan­cem l’ordre:

1
sudo apt-get ins­tall apache2 mysql-ser­ver mysql-cli­ent php5

El més nor­mal és que durant la instal·lació ens pre­gunti la con­tra­se­nya de root (admi­nis­tra­dor) que volem apli­car a la base de dades (és reco­ma­na­ble que no fem ser­vir la mateixa que tenim al sis­tema!) però si pel que fos no ens la dema­nés, la podem assig­nar poste­ri­or­ment fent:
1
sudo mysq­lad­min -u root -h local­host password pa$$w0rd

2 Instal·lem el mòdul de MySQL per PHP

1
sudo apt-get ins­tall php5-mysql

3 Instal·lem i provem phpMyAdmin

1
sudo apt-get ins­tall phpmyad­min

Per a pro­var si fun­ci­ona, només cal que obrim la pàgina http://localhost/phpmyadmin i ini­ciem ses­sió com a root, amb la con­tra­se­nya que hem esta­blert al pas 1.

4 Instal·lem RoR i el seu mòdul de MySQL

Ruby on Rails és un llen­guatge de pro­gra­ma­ció com­bi­nat amb un fra­mework de desen­vo­lu­pa­ment web «opti­mi­zed for pro­gram­mer hapi­ness and sus­tai­na­ble pro­duc­ti­vity», que així d’entrada –pel poc que n’he vist en un parell de tuto­ri­als– em sem­bla força atrac­tiu. De fet, tot aquest mun­tatge ve de la neces­si­tat de crear una apli­ca­ció web que vull fer amb RoR per aprendre’n. Val la pena fer un cop d’ull a TryRuby i Rails for Zombies si us interessa.

1
sudo apt-get ins­tall ruby rails ruby­gems libmysql-ruby liba­pache-ruby1.8

5 Evitem l'arrencada automàtica d'Apache i MySQL

Si aquesta instal·lació l’hem fet en el nos­tre ordi­na­dor per­so­nal (i no en un ser­vi­dor dedi­cat) ens pot interes­sar que només s’executin els ser­veis Apache i MySQL quan els neces­si­tem, a fi d’estalviar recur­sos del sis­tema. Per a aconseguir-​​ho només cal que con­fi­gu­rem el nos­tre nivell d’execució per defecte (sol ser el 2 en Debian/​Ubuntu) per­què no posi en marxa aquests ser­veis. Això ho farem eli­mi­nant els enlla­ços d’arrencada de la car­peta /etc/rc2.d (si el nos­tre nivell d’execució per defecte és el 2). Per com­pro­var el nivell d’execució actual (i per tant el con­fi­gu­rat per defecte si no l’hem can­viat) exe­cu­tem:

1
run­le­vel

i ens que­dem amb el segon valor. De fet, però, tot ple­gat pot resumir-​​se a les coman­des:
1
2
3
cd /​etc/​rc«run­le­vel | cut -d ” ” -f 2«.d
sudo rm *apache2
sudo rm *mysql

i lles­tos! A par­tir d’ara, sem­pre que enge­guem l’ordinador tin­drem els ser­veis de ser­vi­dor web i bases de dades atu­rats i per engegar-​​los només hau­rem de can­viar al nivell d’execució 3 fent:
1
sudo init 3

És clar que també podem engegar-​​los o aturar-​​los manu­al­ment sem­pre que vul­guem exe­cu­tant:
1
2
sudo ser­vice apache2 [stop|start]
sudo ser­vice mysql [stop|start]

Doncs bé, tot a punt per comen­çar a prac­ti­car amb Ruby on Rails un cop superat el tuto­rial Rails for Zombies. Si tot va bé miraré de fer un altre howto d’aquests expli­cant com crear una apli­ca­ció web sen­zi­lla amb aquest fra­mework.

{lang: «ca»}