Vector logo of the PHP programming language wi...

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

Zemanta ਨਾਲ ਲੈੱਸ

ਅਗਲੇ ਲੇਖ ਮੂਰਖਤਾ ਦੇ ਸਿਖਰ 'ਹੋ ਸਕਦਾ ਹੈ, ਪਰ ਦੇ ਤੌਰ ਤੇ ਮੈਨੂੰ ਹਮੇਸ਼ਾ ਕਹਿਣਾ ਮੈਨੂੰ ਇਕੋਡਰ Admin ਵੱਧ ਬਿਹਤਰ ਰਿਹਾ. ਕੱਲ੍ਹ, ਜਦਕਿ ਮੈਨੂੰ ਕੁਝ AJAX ਸਕਰਿਪਟ ਵਲੂੰਧਰੇ ਅਤੇ ਇਹ ਹੈ ਜੋ ਆਪਣੇ ਵਰਤਣ ਹੈਸ਼ ਘੱਟ ਡਾਟਾ ਪ੍ਰਮਾਣਿਕਤਾ ਨੂੰ ਭੇਜਣ ਲਈ ਹੈ, ਕਿਉਕਿ ਸਕਰਿਪਟ $ _SESSION ਐਰੇ ਸ਼ੇਅਰ ਨਹੀ ਕਰਦਾ ਹੈ ਅਤੇ ਕੁਝ ਥੋੜ੍ਹਾ ਅਨਿਸ਼ਚਿਤ ਬਣ ਗਿਆ ਸੀ. ਇਸ ਲਈ ਹੇਠ hellhole ਸਾਰੇ pameri ਜੋ POST ਪੇਸ਼ ਕਰ ਰਹੇ ਹਨ ਕੀ ਜ MD5 ਹੈਸ਼ konkateriranite ਪੈਰਾਮੀਟਰ ਦੇ ਇੱਕ ਨੂੰ ਕੀ ਕਰਨ ਦੀ ਪ੍ਰਾਪਤ ਕਰੋ ਅਤੇ ਫਿਰ ਮੈਨੂੰ ਇਸ ਦੀ ਤੁਲਨਾ. ਕੁੱਲ ਮਿਲਾ ਨਾ ਇੱਕ ਬੁਰਾ ਸਕੀਮ ਨੂੰ ਮੈਨੂੰ. ਇਸ ਮਕਸਦ ਬਾਲ ਲਈ ਐਲਗੋਰਿਥਮ ਹੈਸ਼ਿੰਗ MD5 , SHA, DESC ਅਤੇ ਹੋਰ. ਅਜੇ ਤੱਕ ਕੁਝ ਕਹਿਣ ਲਈ ਸਾਫ ਹਨ, ਹੈ, ਜੋ ਕਿ MD5 ਹੈਸ਼ਿੰਗ ਪੈਰਾਮੀਟਰ ਵਰਤ ਕਰੇਗਾ (ਅਤੇ deytvitelnost ਪੂਰੀ ਕਰਨ ਵਿਚ). ਸਾਡੇ ਕੋਲ ਹੈ 3 ਪੈਰਾਮੀਟਰ ਹੈ ਜੋ GET ਮੈਨੂੰ = 1 n = 2 ਮੀਟਰ = 3 ਦੁਆਰਾ ਚਰਾਉਣ ਅਤੇ ਕਹਿੰਦੇ heshriane ਦੇ ਸਤਰ ਹੈ 123 ਸਾਡੇ ਲਈ ਹੇਠ MD5 ਹੈਸ਼ 202cb962ac59075b964b07152d234b70 ਬਣਾ ਦਿੰਦਾ ਹੈ. ਇਸ ਲਈ ਹੁਣ ਤੱਕ ਕੁਝ ਵੀ ਬਹੁਤ ਕੁਝ ਦਿਲਚਸਪ. ਇਸ ਹੈਸ਼ ਨੂੰ ਕਿਸੇ ਵੀ ਹਮਲੇ 'ਤੇ ਕੁਝ ਸਕਿੰਟ ਲਈ ਵਰਤਣਗੇ. ਇੱਥੇ ਲੂਣ ਅਤੇ ਮੇਰੇ ਸਧਾਰਨ ਵਿਚਾਰ 'ਤੇ ਮਿਰਚ ਆਇਆ ਹੈ. ਦੇ ਕਹਿਣਾ ਹੈ ਮੈਨੂੰ ਸਤਰ ਦੇ ਪਹਿਲੇ ਅਤੇ ਆਖਰੀ ਅੱਖਰ ਲੈ, ਅਤੇ ਆਪਣੇ ਸਥਾਨ ਵਟਾਉਣਾ ਇਸ 002cb962ac59075b964b07152d234b72 ਹੈਸ਼ ਹੀ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ਕਿਸੇ ਨੂੰ ਹੈ, ਜੇ, ਜੇ ਤੁਹਾਨੂੰ ਪੜ੍ਹਨ, ਨਾ ਸੀ, ਸਾਡੇ ਕੋਡ ਨੂੰ idiocy ਜੋ ਕੁਝ ਮੋਟਾ ਪ੍ਰਾਪਤ ਜਦ ਹੈਕਿੰਗ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ ਹੈ ਚਾਹੀਦਾ ਹੈ. ਰੀਅਲ ਹੈਸ਼ ਇੱਕ ਹੋਰ ਅਤੇ ਵੀ 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

ਇੱਕ ਪਰੋਜੈਕਟ ਹੈ ਜੋ ਸਰਗਰਮੀ ਨਾਲ ਕੱਲ੍ਹ ਵਰਜਨ ਕੰਟਰੋਲ ਬਿਨਾ ਯੋਜਨਾ ਨੂੰ ਮੂਵ ਕਰਨ ਲਈ ਮੁਕੰਮਲ ਹੋ ਕਮਲੀ ਹੈ. ਆਮ ਤੌਰ 'ਤੇ ਉਥੇ ਕਈ ਵਿਕਲਪ ਬਾਜ਼ਾਰ ਹਨ , Mercurial , Git , SVN . ਇਸ ਲਈ ਇੱਥੇ ਤੁਹਾਨੂੰ ਸਮਝਾਉਣ ਲਈ ਕਿ ਕੀ ਵਰਜਨ ਕੰਟਰੋਲ ਚੰਗਾ ਹੈ ਦੀ ਆਸ ਹੈ ਅਤੇ ਇਸੇ ਲਈ ਇਸ ਨੂੰ ਹੋ ਨਾ ਹੋਵੇਗਾ, ਜੇ. ਸਾਨੂੰ ਨੂੰ ਵਰਤਣ Git. ਬਹੁਤ ਸਾਰੇ ਕਾਰਨ – ਨੂੰ ਅਨੁਕੂਲ ਕਰਨ ਲਈ ਆਸਾਨ, ਬਹੁਤ ਹੀ ਲਚਕਦਾਰ, ਲੀਨਸ ਟੋਰਵਾਲਸ ਦੁਆਰਾ ਲਿਖਿਆ ਲੀਨਕਸ ਕਰਨਲ ਵਰਜਨ ਦੀ ਸੇਵਾ ਕਰਨ ਲਈ ਹੈ,, ਬਾਅਦ ਘੱਟੋ-ਘੱਟ 'ਤੇ ਹਨ, 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 / ਪ੍ਰਾਜੈਕਟ ਨੂੰ
ਰਿਮੋਟ: ਗਲਤੀ: ਨੂੰ ਅਪਡੇਟ ਕਰਨ ਲਈ ਇਨਕਾਰ ਸ਼ਾਖਾ ਨੂੰ ਬਾਹਰ ਕੀਤੀ ਗਈ: refs / ਸਿਰ / ਮਾਸਟਰ
ਰਿਮੋਟ: ਗਲਤੀ: ਮੂਲ ਰੂਪ ਵਿੱਚ, ਇੱਕ ਨਾ-ਬੇਅਰ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਮੌਜੂਦਾ ਸ਼ਾਖਾ ਨੂੰ ਅੱਪਡੇਟ
ਰਿਮੋਟ: ਗਲਤੀ: ਇਨਕਾਰ ਹੈ, ਕਿਉਕਿ ਇਸ ਨੂੰ ਇੰਡੈਕਸ ਅਤੇ ਕੰਮ ਦੇ ਰੁੱਖ ਨੂੰ ਇਕਸਾਰ ਕਰ ਦੇਵੇਗਾ
ਰਿਮੋਟ: ਗਲਤੀ: ਤੁਹਾਨੂੰ ਕੀ ਧੱਕੇ ਨਾਲ, ਅਤੇ 'Git ਰੀਸੈਟ ਦੀ ਲੋੜ ਹੈ –ਹਾਰਡ’ ਮੇਲ ਕਰਨ ਲਈ
ਰਿਮੋਟ: ਗਲਤੀ: ਕੰਮ ਦੇ ਰੁੱਖ ਨੂੰ ਸਿਰ.
ਰਿਮੋਟ: ਗਲਤੀ:
ਰਿਮੋਟ: ਗਲਤੀ: ਤੁਹਾਨੂੰ receive.denyCurrentBranch ਸੈੱਟ ਕਰ ਸਕਦੇ ਹੋ ''’ ਸੰਰਚਨਾ ਨੂੰ ਵੇਰੀਏਬਲ
ਰਿਮੋਟ: ਗਲਤੀ: 'ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼’ ਜ 'ਨੂੰ ਚੇਤਾਵਨੀ’ ਰਿਮੋਟ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਵਿੱਚ ਧੱਕਣ ਲਈ ਸਹਾਇਕ ਹੈ ਕਰਨ ਲਈ
ਰਿਮੋਟ: ਗਲਤੀ: ਇਸ ਦੇ ਮੌਜੂਦਾ ਸ਼ਾਖਾ; ਪਰ, ਇਸ ਜਦ ਤੱਕ ਤੁਹਾਨੂੰ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਹੈ
ਰਿਮੋਟ: ਗਲਤੀ: ਇਸ ਦੇ ਕੰਮ ਦੇ ਰੁੱਖ ਤੁਹਾਨੂੰ ਕੀ ਕੁਝ ਧੱਕੇ ਨਾਲ ਮੇਲ ਕਰਨ ਲਈ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਪ੍ਰਬੰਧ
ਰਿਮੋਟ: ਗਲਤੀ: ਹੋਰ ਤਰੀਕੇ.
ਰਿਮੋਟ: ਗਲਤੀ:
ਰਿਮੋਟ: ਗਲਤੀ: ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਕੁਚਲਣਾ ਹੈ ਅਤੇ ਅਜੇ ਵੀ ਮੂਲ ਵਰਤਾਓ ਨੂੰ ਰੱਖਣ, ਸੈੱਟ
ਰਿਮੋਟ: ਗਲਤੀ: 'receive.denyCurrentBranch’ ਸੰਰਚਨਾ ਵੇਰੀਏਬਲ ਨੂੰ 'ਇਨਕਾਰ'.
Git ਕਰਨ ਲਈ://gitHost / ਪ੍ਰਾਜੈਕਟ ਨੂੰ
! [ਰਿਮੋਟ ਨੂੰ ਰੱਦ] ਮਾਸਟਰ -> ਮਾਸਟਰ (ਸ਼ਾਖਾ ਇਸ ਵੇਲੇ ਬਾਹਰ ਕੀਤੀ ਗਈ ਹੈ)
ਗਲਤੀ: 'Git ਲਈ ਕੁਝ refs ਧੱਕਣ ਕਰਨ ਵਿੱਚ ਅਸਫਲ://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 ਨਾਲ ਲੈੱਸ