ארכיון חודשי: יוני 2009

שלילה מוחלטת של טכנולוגיות

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

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

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

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

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

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

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

טיפ ב firebird – גיבוי חם

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

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

בשביל לגבות את מסד הנתונים בצורה רגילה נעשה את זה בצורה הבאה:

$ gbak -v -t -user SYSDBA -password "masterkey" 127.0.0.1:/path/to/db/data.fdb /path/to/backyp/data.fbk

מה שאמרנו ל gbak לעשות זה לתת לנו תיעוד של מה שהוא עושה (verbose) על ידי שימוש ב -v. אמרנו לו לשמור את מסד הנתונים בצורה שתאפשר גם להגר בין גרסה לגרסה (-t), סיפקנו את השם משתמש והסיסמה, כתובת השרת והמיקום למסד הנתונים ואז אמרנו לו איפה ובאיזה שם לשמור את הגיבוי.

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

במידה ונרצה לגבות מסד נתונים מרוחק מקומית אצלנו בצורה מאובטחת ותקשורת דחוסה בצורה הבאה:

$ ssh -C -f user@XXX.XXX.XXX.XXX -L 3052:localhost:3050 -N
$ gbak -t -v localhost/3052:
/path/to/db/data.fdb -user SYSDBA password masterkey /path/to/backyp/data.fbk

בואו אסביר קצת את הפקודת SSH:

אמרנו ל ssh לרוץ בצורה דחוסה (-C), ברקע (-f) ויצרנו מנהרה עם -L בפורט 3052 אצלנו במחשב כאשר ssh עצמו אינו מריץ שום shell או פקודה כלשהי (-N).

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

הטיפ מבוסס על הטיפ הבא עם קצת שינויים.

ערוץ IRC חדש לאנשי הלינוקס בארץ

Ddorda פתח ערוץ IRC חדש ברשת Freenode בשם #linux-il אשר מועד לכל מי שרוצה לדבר על לינוקס ב IRC בעברית.

אתם מוזמנים לבקר בערוץ ולהגיד שלום.

שבוע עמוס בחדשות

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

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

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

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

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

Paroli

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

יש לי כמה דברים שמאוד מפריעים לי במערכות OpenMoko השונות, 3 מהן נפתרו דווקא על ידי גוגל בגישה שדי אהבתי:

  1. הריצה היא של root
  2. כל קרנל מרשה לעצמו לשנות את הנתיבים של proc
  3. הוא מתנהג הרבה פעמים כמו מערכת תלאים יותר מאשר מערכת מתוכננת (מבחינת תוכנות)
  4. הפלסטיקה שלו היתה יכולה להיות מעט יותר גמישה , ולכלול מקום לעט וכו', דבר שלא קיים לצערי.
  5. יש יותר מידי הפצות, קשה לדעת מה לבחור 🙂

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

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

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

לגבי מערכת תלאים, היי זה לינוקס בוקר טוב באמת 🙂

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

Paroli הוא מתווך (כתוב בפיתון) אשר מגשר בין ה low level לבין ה high level. מתווך כזה נקרא גם middleware והוא מאפשר לקבל אחידות כלשהי מבחינת הגישה לחומרה ב OpenMoko.

אז עכשיו סעיף אחד קיבל מענה ועוד 4 לדרך 🙂

מה האח הגדול יודע עליכם ?

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

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

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

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

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

Job in security

I have a tendency to look at headers of web sites I constantly visit, or just want to know something more about them.

In one of this lookups, I found the following header (The previous image I took last month had a problem so I took another one today):

secrity_job

If you can detect from what web site this header is, and you are looking for a job, then you can apply to the deleted address 🙂

Oh, and I did give enough clues in this blog to nerrow things down.

עוד framework לרובי

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

אז הנה רשימה נוספת של עוד frameworks בשפת רובי עבור פיתוח תוכנות/אתרים עבור רשת האינטרנט:

  • Sinatra – כן שם הפרוייקט הוא ממש כמו השם של פראנק סינטרה ז"ל. תכנות בגישה של REST של תסריט בודד שמכיל את כל מה שאנחנו צריכים (בשורה התחתונה).
  • ramaze – גישה פרוצדורלית, מאוד מזכירה את rails מבחינה זו, אבל היא מאוד פשוטה, קלה ומתהדרת בתאור של "כל מנוע, כל template, כל ניהול מסד נתונים" וכו'… והיא גמישה מאוד ומאפשרת בצורה מאוד פשוטה להגיע למצב של אתר עובד.
  • wee – ראשי תיבות של Web engineering easy – כלי framework שמממש את Seaside הכתובה ב Smalltalk.
  • Camping – מיני framework שחושב שאפשר לכתוב קוד של אתרים ב4k בלבד, כאשר כל הקוד של גישת ה MVC אצלו נעשת בתוך קובץ אחד.
  • Cerise – זהו framework המתיימר לספק לרובי את הכוח של J2EE. אין לי ניסיון עם J2EE, כך שאין לי דעה אם זה באמת נעשה או לא.
  • Arrow – מנסה לתת כוח וקלות עבודה ל mod_ruby שרץ עם Apache.
  • Waves – מדובר ב framework שלוקח את פיתוח ה web לגישה של DSL. פרוייקט מאוד מעניין לדעתי.
  • ServerSide – זהו Framework שנועד לתת מענה לבניית קוד מהיר כול האפשר בצד השרת, אך גם לפשט את תהליך הבניה כמה שניתן.
  • Vintage – מנסה לממש את הרעיון המקורי של Merb עם הרבה תוספות
  • Mack – זהו Framework שנבנה מ0 תוך מתן דגש על ביצועים ויכולת לבזר את האתר.

זה מה שאני מכיר (מבחינת framework שעדיין בפיתוח) מבחינת Ruby ופיתוח web. אם אתם יודעים על עוד אתם מוזמנים לדווח.