נכתב על ידי עמרי בנושא פרטיות
לפני כמה חודשים העלתי את הרעיון של גוגל אנטיליטיקס, תוסף פיירפוקס שימנע מהדפדפן שלכם לספר לגוגל לאן אתם גולשים.
לא יצא לי לפתח את זה, אבל חשבתי לעצמי שזה יכול לחסום גם אתרי ריגול אחרים.
מסתבר שמייקרוסופט ישלבו משהו דומה, באקספלורר 8:
תכונה שתמנע גישה לאתרי גוף שלישי כאשר אתם גולשים כדי למנוע זליגת מידע לאותם אתרים.
השאלה הגדולה היא אם מייקרוסופט תפעיל את כברירת מחדל, ואם כן - איך גוגל יגיבו.
זה לא שאין פתרונות טכניים שיאפשרו לגוגל לאסוף את המידע בכל זאת, אבל לכו תשכנעו מליוני בעלי אתרים להזיז את הישבן ולממש אותם.
נכון לכרגע, פיירסטטס לא מושפע מהחסימה הזו כי הוא לא עובד בצורה שרגישה לה.
מצד שני, הגרסא הבאה של פיירסטטס תתמוך בהקלטת כניסות על ידי ג'אווה סקריפט, ומי שינסה להשתמש בתכונה הזו כדי להקליט כניסות מכמה דומיינים שברשותו עלול לגלות שגוגל אנטיליטיקס של מייקרוסופט גורם לו לבעיות.
אגב:
סביר מאוד שהתכונה הזו תחסום גם את הפרסומות של גוגל (ושל עוד כמה מפרסמים שעובדים בצורה דומה). הולך להיות חם.
8 תגובות »
נכתב על ידי עמרי בנושא Java, קוד פתוח
הPreprocessror שפיתחתי במסגרת העבודה של בVollee, שנכלל בפרוייקט הקוד הפתוח אנטנה (פרוייקט שעוזר בפיתוח ובבניה של ישומי ג'אווה למכשירים סלולריים), אושר על ידי Eclipse Legal, ויכלל בMTJ.
MTJ הוא פרוייקט Eclipse רשמי שמטרתו להוסיף לEclipse תמיכה בפיתוח ישומי ג'אווה למכשירים סלולריים. כבר היום יש את EclipseME, פלאגין שפותח במשך שנים על ידי קרייג סטרה, שעושה את אותה עבודה - למעשה וקרייג עובד עם צוות MTJ, וMTJ מיועד להיות תחליף רשמי של EclipseME.
תהליך הקליטה של הPreprocessor לא היה קל:
הקוד המקורי הסתמך על ANTLR 2.7 (שמייצר אוטומטית קוד לפענוח קוד לפי הגדרה פורמלית - Parser generator) - הבעיה עם ANTLR 2.7 היתה שהרשיון שלו לא תאם את הרשיון של Eclipse (מסתבר שPublic domain זה לא תמיד טוב מספיק). למרבה המזל, ANTLR 3.0 כבר שוחרר ברשיון BSD שתאם את הרשיון של Eclipse, אבל הוא לא תאם את הקוד של הPreprocessor.
החב'רה בMTJ שאלו אם אני מוכן להמיר את הקוד כך שישתמש בANTLR 3.0: בינתיים עזבתי את Vollee ואת כל העולם של הפיתוח לסלולריים (בשעה טובה ומוצלחת) אז סירבתי, אבל אמרתי שאשמח לייעץ להם ולעזור מרחוק.
הם הרימו את הכפפה, וכמעט בלי עזרה מפתח אחד - דייגו סנדין - המיר את העסק לANTLR 3.0 תוך כשבועיים.
הזמן עבר, ולפני חודשיים צוות MTJ קיבל אישור למסור לי את הקוד, כדי שאקלוט אותו לתוך Antenna.
מכיוון שהקוד כלל בדיקות יחידה מקיפות, שדייגו הקפיד להשתמש בהן כדי לבדוק את ההמרה - התוצאה היתה טובה מאוד.
עוז זמן עבר, והיום הקוד קיבל אישור מEclipse Legal ויכנס לענף הראשי של MTJ.
אין תגובות »
נכתב על ידי עמרי בנושא Java, קוד פתוח, תכנות
כשכותבים בדיקת יחידה (Unit test) לקוד שקשור לבסיס נתונים, צריך לאתחל את בסיס הנתונים לאיזה שהוא מצב ידוע ויציב לפני כל בדיקה.
מול MySQL, אפשר להשתמש בmysql עצמו כדי ליבא סקריפט SQL מוכן, אבל זה לא נחמד במיוחד:
צריך לפתוח תהליך חדש, ויש כל מני בעיות מעצבנות עם זה (בג'אווה למשל, חובה לקרוא את הפלט של התהליך, אחרת הוא יתקע בכתיבה לפלט הסטנדרטי כשיתמלא הבאפר).
הרבה יותר נחמד יהיה ליבא את הקובץ ישירות מתוך ג'אווה, בשימוש בJDBC, לא?
הנה קוד שעושה בדיוק את זה, הוא מקבל זרם קלט (InputStream) שיכול להיות כל דבר, וגם Connection JDBC שחיברתם מבעוד מועד, וקולט את הSQL לתוך בסיס הנתונים.
הקוד מתמודד עם הפלט הסטנדרטי של mysqldump.
public static void importSQL(Connection conn, InputStream in) throws SQLException
{
Scanner s = new Scanner (in );
s. useDelimiter("(;(\r)?\n)|(–\n)");
Statement st = null;
try
{
st = conn. createStatement();
while (s. hasNext())
{
String line = s. next();
if (line. startsWith("/*!") && line. endsWith("*/"))
{
int i = line. indexOf(' ');
line = line. substring(i + 1, line. length() - " */". length());
}
if (line.trim().length() > 0)
{
st.execute(line);
}
}
}
finally
{
if (st != null) st.close();
}
}
2 תגובות »
נכתב על ידי עמרי בנושא כללי
כתבה בYNET:

בהכנת הכתבה השתתפו שלושה אנשים, ואף אחד מהם לא יודע לעייט.
4 תגובות »
שוחררה הגרסא האחרונה (ככל הנראה) בענף של PHP 4.4.
הגרסא הזו מסמנת את סוף התמיכה הרשמית בPHP4.
PHP5 כבר בחוץ במשך יותר משלוש שנים, אבל עד עכשיו האימוץ שלו היה די איטי, מסיבות של ביצה ודינוזאור:
מפתחי התוכנות לא רצו להפסיק לתמוך בPHP4 כדי לא לאבד משתמשים. חברות אירוח האתרים לא טרחו לשדרג כי כל התוכנות החשובות תמכו גם ככה בPHP4 והמשתמשים, מה איכפת להם?
בשנה שעברה נפתח אתר gophp5.org, ששם לעצמו למטרה לדחוף את האימוץ של PHP5.
הרעיון הוא שאם מסה מספיק גדולה של פרוייקטים תעבור לPHP5, ומסה מספיק גדולה של חברות אירוח תעבור לPHP5, לשאר חברות האירוח לא תהיה ברירה והן תאלצנה לשדרג או לאבד משתמשים, ואז לשאר הפרוייקטים לא תהיה סיבה להשאר בPHP4 והם יוכלו להתחיל סוף סוף לנצל את היכולות של PHP5.
בפברואר 2008 כבר היו מעל 100 פרוייקטי תוכנה שהתחייבו להפסיק לדאוג לתמיכה בPHP4 (זה לא אומר שהם ילכו וישברו את התמיכה בPHP4 בכוונה, פשוט שהם יפסיקו לדאוג שקוד חדש ירוץ בPHP4), ומעל 200 חברות איכסון שתומכות בPHP 5.2 כביררת מחדל וgophp5 טענו להצלחה והפסיקו לאסוף הרשמות.
אז למה לא לתמוך בPHP4? הנה דוגמא מאתמול:
JSON הוא דרך להעביר מבנה נתונים כלשהו לייצוג של מבנה הנתונים כאובייקט ג'אווה סקריפט, והוא אחת הדרכים הפשוטות והיעילות ביותר להעביר נתונים מקוד בצד השרת לדפדפן (שפשוט מפעיל על הטקסט שחוזר את המפסק (parser) של ג'אווה סקריפט כדי לקבל אובייקט מוכן לשימוש.
למרות שראשי התיבות של AJAX הן Asynchronous Javascript And XML, מעולם לא השתמשתי בAJAX כדי להעביר XML, למעשה אני מוצא את הרעיון מזעזע. הרבה יותר קל להעביר JSON, או אפילו קוד HTML ממש.
JSON משמש בהרבה מאוד פרוייקטים מבוססי AJAX, ומכיוון שאין בPHP4 תמיכה מובנית בJSON (אחרי הכל, PHP4 הוא בן שמונה, וJSON הוא די חדש בשכונה) צריך להשתמש בספריות חיצוניות שיודעות להעביר אובייקט PHP לפורמט JSON, אחת הספריות הנפוצות היא Services_JSON (למעשה אני משתמש בספריה הזו בFireStats).
הספריה כתובה בPHP, ולמרות שהיא עובדת נכון, היא לא ממש עובדת מהר, במיוחד כשממירים מבני נתונים גדולים (לא עצומים, משהו בסדר גודל של מערך עם 1000 אובייקטים טיפה מורכבים) לJSON.
ממש אתמול ניסיתי לשפר ביצועים של ישום PHP, אחרי חפירות גיליתי שאחד הדברים שמאטים מאוד את העסק היה המרה של תשובה לדפדפן לJSON בשימוש בServices_JSON, כשאני אומר איטי, אני מתכוון ל8 שניות.
שמונה שניות שהשרת טוחן את הCPU שלו כדי להכין תשובה ללקוח (במקרה הספציפי הזה, במקרים אחרים עם יותר נתונים זה כמובן יותר גרוע).
ברגע שראיתי את זה, לקח לי בדיוק שניה וחצי להיזכר שPHP5 תומך בJSON. בדיקה מהירה בphp.net הניבה את שתי הפונקציות הפשוטות json_encode וjson_decode. החלפתי את השימוש ב Services_JSON בקריאה לפונקציות של php5, ולא הייתי מופתע במיוחד לראות שהמרה של אותו מבנה נתונים לוקחת פתאום 40 מילישניות.
שיפור של פי 200, בזמן עבודה של כמה שניות (טוב, חוץ מלמצוא את הבעיה )
השיפור נובע מכך שהתמיכה של PHP בJSON לא כתובה בPHP אלא בC, ולכן היא הרבה הרבה יותר יעילה.
השיפור הזה התאפשר רק כי הפרוייקט הספציפי הזה לא צריך לתמוך בPHP4.
מה אני אצטרך לעשות בFireStats, שעדיין תומך בPHP4 כדי להנות מהשיפור הזה? לבדוק אם אני על PHP5, ואם כן להשתמש בפונקציות האלו אחרת להשתמש בServices_JSON. לא כיף במיוחד.
ואם לא היתה לי סיפריה כמו Services_JSON (כי אין, או כי תנאי הרשיון לא מתאימים לי), הייתי נאלץ לכתוב אחת או פשוט לעבוד בצורה אחרת, פחות נוחה. גם לא כיף.
אז איך מתקדם האימוץ של PHP5?
החל מFireStats 1.3 ששחרתי לפני יותר משנה, FireStats מכילה רכיב ששולח (באישור המשתמש) מידע מערכת אנונימי. חלק מהמידע הוא גרסאות הPHP והMySQL.
הכוונה היא שאני אוכל להשתמש במידע הזה כדי להחליט בצורה יותר מושכלת במה אני צריך לתמוך.
המידע הצטבר לי בבסיס הנתונים, ונכון לכרגע יש לי מידע על כמעט 12000 התקנות. מה שאומר כמעט 12000 שרתים בעולים (אני מתעלם ממקרים של כמה התקנות על אותו שרת).
למי שתוהה, זה לא אומר שFireStats הותקנה 12000 פעמים, אלא ש12000 פעמים המתקינים הסכימו לשלוח מידע מערכת אנונימי.
מי שרוצה את המידע הגולמי מוזמן לקחת אותם מפה (יצוא MSQL, כ5 מגה דחוסים, 65 מגה פרושים).
אז ישבתי כמה שעות כדי להוציא מהנתונים הגולמיים שני גרפים נחמדים:
הראשון הוא אחוזי ההתקנות של PHP 4 מול PHP 5, במהלך השנה האחרונה.
למרות שאחוזי ההתקנה של PHP4 ירדו במהלך השנה האחרונה מ52% ל38%, עדיין מי אי אפשר להתעלם ממנו. נקווה שהוא ימות סופית בקרוב:

השני הוא אחוזי ההתקנות של הגרסאות המשמעותיות של MYSQL:
כיף לראות שMYSQL 5.0 שולט בשוק, אבל נראה שMYSQL 4.0 הזוועתי נתקע על 7% ולא רוצה למות.
בכל מקרה, MYSQL 4.0 הוא בהחלט מועמד לנטישה, וכבר היום יש לא מעט תכונות חשובות של FireStats שלא נתמכות בגרסא הזו.

7 תגובות »
אם יש משהו שאני אוהב בפרוייקטי קוד פתוח, זה שאנשים מוכנים לפעמים לעבוד די קשה כדי לשפר אותם.
את IP2C, ספריה למציאת המדינה של כתובת IP שחררתי לפני כמעט שנתיים, וכתבתי גם פוסט שמספר על המימוש שלה פה.
IP2C ממומשת בPHP ובג'אווה. מה שמיוחד בה זה שהיא מסוגלת לחפש ישירות על הקובץ, מה שאומר שחיפוש בודד הוא מאוד מהיר כי לא צריך להעלות את כל הקובץ לזכרון.
הייתי לגמרי מרוצה מהביצועים של הספריה בPHP (כ1200 חיפושים בשניה במחשב האחרון שמדדתי), אבל הביצועים בג'אווה היו טובים יותר משמעותית - כ8000 חיפושים בשניה על אותו מחשב בעבודה ישירות על קובץ הנתונים.
ההבדל בביצועים בין PHP לג'אווה לא הטריד אותי, כי היה לי ברור שPHP תהיה יותר איטית מג'אווה, אבל הוא כן הטריד את תומס רומר שהתיישב על העסק לילה שלם ושיפור את הביצועים של גרסאת הPHP ב150%.
תומס כתב פוסט מעניין על השינויים שהוא עשה, ושלח לי את השינויים. שבמבט ראשון נראים טובים ואני אקלוט אותם לפרוייקט אחרי בדיקה מעמיקה יותר.
בנוסף דיברנו קצת בIRC, והוא יעבוד על תמיכה בבסיס הנתונים של software77 :
software77 מספקים בסיס נתונים של IP למדינה, שאמור להיות יותר איכותי מבסיס הנתונים שIP2C משתמשת בו כרגע (webhosting.info), אבל יש להם קצת בעיות בעקביות המידע.
התחלתי לעבוד על תמיכה בבסיס הנתונים שלהם לפני כמה חודשים טובים, אבל כשראיתי שזה נמשך יותר מדי הקפאתי את העסק (שעדיין נמצא בTODO שלי, קבור איפשהו )
תומס ימשיך מאיפה שהפסקתי.
אין תגובות »
נכתב על ידי עמרי בנושא פיירפנג.רשת
לאחרונה יותר ויותר אנשים התלוננו שהבלוג אכל את התגובה שלהם.
למרבה הצער, לא ראיתי ברשימה של SK2 את התגובות הנ"ל, למעשה רשימת הספאם שלו היתה ריקה לגמרי.
לפני חמש דקות החלטתי לנסות לאפס את התוסף אחרי שקיבלתי עוד אימייל על ספאם שלאחריו הרשימה היתה ריקה.
לחצתי על כל הכפתורים האדומים הגדולים, ואחרי זה פתאום אני רואה את הרשימה של כל הספאם שנלכד לאחרונה.
אני אנסה לעבור עליו ולאשר את מה שרלוונטי.
אם הבלוג ממשיך לאכול לכם תגובות נא להודיע לי. (גם אימייל טוב, יש את האימייל בדף האודות).
אין תגובות »
כשהיתי בסיאטל לפני כשמונה חודשים, קניתי לי אייפוד טאצ'.
המכשיר יפה, מהיר ומגניב אבל חסר בדבר אחד עיקרי:
חייבים להשתמש בiTunes כדי להעלות עליו קבצים.
iTunes היא אחת התוכנות המאוסות ביותר שאני מכיר, היא כבדה מאוד, הממשק שלה מעצבן ומתנשא (כן, ממשק מתנשא, יש דבר כזה), והיא מלאה באגים, וכדי לעצבן ממש - היא מחייבת חלונות או טייגר (Mac OS X).
השימוש העיקרי שלי בטאץ' הוא לשמיעת פודקסטים, ומטבע הדברים אני צריך לעדכן את העסק לפחות פעם בשבוע.
כשרק קיבלתי את המכשיר ביליתי די הרבה זמן בנסיונות להשתמש בVMWare או בVirtualBox (תוכנות ווירטואליזציה) כדי להריץ חלונות בתוך VM ועליו את הiTunes, אבל התמיכה של התוכנות האלו בUSB לא היתה מספיק טובה ונאלצתי להשתמש בעותק חלונות אמיתי כדי לעדכן את הקבצים, מה שגרם לכך שלפעמים לא עדכנתי אותם לתקופות ארוכות פשוט כי לא יצא לי להעלות את החלונות.
לפני כמה חודשים VMWare שיפרו מספיק את התמיכה שלהם בUSB והחל מגרסא שש בערך אני יכול לעדכן את האיפוד בלי לאתחל את המחשב, דבר ששיפר משמעותית את תדירות העדכונים שלי.
אבל עדיין, להריץ חלונות בתוך VMWare, ובתוכו להריץ את iTunes זה חתיכת מבצע כדי לעדכן קבצים.
אם פרצתם את הטאץ' שלכם, נוספה אפשרות נוספת:
להתחבר למכשיר דרך חיבור אלחוטי, לעגן את מערכת הקבצים עם sshfs (מערכת קבצים מבוססת fuse שמאפשרת לעגן דרך SSH).
העסק לא עבד מספיק טוב לטעמי, גם כי היו לי בעיות בחיבור האלחוטי וגם כי המכשיר אהב להכנס לסטנד-ביי תוך כדי עדכון, מה שגרם לחיבור להתנתק.
חוץ מזה זה פשוט לא עבד כמו שצריך ברמה של עדכוני הקבצים, למרות שאני מאמין שבחזית הזו המצב השתפר מאז.
התחלתי לחקור למה אין מימוש פתוח של פרוטוקול התקשורת שאפל מממשים על גבי חיבור הUSB, ונתקלתי בפרוייקט iFuse, ששם לעצמו מטרה לממש את הפרוטוקול ולספק כלי לעיגון מערכת הקבצים של אייפוד טאץ' ואייפון (שוב על בסיס fuse)
הפרוייקט היה תקוע במשך חודשים ארוכים בנסיונות למצוא דרך מסביב להצפנה בפרוטוקול (הפרוטוקול מוצפן בSSL, נבזי במיוחד מצד אפל), אבל לפני כמה שבועות היתה פריצת דרך ומאז יש התקדמות כמעט יומית.
נכון לכרגע קריאה של הקבצים, וקבלת רשימה של קבצים בספריה נתמכות יפה.
עדיין יש קשיים עם כתיבה של קבצים, אבל לדעתי זה עניין של כמה שבועות.
ברגע שהעסק יעבוד, תפתח הדרך לאינטגרציה אמיתית של הטאץ' עם מגוון התוכנות ללינוקס שמנהלות שירים על מכשירים נישאים.
11 תגובות »
נכתב על ידי עמרי בנושא שינאה, אקטואליה, דעות
אז בואו נראה מה נשאר השאיר לנו הצדיק אולמרט:
חוק נתוני תקשורת, הרי הוא חוק האח הגדול - המשטרה תקבל גישה למאגר נתונים של כל שיחות הטלפון וכל האתרים שאתם גולשים אליהם, בלי צו שופט.
מה, אתם לא סומכים על המשטרה שתשמור על הנתונים שלכם מוגנים?
מה, חשבתם ששוטר ימכור את הנתונים בעבור כמה אלפי שקלים לבלשים פרטיים? אין סיכוי!
חוק סינון אתרים, הרי הוא חוק הצנזורשת, בו כל אדם יגלוש באינטרנט מצונזר אלא אם הודיע שהוא רוצה לקבל את הזואופיליה שלו לא מצונזרת.
ש"ס יגנו על הנפש שלכם מפני אתרי תועבה, כמו אתרי פורנו ואתרים שמלמדים דברים חשוכים כמו אבולוציה.
חוק מאגרי מידע ביומטריים, שאושר לאחרונה, מאפשר למדינה לאסוף נתונים ביומטריים על כל האזרחים, כולל טביעת אצבע ומי יודע, אולי גם דגימת DNA בהמשך. כדאי לקרוא את המאמר הזה.
פיספסתי משהו?
מדינת ישראל הפכה למעצמה של הפרת זכויות אדם בסיסיות, שנושאת את לפיד החושך לפני הדיקטטורות בעולם.
אולמרט, תתפטר!
אה, התפטרת כבר?
אולמרט, תעוף מפה לפני שתחרב את מעט הטוב שנשאר במדינה המשוקצת הזו.
3 תגובות »
|