DCSIMG
May 2008 - Posts - Maxim

May 2008 - Posts

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


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

Dot-Net Frameworks: 1.0 - 3.0

כל החבילות הנן בעלות מבנה שכבתי-לוגי הבא:

clip_image002

שלש שכבות תחתונות (שכבות הבסיס):

- Common Language Runtime - CLR: רכיב של מכונה וירטואלית של דוט-נט. נמצא מעל Common Language Infrastructure - CLI, זוהי שפת ביניים של מכונה וירטואלית, שפה זו מתארת קוד שמתבצע במכונה, שימוש בשפת ביניים מאפשר תכנות במספר שפות-על שונות באותה הסביבה. CLR מריץ סוג של byte-code שנקרא Microsoft Intermediate Language) MSIL) ,רמה הכי נמוכה של שפת פיתוח שניתן לקריאה, כמו שפת אסמבלר עם מאפיינים של שפת העל.

- .NET Framework Class Library: אוסף ענק של יותר מ- 2500 מחלקות קוד שימושיות, ממשקים וטיפוסי מידע. מחלקות מסודרות בספריות עפ"י היררכיה וסווג, כל ספריה מכילה מספר Namespaces שמסווגים עפ"י יעודם פונקציונאלי. אוסף זה הנו חלק מפלטפורמת פיתוח והנו נגיש למפתחים דרך קבצי DLL שמותקנים במערכת הפעלה ומשותפים לכלי פיתוח שתומכים במודל דוט-נט.

- Common Language Specification - CLS: אוסף כללים בסיסיים שכל שפת תכנות צריכה להצמד על מנת לעבוד מול CLI ולהוות חלק מדוט-נט.

- C#, Visual Basic .Net ואחרים: אלה שפות תכנות (שפות העל) שפותחו ע"י מיקרוסופט או אחרים והם תומכים ב-CLS, כך יכולים להיות משולבים בדוט-נט, ז"א ניתן לכתוב קוד תוכנה באחת השפות הללו ולהריץ אותו בסביבת דוט-נט.

- Visual Studio .Net: סביבת פיתוח של דוט-נט (מיקרוסופט) בעלת סט כלים לפיתוח תוכנות בדוט-נט. כברירת מחדל, סביבה תומכת בפיתוח בארבע שפות תכנות: C++, C#, VB, ו- #J; בנוסף ניתן להתקין תמיכה לשפות נוספות שתומכות ב-CLS.


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

 

MS Expression Studio


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

כלים של MS Expression Studio:

image

בהמשך ייעשה שימוש במושג WYSIWYG:
(What You See Is What You Got - מה שאתה רואה זה מה שאתה מקבל)

 

Expression Web

שם לא רשמי: "Quartz".

עורך מסוג WYSIWYG לדפי Web. ממשיכה של Microsoft Front-Page, מצוייד באופציות חדשות ומספק סביבה נוחה לפיתוח אתרי אינטרנט ו/או דפים/רכיבים של אתר.

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

מספק תמיכה רחבה לרוב טכנולוגיות פיתוח הנפוצות: XML, CSS 2.1, ASP.NET 2.0, XHTML, Java Script ועוד רבים. להפעלת העורך נחוצה התקנה של סביבת פיתוח של דוט-נט גרסה 2.0. עורך זה משתלב עם MS Share-Point Designer.

עורך זה עושה שימוש במנוע רינדור משלו בשונה מעורכים אחרים אשר מבוססים על מנוע רינדור של Internet Explorer - Trident. לטענת מיקרוסופט, מנוע זה מרנדר בצורה הכי תקנית לעומת יתר מנועי רינדור לדפי האינטרנט (המנוע מתמחה במיוחד ב- CSS).

תצלום מסך:

clip_image009

 

Expression Blend


שם לא רשמי: "Sparkle".

עורך מסוג WYSIWYG, נועד לעיצוב ממשקי משתמש עבור סביבת עבודה חלונאית ואינטרנטית.

עורך זה תומך במנוע רינדור של WPF עם תמיכה נרחבת בטיפוגראפיה של Open-Type ו- Clear-Type; רכיבי ממשק משתמש (דו-ממדיים ותלת-ממדיים) עם האצה גראפית של חומרה דרך DirectX. ממשק העורך נבנה מאפס ב- WPF.
עורך גראפי נוח ואינטואיטיבי, ניתן לשימוש ע"י מפתחי תוכנה (מתכנתים) וע"י מעצבים גראפיים.

תצלום מסך:
blend_panels

העורך מורכב משלשה אזורי עבודה עיקריים:

- משטח עבודה (אזור מרכזי שבו בונים ומעצבים ממשק גראפי)

- פאנל הגדרות (עם תתי פאנלים בהם מוצגים פרמטרים שונים של אובייקטים/פקדים)

- סרגל כלים (עם כפתורים עבור כל סוג של כלי עריכה)

- פאנל אירועים (פאנל בו ניתן להגדיר אירועים שונים לכל אובייקט)

- פאנל אובייקטים וסרגל זמן (מכיל תת-פאנל בו מנהלים אובייקטים עפ"י שכבות ותת-פאנל שבו ממוקם סרגל זמן עבור האנימציות)

 

Expression Design


שם לא רשמי: "Acrylic".

עורך מסוג WYSIWYG, נועד לעיצוב איורים גראפיים וקטוריים וראסטריים. גם עורך זה נבנה ב- WPF.

עורך זה מספק משטח עבודה נוח לעיצוב רכיבים גראפיים לממשק משתמש, רכיבים אלה ניתן לייצא לתוכנות כמו MS Expression Blend, MS Expression Web ו- MS Visual Studio 2005/2008. ייצוא הרכיבים הנו בפורמט קובץ XAML שעליו יפורט בהמשך.

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

תצלום מסך:
design_panels

העורך מורכב משלשה אזורי עבודה עיקריים:

- משטח עבודה (אזור מרכזי שבו בונים ומעצבים אובייקטים גראפיים)

- פאנל הגדרות (עם תתי פאנלים בהם מוצגים פרמטרים שונים של אובייקטים גראפיים)

- סרגל כלים (עם כפתורים עבור כל סוג של כלי עריכה)

 

Expression Media


כלי לניהול אוספים של מדיות במחשב אישי (ניתן להתקנה במערכות הפעלה MS Windows ו- Mac OS). מאפשר איסוף וקיטלוג אוטומטי של קבצי מדיה במחשב האישי. מספק ממשק נוח עם יכולות של "גרור ושחרר" ותומך ביותר ממאה פורמטים של קבצים. מנהל מדיה מאפשר ליצור קטלוג אינטרנטי של אוספים, עריכה של מספר גדול של פורמטים (ישנה אפשרות לבצע פעולות Batch אוטומטיות על מספר גדול של קבצים בו-זמנית). מצוייד במנוע חיפוש מתקדם, עורך תמונות חזק ומנהל גרסאות עבור קבצים. אפשרות נוספת היא בניה של מצגות על סמך הקבצים הקיימים, מצגות אלה ניתן להמיר לכל פורמט וידאו שנתמך במנהל מדיה.
 

< XAML >


(ראשי תיבות של Extensible Application Markup Language) - מבטאים "zammel", הוא תקן לייצוג נתונים בסביבת WPF. שימוש ב־XAML מקל על החלפת נתונים בין מערכות שונות שפועלות על גבי תשתיות של WPF. תקן ה-XAML לא מגדיר איזה מידע יוצג אלא מגדיר כיצד לייצג מידע באופן כללי. תקן XAML שייך למשפחת שפת התגיות (markup language), ומבוסס על תקן משנת 1986 בשם SGML.

כפי שציינתי מקודם, XAML משמש בעיקר עבור טכנולוגיות של דוט-נט 3.0, במיוחד ב- WPF, משמש כשפת תווך בין יישומי פיתוח ומגדיר מראה ופונקציונאליות של רכיבי UI.

אלמנטים של XAML יכולים להיות ממופים באופן אוטומטי ל- CLR - Common Language Runtime עבור מופעים של אובייקטים שאותם הוא יכול להגדיר בזמן הפיתוח ובזמן הריצה, זה מקל על כלי עריכה שמציגים שינויים במאפייני הפקדים באופן מיידי. בשימוש תקני, קבצי XAML יכולים להיות מיוצרים ע"י עורכים של UI וע"י סביבות פיתוח כמו MS Visual Studio 2005/2008. בחבילה של WPF מסופק עורך XAML בסיסי אשר מאפשר כתיבה של XAML והצגה של תוצאות הקוד במקביל.

על מנת להכניס קובץ XAML אל קובץ DLL של דוט-נט יש להדרו לפורמט בינארי בקבצים מסוג "baml". בזמן ריצה, מכונה וירטואלית של דוט-נט "פורשת" קבצי "baml" מתוך DLL, מפרשת ומציירת פלט בצורת רכיבים גראפיים מעוצבים.

כאשר XAML נמצא בשימוש ב- WPF, הוא משמש לתיאור ממשק גראפי עשיר שדומה ל- Adobe Flash, XUL, Glade-XML ו-UIML - אלה דוגמאות של טכנולוגיות המשתמשות בפורמט של XML לתיאור רכיבים הגראפיים. רכיב חבילת WPF מאפשר הגדרה הצהרתית בתוך קבצי XAML עבור אובייקטים של 2D ו- 3D ובנוסף אנימציות, סיבובים ועוד מגוון אפקטים.

ברכיב דוט-נט 3.0 נוסף נעשה שימוש ב-XAML: WF - Windows Workflow Foundation, XAML משמש לתיאור לוגיקה בתרשימי זרימה, כמו תיאור של תהליכי ארוכים או כללים במערכות שונות.

כל מה שנוצר ב-XAML יכול להיות מיושם ומיוצר בשפות יותר מסורתיות כמו C# או VB.Net ואחרות. בכל מקרה, באספקט טכנולוגי ועקב המורכבות של תהליכי פיתוח עדיף להשתמש ב-XAML, מכוון שזהו למעשה XML פשוט.


דוגמא לקוד שכתוב ב-XAML:

<Page xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
x:Class="MyNamespace.MyPageCode">
             <Button Click="ClickHandler">Click Me!</Button>
</Page>

אותו קוד ב- #C:

namespace MyNamespace
{
      public partial class MyPageCode
      {
            private void ClickHandler(object sender, RoutedEventArgs e)
            {
                Button b = e.Source as Button;
                b.Background = Brushes.Red;
            }
      }
}

xaml_example

 

לסיכום, XAML:

• שפה נוחה – ככלי פיתוח, תכנות הצהרתי כמו ב-XML

• קוד תוכנה ותוכן מופרדים (מודל השכבות של WPF)

• יכול להיות כחלק של יישום שולחני עצמאי או כאפליקצית Web

 


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

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

לחברה דינאמית וצעירה דרוש/ה מתכנת/ת לעבודה בחצי משרה

 

דרישות:

שליטה בסביבת פיתוח Net. ו- MS Visual Studio 2005

שפות תכנות VB ו- #C

 

הערות:

הכרות עם Win-Forms ושרתי SQL - יתרון

יכולת למידה עצמאית - יתרון

העבודה מתאימה גם לסטודנטים

 

קו"ח לדוא"ל: info@segevsystems.tv 


 
על החברה ניתו לקרוא באתר: http://www.SegevSystems.tv.

בהצלחה!

 

In this post I wrote about some cool project from NUI-Group.

See this cool video with implementation-example of their library:

They do great things, I think that WPF may be proper for this UI too...

 

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


ה-"דינוזאורים" של כלי פיתוח

edmontonia dinosaur שפות תכנות ראשונות (ברמה של שפת-על) פותחו בשנות השישים של המאה העשרים, יחד איתן פותחו גם המהדרים (קומפיילרים) הראשונים.

מתוך ויקיפדיה:

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

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

תהליך בניית תוכנת מחשב מתחלק לשני שלבים עיקריים - הידור וקישור. המהדר, כשמו כן הוא, אחראי על תהליך ההידור. בתהליך ההידור ממיר המהדר את הקוד שכתב המתכנת, לשפת מכונה, כך שעבור כל קובץ שעבר הידור נוצר קובץ מקביל בשפת מכונה. קובץ זה מסומן בדרך כלל כקובץ OBJ (או O במהדרים אחרים). בתהליך הקישור מקושרים ביחד קבצים אלה לתוצר סופי- תוכנה שניתנת לביצוע במעבד ובמערכת הפעלה מסוימת.

מהדרים של שפות תכנות מסוימות מפיקים קוד למעבד וירטואלי שאינו מיושם באופן ישיר בחומרה. דוגמה לשפות כאלה - ‏Java‏, C#‎ ו-Smalltalk. היתרון בשיטה זו הוא היכולת להריץ את אותו קובץ מהודר במעבדים מסוגים שונים.

רקע

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

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

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

old compilers

המהדרים הם כלי עבודה שלנו, וכמו כל חלק יחסית גדול של כלי עבודה הם מתיישנים. כפי שנעלמות שפות תכנות (כמו Fortran, Cobol, Lisp ואחרות), נעלמים המהדרים. לשפות תכנות הקיימות יש קומפיילרים שונים. שונים במקור הייצור, מערכת הפעלה, סביבת העבודה ושנת הייצור. יחד עם ההתפתחות של שפות התכנות ויתר החידושים הטכנולוגיים הכלים שלנו התפתחו, כלים ישנים יוצאים מכלל השימוש וכלים חדשים תופסים את מקומם.

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

הרבה פעמים אורך החיים של שפת תכנות או העדפה להשתמש בה נקבע מנגישות ונוחות של כלי פיתוח. כמה ששפת תכנות לא תהיה נוחה ונהדרת, אם יצרן השפה לא פיתח מהדר שעומד ברמה של מהדרים בתחומו, רוב הסיכויים שלא ישתמשו בשפה זו. כנ"ל גם בטכנולוגיות וחבילות פיתוח. מניסיון אישי: כאשר למדתי Java וניסיתי לפתח GUI ב-Swing, בגלל שלא היו בזמנו כלים נוחים לפיתוח ממשק קיבלתי רושם שחבילה זו לא מתאימה לי וחבל לבזבז עליה את הזמן היקר שלי; באותו הזמן היה לי עם מה להשוות, MS Visual Studio סיפק לי סביבת פיתוח נוחה יותר, לכן עברתי לדוט-נט. עיקרון זה עובד גם במקרים אחרים, והוא קשור לתחום של עיצוב המוצר (ראו פוסטים קודמים הקשורים לכך).


המצב היום

יש לי חבר (מבוגר ממני בעשר ומשהו שנים). במקצועו מהנדס חשמל ואלקטרוניקה, מתפרנס מכתיבת דרייברים לחומרה עבור מספר חברות גדולות באסיה. דרייברים נכתבים בד"כ בשפת אסמבלר שהיא די רחוקה מלהיות שפת העל כמו Java או #C, מקסימום אפשר לכתוב את הקוד בשפת C או סקריפט כמו של Python שונים (אני לא מומחה גדול לעניין, לכן על תצעקו עליי לגבי אי דיוקים). גם מהדרים שבהם כותבים את התוכנה ניתן לשייך ל-"דינוזאורים" של כלי פיתוח. מדי פעם הוא נוהג לומר שאנחנו (הכוונה אלי ולכל המפתחים הצעירים) "מתכנתי צעצוע", אנחנו עסוקים בהרכבת Lego, לפי דבריו, כל מה שאנו עושים זה התאמה של רכיבי תוכנה מוכנים (כמו חלקים של Lego); עוד הוא טוען שעוד מאט כל ילד שיודע ללחוץ על כפתורי המקלדת או לפחות להשתמש בעכבר יוכל לבנות תוכנות. מצד אחד הוא צוחק, מצד שני הוא צודק ומצד שלישי למי איכפת   - כל עוד הילד מקבל כסף על הרכבה די מוצלחת של צעצוע Lego.  ;-)

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

tools bag

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

Some of the software companies that produce compilers: Borland, Microsoft, Sun, IBM, Jet Brains, Adobe (Macromedia), Autodesk, Oracle.

כל כלי פיתוח נועד למטרות מסוימות או למגוון מסויים של מטרות. כחלק של כלי פיתוח ניתן לציין פלטפורמות של תוכנה (או מסגרות) שהן בעצם חבילות של מחלקות בעומדות לרשות המפתחים. ניתן להשוות כל חבילה (SDK - Software Development Kit) לארגז כלים שמפתח מקבל כאשר הוא בוחר להשתמש בפלטפורמה כלשהי.


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


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

 

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





האלגוריתם הפשוט להחלקת הגופנים

(Simple algorithm for font smoothing)

 

שיטה: Gamma smoothing

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





אלגוריתם להחלקת הפונטים, עם רמזים

(Font smoothing algorithm with hints)

 

שיטת 2 הצעדים:

  • סריקה בכוון מוגדר מראש
  • שימוש בשלשה זקיפים
  • זקיף שמאלי, אמצעי וימיני
  • סריקה בשני צעדים עד פיקסל מטרה
  • זקיף שמאלי או ימני קובעים כוון הדגשה בצעד השני


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

Always wanted personal multi-touch cool display?
- You don't need to buy any expensive hardware, just this...

Great project from NUI-Group.

So, what do we need to get this work?

1. Software: download ZIP file from here and extract in any folder on your hard disk (see minimum requirements before the installation).
2. Simple box (30cm x 30cm x 30cm).
3. Webcam .
4. Transparent surface (can be glass, fiberglass or disassemble your picture frame).
5. White paper (A4).

6. Build the "device" according to instruction on this video.
7. Connect your webcam to USB and make it working (you're a big guy, so I'll not show how).
8. Run "Config.bat" from extracted folder.

image

This will show you multiple windows...

DOS (black), property window and snap window (gray); click OK in property window:

image

Now it shows multiple video windows, press "enter" on keyboard to enter into "calibration mode":

image

Follow these instructions (in our case: "projector" = "monitor")...

9. Open "Server.bat" file (it will start "Flash-OSC" server):

image

10. Open "Vision.bat" file (press "OK" to close property window):

image
(now, you're almost done...)

11. Go to folder "Client" and open any desired "EXE" file with flash demo:

image

12. Enjoy!

Blah, blah, blah ... Of course I'm not responsible for any damage that you may cause during the installation or assembling of this device/software, but I think that with a little courage you'll manage and will get cool multi-touch display :)

See additional demos here...

If you're a developer and want to build some application with multi-touch device you can use their library. Dot-Net developers can use this forum to get info about to start building cool applications in WPF, others can start from here.

PS (update of 19.05.2008):
As
Seth Sandler asked in his talkback, I'm posting here the link to his page about the project, see this page (thread) with greate examples; as he noted they use a different kind of "touchlib filterchain". Good Job.

The "original" T-1000:

PS: I think that CG is still amazing, that was made in 1990-1991 !

Posted by Maxim | with no comments