Asterisk PJSIP configuration example

pjsip.conf

[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0
allow_reload=yes
external_media_address=172.217.25.78 // server ip address
external_signaling_address=172.217.25.78 // server ip address

pjsip_wizard.conf

[user_defaults](!)
type = wizard
endpoint/transport=transport-udp
endpoint/context=from-internal
endpoint/rtp_symmetric=yes
endpoint/rewrite_contact=yes
endpoint/force_rport=yes
endpoint/disallow=all
endpoint/allow=ulaw,gsm
aor/max_contacts=2
aor/qualify_frequency=30

[user1](user_defaults)
inbound_auth/username = 101
inbound_auth/password = password101

[user2](user_defaults)
inbound_auth/username = 102
inbound_auth/password = password102

Mount network location in Golang on Windows

import (
	"syscall"
	"unsafe"
)

type NETRESOURCE struct {
	Scope        uint32
	Type         uint32
	DisplayType  uint32
	Usage        uint32
	lpLocalName  *uint16
	lpRemoteName *uint16
	lpComment    *uint16
	lpProvider   *uint16
}

func MountWindowsNetworkLocation(location string, username string, password string) error {
	h := syscall.MustLoadDLL("mpr.dll")
	c := h.MustFindProc("WNetAddConnection2W")

	nr := NETRESOURCE{
		Type:         uint32(1),
                // lpLocalName: syscall.StringToUTF16Ptr("R:"), uncomment this line to map a local device
		lpRemoteName: syscall.StringToUTF16Ptr(location),
	}
        dwFlags := uint32(1)

	r1, _, err := c.Call(uintptr(unsafe.Pointer(&nr)),
		uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(password))),
		uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(username))), uintptr(dwFlags))

	if r1 != 0 {
		return err
	}

	return nil
}

全球首款配备电子纸屏幕的抽纸盒~

IMG_1927

用树莓派+电子纸屏做了一个时钟,很偶然的搭配一个抽纸盒作为外壳,虽然并不是第一款电子纸屏的时钟,但绝对是全球甚至宇宙第一款带有电子纸屏幕的抽纸盒。。

先放图:

IMG_1912

内部构造,模块和跳线全部用热熔胶固定

IMG_1916

后视:

IMG_1918

检查一下这款时钟的抽纸盒功能。。

IMG_1919

 

IMG_1920

图就贴到这,下面聊聊我为啥突发奇想做出这么个东西。某天我想在淘宝上买个简单的闹钟,在搜索栏输入 简约 闹钟 俩关键词,出来结果里面有个很合心意,是这样的:

屏幕快照 2016-04-25 下午5.16.14

外观简单,白屏黑字,对比好强烈,好高大上。。于是我又看了一下评论里的买家show

屏幕快照 2016-04-25 下午5.18.47

WTF, 差距也忒大了吧,果断放弃,再找,然后发现基本都是描述里屏幕P的很白,实物就是另一番面貌了。 揍在这个时候,想起了吃灰已久的kindle,如果用kindle的电子纸屏来做个闹钟一定很理想,然后在google找到了下面的图片:

E-Paper-Display-HAT

显示效果符合预期,而且图中时钟是基于树莓派做的,正好我也有两块树莓派,于是很快做了一个决定:自己DIY一块电子纸屏的时钟,这块时钟除了显示基本的日期时间,还可以显示天气和室内的温湿度(如果只能显示日期,优越感何在。。)。果断在淘宝采购了材料:4.3寸串口电子纸屏,DHT22温湿度传感模块,还有一块树莓派3(没错,虽然我是一个拥有了1代和2代的男人,但是还是忍不住购买了3代。。)后面,经过一阵python乱舞,原型很快出来了:

IMG_1879

搞到这里,加个壳子就算完活了。但是如何利用自身现有条件DIY一个即合身又高大上的壳恰恰是个难点。。。

我最开始设想的材料是:超轻粘土。这东西可塑性超高,自己捏捏就OK,不用神马3D打印之类的高科技。但是后面实际操作的结果是:1.  没有耐心,手残,很难把这个东西的表面处理的平整 2. 表面粗糙,没有光泽,体现不出高大上的效果。

经过一番考虑,又想出一个方案:自己淘宝买一个尺寸和样式合适的实木收纳盒,然后自己打个孔,改造一下。实际操作的结果就是:只有这个抽纸盒符合我的心意。。 反正桌子上也是要放抽纸的,就让他们结合吧。。。

IMG_1928

最后,Python脚本已开源,欢迎参观指导:https://github.com/emptyhua/epaper_clock

PHP中直接读取zip中的指定文件

碉堡。。不愧是世界上最好的语言,只需要一个函数:

file_get_contents('zip://test.zip#test.txt');

来自:http://stackoverflow.com/questions/10420112/how-to-read-a-single-file-inside-a-zip-archive

有B格的写作软件Desk

  博客是很久没有更新了,不过wordpress却是一直跟随升级到最新的4.1版本,界面越来越好,新特性也越来越多,写blog的欲望却没了。。每次登陆后台,无非是删下垃圾评论,升级下插件。人也越来越懒,对酒的热情已经高过写垃圾代码。

于是为了提高写blog的兴致,入手了一款专门用于写作的mac软件:Desk。额,话说我对这类软件要求很低了,只要满足2点就够了:1.界面够简单,能贴图 2.可以发布到wordpress。至于排版,我是没有什么要求了,如果写东西还要关注字号粗细,那还有tmd神马乐趣。。

木有看错,就一块简单的编辑区,类似之前用过的一款叫zenwriter的软件(截图黑漆漆是开了夜间模式)。

OK,发出去看看效果。。