DCSIMG
November 2007 - Posts - Dor Rotman`s Blog

November 2007 - Posts

How to make a whole SharePoint webapp read-only
בקרוב אצטרך לעשות מיגרציה של פורטל MOSS בין שרתים, כלומר לעבור משרת ישן לחדש.
היתרון במעבר בין שרתים הוא שהמערכת ממשיכה לרוץ על התשתית הישנה תוך כדי ביצוע המיגרציה, ואין למעשה downtime. בנקודה כלשהי מבצעים את ההחלפה, וכולם עוברים לתשתית החדשה.
עם זאת, החסרון הוא זמן הדלתא: הרי כדי לייצר מחדש את הפורטל על התשתית החדשה, יש צורך לבצע ייצוא וייבוא של המידע בין השרתים - וזה עשוי לקחת שעות.. אז מה יעשו המשתמשים בינתיים? כל מידע שיכניסו לפורטל לאחר הייצוא יאבד בעת המעבר לתשתית החדשה!
 
הפתרון הוא לתזמן את המעבר למועד מתאים, בו השימוש בפורטל מועט יחסית. בלילה, בסופ"ש, ביום בו כולם בטיול, וכו'. באותו זמן ניתן למשתמשים גישת קריאה-בלבד לפורטל:
 
1. היכנסו ל-Central Administration של השרת
2. היכנסו ל"ניהול יישומים"
3. תחת הקטגוריה "אבטחת יישומים", היכנסו אל "מדיניות עבור יישום אינטרנט"
4. לחצו על "הוסף משתמשים"
5. בחרו את יישום האינטרנט הרלוונטי
6. הקלידו בתיבת שמות המשתמשים את המילה everyone, או כל קבוצה אחרת שתרצו למנוע ממנה גישת כתיבה.
7. בחרו ב"מניעת כתיבה"
8. לחצו על סיום
9. היכונו לפניות המשתמשים שפתאום אין להם הרשאות ושלא קראו את מייל ההשבתה שלכם.. :)
 
בהצלחה,
דור רוטמן.
Developer Academy 2 and The Bloggers Dinner
אתמול התקיים כנס ה-Developer Academy 2 של מיקרוסופט ישראל. זו היתה חתיכת הפקה, וניכר שהשקיעו בה אנרגיות רבות.
היום שלי התחיל בעמידה קלה בפקקים בכניסה ל-Airport City, אבל בסופו של דבר הצלחתי להיכנס למתחם באיזור 9:30 ולהיכנס להרצאה על LINQ בדיוק כשהתחילה (ואפילו לתפוס מקום יחסית מקדימה!)
  • ההרצאה של לאון לנגלייבן על LINQ היתה טובה מאוד, והמחישה בצורה תמציתית וברורה את היכולות החדשות. במיוחד מיעוט השקופיות היה טוב, והקידודים החיים היו ברורים וקלים להבנה.
  • ההרצאה של יוסי תאגורי על Silverlight היתה מעניינת וכיפית כצפוי.. רק יוסי מסוגל לחשוב על לדבג באמצעות PC דף PHP שמתארח ע"ג שרת Apache שרץ על iPhone, וגולשים בו באמצעות Safari ב-MacOS !!!! סחטיין על היצירתיות :)
  • בארוחת הצהריים האוכל היה חביב וטעים, אם כי הקציצות באמת היו קצת לא ברורות. ומסתבר שהתור הארוך שהשתרך בכניסה לאוהל האוכל היה בגלל שכולם חיכו (בלי לדעת, אני מניח) לבחורה שמחלקת צלחות עם חומוס. אחר כך פשוט היה פנוי לגמרי.. וכמובן שכל אחד שהגיע אמר לעצמו "חיכיתי עד עכשיו? לפחות אקח קצת חומוס.." :)
  • ההרצאה של יוחאי קרייתי היתה מעניינת מאוד. הצגת הקוד ב-Reflector נתנה הרבה תובנות, ונפלו הרבה אסימונים. בדיוק בארוחת הצהריים תהינו איך בנוי LINQ ואיך זה שהוא נתמך ב-Silverlight, וקיבלנו את התשובה בהרצאה.
    מה שכן - זו היתה הרצאה "כבדה" מבחינה טכנית: קודם כל סחטיין ליוחאי על קידוד קוד מסובך כזה, live מול קהל של מאות אנשים. הבנאדם מימש על קצה המזלג את LINQ באמצעות Generics, וזה היה מאתגר למדי לשמור על הקצב שלו. כאמור, הרצאה שכזו היא קצת כבדה לאחרי ארוחת הצהריים, כשכולם מנומנמים, אבל בסך הכל היתה בין הטובות של אותו היום.
  • את שאר היום העברתי בטעימות מהרצאות ה-ASP.NET וה-AJAX. ההרצאות היו חביבות, אבל השעה היתה כבר קשה מאוד לריכוז.. :) כיוון שאני לא אוהד גדול של משקאות האנרגיה שחולקו למוסרי המשובים (בגלל הרכיבים וגם בגלל הטעם התרופתי-משהו שלהם), עשיתי סיבוב בין הרצאות ופאנלים, וגם עצרתי לכמה דקות בפינת הבלוגרים.
    יש לי רק הערה אחת חשובה לגבי אחת ההרצאות: לדעתי לא צריך להיות מצב בו יש שקופית אחת שמוצגת במשך כ-10 דקות והמרצה פשוט מדבר באוויר על כל סעיף במשך דקות ארוכות. כמעט כל דבר ניתן להדגים באמצעות קוד או לפחות באמצעות תרשימים מינימליסטים כלשהם. זה מייבש את הקהל לגמרי כשאין מה לראות בעיניים, במיוחד בשעה מאוחרת של היום.
לבסוף עמדתי ללכת, כשגיליתי שיש ארוחת בלוגרים!
אז הצטרפתי לחבורה, ונסענו למסעדת עד העצם. (יותר נכון, הם נסעו - אני חקרתי את איזור Airport City מכל כיוון אפשרי עד שבסוף אמרו לי בטלפון איך מגיעים למסעדה.) היה כיף גדול לפגוש אנשים שאני רק מכיר דרך הבלוגים או ששמעתי עליהם מאחרים, והיו לנו שיחות מאוד משעשעות על מתכנתים גרועים, סדרות טלויזיה, בשר, ומה לא...
 
לסיכום, זה היה יום ארוך למדי (9 וחצי עד 5 וחצי), וכלל הרצאות מרוכזות ומגוונות. היה כיף גם לפגוש במהלך הכנס חבר'ה מהצבא, הלימודים, העבודה, ועוד. מעבר לכך, ארוחת הבלוגרים היתה מגניבה וטעימה, ובהחלט כדאי לקיים עוד אחת..
 
thumbs up למארגני הכנס על הפקה מוצלחת, וכן למארגני ארוחת הבלוגרים על יוזמה מגניבה.

ילדים, זהו את היוסי האמיתי, צבעו אותו בצבעים ושלחו למערכת!  bzzzzzzzzzt 
עם יוסי תאגורי ויוסי תאגורי עם ה-Lightsaber של יוחאי


Technorati tags:

דור רוטמן.

Stock Quote Web Parts

(Reposted from www.rotman.be/blog)

Yesterday I was asked to put a web part on an internal MS site, which displays Microsoft’s stock current value and a graph to show its changes.

This appeared to be easy - Yahoo offers these kind of web widgets that can be embedded in a site.

However, the Yahoo widget has a big logo and commercials, and this isn’t suitable for an internal MS site. So I needed to get the data elsewhere.

After some research I found a way to do this, using MS only tools:

 image

So I separated the functionality to two Web Parts:

  • Data View Web Part (created using SharePoint Designer) - to consume the Web Service
  • Content Editor Web Part - to run some javascript to get the chart image

If you’re interested in how I created the Web Parts, keep on reading. Otherwise, skip to the end of the post to download them.


1. The Stock Value Web Part

That’s easy - open up SharePoint Designer, open some SharePoint page you can edit on a test site, and connect to a data source - the MoneyCentral Web Service. You’ll get the data, which you can add to your page using the Data View Web Part.

However, there’s a problem - the Web Service output is a string that contains a lot of XML data as a String and not as a complex XML tag. SharePoint Designer doesn’t know the schema of that XML and can’t isolate just the current value of the stock from it. So I used a couple of functions to isolate the relevant text. (substring-before, substring-after.)

Then just save the page, view it in your browser, export it using the Web Part menu, and import it to wherever you want to place it. (By working on a test site and importing the Web Part, the page desination page will not be unghosted.)

2. The Stock Chart Web Part

This is a bit more tricky: you can take images straight from the MSN website, because the image source is a DLL that generates them on demand. You just need to send the right parameters.

Please notice that by using this trick, we’re actually “stealing” bandwidth and CPU from MSN’s servers. So the minimum I could do is put some nice link to MSN to give them credit..

I created a Javascript function that generates the URL:

formatChartImageSrc(symbol, fromDate, toDate, imgWidth, imgHeight)

Parameters:

  • symbol: a string containing the stock symbol name, like “MSFT”.
  • fromDate: a Date object containing the date from which to display the timeline.
  • toDate: the date in which the timeline will end (usually today)
  • imgWidth, imgHeight: Dimensions of generated image.

Here is a sample use of the function that outputs the URL for a 1-year view of the MSFT stock, until today. Then I get an IMG element with the ID “chart” and set it’s source to the generated URL.

var stockName = “MSFT”;
var toDate = new Date();
var day = 1000*60*60*24
var fromDate = new Date(toDate - day*365);

var srcUrl = formatChartImageSrc(stockName, fromDate, toDate, 300, 300);
var chartObj = document.getElementById(“chart”);
chartObj.src = srcUrl;

I place this code and the <img> tag itself in the Content Editor Web Part, and that’s it. The image will be up to date.

Download & Installation

Here are the links to the files:

Changing the stock symbol
After you save the Web Parts locally, open them in a text editor. Search and replace the word MSFT with the stock symbol you want to display. Do this before uploading the Web Parts to your website.

Importing the files to the site
To install, go to a SharePoint Site, click Site Settings and then Edit This Page. Add a Web Part to a zone, and then click the bottom link in the Add Web Part Dialog to get to the advanced mode. Now you’ll see the gallery on the side of the page. On the top of the gallery, you will see the word Browse. Click it and choose Import instead. Then pick one of the web part files and upload them. Drag and drop, repeat for the second file, and that’s it!

 

Dor Rotman.

SharePoint Designer ‘Send Email’ Workflow Activity HTML Message Body

(Reposted from www.rotman.be/blog/)

Would you like to send email messages with a rich text body from your custom SharePoint Designer workflow? Well, it’s easier than you think…

Appearatnly the out of the box activity sends the message body as HTML, but the editor is not rich, thus misleading us to think we can only insert simple text. However, the solution is to simply paste HTML code into the body. And that’s it! :)

This way you can create messages with cool content, and align the body as RTL (Right To Left) for relevant languages such as Hebrew.

Here’s a screenshot from SharePoint Designer in Hebrew, in which I created an RTL message:

image

Tip: Check the Workflow XOML file that SPD creates before running it for the first time. (Because on the first run it will compile and workflow will become unchangable.) See the HTML string you created and run it through some HTML Decoder, to convert special characters to understandable text. Then you can make sure the HTML is OK.

פייסבוק - דווקא כן - הפוסט המלא

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

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

שירותי אינטרנט רבים הם מגניבים, אבל לדעתי אין להם זכות קיום עצמאית:

  • twitter וחבריו הם כלי מיקרו-בלוגינג מעולים, אבל קהל היעד שלהם מצומצם, ואנשים צריכים להבין ב-RSS ובכלל להתחבר לקונספט הזה בצורה מאוד חזקה.
  • ilcu, זוכרים? האתר שמרכז פעילויות ואפשר לשלוח בו זימונים לאנשים? אז גם הוא לא ממש עומד בפני עצמו, כי אין בו שום דבר אחר לעשות.
  • LinkedIn, מקושרים וכו’ - אז הוספתי את כל החברים שלי והמכרים שלי, ועכשיו כולנו מקושרים אחד לשני. מה עכשיו? מה עושים? מחכים שמישהו ישלח קורות חיים או הצעת עבודה? או אולי הודעת שרשרת?

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

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

אגב Compare People, מתישהו כתבתי כאן על Rimzu, שהוא אתר סוציומטרי שכזה. הרי ברור שכשירות בפני עצמו קשה מאוד להביא אליו אנשים, ואני לא מדבר מנקודת מבט של המפתחים - אני מדבר מנקודת מבט של משתמש שרוצה שחברים שלו יתחברו. והרי כולם עצלנים - “מה, עוד פעם להירשם לאתר?” -בפייסבוק יש Single Sign On, וזה עוד מרכיב חשוב. הרבה יותר קל להוסיף אפליקציות ולחדש את דרכי התקשורת בין אנשים כשלא צריך להירשם לכל שירות בנפרד.

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

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

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

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

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

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

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

אשמח לשמוע תגובות.

דור.

—-

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

שיהיה בהצלחה. :)

פייסבוק - דווקא כן
רבים וטובים כבר כתבו הרבה פוסטים ומאמרים על פייסבוק. הייתי אומר שהחלוקה היא בין התומכים הנלהבים, המתנגדים העקרוניים, ואלה שסתם נהנים מעוד רשת חברתית. ועכשיו הגיע תורי לספר מה אני חושב על הרשת הזו..   אז כמו שניתן להבין בוודאי מהכותרת - דעתי היא חיובית למדי. אני חושב שזו הרשת החברתית הטובה ביותר שהייתי חבר [...]
Bear With Me (דוב איתי)
אז קצת לא כתבתי לאחרונה. יש לי הרבה מה להגיד בנושא פייסבוק, בכמה רמות. ויש לי עוד כמה דברים נחמדים לפרסם. אז בקרוב אולי יהיה לי זמן לנסח הכל לפוסט.. חוצמזה פתחתי גם בלוג ב-blogs.microsoft.co.il, אבל עוד לא החלטתי מה אעשה איתו.   בינתיים רציתי לספר לכם משהו מאוד חשוב - אני ע-ERROR ——-שלום, זהו וירוס וורדפרס הראשון.הסיבה להדבקה נובעת מביקורכם באתר [...]