吹水 類別下的文章 文章類別歸檔


对于APP无法捉到接口请求解决办法
4年前
  • 8
  • 0

对于APP无法捉到接口请求解决办法

工作需要分析某个APP的请求并爬取其图片数据,之前有用过Fiddleranyproxy代理捉包,无论怎样一直没看到有请求接口的记录(只有请求图片的请求),很是奇怪,所以之前爬取的思路是通过模拟器+appium来弄的,效率甚是慢而且容易中断

今天再有空回来复盘一下,自己将模拟器的网络断掉清掉APP的缓存,再次打开app发现数据都没了,很确定其是走的接口拉取数据的,但是为什么捉不到其请求记录,我猜是因为APP不走代理发起接口请求,防止被捉包

paperen在网上遨游了一下,找到这篇文章 部分APP无法代理抓包的原因及解决方法(flutter 应用抓包),基本上是符合现在的情况了

解决方案:drony+代理

drony下载

配置参考下图

阅读更多
继续关于并发操作数据库问题的研究
8年前
  • 206
  • 201

继续关于并发操作数据库问题的研究

就很久之前自己写过的一篇关于mysql锁表的文章,http://paperen.com/post/lock-table,在目前来看实现上并不存在太大的问题,而当情况放在高并发的情形下那么该解决方案会变得不那么可行,原因是对数据库update操作实在频繁而且高并发情况下大量操作需要等待某个解锁后才能执行

就接着之前那篇文章说的情况

商店现在某商品只有1件库存,然后A与B在网上进行下订,A与B几乎同时(或许也就差几毫秒,A比B快那么一点点)进行

在这种应用情景下,我们先建立一个数据表 product,注意到使用了innoDB引擎

CREATE TABLE `product` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `num` mediumint(8) DEFAULT '0',
  `goods` varchar(60) CHARACTER SET latin1 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

INSERT INTO `product` VALUES ('1', '1', 'test');

下面为基本php代码

<?php

$dbhost = '127.0.0.1';
$dbname = 'test';
$dbpwd = '';
$dbuser = 'root';

try {

 $conn = mysqli_connect($dbhost, $dbuser, $dbpwd);
 if ( !$conn ) throw new Exception('db error');
 mysqli_select_db($conn, $dbname);
 mysqli_query($conn,'set names UTF8');

 $id = 1;
 
 $sql = "select * from product where id='{$id}'";
 $query = mysqli_query($conn, $sql);
 $data = mysqli_fetch_array($query, MYSQLI_ASSOC);
 
 if ( $data['num'] <= 0 ) throw new Exception('product sold out');
 
 sleep(1);
 $sql = "update product set num=num-1 where id='{$id}'";
 mysqli_query($conn, $sql);
 echo 'ok';
 
} catch( Exception $e ) {
 echo $e->getMessage();
}

阅读更多
尼玛,早知svn有hook的功能就那个那个
12年前
  • 3
  • 1

尼玛,早知svn有hook的功能就那个那个

原来svn可以利用hook进行一些猥琐的动作,比如paperen之前这个文件版本同步小工具这种小玩意就可以免了,当paperen发觉到这个事实后不禁内牛满面……

下面来隐约地说下这个hook怎实现客户端提交后让服务端的版本自动更新,简直简单到不能在简单……

条件在此就不提了(对了,先声明一下这是在windows条件下的),主要是你要到版本库(比如paperen本地测试时用的是ci-paperen,就是你使用svn create后的目录中的那个hook),进入hook目录中,这里就是放置hook的地方,而对于我们实现这个功能只需要用到post-commit这个钩子,你可以打开post-commit.tmpl看它的说明,所有钩子都有这么一个tmpl文件,里面都有说明。

确保你已经将subversion的bin目录加到环境变量,就是你可以通过命令行进行svn的操作,比如你进入命令行,直接敲上svn试试,看是否支持这个命令,然后使用

阅读更多
文件版本同步小工具
12年前
  • 0
  • 1

文件版本同步小工具

用了半天的时间完善与整理了上周回家写得半调子的代码,paperen倒是不清楚subversion是否支持这个功能,但是既然自己都写了就放上来吧,用的是python写的,所以也就是半调子水平。

弄这个东西的来源是因为在公司那个项目,因为要给客户看到我们那个项目的原型,所以我们在内网找了一台机子作为服务器,然后设置一下路由的转发,将公司的域名挂上去,那么客户访问指定的域名+端口号就会转发到我们内网那台机子上了,而那台机子并不是我用的开发机子,而每次原型有什么更新我都得过去那台机子上用svn update一下,将那台机子上的demo版本更新到最新,为了保证客户看到的demo与我们目前完善的demo是一致的。

所以嘛,你看我们每次有完善什么都得去那台机子上用鼠标操作一下,虽然不到几分钟,但是paperen也嫌麻烦,于是paperen将那台机子开启允许远程,于是自己就不要过去机子面前操作了,在自己机子上远程过去操作svn,然后就关闭远程,那比亲自走过去爽多了,但是……paperen还是觉得麻烦(不得不承认我很懒……)

阅读更多
关于产品与设计的一点思考
13年前
  • 0
  • 0

关于产品与设计的一点思考

20110915211528

最近从迷茫中又坚持了下来,而且还获得了其他一些与技术无关的体会,当然这些体会并不是突然冒出来的,或者也跟这1年的工作有关吧。paperen首先抛出自己的观点吧,“一件好的产品必须而且一定是从源设计中继承并得以延伸的”,无论您认同或者反对,或者中立也好,paperen会在下面用自己的体会去描述自己这个观点。so,这是一篇议论文……

在生活中会不会有这些情景,“我很想弄一个小玩意,能用来这样那样,是啊!很cool啊!”,在想象中确实很吸引很完美,但一旦将其置于实现中就没有下文了,而这种情况paperen认为是很正常的,每个人都爱幻想,而且应该保持幻想,至于能不能实现是其次,因为如果没有这些幻想与这些概念就根本不会有实例的出现,但这里paperen想强调的是,如果连自己(设计思想来源者)都没法做到吸引自己去动手去认为值得实现,那么可能证明了两件事:1.你只是个空幻想家,2.你想象的玩意仍不够吸引。

阅读更多
不要忽略了前端的性能
13年前
  • 0
  • 1

不要忽略了前端的性能

将《高性能网站建设指南》读完了,感觉很好,这本书值得大家一读。让paperen对前端性能优化有了更多了解。steve souders 将所有法则都描述得很彻底,很简洁。书中一些观点更是让paperen深刻“只有10%-20%的最终用户响应时间花在了下载HTML文档上,其余的80%-90%时间花在了下载页面中的所有组件上”,“如果将后端响应时间缩短一半,整体响应时间只能减少5%-10%,如果关注前端性能,同样是将其响应时间减少一半,则整体响应时间可以减少40%-45%”,总结得真的很到位,更重要的是你在阅读过程中会通过例子自己体会到作者这些观点。

光看封面都挺有意思的,留意那只狗的比例。

20110327151826

阅读更多
IDE中你最喜爱的字体是哪个
14年前
  • 0
  • 0

IDE中你最喜爱的字体是哪个

理论上说这是一篇提高我们写代码时的幸福感的文章,you know~paperen也对这个捣腾了许久,好的IDE是会让你写起代码来更加顺手,而当你找到了你喜爱的IDE后是否有想过将代码的字体也改得更好看更舒服一点,那敲起代码来就更舒服了,对眼睛也更好一点,you know有一句话是没错的“代码如诗”……

当然啦,这个话题是无关任何语言平台的,关乎的只是代码的外表美,嗯~确实比较肤浅……you see,paperen目前习惯使用的IDE是netbean+dreamweaver,前者写php代码后者写css与js,一直都习惯这样做的了,paperen很喜欢netbean但是代码的字体总不是那么好看……相对于dreamweaver而言,在dreamweaver中如果你的文件编码是utf8的话它默认使用的字体是Courier New的,如果你的编码是gbk/gb2312的话那么默认的字体就是宋体,但是paperen倒是觉得宋体下的英文难看了。

下面先放出一个paperen测试过程中试用的字体,你可以在里面选择你觉得顺眼的对比对比。paperen目前的首选字体是Courier New 15号的,而dw中也是Courier New 12pt,感觉雅黑怎不太好看呢,有点失望,难道是paperen的雅黑字体是盗版的……

阅读更多
最近碰到的一些WEB安全问题
14年前
  • 2
  • 0

最近碰到的一些WEB安全问题

近来paperen总想写点东西但又写不出来,每月一篇还真"月经"似的……最近对公司的WEB项目进行一些安全测试,又提及到一些WEB安全的问题,改了那个烂摊子差不多半年了才终于来到了安全测试的份上,阿叔用了不少软件来检测这个web项目,结果正如paperen想象中一样,N多漏洞提示。之前的代码写得确实不太严谨呢,对一些参数就明显没有过滤,这样导致的问题会比较严重,比如一个叫Cross Site Scripting的漏洞(就是一个能注入javascript的漏洞无论在URL还是提交的表单里面注入),严重的是SQL Inject漏洞(sql注入是在参数中构造特殊的字符串从而爆出数据库重要信息或者能执行一些危险的操作),除了程序本身导致的漏洞外还有一些服务器配置的漏洞也需要修复,但是60%的漏洞主要是由程序导致的,这确实是程序员要明白的,一个好的web程序不应该只是从可运行性上去分析,重视质量你会得到更多。

阿叔使用了好几个测试工具,其实测试出来的结果基本都是差不多的,以下的漏洞主要是使用一个叫iiscan(亿思公司的)的来扫描站点得到的漏洞报告,还是蛮不错的。

在此说下碰到的几个漏洞。

阅读更多
关于网站打开速度那点事
14年前
  • 2
  • 0

关于网站打开速度那点事

最近paperen我主要是在做新的博客,当然也会与宿友们打打机,所谓好好利用剩下的大学时间嘛~~而新博客也差不多了,前台基本可以了,现在正在修理后台。而在重修程序与整改的过程中确实也会有不少收获与进步,比如站点的框架,还有站点的性能上。?

而目前对于paperen而言,网站的性能主要是体现在站点打开速度上吧,固然这里说到的提升性能也只是程序上的方法,因为paperen对于服务器的配置真的接触得很少,什么图片与站点放在不同的服务器上,这种服务器上的部署paperen我就知道得很少了。所以如果您是想了解服务器方面提升站点性能知识的话,这篇东西应该就不是您所需的了,而此文章也不包括实际代码,或者以后会加上一些例子。?

首先paperen我想问问各位对于网站速度慢有什么看法?一个打开非常慢的网站是不会受欢迎的,苛刻地形容,如果你的网站在3秒后才能打开浏览者可能在2秒的时候就会叉掉,或者在1秒的时候就会叉掉……每个浏览者都喜欢快感,你不要让他们等得太久,也不要期望他们会去等待3秒,哪怕是1秒,paperen现在的博客在宿舍的环境中(805Kbps,有几个人在玩网游,有一个人在看视频)打开首页需要5,6秒。额……paperen我也不知道会不会曾经有浏览者会因为这个而停止访问我的博客,不过5,6秒这个也确实有点慢了,所以计划在新博客中将速度提升一下或者弥补一下。我们要知道让浏览者等待一秒是什么概念,更不用说让他们再等待多一秒了。?

阅读更多
区块链知识分享
6年前
  • 3
  • 0

区块链知识分享

最近公司新方向涉及到区块链,在paperen研究了一段时间后,抽空写点关于这块的一些总结,一方面有助于自己温故旧概念另一方面也作为一个笔记

关于这个分享大概会按照以下提纲进行

  • 区块链概念
  • 区块链相关名词解释
  • 比特币交易图解
  • 以太坊
  • 以太坊开发例子
  • 参考资料

区块链概念

如果一开始觉得这个概念有点难理解那么咱们先从一个带调侃色彩的对话开始

问:什么是区块链?答:世界上最慢的分布式数据库

阅读更多
想到一个自动更新多个奴隶版本库的解决方案
11年前
  • 3
  • 0

想到一个自动更新多个奴隶版本库的解决方案

首先声明一下,paperen这里这种方案只是自己想出来的并不是完美的,也许已经有许多前辈已经遇到与我一样的需求并且已经有一套完善的项目管理办法,有知道的麻烦也给我提一下,paperen确实没google出来…

而目前就paperen这个解决办法简单来说就是通过svn的钩子来实现 也需要一些脚本的支持(这里还是用了php)

首先还是先举例,比如SVN服务器上有一个项目版本叫test,我在工作机上checkout下来了,然后又在测试服务器1上checkout一遍,又在测试服务器2上checkout一遍,那么到目前为止test这个项目已经有三个版本,我的工作机上、测试机1上、测试机2上,然后本地的版本某个文件修改了一段代码后提交,很明显其他两个测试机上的代码版本都不会产生变化,因为没有update,那么我得一台台远程过去svn update一遍,我很懒,我不想手动去更新版本,so…

于是乎paperen就想能否让svn服务器具有一些推送的动作,让测试机上的版本自动update,就像下图所示这样的一个机制

阅读更多
久违的博客
12年前
  • 0
  • 0

久违的博客

这是出发去的前一晚,今天抽点空将弄得半调子的后台代码传到空间上就勉强地来发一篇博客了。对,这确实是一篇久违的博客。

我此时的心情也不能说是兴奋,作为工作后第一次旅游,哦,不,应该是说初中之后的第一次旅游,我确实不知道应该怀着什么的心情去享受这次旅行,向公司请了5天假,但是感觉总是怪怪的,好像是做错了什么事情似的,这是不是有点不负责任, 我为公司带来的价值是不是值得公司为我开5天的假,老是觉得自己做得还不够,远远不够,或许我的确缺乏足够的自信。但什么是自信,我也不知道…

阅读更多
关于控制器与模型间的一些想法
13年前
  • 0
  • 0

关于控制器与模型间的一些想法

用CI也有一段时间了,感觉paperen我也挺喜欢CI的,因为觉得上手真的很容易也很方便,暂时还不会考虑其他框架。不过通过这段时间的使用,加上同事比较多疑问(也算是好事吧),自己也有点对CI中控制器与模型部分使用产生些少疑问,特别是模型,因为之前的开发就带来一些比较混乱的状况,老实说之前写的代码比较糟糕。

20111122011355

很多疑问都是产生在控制器与模型之间的,疑问最严重的是模型的重用性(况且可以这么说吧),平平君与奇奇君本来是分开一人负责一块功能的,但是免不了要涉及一些公用的模型,这就导致了一些不能避免的问题,平平君要与奇奇君协商某个公用的模型方法,但是别扭的是前者可能额外附件一些条件,比如要查询state为3的记录而后者则又会附加其他限制条件,而且paperen不太同意在控制器中对模型进行控制(或者下面的例子展示后你就明白什么意思),结果要写一个能符合两者需求的模型方法,在这个模型方法中写了比较复杂的逻辑,本来比较简单的模型突然看到一段复杂的逻辑,这个真的是我不想要的,paperen提议的是即使你查询的条件不同的话就可以考虑分出来单独作为一个方法了,而不要花太多时间在万能的模型方法,因为那可能会增加了模型的复杂度或者增加了控制器与模型的耦合度。说了这么多还不如看个例子吧。

阅读更多
后知后觉的Mysql锁表应用
13年前
  • 2
  • 1

后知后觉的Mysql锁表应用

在看CI(codeigniter)database那一节的手册发现其自带了事务的处理,之后又不知不觉地查了一些资料,在某个地方看到有个例子,具体描述类似如下:商店现在某商品只有1件库存,然后A与B在网上进行下订,A与B几乎同时(或许也就差几毫秒,A比B快那么一点点)进行。

很明显是只有A才能成功下单的,B则会收到库存不足的提示,但是作为放置在服务端的那个页面(或者称为脚本程序)我们得怎样去处理这个问题呢?或者我先放出一段代码吧。

$sql = "select number from goods where id=1";
$number = intval( $db->result( $db->query( $sql ), 0 ) );
if ( $number > 0 ) {
sleep( 2 );
$sql = "update goods set number=number-1 where id = 1";
if ( $db->query( $sql ) ) {
echo 'Ok!Here you are!';
} else {
echo 'Sorry!Something go wrong!Try it again.';
}
} else {
echo 'No more!you are so late!';
}

这部分代码除了缺少一定注释外都写得没错,当然$db是一个操作数据库的类,我只是将大部分方法封装了,这里的逻辑也是很明显了。

阅读更多
关于Mysql的两个实用技术
14年前
  • 0
  • 0

关于Mysql的两个实用技术

paperen对mysql的接触是从玩php开始的,paperen并没有学过SQL,但是自学了一些,对于mysql其实也不是专研得太深,而最近又重新看一遍《PHP和MySql Web开发 第4版》才有发现mysql中有些东西paperen到现在还没有玩过~~所以现在paperen再亲自测试一下并拿出来跟大家分享一下,其实大家有这本书的话不妨自己翻开,再看看12,13章的内容,当然如果你是已经了解并玩得很熟了那么可以忽略了。

大概总结了下,这两章介绍了一些玩法有:mysql prepared,pear mdb2,权限分配,sql优化分析,备份与恢复数据库,主从同步数据库,innodb事务与外键,存储过程。都是一些很实用的技巧,而这里paperen只具体说说主从同步数据库与存储过程,其他技巧自己去查查资料吧。

主从同步数据库,这个概念应该很好理解,其实就是集群数据库的概念,在客户端看上去数据库只有一个,但是实质上不止一个,可能是多个数据库在维持,实质上说这个技巧是为了保证web平台的稳定而使用的,paperen觉得这个技巧并不是用来防止数据出错(数据出错站在mysql的层面来看是根本没法避免的,只能靠备份来预防)是为了提高可靠性。

阅读更多
稍微高级一点的SQL注入
14年前
  • 3
  • 0

稍微高级一点的SQL注入

正如之前paperen的 你是这样处理来自$_GET的数据吗 里面说的,还有很久之前的 小心sql注入漏洞 ,都是涉及到SQL注入的一些东西,其实您如果对SQL注入有兴趣的话不妨点击paperen友情链接中的习科论坛去那看看,里面很多帖子都是有关入侵的,而paperen在这个组织不知不觉间也都快4年了。废话也就不多说了,直接入话题。

还记得在“你是这样处理来自$_GET的数据吗 ”里面写到的那个SQL,

$sql = 'select * from goods where id='.$id;

不对传入来的数据进行任何过滤甚至不用单引号抱起来会导致的问题在那篇文章中已经说的比较明确了,如果您能猜到数据库其他表的话还能查到其他表的内容,而这次paperen想说一些使用这个漏洞更高级的一个技巧。

阅读更多
新版博客的面世
14年前
  • 215
  • 211

新版博客的面世

paperen终于在休闲中完成了新版博客,关于新版博客的皮肤趋向于简单型吧……paperen的美工功底也就那个水平~~~现在自己看了几眼怎又觉得以前那个皮肤貌似挺不错的~~~不过既然都做好新版的就先试用着吧,在这个版本的博客中paperen也重整了文件框架与程序的框架,应该为了以后的扩展性做了一些准备,包括皮肤的更换还有插件的引入。

对于日后可能会将旧皮肤做回来,因为paperen也为此想好了。一般来说还皮肤肯定需要更改视图文件,但是应该不会涉及到模型文件,目前使用的皮肤是blue,而当制作了新皮肤后在皮肤目录下建立一个新文件夹。

1.关于换肤功能,paperen在程序中对于视图的路径思路是这样的

阅读更多
paperen的近况
15年前
  • 0
  • 0

paperen的近况

貌似好几天都没更新博客了,paperen在忙帮吴同学弄他们家公司的一个管理系统啊,说容易也不容易,说困难也不困难,而且吴同学的要求也是很高的。感觉paperen现在使用ajax有点泛滥了,不过自己确实喜欢使用它,不用每次操作都要提交数据导致刷新页面,不过各人有各人爱好吧,使用ajax反而增加了js文件的大小,还有需要注重js函数的重用性,paperen认为一个出色的程序员也是一个很懒的人才对的。?

昨晚换了个博客主图片,paperen自己画的啊,感觉还行吧,好像花了差不多两个小时吧,本身还打算上色的,不过都已经凌晨1点了……还是算了吧,但爸爸没睡呢,还在厅的台式电脑前……好像还在玩那个幻幻球游戏(我传给我细佬玩的)。这张新的图片就算是这几天一个比较大的更新吧。?

看到自己的博客慢慢地被搜索引擎收录了,而且今天自己在搜索“paperen博客”时也看到一些网站把自己的某些文章抄去了,看来自己的某些文章还是有人认同滴,但是他们为什么不告诉我一声呢……

阅读更多