קטגוריה: Microsoft 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 הוא אחד הדברים האחרונים ביותר בתחום. אבל זה לא מפריע לחברות השונות גם להתחמק מאחריות לנושאו להאשים את ה"האקרים".