ყოველთვიური არქივი: თებერვალი 2008

კვირა სასაცილო: “NOT FOR EXPORT”

Back around 1998, the company I worked for at the time received some funding to create a new e-commerce product. We had the full gamut of business requirements to meet. It had to be fast, easy for end users, flashy, multi-language, და ა.შ.. Sad to say, I probably haven’t had as an ambitious set of work to accomplish since those heady days.

This effort pre-dated Microsoft.NET. Plain vanilla ASP was still somewhat new (or least very unfamiliar to my company). "Brick and mortar" companies were doomed. Doomed! This is to say that it was pioneering work. Not Hadron Collider pioneering work, but for us in our little world, it was pioneering work.

We were crazy busy. We were doing mini POC’s almost every day, figuring out how to maintain state in an inherently stateless medium, figuring out multi-language issues, row-level security. We even had create a vocabulary to define basic terms (I preferred state-persistent but for some reason, the awkward "statefull" won the day).

As we were madly inventing this product, the marketing and sales people were out there trying to sell it. Somehow, they managed to sell it to our nightmare scenario. Even though we were designing and implementing an enterprise solution, we really didn’t expect the first customer to use every last feature we built into the product day zero. This customer needed multi-language, a radically different user interface from the "standard" system but with the same business logic. Multi-language was especially hard in this case, because we always focused on Spanish or French, but in this case, it was Chinese (which is a double-byte character set and required special handling given the technology we used).

Fast forward a few months and I’m on a Northwest airlines flight to Beijing. I’ve been so busy preparing for this trip that I have almost no idea what it’s like to go there. I had read a book once about how an American had been in China for several years and had learned the language. One day he was walking the city and asked some people for directions. The conversation went something this:

  • American: "Could you tell me how to get to [XX] street?"
  • Chinese: "Sorry, we don’t speak English".
  • American: "Oh, well I speak Mandarin." and he asked them again in Chinese, but more clearly (as best he could).
  • Chinese: Very politely, "Sorry, we don’t speak English".

The conversation went on like that for bit and the American gave up in frustration. As he was leaving them he overheard one man speaking to the other, "I could have sworn he was asking for directions to [XX] street."

I had picked up a few bits and pieces of other China-related quasi-information and "helpful advice":

  • A Korean co-worked told me that the I needed to be careful of the Chinese because "they would try to get me drunk and take advantage of you" in the sense of pressuring me into bad business decisions.
  • We were not allowed to drive cars (there was some confusion as to whether this was a custom, a legal requirement or just the client’s rule).
  • There were special rules for going through customs.
  • We were not allowed to use American money for anything.
  • You’re not supposed to leave tips. It’s insulting if you do.

და ბოლოს, I had relatively fresh memories the Tiananmen massacre. When I was at college, I remember seeing real-time Usenet postings as the world looked on in horror.

In short, I was very nervous. I wasn’t just normal-nervous in the sense that I was delivering a solution that was orders of magnitude more complicated than anything I had ever done before. I was also worried about accidentally breaking a rule that could get me in trouble.

I’m on this 14 hour flight and though it was business class, 14 hours is a damned long time. There are only so many ways to entertain yourself by reading, watching movies or playing with the magnetized cutlery. Even a really good book is hard to read for several hours straight.

Eventually, I started to read the packaging material on a piece of software I was hand-carrying with me to the client, Netscape’s web server. I’m reading the hardware/software requirements, the marketing blurbs, looking at the pretty picture and suddenly, I zero in on the giant "NOT FOR EXPORT" warning, something about 128 bit encryption. I stuffed the box back into my carry bag, warning face-down (as if that would have helped) and tried to keep visions of Midnight Express out of my head.

Looking back on it now, I should have been worried, თუ ყველა, when I left the U.S., not when I was entering China 🙂 Nothing untoward happened and I still consider that to be the best and most memorable business trip I’ve had the pleasure of making.

</ბოლო>

გამოწერა ჩემი დღიური!

Solution: SPQuery არ ძიება საქაღალდეები

This past week I was implementing an "evolving" solution for a client that uses BDC and SPQuery and ran into some difficulty using SPQuery against a document library containing folders. ქვედა ხაზი: assign "recursive" to view ატრიბუტია შეკითხვის.

ჩემი სცენარი:

  • ორშაბათს, ავტვირთო დოკუმენტი და მიაწოდოს ზოგიერთი მეტა მონაცემები.
  • The following week, I upload a new document. Much of this new document’s meta data is based on the document I uploaded on Monday (which we call the "master document").
  • We’ve created a web service façade that provides a BDC-friendly interface to the list so that users can easily locate that Monday document via a title search.
  • A BDC data column provides a friendly user interface. (This is part of my attempt at using BDC for a more friendly Lookup column).

The final BDC façade service uses a query like this to do the lookup:

 // Used U2U tool to assist in generating this CAML query.
      oQuery.Query =
        "<სად>";

      თუ (titleFilter.Length > 0)
        oQuery.Query  =
          "  <ხოლო>";

      oQuery.Query  =
        "    <ხოლო>" +
        "      <Geq>" +
        "        <FieldRef Name=\"DocumentId\" />" +
        "        <Value Type=\"Text\">" + minId + "</ფასი>" +
        "      </Geq>" +
        "      <Leq>" +
        "        <FieldRef Name=\"DocumentId\" />" +
        "        <Value Type=\"Text\">" + maxId + "</ფასი>" +
        "      </Leq>" +
        "    </ხოლო>";

      თუ (titleFilter.Length > 0)
        oQuery.Query  =
          "    <შეიცავს>" +
          "      <FieldRef Name=\"Title\" />" +
          "      <Value Type=\"Text\">" + titleFilter + "</ფასი>" +
          "    </შეიცავს>" +
          "  </ხოლო>";
      oQuery.Query  =
        "</სად>";

During the initial stage of development, this worked great. თუმცა, we introduced folders into the directory to solve some problems and suddenly, my BDC picker wouldn’t return any results. I tracked this down to the fact that the SPQuery would never return any results. We used folders primarily to allow multiple files with the same name to be uploaded but with different meta data. When the file is uploaded, we create a folder based on the list item’s ID and then move the file there (I wrote about that აქ; we’ve had mixed results with this approach but on the whole, it’s working well). The user don’t care about folders and in fact, don’t really understand that there are any folders. We have configured all the views on the library to show items without regard to folders.

I hit this problem twice as the technical implementation evolved and solved it differently each time. The first time, I wasn’t using the CONTAINS operator in the query. Without a CONTAINS operator, I was able to solve the problem by specifying the view on the SPQuery’s contructor. Instead of using the default constructor:

SPList oList = web.Lists["Documents"];

SPQuery oQuery = ახალი SPQuery();

I instead used a constructor that specified a view:

SPList oList = web.Lists["Documents"];

SPQuery oQuery = ახალი SPQuery(oList.Views["All Documents"]);

That solved the problem and I started to get my results.

I then added the CONTAINS operator into the mix and it broke again. It turns out that the CONTAINS operator, so far as I can tell, does not work with the view the same way as the a simpler GEQ / LEQ operators. I did some searching and learned that the query’s ViewAttributes should be set to "Recursive", , როგორც in:

oQuery.ViewAttributes = "Scope=\"Recursive\"";

That solved the problem for CONTAINS. სინამდვილეში, this also solved my original search problem and if I had specified the recursive attribute the first time, I would not have run into the issue again.

The fact that a view-based SPQuery works for some operators (GEQ/LEQ) and not others (CONTAINS), coupled with the fact that KPIs don’t seem to work at all with folder-containing document libraries leads me to believe that SPQuery has some orthogonality issues.

Special Thanks:

  • The good folks at U2U and their query tool.
  • Michael Hoffer’s great "learning by doing" blog post, comments and responses.

</ბოლო>

გამოწერა ჩემი დღიური!

MOSS KPI bug? სია მაჩვენებელი მიბმული დოკუმენტი ბიბლიოთეკა საქაღალდეები

განახლების 02/29/08: I solved this problem by creating a folder and then assigning a content type to the folder which has the meta data I need for the KPIs. I described that in a little more detail here.

We have implemented a technical solution where users upload documents to a document library. An event receiver creates a directory and moves the file to that directory (using a technique similar to what I wrote about აქ). We’ve successfully navigated around the potential issues caused by event receivers that rename uploaded files (mainly because users never start their document by clicking on "New" but instead create the docs locally and then upload them).

The meta data for these documents includes a Yes/No site column called "Urgent" and another site column called "Status". We need to meet a business requirement that shows the percentage of "Urgent" documents whose status is "Pending".

This is usually simple to do and I described something very much like this at the SharePoint Beagle with lots of screen shots if you’re interested.

In a nutshell, I did the following:

  • Create a view on the doc library called "Pending".
  • Configure the view to ignore folder structure.
  • Create a KPI List.
  • Create an indicator in the list that points to the doc lib and that "Pending" სანახავად.

This simply does not work. The KPI shows my target (e.g. five urgent documents) but always shows the actual number of urgent documents as zero. Paradoxically, if you drill down to the details, it shows the five urgent documents in the list. I created a very simple scenario with two documents, one in a folder and one not. Here is the screen shot:

იმიჯი

The above screen shot clearly shows there are two documents in the view but the "value" is one. The "CamlSchema" with blank document Id is in the root folder and the other is in a folder named "84".

It appears to me that even though you specify a view, the KPI doesn’t honor the "show all items without folders" setting and instead, confines itself to the root folder.

If I’m wrong, please drop me a line or leave a comment.

</ბოლო>

გამოწერა ჩემი დღიური!

პროგრამები Tags:

SPD სიმბოლო “კოლექციონირება მონაცემთა მომხმარებელი”: შეცვლა გენერირებადი სამუშაო ფორმა

I’m working on a project that uses five different SharePoint Designer work flows to handle some document approvals. SPD provides the "collect data from a user" აქცია ისე, რომ ჩვენ შეგვიძლია შეეკითხება მომხმარებელს სხვადასხვა ბიტი ინფორმაციის, როგორიცაა თუ არა დამტკიცება, რამდენიმე კომენტარი და შესაძლოა, თუ რა მათ ჰქონდათ სადილად სხვა ღამის.

The forms are perfectly functional. They are tied to a task list as a content type. ისინი 100% system-generated. This is their strength and weakness. If we can live with the default form, then we’re good to go. თუმცა, we don’t have too much control over how SPD creates the form. If we don’t like that default behavior, ჩვენ უნდა მიმართოს სხვადასხვა ხრიკების მისაღებად გარშემო (მაგალითად, შექმნის პრიორიტეტის ამოცანა).

მე საჭირო, რათა ბმული ამ დავალების ფორმები, რომ გახსნეს ხედი თვისებები (dispform.asxp) of the "related item" in a new window. This provides one-click access to the meta data of the related item. This is what I mean:

იმიჯი

საბედნიეროდ, we can do that and it’s not very hard. Broadly speaking, სროლა up SPD, navigate to the directory that houses the workflow files and open the ASPX file you want to modify. These are just classic XSL transform instructions and if you’ve mucked about with itemstyle.xsl, ძებნის ან სხვა XSL სცენარი, this will be easy for you. სინამდვილეში, მივხვდი, რომ ეს ზოგადად ადვილია, რადგან გამომუშავებული ფორმა გარკვეულწილად უფრო ადვილად დაიცვას შედარებით ძებნის ძირითადი შედეგები ვებ ნაწილი (ან საშინელი CWQP).

რა თქმა უნდა, there is one major pitfall. SPD’s workflow editor expects full control over that file. If you modify it, SPD will happily overwrite your changes give the right set of circumstances. I did two quick tests to see how bad this could get. They both presuppose that you’ve crafted a valid SPD workflow that uses the "collect data from a user" დახევას.

ტესტი 1:

  • შეცვლა ASPX ფაილი ხელით.
  • გამოცადეთ იგი (გადაამოწმონ, რომ თქვენი ცვლილებები სათანადოდ შენახული და არ დაარღვიოს არაფერი).
  • გახსენით სამუშაო და დამატება unrelated აქცია (such as "log to history").
  • Save workflow.

შედეგი: ამ შემთხვევაში, SPD არ ხელახლა შექმნას ფორმა.

ტესტი 2:

  • გააკეთეთ იგივე, რაც #1 except directly modify the "collect data from a user" აქცია.

შედეგი: ეს ხელახლა ქმნის ფორმა ნულიდან, ზედმეტად წერილობით თქვენი ცვლილებები.

დასკვნითი შენიშვნები:

  • მინიმუმ ორი SPD ქმედებები ისეთი ფორმების მსგავსი: "Collect Data From a User" and "Assign To Do Item". Both of these actions’ ფორმები შეიძლება ხელით განახლდა.
  • მე შეძლო, რათა ჩემს ბმული dispform.aspx რადგან, ამ შემთხვევაში, the relate item always has its ID embedded in the related item’s URL. I was able to extract it and then build an <კონფერენცია> based on it to provide the one-click meta data access feature. It’s unlikely that your URL follows this rule. There may be other ways to get the ID of the related item but I have not had to cross that bridge, ასე რომ მე არ ვიცი, თუ მივა მეორე მხარეს უფსკრული.
  • მე არ გამოიძიებს, მაგრამ მე არ გაგიკვირდებათ, თუ არსებობს გარკვეული შაბლონის in 12 hive, რომ მე ვერ ცვლილებები, რათა გავლენა იქონიოს SPD წარმოშობს სტანდარტულ ფორმები (ჰგავს შეგვიძლია ცვლილებები მზადყოფნაში თარგები).

</ბოლო>

გამოწერა ჩემი დღიური!

პროგრამები Tags: ,

არიან “უცნობი შეცდომა” შეტყობინებები ნამდვილად უკეთესია, ვიდრე დასტის კვალი?

I was reading Madhur’s blog post on how to enable stack trace displays and now I’m wondering: რატომ არ ჩვენ ყოველთვის დასტის კვალი?

ვინ გამოვიდა, რომ წესით და რატომ მივყვებით მას?

End users will know something is wrong in either case. At least with a stack trace, მათ შეუძლიათ დააჭირეთ კონტროლის printscreen, copy/paste into an email and send it to IT. That would clearly reduce the time and effort required to solve the issue.

</ბოლო>

პროგრამები Tags:

კვირა (უხერხულ) სასაცილო: “ჩემი სახელი პოლ Galvin”

რამოდენიმე წლის წინ, my boss asked me to train some users on a product called Results. Results is an end user reporting tool. It’s roughly analogous to SQL Server Reporting Service or Crystal. At the time, ეს იყო შემუშავებული აწარმოებს მწვანე მილები (e.g. Wyse 50 ტერმინალში) დაკავშირებული Unix ყუთი მეშვეობით telnet.

ჩემი default პასუხი ნებისმიერ კითხვაზე, რომელიც იწყება "შეგიძლიათ … " "დიახ" და ეს სადაც ყველა უბედურება დაიწყო.

დაცვის ქვეშ ქიმიური კომპანია out სამხრეთ კალიფორნიის და ჰქონდა მხოლოდ დასრულდა ძირითადი ERP განხორციელების საფუძველზე QAD ნახვა MFG / PRO. განხორციელების გეგმა ახლა მოუწოდა სასწავლო ძალა ბოლოს მომხმარებლებს შედეგები პროდუქტი.

მე არ იყო დიდი შესახებ ამ ინსტრუმენტი იყო და რა თქმა უნდა, არასოდეს მომზადებული ვინმე წინაშე. თუმცა, I ჩაატარა მთელი რიგი სხვა სასწავლო კლასების და სწრაფად ჩემს ფეხზე, ასე რომ არ იყო ძალიან აწუხებს. Dennis, უძრავი სრულ განაკვეთზე შედეგები ინსტრუქტორი, მომცა მისი სასწავლო მასალა. Looking back on it now, ეს მართლაც საკმაოდ აბსურდული. მე არ ვიცი, პროდუქტის კარგად, არასოდეს ყოფილა ოფიციალურად მომზადებული ეს იყო და რა თქმა უნდა, არ ასწავლიან ეს. რა ბიზნეს არც მე არ ტრეინინგებს ვინმეს ეს?

გართულების რამ logistically, მთხოვეს, რომ წავიდეს და შეხვდება ვინმე ჩიკაგოში, როგორც ნაწილი წინასწარი გაყიდვების ჩართულობის გზაზე. გეგმა იყო ფრენა out of New Jersey, წასვლა ჩიკაგოში, შეხვდება საათში პერსპექტივა და შემდეგ გააგრძელოს კალიფორნიაში.

კარგად, მე მივიღე ჩიკაგოში და გაყიდვების ბიჭი ჩემი გუნდი გააკეთა რაღაც შეცდომა და არ დაადასტურა შეხვედრა. ასე რომ,, მე გამოჩნდა და პერსპექტივა არ იყო იქ. გასაოცარია. მე კრავენ და დატოვოს და გაგრძელდება CA. სადღაც ამ პროცესში, მე გაირკვეს, რომ კლიენტს სასწავლო ნაკლები 24 საათით ადრე, ჩემი ჩამოსვლის, რომ "პოლ Galvin" ასწავლის კლასი, არ Dennis. კლიენტს უყვარს Dennis. მათ აინტერესებთ, "ვინ არის ეს პოლ Galvin პირი?" "რატომ უნდა ვენდოთ მას?" "რატომ უნდა გადაიხადოს მისთვის?" Dennis აშკარად არ გამოიწეროთ ჩემი "მისცეს ცუდი ამბავი დასაწყისში" ფილოსოფია. გასაოცარია.

მე მივიდეს აეროპორტი და რაღაც წარმოუდგენლად სულელური მიზეზი, მე შევამოწმე ჩემი ბარგის. მე გახადა LAX მაგრამ ჩემი ბარგი არ. ჩემთვის, დაკარგვის ბარგის ბევრი მოსწონს გადის შვიდი ეტაპები მწუხარება. საბოლოოდ მე მას სასტუმროში, რომელზეც არ ბარგის, დაღლილი, მშიერი და ტარება ჩემი (ახლა, ძალიან crumpled) ბიზნეს სარჩელი. იგი იღებს დიდი ხნის მგზავრობის Newark — to O’Hare — კლიენტს — უკან O'Hare — და ბოლოს LAX.

მე საბოლოოდ თავს იჯდა სასტუმრო ოთახი, munching წლის Snickers ბარი, ამოწურა და ცდილობს ბარაბანი up ენერგეტიკული სკანირების მეშვეობით სასწავლო მასალა ერთხელ ისე, რომ მე არ ჰგავს სრული ass in კლასის წინაშე. ეს იყო ცოტა დაბალი წერტილი ჩემთვის დროს.

მე გაიღვიძა მეორე დღეს, გავაკეთე, რათა აღმოფხვრას out ჩემი სარჩელი ისე, რომ მე არ ჰგავს Willy Loman ცუდ დღეში და ხელმძღვანელობდა მეტი კლიენტი. როგორც არის ხშირ შემთხვევაში, პირადად იგი ლამაზი, თავაზიანი და ძალიან სასიამოვნო. ეს იდგა განსხვავებით მისი ძალიან გაბრაზებული ელ / ხმოვანი წინა დღეს. იგი იწვევს ჩემს შესახებ 3 მილის მეშვეობით შენობა მშენებლობის დასრულების შემდეგ, რომ sectioned off ტერიტორიაზე გიგანტური ქიმიური საწყობი, სადაც ჩვენ განვახორციელებთ კლასის მომდევნო სამი დღის განმავლობაში. The 15 ან 20 სტუდენტები ნელა შეიკრიბება, საუკეთესო მათ ჯერ კიდევ ველოდებით Dennis.

მე ყოველთვის დაიწყება გამეხადა სასწავლო კლასების შემოღება თავს, აძლევდა ზოგიერთი ფონზე და წერა ჩემი საკონტაქტო ინფორმაცია თეთრ დაფაზე. როგორც მე ვამბობ,, "დილა მშვიდობისა, ჩემი სახელი არის პოლ Galvin ", ვწერ ჩემს სახელს, ფოსტის და ტელეფონის ნომერი up თეთრ დაფაზე დიდი ასოებით ისე, რომ ყველას შეუძლია ნათლად დაინახავს. მივმართავ იმ ფაქტს, რომ მე შეცვლის დენის და გარწმუნებთ, რომ მე ვარ შესაფერისი შემცვლელი, და ა.შ.. მე ყველას მოკლედ მითხრათ მათი სახელი და რა უნდათ, რომ მივაღწიოთ იმ კლასის ისე, რომ მე შეიძლება მკერავი რამ მათი კონკრეტული მოთხოვნები, როგორც მე გასწვრივ. ჩვეულებრივი პერსონალი.

ჩვენ გადაიტანოთ რომ და მუშაობს პროექტორი. მე წასვლა წაშლას ჩემი საკონტაქტო ინფორმაცია და … მე მქონდა დაწერილი მას მუდმივი მარკერის. მე იმდენად გაჭირვებული. ჩემი აზრით თვალში, ჩანდა ამ: არსებობს ამ "პოლ Galvin" პირი, ბოლო წუთს ჩანაცვლება ჩვენი საყვარელი Dennis. ის ტარება crumpled up კოსტიუმებს და გაუპარსავი. მან მხოლოდ წერილობითი მისი სახელი დიდი ასოებით ჩვენს თეთრი ფორუმში მუდმივი მარკერი. რა მხედველობა!

ეს ყველაფერი დასრულდა სიხარულით, თუმცა. ეს იყო ქიმიური კომპანია, შემდეგ. Grizzled ვეტერანი თანამშრომელი გამოყვანილია რაღაც off შელფზე და, ალბათ დარღვევით EPA წესების, განბაჟებული ფორუმში. მე შეძლო დარჩენა 1/2 დღით ადრე კლასის მთელი კურსი და მომცეს კარგი მიმოხილვა ბოლოს. ეს გაამყარა ჩემი "pinch hitter" რეპუტაცია ჩემი კომპანია. ჩემი ბარგი ჩამოვიდა პირველ დღეს, ასე რომ მაშინ ბევრად უფრო მეტი presentable დღის ორი ასევე სამი.

როგორც მე იღებდა წითელი თვალის სახლში, მე ფიქრობდა "გაკვეთილების". იყო უამრავი ჭვრეტის. ურთიერთობა არის გასაღები. ვუთხრა კლიენტებს ცვლილებების შესახებ გეგმა. ნუ ოდესმე შეამოწმოთ თქვენი ბარგის აეროპორტში თუ თქვენ შესაძლოა თავიდან აცილება. მოუტანს სათადარიგო "პერსონალის" იმ შემთხვევაში, თუ ამის შეამოწმოთ თქვენი ბარგის და ეს doens't რათა ის. მე ვფიქრობ, რომ ყველაზე მნიშვნელოვანი გაკვეთილი გავიგე, თუმცა, სწორედ ამ: ყოველთვის შესამოწმებლად ნიშნის ქვედა მარცხენა კუთხეში თეთრ დაფაზე ადრე წერილობით, დიდი ასო, "Paul Galvin".

</ბოლო>

პერსპექტივები: SharePoint vs. Large Hadron Collider

Due to some oddball United Airlines flights I took in the mid 90’s, I somehow ended up with an offer to transform "unused miles" into about a dozen free magazine subscriptions. That is how I ended up subscribing to Scientific American magazine.

როგორც პროგრამული / საკონსულტაციო ადამიანები, we encounter many difficult business requirements in our career. Most the time, ჩვენ გვიყვარს შეხვედრის იმ მოთხოვნებს და რეალურად, it’s probably why we think this career is the best in the world. I occasionally wonder just what in the world would I have done with myself if I had been born at any other time in history. How terrible would it be to miss out on the kinds of work I get to do now, ამ დროს და ადგილს მსოფლიო ისტორიაში? მე ვფიქრობ,: საკმაოდ საშინელი.

წლების განმავლობაში, some of the requirements I’ve faced have been extremely challenging to meet. Complex SharePoint stuff, შენობა ვებგვერდი გადამამუშავებელი ფარგლებში დაფუძნებული არასამთავრობო ვებგვერდი მეგობრული ტექნოლოგია, complex BizTalk orchestrations and the like. We can all (იმედია) შეხედეთ ამაყად უკან ჩვენი კარიერა და აცხადებენ,, "yeah, ეს იყო რთული ერთი მოსაგვარებლად, თუმცა საბოლოოდ მე pwned რომ sumbitch!" Better yet, კიდევ უფრო საინტერესო და სახალისო გამოწვევები დაელოდება.

მე პირადად ვფიქრობ, რომ ჩემი რეზიუმე, ამ მხრივ, საკმაოდ ღრმა და მე პირადად ვამაყობ (თუმცა მე ვიცი, ჩემი მეუღლე არასოდეს არ მესმის 1/20th ეს). But this week, ვკითხულობდი სტატიას Large Hadron Collider in my Scientific American magazine and had one of those rare humbling moments where I realized that despite my "giant" სტატუსი გარკვეულ წრეებში ან როგორ ღრმა ვფიქრობ, ჩემს კარგად გამოცდილება, there are real giants in completely different worlds.

The people on the LHC team have some really thorny issues to manage. Consider the Moon. I don’t really think much about the Moon (თუმცა მე უკვე ძალიან საეჭვო ამის შესახებ მას შემდეგ გავიგე, ის slowing დედამიწის როტაცია, რომელიც შეიძლება არ იყოს კარგი ჩვენთვის ადამიანები გრძელვადიან პერსპექტივაში). მაგრამ, the LHC team does have to worry. LHC’s measuring devices are so sensitive that they are affected by the Moon’s (Earth-როტაციის-slowing და საბოლოოდ-მკვლელობის-all-ცხოვრება) gravity. That’s a heck of a requirement to meet — წარმოების სწორი გაზომვით მიუხედავად მთვარე ჩარევის.

მე pondering ამ საკითხზე როდესაც წავიკითხე ეს წინადადება: "The first level will receive and analyze data from only a subset of all the detector’s components, from which it can pick out promising events based on isolated factors such as whether an energetic muon was spotted flying out at a large angle from the beam axis." Really … ? I don’t play in that kind of sandbox and never will.

შემდეგი დროს მე out ზოგიერთ მეგობრებს, მე ვაპირებ დააყენებს სადღეგრძელო კარგი ხალხი მუშაობს LHC, hope they don’t successfully weigh the Higgs boson particle and curse the Moon. I suggest you do the same. It will be quite the toast 🙂

</ბოლო>

პროგრამები Tags:

ბოროტების Microsoft URL

I do a Google search:

იმიჯი

I click on the link highlighted above ("Download details: Windows SharePoint…").

მივიღებ ამ:

იმიჯი

Note the URL.

Looks pretty suspicious to me. I don’t know if I should laugh, chuckle or call a priest.

</ბოლო>

პროგრამები Tags:

სწრაფი Impression: სისტემის ცენტრი მოცულობა Planner for SharePoint

უბრალოდ გასროლა მდე სიმძლავრის დაგეგმვის ინსტრუმენტი, რომელიც არის ყველა rage ამ დღეებში.

მე ვერ მარტივი და სწრაფად მოდელირებული კლიენტს გარემოს ვმუშაობდი გასულ ზაფხულს.

ზოგიერთი trepidation, მე დაპრესილი საბოლოო OK ღილაკს და რეკომენდაცია, რაც არის საკმაოდ მსგავსია იმისა, რაც ჩვენ მივეცით კლიენტს (ჩვენ რეალურად ესროლა მეორე გამოყენებითი სერვერის მომავალი Excel გამოყენება). I take that to be a good sign and increases my confidence in the tool.

როგორც ჩანს საკმაოდ ძლიერი პერსონალი ბევრად უკეთესი ამოსავალი წერტილი, ვიდრე ცარიელი გვერდი.

I like that lets you get into some good detail about the environment. How many users, თუ როგორ პროექტით ისინი გამოიყენოთ სისტემა (გამომცემლობა, თანამშრომლობის, და ა.შ.), ფილიალი და კავშირით / network capacity between them and the mama server. Good stuff.

იგი სთხოვს ფართო დაფუძნებული შეკითხვებს და შემდეგ გაძლევთ tweak დეტალებს საკმაოდ მარცვლოვანი მოდელს შენი გარემო.

მე იშურებდნენ ჩამოტვირთვამდე რადგან ძალიან ბევრი სხვა რამ შეხედეთ მას, read and try to digest. I’m glad I did.

It’s an easy two-step process. Download system center capacity planner and then download the SharePoint models. It runs nicely on Windows XP.

საფუძველზე ჩემი სწრაფი შთაბეჭდილება, მე ვერ ვხედავ, თუ როგორ შეიძლება ანგარიშზე:

  • ძიება: სულ დოკუმენტები, იქნებ ტიპის დოკუმენტი, ენებზე.
  • Excel სერვერზე: რამდენად, თუ ყველა?
  • ფორმები სერვერზე: რამდენად, თუ ყველა?
  • BDC: რამდენად, თუ ყველა.

იმ შეიძლება მოდელირებული და მე ვერ ვხედავ მათ 10 წუთი მიმოხილვა.

მე აუცილებლად სარგებლობს ჩემი მომავალი კლიენტს.

მე რომ არ კონსულტანტი და ნაცვლად მუშაობს რეალური კომპანია :), I’d model my current environment and see how the tool’s recommended model matches up against reality. That would be pretty neat. It could lead to some good infrastructure discussion.

</ბოლო>

პროგრამები Tags:

Solution: System.IO.FileNotFoundException შესახებ “SPSite = new SPSite(url)”

განახლების: მე განთავსებული ამ საკითხთან დაკავშირებით MSDN აქ (http://forums.microsoft.com/Forums/ShowPost.aspx?PostID=2808543&SiteID=1&mode=1) and Michael Washam of Microsoft responded with a concise answer.

მე შევქმენი ვებ სერვისი იმოქმედოს, როგორც BDC მეგობრული ფასადი to a SharePoint list. When I used this from my development environment, იგი მუშაობდა ჯარიმა. როცა წავიდნენ ამ ახალ სერვერზე, მე შეექმნა ამ შეცდომის:

System.IO.FileNotFoundException: ვებ განაცხადი http://localhost/sandbox ვერ. შემოწმება, რომ თქვენ აკრეფილი URL სწორად. თუ URL უნდა იყოს ემსახურება არსებული შინაარსი, სისტემის ადმინისტრატორის უნდა დაამატოთ ახალი მოთხოვნის URL რუკების წინასწარ განზრახული განაცხადის. ზე Microsoft.SharePoint.SPSite .. ctor(SPFarm მეურნეობა, Uri requestUri, ლოგიკური contextSite, SPUserToken userToken) ზე Microsoft.SharePoint.SPSite .. ctor(სიმებიანი requestUrl) ზე Conchango.xyzzy.GetExistingDocument(სიმებიანი minId, სიმებიანი maxId, სიმებიანი ტიტული ფილტრი) in C:\დოკუმენტები და პარამეტრები პოლ ჩემი დოკუმენტები Visual Studio 2005 პროექტები xyzzy BDC_DocReview BDC_DocReview DocReviewFacade.asmx.cs:ხაზი 69

აქ არის ხაზზე 69:

გამოყენებით (SPSite საიტი = new SPSite("http://localhost/sandbox"))

მე შევეცადე სხვადასხვა ვარიაციები URL, მათ შორის გამოყენებით სერვერზე ნამდვილი სახელი, მისი IP მისამართი, არასასურველი დახრილ ხაზებს on URL, და ა.შ.. I always got that error.

მე Google to research it. Lots of people face this issue, ან ვარიაციები ეს, მაგრამ არავინ ჩანდა, რომ ეს გადაწყდება.

Tricksy MOSS თუ ასეთი დეტალური შეცდომა, რომ ეს არ მოხდეს ჩემთვის, რათა შეამოწმოს 12 hive logs. Eventually, შესახებ 24 საათის შემდეგ ჩემს კოლეგას რეკომენდაცია I გაკეთება, მე გადამოწმებული 12 hive ჟურნალი და აღმოჩნდა ამ:

გამონაკლისი მოხდა, ხოლო ცდილობს შეიძინოს ადგილობრივი მეურნეობა:
System.Security.SecurityException: მოთხოვნილი რეესტრის ხელმისაწვდომობის ნებადართული არ არის.
ზე System.ThrowHelper.ThrowSecurityException(ExceptionResource რესურსი) ზე
(სიმებიანი სახელი, ლოგიკური ჩაწერადი) ზე
(სიმებიანი სახელი) ზე
() ზე
() ზე
(SPFarm& ფერმის, ლოგიკური& isJoined)
ზონა ასამბლეას, რომ ვერ მოხერხდა იყო:  MyComputer

ეს გაიხსნა ახალი გამზირის კვლევის, ასე რომ იყო უკან Google. რომ გამიყვანა ამ ფორუმზე პოსტი: http://forums.codecharge.com / posts.php?post_id = 67135. That didn’t really help me but it did start making me think there was a database and/or security issue. I soldiered on and ანდრია CONNELL ნახვა post finally triggered the thought that I should make sure that the application pool’s identity account had appropriate access to the database. I thought it already did. თუმცა, ჩემი კოლეგა წავიდა და მისცა ოთახი აუზი პირადობის ანგარიშის სრული წვდომა SQL.

როგორც კი მან გააკეთა, რომ ცვლილება, everything started working.

რა მოხდა ყველაზე გამოხატული Haiku პოემა:

პრობლემები ამაღლება ხელში.
You swing and miss. Try again.
წარმატება! But how? რატომ?

მან არ სურს დატოვოს რამ მარტო, როგორიცაა, რომ, უნდოდათ, რათა მინიმალური ნებართვა (და ალბათ თვალი წერილობით წაკითხვა შესვლის; მე სცემეს მისი punch, muhahahahaha!).

მან ამოღებულ თანმიმდევრული ნებართვა ოთახი აუზი პირადობის ანგარიშზე, სანამ … there was no longer any explicit permission for the app pool identity account at all. The web service continued to work just fine.

We went and rebooted the servers. Everything continued to work fine.

ასე რომ,, to Recap: we gave the app pool identity full access and then took it away. The web service started working and never stopped working. Bizarre.

თუ ვინმე იცის, თუ რატომ არ უნდა მუშაობდნენ, გთხოვთ დატოვოთ კომენტარი.

</ბოლო>

პროგრამები Tags: