I will good.

  • PHP爬虫——爬取自己的新浪微博(一)

    从高中的时候就开始写微博了。那个时候的自己总是天马行空的乱想一气,想完了就想着把自己刚刚的这些想法保存下来。配合着那个时候新买的“入门款”智能机5233兴奋的不得了, 再加上断网事件已经过去,可以登陆互联网了,所以便“执机”记录,一直持续到现在。截止到目前已经有1000多条记录了。 由于近几年不太看好微博的发展,以及也想把自己的数据全部搜集起来,于是便有了这个项目。 一、前期调研 1.技术选择 搜了一下最近关于新浪微博爬虫的信息,没有信息。嗯,但是前段时间github有一个python新浪微博爬虫和一个php爬虫的项目挺火的,这两个可以借鉴一下。考虑到我拿手的是php,和时间成本问题,所以就选择php爬虫了。 2.辅助工具 fiddler(抓包工具),chrome(网站分析),sublime text。 二、微博分析 1.抓取站点研究 新浪微博目前有两种形式,一种是桌面端,它是服务器渲染的页面,需要爬取页面后再分析研究html结构来提取数据,比较麻烦,不太推荐。另外一种是移动端,json形式的前后天数据交互,可以更加方便快捷的解析数据,推荐使用。移动端的地址:m.weibo.cn 2.url研究 登陆 m.weibo.cn 后,F12查看xhr实际地址: 由于移动版没有翻页,是滑动刷新的,所以还要研究一下这个xhr,对比一下。 经过对比两个url发现如下规律: 3.测试 加上cookie,进行测试上面所拼接的url是否能获取期望中的数据,并对该数据进行json解析 测试寻找边界,在page超过实际数目的情况下,会返回 {“ok”:0,”msg”:”这里还没有内容”,”data”:{“cards”:[]}} 测试间隔为300ms,在测试到第 56 页的时候,返回 http:418 I’m a teapot(我是一个茶壶),哈哈哈哈哈哈哈。 三、抓取 四、总结 虽然最后完成了主要的需求,但是还有些不完美的地方 尝试配合使用代理和多线程,应该可以抓取速度更快。 目前只抓取了文字,图片还没有进行抓取 登陆这一块刨去直接使用cookie的方式,试试代理登陆的方式。 对代码应该进行抽象封装,以后可以快速抓取别的网站。 收获 sleep 和 usleep 我对流沙说,让风把我吹走吧。 流沙说,你没了根,马上就死。 于是我毅然往上一挣扎,其实也没有费力。我离开了流沙,往脚底一看,操,原来我不是一棵植物,我是一只动物,这帮孙子骗了我二十多年。 —— 韩寒《1988》

  • PHP环境——homestead

    开发环境 1. 使用 virtualBox 虚拟机 2. 使用 vagrant 虚拟机管理工具 安装: 配置: 参考下面的参考栏目里的文章; 常用命令: 使用 homestead 开发环境 ubuntu 登陆地址用户密码:127.0.0.1:2222 => vagrant/vagrant (可以使用xshell这样登陆) 默认数据库: 127.0.0.1:33060 => homestead => homestead => secret (可以使用 navicat 连接 ) id_rsa 私钥;id_rsa.pub 公钥; 开发工具 1. sublime Text 跨平台,轻巧,快速,文档/插件 极其丰富。 settings show_encoding:true // 显示编码格式; word_wrap:true // 强制换行; show_line_endings: true // 显示换行符; default_line_ending: “unix”…

  • PHP高级——autoload(类的自动加载)机制

    通常我们在引用外部 class 时,会直接使用 include(include_once) 和 require(require_once) 函数来把 class 文件包含进来。这种做法在大型项目中并不可取,原因是:大型项目需要引用更多的 class 文件,从而使得代码难以维护且降低整体性能。因此PHP官方提供了这样一种解决方案——autoload 机制。 PHP内部的 autoload 机制: php内部提供两种方法来实现自动装载机制,一种是使用用户自定义的 _autoload 函数。另外一种就是设计一个函数,将执行器全局变量函数指针 autoload_func 指向它,这通常使用C语言在PHP扩展中实现。 如果既实现了__autoload()函数,又实现了autoload_func(将autoload_func指向某一PHP函数),那么只执行autoload_func函数。 autoload 发展史 : 早先,PHP5 在使用一个类的时候,如果这个类没有加载,就会自动运行 _autoload 函数,我们需要自己先实现一个 _autoload 函数,这个 _autoload 函数需要做三件事:根据类名得到实际类文件名,确定该类文件的实际磁盘路径,加载该类文件。这种方法的缺点是:在面对大量的类文件时,该函数编写会变得很复杂,相较于原来维护可能会方便一点点,还是会影响整体性能。 目前,我们采用的是 SPL autoload 机制(Standard PHP library)。这种机制是将函数指针 autoload_func 指向 spl_autoload 或 spl_autoload_call 函数来实现两种加载方式。 spl_autoload($class_name,$file_extensions) 通过使用 spl_autoload_register() 就可以将 autoload_func 指向 spl_autoload()。 接受两个参数,参数一是类名,参数二类文件的扩展名。该函数和 require/include 差不多,不同的是可以指定多个扩展名。不推荐 spl_autoload_call()…

  • 前端——PWA技术

    近些年web技术发展猛烈: 出现了打包工具:webpack、rollup等。 转译工具:babel(转义ES6、7,至大部分浏览器支持的ES5),PostCSS可以模块化编写CSS。 TypeScript 可以转义为 js。 React、Angular、Vue 等现代 web 前端框架。 同构 js 应用,可以将服务端的渲染转移至客户端。 PWA(progressive web apps)技术特点(优势) 开发成本低,迭代快,跨平台强,体验较好。兼具web应用和原生应用的优点。 可以在离线环境下使用,不依赖于网络连接 能够像原生应用一样被添加至主屏,且响应式用户界面。 能在未使用的状态下发起推送通知 与操作系统集成能力进一步提高 从 Hybrid Apps(混合应用)进化至 PWA。 PWA 使用的关键技术 web app manifest:通过一个清单文件,向浏览器暴露web应用的元数据,包括名字、icon的url等,承载着web应用和操作系统集成能力的重任。 Service Worker:用来缓存,同时可拦截处理响应流经的HTTP请求。离线优先的架构。 Push Notification:用来推送消息,不依赖浏览器。 PWA IN CHINA: 国内较为重视IOS,而IOS目前还不支持。 国内android,不自带chrome,可能有兼容问题。 依赖GCM推送的通知不可用,web push protocol 在国内还没实现。 国内 webview 环境复杂,标准不一,比如微信内置的浏览器。 未来,PWA的发展会越来越好,它是一种提高用户体验,加快开发进度,降低开发成本,不依赖于商店应用分发的趋势。 有一次我骗她说我去睡觉了, 但我还在朋友发的说说下面评论, 她没有问我为什么骗她, 而是问我怎么醒了。 —— 网易云音乐

  • 微服务

    58转转的微服务架构 如下图所示: 一、分层,垂直拆分 在网关层面进行用户身份的校验。 在聚合层进行业务逻辑处理。这一块可以根据功能,进行横向的拆分,分为search、trade、info等横向的模块。 在原子层进行 增删改查 等数据库和缓存基础逻辑 二、通信模块 1.用户和微服务网关之间使用 https/http 协议,传输使用 json,使用 REST API。 2.服务器内部之间使用 RPC 协议(数据量小,长连接,数据安全),SCF 和私有协议。 三、微服务控制 1.需要将微服务(主要是网关层、聚合层、原子层三个层面,也许可以加上数据层)的配置信息(host,port,config等信息)存于注册中心,方便进行控制编辑,负载均衡(keepalive,retry)和下游服务发现 四、柔性可用实践 系统降级 =》 数据层降级 =》 柔性可用策略 系统降级:拒绝部分老请求,对新的请求进行响应,使用RPC队列方式;非核心请求丢弃,保留核心请求(核心业务);随机丢弃一定比例的请求 数据层降级: 更新请求:持久化到消息队列,只更新缓存 读请求:读缓存 事后数据补齐:消息队列 -> 持久化到数据库 柔性可用策略: 监控和记录日志,并且能进行报警。微服务监控框架:open-falcon 进程监控:alive 语义监控:模仿用户进行检测返回值是否符合预期。 错误日志监控 数据波动监控:流量的突增突减 ,请求平均耗时和请求异常条数。 机器资源监控:机器资源不足。cpu,内存,磁盘等; 许多人所谓的成熟,不过是被生活磨去了棱角,变得世故而实际了。 那不是成熟,那是精神的早衰和个性的夭亡。 真正的成熟,应当是独特个性的形成,真实自我的发现,精神上的结果和丰收。 —— 周国平《灵魂只能独行》

  • windows 手记

    2022.02.25 WSL 2022.01.16 windows terminal:代替 powershell 或者 CMD 那个不太好看的框框 同时也可以通过编辑“新的配置文件”用来代替 xshell ,非常方便。 安装:在 Microsoft Store 中搜索 windows terminal 下载即可。 docker:将 mysql ,ELK,redis,mongodb 都安装上面,随时可升级。 VirtualBox:用来安装一个 Centos 耍耍,windows 来当作沙盒运行一些未知的软件。 Typora:markdown 的编写软件,下载以前的版本,不收费。 微软必应词典:如名。 github.com:在上面搜索软件,都是开源的。 2019.09.18 最近下班后经常玩电脑,所以一般电脑就没关机,不用了就睡眠模式,结果发现了一个问题。睡眠模式下这货总是半夜自己启动,把屏幕点亮,扰乱我睡眠质量。不能忍,上网搜了一大圈后,解决办法如下: 进入:控制面板-硬件和声音-电源选项-当前的电源计划-高级设置-睡眠-允许使用唤醒定时器!!!禁用!!!ok~ 原文: 平常开发经常用到的软件 Navicat 数据库管理软件,这个软件可以定时备份数据库。 7zip ,小巧快速的开源压缩软件。 TreeSize Free ,快速查看文件夹下目录和文件大小,占比等。 sublimeText 快速编辑文件,markdown式的笔记。 phpstudy 本地测试环境,请用最新的版本,功能更加丰富。 xftp / File Zilla ftp上传软件。 xshell 远程连接工具 git…