ארכיון חודשי: יולי 2012

השוואת טיפוס נתונים ב Ruby עם case

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

עם case היה מאוד טבעי לעשות משהו כזה:

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

 

* צריך תמיכה ב Javascript גם ב wordpress וגם ל gist על מנת לצפות בקוד.

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

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

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

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

כיום ניתן להוריד גם את הגרסה העברית וגם האנגלית, בקבצי tar.gz או zip בצורה הבאה:

עברית:

אנגלית:

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

שינוי תצורת ממשק ה IDE

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

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

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

תכנות גרפיהגישה של KZDesktop היא להשתמש ב Tabbed Based User Interface ולא בDock UI, SDI או MDI.

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

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

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

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

התקנת חבילות

ארצ' מול פדורה 17

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

לאחר החזרה, לא היה לי אפילו ls, אבל בזכות bash, עדיין יכולתי לקבל רשימת קבצים על ידי שימוש ב

echo *

כמובן שחשכו עיני, קבצים שלמים נעלמו להם ב /bin/ וב/sbin/. אפילו init שמאוד חשוב לא היה קיים יותר.

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

אתה יכול לקחת את הגמל עד לבאר, אתה לא יכול להכריח אותו לשתות …

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

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

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

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

heimdall גרסת ה rpm

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

אבל יש לי כמובן Samsung Galaxy S II אשר אני מתקין עליו רומים שונים מידי פעם, אבל לשם כך יש צורך לעדכן לפחות פעם אחת קרנל, או אפילו יותר מפעם אחת (אם בא לכם).

בשביל זה המציאו את התוכנה heimdall ללינוקס, אשר מאפשרת לעשות זאת ל Galaxy.

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

תוכלו למצוא את זה כאן בgithub .

שמש במשרד דום, וירח ברדמונד וושינגטון

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

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

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

עוד חוזר הדיון, שנזנח כך לשווא …

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

הוא התחיל בדוגמה בכך שבC אפשר לקבוע את רמת הביט של מספר, למשל:

typedef int7b int:7

ואם אתם אוהבי ממים, אז המשפט שהגיע מפי היה בסגנון "bitch please", או בגרסתו העברית – "כלבתא במטותא":

type
  int7b = 0..63;

רגע, אבל למה להתחיל מ0, למה שלא נתחיל מ5 במקום ?

type
  int7b = 5..68;

אתה יכול לעשות את זה ב C ? אה, לא, אוקי. ומה עם זה ?

type
  TMyRec = bitpacked record
    Value : int7b;
  end;

ולהבטיח כי הרשומה בהכרח תקבל דיחסה לפי ביטים ולא לפי גישה אחרת (יש מספר יכולות דיחסה בפסקל לרשומות) ? להמשיך לקרוא

הרצת מתודות בצורה דינאמית חלק שני

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

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

s = 'Hello World'
eval "puts s"

התוכן שיודפס הוא "Hello World", היות והמשתנה s הוגדר כבר למערכת.

הדרך השניה שיש ברובי, היא דרך להכניס מתודות למשתנה, ולהריץ אותן בזמן "אחר":

myproc = method(:puts)
myproc.call 'Hello World'

math = 1.method('+')
puts math.call(1) #prints 2

מה שקורה הוא, שֵהמתודה method מחזירה מחלקה בשם Method עם המתודה שרוצים להריץ, וקריאה ל call, מריצה אותה. כאשר יש צורך בפרמטרים, אז מעבירים ל call את הפרמטרים עצמם.

הדרך האחרונה  להריץ מתודה בצורה דינאמית, היא על ידי שימוש במתודה send:

puts String.send('to_s') # prints 'String'
puts 'Hello World'.send('[]', 1) # prints 'H'

תכנות דינאמי נעים 🙂

כיוון השוק, תנועת הכלכלה

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

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

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

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

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

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

זאי ז'יאן (再見)