Buscamos desarrollador/diseñador frontend

Noviembre 2, 2016  |  Trabajos

lachapacd1

Reabrimos una vacante para puesto de diseñador/desarrollador frontend web/UI senior para gestionar varios nuevos proyectos que estamos abordando y el día a día de los elementos de comunicación, promos, etc de los que ya gestionamos.   En concreto queremos encontrar ese experto en HTML+CSS3 que además controla bien entornos de preparseo (Less o Sass), hace pinitos en Javascript y se interesa por tecnologías como Angular o React. El puesto es inicialmente presencial en Fuengirola en toda o parte de su jornada. Los conocimientos en redes sociales, marketing o buen estilo editorial redactando serán muy bien valorados adicionalmente.

El trabajo consistirá en crear UIs para nuevos proyectos sobre HTML5+SASS/LESS e  implementarlos después sobre Angular o plantillas en PHP o Python. También aportar creatividad para diseñar y aplicar para campañas promocionales o de ventas de varios proyectos. Tanto en español como en inglés.

El candidato ideal deberá

  • disponer alguna experiencia demostrable en diseño online o para moviles, básado fundamentalmente en HTML+CSS
    • querremos ver código de sitios publicados o no
  • nivel mediode inglés,
    • al menos el que permita la lectura de documentación técnica y tutoriales
  • tener además conocimientos de nivel medio o avanzado, en al menos dos de estas áreas:
    • javascript
    • plantillas php, smarty, twig, etc
    • Less o Sass
    • WordPress
    • edición de imágenes bitmap en Photoshop, Fireworks o Illustrator
    • php

Ofrecemos

  • incorporación a una empresa estable y dinámica que comercializa productos online desde 1995
  • contrato a largo plazo en función a la adaptación al entorno e iniciativa
  • salario acorde a experiencia+ incentivos según resultados
  • jornada reducida o completa en función a preferencias
  • participación activa y societaria en los proyectos (empresa) a medio-largo plazo para el candidato apropiado

Si estás interesado y cumples todos los requisitos (descartaremos de forma automática todos los que no), rellena éste formulario https://goo.gl/forms/xuWeQ5q5Z4Id8L5p2  y sólo después si prefieres, un email con información sobre ti y enlaces o muestras a cualquier trabajo publicado, porque te interesa y cuales son tus preferencias a : jobs+d16 (arroba) alsur (punto) es

Si por otro lado eres de la zona, no cumples los requisitos pero te interesaría terminar de formarte, solemos tener una abierta con frecuencia para un puesto junior a tiempo parcial.

Gracias por interesarte.

 

 

Conectando linea de fibra de VOIP Orange a asterisk

Marzo 18, 2016  |  blog

En nuestra configuración interna de líneas de datos, llevamos algunas semanas librando una “batalla épica” para conectar directamente la VOIP de nuestra línea de fibra a nuestra centralita IP basada en asterisk. Por algún motivo en nuestro país las operadoras de teléfono se empeñan en impedirnos como usuarios hacer el uso que queramos de las tecnologías que nos cobran y se limitan a tratarnos como borregos tecnológicos. Puedo hacer uso de mis minutos gratis desde dos teléfonos fijos pero no me dan información para hacerlo a mi centralita. Movistar al menos ofrece algo de transparencia en sus foros pero Orange es totalmente opaca al respecto. Un motivo para no contratarlo si lo hubiéramos sabido o cambiar en el futuro.

Entre otros sitios hemos mantenido un hilo en adslzone con otros usuarios en situación similar aunque ha día de hoy no hemos conseguido terminar el funcionamiento. En nuestro caso usamos un front de elastix (freepbx) para la configuración.

Lo que sabemos, registro del trunk

Empece esta respuesta con un a “casi me funciona” pero la termino confirmando que conseguí echarlo a andar. No conseguía que las llamadas me salieran pero antes de enviarlo me dio por incorporar algo en base al comentario de @petertxt que me dio resultado… los codecs… habilitando el g729 en la definición del trunk me funcionó!!!!!! a falta de hacer pruebas más a fondo.

Incorporado algunos de los parámetros extra en la definición del PEER del trunk que sugiere @petertxt en el post anterior y que no tenía, pero el funcionamiento era igual sin ellos así que no tengo claro cuales de ellos son redundantes.

Para componer la key registro para el trunk en Asterisk/FreePBX tuvimos que hacer numerosas pruebas hasta dar por pura  deducción y en base hilos encontrados en seguridadwireless. Los datos del Livebox de Orange necesarios para componer la cadena se extraen siguiendo estas indicaciones: http://lafibra.info/index.php?topic=237.0

El resultado es:

+34XXXXXX@sip.orange.es:BBBBBBBBBBBBBB:CCCCCCCCCCCCCCC@sip.orange.es:5060/+34XXXXXX

Es decir de los datos extraidos del Livebox sería algo como:
“sip.URI”:”secret”:”sipAuthUserName”:”puerto”/”num de telefono completo”

CCCCCCCC:
InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.SIP.AuthUserName = USER_DE_VOIP@sip.orange.es

BBBBBBBB:
InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.SIP.AuthPassword = PASS_DE_VOIP

XXXXXXXX
InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.SIP.URI = sip:+3495XXXXXXX@sip.orange.es

 

También hemos deducido que la ruta sip.orange.es no resuelve normalmente y los Livebox deben hacerlo de algún modo especial o exclusivamente via un proxy, por lo que por ahora lo hemos resuelto con una entrada fija en nuestra red local a una de las IPs de proxy2.sip.orange.es

Lo que no sabemos, trunk

Para definir el trunk hemos conseguido que las llamadas entrantes funcionen correctamente pero no las salientes. Hemos probado todo tipo de combinaciones y es lo que seguimos investigando ahora. En la actualidad nuestra configuración es aproximadamente:

type=peer
username=+34NNNNNNNNN -< num de la instalacion
fromuser=+34NNNNNNNNN -< num de la instalacion
fromdomain=sip.orange.es
secret=BBBBBBBB  -< ver patron de registro
port=5060
outboundproxy=proxy2.sip.orange.es
nat=yes
insecure=port,invite
host=sip.orange.es
dtmfmode=auto
disallow=all
allow=g729&alaw&ulaw <- muy importante, hasta incorpoar el g729 no conseguimos que funcionara
context=from-trunk
callerid=<+34NNNNNNNNN>
qualify=yes

Insistimos que actualmente esto nos permite entrada pero no salida de llamadas. La única pista que estamos evaluando es esta:

WARNING[11336][C-00002163] chan_sip.c: Received response: "Forbidden" from '<sip:34NNNNNNNNN@sip.orange.es>;tag=as78a88ac2'

 

 

Resolviendo el acceso a bounces de phplist con cuentas de gmail

Diciembre 13, 2015  |  Presencia Online, Vida online

Hoy nos hemos encontrado con una sorpresa que nos ha parecido relevante documentar. Uno de nuestros proveedores de tráfico saliente de correo nos ha bloqueado una cuenta al parecer por contar con un número elevado de hard bounces. Los hard bounces son errores permanentes, tipo “buzón ya no existe” o “dominio no responde a DNS”, etc.

Es vital mantener las listas de correo al día a este respecto y para eso se usa la cabecera Bounce-to en los emails que se envíen (de otro modo irán al remitente (from)).  El objetivo es centralizar en una cuenta todos los rebotes y procesarlos con frecuencia para desactivar los emails que en teoría no deben volver a estar activos para evitar tráfico basura a la hora de enviar emails. Esto también tiene su efecto en la entrega y en los servidores de destino, pues un número elevado de intentos a buzones de un dominio que no funcionen, probablemente harán que el resto de buzones válidos de ese mismo dominio, se entreguen directamente como spam.

Con este fin hemos mantenido algunas cuentas de Google Apps (gmail) como destino de esos bounces que después procesamos con phplist. El problema ha surgido porque phplist no era capaz de acceder a la cuenta y no estaba alertando por ello. Google está endureciendo sus criterios de seguridad de acceso a buzones y eso afecta a scripts que acceden de forma automática a buzones que en algunos caso exigen un “acceso via web” para acceder, como era este caso.

La solución ha venido modificando el parametro de acceso de phplist al buzón pop a:

$bounce_mailbox_port = "110/pop3/SSL

14-12-2015 0.12.39 3

Pero sobretodo, activando la opción de “permitir aplicaciones menos seguras” en la configuración de la cuenta de Google asociada al buzón en cuestión.

 

Recuperando configuraciones de Windows desde backups de regedit

Una de estas entradas que uno no querría escribir porque significa que nos ha fallado un sistema de copia de seguridad de sistema operativo y nos toca recuperar configuraciones. En fin al tema.

El cliente SSH Putty y muchos otras apps guardan su configuración sólo en claves de registro. En nuestro caso necesitábamos recuperar la configuración de un alto número de conexiones SSH en un Windows recién instalado. Disponíamos de copia no operativa del sistema anterior por lo que necesitábamos abrir “el antiguo” regedit para recuperar éstas configuraciones.

Para hacerlo, en nuestro caso desde (el nuevo) sistema bajo Windows 7 y con el antiguo sistema montado en otro disco o directorio:

  • asegurarse de tener visibles archivos ocultos y los “protegidos” del sistema
  • dentro de regedit nos colocaremos sobre el árbol de HKEY_LOCAL_MACHINE o el HKEY_USERS. En realidad en cualquiera que nos permita la opción ” Cargar subarbol” en el menú archivo
  • Cargaremos un subarbol desde un archivo que contenga la parte del registro de Windows anterior que nos interese. Deberás buscar la ubicación según tu sistema pero a modo de referencia:
    • las confs de usuario (nuestro caso) residen en un archivo en el raiz de la carpeta principal de usuario… que suele ser “C:/Usuarios/XXXXX”. El archivo se llama “Ntuser.dat” y es donde residen la mayoría de confs específicas de aplicaciones de ese usuario.
    • los del sistema residen dentro de la carpeta de Windows en el subdirector /system32/config cada uno con su nombre, según lo que quieras recuperar.
  • una vez cargado nos pedirá un nombre, es el nombre que visualizaremos mientras tengamos “abierto” esa parte del árbol en el registro actual. No es importante, después lo desmontaremos.
  • ahora deberías ver tu nuevo árbol con el nombre que hayas indicado, puedes ir buscando aquellos elementos que quieras recuperar y exportarlos a archivos individuales… putty.conf en nuestro caso.
  • una vez hayas terminado recuerda descargar el subarbol temporal desde la opción del menú archivo.
  • para importarlos en el nuevo sistema o maquina necesitarás rectificar a mano con un editor de textos el archivo exportado para adecuar las claves a donde quieres que se importen ahora. En nuestro caso sustituimos:
[HKEY_USERS\temp_antiguo_sistema\Software\SimonTatham\PuTTY\Pageant]
por
[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Pageant]

Divertido… Windows y sus “amables” sistemas!

 


Actualización:

Lista de referencias de interés para recuperar algunas configuraciones por el mismo método:

  • Dreamweaver, la configuración de sitios no está en la entrada de Dreamweaver en Software sino en la de commón, conocretamente en: HKEY_CURRENT_USER\Software\Adobe\Common\XX\Sites

 

Trabajando con virtualenvs y PyCharm bajo windows

Cada vez realizamos más desarrollos bajo Python y como parte del mismo ya se han hecho casi indispensables los “virtualenvs” que permiten aislar versions de python, paquetes, etc en función del proyecto. Es algo así como un “chroot” del entorno de Python para una aplicación.

Hacerlo bajo entornos Windows, como no, es un poco más complejo y menos fiable, pero se complica aún más al usarlo bajo PyCharm de Jetbrains (con versión Open Source disponible) que los gestiona desde la misma aplicación. Algunos consejos para hacerlo funcionar que nos han resultado útiles:

  • No muevas el envvar de los entornos. Por defecto en Windows los virtualenvs se instalan en la carpeta del usuario, generalmente C:\USUARIO\Envs. Parece que el terminal y otras funciones de PyCharm, no se llevan muy bien con otras ubicaciones, que podrías cambiar con una variable de entorno en Windows (recuerda recargarlas o reiniciar para que se apliquen) de tipo WORKON_HOME.
  • No olvides activar el entorno cuando uses el terminal, también desde dentro del PyCharm, aunque el proyecto esté en ese entorno recuerda que no lo activa por defecto.

En otro orden de cosas, si necesitas renombrar proyectos, prueba siguiendo estos pasos:

  1. cierra el proyecto en la aplicación
  2. renombra el directorio del proyecto
  3. entra en la carpeta .idea que lo contiene y renombra el archivo con el nombre antiguo y extensión .iml
  4. abre el archivo .name y cambia el nombre en su contenido

Instalar Virtualbox guest-additions sin X

Entre otros muchos usos de Virtualbox, lo usamos como entorno de desarrollo que sean replicas de los de producción y que nos sirven para desarrollo offline para desarrolladores. Con el tiempo hemos ido optimizándolas de modo que mantenemos los archivos y repositorios, configuraciones, logs, etc en carpetas “locales” del host que se montan y sirven desde la maquina virtual. Es una estupenda alternativa a usos de cualquier versión de xAMP ya sea en Windows o Mac sobretodo porque emula a la perfección el entorno real de desarrollo, nos permite usar los mismos archivos de configuración de servidores, formato de rutas, etc. En otro post entraremos en detalles, pero lo configuramos con dos interfaces de red, una poder referirnos a ellos siempre en la misma dirección local y otro para enrutar el tráfico de salida.

Virtualbox requiere* (el asterisco es porque en realidad no pero hay servicios vitales como el de hora que de otro modo no funcionan bien) instalar unas “guest-additions” especificas del entorno virtualizado. El problema surge de que muchas distribuciones (como Debían en nuestro caso) incluyen una versión de las mismas que generalmente suelen estar obsoletas respecto a las que podemos instalar desde la última versión de Virtualbox y pero,  acaban interfiriendo en su correcto funcionamiento si se instalan por duplicado.

No entraremos en detalles de como hacerlo, al haber numerosos post al respecto pero por nuestra experiencia recomendamos:

  • no instalar las versiones de los repositorios de Debian (o seguramente ninguna distribución)
  • si ya lo has hecho desintalalas… apt-get remove vbox-additions***. Las instaladas desde el CD se pueden desinstalar con el mismo instalador (ver comentario posterior) con “sh ./VBoxLinuxAdditions.run uninstall”
  • en nuestro caso nos molestamos ademas en hacer un “blacklist” a esos paquetes para evitar que se instalen por error:
echo "virtualbox-guest-utils hold" | dpkg --set-selections 
echo "virtualbox-guest-x11 hold" | dpkg --set-selections 
echo "virtualbox-guest-dkms hold" | dpkg --set-selections
  • una vez eliminados desde el menu de la maquina en VirtualBox “Insert Guest Additions”
  • montar el cdrom si fuera necesario. Según el entorno “mount /dev/cdrom /mnt/cdrom”
  • antes de instalar tal vez tengas que comprobar e instalar algunos paquetes (DKMS, etc). Puedes ver info por distribución en https://www.virtualbox.org/manual/ch04.html#idp55231856

Como nuestras VMs son servidores que procuramos sean los más compactos posibles para distribución y carga en la maquina que los ejecuta, no nos convencía que las guest-additions instalar numerosas librerias para la X e investigando un poco averiguamos finalmente una opción poco documentada de usar un flag –nox11 al instalar. Así una vez en el directorio con los scripts del cdrom virtual ejecutar:

sh ./VBoxLinuxAdditions.run --nox11

Que debería terminar con el mensaje:

...Could not find the X.Org or XFree86 Window System, skipping.
 

Cambiar el tamaño de fotos de Google por URL

Febrero 12, 2014  |  Consultoría tecnológica, Vida online

Hoy hemos necesitado incluir directamente una imagen compartida por un cliente en Google Plus pero necesitábamos ajustar sus dimensiones. Dado que no hemos encontrado mucha documentación, nos hemos animado a estudiar un poco como re-dimensionar imágenes que se comparten desde los servidores de Google, como sería el caso de fotos publicadas en Google+ y otros servicios de Google.

Contamos con un desarrollo PHP propio de publicación de fotos sobre picasa web albums y que usamos en varios proyectos con miles de imágenes, por lo que conocemos el uso de esa API y el re-dimensionado de imágenes desde servidor y deducíamos que era cuestión de averiguar los parámetros para que Google hiciera el trabajo por nosotros. Como hemos dicho, nos ha extrañado no encontrar documentación específica al respecto por lo que esta entrada está hecho por deducción y sin garantía alguna de su funcionamiento futuro.

Al tema. La clave está en la URL de la que se sirve la imagen. Partiendo de cualquier imagen de google plus por ejemplo, si cogemos la imagen original nos encontraremos con algo como:

https://lh4.googleusercontent.com/-qMBc8M5jvGw/UvtTupyWiQI/AAAAAAAAAE8/GyNEZoa6zAw/w576-h500/lachapaCD_898.jpg

Fíjate en la parte que hemos marcado en negrita de sencilla deducción. w corresponde al ancho (WIDTH) y h al alto (HEIGHT). La lógica es similar a la de otras librerías, se determina el lado más grande y se encaja a las dimensiones solicitadas. Es decir algo como “que quepa en” las dimensiones que proporcionas sin distorsión ni recorte.

Haciendo pruebas y siguiendo la lógica de otras APIs asumimos que también puedes usar un solo parámetro para determinar el lado más grande que quieres (según sea la foto original) por ejemplo “s200” que determina el lado más grande.

Usando “s200”

Es decir, “w512-h300” sería igual que usar “s512” en una imagen horizontal, pero no en vertical.

Pero el parámetro “-no” de la URL original nos daba pie a buscar como hacer el crop y acabamos descubriendo que un guión “-c” en lugar del “-no” cumple esta función. Ahora las dimensiones corresponden al área que queremos “rellenar” haciendo el recorte desde el centro de la imagen.

Recortamos añadiendo un “-c”: w576-h100-c

Y claro “perder el tiempo” así,  algunas vences, no siempre, proporciona alguna que otra “recompensa”. Si añades otra c más “-cc” el recorte será redondeado sobre esas dimensiones, al estilo de los círculos de personas de Google+

/w512-h100-cc/

Se ve mejor si lo hacemos sobre dimensiones cuadradas que correspondan al círculo que queremos:

Usando “/w200-h200-cc/”

Y otra “curiosidad” descubierta “dando palos de ciego”, añade una “b” + 1 número y tendrás un bonito marco para tu imagen:

Usando: w512-h300-b10

Nos queda la espinita de averiguar como hacer recortes orientados. En otras librerías se usan parámetros “t,b,l,r” para top, bottom, left, right o cardinales tipo SW para determinar desde donde se recorta la imagen. Si sabes donde localizar documentación extra o averiguas algo más, no dejes de contárnoslo.

 

Buscamos diseñador junior

Septiembre 12, 2013  |  blog

Estamos considerando incorporar un diseñador junior a nuestro equipo de desarrollo online en nuestra oficina en Fuengirola.  Buscamos a un candidato/a interesado en recibir una formación especifica y avanzada  en HTML5  y CSS3 y en gestión de entornos WordPress.

El candidato ideal deberá

  • disponer de alguna experiencia demostrable en cualquier área de diseño, idelamente online
    • querremos ver imágenes, carteles, anuncios, webs, banners… cualquier cosa que hayas diseñado ya para valorar tu capacidad creativa
  • tener conocimientos básicos, en al menos dos de estas áreas:
    • html / css
    • wordpress
    • edición de imágenes bitmap en Photoshop, Fireworks o Illustrator
    • php
  • tener un nivel avanzado de uso de equipos informáticos
  • nivel básico de inglés,
    • al menos el que permita la lectura de documentación técnica y tutoriales

Ofrecemos

  • formación avanzada y exigente en
    • diseños responsive sobre HTML5/CSS3
    • gestión de sitios sobre WordPress
    • diseño de temas y plugins para WordPress
  • incorporación a una empresa estable que comercializa productos online desde 1995
  • contrato de 6 meses con posibilidad de incorporación a largo plazo en función a versatilidad y capacidad de aprendizaje
  • jornada reducida o completa en función de capacidad

Si estás interesado y cumples todos los requisitos (descartaremos de forma automática todos los que no), envíanos un email con información sobre ti y enlaces o muestras a cualquier trabajo publicado a: jobs13 (arroba) alsur (punto) es y rellena el formulario en: http://goo.gl/forms/ppj0sqv0ca

 

Suerte.