本文主要讲解 集成 第三方社交账号登录为什么会有这个需求?主要是因为目前互联网的网站数量太多,如果在各个站点都注册一个账号 用户非常不容易记住每个账号的用户名和密码,并且非常难保证每个账号的密码足够安全而目前流行的社交网站 基本上每个用户都有账号,如果通过这类社交网站登录 就能得到如下几点好处用户不用再注册其他账号用户只能维护社交账户足够安全就行了,使用此社交账号登录的就是安全的了常见的第三方社交账号有哪些?QQ微信新浪微博人人网百度Github如何加入第三方登录功能?国内这些比较大的社交公司 都有专门的开放平台,有经验的开发者可以看开放平台是可以实现了,本人主要实现三个社交登录新浪微博登录QQ登录Github登录申请新浪微博网页应用进入 http://open.weibo.com/  申请网页应用,微博应用可以先申请等上线之后再提交审核申请QQ登录应用进入 https://connect.qq.com/  ,登录之后 进入 应用管理,QQ应用需要
代理是互联网发展初期就有的一项技术,主要是通过在服务器上安装代理软件提供代理功能的。常见的代理主要有三类正向代理反向代理透明代理有点迷糊吧,什么正向、反向了。其实我刚开始听到这个概率也是挺迷糊的,下面我们一起来详细了解下正向代理在没有特别说明的情况下,代理说的就是正向代理。定义正向代理(forward proxy)是位于客户端【用户A】和原生服务器【服务器B】之间的代理服务器C图解从上图我们可以看出,所谓的正向代理 就是 代理服务器C 代替 用户A 访问 服务器B 。这就是正向代理存在的意义,那我为什么要代替 访问这种需求?作用用户A 本身 无法访问 服务器B:所谓的FQ(不敢写了,上次写了被**部分封站并警告了)Cache作用:Cache(缓存)技术和代理技术是密不可分(剧透下,反向代理也有缓存的作用),如果用户A 访问 服务器B 资源D之前,已经有用户通过代理服务器C访问了,那么代理服务器C可以将 资源D 保存一段时间。之后在保存有效期内 有人在访问 资源D ,代理服务器C
最近发现一个非常奇怪的问题,症状如下:crontab 定时任务 配置时间 是 10 5 * * * (每日凌晨5点10分执行)运行脚本时间却是 18:10左右Dec 24 05:10:01 htuidc CROND[7550]: (ubuntu) CMD (php yii backup/mysql >>jobs/backup.log) 2016-12-24 18:10:01 =======start====== 2016-12-24 18:10:05 backup mysql 2016-12-24 18:11:15 =======end======通过上面的描述和日志,可以看出 相差时间是13小时左右,我能肯定的就是脚本时间是对的,那么就可以推断出来crontab执行时间是不对的,最后查阅资料才知道原因:本
  删除git某个文件的所有历史记录git的目的就是版本控制,记录每一个版本的变动。然而有的时候我们往往希望从版本库中彻底删除某个文件,不再显示在历史记录中。例如不小心上传了一堆错误的文件,或者不小心上传了帐号、密码,那么这个时候怎么办呢?下面的命令可以完美解决你的问题$ git filter-branch -f --tree-filter 'rm -rf common/service/SyncBlogServince.php' HEAD $ git push origin --force批量删除git分支git branch -r |grep 'origin/pmt_201608' | awk -F '/' '{print&nb
  目的本文的目的主要是说明 命名空间的 use 关键词 和 new ClassName 这两个步骤,哪个步骤才会执行自动加载,这是逻辑有点混乱的表现,这种想法也是很正常的,让我们来解密吧命名空间(namespace)php从5.3加入了命名空间,我略懂一些java,所以命名空间还是比较好理解的,为什么需要命名空间啦?主要解决自己写的内部类/函数/常量  和 第三方的类/函数/常量冲突。引用命名空间下资源都要 使用关键字 use 标明 例如require_once("apanly/BrowserDetector/Browser.php"); use apanly\BrowserDetector\Browser; new Browser();自动加载php可以自定义自动加载函数,主要减少include 和 require 的使用。例如function myLoader($classname){    $c
引言代码发布系统是互联网公司必备的运维系统,作用主要用户发布业务代码 到 业务服务器为什么需要代码发布系统有的同学可能说,我们公司服务器就那么一台,做个发布系统太麻烦了? 不认同这说法发布系统有如下好处流程管理,加上权限管理,可以在系统记录 谁 做了 什么 操作减少人工误操作影响,登录服务器本身操作就是有误操作的可能的运维自动化  为运维工作减负加快发布速度  不用人工登录N台服务器发布方便快速回滚版本技术选型git:代码管理工具  git使用笔记rsync:同步代码到指定服务器Yii2:php mvc 框架Bootstrap3:前端框架jquery:js库代码发布系统流程框架图Web界面化操作,流程化管理 ,提交发布任务定时脚本 获取发布任务制定同步策略 发布代码界面化操作,流程化管理流程化管理在人员比较多的时候优势特别明显,人多手杂很容易出问题。所以在代码发布系统中加入流程化管理也是与时俱进上图是我画的一个比较完善的流程图(以前公司实现过这么复杂的流程)
  偶然发现最近在公司日志平台 总是可以看到很多关于php curl的错误信息Operation timed out after 0 milliseconds with 0 out of 0 bytes received Resolving timed out after 5514 milliseconds非常奇怪,以前都是好的,使用wget获取也非常慢,从下面的结果可以看出来 dns解析比较慢wget www.domain.com --2016-11-19 22:17:30--  http://www.domain.com/ Resolving www.domain.com... # 此处停滞约 5 秒 xxx.xxx.xxx.xx
  个人总结URL统一管理,调用统一方法,并且URL必须返回全路径,可以封装成service,并且url是全路径(包含域名),以后更改都非常方便了静态资源加版本好,调用统一方法用户密码必须加salt,最好记录在数据库中,每个用户都有不同的salt静态资源版本号,每次上线需要版本号不一样了对于数据量很大的查询,时刻记得要释放内存 详见phpexcel 内存溢出 优化手机API必须指定版本号,例如 /v1/user/info  ,/v2/user/info后端应用应该记录所有的GET,POST请求,以及GET,POST请求参数(商业产品非常重要)全站HTTPS或者CSP 防止运营商内容劫持
前言在开发中,高效能的程序 也包括 高效能的查询,所以优化SQL也是程序员必要技能之一。要优化就必须要有慢日志记录才可以知道哪些查询慢,然后反向去修改慢日志设置方式写入文件写入数据库实践操作方式一:写入文件编辑my.conf 中修改 log_slow_queries 的日志地址$ cd /etc/mysql $ cat my.cnf |grep slow  log_slow_queries = /data/logs/mysql/mysql-slow.log $ sudo /etc/init.d/mysql restart简单验证$ mysql -uroot -p mysql> show variables like '%slow_query_log%'; +----------------
最近我们公司做了一个摄像头项目,需要测试各种浏览器的情况,我就安装了一个Win xp的虚拟机,但是发现无法找到摄像头,经过查阅资料找到了解决办法前提环境Mac电脑Virtualbox 虚拟机虚拟机系统XP解决办法其实只要安装一个Virtualbox 扩展就好了,可以直接去官网下,安装好了就如下图可以直接选择摄像头了安装前安装后参考资料Mac OS X系统下利用VirtualBox安装和配置Windows XP虚拟机Oracle VM VirtualBox Extension Pack
NO.0前提你的下载我的App :超级逗表情 Andorid:http://fir.im/chaojidbq Ios:https://github.com/apanly/chaojidbq (源码,由于Ios需要证书)NO.1选择自己喜欢的表情,点击微信图标,发送给好友NO.2在微信中点击发送NO.3长按聊天窗口中的表情,点击添加到表情管理中NO.4现在在自己的收藏的表情中就可以刚才自己添加的表情
大纲创建自己的composer库提交到指定平台测试安装自己的库设置composer平台自动更新如何方便测试自己开发的库开始动手创建自己的composer库个人博客后台有一部分是关于统计的,通过UA获取浏览器,设备,操作系统。本人封装了一个库,放在github上,源码地址:https://github.com/apanly/browser-detector,任何一个文件夹只有有个composer.json文件,就可以作为一个库或者项目的,大家可以自行在github新建自己的项目browser-detector 的 composer.json内容如下{     "name": "apanly/browser-detector",     "description": "根据UA判断浏览器类型和版本,操作系统,设备型号&nbs
  随着移动互联网的发展,现在基本每个网站都有手机验证码了,手机验证码设计不麻烦,主要就是容易被其他人刷发短信接口,所以后面也会说说如何防止被刷接口数据库设计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
  • 微信公众号 微信小程序
  • 微信机器人
  • 群1:1046090432
  • 群2:585567981