Hay muchas aplicaciones viejas que guardan celosamente sus datos en el vetusto formato DBF.
De cara a las migraciones puede resultar interesante pasar esos datos a un GBD relacional. Algunas ya tienen herramientas capaces de leer ficheros DBF, pero si no es asi podemos crear unos CVS para importar los datos facilmente.
Este pequeño programa perl se le indica un directorio donde hay ficheros DBF y los convierte de uno en uno. Tiene distintas opciones como el separador de campos, todo...
A estas alturas de la existencia de las aplicaciones web sabido es que la validacion de datos es un requisito fundamental para que un usuario malicioso no nos la meta doblada. Practicamente todos los lenguajes disponen de un sistema de expresiones regulares que facilitan enormemente la validacion de datos entre otras tareas de interes.
En el caso de php no es menos. Dispone del mecanismo regexp tanto en formato Posix como el de Perl, aunque cualquiera que este familiarizado con el uso de regexp le...
Cabe destacar que una parte de la ingenieria informatica como la Inteligencia Artificial (un area tan grande y vieja como la propia informatica) siempre ha tenido papeles destacados de supervillano.
Esta es una pequeña lista-recordatorio en la que se nombran peliculas en las que la informatica ha tenido...
Con linux se pueden crear VPNS con tuneles de una forma parecida a los CISCO.
Basicamente se trata de unir dos redes locales usando un interfaz de red virtual que vamos a crear.
En cada extremo se crea un interfaz de tunel. Este interfaz es punto a punto, debe especificarse la ip publica remota a la que conectarse y las ips privadas de cada punto. Una vez metidas las interfaces se pueden meter rutas para hacer que distintas redes se vean a traves de estos tuneles.
192.168.100.0/24...
|
Como replicar una estructura de directorios unix?
A veces puede ser necesario replicar un arbol de directorios manteniendo permisos y propietarios PERO sin replicar los ficheros (porque ocupan mucho espacio, por ejemplo). |
|
| Al mysql se le pueden variar ciertas variables para que soporte mas conexiones simultaneas, etc.. tal y como se explica aqui. Todo se reduce a modificar los valores de /etc/my.cnf Estan muy bien unos ficheros de ejemplo que trae la propia distribucion. Se puede buscar por nombre: `my-huge.cnf', `my-large.cnf', `my-medium.cnf', y `my-small.cnf' |
|
| Nessus es una herramienta para hacer auditorias de seguridad que funciona en modo cliente-servidor. Dentro de linux se inicia como un servicio, y para realizar auditorias debemos conectarnos a el con un programa cliente. Ese programa cliente puede estar en la propia maquina donde se ejecuta nessus o en una maquina remota. Por ejemplo existen clientes nessus para windows que pueden conectarse a servidores remotos. |
Read more...
| 4 comments |
PELMAlink |
Read more...
| 4 comments |
PELMAlink |
Quien no tiene mono de C# ? xD
El ejemplo minimo de c# sobre un linux, en concreto un redhat 9. Choca un poco encontrarse con un exe en tu sistema linux, en fin aqui se muestra el ejemplo basico, la compilacion y ejecucion
/**
* Fichero HolaNena.cs
* compilacion: mcs HolaNena.cs
* Ejecucion: mono HolaNena.exe
*/
// importamos la libreria basica de sistema
using System;
// Definimos la clase Saludo
class Saludo
{
// Funcion Main
static void Main() {
// WriteLine escribe... Read more...
| 0 comments |
PELMAlink |
En el acceso a discos parece ser que el Kernel usa una configuracion bastante floja
y conservadora y se puede mejorar. Gracias al comando hdparm podemos mejorar el rendimiento
de manera muy apreciable.
Los discos IDE tienen capacidades que se pueden aprovechar como el DMA, las transferencias de 32bits
y el acceso a multiples sectores a la vez.
Como es el disco?
Podemos comprobar las capacidades del disco usando
[root@firewall root]# hdparm -i /dev/hda /dev/hda: Model=ST340014A, FwRev=3.06, SerialNo=3JX8JGSJ ... Read more...
| 2 comments |
PELMAlink |
Leer y escribir en un fichero de texto con VB .NET es muy facil.
Las funciones constructoras tienen muchas mas opciones de las que aqui se ven. Este es un ejemplo encapsulado en una clase:
Imports System.IO
Public Class Fichero
'constructor por defecto
Public Sub New()
nombrefichero = "fichero.txt"
End Sub
'Constructor parametrizado
Public Sub New(ByVal nombre As String)
nombrefichero = nombre
End Sub
Private nombrefichero As String
'guardar:... Read more...
| 0 comments |
PELMAlink |
Ejemplo simple de transaccion de BD con una
conexion simple de oleDB. Private Sub modificar() Dim conexion As System.Data.OleDb.OleDbConnection Dim comando As System.Data.OleDb.OleDbCommand Dim datos As System.Data.OleDb.OleDbDataReader Dim transaccion As OleDbTransaction Dim cont As Integer Dim conString As String Dim sentencia As String Dim contador As Integer Dim listaTMP As DropDownList cont = 0 contador = 0 'String de conexion para una bd access conString = "Provider=Microsoft.Jet.OLEDB.4.0;"... Read more...
| 0 comments |
PELMAlink |
Que pasa si hago una consulta a una BD y quiero mostrar el resultado en una tabla HTML?
Este es un ejemplo en que partiendo de una tabla de 4 columnas (vale, podria ser mas dinamica), se genera una tabla tomando los nombres de columna del propio resultado.
Private Sub consultaDetalle()
'Introducir aquàel código de usuario para inicializar la página
Dim conexion As System.Data.OleDb.OleDbConnection
Dim comando As System.Data.OleDb.OleDbCommand
... Read more...
| 0 comments |
PELMAlink |
Ejemplo basico de consulta a BD desde ASP .NET utilizando OleDB.
Imports System.Data.OleDb
Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents ddlEmpleados As System.Web.UI.WebControls.DropDownList
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
#Region " Código generado por el Diseñador de Web Forms "
'El Diseñador de Web Forms requiere esta llamada.
<System.Diagnostics.DebuggerStepThrough()>vate Sub InitializeComponent()
... Read more...
| 0 comments |
PELMAlink |
El ejemplo minimalista de una pagina asp.net con su extension aspx
Simplemente tiene un control label y muestra el mensaje standar de iniciacion <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <!-- Este script se ejecutara en el servidor --> <script language="VB" runat="server"> Public Sub Page_Load() lblSaludo.Text = "Hola, nena" End Sub </script> <HEAD> <title>Hola nena</title> </HEAD> <body> <form... Read more...
| 0 comments |
PELMAlink |
Jo, siempre se me olvidan los dos pasos.
'Metodo añadir estudiantes
Public Function addEstudiantes(ByVal unEstudiante As Estudiante) As Integer
If arListaestudiantes Is Nothing Then
ReDim arListaestudiantes(0)
Else
ReDim Preserve arListaestudiantes(UBound(arListaestudiantes) + 1)
End If
arListaestudiantes(UBound(arListaestudiantes)) = unEstudiante
End Function
Read more...
| 4 comments |
PELMAlink |
Este es el tipico acceso a BD desde paginas ASP
El mas cutre: abrir una bd access que se encuentra en el mismo directorio que la pagina ASP. <!-- ejemplo de acceso a BD --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>Pagina ASP 09 - Acceso a BD access</title> </head> <body> Ejemplo... Read more...
| 0 comments |
PELMAlink |
Imaginemos que tenemos un servidor de correo con sendmail y
multiples dominios. Para distinguir las cuentas con mismo nombre y distinto dominio hemos creado las cuentas asi: info@dominio.com -> cuenta unix: infor.dominio.com info@otrodominio.com -> cuenta unix: info.otrodominio.com Dentro de sendmail usamos el mecanismo virtusertable para mapear las direcciones de email con las cuentas reales Pero como se configura squirrelmail para que distinga esto // pello - dentro de src/compose.php //... Read more...
| 3 comments |
PELMAlink |
Ejemplo de formulario por ASP. Se envia a si mismo.
ASP distingue la forma de recibir las variables si son por GET o POST utilizando distintas funciones. <!-- ejemplo de formulario --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>Pagina ASP 08 - Ejemplo de formulario POST</title> </head> <body> Ejemplo... Read more...
| 4 comments |
PELMAlink |
Un par de ejemplos supersimples de funciones y el uso de librerias.
Ejemplo de ASP con funciones simples: <!-- ejemplo de libreria --> <!-- procedimiento para mostrar cabecera --> <% Sub cabecera(titulo) %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>Pagina ASP <%=titulo %></title> </head> <% end... Read more...
| 1 comments |
PELMAlink |
Para cuando te aprendes esto ya estara ipv6 en todas partes.
Bueno, de momento solo son 20 bytes
0 15 16 31 .____________________________________________________________________________.___ | 4-bit | 4-bit | 8-bit | 16-bit | | |version |long.cab.|tipo de serv.(TOS)| longitud total en bytes | | |________|_________|__________________|______________________________________| | | ... Read more...
| 0 comments |
PELMAlink |
Este es un ejemplo de POO y herencia en Visual Basic .NET
Jerarquia:
Producto
|
Limpieza Alimenticio
|
Carne Fruta
Esta es la superclase padre: Producto
Public Class Producto
'constructor
Sub New()
dblPrecio = 0.0
intStock = 0
End Sub
'constructor parametrizado
Sub New(ByVal precio As Double, ByVal stock As Integer)
dblPrecio = precio
intStock = stock
End Sub
'atributos
Protected... Read more...
| 0 comments |
PELMAlink |
Vamos a ver como se montan las estructuras de control if, while, etc en ASP:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>Pagina ASP 03 : estructuras de control</title> </head> <body> <% Dim a, b, c, d, e a = 2 b = 6 d = 4.56 e = "No por mucho madrugar amanece mas temprano, áéÃÂóú... Read more...
| 0 comments |
PELMAlink |
Asp es una jena que te pasas pero en fin, hay que aprender de todo
<!-- asp01.asp -->
<!-- Mi primer ASP, simplemente un saludo por pantalla -->
<html>
<head><title>Mi primera paginas ASP</title>
</head>
<body>
El primer saludo:<br>
<%
'esto es un comentario ASP
Response.write("Hola nena<br>")
%>
</body>
</html>
Otro ejemplo mas completillo:
<html> <head> <meta http-equiv="Content-Type" content="text/html;... Read more...
| 0 comments |
PELMAlink |
Este lenguaje es horrible.
Como se puede concebir un lenguaje de programacion que no cierra las sentencias con punto y coma??? En fin
Public Class Persona
'constructor por defecto
Sub New()
End Sub
'constructor con parametros
Sub New(ByVal nombre As String, ByVal apellidos As String, ByVal fecha As Date)
strNombre = nombre
strApellidos = apellidos
strFecha = fecha
End Sub
Private strNombre As String
Private strApellidos As String
... Read more...
| 1 comments |
PELMAlink |
El tipico ejemplo de paso de parametros por referencia en c suele ser un intercambio
entre enteros, al que se podria añadir un ejemplo con cadenas de texto que ademas son punteros.
/**
* $Id$
* ejemplo de swap en c
* Pello Xabier Altadill Izura
*/
// Declaracion de funcion swap -paso de parametros por referencias-
void swap(int * a, int * b);
// swap de cadenas
void swap_cadenas(char ** a, char ** b);
int main (int argc, char *argv[], char *envp[]) {
int a = 45, b = 89;
char *cadena_a... Read more...
| 2 comments |
PELMAlink |
Bueno, por una vez habra que permitirse un off-topic.
Ya se sabe que programar y cocinar es muy similar.
Atencion porque se hacen afirmaciones sobre el origen de la tortilla que pueden dar lugar a flames. Tortilla Howto /** $Id$ tortilla.c Antes que nada: La tortilla de patata no es tortilla española es mas bien tortilla Vasca o incluso tortilla Navarra. http://piderdubi.iespana.es/piderubi/tortilla.htm Si,... Read more...
| 3 comments |
PELMAlink |
Probando getline y la maldicion del fin de linea.
/** * probando getline * Cual es la forma optima de leer un fichero linea por linea? * quiza getline es mejor que gets, sobre todo para casos en los que * cada linea pueda ser muy larga. * La variable linea es un puntero. * Guardamos espacio con malloc y por si hay sorpresas el manual de glibc * nos dice que con getline se okupara mas memoria de forma automatica */ #include <stdio.h> #include <stdlib.h> #include <string.h> int main... Read more...
| 0 comments |
PELMAlink |
Un ejemplo de uso de la libreria de regex de glibc, que trae
herramientas basicas para las expresiones regulares.
/** * regexp.c * ejemplo ultrabasico de uso libreria de expresiones regulares de glibc * * Se debe incluir la cabecera regex.h * No se comparan dos strings, se debe "crear" un regex_t con la funcion regcomp * y luego ya comparamos * * (c) Pello Xabier Altadill Izura - www.pello.info */ #include <stdio.h> #include <stdlib.h> #include <regex.h> // Programa principal. // acepta... Read more...
| 1 comments |
PELMAlink |
El grub no es un corredor de fondo marroqui, es un gestor de arranque que esta
sustituyendo a lilo en muchas distribuciones. Hay veces que grub se desinstala o no esta del todo bien. En el arranque podemos usar el shell de grub para reinstalar el gestor de arranque. Se trata de decirle cual es el disco y cual es la imagen concreta de kernel que se quiere arrancar. Alternativamente se puede usar un diskette de arranque grub para hacer lo mismo, pero eso si, hay que conocer el fichero... Read more...
| 0 comments |
PELMAlink |
..o como instalar modulos perl comodamente.
Ya se sabe, esta web se usa para anotar las tipicas cosas que siempre se olvidan. Un de ellas es invocar el shell CPAN. Que es eso del CPAN? no, no es el codigo fuente de una barra de pan. Se trata del Comprehensive Perl Archive Network, el mega repositorio de modulos perl. Existen modules perl para todo. No es necesario listarlos, se puede contar con que existe todo lo que necesitas. Muchas veces necesitamos uno de esos modulos y no vienen con la distribucion... Read more...
| 0 comments |
PELMAlink |
Ejemplo de acceso a mysql desde c
Necesitaremos tener instalado el mysql-devel o libmysql para poder hacer que nuestro codigo C acceda a mysql. Ademas de eso debemos establecer con cuidado las opciones de compilacion: Si tenemos alguna duda podemos ejecutar mysql_config y este nos dira los parametros que necesitamos. Veamos el "hello_world" del acceso a mysql. /** * mysql_basico.c * ejemplo de uso de libmysqlclient * Necesitamos tener instalado el libmysqlclient * * USO: ./mysql_basico... Read more...
| 0 comments |
PELMAlink |
Un temilla liante suele ser el del FTP activo y pasivo.
Como se sabe el FTP es un protocolo que establece dos conexiones una de control (puerto 21) y otra de datos (20), las dos son TCP. NO hay conexiones UDP. Que no! En el FTP Activo el cliente primero inicia una conexion al puerto 21 del servidor y luego le indica al servidor que puerto va a utilizar para los datos. Entonces el servidor es el que se encarga de abrir la conexion desde su puerto 20 al puerto que le ha indicado el cliente. (la... Read more...
| 4 comments |
PELMAlink |
A vueltas con el tema de final de linea, los tokens de un string, y la entrada formateada o funciones scanf-fscanf.
/**
* tokens.c
*
* Codigo para probar:
* 0. pruebas de input formateado: scanf
* 1. lectura de un fichero de properties:
* ...
* nombre=valor
* nombre'=valor'
* ...
*
* 2. el uso de la funcion strtok
*
*/
#include <stdio.h>
#include <string.h>
int main (int argc, char *argv[]) {
int i;
char prueba[] = "vamos= a ver=si nos = entendemos=o que";
// Inicializamos con null
char... Read more...
| 1 comments |
PELMAlink |
Autentificacion de directorio en apache
Tipica tonteria que siempre se olvida. Para proteger un directorio en apache hay distintas formas y miles de opciones. Si simplemente queremos que un directorio este protegido por usuario y contraseña basta con crear un fichero de usuarios y añadir una directiva en apache. Hay 345820982 opciones, el tema de allow, deny, ... pero esto es lo simple. 1. Crear el fichero de usuarios y a la vez un usuario: root@linuz# htpasswd -c... Read more...
| 0 comments |
PELMAlink |
Quieres recoger opciones de linea de comandos en tu programa de c?
En la libreria glibc de linux se puede usar la funcion getopt para gestionar de forma correcta los argumentos. Este es un ejemplo con mucho printf para debug. /** * getopt.c * Pequeño ejemplo de codigo que muestra el uso de la funcion getopt * Es una funcion util para recoger parametros de programas, que va mas * alla de recorrer el array de argumentos argv[] */ // dentro de la libreria unistd encontramos la funcion... Read more...
| 0 comments |
PELMAlink |
Libreria standard c++
La sintaxis de inclusion de librerias puede variar segun la version y la plataforma del compilador c++. Puede ser asi: ... #include <iostream> using namespace std; ...O mas simple: ... #include <iostream.h> ...A lo que ibamos: al igual que en c, en c++ tenemos una libreria base para desarrollar aplicaciones. Aqui se hecha un rapido vistazo a todas ellas. #include <iostream> Libreria basica de entrada/salida.... Read more...
| 0 comments |
PELMAlink |
Capturando excepciones
Las excepciones son un mecanismo de c++ para capturar errores que se producen en tiempo de ejecucion. Un programa puede estar bien hecho pero por causas exogenas pueden producirse errores. Mediante este sistema hacemos que el codigo sea mucho mas ROBUSTO. /** * Excepciones.cpp * codigo que muestra como capturar excepciones y evitar que el programa * finalice inesperadamente. * * Pello Xabier Altadill Izura * */ #include <iostream.h> #include <fstream.h> #include... Read more...
| 4 comments |
PELMAlink |
Templates o plantillas c++
Gracias a c++ podemos definir clases-plantilla: son clases PARAMETRIZABLES por lo general entidades abstractas que se pueden concretar en algo mas concreto. El ejemplo mas claro es de las estructuras de datos tradicionales: Pilas, Listas, Colas, etc.. Esas estructuras pueden contener distintos tipos de datos: enteros, strings, objetos,... Debemos reescribir la logica de cada estructura para cada tio de dato? NO! Podemos definir una clase plantilla para la Lista,... Read more...
| 1 comments |
PELMAlink |
Programacion orientada a objetos
Es probable que te toque hablar con amiguetes que programan en la lengua de Mordor (visualbasic) o gente que programa en c ofuscado, o lo que es peor, desconocidos que te dicen que "programan" en HTML; estos intercambios de experiencias, esas afirmaciones sobre rendimientos de ejecucion pueden hacer tambalearse los cimientos de tu fe en la POO. Gracias a estas anotaciones rescatamos del olvido las excelencias de la POO y nos armamos de argumentos ante los herejes... Read more...
| 4 comments |
PELMAlink |
Matando procesos a mansalva!!
En ocasiones nos encontramos con un huevo de procesos que queremos matar, y se puede
probar con el comando killall pero no siempre cuela.
Este seria el tipico panorama para matar:
[root@linuz]# ps -axf
PID TTY STAT TIME COMMAND
1 ? S 0:25 init [3]
2 ? SW 0:01 [keventd]
3 ? SW 0:00 [kapmd]
4 ? SWN 0:00 [ksoftirqd/0]
6 ? SW 0:00 [bdflush]
5 ? SW 29:26 [kswapd]
... Read more...
| 1 comments |
PELMAlink |
Este script es simple pero util. sirve para poder hacer transferencias de ficheros por ftp desde tareas programadas, ya que es un ftp NO interactivo.
El script se llama ftpartomatico.sh #!/bin/sh # FTP artomatico # Pello Xabier Atadill Izura # a este script habra que darle permisos de ejecucion: 'chmod 755 ftpartomatico.sh' # Bastante util para mover un dump de sql o un tar.gz echo "Ejecutando `basename $0`" # parametros modificables USUARIO=gane1warro PASSWORD=conquewarro HOSTREMOTO=lanzadera.hacienda.mec.es SUBIR=bombalogica.tgz BAJAR=mideclaracion.pdf #... Read more...
| 15 comments |
PELMAlink |
el preprocesador
Cuando se compila un programa de c++ previamente se hace un preprocesamiento en el que se revisan determinadas variables de preprocesador. Con ellas lo que se consigue es que el compilador modifique el codigo fuente del programa antes de crear el ejecutable. Vamos varios usos utiles. /** * Preprocesador.cpp * Programa c++ que muestra el uso del preprocesador. * * Pello Xabier Altadill Izura * Compilacion: g++ -o Preprocesador Preprocesador.cpp * */ // include se utiliza... Read more...
| 0 comments |
PELMAlink |
Entrada y salida
A vueltas con el flujo (cin cout), vamos a ver un uso mas extendido del habitual. De paso conoceremos algunas de las trampas que nos esperan con los flujos, sobre todo por el tema de buffers. Veamos este ejemplo comentado /** * Flujos.cpp * Programa para mostrar el uso de flujos * * Pello Xabier Altadill Izura * Compilacion: g++ -o Flujos Flujos.cpp */ #include <iostream.h> // Disponemos de varios flujos: // cin : para la entrada de distintis tipos de datos... Read more...
| 0 comments |
PELMAlink |
Clases dentro de Clases
Una clase puede ser el atributo de otra clase. Veamos como metemos la clase soldado dentro del tanque, esta seria la cabecera:
/**
* Tanque.hpp
* Clase que define el objeto Tanque . El objeto tanque estara lleno
* de Objeto soldados, lo que nos sirve para demostrar el uso de clases
* como atributos, etc..
*
* Pello Xabier Altadill Izura
*
*/
#include <iostream.h>
#include "Soldado.hpp"
class Tanque {
public:
// constructores
Tanque();
... Read more...
| 0 comments |
PELMAlink |
Un ejemplo simple de pthread. Un hilo debe ir asociado a una funcion. Una funcion c se puede pasar como un parametro mas.
/**
* hilos.c
* Pello Xabier Altadill Izura
* un ejemplo simplon de hilos linux
*/
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <pthread.h>
void haz_algo(int *);
void haz_algo_simple(int *);
int h1 = 0, h2 = 0;
extern int
main(void)
{
pthread_t thread1, thread2;
printf("vamos a ver...
");
// creamos el primer
if (pthread_create(&thread1,... Read more...
| 3 comments |
PELMAlink |
Servidor PPTPD unleashed!! Vamos a la pagina por defecto del servidor pptpd de Linux mas extendido: http://www.poptop.org/ y descargamos la ultima version en RPM o source. Este servicio instala un fichero de configuracion: /etc/pptpd.conf Aqui interesa especificar la IP local y la remota del tunel: localip 192.168.10.1 (esta es la IP que se asignara al punto local) remoteip 192.168.10.2-254 (estas son las IP que se asignaran al punto remoto) Asi como la IP en la que escucha el servidor. listen 200.15.67.78 Atencion:... Read more...
| 0 comments |
PELMAlink |
Variables/Funciones estaticas
Dentro de las clases podemos definir atributos y metodos estaticos.
Tienen de particular que son accesibles sin necesidad de definir una clase
y que su valor es EL MISMO en todas los objetos que se vayan creando de una clase.
Es como una variable global de una clase.
Con este ejemplo se ve su uso, y de paso se revisa el tema de punteros a funciones. (si, has leido bien). /** * Soldado.hpp * Clase que define el objeto soldado muestra el uso de variables... Read more...
| 0 comments |
PELMAlink |
GDB
Bueno venga, ya vale de llenar nuestro codigo de printf("kk") para depurarlo
y vamos a usar el gdb. Una herramienta oscura a la par que poderosa. Aqui anoto
los cuatro comandos basicos.
Preparando el terreno Primero compilamos el codigo con el flag -g para una mejor compilacion. Se genera una tabla de simbolos mejorada linuz# gcc -g pogama.c -o pogamaAunque si queremos una mayor depuracion podemos usar el flag -ggdb que generara informacion mas especifica de gdb. linuz#... Read more...
| 0 comments |
PELMAlink |
La herencia multiple
Una de las oportunidades que nos ofrece el lenguaje c++ es la posibilidad de que un objeto tenga la herencia de mas de una clase; esta ventaja fue considerada por los desarrolladores de Java como una pega y la quitaron, e incluso hay desarrolladores de c++ que prefieren evitar este tipo de herencia ya que puede complicar mucho la depuracion de programas Para ilustrar un caso de herencia multiple hemos definido la superclase Habitante; de ella heredan dos clases distintas:... Read more...
| 0 comments |
PELMAlink |
La herencia
Como bien se sabe la herencia no se reparte: se descuartiza. Bromas aparte, la herencia constituye una de las herramientas mas poderosas de culto OO. Si una clase hereda de la otra, lo que hereda son todos sus atributos y metodos. Ademas de heredarlos puede sobreescribirlos, tanto los constructores-destructores como los metodos convencionales. Veremos un ejemplo claro que resume lo que se puede hacer y los efectos de la herencia Por un lado vemos la clase generica... Read more...
| 0 comments |
PELMAlink |
Arrays
Se dice arrays o arreglos? en fin. En c++ podemos definir y usar los arrays casi como en C. Ademas tenemos la ventaja de poder crear arrays de objetos. Veamos un programa en c++ que juega con los arrays:
/**
* ArrayEjemplo.cpp
* Clase que inicializa y maneja algunos arrays
*
* Pello Xabier Altadill Izura
*
* Compilado: g++ ArrayEjemplo.cpp -o ArrayEjemplo
*/
#include <iostream.h>
// Funcion principal
int main () {
// Declaramos dos arrays de enteros de 15 elementos [0..14]
int... Read more...
| 0 comments |
PELMAlink |
Sobrecarga y valores por defecto
En un clase se pueden sobrecargar los metodos y los constructores, e incluso se pueden asignar valores por defecto a los parametros (como en php). Veamos el ejemplo del coche un poco mas desarrollado.
/**
* Coche.hpp
* Clase que representa un coche
*
* Pello Xabier Altadill Izura
*
*/
#include <iostream.h>
class Coche {
private:
char *marca;
int cilindrada;
int caballos;
enum marcha { Primera, Segunda, Tercera, Cuarta, Quinta, Pto_Muerto};
public:
Coche();
Coche(int... Read more...
| 5 comments |
PELMAlink |
Las referencias
Una referencia es otra forma de acceder a un dato, una especie de alias. Cualquier operacion sobre una referencia afectara a ese dato al que hace referencia. Veamos un ejemplo simple:
/**
* Referencias.cpp
* Programa que muestra el uso de referencias
*
* Pello Xabier Altadill Izura
*
* Compilado: g++ Referencias.cpp -o Referencias
*/
#include <iostream.h>
int main() {
// Definimos un dato y su referencia
int numero;
int &referenciaNumero = numero; // Ahi se... Read more...
| 1 comments |
PELMAlink |
Los punteros
Acaso creiais que en c++ no habia punteros? eso solo ocurre en Java. Los punteros no contienen datos, contienen direcciones de memoria. Para cada tipo de dato hay que definir un puntero.
/**
* Puntero.cpp
*
* Clase que muestra las direcciones de variables
* Pello Xabier Altadill Izura
* Compilar: g++ Puntero.cpp -o Puntero
*/
#include <iostream.h>
int main () {
// Creamos varias variables:
int pruebaInt = 99, prueba2Int;
short pruebaShort = 34;
char carac = 'a';
int... Read more...
| 11 comments |
PELMAlink |
Iteracion con etiquetas
Es la manera primigenia de implementar iteraciones pero lo cierto es que el uso de etiquetas no se recomienda ya que es dificil de entender un programa con etiquetas. A ser posible hay que evitarlas.
/**
* Loop.cpp
*
* Programa que muestra como usar iteraciones
* Pello Xabier Altadill Izura
* Compilar: g++ Loop.cpp -o Loop
*/
#include <iostream.h>
// Programa principal
int main () {
cout << " Hola, vamos a mostrar un loop " << endl;
//Inicializamos variables
int... Read more...
| 0 comments |
PELMAlink |
Tu primera clase c++
No hay que perder de vista el hecho de que c++ es un lenguaje orientado a objetos.
Sin animos de volver a explicar que es la POO, los beneficios que constituye vamos a limitarnos a resumir. Una clase c++ es la representacion de un objeto. Un objeto es una entidad formada por sus atributos y sus metodos. Con el afan de hacer las cosas ordenadamente, siempre se separa la definicion de la clase en un fichero de cabedeceras (extension .hpp, similar al .h de lenguaje c) y la implementacion... Read more...
| 0 comments |
PELMAlink |
El camnio de c++ es largo, pero se sigue avanzando.
Veamos las funciones inline, un recurso interesante para mejorar el rendimiento.
/** * Inline.cpp * Programa para probar funciones Inline * Las funciones Inline no se compilan como funciones aparte, * lo que se hace al compilar es añadir el contenido de la funcion haya * donde se se invoca. Con lo que es mucho mas rapido de ejecutar * y ademas nos da la limpieza de separar el codigo. * * Pello Xabier Altadill Izura * * Compilado: g++... Read more...
| 4 comments |
PELMAlink |
Bueno, conociendo los tipos de datos ya podemos empezar a operar con ellos.
Dentro de c++ tenemos los tipicos operadores matematicos + - * /
y tambien los operadores unarios (++ --)
En este primer ejemplo vemos operadores unarios y la asignacion multiple.
/**
* Operadores.cpp
* Programa para probar algunos operadores
* Pello Xabier Altadill Izura
*
* Compilado: g++ Operadores.cpp -o Operadores
*/
#include <iostream.h>
int main () {
// Sacamos por salida standar un mensaje
cout << "Vamos... Read more...
| 4 comments |
PELMAlink |
Con este (mejorable) script se comprueba un determinado servicio. Se comprueba si existe su pid y si su puerto esta abierto. En caso de no estar abierto se ejecuta el comando especificado.
En este ejemplo se ve el caso del servicio proftpd:
#!/bin/bash
# comprobador de proceso
NOMBRE=proftpd
PIDFILE=/usr/local/var/proftpd.pid
PUERTO=21
COMANDO="/etc/rc.d/init.d/proftpd restart"
echo comprobando si $NOMBRE esta OK...
if [ -f ${PIDFILE} ]
then
echo PID [`cat ${PIDFILE}`]
netstat... Read more...
| 0 comments |
PELMAlink |
Los tipos de datos de c++ no varian mucho respecto a c y son bastante evidentes, tal y como se puede apreciar en este codigo.
/**
* Tipos.cpp
* Programa para sacar el tamaño de cada tipo de datos
* Pello Xabier Altadill Izura
*
* Compilado: g++ Tipos.cpp -o Tipos
*/
#include <iostream.h>
int main () {
// Sacamos el tamaño de cada tipo
cout << "El tamaño del int es: " << sizeof(int) << " bytes.
";
cout << "El tamaño del short es: " << sizeof(short)... Read more...
| 41 comments |
PELMAlink |
Vamos a ver como se declaran las funciones en c++.
No tiene ningun misterio, es igual que en c. Siempre hay que especificar el tipo de retorno.
/**
* Funcion.cpp
* Programa con llamada a una funcion
*
* Pello Xabier Altadill Izura
*
* Compilado: g++ Funcion.cpp -o Funcion
*/
#include <iostream.h>
// Funcion: llamada
int llamada (int x, int y) {
cout << "Estamos en la funcion!!" << endl;
return (x+y);
}
int main() {
// Estos comentarios son propios de C++
cout << "Vamos a llamar a la funcion.."... Read more...
| 0 comments |
PELMAlink |
Bueno, vamos a ver si en 21 dias se va creando codigo c++ y se puede aprender este lenguaje de forma ordenada.
Se esta probando este codigo con gcc.
Hoy es el dia uno e incluyo el código mas simple posible.
/** * Hello.cpp * Programa que simplemente saca la palabra hello world por pantalla * Pello Xabier Altadill Izura * * Compilado: g++ Hello2.cpp -o Hello2 */ #include /** *... Read more...
| 2 comments |
PELMAlink |
Sistema de ficheros en unix/linux
se ejecuta "ls /" para ver desde la raiz.
Hay directorios que pueden cambiar segun la distribucion que sea.
Las de linux se parecen bastante, pero en general tienen lo mismo.
/
+-/bin : los binarios MAS basicos como: ls, cd, pwd, cp, rm
+-/boot : archivos de arranque, imagen de kernel.
+-/cdrom : punto de montaje del cdrom
+-/etc : configuracion. Todas las configuraciones (red,scripts de inicio,firewall,usuarios)
+-----/mail/ : configuracion de sendmail
+-----/rc.d/ : ficheros...
Read more...
| 0 comments |
PELMAlink |
Muchas veces puede resultar interesante
acceder a un servidor por consola de manera comoda, sin tener que pinchar tarjetas
graficas, ni pantallas, ni teclados ni nada. Si se redirigue la salida por el puerto
serie podemos acceder a la maquina como si fuera un router.
Hay dos formas de redirigir la salida al puerto serie:
* Por hardware:
En la bios puede
haber opciones para establecer que la salida salga por el puerto serie, incluso
desde el ARRANQUE. Por otro lado hay que asegurarse de que en la bios...
Read more...
| 0 comments |
PELMAlink |
# Generado por iptables-save
# necesita revision, falta el NAT para la LAN
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -p icmp -j ACCEPT
-A INPUT -i eth2 -p icmp -j ACCEPT
-A INPUT -i eth0 -s ip-externa-confianza -j ACCEPT
-A INPUT -s 192.168.1.0/255.255.255.0 -j ACCEPT
-A INPUT -p udp -m udp --sport 161 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --sport 20:21 -m state --state...
Read more...
| 11 comments |
PELMAlink |
¿ Como montamos un equipo linux que reciba logs de
otros equipos, tanto unix como windows ?
En Unix existe un servicio llamado Syslog que por defecto recoge los eventos del sistema que nosotros
le digamos. Por defecto solo guarda mensajes locales, pero syslog es capaz de escuchar en el puerto UDP 514
para recibir logs externos.
Para que el syslog acepte conexiones remotas, debemos pasarle estas opciones de ejecucion:
Código:
SYSLOGD_OPTIONS="-r -x -m0"
Donde la opcion r es para que...
Read more...
| 5 comments |
PELMAlink |
Ocultar o modificar banners de servidores en linux. Cuando hacemos por ejemplo un "telnet ip 25" podemos ver que servidor de correo esta instalado y su version. Es recomendable ocultar ese banner para que los programas de escaneo de puertos no revelen mas alla de un puerto abierto. Ahora que NMAP tambien saca las versiones de los servidores, habra que ponerse las pilas.
Banner de sendmail
Dentro de sendmail.cf
Código:
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
Es la directiva que podemos cambiar...
Read more...
| 0 comments |
PELMAlink |
Muchas veces las tablas de mysql se corrompen, es inevitable, el sistema gestor de bd mysql no es muy fiable(carece de integridad referencial, etc.)
A veces el error esta en los ficheros MYI que albergan las tablas y basta con ejecutar un myisamchk para arreglarlo.
Desde shell:
Código:
myisamchk mi_tabla.MYI
Checking MyISAM file: mi_tabla.MYI
Data records: 21991 Deleted blocks: 0
- check file-size
- check key delete-chain
- check record delete-chain
- check index reference
- check data record...
Read more...
| 0 comments |
PELMAlink |
Cuatro cosillas para poner el postfix funcionando para un dominio y permitir el relay a una red.
Bueno que pasa si quiero poner en marcha un postfix para mi dominio (campeon.net) rapido!
En redhat podemos poner sendmail o postfix, no pueden convivir juntos.
Si ponemos postfix puede que cree tb un binario llamado sendmail , pero es por compatibilidad. Postfix nacio con la idea de sustituir a sendmail y es mucho mas simple que este.
Supongamos que tenemos un server en nuestra LAN 192.168.2.0/24
Bueno. Pues vamos...
Read more...
| 0 comments |
PELMAlink |
Imaginemos que un gerente malvado quiere controlar a sus empleados y quiere registrar todos los accesos a la web que hacen (menos los suyos 'of course'). Usando un proxy squid o cualquier otro que genere los logs en el mismo formato, podemos hacer que se guarden en un gestor de BD para su posterior analisis.
Mediante un script de perl se puede analizar el log del proxy cache SQUID y generar un fichero CSV (texto delimitado por punto y coma) para meterlo en una BD.
Luego con un script de shell se crea la...
Read more...
| 7 comments |
PELMAlink |
Contexto linux.
Puede que nos interese crear un fichero swap en lugar de habilitar una particion de disco unicamente con ese fin (por ejemplo, en equipos con el particionado hecho, podriamos crear un espacio swap sin alterar el disco).
Para ello podemos utilizar el comando dd, de la siguiente manera:
Vamos a crear un swap de 128 megas en el fichero /var/swap
Código:
dd if=/dev/zero of=/var/swap bs=1000000 count=128
Con eso hemos creado un fichero de 128 megas en bloques de 1 mega,
relleno de...
Read more...
| 3 comments |
PELMAlink |
|