Python - CSV to sqllite
Nice Python CSV to sqlite conversion...
# toSqlite.py - Imports humod06.txt to sqlite.
import csv
import sqlite3
conn = sqlite3.connect('humod.sqlite')
c = conn.cursor()
c.execute('''DROP TABLE IF EXISTS skl_desc''')
c.execute('''CREATE TABLE skl_desc (
id INTEGER PRIMARY KEY AUTOINCREMENT,
parent INTEGER,
mod INTEGER,
desc TEXT,
abr TEXT,
r INTEGER)
''')
insertSql = '''
INSERT INTO skl_desc
VALUES (null, ?, ?, ?, ?, ?)
'''
reader = csv.reader(open('humod06.txt', 'rb'), delimiter='\t')
rownum = 0
for row in reader:
if rownum == 0: pass
else:
parent = 0
rValue = 0
if row[5] == 'R':
rValue = 1
t = (parent,
row[1],
unicode(row[4].strip(), 'utf8'),
unicode(row[2].strip(), 'utf8'),
rValue)
c.execute(insertSql, t)
rownum += 1
print('rows: %s' % rownum)
conn.commit()
c.close()
Python - CSV to XML
# toXml.py - Imports humod06.txt to XML.
import csv
from xml.dom.minidom import parseString
doc = parseString('<skill_descriptors lvl="0"/>')
reader = csv.reader(open('humod06.txt', 'rb'), delimiter='\t')
rownum = 0
elm = doc.documentElement
for row in reader:
if rownum == 0:
header = row
else:
sd = doc.createElement('skill_descriptor')
colnum = 0
for col in row:
#print '%-8s: %s' % (header[colnum], col)
sd.setAttribute(header[colnum].lower(), unicode(col.strip(), 'utf8'))
colnum += 1
while row[3] <= elm.getAttribute('lvl'):
elm = elm.parentNode
elm.appendChild(sd)
elm = sd
rownum += 1
print(doc.toxml())
print('rows: %s' % rownum)
doc.unlink()
Egregious IE Bug
After nearly a decade of battling Internet explorer, you would have thought I knew all of IE's quirks, but today I stumbled across a "feature" (read bug) which absolutely astounded me. Running the code below in IE 7 or 8 shows their implementation of innerHTML strips leading spaces from the DOM. This wreaks havoc on HTML editors such as TinyMCE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>XHTML Page</title>
</head>
<body>
<div id="baseDiv">
<a id="link" href="#" onclick="helloWorld()">Say hi...</a>
</div>
<script type="text/javascript">
//<!--<![CDATA[
function helloWorld() {
var newSpan = document.createElement('span');
newSpan.innerHTML = ' hello world ';
prompt('', newSpan.outerHTML);
}
//]]>-->
</script>
</body>
</html>
SVN - parse tlsext Work-Around
UPDATE (Apr 2, 2010): Version 2.2.15 does seem to have fixed this issue - I'd recommend upgrading if possible.
It took me so long to find the solution to this problem that I just had to share... Ever since last August, after upgrading Apache HTTPD from version 2.2.11 to version 2.2.13 I have had a nagging issue with my Subversion server and "parse tlsext" errors during large commits and other SVN operations (it seems I skipped version 2.2.12 for no apparent reason, but that version had the problem too).
SSL negotiation failed: SSL error: parse tlsext
According to comments on this page, "This issue is most propably because of using multiple SSL enabled VirtualHosts in Apache httpd 2.2.12 - 2.2.14 and OpenSSL 0.9.8f - 0.9.8l". They do link to a mod_ssl patch which they claim works. I did not try the patch myself, though - my SVN server is on Windows and I am not about to start building Apache on Windows, I will wait for the binaries to come! The patch is from November, so hopefully it will make its way into 2.2.15, whenever it is released.
Work Around:
After a bit of Googling I found several forum/mailing-list posts which pointed to disabling Transport Layer Security (TLS) Extensions by adding the following to the VirtualHost entry in httpd-ssl.conf file
SSLProtocol -ALL +SSLv3
The critical part I had been missing was that this needs to be added to EACH VirtualHost using SSL on the same port. Since I have multiple named VirtualHosts running on port 443, even though I had disabled TLS for the affected VirtualHost, TLS was still enabled on the port. Once I applied this to all VirtualHosts on port 443 everything worked as it should.
Hope it helps someone...












