<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-495644103355424</atom:id><lastBuildDate>Wed, 16 May 2012 18:23:20 +0000</lastBuildDate><category>Ruby</category><category>Web</category><title>Trixy Programming</title><description>attempts to solve technical problems</description><link>http://trixy.justinkbeck.com/</link><managingEditor>noreply@blogger.com (Justin Beck)</managingEditor><generator>Blogger</generator><openSearch:totalResults>50</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-669763392371160752</guid><pubDate>Thu, 24 Dec 2009 08:12:00 +0000</pubDate><atom:updated>2009-12-24T00:12:03.337-08:00</atom:updated><title>Java Native Memory Leak DeflaterOutputStream Derby or MySQL</title><description>So with some more recent database code.  We we're compressing data elements before writing them to the database.  Well our servers kept running out of memory.  I mean Gigs and Gigs of memory.  &lt;br /&gt;&lt;br /&gt;Traced it down to if you don't call Session.End() on GZIPOutputStream  or DeflaterOutputStream it will leak large amounts of Native memory.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://publib.boulder.ibm.com/infocenter/wasinfo/v4r0/index.jsp?topic=/com.ibm.support.was40.doc/html/Java_SDK/swg21054892.html"&gt;This article&lt;/a&gt; has more details.&lt;br /&gt;&lt;br /&gt;Native memory leaks suck to debug, took us about a week to find this.  I hope this helps some other people.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-669763392371160752?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2009/12/java-native-memory-leak.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-3383548608553416415</guid><pubDate>Thu, 24 Dec 2009 08:06:00 +0000</pubDate><atom:updated>2009-12-24T00:06:57.597-08:00</atom:updated><title>Ultramon for Windows 7</title><description>Ultramon Beta is great for Windows 7&lt;br /&gt;&lt;br /&gt;Works like a charm with even nice start menu;s&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.realtimesoft.com/ultramon/download_beta.asp"&gt; Download it here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-3383548608553416415?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2009/12/ultramon-for-windows-7.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-3035312355760635148</guid><pubDate>Thu, 24 Dec 2009 08:05:00 +0000</pubDate><atom:updated>2009-12-24T00:05:36.128-08:00</atom:updated><title>Solution to Skype 3.8 on Windows 7</title><description>So I hate Skype 4.0 they just messed too much stuff up for me.  So I like to run the old version of skype 3.8 but it doesn't work for Windows 7.  &lt;br /&gt;&lt;br /&gt;The solution, run Skype 3.6&lt;br /&gt;&lt;br /&gt;I can confirm &lt;a href="http://download.oldapps.com/Skype/SkypeSetup_3.6.0.248.exe"&gt;this build works&lt;/a&gt; (oldapps.com)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-3035312355760635148?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2009/12/solution-to-skype-38-on-windows-7.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-2249880603615505709</guid><pubDate>Thu, 24 Dec 2009 08:03:00 +0000</pubDate><atom:updated>2009-12-24T00:03:08.271-08:00</atom:updated><title>Alcohol 52% Windows 7 mount mds or iso Disk Images</title><description>Recently I upgraded to Windows 7.  Alcohol 52% no longer works.  :-( &lt;br /&gt;&lt;br /&gt;Lucky Daemon Tools Lite works on Windows 7 and is a nice replacement.  Sometimes I still use Alcohol 52% on Windows Vista to make images&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.disk-tools.com/download/daemon"&gt;Download this version&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-2249880603615505709?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2009/12/alcohol-52-windows-7-mount-mds-or-iso.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-4335371477921487351</guid><pubDate>Sat, 11 Jul 2009 21:20:00 +0000</pubDate><atom:updated>2009-10-30T06:32:34.178-07:00</atom:updated><title>C# POP3 Library with SSL for Gmail</title><description>So I ended up searching for hours trying to find a free C# library to do POP3 access to a SSL server like gmail.  In our company we use Google Apps and we like gmail's mail server, it would be nice to be able to have programmatical access to these mail accounts.  How does this not exist?  &lt;br /&gt;&lt;br /&gt;So this solution takes &lt;a href="http://sourceforge.net/projects/hpop/"&gt;OpenPop.net Open source library&lt;/a&gt; and makes some very small tweaks so it has Ssl support.  &lt;br /&gt;&lt;br /&gt;Here is the important simple code snippet.&lt;br /&gt;&lt;pre&gt;Stream actualstream = clientSocket.GetStream();&lt;br /&gt;&lt;br /&gt;if (useSSL) {&lt;br /&gt;System.Net.Security.SslStream sslstream = new SslStream(clientSocket.GetStream());&lt;br /&gt;sslstream.AuthenticateAsClient(strHost);&lt;br /&gt;actualstream = sslstream;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Attached here is the re zip of the source code with the change to the library and also a tweak to the sample app with a checkbox to include SSL support.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.h2eng.com/OpenPOPwithSSL.zip"&gt;OpenPOP with SSL Source Download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.h2eng.com/OpenPOPwithSSL_Binaries.zip"&gt;OpenPOP with SSL Binaries Download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-4335371477921487351?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2009/07/c-pop3-library-with-ssl-for-gmail.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>9</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-1879062892006221093</guid><pubDate>Mon, 22 Dec 2008 06:58:00 +0000</pubDate><atom:updated>2008-12-21T23:02:56.319-08:00</atom:updated><title>Generating Control Logic for 5 stage pipeline Processor Verilog</title><description>This one takes a little while to explain but is a really bright idea.  Control logic for a processor is one of the most confusing parts.  Especially if this is your first processor your building.  Cranking out a Control Logic Table in excel or something is very valuable because it allows you to see how it all works out.&lt;br /&gt;&lt;br /&gt;I wrote a little ruby script to generate verilog control code based on my spread sheet.  Not only do you not have to code any control logic, but fixing control logic bugs are really easy because it is all in the spread sheet. &lt;br /&gt;&lt;br /&gt;Ruby Script:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;require 'pp'&lt;br /&gt;&lt;br /&gt;def clean(str)&lt;br /&gt;  if str.rindex("b")&lt;br /&gt;    return str[1...str.size]&lt;br /&gt;   else&lt;br /&gt;     return str&lt;br /&gt;  end&lt;br /&gt;    &lt;br /&gt;  &lt;br /&gt;end&lt;br /&gt;@size = []&lt;br /&gt;@wirename = []&lt;br /&gt;@table = []&lt;br /&gt;&lt;br /&gt;File.open('table.txt','r') do |f|&lt;br /&gt;    @size = f.gets.split("\t").map{|x| x.strip }&lt;br /&gt;    @wirename = f.gets.split("\t").map{|x| x.strip }&lt;br /&gt;  f.readlines.each do |l|&lt;br /&gt;    @table &lt;&lt; l.split("\t").map{|x| x.strip } &lt;br /&gt;  end  &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;@size.delete_at(0)&lt;br /&gt;@size.delete_at(0)&lt;br /&gt;&lt;br /&gt;@wirename.delete_at(0)&lt;br /&gt;@wirename.delete_at(0)&lt;br /&gt;&lt;br /&gt;@wiredefs = []&lt;br /&gt;@assignments = []&lt;br /&gt;&lt;br /&gt;#pp @size&lt;br /&gt;#pp @wirename&lt;br /&gt;#pp @table&lt;br /&gt;&lt;br /&gt;#wire assignments&lt;br /&gt;cur = 0&lt;br /&gt;@wirename.each_with_index do |n,i|&lt;br /&gt;  puts n&lt;br /&gt;  df = ""&lt;br /&gt;  sz = @size[i].to_i&lt;br /&gt;  if sz == 1&lt;br /&gt;    df ="wire "&lt;br /&gt;    ass = "assign " + n.to_s + " = data[" + cur.to_s + "];"&lt;br /&gt;  else&lt;br /&gt;    df = "wire[" + (sz-1).to_s + ":0] "   &lt;br /&gt;    ass = "assign " + n.to_s + " = data[" + (cur+sz-1).to_s + ":" + cur.to_s + "];"&lt;br /&gt;  end&lt;br /&gt;    df +=n.to_s + ";"  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  cur += sz&lt;br /&gt;  @wiredefs &lt;&lt; df&lt;br /&gt;  @assignments &lt;&lt;  ass&lt;br /&gt;  end&lt;br /&gt;datasize = 0&lt;br /&gt;File.open ('export.v','w') do |v|&lt;br /&gt;&lt;br /&gt;v.puts @wiredefs.join("\n")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@table.each {|x|&lt;br /&gt;  data = x[2...x.size] &lt;br /&gt;  data = data.reverse&lt;br /&gt;  data = data.map {|c| clean(c)}&lt;br /&gt;  q = data.join&lt;br /&gt;  code = "data = 32'b"  + q&lt;br /&gt;  datasize =  q.size if q.size &gt; datasize&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  v.puts "7'b" + x[0] + ": " + code + " ;" + '//' + x[1].to_s&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;v.puts @assignments.join("\n")&lt;br /&gt;end&lt;br /&gt;puts "data size: " + datasize.to_s&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Example Verilog output:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;wire pc_en;&lt;br /&gt;wire muxI;&lt;br /&gt;wire[1:0] muxJ;&lt;br /&gt;wire pc_select;&lt;br /&gt;wire reg_write;&lt;br /&gt;wire[1:0] rd_select;&lt;br /&gt;wire sign_ext;&lt;br /&gt;wire[1:0] sign_ext_mask;&lt;br /&gt;wire[1:0] alu_rt_select;&lt;br /&gt;wire alu_rs_select;&lt;br /&gt;wire[1:0] alu_op;&lt;br /&gt;wire[1:0] alu_cin_sign;&lt;br /&gt;wire[1:0] alu_anot_bnot;&lt;br /&gt;wire[1:0] shifter_op;&lt;br /&gt;wire[2:0] logic_op;&lt;br /&gt;wire exe_select;&lt;br /&gt;wire save_select;&lt;br /&gt;wire mem_write;&lt;br /&gt;wire[2:0] write_select;&lt;br /&gt;wire pc_add_select;&lt;br /&gt;5'b00000: data = 32'bxxxx0xxxxxxxxxxxxxxxxxxxxx0xxxx0 ;//HALT&lt;br /&gt;5'b00001: data = 32'bx0000x1xxxxx000100000xxxxx00xx01 ;//NOP&lt;br /&gt;5'b01000: data = 32'bx0000x1xxxxx0001000101010010xx01 ;//ADDI&lt;br /&gt;5'b01001: data = 32'bx0000x1xxxxx1011000101010010xx01 ;//SUBI&lt;br /&gt;5'b01010: data = 32'bx0000x1xxxxx00xx100101000010xx01 ;//XORI&lt;br /&gt;5'b01011: data = 32'bx0000x1xxxxx01xx110101000010xx01 ;//ANDNI&lt;br /&gt;5'b10100: data = 32'bx0000x0xxx00xxxxxxx10xxx0010xx01 ;//ROLI&lt;br /&gt;5'b10101: data = 32'bx0000x0xxx01xxxxxxx10xxx0010xx01 ;//SLLI&lt;br /&gt;5'b10110: data = 32'bx0000x0xxx10xxxxxxx10xxx0010xx01 ;//SRAI&lt;br /&gt;5'b10111: data = 32'bx0000x0xxx11xxxxxxx10xxx0010xx01 ;//SRLI&lt;br /&gt;5'b10000: data = 32'bxxxx111xxxxx000100010101xx00xx01 ;//ST&lt;br /&gt;5'b10001: data = 32'bx0100x1xxxxx0001000101010010xx01 ;//LD&lt;br /&gt;5'b10011: data = 32'bx000111xxxxx0001000101010110xx01 ;//STU&lt;br /&gt;5'b11001: data = 32'bx0010xx1xxxx00xx11001xxx1010xx01 ;//TM&lt;br /&gt;5'b11011: data = 32'bx0000x1xxxxx000100001xxx1010xx01 ;//ADD&lt;br /&gt;5'b11011: data = 32'bx0000x1xxxxx101100001xxx1010xx01 ;//SUB&lt;br /&gt;5'b11011: data = 32'bx0000x1xxxxx00xx10001xxx1010xx01 ;//XOR&lt;br /&gt;5'b11011: data = 32'bx0000x1xxxxx01xx11001xxx1010xx01 ;//ANDN&lt;br /&gt;5'b11010: data = 32'bx0000x0xxx00xxxxxxx01xxx1010xx01 ;//ROL&lt;br /&gt;5'b11010: data = 32'bx0000x0xxx01xxxxxxx01xxx1010xx01 ;//SLL&lt;br /&gt;5'b11010: data = 32'bx0000x0xxx10xxxxxxx01xxx1010xx01 ;//SRA&lt;br /&gt;5'b11010: data = 32'bx0000x0xxx11xxxxxxx01xxx1010xx01 ;//SRL&lt;br /&gt;5'b11100: data = 32'bx0010xx000xx101000001xxx1010xx01 ;//SEQ&lt;br /&gt;5'b11101: data = 32'bx0010xx001xx101000001xxx1010xx01 ;//SLT&lt;br /&gt;5'b11110: data = 32'bx0010xx010xx101000001xxx1010xx01 ;//SLE&lt;br /&gt;5'b11111: data = 32'bx0010xx011xx000000001xxx1010xx01 ;//SCO&lt;br /&gt;5'b01100: data = 32'b0xxx0xxxxxxx00xx01000011xx0x0111 ;//BEQZ&lt;br /&gt;5'b01101: data = 32'b0xxx0xxxxxxx00xx01000011xx0x0011 ;//BNEZ&lt;br /&gt;5'b01110: data = 32'b0xxx0xxxxxxxxxxxxxxxx011xx0x1111 ;//BLTZ&lt;br /&gt;5'b01111: data = 32'b0xxx0xxxxxxxxxxxxxxxx011xx0x1011 ;//BGEZ&lt;br /&gt;5'b11000: data = 32'bx0110xxxxxxxxxxxxxx100110110xx01 ;//LBI&lt;br /&gt;5'b10010: data = 32'bx0000x1xxxxx00xx011100100110xx01 ;//SLBI&lt;br /&gt;5'b00100: data = 32'b0xxx0xxxxxxxxxxxxxxxx001xx01xx01 ;//J&lt;br /&gt;5'b00101: data = 32'b1xxx0xxxxxxxxxxxxxxxx011xx01xx01 ;//JR&lt;br /&gt;5'b00110: data = 32'b01000xxxxxxxxxxxxxxxx0011111xx01 ;//JAL&lt;br /&gt;5'b00111: data = 32'b11000xxxxxxxxxxxxxxxx0111111xx01 ;//JALR&lt;br /&gt;assign pc_en = data[0];&lt;br /&gt;assign muxI = data[1];&lt;br /&gt;assign muxJ = data[3:2];&lt;br /&gt;assign pc_select = data[4];&lt;br /&gt;assign reg_write = data[5];&lt;br /&gt;assign rd_select = data[7:6];&lt;br /&gt;assign sign_ext = data[8];&lt;br /&gt;assign sign_ext_mask = data[10:9];&lt;br /&gt;assign alu_rt_select = data[12:11];&lt;br /&gt;assign alu_rs_select = data[13];&lt;br /&gt;assign alu_op = data[15:14];&lt;br /&gt;assign alu_cin_sign = data[17:16];&lt;br /&gt;assign alu_anot_bnot = data[19:18];&lt;br /&gt;assign shifter_op = data[21:20];&lt;br /&gt;assign logic_op = data[24:22];&lt;br /&gt;assign exe_select = data[25];&lt;br /&gt;assign save_select = data[26];&lt;br /&gt;assign mem_write = data[27];&lt;br /&gt;assign write_select = data[30:28];&lt;br /&gt;assign pc_add_select = data[31];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Example Excel File(csv):&lt;pre&gt;&lt;br /&gt;  1 1 2 1 1 2 1 2 2 1 2 2 2 2 3 1 1 1 3 1&lt;br /&gt;  pc_en muxI muxJ pc_select reg_write rd_select sign_ext sign_ext_mask alu_rt_select alu_rs_select alu_op alu_cin_sign alu_anot_bnot shifter_op logic_op exe_select save_select mem_write write_select pc_add_select&lt;br /&gt;00000xx HALT 0 x bxx x 0 xx x xx xx x xx xx xx xx xxx x x 0 xxx x&lt;br /&gt;00001xx NOP 1 0 bxx 0 0 bxx x xx b00 0 b00 b01 b00 bxx bxxx 1 x 0 b000 x&lt;br /&gt;01000xx ADDI 1 0 bxx 0 1 b00 1 b10 b10 0 b00 b01 b00 bxx bxxx 1 x 0 b000 x&lt;br /&gt;01001xx SUBI 1 0 bxx 0 1 b00 1 b10 b10 0 b00 b11 b10 bxx bxxx 1 x 0 b000 x&lt;br /&gt;01010xx XORI 1 0 bxx 0 1 b00 0 b10 b10 0 b10 bxx b00 bxx bxxx 1 x 0 b000 x&lt;br /&gt;01011xx ANDNI 1 0 bxx 0 1 b00 0 b10 b10 0 b11 bxx b01 bxx bxxx 1 x 0 b000 x&lt;br /&gt;10100xx ROLI 1 0 bxx 0 1 b00 0 10 b10 x bxx bxx bxx b00 bxxx 0 x 0 b000 x&lt;br /&gt;10101xx SLLI 1 0 bxx 0 1 b00 0 10 b10 x bxx bxx bxx b01 bxxx 0 x 0 b000 x&lt;br /&gt;10110xx SRAI 1 0 bxx 0 1 b00 0 10 b10 x bxx bxx bxx b10 bxxx 0 x 0 b000 x&lt;br /&gt;10111xx SRLI 1 0 bxx 0 1 b00 0 10 b10 x bxx bxx bxx b11 bxxx 0 x 0 b000 x&lt;br /&gt;10000xx ST 1 0 bxx 0 0 bxx 1 b10 b10 0 b00 b01 b00 bxx bxxx 1 1 1 bxxx x&lt;br /&gt;10001xx LD 1 0 bxx 0 1 b00 1 b10 b10 0 b00 b01 b00 bxx bxxx 1 x 0 b010 x&lt;br /&gt;10011xx STU 1 0 bxx 0 1 b01 1 b10 b10 0 b00 b01 b00 bxx bxxx 1 1 1 b000 x&lt;br /&gt;11001xx TM 1 0 bxx 0 1 b10 x bxx b01 0 b11 bxx b00 bxx b1xx x x 0 b001 x&lt;br /&gt;1101100 ADD 1 0 bxx 0 1 b10 x bxx b01 0 b00 b01 b00 bxx bxxx 1 x 0 b000 x&lt;br /&gt;1101101 SUB 1 0 bxx 0 1 b10 x bxx b01 0 b00 b11 b10 bxx bxxx 1 x 0 b000 x&lt;br /&gt;1101110 XOR 1 0 bxx 0 1 b10 x bxx b01 0 b10 bxx b00 bxx bxxx 1 x 0 b000 x&lt;br /&gt;1101111 ANDN 1 0 bxx 0 1 b10 x bxx b01 0 b11 bxx b01 bxx bxxx 1 x 0 b000 x&lt;br /&gt;1101000 ROL 1 0 bxx 0 1 b10 x bxx b01 x bxx bxx bxx b00 bxxx 0 x 0 b000 x&lt;br /&gt;1101001 SLL 1 0 bxx 0 1 b10 x bxx b01 x bxx bxx bxx b01 bxxx 0 x 0 b000 x&lt;br /&gt;1101010 SRA 1 0 bxx 0 1 b10 x bxx b01 x bxx bxx bxx b10 bxxx 0 x 0 b000 x&lt;br /&gt;1101011 SRL 1 0 bxx 0 1 b10 x bxx b01 x bxx bxx bxx b11 bxxx 0 x 0 b000 x&lt;br /&gt;11100xx SEQ 1 0 bxx 0 1 b10 x bxx b01 0 b00 b10 b10 bxx b000 x x 0 b001 x&lt;br /&gt;11101xx SLT 1 0 bxx 0 1 b10 x bxx b01 0 b00 b10 b10 bxx b001 x x 0 b001 x&lt;br /&gt;11110xx SLE 1 0 bxx 0 1 b10 x bxx b01 0 b00 b10 b10 bxx b010 x x 0 b001 x&lt;br /&gt;11111xx SCO 1 0 bxx 0 1 b10 x bxx b01 0 b00 b00 b00 bxx b011 x x 0 b001 x&lt;br /&gt;01100xx BEQZ 1 1 b01 x 0 bxx 1 b01 b00 0 b01 bxx b00 bxx bxxx x x 0 bxxx 0&lt;br /&gt;01101xx BNEZ 1 1 b00 x 0 bxx 1 b01 b00 0 b01 bxx b00 bxx bxxx x x 0 bxxx 0&lt;br /&gt;01110xx BLTZ 1 1 b11 x 0 bxx 1 b01 bxx x bxx bxx bxx bxx bxxx x x 0 bxxx 0&lt;br /&gt;01111xx BGEZ 1 1 b10 x 0 bxx 1 b01 bxx x bxx bxx bxx bxx bxxx x x 0 bxxx 0&lt;br /&gt;11000xx LBI 1 0 bxx 0 1 b01 1 b01 b10 x bxx bxx bxx bxx bxxx x x 0 b011 x&lt;br /&gt;10010xx SLBI 1 0 bxx 0 1 b01 0 b01 b10 1 b01 bxx b00 bxx bxxx 1 x 0 b000 x&lt;br /&gt;00100xx J 1 0 bxx 1 0 bxx 1 b00 bxx x bxx bxx bxx bxx bxxx x x 0 bxxx 0&lt;br /&gt;00101xx JR 1 0 bxx 1 0 bxx 1 b01 bxx x bxx bxx bxx bxx bxxx x x 0 bxxx 1&lt;br /&gt;00110xx JAL 1 0 bxx 1 1 b11 1 b00 bxx x bxx bxx bxx bxx bxxx x x 0 b100 0&lt;br /&gt;00111xx JALR 1 0 bxx 1 1 b11 1 b01 bxx x bxx bxx bxx bxx bxxx x x 0 b100 1&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-1879062892006221093?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2008/12/generating-control-logic-for-5-stage.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-1786541521481553881</guid><pubDate>Mon, 22 Dec 2008 06:39:00 +0000</pubDate><atom:updated>2008-12-21T22:41:58.829-08:00</atom:updated><title>Lazy List in Ruby</title><description>A Lazy List is a list that evaluates and constructs it self as it is used.  Very much a functional language concept.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class LazyList&lt;br /&gt;  attr_accessor :head, :tail&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  def initialize(h, t)  &lt;br /&gt;    @head = h&lt;br /&gt;    @tail = t&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def nil?&lt;br /&gt;    return head.nil?&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def self.null&lt;br /&gt;    return LazyList.new(nil, nil)&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def self.seq(start, finish)&lt;br /&gt;    if start &gt; finish&lt;br /&gt;      return LazyList.null&lt;br /&gt;    else&lt;br /&gt;      return LazyList.new(start, proc { seq( start + 1, finish) })&lt;br /&gt;    end  &lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def self.infseq(start)&lt;br /&gt;    return LazyList.new(start, proc { infseq( start + 1 ) })  &lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  def self.constList(val)&lt;br /&gt;    return LazyList.new(val, proc { constList(val) })&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def self.boolseq(start)&lt;br /&gt;    return LazyList.new(start, proc { boolseq(!start) })&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  def self.filter(listcontrol, listdata)&lt;br /&gt;    if listcontrol.nil? || listdata.nil?&lt;br /&gt;      return LazyList.new&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;    if listcontrol.head&lt;br /&gt;      LazyList.new(listdata.head, proc { filter(listcontrol.tail.call, listdata.tail.call)})&lt;br /&gt;    else&lt;br /&gt;      filter(listcontrol.tail.call, listdata.tail.call)&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def Nth(n)&lt;br /&gt;    return if nil?&lt;br /&gt;    &lt;br /&gt;    if n == 0&lt;br /&gt;      return head&lt;br /&gt;    else&lt;br /&gt;      tail.call.Nth(n-1)&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def self.filter_check(data, check)&lt;br /&gt;    if nil?&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;    if data.head % check != 0&lt;br /&gt;      LazyList.new(data.head, proc { filter_check(data.tail.call, check)})&lt;br /&gt;    else&lt;br /&gt;      filter_check(data.tail.call, check)&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def self.prime_help(list)&lt;br /&gt;    return LazyList.new(list.head, proc { prime_help(filter_check(list.tail.call, list.head))})&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def self.primes&lt;br /&gt;    return prime_help(infseq(2))&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def printN(n)&lt;br /&gt;    if nil?&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;    puts head&lt;br /&gt;    if n &gt;= 0 &amp;&amp; !tail.nil?&lt;br /&gt;      tail.call.printN(n-1)&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;l = LazyList.seq(2, 8)&lt;br /&gt;l.printN(34)&lt;br /&gt;l = LazyList.infseq(3)&lt;br /&gt;l.printN(34)&lt;br /&gt;b = LazyList.boolseq(false)&lt;br /&gt;b.printN(6)&lt;br /&gt;f = LazyList.filter(b,l)&lt;br /&gt;f.printN(6)&lt;br /&gt;&lt;br /&gt;a = LazyList.primes()&lt;br /&gt;a.printN(8)&lt;br /&gt;puts "nth #{f.Nth(2)}"&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-1786541521481553881?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2008/12/lazy-list-in-ruby.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-4519013798536570875</guid><pubDate>Mon, 22 Dec 2008 06:37:00 +0000</pubDate><atom:updated>2008-12-21T22:42:46.479-08:00</atom:updated><title>Make Sublists in Scheme</title><description>A fairly useful function in scheme is to turn a list of elements into a list of list of elements&lt;br /&gt;&lt;br /&gt;example: [1,2,3] =&gt; [[1], [2], [3]]&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(define (make-sublists l)&lt;br /&gt;  (map (lambda (x) (list x )) l))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-4519013798536570875?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2008/12/make-sublists-in-scheme.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-148446570272844988</guid><pubDate>Mon, 22 Dec 2008 06:33:00 +0000</pubDate><atom:updated>2008-12-21T22:43:34.832-08:00</atom:updated><title>Tree Map Scheme</title><description>Very similar to the Map function for a list in scheme, you can apply a map to a tree.&lt;br /&gt;This traverses the entire tree applying a map function to the value and stuffing back into a tree.&lt;br /&gt;&lt;pre&gt;(define (tree-map f t)&lt;br /&gt;  (if (null? t)&lt;br /&gt;      ()&lt;br /&gt;      (if (null? (cdr t))&lt;br /&gt;          ()&lt;br /&gt;          (append (append (tree-map f (car t)) &lt;br /&gt;                  (list (f (cadr t)))) &lt;br /&gt;                  (tree-map f (caddr t))))&lt;br /&gt;      ))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-148446570272844988?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2008/12/tree-map-scheme.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-6716970983912733882</guid><pubDate>Mon, 22 Dec 2008 06:33:00 +0000</pubDate><atom:updated>2008-12-21T22:45:01.371-08:00</atom:updated><title>Valid and Equal Binary Tree Scheme</title><description>This is one possible way of determining whether two binary trees are equal.  Granted this implementation is dependent on them being valid.  Which is that they are both symmetric around the top head node. &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(define (valid-bintree? t)&lt;br /&gt;  (if (null? t)&lt;br /&gt;      #t&lt;br /&gt;      (if (list? t)&lt;br /&gt;          (if (valid-bintree? (car t))&lt;br /&gt;              (if (valid-bintree? (caddr t))&lt;br /&gt;                  #t&lt;br /&gt;                  #f)&lt;br /&gt;              #f)&lt;br /&gt;          #f)&lt;br /&gt;      ))&lt;br /&gt;&lt;br /&gt;(define (equal-bintrees? a b)&lt;br /&gt;  (if (null? a) &lt;br /&gt;      (if (null? b)&lt;br /&gt;          #t&lt;br /&gt;          #f)&lt;br /&gt;      (if (null? b)&lt;br /&gt;          #f&lt;br /&gt;          (if (and (valid-bintree? a) (valid-bintree? b))&lt;br /&gt;              (and (= (cadr a) (cadr b)) (equal-bintrees?(car a) (car b)) (equal-bintrees?(caddr a) (caddr b)))&lt;br /&gt;              #f)&lt;br /&gt;          )&lt;br /&gt;      ))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-6716970983912733882?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2008/12/valid-and-equal-binary-tree-scheme.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-5879663037042061455</guid><pubDate>Mon, 22 Dec 2008 06:23:00 +0000</pubDate><atom:updated>2008-12-21T22:49:39.200-08:00</atom:updated><title>Extend Function Scheme</title><description>See merge and distrib for reference.&lt;br /&gt;An extend function is a pretty handy function for doing some advance list procedures.  &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define (extend L E)&lt;br /&gt;  (merge L (distrib L E))&lt;br /&gt;  )&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-5879663037042061455?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2008/12/extend-function-scheme.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-3265557497550909439</guid><pubDate>Mon, 22 Dec 2008 06:23:00 +0000</pubDate><atom:updated>2008-12-21T22:50:09.670-08:00</atom:updated><title>Subsets function in Scheme</title><description>Subsets computes all the possible subsets possible for a list of unique values.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define (subsets L)&lt;br /&gt;  (if (null? L)&lt;br /&gt;      (list ())&lt;br /&gt;      (extend (subsets (cdr L)) (car L))&lt;br /&gt;      ))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-3265557497550909439?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2008/12/subsets-function-in-scheme.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-3955502616736011298</guid><pubDate>Mon, 22 Dec 2008 06:22:00 +0000</pubDate><atom:updated>2008-12-21T22:23:03.603-08:00</atom:updated><title>Distrib function Scheme</title><description>&lt;pre&gt;&lt;br /&gt;(define (distrib L E)&lt;br /&gt;  (if (null? L)&lt;br /&gt;      ()&lt;br /&gt;      (cons (cons E (car L))&lt;br /&gt;    (distrib (cdr L) E))&lt;br /&gt;      ))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-3955502616736011298?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2008/12/distrib-function-scheme.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-5324928667080008691</guid><pubDate>Mon, 22 Dec 2008 06:21:00 +0000</pubDate><atom:updated>2008-12-21T22:21:56.811-08:00</atom:updated><title>Merge List in Scheme</title><description>&lt;pre&gt;&lt;br /&gt;(define (merge a b)&lt;br /&gt;  (if (null? a)&lt;br /&gt;      b&lt;br /&gt;      (if (null? b)&lt;br /&gt;          a&lt;br /&gt;          (if (&lt; (length (car a)) (length (car b)))&lt;br /&gt;              (append (list (car a)) (merge (cdr a) b))&lt;br /&gt;              (append (list (car b)) (merge (cdr b) a))&lt;br /&gt;              ))))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-5324928667080008691?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2008/12/merge-list-in-scheme.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-4755933802741000043</guid><pubDate>Sun, 21 Dec 2008 23:01:00 +0000</pubDate><atom:updated>2008-12-21T15:04:07.867-08:00</atom:updated><title>Binary Search Tree in Java</title><description>&lt;pre&gt;&lt;br /&gt;import java.io.PrintWriter;&lt;br /&gt;&lt;br /&gt;public class BinaryTreeNode {&lt;br /&gt; &lt;br /&gt; private Comparable key;&lt;br /&gt; private Object data;&lt;br /&gt; private BinaryTreeNode left;&lt;br /&gt; private BinaryTreeNode right;&lt;br /&gt; &lt;br /&gt; public BinaryTreeNode(Comparable pKey, Object pData)&lt;br /&gt; {&lt;br /&gt;  key = pKey;&lt;br /&gt;  data = pData;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @return Returns the data.&lt;br /&gt;  */&lt;br /&gt; public Object getData() {&lt;br /&gt;  return data;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @param data The data to set.&lt;br /&gt;  */&lt;br /&gt; public void setData(Object data) {&lt;br /&gt;  this.data = data;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @return Returns the key.&lt;br /&gt;  */&lt;br /&gt; public Comparable getKey() {&lt;br /&gt;  return key;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @param key The key to set.&lt;br /&gt;  */&lt;br /&gt; public void setKey(Comparable key) {&lt;br /&gt;  this.key = key;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @return Returns the left.&lt;br /&gt;  */&lt;br /&gt; public BinaryTreeNode getLeft() {&lt;br /&gt;  return left;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @param left The left to set.&lt;br /&gt;  */&lt;br /&gt; public void setLeft(BinaryTreeNode left) {&lt;br /&gt;  this.left = left;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @return Returns the right.&lt;br /&gt;  */&lt;br /&gt; public BinaryTreeNode getRight() {&lt;br /&gt;  return right;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @param right The right to set.&lt;br /&gt;  */&lt;br /&gt; public void setRight(BinaryTreeNode right) {&lt;br /&gt;  this.right = right;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class BinarySearchTree implements Dictionary {&lt;br /&gt;&lt;br /&gt; private BinaryTreeNode mRoot;&lt;br /&gt; private int mNumberItems=0;&lt;br /&gt; &lt;br /&gt; /* insert&lt;br /&gt;  * -exact same functionality as update, see update (drops the return value though)&lt;br /&gt;  */&lt;br /&gt; public void insert(Comparable key, Object data) {&lt;br /&gt;  update(key,data);&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; /*recrusiveUpdateChild&lt;br /&gt;  * -runs through the entire tree, and updates a child with new data,&lt;br /&gt;  * -if the child doesn't exist, it is add at the appropriate branch ending&lt;br /&gt;  * &lt;br /&gt;  * returns true if update a node&lt;br /&gt;  * returns false if added a child at the end of the branch&lt;br /&gt;  * &lt;br /&gt;  */&lt;br /&gt; private boolean recurisiveUpdateChild(BinaryTreeNode parent, Comparable key, Object data)&lt;br /&gt; {&lt;br /&gt;  if (key.compareTo(parent.getKey())==0)&lt;br /&gt;  {   &lt;br /&gt;   parent.setData(data);&lt;br /&gt;   return true; //replaced an associated data node&lt;br /&gt;  }&lt;br /&gt;  if (key.compareTo(parent.getKey())&lt;0)&lt;br /&gt;  {&lt;br /&gt;   if (parent.getLeft()==null)&lt;br /&gt;   {&lt;br /&gt;    &lt;br /&gt;    parent.setLeft(new BinaryTreeNode(key,data));&lt;br /&gt;    mNumberItems++;&lt;br /&gt;    return false; //no replacement, addition to the tree&lt;br /&gt;   }&lt;br /&gt;   return recurisiveUpdateChild(parent.getLeft(),key,data);   &lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;   if (parent.getRight()==null)&lt;br /&gt;   {&lt;br /&gt;    parent.setRight(new BinaryTreeNode(key,data));&lt;br /&gt;    mNumberItems++;&lt;br /&gt;    return false; // no replacement&lt;br /&gt;   }&lt;br /&gt;   return recurisiveUpdateChild(parent.getRight(),key,data);&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;/*Update&lt;br /&gt; *  -Provides add, and modify functionality&lt;br /&gt; *  &lt;br /&gt; *  -returns true if it did a modify&lt;br /&gt; *  -returns false if it did an add&lt;br /&gt; */&lt;br /&gt; public boolean update(Comparable key, Object data) {&lt;br /&gt;  if (mRoot==null)&lt;br /&gt;  {&lt;br /&gt;   mRoot = new BinaryTreeNode(key,data);&lt;br /&gt;   mNumberItems++;&lt;br /&gt;   return false;&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;   return recurisiveUpdateChild(mRoot,key,data);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;/*recursiveLookupChild&lt;br /&gt; * -simple lookup, traverses through the tree&lt;br /&gt; * &lt;br /&gt; * returns the associated data of the found node, if it found one&lt;br /&gt; * &lt;br /&gt; * returns null - if no node was found (fell off the tree) &lt;br /&gt; * &lt;br /&gt; */&lt;br /&gt; private Object recurisiveLookupChild(BinaryTreeNode parent, Comparable key)&lt;br /&gt; {&lt;br /&gt;  if (key.compareTo(parent.getKey())==0)&lt;br /&gt;  {      &lt;br /&gt;   return parent.getData();&lt;br /&gt;  }&lt;br /&gt;  if (key.compareTo(parent.getKey())&lt;0)&lt;br /&gt;  {&lt;br /&gt;   if (parent.getLeft()==null) //fell off the tree&lt;br /&gt;   {&lt;br /&gt;    return null;    &lt;br /&gt;   }&lt;br /&gt;   else&lt;br /&gt;   {&lt;br /&gt;   return recurisiveLookupChild(parent.getLeft(),key);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;   if (parent.getRight()==null) //fell off the tree&lt;br /&gt;   {&lt;br /&gt;    return null;    &lt;br /&gt;   }&lt;br /&gt;   else&lt;br /&gt;   {&lt;br /&gt;    return recurisiveLookupChild(parent.getRight(),key);&lt;br /&gt;   }   &lt;br /&gt;  }  &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; /*lookup&lt;br /&gt;  * -looksup the data from the tree&lt;br /&gt;  * returns Data or null if not found&lt;br /&gt;  */&lt;br /&gt; public Object lookup(Comparable key) {&lt;br /&gt;  if (mRoot==null) return null;&lt;br /&gt;  &lt;br /&gt;  return recurisiveLookupChild(mRoot,key);&lt;br /&gt; }&lt;br /&gt;/*size&lt;br /&gt; *  returns number of items in tree&lt;br /&gt; */&lt;br /&gt; public int size() {&lt;br /&gt;  return mNumberItems;&lt;br /&gt; }&lt;br /&gt;/*print&lt;br /&gt; *  does an inorder traversal, printing out a sorted list of items&lt;br /&gt; */&lt;br /&gt; public void print(PrintWriter p) {&lt;br /&gt;  //p.println("Printing Binary Search Tree");&lt;br /&gt;  printNode(mRoot,p);&lt;br /&gt; }&lt;br /&gt; /*printnode&lt;br /&gt;  * -recursive aux method for the print funcationality&lt;br /&gt;  */&lt;br /&gt; private void printNode(BinaryTreeNode node,PrintWriter p)&lt;br /&gt; {&lt;br /&gt;  if (node==null) return;&lt;br /&gt;  //simple inorder traversal&lt;br /&gt;  printNode(node.getLeft(),p);&lt;br /&gt;  &lt;br /&gt;  p.print(node.getKey());&lt;br /&gt;  p.print(" ");&lt;br /&gt;  p.println(node.getData());&lt;br /&gt;  &lt;br /&gt;  printNode(node.getRight(),p);  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-4755933802741000043?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2008/12/binary-search-tree-in-java.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-8739325673191568941</guid><pubDate>Sun, 21 Dec 2008 23:00:00 +0000</pubDate><atom:updated>2008-12-21T15:01:19.805-08:00</atom:updated><title>Sorted Arraylist in Java</title><description>&lt;pre&gt;&lt;br /&gt;public class SortedArrayList implements Dictionary {&lt;br /&gt;&lt;br /&gt; //number of items in the array&lt;br /&gt; private int mNumberItems=0;&lt;br /&gt; &lt;br /&gt; private DictionaryItem mItems[] = new DictionaryItem[10];&lt;br /&gt; /*expand array&lt;br /&gt;  * -checks to see if array needs expansion, if so, it builds a new array&lt;br /&gt;  */&lt;br /&gt; private void expandArray()&lt;br /&gt; {&lt;br /&gt;  if (checkExpandArray())&lt;br /&gt;  {&lt;br /&gt;    DictionaryItem newarray[] = new DictionaryItem[mItems.length*2];&lt;br /&gt;    System.arraycopy(mItems,0,newarray,0,mNumberItems); // copy all items into the new array&lt;br /&gt;    mItems = newarray;&lt;br /&gt;  }  &lt;br /&gt; }&lt;br /&gt; /*checkExpandArray&lt;br /&gt;  *-if the numberofitems in the array is getting large, increase the size of the array to make room for another item &lt;br /&gt;  */&lt;br /&gt; private boolean checkExpandArray()&lt;br /&gt; {&lt;br /&gt;  if (mNumberItems+1&gt;=mItems.length)&lt;br /&gt;  {&lt;br /&gt;   return true;   &lt;br /&gt;  }&lt;br /&gt;  return false;  &lt;br /&gt; }&lt;br /&gt; /*insert&lt;br /&gt;  *  -see update, same functionality, just drops the return value&lt;br /&gt;  */&lt;br /&gt; public void insert(Comparable key, Object data) {&lt;br /&gt;  update(key,data);&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; /*InsertIntoArray&lt;br /&gt;  * -Copies the data over in the array to make room&lt;br /&gt;  * -then slips the new value into that index&lt;br /&gt;  */&lt;br /&gt; private void insertIntoArray(int index, DictionaryItem item)&lt;br /&gt; {&lt;br /&gt;   System.arraycopy(mItems,index,mItems,index+1,mNumberItems-index); // copy all items infront of the index&lt;br /&gt;   mItems[index] = item;&lt;br /&gt; }&lt;br /&gt; /*getIndexForKey&lt;br /&gt;  * does a linear search to find out where a certain key should be inserted&lt;br /&gt;  */&lt;br /&gt; private int getIndexForKey(Comparable key)&lt;br /&gt; {&lt;br /&gt;  int i;&lt;br /&gt;  for(i=0;i&lt;= mNumberItems-1;i++)&lt;br /&gt;  {&lt;br /&gt;   DictionaryItem curr = mItems[i];&lt;br /&gt;   &lt;br /&gt;   if(curr.getKey().compareTo(key) &gt;=0)&lt;br /&gt;   {&lt;br /&gt;    return i;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return mNumberItems;&lt;br /&gt; }&lt;br /&gt; /*getKeyAt&lt;br /&gt;  * -returns the key at a certain index&lt;br /&gt;  */&lt;br /&gt; private Object getKeyAt(int index)&lt;br /&gt; {  &lt;br /&gt;  return mItems[index].getKey();&lt;br /&gt; }&lt;br /&gt; /*lookupIndexForKey&lt;br /&gt;  * -does a binary search for a certain index location&lt;br /&gt;  * -returns -1 if value not found&lt;br /&gt;  */&lt;br /&gt; private int lookupIndexForKey(Comparable key)&lt;br /&gt; {&lt;br /&gt;  return auxBinSearch(key,0,mNumberItems-1);&lt;br /&gt; }&lt;br /&gt; /*auxBinSearch&lt;br /&gt;  * -is the aux recursive method to implement the binary search&lt;br /&gt;  */&lt;br /&gt; private int auxBinSearch(Comparable key, int startindex,int endindex)&lt;br /&gt; {&lt;br /&gt;  if (startindex &gt; endindex) return -1;&lt;br /&gt;  int mid = (startindex + endindex)/2;&lt;br /&gt;  &lt;br /&gt;  if (key.compareTo(getKeyAt(mid))==0) return mid;&lt;br /&gt;  if (key.compareTo(getKeyAt(mid))&lt;0)&lt;br /&gt;   return auxBinSearch(key,startindex,mid-1); //go left&lt;br /&gt;  else&lt;br /&gt;   return auxBinSearch(key,mid+1,endindex);//go right&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;/*update&lt;br /&gt; * -provides update functionality (insert, and replace&lt;br /&gt; * returns true if it replaced&lt;br /&gt; * returns false if inserted new record&lt;br /&gt; */&lt;br /&gt; public boolean update(Comparable key, Object data) {&lt;br /&gt;  &lt;br /&gt;  int insertindex=lookupIndexForKey(key);&lt;br /&gt;  &lt;br /&gt;  if (insertindex!=-1)&lt;br /&gt;  {   &lt;br /&gt;   mItems[insertindex] = new DictionaryItem(key,data);&lt;br /&gt;   return true;&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;   //now we have to insert  &lt;br /&gt;   //perform linear search and get insert location&lt;br /&gt;   insertindex= getIndexForKey(key);&lt;br /&gt;   &lt;br /&gt;   expandArray();&lt;br /&gt;    &lt;br /&gt;   insertIntoArray(insertindex,new DictionaryItem(key,data));&lt;br /&gt;   mNumberItems++;  &lt;br /&gt;   return false;&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;/*lookup&lt;br /&gt; * -uses a binary search to retrieve an object&lt;br /&gt; *  returns the Object if found&lt;br /&gt; *  return null if not found&lt;br /&gt; */&lt;br /&gt; public Object lookup(Comparable key) {&lt;br /&gt;  int index = lookupIndexForKey(key);&lt;br /&gt;  &lt;br /&gt;  if (index &lt;0 || index &gt; mNumberItems-1) return null;&lt;br /&gt;  return mItems[index].getData();  &lt;br /&gt; }&lt;br /&gt;/*size&lt;br /&gt; *-returns number of items in the array&lt;br /&gt; */&lt;br /&gt; public int size() {&lt;br /&gt;  return mNumberItems;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;/*print&lt;br /&gt; *  spits out the sorted arraylist contents&lt;br /&gt; */&lt;br /&gt; public void print(PrintWriter p) {&lt;br /&gt;  //p.println("Printing Sorted ArrayList");&lt;br /&gt;  for(DictionaryItem curr: mItems )&lt;br /&gt;  {&lt;br /&gt;   if(curr!=null)&lt;br /&gt;   {&lt;br /&gt;    p.print(curr.getKey());&lt;br /&gt;    p.print(" ");&lt;br /&gt;    p.println(curr.getData());&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-8739325673191568941?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2008/12/sorted-arraylist-in-java.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-8700600298036302949</guid><pubDate>Sun, 21 Dec 2008 22:58:00 +0000</pubDate><atom:updated>2008-12-21T15:00:13.483-08:00</atom:updated><title>Queue in Java</title><description>&lt;pre&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;&lt;br /&gt;/*Queue&lt;br /&gt; * implements a simple queue first in, first out&lt;br /&gt; */&lt;br /&gt;public class Queue {&lt;br /&gt;&lt;br /&gt; public Queue()&lt;br /&gt; {&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private ArrayList mItems = new ArrayList();&lt;br /&gt; &lt;br /&gt; /* empty&lt;br /&gt;  * -returns true if there are 0 items in the queue&lt;br /&gt;  * other wise false&lt;br /&gt;  */&lt;br /&gt;  public boolean empty()&lt;br /&gt;  {&lt;br /&gt;   return mItems.isEmpty();  &lt;br /&gt;  }&lt;br /&gt;  /* size&lt;br /&gt;   * -returns the number of items in the queue&lt;br /&gt;   */&lt;br /&gt;  public int size()&lt;br /&gt;  {&lt;br /&gt;   return mItems.size();  &lt;br /&gt;  }&lt;br /&gt;  /*enqueue&lt;br /&gt;   * -adds a node to the back end of the queue&lt;br /&gt;   * &lt;br /&gt;   */&lt;br /&gt;  public void enqueue(Object obj)&lt;br /&gt;  {&lt;br /&gt;   mItems.add(0,obj);&lt;br /&gt;  }&lt;br /&gt;  /*dequeue&lt;br /&gt;   * -removes the last Object from the inner list&lt;br /&gt;   * other words, pulls the first Object off the front of the queue&lt;br /&gt;   */&lt;br /&gt;  public Object dequeue()&lt;br /&gt;  {&lt;br /&gt;   if (this.empty()) throw new EmptyQueueException();&lt;br /&gt;   &lt;br /&gt;   return mItems.remove(mItems.size()-1);  &lt;br /&gt;  }&lt;br /&gt;  /*peek&lt;br /&gt;   * -returns the front Object of the que&lt;br /&gt;   */&lt;br /&gt;  public Object peek()&lt;br /&gt;  {&lt;br /&gt;   if (this.empty()) throw new EmptyQueueException();&lt;br /&gt;   &lt;br /&gt;   return mItems.get(mItems.size()-1);  &lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-8700600298036302949?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2008/12/queue-in-java.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-3622392726404123184</guid><pubDate>Sun, 21 Dec 2008 22:57:00 +0000</pubDate><atom:updated>2008-12-21T14:57:49.029-08:00</atom:updated><title>Stack in Java</title><description>&lt;pre&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.EmptyStackException;&lt;br /&gt;&lt;br /&gt;/* Stack class&lt;br /&gt; * A basic stack, you can push items in, last in, is first out.&lt;br /&gt; * &lt;br /&gt; */&lt;br /&gt;public class Stack {&lt;br /&gt; /// stores my data member in the stack&lt;br /&gt; private ArrayList mItems = new ArrayList();&lt;br /&gt; &lt;br /&gt; public Stack()&lt;br /&gt; {&lt;br /&gt; }&lt;br /&gt;/* empty&lt;br /&gt; * -returns true if there are 0 items in the stack&lt;br /&gt; * other wise false&lt;br /&gt; */&lt;br /&gt; public boolean empty()&lt;br /&gt; {&lt;br /&gt;  return mItems.isEmpty();  &lt;br /&gt; }&lt;br /&gt; /* size&lt;br /&gt;  * -returns the number of items in the stack&lt;br /&gt;  */&lt;br /&gt; public int size()&lt;br /&gt; {&lt;br /&gt;  return mItems.size();  &lt;br /&gt; }&lt;br /&gt; /*push&lt;br /&gt;  * -adds an object to the Top of the stack&lt;br /&gt;  */&lt;br /&gt; public void push(Object obj)&lt;br /&gt; {&lt;br /&gt;  mItems.add(obj);&lt;br /&gt; }&lt;br /&gt; /*pop&lt;br /&gt;  * -removes the top object from the stack and returns it&lt;br /&gt;  * throws EmptyStackException if stack is empty&lt;br /&gt;  */&lt;br /&gt; public Object pop()&lt;br /&gt; {&lt;br /&gt;  if (this.empty()) throw new EmptyStackException();&lt;br /&gt;  &lt;br /&gt;  return mItems.remove(mItems.size()-1);&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt; /*peek&lt;br /&gt;  * -returns the current top object in the stack&lt;br /&gt;  * DOES NOT REMOVE IT&lt;br /&gt;  */&lt;br /&gt; public Object peek()&lt;br /&gt; {&lt;br /&gt;  if (this.empty()) throw new EmptyStackException();&lt;br /&gt;  &lt;br /&gt;  return mItems.get(mItems.size()-1);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-3622392726404123184?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2008/12/stack-in-java.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-3179473194000154289</guid><pubDate>Sun, 21 Dec 2008 22:55:00 +0000</pubDate><atom:updated>2008-12-21T14:57:01.851-08:00</atom:updated><title>Double Linked List in Java</title><description>&lt;pre&gt;&lt;br /&gt;/**&lt;br /&gt; * LinkedList&lt;br /&gt; * &lt;br /&gt; * This is the core List class&lt;br /&gt; * Provides a facility to a doublly linked list.&lt;br /&gt; * &lt;br /&gt; * Has Header Node optimization&lt;br /&gt; * Has LastNode optimization as well&lt;br /&gt; * &lt;br /&gt; * Future Features:&lt;br /&gt; * Optimized iterator support&lt;br /&gt; * actually use some more of the optimization doublly linked lists gives you&lt;br /&gt; * &lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * ListNode&lt;br /&gt; * &lt;br /&gt; * -The workhorse of the LinkedList Class&lt;br /&gt; * &lt;br /&gt; * Provides a doublely linked potencial to other list nodes&lt;br /&gt; * Provides recursion for relative position Node lookups&lt;br /&gt; * Provides automatic linking of next and previous nodes&lt;br /&gt; * &lt;br /&gt; */&lt;br /&gt;public class ListNode&lt;br /&gt;{&lt;br /&gt; /**&lt;br /&gt;  * Blank constructor&lt;br /&gt;  */&lt;br /&gt; public ListNode()&lt;br /&gt; {&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * Purposeful constructor:&lt;br /&gt;  * passes data, and previous node, allows you to build node lists, easily by chaining&lt;br /&gt;  */&lt;br /&gt; public ListNode(Object pData,ListNode pPrevious)&lt;br /&gt; {&lt;br /&gt;  mData = pData;&lt;br /&gt;  if (pPrevious != null) //since you can pass null to it&lt;br /&gt;  {&lt;br /&gt;   pPrevious.setNext(this); //automatic hook up&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private Object mData; // stores the Object of value here&lt;br /&gt;&lt;br /&gt; //Accessors to the Data Object&lt;br /&gt; public Object getData()&lt;br /&gt; {&lt;br /&gt;  return mData;&lt;br /&gt; }&lt;br /&gt; public void setData(Object obj)&lt;br /&gt; {&lt;br /&gt;  mData = obj;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;br /&gt; private ListNode mNext; // stores link to the next node in the list&lt;br /&gt; //accessor to the Next reference&lt;br /&gt; public ListNode getNext()&lt;br /&gt; {&lt;br /&gt;  return mNext;&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * Automatic linking on setNext&lt;br /&gt;  * -set the mNext field's data&lt;br /&gt;  * but also will automaticly link the "nextNodes previous link to this Node's&lt;br /&gt;  */&lt;br /&gt; public void setNext(ListNode pNode)&lt;br /&gt; {&lt;br /&gt;  mNext = pNode;&lt;br /&gt;  if (mNext != null)&lt;br /&gt;  {&lt;br /&gt;   mNext.mPrevious = this; //internal auto link MUST USE INTERNAL, If you use mNext.setPrevious infinite loop become evident&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private ListNode mPrevious;&lt;br /&gt; //public accessor to Previous Link&lt;br /&gt; public ListNode getPrevious()&lt;br /&gt; {&lt;br /&gt;  return mPrevious;&lt;br /&gt; }&lt;br /&gt;  /**&lt;br /&gt;   * Automatic linking on setPrevious&lt;br /&gt;   * -set the mPrevious field's data&lt;br /&gt;   * but also will automaticly link the "previousNodes next link to this Node's&lt;br /&gt;   */&lt;br /&gt; public void setPrevious(ListNode pNode)&lt;br /&gt; {&lt;br /&gt;  mPrevious = pNode;&lt;br /&gt;  if (mPrevious != null)&lt;br /&gt;  {&lt;br /&gt;   mPrevious.mNext = this; //internal auto link MUST USE INTERNAL, If you use mPrevious.setNext infinite loop become evident&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt; * Recurisve GetNext&lt;br /&gt; * will return the node that is relativePos offset from this node only in the forward direction &lt;br /&gt; */&lt;br /&gt; public ListNode getNextRecurisive(int relaitivePos)&lt;br /&gt; {&lt;br /&gt;  if (relaitivePos &lt;= 0) // if pos =0 return self&lt;br /&gt;  {&lt;br /&gt;   return this;&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;   ListNode next = this.getNext(); //move to the next node&lt;br /&gt;   if (next != null)&lt;br /&gt;   {&lt;br /&gt;    return next.getNextRecurisive(relaitivePos - 1); //Let it count the rest of the way&lt;br /&gt;   }&lt;br /&gt;   else&lt;br /&gt;   {&lt;br /&gt;    throw new IndexOutOfBoundsException("Recursive search for rel pos could not find a node soon enough");    &lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;public class LinkedList&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt; private ListNode mHeaderNode = new ListNode();&lt;br /&gt; private ListNode mLastNode;&lt;br /&gt; private int mNumItems = 0;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Constructor, sets up the default last node&lt;br /&gt;  */&lt;br /&gt; public LinkedList()&lt;br /&gt; {&lt;br /&gt;  mLastNode = mHeaderNode; &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt; * Add is your basic add operation&lt;br /&gt; *   Adds to the end of the list, using the last node optimization&lt;br /&gt;*    the setNext function automaticly links in the previous links. &lt;br /&gt;*  &lt;br /&gt; */&lt;br /&gt; public void add(Object obj)&lt;br /&gt; {&lt;br /&gt;  ListNode node = new ListNode(obj,null);&lt;br /&gt;  mLastNode.setNext(node);&lt;br /&gt;  mLastNode = node; //update the last node optimization&lt;br /&gt;  mNumItems++;&lt;br /&gt; }&lt;br /&gt; /** add overload -&gt; Insert&lt;br /&gt;  *   Inserts a Object in the list node at any position&lt;br /&gt;  * &lt;br /&gt;  */&lt;br /&gt; public void add(int pos, Object obj)&lt;br /&gt; {&lt;br /&gt;  if (pos == mNumItems)&lt;br /&gt;  {&lt;br /&gt;   //special case adding at the end of the list&lt;br /&gt;   add(obj); // use the regular add&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  IsPositionInBoundsOf(pos); //Insure the pos is a vaild pos&lt;br /&gt;  ListNode node = getNode(pos);//node I am inserting at&lt;br /&gt;  ListNode newNode = new ListNode(obj, node.getPrevious());&lt;br /&gt;  // hook up new node to node that was behind current node&lt;br /&gt;  newNode.setNext(node);  &lt;br /&gt;  // hook up old node, to the new position&lt;br /&gt;  mNumItems++;&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * Contains&lt;br /&gt;  * Returns true if LinkedList Contains a certain object&lt;br /&gt;  * Object.equals is our comparer method of choice&lt;br /&gt;  * &lt;br /&gt;  * other wise false&lt;br /&gt;  * &lt;br /&gt;  */&lt;br /&gt; public boolean contains(Object obj)&lt;br /&gt; {&lt;br /&gt;  ListNode node = mHeaderNode.getNext(); //get the first node in the list&lt;br /&gt;  &lt;br /&gt;  while (node != null) // go through till the end of the list&lt;br /&gt;  {&lt;br /&gt;   if (node.getData() != null) // check so you don't get a null ref exception&lt;br /&gt;   {&lt;br /&gt;    if (node.getData().equals(obj)) // use equals so.. ref type weird data types.. cough STRINGS don't hang us up&lt;br /&gt;    {&lt;br /&gt;     return true;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   else&lt;br /&gt;   {&lt;br /&gt;    // if null was passed we want to return true if the obj is null&lt;br /&gt;    if (obj == null) return true; &lt;br /&gt;   }&lt;br /&gt;   node = node.getNext(); // increment up to the next node&lt;br /&gt;  }&lt;br /&gt;  return false;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * IsPositionInBoundsOf&lt;br /&gt;  * Returns true if pos would return a valid node in this list, if not, it will throw and indexOutOfBoundsException&lt;br /&gt;  * &lt;br /&gt;  */&lt;br /&gt; protected boolean IsPositionInBoundsOf(int pos)&lt;br /&gt; {&lt;br /&gt;  if (pos &gt; mNumItems - 1)&lt;br /&gt;  {&lt;br /&gt;   throw new IndexOutOfBoundsException(pos + " Is out of the bounds of the List");&lt;br /&gt;  }&lt;br /&gt;  return true;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * get&lt;br /&gt;  * Returns The object of a node at a certain position&lt;br /&gt;  * &lt;br /&gt;  */&lt;br /&gt; public Object get(int pos)&lt;br /&gt; {&lt;br /&gt;  IsPositionInBoundsOf(pos); // insure pos is accurate&lt;br /&gt;&lt;br /&gt;  ListNode node = getNode(pos); //grab the node&lt;br /&gt;   &lt;br /&gt;  return node.getData(); //return the data ; null is ok&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * INTERNAL METHOD&lt;br /&gt;  * getNode(pos)&lt;br /&gt;  * Returns the list node at a certain position&lt;br /&gt;  * &lt;br /&gt;  * does a recursive search for the specified position&lt;br /&gt;  * &lt;br /&gt;  */&lt;br /&gt; protected ListNode getNode(int pos)&lt;br /&gt; {&lt;br /&gt;  IsPositionInBoundsOf(pos);&lt;br /&gt;  return mHeaderNode.getNextRecurisive(pos + 1); // +1 because of header node&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * isEmpty&lt;br /&gt;  * returns true if their are 0 items in this list&lt;br /&gt;  * otherwise false&lt;br /&gt;  */&lt;br /&gt; public boolean isEmpty()&lt;br /&gt; {&lt;br /&gt;  return mHeaderNode.getNext() == null;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * remove(pos)&lt;br /&gt;  * Returns the object at the pos you are removeing from&lt;br /&gt;  * Remove the last node, will re update the lastnode reference&lt;br /&gt;  * &lt;br /&gt;  * deincrements the count in list&lt;br /&gt;  * &lt;br /&gt;  */&lt;br /&gt; public Object remove(int pos)&lt;br /&gt; {&lt;br /&gt;  IsPositionInBoundsOf(pos);&lt;br /&gt;  ListNode deletednode = getNode(pos);&lt;br /&gt;  if (deletednode == this.mLastNode) //last node special case&lt;br /&gt;  {&lt;br /&gt;   this.mLastNode = deletednode.getPrevious(); // just patch up the last node reference&lt;br /&gt;  }&lt;br /&gt;  deletednode.getPrevious().setNext(deletednode.getNext()); //patch the whole you just made&lt;br /&gt;  &lt;br /&gt;  mNumItems--;&lt;br /&gt;  return deletednode.getData(); &lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * size&lt;br /&gt;  * Returns the number of items in this list&lt;br /&gt;  */&lt;br /&gt; public int size()&lt;br /&gt; {&lt;br /&gt;  return mNumItems;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; //DEBUG Methods&lt;br /&gt; //remove these methods&lt;br /&gt; /**&lt;br /&gt;   * Prints out the entire list of objects in list&lt;br /&gt;   */&lt;br /&gt; //public void printList()&lt;br /&gt; //{&lt;br /&gt; //    System.out.println("&lt;LIST PRINT OUT&gt;");&lt;br /&gt; //    for (int i = 0; i &lt; mNumItems; i++)&lt;br /&gt; //    {&lt;br /&gt; //        System.out.println(get(i));&lt;br /&gt; //    }&lt;br /&gt; //    System.out.println("&lt;/LIST PRINT OUT&gt;");&lt;br /&gt; //}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-3179473194000154289?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2008/12/double-linked-list-in-java.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-1819253454486946450</guid><pubDate>Sun, 21 Dec 2008 22:50:00 +0000</pubDate><atom:updated>2008-12-21T14:55:57.261-08:00</atom:updated><title>Priority Queue in Java using ArrayList</title><description>&lt;pre&gt;&lt;br /&gt;class PriorityQueue {&lt;br /&gt;&lt;br /&gt;    private ArrayList maxHeap;&lt;br /&gt;&lt;br /&gt;    public PriorityQueue () {&lt;br /&gt;        maxHeap = new ArrayList();&lt;br /&gt;        maxHeap.add(null);   //to fill element 0&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public boolean empty () {&lt;br /&gt;        return maxHeap.size() == 1;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void insert (Comparable p) {&lt;br /&gt; if (p==null) return;&lt;br /&gt; maxHeap.add(p);&lt;br /&gt; int index = maxHeap.size()-1;&lt;br /&gt; swapWithParent(index);&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt; private void swapWithParent(int index)&lt;br /&gt; {&lt;br /&gt;  int parentindex = index/2;&lt;br /&gt;  if (parentindex==0) return;&lt;br /&gt;  if (p.compareTo(maxHeap.get(parentindex)) &gt; 0)&lt;br /&gt;  {&lt;br /&gt;   //swap them&lt;br /&gt;   Comparable p = maxHeap.get(index);&lt;br /&gt;   maxHeap.set(index,maxHeap.get(parentindex));&lt;br /&gt;   maxHeap.set(parentindex,p);&lt;br /&gt;   swapWithParent(parentindex);&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-1819253454486946450?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2008/12/priority-queue-in-java-using-arraylist.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-6680256743806029834</guid><pubDate>Wed, 24 Oct 2007 21:22:00 +0000</pubDate><atom:updated>2007-10-24T14:22:53.422-07:00</atom:updated><title>7bit UART TX Transmitter</title><description>&lt;pre&gt;module uart_tx (output sd, output busy, input [6:0] data, input wr, rst, clk);&lt;br /&gt;  reg [3:0] state, next_state;&lt;br /&gt;  reg [9:0] shifter;&lt;br /&gt;&lt;br /&gt;  parameter S_IDLE = 4'd0, S_BIT_START = 4'd1, S_BIT_P = 4'd9, S_BIT_STOP = 4'd10;&lt;br /&gt;&lt;br /&gt;// continuous assignments&lt;br /&gt;  assign busy = (state != S_IDLE);&lt;br /&gt;  assign sd = shifter[0];&lt;br /&gt;&lt;br /&gt;// synchronous behavior(s)&lt;br /&gt;always @ (posedge clk) begin   &lt;br /&gt; if(rst) begin&lt;br /&gt;  state &lt;= S_IDLE;&lt;br /&gt;  shifter &lt;= 10'b11_1111_1111;&lt;br /&gt; end&lt;br /&gt; else begin&lt;br /&gt;  state &lt;= next_state;   // update state&lt;br /&gt;  if(wr)     // load new frame&lt;br /&gt;   shifter &lt;= {1'b1, ~(^(data)), data, 1'b0}; // could leave stop bit off!&lt;br /&gt;  else     // shift current frame&lt;br /&gt;   shifter &lt;= {1'b1, shifter[9:1]}; // shift in idle channel&lt;br /&gt; end&lt;br /&gt;end&lt;br /&gt;// next state logic&lt;br /&gt;always @ (state, wr) begin&lt;br /&gt; case (state)&lt;br /&gt; S_IDLE:&lt;br /&gt;  if(wr) next_state = S_BIT_START;&lt;br /&gt;  else next_state = S_IDLE;&lt;br /&gt; S_BIT_STOP:&lt;br /&gt;  next_state = S_IDLE;&lt;br /&gt; default:&lt;br /&gt;  next_state = state + 4'd1;&lt;br /&gt; endcase&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;endmodule&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-6680256743806029834?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2007/10/7bit-uart-tx-transmitter.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-2652330474565099021</guid><pubDate>Wed, 24 Oct 2007 21:20:00 +0000</pubDate><atom:updated>2007-10-24T14:21:35.594-07:00</atom:updated><title>16bit BCD adder</title><description>sometimes you just want a BCD adder instead of a binary adder.  here is a 16bit one that works.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;//put the cla and #1 adders together to make them easier to merge&lt;br /&gt;module bcdadd4(&lt;br /&gt;   output co,&lt;br /&gt;   output [15:0] s,   &lt;br /&gt;   input [15:0] a,b,&lt;br /&gt;   input cin);&lt;br /&gt;   wire p_up,g_up;&lt;br /&gt;   wire [3:0] p,g;&lt;br /&gt;   wire [3:0] carry;&lt;br /&gt;&lt;br /&gt;   pfa_bcd add[3:0](.p(p),.g(g),.s(s),.a(a),.b(b),.cin({carry[2:0], cin}));&lt;br /&gt;&lt;br /&gt;   cla localcla(.p_up(p_up),.g_up(g_up),.cout(carry),.p(p),.g(g),.cin(cin));&lt;br /&gt;&lt;br /&gt;   assign co = carry[3];&lt;br /&gt;endmodule&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;module pfa_bcd(output reg p, g, output reg[3:0] s, input cin, input[3:0] a, b);&lt;br /&gt;   always @(*) begin&lt;br /&gt;      s &lt;= (a+b+cin) % 10;&lt;br /&gt;      p &lt;= (a+b == 9);&lt;br /&gt;      g &lt;= (a+b &gt; 9);           &lt;br /&gt;   end  &lt;br /&gt;endmodule&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-2652330474565099021?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2007/10/16bit-bcd-adder.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-3048326852902764077</guid><pubDate>Wed, 24 Oct 2007 21:12:00 +0000</pubDate><atom:updated>2007-10-24T14:13:46.621-07:00</atom:updated><title>16bit register file: 2 read &amp; 2 write ports</title><description>This is a beautiful piece of code :-)&lt;br /&gt;&lt;pre&gt;module reg_file(output [15:0] read1data, read2data, input [15:0] write1data, write2data, input [2:0] read1regsel, read2regsel, write1regsel, write2regsel, input clk, rst, write1, write2);&lt;br /&gt;    wire [7:0] reg_final_write, reg1_write, reg2_write;&lt;br /&gt;    wire [127:0] write_final_data;&lt;br /&gt;    wire [127:0] regfileout;&lt;br /&gt;    mux16b_8_1 muxAB [1:0] ({read1data, read2data}, {read1regsel, read2regsel}, {regfileout, regfileout}); //select 2 registers to read&lt;br /&gt;    &lt;br /&gt;    decoder_3_to_8 decoder(reg1_write, write1regsel, write1);   //select which register to write to&lt;br /&gt;    decoder_3_to_8 decoder2(reg2_write, write2regsel, write2);   //select which register to write to&lt;br /&gt;    mux16b_2_1 writeportselector [7:0] (write_final_data, reg2_write, write1data, write2data);&lt;br /&gt;    &lt;br /&gt;    assign reg_final_write = reg1_write | reg2_write;&lt;br /&gt;    &lt;br /&gt;    reg16bit reg_16wide [7:0] (regfileout, write_final_data, clk, rst, reg_final_write);   //registers    &lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;//sel = 0 out = a&lt;br /&gt;module mux16b_2_1(output [15:0] out, input sel, input [15:0] a, b);&lt;br /&gt;  assign out = (sel) ? b : a;&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module mux16b_8_1(output [15:0] out, input [2:0] sel, input [127:0] in);&lt;br /&gt;  assign out = &lt;br /&gt;  (sel == 3'b000) ? in[15:0]:&lt;br /&gt;  (sel == 3'b001) ? in[31:16]:&lt;br /&gt;  (sel == 3'b010) ? in[47:32]:&lt;br /&gt;  (sel == 3'b011) ? in[63:48]:&lt;br /&gt;  (sel == 3'b100) ? in[79:64]:&lt;br /&gt;  (sel == 3'b101) ? in[95:80]:&lt;br /&gt;  (sel == 3'b110) ? in[111:96]: in[127:112];&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module decoder_3_to_8(output [7:0] out, input [2:0] in, input en);&lt;br /&gt;  assign out =(en == 1'b0) ? 8'd0:&lt;br /&gt;  (in == 3'b000) ? 8'd1:&lt;br /&gt;  (in == 3'b001) ? 8'd2:&lt;br /&gt;  (in == 3'b010) ? 8'd4:&lt;br /&gt;  (in == 3'b011) ? 8'd8:&lt;br /&gt;  (in == 3'b100) ? 8'd16:&lt;br /&gt;  (in == 3'b101) ? 8'd32:&lt;br /&gt;  (in == 3'b110) ? 8'd64: 8'd128;&lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module reg16bit(output [15:0] dataout, input [15:0] datain, input clk, rst, en);&lt;br /&gt;  wire [15:0] regin;&lt;br /&gt;  assign regin = en ? datain: dataout;&lt;br /&gt;  dff dff_array [15:0](dataout, regin, clk, rst);&lt;br /&gt;endmodule&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-3048326852902764077?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2007/10/16bit-register-file-2-read-2-write.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-2330329778924553019</guid><pubDate>Wed, 24 Oct 2007 21:07:00 +0000</pubDate><atom:updated>2007-10-24T14:11:52.745-07:00</atom:updated><title>16bit comparer from 2bit comparer-s</title><description>Here is a cool idea, you can string a 2 bit comparer's together to make a big one... purely academic :-)&lt;br /&gt;&lt;pre&gt;module compare_2bit(output A_eq_B, A_lt_B, A_gt_B, input [1:0] A, B, input A_eq_B_in, A_lt_B_in, A_gt_B_in);&lt;br /&gt;&lt;br /&gt;  assign A_eq_B = (A == B) &amp; A_eq_B_in;&lt;br /&gt;  assign A_gt_B = (A==B) ? A_gt_B_in : A &gt; B; &lt;br /&gt;  assign A_lt_B = (A==B) ? A_lt_B_in : (A &lt; B);  &lt;br /&gt;  &lt;br /&gt;endmodule&lt;br /&gt;&lt;br /&gt;module compare_16bit(output X_eq_Y, X_lt_Y, X_gt_Y, input [15:0] X, Y);&lt;br /&gt;    &lt;br /&gt;    wire[7:0] eq, lt, gt;&lt;br /&gt;    compare_2bit cp [7:0] (eq, lt, gt, X, Y, {eq[6:0],1'b1}, {lt[6:0],1'b0}, {gt[6:0],1'b0});&lt;br /&gt;    &lt;br /&gt;    assign X_eq_Y = eq[7];&lt;br /&gt;    assign X_lt_Y = lt[7];&lt;br /&gt;    assign X_gt_Y = gt[7];&lt;br /&gt;    &lt;br /&gt;endmodule&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-2330329778924553019?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2007/10/16bit-comparer-from-2bit-comparer-s.html</link><author>noreply@blogger.com (Justin Beck)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-495644103355424.post-1404503533415778876</guid><pubDate>Wed, 24 Oct 2007 20:50:00 +0000</pubDate><atom:updated>2008-12-11T03:26:00.809-08:00</atom:updated><title>Webbased Server monitoring Munin</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_w06EQQEN_dI/Rx-0E7uXr4I/AAAAAAAAAt0/KxHW_mqdW6A/s1600-h/loadaverge.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_w06EQQEN_dI/Rx-0E7uXr4I/AAAAAAAAAt0/KxHW_mqdW6A/s320/loadaverge.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5125012897815572354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://munin.projects.linpro.no/"&gt;Munin&lt;/a&gt; An easy way to keep track of how your servers are doing from a web front.  Really clean install, and works on multitudes of servers at once.  &lt;br /&gt;How to set it up: &lt;a href="http://www.howtoforge.com/server_monitoring_monit_munin"&gt;How to set up Munin&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/495644103355424-1404503533415778876?l=trixy.justinkbeck.com' alt='' /&gt;&lt;/div&gt;</description><link>http://trixy.justinkbeck.com/2007/10/webbased-server-monitoring-munin.html</link><author>noreply@blogger.com (Justin Beck)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_w06EQQEN_dI/Rx-0E7uXr4I/AAAAAAAAAt0/KxHW_mqdW6A/s72-c/loadaverge.png' height='72' width='72'/><thr:total>0</thr:total></item></channel></rss>
