ארכיון חודשי: נובמבר 2013

האם מיקרוסופט נעלמת מהעולם העסקי ?

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

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

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

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

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

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

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

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

חוק הנגישות סיבוב 2

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

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

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

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

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

מה שונה ב רובי 2.1

לפני כחודשים שוחרר רובי 2.1, גרסת preview. הוא מכיל כל מיני שינויים, וגם ייצבו כמה תכונות חדשות אשר נכנסו ל2.0, אבל סומנו כ experimental, או במילים אחרות, לא יציבות.
כאשר אני מדבר כאן על רובי, אני מדבר על cRuby/MRI כלומר הגרסה של יוצר רובי, ולא מימושים אחרים כדוגמת jRuby או Rubinius.

להמשיך לקרוא

כשיש לך פטיש אוויר ביד …

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

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

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

שימוש בסינטרה מאפשר לי לקחת פריימוורק כדוגמת foundation או bootstrap כ css ובנוסף לשלב את ember/angular או סתם את jquery/dojo בהתאם לצורך.

עבור מסדי נתונים, אני גם מקבל גמישות, כך שאם חלילה וחס אני נאלץ לגעת ב MySQL/MariaDB (לרוב להתחבר למסד נתונים קיים) אין בעיה (לפחות ההתחברות, עם הגועל זה משהו אחר), ואם אני בר מזל ויכול לבחור מסד נתונים, אז אבחר ב PostgreSQL , ואם יש צורך אז אבחר בכלל במונגו או אולי בכלל בRedis ?

אם אני צריך, אז אוסיף למשל סוג של job queue בהתאם לצורך הספציפי והרשימה לעבודה עוד ארוכה…

כל אלו אינם קיימים בwp, היות ובתור cms הוא נועד לגישה מאוד מדוייקת שמתאימה ל cms, אבל לא אפליקצייה.

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

ניתוח כושל והתמודדות עם מסד נתונים בעייתי

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

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

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

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

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

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

$ gfix -shut -user sysdba -password masterkey <database>.fdb

ואז להעזר ב gbak אשר מאפשר לעשות גיבוי "חם", כלומר בזמן שדברים בד"כ רצים, על ידי יצירת מצב של snapshot לדברים, אך ללא שימוש ב Garbage Collection:

$ gbak -b -g <database>.fdb

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

$ gbak -c database.gbak  db2.fdb

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

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