סוף הבצורת

אחרי חודשים יבשים בהם כל הסדרות היו בהפסקה, נגמרה הבצורת.
הסדרות האלו ממשיכות:
Prison break עונה שלישית.
Heroes עונה שניה.
The unit עונה שלישית.
כל פרקי הפתיחה של אלו היו מצויינים.

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

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

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

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

וורדקאמפ ישראל 2007 יוצא לדרך

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

wpil2007.gif

וורדפרס 2.3, בעיית פרטיות

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

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

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

אני חושב שהגלים מההתנהלות הזו רק מתחילים.

ישומים ויראליים בפייסבוק

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

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

Team Fortress 2

לפני כמה ימים Valve שחררו את הבטא של Team fortress 2 (להלן TF2) למי שקנה את הOrange box בקניה מוקדמת, ומאז שיחקתי במשחק כמה שעות טובות (תיקון: כמה שעות מאוד טובות).
ללא ספק, המשחק מספק את חווית ריבוי השחקנים הטובה ביותר שראיתי עד היום, וראיתי די הרבה.
הערה: המשחק עדיין בבטא, ומדי פעם יש עדכונים של המנוע ושל כללי המשחק שנועדו לאזן את השחקנים.

המשחק
TF2 הוא משחק מרובה שחקנים, אין מצב של שחקן יחיד. הוא מבוסס על TF, שהיה מוד של Quake 2, ולאחר מכן הוסב למנוע של Half life.
המשחק נראה, מרגיש ונשמע כמו סרט מצוייר מהיר ומטורף.
יש 9 דמויות שונות לחלוטין, כל אחת עם היתרונות והחסרונות שלה, עם הנשקים שלה, כמות הכוח שלה ועם האסטרטגיות שמתאימות לה.
מה שטוב כשמשחקים דמות אחת יוביל לפרישה מוקדמת כשמשחקים דמות אחרת, אז יש הרבה מה ללמוד כדי להגיע לרמה גבוהה.
בינתיים שחקתי לא מעט בסייר, בחייל, בכבד, במהנדס ובחובש, אז עליהם יהיה לי הכי הרבה מה לומר, אבל אני אשתדל לספר על כל הדמויות.
הגרפיקה של המשחק שונה מאוד מהגרפיקה של משחקים אחרים שרצים על מנוע הSource של Valve. המשחק נראה ומרגיש כמו סרט מצוייר, ולא מנסה להראות ראליסטי.
הסאונד מצויין וקורע מצחוק, ושניהם מעבירים מצויין את התחושה של הסרט המצוייר.

הדמויות
tf2

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

חייל
החייל הוא מכונת מלחמה משומנת, שהתברך במשגר טילים, רובה ציידים ואת, איתו הוא מלטף את ראשי אוייביו.
החייל בעל מהירות ממוצעת, 200 כוח אבל כוח אש רציני מאוד.החייל מסוגל לבצע קפיצת רקטה לגבהים מרשימים.
נכון לכרגע, שיא ההריגות שלי בוצע עם חייל (12), ובאותו סיבוב שברתי גם בענק את שיא הנזק שגרמתי בסיבוב אחד: 3010 (!), כמובן שנעזרתי בחובשים לרוב, אבל זה עדיין טוב מאוד.
tf2 soldier

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

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

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

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

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

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

חובש
החובש הוא בן הלוויה האולטימטיבי לחייל ולכבד. החובש יכול לרפא עם רובה הריפוי שלו ממרחק של כמה מטרים טובים חברים בצוות, וחובש ולוחם או כבד שיוצאים להתקפה יכולים לגרום נזק אדיר.
חובש יכול להעלות את הכוח של שחקן שהוא מרפא עד ל150%, אז אם למשל הוא מרפא כבד, הכוח שלו יעלה מהר מאוד ל450, שזה באמת המון.
בזמן שהחובש מרפא, מתמלא לו מד הUberCharge, ברגע שהוא מלא, החובש יכול לגרום לו ולחבר הצוות שהוא מרפא להפוך לבלתי פגיעים לחלוטין למשך 8 שניות.
צוות בלי חובש הוא כמו דג בלי אופניים, וכולם יודעים שדג זהב בלי אופניים לא שווה יריקה.
tf2 medic

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

לסיכום, מי שאי פעם שיחק ונהנה ממשחק FPS מרובה משתתפים, חייב לשים את הידיים שלו על טים פורטרס 2.
Maggots!

האינטרנט הוא בעצם של מייקרוסופט

דני ימין, מנכ"ל מייקרוסופט ישראל מנסה להצחיק:

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

לפי נטקרפט, כ34% מהשרתים הפעילים כרגע מריצים מערכות של מיקרוסופט. זה אומנם הרבה, אבל זה בטוח לא הכל וזה בטוח הרבה פחות מה50% של Apache.
אז מייקרוסופט, מאז XmlHttpRequest (שפותח בלי להבין ממש למה הוא טוב בשנת 2000) איזה מהפכה של טכנולוגית הווב הובלת?

Orange box

אחרי BioShock (אחלה משחק, סוף קצת מאכזב, חסר מצב ריבוי שחקנים), ושבירת שיאים חוזרת בGeometry wars (כרגע אני עומד על 1.53 מליון נקודות), הגיע הזמן לרענן.
Valve שחררו חבילת משחקים חדשה בשם Orange box בPre-release, עם כמה דברים מאוד מעניינים:
פורטל
משחק פאזלים מרחביים בעולם תלת מימדי.

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

Half-Life2 – Episode 2
ההמשך המצופה ל… Episode 1 הקצר מדי.

כל זה, בייחד עם עוד כמה דברים פחות מעניינים שכבר יש לי (Half-life 2, וEpisode 1 למשל), ב45$ בSteam.
מצטער שזה נשמע כמו פרסומת לValve, אבל אלו באמת דברים טובים במחיר נמוך.

עוד דבר קטן ונחמד:
Valve חשבו על אותם חבר'ה שיקנו את החבילה הזו (Orange box) כאשר כבר יש להם את Half-life 2 ו/או את Episode 1, והם סידרו אפשרות לתת אותם כמתנה.
אז מי שרוצה אחד מהם (או אולי את שניהם?), שיגיב וישכנע אותי שמגיע לו. (או שתגיב, יש אפליה מתקנת לבנות, אז כדאי :).
המשחקים באורנג' בוקס ישוחררו ב10.10, ורק אז אני אוכל לתת את המתנות, אז יש זמן לחשוב על סיבה טובה.

שיקולים ולבטים בתכנון בסיס הנתונים של FireStats

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

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

טבלאת הכתובות נראית היום כ:
urls table
טבלאת ההמפנים נראית היום כך:
referrers table

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

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

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

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