jueves, 9 de junio de 2016

Git Encoding ISO-8859-1

Para poder usar caracteres especiales del encoding ISO-8859-1, debemos editar el encoding por default en nuestro repositorio, esto se hace editando el archivo config que se enciuentra en la carpeta .git, agregando la siguiente linea:

[i18n]
commitencoding = ISO-8859-1

Esto resuelve el problema de usar ñ o tildes en nuestro código.


miércoles, 20 de abril de 2016

Solucionar Error "No se puede cargar el archivo o ensamblado"

En un desarrollo de una aplicación web, al momento de compilar me marcaba error "No se puede cargar el archivo o ensamblado" por una librería Newtonsoft.Json, ya que la versión que utilizaba era más nueva que la que usa el cliente .NET para Dropbox. Investigando un poco encontré la solución al problema y esta consiste en direccionar la versión de la librería anterior a la nueva versión que es la que se necesita, editando el archivo App.config agregando las siguientes lineas:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"  culture="neutral" />
      <bindingRedirect oldVersion="7.0.0.0" newVersion="8.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>        
  </runtime>

Donde se especifica la redirección de la versión anterior 7.0.0.0 a la nueva 8.0.0.0.

viernes, 5 de febrero de 2016

Colaborar en un proyecto de Github

Supongamos que encontramos una libreria en Github que no resuelve algún problema de nuestro código, pero queremos agregar funcionalidad o mejorar alguna rutina de la misma, enseguida enlistaremos los pasos para hacer un pull request de algún proyecto en github.

1.- Ir a la página del proyecto y crear un fork de éste.


2.- Ahora ya tenemos un fork del proyecto en nuestra cuenta.


3.- El siguiente paso es clonar el repositorio:

git clone git@github.com:yorch81/php-telegram-cli-client.git

4.- El siguiente paso es agregar la URL del repositorio original y verificamos.

git remote add upstream git@github.com:zyberspace/php-telegram-cli-client.git
git remote -v

5.- Una vez que agregamos el repositorio original, jalamos los últimos cambios.

git pull -r upstream master

6.- Después creamos una rama, para no modificar la rama master.

git checkout -b quit_whites

7.- Ya estando en nuestra rama creada, podemos empezar a hacer cambios y subirlos a nuestro repositorio y subimos los cambios a nuestra rama creada.

git add --all
git commit -m "Mis cambios"
git push origin quit_whites

8.- Ahora vamos a github, seleccionamos nuestra rama y pulsamos el botón "Compare & pull request" para notificar al propietario del repositorio original que queremos subir algunos cambios, esta acción nos manda a un formulario donde podemos agregar descripciones de los cambios que hemos enviado.

jueves, 4 de febrero de 2016

Publicar libreria en nuget.org

Nuget es un repositorio de librerías para .Net y mono, lo primero que necesitamos para publicar alguna librería es crear una cuenta en https://www.nuget.org/ o usar alguna cuenta de microsoft.

Una vez creada la cuenta debemos instalar nuget en nuesta máquina, podemos ir al siguiente enlace y descargarlo https://docs.nuget.org/create/creating-and-publishing-a-package, para  instalarlo podemos solamente copiarlo al HOME de Windows (C:/Windows/).

Ya teniendo instalado nuget, copiamos la libreria que queramos subir a un directorio cualquiera, dentro de ese directorio creamos un folder llamado lib y copiamos la librería. El siguiente paso es abrir una linea de comando (cmd.exe) en la carpeta donde copiamos la librería y ejecutamos el siguiente comando:

C:/v3sdk/nuget spec V3Sdk.dll

Donde V3Sdk.dll es la librería que queremos publicar, esto nos genera un archivo V3Sdk.dll.nuspec que es un XML que debemos editar con las especificaciones de nuestra libreria.

Ya editado el archivo nuspec ejecutamos el siguiente comando para crear el paquete:

C:/v3sdk/nuget pack V3Sdk.dll.nuspec

El resultado de este comando nos genera el archivo V3Sdk.dll.1.0.0.nupkg, que es el paquete que podemos subir a nuget.org.

Podemos ir a las siguiente url https://www.nuget.org/packages/upload para agregar nuestro paquete, escogemos el paquete generado y damos click en upload.


El siguiente paso es editar las especificaciones y aceptar para publicar.


Una vez publicado el paquete nuget tarda alrededor de 5 minutos en hacer pública la libreria.

jueves, 7 de enero de 2016

Replicación con MySQL

Enseguida veremos como configurar un server maestro y un esclavo para replicar una base de datos con MySQL, usando los siguientes pasos:

1.- Lo primero que debemos hacer es eligir un server maestro, éste es el que alberga la base de datos que queremos replicar, buscamos el archivo my.cnf que normalmente se encuentra en la ruta /etc/mysql/.

2.- Ya que encontramos el archivo de configuración lo abrimos con nuestro editor favorito, debemos asegurarnos que nuestro server escuche en todas las direcciones IP, por lo tanto debemos buscar y comentar la siguiente linea del archivo:

#bind-address = 127.0.0.1

3.- Enseguida buscamos las siguientes lineas para configurar el server-id, el archivo de log de la base de datos y la base de datos que queremos replicar.

server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = bin

4.- Enseguida reiniciamos el servicio de MySQL para cargar la nueva configuración, en mi caso con Ubuntu, sería el siguiente comando.

sudo service mysql restart

5.- Una vez que reiniciamos el servicio  de MySQL, debemos crear un usuario con privilegios de replicación, nos conectamos a MySQL y ejecutamos el siguiente comando.

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '';

6.- Enseguida ejecutamos los siguientes comandos para conocer el status de la replicación.

USE bin;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000009 |      317 | bin          |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

6.1.- Copiamos los resultados de las columnas File y Position, ya que esos datos nos servirán para configurar el esclavo.

7.- Debemos de generar un respaldo de la base de datos que deseamos replicar, en este caso dicha base de datos se llama bin, y lo montamos en el servidor esclavo y ejecutamos en siguiente comando:

SLAVE STOP;

8. Una vez que montamos en respaldo en el servidor esclavo, debemos configurar éste para que sepa que es un esclavo, así que editamos las siguientes lineas del archivo my.cnf del esclavo.

server-id=2
master-host=192.168.1.2
master-user=slave
master-password=password
master-connect-retry=60
replicate-do-db=bin 

Donde master-host es la dirección IP del Servidor Maestro, master-user es el usuario con privilegios de replicación creado en el master y replicate-do-db es la bd que deseamos replicar.

9.- Una vez que configuramos el servidor esclavo, ejecutamos los siguientes comandos con los datos que obtuvimos en el paso 6.

CHANGE MASTER TO MASTER_HOST='192.168.1.2', MASTER_USER='slave', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000009', MASTER_LOG_POS=317;

START SLAVE;

10.- Ahora que ya quedó configurado el esclavo, ejecutamos alguna sentencia de actualización en el maestro, para ver la replicación en acción.

sábado, 2 de enero de 2016

Usando Monodoc

Por razones de compatibilidad de algunas herramientas de desarrollo, dejé de usar windows en mi máquina, y por lo tanto, para desarrollar aplicaciones .NET me veo obligado a usar Mono como compilador y MonoDevelop como IDE.

Enseguida veremos como generar la documentación de proyecto de una librería desarrollada con MonoDevelop.

1.- Lo primero que hay que hacer es compilar el proyecto desde MonoDevelop, y copiamos el comando de compilación ya que usaremos éste para generar la documentación en formato XML agregando la opcion /doc de la siguiente manera:

/usr/lib/mono/4.5/mcs.exe /noconfig /debug:full /debug+ /optimize- /out:obj/Debug/netDb.dll absLayer.cs absMySql.cs absOdbc.cs absSqlServer.cs netDb.cs Properties/AssemblyInfo.cs netDbTest.cs Logger.cs obj/Debug/.NETFramework,Version=v4.5.AssemblyAttribute.cs /target:library /define:"DEBUG;TRACE" /nostdlib /reference:/usr/lib/mono/4.5/System.dll /reference:/usr/lib/mono/4.5/System.Xml.Linq.dll /reference:/usr/lib/mono/4.5/System.Data.DataSetExtensions.dll /reference:/usr/lib/mono/4.5/Microsoft.CSharp.dll /reference:/usr/lib/mono/4.5/System.Data.dll /reference:/usr/lib/mono/4.5/System.Xml.dll /reference:packages/NUnit.2.6.4/lib/nunit.framework.dll /reference:packages/MySql.Data.6.9.6/lib/net45/MySql.Data.dll /reference:packages/log4net.2.0.3/lib/net40-full/log4net.dll /reference:/usr/lib/mono/4.5/System.Core.dll /reference:/usr/lib/mono/4.5/mscorlib.dll /warn:4 /doc:netdb.xml

Se creará el archivo de documentación netdb.xml.

2.- Con  mdoc generamos la documentación completa del proyecto, con el siguiente comando:

mdoc update -o docs -i netdb.xml bin/Debug/netDb.dll

3.- Exportamos la documentación a formato HTML ejecutando el siguiente comando:

mdoc export-html -o html docs/

Ahora tenemos la documentación del proyecto en el directorio html.




miércoles, 3 de diciembre de 2014

Maven Básico

Maven es una herramienta para administrar proyectos en Java, que nos permite descargar las dependencias que necesitemos de algún repositorio, por default: http://mvnrepository.com/, algunos comandos básicos son los siguientes:

Para crear un proyecto de tipo jar, ejecutamos el siguiente comando:

mvn archetype:generate -DgroupId=com.examples -DartifactId=Examples -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Donde com.examples es el nombre del paquete que generará, con una clase App para iniciar la aplicación, y Examples es el nombre de nuestro proyecto. Este comando creará un archivo pom.xml que es el archivo de configuración de Maven.

Para instalar en nuestro repositorio local alguna dependencia que no podamos ubicar en el repositorio por default, podemos ejecutar el siguiente comando:

mvn install:install-file -Dfile=gtranslateapi-1.0.jar -Dpackaging=jar -DgroupId=com.gtranslate -DartifactId=gtranslateapi -Dversion=1.0 

Donde gtranslateapi-1.0.jar es el jar a instalar com.gtranslate es el grupo al que pertenece y gtranslateapi es el nombre que se le da al artefacto.

Para generar un proyecto de Eclipse desde Maven podemos ejecutar el siguiente comando:

mvn eclipse:eclipse

Este comando crea el archivo de propiedades de Eclipse, así como el classpath de las dependencias que se indiquen en el archivo pom.xml.

Para compilar y generar el proyecto podemos ejecutar los siguientes comandos:

mvn compile
mvn package

Para generar la documentación del proyecto con javadoc:

mvn javadoc:javadoc