Wednesday, November 14, 2018

Windows: Uninstalling programs

Time to clean up the old windows machine a bit (Linux user here).

So I go looking for the good old control panel, but I find the "Settings" so I go there. Let me skip the whole design and usability comments.

The thing is that when you click tap the Uninstall button there is some times a huge delay until the admin confirm thing pops up. I don't know why this is, if its a security thing or just a bug.

So I thought I could open the whole "Settings" as an admin and then the confirm thing would not pop up.

Long story short, the only relevant thing I could find was to open with admin the command prompt. And from there you can start the control.exe which is actually the old classic control panel. 

But nope, your are still in user mode.

After some googling research I found out that this is a fake cmd admin (the one in the start menu), you need to run `runas /u:administrator cmd` to get the actual admin cmd. And before you do that you need to kill the exploer.exe that already runs. 

Then to restore the explorer you need to open admin task manager to kill the admin exploer and open non-admin cmd and ....

PS: In this process I had the pleasure to uninstall the microsoft silverlight


Friday, September 28, 2018

Regex: Final v

This is the most greek a proggrammer can be.

Ακολουθεί μία από τις χρήσιμες regex που έχουν γράψει στην ζωή μου.

Εντοπίζει λάθος χρήση του τελικού ν και το αφαιρεί.

/ (τη|αυτή|δε|μη|στη)ν (([βδφθχλρσζ]|(μ[^π])|(ν[^τ])|(γ[^κ]))[^ ]*)/ $1 $2/

πχ. `στην ζωή μου` > `στη ζωή μου`

Οπότε το τρέχω στην πτυχιακή μου:

`227 results found`

Και σκέφτομαι: οι υπόλοιποι άνθρωποι τι κάνουν. Οπότε το τρέχω στην πτυχιακή της Χριστίνας:

`0 results found`


Thursday, July 26, 2018

Java: enum or boolean for two value properties

The is always that tip that floats around that you should always use enums instead of booleans, even when there is only two values.

Of course the point is that it will be much easier to read and mainly to extend in the future.

So from a simple

 public void setVisible(boolean value) { ...

you go to

 public enum Visibility { Visible, Gone }

 public void setVisible(Visibility value) { ...

And in the future you could add eg. the Invisible value.

But you miss the simplicity of a boolean and you also get the verbosity of an enum


and this happens

 setVisible(value ? Visibility.Visible : Visibility.Gone)

The classic solution is to add methods like show() or hide() to avoid the use of the enum

However a simply solution to collect the benefits of both world:

 public void setVisible(boolean value) {
     setVisible(value ? Visibility.Visible : Visibility.Gone)

 public void setVisible(Visibility value) { ...

where the two boolean values will correspond to the two most used values of the enum

And why not add and some methods for the most used values

 public void show() {

So in the end you have everything