FrontPage Server Extensions

tberger

New member
IDisposable

למה בדיוק משמש אם ה GC מנקה אוביקטים מתי שלא משתמשים בהם יותר? האם רק כאשר משתמשים גם באוביקטים "לא מנוהלים" או גם באוביקטים מנוהלים? מה צריך להיות ביישום שלו? תודה
 

gilad g

New member
אני נוהג להבחין בין שני מקרים:

שימוש במחלקה מסוימת: אם אנחנו משתמשים במחלקה מסוימת, יש לשים לב טוב טוב אם היא מממשת את IDisposable. אם כן, יש לקרוא ל-Dispose בסוף. הסיבה לכך היא שהמחלקה הזאת ניגשת למה שנקרא "Unmanaged Resources", שהם בדר"כ נתונים שבאים מחוץ ל-CLR. זה כולל קובצי דיסק, מחלקות שמתעסקות עם גרפיקה, ומסדי נתונים. לעיתים, למחלקות אין מתודת Dispose, אלא מתודה ששמה Close (ראה Connection, לדוגמא), ולכן צריך להתייחס לזה.
בניית מחלקה מסוימת: כאשר אנחנו בונים מחלקה, ואותה מחלקה צריכה לעשות איזשהו cleanup (כתוצאה משימוש ב-unmanaged resources), אנחנו מממשים את IDisposable... לומר לך את האמת - אני לא יודע איך בדיוק מממשים את הממשק הזה, אבל יש אינספור מאמרים באינטרנט בנושא
 

tberger

New member
Unicode ו Ascii

האם ומהו הקשר בין Unicode לבין Ascii? כלומר האם Unicode הוא בעצם אוסף של דפי New Ascii ? איך יודעים באיזה Page נמצאים? האם #C עובד רק עם Unicode או גם Ascii? האם כל פונט עובד רק עם Page אחד? למשל כתבתי
char c; label1.Text=""; c=(char)224; label1.Text=c.ToString();​
ואז מקבלים "A" אבל אם במקום 65 כותבים 224 מקבלים איזו אות בלתי מזוהה. כלומר נמצאים באיזה שהוא Page אבל לא של עברית. האם עם Char ניתן לעבוד גם עם Unicode וגם עם Ascii?
 

gilad g

New member
אז ככה ../images/Emo13.gif

קודם כל אני ממליץ לך לקרוא את זה (משהו שכתבתי שמסביר את ההבדלים בין Unicode ל-ASCII). הכלל הוא: מחרוזות ו-char-ים בדוט נט הם בunicode. כל פעם שאתה כותב "שלום", אתה בעצם כותב רצף של 8 בתים (כי כל תו ביוניקוד הוא 2 בתים). אם אתה רוצה לעבוד עם ASCII, אתה צריך להשתמש בניימפייס System.Text. הוא חושף מתודות וקלאסים שנותנים לך לתרגם מספרים למחרוזות/תוים, כאשר המספרים אינם מייצגים קודי unicode, אלא קודי ASCII. נניח שיש לך את המערך הבא של 4 בתים:
byte[] b = {130,156,198,123};​
בשביל הדוגמה, נאמר שסדרת מספרים זו מייצגת את המילה "שלום" ב-ASCII. כבר אמרנו שמחרוזות ב-#C הן יוניקוד, לכן אנחנו צריכים להמיר את סדרת הבתים הזאת למחרוזת יוניקוד. את זה עושים ככה:
using System.Text; byte[] byteArray = {130,156,198,123}; //Create a new Encoding class Encoding hebrew = new Encoding(1255); /* 1255 = hebrew, this can be any other encoding, including 65001, if our byte array represents unicode bytes, or 1251 if our bye array represents western-european bytes. */ //Convert the byte array to a string. string x = hebrew.GetString(byteArray);​
מקווה שהכל מובן
 

tberger

New member
כלומר במה שקודם כתבתי

אני מכניס Unicode? כלומר בעצם שאומרים ASCII חייבים לומר גם CODE PAGE שלו? מה לגבי הפונטים? איך מתורגם Unicode להצגה בפונט הנכון? האם פונטים מייצגים בעצם ASCII ב CODE PAGE מסויים?
 

tberger

New member
ועוד משהו

האם אם אני אקח BYTE 224 שהוא "א" של Page windows 1255 ויעביר דרך הפונקציה שהצגת אני אקבל ב STRING או ב CHAR מספר 1488?
 

gilad g

New member
המממ

"אני מכניס Unicode? כלומר בעצם שאומרים ASCII חייבים לומר גם CODE PAGE שלו?" כן. מתוך ה-MSDN:
Windows Forms are entirely Unicode-enabled, meaning that each character is represented by a unique number, no matter what the platform, program, or language. For more information on Unicode, see the Web site of the Unicode consortium (http://www.unicode.org/).​
לגבי פונטים, אני ממליץ לך לקרוא את הקישור הבא: http://msdn.microsoft.com/library/en-us/vbcon/html/vbmscTableWFCControlsSupportingInternationalText.asp?frame=true את ההודעה הזאת כתבתי בהנחה שמדובר ביישום חלונאי. (ולא ASP.NET, ששם המקרה הוא עוד יותר פשוט - בIE יש תמיכה ביוניקוד מגרסה 5, ואולי גם מגרסה 4
)
 

tberger

New member
FrontPage Server Extensions

התקנת VS דורשת שה FPSE יהיה מותקן. למה הוא משמש? האם כדי להעלות דפים לשרת ולאפשר פתיחת פרויקטים מתוך ה IIS ע"י התחברות אליו? האם אין בו סיכון בטיחותי? האם ניתן לא להתקין אותו ולפתוח פרויקטים ב IIS ידנית ולאחר מכן להתחבר אליהם? תודה
 

gilad g

New member
המממ

"למה הוא משמש? האם כדי להעלות דפים לשרת ולאפשר פתיחת פרויקטים מתוך ה IIS ע"י התחברות אליו?" בעיקרו, כן. "האם אין בו סיכון בטיחותי? " יש בו. אני ממליץ לך להתקין אותו על שרת ה-Development שלך, אבל בשום אופן לא להתקין אותו על שרת ה-Production. "האם ניתן לא להתקין אותו ולפתוח פרויקטים ב IIS ידנית ולאחר מכן להתחבר אליהם? " אתה מדבר על VS.NET
אני חושב שלא
(לא בטוח בזה...)
 

Admini

New member
אל תתקין FPSE בחיים

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

gilad g

New member
חחח ../images/Emo13.gif

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

Admini

New member
כי

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