הבלוג של ארתיום
בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!
CppCMS פוגש Comet
פרסמתי כאן כתבה על טכנולוגיית Comet (או Server Push) הנתמכת בגרסה הבאה של CppCMS.
הצגתי כדוגמה קלאסית: מימוש של יישום Chat, בצד הלקוח ובצד השרת, בכ־50 שורות קוד בכל אחד מהם, עם שימוש ב־XHR Long Polling.
חדשות CppCMS...
לאחרונה אני עובד בענף ה־refactoring של CppCMS ומבצע שינויים גדולים. אביא כאן סקירה קצרה של השינוי שכבר נמצאות בגרסה ניסיונית:
אחד השינויים הגדולים והחשובים זה להיפתר מכל התלויות המיותרות או מגבילות. אחרי שכל השינויים יסתיימו, התלויות היחידות שיישארו הן גרסה עדכנית של Boost ו־Python לצורכי הפיתוח בלבד.
חלק מהספריות הוסרו בגלל אי תאימות לדרישות החדשות:
- libfcgi ירד כי ה־API שלו לא מאפשר גישה א־סינכרונית, במקומו, מימשתי את הפרוטוקול בעצמי על בסיס Boost.Asio.
- ספריית CgiCC ירדה בגלל האיכות הירודה שלה וחוסר יכולת סבירה לתקשר עם המפתח של אותה הספרייה הבעייתית.
כך שבגרסה הבאה, תהיה לי אפשרות להכין debים ו־rpmים בקלות...
עד היום, פיתוח מול CppCMS דרש שימוש בשרת חיצוני, למרות שיש לי סקריפט הפעלה אוטומטית של lighttpd, nginx ו־Apache, עכשיו מימשתי שרתי HTTP פנימי פשוט שמקל על הפיתוח ובנוסף, עתיד יקל על שיבוץ התשתית ביישומים שדורשים ממשק web ובמערכות משובצות מחשב.
כך שכיום, CppCMS החדש תומך בשלושה ממשקים FastCGI, SCGI ו־HTTP.
התווספה תמיכה מסודרת בלוקליזציה עם שימוש ב־std::locale, כך שתצוגת התאריכים, מספרים, מחרוזות וכד' יתבצעו בהתאם למקובל באותה שפה.
בגלל שימוש מקיף ב־Boost -- ספריה בלתי תלויה בפלטפורמה, אני סוף־סוף אוכל להכריז על Windows כפלטפורמה שנתמכת באופן (חצי) רשמי.
יש עוד הרבה עבודת אינטגרציה של רכיבים שיצאו באופן זמני, כמו ניהול sessions, שינויים ב־cache, שכתוב תמיכה בטפסים ועוד.
אבל לאט־לאט ההשפעה של השינויים הארכיטקטוניים מתחילים להתבהר.
לתמוך או לא לתמוך, זאת השאלה (ב־Win32)?
כפי שפרסמתי בעבר, אני עובד על שינויים בפנימיים עמוקים ב־CppCMS שבין השאר יאפשרו:
- תמיכה באירועי צד השרת או Comet.
- תמיכה בבינאום ולורקליזציה.
- תמיכה ב־ABI לאחור.
- ניקיון יסודי של קוד תוך הקטנה משמעותית בשימוש בספריות צד ג'.
בגלל שאני עושה שינויים כל־כך מהותיים, חשבתי, אולי להוסיף גם תמיכה בעוד פלטפורמה בנוסף לתמיכה ב־Linux, FreeBSD, Solaris ו־Cygwin... להוסיף תמיכה ב־Windows.
זה באמת, לא אמור להיות עד כדי כך מסובך, יצא לי כבר פעם לבנות CppCMS עבור Mingw (כמובן נאלצתי לוותר על חלק גדול מהמודולים).
אבל, בין לבנות משהו שרץ עד לפלטפורמת פיתוח אמתית יש תהום.
המשך...כתובת הייתה על הקיר - לקראת ההצבעה בכנסת על חוק המאגר הביומטרי
לא, שלא תבינו אותי לא נכון, אני ממש לא בעד הקמת המאגר הביומטרי שיש לו המון השלכות שליליות. אני עדיין מקווה שהחוק כפישהו לא יעבור...
כל מה רציתי לומר: "הכתובת מזמן הייתה על הקיר"
יש בעיה הרבה יותר עמוקה מהמאגר הביומטרי, הוא בסה"כ עוד שלב איבוד הפרטיות שחל בעולם כולו. רק שהפעם ממשלה החליטה לקחת בו חלק... זה היגיוני, עם בכל־כך הרבה מקומות נהנים מהמאגרים הביומרטיים, אז למה שהממשלה לא תיקח?
נתחיל, הנה ציטוט של ח"כ שטרית שהופיע ב־nrg.
בשדה התעופה יש מאגר [טבעות אצבעות] של 700 אלף איש
והנה כמה ציטוטים מאתר Facebook המפורסם:
More than 1 billion photos uploaded to the site each month
והנה הציטוט של מהכתבה של שחר שמש:
ארגון פשע שם מצלמה מעל דלת כניסה לבית בושת. כל מי שנכנס מצולם, תווי פניו משמשים לזיהויו במאגר הביומטרי, מאגר משרד הפנים (שכבר דלף) משמש כדי לבדוק האם הוא נשוי, ואם כן, מה היא כתובתו. אם הוא לא לקוח קבוע, כשבוע לאחר הביקור בבית הבושת דופק אדם בנימוס על דלתו, מגיש לו מעטפה חתומה עם תמונות, ודרישת תשלום.
ובואו נסכם:
- האם מישהו הכריח אותם לתת תביעת אצבע השדה התעופה כדי לזרז את תהליך המעבר הביקורת? אף אחד...
- האם מישהו הכריח אותם ליצור מאגר ביומטרי ענק של תווי פנים ההופכים את הזיהוי לקל ע"י תיוג מסודר? אף אחד...
- מישהו הכריח אותם לפרסם את מצבם האישי במאגר הביומטר הגדול בעולם? אף אחד...
אז אם נחליף את המילה "המאגר הביומרטי" ב־facebook או מאגר טביעות האצבעות הממשלתי במאגר שנמצא בשדה התעופה, מה ישתנה? שום דבר!
אז האם הבעיה היא החוק? או הבעיה היא הייתה עוד הרבה לפני? מפתיע, עד כמה הבעיה שתיארתי כאן לפני מספר חודשים צצה פתאום כשהכנסת החליטה "לטפל" בה.
לא, הבעיה היא לא החוק (אם כי אין לו הצדקה); האם באמת, פריצה למאגר והצלבת נתונים תהיה יותר קלה מהשגת מידע פרטי ביותר שכבר היום ניתן לעשות בקלות?
הבעיה היא אנחנו. אנחנו כבר מזמן ויתרנו בעצמנו על כל הפרטיות שלנו בעידן הדיגיטלי. כדי לראות את התמונות של חברים שלנו אנחנו פותחים חשבון ב־facebook עם התמונות המתויגות שלנו, כדי לעבור מהר בשדה התעופה אנחנו נותנים את טביעת האצבע שלנו, כדי לקבל הנחות בסופר אנחנו נותנים המון פרטים ולמעשה מאפשרים לעקוב אחרי הרגלי הצריכה שלנו.
למעשה, לא צריך לחוקק חוקים... פשוט כדי לחיות בחברה המודרנית, אנחנו מוותרים על הפרטיות והאנונימיות שלנו, כי זה מה שהסביבה דורשת והחברה כבר קיבלה את זה; ואם אתה לא מוכן לקבל את זה אתה תהיה כבשה שחורה.
אז מה לעשות? לוותר?
לא, אני מקווה שחוק המאגר הביומטרי כפישהו לא יעבור, כי ממש לא בא לי לתת טביעת אצבעות שלי לאף אחד (אפילו לצה"ל, אבל שם לא הייתה לי כל־כך ברירה). מה שהרבה יותר חשוב להעלות מודעות הציבור, כי לא צריך חוקים, לא צריך דליפות כדי לאסוף מידה שרובנו נותנים כל־כך בקלות.
Mono או לא Mono, זאת השאלה...
לאחרונה יש עשרות כתבות ודיונים בנושא Mono... הנושא מזכיר לי מאוד את "מלכודת ה־Java המפוסמת" שהייתה רלוונטית עד ש־Java שוחררה תחת רישיון חופשי ע"י Sun... רק שפה יש גם כמה נקודות נוספות:
תכונה | Java | C# |
---|---|---|
מימוש סטנדרטי "דה־פקטו" | Sun | Microsoft |
פורטביליות | גבוהה נתמכת ע"י Sun | רק עם מימוש של Mono |
פטנטים | ??? | ישנם |
מימוש חופשי שפת התכנות | מלאה | חלקי 2.0 מול 3.5 |
מימוש חופשי של ספריה | 1.4--1.5 לעומת 1.6 | חלקי |
למעשה, היום, אם מסתכלים על Mono... אז יש איתו הרבה יותר בעיות בהשוואה למה ש־Java הייתה פעם (וגם זה כבר לא רלוונטי לאחר שחרור Java תחת GPL).
אבל נעזוב כרגע נושא של פטנטים, בעיות של שימוש בטכנולוגיה לא חופשית. יש בעיה הרבה יותר פרקטיות ומשמעותית:
- Mono, עם כל הכבוד לו (ויש כבוד) נגרר ומפגר בצורה משמעותית בהשוואה של טכנולוגית .Net של Microsoft. המצב של ספריה עוד יותר בעייתי. למעשה, היום להריץ יישום C# כפישהו מ־Windows על Mono לא יותר פשוט מאשר להריץ אותו על wine (אם לא יותר קשה).
- השחקן הראשי בפיתוח טכנולוגיית Net. לא מעוניין בהשקעה בפיתוח ב־Mono. למעשה, Microsoft לא מנסה להפוך את הטכנולוגיה שלהם ל־Cross-Platfor אלא רק "עוזרת" לעתים רחוקות לפרויקט Mono כשזה מאוד חשוב להם (כמו, תמיכה ב־SilverLight שמאפשרת להם להגיד שזאת טכנולוגיה Cross-Platform).
- מעבר לכך ש־C# היא שפה קצת יותר נחמדה מ־Java היא לא נותנת הרבה. רוצים משהו קל באותה מידה? תשמשו ב־D, Java או ב־Vala. לפחות הן טכנולוגיות בפני עצמן.
במילים אחרות... ל־Mono יש הרבה בעיות מעבר לבעיות המשפטיות, אז למה לעזאזל לתמוך בו? בשביל שפת תכנות נחמדה שיש רבות כמוה, או בשביל הספריות שלה שתפורות ל־Win32API?
גם אני נגד Mono... רק אולי גם מטעמים אחרים