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 სცენარი და უნდა გაგზავნოს ნაკლები მონაცემების დადასტურება, რომ მათი გამოყენება hash, რადგან სცენარი არ იზიარებს $ _SESSION მასივი და რამ გახდება ოდნავ გაურკვეველი. ასე რომ შემდეგი ნაწყვეტი ფილმიდან ყველა pameri, რომელიც წარედგინება POST ან უნდა გავაკეთოთ მათ ერთი md5 hash konkateriranite პარამეტრების და მერე შევადარებ. საერთო ჯამში არ არის ცუდი სქემა I. Hashing ალგორითმები ამ მიზნით ბურთი MD5 , SHA, DESC და სხვა. აქამდე რამ არის ნათელი ვთქვა, რომ გამოიყენებს MD5 ჰეშირება პარამეტრები (და ამით deytvitelnost). ჩვენ 3 პარამეტრი, რომელიც ყელში მეშვეობით GET i = 1 n = 2 m = 3 და აცხადებენ, რომ სიმებიანი heshriane არის 123 გვაიძულებს შემდეგ MD5 hash 202cb962ac59075b964b07152d234b70. ჯერჯერობით ბევრი არაფერი საინტერესო. ეს hash დაეცემა რამდენიმე წამში ნებისმიერი თავდასხმა. აქ მოდის მარილი და პილპილი ჩემს მარტივი იდეა. მოდით ვთქვათ, მე პირველი და ბოლო ხასიათის სიმებიანი და გაცვლის მათი ადგილები, შესაბამისად, იღებს 002cb962ac59075b964b07152d234b72 hash უკვე თუ ვინმეს თუ არ წაიკითხეთ ჩვენი კოდი იდიოტიზმი არის ის, რაც რამ უხეში, როდესაც ცდილობს გარჩევაში. უძრავი hash არის კიდევ და კიდევ უნდა izsnifen სრულიად უსარგებლო. მაგრამ რატომ შეწყვიტოს აქ შეგვიძლია გავყოთ hash რამდენიმე ბლოკად, იმ შემთხვევაში, თუ 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 Kernel ვერსიები, ეს უკანასკნელი, როგორც მინიმუმ, 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

ძირითადად არაფერი რომ არ არის კარგი. მერე გადაწყვიტა გამოეცადა დისტანციური მანქანა შენარჩუნება შინაარსი და ცდილობს ბიძგი-me გააკრიტიკა დახურეს ერთად მახინჯი გაგზავნა:

უბიძგებს git://gitHost / პროექტის
დისტანციური: შეცდომა: უარის თქმის განახლება გაწერილი ფილიალი: refs / ხელმძღვანელები / master
დისტანციური: შეცდომა: სტანდარტულად, განახლება მიმდინარე ფილიალი არასამთავრობო შიშველი საცავი
დისტანციური: შეცდომა: უარყოფს, იმიტომ, რომ ეს გახდის ინდექსი და სამუშაო ხე შეუსაბამოა
დისტანციური: შეცდომა: რაც თქვენ აიძულა, და დასჭირდება "git გადატვირთვის –მძიმე’ ემთხვევა
დისტანციური: შეცდომა: მუშაობა ხე უხელმძღვანელებს.
დისტანციური: შეცდომა:
დისტანციური: შეცდომა: თქვენ დააჭერთ "receive.denyCurrentBranch’ კონფიგურაციის ცვლადი
დისტანციური: შეცდომა: "იგნორირება’ ან "აფრთხილებენ’ დისტანციური საცავი საშუალებას უბიძგებს შევიდა
დისტანციური: შეცდომა: მისი ამჟამინდელი ფილიალი; თუმცა, ეს არ არის რეკომენდირებული თუ თქვენ
დისტანციური: შეცდომა: მოწყობილი განაახლოს მუშაობა ხე ემთხვევა რას მივიღებთ ზოგიერთ
დისტანციური: შეცდომა: სხვა გზა.
დისტანციური: შეცდომა:
დისტანციური: შეცდომა: იმისათვის, რომ squelch გაგზავნა და მაინც შევინარჩუნოთ default ქცევა, კომპლექტი
დისტანციური: შეცდომა: "receive.denyCurrentBranch’ კონფიგურაციის ცვლადი "უარს".
იმისათვის, რომ git://gitHost / პროექტის
! [დისტანციური უარი] ოსტატი -> ოსტატი (ფილიალი გაკეთებული შემოწმდა)
შეცდომა: ვერ დააყენებს ზოგიერთი refs to 'git://gitHost / პროექტის’

ასე რომ, როგორც ჩანს, ცდილობდა, მეამბოხე ძირითადი ხე და პროექტის პროგრამული თავაზიანად მოჭრილი me. საერთო ჯამში მე არ განზრახვა გავაკეთოთ ზედმეტი ფილიალი, რადგან ხალხი ჩართული პროექტები ნათელი და სხვა მიზეზების გამო. აქ მოდის მომენტი ვთქვა, რომ მე არ განისაზღვრება ძალიან არაკომპეტენტური სათაური, მაგრამ ეს კიდევ ერთი წერტილი. საერთოდ გამოსავალი არის ტრივიალური ამ .git / config პროექტის თქვენ უნდა დაამატოთ შემდეგი დირექტივა:

[receive]
denyCurrentBranch = false

მაშინ ყველაფერი იყოფა ადგილი.

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

Packet Tracer

გამოსახულების მეშვეობით ვიკიპედია

დღეს მე უნდა ნახოთ ერთი სიმულაციური Cisco Packet Tracer მანქანა რომ არ იყო დაყენებული. ზოგადად maloushina არის, რა Cisco არის x86 მანქანები, და ჩემი მანქანა იყო x64. როდესაც თქვენ ცდილობენ დააყენოთ კვდება და მახინჯი გაგზავნა

ცდილობს დააყენოთ ეს პაკეტი ახლა
dpkg: შეცდომა დამუშავება PacketTracer-5.3_3.i386.deb (–დაინსტალირება):
პაკეტი არქიტექტურა (i386) არ ემთხვევა სისტემა (amd64)
შეცდომები იყო შეექმნა ხოლო დამუშავება:
PacketTracer-5.3_3.i386.deb

ზოგადად ყველაფერი, ცხადია, Debian-ევროპული საინსტალაციო პაკეტი არ გინდათ რომ დააყენოთ, რადგან ეს არის სხვადასხვა არქიტექტურა. შემდგომში, პრობლემა ის არის ნათელი dpkg + იძულებული დააყენოთ იქნება შემოვლითი შეცდომები, სხვადასხვა პლატფორმები. ბინ-pean ინსტალერი ფაილი installer უძრავი მხოლოდ extracting არქივი, რომელიც unpacks შევიდა /tmp/selfextract.XXXXX საქაღალდეში, სადაც XXXXX არის თვითნებური string. ეს დირექტორია მდებარეობს .deb file Packet Tracer-. მონტაჟი კეთდება ბრძანება

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

რა თქმა უნდა root პრივილეგიებით.

გაუმჯობესებულია Zemanta