Pages:  1 2 tools – lytsing's Blog

Category: tools

  • 遗憾!mytget 无法加入 homebrew

    mytget 是什么?

    Linux下的下载工具,大家使用比较多的是wget,curl,而他们不支持多线程下载,所以产生了mytget,开始是由南开大学的xiaosuo写的,放在sf上。第一次知道这工具,是2007年在厦门网宿科技工作时同事介绍,用得很爽的一点是在不同的机房拷贝文件很快。

    我觉得一个软件要有生命力,就需要不断的更新。似乎过了几年,mytget一直没有更新过,在新版本的Linux gcc高版本编译不通过,Linux新手一般遇到也不知道从何下手,也就放弃了尝试使用这个软件的机会。所以11年我就接手过来维护,放在github上,原作者也过来参与,时不时贡献点代码。

    最近几年都在mac下工作,下载软件都是brew install,那干脆把 mytget 放入 homebrew。

    git clone https://github.com/iboxpay/homebrew.git
    brew create https://github.com/lytsing/mytget/archive/v1.1.2.tar.gz
    git checkout -b mytget
    brew audit --strict mytget
    brew edit mytget
    cp /usr/local/Library/Formula/mytget.rb  Library/Formula/
    git add Library/Formula/mytget.rb
    git commit -m "add Library/Formula/mytget.rb"
    git push origin mytget

    文件的sha256 通过 shasum -a 256 v1.1.2.tar.gz 获得,然后迫不及待的 创建 pull request。dunn review 代码,说要先去掉注释,以及增加 test 功能。brew create 生产的 mytget.rb 头部有说明:

    PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST!

    没注意看,就提交 pull request了。最后还是被拒绝,说是小众工具,fork、star的数量都不超过10人。详情:https://github.com/Homebrew/homebrew/pull/42785

    由此可见,搞开源对代码质量要求非常高,多个空格,空行都不行,review的结果就是:

    “Remove all the comments, please!”
    “Please remove this empty line.”
    “Please remove the trailing space.”

    事前跑一下 brew audit –strict mytget 检查配置文件。

  • LDAP 使用备忘录

    我们的运维工程师搭建了一个AD, windows下的,公司工作的wifi 帐号密码接入了 LDAP,很方便实用。最近一段时间,总结了上班工作时间消耗分布,发现很多人都是给我发消息,svn密码忘记了,新员工开个git/svn 帐号,烦得不得了。幸好代码及时从svn转为git,有了gitlab,管理确实方便。本周一口气把研发的几个内部系统接入LDAP:

    • gitlab
    • svn
    • redmine
    • jenkins
    • zentao

    我们使用windows  AD, 登录名属性是 sAMAccountName,如果使用openLDAP,则是uid。

    配置jenkins才发现,root DN不能带有空格,否则死活连不上。jenkins 使用ldap后,超级管理员的帐号老是登录不上,后面干脆在 config.xml 配置文件,将 admin改为我自己的帐号。

    禅道开源版有个 LDAP插件,一年没更新也是使用不了,fork 他的代码修改,见https://github.com/iboxpay/ldap ,主要是修改 系统管理员帐号admin跳过LDAP 认证,不影响正常管理使用。

    搞配置管理一定要细心、耐心,出现问题,优先从系统日志查找审断并适当Google。禅道是其他同事管理的,他自己折腾了很久搞不定,找了半天,原来是  sAMAccountName 单词写错成 sAMAcountName。手动敲字不要太自信,很容易笔误 ,要ctrl+c,ctrl+ v 才行。

  • 编码生成新浪微博短链接

    短链接是个好东西,用在短信里省了不少文字。新浪微博API提供短链接的接口,但要申请weibo appkey ,一下子搞清楚什么是oAuth2.0,估计折腾一段时间。有现成的网页转换地址 http://www.henshiyong.com/tools/sina-shorten-url.php ,在此基础上修改即可。

    用浏览器查看 的代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset="UTF-8" />
    <title>在线版新浪微博短链接生成器</title>
    <meta name="description" content="短链接生成器,新浪微博短连接生成器,在线版新浪微短连接生成,方便快捷完成您的URL转换!" />
    <meta name="keywords" content="短链接生成器,新浪微博短连接生成器,在线版新浪微短连接生成" />
    <style type="text/css">
    textarea{border:5px solid;border-radius:8px 8px 0 0;width:400px;padding:8px;}
    body{text-align:center;margin:150px auto;}
    </style>
    </head>
    <body>
    <h2>请输入你需要转换的网页地址</h2>
    <form action="" method="post">
    <input type="" name="url" style="width:400px"/><br/>
    <input type="submit" value="转换" name="submit">
    </form>
    </body>
    </html>

    小部队先上,用Ruby写个简单脚本,发 POST 请求。

    [deli@violet ~]$ ruby sina-shorten-url.rb

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset="UTF-8" />
    <title>在线版新浪微博短链接生成器</title>
    <meta name="description" content="短链接生成器,新浪微博短连接生成器,在线版新浪微短连接生成,方便快捷完成您的URL转换!" />
    <meta name="keywords" content="短链接生成器,新浪微博短连接生成器,在线版新浪微短连接生成" />
    <style type="text/css">
    textarea{border:5px solid;border-radius:8px 8px 0 0;width:400px;padding:8px;}
    body{text-align:center;margin:150px auto;}
    </style>
    </head>
    <body>
    <h2>新浪短连接已经生成:</h2><textarea>http://t.cn/h51yw</textarea><h2>继续转换</h2></body>
    </html>

    提取 textarea 标签数据即可,使用正则表达式最方便的了。

  • svnlook: Expected FS format ‘2’; found format ‘4’

    原来在fc12安装的svn是:
    [deli@athena ~]$ rpm -qa|grep subversion
    subversion-javahl-1.6.13-1.fc12.1.i686
    subversion-libs-1.6.13-1.fc12.1.i686
    subversion-1.6.13-1.fc12.1.i686

    将旧的代码仓库数据移到新的服务器,装的是 rhel 5.4, svn手动安装 subversion-1.6.9。
    可以 update,但提交代码时发现:

    svnlook: Expected FS format ‘2’; found format ‘4’

    也是同样的 svn版本,可能新的服务器是64位。只好先把svn降级了。

    mv resp resp_bak.20110121
    svnadmin create --pre-1.5-compatible resp
    svnadmin dump resp_bak.20110121 |svnadmin load resp
    svnserve -d -r /var/svn/web/resp

    重新 commit, ok.

  • Bluehost安装svn

    环境:

    Bluehost: 64位主机,可以通过 uname -a 命令查询,含有 x86_64 的就是64位系统了。
    svn: 目前最新稳定版本1.6.15。

    Bluehost用户目录下有个.local 目录,显然是为用户装自己的软件而提供的,那么以后我们要装的软件,都应该放在 $HOME/.local 目录下(来源:http://helpdesk.bluehost.com/index.php/kb/article/000530)。

    整个过程如下:

    mkdir ~/src
    cd ~/src
    
    wget http://subversion.tigris.org/downloads/subversion-1.6.15.tar.gz
    wget http://subversion.tigris.org/downloads/subversion-deps-1.6.15.tar.gz
    
    tar xvf subversion-deps-1.6.15.tar.gz
    cd subversion-1.6.15
    cd apr
    ./configure -prefix=$HOME/.local
    make; make install
    
    cd ..
    cd apr-util/
    ./configure -prefix=$HOME/.local --with-apr=$HOME./local
    make; make install
    
    cd ..
    cd neon/
    ./configure -enable-shared -prefix=$HOME/.local
    make; make install
    cd ..
    rm subversion-1.6.15 -rf
    
    
    tar xvf subversion-1.6.15.tar.gz 
    cd subversion-1.6.15
    wget http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz
    tar xvf sqlite-amalgamation-3.6.13.tar.gz 
    mkdir sqlite-amalgamation
    cp sqlite-3.6.13/sqlite3.c sqlite-amalgamation
    
    ./configure --prefix=$HOME/.local --without-berkeley-db --with-zlib=/usr/ --with-ssl LDFLAGS="-L/lib64"
    make; make install 

    后面报错:

    cp .libs/mod_dav_svn.soT /usr/lib64/httpd/modules/mod_dav_svn.so
    cp: cannot create regular file `/usr/lib64/httpd/modules/mod_dav_svn.so’: Read-only file system

    没关系,我只是用来做svn client就行了。

    最后,
    vi ~/.bashrc
    export PATH=$HOME/.local/bin:$PATH