利用公式提取全部工作表名称

在插入/名称/定义中定义一个名称——工作表,公式为:=REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1)),)&T(NOW()),这时就可以利用“=工作表”来提取当前工作表的名称。

在插入/名称/定义中再定义一个名称——工作表名称,公式为:=LOOKUP(ROW(INDIRECT("1:"&COLUMNS(工作表))),MATCH(工作表,工作表,),工作表),这时就可以利用数组公式“=工作表名称”来提取整个工作簿中工作表的名称集合。

具体可以看一下附件:

公式提取全部工作表名称

树莓派控制温湿度传感器dht11

来自 http://guojianxiang.com/posts/2015-11-26-RP_Controle_Dht11.html

基于python

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
channel = 4
data = []
j = 0
GPIO.setmode(GPIO.BCM)
time.sleep(1)
GPIO.setup(channel, GPIO.OUT)
GPIO.output(channel, GPIO.LOW)
time.sleep(0.02)
GPIO.output(channel, GPIO.HIGH)
GPIO.setup(channel, GPIO.IN)
while GPIO.input(channel) == GPIO.LOW:
continue
while GPIO.input(channel) == GPIO.HIGH:
continue
while j < 40:
k = 0
while GPIO.input(channel) == GPIO.LOW:
continue
while GPIO.input(channel) == GPIO.HIGH:
k += 1
if k > 100:
break
if k < 8:
data.append(0)
else:
data.append(1)
j += 1
print "sensor is working."
print data
humidity_bit = data[0:8]
humidity_point_bit = data[8:16]
temperature_bit = data[16:24]
temperature_point_bit = data[24:32]
check_bit = data[32:40]
humidity = 0
humidity_point = 0
temperature = 0
temperature_point = 0
check = 0
for i in range(8):
humidity += humidity_bit[i] * 2 ** (7-i)
humidity_point += humidity_point_bit[i] * 2 ** (7-i)
temperature += temperature_bit[i] * 2 ** (7-i)
temperature_point += temperature_point_bit[i] * 2 ** (7-i)
check += check_bit[i] * 2 ** (7-i)
tmp = humidity + humidity_point + temperature + temperature_point
if check == tmp:
print "temperature :", temperature, "*C, humidity :", humidity, "%"
else:
print "wrong"
print "temperature :", temperature, "*C, humidity :", humidity, "% check :", check, ", tmp :", tmp
GPIO.cleanup()

ubuntu 安装shadowsocks和polipo

由于Ubuntu Server是不带用户界面的,所以要为Server配置Shadowsocks还是稍显麻烦。本文就是我配置Shadowsocks的一些经验,以待参考。

1.安装shadowsocks
由于shadowsocks是基于Python开发的,所以必须安装python:
sudo apt-get install python
接着安装python的包管理器pip:
sudo apt-get install python-pip
安装完毕之后,通过pip直接安装shadowsocks:
sudo pip install shadowsocks

2.配置shadowsocks
新建一个配置文件shadowlocal.json,然后配置相应的参数:

{
"server": "{your-server}",
"server_port": "{your-server-port}",
"local_port": 1088,
"password": "{your-password}",
"timeout": 600,
"method": "aes-256-cfb"
}
上面的参数需要你的shadowsocks服务提供商为你提供,当然你也可以自己搭建一个。搭建个人的shadowsocks服务器的话,多几个参数,执行文件是ssserver,这里赞不多说明。

配置完成后就可以启动shadowsocks客户端:

sudo sslocal -c shadowlocal.json -d start

配置全局代理
启动shadowsocks服务后,发现并不能科学上网,这是因为shadowsocks是socks 5代理,需要客户端配合才能科学。

为了让整个系统都走shadowsocks通道,需要配置全局代理,可以通过polipo实现。

3.安装polipo
sudo apt-get install polipo

4.配置polipo

修改/etc/polipo/config:

logSyslog = true
logFile = /var/log/polipo/polipo.log

proxyAddress = "0.0.0.0"

socksParentProxy = "127.0.0.1:1088"
socksProxyType = socks5

chunkHighMark = 50331648
objectHighMark = 16384

serverMaxSlots = 64
serverSlots = 16
serverSlots1 = 32
重启polipo服务:

sudo /etc/init.d/polipo restart
为终端配置http代理:

export http_proxy="http://127.0.0.1:8123/"
接着测试下能否科学上网:

curl www.google.com
如果有响应,则全局代理配置成功。

注意事项
服务器重启后,下面两句需要重新执行:

sudo sslocal -c shadowlocal.json -d start
export http_proxy="http://127.0.0.1:8123/"

apache日志出现InternalDummyConnection

在ubuntu中apache的日志记录中出现大量的 Internal Dummy Connection,是它自检的记录。按

https://wiki.apache.org/httpd/InternalDummyConnection 的说明修改 /etc/apache2/apache2.conf :
添加 SetEnvIf Remote_Addr "127\.0\.0\.1" loopback
并添加 env=!loopback 到 CustomLog 的最后面

如:

SetEnvIf Remote_Addr "127\.0\.0\.1" loopback
CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined env=!loopback

OMV extras 插件包

openmediavault 的 extra插件包安装方法,均为3行代码:

For OMV 2.x (stoneburner)
wget http://omv-extras.org/openmediavault-omvextrasorg_latest_all.deb
dpkg -i openmediavault-omvextrasorg_latest_all.deb
apt-get update

For OMV 3.x (erasmus) (STILL BETA)
wget http://omv-extras.org/openmediavault-omvextrasorg_latest_all3.deb
dpkg -i openmediavault-omvextrasorg_latest_all3.deb
apt-get update

sudo不需要输入密码

编辑/etc/sudoers:

$sudo visudo

在其中添加一行,若你想让一个用户sudo时不需要进行密码输入则以用户名开头,若想让一个组有此特权则以%组名开头,例如:

comet ALL=NOPASSWD: ALL

表示comet在任何的命令下都不需要进行sudo操作。

%sysadmin ALL=NOPASSWD: /usr/bin/apt-get, /usr/bin/aptitude

表示sysadmin这个组在进行apt-get和aptitude时不需要进行sudo操作