h2O

Results 100 issues of h2O

Golang Unmarshal 零值问题 ========================== ### 场景 `Golang` 在开发一个 `API` 的时候,常常会把用户的输入绑定到一个对应的结构体上. 例如,用户在前端输入一个产品信息,数据结构如下: ```go type ProductInfo struct { ID int `json:"id"` // 产品 ID Name string `json:"name"` // 产品名称 Status int `json:"status"`...

Golang

coding 配置 ssh 公匙无效 ========================= ### 场景 在 coding 后台添加了「SSH 公钥」,但是无效 报 `client_loop: send disconnect: Broken pipe` 错误. ```bash ~ $ ssh -T [email protected] client_loop: send disconnect: Broken pipe ```...

ssh

设置 proxy 下载 golang.org/x/ ============================== `Go 1.13` 以上. 设置 `Go ENV` ```bash $ go env -w GO111MODULE=on $ go env -w GOPROXY=https://goproxy.cn,direct ``` #### 参考 [goproxy.cn](https://github.com/goproxy/goproxy.cn)

Golang

xmind 启动失败 =============== #### 场景 Arch 系统安装了 `xmind`,启动失败,日志见 `~/.xmind/workspace/.metadata/.log` 文件. #### 方案 Arch 系统自带的 `java` 版本太高导致 `xmind` 启动失败. 查看 `java` 版本 ``` $ archlinux-java status java-13-openjdk (default) ``` 安装低版本 `java`...

Arch

父目录权限对子目录的影响 ========================= ### 场景 在 `/home/cryven/www/website` 目录下有个站点,nginx 报 `stat() /home/cryven/www/website/backend/web/js/extend.function.js failed (13: Permission denied)` 的错误. 然后给 `/home/cryven/www/website` 目录赋予 `0777` 权限,还是报一样的错误. ### 方案 怀疑「父目录」权限对子目录有影响,于是给 `/home/cryven/www` 目录给予 `0777` 权限,问题还是存在. 查资料,**只要「父目录」具有「x权限」,「父目录」的权限和子目录的权限没有直接的关系,不会相互影响.** 直接查看最上层「父目录」`/home` ```bash...

Linux

mysql-workbench not work ======================== ### 场景 Arch 系统 `mysql-workbench` 连接数据库时报 ``` The name org.freedesktop.secrets was not provided by any .service files. org.freedesktop.secrets: No such file or directory ``` ### 方案...

Mysql

Arch 编译安装 PHP 失败 ======================= ### 场景 在新安装的 `Arch` 系统编译安装 `PHP` 失败,提示错误 ``` configure: error: freetype-config not found. ``` 编译安装的参数如下 ```bash sudo ./configure --prefix=/usr/local/php --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/etc/conf.d --with-openssl...

PHP

在Linux下ssh远程登陆的时候,可以简单设置一下,实现远程登陆免密码,利用别名解析IP。 #### 利用ssh key在网络上畅通无阻 #### ssh中,有两个钥匙:**公钥,私钥**。 其中,公钥主要是对一些敏感信息进行加密的,私钥是用于解密的。 ssh的文件都存在~/.ssh中,其中有: - 客户端:id_ras(私钥匙),id_rsa.pub(公钥),known_hosts(已知远程主机) - 服务器:authorized_keys(验证过的公钥列表),sshd_config(ssh配置文件) 知道了这些文件的用途之后,下面我们简单配置一下,实现Linux无密码登陆。 1. 客户端使用`ssh-keygen`生成密钥对(私密和公密) 2. 复制公密(id_rsa.pub)的内容 3. 远程登陆服务器端,把复制到的公密内容粘贴到`authorized_keys` (PS: 这里可以使用 `ssh-copy-id` 直接实现.) 然后,就可以无密码地`ssh`了,告别手动输入一串随机的密码字符串! #### 告别ip地址,别名登陆 #### 用ssh登陆的时候,经常要输入类似: $ ssh...

Linux
ssh

### 场景 每次提交代码都要手动执行 `php` 的语法检查和代码规范,如何在客户端把这些工作进行自动化。 ### 方案 利用 `git` 的钩子,这里使用的是 `pre-commit`. 具体脚本参考:[pre-commit](https://github.com/codcodog/phpconfig/blob/master/git/pre-commit) > 如果该钩子以非零值退出,Git 将放弃此次提交,不过你可以用 git commit --no-verify 来绕过这个环节 #### 依赖 `pre-commit` 脚本依赖 `php` 两个包,需要 `composer` 安装. - php-cs-fixer -...

Git

PHP Session工作原理 ===================== 基本上,会话(session)是为各个用户存储信息的系统或方式。 它根据唯一的会话(session)ID存储个人用户信息。所以,通过这种方式,用户的数据可以在网站的所有页面进行访问。 PHP遵循管理会话(session)的简单工作流程,即会话(session)开启时,PHP检索现有的会话(session)或创建新会话(session)。如果传递的是PHPSESSID,则PHP检索现有的会话(session),否则创建新会话(session)。 在默认情况下,会话(session)的创建文件存放在服务器上的临时目录(在php.ini的配置中确定)。会话(session)所有的变量和值都存储在那个目录。 ![php-sessopm](https://cloud.githubusercontent.com/assets/18098145/23060636/7a6a4550-f539-11e6-9601-b41039b431a3.jpg) ### 工作原理 1. 首先,PHP为单个会话创建一个唯一标识符号(一个由32位十六进制数组成的随机字符串,例如:`7fejekou828jf9jie03jai93jfa8383`) 2. PHPSESSID Cookie 将唯一标识号传递给用户浏览器以保存该号码。 3. 在服务器上创建一个具有sess_前缀的唯一标识号(即`sess_7fejekou828jf9jie03jai93jfa8383`)的新文件。 4. Web浏览器每次请求服务器都发送该cookie。 5. 如果PHP从PHPSESSID cookie中获取唯一的标识号(在每个请求上),则PHP在临时目录中搜索并比较该号和文件名。 如果两者相同,则它检索现有会话,否则为该用户创建新会话。 当用户关闭浏览器或离开网站时,会话(session)将被销毁。 服务器也在会话时间的预定时段后终止会话这些简单的机制都是使用PHP来处理。 翻译:[How Does PHP Session...

PHP