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

ישנן 3 טכנולוגיות בעולם

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

Windows, .NET וIntel.

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

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

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

דוגמא נוספת היא אם אנשים יזכירו בעיות בעבודה עם צורות הבנייה של C ו ++C. נגיד ואני אזכיר את מערכת הבניה של שפה מקבילה כדוגמת פסקל ואציג איך בדלפי וFPC פתרו את הבעיות, אנשים יתיחסו לשפות ולא לזה שאני מציג צורות בנייה אחרות, ואז נשאר לי פשוט לספק את התשובה בסגנון של G'Kar מבבילון 5: "כן אתה צודק אתה צריך לעבוד עם אותם כלים" ולסיים עניין.

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

האח גדול, הדמוקרטיה כל כך קטנה

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

על פניו נשמע הוגן החוק נכון ?

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

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

האח הגדול מאזין לכם

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

אזהרה: מדריך זה מאוד ארוך (5 דפים מלאים עם תמונות וקוד).
טבלת authors

כמעט כל מתכנת מגיע לשלב שהוא (או היא) צריכים לטפל במסדי נתונים. כיום יש 3-4 גישות עבודה מקובלות עם מסדי נתונים:

  1. עבודה ישירה מול מסד נתונים ספציפי לפי API של היצרן
  2. עבודה עם ספרייה שמאגדת פונקציות דומות עבור מבחר מסדי נתונים
  3. מימוש עצמי של מסד נתונים (יש חברות בתעשייה שעושות טעויות כאלו)
  4. עבודה עם כלי ORM אשר מנסות להשכיח את העבודה שיש מסד נתונים ומנסה לספק יכולת לעבוד כמה שיותר בתחביר של השפה בה אנחנו עובדים.

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

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

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

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

ניצחון בקרב, אבל המלחמה עדיין לא נגמרה !

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

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

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

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

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

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

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

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

לפני שהטפטוף ייהפך למבול

היום זה מוכרע, האם ישראל מפסיקה להיות מדינה דמוקרטית, או לא !

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

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

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

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

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

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

בקצב הזה נהיה צריכים עיר מקלט

התקנת חבילות

עודכן ב15.11.2009 10:33

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

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

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

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

החבילות מחולקות לשתי קבוצות (או שייכים ל2 הקבוצות בייחד): להמשיך לקרוא

תכנות מבוזר – הטרנד החדש

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

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

אחת השפות המוכרות והידועות ביותר בנושא היא  erlang. השפה נוצרה באריקסון 1986 עבור מחשוב מקבילי של טלפוניה, והיא מסוגלת לספק תכנות שמראש הוא thread safe ולכן המתכנת לא צריך להתעסק בזה, דבר שמאפשר לבזר את הפעולות שהיא עושה על מגוון מערכות/מעבדים שונים בצורה ממש שקופה. השפה עצמה היא שפה פונקציונאלית, אשר משתמשת בעיקר בפונקציות הדומות מאוד ל lambda, אבל מתנהגות מעט שונה.

ישנם כמה עשרות של שפות כאלו, ולאחרונה נוצרו עוד 3, כאשר האחרונה מבינהם התפרסמה השבוע בשם Go. בנוסף לגוגל, גם IBM יוצרת שפה בשם X10 אשר מספקת בדיוק את זה. גם אינטל לא נשארת חייבת ולוקחת את שפת C ומרחיבה אותה לשפה בשם Ct.

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

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

סביבות פיתוח מרובות שפות (השימוש שבורלנד בזמנו התחילה עם דלפי, שהמשיך ל JVM ומוצרי VS של מיקרוסופט, ואפילו parrot של perl 6), בהם אנחנו נעבוד בעיקר בשפות דינמיות, בעוד שמצד המערכת יהיו שפות שיודעות לנצל משאבים מרובים, בהם הלך הרוח של השוק יתבהר רק בעתיד הרחוק יותר, למרות ש erlang התעורר מתרדמת בשנתיים שלוש האחרונות.

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

בעסקי לינוקס עסקינן

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

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

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

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

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

תשובה לחידה

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

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

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

הערך הקודם פלוס הערך הקודם ושומרת אותו ב sequence בתור הערך הבא. כל זה, כל עוד הערך הוא לא 0 או ריק, כי אז הsequence מכיל את הערך 1.

התוצאה הסופית היא סדרה כזו: 1, 2, 4, 8, 16, 32, 64, 128, 512, 1024 … (דיברתי על 10 הערכים הראשונים).

הפעולה מתבצעת כאמור על ידי פעולת חיבור ולא כפל או חזקה (דיאגו).

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

השימוש ב GEN_ID מספק את הדרך היחידה לגשת ל sequence בגלל שהsequnce חייב להיות מוגן מפני שינויים רנדומליים ורק שינויים שהתכוונו אליהם חייבים להתבצע בצורה שהיא transaction safe, כך שכל טרנזאקציה תוכל לספק ערך חד חד ערכי בלי קשר לשאר החיבורים והטרנזאקציות האחרות בנושא. זו אחת מהדרישות של מבחן ה ACID עבור מסדי נתונים, וכאמור Firebird עובר בציון של 100 את המבחן. הפונקציה ד"א מעלה את הערך של ה sequence בכמות שאנחנו מספקים לה בפרמטר השני, כך שאם הערך הוא 0, זה בסה"כ מחזיר את הערך של sequence ולא מבצע פעולת חיבור.

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

מבחני ביצועים ל MySQL, PostgreSQL ו Firebird

לאחרונה נעשו מבחני ביצועים לFirebird מול 2 מסדי הנתונים האחרים.

בשורה התחתונה, גרסה 2.5 של Firebird בלינוקס מאוד מהירה ויעילה, אבל רק אם משתמשים במערכת הקבצים XFS, בעוד שבמערכת הקבצים Ext3 הוא מאוד לא יעיל.

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