lunes, 4 de junio de 2012

Instalar y configurar un servidor proxy con Squid

Escrito esta: 
Porque tú eres mi esperanza; oh Señor DIOS, tú eres mi confianza desde mi juventud. 
(Salmos 71:5)

Tomado de: Blogofsysadmins

En el contexto de las redes informáticas, el término proxy hace referencia a un programa o dispositivo que realiza una acción en representación de otro. Su finalidad más habitual es la de servidor proxy, que sirve para permitir el acceso a Internet a todos los equipos de una organización cuando sólo se puede disponer de un único equipo conectado, esto es, una única dirección IP.
En este caso vamos a utilizar squid, este es un popular programa de software libre que implementa un servidor proxy y un demonio para caché de páginas web, publicado bajo licencia GPL. Tiene una amplia variedad de utilidades, desde acelerar un servidor web, guardando en caché peticiones repetidas a DNS y otras búsquedas para un grupo de gente que comparte recursos de la red, hasta caché de web, además de añadir seguridad filtrando el tráfico. Está especialmente diseñado para ejecutarse bajo entornos tipo Unix.
Esta sería la conexión básica de un servidor proxy:
proxy

Para comenzar, la instalación es sencilla en Ubuntu / Debian :
sudo aptitude install squid
Configuración básica de Squid
El archivo de configuración se encuentra en /etc/squid/ y se llama squid.conf, si lo observan es un archivo bastante grande, ya que squid como lo comentaba, es un servidor proxy bastante completo. Una configuración básica debe incluir, al menos, los parámetros que se indican a continuación:
  • http-port: Establece el puerto de escucha para squid (por defecto puerto 3128).
  • visible_hostname: nombre del equipo.
  • acl: a cada ACL o lista de control de acceso se le hace corresponder una regla de control de acceso (http_access) que es la que permite o deniega las conexiones definidas en cada acl.
Parámetro cache_dir: ¿Cuanto desea almacenar de Internet en el disco duro?
Este parámetro se utiliza para establecer que tamaño se desea que tenga el caché en el disco duro para Squid. Para entender esto un poco mejor, responda a esta pregunta: ¿Cuanto desea almacenar deInternet en el disco duro? De modo predefinido Squid utilizará un caché de 100 MB, de modo tal que encontrará la siguiente línea:
cache_dir ufs /var/spool/squid 100 16 256
Se puede incrementar el tamaño del caché hasta donde lo desee el administrador. Mientras más grande sea el caché, más objetos se almacenarán en éste y por lo tanto se utilizará menos el ancho de banda. La siguiente línea establece un caché de 700 MB:
cache_dir ufs /var/spool/squid 700 16 256
Los números 16 y 256 significan que el directorio del caché contendrá 16 directorios subordinados con 256 niveles cada uno. No modifique esto números, no hay necesidad de hacerlo.
Es muy importante considerar que si se especifica un determinado tamaño de caché y éste excede al espacio real disponible en el disco duro, Squid se bloqueará inevitablemente. Sea cauteloso con el tamaño de caché especificado.
Ejemplo: Denegar la dirección www.youtube.com a todas las máquinas
Abrimos y editamos el fichero de configuracion de squid squid.conf
#Parámetros obligatorios:
visible_hostname debian
http_port 3128
cache_mem 64 MB
cache_dir ufs /var/spool/squid 700 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log

#Listas de control de acceso:
acl all src 0.0.0.0/0.0.0.0
acl denegado dstdomain www.youtube.com
acl localhost src 127.0.0.1

#Control de acceso:
http_access deny denegado !localhost
http_access allow all
error_directory /usr/share/squid/errors/Spanish
En esta configuración , se observa en el apartado de parámentros obligatorios el puerto de escucha, el nombre del servidor (si no sabes cual es el nombre de tu máquina, ve a una terminal y teclea “hostname”), tamaño de memoria cache y las rutas; en el segundo apartado se encuentran las listas de control de acceso, las cuales se asigna el rango de ip’s, asignación de dominio, etc…; en el tercer apartado es el control de acceso, una vez asignadas las listas de control con http_access deny se deniegan ya sea ip’s ó dominios, y con http_access allow, se permite lo mismo, tmb por ahí aparece una linea error_directory la cual muestra los mensajes de advertencia en idioma español.
Reseteamos squid:
# /etc/init.d/squid restart
Si no aparece ningún mensaje de error entonces nuestro proxy debe de funcionar deacuerdo a lo establecido, para poder probar ve a un navegador de una máquina que este conectada en la misma LAN, ve a propiedades y habilita el uso deproxy, en la ip , hay que poner la ip de nuestra máquina que tiene el squid corriendo.
Cuando hagan pruebas les bloqueará www.youtube.com, pero si ponen youtube.com si los dejará entrar, para eso se utiliza otra lista de control de acceso:
acl denegado url_regex “/home/tuusuario/denegados”
Dónde /home/tuusuario/denegados es un simple archivo de texto que contiene la palabra youtube, con eso, todos los dominios youtube serán bloqueados.

Paginas de Referencias: 

Tomado de :wwwdanielweb-daniel
primero que nada instalamos squid

apt-get install squid

 despues nos situamos en el directorio /etc/squid
y creamo tres ficheros [inocentes, permitidos y denegados]


luego los editamos
ej


en permitidos: ponemos todas las ip que le vamos a dar derecho a la conexion 
en denegados: las url de aquellas paguinas que queremos denegar
en inocentes: aquellas url de sitios que a veces tienen palabras las cuales se encuentran denegadas : ej: www.sexoseguro.com


despues de haber hecho esto procedemos a la configuracion del fichero [squid.conf]

nano /etc/squid/squid.conf

mi conf de squid debes cambiar los directorios padres y los de tu dominio
 aqui esta mi squid





#OPTION NETWORK#
#-----------------------------------------------------------------------------#

# Puerto donde se va a escuchar el Squid.
http_port 3128
icp_port 3130

cache_peer proxy.pri.jovenclub.cu parent 3128 0 default login=PASS
cache_peer_domain proxy.(dominio padre)
cache_mem 16 MB
cache_dir ufs /var/spool/squid/00 1024 16 256
cache_dir ufs /var/spool/squid/01 1024 16 256
cache_dir ufs /var/spool/squid/02 1024 16 256
cache_dir ufs /var/spool/squid/03 1024 16 256
client_netmask 255.255.255.255
dead_peer_timeout 10 seconds
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
auth_param basic children 5
# auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/claves
error_directory /usr/share/squid/errors/Spanish
authenticate_ttl 1 hour
hierarchy_stoplist cgi-bin ?
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4096 KB
debug_options ALL,1
quick_abort_min 16 KB
quick_abort_max 16 KB
quick_abort_pct 95
negative_ttl 5 minutes
positive_dns_ttl 6 hours
negative_dns_ttl 5 minutes
append_domain .(tudominio.dominio padre)
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
#ACCESS CONTROL
#-----------------------------------------------------------------------------
#Defaults
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255


#acl password proxy_auth REQUIRED

acl local-server dstdomain .(tudominio.dominio padre)

acl permitidos src "/etc/squid/permitidos"
acl denegados url_regex "/etc/squid/denegados"
acl inocentes url_regex "/etc/squid/inocentes"
acl msn_messenger req_mime_type -i ^application/x-msn-messenger$
acl skype_IP urlpath_regex ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+
acl SSL_ports port 443 6667
acl Safe_ports port 80
acl Safe_ports port 443
acl Safe_ports port 21
#acl Safe_ports port 70
#acl Safe_ports port 210
acl Safe_ports port 1025-65535
#acl Safe_ports port 280
acl Safe_ports port 6667
acl Safe_ports port 488
#acl Safe_ports port 591
#acl Safe_ports port 777
acl CONNECT method CONNECT

#FIN DE LAS ACL
#-------------------------------------------------------------------------------
#Default configuration
http_access allow local-server
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
#-------------------------------------------------------------------------------
#Aqui defino la politica de las ACL
#INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
http_access allow localhost

###############################################################################
#Acceso a las maquinas a la navegacion
###############################################################################
http_access allow all permitidos
http_access deny denegados
http_access allow inocentes
http_access deny all
http_reply_access allow all
icp_access allow all


#Fin de la Politica
#------------------------------------------------------------------------------
#MISCELANEAS
#------------------------------------------------------------------------------
auth_param basic realm [Bienvenidos a ]
cache_mgr [tu email]
visible_hostname proxy.(tudominio.dominio padre)
logfile_rotate 10

#emulate_httpd_log on
#Aceleracion
#httpd_accel_host virtual
#httpd_accel_port 0
#httpd_accel_with_proxy on

#Contrasena
cachemgr_passwd datos all
http_port 3128
icp_port 3130
#las always para servicios
always_direct allow local-server
always_direct deny all
never_direct allow all

#FTP Pasivo

ftp_list_width 32
ftp_sanitycheck on
ftp_passive on
snmp_port 3401
#acl snmppublic snmp_community public
#snmp_access allow snmppublic all
#snmp_incoming_adress 0.0.0.0
#snmp_outgoing_adress 0.0.0.0

#DELAYS POOLS PARAMETERS (all require DELAY_POOLS compilation option)

#------------------------fin del fichero-------------------------------------------------#

 ademas de esto



luego reinicias el servicio
invoke-rc.d squid restart
si te da algun error con respecto a los directorios swap, simplemente
te ubicas en /etc/squid
y tecleas
squid -z
y te crea automaticamente los directorios
vuelves a reiniciar el squid
y ya tienes un servidor proxy corriendo desde tu server para la red


autentificacion de los user contra el proxy squid 

 bueno para que los user se autentifiquen contra nuestro proxy, es decir que cada ves que vaya a acceder a internet, le salga el cuadro user y password
hacemos lo siguiente
si se fijan en la configuracion del squid hay una linea comentada

 # auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/claves

que hacemos le borramos la almohadilla que tiene en el principio [#]
lo que nos dice que vamos a tener un fichero que se va a llamar claves, puede tener otro nombre cualquiera, lo que hay que poner al final de la linea el nombre asignado

tambien hay otra linea comentada

#acl password proxy_auth REQUIRED

aqui solo le quitamos la almohadilla para declarar dicha acl
luego vamos donde dice

http_access allow all permitidos
y le agregamos la linea [password]

quedaria:

http_access allow all permitidos password

guardamos los cambios y salimos del fichero
ahora vamos al directorio /etc/squid
y creamos el fichero cuyo nombre pusimos en la primeria linea que descomentamos
en nuestro caso, se llama claves

seria
touch claves

despues instalariamos el apache para utilizar sus modulos como autentificacion
seria: apt-get install apache2
luego nos situamos en /etc/squid
y tecleariamos :     htpasswd claves [nombre del user]
abajo apareceria la opcion : password
le pondriamos la password, la cual hay que poner 2 veces
y asi sucesivamente con los demas user
luego reinicamos el servicio squid : invoke-rc.d squid restart
y ya

tenemos un proxy squid con autentificacion de usuarios
----------------------------------------------------------------
Tomado de: kimberling146

Vamos a configurar el servicio Squid en Debian Wheezy

Squid es un servidor proxy para web con caché. Es una de las aplicaciones más populares y de referencia para esta función,software libre publicado bajo licencia GPL. Entre sus utilidades está la de mejorar el rendimiento de las conexiones de empresas y particulares a Internet guardando en caché peticiones recurrentes a servidores web y DNS, acelerar el acceso a un servidor webdeterminado o añadir seguridad realizando filtrados de tráfico.

1. Instalación

# aptitude install squid3

2. La configuración de squid3 se almacena en el archivo /etc/squid3/squid.conf.

3. Squid3 acepta, por defecto, conexiones en el puerto 3128.  Sin embargo, esto puede modificarse colocando otro puerto por ejemplo el conocido 8080.

etc/squid3/squid.conf
#[...]

# Squid normally listens to port 3128
http_port 3128

#[...]

http_port 3128 --> Puerto por el cual escuchará las peticiones el Proxy.

4. Por seguridad, squid3 sólo responderá a pedidos de la red local o en el propio servidor. Esta restricción es conseguida definiendo una lista de control de acceso oACL (Access Control List) (acl plataforma.linux.org.ve src 192.168.10.0/24) y autorizando el acceso sólo a los sistemas incluidos en esa lista (http_access allow plataforma.linux.org.ve):

etc/squid3/squid.conf
# [...]

#  TAG: acl
#       Defining an Access List

# [...]

#Default:
# acl all src all
#
#
# Recommended minimum configuration:
#
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
#acl localnet src 10.0.0.0/8    # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16        # RFC1918 possible internal network
#acl localnet src fc00::/7       # RFC 4193 local private network range
#acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines

acl plataforma.linux.org.ve src 192.168.10.1/24

# [...]

5.  Definición de permisos de acceso a la sección http_access:

/etc/squid3/squid.conf
# [...]

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnet
http_access allow localhost

http_access allow plataforma.linux.org.ve

# And finally deny all other access to this proxy
http_access deny all

# [...]

6. Modificamos el  tamaño total de la cache de squid3 a un valor adecuado ejemplo 2048Mb:

# [...]

# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid3 100 16 256
cache_dir ufs /var/spool/squid3 2048 16 256

# [...]

7.  También podemos definir la identificación de nuestro servidor proxy

# [...]

#  TAG: visible_hostname
#       If you want to present a special hostname in error messages, etc,
#       define this.  Otherwise, the return value of gethostname()
#       will be used. If you have multiple caches in a cluster and
#       get errors about IP-forwarding you must set them to have individual
#       names with this setting.
#Default:
# visible_hostname localhost
visible_hostname proxy.plataforma.linux.org.ve

# [...]

visible_hostname proxy.plataforma.linux.org.ve ---> Nombre del Servidor Proxy

8. De manera opcional, también se puede configurar el límite máximo de los objetos que se guarden en el cache, al definir el parámetro maximum_object_size con un valor en Kbytes:

/etc/squid3/squid.conf
# [...]

#  TAG: maximum_object_size     (bytes)
#       Objects larger than this size will NOT be saved on disk.  The
#       value is specified in kilobytes, and the default is 4MB.  If
#       you wish to get a high BYTES hit ratio, you should probably
#       increase this (one 32 MB object hit counts for 3200 10KB
#       hits).  If you wish to increase speed more than your want to
#       save bandwidth you should leave this low.
#
#       NOTE: if using the LFUDA replacement policy you should increase
#       this value to maximize the byte hit rate improvement of LFUDA!
#       See replacement_policy below for a discussion of this policy.
#Default:
# maximum_object_size 4096 KB
maximum_object_size 20480 KB

# [...]

9. Reiniciamos el servicio squid

# /etc/init.d/squid3 restart

Con esto funcionara nuestro servidor squid básico hay una serie de funciones que se le pueden agregar como por ejemplo bloqueo de paginas y usuarios a continuación mostraremos como hacerlo.

Creando bloqueos

1. Crearemos una carpeta llamada bloqueos y en ella 2 archivos donde colocaremos paginas seguras y paginas a bloquear

Crearemos una carpeta llamada bloqueos
# mkdir /etc/squid3/bloqueos

Crearemos el primer archivo y lo llamaremos sitios-seguros
# nano /etc/squid3/bloqueos/sitios-seguros

Una vez creado el archivo, lo editamos y colocamos las paginas a la cual pueden tener acceso
#/etc/squid/bloqueos/sitios-seguros    

www.banco.com
www.otros.com
www.otros.com

guardamos y cerramos el archivo

Ahora...

Crearemos el segundo archivo y lo llamaremos sitios-denegados
# nano /etc/squid3/bloqueos/sitios-denegados

Una vez creado el archivo, lo editamos y colocamos las paginas a las que no se tendrán acceso
#/etc/squid/bloqueos/sitios-denegados

www.youtube.com
www.twitter.com
www.facebook.com

guardamos y cerramos el archivo

Ya tenemos los sitios que tendrán acceso y los sitios que están denegados el acceso, ahora se van a crear los usuarios de la red

2. Vamos a crear los usuarios para nuestra red

Crearemos una carpeta llamada usuarios y en ella 2 archivos donde colocaremos jefes y usuarios

Crearemos una carpeta llamada usuarios
# mkdir /etc/squid3/usuarios

Crearemos el primer archivo y lo llamaremos jefes
# nano /etc/squid/usuarios/jefes

Una vez creado el archivo, lo editamos y colocamos las IP de los equipos de los jefes
/etc/squid/usuarios/jefes     

192.168.10.2
192.168.10.3
192.168.10.4 

Crearemos el segundo archivo y lo llamaremos usuarios
# nano /etc/squid/usuarios/usuarios

192.168.10.20
192.168.10.21
192.168.10.22

Con esto tenemos un bloqueo básico ahora debemos aplicar nuestras reglas en el archivo de configuración del squid

#Recommended minimum configuration:
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32

#configuracion de sitios
acl sitios-seguros url_regex "/etc/squid/bloqueos/sistios-seguros"
acl sitios-denegados url_regex "/etc/squid/bloqueos/sistios-denegados"

Lista de control de acceso llamada “sitios-seguro y sitios-denegados” de tipo url_regex  esta ubicado en un archivo con las paginas que queramos acceder o negar.

#configuracion de usuarios
acl jefes    src    "/etc/squid3/usuarios/jefes"
acl usuarios    src    "/etc/squid3/usuarios/usuarios"

ahora habilitaremos las reglas para controlar la navegación por los sitios seguros y la denegación por los sitios-denegados

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

#mis reglas#
http_access allow sitios-seguros
http_access allow jefes
http_access allow usuarios !sitios-denegados
    
Por medio del comando http_access y el nombre de la lista de control de acceso podenos permitir(allow) o denegar (deny) el servicio a dichas listas.

Ahora reiniciamos el servicio squid para que funcionen las reglas creadas
# /etc/init.d/squid3 restart
 

sábado, 26 de mayo de 2012

Qué es el Comando de Linux mail?

Escrito esta:
Y este es el mensaje que hemos oído de El y que os anunciamos: Dios es luz, y en El no hay tiniebla alguna.(1 Juan 1:5)
Tomado de: hscripts
 
COMANDO mail:
     El comando mail se usa para enviar y recibir correos localmente y globalmente.

SINTAXIS:
  La sintaxis es
     mail

OPCIONES:
     
-s Especifica asunto en la línea de comando.
-c Enviar copias a la lista de usuarios.
-b Enviar copias ocultas a la lista. La lista debe ser una lista de nombres separada por comas.
-f Lee los contenidos de tu correo para procesar; cuando cierras, mail escribe los mensajes sin borrar a este archivo.
-i Ignora las señales de interrupción tty. Esto es particularmente útil cuando utilizas mail en líneas telefónicas con ruido.



EJEMPLO:     
  1. Recibir correos
    mail
    El comando anterior muestra los mensajes. Presiona Intro para ver el siguiente mensaje después del símbolo "&".
  2. Enviar correos
    mail abc@localhost.com (or) mail abc@hiox.com
    Comienza un nuevo correo y lo envía a abc@localhost.com.
    Para terminar el mensaje, escribe un punto(.) 
    y presiona Intro (o) presiona ctrl+d y presiona Enter.
-----------------------------------------------------
Tomado de :Blogubuntu

Así, en la lista nos encontramos desde gestores de correo muy conocidos, como Thunderbird o Evolution, hasta otros basados en consola, como Mutt. La lista completa:
MOZILLA THUNDERBIRD : Cliente de correo electrónico (multiplataforma) de la Fundación Mozilla. Soporta IMAP/POP, correo HTML, noticias, RSS, etiquetas, corrector ortográfico incorporado, soporte de extensiones y skins, buscadores, cifrado PGP, un filtro bayesiano de correo basura (spam), etc.
EVOLUTION : Gestor libre de información personal (PIM) y de trabajo en grupo para GNOME, desarrollado originalmente por Ximian ahora es parte oficial del escritorio de GNOME. Combina administración de correo electrónico, calendario, agenda y lista de tareas. Forma parte del conjunto GNOME Office.
KMAIL : Cliente de correo electrónico (MUA) para el proyecto KDE y parte de la suite de software Kontact. Dispone de una interfaz modificable y se integra con las aplicaciones KDE.
MUTT : Se trata de un cliente de correo liviano, basado en consola, para sistemas Unix.
ALPINE : Herramienta para leer, enviar, y gestionar correo electrónico. Está basado en el sistema de mensajes Pine y, aunque fue desarrollado pensando en usuarios noveles, pero puede adaptarse a las necesidades de cualquier usuario.
BALSA : Balsa es un cliente de correo electrónico para GNOME muy configurable y robusto.
CLAWS MAIL : Claws Mail es un cliente de correo (y lector de noticias), basado en GTK +, con unas características muy deseables y completas en un programa de estas características.
GNUS : Gnus es un lector de mensajes (correos electrónicos) bajo GNU, Emacs y XEmacs. Soporta tanto lector de e-mail como news. Incluso, soporta fuentes web-base para poner los grupos.
(*) Algunas descripciones están basadas en información de la Wikipedia, otras en la información publicada en sus propios sitios web.

domingo, 6 de mayo de 2012

La Tabla de equivalencias / reemplazos / de software análogo a Windows en Linux.

Escrito Esta:
Mateo 7:13 Entrad por la puerta estrecha, porque ancha es la puerta y amplia es la senda que lleva a la perdición, y muchos son los que entran por ella.
Tomado de: Linuxrsp
Una de las mas grandes dificultades en la migración de Windows a Linux es la carencia de software equivalente. Los Newbies por lo general buscan los software equivalentes de Windows para Linux, y los usuarios avanzados de Linux no pueden contestar sus preguntas ya que ellos a menudo no conocen demasiado sobre windows :). Esta lista de equivalencias / reemplazos / de software análogo a Windows en Linux está basada en nuestra propia experiencia y en la información de los visitantes a esta página (gracias!).
Esta Tabla no está estática - nuevos programas pueden ser agregados a lados derechos en tanto se este en marcha, y esto no es el hecho que la columna derecha será llenada inmediatamente. En el futuro nosotros planeamos migrar esta tabla a PHP/MySQL, asi los mismos visitantes podrán agregar programas, votar por los programas equivalentes, agregar comentarios, etc.
Notas:
1) Por principio todos los programas de linux en esta tabla son libres y están en liberados. Los programas propietarios para Linux están marcados con un señal [Prop].
2) Si no hay nada en el campo de la tabla, excepto "???" - Los autores de la tabla no saben que colocar allí.
3) Si la señal (???) se encuentra destrás del nombre del programa - Los autores de la tabla no están seguros sobre este programa.
La importancia ideológica de la diferencia entre Windows y Linux:
La mayoría de los programas de Windows son echos con el principio de "Todo en uno" (cada desarrollador agrega todo a su producto). De la misma manera, a este principio le llaman el "estilo-Windows".
La Ideología de UNIX/Linux - Un componente o un programa deben ejecutar sólo una tarea, pero lo ejecuta bien. ("estilo-UNIX"). Los programas bajo linux pueden ser pensados como LEGOS componentes básicos. (Por ejemplo, si hay un programa para la comprobación de ortografía, esto puede ser usado con el editor de textos o por un cliente de email al enviarlo; o si hay un poderoso programa de líneas de comando para el uso de archivos, es simple escribir el Interfaz gráfica para el programa, etc.).
Este principio es muy importante y es necesario conocerlo para buscar programas programas equivalentes de Windows en Linux :).
Lugares donde puedes obtener software para linux: FreshMeat.net | SourceForge.net - Dos portales grandiosos. Puedes encontrar todo lo que tu quieras!!
LinuxApps.com | IceWalkers.com | Linux.Tucows.com - Me gusta estos catálogos.
Download.com / Linux | LinuxSoftware.org | FileWatcher.org | LinuxArchives.com - otros catálogos.
Programas / paquetes / búsqueda de librerías de sistema:  RPMseek.org | Tuxfinder.com | RPMfind.net
Programas y juegos para Windows, estos programas pueden correr bajo Wine/WineX:1) Juegos para Windows, estos pueden correr con WineX (La informaci�n del sitio de funcionario Transgaming). Este es un formulario de búsqueda, y en esta lucar una lista completa de juegos (muy grande!).
2) El catálogo mas gran de Windows , correindo bajo wine. La base de datos de Codeweavers contiene información de cerca 1000 aplicaciones, y el catálogo es estructurado y tiene un sistema de la navegación.

lunes, 19 de marzo de 2012

LENGUAJES DE PROGRAMACIÓN EN LINUX

Escrito esta:
Miqueas 2:1 ¡Ay de los que planean la iniquidad, los que traman el mal en sus camas! Al clarear la mañana lo ejecutan, porque está en el poder de sus manos.
Tomado de :Petermillenium20
Una breve comparación de los principales lenguajes de programación para Linux y de las principales librerías para la creación de interfaces gráficas de usuario (GUIs) en Linux.

Linux es un sistema operativo fascinante porque permite a cualquier usuario participar en su desarrollo. La variedad de lenguajes disponibles, sin embargo, puede llevar a la confusión a los desarrolladores principiantes. Este documento hace un listado de las opciones más comunes existentes para el desarrollo diario.
(Bueno, el más común y el principal). EL propósito no es ni el de reseñar los lenguajes ni el de determinar cuál es el mejor. Cada lenguaje es una herramienta que sirve para determinados trabajos y gustos. Puede obtener más información (a menudo conflictiva) con facilidad, si pregunta por ahí o si mantiene los oídos alerta. La sección de enlaces en este documento le dará indicaciones para que pueda investigar por su cuenta.


1. Introducción
Hay una variedad de de lenguajes y librerías de programación para Linux, así que este documento solamente cubre los lenguajes más comunes y los conjuntos de herramientas para la construcción de interfaces gráficas de usuario del momento.

Nótese también que, tanto los lenguajes como las herramientas para construcción de interfaces de usuario, se verán desde el punto de vista de Linux: no se tratarán sus características para otras plataformas.

Un signo de interrogación en las tablas indica que se carece de información. Si puede completarla, por favor, contacte con el autor.

2. Lenguajes de programación
2.1 Conceptos en la Tabla


Lenguaje
Indica el nombre común del lenguaje.
Principiante
Indica lo apropiado que es el lenguaje para personas con poca experiencia en programación. Un lenguaje que se encuentre marcado por un ``sí'' debería ser viable como primer lenguaje de programación para un principiante.
Rendimiento
La probable velocidad de ejecución de sus aplicaciones cuando se usen comercialmente. Las prestaciones dependen más de sus habilidades algorítmicas de programación que del propio lenguaje. Empíricamente, C, C++ y Fortran son necesarios a veces porque pueden dar mejores prestaciones que otros lenguajes -otras veces pueden ser pesados para el propósito original. (Una idea para las pruebas de rendimiento de los lenguajes sería la implementación de un sencillo algoritmo de ordenación en todos ellos y la comparación posterior de los tiempos de ejecución.
POO, Progamación Orientada a Objetos vs. otros paradigmas
La Programación Orientada a Objetos es un paradigma de programación importante que está ganando popularidad. En la programación orientada a objetos, las estructuras de datos y los algoritmos se integran en unidades, a menudo llamadas clases. La POO contrasta con la programación procedural (que usa algoritmos y estructuras de datos separados). No depende estrictamente del lenguaje: se puede hacer POO con lenguajes no clasificados como tales (por ejemplo C), y se puede programar en estilo procedimental con lenguajes clasificados como Orientados a Objetos. He clasificado como de POO a lenguajes que tienen características especiales o añadidos que facilitan la POO. Los lenguajes funcionales (LISP, por ejemplo) son de una clase un poco diferente -entre otras cosas, los lenguajes funcionales son un superconjunto de POO. La programación lógica (Prolog), también llamada programación declarativa, por otro lado, no tiene relación con otros tipos de programación en un sentido similar.
RAD, Rapid Application Development (Desarrollo rápido de aplicaciones)
Más dependientes de las herramientas que se usan que del lenguaje propiamente dicho. Hay un COMO de herramientas de desarrollo para GUI (Interfaz gráfico de usuario), aunque está desfasado. Con una buena herramienta gráfica se pueden realizar RAD. A veces los RAD se basan en la reutilización de código también, por lo que el software libre nos puede proporcionar un buen punto de partida.
Ejemplos
Describe los campos de programación en los que normalmente se usa el lenguaje. Se dan otros tipos de usos, buenos y malos, aunque no son tan frecuentes. Comentarios
Información adicional sobre el lenguaje, como son sus capacidades y dialectos.

2.2 Lenguajes Principales

PERL
Principiantes: Sí - POO: Sí
Ejemplos: Scripts, administración de sistemas, www
Comentarios: Potente para la manipulación de textos y cadenas

Python
Principiantes: Sí - POO: Sí
Ejemplos: Scripts, scripts de aplicaciones, www
Comentarios:

TCL
Principiantes: Sí - POO: No
Ejemplos: Scripts, administración de sistemas, aplicaciones
Comentarios:

PHP
Principiantes: Sí - POO: Sí
Ejemplos: Www
Comentarios: Popular para las bases de batos basadas en web

Java
Principiantes: Sí - POO: Sí
Ejemplos: Aplicaciones para plataformas cruzadas, www
Comentarios:

Lisp
Principiantes: Sí - POO: Funcional
Ejemplos: Modos de Emacs (para elisp), AI
Comentarios: Variantes Elisp, Clisp y Scheme

Fortran
Principiantes: No - POO: No
Ejemplos: Aplicaciones matemáticas
Comentarios: Variantes f77 y f90/95

C
Principiantes: No - POO: No
Ejemplos: Programación de sistemas, aplicaciones
Comentarios: Muy popular

C++
Principiantes: No - POO: Sí
Examples: Aplicaciones

Comentarios:
2.3 Programación del shell
Los shell son también unos entornos de programación importantes. El conocimiento de los shell es importante para quien trabaje con Linux regularmente, y más aun para los administradores de sistemas. Hay similitudes entre la programación del shell y los scripts -a menudo consiguen los mismos propósitos y tenemos la oportunidad de elegir entre los shell nativos o un lenguaje de scripts. Entre los más populares están los shell bash, tcsh, csh, ksh y zsh. Puede obtener información acerca de su shell con man comando, man bash por ejemplo.

2.4 Otros Lenguajes

Otros lenguajes dignos de mención: AWK, SED, Smalltalk, Eiffel, ADA, Prolog, assembler, Objective C, Logo, Pascal (p2c converter)

2.5 Enlaces

· Un sitio de información general sobre lenguajes de programación, mucha información y opiniones
· TCL
· PERL
· Python
· PHP
· Java
· clisp

ANEXOS
Lenguaje C
En 1.970, cuando Ken Thompson creó el Lenguaje B para codificar sus programas y algoritmos, para probar y experimentar con estructuras, servicios y teorías de eficiencia, que posteriormente Brian Kernighan bautizaría con el nombre de Unix, no se imaginaron que con reestructurar y agregar instrucciones al Lenguaje B, añadirle estructuras de datos y tipos, pasaje de parámetros a funciones recursivas, apuntadores a funciones y unas sencillas modificaciones, Dennis Ritchie crearía un Lenguaje C, que 20 años después, sería el Lenguaje de programación preferido para el desarrollo de Herramientas, Editores, Manejadores de Bases de Datos, Compiladores e Interpretadores y Traductores de Lenguaje, Generadores de Sistemas Expertos, Sistemas Operativos, Procesadores de Palabras, Paquetes de Comunicación y Teleproceso, Hojas de Cálculos, Aplicaciones de CAD/CAM, y toda una infinidad de productos.
El Lenguaje C, es un lenguaje de programación estructurado de mediano nivel, pero muy versátil y eficiente, que revolucionó las técnicas y estilo de programación.
Desarrollado en 1.971, originalmente para implementar el Sistema Operativo Unix y sus Herramientas, C es un lenguaje independiente del sistema operativo que se utiliza para desarrollar aplicaciones portables.
C, provee las misma facilidades para la manipulación de bytes de un lenguaje assembler combinadas con instrucciones estructuradas de control de flujo condicionado y manipulación de tipos y estructuras de Datos de los lenguajes de tercera generación.
El Lenguaje C es relativamente sencillo, pero su gran flexibilidad es terreno abonado para la proliferación de vicios y prácticas inadecuadas de programación, por lo cual debe cuidarse la enseñanza de su estilo de programación, técnica y filosofía de trabajo.
En Lenguaje C, lo fácil es simple y lo difícil posible.
Un buen programador de C, utiliza librerías y desarrolla programas modulares con funciones bien estructuradas, que son fáciles de mantener.
Antiguamente la programación era difícil, luego apareció FORTRAN que la hizo mas sencilla, después los lenguajes de 3era generación (C, C++, java, etc.) que hicieron mas fácil la comunicación entre programador-máquina.
Este tema es sobre programación en C, C++, java, etc usando únicamente software libre.
La programación actualmente es muy sencilla de aprender gracias a los nuevos programas de 3era generación.
Actualmente existiendo mucho software y sistemas operativos libres y gratuitos las empresas y universidades deberían de dejar de gastar miles de dólares por computadora dándoselo a Microsoft. Si puedes programar en Linux igual que en Windows, porqué pagar a Microsoft? Ah, se me olvidaba, si programas en Windows Microsoft espía lo que haces, ya muchas empresas han demandado a Microsoft por copiar su software.
Antes de aprender a programar en Linux debemos saber algunas cosas:
Linux es un sistema operativo similar a Windows xp, aunque superior en muchísimos aspectos (además de ser gratuito), para instalarlo únicamente debes descargar una imágen iso, quemarla en un cd o dvd, e instalarlo (de forma similar a la de windows xp).
La ventaja de descargar el dvd es que trae cientos de programas para que los instales sin ocupar internet (instalables desde synaptic o adept).
Luego de descargar la iso, la quemas con la opción quemar iso, y tienes listo para arrancar en tu computadora el cd o dvd, estos discos son live, arrancan sin necesidad de que los instales, si arranca en tu máquina verás el escritorio en unos 30 segundos, y desde ahí puedes instalar el sitema.
Al instalar linux puedes elegir entre escritorio gnome o escritorio kde, algunas distribuciones linux solo usan escritorio gnome, y otras solo kde, luego si quieres lo puedes instalar el otro escritorio. La diferencia es que el escritorio kde trae algunos programas que no trae gnome, y el aspecto del escritorio gráfico varia un poco.
La forma mas sencilla para instalar programas en linux es usando synaptic (adep si usas kde), dos click e instalas el programa (ya sea desde internet o el dvd).
Un programa libre (como linux) es aquel que puede ser modificado libremente, conocer su código, por eso es que hay tantas versiones de linux (distribuciones). Libre es diferente a gratuito, un programa puede ser gratuito y no ser libre.
Hay muchos programas para programadores libres y algunos gratuitos:
1.- Gambas: Es un Programa libre, puede usarse en escritorio kde, o en escritorio gnome. Es ideal para empezar a programar.
2.- Varios programas libres de tercera generación para programar en muchísimos lenguajes, entre ellos C, C++, etc.
- Glade: Se usa en gnome.
- anjuta: Se usa en gnome.
- Kdevelop: Se usa en kde (no es libre, es gratuito).
- Eclipse: Usa java, C, C++, etc.
Consola es algo así como el ms-dos de microsoft, pero muy superior, todos los linux pueden trabajar desde consola o terminal, yo no la uso, me parece muy anticuada, aunque hay algunos que les gusta usarla. Linux trabaja con escritorios gráficos similares al de windows xp, entre ellos gnome y kde, puedes acceder a la consola (terminal) desde el escritorio gráfico.
Gambas:
Actualmente la manera más sencilla para programar es con la programación visual (Gambas, visual Basic, etc.), considerada de cuarta generación porque con pocos conocimientos puedes crear programas, aunque tiene algunas desventajas respecto a los programas de tercera generación.
Gambas es un programa que usa su propio lenguaje (lenguaje gambas), es similar al conocido ms visual basic. Puedes crear proyectos gráficos con ventanas o de terminal para trabajar desde consola. Se instala desde synaptic (debes tener internet, o el dvd de ubuntu).
Para crear una programa basta con abrir un formulario desde la ventana proyecto. El formulario es la ventana que se abre al ejecutar el programa, donde van los botones, texto, etc.
Si quieres agregas algunas herramientas desde la ventana herramienta, y también puedes agregar algo de código (ventana de modulo o clase),
Puedes ejecutar tu programa antes de crearlo (en la ventana proyecto vas al menu proyecto, y luego presionas ejecutar.
Luego creas tu programa:
Como .gambas, no puedes crear un .exe (se ejecuta desde consola, escribes ./nombredelprograma.gambas),
Comprimido como .tar.gz,
Empaquetado para algunas distribucioneslinux mandriva, debian, etc.
Anjuta: Se usa en escritorio gnome, lo instalas desde synaptic (lo buscas en la lista, dos click y listo).
Glade: Lo usas desde gnome e instalas desde synaptic.
Kdevelop: Este programa solo está disponible para el escritorio kde, se instala con solo dos click desde adept y puedes programar en muchos lenguajes.

Eclipse SDK:
Es un Completísimo entorno de desarrollo integrado para Java y más. Eclipse es una potente y completa plataforma de programación, desarrollo y compilación de elementos tan variados como sitios web, programas en C++ o aplicaciones Java.
Se trata de un entorno de desarrollo integrado (IDE) en el que encontrarás todas las herramientas y funciones necesarias para tu trabajo, recogidas además en una atractiva interfaz que lo hace fácil y agradable de usar.
Cuentas con un editor de texto donde puedes ver el contenido del fichero en el que estás trabajando, una lista de tareas, y otros módulos similares. Si bien las funciones de Eclipse son más bien de carácter general, las características del programa se pueden ampliar y mejorar mediante el uso de plug-ins.
Como habrás leído para programar significa saber el lenguaje de programación necesario para crear tu programa, o si no te interesa, solo copia y pega el código del programa (si es libre, existen millones de programas libres disponibles). Eclipse usa varios lenguajes:
Lenguaje java: http://es.wikipedia.org/wiki/Lenguaje_de_programacion_Java
Lenguaje C: http://es.wikipedia.org/wiki/Lenguaje_de_programacion_C
Lenguaje C++: http://es.wikipedia.org/wiki/C++