sycx's Blog

Nothing here.

闷骚型披萨:披萨饺

第一眼见到它的时候,我不由得为它的干净利落赞叹不已。如此简洁的食物,实在是不多见。

無標題

拿披萨当做饺子皮,做成饺子样,这就是披萨饺。

原本热情奔放的披萨,一朝沾染上了含蓄性格,害羞的蜷缩成一团,将自身的一切美好藏在内里,徒留质朴的面饼示人。非得你一刀将其躯壳斩开,才能见得到其满腹的美好,这就是披萨饺。

这种性格,对于人类来讲,一般称为闷骚,所以说披萨饺又名闷骚披萨(雾


店名 Papa Johns
菜名 腊肠蘑菇披萨饺
价格 32 CNY
其它 饮料4选1,无限续杯

Cisco IPSec VPN Automatic Routing Table

What’s wrong?

In PPTP/L2TP world:

  • /etc/ppp/ip-up will be run on VPN startup
  • /etc/ppp/ip-down will be run on VPN shutdown

But Cisco IPSec just ignore these files, why?

After doing some Googling, I figured out the difference:

  • PPTP/L2TP managed by pppd
  • Cisco IPSec managed by racoon

And, here is the solution

Base environment configure

  1. Backup your racoon.conf

  2. 1
    
    sudo cp /etc/racoon/racoon.conf{,.bak}
    
  3. Make a directory /etc/racoon/remote to put our custom config files

  4. 1
    
    sudo mkdir /etc/racoon/remote
    
  5. Patch racoon.conf to include our directory

  6. 1
    
    sudo sh -c 'echo "include \"/etc/racoon/remote/*.conf\" ;" >> /etc/racoon/racoon.conf'
    

Make custom vpn conf file per server

  1. Connect your Cisco IPSec VPN first

  2. racoon will create a configuration file based your vpn server’s IP under /var/run/racoon/, Copy that file to our directory

  3. 1
    
    sudo cp /var/run/racoon/YOUR_VPN_SERVER_IP.conf /etc/racoon/remote/
    
  4. Edit /etc/racoon/remote/YOUR_VPN_SERVER_IP.conf, insert two lines below:

  5. 1
    2
    
    script "/etc/ppp/ip-up" phase1_up; 
    script "/etc/ppp/ip-down" phase1_down;
    
  6. Have fun!

Mac下批量下载迅雷离线文件-AppleScript

  1. [Update]
    1. 2011年6月3日:
      添加了反序功能(默认开启),对非BT类批量下载链接进行倒序,功能开关请直接改代码。

代码整理,并增加了一些注释。

下载:ThunderLixian-110603

  1. 2011年4月28日:
    给AppleScript方法添加了BT类任务支持

新代码请自行打开Service查看,懒得贴上来了..

新Service下载:ThunderLixian-BTSupport

用法:对BT任务点击 "显示BT列表",之后勾选要下载的文件,然后运行Service。

  1. [NEW]Bookmarklet:
    研究了下JavaScript,现学现卖,于是有了个更通用的解决方案
    1. 添加书签:
      迅雷批量

将上方按钮拖到书签栏

  1. 用法:
    如图:

  1. 已知限制:

    1. Safari和Chrome测试可用,但是Firefox3.6无效,原因不知。

    2. 依然不支持BT类任务,哪天我有下到BT资源可能会解决。

  • [Old]AppleScript:
    1. 创建:
      打开Automator,创建一个Service
      拖放一个Action “Run AppleScript”
      复制下方代码进去,保存。
      如图:

    或者直接下载文件:ThunderLixian.workflow 解压放到 ~/Library/Services/

    1. 使用:
      用Safari打开迅雷离线网页,勾选你要下载的文件,然后运行Service

    如此,便会自动调用iGetter批量下载了。

    1. 局限:
      这个Service是随便写来自用的,只达到刚好够用的标准,所以很有局限性:

      1. 所勾选的文件请必须是已下载完成的,而且不支持BT类文件

      2. 调用iGetter下载,要用其它下载工具得自己改代码哦~

      3. 只支持Safari

    2. 初版代码:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      
      tell application "Safari"
      	if (exists document "迅雷会员-离线下载") then
      		set doc to document "迅雷会员-离线下载"
      		set src to "var syO = document.getElementsByName('ck');
      var syVal = syO.length;
      var syList=[];
      for(var i=0; i< syVal;i++){
          if(syO[i].checked == true){
          var taskid = syO[i].value;
          var linkId = 'dl_url'+taskid.toString();
          var oneLink = document.getElementById(linkId).value;
          syList.push(oneLink);
          }}
      syList;"
      		set downList to do JavaScript src in doc
      
      		tell application "iGetter"
      			set newDownList to {}
      			repeat with i from 1 to number of items in downList
      				set this_item to item i of downList
      				-- insert actions here
      				set newItem to {url:this_item}
      				copy newItem to the end of newDownList
      			end repeat
      			DownloadURL newDownList
      		end tell
      	end if
      end tell
  • 我的第一个iOS App -HappyLyric

    最初这个app的目的是练手+自用,当时App Store上的歌词类软件没一个令我满意的
    项目开始于大年初一,于正月底完成。
    写完自己用的很high的同时,也就想着顺便传到App Store上
    然后就是总计历时18天的上架审核
    两次提交皆因歌词的版权问题被拒,最后含泪砍功能才得以通过。
    期间也理解了歌词类软件渣的原因;

    由于自动网络下载歌词的功能被砍了
    结果,app成了一个纯粹的LRC Viewer, 需要通过iTunes File Sharing自己放入.lrc文件。

    [app 423535479]

    [appimg 423535479]

    Tip:如何设置VoodooHDA的NodesToPatch

    大部分参考自:http://www.projectosx.com/forum/index.php?showtopic=465

    进Linux ,开 Terminal ,执行

    cd ~/Desktop && mkdir CodecDump && for c in /proc/asound/card*/codec#; do f="${c/\/card/card}"; cat “$c” > CodecDump/${f//\//-}.txt; done && zip -r CodecDump.zip CodecDump

    将桌面上的 CodecDump.zip 带回OS X

    解开CodecDump.zip ,会有一些txt文件,打开他们,查看第一行,找到含有你声卡型号的文件

    例如我的ALC888就在 card0-codec#0.txt里

    下载我修改过的脚本 verbit

    解压到card0-codec#0.txt所在目录

    开Terminal,切换到Dump文件所在目录

    执行命令

    ./verbit card0-codec#0.txt

    打开VoodooHDA.kext/Contents/Info.plist

    NodesToPatch里需要设置的三个数值 Codec、Node、Config如上图所示

    若不需要某个Node,则将相应的Config值设为 0x40f000f0

    附上我的Info.plist作为参考

    Config值手动修改指南:

    参照上图,取前三个数值为例

    HOW to: Mac版魔兽世界更新提示“内部错误”的分析以及解决办法

    今天台服魔兽更新了4.0.3a,相信很多MAC玩家都会遇到更新问题

    發生內部錯誤,Blizzard更新程式無法進行更新。請聯絡Blizzard的技術支援部門。

    如下图

    很多人问,这该如何解决,很多人这么建议

    运行 Repair 程序修复

    不过,一般都是修复失败的结果
    于是,大部分人的解决办法是
    切换到Windows下完成更新,然后到《X-Only》下载最新的App

    但是,这个办法总是麻烦,而且上述问题依然存在,每次更新总得这么麻烦一次

    ====

    1. 分析部分(analyze part):

      那么有没有办法一劳永逸解决这个问题呢?抱着这个想法,我趁着这次更新,研究了一番这个问题


      首先,单单一个“内部错误”的错误提示没有提供任何有价值的信息,需要查查看有没有Log记录精确点的问题所在

    很容易在WOW目录下找到一个Logs文件夹,找到了一个关键文件

    World of Warcraft/Logs/Blizzard Updater Log.html

    于是我马上见到了关键的错误信息
    錯誤: 更新檔"mac-game-hdfiles/World of Warcraft.app/Contents/MacOS/World of Warcraft“無法安裝。
    (MD5 mismatch: expected 0×7058660C35AE508717519CF21B7A3AF0, actual 0xFB9666B037DCB8782339A1DCB2F3400B.)(PTCApply_BSDiff failed.)

    这句话说明,补丁升级需要目标文件的MD5值为 0×7058660C35AE508717519CF21B7A3AF0 ,但是现有文件的MD5却是 0xFB9666B037DCB8782339A1DCB2F3400B
    两者不匹配,版本不对,升级无法继续
    那么,文件“World of Warcraft” 在哪里呢
    首先,我定位到魔兽目录下的World of Warcraft.app文件,试着计算它的MD5值
    ”http://farm9.staticflickr.com/8017/7132083853_a50b197bb7.jpg">
    计算结果是:7058660c35ae508717519cf21b7a3af0

    这不是没问题吗?那为什么Updater计算出来的会是 0xFB9666B037DCB8782339A1DCB2F3400B

    是程序计算错误吗?不,肯定不是,因为很多人都能正常更新。

    那么就是说 Updater检查的不是这个文件,那它检查的是哪里的文件?

    MPQ!MPQ里也有这个文件

    于是我定位到了4个文件

    World of Warcraft/Data/zhTW/base-zhTW.MPQ
    World of Warcraft/Data/zhTW/backup-zhTW.MPQ
    World of Warcraft/Data/enTW/base-enTW.MPQ
    World of Warcraft/Data/enTW/backup-enTW.MPQ

    Mac下没有好用的MPQ工具,于是我切换到Windows

    用MPQ Editor打开base-zhTW.MPQ,解压World of Warcraft.app

    找到 World of Warcraft.app/Contents/MacOS/World of Warcraft ,计算它的MD5值

    fb9666b037dcb8782339a1dcb2f3400b !!! 我找到它了

    那么,为什么,MPQ里面的文件的MD5值为什么会不一样呢

    查看MPQ里的这个app的info.plist文件,我注意到它的版本是 4.0.0.12911 真是古老的版本

    那么出错的只有World of Warcraft.app这个文件吗?其它几个文件有没有错?

    经过对比,4个MPQ文件里的app版本统统错了

    那么解决办法出来了,把这MPQ里的5个app文件替换掉

    修复问题之前,想下出现这个问题的原因是什么

    我得出了一个结论

    Blizzard Updater每次更新只会升级当前系统的相关文件

    也就是说,你在Windows下更新,Blizzard Updater只会更新MPQ里Windows版的文件,对Mac版的5个.app文件置之不理,因此下次你用Mac版更新就会因为MPQ里的文件版本过旧而遭遇“内部错误”
    只要你在Windows下成功更新一次,以后也只能在Windows下更新

    同理,在Mac下成功更新一次,下次用Windows更新的话,相信你也会遇到“内部错误”

    ====

    解决方案(solution part):


    Step1: 复制当前正确版本的5个app文件
    World of Warcraft/Blizzard Downloader.app
    World of Warcraft/Blizzard Updater.app
    World of Warcraft/World of Warcraft.app
    World of Warcraft/World of Warcraft Launcher.app
    World of Warcraft/World of Warcraft Repair.app

    以及4个.MPQ文件
    World of Warcraft/Data/zhTW/base-zhTW.MPQ
    World of Warcraft/Data/zhTW/backup-zhTW.MPQ
    World of Warcraft/Data/enTW/base-enTW.MPQ
    World of Warcraft/Data/enTW/backup-enTW.MPQ

    Step2: 进入Windows系统,下载MPQ Editor, <传送门:下载页>

    用MPQ Editor打开base-zhTW.MPQ,将5个.app文件拖入其中

    Step 3: 之后保持Locale ID为Neutral,点击Rulesets按钮,选择World of Warcraft游戏

    Step 4: 文件覆盖提示,选择Yes All

    Step 5: 重要,一定要记得选择 Operations 菜单下的 Change(attributes) 命令

    Step 6: 对另外三个.MPQ文件重复Step 2~Step 5的操作

    Step 7:最后,回到Mac,将修改后的4个MPQ文件覆盖回原来位置

    现在,打开Launcher,你已经可以正常更新了,恭喜!

    然后,记住:下次不要用Windows更新了&下次你也没办法在Windows下更新了。

    Services:快速修正乱码的文件名

    使用OS X的时候,下载文件总是会遇到乱码的情况:

    搜索找不到令人满意的解决方案,于是我自己动手写了个服务(Services)

    图解:

    在乱码的文件上右击,选择ConvertFileName

    之后会弹出确认框,确认无误点击OK

    效果如下

    也支持文件夹改名

    Download===

    ConvertFileName.workflow

    解压至 ~/Library/Services/

    Tip:此服务用于因URL解码错误,呈“%xx”形式的文件名修复.默认设置尝试UTF-8/GB2312/GBK三种编码

    如果解码失败,请参考文件源,自行修改文件,添加相关的编码

    ======

    Windows下SSH+PAC全局自动代理设置

    首先,给出整个设置的流程图:



    1. SSH客户端的设置



      • 下载安装 Bitvise Tunnelier

      • Login选项卡填上服务器地址,用户名,密码

      • Option选项卡On Login处去掉Open Terminal和Open SFTP

      • Services选项卡开启SOCKS / HTTP Proxy Forwarding

        • Listen Interface处,只本机使用就保持默认的127.0.0.1 ;要共享多机使用就填你的内网IP或外网IP

        • Listen Port自己指定个端口
      • Save Profile保存配置
    2. 设置http代理转向

      • Bitvise Tunnelier提供的只是socks5代理,我们使用Privoxy提供一个HTTP代理服务,将HTTP协议请求转换为socks5协议,并将连接转发到Bitvise Tunnelier
      • 下载安装 Privoxy
      • 打开Main Configuration

        • 搜索forward-socks5 ,找到一行 # forward-socks5 / 127.0.0.1:8118,去掉行首“#”注释符,IP及端口改为在上一步Bitvise所设置的
        • 如果需要共享多机使用,则再搜索listen-address,找到一行listen-address  127.0.0.1:8118 ; 将IP改成你的内网或外网IP
    3. PAC的设置

      • 从 autoproxy2pac 上获取pac文件,代理方式选择HTTP, IP和端口填上一步Privoxy中listen-address的参数,下载文件或者获取在线版本地址
      • 设置internet选项

        • 打开internet选项,选择 连接 选项卡
        • 使用拨号上网的点击 设置,局域网通过路由上网的点击 局域网设置
        • 勾选 使用自动配置脚本,在其下方地址处填入PAC文件的URL地址