[PHP] Heure d’hiver en Europe

La fonction existante dans le langage PHP ne retourne pas forcément le bon résultat, alors, voici une classe qui vous permet, sans utiliser la fonction de PHP, de savoir si la date est basée sur l’heure d’hiver ou non

<?php
/**
*   dateime_timezone_daylight.php
*   Copyright (C) MazeSloup - mazesloup [at] gmail [dot] com
*   http://mazesloup.fr
*   http://blog.mazesloup.fr/index.php/post/2010/11/11/php-heure-dhiver-en-europe
*
*   This program is free software; you can redistribute it and/or modify
*   it under the terms of the GNU General Public License as published by
*   the Free Software Foundation; either version 2 of the License.
*
*   This program is distributed in the hope that it will be useful,
*   but WITHOUT ANY WARRANTY; without even the implied warranty of
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*   GNU General Public License for more details.
*
*   You should have received a copy of the GNU General Public License
*   along with this program; if not, write to the Free Software
*   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

/*
 * Permet de savoir si une date est en heure d'hiver ou non
 * Utilisation : ms_SummerTimeInEU::isInWinterTime(strtotime('2010/10/31 04:00'));
 * @return bolean True si nous somme en heure d'hiver, false si nous sommes en heure d'été
 */
class ms_SummerTimeInEU{

	static function getDayOfWinterTime($Year){
		return date('z',strtotime(sprintf("last sunday of october %n",$Year)));
	}

	static function getDayOfSummerTime($Year){
		return date('z',strtotime(sprintf("last sunday of march %n",$Year)));
	}	

	static function isInWinterTime($When){
		$NumberDay=date('z',$When);
		if(($NumberDay<self::getDayOfSummerTime(date('y',$When)))||($NumberDay>self::getDayOfWinterTime(date('y',$When)))){
			return true;
		}else{
			if((($NumberDay==self::getDayOfSummerTime(date('y',$When))&&(date('G',$When)<2)))||(($NumberDay==self::getDayOfWinterTime(date('y',$When))&&(date('G',$When)>3)))){
				return true;
			}else{
				return false;
			}
		}
	}
}
?>

[PHP] Envoyer un fichier avec cUrl

Si vous êtes amené à envoyer un fichier via cUrl en php, voici de quoi vous mettre sur la piste !

Le fichier permettant l’envoi :

curl_postfile.php

<?php
/**
*   curl_postfile.php
*   Copyright (C) MazeSloup - mazesloup [at] gmail [dot] com
*   http://mazesloup.fr
*   http://blog.mazesloup.fr/index.php/post/2010/10/27/php-envoyer-un-fichier-avec-curl
*
*   This program is free software; you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU General Public License for more details.
*
*    You should have received a copy of the GNU General Public License
*    along with this program; if not, write to the Free Software
*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

/**
 * Fonction qui envoie le fichier $My_File vers $CURL_POSTURL
 * @param $My_File Nom et chemin du fichier
 * @param $CURL_POSTURL Adresse de la page qui doit recevoir et gérer les opérations
 * @return $response Retourne les informations concernant le traitement de l'exécution
 */
function curl_upload_file($My_File, $CURL_POSTURL){
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_VERBOSE, 1);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)");
	curl_setopt($ch, CURLOPT_URL, $CURL_POSTURL);
	curl_setopt($ch, CURLOPT_POST, true);
	$post = array(
  	'My_File' => '@'.$My_File,
  	'Another_Field' => 'Yes!'
	);

	curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
	$response = curl_exec($ch);

	return $response;
}

/**
* Le fichier test.txt est un document se trouvant dans le même dossier que les fichiers .php
* L'Url est une Url locale dont le domaine est configuré sur le serveur local http://test/
*/
curl_upload_file('./test.txt','http://test/curl_postfile_receive.php');
?>

Le fichier permettant la réception
curl_postfile_receive.php

<?php
/**
*   curl_postfile_receive.php
*   Copyright (C) MazeSloup - mazesloup [at] gmail [dot] com
*   http://mazesloup.fr
*   http://blog.mazesloup.fr/index.php/post/2010/10/27/php-envoyer-un-fichier-avec-curl
*
*   This program is free software; you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU General Public License for more details.
*
*    You should have received a copy of the GNU General Public License
*    along with this program; if not, write to the Free Software
*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

/*
 * Chemin où sera enregistré le fichier
 */
$FILE_FOLDER='/tmp';

/*
 * Vérification de l'existence de $_FILES qui contient les informations sur le fichier envoyé
 */
if(isset($_FILES)){
	/*
	 * Vérification que le fichier provient bien du serveur
	 */
	if(is_uploaded_file($_FILES['My_File']['tmp_name'])){
		/*
		 * Déplacement du fichier au bon endroit avec son nom d'origine
		 */
		move_uploaded_file($_FILES['My_File']['tmp_name'],$FILE_FOLDER.'/'.$_FILES['My_File']['name']);
	}
}
?>

Cela ne représente qu’une partie de la gestion de cUrl, mais une bonne base si vous avez besoin d’envoyer des fichiers de cette manière.

App Inventor for Android – Prise en main rapide

J’ai reçu mon autorisation de tester App Inventor for Android, je me suis donc lancé dans une aventure rapide afin de voir ce que l’on peut faire avec cette application.

J’ai tenté de faire mon “Hello World !” préféré, il s’agit en fait d’un jeu dont l’objectif est de trouver un nombre entre 1 et 1000 en un minimum de tentative.

Cette application enregistrera votre highscore, vous permettra de recommencer une nouvelle partie… Bref, un petit jeu tout simple.

Pour ce qui est d’App Inventor for Android, nous avons l’application Web qui permet la création de l’interface d’un simple “drag and drop”. Elle fonctionne plutôt pas mal, assez rapide et mon pc ne tourne pas à 100% du processeur ! Cool. La prise en main est très rapide et intuitive.

App_Inventor

Ensuite nous avons l’application qui permet de gérer les bricks, il suffit simplement de les emboiter pour gérer les actions de l’application. Elle est un peu plus lourde que l’application précédente, mais c’est du pur java… Sinon la prise en main est très simple également et l’empilement des bricks se fait d’une manière très intuitive. L’application peut-être connectée à un téléphone, dans ce cas, la compilation se fait à la volée et toutes les modifications apportées aux briques et à l’interface graphique sont visibles en temps réel sur le téléphone ! Pas mal !

App_Inventor_Blocks_Editor

Après une petite heure de prise en main, on obtient donc cette petite application qui sera directement compilée via l’application Web, on pourra obtenir un QRCode, envoyer l’application directement sur le téléphone connecté ou télécharger l’apk.

jeu_du_nombre

Pour ce qui est des remarques :

– Je n’ai pas trouvé la possibilité de changer les informations relatives à l’application, comme l’icône par exemple

– On ne peut gérer une application qu’avec un seul Screen

– Il est très frustrant de se retrouver avec des bricks, mais c’est tellement rapide comme méthode de développement

Enfin bref, c’est un bon début, mais je pense qu’il y a encore beaucoup de travail afin d’obtenir un outil de développement complet.

Si vous souhaitez tester le petit jeu, c’est ici

Windev Mobile…

Je viens de recevoir une Newsletter de cette société qui pense que développer des logiciels n’est qu’une affaire d’ordinateur et de “paltemptisme”*…

Elle se vante de permettre de développer 10 fois plus vite des applications pour Android…

10 fois plus vite, certainement, mais la qualité !

Et dire que cela représente leur application exemple pour leurs outils de développement sur Android…

Ben voyons !

(Et dire qu’il y en a qui utilise encore Windev 5.5b… Un produit d’avenir.)

Windev Mobile Android FAIL !

* Paltemptisme : NC Exprimant l’incapacité de faire évoluer une application métier car l’outil de développement (windev) est trop limité et forge des personnes à penser que le développement se résume à “Fichier -> Nouvelle Application -> Compiler -> Diffuser”

MLien.net s’offre son extension Chrome !

Et voilà, c’est officiel, MLien.net s’offre son extension Google Chrome, vous pouvez la trouver ici

C’est la première version, les prochaines seront plus complètes et permettront beaucoup plus de chose ; Mais puisqu’il faut bien commencer un jour…

Allez, faites-vous plaisir !

Petite piqûre de rappel, http://mlien.net vous permet de créer des liens courts afin de les partager facilement avec vos proches (ils disent url shorterer en anglais) !