Mostrando entradas con la etiqueta Terminal. Mostrar todas las entradas
Mostrando entradas con la etiqueta Terminal. Mostrar todas las entradas



Ya hace algún tiempo se rompió la barrera de los teléfonos inteligentes como dispositivos completos de trabajo, aplicaciones de productividad hoy veremos como configurar uno como un dispositivo para desarrollo de aplicaciones.

El entorno que configuraremos es para realizar WebApps completamente operativo desde el telefono (inclusive configurar lo como servidor Web) y todo para operar de manera OffLine perfecto para los ratos de ocio sin conexión a internet cercana.


Lo primero que necesitamos es instalar y configurar un par de aplicaciones desde la PlayStore:

  1. Termux  [ENLACE
  2. QEdit [ENLACE]
  3. AnWriter [ENLACE]
  4. Bitbeaker[ENLACE] (opcional)

 El entorno que configuraremos sera un servidor Web Con Python y html, para la base de datos con SQLite Bastara.

Para ser extremadamente cautos y a sabiendas de que en algunas ocasiones los archivos en los teléfonos son volátiles, configuraremos un repositorio git para tener un backup del codigo que alojemos en nuestro teléfono.

Para ello utilizaremos una cuenta en bitbucket en su versión gratuita podremos tener repositorios privados asi que es perfecta, la limitan te de la versión gratuita son las horas mes que podemos usarla, cuenta con aproximadamente 1 hora de procesamiento al mes y no consumiremos ni el 20%.


https://bitbucket.org/


Luego una vez creado un usuario y autenticado, necesitaremos crear un repositorio.

Una vez configurado un nombre crearemos el repositorio. y con esto tendremos esta pantalla:

pronto necesitaremos algo de ella pero por el momento es suficiente, ahora lo que necesitamos es configurar el entorno de programacion, nuestro "core" sera termux, que es basicamente un interprete de comandos con la peculiaridad que es un interprete de linux tambien, con algunas limitaciones, pero extremadamente potente.

El primer comando que iniciaremos sera el de actualizar termux y la lista de aplicaciones, si tienes experiencia en linux aqui estaras como pez en el agua.

$:apt update && apt upgrade

 Despues necesitamos configurar el acceso a los directorios, para leer los datos guardados en la tarjeta de memoria.

$:termux-setup-storage

Con esto crearemos algunos directorios, sin embargo no los utilizaremos todavia o por lo menos no en este tutorial.
Despues instalaremos el paquete coreutils, lo necesitaremos para manipular las carpetas, crearlas borrarlas, moverlas.

$:apt install coreutils

Después nos resta instalar el interprete de Python 

$:apt install python

Esto instalara la version 3 de python, en el caso que necesitemos la version 2 es necesario remplazar la palabra python por "python2"
Todas las herramientas que usaremos son validas para ambas versiones de python.

Luego necesitaremos Git para conectar bitbucket y nuestra aplicacion, para ello lo instalaremos con el siguiente comando:

$:apt install git

Luego de ello por comodidad abriremos el manejador de archivos de android que posean y crearemos una nueva carpeta en la sdcard ahí guardaremos el proyecto.


puede ser cualquier nombre, para referencia utilizare el nombre "bitbucketAPPS", creare un subfolder con el nombre del proyecto que tengo en bitbucket.

luego regresare a termux y escribire el siguiente comando.


$: cd /sdcard/bitbucketAPPS/test_rev1

Si no se sienten muy comodos o realmente no saben como navegar entre carpetas con la consola no se preocupe, basta con saber 3 comandos

  • "cd .." cd dos puntos regresa al directorio de arriba esto es equivalente a darle "atras" al navegador de archivos.
  • "dir"  lista los archivos y directorios que tenemos visibles, de no mostrar datos significa que estamos en un directorio vacio.
  • "cd /<path>/"  con este podemos ir a cualquier directorio del cual sepamos la ruta.


Ya con esto estamos preparados para comenzar, lo primero que haremos sera clonar y guardar la base de nuestro proyecto que se encuentra en bitbucket, si en este punto ya la creamos cuando iniciamos el repositorio, regresaremos a la pagina principal y copiaremos la dirección que termina en .git con el siguiente comando.

 $: git clone https://CORREO@bitbucket.org/USUARIO/test_rev1.git


después de ello saldrá nuestro coreo pidiendo contraseña para descargar los archivos esta contraseña es la de bitbucket idéntica y no veremos nada mientras la ingresamos hasta presionar "enter" en nuestro teclado touchpad.

Comenzara a bajar el repositorio y listo podremos comenzar a editar archivos en ese directorio para ello iniciaremos rápidamente el  QEdit y escribiremos la primera miniaplicacion



La interfaz puede parecer algo tosca pero es bastante util pues puede resaltar el codigo de python y es quizas el mas rapido en hacerlo, se puede utilizar AnWritter o incluso cualquier editor de texto por preferencia utilizaremos este y relegaremos el AnWritter para el HTML.

En QEdit ingresaremos el siguiente codigo.

from flask import Flask
import os
app = Flask(__name__)
app.secret_key = os.urandom(12)  
@app.route("/")
def hello():
    return "Hello World!"
app.run(debug=False,port=8888, host='0.0.0.0')

y lo guardaremos, ¿Donde? bueno en la carpeta que creamos en la sdcard o quizás mejor dicho en la tarjeta de memoria con el manejador de archivos, podemos guardarlo con cualquier nombre, en mi caso le pondré "app.py".

Ahora bien necesitamos instalar las librerías que importamos en el código de python, cuando instalamos python en termux instalamos una version completa de el y una gran mayoría de módulos funcionan de forma idéntica esto incluye el comando pip con el cual instalaremos Flask


$: pip install Flask


 Una vez completados los requerimientos en los módulos solo nos resta regresar a termux y ingresaremos este comando


$: python /sdcard/bitbucketAPPS/test_rev1/app.py

Con este ultimo comando tendremos el servidor corriendo en LocalHost y podremos accesar a el ingresando la dirección http://127.0.0.1:8888

Esto es compatible con los navegadores Chrome y Firefox, los demas navegadores interpretan esta direccion como si fuese una busqueda y no devuelven la informacion del servidor corriendo.

Hasta este punto ya tienen un stack valido y completo para programacion web en Python, a partir de este punto es posible diseñar un front-end basado en alguna tecnologia web como Vue.js, Rest.js o ember.js las herramientas CLI no funcionan hasta el momento muy bien con termux, sin embargo no son estricamente necesarias.


Este es un error común sobre todo si tiene algunas actualizaciones o instalaste las herramientas de Xamarin y el emulador de visual estudio para android todo por separado.

para solucionar el error del porque el emulador no inicia cuando abrimos una solución con Xamarin en visual studio lo primero que tenemos que verificar es si todos los directorios están instalados de forma correcta.
para esto iremos a el menú Tools y luego iremos al final de la lista en Options... 

Click en la imagen para agrandar
Aquí veremos todas las opciones de visual studio iremos a la parte donde dice Xamarin (son listas desplegables)

Click en la imagen para agrandar
Justo aquí verificaremos que los 3 directorios estén enlazados de forma correcta.
  • El Java SDK en su versión 1.8 
  • El Android SDK 
  • El Android NDK

Después de verificar esto procederemos a ver las opciones del emulador, en muchos casos el emulador que provee el SDK de Android va demasiado lento sobre todo si tenemos en cuenta que tenemos un entorno de desarrollo limitado (procesador no tan potente y limitaciones de ram).

Existen 4 herramientas de emulación que pueden utilizarse en Visual Studio (sin añadir sorftware extra y que posiblemente ya dispongan) .
  • El Android Device Manager (AVD) que es bastante lento
  • El Emulador de Intel Hardware Accelerated Execution Manager (Intel HAXM) no disponible en procesadores sin Intel-VT ni en procesadores AMD
  • Xamarin Android Player que esta limitado por el servicio de Hyper-V de Microsoft Windows (solicita desactivar el servicio)  y solo tiene las imágenes de emulación de los dispositivos Nexus. 
  • Visual Studio Emulator For Android que utiliza el servicio de Hyper-V de Microssoft Windows con instrucciones x86-x64

De todos los emuladores que he tenido la fortuna de probar en entornos de desarrollo limitados el que mejor se desempeña es el Visual Studio Emulator For Android, para verificar que se encuentra instalado procederemos a abrir el menu Tools  y luego buscaremos el menú con su nombre.

Click en la imagen para agrandar
Es una abstraccion del servicio de Hyper-V de hecho por cada dispositivo que creemos aqui tendremos acceso a el desde el Administrador de Hyper-V.

Click en la imagen para agrandar
Lo que nos ataña es poder iniciar el emulador y conectar el depurador de visual studio al la instancia de Hyper-V que por alguna razón que todavía desconozco no lo hace de forma automática para ello necesitaremos iniciar la instancia, en el símbolo de Play (Flecha Verde)
Click en la imagen para agrandar

Con el Emulador ya iniciado procederemos a abrir el cuadro de herramientas que corresponde a la ultima doble flecha color blanca
Click en la imagen para agrandar
Una vez aquí iremos a la pestaña de Network y copiaremos la dirección IP del segundo adaptador de red que posea el dispositivo emulado.
Click en la imagen para agrandar
 En este caso es 192.168.1.9 luego de tener esta dirección procederemos a conectar el Android Debug Bridge a la maquina virtual del dispositivo emulador, para esto abrimos el menú Tools y en el apartado de Android nos dirigimos a la ultima opcion Android Adb Command Prompt... 

Click en la imagen para agrandar
Una vez aqui solo restaria agregar el comando para conectar la instancia de ADB con el emulador, para ello ingresamos el comando adb connect 192.168.1.9

Click en la imagen para agrandar
Una vez llegado a este punto cada vez que iniciemos el emulador podremos ver la aplicacion corriendo dentro de el y esto sera valido hasta que el servicio de adb sea interrumpido (sea por un reinicio o por error en tiempo de ejecución del servicio adb)  de suceder solo es necesario reiniciar el servicio desde el adb command prompt conectando a la IP del emulador.

Hola, hace un par de días me hice con un router netgear, es el modelo Netgear N600 WNDR3400, después de lidiar un poco con las configuraciones pues lo necesitaba como remplazo a mi viejo router motorola logre hacer que funcionara como repetidor.



Los routers marca Netgear traen una especie de Asistente para configuración llamado "Netgear genie" siendo sincero no es de mucha ayuda si tienes un nivel técnico mínimo realmente hace complicado y laborioso configurar algunas cosas (que están en un par de clicks en otros tipos de routers/modems), en esta guia veremos precisamente como hacerlo funcionar como repetidor Wireless, muchos sugieren usarlo como repetidor usando un cable de cable Ethernet pero es algo que no me agrada mucho prefiero no depender tanto de cables.

Los pasos a seguir para configurar lo como repetidor sera primero, reiniciar los valores de fabrica esto lo haremos con la ayuda de un clip, recomiendo no usar otra cosa que no sea un clip para no dañar el botón que se encuentra en la ranura.

Las cosas que podemos usar para presionar este botón son un clip o un SIM card tray pin

SIM card tray pin (Nokia Logo)

el botón para restaurar las configuraciones de fabrica se encuentra en la parte posterior.


Presionaremos por 10 segundos hasta que las luces se apaguen, para esto el router tendrá que estar conectado a la energía eléctrica y además de eso deberá estar encendido.

Después de eso se encenderán todas las luces de nuevo y procederemos a conectarlo a la PC usando alguno de los puertos de Ethernet que tenga disponibles de preferencia el primero o en cualquiera menos el puerto para Modem ADSL, nuestra intención es entrar al panel de configuracion, ingresaremos la dirección http://192.168.0.1 en la barra de direcciones del navegador esto de ser necesario pues al conectar el puerto de Ethernet en Windows abre el navegador solicitando el acceso.


Lo primero que obtendremos al ingresar a la pagina http://192.168.0.1 sera un Popup Javascript solicitando usuario y contraseña por default es usuario = 'admin' y contraseña = 'password'   después tendremos la ventana de la interfaz de Netgear Genie solicitando que hacer, si probar la conexión, restaurar con un archivo de configuraciones Backup o configurar lo de forma manual, seleccionaremos configurar lo de forma manual y obtendremos la pagina principal similar a esta.


Netgear genie interfaz.
Una vez aquí procederemos a la pestaña de "Avanzado" que se encuentra en la parte de arriba y obtendremos los menús de configuracion avanzada del router, una vez aquí seleccionaremos "Configuración avanzada" y "Repetición inalámbrica. " configuramos la IP del repetidor que debe ser una IP libre dentro del rango del repetidor (puede ser la siguiente después del Gateway ejem. 192.168.0.2)




luego lo que haremos es copiar el "MAC inalambrica de este router"  en formato Hexadecimal y este es el que pegaremos en el router que queremos repetir en el apartado de WiFi bridge o WDS
en la parte de administración, en mi caso seria en la parte de "Bridging"


Esta es la única modificación que haremos dentro del router principal (el router que queremos repetir señal), también otra cosa que debemos hacer es copiar el MAC address del router que queremos repetir esto se encuentra en el apartado de Wireless y el canal para configurar el router Netgear.


Una aclaración es necesario copiar y clonar todas las configuraciones del router Thomson (mi caso) en el router Netgear copiar el nombre de la red, el tipo de encriptacion (WEP) y la contraseña en uso esto lo haremos en el router Netgear en la parte de "Wireless" 


Configuraremos el Nombre de Red, el Canal, el Modo (que es el ancho de banda) y la contraseña, no podremos seleccionar el tipo de encriptacion WEP hasta que cambiemos el "Mode" a un ancho de banda menor (es una curiosidad de este Router) y posible mente también no podamos cambiar la configuracion Avanzada de repetición inalámbrica hasta hacer este paso

curiosamente probé un par de veces antes de realizar esta guia y en algunas ocaciones dejaba realizar los pasos de forma secuencial y en otras ocasiones era necesario primero configurar el apartado de Wireless

Con esto tendríamos funcional el router Netgear como repetidor, una curiosidad es que esto se realiza en la primera parte usando la red de 2.4 Ghz la otra red de 5 Ghz queda disponible tambien para acceder tanto para Repetidor y conexión normal a Internet recomendaría desactivarlo o utilizar una contraseña para proteger la red.






Al parecer es bastante dificil entrar en el recovery del Zenfone, es mas facil acceder al Bootloader y por eso es necesario instalar un recovery pues el recovery que viene por stock es imposible de acceder despues de algun update o cuando se hace un root en el.


Para instalar el recovery necesitaremos bajar el archivo adjunto

Formato: 7z - 7zip
Peso:  20 MB
Host: Uploadable.ch
Password: proxy15

Adjunto:  Link al archivo comprimido 

Link: http://www.uploadable.ch/file/sF8gcHRXTEnn/Zenfone Recovery prxy15.7z

Alternativa: Link al archivo comprimido 

Link: http://www87.zippyshare.com/v/FIXVMUqk/file.html


ademas de esto necesitamos estar en modo Bootloader:

Los pasos son:

1. Apagar el Zenfone de Manera normal
2. Presionar la Tecla de Volumen arriba (Vol +)
3. Presionar la Tecla de Encendido (Power)
4. No soltar ninguna de las teclas Power ni Vol+ hasta ver el logo del Bootloader

 Luego para formatear la particion del recovery:

Los pasos son:

1-. Descomprimir
2-. Iniciar el CMD (con privilegios de Administrador de preferencia)
3-. Escribir el comando: cd <carpeta descomprimida>
4-. Escribir:  fastboot devices (el resultado sera  <Hexadecimal> device)
5-. Escribir : fastboot flash recovery recovery  recovery_philz_t00f.img
6-. Esperar (tarda aprox 6 segundos)
7-. Desconectar y reiniciar -reboot normal-


Video de Referencia:




Siempre es buena idea hacer un Backup de todos nuestros datos importantes, sin embargo en estos pasos solo estamos formateando la particion /recovery/  mientras no toquemos la particion /data/  ni /system/ estaria en teoria todo bien.


Este recovery es experimental es mucho mejor que el TWRP y el TEAMCOFEK, tiene un poco de Lag pero podran acceder a el desde el Bootloader seleccionando la Opcion de Recovery y se reiniciara ya con el Recovery (sin necesidad de Presionar mas Teclas)Si usan el touch recomiendo navegar con los botones de Vol+  y Vol- Para seleccionar.






Hola! ¿como están? Espero que se encuentren muy bien, se que he tardado un poco estaba investigando otras opciones que recientemente llegaron a mi inbox relacionado con otros tipos de plataformas estilo PaaS que mas bien son BaaS (backend As Service) que no se tratan de otra cosa mas que un dashboard para gestionar la base de datos y las notificaciones push de una aplicación móvil algo bastante interesante para los desarrolladores enfocados en moviles(Android, IOS y Windows) que no quieran lidiar con las tripas sueltas de un servidor.


Pero no es lo que me ataña este dia si no continuar con la serie, les mostrare la 4 entrega de este tutorial para programar aplicaciones utilizando 100% código en la nube, ya vimos las dos primeras partes importantes(la primera era una parte introductoria de lo que queríamos o pretendíamos hacer con esta idea). Si no saben de que hablo ingresen a los dos primeros tutoriales y síganlos en secuencia, es información bastante reciente y hasta el dia de hoy (19 de Febrero 2015) no hay cambios en la forma de ingreso ni demás cosas. En esta parte veremos ¿Como hacer para que el codigo que escribamos en Cloud9 se actualice en Openshift? Lamentablemente para este tutorial nos tenemos que poner algo técnicos y explicar que sucederá, el flujo-grama del como se hará el deploy(como se cargara el código que escribamos en Cloud9 se cargue a openshift) es similar al siguiente


Flujo del código de Cloud9 a Openshift

Bien es así como el código parte de Cloud9 que no es mas que el editor de texto que actualiza vía Git al servidor de Openshift dependiendo de la selección que hagamos, sea Hot Deploy o Normal Deploy.

¿Que es Hot Deploy?

Es una forma de depositar el código en el servidor de Openshift sin detener los servicios, es decir que escribe en este mientras las instancias están corriendo, es bastante practico para entornos de producción o desarrollo pues no es necesario esperar que se reinicie el servidor, su principal desventaja es que puede ocasionar errores si se estaban haciendo peticiones al servidor porque todas las peticiones get/post se reinician o tratan de seguir con los archivos fuentes mientras se cambian.

Su principal ventaja es que es bastante rapido pues no tiene que esperar que el servidor de openshift le diga "Estoy apagando todo, espera un momento..." , "Ok ya puedo recibir el código ya apague todo" estas dos frases se traduccen en un par de minutos extras y si somos de frágil paciencia podemos romper algo o alguien.

Por defecto viene desactivado, para activarlo solo es necesario buscar la carpeta:

./openshift/markers/

Ahi crear un nuevo archivo de texto sin extension (sin contenido)

./openshift/markers/hot_deploy

Y con esto queda configurado, bastante sencillo en realidad, no olvidar añadirlo al proyecto mediante Git


$ cd /.../openshift/markers
/../opeshift/markers:$ git add hot_deploy 

para que git lo tome encuenta en el proximo commit y push que realizemos, una vez escrito este archivo en openshift no resta mas empezar a hacer "git add . ;  commit ;  push"

¿Que es Normal Deploy?

El normal deploy es el deploy que viene por defecto en openshift esta orientado para entornos de ejecucion donde tengamos que para el servidor por cada cambio para no afectar a los clientes que se encuentren conectados o usando nuestra aplicación, realmente una sana costumbre y habito seria comenzar con hot_deploy y hasta que la aplicación este configurada por completo(o bien casi terminada) y desactivar para cambiar al normal deploy para no tener problemas con los clientes que escriban o utilicen la aplicacion, normal deploy también tiene un estilo o forma de pensar y es realizar la mayor cantidad de cambios antes de subir el código al servidor a diferencia de hot_deploy que con un par de lineas es suficiente esto por el tiempo de espera para apagar todo y reiniciar



Empezando: Como configurar openshift y cloud9


Vamos a hacer 2 cosas la primera sera instalar las herramientas de Openshift en Cloud9 y la segunda sera hacer una llave SSH publica para poder entrar a la aplicación la llave(public key ssh) si es publica es un hash de varios caracteres alfanuméricos, ademas de eso solicitara acceso en el terminal via correo y password asi que tranquilo, la seguridad no esta comprometida.

Esto lo haremos paso a paso con imágenes porque lo considero menos traumatico y mas didáctico:

Lo primero que haremos sera entrar al Workspace en Cloud9 esperaremos que configure todo si el caso fuere que nunca entramos al Workspace.


Luego buscaremos el terminal situado en la parte de abajo (en el caso de que no sea visto solamente hay que activarlo en el menú "View"  y darle en "Console"


Aquí lo que tenemos que hacer es instalar los archivos de configuración para las herramientas de Openshift, estas están escritas en ruby por suerte cloud9 tiene instalado ruby con su gestor de paquetes gem (todo fríamente calculado)

solo basta iniciar este comando:

$ gem install rhc

y a esperar un par de segundos, no tarda mucho recuerden que ni siquiera usamos nuestro ancho de banda es Cloud9 quien usa su ancho de banda por lo tanto es bastante rápido la descarga.




Luego de eso estamos listos para configurar la llave publica y la llave de acceso local, la llave de acceso loca es útil para no ingresar el correo y contraseña cada vez que realicemos un deploy dentro de la terminal, quedan nuestras credenciales dentro de un archivo en Cloud9.

Para configurar la instancia de Openshift basta con iniciar:

$ rhc setup

Como es un asistente (wizard) no tendremos mas que proporcionarle los datos que requiera según el caso, la primera pregunta que nos detalla es en que servidor esta alojado, como Openshift es una plataforma bastante grande esta segmentada por continentes, sin embargo los Gears pequeños y gratis se encuentran en EEUU por lo que presionar Enter es mas que suficiente.


Después de presionar Enter (no se queden viendo la pantalla esperando que suceda algo, esto es un proceso rápido descuiden) ingresamos nuestro correo y contraseña recuerden que son las credenciales de Openshift y no las de Cloud9


Aquí nos preguntan si queremos generar el token del que les hable mas arriba es el token para dejar por default el acceso y las credenciales dentro del servidor para no tener que escribirles, yo en mi caso escribí "yes"

Despues nos preguntara si queremos subir el código de SSH a los servidores de Openshift, la respuesta es "yes" porque le necesitamos para conectarle y poder clonar el repositorio de Git dentro de Cloud9.



Una vez que tenemos esto no queda mas que clonar el repositorio de Git dentro de Cloud9, es decir recoger todos los archivos y código fuente de Openshift y pegarlos en Cloud9 recuerden que ahí en Openshift hicimos y configuramos una instancia de Node.js (en mi caso) y necesitamos todos los fuentes para poder configurar los y modificar los.


Para recuperar el código de git para clonarlo solo tenemos que ingresar a Openshift y buscar nuestro Gear con Node.js (igual con cualquier framework) y pegarlo dentro del terminal de Cloud9.



En rojo se encuentra la clave para clonar el directorio, esta se pegara dentro de la terminal de Cloud9 quedando de esta manera:


$ git clone ssh://<clave del Gear de Openshift>

La parte de color naranja es para usar la consola de forma remota si utilizan alguna consola remota programa al estilo Openssh, PuTTY si no saben de lo que hablo descuiden no le necesitan utilizaremos solo la consola de Cloud9 para realizar gestiones dentro de la consola SSH de Openshift.

Clonando la llave ssh  desde el servidor de Openshift



Les pedirá permiso para clonar por primera vez desde este servidor, justo donde esta la flecha, no continuara hasta que le demos "yes" después copiara los archivos de Openshift dentro de Cloud9
y se actualizara el arbol de archivos, idéntico a como esta estructurado en el servidor.



Y con esto tenemos todo listo ya solo resta hacer mas pequeña la terminal para tener mas espacio arriba y poder editar los archivos fuentes con mayor comodidad. Tambien no hay que olvidar salvar y cambiar los fuentes usando los comandos de git (add . ~ commit ~ push).



y con esto estamos listos para desplegar nuestro código, los comandos de rhc para obtener la llave publica son necesarios en cada Gear que tengan, en su cuenta.
Con esto termino el ultimo tutorial de esta serie, estaré subiendo un par de trucos relacionados con estos dos entornos  para trabajar un poco mas rápido usando un par de filosofías de desarrollo ágil de software útiles para nosotros que somos programadores solos contra el mundo. Saludos!