Programacion

Envío de email con sendmail y golang

Con este pequeña utilidad se podrá realizar el envío de emails mediante golang y sendmail

import (
  "os"
  "exec"
  "fmt"
  "io"
)

func SendEmail() {
  argv := []string {"sendmail","-t"}

  cmd, err := exec.LookPath(argv[0])
  if err != nil {
    fatal("exec %s: %s", argv[0], err)
  }
  r,w,err := os.Pipe()
  if err !=nil {
    fatal("%v",err)
  }
  pid, err := os.ForkExec(cmd,argv,os.Environ(), "", []*os.File{r, os.Stdout, os.Stderr})
  if err != nil {
    fatal("%s", err)
  }
  input,err := os.Open("myEmail.txt", os.O_RDONLY, 0666)
  _, err = io.Copy(w, input)
  if err != nil {
    fatal("%v",err)
  }
  w.Close()
  os.Wait(pid, 0)
}

// Control de errores
func fatal(msg string, args ...interface{}) {
    fmt.Fprintf(os.Stderr, msg+"\n", args)
    os.Exit(2)
}
  • Share/Bookmark

CouchDB Api para Go Language

Peter Bourgon, ha desarrollado una API para Go Language que nos permite trabajar con CouchDB.

Para los que no conozcan CouchDB, podemos resumirlo como “una base de datos documental sin ‘esquema’, consultable al estilo MapReduce, accesible por REST y con una funcionalidad de replicación integrada”.

Primeros Pasos:

//Primero creamos un objeto database para acceder a nuestra bd:
db, err := couch.NewDatabase("127.0.0.1", "5984", "databasename")
  • Share/Bookmark

Memory Profiling Go Languaje

If you are trying to debug a memory leak in your Go application, and need a way to determine which type is taking the most memory I.E a sorted list of (object type, total instances, total memory).
Runtime.MemStats doesn’t give details about the type, and goprof doesn’t seem to do memory profiling.

At this moment, the currente memory allocator only keeps track of whether or not the type can
contain a pointer

  • Share/Bookmark

Aumentar el dataspace de una base de datos en HTML 5

Por ahora no hay una solución sencilla para gestionar el dataspace de una base de datos en html5
El mecanismo más usado es insertar un registro en la tabla ‘Quota’ en el fichero principal de la base de datos de sqlite.
Esta es la ruta para un sistema microsoft, podéis encontrar en otro post las rutas para mac y linux

C:\Users\\AppData\Local\Google\Chrome\User Data\Default\databases\Databases.db
El valor de ‘quota’ es en bytes.

  • Share/Bookmark

Creando una base de datos para aplicaciones en HTML 5

Aprovechando las características de html5, estoy creando una aplicación para que se pueda ejecutar offline. Para ello he credo una base de datos que tenga los siguientes métodos:

Read the rest of this entry »

  • Share/Bookmark

CSS Tabla de Conversión Point a Pixels y Em a Porcentaje

Muy útil tabla de conversiones para maquetadores

Pts Px Em Porcentaje
6pt 8px 0.5em 50%
7pt 9px 0.55em 55%
7.5pt 10px 0.625em 62.5%
8pt 11px 0.7em 70%
9pt 12px 0.75em 75%
10pt 13px 0.8em 80%
10.5pt 14px 0.875em 87.5%
11pt 15px 0.95em 95%
12pt 16px 1em 100%
13pt 17px 1.05em 105%
13.5pt 18px 1.125em 112.5%
14pt 19px 1.2em 120%
14.5pt 20px 1.25em 125%
15pt 21px 1.3em 130%
16pt 22px 1.4em 140%
17pt 23px 1.45em 145%
18pt 24px 1.5em 150%
20pt 26px 1.6em 160%
22pt 29px 1.8em 180%
24pt 32px 2em 200%
26pt 35px 2.2em 220%
27pt 36px 2.25em 225%
28pt 37px 2.3em 230%
29pt 38px 2.35em 235%
30pt 40px 2.45em 245%
32pt 42px 2.55em 255%
34pt 45px 2.75em 275%
36pt 48px 3em 300%

Publicada originalmente en WorldTechnies

  • Share/Bookmark

Integración de Aplicaciones (Bases de Datos Relacionales y No Relacionales)

Aunque pueda ser aplicado a entornos corporativos modelo Intranet, el objetivo de este artículo es aportar una valoración objetiva sobre los sistemas de bases de datos disponibles en el mercado, de cara a crear un modelo de negocio basado en aplicaciones Web accesibles desde Internet.

En este artículo no se plantean las posibilidades del cloud computing.

Cada vez son más los profesionales que se plantean el uso de bases de datos no relaciones para optimizar el rendimiento de sus Aplicaciones Web. La llegada al mercado de los ORM ha simplificado la portabilidad y dependencia de las aplicaciones web.

Read the rest of this entry »

  • Share/Bookmark

HTML5 Listado de Atributos y Elementos Eliminados

Tras pasar un tiempo repasando la documentación de HTML5, he decidido realizar un listado de las novedades para ir teniéndolas frescas de cara a realizar mis primeros trabajos con este standard.

Iré completando el artículo con las novedades, ya que por ahora solo he recabado información sobre lo que no se va a poder utilizar.

Elementos eliminados

Estos son los elementos eliminados y las razones de porqué son prohibidos: Read the rest of this entry »

  • Share/Bookmark

HipHop (HPHPi), Framework from Facebook for PHP

Finalmente, lo que era un rumor se cumplió. Bueno… casi. Se hablo de un acelerador, un compilador y una reescritura de la máquina virtual Zend, y aunque en un plano general era cierto que Facebook estuvo años trabajando en silencio para desarrollar una tecnología que acelerara PHP, en la práctica lo hicieron mediante un enfoque distinto.

Haiping Zhao, del equipo de ingenieros de Facebook, publicó hoy un artículo comentando que Facebook había optado por PHP por considerarlo un lenguaje simple de aprender, simple de escribir, simple de leer y simple de debuguear, pero que al mismo tiempo estaban conscientes de que en comparación con C++ o Java corría más lento y consumía más procesador. Paralelamente, por estar basado en C es posible traducir casi completamente cualquier script de PHP a C++, ya sea mediante reescritura de funciones o generando extensiones como las de PECL.

Read the rest of this entry »

  • Share/Bookmark

RubyGems: undefined method `manage_gems’ for Gem:Module (NoMethodError)

Días después de realizar una actualización en mi sistema linux, cuando me proponía a instalar un gema que necesitaba para un proyecto, me encontré con el siguiente error:

/usr/bin/gem:10: undefined method `manage_gems’ for Gem:Module (NoMethodError)

La solución después de investigar ha sido comentar la línea que realiza el include tal que así:

#Gem.manage_gems

en el fichero /usr/bin/gem

Después me ha dado otro error:

/usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)

Indicando que no tenía inicializado el Runner, por lo que solo tenía que poner un include a ese componente:

require ‘rubygems/gem_runner’
Investigando el motivo de este error, he encontrado como respuesta que lo han retirado de la nueva versión,
este componente está deprecated.
  • Share/Bookmark