Evolució, anades d'olla i millores al projecte web Klaku.net

Hacker

Després de moltes hores intentant migrar Klaku.net des de l'actual versió Drupal 6 a versions més modernes (D6 6.38, D7 o D8), he tingut unes quantes reflexions personals i finalment he decidit migrar i evolucionar Klaku.net a una base de dades personalitzada i un desenvolupament amb Bootstrap + CSS3 + HTML5 com a front-end i PHP + MySQL + Ajax com a back-end

De moment, he fet el següent disseny:


CREATE TABLE novajxo ( id_novajxo int not null auto_increment, dato date, uzanto varchar(20), titolo varchar(140), ligilo varchar(200), total_pozitivoj int(6), total_malpozitivoj int(6), etikedoj varchar(140), kategorio varchar(50), sxtato varchar(10), PRIMARY KEY(id_novajxo));
.
CREATE TABLE uzanto ( id_uzanto int not null auto_increment, dato date, nomo varchar(20), retadreso varchar(100), pasvorto varchar(100), bildo varchar(60), PRIMARY KEY(id_uzanto));
.
CREATE TABLE kontrolo ( id_kontrolo int not null auto_increment, id_novajxo int(6), uzanto varchar(20), ip varchar(60), dato date, tipo_baloto varchar(20), PRIMARY KEY(id_kontrolo));
.
CREATE TABLE komento (id_komento int not null auto_increment, novajxo_id int(6), uzanto varchar(20), priskribo text, PRIMARY KEY (id_komento));
.
CREATE TABLE sekcioj (id_sekcio int not null auto_increment, nomo_sekcio varchar(50), PRIMARY KEY (id_sekcio));

On tinc una configuració final de:


mysql> show tables;
+---------------------+
| Tables_in_klaku3_db |
+---------------------+
| komento             |
| kontrolo            |
| novajxo             |
| sekcioj             |
| uzanto              |
+---------------------+
5 rows in set (0,00 sec)
.
.
mysql> describe komento;
+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| id_komento | int(11)     | NO   | PRI | NULL    | auto_increment |
| novajxo_id | int(6)      | YES  |     | NULL    |                |
| uzanto     | varchar(20) | YES  |     | NULL    |                |
| priskribo  | text        | YES  |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+
4 rows in set (0,00 sec)
.
mysql> describe kontrolo;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| id_kontrolo | int(11)     | NO   | PRI | NULL    | auto_increment |
| id_novajxo  | int(6)      | YES  |     | NULL    |                |
| uzanto      | varchar(20) | YES  |     | NULL    |                |
| ip          | varchar(60) | YES  |     | NULL    |                |
| dato        | date        | YES  |     | NULL    |                |
| tipo_baloto | varchar(20) | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+
6 rows in set (0,01 sec)
.
mysql> describe novajxo;
+--------------------+--------------+------+-----+---------+----------------+
| Field              | Type         | Null | Key | Default | Extra          |
+--------------------+--------------+------+-----+---------+----------------+
| id_novajxo         | int(11)      | NO   | PRI | NULL    | auto_increment |
| dato               | date         | YES  |     | NULL    |                |
| uzanto             | varchar(20)  | YES  |     | NULL    |                |
| titolo             | varchar(140) | YES  |     | NULL    |                |
| ligilo             | varchar(200) | YES  |     | NULL    |                |
| total_pozitivoj    | int(6)       | YES  |     | NULL    |                |
| total_malpozitivoj | int(6)       | YES  |     | NULL    |                |
| etikedoj           | varchar(140) | YES  |     | NULL    |                |
| kategorio          | varchar(50)  | YES  |     | NULL    |                |
| sxtato             | varchar(10)  | YES  |     | NULL    |                |
+--------------------+--------------+------+-----+---------+----------------+
10 rows in set (0,01 sec)
.
mysql> describe uzanto;
+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| id_uzanto | int(11)      | NO   | PRI | NULL    | auto_increment |
| dato      | date         | YES  |     | NULL    |                |
| nomo      | varchar(20)  | YES  |     | NULL    |                |
| retadreso | varchar(100) | YES  |     | NULL    |                |
| pasvorto  | varchar(100) | YES  |     | NULL    |                |
| bildo     | varchar(60)  | YES  |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+
6 rows in set (0,00 sec)
.
mysql> 
.
.
mysql> describe sekcioj;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| id_sekcio   | int(11)     | NO   | PRI | NULL    | auto_increment |
| nomo_sekcio | varchar(50) | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+
2 rows in set (0,00 sec)
.
mysql>

Després, he hagut de fer algunes modificacions posteriors a les taules, i segur que van eixint més canvis i modificacions:


ALTER TABLE novajxo ADD COLUMN priskribo text;
ALTER TABLE novajxo MODIFY dato INT(11) NOT NULL;  #el camp date de Drupal és integer!
ALTER TABLE uzanto MODIFY dato INT(11) NOT NULL;   #el camp date de Drupal és integer!
ALTER TABLE komento ADD COLUMN dato text;

Per a llegir la data de manera comprensible, farem:


mysql> SELECT FROM_UNIXTIME(dato) FROM uzanto WHERE id_uzanto="1";
+---------------------+
| FROM_UNIXTIME(dato) |
+---------------------+
| 2013-02-11 13:03:48 |
+---------------------+
1 row in set (0,00 sec)

Més formats amb la data, a l'hora de programar la web: https://kitt.hodsden.org/mysql/converting_mysql_timestamps_int11

MIGRACIÓ DE DADES

L'script python següent llegeix el fitxer CSV i va introduint les dades a les bases de dades noves:


# Importacio dels usuaris del CVS del Drupal 6 a la nova base de dades de Klaku
#
import csv
.
reader = csv.reader(open('taula_usuaris.csv', 'rb'))
fitxer_sql = open('taula_usuaris.sql', 'w') # Indiquem escriptura 'w'.
for index,row in enumerate(reader):
        #Imprimim en consola cada linea
        #print 'INSERT INTO uzanto (id_uzanto, dato, nomo, retadreso, pasvorto, bildo) VALUES ('+row[0]+', '+row[1]+', '+row[2]+', '+row[3]+', '+row[4]+', '+row[5]+');'
.
        #Pero en el meu cas, vull generar un fitxer SQL per a les importacions
        fitxer_sql.write("INSERT INTO uzanto (id_uzanto, dato, nomo, retadreso, pasvorto, bildo) VALUES ("'"'   +row[0]+   '"'", "'"'   +row[1]+   '"'", "'"'   +row[2]+   '"'", "'"'    +row[3]+   '"'", "'"'    +row[4]+    '"'", "'"'    +row[5]+    '"'");\n")
.
fitxer_sql.close()

Doncs bé això és tot, espere que trobes útil aquest article i que et motive a compartir els teus trucs, els teus coneixements i els teus experiments amb el Programari Lliure. Pensa-ho, va, que la Comunitat del Programari Lliure va creixent gràcies a la documentació, el disseny, la formació o la programació, sigues part de la Comunitat :-)

La cultura i la lliure circulació de les idees és l'arma més efectiva contra les dictadures del pensament i contra la ignorància.

Utilitats

NAVEGACIÓ SENSE RATOLÍ

- Tab següent enllaç.
- Shift+Tab anterior enllaç.
- Enter activa l'enllaç.
- Alt+esquerra anar arrere.

CONTRAST DE COLORS

Accessibilitat - Color Negre
Accessibilitat - Color Groc
Accessibilitat - Color Verd

Accessibilitat - Color Blau
Accessibilitat - Color Crema
Accessibilitat - Color Blanc

 

PORTADES ALTERNATIVES