On my recent upgrade of php to 5.3, gentoo created a new slot so that people could run 5 and 5.3 in parallel. Gentoo is always giving you options (can you handle it? “ask yourself, do you feel lucky, punk?”). As usual, you must proceed with caution. And as usual, you will probably learn something along the way. This time around, the lesson is on php.ini defaults. (continued…)
I’m the last person to praise Microsoft – with the amount of money they bleed from the human race, there is no room to give them any slack. To their credit, corporations of their magnitude almost always decay into bureaucracy and inefficiency, and they could be worse. Case in point, Visual Studio. It kicks ass. Here’s a quick rundown of what it does for me when debugging my Qt app. This is in comparison to Qt Creator, which is awesomely streamlined and elegant. But when you are debugging, every bit of comfort is gold:
- if you set things up as i did, you can step right through the Qt source with no pain
- the watch window takes far fewer steps to manipulate
- the debugger can dereference pointers better
- the debugger can dereference iterators better
- code completion in the editor can also handle dereferenced iterators
- debugger can show long strings much better
- you can step over a function back up to the caller without dropping to the next line of code in the call routine (for when multiple calls take place on one line)
- debugger doesn’t head south when often browsing out of array bounds (inevitable if you are watching variables)
I’ll add to this list as seems fit. I should probably also start a list of the advantages of Qt Creator, it is really nice to work with on linux and Mac. Including Eclipse would round out the list nicely… but for now, back to teh coding. :> Check out this recent post for instructions on getting VS set up with Qt, it’s easy.
I could not live without this hack. Placing the Windows taskbar on the lefthand side, with auto-hide on, gives you more screen real estate AND more taskbar width when it pops out when needed, via Ctrl-Esc. I’ve been configuring Windows this way for decades. How can people stand that little strip at the bottom flashing at them all day? Seems like a little thing… but to me it’s huge. It actually determines who’s in charge – am I sitting at my computer to be told what I should do via little popup notifications, or am I there to get something done, checking on any notifications when I’m ready to address them? Sure, my friends can get annoyed that I take an hour to respond to an instant message, but I’m getting stuff done. Anyway, I’ve gotta keep this thing handy… (or just resist the urge to boot into Windows to play games…) :>
UPDATE: the original hack hasn’t kept pace with Explorer updates, and hasn’t been open sourced so others can do it. On page 17 of that forum post, another hack was provided that seems to be working.
Qt’s Phonon library has an awesome goal: abstract video and audio services to simplify cross-platform development. It has worked great for me out of the box using Qt 4.7 on linux and Mac OS X. Windows setup took a bit of elbow grease. Here are the cheatnotes to get you through it quickly.
NOTE: The Qt mingw setup worked fine for me when I was setting up my first Windows development environment, do not hesitate to go that route. All you need is the Qt SDK for Windows. Free is good!
But this time around, I opted for using Visual Studio 2010, since I already had it installed and I wanted to compare. I’ve read that there is no support for using the open-source-licensed Qt with Visual Studio, but the official Qt download page for the Visual Studio Add-In clears things up – it says the add-in “can be used for development together with all Qt licenses”. Let’s fire it up and try it out! (continued…)
Here is my published reusable c++ code, which includes a version of a sorted vector that I’ve been using for years. It may not be academically sterile C++, I’m more interested in getting things done, and I had to crank out some new functionality needed for my upcoming media manager. But it should be solid production code. It glues together std::vector with std::sort, std::lower_bound, etc., which is a pretty fscking logical thing to do – who wants to redo that every time you have data to manage? :> My favorite part is the find_it_or_fail() function, the only real extension of functionality. Basically, it extends lower_bound() in a logical way, so you either get a hit, or failure (indicated by returning vector::end()). There are also versions of member functions with predicate function parameters, to help you use it with vectors of object pointers, which isn’t exactly straightforward in C++. Let me know if it seems useful or sucky. :>