רעדנער: איצט לאָזן ס ונטערטוקנ זיך אין די פאַרשפּרייטונג קאָד און נעמען אַ קוק בייַ די קאָנטעקסט אין וואָס די קאָד איר שרייַבן איז געגאנגען צו זיין אַפּערייטינג. אין די סוף פון די טאָג, איר 'רע געגאנגען צו מאַכשער די ינטייערטי פון די וועב סערווירער. אבער מיר האָבן צוגעשטעלט איר מיט דער סקעלעט קאָד אַז האָבן עטלעכע פאַנגקשאַנאַליטי, דער הויפּט שייַכות צו נעטוואָרקינג. זאל ס נעמען אַ קוק. אזוי אַרויף דאָ צו די שפּיץ פון די טעקע איז אַ בינטל פון שטריך פּרובירן מאַקראָו באדערפענישן. איצט דעם איז נאָר אַ שטריך פון C, ווערביי לויט צו אַ בינטל פון מענטשן בלעטער איר האָבן צו דעפֿינירן עטלעכע פון די קאַנסטאַנץ צו זיין אמת אָדער צו זיין אפילו ספּעציפיש נומערן אַזוי אַז איר האָבן צוטריט צו זיכער פאַנגקשאַנז. אַנדערש זיי וועט זייַן אַנדיקלערד און איר וועט ניט האָבן צוטריט. אזוי איך ווע געטאן דעם דורך וועג פון לייענען די מענטש בלעטער. איצט אַראָפּ אונטן, אין שורות 15 דורך 17, מיר האָבן אַ גאַנץ בינטל פון לימאַץ דערקלערט. און מיר ווע באַראָוד די פון אַ פאָלקס וועב סערווירער גערופן אַפּאַטשי. און די ביסט נאָר נומערן אַז ביסט געגאנגען צו היטל די גאַנץ נומער פון ביטעס אַז ביסט ערלויבט אין פארשיידענע קאַנטעקסץ פֿאַר די הטטפּ בעטן אַז אַ בלעטערער איז ערלויבט צו שיקן מיר. ווייַטער, מיר דעפֿינירן אָקטעץ. איצט אַ אָקטעט איז נאָר אַ פאַנטאַזיע וועג פון געזאגט אַ בייט, אָדער אַכט ביטן. טורנס אויס אין יעסטערייר אַ בייט איז ניט דאַווקע אַכט ביטן, אַזוי אָקטעט איז שטענדיק אַכט ביטן. אזוי אין דעם פאַל מיר ווע אנגענומען וואָס ס פּראָסט אין די נעטוואָרקינג וועלט פון פאַך אַכט ביטעס אַ אָקטעט. דאָ איך ווע ספּעסאַפייד אַז אָקטעץ וועט זיין 512, אַזוי אַז פיל ווי אין פאָרענסיקס ווען מיר לייענען אַ בינטל פון ביטעס בייַ אַ מאָל, דאָ אויך, מיר ניטאָ געגאנגען צו לייענען אַ בינטל פון אָקטעץ בייַ אַ מאָל. ווייַטער אַ גאַנץ בינטל פון קאָפּצעטל טעקעס. ווי האט איך וויסן צו אַרייַננעמען די? נו איך פשוט לייענען די מענטשן בלעטער פֿאַר אַ נומער פון פאַנגקשאַנז אַז מיר וועט נוצן אין דעם פאַרשפּרייטונג קאָד און אַרייַננעמען אין די אָנעס איך איז געווען געלערנט צו. און איצט מיר האָבן אַ דאַטן טיפּ. מיר ווע דערקלערט אַ אָקטעט צו זייַן אַ טשאַר. און מיר וועט זען שפּעטער אַז אַז ס געניצט איבער די קאָד. און מיר ווע דערקלערט אַ גאַנץ בינטל פון פּראָוטאַטייפּס, און מיר וועט גיין געשווינד דורך יעדער פון די פאַנגקשאַנז. לאַסטלי, און טאָמער רובֿ וויכטיק צו האַלטן אין מיינונג בייַ דעם פונט אין די געשיכטע, איז אַז עס זענען, אין פאַקט אַ גאַנץ בינטל פון גלאבאלע וועריאַבאַלז בייַ די שפּיץ פון די טעקע, שורש, קפד, ספד, בעטן, טעקע און גוף. איצט בכלל, ניצן אַזוי פילע גלאבאלע וועריאַבאַלז, אָדער גלאבאלע וועריאַבאַלז בייַ אַלע, איז נישט די צוריק פיר. אבער עס טורנס אויס מיר ניטאָ אויך ניצן אַ טעכניק גערופן סיגנאַל האַנדלינג שפּעטער אין די קאָד, וואָס אַלאַוז אונדז צו דעטעקט ווען די באַניצער היץ עפּעס ווי קטרל C און פאַרמאַכן אַראָפּ די סערווירער גרייספאַלי. און אין סדר צו טאָן אַז גרייספאַלי און פאקטיש פֿרייַ אַרויף זכּרון, מיר דאַרפֿן צו האָבן צוטריט צו די גלאבאלע וועריאַבאַלז. און איצט לאָזן ס נעמען אַ קוק אין הויפּט, וואָס דרייווז די ינטייערטי פון דעם פּראָגראַם. ערשטער, בייַ דער שפּיץ דאָ מיר האָבן אַ טעות נומער בייַטעוודיק אַז אויס ניט צו האָבן אַ טיפּ, אָבער אַז ס ווייַל עס ס אַקטשאַוואַלי דיפיינד אין אַ טעקע גערופן טעות עררנאָ.ה וואָס איז אַרייַנגערעכנט העכער אַרויף. אויב איר טאָן מענטשן עררנאָ צו פאקטיש זען די דעפֿיניציע פֿאַר דעם זאַך, איר וועט זען אַז דעם איז אַ ספּעציעל גלאבאלע בייַטעוודיק אַז איז באַשטימט דורך אַ גאַנץ בינטל פון פאַנגקשאַנז נישט געשריבן דורך אונדז, אָבער דורך די מחברים פון לינוקס און אנדערע סיסטעמען צו פאקטיש שטעלן אַ נומער צו אַז בייַטעוודיק ווען עפּעס גייט אומרעכט אַזוי אַז איר קענען גלאָובאַלי פיגור אויס וואָס האט גיין אומרעכט. איצט אַראָפּ אונטן איר וועט זען אַ נייַ טעכניק טאָמער ניצן געטאָפּט, אַ פונקציאָנירן אַז העלפט פּאַרס באַפֿעל שורה טענות אַזוי אַז מיר טאָן ניט האָבן צו אַרן ווייסטינג צייַט פיגיערינג אויס ווי צו פּאַרס עפּעס ווי 8080, אָדער לאָך פּ, אָדער דאַש ה צו באַקומען הילף. געטאָפּט יסענשאַלי טוט אַז פֿאַר אונדז. זען די מענטש בלאַט פֿאַר מער. ווייַטער, מיר טאָן אַ ביסל פון טעות טשעק צו מאַכן זיכער אַז די פּאָרט נומער איז ין די ספּעסאַפייד קייט אין די ספּעק. ווייַטער, מיר זען אַ רופן צו די פונקציע אָנהייב, וועמענס דעפֿיניציע מיר וועט קוקן בייַ אין אַ מאָמענט, און ווי זייַן נאָמען עס זעט אויס, דעם סטאַרץ די וועב סערווירער. דאָ מיר האָבן אַ רופן צו אַ פונקציע גערופן סיגנאַל וואָס זאגט, אויב און ווען איר הערן קאָנטראָל C פון די באַניצער ס קלאַוויאַטור, גיין פאָרויס און רופן אַ פונקציאָנירן גערופן האַנדלער אַז ס גיי צו לעסאָף ריין זאכן אַרויף און שטעלן די סערווירער. ונטער אַז איז וואָס אויס צו זייַן אַ ינפאַנאַט שלייף, די ערשטער שורה פון וועלכע יפעקטיוולי איז אַ רופן צו אַ פונקציאָנירן גערופן באַשטעטיק, וואָס מיר זיך מאַכשער שפּעטער אויף אין סדר צו פֿרייַ אַרויף עטלעכע פון ​​אונדזער גלאבאלע שטאַטן. נאָך אַז איז אַ שורה פון קאָד אַז קאַנדישנאַלי איז קאָנטראָלירונג די צוריקקומען ווערט פון פארבונדן. איצט פארבונדן קוקט ווי אַ פּרעדיקאַט, עפּעס אַז קערט אמת אָדער פאַלש. און עס טוט, אָבער עס ס עפּעס ספּעציעל אין פארבונדן אין אַז עס ס אַ בוך פון אלע פארשפארטע רופן. עס וועט זיצן דאָרט און וואַרטן ביז אַ באַניצער ס בלעטערער פרוווט צו פאַרבינדן צו דעם וועב סערווירער און בלויז דעמאָלט וועט עס צוריקקומען אמת אָדער פאַלש אַזוי אַז מיר גיינ ווייַטער צו די ין פון דעם אויב סטאַטעמענט. אַמאָל דאָרט, באַמערקן דעם פונקציע צו אַ פונקציאָנירן גערופן פּאַרס, וואָס מיר געשריבן, וואָס פּאַרסעס אַלע פון ​​די אָקטעץ, אַלע פון די ביטעס קומען פון אַ בלעטערער צו די סערווירער, אַזוי אַז מיר קענען האַנט איר צוריק לעסאָף אַ ווערט צו איינער פון יענע גלאבאלע וועריאַבאַלז אַז סטאָרעס אַלע פון ​​די ביטעס אין נאָר די כעדערז פון אַז בעטן, ניט דער גוף אויב עס זענען געווען פאקטיש אַ גוף צו אים. איצט אַראָפּ אונטן מיר אָנהייבן צו פּאַרס די כעדערז צו עקסטראַקט אַ סאַבסעט פון די אינפֿאָרמאַציע אַז מיר זאָרגן וועגן. ספּעסיפיקאַללי, פּער די באַשרייַבונג, מיר ערשטער געוואלט צו בעטן שורה, וואָס איז נאָר אַז זייער ערשטער שורה אַז אַלעווייַ זאגט עפּעס ווי באַקומען צעהאַקן אָדער עטלעכע דרך און דעמאָלט הטטפּ 1.1. מיר ניטאָ ניצן דעם מעטאַפאָר פון אַ נאָדל אין אַ כייסטאַק צו קוקן פֿאַר באַזונדער טשאַרס אָדער ווענדט. און טאַקע, דאָרט ס אַ נומער פון פאַנגקשאַנז אין אונדזער פאַרשפּרייטונג קאָד אַז איר, אויך, זאל געפינען נוציק ווען קוקן פֿאַר באַזונדער וואַלועס. לעסאָף, מיר קאָפּיע די ביטעס אין אַ בייַטעוודיק גערופן שורה, וואָס באַמערקן, אויך, מיר ווע אַלאַקייטיד אויף די אָנלייגן דורך וועג פון אַ דינאַמיקאַללי סייזד מענגע. און מיר רע דיליבראַטלי טרייינג צו ויסמייַדן פאַך מאַללאָק ווייַל ווידער, ווייַל פון קאָנטראָל C זייַענדיק אַ פּאָטענציעל שטריך פון דעם פּראָגראַם, מיר טאָן ניט ווילן צו האָבן דעם קאָד פּלוצלינג ינטעראַפּטיד דורך די באַניצער היטטינג קאָנטראָל C, די רעזולטאַט פון וואָס איז אַז איך זאל נישט האָבן אַ געלעגנהייַט פֿאַר פֿרייַ עפּעס איך ווע מאַללאָסעד. אזוי איך בין טריינג צו נוצן ווי פיל פון די אָנלייגן איז איך קענען דאָ. ווייַטער אַרויף, אַ גאַנץ בינטל פון צו דאס. די באַשרייַבונג וועט עקספּאָונד אויף פּונקט וואָס ס דערוואַרט דאָ, אָבער די באַמערקונגען געבן איר אַ אָנצוהערעניש פון וואָס ליגט פאָרויס. איר ערשטער דאַרפֿן צו וואַלאַדייט די בעטן שורה און מאַכן זיכער אַז עס קוקט ווי דעם ספּעסאַפאַקיישאַנז גראַמאַטיק, אַזוי צו רעדן, זאגט עס זאָל. איר דעמאָלט דאַרפֿן צו עקסטראַקט עפּעס גערופן די אָנפֿרעג, די שטאָפּן אויס נאָך אַ קשיא צייכן, ווי מיר האבן געזען מיט אונדזער Google בייַשפּיל אין גייט פארביי אין אַ הד פּאַראַמעטער. מיר דעמאָלט קאַנקאַטאַנייט צוזאַמען די שורש פון די וועב סערווירער מיט די דרך אַז ס אין אַז בעטן ערשטער שורה און פאָרעם די פול דרך פון די טעקע מיר ווילן צו קוקן פֿאַר. דערנאָכדעם, מיר רע געגאנגען צו מאַכן זיכער אַז דער טעקע יגזיסס און איז ליינעוודיק. און דעמאָלט מיר רע געגאנגען צו עקסטראַקט זייַן טעקע געשפּרייט, די .הטמל אָדער די .פפּ, אָדער עטלעכע אַזאַ געשפּרייט אַז ס בייַ די זייער סוף פון די שטריקל האט פארלאנגט. ווייַטער אַרויף איז אַ גאַנץ בינטל פון קאָד מיר געשריבן צו פאקטיש דזשענערייט פפּ דזשענערייטאַד צופרידן פֿאַר איר. אין אַ נאַטשעל, דעם קאָד נעמט אין די נאָמען פון די טעקע איר ווילן פפּ צו טייַטשן. מיר פאָרן עס דורך עפּעס גערופן אַ רער אין פפּ ס יבערזעצער. באַקומען צוריק דעם ענטפער ווי כאָטש די ענטפער געווען אַ טעקע זיך. און דעמאָלט מיר יטעראַטע איבער אַז טעקע ס ביטעס, פּולינג זיי אַלע אין איין באַפער אַזוי אַז מיר קענען לעסאָף דרוק זיי אויס. טאקע, אַלע פון ​​די רופט דאָ צו דפּרינטף אַלאַוז אונדז צו דרוקן עפּעס גערופן אַ טעקע דעסקריפּטאָר, וואָס איז נאָר אַ ינטעגער אַז רעפּראַזענץ אַ טעקע. זייער ענלעך אין גייסט, אָבער פאַנדאַמענטאַלי אַנדערש פון אַ טעקע שטערן טייַטל. נאָטיץ ווי איר קענען נוצן סינטאַקס ווי פּרינטף דאָ אַזוי אַז איך קענען דינאַמיקאַללי אַרייַנלייגן עפּעס ווי די לענג פֿאַר די ווערט פון אַ הטטפּ קאָפּצעטל גערופן אינהאַלט-לענגטה. און לעסאָף איך געניצט די פונקציאָנירן רעכט צו פאקטיש שרייַבן די גוף צו די בעטן. צום באַדויערן, מיר נאָר ימפּלאַמענטאַד שטיצן פֿאַר דינאַמיקאַללי דזשענערייטאַד פפּ טעקעס. מיר האבן ניט מאַכשער שטיצן פֿאַר סטאַטיק טעקעס ווי גיפס, און דזשפּעגס, און קסס און HTML טעקעס. אַז, ליידער, איז לינקס צו איר צו ריספּאַנד צו די קליענט ציל דעם צו טאָן. אזוי אין עס איר וועט געפינען אַז עס ס ניט פיל ינספּיראַציע ין אַז בלאָק, אָבער אויב איר אַ ביסל העכער אַרויף אין ווי מיר זענען וועגן ינטערפּרעטינג פפּ קאָד, די פאַנגקשאַנז איר וועט נוצן ביסט אַ ביסל אַנדערש. אין פאַקט, איר קענען באָרגן עטלעכע פון ​​די פאַנגקשאַנאַליטי טאָמער פון די פאָרענסיקס פּראָבלעם שטעלן, ווייַל בייַ די סוף פון די טאָג אַלע איר דאַרפֿן צו טאָן דאָ איז אַמאָל איר וויסן וואָס טעקע עפענען און אַמאָל איר וויסן עס ס אַזוי-גערופן MIME טיפּ אָדער צופרידן טיפּ, איר דאַרפֿן צו לייענען אין די ביטעס און עפעס שפּייַען זיי צוריק אויס. און איצט אַ רייַזע פון ​​דעם טעקע ס אנדערע פאַנגקשאַנז. אַרויף ערשטער איז פארבונדן, וואָס פשוט קערט אמת ווען עס לעסאָף הערט אַ קשר פון אַ באַניצער. ווייַטער אַרויף איז טעות. טעות, דערווייַל, ווי אַ פונקציאָנירן מיר געשריבן צו שעפּן אַלע פון ​​די פאַרשידענע 400 און 500 הטטפּ סטאַטוס קאָודז אַז איר זאל וועלן צו שיקן צוריק צו דער באַניצער, צוזאמען מיט אַ נאָרמאַל אָנזאָג. ווייַטער אַרויף איז מאַסע, אַ דער הויפּט מיטי פונקציאָנירן, וועמענס ציל אין לעבן איז צו לייענען פון אַ טעקע שטערן טייַטל די אינהאַלט פון אַ טעקע אין אַ גלאבאלע באַפער אַז מיר דערקלערט גלאָובאַלי אויבן [? הויפּט. ?] דאס איז אַ ביסל קאָמפּליצירט ווייַל מיר האָבן צו לייענען די ביטעס פון די טעקע אָבער טשעק אויף יעדער יטעראַטיאָן צי מיר ווע שוין שלאָגן די סוף פון די טעקע אָדער עפּעס אַנדערש האט ניטאָ אומרעכט. און מיר נוצן רעאַללאָק צו מאַכן זיכער אַז וועלכער באַפער מיר רע ניצן איז גראָוינג און גראָוינג און גראָוינג און שטענדיק סטייינג פאָרויס פון די נומער פון ביטעס אַז מיר דאַרפֿן צו פּאַסיק אין דאָרט. האַנדלער, דערווייַל, איז די פונקציע וואס געץ גערופן דורך וועג פון בעת רעגיסטרירט קאָנטראָל C ווי אַ סיגנאַל אַז מיר וועלן צו ינערסעפּט. נאָטיץ דאָ אין האַנדלער אַז עס לעסאָף רופט האַלטן, וואָס פון קורס סטאַפּס די וועב סערווירער. און ליידער, לוקאַפּ איז ניט ימפּלאַמענטאַד. אין גייסט, דעם איז אַ פערלי פּשוט פאַנגקשאַנז. געגעבן אַ טעקע געשפּרייט, עס דאַרף צו צוריקקומען עס ס אַזוי-גערופן MIME טיפּ אָדער צופרידן טיפּ. און מיר ספּעציפיצירן אין דער באַשרייַבונג וואָס אַז מאַפּינג מוזן זיין. אבער איר דאַרפֿן צו איבערזעצן עס לעסאָף צו C קאָד. ווייַטער אַרויף איז אונדזער סימאַלערלי מיטי פונקציאָנירן גערופן פּאַרס, וועמענס ציל אין לעבן איז צו לייענען, נישט פון אַ טעקע, אָבער פון אַ נעץ קשר. ספּעסיפיקאַללי, לייענען און אונטערשייד דער הטטפּ בעטן אַז ס קומען פון אַ בלעטערער צו די סערווירער אַזוי אַז לעסאָף מיר קענען פּאַרס בייַ נאָר די כעדערז אין דער בקשה שורה און קריק יענע צו איר דורך וועג פון אַ גלאבאלע באַפער אַז מיר דערקלערט אויבן [? הויפּט. ?] באַשטעטיק, דערווייַל, איז אַ פונקציאָנירן אַז מיר דעפֿינירן אַז געץ גערופן יטעראַטיוועלי ין פון הויפּט יעדער צייַט איר ניטאָ וועגן גרייט צו אָנהייבן צוגעהערט פֿאַר אַ נייַ קשר אַזוי אַז מיר שטענדיק וויסן די שטאַט פון אונדזער וועריאַבאַלז און אַזוי אַז מיר ווע אויך באפרייט קיין זיקאָרן אַז זאל האָבן געווען אַלאַקייטיד פֿאַר אַ פרייַערדיק נעץ קשר. ווייַטער אַרויף איז אָנהייב, די פונקציאָנירן אַז מיר געשריבן אַז כּולל אַ גאַנץ פּלאַץ פון נעטוואָרקינג קאָד אַז לעסאָף סטאַרץ די וועב סערווירער. לעצטע אַרויף איז די פונקציע גערופן האַלטן, וואָס טוט פּונקט אַז, עס סטאַפּס די וועב סערווירער. אבער ערשטער עס פריז אַרויף קיין זכּרון אַז נאָך האט שוין אַלאַקייטיד. אבער עס לעסאָף רופט אַרויסגאַנג אָן אַפֿילו אומגעקערט קאָנטראָל צו אונדזער הויפּט פֿונקציע. לעסאָף, איינער פון די רובֿ וויכטיק טעקניקס ווען ימפּלאַמענינג דעם וועב סערווירער איז געגאנגען צו זייַן אַ ביסל פון פּראָצעס און טעות, בעת איין בלעטערער פֿענצטער עפענען בייַ רעכט און אַ וואָקזאַל פֿענצטער אין לינקס, די סערווערס קאַנסאָול פֿענצטער, אַזוי אַז איר קענען זען די אַרטיקלען וואָס זענען זייַענדיק געוויזן אויף די פאַרשטעלן. אבער בעסער נאָך וואָלט זייַן א דריט פֿענצטער, אַ רגע וואָקזאַל פֿענצטער, אין וואָס איר נוצן טעלנעט, די באַניץ פֿאַר וואָס איז פּריסקרייבד אין די ספּעק. און טעלנעט איז נאָר אַ זייער פּשוט נעץ פּראָגראַם אַז לעץ איר צו פאַרהיטן צו זייַן אַ בלעטערער אין איין פֿענצטער בשעת גערעדט צו די אנדערע פֿענצטער. דאס וועג איר קענען זען פּונקט די טעקסטשאַוואַל קאַמאַנדז אַז ביסט קומען צוריק פון סערווירער צו קליענט אָן בעת ​​צו פּאָקינג אַרום קראָום ס דעוועלאָפּער מכשירים אין אַ אַנדערש קלונקיער צובינד.