猫言猫语

严以律己·宽以待人·自强不息·知行合一

使用普通用户执行 docker 命令

| 使用普通用户执行 docker 命令已关闭评论

如果你的 linux 默认使用的是普通用户,你一定希望这个普通用户可以直接执行 docker 命令,而不用每次都 sudo 到 root 下去执行

sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart

软件应用

解决 SSH 操作 GitLab 提示找不到 Ruby 命令

| 解决 SSH 操作 GitLab 提示找不到 Ruby 命令已关闭评论

使用 rvm 重新部署 gitlab 之后,发现无法使用 ssh 进行操作,终端提示信息:

/usr/bin/env: ruby: No such file or directory

执行一下这个命令,rvm 会在 ~/.rvm/bin 目录下生成 ruby 可执行文件的符号链接,gitlab 就可以通过 ssh 进行操作了

rvm wrapper default --no-prefix

在 CentOS 7 上安装 Docker Engine 环境

| 在 CentOS 7 上安装 Docker Engine 环境已关闭评论

yum update
curl -fsSL https://get.docker.com/ | sh
systemctl enable docker
systemctl start docker
docker run hello-world

Arduino 与 ENC28J60 端口连接

| Arduino 与 ENC28J60 端口连接已关闭评论

Arduino UNO

VCC -   3.3V
GND -    GND
SCK - Pin 13
SO  - Pin 12
SI  - Pin 11
CS  - Pin 10

Arduino MEGA

VCC -   3.3V
GND -    GND
SCK - Pin 52
SO  - Pin 50
SI  - Pin 51
CS  - Pin 53

OS X EI Capitan 安装 CH341 串口驱动

| OS X EI Capitan 安装 CH341 串口驱动已关闭评论

之前使用 Yosemite 的时候,使用 CH341 的串口驱动是需要打开 kext 的调试模式的,有点麻烦但更令人感到些许不安:

sudo nvram boot-args="kext-dev-mode=1"

这次升级 EI Capitan 后,把 kext-dev-mode 给关闭掉了,没想到 CH341 的串口驱动也可以直接使用,看来已经认证过了。

$ nvram -p
......
boot-args	kext-dev-mode=0
......

驱动下载地址:http://www.wch.cn/download/CH341SER_MAC_ZIP.html

homebrew 安装最新版 composer

| homebrew 安装最新版 composer已关闭评论

使用 brew 安装稳定版的 composer 版本是 1.2.0 的,可是一运行 composer 就提示:

PHP Fatal error:  Uncaught PharException: phar "/Users/wwx/Developer/Cellar/composer/1.2.0/libexec/composer.phar" SHA1 signature could not be verified: broken signature in /Users/wwx/Developer/Cellar/composer/1.2.0/libexec/composer.phar:23
Stack trace:
#0 /Users/wwx/Developer/Cellar/composer/1.2.0/libexec/composer.phar(23): Phar::mapPhar('composer.phar')
#1 {main}
  thrown in /Users/wwx/Developer/Cellar/composer/1.2.0/libexec/composer.phar on line 23

Fatal error: Uncaught PharException: phar "/Users/wwx/Developer/Cellar/composer/1.2.0/libexec/composer.phar" SHA1 signature could not be verified: broken signature in /Users/wwx/Developer/Cellar/composer/1.2.0/libexec/composer.phar on line 23

PharException: phar "/Users/wwx/Developer/Cellar/composer/1.2.0/libexec/composer.phar" SHA1 signature could not be verified: broken signature in /Users/wwx/Developer/Cellar/composer/1.2.0/libexec/composer.phar on line 23

Call Stack:
    0.0063     359032   1. {main}() /Users/wwx/Developer/Cellar/composer/1.2.0/libexec/composer.phar:0
    0.0064     359032   2. Phar::mapPhar() /Users/wwx/Developer/Cellar/composer/1.2.0/libexec/composer.phar:23

就想直接安装 master 版看看,搜了一下 homebrew 还真有真有这个参数,安装后 composer 就又可以正常运行了。

brew install composer --HEAD

PHP Web Server Demo

| PHP Web Server Demo已关闭评论

纯 Demo Web Server,一切 Web 请求均返回 HelloWorld 作为响应

<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, "0.0.0.0", 9501);
socket_listen($socket, 5);
for(;;) {
    $client = socket_accept($socket);
    $buffer = socket_read($client, 2048);
 
    socket_write($client, "HTTP/1.1 200 OK\r\n");
    socket_write($client, "Transfer-Encoding: chunked\r\n");
    socket_write($client, "\r\n");
    socket_write($client, "HelloWorld\r\n");
    socket_close($client);
}
socket_close($socket);

PHP Socket Server Demo

| PHP Socket Server Demo已关闭评论

代码功能:在本地开一个 TCP 9501 端口,等待客户端连接,客户端连接上来之后,向客户端发送一个 HelloWorld,然后关闭这个连接,等待下一个客户端的连接。

<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, "0.0.0.0", 9501);
socket_listen($socket, 5);
for(;;) {
    $client = socket_accept($socket);
    socket_write($client, "HelloWorld\n");
    socket_close($client);
}
socket_close($socket);

JavaScript WebSocket Client Demo

| JavaScript WebSocket Client Demo已关闭评论

纯 Demo 代码,和当年 XMLHttpRequest 似的,裸调 WebSocket:

var socket = new WebSocket('ws://localhost:9501');
socket.onopen = function(event) {
    socket.send('HelloWorld!');
    socket.onmessage = function(event) {
        console.log('Client received a message', event);
    };
    socket.onclose = function(event) {
        console.log('Client notified socket has closed', event);
    };
    //socket.close();
};

ubuntu 软件包更新公钥错误

| ubuntu 软件包更新公钥错误已关闭评论

今天在 ubuntu 机器上执行:sudo apt-get update 的时候,提示错误如下:

.......
Fetched 3,192 B in 3s (848 B/s)
Reading package lists... Done
W: GPG error: http://archive.ubuntukylin.com:10006 xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 8D5A09DC9B929006

看上去是某个公钥找不到,解决方法就是导入这个公钥

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 8D5A09DC9B929006