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

Llistar més de 50 nodes a la gestió de continguts de Drupal

1 de Juliol de 2015 per joan

Per a obtenir un llistat de més de 50 nodes a la secció de la gestió de continguts del Drupal, que és la llista que aquest gestor ens dóna per defecte, podem editar el node.admin.inc i modificar '50' per la quantitat que necessitem, i ho farem on apareix la següent línia:

$result = pager_query(db_rewrite_sql('SELECT n.*, u.name FROM {node} n '. $filter['join'] .' INNER JOIN {users} u ON n.uid = u.uid '. $filter['where'] .' ORDER BY n.changed DESC'), 50, 0, NULL, $filter['args']);

I també ens cal modificar el '50' a la línia:

$form['pager'] = array('#value' => theme('pager', NULL, 50, 0));

Transformant els camps de data dels nodes de Drupal a dates amb format des de MySQL

25 de Juny de 2015 per joan

Drupal enmagatzema els camps de dates a les taules amb un format integer, aleshores quan volem mostrar alguns resultats fent consultes a les bases de dades, obtenim resultats difícils d'entendre com aquest:

mysql> SELECT nid, type, status, created FROM node limit 10;
+------+----------------+--------+------------+
| nid  | type           | status | created    |
+------+----------------+--------+------------+
| 1040 | portales7_node |      1 | 1334059183 |
| 1041 | portales7_node |      1 | 1346847276 |
| 1042 | portales7_node |      1 | 1320322004 |
| 1043 | portales7_node |      1 | 1220440020 |
| 1044 | portales7_node |      1 | 1334145835 |
| 1045 | portales7_node |      1 | 1294056930 |
| 1046 | portales7_node |      1 | 1246437799 |
| 1047 | portales7_node |      1 | 1338466543 |
| 1048 | portales7_node |      1 | 1343808035 |
| 1049 | portales7_node |      1 | 1318250363 |
+------+----------------+--------+------------+
10 rows in set (0.00 sec)

mysql>

Amb la funció FROM_UNIXTIME() podem transformar els camps integer a un camp de data amb format, i ja podem explotar la informació més fàcilment:

mysql> SELECT nid, type, status, FROM_UNIXTIME(created) FROM node limit 10;
+------+----------------+--------+------------------------+
| nid  | type           | status | FROM_UNIXTIME(created) |
+------+----------------+--------+------------------------+
| 1040 | portales7_node |      1 | 2012-04-10 13:59:43    |
| 1041 | portales7_node |      1 | 2012-09-05 14:14:36    |
| 1042 | portales7_node |      1 | 2011-11-03 13:06:44    |
| 1043 | portales7_node |      1 | 2008-09-03 13:07:00    |
| 1044 | portales7_node |      1 | 2012-04-11 14:03:55    |
| 1045 | portales7_node |      1 | 2011-01-03 13:15:30    |
| 1046 | portales7_node |      1 | 2009-07-01 10:43:19    |
| 1047 | portales7_node |      1 | 2012-05-31 14:15:43    |
| 1048 | portales7_node |      1 | 2012-08-01 10:00:35    |
| 1049 | portales7_node |      1 | 2011-10-10 14:39:23    |
+------+----------------+--------+------------------------+
10 rows in set (0.00 sec)

mysql>

Un script que em diu la informació bàsica que em cal per als equips de la meua feina

25 de Juny de 2015 per joan

I ací el codi del dia, un script que vaig fer el dilluns per als equips amb Windows de la feina, perquè sempre em cal saber aquestes dades en multitud d'ordinadors, aproximadament 300 ordinadors amb distintes versions de Windows, Java, etc.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#

import platform, subprocess, socket, getpass, sys, os
from urllib2 import urlopen

# Quin sistema operatiu? Quina versió del sistema? Quina xarxa?
#
 
print
print 'Nombre de Usuario   :', getpass.getuser()
print 'Sistema             :', platform.system()
print 'Version             :', platform.version()
process = os.popen('wmic memorychip get capacity')
result = process.read()
process.close()
totalMem = 0
for m in result.split("  \r\n")[1:-1]:
    totalMem += int(m)
print 'Memoria RAM total   :', totalMem / (1024**3), 'Gigas'
print 'Nombre de la red    :', platform.node()
print 'IP local            :', str(([ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][:1])).replace("['", "").replace("']", "")

print 'IP publica          :', urlopen('http://ip.42.pl/raw').read()
print
print 'La version de Java es: '
sp = subprocess.Popen(["java", "-version"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print sp.communicate()
print sp.wait()
print

Un update des de PHP d'un textedit que conté paràgrafs i accents

18 de Juny de 2015 per joan

Un apunt de com fer el update d'un camp que contè apòstrofs i accents. M'ho apunte perquè sempre em faig embolics.

// Anem a fer aquestes equivalencies amb la funció addslashes per a que
// el 'update' del MySQL no pete si algun municipi o nom té apòstrofs.

$variable_nom = addslashes($variable_nom);
$variable_direccio = addslashes($variable_direccio);
$variable_poblacio = addslashes($variable_poblacio);

// Ara anem a insertar la informació del formulari a la base de dades MySQL     

include ("../inc/fitxer_base_de_dades.inc");
mysql_query("set names 'utf8'"); 
$result = mysql_query("UPDATE configuracions SET nom='$variable_nom', direccio='$variable_direccio', poblacio='$variable_poblacio', codipostal='$variable_codipostal', telefon='$variable_telefon', fax='$variable_fax', email='$variable_email', twitter='$variable_twitter', facebook='$variable_facebook', googleplus='$variable_googleplus';",$db);

    if(!$result) {
        echo "un ERROR";
        die('Error al fer la consulta: ' . mysql_error());
} else {
$result;

echo "tot OK";
mysql_close($db);
}

Ordres UNIX avançades de búsqueda i reconeixement d'errors

18 de Juny de 2015 per joan

Si necessitem trobar fitxers grans o fitxers generats pel sistema però que no els trobem, ací tenim alguns trucs diversos.

Per a conèixer el tamany d'un o més directoris a UNIX fem el comando du

Ací alguns exemples:

du -sH /*
du -csh /etc

Ací veiem un llistat dels fitxers que han segut modificats entre ahir i avui (2 dies):

find /opt/xaloc/servidores/ -type f -mtime -2 -exec ls -l {} \;

Volem que ens trobe els pdf que avui s'han modificat:

find /opt/xaloc/servidores/ -type f -mtime -1 -exec ls -l {} \; | grep pdf

Modificant nom i estructura de taules a MySQL des de consola

15 de Juny de 2015 per joan

A una aplicació web, necessitava ampliar la mida d'unes columnes per a deixar imatges amb noms grans, i un varchar(20) no era suficient, necessitava a 50 caràcters.
Això es pot fer molt fàcilment amb un ALTER TABLE

La meua taula inicial era així:

mysql> describe contingut;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      |      | PRI | NULL    | auto_increment |
| tipo     | varchar(15)  | YES  |     | NULL    |                |
| titol    | varchar(150) | YES  |     | NULL    |                |
| cos      | text         | YES  |     | NULL    |                |
| imagen12  | varchar(20)  | YES  |     | NULL    |                |
| imagen22 | varchar(20)  | YES  |     | NULL    |                |
| imagen32 | varchar(20)  | YES  |     | NULL    |                |
| imagen42 | varchar(20)  | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

I les ordres queden de la següent manera:

<code>
mysql> ALTER TABLE contingut CHANGE imagen22 imagen2 varchar(50);
Query OK, 12 rows affected (0.01 sec)
Records: 12  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE contingut CHANGE imagen32 imagen3 varchar(50);
Query OK, 12 rows affected (0.01 sec)
Records: 12  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE contingut CHANGE imagen42 imagen4 varchar(50);
Query OK, 12 rows affected (0.00 sec)
Records: 12  Duplicates: 0  Warnings: 0

Continuació de canvis a les columnes de Mantis Bug Tracker

1 de Juny de 2015 per joan

Avui he estat tornant a editar algunes opcions de les columnes de Mantis Bug Tracker, en aquest cas la icona d'edició de les incidències, que no té sentit ja que, una vegada accedim a una incidència, veiem un enllaç que diu "Editar".

Anem a la part de configuració de les columnes:

array (
  0 => 'selection',
  1 => 'reporter_id',
  2 => 'edit',
  3 => 'priority',
  4 => 'id',
  5 => 'category_id',
  6 => 'summary',
  7 => 'date_submitted',
  8 => 'last_updated',
  9 => 'handler_id',
)

I simplement llevem l'opció número 2 de l'array i reordenem amb:

array (
  0 => 'selection',
  1 => 'reporter_id',
  2 => 'priority',
  3 => 'id',
  4 => 'category_id',
  5 => 'summary',
  6 => 'date_submitted',
  7 => 'last_updated',
  8 => 'handler_id',
)

Lliurex i Ardour3, error de dependències

28 de Maig de 2015 per joan

Encara no tinc clar el per què, però hi han problemes quan vols instal·lar l'editor multipistes d'àudio Ardour3 que, des de que vaig anar al Congrés de Lliurex a la UJI, volia provar.

Tinc la versió següent:

root@sony:/home/joan# uname -a
Linux sony 3.16.0-36-generic #48~14.04.1-Ubuntu SMP Wed Apr 15 13:12:28 UTC 2015 i686 i686 i686 GNU/Linux

Per si de cas, actualitze les fonts de programari abans d'intentar instal·lar l'aplicació amb:

root@sony:/home/joan# apt-get update
Ign http://archive.ubuntu.com trusty InRelease
Obj http://archive.ubuntu.com trusty Release.gpg
Obj http://archive.ubuntu.com trusty Release
Obj http://archive.ubuntu.com trusty/universe i386 Packages
Bai:1 http://archive.ubuntu.com trusty/universe Translation-ca [2689 B]
Obj http://archive.ubuntu.com trusty/universe Translation-en                  
Ign http://archive.ubuntu.com trusty/universe Translation-ca_ES
Ign http://archive.ubuntu.com trusty/universe Translation-ca_ES@valencia
Ign http://archive.ubuntu.com trusty/universe Translation-qcv  
Ign http://archive.ubuntu.com trusty/universe Translation-es_ES
S'ha baixat 2689 B en 5s (451 B/s)                             
S'està llegint la llista de paquets… Fet
root@sony:/home/joan# apt-cache search ardour3
ardour3 - digital audio workstation (graphical gtk2 interface)

Afegir manualment opcions personalitzades al menú de Mantis Bug Tracker

13 de Maig de 2015 per joan

menu mantis bug tracker
Al treball necessitàvem afegir una opció de "control remot", que fem servir amb una utilitat tipo Teamviewer o VNC i l'hem afegida manualment al menú principal de la pàgina d'incidències Mantis.
Concretament, cal editar el fitxer core/html_api.php i deixar a l'apartat on són les condicions $t_menu_options[] les següents dues línies:

# Sense cap condicio, volem mostrar el "Control Remoto" al menu de Incidencias.Dipcas.Es
$t_menu_options[] = '<a target="_blank" href="./control-remoto.php">Control Remoto</a>';

Clonar un USB d'arrencada de LLIUREX a un altre dispositiu USB

11 de Maig de 2015 per joan


Situació: tenim dos dispositius usb idèntics. Tenim un Lliurex 14.10 a un i un 15.04 a un altre. Volem clonar el Lliurex 15.04 al segon USB.

joan@debianjoan:~$ dd if=/dev/sdb1 of=/dev/sdc

L'operació ha trigat uns 45 minuts. Finalment, el resultat ha segut el següent:

7489536+0 registres llegits
7489536+0 registres escrits
3834642432 octets (3,8 GB) copiats, 3806,05 s, 1,0 MB/s

Ja tenim els dos USB d'arrencada idèntics per a usar GNU/Linux Lliurex de la Generalitat Valenciana a qualsevol ordinador fixe o portàtil. Espere que aquest truc us siga d'utilitat.

joan-en-riseup.net copyleft © 2001-2015

Todo Benicassim - Todo Oropesa - Tutmonde - Veterinaria Oropesa

desenvolupat amb Drupal