דף בית חדש לFireStats

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

FireStats 0.9.4-beta

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

תולדות FireStats

נשאלתי למה אני כותב את FireStats, מה מניע אותי.

אז קצת היסטוריה:
בראשית, היה קאונטרייז, וראה עמרי כי טוב.
ובאו כניסות, ובאו גם ורובוטים כחול אשר על שפת היום, וראה כי רע.
והוסיף לקוד של קאונטרייז בוט אחר בוט, וראה כי טוב, עד שנמאס.
ותיקן את קאונטרייז, ויקח בוטים מקובץ, וישלח התיקון לאנדרס, ולא ענה.
וינג'ס, וינג'ס, עד שהתחיל את קאונטרייז 2, וישפר, וראה כי טוב.
ויקרא את הקוד של קאונטרייז, וראה כי מלא היה בכפילויות ובברדק, ויבין כי רע.
ויאמר לחבריו, למה לכם הקאונטרייז הזה, בואו אלי, ואני אראה לכם את האור, אני אראה לכם את FireStats.
ויכתוב, ויראה כי לא ידע PHP, וילמד,
ויכתוב, ויראה כי לא ידע HTML, וילמד.
ויכתוב, ויראה כי לא ידע CSS, וילמד.
ויכתוב, ויראה כי לא ידע JavaScript, וילמד.
ויכתוב, ויקודד, ויכתוב, וישחרר גרסא ראשונה לציבור.
ויחזור אנדרס מחופשה, ויראה כי קם בן ונכד לקאונטרייז, וישמח.

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

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

FireStats 0.9.2-beta

גרסא חדשה של FireStats מסתובבת ברחובות!

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

ניתן להשיג בשרתים המובחרים.

GPL במבחן

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

הסיפור המלא, באנגלית, נמצא פה.

FireStats 0.91 – Beta

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

N המלכות

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

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


FireStats 0.9- Beta

אחרי הרבה ימים ולילות, שחררתי בשעה טובה את גרסאת הבטא הראשונה של FireStats.

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

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

כמו תמיד, כל הפרטים בדף הבית של FireStats.