XXX.parse() – ההיגיון שמאוחרי המתודה

27 בOctober 2007

אני מניח שמדי פעם יוצא לאנשים להשתמש במתודה int.parse, short.parse וכו'. היום, נתקלתי שוב בזה שהמתודות הללו מקבלות string וממירות אותו ל Type המבוקש. מה הבעייה? הן מקבלות רק string. לעומת זאת, Convert.Int16, וכל המתודות תחת Convert מקבלות מספר types שונים. יש למישהו הסבר למה? שבוע טוב.
7 תגובות

Code Snippets ל C#

25 בOctober 2007

למי שלא מכיר, בשביל לפצות על העובדה שלתוך הסביבה שלנו, מתכנתי C#, לא הוכנסה ערימה של Code snippets בדומה לזאת שהוכנסה למתכנתי VB.NET, ניתן להוריד מכאן כמות מכובדת של snippets בנושאים שונים.
תגיות:
תגובה אחת

3 טיפים ל Windows PowerShell

24 בOctober 2007

כדי לקבל את רשימת כל המשתנים המוגדרים כעת במערכת, בין אם משתנים שמגיעים built in ובין אם משתנים שאתתם הגדרתם, יש להשתמש ב gv (שהוא, למעשה, alias של Get-Variable) אם אתם מנסים ליצור משתנה סביבה חדש באמצעות הפקודה new-item קחו בחשבון שה property ששמו path מייצג למעשה את השם של המשתנה ו value, מייצג, כמובן את הערך. בשביל ליצור "זרימה צדדית" של האובייקטים ב PowerShell השתמשו ב Tee-Object.   get-process notepad* | tee-object -variable results | stop-process הדוגמא הזאת, למשל, מדגימה תפסיק את הפרוססים ששמם מתחיל ב notepad, אבל גם תשמור מערך System.Diagnostics.Process עם הפרוססים שהופסקו לתוך המשתנה results.  
אין תגובות

במקרה של התקנת Visual Studio שנכשלת מסיבות לא ברורות….

16 בOctober 2007

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

trap statement

13 בOctober 2007

בפוסט הקודם שכתבתי על תפיסת שגיאות ב Windows PowerShell, דיברתי על כך שניתן באמצעות האובייקט ERROR לדעת איזה שגיאות קרו, לקבל את אוסף כל שהגיאות ולפעול בהתאם. בתגובה, היו ששאלו אותי איך ניתן לעבוד ולנהל שגיאות בצתורה דומה לדוט.נט שם אנחנו עובדים אם try...catch statement. התשובה, היא trap statement: למעשה, trap הוא החלופה של catch. אין לנו ממש משפט try מובהק ב powershell, מאחר שמדובר בסקריפטינג. לכן, נהוג לשים את ה trap תחילת הפונקציה. ב ExceptionType, מציינים את סוג ה Exception כשאפשר, כמובן, מספר משפטי trap, כל אחד לסוג אחר. אם...
2 תגובות

לעבוד בנוחות עם Windows PowerShell ב Notepad++

12 בOctober 2007

בתור אחד שכותב את רוב הסקריפטים שלו ב notepad++, הרגשתי צורך באיזשהו כלי, שיאפשר לצבוע את מילות המפתח, את ה cmdlets השונים וכו' ולמעשה, יהפוך את הפיתוח ב notepad++ של powershell להרבה יותר נוח.לכן, השתמשתי במנגנון ה user defined language של notepad++, שהוא מאד נוח, כדי ליצור קובץ עם הגדרות הסינטקס של powershell. את הקובץ אתם יכולים להוריד מכאן. בתוך הקובץ יש קובץ readme עם הוראות באנגלית, אבל הנה גם הוראות בעברית: פרסו את קובץ הZIP (את תוכנו) ל: %AppData%\Notepad++ למען האמת, זה הכל. במידה ואתם מתבקשים לדרוס קובץ קיים, תאשרו, כל עוד...
תגובה אחת

מאיפה האפליקציה שלי ב PowerShell רצה?

11 בOctober 2007

לעיתים, אנחנו רוצים לדעת מאיפה ה cmdlets שלנו שמורץ במסגרת ה powershell רץ. כלומר, איפה, בדיוק, נמצא ה powershell ברגע זה, כדי שנוכל לבצע פעולה שקשורה לזה.מי שניסה, נניח, להשתמש ב System.IO.Directory.GetCurrentDirectory היה מגלה שהוא נתונים לא נכונים במקרה הטוב ו Exception במקרה הקצת פחות טוב (או אולי, בעצם היותר טוב - כי הוא לא עובד עם נתונים שגויים). הפיתרו ( אפשרי רק אם יורשים מ PSCmdlet) הוא להשתמש ב:   .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str {...
אין תגובות

begin…process…end statement

7 בOctober 2007

נתקלתי בשאלה של אנשים שהתנסו בכתיבת cmdlets ורוצים לכתוב סקריפטים. כשהם כתבו cmdlets הם התרגלו שאחרי שהם יורשים מ Cmdlet או מ PSCmdlet, הם עושים override למספר מתודות - BeginProcessing שמתבצעת פעם אחת עם הקריאה, ProcessRecord שמתבצעת מספר פעמים, בהתאם לערכים שהועברו ב Pipeline (עבור כל ערך, תתבצע הפעולה) ו- EndProcessing. השאלה הייתה האם יש דרך לעבוד באותה צורה גם בסקריפטים - בלוק קוד שמתבצע פעם אחת בהתחלה, בלוק קוד שמתבצע בסוף ובוק קוד שמכיל את גוף הסקריפט שמתבצע כמספר הפעמים שנדרש. הסתכלו, למשל, על הקוד הבא: בקוד הזה, באמת, יש הפרדה בין BEGIN, PROCESS ו- END. בתוך...
2 תגובות

קוד מריץ קוד

5 בOctober 2007

כל מי שמכיר את vbScript, ושפות סקריפטינג אחרות, יודע את אחד מהיתרונות מבחינת נוחות (למרות שלפעמים טיפה חיסרון מבחינת ארכיטקטורה) - קוד שמריץ את עצמו. בVbScript זה נקרא Execute. ב PowerShell זה נקרא invoke-expression ה cmdlet הזה, Invoke-Expression מקבל ביטוי, או משתנה שמכיל ביטוי ומבצע אותו. פשוט מאד.
3 תגובות