Vector logo of the PHP programming language wi...

Днес ще драсна едно леко четиво за php cache na html. Тука говорим за кеширане на изхода от кода ни а не както съм писал да кешираме скритповете до opcode ниво с eAccelerator. Така за какво иде речнека да си припомним на бързо работата на php-то. Подаваме заявка на web server-a ни той приема параметрите който подаваме след това той ги подава на php скрипта той се компилира и плюе резултат в html вариант. Това е в доста общи линии. Каква ще е идеята ни тука да прескачаме заявки, да прескачаме големи блокове или не чак толкова големи блокове като директно изрисуваме вече веднъж компилирания изход. Преимуществата са очевиднинамаляна на времето за изпълнение, по малко натоварване и потребление на ресурси. Като цяло не е откриване на топлата вода нито е нещо кой знае колко сложно. Има множество класове за тая цел като тект 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 това си е ваше решение. Накрая изчистваме и прекратяваме кеширането. Съвсем тривиална операция ако да речем геенрирането на кеша минава през огромни блокове от код така можем да спестим доста процесорно време като кешираме за известно време или за една сесия. Вече всичко опира то това какво искате дали да е общодостъпен кеша или да е достъпен за различен потребител.

Potpomognuto Zemanta

Следећи чланак може бити врх глупости, али као што сам увек кажем да сам бољи од енкодера админ. Јуче док ја помогнем мало АЈАКС сценарио и морао да пошаље мање података потврду да њихове употребе хашиша, јер скрипта не деле $ _СЕССИОН низ и ствари постају мало несигуран. Учини следеће рупи све памери који се достављају поштом или могу да их уради један од параметара МД5 хасх конкатерираните и онда сам га упоредити. Генерално није лоша шема ја. Хасхинг алгоритама за ову намену лопте МД5 , СХА, АСЦ и други. Досадашњи ствари су јасне рећи, који ће користити МД5 хасхинг параметре (и на тај деитвителност). имамо 3 параметар који се напаја преко ГЕТ и = 1 Н = 2 М = 3 и кажу да је низ хесхриане је 123 чини нам следеће МД5 хасх 202цб962ац59075б964б07152д234б70. До сада ништа посебно занимљиво. Ово хасх ће пасти за неколико секунди у сваком нападу. Ево и со и бибер по мом једноставној идеји. Рецимо ја први и последњи карактер низу, и размену своје место на тај начин добија 002цб962ац59075б964б07152д234б72 хасх већ ако неко ако нисте прочитали код идиотизам је оно што чини загусти приликом покушаја хаковања. Реал хасх је још један, па чак и да се изснифен је потпуно бескорисно. Али зашто се зауставити овде можемо поделити хасх неколико блокова, у случају дужине МД5 32 ако симбол је подељен на 4 у блоку 8 ликови и њихова смена као места постати још непријатно место. Do sada je najprijatniji efekat, taj podatak je standardni md5 hash i zli hahor Izlomi dok postoji želja. Ja nisam dobar u šifrovanja i možeš se izjasniti za nešto ko zna kako je u osnovi i sve ali ja ne volim, prosto je ideja i realizacija i napredne pouzdanosti je kritično visoko ne kao normalan MD5 koja je, sa više pismen grafička kartica, lomi normi.

Evo ti uzorak koda za ideju o razmeni prvi i poslednji karakter šifru osnovne 3 nalog 🙂

<?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";

?>

хттп://ввв.иоутубе.цом/ватцх?v = Fvje9dzBHPM

Да бисте преместили пројекат који активно програмиран без контроле верзија данас је завршено лудило. Генерално постоје бројне могућности базар , живин , git , СВН . Па ево ако очекујете да објасним шта верзија контрола је добро и зашто неће бити. mi користимо git. много разлога – лако прилагодити, врло флексибилан, написао Линус Торвалдс је да служи верзије Линук кернела, ова последња су међусобно најмање 2 razlog 😉 . Данас сам морао да створи ново спремиште, Почело је нови пројекат. Заправо су настала мало спремиште ит давно када смо имали и ја сам заборавио мале тренутке које. Креирајте спремиште ударио неколико датотека прва продавница све завршио. Сама поставка спремишта била стандардна:

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/config на проекта ви трябва да добавите следната директива:

[receive]
denyCurrentBranch = false

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

хттп://ввв.иоутубе.цом/ватцх?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 права.

Potpomognuto Zemanta