ארכיון חודשי: אוגוסט 2008

שורת פקודה, מתקפת הכלים

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

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

10 דברים שמאוד מעצבנים מפתחים

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

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

את הפוסט ניתן למצוא בכתובת:

http://www.kevinwilliampang.com/post/Top-10-Things-That-Annoy-Programmers.aspx

תוכנות קוד פתוח לווינדוז

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

עניתי לאותו אדם: "יש לך את הדיסק ?"

אותו אדם: "אה דיסק…"

אני: "אני יכול להתקין לך OpenOffice אם אתה רוצה"

הוא: "כן אופיס…"

הלכתי היום אל אותו אדם והתקנתי לו OpenOffice, Pidgin, Firefox וכמובן Thunderbird.

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

הטיפוס בעל מגוון הפרצופים

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

הטיפוס הזה נקרא variant. אלו שמתכנתים או תכנתו בעבר בVisual Basic בטח מכירים אותו (הוא מוגדר כאשר אתם לא מגדירים שום טיפוס למשתנה איתו אתם עובדים).

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

השימוש ב variant מתבצע בצורה הבאה:

program test_variants;
uses variants;
var
my_var : variant;
counter : integer;
begin
counter := 10;
my_var := 'Hello World';
writeln(my_var);
my_var := counter;
writeln(my_var);
counter := my_var - 3;
my_var := counter + 0.5;
writeln(my_var);
end.

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

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

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

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

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

בעייה ב Wordpres חלק 2

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

מי מפחד מהקוד הפתוח ?

רובכם יודעים שאני מנסה להיות עצמאי וליצור פתרונות מעל Asterisk.

למי שלא יודע, Asterisk היא מרכזיית טלפוניה הכתובה בשפת C ומשוחררת ב GPL. החברה שמפתחת (בעיקר) את Asterisk היא חברה בשם Digium.

עד כאן סביר להניח שאני לא מחדש שום דבר כמעט לאף אחד.

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

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

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

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

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

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

גניבת זהויות באינטרנט

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

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

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

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

למה לעבוד עם פסקל

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

אנשים אשר ראו את ההתחלה של המאמר החליטו להרים את הככפה ולכתוב משהו יותר טוב ממה שהתחלתי לעשות. המאמר שהם כתבו הוא פחות לוחמני ויותר ענייני.

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

בעייה ב WordPress

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

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

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

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

מזרים NX

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

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

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

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