Archive for the ‘Trucs / Tips and tricks’ Category

Ubuntu solucionar problema Not enough free space: boot

dilluns, juliol 7th, 2014

Si no us podeu actualitzar ja que obteniu un missatge conforme no hi ha prou espai a /boot la solució és senzilla.

Linux va deixant diversos kernels a /boot però només necessiteu un realment.

Podeu eliminar els que no necessiteu amb dpkg deinstall o –remove

El que jo faig en alguna ocassió és copiar tots els kernel que no utilitzo a una altra carpeta del filesystem on sí que hi tinc molt d’espai i eliminar-los amb dpkg.

Per exemple:

mkdir /home/carles/boot_backup
sudo cp /boot/System.map-3.11.0-19-generic /home/carles/boot_backup/
sudo cp /boot/abi-3.11.0-19-generic /home/carles/boot_backup/
sudo cp /boot/config-3.11.0-19-generic /home/carles/boot_backup/
sudo cp /boot/initrd.img-3.11.0-19-generic /home/carles/boot_backup/
sudo cp /boot/vmlinuz-3.11.0-19-generic /home/carles/boot_backup/

sudo apt-get remove --purge linux-image-3.13.0-30-generic

Pots saber quines imatges tens instal·lades amb aquesta comanda:

sudo dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

Solucionar problema iPhone no funciona la pantalla

diumenge, juliol 6th, 2014

hard-reset-of-iPhone-4sDe vegades et podria arribar passar que l’iPhone se’t quedi en negre, i tot i que el telèfon funciona, aquest no mostri res a la pantalla.

Romangui com apagada, com si estigués trencada.

 

En la majoria dels casos la solució és senzilla.

Es tracta de fer el que anomenem un “hard reset”. Es tracta de fer que el telèfon es reinicïi. Per a aconseguir això premerem simultàniament el botó d’encendre/apagar el mòbil i el botó de minimitzar aplicacions (el gran rodó).

Si mantenim els botons premuts durant entre 5 i 10 segons veurem que el mòbil es reinicia, apareixerà davant nostre el logo de la poma mossegada i el terminal tornarà a reiniciar i haurem solucionat el problema.

Una altra manera d’aconseguir el mateix seria deixar que la bateeria del terminal s’acabi del tot i aquest s’apagui.

En connectar-lo al carregador, veuríem aparèixer la barra de percentatge de càrrega de bateria i ja el podríem iniciar normalment.

Jo he tingut el problema de que la pantalla se’m queda en negre, com us he descrit dues vegades. Sempre coincidint amb que l’aplicació d’email deixava de respondre.

La combinació de tecles que us he indicat, si es prem només un segon, serveix per a capturar la pantalla.

dead-iphone

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.

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.

Linux: Solució problema corrupció de vídeo

dimecres, abril 3rd, 2013

Sortida de vídeo corruptaSi us ha passat algun cop que després de suspendre l’equip la tarja de vídeo es queda corrupta i envia una imatge al monitor il·legible i caòtica, podeu apagar amb el botó l’ordinador (aguantant 5 segons el botó d’apagat) o podeu solucionar-ho com jo ho he fet.

El truc consisteix a passar al mode de terminal a pantalla completa CTRL + ALT + F1 (o F2 – F6), i llavors tanca la tapa de l’ordinador.

Normalment se suspendria, si tenieu com jo l’ordinador connectat a la corrent elèctrica, en ser al mode de terminal a pantalla completa, no se suspendrà, però s’apagarà el monitor, i en tornar a pujar la tapa del portàtil, s’encendrà i la imatge es veurà perfectament de nou.

Llavors, ja només heu de prèmer CTRL + ALT + F7 per a tornar a l’Escriptori gràfic.

Solució a Touch Pad penjat en Linux

dimecres, febrer 13th, 2013

Touch pad de portàtilEls dono molta canya als portàtils, molta.

Això vol dir que fan molt de swapping i de vegades arriben a saturar-se tant, que passen coses com que el controlador del Touch Pad deixa de funcionar.

La solució que us proporciono és per a sortir del pas i soluciona el problema quan us passa.

Simplement premeu Ctrl + Alt + F1 de manera que aneu al terminal en mode text.

Llavors premeu Ctrl + Alt + F7 per a tornar a la interfície gràfica i el Touch Pad s’haurà recuperat.

Capturar una regió de pantalla en Ubuntu 12.04

diumenge, gener 13th, 2013

En Ubuntu 12.04 hi ha una combinació de tecles que permeten capturar una regió de la pantalla sense ajut de cap programari extra.

La combinació és prèmer Shift i simultànimanet Impr pant o Print Scrn a teclats internacionals.

La tecla Shift és aquella amb la que mentre la manteniu premuda i premeu una vocal feu una majúscula (o la que feu servir per als caracters com $ ! ” / etc…).

Altres combinacions que us poden fer servei i que també funcionen a windows són:

Alt + Impr pant = captura la finestra seleccionada

Impr pant = captura tota la pantalla. En ordinadors amb dos monitors captura la imatge dels dos.

Jo habitualment empro el programa KSnapshot que em permet fer una captura al cap d’un número de segons, però aquest truc em suposa un estalvi de temps la majoria de vegades.

Agraïments a en Maure per la combinació Shift + Impr pant. ;)

Una experiència SD

dissabte, desembre 8th, 2012

Com sabeu els meus portàtils porten tots SSD.

Tinc previst escriure un article sobre les seve avantatges més endavant.

Però un dels seus desavantatges és que les escriptures reiterades en una cel·la de memòria provoquen la inutilització de la mateixa.

És un problema tan greu que molts fabricants de discs SSD hi incorporen fins un 20% d’espai extra que no es pot utilitzar i el disc mou les dades cap allí quan detecta que una cel·la és a punt de morir (aquelles cel·les també acaben quedant inutilitzables).

Llavors, per a evitar escriptures, no utilitzo partició de swap.

En general això no és problema, però si la memòria del portàtil s’acaba, com no se’n pot al·locatar més, el programa que havia fet la petició d’augmentar memòria peta.

Per a solucionar això vaig decidir comprar una tarja SSD de 4 GB, que em va costar 4,5 €, i hi tinc 2 GB per a còpies de seguretat, i 2 GB per a espai d’intercanvi swap.

La solució funciona bé però hi ha alguns contratemps:

– Quan suspenc el portàtil, de vegades en encendre’l de nou no em detecta la swap

– Si la tarja de memòria surt, i és fàcil en el meu model ja que al posar-lo a la bosa, si l’empeny una mica salta, i no me n’adono, quan l’encenc i el sistema necessita la swap, peta l’aplicació que la demanava

Amb tot és una solució enginyosa i molt barata que permet allargar la vida del disc SSD i no privar-nos de swap, i volia compartir-la amb vosaltres. :)

Solució MySql can’t connect

diumenge, juliol 8th, 2012

Aquest article pretén cobrir un dubte recurrent que es fa molta gent que té una màquina virtual al núvol, amb MySql i tot i obrir els port 3306 al tallafocs (firewall) no pot connectar-s’hi remotament.

La solució consisteix a editar l’arxiu:

my.cnf

Normalment ubicat a /etc/mysql/my.cnf

I allà comentar la línia que diu:

bind-address            = 127.0.0.1

Això el que fa és canviar la configuració per defecte de MySql de només escoltar peticions a la ip 127.0.0.1 (localhost), i que el servidor MySql escolti a totes les adreces que la màquina té disponible.

Llavors reiniciem el servidor:

service mysql restart

Una altra cosa que haurem de tenir en compte, és que per a poder connectar al servidor l’usuari amb el que accedir haurà d’estar creat localment, i també amb %.
Això ho fem creant l’usuari de manera local i amb accès des de tot arreu (%) o des de la ip que hagi de poder accedir:

CREATE USER 'carles'@'localhost' IDENTIFIED BY 'CatalunyaTriomfant';
GRANT USAGE ON *.* TO 'carles'@'localhost';
GRANT SELECT, SHOW VIEW, INSERT  ON `projectes`.* TO 'carles'@'localhost';
FLUSH PRIVILEGES;

CREATE USER 'carles'@'%' IDENTIFIED BY 'CatalunyaTriomfant';
GRANT USAGE ON *.* TO 'carles'@'%';
GRANT SELECT, SHOW VIEW, INSERT  ON `projectes`.* TO 'carles'@'%';
FLUSH PRIVILEGES;

Altrament no ens acceptaria consultes des de ip’s remotes.

Ubuntu 12.04 fer que s’executin programes a l’inici

dijous, maig 3rd, 2012

Una pregunta habitual és com fer que s’executin programes quan fem login a l’ordinador.

Exemples podrien ser el programari de xat pidgin, dropbox, o sshfs.

Des de la versio 11.10 és possible afegir programes al menú d’inici fent clic sobre l’icone que hi ha a l’extrem superior, dret, de la pantalla i seleccionant Aplicacions d’inici.

sshfs muntar una carpeta a través de ssh

divendres, febrer 3rd, 2012

En Linux muntar una carpeta de servidor per Samba i treballar-hi amb projectes de PHP, suposa alguns problemes.

En primer lloc és molt lent i nombrosos programes perden molta estona, minuts, en recuperar els arxius d’un directori.

Després no està gens recomanat per a Subversion.

A part hi ha problemes de permisos entre usuaris de Linux, i sovint problemes amb la data i hora dels arxius al repositori Samba.

I suposa greus problemes si unim Samba + SVN + PhpStorm.

Aquests problemes desapareixen si enlloc de Samba utilitzem sshfs, que és una utilitat que ens permet muntar carpetes al nostre sistema d’arxius, tenint simplement un usuari ssh.

Jo tinc m’he fet un petit script o guió, que em munta una carpeta cada cop que el crido:

#!/bin/sh
usuari_devel=carles
sshfs $usuari_devel@devel.servidor.codic.cat:/home/OFICINES/$usuari_devel /home/$usuari_devel/devel

Per a instal·lar-lo:

sudo apt-get install sshfs

Gràcies Xavier Vidal.

Li vaig trobar un problema, que és quan poses l’ordinador en modus de suspensió (sleep/suspend), ja que després no pots accedir a la carpeta, ni desmuntar, ni tornar a muntar-la amb sshfs.

L’he pogut solucionar fent:

fusermount -u $mountpoint_devel

tot just abans de suspendre l’ordinador.
En tornar-lo a iniciar després, caldrà obrir una connexió ssh cap al servidor manualment (ssh elmeuservidor), i després podem tornar a llençar sshfs per a muntar la carpeta.

Debuguejar codi PHP de servidor

dijous, desembre 29th, 2011

A partir de PHP 5.3 tenim una funció molt pràctica que ens permet debuguejar, especialment al costat servidor.

Es tracta de register_tick_function.

Aquesta funcionalitat ens permetrà fer una crida a tick_handler, cada interval especificat per el número de ticks, i d’aquesta manera podrem tracejar en quin moment peten els programes més difícils de debuguejar o que casquen perquè falla nginx, un altre component o llibreria o perquè s’omple la memòria.

declare(ticks=1);

// Una funció que es crida a cada esdeveniment tick
function tick_handler()
{
    $st_traces_de_debug = debug_backtrace();

    // FileUtils és una classe meva per a treballar en arxius
    // En aquest cas enregistrarem l'arxiu i el número de línia que s'ha executat correctament
    FileUtils::setMessageLog($st_traces_de_debug[1]['file'] . ' ' .$st_traces_de_debug[1]['line']);
}

register_tick_function('tick_handler');

Si us va millor enlloc d’usar un mètode com al meu exemple_ setMessageLog de la classe FileUtils, podeu fer servir una funció disponible al mateix codi com en aquest exemple:

function escriu_a_arxiu_log($s_cadena = '/* res a escriure */', $s_file = '/tmp/carles-debug.log')
{
    $s_datahora = date("Y-m-d h:i:s");

    $o_fh = fopen($s_file, 'a') or die("no puc obrir l'arxiu");
    fwrite($o_fh, $s_datahora.' '.$s_cadena."\n");
    fclose($o_fh);
}

// Per a invocar la funció
escriu_a_arxiu_log('Test');

D’aquesta manera anem enregistrant totes les comandes que s’executen correctament.

Agraïments: Edu.

Debuguejar scripts shell en Linux

diumenge, desembre 18th, 2011

Si volem fer un debug del que està fent un script escrit en shell per a Linux, l’única cosa que hem de fer és invocar-lo amb -x

sh -x ./codi_test.sh

També podem afegir #!/bin/sh -x a la primera linea de l’script.

Complement Captcha

dissabte, novembre 5th, 2011

He afegit un complement Captcha per a evitar els molestos robots que fan servir els spammers per a tractar d’abusar del servidor.

He escollit la extensió Captcha de BestWebSoft.

Així si us enregistreu al bloc, us apareixerà un camp nou que us proposarà resoldre una endevinalla matemàtica. Els robots preprogramats no saben com reaccionar davant les coses per a les que no estan programades així si veuen seven * 2 no saben que han de respondre 14, mentre que un humà sí ho sap.

Amb això pararé la majoria de robots que tracten d’usar el servidor per a enviar spam o per a intentar que publiqui els seus comentaris brossa.