Archive for the Category » 技术交流 «

HOMEBREW_BOTTLE_DOMAIN

.cshrc

setenv HOMEBREW_BOTTLE_DOMAIN https://mirrors.aliyun.com/homebrew/homebrew-bottles
setenv PATH /usr/local/opt/php@7.2/bin:$PATH
setenv PATH /usr/local/opt/php@7.2/sbin:$PATH
setenv LDFLAGS -L/usr/local/opt/php@7.2/lib
setenv CPPFLAGS -I/usr/local/opt/php@7.2/include

或者 .bash_profile

export $HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles

js 正则特例

(?=)和(?!);零宽正向断言和负向断言,括号内表示某个位置右边必须和=右边匹配上,或者不和!后的字符匹配。

var pattern=/str(?=ings)ing/;
console.log("strings.a".match(pattern));
console.log("strings.a".match(/string(?=s)/));
console.log("string_x".match(pattern));
console.log("string_x".match(/string(?=s)/));
/*前两个结果是["string"],后两个结果是null;
*str(?=ings)ing/匹配"string",r后面的位置右边必须跟
*上ings;和/string(?=s)/一样;匹配"string";g后面的位置
*的右边必须跟一个s。"string_x"虽然也含有"string"但是
*不满足(?=...)括号内的条件
*/
var pattern=/string(?!s)/;
console.log("strings".match(pattern));//null
console.log("string.".match(pattern));//["string"]
/*(?!...)某位置右边不能有!后匹配的字符,
*string(?!s)/匹配"string","g"后不能跟"s"
*/

mode=”widthFix”

小程序图片高度自适应,做个记录,费了老劲了。

git config –global core.pager “less -r”

记录一下,解决diff 和 log出现 ESC 之类的乱码问题。

找了这么久,原来你在这里!

zendstudio11font

试了个遍,终于找到你了,要不中文真的好丑!

勤劳而默默无闻的开发机

办公室有台开发机,是2008年公司创立时,朋友给攒的PC装了当时的FreeBSD7.2系统,这台机器伴随我们团队从创立走到今天,一直默默无闻的工作着,6年时间里除了坏过一次电源风扇,一直工作着从未关机,团队的几个人几乎每天从早到晚都在利用这台机器保存代码和进行各种产品和功能测试,有时候看到它就像看着老朋友一样,既亲切又心疼,只可惜我们过去几年一直没有一个项目真正获得成功,要不然这台开发机真可谓是劳苦功高!

最近我们新项目启动,因为诸多因素,决定使用云主机来做开发机,于是要把开发环境和代码等移植到云主机上,这就意味着老朋友终于要退休了,想着还有点心酸,不过即便不作为主要的开发机了,这台机器依然将在办公室陪伴我们,做一些临时的功能测试和内部软件服务,这些年在技术平台和系统方面付出的心血真是不少了,多少次奔波于机房和多少个不眠夜,这两天迁移的时候,才真的体会到团队这些年真的付出了不少,希望这次开发环境的搭建和整体服务器迁移将是我们团队最后一次。

Haproxy: uptime = 465d 9h37m14s

今天需要对服务器进行架构方面的调整,无奈需要重启Haproxy服务,发现它已经运行了465天没有重启过了,这一年多,还是挺省心的!

QQ截图20140107025807

今天才注意到,FreeBSD的ports已经升级使用svn了

公司一台开发机,5年前攒的,中间换过一次电源风扇,其他时间因为意外断过几次电,一直开着用到今天还很稳定,5年前安装的FreeBSD7.2的系统,升级过几次内核,最近280多天未重启也没升级,今天安装新的音频解码包的时候,发现官方的ports树已经早就更新为使用svn了,早前使用了很多年的cvs终于走到了尽头,真是个很好的进步啊!

也不知道身边还有多少人在用FreeBSD作为服务器系统,感觉有点孤独,国内的好几个cvsup镜像站貌似都已经不再维护,一度很好用的163的镜像站也不能访问了,其实FreeBSD真是很优秀的服务器系统,开发团队也是很伟大的,辛苦你们了!

Category: Linux / BSD  One Comment

在4.2.2系统上ScrollView包含LinearLayout不滚动的问题

之前写过的一个APP每日美图,支持最低的API版本是7,也就是2.1以上系统都没有问题,过了一年多没有维护了,前不久用安装有最新的4.2.2系统的手机测试,发现瀑布流图墙不滚动了,这里面其实是自定义的ScrollView中OnTouchListenr捕获手指事件后分发流程的问题,早期的实现有好多方式,大致都是通过在ScrollView上实现自定义的onTouchListener,重写onTouch()方法,把事件进行捕获,但是在API17以上不知道为啥就总是失败,会被ScrollView里面的LinearLayout给屏蔽掉了。

我重新梳理了这部分流程,用实现onGestureListener的自定义ScrollView方式搞定,因为我还需要在这个里面得到手指滚动的方向,这就是曾经一度很流行的LazyScrollView的改进版,支持判断方向的版本,经我测试,在API7-17的版本上都能正常滚动和捕获事件。

下面是ScrollView代码部分,layout和Activity部分就不贴了,和大部分的实现类似。

more »

ApnsPHP完成推送后处理错误日志的正确方法

通过苹果的apns批量发送push消息,如果中间发生错误,应该需要捕获错误发生的对象,然后对那些发生错误的消息应该在后台进行标识,这是我们常见的处理逻辑,在ApnsPHP中很好的实现了这个逻辑,大致的代码如下:


//假设前面已经有了下面一句
$message->setCustomIdentifier($id); //这里的id可以是你消息对于的数据库id

...

$push->send();
$push->disconnect();

//在发送完以后,可以进行下面的处理

$aErrorQueue = $push->getErrors();
$error_ids = array();
if (!empty($aErrorQueue)) {
foreach ($aErrorQueue AS $e) {
$error_ids[] = $e['MESSAGE']->getCustomIdentifier();
}

这里面关键的一句是 $e[‘MESSAGE’]->getCustomIdentifier();

getErrors()返回的数组,每条记录也是个数组,key为MESSAGE对应的值是个ApnsPHP_Message对象,该对象可以使用getCustomIdentifier()方法取回前面通过 setCustomIdentifier($id)传入的$id值