L-EXP

Most viewed Feeds


      view feed content Load Testing With Log Replay (Best Ruby on Rails Blogs )   [45 views, last view 3 min and 35 secs ago]

Performance testing can be a tricky proposition, how many times have you deployed code that fell apart in production? (Hey, we've all done it!) Having a staging environment, which replicates the data and deployment environments are great first steps, but even that often falls short from producing reliable results. And that is where load testing comes in: we need to test our application in the context of a multi-user audience interacting with all of the components of our site. Great, but how do we do that? Well, why not just grab the access logs from your current production environment, and replay them!

Performance & Benchmarking tools

If you start looking, you'll find an abundance of benchmarking applications, but the commonly cited industry standards are: Apache Bench, JMeter, httperf, and Siege.

Apache Bench (or 'ab', on the command line) is usually the crowd favorite as it is ubiquitous due to being packaged alongside the Apache web-server - and for a good reason, it's a great benchmarking tool. However, while it can generate a significant concurrency load, the requests are always identical (Siege also has this limitation), as it has no mechanism for simulating a collection of user sessions:

# make 100 requests, opening 20 concurrent requests at a time
igvita@igvita.com [~]# ab -n 100 -c 20 http://localhost/

...snip...
Concurrency Level: 20
Time taken for tests: 0.78639 seconds
Complete requests: 100

Simulating user sessions

Benchmarking a single endpoint is an important use case, but oftentimes we should really be testing an entire transaction: a series of user-initiated requests simulating a common use case of your web application (searching for, and purchasing an item; updating a profile; etc.). In the load testing world, this is also commonly known as simulating a session.

JMeter is the tool that you're looking for if you need to create a series of highly customizable interactions. While the UI of JMeter can be definitely confusing at first, a good guide and some experimentation will allow you to create custom scripted sessions with cookies, login and logout actions, and anything else your heart might desire.

But while JMeter is nice, it's definitely a heavy-weight, and that's where httperf comes into the picture (http_load is also a great app, albeit without many of the features of httperf). Unlike JMeter, httperf is powered from the command line and offers a much simpler (but feature rich) path for simulating a collection of users.

Httperf under the hood

Created at the HP Research Labs (see original paper), and more recently updated by researchers at University of Calgary, httperf packs a lot of functionality under the hood: url generation, burst support, think times, GET/POST queries in the session file, and different concurrency rates amongst many others.

To get started with httperf, check out Sofia Cardita's great introductory guide, as well as the slides and the quickstart guide from Theodore Bullock's presentation at WWW2007.

AutoPerf: Ruby httperf driver

Finally, putting all of the pieces of the puzzle together, how do we run a simple, log-replay load test for a Rails application? First, we need a log file, let's say from Nginx, and then we need to convert it into a format httperf can understand:

# Grab the last 1000 requests from production Nginx log, and extract the request path (ex: /index)
tail -n 1000 nginx.log | awk '{print $7}' > requests.log

# Replace newlines with null terminator (httperf format)
tr "\n" "\0" < requests.log > requests_httperf.log

# Run an httperf test, using our replay log
# - test localhost deployment
# - simulate 100 concurrent users
# - stop after 10000 requests have been made
httperf --hog --server localhost --port 80 --wlog=n,requests_httperf.log --rate=100

Running one of these tests will provide you with a mountain of data, but how do you map the performance curve as request rate changes? Do you know at which point your server becomes saturated? To help with this task, I've created autoperf.rb, a small Ruby driver for httperf. Let's create a simple execution plan for it:

> autoperf.conf

# Autoperf Configuration File   # The host and port to test. host = localhost port = 80   # The 'rate' is the number of number of connections to open per second. # A series of tests will be conducted, starting at low rate, # increasing by rate step, and finishing at high_rate. low_rate = 100 high_rate = 200 rate_step = 20   ################# # httperf options (prefix with 'httperf_')   httperf_wlog = n,requests_httperf.log   # num_conn is the total number of connections to make during a test # num_call is the number of requests per connection # The product of num_call and rate is the the approximate number of # requests per second that will be attempted. #httperf_num-conns = 20 httperf_num-call = 1   # timeout sets the maximimum time (in seconds) that httperf will wait # for replies from the web server. If the timeout is exceeded, the # reply concerned is counted as an error. httperf_timeout = 5  

autoperf.git (Ruby httperf driver on GitHub)

Downloads: 2 File Size: 0.0 KB

With that in place, we're ready to go:

> autoperf.out

> ruby autoperf.rb -c autoperf.conf ... +----------------------------------------------------------------+ | rate | conn/s | req/s | replies/s avg | errors | net io (KB/s) | +----------------------------------------------------------------+ | 100 | 99.9 | 99.9 | 99.7 | 0 | 45.4 | | 120 | 119.7 | 119.7 | 120.0 | 0 | 54.4 | | 140 | 139.3 | 139.3 | 138.0 | 0 | 63.6 | |> 160 | 151.9 | 151.9 | 147.0 | 0 | 69.3 | | 180 | 132.2 | 129.8 | 137.4 | 27 | 59.6 | | 200 | 119.8 | 117.6 | 139.9 | 31 | 53.9 | +----------------------------------------------------------------+  

As you can see, the server became saturated at about 160 req/s based on the access patterns generated in our production environment - a far better benchmark than testing a single endpoint. Best of all, now you can map your performance benchmarks to real user sessions in an automated and repeatable fashion. No more falling down in production!


[Architecture benchmark performance testing ]
igvita.com - Best Ruby on Rails Blogs
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content Economics : OECD's Gurría mourns death of economist Angus Maddison (World International organizations)   [2 views, last view 22 min and 17 secs ago]
OECD Secretary-General Angel Gurría lamented the recent death of the distinguished British economist Angus Maddison, who held a number of senior posts at the OECD and its fore-runner, the Organisation for European Economic Cooperation, between 1953 and 1978.

Organisation for Economic Co-operation and Development ( OECD) - World International organizations
View original post|Add to del.icio.us| Created 3 months ago | Share

      view feed content Cluster Resources (Microsoft server and infrastructure technology blogs, news and resources)   [125 views, last view 44 min and 1 secs ago]

Hi Cluster Fans,

 

Resources can be hard to find, so every few months we will be publishing an updated list of useful documents, guides and information to this blog (http://blogs.msdn.com/clustering/). 

 

If there is any other useful Microsoft content which you feel is missing, let us know by clicking the 'email' link in the upper right corner of the page and send us the resource and URL.

 

Thanks,
Symon Perriman
Program Manager
Clustering & HA

Microsoft

 

Useful Sources

·         Blog: Cluster Team: http://blogs.msdn.com/clustering/

·         Blog: Ask Core: Clustering

·         Training: Course 6423a: Implementing and Managing WS08 Clustering

·         Website: Cluster Technical Resources

·         Website: Cluster Information Portal

·         Website: Clustering Forum (2008)

·         Website: Clustering Forum (2008 R2)

·         Website: Clustering Newsgroup

 

 

Windows Server 2008 R2

·         Blog Guide: Deploying Cluster Shared Volumes (CSV)

·         Blog Guide: Cluster Shared Volumes (CSV): Disk Ownership

·         Blog Guide: PowerShell for Network Load Balancing (NLB) in Windows Server 2008 R2

·         Blog Guide:  PowerShell for Failover Clustering in Windows Server 2008 R2

·         Blog Guide: Live Migration Traffic

·         Blog Guide: How to manually defrag or ChkDisk a CSV disk

·         TechNet Guide: Using Live Migration in Windows Server 2008 R2

·         TechNet Guide: What??s new in R2 Clustering

·         Webcast: Innovating High Availability with Cluster Shared Volumes (CSV)

·         Webcast: Failover Clustering Feature Roadmap in WS08 R2

·         Whitepaper: Windows Server 2008 R2 & Microsoft Hyper-V Server 2008 R2 - Hyper-V Live Migration Overview & Architecture

·         Webcast: Windows Server 2008 R2 Live Migration

·         Webcast: Clustering in a Virtual World

·         Website: Clustering Forum (2008 R2)

 

 

Architecture

·         Blog Guide: Cluster Virtual Adapter (NetFT)

·         Blog Guide: PlumbAllCrossSubnetRoutes

·         Whitepaper: Failover Cluster Architecture Overview

 

 

Core

·         Guide: Server Core

·         TechNet: Installation

·         Utility: Remote Server Administration Tools (simplifies Server Core configurations)

·         Webcast: How Microsoft does IT: Enhancing High Availability with Server Core in Windows Server 2008

 

 

Deployment / Migration / Upgrade

·         Blog Guide: Migration Options for Hardware

·         Blog Guide: PrintBRM Error 0x80070043 workaround

·         Blog Guide: DHCP Database migration to Windows Server 2008

·         Blog Guide: PrintBRM.exe, 0?80070043 and Print Clusters - A Workaround

·         KB Guide: Exchange 2003: Move Mailbox 

·         KB Article: SQL Server 2008 Rolling Upgrades

·         KB Article: Cluster Nodes as Domain Controllers (DCs)

·         MSDN Guide: SQL Upgrade Paths

·         MSDN Guide: SQL Cluster Upgrade

·         TechNet Guide: Migrating Cluster Settings

·         TechNet Guide: Failover Clustering Deployment

·         TechNet Guide: Validating Hardware for a Failover Cluster

·         TechNet Guide: Installing a Failover Cluster

·         TechNet Guide: Creating a Failover Cluster

·         TechNet Guide: Cluster Requirements

·         TechNet Guide: Validating a cluster

o   Blog Guide: Validation Warning: Teredo

o   Blog Guide: Validation Warning: Patch GUID

 

·         TechNet Guide: Configuring Accounts in Active Directory

·         TechNet Guide: Recommended Clustering Hotfixes (2003)

·         TechNet Guide: Recommended Clustering Hotfixes (2003 SP2)

·         TechNet Guide: Recommended Clustering Hotfixes (2008)

·         TechNet Guide: Exchange 2007 Overview

·         TechNet Guide: Exchange 2007 Cmdlets

·         TechNet Guide: Print Migration Overview

·         TechNet Guide: UI: Print Migration Tool/Wizard

·         Utility: File Server Migration Toolkit (FSMT) (2008)

  • Webcast: TechNet Webcast: Failover Cluster Validation and Troubleshooting with Windows Server 2008  
  • Website: File Server Migration Toolkit (2008) 
  • Whitepaper: File Server Migration Toolkit (2008) 
  • Whitepaper: Configuring and Troubleshooting AD CS (2008)

 

Exchange Server

·         Lab: TechNet Virtual Lab: Exchange Server 2007 Standby Continuous Replication

·         Lab: TechNet Virtual Lab: Using Cluster Continuous Replication (CCR) in Exchange 2007

·         TechNet: Installing Cluster Continuous Replication (CCR) on 2008

·         TechNet: Deploying Exchange 2003 in a Cluster

·         TechNet: Planning for Cluster Continuous Replication (CCR)

·         TechNet: Installing CCR on Windows Server 2008

·         TechNet: How to create an Exchange SCC Failover Cluster with CMD

·         Webcast: How Microsoft IT Implemented New Storage Designs for Exchange Server 2007

·         Webcast: Exchange 2007 High Availability Deep Dive

 

 

File Server

·         Blog Guide: File Share ??Scoping?? in Windows Server 2008 Failover Clusters

·         Blog Guide: Share Subdirectories in Windows Server 2008

·         TechNet Guide: Configuring a Two-Node File Server Failover Cluster

·         TechNet Guide: Creating a Clustered File Server checklist

·         TechNet Guide: Create a Shared Folder in a Clustered File Server

·         WebCast: TechNet Webcast: Prepare Yourself for Windows Server 2008 (Part 5 of 8): New File Server Features

·         WebCast: How Microsoft IT Deploys Windows 2008 Clusters for File Services

·         Webcast: New File Server Features of Windows Server 2008 (Level 200)

 

Hyper-V

·         Blog Guide: Deploying a HA Virtual Machine (2008)

·         Blog Guide: HA Virtual Machine Deployment Considerations (2008)

·         Blog Guide: Network Load Balancing (NLB) and Virtual Machines

·         Blog Guide: Adding a Pass-Through Disk to a HA VM

·         Blog Guide: SCVMM: Intelligent Placement

·         Blog Guide: Monitor Network Traffic for a VM on a Cluster

·         TechNet Case Study: How Microsoft IT Designs the Virtualization Host & Network Infrastructure

·         TechNet Case Study: Best Practices for Deploying VMs using Hyper-V

·         TechNet Guide: Getting Started with Hyper-V

·         TechNet Guide: High-Availability for a Server Running Hyper-V

·         TechNet Guide: Design for a Failover Cluster in Which All Nodes Run Hyper-V

·         TechNet Guide: Requirements and Recommendations for Failover Clusters in Which All Nodes Run Hyper-V

·         TechNet Guide: Failover Cluster in which the Servers run Hyper-V

·         TechNet Webcast: 24 Hours of Windows Server 2008 (Part 24 of 24): High Availability with Hyper-V

·         TechNet Webcast: Creating Business Continuity Solutions Using Windows Virtualization

·         TechNet Webcast: High Availability with Hyper-V

·         Webcast: Top 10 VMWare Myths, including CSV and live migration

·         Webcast: Hyper-V Quick Migration on a Failover Cluster

·         Whitepaper: Quick Migration with Hyper-V

·         Whitepaper: Testing Hyper-V and Failover Clustering

 

 

Miscellaneous Resources

·         Blog Guide: Add a New Disk to a Cluster (2008)

·         Blog Guide: Configuring Auditing for a Cluster (2008)

·         Blog Guide: Cluster Recovery (2003)

·         KB Article: The Microsoft Support Policy for Windows Server 2008 Failover Clusters

·         TechNet Guide: Configuring the Quorum in a Failover Cluster

·         TechNet Guide: Managing a Failover Cluster

·         TechNet Guide: Modifying Settings for a Failover Cluster

·         TechNet Guide: The Failover Cluster Management Snap-In

·         TechNet Guide: Understanding Backup and Recovery Basics for a Failover Cluster

·         TechNet Guide: Support Policy

·         TechNet Guide: Windows Server 2008 Itanium / IA64 support

·         Webcast: Top 10 Windows Server 2008 Failover Clustering Enhancements over Windows Server 2003 Clustering, Based on Best Practices (Level 300)

·         Webcast: Failover Clustering 101

·         Webcast: Achieving High Availability with Windows Server ??Longhorn? Clustering (Level 200)

  • Webcast: Microsoft Webcast: Reducing IT Overhead with Windows Server 2008 Storage Features
  • Webcast: TechNet Webcast: Build High-Availability Infrastructures with Windows Server 2008 Failover Clustering
  • Webcast: IT Manager Webcast: Delivering High Availability to Your Infrastructure
  • Webcast: TechNet Webcast: Failover Clustering and Quorum in Windows Server 2008 Enterprise Storage
  • Webcast: TechNet Virtual Lab: Windows Server 2008 Enterprise Failover Clustering Lab

·         Whitepaper: Microsoft??s HA Strategy

·         Whitepaper: Overview of Failover Clustering

·         Whitepaper: HA with Microsoft MPIO (2003, 2008)

·         Website: Windows Logo site

·         Webcast: Introduction to Failover Clustering

  Multi-Site Clustering

·         Cluster Team Site: http://www.microsoft.com/windowsserver2008/en/us/failover-clustering-multisite.aspx

·         KB Article: Deployment Considerations for Windows Server 2008 failover cluster nodes on different, routed subnets

·         Webcast: TechNet Webcast: Geographically Dispersed Failover Clustering in Windows Server 2008 Enterprise

·         Webcast: How You Can Achieve Greater Availability with Failover Clustering Across Multiple Sites (Level 300) 

·         Whitepaper: Multi-site Clustering

·         Webcast: Multi-Site Clustering in Windows Server 2008

 

 

Network Load Balancing

·         Blog Guide: Network Load Balancing (NLB) and Virtual Machines

·         KB Article: NLB Troubleshooting Overview

·         KB Article: Create/manage/destroy NLB clusters via NLB Manager remotely from another server, or from RSAT client (admin pack) on Vista

·         Presentation: Server Core: Install the NLB feature

·         TechNet Guide: Configuring NLB with Terminal Services

·         TechNet Guide: NLB Deployment Guide

·         TechNet Guide: Implementing a new NLB Cluster

·         TechNet Guide: Verifying the NLB Cluster and Enabling Client Access

·         TechNet Guide: Overview of NLB

·         TechNet Guide: Creating NLB Clusters

·         TechNet Guide: Managing NLB Clusters

·         TechNet Guide: Setting NLB Parameters

·         TechNet Guide: Controlling Hosts on NLB clusters

·         TechNet Guide: Troubleshooting for System Event Messages Related to NLB Cluster

·         TechNet Guide: User Interface: NLB Manager

·         TechNet Guide: Upgrading a NLB Cluster

·         TechNet Guide: Upgrading a Network Load Balancing (NLB) Cluster

·         Webcast: 24 Hours of Windows Server 2008 (Part 23 of 24): Failover Clustering and Network Load Balancing z

 

 

Other Resources / Workloads

·         Blog Guide: Configure Multiple Instances of MSDTC (2008)

·         Blog Guide: Installing MSDTC (2003)

·         Blog Guide: Optimize Print Cluster (2003)

·         Blog Guide: Creating and Configuring a Generic Application Resource

·         TechNet Guide: Configuring Generic Resources

·         TechNet Guide: Configure a Service or Application for High Availability

 

 

Scripting

·         Blog Guide: Creating a Cluster using WMI

·         Blog Guide: CLI: Cluster Resource Groups

·         Blog Guide: CLI: Quorum

·         Blog Guide: CLI: Disk Resources

·</fo
[clustering nlb cluster failover wsfc network load balancing windows server 2008 core exchange symon perriman SQL hyper-v file server r2 windows server 2008 r2 deployment multi-site scripting ]
Clustering and High Availability : Microsoft Blog - Microsoft server and infrastructure technology blogs, news and resources
View original post|Add to del.icio.us| Created more than one year ago | Share


      view feed content Lawnchair, almacenamiento DOM mediante JSON (Mejores Blogs tecnológicos ( Spanish))   [2 views, last view 58 min and 49 secs ago]
languagevalueLawnchair es un librería que nos permite almacenar en el clientes datos en formato JSON, ideal para navegadores móviles basados en Webkit que nos permitirá aligerar el peso de una forma simple y elegante. var people = new Lawnchair('people'); /* GRABAMOS */ // Grabamos un elemento var me = {name:'brian'}; people.save(me); // Grabamos un elemento de forma asíncrona people.save({name:'frank'}, function(r) { console.log(r); }); // Especificamos nuestra propia clave a nuestro elemento people.save({key:'whatever', name:'dracula'}); /* CARGAMOS */ // Recogemos el elemento people.get(me.key, function(r){ console.log(r); }); // Recupera todos los elementos en forma array people.all(function(r){ console.log(r); }); // Sintaxis corto para recuperar todos los elementos people.all('console.log(r)'); Como podemos ver la sintaxis es realmente sencilla de usar, ideal para deshacernos de esas cookies anticuadas de nuestras aplicaciones. Ver código fuente. / DescargarArtículos relacionados
  • JSON Diff, compara JSON de una forma muy visual
  • Javascript JSON Editor, debuguea tu JSON
  • Mini Tutorial JSon
  • aNieto2k en JSON
  • Parseando JSON con jQuery

typetext/htmlbasehttp://feeds.feedburner.com/anieto2k/MtKP
[Programacion javascript webdev webkit ]
aNieto2K | Desarrollo web, Wordpress, y alguna cosilla más - Mejores Blogs tecnológicos ( Spanish)
View original post|Add to del.icio.us| Created 7 months ago | Share

      view feed content OpenPrinting/MacOSX/min12xxw (Linux resources and news)   [10 views, last view 1 h, 17 min and 2 secs ago]

<!---->
?Older revision Revision as of 17:52, 19 February 2009
Line 9: Line 9:
; [http://www.openprinting.org/download/printdriver/macosx/min12xxw-0.0.92-ub.dmg min12xxw-0.0.92-ub.dmg]&nbsp;&nbsp;(125KB) ; [http://www.openprinting.org/download/printdriver/macosx/min12xxw-0.0.92-ub.dmg min12xxw-0.0.92-ub.dmg]&nbsp;&nbsp;(125KB)
: The min12xxw package requires, but does not include, Foomatic-RIP or GPL Ghostscript for Mac OS X. '''Download these items from the links below, if necessary.'''<br />[http://www.hinterbergen.de/mala/min12xxw/min12xxw-0.0.9.tar.gz  source code] : The min12xxw package requires, but does not include, Foomatic-RIP or GPL Ghostscript for Mac OS X. '''Download these items from the links below, if necessary.'''<br />[http://www.hinterbergen.de/mala/min12xxw/min12xxw-0.0.9.tar.gz  source code]
-; [http://www.openprinting.org/download/printdriver/macosx/foomatic-rip-2008-01-30.dmg Foomatic-RIP]&nbsp;&nbsp;(224KB)+<h3>Foomatic-RIP for Mac OS X 10.5.x (Leopard), Mac OS X 10.4.x (Tiger), and Mac OS X 10.3.x (Panther)</h3>
-: The Foomatic-RIP package installs the necessary core runtime components (the foomatic-RIP CUPS filter and the foomatic-gswrapper) to enable printing with Foomatic machinery in Mac OS X. '''Foomatic-RIP is required for all users. It is not necessary to install Foomatic-RIP more than once.'''<br />source code included on disk image+; [http://www.openprinting.org/download/printdriver/macosx/foomatic-rip-4.0.0.203-ub.dmg Foomatic-RIP]&nbsp;&nbsp;(2.2 MB)
 +: The Foomatic-RIP package installs the necessary core runtime components to enable printing with Foomatic machinery in Mac OS X. This package is generally not useful without Ghostscript and at least one foomatic PPD. Please see the [[#Usage|usage]] instructions below for more details. <b>MOST USERS WILL NEED TO UPGRADE THEIR VERSION OF GHOSTSCRIPT</b> to the most recent version (the version listed below).<br />source code included on disk image
 + 
<h3>Ghostscript for Mac OS X 10.5.x (Leopard), Mac OS X 10.4.x (Tiger), and Mac OS X 10.3.x (Panther)</h3>   <h3>Ghostscript for Mac OS X 10.5.x (Leopard), Mac OS X 10.4.x (Tiger), and Mac OS X 10.3.x (Panther)</h3>  
; [http://www.openprinting.org/download/printdriver/macosx/gplgs-8.64so-ub.dmg gplgs-8.64so-ub.dmg] (32.5 MB)   ; [http://www.openprinting.org/download/printdriver/macosx/gplgs-8.64so-ub.dmg gplgs-8.64so-ub.dmg] (32.5 MB)  
-: GPL Ghostscript 8.64 is an open-source PostScript interpreter that includes integrated support for the CUPS printing system in Mac OS X. It is the replacement for ESP Ghostscript.<br /><b>GPL Ghostscript is required for all users. It is not necessary to install Ghostsccript more than once.</b><br /> [http://ghostscript.com/releases/ghostscript-8.64.tar.gz source code] +: GPL Ghostscript 8.64 is an open-source PostScript interpreter that includes integrated support for the CUPS printing system in Mac OS X. It is the replacement for ESP Ghostscript.<br /><b> GPL Ghostscript is required for all users.</b><br /> [http://ghostscript.com/releases/ghostscript-8.64.tar.gz source code]  
 +<p><br /></p>
 +<hr />
 +<h3>Foomatic-RIP for Mac OS X 10.2.x (Jaguar)</h3>
 +; [http://www.openprinting.org/download/printdriver/macosx/foomatic-rip-2008-01-30.dmg Foomatic-RIP]&nbsp;&nbsp;(224KB)
 +: <nowiki> The Foomatic-RIP package installs the necessary core runtime components (the foomatic-RIP CUPS filter and the foomatic-gswrapper) to enable printing with Foomatic machinery in Mac OS X. This package is generally not useful without Ghostscript and at least one foomatic PPD. Please see the</nowiki> [[#Usage|usage]] <nowiki>instructions below for more details. </nowiki><br />source code included on disk image
<h3>Ghostscript for Mac OS X 10.2.x (Jaguar)</h3>   <h3>Ghostscript for Mac OS X 10.2.x (Jaguar)</h3>  
; [http://www.openprinting.org/download/printdriver/macosx/gplgs-8.61-jaguar-ppc.dmg gplgs-8.61-jaguar-ppc.dmg] (17.1 MB)   ; [http://www.openprinting.org/download/printdriver/macosx/gplgs-8.61-jaguar-ppc.dmg gplgs-8.61-jaguar-ppc.dmg] (17.1 MB)  
: GPL Ghostscript 8.61 is an open-source PostScript interpreter that includes integrated support for the CUPS printing system in Mac OS X. It is the replacement for ESP Ghostscript. <br /><b>GPL Ghostscript is required for all users. It is not necessary to install Ghostsccript more than once.</b><br /> [http://downloads.sourceforge.net/ghostscript/ghostscript-8.61.tar.gz?download source code] : GPL Ghostscript 8.61 is an open-source PostScript interpreter that includes integrated support for the CUPS printing system in Mac OS X. It is the replacement for ESP Ghostscript. <br /><b>GPL Ghostscript is required for all users. It is not necessary to install Ghostsccript more than once.</b><br /> [http://downloads.sourceforge.net/ghostscript/ghostscript-8.61.tar.gz?download source code]
- 
'''Please note:''' all packages require Mac OS X version 10.2 or newer. '''Please note:''' all packages require Mac OS X version 10.2 or newer.
- 
</div> </div>
<p> <p>


Linux Weather Forecast - The Linux Foundation - Linux resources and news
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content ¿El emperador está en pelotas? (Conferencia Rails Hispana '07)   [1035 views, last view 1 h, 25 min and 8 secs ago]
languagetypetext/htmlvalue

Sinceramente espero que no, pero a veces la fe me flaquea ;-)

Os contaré una pequeña historia, y saldré un poco del armario en el proceso: antes de trabajar en serio con Rails y Ruby, nunca jamás había desarrollado con tests, y ni siquiera tenía muy claro cuáles podían ser las ventajas de hacerlo, ni cómo funcionaba el asunto. Fue la exposición a la (nunca suficientemente alabada) comunidad rubista y railera la que me hizo llegar a donde estoy hoy y llevo ya algún tiempo: a pensar que el testing es La Manera Correcta De Hacer Las Cosas™ (con toda la cautela e ironía que siempre lleva esa frase saliendo de mi boca). Quiero decir que todo lo que sé y opino acerca de testing, TDD, BDD, etc., es lo que he aprendido en estos casi cuatro años; no es poco, pero tampoco puede decirse que sea una visión muy general ni universal. Vaya eso por delante.

Durante este tiempo, mi arsenal de herramientas y técnicas ha ido creciendo y cambiando: Test::Unit, Shoulda, mocking, RSpec, integración contínua, tests de integración y aceptación, Cucumber, Selenium. El patrón de adopción era siempre similar: algo que te hacía perder un poco de productividad y velocidad de desarrollo, a cambio de mejorar la calidad de tu código, su mantenibilidad y en general su capacidad para no darte problemas en el futuro. De alguna forma, era el proceso contrario a la contracción de deuda técnica: comprabas productividad a medio y largo plazo pagándola con productividad a corto plazo. Suponiendo que el mundo no se acabe mañana, parece una buena idea, funcionaba y todo el mundo era feliz. Expresabas tus fuertes opiniones a los cuatro vientos, eras respetado por tu compromiso con el código de calidad, te ofrecían trabajar en proyectos la hostia de chulos, dabas conferencias, y ponías la palabra TESTING así en mayúsculas y a todo lo que da en pantallas de 4 metros.

Mientras tanto, en otro rincón de la galaxia (que sin embargo era básicamente el mismo), un grupo de entusiastas rubistas de Madrid andaba montando periódicamente Monsters of Ruby (también conocido en una de sus encarnaciones como Rails Hackathon). En el más reciente (semana pasada), la idea era poner a varios equipos a contruir en paralelo la misma aplicación, en Rails, al objeto de compartir conocimiento, contrastar enfoques, y ya de paso echarnos unas risas compitiendo. Dado que la mayoría de los participantes están acostumbrados a usar tests, se nos ocurrió que una buena manera de especificar a los equipos cuál era su cometido era entregar un conjunto de tests que la aplicación tenía que acabar pasando. Aceptación en estado puro. Con el entusiasmo del que cree en lo que hace, montamos un conjunto de pruebas para entregar a los equipos, con lo más chipén, state-of-the-art, lo que hay que hacer ahora para impresionar a las nenas y en definitiva lo que podéis escuchar en cualquier conversación en cualquier bar del país: RSpec, Cucumber, Webrat y Selenium. Como dice Dani, lo único que importa es molar.

EPIC FAIL


Ni uno sólo de los equipos completó, digamos, el 25% de la aplicación. ¿En qué momento de la historia que acabo de contar se torció todo? Parecía buena idea, éramos jóvenes y entusiastas y volveríamos a hacerlo. Todos y cada uno de los cambios de herramientas de los que he hablado fueron meditados, valorados en términos de trade-off y aceptados porque compensaban. El problema es que todos esos cambios eran paulatinos y apenas perceptibles en términos de productividad. Y tres años después, allí estábamos 3 desarrolladores competentes 3, necesitando una tarde entera para fabricar un formulario, un dolor de cabeza, unas ganas de llorar y un apetitoso perolo de sopa de rana. Ancas de batracio deconstruídas en salsa de desarrollador.

¿La conclusión? Parece ser que hemos estado viviendo una alucinación colectiva, nos hemos engañado los unos a los otros, nos hemos metido en una espiral de pérdida de productividad tan gradual como imparable, igual que la pobre rana que acaba cociéndose sin siquiera darse cuenta. El emperador está desnudo, y ha bastado un proyecto suficientemente simple e inocente (como un niño) para gritarlo a los cuatro vientos. No tiene sentido testear exhaustivamente una aplicación, sólo sirve para perder el tiempo.

Que levanten la mano los inocentones que piensen que el post acaba aquí =;-)

Esa conclusión puede ser una verdad clara y confortable, como las que necesitas en momentos de desasosiego, pero tiene mucho de equivocada. Ha habido en mi discurso unos cuantos argumentos algo mentirosos:

  • He hablado mucho de productividad, y con razón: es lo que debe guiar en todo momento nuestras decisiones. Lo que construímos en relación a los recursos (principalmente el tiempo) que empleamos para ello es lo único que da valor a nuestro trabajo. Si escribimos el código más elegante del mundo pero no somos productivos, no somos buenos programadores. El problema es cómo medirlo, y no voy a explayarme mucho porque hay ríos de tinta sobre ello. Un resumen rápido: simplemente, no se puede
  • También he hablado de trade-off entre productividad a corto plazo y productividad a medio/largo plazo. Aún en el caso de que pudiéramos medirla, ¿cuál es el tipo de interés de la productividad? No parece muy razonable invertir 1 hora hoy a cambio de 1 hora dentro de un mes. Pero, ¿y de 2, y de 3? ¿Dónde está el límite, cuánto tengo que obtener, para convertir una pérdida de tiempo en una buena idea? Tampoco lo sabemos
  • Resulta que en el proyecto que nos ocupaba no existía el largo plazo. Era un juego que duraba una tarde. En ese contexto (en el que el mundo se acaba mañana), no tiene sentido invertir
  • Hay otros factores que influyen en la rentabilidad de esa inversión: el tamaño y la complejidad del proyecto. Son variables también difíciles de medir, pero cuanto mayor y más complejo, más rentable será cualquier inversión en mantenibilidad (que es lo que hacemos al testear). En proyectos pequeños y simples, es menos interesante invertir
  • La relación entre tamaño y complejidad (aun cuando no es fácil medirlos) no es lineal. Un proyecto el doble de grande que otro (signifique eso lo que signifique), es más que el doble de complejo. Esto multiplica el efecto del punto anterior

Teniendo esto en cuenta, la conclusión no es tan clara y confortable, y además no es nada novedosa, y es que no hay herramientas ni técnicas correctas, sino herramientas y técnicas apropiadas para una tarea concreta. ¿Necesitábamos alforjas para este viaje? Probablemente no, pero puede servirnos para recalcar más aún la importancia de evaluar cómo vamos a enfocar cada proyecto, y no dejarnos llevar por la inercia. Aplicar un enfoque de testing tan exhaustivo a un proyecto simple y tan limitado en el tiempo pudo ser un EPIC FAIL (lo fue), pero eso no significa que en otro proyecto lo sea. Y de hecho, creo que en algunos (por ejemplo el nuestro actual) el EPIC FAIL sería el enfoque contrario.

El emperador está bien vestido y abrigado, lo que pasa es que el sábado fue a la playa y pasó un calor de cojones el pobre ;-)

basehttp://porras.lacoctelera.net/feeds/rss2/posts

Sergio Gil - Conferencia Rails Hispana '07
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content aws_fps: Rails Plugin for Amazon's Flexible Payment Service (FPS) (Ruby on Rails resources)   [2 views, last view 1 h, 40 min and 9 secs ago]

Amazon Flexible Payments Service is a payments service offered by Amazon that's focused solely at developers. Using Amazon FPS, you can accept payments on your sites from selling goods and services, donations, recurring payments, etc. You get the benefit of easier interaction with the millions of existing Amazon customers and access to Amazon's proven fraud detection platform. Warning: Only businesses with a US-based credit card can sign up for Amazon FPS!

Rails developer C. Scott Andreas wanted to use Amazon FPS for his own project but found that Amazon's existing examples was written for Rails 1.2.3 and was pretty ugly. So he's developed aws_fps (Github repository), an up to date Rails plugin that takes care of "the nuts and bolts of interfacing with Amazon's FPS." He's very keen to point out, however, that it's not recommended for production use and that if you want to use it, you need to read through the source code and be comfortable with how it operates (and tweak it to your own liking).

Support from: Brightbox; - Europe's leading provider of Ruby on Rails hosting. Now with Phusion Passenger support, each Brightbox server comes with access to a managed MySQL cluster and redundant SAN storage. Brightbox also provides managed services for large scale applications and dedicated clusters.


[Plugins ]
Rails Inside: The Ruby on Rails News Blog - Ruby on Rails resources
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content "RADIO-ACTIVITY makes you feel so healthy" (Top 20 blogs de la Blogosfera según wikio)   [599 views, last view 1 h, 50 min and 15 secs ago]
Just after the discovery of radium, by Pierre and Marie Curie, this chemical element became so popular that soon it was put in some foods, creams and even water, exposing many people to radiation. Minute dilutions of radium were added to tea, health tonics, ice creams, lipsticks, bath salts, costumes that glowed in the dark, and so forth. Radium was once an additive in products like toothpaste, hair creams, and even food items due to its supposed curative powers. Such products soon fell out of vogue and were prohibited by authorities in many countries, after it was discovered they could have serious adverse health effects [1].

These are some of those crazy products from the 'Radium days':

Radhitor

Radithor was a well known patent medicine/snake oil that consisted of triple distilled water containing at a minimum 1 microcurie each of the Radium 226 and 228 isotopes. Radithor was manufactured from 1918 - 1928 by the Bailey Radium Laboratories. It was advertised as a "Perpetual Sunshine" and was said to cure stomach cancer, mental illness, and restore sexual vigor and vitality. An American industrialist, Eben Byers, drank a bottle each day for four years, at the end of which he died in excruciating pain from cancer of the jaw as his facial bones disintegrated. [1]

Face creams

In the early 1930s, this time in France, the industry launched a cosmetic brand Tho-Radia "for pharmaceutical products, beauty products and perfumes." The cream, with a base of thorium and radium, had great success in Paris with promising curative and beautifying properties. [1]

Tho-radia face cream radioactivity consisted of 0.5 g thorium chloride and 0.25 mg radium bromide per 100 g of cream. It was advertised as a creation "by Dr Alfred Curie", who was not a member of Pierre Curie??s family and who probably never existed.

Radioactive water

Ceramic jars which added radioactivity (radon) to drinking water became also very popular in those years. Revigator was probably the most popular device developed in the United States to add radon to drinking water. As the brochure stated, "Results overcome doubts." "The millions of tiny rays that are continuously given off by this ore penetrate the water and form this great HEALTH ELEMENT--RADIO-ACTIVITY. All the next day the family is provided with two gallons of real, healthful radioactive water . . . nature's way to health." [1]

Toothpaste

Doramad radioactive toothpaste was produced during World War II by Auergesellschaft of Berlin. The back of the tube reads: "Its radioactive radiation increases the defenses of teeth and gums. The cells are loaded with new life energy, the destroying effect of bacteria is hindered. ... It gently polishes the dental enamel so it turns white and shiny". [1]

For the scrotum

Radiendocrinator was intended to be placed over the endocrine glands, "which have so masterful a control over life and bodily health." As one example of its use, men were advised "to put this instrument under the scrotum" ant to "wear it at night". [1]

Radium chocolate

Radium Chocolate manufactured by Burk & Braun, were sold at Germany from 1931 to 1936 and it was advertised for its rejuvenation power.

Suppositories

Produced by the Home Products Company of Denver, Colorado, these suppositories were guaranteed to contain real radium - and probably did. According to the brochure, "Weak Discouraged Men" would feel much better with this suppositories. All Home Product customer orders were shipped in a plain wrapper for confidentiality.[1]

Atomic Brand Names

On the other hand, the term "Radium" was incorporated into the brand names of any number of products even when these products didn't actually contain radium. These "Radium cigarrettes", for example, made no claim that they incorporated radioactive material. You can see some more fake radium products like this here.

References: Radioactive Quack Cures (Orau.org) y Surirradiés: une sixième victime (dissident-media.org).

Fogonazos - Top 20 blogs de la Blogosfera según wikio
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content Los servidores web más utilizados (Conferencia Rails Hispana '07)   [116 views, last view 1 h, 52 min and 53 secs ago]

Netcraft acaba de publicar su informe de enero de 2008 sobre qué servidores web se utilizan en internet. Aunque no hay sorpresas que señalar si comparamos el informe con los de meses anteriores, sí que hay varios datos que, por mi desconocimiento, me han llamado la atención.

Este es el top 7 de los servidores web más utilizados:

Servidor Porcentaje
Apache 50,61
Microsoft IIS 35,81
Google GFE 5,33
lighttpd 0,99
nginx 0,54
Sun 0,36

Los porcentajes de la tabla han sido calculados teniendo en cuenta el número de servidores totales, es decir, suponiendo que cada dominio equivale a un servidor. En el informe también hay datos de los servidores activos, es decir, aquellos dominios que no tienen una mera página de parking.

Pues bien, los datos que me han llamado la atención son:

  • El número de dominios activos es menor del 50% del número de dominios totales. Aunque pensándolo bien, tal ver no sea tan sorprendente, ya que yo mismo poseo varios dominios sin contenido.
  • El tercer servidor web más utilizado es GFE (Google Front End). Aunque Google no ofrece mucha información sobre su servidor web, parece que es una versión modificada de Apache. Y según Netcraft, el gran incremento que este servidor web ha tenido en los últimos años se debe al éxito de Blogger.
  • El quinto de la lista ya es nginx.
  • En sexto lugar, y prácticamente en el suelo de la gráfica, está toda la familia de servidores de Sun.

Con estos datos hay otra cosa que me sorprende. Si hay unos 150 millones de servidores web, de los cuales están activos unos 75 millones y el puesto en el ranking de Alexa de este blog es ahora mismo de 2.290.797, eso quiere decir que este blog está entre el 3% de servidores web más visitados de todo internet. Y dando un paso más, si este modesto blog, que tiene unas 40 visitas diarias, está entre el 3% de webs más visitadas, ¿cuántas visitas tiene una web que se encuentre en el percentil 50? Está claro que estamos ante una cola muy larga.

Actualización: leo en la propia web de Alexa que, al calcularse el ranking mediante un muestreo estadístico, las posiciones por encima de 100.000 no son nada fiables. Así que tomaos el último párrafo con humor.


[internet apache google nginx servidor sun web ]
Blog : Javier Vidal Postigo - Conferencia Rails Hispana '07
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content ERROR: gitosis.serve.main:Repository read access denied (Best Ruby on Rails Blogs )   [285 views, last view 1 h, 53 min and 56 secs ago]

Use Unfuddle? If you do and you see this error trying to clone a repository, it may be because:

This error looks to be happening because you are not explicitly involved in the project with which this repository is associated. You should note that even account administrators will need to be "involved" in a project in order to receive permissions to repositories associated with that project. In other words, if you add yourself to the project you should be able to connect to the repository.

Thanks to Unfuddle founder David Croswell for the solution. Worked like a charm.



Elc Tech Blog - Best Ruby on Rails Blogs
View original post|Add to del.icio.us| Created 11 months ago | Share

      MCFileManager and MCImageManager 3.0.8 Released (Tools used to develop L-exp web)   [114 views, last view 2 h, 0 min and 26 secs ago]

      MCFileManager and MCImageManager 3.0.8 Released (WYSIWYG editors)   [114 views, last view 2 h, 0 min and 26 secs ago]

      view feed content Tweening Volume with TweenLite AS3 (Starting with Flex web framework)   [154 views, last view 2 h, 1 min and 30 secs ago]
I was trying to figure out how to cleanly tween the volume property of a soundChannel or soundMixer class via Tweener. Their site shows that it is possible but the example they reference doesn??t work, so here is the solution:[code]//st = SoundTransform//sc = SoundChannelprivate function updateChannel() : void { var st : SoundTransform = new SoundTransform(sc.soundTransform.volume, 0 ); sc.soundTransform = st;}TweenLite.to(sc, 4, { volume:.5, ease:Strong.easeInOut, onUpdate:updateChannel } );[/code]What happens here is that yes TweenLite does in fact tween the property volume but you have to update the soundTransform to apply the new volume. When you setup the onUpdate param in
[Flash,Flex,Photoshop ]
Flex - Starting with Flex web framework
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content Converting Ghost Images gives error "The file selected is not from the supported sources" (VMware virtualization: products, resources, news and information)   [787 views, last view 2 h, 7 min and 33 secs ago]

IamTHEvilONE wrote:Mike,

that's because GHO is not directly supported. You'll need to use Ghost to export the GHO into the virtual disk format (sv2i or v2i).

Or, ghost the image inside a virtual machine as if it were physical and then use the reconfigure option on the virtual machine to make it bootable.

I am familiar with Ghost but not VMware:

1) How do i convert the image from GHO to sv2i or v2i with Ghost? I have Ghost Solution suite 2.5 and none of the applications in the suite allow me to do what you have suggested? also, why does VMware converter say that it supports gho files if it does not???

2) "Ghost the image inside a virtual machine as if it were physical and then use the reconfigure option on the virtual machine to make it bootable" Can you please explain in more detail how to do this? Sounds like it requires a boot disk prior to imaging the gho file?


[converter norton symantec ghost gho ghs error ]
VMware communities - VMware virtualization: products, resources, news and information
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content Commented Issue: Got exception when trying to sync (Flickr applications)   [4 views, last view 2 h, 21 min and 50 secs ago]
While trying to sync a pretty large directory tree with about 20k files in 539 folders, totaling about 170Gb, I got a Microsoft .NET framework popup dlg saying:
"Unhandled exception has occurred in your application. If you click..."

The details of the exception:

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.InvalidOperationException: Image cannot be added to the ImageList.
at System.Windows.Forms.ImageList.AddToHandle(Original original, Bitmap bitmap)
at System.Windows.Forms.ImageList.ImageCollection.Add(Original original, ImageInfo imageInfo)
at System.Windows.Forms.ImageList.ImageCollection.Add(String key, Image image)
at FlickrSync.SyncView.CalcSync()
at FlickrSync.SyncView..ctor(ArrayList pSyncFolders)
at FlickrSync.FlickrSync.ViewAndSync(ArrayList sf_col)
at FlickrSync.FlickrSync.menuitemSyncChildren_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
FlickrSync
Assembly Version: 0.8.1.0
Win32 Version: 0.8.1
CodeBase: file:///C:/Documents%20and%20Settings/trevor/Local%20Settings/Apps/2.0/N3J87O45.55H/YANR9QG2.CDW/flic..tion_9b565125f3d47d0f_0000.0008_62cad607174cf2da/FlickrSync.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
FlickrNet
Assembly Version: 2.1.3.24261
Win32 Version: 2.1.3.24261
CodeBase: file:///C:/Documents%20and%20Settings/trevor/Local%20Settings/Apps/2.0/N3J87O45.55H/YANR9QG2.CDW/flic..tion_9b565125f3d47d0f_0000.0008_62cad607174cf2da/FlickrNet.DLL
----------------------------------------
jcm1imyc
Assembly Version: 2.1.3.24261
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
rrfwfg6s
Assembly Version: 2.1.3.24261
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Web
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.Web/2.0.0.0__b03f5f7f11d50a3a/System.Web.dll
----------------------------------------
pwkx8xl0
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
PresentationCore
Assembly Version: 3.0.0.0
Win32 Version: 3.0.6920.0 (vista_rtm_wcp.061020-1904)
CodeBase: file:///C:/WINDOWS/assembly/GAC_32/PresentationCore/3.0.0.0__31bf3856ad364e35/PresentationCore.dll
----------------------------------------
WindowsBase
Assembly Version: 3.0.0.0
Win32 Version: 3.0.6920.0 (vista_rtm_wcp.061020-1904)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/WindowsBase/3.0.0.0__31bf3856ad364e35/WindowsBase.dll
----------------------------------------
ThumbDBLib
Assembly Version: 1.0.2302.22260
Win32 Version: 1.0.2302.22260
CodeBase: file:///C:/Documents%20and%20Settings/trevor/Local%20Settings/Apps/2.0/N3J87O45.55H/YANR9QG2.CDW/flic..tion_9b565125f3d47d0f_0000.0008_62cad607174cf2da/ThumbDBLib.DLL
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Comments: ** Comment from web user: geada **

Version 0.8.5 strongly improves the reliability of big uploads (big pictures, lots of pictures, lots of pictures in one set, long time for upload, etc.).
Please try again with the new version.



Flickrsync - Flickr applications
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content Using NetStream.send Callbacks in AS3 (Flash, Flex and Air related Blogs)   [69 views, last view 2 h, 24 min and 4 secs ago]
I've recently decided that I should post more tips and tricks on this blog. I get a lot of emails and also answer questions on mailing lists that contain information that may be hard to track down (or in the case of email replies impossible) and would be better posted publicly on a blog. Here's one I'd like to start with.

Question: I have been trying to use your tutorial on the NetStream.send function and am getting frustrated. I have been researching this for the past couple of days and not finding any answers.
[More]


[FMS Flex ]
Flashcomguru.com - Flash, Flex and Air related Blogs
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content Goldfish Emulator Platform - Run Android on QEMU (Virtualization Blogs, resources and news)   [314 views, last view 2 h, 42 min and 21 secs ago]
languagetypetext/htmlvalue

From Sang-bum at Samsung -

I am happy to announce that a patch for a new emulator platform Goldfish (QEMU 0.82 based Android emulator) is released at wiki.xensource.com/xenwiki/XenARM.

basehttp://blog.xen.org/index.php/feed/
[Community Partner Announcements Xen Development Xen.org Promotion Android Goldfish Patch ]
OpenXen - Virtualization Blogs, resources and news
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content Introducing the orkut mobile app (Find all the Google products and services)   [4 views, last view 2 h, 51 min and 27 secs ago]
languagetypetext/htmlvalueWhen we first launched a version of orkut for mobile phones, we couldn't have predicted how popular it would become. Every day, many of you sign in to orkut on your phones from all over the world– checking out scraps, updates from friends, and even viewing photos. As mobile phones are becoming one of the major ways that you access orkut, we thought it was about time to introduce a mobile application that offered you the site's core functionality wherever you happen to be.

Today, we're thrilled to announce the beta launch of the orkut mobile application, a downloadable app for Java-enabled phones (including popular phones like the Nokia N95, Nokia 6300, and Sony Ericsson W580i), that truly makes your orkut experience as mobile as you are. Check out our top five favorite features of the orkut mobile app:
  • Upload photos to orkut on-the-go, directly from your phone.
  • View scraps, friends' updates, and photo albums while you're offline.
  • Share your orkut albums with all of your friends whether they use orkut or not (via SMS).
  • Easily call or SMS your orkut friends and address book contacts from within the app.
  • Get automatic updates when your friends change their contact information or orkut profiles.


Excited? Install the orkut mobile app (available in English and Portuguese), by heading to m.google.com/orkut on your mobile phone's browser. While the app is free to download and use, your mobile provider's regular data charges will apply.

We've done our best to make this app accessible to as many of you as possible, so as long as you have Java enabled phone and a data plan, you should be all set. For more detailed info on supported phones, check out our help center. Once you've had a chance to play with this new app, we'd love to hear your feedback, so head to the Help Forum and let us know what you think.

Posted by Surojit Chatterjee, Google Mobile Team basehttp://feeds.feedburner.com/OrkutBlog

Google Orkut - Find all the Google products and services
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content Introducing the orkut mobile app (Social Networks)   [4 views, last view 2 h, 51 min and 27 secs ago]
languagetypetext/htmlvalueWhen we first launched a version of orkut for mobile phones, we couldn't have predicted how popular it would become. Every day, many of you sign in to orkut on your phones from all over the world– checking out scraps, updates from friends, and even viewing photos. As mobile phones are becoming one of the major ways that you access orkut, we thought it was about time to introduce a mobile application that offered you the site's core functionality wherever you happen to be.

Today, we're thrilled to announce the beta launch of the orkut mobile application, a downloadable app for Java-enabled phones (including popular phones like the Nokia N95, Nokia 6300, and Sony Ericsson W580i), that truly makes your orkut experience as mobile as you are. Check out our top five favorite features of the orkut mobile app:
  • Upload photos to orkut on-the-go, directly from your phone.
  • View scraps, friends' updates, and photo albums while you're offline.
  • Share your orkut albums with all of your friends whether they use orkut or not (via SMS).
  • Easily call or SMS your orkut friends and address book contacts from within the app.
  • Get automatic updates when your friends change their contact information or orkut profiles.


Excited? Install the orkut mobile app (available in English and Portuguese), by heading to m.google.com/orkut on your mobile phone's browser. While the app is free to download and use, your mobile provider's regular data charges will apply.

We've done our best to make this app accessible to as many of you as possible, so as long as you have Java enabled phone and a data plan, you should be all set. For more detailed info on supported phones, check out our help center. Once you've had a chance to play with this new app, we'd love to hear your feedback, so head to the Help Forum and let us know what you think.

Posted by Surojit Chatterjee, Google Mobile Team basehttp://feeds.feedburner.com/OrkutBlog

Google Orkut - Social Networks
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content Introducing the orkut mobile app (iA WebTrends 2008)   [4 views, last view 2 h, 51 min and 27 secs ago]
languagetypetext/htmlvalueWhen we first launched a version of orkut for mobile phones, we couldn't have predicted how popular it would become. Every day, many of you sign in to orkut on your phones from all over the world– checking out scraps, updates from friends, and even viewing photos. As mobile phones are becoming one of the major ways that you access orkut, we thought it was about time to introduce a mobile application that offered you the site's core functionality wherever you happen to be.

Today, we're thrilled to announce the beta launch of the orkut mobile application, a downloadable app for Java-enabled phones (including popular phones like the Nokia N95, Nokia 6300, and Sony Ericsson W580i), that truly makes your orkut experience as mobile as you are. Check out our top five favorite features of the orkut mobile app:
  • Upload photos to orkut on-the-go, directly from your phone.
  • View scraps, friends' updates, and photo albums while you're offline.
  • Share your orkut albums with all of your friends whether they use orkut or not (via SMS).
  • Easily call or SMS your orkut friends and address book contacts from within the app.
  • Get automatic updates when your friends change their contact information or orkut profiles.


Excited? Install the orkut mobile app (available in English and Portuguese), by heading to m.google.com/orkut on your mobile phone's browser. While the app is free to download and use, your mobile provider's regular data charges will apply.

We've done our best to make this app accessible to as many of you as possible, so as long as you have Java enabled phone and a data plan, you should be all set. For more detailed info on supported phones, check out our help center. Once you've had a chance to play with this new app, we'd love to hear your feedback, so head to the Help Forum and let us know what you think.

Posted by Surojit Chatterjee, Google Mobile Team basehttp://feeds.feedburner.com/OrkutBlog

Google Orkut - iA WebTrends 2008
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content Daemon Tools Pro driver error: -1 (Free CD/DVD Burning utilities)   [893 views, last view 2 h, 55 min and 18 secs ago]
Sorry if this was posted before, I searched but could not find the solution.

Daemon was working perfect but now it does not work. When I usually disable all drivers when closing daemon. Now I start daemon and when setting the number of drivers (usually 1), I get a message box saying:

Daemon Tools Pro driver error: -1

No matter what I try, even tried setting more than one driver but I cant seem to get rid the message. So I reinstall daemon tools lite (latest version) but no luck. :confused:

Thanks:)

Daemon Tools - Free CD/DVD Burning utilities
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content AV Theme (Mint) (Choose the best media player for your multimedia requirements)   [2 views, last view 2 h, 56 min and 26 secs ago]
Classic, 0 Reviews, 0 Downloads, 0/10
[Skins ]
Winamp - Choose the best media player for your multimedia requirements
View original post|Add to del.icio.us| Created 31 d and 11 h ago | Share

      view feed content vmware-rawdiskCreator - Use entire disk instead of a single partition? (VMware virtualization: products, resources, news and information)   [208 views, last view 2 h, 58 min and 37 secs ago]
gorkish wrote: My question is how do I create a vmdk which maps the entire drive to a VM in fusion? (IE /dev/disk1 vs /dev/disk1s1) I know enough about vmware to know it should be possible
Well I just ran a VMware Fusion Virtual Machine using Raw Disks without any defined partitions or a partition table, in other words using physical disks that had nothing but zeros written to the entire surface of the platters, and it was actually quite easy and because of your replies in "virtual" flopy disk I wouldn't lift a finger to tell you how to do it other then to say it's doable if you know what you're doing!
[raw vmdk whole_disk zfs ]
VMware communities - VMware virtualization: products, resources, news and information
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content Creating an Input Method (Find all the Google products and services)   [95 views, last view 3 h, 1 min and 18 secs ago]
languagetypetext/htmlvalue

To create an input method (IME) for entering text into text fields and other Views, you need to extend android.inputmethodservice.InputMethodService. This API provides much of the basic implementation for an input method, in terms of managing the state and visibility of the input method and communicating with the currently visible activity.

A good starting point would be the SoftKeyboard sample code provided as part of the SDK. Modify this code to start building your own input method.

An input method is packaged like any other application or service. In the AndroidManifest.xml file, you declare the input method as a service, with the appropriate intent filter and any associated meta data:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.fastinput"> <application android:label="@string/app_label">
<!-- Declares the input method service --> <service android:name="FastInputIME" android:label="@string/fast_input_label" android:permission="android.permission.BIND_INPUT_METHOD"> <intent-filter> <action android:name="android.view.InputMethod" /> </intent-filter> <meta-data android:name="android.view.im" android:resource="@xml/method" /> </service> <!-- Optional activities. A good idea to have some user settings. --> <activity android:name="FastInputIMESettings" android:label="@string/fast_input_settings"> <intent-filter> <action android:name="android.intent.action.MAIN"/> </intent-filter> </activity> </application> </manifest>

If your input method allows the user to tweak some settings, you should provide a settings activity that can be launched from the Settings application. This is optional and you may choose to provide all user settings directly in your IME's UI.

The typical life-cycle of an InputMethodService looks like this:

Visual Elements

There are 2 main visual elements for an input method??the input view and the candidates view. You don't have to follow this style though, if one of them is not relevant to your input method experience.

Input View

This is where the user can input text either in the form of keypresses, handwriting or other gestures. When the input method is displayed for the first time, InputMethodService.onCreateInputView() will be called. Create and return the view hierarchy that you would like to display in the input method window.

Candidates View

This is where potential word corrections or completions are presented to the user for selection. Again, this may or may not be relevant to your input method and you can return null from calls to InputMethodService.onCreateCandidatesView(), which is the default behavior.

Designing for the different Input Types

An application's text fields can have different input types specified on them, such as free form text, numeric, URL, email address and search. When you implement a new input method, you need to be aware of the different input types. Input methods are not automatically switched for different input types and so you need to support all types in your IME. However, the IME is not responsible for validating the input sent to the application. That's the responsibility of the application.

For example, the LatinIME provided with the Android platform provides different layouts for text and phone number entry:

InputMethodService.onStartInputView() is called with an EditorInfo object that contains details about the input type and other attributes of the application's text field.

(EditorInfo.inputType & EditorInfo.TYPE_CLASS_MASK) can be one of many different values, including:

  • TYPE_CLASS_NUMBER
  • TYPE_CLASS_DATETIME
  • TYPE_CLASS_PHONE
  • TYPE_CLASS_TEXT

See android.text.InputType for more details.

EditorInfo.inputType can contain other masked bits that indicate the class variation and other flags. For example, TYPE_TEXT_VARIATION_PASSWORD or TYPE_TEXT_VARIATION_URI or TYPE_TEXT_FLAG_AUTO_COMPLETE.

Password fields

Pay specific attention when sending text to password fields. Make sure that the password is not visible within your UI - in neither the input view nor the candidates view. And do not save the password anywhere without explicitly informing the user.

Landscape vs. portrait

The UI needs to be able to scale between landscape and portrait orientations. In non-fullscreen IME mode, leave sufficient space for the application to show the text field and any associated context. Preferably, no more than half the screen should be occupied by the IME. In fullscreen IME mode this is not an issue.

Sending text to the application

There are two ways to send text to the application. You can either send individual key events or you can edit the text around the cursor in the application's text field.

To send a key event, you can simply construct KeyEvent objects and call InputConnection.sendKeyEvent(). Here are some examples:

InputConnection ic = getCurrentInputConnection(); long eventTime = SystemClock.uptimeMillis(); ic.sendKeyEvent(new KeyEvent(eventTime, eventTime, KeyEvent.ACTION_DOWN, keyEventCode, 0, 0, 0, 0, KeyEvent.FLAG_SOFT_KEYBOARD|KeyEvent.FLAG_KEEP_TOUCH_MODE)); ic.sendKeyEvent(new KeyEvent(SystemClock.uptimeMillis(), eventTime, KeyEvent.ACTION_UP, keyEventCode, 0, 0, 0, 0, KeyEvent.FLAG_SOFT_KEYBOARD|KeyEvent.FLAG_KEEP_TOUCH_MODE));

Or use the convenience method:

InputMethodService.sendDownUpKeyEvents(keyEventCode);

Note: It is recommended to use the above method for certain fields such as phone number fields because of filters that may be applied to the text after each key press. Return key and delete key should also be sent as raw key events for certain input types, as applications may be watching for specific key events in order to perform an action.

When editing text in a text field, some of the more useful methods on android.view.inputmethod.InputConnection are:

  • getTextBeforeCursor()
  • getTextAfterCursor()
  • deleteSurroundingText()
  • commitText()

For example, let's say the text "Fell" is to the left of the cursor. And you want to replace it with "Hello!":

InputConnection ic = getCurrentInputConnection(); ic.deleteSurroundingText(4, 0); ic.commitText("Hello", 1); ic.commitText("!", 1);Composing text before committing

If your input method does some kind of text prediction or requires multiple steps to compose a word or glyph, you can show the progress in the text field until the user commits the word and then you can replace the partial composition with the completed text. The text that is being composed will be highlighted in the text field in some fashion, such as an underline.

InputConnection ic = getCurrentInputConnection(); ic.setComposingText("Composi", 1); ... ic.setComposingText("Composin", 1); ... ic.commitText("Composing ", 1);

Intercepting hard key events

Even though the input method window doesn't have explicit focus, it receives hard key events first and can choose to consume them or forward them along to the application. For instance, you may want to consume the directional keys to navigate within your UI for candidate selection during composition. Or you may want to trap the back key to dismiss any popups originating from the input method window. To intercept hard keys, override InputMethodService.onKeyDown() and InputMethodService.onKeyUp(). Remember to call super.onKey* if you don't want to consume a certain key yourself.

Other considerations
  • Provide a way for the user to easily bring up any associated settings directly from the input method UI
  • Provide a way for the user to switch to a different input method (multiple input methods may be installed) directly from the input method UI.
  • Bring up the UI quickly - preload or lazy-load any large resources so that the user sees the input method quickly on tapping on a text field. And cache any resources and views for subsequent invocations of the input method.
  • On the flip side, any large memory allocations should be released soon after the input method window is hidden so that applications can have sufficient memory to run. Consider using a delayed message to release resources if the input method is in a hidden state for a few seconds.
  • Make sure that most common characters can be entered using the input method, as users may use punctuation in passwords or user names and they shouldn't be stuck in a situation where they can't enter a certain character in order to gain access into a password-locked device.
Samples

For a real world example, with support for multiple input types and text prediction, see the LatinIME source code. The Android 1.5 SDK also includes a SoftKeyboard sample as well.

Learn about Android 1.5 and more at Google I/O. Members of the Android team will be there to give a series of in-depth technical sessions and to field your toughest questions.

basehttp://feeds.feedburner.com/blogspot/hsDu
[How-to Input methods Android 1.5 ]
Google Android - Find all the Google products and services
View original post|Add to del.icio.us| Created more than one year ago | Share

      view feed content Creating an Input Method (Developing with Google Android)   [95 views, last view 3 h, 1 min and 18 secs ago]
languagetypetext/htmlvalue

To create an input method (IME) for entering text into text fields and other Views, you need to extend android.inputmethodservice.InputMethodService. This API provides much of the basic implementation for an input method, in terms of managing the state and visibility of the input method and communicating with the currently visible activity.

A good starting point would be the SoftKeyboard sample code provided as part of the SDK. Modify this code to start building your own input method.

An input method is packaged like any other application or service. In the AndroidManifest.xml file, you declare the input method as a service, with the appropriate intent filter and any associated meta data:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.fastinput"> <application android:label="@string/app_label">
<!-- Declares the input method service --> <service android:name="FastInputIME" android:label="@string/fast_input_label" android:permission="android.permission.BIND_INPUT_METHOD"> <intent-filter> <action android:name="android.view.InputMethod" /> </intent-filter> <meta-data android:name="android.view.im" android:resource="@xml/method" /> </service> <!-- Optional activities. A good idea to have some user settings. --> <activity android:name="FastInputIMESettings" android:label="@string/fast_input_settings"> <intent-filter> <action android:name="android.intent.action.MAIN"/> </intent-filter> </activity> </application> </manifest>

If your input method allows the user to tweak some settings, you should provide a settings activity that can be launched from the Settings application. This is optional and you may choose to provide all user settings directly in your IME's UI.

The typical life-cycle of an InputMethodService looks like this:

Visual Elements

There are 2 main visual elements for an input method??the input view and the candidates view. You don't have to follow this style though, if one of them is not relevant to your input method experience.

Input View

This is where the user can input text either in the form of keypresses, handwriting or other gestures. When the input method is displayed for the first time, InputMethodService.onCreateInputView() will be called. Create and return the view hierarchy that you would like to display in the input method window.

Candidates View

This is where potential word corrections or completions are presented to the user for selection. Again, this may or may not be relevant to your input method and you can return null from calls to InputMethodService.onCreateCandidatesView(), which is the default behavior.

Designing for the different Input Types

An application's text fields can have different input types specified on them, such as free form text, numeric, URL, email address and search. When you implement a new input method, you need to be aware of the different input types. Input methods are not automatically switched for different input types and so you need to support all types in your IME. However, the IME is not responsible for validating the input sent to the application. That's the responsibility of the application.

For example, the LatinIME provided with the Android platform provides different layouts for text and phone number entry:

InputMethodService.onStartInputView() is called with an EditorInfo object that contains details about the input type and other attributes of the application's text field.

(EditorInfo.inputType & EditorInfo.TYPE_CLASS_MASK) can be one of many different values, including:

  • TYPE_CLASS_NUMBER
  • TYPE_CLASS_DATETIME
  • TYPE_CLASS_PHONE
  • TYPE_CLASS_TEXT

See android.text.InputType for more details.

EditorInfo.inputType can contain other masked bits that indicate the class variation and other flags. For example, TYPE_TEXT_VARIATION_PASSWORD or TYPE_TEXT_VARIATION_URI or TYPE_TEXT_FLAG_AUTO_COMPLETE.

Password fields

Pay specific attention when sending text to password fields. Make sure that the password is not visible within your UI - in neither the input view nor the candidates view. And do not save the password anywhere without explicitly informing the user.

Landscape vs. portrait

The UI needs to be able to scale between landscape and portrait orientations. In non-fullscreen IME mode, leave sufficient space for the application to show the text field and any associated context. Preferably, no more than half the screen should be occupied by the IME. In fullscreen IME mode this is not an issue.

Sending text to the application

There are two ways to send text to the application. You can either send individual key events or you can edit the text around the cursor in the application's text field.

To send a key event, you can simply construct KeyEvent objects and call InputConnection.sendKeyEvent(). Here are some examples:

InputConnection ic = getCurrentInputConnection(); long eventTime = SystemClock.uptimeMillis(); ic.sendKeyEvent(new KeyEvent(eventTime, eventTime, KeyEvent.ACTION_DOWN, keyEventCode, 0, 0, 0, 0, KeyEvent.FLAG_SOFT_KEYBOARD|KeyEvent.FLAG_KEEP_TOUCH_MODE)); ic.sendKeyEvent(new KeyEvent(SystemClock.uptimeMillis(), eventTime, KeyEvent.ACTION_UP, keyEventCode, 0, 0, 0, 0, KeyEvent.FLAG_SOFT_KEYBOARD|KeyEvent.FLAG_KEEP_TOUCH_MODE));

Or use the convenience method:

InputMethodService.sendDownUpKeyEvents(keyEventCode);

Note: It is recommended to use the above method for certain fields such as phone number fields because of filters that may be applied to the text after each key press. Return key and delete key should also be sent as raw key events for certain input types, as applications may be watching for specific key events in order to perform an action.

When editing text in a text field, some of the more useful methods on android.view.inputmethod.InputConnection are:

  • getTextBeforeCursor()
  • getTextAfterCursor()
  • deleteSurroundingText()
  • commitText()

For example, let's say the text "Fell" is to the left of the cursor. And you want to replace it with "Hello!":

InputConnection ic = getCurrentInputConnection(); ic.deleteSurroundingText(4, 0); ic.commitText("Hello", 1); ic.commitText("!", 1);Composing text before committing

If your input method does some kind of text prediction or requires multiple steps to compose a word or glyph, you can show the progress in the text field until the user commits the word and then you can replace the partial composition with the completed text. The text that is being composed will be highlighted in the text field in some fashion, such as an underline.

InputConnection ic = getCurrentInputConnection(); ic.setComposingText("Composi", 1); ... ic.setComposingText("Composin", 1); ... ic.commitText("Composing ", 1);

Intercepting hard key events

Even though the input method window doesn't have explicit focus, it receives hard key events first and can choose to consume them or forward them along to the application. For instance, you may want to consume the directional keys to navigate within your UI for candidate selection during composition. Or you may want to trap the back key to dismiss any popups originating from the input method window. To intercept hard keys, override InputMethodService.onKeyDown() and InputMethodService.onKeyUp(). Remember to call super.onKey* if you don't want to consume a certain key yourself.

Other considerations
  • Provide a way for the user to easily bring up any associated settings directly from the input method UI
  • Provide a way for the user to switch to a different input method (multiple input methods may be installed) directly from the input method UI.
  • Bring up the UI quickly - preload or lazy-load any large resources so that the user sees the input method quickly on tapping on a text field. And cache any resources and views for subsequent invocations of the input method.
  • On the flip side, any large memory allocations should be released soon after the input method window is hidden so that applications can have sufficient memory to run. Consider using a delayed message to release resources if the input method is in a hidden state for a few seconds.
  • Make sure that most common characters can be entered using the input method, as users may use punctuation in passwords or user names and they shouldn't be stuck in a situation where they can't enter a certain character in order to gain access into a password-locked device.
Samples

For a real world example, with support for multiple input types and text prediction, see the LatinIME source code. The Android 1.5 SDK also includes a SoftKeyboard sample as well.

Learn about Android 1.5 and more at Google I/O. Members of the Android team will be there to give a series of in-depth technical sessions and to field your toughest questions.

basehttp://feeds.feedburner.com/blogspot/hsDu
[How-to Input methods Android 1.5 ]
Google Android - Developing with Google Android
View original post|Add to del.icio.us| Created more than one year ago | Share