Skip to content

Instantly share code, notes, and snippets.

@zhaokuohaha
zhaokuohaha / 修改 IEnumerbale 中的数据, 结果却没有效果?.md
Created September 18, 2019 14:30
某日, 余编码中。持一列者,于方法内改其值, 待毕, 复观列中物,安然无恙也。 苦思之, 久不得解, 乃复阅 Stackoverflow, 品四海朋友之见, 徐徐悟之。

关于 C# 中对修改 IEnumerable 中的数据却没有生效的问,时不时困扰着很多 C# 的初学者,尤其是学会了 Linq 并经常去使用的朋友, 时不时就会碰到在某个接收的参数为 IEnumerbale 的方法中明明做了某些操作,但是方法结束后, 原来的数据却完全没有变化的情况。

之所以说“时不时”, 是因为,在没有弄懂原因之前,这个问题似乎是“不可稳定重现”的,可能自己在工作中遇到了这个问题,可是等回家想要复盘一遍时却发现问题又不会出现了? 像是玄学一般。 为什么不在上班的时候去复现? 因为上班要完成工作啊, 这个问题虽说“玄”, 但解决的办法却不难, 要么把方法定义为更具体的类型,如 List, Array 等, 对数据进行 ToList() 操作 —— 而且在等会儿弄明白原因之后你会发现, 这个做法就是正确的。

踩坑指北

@zhaokuohaha
zhaokuohaha / C# 预编译指令环境参数.md
Created September 9, 2019 14:18
C#中预处理指令的基本概念以及具体谈`#IF`指令参数的用法

上周在处理一份老项目的代码时发现代码中出现一个 #if INTERNAL 的代码块。 项目的编译环境有 Debug, InternalRelease 三个。 程序原意应该是只有在 Internal 环境下才执行代码块中的代码。 结果调试下来发现,这个指令并没有生效: 无论什么环境, 都能够调试到程序里面去, 由此引出来几个问题:

  1. 为什么这条指令没有生效
  2. 怎么样解决这个问题
  3. 怎样让这个指令生效

为什么指令没有生效

首先先简单介绍一下这种格式的预编译指令的概念。 在 C# 编程时, 可以通过如 #if DEBUG 等这样的指令来指定某些代码的执行条件。 这其中 #if 是预编译指令,DEBUG 是指令参数。 一般预处理指令都是成对出现,一对指令中间的代码就是其作用的代码,功能类似与大括号。 也有单条出现的, 作用在该行后面的代码。 常见的预处理指令有

@zhaokuohaha
zhaokuohaha / Docker中的构建上下文.md
Last active June 17, 2019 03:53
关于docker build 命令中 path 参数的介绍

Docker Build 命令中的参数

在使用 docker build 命令构建 docker 镜像时, 一般会用到下面这样的命令:

docker build -t imagename:tagname .

当然 build 命令还有其他的参数, 比如用 -f 指定dockerfile 文件等( 文档地址)但简单的镜像主要是指定镜像名称标签就可以了, 而 docker 客户端会按照约定自动查找当前目录下名称为 Dockerfile 的文件进行构建。 所以很多人认为 build 命令的最后面这个 . 就是表示“使用当前路径下的Dockerfile 文件进行构建”的意思。

@zhaokuohaha
zhaokuohaha / 微信公众号获取用户基本信息的方法总结.md
Last active March 26, 2024 16:16
包括:服务号, 订阅号, 开放平台 , 以及在各个场景下应选择何种方式获取等

背景: 折腾了一整个周末,终于把用通过微信进行获取用户信息,以用来进行账号注册登录的问题搞定了, 因为面对的问题比较棘手: 希望通过微信订阅号获取用户信息授权,在自己开放的网站(所谓第三方网站)拿到用户信息, 所以在解决问题的过程中,顺便把自己期望实现的方式,以及现有的方式也稍微了解了一些, 所以趁此机会做一个整理。 因为朋友的网站是 php 开发的,所以下面的代码会以 php 进行举例,尽管我对 php 并不熟悉, 但是现在懒得重新去实现一遍了, 后面再说吧, 如果有后面的话。 其实其他语言理论上可以很容易类比, 因为微信的这些接口都是 restful 的 http 接口。

概述

微信授权登陆, 从使用入口来说,主要是 PC 端网站, 移动端网站和 APP。 这里的“移动端网站”是指从微信浏览器打开的网站,如果从手机浏览器打开, 那么只能与PC端的授权方式一样(实际上操作很麻烦) 基本的授权方式如下:

  • PC 端网站: 打开一个二维码, 用户扫描二维码之后授权 -> 获取用户信息
  • APP: 点击授权后跳转到微信授权页面, 用户点击确认授权 -> 获取用户信息

以上两种方式基本可以通过微信开放平台实现。

@zhaokuohaha
zhaokuohaha / Robots协议和robots.txt解读.md
Last active June 15, 2023 05:38
robots.txt基本语法, 以及robots协议的各家搜索引擎实现。

文件简介

简单的说 Robot 协议是用于告诉网络爬虫(主要是搜索引擎爬虫)本域名下的网页中, 那些部分是不应该爬取的,具体来说就是在网站的域名根目录下添加一份robots.txt文件, 并在文件中声明对应的规则. 由于 Url 对大小写敏感, 所以 robots.txt 文件名要求全部小写.

搜索引擎爬虫在爬取一个网站时, 首先检查是否存在 robots.txt 文件, 如果存在, 则在爬取该网站下其他网页时, 应遵循文件所定义的范围进行爬取.

需要注意的是 Robots 协议是一个共同遵循的"道德约定", 但是不具有法律效应, 同时也不保证所有搜索引擎都会遵守这个约定

内容和语法