הבעיה של הקישורים היפים

אני התחלתי להבין, שרעיון של "הקישורים היפים" כמו http://site.com/article/about_cats לא הרבה יותר טוב מקישורים עם מספר הכתבה כמו http://site.com/article/234… למה? כי בכל מקרה אף אחד לא קורא את הקישור אלא סתם מדביק אותו במקום כלשהו.

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

דוגמה טובה מהבלוג הזה: web_filtering_low — כנראה הסינון שלי תמיד יישאר נמוך ;)

מחשבות: פרויקטים גדולים, גם אם יתרסקו ישארו משהו אחריהם…

לא מזמן יצא לי לקרוא על olpc — בעיקר דעות שונות: האם זה רע? האם זה סוף או אולי הסוף היה כבר בהתחלה?

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

לאחרונה, אני תוהה, מדוע אני משקיע כל־כך הרבה מאמץ יושב עד 1:00 בלילה, כותב תיעוד, מדבג עבור פרויקט שאני יודע שאולי שתיים וחצי אנשים ישתמשו בו?

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

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

  1. מערכת תבניות שאפשר להשתמש בה בהמון מקומות בלי קשר ל־HTML
  2. מעטפת C++‎ עבור libdbi שאני בטוח שיימצא לה שימוש.
  3. מערכת cache גמישה ומתוחכמת שהתכנון שלה נמצא כרגע בעיצומו, תוכל לשמש כל פרויקט webי שלאו דווקא כתוב ב־C++‎.

כך שאני מקווה שלא בזבזתי שעות שינה לשווא. למען האמת, למדתי מכל הפרויקט הזה כל־כך הרבה, שאין צורך להצטער.

התנצלות: אני ידוע שזו חוצפה להשוות CppCMS עם OLPC, אבל בכל זאת, צריך להיות טיפה חוצפן ;)

לבנות את CppCMS.

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

(אגב, מישהו יודע תרגום נכון של מילה framework לעברית?)

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

למרות שרשימת התלויות שהצגתי נראית מפחידה, למעשה, לא תהיה שום בעיה לבנות אותה על Debian Lenny או Ubuntu Hardy. למעשה, אני אפילו הצלחתי לבנות אותה על cygwin, אם כי הייתי צריך לקמפל כמה ספריות צד ג'.

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

לחיות עם גרסה יציבה של דביאן

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

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

המשך »

מימוש thread safe של gettext.

אחת המגבלות החשובות של gettext היא יכולת העבודה עם יותר משפה אחת בתוך אותו יישום או ליתר דיוק, אפשרות עבודה עם שני תרגומים שונים מ־Threadים שונים.

כתבתי מימוש משלי של פונקציוליות של GNU Gettext שתואם לו, יודע לעבוד עם קבצי תרגום שלו ומאפשר בחירה שקופה של מנוע gnu gettext או מנוע חלופי שהוא thread safe.

ראה פירוט כאן.

לא כל העולם כותב באנגלית

רוב מערכות התוכן ופילטרים חכמים כוללים רכיבים שהופכים את המירכאות "הרגילות" למירכאות של אנגלית — המסולסלות. הבעיה היא שהמירכאות האלה רלוונטיות רק לאנגלית.

ברוסית וצפרתית, למשל,משתמשים במירכאות «כאלה», בגרמנית משתמשים בזוג „כזה“ ובעברית משתמשים בזוג "רגיל". כך שהמנגנון החכם שהופך את המירכאות לזוג שיש באנגלית הוא פשוט לא נכון, כמעט בכל מקרה, חוץ מכתיבה באנגלית.

אבל המצב די מעצבן, אם אני למשל, רוצה לוקחת תוסף SmartyPants כתוספת ל-Markdown שהופך שלוש נקודות ל-"…" ושני מינוסים לקו-מפריד "—", אז אתה מקבל גם מירכאות, כנ"ל גם מפתחי WordPress סירבו לאפשר הפעלה או ביטול של מירכאות חכמות לפי הדרישה (התיקון יש רק בגרסה עברית של רן). כמובן שיצא לי להיתקל בבעיה הזו בעוד הרבה מקומות, שברוב המקרים אם אתה רוצה לשנות את ההתנהגות אתה צריך לכתוב טלאים.

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

מפת הדרכים לגרסת בטא הראשונה של CppCMS.

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

היא תכלול:

  • מערכת תבניות עם פילטרים והורשה בסגנון Django
  • מערכת cache עם ריבוי מפתחות
  • שיפורים שונים בבלוג עצמו כמו, מימוש מלאה של Markdown, תמיכה בנוסחאות LaTeX ועוד.
  • כתיבת תיעוד
  • הסבה של הבלוג הזה מ־WordPress בעברית ל־CppCMS.

לתיאור מפורט יותר, תקראו כאן.

תכנה חופשית, תיעוד ומה שביניהם

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

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

המשך »

חוק סינון אתרים, דעה.

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

הועלו טענות רבות נגד החוק כמו:

  • זו פגיעה בדמוקרטיה וחופש הביטוי
  • נותנים את ההחלטה לגבי תכנים לידי שר התקשורת

אם אתם באמת מעניין להבין במה מדיוק מדובר תקראו את הצעת החוק או לפחות את הקציר הבא שלה.

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

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

אם בעיני, החוק אינו מזיק וגם בעל כוונות טובות, האם אני בעד ההצעה?

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

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

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

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

ניקוד ב־OpenOffice בלינוקס

אחת הבעיה הידועות של משתמשי לינוקס היא כיצד לגרום לניקוד להראות כראוי ב־OpenOffice ויישומים רבים אחרים.

בלינוקס קיימים גופנים עבריים איכותיים מסוג Type1: גופני קולמוס. הם באים יחד עם כל המידע הדרוש למקם את הניקוד בצורה המושלמת. למשל, מנוע Pango ב־Firefox יודע להסתדר איתם בצורה מושלמת. לדוגמה המשך »