Dariusz Cieślak's Blog on Software

18/08/2010

“Usability” na przykładzie bankomatu

Filed under: pl — Tags: — dariusz.cieslak @

Niedawno miałem okazję przekonać się jak ukształtowanie interfejsu użytkownika może wpływać na sposób w jaki aplikacja będzie odbierana przez użytkowników. W skrajnym przypadku może prowadzić do odrzucenia systemu.

Czekając w kolejce do bankomatu zauważyłem, że dwie osoby przede mną odchodzą nie pobierając gotówki. Gdyby to była tylko jedna osoba pomyślałbym, że chodzi o brak środków na koncie. Gdy druga osoba odebrała kartę obstawiałem problem z bankomatem. Postanowiłem sprawdzić co jest przyczyną problemów.

Na pierwszym ekranie widocznym po włożeniu karty pojawiło się pytanie:

Czy potrzebujesz gotówki?

Poniżej znajdowały się dwa przyciski: TAK i NIE. Pytanie wydało mi się dziwne jak na bankomat sieci Euronet.

(more…)

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

10/08/2010

Switch “origin” of your GIT repository

Filed under: en — Tags: , — dariusz.cieslak @

GIT is a distributed version control system – that means it doesn’t require to have any central repository. It’s possible to build system by exchanging commits between equal nodes. It’s convenient, however, to mark one repository as central one. Of course you can change your decision at any time. I’ll show you how to do that.

(more…)

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

27/07/2010

Where’s JUnit for C++?

Filed under: en — Tags: , — dariusz.cieslak @

Recently I started new project targetting STB (set top boxes). STB is a networking device (Ethernet based) that allows you to watch (record in some cases) HD films on your TV screen. I have no TV device in home (who cares TV if Internet is availabe?), but it’s interesting to see the direction where current TV devices will go in near future.

Anyway, the most important difference to previous projects is “new” language: no more Java, no more Python, it’s C++. You can find few C++ projects I published on SourceForge, but they’re created >5 years old now, so I can use “new” word here ;-) . The first thought of old Test Driven Design fan when creating development environment was: whre’s JUnit for C++?

(more…)

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

08/07/2010

Writable, shared directory structure under Unix/Linux

Filed under: en — Tags: — dariusz.cieslak @

Sometimes you need to make some directories available (R/W mode) to a group of developers on a Linux / Unix server. Using shell tools make this task very easy.

First, ensure all files group are switched to desired group:

find . ! -group group1 -exec chgrp group1 '{}' \;

Then +s (sticky) bit must be attached to directories to ensure group will be preserved in newly created directories:

find . -type d ! -perm -g=s -exec chmod g+s '{}' \;

Then writeability for the group should be set:

find . -type d ! -perm -g=w -exec chmod g+w '{}' \;

And finally some users must be added to the group:

adduser user1 group1

Additionally you have to set default umask to 0002 (only o+w filtered out). It’s done by installing libpam-umask and adding to /etc/pam.d/common-session:

session    optional     pam_umask.so umask=002

That’s all.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

25/06/2010

SQL Error: 17006, SQLState: null Invalid column name in Hibernate

Filed under: en — Tags: , , — dariusz.cieslak @

Recently I’ve got the following error during SQL named query execution:

SQL Error: 17006, SQLState: null Invalid column name

In order to track the problem down I enabled SQL logging and collected SQL query issued, then run it under SQL monitor and … it was working without error! I was surprised.

In order to debug what’s going on I enabled detailed logging in Hibernate. What was happened then?

[INFO] could not read column value from result set: entityKey215_0_; Invalid column name

This message showed me that the problem was not related to generated SQL query but to column names expected by Hibernate. Generated recordset didn’t has entityKey215_0_ column. I added:

entityKey AS {list.entityKey}

to named SQL query and error dissapeared.

This error is not-very-obvious kind of error because Oracle hides column / table names in error messages returned. Why? I don’t get this cryptic error messages idea. In order to track an error under Oracle I had to enable verbose logging (error message standalone din’t give anything useful). Much simpler database MySQL has better error reporting than “fat” Oracle.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
Older Posts »

Powered by WordPress