Pour modifier le timeout des sessions d’une webapp sous tomcat, il suffit d’ajouter les lignes suivantes dans le fichier web.xml :
<session-config>
<session-timeout>30</session-timeout>
</session-config>
Pour modifier le timeout des sessions d’une webapp sous tomcat, il suffit d’ajouter les lignes suivantes dans le fichier web.xml :
<session-config>
<session-timeout>30</session-timeout>
</session-config>
Après un petit bla bla incompréhéensible pour un néophite franchouillard mais pourtant très clair concernant le choix du registar différent pour le renouvellement, on n’hésites pas à vous proposer un renouvellement à un prix défiant toute concurence: 2 fois plus cher que le prix du marché, rien que ça !
Bref, ca a l’air bien officiel ce Domain Registry of América, même si c’est londonien, mais il n’y a rien d’autre à dire que de dénoncer cette politique commerciale qui joue sur la nouveauté de l’internet et l’usage de la langue anglaise pour vous faire payer au double du prix un service pour lequel vous avez dejà un marchant.
Par ailleurs, ce que ne dit pas cette lettre, c’est que tous les services d’hébergements que vous aviez pour votre site seront perdu, bref de quoi se retrouver avec un coquille vide et 6 mois de démarche pour retrouver son site opérationnel.
Au passage, le prix en ligne sont trois fois plus cher que l’offre normale, alors on a vraiment de la chance de cette belle promo LOL ! A mettre à la poubelle illico-presto !
Un thème d’actualité avec un équipement très important en France et les risque que chacun encours quant à la sécuritée de ses données personnelles. Bref, c’était à mon avis un reportage qui a du sens et une bonne idée d’in – formation du téléspectateur.
Malheureusement, cet élan de technophilie s’est finie, comme toujours, droit dans le mur entre journaliste incompétents et copain qui s’y connais en informatique, interviewé pour donner le mauvais conseil. Bref la honte !
Ce que l’on en retient : tous les réseaux sont pas défaut ouvert et il faut vous protéger avec un clef magique : la clef WEP. Tous vos disques sur sont accessible par tout le monde sinon !
Ce que n’ont pas compris les journalistes :
Alors s’il y a deux conseils à donner aux Internautes : choisir tout d’abord du WPA et uniquement du WPA pour encrypter les communications, solution non 100% fiable mais actuellement très correcte. Et ensuite qui n’a rien à voir, mais serait utile : ne pas tous prendre le canal 1 donné par défaut lors de l’installation, ca ne changera pas grand chose à la sécurité, mais coté performance, c’est la cata.
Quant aux entreprises, la règle est simple : considérer un accès Wifi comme un accès depuis Internet ! Utiliser pour l’accès des protocole type IPSEC et pas de sécurité de niveaux 2 (WPA ou WEP) dont les clefs partagées ne changement pas assez souvent et doivent être largement diffusées. Ces solutions ne doivent être utilisées qu’en complément d’un système sécurisé à identification individuelle.
Enfin c’est mon avis !
Dernier point : ne regardez plus les emissions de “vulgarisation” de l’informatique à la TV : c’est bidon !
Mise à jour … Effet sans lien ou peut-être … je ne sais pas, alors que de chez moi je captais pas loin de 10 réseaux Wifi ; quelque jours après cette diffusion et une série de mise à jour de live-box plus tard, 90% ont disparu. Réduction de puissance d’émission ?!? En tout cas une petite prise de conscience semble-t-il !
Lorsque l’on modifie le CSS d’un site il est important de rafraichir la page sans quoi celle-ci est affichée avec le CSS ancienne version … résultats déplorables garantis !
Pour contourner celà, il est tout à fait possible de forcer un rafraichissement plus régulier de certains éléments comme les feuilles de style. Pour se faire, il faut ajouter à la config d’Apache quelques lignes que voici :
ExpiresActive On
ExpiresDefault “access plus 1 hours”
ExpiresByType text/css “access plus 1 hours”
ExpiresByType text/html “access plus 1 hours”
ExpiresByType image/gif “access plus 1 days”
ExpiresByType image/jpeg “access plus 1 days”
ExpiresByType image/png “access plus 1 days”
Bien sûr il y a différentes façon de faire, et le paramétrage est à votre guise…
Attention toute fois, si l’on suit le modèle ci-dessus, les pages dynamiques (jsp, php) seront cachées elles-aussi ce qui peut vous poser des problèmes de raffrachissement ! Elles sont en effet identifiées sous le type text/html.
Une autre configuration peut être : ExpiresActive On
ExpiresDefault “access plus 1 hours”
ExpiresByType text/css “access plus 1 hours”
ExpiresByType text/html “now”
ExpiresByType image/gif “access plus 1 days”
ExpiresByType image/jpeg “access plus 1 days”
ExpiresByType image/png “access plus 1 days”
Une des grosse fonctionnalité d’Ajax est d’offrir une interface dynamique de type client lourd dans un navigateur, nous avons déjà parlé de la communication en tâche de fond qui est le coeur d’Ajax, mais ce qui se passe au niveau du front end est tout aussi important. De nombreux site utilise cette technique de drag & drop pour permettre aux utilisateur de composer eux-même leur interface à leur gout. La première implémentation que nous avons pu en voir il y a quelque années était ici ; depuis les choses ont évoluées …
L’occasion de ce petit billet est un article décrivant en détail le fonctionnement de cette technique en liaison avec un base de donnée. Ce tutoriel pour php est plutôt bien fait, reprenant point par point la liaison à la base de donnée, l’utilisation des css et enfin les fonctions javascript de manipulation et drag & drop. L’article sur les listes triées dynamiques avec ajax.
Pour ceux qui en outre souhaiterai voir une implémentation plus complète, vous trouverez un bon exemple sur Auverblog.info
Note : depuis mon patch à été ajouté directement dans les drivers natif …
Le drivers rt2570, correspondant aux chip USB ralink souffre d’un petit bug, à moins qu’il ne s’agisse d’une fonctionnalité, je ne sais pas ! il n’est pas possible de changer leur adresse MAC.
Après analyse du problème, il s’avère que lorsque l’on remonte le driver par un ifconfig rausb0 up celui-ci effectue une réinitialisation complète du périphérique incluant donc le rechargement de l’adresse MAC d’origine et venant donc écraser celle configurée précédemment par le ifconfig rausb0 hw ether ….
La solution a ce problème est assez simple, lors de l’init que l’on trouve dans rtusb_main.c il suffit de tester si l’adresse MAC du net_dev vaut 00, auquel cas on charge celle de la carte (premier appel) sinon, on conserve la valeur du net_dev qui correspond à celle forcée.
Ce qui se traduit par :
Dans la fonction usb_rtusb_open, ligne 1231 environ
RTUSBCmd_kill =0;
CreateThreads(net_dev);
memcpy(pAdapter->net->dev_addr, pAdapter->CurrentAddress, pAdapter->net->addr_len);
// Clear Reset Flag before starting receiving/transmitting
RTMP_CLEAR_FLAG(pAdapter, fRTMP_ADAPTER_RESET_IN_PROGRESS);Va devenir:
RTUSBCmd_kill =0;
CreateThreads(net_dev);
// at every open handler, copy mac address.
// PATCH >>>>>>>>>>>>>>>>>>
if ( net_dev->dev_addr[0] == 0 && net_dev->dev_addr[1] == 0 && net_dev->dev_addr[2] == 0 &&
net_dev->dev_addr[3] == 0 && net_dev->dev_addr[4] == 0 && net_dev->dev_addr[5] == 0 ) {
// First time initialization
memcpy(pAdapter->net->dev_addr, pAdapter->CurrentAddress, pAdapter->net->addr_len);
} else {
// Next time “la vérité est ailleurs!”
memcpy(pAdapter->CurrentAddress, pAdapter->net->dev_addr, pAdapter->net->addr_len);
}
// <<<<<<<<<<<<<<<<< PATCH// Clear Reset Flag before starting receiving/transmitting
RTMP_CLEAR_FLAG(pAdapter, fRTMP_ADAPTER_RESET_IN_PROGRESS);
Après on recompile, et la solution a l’air de fonctionner …. ??? et bien en fait non elle ne fonctionne pas !! oups.. j’aurais dû un peu plus tester … j’avais un petit oubli … voila qui est corrigé ! merci à larbig d’avoir complété le boulo.
Il semble en effet que l’adresse MAC doit être la même entre le pAdapter et le net_dev sans quoi les trames ne sont pas emises dans l’air … ennuyeux. voici donc le patch complet et cette fois testé !! sisi !! Les modifications sont cette fois dans rtusb_init.c où il faut modifier la fonction NICReadEEPROMParameters de la façon suivante :
VOID NICReadEEPROMParameters(
IN PRT2570ADAPTER pAdapter)
{
USHORT i;
int value;
UCHAR TmpPhy;
EEPROM_TX_PWR_STRUC Power;
EEPROM_ANTENNA_STRUC Antenna;//blue
// EEPROM_VERSION_STRUC Version;
DBGPRINT(RT_DEBUG_TRACE,"--> NICReadEEPROMParameters ");
//Read MAC address.
RTUSBReadEEPROM(pAdapter, EEPROM_MAC_ADDRESS_BASE_OFFSET, pAdapter->PermanentAddress, ETH_LENGTH_OF_ADDRESS);
DBGPRINT_RAW(RT_DEBUG_TRACE,"MAC address ReadEEPROM : ");
for (i = 0; i < ETH_LENGTH_OF_ADDRESS; i++)
DBGPRINT_RAW(RT_DEBUG_TRACE,"%02x ", pAdapter->PermanentAddress[i]);
DBGPRINT_RAW(RT_DEBUG_TRACE," ");
if (pAdapter->PortCfg.bLocalAdminMAC != TRUE)
{
pAdapter->CurrentAddress[0] = pAdapter->PermanentAddress[0];
pAdapter->CurrentAddress[1] = pAdapter->PermanentAddress[1];
pAdapter->CurrentAddress[2] = pAdapter->PermanentAddress[2];
pAdapter->CurrentAddress[3] = pAdapter->PermanentAddress[3];
pAdapter->CurrentAddress[4] = pAdapter->PermanentAddress[4];
pAdapter->CurrentAddress[5] = pAdapter->PermanentAddress[5];
}
devient
VOID NICReadEEPROMParameters(
IN PRT2570ADAPTER pAdapter, struct net_device *net_dev)
{
USHORT i;
int value;
UCHAR TmpPhy;
EEPROM_TX_PWR_STRUC Power;
EEPROM_ANTENNA_STRUC Antenna;//blue
// EEPROM_VERSION_STRUC Version;
DBGPRINT(RT_DEBUG_TRACE,"--> NICReadEEPROMParameters ");
//Read MAC address.
RTUSBReadEEPROM(pAdapter, EEPROM_MAC_ADDRESS_BASE_OFFSET, pAdapter->PermanentAddress, ETH_LENGTH_OF_ADDRESS);
DBGPRINT_RAW(RT_DEBUG_TRACE,"MAC address ReadEEPROM :");
for (i = 0; i < ETH_LENGTH_OF_ADDRESS; i++)
DBGPRINT_RAW(RT_DEBUG_TRACE,"%02x ", pAdapter->PermanentAddress[i]);
DBGPRINT_RAW(RT_DEBUG_TRACE,"");
if (pAdapter->PortCfg.bLocalAdminMAC != TRUE)
{
if ( net_dev->dev_addr[0] == 0 && net_dev->dev_addr[1] == 0 && net_dev->dev_addr[2] == 0 &&
net_dev->dev_addr[3] == 0 && net_dev->dev_addr[4] == 0 && net_dev->dev_addr[5] == 0 ) {
// Startup time ... read the original MAC
pAdapter->CurrentAddress[0] = pAdapter->PermanentAddress[0];
pAdapter->CurrentAddress[1] = pAdapter->PermanentAddress[1];
pAdapter->CurrentAddress[2] = pAdapter->PermanentAddress[2];
pAdapter->CurrentAddress[3] = pAdapter->PermanentAddress[3];
pAdapter->CurrentAddress[4] = pAdapter->PermanentAddress[4];
pAdapter->CurrentAddress[5] = pAdapter->PermanentAddress[5];
} else {
// Next time, get the MAC from net_dev->dev_addr
printk(KERN_INFO "net_dev supplies MAC, activating this one :%02x:%02x:%02x:%02x:%02x:%02x.",
net_dev->dev_addr[0], net_dev->dev_addr[1], net_dev->dev_addr[2],
net_dev->dev_addr[3], net_dev->dev_addr[4], net_dev->dev_addr[5]);
memcpy(pAdapter->CurrentAddress, pAdapter->net->dev_addr, pAdapter->net->addr_len);
}
}
La mécanique est axactement la même que celle faite précédemment : lors du premier appel on fait comme si de rien n’etait et on recupère l’adresse en EEPROM, pour les appels suivant on choisit la MAC du net_dev à la place.
Pour que ca fonctionne il reste deux petites modifications, modifier le header de cette fonction : dans rt2570sw.h
VOID NICReadEEPROMParameters(
IN PRT2570ADAPTER pAdapter);
devient :
VOID NICReadEEPROMParameters(
IN PRT2570ADAPTER pAdapter,
struct net_device *net_dev);
enfin il reste l’appel de la fonction de lecture à modifier, dans rtusb_main.c:
NICReadEEPROMParameters(pAdapter, net_dev);
Ca y est !!
Par défaut la taille maximale d’un fichier uploadé depuis PHP est fixée à 2Mo, Pour augmenter cette taille, il faut modifier le fichier /etc/php.ini et indiquer la nouvelle taille en renseignant la variable upload_max_filesize. La taille peut être indiquée en Méga : = 10M par exemple.