Monday, November 5, 2012

'premature end of script headers' in Apache

This is just a good-to-remember for myself.

When Apache reports this error with your CGI program, a script most of the case, you need to understand, or to know what the error message means, or what Apache complains about. Which I found many posts that I came across talking about the error do not really explain.

As you know, output of any CGI program must take the following form.

HEADERs
e.g. Content-type: text/html

A blank line

The payload. Normally a <HTML> element.

Apache complains with the message that the output fails to take the form.

Luckily, for the Perl script that I had the problem with, it was rather easy to locate and eventually remove the issue.

This was the good reference. http://www.linuxjournal.com/article/1367 It explains how to run a Perl CGI script from the command-line.

The point is that when you run it, it waits for input, for any possible POST payload. You indicate the end of the input with a control+D. Then it runs and you can see the output on your terminal. Once you get it, locating the issue should be (normally) straightforward.

In my case, the issue turned out that an external executable called from the script ends abnormally, and therefore corrupts the output.

Horizontal scroll bar does not appear

This is about an issue that we had with our public facing web site master page. That the horizontal scroll bar does not show, when it should, that is, when the page width is bigger than that of the browser window displaying it. Interestingly, it comes when you scroll down to the bottom of the page.

I did not know that SharePoint 2010 implements the scroll bars with some JavaScript so they enclose the s4-workspace div, not the body element, including the “ribbon”. And we had the above issue because I did the master page in such a way that it does not have the ribbon when the pages are viewed by the visitors.

I am sure that it is a requirement for everybody who do their public facing sites on SharePoint 2010. We need to get rid of the ribbon when the pages are consumed, while we do need it when we prepare them.

At the very early stage (with SP2007), I achieved it by denying any write on the internet zone. The Sites Action menu was not presented, if I remember well. Then soon enough, I needed to come up a different mechanism, because the site does need to be writable in certain cases such as a feedback form. I wrote a control, and with which I enclose the ribbon so that the ribbon is not rendered on the internet zone. This “not rendered” was the cause of the issue.

It appears that when SharePoint JavaScript displays the horizontal scroll bar at the bottom of the window, it positions it vertically from the ribbon. Therefore, when it does not find the ribbon, the starting point, it displays it only at the very bottom of the page, where s4-workspace div ends.

I have overcome it by hiding the ribbon i.e. style="display:none;" rather than being not rendered.

Hope it helps.

References:
- Starter Master Page: http://archive.msdn.microsoft.com/odcSP14StarterMaster
- A useful JavaScript trick: http://blog.pixelmill.com/944/sharepoint-2010-%E2%80%93-adding-a-fixed-footer-to-your-sharepoint-master-page/

Monday, October 15, 2012

variationsfixuptool

I got this error message.

The attempted operation is prohibited because it exceeds the list view threshold enforced by the administrator.

Luckily, I was able to identify the issue.

I knew the Variation uses the “Relationships List” List at the (variation or web app?) root. I looked at the list settings. It shows:

threshold

We could increase the threshold for the Web Application in Central Administration, Web Applications Management, Manage Web Applications, General Settings, Resource Throttling.

But what does the variationsfixuptool try to do with this list and reports the error due to this threshold?

With the –scan switch, after scanning the integrity of the specified subsite and reporting the result, it displays the entire “Relationships List”, which seems useless to me.

For the moment, I have not yet tried the –fix switch, thus do not know whether hitting the threshold prevents it from functioning properly when it tries to correct the integrity. Will see and write here again.

Friday, June 29, 2012

Java Versioning

I am not a Java programmer, at least for last five or so years. So when I find the system requirement of some software that I need to install say it requires JRE version XX or higher, I am not so existed.

Their versioning, and naming as well, are confusing.

I think I did a bit of research on it before, but find what I learnt back then nowhere now. So this time again, did some Googling and found this http://www.ehow.com/about_6574616_java-jre-1_6_.html. This clears things out to a certain extent.

Another possibly very useful pointer would be http://java.sun.com/products/archive/.

For instance, today, I was looking for JRE 1.6 update 17. According to the explanation, I should find what I am looking for under “Java SE 6”. And the “Java SE Runtime Environment 6u17” found on the next page opened must be the one.

But again, what is this “6u17”? “Update 17 for Java (1.)6”? OK... But I believe they are trying to confuse us deliberately...

Tuesday, June 19, 2012

Embedded resource

I have the feeling that I faced this difficulty already in the past. But obviously did not write about it here. And so this time again, it took some time to figure out. Now I should keep it here.

It is to have some “resource files” embedded in the assembly and accessible from clients. Not about the other type of “resource files” where you have key/value pairs.

I used this technique in the past with a web part, and remember it was rather straightforward.

But then, this time, tried to do the same in a web application project and ran across a few points that required some Googling to overcome.

First of all, the project's AssemblyInfo file needs to modified. With hands? I did. http://aspnet.4guysfromrolla.com/articles/080906-1.aspx explains it.

Secondly, the “this.GetType()” in the following code does not work, with a web application project.

Page.ClientScript.RegisterClientScriptInclude("hoge", Page.ClientScript.GetWebResourceUrl(this.GetType(), "hoge.js"));

Correct me if I am wrong. I did not bother digging it further to confirm, but in a web app project, embedded resource files such as a javascript file are included into the project’s assembly together with the code behind classes etc. But the “this” does not point to it. Rather, it points to the temporal assembly the framework generates from the .aspx file accessed.

But GetWebResourceUrl method succeeds nevertheless. This makes its debugging difficult. The method succeeds and return a seemingly valid WebResource.axd path. It is then included into the response html. Client requests it and Bomb. The requested file is not found.

http://stackoverflow.com/questions/320484/webresource-hell-resource-cannot-be-found told me the fix.

Page.ClientScript.RegisterClientScriptInclude("hoge", Page.ClientScript.GetWebResourceUrl(typeof(whatever class that I am sure cohabit with the js), "hoge.js"));

I do not know how framework maps the long parameter of WebResource.axd request to my javascript. But it is certainly not in the temporal assembly the framework generates, represented by “this”, but in my project’s assembly. I have to specify it precisely.

Monday, June 4, 2012

Delete a Page Layout

I wanted to delete a Page Layout that I had deployed thru feature and used here and there already. The reason was that I became wanting to attach a preview image of my own to it. Thought it should be straightforward. A small modification to the feature. But it turned out not...

http://social.msdn.microsoft.com/Forums/en/sharepointecm/thread/273ef6a0-1f9f-46d8-9e9f-a70f81bc79cc

People here appear to have the same problem and discuss that the only solution is to delete the provisioned layout once and re-activate the feature.

But to delete a layout is not easy. Obviously I need to make sure it is not used by any page. I did that, by writing some code to list all pages using the layout and replacing with other layout. But still cannot. The famous “This item cannot be deleted because it is still referenced by other pages” message continues. It could be that the layout being not used by any page is not enough. Other places such as sites configured to have it available may need to be taken care of too, which I may have a closer look in future when I find time.

http://sharepointcodeblock.blogspot.com/2008/06/deleting-page-layout-or-master-page.html

In the meantime, I tried this too but no luck. Then realized that once I have moved it to a subfolder, even though I cannot delete it still, I can provision the new one, with my preview image. Not beautiful that the old one is always sitting in the subfolder, but at least I guess I have achieved what I wanted.

One more thing. I would like to keep this link as well for possible future reference.

http://blog.mastykarz.nl/provisioning-publishing-pages-features-declarative-markup/

Where I found the name of the feature which deploys the OOTB Publishing Page Layouts. Only by looking into it, I was able to find the name of the property (turned out to be “MasterPageDescription”) for the description (not very visible. appears for instance on _Layouts/CreatePage.aspx).

Friday, June 1, 2012

Applying a background image to a table row

 

http://snook.ca/archives/html_and_css/applying_a_back

It is often the case that to be sure that something is NOT possible is more difficult than to know how-to for things possible.

Wednesday, January 25, 2012

DOCTYPE Mobile

It took more than a day...

I was implementing mobile view of our internet-facing web site, which is on MS SharePoint 2010.

The page’s computed width gets 980px. But I could not find out where it comes from.

We had design company prepared their designs in HTML. So my task should not have been much more than a copy and paste. However, SP pages generated based on my mobile master page (basically of copy and paste) gets its computed width as 980px. Consequently, the contents gets all too small to read, while the HTML given by the design company shows nicely on mobiles.

Towards the end of a fruitless day, I noticed that the DOCTYPE definitions are different.

I did this mobile master page, based on that for PCs, which contains those SP controls and all. Its DOCTYPE is the usual:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

and I did not think I need to change this.

One defined in the design company’s HTML is:

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">

With it, my SP pages look now OK on mobiles.

I am not an authority or anything. Do not know anything about the wapforum. I am writing this here just hoping that it may help you there tearing your hairs, not understanding where the hell the 980px width is coming from.