Introduction to Computer Science and Programming | MIT Video Course

This subject is aimed at students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems. It also aims to help students, regardless of their major, to feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class will use the Python™ programming language.


Forfiles

Selects and executes a command on a file or set of files. This command is useful for batch processing.

forfiles can be for instance used to periodically delete all files older than X days from a specific directory

<br /> forfiles -p &#8220;c:tmp&#8221; -s -m *.* -d -3 -c &#8220;cmd /c del @FILE&#8221;<br />
This command will remove all files older than 3 days (-3) from directory c:tmp
It is not part of the normal distribution of Windows, but it can be downloaded from Microsoft Technet

If your windows XP fails to install drivers for USB devices, complaining that “The services database is locked”, you probably have a service somewhere that can not start. Check out your services, sort them by status and if there is one saying ‘starting’ try to disable it. It did help me, hopefully it will help someone else too

for some time I had a strange problem; I could load sites from http://localhost in MSIE, but whenever I tried FireFox, it asked me for an user name and password. I’ve tried it all but I couldn’t authenticate.
If you happen to have the same problem, here’s a quick and simple workaround:

  1. In Firefox type about:config in the addressbar
  2. Find the preference named network.automatic-ntlm-auth.trusted-uris
  3. Doubleclick and type localhost
  4. Enter and you’re done

A recent client project required some automated way of identifying nudity in hundreds of thousands pictures per month. While searching for a solution, I found this article: Finding Naked People.
It discusses an algorithm that finds large skin-collored areas in images.

An even more detailed description of an algorithm that allows classifying offensive sites based on image content is available in this pdf document.

Here’s an interesting small trick to quickly get triadic harmonious colors when programming or writing HTML:

Take a hex representation of a color, e.g.
#778899:
Then rotate to the left to get the first triadic color:
#889977:
And rotate once more to get the second one:
#997788:

Easy, isn’t it 😉

This is my port of the excellent password bookmarklet from Nic Wolff
It uses the Liorean bookmarklet code to implement a simple workaround for the size limit in Microsoft Explorer’s URL length.
Installation instructions:
Follow these carefully or your bookmarklet will not work.

  1. Save this piece of javascript into a file somewhere on your server as passlet.js:
    <br /> function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * 8));}<br /> function core_md5(x, len){x[len &gt;&gt; 5] |= 0x80 &lt;&lt; ((len) % 32);x[(((len + 64) &gt;&gt;&gt; 9) &lt;&lt; 4) + 14] = len;var a = 1732584193;var b = -271733879;var c = -1732584194;var d = 271733878;for(var i = 0; i &lt; x.length; i += 16){var olda = a;var oldb = b;var oldc = c;var oldd = d;a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);c = md5_ff(c, d, a, b, x[i+10], 17, -42063);b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);a = safe_add(a, olda);b = safe_add(b, oldb);c = safe_add(c, oldc);d = safe_add(d, oldd);}return Array(a, b, c, d);}<br /> function md5_cmn(q, a, b, x, s, t){return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);}<br /> function md5_ff(a, b, c, d, x, s, t){return md5_cmn((b &amp; c) | ((~b) &amp; d), a, b, x, s, t);}<br /> function md5_gg(a, b, c, d, x, s, t){return md5_cmn((b &amp; d) | (c &amp; (~d)), a, b, x, s, t);}<br /> function md5_hh(a, b, c, d, x, s, t){return md5_cmn(b ^ c ^ d, a, b, x, s, t);}<br /> function md5_ii(a, b, c, d, x, s, t){return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);}<br /> function safe_add(x, y){var lsw = (x &amp; 0xFFFF) + (y &amp; 0xFFFF);var msw = (x &gt;&gt; 16) + (y &gt;&gt; 16) + (lsw &gt;&gt; 16);return (msw &lt;&lt; 16) | (lsw &amp; 0xFFFF);}<br /> function bit_rol(num, cnt){return (num &lt;&lt; cnt) | (num &gt;&gt;&gt; (32 &#8211; cnt));}<br /> function str2binl(str){var bin = Array();var mask = (1 &lt;&lt; 8) &#8211; 1;for(var i = 0; i &lt; str.length * 8; i += 8)bin[i&gt;&gt;5] |= (str.charCodeAt(i / 8) &amp; mask) &lt;&lt; (i%32);return bin;}<br /> function binl2hex(binarray){var hex_tab = &quot;0123456789abcdef&quot;;var str = &quot;&quot;;for(var i = 0; i &lt; binarray.length * 4; i++){str += hex_tab.charAt((binarray[i&gt;&gt;2] &gt;&gt; ((i%4)*8+4)) &amp; 0xF) + hex_tab.charAt((binarray[i&gt;&gt;2] &gt;&gt; ((i%4)*8)) &amp; 0xF);}return str;}<br /> function doIt(master){<br /> if (master==&#8221;) master=window.prompt(&#8216;Enter your master password&#8217;);<br /> if (master != &#8221; &amp;&amp; master != null)<br /> {<br /> re = new RegExp(&quot;https*://([^/]+)&quot;);<br /> host = document.location.href.match(re)[1];<br /> var i=0,j=0;<br /> var p=hex_md5(master+&#8217;:&#8217;+host).substr(0,8);<br /> var F=document.forms;<br /> for(i=0;i &lt; F.length;i++)<br /> {<br /> E=F[i].elements;<br /> for(j=0;j &lt; E.length;j++)<br /> {<br /> D=E[j];<br /> if(D.type==&#8217;password&#8217;)<br /> {<br /> D.value=p;<br /> D.focus();<br /> }<br /> if(D.type==&#8217;text&#8217;)<br /> {<br /> if(D.name.toUpperCase().indexOf(&#8216;PASSWORD&#8217;)!=-1||D.name.toUpperCase().indexOf(&#8216;PASSWD&#8217;)!=-1)<br /> {<br /> D.value=p;D.focus();<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br />
  2. Drag one of the links(or both) to the ‘Links’ toolbar in your MSIE, or into favorites:
    • This bookmarklet PASS uses the hardcoded password.
    • This bookmarklet aPASS will ask for password each time.
  3. Edit the URL of the passlet.js in the bookmark
  4. If you’re using the hardcoded master password, edit it too.

Here’s a workaround for a weird problem with Windows XP and Samba.
If you keep getting ‘access denied’ messages on your Samba shares, try to switch off the password encryption. It is a very unsafe workaround, but it did help in my case:
You can turn encrytion off in XP, by going to Administrative Tolls -> Local Policies -> Security Options, and enabling Microsoft Network Client: send unencrypted passwords to third-party SMB services

Windows comes with a bunch of pretty cool but not very well known tools.
I keep forgetting the names, so here’s a note to myself : ;o))
Use the Windows R magic grip, and then:

  • MSCONFIG– gives you access to all programs and services run on windows startup
  • GPEDIT.MSC – gives you controll of just about everything in the OS
  • IEXPRESS – allows you to create a self-extracting package with many options

Recently I needed to call XMLRPC functions from an ASP server.
There is a nice XMLRPC library available from David Carter-Tod but I had a small problem with it.
It messed up the UTF8 encoding of my strings.
I’m sure that I’m not the only one with this problem, so here’s a simple solution:
Just add the following line at the beginning of the xmlrpc.asp file:

<%@ CodePage=65001 %>

Simple and effective 🙂

This seems to be a reoccuring issue, so I think it doesn’t hurt to show the solution once again:

Sometimes it happens that MSIE refuses to save images under the original name and filetype. It will always suggest ” unknown.bmp ” as the filename.

To solve this problem:

  1. go to Tools/Interent Options/ Advanced
  2. Find the section called Security
  3. Find the item calledDo Not save encrypted pages to disk
  4. Make sure it is checked
  5. Hit the Apply button

there you go ;o)