DCSIMG
I Love C#
Sign in | Join | Help

I Love C#

Eyal Vardi

AngularJS A to Z Course

פורסם בתאריך May 23 2013, 12:16 AM על ידי Vardi

AngularJS-large

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

אני מזמין אותו לקורס של יום אחד על AngularJS. הקורס מיועד לאנשים בעלי רקע בתכנות ב-JavaScript ו-HTML.

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

פרטים נוספים לחצו כאן.

למצגות הקורס לחצו כאן.

Israel JavaScript Conference (Js-il.com)

פורסם בתאריך Mar 25 2013, 02:28 AM על ידי Vardi

fbcsJoin the largest JavaScript Conference in Israel Things have changed. Today JS is the language of the web. On the client, on the server, on the mobile, everywhere. But let's face it: JS still has challenges.

JavaScirpt Fundamentals Sessions:

09:00 - 10:30 - Offline And HTML5 Storage

10:45 - 12:15 - Advanced JavaScript

13:15 - 14:45 - Cross browser apps with jQuery Mobile

15:00 - 16:30 - jQuery for Professionals

JavaScirpt Libraries Sessions:

09:00 - 10:30 - Rich data for JavaScript Apps is a Breeze

10:45 - 12:15 - Building Modular JavaScript Application with AMD/Require.JS

13:15 - 14:45 - Advanced JavaScript Unit Testing integrated with Visual Studio 

15:00 - 16:30 - Routing in JavaScript Applications

JavaScirpt Single Page Web Applications (SPA) Sessions:

09:00 - 10:30 - Durandal Framework

10:45 - 12:15 - Single Page Apps (SPA) with M-V-VM and Knockout.JS

13:15 - 14:45 - Important Considerations When Building Single Page Web Apps

15:00 - 16:30 - Angularjs Framework

JavaScirpt Charts & Controls Sessions:

09:00 - 10:30 - Modern web analytics presentations with D3.JS

10:45 - 12:15 - Sencha Architect and ExtJS with RTL Support

13:15 - 14:45 - JavaScript UI Components

15:00 - 16:30 - Responsive Design and CSS3: The future of web development

Server Side Sessions:

09:00 - 10:30 -  Mobile App Development with PhoneGap

10:45 - 12:15 - Building Server Side Logic with Node.JS

13:15 - 14:45 - The full power of ASP.NET Web API

15:00 - 16:30 - Developing "Real-Time" Web Applications with SignalR

Israel JavaScript Conference

פורסם בתאריך Mar 12 2013, 01:36 AM על ידי Vardi

banner_144x420

לראשונה בישראל , כנס פיתוח ייעודי העוסק כולו בארכיטקטורה

ופיתוח
Web Applications.  להלן רשימת ההרצאות עד כה. אשמח

לשמוע את דעתכם על הנושאים הקיימים ומה חסר.

 

 

 

 

 

 

Offline And HTML5 Storage

Building an offline HTML 5 based application? Want to get rid of those untasteful cookies? HTML5 brings the client storage into a all new different level. support for files and database on the client side to allow working in an offline mode and saving user data in a better and clearer way.

Advanced JavaScript

JavaScript is simple for doing simple tasks' but if you really want to take control on your JavaScript code we should look into the internal of the beast. understanding how Object Oriented is achieved in the non Object oriented environment. What is Prototype and how we can use it' and what is the best way to work , generate and maintain object in JavaScript.

Building Server Side Logic with Node.JS

Node.JS is becoming a major force in building server-side logic. With its eco-system of add-ons and extensions it allows building anything from web servers to back-end data providers, REST servers and more. This lecture will focus on the basics – how to use Node.JS, and some of the major extensions to node, Express, Jade, and Socket.IO. It will allow participates to start their development endeavors with Node.

Modern web analytics presentations with D3.JS

Data analytics, and data presentation is a growing trend in business applications. D3, a JavaScript library written by Mike Bostock, allows us to manipulate elements of a web page in the context of a data set. These elements can be HTML, SVG, or Canvas elements, and can be introduced, removed, or edited according to the contents of the data set. The lecture will focus on the main parts of using D3 – the Enter selection, graph elements, Interactions and transitions, and graph layout. It will provide the basis to perform complex drawing functionality to enhance any modern web page.

Client side analytics using CrossFilter and DC.js

Crossfilter is a JavaScript library for exploring large multivariate datasets in the browser. Crossfilter supports extremely fast (<30ms) interaction with coordinated views, even with datasets containing a million or more records. Since most interactions only involve a single dimension, and then only small adjustments are made to the filter values, incremental filtering and reducing is significantly faster than starting from scratch. Crossfilter uses sorted indexes (and a few bit-twiddling hacks) to make this possible, dramatically increasing the performance of live histograms and top-K lists. This lecture will cover the use of CrossFilter to build analytics, and the use of DC.js as a display technology for fast Analytical displays.

Advanced JavaScript Unit Testing integrated with Visual Studio Environment

Unit Testing is an inseparable part of the development process, no matter which methodology you follow, be it TDD, or BDD, you know for sure that this investment is worthwhile, enabling early bug fixes, safe refactoring, and better design. You want to test your JavaScript code but don’t know where to start? Which tools to pick? And how to integrate it all with Visual Studio? In this session we will take a look at the tools, how to combine them to play nicely together in Visual Studio, and making Testing a breeze.

Building Modular JavaScript Application with AMD/Require.JS

The rule of thumb when things get complex is usually to break it down to smaller, more manageable, and loosely coupled units. Yet JavaScript (or say ECMA Script) in its current form, doesn’t provide any so-called concept of Module or Package or any kind of logical unit of deployment. This is where AMD (Asynchronous Module Definition), and Require.JS comes into play. In this session we will see how to take advantage of the concepts behind AMD, and how to utilize Require.JS API to come up with maintainable and testable units of code.

Developing "Real-Time" Web Applications with SignalR

SignalR is a new async signaling library for .NET developed and maintained by David Fowler and Damian Edwars from Microsoft’s ASP.NET and NuGet teams. If you ever wanted to push data from the server to clients (and not just browser clients!) in real time with ease, SignalR will be your perfect companion.

jQuery for Professionals

jQuery is the most widely used JavaScript library in the world. It's a fast and powerful DOM manipulation and animation library. The best part? It's easy to use and implement. The problem is it's also easy to use inefficiently. In this course you will learn master techniques and best practices for using jQuery in your next web project.

Responsive Design and CSS3: The future of web development

Creating webpages using a responsive design is becoming the defacto standard for today's desktop and mobile websites. These are Must-Have skills for your professional development. In this course learn the important topics and techniques required to implement a responsive design. Additionally you will learn where a responsive design can cause problems and how to avoid them. Don't miss this presentation!

Sencha Architect and ExtJS with RTL Support

Sencha's ExtJS 4.2 now supports RTL! This enterprise ready, JavaScript framework is a one-stop-shop for all of the components and functionality usually found only with multiple libraries put together. If you're building an enterprise application that requires a desktop and mobile interface, complete component list (grid, charts, form layout, etc) that is built on an MVC architecture you won't want to miss this presentation.

Durandal Framework

Durandal is small JavaScript framework designed to make building Single Page Applications (SPAs) simple and elegant. Durandal is built on libs you know and love like jQuery, Knockout and RequireJS. Durandal has strong support for MVC, MVP and MVVM. No matter what front end architecture paradigm you prefer, Durandal is there to back you up. With RequireJS as our base and a thin layer of conventions, we can provide amazing productivity while helping you to maintain SOLID coding practices.

Important Considerations When Building Single Page Web Apps

Single page web applications – or SPAs, as they are commonly referred to – are quickly becoming the de facto standard for web app development. The fact that a major part of the app runs inside a single web page makes it very interesting and appealing, and the accelerated growth of browser capabilities pushes us closer to the day, when all apps run entirely in the browser.

Single Page Apps (SPA) with M-V-VM and Knockout.JS

Knockout is a JavaScript library that helps you to create rich, responsive display and editor user interfaces with a clean underlying data model. Any time you have sections of UI that update dynamically (e.g., changing depending on the user’s actions or when an external data source changes), KO can help you implement it more simply and maintainably.

Routing in JavaScript Applications

In the modern age of super-fast browsers and user expectations about the responsiveness and perceived speed of web applications – single page applications have become the rage (Gmail, etc.) Furthermore, instead of just fetching full HTML and rendering it asynchronously, fetching raw data (JSON) and rendering on the client side has not only become possible – it’s actually very common. In our lesson we'll discuss the challenges we face in building SPA navigation. We'll see the commonly used solutions and will talk about libraries that offer those solutions. We'll take closer look on Sammy.js library that includes a simple API for defining applications which are made up primarily of routes and events.

Cross browser apps with jQuery Mobile

Since HTML5 was introduced, more and more companies choose to switch their sites to this technology. Moreover, HTML5 allowing to create hybrid applications for mobile. jQuery mobile is lightweight framework that makes creating of sites and apps very simple and quick. In our lesson we will learn about the framework key features, talk about the pros and cons and will integrate it with another famous library Knockout.js.

Rich data for JavaScript Apps is a Breeze

Breeze is a JavaScript library that helps you manage data in rich client applications. If you store data in a relational database, query and save those data as complex object graphs, and share these graphs across multiple screens of your JavaScript client, Breeze is for you.

Angularjs

HTML is great for declaring static documents, but it falters when we try to use it for declaring dynamic views in web-applications. AngularJS lets you extend HTML vocabulary for your application. The resulting environment is extraordinarily expressive, readable, and quick to develop.

JavaScript UI Components

As the HTML5 and JavaScript applications continues to gain incredible momentum and also the need for cross-platform development brought many companies like "Kendo UI" to realize that if they plan to stay in the game they need to reinvent them self's and offer developers a rich HTML, JavaScript framework to enhance their web development experience . In our lesson we'll discuss about why when and how we plan to use awesome UI Components like Charts, Trees, Graphs, Lists and etc. To increase our development productivity in a fast and easy way.

חברת E4D הטמיעה מערכת CRM Dynamics ברשת בתי הספר יואל

פורסם בתאריך Dec 29 2012, 08:39 AM על ידי Vardi

רשת בתי הספר יואל גבעחברת E4D השלימה לאחרונה הטמעת מערכת תפעול ממוחשבת מבוססת CRM Dynamics של מיקרוסופט לניהול מערך השירות והמכירות של רשת בתי הספר "יואל גבע" לבגרויות ובחינות פסיכומטריות: היקף הפרויקט מוערך בכחצי מיליון שקלים.

חברת E4D השלימה לאחרונה הטמעת מערכת תפעול חדשנית וממוחשבת מבוססת על מוצר CRM 2011 Dynamics שלמיקרוסופט לניהול מערך השירות והמכירות של רשת בתי הספר "יואל גבע" לבגרויות ובחינות פסיכומטריות. היקף הפרויקט מוערך בכ- 500 אלף שקלים.
המערכת מנהלת את מערך השירות, הרישום והמכירות של רשת בתי הספר. היא מאפשרת לנציג הטלמרקטינג לבצע סימולציה של מחירים על פי כמות הקורסים שהלקוח הפוטנציאלי מעוניין; מתן הנחות על פי פרמטרים; בדיקת זמינות כיתות ומרצים ועוד. במסגרת הפרויקט בוצעה הסבת נתונים מגרסה קודמת ופותחו ממשקים למערכת SAP ולמערכת סליקה. כמו כן פותח סימולאטור ייחודי לחישוב מחירים והנחות עבור מוצרים מורכבים. התוצאה, מערכת חדשנית ,מהירה ויעילה, שתשפר את עבודת רשת בתי הספר ותאפשר בקרה ניהולית טובה יותר למנהלי החברה.
מנכ"ל חברת E4D, שרון עזרא: "המערכת החדשנית מתאימה למכללות ולארגונים שונים. המערכת חוסכת כוח אדם, יעילה ומעניקה פיתרון מובנה ושלם לצרכי מערך שירות הלקוחות של הארגונים. חרטנו על דגלנו לסייע לארגונים בפיתוח יישומים ומוצרים בסביבת מיקרוסופט".
מביה"ס יואל גבע נמסר: "המערכת שהוטמעה ע"י E4D מאפשרת לנו להעניק שירות מקצועי ומהיר יותר לתלמידינו. בנוסף, הטמעת המערכת מהווה חלק ממהלך כולל של התפתחות טכנולוגית מואצת בארגון ובחודשים הקרובים נשיק מערכות ממוחשבות מתקדמות נוספות".

לינק לכתבה.

העלתי את החומרים לאוויר

פורסם בתאריך Dec 25 2012, 07:54 PM על ידי Vardi

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

המצגות של הסדנא ASP.NET MVC נמצאות כאן.560743_10151256614228138_14083570_n

המצגות של הסדנא Async & Parallel Programming נמצאות כאן.

היום, יום רביעי אני מעביר את הסדנא Entity Framework  החומרים נמצאים כאן.

ומחר יום חמישי אני מעביר את הסדנא WCF Interals החומרים נמצאים כאן.

בהצלחה לכולנו.

Expert Days 2012

פורסם בתאריך Oct 04 2012, 10:05 AM על ידי Vardi

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

image

 

bn4

תכנות מקבילי או אסינכרוני?

פורסם בתאריך Oct 01 2012, 08:29 PM על ידי Vardi

תכנות מקבילי + אסינכרוני = תוכנה טובה יותר

 

דוט-נט 4.5 הביא איתו את 5.0 #C שהביא לנו את async & await. שיפורים אלו אמורים להקל עלינו את הפיתוח האסינכרוני ולפשט את הקוד. יש הרבה חומר בנושא ,אבל ההרגשה שלי, אחרי הרבה מפגשים עם מפתחים היא, שהחומר לא פשוט ויש הרבה בלבול. בפוסט זה אנסה להסביר את הדברים קצת אחרת ולעזור לעשות סדר.

 

שאלה ראשונה שאנחנו צריכים לשאול את עצמנו היא

 

מה ההבדל בין Parallel Programming ל- Async Programming?

 

·       למה בדוט-נט 4 הדגש היה על Parallel ועל PLINQ ואילו בדוט-נט 4.5 שינו את המונחים ל- Async Programming?

 

תשובה:

 

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

 

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

 

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

 

מה זה תכנות מקבילי?

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

 

 

איך כל זה מתקשר לדוט-נט?

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

בדוט-נט 4-1 ה-API  התמקד בעיקר בתכנות מקבילי, שהמשמעות שלו הייתה ליצור Thread או Task שרץ

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

 

1.     תכנות סינכרוני:

image


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


image


 

2.     תיכנות אסינכרוני:

בתיכנות אסינכרוני אנחנו רוצים לפרק את המתודה BtnSyncClick לתהליכים קטנים כך שפעולות של UI  יוכלו להיכנס באמצע בזמנים המתים של החישוב של הערכים ע"י GetVal.  ע"י הוספת await בכל מקום בקוד שאנחנו מחכים וסימון המתודה ב-async, אנחנו מפרקים את המתודה לתת משימות. במילים פשוטות מילת המפתח await שוברת את המתודה ומפצלת אותה לשנים, לפני ה- await ואחרי, דומה מאוד ל- yield return.

 

image



בדוגמה שלפנינו אנחנו "שוברים" את המתודה ל-3 חלקים, Tasks.

image

אנחנו "שוברים" את הקוד לפני הקריאה למתודה GetValAsync, עד שהמתודה תחזיר ערך, בינתיים אפשר לבצע עוד פעולות, למשל של UI. ואנחנו "שוברים" את הקוד לפני המתודה task() כי גם היא איטית, היא תלויה בסיום שני המתודות GetValAsync.  בהסתכלות על ה- Stack Frame לאורך ציר הזמן ( התמונה להמחשה בלבד, המציאות יותר מורכבת ) אנחנו רואים שכאשר מגיעים למתודות שמסומנות ב- await השליטה חוזרת למתודה שקראה לה. במקרה שלנו יש await בתוך await, task() מחזיר שליטה ל-BtnAsyncClick והוא מחזיר שליטה ל- UI.

image

הסיבה שאנחנו רואים 4 פעמים את
GetValAsync היא כיוון שאנחנו קוראים פעמיים למתודה ו-await מפרק אותה לשנים. חשוב לציין שאין כאן מקבילות כי הכול רץ על UI Thread
, פרקנו את התהליך ואנחנו מריצים אותו אסינכרוני.

 

אז למה צריך את await לפני task()?

 

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

נקודה נוספת, task() מוגדר כמתודה אסינכרונית , הוא מחזיר Task<string>. אנחנו רוצים את ה-Result של ה- task(), כלומר את ה- string ולא את ה-Task עצמו לכן מוסיפים await לפני ה-task().

 

נקודה חשובה לציון:

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

 

 

סיכום הדוגמא אסינכרונית:

דוט-נט 4.5 ע"י השימוש ב- aysnc & await מקל עלי את פירוק המתודות למספר משימות.  יש עוד יתרונות לשימוש ב- aysnc & await כמו ביטול משימה, אך זה שייך לפוסט אחר. 

3.      תכנות מקבלי:

נשפר את הקוד ע"י כך שנמקבל את העובדה לשני צירים מרכזים, ה- UI Thread ומתודה ה- Func.

 

image

 

השינוי המרכזי כאן הוא הוספה של Task.Run() שיוצר Task ומריץ אותו במקביל. ה- Stack Frame לא משתנה ( לא מדויק, אבל בשביל ההסבר זה מספיק טוב ) אך שמתי אותו על שני צירים למדל את שני ה- Threads שרצים במקביל.

 

image

 

התוצאה היא  שיש ל-Thread של ה-UI הרבה יותר זמן פנוי כי את העבודה של func העברנו ל-Thread אחר, למעשה מקבלנו תהליכים.

 

אחד היתרונות של async & await שהוא מחזיר אותנו ל-Thread שממנו יצאנו , כלומר ההשמה ל- btnParallel.Content מתבצע על ה- UI Thread.

 

  

סיכום:

 

דוט-נט 4.0 התחיל את המהפכה עם המחלקה Task, לא עוד עבודה עם Thread, המפתח יגדיר את המשימות שיכולות לרוץ במקביל והדוט-נט ע"פ המחשב, מספר המעבדים יחליט אם להקצות לזה Thread חדש, בברירת המחדל 2 Thread ל-CPU. הדגש היה על מקבול תהליכים בצורה קלה יותר מעבודה עם Threads. המחלקה Task מכילה מספר מתודות שהיו חסרות ב-Thread ועושות את החיים הרבה יותר קלים, למשל:

·        Cancel

·        ContinueWith

·        ContinueWhenAll

·        ContinueWhenAny

 

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

 

דוט-נט 4.5 שם את הדגש בפירוק המשימות לתת משימות, בעיקר משימות שעושות תקשורת, IO ואין צורך למקבל אלא לפרק לשני חלקים. הפרוק מתבצע ע"י הוספת מילות המפתח async & await במקומות הנכונים, אין צורך ב- CallBack או events, הכתיבה היא כמו כתיבה סינכרונית.

 

 

Expert Days 2012

 

למי שהנושא מעניין אותו ורוצה להמשיך לחקור בנושא אני מזמין אתכם ליום עיון שאני עושה בכנס הגדול של השנה בחסות מיקרוסופט (http://www.e4d.co.il/Events/ExpertDays2012/Courses/Details/Async-and-Parallel-Programming ).

image

 

פידבקים יתקבלו בברכה.

History of Expert Days

פורסם בתאריך Sep 27 2012, 03:47 AM על ידי Vardi

השנה זו תהייה הפעם ה-7 שאני מארגן את הכנס Expert Days. רציתי לספר לכם איך הכול אתחיל.

הרעיון לכנס עלה לי בשנת 2006 שהרגשתי שהכנסים הרגילים לא מספיק מעמיקים בנושאים כתוצאה מחוסר זמן, ההרצאות היו רק שעה בממוצע ולכן היה קשה לרדת לפרטים ולעבור על כל הפרטים שצריך בחיי יום יום של הפיתוח. מכאן עלה לי הרעיון להרים כנס של מומחים שקראתי לו MvpWeek, כל המרצים היו Microsoft Most Valuable Professional וזה הפעם הראשונה שהצלחנו לאחד הרבה MVP’s לכנס אחד שהם מעבירים בו את תורתם לפחות ביום אחד.

 
  clip_image001

הכנס הבא היה ב-2007 בשיתוף פעולה הדוק עם מכללת נס, שם הכרתי את סי אביבי האחת והיחידה, שהיום מנהלת את מכללת נס. הכנס היה בנושא הכלים החדשים שהיו אמורים לצאת ב-2008, ויזואל סטודיו 2008 דוט-נט 3.5 ועוד. מכאן שהכנס נקרא R-U-Ready 2008. בכנס הזה היו 15 מדריכים ולמעלה מ-30 סדנאות.

Expert Days 2008

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

Expert Days 2009

הכנס היה שוב במכללת נס ובנושא הוויז'ואל סטודיו 2010 והדוט-נט 4. גם כנס זה שבר שיאים. עברנו לעיצוב בשחור.

Expert Days 2010

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

Expert Days 2011

הכנס היה במגמות עם מספר שיא של מדריכים 21 ועם 41 סדנאות. הכנס שבר שיא של משתתפים 621. גם בכנס הזה היה אירוע פתיחה.

Expert Days 2012

clip_image003

הכנס של 2012 אנחנו במיקוד על הנושאים:

אני מקווה שגם הפעם נשבור שיאים ותבואו בהמונכם.

SignalR Internals Flow Part I

פורסם בתאריך Sep 22 2012, 03:44 PM על ידי Vardi

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

1. נקודת ההתחלה של SignalR נמצאת במחלקה בשם AspNetBootstrapper והמתודה Initialize מוסיפה חוק לטבלת החוקים של ה-RouteTable. אבל מי מפעיל את המתודה Initialize ומתי? זה תפקידו של PreApplicationStartMethodAttribute שמסמן לASP.NET- להפעיל את המתודה בזמן עלית המערכת, זה שקול לכתוב את הקוד הזה בעצמינו ב- Global.asax בתוך המתודה Application_Start().


 

clip_image002

2. MapHubs היא מתודה מסוג Extension Methods. ויש לה 3 תפקידים מרכזים:

a. להגדיר את המימוש לממשק IAssemblyLocator, במילים פשוטות איך לטעון את ה-DLL השונים של התשתית.

b. להגדיר את תבנית ה-URL שה- SignalR עובד איתה. (routeUrl = "~/signalr /{*operation}")

c. להגדיר את Handler שיטפל בבקשה עם היא תקיים את התבנית של סעיף b.


 

clip_image004

3. HubDispatcherRouteHandler ממש את הממשק IRouteHandler ותפקידו לספק מחלקה שמממשת את

clip_image006


הממשק IHttpHandler או בגירסה של הדוט-נט 4.5 IHttpAsyncHandler.

כמו שאנחנו רואים HubDispatcherRouteHandler במתודה GetHttpHandler מחזיר את המחלקה AspNetHandler לאחר שהוא מהתחל אותה ב- HubDispatcher שהוא המחלקה שעושה באמת את העבודה.

4. ה- HubDispatcher הוא ה"לב" של המערכת והוא נכנס לפעולה כל פעם שיש התאמה לתבנית ה-URL שהגדרנו בסעיף 2. תפקידו של HubDispatcher לעשות את המשימות הבאות:

a. ליצור את ה-Hub שהמשתמש בנה.

b. למצוא את המתודה שצריך להפעיל ע"פ בקשת ה-JS .

c. לשחזר את ה-State של ה-Hub שהמשתמש הגדיר.
כאן עולות הרבה שאלות, מאיפה HubDispatcher שולף את הנתונים והאם אפשר לשנות את ההגדרות, כמו למשל עם Sessions. איך זה עובד עם Load Balance?

d. להפעיל את המתודה של ה-Hub שלנו שמצאנו בסעיף b.

סיכום:

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

בחלק שני נתמקד ביותר פרטים איך עובד ה- HubDispatcher.

יום עיון בנושא יהיה בתאריך 27.12.2012 בכנס ExpertDays 2012.

SignalR Start Point

פורסם בתאריך Sep 17 2012, 11:54 AM על ידי Vardi

SignalR זו טכנולוגיה שמאפשרת לי לעשות תקשורת דו כיוונית על HTTP. הטכנולוגיה מבוססת על היכולות של HTML 5 Web Sockets אך נותנן מענה גם לדפדפנים שלא תומכים ביכולת זו, ע”י Long Polling. להכרות ראשונה עם הטכנולוגיה אני ממליץ לקרוא את הדף הזה. למי שרוצה מידע מעמיק יותר אני ממליץ לו ללכת ליום עיון של יוני.

אוקי, אבל עכשיו על מה שרציתי לכתוב… כבר כמה ימיים אני לומד איך ה-SignalR עובד, “מתחת למנוע” ולא מצאתי את נקודת ההתחלה. חיפשתי ב- Web Config, Routing וב- App_Start אך כלום. לבסוף מצאתי

PreApplicationStartMethodAttribute ממליץ לכם בחום לקרוא על ה-Attribute הזה, הוא חזק לתשתיות. ובחזרה ל- SignalR זה נמצא בקובץ AspNetBootstrapper.cs. פוסט יותר מסודר על איך עובד ה-SignalR יהיה בהמשך אחרי שאני סיים לעבור על כל המחלקות.

למי שכבר עובד עם SignalR אשמח לשמוע חוויות בפייסבוק.

Expert Days 2012

פורסם בתאריך Sep 14 2012, 02:02 PM על ידי Vardi

bn1

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

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

השנה הוספנו הרבה קורסים שעוסקים בפיתוח אפליקציות ווב בטכנולוגיות HTML 5', JavaScript 5 ועוד. מי שרוצה להתמחות בפיתוח ווב אלו הקורסים שאני ממליץ לכם בחום:

24 / 12 - ASP.NET MVC 4.0

הינה פלטפורמה המאפשרת פיתוח מהיר ונוח של אפליקציות מבוססות WEB. הטמעה של עקרונות ה-MVC בסביבת ה-Web מעולם לא היתה נוחה ופשוטה כל כך. כחלק מהטרנד ההולך וגובר להשתמש בתצורת ה-MVC מיקרוסופט דוחפת לכיוון חדש לגמרי של פיתוח בסביבת ה-WEB, מהפכה שניתן להשוות אותה למעבר מ-ASP לסביבת הפיתוח של ASP.NET. הפלטפורמה ניתנת להרחבה בקלות ומתממשקת עם עקרונות ה-TDD.

26 / 12 - ASP.NET Web API

ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework.

23 / 12 - HTML5 Web Development

HTML5 is the biggest leap forward in web technologies in the last generation. With broad support from Apple, Mozilla, Microsoft and Google, all the major browsers have rapidly incorporated HTML5 features. HTML5 is A Web Experience that Uses Open Standards; it provides you with Rich Web Experiences with Cross Platform, Cross Device & Cross-Browser Consistency. In this course you will learn about the new HTML5 structural, semantic, and form tags, how to use Canvas to create drawings natively in the browser, how to work with HTML5 audio and video, the new

23 / 12 - Deep Dive into JavaScript, jQuery & HTML 5.0

JavaScript has become popular in the last few years due to it being easy to learn, highly flexible and yet a powerful scripting language. If you want to implement dynamic actions on a web page in today’s browsers you have no other option, but to use JavaScript. Currently, HTML5 is the future of web development and JavaScript plays a major role.

25 / 12 - Single Page Apps (SPA) with M-V-VM and Knockout.JS

Knockout is a JavaScript library that helps you to create rich, responsive display and editor user interfaces with a clean underlying data model. Any time you have sections of UI that update dynamically (e.g., changing depending on the user’s actions or when an external data source changes), KO can help you implement it more simply and maintainably.

27 / 12 - SignalR - Websockets Communication

SignalR is a new async signaling library for .NET developed and maintained by David Fowler and Damian Edwars from Microsoft’s ASP.NET and NuGet teams. If you ever wanted to push data from the server to clients (and not just browser clients!) in real time with ease, SignalR will be your perfect companion.

 

לרשימה המלאה של בקורסים לחץ כאן: www.ExpertDays.co.il

עקב אכילס של מערכות שוב ואלפלקציות גדולות

פורסם בתאריך Aug 12 2012, 11:36 AM על ידי Vardi

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

1. מפה עם מספר רב של מטרות, שמתעדכנות בקצב גבוהה, למעלה מ-ms100.

2. מספר רב של חלונות של וידיאו באפליקציה.

3. תקשורת עם מספר שרתים בקצב גבוה.

4. מספר רב של Monitors להצגת המידע, בדרך כלל לפחות 3.

5. כמויות קוד ענקיות, המון שנות אדם.

6. האפליקציה צריכה להיות מודולרית.

7. אסור שהאפליקציה תקרוס וזמן העלייה שלה חייב להיות קצר, במידה והיא קרסה.

כל מי שבונה סוג כזה של אפליקציות מגיעה מהר מאוד למסקנה שאסור שהאפליקציה תרוץ על Process אחד.

מה רע ב- Process אחד?

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

איפה אפשר לראות גישה זו?

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

דוגמא נוספת היא אופיס 2013 הדרך שבה כותבים Office Web App's, ואני מצטט:

"Apps run in a separate, isolated process. If the app crashes, Office will not be impacted, and you can just restart the app if you want. Performance issues in the app won’t impact the performance of Office. Apps are even isolated from a UI point of view. They aren’t allowed to overwrite the Office UI, or even block events, which means you can have a number of apps in your document and not worry about them all conflicting with each other and turning the Office UI into a Frankenstein experience. This is a break from past models where add-ins could block events and overwrite the ribbon, which meant that if you had more than one add-in running you could get some fairly unpredictable experiences. "

סיכום:

פירוק אפליקציות UI גדולות ל- Processesהוא בלתי נמנע. הבעיה היחידה היא שזה מסבך את הפיתוח, למשל : איך עושים Drag & Drop בין מסכים שרצים על Processes שונים. אני חושב שהגרסה הבאה של WPF צריכה להתמודד עם אתגרים אלו ולהקל על הפיתוח, כלומר שהפיתוח בין Processes באפליקציות UI יהיה כמה שיותר פשוט. כמו שעשו ל-Thread ע"י Task. כמובן שעד אז אתם צריכים לבנות סוג של תשתית שתעזור למפתחים לתקשר בין ה- Processes. אגב אם בוחנים את החידושים בחלונות 8 ,יש שם את היכולת לתקשר בין אפליקציות, אנחנו צריכים את זה בדוט-נט, כך שזה ירוץ גם על חלונות 7.

למה לא לקנות מניות של פייסבוק

פורסם בתאריך May 22 2012, 05:33 AM על ידי Vardi

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

נקודות למחשבה:

1. הטלפונים החדשים עובדים עם 4 ליבות ואחד גיגה RAM.

2. בארה"ב הטלפונים עובדים ב-G4 עם חבילות גלישה של מחיר קבוע.

3. כמות האנשים שגולשים למידע שלכם, כמו למשל הדף שלכם בפייסבוק או הלינקאין היא לא גדולה...

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

ומכאן עלה לי הרעיון הבאה:

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

שסיפרתי את זה לרן לוינסקי הוא סיפר לי על פרויקט( Diaspora , לינק נוסף ) אני מאמין שזה השלב הבא ברשתות החברתיות.

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

More Posts Next page »