技术开发

[置顶] Aiiphp框架测试版发布,欢迎测试!

[置顶] Linux常用运维命令和linux常用管理操作命令(整理)

[置顶] Linux/Window服务器安全配置等常用软件下载列表

Mac系统下brew安装指定版本的nodejs小笔记

一、安装brew

这个我就不废话了,假设你的Mac上已经安装好了。


二、安装nodejs

运行brew install node 即可,但是这样安装的node是最新node,最新的好像已经6.x了,

但是这个不是我想要的版本,我希望下周最新的4系列的稳定版本。


三、安装指定版本的node
1、需要安装homebrew-version
brew tap homebrew/versions

2、查看可安装的node版本
brew install homebrew/versions/node

» 阅读全文

关键词: brew , nodejs

HTML5利用Geolocation API获取地理位置定位功能

定位功能(Geolocation)是html5的新特性,因此只有在支持HTML5的现代浏览器上运行,特别是手持设备如iphone,地理定位更加精确。首先我们要检测用户设备浏览器是否支持地理定位,如果支持则获取地理信息。注意这个特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的,所以我们在访问该应用时会提示是否允许地理定位,我们当然选择允许即可。


function getLocation(){ 
    if (navigator.geolocation){ 
        navigator.geolocation.getCurrentPosition(showPosition,showError); 
    }else{ 
        alert("浏览器不支持地理定位。"); 
    } 
} 


» 阅读全文

关键词: 定位 , 获取地理位置 , html5

Web系统大规模高并发下数据安全,避免超发问题

我们知道在多线程写入同一个文件的时候,会存现“线程安全”的问题(多个线程同时运行同一段代码,如果每次运行结果和单线程运行的结果是一 样的,结果和预期相同,就是线程安全的)。如果是MySQL数据库,可以使用它自带的锁机制很好的解决问题,但是,在大规模并发的场景中,是不推荐使用 MySQL的。秒杀和抢购的场景中,还有另外一个问题,就是“超发”,如果在这方面控制不慎,会产生发送过多的情况。我们也曾经听说过,某些电商搞抢购活 动,买家成功拍下后,商家却不承认订单有效,拒绝发货。这里的问题,也许并不一定是商家奸诈,而是系统技术层面存在超发风险导致的。

1. 超发的原因

假设某个抢购场景中,我们一共只有100个商品,在最后一刻,我们已经消耗了99个商品,仅剩最后一个。这个时候,系统发来多个并发请求,这批请求读取到的商品余量都是99个,然后都通过了这一个余量判断,最终导致超发。(同文章前面说的场景)


» 阅读全文

centos下nginx搭载kramdown解析器解析.md(makedown)文件

.md文件是啥,大家不陌生吧?MD后缀名的文件就是Markdown文件,Markdown 是一种轻量级的标记语言。

但是如何搭建自己的kramdown解析器解析.md(makedown)文件呢。

开搞环境:

centos+nginx+php+kramdown

1、首先:

yum install ruby rubygems

 gem install kramdown

Gem是一个管理Ruby库和程序的标准包,这就不多说了,我不是很懂,反正就玩玩嘛,

» 阅读全文

关键词: md解析 , kramdown搭建

android安全之webview远程代码执行漏洞

【基础知识】

   webviewAndroid用于浏览网页的组件,它的接口函数addJavascriptInterface可以实现网页JS与本地JAVA的交互,但是没有限制已注册JAVA类的方法调用,导致可以利用反射机制调用未注册的其它任何JAVA类。

  当Android用户访问恶意网页时,会被迫执行系统命令,如安装木马、盗取敏感数据等。

 

【漏洞重现】

构建一个使用Webview组件的程序,

1AndroidManifest.xml添加网络访问权限

» 阅读全文

关键词: 远程代码执行 , webview

安卓开发之设置webview的浏览器标识(User-Agent)

为了便于WEB端统计分析,需要将APPuser-agent 作特征标记,所以搜索了一下androidwebview的User-Agent设置方法,具体如下:


// 修改ua使得web端正确判断
String ua = webview.getSettings().getUserAgentString();
webview.getSettings().setUserAgentString(ua+"; HFWSH /"+appversion);
这种方式是尾部添加的,也可以采用替换的方式



// 修改ua使得web端正确判断
        String ua = webView.getSettings().getUserAgentString();
        webView.getSettings().setUserAgentString(ua.replace("Android", "HFWSH_USER Android"));


好了,大概就这么多

关键词: user-agent , 安卓开发

jQuery上传插件:Uploadify 3.2使用教程,附上demo示例

Uploadify下载地址:http://www.uploadify.com/download/ 这里下载最新版的3.2的。
下载下来解压后估计里面很多文件,其实有用的也就一个jquery.uploadify.js和uploadify.swf这两个文件。当然啦,jQuery库那是必须的。

在你使用的项目中,把jquery.uploadify.js引入以后,用法和大多数JQ插件一样。同时也要记得引入swfobject.js这个插件,版本2.2以上的。使用方法例如:


$(function() {
    $("#file_upload_1").uploadify({
        height        : 30,
        swf           : '/uploadify/uploadify.swf',
        uploader      : '/uploadify/uploadify.php',
        width         : 120
    });
});

file_upload_1其实也就是一个容器ID,比如

» 阅读全文

关键词: uploadify使用 , jquery插件

手机浏览器或者微信浏览器移动端无刷新上传图片:LocalResizeIMG【兼容安卓IOS】

手机浏览器或者微信浏览器移动端无刷新上传图片:localresizeimg(支持HTML5)【兼容安卓IOS】

原版的主要问题只能指定固定的图片宽度,而修改版扩展原图片上传

<h1 class="text-center">LocalResizeIMG-本地压缩 1.0</h1>
    <hr/>
    <input type="file" name="head"/>
    <hr/>
 
    <!-- javascript
        ================================================== -->
    <script src="http://cdn.staticfile.org/jquery/2.1.1-rc2/jquery.min.js" 
type="text/javascript"></script>
    <script src="localResizeIMG.js" type="text/javascript"></script>

» 阅读全文

关键词: 移动端上传图片 , localresizeimg