PHP: horror

Codigo horror:

$filename = 'validate.php';

if (file_exists($filename))
 include_once ($filename);
else
{
 $filename = '../'.$filename;

 if (file_exists($filename))
   include_once ($filename);
 else 
 { 
   $filename = '../'.$filename;
 
   if (file_exists($filename))
     include_once ($filename);
   else
     include_once ('../'.$filename);
 }
}

Ruby on Rails: puma en producción con SSL

Los detalles:

Servidor de producción: Centos 7

Servidor web: Apache 2.4.6

Ruby: 2.4.2

Esta guía es un compendio de varias guías que se pueden encontrar en internet.

Assets

Este archivo es importante para poder cargar los assets.

#/etc/httpd/conf.d/puma.conf

RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RequestHeader unset X-Forwarded-Proto
<locationmatch "^/assets/.*$">
	Header unset ETag
	FileETag None
	ExpiresActive On
	ExpiresDefault "access plus 1 year"
</locationmatch>

<locationmatch "^/assets/.*\.(css|js)$">
	RewriteEngine on
	RewriteCond %{HTTP:Accept-Encoding} \b(x-)?gzip\b
	RewriteCond %{REQUEST_FILENAME}.gz -s
	RewriteRule ^(.+)$ $1.gz
</locationmatch>

<locationmatch "^/assets/.*\.css\.gz$">
	ForceType text/css
	Header set Content-Encoding gzip
	Header add Vary Accept-Encoding
</locationmatch>

<locationmatch "^/assets/.*\.js\.gz$">
	ForceType application/javascript
	Header set Content-Encoding gzip
	Header add Vary Accept-Encoding
</locationmatch>

AddOutputFilterByType DEFLATE text/html

Apache

Configuramos el archivo /etc/httpd/conf/httpd.conf:

<VirtualHost 111.222.333.444:80>
ServerName puma.web.com
DocumentRoot /home/puma/public_html/puma/public

include /etc/httpd/conf.d/puma.conf
Redirect permanent / https://puma.web.com/

<Directory /home/puma/public_html/puma/public>
AllowOverride All Options=FollowSymLinks,MultiViews
Order deny,allow
Allow from all
</Directory>
</VirtualHost>


<VirtualHost 111.222.333.444:443>
ServerName puma.web.com
DocumentRoot /home/puma/public_html/puma/public

include /etc/httpd/conf.d/puma.conf
RewriteRule ^/(.*)$ https://0.0.0.0:9294%{REQUEST_URI} [P]

<Directory /home/puma/public_html/puma/public>
AllowOverride All Options=FollowSymLinks,MultiViews
Order deny,allow
Allow from all
</Directory>

SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off

SSLEngine on
SSLCertificateFile /home/puma/public_html/puma/FILE.cert
SSLCertificateKeyFile /home/puma/public_html/puma/FILE.key
SSLProtocol +TLSv1.2
SSLCACertificateFile /home/puma/public_html/puma/FILE.crt
</VirtualHost>

Puma

Se tiene que iniciar usando dos puertos uno para http y el otro para https, de la siguiente manera:

puma -d -b "ssl://127.0.0.1:9294?key=FILE.key&cert=FILE.cert&verify_mode=none&ca=FILE.crt" -b "tcp://127.0.0.1:9293" -e production

Cambiando los nombres de los archivo FILE.* por los de su certificado

Los puertos pueden ser cualquiera que no estén siendo usandos, podrían ser el 3000 y 3001 no hay problema.

 

 

 

 

CherryMusic: music streaming server

cherrymusic_logo

Hace tiempo realice un post sobre streeme, una manera de compartir la colección de música local.

Como cambie de equipo hace un tiempo, y si bien la instalación de streeme no es difícil, pero si un poco larga, busque otra alternativa que sea un poco mas sencilla y rápida de instalar, después de probar algunas aplicaciones similares vi que todas tenían algunos detalles que no eran convincentes.

  • Subsonic, no cargaba el frame izquierdo, donde se encuentra la colección.
  • Ampache, la versión alpha no contenía el reproductor y en la última versión estable la página de instalación se encontraba en blanco.
  • jinzora, alertas por todo lado, imposible de visualizar la aplicación y la colección de música.

A punto de instalar y configurar streeme de nuevo intente con CherryMusic y la verdad es genial, escrito en python, aquí algunas características.

  • Instalación fácil y rápida.
  • Indexa la colección casi de inmediato (50GB en menos de 3 minutos).
  • Configuración sencilla.
  • Interfaz limpia, para nada complicada (creo que usaron twitter bootstrap).
  • Posibilidad de manejar varios «playlists».
  • Multiusuario,

La instalación (mínima):

yaourt -S cherrymusic

Y la configuración:

cherrymusic --setup --port 8080

cherrymusic1

 

cherrymusic2

Más info | CherryMusic (official) y CherryMusic (Arch)

Arch: HP Envy15 beats audio

Arch-Linux

Una vez instalado Arch en tu HP Envy15, te das cuenta que el sonido no es el mejor, esto debido a que por defecto solo funcionan los dos speakers frontales del equipo (Si el sonido no funciona te sugeriría ver Arch: detalles de la instalación en la sección de Selección dispositivo de audio). Tomando en cuenta que este equipo cuenta con 4 speakers y 2 subwoofers esto es una gran perdida de sonido.

Para que funcionen los 6 parlantes en primer lugar es necesario instalar alsa-tools:

pacman -S alsa-tools

Luego ejecutar hdajackretask (con permisos de root)

sudo hdajackretask

Luego la configuración:

  1. Elegir el codec: IDT 92HD91BXX.
  2. En Options seleccionar Show unconnected pins
  3. Pin ID: 0x0d  seleccionar: Internal speaker
  4. Pin ID: 0x0f seleccionar: Internal speaker
  5. Pin ID: 0x10 seleccionar: Internal speaker (LFE)
  6. Aply now
  7. En mi caso fue necesario reiniciar

jack_retasking

Latex: un bonito estilo de presentación

Un estilo de presentación basado en el tema Oxygen de KDE, yo lo uso pero modificado, con el fondo de la cabecera liso un poco más pequeña, sin imágenes ni esas dos líneas grises, modificar este tema no es nada difícil, con un editor de textos para el tema y un editor de imágenes para la imagen de cabecera basta.

Unas capturas:

El enlace de descarga e instrucciones de instalación:

www.kde.org/kdeslides/

El fondo de cabecera que uso: