קטגוריה: Microsoft Windows

עסקים כקוד פתוח

קצת באיחור לא אופנתי גם אני מעוניין להתייחס לנושא: חברת רד האט החליטה "לפרק" את CentOS כהפצה "יציבה", ולהפוך אותה למשהו בסגנון של Debian Testing/Unstable עבור RHEL.

זהירות פוסט בניחוח ציני.

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

אתחיל בשאלה: מי הלקוחות של החברה?
תשובה – גופים המכונים Enterprise.
אם אתם לא מכירים, אז מדובר בגופים העושים עסקאות ומחזורים יחסית גדולים ועד אסטרונומיים (ומחולקים גם כ SME – Small Medium Enterprise ופשוט Enterprise). זו גם הגדרה משפטית פר מדינה, אבל אינני נכנס אליה כאן.

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

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

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

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

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

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

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

אף אחד לא ירכוש Windows 10 Pro Enterprise אם הוא לא חלק מארגון או רוצה לשפוך המון כסף לחינם.
אבל הרישיון מאפשר לEnterprise מענה ממש טוב עבור צרכי הניהול שלו בארגון.

אתם בית ספר? אין לכם צורך ביער מסובך, אבל כן מערכות לימוד קבלו רק היום 2 במחיר של 1 – Windows 10 לבתי ספר.

אתם סטארטאפ שצריך מערכת embedded?
איך עוד לא בדקתם את Windows 10 for ARM?!

אתם צריכים למידת מכונה, כלים מתקדמים, או גמישות של ענן?
איך עדיין לא ניסתם את Azure?!
לא יפה!

יצרן OEM עם סביבה הדורשת מערכת הפעלה? למה לא אמרת?! יש לנו בדיוק את מה שאתה צריך!

מספיק דוגמאות?

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

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

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

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

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

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

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

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

hell אל dll (בGo) – חלק ראשון

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

יצרתי באמצעות שפת C++‎ (וקצת C) איזשהו DLL המבצע קיצורי קוד עבורי שבכל דרך אחרת הייתי צריך לממש הרבה COM בשפת Go – כאב ראש עם הרבה boilerplate code של Vtbl ‏(Virtual Function Table) ומימוש Interfaceים שלמים, כולל ירושות שלהם מinterface אחרים.

אני מאוד אוהב את שפת Go אבל יש לי גם ביקורת קשה כלפיה – הביקורת העיקרית שלי (לצורך הפוסט כי יש לי יותר מביקורת מאחת) – הוא שמצד אחד ניסו לספק לי קוד "גבוה" שלא מעניין אותו מערכת ההפעלה, כאשר מהצד השני, רואים שהוא נבנה עבור Unix/Linux וכאשר אנו נמצאים במערכת הפעלה שונה כדוגמת Windows מערכת ההפעלה מרגישה שם כ second class citizen.

בעיה ראשונה – יש לי פונקציה בdll המוגדרת בגדול מאוד בחתימה כזו:

void GetBuffer(type_t * in, const char **buffer, const unsigned int * length);

אני מקבל struct שמכיל מידע ומחזיר בתמורה buffer של בתים (במקרה הזה).

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

הבעיה היא שבזמן טעינת DLL בזמן ריצה בצורה דינאמית עם LazyDLL (למשל) צריך להעביר פרמטרים וזה דורש מאיתנו להשתמש ב unsafe.Pointer בשילוב של טיפוס בשם uintptr.

יש הרבה תיעוד בנושא של unsafe.Pointer וגם המון פוסטים ודוגמאות ברשת, אבל רובם מסובכים מידי ולא תמיד "נכונות" לכל מצב.

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

אחרי יום שלם כמעט של האבקות חופשית החלטתי להתעלם מכל מה שקראתי וראיתי אצל אחרים וחזרתי למקורות הפשוטים ביותר:

...
outBuffer := make([]byte, 2 << 24)
var length uint
...
getBufferFunc.Call(
  uintptr(unsafe.Pointer(&MyType)),
  uintptr(unsafe.Pointer(&outBuffer)),
  uintptr(unsafe.Pointer(&length)),
)
...
saveToFile(outBuffer[:length])
...

בעצם "נזכרתי" כי מערך בC יכול להיות בעצם מצביע אשר אם אני מקבל את האורך שלו, אני יכול לקרוא רק את מה שאני צריך ולא צריך מעבר.

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

הכנסתי לdll דגל אשר במידה ומדובר בגרסת פיתוח הוא גם כותב את buffer בעצמו לקובץ, וכך גם ידעתי להשוות בין הדברים (היות וקומפיילר של Go אינו יודע ליצור debug symbols בWindows) בצורה "טיפשה". וזאת לאחר ש delve לא הסכים לעבוד לי.

בקוד רגיל, ולא בהדגמה שכזו, חשוב גם לבדוק שגודל length אינו גדול יותר ‎ 2 << 24 לשם כך אפשר לבדוק את ה cap של ה slice ואין צורך לחשב מחדש.

בפוסט הבא בנושא אסביר כיצד להתמודד עם struct שלם בתוך DLL.

תכנות בווינדוז – 2020-2021

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

מי שלא מכיר, הייתי בעבר מתכנת Windows, פיתחתי בעיקר עם VB/VBA ודלפי, כך שהזיכרון שלי על win api הדהים אותי שעדיין קיים ורלוונטי יחסית.

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

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

אחד הדברים הראשונים שכל מתכנת בעולם הלינוקס מגלה – Windows אינה מערכת קלה לפיתוח בה. היא גורמת לכל דבר שמרגיש מאוד קל ופשוט בלינוקס להיות מסורבל ומסובך בWindows ברמה שגורמת לפעמים לתסכול רב.

המערכת שאני כותב היא cross platform וכתובה ב Go. בלינוקס היה לי מאוד קל להתחבר לlibc כאשר אין לי binding או חבילה מוכנה בGo (ואין לי את הזמן ליצור את התמיכה בכל הapi set ואני צריך רק פונקציות וstruct מסוימים מאוד), אבל בווינדוז אני מוצא את עצמי עובד מאוד קשה מול COM או פשוט ליצור ב VS איזשהו DLL שאני כותב ב C/++ ‎ (משלב בין שניהם כי לא באמת רגיל לתכנת ב ++C).

התסכול הבא, היה לאבחן בעיות ותקלות. הנה בעיה מוזרה – כלל החומורת מכילות דריברים המספקים לי פידבק אודות מעשים מסויימים באמצעות Windows Messages.
אבל – חלק מהחומורת ו/או דריברים לא מעלים את ה events וחלקם כן.
יותר מזה, אין ב DC שום דבר המגביל זאת, וכן אין משהו שחוסם משהו.
אמנם יש דרכים כנראה לפי התיעוד להכריח את ווינדוז לעשות זאת, אבל זה משהו שאסור לי לעשות בשל רגולציות שונות עבור אותה מערכת (לפי מה שהוסבר לי) ולכן אם זה לא עובד אין לך תמיכה במערכת.

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

בזמן התמודדות הבעיות הבנתי למה לינוקס נוח עבורי כל כך, בזמן שפיתוח בWindows ממש לא (אפל איפשהו באמצע). בעיה מוזרה שהיתה לי – יוצר קובץ (בינארי ו/או טקסט) כותב אליו, עושה close ואולי אפילו flush לפני – מנסה לגשת אליו ממערכת אחרת והקובץ לא קיים, או בגודל 0.
הבעיה היתה שבעוד שה File Descriptor (או Handle בWindows) שוחרר, מערכת ההפעלה עדיין לא כתבה את המידע או כל המידע לקובץ בפועל. עד עכשיו אני לא יודע למה, וזה גם לא מתרחש כל הזמן.

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

עוד בעיה – יצרתי dll ב ++C (או חצי ++C וחצי C מבחינת התחביר), לדעתי ייצאתי (כלומר export) את כל הפונקציות שרציתי, אבל בפועל לא הצלחתי לעשות לכולן link. בלינוקס אני יכול עם objdump לראות מה ייצאתי בפועל, אבל בווינדוז? אני צריך כלי חיצוני שלא מגיע עם VS.

ניסיתי גם להדפיס למסך תוכן שהוא utf-8 לא הכל מוצג. עכשיו שאלות – האם זה פונטים? האם זה באג שלי?
הcmd לא כזה ברור אם הוא מסוגל להציג את זה בכלל (הבעיה היתה הגדרות locale של פונטים). למשל בלינוקס הרצה של טקסט מול od -x תעזור לי מאוד לראות ב hex האם מדובר בבעיה שלי או משהו אחר.

כאשר ניסיתי לעבוד ב VS עם breakpoints להבין את הבעיה למעלה הגעתי למצב שהווינדוז נתקע עם 100% cpu במשך 45 דקות. מה שקרה בסוף זה אתחול כפוי של מערכת ההפעלה כי שום דבר לא הגיב לי.
זה נמשך 45 דקות כי הייתי צריך להתמודד בין לבין עם משהו אחר אז השארתי את זה לרוץ בזמן שעברתי וכשחזרתי זה עדיין היה תקוע.

כאשר אני כותב מערכות לווינדוז, אני מרגיש כמו משהו זר שאיכשהו בכל זאת זה עובד, אבל בקסם, בעוד שלינוקס זורם לי מאוד למרות שאני עובד ב ‎(neo)vim, וטרמינל בעיקר במקום איזשהו IDE גדול.

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

זו כמובן התחושה שלי בנושא.

יצירה וטעינה של ספרייה משותפת בגו

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

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

כיצד יוצרים ספרייה משותפת בגו? להמשיך לקרוא

מימוש RDP טבעי בשפת רובי

על רגל אחת, RDP הם ראשי תיבות של Remote Desktop Protocol. אך השם מעט מטעה. זוהי למעשה אסופה של הרבה מאוד פרוטוקולים, חלקם אפילו לא של מיקרוסופט, אלא של ארגון ITU. למעשה הוא מבוסס על סדרה של פרוטוקולים שהחלו את דרכם בארגון ה ITU אשר נועדו לאפשר לתוכנות לשתף מידע ותכנים בניהם.

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

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

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

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

כתובת הפרויקט: https://github.com/Safe-T/rdp-rb

Windows 8 לפי סמי

זוכרים ששאלתי האם Windows 8 מציג סוף עידן למיקרוסופט ?

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

כך שהמשתמש הממוצע ימשיך לעבוד עם מיקרוסופט. יקלל אותה, אבל כל מחשב חדש שימכר, יהיה עם Windows 8.

אבל זה לא הכל. הבעיה האמיתית היא עולם ה Enterprise. בעוד שנגיד כי לחברת IBM הגיוני הרבה יותר לתמוך באנדרואיד (הרי IBM מתפרנסת המון מג'אווה בין הייתר), אם היא תכניס Windows 8, אז זה לא יהיו גם מחשבי השולחן בחברה, אלא גם הלפטופים בחברה, ומשם מיקרוסופט גם תספק להם tablets ואפילו טלפונים, בייחד עם עסקה כוללת.

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

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

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

מיקרוסופט ו PC – סוף עידן (?)

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

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

ms-surface - windows 8אני חייב לציין כי למעט מספר בעיות קטנות יחסית, כאשר מתעסקים עם Microsoft Surface בחומרה שאליה החברה כיוונה, המערכת מתפקדת מצויין ונוחה מאוד (כאמור למעט בעיות קטנות).

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

ActiveRecord, ODBC and SQL Server

I was required to use MS SQL Server with my Ruby while my application is running on Linux.
I do not like such things, because like always, stuff goes wrong, and when the close golden gates of Microsoft closes on you, well – you are theirs, and they decide what will work, and who can play …

In order to make things work on Linux, I had first to install unixODBC and FreeTDS .After installing them I was required to configure them, and that's a bit of a pain …

The people who are responsible for your database must create a user name and password that belongs to the database and not to Windows itself. Make them test the connection by creating their own ODBC connection and make sure it worked for them. It's the only test I found to actually make them understand that they did things wrong, instead of blaming Linux etc…

When their work is done, make sure you know the SQL Server version (2000,2005 etc..) for making FreeTDS works properly. Then configure it like so: להמשיך לקרוא

My Lenovo Thinkpad T420s

I bought a new laptop after my old one started to have too many hardware issues, such as mouse buttons that stopped working, the screen turned off and on again while working, hard drive that died on me, wifi that started resetting itself every few minutes, and even the battery is dead (4 minutes of power), and last week the charger started to stopped working from time to time.

So I started looking for a new laptop, but I was looking for a machine for hard work, and not just for saying that I have a laptop. It is an important working tool in my business, and I can not afford any downtime, or things that do not work, so I looked on two brands of laptop vendors: Lenovo and DELL. They both create good laptops, but somehow the Lenovo's products seems a bit better (the old IBM line at least).

So after few days of research I decided that Lenovo T series brand is the one for me. I do not really understand why, but in Israel everything is more expensive, and you can understand it even from the last tent protest. This fact exists also with new laptops (I needed it very soon as you can understand, so I had no choice). So I needed to go with 14.1" laptop because the 15.6" was way over my budget, and the 14.1" was a little bit higher from my budget, so I chosen the T420s model. להמשיך לקרוא

לינוקס לאנשי הווינדוז

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

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

אם אספק לכם התקן מערכת לWindows 95 שלא עבר התאמה ל Windows7 ו Win7 לא יכול לעבוד איתו, הבעיה היא לא בWindows אלא בחוסר התאמת ההתקן למערכת ההפעלה. כאשר אתם מספקים לי כלי אשר נבנה עבור הגרעין של לינוקס, לגרסת 2.6.18, ומצפים שאני אריץ אותו על גרסה 3.0, ובכן אתם עושים את אותו הדבר. יכול להיות שזה יעבוד, אבל יכול להיות שזה לא. הבעיה היא לא בגרעין, אלא בפיסת הקוד אשר לא מתוחזקת ומתאימה.

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

תפיסת העולם של הפצת לינוקס וכן הגרעין של לינוקס הוא בכך שהם הולכים יד ביד עם הגישה של release soon, release often. זה משהו שחברה מסחרית כדוגמת מיקרוסופט לא יודעת להתמודד ולהגיב אליה. הם כרגע מספקים גרסת מערכת הפעלה בודדת עבור מספר שנים (גרסת XP למשל מאוד וותיקה כבר ועדיין קיימת), ובכך זה נראה כאילו זו גרסה "יציבה" של מערכת הפעלה. ולכן גם חברות שונות יכולות לחכות מספר שנים בן גרסה לגרסה, אך זה לא המצב בלינוקס. לינוקס אינה נחה על זירי הדפנה, אלא ממשיכה לנוע ולזוז כל הזמן. מה שהיה נכון לפני שנה, לא נכון היום. ומה שמתאים היום, כבר יהיה היסטוריה רחוקה ולא רלוונטית עוד 4 שנים מהיום. לכן עדיף לשחרר התקני מערכת בקוד פתוח ושיכנסו למאגרי הגרעין, מאשר לעשות את העבודה לבד ומחוץ לעץ הפיתוח.

התקנת תוכנות מתבצעת על ידי מנהל חבילות. תפיסת העולם של מנהל חבילות קיימת מתחילת שנות ה90 בעולם הקוד הפתוח. זה התחיל עם ניהול קוד LaTex (נקרא ctan), המשיך במערכת הפעלה בשם FreeBSD (אשר נקרא ports), התקיים גם עבור שפת תכנות בשם Perl (עם cpan) וקיים כבר למעלה מעשור גם בלינוקס. אתם מכירים את זה בטח כ"חנות אפליקציות" (תגידו יפה תודה לחברת אפל), אשר מקור בודד להתקנה של הדברים. בוחרים מה רוצים, הוא מנהל תלויות עבורינו ומתקין בשבילנו את מה שצריך. יש הבטחה לאבטחה של התוכנות, ועולם כמנהגו מתקין תוכנות מותאמות להפצה. ישנם כמה סוגי תוכנות, ורק תוכנות אשר קשורות לגרעין, זקוקות להיות מותאמות לגרעין, תוכנות בצד המשתמש, ובכן לא קשורות לגרעין כמעט בכלל.

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

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

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

ברוכים הבאים ללינוקס.

Strawberry Perl תומך ב DBD-Interbase

מריוס פופה פרסם סרטון ווידאו (מאוד מצחיק לדעתי :)) וגם הסבר בFirebirdnews כיצד אפשר להשתמש בגרסאות הפיתוח האחרונות של DBD-Interbase בייחד עם Strawberry Perl, כך אפשר להנות גם מעבודה עם Firebird גם בWindows כאשר משתמשים בגרסה הזו של פרל ל windows.

מה חסר בעולם הקוד הפתוח ?

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

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

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

מייד שאלתי אותו לכוונתו והוא הראה לי קטע קוד שהוא מצא באינטרנט ב ++C בשביל להציג רשימה של מידע עם כפתורים שישנו את היכולת לגרור את האיברים ברשימה (רשימה וויזואלית כמובן) היה שם קרוב ל1,000 שורות קוד, שכתוב ב GTK+. ואז הוא מוסיף ואומר "ב #C אתה אולי תכתוב 50 שורות קוד בשביל אותו הדבר בדיוק, ואתה בטח תצחק עלי, אבל כשהייתי מתכנת בדלפי זה היה אולי 12 שורות קוד. זה לא צריך להיות כל כך מסובך, או קשה. לא צריך להקציב למשימה כזו כל כך הרבה קוד, זה פשוט לא הגיוני".

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

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

"אני בסה"כ רוצה לעבוד קצת על המחשב, לא להיות מהנדס חלל"

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

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

רוב האנשים אינם מוכנים לקחת אחריות וללמוד לעבוד עם המחשב, ולהבין את ההשלכות של השימוש בו ושל הטכנולוגיות אשר קשורות בכלי הזה – קרי לימוד מעמיק של הסביבה והחשיבה שנדרשת בשביל זה. הם כן רוצים שזה פשוט יעבוד להם כמו שהם רוצים. ואז מגיע מצב בו יש התקפה מאוד גדולה על אנשים (במקרה הזה מסיבות פוליטיות/"דתיות" [ובעיקר עסקיות]), ופתאום כולם באים בטענות על "האקרים" תורכים ש"פרצו" לאתרים וקיבלו סיסמאות. העניין הוא שזה כל כך פשוט לגלות את המידע הזה בלי להיות "האקר", "קראקר", "כובע שחור" וכו'…

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

q1w2e3r4t5y6u7i8o9p0

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

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

אשליות …

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

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

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

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

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

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

ועל הגישה הזו נכתב פעם שיר ישראלי : "אשליות"

זה ציפור, זה מטוס, זה kde 4 לא זה Windows 7

יצא לי אתמול פעם ראשונה לראות ולעבוד על Windows 7 במציאות.  טעם הWindows שעבדתי עליו היה Home Premium בעברית, ואני חייב לציין שידידות זו לא התוכנה הבולטת שלו.

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

למשל ALT+SHIFT לשינוי שפה, שאישית זה אחד הדברים שהכי אהבתי בווינדוז וגם מוגדר אצלי בלינוקס, לא עובד. מה שכן עובד זה CTRL+SHIFT, אלא אם המחשב הנישא שעבדתי איתו החליף בין הכיתוב על המקשים שלו… אני גם לא רואה ומוצא איך להגדיר מציין שפה שיהיה גלוי .

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

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

ב W7 יש גם אפשרות למצוא ערכות נושא שממש מזכירות את Gnome, ובכלל כל המערכת והסביבה מזכירה כאילו לקחו את KDE 4 ואפילו כמה פיטצ'רים שהיו קיימים ב KDE3 והוסיפו אותם לסביבה הגרפית וקראו לזה Microsoft Windows 7. אולי היו צריכים לקרוא לזה "טעם KDE 4" ולסיים עניין 🙂

בשורה התחתונה, נראה כי מיקרוסופט עשו copy paste לסביבות לינוקס ואח"כ עוד אומרים שלינוקס לא ידידותית…

root סוף

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

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

Double Commander

בעבר (כמעט שנה) דיברתי על Tux Commander שמנסה לספק את היכולות של total commander ללינוקס.

עוד תוכנת קוד פתוח מאוד מעניינת שהיא חוצה פלטפורמות (וגם מספקת יכולת לעבוד בלינוקס עם GTK ו QT) היא Double Commander.

התוכנה מנסה לספק גישה דומה, אך מעט שונה מ Total Commander. היא מספקת דבר ראשון יכולות לעבוד עם התוספות של total commander השונות, אבל גם מכילה כמה תכונות עצמאיות לגמרי, כדוגמת שפה פנימית לכתיבת הרחבות (עדיין בפיתוח ולא נגיש), עבודה עם shell כחלק מהתוכנה הגרפית ועוד הרבה תוכנות יפות ומעניינות מאוד.

כמו Total Commander ו ‎ Tux Commander, גם תוכנה זו כתובה עם FPC ולזרוס.

אתם מוזמנים לקרוא עליה עוד ולהוריד אותה מכאן.

שרת יציב וטוב

בעולם השרתים ישנם הרבה מתמודדים גם בחומרה וגם בתוכנה.

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

להמשיך לקרוא

האם Windows מתאימה לשולחן העבודה

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

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

להמשיך לקרוא

עידן מערכות ההפעלה

באמצע סוף שנות ה80 וקצת בתחילת שנות ה90 יצאו כמה מערכות הפעלה גרפיות ממש יפות ומרשימות אשר השוק לא ממש אהב:

להמשיך לקרוא

לראות שונה – תכנות

בעולם התכונה ישנם הרבה דברים שמקובלים לעשות ולבחור.

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

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

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

למען הפרוטקול, אני יודע לתכנת בהרבה שפות תכנות: משפות "נמוכות" כדוגמת assembly 16 ביט של x86, וכן גם הגרסה שמוגנת של 32ביט (או לפחות זוכר איך לעשות כמה דברים עם השפות האלו). אני גם יודע לגעת בC אם כי בצורה די בינונית, Java, Perl, Ruby, Bash כמובן שפסקל, ועוד… אני כמובן גם יודע שפות יעודיות כדוגמת nasl מבית nesus או SQL בהתאם למסד הנתונים והרשימה עוד ממשיכה.

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

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

כאשר אני רוצה לבנות קוד שיעבוד במהירות על טקסט, אני אעדיף את פרל. חוצמזה שאני מאוד אוהב את השפה, היא פשוט בנוייה לזה. אין כיום שום שפה אחרת שתיתן לי את מה שפרל נותנת (אל תזכירו את awk בבקשה).
אם אני רוצה לבנות אתר Web, אני אבחר או בRuby או בPerl. שוב, הם הכלים הכי טובים לדעתי לביצוע המשימה. לדוגמה PHP רק בגרסה 5 התחיל להתקרב למצב שניתן להשתמש בו בצורה טובה, אבל הוא עדיין רחוק מהמטרה. נראה כי Zend מסתובבים סביב המטרה, אבל לא מגיעים אליה… כרגע הם רק הקטינו את גודל המעגל.

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

לGUI, אני בוחר בLazarus, אשר הרבה יותר טובה מכל הכלים הקיימים כיום בשוק ללינוקס.

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

אז מה אתם אומרים ? האם אתם תבחרו כלי ושפה שתבצע לכם את המשימה הכי טוב שאפשר, או שתבחרו בכלי הכי פפולרי, גם אם הוא לא בהכרח יעשה את העבודה כמו שצריך בלי מאמץ כזה או אחר מצדכם ?

פיתוח חוצה פלטפורמות באמצעות Free Pascal 2.2.0

תרגום מהגרסה האנגלית לכתבה שפורסמה בOSNews ע"י Joost van der Sluis
תורגם ע"י עידו קנר

לאחרונה Free Pascal (FPC) שחררה את הגרסה 2.2.0. מהדר הקוד הפתוח לשפת פסקל אשר ממשיך מאז התחיל ב-1993 לגדול ולהיות אחד ממהדרי הקוד הפתוח הכי מתוחכמים הקיימים כיום. מדי יום מפתחים רבים מגלים את FPC ומפתחים את התכנות שלהם באמצעות פסקל מונחה עצמים. הפיתוח של Lazarus תרם לכך באופן מיוחד: Lazarus היא סביבת עבודה משולבת גרפית עבור FPC, עם כלי פיתוח רבים לפיתוח ותכנון תכנות גרפיות.
להמשיך לקרוא

הדגמה לניצול בעיית אבטחה של טלפון תוכנה

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

האתר Blue Box שם לו לדגש להציג בעיות אבטחת מידע בעולם הVoIP באמצעות שידורי PodCast.

אחד משידורי הPodCast מציג הדגמה של בעיית אבטחה בטלפון תוכנה הרץ בWindows. הפירצה מאפשרת ניצול של באג, ונותנת גישה ישירה לShell ב Windows.

בלינוקס אין ווירוסים

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

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

אורי, חשוב לי להדגיש רק, כי אני לא תוקף אותך אישית, ואני רק לוקח את מה שכתבת בתור דוגמה.

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

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

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

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

האם לינוקס כיום מוכנה להיות מערכת הפעלה שולחנית ?

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

עבירה לא פורפוציונלית

הבלוג "מאבד תמלילים" מדווח על בחור שהפיץ סרט ברשת peer to peer לפני שיצא להקרנים.

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

להמשיך לקרוא

מכון חוסר התקנים הישראלי

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

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

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