﻿<?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>C++博客-Codejie's C++ Space-随笔分类-随笔而已</title><link>http://www.cppblog.com/codejie/category/9778.html</link><description>Using C++</description><language>zh-cn</language><lastBuildDate>Wed, 15 Apr 2015 01:38:20 GMT</lastBuildDate><pubDate>Wed, 15 Apr 2015 01:38:20 GMT</pubDate><ttl>60</ttl><item><title>OpenCV : build with Glade on Android Studio</title><link>http://www.cppblog.com/codejie/archive/2015/04/14/210337.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 14 Apr 2015 15:54:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2015/04/14/210337.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/210337.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2015/04/14/210337.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/210337.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/210337.html</trackback:ping><description><![CDATA[<br />FROM : <a href="http://stackoverflow.com/questions/17767557/how-to-use-opencv-in-android-studio-using-gradle-build-tool">http://stackoverflow.com/questions/17767557/how-to-use-opencv-in-android-studio-using-gradle-build-tool</a><br /><br /><br /><p style="margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 19.5px; background-color: #ffffff;">Android Studio 0.8.2+ and above, could easily import modules. Thanks to TGMCains answer, is simplified, by using Android Studio itself to import OpenCV as a module.</p><ol style="margin: 0px 0px 1em 30px; padding: 0px; border: 0px; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 19.5px; background-color: #ffffff;"><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;">Download</strong>&nbsp;latest OpenCV sdk for Android from&nbsp;<a href="http://opencv.org/downloads.html" rel="nofollow" style="margin: 0px; padding: 0px; border: 0px; cursor: pointer; color: #0c65a5; text-decoration: none;">OpenCV.org</a>&nbsp;and decompress the zip file.</li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;">Import OpenCV to Android Studio</strong>, From&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">File -&gt; Import Module</em>, choose&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">sdk/java</em>&nbsp;folder in the unzipped opencv archive.</li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;">Update build.gradle</strong>&nbsp;under imported OpenCV module to update 4 fields to match your project build.gradle a) compileSdkVersion b) buildToolsVersion c) minSdkVersion and 4) targetSdkVersion.</li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;">Add module dependency</strong>&nbsp;by&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">Application -&gt; Module Settings</em>, and select the&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">Dependencies</em>tab. Click&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">+</em>&nbsp;icon at bottom, choose&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">Module Dependency</em>&nbsp;and select the imported OpenCV module.</li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;">Copy&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">libs</em></strong>&nbsp;folder under&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">sdk/native</em>&nbsp;to Android Studio under&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">app/src/main</em>.</li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;">In Android Studio,&nbsp;<strong style="margin: 0px; padding: 0px; border: 0px;">rename the copied&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">libs</em>&nbsp;directory to&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">jniLibs</em></strong>&nbsp;and we are done.</li></ol><p style="margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 19.5px; background-color: #ffffff;">Step (6) is since Android studio expects native libs in&nbsp;<code style="margin: 0px; padding: 1px 5px; border: 0px; font-size: 13px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; white-space: pre-wrap; background-color: #eeeeee;">app/src/main/jniLibs</code>&nbsp;instead of older&nbsp;<code style="margin: 0px; padding: 1px 5px; border: 0px; font-size: 13px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; white-space: pre-wrap; background-color: #eeeeee;">libs</code>&nbsp;folder. For those new to Android OpenCV, don't miss below steps</p><ul style="margin: 0px 0px 1em 30px; padding: 0px; border: 0px; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 19.5px; background-color: #ffffff;"><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;">include&nbsp;<code style="margin: 0px; padding: 1px 5px; border: 0px; font-size: 13px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; white-space: pre-wrap; background-color: #eeeeee;">static{ System.loadLibrary("opencv_java"); }</code></li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;">For step(5), if you ignore any platform libs like x86, make sure your device/emulator is not on that platform.</li></ul><p style="margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 19.5px; background-color: #ffffff;">OpenCV written is in C/C++. Java wrappers are</p><ol style="margin: 0px 0px 1em 30px; padding: 0px; border: 0px; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 19.5px; background-color: #ffffff;"><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;"><a href="http://opencv.org/platforms/android.html" rel="nofollow" style="margin: 0px; padding: 0px; border: 0px; cursor: pointer; color: #0c65a5; text-decoration: none;">Android OpenCV SDK</a></strong>&nbsp;- OpenCV.org maintained Android Java wrapper. I suggest this one.</li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;"><a href="http://opencv.org/opencv-java-api.html" rel="nofollow" style="margin: 0px; padding: 0px; border: 0px; cursor: pointer; color: #0c65a5; text-decoration: none;">OpenCV Java</a></strong>&nbsp;- OpenCV.org maintained auto generated desktop Java wrapper.</li><li style="margin: 0px 0px 0.5em; padding: 0px; border: 0px; word-wrap: break-word;"><strong style="margin: 0px; padding: 0px; border: 0px;"><a href="https://github.com/bytedeco/javacv" rel="nofollow" style="margin: 0px; padding: 0px; border: 0px; cursor: pointer; color: #0c65a5; text-decoration: none;">JavaCV</a></strong>&nbsp;- Popular Java wrapper maintained by independent developer(s). Not Android specific. This library&nbsp;<em style="margin: 0px; padding: 0px; border: 0px;">might</em>&nbsp;get out of sync with OpenCV newer versions.</li></ol><img src ="http://www.cppblog.com/codejie/aggbug/210337.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2015-04-14 23:54 <a href="http://www.cppblog.com/codejie/archive/2015/04/14/210337.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SPRING : Handle JSON and Image object in One Request</title><link>http://www.cppblog.com/codejie/archive/2015/04/13/210331.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Mon, 13 Apr 2015 15:53:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2015/04/13/210331.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/210331.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2015/04/13/210331.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/210331.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/210331.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 代码这里~<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp; @RequestMapping(value&nbsp;=&nbsp;"/req",&nbsp;method&nbsp;=&nbsp;RequestMethod.POST)<br />&nbsp;&nbsp;&nbsp;&nbsp;@ResponseBody<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;ResponseEntity&lt;Post.Response&gt;&nbsp;post(HttpServletRequest&nbsp;request)&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Post.Response&nbsp;resp&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Post.Request&nbsp;req&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;file&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CommonsMultipartResolver&nbsp;multipartResolver&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;CommonsMultipartResolver(request.getSession().getServletContext());&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(multipartResolver.isMultipart(request))&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MultipartHttpServletRequest&nbsp;multiRequest&nbsp;=&nbsp;(MultipartHttpServletRequest)&nbsp;request;&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collection&lt;Part&gt;&nbsp;parts&nbsp;=&nbsp;multiRequest.getParts();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;hasJSON&nbsp;=&nbsp;<span style="color: #0000FF; ">false</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;hasFile&nbsp;=&nbsp;<span style="color: #0000FF; ">false</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">final</span>&nbsp;Part&nbsp;p&nbsp;:&nbsp;parts)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(hasJSON)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">continue</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(p.getContentType().contains("application/json"))&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ObjectMapper&nbsp;mapper&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ObjectMapper();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;req&nbsp;=&nbsp;mapper.readValue(p.getInputStream(),&nbsp;Post.Request.<span style="color: #0000FF; ">class</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(req&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resp&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Post.Response();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resp.setX(100);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hasJSON&nbsp;=&nbsp;<span style="color: #0000FF; ">true</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(p.getContentType().contains("image/jpeg"))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++&nbsp;index;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;=&nbsp;UPLOAD_ROOT&nbsp;+&nbsp;String.valueOf(index)&nbsp;+&nbsp;".jpg";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is&nbsp;=&nbsp;p.getInputStream();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;localFile&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;File(file);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;os&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;FileOutputStream(localFile);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;bytesRead&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">byte</span>[]&nbsp;buffer&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">byte</span>[8192];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;((bytesRead&nbsp;=&nbsp;is.read(buffer,&nbsp;0,&nbsp;8192))&nbsp;!=&nbsp;-1)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.write(buffer,&nbsp;0,&nbsp;bytesRead);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hasFile&nbsp;=&nbsp;<span style="color: #0000FF; ">true</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(hasJSON&nbsp;&amp;&amp;&nbsp;hasFile)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(IOException&nbsp;e1)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e1.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(ServletException&nbsp;e1)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e1.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(req&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>&nbsp;&amp;&amp;&nbsp;file&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resp&nbsp;=&nbsp;calc.calc(req,&nbsp;file);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(resp&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ResponseEntity&lt;Post.Response&gt;(resp,&nbsp;HttpStatus.OK);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ResponseEntity&lt;Post.Response&gt;(resp,&nbsp;HttpStatus.BAD_REQUEST);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}</div><img src ="http://www.cppblog.com/codejie/aggbug/210331.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2015-04-13 23:53 <a href="http://www.cppblog.com/codejie/archive/2015/04/13/210331.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OpenCV : build with Maven on Spring</title><link>http://www.cppblog.com/codejie/archive/2015/03/24/210154.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 24 Mar 2015 14:13:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2015/03/24/210154.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/210154.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2015/03/24/210154.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/210154.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/210154.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 为了赶时髦，准备把OpenCV的操作通过WebService的方式Deploy出去，因此做了如下的事情：<br /><br />&nbsp; &nbsp; 1. download<a href="http://opencv.org/"> opencv zip package</a>；<br />&nbsp; &nbsp; 2. download <a href="www.cmake.org/">cmake source zip</a>；<br />&nbsp; &nbsp; 3. download <a href="http://ant.apache.org/">ant binary package</a>；<br />&nbsp; &nbsp; 4. install ant binary;<br />&nbsp; &nbsp; 5. make cmake;<br />&nbsp; &nbsp; 6. unzip opencv;<br />&nbsp; &nbsp; 7. cmake opencv source;<br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br />#mkdir&nbsp;build<br />#cd&nbsp;build<br />#cmake&nbsp;-D&nbsp;BUILD_SHARED_LIBS=OFF&nbsp;../<br />#make</div><br />&nbsp; &nbsp; 8. install opencv library into Maven;<br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->mvn&nbsp;install:install-file&nbsp;-Dfile=opencv-2411.jar&nbsp;-DgroupId=org.opencv&nbsp;-DartifaceId=opencv&nbsp;-Dversion=2.4.11&nbsp;-Dpackaging=jar</div><br />&nbsp; &nbsp; 9. update pom.xml to add openvn dependency;<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp;&nbsp;&lt;dependency&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.opencv&lt;/groupId&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;opencv&lt;/artifactId&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;2.4.11&lt;/version&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;systemPath&gt;/Users/Jie/Downloads/opencv-2.4.11/build/bin/opencv-2411.jar&lt;/systemPath&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;scope&gt;system&lt;/scope&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/dependency&gt;</div><br />&nbsp; &nbsp; 10. run webapp;<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->mvn&nbsp;spring-boot:run</div><br />&nbsp; &nbsp; 11. done;<br /><br />&nbsp; &nbsp; 翻了无数++的页面，就这些~<br /><img src ="http://www.cppblog.com/codejie/aggbug/210154.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2015-03-24 22:13 <a href="http://www.cppblog.com/codejie/archive/2015/03/24/210154.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC : Do you remember it?</title><link>http://www.cppblog.com/codejie/archive/2014/06/30/207463.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Mon, 30 Jun 2014 07:24:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2014/06/30/207463.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/207463.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2014/06/30/207463.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/207463.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/207463.html</trackback:ping><description><![CDATA[<p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 早上很意外地收到一个留言, 说是需要LAC (LingosHook Android Client)和数据文件. 不知大家是否还记得这个? LAC敲完发布都已经过去两年了, 怎么<a href="http://www.cppblog.com/codejie/archive/2012/08/30/164888.html">使用看这里</a>, 需要的就这里下载了.</p> <p>&nbsp;</p> <blockquote> <div style="white-space: normal; text-transform: none; word-spacing: 0px; color: rgb(34,34,34); font: 14px arial, sans-serif; letter-spacing: normal; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px">c46.db3 - <a style="color: rgb(17,85,204)" href="http://1drv.ms/1r436SD" target="_blank"><u>http://1drv.ms/1r436SD</u></a></div> <div style="white-space: normal; text-transform: none; word-spacing: 0px; color: rgb(34,34,34); font: 14px arial, sans-serif; letter-spacing: normal; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px">LAC.apk - <a style="color: rgb(17,85,204)" href="http://1drv.ms/VzfFso" target="_blank"><u>http://1drv.ms/VzfFso</u></a></div></blockquote> <p>&nbsp;&nbsp;&nbsp; 近段时间Google的服务都不可访问, 我把这两个文件重新传到OneDrive上了, 并随手把其中的广告给删了, 唉, 反正在Android上一点银子也见不到, 索性真需要的就拿去吧...</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 唉, 实际都忘记这个LAC了, 想想自己在Android也敲了三年半了, 应用, 游戏敲了几个, 但现在想换份跟Android相关的工作竟然无望, 各种阴差阳错导致总总失败, 看来转行还是不对地...</p><img src ="http://www.cppblog.com/codejie/aggbug/207463.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2014-06-30 15:24 <a href="http://www.cppblog.com/codejie/archive/2014/06/30/207463.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SnakeGo : Scaling Screen and Moving Camera</title><link>http://www.cppblog.com/codejie/archive/2014/05/18/207007.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Sun, 18 May 2014 11:24:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2014/05/18/207007.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/207007.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2014/05/18/207007.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/207007.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/207007.html</trackback:ping><description><![CDATA[<p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 敲了几晚SnakeGo, 原型出来了, 大家来看看不...</p> <p>&nbsp;</p> <p><img title="1" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="1" src="http://www.cppblog.com/images/cppblog_com/codejie/Windows-Live-Writer/SnakeGo-_13899/1_27d519d2-f888-44d1-9760-96312a8c4a58.png" width="240" height="400" /><img title="2" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="2" src="http://www.cppblog.com/images/cppblog_com/codejie/Windows-Live-Writer/SnakeGo-_13899/2_09279857-09bb-4f01-9660-67d0b3886a01.png" width="240" height="400" /><img title="3" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="3" src="http://www.cppblog.com/images/cppblog_com/codejie/Windows-Live-Writer/SnakeGo-_13899/3_e07439f6-6915-45bd-bc9b-6fea5a544b8b.png" width="240" height="400" /></p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 不错, 这货就是---贪吃蛇...哈哈...别急, 这还是原型, 好玩的在后面呢...(以我敲字速度, 大约再等不到六个月应该可以完成了...)</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 今天这里记录下使用LIBGDX过程中碰到的两个问题:</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. 调整屏幕比例;</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. 移动观察镜头;</p> <p>&nbsp;</p> <p>一, 调整屏幕比例</p> <p>&nbsp;&nbsp;&nbsp; LIBGDX是跨平台的, 一大好处就是直接在PC上测试, 那是非常的方便, 但这有两个问题需要考虑, 一, 手机是1280x768, 但我PC只有1280x1024的, 而且真要开个跟手机一样大小的一样大小的屏幕, 那还怎么看log输出呢? 二就是不同的手机有着不同的分辨率, 长宽比也不一致, 那怎么保证图形不变形呢?</p> <p>&nbsp;&nbsp;&nbsp; 这个问题不难解决, 只需要在屏幕尺寸发生变化时, 即resize()(第一次启动也会调用此函数)中, 重新调整镜头(Camera)的参数即可. 如下代码:</p> <div><pre>	@Override
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> resize(<span style="color: #0000ff">int</span> width, <span style="color: #0000ff">int</span> height) {
		Vector2 size = Scaling.fit.apply(WIDTH, HEIGHT, width, height);
		
		camera = <span style="color: #0000ff">new</span> OrthographicCamera(size.x, size.y);
		camera.update();

		batch.setProjectionMatrix(camera.combined);
	    
              <span style="color: #0000ff">int</span> viewportX = (<span style="color: #0000ff">int</span>)(width - size.x) / 2;
	       <span style="color: #0000ff">int</span> viewportY = (<span style="color: #0000ff">int</span>)(height - size.y) / 2;
	       <span style="color: #0000ff">int</span> viewportWidth = (<span style="color: #0000ff">int</span>)size.x;
	       <span style="color: #0000ff">int</span> viewportHeight = (<span style="color: #0000ff">int</span>)size.y;
	    
		Gdx.gl.glViewport(viewportX, viewportY, viewportWidth, viewportHeight);

		<span style="color: #0000ff">super</span>.resize(width, height);
	}</pre></div>
<p>&nbsp;&nbsp;&nbsp; 这里采用的是重新创建camera实例的方式, 另外用改变已有camera实例的参数方式也是一样的. 很简单, 而且这样一次就解决了上面两个问题 -- PC机上使用任何尺寸的窗口, 都可以获得跟设置等比例的窗口, 手机上亦是如此. 像<a href="http://www.cppblog.com/codejie/category/20828.html">I;P</a>就是采用的这种方式来保持其在任意手机上都是1280:768的比例.</p>
<p>&nbsp;&nbsp;&nbsp; 这种方法只是改变了'视图'的大小, 但并不会改变其中的图形的大小, 这样为了保持图形显示比例, 需要在输出图形时做相应的比例放缩. 可以在resize()获得这个比例, 染在图形输出时使用这个比例.</p>
<div><pre>              screenScaling = <span style="color: #0000ff">new</span> Vector2((size.x / WIDTH), (size.y / HEIGHT));</pre>
<div><pre>              ...
              ...
              batch.draw(img, (- WIDTH / 2) * screenScaling.x, (- HEIGHT / 2) * screenScaling.y, WIDTH * screenScaling.x, HEIGHT * screenScaling.y);</pre></div>
<div>&nbsp;</div></div>
<p>二, 移动观察镜头</p>
<p>&nbsp;&nbsp;&nbsp; 在SnakeGo中, 为了不让Snake'跑出'屏幕, 需要镜头camera跟Snake本身保持'同步'移动, 这样看起来Snake保持在屏幕的中间, 但其它Object是移动的. 根据'相对运行'原理, 使整个看起来像是Snake在Object中穿行. 所以, 移动camaera是必须的, 代码也简单, 如下:</p>
<div><pre>              ...
		<span style="color: #0000ff">final</span> OrthographicCamera camera = game.getCamera();
		camera.translate(0.0f, 32.0f, 0.0f);
		camera.update();
		game.getSpriteBatch().setProjectionMatrix(camera.combined);
              ...</pre></div><br />
<p>&nbsp;</p>
<p>&lt;----心烦意乱的分割线----&gt;</p>
<p>&nbsp;&nbsp;&nbsp; 这几天在找工作, 前面去面了一次, 其中没一个App或者Game的问题, 倒全是C++相关的, 登时就傻眼了...虽说咱也是C++'出身'的(不然Blog也不会在这里不是), 但也许真的是'老'了, 才三年不用C++,竟然忘记的只剩下个auto_ptr了...更悲剧的是咱用的C++98标准已经变成C++11了, auto_ptr变成smart_ptr了... </p>
<p>&nbsp;&nbsp;&nbsp; 都说现在是个'跨界'的时代, 但咱这还没有跨界, 只是同行转个方向而已, 为啥就这么悲剧了...好吧, 估计学艺不精才是根本...</p>
<p>&nbsp;&nbsp;&nbsp; 同学"'大数据'的博士"周五来电, 问我要不要跟她一起做个'图像搜索', 有些犹豫, 要说三年前, 也许就干了, 但现在...再转次嘛...</p>
<p>&nbsp;&nbsp;&nbsp; 恰逢I;P敲完, 心烦意乱的一周, 只好赶紧抓起SnakeGo来, 夜夜疯敲, 来安抚砰砰躁动的心...是的, 至少敲字可以让自己平静些...</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 吐槽而已, 这里想说 ---- 程序员们啊, 转行要趁着年轻赶紧啊...</p><img src ="http://www.cppblog.com/codejie/aggbug/207007.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2014-05-18 19:24 <a href="http://www.cppblog.com/codejie/archive/2014/05/18/207007.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>随笔 : Do you remember Turbo Basic?</title><link>http://www.cppblog.com/codejie/archive/2014/05/13/206952.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 13 May 2014 15:29:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2014/05/13/206952.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/206952.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2014/05/13/206952.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/206952.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/206952.html</trackback:ping><description><![CDATA[<p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 老爷子心不老, 依然在勤勤恳恳地敲着书和代码...没错, 就是source code. 像老爷子这样的老一辈会用电脑的都不多, 而我亲爱的老爷子那是会Turbo Basic的顶尖高手啊...每次想到这个, 内心都倍感自豪...</p> <p>&nbsp;&nbsp;&nbsp; 当年的"窗口"编程极其繁琐, 如果不看看那一套&lt;Win32 API大全&gt;, 再加上个&lt;Visual C++技术内幕&gt;, 都不保证能敲个Window出来, 什么HWND, hInstance, 以及乱七八糟的各类窗口和消息的struct...反正我是早早就忘光光了...想想现在在的Android上弄个"窗口"出来, 那,那真是"太小儿科"了...</p> <p>&nbsp;&nbsp;&nbsp; 呃, 跑远了...我意思是 ---- 老爷子止步于Windows编程, 各类代码全部运行在DOS下. 随着Windows的不断改进, 终于, Windows下再也不能运行老爸手中的无敌神器 -- Turbo Basic了...</p> <p>&nbsp;&nbsp;&nbsp; 曾跟老爷子说过, 将他的代码都移至到Android上, 但老爷子不同意, 因为, 他老人家还要改些参数的, 改些参数, 些参数, 参数...看着老爷子在Win7上装个VM跑XP再打开Command窗口运行Turbo Basic, 甚是辛苦. 作为知原理, 会Google的程序员我来说, 帮老爷子弄个DOS虚拟环境来跑TB.EXE, 那是必须的...</p> <p>&nbsp;&nbsp;&nbsp; 于是就有了下面的截图.</p> <p>&nbsp;</p> <p><img title="dos" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: left; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="dos" align="left" src="http://www.cppblog.com/images/cppblog_com/codejie/Windows-Live-Writer/--Do-you-remember-Turbo-Basic_1430F/dos_7b309b75-e548-4f42-9074-4736d3863e5f.png" width="441" height="298">&nbsp;<img title="tb" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="tb" src="http://www.cppblog.com/images/cppblog_com/codejie/Windows-Live-Writer/--Do-you-remember-Turbo-Basic_1430F/tb_b8f6ea6d-a331-4016-9c36-82af73b35804.png" width="442" height="296"></p> <p>&nbsp;</p> <p>&nbsp;&nbsp; <strong><a href="http://www.dosbox.com/">DosBox</a></strong></p><img src ="http://www.cppblog.com/codejie/aggbug/206952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2014-05-13 23:29 <a href="http://www.cppblog.com/codejie/archive/2014/05/13/206952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LIBGDX : version 1.0.1!</title><link>http://www.cppblog.com/codejie/archive/2014/05/12/206929.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Mon, 12 May 2014 13:24:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2014/05/12/206929.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/206929.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2014/05/12/206929.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/206929.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/206929.html</trackback:ping><description><![CDATA[<p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 创建SnakeGo工程的时候, 忽然发现一个'天大'的新闻 -- <a href="http://libgdx.badlogicgames.com/news.html">Libgdx竟然1.0.1版</a>了!!! 无数个0.99版的日子里, 一直认为这版本就要变成永恒了...</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 昨天把I;P的<a href="https://play.google.com/store/apps/details?id=jie.android.ip.release">Release版本</a>终于提交上去了, 总算完成了自己的一个目标 -- 发布一个Game应用! (EL是第一个目标 -- 发布<a href="https://play.google.com/store/apps/details?id=jie.android.el">一个App应用</a> :) )</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 所以昨晚终于可以开始敲第二个Game了, 就是前面说到的, 可以作弊的无脑游戏 -- SnakeGo ! 这样就再也不怕因为IQ过低而在群里被刺激了 -- '再笑我就开无敌状态了,灭哈哈'(台词都想好了....), 所以, 现在终于知道一个游戏界的'潜规则'&nbsp; -- "可以作弊"是必须的! (I;P没法作弊, 这,这是多么'痛'的领悟啊....)</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 好吧, 不就是1.0.1嘛,再学习一次就是了...</p><img src ="http://www.cppblog.com/codejie/aggbug/206929.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2014-05-12 21:24 <a href="http://www.cppblog.com/codejie/archive/2014/05/12/206929.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>随想: 业余游戏开发者对阿里手游平台的&amp;quot;瞎&amp;quot;想</title><link>http://www.cppblog.com/codejie/archive/2014/01/10/205276.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 10 Jan 2014 09:15:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2014/01/10/205276.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/205276.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2014/01/10/205276.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/205276.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/205276.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 前两天看到阿里也出手游平台了. 对于我这样野生的业余游戏开发爱好者来说, 算是多了个可以选择的平台. 想着借助阿里的这个手游平台, 咱就可以做个这样的游戏 --</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 虚拟逛街 : 穿行与虚拟化的店铺间, 通过广告什么的, 来找指定商品, 或者参加什么的活动, 完成后, 获得一定的金币, 积分或者成就什么的, 然后就可以在-- 真正的实体店铺或taobao店中折价购买或者免费获得商品. </p> <p>&nbsp;&nbsp;&nbsp; 你看这创意如何? 想来阿里肯定会通过这个平台<strong>打通这条虚拟游戏到实体交易的通道</strong>的. 那么这个平台到底会如何实现这个通道呢? 于是赶紧去找 -- 才发现, 在新闻稿中还有个关键字我没有看清 -- "将". 好吧, 我心急了, 原来阿里的这个平台还没有开放呢. 那么也好, 作为业余游戏开放者, 可以好好想想, 到底想要个怎样的手游平台呢?</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 关于阿里这个平台的是是非非已经在各大主站的帖子已经够多了, 今天不说哪些, 只从我 --&nbsp; 一个纯粹的业余游戏程序员自身情况和理解来说...</p> <p>&nbsp;&nbsp;&nbsp; 平台只是一个概念, 而且<strong>对于开发者来说, 平台就是一片浮云, 而真正能看到的, 真正想要的都是些实实在在的东西 ---- APIs. </strong>一个平台能够为应用带来什么样的接口支撑才是最最终于的参数.</p> <p>一. 平台情况</p> <p>&nbsp;&nbsp;&nbsp; 因为对于游戏只是个业余人事, 平常还真没太关注过各大平台, 今天根据这次新闻提到的几项"指标"做了下比较.(最后一列不在其中, 只是本贴需要)</p> <table cellspacing="0" cellpadding="2" width="643" border="2"> <tbody> <tr> <td valign="top" width="73">&nbsp;</td> <td valign="top" width="63">优势</td> <td valign="top" width="99">云服务</td> <td valign="top" width="98">支付</td> <td valign="top" width="84">虚拟货币</td> <td valign="top" width="65">用户群</td> <td valign="top" width="157">开放平台/APIs</td></tr> <tr> <td valign="top" width="75">阿里</td> <td valign="top" width="63">交易</td> <td valign="top" width="99">阿里云<br></td> <td valign="top" width="98">支付宝</td> <td valign="top" width="84">?</td> <td valign="top" width="65">淘宝</td> <td valign="top" width="157">?</td></tr> <tr> <td valign="top" width="77">百度</td> <td valign="top" width="63">内容</td> <td valign="top" width="99">百度云<br></td> <td valign="top" width="98">百度钱包</td> <td valign="top" width="84">?</td> <td valign="top" width="65">?</td> <td valign="top" width="157"><a href="http://open.baidu.com">open.baidu.com</a><br>个人数据存储<br>推送<br>第三方账户登录<br>社会化分享<br>移动统计</td></tr> <tr> <td valign="top" width="79">腾讯</td> <td valign="top" width="63">社交</td> <td valign="top" width="99">腾讯云</td> <td valign="top" width="98">财付通</td> <td valign="top" width="84">Q币</td> <td valign="top" width="65">QQ<br>微信</td> <td valign="top" width="157"><a href="http://open.qq.com">open.qq.com</a><br>用户信息<br>关系链类<br>应用推广<br>支付<br>营销</td></tr></tbody></table> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 如上表可以看出, 其实各个平台该有的都有了, 没有的也都没有(这话说的..) . 图表中也没包含像360, 网易等, 并不是说他们的手游平台不强大, 这里只是做个对比表, 各个的fans表认真了.</p> <p>&nbsp;&nbsp;&nbsp; 好了, 现在说重点...实际作为一个业务开发者, 我最关心的是表中最后一列 -- "开放平台/APIs" . 阿里平台还找不到, 所以空着了, 当然这也正是我们可以"瞎"想的地方. 我们来看看其它两个平台主要提供的APIs.</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 百度: </p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 没有自己的用户群, 没有支付方向(不是通道), 所以更多地在"默默"地干着"实事", 像推送, 数据存储等(做为开发者, 我比较欣赏百度提供的这些API);</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 腾讯: </p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 依托庞大的的用户群, 其APIs更倾向与社交交互和业务推广, 但多年通过Q币培养起来的"内购"倾向, 所以也有专门的支付接口;</p> <p>&nbsp;&nbsp;&nbsp; 那么, 我们推测(希望)阿里平台会有怎么的APIs提供呢? 话说阿里有taobao, 支付宝, 再加上个号称"第一"的阿里云, 这要是三个都打通了, 确实能把腾讯下个一大跳. 但阿里在社交上不是强项, 虽然强推了半年多的"来往", 感觉还是晚了, 似乎一段时间内完全不在微信的眼里. 那么早期应该更关注"交易"和"支付"相关的APIs; 但作为后起的平台, 也不得不考虑下如何吸引和扶持开发者. 所以,</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 阿里: </p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. 买家登录/管理<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. 商家登录/管理<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. 商家访问<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4. 商品管理/展示/访问<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5. 安全支付/内购接口<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6. 消息/广告推送<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7. 事件记录/触发</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8. 应用数据存储<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9. 应用数据分析/管理</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 够多了, 这真是"站着说话不腰疼"不是...好了, 那么作为一个野生的业余游戏开发者来说"急切"的"最低"需要什么呢? </p> <p>二. 个人开发者需求</p> <p>&nbsp;&nbsp;&nbsp; 实际作为野生的,独立的,业余的游戏开发者来说, 多数应该被限制在"小"项目中, 那么作为平台, 提供的服务/支撑越丰富, 越灵活就受欢迎. 因此, 从"小"项目的共性来看, 希望平台能提供如下支持.</p> <blockquote> <p>1. 平台服务</p> <p>&nbsp;&nbsp;&nbsp; a. 应用发布: 这个是必须的不是?</p> <p>&nbsp;&nbsp;&nbsp; b. 应用数据统计与分析: 通过收集到的应用数据, 如安装数量, 安装分布等信息, 可以非常有效地为应用自身改善提供数据参考;</p> <p>&nbsp;&nbsp;&nbsp; c. 广告管理: 应用的广告接入与过滤;</p> <p>&nbsp;&nbsp;&nbsp; d. 钱包管理: 应用收入情况展示与分析, 内购数据管理;</p> <p>&nbsp;&nbsp;&nbsp; e. 信息推送: 就是GCM的功能, 但要能弄个群发支持的话, 阿里云应该搞定;</p> <p>&nbsp;&nbsp;&nbsp; f. 应用共性数据需求支持: 例如应用的排行榜数据的存储和展示, 成就数据设置与触发, 应用的配套论坛/IM等SNS平台等(阿里云就在那里, 是不是呢?);</p> <p>&nbsp;</p> <p>2. APIs支持</p> <p>&nbsp;&nbsp;&nbsp; a. 用户数据访问: 支持用户登录, 获取用户自身数据;</p> <p>&nbsp;&nbsp;&nbsp; b. 商家数据访问: 获取商家信息;</p> <p>&nbsp;&nbsp;&nbsp; c. 商品数据访问: 获取商品信息;</p> <p>&nbsp;&nbsp;&nbsp; d. 支付宝接口: 支持用户购买商品;</p> <p>&nbsp;&nbsp;&nbsp; e. 内购接口:&nbsp; 支持用户购买应用内商品(这个跟支付宝接口应该不一样);</p> <p>&nbsp;&nbsp;&nbsp; f. 广告接口: 实现传统的哪种广告发布的接口就好;</p> <p>&nbsp;&nbsp; g. 消息/事件推送接口: 支持通过应用的服务端下发消息/事件到应用;</p></blockquote> <p>&nbsp;&nbsp;&nbsp; 嗯, 这些应该够了(实际目前我的游戏只需要其中一条..), 腰不疼... 多用户交流, 用户状态数据维持什么的, 那是高级开发者想要的了, 他们应该自己可以搞定这些了. 新闻中,阿里的8:2分成方式是对开发者的扶持, 实际也有挖墙脚之嫌, 但, 如果平台的功能灵活强大, 2:8的分成一样可以引人入伙不是?</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 说到对开发者的扶持, 或者叫做拉人下水也好, 反正都是为了增加人气不是? 那么阿里可以考虑下下面的法子.</p> <p>三. 扶持</p> <blockquote> <p>1. 交流平台</p> <p>&nbsp;&nbsp;&nbsp; 开发中心, 交流论坛什么的, 各种流行的模式也没啥好说的. 很多时候, 我觉得一个好的交流平台不仅给开发者"家"的温暖感觉, 反倒是能提供找个解决问题地方, 而减少挫败感来的更重要 -- 话说, 难道你不喜欢<a href="http://stackoverflow.com/"><font color="#0066cc">stackoverflow.com</font></a>吗?</p> <p>2. 虚拟团队组建</p> <p>&nbsp;&nbsp;&nbsp; 不得不承认, 当下的游戏不再是一个人可以搞定的. 至少如我这样的, 只会code, 完全不懂PS的程序员, 敲打出来的游戏基本都是用来"吓人"的. 但目前看, 咱这种野生的业余程序员还混不到游戏队伍中, 所以...为何不出头考虑建立虚拟团队的方案呢? </p> <p>&nbsp;&nbsp;&nbsp; 杭州在动漫方面也算前例, 敲代码的也以万计, 而多数的小游戏都是"短平快"的项目, 所以呢...当创新出现时, 阿里只需派个兼职的PM出来, 协调组建个临时团队, 引导团队使用自身平台, 协助应用创建发布什么的...这对于业余游戏开发者和平台自身来说, 不是一件功德无量, 一石多鸟, 普大喜奔的好事吗?</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; </p></blockquote> <p>&lt;---- 求扩散的分割线 ----&gt;</p> <p>&nbsp;&nbsp;&nbsp; 都说隔六个人就可以跟奥巴马搭上关系, 要是觉得"瞎"想的有些道理, 那就扩散它吧, 说不定就能被某个做平台的大佬看到, 然后还真的这么做了, 那, 那咱这样的的野生业余游戏开发者们就可以笑醒了啊不是....</p> <p><a href="http://news.cnblogs.com/n/197674/"><font color="#0066cc"></font></a></p><img src ="http://www.cppblog.com/codejie/aggbug/205276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2014-01-10 17:15 <a href="http://www.cppblog.com/codejie/archive/2014/01/10/205276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : 违规?!</title><link>http://www.cppblog.com/codejie/archive/2013/11/16/204278.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Sat, 16 Nov 2013 13:39:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/11/16/204278.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/204278.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/11/16/204278.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/204278.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/204278.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 上周"意外"收到一份LingosHook捐赠, 因为之前的已是半年前的事情了...</p> <p>&nbsp;&nbsp;&nbsp; "欣喜若狂"发货后, 今天查看状态发现, LingosHook捐赠插件竟然被"违规"删除了...忽然来了感慨: 捐赠者, 感谢你下手比taobao快, 嘿嘿... 于是"赶紧"删除"违规"字眼, 重新发布上去...</p> <p><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://www.cppblog.com/images/cppblog_com/codejie/Windows-Live-Writer/7f828eaccb6c_12C92/image_8321217c-d04d-47f6-91c5-d30612b0471f.png" width="440" height="198" /></p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; LingosHook从开始敲打到今天已四年的时间了, 这里感谢各位捐赠者, 各位使用者, 感谢你们的支持和使用 !</p><img src ="http://www.cppblog.com/codejie/aggbug/204278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-11-16 21:39 <a href="http://www.cppblog.com/codejie/archive/2013/11/16/204278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EL : Saving Battery</title><link>http://www.cppblog.com/codejie/archive/2013/08/22/202692.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 21 Aug 2013 16:28:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/08/22/202692.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/202692.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/08/22/202692.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/202692.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/202692.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 下班路上用EL听ESL, 没到家电池就没了...<br />
&nbsp; &nbsp; 下了车, 边走边算计着 -- 应该是高亮全开看小说(现在换成&lt;冰与火之歌&gt;了..)导致没电的, 但为啥以前不用EL时, 听个ESL不会没电呢...会不会EL比较耗电?<br />
<br />
&nbsp; &nbsp; 晚上火力全开, 反省代码 -- 一个异步线程, 用于通知UI更新播放轨迹的, 后台播放时也在不停的running... <br />
&nbsp; &nbsp; 这个线程本身就是sleep()个几百毫秒, 然后通知UI更新下音频播放的位置. 虽没有数据表明这样的'轻'线程会消耗多大电量, 但本着有CPU跳动, 就会有电量消耗的原则, 改了...<br />
<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->&nbsp; &nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;TickCounterTask&nbsp;<span style="color: #0000FF; ">extends</span>&nbsp;AsyncTask&lt;Void,&nbsp;Void,&nbsp;Void&gt;&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">protected</span>&nbsp;Void&nbsp;doInBackground(Void<img src="http://www.cppblog.com/Images/dot.gif" alt="" />&nbsp;arg0)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(isAudioPlaying&nbsp;&amp;&amp;&nbsp;listener&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listener.onPlaying(player.getCurrentPosition());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.sleep(777);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(InterruptedException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(DeadObjectException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listener&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(RemoteException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">null</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</div><br />&nbsp; &nbsp; 加了listener != null的条件, 这样当UI被切换到后台是, 取消listener, 异步线程即被终止. 嘿嘿, 省了...<br /><br />&nbsp; &nbsp; 终端设备上的app不比PC机的, 除了要考虑UI, Screen Size等问题外, 电量消耗也是必须的啊, 总不能让人为了一个app, 随身背上个三块电板不是? 再说, CPU占多了, 真的很'烫'手啊...<img src ="http://www.cppblog.com/codejie/aggbug/202692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-08-22 00:28 <a href="http://www.cppblog.com/codejie/archive/2013/08/22/202692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EL : getPrev() and getNext()</title><link>http://www.cppblog.com/codejie/archive/2013/08/20/202681.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 20 Aug 2013 15:35:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/08/20/202681.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/202681.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/08/20/202681.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/202681.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/202681.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 早上一朋友问, EL如果支持删除某个课程, 还怎么能支持getPrev()和getNext()? 我很奇怪, 为啥不能呢? 他说, 因为EL的课程号是不连续的, 那么应该是靠连续的记录ID继续上下索引的, 那么当删除某个记录时, 导致ID不连续, 也就不能正常Navigate了, 是不? 除非删除后, 一个一个'搬', 以包装连续.&nbsp;听他说完, 忽然感到轻松 -- 原来'笨蛋'不止我一个啊...<br />&nbsp; &nbsp; 在实现EL对记录的getPrev()和getNext()时, 我也为EL的记录表中没有一个连续的记录ID而郁闷 -- 没有个连续ID, 而课程号本身又不连续, 咋不呢? 那时都还没考虑删除的问题呢. 郁闷地去睡觉, 半夜惊醒才想起, 没有连续记录ID就是设计是觉得这个ID跟课程号在一起太冗余才去掉的, 而getPrev()/getNext(), 完全靠课程号就能搞定的啊, 代码敲的都忘记自己的初衷了, SQL语句也白学了...<br /><br />&nbsp; &nbsp; 于是我把下面ELContentProvider的片段发给他, 并加了句 -- '你咋跟我一样笨呢...'<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp; @Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;Cursor&nbsp;query(Uri&nbsp;uri,&nbsp;String[]&nbsp;projection,&nbsp;String&nbsp;selection,&nbsp;String[]&nbsp;selectionArgs,&nbsp;String&nbsp;sortOrder)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;res&nbsp;=&nbsp;matcher.match(uri);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;table&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">switch</span>&nbsp;(res)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cppblog.com/Images/dot.gif" alt="" /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_ITEM_EL_ESL_RANDOM:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;=&nbsp;elDBAccess.getReadableDatabase();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table&nbsp;=&nbsp;"esl";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sortOrder&nbsp;=&nbsp;"random()&nbsp;limit&nbsp;1";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_ITEM_EL_ESL_NEXT:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_ITEM_EL_ESL_PREV:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_ITEM_EL_ESL_FIRST:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">case</span>&nbsp;MATCH_ITEM_EL_ESL_LAST:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(res&nbsp;==&nbsp;MATCH_ITEM_EL_ESL_NEXT)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selection&nbsp;=&nbsp;"idx&gt;"&nbsp;+&nbsp;ContentUris.parseId(uri);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sortOrder&nbsp;=&nbsp;"idx&nbsp;asc";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(res&nbsp;==&nbsp;MATCH_ITEM_EL_ESL_PREV)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selection&nbsp;=&nbsp;"idx&lt;"&nbsp;+&nbsp;ContentUris.parseId(uri);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sortOrder&nbsp;=&nbsp;"idx&nbsp;desc";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(res&nbsp;==&nbsp;MATCH_ITEM_EL_ESL_FIRST)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selection&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sortOrder&nbsp;=&nbsp;"idx&nbsp;asc";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selection&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sortOrder&nbsp;=&nbsp;"idx&nbsp;desc";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;=&nbsp;elDBAccess.getReadableDatabase();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;db.query("esl",&nbsp;projection,&nbsp;selection,&nbsp;<span style="color: #0000FF; ">null</span>,&nbsp;<span style="color: #0000FF; ">null</span>,&nbsp;<span style="color: #0000FF; ">null</span>,&nbsp;sortOrder,&nbsp;"1");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cppblog.com/Images/dot.gif" alt="" /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cppblog.com/Images/dot.gif" alt="" /><br />&nbsp;&nbsp;&nbsp;&nbsp;}</div>&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp;记录在此, 提醒自己保持清醒...<img src ="http://www.cppblog.com/codejie/aggbug/202681.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-08-20 23:35 <a href="http://www.cppblog.com/codejie/archive/2013/08/20/202681.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EL : Fragment and FragmentManager</title><link>http://www.cppblog.com/codejie/archive/2013/08/11/202459.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Sun, 11 Aug 2013 02:08:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/08/11/202459.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/202459.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/08/11/202459.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/202459.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/202459.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 考虑到为了减少UI的'刷新效果',EL使用Fragment来代替常规的Activity方式.<br />&nbsp; &nbsp; Fragment代替Activity的好处很多,比如没有不同UI间切换的'闪动',视觉是上也有加快显示的效果.但这种效果也是有代价的, 大量Activity方式下的工作,在Fragment时,不得不自己来实现,比如UI的'压栈'等等.<br />&nbsp; &nbsp; 这里记录下EL实现中,碰到的跟Fragment相关的问题. (Fragment相关文档的<a href="http://developer.android.com/guide/components/fragments.html">官方链接在这里</a>)<br /><br />&nbsp; &nbsp; 1. 参数传递<br />&nbsp; &nbsp; &nbsp; &nbsp; Activity切换时,可以在StartActivity()时,通过Intent的方式将所需参数传递给下一个Activity. 但在Fragment方式下就不行了,此时可使用/参考Fragment支持的setArguments()和getArguments(). EL中所有Fragment都继承于BaseFragment,在显示Fragment时,使用设计的OnArgument()接口传递参数.<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp; &nbsp; &nbsp; fragment.onArguments(args);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragmentManager.beginTransaction().show(fragment).commit();</div><br />&nbsp; &nbsp; 2. 界面切换<br />&nbsp; &nbsp; &nbsp; &nbsp; FragmentManager是用于管理Fragment的类,通过内部的FragmentTranscation对象实现Fragment的加载/显示/隐藏/移除等操作. EL实现中,使用FragmentSwitcher类封装了FrangmentManager,以实现某些更灵活的Fragment管理,比如某些Fragment在被切换是需要删除,而其他的仅需要隐藏等操作.<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">enum</span>&nbsp;Type&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIST("list",&nbsp;<span style="color: #0000FF; ">false</span>),&nbsp;SHOW("show",&nbsp;<span style="color: #0000FF; ">false</span>),&nbsp;ABOUT("about",&nbsp;<span style="color: #0000FF; ">true</span>),&nbsp;SETTING("setting",&nbsp;<span style="color: #0000FF; ">true</span>),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOWNLOAD("download",&nbsp;<span style="color: #0000FF; ">true</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;String&nbsp;title;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;removed;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;Type(<span style="color: #0000FF; ">final</span>&nbsp;String&nbsp;title,&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;removed)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.title&nbsp;=&nbsp;title;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.removed&nbsp;=&nbsp;removed;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;getTitle()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;title;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;hasRemoved()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;removed;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;Type&nbsp;getType(<span style="color: #0000FF; ">final</span>&nbsp;String&nbsp;title)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(title.equals(LIST.getTitle()))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;LIST;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(title.equals(SHOW.getTitle()))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;SHOW;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}</div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;show(Type&nbsp;type,&nbsp;Bundle&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(curType&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(curType&nbsp;==&nbsp;type)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((BaseFragment)&nbsp;fragmentManager.findFragmentByTag(type.getTitle())).onArguments(args);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hide(curType);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BaseFragment&nbsp;fragment&nbsp;=&nbsp;(BaseFragment)&nbsp;fragmentManager.findFragmentByTag(type.getTitle());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(fragment&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragment&nbsp;=&nbsp;create(type);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(fragment&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">false</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragment.onArguments(args);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragmentManager.beginTransaction().show(fragment).commit();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curType&nbsp;=&nbsp;type;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;}</div><br />&nbsp; &nbsp; 3. Fragment的栈<br />&nbsp; &nbsp; &nbsp; &nbsp; Activity在切换时,通常情况下可以通过BACK键返回前一个Activity,是因为存在一个'栈'来存放前面的Activity. Fragment也有栈的概念,但在操作上就需要自己主动调用了 -- Fragment隐藏时,压栈; Fragment退出时,出栈.<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;hide(Type&nbsp;type)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BaseFragment&nbsp;fragment&nbsp;=&nbsp;(BaseFragment)&nbsp;fragmentManager.findFragmentByTag(type.getTitle());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(fragment&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(type.hasRemoved())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragmentManager.beginTransaction().remove(fragment).commit();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FragmentTransaction&nbsp;ft&nbsp;=&nbsp;fragmentManager.beginTransaction();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ft.addToBackStack(type.getTitle());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ft.hide(fragment);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ft.commit();<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragmentManager.beginTransaction().hide(fragment).commit();</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curType&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}</div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;showPrevFragment()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;count&nbsp;=&nbsp;fragmentManager.getBackStackEntryCount();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(count&nbsp;&gt;&nbsp;0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;name&nbsp;=&nbsp;fragmentManager.getBackStackEntryAt(count&nbsp;-&nbsp;1).getName();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragmentManager.popBackStack();<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;.popBackStackImmediate();</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;type&nbsp;=&nbsp;Type.getType(name);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(type&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show(type);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">false</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;}</div><br /><br />&nbsp; &nbsp; 总的来说,Fragment要想用着方便,自己使用FragmentSwitcher和BaseFragment来封装下FragmentManager和Fragment还是不错的选择.<br /><br />&nbsp; &nbsp; Fragment看起来很美,用起来真是发疯啊.上面这些都是实现EL中碰到的问题,这里做下记录,怕回头又忘记'痛苦地翻文档'的日子...<br /><br />&nbsp; &nbsp; 另,EL基本完工,这两天可发布Alpha版了...<br /><img src ="http://www.cppblog.com/codejie/aggbug/202459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-08-11 10:08 <a href="http://www.cppblog.com/codejie/archive/2013/08/11/202459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC: Demo Dictionary v2 : extend the expiration again..</title><link>http://www.cppblog.com/codejie/archive/2013/07/16/201879.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 16 Jul 2013 14:29:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/07/16/201879.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/201879.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/07/16/201879.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/201879.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/201879.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 先不说废话,重新编译的包在这里,<a href="https://code.google.com/p/lingoshook/downloads/detail?name=DemoDictionaryOfLAC2.apk">需要你就点吧</a>...这次过期点设置在10/31/2013,到时还是希望各位能关注下LAC2...(首先要有..是不..唉,打脸!) 说明查看这里<a href="http://www.cppblog.com/codejie/archive/2013/02/13/197822.html">V1</a>,&nbsp;<a href="http://www.cppblog.com/codejie/archive/2013/04/06/199142.html">V2</a>.<br /><br />&nbsp; &nbsp; 这个Demo设置个超期,目的是为了促使自己赶紧敲完LAC2,实际我真的在敲,几乎每晚都在敲的(周末'法定'放假的哦...),也有所小成,不信看下图...<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac2-1.png" border="0" alt="" width="288" height="480" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac2-2.png" border="0" alt="" width="288" height="480" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac2-3.png" border="0" alt="" width="288" height="480" /><br /><br />&nbsp; &nbsp; <br />&nbsp; &nbsp; 但,某天公交上正听着ESL,看着&lt;蜀山剑侠传&gt;时,忽然就那么一闪(不是闪腰了..) -- 为啥不将ESL和LAC合并起来做个应用呢?这样既可以看其文本,又可以实时查询不认识的单词.&nbsp;说干就干,所以啊...LAC2就停了...实在不好意思啊...<br /><br />&nbsp; &nbsp; 尽量一个月内搞定这个EL,然后再LAC2. 不过LAC2可能还有晚点敲,因为我打算试试能不能靠EL把下半年和明年的点卡赚出来..(私房钱难存啊,LingosHook的捐赠早被败光了...)所以估计要连续改几个版本才行...<br />&nbsp; &nbsp; 目前EL还不是个样子...<br />&nbsp; &nbsp;<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/el-1.png" border="0" alt="" width="288" height="480" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/el-2.png" border="0" alt="" width="288" height="480" /><br /><br /><br /><br /><br />&lt;----- 想不起的分割线 -----&gt;<br />&nbsp; &nbsp; 基本每天都会来看看这里,或者回复下吐槽,或者发个帖子吐槽...今天突然发现竟然又快整整一个月一篇未发,堕落啊...<br />&nbsp; &nbsp; 可能是白天工作忙,晚上敲字忙,又没人来吐槽,也就懒了...今天算交代下近况---<strong>还喘气,能敲字</strong>...<br />&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; 这半年天天java,敲的不亦乐乎,LingosHook的问题基本当不存在, 也导致经常问自己,是不是该直接<strong>转行去做android应用</strong>呢?唉,纠结的很...<img src ="http://www.cppblog.com/codejie/aggbug/201879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-07-16 22:29 <a href="http://www.cppblog.com/codejie/archive/2013/07/16/201879.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android DEV : get AttributeSet from XML resource</title><link>http://www.cppblog.com/codejie/archive/2013/06/19/201137.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 18 Jun 2013 16:00:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/06/19/201137.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/201137.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/06/19/201137.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/201137.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/201137.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 这两天在练习个Android应用,需要创建一些自定义的View,实际每个View都是很简单的封装或者继承,但每个的Attribute都要一一配置,很是麻烦.<br />
&nbsp; &nbsp; 写一半时,忽然想起,这些Attributes都是可以从XML资源文件加载的啊...土了一把,赶紧删了全部代码,重写了...(又土了一把...)<br />
<br />
&nbsp; &nbsp; 虽然很早就知道这个,但却从来没写过,错了无数次,终于发现问题了,于是封装个Utils方法,供以后调用...<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->&nbsp; &nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;AttributeSet&nbsp;getAttributeSet(Context&nbsp;context,&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;String&nbsp;className,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;resId)&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XmlResourceParser&nbsp;p&nbsp;=&nbsp;context.getResources().getXml(resId);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;state&nbsp;=&nbsp;XmlResourceParser.START_DOCUMENT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">do</span>&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;=&nbsp;p.next();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(state&nbsp;==&nbsp;XmlResourceParser.START_TAG)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(p.getName().equals(className))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;Xml.asAttributeSet(p);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(XmlPullParserException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(IOException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(state&nbsp;!=&nbsp;XmlResourceParser.END_DOCUMENT);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">null</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</div><br /><br />&nbsp; &nbsp; 说明下啊,当前本人java代码仅作记录,不负责的...原因你懂的...强力建议大家吐槽...嘿嘿...<img src ="http://www.cppblog.com/codejie/aggbug/201137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-06-19 00:00 <a href="http://www.cppblog.com/codejie/archive/2013/06/19/201137.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android DEV : Amazing Theme and Style</title><link>http://www.cppblog.com/codejie/archive/2013/05/10/200157.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 10 May 2013 06:37:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/05/10/200157.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/200157.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/05/10/200157.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/200157.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/200157.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 工作上需要动态改变app字体大小,而我的LAC也可能需要这个,于是半公半私地看起来...google了很多页面,越发觉得Theme和Style神奇了...<br />
<br />
&nbsp; &nbsp; 咱也讲不好,还是直接放上几段代码做记录吧...<br />
<br />
&nbsp; &nbsp; styles.xml<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><br />
<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">resources</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">style&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="small_title_text"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:textSize"</span><span style="color: #0000FF; ">&gt;</span>22sp<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:textColor"</span><span style="color: #0000FF; ">&gt;</span>@color/color1<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:textStyle"</span><span style="color: #0000FF; ">&gt;</span>normal<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:paddingBottom"</span><span style="color: #0000FF; ">&gt;</span>5dip<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">style</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">style&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="small_body_text"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:textSize"</span><span style="color: #0000FF; ">&gt;</span>16sp<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:textColor"</span><span style="color: #0000FF; ">&gt;</span>@color/color1<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:textStyle"</span><span style="color: #0000FF; ">&gt;</span>normal<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:paddingBottom"</span><span style="color: #0000FF; ">&gt;</span>5dip<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">style</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">style&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="large_title_text"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:textSize"</span><span style="color: #0000FF; ">&gt;</span>40sp<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:textColor"</span><span style="color: #0000FF; ">&gt;</span>@color/color<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:textStyle"</span><span style="color: #0000FF; ">&gt;</span>normal<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:paddingBottom"</span><span style="color: #0000FF; ">&gt;</span>5dip<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">style</span><span style="color: #0000FF; ">&gt;</span><br />
<br />
&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">style&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="large_body_text"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:textSize"</span><span style="color: #0000FF; ">&gt;</span>20sp<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:textColor"</span><span style="color: #0000FF; ">&gt;</span>@color/color<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:textStyle"</span><span style="color: #0000FF; ">&gt;</span>normal<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="android:paddingBottom"</span><span style="color: #0000FF; ">&gt;</span>5dip<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">style</span><span style="color: #0000FF; ">&gt;</span><br />
<br />
&nbsp;&nbsp;<span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;Base&nbsp;application&nbsp;theme&nbsp;is&nbsp;the&nbsp;default&nbsp;theme.&nbsp;</span><span style="color: #008000; ">--&gt;</span><br />
&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">style&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="Theme"</span><span style="color: #FF0000; ">&nbsp;parent</span><span style="color: #0000FF; ">="android:Theme"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">style</span><span style="color: #0000FF; ">&gt;</span><br />
<br />
&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">style&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="Theme.Small"</span><span style="color: #FF0000; ">&nbsp;parent</span><span style="color: #0000FF; ">="Theme"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="textTitle"</span><span style="color: #0000FF; ">&gt;</span>@style/small_title_text<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="textBody"</span><span style="color: #0000FF; ">&gt;</span>@style/small_body_text<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">style</span><span style="color: #0000FF; ">&gt;</span><br />
<br />
&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">style&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="Theme.Large"</span><span style="color: #FF0000; ">&nbsp;&nbsp;parent</span><span style="color: #0000FF; ">="Theme"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="textTitle"</span><span style="color: #0000FF; ">&gt;</span>@style/large_title_text<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">item&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="textBody"</span><span style="color: #0000FF; ">&gt;</span>@style/large_body_text<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">style</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">resources</span><span style="color: #0000FF; ">&gt;</span></div>
<br />&nbsp; &nbsp; attrs.xml<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000FF; ">?&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">resources</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">attr&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="textTitle"</span><span style="color: #FF0000; ">&nbsp;format</span><span style="color: #0000FF; ">="reference"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">attr&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="textBody"</span><span style="color: #FF0000; ">&nbsp;format</span><span style="color: #0000FF; ">="reference"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">resources</span><span style="color: #0000FF; ">&gt;</span></div><br />&nbsp; &nbsp; main.xml<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">RelativeLayout&nbsp;</span><span style="color: #FF0000; ">xmlns:android</span><span style="color: #0000FF; ">="http://schemas.android.com/apk/res/android"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns:tools</span><span style="color: #0000FF; ">="http://schemas.android.com/tools"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;android:layout_width</span><span style="color: #0000FF; ">="match_parent"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;android:layout_height</span><span style="color: #0000FF; ">="match_parent"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;android:paddingBottom</span><span style="color: #0000FF; ">="@dimen/activity_vertical_margin"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;android:paddingLeft</span><span style="color: #0000FF; ">="@dimen/activity_horizontal_margin"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;android:paddingRight</span><span style="color: #0000FF; ">="@dimen/activity_horizontal_margin"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;android:paddingTop</span><span style="color: #0000FF; ">="@dimen/activity_vertical_margin"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;tools:context</span><span style="color: #0000FF; ">=".MainActivity"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">&gt;</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">TextView<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF0000; ">android:id</span><span style="color: #0000FF; ">="@+id/textView1"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;style</span><span style="color: #0000FF; ">="?textTitle"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:layout_width</span><span style="color: #0000FF; ">="wrap_content"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:layout_height</span><span style="color: #0000FF; ">="wrap_content"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:layout_alignParentLeft</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:layout_alignParentTop</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:text</span><span style="color: #0000FF; ">="@string/hello_world"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Button<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF0000; ">android:id</span><span style="color: #0000FF; ">="@+id/button1"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;style</span><span style="color: #0000FF; ">="?textBody"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:layout_width</span><span style="color: #0000FF; ">="match_parent"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:layout_height</span><span style="color: #0000FF; ">="wrap_content"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:layout_alignLeft</span><span style="color: #0000FF; ">="@+id/textView1"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:layout_below</span><span style="color: #0000FF; ">="@+id/textView1"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:layout_marginTop</span><span style="color: #0000FF; ">="14dp"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:text</span><span style="color: #0000FF; ">="ToggleButton"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br /><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">RelativeLayout</span><span style="color: #0000FF; ">&gt;</span></div><br />&nbsp; &nbsp; main.java<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp;&nbsp;<span style="color: #0000FF; ">protected</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;onButtonClick()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(toggle)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.setTheme(R.style.Theme_Large);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setContentView(R.layout.activity_main);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.setTheme(R.style.Theme_Small);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setContentView(R.layout.activity_main);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Button&nbsp;btn&nbsp;=&nbsp;(Button)&nbsp;<span style="color: #0000FF; ">this</span>.findViewById(R.id.button1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn.setOnClickListener(<span style="color: #0000FF; ">new</span>&nbsp;OnClickListener()&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;onClick(View&nbsp;arg0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onButtonClick();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toggle&nbsp;=&nbsp;!toggle;<br />&nbsp;&nbsp;&nbsp;&nbsp;}</div><br /><br />file://C:\Program Files\sdk\platforms\android-17\data\res<span style="font-size: 11px;"><br /></span><a href="http://developer.android.com/guide/topics/ui/themes.html">http://developer.android.com/guide/topics/ui/themes.html</a><span style="font-size: 11px;"><br /></span><a href="http://stackoverflow.com/questions/3241729/android-dynamically-change-style-at-runtime">http://stackoverflow.com/questions/3241729/android-dynamically-change-style-at-runtime</a><br /><br /><img src ="http://www.cppblog.com/codejie/aggbug/200157.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-05-10 14:37 <a href="http://www.cppblog.com/codejie/archive/2013/05/10/200157.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : Lingoes的x64版来了</title><link>http://www.cppblog.com/codejie/archive/2013/04/19/199573.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 19 Apr 2013 14:43:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/04/19/199573.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/199573.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/04/19/199573.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/199573.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/199573.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 一周不在线,Lingoes变成2.9.1了...不过也正常,一般新版本发布后马上就会来个"补丁版"...至少我是经常这样的...<br /><br />&nbsp; &nbsp; 是刚到家查看blog时,才发现Lingoes升级了,有跟帖说LingosHook没法Hook住新版了...我一直担心这个,不过一般'补丁'不会太大变化的,想来应该是个例.但还是赶紧下载来试试.一试啊,果然有不兼容问题了...<br />&nbsp; &nbsp; Lingoes出了个x64版,LingosHook是不支持64位版本的.为啥呢,简单啊,因为咱这水平,可以说完全'搞不清'什么x86,x64的区别...<br />&nbsp; &nbsp; 细想来应该是API有差异,还好,LingosHook还能继续兼容2.9.1的非x64版...哎,找个时间google下Hook相应的x64的APIs吧,希望只是API问题,不然只能再发个帖子说咱LingosHook不支持x64了...<br />&nbsp; &nbsp; (说到google,就想起以前的一个吐槽来,意思是说,google让程序员的世界变平了...)<img src ="http://www.cppblog.com/codejie/aggbug/199573.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-04-19 22:43 <a href="http://www.cppblog.com/codejie/archive/2013/04/19/199573.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC: Lingoes.XSL</title><link>http://www.cppblog.com/codejie/archive/2013/04/03/199083.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 03 Apr 2013 15:43:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/04/03/199083.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/199083.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/04/03/199083.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/199083.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/199083.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 这两天晚上在忙着修改LAC的Navite Dictionary演示程序,添加对多词典的支持;一来可以为后面LAC2的开发积累点经验,二来,也是主要原因是下个月我自己可能要用到...唉,自己敲的app,实际自己使用的时间不如敲打时间的百分之一...<br /><br />&nbsp; &nbsp; 这次支持了中文Vicon词典,敲字过程中碰到曾经没有考虑到很多问题,卡了我很多天.目前看除了那个DES加密破解不了外,像字符集编码,XML输出什么的都还能搞定,应该可以拿到LAC2中直接用了.当然那个cursor.MoveToFirst()死慢的问题估计需要到时重新设计下数据库表来解决了...<br /><br />&nbsp; &nbsp; 今天记录下对XSL的认识,唉,XML认识了那么久,从来没有好好静心研究过,这次算碰到钉子了...也好,搞明白了这个,在也不用自己分解XML再拼串输出了...不论对不对,贴上再说...(只是个draft,就给我自己看的..)<br /><br />&nbsp; &nbsp; 更新下,来张图先,使用xslt输出xml还是很cool的啊..(这单词代表我的心...)<br /><br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-xslt.png" /><br /><br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:stylesheet&nbsp;</span><span style="color: #ff0000">version</span><span style="color: #0000ff">="1.0"</span><span style="color: #ff0000">&nbsp;xmlns:xsl</span><span style="color: #0000ff">="http://www.w3.org/1999/XSL/Transform"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:output&nbsp;</span><span style="color: #ff0000">method</span><span style="color: #0000ff">='html'&nbsp;</span><span style="color: #ff0000">version</span><span style="color: #0000ff">='1.0'&nbsp;</span><span style="color: #ff0000">encoding</span><span style="color: #0000ff">='UTF-8'&nbsp;</span><span style="color: #ff0000">indent</span><span style="color: #0000ff">='yes'/&gt;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #ff0000">&lt;xsl:template&nbsp;match</span><span style="color: #0000ff">="<a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a>"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:apply-templates</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="W"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">SPAN&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="LINE-HEIGHT:&nbsp;150%;&nbsp;COLOR:&nbsp;#000000;&nbsp;FONT-SIZE:&nbsp;180%"</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">B</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:value-of&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="."</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">B</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">SPAN</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="D"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DIV&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="LINE-HEIGHT:&nbsp;120%;&nbsp;background-color:#cfddf0;&nbsp;COLOR:#000080;&nbsp;FONT-SIZE:&nbsp;100%"</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">B</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:value-of&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="."</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">B</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="C"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:for-each&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="F"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DIV&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="MARGIN:&nbsp;5px&nbsp;0px"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:apply-templates</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:for-each</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:if&nbsp;</span><span style="color: #ff0000">test</span><span style="color: #0000ff">="E"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DIV&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="MARGIN:&nbsp;4px&nbsp;0px;&nbsp;LINE-HEIGHT:&nbsp;150%;&nbsp;FONT-SIZE:&nbsp;100%"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">B</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Extension:</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">B</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">FONT&nbsp;</span><span style="color: #ff0000">COLOR</span><span style="color: #0000ff">="#229922"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:for-each&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="E"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:value-of&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="."</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:for-each</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">FONT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:if</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="H"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">SPAN&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="LINE-HEIGHT:&nbsp;120%;&nbsp;COLOR:&nbsp;#000000;&nbsp;FONT-SIZE:&nbsp;120%"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:apply-templates</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">SPAN</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="L"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DIV&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="MARGIN:&nbsp;0px&nbsp;0px&nbsp;5px;&nbsp;"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:value-of&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="."</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="M"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">FONT&nbsp;</span><span style="color: #ff0000">COLOR</span><span style="color: #0000ff">="#009900"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:value-of&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="."</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">FONT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">]<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="I"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DIV&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="MARGIN:&nbsp;0px&nbsp;0px&nbsp;5px"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:apply-templates</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="N"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DIV&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="MARGIN:&nbsp;4px&nbsp;0px;&nbsp;LINE-HEIGHT:&nbsp;120%;&nbsp;FONT-SIZE:&nbsp;120%"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:apply-templates</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="U"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">FONT&nbsp;</span><span style="color: #ff0000">color</span><span style="color: #0000ff">="#c00000"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:value-of&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="."</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">FONT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="x"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:apply-templates</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="h"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">I</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:value-of&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="."</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">I</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:stylesheet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span></div><img src ="http://www.cppblog.com/codejie/aggbug/199083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-04-03 23:43 <a href="http://www.cppblog.com/codejie/archive/2013/04/03/199083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java: 只有值传递</title><link>http://www.cppblog.com/codejie/archive/2013/02/08/197776.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 08 Feb 2013 02:56:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/02/08/197776.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/197776.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/02/08/197776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/197776.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/197776.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 又一次被Java的函数传参搞死...写段代码,纪念下...<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;jie.java.test;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;main&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;Holder&lt;T&gt;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;T&nbsp;value&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;Holder(T&nbsp;value)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.setValue(value);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;T&nbsp;getValue()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setValue(T&nbsp;value)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.value&nbsp;=&nbsp;value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;paramTest(Integer&nbsp;in,&nbsp;Holder&lt;Integer&gt;&nbsp;o)&nbsp;{<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&nbsp;=&nbsp;new&nbsp;Holder&lt;Integer&gt;(100);</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o.setValue(in);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp; &nbsp; &nbsp; &nbsp; Integer&nbsp;i&nbsp;=&nbsp;10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Holder&lt;Integer&gt;&nbsp;o&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Holder&lt;Integer&gt;(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paramTest(i,&nbsp;o);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("o&nbsp;=&nbsp;"&nbsp;+&nbsp;o.getValue());<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><img src ="http://www.cppblog.com/codejie/aggbug/197776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-02-08 10:56 <a href="http://www.cppblog.com/codejie/archive/2013/02/08/197776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android ROM : Enable to debug with DDMS</title><link>http://www.cppblog.com/codejie/archive/2013/02/01/197672.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 01 Feb 2013 15:13:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/02/01/197672.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/197672.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/02/01/197672.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/197672.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/197672.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp; &nbsp; 前天终于把G7归于名下,耐不住诱惑,直接刷到4.1.2了,感觉不错...&nbsp; &nbsp; 调试中,发现个问题 -- 在DDMS中没法使用File Explorer查看内容...这不是要命吗?咱就要用这个提取数据啊...&nbsp; &nbsp; 于是,研究发现,ROM安装脚本中恨有玄机啊...Code highlighting prod...&nbsp;&nbsp;<a href='http://www.cppblog.com/codejie/archive/2013/02/01/197672.html'>阅读全文</a><img src ="http://www.cppblog.com/codejie/aggbug/197672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-02-01 23:13 <a href="http://www.cppblog.com/codejie/archive/2013/02/01/197672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC : The Preview of Native Dictionary </title><link>http://www.cppblog.com/codejie/archive/2013/01/15/197302.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 15 Jan 2013 15:56:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/01/15/197302.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/197302.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/01/15/197302.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/197302.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/197302.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 今天是来秀当前LAC Native Dictionary的Demo应用的进展情况,顺便吐槽下...(好吧,实际今天就是来吐槽的..)<br /><br />&nbsp; &nbsp; 老规矩,先上图了~<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/ddoflac2_main.png" border="0" alt="" width="182" height="299" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/ddoflac2_abit.png" border="0" alt="" width="185" height="302" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/ddoflac2_zoo.png" border="0" alt="" width="182" height="301" /><br /><br />&nbsp; &nbsp; 当前Demo应用的基本架子和功能点都算完成了,等真正敲完估计就界面上再来点变化了...这次不鼓励大家提建议了,看吐槽先吧...<br /><br />&nbsp; &nbsp; (下面就是吐槽了...)<br /><br />&nbsp; &nbsp; 真的冷死了...怎么说呢?好吧--<strong>我本是一只来自北方的狼,在南方的冬天里</strong><strong>愣是</strong><strong>冻成了猴...</strong><br /><br />&nbsp; &nbsp; 这段时间可爱的宝宝越睡越早,而我却越睡越晚了,因此冬日的夜变得越来越长...按理应该有更大把的时间挥霍到敲字中,但~~冻僵的双手握着零下(室内)的刻度板,依然坚持刷'jandan',刷'wow',就是不敲一行LAC代码...<br />&nbsp; &nbsp; 不知为何,换了环境以后,反而失去了更多的往日激情,越来越多的是对自己这样敲字的怀疑和迷茫,每个冬夜都是在这种纠结中,敲打寥寥数行代码便草草commit了...<br /><br />&nbsp; &nbsp; 是因为全年没有做一个项目吗?<br />&nbsp; &nbsp; 是因为新的工作压力吗?<br />&nbsp; &nbsp; 是因为担忧自己的未来吗?<br />&nbsp; &nbsp; ...<br /><br />&nbsp; &nbsp; 有时真的担心沉沦在这种茫然中的我会不会'精神崩溃'...当然,也许只会是个'精神分裂'而已..唉...<br /><br />&nbsp; &nbsp; 希望这一切只是冬日带来的'淡淡忧伤'而已...这忧伤真的很伤人...<br />&nbsp; &nbsp; 希望自己尽快回归到'疯狂'敲字的时空中来...这时空穿越的不对...<br /><br />&nbsp; &nbsp; 这一切还只能靠自己'强大的精神力量'来纠正~~吐槽就是一种反击!<br /><br />&nbsp; &nbsp;&nbsp;吐槽结束~很抱歉LAC的这个Native Dictionary Demo应用拖拖拉拉这么久,咱们把责任推给这'冻成猴'的冬夜,会不会是个好理由呢?嘿嘿...<br />&nbsp; &nbsp; 好吧,无论怎样,哪怕是满手冻疮,我都保证敲完这个Demo!!! (透露个个人隐私----经历这么这么多的敲字的冬夜,咱竟然从没生过冻疮,嫉妒羡慕恨吗?嘿嘿...)<br /><br /><br /><img src ="http://www.cppblog.com/codejie/aggbug/197302.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-01-15 23:56 <a href="http://www.cppblog.com/codejie/archive/2013/01/15/197302.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>随笔: coding life</title><link>http://www.cppblog.com/codejie/archive/2012/11/15/195234.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 15 Nov 2012 07:42:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/11/15/195234.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/195234.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/11/15/195234.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/195234.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/195234.html</trackback:ping><description><![CDATA[<br /><br /><span style="font-size: 12pt;">codejie:&nbsp;</span><span style="font-family: 宋体; font-size: 12pt; line-height: 19px;">人生是个main(),可能会有许多精彩的function()调用,但终归还是要exit()的...<br /><br /></span><span style="font-family: 宋体; font-size: 12pt; line-height: 19px;">老大:&nbsp;</span><span style="font-family: 宋体; font-size: 12pt; line-height: 19px;">exit是胜利人生了，更多的是crash.<br /><br /><br /></span>老大就是老大,看待人生跟看待代码一样,依然是那么的深奥,那么的犀利...<br /><span style="font-family: 宋体; font-size: 12pt; line-height: 19px;"><br /></span><img src ="http://www.cppblog.com/codejie/aggbug/195234.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-11-15 15:42 <a href="http://www.cppblog.com/codejie/archive/2012/11/15/195234.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>随笔: 崩溃的Python</title><link>http://www.cppblog.com/codejie/archive/2012/11/05/194616.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Mon, 05 Nov 2012 09:05:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/11/05/194616.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/194616.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/11/05/194616.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/194616.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/194616.html</trackback:ping><description><![CDATA[<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000; ">#</span><span style="color: #008000; ">!/usr/bin/python</span><span style="color: #008000; "><br />
</span><br />
<span style="color: #0000FF; ">import</span>&nbsp;string<br />
<br />
l&nbsp;=&nbsp;[]<br />
<br />
<span style="color: #0000FF; ">class</span>&nbsp;A:<br />
&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;=&nbsp;[]<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__str__</span>(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;string.join(map(str,&nbsp;self.v))<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
l.append(A())<br />
l[0].v.append(1)<br />
l[0].v.append(2)<br />
l.append(A())<br />
l[1].v.append(3)<br />
<br />
<br />
<span style="color: #0000FF; ">print</span>&nbsp;l[0]<br />
<span style="color: #0000FF; ">print</span>&nbsp;l[1]</div>
<br />&nbsp; &nbsp; 作为搞C++的各位,你觉得上面的Python代码该输出什么? (我就不贴结果...猜哦...不行就跑下了,Python还是很好玩的...)<br /><br /><br />&lt;---- 公告分割线 ----&gt;<br />&nbsp; &nbsp; 1. 休假一周去北京见老爸老妈,基本不上网...<br />&nbsp; &nbsp; 2. LAC2今年没指望了...<br />&nbsp; &nbsp; 3. 体检结束,又胖了...<br />&nbsp; &nbsp; 4. WOW终于90,哇哈哈...<img src ="http://www.cppblog.com/codejie/aggbug/194616.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-11-05 17:05 <a href="http://www.cppblog.com/codejie/archive/2012/11/05/194616.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC : Lingoes-Extractor is powerful</title><link>http://www.cppblog.com/codejie/archive/2012/10/16/193392.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 16 Oct 2012 15:59:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/10/16/193392.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/193392.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/10/16/193392.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/193392.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/193392.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 又仔细分解了下<a href="http://Lingoes-Extrator.googlecode.com">Lingoes-Extractor</a>的代码,发现<a href="http://www.cppblog.com/codejie/archive/2012/10/16/193343.html">昨晚</a>弄错了...人家不是没有做到'细致'破解,人家只是'好心'将所有tag都strip掉了...下次是破解出的原始数据:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->abut&nbsp;=&nbsp;&lt;C&gt;&lt;E&gt;abuts|abutted|abutting&lt;/E&gt;&lt;F&gt;&lt;H&gt;&lt;M&gt;a&#183;but&nbsp;||&nbsp;ə'bʌt&lt;/M&gt;&lt;/H&gt;&lt;I&gt;&lt;N&gt;&lt;U&gt;v.&lt;/U&gt;&nbsp;&nbsp;邻接;&nbsp;紧靠;&nbsp;毗连&lt;/N&gt;&lt;/I&gt;&lt;/F&gt;&lt;/C&gt;</div><br />&nbsp; &nbsp; LD2文件中是通过自定义Tag来标示的,类似HTML格式,哇哈哈...这个,这个是咱的强项,咱有<a href="http://code.google.com/p/lingoshook/source/browse/branches/1.5.000/LingosHookApp/TinyHtmlParser.h">TinyHtmlParser</a>在手,就分解/隔离什么的,不麻烦人家了...<br /><br />&nbsp; &nbsp; LAC的Native Dictionary的有希望了...为减少开发时间(WOW中我才87级啊...)计划就用Lingoes默认的Vicon词典作为LAC词典的数据源了.<br /><br /><img src ="http://www.cppblog.com/codejie/aggbug/193392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-10-16 23:59 <a href="http://www.cppblog.com/codejie/archive/2012/10/16/193392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC : I hate encoded data.</title><link>http://www.cppblog.com/codejie/archive/2012/10/16/193343.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Mon, 15 Oct 2012 16:22:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/10/16/193343.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/193343.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/10/16/193343.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/193343.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/193343.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 昨晚敲好了LAC的Native Dictionary数据表, 今天准备放些数据进去,又是那么一冲动--为什么不直接将Lingoes的数据导入进去呢?反正早晚要做的.<br /><br />&nbsp; &nbsp; 于是兴冲冲地checkout出<a href="http://lingoes-extractor.googlecode.com">Lingoes-Extractor</a>.这个项目是七八月份中无意间发现的,很强力,<strike><em>一定程度上</em></strike>破解了Lingoes的LD2格式,有兴趣的快去download吧.<br />&nbsp;<br />&nbsp; &nbsp; 在最早做LingosHook时也不是没想过破解LD2,只是由于想着LingosHook只是个单词本,不是个词典,加上通过Hook方式也能获得数据,也就没有去尝试.现在要增加Native Dictionary,这些数据是必需的了,本来想着将前面准备的(<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">CET4,6</a>)拿来用用就好了,但又觉得是不是有点不专业啊.于是转而到处找词典数据,结果,结果就发现了这个Lingoes-Extractor项目.惊喜啊,当时就决定直接用Lingoes是数据了...<br /><br />&nbsp; &nbsp; 现在悲剧了...这就是为什么前面说Lingoes-Extractor是'一定程度上'破解了LD2呢?因为,虽然破解出的数据很全部,但很多必要的数据无法获得.比如如下破解后的数据:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->abut&nbsp;=&nbsp;abuts|abutted|abuttinga&#183;but&nbsp;||&nbsp;ə'bʌtv.&nbsp;&nbsp;邻接;&nbsp;紧靠;&nbsp;毗连</div><br />&nbsp; &nbsp; 数据显示了abut单词的多种表达式,以及音标,词性和解释,很全面,但问题是--这些数据该怎么分隔呢?<br />&nbsp; &nbsp; 研究了Lingoes-Extractor的源码,发现其似乎也没法分隔这些数据,只能简单地分成'单词'和'解释'两部分.<br />&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; 现在,现在难道要我自己再来破解LD2吗? 太悲剧了...现在真的么时间玩破解啊...记得上次<a href="http://www.cppblog.com/codejie/archive/2009/04/30/81586.html">破解WOW的WDB文件</a>(有图有真相...),差点死掉,我恨编码数据!!!<br /><br /><br />&lt;---- 烧香的分割线 ----&gt;<br /><br />&nbsp; &nbsp; 高人啊,你在哪里啊... 唉,明天再好好看看人家的code先...<img src ="http://www.cppblog.com/codejie/aggbug/193343.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-10-16 00:22 <a href="http://www.cppblog.com/codejie/archive/2012/10/16/193343.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Why the inline function can not be covered?</title><link>http://www.cppblog.com/codejie/archive/2012/09/21/191508.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 21 Sep 2012 09:45:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/09/21/191508.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/191508.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/09/21/191508.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/191508.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/191508.html</trackback:ping><description><![CDATA[<br /><div>Please have a look the following codes, they include two source files (source.h, source.c), one test file (test_source.c) and one makefile file.</div><div><br />//source.h<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;#ifndef&nbsp;__SOURCE_H__<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;__SOURCE_H__<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;#include&nbsp;&lt;stdio.h&gt;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;inline&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;inline_test()<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\nthis&nbsp;is&nbsp;the&nbsp;inline&nbsp;function.");<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;}<br /><span style="color: #008080; ">10</span>&nbsp;<br /><span style="color: #008080; ">11</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;normal_test();<br /><span style="color: #008080; ">12</span>&nbsp;<br /><span style="color: #008080; ">13</span>&nbsp;<span style="color: #0000FF; ">#endif</span></div><br />//source.c<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;#include&nbsp;"source.h"<br /><span style="color: #008080; ">2</span>&nbsp;<br /><span style="color: #008080; ">3</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;normal_test()<br /><span style="color: #008080; ">4</span>&nbsp;{<br /><span style="color: #008080; ">5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\nThis&nbsp;is&nbsp;a&nbsp;normal&nbsp;function.");<br /><span style="color: #008080; ">6</span>&nbsp;}</div><br />//test_source.c<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;#include&nbsp;"source.h"<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;test_inline()&nbsp;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inline_test();<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;}<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;test_normal()<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;{<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;normal_test();<br /><span style="color: #008080; ">11</span>&nbsp;}<br /><span style="color: #008080; ">12</span>&nbsp;<br /><span style="color: #008080; ">13</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;main()<br /><span style="color: #008080; ">14</span>&nbsp;{<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test_inline();<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test_normal();<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br /><span style="color: #008080; ">19</span>&nbsp;}</div><br /><br />//makefile<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;TEST&nbsp;=&nbsp;test_source.o<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;TARGET&nbsp;=&nbsp;a.exe<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;all:&nbsp;$(TARGET)<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;$(TARGET):$(SOURCE)&nbsp;$(TEST)<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-Xlinker&nbsp;--allow-multiple-definition&nbsp;$^&nbsp;-fprofile-arcs&nbsp;-ftest-coverage&nbsp;-o&nbsp;$(TARGET)&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;<br /><span style="color: #008080; ">10</span>&nbsp;$(SOURCE):&nbsp;%.o:%.c<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-MM&nbsp;-MF&nbsp;$(subst&nbsp;.o,.d,$@)&nbsp;-MT&nbsp;"$@&nbsp;$(subst&nbsp;.o,.d,$@)"&nbsp;$&lt;<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-c&nbsp;$&lt;&nbsp;-o&nbsp;$@&nbsp;-fprofile-arcs&nbsp;-ftest-coverage<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">14</span>&nbsp;$(TEST):&nbsp;%.o:%.c<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-MM&nbsp;-MF&nbsp;$(subst&nbsp;.o,.d,$@)&nbsp;-MT&nbsp;"$@&nbsp;$(subst&nbsp;.o,.d,$@)"&nbsp;$&lt;<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-c&nbsp;$&lt;&nbsp;-o&nbsp;$@&nbsp; &nbsp;<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;<br /><font color="#008080">18</font>&nbsp;clean:<br /><font color="#008080">19</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-rm&nbsp;-rf&nbsp;$(DIR_COVERAGE)<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-rm&nbsp;-rf&nbsp;*.d&nbsp;*.o&nbsp;*.gcda&nbsp;*.gcno&nbsp;$(TARGET)<br /><br />...</div><br />My purpose is that get the UT line coverage report of source files by running the test file. I guess I should get the below report of line coverage, because I have called every functions of source file in test file, include the inline function and the normal function.</div><div><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/inline.png" border="0" alt="" width="720" height="488" /></div><div>But after run test file, I got the report is just 50%, the inline function has not been covered. Why? Why it is not be covered? I am sure it is called in test file.</div><div><img src="http://www.cppblog.com/images/cppblog_com/codejie/inline3.png" border="0" alt="" width="733" height="307" /></div><div></div><div>OK, Calming down. If it is not covered, there are two reason, one is that the inline function is not be called, of course it is impossible, because we did it. So the root cause must be the second one that gcov/lcov tools do not process those lines of inline function. Have any idea? gcov/lcov tools process all files with compilation parameters '-fprofile-arcs -ftest-coverage', so let's check makefile file again.</div><div>Look here, source files have the compilation paraments, but why normal function has been coverage, but inline function not?</div><div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->$(SOURCE):&nbsp;%.o:%.c<br />&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-MM&nbsp;-MF&nbsp;$(subst&nbsp;.o,.d,$@)&nbsp;-MT&nbsp;"$@&nbsp;$(subst&nbsp;.o,.d,$@)"&nbsp;$&lt;<br />&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-c&nbsp;$&lt;&nbsp;-o&nbsp;$@&nbsp;-fprofile-arcs&nbsp;-ftest-coverage</div></div><div><br />Thinking again, as we knew, the difference between inline function and normal function is just that inline function will be inserted source code while compiling period. Yes, the answer is here! While compiling, the inline function is put into test file, but the test file has not '-fprofile-arcs -ftest-coverage' paramenter. So, so it was not covered.<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->$(TEST):&nbsp;%.o:%.c<br />&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-MM&nbsp;-MF&nbsp;$(subst&nbsp;.o,.d,$@)&nbsp;-MT&nbsp;"$@&nbsp;$(subst&nbsp;.o,.d,$@)"&nbsp;$&lt;<br />&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-c&nbsp;$&lt;&nbsp;-o&nbsp;$@</div></div><div></div><div><br />To fix it, just add the parameter to test file while compiling. OK, let's update the makefile file like the below line.</div><div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->$(TEST):&nbsp;%.o:%.c<br />&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-MM&nbsp;-MF&nbsp;$(subst&nbsp;.o,.d,$@)&nbsp;-MT&nbsp;"$@&nbsp;$(subst&nbsp;.o,.d,$@)"&nbsp;$&lt;<br />&nbsp;&nbsp;&nbsp;&nbsp;gcc&nbsp;-c&nbsp;$&lt;&nbsp;-o&nbsp;$@&nbsp;<strong>-fprofile-arcs&nbsp;-ftest-coverage</strong> &nbsp; &nbsp;</div></div><div></div><div><br />Done, enjoy it!</div><img src ="http://www.cppblog.com/codejie/aggbug/191508.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-09-21 17:45 <a href="http://www.cppblog.com/codejie/archive/2012/09/21/191508.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>随笔:Java只有值传递</title><link>http://www.cppblog.com/codejie/archive/2012/08/22/187898.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 21 Aug 2012 16:42:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/08/22/187898.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/187898.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/08/22/187898.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/187898.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/187898.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; C++永久了,值传递,指针传递,引用传递已经根植在脑袋里了,面对Java时,总是被它的参数传递搞的晕头转向...Java有简单类型,引用类型什么的,那么到底该传递什么呢?<br />&nbsp; &nbsp; 今晚算是被一个错误搞明白了----如果非要靠向C++的概念,那么Java只有值传递.<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br /><span style="color: #008000; "></span>&nbsp; &nbsp; &nbsp; &nbsp; String&nbsp;str&nbsp;=&nbsp;"Hello";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">System.out.println(str.toLowerCase());</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(test(str));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(str);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;String&nbsp;test(String&nbsp;str)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;str.toLowerCase();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;str;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br />Output:<br /><div>hello</div><div>Hello</div><div></div></div><img src ="http://www.cppblog.com/codejie/aggbug/187898.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-08-22 00:42 <a href="http://www.cppblog.com/codejie/archive/2012/08/22/187898.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : Test for Youdao</title><link>http://www.cppblog.com/codejie/archive/2012/05/08/174016.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 08 May 2012 14:53:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/05/08/174016.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/174016.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/05/08/174016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/174016.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/174016.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 我要说敲LingosHook多了,会有蛋疼的时候,你信不信...e,这是真的. 连续用了两个晚上,我测试了用LingosHook去抓取Youdao词典的数据...结论----只能说:还是可行的...<br />&nbsp; &nbsp; 1. LingosHook轻松Hook到Youdao进程;<br />&nbsp; &nbsp; 2. 暂时无法确定Youdao的显示数据控件的类型和属性,获取数据失败;<br /><br />&nbsp; &nbsp; 好了,蛋疼过了,我继续了...<img src ="http://www.cppblog.com/codejie/aggbug/174016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-05-08 22:53 <a href="http://www.cppblog.com/codejie/archive/2012/05/08/174016.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : Development Environment Setup</title><link>http://www.cppblog.com/codejie/archive/2012/03/30/169536.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 30 Mar 2012 08:16:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/03/30/169536.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/169536.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/03/30/169536.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/169536.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/169536.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 上周本本重装成了Win7，我也兴冲冲地安装了VCExpress2010和wxWidgets2.9，悲剧的是LingosHook竟然在此环境下编译失败。。。<br />&nbsp; &nbsp; 都是版本兼容错误，我也懒得改了，于是速度恢复了原来的环境，一切OK。。。顺便记录下，有兴趣的可以看看。。。<br /><br />&nbsp; &nbsp; 1. VC Express 2008；<br />&nbsp; &nbsp; 2. atlmfc sdk；<br />&nbsp; &nbsp; 3. wxWidgets 2.8.10；<br />&nbsp; &nbsp; 4. wsSQLite3 1.9.7；<br /><br />&nbsp; &nbsp; 嗯，很简单，安装好了这些，编译个LingosHook，那是一个easy啊。。。<br /><br />&lt;---- 回档的分割线 ----&gt;<br />&nbsp; &nbsp; cppblog.com敢再稳定点不。。。写好的帖子可以重写，回复的评论真的忘记了。。。。<img src ="http://www.cppblog.com/codejie/aggbug/169536.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-03-30 16:16 <a href="http://www.cppblog.com/codejie/archive/2012/03/30/169536.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Perl: (.)(.)</title><link>http://www.cppblog.com/codejie/archive/2012/03/01/166852.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 01 Mar 2012 03:37:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/03/01/166852.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/166852.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/03/01/166852.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/166852.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/166852.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 想来会Perl的兄弟知道这个(.)(.)是啥，表太邪恶，如果不明白，赶紧学Perl去。。。<br />&nbsp; &nbsp; 这个让我想到，每种语言都有自己很独特的操作符或者表达式，比如C中的++。。。<br />&nbsp; &nbsp; 其他语言会是什么呢？<img src ="http://www.cppblog.com/codejie/aggbug/166852.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-03-01 11:37 <a href="http://www.cppblog.com/codejie/archive/2012/03/01/166852.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Perl: So terrible </title><link>http://www.cppblog.com/codejie/archive/2012/02/29/166755.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 29 Feb 2012 03:20:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/02/29/166755.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/166755.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/02/29/166755.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/166755.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/166755.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 这两天在看Perl，发现Perl的精髓真的跟其强调的－－&#8220;<em style="font-family: sans-serif; line-height: 22px; background-color: #f9f9f9; "><strong>There's More Than One Way To Do It.</strong></em>&nbsp;&#8221;；但问题是太混乱了。。。<br />&nbsp; &nbsp; 研究了下面简单脚本，我整个人都震惊了。。。<br /><br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">sub</span>&nbsp;T&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">my</span>&nbsp;<span style="color: #800080; ">$n</span>&nbsp;=&nbsp;<span style="color: #800080; ">@_</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800080; ">$n</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800080; ">@_</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;$<span style="color: #008000; ">#</span><span style="color: #008000; ">_;</span><span style="color: #008000; "><br /></span>}<br /><br />T(<span style="color: #800000; ">1</span>,&nbsp;<span style="color: #800000; ">2</span>,&nbsp;<span style="color: #800000; ">3</span>);</div><br />&nbsp; &nbsp; 第一个print打印了$n, 显示了参数个数；第二个print打印@_，按照习惯思维，应该跟$n是一样的，No，No，No，它显示了@_的内容；而第三个print打印的是$_数组的最大边界值。。。反正三种方法都能得到参数个数。。。<br />&nbsp; &nbsp; 更崩溃的是下面这句，也能检测参数个数。。。<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">print</span>&nbsp;(<span style="color: #800080; ">@_</span>&nbsp;==&nbsp;<span style="color: #800000; ">3</span>);</div><br />&nbsp; &nbsp; 都说Perl的发明者<a href="http://zh.wikipedia.org/wiki/%E6%8B%89%E9%87%8C%C2%B7%E6%B2%83%E5%B0%94">Larry Wall</a>获得过两次<a href="http://zh.wikipedia.org/wiki/%E5%9B%BD%E9%99%85C%E8%AF%AD%E8%A8%80%E6%B7%B7%E4%B9%B1%E4%BB%A3%E7%A0%81%E5%A4%A7%E8%B5%9B">IOCCC</a>，看来这个，我一点不奇怪了－－他Y是故意把Perl搞成这样的。。。<br /><br /><img src ="http://www.cppblog.com/codejie/aggbug/166755.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-02-29 11:20 <a href="http://www.cppblog.com/codejie/archive/2012/02/29/166755.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>