ספרית מפות חדשה לפיתוח אפליקציות web

לאחר חודשים של עבודה מפרכת שחררתי היום את ספרית המפות מבוססת ה-Google Web Toolkit שלי. הספריה מאפשרת פיתוח אפליקציות web עם מפות בשפת Java (החביבה עלי וכן על עמרי עד מאוד), כשם ש-Google Maps API מאפשר זאת למפתחי JavaScript.

לאחר נסיוני המר עם ה-GPL פרסמתי את ספרית המפות תחת ה-CC BY-NC-SA.

יום הולדת שמח, עמרי, ותהנה מהאוגרים!

Facebook Comments

hcoop.net, לא רק לקומוניסטים

אחרי תקופת מעבר ארוכה בה מאמצי מנהלי הרשת הופנו לבניית השרתים החדשים, hcoop.net פותחים את השערים למשתמשים חדשים.
hcoop הוא ארגון שלא למטרות רווח שמספק שרותי הוסטינג במחיר עלות לכמה מאות גיקים (העלות מתחלקת בין החברים בhcoop).
אני מאכסן בhcoop את הבלוג הזה, את firestats.cc ועוד כמה אתרים שונים ומשונים, והכל במשהו כמו 5$ לחודש.
מה שחשוב לי במיוחד, זה שאני מקבל גישת shell ואפשרות להריץ למעשה כל דבר שאני רוצה על השרת.
מנהלי הרשת מאוד גמישים ואם יש לכם בקשה מיוחדת יש סיכוי טוב שהיא תקבל מענה מספק.
בנוסף hcoop מאפשרים מספר בלתי מוגבל של הוסטים וירטואליים, שזה דבר נוח מאוד.
hcoop מומלץ רק למשתמשים שלא חוששים משורת הפקודה ומקריאת תיעוד.

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

Facebook Comments

יומולדת

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

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

Facebook Comments

אבל יש גשם, וחושך!

אתמול קרוב ל1:00 בלילה נשמע פיצוץ עז ברחוב המאבק, ואחריו הרחוב – וכמה רחובות שכנים הוחשכו.
כששמעתי את הרעש, לרגע חשבתי שנפל איזה טיל, עד כדי כך זה היה חזק.
ניצלתי את החוסר בחשמל כדי לבדוק קצת לפטופ שהבאתי מהעבודה לקראת נסיעה לחו"ל בעוד שבוע, ובסוף החלטתי ללכת לישון, בחושך.
כשקמתי, עדיין לא חזר החשמל, והתקליט במענה של חברת החשמל טען שהצפי הוא 11:00.
ניצלתי את הזמן כדי להתקדם קצת בחומר הלימודים בקורס הנוכחי. השעה 11:00 הגיעה, וכמובן שהחשמל לא חזר.
הפעם התקליט אמר פתאום שאין צפי לחזרת החשמל.
יצאתי לסיבוב קצר עם האוטו באיזור, בחיפוש אחרי מוקד הבעיה (במילים אחרות, חיפשתי את עובדי חברת החשמל העמלים כדי לתקן את התקלה), לא מצאתי.
החלטתי לקחת את לפטופי ולהמשיך לבדוק אותו במקום עם אינטרנט וחשמל, וכשיצאתי ראיתי ניידת של חברת חשמל חונה ליד הבית.
מסתבר שהפיצוץ היה בעמוד מתח גבוה שנמצא 20 מטר מהחלון שלי, ועובד חברת החשמל לקח מקל כתום וארוך, ודחף ומשך איתו איזה שנאי בעמוד חשמל.
אחרי עשר דקות, החשמל חזר.

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

Facebook Comments

IPv6

IPV6 היא הגרסא הבאה של פרוטוקול האינטרנט, שכבר מתבשלת כמה שנים טובות.
השינוי המרכזי ביותר, והמוטיבציה הגדולה של השינוי נובעת מהבעיה המחריפה והולכת של חוסר בכתובות IP פנויות. בIPV4 – הגרסא הנוכחית, כל כתובת תופסת 4 בתים שהם 32 ביט, מה שאומר שיש 2 בחזקת 32 כתובות אפשריות שזה קצת יותר מארבע מיליארד כתובות אפשריות.
התקן של IPV4 נקבע ב1981, ארבע מיליארד כתובות נראו אז כמו הגזמה פראית, ואף אחד לא דימיין שבתוך כמה עשרות שנים יהיה צורך ביותר כתובות.
השוק התמודד עם המגבלה במספר כתובות הIP במספר צורות:

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

NAT
מכיוון שאין מספיק כתובות IP לתת לכל מחשב או לכל מכשיר נייד (כן, לסלולרי שלכם יש כתובת IP), קמו חכמים וחשבו:
מה אם נגדיר טווח כתובות מיוחד (או כמה טווחים) שישמש לרשתות פנימיות בלבד, ולא יהיה חוקי באינטרנט הגדול?
זה יאפשר לנו לבחור כתובות IP למחשבים ברשת הפנימית שלנו בלי תלות במספר הכתובות האמיתיות שלנו (שעולות לא מעט).
הבעיה עם זה היא שאם הכתובות לא חוקיות באינטרנט, איך מחשב כזה יכול לתקשר עם מחשבים מחוץ לרשת הפנימית שלו (בה הכתובות חוקיות)?
ברגע שנתב שם בחוץ יראה חבילת מידע עם הכתובת שלו ככתובת יעד, הוא לא ידע לאן לנתב אותה ויזרוק אותה לסל המיחזור של החבילות.
הפתרון הוא NAT, או Network address translation. הרעיון די פשוט: נשים מחשב (או נתב) אחד עם כתובת IP אמיתית, וננתב את כל חבילות המידע שנשלחות החוצה מהרשת שלנו דרכו. המחשב הזה ישנה את פרטי החבילה כך שכתובת הIP ממנה היא נשלחה תהיה שלו, יזכור את פורט המקור של החבילה, וישלח אותה.
ברגע שמגיעה חבילה שממוענת אל אותו מחשב NAT, הוא יבדוק את החבילה, יסיק לפי מה שהוא זוכר לאיזה מחשב ברשת הפנימית החבילה ממוענת, יתקן את הכתובת והפורט לפרמטרים הנכונים ויעביר את החבילה.
גישה זו מאפשרת לרשת עם עשרות או מאות מחשבים להתחבר לאינטרנט עם כתובת IP אמיתית אחת בלבד.
NAT

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

IPV6
השינוי המרכזי בIPV6 הוא הרחבת טווח הכתובות האפשריות. במקום 4 בתים לכתובת IPV4, יש לא פחות מ16 בתים בכתובת IPV6.
קצת מתמטיקה:
4 בתים הם 32 סיביות. 2 בחזקת 32 זה 4,294,967,296,
4 מיליארד כתובות בIPV4.
16 בתים הם 128 סיביות, 2 בחזקת 128 זה:
340,282,366,920,938,463,463,374,607,431,770,000,000
340 מיליארד מיליארד מיליארד מיליארד כתובות בIPV6.
אז תחום הכתובות של IPV6 יספיק להרבה הרבה זמן.

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

שיפורים נוספים הם תמיכה מובנית בתעדוף תעבורה מסויימת (QOS), הגדרה אוטומטית (Auto-configuration), חבילות נתונים גדולות לשיפור ביצועים ברשתות שמעבירות הרבה מאוד מידע (JumboGrams, חבילות נתונים בIPV4 מוגבלות לגודל של 65535 בתים, בIPV6 לעומת זאת החבילות יכולות להגיע לגודל 4 ג'יגה לחבילה)

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

ייצוג טקסטואלי של כתובות IPV6
אנשים רגילים לכך שכתובת IP הן מהצורה המקובל של a.b.c.d, כאשר כל מספר הוא בן 0 ל255.
בIPV6 התמונה משתנה, במקום 4 קבוצות בין 0 ל255, פתאום יש לנו 8 קבוצות של 0 עד 65535, שמיוצגות בבסיס 16, ומופרדות על ידי נקודותיים.
למשך:
[code]
2001:0db8:0000:0000:0000:0000:1428:57ab
[/code]
יהיה לא נעים להקריא את זה בטלפון.
כדי לעזור קצת, הוגדר הקיצור הבא:
סדרת אפסים אחת בכתובת יכולה להתכווץ לצמד נקודותיים, ואפשר גם להתעלם מאפסים שפותחים קבוצה – מה שאומר שאת הכתובת הזו אפשר לכתוב גם כך:
[code]
2001:db8::1428:57ab
[/code]
קצת יותר טוב.

FireStats וIPV6.
עד גרסא 1.4, פיירסטטס מאכסן כתובות IP בתוך מחרוזת תווים, ולכן תומך גם בIPV4 וגם בIPV6.
אחד הפיצ'רים המבוקשים ביותר הוא היכולת להתעלם מטווח של כתובות IP.
עד 1.4, ניתן להוסיף כתובות מסויימות לרשימת ההתעלמות, אבל זה לא מספיק כשרוצים להתעלם מטווח שלם, למשל כדי לסנן את הספאם של מייקרוסופט.
כדי לתמוך בסינון לפי טווח כתובות, הכי טוב לשמור את כתובת הIP כמספר ולא כמחרוזת – כי אז אפשר לבדוק אם המספר נמצא בטווח בקלות.
אבל באיזה כתובות IP לתמוך?
אומנם 99% מהמשתמשים עובדים עם IPV4 בלבד, אבל אם אני אסתמך על זה, זה בעצם אומר שאני מבטל את התמיכה בIPV6, צולעת ככל שתהיה.
לא ממש רציתי לעשות את זה, ולכן החלטתי לתמוך בIPV6 גם אחרי המעבר משמירת כתובות טקסטאלית לשמירה מספרית.

אבל איך שומרים כתובת IPV6 בMySQL כמספר? הטיפוס המספרי הגדול ביותר בMySQL הוא BIGINT, שרוחבו 8 בתים, וסיכמנו כבר שכתובת IPV6 היא ברוחב 16 בתים.
הפתרון הוא להשתמש בשתי עמודות של BIGINT, אחת לחצי הימני של כתבות הIP והשניה לחצי השמאלי.
קצת מכוער, אבל זה המצב.
בעיה נוספת שצריכה התייחסות מיוחדת היא בעיית ההצגה והקליטה של כתובות IP.
כשמגיעה כתובת IP טקסטואלית למערכת, צריך להבין מאיזה גרסא היא, ולתרגם אותה לייצוג מספרי.
כשרוצים להציג כתובת IP מספרית, צריך לעשות את הפעולה ההפוכה ולהציג אותה בצורה הידידותית ביותר (IPV4 אם הכתובת המקורית היא בIPV4, אחרת IPV6).
מכיוון שהתמיכה בIPV6 בPHP די צולעת – קיימות פונקציות, אבל רק מגרסאות חדשות של PHP וגם אז הן לא נתמכות בכל מערכות ההפעלה – כתבתי את פונקציות ההמרה והזיהוי בעצמי.
אפשר לראות בתמונה טווח IPV6 ליד כתובת IPV4 בודדת:
firestats ipv6

קריאה נוספת:

IPv6: The Promise, The Problems, The Protocol
ווקיפדיה

Facebook Comments

ביטוח חיים

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

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

Facebook Comments

חדש באמזון, עפרת אורניום!

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

הביקורות מהללות:

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

כריס גלדיס, קיוטו יפאן.

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

ג. סטיינפילד, אוסטין טקסס.

Facebook Comments