用jquery判断checkbox是否选中
1 | $('checkbox').is(':checked') |
1 | $('checkbox').is(':checked') |
应用地址:https://oc.mypi.win
之前一直计划接触下 swoole 、redis 、docker。最近时间稍微宽裕些,于是就把这三者揉到一起,
把之前自己用的剪切板重新写了一遍,之前的那个是个nodejs版的。
redis在上一个公司有过接触,但是由于都是封装在底层的,平时用的时候,也只是调用方法,所以认识不够深刻。
这次读了些资料,主要是看了下redis提供的数据结构。现在我对这货的核心功能的认识就是,用C实现了一个安全操作层,
用来对内存进行读取写入操作,并且实现了几种数据结构,用于存储结构化的数据。
开发目标是应用要能允许建立多个剪切板,每个剪切板有个唯一标示,每个剪切板的容量是50条。因此先想到了队列,
于是最后用的是redis的list的数据结构,用户提供剪切板的name和进入剪切板的password,产生唯一标示的方法如下:
1 | $hash = md5($password . $name); |
然后用$hash作为这个剪切板list的key。
另外一个问题就是如何把websocket的frame_id 和 $hash 关联起来。
frame_id其实就是client_id,即连入到服务器的客户端的唯一标示,$hash和client的关系是,一对多的,
即一个剪切板,可能会有多台终端接入。
最后考虑了下,使用redis的hash数据结构和list数据结构来完成这个对应关系。hash数据结构用来存储
frame_id 到 hash 的关系,即通过该结构,提供 frame_id 即可找到 对应的剪切板list的key,即 $hash 值。
那么list结构是用来做什么的呢?list中存储的是 $hash 做key,每个 list 里面存储着当前连接到该剪切板的
所有终端的 frame_id,这个list的作用就是用来广播的,即同一个剪切板内的某个终端更新剪切板后,通知其他终端更新。
关于制作swoole的docker镜像,可以看这里 https://akawa.ink/2015/06/13/make-swoole-docker.html
代码:https://github.com/ety001/online-clipboard
swoole-docker:https://registry.hub.docker.com/u/ety001/min_swoole/
C-b ? 显示快捷键帮助
C-b C-o 调换窗口位置,类似与vim 里的C-w
C-b 空格键 采用下一个内置布局
C-b ! 把当前窗口变为新窗口
C-b " 模向分隔窗口
C-b % 纵向分隔窗口
C-b q 显示分隔窗口的编号
C-b o 跳到下一个分隔窗口
C-b 上下键 上一个及下一个分隔窗口
C-b C-方向键 调整分隔窗口大小
C-b c 创建新窗口
C-b 0~9 选择几号窗口
C-b c 创建新窗口
C-b n 选择下一个窗口
C-b l 切换到最后使用的窗口
C-b p 选择前一个窗口
C-b w 以菜单方式显示及选择窗口
C-b t 显示时钟
C-b ; 切换到最后一个使用的面板
C-b x 关闭面板
C-b & 关闭窗口
C-b s 以菜单方式显示和选择会话
C-b d 退出tumx,并保存当前会话,这时,tmux仍在后台运行,可以通过tmux attach进入 到指定的会话
1、由于使用的是docker hub 中的 centos:6
,因此一上来需要先安装开发包,
为了省事,我直接就用下面这条命令了:
yum groupinstall "Development Libraries" "Development Tools"
2、去下载php官网比较新的源码,我下载的是 php-5.6.10
。
3、安装libxml2-devel
yum install libxml2-devel
4、解压下载后的php源码包,直接 ./configure
然后结束后执行 make && make install
。
5、编译安装结束后,下载swoole的源码,我下载的是 swoole-1.7.17
,解压,然后依次执行:phpize
./configure
make && make install
6、编辑php.ini,加入 extension=swoole.so
7、安装完毕,开始瘦身,我主要是删掉 /usr/share
/usr/local
/usr/src
下面的一些文件,最终初步瘦身从800M到300M。
8、删除完文件后,回到根目录,执行
mkdir /rootfs
mkdir bin etc dev dev/pts lib usr proc sys tmp
mkdir -p usr/lib64 usr/bin usr/local/bin
wget http://busybox.net/downloads/binaries/1.21.1/busybox-x86_64 /sbin/busybox
chmod +x /sbin/busybox
cp /sbin/busybox bin
busybox –install -s bin
cp -r /bin /rootfs/bin
cp -r /etc /rootfs/etc
cp -r /lib /rootfs/lib
cp -r /usr /rootfs/usr
cd /rootfs
tar cf /rootfs.tar .
9、把生成的 rootfs.tar 从 container 中 scp 出来,在放置 rootfs.tar 的目录下,
新建个 Dockerfile 文件,内容如下:
FROM scratch
MAINTAINER ety001 <work@akawa.ink>
ADD rootfs.tar /
10、等待完成后,就可以用 docker images
命令看到新做的这个镜像了。
docker pull base/archlinux
docker images
docker search image_name
# 显示所有的container
docker ps -a
# 显示最新的container
docker ps -l
docker run -ti IMAGE /bin/bash
docker run -it --rm IMAGE /bin/bash #运行完删除容器, 建议调试时使用
# CONTAINER为容器的名字,从 docker ps -a 中可以看到
docker stop CONTAINER
# CONTAINER为容器的名字,从 docker ps -a 中可以看到
docker rm CONTAINER
docker rmi IMAGE
docker commit -m "some log" <container_id> <some_name>
docker attach <容器id> #通过容器id进入, 不推荐该方法
docker exec -i -t <容器id> /bin/bash #通过容器id进入, 推荐该方法
docker build -t <镜像名> .
docker run -it --restart on-failure:10 IMAGE
# no 不自动重启容器 (默认)
# on-failure 容器发生error而退出(容器退出状态为0)重启容器
# unless-stopped 在容器已经stop掉或docker stopped/restarted 的时候才重启容器
# always 在容器已经stop掉或docker stopped / restarted 的时候重启容器
另外附加一篇参考:http://blog.chinaunix.net/uid-10915175-id-4443127.html
##WiFi经常掉线问题
相关报错:
1 | daemon.info hostapd: wlan0: STA 4c:8d:79:f2:53:9c IEEE 802.11: disconnected due to excessive missing ACKs |
在把极壹刷成OpenWRT后,使用了半周多了,稳定性还是不错的,今天用极壹替换掉了家里的总入口的TpLink,
发现接上网线后,wifi在刚开始就连不上,后来连上了,用了2个多小时后,就总是掉线,到最后就连不上了。
不过重启路由后,又好了。看了日志发现好像验证相关的问题,经过搜索,发现大家的解决方案都是把组密钥更新关掉了,
我也先关掉再看下吧,配置如下:
1 | #修改/etc/config/wireless |
保存后,重启网络
1 | root@ETYOpenWrt:~# /etc/init.d/network restart |
貌似这是个不简单的bug,https://dev.openwrt.org/ticket/12372
找到了个解决方案,https://forum.openwrt.org/viewtopic.php?id=43188,
按照6楼的方法,加个 option disassoc_low_ack 0
配置再试试。
上一个方案不成功。
####2015-06-12 16:58 update
另外一个方法,再试试 https://www.bungie.net/en/Forum/Post/69319415/0/0/1
1 | root@ETYOpenWrt:~# cat /sys/kernel/debug/ieee80211/phy0/ath9k/ani |
##Samba配置
先从/etc/passwd中添加一个用户ety001,然后再新加一个samba用户,命令如下:
1 | root@ETYOpenWrt:~# smbpasswd -a ety001 |
把ety001换成你自己的用户名,然后再到luci界面里配置下samba就可以了,也可以直接写下面的配置文件:
1 | #文件位置:/etc/config/samba |
重启samba即可
##花生壳配置
由于是动态公网IP,所以需要弄个花生壳,要不然多麻烦。需要下载个插件就能搞定了,
地址:http://www.domyself.me/assets/upload/20150612/luci-app-oray.ipk,下载后传到路由器root用户家目录下,执行:
1 | opkg install luci-app-oray.ipk |
安装好以后,就可以在luci界面看到相关的配置页面了,配置很简单,这里略过。
首先打开终端输入
1 | xrandr |
得到如下信息
1 | ety001@ETYkali:~$ xrandr |
其中,LVDS1即为笔记本的显示屏幕,VGA1为外接显示器。
输入如下命令,
1 | cvt 1920 1080 |
可以得到相关的分辨率配置信息,如下
1 | ety001@ETYkali:~$ cvt 1920 1080 |
新建模式
1 | xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync |
增加模式
1 | xrandr --addmode VGA1 "1920x1080_60.00" |
接下来就能在显示配置列表中看到1920x1080的选项了。
如果希望下次开机也能自动设置,配置下家目录下面的.profile,加入下面三行即可
1 | cvt 1920 1080 |
按照下面的命令输入即可
1 | sudo apt-get install python g++ make checkinstall fakeroot |
转自:http://www.free4net.com/2014/06/installing-nodejs-and-npm-in-kali-linux.html
在终端下翻墙的重要性,当你使用composer之类的东西的时候就体现出来了。
安装proxychains可以实现执行指定的命令的时候,使用代理去访问。
1 | brew install proxychains-ng |
安装ROR真费劲。。
1 | sudo yum install ruby |
1 | sudo yum install ruby=devel |
1 | sudo gem install rails |
可能需要设置gem的资源服务器为淘宝的。
最好再安装上,mechanize,
1 | sudo gem install mechanize |