??xml version="1.0" encoding="utf-8" standalone="yes"?>BlogJava-Read Seanhttp://www.qpkxbc.shop/sean/Read me, read Sean.zh-cnSat, 24 Aug 2019 00:53:50 GMTSat, 24 Aug 2019 00:53:50 GMT60Mac安装tsockshttp://www.qpkxbc.shop/sean/archive/2014/05/07/413382.htmllaogaolaogaoWed, 07 May 2014 15:23:00 GMThttp://www.qpkxbc.shop/sean/archive/2014/05/07/413382.htmlhttp://www.qpkxbc.shop/sean/comments/413382.htmlhttp://www.qpkxbc.shop/sean/archive/2014/05/07/413382.html#Feedback2http://www.qpkxbc.shop/sean/comments/commentRss/413382.htmlhttp://www.qpkxbc.shop/sean/services/trackbacks/413382.html
vim /usr/local/Library/Formula/tsocks.rb

require 'formula'

class Tsocks < Formula
  # The original is http://tsocks.sourceforge.net/
  # This GitHub repo is a maintained fork with OSX support

  homepage 'http://github.com/pc/tsocks'
  head 'https://github.com/pc/tsocks.git'

  depends_on 'autoconf' => :build if MacOS.xcode_version.to_f >= 4.3

  def install
    system "autoconf""-v"
    system "./configure""--prefix=#{prefix}""--disable-debug""--disable-dependency-tracking""--with-conf=#{config_file}"

    inreplace("tsocks") { |bin| bin.change_make_var! "LIBDIR", lib }

    system "make"
    system "make install"

    etc.install "tsocks.conf.simple.example" => "tsocks.conf" unless config_file.exist?
  end

  def test
    puts 'Your current public ip is:'
    ohai `curl -sS ifconfig.me 2>&1`.chomp
    puts "If your correctly configured #{config_file}, this should show the ip you have trough the proxy"
    puts 'Your ip through the proxy is:'
    ohai `tsocks curl -sS ifconfig.me 2>&1`.chomp
  end

  def config_file
    etc / 'tsocks.conf'
  end
end

有了上述formula之后Q即?brew install --HEAD tsocks ?img src ="http://www.qpkxbc.shop/sean/aggbug/413382.html" width = "1" height = "1" />

laogao 2014-05-07 23:23 发表评论
]]>
[RPi] 树梅z֮装XBMCq让其支持中?/title><link>http://www.qpkxbc.shop/sean/archive/2014/04/06/411990.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Sun, 06 Apr 2014 09:45:00 GMT</pubDate><guid>http://www.qpkxbc.shop/sean/archive/2014/04/06/411990.html</guid><wfw:comment>http://www.qpkxbc.shop/sean/comments/411990.html</wfw:comment><comments>http://www.qpkxbc.shop/sean/archive/2014/04/06/411990.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.qpkxbc.shop/sean/comments/commentRss/411990.html</wfw:commentRss><trackback:ping>http://www.qpkxbc.shop/sean/services/trackbacks/411990.html</trackback:ping><description><![CDATA[有了RPi当然免不了要玩玩XBMCQ这里推荐XBianQ安装配|过E如下:<br /> <br /> 1- 下蝲.img文g ( <span style="font-size: 14px;"><a href="http://www.xbian.org/download/" target="_blank">http://www.xbian.org/download/</a></span><span style="font-size: 14px;"> )Q?/span><br /> 2- 用dd命o?imgQ比如XBian_beta_2.imgQ写入SD卡;<br /> 3- 中文字体(比如wqy-zenhei.ttcQ重命名为arial.ttfQ复制到SD卡的~/.xbmc/media/Fonts目录QXBian默认用户为xbianQ密码raspberryQ;<br /> 4- ?nbsp;<span style="font-size: 14px;"><a href="https://code.google.com/p/xbmc-addons-chinese/downloads/detail?name=repository.googlecode.xbmc-addons-chinese-eden.zip" target="_blank">https://code.google.com/p/xbmc-addons-chinese/downloads/detail?name=repository.googlecode.xbmc-addons-chinese-eden.zip</a> 下蝲资源插gq?/span><span style="font-size: 14px;">复制到SD卡;</span><br /> 5- SD卡插入RPiq连接HDMI到电视机/昄器;<br /> 6- RPi开机,q入XBian的配|页面,可以校准屏幕Q配|网l连接等Q?br /> 7- 在系l设|中选择字体为ArialQ语a选ؓ中文Q此时应该看到界面可正常昄中文Q?br /> 8- 安装扩展E序Q选择之前下蝲到SD卡的repository.googlecode.xbmc-addons-chinese-eden.zip文gQ扩展安装成功后卛_在扩展程序列表中看到对应的资源条目,逐一安装卛_?br /> <br /> 额外提示QXBMC也可以通过|络׃n播放视频Q之前跟大家提到qXBMC昄中文字幕有时出现整行被方块覆盖的问题Q解x法是在字q文件中查找q删除或替换"…"字符。EnjoyQ?img src ="http://www.qpkxbc.shop/sean/aggbug/411990.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.qpkxbc.shop/sean/" target="_blank">laogao</a> 2014-04-06 17:45 <a href="http://www.qpkxbc.shop/sean/archive/2014/04/06/411990.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IntelliJ IDEA 常用快捷?/title><link>http://www.qpkxbc.shop/sean/archive/2014/03/09/410781.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Sun, 09 Mar 2014 05:38:00 GMT</pubDate><guid>http://www.qpkxbc.shop/sean/archive/2014/03/09/410781.html</guid><wfw:comment>http://www.qpkxbc.shop/sean/comments/410781.html</wfw:comment><comments>http://www.qpkxbc.shop/sean/archive/2014/03/09/410781.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.qpkxbc.shop/sean/comments/commentRss/410781.html</wfw:commentRss><trackback:ping>http://www.qpkxbc.shop/sean/services/trackbacks/410781.html</trackback:ping><description><![CDATA[<br /> 整理一?IntelliJ IDEA 最常用的快捷键Q按照便于记忆的方式排列Q?br /> <br /> <pre> Ctrl-N              Class... (find by name) Ctrl-Shift-N        File... (find by name) Ctrl-Shift-Alt-N    Symbol... (find by name) Ctrl-G              Line... (goto line) Ctrl-H              Type hierarchy (hierarchy) Ctrl-Shift-H        Method hierarchy (hierarchy) Ctrl-Alt-H          Call hierarchy (hierarchy) Ctrl-Q              Quick documentation Ctrl-Alt-I          Auto-indent lines (indent) Ctrl-Alt-L          Reformat code (line up) Ctrl-Alt-O          Optimize imports (optimize) Ctrl-/              Comment with line comment (//) Ctrl-Shift-/        Comment with block comment (/*...*/) Ctrl-W              Select word or block (word) Ctrl-D              Copy line (duplicate line, yyp) Ctrl-X              Cut line (dd) Ctrl-U              Uppercase/lowercase (upper) Ctrl-J              Insert live template Ctrl-Alt-J          Surround with live template Ctrl-Alt-T          Surround with (template) Ctrl-Shift-J        Join lines (join) Ctrl-E              Recent files (editions) Ctrl-Shift-E        Recently changed files (editions) Alt-Shift-C         Recent changes (changes) Ctrl-B              Delcaration Ctrl-Shift-B        Type declaration Ctrl-Alt-B          Implementation(s) Ctrl-P              Parameter info (parameter) Ctrl-Space          Basic completion Ctrl-Shift-Space    Smart completion Ctrl-Alt-Space      Completion lookup Alt-Enter           Auto-complete Alt-Insert          Generate... Ctrl-Shift-Up/Down  Move statement up/down Alt-Shift-Up/Down   Move line up/down Ctrl-Up/Down        Scroll up/down Alt-Up/Down         Previous/next method F2                  Next highlighted error Shift-F2            Previous highlighted error Ctrl-F              Find Ctrl-R              Replace F3                  Next match Shift-F3            Previous match F4                  Jump to source Ctrl-Alt-Shift-T    Refactor this F5                  Refactor copy F6                  Refactor move Ctrl-F6             Refactor change signature Shift-F6            Refactor rename Alt-Delete          Refactor safe delete Ctrl-Alt-V          Refactor extract variable Ctrl-Alt-F          Refactor extract field Ctrl-Alt-P          Refactor extract parameter Ctrl-Alt-M          Refactor extract method Ctrl-Alt-N          Refactor inline </pre> <img src ="http://www.qpkxbc.shop/sean/aggbug/410781.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.qpkxbc.shop/sean/" target="_blank">laogao</a> 2014-03-09 13:38 <a href="http://www.qpkxbc.shop/sean/archive/2014/03/09/410781.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[RPi] 树梅z֮装Archlinux和蓝?/title><link>http://www.qpkxbc.shop/sean/archive/2014/01/01/408333.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Wed, 01 Jan 2014 05:11:00 GMT</pubDate><guid>http://www.qpkxbc.shop/sean/archive/2014/01/01/408333.html</guid><wfw:comment>http://www.qpkxbc.shop/sean/comments/408333.html</wfw:comment><comments>http://www.qpkxbc.shop/sean/archive/2014/01/01/408333.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.qpkxbc.shop/sean/comments/commentRss/408333.html</wfw:commentRss><trackback:ping>http://www.qpkxbc.shop/sean/services/trackbacks/408333.html</trackback:ping><description><![CDATA[不久前入了个 Raspberry Pi 也就是大家说的树梅派Q以下简URPiQ,拿来做蓝牙测试,用的蓝牙dongle是ORICO的BTA-403-BL <a href="http://item.jd.com/980800.html">http://item.jd.com/980800.html</a> 。这里简单记录下安装q程Q?br /> <br />首先是操作系l。作为Arch重度用户Q当焉Archlinux ARM? <a href="http://archlinuxarm.org/platforms/armv6/raspberry-pi">http://archlinuxarm.org/platforms/armv6/raspberry-pi</a> 下蝲img文gQ用dd写到SD卡上Q?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 /> -->dd bs=1M <span style="color: #0000FF; ">if</span>=/path/to/archlinux-hf-*.img of=/dev/sdX</div> <br /> 然后用GParted把SD卡上的分区拖满,充分利用I间。这样SD卡就准备好了Q插到RPi上,接上Micro-USB的电源和|线Q启动RPiQ从路由器上扑ֈRPi的IP地址Q机器名默认是alarmpiQ,ssh上去Q用户名root密码rootQ,修改密码Q创建非root账号Q执行系l更?sudo pacman -Syu Q这之后开始安装蓝牙相兛_P<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 /> -->sudo pacman -S bluez bluez-utils</div> <br /> 保蓝牙dongle插到RPi的USB接口Q通过 hciconfig 认蓝牙讑֤被识别,输出应该cM下面q个样子Q?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 /> -->[sean<span style="color: #800080; ">@alarmpi</span>]$ hciconfig<br /> hci0:   Type: BR/EDR  Bus: USB<br />         BD Address: <span style="color: #800000; ">84</span>:A6:C8:DC:<span style="color: #800000; ">04</span>:<span style="color: #800000; ">97</span>  ACL MTU: <span style="color: #800000; ">310</span>:<span style="color: #800000; ">10</span>  SCO MTU: <span style="color: #800000; ">64</span>:<span style="color: #800000; ">8</span><br />         DOWN <br />         RX bytes:<span style="color: #800000; ">553</span> acl:<span style="color: #800000; ">0</span> sco:<span style="color: #800000; ">0</span> events:<span style="color: #800000; ">28</span> errors:<span style="color: #800000; ">0</span><br />         TX bytes:<span style="color: #800000; ">384</span> acl:<span style="color: #800000; ">0</span> sco:<span style="color: #800000; ">0</span> commands:<span style="color: #800000; ">27</span> errors:<span style="color: #800000; ">0</span></div> <br /> 启动bluetoothQ?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 /> -->sudo systemctl start bluetooth</div> <br /> 完成以后Q即可通过 bluetoothctl 命o打开蓝牙控制収ͼ执行各项蓝牙相关操作Q比如show、list、scan on、agent、info{等Q这里不展开了?br /> <br /> 如果想用图形界面操作RPiQ也很简单,基本步骤如下Q?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 /> -->sudo pacman -S xorg xorg-xinit lxde<br />echo <span style="font-weight: bold;">'</span><span style="font-weight: bold;">exec startlxde</span><span style="font-weight: bold;">'</span> > ~/.xinitrc<br /> startx</div><br />Enjoy!<img src ="http://www.qpkxbc.shop/sean/aggbug/408333.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.qpkxbc.shop/sean/" target="_blank">laogao</a> 2014-01-01 13:11 <a href="http://www.qpkxbc.shop/sean/archive/2014/01/01/408333.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《快学Scala》勘?/title><link>http://www.qpkxbc.shop/sean/archive/2012/11/15/391386.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Thu, 15 Nov 2012 07:56:00 GMT</pubDate><guid>http://www.qpkxbc.shop/sean/archive/2012/11/15/391386.html</guid><description><![CDATA[W?1(l习Q:<br /> 在Scala REPL中键?Q然后按Tab?<strong>应ؓ</strong> 在Scala REPL中键?.Q然后按Tab?<br /> <br /> W?9(正文Q:<br /> utilҎq回一个ƈ不包含上限的区间 <strong>应ؓ</strong> untilҎq回一个ƈ不包含上限的区间<br /> <br /> W?9(代码Q:<br /> 0 util s.length <strong>应ؓ</strong> 0 until s.length<br /> <br /> W?1(正文Q:<br /> util是RichIntcȝҎ <strong>应ؓ</strong> until是RichIntcȝҎ<br /> <br /> W?4(代码Q: <div>ArraryBuffer <strong>应ؓ</strong> ArrayBuffer</div> <div>b.sorted(_ < _) <strong>应ؓ</strong> b.sorted</div> <div>b.sorted(_ > _) <strong>应ؓ</strong> b.sortWith(_ > _) </div> <div></div> <div><br /> W?4(代码Q: <div>scala.collections.immutable.SortedMap <strong>应ؓ</strong> scala.collection.immutable.SortedMap</div> <div><br />W?3(正文Q:<br />ScalaҎ个字端都提供getter和setterҎ <strong>应ؓ</strong> ScalaҎ个字D都提供getter和setterҎ<br /><br />W?07(代码Q:</div> <div>val tokens = source.mkString.split("\\S+") <strong>应ؓ</strong> val tokens = source.mkString.split("\\s+")</div> <div><br /> W?41(代码Q:</div> <div>var count: (Int => Double) => null <strong>应ؓ</strong> var count: (Int => Double) = null</div> <div><br /> // 本文仅作Z息发布窗口,如需讨论交流Q请通过邮g <a href="mailto:gaoyuxiang.scala@gmail.com">gaoyuxiang.scala@gmail.com</a> ?QQ?132569382 ?/div> </div><img src ="http://www.qpkxbc.shop/sean/aggbug/391386.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.qpkxbc.shop/sean/" target="_blank">laogao</a> 2012-11-15 15:56 <a href="http://www.qpkxbc.shop/sean/archive/2012/11/15/391386.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学好~程Q从写作开始?/title><link>http://www.qpkxbc.shop/sean/archive/2011/08/03/355717.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Wed, 03 Aug 2011 15:49:00 GMT</pubDate><guid>http://www.qpkxbc.shop/sean/archive/2011/08/03/355717.html</guid><wfw:comment>http://www.qpkxbc.shop/sean/comments/355717.html</wfw:comment><comments>http://www.qpkxbc.shop/sean/archive/2011/08/03/355717.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.qpkxbc.shop/sean/comments/commentRss/355717.html</wfw:commentRss><trackback:ping>http://www.qpkxbc.shop/sean/services/trackbacks/355717.html</trackback:ping><description><![CDATA[<p> 可能很多Z以ؓӞ写作和编E能有什么关pR?/p> <p> 首先Q写作促q我们思考。程序员每天的工作,不论是学习新知识新技术、理解Y仉求、阅M?文档、设计框架、还是实C务逻辑Q都M开思考。相信很多h都有q这L体验: 对于某个设计或知识点Q你以ؓ自己x楚了Q但真要让你解释l别人听Q你又会觉得无从下手Q几轮过后回惛_初,之前所看到和相信的不过是错觉,当你完整的向其他{qC遍之后,你才是真正x白了。其实这个道理和书桌上放一只橡皮鸭/填充玩偶(然后向它讲述你的x)的做法是盔R的Q只不过写作本n不光整理了思\Q还留下了文档,同时Q写作的q程也是不断加深印象、提升信心的q程Q可谓一丑֤得?/p> <p> 其次Q和写作一P~程的主要目的是与世界交,不论q个世界是指的机器的世界q是人的世界。要有效C机器世界交流Q你~写的代码必ȝ合一定的语法和范式,必须逻辑上讲得通,q样才有意义。而基本的写作训练可以让我们养成主动留意错别字、格式、拼写错误、逻辑错误的习惯。如C. A. R. Haore所_我们宁要明显无错误的代码Q不要无明显错误的代码。这Ҏ癖是好程序员必须具备的修充R这也是Z么我看到有明显拼写错误的E序员简历时Q会直接把他/她们拉黑。同样地Q我一直坚持认为,如果E序员写不出l构优良的纯文本文档Q那么我们也不必指望?她能够写Z雅的代码。除此之外,我们q可以再E微发散一? 开源项目那么多Q满类似需要的往往不止一个,Z么有的很成功Q有的却无h问|? d/灵魂人物的写作能力,不论是代码、文档、邮件还是PPTQ是很重要的分野。我怿Q改变世界、媄响更多的人,是很多程序员梦寐以求的,而要做到q一点,M开写作?/p> <p> 最后,写作通常是程序员的短板,亦即最Ҏ低成本高产出的地斏V我一直很不喜Ƣh为地l不同专业背景的上文U和理科的标{,仿佛他们之间没有交集似的。这样做的最大问题在我看来是一方天然地觉得另一方的知识对自己没价|以至于Ş成了cM"写作是文U生的菜"?~程是理U才要学的东?{谬误。就我的观察Q计机U班n的同学,往往文字表达能力不够强,可能多少和这U心理暗C有兟뀂如此明昄短板Q如果能够引起广大程序员体的重视,肯在写作上持l投入,效果一定是惊h的?/p> <img src ="http://www.qpkxbc.shop/sean/aggbug/355717.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.qpkxbc.shop/sean/" target="_blank">laogao</a> 2011-08-03 23:49 <a href="http://www.qpkxbc.shop/sean/archive/2011/08/03/355717.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Tips] Windows环境下Apache最基本的调优方?/title><link>http://www.qpkxbc.shop/sean/archive/2011/08/02/355618.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Tue, 02 Aug 2011 13:04:00 GMT</pubDate><guid>http://www.qpkxbc.shop/sean/archive/2011/08/02/355618.html</guid><wfw:comment>http://www.qpkxbc.shop/sean/comments/355618.html</wfw:comment><comments>http://www.qpkxbc.shop/sean/archive/2011/08/02/355618.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.qpkxbc.shop/sean/comments/commentRss/355618.html</wfw:commentRss><trackback:ping>http://www.qpkxbc.shop/sean/services/trackbacks/355618.html</trackback:ping><description><![CDATA[<p> 今天q程支持同事在Windows环境调优Apache服务器性能Q记录在此,供需要的朋友参考?/p> <p> Java EE应用Q同旉|在两个Tomcat(5.5.27)实例上,前面放了个Apache(httpd-2.2.19-win32-x86-no_ssl)Q通过mod_jk(1.2.32)做负载均衡,同一台物理服务器Q操作系lؓ64位的Windows Server 2003 SP2。现象是60+客户端,q_每个客户端每U请求数2ơ,单个h正常响应旉?00ms以内Q即每秒冲进?20个请求,q发量最多在60上下QApache已不堪"?负,静态资源响应时间都过10sQ同时Tomcat和数据库服务器均正常。凭我的l验Q同L压力直接压到Tomcat也不至于q么隄。看来问题出在Apache?/p> <p> 首先修改httpd.conf配置文gQ打开status模块Q?/p> <p> <code> LoadModule status_module modules/mod_status.so<br/> <Location /status><br/>   SetHandler server-status<br/>   Order deny,allow<br/>   Deny from all<br/>   Allow from 127.0.0.1 #需要的话也可放开为all<br/> </Location> </code></p> <p> q样我们p通过/status面查看服务器当前的状态信息,l果观察到worker(即线E?C?4Q坑爹啊Q难怪撑不住。我记得以前Windows下面的Apache默认U程数没q么的。找准问题,接下来就好办了:</p> <p> <code> <IfModule mpm_winnt.c><br/>   ThreadsPerChild 300<br/>   MaxRequestsPerChild 0<br/> </IfModule> </code></p> <p> E微解释一下:mpm_winnt.c是Apache为Windows NT提供的MPM (Multi-Processing Module)Q对应到Linux环境下,则有prefork.c(多进E?每进E?个线E?和worker.c(多进E?多线E?两种MPM可选。Windows下面只会有父与子两个q程Q因此单个子q程能同时v多少U程(ThreadsPerChild)成了调优的关键。另一个参数MaxRequestsPerChild的含义是单个子进E篏计最多处理到个hQ超q该值则退出重启,q是Z防止内存泄露慢慢拖垮整个服务器而做的防御性措施,0表示不做此限制?/p> <p> 新配|上U后Q客L数量利冲上200+。Case closed.</p> <img src ="http://www.qpkxbc.shop/sean/aggbug/355618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.qpkxbc.shop/sean/" target="_blank">laogao</a> 2011-08-02 21:04 <a href="http://www.qpkxbc.shop/sean/archive/2011/08/02/355618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>pyPdf - 用Python方便的处理PDF文档http://www.qpkxbc.shop/sean/archive/2011/07/26/355089.htmllaogaolaogaoTue, 26 Jul 2011 14:25:00 GMThttp://www.qpkxbc.shop/sean/archive/2011/07/26/355089.htmlhttp://www.qpkxbc.shop/sean/comments/355089.htmlhttp://www.qpkxbc.shop/sean/archive/2011/07/26/355089.html#Feedback2http://www.qpkxbc.shop/sean/comments/commentRss/355089.htmlhttp://www.qpkxbc.shop/sean/services/trackbacks/355089.html 今天临时有个需求,那就是给某PDF文档切边Q以方便在Kindle 3?吋屏上阅诅R?br />
很久没碰Python了,不过我相信用Python一定有办法解决q个需求,于是l过单的googlingQ便发现了这个pyPdf?( http://pybrary.net/pyPdf/ ) Q操作v来相当直接易懂,把代码脓在这儿,做个记录?br />
 1 from pyPdf import PdfFileWriter, PdfFileReader
 2 
 3 pdf = PdfFileReader(file('original.pdf''rb'))
 4 out = PdfFileWriter()
 5 
 6 for page in pdf.pages:
 7   page.mediaBox.upperRight = (580,800)
 8   page.mediaBox.lowerLeft = (128,232)
 9   out.addPage(page)
10 
11 ous = file('target.pdf''wb')
12 out.write(ous)
13 ous.close()

Enjoy!


laogao 2011-07-26 22:25 发表评论
]]>
"上v"是如何变?涓婃?的?http://www.qpkxbc.shop/sean/archive/2011/03/29/347243.htmllaogaolaogaoTue, 29 Mar 2011 15:50:00 GMThttp://www.qpkxbc.shop/sean/archive/2011/03/29/347243.htmlhttp://www.qpkxbc.shop/sean/comments/347243.htmlhttp://www.qpkxbc.shop/sean/archive/2011/03/29/347243.html#Feedback0http://www.qpkxbc.shop/sean/comments/commentRss/347243.htmlhttp://www.qpkxbc.shop/sean/services/trackbacks/347243.html

今天帮同事解决一个邮件ؕ码的问题Q简C此?

邮g正文׃贴了Q有一D从上下文判断明昑ֺ该是"上v"Q却昄成了"?.."Q于是自然而然的拿??字和"?字来分析?

通过单的Groovy脚本对这两个汉字分别按gbk和utf-8~码Qƈ得到的byte[]转换成二q制表示输出如下Q?

== ?==
11001001 11001111
11100100 10111000 10001010
== ?==
11100100 10111000
11100110 10110110 10010011

注意"?字的W?排前两组??字第1排的两组byte正好相同Q于是问题迎刃而解Qؕ码是׃邮g以utf-8~码后被错误的以gbk解码Q随后又重新~码成utf-8Q造成的?/p>

关键代码Q?/p>

void showBytes(String input) {
  println("== " + input + " ==")
  b = input.getBytes("gbk")
  b.each { print Integer.toBinaryString(it).substring(24) + ' ' }
  println()
  b = input.getBytes("utf8")
  b.each { print Integer.toBinaryString(it).substring(24) + ' ' }
  println()
}



laogao 2011-03-29 23:50 发表评论
]]>
[Tips] 如何lSVN资源库降U?/title><link>http://www.qpkxbc.shop/sean/archive/2011/02/16/344471.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Wed, 16 Feb 2011 11:34:00 GMT</pubDate><guid>http://www.qpkxbc.shop/sean/archive/2011/02/16/344471.html</guid><wfw:comment>http://www.qpkxbc.shop/sean/comments/344471.html</wfw:comment><comments>http://www.qpkxbc.shop/sean/archive/2011/02/16/344471.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.qpkxbc.shop/sean/comments/commentRss/344471.html</wfw:commentRss><trackback:ping>http://www.qpkxbc.shop/sean/services/trackbacks/344471.html</trackback:ping><description><![CDATA[<br/ /><p>问题起因: 帮同事排查一个SVN资源库导入后无法使用的问题,checkout时报?br/ />  Expected FS format '2'; found format '3'<br/ />  期待文gpȝ(FS)格式 “2”Q找到格?#8220;3”<br/ /></p><p>熟悉SVN的朋友应该知道,Subversion大版本更新时有可能会对其文g格式q行调整Q因此内部有文g格式版本的说法,以上报错信息在网上搜一下就知道Q版?和版?分别对应Subversion?.4.x?.5.xQ于是问题归lؓ如何l资源库降Q从而得C1.4兼容的dump文g。方法很单,记录如下Q供需要的朋友参?</p><p>首先?.5.x的Subversion环境下新Z个与1.4.x兼容的资源库<br/ />  svnadmin --pre-1.5-compatible create project01</p><p>然后之前无法正常导?.4.x的dump文g(dumpfile.old)导入<br/ />  svnadmin load project01 < dumpfile.old</p><p>最后再做一ơ导出即?br/ />  svnadmin dump project01 > dumpfule.new</p><p>回到1.4.x的Subversion环境Q新的dump文g(dumpfile.new)可以正常导入和使用了?/p> <img src ="http://www.qpkxbc.shop/sean/aggbug/344471.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.qpkxbc.shop/sean/" target="_blank">laogao</a> 2011-02-16 19:34 <a href="http://www.qpkxbc.shop/sean/archive/2011/02/16/344471.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ssh+tsocks - q程办公利器http://www.qpkxbc.shop/sean/archive/2011/02/09/343994.htmllaogaolaogaoWed, 09 Feb 2011 14:37:00 GMThttp://www.qpkxbc.shop/sean/archive/2011/02/09/343994.htmlhttp://www.qpkxbc.shop/sean/comments/343994.htmlhttp://www.qpkxbc.shop/sean/archive/2011/02/09/343994.html#Feedback5http://www.qpkxbc.shop/sean/comments/commentRss/343994.htmlhttp://www.qpkxbc.shop/sean/services/trackbacks/343994.html

设想一下这L场景: 你出差在外,或者生病在Ӟ有个紧急的需求要处理Q涉及到C源代码文件的改动Q你亲自修改需?0分钟Q电话和在公司的同伴沟通然后由?Ҏ修改则需?时。公司svn服务仅支持svn://协议Q且仅限内网讉KQ而你只有一个ssh账号可以q程d到公司某台Linux/UNIX服务器?/p>

你暗自庆q,q好理员有先见之明Qؓ你留了个ssh口子Q这栯你q可以ssh上去通过命o行的方式在服务器上做svn checkoutQvim ...和svn commit。不q如果你认ؓq就是全部,那就太小瞧ssh了?/p>

ssh有个命o行参?-D [地址:]端口Q含义是在某个本地地址的某个端口上开SOCKS服务q行监听Q把q个端口的数据通信以加密Ş式{发到ssh的另一端。你说好Q我有了一个SOCKS服务器,但我又不是要上网C理,svn也ƈ不天然支持SOCKS啊,有什么用? 嗯,q正是tsocks的用武之圎ͼ它能透明的让普通应用程序也走SOCKSQ安装方法很? L的Linux发行版,如Debian、Archlinux{的默认软g仓库已经自带了tsocksQ通常只需要apt-get install或pacman -S卛_QMac OS X下则可以利用MacPorts安装Q然后修攚w|文?etc/tsocks.conf(MacPorts会安装到/opt/local/etc目录)Q可以在h文gtsocks.conf.sample的基上修改,通常只要配置server = 127.0.0.1卛_Q其他都可以默认?/p>

有了q些打底Q剩下的很单了: 首先 ssh -D 1080 -f -N 用户名@公司服务器的公网地址 在本机的1080端口开启SOCKS服务Q然后按照你qx使用svn的习惯,只是在命令前加上tsocksQ类D? tsocks svn up 或?tsocks svn ci -m 'blahblahblah' {等卛_Q本地的svn sandbox不需要Q何修攏V?/p>

q个例子可以说只是冰׃角,不论是sshq是tsocks都还有更高的用法,而这个通道一旦打通,它的效果像是简化版的VPNQ除了ping之类的少数命令外Q几乎就跟你在公司做各种操作没有两样Q所以,发挥你的惌力吧 :)



laogao 2011-02-09 22:37 发表评论
]]>
如何让统一版本的Eclipse RCP应用同时支持多个q_http://www.qpkxbc.shop/sean/archive/2011/01/30/343769.htmllaogaolaogaoSun, 30 Jan 2011 04:17:00 GMThttp://www.qpkxbc.shop/sean/archive/2011/01/30/343769.htmlhttp://www.qpkxbc.shop/sean/comments/343769.htmlhttp://www.qpkxbc.shop/sean/archive/2011/01/30/343769.html#Feedback0http://www.qpkxbc.shop/sean/comments/commentRss/343769.htmlhttp://www.qpkxbc.shop/sean/services/trackbacks/343769.html

和Swing应用的直接跨q_不同QSWT/RCP应用要想同时支持不同q_Q需要做些特D的配置Q不qƈ不复杂,记录在此Q希望能帮到有需要的朋友。目前win32?2位Linux?4位Linux和Mac OS X基本上就覆盖了所有主的桌面操作pȝQ本文将以同时支持这四种OSZ来进行讲解?/p>

首先是下载对应版本的RCP框架在不同操作系l的插gQ将它们攑֜同一个plugins目录Q比如你可以用win32为基Q然后添加针对其他^台的如下插g:

org.eclipse.core.filesystem
org.eclipse.core.filesystem.win32.x86
org.eclipse.core.filesystem.linux.x86
org.eclipse.core.filesystem.linux.x86_64
org.eclipse.core.filesystem.macosx

org.eclipse.core.net
org.eclipse.core.net.win32.x86
org.eclipse.core.net.linux.x86

org.eclipse.core.resources
org.eclipse.core.resources.win32.x86

org.eclipse.equinox.launcher
org.eclipse.equinox.launcher.win32.win32.x86
org.eclipse.equinox.launcher.gtk.linux.x86
org.eclipse.equinox.launcher.gtk.linux.x86_64
org.eclipse.equinox.launcher.carbon.macosx

org.eclipse.equinox.security
org.eclipse.equinox.security.win32.x86
org.eclipse.equinox.security.macosx

org.eclipse.swt
org.eclipse.swt.win32.win32.x86
org.eclipse.swt.gtk.linux.x86
org.eclipse.swt.gtk.linux.x86_64
org.eclipse.swt.carbon.macosx

接下来将不同q_下的eclipse可执行文?Windows下面是eclipe.exeQLinux下是eclipseQMac OS X下面是Eclipse.app)攑ֈ不同的子目录下,当然Q如果你的RCP应用有别的名Uͼ也可以重命名eclipse可执行文Ӟ按照不同q_的规范更换图标,然后修改.ini文g让它?startup?startup.libraray参数指向相对路径中正版本的插g卛_?/p>

最后分享一下我们Y仉|的机制: 按照前面介绍的方式打包的应用E序Q交到用h里ƈ不是很友好,因ؓ需要他/她自己再做一ơ判断,当前的操作系l是什么,然后打开不同的目录去点击不同的可执行文g。我们的做法是单独提供一个SwingE序Q在客户端自动判断OSQ然后自动调用不同版本的可执行文Ӟ同时Q这个SwingE序被做成Java Web StartQ把整个RCP客户端的下蝲和同步也处理掉,q样Q对用户而言Q整个过E就透明了,只需要一个JNLPQ剩下的工作完全自动化?/p>

laogao 2011-01-30 12:17 发表评论
]]>
Java命o行实用工具jps和jstathttp://www.qpkxbc.shop/sean/archive/2011/01/27/343620.htmllaogaolaogaoThu, 27 Jan 2011 04:04:00 GMThttp://www.qpkxbc.shop/sean/archive/2011/01/27/343620.htmlhttp://www.qpkxbc.shop/sean/comments/343620.htmlhttp://www.qpkxbc.shop/sean/archive/2011/01/27/343620.html#Feedback0http://www.qpkxbc.shop/sean/comments/commentRss/343620.htmlhttp://www.qpkxbc.shop/sean/services/trackbacks/343620.html

在Linux或其他UNIX和类UNIX环境下,ps命o惛_大家都不陌生Q我怿也有不少同学写过 ps aux | grep java | grep -v grep | awk '{print $2}' q样的管道命令来扑ևJavaq程的pid。常a道,Javaq真的"跨^?Q它自己是q_。作为^収ͼ当然也有些基本的工具Q让我们可以用更单、更l一Q同时又是非侵入的方式来查询q程相关信息。今天我们就来认识一下其中的两个?/p>

jps

֐思义Q它对应到UNIX的ps命o。用法如?

jps [ options ] [ hostid ]

其中Qoptions可以?-q (安静) -m (输出传递给mainҎ的参? -l (昄完整路径) -v (昄传递给JVM的命令行参数) -V (昄通过flag文g传递给JVM的参? -J (和其他Java工具cM用于传递参数给命o本n要调用的javaq程)Qhostid是主机idQ默认localhost?/p>

jstat

用于输出l定javaq程的统计信息。用法如?

jstat -options 可以列出当前JVM版本支持的选项Q常见的?-class (cd载器) -compiler (JIT) -gc (GC堆状? -gccapacity (各区大小) -gccause (最q一ơGCl计和原? -gcnew (新区l计) -gcnewcapacity (新区大小) -gcold (老区l计) -gcoldcapacity (老区大小) -gcpermcapacity (怹区大? -gcutil (GCl计汇? -printcompilation (HotSpot~译l计)

假定你要监控的Javaq程h12345Q那?br /> jstat -gcutil -t 12345 200 300 卛_?00毫秒q箋打印300ơ带有时间戳的GCl计信息?/p>

单解释一? -gcutil是传入的optionQ必选,-t是打印时间戳Q是以目标JVM启动旉v点计的Q可选;12345是vmid/pidQ和我们从jps拿到的是一LQ必选;200是监控时间间隔,可选,不提供就意味着单次输出Q?00是最大输出次敎ͼ可选,不提供且监控旉间隔有值的话,是无限期打C厅R?/p>

具体输出明细的解释请参考官Ҏ?http://download.oracle.com/javase/6/docs/technotes/tools/share/jstat.html



laogao 2011-01-27 12:04 发表评论
]]>
[Tips] Emacs字符~码相关指ohttp://www.qpkxbc.shop/sean/archive/2011/01/05/342345.htmllaogaolaogaoWed, 05 Jan 2011 05:31:00 GMThttp://www.qpkxbc.shop/sean/archive/2011/01/05/342345.htmlhttp://www.qpkxbc.shop/sean/comments/342345.htmlhttp://www.qpkxbc.shop/sean/archive/2011/01/05/342345.html#Feedback0http://www.qpkxbc.shop/sean/comments/commentRss/342345.htmlhttp://www.qpkxbc.shop/sean/services/trackbacks/342345.html

在Vim中,我们可以通过set fencs=utf-8,gbk告诉它按照先utf-8后gbk的顺序自动识别打开文g的字W编码。Emacs也有一l字W编码相x令,整理如下Q?/p>

指o全名Qset-buffer-file-coding-system
指o作用Q改变当前buffer的编?br /> 调用ҎQ?以目标编码gbkZ)
C-x <RET> f gbk <RET>
该指令还可以用于改变当前buffer的换行习?~码参数用dos或unixQ对应\r\n或\n)?/p>

指o全名Quniversal-coding-system-argument
指o作用Q指定紧随其后的命o(如C-x C-f或C-x C-w{?所采用的编?br /> 调用ҎQ?以目标编码gbkZ)
C-x <RET> c gbk <RET>

指o全名Qrevert-buffer-with-coding-system
指o作用Q用指定~码重读当前buffer(如果打开时用错了~码)
调用ҎQ?以目标编码gbkZ)
C-x <RET> r gbk <RET>

指o全名Qrecode-region
指o作用Q将以错误编码解码的选区以指定编码重新解?br /> 调用ҎQ?以目标编码gbkZ)
M-x recode-region <RET> gbk <RET> utf-8 <RET>

除了q些操作外,q有一U方法,那就是在文g开始的部分l出如下形式的指令,直接告诉~辑器在打开和保存时应采用的~码Q?br /> -*- coding: gbk -*-
接触qPython的同学是不是觉得很眼?

[补充] 查看当前~码选择的命令ؓQ?br /> M-x describe-coding-system <RET> ?C-h C <RET>
也可在回车前输入具体的编码名U?如gbk)以查看详l说明?/p>

laogao 2011-01-05 13:31 发表评论
]]>
2011q要做的?/title><link>http://www.qpkxbc.shop/sean/archive/2011/01/02/342169.html</link><dc:creator>laogao</dc:creator><author>laogao</author><pubDate>Sun, 02 Jan 2011 12:08:00 GMT</pubDate><guid>http://www.qpkxbc.shop/sean/archive/2011/01/02/342169.html</guid><wfw:comment>http://www.qpkxbc.shop/sean/comments/342169.html</wfw:comment><comments>http://www.qpkxbc.shop/sean/archive/2011/01/02/342169.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.qpkxbc.shop/sean/comments/commentRss/342169.html</wfw:commentRss><trackback:ping>http://www.qpkxbc.shop/sean/services/trackbacks/342169.html</trackback:ping><description><![CDATA[<br/ /><p>为克服拖延症Q在此列?011q要做的事,l未来的自己监督Q?/p><p>1- l箋d未完成的产品攚w,换一U更E_的方式推q;<br/ />2- U极参与C֌交流zdQ不论线上还是线下;<br/ />3- 深入学习ScalaQ辅以Clojure和HaskellQ?br/ />4- pȝ学习PostgreSQLQ?br/ />5- 全面使用EmacsQ?br/ />6- 开始读Linux源码Q?br/ />7- 重读《红楼梦》;<br/ />8- 臛_M本英文原著;<br/ />9- 带儿子回一老家?br/ /></p><p>p栗?/p><img src ="http://www.qpkxbc.shop/sean/aggbug/342169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.qpkxbc.shop/sean/" target="_blank">laogao</a> 2011-01-02 20:08 <a href="http://www.qpkxbc.shop/sean/archive/2011/01/02/342169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <a href="http://www.qpkxbc.shop/"><span class="STYLE1">1һ152ͼ</span></a> <script>(function(){ var src = (document.location.protocol == "http:") ? "http://js.passport.qihucdn.com/11.0.1.js?9ed1f3a8f9c3ff069b7b95c01474c743":"https://jspassport.ssl.qhimg.com/11.0.1.js?9ed1f3a8f9c3ff069b7b95c01474c743"; document.write('<script src="' + src + '" id="sozz"><\/script>'); })(); </script> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>