Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - LastDragon

#1


me estan preguntando por privado el asunto de la terminal, que url les doy para que lo lean por que ya lo perdi de vista.
#2
.NET (C#, VB.NET, ASP) / Ensamblador en .NET
19 Agosto 2006, 00:30 AM
Un ensamblador orientado a objetos =)

.assembly HelloWorld
{
}

.namespace ilamscosa
{
.class private auto ansi beforefieldinit MainClass
{
.method public hidebysig static void Main(string[] args) cil managed
{
.entrypoint
.maxstack  1
ldstr      "Hola Ensamblador de .NET"
call       void [mscorlib]System.Console::WriteLine(string)
ret
}
}
}
#3
GNU/Linux / mas SWAP al vuelo
12 Mayo 2006, 16:35 PM



Creando SWAP al vuelo.

Cuando se requiere mas SWAP de la configurada se puede recurrir a un archivo SWAP de emergencia


Como root revisa lo siguiente:

Observa tu sistema y decide cuanto swap quieres asignare

Puedes usar  comandos como FREE o TOP, en este ejemplo obtengo esto del TOP

Citartop - 09:48:27 up 35 min,  2 users,  load average: 0.12, 0.14, 0.26
Tasks:  62 total,   1 running,  60 sleeping,   0 stopped,   0 zombie
Cpu(s):  4.2% us, 11.2% sy,  0.0% ni, 78.8% id,  0.0% wa,  0.0% hi,  5.8% si
Mem:    256044k total,   254384k used,     1660k free,    61580k buffers
Swap:        0k total,        0k used,        0k free,    51184k cached

He decidido anexar 10 megas de SWAP, primero requiero un archivo con datos nulos asi que por medio del comando DD obtengo uno del dispositivo ZERO, ocupo bloques de a un mega cada uno y como decidi meter 10 megas entonces contare 10 bloques de a mega,

En la linea e ejemplo tu puedes editar el count=10 por la cantidad de megas que requieres


[root@miniserv ~]# dd if=/dev/zero of=/archivo.swap bs=1048576 count=10
10+0 registros leídos
10+0 registros escritos


Ya que tienes el archivo, yo lo almacene en raíz con el nombre ARCHIVO.SWAP. Se procede a darle "formato" o prepararlo para que sea un archivo de SWAP, lo hacemos con el comando MKSWAP


[root@miniserv ~]# mkswap /archivo.swap
Configurando espacio de intercambio versión 1, tamaño = 10481 kB

Una vez preparado el archivo, simplemente lo activamos como SWAP, con el comando SWAPON


[root@miniserv ~]# swapon /archivo.swap


Una vez activado, ya nuestro sistema contara con el SWAP que necesitamos, puedes verlo ejecutando TOP de nueva cuenta

Citartop - 09:51:05 up 38 min,  2 users,  load average: 0.40, 0.24, 0.27
Tasks:  62 total,   1 running,  60 sleeping,   0 stopped,   0 zombie
Cpu(s):  5.4% us, 12.0% sy,  0.0% ni, 74.5% id,  1.2% wa,  0.4% hi,  6.6% si
Mem:    256044k total,   254056k used,     1988k free,    55924k buffers
Swap:    10232k total,        0k used,    10232k free,    61232k cached

Si queremos recuperar el espacio del SWAP, primero apagamos el servicio de SWAP del archive con SWAPOFF


[root@linux ~]# swapoff /archivo.swap

Borramos el archivo que contenía el SWAP

[root@linux ~]# rm /archivo.swap

Con TOP vemos que el sistema quedo como antes

Citartop - 09:54:26 up 41 min,  2 users,  load average: 0.20, 0.27, 0.27
Tasks:  58 total,   1 running,  57 sleeping,   0 stopped,   0 zombie
Cpu(s):  7.4% us, 12.4% sy,  0.0% ni, 69.0% id,  8.4% wa,  0.2% hi,  2.5% si
Mem:    256044k total,   232264k used,    23780k free,    54696k buffers
Swap:        0k total,        0k used,        0k free,    60616k cached

En este ejemplo puse un archive de swap por que no tenia nada de swap mi sistema, sin embargo la mayoría tiene ya swap. A veces en raros casos requerimos más SWAP y no podemos raparticionar el disco. Simplemente se puede anexar SWAP al SWAP ya existente con archivos al vuelo de SWAP
#4
C# o Java

Básicamente ambos son lo mismo.

Ambos son lenguajes completamente orientados a objetos, Ambos son multiplataforma a nivel binario y código fuente, siempre y cuando el OS anfitrión tenga las mismas clases.

En Java al compilar una clase se obtiene un archivo binario .class
En C# o cualquier lenguaje .NET se obtiene un binario .exe

Java corre sobre un framework denominado, La maquina virtual de JAVA
Los programas .NET corren sobre el FrameWork .NET

Tal vez la ventaja de ambos mundos no radica a nivel lenguaje, sino a nivel framework

C# o Java son prácticamente iguales

Pero el framework de Java solo corre programas JAVA
El framework .NET corre cualquier programa creado en cualquier lenguaje que genere codigo .NET

Siendo esta ultima la mayor ventaja de .NET, Cualquier lenguaje puede compilar código .NET en lugar de código maquina y este seria portable a nivel binario

Los programas .NET tienen una cabecera similar a la de cualquier programa Windows que indica que no se pueden ejecutar en modo msdos, pero de ahí en adelante el código ya no es x86 sino pseudos código tipo JAVA listo para ejecutarse en una maquina virtual .net denominada FrameWork

Entonces la guerra no es C# VS Java.

El verdadero pleito es a nivel framework, donde el que si sale victorioso es el .NET por la capacidad de correr el codigo de cualquier lenguaje .NET en cualquier plataforma que soporte su framework. Sin importar procesador, ni OS.

A continuación muestro un ejemplo.

Se hace un simple programa que muestra una ventana usando las librerias de Windows form. Es compilado. El EXE es transportado a Linux y en Linux el binario es corrido, como si hubiera sido programado para correr en Linux.

El futuro que promete .NET es programa en tu lenguaje favorito. Compila a .NET y córrelo donde sea


using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace winlinux
{
/// <summary>
/// Descripción breve de Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button button1;
/// <summary>
/// Variable del diseñador requerida.
/// </summary>
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Necesario para admitir el Diseñador de Windows Forms
//
InitializeComponent();

//
// TODO: Agregar código de constructor después de llamar a InitializeComponent
//
}

/// <summary>
/// Limpiar los recursos que se estén utilizando.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
/// <summary>
/// Método necesario para admitir el Diseñador, no se puede modificar
/// el contenido del método con el editor de código.
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
//
this.label1.Location = new System.Drawing.Point(72, 72);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(160, 48);
this.label1.TabIndex = 0;
this.label1.Text = "Me programaron y compilaron en Windows XP y Visual C#, Pero puedo correr en GNU/L" +
"inux";
//
// button1
//
this.button1.Location = new System.Drawing.Point(88, 176);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(120, 32);
this.button1.TabIndex = 1;
this.button1.Text = "Cerrar";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
  this.button1,
  this.label1});
this.Name = "Form1";
this.Text = "Programa C#";
this.ResumeLayout(false);

}
#endregion

/// <summary>
/// Punto de entrada principal de la aplicación.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

private void button1_Click(object sender, System.EventArgs e)
{
this.Dispose();
}
}
}


Hecho y Compilado en Visual C# en Windows home



El binario corriendo en Linux como si el codigo binario fuera nativo de esta plataforma