איך hash tables עובדים, או יותר מסקרן: למה הם לא תמיד O(1) בהכנסה, הוצאה ומחיקה?

המימוש הכי בסיסי של hash table הוא מערך פשוט, עם אינדקס והערך המיוחל שאנחנו רוצים לשמור ו\או לשלוף…ב-O1. אבל בשביל להשיג O1 אנחנו צריכים את האינדקס שבו שמור הערך שלנו. מכיוון שאיננו מקבלים את האינדקס (ומה הטעם?), אז למעשה אנחנו לא יכולים להגיע ל O1.

מה הם המספרים הרנדומלים, והאם אפשר לייצר מספרים רנדומלים אמיתיים?

נניח ואתם רוצים לבנות משחק, ואתם צריכים אלמנט של רנדומליות. קרוב לוודאי שתשתמשו במחלקת random שיש לכל השפות, נכון? וקרוב לוודאי שתשכחו מעבר לזה, כי המחלקה הזאת דיי תסדר אתכם. המחלקה random מייצרת לנו רצף מספרים שנקראים psuedorandom, כלומר: רצף מספרים הנוצרים דרך אלגוריתם ידוע שאפשר לשחזר בדיעבד שוב.

למה צריך לבחור לפעמים את האלגוריתם הנכון בעת השוואת מחרוזות

אם אנחנו רוצים להשוואת האם שתי מחרוזות הן תואמות, יש לנו דרך מאוד קלה: להשתמש בפונקציית equal שיש לכל שפה. האלגוריתם פשוט, והוא עובר על כל תו ומוודא שהתווים שווים בכל המקומות. עוד לפני כן האלגוריתם מוודא ששתי המחרוזות שוות אורך כי אחרת לא צריך לבצע בדיקה נוספת.

על TLS ו-SSL

אנחנו נתקלים לא מעט במונחים TLS ו-SSL במיוחד בהקשר של HTTPS. אבל מה הם ומה ההבדל ביניהם בדיוק? קודם כל, TLS (או Transport Layer Security) ו-SSL (או Secure Socket Layers) הם אותו הדבר. בערך. שניהם פרוטוקלי קריפטוגרפיה להצפנת והעברת מידע באופן מאובטח על גבי הרשת.

איך TCP עובד?

פרוטוקול ה-TCP הוא אחת השכבות בפרוטוקול האינטרנט (IP) וכולנו משתמשים בו על בסיס יומי. הפרוטוקול מאפשר לנו ליצור ולתחזק תקשורת בין מחשבים שונים באינטרנט, או במילים אחרות אחראי על התעבורה. יש שלושה שלבים לפרוטוקול ה-TCP: הקמת הקשר (session starting). תעבורת מידע (data transmission).

למה משתמשים בהקסדצימל?

השפה שהמכונה אליה אנחנו מדברים מדברת בבינארי כמובן, כלומר אם למכונה היה ילדון שהיא רצתה ללמד לספור עד עשר, היא לא תוכל להשתמש ב10 ספרות (אצבעות) כמונו. היא תיאלץ להשתמש בשתי ספרות: 0 ו-1. אנחנו בני האדם סופרים בבסיס של 10 ספרות, ואילו מחשבים בבסיס של 2 ספרות.

מה הן פונקציות אנונימיות ואיך הן השתלטו לנו על החיים?

פונקציה אנונימית טיפוסית נראית בסגנון של x+1 <= (x) ומציינת פונקציה שמקבלת ערך כלשהוא, מוסיפה לו 1, ומחזירה אותו. בסינטקס הזה אין לה שם, ואנחנו מוותרים על המילים return, function וברוב השפות גם על הטייפים של המשתנים. אנחנו בעצם מפשיטים פונקציה עד שמגיעים אל לוגיקה זריזה וקטנה, שאפשר לכתוב מהר עם מינימום חזרה על קוד וסינטקס ככל הניתן (מי יודע, אולי נוותר בעתיד גם על הסוגריים).

דרכים לנהל שגיאות ואקספשנס

בעולם אוטופי, כל פונקציה שנקרא לה תניב לנו את המידע שאנחנו צריכים, ולא תעצור את הflow של הקוד. אבל אנחנו לא בעולם אוטופי, וכל פונקציה שנקרא לה טומנת בתוכה את הפוטנציאל להשתבש ולחשב לנו את המסלול מחדש. והאמת היא, שלהקריס תוכנה זה כנראה יותר קל מלקחת סוכריה מתינוק, אז מן הראוי שerror & exception handling תהיה המומחיות הכי קריטית בלשמור על התוכנה…עובדת.

איך דיסקים קשיחים עובדים?

מהדיסק הקשיח הראשון שפותח אי שם ב-1956 על ידי IBM והחזיק בשטח אחסון של 5MB ועד הקשיחים המודרניים שמחזיקים עשרות טרהבייטים (Terabytes) של מידע עברנו דרך ארוכה. אבל איך בדיוק אנחנו מאחסנים כל כך הרבה מידע על חתיכת מתכת בגודל של 3.5 אינץ’ (קצת פחות מ-9 ס"מ)?

איך טורנטים עובדים?

פרוטקול ה-BitTorrent הוא אחד הפרוטוקולים הכי מוצלחים ונפוצים בכל מה שקשור לשיתוף קבצים. הוא מאפשר הורדות מהירות באופן מבוזר (decenteralized) וגם נוטל חלק בלא מעט סקנדלים סביב זכויות יוצרים. אבל איך הוא עובד? החלק הכי משמעותי ב-BitTorrent הוא שמדובר ברשת מחשבים מבוזרת, כלומר בלי שרת מרכזי.