viernes, 30 de marzo de 2007

Configurar permisos para cuenta ftp

Hay que tener en cuenta que el usuario y el grupo de la carpeta destinada a ftp (y que tiene que ser la misma que la existente en el archivo de configuración) debe tener los correspondientes permisos de escritura/lectura/ejecucion

chmod 741 html/ftp/ quedando de la siguiente forma
drwxr----x 2 usuario grupo 4096 Mar 30 22:20 ftp

chgrp chown

wikipedia chgrp
chgrp -R nuevogrp directorio
wikipedia chown
chown -R nuevousr directorio

Control de usuarios y contabilidad de recursos

Fichero /etc/passwd
En cada linea puedes encontrar todos estos parametros (JOÉ):

  • nombre de cuenta
  • contraseña cifrada,
  • identificador numerico
  • identificador de grupo
  • informacion convencional
  • directorio raiz de la cuenta
  • interprete de comandos asignado
¿Cómo crear y modificar cuentas?
http://www.linux-party.com/TutorialLinux/linux_files/linux5.html


Configurar Servidor FTP

Cómo configurar tu servidor FTP desde línea de comandos en un sistema operativo Linux.


Para que nuestro Linux tenga la posibilidad de que se le conecten por FTP para realizar transferencia de ficheros, necesita tener instalado y configurado un servidor de FTP. En este artículo vamos a ver el modo de configurar un servidor de FTP por línea de comandos. No pasaremos a describir lo que es un servidor de FTP ya que en el tutorial de FTP ya lo explicamos.



Configuración

Una vez instalados comenzaremos a configurarlo a nuestro gusto. Comenzaremos con la lista de usuarios que podrán tener acceso al servidor FTP:

Para configurar este parámetro necesitaremos abrir el archivo /etc/ftpusers que se encuentra en /etc/. En este archivo pondremos ver una lista con los usuarios que tienen acceso.

Pero en realidad el archivo más importante para la configuración del servidor es el /etc/proftpd.conf que contiene todos los parámetros de configuración, entre otras cosas la ubicación de los archivos compartidos. Dentro de este archivo se encuentran los siguientes parámetros, que podemos modificar dependiendo del uso que le queramos dar.

anonymous.allow

Con este parámetros se habilita o deshabilita el usuario anónimo.
Anonymous.allow=trae (usuario anónimo habilitado)
Anonymous.allow=false (usuario anónimo deshabilitado)

Write_enable

Indica si una carpeta tiene permiso de escritura o no. En otras palabras indica si a una carpeta se la pueden subir archivos o no.
Write_enable=trae (si tiene permiso de escritura)
Write_enable=false (no tiene permiso de escritura)

ftpd_banner

Permite poner un mensaje de bienvenida a los usuarios cuando se conecten
ftpd_banner=mensaje

chroot_local_user

Permite o no a los usuarios locales el acceso a la maquina
chroot_local_user=trae
chroot_local_user=false

Para decirle al servidor fe FTP que usuarios tienen permiso para acceder tenemos que coger la ruta de el archivo antes comentado donde se encontraba la lista de usuarios (vsftpd.user_list)
Para ello en el archivo de configuración pondríamos algo como esto:
Chroot_list_file=/etc/vsftpd.user_list

Básicamente con estos comandos podrás configurar tu servidor FTP en Linux sin ningún problema.

Arrancar y detener el servidor de FTP

Ya solo nos queda arrancar el servidor para lo cual utilizaremos los siguientes comandos.

Para arrancar el servicio: /etc/init.d/proftpd Start

Para parar el servicio: /etc/init.d/proftpd stop

Para reiniciar el servicio: /etc/init.d/proftpd restart

Conclusión

Este artículo esta escrito haciendo referencia a Linux red hat 9.0 pero las configuraciones y los comandos son mas o menos los mismo en las distintas distribuciones.

En qué consiste llevar un buen mantenimiento de un servidor en linux

Aquí un listado de las características que debería tener el mantenimiento de un servidor linux:

  1. Copias de seguridad incrementales
  2. Replicación de información
  3. Incluir los demonios en el arranque del servidor
  4. Procesos periodicos (crontab)
  5. crear una imagen inicial con los programas necesarios
  6. control de usuarios y contabilidad de recursos
  7. controlar spam - /var/mail

¿qué más se os ocurre ?

Codificacion de fichero de internacionalizacion.properties

Después de mucho cavilar, es decir de averigüar si podía ser el problema de jboss, de mi MACOSX, del JVM, o del editor de java (eclipse o intellij idea), probé a guardar nuevamente el archivo .properties con la codificación final dentro del paquete .war y funcionó. El "culpable" era ANT, y concretamente su tarea copy que había que indicarle la codificación a seguir.

Solucion: columnas dinamicas en un af:iterator

La solución, aparente chapuza pero es que con c:if no funcionaba, consiste en utilizar el iterator varias veces (esto serían las celdas de la tabla ) y renderizar la fila en función de #{vs.index mod 3==[numero de fila del 0 al 2]}


<h:panelGrid columns="4">
<af:outputText value="#{messages.clases}"/>

<af:iterator value="#{curso.clasesList}" var="clase" first="0" varStatus="vs">
<afh:rowLayout rendered="#{vs.index mod 3==0}">
<af:outputText value="#{clase.nombre}" escape="false"/>
</afh:rowLayout>
</af:iterator>
<af:iterator value="#{curso.clasesList}" var="clase" first="1" varStatus="vs">
<afh:rowLayout rendered="#{vs.index mod 3==1}">
<af:outputText value="#{clase.nombre}" escape="false"/>
</afh:rowLayout>
</af:iterator>

<af:iterator value="#{curso.clasesList}" var="clase" first="2" varStatus="vs">
<afh:rowLayout rendered="#{vs.index mod 3==2}">
<af:outputText value="#{clase.nombre}" escape="false"/>
</afh:rowLayout>
</af:iterator>
</h:panelGrid >

mysql character set --> JAPones

links interesantes:
http://www.javaworld.com/javaworld/jw-09-2004/jw-0906-unicode.html?page=2
http://www.java2s.com/Code/Java/Development-Class/StringConverterUnicode.htm
http://forums.mysql.com/read.php?103,144564,146204#msg-146204
http://galaxy.andromda.org/forum/viewtopic.php?t=4386&view=next&sid=43ab0c5645142a2b937d8e5fb1040cbe
http://www.oop-reserch.com/mysql.html

probar con charset:big5
collation:big5_bin

jueves, 29 de marzo de 2007

Comandos útiles para saber el juego de caracteres en tus bases de datos de mysql

(Character Sets and Collations in MySQL)

mysql> SHOW CHARACTER SET;
mysql> SHOW FULL COLUMNS FROM test;
mysql> ALTER TABLE test CHARACTER SET latin1;

Permisos en linux - chmod

Algunos ejemplos de utilización

para ejecutables
unos permisos adecuados serían:
rwxr-x--x lo que indica todos los permisos para propietario y ejecución para el resto

al utilizar el comando chmod se puede hacer de forma relativa o absoluta.
Al hacerlo de forma relativa lo que se hace es modificar los permisos existentes con expresiones del tipo:

  • o-w # esto sería quitar el permiso de escritura al propietario
  • g+w # esto daria permiso de escritura a grupo
De forma absoluta:
** si se quiere hacer a un directorio y a todos los que cuelgan de él hay que utilizar chmod -R XXX dir


· chmod 600 directorio asigna permisos de lectura y escritura al propietario
· chmod 444 directorio asigna permisos de lectura o todos
· chmod 777 directorio todos los permisos a todos


r w xr w xr w x
Permisos Actuales 4+2+1 4+0+1 0+0+0

7 5 0

r w x r w x r w x
Cambiar a: 4+2+1 4+0+1 4+0+1

7 5 5


Por último aquí esta una tabla que permite saber rápidamente que valor asignar como permiso a cualquiera de los tres modos.

Val.Permisos
0---
1--x
2-w-
3-wx
4r--
5r-x
6rw-
7rwx



Permisos en directorios:
el derecho de ejecucion [x] en los directorios indica derecho de paso por el directorio a los ficheros o directorios contenidos en él. El derecho de lectura [r] da derecho a conocer su contennido. Puede ser útil el no dar derecho de lectura y si de ejecución, de esa forma permitiremos el paso por el directorio restringiendo el conocimiento de su contenido.
El permiso de escritura [w] indica si se puede crear/modificar/eliminar su contenido

Bits especiales:
Los últimos 3 bits relacionados con los permisos.
setuid- hace un set de id de usuario
setgid - hace un set de id de grupo
sticky - fija ej programa permanentemente en la memoria (esto es una propiedad de los virus quedarse como residentes en la memoria)

Guía para Crear Archetypes

Creando archetypes podemos definir nuestra aplicación mínima. Es decir , una aplicación que contendrá los recursos mínimos que sabemos utilizaremos. Se podría definir como automatizar nuestros propios frameworks.

http://maven.apache.org/plugins/maven-archetype-plugin/examples/archetype.html


me acaban de dejar este link que podemos ir mirando y que tiene buena pinta:
http://www.chuidiang.com/chuwiki/index.php?title=Categor%C3%ADa:Maven

miércoles, 28 de marzo de 2007

apt-get

...apt?.

APT son las siglas de Advanced Package Tool. APT es un sistema de gestión de paquetes de software desarrollado por el APT Team del Proyecto Debian bajo licencia GNU/GPL.

Es el sistema de gestión de paquetes más avanzado en la actualidad y el que má flexibilidad y potencia posee para entornos de red.

... apt-get?.

``apt-get'' es la utilidad para usar desde la línea de órdenes que hace de interfaz entre el usuario y APT.



http://www.linuca.org/body.phtml?nIdNoticia=39

Comprimir/descomprimir

* Ficheros tar
Empaquetar: tar -cvf archivo.tar /dir/a/comprimir/
Desempaquetar: tar -xvf archivo.tar
Ver contenido tar -tf archivo.tar

* Ficheros gz
Comprimir: gzip -9 fichero
Descomprimir: gzip -d fichero.gz

* Ficheros bz2
Comprimir: bzip fichero
Descomprimir: bzip2 -d fichero.bz2

gzip ó bzip2 sólo comprimen ficheros [no directorios, para eso existe tar]. Para comprimir y archivar al mismo tiempo hay que combinar el tar y el gzip o el bzip2 de la siguiente manera:

* Ficheros tar.gz
Comprimir: tar -czfv archivo.tar.gz ficheros
Descomprimir: tar -xzvf archivo.tar.gz
Ver contenido: tar -tzf archivo.tar.gz

* Ficheros tar.bz2
Comprimir: tar -c ficheros | bzip2 > archivo.tar.bz2
Descomprimir: bzip2 -dc archivo.tar.bz2 | tar -xv
Ver contenido: bzip2 -dc archivo.tar.bz2 | tar -t

* Ficheros zip
Comprimir: zip archivo.zip ficheros
Descomprimir: unzip archivo.zip
Ver contenido: unzip -v archivo.zip

* Ficheros lha
Comprimir: lha -a archivo.lha ficheros
Descomprimir: lha -x archivo.lha
Ver contenido: lha -v archivo.lha
Ver contenido: lha -l archivo.lha

* Ficheros arj
Comprimir: arj a archivo.arj ficheros
Descomprimir: unarj archivo.arj
Descomprimir: arj -x archivo.arj
Ver contenido: arj -v archivo.arj
Ver contenido: arj -l archivo.arj

* Ficheros zoo
Comprimir: zoo a archivo.zoo ficheros
Descomprimir: zoo -x archivo.zoo
Ver contenido: zoo -L archivo.zoo
Ver contenido: zoo -v archivo.zoo

* Ficheros rar
Comprimir: rar -a archivo.rar ficheros
Descomprimir: rar -x archivo.rar
Ver contenido: rar -l archivo.rar
Ver contenido: rar -v archivo.rar

Descargar archivos desde el web a traves de la consola

  wget -c ftp.juan.es/pub/programas/netscape.rpm
wget -r ftp.juan.es/pub/fotos/paisajes
wget -rL www.8052.com
El primer ejemplo se bajaría el fichero netscape.rpm directamente al directorio actual, pudiendo cortarlo en cualquier momento con CTRL+C para continuar su download otro dia desde el punto en que se quedó (como reget, NetVampire, etc) utilizando el mismo comando. El segundo ejemplo se bajaría todos los ficheros que hubieran en el directorio pub/fotos/paisajes del ftp especificado, y el tercero se bajaría la web www.8052.com completa (incluyendo fotos, subdirectorios, etc) para poder navegar por ella en el disco duro offline.

Reiniciar Mysql

Para reiniciar MySql
/etc/init.d/mysql stop
/etc/init.d/mysql start

Archivo de configuración de mysql en /etc/mysql/my.cnf

Despues en /etc/mysql/my.cf comentar skip-network y reiniciar el mysql

Re: Como reisntalo mysql?

La cosa mejor es salvar los datos primero
cp -R /var/lib/mysql /home/back-up
cp /etc/mysql/my.cnf /home/back-up

despues borras realmente todo con:
apt-get remove --purge mysql*

que te borra todas estas cosas
mysql
mysql-base
mysql-client
mysql-client-4.1
mysql-common
mysql-common-4.1
mysql-dev
mysql-devel
mysql-doc
mysql-doc-4.1
mysql-gpl-client
mysql-server
mysql-server-4.1

despues hace un apt-get clean que borra la cache de apt
y por ultimo instalas todo de nuevo
;-)

ojo --purge borra absolutamente todo!

martes, 27 de marzo de 2007

Buscando en linux

find directorio -name nombre

find /usr/ -name *svn*


find . -mtime 0   # find files modified within the past 24 hours
find . -mtime -1 # find files modified within the past 24 hours
find . -mtime 1 # find files modified between 24 and 48 hours ago
find . -mtime +1 # find files modified more than 48 hours ago
find . -mmin +5 -mmin -10 # find files modifed between 6 and 9 minutes ago

Interceptores Jboss Seam

Fases de JSF ya es mucha diferencia

Hay que crear una @interface que la utilizaremos para etiquetar/interceptar la clase(componente en terminos de Seam) correspondiente


import javax.interceptor.Interceptors;
import java.lang.annotation.Documented;
import static java.lang.annotation.ElementType.TYPE;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Target;

/**
* Created by IntelliJ IDEA.
* User: juanitu
* Date: 12-abr-2007
* Time: 17:43:24
* To change this template use File | Settings | File Templates.
*/
@Target(TYPE)
@Retention(RUNTIME)
@Documented
@Interceptors(Interceptor.class)
public @interface EtiquetaInterceptora {

}


Despues definimos el interceptor poniendo especial interes en como tratamos el tema de las fases de la aplicacion:



import org.jboss.seam.annotations.Around;
import org.jboss.seam.annotations.Within;
import org.jboss.seam.interceptors.*;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.contexts.Lifecycle;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
import javax.faces.event.PhaseId;

import es.cafs.dao.CafsDAO;
import es.cafs.metadata.componentes.Componentes;

import java.lang.reflect.Method;

/**
* Created by IntelliJ IDEA.
* User: juanitu
* Date: 12-abr-2007
* Time: 17:45:36
* To change this template use File | Settings | File Templates.
*/
@Around({BijectionInterceptor.class, ValidationInterceptor.class,
ConversationInterceptor.class, BusinessProcessInterceptor.class})
@Within(RemoveInterceptor.class)
public class Interceptor {

protected static Log log = LogFactory.getLog(org.jboss.seam.interceptors.Interceptor.class);

@AroundInvoke
public Object checkLoggedIn(InvocationContext invocation) throws Exception {

CafsDAO dao = (CafsDAO) Contexts.getApplicationContext().get(Componentes.appCafsDAO);
log.error(dao==null);

Method method = invocation.getMethod();
log.error(invocation.getTarget().getClass()+"-"+method.getName() + " " + method.getReturnType());
if (Lifecycle.getPhaseId() == PhaseId.INVOKE_APPLICATION) {
log.error("INVOCANDO FASE");
} else {
log.error(invocation.getTarget().getClass()+"-"+method.getName() + " " + method.getReturnType());
log.error("OTRA FASE");

}

return invocation.proceed();
}
}





Y por último hay que etiquetar el componente correspondiente


@Scope(ScopeType.CONVERSATION)
@Name(Componentes.convVisorInformacion)
@Logeando
public class VisorInformacion{
}

Introducción a Maven

Maven es una herramienta escrita en Java para facilitar el trabajo de programación en java, concretamente se utiliza para la compilación y mantenimiento de cualquier proyecto basado en Java.

  • Permitir la compilación del código fuente y su empaquetamiento de forma fácil, es decir: te puedes olvidar de las dependencias de segundos y terceros
  • Estandarizar el directorio donde se incluyen los diferentes recursos
  • Proporcionar información eficiente o útil sobre el proyecto
  • Enfoque a patrones de diseño o desarrollo
  • Permitir la migración a nuevas versiones de las herramientas a utilizar
Sus plugins se pueden encontrar en: http://maven.apache.org/plugins/index.html

No te olvides de:
export PATH=/usr/local/maven-2.0.5/bin:$PATH


Creating a webapp

Use maven-archetype-webapp to start a simple webapp maven project. The command is as follows

mvn archetype:create
-DgroupId=[your project's group id]
-DartifactId=[your project's artifact id]
-DarchetypeArtifactId=maven-archetype-webapp


POM
: "Project Object Model".
Documento XML que representa el proyecto:
  • archivos de configuración
  • programadores implicados y sus roles
  • empresa y licencias
  • URL del proyecto
  • dependencias
En un proyecto con Maven el pom.xml, es lo único imprescindible.

The Basics



4.0.0
org.codehaus.mojo
my-project
1.0

groupId: Id de organizacion o empresa, suele ser su paquete java
ej: com.mediaymedia
artifactId: El nombre del proyecto: wiki
version:
packaging:


http://maven.apache.org/pom.html#Introduction

Interface e implementación: causas y efectos

diferencias y consecuencias del diseño con interfaces.
Diseño robusto frente a diseño frágil
Contrato de interface


La interfaz

PD: diseño orientado a pruebas con Mocks

lunes, 26 de marzo de 2007

IceFaces

vamos a seguir:
http://www.icefaces.org/docs/v1_5_1/htmlguide/devguide/DevelopersGuideTOC.html

Programación en Java ¿y qué más?

¿y que más? Pues nuestro interés se dirigirá a programar orientándonos a objetos,aspectos y pruebas.
Utilizaremos las siguientes herramientas: TestNG, DBUnit, Hibernate, JSF, JBoss Seam ...

http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java
http://es.wikipedia.org/wiki/Orientado_a_objetos
http://es.wikipedia.org/wiki/Programaci%C3%B3n_Extrema
http://es.wikipedia.org/wiki/J2EE
Se pondrá un especial interés en recopilar los errores que vayan apareciendo