Monday, January 19, 2015
Quote on development tools
"One piece of advice I would pass on to new developers is to remember it is your job to make life easier/better for the USER, not for yourself. Pick the platform, language, and framework that lets you get the' job done for the end user as fast, cheaply, and as maintainable as possible. If that means YOU have to do a lot more work, well, so be it. Never ever use a language simply because it is "cool". Languages are tools, you pick a tool because it works, not because it makes you feel happy."
Dave Marney
Friday, January 9, 2015
Quote for the day
"Good professional firms have service quality programmes. They do so to genuinely respond
more effectively. They do not do so to merely satisfy some external auditor."
more effectively. They do not do so to merely satisfy some external auditor."
Friday, November 7, 2014
Stop Outlook from launching multiple instances
Basically just edit the shortcut to Outlook and add the /recycle option:
Wednesday, September 17, 2014
Bulk Load LDAP / eDirectory Users
Just a simple BASH script to load users.
#!/bin/bash
FILE_WITH_NAMES="names.txt"
LDAP_SRV="localhost"
LDAP_PORT="389"
ADMIN_DN="cn=admin,ou=sa,o=system"
ADMIN_PASSWD="novell"
USR_BASEDN="ou=users,o=data";
USR_PASSWD="novell";
LDIF="/tmp/bulkuser.ldif"
cat $FILE_WITH_NAMES | while read line
do
#trim trailing white space and clean
fullname=`echo $line | tr -cd '[:print:]\n' | sed -e 's/^ *//' -e 's/ *$//'`
stringarray=($fullname)
fn=${stringarray[0]}
sn=${stringarray[1]}
#replace spaces with .
CN="${fullname/ /.}"
echo "dn: cn=$CN,$USR_BASEDN" > $LDIF
echo "cn: $CN" >> $LDIF
echo "uid: $CN" >> $LDIF
echo "fullName: $fullname" >> $LDIF
echo "sn: $sn" >> $LDIF
echo "givenName: $fn" >> $LDIF
echo "Language: ENGLISH" >> $LDIF
echo "userPassword: $USR_PASSWD" >> $LDIF
echo "objectClass: top" >> $LDIF
echo "objectClass: user" >> $LDIF
ldapmodify -x -h $LDAP_SRV -p $LDAP_PORT -D "$ADMIN_DN" -w $ADMIN_PASSWD -a -f $LDIF
done
Input file (names.txt) should contain a full name on each line e.g.
Boyce Deforge
Allan Giard
Niesha Orozco
Fran Garneau
Valda Wotring
Can use this site to get random names: http://listofrandomnames.com/index.cfm?textarea
Thursday, August 21, 2014
Java Method to Generate OTP
private static String getOTP(int length) {
Random r = new Random();
char[] dArray = "0123456789".toCharArray();
String ret = "" + dArray[ 1 + r.nextInt(8) ];
for(int i=1; i < length; i++) {
ret += dArray[ r.nextInt(9) ];
}
return ret;
}
Monday, August 18, 2014
Technical notes to self
iManager does not like you setting an attribute value to blank. A small LDIF like below will do the trick:
dn: cn=tomjones,ou=users,o=data
change type: modify
add: telephoneNumber
telephoneNumber:
The following will strip blank attributes from an IDM Driver. Normally add to output transform.
<rule>
<description>Strip Empty Values [Add]</description>
<conditions>
<and>
<if-operation mode="case" op="equal">add</if-operation>
</and>
</conditions>
<actions>
<do-strip-xpath expression="add-attr[value='']"/>
<do-strip-xpath expression="add-attr[not(*)]"/>
</actions>
</rule>
<rule>
<description>Strip Empty Values [Modify]</description>
<conditions>
<or>
<if-operation mode="case" op="equal">modify</if-operation>
<if-operation mode="case" op="equal">sync</if-operation>
</or>
</conditions>
<actions>
<do-strip-xpath expression="modify-attr/add-value[value='']"/>
<do-strip-xpath expression="modify-attr[not(*)]"/>
</actions>
</rule>
Communication is Key
The older I get the more I realise how import clear communication is. Communication does not come naturally to all people, espically people in the more technical sectors. I must say I really enjoying working with technology. Things are normally always black and white or zeros and ones. When it comes to people that are a number of soft skills that in my case needed to be learnt and did not come natually and I have to admit I'm still learning new things every day about working with people.
Leason for today:
Talk to people, not about people.
One thing I need to start doing is after key meetings send out my own 'minutes'. This way I communicate my understanding of what was communicated in the meeting and what decisions where made. Also I need to make clear statements in my 'minutes' about assigned roles and responsbilities. Never assume someone has commited to doing something unless it's in black and white!
Friday, August 8, 2014
Database Table Names
Learnt this the hard way when I found out MySQL tables are case sensitive.
Reference: http://stackoverflow.com/questions/14317784/why-underline-is-usually-used-in-the-sql-table-names-rather-than-camel-case
A bit of background information:The (ANSI) SQL standard requires that non-quoted identifiers are stored in all uppercase in the system catalogs and that non-quoted identifiers are case-insensitive.According to the standard the following non-quoted identifiers reference the same object (e.g. a table):FOOBAR,foobar,FooBar(and all would have been stored asFOOBARin the system catalogs).The following quoted identifiers reference 3 different objects:"FOOBAR","foobar","FooBar".Nearly all DBMS comply at least with the requirement that non-quoted identifiers are case insensitive. Except for MySQL and SQL Server as far as I know - both can be configured to be case-sensitive even for non-quoted identifiers. I'm not sure what the default behaviour of SQL Server is though (as Damien pointed out in his comment, this depends on the collation being used for SQL Server).MySQL is even more confusing as its behaviour depends on the combination of several configuration settings, the storage engine and the filesystem. All other DBMS I know are consistent regarding their behaviour across all platforms and installations.PostgreSQL complies with the case-sensitivity but it folds everything to lowercase.So given these rules, I think that the "traditional" naming convention using underscores stems from the fact that object names are stored in uppercase. The only way to get "readable" names is to separate important parts of the name with underscores.SQL Server is even more non-standard as it is case-preserving (similar to the way NTFS under Windows works) so it does not fold the names to anything. So it does not change the case of the name when it's stored in the system catalog (but it is by default case insensitive). For that reason you will find people working in a Microsoft environment using CamelCase more often then e.g. in an Oracle environment.
Reference: http://stackoverflow.com/questions/14317784/why-underline-is-usually-used-in-the-sql-table-names-rather-than-camel-case
Wednesday, September 25, 2013
Windows 2008 Remove Shutdown / Restart Reason
So I've been working with a Windows 2008 VM and was finding it a real pain to keep typing in a message every time I needed to restart / shutdown the VM, and as we know Windows loves restarting after every patch / update / software installation.
This quick fixed removed the required to input a shutdown/restart reason -> http://www.win2008r2workstation.com/disable-shutdown-event-tracker/
Monday, September 23, 2013
NetIQ / Novell IDM 4.0.2 Engine Patch 3
I was getting the following error when trying to install engine patch 3:
"Script for patch install,patchUpgrade.sh,does not have correct permissions,exiting the installation.."
You need to make the following files executable on Linux for the install to work:
- install.sh
- config/patchUpgrade.sh
- config/NonRootPatcher.sh
Since when do you put executable files in the config directory? Especially when there is already a bin folder as part of the patch. Really sad to see the lack of quality control on patches being released.
"Script for patch install,patchUpgrade.sh,does not have correct permissions,exiting the installation.."
You need to make the following files executable on Linux for the install to work:
- install.sh
- config/patchUpgrade.sh
- config/NonRootPatcher.sh
Since when do you put executable files in the config directory? Especially when there is already a bin folder as part of the patch. Really sad to see the lack of quality control on patches being released.
Thursday, September 19, 2013
McAfee Registry Madness
Just had to make a quick note about this.
So I could not seem to get Explorer to show hidden files. Eventually I found out it was an issue writing to the following registry tree:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
Checked numerous online posts about registry permissions. Eventually I found out the McAfee was blocking me writing to this specific part of the registry. I have now decided to can McAfee and go back to MS Security Essentials. What an absolute waste of time just to fix something so simple.
So I could not seem to get Explorer to show hidden files. Eventually I found out it was an issue writing to the following registry tree:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
Checked numerous online posts about registry permissions. Eventually I found out the McAfee was blocking me writing to this specific part of the registry. I have now decided to can McAfee and go back to MS Security Essentials. What an absolute waste of time just to fix something so simple.
Saturday, July 27, 2013
Reinstalling Windows
So I just went through the pretty painful process of reinstalling Windows 7 on my laptop. I decided to buy a SSD drive and thought the best option would be a clean install. Sadly it took 2 days for Windows to install all its updates. I think I must have rebooted my laptop about 10 times or more in total to get it up to the latest patched version. I decided to write this blog entry just to track the software I installed after loading Windows. So here goes:
- Drivers, drivers and more drivers
- JRE
- Chrome
- Firefox
- VMware
- Office 2013
- Dropbox
- Picasa
- Notepad++
- VLC
- 7-Zip
- Gadwin Print Screen
- MobaXterm
- Nitro PDF Reader
Doing this whole process make me realise what a painful operating system Windows really is. Ideally installing all this should not take this long and the Windows update process is just an absolute pain. Going forward lets hope Windows 8 and it's app store can make life a little easier when it comes to reinstalls.
Saturday, June 29, 2013
HTTP Status 404 - /nps/servlet/imanauthentication
The above is a nice error you get on new install of iManager 2.7.5. It's always fun when it takes you hours to install a product...NOT
This error can be fixed by replacing one file:
cp /var/opt/novell/iManager/nps/WEB-INF/newweb.xml /var/opt/novell/iManager/nps/WEB-INF/web.xml
Then restart tomcat.
Do people not test their software?
This error can be fixed by replacing one file:
cp /var/opt/novell/iManager/nps/WEB-INF/newweb.xml /var/opt/novell/iManager/nps/WEB-INF/web.xml
Then restart tomcat.
Do people not test their software?
ldconfig Segmentation fault on SLES 11 SP2
To resolve just delete the following file:
/var/cache/ldconfig/aux-cache
/var/cache/ldconfig/aux-cache
Monday, June 24, 2013
SQL Error: ORA-23412: master table's primary key columns have changed
Got this beautiful error when trying to re-create one of our Materialized views (MV). Sadly googling did not seem to provide a solution. To fix this I had to drop the MV log on the 'parent' database for the table in question. I could then re-create the MV.
Subscribe to:
Posts (Atom)