The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,860 other subscribers

Archive for the ‘HTML’ Category

HTTP protocol requires you to escape spaces (usually with %20 or with +), but web-browsers will do that for you

Posted by jpluimers on 2014/02/20

Since the time that spaces are allowed in path and file names, it has caused confusion.

I personally like the readability of  spaces, but still tend to avoid them as they usually cause more harm than the readability gains.

An interesting thread about spaces in file names is operating systems – What technical reasons exist for not using space characters in file names? – Super User.

In URLs, you there are various kinds of places where spaces can be used. You have to escape as Xah Lee wonders in does HTTP protocol require space be encoded in file path?.

The escaping is part of the URL Encoding, but the escapes depends on the position of the space. In the query part (after the first ?), you can have it escaped by both %20 and plus sign, but in the path part (before the first ? sign), it can only have a %20.

This is explained by bobince in urlencode – when to encode space to plus (+) and when to %20? – Stack Overflow.

That escaping basically makes path and file names a lot less readable when passed as a URL. It causes posts like these:

But why can you still use spaces when you type a URL in your web browser, or use it in a href, src or other HTML URL attribute?

Xah Lee rightfully earlier wondered about that in webserver – space in url; did browser got smarter or server? – Stack Overflow.

Technically, both are not allowed. But web browser manufacturers understand we humans are lazy, and accommodate for that by encoding these when putting them into the HTTP request.

You can type “https://www.google.com/search?q=foo bar” in your web browser, and depending on the browser, it gets translated into either one of these:

Recap:

  • encode spaces in URLs as %20
  • try to avoid spaces in path and filenames

–jeroen

via:

Posted in Development, Encoding, HTML, Software Development, URL Encoding, Web Development | Leave a Comment »

Generate HTML Tables Clean and Fast

Posted by jpluimers on 2014/01/23

I wish I had found about Generate HTML Tables Clean and Fast years ago.

Every once in a while I want to generate the source code for an HTML table with some content easily.

I’ve found no tool doing this in an easy manner and starts in a split second.

But the web page Generate HTML Tables Clean and Fast does.

Correction: did. It is now off-line, but the Blended Technologies » Blog Archive  blog posts about it are still online: Introducing TableGen – The HTML Table Generator and Tablegen Goes Open Source, as is the WayBack machine archive for it.

So I installed Python on my openSUSE server according to Embedding Python In Apache2 With mod_python (… OpenSUSE) | HowtoForge, (could as well have configured in httpd.conf in stead of python.conf: no difference between installing mod_python via httpd.conf and conf.d in apache) then installed the TableGen source there.

(Note: more python.conf examples)

That would still have Python generate a 404 error (uncool: a python generated 404 error does not leave a log of the cause anywhere), not because the index.py was absent, but because it was written in old style “print” statements, not using the new style def index(req); way (thanks Senthil Kumaran, and AJ. for your answer).

So I did some research (this was my first encounter with Python) at for instance Paul Osman : Introduction to mod_python, then rewrote the print parts of the script into string concatenations, then return the full HTML.

(Note: if there is a print "Content-Type: text/html" (for instance demonstrated in Hello World | Web Python), you can omit it, or set the req.content_type like req.content_type = 'text/html' which usually is determined automatically by Python).

That caused quite a few IndentationError: expected an indented block quote errors: python is indentation sensitive (I hadn’t used a language depending on that for ages), and gives a confusing error when you have a colon (:) followed by an unindented docstringPython: I’m getting an ‘indented block’ error on the last 3 quotes (“””).

Then it still didn’t completely work: the form parameters would not be obtained correctly, so I read further, found 3.1 A Quick Start with the Publisher Handler and started to fix that too. That took way too long, so I found out that “mod_python” is not very much maintained any more and “mod_wsgi” is the way to go.

So I disabled the “python” module in YaST2, removed “/etc/apache2/conf.d/python.conf”, then installed the “apache2-mod_wsgi” software package in YaST2, then added the “wsgi” module to HTTP Server Configuration list of Server Modules (it automatically gets enabled) and saved the configuration.

These steps modified the APACHE_MODULES in /etc/sysconfig/apache2, restarted apache with “rcapache2 restart”. You can verify with “httpd2 -M” which modules are loaded. The list should exclude “python_module (shared)” and includes “wsgi_module (shared)”.

Most of this is described in has anyone gotten mod_wsgi working.

Python is whitespace sensitive, but you can have multiple statements on one line. That’s why Python allows semicolons after each statement.

Read Setting up Python with WSGI on Apache for a directory – Stack Overflow.

Read PyCon Conference Slides – Sydney 2010 – Python WSGI adapter module for Apache.

Read Graham Dumpleton: Why are you using embedded mode of mod_wsgi?.

Read Serving Python scripts with Apache mod_wsgi, part I | Leave No Bit Unturned.

Read Parsing the Request – Get | Web Python.

Watch WSGI Tutorial. It explains a lot, including Accessing POST Data from WSGI.

Error “Attempt to invoke directory as WSGI application” -> you cannot do that, there is no way to map a directory to an “index.py” in that directory.

For importing .py files from the same directory as your main .py file:

    import os
    import sys

    directory = os.path.dirname(__file__)
    sys.path.insert(0, directory)

    from webutils import *

Start using The Web framework for perfectionists with deadlines | Django.

A few really cool things about this page:

  • It is a web page, so easy to reach
  • It starts fast
  • You can increase the column/row count without loosing the entered data
    (as it stores the contents as a URL)
  • It can generate a thead for you
    (but not a tfoot)

Generating something like this was a breeze: Read the rest of this entry »

Posted in *nix, Apache2, Development, HTML, Linux, openSuSE, Power User, Software Development, SuSE Linux, Tumbleweed, Web Development | Leave a Comment »

Generating complex math visualizations in SVG using C# and ILNumerics – Scott Hanselman

Posted by jpluimers on 2013/12/15

Funny how Generating complex math visualizations in SVG using C# and ILNumerics and MathViz (no, not this MathViz!) look so similar.

I hope the MathViz code becomes public one day.

–jeroen

via: Generating complex math visualizations in SVG using C# and ILNumerics – Scott Hanselman.

Posted in .NET, Delphi, Development, HTML, HTML5, iOS Development, Mobile Development, Software Development, Web Development | Leave a Comment »

Interesting series of Chrome Development articles by Umar Hansa | Nettuts+

Posted by jpluimers on 2013/10/03

If you (want to) do web-development with Chrome, then be sure to read the articles by Umar Hansa | Nettuts+.

At the time of writing, there were three articles centered around using Google Chrome as part of your developemt suite, and a few more on things like HTML 5 and CSS:

Besides the technical insight, I also very much like the writing style. Great job Umar!

–jeroen

via: Umar Hansa | Nettuts+.

Posted in Chrome, CSS, Development, Google, HTML, HTML5, Power User, Software Development, Web Development | 2 Comments »

Parameters for use in a Google Maps URL (zoom level, position, map-type, etc; via StackOverflow)

Posted by jpluimers on 2013/09/11

Thanks for StackOverflow user xordon for this answer:

This is current accepted way to link to a specific lat lon (rather than search for the nearest object).

http://maps.google.com/maps?z=12&t=m&q=loc:38.9419+-78.3020

  • z is the zoom level (1-20)
  • t is the map type (“m” map, “k” satellite, “h” hybrid, “p” terrain, “e” GoogleEarth)
  • q is the search query, if it is prefixed by loc: then google assumes it is a lat lon separated by a +

–jeroen

via: What parameters should I use in a Google Maps URL to go to a lat-lon? – Stack Overflow.

Posted in Development, Google, GoogleMaps, HTML, Power User, Software Development, Web Development | Leave a Comment »

inessential.com: Brian’s Stupid Feed Tricks

Posted by jpluimers on 2013/03/20

If you think it’s easy to deal with RSS read this:

inessential.com: Brian’s Stupid Feed Tricks.

It reminds me so much about handling StUF.

–jeroen

Posted in Development, HTML, HTML5, SOAP/WebServices, Software Development, StUF, Web Development | Leave a Comment »

Word Clouds and algorithms to generate them

Posted by jpluimers on 2012/10/17

While preparing for the Category Cloud series of posts, I found a lot of helpful links.

Here they are:

–jeroen

Posted in .NET, ASP.NET, C#, Development, HTML, Software Development, Web Development | Leave a Comment »

Displaying formulas using HTML (via: More TVM–calculating the IRR : Algorithms for the masses – julian m bucknall)

Posted by jpluimers on 2012/10/04

I saw julian Bucknall post some beautiful formatted functions in a few of his Algorithms for the masses blog and wondered how he did it.

[a = P . r^N . \frac { (1 – r) } { (1 – r^N) }]

Why is his formula code looking so simple, and why doesn’t it display on my blog?

So I asked him (:

Hi response was “use MathJax“:

I’m loading the MathJax JavaScript library in my pages:
http://www.mathjax.org/

Here’s the post where I talk about it and how I tweak the expressions:
http://blog.boyet.com/blog/blog/tightening-the-feedback-loop-when-writing-latex-expressions-for-mathjax/

If you want to experiment writing such expressions, I have the page I’m describing in the above post online:
http://blog.boyet.com/blog/files/uploads/MathJaxFeedback.html

There are various ways to include the MathJax JavaScript, and if you do, you can use both LaTeX and MathML style formulas. Read all about it on the MathJax Getting Started page.

–jeroen

via:

Posted in Development, HTML, Software Development, UI Design, Web Development | 2 Comments »

Many more event videos available at Channel 9 (was: PDC10 – view Microsoft PDC 2010 sessions on your PC)

Posted by jpluimers on 2012/08/28

Dang; I thought this had long left the posting queue, but somehow it ended in the drafts (:

Since then, many more event videos made it to Channel 9, including Build 2011, and TechDays 2012.

Anyway, here it is:

Microsoft’s PDC 2010 was held at the end of October 2010 in Redmond, WA, USA.

For the people that could not attend, it is very nice to view the sessions using the PDC10 player (it seems still people didn’t learn and start stripping the century parts from years again!).

Even if you are not using Visual Studio, .NET Azure or other Microsoft Technologies, there are a lot of interesting sessions showing the directions that Microsoft is taking.
Comparing that to what you do today is always a good thing to do: it helps you reflect, an important part of your personal development.

A few things I found interesting (in no particular order):

  • Asynchrony support in C# 5 and VB.NET 11 based on the Task Parallel Library
  • The choice to favour HTML 5 over SilverLight, even though Internet Explorer 9 and Microsoft’s HTML 5 authoring/development tools are far from ready
  • Azure reporting: is reporting the next big thing on clouds?
  • Offline versus online in the cloud world
  • NuPack – does it bring package management to the same level as Ruby or *nix?
  • XNA for XBox, Windows and Windows Phone

Enjoy!

–jeroen

Posted in .NET, .NET 4.5, C#, C# 4.0, C# 5.0, Channel9, Cloud Development, Database Development, Delphi, Development, HTML, HTML5, Mobile Development, SilverLight, SocialMedia, Software Development, Visual Studio 11, Visual Studio 2010, Visual Studio and tools, Web Development, Windows Azure, Windows Phone Development, XNA | 2 Comments »

XML and HTML escapes

Posted by jpluimers on 2012/07/26

While reviewing some client’s code, I noticed they were generating and parsing XML and HTML by hand (do not ever do that yourself!).

Before refactoring this into something that uses libraries that properly understand XML and HTML, I needed to assess some of the risks.

A major risk is to get the escaping (and unescaping) of XML and HTML right.

Time to finally organize some of my links on escaping HTML and XML that I had in my favourites list.

The starting point is the List of XML and HTML character entity references on Wikipedia. It is readable, complete and lists both kinds of escapes.

XML escapes

The official W3C text that describes XML escaping is hard to read.

There are only 5 predefined XML entities for characters that can (some must) be escaped. This table is derived from the Wikipedia article.

Name Character Unicode code point
(decimal)
Standard When to escape (from the XML 1.0 standard) Description
quot U+0022 (34) XML 1.0 To allow attribute values to contain both single and double quotes double quotation mark
amp & U+0026 (38) XML 1.0 Outside  comment, a processing instruction, or a CDATA section ampersand
apos U+0027 (39) XML 1.0 To allow attribute values to contain both single and double quotes apostrophe (= apostrophe-quote)
lt < U+003C (60) XML 1.0 Outside  comment, a processing instruction, or a CDATA section less-than sign
gt > U+003E (62) XML 1.0 in content, when that string is not marking the end of a CDATA section greater-than sign

HTML escapes

Read the rest of this entry »

Posted in " quot, & amp, > gt, < lt, ' apos, ASCII, Development, Encoding, HTML, Power User, SocialMedia, Software Development, Unicode, Web Development, WordPress, XML, XML escapes, XML/XSD | 1 Comment »