Aplicación para contar las líneas de códigos de tu proyecto

Algún día te has preguntado, ¿Cuantas líneas de código he programado?, ¿Este proyecto cuantas líneas de código tiene? entonces tienes 2 formas de hacerlo.

MÉTODO 1
1.- Preparar tu libreta (o un Excel)
2.- Abrir cada archivo en tu editor de texto favorito y contar línea por línea.
3.- Hacer las sumas en tu libreta y listo.

MÉTODO 2.
1.- Descargar el programa CLOC de http://cloc.sourceforge.net/ o en GitHub https://github.com/AlDanial/cloc
2.- Ejecutar el comando cloc CARPETA_PROYECTO
3.- Listo!!

Aquí esta la versión para Windows: https://sourceforge.net/projects/cloc/files/ o en GitHub tiene más opciones para su instalación para diferentes sistemas.

Y al final tendremos algo así:

Como pueden observar clasifica por diferentes lenguajes de programación y hasta pasar los resultados a una base de datos SQL.

PHP: Instalar PDO_SQLSRV en Linux

Buscando en los modulos de Ubuntu/Debian no aparece la extensión para PHP de PDO_SQLSRV, solamente tenemos:

  • php7.0-pdo-firebird
  • php7.0-pdo-pgsql
  • php7.0-pdo-sqlite
  • php7.0-pdo-odbc
  • php7.0-pdo-mysql
  • php7.0-pdo-dblib

Y nada que diga php7.0-pdo-sqlsrv, pero la solución es compilar la extensión manualmente, gracias a PEAR, como root ejecutamos:

apt-get install unixodbc-dev php7.0-dev php-pear

pecl install pdo_sqlsrv-4.0.5

echo -e “; priority=20\nextension=pdo_sqlsrv.so” > /etc/php/7.0/mods-available/pdo_sqlsrv.ini

phpenmod -v 7.0 pdo_sqlsrv

/etc/init.d/php7.0-fpm restart

Y listo, deberíamos de tener en nuestro phpinfo() algo así:

Si utilizamos windows, descargamos la extensión desde aquí: Microsoft Drivers for PHP for SQL Server y este link para instalar el driver Microsoft ODBC Driver 13 for SQL Server

Y listo, ya nos podemos conectar al servidor SQL Server desde PHP.

Drupal: Error 403 Forbidden cuando se instala un módulo

Al querer instalar o actualizar un módulo en Drupal 8 despues de ingresar la información del FTP aparece el error:

403 Forbidden
nginx/1.10.0 (Ubuntu)

El problema es que la URL no existe, si nos fijamos en la barra de direcciones veremos algo así:
http://sitio.com/core/authorize.php/core/authorize.php?batch=1&id=17&op=start

Si observan core/authorize.php se repite 2 veces, la solución es crear un Rewrite en la configuración de nuestro servidor web, en este caso estoy utilizando Nginx.

Editamos el archivo /etc/nginx/sites-enabled/default (o el de su sitio) y agregamos la siguiente línea

rewrite ^/core/authorize.php/core/authorize.php(.*)$ /core/authorize.php$1;

En mi caso quedo así (es una parte de la configuración):

server {
server_name example.com;
root /var/www/drupal;

client_max_body_size 20M;

location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

# Very rarely should these ever be accessed outside of your lan
location ~* \.(txt|log)$ {
allow 192.168.0.0/16;
deny all;
}

location ~ \..*/.*\.php$ {
return 403;
}

rewrite ^/core/authorize.php/core/authorize.php(.*)$ /core/authorize.php$1;

location ~ ^/sites/.*/private/ {
return 403;
}

# Allow “Well-Known URIs” as per RFC 5785
location ~* ^/.well-known/ {
allow all;
}

Reiniciamos el servidor web y listo:

/etc/init.d/nginx restart

Instalar extensión OpCache en XAMPP

La manera de instalar una extensión en PHP es editar el archivo PHP.ini y agregar extension=php_EXTENSION.dll o php_EXTENSION.so (sí no utilizas windows) pero al querer agregar la extensión de OpCache lo tradicional sería:

extension=php_opcache.dll

Pero el archivo de error.log arroja lo siguiente:

PHP Warning: PHP Startup: Invalid library (appears to be a Zend Extension, try loading using zend_extension=php_opcache.dll from php.ini) in Unknown on line 0

Aquí la solución es agregar la extensión pero de Zend, quedando así:

zend_extension=php_opcache.dll

Reinicias el servicio de Apache y listo!,

Gparted: Error al iniciar, undefined symbol

Al ejecutar el comando gparted o gparted-pkexec arroja el siguiente error (también el programa gnome-system-monitor):

/usr/sbin/gpartedbin: symbol lookup error: /usr/lib/x86_64-linux-gnu/libgiomm-2.4.so.1: undefined symbol: _ZN4Glib11VariantTypeD1Ev

Al parecer el problema lo genera VMWare, pero para solucionar el error, seguir los siguientes pasos, todo como root.

Mover el archivo LD_LIBRARY_PATH.conf

sudo mv /etc/ld.so.conf.d/LD_LIBRARY_PATH.conf /etc/ld.so.conf.d/LD_LIBRARY_PATH.conf.bak

Después ejecutar:
sudo ldconfig

Y listo!!, asunto arreglado.

Problema con VMware y Ubuntu 16.10 (GCC 6)

Despues de actualizar Ubuntu a la versión 16.10 Yakkety con el Kernel 4.4.0 y al iniciar VMware, me encuentro con un error de que no puede encontrar la librería GCC versión 5.3.1 ya que la actualización la cambio a GCC version 6.1.1 20160724 (Ubuntu 6.1.1-10ubuntu11)

vmware-gcc-problem

La solución es compilar los módulos de vmmon y vmnet con la última versión GCC y el nuevo Kernel.
Lo primero es descargar una versión del VMware Workstation Player 12.0 (esa es la que yo tengo actualmente) para descomprimir y compilar los módulos.

En esta página lo descargamos: https://my.vmware.com/en/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/12_0

Después ejecutar los siguientes pasos (todo como Root)

chmod +x VMware-Player-12.1.1-3770994.x86_64.bin
./VMware-Player-12.1.1-3770994.x86_64.bin -x temp
tar xf ./temp/vmware-vmx/lib/modules/source/vmmon.tar
tar xf ./temp/vmware-vmx/lib/modules/source/vmnet.tar

Lo que hacemos con el -x temp, es descomprimir el .BIN, para despues, descomprimir los módulos vmmon y vmnet, lo siguiente es iniciar la compilación (asegurate de tener las librerias de compilación: sudo apt-get install build-essential linux-headers-generic )

cd vmmon-only
make
cd ..

cd vmnet-only
make
cd ..

Y por último copiamos lo compilado a la carpeta de módulos del Kernel actual

mkdir /lib/modules/`uname -r`/misc
cp vmmon.o /lib/modules/`uname -r`/misc/vmmon.ko
cp vmnet.o /lib/modules/`uname -r`/misc/vmnet.ko
depmod -a
/etc/init.d/vmware restart

vmware-restart

Y listo! ya debe de funcionar, ahora, si actualizamos el Kernel, debemos de seguir estos pasos, hasta que se tenga una solución automatizada.

Error 500 con Nginx+Chroot+PHP5-FPM+PhpMyadmin

Despues de hacer la instalación de Nginx y PHP5-FPM con Chroot (Jail) e instalar MySQL PhpMyAdmin la página me daba un error 500.

Investigando veo que el problema esta en la siguiente línea del archivo library/common.inc.php de PhpMyAdmin.

date_default_timezone_set(@date_default_timezone_get());

El problema está en que la función date_default_timezone_get() y todo se debe a que no se tienen los archivos necesarios para buscar la timezone del servidor, como lo muestra el log de nginx

[error] 12058#0: *13 FastCGI sent in stderr: “PHP message: PHP Fatal error: date_default_timezone_get(): Timezone database is corrupt – this should *never* happen! in /var/www/phpmyadmin/libraries/common.inc.php on line 276” while reading response header from upstream, client: 111.111.111.111, server: miservidor.com, request: “GET /phpmyadmin/ HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host: “miservidor.com”

La solución es instalar la timezonedb con PHP-PEAR ( pecl ), procedemos con el siguiente código:

apt-get install php-pear php5-dev
pecl install timezonedb
echo ‘extension=timezonedb.so’> /etc/php5/mods-available/timezonedb.ini
ln -sf /etc/php5/mods-available/timezonedb.ini /etc/php5/fpm/conf.d/30-timezonedb.ini
service php5-fpm restart

Y listo!!.. ya debe de funcionar correctamente la página de PhpMyAdmin

No LDAP support for PHP, ¿como activar la librería?

Estoy probando la librería adLDAP en PHP con Codeigniter y al momento de ingresar a la página me marca un error de que no se cuenta con soporte para LDAP.

Fatal error: Uncaught exception ‘adLDAP\adLDAPException’ with message ‘No LDAP support for PHP. See: http://www.php.net/ldap’ in C:\xampp\htdocs\sistema\application\libraries\adLDAP\adLDAP.php:606

Lo más extraño es que en el archivo de configuración php.ini, si esta habilitada la DLL de php_ldap.dll

extension=php_ldap.dll

Se reinicia XAMPP y nada de nada, el mismo error.

La solución es copiar estos 3 archivos al directorio de c:\windows\system\ los cuales estan dentro de c:\xampp\php\

libeay32.dll
libsasl.dll
ssleay32.dll

Una vez copiados a la carpeta system de Windows, reiniciamos Apache y listo!!!, ya tenemos el módulo LDAP activado.

ldap

LDAP Support enabled
RCS Version $Id: 6de334df54b2b93e6a633c353cfca7412b9a37cd $
Total Links 0/unlimited
API Version 3001
Vendor Name OpenLDAP
Vendor Version 20433
SASL Support Enabled

Codeigniter: Only variable references should be returned by reference

Después de actualizar mi versión de PHP a la 5.6.4 mis paginas en Codeigniter me mostraban este error:

A PHP Error was encountered
Severity: Notice
Message: Only variable references should be returned by reference
Filename: core/Common.php
Line Number: 257

La solución esta en modificar la linea 257 que esta en el archivo system/core/Common.php en donde veremos algo asi:

return $_config[0] =& $config;

Y remplazar por este codigo:

$_config[0] =& $config;
return $_config[0];

Listo!! adiós a la noticia en PHP.

Linux: Reactivar Control+ALT+Retroceso para reiniciar servidor X en Linux

Por si no sabias, puedes reiniciar tu servidor X presionando las teclas “Ctrl+Alt+Retroceso”, de que sirve, pues cuando esta trabado todo todo, al reiniciar el servidor X puedes casi siempre volver a la normalidad y volver a iniciar sesión.

Ahora, si por alguna razón no funciona esta combinación de teclas (en las ultimas versiones de Ubuntu por ejemplo, no sirve), aquí esta la forma de volver a activar esta opción.

En la terminal escribir:

sudo dpkg-reconfigure keyboard-configuration

Te van a aparecer muchas opciones, puedes ignorar todas.., excepto cuando llegue a la parte que te dice:

Por omisión la combinación Control+Alt+Retroceso no hace nada. Si lo desea, puede utilizarse para terminar el servidor X.

¿Desea utilizar Control+Alt+Retroceso para terminar el servidor X?

Despúes, activar la opción de SI, y listo!…, a probar el comando (todo lo que tengas abierto se cerrara en automático)