Vector logo of the PHP programming language wi...

Днес ще драсна едно леко четиво за php cachehtml. Тука говорим за кеширане на изхода от кода ни а не както съм писал да кешираме скритповете до 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 това си е ваше решение. Накрая изчистваме и прекратяваме кеширането. Съвсем тривиална операция ако да речем геенрирането на кеша минава през огромни блокове от код така можем да спестим доста процесорно време като кешираме за известно време или за една сесия. Вече всичко опира то това какво искате дали да е общодостъпен кеша или да е достъпен за различен потребител.

Zemantaの強化されたことにより、

次の記事は、愚かさのトップかもしれないが、私はいつも言うように私は、エンコーダの管理者よりも良いですよ. 昨日、私はいくつかのAJAXスクリプトを傷つけ、スクリプトが$ _SESSION配列を共有しないと物事がやや不確実になっているため、それらの使用ハッシュことが少ないデータの検証を送信するために持っていました. だから、POSTを提出しているすべてのpameriを以下の最悪の場所をするか、またはそれらにMD5ハッシュkonkateriraniteパラメータのいずれかを行うために取得し、私はそれを比較. 全体的に悪くないスキームI. この目的のためにボールのためのハッシュアルゴリズム MD5 , SHA, DESCおよびその他. これまでの事は言うまでも明確です, それは、MD5ハッシュパラメータを使用します (そして、deytvitelnost行う際に). 我々が持っています 3 GET I = 1からn = 2メートル= 3を介して供給し、heshrianeの文字列があると言うれるパラメータ 123 私たちの次のMD5ハッシュ202cb962ac59075b964b07152d234b70なります. これまでのところ何も面白いくらい. このハッシュは、任意の攻撃で数秒間落ちます. ここに私のシンプルなアイデアに塩とコショウが来ます. のは、私は文字列の最初と最後の文字を取り、あなたが私たちのコード白痴を読んでいない場合は、誰かがハッキングしようとしたときに物事が荒れるにするものである場合ので、それらの場所を交換することは、すでに002cb962ac59075b964b07152d234b72ハッシュを取得しましょう. 本当のハッシュは別であってもizsnifenことが全く役に立ちません. しかし、なぜ私たちはハッシュ数ブロックを分割することができ、ここで止めます, 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

積極的に今日では、バージョン管理せずにプログラムされたプロジェクトを移動するには、完全な狂気であります. 一般的には多数のオプションのバザーがあります , 水銀の , gitの , SVN . あなたはどのバージョン管理を説明するために期待するのであれば、ここで良いですし、なぜそれができなくなります. 我々は、使用します gitの. 多くの理由 – 調節しやすいです, 非常に柔軟, Linus Torvalds氏によって書かれたLinuxカーネルのバージョンを提供することです, 後者は、少なくともあります 2 理由😉 . 今日、私は新しいリポジトリを作成する必要がありました, これは、新しいプロジェクトを開始しました. 私たちが持っていたとき、私は実際には長い時間前に少しのリポジトリを作成したと私は小さな瞬間を忘れてしまったこと. リポジトリを作成し、いくつかのファイルが最初にすべてがうまくいった保存ぶつかっ. リポジトリの非常に設定が標準でした:


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

大丈夫ではありません基本的には何も. それから私は、コンテンツを保存するために、リモートマシンをテストすることを決めたとプッシュ私は非難醜いメッセージでシャットダウンを実行しようと:

gitのにプッシュ://gitHost /プロジェクト
リモート: エラー: チェックアウトしたブランチを更新することを拒否: レフリー/ヘッド/マスター
リモート: エラー: デフォルト設定で, 非裸のリポジトリに現在のブランチを更新
リモート: エラー: 拒否されました, それは、インデックスと作業ツリーの不一致が生じることになりますので、
リモート: エラー: あなたが押されたものと, そして、 'gitのリセットが必要になります –ハード’ 合わせる
リモート: エラー: HEADの作業ツリー.
リモート: エラー:
リモート: エラー: あなたは 'を設定することができますreceive.denyCurrentBranch’ 構成変数へ
リモート: エラー: 「無視’ または '警告’ プッシュできるようにするリモートリポジトリで
リモート: エラー: その現在のブランチ; しかしながら, これは、あなたがない限りお勧めしません
リモート: エラー: あなたには、いくつかの中に押し込むものと一致するために、その作業ツリーを更新するように配置され
リモート: エラー: 他の方法.
リモート: エラー:
リモート: エラー: このメッセージをスケルチしても、デフォルトの動作を維持するために、, セット
リモート: エラー: 「receive.denyCurrentBranch’ 「ごみ」に設定変数.
gitのへ://gitHost /プロジェクト
! [リモート拒否] マスター -> マスター (ブランチは、現在チェックアウトされています)
エラー: gitの 'にいくつかの参考文献をプッシュすることができませんでした://gitHost /プロジェクト’

だから、明らかに丁寧に私をカットし、プロジェクトのメインツリーに反乱軍にしようとソフトウェア. 全体的に私は、プロジェクトに関わる人々がはっきりと他の理由を持っているので、余分な枝を実行するつもりはありません. Тука идва момента да отбележа че съм дефинирал много некадърно заглавието но това е друг момент. Като цяло решението на проблема е тривиално в .git/config на проекта ви трябва да добавите следната директива:


[receive]
denyCurrentBranch = false

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

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 (–設置):
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 права.

Zemantaの強化されたことにより、