Emacs — jabber

就是把 gtalk 放到 emacs 里,AUR 里神马都有。。

yaourt -S emacs-jabber

然后简单地配置一下

(require 'jabber)
(setq jabber-account-list
      '(("bee@lazybee.me"
         (:network-server . "talk.google.com")
         (:port . 443)
         (:connection-type .  ssl))))

这个语法高亮插件竟然没 Lisp 的语法高亮。。用的 Scala 的,将就着看。。
常用的命令
连接服务器 [Meta x] jabber-connect-all 快捷键 [Ctrl x][Ctrl j][Ctrl c]
打开聊天 [Meta x] jabber-chat-with 快捷键 [Ctrl x][Ctrl j][Ctrl j]
添加好友 [Meta x] jabber-send-subscription-request

Emacs — 快捷键

Emacs 里略高级点的快捷键备忘,持续更新

粘贴前一次复制的东西
[Meta 2][Ctrl y]

删除到( Vim -> df )
[Meta z]

光标回到上次编辑的行( Vim -> ”)
[Ctrl u][Ctrl SPC]

跳到对应的括号( Vim -> %)

[Ctrl Meta f]   [Ctrl Meta b]

Read more »

Erlang Web 框架 cowboy BUG 一枚

为熟悉 Erlang ,手头有个 Web 项目就用 Erlang 在写,用的 cowboy<https://github.com/extend/cowboy> 框架

在处理 Cookie 的时候发现一个问题:同时写多个 Cookie ,后一个会把前一个覆盖,只会留下一个

{ok, Req2} = cowboy_http_req:set_resp_cookie(<<"uid">>, Uid, [{path, "/"}], Req),
{ok, Req3} = cowboy_http_req:set_resp_cookie(<<"session_id">>, SessionID, [{path, "/"}], Req2),

执行这个之后,在浏览器里查看 Cookie,只有 session_id 而没有 uid

Read more »

用 Erlang 的 gb_trees 实现了一个 memcached

最近蛋疼在用 Erlang 写 web 程序,这货是存 session 用的
定时器部分是拍脑袋拍的,不知道正规的实现应该是什么样子,想到这样,就这么写了..

Read more »

ActionScript3.0 语法快速参考

//类的写法
package x{
    final public class B{//final表明该类无法被继承
        final function hi(){//该函数无法被重载
        }
    }
    dynamic public class C{//动态类允许动态添加修改属性和方法
    }
    public class A extend B{
        //变量声明及默认值
        private var a:Boolean = false;
        var b:int = 0;
        var c:Number = NaN;//整数,无符号整数,浮点数
        var d:Object = undefined;//动态类
        d.left = "青龙";
        var e:String = null;
        var f:uint = 0;//常用于颜色

        //重载函数,无返回值
        override public function say(): void{
            //调用父类的函数
            super.say()

            //在console中输出信息
            trace(a);
        }
        //存取器方法,实例可以通过 x.abc 来访问 private 变量
        public function set/get abc(){}
    }
}

//索引数组的创建:
var myArray:Array = new Array();
var myArray:Array = new Array(5);//五个元素的数组
var myArray:Array = new Array("我","笨");
var myArray:Array = [];
var myArray:Array = [12, true, "hi"];
//只有一个length属性
for(var i:uint = 0; i < myArray.length; i++)
{
    trace(myArray[i]);
}
//另两种遍历
for(var key:String in myArray)
{
    myArray[key];
}
for each(var element:* in myArray)
{
    trace(element);
}

//关联数组
var a:Object = { key1: v1, key2: v2, key3: v3 };
var a:Object = new Object();
a.key1 = v1;
a["key2"] = v2;
//使用Dictionary类,可以用对象作为键

 

Three.js canvas 问题

问题发现于 three.js examples 中的 canvas_interactive_particles . 问题截图如下:

右边的尾巴是紫色的圆形移动时留下的,会在该部分重绘的时候被抹掉,应该属于 bug .

绘图函数如下:

context.arc( 0, 0,  1 , 0, PI2, true );

如果将第三个参数1改成更大的数值,拖尾现象将更加明显.推测是包围盒的计算问题.

解决方法是采用小于1的数值:

context.arc( 0, 0, 0.5, 0, PI2, true );

如果想绘制更大的粒子,采用如下方式放大:

particle.scale.x  =  particle.scale.y  =  100;

Hadoop 操作备忘

DateNode 测试(添加、删除、灾难)
测试前:
master.hadoop:  248
secondaryname.hadoop:  106
slave104.hadoop:   104
slave110.hadoop:   110
slave250.hadoop:   250 (准备加入,不在集群内)
格式化DateNode:

hadoop namenode -format

平衡DateNode:

hadoop balancer
 Read more »

ArchLinux — zsh

用 zsh 的人大多都在用 oh-my-zsh 吧,AUR 里也找得到~不过这个东西也有很多让人不爽的地方,最典型的就是  [Meta .] 补全上一条命令的最后一个参数,让这家伙改成了回到上一层目录。

扫了一下目录发现 oh-my-zsh/lib/key-bindings.zsh 这个文件里有一行 bindkey -s ‘\e.’ “..\n”,直接注释后问题解决。

但这个解决方案太不优雅了,废话不多说

echo "bindkey '\e.' insert-last-word " >> ~/.zshrc

 

start webGL!

为了参加 HTML5 contest 开始学习 webGL 啦! 教程来自 HiWebGl 网站~

关于浏览器对 webgl 的支持问题,详情请戳这里 → http://www.scriptlover.com/static/1483-%E6%B5%8F%E8%A7%88%E5%99%A8-WebGL

学习时发现从第五章开始, chrome 的显示出现问题,原因是从第五章的demo开始使用纹理,在 win7 下的解决方案是右键单击 chrome 的快捷方式,在目标框的路径后加入参数 -allow-file-access-from-files, 用设置好的快捷方式打开chrome,网络的 demo 就可以正常显示了.但是在本地的 demo 直接打开仍然显示不正常,解决方法是将 html 文件拖动到设置好的 chrome 快捷方式上,用设置好的参数打开,就可以正常显示了.

另外火狐浏览器本来在我电脑上可以正常显示所有的 demo, 但是重装系统以后不知道为什么所有 demo 都打不开了,出现”can’t initialize webgl”的提示,解决方法是在地址栏输入 about:config ,然后将 webgl.force-enabled 设置为true, 将 webgl.disabled 设置为 false (默认).查了下,是因为 firefox 升级把参数改掉了, force-enabled 的作用好像是” ignore the blacklist “(意思是我的显卡被列入黑名单了吗=___=!).

而且 firefox 的3D方式查看网页的功能也不见了.调出来的方法戳这里,也是要改参数(我的显卡是被赤果果的鄙视了啊摔) → http://blog.alphatr.com/firefox-11-3d-webpage.html, 根据参数设置推断这个功能应该也是 webgl 实现的 .

——————————————————傲娇的分割线———————————————————

下面是学习心得.据说 webGL 继承自 openGL2.0.由于之前学过 DX 而没学过 openGL ,所以学习的时候会与 DX 对应.同样经历的可以参考下….

webGL 使用硬件加速渲染,于是要写 shader, 使用 GLSL ,和 dx 的 HLSL 差不多 .

shader 分为 顶点着色器 vertex shader 和 片元着色器 fragment shader (这个跟dx的pixel shader 差不多,我还是喜欢 pixel 这个叫法).下面贴下一段示例:

<script id="shader-vs" type="x-shader/x-vertex">
    attribute vec3 aVertexPosition;
    attribute vec2 aTextureCoord;

    uniform mat4 uMVMatrix;
    uniform mat4 uPMatrix;

    varying vec2 vTextureCoord;

    void main(void) {
        gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);
        vTextureCoord = aTextureCoord;
    }
</script>

 

<script id="shader-fs" type="x-shader/x-fragment">

    precision mediump float;

    varying vec2 vTextureCoord;

    uniform sampler2D uSampler;

    void main(void) {
        gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));
    }
</script>

shader 里的 attribute 值就相当于HLSL里的 Input 值, uniform 相当于 const 常量,这些值都来自于javascript, varying 相当于 output , varying 值从顶点着色器输出到片元着色器,然后片元着色器进行处理后 gl_FragColor 输出的就是每个像素的颜色值了.

通过html5的 canvas 标签可以很方便的将 webGL 的显示结果像一张图片一样的嵌入网页:

<canvas id="lesson05-canvas" style="border: none;" width="500" height="500"></canvas>

————————————————-???————————————————————————

写的东西被批评了T___T,不写了….

windows当前目录问题

做泡泡堂编辑器的时候,第一次载入地图时没有错误,但是第二次载入的时候就会出现文件加载错误,最后发现原因是打开其他文件时windows的当前工作目录改变了,然后再使用相对路径载入文件时就会出现错误.

解决方法:

调用  SetCurrentDirectory() 函数设置当前路径或者使用绝对路径.绝对路径的设置见上篇日志.