mardi 30 octobre 2012

Afficher le dossier Library de votre dossier sous OS X Lion

Sous OS X Lion, le dossier ~/Library de votre user est par défaut masqué.

En travaillant sous XCode pour faire des projets iOS, ce n'est pas idéal, car c'est là que vont être générés les App.

Pour permettre un affichage permanent, il suffit d’exécuter cette ligne de commande :

chflags nohidden ~/Library/


Source : http://osxdaily.com/2011/07/22/access-user-library-folder-in-os-x-lion/

mercredi 3 octobre 2012

UltraEdit sans barre (retirer Open Files)

J'utilise beaucoup UltraEdit, et grâce à une licence me permettant de faire des mises à jours gratuites à vie, il arrive régulièrement que ces mises à jour retirent mes préférences.
Et celle qui me gène le plus et qui est la plus difficile à retrouver, c'est comment épuré l'interface à son maximum.
Je ne me sers d'aucunes barres d'outils (à quoi cela sert si on utilise des raccourcis clavier !), donc je les retire toutes.
Mais il reste à chaque fois la barre de titre de la barre des onglets... Et oui, tous les fichiers ouverts vont dans un onglet, mais à ces onglets, il y'a une barre de titre !!!


Comment faire pour retirer cette barre, voici la réponse dans la FAQ :

How can I get rid of the "Open Files" title bar above the file tabs?
The "Open Files" bar allows you to click and drag your file tabs to any position on your screen that you want. You can disable this by going to Advanced -> Configuration -> Application Layout -> File Tabs -> Operation and unchecking "Dockable". This will, however, "fix" your file tabs, making them statically positioned at the top of the editor.

Et le résultat :






Voilà comment gagner une ligne d'affichage !

mercredi 26 septembre 2012

Rotation de l'écran sur iOS6

Si vous développez une application sur iOS et que vous gérez différentes orientations (paysage / portrait), vous utilisez certainement la méthode shouldAutorotateToInterfaceOrientation pour retourner les orientations autorisées.
Cette méthode était appelée très souvent, Apple a donc décider de la mettre en obsolète.
Sur iOS 6, il faut maintenant utiliser : supportedInterfaceOrientations, cette méthode est maintenant appelée au démarrage et retourne un masque pour lister toutes les valeurs valides.

Il me reste un problème encore, sur iOS 4.x, mon application n'est pas correctement orientée et je n'arrive pas à savoir pourquoi (aucun problème sur iOS 5)... Si vous avez une idée...

Source : http://dhilipsiva.blogspot.fr/2012/07/ios-6-ui-interface-orientation.html

jeudi 20 septembre 2012

iPhone 5 et le 16/9eme (640 * 1136)

L'arrivée de iOS6 et surtout de l'iPhone 5 (ainsi que l'iPod Touch 4eme génération) se pose la question de comment un jeu utilisant OpenGL ES va pouvoir s'initialiser avec cette nouvelle résolution (tout en gardant la compatibilité avec la précédente résolution qui est du 2/3).

Si vous ne faites aucun changement avec vos anciens projets, vous allez vous retrouver avec des bandes noirs (on a du 960 * 640 dans la nouvelle résolution du 1136 * 640).

En lisant la doc d'Apple, on trouve comme information qu'il suffit de mettre une image de lancement pour cette nouvelle résolution pour que cela fonctionne.
Malheureusement, la taille de la window se trouve bien en 1136 mais la view reste en 960...
En fait, il faut modifier tout simplement votre fichier "xib" qui normalement avoir une view qui a une résolution 320 * 480. Il faut alors modifier ces valeurs en 320 * 568.
Et oui, il faut définir une view en non retina 16/9. En retina, ces valeurs seront x2 (donc 640 * 1136).

Sur les anciennes platformes, cette vue sera coupée pour reprendre son format 2/3 et non plus 16/9.

C'est le genre de chose sur lequel on peut passer beaucoup de temps à chercher...

samedi 28 juillet 2012

Eviter la mise en veille d'un Mac lors de la fermeture de l'écran



Pour cela, il faut aller dans Terminal et lancer cette commande :
sudo pmset hibernatemode 0




Pour le remettre en marche :
sudo pmset hibernatemode 1

jeudi 21 juin 2012

Développer en C++ sur Android

Depuis un certain temps, Google a publié son Native Developpement Kit (NDK) qui permet de compiler du C / C++ sur les terminaux Android.
Ce qui est moins connu & visible au niveau des docs, c'est que depuis la version l'API 9 (attention à ne pas confondre ndk-r8 et le niveau de l'API, il n'y a pas de lien), il est possible de faire une application 100% native donc sans code Java.
Cela implique que votre application ne pourra tourner que sur Android 2.3 minimum.

Maintenant, comment faire... Il y a beaucoup à dire, je vais ici seulement donner des pistes et je complèterais si quelqu'un me demande de développer une partie.

La première chose à faire est bien sur d'installer un environnement de développement pour Android :
http://developer.android.com/sdk/installing.html

Je vous conseille de prendre Eclipse Classic & C/C++ (que vous pouvez mettre dans le même dossier).
Une fois que vous avez tout installer en suivant les étapes, faite une "Hello World" en Java pour être sur que l'émulateur fonctionne par exemple.

Deuxième étape, il faut installer le NDK : http://developer.android.com/sdk/ndk/index.html

Maintenant, pour faire une application 100% native, il vous faudra faire une fichier de type Makefile pour compiler votre code C/C++.
Vous trouverez des exemples dans le dossier samples du NDK (http://developer.android.com/sdk/ndk/overview.html#samples) et de la doc dans docs/ANDROID-MK.html.

Dans vos fichiers à compiler, il faudra ajouter ce qui se trouve dans "sources\android\native_app_glue".
Vous aurez plus d'info aussi dans docs/NATIVE-ACTIVITY.HTML

Ne mettez pas de main() dans votre code d'origine, mais un android_main(struct android_app* state).
Vous avez aussi un exemple dans samples\native-plasma\jni\plasma.c
Il vous faudra aussi un fichier default.properties (voir dans samples\native-plasma\) pour mettre au compilateur natif de savoir l'API à utiliser.

Avec tout cela, vous devez être capable de générer une librairie libVotreProjet.so

Maintenant comment lancer cela ? Il vous faut un projet Eclipse de type Android mais vide (sans classe java). Dans votre projet, vous devez ajouter :

un dossier libs avec votre fichier libxxx.so
Par exemple
libs/armeabi/libxxxx.so

Un fichier AndroidManifest.xml avec les autorisations dont vous avez besoin, mais avec :
    <uses-sdk android:minSdkVersion="9" />
    <application android:label="@string/app_name"
                 android:hasCode="false" android:debuggable="true">
        <activity android:name="android.app.NativeActivity"
                  android:label="@string/app_name">
            <meta-data android:name="android.app.lib_name"
                    android:value="native-plasma" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>



Avec cela, vous devriez pouvoir lancer votre application 100% C / C++ sur l'émulateur (et sur un vrai appareil Android).

Je ferais un autre article sur la lecture de fichiers de données que l'on peut aussi faire intégralement en C / C++.

jeudi 24 mai 2012

L'autonomie du Nokia Lumia 800 chez Free Mobile

Je suis passé depuis peu de temps sur un Nokia Lumia 800.

Je savais que le téléphone avait des problèmes d'autonomie avant mise à jour, mais au final, même avec celle-ci, je me suis retrouvé avec un téléphone tenant 12h maximum avec une utilisation peu intense !

Le téléphone chargé à 100% le matin, sans faire d'appel ni de surf, il terminait à 10% le soir. Il y avait juste du push sur mon compte mail...

Après plusieurs expériences pour améliorer ce terrible point faible, la réponse arrive rapidement.
En étant chez Free Mobile, le téléphone est en permanence en roaming. Il a été dit que la 3G & roaming étaient un aspirateur de batterie. Sur le Nokia Lumia 800, c'est effectivement le cas.

Maintenant la solution pour moi a été de désactiver la 3G (Paramètres - réseau mobile - Vitesse de connexion maximale : E).
Je suis passé de 12h d'autonomie à 4 jours (toujours pour une utilisation très faible & mode avion la nuit).
J'active donc le Wifi quand j'en ai besoin (pour ce point, je me demande même si le wifi ne peut pas rester activé en permanence car quand le téléphone est verrouillé, il se coupe tout seul) et la 3G au besoin...