Vector logo of the PHP programming language wi...

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

Dipertingkatkan oleh Zemanta

Artikel berikut mungkin atas kebodohan tetapi seperti yang saya selalu berkata saya lebih baik daripada pengekod admin. Semalam semasa saya menggaru beberapa skrip AJAX dan terpaksa menghantar pengesahan data kurang bahawa penggunaan hash mereka kerana skrip tidak berkongsi array $ _SESSION dan perkara-perkara menjadi sedikit tidak menentu. Begitu hellhole berikut semua pameri yang dikemukakan POST atau GET untuk melakukannya salah satu parameter konkateriranite md5 hash dan kemudian saya membandingkannya. Secara keseluruhan bukan skim Saya buruk. Hashing algoritma untuk bola tujuan ini MD5 , SHA, DESC dan lain-lain. perkara yang sebelum ini adalah jelas untuk mengatakan, yang akan menggunakan MD5 hashing parameter (dan dengan berbuat deytvitelnost). kita mempunyai 3 parameter yang diberi makan melalui GET i = 1 n = 2 m = 3 dan berkata rentetan heshriane adalah 123 membuatkan kita berikut MD5 hash 202cb962ac59075b964b07152d234b70 yang. Setakat ini tidak banyak yang menarik. hash ini akan jatuh untuk beberapa saat di mana-mana serangan. Di sini datang garam dan lada idea mudah saya. Katakan saya mengambil watak yang pertama dan terakhir tali, dan bertukar-tukar tempat-tempat mereka itu mendapat 002cb962ac59075b964b07152d234b72 hash sudah jika seseorang jika anda tidak membaca kebodohan kod kami adalah apa yang membuat keadaan menjadi sukar apabila cuba untuk hacking. hash sebenar adalah satu lagi dan juga dapat izsnifen adalah sama sekali tidak berguna. Tetapi mengapa berhenti di sini kita boleh membahagikan beberapa blok hash, dalam kes panjang MD5 32 jika simbol dibahagikan kepada 4 di blok 8 watak-watak dan peralihan mereka sebagai tempat menjadi kedudukan yang lebih selesa. Далеч най приятния ефект е, че визуално си е стандартен 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

Untuk memindahkan projek yang aktif diprogramkan tanpa kawalan versi masa kini adalah kegilaan lengkap. Secara umumnya terdapat banyak pilihan bazar , lincah , git , svn . Jadi di sini jika anda mengharapkan untuk menjelaskan apa kawalan versi yang baik dan mengapa ia tidak akan. kami menggunakan git. banyak sebab – mudah untuk menyesuaikan diri, sangat fleksibel, ditulis oleh Linus Torvalds adalah untuk berkhidmat kepada versi Linux Kernel, yang kedua sekurang-kurangnya 2 sebab 😉 . Hari ini saya terpaksa membuat repositori baru, Ia memulakan satu projek baru. Saya benar-benar membuat repositori sedikit ia lama dahulu apabila kita mempunyai dan saya terlupa detik-detik kecil yang. Mewujudkan repositori terserempak beberapa fail kedai pertama semuanya berjalan betul. Yang penetapan repositori itu 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

Pada dasarnya apa-apa yang tidak baik-baik saja. Kemudian saya memutuskan untuk menguji mesin jauh untuk memelihara kandungan dan cuba untuk melakukan push-me menyelar ditutup dengan mesej yang hodoh:

Menolak untuk GIT://gitHost / projek
jauh: ralat: enggan untuk mengemas kini diperiksa cawangan: Rujukan / kepala / master
jauh: ralat: Secara lalai, mengemaskini cawangan semasa dalam repositori bukan kosong
jauh: ralat: ditolak, kerana ia akan membuat indeks dan kerja pokok yang tidak konsisten
jauh: ralat: dengan apa yang anda ditolak, dan akan memerlukan 'reset git –keras’ untuk memadankan
jauh: ralat: pokok karya itu kepada Ketua.
jauh: ralat:
jauh: ralat: Anda boleh menetapkan 'receive.denyCurrentBranch’ konfigurasi berubah-ubah untuk
jauh: ralat: 'mengabaikan’ atau 'memberi amaran’ dalam repositori yang jauh untuk membolehkan menolak ke dalam
jauh: ralat: cawangan semasa; bagaimanapun, ini tidak digalakkan kecuali anda
jauh: ralat: diatur untuk mengemaskini pokok tugasnya untuk sepadan dengan apa yang anda ditolak dalam beberapa
jauh: ralat: jalan lain.
jauh: ralat:
jauh: ralat: Untuk mendiamkan mesej ini dan masih menyimpan kelakuan lalai, set
jauh: ralat: 'receive.denyCurrentBranch’ konfigurasi berubah-ubah untuk 'menolak'.
untuk GIT://gitHost / projek
! [ditolak jauh] master -> master (cawangan kini diperiksa)
ralat: gagal untuk menolak beberapa Rujukan kepada 'git://gitHost / projek’

Jadi nampaknya cuba untuk memberontak dalam pokok utama projek dan perisian sopan memotong saya. Secara keseluruhan saya tidak mempunyai niat untuk melakukan Branch tambahan kerana mereka yang terlibat dalam projek-projek mempunyai sebab-sebab yang jelas dan lain-lain. Тука идва момента да отбележа че съм дефинирал много некадърно заглавието но това е друг момент. Като цяло решението на проблема е тривиално в .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 (–memasang):
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 права.

Dipertingkatkan oleh Zemanta