Vector logo of the PHP programming language wi...

Днес ще драсна едно леко четиво за php cache le html. Тука говорим за кеширане на изхода от кода ни а не както съм писал да кешираме скритповете до opcode ниво с eAccelerator. Така за какво иде речнека да си припомним на бързо работата на php-то. Подаваме заявка на web server-a ни той приема параметрите който подаваме след това той ги подава на php скрипта той се компилира и плюе резултат в html вариант. Това е в доста общи линии. Каква ще е идеята ни тука да прескачаме заявки, да прескачаме големи блокове или не чак толкова големи блокове като директно изрисуваме вече веднъж компилирания изход. Преимуществата са очевиднинамаляна на времето за изпълнение, по малко натоварване и потребление на ресурси. Като цяло не е откриване на топлата вода нито е нещо кой знае колко сложно. Има множество класове за тая цел като PHP Pear Cache_Lite който разполага с прекрасна функционалност но аз мисля в бъдеще да си напиша мой с доста по облекчена структура и мой си изисквания към кеширането. Сега ще разгледаме най аборигенския вариант с Output Control Functions. Така нека да кешираме нещо

//start cache all output after that will be saved

ob_start();

//generate output

echo 'Some dynamic output';

echo 'Some other dynamic output ...';

//assign output into variable

$var=ob_get_contents();

//close cache output

ob_end_flush();

Горния код е тривиален но нека да обясним какво стана. Първо декларираме от коя част в кода започва кеширането. След това си генерираме по стандартен начин изхода от кода. След това генерирания изход се присъединява към променлива която ще е достъпна по късно дали през файл някакво или през sessions това си е ваше решение. Накрая изчистваме и прекратяваме кеширането. Съвсем тривиална операция ако да речем геенрирането на кеша минава през огромни блокове от код така можем да спестим доста процесорно време като кешираме за известно време или за една сесия. Вече всичко опира то това какво искате дали да е общодостъпен кеша или да е достъпен за различен потребител.

Amélioré par Zemanta

L’article suivant peut être le summum de la bêtise, mais comme je dis toujours que je suis un Admin mieux que codeur. Hier, tout en draŝeh l’AJAX script et a dû envoyer certaines données dont je me sers pour leur validation de hachage parce que le script ne partage pas le tableau SESSION $ _ et les choses deviennent un peu incertains. C’est pourquoi ce qui suit salir tous pameri soumis par la poste ou leur faire obtenir un hachage md5 des paramètres de konkateriranite et de le comparer ensuite. Dans l’ensemble pas un mauvais régime je pense. Algorithmes de Heširaŝi à cet effet bol MD5 , SHA, DESC et ainsi de suite. Ici les choses sont claires pour dire, Il utilisera les paramètres de hachage MD5 (comme dans la pratique factuelle). Nous avons 3 le paramètre qui est soumis à l’EEG i = 1 n = 2 m = 3 et dire hešriane string est 123 Ce qui nous rend la 202cb962ac59075b964b07152d234b70 suivante de hachage MD5. Rien ici qui sait quoi d’intéressant. Ce hachage tombera pendant quelques secondes dans n’importe quelle attaque. Voici le simple sel et poivre à mon idée. Disons que je prends le premier et le dernier caractère swap leurs lieux de cette manière génère un hachage de 002cb962ac59075b964b07152d234b72 si quelqu'un déjà si je n’avais pas lu le code nous quelle idiotie rend mauvais piratage tentent de la chaîne. Hachage véritable est une autre et même d’être izsnifen est totalement inutile. Mais pourquoi s’arrêter ici, nous pouvons diviser le hachage de plusieurs blocs, dans ce cas, le MD5 est 32 Si le symbole est divisé en 4 blocs 8 personnages et leurs lieux de déplacement devient encore plus inconfortable position. Далеч най приятния ефект е, че визуално си е стандартен md5 хеш и злия хахор може да си чупи докато има желание. Не съм добър по криптиране и не мога да пледирам за нещо кой знае колко фундаментално и прочие но ми допада колко е семпло като идея и реализация и съвременно надеждността е критично висока не като на нормалния MD5 които с една по грамотна видео карта се чупи за норматив.

Ето и примерен код за първата идея с размяната на първия и последния символ елементарен код от 3 реда 🙂

<?php

$hash = '202cb962ac59075b964b07152d234b70';

$first = substr($hash,0,1);
$last = substr($hash,-1);
$rest = substr($hash,1,30);
$hash = $last.$rest.$first;
echo "The real hash is : $str <br> inverted hash is : $hash";

?>

http://www.youtube.com/watch?v=Fvje9dzBHPM

Pour déplacer un projet dans lequel au programme actif sans contrôle par rapport aux versions aujourd'hui est fou. Il y a généralement plusieurs Bazar options , mercurial , git , svn . Donc, ici, si vous prévoyez d’expliquer quel contrôle de version est meilleure et pourquoi il ne sera pas. Aux États-Unis, nous utilisons git. Causer beaucoup de – facile à configurer, Il est très polyvalent, Il a été écrit par Linus Torvalds pour la version du noyau Linux pour servir, ces derniers sont au moins 2 raisons 😉 . Aujourd'hui, que j’ai dû créer un nouveau référentiel, J’ai commencé un nouveau projet. En fait, j’ai créé quelques référentiels et il longtemps lorsque nous en avions besoin et j’ai oublié le mince à ce Momento. Créer plusieurs fichiers magasin pour le premier magasin coup que tout s’est passé exactement. Le cadre lui-même était standard:

git init
echo "Short project's description" > .git/description
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
git commit -a
touch .git/git-daemon-export-ok

Fondamentalement, rien n’est faux. Alors j’ai décidé de tester depuis une machine distante pour préserver le contenu et en essayant de pousser-avec mon message laid pop:

Poussant à git://gitHost/projet
distant: erreur: refusant de mettre à jour extrait de branche: REFS/têtes/master
distant: erreur: Par défaut, mise à jour de la branche actuels dans un référentiel non-nue
distant: erreur: est refusé, parce qu’il rendra l’arbre d’index et de travail incompatible
distant: erreur: avec ce qui vous a poussé, et il faudra ‘ git reset –dur’ faire correspondre
distant: erreur: l’arbre de travail à la tête.
distant: erreur:
distant: erreur: Vous pouvez définir ‘ receive.denyCurrentBranch’ variable de configuration à
distant: erreur: ‘ ignorer’ ou ‘ avertir’ dans le référentiel distant pour permettre poussant dans
distant: erreur: sa branche actuels; Cependant, ce n’est pas recommandé à moins que vous
distant: erreur: disposés à mettre à jour son arborescence de travail pour correspondre à ce qui vous a poussé dans certains
distant: erreur: autre manière.
distant: erreur:
distant: erreur: Pour silencieux ce message et toujours garder le comportement par défaut, ensemble
distant: erreur: ‘ receive.denyCurrentBranch’ variable de configuration pour ‘ refuser ’.
À git://gitHost/projet
! [télécommande a rejeté] maître-> maître (branche est actuellement extrait)
erreur: échoua à chasser quelques refs à ‘ git://gitHost/projet’

Alors évidemment j’ai essayer de komitvam dans l’arborescence principale du projet et le logiciel poliment me couper. Dans l’ensemble, j’ai pas l’intention de faire une branche supplémentaire parce que les personnes impliquées dans les projets sont clairs et un certain nombre d’autres raisons. Тука идва момента да отбележа че съм дефинирал много некадърно заглавието но това е друг момент. Като цяло решението на проблема е тривиално в .git/config на проекта ви трябва да добавите следната директива:

[receive]
denyCurrentBranch = false

След това всичко си идва на мястото.

http://www.youtube.com/watch?v=16bRiH5zfOY

Packet Tracer

Image via Wikipedia

Aujourd'hui, j’ai eu à démontrer une simulation Cisco Packet Tracer à travers une machine sur laquelle n’était pas installé. En général, est maloumŝinata, c'est-à-dire par le simulateur de Cisco pour x86 machines et pour moi la machine était x64. Lorsque vous essayez d’installer meurt avec le message de laid

Essayer d’installer le paquet maintenant
dpkg: erreur lors du traitement de PacketTracer-5.3_3.i386.deb (–installer):
architecture de paquet (i386) ne correspond pas à système (amd64)
Des erreurs ont été rencontrées lors du traitement:
PacketTracer-5.3_3.i386.deb

Pratiquement tout est évidemment Debian-pean paquet veut installer parce que c’est pour une architecture différente. D’ici sur out est un problème évident de dpkg + forsirano installer l’erreur que nous pouvons contourner pour une autre plate-forme. Bin-pean Installer fichier a seulement razarhiviraŝ est cette archive décompresse dans/tmp/exctractible. Dossier où XXXXX XXXXX correspond à toute chaîne. Dans ce répertoire sont situés. fichier deb Packet Tracer-a. L’installation se faite avec la commande

dpkg -i --force-all /tmp/selfextract.XXXXX/PacketTracer-5.3_3.i386.deb

Naturellement avec les droits root.

Amélioré par Zemanta