随着移动互联网的发展,现在基本每个网站都有手机验证码了,手机验证码设计不麻烦,主要就是容易被其他人刷发短信接口,所以后面也会说说如何防止被刷接口数据库设计CREATE TABLE `sms_captcha` (   `id` int(11) unsigned NOT NULL AUTO_INCREMENT,   `mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手机号码',   `captcha` varchar(10) NOT NULL DEFAULT '' COMMENT '验证码',  
  前言前面我们简单介绍了composer的安装 以及 如何安装库本文目的主要实战讲解如何使用库,主要是PSR-0 和 PSR-4的区别,以及如何在代码中引用。关于PSR-0和PSR-4的具体区别可以参考博文 PSR : php编码规范演示代码演示代码都在 https://github.com/apanly/composer_helloworld  中,有兴趣的可以clone实战内容引用资源phpoffice/phpexcelmonolog/monologapanly/browser-detector (本人自己的库,后续会讲解如何创建自己的库) composer.json文件如下{   "require":{     "phpoffice/phpexcel": "1.8.0",    &nbs
  最近手贱把phpstorm 升级到了最新版,发现输入中文符号输入不了呀,全部都变成英文符号了,例如输入的逗号、句号(,。)等都被转换成了(,.)经过各方搜索,这个在官方也说了,是个bug,JDK的bug,点击这里去官方查看  目前官方还没有解决补丁,只有降低JDK版本了,目前测试出来 jdk1.8.0_45是可以的,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html#jdk-8u45-oth-JPR我是mac版本的,安装 jdk1.8.0_45的时候,需要先删除jdk删除命令如下sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin sudo rm -fr /Library/Pref
  Node 安装git clone https://github.com/nodejs/node cd node ./configure make sudo make install node -v npm -v npm设置淘宝镜像npm config set registry https://registry.npm.taobao.org npm config set disturl https://npm.taobao.org/distIOS Simulatorsudo npm install -g ios-sim sudo npm install -g ios-deploy ##如果失败用下面的命令 sudo npm 
模拟调试不能保证真机一定没问题,所以真机调试是非常必要的一步IOS设备启用设备调试在IOS设备中(Iphone,Ipad)中开始web检测器设备->safari->高级->web检测器编译代码ionic build ios调试通过命令直接启动 或者 通过xcode导入会自动运行APPionic run ios --device这时打开Safari的“开发”,就可以看到如下界面:
通过授权服务器授权jetbrains是一家专门做IDE的软件公司,软件也非常好用,但是授权特别贵,下面就说说免费的方式,就是使用授权服务器,地址:http://idea.qinxi1992.cn 自己搭建授权服务如若上述公共授权服务被封了,那就只能自己搭建了,不难,按需从附件中选择版本就好了附件地址https://yunpan.cn/cvBFY3G5rSisC  访问密码 b3ce根据自己电脑系统选择对应的版本启动服务本人系统ubuntu 虚拟机,启动命令sudo ./IntelliJIDEALicenseServer_linux_amd64 2016/10/14 22:16:25 ************************************************************* 2016/10/14 22:16:25 ** IntelliJ IDEA&
  最近做项目发现在Iphone下,我们上传图片都会被翻转,最后查阅资料发现,的确是IOS的问题不说过程,直接解决方法iOS下,html方式使用<input type="file">上传图片,图片会被旋转。遇到这个问题js是无法解决的,html也没有相应的解决方案。只能放到后台去处理,将旋转的图片再旋转回来。iOS拍摄的图片提供了EXIF信息,Orientation值为6即顺时针90度,有了这个信息我们只需要逆时针旋转90度即可。伪代码 //下面是php的伪代码 $exif = exif_read_data($image_file);//获取exif信息 if (isset($exif['Orientation']) && $exif['Orientation'] == 6) { //旋转imagerotate($img,-
  首先在viewDidLoad方法中加上如下代码:if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {     [self.tableView setSeparatorInset:UIEdgeInsetsZero]; } if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {     [self.tableView setLayoutMargins:UIEdgeInsetsZero]; }然后在willDisplayCell方法中加入如下代码:- (void)tableView:(UITableView *)tableView 
诸王混战关于开发标准这块,可以说一直都是风格迥异,各家都有各家的玩法,民间更是个人玩个人的。目前我们国内比较出名的几个框架(Yii,Laravel) 都已经支持Composer并且加入了PHP-FIG(php框架程序组)。其中Composer的自动加载就支持PHP-FIG指定的PSR-0 和 PSR-4 规范来实现自动加载机制,并且Composer推荐使用PSR-4PHP-FIG这是一个自愿非正式的机构,但是就目前对我们的影响来看,可能都已经默认为一个公信组织了,的的确确制定了不少非常好的规范目前从官网看,已经投票( http://www.php-fig.org/psr/  )通过的有7个大的规范了PSR-0 自动加载规范 ( 官方已废弃,主要是php5.3以前没有命名空间 )PSR-1 编码规范PSR-2 编码风格推荐PSR-3 日志接口PSR-4 改进的自动加载规范( 官方推荐 ,规范更简洁调理清晰了)PSR-6 缓存接口PSR-7 HTTP消息接口Compose
  最近我们公司的项目的在导出excel的时候偶尔出现内存溢出错误,经过测试发现当数据量大于5000条就出现这个问题(默认php.ini memory 是128M)Allowed memory size of 134217728 bytes exhausted (tried to allocate 43 bytes)解决内存溢出问题方法如下增加内存了,修改php.ini中memory_limit 或者 @ini_set('memory_limit','256M')PHPEXCEL库支持使用缓存 具体缓存使用请查看  phpExcel大数据量情况下内存溢出解决找出内存急剧增加的原因方案1 和 方案2 算是非常简单粗暴的了,但是没有触及根本,就是为什么会内存溢出,作为技术人咱们就应该打破砂锅问到底了本文主要简单描述下我是如何排查内存溢出
  本人也是Python爱好者,众所周知,Python扩展多,每次为了测试,安装各种各样的扩展,这样导致本地的Python环境非常混乱,就有人想到搞个隔离环境  和 本地环境没有关系,随时可以删除这个隔离环境,在创建,这就是Python虚拟环境Virtualenv(是不是感觉和虚拟操作系统有点相似 Virtualbox )下面直接上操作步骤安装Virtualenv$ sudo apt-get install python-dev #python开发包 $ wget https://pypi.python.org/packages/source/v/virtualenv/virtualenv-13.1.2.tar.gz#md5=b989598f068d64b32dead530eb25589a $ tar -xvf virtualenv-13.1.2.tar.gz $ cd&n
修改 应用名直接 修改 config.xml中的name修改icon 和 启动界面在resources目录有个 icon.png  和 splash.png 文件,直接把文件覆盖执行重新生成命令ionic resources  #重新生成icon 和 splash ionic resources --icon #重新生成icon ionic resources --splash # 重新生成splash 
  个人一直想做个App,但是学习 IOS 的过程发现 原生的做界面还是听麻烦的就放弃了。后来就转到混合式App阵营了混合式App 定义Hybrid App(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”平台框架选择APICloudDcloud Ionic平台对比Dcloud 平台大量使用H5接口提供一些原生Api(官方号称40万Api),例如 webview,actionsheetMui提供界面框架论坛 和 文档 还算可以,入手快hbuilder开发工具不错(应该这个编辑器最出名了)APICloud 平台官方提供原生模块文档不好入手,新手入手有点高Ionic 平台官网只提供 UI框架 和 JS 组件文档比较完善有大量的插件,借助于 cordova/phonegap 平台遇到的问题 都可以 google 解决开发工具 部署都非常方便个人选择平台个人选择了ioni
在使用 cordova 过程 使用的插件 有可能不能满足个人需求,就需要修改,下面就直接说说步骤插件结构我用 cordova-plugin-inappbrowser 插件 讲解在目录中有个 src目录,然后 有android  和 ios 目录,直接按需修改就行了. |-- CONTRIBUTING.md |-- LICENSE |-- NOTICE |-- package.json |-- plugin.xml |-- README.md |-- RELEASENOTES.md |-- src |   |-- android |   |   |-- InAppBrowserDialog.java |   |   |--&
本人使用Ionic框架开发了一个 超级逗表情 的App依赖插件cordova-plugin-app-version 0.1.9 "AppVersion"cordova-plugin-file 4.3.0 "File"cordova-plugin-file-opener2 2.0.2 "File Opener2"cordova-plugin-file-transfer 1.6.0 "File Transfer"cordova-plugin-inappbrowser 1.5.0 "InAppBrowser"cordova-plugin-network-information 1.3.0 "Network Information"cordova-plugin-qqsdk 0.4.0 "YCQQ"cordova-plugin-wechat 1.3.0 &qu
  项目做完之后 接下来就是打包操作了,接下来直接说Android 打包操作生成签名证书keytool -genkey -alias vincentguo -keyalg RSA -validity 20000 -keystore vincentguo.keystore #说明: #    -genkey 产生密钥 #    -alias vincentguo 别名vincentguo #    -keyalg RSA 使用RSA算法对签名加密 #    -validity 20000 有效期限2000天 #    -keystore&n
简介Charles 是在 Mac 下常用的截取网络封包的工具,在做 iOS 开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。Charles 主要的功能包括:支持 SSL 代理。可以截取分析 SSL 的请求。支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。支持 AJAX 调试。可以自动将 json 或 xml 数据格式化,方便查看。支持 AMF 调试。可以将 Flash Remoting 或
相信很多技术人员都知道有个github造福开发人员的git(分布式版本管理工具)代码管理社区,可以说现在git是开发人员的必备技能之一本周有个朋友公司需要一个类似github的代码仓库管理系统,本人选择了gitlab(没有什么对比了,好像目前就gitlab最好了并且维护也不错了),下面就来说说搭建私有github系统的过程服务器设备信息如下Ubuntu 14.04(64)    memory:8G    cpu:4    disk:100G    bandwidth:2Mbit/s下载gitlab-ce-8.3.4.deb官网地址:https://about.gitlab.com/downloads/ (下载比较慢还要翻墙,下面有一个云盘下载地址)访问密码 1091  https://yunpan.cn/crywEZAg
什么是opcodeopcode(operate code)是计算机指令中的一部分,用于指定要执行的操作,指令的格式和规范由处理器的指定规范指定opcode是一种php脚本编译后的中间语言,就像java的ByteCode,或者.NET的MSL为什么要使用opcode缓存opcode cache的目的是避免重复编译,减少CPU和内存开销的。如果动态内容的性能瓶颈不在于CPU和内容,而在于IO操作,比如数据库查询带来的IO开销,这个时候opcode cache的性能提升是非常有局限的。无论如何既然opcode cache 可以降低cpu和内存的开销,这当然是好事了目前PHP中常见的opcode cahce模块如下APCOptimizer+(目前已开源并与php5.5+集成了opcache)xcacheeAcceleratorOpcode原理例如有如下一段代码<?php echo 'Hello World'; $a = 1 
  公司有个群发短信的小项目,项目上线了很久也没有什么问题,最近有商家说 我短信群发不能用现象是:发现有时候可以发送,有时候不可以发送,看截图发送的手机数量不一样通过调试php代码发现 php 只接受了1000个 请求参数,然后参看nginx的access 状态是200,正常。在查看php的error log 发现有句提示如下Unknown: Input variables exceeded 1000这句提示就是 最多1000 的请求参数,这个在某些项目中1000可能满足不了需求,所以我们需要修改下,找到php.ini文件 ,搜索关键字  max_input_vars  根据项目需求设置满足你需求的值
  大公司一般都会做自动化覆盖测试,会用到不需要节目的浏览器环境,下面有一些开源工具有时间尝试下软件名介绍支持语言Awesomium基于Chromium无图形界面浏览器引擎。C++, .NETbenvBenv是node.js开发的无界面浏览器测试环境,用于测试客户端代码。JavaScriptbrowser-launcherBrowser-Launcher可以检测系统上的所有浏览器版本,并在一个独立的配置文件中启动它们,用于自动测试。JavaScriptbrowser.rb无界面 Ruby 浏览器。RubyBrowserjet无界面webkit浏览器,采用node.js接口。JavaScriptBrowserKit可模拟浏览器的行为。PHPCasperJSCasperJS 是一个开源的导航脚本和测试工具,使用 JavaScript 基于 PhantomJS 编写,用于测试 Web 应用功能,Phantom JS是一个服务器端的 JavaScript API 的 WebKit
最近公司做一个客户导入会员的功能,以前导入都是使用csv格式导入的,但是客户反应问题挺多的,普遍是乱码(由于各种系统各种环境可能引起编码问题)。最近想着就把这个导入完全改成excel导入,就研究了下phpexcel,发现读取excel还是挺方便的,这样也方便客户了,比较excel 无论用office 还是 wps 打开都是没有问题的示例读取代码如下/*  * $path excel文件路径  * $header_mapping 文字和数据库字段的对应关系  * excel第一行 是 字段标准(通常是汉字),  * example  * $header_mapping = [ '姓名' => 'uid' ];  *  */ privat
  服务器经常会产生各种各样的日志文件,我们需要定期清理日志的分类系统日志应用日志系统日志例如系统的history 历史信息   crontab的运行日志  一般系统日志系统都帮我们运维好了,不需要额外配置应用日志例如nginx  的access 和 error 日志 ,php框架的运行日志,这些日志是我们排查问题的有力证据工具logrotatelogrotate是什么logrotate是大多数linux系统自带的日志切割工具logrotate的适用场景logrotate常用来切割仍在被写的“动态”文件,它支持 按时间间隔或文件大小 来触发文件的自动切分(automatic rotation)实战按天保存一周的Nginx日志压缩文件,保留30天,配置文件为「/etc/logrotate.d/nginx」最后代码如下(本人ubuntu系统)/data/logs/nginx/*.log {      &nb
常用浏览器google chrome 有很多优秀的插件,寂寞的时候想看看人家是怎么实现的,说是快那就动手吧插件代码位置本人mac笔记本,chrome 插件位置如下$ cd  /Users/vincent/Library/Application\ Support/Google/Chrome/Default/Extensions $ ls -al drwxrwxr-x   3 vincent  staff   102 Jun 24 13:33 bnoamnljhdaigfhafpomkflkebegjfci drwx------   3 vincent  staff   102 Jul 25&n
最近在做项目的过程中,发现很多JS报错没有引起重视,我就想想把JS错误捕获了,然后展示在我们一个平台上具体实现代码:window.onerror = function(message, url, lineNumber,columnNo,error) {     var data = {         'message':message,         'url':url,         'error':error.stack     }; &
所见所得编辑器网址:http://wangeditor.github.io/ datepicker datetimepicker网址:https://github.com/xdan/datetimepicker google-code-prettify 网址:https://github.com/google/code-prettify Google Code Prettify是一个JavaScript库,用来对各种页面上的源码进行语法着色高亮显示。Google Code Prettify很小巧,解压后也只有85K的大小。支持大部分常用的语言。不需要指定语言syntaxhighlighter网址:https://github.com/syntaxhighlighter/syntaxhighlighter JavaScript语法着色库
接着上一篇博文继续 【No.1】监控Linux性能25个命令行工具10:mpstat -- 显示每个CPU的占用情况该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一个单线程应用程序引起的mpstat -P ALL 1 Linux 3.13.0-75-generic (lnmp)  06/25/2016  _x86_64_ (2 CPU) 02:28:59 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest&nb
如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?通过以下命令或者工具可以快速定位topvmstatlsoftcpdumpnetstathtopiotopiostatuptimedmesg | tailmpstat -P ALL 1pidstat 1free -msar -n DEV 1sar -n TCP,ETCP 1IPTrafpsacct 或者 acctMonitNetHogsiftopMonitorixArpwatchSuricataVnStat PHPNagios Zabbix1:Top-Linux进程监控Linux下的Top命令是一个性能监控程序,许多系统管理员常常用它来监控Linux性能,在许多Linux或者类Unix操作系统里都有这个命令。Top命令用于按一定的顺序显示所有正在运行而且处于活动状态的实时进程,而且会定期更新显示结果。这条命令显示了CPU的使用率、内存使用率、交换内存使用大小、高速缓存使用大小
以前注册很多网站密码都使用简单密码,但是由于今年频繁曝出密码不安全问题,所以要使用更加复杂的密码。但是好多个账号,密码也不能设置成一样的,防止一个被盗全部不安全了,记密码就成了意见很头疼的事情。在手机上有个1password软件,非常好,不过收费的。本着节约和利用自己的技能,自己就想到开发一个加密的账号功能在php中有个ssl 加密功能,本文就是用此功能。步骤如下前提:什么样的秘密才安全密码没有绝对安全的说数字,字符,特殊字符结合,长度大于10位定期更换密码一:生成私钥和公钥$config = array(    "digest_alg" => "sha512",    "private_key_bits" => 4096,    "private_key_t
为什么要使用HTTPS主要是为了安全,虽然没有100%的安全,但是我们可以尽量提高安全级别,目前大型网站都已经使用HTTPS了注册StartSSL注册页面  选择国家 和 输入 邮箱  他们会通过邮箱地址给你个验证码,在这期间不要关闭选项卡或浏览器 , 所以你只要保持打开状态,知道获得验证码并贴上它点击注册,设置证书密码下载证书到本地,点击证书文件,提示输入密码就输入上一步设置的密码,然后点击下图第三个框的here进行登录生成证书准备工作现在,我们需要使得StartSSL相信我们拥有自己的域名,我们想要为他生成一个新的证书。从控制面板中,点击“Validations Wizard”到此域名认证就通过了生成证书下载证书到本地,然后根据自己webserver使用不同的文件Nginx 配置server {     listen       80; &nbs
  • 微信公众号 微信小程序
  • 微信机器人
  • 群1:1046090432
  • 群2:585567981