Android features a standard widget for displaying the pictures of
your choice on your desktop, it's a good and frequently used widget
by all Android users (which means used more and more each day !).
The only thing missing from the standard widget is its only 2x2 size
available. By using recent alternative launchers (ADW Launcher
/
LauncherPro Plus)
you can resize the widget on your home screen but picture scaling is
very poor.
The idea behing Big Photo Frame Widget is to fix the scaling issue
of the original widget and to provide different sizes : 2x3 / 3x2 /
3x3 / 4x4. By the way, the widget is free, but if you want to
support me, don't hesitate to hit the
donate link
!
If you want to try (and keep it I hope), scan the following QRCode
with your device :
If you have feature request or bug reports, don't hesitate to
comment this post !
Update : I've released a donate version on the market, scan this
QRCode to access it :
I am owner of a not so old MacbookPro (3.1 - late 2007), and, as it
is my main development machine, I felt a little lack of space and
speed mainly because of its hard drive (5400rpm / 160GB).
I wanted speed and so I got a new generation drive with a 120GB SSD,
I wanted space so I have dumped the useless SuperDrive from my
machine to replace it with a drive caddy (found
here) where I have put my old HDD.
The operation is not so easy, but if you are careful and if you take
your time, you will not regret what you'll get !
My machine is now blazing fast and it helped me keeping it more
instead of buying a shiny new MBP with an unremoveable battery (I
think I don't have the feeling with laptop batteries...)
This blog post has not been translated, please find below the
french version Màj : Voici
l'annonce officielle
Introduction
Alors que la version 1.7 de
Prototype, le fameux framework
JS, s'apprête à voir le jour. Nous allons, dans cet article, lister
trois nouveautés majeures de cette version.
Element.Layout
Cette classe permet de fournir, avec un maximum de précision, tout un
tas de mesures sur un élement. Il existe deux manières d'utiliser
cette classe, voici la méthode du fainéant :
Le fonctionnement de la deuxième ligne est similaire à l'utilisation
de la méthode
Element#getHeight(). Une utilisation plus minutieuse pourrait ressembler à ça ;
L'avantage de la seconde méthode est que les valeurs de base
nécessaire au calcul des dimensions sont mises en cache dans la
variable layout et donc un seul appel est fait au DOM (gourmand en
ressource). Le paramètre "true" de
Element#getLayout()
permet de forcer la récupération de toutes les valeurs d'un seul coup.
Si ce paramètre est homis, les valeurs seront récupérées une par une
et conservées en cache. Pour des raisons d'optimisation, les anciennes
méthodes
Element#getWidth()
et
Element#getHeight()
n'utilisent malheureusement pas cette méthode, mais utilisent
l'ancienne méthode
Element#getDimensions(). La liste des propriétés mesurables est disponible à
cette adresse. Note 1 : Il faut bien garder à l'esprit que si les dimensions de
l'élément, auquel votre layout fais référence, change, vous devrez
créer un nouvelle instance de
Element.Layout. Note 2 : Si votre élément est masqué avec style
"diplay:none" il vous sera possible d'effectuer des mesures
uniquement si l'élément parent est visible. Par ailleurs les mesures
width, height, top, left,
bottom et right auront toujours pour valeur 0.
Event.Handler
L'un des problèmes de la délégation d'évènement avec les anciennes
méthodes d'observation d'évènement est le ciblage de l'élement qui
nous intéresse. Considérons pour les exemples suivant l'arbre HTML
ci-dessous :
Lorsque qu'un évènement est levé sur un élément il est levé sur tous
ses parents récursivement, tant qu'il n'est pas arrêté explicitement
ou qu'il a atteind la racine de l'arbre. On devait précédemment faire
ce genre de chose :
Quand nous devions arrêter l'observation d'un évènement particulier il
était fastidieux de devoir stocker la fonction assignée dans une
variable bien précise afin de pouvoir la re-passer en paramètre à la
méthode
Element#stopObserving(). Heureusement les développeurs de Prototype nous ont simplifié la
tache avec la méthode
Element#on(). Cette nouvelle méthode prend en paramètre un nouveau paramètre (un
selecteur CSS) permettant de cibler exactement la cible qui nous
intéresse. De plus elle renvoie une instance de
Element.Handler
qui possède des méthodes stop()
et
start()
qui permettent respectivement d'arrêter et de reprendre l'observation
d'un évènement particulier. En voici un exemple d'utilisation :
Pour compléter ces améliorations, une nouvelle méthode a été ajouté :
Element#purge()
permettant de nettoyer un élément de tous les listeners d'évenement
qui lui sont attachés.
Sizzle
Sizzle est le nom du sélecteur CSS
utilisé dans jQuery. Afin de pouvoir
utiliser ce middleware partagé entre plusieurs frameworks, l'équipe de
développement a fait un gros travail de modularité pour laisser le
choix du moteur du traitement CSS. En effet, si vous souhaitez par
exemple utiliser l'ancien moteur (présent depuis la version 1.5.1), il
vous suffit de rapatrier le code source (via
github par
exemple) et compiler prototype de la manière suivante :
rake dist SELECTOR_ENGINE=legacy_selector
De la même manière vous pouvez écrire votre propre moteur en le
plaçant dans le répertoire vendor/ du package.
Conclusion
Les trois améliorations de la nouvelle mouture énoncées ci-dessus
peuvent-être complétées par une ribambelle d'ajustements (notamment
lié à IE9). Cette nouvelle version confirme les prétentions de la
librairie visant à palier les manquements de compatibilités
inter-navigateurs et simplifier considérablement le développement
d'applications javascript, tout en restant le plus léger possible.
I was lurking on Android based tablets and I've found a 50% bargain
on an iPad, so I've bought an iPad (16Gb / Wifi).
I am really impressed by the device so far, it is really fast, its
battery last for hours. It still have the bad things of iOS < 4,
no multitasking is really bugging me...
Post updated ! I will update this post as soon as iOS 4.x will be
released...
I am a big fan of music, and I like to listen to all my music
wherever I am and whatever I do (specially when coding).
All my medias are stored on a NAS drive that features a little
embedded linux distribution as operating system. One of the service
is called iTunes media sharing (mt-daapd is the real name of the
daemon).
It is really a cool feature as I can listen media stored on my NAS
from whatever device on my LAN. The magic behind is called Bonjour
which is a protocol that allows device to register themselves on the
network and being discovered by others.
My problem is I want to be able to listen to my home music at work,
and Bonjour service does not go out of my LAN. The additional thing
is I want to listen to my music using iTunes (I am fond of
Bowtie) on my MacBook Pro.