猫言猫语

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

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

移除 OpenSSH key 中的 Passphrase

| 移除 OpenSSH key 中的 Passphrase已关闭评论

原先生成的私钥是带密码保护的,现在 git 提交代码的时候不想那么麻烦总输入密码了,就需要把那个密码移除掉,具体命令:

ssh-keygen -f ~/.ssh/id_dsa -p

提示你输入新密码的时候,直接回车就可以了,或者使用 openssl 来生成一个新的

openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa_new

解决 Eloquent MassAssignment 异常

| 解决 Eloquent MassAssignment 异常已关闭评论

在 Laraevl 中偶尔需要在命令行直接灌点测试数据进去,结果却被提示:

Illuminate\Database\Eloquent\MassAssignmentException with message 'key'

应该是 key 字段无法直接 create 导致的,可临时禁用掉 MassAssignment 功能以解决这个问题

Eloquent::unguard();

理解 iptables REDIRECT

| 理解 iptables REDIRECT已关闭评论

iptables 里有一个 REDIRECT 目标,用于把路过服务器的某些流量重定向到服务器上某个端口进行处理,非常容易让人误以为是重定向到 loopback 的端口进行处理的。

其实这个流量是被重定向到数据包入网卡的那个的那个主地址进行处理,也就是说你的处理程序如果监听在 127.0.0.1 的话,路过服务器的流量可能就无法正常处理了。

因此在某些时候,还是需要监听在 0.0.0.0 才能按照你希望的结果进行处理。