本站由Gor生成

北京,北京 2016-07-17

年度北京之旅,畅谈nutz的未来,畅谈nutz团队的未来

nutz websocket nginx maven 配合使用 2016-04-20

起因

很久以前,用jetty玩过websocket,为了nutz.cn的自动提醒功能,又实践了一次websocket.

websocket需要服务器端,nginx,页面端,同时配合,才能工作.

页面端

        var ws;
		var WS_URL = window.location.host+"${base}/yvr/topic/socket";
		if (location.protocol == 'http:') { // 需要特别注意的地方,根据http/https协议选不同的websocket前缀
			ws = new WebSocket("ws://"+WS_URL); // 普通http用ws,全称WebSocket
		} else {
			ws = new WebSocket("wss://"+WS_URL); // https环境下需要wss协议,全称WebSocket Secure
		}
		
		ws.onmessage = function(event) { // onmessage 特指服务器端发送消息过来
		    var re = JSON.parse(event.data);
		    _replies_count = re.count;
		    var n = new Notification(re.data, re.options); // 这里使用了Chrome Notification API
			n.onclick = function() {
				location.reload();
			};
		};
		window.setInterval(function(){ // 定时查询
			ws.send(JSON.stringify({id:'${obj.topic.id}',replies:_replies_count}));
		}, 5000);

香港打疫苗?你想多了吧 2016-03-24

本文章非专业意见,非有偿推荐,不喜勿看,不喜勿转. 要转的话必须完整转载,不准扣字眼!!!

别跟我讨论什么”疫苗之X”,“驳疫苗之X”,俺不感兴趣. 俺去之前就不知道这事,根本不是因为”疫苗之X”的原因去HK.

请先回答下面的问题,免得浪费您的时间

  1. 有女朋友没? 有老婆没?
  2. 有异性炮友没?
  3. 有孩子没?

参考答案

  1. 鉴于能找到这个文章的大多数是程序员,所以,答案基本上是”否”
  2. 最近coder圈基情无限,再加上全球最大同性交友网站(github)的推波助澜,所以,答案基本上是”否”
  3. 没女朋友,没异性炮友,哪里孩子? 否,难道一起睡就能有孩子吗??!! 一起睡起码是炮友啊!! 喜当爹的话,更不要提了.

恩, 再见. 别往下看了. 都没有,你还不是想多了?!!!!

python fuse 记录 2016-03-14

[FUSE https://zh.wikipedia.org/wiki/FUSE]

常用fuse api方法

struct fuse_operations {
    int (*getattr) (const char *, struct stat *);
    int (*readlink) (const char *, char *, size_t);
    int (*getdir) (const char *, fuse_dirh_t, fuse_dirfil_t);
    int (*mknod) (const char *, mode_t, dev_t);
    int (*mkdir) (const char *, mode_t);
    int (*unlink) (const char *);
    int (*rmdir) (const char *);
    int (*symlink) (const char *, const char *);
    int (*rename) (const char *, const char *);
    int (*link) (const char *, const char *);
    int (*chmod) (const char *, mode_t);
    int (*chown) (const char *, uid_t, gid_t);
    int (*truncate) (const char *, off_t);
    int (*utime) (const char *, struct utimbuf *);
    int (*open) (const char *, struct fuse_file_info *);
    int (*read) (const char *, char *, size_t, off_t, struct fuse_file_info *);
    int (*write) (const char *, const char *, size_t, off_t,struct fuse_file_info *);
    int (*statfs) (const char *, struct statfs *);
    int (*flush) (const char *, struct fuse_file_info *);
    int (*release) (const char *, struct fuse_file_info *);
    int (*fsync) (const char *, int, struct fuse_file_info *);
    int (*setxattr) (const char *, const char *, const char *, size_t, int);
    int (*getxattr) (const char *, const char *, char *, size_t);
    int (*listxattr) (const char *, char *, size_t);
    int (*removexattr) (const char *, const char *);
};

answer to life everything and the universe 2015-12-02

这是一篇胡言乱语,异想天开的文章,请跳过.

终极答案

“The Hitchhiker’s Guide to the Galaxy”中给出的答案是42.恩, yes or no.

若不知道问题是什么,那答案有何意义? 42是不是终极答案,完全取决与你是否认可它是不是终极答案(就是你想要的答案,起码看起来像那么一回事的答案)

人类的延续

有时候,我会想, 人类最终会怎样, 是不是会延续下去,或者被AI所灭, 但如果该AI就是人类创造的,那这是不是人类的延续呢??

nutzcn 2015-11-01

上一篇博客是9月9号,那时候Nutz社区还没开始coding,现在有累计235个”问答”的帖子,甚为欣慰

为啥有这种想法

为Nutz弄个社区,或者叫论坛, 这事老早就想了, 例如早就失败告终的 ngqa

长期以来都是QQ群里解答,效果就是”答完就消失”, 不会传播,不可索引, 重复的问题几十次几百次地问

怎样写起来的

nutzbook完成后, nutz-book-project已经有个框, 要不就加上模块叫YvrModule吧(只有胖五问过Yvr是啥意思,哈哈)

然后逐步加上了论坛该有的基本功能, 同时加上一些特色(例如推送到手机,跨屏二维码,U2F登陆)

至于界面(一直的痛…),直接拿cnodejs.org的页面模板改, 毕竟现在还是看脸的时代(真的很坑)

至于怎么让大家去发帖,这个就比较暴力了,QQ一概不回答Nutz相关的问题!!! 虽然偶尔破例,但效果还是可以的

自己用起来很爽

这半年的事 2015-09-09

不知道何时开始,不敢动笔写博客

2015年, 写了nutzbook ^_^

公司平日的工作大多就是修修补补,填各种的坑,没啥起色

nutz方面, 在nutzbook的推动下, 为nutzmore加了不少插件

zozoh主导的walnut进展好快 ^_^

docker最近很火

ffmpeg编译一个仅带h264解码功能的库 2015-09-08

用的是ffmpeg当前最新的2.7.2

支持软解和vdpau硬解 支持解码文件和rstp

足够了, 静态链接之后,strip之后,目标程序小于4mb,压缩后不到2mb

一如既往上代码:

./configure --enable-nonfree --enable-vdpau --enable-gpl --enable-static \
	--disable-everything --enable-decoder=h264 --enable-decoder=aac  --enable-decoder=h264_vdpau \
	--prefix=/home/wendal/build --enable-parser=aac --enable-parser=h264 --enable-protocol=rtsp \
	--enable-demuxer=h264 --enable-demuxer=aac --enable-vdpau --enable-protocol=file --enable-outdevs

因为不需要压缩h264, 所以无需x264

因为ffmpeg已经内置aac, 所以不需要额外添加

搬瓦工换机房换ip之后不能连外网 2015-07-21

昨晚把nutzbook所在的vps换了机房, 自然ip也更换了

然后,突然发现怎么不能ping外网呢?

[root@nutzbook ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
^C
--- 8.8.8.8 ping statistics ---
74 packets transmitted, 0 received, 100% packet loss, time 74016ms

[root@nutzbook ~]# ping 114.114.114.114
PING 114.114.114.114 (114.114.114.114) 56(84) bytes of data.
^C
--- 114.114.114.114 ping statistics ---
11 packets transmitted, 0 received, 100% packet loss, time 10547ms


[root@nutzbook ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 venet0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0

在android上运行io.js 2015-05-28

无意中看到io.js在4月份开始已经支持android编译,果断弄一个

环境

opensuse 11.4 x86

android 4.2.2 linux 3.2, 已root

下载并安装NDK r10e

http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86.bin

直接下载挺慢的,走百度云就很快

在opensuse切换到root,然后运行

```

在windows上编译memcached v1.4.24 (用cygwin) 2015-04-27

成品下载地址

http://wendal.net/dw/memcached/memcached-1.4.24-x86-cgywin.zip

编译环境

cygwin x86 当前最新 win7 x64 sp1

成品的依赖关系(ldd输出)

$ ldd /usr/local/bin/memcached
        ntdll.dll => /cygdrive/c/Windows/SysWOW64/ntdll.dll (0x77780000)
        kernel32.dll => /cygdrive/c/Windows/syswow64/kernel32.dll (0x76fa0000)
        KERNELBASE.dll => /cygdrive/c/Windows/syswow64/KERNELBASE.dll (0x76b30000)
        ADVAPI32.DLL => /cygdrive/c/Windows/syswow64/ADVAPI32.DLL (0x75770000)
        msvcrt.dll => /cygdrive/c/Windows/syswow64/msvcrt.dll (0x75810000)
        sechost.dll => /cygdrive/c/Windows/SysWOW64/sechost.dll (0x769e0000)
        RPCRT4.dll => /cygdrive/c/Windows/syswow64/RPCRT4.dll (0x770d0000)
        SspiCli.dll => /cygdrive/c/Windows/syswow64/SspiCli.dll (0x75110000)
        CRYPTBASE.dll => /cygdrive/c/Windows/syswow64/CRYPTBASE.dll (0x75100000)
        cygwin1.dll => /usr/bin/cygwin1.dll (0x61000000)
        cyggcc_s-1.dll => /usr/bin/cyggcc_s-1.dll (0x6fdb0000)
        cygevent-2-0-5.dll => /usr/local/bin/cygevent-2-0-5.dll (0x63ec0000)

总算实践了一次Linux From Scratch 2015-03-07

Linux From Scratch

第一次接触linux应该是当年的sun推广的unix远程实验室. 之后安装Linux无数次,编译内核N百次, 但一直没有把”Linux From Scratch”实践一次.

编译LFS,并不是为了使用它,是为了看看linux到底是怎么编译,组织起来,运行起来的.

编译的过程, 并未太多阻碍

  • 开头部分,下载依赖的源码包, 耗了点时间,没有直接下载整体压缩包(当时也不知道),然后根据wget-list下载
  • 在chroot之后,逐一编译期间,无意中按了exit,退出了chroot环境, 以为前功尽弃,结果chroot回去发现一切正常如旧
  • 最后,真正启动系统时,报无法挂载根目录, 原因是我用2台虚拟机来跑,第一台做编译host,有sda和sdab,第二台虚拟机是运行环境,只有sda,改一下grub.conf搞定.

早上10点左右开工,下午5点启动成功, 约8小时的样子, 敲了近千条命令, 中后期的make check基本上跳过.

在编译内核之前,我一直很奇怪为啥内核还没编译,而只是输出的ABI的header,现在想来, 还是挺有道理的. 因为前面的部分是编译rootfs, 这部分跟具体的内核并无关联.

从源码编译Chrome(chromium) 2015-02-04

**Update: 20160724 最新版源码已经打包上传好,均为tar文件, 无历史记录和完整历史记录,两个版本. **

官网描述

http://www.chromium.org/developers/how-tos/build-instructions-windows

为啥还要写这篇博客

  1. 太久没在这里写博客
  2. Chrome编译的教程,网上太多太多了,但各种错误(也许对他们当时的版本来说并不是错误)
  3. 好多博客没有把问题说清楚

源码打包下载(vbox的系统镜像文件)

http://pan.baidu.com/s/1ntCHH1Z 密码:nbrm

Http协议及Json格式简介(给yeelink使用者的) 2014-10-23

高手,老鸟,请路过. 本说明忽略了Continue 100请求,代理,chunked等等高级话题.

Http协议基本:

分3部分, 请求行(request line), 头部键值对(header key-value), 请求体(body), 其中请求体是可选的, 尤其是GET/PUT请求

简单的GET请求

GET /v1.1/device/12825/sensor/20956/datapoints HTTP/1.1\r\n
Host: api.yeelink.net\r\n
Content-Length: 0\r\n
U-ApiKey: 121234132432143\r\n
\r\n

简单的POST请求

YeelinkTester 总算弄好了 2014-08-13

直接上程序截图

源码:

https://github.com/wendal/yeelink_tester

用到的东西

  • python 2.7.8
  • pyqt 4.11.1
  • mqtt
  • pyserial

功能

arduino pro mini的电压问题 2014-08-04

arduino pro mini的MCU是 atmega328p

http://www.atmel.com/devices/atmega328.aspx

电压从 1.8-5.5

工作频率最高20Mhz

电压与频率的关系

3.3v 安全频率 约12.5Mhz 5v 安全频率 20Mhz

淘宝上绝大多数都是5V 16Mhz的, 但我手上的几块均能工作在3.3V

所以就很奇怪这5v和3.3v到底影响了什么.

探索yeelink 2014-07-31

yeelink官网

http://www.yeelink.net/index

yeelink的传感器

支持5种类型: 开关,数值,gps,图片,泛型

Yeelink API

支持v1和v1.1两个版本, 我是直接跳过v1,实现了v1.1的版本

不过v1.1依然是测试期,被我遇到几个bug,哈哈

最后弄了个java库

用NDK编译ssdb 2014-05-13

首先,需要准备一下环境

ubuntu 14.04 x86 版 -- 当前最新啦,哈哈

android ndk r9b -- 为啥用这个版本?因为我机器上有…

编译环境准备

把ndk转为独立工具链, 这是今天获取的新技能,呵呵,以后不写Android.mk也能编译部分软件了.

/opt/android-ndk-r9b/build/tools/make-standalone-toolchain.sh --install-dir=/opt/ndk-armv7 --arch=armv7

下载源码,暂时从我fork出来的库里面取吧,不知道ideawu会不会合并这个修改, who knows …

```

用NDK编译Live555 2014-04-29

针对 live555 2014.03.25和 live 2014.04.23 也就是当前最新咯.

准备工作

下载源码 http://www.live555.com/liveMedia/public/ 该地址经常被X,请问候非圆校长

解压到一个空文件夹, 并将目录名从live改成jni

建一个文件, 叫 Android.mk

文件内容在 https://gist.github.com/wendal/11399988

编译

在jni目录下执行

```

为Golang程序打上编译标记 2014-04-02

参考文章: http://stackoverflow.com/questions/11354518/golang-application-auto-build-versioning

昨天在查询怎么生成一个小体积的golang程序的时候,无意中发现这个文章.

对于固定的代码,及固定的golang版本,下面的命令总是得到一模一样的程序

go build

有时候需要为每个编译都打上标记,不然真的很乱啊

演示用的golang代码

package main

var _VERSION_ = "unknown"

func main() {
	print("http_su ver=" + _VERSION_ + "\n")
}

JDK8 Access to Parameter Names at Runtime 2014-03-30

JDK 8的新特性之一, 运行时获取方法参数的名称

JDK8之前, Eclipse自带的ECJ编译器,同本地变量表,把方法参数的名字,放在最前面,使其编译出来的class的名字看推测.

而 JDK8把这种行为规范化(终于…) http://openjdk.java.net/jeps/118

参考文章 Java 8 parameter name at runtime

演示代码

package nutz_jdk8;

import java.lang.reflect.Constructor;
import java.lang.reflect.Parameter;

public class Bot {
    private final String name;
    private final String author;
    private final int rating;
    private final int score;

    public Bot(String name, String author, int rating, int score) {
        this.rating = rating; // 注意这里的顺序,并非按参数顺序逐一调用
        this.score = score;
        this.name = name;
        this.author = author;
    }

    public static void main(String[] args) throws NoSuchMethodException, SecurityException {
		Class<Bot> clazz = Bot.class;
		Constructor ctor = clazz.getConstructor(String.class, String.class, int.class, int.class);
		Parameter[] ctorParameters =ctor.getParameters();
		for (Parameter param: ctorParameters) {
		    System.out.println(param.isNamePresent() + ":" + param.getName());
		}
	}
}

tcpdump加Wireshark抓包分析才是王道啊 2014-02-23

最近折腾RTSP协议,焦头乱额.

Receiver Report RTCP Packets (RR)

  Receiver Reports are structured in the same way as Sender Reports. Of course, they include no sender information block, and the packet type code is 201.
 0               1               2               3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|    RC   |   PT=RR=201   |            length L           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     SSRC of packet sender                     |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|                 SSRC_1 (SSRC of first source)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| fraction lost |       cumulative number of packets lost       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           extended highest sequence number received           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      inter-arrival jitter                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         last SR (LSR)                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   delay since last SR (DLSR)                  |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|                 SSRC_2 (SSRC of second source)                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
:                               ...                             :
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|                  profile-specific extensions                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

为pcduino编译内核 2013-12-15

软件环境

  • lubuntu 13.10 amd64版 / Ubuntu Server 13.10 amd64版
  • 虚拟机20G硬盘,1G内存

为这篇教程,我全新安装多次lubuntu/ubuntu,验证过每个命令,保证能编译出一个能用的内核

安装依赖的库/工具

打开控制台,执行

sudo apt-get install -y g++-arm-linux-gnueabihf vim make u-boot-tools libusb-1.0-0-dev openssh-server pkg-config
sudo apt-get install -y texinfo ccache zlib1g-dev gawk bison flex gettext uuid-dev lib32stdc++6 curl wget ncurses-dev

pcduino报告 2013-12-08

先上个图, 399大洋的货物

5V2A供电, 带USB,hdmi,tf卡槽,wifi,及最有特殊的类arduino接口

功能

抛开arduino接口,pcduino就是一个单纯的A10开发板,跑linux和Android都没任何问题,这是全志A10提供的基本功能了

其arduino接口, 源于A10芯片自带的gpio/pwm等针脚,在linux层做了一个libarduino.so,适配arduino源码

通过其pcduino c_enviroment,可兼容arduino源文件,本质上就是个普通的C库. 使用其Makefile改造一下,可以实现跨平台编译,而不需要使用arduino ide(与eclipse相比真是烂得可以)

在QQ群中,很多人以为pcduino能直接跑编译好的arduino程序,而非把它当成linux+arduino库来看待.

北京几张图 2013-10-28

飞机着陆

北京第一餐 -- 脑残酸菜撸肉面

灰太狼大平卖 -- 只要9毛9!!

后海 -- Three-Person

离开北京那天, 灰霾爆表了

让redis支持动态库 2013-10-20

So, let’s put some fun in redis

redis的命令列表是写死在代码里面,编译后就没法修改(跟nginx一个德行)

硬编码一些额外的方法到redis中

最初写的一个hello world级的测试命令

void wendalCommand(redisClient *c) {
    struct timeval tv;           // 从timeCommand拷贝的...
    addReplyMultiBulkLen(c,3);   // 共返回3个结果
    addReplyBulkCString(c, "Hi,Wendal"); // 输出个字符串啦
    gettimeofday(&tv,NULL);              // 获取时间, 也是从timeCommand拷贝的
    addReplyBulkLongLong(c,tv.tv_sec);   // 不解释了
    addReplyBulkLongLong(c,tv.tv_usec);  // 不解释了
}

perth归来 2013-10-15

其实已经回国几天了,但群里的狼友依然很high

奋斗吧,童鞋们 -_-

perth是什么地方? 大概做了些啥?

西澳大利亚的首府, 西临南印度洋

阳光下睡个觉,海滩戏水,河边看美女,超市看各种降价,郊外看农场

总之,待了七天七夜,完整地走了perth的一周

Day1 -- 阳光下睡个觉

3号晚上21:45的飞机,实际21:55起飞,直飞perth, 凌晨5:30到达

Android系统配置数据库注释(settings.db) 2013-09-23

system表

参考: http://developer.android.com/reference/android/provider/Settings.System.html

1|volume_music|11               // 媒体音量
2|volume_ring|5                 // 闹钟音量
3|volume_system|7               // 系统音量
4|volume_voice|4                // 通话音量
5|volume_alarm|6                // 警报音量
6|volume_notification|5         // 提示音的音量
7|volume_bluetooth_sco|7        // 蓝牙耳机的音量
8|mode_ringer|2                 // 情景模式. 0=静音,1=震动,2=普通
9|vibrate_on|10                 // 震动的级别
10|mode_ringer_streams_affected|166 // ...
11|mute_streams_affected|46     // ...
12|power_on_able|false          // 不清楚
13|default_screen_orientation|0 //默认屏幕方向, 0=横向,1=竖向
14|dim_screen|1                 // 自动调暗屏幕, 1自然就是开启咯
15|stay_on_while_plugged_in|0   // 插入电源时保持屏幕开启,不锁屏
16|screen_off_timeout|-1        // 屏幕超时,进入锁屏的耗时, -1自然是不启用咯
17|emergency_tone|0             // 
18|call_auto_retry|0            // 呼叫失败后自动重拨
19|dtmf_tone_type|0             // 
20|hearing_aid|0                //
21|tty_mode|0                   //
22|airplane_mode_on|0           // 飞行模式
23|airplane_mode_radios|cell,bluetooth,wifi,nfc,wimax // 飞行模式下,需要关闭的设备
24|airplane_mode_toggleable_radios|bluetooth,wifi,nfc //
25|auto_time|1                  // 从移动网络自动获取时间, 据说中国移动和中国联通均不支持
26|auto_time_zone|1             // 从移动网络自动获取时区
27|screen_brightness|102        // 屏幕亮度
28|screen_brightness_mode|0     // 屏幕亮点自动调节
29|window_animation_scale|1.0   // 窗口动画-缩放
30|transition_animation_scale|1.0 // 依然是窗口动画
31|accelerometer_rotation|1     // 屏幕自动旋转
32|haptic_feedback_enabled|1    // 虚拟按键的反馈
33|notification_light_pulse|1   // 提示灯
34|set_install_location|0       // 允许设置安装位置
35|default_install_location|0   // 允许设置缺省的安装位置
36|power_sounds_enabled|1       // 开机关机的声音
37|low_battery_sound|/system/media/audio/ui/LowBattery.ogg // 低电量的警告语,极其恶心那个
38|dtmf_tone|1
39|sound_effects_enabled|1      // 声音效果
41|dock_sounds_enabled|0        // 插入或移除设备的时候,"叫"~~
42|desk_dock_sound|/system/media/audio/ui/Dock.ogg // 插入时的叫声
43|desk_undock_sound|/system/media/audio/ui/Undock.ogg // 拔出时的叫声
44|car_dock_sound|/system/media/audio/ui/Dock.ogg  //车载模式下,插入的叫声
45|car_undock_sound|/system/media/audio/ui/Undock.ogg //车载模式下,拔出的叫声
46|lockscreen_sounds_enabled|0  // 屏幕加锁解锁的声音
47|lock_sound|/system/media/audio/ui/Lock.ogg // 加锁的声音
48|unlock_sound|/system/media/audio/ui/Unlock.ogg //解锁的声音
49|vibrate_in_silent|1          // 静音时启用震动
50|pointer_speed|0              // 不知道...
51|accelerometer_coordinate|default
52|is_scan_tf_card|1            // 是否扫描sdcard
53|hidden_google_application|0  // 隐藏google应用
54|time_12_24|24                // 时间按12小时制还是24小时制
55|display_adaption_mode|center // 屏幕适配模式
56|is_scan_usb_host|1           // 扫描U盘不?
57|shortcut_key_0|website--split--http://tv.sohu.com // 快捷键0, 我XX
58|shortcut_key_1|website--split--http://v.qq.com/   // 快捷键1, 我XX
59|shortcut_key_2|app--split--com.android.settings--split--com.android.settings.Settings // 快捷键2, 我XX
60|shortcut_key_3|app--split--com.softwinner.TvdFileManager--split--com.softwinner.TvdFileManager.MainUI // 快捷键3, 我XX
61|display_adapter_enable|1     // 自动适配显示设备
62|display_area_ratio|100       // 显示的区域
63|smart_brightness_enable|0    // 自动调整屏幕亮度
66|mouse_advance|30             // USB鼠标的设置? 不清楚
67|color_brightness|50          // RGB的调色
68|color_contrast|50            // RGB的调色
69|color_saturation|50          // RGB的调色
70|audio_output_type|NORMAL     // 音频输出类型
71|audio_output_channel|HDMI    // 音频输出的通道 -- 可以查audiomode表, 见过: HDMI VGA LVDS
72|directly_power_off|1         // 直接关闭电源,无需再次确认
73|bd_folder_play_mode|1        // 蓝光目录模式, 当打开蓝光光盘格式的目录时,自动开始播放 -- XX
74|hdmi_output_mode|255         // hdmi的输出模式,无解中
75|display_output_format|HDMI 1080P 60HZ // 显示输出的模式,这个太重要了,可选模式? 因机器而异的...
76|first_boot_system|true       // 是否为第一次启动, 不准确的值
77|alarm_alert|content://media/internal/audio/media/9 //警告音
78|notification_sound|content://media/internal/audio/media/50 // 提示音
79|ringtone|content://media/internal/audio/media/124 // 闹钟

记录一下jetty的异步请求 2013-09-06

nutz加jetty 的测试代码

    @At
    @Ok("void") //不要视图啊... 因为多次进入
    @Fail("void")// 一样不需要...
    public void async(final @Param("wait")long wait, @Attr("obj")Object obj, final HttpServletRequest req) {
        System.out.println("async IN");
        if (obj == null) { // 第一次进入时,必然是null, 第二次,如果是线程唤醒的,那就有值了,呵呵
            System.out.println("OBJ NULL");
            // 获取这个关键的对象,哈哈哈
            final Continuation continuation = ContinuationSupport.getContinuation(req);
            if (continuation.isExpired()) { // 往下的代码设置了超时,so,这样判断一下咯
                System.out.println("async TIMEOUT");
                return;
            }
            continuation.setTimeout(15*1000); //设置超时哦
            continuation.suspend(); // 非阻塞的方法... 仅仅是设置一个状态
            new Thread() { //我在这启动一个线程,休眠一定时间之后唤醒这个异步请求
                public void run() {
                    System.out.println("async Thread Start");
                    if (wait < 1) {
                        Lang.quiteSleep(10 * 1000);
                    } else {
                        Lang.quiteSleep(wait * 1000);
                    }
                    System.out.println("async Thread wakeup");
                    req.setAttribute("obj", "I do it!");
                    continuation.resume();
                };
            }.start();
        } else {
            System.out.println("async GET OBJ --> " + obj);
        }
        
        System.out.println("async OUT");
    }

让golang的get命令兼容gitlab 2013-08-28

我们有些什么呢?

Gitlib已经发布了6.0,号称是企业级的版本了,作为私有git库的首选,自然越来越多人用

假设 有这样一个golang 的库,URL是 http://git.wendal.net/wendal/gofly

如果尝试执行下面的语句去获取这个库的话

go get git.wendal.net/wendal/gofly

#会输出
package git.wendal.net/wendal/gofly: unrecognized import path "git.wendal.net/wendal/gofly"

然而,如果我们输入

```

Fork me on GitHub