jcatala.net

Compartint el coneixement

UNIX

GNU/Linux

Drupal i PHP

XHTML/CSS

Python

Android

Viatges

Off Topic



El meu Twitter El meu Flickr El meu Youtube El meu Instagram El meu Linkedin El meu Tumblr El RSS de la pagina
Logo Jcatala

Provant Pico TTS per a que l'ordinador parle

10 de Agost de 2016 per joan

Ahir al matí vaig crear un script que agafa les últimes incidències del Mantis Bug Tracker i l'ordinador les parla amb Festival o Mbrola. I avui he provat també una altra manera d'obtenir el resultat de text en veu computeritzada, amb Pico TTS (libttspico0 a Debian GNU/Linux), però úniques llengües vàlides són: en-US / en-GB / de-DE / es-ES / fr-FR / it-IT.

Amb cat exemple.txt | xargs -I exemple.txt -0 pico2wave -l ca-ES -w resultat.wav exemple.txt podem obtenir alguns exemples:

Test 1

pico2wave -l es-ES -w audio.wav "No es una voz perfecta pero no está nada mal. Se comprende perfectamente, pronuncia suficientemente bién las palabras. Entona bastante bién las frases y, en general, se asemeja a una voz humana, pese a no serlo." && aplay audio.wav

Test 2

pico2wave -l es-ES -w audio.wav "Los informáticos trabajan en diversas áreas de la información tecnológica, desde el amplio mundo del software, hasta el hardware, la electrónica y el mundo de los sistemas de redes." && aplay audio.wav

Test 3

pico2wave -l es-ES -w audio.wav "Soy una voz computerizada, parecida a festival o a Mbrola, pero un poco más mejorada. ¿No te parece?" && aplay audio.wav

Parlant amb Mbrola les noves incidències del Mantis Bug Tracker

9 de Agost de 2016 per joan

Situació: tenia un parell d'hores lliures aquest matí d'agost, i m'he fet un script que agafa les incidències del Mantis Bug Tracker (des dels titulars RSS) amb curl, i comprova si hi ha una nova, en cas de que sí, l'ordinador parlarà amb espeak i mbrola, el sintetizador lliure de veu computeritzada. ;-)

Tinc les tres veus, la del speak amb festival, la del mbrola es1 i la del mbrola es2:

Veu Festival
espeak.mp3 + un exemple

Veu Mbrola es1
mbrola-es1.mp3 + un exemple

Veu Mbrola es2
mbrola-es2.mp3 + un exemple

I ací l'script (amb el RSS llevat, perquè és el meu usuari):

#!/bin/bash

# Comprovacio 2 on creem el fitxer /tmp/segon_resultat.txt
curl -s 'xxxxxx_aci_el_teu_RSS__xxxxxx' |sed 's/</\n/g'|grep 'title>'|sed -e '/^\// d' -e 's/title>/ /g'| head -n 5 | iconv -f utf-8 -t utf-8 > ~/segon_resultat.txt

# Li llevem les dues primeres linies on diu "MantisBT sepam - INCIDENCIAS"

tail -n+3 ~/segon_resultat.txt >> ~/segon_resultat2.txt
rm ~/segon_resultat.txt

# Netejem el fitxer per a llevar-li el numero de ticket

cut -c 11- ~/segon_resultat2.txt > ~/segon_resultat.txt
rm ~/segon_resultat2.txt

# Ara anem a comparar-los: resultat.txt i segon_resultat.txt i si son distints crearem "resultat_final.txt" amb
# les incidencies noves del Mantis.

grep -Fvf ~/primer_resultat.txt  ~/segon_resultat.txt > ~/resultat_final.txt

# Ara anem a contar les linies del fitxer final "resultat_final.txt" i si tenim al menys una, avisarem de que anem a parlar.

contadorLinies=$(cat -n resultat_final.txt | tail -n 1 | cut -f1 | xargs)

if [ $contadorLinies \> "0" ];
   then
echo "es major que 0"
sed -i '1s/^/Nueva incidencia en el Mantis. \n/' ~/resultat_final.txt
   else
echo "no es major que 0"
fi;

# Aquest 'sed' ens serveix per a esborrar la paraula 'Privado' del títol, que sempre deixa l'RSS del Mantis
cat ~/resultat_final.txt | sed -e 's/\<Privado\>//g' > resultat_final2.txt

# Ara parlem amb mbrola i tornem a fer sonar el 'beep' per acabar
mv ~/resultat_final2.txt ~/resultat_final.txt
cat ~/resultat_final.txt |  espeak -v mb-es1


# Esborrem els fitxers generats (execepte primer_resultat.txt, que és el controlador
# amb les últimes incidències) i tanquem.
mv ~/segon_resultat.txt  ~/primer_resultat.txt
rm ~/resultat_final.txt

Un botó amb colors degradats amb CSS3

26 de Juliol de 2016 per joan

Ací un truquet per tenir botons, estil bootstrap, amb CSS3, on podem fer degradats entre dos colors i tenir un borde distint.

El botonet seria:

<p class="submit">
<input type="submit" name="login" class="button" value="Entrar" />
</p>

I afegiriem un exemple d'estil per als degratats de la següent manera:

.button{
  border: solid 1px #da7c0c;
  background: #f47c20;
  background: -webkit-gradient(linear, left top, left bottom, from(#91dc5a), to(#32a1ca));
  background: -moz-linear-gradient(top,  #91dc5a,  #32a1ca);
  filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#91dc5a', endColorstr='#32a1ca');
  color: #fff;
  padding: 7px 12px;
-webkit-border-radius:4px;
   -moz-border-radius:4px;
        border-radius:4px;
  float: right;
  cursor: pointer;
}

.button:hover{
  background: #f47c20;
  background: -webkit-gradient(linear, left top, left bottom, from(#91dc5a), to(#32a1ca));
  background: -moz-linear-gradient(top,  #91dc5a,  #32a1ca);
  filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#91dc5a', endColorstr='#32a1ca');
}

Exportem dades des de Drupal 6 a un repositori central CSV i importem en les noves taules

19 de Juliol de 2016 per joan

exportant camps de Drupal 6 a fitxers CSV
La idea és clara: faig consultes MySQL amb la informació que vull exportar, em cree un fitxer CSV i més tard importe eixa informació a la nova base de dades personalitzada.

Amb la següent consulta SQL aconseguisc tota la informació de la base de dades Drupal 6 de Klaku.net relativa a les notícies (codi id, títol, autor, categoria, url_font_noticia, vots_positius, vots_negatius i descripció).

Exportant tots els valors dels vots de Vote up/down de Drupal a una base de dades externa

19 de Juliol de 2016 per joan

Drupal Vote Up Down export data to external MySQL
La puntuació de les notícies del nou Klaku.net ha d'heretar les puntuacions de tots aquestos anys, no em val un "reiniciar i començar de nou" sinó que, tot i que vaig a reescriure la web i les bases de dades, vull que siga mantenint les dades de puntuacions dels anys passats a Drupal. Però, per a fer açò tenia que investigar com funciona el vote api i el mòdul vote up/dwn de Drupal 6.

M'he fet una consulta MySQL que contatena el sumatori dels vots positius amb un condicional i també els dels vots negatius amb un condicional, i finalment també els valors totals fent POSITIUS+(-NEGATIUS):

SELECT content_id, Sum(Case When value > 0 then value else 0 end) totalPositius, Sum(Case When value < 0 then value else 0 end) totalNegatius, SUM(value) AS Sumeta FROM votingapi_vote WHERE content_type="node" GROUP BY content_id;

Concretament, la consulta que veus a la captura de pantalla és aquesta:

SELECT content_id, Sum(Case When value > 0 then value else 0 end) totalPositius, Sum(Case When value < 0 then value else 0 end) totalNegatius, SUM(value) AS Sumeta FROM votingapi_vote WHERE content_type="node" AND content_id="3873" GROUP BY content_id

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

18 de Juliol de 2016 per joan

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));

Migrant un Drupal complet a un nou Drupal o nodes entre distints Drupals

16 de Juliol de 2016 per joan

Migrant Drupal
En aquest article intente explicar breument alguns camins per al repte de migrar un projecte web Drupal 6 a un Drupal 7, o si no fas servir massa funcionalitats amb mòduls, directament a Drupal 8. Per què no? la valoració l'has de fer tu analitzant les funcionalitats i requisits tècnics de la teua web. Drupal 8 encara està una miqueta verd, en comparació amb Drupal 7, però el core és molt millor, sense dubte.

El primer pas quan vols actualitzar i migrar tot un Drupal a una nova versió és el camí tradicional: fer servir de update.php fins a tenir la última versió de Drupal 6, i a continuació descarregar la última versió de la nova versió del core que vullgues, 7.x o 8.x i fer un upgrade.

Funció de PHP que acurta simplement el domini d'una adreça determinada

15 de Juliol de 2016 per joan

A la web de Klaku, tinc la funcionalitat just baix de la notícia que mostra el host des d'on ve la notícia. Per exemple, si la notícia té una adreça llarga tipo "vilaweb.cat/seccio/cultura/pep-botifarra-tocara-dema", jo el que vull mostrar es: Font --> vilaweb.cat.

Aleshores, amb la funció preg_match podem abreviar tota una url llarga i, fins i tot, ja siga aquesta http o https:

<!-- formateig del host de la font de la noticia.  -->

<?php
preg_match
("/^(https?:\/\/)?([^\/]+)/i",$myrow['ligilo'], $coin);
$nombre_host_fuente_noticia = $coin[2];
?>


<span class="noticia_informacio_publicacio1">Adreso: <?php echo $nombre_host_fuente_noticia;?></span><br />

Drush or die

11 de Juliol de 2016 per joan

Els meus apunts de Drushejant, que és gerundi

Ací vaig apuntant alguns apunts i cosetes diverses, aleshores aquest article també anirà ampliant-se conforme durant el temps necessite apuntar noves idees i alguns truquets. Per a resumir: avui en dia instal·lem drupals, els actualitzem, instal·lem mòduls i els activem, esborrem cachés i més coses des de la consola, sense necessita de fer clicks ni descàrregues manuals des de la web del projecte Drupal.


Informacions bàsiques
---------------------------------------------------------------

Drush és programari lliure, amb Python, i està disponible a totes les plataformes com FreeBSD, OpenBSD, GNU/Linux i altres merdes. Amb Drush, executem una ordre en consola i rebem una resposta. Per exemple, per tal de saber l'estat de la nostra instal·lació, les versions dels llenguatges i sistema operatiu, etc:

# drush core-status

Drupal version                  :  7.50                        
Site URI                        :  http://default              
Database driver                 :  mysql                       
Database username               :  joan                        
Database name                   :  drupal1_db                  
Database                        :  Connected                   
Drupal bootstrap                :  Successful                  
Drupal user                     :  Anonymous                   
Default theme                   :  bartik                      
Administration theme            :  seven                       
PHP executable                  :  /usr/local/bin/php          
PHP configuration               :                              
PHP OS                          :  FreeBSD                     
Drush version                   :  6.5.0                       
Drush configuration             :                              
Drush alias files               :                              
Drupal root                     :  /usr/local/www/apache24/data
Site path                       :  sites/default               
File directory path             :  sites/default/files         
Temporary file directory path   :  /tmp 

A partir d'ara, no cal anar ficant les respotes, simplement explique breument què fa cada ordre principal de Drush. Comencem.

Quins mòduls tinc instal·lat?

drush pml

Quins mòduls tinc a /sites/all/modules?

drush pm-list --type=Module

Quins themes tinc a /sites/all/themes?

drush pm-list --type=Theme

Clean URLs / URLs netes de Drupal a l'Apache amb FreeBSD

10 de Juliol de 2016 per joan

Clean URLs / URLs netes de Drupal a Apache amb FreeBSD

Ja siga si tens un únic lloc web o tens una configuració de virtual hosts a l'Apache (versió 2.4, en el meu cas), per a tenir les URLs netes cal activar el mod_rewrite de l'Apache.

Editarem /usr/local/etc/apache24/httpd.conf i descomentem:

LoadModule rewrite_module libexec/apache24/mod_rewrite.so

Reiniciem el servei de l'Apache, i ja pots configurar les URLs netes des de Drupal.