Archive

Archive for אוגוסט, 2012

תוצאות הבחירות לכנסת השמונה-עשרה (בחתך קלפיות)

31/08/2012 5 תגובות

במפגש הפיתוח האחרון של הסדנא לידע ציבורי, ישבתי מול עפרי מפרוייקט הכנסת הפתוחה. עפרי בדק את הקובץ שהכנסת מספקת עם תוצאות ההצבעה בבחירות לכנס ה-18 (פורמט CSV). הקובץ מכיל פירוט הצבעות לגבי כל הקלפיות בארץ (~9200 קלפיות). כאשר המטרה הסופית היא לחבר את הקלפיות לתצוגת מפה בה אפשר יהיה לראות את נתוני ההצבעה בערים ובשכונות שונות.

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

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

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

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

עם רשימת הערים (יש 1157 כאלה), התחלתי לחשוב איך להוציא את רשימת הקלפיות בכל אחת מהן. מאחר וגם הקלפיות של כל עיר מחולקות לעמודים שונים לפי א"ב, יש צורך באזור ה-25,000 שאילתות שונות (1157*22) כדי למשוך את כל המידע. שוב פעם הרצתי לולאה של wget. בהתחלה שמתי לב שכל הורדה לוקחת הרבה זמן, למרות שגודל התשובות הוא מאוד קטן. בדיקה קצרה הראתה שמדובר בזמן תשובה איטי של שרת ה-DNS. טיפול מהיר בקובץ ה-hosts האיץ את התהליך משמעותית. אם בהתחלה הייתי בטוח שאחסם בכלל כמות החסימות, לאחר הגברת התדירות כתוצאה מטיפול בבעיית ה-DNS הייתי בטוח שחסם על ניסיון DDOS או משהו כזה, אבל מסתבר שזה לא הזיז לאף אחד (אולי מישהו באיזה מרכז ניטור קיבל התראה (: ).

כל הקבצים שהורדו עברו המרה ל-UTF8 עם iconv (כמה פשוט, ככה מדהים) כדי שאוכל לעשות grep בקלות משורת הפקודה כדי לאתר את כל הקבצים שמכילים הודעה שאין קלפיות שמתחילים באות הזאת. לאחר הסינון, שוב עובדו הקבצים עם sed כדי להוציא מהם את קוד היישוב, קוד הקלפי והתיאור שלו. כעת ניתן לרכז את כל הנתונים לקובץ אחד שמכיל את הנתונים שיש לי מהקובץ המקורי (מס' יישוב ומס' קלפי) ואת המידע שאני רוצה להוסיף (שם/תיאור הקלפי).

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

בדרך, בוצעו עוד כל מיני עיבודים עם sed ו-cut כדי לבצע המרות מפורמט CSV לכזה שמופרד בטאבים וגם כדי להוציא את השדות הרלוונטים לכל מיני עיבודים (בדרך למדתי שמפריד השדרות ברירת מחדל של cut הוא טאב).

לסיכום, תענוג לראות איך כלים פשוטים מאפשר לבצע את העיבודים על מספר קבצים גדול ועל קבצים גדולים בעלי אלפי שורות (סה"כ השתמשתי ב-cat, wget, sed, grep, iconv ובשתי לולאות בלבד). אם אתרי הבחירות השונים של הכנסת היו תואמים אחד לשני, אול היה טעם להפוך את כל הפקודות לסקריפט, אבל בנתיים רק שמרתי את הפקודות לשימוש עתידי.

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

:קטגוריותOpen Knesset

ליברה אופיס 3.6 – ניצול הזדמנות

13/08/2012 5 תגובות

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

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

בסופו של דבר, גם עזרתי לחבר וגם עשיתי קצת QA לתרגום. שתי ציפורים באבן אחת (:

:קטגוריותLibreOffice

Hspell 1.2

12/08/2012 3 תגובות

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

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

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

מפגשי פיתוח

09/08/2012 2 תגובות

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

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

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