Showing posts with label software. Show all posts
Showing posts with label software. Show all posts

Sunday, June 27, 2010

TFS Builds

Some interesting things to note when doing TFS Builds. (I've written this article a few months ago before Visual Studio 2010, just to bear in mind)

Being exposed to the .NET world for too long, I actually became acquainted with Team Foundation Server for Version Control, Continuous Integration Builds and Release Builds. I'm not going to comment on the system at the moment. I just want to write something that is for me for future reference and maybe that can help someone else.

I've been struggling a bit on configuring the TFS Build server to not output all the project files to a single Binary folder but to keep it in its projects' configured output folders, i.e. \bin\Release, etc.

Also, I spent some time trying to get the solution's directory that's being built.

To get TFS's Build not to override the output directory, add the following in your TFSBuild.proj in the first PropertyGroup section:
<CustomizableOutDir>true</CustomizableOutDir>

Here are a few things you can do when writing your own custom MSBuild project file:
<PropertyGroup>
    <SolutionDir condition=" '$(IsDesktopBuild)' == 'false' ">$(MSBuildProjectDirectory)\..\</SolutionDir>
    <MSBuildCommunityTasksPath>$(SolutionDir)\Third Party Extensions\MSBuildCommunityTasks\</MSBuildCommunityTasksPath>
  </PropertyGroup>

The SolutionDir is only set if this is a TFS Build (hence the '$(IsDesktopBuild)' == 'false' part). TFS doesn't set this variable. TFS does have a MSBuildProjectDirectory. This has worked for me so far.
If you need to reference some custom task file like MSBuildCommunityTasks, you can then make use of the $(SolutionDir) variable, as shown above.

Now that the projects are being built in their respective folders, you might want certain output to be generated so that you can do a release. You might for instance want all the installers to be copied to the Results path so that you can install it on the relevant test or distributed environments. So in each project that you want output from, insert this as AfterBuild Tasks:

<Target Name="AfterBuild" Condition=" '$(IsDesktopBuild)' == 'false' ">
  <Message Text="Copying output files from $(OutDir) to $(TeamBuildOutDir)" />
    <ItemGroup>
      <FilesToCopy Include="$(OutDir)\*.msi" />
    </ItemGroup>
    <Copy SourceFiles="@(FilesToCopy)" DestinationFiles="@(FilesToCopy ->'$(TeamBuildOutDir)\$(AssemblyName)\%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>

Another nice feature that I discovered while browsing through the MSBuildCommunityTasks collection is the ability to set a version number automatically. There are various provided options but the one with the least configuration and storage of info is this one that I'm using:

<Target Name="UpdateBuildVersion" Condition=" '$(IsDesktopBuild)' == 'false' ">
  <Version BuildType="Automatic"
   StartDate="$(BuildStartDate)"
   Major="1"
   Minor="1">
    <Output TaskParameter="Major" PropertyName="Major" />
    <Output TaskParameter="Minor" PropertyName="Minor" />
    <Output TaskParameter="Build" PropertyName="Build" />
    <Output TaskParameter="Revision" PropertyName="Revision" />
  </Version>
  <Attrib Files="Properties\AssemblyInfo.cs" Normal="true" />
  <FileUpdate Files="Properties\AssemblyInfo.cs"
   Regex="(\d+)\.(\d+)\.(\d+)\.(\d+)"
   ReplacementText="$(Major).$(Minor).$(Build).$(Revision)" />
</Target>

Calling this from your built project's BeforeBuild task, will let TFS Build (only) to overwrite your Assembly Info and set the new version number and then do a build. Now you don't have to clutter your check-ins and you don't have to remember to set your version numbers anymore. By using a value from $(BuildStartDate) of the format YYYY/MM/DD, you can have a number increment on every build which equates to the amount of days since the $(BuildStartDate). You'll also note the 'Attrib' task. This is to set the file's attribute to normal because TFS checkouts usually sets the file's read-only flag to true and then all your apps will throw an exception because they "can't" write to a read-only file. Same with TFS Build.

Monday, December 29, 2008

Line Control

Man, ever since working with Open SuSE, I always wanted a solution that could allow remote clients to let a (non SuSE) Linux Gateway dis/connect from/to the internet. Thankfully I found a solution for Ubuntu that works just as well.

I don't know how many people who have a Linux Gateway have a need for something like this but I wondered if I would able to find something like this.
Let me first explain what I am blabbering on about.

I have multiple home PCs and each want internet access. Unfortunately my internet device is a USB one so I can't buy a router and use that, so I needed a PC that was dedicated to be on the internet when I want it. I didn't want the internet to be online 24/7 for security reasons and also connection stability reasons (sometimes the connection quality drops and so a quick disconnect & reconnect sometimes solves this problem).

OpenSuSE had a SMPPPd solution where you have KInternet clients (where KInternet is so far only a SuSE app) that connects to a SuSE Gateway which is running SMPPPd that handles the internet connection. Once a client has connected to that Gateway, s/he can control the internet connection and see what the traffic looks like in KB/s. The problem with this solution is... It's only for SuSE! So I needed something similar for Ubuntu.

The solution I found was by accident as one can see in this forum thread: Visual Real-time traffic monitor
I was looking for a realtime traffic monitor and hoped to just write my own app that can deal with the connections but thanks be to God (I have prayed for something like this, where I asked God to help me get this Gateway back up), I stumbled on an client app called QLineControl which is a Qt based app for Windows and Linux that acts as a client for Line Control. You can download the Windows version and you can get an "unstable" version from apt-get by adding the repository listed on that website.
From there I was led to LineControl (the server is called LineSrv) which is the Linux service which actually controls the internet connection. LineSrv (so far) is listed as an official Ubuntu package which you can get from apt-get.

It took a while to figure out what to do but thankfully I managed to get it to work.
The config file generated by the apt-get for LineSrv is faulty so you have to override with the default config file and go from there.
Here is what I did:

I copied the /usr/share/doc/linesrv/linesrv.conf to /etc/linesrv/.
Then I created 2 scripts for dialing up and disconnecting:

Dialup script
#!/bin/sh
ifup ib0 2> /dev/null > /dev/null


Hangup script
#!/bin/sh
ifdown ib0 2> /dev/null > /dev/null


I placed them in the /etc/ppp path.
The ib0 is my iBurst (internet device) interface, I have to do it like this otherwise it won't work, I am using the Debain dialer. Also LineSrv has to be root for this to work. Fortunately the init script that is setup via apt-get does that automatically.
I know the script looks funny but this is the script format that was followed in the sample scripts found in the LineSrv source files.

Then I modified the /etc/linesrv/linesrv.conf file:


  • I set user_accounting to no since I don't want ppl to authenticate when dialing up

  • I set currency to ZAR (Since I am from South Africa ;-) )

  • I uncommented the 'line T-Online' line, you can call it anything you want after the 'line' part

  • I uncommented the script_up, script_dn and interface and pointed them to the appropriate dialup, hangup scripts and the interface points to ppp0

  • I uncommented 'con_type' and set it to 'netdev'

  • I uncommented 'send_throughput' and set it to 'yes' since QLineControl client want this to know at what speed the internet traffic is heading

And then I ran the LineSrv service and there you go. I connected with QLineControl just fine without any hassles.

And now I am writing this post from this very configuration within Linux. I am quite surprised that such a solution even exists as I really thought that I would have to write my own app.

Well, there you go!
Cheers and God Bless!

Wednesday, April 30, 2008

Netbeans 6.1

As if Netbeans 6.0 wasn't enough to patiently wait for (not in a bad way), the new 6.1 is ready for download/order!
Check this link out to find out more of what they did in this version.

AutoIT Script for EasyWorship

EasyWorship (EW) is a wonderful app for church services and beats Powerpoint in that it can display Powerpoint slides on a different monitor (than your primary for the projectors) and you can view all the slides in advance of what it beholds. This is great unless you want to import some old songs from a Word document or Powerpoint slides into its Song database...

Well why not just import the Powerpoint slides and use that? Well in my case (as I've been doing this at my church for over a year now) this can take a long time in preparation and is very error prone. What we usually did was create a Powerpoint slide and create our whole church service presentation in it, which meant opening up the Word or Powerpoint Doc with the original songs inside, search for it and then copy-paste. Sometimes we accidentally took the wrong songs (like Psalm 256 instead of 265) and found out in the Sunday morning service! :D
With the EW Song DB, you can type in the song title and you just drag it into your schedule. Thats it! Save me about ... hmm... 3-8 minutes per song!
Also this means that if we imported the wrong song and found out the Sunday morning, we can correct it in a matter of seconds!

We already have all our Psalms and Songs on Word Doc and Powerpoint and its not 1 song per doc, its a hundred at least! EW can only import 1 thing at a time and they haven't released a tool that can do convertions and imports for you like we needed so I searched the web to find out that everyone else who has the same problem as I did, import it manually! Man, I can't imagine importing over a 1000 songs manually by copy & paste! 8-0
So I stumbled on AutoIT. This is a wonderful util to automate just about any task. By writing a BASIC script (pun intended) you can tell the mouse pointer to move to a certain window's control and wait for a while and then issue a click action. Now that's what I mean by GUI automation ;-). You can also do basic scripting automation like a BATCH or BASH script can.

Now back to my scenario... I played around and found how easy it actually was to write a script that can import all my hundreds of songs in minutes (it literally took just over 20 mins to import over 800 songs!) since there wasn't a way for me to to it programatically in EW. This script is tested on EW 2006, so if you want to do the same kind of thing like I did, maybe your fortunate to have Google'd onto this page :D


#cs
A little script to import songs into Easy Worship 2006.
Written by Dandre Jansen van Vuuren
#ce

;Select the files to import
$var = FileProcessSelectionDialog()

;Cancelled
If $var == -1 Then
MsgBox(0, "Error", "No files selected, quitting...")
Exit (1)
EndIf

$selectedSourceFolder = False
$sourceFolder = $var[1]

StartEasyWorship()

;Iterate through all the selected files to import
$total = Number($var[0])

For $i = 2 To $total
$curFile = $var[$i]
SelectNewSong()
OpenFileOpenDialog()
$ext = MapFileTypeToTypeName(GetExtensionFromFile($curFile))
SelectAFileFromOpenDialog($curFile, $ext)
WinWaitActive("New Song")
Send("!o")
WinWaitActive("EasyWorship")
Next

MsgBox(0, "Progress", "Finished.")

Func FileProcessSelectionDialog()
$filter = "HTML Files (*.html;*.htm)|Word 97-2002 (*.doc)|Text Files (*.txt)"
$importFiles = FileOpenDialog("Select the files to import into EasyWorship", "", $filter, 1 + 4)

If @error Then
return -1
Else
If StringInStr($importFiles, "|") Then
return StringSplit($importFiles, "|")
Else
;A single selected file isn't in the same form as a multiple
;selection of files.
$pos = StringLastIndexOf($importFiles, "\")
$folder = StringLeft($importFiles, $pos)
$file = StringMid($importFiles, $pos + 1)
$newString = $folder & "|" & $file
return StringSplit($newString, "|")
EndIf
EndIf
EndFunc

Func StartEasyWorship()
Run("C:\Program Files\Softouch\EasyWorship\EasyWorship.exe")
WinWaitActive("EasyWorship")
EndFunc

Func SelectNewSong()
Send("!s")
Send("n")
WinWaitActive("New Song")
EndFunc

Func OpenFileOpenDialog()
;The open button doesn't have a shortcut
;find out where the window is positioned And
;relatively position the mouse onto the open button
$winPos = WinGetPos("New Song")
MouseMove($winPos[0] + 305, $winPos[1] + 45)
MouseClick("left")
WinWaitActive("Open")
EndFunc

Func SelectAFileFromOpenDialog($file, $type)
Send("!t")
ControlCommand("Open", "", "ComboBox3", "SelectString" , $type)
sleep(10)
Send("!n")
Sleep(10)

;We only need to specify the folder where all the files
;lie, once. From there on we can import the files one
;at a time.
If $selectedSourceFolder == False Then
Send($sourceFolder)
Send("{Enter}")
Sleep(10)
$selectedSourceFolder = True
EndIf

Send($file)
Send("!o")
EndFunc

Func GetExtensionFromFile($filename)
Return StringMid($filename, StringLastIndexOf($filename, ".") + 1)
EndFunc

Func StringLastIndexOf($string, $char_target)
$strlen = StringLen($string)
For $i = $strlen to 1 Step -1
$char = StringMid($string, $i, 1)
If $char == $char_target Then
return $i
EndIf
Next
EndFunc

Func MapFileTypeToTypeName($fileType)
Switch StringLower($fileType)
Case "html"
return "HTML Files"
Case "htm"
return "HTML Files"
Case "doc"
return "Word 97-2002"
Case "txt"
return "Recover Text from Any File"
Default
return "Unknown"
EndSwitch
EndFunc


Here is how the script works (you obviously need AutoIT and EW):

  • Run the script

  • Choose the files you would like to import, EW only has a limited supported file-base, but includes HTML and Word Docs. I reformatted all my songs to HTML (I'll write a new article on how I automated that process).

  • After selecting the files and clicking on Open, leave everything! You'll see your mouse pointer and menu-popping in action. :-)

  • Once it is done, it will pop up with a "Done" message box. In the mean time don't let anything take control of your keyboard, mouse, etc (including you ;-) ). This script doesn't cater for problematic scenarios!



I don't mean to be full of myself (really I don't!) but I am glad that God made me a programmer so that I wouldn't have to do these kind of tasks manually! :D

Monday, April 28, 2008

New (K/X)Ubuntu 8.04

This weekend I've spent some of my soft-cap downloads on getting the latest Ubuntu software (well I didn't get Ubuntu itself as I am not such a fan of Gnome) such as Xubuntu and Kubuntu, version 8.04 of course...

After leaving my Linux box overnight I managed to download Xubuntu (i386 - Desktop); Kubuntu (KDE 3.5; i386 - Desktop) and its KDE4 version (also i386 and currently as I'm typing downloading the 64bit version at 6Kbps ;-) ).

After obtaining Xubuntu, I ran a CD check and saw that 1 file was 'corrupt' (as in MD5 values didn't match). So I downloaded it again only to find the same problem, but when I did a MD5 hash on the ISO file this time and on the Xubuntu website, it was the same, so I guess the guys @ Xubuntu need to do a fix on that file but unfortunately I don't know if it is a text file or binary file (hopefully a non-important one).

So while I was waiting to download the KDE 4, Kubuntu, I installed the KDE 3 version of Kubuntu and I was quite impressed. I am not such a big fan of KDE 3 either but in Kubuntu 8, it sort of had a slight of change to what I was used to. The speed at which things operated, the fact that it quickly picked up all my hardware was great. All that the Ubuntu Linux OSs need is an official nice looking GRUB loader (but apparently one can get one with Apt-Get). Kubuntu even asked me if it should download the nVidia drivers for my 6200 card (yeah I know but I don't play games so actively anymore plus its sufficient for what I'm doing) and voila!

I even had a whack at the special desktop effects and its lookin good except for the fact that it is unstable :(
Then when the KDE 4 version was ready I immediately installed it over the KDE 3 version and working and seeing KDE 4 for the first time in action was just WOW! Visuals, speed, configuration, etc. was just great. I downloaded the nVidia driver so that I could have a crack at the desktop visuals and it looked ok'ish, besides the fact that it too was unstable. Like the OpenGL version would crash almost instantly while the RenderX (I think thats what it is called) works pretty well but doing something like pressing Ctrl+10/11 (to have your windows minimize on the screen as on the Mac OSX desktop) would only show 1 window instead of the 3/4 thats open. Other than that I am quite impressed with KDE 4 and the new Kubuntu.

Xubuntu I haven't had a go at yet because I would like to use its fast desktop as my new Linux Gateway over OpenSuSE and/or (K)Ubuntu (as SuSE 10's repository is outdated and no longer maintained and I need updates plus I am getting a little tired of SuSE, and the latest SuSE versions need higher spec machines to run on), so I am still fiddling around on a proof of concept (POC) before man handling my Gateway box ;-). I would like to still have a Remote desktop option when working on the box so thats why I am not using Ubuntu Server and Xubuntu is nice and light weight (maybe even for VNC sessions) so to update is no problem as opposed to SuSE. The only things I am going to miss is the remote dial-up with smpppd (SuseMetaPPP-Daemon), and a few ease of installation GUI screens (maybe even the preconfigured firewall) but I guess thats it, I'll see how much I can duplicate on my POC version before heading over. Also I really hope the guys @ Ubuntu fixed one routing bug where HTTPS web pages didn't masquerade over the local network. This was a common issue on version 7.10 (as I had Ubuntu Server 7.10), I also tried the fix on the website which didn't work for my situation.

Well thats all I got for now, didn't spend too much time on this but for those who've waited for the new Ubuntu can be happy at the progress made by the Ubuntu guys for sure.

Thanks Mark Shuttleworth (and your cool team, also to everyone who contributed) for such great Distros! If I can get this version as a new replacement on my gateway box, then I am a Ubuntu convert! ;-) It is faster to download 700MB than 3.5GB for newer versions! :D

Tuesday, April 15, 2008

Windows Explorer alternative

For those who're tired of Windows Explorer, a very nice free alternative I found does what I want it to and more...

There are a wide variety of Explorer replacements (or alternatives) that are "better" than Windows Explorer but this one I believe beats all of them in a lot of categories.
Ever heard of UltraExplorer?
Its a Delphi project (free for windows) and most people believe that Delphi GUI apps perform faster (and there is no exception in this case), although sometimes it might just stall for a while but I think it might be more of an IO stall than a "I'm too busy to listen to you" stall. ;-)
Its got a nice appearance, with skinable components (menu and toolbar). It has views that are actually customizable and very useful (except its console, that needs some work but you can get a very nice console app from Sourceforge as alternative to Windows').
You have tabbed windows support that works just life Firefox's tabs (even with the middle click event). It remembers where it was and has all the Windows Explorer context menus, and so on.
It even picks up my USB drives instantly as soon as Windows activates them and is very responsive except maybe during heavy disk IO.
I am definitely sticking to this handy tool for Windows, I even removed 'My Computer' and 'My Documents' from my desktop to replace it with 'Ultra Explorer'.

Hope you might like it. :)

God Bless.

Monday, March 31, 2008

Ruby, ruby, ruby ...

Yeah it's been a while since the last posting. I was lacking some inspiration on what to blog on or I was just too lazy or too busy to actually log in and blog on something that I wanted to, that is until now...

You might ask, whats up with the title? Well I remember the song written by a band called Keizer Chiefs (spelling) named: Ruby. Now that reminds me of the Ruby scripting language which lots of people on the web is going on about. A dynamic typed language with multiple ways of saying one thing.

I was among those who agreed that Ruby was stupid, until I wanted to do a few things in Windows which Python nor other scripting languages could offer (or easily accomplish), except Ruby. Some of us would mock the guy who presented a brief crash course in Ruby, saying that it is too dynamic for our taste and it would make debugging a nightmare, etc. but doing some code delving and with the latest Netbeans language addition, which is Ruby and Ruby on Rails of course, I started to see how cool Ruby actually is.
Usually I despised dynamic typed languages until I saw how it can increase productivity and coding speed for smallish scripts, which is what I wanted for automation.

"What kind of automation?" you may ask. Well ordinary and OLE automation. Sure AutoIT is great for GUI and other windows automation but the scripting language is very BASIC (pun intended) lacking structure and (as in, I need structures as in C or C++'s structures or atleast...) object orientation. With Ruby we have good OO support and with the 'win32ole' lib, you can kick VBA and do MS Office automation via Ruby instead. A good starting site is Ruby on Windows which covers Ruby automation in MS Office. I managed to convert Powerpoint slides to somewhat formatted Word docs via Ruby, just to give you an idea.

I think I'll post a couple of script snippets later on, on what I worked on with Ruby and AutoIT for others to see and for future reference.

Just to go back to Python, some of you might say that Python does have OLE automation... I had a look at it and it looked very nasty! I wouldn't touch it, unless I looked at the wrong files, and you need to download a library for Python to have OLE automation ability. With Ruby you use the OLE objects exactly as in VBA but within your Ruby context.

Currently I am trying to implement a few operations in Ruby to have Browse-For-Folder ability, Open-Dialog, and so on functionality by doing Windows API calls via the DL lib in Ruby. You can catch a quick course on DL here.

I hope this will help you as much as it helped me.
God Bless!

Saturday, March 01, 2008

Code::Blocks is released!

At last! An official release of Code::Blocks and look'in good!

I have downloaded the latest release of the Code::Blocks IDE from the site and so far I am pretty impressed by the features and speed of the application. It now features lots of parsers for script editing and compiler languages.
I wouldn't know about all the other languages and compile projects but I would mainly use C::B for C++ programming.

The Code Completion is much more responsive than before (you might see it from the second time and onward when opening C::B) and rich in data types (the list box that pops up displays everything from #DEFINEs (except their params) to variables and functions (obviously). Unfortunately it doesn't seem to handle templates. Bummer!

The wxSmith GUI Editor seems nice enough to use, haven't tried it out completely but it should be sufficient for moderate wxWidgets projects.

Well thats all that I have seen for now, haven't went through everything but it seems good enough to use though. I have worked with the nightly versions before and even they were pretty good so now I can only image how much better this version is (and how much more stabler).

Unfortunately I don't know how this IDE compares with others (except VisualStudio but I won't go there) but with those that I have seen so far, it is far better than them (also except Eclipse and Netbeans but they aren't native to C++ development, like you can only do C++ and nothing else, no Gui editors for wxWidgets, no library support, etc. but I could be wrong!), however if I were to compare to wxDevC++, I would say that wxDevC++ has a better Gui editor (but then again I only used C::B's editor for a few seconds, not a few days) but C::B has better coding facilities!

Cheers and God Bless!

Tuesday, February 19, 2008

Code::Blocks comming soon

The long anticipated IDE for C/C++ and other development tools, is just around the corner...

On the Code::Blocks home page (it even runs on a new server with a new web page design), it is mentioned that the long awaited RC 3 will be released shortly, officially!
I have been waiting on this for a long time now, and can't wait to be able to have a stable and installable version of Code::Blocks.

Code::Blocks is a multi-purpose (GPL 3) IDE for compiler-driven languages and frameworks. It is backed by wxWidgets as its core GUI library, and is also available for c++ development with a built in GUI Editor for wxWidgets projects. It runs on Windows and Linux (probably MacOS as well), gives you the ability to choose which compiler you want to use, has excellent GDB debugging features and the long awaited full implementation of the c/c++ code completion in the editor. Well, unfortunately I can't say how well any of the above will work or perform until a test-run is made on the official release, but I am sure it won't be disappointing.

You can look at this page to see more features that Code::Blocks brings.

We just need to be patient for a few more days!

Wednesday, January 30, 2008

Super CMS

I've been assigned a task by the company that I work for to set up a new wiki since the current one was a bit slow, dull, unorganized and just screaming at its visitors "Help me!" ;-)

I was tempted enough to just upgrade to the newer version since that would mean the quickest easiest path without having to manually migrate the content. Fortunately, my boss insisted that I find something where we can start over from scratch that can handle all we want and get the developers back to using the wiki as it currently sits there being idle.

I was excited to hear that I didn't have to migrate any data to any new wiki, so the search was on to find a newer, faster, better wiki (I won't mention the one we used, could be bad for them ;-) ).

We tried Deki-Wiki but it was such a hassle to install without the VMWare route. Everything had to be done manually, then a setup page had to be completed, then some more manual configuration, only to find that apache didn't want to work anymore, since Deki-Wiki has its own internal 'server'. Look DekiWiki looks fabulous (except I didn't get a chance to see what other functionality it had) and seems great but it wasn't worth the hassle.

We looked at other wikis like Media Wiki but it was too 'open' for our taste, we needed more ACL control, as in be able to set permissions or rights for viewing/editing/etc per person/group and to block content from non-registered viewers.

Then I thought: "What about CMS solutions"?
I remembered Joomla, and tried that. Already things were much better but unfortunately Joomla lacked the following, otherwise I might have considered using it:
  • Revision control
  • Group/Role rights managements (can individually set page rights but is totally inadequate)
  • General discussion boards, ie. Forums
  • Scripting ability
  • Can't block non-registered users from viewing content unless you specifically mark each page with a 'registered' right instead of a 'public' one.
There were some other points but I can't remember what they were.

It installed VERY EASILY, the admin pages were astounding and the web pages looked so wonderful, especially if you found the right skin (even on default).
I felt sorry because it looked so great, I even went to the module pages to see if some people developed some modules that could fill the gaps but I didn't find any that met the eye.

So I went to its brother system 'Drupal'. It sounds like a german (or something) name for a water drop (as to the Afrikaans term 'druppel') as the logo suggests.
Drupal looked interresting but I thought that I was just going to find some missing features yet again (and I was right... well somewhat).
I downloaded, installed (also VERY EASILY) and so far I was quite impressed. I could choose between MySQL & PostgreSQL (unlike Joomla which featured only MySQL since PHP and MySQL is well coupled).
By default, Drupal doesn't have everything we needed, so I visited the modules page to find:
  • Desired page ACL control
  • Good editor (Drupal doesn't come standard with a rich text editor)
  • Pagination tags (breaking up long articles/stories into pages via a tag)
  • Page concurrency control via a 'check out' system (not ideal but at least it will prevent 2 people from making changes to a page at the same time, unlike other wikis and CMSs)
  • And much more
Drupal comes standard with these:
  • Blogs
  • Tags
  • Forums
  • Page content (custom types too)
  • Excellent logging and monitoring
  • Adequate ACL
  • Skins
  • Modules
  • Notification (system or by clicking on a user's contact page to send that person an e-mail from the web interface)
  • Revision control (need to enable that per page)
  • Categories
  • Comments
  • News aggregation
  • Scheduled tasks (using Unix's CRON and Windows's Schedule service)
  • PHP scripting
  • Role based assignment to users
  • And so much more
Drupal comes standard with some modules as well that needs to be enabled but you can have a look at them. Since Drupal is PHP based, it already feels much faster than our current wiki and content can be nicely categorized, even in a forum.

I can't wait to start to implement this on our companies new server and to start setting things up.
I am very impressed with Drupal. If I were to rate it, I would give it 95% (since you need to install some modules that adds missing functionality, so much effort! ;-) ).

In the end, you need to find something that does what you want it to. I found Drupal and would recommend it to anyone.

Sunday, January 06, 2008

APT-GET for SuSE

We all know of Ubuntu-based distros to have apt-get for easy installation but what about SuSE?

I recently discovered that OpenSuSE actually has apt-get ability, not just RPM packages.
You can install this with YAST or follow this web page: Installing apt4suse

I installed a few things with it today and it seems to be working the same way Ubuntu's apt-get is working.

This makes SuSE 'lekker' to work with.

Saturday, December 29, 2007

Update Checker

I came across this blog post that really lead me to an application that I was looking for.

Do you have many applications and you like to have them up to date, etc. but it is such a drag just to go the different sites to see if a newer version is out? Well some apps saves us from this by updating themselves. This is good until you format and put on the older version to update again.

The blog I came across (http://googlesystem.blogspot.com/2007/04/filehippos-software-update-checker.html) talks about Update Checker. It is an application that scans your PC really quickly and takes you to a web page with all the applications (in its database) that needs updating. This is really swell. Also when updating, it doesn't take you to the website, it gives you one of File Hippo's links for that file, which could mean faster downloading time because they sometimes have multiple mirrors.

If you update some software in Windows, I would recommend getting this app and running it manually once in a while. Currently it is in its BETA release.

Tuesday, January 23, 2007

Static Screen

As another "Add on" to my nohup post, I found out about an other way of getting your downloads done even if your connection to the server (your linux server from which you download stuff) closes while you were tunneled through with SSH (what nohup does).

I have heard about "screen" which is a GNU application for the linux console. Some people recommended that to me rather than nohup but I thought that screen was to much of a hastle to have and not native to the Linux distribution (as in, you won't find it with any kind of Linux distro on a CD or DVD).
I recently found out that SuSE had it all along and so I've put it to the test.

Firstly you have to make sure that the computer you want to connect to has screen. Also it must have SSH for it to work like you want it to. So you tunnel through with SSH and just type screen. Thats it! Now you see just your ordinary console screen. You might think "Did it work?" Yes! It did. Now you can open more console screens, navigate through them, close them, etc. just as you are used to with Konsole (KDE Console/Terminal).

Here is a good tutorial on it which contains some screenshots and shortcut commands that allows you to access all that functionality.

I think that you guys might agree that screen is better that nohup, at least in most areas. But like every tool, it has a purpose so before you scrap nohup from your mind (think about it, it is built into linux, screen isn't ;) ), hold on to it, you might find it handy some day!

Saturday, January 20, 2007

ProZilla my download fella!

He he! :) I discovered this little app for Linux that is like wget, featuring resume downloads, etc. but it can do something that wget doesn't... it can use multiple ports to download.

Many people usually use wget to automate the download process or to donwload something from the server uninterrupted from user interferance (see this post on nohup) but now you can increase your download speeds with ProZilla and accomplish the same thing.
You can also request a list of FTP servers to use before downloading sothat it can have a wide variety of servers to download from. You can see this app as Download Accelerator, only for Linux command-line. It has a nice colored interface showing every connection's server, speed and download process and shows you all the stuff you don't see in wget. If you don't want the snazzy ncurses display, then you can pass the '--no-curses' option and it will output just plain text to the stdout pipe. Also if a server doesn't like it when you have more than 1 connection open, you can limit it to 1 (even set the max download speed with '--max-bps=n') with '-1' being passed to the program's argument list.

I know that both wget and ProZilla has their good and bad points, but I would recommend ProZilla as your "Server Download Client".

You can obtain ProZilla here (you should obviously take the non-GUI version :p ) and to install requires the ncurses development library (should be standard with Linux, else Google for it and install it) and installing it is as simple as:
1. tar -jxvf prozilla-2.0.4.tar.bz2
2. cd into that directory and run './configure'
3. make
4. go into 'su' mode and run 'make install'

VOILA!

Now you can 'proz' (console application name) all your downloads! ;)
Also you can pull the same stunt with nohup by this (I know its a lot of stuff to add but it is worth it ;) ):

nohup proz --no-curses --no-getch -v your_url_to_download > downloads.log &

'--no-curses' = don't make the output fancy for our log file
'--no-getch' = continue without waiting for the user to press a key on an error
'-v' = be verbose
Go and enjoy!

Friday, January 19, 2007

Flash Player 9 for Linux

I've read on DesktopLinux.com that Adobe has finally released Flash Player 9 for Linux users that is apparently faster than the windows counterpart due to better usage of memory and of better synchronization of video and audio.

According to Adobe you need (minimum for Linux) an 800MHz PC, 512 MB of RAM, 128MB of graphics memory and the ALSA (Advanced Linux Sound Architecture) compatible audio hardware to run FP9. This sounds a bit overkill compared to 450 MHz PC with 128 MB RAM Windows Requirements. I guess its because it makes better utilization of Linux to play back faster or something. Don't quote me on that! ;)

Fortunately this works on our favorite browser Firefox ;) and on other GTK based ones. Apparently it won't work on KDE's Konqueror. Well it doesn't bother me since I use Firefox everywhere I go.

I have not downloaded and installed this as yet, I still have to sort out Linux on my home PC before I go any further.

You can find out more about this at the following sites:
Flash Player 9 for Linux arrives, looks great - DesktopLinux.com
Adobe Flash Player 9 Release Notes

You can also get FP9 here

Thursday, January 04, 2007

Netbeans offers free CDs

Those of you who have worked with the new Netbeans might be pleased to hear that Netbeans.org is allowing you to order a free CD containing: NetBeans IDE 5.5, NetBeans Mobility Pack 5.5, NetBeans Profiler 5.5 and Sun Java System Application Server 9.0_1 Platform Edition.

I'm not sure how long it takes to ship but it saves you some downloading and it comes all on 1 CD. Another great thing is, it also contains Windows, Linux, Solaris x86, Solaris SPARC and Mac OS X versions of Netbeans too.

They also say that before shipping, they will publish the latest version of Netbeans which is also a good thing and I'm pretty sure that it will also contain the latest JDK.

Just drop over to http://www.netbeans.org for a free Netbeans CD.
I also saw a C/C++ Pack addon for it to develop in C/C++.
EDIT: The C/C++ addon for Windows requires Cygwin. Thanks to rustypup from PCFormat.co.za (who dug a bit deeper than I) LOL!

Friday, November 10, 2006

Nohup won't stop

I was looking for something like this which seems to adequately do what I want it to.
If you have a Linux PC thats connected to the internet with an SSH server on it, you can do something pretty nifty with it.

How about downloading something using wget while not having anyone connected to the SSH server? I mean if you can't use your pc at that moment to download something, you can go to another one, connect to that Linux PC with SSH, use wget with nohup, close that SSH session and wget will still continue to download and automatically kill itself when done.
This is very convenient and makes sure no one interrupts your downloads by closing your SSH or something. Just don't let anyone shut down the internet connection or the Linux PC.

The only downside is to monitor the progress of the download you have to output it to a file and when you log in you tail the log file to see how far it is. Here is how it works:

After you have connected and logged in do the following:
nohup wget http://www.example.com/some_large_file > output.log &

(Note the '&' at the end! Otherwise you have to open up a new console to work on.)
Thats it!

I found this info at: http://wiki.linuxquestions.org/wiki/Nohup

EDIT:
  • I'm using it right now, it is working correctly and quite nicely. Also if you have a Samba server on it aswell, you can let wget place the file in that directory where Samba has shares and download the file onto your PC when its done (what I'm doing now)!
  • I saw that some people wanted to know how to stop a nohup program. Well it is very simple. Lets say you used wget to download something but you want to stop it, simply type 'killall wget' and that download will stop (just be careful if you have multiple wgets, then all of them will 'die', in that case you have to figure out what that app id is and then type 'kill #app_id_num#'.
  • Also I have recently discovered a faster downloader than wget called ProZilla, click here to read about it.
  • Check this post on "screen". You might find it as a better alternative to nohup.

Thursday, November 02, 2006

wxDevC++ 6.10 is out!

Hey guys! Those who have used wxDevC++ 6.9 can now turn to the latest one that uses wxWidgets 2.7.1, and also the Microsoft Visual C++ compiler, Inline Assembly highlighting, etc. I myself am not so fond of the IDE's coding interface but it does come with a fully setup wxWidgets library (precompiled) and with a great wx GUI Editor (the best opensource one I've seen so far).
You can view the Change Log @ their site for more info.

http://wxdsgn.sourceforge.net/

I must say though, it is a great improvement over 6.9!

Tuesday, October 31, 2006

Screencasting

I read an entry on the ubuntu blog that is about screencasting for Ubuntu. What is screencasting? It is to capture screens of your computer desktop at certain time intervals accompanied by audio. You know like when people like to explain something it is better to show than to write down (in most cases I think).

Here is the link to the original post (thanks to ubuntonista): http://ubuntu.wordpress.com/2006/06/08/how-to-create-a-screencast-in-ubuntu

He also has a sample screencasted video to show what you can do with ffmpeg.

I'll also want to try and get it to work for SuSE and see if there is an open source way to do this in Windows.

Thursday, June 15, 2006

Software List

This is a list of software/libraries which I recommend or like or find interresting:

  • Firefox 2 - Great Web browser
  • Get Thunderbird! - Great e-mail client
  •  Use OpenOffice.org - Great free Office Package
  • - Cross-platform Framework for Python/C++
  • - A web development IDE, looks like Eclipse's. Supports Web scripts such as the basic stuff plus PHP, Ruby on Rails and Ajax.

  • DevC++ - C/C++ IDE
  • wxDevC++ - Its DevC++ but with wxWidgets From Designer
  • Code::Blocks - Very Good C/C++ IDE (until RC3, use the night builds)
  • 7zip - Free archive utility, fast and supports many archive formats for Windows (GUI) and Linux (apparently command line).
  • Free download manager - An Open Source, Windows download manager that competes well with the commercial app: Download Accelerator Plus.
  • Update Checker - Scans your Windows PC and displays the applications that have newer versions on the net.
  • Komposer - Frontpage open source clone
  • NSIS - Installer creator (for Windows)
  • HM NIS - Installer creator GUI (needs NSIS)
  • e-Sword - Great Bible study program (for Windows)
  • StarDict - Dictionary software. Very useful!
  • Doxygen - Documentation generation
  • YAReG - Reiser FS partition browser for Windows
  • Netbeans - Very good JAVA IDE (for many platforms). Now has more support for other languages, etc. as well.
  • Tortoise SVN - A very good Windows Subversion GUI
  • log4# - Very good logging system (# being many languages: java, .net, c++, etc.)
  • Python - A popular interpreted language
  • PyScriptor - A good IDE for Python
  • Ruby - A popular scripting language
  • Launchy - Open source keystroke launcher for Windows
  • Poderosa - Poderosa is a tabbed terminal emulator for Windows.
  • Ultra Explorer - A very good Windows Explorer alternative
  • Console - A nice Windows Console alternative

Here is a list of software/libraries which I found and would like to use (basically future reference):
  • c++ check - c/c++ code checking. Checks for these bugs: memory leaks, mismatching allocation-deallocation, buffer overrun, dangerous usage of 'memset', badly defined overloaded operators. Checks for code improvements: redundant code, rewriting standard function.
  • Design Pattern Automation Toolkit - A toolkit to design applications using design patterns, with facility to generate code, and reverse engineering. Drag and Drop facility to create UML Class diagrams Support to write custom plug-ins for code generators and reverse engineering.
  • Sharp Develop - Very good alternative to Visual Studio for C#
  • Loki - Many OpenSource projects (including the popular Linux installer creator as the one of UT 2004)

Sites of note:
  • C# Source - A website dedicated to C# libraries and Frameworks.
  • Java(TM) Source - A website dedicated to Java libraries and Frameworks.