Back button without title

Before pushing a view controller:

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@ »" style:UIBarButtonItemStylePlain target:nil action:nil];

Symbolicate iOS crash

These are following steps:

Step 0: Find the archived app
Go to XCode > Organizer > Right click on the app and then « Reveal in Finder »

Step 1: Create a folder in desktop, I give name it to « CrashReport » and put three files (« MYApp.app », « MyApp.app.dSYM », « MYApp_2013-07-18.crash ») in it.

Step 2: Open Finder and go to Applications, where you will find the Xcode application, right click on this and Click « Show Package Contents » , after this follow this simple path

« Contents->Developer->Platforms->iPhoneOS.platform->Developer->Library->PrivateFrameworks->DTDeviceKit.framework->Versions->A->Resources »

OR

« Contents->Developer->Platforms->iPhoneOS.platform->Developer->Library->PrivateFrameworks->DTDeviceKitBase.framework->Versions->A->Resources »

OR

For Xcode 6 and above the path is Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources

Where you find « symbolicatecrash » file , copy this and paste it to « CrashReport » folder.

Step 3: launch the terminal, run these 3 Command

cd /Users/mac38/Desktop/CrashLog and press Enter button

export DEVELOPER_DIR= »/Applications/XCode.app/Contents/Developer » and press Enter

./symbolicatecrash -A -v MYApp_2013-07-18.crash MyApp.app.dSYM and press Enter

Now its Done… :)

The import android.support cannot be resolved

C’est sûrement un conflit d’une librairie importée dans différents projets mais qui diffère par son numéro de version. Dans ce cas on peut soit faire un copier/coller pour remplacer tous les jar par le même ou alors faire plusieurs fois un Android Tools/Add support library en faisant clic droit sur le projet.

http://stackoverflow.com/a/18300071

Please follow these Steps:

Go to your Project’s Properties
Navigate to the Java Build Path
Then go to the Libraries tab. There click the Add External JARs Button on the Right pane.
Select the android-support-v4.jar file, usually the path for the Jar file is :
YOUR_DRIVE\android-sdks\extras\android\support\v4\android-support-v4.jar
After adding andorid-support-v4.jar Library, navigate to the Order and Export tab and put check mark on the android-support-v4 Library file.
After doing the above, Clean the Project and Build it.
Problem Solved.

Eclipse: Error “.. overlaps the location of another project..” when trying to create new project

http://stackoverflow.com/questions/11733089/eclipse-error-overlaps-the-location-of-another-project-when-trying-to-cr/15054785#15054785

Il faut importer un Projet général puis ajouter le SDK Android à celui-ci:
Right-Click on the project, Properties->Android->Project Build Target Choose the appropriate build target (in doubt, use 4.0.3 in the project is newish, and use 2.2 if the project is oldish)

Ad Hoc iOS8

Créer un certificat de distribution
Créer un provisioning profile Ad Hoc
Incrémenter le numéro de build de l’app
Utiliser Archive et Organizer pour soumettre l’app
Submit => ça l’envoie direct dans iTunes section Tests

Ajouter l’adresse email d’un testeur interne, il ne faut pas que ce soit déjà rattaché à un compte iTunes

Ajouter cet user au testeurs de l’appli
Activer TestFlight sur la build
Dire à l’user d’installer TestFlight
L’user reçoit un lien par email, en cliquant sur l’invitation ça ouvre l’app TestFlight avec un accès à notre app
Note: cet email peut être transmis à n’importe qui, une fois que l’on clique dessus depuis un iDevice, TestFlight proposera l’application en test :)

FAQ
Si le lien reçu par email ouvre l’AppStore et non TestFlight => copier le lien du mail et l’envoyer par SMS, là ça fonctionnera…

Exporter un certificat de push

Comment générer un bon certificat pour envoyer les push? (le fameux .pem)

Mon problème:
J’exportais le certificat qui m’avais permis de signer l’application.
Celui que l’on génére dans le member center, section « certificates ».
Mais ce n’est pas celui-ci dont a besoin…

Solution:
Aller dans le member center, section App IDs, sélectionner l’application, Editer puis renseigner un nouveau certificat dans la section « push notification ».

Ensuite il faut exporter la clé privée:
Launch KeyChains
Select the newly created certificate associated to your appId.
Click on File / Export items.
Do not enter any password.
Open a command line and go to the directory where you exported the certificate.
Type the following command to generate the .pem file:

openssl pkcs12 -nodes -clcerts -out [name].pem -in [previously exported file].p12
Again, type no password when asked.

Use the .pem to send notifications

Webservice simple

header('Content-Type: application/json; charset=utf-8');    // Important pour l'encodage des caractères

extract($_GET); // Instancie une variable pour chaque paramètre

if (isset($id_category))
{
    // on récupère les entités depuis la bdd
    $products = getProductsByCategory($id_category);

    //var_dump($products);

    $result = array('id_category' => $id_category, 'products' => $products, 'error' => null);

    $json = json_encode($result);
    echo $json;
}else{
    echo '{"error":"Il manque des paramètres"}';
}

function getProductsByCategory($id_category)
{
    $db     = getDatabaseConnection();

    $sql    = " SELECT *
                FROM product
                WHERE id_category = :id_category"
; //
    $stmt = $db->prepare($sql);
   
    $stmt   ->execute(array(':id_category' => $id_category));
    $stmt   ->execute();
    $stmt   = $stmt->fetchAll(PDO::FETCH_ASSOC); // FETCH_ASSOC = Pour récupérer le résultat sous forme clé/valeur

    $db     = null;
    return $stmt;
}

function getDatabaseConnection()
{
    try {
        $connection = new PDO("mysql:host=xxx;dbname=xxx;charset=utf8", "user", "mdp", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
        return $connection;
    } catch (PDOException $e) {
        echo "Connexion échouée : " . $e->getMessage();  
        writeLog("Connexion BDD", "Connexion échouée : " . $e->getMessage());
        return null;
    }
}

function closeDatabaseConnection($connection)
{
    $connection = null;
}

Note: la bdd utilise Interclassement = utf8_general_ci

PHP Cache via APC

APC stands for « Alternative Php Cache ». It is an OPCode cache for PHP to provide a free, open, and robust framework for caching and optimizing PHP intermediate code. For more information take a look at this god article : http://julien-pauli.developpez.com/tutoriels/php/apc/

1) Install APC

aptitude install php-apc

2) Config php.ini

configure php.ini by editing « /etc/php5/conf.d/apc.ini » file and adding :

apc.enabled=1
apc.shm_segments=1
apc.shm_size=128

3) Restart apache

/etc/init.d/apache2 restart

4) Check it is now available

if(extension_loaded('apc') && ini_get('apc.enabled'))
{
echo "APC enabled!";
}else{
echo "APC disabled";
}

Bonus

Si on utilise PhpFastCache, on peut vérifier que la config est bonne:

include_once "php_fast_cache.php";
$info = phpFastCache::systemInfo();
var_dump($info);

Renommer un projet sous Xcode 5

1/ Modifier le nom du projet dans Xcode

Dans le treeview, sélectionner le projet et modifier son nom dans le panel de droite « Identify and Type ». Accepter le snapshot.

2/ Dans Finder, modifier le nom du dossier.

Maintenant Xcode ne trouve plus les fichiers. Pour reconstruire les liens, il faut modifier un fichier caché.
Dans Finder, clic droit sur le .xcodeproj et sélectionner « Afficher le contenu du paquet ». Ouvrir le .pbxproj avec un éditeur de texte. Rechercher/Remplacer toutes les occurences du nom original avec le nouveau.

3/ Changer le Scheme.

Toujours dans le contenu du paquet, cherche le fichier AncienNom.xcscheme et le renommer. Dans Xcode, cliquer sur le scheme courant pour faire apparaitre un menu contextuel et cliquer sur « Manage schemes ». Renommer le nom du scheme avec le nouveau nom.

4/ Clean and Build