解决本地多个 ssh-key的问题

情景描述:

需要用多个账号用在不同的git 服务上,例如 github 是 xxxx@gmail.com, 公司的git 服务对用的账号是 xxxx@xxxx.com,由于ssh-key 是和邮箱绑定的,所以我们得想办法让不同邮箱的ssh-key共存并且保证都能正常验证不同的git 服务。

解决办法

#为github配置新的key ,取名为github

~/.ssh$ ssh-keygen -t rsa -C "xxx@gmail.com" -f ~/.ssh/github

~/.ssh$ ls
github github.pub id_rsa id_rsa.pub known_hosts

#其中默认的id_rsa是公司server用的

在github帐号设置里粘贴刚刚生成的key之后:

#需要配置一下
~/.ssh$ sudo vi ~/.ssh/config

将类似以下内容复制进去保存:

host github
user git
hostname github.com
port 22
identityfile ~/.ssh/github

测试:

~/.ssh$ ssh -T github

会提示连接成功。

兼容多种规范的模块

注:这里的兼容多种规范指的是:AMD、CMD 及 Node,代码摘自《深入浅出Nodejs》。

;(function (name, definition) {
  // 检查上下文环境是否为 AMD 或 CMD
  var hasDefine = typeof define === 'function',
  // 检查上下文环境是否为 Node
  hasExports = typeof module !== 'undefined' && module.exports;

  if (hasDefine) {
    // AMD 环境或 CMD 环境
    define(definition);
  } else if (hasExports) {
    // 定位为普通 Node 模块
    module.exports = definition();
  } else {
    // 将模块的执行结果挂在 Window 变量中,在浏览器中 this 指向 window 对象
    this[name] = definition();
  }
})('hello', function(){
  var hello = function() {};
  return hello;
});

The best way to load external JavaScript

函数代码:

function loadScript(url, callback){

    var script = document.createElement("script")
    script.type = "text/javascript";

    if (script.readyState){  //IE
        script.onreadystatechange = function(){
            if (script.readyState == "loaded" ||
                    script.readyState == "complete"){
                script.onreadystatechange = null;
                callback();
            }
        };
    } else {  //Others
        script.onload = function(){
            callback();
        };
    }

    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
}

使用方式:

<script type="text/javascript" src="http://your.cdn.com/first.js"></script>
<script type="text/javascript">
loadScript("http://your.cdn.com/second.js", function(){
    //initialization code
});
</script>

代码摘自: http://www.nczonline.net/blog/2009/07/28/the-best-way-to-load-external-javascript/

网页中复制和剪切

Web 上对文字的复制或剪切到用户剪切板,从来就不是个方便容易的事,以前我们经常的做法有:

1、针对 IE 浏览器,用 window.clipboardData.setData()

2、采用flash的方式,模拟一个层,再来复制

方法1难以做到兼容全部浏览器,方法2虽然兼容所有浏览器,但是由于Flash自身的问题,很难说是个完美的解决方案。

那么来看看今天的主角: Document.execCommand() ,原文地址:http://updates.html5rocks.com/2015/04/cut-and-copy-commands,这里给出相应的在线实例及截图

演示

http://www.52wulian.cn/demo/copy-cut.html

操作截图

屏幕快照 2015-04-25 21.54.51

浏览器支持

IE 10+, Chrome 43+,  Opera 29+ 支持上述命令;

Firefox 需要进行相应的设置(参考这里 https://developer.mozilla.org/en-US/docs/Mozilla/Preferences/A_brief_guide_to_Mozilla_preferences 和 https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand)才能正常使用;

Safari 不支持。

更多信息请查阅原文:http://updates.html5rocks.com/2015/04/cut-and-copy-commands

 

 

 

Fis 压缩静态资源时过滤某些目录

最近在恶补前端工作流相关内容,才刚刚接触,只知道一些工具 grunt,bower,yeoman,gulp 还有百度的 fis,至今还没明白 fis 和他们的区别。

fis 最大的方便就是内置相关的服务器,php、java 都支持,还有静态资源压缩,加Md5戳功能,方便实用。

练手的时候就用 bower 下载一些常用的组件,并拷贝相应的文件到 生产目录(这样bower_components 相当于没用),然后用 fis 进行发布,在进行静态资源压缩时,fis 会将 bower_components 目录进行相应的处理,这是我不想要的,更为严重的时,还报错 -_- !

[ERROR] optimizer.uglify-js: Unexpected token punc «)», expected punc «,» [/Users/john/Github/hcharts/v2/bower_components/highstock/js/modules/map-parser.src.js:221:0]

就像 Git,Svn 都有过滤某些目录或文件一样,fis 应该也有相应的配置,于是翻阅官方文档,找到解决办法如下:

在 fis-config.js 文件中写如下内容:

fis.config.merge({
    roadmap : {
        path : [{
            reg : '/bower_components/**',   // 注册目标路径
            useOptimizer : false            // 不使用静态资源压缩
        }]
    }
});

文档对应的地址是:http://fis.baidu.com/docs/api/fis-conf.html#roadmap

树莓派学习笔记

1、树莓派示意图

raspberry-pi注:下方为树莓派GPIO接口编号示意图。

2、GPIO

gpio更多详见:https://projects.drogon.net/raspberry-pi/wiringpi/pins/

3、wiringpi

对于没有学过python的我,更喜欢用C写底层代码,所以选择了wiringpi。

关于wiringpi相关网址

  • 项目地址:https://projects.drogon.net/raspberry-pi/wiringpi/
  • GPIO: https://projects.drogon.net/raspberry-pi/wiringpi/pins/
  • 文档:https://projects.drogon.net/raspberry-pi/wiringpi/functions/

安装wiringpi

#sudo apt-get install git-core   

#git clone git://git.drogon.net/wiringPi

#cd wiringPi
#./build

一个简单的wiringpi实例代码

#include 
#include 
int main()
{
        if(wiringPiSetup() == -1)
                exit(1);
        pinMode(0,OUTPUT);
        pinMode(1,OUTPUT);
        pinMode(2,INPUT);
        pinMode(3,INPUT);
        while(1) {
                int value1 = digitalRead(3);
                int value2 = digitalRead(2);
                digitalWrite(0, value1);
                digitalWrite(1, value2);
                delay(1000);
        }
}

编译

gcc -o relay relay.c -L/usr/local/lib -lwiringPi

我心中有猛虎,细嗅蔷薇

商谈着,各执一词,纷纷扰扰
林林总总的欲望,掠取着我的现在
将理性扼杀于它的宝座
我的爱情纷纷越过未来的藩篱
梦想解放出双脚,舞蹈着
于我,穴居者攫取了先知
佩带花环的阿波罗
向亚伯拉罕的聋耳边吟唱
我心里有猛虎在细嗅着蔷薇
审视我的心灵吧,亲爱的朋友,你应战栗
因为那里才是你本来的

 

余光中译,英文原文如下

In me, past, present, future meet
To hold long chiding conference.
My lusts usurp the present tense
And strangle Reason in his seat.
My loves leap through the future’s fence
To dance with dream-enfranchised feet.
In me the cave-man clasps the seer,
And garlanded Apollo goes
Chanting to Abraham’s deaf ear.
In me the tiger sniffs the rose.
Look in my heart, kind friends, and tremble,
Since there your elements assemble.

 

Discuz添加微博关注按钮

先来张结果图,有图有真相

discuz

你也可以访问 http://bbs.hcharts.cn 查看效果

实现步骤

1、获取微博关注按钮

去新浪微博开发平台,按照提示添加关注按钮,地址是:

http://open.weibo.com/widget/followbutton.php

weibo

关于添加微博关注按钮在这个页面有详细的步骤,按照提示在合适的地方添加或修改代码即可,下面详细说说我是如何实现目前的效果的。

2、修改html文档申明

打开 template/default/common/header_common.html,将html 文档申明修改为

<html xmlns:wb="http://open.weibo.com/wb">

3、添加WB.JS

打开 template/default/common/foot.html,在 </body>之前添加 wb.js

<script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js" type="text/javascript" charset="utf-8"></script>

4、添加按钮代码

打开 template/default/common/pubsearchform.htm,在合适的地方添加 关注按钮代码,我是在搜索框的位置前添加的代码,所以我修改的部分代码是

<table cellspacing="0" cellpadding="0">
 <tr>
 </td>
 <td style="padding-left:10px;">
 <wb:follow-button uid="3933891577" type="red_2" width="106" height="24"></wb:follow-button>
 </td>
 <td class="scbar_icon_td"></td>
 <td class="scbar_txt_td">
 <input type="text" name="srchtxt" id="scbar_txt" value="{lang enter_content}" autocomplete="off" x-webkit-speech speech />
 </td>

至此,为discuz添加微博关注按钮已经完成,如果你在添加关注按钮过程中有疑惑,请联系我。

HCode v1.0使用文档

由于中文文字显示效果不理想,加上本人的一点点完美主义及强迫症原因,所以HCode的关于页面都是用英文写的,本文是对 http://code.hcharts.cn/about.html#usage 的一个中文补充。

如何使用HCode

1、创建代码

访问 http://code.hcharts.cn,HCode的右侧为代码名字、描述填写及js库选择,右侧有Javascript、html、css代码编辑及结果显示窗口。

这里有几个需要注意的事项:

  • Html和Javascript代码为必填的(似乎不合理)
  • 你也可以在Html代码编辑器里引入外部(或者说HCode没有内置的)js库文件,详见下图37
  • Javascript代码编辑只接受js代码,否则将运行出错,最常见的错误就是将“<script src=’..’></script>”这样的代码也放在js代码里,这是不能接受的!47

2、运行

当你的代码都编写完毕后,你可以点击“Run”按钮进行代码运行操作, 正常情况下右侧“Result”窗口即可看到结果。

3、保存或更新

在保存之前,请给你的代码取个名字及给个简单的描述。这些操作也可以再保存后再提交更新。

58

需要注意的是,如果你是第一次保存代码,系统会提示你需要设置一个自己的个性域名,你的代码将可以通过设定的域名及编码来访问。

44

完成上述操作后,点击“Update”按钮,你的代码就保存成功了。

如果你当前编辑的是别人的代码,这时候更新操作的实际意思是“Fork”别人的代码。

4、分享

代码保存后,你可以通过分享链接、分享结果或者嵌入到你的页面展示给别人。

分享链接及结果很简单,这是重点说明嵌入到页面的一些参数

http://code.hcharts.cn/{your_domain}/{code}/{tables}
  • {your_domain} 是你之前设置的个性域名
  • {code} 为当前代码的编号
  • {tables} 分享的内容,有 “result”、“javascript”、“html”、“css” 可选,这几个table是可以混合使用的,并用“,”来分隔,例如“result,javascript,css”、“css,html”

一些实例:

  • http://code.hcharts.cn/highcharts/hhhhhm/result
  • http://code.hcharts.cn/highcharts/hhhhhm/result,js,html
  • http://code.hcharts.cn/highcharts/hhhhhm/result,css,js,html
  • http://code.hcharts.cn/highcharts/hhhhhm/css,js,html,result

嵌入页面的具体效果:

对应的代码是:

<iframe width="100%" height="400" src="http://code.hcharts.cn/highcharts/hhhhhn/result,js,html" allowfullscreen="allowfullscreen" frameborder="0"></iframe>

ok,使用文档就这些了,如有你有疑问或遇到困难,请联系我或者在本文下方留言,Thanks。