שלום לכולם,
החלטתי לכתוב רשימה של כלים שאני חושב שחובה שיהיו לכל מפתח בדוט נט.
1. Reflector ו-Reflector Addins
מעטים הם האנשים שלא מכירים את ה-Reflector המהולל של רודר לורץ'. Reflector היא תוכנה קטנה, חביבה ועוצמתית. Reflector מאפשרת לנו לפתוח Assemblies של דוט נט, לצפות ב-NameSpaces שבתוכה, ולראות את הקוד בתוך כל מחלקה. כאשר אנו רוצים לברר כיצד פקד שאנו עובדים עימו באמת פועל - זאת הדרך.
Reflector.FileDisassembler - תוספת שמתלבשת על ה-Reflector. נותנת להוציא Assembly שלם לקבצים של כל שפת דוט נט על ההארד-דיסק.
Reflector.VisualStudio - חלום שהתגשם. Reflector בתוך Visual Studio.
הכוח האמיתי של Reflector לא קשור רק להכרה של מה באמת קורה ב-Assemblies שאתה עובד איתן - אלא ביכולת לשנות דברים שאינם פתוחים לשינוי. בעזרת Reflector.FileDisassemble מוציאים Assembly שלמה לקבצים, טוענים אותה לפרוייקט חדש, משנים את מה שרוצים בקוד המקור, בונים מחדש ופרסטו - יכולות חדשות ואפשרויות חדשות. לא עוד להגיד “אין רכיב שעושה בדיוק מה שאני רוצה”, לא עוד “נתפשר על זה”, מעכשיו - הכל בדיוק איך שרצינו גם אם אנחנו עובדים עם קומפוננטות שלא שלנו. אפשר אפילו לשכתב חלקים של ה-Framework.
2. The Regulator
הרבה מתכנתים יגידו שלא באמת צריך Reguler Expressions - אני יודע, אני הייתי אחד מהם. תכלס', זה כי לא הבנתי אותם והם נראים מאוד מפחיד. The Regulator שינה את זה בשבילי.
הרגיוליטור נותן סביבת עבודה עם ממשק GUI נוח לחלוטין וכמעט לא-מאיים לעבוד עם RegExp.
מבחינת כתיבת RegExp, הרגיוליטור מאפשר לכתוב ביטוי RegExp באזור המרכזי, ולראות דוגמה לביטויים טקסטואליים שמתאימים ל-RegExp וכאלו שלא (ע”י חריגה קלה מהתבנית). היכולת הבאמת מהממת של הרגיוליטור היא שהוא מתממשק ל-RegExpLib.com ולפי חיפוש של מילות מפתח מציג RegExpים שאנשים אחרים כתבו. למשל אם צריך RegExp לכתובת דוא”ל או RegExp לאימות נתיב על המחשב ואלף דברים אחרים - לא צריך להמציא מחדש את הגלגל. רק לקחת מוכן ולעשות התאמות. בשבילי זאת הייתה הפונקציה שתפסה אותי - זה פשוט סביבת עבודה ל-RegExp שמקלה מאוד על תהליך הלמידה ורכישת הניסיון עם RegExp.
מבחינת יצור RegExp, הרגיולטור מאפשר להכניס RegExp מורכב ולקבל בחזרה תוצאות המקיימות אותו. למשל אם נרצה לייצר קובץ XML עם נתונים לדוגמה, נבנה RegExp “לאימות ה-XML” וממנו הרגיולטור יוצר מסמך לדוגמה.
כל הכבוד רועי אושורוב!
3. SyncBack
הכלי הזה ענה לי על שתי בעיות רציניות: הראשונה היא גיבוי הקבצי-מקור בסוף יום עבודה, והשנייה היא שחזור קבצי-מקור אחרי שמחקתי\הרסתי אותם.
SyncBack היא כנראה בהחלט תוכנת הגיבויים הטובה ביותר שאני מכיר (למחשבים שאינם שרתים). נכנסים ל-SyncBack וניתן לקבוע גיבויים מכל הסוגים למתי שצריך.
אצלי על המחשב הוא מגבה את כל הפרוייקטים בשלוש בבוקר ומעתיק אצ השינויים להארד-דיסק חיצוני ואחר מכן למיקום מרוחק. ככה שלמקרה והמחשב שלי יתפוצץ \ יעלה באש \ יגנב \ ישבר (לאפטופ) \ יפול וכל מיני מרעין בישין אחרים - עדיין יהיה גיבוי בר-קיימא של כל הפרוייקטים שעובדים עליהם. למעשה מחר גם אם ההארד-דיסק שלי מת, מדובר בעיכוב קל מאוד מבחינת העבודה על פרוייקט היות ויש לי גיבוי מלא של ספריית הפרוייקט.
אישית, הפרוייקט הראשון והאחרון שאיבדתי היה שהייתי בן 14 וזאת הייתה תוכנה שמחקה בינה-מלאכותית ועבדתי עליה משהו כמו שנתיים (ושאתה בן 14 זה נראה כמו הרבה מאוד זמן). מאז יש לי גיבויים מושלמים לכל דבר חשוב. וגם שקטסטרופות \ טעויות קורות, אני לא מתרגש.
עוד דבר חשוב ש-SyncBack עושה זה שהוא מוריד הרבה מלהחץ על לעבוד על קוד מקור לא מגובה. לכולנו יש ימים שבהם אנחנו עושים יותר נזק לתוכנה מאשר טוב, וגם יש הרבה מקרים שבטעות מוחקים חצי קובץ קוד\תצוגה או איזה Build מלפני שלושה ימים ופתאום צריך אותו. SyncBack פתרה לי את הבעיות האלו.
4. Visual XPath
Visual XPath היא ממשק נוח מאוד לבדיקת ביטויי XPath על קבצי XML. אחרי שביזבזתי יומיים בפרוייקט לפני שנה וחצי על כתיבת ביטויי XPath ובדיקה שלהם בתוך הפרוייקט בו הם היו אמורים לרוץ, חשבתי שחייבת להיות דרך נורמלית לעשות את זה. מהבחינה הזאת, Visual XPath ענתה על הבעיה הזאת בצורה מושלמת.
Visual XPath לדעתי נמצאת בצורה ברורה בקטגוריה של “דברים שהיו צריכים לבוא עם Visual Studio” (ביחד עם DataSet Watcher שבחיים לא עבדתי איתו, אז אני לא יכול להמליץ עליו).
5. CodeSmart
תוספת מדהימה ל-Visual Studio. פשוט נכתבה תפור בשבילי. לפני שהכרתי את התוכנה הזאת הייתי יושב ועושה משימות חוזרות על עצמן מבחינת כתיבת קוד, CodeSmart פשוט שינתה את כל זה.
CodeSmart לא כותבת את הקוד בשבילך, אבל היא כן מורידה בצורה משמעותית את הזמן שמבלים על משימות קטנות שאין שום סיבה שלא יעשו בשבילך.
אני די משוכנע שאין מספיק ביטים פנויים על השרת של הבלוג שלי כדי לפרט את האפשרויות והפונקציונליות שהתוכנה הזאת מביאה. אז לפירוט מלא לכו לכאן, והנה פירוט חלקי מאוד: יישום ממשקים לפי שם, ג'ירונט Properties, ג'ירונט מתודות, השלמה אוטומטית לקוד נפוץ, הוספת הערות XML לפי סוג המחלקה שעובדים עליה, שמירת קוד אוטומטית, תצוגה לפי מחלקות ולפי קוד (באותו עץ), סטטיסטיקות קוד (כמה שורות ריקות, כמה הערות וכך הלאה) ועוד הרבה מאוד דברים.
התוכנה הזאת לא חינם, אבל כן יש 30 יום ניסיון שבהם כל האפשרויות פועלות.
6. VsBuilderHelper
העובדה שקוד ASP.net צריך להתקמפל לפני שאפשר להריץ אותו הוא יתרון אדיר מבחינת ביצועים, אבל הוא מעורר בי הרבה געגועים לימי ה-ASP העליזים בהם כל שינוי שעשינו ישר נקלט. יש המון מקרים שלפתוח Visual Studio בכדי לשנות פסיק וחצי זה פשוט יותר מדי. למשל שאתם עובדים על מחשב של מישהו אחר ואתם לא רוצים לעבוד עם ההגדרות פונטים הפסיכוטיות שלו (David 10, ראבאק, איך מישהו עובד ככה?!), או שאתם כבר עמדתם לצאת מהמשרד ורציתם להריץ איזה Build לוקאלי קטן לראות שהכל בסדר. הכי פשוט יהיה לפתוח את קוד המקור ב-NotePad לשנות איזה פסיק ולשמור.
אבל אי-אפשר לעשות שינויים בקוד המקור של פרוייקט והוא יתקמפל לבד בגישה ל-IIS. לא, צריך לקמפל אותו. בשביל זה יש את VsBuilderHelper מדובר בכלי קטן שמקבל קובץ פרוייקט (web/win/console), קורא אותו ומשתמש בממשק הפנימי של Visual Studio לקמפל אותו. היופי איתו זה שכל מה שצריך זה לשים את ה-exe בספרייה ואפשר להפעיל אותו מקובץ bat ששולח את שם קובץ הפרוייקט ושום הקונפיגיורציה לבנייה (relese/debug).
תמיד טוב שיהיה קשה דבר בספריית הפרוייקט, זה לא מזיק.
7. CodeSmith / myGeneration
המון פעמים צריך לכתוב קוד שחוזר על עצמו והולך על פי אלגוריתם (סט ידוע מראש של כללים). לא צריך להיות מתכנת, ולמעשה אפשר גם להיות צנצנת, כדי לכתוב כזה קוד. אז CodeSmith ו-myGeneration מאפשרים לך לכתוב צנצנות אוטומטית.
לא יצא לי לעבוד עם CodeSmith, אבל יש הרבה אנשים שאני מעריך שאומרים שזה אחלה של תוכנה והם יתנפלו עליי ברחוב חשוך אם אני לא מזכיר אותו. קישור למאמר בנושא שכתב אורן.
myGeneration מתבססת על ספריית תבניות שמסתמכות על מבנה מסד הנתונים ומשם מג'רנטת קוד. אחד מהדברים החזקים ב-myGeneration היא שהיא מאפשרת גישה לספריית תבניות גדולה מהאינטרנט ושגם בהן אפשר להשתמש. בנוסף, אפשר לכתוב תבניות משלך או להתאים תבניות קיימות. את התבניות האלו אפשר לכתוב בשפות דוט-נטיות (VB.net ו-#C) וגם בשפות סקריפטים (VBscript ו-JavaScript), התוצאה של הג'ירונט הוא כמובן ב-#C או VB.net (למרות שבתיאוריה myGeneration גם יכולה לתמוך בטכנולוגיות לא קשורות כמו PHP וג'אווה).
myGeneration יכולה להתחבר לרוב מסדי הנתונים שאני מכיר, וגם לאלו שהיא לא יכולה להתחבר זה בערך 20 דקות עבודה להגדיר אותם בתוכנה ולג'רנט ממנו קוד.
אחד מהדברים שאהבתי מאוד ב-myGeneration זה קונספט ה”פרוייקט”. כל פרייקט ב-myGeneration מכיל סט של תבניות אשר מופעלות על טבלאות\נתונים ממסד הנתונים ומייצרות למיקום קבוע קוד. כלומר, אם מחר משתנה מסד הנתונים שלנו, פותחים את קובץ הפרוייקט של myGeneration, לוחצים על כפתור “Run” והוא כבר שם בתיקיית הפרוייקט של Visual Studio את הקוד העדכני. שום טירחה ושום בלאגן.
למצגת בת 10 דקות המראה את רוב היכולות של הממשק הפשוט אך בר-העוצמה הזה - כאן.
8. Merlin
למרות שאני פרו-ג'ירונט קוד, יש דברים שפשוט אי-אפשר לג'רנט. שצריך ראש והיגיון (עלאק) של תוכניתן. אחד מהדברים האלו הוא ממשק המשתמש הבסיסי וקוד בסיסי. למשל כל דפי החיפוש בכל אפליקציה בעולם עוקבים אחרי אותם רעיונות כללים: שדות להכנסת קלט, שאילתא, טבלה שמציגה תוצאות. לא צריך כל פעם לכתוב את הכל מהתחלה. לכן המציאו דבר קטן שנקרא Templetes (כל הכבוד אגב למי שמכיר את זה). כדי לערוך את ה-Templetes של Visual Studio (או להוסיף חדשים) צריך לעשות כמה צעדים מייגעים וטכניים מאוד שהופכים פריסה של תבניות בארגון של יותר מבן-אדם אחד לחוויה מאוד לא כיפית, כנ”ל אגב על פיתוח. אז הממשק הזה נועד לענות בדיוק על זה.
לא מתוחכם מדי, לא פשוט בכלל, וגם לא מתוחזק יותר ע”י בונה התוכנה (ממי לוי), אבל עדיין שווה הצצה.
9. ErrorHandler
מדובר במחלקת קוד ולא בתוכנה, ולמחלקה הזאת אפילו אין שם נורמלי, אבל אני בכל מקרה שם אותו כאן. איך אתם מנהלים לוגים של שגיאות באפליקציות שלכם? כותבים איזה מקום שתופס את השגיאות, ואז מה? עובר עליהם וכותב אותם לתוך איזה קובץ טקסט\HTML? שולח אי-מייל? ואז מה? איפה ניהול השגיאות? איפה הסקת המסקנות? איפה היכולת באמת לנתח מה השתבש ומה לא פועל בכדי שנוכל לתקן את זה עכשיו ומיד.
שאתם מוציאים תוכנה לבדיקות של הלקוח או לפריסה ראשונית או אפילו פורסים אפליקציה, ואומרים לכם (וזה אם יש לכם מזל) - “עשיתי ככה וככה והייתה שגיאה”. אם עדיין יש לכם מזל, השגיאה הזאת תחזור על עצמה בתנאים שתוכלו לראות אותה. אם אין לכם מזל, תצטרכו להסתמך על הקובץ לוג הטקסטואלי שאתם מנהלים. מדובר פה, צריך להגיד, בשיטה עקיפה ולא מתאימה.
הספרייה הזאת מאפשרת לכתוב לוג מלא של כל השגיאות לתוך קובץ XML. החל מהרגע שבו כותבים את שורת הקוד האחרונה, עובר בכל תהליך הפיתוח, הפריסה, וההרצה. יש רישום מלא של כל הפרטים שצריך לשמור החל משעה, תאריך, סוג שגיאה, פרטים מלאים, ב-ASP.net זה גם יכול לרשום Request.QueryString ו-Request.Form, ועוד הרבה מאוד פונקציונליות.
לפי דעתי, זה חשוב מאוד בכל אפליקציה.
Remember Me