Vector logo of the PHP programming language wi...

Aujourd’hui, je vais gratter une lecture de lumière sur PHP Cache De Html. Nous parlons de mettre en cache la sortie de notre code, pas comme je l’ai écrit pour mettre en cache les pointes à Opcode Niveau avec Eaccelerator. Alors, quel est le discours – Rappelons-nous le travail rapide de PHP. Nous soumettons une demande à Serveur Web-Un US qu’il accepte les paramètres que nous soumettons puis il les soumet au script PHP qu’il compile et crache le résultat en version HTML. C’est en termes assez généraux. Quelle serait notre idée ici de sauter les ordres?, Pour sauter par-dessus de grands blocs ou pas de tels grands blocs que nous peignons directement la sortie déjà compilée. Les avantages sont évidents – Réduction du temps d’exécution, En réduisant la consommation de charge et de ressources. En général, il ne découvre pas l’eau chaude ni quelque chose qui sait à quel point. Il existe de nombreuses classes à cet effet, car Php Poire Cache_Lite qui a une grande fonctionnalité, mais je pense qu’à l’avenir je vais écrire le mien avec une structure un peu plus rationalisée et mes propres exigences de mise en cache. Maintenant, nous allons examiner la version autochtone avec Fonctions de contrôle des sorties. Donc, nous allons cacher quelque chose –

//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();

Le code ci-dessus est trivial, mais nous allons expliquer ce qui s’est passé. D’abord, nous déclarons quelle partie du code commence à mettre en cache. Ensuite, nous générons la sortie à partir du code d’une manière standard. La sortie générée est ensuite jointe à une variable qui sera disponible plus tard, que ce soit par le biais d’un fichier ou de sessions, c’est votre décision.. Enfin, nous clairs et désactiver la mise en cache. Une opération très triviale, si nous disons que la géosmalisation cache passe par d’énormes blocs de code afin que nous puissions économiser beaucoup de temps CPU en cachant pendant un certain temps ou pour une seule session. Il s’agit maintenant de ce que vous voulez que vous publiciez le cache ou soit disponible pour un autre utilisateur.

Enhanced by Zemanta

Следващата статия може да е върха на глупостта но както винаги съм казвал съм по добър админ от колкото кодер. Вчера докато си дращех едни AJAX скрипт и трябваше да изпращам малко данни които за валидация им ползвам хеш понеже скрипта не споделя едни $_SESSION масив и нещата стават леко несигурни. Затова правя следната свинщина всички памери които се подават по POST или GET си им правя един md5 хеш от конкатерираните параметри и после си го сравнявам. Като цяло не лоша схема мисля. Хеширащи алгоритми за тая цел бол MD5 , SHA, DESC и прочие. До тука нещата са ясни да речем, че ще ползваме MD5 за хеширане на параметрите (както и в дейтвителност правя). Имаме 3 параметъра който се подават през GET i=1 n=2 m=3 и да речем низът за хешриане е 123 което ни прави следния MD5 хеш 202cb962ac59075b964b07152d234b70. До тук нищо кой знаеш какво интересно. Тоя хеш ще падне за няколко секунди при каквато и да било атака. Тука вече идва солта и пипера на простата ми идея. Да речем взимам първия и последния символ на стринг-а и им разменяме местата по този начин се получава 002cb962ac59075b964b07152d234b72 хеш който вече ако някой ако не е чел кода ни каква идиотщина се прави нещата загрубяват при опит за хакване. Реално хеша е друг и дори и да бъде изснифен е крайно безполезен. Но защо да спираме до тук можем да разделим хеша на няколко блока, в случая MD5 е с дължина 32 символа ако бъде разделен на 4 блока по 8 символа и им се разместят местата става още по неприятно положение. Далеч най приятния ефект е, че визуално си е стандартен 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

Déplacer un projet activement programmé sans contrôle sur les versions de nos jours est une frénésie complète. Dans l’ensemble, il ya plusieurs options bazar , Mercurial , Git , Svn . Donc, ici, si vous vous attendez à ce que je pour expliquer quel contrôle de la version est mieux et pourquoi il ne sera pas. Nous utilisons Git. Causes de nombreux – S’ajuste facilement, Très polyvalent, Écrit par Linus Torvalds pour servir les versions Linux Kernel, Ces derniers sont au moins 2 Raisons 😉 . Aujourd’hui, je dois créer un nouveau référentiel, Qu’un nouveau projet a été lancé. En fait, j’ai créé quelques dépôts, et c’était il ya longtemps quand nous en avions besoin et j’ai oublié le moment mince à ce moment. J’ai créé le référentiel, j’ai poussé plusieurs fichiers pour le premier stockage tout s’est bien passé. La configuration du référentiel elle-même était la norme:

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 qui ne va pas. C’est pas vrai. Push-'md:

Pousser à git://gitHost/projet
Distance: Erreur: refusant de mettre à jour la branche vérifiée: refs/têtes/maître
Distance: Erreur: Par défaut, mise à jour de la branche actuelle dans un référentiel non nu
Distance: Erreur: est refusé, parce qu’il rendra l’index et l’arbre de travail incohérent
Distance: Erreur: avec ce que vous avez poussé, et exigera 'git réinitialisation –Dur’ pour correspondre
Distance: Erreur: l’arbre de travail à HEAD.
Distance: Erreur:
Distance: Erreur: Vous pouvez définir 'receive.denyCurrentBranch’ variable de configuration à
Distance: Erreur: 'ignorer’ ou «avertir’ dans le référentiel à distance pour permettre de pousser dans
Distance: Erreur: sa branche actuelle; Cependant, ce n’est pas recommandé à moins que vous
Distance: Erreur: organisé pour mettre à jour son arbre de travail pour correspondre à ce que vous avez poussé dans certains
Distance: Erreur: d’une autre façon.
Distance: Erreur:
Distance: Erreur: Pour étouffer ce message tout en conservant le comportement par défaut, Ensemble
Distance: Erreur: 'receive.denyCurrentBranch’ variable de configuration à 'refuser'.
Pour git://gitHost/projet
! [à distance rejetée] maître -> Maître (branche est actuellement vérifiée)
Erreur: échoué à pousser certains arbitres à 'git://gitHost/projet’

Donc évidemment, j’essaie de komi dans l’arbre principal du projet et le logiciel courtoisement coupé Me. En général, je n’ai pas l’intention de faire une branche supplémentaire parce que les gens qui participent aux projets sont clairs et commandent d’autres raisons. Voici le moment de souligner que j’ai défini un titre très incompétent, mais c’est un autre moment. Dans l’ensemble, la solution au problème est triviale dans le. git/config de votre projet, vous devez ajouter la directive suivante:

[receive]
denyCurrentBranch = false

Puis tout arrive à l’endroit.

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

Packet Tracer

Image via Wikipedia

Днес ми се наложи да демонстрирам една симулация през Cisco Packet Tracer на машина на която не беше инсталиран. В общи линии малоумщината е, че стимулатора на Cisco е за x86 машини а при мен машината беше x64. При опит за инсталация умира с грозното съобщение

Attempting to install package now
dpkg: error processing PacketTracer-5.3_3.i386.deb (–Installer):
package architecture (i386) does not match system (amd64)
Errors were encountered while processing:
PacketTracer-5.3_3.i386.deb

Общо взето всичко е очевидно Debian-ския пакет не иска да се инсталира защото е за друга архитектура. От тук нататък проблема е ясен dpkg + форсирано инсталиране за да байпаснем грешката за различна платформа. Bin-ския файл на инсталатора реално е само разархивиращ се архив който се разархивира в /tmp/selfextract.XXXXX папка където XXXXX е произволен низ. В тази директория се намира .deb файлът на Packet Tracer-a. Инсталацията се извършва с командата

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

Естествено с root права.

Enhanced by Zemanta