elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Temas
Páginas: 1 2 3 4 5 6 [7] 8
61  Foros Generales / Noticias / Microsoft Robotics Developer Studio liberada gratuitamente en: 29 Mayo 2010, 16:18 pm
Microsoft RDS es un entorno de programación y simulación en 3D para robótica, y además es compatible con otras platadormas como iRobot, LEGO Mindstorms, CoroWave y Parallax.

Ojo, esto no quiere decir que hayan liberado el código, sino, que ahora la licencia de estudiantes es gratuita y sin restricciones.

Puedes descargarlo en este enlace: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=c185a802-5bbe-4f28-b448-aefe63a7eff7
62  Programación / Desarrollo Web / Future of Web Design: HTML5 coding demo en: 27 Mayo 2010, 18:51 pm
Copio directamente una parte de un post de una noticia en opera developer network:

Citar

Demo page: http://people.opera.com/brucel/talks/2010/FOWD/FOWD-brucelawson.html

Video of presentation (not transcribed yet by organiser) http://vimeo.com/12042789

Patrick Lauke's fancy swap video playlist  http://people.opera.com/patrickl/articles/chip.eu-video-article/examples/fancy-swap/

Miro Video Converter (now does WebM, too!)  http://www.mirovideoconverter.com/

Diagram: What HTML5 isn't  http://www.flickr.com/photos/24374884@N08/4603715307/


Saludos!
63  Comunicaciones / Mensajería / [Guía] - Conectar Opera IRC Client con el canal de elhacker.net en: 17 Mayo 2010, 17:19 pm
1) Descargar e instalar la última versión de Opera en www.opera.com
2) Luego, Ejecuten Opera, arriba a la derecha hay un nuevo Menú con una O, este es el menú Opera.
3) Clic en Menú Opera > Mail and Chat Accounts (en español: Cuentas de Correo y Chat)
4) Se abre una ventana llamada Manage Accounts (Administrar cuentas) Clic en Add (Agregar)
5) En la nueva Ventana elijan Chat IRC de la lista, clic Next (Siguiente)
6) Les pide Nombre e Email, clic Next (Siguiente)
7) Luego Pide el nick, éste es el nombre que todos ven en el chat. Next (siguente)
8) Ahora les pide el servidor, escriban irc.freenode.net, click Finish (Finalizar)
9) Aparece una ventana para adminstrar los servidores de irc, a la derecha sale un boton que dice Join (Unirse) Clic ahí.
10) Hay un comboBox (Lista desplagable) , ábranlo y escojan irc.freenode.net en caso de que NO esté seleccionado.
11) En el campo de texto de abajo escriban #elhacker.net y click en OK (Aceptar)

Luego tienen que seguir las mismas reglas para identificarse que ya están escritas http://docs.google.com/View?id=ddqtfnx3_41789s3vjdz

Espero les sirva de ayuda.

Saludos.
64  Foros Generales / Foro Libre / ¿Por qué hay tan pocas chicas ingenieras? - Respuesta en: 17 Mayo 2010, 16:06 pm
Hola,

¿Nunca se habían preguntado ésto? Pues acá está la respuesta:

65  Foros Generales / Sugerencias y dudas sobre el Foro / Por qué ahora .Net es vb.Net? en: 12 Mayo 2010, 20:37 pm
Me parece que está fuera de lugar, qué pasa con los otros lenguajes de .Net? y de paso, donde queda todo el resto del Framework?

Saludos
66  Foros Generales / Sugerencias y dudas sobre el Foro / [Sugerencia] Programación VB? > Subforo de .Net? en: 4 Mayo 2010, 18:07 pm
Hola, a mi me parece que no tiene nada que ver el subforo de .Net dentro de la categoría de Programación en VB.

Saludos!

EDIT: Probablemente sea mejor una categoría de lenguajes que corran en VM como Java, .Net...
67  Programación / .NET (C#, VB.NET, ASP) / DotNetZip - Zip and Unzip for .Net en: 16 Marzo 2010, 14:32 pm
He visto varios post en donde se pide ayuda para comprimir una carpeta, o manipular archivos zip.

Y bueno, navegando me conseguí esto, traduzco la descripción al español:

Citar
DotNetZip es una herramienta fácil de usar, rápida, gratuita biblioteca de clases y herramientas para manipular los archivos zip o carpetas. Comprimir y descomprimir es fácil: con DotNetZip,. NET escrito en Visual Basic, C # (cualquier lenguaje .NET) puede crear, leer, extraer, o actualizar archivos zip. En mono, o MS. NET.

DotNetZip funciona con la version full de .NET Framework, y también funciona en dispositivos móviles que utilizan el. NET Compact Framework. Crear y leer archivos zip en VB, C #, o cualquier otro. NET, o cualquier otro entorno de programación. DotNetZip apoya estos escenarios:
- Una aplicación ASP.NET que se crea de forma dinámica los archivos ZIP y permite que un navegador para descargar
- Un servicio de Windows que periódicamente comprime un directorio para fines de copia de seguridad y de archivo
- Un programa de WPF que modifica los archivos existentes - cambiar el nombre de las entradas, la eliminación de las entradas de un archivo, o añadir nuevas entradas a un archivo
- Una aplicación de Windows Forms que crea AES-archivos zip cifrado de la vida privada de los contenidos archivados.
- Una secuencia de comandos administrativos en PowerShell o VBScript que realiza la copia de seguridad y archivo.
- Un servicio de WCF que recibe un archivo zip como un archivo adjunto, y dinámicamente descomprime el zip a un flujo para el análisis de
- Una vieja escuela ASP (VBScript) de aplicación que genera un archivo ZIP a través de la interfaz COM para DotNetZIp
- Una aplicación de Windows Forms que se lee o actualizaciones de los archivos de SAO
- La creación de archivos zip de los contenidos corriente, de ahorro de un arroyo, la extracción de un arroyo, la lectura de un arroyo
- La creación de archivos de auto extracción.


http://dotnetzip.codeplex.com/

No se si ya lo conocían, yo no jeje, pero bueno...

Un saludo!
68  Programación / .NET (C#, VB.NET, ASP) / [Tutorial] Tcp/IP Sockets C# en: 12 Marzo 2010, 22:40 pm
Una red de computadoras (ordenadores) consiste en máquinas interconectadas mediante canales de comunicación.  Estas máquinas son Hosts y Routers. Los Hosts son computadoras que ejecutan aplicaciones, por ejemplo un navegador. Los Routers son equipos cuyo trabajo es retransmitir información de un canal de comunicación a otro. Estos pueden ejecutar programas, pero normalmente no son aplicativos. Para este post un canal de comunicación es un medio de transmisión de secuencias de bytes de un host a otro, este puede ser broadcast, como Ethernet, un modem dial-up, o algo más sofisticado.

Otro término que tenemos que definir es Protocolo. Un protocolo es un acuerdo acerca de los paquetes intercambiados por comunicación de los programas y lo que significan, además describe como está estructurado, por ejemplo: donde está la información del destinatario en el paquete y de que tamaño es. Un ejemplo es Http (Hypertext Transfer Protocol) que resuelve el problema de transferir objectos hipertexto entre servidores y hacerlo entendible por personas.

Ahora vamos directo al grano: ¿Qué es un Socket?

Un socket es una abstracción que permite a la aplicación “enchufarse” a la red para poder recibir y enviar data. Los principales tipos de socket hoy en día son los Stream Socket y los Datagram Socket. Los Stream Sockets utilizan TCP e IP para proveer n servicio confiable. Los Datagram Sockets usan UDP.

Otro concepto importante son el Stream Reader y el Stream Writer.

Son clases que nos ayudan a escribir y leer del buffer del socket. Sino existieran habría que leer el buffer y escribir en él directamente, cosa que es un poco engorrosa e innecesaria para la mayoría de las aplicaciones.

Código de ejemplo:



Codigo Servidor
Código
  1. public class NetworkServer
  2.  
  3. {
  4.    public static void Main()
  5.    {
  6.       //creamos un thread para que el server
  7.       //se ejecute en paralelo con el cliente
  8.       //esto es solo por motivos prácticos del demo
  9.       new Thread(new ThreadStart(
  10.            delegate {
  11.                new NetworkServer().Start(); }
  12.                    )).Start();
  13.  
  14.       //Iniciamos el Cliente
  15.       new Client().Connect();
  16.       Console.WriteLine("Listo");
  17.       Console.Read();
  18.    }
  19.  
  20.    public  void Start()
  21.    {
  22.       // Creamos un TcpListener y le indicamos que
  23.       //puerto va a poner en escucha.
  24.       TcpListener tcpListener = new TcpListener(9898);
  25.  
  26.        //Iniciamos la esucha
  27.       tcpListener.Start();
  28.  
  29.       //Este método queda bloqueado hasta que
  30.       //se conecte un cliente
  31.       Socket socketForClient = tcpListener.AcceptSocket();
  32.       if (socketForClient.Connected)
  33.       {
  34.  
  35.          // Si se conecta
  36.          Console.WriteLine("Cliente conectado.");
  37.          //Creamos el networkSream, el Reader y el writer
  38.  
  39.          NetworkStream networkStream =
  40.                   new NetworkStream(socketForClient);
  41.  
  42.          StreamWriter streamWriter =
  43.                   new StreamWriter(networkStream);
  44.  
  45.          StreamReader streamReader =
  46.                   new StreamReader(networkStream);
  47.  
  48.          //Esta es la data a enviar.
  49.          string theString = "Esta es la data de envio";
  50.  
  51.          try
  52.          {
  53.              //Escribimos la data en el stream
  54.              streamWriter.WriteLine(theString);
  55.  
  56.              //Ahora le decimos que la mande.
  57.              streamWriter.Flush();
  58.  
  59.              //Esperamos data del cliente
  60.              //Y la escribimos por consola.
  61.               theString = streamReader.ReadLine();
  62.               Console.WriteLine(theString);
  63.            }
  64.            finally
  65.            {
  66.                //Cerramos las conexiones
  67.                streamReader.Close();
  68.                streamWriter.Close();
  69.                networkStream.Close();
  70.                socketForClient.Close();
  71.            }
  72.        }
  73.    }
  74. }
  75.  


Codigo Cliente
 
Código
  1. public class Client
  2. {
  3.    public void Connect()
  4.    {
  5.        TcpClient socketForServer;
  6.        string server = "localhost";
  7.  
  8.        try
  9.        {  
  10.            //Creamos un TcpCliente y le pasamos
  11.            //el server y el puerto.
  12.            socketForServer = new TcpClient(server, 9898);
  13.        }
  14.        catch
  15.        {
  16.            Console.WriteLine(
  17.            "No se pudo conectar a {0}:9898", server);
  18.            return;
  19.        }
  20.  
  21.  
  22.        //aqui es lo mismo que en el server. Usamos StreamWriter y Reader.
  23.        NetworkStream networkStream = socketForServer.GetStream();
  24.  
  25.        StreamReader streamReader =
  26.              new System.IO.StreamReader(networkStream);
  27.  
  28.        StreamWriter streamWriter =
  29.              new System.IO.StreamWriter(networkStream);
  30.  
  31.        try
  32.        {
  33.            string outputString = streamReader.ReadLine();
  34.            Console.WriteLine(outputString);
  35.            streamWriter.WriteLine("Mensaje desde el Cliente");
  36.            streamWriter.Flush();
  37.        }
  38.        catch
  39.        {
  40.            Console.WriteLine("Exception reading from Server");
  41.        }
  42.        finally
  43.        {
  44.            networkStream.Close();
  45.        }
  46.    }
  47. }






Esto es un demo muy básico, pero funciona correctamente. Se le pueden añadir funcionalidades como multithreading para poder aceptar a varios clientes al mismo tiempo.
69  Programación / .NET (C#, VB.NET, ASP) / [Tutorial] ¿System.Threading? ¡Cómo y Cuándo! (C#) en: 13 Diciembre 2009, 20:08 pm
Bueno este es un tuto que escribí hace unos 6 meses, y ahora lo comparto con la comunidad del hacker.net. Si encuentran algún error o algo, me avisan, La idea es ayudarnos y recordar que todos somos humanos.. :)

La programación Multi-Threading es uno de los aspectos peores manejados entre los programadores, por eso antes de comenzar a utilizarlos, debemos saber en qué consiste.



¿Qué es un hilo de ejecución?

Un Hilo de ejecución o Thread es el contexto en donde se está ejecutando una porción de código, es decir, desde que comienza un programa éste fluye a través de un Hilo de ejecución (de ahora en adelante Thread). Antes de que los sistemas operativos soportaran Multi-Threading solamente un Thread era el que llevaba el flujo de la aplicación. Ahora con las nuevas tecnologías y lo avanzados que están los sistemas operativos podemos crear nuevos Threads para desarrollar aplicaciones que las aprovechen y así mejorarlas en varios aspectos como el rendimiento o simplemente mejorar la interfaz de usuario.



Ok ya se que es Multi-Threading, pero ¿Cuándo debo utilizarlo?

Existen varias ocasiones en las que es ideal el uso de un Thread o varios en conjunto para realizar una tarea. Por ejemplo:

Caso 1:

En un formulario tienes una consulta que se tarda aproximadamente 1 minuto, la consulta se ejecuta en el evento Click de un botón llamado button1 (jeje) , el usuario al hacer click y lanzar el evento va a tener que esperar que el proceso termine, mientras ésto ocurre el formulario se deshabilita ya que el Thread que ejecuta el proceso es el mismo que dibuja la ventana, por lo cual aparece el famoso "(No Responde)" en el título.

- Solución: Lanzar el proceso en otro Thread y deshabilitar el botón hasta que termine. Mientras se ejecuta avisar al usuario, ya sea el progreso o simplemente el estado.

Caso 2:

Tienes dos procesos (A y B) que se tienen que ejecutar al mismo tiempo, y no tienen nada que ver uno con otro y normalmente ejecutarías A y luego B para luego continuar el flujo de la aplicación, pero ¿Qué pasaría si A se tarda 30 segundos y B 45 segundos?

- Solución: utilizar dos hilos paralelos para la ejecución y así tomar ventaja de los Procesadores nuevos multi-núcleo.



Existen otros casos, de los que estaremos hablando en próximos post!



Ahora por fin, ¿Cómo lo hago?

Antes de comenzar necesitamos definir un último concepto, llamado Delegado. Un delegado es un tipo de dato especial el cual tiene como función "apuntar" a un método cualquiera. Para que ésto ocurra el delegado debe de estar declarado de forma tal que coincida con la firma del método (Entiéndase firma por los parámetros).

Para todos los ejemplos se usará el siguiente método: void DoProcess(string text).

Cómo uso un delegado:

Primero creamos un delegado que coincida con la firma del método:

Código:
delegate void DoProcessDelegate(string text);

luego instanciamos:

Código:
DoProcessDelegate delegate = new DoProcessDelegate(DoProcess);

y ejecutamos:

Código:
string a = delegate("hola mundo");

Si! así de fácil!

Y ahora bien, existen varias vías para crear un proceso nuevo e iniciarlo:

Utilizando un Delegado

Instanciamos y apuntamos hacia el método:

Código:
DoProcessDelegate delegate = new DoProcessDelegate(DoProcess);

Llamamos al método BeginInvoke del delegado para comenzar la ejecución asíncrona donde nos pide los parámetros del delegados más dos, cuales son: AsyncCallback y un object.

El AsyncCallback hace referencia al método que se llama cuando se completa el proceso asíncrono.

El object lo recibe el método que apunta el AsyncCallback.

Ahora tenemos otro método llamado void ProcessEnded(IAsyncResult obj) y pasamos "prueba" como token, aunque debería ser un valor diferente en casos de que se ejecute varias veces la llamada a BeginInvoke En éste caso podemos pasar un Guid: Guid.NewGuid().

Código:
delegate.BeginInvoke("Hola Mundo", new AsyncCallback(ProcessEnded), "prueba");

Ahora el  método DoProcess se ejecuta de forma asíncrona y luego el ProcessEnded cuando éste último termine y le llega como parámetro "prueba".

Y ¿Qué pasa si nuestro DoProcess retorna algún valor? pues simplemente en el método ProcessEnded llamamos a delegate.EndInvoke(obj). El obj es el parámetro de ProcessEnded.



Utilizando la clase Thread

Otra forma de ejecutar un método asíncrono es usando la clase Thread. Ésta clase es la base de la ejecución de los Threads. Su funcionamiento es un poco más complicado. Ojo! su funcionamiento más no su llamado, es decir, mediante el uso de la clase Thread tenemos a la mano un conjunto de opciones y clases un poco más avanzadas sobre todo para el tema de la sincronización, de el cual les hablaré en otro post.

Básicamente la clase tiene dos constructores, uno pide un delegado ThreadStart y otro pide un delegado ParametrizedThreadStart, el primero es para apuntar hacia un método sin parámetros y el otro hacia uno con un parametro tipo object.

Ambos funcionan de la misma manera por lo que vamos a utilizar ThreadStart. Ahora tenemos un método nuevo
Código:
void DeleteAllFiles();

Código:
Thread myThread = new Thread(new ThreadStar(DeleteAllFiles));

ahora simplemente para iniciar el thread solo hace falta llamar al método:

Código:
myThread.Start();

Éste tiene una sobrecarga de un parametro object para el ParametrizedThreadStart.



La clase ThreadPool

Un pequeño ejemplo del uso de ThreadPool es el siguiente :

El método QueueUserWorkItem tiene un parámetro el cual es un delegado de tipo WaitCallback, que es la referencia al método que se va a ejecutar. También tiene una sobrecarga para pasar un object. 

Código:
public void main(string[] args)

{

        ThreadPool.QueueUserWorkItem(new WaitCallback(MyMethod));

         Thread.Sleep(5000);  //El Sleep "duerme" el hilo acual, sino hacemos ésto,

                                          //otra cosa u proceso el hilo del ThreadPool no

                                          //se ejecutará ya que el hilo principal se termina.

}

public void MyMethod(object obj)

{

       //Algún proceso

}


El componente BackgroundWorker

El BackgroundWorker es un componente que podemos arrastrar hasta el formulario, control de usuario o simplemente declararlo dentro de nuestro código. Ejmplo básico de su uso:

Código:
static void main(string[] args)

{
     BackgroundWorker worker = new BackgroundWorker();
     worker.DoWork+=new DoWorkEventHandler(worker_DoWork);
     worker.RunWorkerAsync(); //aquí tenemos una sobre carga para pasarle

                                                 //un object al método worker_DoWork

}

static void worker_DoWork(object sender, DoWorkEventArgs e)

{

     // éste código se ejecuta asíncrono

     //en el parámetro DoWorkEventArgs encontramos el object que se envia desde RunWorkerAsync()

     //además de la posiblidad de cancelar en e.Cancel, y de enviar un valor de retorno por e.Result

}


Además de proveernos con funcionamiento asíncrono, el BackgroundWorker nos ofrece maneras para que nuestros métodos "reporten" el progreso del proceso, además de la capacidad de permitir la interrupción de manera fácil de nuestro Thread. El resultado de la operación que se envía a través de e.Result lo podemos encontrar fácilmente suscribiéndonos al evento RunWorkerCompleted del  BackgroundWorker.



Bueno ésto fue todo por ahora! Pronto publicaré más artículos cómo éste y de otros tipos también!..

Gracias por leer! y no se olviden de comentar :)
70  Programación / Ejercicios / Ejercicios para C# Anvanzado (O lo que puedan ^^) Nivel 1 en: 8 Diciembre 2009, 02:35 am
Comenzamos un tema fácil en .Net:

- Escribir un chat sencillo con server.
- Todo debe ser programado utilizando modelos de componentes.
- Agregarle Multithreading al chat.
- Crear base de datos de usuario, conversaciones y log de chat
- Migrar la aplicación a Asp.net utilizando el mismo modelo de componentes

Todo debe ser lo más sencillo posible..

Intentaré ayudarlos si suben los proyectos, así que programen con claridad..

Un saludo!! :)
Páginas: 1 2 3 4 5 6 [7] 8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines