Ray 的记录站

日常开发实践记录

0%

正则表达式一直都是开发人员的必备技能,有人甚至提出在学习开发前先要熟练掌握正则表达式,可见其重要性。

这次利用实现 GA 数据分析的机会,整理了一个 Checklist 方便查阅(APP 上传的事件数据由于没有统一规定,内容千奇百怪,利用正则抽取其中关注的部分)。

阅读全文 »

根据 cmake-example 这个仓库中的内容编写的这个文档。

CMake 是一个跨平台开源构建系统,可以构建、测试并且打包软件。并且它支持多种本地构建环境,包括 make、Xcode、Visual Studio 等。

阅读全文 »

网络爬虫又称为网页蜘蛛或网络机器人,英文一般为 Web Crawler,Web Spider 或 Web Scraper。是一种遍历网站中所有网页内容的程序,爬虫的一个重要应用就是收集网站上的重要信息并汇总以便分析。

最近有一个评估官网上每个网页使用的 Title 关键字的需求,正好学习一下简单爬虫的实现,并通过本文进行记录。生产环境下更多使用的是 Python,因为轮子多且好用。

本文选择 Typescript 进行说明,以尽量通俗易懂的方式对整个爬取过程进行说明。

阅读全文 »

软件开发活动的最终目的是解决用户的实际问题,因此需求获取就成为了一个最为重要的组成部分,本文从问题的获取和需求分析入手,介绍问题向需求转换的流程和规范做法。

阅读全文 »

在 Flutter 中, 手势系统有两个独立的抽象层组成, 第一层负责提供纯点位数据, 即 Pointers (光标, 下面均使用英文 Pointers)的点击位置和移动, 另外一层负责根据第一层的数据进行手势识别.

GestureBinding 处理手势. 过程是: 用户触摸事件由 Flutter 引擎通过 window.onPointerDataPacket 发送到 Flutter Framework, 由 GestureBinding 接收并进行处理.

GestureBinding 在处理这些手势数据时:

  1. 将引擎发送的坐标数据转换为逻辑像素坐标系下的坐标, 然后,
  2. 请求 renderView (Render tree 的根节点)提供包含该坐标的 RenderObject 子树(条件为: 子树中所有的结点都包含这个坐标).
  3. 遍历这个子树, 将事件派发给每个 RenderObject 节点.
  4. 当某个 RenderObject 需要处理这样的事件时, 它就会进行处理.
阅读全文 »

在 C# 中提供了 Stream 类, 用于流的操作, 比如读取和写入.

流实际是一个被激活的数据源连接, 或者说它是一个有序的字节序列. 在使用时首先需要打开流, 在使用完毕后需要关闭流. 如果使用结束后没有关闭针对某个数据源的流, 就可能造成内存泄漏, 线程饥饿等问题(因为资源一直被占用), 以及其他的性能问题.

阅读全文 »

本文介绍 Container 是如何发现各自存在的. 即:

  • 理解 Docker 内部虚拟网络中容器如何利用 DNS 简化相互通信
  • DNS 在自定义网络中如何工作
  • 使用 --link 在默认的 bridge 网络中启用 DNS
阅读全文 »

本文主要介绍 Docker 的网络基础, 包括:

  • docker container run -p 命令
  • docker container port 命令查看容器的端口
  • Docker Networking 的概念
  • 网络包如何在 Docker 内部流转
阅读全文 »

MediatR 是.NET 中的简单中介者模式实现,一种进程内消息传递机制(无其他外部依赖)。 支持以同步或异步的形式进行请求/响应,命令,查询,通知和事件的消息传递,并通过 C#泛型支持消息的智能调度。

阅读全文 »