מכירים את הסיטואציה הבאה:
באים להכנס לאתר, והוא לא עולה, או יותר גרוע, הוא עובד כמו צב נחלים מצוי.
אז מי אשם? האתר?מישהו בדרך? ספק האינטרנט? ספק התשתית? הרשת המקומית?
MTR יגיד לנו.
MTR הוא כלי שנועד לזהות צווארי בקבוק בקשר ממך לאתר מסויים, הוא עובד במצב גראפי וגם במצב טקסטואלי.
עקרונית זה כלי ללינוקס, אבל אנשים טובים יצרו גרסאת חלונות שלו (לא בדקתי).
בתמונה פה אפשר לראות שיש עומס באחד הנתבים של בזק (תיקון: אין עומס, זו תופעה שנובעת מהגדרות מסויימות בנתב המסויים), שאקטקום עוברים דרכו מאז שבזק בינ”ל (ימח שמם) קנו אותם.
נתקלתי במשחק פשוט ויפהפה בשם Flow.
במשחק אתם משחקים מיקרוב ים צעיר ופוחז, עם עתיד גדול.
המטרה היא לאכול מיקרובי ים אחרים, ולהעמיק את המים האפלים.
השליטה במשחק מאוד מעניינת, המיקום של העכבר במסך קובע את כיוון התנועה, לחיצה על העכבר מאיצה, מה שנכנס לפה של המיקרוב שלנו מחזק אותו. מיקרובים אחרים ינסו לאכול חתיכות מהמיקרוב שלנו.
כדי לרדת לרמה עמוקה יותר צריך לאכול מעין מיקרוב אדום, וכדי לעלות לרמה הקודמת צריך לאכול מיקרוב כחול, כמובן - הכרישים האמיתיים נמצאים במים העמוקים, אז כדאי לנקות את הרמות העליונות לפני שממשיכים לעומק.
המשחק דורש פלאש עדכני, וזו היתה הזדמנות להתקין את פלאש 9 שיצא ללינוקס לפני כמה ימים בשעה טובה.
זהירות, ממכר במיוחד.
משחקים מהסוג הזה הם בדיוק הסיבה שאני רוצה ללמוד קצת פיזיקה (זה כיף לכתוב כאלו, והם דורשים ידע בפיזיקה בסיסית).
מצורף סרטון של מיקרוב הים בפעולה :
אני שומע פודקאסטים באוטו, בדרך לעבודה - יש לי באוטו נגן MP3 שיודע לקרוא מדיסק-על-קי.
בהתחלה הורדתי את הקבצים ידנית, אחרי שקיבלתי עדכון על פודקאסט חדש בגרגרן.
עם הזמן זה הפך למציק למדי, תמיד אותו תהליך של הורדת קובץ, שמירה באיזו ספריה והעתקה של מה שחדש לדיסק מדי פעם.
כמובן שצריך גם למחוק ישנים, מה שאומר שגם צריך לבדוק מה שמעתי כבר ומה לא, אז באופן כללי העסק היה די מעיק.
מתישהו החלטתי להשתמש באחת מהתוכנות לניהול פודקסטים, חיפוש קצר בapt-get הניב את hpodder.
hpodder היא תוכנית פשוטה שמאפשרת, דרך שורת הפקודה לנהל בקלות יחסית את הפידים של הפודקסטים וכמובן גם להוריד את כל מה שחדש בלי מגע יד אדם.
מה שנשאר זה להעתיק את מה שחדש אל הדיסק, ושוב - למחוק את מה ששמעתי כבר, גם מהמקום שאליו מורדים הקבצים וגם מהדיסק-על-מפתח.
עדיין קצת מעיק, אבל משתפר.
טוב, פה נכנס rsync לתמונה, כתבתי סקריפט פצפון - שורה אחת, שמסנכרן את ספריית הפודקסטים מהמחשב לדיסק על קי,
הנה:
גרג קרואה, אחת מהמפתחים הבולטים של הקרנל של לינוקס הודיע בבלוג שלו שהחל מינואר 2008 מודולים שאינם תחת רשיון GPL יפסיקו לעבוד.
הסיבה היא שמפתחי קרנל רבים חושבים שהמודולים האלו לא חוקיים ועוברים על תנאי הGPL.
יהיה מעניין.
עדכון, דרך סלאשדוט:
לינוס לא אהב את הרעיון והנושא נגנז.
נניח שאתם מנסים להריץ שרת כלשהו, ומקבלים שגיאה שאומרת שהפורט תפוס כבר.
איך יודעים איזו תוכנית תופסת את הפורט?
בעזרת netstat, עם כמה פרמטרים, בשילוב עם grep.
הפקודה הבאה תראה לנו איזה תהליך מאזין על פורט 80:
netstat -antp | grep LISTEN | grep 80
רצוי להריץ כroot כדי לקבל מידע מלא על כל התהליכים (אחרת יהיו חסרים השמות של תהליכים שלא הורצו על ידי המשתמש הנוכחי).
באופן דומה, נניח שאתם מנסים לשחרר mount ומקבלים שגיאה שאומרת שהmount עסוק.
זה אומר שיש קובץ אחד לפחות בmount הזה שנמצא במצב פתוח.
כדי לגלות מי התוכנית הסוררת, נשתמש בlsof, בשילוב עם grep לסינון הקבצים הלא רלוונטיים:
lsof | grep cdrom
הדוגמא הזו תחזיר את כל הקבצים שיש להם cdrom בשם ושפתוחים כרגע.
כדי לדבג בעיות http, אפשר להשתמש בשרות של web-sniffer שמציג בפירוט את הבקשה והתשובה שחוזרת משרת http שתבחרו.
אני מכניס לFireStats תמיכה בזיהוי מדינה לפי כתובת IP, ומשיקולים שונים אני לא אשתמש בבסיס הנתונים כדי לאכסן את המידע על תחומי הIP, אלא בקובץ בינארי.
אז כתבתי תוכנית שממירה את קובץ הCSV שמגיע חינם מפה לקובץ בינארי דחוס ורב תחכומים, רק מה, כצפוי בהתעסקות עם דברים כאלו לא הכל עובד חלק.
בדיבוגי, הזדקקתי לHex editor חזק ונוח.
חיפוש קצר בנבכי apt-get הניב את KHexEdit, עורך ההקס של KDE
KHexEdit הוא סבבה לגמרי, עושה את העבודה טוב, ומציג את הנתונים בצורה ברורה מאוד.
הגדרתי את המקש F5 לטעון מחדש את הקובץ, וככה יכלתי לראות איך הקובץ נוצר בזמן שאני מדבג צעד צעד בתוכנית שיוצרת אותו.
מומלץ אם אתם צריכים תצוגה נוחה של קובץ בינארי.
קראת פעם תיעוד? 1. בטח. 2. לפעמים. 3. לעולם לא! אולי רק אם יאיימו שיירו בי ובבני משפחתי.
איך תעדיפי לעשות פינג על אתר: 1. משורת הפקודה, יש דרך אחרת? 2. דרך איזה GUI 3. פינג על אתר? הם משחקים גם סנוקר?
קימפלת פעם תוכנה? 1. בטח, אני מריצה את המוח על קרנל BR-5.9 עם תמיכה בריבוי אונות. 2. לא עושה דברים כאלו, זה לא מנומס. 3. לא, אבל שמעתי על זה, זה קשור למיקרוסופט, לא?
סכמי את הנקודות, ותדעי את האמת (הזכה והצרופה):
3-6 דביאן. 7-9: אובנטו. 10-12: חלונות.
אחת התכונות הכי משובחות של רוב הפצות הלינוקס הגדולות היא ניהול חבילות מרכזי.
בדביאן למשל, יש כמות אדירה של חבילות תוכנה, כ19000 נכון להיום.
לא כל החבילות הן תוכנות במובן הרגיל, יש חבילות תיעוד, חבילות דרייברים, חבילות קודקים, חבילות ספריית (DLLים) וכו’, אבל עדיין יש אלפי תוכנות שזמינות לחיפוש, התקנה, הסרה ושדרוג בצורה מרכזית ופשוטה במיוחד, באמצעות מגוון כלים, גם גרפיים, סינפטיק למשל, וגם מבוססי שורת פקודה, כמו apt-get ודומיו.
סינפטיק
לחלונות יש את Add/Remove programs, אבל הוא לוקה בחסר:
קרה לכם פעם שסרקתם את רשימת התוכנות המותקנות של חלונות בAdd/Remove programs ומצאתם את מה שרציתם בקלות?
קרה לכם פעם שהשתמשתם בAdd/Remove programs כדי להתקין תוכנה שלא מהווה חלק מחלונות?
קרה לכם פעם שעדכנתם תוכנה דרך Add/Remove programs?
המצב הזה הביא לכך שהיום כל חברה שניה מפתחת מנגנן כללי לעדכוני תוכנה שלא משתף פעולה עם אף אחד אחר - גפ אנרגיה מבוזבזת וגם מעיק על משאבי המחשב, כי כמובן שכל תוכנה כזו רוצה להריץ את מנהל העדכונים שלה כל הזמן.
מבחינה טכנית, וגם מבחינת חווית המשתמש, אין ספק שניהול חבילות מרכזי הוא עדיף על המצב שיש היום בחלונות - שהוא שהדרך הטבעית להתקין תוכנה היא להוריד אותה ידנית ולהפעיל את תוכנת ההתקנה.
לדעתי מייקרופוסט היו רוצים מאוד לאפשר ניהול חבילות מרכזי, אבל יש להם מספר בעיות:
קשיים טכניים
* מה קורה אם שתי תוכנות שמותקנות צריכות שתי גרסאות שונות של אותו DLL?
* איך מטפלים בDL HELL? למשל, אם שתי תוכנות משתמשות באותו DLL, וגרסא חדשה של אחת מהן צריכה לשדרג אותו, איך אפשר לעדכן את התוכנה הראשונה בלי לשבור את השניה?
* מערכות הקבצים של מייקרוסופט לא מאפשרות עדכון של קובץ שנמצא בשימוש, מה שיקשה על עדכון המערכת.
קשיים פוליטיים/משפטיים
* נניח שגוגל רוצה לשחרר את גוגל טולבר במערכת, ונניח שמייקרוסופט מסכימה, ורק נניח שנוצרים חילוקי דעות טכניים מסביב למשהו. הדבר הזה יכול בקלות רבה להתפתח לעימות חזיתי בין שתי החברות שיגיע לבית משפט (לא שמייקרוסופט חוששת מבתי משפט).
* סביר שמייקרוסופט ירצו בצדק כסף מחברות שמעוניינות להפיץ את התוכנה דרכם, אם הסכום נמוך מדי מייקרוסופט יפסידו על העניין (ניהול של הפצת תוכנה זה יקר), אם הסכום גבוה מדי הוא יהוה חסם לחברות קטנות, מה שיגרום להאשמת מייקרוסופט במונופוליסטיות, ושוב עלול לעלות בהרבה כסף לחברה.
* מייקרוסופט הופכת למפיצה ואינטגרטורית של תוכנות שלא היא מפתחת, זה אומר שבעלי התוכנות יצטרכו לשנות בהרבה מקרים את תנאי הרשיון שלהם כדי לאפשר את זה.
הבעיות האלו הן רק קצה הקרחון.
לסיכום, מהבחינה הטכנית, דרוש עיצוב מחדש של מערכת ההפעלה כדי לאפשר את זה, ומהבחינה המשפטית דרוש ניקוי של הרקורד הנוכחי של מייקרוסופט.
במילים אחרות, זה לא יקרה בעשר השנים הקרובות.
זו תגובה לZull, שטען שמספר בעיות האבטחה שמתגלות הוא נגזר ממספר המשתמשים בקוד, לאחר שהשוותי בעיות אבטחה בפרוייקטי קוד פתוח מול מוצרי מייקרוסופט מקבילים.
בחרתי להגיב כאן כי פה מותר לי להכניס יותר מ1000 תווים (אהם).
בוודאי שכמות בעיות האבטחה שמתגלות קשורה לכמות השימוש בקוד, אבל זה לא הגורם המרכזי. באיזו שהיא רמה, זה כבר לא משנה אם משתמשים בקוד 10 מיליון אנשים 100 מיליון.
מה שיותר משפיע זה:
1. היציבות של הקוד: בעית אבטחה = באג, לקוד שלא משתנה לא נכנסים באגים חדשים, לכן כמות בעיות האבטחה (הקיימות, בלי קשר אם התגלו או לא) יורדת.
2. התכנון של המערכת:
במערכת עם תכנון לקוי, יש לך יותר בעיות אבטחה מפונקציות.
3. האיכות של הקוד.
4. כמות הביקורת שהקוד מקבל.
אם לתת דוגמאות:
חלונות XP בת 6, ועדיין מתגלות בה בעיות אבטחה.
הבעיות נובעות מאיכות קוד נמוכה ומבעיות תכנון, והן ממשיכות להתגלות למרות היציבות של המערכת (רובם המכריע של השינויים הם תיקוני באגים, לא תכונות חדשות).
בסיס הקוד של הקרנל של לינוקס מאוד מאוד לא יציב, שינויים מאסיביים ומהפכות קורות כל הזמן, ולמרות זאת כמות בעיות האבטחה שמתגלות בו נמוכה.
הסיבה היא שאיכות הקוד גבוהה, ויותר חשוב, התכנון טוב.
לגבי אפאצ’י, אתה יכול לראות שמספר בעיות האבטחה החדשות שמתגלות הוא קטן מאוד.
אפשר לומר שרובן נמצאו ותוקנו.
פה זה עניין של תכנון נכון, ושל יציבות של בסיס הקוד.
IIS לעומת זאת יציב לא פחות, וובכל זאת מתגלות בו בעיות אבטחה על ימין ועל שמאל.
הקוד של מוצרים סגורים מקבל מעט מאוד ביקורת.
של מוצרים פתוחים מקבל הרבה, אפילו ההאקרים שמנסים למצוא בו חורים עושים לו שרות.
זה לא אומר שאי אפשר לכתוב קוד פתוח רע, אפשר גם אפשר, אבל ההתכנסות שלו לכיוון קוד טוב ונקי היא הרבה יותר מהירה מאשר במוצרי קוד סגור, ולו בגלל שהמוטיבציות של המפתחים שונות לגמרי:
קוד סגור: “אני רוצה לסיים את הפיצ’ר המזויין, שלא היה בתוכנית המקורית ולכן ישתלב כמו פיל בחנות חרסינה בקוד שלי, שפעם היה יפה”
קוד פתוח: “מה? הפיצ’ר הזה לא היה בתכנון, אני לא עושה אותו. אם אתם נורא רוצים תפצלו את הפרוייקט ותעשו את זה בעצמכם, בהצלחה, ואל תבואו אלי בוכים אחר כך”.
החברה הקודמת בה עבדתי, סטארטפ קטן בשם Content Objects, נסגרה לפני כחודש.
אין פה חדש, סטרטאפים נסגרים, ככה זה, ובכל מקרה אני כבר לא הייתי שם כשזה קרה.
כשעבדתי שם, נזקקנו ליכולת לקבל ארועים על שנויים במערכת הקבצים של חלונות, לינוקס ואולי עוד מערכות הפעלה, מכיוון שלא מצאתי אף פרוייקט שמאפשר את היכולות האלו לישומי ג’אווה, שינסתי את הקומפיילר והתחלתי לכתוב, לא לפני שקיבלתי אישור מהמנכ”ל של החברה להשתמש בפרוייקט, שנקרא JNotify, כניסוי קטן:
החלטנו שהפרוייקט יהיה פרוייקט קוד פתוח, מהסיבות האלו:
השתמשנו בהרבה קוד פתוח כבסיס למוצר, ורצינו להחזיר קצת.
בהחלט שקלנו לשחרר את המוצר המלא תחת רשיון קוד פתוח, ורצינו להשתפשף קצת בניהול של פרוייקט קוד פתוח, בלי להסתכן מדי.
ידענו שאם תתפתח קהילה של משתמשים, נקבל פידבק על בעיות, מה שיגרום לקוד להיות יותר איכותי.
רצה הגורל, והחברה נסגרה, אבל הפרוייקט כמובן, נשאר בSourceForge, מה שאומר שמכל הקוד שפותח בחברה, רק הוא המשיך להיות שימושי.
למעשה, כבר שני משתמשים של הפרוייקט יצרו איתי קשר: סטודנט מארגנטינה, שביקש וקיבל פיצ’ר קטן, ומפתח מגרמניה שדיווח היום על שני באגים, שתיקנתי כבר.
כיף לקבל אימיילים מאנשים שמשתמשים בקוד שלי, גם אם אני בעצמי לא משתמש בו.