Vector logo of the PHP programming language wi...

I dag har jeg truffet en lett å lese for php cache den html. Her snakker vi om caching utgangen av koden vår ikke som jeg skrev cache til skritpovete opcode nivå med eAccelerator. Så hva handler om – La oss minne oss selv på raske arbeidet med php-it. Forespurt for en web server-a ни той приема параметрите който подаваме след това той ги подава на php скрипта той се компилира и плюе резултат в html вариант. Това е в доста общи линии. Hva vil være vår idé her hoppe forespørsler, hopper over store blokker eller ikke så stor som blokker malt direkte når allerede utarbeidet utgangs. Преимуществата са очевиднинамаляна на времето за изпълнение, по малко натоварване и потребление на ресурси. Като цяло не е откриване на топлата вода нито е нещо кой знае колко сложно. Det er mange klasser for dette formålet PHP Pære Cache_Lite som har en fin funksjon, men jeg tror i fremtiden for å skrive med min mye mer strømlinjeformet struktur og mine sine krav til caching. Сега ще разгледаме най аборигенския вариант с 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();

Горния код е тривиален но нека да обясним какво стана. Първо декларираме от коя част в кода започва кеширането. След това си генерираме по стандартен начин изхода от кода. Da den genererte utgang blir den variabelen som vil være tilgjengelig senere i denne filen eller i noen økter det er din avgjørelse. Til slutt ryddet og avslutte caching. Ganske hverdagslig handling for å si geenriraneto cache går gjennom store blokker av kode, slik at vi kan spare mye CPU tid som en buffer for en stund eller for en enkelt økt. Вече всичко опира то това какво искате дали да е общодостъпен кеша или да е достъпен за различен потребител.

Forbedret lenker:

Følgende artikkel kan være høydepunktet av dumhet, men som jeg alltid sier jeg er en bedre Admin enn koder. I går, mens draŝeh AJAX script og måtte sende noen data som jeg bruker for deres hash-validering fordi skriptet deler ikke $ _ økt matrisen og ting blir litt usikker. Hvorfor eller følgende rotet alle pameri innsendt av INNLEGGET gjøre dem få en md5-hash konkateriranite parametere og så sammenligne den. Samlet ikke en dårlig ordningen jeg tror. Heširaŝi algoritmer for dette formålet bolle MD5 , SHA, Beskrivelse og så videre. Her er klar å si, Det bruker parameterne MD5 hash (som gjør faktiske). vi har 3 parameteren som brukes i få jeg = 1 n = 2 m = 3 og si hešriane streng 123 Hva gjør oss følgende MD5 hash 202cb962ac59075b964b07152d234b70. Ingenting her som vet hva interessant. Denne hash vil falle i noen sekunder i ethvert angrep. Her er enkel salt og pepper min idé. La oss si jeg ta det første og siste tegnet i streng og bytte sine plasser på denne måten gir en 002cb962ac59075b964b07152d234b72 hash hvis noen allerede hvis jeg ikke hadde lest koden oss hva idioti gjør dårlig hacking forsøk. Ekte hash er et annet og med å være izsnifen er helt ubrukelig. Men hvorfor stoppe her, vi kan dele hash-koden for flere blokker, i dette tilfellet er MD5 32 Hvis symbolet er delt inn i 4 blokker 8 og deres trekk blir enda mer ubehagelig posisjon. Далеч най приятния ефект е, че визуално си е стандартен 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

Hvis du vil flytte et prosjekt der programmet aktive uten kontroll over versjoner i dag er gal. Vanligvis er det flere alternativer bazaar , mercurial , git , svn . Så her hvis du forventer å forklare hvilke versjonskontroll er bedre og hvorfor ikke vil det være. I USA bruker vi git. Forårsake mye – enkelt å sette opp, Det er veldig allsidig, Den ble skrevet av Linus Torvalds Linux Kernel versjon å tjene, sistnevnte er minst 2 grunner 😉 . I dag måtte jeg oppretter en ny repository, Jeg startet et nytt prosjekt. Faktisk har jeg laget noen repositories og det lenge siden når vi trengte det og jeg glemte det tynne på denne Momento. Opprette flere fillageret for første hit store alt gikk akkurat. Innstillingen selv var 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

I utgangspunktet er ingenting galt. Så jeg bestemte meg å teste fra en ekstern maskin til å bevare innholdet og prøver å presse-med min stygg melding dukker:

Skyve til git://gitHost/prosjekt
ekstern: feil: nekter å oppdatere utsjekket gren: refs/hoder/master
ekstern: feil: Som standard, oppdatere gjeldende gren i et ikke-nakne register
ekstern: feil: nektes, fordi det vil gjøre indeks og arbeid treet inkonsekvent
ekstern: feil: med hva du presset, og krever ‘ git tilbakestille –vanskelig’ å matche
ekstern: feil: arbeid treet til hodet.
ekstern: feil:
ekstern: feil: Du kan angi ‘ receive.denyCurrentBranch’ konfigurasjon variabelen til
ekstern: feil: ‘ Ignorer’ eller ‘ advare’ i eksterne depotet tillate skyve i
ekstern: feil: den gjeldende grenen.; men, Dette anbefales ikke med mindre du
ekstern: feil: arrangert for å oppdatere den arbeid treet å matche hva du presset i noen
ekstern: feil: annen måte.
ekstern: feil:
ekstern: feil: Å squelch denne meldingen og fortsatt beholde uteblivelsen opptreden, Sett
ekstern: feil: ‘ receive.denyCurrentBranch’ konfigurasjon variabelen til ‘ nekter ’.
Til git://gitHost/prosjekt
! [Fjern avvist] Master-> Master (grenen er sjekket ut)
feil: klarte ikke å presse noen refs til ‘ git://gitHost/prosjekt’

Så åpenbart jeg prøver å komitvam i viktigste treet av prosjektet og programvaren kuttet høflig meg. Alt har jeg ingen hensikt å lage ekstra gren fordi folk involvert i prosjektene er klart og en rekke andre grunner. Тука идва момента да отбележа че съм дефинирал много некадърно заглавието но това е друг момент. Като цяло решението на проблема е тривиално в .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 (–installere):
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 права.

Forbedret lenker: