SPOILER ! 1 livre en 3 lignes.
– Dans un futur parfait, tout le monde s’emmerde, les gens s’immolent et l’humanité décline.
– Mais un homme qui sait lire rencontre une femme, alors ils bouquinent (et font d’autres choses…)
– Le robot le plus perfectionné décide de les séparer, mais l’homme réussi à revenir et le robot réussi enfin à se suicider.
.NET : Les sorties en chaines de caractères d'un objet DateTime.
Dim d As DateTime = DateTime.Now
d.ToLongDateString() = mercredi 21 juillet 2010
d.ToLongTimeString() = 10:40:22
d.ToShortDateString() = 21/07/2010
d.ToShortTimeString() = 10:40
TFS : Lister tous les projets (ligne de commande)
TFS : Plus moderne déjà…
Accéder au répertoire de l’outil « tf.exe » :
cd C:Program FilesMicrosoft Visual Studio 9.0Common7IDE
Lancer la commande :
tf Dir $/
VSS : Lister tous les projets (ligne de commande)
VSS… Ca ne me rajeunit pas !
Accéder au répertoire de l’outil « ss.exe » :
cd C:Program FilesMicrosoft Visual StudioVSSwin32
Lancer la commande :
ss Dir $/
A noter que les variables d’environnement suivantes doivent être renseignées :
SSUSER : Spécifie le nom d’utilisateur à utiliser pour les opérations de ligne de commande.
SSDIR : Spécifie l’emplacement du fichier Srcsafe.ini (base de données VSS à laquelle se connecter).
That’s a bingo !
Philip K. Dick – Blade Runner
SPOILER ! 1 livre en 3 lignes.
– Un chasseur d’androides en a ras-le bol de son mouton électrique.
– Il dégomme 6 androides en une journée, ce qui lui apporte une grosse prime et permet de lui acheter une chèvre vivante.
– La chèvre finit assassinée par une androide vengeresse. Alors il fuit, trouve un crapeau électrique, et finit par revenir auprès de sa femme qui commençait à en avoir plein le c…
Cormac McCarthy – La Route
SPOILER ! 1 livre en 3 lignes.
– Après l’apocalypse, un homme et son fils fuient la désolation et les « méchants » en migrant vers le Sud.
– Ils meurent presque de faim et de froid, mais réussissent à arriver au bord de l’océan.
– Blessé, le père meurt mais l’enfant est récupéré par une famille de « gentils ».
SQL Server : requête pour lister les tables et leurs colonnes
Rapidement, afin d’éviter de la retrouver à chaque fois :
select T.name, C.name
from syscolumns AS C
INNER JOIN sysobjects AS T ON C.id = T.id
where T.xtype = 'U'
ORDER BY T.NAME, C.colorder
Tout ceci étant largement perfectible…
Visual Studio : Récupérer les modèles de projets
Voici la commande à passer (ici pour VS2008) :
<VS2008_INSTALL_PATH>Common7IDEdevenv.exe /setup
Cela permet de mettre à jour le cache des modèles de « Mes documents » avec ceux installés par défaut.
Fonctionne aussi avec la version 2010 (et la version express pour Windows Phone 😉 )
ColorSeeds pour Windows Phone 7
ColorSeeds pour WP7 disponible depuis novembre 2010.
## UPDATE 18/02/2011
La version 1.1 a été mise à jour en 2.0 (avec le fameux mode « infini »).
Une version debuggée de la 1.1 passe en gratuit sur le Marketplace (version 1.2). En 3 jours de présence, déjà 600 exemplaires téléchargés !
## UPDATE 23/12/2010
Blog officiel du jeu : http://colorseeds.wordpress.com
## UPDATE 19/11/2010
Voici donc « ColorSeeds » disponible sur le MarketPlace Zune !
Je voulais le proposer gratuitement, mais impossible d’insérer une bannière pub pour les développeurs européens !
Le jeu propose une version d’essai de 15 niveaux, puis 0.99€ pour les 56 niveaux 😉
Pourquoi ce changement de nom de ColorVirus à ColorSeeds ? J’avais peur que le terme « Virus » effraie le comité de validation des appli et la ménagère de moins de 50 ans lol
##
Me voilà reparti depuis 2 mois sur le portage de ColorVirus pour mobile.
J’avais déjà fait un essai infructeux pour Android (Eclipse + plugins = l’enfer !). Et puis Microsoft se décide à offrir tout un toolkit de développement pour Windows Phone 7 :
- Visual Studio 2010 Express pour Windows Phone
- Emulateur Windows Phone
- Silverlight pour Windows Phone
- XNA Game Studio 4.0
Une aubaine !
J’espère pouvoir soumettre mon appli sur market place à l’automne, quand les premiers smartphones débarqueront.
.NET : Génération d'une image à la volée
I believe I can (make an image on the) flyyyyyyy !
Imaginons qu’on veuille afficher une image qui changerait d’aspect à chaque chargement de page (graphiques, clavier virtuel pour l’authentification…). Il ne serait pas pratique de stocker ces images temporaires côté serveur (il faudrait être sûr de donner un nom unique aux images pour éviter les conflits par exemple).
La solution qui suit permet d’éviter de stocker des images sur le serveur. On va créer une page ASPX qui retourne un flux de type MIME « image/*** ».
Dans la page qui affichera l’image générée, il faut une balise de la sorte :
<img src="GenerateurImage.aspx" alt="" />
La page GenerateurImage.aspx
ne contient rien (ou le minimum).
Tout se passe dans la procédure page_load du code-behind (GenerateurImage.aspx.cs
) :
public void Page_Load(object sender, System.EventArgs e)
{
// On peut partir d'une bitmap existante, ou en générer une nouvelle :
Bitmap
oBit
= new Bitmap(???);
Graphics g = Graphics.FromImage(oBit)
// Ici on modifie l'image avec toutes les méthodes offertes par la classe Graphics.
// On pourrait éventuellement utiliser des paramètres de la requête (ID=...) pour rendre la chose encore plus dynamique !
// On change le type de flux de sortie
Response.ContentType = « image/jpeg »;
// On encode (compression)
ImageCodecInfo myImageCodecInfo;
Encoder myEncoder;
EncoderParameter myEncoderParameter;
EncoderParameters myEncoderParameters;
myImageCodecInfo = GetEncoderInfo(« image/jpeg »);
myEncoder = Encoder.Quality;
myEncoderParameters = new EncoderParameters(1);
// Niveau d’encodage élévé.
myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
oBit.Save(Response.OutputStream, myImageCodecInfo, myEncoderParameters);
oBit
.Dispose();
// Pas de cache pour cette page.
Response.CacheControl = « no-cache »;
Response.AddHeader(« Pragma », « no-cache »);
Response.Expires = -1;
}
En bonus, la fonction qui ramène le codec :
private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return ';
}