Is It Dark Outside

So, here it is. Thanks to http://isitdarkoutside.com you will never have to trouble yourself with the question "is it dark outside?" anymore. This super-advanced Android application will let you focus on more important questions such as "which shoe goes on which foot?" from now on. Thank us later.

Is It Dark Outside QR Code
download APK file here

You are missing some Flash content that should appear here! Perhaps your browser cannot display it, or maybe it did not initialise correctly.

Version 0.1 - 2010-02-07,

  • New icon
  • Public release

Version 0.0.1 - 2010-02-05,

  • better errorhandling (missing location status, no network)
  • Added sunrise and sundset hours to the information dialog

Version 0.0.0 - 2010-02-05
N/A - Dev-Snapshot, link removed

Using a Canvas Element in XUL / Mozilla-Extensions

It's actually pretty simple, but many small things can go wrong. So, here is your small boilerplate code for a XUL overlay which renders a small canvas area in the status bar:

  1. <?xml version="1.0"?>
  2.  
  3. <overlay id="myOverlay"
  4. xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  5. xmlns:html="http://www.w3.org/1999/xhtml">
  6.  
  7. <statusbar id="status-bar">
  8. <statusbarpanel>
  9. <box>
  10. <html:canvas id="myCanvas" width="15" height="15" style="border:1px solid black;"/>
  11. </box>
  12. </statusbarpanel>
  13. </statusbar>
  14. </overlay>

and some simple painting in JS:

  1. var canvas = window.document.getElementById("myCanvas");
  2. var ctx = canvas.getContext("2d");
  3. ctx.fillStyle = "red";
  4. ctx.fillRect(5,5,5,5);

If done right, you will get a result like this

CANVAS in XULCANVAS in XUL

Your rating: None Average: 5 (1 vote)

Using full-blown SQL Server instead of SQL Server Express Edition in Visual Studio / IIS

Dear Diary

Today kicked off rather troublesome. After installing the developer edition of SQL Server 2008 I've decided to get rid of the SQL Server Express Edition. Why would I want to run multiple versions of SQL Server on the same machine? This turned out not to be a very good idea, especially when you are about developing ASP.NET applications using Visual Studio. Once you try to run an ASP.NET application which requires some kind of role management and/or personalization (Web Parts do), you will run into this pretty error:

IIS SQL ErrorIIS SQL Error


Yes, the local IIS is still referencing the SQL Server Express datasource. One would assume that you could change those settings somewhere within Visual Studio as you can change the Port of the ASP.NET application. Well… Don’t waste time as I did. It is not that easy, here is what you need to do:


Create a new Database dedicated to the IIS, for the sake of simplicity we’ll call it “IIS”:

Create a new IIS DatabaseCreate a new IIS Database


Locate and run “aspnet_regsql.exe”. In my case it is "C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe". Here you want to stick with the first option (Configure SQL Server for application services) and point it to the freshly created database on the next and let the configuration tool initialize the empty db.


Initialize the new DatabaseInitialize the new Database

Almost done, you still need to point the LocalSqlServer configuration not to use the SQLEXPRESS Server but the dedicated Database. Locate the machine.config and provide the connection string to the IIS Database:

Modify machine.configModify machine.config

No votes yet

Exchange Specs

Dear Diary:

http://msdn.microsoft.com/en-us/library/cc425499.aspx - specifications for the exchange protocol and other related "stuff" (cab-file format for instance) #specs #api #exchange

So, seems there is a HTTP REST-Like interface to Active Sync aaaaand a WEBDAVy way to access your Mailbox... Sounds cool, might be a handy solution to a problem we ran into at the office recently. Here is a small PHP Example: http://www.troywolf.com/articles/php/exchange_webdav_examples.php

Your rating: None Average: 5 (1 vote)

Blurry & Shaky Cam version of XBMC SVN runing on Nvidia ION

Woohoo! SVN builds of XBMC are getting pretty smooooooooth and stable. I think that Acer Revo box I purchased some time ago will be able to replace the rockstabe Popcorn Hour A-100 in no time.

Oh, in case you have been wondering what's so special about this: What you see is an Intel Atom based SFF PC powered by the NVidia ION chipset. Yes, 1080p decoding on the GPU. And yes, It's running on Linux, the Windows version of XBMC is not doing a great job regarding offloading video decoding onto the GPU yet.

So far I have found 2 issues with the current build. The decoder uses 16-235 colorspace instead of 0-255, so you will be missing some contrast. Does not apply to all videos though, old DIVX files decode correctly. The other issue is really a minor one, XBMC won't run when you use compiz at the same time.

There is also a new feature in the current dev snapshot I could not give a try, XBMC does support some fancy SD upscaling on the GPU. Unfortunately the ION Chipset does not support the "VDPAU Featureset C" - only newer cards like the GT2XX series do.

And here is the updated video. A bit less blurry / shaky but still crappy.

You are missing some Flash content that should appear here! Perhaps your browser cannot display it, or maybe it did not initialise correctly.

You are missing some Flash content that should appear here! Perhaps your browser cannot display it, or maybe it did not initialise correctly.

tested version: xbmc_9.04.3+svn23321-jaunty1

No votes yet

Disable the close button for a dojo / dijit.Dialog

  1. dojo.provide("myWidgets.Dialog");
  2.  
  3. dojo.declare
  4. (
  5. "myWidgets.Dialog",
  6. [dijit.Dialog],
  7. {
  8. // summary:
  9. // extended version of the dojo Dialog widget with the option to disable
  10. // the close button and supress the escape key.
  11.  
  12. disableCloseButton: true,
  13.  
  14. /* *********************************************************** postCreate */
  15. postCreate: function()
  16. {
  17. this.inherited(arguments);
  18. this._updateCloseButtonState();
  19. },
  20.  
  21. /* *************************************************************** _onKey */
  22. _onKey: function(evt)
  23. {
  24. if(this.disableCloseButton && evt.charOrCode == dojo.keys.ESCAPE) return;
  25. this.inherited(arguments);
  26. },
  27.  
  28. /* ************************************************ setCloseButtonDisabled*/
  29. setCloseButtonDisabled: function(flag)
  30. {
  31. this.disableCloseButton = flag;
  32. this._updateCloseButtonState();
  33. },
  34.  
  35. /* ********************************************** _updateCloseButtonState */
  36. _updateCloseButtonState: function()
  37. {
  38. dojo.style(this.closeButtonNode,
  39. "display",this.disableCloseButton ? "none" : "block");
  40. }
  41. }
  42. );

Your rating: None Average: 5 (1 vote)

MySQL, Large Result Sets and OutOfMemory related Headaches

Just in case you run into OutOfMemory Exceptions while requesting a large data chunk from the MySQL: the JDBC driver will load ALL (yes, ALL) rows before passing it to your fancy, agile and low-footprint routine. Tweaking the fetchSize property of a statement won't do any good either... well, not without some voodoo. So, here is how you can get the JDBC driver to get you a nice and tight StreamingResultSet:

  1. Connection connection = dataSource.getConnection();
  2. Statement st = connection.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
  3. st.setFetchSize(Integer.MIN_VALUE); // Inter.MIN_VALUE <- and ONLY this value, 1,5 or 100 won't fix your problem.
  4. ResultSet rs = st.executeQuery("select * from someREALLYHugeTable");

Oh, and you clowns out there saying "this is normal, just bump up the memory settings for your JVM" - are you NUTS!? Or do you just like your applications exploding out of nowhere after being in production for some time?

Your rating: None Average: 3.5 (2 votes)

Using .NET reflection to determine if a Class implements a generic interface.

Reflection and me? Big friends. With all the love and hate a good friendship should have. A few days ago it was all about hate again. I had a bunch of service classes, some of them would implement a generic interface... Let's call it IHasAdorable - so a Service-Implementation could look like this:

  1. public class MarketMerchant : IHasAdorable<CheeseBurger>, IProductSeller
  2. {
  3. // defined in IHasAdorable
  4. CheeseBurger BuyAdorable()
  5. {
  6. return new AdorableCheeseburger();
  7. }
  8.  
  9. // defined in IProductSeller
  10. IProduct Buy(String eanCode)
  11. {
  12. if (eanCode.equals("12345"))
  13. return this.bigStackOfSmellyFishburgers.Pop();
  14. else
  15. throw new IAmSoSorryException("We don't have any of these!");
  16. }
  17. }

Now lets assume we want to browse through ALL market merchants and have a look if they have any adorable products. Let's skip the iteration process and pay attention to the probing of all market merchants in order to buy a adorable product from each of them. First attempt might be to use "is":

  1. IProductSeller merchant;
  2. // iteration goes here
  3. if (merchant is IHasAdorable<object>)
  4. {
  5. // this wont work. We are selling something very special, not just a stupid object!
  6. // Casting to IHasAdorable<> won't even compile.
  7. }

This one would not work either, although it makes sense to me:
  1. typeof(IHasAdorable<object>).IsAssignableFrom(merchant)

It seems we need to know what kind of objects a unknown merchant sells before we can "see" if those are also adorable. So here is how I got it working. Let me know if you do know a better solution:
  1. // `1 means there is 1 Generic parameter
  2. Type adorableInterfaceType = merchant.GetType().GetInterface("IHasAdorable`1");
  3.  
  4. if (adorableInterfaceType != null)
  5. {
  6. // yay, the merchant has adorable products, what whould those be!?
  7. Type adorableProductType = adorableInterfaceType.GetGenericArguments()[0];
  8.  
  9. // here is the magic we need to get the correct IHasAdorable Type
  10. // with "filled in" generic type.
  11. Type genericAdorableInterfaceType =
  12. typeof(IHasAdorable<>).MakeGenericType(adorableProductType);
  13. MethodInfo mi = genericAdorableInterfaceType.GetMethod("BuyAdorable");
  14. myBagOfAdorableProducts.Add(mi.invoke(merchant,null));
  15. }

Bon Appétit

Your rating: None Average: 5 (2 votes)

Local IIS Dev-Server + Firefox = slow request response times

If you run into the same issue, disable IPv6 support in Firefox:
about:config -> network.dns.disableIPv6 -> true
Apparently Firefox and Microsoft Internet Information Server do not like to play together nicely on Vista without human intervention.

No votes yet

"Jar-Hell" - or how do I find a Java-Class in a folder full of Jar-Archives

There you go

  1. #!/bin/sh
  2.  
  3. ########################################################################
  4. ## Scans all jar files within a directory (recursively) for a class
  5. ## name
  6. ## Usage: findClass /tmp/ MyFunnyClass
  7. ########################################################################
  8.  
  9. black='\E[30;47m'
  10. red='\E[31;40m\033[1m'
  11. green='\E[32;47m'
  12. yellow='\E[33;40m'
  13. blue='\E[34;40m\033[1m'
  14. magenta='\E[35;47m'
  15. cyan='\E[36;47m'
  16. white='\E[37;47m'
  17. alias Reset="tput sgr0"
  18.  
  19. cecho ()
  20. {
  21. local default_msg=" "
  22. message=${1:-$default_msg} # Defaults to default message.
  23. color=${2:-$black} # Defaults to black, if not specified.
  24. echo -e -n "$color"
  25. echo -n "$message"
  26. Reset # Reset to normal.
  27. return
  28. }
  29.  
  30. clsln()
  31. {
  32. fillLine " ";
  33. }
  34.  
  35. fillLine()
  36. {
  37. let tw=$(tput cols)-1;
  38. for (( c=0 ; c < $tw; c++))
  39. do
  40. echo -n "$1";
  41. done
  42. echo -e -n '\r'
  43. }
  44.  
  45. echo
  46. echo -n Scanning Folder:
  47. cecho "$1" $yellow
  48. echo -n for Class:
  49. cecho "$2" $yellow
  50. echo
  51.  
  52. fillLine "."
  53. echo
  54. for i in $(find $1 -name '*jar');
  55. do
  56. clsln;
  57. echo -n -e "Scanning :";
  58. cecho $i $blue
  59. echo -n -e '\r';
  60.  
  61. out=$(jar vft $i | egrep $2);
  62.  
  63. if [ "$out" ]
  64. then
  65. clsln;
  66. fillLine "*"
  67. echo
  68. echo -n -e 'Possble hit in file:'
  69. cecho $i $blue
  70. echo
  71. echo "$out" $red
  72. echo
  73. fillLine "*"
  74. echo
  75. echo
  76. fi
  77. done;
  78. clsln;
  79. echo;

No votes yet
Syndicate content