﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-邋遢居-随笔分类-胡思乱想</title><link>http://www.blogjava.net/JetGeng/category/6627.html</link><description>我的Java天堂</description><language>zh-cn</language><lastBuildDate>Sat, 23 Jul 2011 22:19:01 GMT</lastBuildDate><pubDate>Sat, 23 Jul 2011 22:19:01 GMT</pubDate><ttl>60</ttl><item><title>Gemini测试小工具</title><link>http://www.blogjava.net/JetGeng/archive/2011/07/22/354828.html</link><dc:creator>Jet Geng</dc:creator><author>Jet Geng</author><pubDate>Thu, 21 Jul 2011 17:01:00 GMT</pubDate><guid>http://www.blogjava.net/JetGeng/archive/2011/07/22/354828.html</guid><wfw:comment>http://www.blogjava.net/JetGeng/comments/354828.html</wfw:comment><comments>http://www.blogjava.net/JetGeng/archive/2011/07/22/354828.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/JetGeng/comments/commentRss/354828.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JetGeng/services/trackbacks/354828.html</trackback:ping><description><![CDATA[<br />
<div class="body">
<div id="gemini" class="section">
<h1>Gemini测试小工具<a title="永久链接至标题" href="#gemini" class="headerlink">&#182;</a></h1>
<table rules="none" frame="void" class="docutils field-list">
     <colgroup><col class="field-name">
     <col class="field-body">
     </colgroup>
     <tbody valign="top">
         <tr class="field">
             <th class="field-name">作 者:</th>
             <td class="field-body">Jet Geng</td>
         </tr>
         <tr class="field">
             <th class="field-name">日 期:</th>
             <td class="field-body">2011-07-22</td>
         </tr>
     </tbody>
</table>
<div id="id1" class="section">
<h2>概述<a title="永久链接至标题" href="#id1" class="headerlink">&#182;</a></h2>
<p>在 <em>Blueprint</em> 起步中我们已经成功的通过 <em>Blueprint</em> 容器创建了一个POJO。我们只是通过log的方式查看到我们的POJO已经被创建了。无法深入的去了解容器内部Bean的运行状态和行为。
所以才有必要创建一个Gemini控制台这样的程序。这个控制台最初的需求是：</p>
<blockquote>
<div>
<ul class="simple">
     <li>能够动态查看特定的Bean是否被创建。</li>
     <li>能够动态的获取特定的Bean。</li>
     <li>能够检查特定Bean的行为是否正确。</li>
</ul>
</div>
</blockquote>
</div>
<div id="id2" class="section">
<h2>解决方案<a title="永久链接至标题" href="#id2" class="headerlink">&#182;</a></h2>
<dl class="docutils">
<dt>为了解决以上的问题。我做了一个小工具。 这个小工具的目的让客户的动态脚本能在最终的目标环境中运行。使用方式如下：</dt>
<dd>
<ol class="first last arabic simple">
     <li>从 git://github.com/jetgeng/OSGi.git 下载 <strong>org.gunn.gemini.console</strong> 和 <strong>org.codehaus.groovy</strong> 这两个项目。</li>
     <li>并把这两项目加入到你的TargetPlatform中。</li>
     <li>使用 <strong>invokegv</strong> 来运行groovy脚本。
     <ol class="arabic">
         <li>直接在命令行输入脚本。例如： <tt class="docutils literal"><span class="pre">invokegv</span> <span class="pre">print</span> <span class="pre">act.getBean(''myPOJO'')</span></tt></li>
         <li>通过输入Groovy文件。例如： <tt class="docutils literal"><span class="pre">invokegv</span> <span class="pre">file:///Users/Puer/.../script.groovy</span></tt></li>
     </ol>
     </li>
</ol>
</dd>
</dl>
<div class="admonition note">
<p class="first admonition-title">注解</p>
<p class="last">在Groovy脚本中有一个内建的变量 <strong>act</strong> ， 他又一个叫做 <strong>getBean</strong> 的方法。通过这个方法你可以获得当前 <strong>OSGi</strong> 平台中所有的BlueprintContainer中的组件。他的输入参数时Bean或Service的id。
如果是使用Groovy文件的形式，注意文件的url格式。他是通过如下的正则表达式 <tt class="docutils literal"><span class="pre">file:\\/{2}(\\/[:\\w\\.]+)+</span></tt> 进行验证的。并且路径中暂时不支持中文。</p>
</div>
<p>这个周末(23或24日)完成一个简单的录屏，来演示这个小工具的使用。</p>
</div>
</div>
</div>
<img src ="http://www.blogjava.net/JetGeng/aggbug/354828.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JetGeng/" target="_blank">Jet Geng</a> 2011-07-22 01:01 <a href="http://www.blogjava.net/JetGeng/archive/2011/07/22/354828.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>读《代码大全》笔记 -- 保持松散耦合</title><link>http://www.blogjava.net/JetGeng/archive/2006/07/15/58329.html</link><dc:creator>Jet Geng</dc:creator><author>Jet Geng</author><pubDate>Sat, 15 Jul 2006 07:59:00 GMT</pubDate><guid>http://www.blogjava.net/JetGeng/archive/2006/07/15/58329.html</guid><wfw:comment>http://www.blogjava.net/JetGeng/comments/58329.html</wfw:comment><comments>http://www.blogjava.net/JetGeng/archive/2006/07/15/58329.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/JetGeng/comments/commentRss/58329.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JetGeng/services/trackbacks/58329.html</trackback:ping><description><![CDATA[    

<p class="MsoNormal"><span style="font-family: 宋体;">读《代码大全》笔记 -- 保持松散耦合</span></p><p class="MsoNormal"><span style="font-family: 宋体;">在上学的时候就听老师说，写程序要做到低耦合。这话是牢牢的记在心里了（我还算是个乖学生）。可是在具体的编程过程中有犯糗了。犯糗原因就是对于常见耦合分辨不清、不知道在我的应用中那些耦合可以接受、那些耦合在特定场合可以接受、那些耦合要尽量避免、最重要的就是不同的耦合在代码中如何表现会有如何的影响。</span></p><p class="MsoNormal"><span style="font-family: 宋体;">还好这些问题近期在一本叫《代码大全》的书里面找到了（插一句，如果你还没有听说过这本书，赶紧，一定要赶紧打开</span><span lang="EN-US">Google</span><span style="font-family: 宋体;">，去</span><span lang="EN-US">Google</span><span style="font-family: 宋体;">一下）。</span></p><p class="MsoNormal"><span style="font-family: 宋体;">书中提到（中文版</span><span lang="EN-US"> p101</span><span style="font-family: 宋体;">）了常见的耦合的种类有如下几种：</span></p><p class="MsoNormal"><span lang="EN-US">l<span style="">      </span></span><span style="font-family: 宋体;">简单数据参数耦合</span></p><p class="MsoNormal"><span lang="EN-US">l<span style="">      </span></span><span style="font-family: 宋体;">简单对象耦合</span></p><p class="MsoNormal"><span lang="EN-US">l<span style="">      </span></span><span style="font-family: 宋体;">对象参数耦合</span></p><p class="MsoNormal"><span lang="EN-US">l<span style="">      </span></span><span style="font-family: 宋体;">语义上的耦合</span></p><p class="MsoNormal"><span style="font-family: 宋体;">对于简单数据参数耦合比对象参数耦合更有灵活性书中在耦合标准－灵活性（</span><span lang="EN-US">p100</span><span style="font-family: 宋体;">）中进行了描述。并得出对象参数耦合要比简单数据参数耦合的耦合程度要高。</span></p><p class="MsoNormal"><span style="font-family: 宋体;">但是在使用的过程中发现很多场合如果使用“简单数据参数”的话，函数的参赛数列表会很长。这个声明的时候倒是没什么，但是在调用的时候就有可能写错参数的个数（这个还好</span><span lang="EN-US"> ide</span><span style="font-family: 宋体;">会告诉我们），参数写的顺序不正确（这个就比较郁闷了，容易出</span><span lang="EN-US">bug</span><span style="font-family: 宋体;">而且还不容易找）。</span></p><p class="MsoNormal"><span style="font-family: 宋体;">我想如果能用“简单数据参数”就尽量使用，在不同的场合考虑使用“对象参数”。为了这个问题我曾经和我的同事狂吵过。所以印象很深。</span></p><p class="MsoNormal"><span lang="EN-US"><!--[if !supportEmptyParas]--> <!--[endif]--><o:p></o:p></span></p><span style="font-size: 10.5pt; font-family: 宋体;">其实最要命的最难处理的是那些“语义上的耦合”。别人我不知道。看完了书中的定义，在回想自己以前写过的代码。很多都犯了“语义上的耦合”，并且给项目带来了很多不便。丢人啊。</span><img src ="http://www.blogjava.net/JetGeng/aggbug/58329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JetGeng/" target="_blank">Jet Geng</a> 2006-07-15 15:59 <a href="http://www.blogjava.net/JetGeng/archive/2006/07/15/58329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>元旦上海行</title><link>http://www.blogjava.net/JetGeng/archive/2006/01/03/26445.html</link><dc:creator>Jet Geng</dc:creator><author>Jet Geng</author><pubDate>Tue, 03 Jan 2006 08:07:00 GMT</pubDate><guid>http://www.blogjava.net/JetGeng/archive/2006/01/03/26445.html</guid><wfw:comment>http://www.blogjava.net/JetGeng/comments/26445.html</wfw:comment><comments>http://www.blogjava.net/JetGeng/archive/2006/01/03/26445.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/JetGeng/comments/commentRss/26445.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JetGeng/services/trackbacks/26445.html</trackback:ping><description><![CDATA[
<p class="MsoNormal"><span style="font-family: 宋体;">这个周末去了一趟上海。</span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">最有感触的就是上海新开通的轨道交通</span><span lang="EN-US">4</span><span style="font-family: 宋体;">号线。我乘坐的区间是临平路</span><span lang="EN-US">~</span><span style="font-family: 宋体;">火车站。在这个短短的几站路的过程中。我看到了地铁（地下），清轨（空中），铁路（地面上）这三种方式。从临平路到宝山路是采用的新建的地下轨道。当到了宝山路这一段是就充分利用</span><span lang="EN-US">3</span><span style="font-family: 宋体;">号线已有的资源。这就是我看到的清轨了。进了火车站后又直接利用火车的轨道。完成着一段路程。真的可算做到充分利用现有资源。</span></p>


<p class="MsoNormal"><span style="font-family: 宋体;">其实在我们现在的软件开发的过程中。完全是可以借鉴这个观点的（其实很多地方已经这么干了）。</span></p>


<p class="MsoNormal"><span style="font-family: 宋体;"></span><span style="font-family: 宋体;">但是在利用现有资源的前提是要了解现有资源。评估他带来的好处。<br>
如果能够解决评估现有资源和采用现有资源的总代价和采用传统方式的代价的比较。那就比较爽了。现在我对这个一点头绪都没有。</span><span style="font-size: 10.5pt; font-family: 宋体;">欢迎你的任何意见。谢谢了先。</span></p>


<span style="font-size: 10.5pt; font-family: 宋体;"><br>
<img src="http://www.blogjava.net/images/blogjava_net/jetgeng/others/line4.gif" alt="line4.gif" border="0" height="251" width="281"><br>
</span><img src ="http://www.blogjava.net/JetGeng/aggbug/26445.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JetGeng/" target="_blank">Jet Geng</a> 2006-01-03 16:07 <a href="http://www.blogjava.net/JetGeng/archive/2006/01/03/26445.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>