Author: kjartan

A Powershell alias for outputting info from functions

In most common programming languages, a function (or method) defines a block of code that does some work internally, and returns a value at the end, either implicitly (the result of processing the last line is returned), or explicitly (a keyword such as return is used to specify the return-value). In Powershell on the other hand, everything is returned out. Take the following example for instance:

function get-an-array {
    "Creating an array..."
    $arr = "one","two","three"
    "Array created; returning it now:"
    return $arr 
}

#calling the function:
$myArray = get-an-array

In most languages, you would expect $myArray to contain just that – an array after executing the code above. Also, you might have expected the messages in between to have been written out to the screen. Not so! The actual content of the resulting variable will be as follows:

Continue reading

Git bash: Clear screen and show diff

I just added another little convenience command for Git Bash. This is for clearing the screen and showing the diff (changes) in your branch. I added support for a parameter so you can use it either to show all differences, show the changes for a specific file, or append some other parameter to it (see the examples below).

Here`s the code itself – append it to your .bash_profile file, then restart your git bash:

cdiff(){
    clear
    if [ "$1" ]; then
        git diff "${1}"
    else
        git diff
    fi
}

Examples of usage:

cdiff # Will clear screen and show all changes not added

cdiff --cached # Will clear screen and show changes in added files

cdiff my-file.xyz # Wil clear and show changes for the specified file

cdiff --name-only # Will clear, then list all changed files (not added)

A use case for bash functions with git on Windows

When you open a Git Bash shell, it will typically open under your home directory, as indicated by a yellow tilda (~) at the end of the command line.

Side-note tip if you’re new to unix type shells:
~ refers back to your home directory – e.g. C:\users\YourUserName\ under Windows, so entering cd ~/SomeDirectory from any location will always change your current dir back to c:\users\SomeDirectory.

For my part, I’ve got most of my projects and source code under a directory called “source“, and all my git-projects below that again in a directory called repos. This means that each time I open the git shell to do any work, the first thing I need to do is change directory using: cd source/repos/TargetRepo where TargetRepo would be the name of a given project.

This is not a big deal, but it would be better if I could simplify the process of moving to whichever project I wanted to. I could do just that thanks to this simple solution found on Stack Overflow (new window). I’m expanding slightly on it here so I know I’ll find it if I need it again, and because I’m convinced it can be useful to others too.

Continue reading

GIT alias: List all branches

Using GIT? Quick tip of the day: Add the line below to the  [alias] section of your .gitconfig file (you should find it in your home directory). This will let you quickly list all the branches available for a repo.

brl = branch --list --all

Save the file, and try the following command in a GIT window:

git brl

You should see a list of all available branches for the repo, both remote and local, with an asterisk marking the branch you currently have checked out:

Solution for “Server is in single user mode. Only one administrator can connect at this time.”

I ran into the error message in the title today, while trying to access a database on my local machine after upgrading various stuff. Among other things, I had installed the newest version of Microsoft SQL Server, and now I could not access my DB. Here’s how I fixed it.

It took me a little while, but I eventually found the cause: For some reason an -mhad been added to the list of parameters used when starting up the service that runs the database server. If you’re in the same situation, you’ll find this in the application Sql Server Configuration Manager.

Right click SQL Server (MSSQLSERVER) and select the tab Startup Parameters:

Click to select and remove the parameter “-m”

I don’t know why the -m parameter was there to begin with – perhaps I’d configured it that way unwittingly during the installation.

In any case, selecting and removing it and restarting the service MSSQLSERVER fixed my problem, and let me access my database again.

PS: Still not working? Look for an -f

A few other posts I read indicate that an -f parameter can have the same effect, so you might want to look for that if the above doesn’t fix your problem.