Saturday, December 20, 2014
Anarchic Development Efforts
Nokia, once the leader in mobile technologies really messed up big. They were poised (perhaps) to be where Apple is today with the iPad and the iPhone however they had various deeply seeded problems which ultimately caused the demise of their R&D efforts. This interesting article is a great read for technology project managers. One of the most interesting things I found was the mention of "anarchic development efforts" at Nokia which was a major factor leading to ultimate project failure. By contrast the leadership culture at Apple has been very disciplined and focused under the collaborative-dictatorship of Steve Jobs. On a personal note, this is why, when I am heading up development teams, I have no time for "anarchic development efforts". Developers that don't get with the program must be let go or the entire project will be in jeopardy. I think this article highlights a sterling example of issue.
Saturday, December 6, 2014
Installing Linux 64bit driver for eToken USB
If needed install, opensc and pcsc-lite
Download the driver, unzip and install
You should see the following (choose 1 for English):
Check
The result should be similar to:
yum install opensc pcsc-lite |
Download the driver, unzip and install
wget http: //download.fh-swf.de/dvz/software/eToken/Linux/Software/SafeNetAuthenticationClient_Linux_8_1.1.zip unzip SafeNetAuthenticationClient_Linux_8_1. 1 .zip cd SAC\ 8.1 \ Linux/x86_64/ unzip SAC_8_1_0_4_Linux_RPM_64.zip cd SAC_8_1_0_4_Linux_RPM_64/Signed\ installation\ scripts/ chmod +x signed-install_SafenetAuthenticationClient- 8.1 . 0 - 4 .x86_64.rpm.sh cp ../RPM/SafenetAuthenticationClient- 8.1 . 0 - 4 .x86_64.rpm . ./signed-install_SafenetAuthenticationClient- 8.1 . 0 - 4 .x86_64.rpm.sh |
You should see the following (choose 1 for English):
Searching SafenetAuthenticationClient- 8.1 . 0 - 4 .x86_64.rpm... OK Searching RPM-GPG-KEY-SafenetAuthenticationClient... OK Deleting existing key Importing key: RPM-GPG-KEY-SafenetAuthenticationClient Starting installation ########################################### [ 100 %] ########################################### [ 100 %] Adding Token security provider......done. Starting PC/SC smart card daemon (pcscd): [ OK ] SafeNet Authentication Client installation completed.
Choose Client Language: ------------------------ 1 . English.....(En) 2 . Spanish.....(Es) 3 . French......(Fr) 4 . Italian.....(It) 5 . Japanese....(Jp) 6 . Korean......(Ko) 7 . Russian.....(Ru) 8 . Chinese.....(Zh) 9 . Portoguese..(Pt) 10 . Thai.......(Th) Your choice [ 1 - 10 ] --> 1 Installing Language code En. Done! |
Check
opensc-tool --list-readers |
The result should be similar to:
# Detected readers (pcsc) Nr. Card Features Name 0 Yes AKS ifdh 00 00 Find out which slot the device is in: pkcs11-tool --module /usr/lib64/libeToken.so -L
You should see something to the effect of:
|
Tuesday, August 12, 2014
Installing MS fonts into Centos for converting DOCX files to PDF using DOCX4J
a) Install MS TT Fonts using information here:
b) If you need font mapping you can setup a font.properties file. I copied the one on my Mac, from
/Library/Java/Home/lib/fontconfig.properties.src
to
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.51.x86_64/lib/font.properties
.. on my Centos development box .
/Library/Java/Home/lib/fontconfig.properties.src
to
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.51.x86_64/lib/font.properties
.. on my Centos development box .
Notes:
After installing the MS fonts, it must add a file to the JDK lib as (the path will vary based on whatever JVM you are using):
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.51.x86_64/lib/msttcorefonts-2.5-1.spec
The reason for renaming fontconfig.properties.src to font.properties, is found here:
http://docs.oracle.com/javase/8/docs/technotes/guides/intl/fontconfig.html
Remember to restart any Java app that's running and needs to find the newly installed fonts.
http://docs.oracle.com/javase/8/docs/technotes/guides/intl/fontconfig.html
Remember to restart any Java app that's running and needs to find the newly installed fonts.
Saturday, July 5, 2014
Generating certs for testing PDF signing
Run the following as root:
openssl genrsa -out ca.key 2048
openssl req -new -key ca.key -out ca.csr
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
openssl pkcs12 -export -in ca.crt -inkey ca.key -name ca -passout pass:password -out ca.pfx
openssl genrsa -out ca.key 2048
openssl req -new -key ca.key -out ca.csr
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
openssl pkcs12 -export -in ca.crt -inkey ca.key -name ca -passout pass:password -out ca.pfx
Wednesday, June 18, 2014
Good to know: PostgreSQL records to single JSON string
To convert a set of results to a single JSON string, use:
SELECT
ARRAY_TO_JSON(ARRAY_AGG(ROW_TO_JSON(ROW)))
as DAT FROM (
[ your query here ]
) ROW;
Tip: In the query, if you specify field names or table.*, you will not get an object hence the JSON will not have your schema sub grouped by object name. i.e.
SELECT
ARRAY_TO_JSON(ARRAY_AGG(ROW_TO_JSON(ROW)))
as DAT FROM (
SELECT mytable WHERE [ ... ]
) ROW;
... is not the same as ...
SELECT
ARRAY_TO_JSON(ARRAY_AGG(ROW_TO_JSON(ROW)))
as DAT FROM (
SELECT mytable.* WHERE [ ... ]
) ROW;
Kudos: http://hashrocket.com/blog/posts/faster-json-generation-with-postgresql
SELECT
ARRAY_TO_JSON(ARRAY_AGG(ROW_TO_JSON(ROW)))
as DAT FROM (
[ your query here ]
) ROW;
Tip: In the query, if you specify field names or table.*, you will not get an object hence the JSON will not have your schema sub grouped by object name. i.e.
SELECT
ARRAY_TO_JSON(ARRAY_AGG(ROW_TO_JSON(ROW)))
as DAT FROM (
SELECT mytable WHERE [ ... ]
) ROW;
... is not the same as ...
SELECT
ARRAY_TO_JSON(ARRAY_AGG(ROW_TO_JSON(ROW)))
as DAT FROM (
SELECT mytable.* WHERE [ ... ]
) ROW;
Kudos: http://hashrocket.com/blog/posts/faster-json-generation-with-postgresql
Tuesday, June 10, 2014
Script to remove jpg files recursively
I am using a webcam which uploads files via FTP. Unfortunately the cam which uploads the files does not clean up old files. It's actually a set of cameras which all write file to their own directory structures. So when I need a script to clean up the old jpg files it needs to run recursively:
#!/usr/bin/env python
import re
import os
__dir__ = os.path.dirname(os.path.realpath(__file__))
def cleanup_recursive(_dir=__dir__):
print "Cleaning " + _dir
for _item in os.listdir(_dir):
_path = _dir + "/" + _item
if os.path.isfile(_path) and re.match(".+\.jpg$", _path):
os.remove(_path)
elif os.path.isdir(_path):
cleanup_recursive(_dir)
cleanup_recursive()
Thursday, June 5, 2014
Remove Bitdefender from OSX (App Store version)
Bitdefender for Windows is a highly rated application, but I can tell you from personal experience, on OSX, it's pretty much garbage. Furthermore, the App Store version does not come with an uninstaller the same way the download (from their site) version does.
After following their recommended way of removing the app you may want to remove other files also.
Remove this folder:
~/Library/Application\ Support/Bitdefender\ Virus\ Scanner
And this file:
~/Library/Saved\ Application\ State/com.bitdefender.BitdefenderVirusScanner.savedState
The issue that I, and other nay sayers on the App Store, have with BD AV is that it completely locks up your system when running a full scan, essentially making it about as bad as some viruses.
I'm using ClamXAV now instead.
Tuesday, June 3, 2014
PostgreSQL:: Find functions containing
Sometimes when you need to find a function which contains specific text in the definition or description, it's handy to have a function that makes that possible.
Here is a function that will allow you to do just that:
Here is a function that will allow you to do just that:
/**
DEFINE
*/
CREATE OR REPLACE FUNCTION my_admin_schema.sel_function_containing(_schema_name text, _search_value text)
RETURNS TABLE (
schema text, sproc_name text, arg_names text, return_type text, description text, definition text
) AS
$BODY$
BEGIN
RETURN QUERY
WITH funcs AS (
SELECT
n.nspname::text AS schema
,proname::text AS sproc_name
,proargnames::text AS arg_names
,t.typname::text AS return_type
,d.description
,pg_get_functiondef(p.oid) as definition
FROM pg_proc p
JOIN pg_type t on p.prorettype = t.oid
JOIN pg_description d on p.oid = d.objoid
JOIN pg_namespace n on n.oid = p.pronamespace
WHERE n.nspname = _schema_name
)
SELECT *
FROM funcs
WHERE funcs.definition ~* _search_value
OR funcs.description ~* _search_value
;
END; $BODY$ LANGUAGE plpgsql STABLE COST 100
;;
/**
EXAMPLE USAGE
*/
SELECT * FROM offerpoint_admin1.sel_function_containing('my_app_schema', 'status')
;;
Subscribe to:
Posts (Atom)