- 博客(50)
- 收藏
- 关注
原创 有关 PHP 和 js 浮点运算的坑
javascript0.1 + 0.2 为啥不等于 0.3 ? (正确结果:0.30000000000000004)0.8 * 7 为啥不等于 5.6 ? (正确结果:5.6000000000000005)PHPvar_dump(intval(0.58 * 100));正确结果是 57,而不是 58浮点运算惹的祸其实这些结果都并非语言的 bug,但和语言的实现原理有...
2017-10-11 14:03:29 95
原创 彻底搞懂 PHP 变量结构体,多数文章观点不准确
PHP5 中的 zval // 1. zvaltypedef struct _zval_struct { zvalue_value value; zend_uint refcount__gc; zend_uchar type; zend_uchar is_ref__gc;} zval;// 2. zvalue_valuetyp...
2017-10-11 14:00:50 207
原创 靠谱外包公司真的不好找,先看看他的技术栈
外包公司,为了节省人力成本,除了项目经理,3 - 5 年的技术leader,技术人员大多数都是少于3年经验,或者实习生。所以造成外包企业,很难沉淀好的技术出来,多数有能力的技术人员,也明确找工作,不选外包企业,造成了一个恶性循坏,十分尴尬的局面。 但比如 IBM,thoughtwork 都是业内顶尖的技术服务型企业,所以并不是外包市场low,外包企业low,而是多数人做low 了...
2017-09-21 11:26:24 136
原创 解决Cannot find module ‘meteor/meteor’ ‘meteor/check’ ‘meteor/mongo’
meteor 对typescript的支持上存在问题,造成typescript中引入的一些包无法找到。 解决方法: 添加 meteor.d.ts 的定义补充文件到/ 下载位置: wget https://github.com/zencodex/snippets/raw/master/meteor.d.ts vim /typing.d.ts ///...
2016-12-22 20:30:51 263
原创 React Native编译错误:ReactAndroid:buildReactNdkLib FAILED
错误输出入如下:[code="ruby"][armeabi-v7a] Compile++ : reactnativejni
2016-12-18 10:42:01 189
原创 PhotoScan Google照片扫描仪,让手机替代扫描仪
[img]http://dl2.iteye.com/upload/attachment/0121/7823/15b22254-08fa-3989-a9e9-d325ed7bbfac.png[/img][url=http://www.yinqisen.cn/blog-742.html]看这里告诉你怎么玩[/url]!!!
2016-12-06 11:43:32 212
原创 微信小程序如何像webview一样加载html5网页
微信小程序如何像webview一样加载html5网页,目前微信暂时还没有开放这个功能,那怎么办呢?[url=http://www.yinqisen.cn/blog-731.html]请看这里[/url]!!!
2016-11-29 16:21:14 199
原创 微信小程序如何删除项目工程
微信小程序本地创建的项目没有删除功能,我通过尝试找到了可以清理的方法,只在Mac osx测试通过,windows可以根据原理自行解决,估计原理都是一致的:删除数据文件夹下的Default即可,属于全部清理,无法单个删除,删除后需要重新扫二维码登录。Mac osx 下目录: $HOME/Library/Application Support/微信web开发者工具/Def...
2016-11-08 10:46:41 267
原创 Dalvik虚拟机工作原理介绍
Dalvik虚拟机并没有使用目前流行的虚拟机技术,如JIT,但是根据Google的报告,这个功能的缺失并没有令Dalvik虚拟机在性能上有所损失。我们也同时相信,Dalvik虚拟机的性能还有进一步提高的空间。 根据 Google的测算,64M的RAM已经能够令系统正常运转了。其中24M被用于底层系统的初始化和启动,另外20M被用于高层启动高层服务。当然,随着系统服务的增多和应用功能的扩展...
2016-09-26 12:07:36 74
原创 mac osx wine 1.7.5 源码编译方法及中文乱码的解决
源码编译1、先安装apple-gcc42,Mac osx自带的 llvm-gcc,编译后,无法运行wine。1sudo port install apple-gcc422、下载wine源码12git clone git://source.winehq.org/git/wine.git ~/wine...
2016-09-23 10:11:03 101
原创 gerrit与crowdid, openid集成,设置openIdSsoUrl 直接登录
gerrit 版本为2.7gerrit验证方式选择 OPENID_SSO,使用的是crowdid做为用户验证服务。进入gerrit安装目录:cd review_site/etc/vi gerrit.config,修改如下:12345[auth] type = OPENID_SSO openIdSsoUrl = ...
2016-09-22 10:05:27 270
原创 Android 内存优化,如何避免OOM
一、 Android的内存机制二、Android的内存溢出三、万恶的static四、都是线程惹的祸五、超级大胖子Bitmap六、行踪诡异的Cursor七、其它要说的。一、 Android的内存机制Android的程序由Java语言编写,所以Android的内存管理与Java的内存管理相似。程序员通过new为对象分配内存,所有对象在java 堆内分配空间;然而对象的释...
2016-09-21 09:51:45 113
原创 如何分析android的OOM,与java静态代码分析工具
用MAT分析OOM很多OOM看似发生在bitmap 分配得时候,但它一般不是rootcause。根本原因都在于本应该自动释放的资源,因为代码的错误,而导致某些对象一直被引用(Reference),例如 Android 内存优化,如何避免OOM 文章中提到的Activity 的mContext 引用。当代码量很庞大的时候,单靠读代码查找错误是很困难的,所以必须借助于工具,这里介绍一款很好...
2016-09-19 09:34:51 73
原创 android 4.4(KitKat)上,如何开发SMS功能的APP
android 4.4(KitKat)上,对SMS功能做了限定,只允许设置为默认短信的APP,才可以写入短信到系统的数据库。此举显然增加了安全性。目前大多数第三方的,需要SMS功能的APP,都可能会有短信不能写入的问题,发布此文时,我测试了下QQ通讯录,仍然不能发送短信,且无法保存短信数据,这都是因为这个KitKat SMS新功能引起的,他们都需要遵循新的开发协定才可以。下面是我转自blo...
2016-09-18 12:02:54 151
原创 android4.4(kitkat),如何让APP可以直接写入SMS短信
以下代码的修改是针对android平台研发的,另外如果没有系统源码的情况下,通过逆向修改ROM中的对应文件,也是可以做到的。之所以有这样需求,是因为假如是你自己的ROM,需要对自己的某个APP授予SMS写入权限,可以通过修改如下代码中的OTHERSMS_PACKAGE_NAME,换成你自己APP的package name就可以了。如果类似QQ通讯录这种应用,在可以获取ROOT 的权限下,...
2016-09-14 09:44:10 107
原创 CyanogenMod 11.0模拟器goldfish的编译方法及下载地址
1、首先下载CM的源码,方法网上有很多,不再赘述。2、android模拟器的产品名为goldfish,cm的产品配置文件和linux内核,利用他脚本breakfast、brunch的方式,在我们天朝经常出错,还是GW的问题。所以如果有问题,可以手动在 .repo/local_manifests/roomservice.xml 中天下如下配置:<?xml version="1.0" ...
2016-09-13 09:52:43 92
原创 解决Mac osx AirPort: Link Down on en1. Reason 8 (Disassociated because station lea
这个问题存在好久了,在苹果官方论坛上已经存在好长时间了,但苹果至今仍未修复此问题:https://discussions.apple.com/thread/2142725有人说在Network Preference -> Location 里,新添加配置,就可以了,但我没有尝试成功过。我的版本是MBP 13 + Mac osx 10.8.5 ,从来不关机,在公司直接插网线,有时...
2016-09-12 09:26:00 217
原创 android中使用tcpdump拦截分析网络数据包
1、下载tcpdumphttp://pan.baidu.com/s/1c0vkU2k2、通过adb命令上传到手机里adb push tcpdump /system/bin3、adb shell tcpdump -p -vv -s 0 -w /sdcard/capture.pcap123456789#tcpdump 用法:...
2016-09-10 10:34:37 253
原创 Navicat for Mysql SSH tunnel 用跳板机解决方案
Navicat Mysql SSH tunnel不能使用跳板机,对于需要跳板机登录的主机,他自带的SSH Tunnel就是鸡肋了。其实从原理上分析,根本不需要开启他得SSH Tunnel,使用本机强大SSH端口转发,加上跳板代理,即可完美解决。1、先取消已经设置的SSH Tunnel,如下图都清空2、本地配置好跳板机,跳板机文章很多,百度即可。比如我的:替换Host , ...
2016-09-10 10:28:55 435
原创 整理linux平台下的vim插件配置,减少到11M,简化安装
最近为了快速开发,直接在服务器上编写代码,把之前spf13 vim的配置整理了一下。安装更加简单,在不同服务器之间传输更快速。### 基于spf13修改的vim配置- 存储空间占用从110M减少到26M,.git只有11M,便于网络传输- 统一为一个仓储,去掉了git submodules的形式,方便小白用户- 根据自己开发语言需要可修改,修改.vimrc.bundle...
2016-09-09 12:00:16 46
原创 wordpress如何使用vim和markdown写blog
$TOC$开始试用了一下wp-markdown插件,高亮和部分语法支持不太好。而且以前的syntax highlight插件语法都乱了,如果使用,需要重新编辑,所以放弃了。网上搜了一下,很巧的是发现了11年底,当时一个老同事写的blog,介绍了vimrepress和vim-markdown,可以满足我的要求,但太久了,vimrepress当前是3.2.1,重写了很多代码。所以重...
2016-09-09 11:57:50 118
原创 重新设计实现CSipSimple呼叫记录分组功能
CSipSimple 原有的分组功能只能针对连续相同被叫号码,如果中间有间隔,相同的号码就不会被分成一组。这个实现很弱,也失去了分组的意义。下面针对这块功能的设计实现做下简单记录。#### 1. 自己封装一个CursorLoader这里取名为CalllogCursorLoader,在CallLogListFragment -> OnCreateLoader中:~~~.j...
2016-09-08 10:14:01 63
原创 adb logcat查看某个进程的输出日志
adb logcat 默认是没有这个功能的,我实现了一个小bash函数,添加到你$HOME/.bashrc 文件中:``` bash# 作用:能够通过进程名显示log# 用法:alogcat com.android.calendar or alogcat calendar# 当监控的进程异常退出时,需要重新运行此命令function alogcat() { OU...
2016-09-08 10:12:49 1690
原创 我的黑科技,让C++可以访问private成员
严格说,C++的禁止外部类访问private 是指在编译期,运行期都是在内存中的数据,是可以做任何修改的。本文的方式讲的就是针对运行期如何修改。这个方案源于N年前有个第三方实现的静态库,我们没有代码,只有库的头文件声明和编译好的lib库。在一个类的头文件中,有个私有变量存储的是Color值,但库的开放接口却没有能力修改这个值。### 方法通过头文件的类定义,算出该私有变...
2016-09-07 11:16:40 103
原创 基于CSipSimple开发的VOIP网络电话 iCaller for Android
下载地址: 手机扫描下方二维码,下载更方便:![icaller-qr](http://boxes.oss-cn-qingdao.aliyuncs.com/screenshots/iCaller-android-QR.png)### 测试参数配置:账号:1001, 1002, 1003 ... 1014密码: 都是1234服务器:t1.123sip....
2016-09-07 11:12:13 111
原创 C语言实现任意进制的转换,主要注意代码的小技巧
在Linux GCC编译测试通过,代码如下:~~~.c#include void tobase(int, int);int main(){ tobase(33, 16); return 0;}void tobase(int value, int base){ static char digits[] = "0123456789ABCDEF...
2016-09-06 09:42:20 150
原创 快速清理Android中无用的资源信息,图片,字符串等
基于python的脚本工具 android-resource-removergithub 地址: 安装方法: pip install android-resource-remover使用方法: cd lint --check UnusedResources ./ --xml lint-result.xml && android-resour...
2016-09-06 09:40:02 191
原创 解决case expressions must be constant expressions
Android Library工程写代码需要注意switch ... case语句对资源id的引用,会引发编译错误:`case expressions must be constant expressions。`通常android工程生成的资源R.java,资源id声明如下: public static final int main=0x7f030004;而对于libr...
2016-09-05 17:01:56 181
原创 android 上的API函数钩子,利用CydiaHook实现
发布将近一年了,最近发现还是有些人需要的,github上也有些人fork了。例子代码,发布在github上,地址:### CydiaHook利用Cydia Substrate SDK 开发,可以HOOK java层或NATIVE层 API接口。### 本代码功能写代码的初衷是因为有个app,需要保存数据到SD卡上,并且app里面有判断SD挂载的状态。没有SD...
2016-09-05 16:57:38 226
原创 tcpdump for android L 5.x with pie support
由于使用了NDK编译的可执行文件在应用中调用,在4.4及之前的版本上一直没出问题。最近由于要测试在Android L上的运行情况发现,当运行该可执行文件时,报如下错误:error: only position independent executables (PIE) are supported.PIE这个安全机制从4.1引入,但是Android L之前的系统版本并不会去检...
2016-09-02 14:13:35 116
原创 自用Android程序破解,逆向分析工具集
下载: git clone https://github.com/zencodex/hack-android.git本人主要在Mac osx使用,所以linux下没经过严格测试,可能会存在小问题。签名脚本是自己写的,临时文件写到了/tmp 目录下,所以linux下要确定存在/tmp。如遇到问题,可在github上[new issue](https://github.co...
2016-09-02 14:11:19 181
原创 根据时间获取commit或者查看git log
查看某个时间点以后的log git log --since="Fri Aug 10 19:16:10 2012 +0800" 或者用--until 查看某个时间点以前的log git log --before="Fri Aug 10 19:16:10 2012 +0800" 获取某个时间点以后的commit,-n 1 表示只返回一个,最近的一个 git...
2016-08-31 10:48:06 579
原创 google gerrit repo, git commit如何自动生成Change-Id
1). 检查仓储.git/hook下面是否有 commit-msg 文件,如果没有到下面的地址下载: 如果有自己的gerrit-review服务器,可以直接在网址后面加上 `/tools/hooks/commit-msg` 即可下载。添加后,每次执行git commit 都会自动在log里面生成 Change-Id,用于gerrit code review...
2016-08-31 10:46:18 338
原创 git 使用教程,常用命令
### git常用命令~~~git pull --rebase从服务器获得更新git status查看本地修改git add .git add xxx添加本地的修改git rm xxx删除一个本地修改git commit提交本地修改,但没有上传到服务器,只是本地的记录,git commit --amend,修改上个commit的lo...
2016-08-30 14:07:13 59
原创 如何用git创建空内容的分支
空内容分支是指全新的分支,不是基于现有的分支节点上创建,可以存放全新的初始的代码。注意这么用会增加仓储的大小,如果不是特别需要,不建议这么做。 git commit --allow-empty -m "initial commit" git push origin HEAD:refs/heads/[branch name]转自:http://www.yinqis...
2016-08-30 14:02:39 171
原创 PHP 随机用户名账号的生成
随机生成难点是在于如何避免碰撞,有人说用md5,GUID这些机制啊,当然可以,但是做为账号,看着有乱,而且生成位数也过长。本方法只需要解决1秒内的并发碰撞就可以,因为固定头部采用的是unixtime时间,精确到秒,超过1秒,这个头部的时间肯定变化了。同时本方法也可以用户随机订单编号的生成。测试条件是用循环创建1万个随机账号(毫秒级),0碰撞,10万个大约有0-3个碰撞。应该没有...
2016-08-29 09:40:48 230
原创 adb命令如何获取android手机屏幕分辨率
#### 1. 通用方法: adb shell dumpsys window displays |head -n 3输出类似如下信息: WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays) Display: mDisplayId=0 init=1080x1920...
2016-08-27 10:39:29 172
原创 PHP实现投镖求PI法,最笨但最有意思
#### 原理见下图:被称为利用投飞镖的方法求PI![circle pi](http://www.yinqisen.cn/wp-content/uploads/2015/11/toubiaopi.jpg)#### 以下总结选自其他网友:1. Figure2是Figure1的右上角的部分。 2. 向Figure2中投掷飞镖若干次(一个很大的数目),并且每次都仍...
2016-08-26 14:21:10 100
原创 VIM PIV插件的bug,编辑PHP大文件偶尔会丢失语法高亮
在查看行数较多的PHP脚本时候,比如G跳到文件底部,经常会丢失语法高亮,经google 这个应该是和自动保存功能冲突所引起,具体讨论见:解决方法,编辑.vim/bundle/PIV/ftplugin/php.vim, 删除如下几行: 58 call s:InitVariable("g:load_doxygen_syntax", 1) 59 call s:InitVa...
2016-08-24 11:59:55 81
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人