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

הכתבה הבאה עשויה להיות בראש טיפשות אבל כמו שאני תמיד אומר שאני יותר טוב מנהל מקודד. אתמול בעודי לגרד כמה תסריט AJAX ונאלץ לשלוח אימות נתונים פחות כי החשיש שלהם בשימוש בגלל התסריט אינו שותף מערך _SESSION $ והדברים להיות מעט לא בטוחים. אז לעשות את לגיהנום הבאים כל pameri המוגשות POST או GET לעשות אותם אחד הפרמטרים konkateriranite חשיש MD5 ואז אני משווה את זה. בסך הכל לא הייתי ערכה רעה. Hashing אלגוריתמי כדור למטרה זו MD5 , SHA, DESC ואחרים. דברים כה ברורים לומר, שישתמש פרמטרי hashing MD5 (ותוך deytvitelnost). יש לנו 3 פרמטר אשר מוזן דרך GET i = 1 n = 2 m = 3 ולומר המחרוזת של heshriane היא 123 עושה לנו את 202cb962ac59075b964b07152d234b70 חשיש MD5 הבא. עד כה שום דבר הרבה מעניין. חשיש זה ייפול במשך כמה שניות בכל התקפה. כאן מגיע מלח ופלפל על רעיון פשוט שלי. נניח אני לוקח את התו הראשון והאחרון של המחרוזת, והחלפת המקומות ובכך מקבלת 002cb962ac59075b964b07152d234b72 חשיש כבר אם מישהו אם לא קראת טמטום הקוד שלנו הוא מה שעושה דברים להיות קשוחים כאשר מנסים פריצה. חשיש אמיתי הוא אחר ואפילו להיות 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

כדי להעביר פרויקט אשר מתוכנתים באופן פעיל בלי בקרת גרסאות בימינו הוא טירוף מוחלט. בזאר בדרך כלל יש אפשרויות רבות , כַּספִּיתִי , 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 / פרויקט
מְרוּחָק: שְׁגִיאָה: בסרבו לעדכן בדק סניף: שופטים / ראשים / אמן
מְרוּחָק: שְׁגִיאָה: כברירת מחדל, עדכון הסניף הנוכחי במאגר שאינו חשוף
מְרוּחָק: שְׁגִיאָה: נדחה, כי זה יגרום לעץ המדד ולעבוד עולה בקנה אחד
מְרוּחָק: שְׁגִיאָה: עם מה אתה נדחפת, וידרוש 'git איפוס –קָשֶׁה’ להתאים
מְרוּחָק: שְׁגִיאָה: עץ העבודה לעמוד בראש.
מְרוּחָק: שְׁגִיאָה:
מְרוּחָק: שְׁגִיאָה: ניתן להגדיר 'receive.denyCurrentBranch’ תצורה משתנה
מְרוּחָק: שְׁגִיאָה: 'להתעלם’ או 'להזהיר’ במאגר מרחוק כדי לאפשר דוחפים לתוך
מְרוּחָק: שְׁגִיאָה: הסניף הנוכחי שלה; למרות זאת, זו אינה מומלצת אלא אם
מְרוּחָק: שְׁגִיאָה: מסודר לעדכן עץ עבודתה כדי להתאים את מה שאתה דחפת בחלק
מְרוּחָק: שְׁגִיאָה: דרך אחרת.
מְרוּחָק: שְׁגִיאָה:
מְרוּחָק: שְׁגִיאָה: כדי להשתיק את המסר הזה ועדיין לשמור על התנהגות ברירת המחדל, מַעֲרֶכֶת
מְרוּחָק: שְׁגִיאָה: 'receive.denyCurrentBranch’ תצורת משתנה 'לסרב'.
כדי git://gitHost / פרויקט
! [דחה מרחוק] אב -> לִשְׁלוֹט (הסניף בימים אלה בדק)
שְׁגִיאָה: לא לדחוף כמה שופטים ל 'git://gitHost / פרויקט’

אז כנראה מנסה למרוד בעץ הראשי של פרויקט התוכנה בנימוס חתך אותי. בסך הכל אין לי שום כוונה לעשות סניף נוסף בגלל האנשים המעורבים בפרויקטים יש ברורות וסיבות אחרות. Тука идва момента да отбележа че съм дефинирал много некадърно заглавието но това е друг момент. Като цяло решението на проблема е тривиално в .git/config на проекта ви трябва да добавите следната директива:

[receive]
denyCurrentBranch = false

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

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

Packet Tracer

התמונה באמצעות ויקיפדיה

היום הייתי חייב להפגין סימולציה סיסקו מנה מעקב דרך מכונה על אשר לא הותקן. באופן כללי, maloumŝinata היא, זה הסימולטור של Cisco עבור x86 מכונות והיה לי המכונה x64. כאשר אתה מנסה להתקין מת עם ההודעה מכוער

מנסה להתקין את חבילת עכשיו
dpkg: שגיאה בעת עיבוד PacketTracer-5.3_3.i386.deb (–להתקין):
חבילת אדריכלות (i386) אינה תואמת מערכת (amd64)
אירעו שגיאות בעת עיבוד:
PacketTracer-5.3_3.i386.deb

כמעט הכל ברור חבילת דביאן-pean רוצה להתקין כי זה עבור ארכיטקטורת שונים. מ כאן והלאה זה dpkg הבעיה ברורה + forsirano להתקין את השגיאה שלעקוף עבור פלטפורמה שונה. סל-pean מתקין קובץ יש רק razarhiviraŝ את הארכיון המבטלת לתוך/tmp/selfextract. התיקיה שבהם כאשר xxxxx כאשר XXXXX כל מחרוזת. בספריה זו ממוקמים. דב קובץ מנה מעקב-a. ההתקנה נעשית באמצעות הפקודה

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

באופן טבעי עם הרשאות root.

משופר על ידי Zemanta