Multiple Oracle Javas On Windows – No Installs

Whether you want a portable JDK or you just don’t want to further muck up your Windows %PATH%, you can get a older or newer Java on your Windows machine without affecting other versions.

I found a link explaining how to do it here: https://www.whitebyte.info/programming/java/how-to-install-a-portable-jdk-in-windows-without-admin-rights, but in case it ‘goes away’, here are the steps:

So far this works for Java 1.7, should work with Java 1.8.

  1. Make sure you have 7-zip on your Windows. Download the installer from Oracle
  2. Open the executable installer with 7-zip and extract the single tools.zip file inside
  3. Extract the files from the tools.zip to where you want your JDK.
  4. From a Windows command prompt in the folder where you extract the tools.zip files, run the following:

    for /R %f in (.\*.pack) do @"%cd%\bin\unpack200" -r -v -l "" "%f" "%~pf%~nf.jar"

Download PDF
Posted in Java | Leave a comment

WiFi From Linux Rescue CD

Using Finnix 111 rescue CD:

Generate wpa_supplicant.conf configuration file:

# wpa_passphrase ssid passphrase > /etc/wpa_supplicant.conf

If you have any funky characters like ‘@’ in your passphrase, escape with a ‘\’.

Find driver
# wpa_supplicant –help

Using the correct driver:
# wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf -B

My driver listed was ‘nl80211’. Also, do not add a space between the options and their arguments.

Use ifconfig to find the network interface.

# dhclient wlan0

Download PDF
Posted in Uncategorized | Leave a comment

Make Bamboo Shell Task Run Using Bash

Bamboo will call shell tasks on *nix agents using sh as opposed to Bash. For Debian agents, this means dash not bash. So, how do we redirect to bash? I found this snippet:

if [ "$(ps -p "$$" -o comm=)" != "bash" ]; then
# Taken from http://unix-linux.questionfor.info/q_unix-linux-programming_85038.html
echo "RUNNING THIS PUPPY THE RIGHT WAT"
bash "$0" "$@"
exit "$?"
fi

Alas, though, looks like the link I copied and pasted from the post does not work. Here’s the post I snagged this from.

Download PDF
Posted in Bamboo, Bash, Snippets | Leave a comment

Hack Classpath In Gradle

I recently tried this to fix the Classpath in Gradle for compiling and testing. Works for compiling, bombs for the testing though. The Gradle plugin integration using jna-3.2.7 blows up during unit testing when the older API is not loaded. What a mess. At least this snippet should help for other scenarios.

def fixTheCp(fc) {
    def jnaGoodJars = fc.filter {
        it.name == "jna-4.2.1.jar"
    }
    return jnaGoodJars.plus(fc.minus(jnaGoodJars))
}

task("fixCompileCp") << {
    sourceSets.main.compileClasspath = fixTheCp(sourceSets.main.compileClasspath)
    sourceSets.main.runtimeClasspath = fixTheCp(sourceSets.main.runtimeClasspath)
}
task("fixTestCp") << {
    sourceSets.test.compileClasspath = fixTheCp(sourceSets.test.compileClasspath)
    sourceSets.test.runtimeClasspath = fixTheCp(sourceSets.test.runtimeClasspath)
}

compileJava.dependsOn fixCompileCp
testClasses.dependsOn fixTestCp
Download PDF
Posted in Gradle, Snippets | Leave a comment

Hex Encode/Decode String In C#

The same code is posted all over the news groups and Internet, but here it is, easy as a snippet for myself and for you to use.

I don’t even get credit for this as what I have pretty much matches up to what other people have already posted.

This is much easier in Python.

Encode a byte array

public static string HexEncode(byte[] data)
{
    return BitConverter.ToString(data).Replace("-", string.Empty);
}

Decode a hex necoded string

public static byte[] HexDecode(string hexEncoded)
{
    int numChars = hexEncoded.Length;
    byte[] retVal = new byte[numChars / 2];
    for (int i = 0; i < numChars; i += 2)
    {
        retVal[i / 2] = Convert.ToByte(hexEncoded.Substring(i, 2), 16);
    }
    return retVal;
}
Download PDF
Posted in C#, Snippets | Tagged | Leave a comment

How To Clean SVN Checkout Directory

I just love

git clean -xfd

but you just don’t get that with Subversion. Instead from your Bash shell (or Cygwin) prompt you can do:

svn status --no-ignore | egrep '^[?I]' | cut -c9- | sudo xargs -d \\n rm -r

I got that last one from http://stackoverflow.com/questions/239340/automatically-remove-subversion-unversioned-files

Oh, and on that same post, for PowerShell users I found

function svnclean{
svn status | foreach { if($_.StartsWith("?")) {Remove-Item $_.substring(8) -Verbose}
}

I could resist saving these two snippets, I know I will need them.

Download PDF
Posted in Bash, PowerShell | Leave a comment

Validate Windows User On Network In C++

Need to validate and/or impersonate a user on a Windows domain? I Googled for this a bit but the API call is fairly simple so here is a quick snippet:

HANDLE htoken = nullptr;
DWORD dwError = ERROR_SUCCESS;
BOOL retVal = LogonUserW(L"JoeUser", L"JoesDomain", L"JoesPasswordPlainText", LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, &htoken)

if (!retVal)
{
    dwError = ::GetLastError();
    qDebug() << "Error: GetLastError returned: " << dwError;
}
else
{
    ::CloseHandle(htoken);
    qDebug() << "Logon successful.";
}
Download PDF
Posted in Uncategorized | Leave a comment

Refresh Icon Cache In Windows 7

This keeps me from having to reboot:

C:\Windows\system32\ie4uinit.exe -ClearIconCache

Download PDF
Posted in Snippets | Leave a comment

Hash File Using POCO

This is the first time I have had to create MD5 hashes for files in C++. I did find a library called POCO that has some very handy classes for doing this. I didn’t want to copy and paste code from work, so I created this simple example for hashing a single file and outputting the MD5 hash in a hex encoded string.

The hashing uses a chunk size of 1 MiB changes so the whole file is not loaded at once.

I will soon create another post on how to do this in Qt5 and post it then, updating this post with the link.

Check out the open source POCO C++ libraries at pocoproject.org/. There are downloads for Windows. For Linux, you may be able to get packages from the main repositories for your distro.


#include <iostream>
#include <fstream>
#include <Poco/DigestStream.h>
#include <Poco/MD5Engine.h>

int main(int argc, char** argv)
{
	Poco::MD5Engine md5;

	std::ifstream ifHash("../DSC_0002.JPG", std::ios::binary);
	if (ifHash.is_open())
	{
		Poco::DigestInputStream isMd5(md5, ifHash);
		size_t bufSize = 0x100000;
		char* buf = new char[bufSize];

		isMd5.read(buf, bufSize);
		while ( (isMd5.rdstate() && std::ifstream::failbit) == 0 )
		{
			isMd5.read(buf, bufSize);
		}


		if ( (isMd5.rdstate() && std::ifstream::eofbit) != 0)
		{
			std::string digest;
			digest = Poco::DigestEngine::digestToHex(md5.digest());
			std::cout << digest.c_str() << std::endl;
		}

		delete [] buf;
	}
}
Download PDF
Posted in C++, Cryptography | Tagged | Leave a comment

Keep Your Gnome Desktop Awake

These little bash snippets tell you how long in seconds before your screen locks and how to
keep your screen from going to sleep. This is for Gnome 3 in Linux.

To find the time in seconds before your screen goes to sleep:

[me@mybox ~]$ gsettings get org.gnome.desktop.session idle-delay
uint32 300

Set this setting to 0 to keep your screen from going to sleep:

[me@mybox ~]$ gsettings set org.gnome.desktop.session idle-delay 0

NOTE: Don’t set the idle-delay to 0 and leave the room for too long, because anybody has access to your logged in session.

Download PDF
Posted in Uncategorized | Leave a comment