Archive for marzo, 2012

Android: Hello world!

Como siempre que empezamos con un lenguaje o entorno nuevo lo hacemos con el típico “Hello world”.

En entorno Android no hay que programar propiamente dicho, lo podemos hacer directament en la definición del Layout, en este caso en el fichero main.xml. Utilizaremos un objeto textView dentro de un contenedor LinearLayout.

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:text="Hello World!"
    />

</LinearLayout>

 

Share

Vb.net : Leer un archivo de texto mediante System.IO

Este snippet es otro de los clásicos a los que tendréis que recurrir en algún momento de vuestras andanzas en vb.net :

Imports System
Imports System.IO
Imports System.Collections

Module Module1

    Sub Main()
        Dim objReader As New StreamReader("c:\test.txt")
        Dim sLine As String = ""
        Dim arrText As New ArrayList()

        Do
            sLine = objReader.ReadLine()
            If Not sLine Is NothingThen
                arrText.Add(sLine)
            End If
        Loop Until sLine Is Nothing
        objReader.Close()

        For Each sLine In arrText
            Console.WriteLine(sLine)
        Next
        Console.ReadLine()
    End Sub

End Module

En otros posts trataremos ahondaremos mas en el tema ficheros…

Share

C: clone()

La llamada al sistema clone es mucho más genérica y flexible que el fork, ya que nos permite definir qué van a compartir los procesos padre e hijo.
clone: permite especificar qué queremos que compartan padre e hijo.

  • espacio de direccionamiento
  • información de control del sistema de archivos (file system)
  • descriptores de archivos abiertos.
  • gestores de señales o PID.

En el clone el hijo en principio dispondrá de exactamente los mismos campos del task_struct del padre y sólo realizará una copia de estos en caso de modificar alguno de ellos. Si esto ocurre debe asignarsele al hijo su propio PID.

Share

Vb.Net: Seleccionar fila de DataGrid por código

Para seleccionar una fila de un DataGrid por código podemos hacerlo de la siguiente manera

            DataGrid.ClearSelection()
            DataGrid.CurrentCell = DataGrid.Rows(numRow).Cells(0)
            DataGrid.Refresh()

Caso practico: crear una barra de navegación por el DataGrid, con lo que tendremos que controlar la posición actual y los avances.

Share

C: fork()

Cuando se hace una llamada fork, el proceso hijo creado es una copia exacta del padre (salvo por el PID y la memoria que ocupa). Al proceso hijo se le facilita una copia de las variables del proceso padre y de los descriptores de fichero. Es importante destacar que las variables del proceso hijo son una copia de las del padre (no se refieren físicamente a la misma variable), por lo que modificar una variable en uno de los procesos no se refleja en el otro.

fork: En el momento de la llamada a fork el proceso hijo:

  • es una copia exacta del padre excepto el PID.
  • tiene las mismas variables y ficheros abiertos.
  • las variables son independientes (padre e hijo tienen distintas memorias).
  • los ficheros son compartidos (heredan el descriptor).

En el fork() el hijo creado obtiene una copia de todos los campos del task_struct del padre y su propio identificador.

#include <stdio.h>
#include <unistd.h>

Void main() {
  pid_t pID = fork();
  if (pID == 0) {
    // Hijo
    printf("¡¡¡Soy el hijo!!!");
  }else if (pID > 0) {
    // Padre
    printf("¡¡¡Soy el padre!!!");
  }else {
    // Error al hacer el fork
    // Throw exception
    printf("¡¡¡Error!!!");
  }
}

Referencias:

Linux cross reference
http://lxr.linux.no/

Share

Vb.net : Ejemplo basico de trabajo con hilos (threads)

Muchas veces necesitamos lanzar varios procesos que trabajen a la vez, esto se puede hacer mediante threads (hilos).

Os dejo un ejemplo básico sobre los mismos :

Imports System.Threading

Private Sub btnEnviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnviar.Click
        'Instanciar el hilo
        Dim oHilo As Thread
        'crear objeto y asignarlo al sub que queremos ejecutar
        oHilo = New Thread(AddressOf EjecutarAlgo)
        'lanzar el hilo
        oHilo.Start()
End Sub
Share

Batch: Script para conectar unidades de red en Windows

Para conectar unidades de red en Windows, podemos crear un script que se ejecute al inicio de la sesión del usuario. Creamos un script “connect.bat

Utilizamos el comando “net use” + letra de la unidad:

Para evitar conflictos, eliminamos/desconectamos la unidad antes de conectarla con la opción “/delete” .

Luego conectamos la unidad a la ruta de la red deseada.

@echo off
net use Z: /delete
net use Z: \\servidor\carpeta
Share

PHP: saber si existe una variable

Para saber si una variable está definida podemos utilizar la función isset

 

// Determinar si existe una variable

if ( isset($mi_variable) ) {
  // Utilizamos la variable
  echo "Valor de mi_variable: " . $mi_variable;

}else {
  // La variable no existe, si la usamos PHP devuelve un error
  echo "La variable mi_variable no está definida."

}

Un caso práctico muy útil es cuando queremos usar un script en el cual nos pueden llegar parámetros.

// Determinar si nos llegan parametros por el método GET
if ( isset($_GET) ) {
  // Podemos verificar si los parametros que llegan son los esperados
  if ( isset($_GET["parametro1"] ) {
    echo "Parámetro esperado parametro1: " . $_GET["parametro1"] ;

  }else {
    echo "Atención: parámetro inesperado!";

  }
}

// Determinar si nos llegan parametros por el método POST
if ( isset($_POST) ) {
  // Podemos verificar si los parametros que llegan son los esperados
  if ( isset($_POST["parametro2"] ) {
    echo "Parámetro esperado parametro2: " . $_GET["parametro2"] ;

  }else {
    echo "Atención: parámetro inesperado!";

  }
}
Share

PHP: Obtener información sobre la configuración de PHP

Para obtener la información sobre la configuración de PHP existe una función “phpinfo()“.
Con esta función podemos obtener mucha información sobre el estado de PHP en el servidor, variables de entorno, etc.

Para ello creamos un fichero php_info.php con el código siguiente:

<?php
       phpinfo();
?>
Share

Htaccess : Evitar el listado de archivos

Con este pequeño snippet podremos prevenir el listado de archivos en un directorio de nuestro servidor.

Options -Indexes

Visto en PuntoGeek

Share