<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>Technical Corner</title>
<link rel="alternate" type="text/html" href="http://www.rimblas.com/tech/" />
<modified>2006-10-11T18:09:13Z</modified>
<tagline>Technical notes, ramblings, findings, info...</tagline>
<id>tag:www.rimblas.com,2009:/tech/2</id>
<generator url="http://www.movabletype.org/" version="4.1">Movable Type</generator>
<copyright>Copyright (c) 2006, rimblas</copyright>

<entry>
<title>Z4 M Coupé Strut Brace</title>
<link rel="alternate" type="text/html" href="http://www.rimblas.com/tech/archives/2006/10/z4-m-coupe-stru.html" />
<modified>2006-10-11T18:09:13Z</modified>
<issued>2006-10-11T15:23:31Z</issued>
<id>tag:www.rimblas.com,2006:/tech/2.60</id>
<created>2006-10-11T15:23:31Z</created>
<summary type="text/plain">I installed the Z4 engine strut brace bar on my Z4 M Coupe and it fits perfectly. Thanks to Ron Stygar for trying it out first and confirming fit. BMW OEM Part# 51-71-0-305-114 BeforeAfter Very simple install. With the car...</summary>
<author>
<name>rimblas</name>
<url>http://rimblas.com</url>
<email>jorge@rimblas.com</email>
</author>
<dc:subject>Cars</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.rimblas.com/tech/">
<![CDATA[<p>I installed the Z4 engine strut brace bar on my Z4 M Coupe and it fits perfectly.  Thanks to Ron Stygar for trying it out first and confirming fit.<br />
BMW OEM Part# 51-71-0-305-114</p>

<table border=0><tr><td><center>Before</center></td><td><center>After</center></td></td><tr><td><center><a href="/tech/images/z4_strut_brace_before.html" onclick="window.open('/tech/images/z4_strut_brace_before.html','popup','width=800,height=600,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="/tech/images/z4_strut_brace_before-thumb.jpg" width="251" height="188" /></a></center></td>
<td><center><a href="/tech/images/z4_strut_brace_after.html" onclick="window.open('/tech/images/z4_strut_brace_after.html','popup','width=800,height=600,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="/tech/images/z4_strut_brace_after-thumb.jpg" width="251" height="188" /></a></center></td></tr></table>

<p>Very simple install. With the car on the ground, remove the existing nuts, bolt on the new brace, torque the brackets first then the bar.  Torque to 18lb/ft.<br />
I have not driven the car yet... details to follow.</p>

<p>More pics:<br />
<a href="/tech/images/z4_strut_brace_01.html" onclick="window.open('/tech/images/z4_strut_brace_01.html','popup','width=800,height=600,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="/tech/images/z4_strut_brace_01-thumb.jpg" width="251" height="188" /></a>&nbsp;<a href="/tech/images/z4_strut_brace_02.html" onclick="window.open('/tech/images/z4_strut_brace_02.html','popup','width=800,height=600,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="/tech/images/z4_strut_brace_02-thumb.jpg" width="251" height="188" /></a></p>]]>

</content>
</entry>

<entry>
<title>Getting and Setting Sort Preferences</title>
<link rel="alternate" type="text/html" href="http://www.rimblas.com/tech/archives/2006/07/getting-and-set.html" />
<modified>2006-07-13T15:51:15Z</modified>
<issued>2006-07-13T14:57:44Z</issued>
<id>tag:www.rimblas.com,2006:/tech/2.59</id>
<created>2006-07-13T14:57:44Z</created>
<summary type="text/plain">Q:For reports that have clickable column headers, HTML DB remembers this sorting choice by establishing a preference named FSP_P_R_SORT with a value of &quot;fsp_sort_(_desc)&quot;. I would like to be able to programatically get and set this preference. Essentially, I would...</summary>
<author>
<name>rimblas</name>
<url>http://rimblas.com</url>
<email>jorge@rimblas.com</email>
</author>
<dc:subject>Apex</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.rimblas.com/tech/">
<![CDATA[<p><strong>Q:</strong><em>For reports that have clickable column headers, HTML DB remembers this sorting choice by establishing a preference named FSP<app>_P<page>_R<region?>_SORT with a value of "fsp_sort_<col>(_desc)". I would like to be able to programatically get and set this preference. Essentially, I would like to save (and re-establish) the user's sorting preference, but I can't rely on the built-in mechanism to do this because the region source is generated from a PL/SQL block, and the resulting query can vary significantly. Getting the App and Page ID's are no problem, but I'd rather not hard-code in a Region ID (if that's even what that 3rd number is). Is there some way to access this value from within a PL/SQL process? Thanks. -Rich</em></p>

<p><strong>A:</strong>It is possible to find the region_id using htmldb_application.g_plug_id (plugs are regions) via g_plug_name</p>

<p>This code will show the approach:</p>

<blockquote><pre>
begin
  htp.tableOpen;
  htp.tableRowOpen;
  htp.tableHeader('region_id');
  htp.tableHeader('region_name');
  htp.tableRowClose;
  for i in 1.. htmldb_application.g_plug_id.COUNT loop
    htp.tableRowOpen;
      htp.tableData(htmldb_application.g_plug_id(i));
      htp.tableData(htmldb_application.g_plug_name(i));
    htp.tableRowClose;
  end loop;
  htp.tableClose;
end;
</pre></blockquote>]]>
<![CDATA[<p>Here is the full solution:</p>

<p><strong>Before Header Process: Set region sort preference</strong></p>

<blockquote><pre>
declare
  l_region_id varchar2(20);
begin
  -- find the ID of the region
  for i in 1.. htmldb_application.g_plug_id.COUNT loop
 
    if htmldb_application.g_plug_name(i) = :P1_REGION_NAME then
      l_region_id := htmldb_application.g_plug_id(i);
    end if;
 
  end loop;
 
  :P1_REGION_FSP_SORT := 'FSP' || :APP_ID || '_P' || :APP_PAGE_ID || '_R' || l_region_id || '_SORT';
end;
</pre></blockquote>

<p><br />
<strong>On Submit Process: Reset Sort Change</strong></p>

<blockquote><pre>
HTMLDB_UTIL.SET_PREFERENCE(
p_preference => :P1_REGION_FSP_SORT
, p_value => :P1_FSP_DEFAULT_SORT_COLUMN);
</pre></blockquote>

<p><strong>Item:</strong> P1_FSP_DEFAULT_SORT_COLUMN is set to the column value I want to reset to, ie. fsp_sort_1_desc </p>]]>
</content>
</entry>

<entry>
<title>Griot&apos;s Spray-On Protective Bra</title>
<link rel="alternate" type="text/html" href="http://www.rimblas.com/tech/archives/2006/07/griots-spray-on.html" />
<modified>2006-07-03T16:26:15Z</modified>
<issued>2006-07-03T16:06:31Z</issued>
<id>tag:www.rimblas.com,2006:/tech/2.58</id>
<created>2006-07-03T16:06:31Z</created>
<summary type="text/plain">I tried Griot&apos;s Spray-On Protective Bra on the new M Coupe in preparation for a track day event at BIR The product works great, it does exactly what it says and it doesn&apos;t hurt the paint. No scratches, no problems...</summary>
<author>
<name>rimblas</name>
<url>http://rimblas.com</url>
<email>jorge@rimblas.com</email>
</author>
<dc:subject>Cars</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.rimblas.com/tech/">
<![CDATA[<p>I tried <a href="http://www.griotsgarage.com/catalog.jsp?L1=L1_1000&L2=L2_1007&L3=L3_1090&SKU=20264">Griot's Spray-On Protective Bra</a> on the new M Coupe in preparation for a track day event at <a href="http://www.trackpedia.com/wiki/Brainerd_International_Raceway">BIR</a></p>

<p>The product works great, it does exactly what it says and it doesn't hurt the paint.  No scratches, no problems with water.  It creates a film similar to static cling decals, which is then easy to just peal off.</p>

<p>Prepping the car for the spray though did take a while.  It was a time consuming process with the complicated contours of the front fascia of the M Coupe.</p>

<p>Then to make matters worse, I ran out of the product before finishing up!!  Check out the pics of the before and after with 1/3 of the front still not covered.  Hard to tell on the picture below, but the left side of the picture (driver side) you can see it's still not completely covered as is the bottom spoiler/air splitter.</p>

<p>Oh well, I guess some protection is better than none.</p>

<table border=0><tr><td align="center">
<a href="/tech/images/spray_on_prep.html" onclick="window.open('http://www.rimblas.com/tech/images/spray_on_prep.html','popup','width=800,height=600,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="/tech/images/spray_on_prep-thumb.jpg" width="251" height="188" /></a></td><td align="center"><a href="/tech/images/spray_on_after.html" onclick="window.open('http://www.rimblas.com/tech/images/spray_on_after.html','popup','width=800,height=600,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://www.rimblas.com/tech/images/spray_on_after-thumb.jpg" width="251" height="188" /></a>
</td></tr><tr><td align="center"><strong>Before</strong></td><td align="center"><strong>After</strong></td></tr></table>]]>

</content>
</entry>

<entry>
<title>Resetting the service indicator lights</title>
<link rel="alternate" type="text/html" href="http://www.rimblas.com/tech/archives/2005/12/resetting-the-s.html" />
<modified>2005-12-27T19:00:09Z</modified>
<issued>2005-12-27T18:56:19Z</issued>
<id>tag:www.rimblas.com,2005:/tech/2.54</id>
<created>2005-12-27T18:56:19Z</created>
<summary type="text/plain">BMW E30 Network: Technical articles Article by Gustavo Melo :: 01 Jan 2000 You&apos;ll need a piece of electrical wire (10/15 cm) to serve as a jumper wire. According to Patrick Farrel, a BMW master tech working at a dealer...</summary>
<author>
<name>rimblas</name>
<url>http://rimblas.com</url>
<email>jorge@rimblas.com</email>
</author>
<dc:subject>Cars</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.rimblas.com/tech/">
<![CDATA[<p><a title="BMW E30 Network: Technical articles" href="http://www.bmwe30.net/cgi-bin/datacgi/database.cgi?file=articles&report=view&ID=00042&Section=">BMW E30 Network: Technical articles</a><br />
Article by <em>Gustavo Melo</em> :: 01 Jan 2000</p>

<p>You'll need a piece of electrical wire (10/15 cm) to serve as a jumper wire.</p>

<p>According to Patrick Farrel, a BMW master tech working at a dealer in MD, you should <strong>always use a fused jumper wire</strong>.</p>

<p>First, locate de diagnostic socket, at the engine compartment. There are two different types: up to 1987, it's located near the intake manifold, and has a red cap:</p>

<center><img src="/tech/images/early_connector.gif" alt="Early type connector"></center>

<p>After 1987, you have to find a big round black plastic socket, with a cap held by a plastic strap, located near the oil dipstick (M20 engines) or near the firewall, driver's side (M40 engines):</p>

<center><img src="/tech/images/early_connector.gif" alt="Late type connector"></center>

<p>Pull the cap (early connector), or unscrew it (late connector), and you'll see a number of connectors, depending of the type of plug (see the diagrams below).</p>

<center><img src="/tech/images/sil2.gif" alt="Early type connector">&nbsp;<img src="/tech/images/sil.gif" alt="Late type connector"></center>

<ul>
<li>According to the type of plug on your car, locate the right connectors, marked red in the diagrams;</li>
<li>Use the jumper wire to connect them together;</li>
<li>Turn the key to ON position, without starting the car;</li>
<li>When the 5 LED's in the dash light up (3/4 seconds), turn off the key. If you keep the ignition on, another 6/7 seconds, after the LED's appear, you'll perform an inspection reset, too.</li>
<li>Disconnect the jumper wire.</li>
</ul>

<p>Be Carefull! <strong>Make sure you jump the right connectors!</strong> The best way to follow the diagram for the late type connector is to match its center circle cut (that looks like a pacman :o)) with the one in your car. The earlier one has a flat side, so it's easier to follow.</p>

<p>If you can't reset the lights, or if they reset and return after a few days, you probably have to replace the SI board batteries.</p>]]>

</content>
</entry>

<entry>
<title>How To Be A Programmer</title>
<link rel="alternate" type="text/html" href="http://www.rimblas.com/tech/archives/2005/11/how-to-be-a-pro.html" />
<modified>2007-08-09T20:17:47Z</modified>
<issued>2005-11-25T13:31:13Z</issued>
<id>tag:www.rimblas.com,2005:/tech/2.49</id>
<created>2005-11-25T13:31:13Z</created>
<summary type="text/plain">Found this essay as a result of a blog entry from Tom Kyte. Tom said &quot;This is an excellent paper, many people in our industry would benefit from reading it.&quot;. With such a good recommendation I just had to read...</summary>
<author>
<name>rimblas</name>
<url>http://rimblas.com</url>
<email>jorge@rimblas.com</email>
</author>
<dc:subject>General</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.rimblas.com/tech/">
<![CDATA[<p>Found this essay as a result of a blog entry from <a href="http://tkyte.blogspot.com/">Tom Kyte</a>.  Tom said "<strong>This is an excellent paper, many people in our industry would benefit from reading it.</strong>". With such a good recommendation I just had to read it.<br />
Originally taken from <a href="http://samizdat.mines.edu/howto/">http://samizdat.mines.edu/howto/</a><br />
I have reproduced it locally: <a href="/work/docs/HowToBeAProgrammer.html">How To Be A Programmer</a></p>]]>

</content>
</entry>

<entry>
<title>Tire Size Calculator</title>
<link rel="alternate" type="text/html" href="http://www.rimblas.com/tech/archives/2005/10/tire-size-calcu.html" />
<modified>2005-10-25T02:20:58Z</modified>
<issued>2005-10-19T20:14:42Z</issued>
<id>tag:www.rimblas.com,2005:/tech/2.44</id>
<created>2005-10-19T20:14:42Z</created>
<summary type="text/plain">I was talking with a friend about tire sizes the other day and I really didn&apos;t know if the wheel tire combo in my E30 maintained the ratio of the original tire. I ran into this nifty Tire Size Calculator...</summary>
<author>
<name>rimblas</name>
<url>http://rimblas.com</url>
<email>jorge@rimblas.com</email>
</author>
<dc:subject>Cars</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.rimblas.com/tech/">
<![CDATA[<p>I was talking with a friend about tire sizes the other day and I really didn't know if the wheel tire combo in my <a href="/bmw/318is">E30</a> maintained the ratio of the original tire.</p>

<p>I ran into this nifty Tire Size Calculator and I was able to answer the question.<br />
Just go to this link and enter tires sizes to compare:<br />
<a href="http://www.powerdog.com/tiresize.cgi">http://www.powerdog.com/tiresize.cgi</a></p>

<p>Here are the sizes I use, in the following order; stock (snow tires), track and street<br />
195/65/14<br />
205/50/15<br />
215/40/17</p>

<p>I was glad to see that the big 17 inch wheels are apparently 0.9% smaller in diameter than the stock size.  Meaning they pretty much maintain the ratio.  According to the calculator, for every 10000mi (with the 14") the odometer would reflect 10088mi with the 17"</p>

<p>Now, that said, I still know my 17 inch are just too heavy a wheel for the little E30.<br />
Here are my weights (lbs) in the same order:<br />
Bottle caps & tires 31<br />
Kosei wheels & tires 35.2<br />
Mille Miglia wheels & tires 45.2</p>

<p>Another Java tire size calculator:<br />
<a href="http://www.miata.net/garage/tirecalc.html">http://www.miata.net/garage/tirecalc.html</a><br />
</p>]]>

</content>
</entry>

<entry>
<title>HTMLDB Tabular Form Validation</title>
<link rel="alternate" type="text/html" href="http://www.rimblas.com/tech/archives/2005/09/tabular-form-va.html" />
<modified>2005-09-06T13:17:59Z</modified>
<issued>2005-09-02T12:29:20Z</issued>
<id>tag:www.rimblas.com,2005:/tech/2.38</id>
<created>2005-09-02T12:29:20Z</created>
<summary type="text/plain">Q: I have created a master/detail form and a tabular form by using the wizard. How can I add validations? Is it possible to reference the different values?...</summary>
<author>
<name>rimblas</name>
<url>http://rimblas.com</url>
<email>jorge@rimblas.com</email>
</author>
<dc:subject>Apex</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.rimblas.com/tech/">
<![CDATA[<p><b>Q:</b> I have created a master/detail form and a tabular form by using the wizard. How can I add validations? Is it possible to reference the different values?</p>]]>
<![CDATA[<p><b>A:</b> <em>Response by Indrek Sooneste at <a href="http://forums.oracle.com/">HTMLDB forum</a></em></p>

<p>There are some tricks that can be used to validate detail form. At first take a look to your detail form, it is just a report. And updates are made using values in HTMLDB_APPLICATION.G_Fxx (where xx some number start at 01).</p>

<p>Example:<br />
I made a master/detail form on demo_order and demo_order_items tables.<br />
The select behind in detail form is</p>

<pre>
select "ORDER_ITEM_ID",
       "ORDER_ID",
       "PRODUCT_ID",
       "UNIT_PRICE",
       "QUANTITY"
  from "#OWNER#"."DEMO_ORDER_ITEMS"
  where "ORDER_ID" = :P5_ORDER_ID
</pre>

<p>So I created page level validation that checks if unit_price is empty and returns error message.</p>

<pre>
begin
FOR i IN 1.. HTMLDB_APPLICATION.G_F05.COUNT LOOP
  if HTMLDB_APPLICATION.G_F05(i) is null then
    return 'Unit Price cann''t be empti';
  end if;
END LOOP;
return null;
end;
</pre>

<p>To figure out what is the right number for G_Fxx check the HTML source. The error message is displayed inline in notification.</p>

<p>When you want to show error message inline with filed then you have to rebuild your detail form and use collections.</p>]]>
</content>
</entry>

<entry>
<title>Testing HBlogger</title>
<link rel="alternate" type="text/html" href="http://www.rimblas.com/tech/archives/2005/08/testing-hblogge.html" />
<modified>2005-08-30T03:21:04Z</modified>
<issued>2005-08-29T22:47:37Z</issued>
<id>tag:www.rimblas.com,2005:/tech/2.35</id>
<created>2005-08-29T22:47:37Z</created>
<summary type="text/plain">HBlogger is a Palm application by Normsoft Aside from posting text, it allows you to post pictures that exist within the Treo. It doesn&apos;t seem to allow for a specific title, category or excerpt. Which means, these values have to...</summary>
<author>
<name>rimblas</name>
<url>http://rimblas.com</url>
<email>jorge@rimblas.com</email>
</author>
<dc:subject>Palm</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.rimblas.com/tech/">
<![CDATA[<p>HBlogger is a <a href="http://www.palm.com/" target="_blank">Palm</a> application by <a href="http://normsoft.com/" target="_blank">Normsoft</a><br />
Aside from posting text, it allows you to post pictures that exist within the Treo.<br />
It doesn't seem to allow for a specific title, category or excerpt.  Which means, these values have to be set after the fact.<br />
However, it does provide for the following lj tags, that I don't know what they'll do for Movable Type:<br />
<quote>[lj user=""] </quote><br />
<quote>[lj comm=""] </quote></p>

<p>Here is a picture taken with the Treo 600:<br />
<img src="/new/images/pic093_17Jun05_454619257.jpg"></p>

<p>Interestingly enough, I know know that the Title is made of the first 30 characters.</p>

<p>[Posted with my trusty Treo with HBlogger]</p>]]>

</content>
</entry>

<entry>
<title>Labels with Zebra Printers</title>
<link rel="alternate" type="text/html" href="http://www.rimblas.com/tech/archives/2005/08/labels-with-zeb.html" />
<modified>2005-08-29T20:26:27Z</modified>
<issued>2005-08-29T20:00:29Z</issued>
<id>tag:www.rimblas.com,2005:/tech/2.34</id>
<created>2005-08-29T20:00:29Z</created>
<summary type="text/plain">Zebra printers are fairly common, easy to find and easy to use. However, some Zebra printers require their own escape codes and will not print plain ASCII input. Expanding on the foobar solution (Printing Barcodes from Oracle Apps), I have...</summary>
<author>
<name>rimblas</name>
<url>http://rimblas.com</url>
<email>jorge@rimblas.com</email>
</author>
<dc:subject>General</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.rimblas.com/tech/">
<![CDATA[<p><a href="http://www.zebra.com/" target="_blank">Zebra printers</a> are fairly common, easy to find and easy to use.</p>

<p>However, some Zebra printers require their own escape codes and will not print plain ASCII input.<br />
Expanding on the foobar solution (<a href="/tech/archives/2005/08/printing_barcod_3.html">Printing Barcodes from Oracle Apps</a>), I have created zfoobar.</p>]]>
<![CDATA[<p>From Zebra's website:<br />
<blockquote>Zebra offers the industry's broadest range of direct thermal and thermal transfer bar code printers making us the clear choice for all of your bar code label, ticket, and receipt printing needs.<br />
</blockquote></p>

<p>ZFOOBAR is a filter/wrapper that accepts plain ASCII input and recognizes stream indicators.  The input is then encapsulated with Zebra escape codes and stream indicators translated.  Barcodes are handled just like with the <a href="/tech.files/foobar.c" target="_blank">foobar</a> program, via a stream indicator.</p>

<h2>Configuration and Setup</h2>
You'll need to compile the <a href="/tech/files/zfoobar.c" target="_blank">zfoobar.c</a> file.  (Or download <a href="/tech/files/zfoobar.zip" target="_blank">zfoobar.zip</a>)

<h2>Usage</h2>
Zfoobar works by recognizing a stream indicator and making a substitution with the Zebra codes that represent the barcode.

<p>This is the form of the stream:<br />
<font face="'Courier New',Courier,monospace" size="2">[ZFOOBAR;DATA=*<i>BARCODE</i>*]</font></p>

<p>To force a new label a spacial stream indicator needs to be used:<br />
<font face="'Courier New',Courier,monospace" size="2">[ZFOOBAR;CMD=<em>NEWLABEL</em>]</font></p>

<p>Optionally you can have a HEIGHT parameter to specify the height of the barcode:<br />
<font face="'Courier New',Courier,monospace" size="2">[ZFOOBAR;<i>HEIGHT</i>=77;DATA=*BARCODE*]</font></p>]]>
</content>
</entry>

<entry>
<title>Printing Barcodes from Oracle Apps</title>
<link rel="alternate" type="text/html" href="http://www.rimblas.com/tech/archives/2005/08/printing-barcod-3.html" />
<modified>2005-08-29T19:48:09Z</modified>
<issued>2005-08-29T15:56:16Z</issued>
<id>tag:www.rimblas.com,2005:/tech/2.33</id>
<created>2005-08-29T15:56:16Z</created>
<summary type="text/plain">Printing barcodes has always been a challenge from within Oracle Application, specially when printing ASCII only reports. FOOBAR is a filter style program that generates 3 of 9 barcodes via PCL codes. (FOOBAR was originally developed by Allen-Sauber Consulting.)...</summary>
<author>
<name>rimblas</name>
<url>http://rimblas.com</url>
<email>jorge@rimblas.com</email>
</author>
<dc:subject>Oracle</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.rimblas.com/tech/">
<![CDATA[<p>Printing barcodes has always been a challenge from within Oracle Application, specially when printing ASCII only reports.<br />
FOOBAR is a filter style program that generates 3 of 9 barcodes via PCL codes.  (FOOBAR was originally developed by <a href="http://www.allen-sauer.com/toolbox/unix-foobar/" target="_blank">Allen-Sauber Consulting</a>.)</p>]]>
<![CDATA[<h2>Configuration and Setup</h2>
You'll need to compile the <a href="/tech/files/foobar.c" target="_blank">foobar.c</a> file.  Place it on the path so that it's available to Oracle Apps.

<p>Setup a Driver with the following string as Argument (notice the use of the foobar executable as a filter):<br />
<font face="'Courier New',Courier,monospace" size="2"><br />
cat $PROFILES$.FILENAME | <b>foobar</b> | lp -d$PROFILES$.PRINTER -n$PROFILES$.CONC_COPIES -t"$PROFILES$.TITLE"<br />
</font></p>

<h2>Usage</h2>
Foobar works by recognizing a stream indicator and making a substitution with the PCL codes that represent the barcode.

<p>This is the form of the stream:<br />
<font face="'Courier New',Courier,monospace" size="2">[FOOBAR;DATA=*<i>BARCODE</i>*]</font></p>

<p>Where <i>BARCODE</i> is the data to represent as a barcode. Note that the valid values are upper case letters and numbers.</p>

<p>Optionally you can have a HEIGHT parameter to specify the height of the barcode:<br />
<font face="'Courier New',Courier,monospace" size="2">[FOOBAR;<i>HEIGHT</i>=77;DATA=*BARCODE*]</font></p>]]>
</content>
</entry>

<entry>
<title>Updated M42 timing chain tensioner</title>
<link rel="alternate" type="text/html" href="http://www.rimblas.com/tech/archives/2005/08/updated-m42-tim.html" />
<modified>2005-08-30T16:01:47Z</modified>
<issued>2005-08-29T13:21:10Z</issued>
<id>tag:www.rimblas.com,2005:/tech/2.37</id>
<created>2005-08-29T13:21:10Z</created>
<summary type="text/plain">Article by Ray Pipkin :: 01 Jan 2000 Original at BMWe30.Network (direct). The M42 timing chain is tensioned by a chain guide pushed against the chain by a hydraulic tensioner. A weak or frozen tensioner can cause timing chain noise....</summary>
<author>
<name>rimblas</name>
<url>http://rimblas.com</url>
<email>jorge@rimblas.com</email>
</author>
<dc:subject>Cars</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.rimblas.com/tech/">
<![CDATA[<p>Article by <i>Ray Pipkin</i> :: 01 Jan 2000<br />
Original at <a href="http://www.bmwe30.net" target="_blank">BMWe30.Network</a> (<em><a href="http://www.bmwe30.net/cgi-bin/datacgi/database.cgi?file=articles&report=view&ID=00072" target="_blank">direct</a></em>).</p>

<p>The M42 timing chain is tensioned by a chain guide pushed against the chain by a hydraulic tensioner. A weak or frozen tensioner can cause timing chain noise. Replacement of the tensioner takes about ten minutes and requires only a 19 mm socket wrench.</p>]]>
<![CDATA[<p>BMW updated its original M42 tensioner with an improved version that is also used in the M44 (part no. 11 31 1 743 187). The original model is no longer available. The photo below compares the new tensioner (top, next to scale) to the original. Between the two units is a spring found in both tensioners.</p>

<p><img src="/tech/images/m42tensioner2.jpg" width="447" height="300" alt="" border="0"></p>

<p>The tensioner consists of a cylinder, closed at one end, having a closely fitted piston. Oil under pressure enters the port in the wall of the cylinder and, assisted by the spring, expands the piston against the chain guide.</p>

<p>To make it easier to install, the tensioner is sold with the spring compressed and the piston held in place by a snap ring. It takes only a slight force of about 1 newton (1/4 lbf) applied to the piston to release the spring. Once released, it can be very difficult to lock the piston back into place for installation. Avoid pressing on the piston or dropping the tensioner.</p>

<p>The tensioner is located behind a 19 mm hex-head cap on the right side of the cylinder block at the front of the engine, approximately 13 cm (5 inches) below the head/block interface. The photos below show its location with (1) the hex cap in place, and (2) the tensioner partially removed from the block.</p>

<p><img src="/tech/images/m42tensioner1.jpg" width="447" height="460" alt="" border="0"></p>

<p>To install, slide the compressed tensioner into the cylinder block with the piston end facing inward. Use a new compression washer and torque to 40 Nm. The final step in the installation procedure calls for revving the engine to 3500 rpm for 20 seconds. As this is done, the chain noise will be heard to decrease suddenly as the compressed spring is released and the tensioner is filled and expanded by the engine oil. (The compressed tensioner is released by the chain as it slaps against the chain guide during the revving process.)</p>

<p>Replacement of the tensioner is a simple fix that eliminates one possible source of engine noise.</p>]]>
</content>
</entry>

<entry>
<title>Using Oracle Web Applications, mod_plsql</title>
<link rel="alternate" type="text/html" href="http://www.rimblas.com/tech/archives/2002/04/using-oracle-we.html" />
<modified>2005-08-29T12:04:13Z</modified>
<issued>2002-04-22T21:09:34Z</issued>
<id>tag:www.rimblas.com,2002:/tech/2.21</id>
<created>2002-04-22T21:09:34Z</created>
<summary type="text/plain">Oracle Application Servers in conjunction with an Oracle Database have a very cool feature that has changed names multiple times: PL/SQL Cartridge, Oracle Web Applications, mod_plsql, etc.. However the concept remains the same: the ability to run native PL/SQL packages...</summary>
<author>
<name>rimblas</name>
<url>http://rimblas.com</url>
<email>jorge@rimblas.com</email>
</author>
<dc:subject>Oracle</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.rimblas.com/tech/">
<![CDATA[<p>Oracle Application Servers in conjunction with an Oracle Database have a very cool feature that has changed names multiple times: <em>PL/SQL Cartridge</em>, <em>Oracle Web Applications</em>, <em>mod_plsql</em>, etc..  However the concept remains the same: the ability to run native PL/SQL packages or procedure from a URL whose possible output is directed back to the browser to render an actual web page (or any MIME type output you desire)</p>

<p>This is my reference page that I used to host on my personal <a href="http://twiki.org/" target="_blank">Twiki</a>: <a href="/twiki/Oracle/OracleWebApplications.html">Oracle Web Applications</a><br />
You'll find quite a few code examples that without much effort can be ran anywhere.</p>]]>

</content>
</entry>

</feed>