lunes, 23 de mayo de 2016

Como convertir un video de iPhone a algo decente en tamaño


Desde linux, siempre con código open source podemos convertir un video simplemente con un comando:


ffmpeg -i {input}.mov -vcodec h264 -acodec aac -strict -2 {output}.mp4

Si no tenemos instalado el ffmpg simplemente debemos instalarlo:

aptitude install ffmpeg
 
 

lunes, 7 de marzo de 2016

VirtualBox

Imaginemos el caso:

Tenemos un sistema virtualizado con VirtualBox en el cual hemos hecho varios snapshot

Y queremos cambiar toda esa virtualización a otra máquina. Pasos a seguir:


  • Creamos un nuevo disco con lo último
VBoxManage clonehd {último-snapshot-creado}.vdi Nuevo.vdi --format VDI
  • Cambiamos el UUID del nuevo disco
VBoxManage internalcommands sethduuid Nuevo.vdi

  •  Creamos una nueva máquina virtual en el nuevo equipo y listo.

jueves, 3 de marzo de 2016

Validación NIF NIE CIF

Código hecho en C# para la validación de documentos fiscales en España.

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace BorrameCsharp
{
    public class validaciones
    {
        public static Boolean valida_NIFCIFNIE(string data)
        {
            if (String.IsNullOrEmpty(data) || data.Length < 8)
                return false;

            var initialLetter = data.Substring(0, 1).ToUpper();
            if (Char.IsLetter(data, 0))
            {
                switch (initialLetter)
                {
                    case "X":
                        data = "0" + data.Substring(1, data.Length - 1);
                        return validarNIF(data);                      
                    case "Y":
                        data = "1" + data.Substring(1, data.Length - 1);
                        return validarNIF(data);
                    case "Z":
                        data = "2" + data.Substring(1, data.Length - 1);
                        return validarNIF(data);
                    default:
                        if (new Regex("[A-Za-z][0-9]{7}[A-Za-z0-9]{1}$").Match(data).Success)
                            return validadCIF(data);
                        break;
                }
            }
            else if (Char.IsLetter(data, data.Length - 1))
            {
                if (new Regex("[0-9]{8}[A-Za-z]").Match(data).Success || new Regex("[0-9]{7}[A-Za-z]").Match(data).Success)
                    return validarNIF(data);
            }
            return false;
        }

        private static string getLetra(int id)
        {
            Dictionary<int, String> letras = new Dictionary<int, string>();
            letras.Add(0, "T");
            letras.Add(1, "R");
            letras.Add(2, "W");
            letras.Add(3, "A");
            letras.Add(4, "G");
            letras.Add(5, "M");
            letras.Add(6, "Y");
            letras.Add(7, "F");
            letras.Add(8, "P");
            letras.Add(9, "D");
            letras.Add(10, "X");
            letras.Add(11, "B");
            letras.Add(12, "N");
            letras.Add(13, "J");
            letras.Add(14, "Z");
            letras.Add(15, "S");
            letras.Add(16, "Q");
            letras.Add(17, "V");
            letras.Add(18, "H");
            letras.Add(19, "L");
            letras.Add(20, "C");
            letras.Add(21, "K");
            letras.Add(22, "E");
            return letras[id];
        }

        private static bool validarNIF(string data)
        {
            if (data == String.Empty)
                return false;
            try
            {
                String letra;
                letra = data.Substring(data.Length - 1, 1);
                data = data.Substring(0, data.Length - 1);
                int nifNum = int.Parse(data);
                int resto = nifNum % 23;
                string tmp = getLetra(resto);
                if (tmp.ToLower() != letra.ToLower())
                    return false;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return false;
            }
            return true;
        }

        private static bool validadCIF(string data)
        {
            try
            {
                int pares = 0;
                int impares = 0;
                int suma;
                string ultima;
                int unumero;
                string[] uletra = new string[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "0" };
                string[] fletra = new string[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" };
                int[] fletra1 = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
                string xxx;

                /*
                * T      P      P      N  N  N  N  N  C
                Siendo:
                T: Letra de tipo de Organización, una de las siguientes: A,B,C,D,E,F,G,H,K,L,M,N,P,Q,S.
                P: Código provincial.
                N: Númeración secuenial dentro de la provincia.
                C: Dígito de control, un número ó letra: Aó1,Bó2,Có3,Dó4,Eó5,Fó6,Gó7,Hó8,Ió9,Jó0.
                *
                *
                A.    Sociedades anónimas.
                B.    Sociedades de responsabilidad limitada.
                C.    Sociedades colectivas.
                D.    Sociedades comanditarias.
                E.    Comunidades de bienes y herencias yacentes.
                F.    Sociedades cooperativas.
                G.    Asociaciones.
                H.    Comunidades de propietarios en régimen de propiedad horizontal.
                I.    Sociedades civiles, con o sin personalidad jurídica.
                J.    Corporaciones Locales.
                K.    Organismos públicos.
                L.    Congregaciones e instituciones religiosas.
                M.    Órganos de la Administración del Estado y de las Comunidades Autónomas.
                N.    Uniones Temporales de Empresas.
                O.    Otros tipos no definidos en el resto de claves.

                */
                data = data.ToUpper();

                ultima = data.Substring(8, 1);

                int cont = 1;
                for (cont = 1; cont < 7; cont++)
                {
                    xxx = (2 * int.Parse(data.Substring(cont++, 1))) + "0";
                    impares += int.Parse(xxx.ToString().Substring(0, 1)) + int.Parse(xxx.ToString().Substring(1, 1));
                    pares += int.Parse(data.Substring(cont, 1));
                }

                xxx = (2 * int.Parse(data.Substring(cont, 1))) + "0";
                impares += int.Parse(xxx.Substring(0, 1)) + int.Parse(xxx.Substring(1, 1));

                suma = pares + impares;
                unumero = int.Parse(suma.ToString().Substring(suma.ToString().Length - 1, 1));
                unumero = 10 - unumero;
                if (unumero == 10) unumero = 0;

                if ((ultima == unumero.ToString()) || (ultima == uletra[unumero - 1]))
                    return true;
                else
                    return false;

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return false;
            }
        }
    }
}

jueves, 30 de mayo de 2013

Útiles para administradores de sistemas Linux.


Estos son algunos de los comandos que suelo tener a mano. Me han salvado de más de una...

Buscar archivos mas grandes de (en este caso 100MB =&gt; 100*1000):

       
find / -type f -size +100000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

Listar archivos ordenados por Tamaño:

       
ls -laS

Se irá ampliando...

miércoles, 29 de mayo de 2013

Backup Mysql SERVER

This is my script to create MYSQL backup's

lunes, 4 de marzo de 2013

Configuración apache

Ocultando información a los visitantes de la página.

lynx -head -mime_header http://www.site.com
    HTTP/1.1 200 OK
    Date: Mon, 04 Mar 2013 09:38:24 GMT
    Server: Apache/2.2.16 (Debian)
    X-Powered-By: PHP/5.3.21-1~dotdeb.0
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Set-Cookie: PHPSESSID=dd8m73c2k61v21k0qn386cfkd2; path=/
    Vary: Accept-Encoding
    Connection: close
    Content-Type: text/html; charset=ISO-8859-1

Añadiendo a apache:

    ServerSignature Off
    ServerTokens Prod

y modificando en php.ini
    expose_php = Off

Obtendremos:

lynx -head -mime_header http://www.gescampus.com:8081
    HTTP/1.1 200 OK
    Date: Mon, 04 Mar 2013 09:41:12 GMT
    Server: Apache
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Set-Cookie: PHPSESSID=dv3je2ploues02kd09l0sr1n96; path=/
    Vary: Accept-Encoding
    Connection: close
    Content-Type: text/html; charset=ISO-8859-1

jueves, 28 de febrero de 2013

Uso del disco en LINUX

aptitude install ncdu

http://dev.yorhel.nl/ncdu


ncdu 1.6 ~ Use the arrow keys to navigate, press ? for help
    --- /home/geek -----------------------------------------------------------------
       27.6MiB  /qm test 1 rework
      312.0kiB  /sidebar
       88.0kiB  /rackerhacker-MySQLTuner-perl-6add618
        8.0kiB  /.w3m
        4.0kiB  /.cache
    e   4.0kiB  /.ssh
      160.0kiB   ng.tar.gz
       76.0kiB   plowshare_1~svn1673-1_all.deb
        4.0kiB   .bashrc
        4.0kiB   .bash_history
        4.0kiB   .profile
        4.0kiB   .htoprc
        4.0kiB   .bash_logout
        0.0  B   .lesshst