The Linux Page

Breaking TCP/IP with a simple client/server implementation in Qt

I've been working on a TCP/IP server/client with Qt and got a problem which I present in the attached package.

The example called tcp-bug. Start it with:

tcp-bug -s

in one console and then start the same command without the -s in another console:

tcp-bug

The client (this second tcp-bug without the -s) saves the file sent by the server in /tmp/out.html and it has to be exactly the same as the example.html file in the project. If not, then the transfer failed.

Most often, the transfer works so I wrote a script called many-hits.sh to run the client many times and test the result. ...

meld -- advanced graphical diff utility

Find the difference(s)

I used subversion and now git and once in a while I have a rather large number of changes to check in. In most cases, I can just do svn diff or git diff . and be done with it. But today I have changes in quite many files (12, I know, it's not that much, but still... when you're by yourself on a project...) and some of the changes were quite large.

To have something better than svn diff, I looked into the different graphical diff tools available a little while ago and I installed meld:

sudo apt-get install meld
meld .&

I think that's the best I can find under Linux at ...

mov eax,dword ptr fs:[0000000h]

As I was trying to debug a problem using an STL vector, I looked at the resulting assembly and saw this strange thing:

mov eax,dword ptr fs:[0000000h]

And a little further down, the opposite:

mov dword ptr fs:[0000000h],eax

These statements are from VC++ so the first is "put fs:[0] in eax" and the second is "save eax at fs:[0]".

Curious I looked around and found a page describing what's really hapenning. If you need to know, that's actually initializing the exception structure for this function. The fs:[0] location is where that structure pointer is saved ...

Upgrading Ubuntu to use NVidia

IMPORTANT NOTE

These are instructions for Ubuntu 10.10 and these worked in Ubuntu 12.10 (which I have now). It may break in the future though.

I generally install my Ubuntu systems using the Server version of Ubuntu because it tends to works a lot better. The result is that I don't get all the Desktop features installed by the installer. That prevents me from installing the NVidia driver automatically.

The newest drives for X.org make use of some source for the client-side driver and that requires you to install the linux source code and headers. I'm wondering if each time we ...

Getting Ubuntu to playback DVDs

In order to playback a DVD you need to make use of commercial encryptions (also called codecs.) Actually Ubuntu calls them "non-free". The reality is these are patented and protected so people cannot just ripoff a DVD. Which is not true at all since pretty much any computer can play DVDs and thus can copy all the data. Anyway, because Ubuntu is by default for free software, it doesn't include all the necessary DVD stuff. This being said, they provide 100% of all the necessary code, pre-compiled and all you have to do is install it all with apt-get as follow.

(You must be root to ...

WNetAddConnection2 function, how to

Introduction

I just faught for a few hours trying to get the WNetAddConnection2() to work in my program and found out two things that I did not see explained anywhere in the documentation...

Folder that Works

I'm not too sure whether that's a new thing at the company I worked in to implement this function or whether that's every time, although I've seen other posts on the Internet with the same sort of path so I would imagine that this is a "normal" Microsoft network feature.

The fact is that to connect you have to use the name of the server followed by some ...

Changing the Time format in your Thunderbird on Unity (Ubuntu 12.04)

That took me forever because I could not find the place where my Unity icons where to edit them in order to add the necessary LC_TIME definition. This being said, it's relatively easy except that you have no real control over the exact formt, only the locale.

So...

I created a file named starter under my thunderbird folder, if you don't have such (because you're using the stock version of thunderbird) then you may want to create a bin folder as in:

mkdir ~/bin

The starter file is just a text file with a shell script like this:

#!/bin/sh
LC_TIME=en_DK.utf8
export ...

Strange VC error: No files were found to look in. Find was stopped in progress.

Strangest thing happened to me today! I'm working on a project with VC 2005 (yeah! pretty old version for 2012, I know!)

I use the Search in files which usually works great but today I got this strange error:

No files were found to look in. Find was stopped in progress.

And no real reason why it would say that!?

Searched on the Internet and found a page mentioning the problem.

When searching it is possible to stop the process with Ctrl-C or Break or, it seems, Ctrl-Scroll Lock.

In my case my bag was a bit on the keyboard pressing on one or more of those keys! Moving my bag was ...

Using QDateTime to output a date string and UTC

As I'm working on a server I need dates in UTC. By default, the QDateTime object generates dates in local time.

How do you change that? There is a toUTC() but my input data is already UTC so using toUTC() would mess up the date and I'd get the same result anyway.

The idea is actually pretty simple. The toUTC() creates a QDateTime object in UTC mode. This is done like this:

QDateTime utc(QDateTime().toUTC());

Now the utc object is in UTC mode and can be used with your Unix dates as in:

utc.setTime_t(time(NULL));

and the string output can be generated with toString() as in:

 ...

"Your server runs WebDAV!" But how do you know?

Just got told that one of my servers was running WebDAV. I used that before so I thought it was turned on. Checking at the server, I could not find anything about DAV that was turned on in my server...

So, how could they detect WebDAV and not me??

The fact is that by default Drupal doesn't check the HTTP query method. It should! In fact, Drupal happily answers all methods with an HTML page. So I did not have WebDAV, just a flaky CMS.

How can you test methods that your server supports?

Knowing your IP address and port, use telnet like this:

telnet IP port (i.e. telnet 1.2.3.4 80)

...