Trabajar con Listas (Skip, Take y OrderBy)

junio 30, 2010 :: Posted by - Emilio Torrens :: Category - , ,
Un poco de código para trabajar con listas.
 
El otro día nos llegaba, en una lista de int, las edades de los paxes y querían que ordenáramos las de los niños de menor a mayor, de eso se puede sacar un ejemplo de uso de Take y Skip, G1 seria el numero de Adultos en la lista, G2 niños y G3 Bebes.
 
int G1 = 2;

int G2 = 3;

int G3 = 1;

List<int> Valores = new List<int>() { 35, 25, 9, 4, 5, 0 };

//Cogemos los valores del segundo Grupo, los ordenamos y los metemos en 

//una nueva lista

List<int> ValoresG2 = Valores.Skip(G1).Take(G2).OrderBy(c => c).ToList();

//Creamos la lista resultado con los valores del Grupo 1, los del Grupo 2 

//Ordenado y el Grupo 3

List<int> result = new List<int>();

result.AddRange(Valores.Take(G1));

result.AddRange(ValoresG2);

result.AddRange(Valores.Skip(G1 + G2));

Ya se que se puede hacer en menos líneas, pero es un ejemplo !!!!! :)

Acortar una URL con TinyURL y PHP

junio 23, 2010 :: Posted by - Emilio Torrens :: Category - ,
<?php

$url = $_GET['url'];

$curl = curl_init();

curl_setopt($curl,CURLOPT_URL,'http://tinyurl.com/api-create.php?url='.$url);

curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);

curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,5);

$rs = curl_exec($curl);

curl_close($curl);

echo $rs;

?>

Eclipse y Team Foundation Server

junio 22, 2010 :: Posted by - Emilio Torrens :: Category - , , ,

image Que estés usando Eclipse para unos proyectos y Visual Studio para otros no es escusa para no usar Team Foundation Server para el seguimiento de los proyectos y como Repositorio de Código ya que puedes usar “Microsoft Visual Studio Team Explorer Everywhere 2010†con Eclipse.

Para instalarlo en Eclipse solo tienes que seguir estos pasos:

  • Descargarlo desde aquí, descargas el archivo (TFSEclipsePlugin-UpdateSiteArchive-10.0.0.zip)
  • En Eclipse vas a Help/Install New Software
  • Opción Add, y Opción Archive donde  seleccionas el archivo zip que has descargado.
  • Marcas la opción “Team Explorer Everywhereâ€
  • Next, next y reinicias Eclipse

Listo, ya lo tienes instalado:)

En el menú contextual de los proyectos te aparecerá una nueva opción “Teamâ€, para agregar el proyecto la primera vez utilizas la opción “Shareâ€, una vez agregado tendrás el mismo menú que en Visual Studio

La primera vez que agregues un proyecto te pedirá un serial, marcas la opción “Use a full-featured trial version of Microsoft Visual Studio Team Explorer Everywhereâ€

Programando para todos los móviles con Airplay

junio 21, 2010 :: Posted by - Emilio Torrens :: Category - , , ,

image

Airplay es un SDK que nos permite desarrollar aplicaciones en C++, con el IDE que queramos (de momento soporta todas las versiones de Visual C++ y XCode para Mac), podemos debugear y hacer test con ARM o X86 y después generar resultados para todas las plataformas móviles soportadas, que creo que son casi todas ;)

Aquí la lista  de Plataformas soportadas:

  • iPhone / iPod Touch
  • Android
  • Symbian
  • Windows Mobile
  • BREW
  • Maemo (Beta)
  • Palm webOS (Alpha)

Es de pago, pero el sistema de licenciamiento es bastante bueno, ya que según los "beneficios†que obtengas usándolo pagaras mas o menos.

Puedes bajar una versión de evaluación y ver el sistema de licencia aquí

Programando para Android

junio 02, 2010 :: Posted by - Emilio Torrens :: Category - , ,

Un par de cositas a tener en cuenta cuando programamos para Android con el Eclipse.

Se te generara una clase que hereda de Activity que es donde esta el meollo, allí tenemos acceso a todos los objetos de la aplicación y es donde pondremos el código.

   1: public class MyAppActivity extends Activity {

   2:     /** Called when the activity is first created. */       

   3:     

   4:     @Override

   5:     public void onCreate(Bundle savedInstanceState) {

   6:         

   7:         super.onCreate(savedInstanceState);

   8:         setContentView(R.layout.main);

   9:     }

  10: }

Los nombres (formularios, imágenes, controles en los formularios … ) son únicos para toda la aplicación, se genera una clase R.java donde tendrás campos estáticos con todos los Ids agrupados en clases:

  • layout, los ids de los formularios
  • string, los ids de los recursos
  • drawable, los ids de las imágenes
  • id, los ids de los controles.

Para cargar los formularios usaremos el método setContentView pasándole el id del formulario que tenemos en la clase R.java

   1: private void OnClickForm2() {

   2:     setContentView(R.layout.form2);

   3: }

Para acceder a los controles utilizaremos el método FindViewById, usando los ids de la clase R.java, nos devolverá un objeto y hacemos cast al control.

   1: TextView textoCabecera = (TextView) findViewById(R.id.TextoCabecera);

Para capturar los eventos en los controles tienes que hacerlo después de cargar el layout, accediendo al control por el Id.

   1: setContentView(R.layout.main);                

   2:  

   3: try

   4: {                

   5:     this.Boton1 = (Button)this.findViewById(R.id.Boton1);

   6:     this.Boton1.setOnClickListener(new OnClickListener(){

   7:         @Override

   8:         public void onClick(View v) {

   9:             OnClickBoton1();

  10:         }

  11:       });

  12:         

  13:     this.Boton2 = (Button)this.findViewById(R.id.Boton2);

  14:     this.Boton2.setOnClickListener(new OnClickListener(){

  15:         @Override

  16:         public void onClick(View v) {

  17:             OnClickBoton2();

  18:         }

  19:       });

  20: }

  21: catch(Exception ex)

  22: {

  23:     

  24: }

Y por ultimo, enviar notificaciones al usuario, aquí dejo un método para eso, lo único a tener en cuenta es el NOTIF_ID que es global y se incrementa después de cada notificación.

   1: public void Notify(String title, String text, int iconID)

   2: {

   3:     String ns = Context.NOTIFICATION_SERVICE;

   4:     NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

   5:     int icon = iconID;

   6:     CharSequence tickerText = title;

   7:     long when = System.currentTimeMillis();

   8:  

   9:     Notification notification = new Notification(icon, tickerText, when);

  10:     

  11:     Context context = getApplicationContext();

  12:     CharSequence contentTitle = title;

  13:     CharSequence contentText = text;

  14:     Intent notificationIntent = new Intent(this, WindConditionsActivity.class);

  15:     PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

  16:  

  17:     notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

  18:             

  19:     mNotificationManager.notify(NOTIF_ID, notification);

  20:     

  21:     NOTIF_ID++;

  22: }

Ahora no tengo mucho tiempo para programar Android, pero bueno a medida que descubra cosas nuevas las iré publicando :)