DCSIMG
September 2006 - Posts - Justin myJustin = new Justin( Expriences.Current );

September 2006 - Posts

U2U refuses to deal with Israeli companies due to inhumane and destructive war crimes

Via Roy: (Who translated this passage from Ynet and has the whole story)

"I value your interest in my company" writes Wim,the U2U's CEO, in a response that was forwarded to YNet,  "but after the inhumane and destructive war crimes Israel has done in Lebanon, and due to the apartheid regime that your government leads in Palestine, U2U does not feel fit to be tied to Israeli Products. I hope the political situation in your country will change dramatically and will be based on peace and respect for non Jewish cultures"

I've got one thing to tell Wim - Apologize.

You've mixed business with politics & Religion. That's WRONG. There's no going around this - you were WRONG and you are WRONG.

By making gross and totally non-based assumptions you've actually managed to HURT other people.

 

Lets say for sake of argument I agree with dear Wim on this issue and we should all just stop using Israeli associated software.

  • Roy Osherove wrote the awesome "Regulator" tool which is the de-facto industry standard tool for working with Regexp in .Net (and is on his way to revolutionizing the way we work with Regexp with the "Regulazy" tool).
  • Eli Lopain is a senior management member of the TypeMock .Net Mocking liberty.
  • Oren Eini is a NHibernate contributor, The Creator of "RhinoMocks" & an assortment of god knows what else.
  • I myself (who is totally unworthy to be on the same list with this guys) wrote "MSDNWiki RSS#". (And the hosting is paid with my Israeli Department of Defense salary)
  • This list goes on, and on & on...

So by now U2U isn't using ORM, Regexp & Mocking.
And how can Wim be sure your employees aren't tempted to use one of these tools? He should always spy on them and take away their "Administrator" rights on their PCs. After all, he can't have anything to do with Israeli software.

 

But wait, Will Wim still let his employees read articles, blogs & books written by Israelis???

So by now U2U is literally actively screening only information which their CEO thinks that the author is "racially approved".
But wait, how can Wim know his employees aren't secretly reading Israeli blogs? He should implement what the Chinese government did with google - just censor information. Maybe Wim can go directly to google and create a "non-Israeli" search engine.

 

Wim, Apologize. You were wrong to write that email, and by not apologizing you're only insulting & hurting others.  

 

(If anyone wants to be removed from the lists above, comment or email me and I'll remove you.
ALL names mentioned here are used WITHOUT the explicit consent of whom ever mentioned.
The lists were written with a "top-of-my-head-who-do-I-remember-at-three-in-the-morning" concept.)

Question from .Net Tapuz froum: How to become a great .Net developer

שאלה: איך להיות מתכנת חזק?

תשובה:

אין רשימת נושאים אחידה שניתן לתת לתכנת דוט נט כדי שהוא יהפוך ל"תכנת חזק".
כמות הנושאים הקיימת בדוט נט היא באזור ה-20,000 פלוס מינוס. יש בפריימוורק 12,000 מחלקות כיום ועוד אלפי נושאים שלא נכללים כחלק מהפריימוורק (Application blocks, presistence, testing, ארכיטוקטורה וכיו"ב).


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


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


2. להיות מנוי לבלוגים.
באתרים כמו DotNetKicks, CodeProject, weblogs.asp.net, codeBetter יש עשרות מאמרים שמתפרסמים כל יום. חלק אתה כבר מכיר ויודע, חלק מציגים לך נושאים שפעם ראשונה שאתה נחשף עליהם והשאר מחדדים לך את הידע המקצועי. הכי חשוב זה לא להירתע מזה שלא מכירים נושאים ומכמות המידע.
זה פחות הקטע של להישאר מעודכן (בניגוד למה שנהוג לחשוב על בלוגים) אלא יותר לשים לב לגישות שאנשים מציגים והטכניקות שהם מראים.


3. לצפות ב-Webcastים.
מיקרוסופט וגורמים פרטיים (כמוני) עושים Webcastים שאלו שידורים מוקלטים על נושא ספציפי שבו רואים את המסך של המציג והוא סוקר נושא מהתחלה ועד הסוף. ב-Webcastים הטובים אפשר לרכוש את המקביל של יום-יומיים ניסיון תוך שעה. יש Webcastים חדשים כל יום ובאופן קבוע מתווספים חדשים. תיכנס לאתר של מיקרוסופט ותמצא כמה שמעניינים אותך ותירשם אליהם.


4. לשמוע Podcastים.
כמו Webcast שזה ווידאו ואודיו אז Podcast זה רק אודיו. יש 5-6 Podcastים מפורסמים בדוט נט וכל פעם שיש לך חמש דקות שווה לפתוח נגן MP3 ולהקשיב. במכון כושר, בריצה, בזמן נסיעה, בהליכה ברחוב, במכולת. גם לרוב Podcastים הם דיאלוג ולא מונולוג כמו Webcastים ולכן הרבה יותר קל להתחבר אליהם (למרות שהידע המקצועי שהם מציעים הוא לרוב פחות מ-webcastים).


5. לקרוא ספרים.
כל שבוע יוצא ספר חדש בדוט נט. חלקם ספרים בסיסיים ומסודרים יפה של Microsoft Press וחלקם של הוצאות פרטיות כמו Mcgrew-hill או ASPress, אבל העיקר זה שתמיד יהיה לך ספר שאתה קורא באותו רגע. תמיד. זה כמו לרכוש שנה ניסיון של מקצוען אמיתי תוך שבוע-שבועיים. פשוט בן-אדם שיושב 600-1,000 עמודים ומתחיל להפציץ עד שהראש שלך מתפוצץ.


6. ללכת להרצאות ו-Usergroups.
מדי חודש יש פגישות של קבוצות משתמשים בארץ (יש קבוצה של סיקוול, קבוצה של #C, קבוצה של VB.Net, קבוצה של ארכיטקטים, קבוצה של Agile, קבוצה של Mobile, קבוצה של אבטחה ואפילו קבוצה של תפוז). אתה יושב שלוש שעות מול מומחים שמעבירים לך הרצאות, מקבל אוכל ופוגש אנשים. חובה.


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

 

קישור למקור: http://www.tapuz.co.il/tapuzforum/main/Viewmsg.asp...

Posted by Justin-Josef Angel [MVP]
תגים:,

Question from .Net Tapuz forum: Temporary ASP.Net 2.0 DLLs could not be found errors

שאלה:

 

"Metadata file 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\my_proj\ce601211 \9d5d0aae\App_WEB_header.ascx.asdf7d2.vcvdd1d.dll' could not be found"
I'm getting this error sometimes when i'm trying to compile my web project.
The weird part is that to solve it - I just keep hitting the F5 button until the error disapper and then the project is running fine.
I found the problem on the web but now solution.
I'm useing VS2005 standard edition, FW 2.0.50727.
can enybody help?

 

תשובה:

חשוב להבין כאן את מודל הקומפילציה של ASP.Net. הקונספט הברירת מחדל הוא שכל דף מתקמפל לאסמבלי משלו בכל גישה לדף. הדבר נכון באופן אבסולוטי לאתרי ASP.Net 1.1 או כברירת מחדל ל-ASP.Net 2.0. ובאמת מקבלים מזה רמה מאוד גבוהה של גמישות במהלך פיתוח.


הבעיה היא שקיימת הגבלה ברמת הקונפיגיורציה של הפריימוורק על מספר הגרסאות השונות של ASP.Net Page Assmebly שניתן לטעון במהלך אותו תקופת חיים של הפרוסס של ה-IIS. ההגבלה הזאת נובעת מהצורך של ה-IIS לבצע אופטימיזציה בזכרון ביחס לכמות הגרסאות השונות של האסמבלי של אותו דף שהוא ידרש לטעון.


ברירת המחדל היא שה-IIS ידע לטעון עד (לכל היותר) 15 גרסאות של אותו ASP.Net Page Assembly.


אפשרות אחת היא לעלות את המקסימום הזה ברמת השרת (machine.config) או ברמת האפליקציה (web.config) בשביל זה תוכל לשנות את המאפיין NumRecompilesBeforeAppRestart של compilation לגבול העליון החדש הנדרש.

 

<system.web>
   <compilation NumRecompilesBeforeAppRestart=100 />
</system.web>

 

אופציה ב' היא משהו פחות מובנה היא לגרום לאתחול של ה-AppDomain שבו רצה האפליקציה הבעייתית בזה שתאתחל את כל הפרוסס של ה-ASP.Net WorkerProcess. את זה אפשר לעשות דרך אתחול של ה-IIS עם פקודת IISReset (הרצה מתוך start--> run). הפתרון הזה מתאים למצב שאתה עובד המון באותם 29 שעות (משך החיים הדיפולטי של Process שרץ בתוך IIS) עם גרסאות שונות של Designer HTML של דף ASP.Net ואתה רק רוצה לפתור כרגע את הבעיה ולחזור לעבוד.

Question from Tapuz .Net forum: Strong-named Assemblies Advanced questions

(השאלות והתשובות מעורבבות בכדי לאפשר קריאה קלה יותר)

 

שאלה:

כדי להתייחס לאסמבלי ב.net או כדי לעשות אותה משותפת (כלומר לשמור אותה ב GAC) צריך להיות לה מה שנקרא fully qualified name או strong name.
אותו שם כולל את ההירארכיה של ה namespace , שם האסמבלי, גרסא, תרבות, ומפתח ציבורי.
השיטה חדשה ב .net ובאה להבדיל בין האסמבליז.
עכשיו לפי מה שהבנתי את המפתח הציבורי אני יוצר דרך sn.exe בלי קשר לvisual studio ואז מוסיף את המפתח הציבורי שנוצר לי לקובץ assemblyinfo ועושה build, ואז אני יכול להתייחס לאסמבלי כ strong named assembly עם מבנה השם שציינתי קודם.

 1. מה המשמעות של המפתח, ומה המשמעות של המחרוזת שהוא מייצר?

תשובה:

 המפתח הוא אחד מהאלמנטים לזיהוי חד-משמעי של אסמבלי. הרעיון ב-Strong-named אסמבלי שזה ליצור וודאי ביחס לאסמבלי, ולא ליצור קשר רופף על בסיס שם הקובץ או מיקומו. המפתח המוזר בן 300 התווים בקובץ SNK יוצר מצב שאם פלוני בעתיד ירצה "להתחזות" לאסמבלי שלך הנושא יהיה בלתי-אפשרי.


למשל, אם אני פלוני-האקר שרוצה להחליף את האסמבלי שלך שמטפלת בסליקה און-ליין. האסמבלי שלי שמתחזה לאסמבלי שאתה פונה אליה תעשה את כל מה שאתה רגיל אליו ובנוסף תשלח לי מסר עם מספר כרטיס האשראי. המפתח SNK מגביל את האפשרויות שלי היות ולא מספיק שאני אחליף קבצים בספרייה\GAC או כל מקום אחר, אלא אצטרך גם לזייף קובץ מפתח יחסית מסובך.


כמובן שה-SNK הוא הגנה קלה בלבד כנגד האקר מיומן שיש לו מה להרוויח מלהתחזות לאסמבלי שאתה משתמש בה. זאת עקב נפיצות האלג' המקודד (קובץ ה-sn.exe הדיפולטי) והעובדה שבסופו של דבר האסמבלי שלך תכיל Hash של קובץ החתימה.

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

 

שאלה:
2. לפי הדוגמאות שראיתי באינטרנט הם רושמים ב assemblyinfo את הנתיב לקובץ snk שנוצר
    א. האם מומלץ להכניס את קובץ ה snk לתוך ה solution?

תשובה: כן, מומלץ בחום להוסיף את ה-SNK לתוך ה-Solution ולתוך ה-Source Control הנבחר שלך.


שאלה:    ב. ראיתי שבמאפיינים של הפרוייקט יש חוצץ signing או משהו בסגנון ושם גם אפשר לציין את קובץ ה snk ע"י GUI ולא ע"י קוד, מה ההבדל?
תשובה:  Signing ב-VS2005 עושה פחות או יותר מה שעושה פירוט ידני בקובץ ה-AssemblyInfo.cs. הוא גם ייצר עבורך את המפתח מתוך Visual Studio.
לעומת זאת, בלי פירוט של Signing בצורה ש-Visual Studio 2005 מכיר ואוהב יהיו לך קשיים ליצור Manifest Signing שהיא הכרחית להתקנות דרך ClickOnce.

שאלה:    ג. האם יש דרך אחרת מלבד זו שציינתי להזין את ה public key? לדוגמא לרשום ישירות את ה key במקום להפנות לקובץ?

תשובה:

לא ניתן לפרט את ה-SNK ישירות בתוך קובץ ה-AssemblyInfo.cs וטוב שכך. מדובר באיסור חמור של אבטחה להחזיק גם את האוצר שאתה מנסה להגן אליו וגם את המפתח לתיבת האוצר באותו מקום.


למען האמת, אצלנו  במהלך פיתוח נהוג להפריד בין קבצי ה-SNK לבין ה-Solutionים עצמם. במהלך הפיתוח אנחנו משתמשים ב-AssemblyDelaySignAttribute על האסמבלי כדי לציין ש"אנחנו נהפוך אותך ל-Strong בסופו של דבר, כרגע תפסיק להציק לנו". את החיבור הסופי אפשר לעשות עם ה-AssemblyLinker שמגיע עם הפריימוורק כקובץ AL.exe ויש גם משימה של MSBuild בשם ALTask שמבצעות את זה עבורנו כאשר הקמפול הוא בתצורת Release.

 

שאלה: 3. האם יש דרך עוד דרכים להפוך אסמבלי ל strong named?

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

 

קישור למקור: http://www.tapuz.co.il/tapuzforum/main/Viewmsg.asp...

Question from .Net Tapuz forum: ClickOnce deployment strategies

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

תשובה:

ל-ClickOnce יש שלושה "אסטרטגיות" פריסה אצל לקוח.

beforeApplicationStartup - כאשר הלקוח מפעיל את האפליקציה כל הבדיקות והעדכונים המתאימים מתבצעים לפני שהמשתמש רואה את האפליקציה עצמה.

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

  <subscription>
      <update>
         <expiration maximumAge="1" unit="days" />
      </update>
   </subscription>

ואופציה ג' זה ייזום ע"י קוד. ככה שתוכל ליצור אסטרטגיה משלך.

כמו שהבנת, expiration תקף רק בזמן שהאפליקציה רצה.

אפשרות אחת היא ליצור Windows Service שבודק באופן ייזום אם יש חידושים לאפליקציה שלך ואם כן דואג לעדכן אותה. אפשרות נוספת היא באמת לעבוד עם Updater Application Block (וגם יש פרוייקט ב-codeproject שעושה עבודה נהדרת בלהשלים אותו איפה שמיקרוסופט הפסיקו). אפשרות אחרת היא לא לדאוג מזה שהאפליקציה לא מעודכנת כי היא הרי לא רצה כרגע ואפליקציה שלא רצה לא משנה הרבה.

בעקרון נקודת המוצא של ClickOnce צריכה להיות beforeApplicationStartup, ורק במצבים מיוחדים לעבור למצב שבו התוכנה בודקת אם היא עדיין תקפה בכל אינטרוול באמצעות expiration. יצא לי להשתמש ב-expiration רק באפליקציות שמטעם תפקידן אמורות לפעול על מחשבים שאינם עוברים אתחול קבוע, או על אפליקציות שהן "מערכת ההפעלה" (הממשק גישה הראשי למחשב עצמו), אבל בגדול לאפליקציות של "נריץ שנריץ" מומלץ המצב של beforeApplicationStartup.

 

Question from .Net Tapuz Forum: Using the ASP.Net Menu WebControl with XmlDataSource

שאלה: פקד ה-Menu החדש של ASP.Net 2.0 מאפשר להציג תפריט של אתר. ניתן לקשר את הפקד לקבצי XML באמצעות XmlDataSource. האם יש הגבלות על המבנה של קבצי ה-XML?

תשובה:

אין הגבלות על איך קבצי ה-XML שמקושרים לפקד Menu נראים.


הקביעה איזה XmlNodes משתמשים למה מתבצעת ע"י קביעת של MenuDataBindings שבה מפרטים איזה XmlNode משומש למה (טקסט תצוגה, כתובת לקישור, מיקום הקישור (Target), מיקום לתמונה, Tooltip ועוד כמה). הרעיון הוא שהפקד עצמו מאוד גמיש ורק צריך לקנפג אותו למבנה שאתה רוצה שהוא יעבוד איתו. כברירת מחדל הוא יודע לעבוד עם קבצי siteMap, אבל אפשר גם בקלות מאוד להגדיר אותו לעבוד עם מבנה אחר.


בנוסף, ה-XmlDataSource עצמו מקבל ביטוי XPath שבעזרתו אתה יכול לכוון את נקודת המוצא שבו מתחיל המסמך XML הרלוונטי לך (מתוך הקובץ XML הגדול יותר) ואילו שדות להחזיר. ככה שתוכל ליצור פקד Menu עם MenuBindings מסויימים, ולפי המידע שנמסר לו מה-XmlDataSource הוא יציג רק את הנתונים שהוא מקבל.

<asp:menu id="NavigationMenu"
        staticdisplaylevels="1"
        staticsubmenuindent="10"
        orientation="Vertical"
        target="_blank"
        datasourceid="MenuSource"
        runat="server">
        <DataBindings>
          <asp:menuitembinding datamember="MapHomeNode"
            depth="0"
            ImageUrlField = "myImageUrlXmlNode"
            NavigateUrlField ="myLinkUrlXmlNode"
            TextField= "myDisplayTextXmlNode"
            ToolTipField = "myTooltipXmlNode"
            ValueField = "myValueXmlNode" />

          <asp:menuitembinding datamember="MapNode"
            depth="1"
            textfield="title"
            navigateurlfield="url"/>
          <asp:menuitembinding datamember="MapNode"
            depth="2"
            textfield="title"
            navigateurlfield="url"/>
        </DataBindings>
      </asp:menu>

Know .Net? The SHABAK might want you!

 

The Israeli SHABAK is massively seeking out new software developers.

For those of you who aren't from israel - The phrase "Shabak" stands for "General Security Service" which is the Israeli equivalent of the American CIA.

The Shabak is always looking to hire software developers as you can always submit your CV via their website.

I'd like to mention the PROs & CONs of these jobs. So let's look at one of the jobs they offer:

This is what they want for a (non-senior) .Net developer:

- 3 Years of proven experience in web development

- 2 Years of proven experience in .Net

- Nice to have: Oracle, J2EE, CICS, MF, and Adabas

 

Pros:

-  All the hype aside - you go to bed knowing you've done a service to your country.

- The salary is OK. A (non senior) .Net developer averages about 15,000 NIS salary in the Shabak. Which is OK for a (non-senior) .Net developer?

- All the benefits of working for the government and not in the private sector. There's a very strong Trade union ("ועד עובדים" in Hebrew) and that's VERY good as you get all sorts of benefits and your working rights are preserved.

 

Cons:

- With 2 years of .Net experience you can easily find a job as a SENIOR .Net developer in Israel. This means more pay and more responsibility.

If you can get paid more - why take a job that pays substantially less?

-  I'm just going to mention that the Shabak wants 7 years of web development experience for senior .Net developers. That's like saying I want a pilot with 60 years of flight veterancy. It's possible, but how many people really fit this? And that's 5-4 years more then what anyone else wants for a senior .Net developer.

- The hours. As a Shabak employee you'll sign away your holidays, weekends, 29th of February every four years and every other waking day you have.

Imagine if your boss could say "We have to get a version out! This is a matter of national security! People die every moment you don't code!"

- This isn't the first "one of a kind, never to be repeated" technological mass recruiting the Shabak has done (as they claim). The last one was about 14-16 months ago and that was for the same jobs.

Let's look at this: Software projects hired dozens of software developers, same software projects are hiring the same amount of developers again. Can you guess where all those dozens of software developers are now?  My take is that they all left.

 

Sum-up:

Pro: good happy feeling about serving your country, strong trade union & good pay comparing to that type of job

Cons: Low pay in comparison to years of experience, No time off & proven track record of high burn-out rate.

 

Still think it's for you? Go to their website and send them your CV.