martes, 27 de septiembre de 2016

Crear Gif en linux (Guía ultra rápida)

Desde terminal

La forma más sencilla es usando el comando convert
Copias las imagenes (deben estar ordenadas alfabeticamente) y luego conviernes



convert -delay 80 -loop 0 *.png animated.gif

domingo, 25 de septiembre de 2016

Crear página de un proyecto para github

La mejor explicación
https://www.thinkful.com/learn/a-guide-to-using-github-pages/start/new-project/project-page/

Crear banner para canal de Youtube

Intentando cuadrar el banner para un canal de Youtube me encontré con el problema de que la imagen se mostraba incompleta como se muestra en la siguiente imagen


Para solucionarlo te puedes guiar de los "Channel Art Template" que proporciona youtube y te lo puedes descargar por aquí



Colocando tu logo en el área donde indica "TEXT AND LOGO SAFE AREA" lograrás que este se vea en todos los distintos dispositivos.

Yo tengo mi propio template que consiste en un rectángulo rojo donde voy a pegar el logo. Luego que inserto el logo cambio color rojo del cuadrado a alpha y listo.



Lo puedes descargar de aqui


Como resultado final se puede ver que el logo queda bien posicionado


viernes, 23 de septiembre de 2016

Fix "Assertion failed: Write access is allowed inside write-action only"

Desarrollando un plugin para Android Studio me saltaba el siguiente error cuando intentaba escribir cambios en un documento:

ERROR - plication.impl.ApplicationImpl - Assertion failed: Write access is allowed inside write-action only (see com.intellij.openapi.application.Application.runWriteAction()) 


El problema se encontraba en la siguientes linea:

Document projectDoc=DocumentHelper.getProjectBuildDotGradleFile();
projectDoc.setText("Some text");

El problema ocurre porque para poder escribir en un documento debe hacerse desde un hilo.
Para solucionarlo cambiamos el código anterior por el siguiente:

 ApplicationManager.getApplication().runWriteAction(new Runnable() {
            @Override
            public void run() {
                Document projectDoc=DocumentHelper.getProjectBuildDotGradleFile();
                projectDoc.setText("Some text");
            }
});

sábado, 10 de septiembre de 2016

Java Swing in Eclipse Neon

Creando mi plugin para Android Studio me consegui con la situación de que debia crear un JPanel. El editor de Swing de IntelliJ IDEA se queda muy corto y el de Netbeans no me gusta mucho.

El editor de Swing para Eclipse ya no está disponible por defecto. Para instalarlo debe ir a Help-> Install New Software y luego introducir este link





Luego de eso podrá crear GUIs Swing desde new.....

viernes, 9 de septiembre de 2016

Renombrar ficheros en linux desde terminal

Buscando como renombrar un lote de ficheros fácilmente en linux me encontré con el comando rename, pero este no me funcionaba. Luego vi que había cambiado su funcionamiento.


Tiene la siguiente sintaxis

rename 'TextoViejo' 'TextoNuevo' ficheros

Ejemplos:

Para substituir los espacios en los nombres de los siguientes ficheros y cambiarlos por un _

rename comand linux

rename ' ' '_' *.png



jueves, 8 de septiembre de 2016

Descargando los sources de la versión de IDEA Community asociada a una versión de Android Studio

Descargando los sources de IDEA Community

Hay que descargar los códigos fuentes de IDEA Community. Pero primero debemos conocer que versión del branch de git se basa la última versión estable de Android Studio (Es muy importante por razones de vida útil del plugin que uses la última versión). Para conocerlo nos vamos a la siguiente página:



Ahí vemos que, al momento de escribir este tutorial, la ultima versión estable de Android Studio es la 2.1.3 que se basa en el branch 143 de IntelliJ IDEA (15.0.x).

Ya una vez que conocemos el branch de IDEA en la que se basa la última versión de Android Studio, ahora debes descargar los sources de IDEA. Para ello entramos en el siguiente link:




Note que debe cambiar el número final del link para adaptarlo al número del branch anteriormente conseguido (en mi caso es 143).

Luego debe descomprimirlo en un directorio. En mi caso /home/hector/Desarrollo/Android/Plugins/DomainTools/intellij-community-143

Crear Plugins para Android Studio

Existen funcionalidades que Android Studio no cumple, para ello existen los plugins, estos cubren los vacíos y atienden requerimientos específicos.

En este tutorial desarrollaremos un Plugin que permita añadir dependencias de forma automática a nuestros proyectos. Le llamaremos Snorlax (Obvia alusión a la pereza que da añadir requerimientos de forma manual).

Android Studio no es más que IntelliJ IDEA con el plugin para Android más otras configuraciones y modificaciones. Por lo que desarrollar un plugin para Android Studio es, en esencia, casi igual que hacerlo para IntelliJ IDEA.



android studio architecture intellij plugin


Parte 1: Preparando el ambiente
Ambiente

Para poder compilar en el ambiente de google debe usar Linux o Mac OS o Windows. Google recomienda usar la última versión LTS de Ubuntu para trabajar en su ambiente.
Debes tener la última versión de Android Studio instalada.

Debe instalar el JDK (Recomiendo usar el de Oracle). La gente de Jetbrains y Google recomiendan usar el JDK 1.6, pero en este tutorial usaré el 1.8 rev 93 puesto no me ha presentado ningún problema hasta el momento. El SO que usaré es Fedora 23 x86_64 con kernel 4.4.6-300.


Descargando e instalando IDEA Community

Android Studio no ofrece la utilidad de crear plugins para el. Por ello debemos usar IntelliJ IDEA  para crear el plugin. Para este efecto debemos usar la versión Community que es gratuita. Incluso si tiene la versión Ultimate debe descargar e instalar la versión Community. Esto porque la versión Ultimate es de código cerrado y para crear el Plugin necesitaremos leer mucho código fuente del IDE cuando hagamos debug.

Puede descargarla desde aqui: https://www.jetbrains.com/idea/#chooseYourEdition

Yo la he descomprimido en /opt
Luego debes entrar en el directorio bin y ejecutar idea.sh como usuario regular



Descargando los sources de Android Studio


Google creó una herramienta llamada "repo" para facilitar el trabajo con Git en el contexto de Android. Para instalarla debes ejecutar lo siguiente:

# curl https://storage.googleapis.com/git-repo-downloads/repo > /bin/repo
# chmod a+x /bin/repo

Una vez instalada la herramienta repo podemos bajar los sources de Android Studio ejecutando desde la terminal lo siguiente :

$ mkdir studio-master-dev
$ cd studio-master-dev
$ repo init -u https://android.googlesource.com/platform/manifest -b studio-master-dev
$ repo sync

El código anterior bajará la main branch del repositorio de Android Studio (en mi caso la 1.4 rev 3 al 07-09-16).


En total pesa 9.4 GB por lo que este proceso demorará bastante incluso si vives en Seul :)



Parte 2: Creando el proyecto del plugin

Abrimos IDEA y creamos un nuevo proyecto


Va a seleccionar IntelliJ Platmorm Plugin y luego dará click en Next.
Inmediamente saldrá un diálogo indicando lo siguiente:

"Do you want to create a project with no SDK assigned?
An SDK is required for compiling, debugging and running applications,
as well as for the standard SDK classes resolution."

Debe dar click a "Yes"


Luego coloca el nombre al nuevo proyecto y luego en Finish



Cuando el proyecto termine de cargar entra en File -> Project Structure

Luego debes configurar el JDK:


Cuando cargue selecciona el Project language level en 6



Luego debe ir a Platform Settings -> SDKs y darle click al botón y seleccionar "IntelliJ Platform Plugin SDK". 



Luego debe crear el "Platform Plugin SDK". Debe hacer referencia al directorio de instalación de Android Studio (En mi caso está instalado en /opt/android-studio2/android-studio



Va a preguntar que JDK va a usar. Debe seleccionar la versión 1.8


El JDK va a quedar algo así:


Luego entre en la pestaña Sourcepath -> + para agregar el path donde descomprimió los sources de Android Studio. 


Saldrá este diálogo y debes darle click en "OK"


Quedaría algo así:

Presione OK e indicará lo siguiente: (debe darle click a Attach Annotations)




NOTA: ¿Puedo usar las fuentes de IDEA en vez las de Android Studio?

Si, si puedes. Pero solo aplica cuando no quieras hacer algo realmente avanzado que use el plugin de Android Support (como SQLScout). Los sources de Android Studio pesan 9.4 GB y son 160 mil ficheros, por lo que a veces por razones de arranque del proyecto o velocidad de internet imposibilita utilizarlos.
Si tu plugin solo modificará ficheros, crear directorios u otra cosa como esta, basta con los sources de IDEA. En esta entrada explico como descargarlos: 


Parte 3: Creando un Plugin de prueba

En esta parte hacemos que el plugin abra un diálogo cuando se de click en Tools -> Snorlax


Crea un nuevo paquete y llamalo "snorlax". Dentro de el irán nuestras clases



Saldrá un dialogo para crear el nuevo action.
Debes llenar los campos de la siguiente forma:
  • Action ID: Es el identificador único del action. Se recomienda colocar el nombre de sus paquetes contenedores concatenado al nombre de la clase.
  • Class Name: Nombre de la clase del nuevo action
  • Name: Nombre que mostrará en la UI
  • Description: Texto de ayuda que se mostrará en un tooltip o en la statusbar cuando se seleccione la UI del action.
En la siguiente imagen se visualiza mejor cada uno de los campos




La acción anterior crea nuestro action




El fichero plugin.xml

En el fichero plugin.xml ubicado en el directorio META-INF podremos editar la configuración de nuestro plugin

En la sección <actions> podremos añadir nuevos actions. Por ejemplo para añadir una nueva entrada al MenuBar podemos escribir lo siguiente

<group id="com.instant.snorlax.Menu.SnorlaxMenu" text="Snorlax" description="Snorlax actions">  <add-to-group group-id="MainMenu" anchor="last"  />
  <action id="com.instant.snorlax.depmanager.view.actions.LibrariesManagerAction"          class="com.instant.snorlax.depmanager.view.actions.LibrariesManagerAction" text="Project Libraries manager"          description="Add libraries to your project using a GUI">    <add-to-group group-id="ToolsMenu" anchor="first"/>    <keyboard-shortcut keymap="$default" first-keystroke="altGraph L"/>  </action>
</group>

y el resultado será el siguiente:


Parte 4: Corriendo nuestro proyecto

Para correr nuestro proyecto presionamos mayus + F10. Debe abrir una instancia de Android Studio con nuestro plugin instalado.




Lo que sigue es que continues leyendo la documentación oficial de JetBrains


otros links de interés:



Cerrar todas las instancias de un programa en Linux




Cuando escribo entradas para el blog, fecuentemente requiero usar captures de pantalla, lo cual hace que cada vez que tome uno, se abra el programa ksnapshot. A veces son decenas de programas de estos abiertos y cerrarlos uno a uno es una ladilla. Para cerrar todas las ventanas de un programa que estén abiertas podemos usar el comando killall. En mi caso sería:

killall ksnapshot


miércoles, 7 de septiembre de 2016

Descargar código fuente de Android Studio

Este mini tutorial explica como descargar el código fuente de Android Studio, en caso de requerirlo (por ejemplo si deseas desarrollar un plugin que dependa del Android Support Plugin.

Explicación:
Google creó una herramienta llamada "repo" para facilitar el trabajo con Git en el contexto de Android. Para instalarla debes ejecutar lo siguiente:

# curl https://storage.googleapis.com/git-repo-downloads/repo > /bin/repo
# chmod a+x /bin/repo

Una vez instalada la herramienta repo podemos bajar los sources de Android Studio ejecutando desde la terminal lo siguiente :

$ mkdir studio-master-dev
$ cd studio-master-dev
$ repo init -u https://android.googlesource.com/platform/manifest -b studio-master-dev
$ repo sync

El código anterior bajará la main branch del repositorio de Android Studio (en mi caso la 1.4 rev 3 al 07-09-16).


En total pesa 9.4 GB


sábado, 3 de septiembre de 2016

Synergy conf ejemplo

Este es un ejemplo de un fichero de configuración de Synergy que me funciona. Consta de un equipo "laptop" que está a la izquierda de un equipo "localhost.localdomain".



section: screens
laptop:
halfDuplexCapsLock = false
halfDuplexNumLock = false
halfDuplexScrollLock = false
xtestIsXineramaUnaware = false
switchCorners = none
switchCornerSize = 0
localhost.localdomain:
halfDuplexCapsLock = false
halfDuplexNumLock = false
halfDuplexScrollLock = false
xtestIsXineramaUnaware = false
switchCorners = none
switchCornerSize = 0
end

section: aliases
end

section: links
laptop:
right = localhost.localdomain
localhost.localdomain:
left = laptop
end

section: options
relativeMouseMoves = false
screenSaverSync = true
win32KeepForeground = false
switchCorners = none
switchCornerSize = 0
end

viernes, 2 de septiembre de 2016

Hacer mockups de aplicaciones Android en Linux

La mejor solución es usar Pencil y descargar la colección de material design  Es gratis, rápida, y funciona de forma nativa en linux

Ejemplo dirección de Ipostel para tarjeta Payoneer

Cuando rellenes la información para tu tarjeta Payoneer en venezuela, es recomendable colocar una dirección de Ipostel, puesto por experiencia propia he visto que los paquetes nunca llegan.
Dos ejemplo de formatos de direcciones usadas y que llegaron fueron las siguientes: