<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Apps by David</title>
	<atom:link href="http://apps.daviddemartini.com/feed" rel="self" type="application/rss+xml" />
	<link>http://apps.daviddemartini.com</link>
	<description>Unique iPhone, iPad and MAC Applications by David DeMartini</description>
	<lastBuildDate>Tue, 27 Mar 2012 17:14:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Example of a large dataset re-processor (text file IO in Java)</title>
		<link>http://apps.daviddemartini.com/archives/268</link>
		<comments>http://apps.daviddemartini.com/archives/268#comments</comments>
		<pubDate>Tue, 27 Mar 2012 17:14:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[dataset-file-io]]></category>
		<category><![CDATA[file I/O]]></category>
		<category><![CDATA[how-to-sample-a-large-data-set-in-java]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[medium data]]></category>
		<category><![CDATA[sample code]]></category>
		<category><![CDATA[textfileio-java]]></category>

		<guid isPermaLink="false">http://apps.daviddemartini.com/?p=268</guid>
		<description><![CDATA[With almost 100,000,000 records to process in two data files, that do not have unified formats, a processor tool had to be crafted to handle both formats, then distill it down to a 3rd smaller and more concise format. The following source code is an example of how I accomplished that task using Java. /* ------------------------------------------------------------------------ $Id: fileRepair.java,v 1.1 2012/03/21 18:31:47 ddemartini Exp $ $Revision: 1.3 $ $Date: 2012/03/21 18:31:47 $ $Name: $ ------------------------------------------------------------------------ Loader ------------------------------------------------------------------------ colname[0] = "seq_num"; colname[1] = "ip"; colname[2] = "mode"; - drop colname[3] = "property"; colname[4] = "threat"; colname[5] = "desc"; - drop colname[6] = "meta"; colname[7] = "detected"; - drop colname[8] = "det_method"; colname[9] = "reported"; - drop colname[10] = "rpt_method"; colname[11] = "target"; - drop colname[12] = "source"; ------------------------------------------------------------------------ */ import base.*; /* this contains base and util classes */ import java.io.UnsupportedEncodingException; import java.io.FileReader; import java.io.FileWriter; import java.io.PrintWriter; import java.io.File; import java.io.BufferedReader; import java.nio.ByteBuffer; import java.util.Hashtable; import java.util.regex.Pattern; public class fileRepair{ private static int skip = Integer.parseInt(Util.envOrProp("skip")); // number of lines to skip from top private static int tStep = 600000; // milisecond step for status update (600000 = 10 minutes) private static long totInserts = 0; // counter for total inserts private [...]]]></description>
		<wfw:commentRss>http://apps.daviddemartini.com/archives/268/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Java Utils Library source code.</title>
		<link>http://apps.daviddemartini.com/archives/264</link>
		<comments>http://apps.daviddemartini.com/archives/264#comments</comments>
		<pubDate>Mon, 26 Mar 2012 22:46:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[jar]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://apps.daviddemartini.com/?p=264</guid>
		<description><![CDATA[Today I&#8217;m including a couple of general purpose Java Source code files. /* ------------------------------------------------------------------------ $Id: Util.java,v 1.1 2012/03/14 16:16:49 ddemartini Exp $ $Revision: 1.1 $ $Date: 2012/03/14 16:16:49 $ $Name: $ ------------------------------------------------------------------------ Utilities Added file utilities ------------------------------------------------------------------------ */ package base; import java.io.UnsupportedEncodingException; import java.io.File; import java.util.*; public class Util { /* retrieve environment or -D options passed by implementer */ public static String envOrProp(String name) { if (System.getenv(name) != null) { return System.getenv(name); } else if (System.getProperty(name) != null) { return System.getProperty(name); } else { return null; } } /* envOrProp */ /* Open a file stream and test for read */ private static File fhRead(String inFile) throws Exception { File rf = openFile(inFile); try { // verify file exists and is readable if(! rf.exists() &#124;&#124; !rf.canWrite()){ System.out.println("Unable to read file "+inFile); return null; } } catch (Exception e) { System.out.println("Fatal error attempted to open stream from "+inFile+"\n"+e); return null; } return rf; } /* fhRead */ /* Open a file steam for writing */ private static File fhWrite(String outFile) throws Exception { File of = openFile(outFile); try { // verify file would be writable if(!of.canWrite()){ System.out.println("Unable to read file "+outFile); return null; } } catch (Exception e) { System.out.println("Fatal [...]]]></description>
		<wfw:commentRss>http://apps.daviddemartini.com/archives/264/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java multi-get demonstrator for Cassandra NoSQL  db</title>
		<link>http://apps.daviddemartini.com/archives/259</link>
		<comments>http://apps.daviddemartini.com/archives/259#comments</comments>
		<pubDate>Thu, 15 Mar 2012 12:10:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[cassandra-nosql-mac-os]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[nosql]]></category>
		<category><![CDATA[thrift api]]></category>

		<guid isPermaLink="false">http://apps.daviddemartini.com/?p=259</guid>
		<description><![CDATA[This simple demonstrator that makes a connection to a Cassandra cluster and inserts a user-defined number of row, then extracts them to demonstrate performance boost with multiGet. It&#8217;s genesis was the result of working towards a Thrift API loader for a Cassandra evaluation implementation. You can read bout that, here: Cassandra – A Use case examined (IP data) /* ------------------------------------------------------------------------ $Id: useMultiGet.java,v 1.2 2012/03/15 12:56:45 ddemartini Exp $ $Revision: 1.2 $ $Date: 2012/03/15 12:56:45 $ $Name: $ ------------------------------------------------------------------------ MultiGet demonstrator This class makes use of our custom Utility class ------------------------------------------------------------------------ */ package c01; import base.*; import java.util.*; import java.nio.ByteBuffer; import org.apache.cassandra.thrift.*; public class useMultiGet { public static void main (String[] args) throws Exception { /* Use to specify host,port,keyspace,columnfamily and insert count */ String host = Util.envOrProp("host"); int port = Integer.parseInt(Util.envOrProp("port")); int inserts = Integer.parseInt(Util.envOrProp("inserts")); String ks = Util.envOrProp("ks"); String cf = Util.envOrProp("cf"); int slice = Integer.parseInt(Util.envOrProp("slice")); /* instance db connector and open connection */ CassDB db = new CassDB(host,port); db.open(); /* first check for the existance of the keyspace */ /* use ColumnParent to insert data */ ColumnParent parent = new ColumnParent(); parent.setColumn_family(cf); /* use ColumnPath to get data */ ColumnPath path = new ColumnPath(); path.setColumn_family(cf); path.setColumn("acol".getBytes("UTF-8")); /* RESEARCH [...]]]></description>
		<wfw:commentRss>http://apps.daviddemartini.com/archives/259/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cassandra DB Connetor in Java, using Thrift API</title>
		<link>http://apps.daviddemartini.com/archives/249</link>
		<comments>http://apps.daviddemartini.com/archives/249#comments</comments>
		<pubDate>Wed, 14 Mar 2012 19:08:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[apache-cassandra-java-api]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[cassandra-db]]></category>
		<category><![CDATA[cassandra-java-connector]]></category>
		<category><![CDATA[cassandra-java-source]]></category>
		<category><![CDATA[connector-cassandra-db]]></category>
		<category><![CDATA[import-org-apache-thrift-cassandra]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[nosql]]></category>
		<category><![CDATA[thrift api]]></category>

		<guid isPermaLink="false">http://apps.daviddemartini.com/?p=249</guid>
		<description><![CDATA[This simple connector class for making a connection to a Cassandra cluster. It&#8217;s genesis was the result of working towards a Thrift API loader for a Cassandra evaluation implementation. You can read bout that, here: Cassandra – A Use case examined (IP data) /* ------------------------------------------------------------------------ $Id: CassDB.java,v 1.1 2012/03/13 23:20:02 ddemartini Exp $ $Revision: 1.1 $ $Date: 2012/03/13 23:20:02 $ $Name: $ ------------------------------------------------------------------------ Sample connector program. Requires two environment variables be setup to executed host: hostname of Cassandra cluster node member port: connector port - default is 9160, this should be default ------------------------------------------------------------------------ */ package base; import org.apache.cassandra.thrift.Cassandra; import org.apache.thrift.protocol.*; import org.apache.thrift.transport.*; public class CassDB { /* Delcare private properties used for client server communications */ private TTransport transport; private TProtocol protocol; private TSocket socket; /* Constructor takes supplied host and port */ public CassDB(String host, int port) throws Exception { try { socket = new TSocket(host,port); transport = new TFramedTransport(socket); protocol = new TBinaryProtocol(transport); } catch(Exception e){ System.out.println("Exception "+e); } } /* Opener */ public void open() throws Exception { try { transport.open(); } catch(Exception e) { System.out.println("Exception "+e); } } /* Closer */ public void close() throws Exception { try { transport.close(); } catch(Exception e) { System.out.println("Exception "+e); [...]]]></description>
		<wfw:commentRss>http://apps.daviddemartini.com/archives/249/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Creating a simple Utils class</title>
		<link>http://apps.daviddemartini.com/archives/247</link>
		<comments>http://apps.daviddemartini.com/archives/247#comments</comments>
		<pubDate>Wed, 14 Mar 2012 19:02:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[nosql]]></category>
		<category><![CDATA[setreplication_factor]]></category>
		<category><![CDATA[system_add_keyspace-example-1-1]]></category>
		<category><![CDATA[thrift api]]></category>

		<guid isPermaLink="false">http://apps.daviddemartini.com/?p=247</guid>
		<description><![CDATA[This simple Utils class is more of a demonstrator than a widely-reusable class. It&#8217;s genesis was the result of working towards a Thrift API loader for a Cassandra evaluation implementation. You can read bout that, here: Cassandra – A Use case examined (IP data) Here is the source code: /* ------------------------------------------------------------------------ $Id: Util.java,v 1.1 2012/03/14 16:16:49 ddemartini Exp $ $Revision: 1.1 $ $Date: 2012/03/14 16:16:49 $ $Name: $ ------------------------------------------------------------------------ Utilities ------------------------------------------------------------------------ */ package base; import java.io.UnsupportedEncodingException; import java.util.*; import org.apache.cassandra.thrift.*; public class Util { /* Returns a list of keyspaces, good for keyspace lookup */ public static List listKeySpaces(Cassandra.Client c) throws Exception { List results = new ArrayList(); for (KsDef k : c.describe_keyspaces()) { results.add(k.getName()); } return results; } /* listKeySpaces */ /* create KsDef CfDef ready for use with system_add_keyspace() */ public static KsDef createSimpleKSandCF(String ksname, String cfname, int replication) { KsDef newKs = new KsDef(); newKs.setStrategy_class("org.apache.cassandra.locator.SimpleStrategy"); newKs.setName(ksname); newKs.setReplication_factor(replication); CfDef cfDef = new CfDef(); cfDef.setKeyspace(ksname); cfDef.setName(cfname); newKs.addToCf_defs(cfDef); return newKs; } /* createSimpleKSandCF */ /* retrieve environment or -D options passed by implementer */ public static String envOrProp(String name) { if (System.getenv(name) != null) { return System.getenv(name); } else if (System.getProperty(name) != null) { return System.getProperty(name); } else { return [...]]]></description>
		<wfw:commentRss>http://apps.daviddemartini.com/archives/247/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java build env to prepare for Cassandra development</title>
		<link>http://apps.daviddemartini.com/archives/235</link>
		<comments>http://apps.daviddemartini.com/archives/235#comments</comments>
		<pubDate>Sat, 03 Mar 2012 17:44:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[3rd Party Apps]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[big data]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[cassandra-junit]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jdk]]></category>
		<category><![CDATA[jre]]></category>
		<category><![CDATA[junit]]></category>

		<guid isPermaLink="false">http://apps.daviddemartini.com/?p=235</guid>
		<description><![CDATA[Getting it all ready&#8230; PREV: Cassandra – Getting a 3 node cluster built First, I wanted to see how much of a system footprint 3 instances of Cassandra had on this little system. Here you can see the 3 instances patiently waiting for something todo. Sitting idle for about 24 hours (note, TIME+ is system time, not wall clock), total memory utilization has crept up from 11% to 14% per process. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4554 bigdata 20 0 891m 134m 4388 S 7.6 14.4 7:47.96 java 4632 bigdata 20 0 917m 133m 4340 S 0.7 14.3 7:45.64 java 4593 bigdata 20 0 896m 133m 4168 S 0.3 14.3 7:40.37 java Keep in mind this test box has a single core CPU with a whopping 1GB of memory. If I can get it to work on this box without pushing it over, you should be able to run a single instance on any box with a reasonable expectation of function. The data model I wanted to use is pretty basic: IP traffic, consisting of the following elements: * IPv4 address * destination port * timestamp * TTL (this is a Cassandra construct [...]]]></description>
		<wfw:commentRss>http://apps.daviddemartini.com/archives/235/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cassandra &#8211; Getting a 3 node cluster built</title>
		<link>http://apps.daviddemartini.com/archives/228</link>
		<comments>http://apps.daviddemartini.com/archives/228#comments</comments>
		<pubDate>Fri, 02 Mar 2012 20:40:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[big data]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[cassandra-1-0-8-seeds-multiple-nodes]]></category>
		<category><![CDATA[cassandra-3node]]></category>
		<category><![CDATA[cassandra-db-3-nodes-cluster]]></category>
		<category><![CDATA[cassandra-jmx-unique-port]]></category>
		<category><![CDATA[cql]]></category>
		<category><![CDATA[nodetool]]></category>

		<guid isPermaLink="false">http://apps.daviddemartini.com/?p=228</guid>
		<description><![CDATA[Cassandra &#8211; Getting off the ground. PREV: Cassandra – researching a DB for ‘Big Data’ While researching a project on Big Data services, I knew that I&#8217;d need a multi-node cluster to experiment with, but a pile of hardware was not immediately available. Using the VERY helpful book Cassandra High Performance Cookbook I was able to build a 3 node cluster on a single machine. This is how I did it: For this cluster test example, I am using Ubunto 10, with following JVM JVM vendor/version: OpenJDK 64-Bit Server VM/1.6.0_22 Downloaded Cassandra 1.0.8 package from here: http://apache.mirrors.tds.net//cassandra/1.0.8/apache-cassandra-1.0.8-bin.tar.gz Created new user on system: bigdata Create the required base data directories $ mkdir commitlog,log,data,saved_caches Moved that package there and started the build $ cp /tmp/apache-cassandra-1.0.8-bin.tar.gz . Unzipped and extracted the contents $ gunzip apache-cassandra-1.0.8-bin.tar.gz $ tar xvf apache-cassandra-1.0.8-bin.tar Moved the long directory name to first instance cassA-1.0.8 $ mv apache-cassandra-1.0.8 cassA-1.0.8 Extracted again and renamed this to the other two planned instances: $ tar xfv apache-cassandra-1.0.8-bin.tar $ mv apache-cassandra-1.0.8 cassB-1.0.8 $ tar xfv apache-cassandra-1.0.8-bin.tar $ mv apache-cassandra-1.0.8 cassC-1.0.8 This gave me three packages to build, and each with a unique IP cassA-1.0.8 10.1.1.101 cassB-1.0.8 10.1.1.102 cassC-1.0.8 10.1.1.103 Edit configuration files in each [...]]]></description>
		<wfw:commentRss>http://apps.daviddemartini.com/archives/228/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Examining an SSL CERT &#8211; openssl to the rescue!</title>
		<link>http://apps.daviddemartini.com/archives/224</link>
		<comments>http://apps.daviddemartini.com/archives/224#comments</comments>
		<pubDate>Tue, 21 Feb 2012 18:07:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[notafter-openssl]]></category>

		<guid isPermaLink="false">http://apps.daviddemartini.com/?p=224</guid>
		<description><![CDATA[Viewing the contents of an SSL CERT You have that shiny new SSL CERT you purchased online, but how do you know it&#8217;s properly tagged and signed? What if you find a cert on your system and you want to know what it covers, when it expires, whom might own it, etc. Well, that&#8217;s possible using the openssl command line tool. Running a simple command we&#8217;ll examine the SSL Cert. The important info is in the &#8216;Issuer&#8217; and &#8216;Subject&#8217; blocks. openssl x509 -noout -text -in my.super-awesome.hostname.cert Certificate: Data: Version: 3 (0x2) Serial Number: c4:3d:66:b4:e3:cc:61:86 Signature Algorithm: sha1WithRSAEncryption Issuer: C=US, ST=Kellyfornia, L=Sac-of-Tomatoes, O=Crazy Assembly House, OU=Committe on wasting tax payer money, CN=*.super-awesome.net/emailAddress=admin@super-awesome.net Validity Not Before: Jan 9 17:50:56 2012 GMT Not After : Jan 6 17:50:56 2022 GMT Subject: C=US, ST=Kellyfornia, L=Sac-of-Tomatoes, O=Crazy Assembly House, OU=Committe on wasting tax payer money, CN=*.super-awesome.net/emailAddress=admin@super-awesome.net Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): [...] /* removed the modulus to keep the post short */ Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: 9D:72:0C:A0:E6:EB:77:2C:77:EF:E8:9E:B7:BC:9F:53:81:1A:40:9D X509v3 Authority Key Identifier: keyid:9D:72:0C:A0:E6:EB:77:2C:77:EF:E8:9E:B7:BC:9F:53:81:1A:40:9D DirName:/C=US/ST=Kellyfornia/L=Sac-of-Tomatoes/O=Crazy Assembly House/OU=Committe on wasting tax payer money/CN=*.super-awesome.net/emailAddress=admin@super-awesome.net serial:C4:3D:66:B4:E3:CC:61:86 X509v3 Basic Constraints: CA:TRUE Signature Algorithm: sha1WithRSAEncryption [...] [...]]]></description>
		<wfw:commentRss>http://apps.daviddemartini.com/archives/224/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cassandra &#8211; researching a DB for &#8216;Big Data&#8217;</title>
		<link>http://apps.daviddemartini.com/archives/218</link>
		<comments>http://apps.daviddemartini.com/archives/218#comments</comments>
		<pubDate>Fri, 17 Feb 2012 21:46:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[3rd Party Apps]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[data warehouse]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[db warehouse]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[warehouse | Category: Software Development]]></category>

		<guid isPermaLink="false">http://apps.daviddemartini.com/?p=218</guid>
		<description><![CDATA[Being an old-school OSS&#8217;er, MySql has been my go-to DB for data storage since the turn of the century. It&#8217;s great, I love it (mostly) but it does have it&#8217;s drawbacks. Largest of which is it&#8217;s now owned by Oracle which does a HORRIBLE JOB of supporting it. I have personal experience with this, as the results of a recent issue with InnoDB and MySQL. In the mean time, some of the hot-shot up-and-commers in another department have been facing their own data processing challenges (with MySql and other DB&#8217;s), and have started to look at some highly scalable alternatives. One of the front-runners right now is Apache&#8217;s Cassandra database project. The synopsis from the page is (as would be most marketing verbiage) very encouraging! The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data. Cassandra&#8217;s support for replicating across multiple datacenters is best-in-class, providing lower latency for your users and the peace of mind of knowing that you can survive regional outages. This sounds too good to be true. Finally a solution [...]]]></description>
		<wfw:commentRss>http://apps.daviddemartini.com/archives/218/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Re-setting / Re-Indexing Apple OSX Help Books</title>
		<link>http://apps.daviddemartini.com/archives/199</link>
		<comments>http://apps.daviddemartini.com/archives/199#comments</comments>
		<pubDate>Wed, 08 Feb 2012 07:39:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[apple help]]></category>
		<category><![CDATA[apple-helpbook]]></category>
		<category><![CDATA[com-apple-help-plist]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[help book]]></category>
		<category><![CDATA[helpcache-plist]]></category>
		<category><![CDATA[hiutil-caf-helpindex]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[systemlibraryprivateframeworkshelpdata-frameworkversionsaresourceshelp]]></category>
		<category><![CDATA[systemlibraryprivateframeworkshelpdata-frameworkversionsaresourceshelpd]]></category>
		<category><![CDATA[what-is-apple-helpd]]></category>

		<guid isPermaLink="false">http://apps.daviddemartini.com/?p=199</guid>
		<description><![CDATA[While developing applications and the associated help books, sometimes you need to flush the cache to test updates to your applications Apple Help Book. I won&#8217;s say this is the most effective, or correct way to handle the issue, I will say it&#8217;s the one that worked for me. First order of business is to flush out the help cache. NOTE: If you do this, you&#8217;ll need to make sure and restart helpd to create the fresh cache entries. You will find your user&#8217;s cached versions of the files located here: ~/Library/Caches/com.apple.helpd Located there are the following 3 items (two files and one directory) -rw-r--r-- 1 mememe staff 6574080 Feb 7 22:13 Cache.db drwxr-xr-x 56 mememe staff 1904 Feb 2 13:37 Generated -rw-r--r-- 1 mememe staff 69585 Feb 7 22:15 HelpCache.plist The application I&#8217;m looking to flush the help file for is com.daviddemartini.cidrcalculator.help. It&#8217;s highlighted in this partial list here: [...] com.apple.Mail.help com.apple.keychainaccess.help com.apple.PhotoBooth.help com.apple.machelp com.apple.PodcastCapture.help com.canon.Digital Photo Professional.help com.apple.PodcastPublisher.help com.daviddemartini.cidrcalculator.help com.apple.Preview.help com.apple.QuickTimePlayerX.help com.prect.NavicatPremium.help [...] I removed that directory and it&#8217;s contents, then removed the two cache files in the upper most directory (first one we entered): cd com.daviddemartini.cidrcalculator.help rm English.helpindex cd .. rmdir com.daviddemartini.cidrcalculator.help cd ../.. rm Cache.db HelpCache.plist [...]]]></description>
		<wfw:commentRss>http://apps.daviddemartini.com/archives/199/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

