Archive for the ‘Programació’ Category

Curs de Go en Català

Dimarts, juliol 29th, 2014

Si voleu aprendre a programar en Go de google, hi ha uns tutorials en diverses llengues, entre elles el Català.

 

http://go-tour-ca.appspot.com/#1

go-tour-ca-codic-cat

 

Solució: Linux problema composer not enough memory

dilluns, juliol 21st, 2014

Si el composer us peta dient que PHP no té prou memòria, la solució és senzilla.

Actualitzeu la quantitat de memòria que pot usar PHP (CLI – des de línia de comandes) a 1GB o sense límit:

vi /etc/php5/cli/php.ini

Sense límit és:

memory_limit = -1

php-ini-memory-limit-limitless

Si no has fet servir abans vi:

Per a esborrar prem: x

Per a inserir prem: i

Per a sortir prem:

<Esc>:wq<Enter>

wq vol dir guardar (write) i sortir (quit)

 

O pots fer servir l’editor: nano

Alliberat PHPStorm 7.1.1

dilluns, gener 27th, 2014

S’ha alliberat la nova versió de PHPStorm, que adreça un bon número de bugs.

http://blog.jetbrains.com/phpstorm/2014/01/phpstorm-7-1-1-bug-fix-update-is-available/

Solució a problema Cassandra a Ubuntu: The stack size specified is too small, Specify at least 160k

dissabte, gener 4th, 2014

Si després d’instal·lar Cassandra per a Linux veieu que no arranca i trobeu al log /var/log/cassandra/output.log el següent error:

The stack size specified is too small, Specify at least 160k
Cannot create Java VM
Service exit with a return value of 1

La solució és ben senzilla, ampliar la mida de l’stack mínim:

Editeu l’arxiu /etc/cassandra/cassandra-env.sh i a la linia on diu:

vim file /etc/cassandra/cassandra-env.sh-Xss128k canvieu el valor per un de més gran, com a mínim 192k, us recomano 256k

De manera que la linia quedarà:

JVM_OPTS="$JVM_OPTS -Xss256k"

Llavors feu:

sudo service cassandra start

I ja ho tindreu

Com fer push a Github amb un usuari diferent, quan hem clonat un repositori anònim

Dimarts, desembre 24th, 2013

Si et trobes que has fet un git clone d’un repositori anònim que et pertany, hi treballes des de PHPStorm i després vols fer push amb uns canvis, et retornarà un error 403 i no et deixarà.

La solució és tant senzilla com anar a la línia de comandes, entrar al directori del vostre repositori i escriure:

git push

Us demanarà l’usuari i la contrassenya i llestos.

Com instal·lar memcache per a PHP en Linux

dilluns, novembre 18th, 2013

En aquest article explicaré com instal·lar memcache i memcached en Ubuntu/Debian Linux i el seu suport per a PHP.

Per a aclarir els dubtes memcached és la llibreria del sistema operatiu que ofereix el servei de base de dades NoSQL en memòria.

Les llibreries client s’anomenen php5-memcache, la versió més antiga i més estable, i php5-memcached la nova versió amb més funcionalitats.

Assumeixo que teniu apache2 instal·lat i us passo les passes per a instal·lar memcached i tot el necessari per a treballar en PHP.

Per a refrescar els paquets:

sudo apt-get update

En  primer lloc ens assegurarem de tenir PHP instal·lat:

sudo apt-get install php5

Instal·larem altres llibreries necessàries per a PHP

sudo apt-get install php5-dev

sudo apt-get install php-pear

sudo apt-get install make

Instal·larem memcached:

sudo apt-get install memcached

Instal·larem el client memcache:

sudo apt-get install memcache

Instal·larem l’extensió per a PHP:

sudo apt-get install php5-memcache

Escriurem l’arxiu per a que PHP carregui la llibreria en iniciar-se l’apache:

echo “extension=memcache.so” > /etc/php5/apache2/conf.d/memcache.ini

I reiniciem l’apache:

sudo service apache2 restart

L’arxiu de configuració és a /etc/memcached.conf

 

Alliberat PHPStorm 7

diumenge, octubre 27th, 2013

PHPStorm és amb quasi tota probabilitat el millor IDE per a programar en PHP.

El proppassat dia 22 d’Octubre van alliberar la versió 7, que inclou moltes funcionalitats realment interessants al ja prou bo repertori.

Als drupalers que seguiu el bloc us agradarà saber com n’és de bo el suport per a aquest CMS, amb auto-completar per als hooks i identificació de en quin punt es dispara.

Aquí podeu veure moltes de les funcionalitats afegides:

http://blog.jetbrains.com/phpstorm/2013/10/phpstorm-7-0-released-php-5-5-vagrant-ssh-console-debugger-config-validation-drupal-frameworks-more/

Aquí podeu veure el vídeo:

 

Alliberat Apache Tomcat 7.0.47

diumenge, octubre 27th, 2013

El proppassat dia 24 d’Octubre s’alliberà la versió 7.0.47 del Servidor Apache Tomcat.

La novetat més important que incorpora és que han manllevat de Tomcat 8 el suport per a WebSockets 1.0 i l’han incorporat.

Back-port the JSR-356 Java WebSocket 1.0 implementation from Apache Tomcat 8.

Cal fer notar que per a aquesta funcionalitat és necessari emprar Java 7.

 

Alliberats PHP 5.5.5 i 5.4.21

dissabte, octubre 19th, 2013

El proppassat 17 d’octubre foren alliberades les versions 5.5.5 i 5.4.21 de PHP respectivament.

Respecte la 5.4.21, aquesta versió soluciona 10 bugs de la versió anterior.

Per a mi els pitjors són:

Standard:

  • Fixed bug #61548 (content-type must appear at the end of headers for 201 Location to work in http).

CLI server:

  • Fixed bug #65633 (built-in server treat some http headers as case-sensitive).

Datetime:

  • Fixed bug #64157 (DateTime::createFromFormat() reports confusing error message).

Filter:

  • Add RFC 6598 IPs to reserved addresses.
  • Fixed bug #64441 (FILTER_VALIDATE_URL rejects fully qualified domain names).

DBA extension:

  • Fixed bug #65708 (dba functions cast $key param to string in-place, bypassing copy on write).

Els podeu consultar tots al changelog.

Respecte la versió 5.5.5 soluciona uns 20 bugs, podeu veure la llista completa al changelog.

Jo destaco els següents errors solucionats, com els més greus:

Core:

  • Fixed bug #64979 (Wrong behavior of static variables in closure generators).
  • Fixed bug #65821 (By-ref foreach on property access of string offset segfaults)

CLI Server:

  • Fixed bug #65633 (built-in server treat some http headers as case-sensitive).
  • Fixed bug #65818 (Segfault with built-in webserver and chunked transfer encoding).

Datetime:

  • Fixed bug #64157 (DateTime::createFromFormat() reports confusing error message).
  • Fixed bug #65502 (DateTimeImmutable::createFromFormat returns DateTime).
  • Fixed bug #65548 (Comparison for DateTimeImmutable doesn’t work).

DBA:

  • Fixed bug #65708 (dba functions cast $key param to string in-place, bypassing copy on write).

Filter:

  • Add RFC 6598 IPs to reserved addresses.
  • Fixed bug #64441 (FILTER_VALIDATE_URL rejects fully qualified domain names).

FTP:

  • Fixed bug #65667 (ftp_nb_continue produces segfault).

GD:

  • Ensure that the defined interpolation method is used with the generic scaling methods.

OPCache:

  • Fixed bug #65845 (Error when Zend Opcache Optimizer is fully enabled).
  • Fixed bug #65665 (Exception not properly caught when opcache enabled).
  • Fixed bug #65510 (5.5.2 crashes in _get_zval_ptr_ptr_var).
  • Fixed issue #135 (segfault in interned strings if initial memory is too low).

Sockets:

  • Fixed bug #65808 (the socket_connect() won’t work with IPv6 address).

SPL:

  • Fixed bug #64782 (SplFileObject constructor make $context optional / give it a default value).

Standard:

  • Fixed bug #61548 content-type must appear at the end of headers for 201 Location to work in http.

XMLReader:

  • Fixed bug #51936 Crash with clone XMLReader.
  • Fixed bug #64230 XMLReader does not suppress errors.

 

 

 

 

 

 

 

 

 

 

 

 

 

Solució C++ Qt invalid use of incomplete type ‘class QClipboard’

diumenge, octubre 13th, 2013

Si us trobeu amb el problema que no podeu accedir a escriure al porta-papers (clipboard) des de C++ i Qt, i el compilador us retorna aquest error:

error: invalid use of incomplete type ‘class QClipboard’

Copiar al portapapers / Copy to clipboard

L’error és molt senzill de solucionar, però he vist persones demanant-ho a Internet, i ningú els ha aportat la solució.

De fet al codi font mostrat no hi ha cap error.

 

void MainWindow::on_copyButton_clicked()
{
    QString s_copiar_al_clipboard = QString::fromUtf8(ui->textEdit->toPlainText().toStdString().c_str());

    QClipboard *clipboard = QApplication::clipboard();
    clipboard->setText(s_copiar_al_clipboard);
}

Simplement heu d’afegir QClipboard als vostres includes.

#include <QClipboard>

I el vostre codi funcionarà a la perfecció.

Això funciona amb Qt4 i Qt5 sense problemes.

Smarty: reemplaçar diversos textes en una cadena de text

divendres, octubre 4th, 2013

Si des de Smarty volem fer vàries substitucions en una cadena abans demostrar-la podem encadenar modificadors:

{$variable|replace: 'cadena a cercar':'el que hi posarem'}

Per exemple, partint d’aquesta constant definida des de PHP:

define("INDEX_GIMCAMA","La gimcama comença des de ###ORIGEN_CIUTAT_NOM### (###ORIGEN_PAIS###) - ###ORIGEN_CIUTAT_CODI### a ###DESTINACIO_CIUTAT_NOM### (###DESTINACIO_PAIS###) - (###DESTINACIO_CIUTAT_CODI###) i costa ###PREU### ###SIMBOL_MONEDA###");

Aquest és un petit truc per a pàgines multi-llengua, en que les cadenes es defineixen en diferents idiomes, i s’inclou l’arxiu pertinent (require_once).

I tenim present que hem passat a la plantilla de Smarty les variables pertinents des de PHP:

$smarty->assign('s_origen_ciutat_nom', 'Barcelona');
$smarty->assign('s_origen_pais', 'Catalunya');
$s_codi_moneda = 'CAT';  // Aquí hi aniria EUR, USD... en aquests moments polítics en que Europa no s'ha decantat clarament del costat de la Democràcia, perquè no pensar a fer un nou Estat amb moneda pròpia? ;)
$smarty->assign('s_codi_moneda', $s_codi_moneda);
$smarty->assign('i_decimals', 2);
// etc...

Llavors a la TPL (plantilla) faríem:

{$smarty.const.INDEX_GIMCAMA|replace: '###ORIGEN_CIUTAT_NOM###':$s_origen_ciutat_nom|replace: '###ORIGEN_PAIS###':$s_origen_pais|replace: '###ORIGEN_CIUTAT_CODI###':$s_origen_ciutat_codi|replace: '###DESTINACIO_CIUTAT_NOM###':$s_destinacio_ciutat_nom|replace: '###DESTINACIO_PAIS###':$s_destinacio_pais|replace: '###DESTINACIO_CIUTAT_CODI###':$s_destinacion_ciutat_codi|replace: '###SIMBOL_MONEDA###':$s_simbol_moneda|replace: '###PREU###':{$s_preu|money_format:$s_codi_moneda:$i_decimals}}"

Fixeu-vos com al final reemplaço ###PREU### pel preu amb el modificador (modifier) money_format, passant-li |money_format per a que em doni format amb decimals i separadors de milers, i així acabar-ho de brodar.

Alliberat PHP 5.5.3 i 5.4.19

divendres, agost 30th, 2013

El proppassat 22 d’Agost s’alliberaren noves versions de PHP.

La 5.5.3 i la 5.4.19.

Aquestes versions arriben prou ràpid, doncs solucionen uns bugs trobats a les versions anteriors certament una mica aparatosos.

Recordeu que PHP 5.3 va arribar a end-of-life al Juliol i ja no el mantenen.

Alliberat PHP 5.5.2

dissabte, agost 17th, 2013

Fa unes hores s’ha alliberat PHP 5.5.2.

Aquesta versió soluciona uns 20 errors, inclós un error de seguretat en el mòdul OpenSSL.

Aquí podeu veure tots els canvis a la 5.5.2 (Changelog).

Alliberat PHP 5.4.18

divendres, agost 16th, 2013

S’ha alliberat la versió 5.4.18 de PHP. Aquesta versió esmena més de 30 bugs.

Si voleu descarregar els binaris per a windows seguiu l’enllaç.

Us recordo que PHP 5.3 va arribar a la fi de la seva vida “end of life” amb la versió 5.3.27 el proppassat 11 de Juliol.

Tanmateix el 18 de Juliol s’alliberà la versió 5.5.1

Afegir l’hora a una plantilla Smarty

dimecres, juliol 10th, 2013

Si heu d’afegir l’hora a una plantilla d’Smarty és molt fàcil:

 

Hora local: {$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}