</kawg>
May 2008 SUGDC sablaj — Tus ntawd yog ib tug muab
Kuv kawm tus ua ntej kuv puas Kev sib tham nrog SharePoint qhov no yav tas los lis xaus thiab nws muaj lub moj tej tawg.
Thursday tav su, Kuv tsav mus Virginia, ua yog kuv tshiab khiv tus $50 GPS kws plug-in tshaj plaws rau kuv tus xov tooj. Tus ntaus ntawv yog flawless. Tom qab lub tsib teev tsav, Kuv muaj lub zog los ua ib tug zoo mus dhia saum zeb tread thiab ntawd los, kuj ceeb tias txawm ntau, muaj lub zog rau taub hau rau qhov chaw tos txais rau tus ntuav lus lub advertised teev cocktail. Kev sib tham nrog n00b uas kuv, it turned out that the cocktail hour was really a ruse to get speakers to show up and help stuff papers and swag into shoulder bags for conference attendees 🙂
Zaus tsaug zog vim hais tias kuv tau hais lus ua ntej thing Friday AM. Nervousness, nagging zoo nkaus tias kuv yuav tsum tau mus ntxiv zawg kuv kev nthuav qhia thiab disturbing heev miv yeeb yam rau tsiaj ntiaj chaw cia kuv lig. Vim kuv mus pw lig, Kuv lawm tau ntxov. Kuv ua ntxiv kom haum kev architecture zawg. Nws tau tsim nyog lub dag zog vim cov 25 Q feeb&A yuav tau heev ua tau txawv txawv tsis tau nws. Yog kuv muaj hmoo tau txais tus thawj qhov nyob hauv txoj kev khiav. Sahil Malik yog muas thaum chiv thawj mus hais lus Friday AM thiab kuv twb yuav mus rau hnub Saturday, tiam sis nws xav tau kom sib npaug puav. Qhov no pub kuv los ua qhov kev nthuav qhia kuv thiab ces zaum rov qab thiab txaus siab rau txhua yam kev mus pem Friday thiab Saturday.
Nthuav mus OK. Kuv mas nws yeej tau zoo. Kuv hais txog li cas peb yuav saib xyuas thiab siv tau cov web kev pab los ntawm ib cov SharePoint Designer workflow siv ib txog kev cai. Thaum lub sij hawm, Kuv yuav khi cov lus no rau kuv series dhau ntawm EUSP.com txog kawg cov neeg siv kom siv feem ntau ntawm qhov cuab tam ntawd. Kuv tag kuv slides thiab demo rau 35 feeb, rau kuv dismay lub sijhawm. Luckily, Q&A nyob cus ciav, doubt tsis pab los txog ntawd nws yog thaum sawv ntxov ntxov ua ntej noj su. Q&Yog kuv nyiam ib feem ntawm ib qho kev nthuav qhia.
Muaj ntau yaam kws nthuav thiab kuv cia siab rau blog txog lawv nyob hauv tus cej lub lim tiam no (lub sij hawm permitting, raws li ib txwm). Ib tug khub los saib CMS muab mob nyav mas tsis tau heev hopeful xyuas lub SharePoint txoj hauj lwm hauv khw. Ib hom kev sib sab laj teem rau lub paucity SharePoint thiab cov teeb meem tias keeb muaj nrhiav tej txuj ci zoo uas tseem muaj "nqis" nyob rau hauv qhov kev ua lag luam nruj heev. Rau txiv leej tub saib CMS xa mus rau lub SharePoint human resources pas cais raws li ib tug "guild." Kuv lo lus ntawd nyob rau hauv nqe lus MMORPG mas paub thiab nws tau muab kuv ib thrill me, to be honest 🙂
Tus highlight ntawm kev sib tham nrog tus ntawd cia li sib tham thiab tuag nrog kuv twb "paub tias cov neeg" online (computer) ib pliag. Qhov zoo tshaj plaws yog zaum ntawm qhov bar nrog Becky Isserman (MossLover) rau 3 los sis 4 teev (thiab cov uas, tom qab kuv muaj tag haus rau hmo ntuj). Kuv tsis nquag coj mus tham txog Farscape los sis Babylon 5 nrog cov neeg Kansas City.
Bob hma liab tsis tau muaj thiab li qub, yog ib tug whirlwind of intros, chats thiab frenetic cia li dawb zog. Nws caw kuv mus rau hnub vas xaum tshais rau Sahil Malik thiab uas yog yawm suab.
Hnub vas xaum (ib hnub 2), Mike Lotter dragged nws tus kheej rau cov kev sib tham hais txog kev InfoPath thiab ces nws keeb Becky kawg ntawm lub hnub ua tus tsi paub Q&Tus qhib kom txog 30 mus 45 feeb mas teem rau ntawm InfoPath (Mike) thiab AJAX (Becky). Kuv xav lawm Becky tau nrauj nws tag nro/tsim cov kev nthuav qhia, tiam sis kuv kom kuv tau muab sij hawm rau koj pom ntawd ib txog hnub no. Kuv muaj ib tug lawm nws mam ua "los tsoo lub Circuit Court" mus rau pem hauv ntej.
Kuv yuav mus nyob thiab tom. Ob hnub ntxiv — lub ntsiab ntawm kev sib tham nrog cov nyiaj tau los nce nyiaj rau tus me nyuam thiab Miracle Network thiab nws tsa ceg $5,000. Uas yog txaus. Thaum kawg, Kuv xav mus rau qhov ua tsaug Gary Blatt, Gary Vaughn thiab Bob hma liab alerting rau kuv thiab kuv mus hais lus rau kev sib tham nrog tus uas. tau mas, qhov ob Gary tus muaj ib pab neeg uas txhawb thiab Workers thiab txhua yam uas koj tau txaus. Kuv muaj ntshaw ua ntej kuv mus thiab yog zoo tshaj kuv twb vam rau cov.
Rau hauv lub alert rau tus tom ntej sablaj uas teem tseg rau November 7 8. Ib cag ntawm tej ntsiab lus zoo kawg thiab, Nws tseem zoo kawg li rau lub rooj sib tham pem nrog rau tag nrho cov nyob hauv internet personalities koj puas paub tias hauv blogs, twitter, forums, yam.
</kawg>
FBA thiab SQL neeg rau zaub mov: Zaj dabneeg hlub
Kuv colleague tau ua haujlwm rau ib qho web nyob hauv ib lub chaw kawm FBA. Cov yam, cov Web site qhov cia li nkaum kiag tej cov ntaub ntawv los ntawm cov neeg rau zaub mov SQL. Lub hom phiaj grand During dictates tias ib cov DBA configures ntawv theem ruaj ntseg hauv SQL (as opposed to embedding ib tug neeg ID rau ib SQL cov lus nug los yog ib txhia lwm mus kom ze).
Qhov teeb meem yog tias SQL neeg rau zaub mov tsis paub dab tsi txog peb lub chaw FBA ces nws yuav tsis ntseeg peb. Solved tej teeb meem no yog peb, for lack of muaj ib lo lus zoo, manually impersonating tus neeg siv AD uas peb muaj txuas rau SQL xws tias SQL cov theem tej hauj lwm ruaj ntseg.
Txawm tias FBA yog ib qho kev feature ASP.NET, peb teb chaws SharePoint neeg tau qhia ntau yam tshawb engines uas yog koj nyob nraum querying FBA, koj yuav tsum txhais hais tias koj xav paub yuav ua li cas rau configure FBA nyob SharePoint. Kuv ua tsis tau tejyam rau nrhiav tej ntaub ntawv thiaj li yuav pab tau ib FBA oriented ASP.NET daim ntawv thov mus sib tham nrog SQL nyob rau hauv txoj kev uas peb yuav tsum tau xyuas.
Nyuam qhuav pib researching no, peb rov nyeem no Tshooj: ASP.NET Impersonation
Tshawb fawb coj peb mus no codproject Tshooj: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx
Uas pab peb sau ntawv peb kev cai, uas kuv twb muaj nyob hauv qab. Nws yuav tsis tau cov khoom feem ntau elegant, tab sis nws ua haujlwm. Kuv vam tias koj pom tias nws yuav pab tau.
Ntawm no yog cov chaws uas ua haujlwm rau peb:
kev tiv thaiv btnSearchCarrier_Click tsis muaj dabtsis(nruas sender, EventArgs e) { ua tiag { ImpersonateUser xyuas = tshiab ImpersonateUser(); // TODO: Muab tau peev xwm iU.Impersonate("DomainName", "UserName", "Password"); // CHAWS // iU.Undo(); } ntes (Kos ex) { } } // Siv Impersonation chav kawm ntawv raws li hais hauv qab no. pej xeem hoob ImpersonateUser { [DllImport("advapi32.dll", SetLastError = tseeb)] pej xeem zoo li qub extern bool LogonUser( Txoj hlua lpszUsername, Txoj hlua lpszDomain, Txoj hlua lpszPassword, rau cov menyuam dwLogonType, rau cov menyuam dwLogonProvider, nyob IntPtr phToken); [DllImport("kernel32.dll", CharSet = CharSet.Auto)] lwm yam extern zoo li qub bool CloseHandle(IntPtr kov); lwm yam zoo li qub IntPtr tokenHandle = tshiab IntPtr(0); lwm yam zoo li qub WindowsImpersonationContext impersonatedUser; // Yog hais tias koj teeb cov code no rau ib DLL, Nco ntsoov demand ntawd nws // sau nrog FullTrust. [PermissionSetAttribute(SecurityAction.Demand, Lub npe = "FullTrust")] pej xeem Impersonate tsis muaj dabtsis(txoj hlua domainName, txoj hlua userName, txoj hlua password) { ua tiag { // Siv cov unmanaged LogonUser kev ua kom tau tus neeg siv token rau // tus neeg siv kev cai tswjhwm, sau, thiab lo lus zais. const rau cov menyuam LOGON32_PROVIDER_DEFAULT = 0; // Dua no parameter ua LogonUser los tsim tau ib cov thawj token. const rau cov menyuam LOGON32_LOGON_INTERACTIVE = 2; tokenHandle = IntPtr.Zero; // Kauj ruam -1 Hu rau LogonUser mus nrhiav ib tug kov rau qhov kev mus saib token. bool returnValue = LogonUser( userName, domainName, lo lus zais, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, nyob tokenHandle); // tokenHandle - ruaj ntseg token tshiab Yog hais tias (== returnValue tsis tseeb) { rau cov menyuam ret = Marshal.GetLastWin32Error(); Console.WriteLine("LogonUser hu ua tsis tau tejyam uas yuam kev cai : " + ret); pov System.ComponentModel tshiab.Win32Exception(ret); } // Kauj ruam - 2 WindowsIdentity newId = tshiab WindowsIdentity(tokenHandle); // Kauj ruam -3 impersonatedUser = newId.Impersonate(); } ntes (Kos ex) { Console.WriteLine("Kos tshwm sim. " + ex.Xov); } } /// <txoj kev> /// Nres impersonation /// </txoj kev> pej xeem Undo tsis muaj dabtsis() { impersonatedUser.Undo(); // Dawb lub tokens. Yog hais tias (tokenHandle != IntPtr.Zero) CloseHandle(tokenHandle); } }
</kawg>
Ntxiv rau cov dab neeg: SSRS qhia kuv “rsAccessDenied”, Tab sis npog … Kuv yeej muaj
Ob peb lub lis piam rov qab, Kuv tau ua hauj lwm nrog kuv tsim tawm colleague rau ib qhov project uas muaj SQL neeg rau zaub mov uas qhia kev pab plug-in rau NTXHUAB. Nws tau tsim ib qho Web site uas muaj ib txoj kev zoo nkauj front-end qhia kom zoo (lub ntsiab feature yog ib lookup ntawm ib parameter nrog yaam tseem ceeb ntau nplooj koj nuav qab nws ntse).
Qhov no yog haujlwm great puag ncig txoj kev loj hlob tab sis nyob hauv cov neeg txaus sab kuaj (UAT) ib puag ncig, nws tsis ua hauj lwm. Firing li cov debugger, peb yuav pom kos lus zoo li no:
Tus permissions tso rau cov neeg siv 'UAT_domainmosssvc' yog tsis txaus rau ua qhov lag luam.(rsAccessDenied).
Yog koj ua ib tug tshawb nyob ntawm qhov yuam kev uas hais los saum toj, koj pom nws no heev. Hom scarily. Ua tus phem zoo heev vim nws muaj ntau hom neeg hauv paus thiab sawv daws tau tias kom hais haum "yim" txoj cai. Peb zaum sim lawv tag nrho.
Nyob rau hauv peb cov ntaub ntawv, qhov teeb meem yog tias peb yuav tsum ua ib thaub qab/restore cov DEV UAT. Qhov chaw ntawm cov ntaub ntawv, tej yam ntawd tseem referring rau "DEV_domain" (tsis txhob ua tus kho tshiab "UAT_Domain"). Peb tsim tau ib qhov chaw tshiab, ntxiv rau cov qhov web thiab uas solved peb cov teeb meem.
Hopefully no yuav cawm tus neeg teev los yog ob tug hauv txoj kab.
</kawg>
Quick Fix: Tus txheejtxheem kawm ntawv SharePoint Throws [HttpException (0x 80004005): Thov timed.]
Ib qho uas kuv tsim tawm lug txhawb cov miv twb khiav hauj lwm rau ib qhov project no lub limtiam thiab khiav mus rau ib qho teeb meem timeout thaum ua hauj lwm hauv tsev qee ib feem web vwm. Yog nws lub qhov zoo, tab sis "dheev" ib qhov chaw uas ncaj los ua yuav slow heev thiab feem ntau timed nrog rau qhov yuam kev:
[HttpException (0x 80004005): Thov timed.]
In thiaj li tso rau hauv thiab pom tias ob peb lwm qhov chaw ntawd cia li zoo. Kuv xav tias tsam tias muaj qee qhov chaw hauv web thaum nyob rau sab hab siv lub trusty ?txheem = 1 debug cov txheej txheem, Kuv puas tau qhov tseeb paub 11 qhov chaw web site nyob rau sab, xwb ob tug uas tau pom. Txawm tias nws yuav zoo dua (los ntawm ib cov foundations let's-hope-I-find-something-ugly-here-that-I-can-fix), peb ntawm cov qhov web kaw yam muaj ib lub npe "Yuam kev".
Kuv deleted ntawd cov qhov Web site (uas nws muab ib lub sij hawm ntev kuj ceeb tias) thiab solved qhov teeb meem uas. For today 🙂
</kawg>
Nyob rau hauv hoob kawm ceev yog Excellent
Kuv tabtom pib hnub 4 cov vas NTHIV tus khub kawm taws tuaj ntawm Larry Kaye nov hauv Needham, MA.
No 5-hnub kev sib kho muaj isoleucine hauv hoob (3 thiab 2 hnub feem) yus "ceev ESP: Tsim kev cai nrhiav daim ntaub ntawv rau Alliance Partners kuv" thiab "ceev ESP: Tsim kev cai nrhiav daim ntaub ntawv rau Alliance deev II".
Qhov no yog cov hoob kawm hom tiag yeej rog khau raj. Yog nqus cov khoom (heev, sib sib zog nqus heev). Cov txij (Larry) paub nws cov khoom kom meej meej. Kuv mas xav cob qhia no yog hais tias koj tau xaiv nws.
</kawg>
SharePoint thiab vas NTHIV — tus Reese lub khob laum Enterprise Apps?
Kuv twb tas li ib hnub 2 cov ceev txoj kev kawm nyob rau hauv tshav ntuj Needham, MA, thiab kuv bursting kuv muaj tswv yim (yam lub zoo kawm hoob ua rau kuv). Ib tug nam uas ceev tau kuv xav thiab kuv xav sau nws hos yog tseem tshiab tshiab thiab tej num "khoom" raug thawb tawm ntawm kuv lub taub hau.
Peb cov WSS SharePoint 3.0 / NTXHUAB implementers toog fim tawv muaj teeb meem nrog tej tubntxhais tsuas SharePoint project: Peb yuav ua tau tag nrho cov ntaub untagged ntawv loaded rau hauv SharePoint xws tias txhua yam nws fits tsis pub dhau peb lub architecture txig tsim ntaub ntawv li cas?
Feem ntau txaus, qhov no tsis muaj zog teebmeem vim peb scope peb tus kheej tawm hauv cov teeb meem: "Peb tsis care txog dab tsi ntau tshaj 3 lub hlis." "Peb cia lis qub ntawd tag nrho cov khoom uas nrhiav lo lus tseem ceeb thiab mus nraim peb yuav ua raws li txoj kev…" Thiab lwm yam.
Tab sis npog, ua li cas yog peb tsis tau scope peb tus kheej tawm hauv cov teeb meem thiab peb nyob nraum saib txhiab 10's los yog 100's txhiab (los sis tej lab) ntawm docs — lub chaw thau khoom thiab tagging ntawm uas yog peb cov xav kom ntseeg kawg siab?
CEEV tej zaum lub teb.
Vas NTHIV tus nrhiav kev muaj ntau yam mus tab sis ib simplified pom no puas yog:
- Ib cov txheej txheem crawler zoo rau cov ntsiab lus.
- Nws pom cov ntawv thiab ob txhais tes nws tawm los ib tug broker txheem uas tswj ib pas ntawm daim ntawv processors.
- Cov txheej txheem broker ob txhais tes nws tawm los ib yam ntawm cov ntaub ntawv processors.
- Cov ntaub ntawv processor analyzes daim ntawv thiab ntawm ib cov ntawv pipeline, analyzes lub bejeezus ntawm daim ntawv thiab ob txhais tes nws tawm los ib Performance index builder hom kev.
Nyob rau lub starship vas NTHIV, peb tau tswj daim ntawv xyuas txog pipeline ntau. Peb yuav ntse thiab piv txog 100 pipeline Cheebtsam thiab, feem ntau interestingly, peb ua peb lub Cheebtsam tau sau. Kuv hais li, Vas NTHIV yog cais ntaub ntawv every which kev tab sis hnub xya thiab compiles ntau pab tau cov ntaub ntawv hais txog cov ntaub ntawv uas nws. CEEV cov neeg vwm muaj meej insane thiab obsessive txog tsom xam ntaub ntawv vim nkawd muaj cuab yeej thiab/los yog cov tswv yim los yeej categorize ntaub ntawv.
Li ntawd … siv nyob nrog peb li kev pipeline kev cai tivthaiv ceev ceev, peb yuav lob tag nrho cov ntsiab lus teb ntaub ntawv los ntawm lub vas NTHIV thiab pub nws rov qab mus NTXHUAB. Nws mus ua tej yam zoo li no:
- Daim ntawv no tej yam ua kua rau hauv sai los ntawm NTXHUAB.
- Cev npab-obsessive ceev ntaub ntawv parsing thiab categorization li lawm.
- Peb muaj peb li kev pipeline kev cai tivthaiv dauv tej cov ntsiab lus teb ntaub ntawv tawm rau ib tug database.
- Ib tug txheej txheem uas wb tsim tau nyeem cov ntsiab lus teb lus, ua rau tej yam kev txiav txim siab yuav ua li cas kom haum ntawd NTXHUAB ntaub ntawv tsis pub dhau peb IA thiab marks nws siv cov qhov web thiab lub nruas qauv.
tau mas, tsis yog li cov txheej txheem xovtooj kaw lus yuav tsis zoo meej tiam sis tsaug cov obsessive (thiab tejzaum nws yog insane-but-in-a-good-way cov neeg uas tau ceev), peb muaj ib tug ntawm ntaus txhaj koob tshuaj tivthaiv ntawm ib txoj zoo tiag huab hwm coj load uas ntau tshaj xwb sam SQL database nrog ib Rev NW nyuam qhuav-koj cov ntaub ntawv uas.
</kawg>
Kev kawm txog cov xaus rau cov neeg siv ntawm www.EndUserSharePoint.com
Mark Miller dhau ntawm http://www.endusersharepoint.com ua tau, ntawm kuv kev, qhov zoo tshaj plaws end-user teem SharePoint qhov chaw hauv lub ' kheej. Hauv lub hli tas los, nws tau enlisted tej premier teem end-user bloggers ntawm yuav ua rau kom qhov "phab pem hauv paus" so, tsis tas mus Paul Culmsee, Chris Quick, thiab Dessie Lunsford. Nws muaj lwm cov neeg lined li thiab kom ua tau raws li lawv lub sij hawm cia.
Kuv dhia ntawd rau lub sij hawm mus koom thiab Kuv tus ncej inaugural nyob ntawm no. Kuv yuav sau ib series siv SharePoint Designer los ua workflow lub ntsiab first-class ua hauj lwm yuav ua li cas. In keeping with the EUSP.com’s focus, cov khoom yuav nco ntsoov cia qhov kawg neeg pem hauv ntej thiab chaw.
Ntaub ntawv kuv yuav faib ntuj SharePoint rau peb sab pawg: SharePoint pheejyig npaum licas, full-time SharePoint cov neeg ua haujlwm developers thiab cov neeg siv tag. Thaum kuv sau, Kuv nquag nug kuv tus kheej, xav ntawm tej pab pawg uas tej zaum yuav nrog cov kawm? Feem ntau, Kuv mus sau ntawv rau thawj tus ob (kev) tej pawg, mas vim kuv yog ib tug neeg pab tswv yim kuv tus kheej; Nws yog yooj yim thiab qhabnias sau txog cov khoom uas koj nyob nraum paub zoo tshaj rau koj tus kheej npaum li.
Raws li kuv twb ua ntej, kawg cov neeg zej zog yog nyob deb, loj deb tshaj kev zej zog. Yog top-notch EUSP.com thiab kuv heartily kom nws mus txhua txhua peb pawg. Tsom xam laser lub site no obviously zoo rau cov neeg siv tag. Txawm li cas los, peb developers thiab pheejyig npaum licas xwb yuav zoo dua peb profession yog peb yuav to taub thiab zoo raus cov kev tu ncua ntawm cov neeg kawg peb pab. I know I need all the help I can get 🙂 Xyuas.
</kawg>
Invoking SSRS Web Services ntawm WSS / NTXHUAB hauv FBA ib puag ncig
Peb yuav tsum tau mus ua tsis tau muaj rau tus "CreateSubscription cov" txujci nyob ib SSRS web muab kev pab uas yog hosted hauv ib FBA tswj NTXHUAB ib puag ncig ntawm ib lub qhov web kev cai. Peb tau ceev cia variations ntawm:
- 401: Tsis tso cai
- Kwv tsiv
Cov "kwv tsiv" lus sam twb nthuav ntau vim nws twb hais tias "kwv cov" (peb qhov kev pab SSRS) muaj "tsiv" mus login.aspx. Qhov no qhia meej meant peb muaj tej yam teeb meem authentication.
Pom tau kuv nws thiaj li hais tias kuv muaj bookmarked ib tug nkag teb chaws blog yog Robert Garret uas piav li cas yuav ua tau rau tus muaj lub ntsiab WSS/NTXHUAB web qhov kev pab nyob hauv ib lub chaw kawm FBA. Nco ntsoov tias kuv tsis tau txuas ncaj qha rau tsab xov xwm (li ntawm 06/09/08) vim nws xav authenticate. Qhov kuv muab txuas theem koj rau ib qho "cov posts" saib thiab koj kuj nrhiav ib tsab xov xwm ntawm searching "Accessing NTXHUAB Web pab siv ntaub Based Authentication".
Ntawm no yog cov chaws uas ua haujlwm rau peb:
ReportingService2006 Reye = null; // Authenticate Authentication auth = tshiab Authentication(); Yog hais tias (tshwm sim.ErrorCode == LoginErrorCode.NoError) ua tiag { Reye.CreateSubscription(qhia txog, extSettings, desc, eventType, matchData, parameters1); } ntes (Kos ex) { Console.WriteLine(ex.Message.ToString()); } |
Kuv nkag siab yam hauj lwm zoo li no:
- Peb cov qhov Web site yuav tsum hu mus rau qhov kev pab cuam authentication thiab hais, "Hav, Tony, Nws yog kuv!".
- Authentication qhov replies hais, "Hav, Kuv paub koj. Cov me nyuam no li cas? Ntawm no yog ib token."
- Peb hu tau tuaj rau qhov kev pab cuam SSRS thiab hais, "Tony xa kuv, Nov yog lub token."
</kawg>
Koj muaj tau koj cov tsom xam nrhiav txhua hli?
Nws yog ib cov neeg xyaum zoo, tej zaum txawm muaj kev xyaum zoo tshaj, mus saib koj cov ntaub ntawv nrhiav ib hlis ib zaug thiab nrhiav dua ntxiv zoo bets, Qhib koj thesaurus thiab tej zaum kuj yaws tej lag luam txoj kev ntse uas txwv tsis pub muab zais kom tswj.
Nws yog twb tau qhov 3rd ntawm lub hli. Lub sij hawm awastin’ 🙂
</kawg>