Saturday, February 13, 2010

Seperating C++ template declaration and implementation

The following question was the inspiration for this short article:"Splitting a template and class into definition and declaration.". In this question the asker asks, "I have the code below, which is all well and good but I'd like to move the definition of the setListener method to the cpp file, yet I seem to be having difficulty doing this as I get complaints about the template needing arguments?".

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
template
class CEventRaiser{
public:
typedef void (TEventHandlerClass::*TEventHandlerMethod)();
void setListener(TEventHandlerClass *aEventHandlerClass, TEventHandlerMethod aEventHandlerMethod){
eventHandlerClass=aEventHandlerClass;
eventHandlerMethod=aEventHandlerMethod;
}
};


It's a fair question but, unfortunately, the answer isn't straightforward. Let's see if we can unravel this mystery.

Before we go any further, I should point out this article is not targeted at someone who knows nothing about C++ templates, compilers or linkers. You need to have at least a basic understanding of these three topics otherwise what follows is likely to make little sense. Since these are all outside the scope of this article I leave it up to the reader to do their own research. At the very least, this article assumes you have at least a basic understanding of C++ templates. If not please refer to the following tutorials:

CPlusPlus.com:
http://www.cplusplus.com/doc/tutorial/templates/

C++ FAQ Lite
http://www.parashift.com/c++-faq-lite/templates.html

One of the things that often confuses an inexperienced C++ programmer, when first using templates, is why they can't put the declarations in the header file and the implementation in the .cpp file, just like they can with normal function or class definitions.

When C++ programs are compiled they are normally made up of a number of .cpp files with additional code included via header files. The generic term for a .cpp file and all of the headers it includes is "translation unit". Roughly speaking, a compiler translates the translation unit directly into an object file, hence the term translation unit.

Once all the translation units have been turned into object files it is the job of the linker to join all these object files together into one executable (or dynamic library). Part of the linking process is to resolve all symbols to ensure, for example, that if an object file requires a function, that it is available in one of the object files being linked and that it doesn't exist more than once (it should only be defined by one object file). If a symbol can't be resolved by the linker a linking error will result. Up until the point of linking each translation unit and resultant object file are completely agnostic, knowing nothing about each other.

So what does this have to do with templates? Well to answer this we need to know how the template instantiation process works.. It turns out that templates are parsed, not once, but twice. This process is explicitly defined in the C++ standard and although some compilers do ignore this, they are, in effect, non-compliant and may behave differently to what this article describes. This article describes how template instantiation works according to the current C++03 standard. Let's take a look at what each of these passes does:


1. Point of Declaration (PoD)

During the first parse, called the Point of Declaration, the template compiler checks the syntax of the template but does not consider the dependent types (the template parameters that form the templates types within the template). It is like checking the grammar of a paragraph without checking the meaning of the words (the semantics). Gramatically the paragraph can be correct but the arrangement of words may have no useful meaning. During the grammar checking phase we don't care about the meaning of the words only that the paragraph is syntactically correct.

So consider the following template code...

1:
2:
3:
4:
5:
6:
template 
void foo(T const & t)
{
t.bar();
}


This is syntactically sound; however, at this point we have no idea what type the dependent type T is so we just assume that in all cases of T it is correct to call member bar() on it. Of course, if type T doesn't have this member then we have a problem but until we know what type T is we don't know if there is a problem so this code is ok for the 1st pass.

2. Point of instantiation (PoI)

This is the point where we actually define a concrete type of our template. So consider these 2 concrete instantiations of the template defined above...

1:
2:
3:
foo(1); // this will fail the 2nd pass because an int (1 is an int) does not have a member function called bar()
foo(b); // Assuming b has a member function called bar this instantiation is fine


NB. it is perfectly legal to define a template that won't be corrected under all circumstances of instantiation. Since code for a template is not generated unless it is instantiated the compiler will not complain unless you try to instantiate it.

Now both the syntax and the semantics of the template are checked against the known dependent type to make sure that the generated code will be be correct. To do this the compiler must be able to see the full definition of the template. If the definition of the template is defined in a different translation unit from where it is being instantiated the compiler has no way to perform this check, so the template will not be instantiated. Remember that each translation unit is agnostic; the compiler can only see and process one at a time. Now, if the template is only used in one translation unit and the templated is defined in that translation unit this is not a problem. Of course, the whole point of a template is that it is generic code so there is a very good chance it will be used in more than one place.

So, let's recap where we are so far. If the template definition is in translation unit A and you try to instantiate it in translation unit B the template compiler will not be able to instantiate the template because it can't see the full definition so it will result in linker errors (undefined symbols). If everything is in one place then it will work. but it is not a good way to write templates. Sooner or later you'll probably end up using the template in other translation units because it is highly unlikely (although not improbable) that you'd go to all the effort of creating a generic template class/function that you'll only ever use in one place.

So how do we structure our code so that the compiler can see the definition of the template in all translation units where it is instantiated? The solution is really quite simple, put the templates definition somewhere that is visible to all PoIs and that is, of course, in a header. The header file can be included in both translation unit A and translation unit B so it will be completely visible to the template compiler in both.

It's interesting to note that the C++ standard does define the "export" keyword to try and resolve this issue. The idea is that you prefix the declaration of the template with the export keyword, which will tell the template parser to remember the definition for later reuse. It was introduced as a last minute addition to the standard and has yet to be adopted by any main stream compiler.

From a style point of view, if you want to preserve demarcation between declaration and definition with template classes you can still separate the class body and the member functions all in the same header.

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
// First class declaration
template
struct CTimer
{
void foo();
}

// Followed by function definitions
template < typename T>
void CTimer ::foo()
{
}


On the rare occasion that your template class/function is only going to be used in one translation unit then the declaration and definition should go in there together in an unnamed namespace. This will prevent you, later, from trying to use the template somewhere else and scratching your head trying to figure out why you have linker errors about unresolved symbols Putting the template fully in the translation unit means it won't even compile if you try to reference it and the reason for that will be far more obvious.

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
// My .cpp with a template I never plan to use elsewhere
namespace
{
template
struct LocalUseOnly
{
void foo();
}

template < typename T>
void LocalUseOnly::foo()
{
}
}


Now, as usual with C++, things are not as straight forward as they could be because there is an exception to this rule about putting template code in headers. The exception is specializations. Since specializations, unlike templates themselves, are concrete entities (not templates that describe to the compiler how to instantiate a concrete entity implicitly) they have associated linker symbols so they must go into the .cpp file (or be explicitly declared inline) otherwise they'll breech the "One Definition Rule". Also, specializations of template class member functions must be outside the class, they cannot be implicitly inline within the class body. Unfortunately, Visual Studio doesn't enforce this... it is wrong, the C++03 standard clearly states they must go outside the body.

As a final note, there are other ways this issue of template declaration/definition seperation can be resolved (such as putting the template definition in a .cpp file, that you then include when needed); however, none of these are as simple or straightforward as just leaving the code definition in the header, which is the generally accepted best practice.

I hope this article has helped demystify why templates are generally defined in header files, contrary to normal good coding practice.

For more on C++ templates I recommend the C++ Templates FAQ

Single Database or Multiple Databases [x] Community Pick Community Pick is worth 500 points, assigned to Articles that earned 10 net helpful votes, and/or deemed helpful by a Page Editor.

One database for all clients or One Single database for each client

In today's IT Situation, many firms large or small have difficult in making decisions either to use single database for all the clients or one database for each client.  Since both have their own pros and cons, it is tricky when some factors like licensing, hardware, hosting costs involve.  The advantages and disadvantages of both options are listed below.

The word "Client" could easily be interchanged with Customer, though, it can also mean individual work stations in a large development environment such as a software house. Whilst some of the pros and cons equally apply to both situations, the intention here is in reference to individual Customers.

Advantages of Single Database for each client

  • Performance is expected to be better with own databases. And it would be easier to move a customer that uses the system a lot to a separate set of servers. It is also fault tolerant, since only their own data exist in the database.
  • If the client needs direct access to all their data;  in such an application it is obvious that each client needs to have their own database.
  • For rapid development, using single database per customer is advisable. So it will be easy for the administrator to backup, restore, or delete a customer's data. So whenever the existing customer's subscription is expired, the database can be backed up and moved to the separate location.
  • If the business plan is to have lots of small customers but with huge volumes of data, then single DB for each client is advisable.
  • Clients typically feel safer with data isolation (at least they would probably not feel secure knowing their data is "side by side" with other companies' data )
  • Single database can be easily Administered and Managed
  • In terms of security, single database for each client is highly secured
  • Single database can be Quickly implemented and Performance is rather good
  • It is very easy to build new modules and add new features. No need to wonder, where to fetch data.
  • Easy to operate - it's either working or not. It's actually Mark Twain's Dumbhead Walton principle: "Put all eggs in same basket and then be extremely careful".
  • Single database have Higher resistance against data crashes
  • In Single database each and every application remains unique or at least not dependent on others.
  • If one application crashes, then database of other applications will not be impacted.
  • Multiple databases are necessary if the site/application needs to be highly scalable (e.g. internet scale). For example, host each database on a different physical server
  • If we think that an application might grow so much in little time. it is better to use different database for each client.


Disadvantages of Single database for each client

  • Maintaining multiple databases is difficult. For example if we want to modify a table then we should do changes in all databases.
  • Backup of data is not easy. We should do a separate backup for each database
  • should pay for each database space for some providers


Advantages of Single Database for all clients

  • Less Cost
  • Grouping of data into multiple databases each with a significantly fewer number of tables.
  • It is easier to maintain only one database instead of several. It is also a bit easier to collect statistics about the usage of the application if the database is shared. Administrator application is easier to develop as well
  • In terms of flexibility, it's much simpler to use a single database with a single copy of the tables.
  • It's easier to add new features
  • It's easier to manage.


Disadvantages of Single Database for all clients

  • If any Maintenance activity or Database is lost, then all applications will have difficulties to run
  • A single database would most likely have a single set of servers, meaning one location. Connecting to those servers becomes slower based on numerous factors. The network needs to be robust and fast. The number of users could slow down a system that isn't scaled correctly.
  • We can't take the database offline or down since all applications are running.
  • If we want to do a backup and restore the database and give it to a set of clients running a single application, it will contain all client database information which is unnecessary
  • Running into security threats and vulnerability is high
  • Any query referencing this type of database will have performance impact
  • More space is needed for overhead required to create a database and backing up a database
  • With multiple customers in a single database, every SQL query is going to need to ensure that the data for the correct customer is chosen. That means that the SQL is going to be harder to write, and read, and the DBMS is going to have to work harder on processing the data, and indexes will be bigger
  • Running accounting systems for different companies will not be acceptable, since no client will entertain this
  • Application development is Harder. We need to keep track of every customer records.
  • Less fault tolerant.
  • Harder to move a customer to a separate set of servers if one customer is using much of the server resources
  • For better performance we should ensure proper indexes and keys are used.
  • Its harder to remove non existing clients records


Conclusion There are situations where either model might be preferable to match your requirements. However, you do need to consider all the pros and cons, which may include some / all / more of the above list, and make an informed and calculated decision. I hope this helps you in making some of those decisions.

Windows Drivers

Find out what hardware you have and get the most up to date drivers from the manufacturer!

Automatically Get Your Drivers
There is a number of great programs that will detect your hardware and find drivers for you automatically!
Here is a link to a pair of great driver detecting programs:

1. http://www.zhangduo.com/unknowndeviceidentifier.html
2. http://halfdone.com/ukd/

You can take this information to the website http://www.pcidatabase.com and find the specific device information for the drivers, then go to the manufacturer website and see if they make drivers for your OS, some hardware is OS specific and the manufacturer may not have driver support for your OS.

*Once you are in the Vendor and are searching for the Device you can hold CTRL and press 'F'.
-This is the Find feature, type in the Device ID and it will find it much quicker, since some pages are quite long.

Manually Get Your Drivers
1. Right Click on My Computer, Left click on Manage.
2. Click on Device Manager, you should notice on the right hand side icons with a yellow symbol next to them, this shows the device is unknown, or drivers are not installed. (assuming you are looking for drivers you do not have)
3. Right click a device you are looking for, left click on properties.
4. Click on the Details tab on the top of the menu that popped up.
5. You should see some code in the middle that looks similar to this:
           "PCI\VEN_14E4&DEV_169C&SUB
SYS_308&"
The important pieces are:
  VEN_14E4    is    Vendor 14E4
  DEV_169C    is    Device 169C    for     Vendor    14E4

You can take this information to the website http://www.pcidatabase.com and find the specific device information for the drivers, then go to the manufacturer website and see if they make drivers for your OS, some hardware is OS specific and the manufacturer may not have driver support for your OS.

*Once you are in the Vendor and are searching for the Device you can hold CTRL and press 'F'.
-This is the Find feature, type in the Device ID and it will find it much quicker, since some pages are quite long.

*Be careful in using different drivers as the can cause system instability and/or damage. However - if you believe you are capable, are sure it will work, or have no other options and just don't care you can try...
A similar version of the driver.
(Example) You have Windows 7 64-bit, but the manufacturer does not have drivers for Windows 7 - you can try Vista 64-bit)
When doing this you should stick with similar technologies. If you run a 32-bit OS stay with 32-bit drivers, same with 64-bit. If you are unsure of what you are running: Right Click on My Computer, on the page that opens up it should mention what version and service pack of Windows you are running. If you are running a 64-bit version of Windows it will say so. If it does not say anything pertaining to 32-bit or 64-bit, then you are most likely running 32-bit.

Windows Task Manager - Memory Performance Explained

Hello All,

This one should come in pretty handy while dealing with day to day issues with the very famous Windows Box . Almost 3 out of 10 calls you hear is about memory utilization in most of the cases (a rough estimate based on the experience till date). So what is all this fuss about Memory  management and troubleshooting. The word troubleshooting is just an catalyst to this article since its going to be an altogether different ball game.

So let's begin with exploring "that" specific tool which almost most of us are aware of and tend to fetch the very first thing when we want to analyze the memory issues on a windows system. You are right, am talking about our very own "Windows Task Manager". Some might ask what's the big deal about "Task Manager"? Yes exactly, but how many of us really know what those specified numbers actually mean?

Below is a brief explanation of the fields that's shown in the "Performance" tab of Windows Task manager.

CPU Usage - This is pretty obvious, it indicates the percentage of processor cycles that are not idle at the moment.

PF Usage - Indicates the percentage of the paging file that is currently being used. This value is sort of misleading, it actually shows the amount of physical memory/page file space being used by your system. Synchronous to Total under Commit Charge (K).

CPU Usage History - Just a graph which indicates how busy the process has been recently, the number of graphs correspond to the number of cores your processor has.

Page File Usage History - Same as CPU Usage History just for your page file usage since Task Manager has been opened.

That was about the "Graphs" displayed in the "Performance" tab  of WTM. Now let's look at the fields arranged in the different zones in WTM. The attached file summarizes the same. The ones marked in red are of more importance.



After all the brief up above, you might wonder so what to do with all these figures? So here is a small checklist that you could follow while dealing with system memory issues.

* If the "Commit Charge - Total" value regularly exceeds the "Physical Memory - Total" value, your system has to rely more frequently on the much slower page file (virtual memory). It's time to add more physical memory.

* If the "Commit Charge - Total" value is near the "Commit Charge - Limit" value then, not only did you use up all your physical memory but also you used up all your virtual memory. Your computer is at its knees begging for mercy.

* If your "Commit Charge - Peak" value is near the "Commit Charge - Limit" value then you are completely maxing out at one point or another during your computer being turned on. Your computer is at its knees begging for mercy once in a while for a few seconds again.

* If your "Commit Charge - Peak" value comes close to or exceeds the "Physical Memory - Total" value, your computer had to access virtual memory once or twice. Performance might not be affected, but you are at the upper limit of using all your memory.

* More than 50% of the core operating system components and drivers can be swapped out from physical memory to the page file, moving such portions of the OS can significantly yield a performance hit. This again indicates the advantage of using more physical memory.


The above article was indeed taken from a pretty good number of other "Performance Management" stuff on the net, but tried to collate the best of the information from them and blend it to one single piece of write up.


Happy Learning,

Rudram (^_^)

 

 
The Performance Tab of Windows Task Manager

Windows Virtual PC and XP Mode [x] Community Pick Community Pick is worth 500 points, assigned to Articles that earned 10 net helpful votes, and/or deemed helpful by a Page Editor. [x] EE Approved EE Approval is worth 4,000 points, assigned to Articles that are considered a valuable resource in the zone they're published.

If you have one of these versions of Windows 7 installed, then you can download two new free features called Windows Virtual Pc, and Virtual XP Mode:

- Windows 7 Professional
- Windows 7 Enterprise
- Windows 7 Ultimate.

Windows Virtual Pc is an updated version of a previous free Microsoft product called Virtual Pc 2007. Virtual XP Mode is a free download of a Windows XP Professional virtual machine, updated to Service Pack 3. The combination of the two products allows small or medium-sized business customers to run those XP programs that have not been made available in a Windows 7 compatible version by using a virtual machine which is a fully licensed XP Pro installation. Microsoft is adding this feature to the above Windows 7 versions as "a new optional component for the Windows 7 operating system that you can use to evaluate and migrate to Windows 7 while maintaining compatibility with applications that run on older versions of Windows."

A bonus of using both programs in your Windows 7 machine is that any programs you install in the virtual machine are automatically added to the Windows 7 Start Menu, so accessing these non-Windows-7-compatible programs in Windows 7 couldn't be easier...

The XP virtual machine that you download from Microsoft has Internet Explorer 6 built in, so if you found you had to keep using IE6 for certain purposes and turning down the Windows Update prompts for installing IE7 (or IE8), you no longer have to worry about that either. IE6 will not automatically be added to the Windows 7 Start Menu, but you can get it to do so if you copy a shortcut for it to the All Users Start Menu in the XP virtual machine.

The Windows Virtual Pc and Virtual Windows XP programs can be downloaded from Microsoft either in a 32-bit version or a 64-bit version, depending upon what your pc requires. You first install the Virtual Pc program and then install the virtual XP machine. The latter will be configured with a user name of "User", and during the setup you provide the password you want to assign the user. You will also be asked during the XP setup process to configure Automatic Updates.


The new Windows Virtual Pc, like the previous Virtual Pc 2007, allows integration between your host Windows 7 operating system and the virtual XP OS (what is called the "guest OS"), in that you can freely use your mouse to drag and drop files between the host and guest systems. And you can access a combined Windows clipboard of the host OS and the guest OS by copying and pasting between them. Unlike Virtual Pc 2007, you now get support for some USB devices like printers, external drives, flash cards and smart card readers. A new USB menu in the Windows Virtual Pc allows you redirect other USB peripherals to the virtual machine.


To get to the XP virtual machine, you can click on the new item in the Windows 7 Start Menu called Virtual Machines (under the folder All Programs -> Windows Virtual PC), which will then show you a folder with that name. Double clicking on the XP virtual machine starts it, after displaying a small window with messages about the progress: initializing virtual machine, and enabling integration features, for example. The latter process is what, among other things, allows you to move your mouse between the host machine and the guest machine for dragging and dropping of files.

 

 
Virtual Windows XP
195585

 


The menu bar of Windows Virtual PC has five items on it:

- Action menu, allowing you to View Full Screen, Sleep, Restart, or Close
- USB menu, showing you recognized USB devices
- Tools menu, allowing you to Disable Integration Features or access/modify Settings of the virtual machine
- Ctrl-Alt-Del, which is what you use to do a Ctrl-Alt-Del within the virtual machine rather than the host OS
- a little question mark icon at the end provides a Help menu.

When you click on the Close box (X) at the top right of the Windows Virtual Pc window, the default action will be to hibernate the virtual machine, but in the Settings dialog box you can change it to Shut Down or Turn Off, or to Prompt for action.

Here is a screen shot of the Windows Virtual PC Settings dialog box.
 

 
Virtual Windows XP settings
195588

 

Tuesday, February 9, 2010

Sharepoint Tips And Tricks

Web Services on SharePoint - making F5 Work

I was getting many questions on best practices to write custom web services for sharepoint, and I wanted to write an article about it for some time now. Also, I just had a chance to fiddle around with making F5 (run from visual studio into debug mode) work for a web service I am testing on a sharepoint site. This involved a few tricks, so I am documenting them:

Note - only do this on your development box!

Note - code lines marked in red means that you will need to change the values to your environment values.

I hold that the best practice is not to use the web service as a web application template (that is the default with visual studio) because when deploying to sharepoint, you'r web service usualy needs to sit in the layouts folder, and you do not want to deploy your code files there. You also don't want to use the visual studio publishing mechanism that uses the frontpage server extensions.
The alternative is creating a web service that is deployed as an asmx file to the layouts folder, pointing to a DLL that is deployed to the GAC. That makes it safe and secure, and easier to deploy and track versions.


Step 1 - Create a Web Service (DLL) Project

To create the web service, use Visual Studio 2005, and click "File-New-Project" and select ASP.NET Web Service Application.



If you don't have that project type installed, you may need to change the installed features of Visual Studio on your machine. The good think about this project type is that it creates a web service as a DLL and an asmx and not as a web site.



After the project is created, change the file names, namespace and assembly names as needed (make sure the namespace of the webservice attribute is changed - you don't want "http://tempuri.org/" as your namespace...) and most importantly - sign the assembly as strong name (right click the project, properties, signing tab, sign the assembly).




Now we have to find out the key that was given to the assembly when it was signed. To do that you must first build the web service (I use ctrl-shft-B, or right click the project and select build) and then either drag and drop the DLL to the assembly folder, right click and get the key:



Or you can run a command line from the visual studio SDK (start-programs-visual studio 2005-visual studio tools-Visual Studio 2005 Command Prompt) and type

sn -T "c:\temp\WebService1\WebService1\bin\WebService1.dll"



Once we have the public key token, we can change the web service's asmx file to use the DLL that will be deployed to the gac. Right click the service1.asmx file and choose "View Markup". You need to change the markup to point to the DLL that will be in the GAC, so this is the format you need to use:



<%@ WebService Language="C#" Class="WebService1.Service1, WebService1, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=db33ac6baa259170" %>

Expalantion:

1.


The "WebService1.Service1" part is the "namespace dot classname" of your code. To get that, you will need to open your .cs file, and copy the namespace you are using, add a dot after it, and add the class name.

2. The "WebService1" (after the comma) is the name of the DLL that you may have set in the project properties under the "application" tab (the "assembly name")

3. The public key token is the key we got earlier.





Note - I am not sure if this is needed, but I also registered my web service as a safe control in the web.config, before I used any sharepoint code. It's worth checking if this is required or not, and I will update if I have time to test.


Step 2 - Setting up the Build Events

While in the project's properties, switch to the "Build Events" tab. Paste the following in the "post-build event command line" box:


"c:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" /i "$(TargetPath)" /f

copy "$(ProjectDir)\*.asmx" "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS"

"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\bin\RecycleAppPools.vbs"

"c:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\disco" http://localhost/_layouts/service1.asmx /o:"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS"




Explanation:

1.


The first line puts the DLL in the GAC.

2.


The second line copies the web service asmx file to the layouts folder. You should make sure your projects do not create same names for asmx files, or they will overwrite eachother!

3.


The third line recycles the application pools. I am doing this with a vbs file that I have written, and placed in the 12 hive's "\bin" folder for my comfort. Here are the contents of the file:


Set locator = CreateObject("WbemScripting.SWbemLocator")

Set Service = locator.connectserver(strServer, "root/MicrosoftIISv2")

Set APCollection = Service.InstancesOf("IISApplicationPool")

For Each APInstance In APCollection

APInstance.Recycle

Next

echo "Recycle Complete."

4.


The last line build a discovery file for the web service in the layouts folder. if you installed your visual studio 2005 in a different location, you will need to change the folder path to the disco.exe file, and if you changed the name of the asmx (or if you have more than one) you will need to modify that as well. You will also want to change the url to point to a sharepoint site on your machine if you are not using the "localhost" header. In my case, I use the header "portal", so I change is to "http://portal".




Step 3- Change the F5 behavior

To change what happens when you press F5, switch to the "Web" tab, and change the start url to the url to the web service (I use http://portal/_layouts/service1.asmx), then change the "use IIS web server" and change the project url to the rool sharepoint url (I use "http://portal") and tick the "override application root URL and type the same url as the project url:





Last Step - set up your web.config to allow debugging

If you want F5 to work, and have visual studio debug the web service when you press it, the sharepoint web.config should be changed to allow debugging. To do that, you will need to open the web.config file for the virtual server you are using (in my case "http://portal" - which means the web.config is under "c:\Inetpub\wwwroot\wss\VirtualDirectories\portal80\web.config") and find the "<compilation>" tag, and set the attribute "debug" to true:




This is it!

If you didn't miss anything, you should be able now to press F5 and the web service will launch in the sharepoint context, with debugging in the visual studio! You can set breakpoints and debug the web service.









Passed another exam

Hi all,
I had passed yet another MSCTS 70-631 Windows SharePoint Services 3.0, Configuring. This completes the set, and now I have all four sharepoint exams under my belt.


I have to say that this one was the most difficult one for me, since it had many questions about topics I try not to touch - for example load balancing. I really don't understand why a sharepoint expert needs to know load balancing and what is the difference between multicast and unicast, and how you should configure the network adapters. On the other hand, some of the questions were easy for me because they had more to do with development (for example, if a custom web part gets installed and crashes with an unhandled error - what should the administrator do? The answer was easy for me, because I am a developer - but is it fair for an admin to get asked that?)


So all in all I am happy about this, and I plan to promptly forget everything I know about WSS and MOSS configuration and installation. Heck, people keep asking me questions about this - "Ishai, how do I configure forms authentication?" or "Ishai, I configured anonymous and it doesn't work" - and I am sick of it. My answer from now on will be "I don't know, but I will write you a web part to make it all better!".


Speaking of webparts, I didn't get any complaints about my enhanced content query webpart, so I am moving on and will start thinking of my next open source project. It is still in infancy, but I hope to let you know about it soon.


On an unrelated matter, I will be speaking at the Israeli SharePoint user group next month (19/9) about features and templates (hebrew web site) so if you are in Israel, come over and say hello.


While I am there, there is a Canberra user group without me, and I am still looking for presenters. I will keep you updated if you want to know who will talk. Last month we had Anthony Woodward from my company talk about sharepoint record managment compliance in general and with Australian-specific notes. It was quite interesting. If you want to present, give me a buzz (my contact form is on this blog - look for it!)









What's good and what's missing from WSS Visual Studio Extensions 1.1?


The Windows SharePoint Services 3.0 Tools: Visual Studio 2005 Extensions, Version 1.1 CTP were released, with
"Support for 'Web Solution Package' editing, List Instance item template ,List Event Handler item template,Bug fixes", so I decided to take a quick look at what's in the web part project template.


First, I liked the fact that now by default when you create a web part project you don't get the "Render" event that you used to get in the past. This caused many developers to start writing html in the Render event, and then be puzzled when the events on controls didn't work (see Server side controls and data binding in web parts in this blog).



I am still looking into it, but one thing that I would expect from a webpart project template is a wizard when creating the project that asks:


1. Do you want the web part to support connections? (add stubs for connection interface)

2. Do you want the web part to connect to a specific list? (add properties and functions to connect to a list)

3. Do you want a custom toolpane?



What do you think? what else would you want from a template?








New SDK, with a tool for BDC

Hey!

A new MOSS SDK is available, and it comes with a free tool to create BDC definitions (is this the end of MetaMan? I wonder...).
The new tool is called "Business Data Catalog Definition Editor"

MSDN already have articles on how to use the tool with web services and other systems.


Installing requires you to install SQL server 2005, so don't install on your production server (duh!), and be prepared for some drastic changes to your system when you install on your dev box.



The good news is that it can be installed on windows XP, proving that Microsoft are listening to us developers, and to our gripes about developing on a server...

I tried installing by running the MSI directly, but that didn't work (didn't install the SQL express, and the installation failed when it couldn't find SQL express).










Slides from Tech.Ed Australia 2007 - Templates and Features
Here are the slides I did in my presentation with Milan Gross (his slides are not included here, as they are his to publish):


I start we had the Tech.Ed image:




Next, our names and titles:





Some links and referances:

* http://www.microsoft.com/communities/default.mspx
*

Solution Deployment with SharePoint 2007 [MSDN]
*

SharePoint Solution Installer
Scott Hillier’s Open Source SharePoint 2007 Features
*

How to: Deploy UDFs Using Windows SharePoint Services Solutions [MSDN]









The agenda of the session (Milan covered that):





Here I spoke about the difference between templates (save as template for a list or a site) and definitions (file system xml and aspx files that allow developers and administrators have more control over the sites after deployment)




A quick explanation of how a solution package is built. For example I showed the package of the "print list" feature as it was done by Scott Hillier.



Next I discussed what are DDF files and why we need them (we need them to let makecab.exe know how to build our cab file - using folders), as well as giving some alternatives such as cabarc that allows you to build a cab file with folders in it - no need for a definition file. I also mentioned a tool I never used - WSPBuilder




Now to my part of the demo - I showed how to create a feature for a webpart and how to package it. I used my own Enhanced Content Query WebPart solution package to demonstrate this, and you can download that from codeplex!









After that Milan took over and showed a scenario that used the Solution Generator (part of the WSS extensions for Visual Studio) to create a site definition, with lists that are connected to workflows and have BDC fields and all. It was pretty complex, and I felt we needed more time to really explain it all.


And that was my first presentation. I will let you know about the second one soon.









How to remove farm administrators permissions from a site?
A friend asked me how can we remove farm administrators from having permissions on a specific site. Removing the permissions from the site collection and the site itself just did not work - the users who were farm admins could still browse the site and do whatever they want to it.

The answer was that in central admin, under "applications" there is a link: "Policy for web application" which allows you to set permissions at the web application level. It turns out that the farm admins have full permissions there for the application, and until you remove them from there, they will be able to go into any site in the web application.








Hotfix lets you store WSS data outside of SQL
If you missed this, give the following KB article a read. It is short, and to the point - a new hotfix is out that lets you store WSS data on external storage- out of SQL.

KB938499








My mark @ Tech.Ed

Ok, I am back, and boy, do I have some stories...

On the first day I had a presentation about templates and features with US consultant and trainer Milan Gross. I was not very satisfied with our presentation, and I think we should have kept the scenario simpler.
I showed how I built the wsp solution and features for the Enhanced Content Query Web Part and for the Print List feature.



My next presentation was with Gayan Peiris, who left my company to join Microsoft just a month ago. We did a presentation on upgrade and migration from sharepoint 2003 to 2007.
Now, before people start asking me how to upgrade I have to say that that was Gayan's part of the presentation. My part was warning about the customization upgrade (custom webparts, event handlers etc.), and about what is different in the new version that requires re-thinking on the information architecture.
That Session went very well, if a bit tight on time, and we got good reviews (7.62) even if we didn't get to the top ten.



After our presentation we left with all of tech.ed to Movie World, where I went, for the first time in my life, on a roller coaster - Lethal Weapon. I have been told by people with more expirience that this is the most frightening ride ever, everywhere. I can now believe it.
The only reason I was brave enough to go on the ride was that it was night - I couldn't see the ride. I was sure that a "lethal weapon" ride would be a video game with shooting in it.

Here is a picture of me on the ride:




Here is a movie of what the ride looks like:












MCTS in MOSS configuration

Well, Tech.ED Australia 2007 is over (I will post some details soon) and I am happy to let you know that I took the "Configuring Microsoft Office SharePoint Server 2007" exam (70-630) and passed! I only got 3 questions (out of 51) wrong, so I am pretty happy with myself right now.

Now I only have to do the WSS configuration exam to have the entire set!








Off to teched

So this is it - the moment I have been waiting for and the reason I didnt write anything in the last month. I am flying to the goldcoast tomorrow and will be presenting there this week. I will also be at the meet the experts dinner (as a self proclaimed expert) and at the influencer party (as an MVP).


See you there!


p.s. I released today a technical refresh to the content query web part project. more features, less bugs!








Modifying Search to Add a Send Link By Email link


My customer wanted a "send link by email" next to each search result item. "Easy", I thought and went ahead to edit the xslt for the search results. But I found out a problem with links that had spaces in them - the link in outlook would appear broken. To solve this, I had to write some simple javascript, and the process is described below.



Problem:


If you want a mailto link (href="mailto") that has in the body a link to a file, you may get a link like this:


href="mailto:body=http://server/site/library/this is my file.doc"


This is a problem, because the file name contains spaces. The email will open with a broken link in it's body:




Solution:

Luckily, SharePoint has a javascript functions that solves that for us. They are "escapeProperly" and "navigateMailToLink". What I did is create a function of my own in the page:

function SendEmailWithLink(link)
{
var link = "mailto:?body=" + escapeProperly(link);
navigateMailToLink(link);
return false;
}




And my link is:

href="#nowhere" onclick="javascript:SendEmailWithLink('');"



This article would'nt be complete if I didn't explain why I did this - this if for the search results xslt - the idea was to add a "send link by email" button next to each search result. The solution - change the xslt to include the script above, and a button like this:




javascript:SendEmailWithLink('');









We also added other actions (I will try to get them published) and came up with the following for each result item:













Search query default row limit is 50 rows


Just something that happened to us - we were wondering why all the search queries that one of our developers wrote in a web service were only returning 50 results everytime. The answer was simple - if you don't specify a RowLimit to the query object, the default is 50.


The solution is easy - set the RowLimit property to the number that you want.










Live vs Google

Every now and then someone from Microsoft asks me why I don't use Live Search as my search engine. My answer is always the same - results are awful!


In my opinion Microsoft have a lot to learn before getting us a proper search engine.

GOOGLE

First - try searching for "sharepoint australia" (without the quotes) - in google, the first results is Angus Logan's blog and the second is the APAC conference from two months ago.
The third results is my post about me presenting at teched australia.
The fourth - my user group in Canberra.

LIVE

Now do the same with Live - first result is the APAC conference, next is the site for WISDOM - where they sell sharepoint related products. Next, a broken link to a page in obs.com.au that does not exist any more - another company that works with sharepoint.
Why is it broken? Well, the link under is is also to the same site, but this time the aspx page doesnt have an underscore and it works.

As we go down in the page, we see more and more sites of vendors trying to sell you something, or microsoft's own site. Not a single blog or user group site in sight.



My conclusion - Google results are quality based, while MS results are commercially based. And until they change that - I AM NOT USING LIVE.



Note - this was triggered by an old blog post by Arpan about how he uses Live search because it is better.









Enhanced Content Query Web Part goes Beta 2!


I am proud to announce that the Enhanced Content Query Web Part is now beta 2. The new release includes a WSP deployment file that simplifies deployment - just download the file, and use STSADM to install it - no more messing around with web.config, .dwp or .webpart files, or xslt style sheets!

I even wrote a small batch file to help you install it if you are uncomfortable with the stsadm command line.


You can find the above in the project's web site: http://www.codeplex.com/ECQWP


The new version also comes with default xslt files that get installed in the style library and render the web part like a list (table format):




Now, to get to release candidate, I still need:


* Testers (must have own server)

* Technical Writers (must have own server)


Testers need not contact me - they should just go to the project web site and start entering bugs in the Issue Tracker.


Writers should contact me and I will ask them to write up the installation instructions and usage documentation.










I am presenting - Tech Ed Australia 2007.

It is official - I will be presenting two presentations in Tech Ed Australia 2007:


* OFC304 Microsoft Windows SharePoint Services and Microsoft SharePoint Portal Server 2003 Upgrade and Migration


Do you want to learn about upgrading from Windows SharePoint Services version 2 to version 3, and SharePoint Portal Server 2003 to Office SharePoint Server 2007? In this session you will learn the different upgrade options, as well as how to prepare your SharePoint deployment today for upgrade.
*

OFC402 Templates and Features: The Engine Under the SharePoint Hood - Build and Deploy Your Own!

Microsoft Windows SharePoint Services version 3.0 provides many new capabilities for extending existing sites and building new solutions. This session outlines the high-level concepts of SharePoint templates, features, and extension points; and discusses the best practices for deploying code to a SharePoint farm, including code access security and the new solution deployment capability.



I will also be available for Q&A, and am always happy to answer questions - so come meet me in Tech Ed, and let me know how you liked my presentation!











Tips on xslt dataviews by Mark Kruger!
Take a look at "Free SharePoint DataView Tips" by Mark Kruger. Useful!








Adding table headers and/or footers to a Content Query Web Part Layout


Just found this article by Mike Gehard which shows a good step by step of making a content query web part look like a grid - with column headers and all.



Mike is even using the same ddwrt trick as I am for formatting dates, and I now see that his blog seems to be dedicated to the content query web part!








I recommend you go to Mike's blog and read all about it. The method he is taking is chaning the "ContentQueryMain.xsl" file to pass the lastrow as a parameter to the "CallItemTemplate", and then in "CallItemTemplate" he passes the lastrow to the apply templates itemstyle.


In the "Itemstyle.xsl" file you add html variables for the header and the footer, and use them before the first row and after the last row.

I will try to contact Mike and ask for permission to reprint his article here for redundancy.


Mike - if you are reading this, how about you join the Enhanced Content Query Web Part project?








Using DDWRT in xslt-based web parts


What is DDWRT?
well, its a script that microsoft packaged for it's xslt dataviews, that gives them more xslt power.
I needed to use the ddwrt functions in my content query web part, but I guess that the following approach will work in the search web parts as well.


Why do we need it?

I needed it to format the date I was getting back from the content query. The format I was getting back was ugly to the user (2007-06-27 15:52:00) and I wanted to format it, but I didn't want to write my own function.


So how to use it?

you need to add to your xslt the following namespace where the namespaces are declared (at the top of the xsl file, in the "xsl:stylesheet" tag):

xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"



Then you can use the ddwrt's functions. For example, to format the date I used the following:



Note that in the FormatDate function I used 2 hard coded values - 3081 which is the LCID for Australia (so the date will be formatted to Australian date format) and 5 which specifies the what do I want to display - date, time, date and time ect. I have no idea what values give what, but I do know that 5 gives me the date and the time.








Update to ItemAdding fiasco
This is to let you know that I updated my posts about the event handlers and ItemAdding, after I did some more research and found the correct way to get and set item's properties during ItemAdding. I swear this method did not work during Beta2 when I posted my old posts, and I swear that contacts in Microsoft did tell me it was by design and not possible (I have the emails to show that).
However, it turned out that it is possible, and easy, and I posted an update and a code sample in the old posts:

Bad news - synchronous list events bug (or missing feature)

Synchronous Add List event (ItemAdding) will not give access to item properties








Great MSDN developer article - Development Tools and Techniques for Working with Code
There is a new article in MSDN which enraptured me. It is a magnificent summary of what development in sharepoint is all about, with example on how to do sample tasks.
It is in two parts, and is from my fellow MVP Patrick Tisseghem, (from U2U, Patrick is one of the authors of my favorite sharepoint developer utility - the CAML Query Builder)

Development Tools and Techniques for Working with Code in Windows SharePoint Services 3.0 (Part 1 of 2)


Development Tools and Techniques for Working with Code in Windows SharePoint Services 3.0 (Part 2 of 2)








Call for beta testers! Enhanced Content Query Web Part


This is to call beta testers. I want to kick the ECQWP project to beta2, which requires beta testers to start testing and reporting on Beta 1 (well, 1.3 actually) .

You don't need to write to me or anything - just get a free codeplex account, and use it in the ECQWP project site to add issues (bugs) to be fixed, or ask for enhancements.


Please try to be VERY clear on the problem - preferably with a step by step of what I need to do to get the error you are describing.


While I am at it, if you are a good SharePoint developer and you think you have the ability to solve the bugs, let me know, and I will add you to the project as a developer, and assign bugs for you to fix.

Please note - this is not a practice run. I do not have time to mentor beginners, so don't use this as a free training exercise. Sorry.









Adding custom fields to the Enhanced Content Quey Web Part (Beta 1.2)


I just got around to adding another important feature to the Enhanced Content Query Web Part and I uploaded it to codeplex.

I am sure you read my articles, or articles by other MVPS like Heather about showing custom columns in the content query webpart. This requires (as Heather's article shows) that you export the web part to a file, manually modify the file to add the fields you want, and import it back.

This annoyed me enough to add a property to my ECQWP that will allow you to add those fields without having to export-import.



In this version (1.2) you have two new properties in the propeties pane - Data Fields and Common View Fields. I have yet to find out how Data Fields are used, so you don't need to use that property - it is enough that you set the Common View Fields.

I will refer you to Heather's article to find out the format that the value of this property should be written in - how to get the field's internal name, and how to get the field's type. Just a quick reminder though - the value in that field is a pipe seperated value of fields, where each field is a coma seperated pair of field (internal) name and field type.
For example, a text field with internal name "Comments" will be added like so:

Comments,Text

A choice field with internal name "Client_x0020_Name" will be added like so:

Client_x0020_Name,Choice

and if we want to add both of the above fields, it will look like so:

Comments,Text|Client_x0020_Name,Choice





As always, get the web part, installation instructions and source code from codeplex. Just be sure to download the most recent version.










Enhanced Content Query Web Part upgraded to Beta 1.1

I am happy to announce that the Enhanced Content Query Web Part project has progressed to Beta 1.1, with some very important fixes to major bugs.


The web part now correctly prints out the item ID, has context menus for folders (not just documents) and supports displaying icons for documents.

Be sure to read the documentation (installation instructions) and use the new XSLT that is provided there. The old XSLT will not solve any of the bugs I fixed.










Community Kit for SharePoint 2.0 Pre-Release
You can read about it in the SharePoint team blog - there are some pre-release components from the Community Kit that are ready for download.


The downloads are:

Enhanced Blog Edition Beta 1

Enhanced Wiki Edition Alpha

ChatterBox AJAX Beta

Tag Cloud









Using Javascript to Manipulate a List Form Field


This is something I have been doing for a while (see my nested tasks project - it has been using this trick), and now Rob Howard from Microsoft published a tip on how to use javascript to manipulate a list form field.


The example of use I would like to give is my nested tasks project- we need to set a default value when a user creates a sub task. We have a web part sitting in the "newform.aspx" page, and checks the querystring the page was opened with. If the page was opened with a querystring of "parentID=", then it loads the item that is the parent, gets the values for start date and end date, and then uses javascript to set the "Parent Task", "Start Date" and "End Date" fields.

My javascript also hides the "Parent Task" field control from the user, so he will not edit it manually. This gives us a very user friendly interface.


The same trick can be used to implement some custom validation - for example not allowing the user to enter a start date before the start date of the parent.

Yahoo Placement Papers

1. Yahoo Interview questions
ô€€¹ How to call a C++ function which is compiled with C++ compiler in C code?
ô€€¹ When you deliver your C++ headers and C++ library of a class (what all can you
change in the class so that application using your class does not need to recompile
the code)
ô€€¹ How do you initialize a static member of a class with return value of some function?
ô€€¹ How can one application use same API provided by different vendors at the same
time?
ô€€¹ If you are given the name of the function at run time how will you invoke the
function?
ô€€¹ When will you use shell script/Perl ahead of C/C++?
ô€€¹ How does yahoo handles billions of requests, does it create a thread per request or
a process?
ô€€¹ How does HTTP works?
ô€€¹ How to count number of unique music titles downloaded from a log file which
contains an entry of all music title downloaded?
ô€€¹ What is the difference between COM and CORBA?
ô€€¹ What is web service?
ô€€¹ Design classes for the following problem. (C++)
A Customer Can have multiple bank accounts A Bank account can be owned by
multiple customers When customer logs in he sees list of account, on clicking on an
account he sees list of transactions.
2. YAHOO PLACEMENT SAMPLE WRITTEN PAPER
ô€€¹ In a village in each family they give birth to children till they
get a boy. IF girl child they try again. What is the ratio of boys to
girls.
ô€€¹ 2n+1 numbers in a list except for 1 num all had duplicates, how to
find duplicate in O(n)
ô€€¹ In 1000 wine bottles stack 10 are poisoned given 10 rats what is
the minimum number of tries to find the poisoned one. Rat dies once it
licks the poisoned wine.
ô€€¹ Write 1,3,6,4 using +,‐,*,/ to get 24 (no repeat of numbers)
ô€€¹ Which is the DS used in dictionary mode in mobile (t9)
ô€€¹ Which is DS used for chess program...to predict move each and every
time..
ô€€¹ There are $1070 dollars how to split them into bags such that asked
for any denomination from $1 to $1070 , u must b able to give without
opening bag
ô€€¹ First fit issues...
ô€€¹ Algorithm to partition set of numbers into two s.t. diff bw their
sum is min and they hav equal num of elements
ô€€¹ Prog: given Numerator & Denominator.... print 0.3333333333 as .(3)
0.123123 as .(123)
ô€€¹ What is the output of the following code?
x=0;y=1;
for( j=1;j<4;j++){
x=x+j;
y*=j;
}
ô€€¹ There is a 200 miles long tunnel. one train enters the tunnel at a speed of 200mph
while the other trains enter the tunnel in the opposite direction at a speed of 1000
mph. A bee travels at a speed of 1500 mph enters the tunnel goes to and back until
it reaches the train. What is the distance covered by the bee when the two train
collides (the bee survives)
ô€€¹ List the two advantages of views.
ô€€¹ Which layer is encryption and decryption done
ô€€¹ What are the various modes used to send data over the network
ô€€¹ Write a query to display the name of the students whose total marks is divisible by
25(total marks may be 175,200,150 ….)
ô€€¹ P(S1)
a++;
P(S2)
v++;
V(S2)
V(S1)
P‐wait, V‐signal, S1 and S2 are semaphores. Consider two threads running. Is there a
deadlock .If yes in which situation does the deadlock occur.
ô€€¹ How do you find the port number of the remote host?
ô€€¹ (Date; who)>logfile
Date; who>logfile
What is the difference between the two statements.
ô€€¹ How do you find the machine MAC address
ô€€¹ Write the set operators that are used for select.
ô€€¹ Write a single command to find and delete all the files that are older than 1
day(modification time)
ô€€¹ A is a 3*4 matrix and B is 4*5 matrix. What is the number of additions and
multiplications performed to obtain the resultant matrix
ô€€¹ What is the output
#!/bin/perl
kill –0 pid
ô€€¹ #!/bin/perl
echo $_
ô€€¹ #!/bin/perl
kill $$
echo “hello world”
ô€€¹ List different schema/database objects
ô€€¹ Randomization is good for which algorithm(quick sort, heap sort, selection sort,
hashed table, ….)
ô€€¹ Descride the language in the following regular expression (a*a) b+b
ô€€¹ In an I‐node what is not there (file type, file name, size, owner)
ô€€¹ If the probability of work done by three persons are 1/3, 2/5, 5/12. Then what is the
probability that the work is completed.
ô€€¹ Given Id, author, creation time, size, links, web page, description
Bring it in 2nd normal form
ô€€¹ Consider a heap containing numbers 10, 20, 30, 40, 80, 60, 70 such that numbers
are in ascending order from the leaf to the root. If 25 is to be inserted what is the
position.(A[1], A[2], A[3], A[4])
ô€€¹ #!/bin/perl
var=///
aaaa
echo ‘$var’
ô€€¹ Krishna tosses a one‐rupee coin and a rupee coin. He announces that one is head.
But the result is not announced. What is the probability that the other coin is head?
ô€€¹ In database sort the student id and the course id for each student. Which is the best
possible solution.
‐Sort the student id using a stable algorithm and then sort the course id using
unstable algorithm
‐Sort the student id using a unstable algorithm and then sort the course id using
stable algorithm
‐Sort the course id using a stable algorithm and then sort the student id using
unstable algorithm
‐Sort the course id using a unstable algorithm and then sort the student id using
unstable algorithm

Share Point Interview Questions and Answers

Sharepoint Portal Interview Questions
• what is SharePoint?
Portal Collaboration Software.
• what is the difference between SharePoint Portal Server and Windows SharePoint Services?
SharePoint Portal Server is the global portal offering features like global navigation and searching. Windows SharePoint Services is more content management based with document libraries and lists. You apply information to certain areas within your portal from Windows SharePoint Services or directly to portal areas.
• what is a document library?
A document library is where you upload your core documents. They consist of a row and column view with links to the documents. When the document is updated so is the link on your site. You can also track metadata on your documents. Metadata would consist of document properties.
• what is a meeting workspace?
A meeting workspace is a place to store information, attendees, and tasks related to a specific meeting.
• what is a document workspace?
Document workspaces consist of information surrounding a single or multiple documents.
• what is a web part?
Web parts consist of xml queries to full SharePoint lists or document libraries. You can also develop your own web parts and web part pages.
• what is the difference between a document library and a form library?
Document libraries consist of your core documents. An example would be a word document, excel, powerpoint, visio, pdf, etc… Form libraries consist of XML forms.
• what is a web part zone?
Web part zones are what your web parts reside in and help categorize your web parts when designing a page.
• how is security managed in SharePoint?
Security can be handled at the machine, domain, or sharepoint level.
• how are web parts developed?
Web parts are developed in Visual Studio .Net. VS.Net offers many web part and page templates and can also be downloaded from the Microsoft site.
• what is a site definition?
It’s a methods for providing prepackaged site and list content.
• what is a template?
A template is a pre-defined set of functions or settings that can be used over time. There are many templates within SharePoint, Site Templates, Document Templates, Document Library and List Templates.
• how do you install web parts?
Web Parts should be distributed as a .CAB (cabinet) file using the MSI Installer.
• what is CAML?
stands for Collaborative Application Markup Language and is an XML-based language that is used in Microsoft Windows SharePoint Services to define sites and lists, including, for example, fields, views, or forms, but CAML is also used to define tables in the Windows SharePoint Services database during site provisioning.
• what is a DWP?
the file extension of a web part.
• what is the GAC?
Global Assembly Cache folder on the server hosting SharePoint. You place your assemblies there for web parts and services.
• what are the differences between web part page gallery, site gallery, virtual server gallery and online gallery?
Web Part Page Gallery is the default gallery that comes installed with SharePoint. Site Gallery is specific to one site. Virtual Server gallery is specific to that virtual server and online gallery are downloadable web parts from Microsoft.
• what is the difference between a site and a web?
The pages in a Web site generally cover one or more topics and are interconnected through hyperlinks. Most Web sites have a home page as their starting point. While a Web is simply a blank site with SharePoint functionality built in; meaning you have to create the site from the ground up.
• What is Microsoft Windows SharePoint Services? How is it related to Microsoft Office SharePoint Server 2007?
Windows SharePoint Services is the solution that enables you to create Web sites for information sharing and document collaboration. Windows SharePoint Services — a key piece of the information worker infrastructure delivered in Microsoft Windows Server 2003 — provides additional functionality to the Microsoft Office system and other desktop applications, and it serves as a platform for application development.
Office SharePoint Server 2007 builds on top of Windows SharePoint Services 3.0 to provide additional capabilities including collaboration, portal, search, enterprise content management, business process and forms, and business intelligence.
• What is Microsoft SharePoint Portal Server?
SharePoint Portal Server is a portal server that connects people, teams, and knowledge across business processes. SharePoint Portal Server integrates information from various systems into one secure solution through single sign-on and enterprise application integration capabilities. It provides flexible deployment and management tools, and facilitates end-to-end collaboration through data aggregation, organization, and searching. SharePoint Portal Server also enables users to quickly find relevant information through customization and personalization of portal content and layout as well as through audience targeting.
• What is Microsoft Windows Services?
Microsoft Windows Services is the engine that allows administrators to create Web sites for information sharing and document collaboration. Windows SharePoint Services provides additional functionality to the Microsoft Office System and other desktop applications, as well as serving as a plat form for application development. SharePoint sites provide communities for team collaboration, enabling users to work together on documents, tasks, and projects. The environment for easy and flexible deployment, administration, and application development.
• What is the relationship between Microsoft SharePoint Portal Server and Microsoft Windows Services?
Microsoft SharePoint Products and Technologies (including SharePoint Portal Server and Windows SharePoint Services) deliver highly scalable collaboration solutions with flexible deployment and management tools. Windows SharePoint Services provides sites for team collaboration, while Share Point Portal Server connects these sites, people, and business processes—facilitating knowledge sharing and smart organizations. SharePoint Portal Server also extends the capabilities of Windows SharePoint Services by providing organizational and management tools for SharePoint sites, and by enabling teams to publish information to the entire organization.
• Who is Office SharePoint Server 2007 designed for?
Office SharePoint Server 2007 can be used by information workers, IT administrators, and application developers.
is designed
• What are the main benefits of Office SharePoint Server 2007?

Office SharePoint Server 2007 provides a single integrated platform to manage intranet, extranet, and Internet applications across the enterprise.
* Business users gain greater control over the storage, security, distribution, and management of their electronic content, with tools that are easy to use and tightly integrated into familiar, everyday applications.
* Organizations can accelerate shared business processes with customers and partners across organizational boundaries using InfoPath Forms Services–driven solutions.
* Information workers can find information and people efficiently and easily through the facilitated information-sharing functionality and simplified content publishing. In addition, access to back-end data is achieved easily through a browser, and views into this data can be personalized.
* Administrators have powerful tools at their fingertips that ease deployment, management, and system administration, so they can spend more time on strategic tasks.
* Developers have a rich platform to build a new class of applications, called Office Business Applications, that combine powerful developer functionality with the flexibility and ease of deployment of Office SharePoint Server 2007. Through the use of out-of-the-box application services, developers can build richer applications with less code.
• What is the difference between Microsoft Office SharePoint Server 2007 for Internet sites and Microsoft Office SharePoint Server 2007?
Microsoft Office SharePoint Server 2007 for Internet sites and Microsoft Office SharePoint Server 2007 have identical feature functionality. While the feature functionality is similar, the usage rights are different.
If you are creating an Internet, or Extranet, facing website, it is recommended that you use Microsoft Office SharePoint Server 2007 for Internet sites which does not require the purchase client access licenses. Websites hosted using an “Internet sites” edition can only be used for Internet facing websites and all content, information, and applications must be accessible to non-employees. Websites hosted using an “Internet sites” edition cannot be accessed by employees creating, sharing, or collaborating on content which is solely for internal use only, such as an Intranet Portal scenario. See the previous section on licensing for more information on the usage scenarios.
• What suites of the 2007 Microsoft Office system work with Office SharePoint Server 2007?
Office Outlook 2007 provides bidirectional offline synchronization with SharePoint document libraries, discussion groups, contacts, calendars, and tasks.
Microsoft Office Groove 2007, included as part of Microsoft Office Enterprise 2007, will enable bidirectional offline synchronization with SharePoint document libraries.
Features such as the document panel and the ability to publish to Excel Services will only be enabled when using Microsoft Office Professional Plus 2007or Office Enterprise 2007.
Excel Services will only work with documents saved in the new Office Excel 2007 file format (XLSX).
• How do I invite users to join a Windows SharePoint Services Site? Is the site secure?
SharePoint-based Web sites can be password-protected to restrict access to registered users, who are invited to join via e-mail. In addition, the site administrator can restrict certain members' roles by assigning different permission levels to view post and edit.
• Can I post any kind of document?
You can post documents in many formats, including .pdf, .htm and .doc. In addition, if you are using Microsoft Office XP, you can save documents directly to your Windows SharePoint Services site.
• Can I download information directly from a SharePoint site to a personal digital assistant (PDA)?
No you cannot. However, you can exchange contact information lists with Microsoft Outlook.
• How long does it take to set up the initial team Web site?
It only takes a few minutes to create a complete Web site. Preformatted forms let you and your team members contribute to the site by filling out lists. Standard forms include announcements, events, contacts, tasks, surveys, discussions and links.
• Can I create custom templates?
Yes you can. You can have templates for business plans, doctor's office, lawyer's office etc.
• How can I make my site public? By default, all sites are created private.
If you want your site to be a public Web site, enable anonymous access for the entire site. Then you can give out your URL to anybody in your business card, e-mail or any other marketing material. The URL for your Web site will be:
http:// yoursitename.wss.bcentral.com
Hence, please take special care to name your site.
These Web sites are ideal for information and knowledge intensive sites and/or sites where you need to have shared Web workspace.
Remember: Under each parent Web site, you can create up to 10 sub-sites each with unique permissions, settings and security rights.
• How do the sub sites work?
You can create a sub site for various categories. For example:
* Departments - finance, marketing, IT
* Products - electrical, mechanical, hydraulics
* Projects - Trey Research, Department of Transportation, FDA
* Team - Retention team, BPR team
* Clients - new clients, old clients
* Suppliers - Supplier 1, Supplier 2, Supplier 3
* Customers - Customer A, Customer B, Customer C
* Real estate - property A, property B
The URLs for each will be, for example:
* http://yoursitename.wss.bcentral.com/finance
* http://yoursitename.wss.bcentral.com/marketing
You can keep track of permissions for each team separately so that access is restricted while maintaining global access to the parent site.
• How do I make my site non-restricted?
If you want your site to have anonymous access enabled (i.e., you want to treat it like any site on the Internet that does not ask you to provide a user name and password to see the content of the site), follow these simple steps:
# Login as an administrator
# Click on site settings
# Click on Go to Site Administration
# Click on Manage anonymous access
# Choose one of the three conditions on what Anonymous users can access:
** Entire Web site
** Lists and libraries
** Nothing
Default condition is nothing; your site has restricted access. The default conditions allow you to create a secure site for your Web site.
• Can I get domain name for my Web site?
Unfortunately, no. At this point, we don't offer domain names for SharePoint sites. But very soon we will be making this available for all our SharePoint site customers. Please keep checking this page for further update on this. Meanwhile, we suggest you go ahead and set up your site and create content for it.
• What are picture libraries?
Picture libraries allow you to access a photo album and view it as a slide show or thumbnails or a film strip. You can have separate folder for each event, category, etc
• What are the advantages of a hosted SharePoint vs. one that is on an in-house server?
* No hardware investment, i.e. lower costs
* No software to download - ready to start from the word go
* No IT resources - Anyone who has used a Web program like Hotmail can use it
* Faster deployment
• Can I ask users outside of my organization to participate in my Windows SharePoint Services site?
Yes. You can manage this process using the Administration Site Settings. Simply add users via their e-mail alias and assign permissions such as Reader or Contributor.
• Are there any IT requirements or downloads required to set up my SharePoint site?
No. You do not need to download any code or plan for any IT support. Simply complete the on-line signup process and provide us your current and correct email address. Once you have successfully signed up and your site has been provisioned, we will send a confirmation to the email address you provided.
• I am located outside of the United States. Are there any restrictions or requirements for accessing the Windows SharePoint Services?
No. There are no system or bandwidth limitations for international trial users. Additionally language packs have been installed which allow users to set up sub-webs in languages other than English. These include: Arabic, Danish, Dutch, Finnish, French, German, Hebrew, Italian, Japanese, Polish, Portuguese (Brazilian), Spanish and Swedish.
• Are there any browser recommendations?
Yes. Microsoft recommends using the following browsers for viewing and editing Windows SharePoint Services sites: Microsoft Internet Explorer 5.01 with Service Pack 2, Microsoft Internet Explorer 5.5 with Service Pack 2, Internet Explorer 6, Netscape Navigator 6.2 or later.
• What security levels are assigned to users?
Security levels are assigned by the administrator who is adding the user. There are four levels by default and additional levels can be composed as necessary.
* Reader - Has read-only access to the Web site.
* Contributor - Can add content to existing document libraries and lists.
* Web Designer - Can create lists and document libraries and customize pages in the Web site.
* Administrator - Has full control of the Web site.
• How secure are Windows SharePoint Services sites hosted by Microsoft?
Microsoft Windows SharePoint Services Technical security measures provide firewall protection, intrusion detection, and web-publishing rules. The Microsoft operation center team tests and deploys software updates in order to maintain the highest level of security and software reliability. Software hot-fixes and service packs are tested and deployed based on their priority and level of risk. Security related hot-fixes are rapidly deployed into the environment to address current threats. A comprehensive software validation activity ensures software stability through regression testing prior to deployment.
Enter your search terms Submit search form

Web
megasolutions.net


• What is the difference between an Internet and an intranet site?
An internet site is a normal site that anyone on the internet can access (e.g., www.msn.com, www.microsoft.com, etc.). You can set up a site for your company that can be accessed by anyone without any user name and password.
An intranet (or internal network), though hosted on the Web, can only be accessed by people who are members of the network. They need to have a login and password that was assigned to them when they were added to the site by the site administrator.
• What is a workspace?
A site or workspace is when you want a new place for collaborating on Web pages, lists and document libraries. For example, you might create a site to manage a new team or project, collaborate on a document or prepare for a meeting.
• What are the various kinds of roles the users can have?
A user can be assigned one of the following roles
* Reader - Has read-only access to the Web site.
* Contributor - Can add content to existing document libraries and lists.
* Web Designer - Can create lists and document libraries and customize pages in the Web site.
* Administrator - Has full control of the Web site.
• Can more than one person use the same login?
If the users sharing that login will have the same permissions and there is no fear of them sharing a password, then yes. Otherwise, this is discouraged.
• How customizable is the user-to-user access?
User permissions apply to an entire Web, not to documents themselves. However, you can have additional sub webs that can optionally have their own permissions. Each user can be given any of four default roles. Additional roles can be defined by the administrator.
• Can each user have access to their own calendar?
Yes there are two ways to do this,
* by creating a calendar for each user, or
* by creating a calendar with a view for each user
• How many files can I upload?
There is no restriction in place except that any storage consumed beyond that provided by the base offering may have an additional monthly charge associated with them.
• What types of files can I upload / post to the site?
The only files restricted are those ending with the following extensions: .asa, .asp, .ida, .idc, .idq. Microsoft reserves the right to add additional file types to this listing at any time. Also, no content that violates the terms of service may be uploaded or posted to the site.
• Can SharePoint be linked to an external data source?
SharePoint data can be opened with Access and Excel as an external data source. Thus, SharePoint can be referenced as an external data source. SharePoint itself cannot reference an external data source.
• Can SharePoint be linked to a SQL database?
This is possible via a custom application, but it not natively supported by SharePoint or SQL Server.
• Can I customize my Windows SharePoint Services site?
YES! Windows SharePoint Services makes updating sites and their content from the browser easier then ever.
SharePoint includes tools that let you create custom lists, calendars, page views, etc. You can apply a theme; add List, Survey and Document Library Web Parts to a page; create personal views; change logos; connect Web Parts and more.
To fully customize your site, you can use Microsoft FrontPage 2003. Specifically, you can use FrontPage themes and shared borders, and also use FrontPage to create photo galleries and top ten lists, utilize standard usage reports, and integrate automatic Web content.
• Will Microsoft Office SharePoint Server 2007 run on a 64-bit version of Microsoft Windows?
Windows SharePoint Services 3.0, Office SharePoint Server 2007, Office Forms Server 2007, and Office SharePoint Server 2007 for Search will support 64-bit versions of Windows Server 2003.
• How Office SharePoint Server 2007 can help you?

Office SharePoint Server 2007 can help us:
Manage content and streamline processes. Comprehensively manage and control unstructured content like Microsoft Office documents, Web pages, Portable Document Format file (PDF) files, and e-mail messages. Streamline business processes that are a drain on organizational productivity.
Improve business insight. Monitor your business, enable better-informed decisions, and respond proactively to business events.
Find and share information more simply. Find information and expertise wherever they are located. Share knowledge and simplify working with others within and across organizational boundaries.
Empower IT to make a strategic impact. Increase responsiveness of IT to business needs and reduce the number of platforms that have to be maintained by supporting all the intranet, extranet, and Web applications across the enterprise with one integrated platform.

Office SharePoint Server 2007 capabilities can help improve organizational effectiveness by connecting people, processes, and information.
Office SharePoint Server 2007 provides these capabilities in an integrated server offering, so your organization doesn't have to integrate fragmented technology solutions itself.
• What are the features that the portal components of Office SharePoint Server 2007 include?
The portal components of Office SharePoint Server 2007 include features that are especially useful for designing, deploying, and managing enterprise intranet portals, corporate Internet Web sites, and divisional portal sites. The portal components make it easier to connect to people within the organization who have the right skills, knowledge, and project experience.
• What are the advanced features of MOSS 2007?
* User Interface (UI) and navigation enhancements
* Document management enhancements
* The new Workflow engine
* Office 2007 Integration
* New Web Parts
* New Site-type templates
* Enhancements to List technology
* Web Content Management
* Business Data Catalog
* Search enhancements
* Report Center
* Records Management
* Business Intelligence and Excel Server
* Forms Server and InfoPath
* The “Features” feature
* Alternate authentication providers and Forms-based authentication

What are the features of the new Content management in Office SharePoint 2007?
The new and enhanced content management features in Office SharePoint Server 2007 fall within three areas:
* Document management
* Records management
* Web content management
Office SharePoint Server 2007 builds on the core document management functionality provided by Windows SharePoint Services 3.0, including check in and check out, versioning, metadata, and role-based granular access controls. Organizations can use this functionality to deliver enhanced authoring, business document processing, Web content management and publishing, records management, policy management, and support for multilingual publishing.
Does a SharePoint Web site include search functionality?
Yes. SharePoint Team Services provides a powerful text-based search feature that helps you find documents and information fast.
• Write the features of the search component of Office SharePoint Server 2007?
The search component of Office SharePoint Server 2007 has been significantly enhanced by this release of SharePoint Products and Technologies. New features provide:
* A consistent and familiar search experience.
* Increased relevance of search results.
* New functions to search for people and expertise.
* Ability to index and search data in line-of-business applications and
* Improved manageability and extensibility.
• What are the benefits of Microsoft Office SharePoint Server 2007?

* Provide a simple, familiar, and consistent user experience.
* Boost employee productivity by simplifying everyday business activities.
* Help meet regulatory requirements through comprehensive control over content.
* Effectively manage and repurpose content to gain increased business value.
* Simplify organization-wide access to both structured and unstructured information across disparate systems.
* Connect people with information and expertise.
* Accelerate shared business processes across organizational boundaries.
* Share business data without divulging sensitive information.
* Enable people to make better-informed decisions by presenting business-critical information in one central location.
* Provide a single, integrated platform to manage intranet, extranet, and Internet applications across the enterprise.
• Will SharePoint Portal Server and Team Services ever merge?
The products will come together because they are both developed by the Office team.
• What does partial trust mean the Web Part developer?
If an assembly is installed into the BIN directory, the code must be ensured that provides error handling in the event that required permissions are not available. Otherwise, unhandled security exceptions may cause the Web Part to fail and may affect page rendering on the page where the Web Part appears.
• How can I raise the trust level for assemblies installed in the BIN directory?
Windows SharePoint Services can use any of the following three options from ASP.NET and the CLR to provide assemblies installed in the BIN directory with sufficient permissions. The following table outlines the implications and requirements for each option.
Option Pros Cons
Increase the trust level for the entire virtual server. For more information, see "Setting the trust level for a virtual server" Easy to implement.
In a development environment, increasing the trust level allows you to test an assembly with increased permissions while allowing you to recompile assemblies directly into the BIN directory without resetting IIS. This option is least secure.
This option affects all assemblies used by the virtual server.
There is no guarantee the destination server has the required trust level. Therefore, Web Parts may not work once installed on the destination server.
Create a custom policy file for your assemblies. For more information, see "How do I create a custom policy file?" Recommended approach.
This option is most secure.
An assembly can operate with a unique policy that meets the minimum permission requirements for the assembly.
By creating a custom security policy, you can ensure the destination server can run your Web Parts.
Requires the most configuration of all three options.
Install your assemblies in the GAC
Easy to implement.
This grants Full trust to your assembly without affecting the trust level of assemblies installed in the BIN directory.
This option is less secure.
Assemblies installed in the GAC are available to all virtual servers and applications on a server running Windows SharePoint Services. This could represent a potential security risk as it potentially grants a higher level of permission to your assembly across a larger scope than necessary
In a development environment, you must reset IIS every time you recompile assemblies.
Licensing issues may arise due to the global availability of your assembly.
• Does SharePoint work with NFS?
Yes and no. It can crawl documents on an NFS volume, but the sharepoint database or logs cannot be stored there.
• How is SharePoint Portal Server different from the Site Server?
Site Server has search capabilities but these are more advanced using SharePoint. SPS uses digital dashboard technology which
provides a nice interface for creating web parts and showing them on dashboards (pages). SS doesn't have anything as advanced as that. The biggest difference would be SPS document management features which also integrate with web folders and MS Office.
• What would you like to see in the next version of SharePoint?
A few suggestions:
# SPS and STS on same machine
# Tree view of Categories and Folders
# General Discussion Web Part
# Personalization of Dashboards
# Role Customization
# Email to say WHY a document has been rejected for Approval
# More ways to customize the interface
# Backup and restore an individual Workspaces
# Filter for Visio
# Better way to track activity on SPS
• Why Sharepoint is not a viable solution for enterprise wide deployments?
Document management does not scale beyond a single server, but scales great within a single server. For example, a quad Xeon machine with 4GB of RAM works great for a document management server that has about 900,000 - 1,000,000 document, but if you need to store 50,000,000 document and want to have them all in one single workspace then it does not scale at all. If you need a scenario like this, you need to plan your deployment right and it should scale for you, it just does not right out of the box.
If you are using your server as a portal and search server most for the most part it scales great. You can have many different servers crawl content sources and have separate servers searching and serving the content.
If you have < 750,000 documents per server and fewer than 4 content sources and fewer than 50,000 users, SPS should scale just fine for your needs with the proper planning.
• What are the actual advantages of SharePoint Portal Services (SPS) over SharePoint Team Services (STS)?
SharePoint Portal Services (SPS) has MUCH better document management. It has check-in, check-out, versioning, approval, publishing, subscriptions, categories, etc. STS does not have these features, or they are very scaled back. SharePoint team Services (SPS) has a better search engine, and can crawl multiple content sources. STS cannot. STS is easier to manage and much better for a team environment where there is not much Document Management going on. SPS is better for an organization, or where Document Management is crucial.
• How Does SharePoint work?
The browser sends a DAV packet to IIS asking to perform a document check in. PKMDASL.DLL, an ISAPI DLL, parses the packet and sees that it has the proprietary INVOKE command. Because of the existence of this command, the packet is passed off to msdmserv.exe, who in turn processes the packet and uses EXOLEDB to access the WSS, perform the operation and send the results back to the user in the form of XML.
• How do I open an older version of a document?
Normally, all previous versions are located in the shadow, so if you right click a published document from within the web folders, go to properties and then the third tab, versions you can view older versions.
If you want to do this in code:

strURL = "url of the last published version"
Set oVersion = New PKMCDO.KnowledgeVersion
Set prmRs = oVersion.VersionHistory(strURL)
Set oVersion = Nothing

prmRS will contain a recordset, which contains the url to the old versions in the shadow.
• Why do the workspace virtual directories show the error “stop sign” symbol in the IIS snap-in?
If World Wide Web Publishing Service (W3SVC) starts before Microsoft Exchange Information Store (MSExchangeIS), “stop sign” symbols appear under the Default Web Site folder of the Internet Information Services console in Microsoft Management Console (MMC).
There is a dependency between the local paths of the SharePoint Portal Server virtual directories and the MSExchangeIS. You must start MSExchangeIS first, followed by W3SVC.
Complete the following steps to prevent the stop signs from appearing each time you restart:
# Change the Startup type for W3SVC to Manual.
# Restart the server. The MSExchangeIS service starts automatically.
# Start W3SVC.
• What newsgroups are available?
There are two,
* microsoft.public.sharepoint.portalserver and
* microsoft.public.sharepoint.portalserver.development.
• What is SharePoint from a Technical Perspective?
Technically SharePoint illustrates neatly what Microsoft's .net strategy is all about: integrating Windows with the Web. Microsoft has previously made accessing stuff on a PC easier, (Windows) then on a network (NT) and now on the web (.NET). SharePoint is an application written to let a user access a web accessible directory tree called the Web Storage System.
SharePoint was written with a set of technologies that allow the programmer to pass data, functions, parameters over HTTP, the web's medium. These are XML, XSL and SOAP, to name a few I understand the basics of!
To the user it looks easy, like Hotmail, but every time they click a button or a link, a lot has to happen behind the scenes to do what they want to do quickly and powerfully. Not as easy as you might think, but SharePoint does it for you. Accessing this Web storage system and the server itself is also done using technologies like ADO, CDO, PKMCDO, LDAP, DDSC, ADSC. More on these later. SharePoint is a great example of how the Internet Platform can be extended and integrated into an existing well adopted technology, Windows.
• What is SharePoint from an Administration Perspective?
Administering SharePoint mainly consists of setting it up, which is much easier than you expect, adding the content, which can be just dragging and dropping in whole directory structures and files, and then organizing the files better by giving them categories or other metadata. This is done either through the Web interface or through the SharePoint Client: a program what means you can access SharePoint as a Web folder and then right-click files to select options like "edit profile". Or add files by dragging them in individually or in bulk.
Setting the security is also important, using NT accounts, either NT4 or Active Directory (or both in mixed mode) you can give users access to files/folders the same way as you do in standard Windows. Users can be grouped and the groups given access privileges to help manage this better. Also SharePoint has 3 Roles that a User or Group can be given on a particular item. Readers can see the item (i.e. document/file or folder) but not change it, Authors can see and edit items and coordinators can set security privileges for the part of the system they have control over. Thus, you could set 12 different coordinators for 12 different folder trees, and they could manage who can do what within that area only.
• What is SharePoint from a Users Perspective?
From a Users perspective SharePoint is a way of making documents and folders on the Windows platform accessible over the web. The user visits the SharePoint Portal web page, and from there they can add documents, change documents & delete documents. Through this Portal, these documents are now available for discussion, collaboration, versioning and being managed through a workflow. Hence the name "Share-Point". Details about the document can be saved too, such as: who wrote it, when, for whom, its size, and version, category or target audience. These can then be used to find the document through SharePoint's Search facility. Even documents not "in" SharePoint can be included in the search engine's index so they become part of the portal. All in all, it's a great way to get stuff up on the web for users with average technical skills, and for administrators to manage the content.
• What are the various Sharepoint 2003 and Exchange integration points?
Link to Outlook
This is a button on contacts or events lists that lets Outlook 2003 add a pst file named Sharepoint Folders and it links to the data on the site. It’s read-only, but you could make the home page for that PST be the Sharepoint site for easier viewing. The link to outlook feature seems more to be where some can public a calendar, but not want too much collaboration. For example, a holiday schedule, company meeting schedule, etc, can be made available for people to be able to view from Outlook without having to go to a web browser. Another nice thing about OL2K3 is that you can compare these calendars with others side by side.
Searching Public Folders

With SPS you can index Exchange’s public folders with the search engine so that all that precious public folder content is searchable. You’ll want to look at content sources and indexing in Sharepoint administration.
Displaying Public Folders in a web part

Since exchange web-enables public folders, you can create a web part that displays that content. IE, http://exchangeserver/Public/IT/Helpdesk will display the IT/Helpdesk public folder via OWA. So you add the Page Viewer web part to a page and point it at that URL. The key here is to add ?cmd=contents to the end of the url if you don’t want the navigator pane on the left.
Smart web parts

Some of the web parts that come with SPS allow you to add a web part to a page that actually takes the users outlook info (calendar, inbox, contacts, tasks) and put them into the page.
• Can SharePoint compare two document versions?
"In Word 2003, you can compare documents side by side. Open two documents. Then, from the Window menu of one of them, select the Compare Side By Side command. If you have only two documents open, the command will automatically choose to compare them. If you have three or more documents open, you'll have to select which document to compare with the current file.
A floating toolbar with two buttons will open. If the button on the left is selected, Word will scroll both documents at the same time. Press the button on the right side of the toolbar to return to where the cursor was located when you started comparing."
• What are the integration differences between SPS 2003 and the various Office versions?
SPS webpage can detect you have installed the Office 2003 and run local dll to implement some SPS function, e.g. multi-file upload only works when you have office 2003 installed.
Integration with Office XP is gone.
You will get guys telling you that you can integrate with SPSv2 if you install a backwards compatible document library - but that’s really just putting a bit of SPS 2001 on the server.
Believe me, check-in, check-out, which are themselves very basic, are not available from inside Office XP, or even from the context menu in Windows Explorer.
The ONLY option you have is to use the web interface to check-in or check-out.