sábado, 20 de diciembre de 2014

Insertando referencias en latex

Recientemente me fue necesario usar latex para iniciar mi tesis de licenciatura. Para los que no estén familiarizados, latex de acuerdo con wikipedia "es un sistema de composición de textos, orientado a la creación de documentos escritos que presenten una alta calidad tipográfica. Por sus características y posibilidades, es usado de forma especialmente intensa en la generación de artículos y libros científicos que incluyen, entre otros elementos, expresiones matemáticas."

El problema que se me presentó, no sabía cómo compilar mi archivo principal para poder incluir las referencias, el glosario y los acrónimos en el texto.

Busqué por mucho tiempo información en la web, pero sin resultados satisfactorios, finalmente encontré un ejemplo bastante práctico, así que ahora os presento una solución más acertada de lo que estaba buscando en ese entonces.

Modifiqué dicho ejemplo para que aceptara el español, y estos son los pasos a seguir:

En el ejemplo, el editor que usé se llama "Texmaker" desconozco si las funciones con el que este editor cuenta, también la tengan otros editores, he usado también el editor kile, texstudio, lyz, gummi, texworks, y funcionan muy bien. Todos los editores antes mencionados son gratuitos, de modo que los pueden descargar y utilizar libremente:

Aquí también hago uso de la línea de comandos, de tal modo que es necesario usar linux, o al menos que tengan en windows (para usuarios de windows) un emulador de una terminal.

archivo principal:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{listings}
\makeatletter
\usepackage{times}
\usepackage{setspace}
\usepackage{anysize} 
\usepackage{bm}
\usepackage[spanish]{babel}
\usepackage{multirow}
\usepackage{ae}
\usepackage{url}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{color}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{latexsym}
\usepackage{epsfig}
\usepackage{multirow}
\usepackage{cite}
\usepackage{apacite}
\usepackage{fancyhdr}
\usepackage{appendix}
\usepackage[acronym]{glossaries}
\makeglossaries
\glossarystyle{altlistgroup} 
\include{glosarioacronimos}
\renewcommand{\glossaryname}{Glosario}
\renewcommand{\acronymname}{Acrónimos}
\begin{document}
\title{Cómo crear glosario con lista de acrónimos}
\author{Merino Merino Jesús Fernando}
\date{\today}
\maketitle
%se incluye un archivo en donde estará el cuerpo del texto, así como
%las referencia hacía los acrónimos
\include{temaX}
%Print the glossary
%\printacronyms % not working
\printglossary[type=\acronymtype]
%\printnoidxglossary[type=\acronymtype]
Texto entre la lista de acrónimos y el glosario
%\printglossaries
%\printglossary
\printglossary[title=Glosario,toctitle=Glosario]
\addcontentsline{toc}{section}{Glosario}
\addcontentsline{toc}{section}{Acrónimos}
\bibliographystyle{apacite}
\bibliography{bibliografia}
\end{document}

archivo de referencias llamado bibliografia

@ARTICLE{Alfonso2010a,
 author = {M. Alfonso and B. Bernardo and C. Carlos and D. Domingo},
 title = {El problema de los gatos y los perros},
 journal = {Mascotas},
 year = {2010},
 volume = {50},
 pages = {112-115}
}
@ARTICLE{Alfonso2010b,
 author = {M. Alfonso and M. Marta and N. Nuria},
 title = {Mi viaje a {EEUU}},
 journal = {Revista de viajes},
 year = {2010},
 volume = {14},
 pages = {50-56}
}

@ARTICLE{Patricio2011,
 author = {A. Patricio},
 title = {Una estrella rosa en el fondo del mar},
 journal = {El mar},
 year = {2011},
 volume = {3},
 pages = {1071-1090}
}

@ARTICLE{Zacarias2009,
 author = {R. Zacarias and G. Graciela},
 title = {?`{C}u\'al te gusta m\'as?},
 journal = {Flores},
 year = {2009},
 volume = {5},
 pages = {45-49}
}
@BOOK{Coulouris,
    author  =   {Coulouris, G., and Dollimore, J., and Kindberg, T.},
    title   =   {Sistemas Distribuidos. Conceptos y dise\~no},
    publisher=  {Pearson Educaci\'on, S. A.},
    address =   {Madrid},
    year    =   {2001},
    edition = {3},
}
@ARTICLE{Oms1,
 author = {Centro de prensa},
 title = {Obesidad y sobrepeso},
 journal = {Organizaci\'on Mundial de la Salud},
 year = {2012},
 volume = {311},
 pages = {1-2}
}

@misc{oms2,
   author = {OMS},
   title  = {Obesidad y sobrepeso},
   year   = {2014},
   url    = {http://www.who.int/mediacentre/factsheets/fs311/es/},
   note   = {[Accesado 5-Octubre-2014]}
}
@misc{wiki:xxx,
 author = {Wikipedia},
 title = {Redefinición de planeta de 2006 --- Wikipedia{,} La enciclopedia libre},
 year = {2010},
 url = {http://es.wikipedia.org/w/index.php?title=Redefinici%C3%B3n_de_planeta_de_2006&oldid=32754396},
 note = {[Internet; descargado 2-febrero-2010]}
}

@misc{wiki:xx1,
 author = {Wikipedia},
 title = {Redefinición de planeta de 2006 --- Wikipedia{,} La enciclopedia libre},
 year = {2010},
 url = \url{http://es.wikipedia.org/w/index.php?title=Redefinici%C3%B3n_de_planeta_de_2006&oldid=32754396},
 note = {[Internet; descargado 2-febrero-2010]}
}

@misc{sololapiz,
   author = {Jason Brubaker},
   title  = {Inking a Graphic Novel?},
   year   = {2010},
   howpublished    = {\url{http://www.remindblog.com/2010/02/18/inking-graphic-novel/}},
   note   = {[Accesado 9-Feb-2012]}
}

@misc{webpage1,
   author = {Jason Brubaker},
   title  = {Inking a Graphic Novel?},
   year   = {2010},
   url    = {http://www.remindblog.com/2010/02/18/inking-graphic-novel/},
   note   = {[Accesado 9-Feb-2012]}
}

@ARTICLE{CENETEC,
 author = {CENETEC},
 title = {Prevenci\'on y diagn\'ostico de sobrepeso y obesidad en ni\~nos y adolescentes en el primer nivel de atenci\'on},
 journal = {CENETEC},
 year = {2012},
 pages = {1-2}
}

archivo con nombre: glosarioacronimos.bib
%Definición de términos
\newglossaryentry{prevalencia}{
    name=prevalencia,
    description={En epidemiología, proporción de personas que sufren una enfermedad con respecto al total de la población en estudio}
}
\newglossaryentry{maths}{
    name=mathematics,
    description={Mathematics is what mathematicians do}
}
%Definición de acrónimos

\newacronym{oms}{OMS}{Organización Mundial de la Salud}
\newacronym{cenetec}{CENETEC}{Centro Nacional de Excelencia Tecnológica en Salud}
\newacronym{imss}{IMSS}{Instituto Mexicano del Seguro Social}
\newacronym{issste}{ISSSTE}{Instituto de Seguridad y Servicios Sociales de los Trabajados del Estado}
\newacronym{sedesol}{SEDESOL}{Secretaría de Desarrollo Social}
\newacronym{dof}{DOF}{Diario Oficial de la Federación}
\newacronym{imc}{IMC}{Índice de Masa Corporal}

\newacronym{ensanut}{ENSANUT}{Encuesta Nacional de Salud y Nutrición}
archivo de tema incluido llamado temaX.tex
\section{Sección de referencias}
Una referencia se considera al fuente de donde se obtiene información acerca de algo, por ejemplo, podemos citar libros de la siguiente manera, decir, de acuerdo con \cite{Alfonso2010a} la manera de citar correctamente es de este modo. 
Las referencias que se mencionen directamente en el texto, son las únicas que aparecen en la sección de bibliografía o referencias. Si se tiene un archivo en donde están todas las entradas bibliográficas, pero si no se hacen referencias directas a ellas, no apareceran en el texto al momento de compilar.

En lo personal, prefiero compilar primero las referencias y después el glosario y los acrónimos, para evitar problemas de referenciados dentro del texto.

La compilación de citas se realiza de la siguiente manera:
\begin{enumerate}
\item Ir a la compilación del archivo principal, seleccionar "BibTex", clic en compilar.
\item Ir de nuevo a la compilación del archivo, seleccionar "Compilación rápida" luego clic en compilar.
\item Realizar los pasos 1 y 2 hasta que en el archivo en la parte final muestre correctamente las referencias.
\end{enumerate}
La compilación de referencias se tiene que realizar cada vez que se agreguen nuevas referencias, si por alguna razón ustedes agregan o modifican datos bibliográficos de una referencia, entonces es necesario volver a compilar el archivo con los pasos anteriores, para que la información de referencias se actualice.

\textbf{Un tip: cuando se considere necesario incluir referencias bibliográficas al final del texto, pero sin hacer mención de dichas citas dentro del texto, realizan lo siguiente, en alguna parte del texto, citen los autores que deseen, luego compilen conforme a los pasos anteriores, después eliminen las citas que previamente había incluido, es decir, las citas que ustedes no mencionan directamente en el texto, pero que sí las quieren agregar en su base de referencias, ahora vuelvan a compilar pero de manera normal, es decir, directamente en "Compilación rápida" sin usar el modo " Bitex, de esa manera se compilan las referencias pero no se hacen mención dentro del texto, al mismo tiempo es incluido dentro de las citas referenciadas al final del documento"}
Ejemplo:
\cite{Alfonso2010a, Alfonso2010b, Patricio2011, Zacarias2009, Coulouris, Jesus, Boria, Castillos, Deitel1, Tanenbaum, Norman, Bernstein, Simel, Oms1, oms2, wiki:xxx, wiki:xx1, sololapiz, webpage1, CENETEC, DOF, MartinK, Majem, Casademunt, Casanova, Barranco, Bonada, Lagua}
\section{Sección con entradas del glosario}
Indicar que una palabra está dada en el glosario, es necesario  declarar ahí previamente, es decir, no se puede hacer referencia a una palabra en el glosario que no se haya dado de alta previamente en el archivo del glosario, lo mismo ocurre con los acrónimos.
La compilación de los glosario y acrónimos usando Texmaker se realiza de la siguiente manera:
\begin{enumerate}
\item Ir al menú herramientas
\item Seleccionar la opción "Abrir línea de comandos"
\item Una vez que se abre la consola escribir lo siguiente
 \begin{enumerate}
 \item pdflatex aquiNombreArchivoPrincipal
 \item makeglossaries aquiNombreArchivoPrincipal
 \item pdflatex aquiNombreArchivoPrincipal
 \end{enumerate}
\end{enumerate}

Después de hacer eso, cierre la consola, y compile el archivo usando la opción "Compilación rápida".
La \Gls{prevalencia} en personas con obesidad y sobrepeso es aterradora. La \glspl{prevalencia} es mínima comparada con la del año anterior.
\section{Sección con acrónimos}


En México instituciones como: La \acrfull{sedesol}, El \acrfull{imss}, El \acrfull{issste}, La Secretaría de Salud, así como el Gobierno Federal, han puesto en marcha diferentes programas para combatir los problemas de obesidad y sobrepeso. Los programas propuestos por estas instituciones básicamente recomiendan dietas, ejercicios físicos, y algunos consejos para mantener el peso en un nivel saludable para la salud.
para compilar los archivos de referencias usar la opción de bibtex varias veces y luego usar la opción compilación rápida


Para compilar los glosarios y acrónimos
hacer lo siguiente desde consola:
pdflatex nombredelarchivoprincipal
makeglossaries aquiNombreArchivoPrincipal
pdflatex nombredelarchivoprincipal
luego compilar en modo compilación rápida y listo 
Para descargar el ejemplo completo clic aquí

jueves, 18 de diciembre de 2014

Instalar netbeans en linux

¿Qué es NetBeans?

NetBeans es un proyecto exitoso de código abierto con una gran base de usuarios, una comunidad en constante crecimiento, y con cerca de 100 socios (¡y creciendo!) en todo el mundo. Sun MicroSystems fundó el proyecto de código abierto NetBeans en junio 2000 y continúa siendo el patrocinador principal de los proyectos.
Al día de hoy hay disponibles dos productos: el NetBeans IDE y NetBeans Platform.
NetBeans IDE es un entorno de desarrollo - una herramienta para que los programadores puedan escribir, compilar, depurar y ejecutar programas. Está escrito en Java - pero puede servir para cualquier otro lenguaje de programación. Existe además un número importante de módulos para extender el NetBeans IDE. NetBeans IDE es un producto libre y gratuito sin restricciones de uso.
También está disponible NetBeans Platform; una base modular y extensible usada como estructura de integración para crear grandes aplicaciones de escritorio. Empresas independientes asociadas, especializadas en desarrollo de software, proporcionan extensiones adicionales que se integran fácilmente en la plataforma y que pueden también utilizarse para desarrollar sus propias herramientas y soluciones. 
(Ver https://netbeans.org/index_es.html)
Para instalar netbeans es necesario primero descargar el instalador desde su página de descargas https://netbeans.org/downloads/index.html

Después de haber descargado el instalador ir al directorio donde se instalará, ya que si lo instalan desde el sitio donde fue guardado al descargar, ahí creará las carpetas donde se instalará.
cd /user/local
 Estando en el directorio anterior ejecutar el siguiente comando
sudo sh nombre-version-netbeans.sh
presionar enter y la instalación comenzará...
Clic en el botón "Customize" para seleccionar los componentes a instalar:

Elijan los componentes que necesiten y clic en siguiente hasta finalizar la instalación, si o tienen instalado el jdk o jre les marcará error, para solucionarlo necesitarán descargarlos e instalarlos.

Las rutas de instalación se eligen aquí:
 Pueden cambiar la ruta de instalación si gustan, pero no es recomendable.

La ruta de Apache Tomcat es el siguiente:

Clic en siguiente a estilo windows para finalizar la instalación.

Imagen del entorno general de netbeans.


Para desinstalar ir a la ruta de
cd /user/local
 o dónde sea que lo hayan instalado y ejecutar:
sudo sh uninstall.sh

Y clic en siguiente....

miércoles, 17 de diciembre de 2014

Instalar paquetes de texlive para la edición de pdf en latex

\mathbf{L\!\!^{{}_{\scriptstyle A}} \!\!\!\!\!\;\; T\!_{\displaystyle E} \! X} (escrito LaTeX en texto plano) es un sistema de composición de textos, orientado a la creación de documentos escritos que presenten una alta calidad tipográfica. Por sus características y posibilidades, es usado de forma especialmente intensa en la generación de artículos y libros científicos que incluyen, entre otros elementos, expresiones matemáticas.
LaTeX está formado por un gran conjunto de macros de TeX, escrito por Leslie Lamport en 1984, con la intención de facilitar el uso del lenguaje de composición tipográfica, \mathbf{T\!_{\displaystyle E} \! X}, creado por Donald Knuth. Es muy utilizado para la composición de artículos académicos, tesis y libros técnicos, dado que la calidad tipográfica de los documentos realizados con LaTeX es comparable a la de una editorial científica de primera línea. (Wikipedia)

La instalación de estos paquetes se pueden realizar de diferente manera dependiendo el sistema operativo solo mencionaré cómo hacerlo en linux:
Para más información en otros sistemas operativos consulten el sitio oficial de texlive
1.- Usando la red de conexión a internet directamente ejecutar el siguiente comando para fedora.
sudo yum -y install texlive-collection-latex texlive-collection-latexextra texlive-collection-science texlive-collection-latexrecommended texlive-collection-genericextra texlive-collection-genericrecommended texlive-collection-fontsrecommended tex-pst-optexp texlive-epstopdf-bin
2.- Pueden descargarse el iso del dvd de paquetes desde http://tug.org/texlive/files/texlive2014.iso.torrent montar el iso e iniciar la instalación

3.- Editores de latex
geany
sudo yum -y install geany
texstudio
sudo yum -y install texstudio
gummi
sudo yum -y install gummi
texmaker
sudo yum -y install texmaker
emacs
sudo yum -y install emacs
kile
sudo yum -y install kile
texworks
sudo yum -y install texworks

http://tug.org/texlive/acquire-iso.html
http://tug.org/texlive/quickinstall.html
http://tug.org/texlive/doc/texlive-en/texlive-en.html#tlisoinstall

lunes, 15 de diciembre de 2014

Instalación y configuración de xampp en linux


¿Qué es XAMPP?
XAMPP es el entorno más popular de desarrollo con PHP

XAMPP es una distribución de Apache completamente gratuita y fácil de instalar que contiene MySQL, PHP y Perl. El paquete de instalación de XAMPP ha sido diseñado para ser increíblemente fácil de instalar y usar.

¿Qué es XAMPP?
XAMPP es el entorno más popular de desarrollo con PHP

XAMPP es una distribución de Apache completamente gratuita y fácil de instalar que contiene MySQL, PHP y Perl. El paquete de instalación de XAMPP ha sido diseñado para ser increíblemente fácil de instalar y usar.

¿Cómo instalo XAMPP?
    Elige la arquitectura para tu Linux OS, versión de 32-bits o de 64-bits.

    Cambia los permisos al instalador

sudo chmod 755 xampp-linux-*-installer.run

    Ejecuta el instalador

sudo ./xampp-linux-*-installer.run

Eso es todo. XAMPP está ahora instalado en el directorio /opt/lampp.

¿Cómo inicio XAMPP?

    Para iniciar XAMPP simplemente ejecuta este comando:

sudo /opt/lampp/lampp start

Deberías ver ahora algo como esto en tu pantalla:

    Starting XAMPP 1.8.2...
    LAMPP: Starting Apache...
    LAMPP: Starting MySQL...
    LAMPP started.
    Ready. Apache and MySQL are running.

    Si recibes algún mensaje de error visita nuestra comunidad para obtener ayuda

    Ten en cuenta que hay además una herramienta gráfica que puedes usar para controlar tus servidores fácilmente. Puedes iniciar esta herramienta con los siguientes comandos:

cd /opt/lampp
sudo ./manager-linux.run

¿Cómo paro XAMPP?
    Para parar XAMPP simplemente ejecuta este comando:
sudo /opt/lampp/lampp stop    Deberías ver ahora algo como esto en tu pantalla:

    Stopping XAMPP 1.8.2...
    LAMPP: Stopping Apache...
    LAMPP: Stopping MySQL...
    LAMPP stopped.

Problemas que se presentan

Este problema puede ser por dos razones, las contraseñas están mal, el puerto está ocupado por otro servicio etc.

Revisar los archivos de configuración que se muestran a ejecutar los comandos
cd /opt/lampp
sudo ./manager-linux.run

Abrir el archivo y colocar las contraseñas o cambiar de puerto.
Si el problema persiste, dar permisos a la carpeta.

sudo chmo a+w /opt/lampp/htdocs/

Para poder ejecutar sus sitios.


Más información:

sábado, 13 de diciembre de 2014

Eliminar y actualizar repositorio en fedora

¿ Que es un repositorio ?

Un repositorio, depósito o archivo es un sitio centralizado donde se almacena y mantiene información digital, habitualmente bases de datos o archivos informáticos < Wikipedia >, pero para que nos entendamos, un repositorio es un lugar en Internet donde se almacena información, en el caso de los repositorios Linux esta información son programas.
Cada distribución tiene unos repositorios en los que están almacenados los programas diseñados para esta distribución, por lo que si necesitamos instalar un programa no tenemos que acceder al caótico Internet y buscarlo, lo podemos hacer directamente desde estos repositorios. Estos repositorios se mantienen por un equipo de la misma distribución, por lo que normalmente no vamos a tener ningún problema a la hora de instalar los programas. Ademas si algún software que tenemos instalado mediante este método es actualizado en los repositorios seremos avisados de la actualización disponible.
Para cada distribución tenemos un repositorio oficial en el que tenemos los programas mencionados, pero este no es el único repositorio al que podemos acceder, ya que cada sistema tiene una lista de repositorios disponibles que podemos modificar añadiendo o quitando mas tipos de repositorios ( multimedia, seguridad, para desarrolladores, etc.).

Pues bien, estos archivos es necesario actualizarlos con frecuencia, ya que algunos pueden cambiar de versión a versión en cada SO linux.

En fedora los repositorios están almacenados en  la ruta /etc/yum.repos.d/ ahí es donde los podemos configurar, eliminar ect.

Para eliminar un repositorio, podemos ubicarnos en la ruta especifica y usar rm  o podemos hacer de la siguiente manera:

rm /etc/yum.repos.d/repo-file.repo

## OR just rename it (without repo file extension) ##

mv /etc/yum.repos.d/repo-file.repo /etc/yum.repos.d/repo-file.repo.bak

Recordar hacer esto bajo su responsabilidad:::

viernes, 12 de diciembre de 2014

Actualizar fedora 20 a 21

La versión más reciente de fedora es "21" y se llama Twenty One. Aquí pueden descargar el iso en sus diferentes opciones instalables. https://getfedora.org/

En la página https://fedoraproject.org/wiki/FedUp/es pueden encontrar todo lo referente de cómo actualizar fedora 20 a 21, o de cualquier otra versión a esta nueva versión disponible.

La actualización desde consola se hace de la siguiente manera ojo, este método sólo aplica usando una conexión a internet, en la página de fedup pueden encontrar las diferentes opciones de actualización, aquí solo explico este método porque es más recomendable:

Abrir una consola en modo root y teclear las siguientes líneas de comando.

Instalando fedup para usarlo como entorno de actualización:
yum --enablerepo=updates-testing install fedup

Buscar actualización en el sistema
yum update fedup fedora-release

Iniciar la instalación usando la red en el --product=[workstation cloud server nonproduct] son las opciones que pueden elegir
fedup --product=workstation --network 21

Y comenzará la instalación: tendrán un salida parecida  a esta:


Y verifiquen que no se descargue su laptop en caso de usar laptop, estén pendientes en caso de que requiera permisos adicionales, en caso de haber error en la descarga de paquetes reinicien la instalación, y no apaguen la máquina de manera directa, cuando termine les pedirá reiniciar y eligen la primera opción.

domingo, 7 de diciembre de 2014

Agregar dirección a la variable PATH

En este pequeño tutorial se explicará como agregar una ruta o dirección a la variable PATH de forma permanente para poder ejecutar los scripts que queramos sin tener que poner toda su dirección.

El PATH son las variables de entorno, es decir donde van a estar todos los scripts que llamo desde la consola por ejemplo mysql, llama al script de mysql el cual ejecuta la aplicación. Ocurre lo mismo cuando nosotros creamos scripts ya sea para automatización de tareas o el motivo que sea. Si pero que tiene que ver nuestros scripts con el PATH?  La verdad es que mucho ya que en el path es donde se almacena la ruta del script para no tener que andar escribiendo toda la ruta cada vez que queramos ejecutarlo. Por ejemplo si yo tengo un script en mi /home/juan que se llama copia.sh que realiza una copia de seguridad por ejemplo, si no lo tengo en el path cada vez que necesito ejecutarlo tengo que escribir su ruta:

sh /home/juan/copia.sh

Si lo tuviese en el path para ejecutarlo seria sh copia.sh, independientemente de donde esté situado. Para este cometido hay dos formas de hacerlo
  • Que solo este en la sección actual
  • Que quede para siempre en el path
Para el primer caso abrimos la consola y ponemos export PATH=$PATH:/HOME/JUAN/ y listo ya podemos llamar a nuestro script desde cualquier sitio con sh copia.sh. El problema es que solo dura hasta que cerremos sesión.
Para el segundo caso editamos el archivo /etc/environment y agregamos al final, justo antes de las comillas la direccion del script, en nuestro caso seria :/HOME/JUAN los dos puntos tambien por que es el operador de concatenación de strings. Listo si reiniciamos el equipo ya tenemos nuestro script en el path

Referencias:
http://detoodoo.blogspot.mx/2007/01/linux-tarea-programada-crontab.html
http://hackurbano.net/2008/12/03/agregar-variables-al-path-java_home/
http://www.forosdelweb.com/f27/linux-agregar-directorio-path-101978/

viernes, 5 de diciembre de 2014

Algunos trucos usando Latex

Colocar las imágenes donde queremos
Para colocar una imagen exactamente en una posición debes poner en el preambulo de tu documento al paquete float

\usepackage{float}

y cambiar el parámetro h por H (mayuscula)

Ejemplo:

\begin{figure}[H]
\begin{center}
\includegraphics[height=2.0in,width=2.0in]{image1.eps}
\caption{Figura 1}
\label{fig:figura1}
\end{center}

\end{figure}

y se posicionara donde tu pusiste la imagen y no donde a LaTeX se le antoje.

LaTeX: Incluir capítulos/secciones no numerados en el índice

Para incluir capítulos o secciones no numerados en el índice se puede usar

\chapter*{Nombre del capítulo}

o también podría usarse:

\section*{Nombre de la sección}

se obtienen capítulos o secciones sin numeración, y no son incluidos en el índice.
Para que aparezcan el el índice hay que usar
\chapter*{Nombre del capítulo}
\addcontentsline{toc}{chapter}{Nombre del capítulo}
y
\section*{Nombre de la sección}

\addcontentsline{toc}{chapter}{Nombre de la sección}

domingo, 16 de noviembre de 2014

El mejor editor para código Latex

Si bien es cierto, nosotros nos adaptamos a las herramientas informáticas que se nos presenta para desarrollar nuestras actividades de día a día. Las herramientas que solemos usar son variada, cada una de ellas cumpliendo nuestras necesidades, como pueden ser fácil de usar, interfaces llamativas, etc.
Siempre existe una herramienta con más ventajas que otra, tal es el caso que me ha pasado. Comencé a crear textos con latex, con motivos que iniciar la escritura de tesis. La primer herramienta que me presentaron fue winedit, el detalle con esta herramienta fue que solo funciona para windows, algo que no me gustó. Luego usé gummi, un editor bastante sencillo y cubre muchas necesidades básicas al usar latex. Más tarde usé kile, texmaker, pero como mi experiencia con latex ya había aumentado, éstas herramientas cubrían pocas propiedades para poder ser un editor completo.

Encontré TexStudio, éste software cumple con todos los requisitos que un escritor en latex necesitaría.
Aquí les dejo una imagen de la interfaz de este programa:

Dependiendo de la plataforma del sistema operativo que estén usando, así también dependerá la instalación, no indico cómo instalarlo, ya que, no me parece necesario.

Bueno, si desean probarlo y ver por ustedes mismo la gran diferencia de usar Texmaker a TexStudio, tendrán que descargarlo.
Texmaker está basado de TexStudio, de tal modo que hayarán mucha similitud, pero también hay una gran diferencia.

Software para linux

Yo sé que cada distribución basada en Linux tiene instalado un gestor de paquetes en el que podemos buscar lo que necesitemos. Pero no hace daño conocer otros software que quizá hayan pasado desapercibido.
Buscando un paquete en la web, me topé con este blog (http://nerdsmagazine.com/best-linux-software/) en el que encontré varios programas muy útiles al usar linux, así que pueden visitarlo y probar las opciones que se muestran ahí, en caso de que ya estén usando uno o más de esos software, entonces no puedo hacer nada por ustedes.

Buen día, gracias por visitar este blog...

jueves, 6 de noviembre de 2014

Habilitar ssh únicamente cuando sea necesario

En la mayoría de las distribuciones linux, ssh vienen activado por default. Si usan fedora tienen una seguridad más, ya que en fedora selinux no permite las conexiones, es necesario darle permisos en el firewall. Pero en las demás distribuciones puede ser un punto vulnerable para la seguridad. Algún hacker con un poco de experiencia en contraseñas podría descifrar la contraseña de root en caso de que en las reglas de ssh estén activas para el usuario root.

Para evitar que ssh inicie al encender el sistema ejecutar el siguiente comando, los comandos se ejecutan con usuario que tenga privilegios de administrados o sudoers:
systemctl disable sshd.service
Si después deseas que ssh inicie cuando inicia el sistema entonces realiza los siguiente:
systemctl enable sshd.service
Para iniciar el demonio de ssh realizar lo siguiente:
systemctl start sshd.service
 o puedes usar este otro:
/etc/init.d/sshd restart
Para finalizar el demonio de ssh ejecutar el siguiente comando:
systemctl stop sshd.service
o puedes usar este otro comando:
/etc/init.d/sshd stop

Deshabilitar sesiones de root de ssh en fedora

Los sistemas Linux vienen con el acceso de usuario root por defecto habilitado para realizar conexiones por ssh de forma remota. Por razones de seguridad, no es una buena idea tener ssh con acceso root permitido a usuarios no autorizados. Debido a que cualquier hacker puede tratar de hacer ataques de fuerza bruta de la contraseña y acceder a su sistema.

Deshabilitar SSH Root Login

Es recomendable tener otra cuenta que usted usa con regularidad y cambie a usuario root mediante el uso de 'su -' cuando sea necesario. Antes de empezar, asegúrese de que tiene una cuenta de usuario normal y con eso su - o sudo para tener acceso de root.

Utilizamos archivo de configuración maestro sshd para deshabilitar el acceso del superusuario, así puede disminuir y prevenir que un hacker tenga acceso root a tu máquina Linux. También veremos cómo habilitar el acceso root de nuevo, así como la manera de limitar el acceso ssh basado en la lista de usuarios.
Para deshabilitar el acceso del superusuario, abra el archivo principal de configuración ssh, que está en /etc/ssh/sshd_config con su editor favorito, gedit, nano, vi, vim.

# gedit /etc/ssh/sshd_config
Busque la siguiente línea en el archivo.

# PermitRootLogin no

Retire el '#' en el principio de la línea.
 
 PermitRootLogin no

A continuación, tenemos que reiniciar el servicio del daemon SSH.

# /etc/init.d/sshd restart
Ahora intenta iniciar sesión con el usuario root, obtendrá "Acceso denegado" error.

login as: root
Access denied
root@172.31.41.51's password:


Así que, de ahora en adelante, si está registrado como usuario normal, deberá acceder como tal y luego usar el comando 'su' para cambiar al usuario root.

Iniciar sesión como: nameuser
Acceso denegado
nameuser@172.16.25.126 's contraseña:
Último acceso: Mar 16 Oct 2013 17:37:56 de 172.16.25.125
[nameuser@machine ~] $ su -
Contraseña:
[root @machine ~] #


Habilitar SSH Root Login
Para habilitar el registro de ssh root, abra el archivo /etc/ssh/sshd_config

# gedit /etc/ssh/sshd_config
Busque la siguiente línea y ponega el "#" al principio y al guardar el archivo.

# PermitRootLogin no

Reinicie el servicio sshd.

# /etc/init.d/sshd restart
Ahora le permitirá iniciar sesión con el usuario root.

Limitar SSH conexiones del usuario

Si usted tiene gran número de cuentas de usuario en los sistemas, entonces tiene sentido que limitemos el acceso a distancia a aquellos usuarios que realmente lo necesitan. Abra el archivo /etc/ssh/sshd_config file.

# gedit /etc/ssh/sshd_configAñadir una línea AllowUsers en la parte inferior del archivo con un espacio separado por la lista de nombres de usuario. Por ejemplo, nameuser usuario y sheena ambos tienen acceso a la remota ssh.

AllowUsers nameuser sheena

Y eso es todo para permitir conexiones de manera adecuada y evitar un ataque por ssh.

miércoles, 5 de noviembre de 2014

Buscar depedencias de paquetes en fedora

Hace poco estaba instalando VirtualBox desde un archivo rpm, es decir, no lo hice desde lo repositorios oficiales. Al instalar un paquete desde los repositorios oficiales las dependencias de dicho paquete se instalan correctamente, pero cuando no es así, da un dolor de cabeza tremendo.  
Aquí les presento una página de la que pueden descargar las dependencias de paquetes:

Cambiar la fecha de creación de un archivo en linux

Si necesitamos cambiar la fecha y hora de creación de un archivo en Linux, podemos utilizar el comando
touch
Vamos a realizar un ejemplo donde cambiaremos la fecha y la hora de un archivo llamado “test.txt” que crearán en el directorio “Descargas”. Si consultamos la fecha del archivo  veremos que tiene la fecha del día que lo hemos creado:
Para consultar esta información ejecutamos el siguiente comando:
ls -lt
Obtendrán una salida parecida a la siguiente:


Vamos a cambiar la fecha y hora del archivo a las 9.25 del 30 de agosto. Para ello usaremos el comando touch con el parámetro -t. El formato que usaremos será de yyyy/mm/dd/hh/mm (año, mes, día, hora y segundos):
touch -y yyyymmddhhmm test.txt
El comando para nuestro ejemplo quedaría así:
touch -t 201208300925 test.txt
Y una vez ejecutado, nuestro fichero tendrá los nuevos valores:
Podemos comprobarlo usando el siguiente comando:
ls -lt
El comando touch admite más parámetros y permite realizar otras acciones. Si quieres saber más, te recomendamos que consultes el manual en tu consola:
man touch
Y eso es todo amigos, ahora a engañar al profesor, al decirle que la tarea la hicieron un día antes... suerte con eso...

lunes, 3 de noviembre de 2014

Copiar CD a mp3 en Linux

Hace poco me encargaron copiar un paquete de CD de canciones en wma y convertirlos a mp3. El problema era que no sabía cómo hacerlo en linux, bueno encontré un herramienta bastante útil para copiar CD en formato mp3.

La aplicación se llama:

Para instalarla ejecutar el siguiente comando:
sudo yum -y install sound-juicer

Instrucciones

  1. Inicia la aplicación antes mencionada
  2. Haz clic en "Edit" (Editar) y en "Preferences" (Preferencias) en la ventana Sound Juicer que abre automáticamente con el programa.
  3. Haz clic en "Output Format" (Formato de salida) al fondo de la pantalla y selecciona "MPEG Layer 3 Audio" para que sea salida en mp3.
  4. Selecciona la carpeta en la que deseas guardar las canciones copiadas
  5. Haz clic en "Close" (Cerrar) para cerrar la ventana. Tus preferencias se guardarán.
  6. Inserta tu CD de Audio en tu unidad CD de la computadora.
  7. Haz clic en "Extract" (Extraer) en la aplicación. El disco automáticamente se extraerá a la ubicación específica.
Y eso es todo, gracias por visitar.

sábado, 1 de noviembre de 2014

Un blog con programas en C

Estaba buscando en la web un blog en el que hubiese al menos 50 de los programas que más nos piden los profesores en las materias de programación estructurada, tenía pensando hacer los programas y pegarlos en mi blog, pero encontré este: http://cprogrammingcodes.blogspot.mx/ aquí pueden encontrar más de 200 programas que usualmente nos solicitan los profesores en las clases que se lleven programación estructurada en c.

Si no han cerrado el blog tienen suerte y copien mientras puedan...

jueves, 30 de octubre de 2014

Script para espiar el contenido de dispositivos USB y copiarlo a la PC


Hace poco quería un escritp en bash que me indicara cuando la carga de la bateria de mi laptop estuviera llena, no tuve mucha suerte con la búsqueda, sin embargo encontré un escritp en bash que realiza las siguientes  funciones:
  1. Detectar cuando se conecta un dispositivo USB a la computadora
  2. Copiar todo el contenido de ese dispositivo hacia la computadora
Básicamente con esas funciones podemos hacer un sin fin de cosas:
Descripción de los archivos y lo que hace:
1. Crear la carpeta /home/.USBDRIVES/
2. Comprobar cada 5 segundos si hay algún dispositivo USB (o CD/DVD) conectado al ordenador.
3. En caso de que esté alguno conectado, creará una carpeta dentro de /home/.USBDRIVES/ con el nombre del USB (por ejemplo: memoria-2gb) y además, copiará todos los archivos .doc, .pdf, etc., hacia esta carpeta que recién acaba de crear.
4. En caso de que no haya ningún USB conectado, simplemente esperará 5 para volver a verificar.
El script en bash y los archivos que son copiados lo pueden descargar desde aquí
El script debe ser ejecutado de preferencia como root para que su funcionamiento no se vea limitado o bien con un usuario que sea sudo.
Para que el script pueda funcionar sin ningún tipo de problemas, lo mejor es que sea iniciado con privilegios administrativos (root), así como es obvio que se necesita que se inicie junto al ordenador, de esta forma nos aseguramos que si el ordenador es reiniciado o apagado, cuando vuelva a iniciar el script estará ahí funcionando, listo para extraer de cualquier USB lo que deseamos ;)
1. Supongamos que tenemos ambos archivos en /opt/ (/opt/usb-spy.sh y /opt/usb-spy.files), debemos darle privilegios de ejecución:
sudo chmod +x /opt/usb-spy.sh
2. Abrimos el archivo /etc/rc.local :
sudo nano /etc/rc.local
3. En él escribimos arriba de la línea final (exit 0) lo siguiente:
/opt/usb-spy.sh &
4. Ahora presionamos [Ctrl]+[X] para guardar y salir del archivo, presionamos [S] o [Y] (en dependencia del idioma del sistema) y luego [Enter]. Esto bastará para que se guarden los cambios que hicimos.
Y listo, esto bastará para que el script se inicie como root cuando encendamos el ordenador.
Es importante verificar que el archivo usb-spy.files esté en el mismo directorio de usb-spy.sh

miércoles, 29 de octubre de 2014

Cómo saber los puertos abiertos o conexiones establecidas a nuestra computadora

Cursando la materia de seguridad en centros de informática, me hizo curiosear un poco más acerca de las múltiples amenazas y riesgos que se pueden generar al usar internet sin precaución.
En una de mis tantas búsquedas, quería saber cómo ver la lista de servicios y puertos que éstos servicios se habían establecido en mi laptop.
Para esto usé la aplicación: netstat
Por ejemplo, para mostrar todos los datos de conexiones que tenía abierta hice lo siguiente:
sudo netstat -punta
Al ejecutar el comando me muestra la siguiente información.
Como pueden apreciar se puede ver el protocolo, datos recibidos, puerto e IP de escucha así como el puerto e IP de la conexión que se permitan, si es una conexión que ya está establecida o no, PID, etc. En fin, muchos datos que son útiles y que se pueden terminar en caso de ser necesario.
Bueno es solo un pequeño tip que espero les sea de utilidad
Saludos y no dejen de visitar...

Puertos de los servicios más conocidos en Linux

Recientemente quería saber qué puertos estaban siendo ocupados por aplicaciones en mi sistema operativo, pero sobre todo quería saber cuáles eran normales y cuáles no, para terminar el proceso en caso de que hubieran cosas "raras" en los procesos.
Buscando un poco en la web, encontré la siguiente lista de puertos asociados a algunas aplicaciones o servicios, esto los puede sacar de apuros cuando detecten actividad inusual.

Aquí te presentamos los puertos más conocidos por orden de menor a mayor:
21 FTP
22 SSH
23 Telnet
25 smtp (correo saliente)
53 dns (resolución de nombres)
80 web (servidor web)
110 pop (correo entrante)
143  imap
443  web seguro (https)
993 imap seguro
995 correo entrante seguro (ssl)
2082  CPanel
 2083  CPanel seguro (https)
 2086  WHM
 2087  WHM seguro (https)
 2095  Webmail cpanel
 2096  Webmail cpanel (https)
 3306  Mysql
 8443  Plesk

Para saber qué puertos están a la escucha visita este post

Comando w

¿w? ¿Eso es un comando? Es lo que os estaréis preguntando muchos al ver el titulo de este post, y la respuesta afirmativa es sí, existe el comando w.
Resulta que hace poco, estaba buscando cómo saber qué usuarios se han conectado a mi laptop, ya sea en modo remota o local. Bueno, pues este comando nos informa acerca de esos usuarios conectados.
Esto nos ayuda a detectar anomalías en inicios de sesión en nuestra máquina. En cuestión de seguridad lo pueden usar.
La salida que genera es similar a esta:

Sigan leyendo....

martes, 28 de octubre de 2014

Agunos trucos para Latex

Cuando se escribe en Latex, a veces es necesario renombrar algunas secciones o títulos que vienen por default. Aquí les muestro algunos que he utilizado:
Estas opciones van después del apartado que dice: \begin{document}
\renewcommand\contentsname{Título para el índice}
\renewcommand\listfigurename{Título para lista de figuras}
\renewcommand\listtablename{Título para lista de tablas}
\renewcommand\refname{Título para bibliografía}
\renewcommand\abstractname{Título para el abstract}
\renewcommand{\tablename}{Nombre que aparece abajo de las tablas}
\renewcommand{\appendixname}{Apéndices}
\renewcommand{\appendixtocname}{Apéndices}
\renewcommand{\appendixpagename}{Apéndices}
\renewcommand{\glossaryname}{Índice para el Glosario}
\renewcommand{\acronymname}{Índice para los Acrónimos}

No mostrar una sección o capitulo en la tabla de contenido:
basta con agregar un * de este modo
\section*{Nombre de la sección}

Agregar una entrada a la tabla de contenido sin que haya una sección como tal en el documento:
\addcontentsline{toc}{section}{Glosario}
\addcontentsline{toc}{section}{Acrónimos}

Modificar los márgenes del documento esto va después del \begin{document}
\onehalfspacing \marginsize{3cm}{2.5cm}{2.5cm}{2.5cm}

En alguna ocasión intenté agregarle un superíndice a una palabra, como decir,
kilómetros cuadrados, pero no funcionó de la manera normal, así que encontré esta solución:
metros (kg/m\textsuperscript{2})




viernes, 24 de octubre de 2014

Sistema de control Takagi-Sugeno en C

/*
 * Autor: A. L. I. Fernando Merino
 * Nombre del archivo: sistemaTakgi.c
 * Descripción: Simula un sistema difuso, usando el método de Takgi-Sugeno
 * genera un archivo con los  puntos en pares (x,y) para graficar en gnuplot,
 * si desean graficar adicionalmente los puntos que estén utilizando generen
 * un archivo extra con los puntos y grafiquenlos, para comparar resultados
 * 24-octubre-2014*/

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <math.h>

/*define el total de comandos que se enviará a gnuplot*/
#define NUM_COMANDOS 5

void seleccionGaussiana();
double gaussiana(double c, double gama, double x);
double gaussDerecha(double c, double gama, double x);
double gaussIzquierda(double c, double gama, double x);
void graficarPuntosDesdeArchivo(char *cad, char *archivo, char *archivo1, char *archivo2);

int main(){
 printf("\n\tFunciones de Takgin-Sugeno\n");
 seleccionGaussiana();
    return 0;
}

void seleccionGaussiana(){
 FILE * puntGI = fopen("gaussIzquierda.txt", "w");
 FILE * puntGD = fopen("takagiSugeno.txt", "w");
 FILE * archivoPuntos = fopen("gaussiana.txt", "w");
 double x,cenGaus,anchoGaus,inicio, fin;
 double cenIzq,anchoIzq,cenDer,anchoDer;
 double ug=0,ugi=0,ugd=0,y1=0,y2=0,y3=0,y;
 /*datos que se pueden configurar:
  * muestreo [0,20]
  * las variables a y b se pueden leer desde teclado, a tiene que ser menor a b
  * opcionalmente también se puede especificar el perido de muestreo*/
 printf("Ingrese los siguientes datos:\n");
 printf("Inicio de la muestra: ");
 scanf("%lf",&inicio);
 printf("Fin de la muestra: ");
 scanf("%lf",&fin);
 printf("\nConfigure la Gaussiana Izquierda:");
 printf("\nIngresa el centro: ");
 scanf("%lf",&cenIzq);
 printf("Ingresa ancho a los lados del centro: ");
 scanf("%lf",&anchoIzq);
 
 printf("\nConfigure la Gaussiana central:");
 printf("\nIngresa el centro: ");
 scanf("%lf",&cenGaus);
 printf("Ingresa ancho a los lados del centro: ");
 scanf("%lf",&anchoGaus);
 
 printf("\nConfigure la Gaussiana derecha:");
 printf("\nIngresa el centro: ");
 scanf("%lf",&cenDer);
 printf("Ingresa ancho a los lados del centro: ");
 scanf("%lf",&anchoDer);
 
 for(x=inicio;x<=fin;x+=0.01){
  /*obtiene el valor de las membresías de cada valor de x*/
  ugi = gaussIzquierda(cenIzq,anchoIzq,x);
  ug = gaussiana(cenGaus,anchoGaus,x);
  ugd = gaussDerecha(cenDer,anchoDer,x);
  /*obtiene las y*/
  y1=0.214285714*x+2.642857143;
  y2=-0.416666667*x+0.75;
  y3=0.342857143*x-1.528571429;
  /*se susitituye en la fórmula final*/
  y=((ugi*y1)+(ug*y2)+(ugd*y3))/(ugi+ug+ugd);
  /*se guarda en un arhivo de texto con los puntos (x,y)*/
  fprintf(puntGD, "%lf %lf \n", x, y);
 }
 fclose(archivoPuntos);
 fclose(puntGD);
 fclose(puntGI);
 graficarPuntosDesdeArchivo("set title \"Graficando funciones\"",
        "plot \"takagiSugeno.txt\" using 1:2 with lines",
        "replot \"puntosAnalizar.txt\" using 1:2 with lines",
        "replot \"gaussIzquierda.txt\" using 1:2 with lines");
}

/*funciones finales de membresia*/
double gaussiana(double c, double gama, double x){
 double ux = 0, expo=0;
 expo = pow((x-c)/gama,2);
 ux = pow(2.7182818284,-0.5*expo);
 return ux;
}

double gaussIzquierda(double c, double gama, double x){
 double ux = 0, expo=0;
 expo = pow((x-c)/gama,2);
 ux = pow(2.7182818284,-0.5*expo);
 if(x<=c){
  ux=1;
 }
 return ux;
}

double gaussDerecha(double c, double gama, double x){
 double ux = 0, expo=0;
 expo = pow((x-c)/gama,2);
 ux = pow(2.7182818284,-0.5*expo);
 if(x&gtc){
  ux=1;
 }
 return ux;
}

void graficarPuntosDesdeArchivo(char *cad, char *archivo, char *archivo1, char *archivo2){
 int i;
 /*lista de comandos para ejecutar y configurar la visualización que tendrán
     * los puntos en la gráfica con gnuplot*/
    char * configGnuplot[] = {cad, 
                                "set ylabel \"----grado de membresía---&gt\"",
                                "set xlabel \"----Universo X---&gt\"",
                                archivo,
                                archivo1,
                                archivo2
                               };
    /*Se crea una archivo de tipo popen, es una tebería IPC que se usa, para
     * ejecutar gnuplot y enviarle el archivo a graficar*/
    //FILE * ventanaGnuplot = popen("gnuplot -persist", "w");
    FILE * ventanaGnuplot = popen("gnuplot -persist", "w");
    // Executing gnuplot commands one by one
    for (i=0;i<NUM_COMANDOS;i+ +){
  fprintf(ventanaGnuplot, "%s \n", configGnuplot[i]);
 }
}