ארכיון חודשי: דצמבר 2007

Two months of big mess

The following post is going to be written only in the English language. This is the short version of the story, and is missing few things, so this is one of the reasons you will not find any of the names of anybody involved in this post.

I’m a freelancer at the field of VoIP and Asterisk industry. When I find the time, I also contribute to some open source communities.

At October, after several clients of mine started to request a client side applications on specific platform to be used instead of web applications (due to several reasons I will not get into), I decided to order a development license to that specific platform.

להמשיך לקרוא

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

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

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

להמשיך לקרוא

סיבוכיות המערך ביעילות חלק 2

בחלק הקודם דיברתי על קוד PHP אשר גרם לי להרבה שקט. ואז הצגתי בעיה:

יש לי רשימה (לא בהכרח קבועה) של שמות לוגים שצד הלקוח מעוניין לקבל את כל הקבצים של אותה קבוצת לוגים. הבעיה כמובן שמדובר בPHP.

אז מה עושים ?

  1. להשתמש בהרצת הפקודה ls עם glob (למי שלא מכיר, glob זה ההוראות לאיזה תוכן להחזיר לנו, למשל סימן שאלה, כוכבית וכו'…).
  2. לרוץ על כל קובץ וקובץ ולהתחיל לפרק אותו לתווים. אני לא זוכר איך נקרא האלגוריתם, אבל משתמשים בו בד"כ בביצוע מילון.
  3. ריצה על מערך מלא בקבצים, ובכל קובץ, להתחיל לראות אם יש איבר במערך אשר מכיל כמה שיותר תווים מהקובץ שנמצא. אם הכל היה שווה עד שהגענו לסוף המחרוזת באיבר, אז כנראה שמצאנו.
  4. אפשרות נוספת היא לעשות אותו הדבר, כמו אפשרות 3, תוך שימוש בפונקציות של PHP.
  5. ואתם מוזמנים לחשוב על עוד כמה ….

אני בחרתי באפשרות הרביעית וכתבתי את הדבר הבא:

 

foreach ($files as $index => $value) {

foreach ($list as $key => $name) {

if (strncmp($name, $value, strlen($name)) == 0) {

$list[] = $value;

break;

}

}

}

 

פשוט 🙂

רה-ארגון בבלוג

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

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

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

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

בכל מקרה, כל הערה והארה בנושא מתקבלת בברכה 🙂

עידו

סיבוכיות המערך ביעילות חלק ראשון

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

יצרתי "לקוח" ב Lazarus עבור עבודה עם xml-rpc, כאשר אני יכול לערוך את הXML עם צביעת התחביר וכמובן לקבל את התשובה שגם היא צבועה. כל זה גם מכיל log כמובן של כל דבר שהתרחש. והכי חשוב, זה כתוב בצורה מותאמת להיות cross platform.

כל הדבר הזה לקח שעה וחצי של תכנות (הייתי צריך להיזכר איך כותבים תוכנה גרפית רצינית, ולחשוב בצורה חוצה פלטפורמות זה לא דבר קל למי שלא רגיל). התוצאה היא 300 שורות קוד אשר אני כתבתי שנותנות לי את כל התוצאה הזו (בנוסף לעוד כמה תכונות נוספות שלי די מקלות על החיים, ולמרות שהן פשוטות מאוד, התכנון שלהם לקח הרבה אנרגייה). הבעיה היא ששעתיים וחצי טיפלתי בבעיות כמו חוסר תמיכה של gdb ב"חברים" (members) של FPC, אם זה במחלקות או ברשומות דחוסות (בפסקל כל הרשומות דחוסות, רק צריך להגיד למהדר איך לדחוס). היו גם כמה באגים נוספים שמצאתי בספריית lnet שתיקנתי ושלחתי patch שהתקבל ונכנס ל svn. ועוד כמה באגים שאני צריך ללמוד אותם יותר לעומק בשביל לדעת איך לדווח עליהם נכון.

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

להמשיך לקרוא

Old Man

הזמר הבא הוא Neil Young. הזמר הוא זמר מחאה, אשר התחיל את דרכו בשנות ה60.

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

[gv data="Vef03k5i8VI"][/gv]

Kiss from a Rose

הזמר הבא מוכר בשם Seal , או בשמו המלא Seal Henry Olusegun Olumide Adeola Samuel.

השיר הבא נכתב עבור הסרט Batman Forever וזיכה את Seal בפרס גרמי, ואף היה מעומד לפרס MTV 1996.
Bat-man או Batman לקוח מקומיקס של היוצרים Bob Kane וBill Finger. הקומיקס יצא בשנות ה30 של המאה הקודמת, ומתרחש בעיר Gotham. האדם Bruce Wayne ראה בילדותו את הוריו נרצחים ע"י שודדים, ומאז החל להתאמן ולמצוא דרכים להילחם בפשע. כאשר גדל, יצר לעצמו את הדמות של Batman, ובתור כיסוי, נראה האדם בתור הולל, וכן תורם גדול בעיר. בניגוד למרבית "גיבורי העל", Batman אינו בעל יכולות לא אנושיות, ובעצם כל הצורות בהם הוא נלחם, משתמשות בטכנולוגיות וביכולות הגופניות של Bruce Wayne.
[gv data="ateQQc-AgEM"][/gv]

Smooth Operator

השיר הבא שייך לזמרת Sade. הזמרת נולדה בשם Helen Folasade Adu בניגריה.

הישר לקוח מהתקליט הראשון של הזמרת הנקרא Diamond Life אשר יצא ב1984, למרות שהביצוע הראשון של השיר היה אשר הזמרת שרה בקבוצת המוזיקה Arriva אשר ניגנה בעיקר מוזיקת נשמה במקצב לטיני.

את השיר ניתן לשמוע כאן.

Exile

את הזמרת הבאה כבר פגשנו בבלוג שלי. שמה הוא Eithne Patricia Ní Bhraonáin או בשם היותר מוכר – Enya.
הזמרת שרה בעבר בלהקה Clannad ביחד עם אחותה Moya Brennan.

[gv data="1yNgH5vX_Bs"][/gv]

הברק נעלם

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

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

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

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

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

ספרייה משותפת

אורי שאל אותי איך להשתמש בספרייה משותפת בלינוקס אשר נכתבה בFPC עם תוכנה שכתובה בC.

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

אז כמה דגשים קטנים:

להמשיך לקרוא

חוסר הבנה, או חוסר קריאה ?

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

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

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

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

Milk

השיר הבא שייך ללהקה Garbage ולקוח מהתקליט הראשון של הלהקה.

הלהקה היא להקת רוק מארה"ב אשר החלה את דרכה ב1995.

הבלדה הבאה מאוד שונה מרוב השירים של הלהקה.

את השיר ניתן לשמוע כאן.

75'-74'

השיר הבא מאוד מוכר, אבל הלהקה קצת פחות. שם הלהקה הוא כמובן The Connells, והם הוקמו ב1984 ומופיעים עד היום.
סגנון המוזיקה של הלהקה הוא מוזיקת גיטרות מלודית, וכן גם פופ ורוק.
השיר עצמו הוא השיר הכי מוכר של הלהקה.
[gv data="l-ITv4OBV9c"][/gv]

השפה שמתאימה ל ?

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

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

להמשיך לקרוא

Radiohead

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

השיר Creep מהאלבום Pablo Honey פרסם אותם בעולם, כאשר השיר הביא אותם להכרה עולמית.

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

עםםעךק

הטעות הזו, במידה ואתם משתמשים בGoogle Suggest תבין כי התכוונתם לGoogle…

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

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

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