El tamaño máximo de un archivo que puedes almacenar en una USB (fat32) es de 2Gb (o 4Gb si estas utilizando LFS).

Si quieres copiar un archivo con un tamaño mayor, en linux, puedes hacerlo mediante el comando split, por ejemplo

split -b 2048 image.iso

que nos producirá una serie de archivos

image.isoaa
image.isoab
image.isoac
...

Después para juntarlos utilizamos el comando cat

cat image.iso* > ~/image.iso

El comando anterior no nos muestra un avance del progreso. Para ver el progreso podemos utilizar el comando pv, para instalarlo ejecuta sudo apt-get install pv y lo utilizas de la siguiente manera

cat image.iso* | pv -s $(du -cb image.iso* | grep total | awk '{print $1}') > ~/image.iso

Fuentes:
http://unix.stackexchange.com/questions/24630/whats-the-best-way-to-join-files-again-after-splitting-them
http://www.catonmat.net/blog/unix-utilities-pipe-viewer/
http://en.wikipedia.org/wiki/File_Allocation_Table#FAT32
http://unix.stackexchange.com/questions/41550/find-the-total-size-of-certain-files-within-a-directory-branch

Anuncios

Para el registro de errores y tareas utilizamos bugzilla. Cuando me asignan una tarea mediante un oficio, adjunto el documento digitalizado. La mayoría de veces no tengo problemas, pero el día de ayer me arrojó un error debido al tamaño del archivo PDF.

Buscando una forma de reducir el tamaño del PDF (digitalizado mediante CamScanner con una iPad) me encontré este post. La forma que me pareció más sencilla y efectiva fue mediante ghostscript.

Primero asegurate de tener instalado ghostscript

sudo apt-get install ghostscript

Simplemente crea un archivo llamado shrinkpdf.sh en tu carpeta ~/bin o cualquiera que se encuentre en el path con el siguiente contenido.

    #!/bin/sh
    dpi=72
    if [ $# -lt 2 ]
    then
       echo "usage: $0 input output [dpi]"
       exit 1
    fi
    if [ $# -gt 2 ]
    then
       dpi=$3
    fi
    echo "Shrinking document..."
    gs  -q -dNOPAUSE -dBATCH -dSAFER \
        -sDEVICE=pdfwrite \
        -dCompatibilityLevel=1.3 \
        -dPDFSETTINGS=/screen \
        -dEmbedAllFonts=true \
        -dSubsetFonts=true \
        -dColorImageDownsampleType=/Bicubic \
        -dColorImageResolution=$dpi \
        -dGrayImageDownsampleType=/Bicubic \
        -dGrayImageResolution=$dpi \
        -dMonoImageDownsampleType=/Bicubic \
        -dMonoImageResolution=$dpi \
        -sOutputFile=$2 \
         $1

hazlo ejecutable con el comando

chmod a+x ~/bin/shrinkpdf.sh

finalmente utilizalo para comprimir cualquier archivo PDF de la siguiente forma

shrinkpdf.sh ~/input.pdf ~/output.pdf 150

El último parámetro le indica la resolución que va a utilizar. 150 dpi en el ejemplo, el cual produce una buena calidad de las imágenes. Puedes omitir este parámetro y por default utilizará una resolución de 72 dpi que produce archivos mucho más pequeños pero pierde calidad.

Necesitaba hacer un reporte con un tipo de letra que no viene instalado en Ubuntu por default, así que investigando un poco encontré que hay varias ubicaciones donde puedes copiar el archivo de la fuente. Estas ubicaciones están definidas en el archivo /etc/fonts/fonts.conf. Por default incluye /usr/share/fonts, /usr/local/share/fonts y /home//.fonts (dónde es tu nombre de usuario).

Lo más fácil es crear la carpeta .fonts, si no existe, en tu carpeta de usuario.

mkdir ~/.fonts

Luego copia ahí las fuentes que deseas instalar.

Finalmente ejecuta el comando

sudo fc-cache -f -v

para actualizar la lista de fuentes disponibles, luego cierra y abre los programas dónde deseas utilizar la fuente o reinicia tu máquina y listo!

Fuentes:
https://wiki.ubuntu.com/Fonts#Manually

Para configurar Apache CXF en una aplicación web, lo puedes hacer de muchas formas. Esto me confunde, ya que hay distintos ejemplos en internet.

Mi forma preferida es configurar un servlet en el archivo web.xml y configurar los servicios en un archivo beans.xml. Un ejemplo básico de estos archivos sería como el siguiente:

web.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<display-name>CXF Servlet</display-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
<init-param>
<param-name>config-location</param-name>
<param-value>/WEB-INF/beans.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>

beans.xml


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/jaxrs
http://cxf.apache.org/schemas/jaxrs.xsd">

<import resource="classpath:META-INF/cxf/cxf.xml" />

<jaxws:endpoint id="HelloSOAP" address="/ws/helloService"
implementor="com.acme.ws.soap.HelloServiceImpl" />

<jaxrs:server id="rest-api" address="/rest">
<jaxrs:serviceBeans>
<bean id="HelloREST" class="com.acme.ws.rest.HelloREST" />
</jaxrs:serviceBeans>
</jaxrs:server>

</beans>

Las dependencias necesarias en Maven son las siguientes:


<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.0.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.6</version>
</dependency>

La dependencia a la librería spring-web es necesaria desde la versión 2.6 de Apache CXF. Las dependencias de SLF4J son opcionales, pero muy recomendables para ver la información del Log. Si quieres saber como configurar SLF4J puedes verlo aquí.

Fuentes:
Apache CXF — Servlet Transport.
http://stackoverflow.com/questions/6349424/apache-cxf-rs-extensions-issue-in-2-4-0

Una copia de seguridad o backup (su nombre en inglés) en tecnología de la información o informática es una copia de seguridad – o el proceso de copia de seguridad – con el fin de que estas copias adicionales puedan utilizarse para restaurar el original después de una eventual pérdida de datos. Fundamentalmente son útiles para dos cosas: Primero: recuperarse de una catástrofe informática, Segundo: recuperar una pequeña cantidad de archivos que pueden haberse eliminado accidentalmente o corrompido. La pérdida de datos es muy común: El 66% de los usuarios de internet han sufrido una seria pérdida de datos.

Ubuntu 12.04 trae por default el software Déjà Dup para realizar los respaldos.

Déjà Dup es una herramienta sencilla para realizar respaldos. Oculta la complejidad de realizar los respaldos CORRECTAMENTE (encriptado, remoto, y regularmente) y utiliza duplicity como su motor de funcionamiento.

Déjà Dup es realmente fácil de utilizar, en unos minutos ya tenía mi respaldo en un disco duro externo (USB). Así que después proseguí con la restauración de mis archivos. Por default, Déjà Dup incluye todos los archivos y carpetas ocultas. Para evitar copiar estas carpetas y sobreescribir los archivos de configuración de algunas aplicaciones (.gconf/; .gnome2/; .mozilla/; etc.) lo que hice fue primero extraer el respaldo en una carpeta (/tmp/backup) y luego hacer un rsync excluyendo las carpetas y archivos ocultos

rsync -av --exclude=".*" /tmp/backup/home/cirovladimir /home/cirovladimir

 

Pues olvide que hay algunas carpetas ocultas que son de suma importancia para mi, los repositorios de git (.git/). Ahora sólo quería restaurar estas carpetas de mi respaldo, pero como extraje el respaldo en una carpeta temporal, los archivos ya no estaban más ahí.

Entonces, ¿cómo restauras una carpeta o archivo específico de un respaldo?

Puedes utilizar el comando

duplicity --no-encryption --file-to-restore home/cirovladimir/Projects/Java/webOS/.git file:///media/ADATA/backups/phenom/ ~/Projects/Java/webOS/.git

 

Si te pide algo de GnuPG passphrase, a pesar de haber utilizado la opción –no-encryption, cancela el comando y primero ejecuta el siguiente

export PASSPHRASE=

 

Si quieres ver el listado de los archivos que tienes en el respaldo

duplicity list-current-files file:///media/ADATA/backups/phenom/

 

Existe una forma mucho más fácil pero que a primera vista no es tan obvio. Primero ve a la carpeta donde quieres restaurar tu archivo en nautilus y da clic en el menú File->Restore missing files… (debes tener disponible la unidad donde hiciste tu respaldo)

Te mostrará un listado de archivos y carpetas que están en tu respaldo pero que no se encuentran en la carpeta actual. Selecciona las que quieras restaurar y continua con el asistente.

Fuentes:
http://es.wikipedia.org/wiki/Respaldo
https://help.ubuntu.com/community/DuplicityBackupHowto
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=497071

Si tienes un proyecto de Maven en Eclipse, existen varias carpetas y archivos que se autogeneran a partir del archivo pom.xml. Entonces, ¿qué carpetas y archivos debemos ignorar? Bueno, esto depende mucho del proyecto y los archivos que tengas, pero básicamente debemos tener un archivo “.gitignore”, en la raíz del proyecto, con las siguientes líneas

.gwt/
.settings/
target/
.project
.classpath

 

Si hiciste un commit de una carpeta o archivo que deseabas ignorar, aquí se explica como removerlo.

Fuentes:
http://stackoverflow.com/questions/8169941/should-eclipse-specific-files-in-an-vcs-be-ignored-if-using-maven 

La mayoría de veces que hacemos un commit, involucra más de un archivo. Si queremos revertir los cambios hechos únicamente en un archivo haríamos lo siguiente:

git checkout 8f969536… path/to/file

donde ‘8f969536…’ es el hash de la versión del archivo que queremos. Si lo que quieres es la última versión que hiciste commit, puedes ejecutar el comando:

git checkout HEAD path/to/file

Fuentes:
http://stackoverflow.com/questions/215718/how-do-i-reset-revert-a-specific-file-to-a-specific-revision-using-git
http://scottr.org/presentations/git-in-5-minutes/