עידן ה–SSL

לאחרונה נודע לי על חברה (דווקא ישראלית) שמנפיקה אישורי הצפנה (signed certificates) בחינם עבור שימוש לא מסחרי. מדובר באישורים הזולים ביותר (רק שם המתחם חתום, לא זהות המפעיל), אבל זה מספיק בשביל לקבל התחברויות ללא אזהרות מעצבנות. לאור עידן post Snowden, אני חושב שזה ראוי.

לאור זאת, אני גאה להכריז שהבלוג שלי עכשיו זמין גם בכתובת https://blog.shemesh.biz! יפי!

עכשיו לבעיות…
להמשיך לקרוא עידן ה–SSL

כמעט 4 שנים לפתרון באג

במאי 2009 ביצעתי שינוי בצורה שבה fakeroot-ng תופס תהליכים חדשים שנוצרים. במקום להסתמך על מנגנון מובנה של מערכת ptrace, שלא עבד בצורה אמינה על קרנלים של redhat שהשתמשו ב–utrace, החלפתי את המנגנון למשהו שהועתק, כמעט במדויק, מ–strace. בגדול, מחליפים את הפרמטרים לפקודה clone כך שאומרים לה שהדיבאגר של האבא הוא גם הדיבאגר של הבן.

וזה עבד מצויין, חוץ מאשר ב–threads. משום מה, זה לא עבד עליהם. הם פשוט לא היו מתחילים לרוץ.
להמשיך לקרוא כמעט 4 שנים לפתרון באג

מדור פניות הציבור: C++‎ או C++?

תאמינו או לא, על אף השקט המחפיר (שעליו אני מתנצל) ששׂרר פה לאחרונה, קיבלתי שאלה מ„ציבור הקוראים”. בוא נכנה את השואל בשם הקוד „אמיר”, כי זה איך שהוא חתם על ה–SMS.

כן, קיבלתי שאלה ב–SMS…

שלום שחר, שמי אמיר- איך עשית את הסי פלוס פלוס בכיוון הנכון בעמוד האודות בבלוגך? לא ראיתי מארקאפ מיוחד בקוד

תשובה קצרה – וואו! יש לי עמוד „אודות” בבלוג! שכחתי לגמרי מקיומו! אולי הגיע הזמן לעדכן אותו, עכשיו שלינגנו מתה? נו, זה לא היה כזה כואב, נכון? ולשאלתך – שמתי LRM אחרי שני הפלוסים.
להמשיך לקרוא מדור פניות הציבור: C++‎ או C++?

הערות שיש לי על אלגוריתם ה-BiDi של Unicode

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

כחלק מהעבודה שלי על bidiedit החלטתי שלא להשתמש בספריות מוכנות למימוש ה-Unicode BiDi Algorithm (להלן UBA), אלא לממש אותו בעצמי. אני מאוד שמח שכך עשיתי, מכיוון שיצא לי להכיר אותו כפי שעוד לא יצא לי להכיר אותו בעבר. כתוצאה מכך, אני חושב שיש בו מקום לשיפור. אני מתאר את הרעיונות שלי פה, למרות שהם מאוד לא בשלים, מתוך תקווה לקבל תגובות מאנשים שמכירים את האלגוריתם ויש להם משהו אינטיליגנטי להוסיף. למרבה הצער, לא מצאתי רשימות תפוצה פתוחות לציבור הרחב באתר של Unicode. אם מישהו מכיר, אנא תנו לי הפניה.
להמשיך לקרוא הערות שיש לי על אלגוריתם ה-BiDi של Unicode

אינטרנט אקספלורר !@#!!@%(

לפני כמה ימים גיליתי עד כמה אני טירון ביצירת אתרים. האתר של "אין למי להצביע" הוא שני עמודים מאוד פשוטים, מבוסס על קוד CSS ו-Javascript מאוד בסיסי. לאור זאת, הרשיתי לעצמי ללמוד את הנושא מתוך התקנים של W3C ולבדוק אותו על הדפדפן המקומי שלי (Firefox), וזהו. כמו שאמרתי, טירון.
להמשיך לקרוא אינטרנט אקספלורר !@#!!@%(

בחלונות לא מבדילים בין פעולה לא חוסמת לפעולה אסינכרונית

כן, עוד פוסט טכני.

כאשר מבצעים פעולות קבצים/sockets ביוניקס, נהוג להבדיל בין מספר סוגי פעולות. השאלה הראשונה שיש לשאול היא "האם הפעולה חוסמת" (blocking). פעולה חוסמת היא פעולה שלא חוזרת עד שהפעולה הושלמה. לצורך הדוגמא, דמיינו את המצב הבא. אנחנו מבקשים לכתוב לחיבור TCP/IP, מה שדורש שחלק מה-buffer שלנו ייכתב לחיבור. הבעיה היא שהצד השני של התקשורת מגיב לאט, מה שאומר שמידע קודם שכתבנו עוד לא קיבל אישור מהצד השני, והוא ממתין בצד שלנו. במצב כזה עלול להיות מצב שבו אין לשכבת ה-TCP/IP שלנו מקום לנתונים הנוספים שאנחנו מנסים לכתוב. אם אנחנו משתמשים בפעולה חוסמת מה שיקרה בשלב הזה זה שהתוכנית שלנו תמתין עד שהצד השני ייאשר קצת נתונים קודמים, מה שיפנה חוצצים, מה שיאפשר לקבל את הנתונים החדשים שאנחנו מנסים לכתוב ולשחרר את פעולת הכתיבה שלנו. אנחנו חסומים מלהמשיך בביצוע התוכנית עד שהמידע (לפחות חלקו) מתקבל.
להמשיך לקרוא בחלונות לא מבדילים בין פעולה לא חוסמת לפעולה אסינכרונית

מדריך – איך להגדיר כרטיסי רשת חיצוניים על VirtualBox

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

התקנה של OpenBSD

נתחיל ברקע. לפני מספר שבועות פתחתי פרוייקט קוד פתוח חדש (כן, עוד אחד). שמו הוא fakeroot-ng, ואפשר לראות אותו ב-sourceforge.

הפרוייקט משתמש בטכנולוגיה שנקראת "ptrace". אחת הבעיות הידועות של הטכנולוגיה הזו היא שהיא מאוד מאוד תלויית פלטפורמה. בפרט, יש לי בעיה. לינוקס החליט, באמצעות הרחבות פרטיות, לספק ממשק שהוא נוח יותר למתכנת מאשר הממשק שמוגדרת בתקן של Posix. זה משאיר אותי בבעיה לגבי מערכת לפיתוח שעליה אני יכול לבדוק worst case. כדי להתגבר על הבעיה הזו החלטתי להתקין OpenBSD בתוך מכונה וירטואלית (אני משתמש ב-VirtualBox).

אני יכול לסכם את חווית ההתקנה במילה אחת: מזעזעת
להמשיך לקרוא התקנה של OpenBSD

על חשיבות destructors (חלק א'?)

אני תמיד פותח באזהרה. דבר ראשון – זהו פוסט מאוד מחשביסטי 🙂

פוסט זה בא בעקבות דיון שהתפתח בתגובות על פוסט קודם. החלטתי שאחד משני דברים קרו. או שאני לא הבנתי חלק מהמגיבים לגבי יכולות שדוט נט/ג'אווה נותנים, או שהם לא הבינו אותי לגבי החשיבות של הדברים.
עדכון – זה היה הראשון. לא יהיה חלק ב'
להמשיך לקרוא על חשיבות destructors (חלק א'?)

באגים, ויסטה ומיקרוסופט

הפוסט הזה בא בעיקר בעקבות הבאג האחרון בויסטה. העתקת כמות גדולה של קבצים (מעל 16,000) כאשר מותקן אנטי וירוס של קספרסקי גורמת לאכילת כל הזכרון הפנוי במערכת. הבאג קורה גם אם הקבצים מועתקים בשלבים (כלומר, לא כל ה-16,000 בבת אחת), וקורה בתנאים מסויימים גם בלי האנטי וירוס. הבאג קשור בצורה כלשהי ב-OLE ונובע מזליגת זכרון (סלאשדוט, הכתבה המקורית והתיקון ממיקרוסופט).

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