Learning Validation Application Block With Strippers (Teaser)

26 ביוני 2007

קדם דבר: למה צריך וולידציה? (או: "קופים. פשוט קופים.") יש לנו בעיה בתחום התוכנה היום - המשתמש. ה-End User מתעקש באופן קבוע להשתמש באפליקציות המורכבות להחריד שפיתחנו.כל הקונספט מאחורי UI הוא מאוד בעייתי. User Interface אמרתם? לחשוף ממשק קלט ופלט למשתמש? זה רק מוביל לצרות. ברוב התרשימים המשתמש יופיע כאיש קטן עם ראש גדול.בתחילת שנות ה-2000 נהוג היה לייצג את המשתמש בתרשימי UML אי-אלו בדמות הבאה  , לקראת שנת 2005 שנינו את הפרספקטיבה ל-  והיום בעידן האופיס 2007 המשתמש נראה כך . תרשו לי להציג דמות אחרת למשתמש:  כן - קוף, שימפנזה, אורנג-אוטנג, למור וקופיפים באשר הם. נהוג לחשוב על בני-אדם כאינטלגנטיים, זוהי טעות שמקורה בנתינת יותר מדי...

Question from Tapuz .Net forum: Generics and Anonymous delegates on List<T> With LINQ!

18 ביוני 2007

שאלה: ב-List<T> Collection יש כל מיני Methods שמקבלות כל מיני פרמטרים ג'נאריים.  List<T>.ConvertAll מקבלת משהו בשם <Converter<T. List<T>.Exists, List<T>.RemoveAll, List<T>.TrueForAll ו-List<T>.FindXXX מקבלים משהו בשם <Predicate<T. List<T>.Sort מקבל <IComprar<T. List<T>.ForEach מקבל <Action<T.  מה זה כל ה-Methods האלו? מה המחלקות האלו? צריך לעשות Inheritance מהן? שמעתי שאפשר לעשות משהו בשם Anonymous Methods?  מה הקשר ל-Generics? קראתי את התיעוד ב-MSDN, אבל הוא מעיק והדוגמאות לא ברורות...   תשובה: זאת שאלה מצויינת שמראה את ההבדל בין 1.1 #C לבין 2.0 #C לבין 3.5 #C. בואו נתחיל בליצור מודל בעיה - יש לנו אוסף של בקבוקי וויסקי.   בואו ניצור מחלקה שתייצג את בקבוק וויסקי.     public class WhiskeyBottle     {         public WhiskeyBottle(Color labelColor, string manufacture, int pricePer750MLBottle)    ...

Question from Tapuz .Net forum: Refactoring code for code review

13 ביוני 2007

שאלה: יש לי מערך של קבציםומערך של אובייקטים המכיל ערך ישן וערך חדש.אני צריכה להחליף בכל הקבצים את הערך הישן לערך החדש.אני עשיתי את זה כך / אשמח לשמוע ביקורת לכאן ולכאן או אפשרות לשיפור הביצועים. מה דעתכם? האם יש דרך לשפר?         public static void Main()         {             //רשימה של השמות הישנים והשמות החדשים על מנת להחליף את הטקסט             List<manageFiles> mf = new List<manageFiles>();             mf.Add(new manageFiles("replace me", "with me"));               //רשימת הקבצים החדשה             List<string> filesUrl = new...
אין תגובות

Removing Script# (ScriptSharp) Item Template

12 ביוני 2007

If like me you like to compile your C# code to JavaScript you probably use Script#. And if like me you use your Visual Studio 2005 for something other then Script# programming you must know - Script# Item templates are the worst thing to ever happen to the human race since pigeons. Let me explain. Script# Installs an Item Template. Like the "Windows forms" item template or "config file" item template. The problem is Script#'s Item template sits in it's own folder which somehow becomes the default folder when creating ANY new item. Let's say I've got a...

Blog now FireFox compatible

7 ביוני 2007

FireFox just doesn't play nice with CSS pseudo-selector blocks. I use the following CSS code in order to highlight & color the first letter in every paragraph: .post p:first-letter { color: #1084FF; font-weight: bold; } The end result in Internet explorer and the correct rendering is as such:   However this how it's rendered in FireFox 2.0: Apparently mixing Hebrew & English with "p:first-letter" makes FireFox go nutty. After checking live-search for a solution and seeing there is none I've decided that I'll disable this feature for FireFox users. The following CSS: .post...

Question from Tapuz .Net forum: Returning an Enum value and name from Microsoft AJAX WebServices (Creating Custom JavaScriptConverter, Javascript Enums)

6 ביוני 2007

שאלה:  אני עובדת עם Microsoft AJAX ומחזירה מהשרת ללקוח Enumים. הבעיה היא שבמקום להעביר ללקוח את הטקסט של ה-Enum אנחנו מקבלים את האינדקס של הערך הנבחר. אפשר לשנות את ההתנהגות הזו שיעביר את הטקסט של הערך? אולי בצמוד לאינדקס?   תשובה:  בואו נראה דוגמה לבעיה לפני שנפתור אותה. נתקין Microsoft AJAX ו-ASP.Net Futures אחרי שהורדנו אותם מכאן - http://ajax.asp.net/downloads/default.aspx?tabid=47.  ניצור אתר Microsoft AJAX CTP Enabled חדש. נכתוב Enum חדש בדוט נט.     public enum myEnum     {         First,         Second     } ניצור דף בסיסי שמשתמש ב-PageMethods...
אין תגובות

Question from .Net Tapuz forum: Winforms WebBrowser invoking Javascript and Javascript invoking Winforms

5 ביוני 2007

שאלה:  יש לנו טופס Winforms שפותח דף Web (שהוא HTML קלאסי) שאנחנו פיתחנו. היינו רוצים שה-Javascript בדף HTML יוכל להעביר מסרים לטופס Winforms ושזה יגיב. אנחנו גם צריכים שה-Winforms יעביר ל-Javascript נתונים נוספים. יש כלי מובנה ב-Framework לזה?   תשובה:  נחדד את נושא השאלה: תקשורת Winforms בין Javascript.לתקשורת הזו יש שני כיוונים: Javascript שמדבר עם Winforms והכיוון השני הוא Winforms שמדבר עם Javascript. נשתמש בפקד ה-WebBrowser שבה כברירת מחדל עם דוט נט 2.0.ניצור טופס חדש ונגרור WebBrowser לטופס. בנוסף, ניצור קובץ HTML בסיסי. <html> <body>     <h1> Hello world! </h1> </body> </html> נשנה את...
3 תגובות

Question from Tapuz .Net forum: Exposing a Read-only collection from a class

4 ביוני 2007

שאלה: בנינו מחלקה שמכילה כמה סוגים של Collections ואנחנו חושפים אותם החוצה ב-Properties. ה-Collections האלו הם Private למחלקה עצמה, והחוצה אנחנו רוצים לחשוף רק אפשרויות לעבור עליהם בקריאה בלבד. ההוספה והמחיקה לאוספים הפנימיים הוא תוצאה של אלגוריתמים פנימיים, למשל אנחנו רוצים שיהיה אפשר להוסיף רק דרך Add שלנו כדי שנוכל לעלות Events.  הבעיה היא שב-Get של ה-Property אנחנו מחזירים Reference Type ואפשר לשנות מחוץ למחלקה את ה-Collections בלי לעבור דרך האלגורתימים. יש לזה פתרון בדוט נט?   תשובה: בואו נבנה מחלקה לדוגמה שחושפת שלושה סוגי אוספים: (גם באנגלית: Collections) 1. ArrayList - שהשתמנו בדוט נט...
תגיות: , , , ,
אין תגובות

Question from .Net Tapuz forum: Drawing with a mouse/Stylus in Windows Forms 2.0 (not using GDI+)

3 ביוני 2007

איך אפשר להשתמש בעכבר או בעט סטיילוס (במחשבי Tablet) כדי לצייר ב-Windows Forms? ציור על המסך באמצעות עזרים חיצוניים (עכבר במקרה של מחשבים שולחניים או ציור באמצעות לחיצות על המסך במקרה של Tablet Pc) הוא מנת חלקם של מחשבי Tablet. יש DLL דוט-נטי בשם Microsoft.Ink.DLL שבא עם ההתקנה של Tablet PC SDK. כחלק מה-DLL המסתורי הזה, מגיעים כמה מחלקות מעניינות מאוד שמאפשרות לנו "לצייר על פקדים". נוריד את ה-SDK מכאן - http://www.microsoft.com/downloads/details.aspx?FamilyId=B46D4B83-A821-40BC-AA85-C9EE3D6E9699&displaylang=en. נפתח פרוייקט WinForms חדש. כדי להשתמש ב-DLL נוסיף Refference חדש לפרוייקט ל - Microsoft Tablet PC API. עכשיו, נוסיף לטופס...
אין תגובות

Question from .Net Tapuz forum: How to run a .Net application on specific runtime version?

1 ביוני 2007

שאלה: אני מעונין להוסיף קטע קוד שבודק איזו גרסה יש ל Framework‏ במחשב שמריץ אחת מהאפליקציות שלי. אני יודע שיש ב VS2005‏ אפשרות ל ClickOne‏ שמבצע את הפעולה ברגע שיוצרים קובץ התקנה, אבל זה לא רלוונטי בשבילי כי אני מוסר רק את קבצי האסמבלי הרלוונטים לאפליקציה. "הפכתי את האינטרנט" כדי למצוא קוד כזה ואני פשוט לא מוצא פתרון.. אשמח לקבל דוגמא לקטע קוד ב C‏# שיוכל לזרוק Exception‏  ברגע שקוד שנוצר על VS2005‏ מנסה לרוץ על פלטפורמה שאיננה Framework 2‏ (למשל Framework 1.1)   תשובה:  בקובץ הקונפיגיורציה של האפליקציה שלך יש אלמנט מעניין שלרוב לא מזכירים בשם <startup>....
אין תגובות