/images/avatar.jpg

Puppeteer使用例子

https://s3.ax1x.com/2021/03/05/6eGwVJ.png
这篇文章很简单呢,就是记录一下用Puppeteer的一些snippet。

访问网站后截图

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
const puppeteer = require('puppeteer');
const url = 'https://segmentfault.com';

(async() => {
    const browser = await puppeteer.launch({
        headless: true,
        args: ["--no-sandbox", "--single-process"],
    });
    const page = await browser.newPage();
    await page.setViewport({ width: 1920, height: 1080 });
    // ‘networkidle2’ means that there are no more than 2 active requests open. 
    // This is a good setting because for some websites (e.g. websites using websockets) there will always be connections open
    await page.goto(url, {
        waitUntil: 'networkidle2',
        timeout: 1000 * 60 * 5, // 毫秒 超时参数需要加上,有时候网络不好,会导致等着
    });
    await page.screenshot({path: './data/website.png', type: 'png'});
    page.close();
    browser.close();
})();

ES6中的class

https://s1.ax1x.com/2020/08/30/dbt2p6.png

ES6

ECMAScript 2015或ES2015是对JavaScript编程语言的重大更新。这是自2009年对ES5进行标准化以来对语言的首次重大更新,ES6加入很多有用的特性。因此,ES2015通常被称为ES6。

调试PHP源码

https://s1.ax1x.com/2020/07/05/U91xmt.png

缘由

有时候,我们想看看一个变量底层对应底层的数据结构或者PHP脚本是如何执行的,gdb就是这样一个好工具,之前有篇文章写过如何简单使用gdb。

本文环境:

  • PHP版本:PHP 7.1.16 (cli) (built: Apr 8 2020 11:56:59) ( ZTS )
  • OS:Ubuntu 18.04.4 LTS
  • gdb: GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git

编译

你可以从PHP官网下载PHP源码的压缩包,者是从git.php.net(或者是github的镜像)的git库clone最新的代码库,然后切换到对应的PHP版本的分支,本文使用的是PHP7.1,你可以使用下面的命令完成这些工作:

gdb调试简单使用

gdb

gdb 是 UNIX 及 UNIX-like 下的调试工具,在 Linux 下一般都直接在命令行中用 gdb 来调试程序,相比 Windows 上的集成开发环境 IDE 提供的图形界面调试,一开始使用 gdb 调试可能会让你感觉很难适应,但是只要熟悉了 gdb 调试的常用命令,调试出程序会很有成就感,一方面因为这些命令就类似图形界面调试按钮背后的逻辑,另一方面用命令行来调试程序,逼格瞬间就上了一个档次,这次就跟大家分享 gdb 调试的基本技术和 15 个常用调试命令。

go并发之WaitGroup使用

需求

有时候我们会开启很多线程(go中是协程)去做一件事件,然后希望主线程等待这些线程都完成后才结束,一个简单的想法是,我在主线程sleep一段时间,譬如3s钟,但是明显这样的做法不科学,因为这些任务很有可能在200ms内就都完成了。如果你用过Java的话,那你很快就会想到CountDownLatch类,在Go中,也有类似的结构,就是本文要讨论的WaitGroup

gRPC入门使用

gRPC是什么

官网如此写到

A high-performance, open source universal RPC framework

其实,gRPC是一个高性能的,通用的,面向服务端和移动端,基于 HTTP/2 设计的RPC框架。

RPC框架是什么?

RPC 框架说白了就是让你可以像调用本地方法一样调用远程服务提供的方法,而不需要关心底层的通信细节。简单地说就让远程服务调用更加简单、透明。 RPC框架包含了客户端(Client)和服务端(Server)
常见的RPC框架有