09 December 2009

robust email address validation through regex and javascript

Regular expressions are a representation of a grammar that helps computers and programs interpret and validate human input.  Unfortunately they are a huge time-suck and are a form of mental masturbation.  But one person's poison is another's Picasso; some regular expressions are like poetry to the mathmatically-bent computer scientists, and great debate has ensued over the best interpretation of RFC822, the internet's email address specification. 

Also, with the 16-Nov-2009 Internet Corporation for Assigned Names and Numbers (ICANN's) move to accept multi-byte, internationalized top-level domain names (IDN/TLD), I wonder how many hosts will need to update their assumptions in their regex.  Also I wonder what google mail, yahoo, amazon, ebay, facebook, or twitter might consider for their own RFC822 validation routines going forward.

Since there seems to be as many regular expressions developed and published as there are email addresses, I'll contribute what I've come across as well.  We'll see how this evolves in 2010 when people start employing these new domain names.

simple one in javascript (from Dustin Diaz):

var pattern = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;


and a big one (from Paul Warren) - though I've yet to see an escape sequence for adapting this expression for use in javascript:


(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?: \r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0 31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+ (?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?: (?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z |(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n) ?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\ r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[\t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n) ?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[\t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*) *:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+ |\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r \n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?: \r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)? [ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]| \\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<> @,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|" (?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\ ".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000- \031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\ [\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\ r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\] |\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0 00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])* (?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\". \[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\ ".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+| \Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?: [^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n) ?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[" ()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n) ?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<> @,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[\t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\ ".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)? (?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\". \[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?: \r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t]) *))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]) +|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z |(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*))*)?;\s*)
  

04 December 2009

SharePoint 2007 URL Quick List still holds up


I think its funny/slightly sad that very little about this list of URLs have changed since Heather Solomon wrote this information up in July 2005 - 4.5 years later; this is a relevant and useful administrative list of URLs that are sometimes hidden depending on a few factors in your deployment:

Portal and WSS

Function
Add to the URL
Notes
Manage List Template Gallery
/_catalogs/lt/Forms/AllItems.aspx
Manage Site Collection Users
/_layouts/1033/siteusrs.aspx
To access you must be an admin on the server or a site collection admin for the site.
Manage Site Groups
/_layouts/1033/role.aspx
Manage Users
/_layouts/1033/user.aspx
Manage Web Part Gallery
/_catalogs/wp/Forms/AllItems.aspx
Site Usage Report
/_layouts/1033/UsageDetails.aspx
Site Usage Summary
/_layouts/1033/Usage.aspx
User Information
/_layouts/1033/userinfo.aspx
Web Parts Maintenance Page
?contents=1
Add to the end of the page URL

Portal Only

Function
Add to the URL
Notes
Create
[area]/_layouts/1033/spscreate.aspx
Create list in a different portal area
/_layouts/1033/new.aspx?
NewPageFilename=YourTemplateName.stp&
ListTemplate=100&
ListBaseType=0
When you save a template in a portal area and try to create a new list in a different portal area, the template will not show on the Create page. Use this URL to force it to show. More info.
Manage Audiences
/_layouts/1033/Audience_Main.aspx
Manage Site Template Gallery
/_catalogs/wt/Forms/AllItems.aspx
Manage User Alerts
/_layouts/1033/AlertsAdmin.aspx
Site Settings
/_layouts/1033/default.aspx
Sites Registry
/SiteDirectory/Lists/Sites/Summary.aspx

WSS Only

Function
Add to the URL
Notes
Add Web Parts Pane
?ToolPaneView=2
Add to the end of the page URL *Not supported by MSFT on Form Pages*
Create
/_layouts/1033/create.aspx
Documents and Lists
/_layouts/1033/viewlsts.aspx
Manage Cross Site Groups
/_layouts/1033/mygrps.aspx
Manage My Alerts
/_layouts/1033/MySubs.aspx
Manage Site Template Gallery
/_catalogs/wt/Forms/Common.aspx
Manage User Alerts
/_layouts/1033/SiteSubs.aspx
Site Settings
/_layouts/1033/settings.aspx
Top-level Site Administration
/_layouts/1033/webadmin.aspx
but since there were some enhancements made in SharePoint 2007, Josef Nielsen wrote up a more complete set, though it's not organized w/consideration to WSS.
People and Groups
_layouts/people.aspx
Users and Permissions
Site Collection Admins
_layouts/mngsiteadmin.aspx
Users and Permissions
Advanced Permissions
_layouts/user.aspx
Users and Permissions
Master Pages
_Layouts/ChangeSiteMasterPage.aspx
Look and Feel
Title, Desc, and Icon
_layouts/prjsetng.aspx
Look and Feel
Navigation
_layouts/AreaNavigationSettings.aspx
Look and Feel
Page Layout and Ste Templates
_Layouts/AreaTemplateSettings.aspx
Look and Feel
Welcome Page
_Layouts/AreaWelcomePage.aspx
Look and Feel
Tree View
_layouts/navoptions.aspx
Look and Feel
Top Nav Bar
_layouts/topnav.aspx
Look and Feel
Site Theme
_layouts/themeweb.aspx
Look and Feel
Reset to Site Definition
_layouts/reghost.aspx
Look and Feel
Searchable Columns
_Layouts/NoCrawlSettings.aspx
Look and Feel
Site Content Types
_layouts/mngctype.aspx
Galleries
Site Columns
_layouts/mngfield.aspx
Galleries
Site Templates
_catalogs/wt/Forms/Common.aspx
Galleries
List Templates
_catalogs/lt/Forms/AllItems.aspx
Galleries
Web Parts
_catalogs/wp/Forms/AllItems.aspx
Galleries
Workflows
_layouts/wrkmng.aspx
Galleries
Master Pages and Page Layouts
_catalogs/masterpage/Forms/AllItems.aspx
Galleries
Regoinal Settings
_layouts/regionalsetng.aspx
Site Administration
Site Libraries and Lists
_layouts/mcontent.aspx
Site Administration
Site Usage Report
_layouts/usageDetails.aspx
Site Administration
User Alerts
_layouts/sitesubs.aspx
Site Administration
RSS
_layouts/siterss.aspx
Site Administration
Search Visability
_layouts/srchvis.aspx
Site Administration
Sites and Workspaces
_layouts/mngsubwebs.aspx
Site Administration
Site Features
_layouts/ManageFeatures.aspx
Site Administration
Delete This Site
_layouts/deleteweb.aspx
Site Administration
Site Output Cache
_Layouts/areacachesettings.aspx
Site Administration
Content and Structure
_Layouts/sitemanager.aspx
Site Administration
Content and Structure Logs
_Layouts/SiteManager.aspx?lro=all
Site Administration
Search Settings
_layouts/enhancedSearch.aspx
Site Collection Administration
Search Scopes
_layouts/viewscopes.aspx?mode=site
Site Collection Administration
Search Keywords
_layouts/listkeywords.aspx
Site Collection Administration
Recycle Bin
_layouts/AdminRecycleBin.aspx
Site Collection Administration
Site Collection Features
_layouts/ManageFeatures.aspx?Scope=Site
Site Collection Administration
Site Hierachy
_layouts/vsubwebs.aspx
Site Collection Administration
Portal Site Connection
_layouts/portal.aspx
Site Collection Administration
Site Collection Audit Settings
_layouts/AuditSettings.aspx
Site Collection Administration
Site Collection Policies
_layouts/Policylist.aspx
Site Collection Administration
Site Collection Cache Profiles
Cache%20Profiles/AllItems.aspx
Site Collection Administration
Site Collection Output Cache
_Layouts/sitecachesettings.aspx
Site Collection Administration
Site Collection Object Cache
_Layouts/objectcachesettings.aspx
Site Collection Administration
Variations
_Layouts/VariationSettings.aspx
Site Collection Administration
Variation Labels
_Layouts/VariationLabels.aspx
Site Collection Administration
Translatable Columns
_Layouts/TranslatableSettings.aspx
Site Collection Administration
Variation Logs
_Layouts/VariationLogs.aspx
Site Collection Administration
Site Settings
_layouts/settings.aspx
Other

SharePoint Jokes


  1. What do you call a smiling, SOBER courteous person at a SharePoint conference? A: The caterer.
  2. Light travels faster than sound. This is why some SharePoint consultants appear bright until you hear them speak.
  3. A good SharePoint consultant is someone who can tell you to go to hell in such a way that you look forward to the trip.
  4. How many SharePoint consultants does it take to screw in a light bulb? How many can you afford?
  5. I always take SharePoint with a grain of salt, ...plus a slice of lemon, ...and a shot of tequila.
  6. Client says to SharePoint consultant - Well aren't you a waste of two billion years of evolution.
  7. SharePoint: working daily to make the human brain obsolete.
  8. I told my boss that everyone hates SharePoint. He said I was being ridiculous… everyone hasn't used it yet.
  9. SharePoint work is something you do that nobody notices until you don't do it.
  10. Top three things SharePoint Consultant won't say:
    1. You're right; we're billing way too much for this.
    2. How about paying us based on the success of the project?
    3. I don't know enough to speak intelligently about that.


  11. I should've known it wasn't going to work out between my ex-girlfriend and me. After all, I'm a SharePoint and she's a Documentum.
  12. I drink beer to celebrate major events, the fall of communism, or the fact that our SharePoint is still working.
  13. SharePoint Consultants have credibility because they aren't dumb enough to work at your company.
  14. A SharePoint consultant with a clear conscience is usually a sign of bad memory.
  15. With sufficient thrust and an open window, SharePoint servers fly just fine.
  16. I scream the same whether I'm about to be devoured by great white shark or work with SharePoint
  17. Good SharePoint consultants are the ones that never get caught screwing it up.
  18. If Bill Gates had a penny for every time I had to watch the SharePoint wheel thing spin...oh wait, he does.
  19. Kerberos with SharePoint is sort of like a bird, it's pretty cute until it shits on your head.
  20. The secret to success as a SharePoint consultant is knowing who to blame for your failures.
  21. SharePoint Consultant to client - 'We don't have a SharePoint performance problem; You have a perception problem.'
  22. I used to be indecisive about SharePoint. Now I'm not sure.
  23. SharePoint consultant to client - 'I don't have a solution, but I do admire the problem.'
  24. Some SharePoint mistakes are too much fun to only make once.
  25. The SharePoint consultant who laughs last probably made a back-up AND tested the restore!
  26. Overheard: "This SharePoint consultant is depriving a village somewhere of an idiot."
  27. SharePoint analyst to programmer: "You start coding. I'll go find out what they want."
  28. 99 percent of SharePoint consultants give the rest a bad name.
  29. Never, under any circumstances, decide to install SharePoint and take a laxative on the same night.
  30. A computer can insult your intelligence, but nothing rubs it in like SharePoint.
  31. Client said: Most SharePoint consultants are idiots, and I just hired their King!
  32. Remember half the SharePoint consultants you know are below average. :)
  33. 3 reasons why SharePoint better then sex:
    1. You can usually find someone to do it with.
    2. A little coffee and you can do it all night.
    3. If you don't finish you won't gain a reputation as a "SharePoint teaser."


  34. Q: What's the difference between a SharePoint consultant and a computer nerd?
    • A: Sooner or later everyone needs a SharePoint consultant!


  35. How many SharePoint consultants does it take screw in a light bulb?
    • Answer: 100. 1 to do, 99 to say they could do it better.


  36. What do SharePoint Consultants use for birth control? - Their personalities.
  37. The first half of my life was ruined by my parents, and the second half by SharePoint.
  38. TIP: If you are a SharePoint admin and you think nobody cares if you're alive, try missing a couple of SharePoint service packs.
  39. I want to die peacefully in my sleep, like my grandfather.. Not screaming and yelling like SharePoint end users.
  40. I like SharePoint, It fascinates me. I sit and look at it for hours.
list from Paul Swider


What did one sharepoint site say to another sharepoint site? 
    Hey, aren't we called webs?


What did the end user say to the developer?
    Oh, I didn't create that column, I was smart, I just renamed the "title" column!


What did one sharepoint web developer say to the asp.net developer?
    Why me?


What did the production portal say to the author portal?
    I'm sorry, I can't seem to find your object!


What did the parent content type say to the child content type?
    I won't give you my jeans, but I'll buy you another pair just like them and we can share!


How many people does it take to create a web part?
    two, one to write the code, another to figure out the permissions problem in production!


How many times does it take to create a Shared Service Provider?
    3, one time to screw it up without knowing it, twice to do it because sharepoint won't do right the second time and
the third after you have blown away everything and started over!


What did the server admin say to the sharepoint web developer?
    Why can't we just do this with static html?


what did the sharepoint 2003 environment tell the sharepoint 2007 environment?
    Don't worry, reboot will still fix everything.


What did the sharepoint admin do to fix an "Unexpected Error has occured"
    Delete sharepoint and start again!


What did one w3wp process say to the other?
    Hey, can I borrow one of your SPSite's?  You have plenty!       


One day a user called the helpdesk, no one answered.  Being that he was in the helpdesk office he walked down and asked the admin why they weren't answering.
She simply stated, they quit when they heard we were implementing sharepoint!


A consultant was asked to build an estimate for a SharePoint two layer approval workflow with SharePoint Designer. 
The consultant never replied.  When asked "why", he simply stated, "Impossible".

list from Chris Givens


Legend:




BDC = Business Data Catalog and Backup Domain Controller

BI = Business Intelligence

CA = Central Administration and Certificate Authority

CMS = Content Management Server

DMZ = Demilitarized Zone

ECM = Enterprise Content Management

ECS = Excel Calculation Server

KPI = Key Performance Indicators

IIS = Internet Information Services

ISA = Internet Security and Acceleration Server

MMC = Microsoft Management Console

MOSS = Microsoft Office SharePoint Server 2007

O12 = Office 12

OFS = Office Forms Server

OSS = Office SharePoint Server, Office Server System and Open Source System

PDC = Primary Domain Controller

PKI = Public Key Infrastructure

RFC = Request for Comments

SPS = SharePoint Portal Server

SSL = Secure Sockets Layer

STS = SharePoint Team Services

SSP = Shared Services Provider

TLS = Transport Layer Security

URL = Uniform Resource Locater

URN = Uniform Resource Name

URI = Uniform Resource Identifier

VS = Virtual Server 2005, Virtual Server and Visual Studio

VSS = Visual Source Safe, Volume Shadow Copy Service

WA = Web Application

WAS = Web Application Stress tool

WCM = Web Content Management

WSS = Windows SharePoint Services, Web Storage System and Windows Server System

WWF = Windows Workflow Foundation and Worldwide Wrestling Federation

list from Bill English

02 December 2009

wspbuilder error "Could not load file or assembly 'CabLib, Version=6.9.26.0, Culture=neutral, PublicKeyToken=85376ef9a48d191a' or one of its dependencies. An attempt was made to load a program with an incorrect format."

I really love when a fix is simple.

Back story: in this case, I am in the midst of using a combination of wspbuilder and spsource to reverse engineer, package up and deploy a few custom content types. wspbuilder is a codeplex Visual Studio extension that helps package up SharePoint code into a Solution file (WSP) for deployment. spsource is another tool that tries to analyse a SharePoint site and tease out a schema.xml for a list, and column & field information for a content type.  I use the term 'tries' because depending on how clean your dev environment is, your mileage may vary. 

Problem description: when running WSPBuilder -> Build WSP, the output window in Visual Studio says

Could not load file or assembly 'CabLib, Version=6.9.26.0, Culture=neutral, PublicKeyToken=85376ef9a48d191a' or one of its dependencies. An attempt was made to load a program with an incorrect format.

It is my belief this problem is related to the installer not detecting/switching to the correct version of this DLL - there is an x86 version and an x64 version.

Fix:
[applicable to the wspbuilder.exe version 0.9.8.1029 file date apr 15 2009, 262kb] :
copy the x86 cablib.dll
from

C:\Program Files\WSPTools\WSPBuilderExtensions\Resources\x86
to:
C:\Program Files\WSPTools\WSPBuilderExtensions\

(if you can read espanol, it is in this blog: http://guatecommunity.net/blogs/jmhogua/archive/2009/05/13/wspbuilder-could-not-load-file-or-assembly-cablib.aspx )
another option is to download the latest version (> v1.0.5) of wspbuilder, which states in the release notes "Note! 22 June 2009 - x64 CabLib.dll install bug fixed."
 
Hooray for multiple fixes!