wampserveur 403 forbidden

icone wamp

Vous venez d’installer Wampserver sur votre ordi tout neuf.
Vous le lancez tranquillement, l’icone est verte.Mais en arrivant sur http://localhost il vous fait une jolie erreur 403 Forbidden access.
C’est parce que quelqu’un s’est empalé dans la config du fichier httpd.conf.

Mais n'ayez crainte, c'est juste que vous n'avez pas autorisé tout le monde a accéder au bouzin.

allez dans le fichier httpd.conf: (avec un click droit sur l’icone wamp, menu Apache), puis trouvez ces lignes:


    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride all

    #
    # Controls who can get stuff from this server.
    #

#   onlineoffline tag - don't remove
    
    Deny from all
    Allow from all
    Order Deny,Allow

les lignes:

    Allow from all
    Order Deny,Allow

sont sans doute différente,
et c’est ça qui facilite le transit intestinal.
sauvegardez le fichier.
relancez wamp, Enjoyez!

ceci m’a aidé:
http://tutos.tangui.eu.org/9-erreur-403-dapache-client-denied-server-configuration

Tethering Android 2

tethering

Le tethering (point d’accès mobile) c’est merveilleux, ça permet de faire profiter de votre connexion internet à d’autres périphériques, comme si c’était un modèle.
Par chance depuis Android 2.3 tous les téléphones ayant cet OS en sont équipés.

Possédant un motorola defy + avec Android 2.3.6 , je me faisais une joie de pouvoir avoir le net en grand sur ma tablette Iconia tab a700, pendant mes déplacements grâce à mon abbonnement 3G illimité chez Free pour presque 20€ par mois.
Mais j’ai dû me heurter à un souci de compatibilité qui faisait que pour une raison inconnue, je n’avais pas accès a internet sur ma tablette, quand bien même la connexion entre les deux périphériques sans fil se faisait. Confirmée par l’icone verte en haut de mon tel et sur la tablette.

Après moults essais de trouver des gens compétents sur le forum de korben.info, et de free mobile j’ai chatté avec la hotline de Acer. Il fallait configurer la configuration APN de mon téléphone (rien à voir avec Appareil Photo Numérique, il s’agit d‘Access Point Name) en lui rajoutant un bout de texte.

En effet, la config APN avait été gérée par l’application de Free mobile config comme ils le recommandent quand on se fournit chez eux. Allez donc voir dans le téléphone:

Paramètres , réseaux mobiles, noms point d’accès, free (si vous avez free), type d’APN

,dun

(si si, « ,dun » avec la virgule avant) et en sauvegardant les modifications.
ce qui fait donc en tout

default,supl,mms,dun

Redémarrer le tel.

Activer le moint d’accès mobile de nouveau,

connecter la tablette au téléphone, et cette fois ci, ça fonctionne.

Magie!
Quand on n’a pas un abonnement illimité en données, ça utilise votre crédit de données, contrairement à une connexion en wifi à un routeur. ttention les enfants!

sur ce, je vous souhaite un bon tethering 🙂

Un modem attaché (en anglais « tethered modem ») est un appareil qui donne à un autre appareil l’accès à Internet. Généralement portatif (mobile), ce dispositif agit comme un modem et connecte un ordinateur à l’internet au moyen d’une communication par câble (par exemple USB) ou sans fil (comme bluetooth ou wifi). Le plus souvent, le modem attaché est un téléphone mobile partageant un accès Internet avec un ordinateur portable. Le partage de la connexion Internet avec un modem attaché est communément appelée « tethering » en anglais1.

tutoriel de plugin jQuery

Alors comme ça petit padawan tu aimerais créer un plugin javascript pour cette merveilleuse librairie de fonctions? Voici un tutoriel fort inspiré de la documentation officielle sur les plugins jQuery en Anglais. Prêts à profiter du meilleur de jQuery et gagner un maximum de temps en développement pour davantage de sociabilité? Suivez le guide.

Pour commencer son plugin

Pour éviter que notre super plugin n’entre en conflit avec d’autres plugins utilisant le signe dollar il vaut mieux passer jQuery en fonction auto invoquée (Immediately-Invoked Function Expression , ou IIFE).

(function( $ ) { $.fn.monSuperPlugin = function() {
// les instructions trop bien ici 
};
})( jQuery );

Le contexte

Avec cette base nous pouvons commencer à écrire notre contenu de plugin. Mais avant cela, parlons un peu du mot clé this qui à l’intérieur de notre fonction se réfère à l’objet jQuery sur lequel le plugin est invoqué. this se réfère au DOM (document object model) natif. Il n’est donc pas besoin d’entourer this par les parenthèses du sélécteur jQuery dans ce contexte.

function( $ ) { $.fn.monSuperPlugin = function() {
// les instructions trop bien ici
this.fadeIn('normal', function(){
// le mot clé this est un élément du DOM
}); 
}; })( jQuery );

pour actionner notre plugin on pourra donc l’appeler ainsi sur un #element de votre choix ou plusieurs grâce à la puissance des sélecteurs CSS.

$('#element').myPlugin();

Les bases

Maintenant que nous comprennons le contexte des plugins jQuery, écrivons un code qui fait réellement quelque chose.

Par exemple, un simple plugin qui évalue les hauteurs pour retourner la plus grande dans le jeu d’éléments sélectionnés.

(function( $ ){ $.fn.hauteurMax = function() {
var max = 0;
this.each(function() {
max = Math.max( max, $(this).height() );
});
return max; 
}; })( jQuery );

var tallest = $('div').
hauteurMax();

Ceci donne à la variable tallest la valeur de la div la plus haute de la page.

Maintenir la continuité

L’exemple précédent retourne un nombre entier, mais bien souvent le but d’un plugin est de modifier un jeu d’éléments et de les passer à la méthode suivante dans la chaîne de fonctions. C’est ce qui fait la beauté du design de jQuery et explique sa popularité. Donc, pour maintenir la continuité de la chaîne dans vos plugins, vous devez faire en sorte que les retours de plugins comprennent le mot clé this.

(function( $ ){ $.fn.verrouTailles = function( type ) {
return this.each(function() {
var $this = $(this);
if ( !type || type == 'width' ) {
$this.width( $this.width()
);
}
if ( !type || type == 'height' ) {
$this.height( $this.height() );

}); 
}; 
})( jQuery );

Ce plugin associe la largeur et la hauteur actuelle de chaque élément du jeu sélectionné. Il sera ajouté dans le HTML de la page un attribut width et height à chaque balise ainsi sélectionnée. Nous pouvons donc y mettre une autre méthode à la suite, comme css(). Et pour le mettre en place dans une chaîne:

$('div').verrouTailles('width').css('color', 'red');

Parce que le mot clé this est retourné dans la lunette de script du plugin, la continuité est maintenue. Aussi, nous pouvons mettre des options et des choix par défaut dans nos plugins.

Options et défauts

Les configurations par défaut peuvent être étendues avec $.extend http://docs.jquery.com/Utilities/jQuery.extend quand le plugin est invoqué. jQuery.extend( cible [, objet1] [, objetN]) extend sert à fusionner le contenu de plusieurs objets dans le premier objet. Au lieu d’invoquer un plugin avec un grand nombre d’arguments, vous pouvez passer un seul objet des options que vous voulez modifier en argument.

(function( $ ){ $.fn.tooltip = function( options ) {
// Créer quelques options par defaut, les étendre comme nous voulons.
var settings = $.extend( { 'location' : 'top', 'background-color' : 'blue' }, options);
return this.each(function() { // code du plugin Tooltip ici });
};
})( jQuery );

ce qui donne en pratique avec une option définie dans un objet:

$('div').tooltip({ 'location' : 'left' });

Dans cet exemple, après avoir appelé le plugin tooltip avec les options choisies, la localisation par défaut topdevient réécrite en left, alors que la configuration de couleur d’arrière plan reste bleue car elle n’a pas été spécifiée. la config settings de l’objet devient donc comme ceci:

{
'location' : 'left',
'background-color' : 'blue'
}

C’est une bonne pratique et un très bon moyen de rendre un plugin configurable sans avoir besoin de donner toutes les options à chaque fois.

Espace de noms

Choisir un espace de nommage est un moyen idéal pour éviter qu’un autre plugin chargé sur la même page ne vienne remplacer le notre ou le modifier contre notre gré. En tant que développeur ça nous rend la vie plus facile pour mieux trier nos méthodes, évènements et données.

Il vaudrait donc mieux ne pas mettre un seul espace de nom par plugin dans l’objet jQuery.fn mais plutôt stocker nos plugins dans un objet qui agira comme pour la configuration par défaut que nous venons de voir. Mais cette fois nous donnons par défaut non pas de simples variables mais des noms associés à des méthodes.

(function( $ ){
var methods = { init : function( options ) {
// THIS
},
show : function( ) {
// IS
},
hide : function( ) {
// GOOD
},
update : function( content ) {
// !!!
} };
$.fn.tooltip = function( method ) {
// logique d'appel de méthode
if ( methods[method] ) {
return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
}
else { $.error( 'La Méthode ' + method + ' n'existe pas dans jQuery.tooltip' ); } };
})( jQuery );
// appelle la méthode initiatrice
$('div').tooltip();
// appelle la méthode initiatrice avec une option
$('div').tooltip({ foo : 'bar' });
// appelle la méthode hide
$('div').tooltip('hide');
// appelle la méthode update avec une option
$('div').tooltip('update', 'This is the new tooltip content!');

c’est une façon standard d’encapsuler ses méthodes de plugins dans la communauté jQuery, c’est aussi le cas pour jQueryUI. http://jqueryui.com/

Évènements

la méthode bind() permet de donner un espace de nom à des évènements liés. Si votre plugin lie un évènement, c’est une bonne pratique de lui donner un espace de nom. ainsi, si vous avez besoin de le délier avec unbind() sans interférer avec les autres évènements qui pourraient avoir été liés avec le même type d’évènement. Vous pouvez ajouter le nom de l’espace nom_de_namespace au type d’évènement que vous liez, comme ceci.

(function( $ ){
var methods = {
init : function( options ) {
return this.each(function(){
$(window).bind('resize.tooltip', methods.reposition); }); },
destroy : function( ) {
return this.each(function(){ $(window).unbind('.tooltip');
})%% },
reposition : function( ) {
// ...
},
show : function( ) {
// ...
}, hide : function( ) {
// ...
}, update : function( content ) {
// ...
} };
$.fn.tooltip = function( method ) {
if ( methods[method] ) {
return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
}
else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
}
else {
$.error( 'Method ' + method + ' does not exist on jQuery.tooltip' ); } };
})( jQuery );

$('#fun').tooltip();
// et un peu plus tard...
$('#fun').tooltip('destroy');

Dans cet exemple, quand tooltip est initialisé avec la méthode init la méthode reposition est liée à l’évènement de redimension de la fenêtre sous l’espace de nom tooltip. Plus loin, si le développeur a besoin de détruire tooltip, nous pouvons délier les évènements liés à ce plugin en lui passant le nom de l’espace, ici tooltip, à la méthode unbind. Cela nous permet de délier les évènements d’un plugin en toute sécurité sans délier d’autres évènements liés en dehors du plugin.

Data

Quand nous avons besoin de maintenir un état ou de vérifier que notre plugin a été initialisé sur un certain élément, la méthode jQuery data est un très bon moyen de garder une trace des variables sur les éléments. Cependant, au lieu de garder une trace de quelques appels de données séparés avec des noms différents, il vaut mieux utiliser un objet pour héberger toutes les variables et accéder à cet objet par un seul espace de nom.

(function( $ ){ var methods = { init : function( options ) {
return this.each(function(){
var $this = $(this),
data = $this.data('tooltip'),
tooltip = $('

',
{ text : $this.attr('title') }); // si le plugin n'a pas encore été initialisé
if ( ! data ) {
/* faire des trucs ici */
$(this).data('tooltip', { target : $this, tooltip : tooltip });
}
}); },
destroy : function( ) { return this.each(function(){ var $this = $(this), data = $this.data('tooltip');
// Namespacing FTW
$(window).unbind('.tooltip');
data.tooltip.remove();
$this.removeData('tooltip');
}) },
reposition : function( ) {
// ...
},
show : function( ) {
// ...
},
hide : function( ) {
// ...
},
update : function( content ) {
// ...
} };
$.fn.tooltip = function( method ) {
if ( methods[method] ) {
return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
}
else {
$.error( 'Method ' + method + ' does not exist on jQuery.tooltip' );
} };
})( jQuery );

Résumé et meilleures pratiques

Écrire des plugins jQuery vous permet à tirer le meilleur profit de la bibliothèque et abstraire vos plus intelligentes et utiles fonctions à travers un code réutilisable pouvant vous faire faire un grand gain de temps et rendre votre développement encore plus efficace. Voici un bref résumé de cet article et ce que vous devez garder à l’esprit quand vous développerez votre prochain plugin jQuery:

  • Entourez toujours votre plugin par l’auto invocation: (function( $ ){ /* plugin goes here */ })( jQuery );
  • Ne mettez pas inutilement en sélecteur $() le mot clé this dans le cadre de votre plugin. this seul, suffit.
  • à moins de ne retourner qu’une valeur intrinsèque, faites en sorte que votre fonction de plugin retourne le mot clé this pour maintenir la continuité.
  • Plutôt que de requérir une longue suite d’arguments, mettez la configuration de votre plugin dans un objet javascript dont les valeur par défaut peuvent être étendues avec extend().
  • Ne surchargez pas l’objet jQuery.fn avec plus d’un espace de nom par plugin.
  • Rangez toujours vos méthodes, évèenments et données dans un seul espace de nom par plugin.

Comme le conseille Paul Irish un des auteurs de Boiler Plate, consulter la source commentée de jQuery pour comprendre comment elle fonctionne est un excellent moyen d’apprendre à manier le javascript en profondeur et développer ses propres solutions.

http://code.jquery.com/jquery.js

Mettez la en marque page 🙂 à vous de jouer maintenant!

processus com.motorola.service.main s’est arrêté

Le defy c’est trop génial, enfin un téléphone avec lequel vous pouvez surfer sur le net meme sous la douche ou dans la piscine pendant vos vacances, grâce à ses deux capuchons étanches sur la prise micro usb et jack 3mm ainsi que son blindage au normes IP67.
((http://www.cnetfrance.fr/i/edit/2010/pr/12/motorola-defy-etanche.jpg||un des rares smartphones étanches en vraie submersion ))
Mon motorola Defy + m’affichait régulièrement cette erreur depuis quelques temps
Cette erreur apparait aussi sur d’autres modèles de stupidphones.
> Désolé le processus com.motorola.service.main s’est arrêté de façon inopinée, veuillez réessayer

Pour venir à bout de cette erreur qui plope toutes les cinq minutes quand vous utilisez votre téléphone, il faut enlever les mises à jour de gmail.
C’est une chose faisable avec l’application [Android Assistant|https://play.google.com/store/apps/details?id=com.advancedprocessmanager&hl=fr].

!!!Syncronisation
Ce qui est fort pratique avec le play store c’est que vous pouvez installer, mettre à jour ou désinstaller les applications de votre téléphone à distance si vous avez un compte google.
Notez que certaines applis de base ne peuvent être désinstallées aussi facilement, il faut avoir rooté votre téléphone pour cela.

Le root n’est pas illégal, il vous fait perdre votre garantie constructeur.

!!!Des applis super bien
Silent time
Data On/off
Easy Uninstaller
Autorun Manager
Fid Me
Vianavigo si vous habitez la région parisienne.

!!!utiliser son téléphone comme modem.
Pratique si vous être quelqu’un de nomade équipé d’un ordi portable ou d’une tablette.

Déclaration de l’internet libre

Vous aussi, signez la déclaration de l’internet libre autour de ces 5 principes pour qu’on ne voie plus fleurir des lois liberticides.
Liberté d’expression.
Liberté d’accès.
Liberté d’ouverture.
Liberté d’innovation.
Liberté de privacité.
à faire passer à toutes les grosses boites et à vos proches qui pourront signer à titre individuel.

comme ils diraient chez la quadrature du net « data must flow » en référence à Dune.

Pour insérer l’image clickable avec le lien vers la pétition, copiez collez ce code dans une page html:

Si vous voulez l’insérer sur un message de forum phpbb c’est ce code suivant:

[url=http://www.techdirt.com/netdeclaration][img]http://cdn.techdirt.com/i/net-declaration.png[/img][/url]

Envoyer des mails depuis localhost

Je me suis longtemps demandé comment configurer mon serveur local pour pouvoir envoyer des emails. Voici enfin la solution:
ouvrir ces deux fichiers de config situés dans votre dossier wamp (en partant du principe que wampserver est installé sous C:\wamp )

C:\wamp\bin\php\php5.3.8\php.ini

et
C:\wamp\bin\apache\Apache2.2.21\bin\php.ini

Ensuite, cherchez une occurence de « smtp« 
j’ai pour fournisseur d’accès SFR, donc j’ai mis smtp.sfr.fr et utilisé le port 25

SMTP = smtp.sfr.fr
; http://php.net/smtp-port
smtp_port = 25

là où les deux fichiers le demandaient.
Un restart de tous les services de wamp plus tard, et ô magie je peux enfin utiliser la fonction mail() de php.
Enjoyez!