.:: Jasa Membuat Aplikasi Website,Desktop,Android Order Now..!! | | Order Now..!! Jasa Membuat Project Arduino,Robotic,Print 3D ::.

All for that small Drop Down Box � Part 3

0 komentar

I wrote couple of posts describing how Web MultiTargeting (Web MT) works in VS 2010� You can find those posts at:

Today  I hope to cover few other things related to MultiTargeting that the team focused on during VS 2010 and ASP.NET 4 cycle�

Silverlight MultiTargeting

VS 2010 will allow you to develop Silverlight (SL) projects seamlessly�  SL has got its own runtime versions like SL 2.0/3.0 and eventually there will be SL 4.0 too�  SL development has been possible with VS 2008 where you might have your Web Projects using SL 2.0 or 3.0 and now when VS 2010 comes out is is obvious that developers will expect smooth migration and upgrade for their VS 2008 SL projects into VS 2010�

So in VS 2010 there will be functionality available to upgrade your SL projects to SL 3.0� As SL has different versions it becomes important for VS 2010 to support MultiTargeting between different SL versions� Do note that these version are completely independent of .NET FX versions�

We have talked about Web Projects supporting .NET 2.0/3.0/3.5 as well as .NET 4� In addition to this it is now important for each of these Web Project to support different versions of SL� Thus when you create a new SL project there will be a drop down in the new project creation wizard which allows you to choose what version of SL do you want to target as shown below:

Silverlight New Project

On selecting Silverlight Application when you click �OK� then the below wizard will show up which will allow you to target the available Silverlight versions in your project�

Silverlight MT

SL MT also uses the Reference assemblies infrastructure that we discussed during Part �1 of this post�  You can find that SL also has its own set of �Reference Assemblies� as shown below:

SL Reference Assemblies

This actually brings up an interesting point to note that Reference Assemblies infrastructure is pretty extensible and can be used for Frameworks which are technically outside of .NET Framework too�

ASP.NET MVC

As you know ASP.NET MVC 1.0 was released on top of VS 2008� Then eventually the support for VS 2010 was also provided�  VS 2010 will fully support ASP.NET MVC just like it supports Web Application Projects or Web Site Projects� There will be upgrade options available from VS 2008 MVC projects to VS 2010 MVC Projects� 

MVC projects can MultiTarget based on project references i.e. if you have reference to MVC 1.0 your intellisense will work for 1.0 and if you have reference to MVC 2.0 your intellisense will work for 2.0�  If your hoster does not support ASP.NET MVC just yet you can just select the reference to MVC assemblies and in the properties mark �CopyLocal� to True which will copy the MVC assemblies into your BIN which you can just simply deploy to the server along with your project (as shown below)�

CopyLocal

Multiple Frameworks in same Solution

If you have read Web MultiTargeting posts (Part 1Part 2) you already know by now that there is a lot happening with respect to toolbox filtering, property grid filtering, context sensitive markup intellisense, JavaScript intellisense, C#/VB intellisense,  IIS App Pool management, web.config etc� 

If someone has a big solution with several web projects, few class libraries, few web services etc, it is very likely that they will not update all of their project at the same time to .NET 4� So VS 2010 needs to make sure that things don�t break even if there were multiple projects in a single solution and all of them were targeting different .NET Framework Versions (with few Silverlight projects with multiple versions into the mix :-)) �

There were various stress scenarios which were tested and optimized for in this area� In fact we have something called as �Overall Goodness Factor (OGF)�� OGF is a subjective adhoc test which needs to be performed on a regular basis by various people across the the team to understand how the product is behaving�  As most of the folks in our teams are developers (even if their title don�t say so :-)) they do reasonable job in playing around with various real world projects� This particular OGF covering stress scenario was always hard to execute, coz every time we had to set up this complex project structure from ground up and play around with it to make sure VS 2010 is actually performing correctly� Btw, the OGF report is sent out pretty broadly across the division for features like MT so if  any team�s OGF was not �Good� it use to become the the center of everyone�s attraction across the division (not in a good way :-))� In short there was enough motivation provided to get things right!!

Making sure all Web Stack Features Work

As Web MT operates relatively in the lower layers of VS 2010 and ASP.NET 4 stack a small issue in MT surfaces as a big issue somewhere else� Although this is very much assumed and expected but the MT team had to specifically write Automation tests to ensure other features within the products like Dynamic Data, AJAX, Web Deployment, Build/Compilation, Debugging, WCF, Web Services etc etc continues to perform while targeting any .NET Framework version�

Most of the time we did not face a lot of issue in this area, but nevertheless something which is worth mentioning�:-)

Target Framework Moniker & Profiles

As we talked about earlier �Reference Assemblies� which are laid down on the disk at %Program Files%\Reference Assemblies folder are meta data only assemblies� By default there are Reference Assemblies folders created for Silverlight versions and .NET Framework versions (e.g. 2.0, 3.0. 3.5 & 4)� VS 2010 architecture runs using a concept called as �Target Framework Moniker� which describes where reference assemblies should be picked from the disk�  The target framework Moniker looks something like below:

".NETFramework,Version=v4.0,Profile=ServerCore"

  • Target Framework Identifier (�.NETFramework� in above example)
  • Target Framework Version (�Version=v4.0� in above example)
  • Profile Name (�ServerCore� in above example)

Based of this information VS 2010 will pick up �Reference Assemblies� which in turn will allow VS 2010 to control the behavior across the board in the IDE (i.e. on toolbox filtering, intellisense, property grid filtering etc etc)�

When Profile Name in the target framework Moniker is present then VS 2010 looks under the framework for the presence of the Profile definition (Think of �MT Profile� as a SUBSET of the full .NET framework)

Profile Folder

When Profile Name in target framework Moniker is missing then the full frameworks are picked up� i.e. �.NETFramework,Version=v4.0� will pick up reference assemblies for the full .NET 4 Framework� 

Profiles are interesting coz in the future there might be platforms and servers which do not need full .NET Framework but only subset of it� VS 2010 can ensure that projects developed using a specific Profile will not land up accidentally consuming the larger surface area of .NET framework which might be absent on the destination� Eventually Mobile development can have its own profile and so can Windows Client development have its own� Anyways, the key point is that �Profiles� are a reusable way to provide MultiTargeting support with Visual Studio and will be expressed via the �target framework moniker��

You might be wondering where is this target Framework Moniker physically visible� Well the answer is complicated but what is important to note is that starting .NET 4 ASP.NET web.config  schema will support a special attribute called targetFramework=�4.0� as shown below:

TargetFrameworkMoniker

Following things are worth noting about this attribute:

  • The attribute resides on the compilation node of the system.web attribute of the web.config�
  • This attribute was introduced in ASP.NET 4 and it is not supported for .NET 2.0/3.0/3.5 webs (as they shipped before the concept of Reference Assemblies and Profiles was introduced)� i.e. do not try to code something like �targetFramework=v3.5� in VS 2010  it will not work :-)
  • �targetFramework� attribute is just a short form of �targetFrameworkMoniker��
  • �targetFrameworkMoniker� was the attribute which was earlier used in VS 2010 Beta1 but in final VS 2010 release it will be renamed to �targetFramework��
  • targetFramework=�4.0� is same as targetFramework=.NETFramework,Version=v4.0�
  • If there was a profile then that could be added to targetFramework too e.g. targetFramework=�.NETFramework,Version=v4.0,Profile=ServerCore" (btw, Profile=ServerCore" is just a made up name by me, it does not exist :-))
  • Post VS 2010 Beta1, targetFramework will not be a required attribute at runtime for ASP.NET 4� But, it is required for VS 2010 to support correct MT behavior within IDE so I strongly encourage you to not delete that attribute from your web.config file� Its, just a little attribute it means no harm :-)
  • As targetFramework attribute is optional at runtime, if it was missing from web.config and the web was deployed under .NET 2.0 App Pool in IIS then ASP.NET will assume the web to be 2.0 Web� If the web was deployed on .NET 4.0 App Pool in IIS then ASP.NET will assume that the web is .NET 4 web� 
  • targetFrameworkMoniker, which was  the VS 2010 Beta1  equivalent of targetFramework attribute was a required attribute  i.e. if that was absent you would get an error as below:

�The application domain or application pool is currently running version 4.0 or later of the .NET Framework. This can occur if IIS settings have been set to 4.0 or later for this Web application, or if you are using version 4.0 or later of the ASP.NET Web Development Server. The <compilation> element in the Web.config file for this Web application does not contain the required 'targetFrameworkMoniker' attribute for this version of the .NET Framework (for example, '<compilation targetFrameworkMoniker=".NETFramework,Version=v4.0">'). Update the Web.config file with this attribute, or configure the Web application to use a different version of the .NET Framework.�

The solution for the above error in VS 2010 BETA 1 is to add below attribute under compilation node of the web.config file

targetFrameworkMoniker=.NETFramework,Version=v4.0�

Anyways, I guess now you know a lot more about a single attribute within web.config than you would ideally like to, so let�s move on :-)

Retargeting between Framework Versions

I intentionally kept this piece towards the end coz now you know a whole gamut of things that happen around Web MT within Visual Studio for a single project� The nice part is that VS 2010 will allow you to simply go to your project properties and use that retargeting drop down box shown below to flip your Framework version between 2.0, 3.0, 3.5, 4 or any of the Profiles that might be installed on your box� And as soon as you retarget IDE will frantically start doing a bunch of things behind the scenes and within no time will reload your project and get you all set on new Framework of your choice�

image

If you choose to down target your project from say .NET 4 to .NET  3.5 you will get a bunch of errors when you build, the primary reason for that is that VS 2010 cannot simply wipe out source code from your code files, it does not really know what code you wrote and tweaked painstakingly and suddenly loosing it all might be scary� But anyways, the chances of people moving from .NET 4 to 3.5 are very few so most people do not ever experience the errors� Even if you see retargeting errors most of the time the solution is all about deleting some new 4.0 specific code which is pretty easy to do�

Anyways, in the image above you will also see a tons of extra frameworks, we have not yet made progress beyond 4.0, so most of them are not real� :-) They are all the test profiles and frameworks that MT team created painstakingly to make sure MT really works in whatever difficult situation we will throw at it�  So, when VS 2010 ships all the test frameworks will be gone and all you will see are few Frameworks is that small Drop Down Box�. :-)

-Vishal

The remaining posts in the Web MultiTargeting Series are:

Suni

All for that small Drop Down Box � Part 2

0 komentar

Web MultiTargeting (Web MT) for VS 2010 has been a great journey of fine technology and a tons of learning for me in person, I am sure everyone in the team feels very similar (although some may add �+ lot of pain� into the mix :-))�  Yesterday, I published some of the details around what Web MT offers web developers in VS 2010� You can read it at:

All for that small Drop Down Box � Part 1

I covered approx 10 different features of MultiTargeting in the previous post, today I am going to time box myself to a couple of hours to write as much as I can and then see if we need Part �3 of this series in few more days or not� :-)

Anyways, let us get started!!

Filtering Markup Intellisense

One of the essential benefits of working within IDE like Visual Studio is that you get your code colorized correctly and intellisense keeps showing up as and when you need it�  Before working on many of these feature areas I often use to take things like keywords getting colorized and intellisense showing up etc pretty much for granted, now I don�t, now I appreciate that ultimately everything is a text pad before it becomes as fancy as VS 2010 code editor is� :-)

The MT team did a reasonable amount of work to make sure that when you go about typing <asp: in HTML editor of VS 2010 and you start getting intellisense as below:

markup intellisense

then that is actually customized to the correct ASP.NET version� Imagine if folks got <asp:ListBox in .NET 2.0 project (where ListBox control is not supported) and they started using the ListBox only to find out when the web project is deployed it will not work�  Well, VS 2010 will not show you <asp:List Box in .NET 2.0 project but in order to do that there was work done to filter out the mark up from intellisense which does not apply in a particular framework� After we got the filtering working then the team was assigned to do some more work to make sure that the design was refined in a way that it did not adversely impact performance�

Correct JavaScript Intellisense

You must have already heard that VS 2010 gives great JavaScript intellisense support� In fact in VS 2010 there was a lot of work in this area (out side of MT work) to ensure that you get intellisense everywhere, hopefully I will write about that also in a different post but whether or not I do I am sure you will start noticing the difference in JavaScript intellisense in VS 2010 over VS 2008�

Anyways, for now what is interesting to know is that for Microsoft AJAX the JavaScript files are embedded inside the assemblies like System.Web.Extensions etc�  The AJAX support has only been growing in every .NET framework release and it is one of the reasons why people move from .NET 2.0 to 3.5 and will hopefully move to .NET 4 too� 

You might recollect the reference assemblies discussion from my Part 1 post and that reference assemblies are meta data only assemblies� You might also recollect that VS 2010 process loads only .NET 4 and then reference assemblies are used to mask .NET 4 features in lower level targets like .NET 2.0/3.0 and 3.5� 

Now the AJAX JavaScript files are embedded inside assemblies and they actually differ from framework to framework�  If VS 2010 would use the embedded JavaScript files from .NET 4 assemblies all the time then .NET 2.0/3.5 projects would land up consuming some JavaScript functions which may not be available in that framework�  Due to such scenarios the Reference assemblies actually always contain embedded resources (even though they do not actually contain the source code implementations)� Web MT team worked on getting these embedded resources from the correct reference assemblies and feeding to the JavaScript intellisense engine to ensure that you get correct AJAX intellisense when you are using Microsoft AJAX feature sets�  It was kind of cool to see even JavaScript intellisense get target aware, I hope folks who use a lot of Microsoft AJAX will be able to appreciate this :-)

Special support for AJAX Control Toolkit (ACT)

It is funny that we land up calling AJAX Control Toolkit as �ACT�, I guess not many web developers using and contributing to ACT don�t do so!!  Anyways, ACT 1.0 was an out of band release (i.e. it did not ship as part of .NET 2.0) and offered various controls and extenders which are used by many many web developers�  Eventually ACT 3.5 and now community previews of recent ACT release are becoming available�  When you download and use ACT then you get controls and extenders in your toolbox and your web controls get options to add or remove extenders (e.g. A TextBox control can have a ColorPicker extender)� When all this things come together in VS 2010 there are a lot of possibilities like what if you have .NET 2.o project what kind of ACT should be made available, what if you have ACT 1.0 as well as ACT 3.5  on your box how should VS 2010 react to it, what should be allowed and what should be prevented via errors and intellisense so that web developers do not land up getting their webs into a bad state� ACT in itself with all its combinations keeps several members of our QA team busy for extended period of time� Their goal is  that things should just work and web developers should remain blissfully unaware of the complexity behind the scene� 

Actually the entire MultiTargeting feature in a way is like that �If you as a developer never realized MTs existence throughout your project lifespan--> from creation, to editing to deployment in production, to end of maintenance life then it is �mission accomplished� for us:-)��  It feels like working in the entertainment industry, making movies everyday and contributing in the category of work which is pivotal but does not have an Oscar category associated with it!!  As long as our movie is loved by the people watching it we will be happy and satisfied, so in short the ask from you is �Love VS 2010 and .NET 4�  it is indeed great!!

Support for 3rd party controls

Ensuring that 3rd party controls from likes of Infragistics and Dundas work seamlessly across framework versions (based on how they are designed) was also important� Some people want to be able to not keep buying same control over and over again after upgrading their framework version (sounds familiar :-))�  There is a reasonable amount of work done in verifying controls from many of our partners and also working with many control vendors to provide them with the guidance on how to work within VS 2010 to make sure things continue to work find when people migrate their projects into VS 2010�  The central MT team across the division worked together to come up with a guidance document for control vendors to integrate into VS 2010, even this simple blog post series is long enough so I will leave to you to imagine how much information must be poured into that document which will be used by various companies to build controls which will work within VS 2010�  You will be surprised on how versioning, licensing and naming is done by various partners� Ensuring that nothing of this broke in VS 2010 was not easy�:-)

ASP.NET Compilation System

With .NET 4 running in VS 2010 process the ASP.NET Compilation System used is also .NET 4� Before we talk more about this let me tell you what ASP.NET Compilation System does � it is the system which actually takes the web pages, parses the various ASP.NET related syntax present inside the HTML e.g. <asp:GridView etc and converts that into code� It also pulls out all of the inline C# or VB code out of your web page and calls the correct C#/VB compiler on it� This is the core ASP.NET Compiler which runs inside of Visual Studio�

Now imagine that the ASP.NET Compiler within VS 2010 was required to be made target aware� What I mean by that is when you are targeting .NET 2.0 and you have .NET 4.0 syntax in your web then the compiler needs to throw an error which shows up in your VS 2010 error list which you can then double click and you are taken to the line on which there was an error�  This actually is the same kind of error reporting mechanism that happens even when there is a typo in source code� In essence ASP.NET 4 compiler needs to get into the �correct framework mode� to provide the accurate error messaging and to avoid any type bleeding from happening�

There are also MT implications on C# and VB compilers which I will possibly cover in a separate post� In any case trust me that making compilation system target aware is a significant endeavor�

IIS Application Pool Mappings

As you know we have Visual Studio Development Server (aka Cassini) that is used to debug/run your project within VS without needing IIS�  I talked a little bit about this in my previous post� The other possibility for running and debugging your app is by using IIS on your local box itself�

VS allows you to create a WAP or a Web Site which uses IIS instead of Cassini� Even here MT needs to intervene; if you are creating a .NET 2.0 IIS Web then VS 2010 needs to go access IIS and create Virtual Directories, IIS Apps and map them to the correct App Pools running in correct target frameworks� Simply put VS 2010 needs to put .NET 2.0 project in .NET 2.0 App Pool and .NET 4 project in .NET 4 App Pool�  I wish it was just limited to this but there are instances when correct App Pools are not available and then VS 2010 needs to go and create them for that framework� Sometime the project is mapped to use .NET 2.0 App Pool and now it is being upgraded to .NET 4� In this scenario VS needs to go and change the IIS App to use the correct App Pool too�

VS 2010 actually uses IIS 6 Metabase APIs to make these changes and even when you are using IIS 7.0 or 7.5 VS 2010 continues to use the same Metabase APIs and hence if you are using IIS as your development server with VS 2010 with Vista/Win7 you will need to have IIS 6 Metabase Compatibility Layer turned on in Control Panel �> Programs�> Turn Windows Features On/Off  as shown below:

metabse compatibility

It is not only when VS 2010 flips/flops Virtual Directory App Pools when this compatibility layer is used� It is also used when IIS App is created for the first time, in short it is used every time you use IIS based web project within VS 2010�

In all honesty, in VS we could write code to get rid of the IIS 6 Metabase compatibility dependency and instead start using IIS 7 configuration system API but there was a lot work needed to do that we could never get to completely finishing it on time� :-( I totally understand that it is going to be an inconvenience to have the compatibility layer enabled and I apologize for the same but I hope that you will recognize the fact that we do have the intent to finish the work but just from cost and schedule standpoint we could not fit this work into VS 2010�

Anyways, I have reached at the end of my stipulated couple of hours of time to write this post� I assumed that if I give myself couple of hours to write then the content will be at reasonable reading length without making everyone bored, it will also ensure that I do not start writing gibberish :-)

I certainly have more inner workings to tell you about Web MT but I guess that the content is interesting enough to deserve �All for that small Drop Down Box - Part 3��!!

So until then please do feel free to let me know if any of this is any good to anyone reading :-)

-Vishal

The remaining posts in the Web MultiTargeting Series are:

Suni

Setting Registry Untuk Start Menu

0 komentar
Cara dibawah ini ditujukan untuk setting registry pada Start Menu Windows XP.

Menyembunyikan Menu Find pada Start Menu
1. Buka regedit.exe
(anda bisa mencarinya di C:\WINDOWS\ atau klik Start Menu ->Run->ketik regedit).
2. Masuk ke :
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\
3. Klik Kanan folder Explorer pada panel sebelah kiri, pilih New -> DWORD Value
4. Beri nama DWORD Value tersebut dengan nama �NoFind�.
5. Klik Double NoFind tersebut, Isi Value data dengan 0 atau 1
(0 = menampilkan, 1 = menyembunyikan).

Menyembunyikan Menu Document pada Start Menu
1. Buka regedit.exe
(anda bisa mencarinya di C:\WINDOWS\ atau klik Start Menu ->Run->ketik regedit).
2. Masuk ke :
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\
3. Klik Kanan folder Explorer pada panel sebelah kiri, pilih New -> DWORD Value
4. Beri nama DWORD Value tersebut dengan nama �NoRecentDocsMenu�.
5. Klik Double NoRecentDocsMenu tersebut, Isi Value data dengan 0 atau 1
(0 = menampilkan, 1 = menyembunyikan).

Menyembunyikan Menu Run pada Start Menu
1. Buka regedit.exe
(anda bisa mencarinya di C:\WINDOWS\ atau klik Start Menu ->Run->ketik regedit).
2. Masuk ke :
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\
3. Klik Kanan folder Explorer pada panel sebelah kiri, pilih New -> DWORD Value
4. Beri nama DWORD Value tersebut dengan nama �NoRun�.
5. Klik Double NoRun tersebut, Isi Value data dengan 0 atau 1
(0 = menampilkan, 1 = menyembunyikan).

Menyembunyikan Setting Taskbar pada Start Menu
1. Buka regedit.exe
(anda bisa mencarinya di C:\WINDOWS\ atau klik Start Menu ->Run->ketik regedit).
2. Masuk ke :
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\
3. Klik Kanan folder Explorer pada panel sebelah kiri, pilih New -> DWORD Value
4. Beri nama DWORD Value tersebut dengan nama �NoSetTaskbar�.
5. Klik Double NoSetTaskbar tersebut, Isi Value data dengan 0 atau 1
(0 = menampilkan, 1 = menyembunyikan).

Menyembunyikan Tombol Logoff pada Start Menu
1. Buka regedit.exe
(anda bisa mencarinya di C:\WINDOWS\ atau klik Start Menu ->Run->ketik regedit).
2. Masuk ke :
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\
3. Klik Kanan folder Explorer pada panel sebelah kiri, pilih New -> DWORD Value
4. Beri nama DWORD Value tersebut dengan nama �NoLogOff�.
5. Klik Double NoLogOff tersebut, Isi Value data dengan 0 atau 1
(0 = menampilkan, 1 = menyembunyikan).

Menyembunyikan Subfolder pada Start Menu
1. Buka regedit.exe
(anda bisa mencarinya di C:\WINDOWS\ atau klik Start Menu ->Run->ketik regedit).
2. Masuk ke :
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\
3. Klik Kanan folder Explorer pada panel sebelah kiri, pilih New -> DWORD Value
4. Beri nama DWORD Value tersebut dengan nama �NoStartMenuSubFolders�.
5. Klik Double NoStartMenuSubFolders tersebut, Isi Value data dengan 0 atau 1
(0 = menampilkan, 1 = menyembunyikan).

Menyembunyikan Tombol All Program pada Start Menu
1. Buka regedit.exe
(anda bisa mencarinya di C:\WINDOWS\ atau klik Start Menu ->Run->ketik regedit).
2. Masuk ke :
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\
3. Klik Kanan folder Explorer pada panel sebelah kiri, pilih New -> DWORD Value
4. Beri nama DWORD Value tersebut dengan nama �NoStartMenuMorePrograms�.
5. Klik Double NoStartMenuMorePrograms tersebut, Isi Value data dengan 0 atau 1
(0 = menampilkan, 1 = menyembunyikan).


Suni

All for that small Drop Down Box � Part 1

0 komentar

Multi Targeting in Visual Studio 2010 is surprisingly a big feature area� It falls under the category of what we called as a �Divisional Initiatives� which spans across nearly all of Visual Studio and .NET Framework teams� Even engineers from outside of VS and .NET teams contributed significantly on the project... With this series of blog posts I am going to merely focus on MultiTargeting (MT) for Web Developers in Visual Studio 2010 and ASP.NET 4�

First of all let me call out by saying that in VS 2008 there was only one version of CLR i.e. CLR 2.0� Various framework versions i.e. .NET 2.0, .NET 3.0 and .NET 3.5 were only changes to the framework assemblies which still ran on the same CLR 2.0�  With .NET 4 this equation changes coz .NET 4 runs on CLR 4�  VS 2010 now needs to support .NET 2.0, .NET 3.0, .NET 3.5 as well as .NET 4 Applications; this implies that now we are about to cross into different CLRs for Applications targeting different Framework Versions� Solving this issue is in part what VS 2010 MT is all about� Solving this problem for various ASP.NET Web projects is what Web MT is all about�

As VS 2010 itself loads CLR 4, trying to create, edit, debug, deploy applications with VS 2010 running on CLR 2 would mean loading CLR 2 inside CLR 4�  That without going into detail is a technical nightmare� To overcome this VS 2010 loads only CLR 4 and .NET 4 in its process and for applications targeting .NET 2.0, 3.0 or 3.5 VS 2010 makes .NET 4 emulate .NET 2.0/3.0 or 3.5.

So how does the emulation inside VS 2010 really happen?

With VS 2010 there is a new concept called as �Reference Assemblies�� �Reference Assemblies� simply put are meta data assemblies which represent each framework� These assemblies do not contain the complete implementation of the framework they just allow VS 2010 to decipher what classes, methods, properties, resources etc are really present in each .NET Framework version� You can find these �Reference Assemblies� in %Program Files%\Reference Assemblies folder�. There is more to the process of creating �Reference Assemblies� and registering them etc but for now I will not get into those details�

As I mentioned earlier inside VS 2010 process only CLR 4 and .NET Framework 4 is loaded� If you create a .NET 2.0 project, VS 2010 will use the .NET 2.0 Reference assemblies to ensure that your project behaves like a .NET 2.0 app� Although, all the time when you are editing your .NET 2.0 code, designing your web pages, authoring controls, debugging etc you are actually using .NET 4 but VS 2010 is masking off all the .NET 4 features based on the directions provided by .NET 2.0 Reference Assemblies� Now when you build your projects VS 2010 cannot use .NET 4 and CLR 4 to create the output assemblies coz if VS 2010 would do that then you would not be able to run your project on a box which only has only .NET 2.0 (i.e. not CLR 4/.NET 4)�  Hence, when it comes to building the assemblies VS 2010 launches the correct compilers out of process and generates the correct assemblies for your project�

Now with this high level understanding let me mention that as I write this article I am thinking that I have been lucky to have worked with great engineers across the company to make the VS 2010 MT experience the way it is today and additionally I feel lucky that people whom we build all this stuff for (ie .NET developers world wide) can actually understand what goes into development of such a system as Visual Studio and .NET Framework� Anyways, let us get into the meat of what all does all this crazy MT stuff buys web developers at the end of the day (APART FROM THAT SMALL DROP DOWN BOX that you see�  :-)

small drop down box

Migrating pre-VS 2010 (starting from VS 2003) web projects to VS 2010 � One of the feature areas of Web MT is migration of apps created using previous version of VS to VS 2010.  VS 2010 allows migration from VS 2003, VS 2005 as well as VS 2008�  This entails modifying the solution files (.sln) and project files (.csproj/.vbproj) of your Web Projects to make them complaint with VS 2010 format.

Have you wondered why do we need to do that??  As you might already know project and build systems within VS work using MSBuild� There are target files and task dlls which are installed as part of VS 2010 in specific directories� These directories need to be side by side with VS 2008/VS 2005 directories to ensure that you can run VS 2008 and VS 2005 on the same box and uninstalling of any of the IDEs does not break the other versions� Anyways, there are references to various target files inside the solution and project which need to be updated to be point to the correct directories of VS 2010� Apart from that there is also changes to IDE version etc which is embedded inside these files which are used by VS, all that stuff needs to be updated�

When you open VS 2003/2005 or 2008 projects in VS 2010, VS will automatically do this migration for you.

People always bring up the discussion where they would like few developers in their team try out VS 2010 and remaining stay with VS 2003/2005 or 2008.  They typically want to try out the VS 2010 release in a limited way and once the few folks trying the product give a green light they would move the entire team to VS 2010�  Doing this is of course possible but an additional ask which comes with that is �Can we have some developers use VS 2010 while others use VS 2008 for the same project/solution file in a common source control?�; unfortunately the answer to that is No�  The process of having the same project being operable in various versions of VS is what we call as �Round-Tripping�� We really did want to include this feature for VS 2010 but unfortunately could not due to the existing complexity of MT (as discussed above, below and everywhere in this post :-)) + limited time to get everything right� !!  Well, what is important is that we will make everyone in your project team move to VS 2010 easy enough that you can have the entire team bet on it at the same time�!!  Let us see how -

Upgrading pre- .NET 4 web projects to .NET 4  - VS 2010 will also allow you to upgrade your .NET Framework version from .NET 2.0, 3.0 or 3.5 to .NET 4�  This now enters the realm of making changes which impact your code� That is the reason VS 2010 allows you to either stay with your existing Framework version or upgrade the Framework version to .NET 4� There are tons of cool new ASP.NET 4 features, I encourage you to read the whitepaper on ASP.NET 4 and VS 2010 to learn more� -

Creating .NET 2.0, 3.0, 3.5 as well as .NET 4 projects � This is drop down box  which I am referring to in the title of this article� :-)  It will manifest itself again but what is important to note is that when you try to use File �> New �> Project or File �> New �> Web Site (as shown below), you will get a choice to choose the Framework version of your choice for the new project�

new project framework dropdown

Some folks will still have their web servers set up only for .NET 3.5 and in that case they can choose the corresponding framework version from the drop down�  As soon as the framework version is chosen in you will notice that the project templates will get filtered correctly�  When any of the project templates (or item templates) are authored we now have a concept of embedding the �Min Framework Version� and �Max Framework Version� in them�  This allows VS 2010 to determine which templates to show and hide when you are choosing a particular Framework.  It also ensures that we do not need to have multiple copies of the same template within VS saving time and size during VS 2010 install�

Filtering Item Templates for Framework Version � Similar to the project templates discussion above are the details for the Item templates�  When you go ahead and try to right click on your project and Add�> New Item, similar filtering happens� For e.g. you do not see �ADO.NET Entity Data Model� item template if you right click on a .NET 2.0 project

image 

Item template filtering works similar to project template filtering� Also it is worth noting that there can always be custom code which can be run during �Project creation� or �adding Item Template� which allows VS 2010 to do special things with the template per .NET framework version�  A good example of this is the web.config file template which needs to generate different web.config file based on the .NET framework version�  So if you crack open a item template you might see some conditional framework based logic in there� :-)

ToolBox Filtering � As you are about to design your page or user control you may tend to drag and drop controls from toolbox� At this time VS 2010 needs to make sure that you see only the controls that your .NET version allows�  If you remember I mentioned earlier that VS 2010 is always running .NET 4�  If the toolbox showed all the controls associated with .NET 4 all the time then you might see unwanted controls when you are targeting .NET 2.0 and potentially may have errors in production if you used .NET 4 controls in .NET 2.0 projects� To avoid this from happening VS 2010 uses �Reference Assemblies� and the entire architecture surrounding them to identify what controls need to be shown in the toolbox�

At this time VS 2010 also gathers what the tooltip for the controls and shows them correctly to you so that you know what type of control are you using�

toolbox version tooltip

Additionally what is interesting to note is that the toolbox meta data population also happens for 3rd party controls and hence even if you were using Infragistics or Dundas control their metadata will also get correctly reflected in the Toolbox i.e. their framework dependency chain will be walked and correct Framework dependency will be verified�

As you can imagine there is a lot of work being done based on your framework version to go down to �Reference Assemblies� and find out what needs to be shown what does not and only after all that the toolbox gets populated correctly�

Property Grid Filtering � Now if you pause and ponder for a moment that it is only the .NET 4 control which is being used within VS all the time then you can possibly imagine that some controls may now have more properties in .NET 4 than what they use to have in the previous framework versions� For example let us take Login control in .NET 2.0 vs the same control in .NET 4� ClientIDMode did not use to exist in .NET 2.0 but does in .NET 4.

property grid filtering  In this case VS 2010 needs to make sure that those extra properties are not shown in the control property grid as shown above, coz if they do and someone accidentally sets them then they will appear as part of the .aspx/.ascx markup and will get deployed to the web server� As on the web server the app will be set to run in .NET 2.0 it will not recognize the ClientIDMode property and will throw an exception causing production failures. 

One additional goals of Web MT was to ensure that if at all there are any accidental mistakes then they are caught well early within VS rather than letting them propagate and have the application fail at runtime�

In fact I would say that it would be a cardinal sin for Web MT if VS 2010 design time allowed you to create an app which will fail after deployment and the teams over here have done whatever it takes to make sure that does not happen�

Switching C# & VB compilers for the correct Framework Versions � As I mentioned earlier based on the correct framework version the correct C# & VB compilers need to be invoked so that correct binaries can be produced for your projects� This also ensures that VS 2010 is able to catch errors in the C# & VB code based on the compiler features for the particular framework version� 

From compilation standpoint there are different things that happen for Web Application Projects (WAPs) as compared to Web Site Projects (WSPs) which I have explained in the article WAPs vs Web Sites and so there are is a interesting design on how the compiler switching happens in case of these different project systems� I will explain that in a future article but for now you can be rest assured that when you target .NET 3.5 VS 2010 will produce binaries which will run on .NET 3.5 and when you use .NET 4 VS 2010 will produce binaries which target .NET 4�:-)

Add Reference Dialog Filtering � When you try to add new references to your projects to any of the assemblies now you will notice that you will see the references associated with the correct framework version� Again this list is populated by querying reference assemblies similar to what toolbox and property grid filtering did�

In Add Reference dialog box again the validation is done against your project and you are shown only the references which are legit to be added to your project based on its .NET Framework version� 

You will also notice that the path of the Framework assemblies will be pointing to Reference Assemblies folder as shown below:

Add Reference

One of the big challenges that the team faced was trying to improve the performance as compared to VS 2008 while incorporating all these architectural changes around the meta data only assemblies�  The design of  reflecting upon the �Reference Assemblies� and then filtering out .NET 4 assemblies to finally populate the dialog boxes, tool boxes, property grids etc certainly is a lot more work as compared to simply looking at a fixed folder location that was being done in VS 2008�   I am really proud of our team who have spent countless amount of time in fine tuning the flow of these designs to ensure that performance is not adversely affected and hopefully in future builds of VS 2010 you will notice the perf improvements since Beta1 build�

Using the correct machine.config and root web.config

Many of you might be already aware that the web.config file that you see in your web project is actually part of a hierarchical config system�  There is machine.config as well as root web.config which resides in CONFIG folder under �%Windows%\Microsoft.NET\Frameworks\Vx� directory�   Actually an interesting piece to note is that for .NET 2.0, 3.0 and 3.5 the CLR version was always 2.0 and hence the machine.config and root web.config file was never changed since .NET 2.0, check out the �Config� folder for .NET 2.0, if you go to v3.0 or 3.5 you will not find any �Config� folder at all:

image

For .NET 4.0 you will have a similar folder and it will contain �machine.config� and �web.config� files� In essence .NET 4 is the first opportunity for ASP.NET to have a different root web.config and machine.config� Certainly that brings a huge set of advantages but increases the work we needed to do from Web MT standpoint. 

Now when you create .NET 2.0/3.0 or 3.5 project in VS 2010 then the machine.config and root web.config needs to be picked up from .NET 2.0 folder but if you create .NET 4 project then the machine.config and root web.config needs to be picked up from .NET 4 folder�  In nutshell when you start typing <appSettings> and so on in your web.config file do note that the schema intellisense that you get is also customized to the correct config hierarchy that you are in.

If you have incorrect settings in web.config file (which might be correct for a different Framework) then you get errors because of this work in Web MT to use the config files from the correct Framework hierarchy�

Picking correct version of Visual Studio Development Server (Cassini)

As you know we have Visual Studio Development Server (aka Cassini) which ships for local development of web projects within VS� In VS 2010 we will ship with two versions of Cassini EXEs, if you observe system tray balloons/pop-ups you will now notice either webserver40.exe or webserver20.exe� That is because Cassini runs outside the process of Visual Studio and for debugging your .NET 2.0/3.0/3.5 you actually want to run under CLR 2.0 and to try your .NET 4.0 apps you need to run under CLR 4.0� This will provide real framework experience during F5/Ctrl+F5 and View in Browser scenarios� Apart from various bug fixes that went into Cassini 4 this was another chunk of work for our QA team did to verify whether VS 2010 picked up correct version of Cassini or not�

There are several other things related to Multi targeting that I would like to ramble about, but if I do it right now it will just become too long to be read, instead I will hold off for now and continue  with Part 2 in next few days�

Till then my hope is that you will look at that small drop down box a little more next time and remember us all :-)

-Vishal

The remaining posts in the Web MultiTargeting Series are:

Suni

Source Code Penjualan Pulsa HP

0 komentar
Fitur Pada Aplikasi :
- Data Customer
- Data Voucher
- Data Provider
- Transaksi Pulsa
- Setup Profil Toko

Laporan
- Harian dan Bulanan

Nah Bagi Yang Berminat Silahkan Anda
Download Here

password : bismillah


Suni

Source Code Bengkel Sepeda Motor

0 komentar
Fitur :
- Data Customer
- Data Service
- Data Spare Part

Laporan
-Harian dan Bulanan

Fasilitas
-Manage User

Setup
-Harga Service
- Jenis Kendaraan

Bagi Siapa Saja Yang Berminat Untuk Mengembangkan Source Code ini Silahkan Anda
Download Disini
password : bismillah
Suni

Source Code Grosir Madina

0 komentar
Fitur :
Daftar Barang
Daftar Pemasok
Daftar Penjualan
Manage Karyawan
Manage Pembelian
Backup & Restore DB

Laporan
- Pembelian
- Barang
- Penjualan

Bagi Yang Berminat Untuk Mengembangkan Source Code ini Silahkan Anda Download Disini
password : bismillah

Created By : Tonggam Tampubolon
Suni

Source Code Management Hotel

0 komentar
Program manajemen hotel ini memiliki berbagai fasilitas untuk membantu petugas front office dalam menangani status kamar yang dipesan oleh tamu ataupun pengunjung hotel. Penggunaan
program ini dimulai sejak tamu/pengunjung hotel melakukan pemesanan, check-in sampai dengan check-out. Seluruh data disimpan dan diolah program termasuk semua laporan yang ada
Download Here
password : bismillah
Suni

Source Code Rental Video

0 komentar
Software TOKO RENTAL VIDEO . merupakan software aplikasi untuk pengelolaan database TOKO rental VCD , DVD dengan fitur yang menarik dan mudah digunakan, mempermudah pegawai TOKO RENTAL dalam pengelolaanya. Software ini juga mampu di terapkan pada toko-toko atau usaha rental, seperti rental proyektor, lcd, rental playstation dll.
Download Here
Suni

Source Code Sistem Informasi Rumah Sakit

0 komentar
Sistem Informasi Rumah Sakit adalah sebuah sistem informasi yang terintegrasi dan disiapkan untuk menangani keseluruhan proses manajemen rumah sakit, mulai dari pelayanan terhadap, apotik, penagihan, medical record, database personalia, penggajian karyawan, proses akuntansi sampai dengan pengendalian oleh manajemen. Program ini masih banyak kekurangannya, silahkan anda kembangkan lagi sehingga program ini menjadi sempurna dan siap pakai.
Download Code
Suni

Source Code Sistem Informasi Akademik

0 komentar
Pengolahan data yang berhubungan dengan kegiatan belajar mengajar diselenggarakan dalam suatu instansi pendidikan untuk menghasilkan laporan tentang siswa, guru, pelajaran, kelas, jadwal mengajar serta administrasi BP3. Pengolahan data yang baik akan mendukung terbentuknya sistem informasi akademik yang baik. Proses sistem informasi akademik dimulai dari siswa memberikan data siswa ke tata usaha, tata usaha melakukan pendataan siswa dan pembuatan kartu siswa atau kartu Osis dan Kartu siswa di berikan ke siswa. Guru memberikan data guru ke tata usaha, tata usaha melakukan pendataan guru.
Waur kurikulum memberikan data kurikulum ke tata usaha dan tata usaha melakukan pendataan kurikulum. Waur Kesiswaan
memberikan data kelas ke tata usaha dan tata usaha melakukan pendataan kelas. Pendataan pembayaran BP3 dimulai siswa membayar pada pengurus BP3 kemudian dicatat pembayaran/transaksinya sesuai dengan identitas siswa dan bulan pembayaran. Dari semua proses pendataan tersebut dibuatkan laporan � laporan yaitu laporan siswa, laporan guru, laporan kelas, laporan kurikulum dan laporan pembayaran BP3 yang dalam pembuatannya masih menggunakan microsoft excel dan microsoft word. Pengembangan sistem dan pemakaian microsoft excel dan microsoft word perlu ditingkatkan kearah komputerisasi sistem yang lebih baik yaitu dengan menggunakan bahasa pemrograman visual basic yang memiliki kemudahan dalam membuat relasi dengan database dan suatu database management system (DBMS) yang memiliki fleksibilitas dan keamanan yang baik.

Download Code
Password : bismillah


Suni

Trying out 5.0.1 and 5.0.2

0 komentar
So far web client was not been very stable and we have been using 5.0.1 and gtk client , we have tried to bring OpenERP to roadshow and has many inquiries , one of the most interesting inquires was someone is a CPA , Certified Public Accountant and came and challenge the ERP's accounting concept and he wanted to look at how OpenERP handle Perpecture account vs Periodic account , we had no idea of what he wanted but we believed that OpenERP can do it and after roadshow we did our R&D and fingure out how!

So far we are trying to integrate a windows based report engine using python so that we can have more options other than ReportLab / original rml/sxw pdf report generator. We had some page count and number of line printing control issues...

Hope to get it done by next week...
Suni

Job Scheduling Tool for SQL Server Express and MSDE

0 komentar
Artikel sebelum puasa.... J

Pasti yang menggunakan SQL server Express dan MSDE akan bergembira bila mendengar kabar ini. Karena dengan menggunakan Tool ini maka untuk backup database secara berkala bisa di lakukan.

Seperti yang kita ketahui bahwa pada SQL server Express dan MSDE tidak memiliki fasilitas untuk backup secara berkala. Jadi untuk melakukan backup database dilakukan secara manual. Wah sangat membosankan sekali jika seperti ini..

Tapi itu semua tidak perlu dikhawatirkan karena dengan menggunakan Tool free seperti SQL Scheduler kita dapat melakukan backup database secara berkala.

Kelebihan dari Tool ini adalah :

  1. Supports all versions of SQL Server 2000 and 2005
  2. Supports unlimited SQL Server instances
  3. Supports unlimited number of jobs.
  4. Runs as Windows Service
  5. Sends email notifications on job success and failure

Untuk memulai nya donwload terlebih dahulu program SQLScheduler.

Setelah itu, buat sebuah folder dan �Extract� zip file yang di download kedalam folder yang baru dibuat.

Didalam folder yang baru dibuat akan terdapat 2 buah folder dan 1 file doc (help file).

Double click folder �Service�, dan didalam folder service terdapat file dengan nama �installservice.bat� dan double click file ini. File ini berguna untuk menginstall SQL Scheduler Service.

Note : Login user harus Administrator.

Lalu pada folder �SQLScheduler�, double click file SQLScheduler.exe, pada GUI ini kita akan melakukan setingan untuk backup database.

Pada jendela �SQLScheduler� klik kanan pada Server Node dan pilih �New Server�

Ketik Nama Server atau IP address dari server

Contoh : NamaServer\SQLExpress (untuk yang menggunakan SQL Express,jika SQL server 2000-MSDE ketikkan nama server nya aja..). Dan klik Save.

Lalu klik kanan pada Nama server yang baru kita buat, dan pilih New Job..

Pada Tab General Masukkan Nama dan Description Job. Masukkan username dan Password jika kita memilih �SQL Server Authentication� pada SQL Server Connection.

Click Tab Detail, Ketik Sintak SQL nya, jika tidak tau sintak nya tinggal click button �Insert Backup Template�, tinggal ganti parameter pada sintaks SQL nya..

Untuk melakukan penyetingan waktu backup click Tab Schedule.

Lalu Save Form New Job. Dengan menggunakan ini kita bisa melakukan beberapa kali backup untuk 1 database pada hari yang sama.

OK, selamat mencoba..

Wassalam �

Suni

How to assign shortcut key to any application in windows 7

0 komentar

How to assign shortcut key to any application in windows 7

Earlier I wrote about making a shortcut for XP and other Windows version that you can get here. In windows 7 they gave a very good feature that is assigning a shortcut key for any application. Using this feature you can assign a shortcut key combination to any application for opening it with least effort and shortest time.

If I talk about myself I have assigned shortcut key ctrl+alt+o for outlook ctrl+alt+n for notepad and many other key combinations for multiple regular used application. Assigning key combination is as simple as using any application by mouse.

Here is short procedure for that.

1) Click on start--> all programs -->application right click on application shortcut and click on properties.


2) In properties windows you will get screen as bellow. By Default shortcut key is none

3) Click in text box of Shortcut Key or press alt+k. Now choose a shortcut key that you want for this particular application as I selected in bellow image.

4) You can choose any key combination but I would recommend you to use a combination like ctrl+alt+(first letter of that application). It will make your life easy to remember any shortcut key that you created.

5) If you want to change or remove shortcut key combination you can easily remove that from here only.

Hope it was usefull for you and you enjoyed this.

Thanks

AP

Suni

Joe Girard van Detroit

0 komentar
Kalau Muhamad Ali jago tinju dunia. siapakah jago jual
dunia? Kalau Anda belum pernah bekerja di bidang penjualan mobil, saya
tidak yakin Anda akan mengenalnya. Dia adalah Joe Girard, world-class
achiever di bidangnya. Saya ingin memperkenalkan kepada Anda sang
legendaris ini. Nama Joe Girard yang kini tercatat abadi sebagai World�s
Greatest Salesman menurut The Guinness Book of World Records. Latar
belakangnya yang miskin penuh derita membuat suksesnya lebih
bercahaya. Joe Girard adalah pahlawan wiraniaga terbesar yang bisa
disejajarkan dengan Rudy Hartono di bulu-tangkis, Karpov di catur,
atau Pele di sepakbola.

Joe Girard, yang tinggal di Detroit ini, selama 12 tahun berturut-
turut berhasil menjual puluhan ribu mobil �sendirian� dengan rata-
rata penjualan 6 kendaraan per hari. Penjualan ini ekivalen dengan
kinerja sebuah dealer mobil berukuran top di Indonesia dengan
dukungan karyawan 30-an orang.

Bulan Oktober 1992 dia datang ke Indonesia dan memukau ratusan
pendengarnya, yang membayar US$ 250.00 per orang, dalam seminar
setengah hari di Jakarta Hilton. Di sana ia menceritakan kiat-kiatnya
menjadi jago dunia.

Berikut adalah analisis saya tentang profil keberhasilan spektakuler
Joe Girard yang saya dengar dari ceramah itu, dan dilengkapi oleh
informasi dari beberapa buku tulisannya. Sekaligus saya ingin mencoba
mendeskripsikan profil seorang jago dunia secara umum.

1. Jago Dunia Memiliki Tekad Baja
Barangkali karakter Joe Girard yang paling menonjol adalah niat dan
tekadnya yang sangat kuat untuk berhasil. Anda dapat menerjemahkan
niat dan tekad ini sebagai ambisi suci, keinginan mulia, atau
kerinduan agung. Apa pun namanya, niat besar ini telah memberinya
semacam tenaga batin (inner power) yang luar biasa untuk meretas
belenggu-belenggu kegagalan dan keterbatasan, serta meraih sukses
dalam karirnya.

Untuk berhasil, apalagi sampai tingkat dunia seperti Joe Girard,
sejumlah hambatan dan rintangan seperti kemalasan, ketakutan, godaan,
keterbatasan pengetahuan, keterbatasan relasi, kurang fa-silitas,
kurang modal dan 1001 kekurangan lainnya harus diatasi.

Joe Girard sendiri tidak lulus SMP, dibesarkan di daerah kumuh oleh
seorang ayah mafia kelas teri, berkali-kali ditangkap polisi karena
mencuri dan kriminal lainnya. Latar belakangnya sungguh muram. Tetapi
tekadnya untuk berhasil lebih kuat daripada kelemahan yang
membelenggu dirinya. Hal itu pula yang memampukannya mengatasi
kelaparan, kehausan, kelelahan, tekanan, ejekan, pelecehan, salah
pengertian, bahkan tantangan dan ancaman.

2. Jago Dunia Digerakkan Oleh Visi
Joe Girard sangat fasih menuturkan apa yang dikehendakinya, seolah-
olah impiannya tersebut sudah ada, sudah terlihat, sudah nyata.
Kemampuannya menyentuh ikhwal imajiner ini bahkan sudah sampai ke
tahap emosional, artinya emosinya sudah mampu merangsang kehendaknya
atas hasil masa depan yang dirindukannya. Inilah yang secara praktis
saya sebut dengan visi atau sasaran agung, yakni kemampuan melihat
dan merasakan sesuatu pada ruang masa depan.

Apa manfaat praktis dari sebuah visi? Manfaat terbesar adalah
menyediakan arah, tuntunan, dan gairah hidup bagi sang visioner.
Dengan demikian, upaya dan kegiatannya menjadi efektif dan sekaligus
juga efisien. Di pihak lain, orang yang tidak punya visi gampang
teralihkan dan kemudian terombang-ambingkan. Ia tidak tahu apa yang
dikehendakinya. Kadang, meskipun tahu, tetapi tidak sejelas kristal,
dengan akibat tidak punya daya, powerless.

3. Jago Dunia Tekun dan Tabah
Ketekunan dan ketabahan adalah kemampuan menyelesaikan suatu
pekerjaan sampai tuntas, selesai dan berhasil, apa pun halangannya.
Lawan sifat ini adalah gampang menunda. Orang yang tidak tekun mudah
menyerah pada godaan sesaat �menyimpang dari rel visi� yang umumnya
dapat digolongkan pada tiga kategori: nafsu mata, nafsu perut, dan
nafsu libido.

Meskipun pemenuhan nafsu-nafsu di atas tidak salah, bahkan esensial
bagi eksistensi kehidupan kita, tetapi pemenuhan berlebihan
(indulgency) tidaklah menyehatkan pada tingkat psikologis. Pada taraf
tertentu, nafsu-nafsu itu perlu didisiplinkan dan ditahan. Secara
umum inilah tujuan paling praktis dari tradisi ber-puasa, berpantang,
bertarak, atau mutih.

Bertekun mengerjakan sesuatu memerlukan pengorbanan, dalam bentuknya
yang khusus, menolak pemenuhan ketiga nafsu di atas untuk sementara,
sampai tugas itu tuntas selesai. Menunda sebuah pekerjaan penting
demi acara tinju di TV misalnya, adalah contoh ketidaktekunan. Cita-
cita menjadi jago dunia pun tinggal ilusi.

Joe Girard memahami arti ketekunan ini. Dia melakoninya hingga
tuntas. Kisahnya memelihara ribuan file pelanggan dan mengirimkan
kepada masing-masing satu kartu khusus setiap bulan adalah salah satu
contoh ketekunannya. Menurut Joe Girard, tidak ada pelanggannya yang
berhenti membeli mobil darinya, kecuali mereka pindah dari Amerika
atau meninggal dunia. Juga, kisah bagaimana ia menelepon pelanggan
sehari penuh sampai malam, memenangkan penjualan yang sangat
dibutuhkannya ada-lah contoh ketabahannya. Dan ketekunan dan
ketabahannya membuahkan hasil.

4. Jago Dunia Selalu Berpikir Positif
Mental positif adalah sikap dasar dalam mendekati segala sesuatu
dengan positif. Sikap positif berakar pada sejumlah keyakinan yang
juga positif seperti: bekerja itu sehat; kejujuran adalah modal
dasar; tanpa komitmen tiada sukses; apa pun yang terjadi selalu ada
manfaatnya; kerjasama adalah kunci sukses; tahan menderita adalah
sehat; hari esok tak sama dengan hari kemarin; selalu ada cara yang
lebih baik dari cara sekarang; melayani berarti memimpin; memaafkan
itu menyehatkan jiwa; dan 1001 keyakin-an positif lainnya.

Joe Girard digelari sebagai The Positive Thinker No. 1 oleh Norman
Vincent Peale, pengarang buku laris sepanjang zaman The Power of
Positive Thinking. Dan gelar ini memang betul. Jika kita membaca buku
Joe Girard, maka semangat yang paling menonjol adalah pikiran
positif. Ia bahkan mampu mentransformasikan residu pengalaman
negatifnya dari masa lampau menjadi tenaga pendorong positif bagi
hidupnya di masa kini. Misalnya gelar sebagai �anak tidak becus� yang
diberikan ayahnya sambil memukuli dirinya ketika ia masih SD �yang
membekaskan luka dalam di hatinya� menjadi pemecut semangatnya untuk
membuktikan sebaliknya. Tiap kali ada tendensi ia membelok dari cita-
citanya, diingatkannya dirinya bahwa �anak tidak becus� akan menjadi
kenyataan.

5. Jago Dunia Selalu Bersemangat dan Antusias
Barangsiapa pernah melihat Joe Girard berbicara, maka dia pasti
setuju bahwa antusiasme superior adalah ciri khas tokoh kita ini. Ia
berlari, melompat, dan berteriak di panggung seminar. Suaranya
melengking, bergetar, atau membahana di mana perlu. Lain kali
suaranya mengecil dan berbisik sambil menangis. Ia berbicara dengan
hati dan emosinya. Baginya panggung seminar adalah panggung teater.
Ia bukan tipe seminaris yang membaca makalah dengan kering dan
membosankan.

Akan tetapi, di luar panggung pun, Joe Girard sungguh-sungguh
antusias. Ia menyapa orang-orang dengan hangat dan bersemangat. Bila
kita berbicara dengannya daya magnetik pribadinya sungguh-sungguh
memikat dan memukau. Kita merasa disemangati, diisi baterainya dan
dikuatkan. Tidak heran, calon-calon pembeli mobilnya begitu terpikat
dan membeli mobilnya dengan senang. Bahkan dikisahkannya, seorang
wartawan yang semula cuma berniat mewawancarainya, akhirnya membeli
mobil usai acara karena the power of enthusiasm ini.

6. Jago Dunia Pandai Dalam Relasi Antarmanusia
Bisnis berarti hubungan dengan banyak orang. Semakin maju bisnis
kita, semakin banyak kita harus berhubungan dengan orang lain. Konon
BCA dengan tabungan TAHAPAN yang terkenal itu saja harus melayani
sekitar 20 juta nasabah. Suatu jumlah yang lebih besar dari penduduk
Malaysia. Berarti BCA harus membina hubungan dengan nasabah sebanyak
itu. Dapat ditebak bahwa salah satu sukses BCA adalah kemampuan
mereka menangani manusia. Sebaliknya dapat dipastikan, problem nomor
satu pun adalah people relations juga.

Joe Girard menjual secara pribadi sekitar 1.500 mobil per tahun,
berarti ia harus menjumpai lebih banyak lagi calon pembeli. Sesudah
itu pelanggannya dipelihara melalui surat, telepon atau undangan
khusus. Hasilnya 80% penjualannya adalah repeat order, yaitu
penjualan berulang. Sulit dibayangkan bagaimana Joe Girard bisa
sukses tanpa human relations yang canggih.

Dari percakapan dengan Joe Girard, mendengar ceramahnya, dan membaca
bukunya, saya simpulkan bahwa prinsip utama human relations yang
diterapkannya adalah �menyukai orang lain secara sungguh-sungguh.�
Dalam bahasa lain dia berkata: to love my customers honestly,
genuinely, sincerely.

Motto Joe Girard: I Like You dengan logo apel merah, telah menjadi
identitas pribadinya. Ia mengucapkannnya, menerapkannya,
menghayatinya dan mengkristalkannya dalam bentuk lambang dan suvenir.
Tak heran Tom Peters memujinya dalam In Search of Excellence sampai
dua halaman. �Joe Girard seems to care genuinely,� komentar Tom
Peters mengakhiri analisisnya.

7. Jago Dunia Kreatif Otaknya
Menjadi jago dunia adalah dambaan banyak orang. Kita punya energi,
semangat, antusiasme, keterampilan, dan percaya diri. Itu baik dan
itu sangat perlu. Tetapi tanpa strategi dan taktik yang tepat semua
itu kurang berguna. Fakultas yang membimbing kualitas-kualitas di
atas menjadi jago dunia ialah kecerdasan.

Perpustakaan saya berisi lebih dari 3 lusin literatur kewiraniagaan,
tetapi jarang buku-buku tersebut menawarkan ide dan konsep baru. Buku-
buku Joe Girard (3 buah banyaknya) boleh dikatakan mengandung 85%
konsep-konsep standar kewiraniagaan dan 15% ide-ide baru.

Nah, di sini cerdasnya Joe Girard yang tidak lulus SMP itu. Dua di
antara ide-ide baru tersebut yang sangat orisinil adalah Hukum Girard
250 dan Sistem mailing 12 bulan.

Hukum Girard 250 berkata bahwa setiap wiraniaga mempunyai pelanggan
alamiah sebanyak 250 orang. Menurut Girard, dari temuannya di kantor
Dinas Pemakaman, rata-rata orang mati dilayat oleh 250 orang. Girard
menafsirkan, terdapat 250 orang yang sangat dekat secara emosional
dengan almarhum, sehingga sampai bersedia meluangkan waktu ke rumah
duka dan ke pemakaman. Nah, fenomena alamiah ini, membuat Girard
berpikir bahwa terdapat 250 orang juga yang karena kedekatan
emosionalnya, bersedia �berkorban� untuk seorang wiraniaga, mulai
dari diganggu telepon, didatangi, dijelasi brosur, dan akhirnya
membeli.

Maka Girard menetapkan bahwa sebagai langkah awal, dia harus bisa
mengumpulkan 250 orang prospek untuk dilayani, dipelihara, dan
dijuali. Dengan modal pelanggan sebanyak 250 orang ini, ekspansi
pelanggan selanjutnya menjadi mudah.

Sistem mailing 12 bulan adalah sistem pelayanan pelanggan dimana
semua pelanggannya �tanpa kecuali� pasti menerima 12 buah surat
dalam setahun dari Joe Girard sendiri. Yang menarik adalah bahwa
setiap bulan amplopnya berbeda baik warna maupun ukurannya. Bukan
cuma itu, ucapannya pun berbeda. Mulai dari Selamat Tahun Baru
(Januari), Selamat Hari Valentine (Februari), sampai Selamat Natal
(Desember). Dan salah satunya tentu: Selamat Ulang Tahun dari Joe
Girard. Konon surat bulanan Joe Girard selalu ditunggu-tunggu oleh
puluhan ribu pelanggannya.

8. Jago Dunia Menjunjung Tinggi Kejujuran
Joe Girard menyediakan satu pasal penuh dalam bukunya untuk membahas
aplikasi kejujuran dalam bisnis di bawah judul Honesty Is the Best
Policy. Barangsiapa beranggapan kejujuran tidak berguna dalam bisnis,
saya anjurkan membaca pasal ini.

Tesis Joe Girard adalah: kejujuran adalah landasan kepercayaan;
kepercayaan adalah basis hubungan baik; dan hubungan baik adalah
medium hubungan bisnis yang langgeng. �Jadi, jika ingin berbisnis
dengan langgeng, jujurlah kepada para pelanggan. Mereka akan respek,
percaya dan datang kembali,� tegas Joe Girard.

Memang terasa absurd berusaha melayani pelanggan agar terjadi
customer satisfaction, tetapi kemudian membohongi mereka. Ini ibarat
menuang nila semangkok ke dalam belanga susu yang kita jual. Bukan
laba yang kita peroleh melainkan mara.

9. Jago Dunia Jago Berkomunikasi
Temu muka dengan Joe Girard adalah pertemuan yang penuh semangat.
Tidak ada kepasifan. Ia senantiasa aktif: bertanya, menyapa, memuji,
mensugesti atau mendengar. Akibatnya kita ikut terbawa aktif. Ia
tidak hanya menggunakan mulutnya tetapi juga tubuh, mata, tangan dan
senyumnya. Pokoknya ia adalah seorang yang aktif-positif-dinamis
dalam berkomunikasi.

Dalam proses komunikasi ini, ia menghilangkan jarak dan rasa takut
antarmanusia. Sebaliknya tercipta suasana enak, segar dan
menyenangkan yang membuat kita menerima dia, menyenangi dia, meyakini
apa katanya, dan tentu akhirnya membeli mobilnya. Ia pandai sekali
mengkomunikasikan isi hatinya dan isi kepalanya dengan positif,
sehingga residu emosi negatif kita hilang digantikan dengan yang
positif.

10. Jago Dunia Selalu Bersikap Konsisten
Semua orang setuju bahwa pelaku bisnis itu harus ramah, baik,
melayani, menolong, memberi perhatian, menghormati dan berusaha
memuaskan pelanggannya. Namun, kata Tom Peters, �Kebanyakan kita
tidak sungguh-sungguh menerapkannya. Hanya mereka yang excellent �
jago dunia� yang menerapkannya secara sungguh-sungguh, tuntas, dan
konsisten.�

Joe Girard menerapkan kiatnya, ilmu dan falsafah bisnisnya dengan
konsisten. Hasilnya adalah kemajuan dan pertumbuhan. Jika akhirnya ia
terkenal ke seluruh dunia, kaya dan populer, hal itu merupakan buah
yang wajar dari konsistensi perilakunya. Konsistensi adalah akar
keberhasilan sejati.

Merenungkan kisah Joe Girard, kita dapat menarik sebuah kesimpulan:
bahwa menjadi world-class achiever tidaklah mudah. Tanpa kemampuan
dan keahlian, khususnya tanpa motivasi superior dan stamina ekstra,
seseorang tidak mungkin menjadi achiever besar. Maka pertanyaan
penting adalah, dari manakah sang achiever memperoleh motivasinya
sehingga ia dapat bertahan dalam arena kompetitif itu?

Pasti tidak dari sekadar uang saja meskipun dunia para achiever
berkelimpahan dengan uang. Lagipula sudah diketahui bahwa motivasi
uang selalu berbentuk kurva lonceng (bell shaped curve), maksudnya
uang memang memotivasi orang, tetapi sesudah uang tersebut diperoleh,
tingkat motivasinya akan turun dan melandai; mendaki mencapai puncak
kurva lonceng lalu menurun menuju dasar kurva.

Studi saya menyimpulkan bahwa motivasi ekstra seorang achiever
ternyata selalu berasal dari ruang moral-spiritual. Dari ruang inilah
dapat digali pelbagai macam motivasi super, seperti demi negara, demi
bangsa, demi kekasih hati, demi keindahan, demi perdamaian, demi
demokrasi, demi kemajuan peradaban, demi nama keluarga, demi
pengembangan diri menuju puncak kesem-purnaan, dan sebagainya.

Intinya, motivasi agung ini berasalah dari sebuah falsafah yang ideal
dan keyakinan kuat bahwa pencapaian itu adalah baik, benar, dan
mulia. Motivasi super inilah yang mampu mendukung stamina jangka
panjang, terbangkitkan oleh energi psiko-emosional, seperti kekuatan
kekuatan cinta, kekuatan harapan, dan kekuatan impian.

Dalam dunia modern dimana kompetisi antarmanusia, antar-organisasi,
dan antarbangsa telah menjadi norma, maka high achievement di segala
bidang menjadi tiket masuk ke arena pertandingan. Tanpa itu kita cuma
jadi penonton. Dan sebagai penonton, kita harus selalu membayar. Dan
hebatnya, tidak ada calo yang menjual catutan. Artinya setiap orang
harus mengambil tanggung jawab untuk mengembangkan dirinya. Sejalan
dengan itu, setiap perusahaan, setiap partai politik, setiap negara
atau organisasi apa pun harus mengambil tanggung jawab serupa.

Sumber: Joe Girard van Detroit oleh Jansen H Sinamo, Direktur Jansen
Sinamo WorkEthos Training Center. Dari milis resonansi



Suni

Tawk.to