קטגוריה: סלולרי

צעדים ראשונים ב wireguard

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

כלומר נגיד ואני רוצה לגשת ל 10.0.0.12 ב HTTP כאשר אני נמצא באינטרנט, והשרת נמצא מאחורי 10.0.0.12, אין לי סיכוי ללא יכולת לעשות Port forwarding, הנגשת השרת כלפי חוץ או reverse proxy כלשהו.

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

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

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

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

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

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

ישנם מדריכים מדהימים ברשת, כולל באתר, הרשמי, כך שלא אכנס להגדרות כאן.

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

אחד הדברים המדהימים באמת של Wireguard זו הפשטות ליצור תעודות הצפנה.
פקודה קטנה ליצור מפתח פרטי ופקודה נוספת לקחת את המפתח הזה וליצור מפתח ציבורי.
בקובץ של המכשיר שמים את המפתח הפרטי, ובהגדרות של כל מי שצריך לדבר איתו שמים את המפתח הציבורי.
המפתחות שמורים כשורת base64 ואין התעסקות עם המון כלים כדוגמת easy-rsa של openvpn, ואין צורך להתעסק עם openssl.
קובץ ההגדרות יראה בצורה הזו ב"לקוח":

[Interface]
PrivateKey = 
Address = 10.1.0.2/24

[Peer]
PublicKey = 
PersistentKeepalive = 20
Endpoint = address:port
AllowedIPs = 0.0.0.0/0, ::/0

[Peer]
PublicKey = 
AllowedIPs = 10.1.0.3/32

[Peer]
PublicKey = 
AllowedIPs = 10.1.0.2/32

 

היצירה של ה QR התבצעה על ידי באמצעות לינוקס עם הפקודה qrencode בצורה הזו:

qrencode -t PNG -o qr_conf_for_phone.png --verbose < wg_conf_for_phone.conf

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

בשורה התחתונה, אני מאוד מרוצה מה vpn שלא רק קל להגדרה אלא נראה יציב יותר.

אנדרואיד, mms ובעיית אבטחה עם פתרון ישים

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

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

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

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

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

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

כיצד עובד ה MMS? אני שולח הודעת SMS במבנה מסוים שאומר כי יש לי משהו כדוגמת תמונה בשרת שניתן להוריד באמצעות WAP.

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

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

הבעיות שיש לי עם תכנות ריספונסיבי

הקדמה

אנחנו חיים בעולם שיש בו המון מילות באזז, כדוגמת big data, responsive design, cloud computing, סייבר וכיוב' …
כל המילים האלו מגיעות מעולם השיווק, אבל לאדם טכני לא באמת אומרות הרבה.

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

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

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

מונחי יסוד

HTML – שפה אשר יודעת לתאר מסמכים ומה המידע שיתקיים בהם, תוך שימוש באלמנטים שבהם המידע יכול להתקיים.

CSS – הם קבוצה של חוקים אשר יכולים לכסות אחד את השני (מכאן השם: Cascading Style Sheet) בצורה שתספק עיצוב למסמך.

הסבר

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

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

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

כך שאולי יש מסמך איכותי עם המון מידע, שמעוצב מדהים ויודע להיות מוצג בהרבה רזולוציות, אבל האם הוא באמת יודע להגיב כמו שצריך למגבלות המכשיר אשר המסמך מוצג בו?

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

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

האקינג לראוטר, או איך להפוך ראוטר לקוד פתוח

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

מאז לא היו לי אתגרים באמת מעניינים בנושא ההאקינג של מכשירים, עד שרכשתי את WDR4300 של TP-Link והחלטתי שאני לא אוהב את הרעיון שאין לי שליטה על הראוטר שלי.

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

אז התקנתי openwrt, ופתאום נזכרתי לטובה במוקו, אשר דרש ממני קצת האקינג בשביל לגרום לו לעבוד.
מצאתי את עצמי ב7 בערב עד 1 לפנות בוקר מתאים אותו לצרכים שלי.

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

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

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

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

הראוטר של בזק מנתק את ה wifi כל כמה זמן לכמה שניות. כלומר את המכשירים המחוברים אליו.
מדפסת הרשת שלי, משום מה לא עובדת כמו שצריך עם הראוטר הזה, אבל הכי גרוע זה ה TR-069 שיש בראוטר ואני לא יכול לבטל אותו, הוא סוג של back-door  לכל הראוטרים האלו, המאפשרים לבזק לבצע provision מרחוק, אבל מסכנים את הראוטר לחלוטין.

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

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

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

בכל מקרה, אני מאוד נהנה 🙂

Telegram – מימוש קוד פתוח דמוי WhatApp

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

לאחר שfacebook רכשו את Whatsapp, התחלתי לקרוא כתבות על תחליפים עבור תוכנה זו, ותוכנה אחת משכה לי את העין – Telegram.

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

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

וכך מצאתי תחליף נחמד וטוב לתוכנה.

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

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

בכל מקרה, ממליץ לכולם לעבור לתוכנה ולעזוב את פייסבוק במנוחה 🙂

בזיון השעון (או איך חברות סלולר דופקות את הלקוחות שלהן)

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

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

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

$ zdump -v Asia/Jerusalem | grep 2013 | grep Oct
Asia/Jerusalem  Sat Oct 26 22:59:59 2013 UTC = Sun Oct 27 01:59:59 2013 IDT isdst=1 gmtoff=10800
Asia/Jerusalem  Sat Oct 26 23:00:00 2013 UTC = Sun Oct 27 01:00:00 2013 IST isdst=0 gmtoff=7200

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

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

מה צריך להבין בפיתוח אפליצקיות לסלולר

אתחיל בגילוי נאות: אינני מפתח אפליקציות לסלולר.

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

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

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

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

למשל, פיתוח מבוסס רשת – תקשורת סלולרית של data יקרה יותר מאשר תקשורת בwifi למשל, אם כי כל פעולת רדיו מאוד יקרה בסלולר – כן, גם bluetooth ו GPS.

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

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

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

לזרוס, חדשות תקופתיות

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

הנה חלק קטן מהדברים אשר הוכרזו בשלושה חודשים האחרונים בנושא:

ביום שני האחרון (4/02/2013) שוחררה גרסה 1.0.6 של לזרוס אשר מכילה תיקוני באגים בלבד.

בינואר שוחרר הסבר כיצד ניתן לפתח עבור Raspberry Pi באמצעות לזרוס.

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

מנוע המשחק Castle שיחרר גרסה 4 שלו. המנוע מאפשר לספק API גבוהה לפיתוח משחקים, התחברות למודלים (כדוגמת אלו הנבנים עם blender), ועוד.

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

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

אחרון חביב לפוסט זה, הוא Community של FPC/Lazarus ב Google+‎ שאתם מוזמנים גם להצטרף לשם כמובן.

עתיד עולם התכנות לאן ?

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

למשל כאשר אדם שאל שאלה בwhatsup על ללמוד לפתח אפליקציות לאנדרואיד. אנשים התחילו להציע לו ללמוד את שפת C ואת שפת ++C, וכו' … ובסוף אחרי שהבין איך לתכנת בשפות האלו, לעבור לJava אשר איתה הוא סוף כל סוף יגיע "למנוחה ולנחלה".

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

ההבדל בהצעה שלי, הוא בכך שבאמצעות FPC, אני יכול לכתוב אפליקציות טבעיות לאנדרואיד (מהדר אותן לקבצי class של ג'אווה), ויותר מזה, אני יכול גם לבנות מערכות עבור iOS (יש בMarket של אפל, תוכנות שלמות אשר כתובות עם FPC ודלפי החדש עבור iOS), לספק את אותן המערכות לסביבות שולחנות העבודה, web ושרתים. כל זה ללא צורך להחליף שפה או טכנולוגיה, ועדיין לתת מענה רחב יותר מאשר פיתוח רק בשפת ג'אווה או Objective-C. להמשיך לקרוא

בין מעריצי אפל למציאות

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

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

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

heimdall גרסת ה rpm

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

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

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

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

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

האם אורקל מנסה להרוג כל טכנולוגיה מבוססת מחשב ?

הבהרה: אלע"ד (אני לא עוכר דין).

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

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

גוגל מצידה אומרת כי חברת סאן (אשר לצערי אורקל קנו אותה), שיחררה את מימוש ג'אווה "לחופשי" ברישיון אשר מאפשר לכל דורש לעבוד איתה. לפני כן, היו מספר מימושים שונים של JDK כדוגמת המימוש של חברת IBM, אשר נוצר כ clean room. אבל אז למעשה Sun שחררה ב2006 את OpenJDK, ואף התעוד נפתח לגמרי, וקיבלנו API לגמרי פתוח של ג'אווה. ואז חברת RedHat יצרה פרוייקט בשם IcedTea אשר מאגד בתוכו את תכונות ג'אווה ללא צורך בתמיכה של עוד כלים לשם כך, תוך שימוש בגרסת קוד הפתוח שSun פתחה.

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

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

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

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

שימוש ב wvdial עם sim של חברת פלאפון

לפני שנתיים כתבתי כיצד מתחברים למודם סלולרי של חברת פרטנר (Orange).

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

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

מה שעשיתי הוא כזה:


[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Stupid Mode = yes
Modem Type = USB Modem
ISDN = 0
New PPPD = yes
Baud = 9600

[Dialer pelephone1]
; Pelephone modem
Init2 = AT&F &D2 &C1
Init3 = ATS7=60 S30=0 S0=0
Init4 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init5 = AT+CGDCONT=1,"ip","internet.pelephone.net.il"
Modem Type = Analog Modem
Modem = /dev/serial/by-id/usb-ZTE_Incorporated_ZTE_WCDMA_Technologies_MSM_MF1900PLED010000-if02-port0
ISDN = 0
Phone = *99#
Password = pcl
Username = pcl@3g
Ask Password = off
Stupid Mode = off

ההרצה מאוד פשוטה:

$ sudo wvdial pelephone1

גלישה נעימה.

לבנות את FPC jvmbackend

רכשתי לפני שבוע Samsung Galaxy S2, והגיע הזמן באמת לבנות משהו לאנדרואיד.

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

אז ניגשתי לרענן את העץ של jvmbackend מהsvn, והחלטתי לבנות בעצמי את הגרסה החדשה.
לפני כן, יש לעשות patch קטן בעץ הקוד של jvmbackend לקובץ fpc.pp: להמשיך לקרוא

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

יש לי רצון עז לדבר ולהסביר לעומק על FPC for JVM, ובכלל על היכולת לפתח אפליקציות לאנדרואיד.

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

אז האם הייתם מעוניינים לשמוע על כך הרצאה ?

אפליקציית Android לניהול נסיעות ברכבת

train managmentSven Barth כתב לעצמו תכנה לניהול הנסיעות שלו ברכבת, ולשם כך השתמש בלזרוס ו FPC for JVM.

הגרסה משתמשת ב SQLite בנוסף בשביל לשמור ולשלוף מידע, ורצה בצורה טבעית על ה VM של אנדרואיד.

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

הגרסה הקודמת של התכנה נכתבה עבור מערכת מבוססת Windows CE. הגרסה שהוא יצר ל WinCE, השתמשה בקבצי ini, אותם הוא כאמור המיר לSQLite.

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

גרסה חדשה ל FPC JVM

ג'ונס שחרר הודעה לרשימת הדיוור של fpc-devel על כך שהוא שיחרר גרסה חדשה של FPC-JVM.

כזכור, הגישה הזו אומרת שFPC מאפשר לי ליצור קוד שJVM יכול להריץ בצורה טבעית.

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

בשביל לגרום לppcjvm להדר את הקוד לקבצי class ש dalvik אוהב יש להעביר את הפרמטר הבא:

ppcjvm -Tandroid ....

כמובן ש3 הנקודות הם המשך הפקודה שרוצים לספק.

עוד תוספות ושינויים שנכנסו לגרסה הזו הם:

  • המהדר עכשיו מנקה כמו שצריך את קבצי ה j אלא אם הועבר פרמטר של a-.
  • עכשיו קובץ ה Makefile יוצר את ה rtl כמו שצריך עבור גרסת הג'אווה וגרסת האנדרואיד
  • תוקן קוד המתייחס לפרמטרים עם var או out בתוך פונקציות/פרוצדורות מקוננות
  • תוקן באג של try/except מקונן
  • נוספת פקודה למהדר Ctcompactintarrayinit-

הסיבה להוספה האחרונה היא בכך שJVM אינו תומך במערכים קבועים, כך שצריך ליצור קוד אשר יעשה את העבודה בתוך קובץ ה class, אך בגלל שגודל ה class יכול להיות עד בגודל של 64K של ByteCode, ובמידה ויש הרבה מערכים, הוא גם יכול לגלוש מכך, אז נוספה אפשרות שיוצרת קוד חדש, אשר פוטנציאלית איטי יותר, אבל יוצר קוד קטן יותר.

  • תוקן קוד של copy כאשר x שונה מ0.
  • הקוד של ה rtl נכנס לספרייה rtl/android/jvm כך שלא תהיה התנגשות במימוש קוד טבעי של android arm.

הקשיים ביצירת תכנות טבעיות לאנדוראיד

"The greatest challenge to any thinker is stating the problem in a way that will allow a solution" — Bertrand Russell

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

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

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

החוויה של אפל

It's all funny until someone looses an i

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

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

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

Nokia – Sic transit gloria mundi

"How the mighty have fallen"

Nokia has reported on 11/02/2011 that it starting to collaborate with Microsoft in the smart phone industry. This announcement is the end for a lot of speculations regarding the path that Nokia will take, and is mostly came as a big shock to most of us, we thought it might be the news, but hoped for the best.

Nokia was for many years the main pioneer in Cellular technology but it lack the vision of what Google and Apple saw. So instead of going in a specific path, they started to sit back and let the market change it's leaders, instead of creating a new path to the market they mostly shaped themselves until then.

Apple mostly ride on a big wave of "believers" in a cult like marketing (at least that's how it feels), while Google took a much more realistic approach, where their cellular operating system is not a phone dependent operating system, but an idea for the hardware manufacturers.

Nokia started the same idea of Android long before Google ever entered with their vision, but they only experiment with it using the Maemo operating system. The idea was one clean operating system, that like with Google's Android, Maemo is based on the Linux operating system, but unlike Android, they kept the GNU part inside. That made a lot of people, including myself very happy and I even bought a phone based on it, and returned to the Nokia lap by my own choice, because they provided me a tool that suited not only for my personal ideals of Open Source, but it also had more then 80% of the tools I need for my work, while 20% are not suited for cellular phone (due to it's screen size, and memory [ram], and not fast enough CPU at the N900). N900 can run any Linux based application that exists today. It's better to convert it to the Maemo interface, but it will work, and that's a big plus.

Many people including myself did not like the idea of moving Maemo into MeeGo, but we gave Nokia a chance even though most of us thought that it's not the time to rewrite (a very good) an operating system. Well, we were right apparently because Nokia could not match to Apple's iOS or Google's Android, and they started to fall hard. Now there are more Android based phones, that Nokia did not want to manufacture, then Nokia's phones.

So they replaced their CEO, and moved into the dead hands of Microsoft. For many of us, the lack of proper MeeGo support and the running into the Microsoft cold hands and sit in their laps are the last straw. We got used to have good products from Nokia, but now, a Windows based mobile phone is never the choice we will make, so Nokia is loosing a big crowd of people that loved most of their products, and drag them by force into the hands of Android based phone. It's the second big wave of customers that leave them for Android.

So all I can say is: "Thus passes the glory of the world".

And here is a song that represent my feelings regarding that issue: Mostly Autumn – Fading Colours

לדרוס את כולם עם N900

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

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

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

לכתוב תוכנית טבעית בAndroid ללא ג'אווה ולהישאר בחיים

הבהרה: אין לי ניסיון אישי עם פיתוח למערכות אנדרואיד נכון לכתיבת פוסט זה. גרסת האנדרואיד האחרונה שהשתמשתי בה היתה גרסה 1.x (אינני זוכר את תת הגרסה), ומאז הרבה FUD עבר בין חברות הסלולר השונות.

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

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

אז יש כיום (החל מ2.3 עד כמה שאני מבין) תמיכה באנדרואיד לפתח ב2 צורות כאשר מדובר בקוד חיצוני:

  1. שימוש ב JNI ולטעון ספריות משותפות (קבצי so).
  2. למממש את ה API של אנדרואיד בשפה שלכם, ולרוץ בצורה כמעט לגמרי נקייה מג'אווה.

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

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

הבעיות של מערכת החינוך – חלק ב' (המציאות כיום)

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

Data is not information, Information is not knowledge, Knowledge is not understanding, Understanding is not wisdom.
Cliff Stoll & Gary Schubert

אם אקח את ה20 שנה האחרונות כנקודת ציון (1990-2010), ניתן לראות כי חלה מהפכה עצומה באופן בו אנו חיים. ראשית יש לנו יותר כלים לשעות הפנאי – מכשירים אשר עוזרים לנו למלא את חלל הזמן לאחר שאנו מסיימים עבודה, לימודים וכדומה. בניגוד לסוף שנות ה70 ותחילת שנות ה80 בהן טלפון עדיין לא היה נפוץ ובישראל לקבל קו טלפון היה יכול לקחת קרוב לשנה ובמקרה הרע גם שנתיים מרגע ההזמנה ועד ההתקנה. לא לכולם הייתה טלוויזיה, ואם הייתה עבור חלק לא מבוטל היא הייתה שחור לבן, החוויה כללה בעיות קליטה וערוץ בודד. היו מכשירי רדיו אשר אפשרו צריכת מידע, בתי קולנוע, עיתונים, ספרים ופחות או יותר זהו. כך שלא היו כלים רבים (יחסית) "להתנתק" או למלא את חלל הזמן לאחר שעות הפעילות השונות, ומילאו אותם בדרכים אחרות.

בערך בשנות ה90, החלה מהפכה בישראל (רק אודותיה אדון כאן). בין השינויים: הטלוויזיה בכבלים נכנסה לחיינו והפכה את הטלוויזיה למוצר צריכה מרובה ערוצים. טלפון נהפך זמין לכל דורש ואף קיבלנו את התחלת הסלולרי עם חברה שעד היום שמה משמש כשם גנאי לתאור מכשיר סלולרי. המחשב האישי החל להיכנס לבתים בישראל בייתר שאת, בהתחלה לאנשים במעמד טיפה גבוה יותר, אח"כ לאט לאט טפטף לשכבות הנמוכות יותר. עם המחשב נכנס גם המודם (אנלוגי במהירויות של 9,600 -14,400 ואח"כ גם 33,600 והכוונה היא כמות ביטים בשנייה -> אני עדיין אדם טכני ;)). נוסף ערוץ טלוויזיה למדינה (לחסרי הכבלים) וקווי טלפון בין עירוניים עברו מתשתית יקרה לתשתית זולה יותר ושיחות בין עירוניות שהיו יקרות מאוד, גם בגלל שלא כולם היו יכולים להתקשר בו זמנית עם כולם, פתאום הפכו לנגישות עם יותר ערוצי תקשורת בו זמנית.

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

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

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

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

"צריבה" מחודשת של ה N900

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

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

הצריבה נעשת על ידי הקשה על מקש ה u כאשר מדליקים את הטלפון והוא מחובר למחשב עם הכבל usb, עם תוכנת הצריבה של נוקיה. התוכנה של נוקיה מחפשת במחשב את הממשק USB כלומר הכתובת שלו בחומרה שהוא מקבל מהקרנל ומתחיל לעשות מה שביקשנו.

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

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

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

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

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

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

הקנס בשימוש במוצרים של אורנג'

בשורה התחתונה:

לפני שתקראו את השאר תפנימו אל תרכשו שירות מחברת פרטנר (אורנג') לא בצורת ההתנהלות הנוכחית של החברה.

הסיפור הוא כזה. רכשתי ביום רביעי האחרון (19/11/2010) מחברת פרטנר (מותג אורנג' הבין לאומי) מודם וSIM ללא הגבלה – לגלישה וזה עבור העסק שלי. כאשר חיברתי את המודם למחשב גיליתי שהוא לא מצליח להתחבר. ניסיתי את אותו ה SIM בטלפון הסלולרי שלי ואותה התנהגות בדיוק. התקשרתי למוקד של חברת פרטנר והועברתי למערכת הData שלהם. שם הסבירו שיש בעיה "קטנה" עם הSIM ויחזרו אלי בשעה הקרובה כאשר יפתרו את הבעיה. לאחר שראיתי אחרי שעה שלא חזרו אלי, הרמתי שוב טלפון, ושם הוסבר שיש בעיה והבעיה תיקח בין 4 ל8 שעות לפתרון, ובמקרה הרע ביותר עד שבוע. אז שאלתי לסיבת התקלה, והסבירו לי שיש תקלה בAPN (ניסו לגרום לי לרדת מהנושא).

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

ביום חמישי התקשרתי שוב לאחר ניסויים להתחבר ועברו למעלה מ16 שעות אחרי שפניתי למוקד (זוכרים פתרון בין 4 ל8 שעות). שם ענה לי אותו מוקדן מיום רביעי והסביר שעדיין יש את התקלה, אז שאלתי איך זה יתכן שכל לקוחות החברה סובלים מגישה ל Access Point שלהם, וכאשר הוא הבין שהוא לא יצא עם התירוץ הזה שוב, פתאום הוא "גילה" כי יש עוד 2 בעיות על הקו המדובר, וזה יקח בין יומיים לשבוע של עבודה לפתרון.

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

התחברות למודם סלולרי בלינוקס

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

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

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

המצרכים: התקינו את התוכנה wvdial ואת pppd, וכמו כן, מומלץ מאוד לוודא שusbutils מותקן (ללא קשר) ולסיום גם התקנה של usb_modeswitch תעזור לכם.

עכשיו צריך להגדיר את wvdial.conf אשר יושב ב /etc/. חסכתי לכם עבודה והנה הדבקה שלו (אצלי הוא גם מותאם כבר לN900 בנוסף):

[Dialer mobile]
Init3 = AT+CGDCONT=1,"IP","uinternet"
Check Def Route = 1
Modem = /dev/serial/by-id/usb-Nokia_N900__PC-Suite_Mode_-if06
Password = ''
Username = ''
Phone = *99#
Dial Command = ATDT
 

[Dialer modem]
Init3 = AT+CGDCONT=1,"IP","uinternet"
Check Def Route = 1
Modem = /dev/serial/by-id/usb-USBModem_HSPA_Data_Card_1234567890ABCDEF-if05-port0
Password = ''
Username = ''
Phone = *99#
Dial Command = ATDT

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Stupid Mode = yes
Modem Type = Analog Modem
ISDN = 0
New PPPD = yes
#Modem = /dev/ttyUSB4
Baud = 9600

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

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

$ wvdial modem

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

n900 – עכשיו גם אני

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

אבל הנה כמה דברים שלא מספרים לכם על  n900 לפני שאתם קונים:

  • ישראל לא קיימת כאיזור זמן. לבנון קיימת, ירדן קיימת, מצריים קיימת, אבל ישראל ? לא ! אז מה עושים ? בוחרים את ארה"ב בהתחלה (אח"כ משנים לבריטניה בשביל לעבוד במטרים וכו') ובמקום בחירה אוטומטית של זמנים, עושים בחירה ידנית, בוחרים את ישראל מהמפה עצמה מכוונים בכוח את השעון והתאריך, ויש !
  • אם תנסו להגדיר פרופילי wifi, תגלו שסתם בזבזתם זמן. הרשת שהוא מגלה כרגע והחלטתם להתחבר אליה לא משתמשת בהגדרות ששמתם מראש. אבל אחרי שהתחברתם פעם ראשונה הוא זוכר את הסיסמאות וכו'. אז אל תגדירו פרופילי רשת, חבל על הזמן שלכם (לפחות לפני השדרוג firmware לא בדקתי אחרי).
  • אתם חייבים אינטרנט בשביל להשתדרג, ובניגוד למוקו (אחד הדברים שאני מוצא את המוקו טוב יותר לשם שינוי), אי אפשר לעשות ip forwarding לn900 ולכן או אינטרנט סלולרי (אין לי 3g וגם אם היה זה סתם יקר)או wifi בלבד. אשמח לגלות שפספסתי משהו וכן אפשר.
  • האקסולמטר שלו בברירת מחדל כבוי. אין לי מושג איך מדליקים אותו. אשמח לעזרה בנושא.
  • זה לא אופן מוקו וזה לא אנדרואיד. אפילו אל תנסו לדמיין שהוא קרוב לאיפון כי אני מבטיח שתשלמו על זה  (הרבה כסף – על האיפון כמובן).

אחרי הנקודות האלו, חשוב להבין כי n900 הוא משהו בין netbook לטלפון. או בין טאבלט לטלפון. הוא multi-tasking אמיתי, ואם המסך היה גדול יותר היה עוד יותר מהנה, ואני חייב לציין שזה אחד מהטלפונים היחידים שאני באמת נהנתי לשחק איתם ולהשתמש בהם, מכל הטלפונים ה"חכמים" למינהם. אבל אם לא היתה לי דרישה לסוג טלפון כזה מלקוחות מסויימים, אז עדיין הייתי ממשיך להסתפק בטלפונים פשוטים שעולים גג 500 ש"ח במקרה הרע…

* זהירות קצת סרקסטיות והומור מוזר, אם לא הבנתם זה בסדר, כנראה שמשהו אצלי לא תקין 🙂

על רובוטים ואנשים …

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

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

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

  1. מכשירים "חכמים" לעסקים
  2. מכשירים "רגילים" למשתמש הפרטי

להמשיך לקרוא

גם אנדרואיד בידנו

חברה אחת שיחררה אתמול Patch שכבר נכנס לsvn אשר מאפשר לעבוד בצורה טבעית עם FPC במערכות מבוססות Android באמצעות JNI.

אותו Patch נוסה על מספר של מכשירים מבוססי Android בניהם Milestone ו Droid של מוטורולה, HTC Desire, Nexus One, Samsung Galaxy S ועוד.

ה Patch שנכתב הוא עבור Android Dalvik VM אשר מפעיל עוד כמה דגלי ARM אשר לא נתמכו עד ל Patch ב FPC.

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

כתוב פעם אחת – קמפל לכל טלפון שאתה צריך 🙂

פיתוח אפליקציות סלולריות בצורה גרפית

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

אם זה זה נשמע לכם מוזר, אז כבר כיום אפשר ליצור אפליקציה אחת שתרוץ אצלכם בשולחן העבודה (בלינוקס, ווינדוז, מאק, יוניקס ועוד כמה מערכות הפעלה), בiPhone/iPad (אם נתעלם כרגע מההגבלה ההזויה של אפל על ידי מתן הורדת אפליקציה לא מ App Store), טלפונים מבוססי Windows CE/Mobile, אופן מוקו, ובטלפונים מבוססי Maemo 5 (קרי N900) והכל ללא שינוי הקוד שכתבתם !

כיום אפשר לפתח אפליקציה בצורה טבעית או ב FPC נקי או בעזרת Lazarus עבור Maemo 5 ושאר הפלטפורמות הטלפוניות שהזכרתי. לא מאמינים, אז הנה 2  תמונות המסך ששוחררו בנושא, גם שוחררו הקבצים הבאים (הראשון זה מה שצריך בשביל לקשר את האפליקציה, האחרון זה patch עבור לזרוס):

ואם תהיתם לגבי MeeGo, אז זו התשובה שקיבלתי כשאני שאלתי:

On Thursday 10 June 2010 22:03:29 ik wrote:
> Will it also work on MeeGo ?

That would require some work and a MeeGo device.
But this is a good base to more easily add MeeGo support.
I have no tried yet to install MeeGo on the N900,
anyhow MeeGo will not be officially supporting N900.
MeeGo probably will be Qt 4.7.

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

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

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

dbus לטלפון

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

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

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

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

$ mdbus2 -s org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.SIM.RetrievePhonebook contacts 1 255

התוצאה היא כל רשימת הכתובות שיש לי ב SIM, כך שה SIM שלי תקין לגמרי.

השורה  אומרת לdbus להתחבר לכתובת של org.freesmartphone.ogsmd ואז לקבל את הפונקציות הקיימות מ /org/freesmartphone/GSM/Device ובסוף להפעיל את הפונקציה RetrivePhonebook עם 3 פרמטרים:

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

התוצאה היא רשימה של כל אנשי הקשר שנמצאים ב SIM. מגניב שאפשר לעשות הרבה פעולות ידניות לטלפון. נראה אותכם מדבגים ככה את ה iPhone 😛

חיוג מהיר ל OpenMoko חלק ראשון

מאז העדכון האחרון, בנתיים FPC בגרסה 2.5.1 מכיל bootstrap שעובד במוקו -> ניסיתי עם shr, אז החלטתי לבנות תוכנית לניסוי עם לזרוס עבור OpenMoko.

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

פיתוח למוקו

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

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

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

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

מוקו הסרבני

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

פתאום המוקו החליט שכרטיסי זיכרון הם מחוץ לתחום של מוקו, ואני שובר את הראש כל פעם להבין מה לא בסדר. העניין הוא שגם בגרסה שצרובה למכשיר, שלא לדבר על כל מנהל אתחול שקיים (בNOR ובNAND, שזה אומר שניסיתי את Qi ואת u-Boot) לא מצליח להבין שיש לו כרטיס זיכרון. זה לפחות עד ל12 בלילה היום. החלטתי לעשות ניסוי, אחרי שנשיפות מאוד חזקות לנקות את החריצי קריאה לא עזרו, ניגבתי אותם במטלית חלקה ונקייה, וזה נראה שעשה את העבודה.

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

OpenMoko שיר הנושא

לב מ' (שם המשפחה לא ידוע לי לצערי), יצר שיר המבוסס על שיר הנושא של סדרת המדע בדיוני (המדהימה לדעתי האישית) Firefly.

השיר פורסם ברשימת הדיוור של OpenMoko ישראל :

Boot from NOR, flash the NAND
Answer calls with shell command
I don't care, I'm still free
You can not take my phone from me

Keep your hacks and jailbreaks
I ain't never switching back
Source and hardware are free
You can not take my phone from me

Theres no other phone for me
But the one thats running free

You can not take my phone from me

את השיר המקורי עם המילים אפשר למצוא כאן.

מי מתנדב/ת להקליט את השיר החדש ?

על טעויות משלמים

התקנתי השבוע את הדמוי אדם של גוגל (Android) על הNeo FreeRunner שלי.

כבר בבוט הראשון הבנתי את גודל הטעות:

  1. הוא שכתב לי את ה NAND והעיף לי את uBoot
  2. הוא כתב את עצמו לתוך ה NAND למרות שרציתי שירוץ מה μSD (מיקרו SD).
  3. הממשק איטי להחריד
  4. הוא לא תומך בעברית
  5. הוא לא מצליח לקרוא את הרשומות מהSIM, רק להירשם אצל הכתומים
  6. הוא רגיש מאוד ללחיצות -> ניתקתי שיחה והוא חייג לי לעוד מספר "בטעות" כי הייתי על רשימת השיחות האחרונות
  7. הממשק לדעתי האישי לא אינטואיטיבי, למרות שכמה מהאנשים מהעבודה מאוד אוהבים אותו
  8. זה פשוט לא לינוקס. מה הכוונה לא לינוקס ? פרט לספריית etc לא מצאתי בו שום דבר שנראה כמו לינוקס, שלא לדבר על ההתנגות של לינוקס. אפילו פקודות בסיסיות ביותר של יוניקס ש POSIX מגדיר שחייבים להיות במערכת לא קיימות. פשוט אין, ניוק, נאדא, זיפ, כלום
  9. הוא מתנתק אחת ל4-5 דקות מידי פעם בלי סיבה אמיתית, דורון יכול להעיד על כך, וגם עוד כמה אנשים
  10. השמע של הקול כאשר מדברים אינו חזק דיו, ולקח לי הרבה זמן להבין איך בכלל מגבירים את העצמה, וגם אז זה לא עזר בהרבה

וזה רק מה שגיליתי בכמה שעות משחק איתו.

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

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

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

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 לדרך 🙂

ניסוי בGPS של Neo FreeRunner

החלטתי לעשות כמה ניסויים ל OpenMoko ול Tango GPS היות ובחול המועד אני רוצה לצאת ולשחק קצת ב Geo Caching (במידה וכמה חברים לא יבריזו לי הפעם).

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

הדבר הנחמד במעבד GPS של Neo, הוא בכך שהוא מזהה תזוזה (גם עדינה מאוד), ואת כיוון התזוזה ביחס לצפון. יש עם זה כמה בעיות (או אלי זה Tango), אבל הוא מזהה את ההליכה שלי בתוך הבית, ואפשר לראות מסלול אדום של כל חדר או המסדרון שהייתי בו עם Neo בתוך הבית. אבל אני חייב לציין שמהירות ההליכה שלי קצת מוזרה לי לפי הצורה ש Tango הציג. הוא הציג רוב הזמן שהלכתי בין 6-10 קמ"ש. אבל בממוצע הוא כתב שהלכתי 5.70 קמ"ש בממוצע. ואם זה לא מספיק מוזר, אז כשהוא נמצא על השולחן ולא זז (נשבע לכם) הוא אומר שהשולחן זז בין 1 ל2 קמ"ש.

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

בזמן הטיול גיליתי של Neo חסר דבר אחד מאוד מאוד מאוד מאוד חשוב (בייחוד בקיץ), ואני מבין שבגלל זה הפסיקו את הפיתוח של GTA03 וחזרו להמשיך לפתח את GTA02: גלאי נחשים!

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

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

תמיכה של FPC ב OpenMoko

כאשר קיבלתי את Neo התחלתי לבדוק איך לגרום ל FPC לעבוד איתו. בהתחלה שלחתי הודעות ברשימת הדיוור, וגיליתי שגם בני (בנידיקט) מנסה לעשות אותו הדבר, רק לו יש הרבה יותר ניסיון ממני בעובדה עם Embedded.  מסתבר שבכלל יש הרבה מפתחי Embedded בקהילת ה FPC. לכמה מהם אפילו יש Free Runner .

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

הסיבה לקושי הוא בכך שיש 2 סוגי ABI עבור ARM בתמיכה של libc, ו FPC תומכת הרבה שנים כבר בגישה הישנה יותר של ARM אבל כמעט בכלל לא בגרסה החדשה.

הגרסאות השונות נקראות:

  1. OABI – תמיכה טובה במעבדי ARM ישנים, אבל אין תמיכה בהרבה תכונות של מעבדי הARM החדשים יותר (FPC תומכת בצורה טובה ב ABI הזה)
  2. EABI – תמיכה חדשה יותר למעבדי ARM עם יכולות טובות יותר. למשל תמיכה במעבד מתמטי ונקודות צפות ועוד הרבה דברים (ל FPC אין תמיכה טובה בו, היות והמימוש לתמיכה מאוד חדש וכמעט ולא נבדק)

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

בקיצור, בני השקיע הרבה יותר ממני והבין איך אפשר לבנות על לינוקס את FPC בשביל שהוא יתמוך ב OpenMoko . לצרוך התמיכה הזו צריך להדר את binutils בצורה הבאה: להמשיך לקרוא

תחרות התוכנות ל OpenMoko הראשונה

הסתיימה לה תחרות התכנות לOpenMoko הראשונה. בתחרות קיבלנו כמה תוכנות שהתפקיד שלהם הוא: לספק לנו נגני שירים ו podcast ל OpenMoko.

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

u-boot ב FreeRunner

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

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

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

היות וקראתי ב1 בלילה את התעוד שיש בוויקי של OpenMoko בנושא, תרמתי לכאב ראש שהיה לי, אם כי הוא לא היה קשור בדיוועד לבעייה שהיתה לי.

בעיקרון צריך לחלק את ככרטיס ה SD , ל2 מחיצות:

  1. מחיצה קטנה לקרנל (8 מגה) שהיא vfat (או FAT 16 אם תרצו בלשון מיקרוסופט) – למי ששואל איך לעגן את זה בתוך המערכת קבצים, אז לא צריך, פשוט תזרקו לשם את הקרנל
  2. מערכת קבצים של ext2/3 [בהתאם לרצון שלכם] – רק אם ה u-boot שלכם מעודכן, אם הוא ישן יחסית יכול להיות שהוא לא יצליח לעבוד עם ext3, כי יש קרנלים שמשתמשים ב ext3 בתור מודול חיצוני ולא משתמשים בו בתמונת bzImage* שנוצרת.

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

חשבתי בזכות דורון ורם-און (כבר התקדמות כלשהי -> לחשוב) כי הבעיה שלי היתה בכך שהפכתי בין 2 המערכות קבצים, אבל זה לא שינה ל u-boot הוא המשיך לטעון את הקרנל עד למצב שהוא נתקע. אני חייב להגיד שהפכתי את המערכות קבצים בגלל שהייתי עייף ועבדתי בלילה [כאילו שיש מקום לתירוץ הזה]. מסתבר אבל שגם לינוקס וגם u-boot פחות רגישים למערכות קבצים האלו, והצליחו לעבוד אז זו לא היתה הבעיה שלי.

אתמול החלטתי להתלבש על הנושא יותר לעומק (אז גם הבנתי שהפכתי את המערכות קבצים) והתחלתי להציף את רשימת הדיוור של OpenMoko גם הישראלית, ואח"כ גם של הקהילה, וקיבלתי כמה תשובות מעניינות (אחרי שהקהילה העלתה משהו שברשימת דיוור הישראלית לא עלו). דבר ראשון מסתבר שבברירת מחדל u-boot טוען את ה SD בתור read-only במקום read write. דורון סיפק לי תמונה (לכל באי רשימת הדיוור) שמחליפה את u-boot [הגדרותיו] שיטען כמו שצריך (כלומר בתור read write) את ה SD בתור Dual Boot.

אבל לא חייבים את התמונה. אפשר במצב ה boot manager לעבוד עם usb ותוכנת מסוף סיריאלית כדוגמת minicom, neocon ועוד כמה וכמה. מהתוכנות אפשר לעבוד עם פקודות printenv ו setnev (שבטח תתקלו בהם בוויקי של OpenMoko באיזשהו שלב) בשביל לשנות את ההגדרה מ ro ל rw.

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