Archived


Aug. 13, 2022

STM32CubeIDE使用DAP调试器时用到的.cfg配置文件

以下配置在STM32F103上经实验可用,BOOT0悬空即可。

source [find interface/cmsis-dap.cfg]

set WORKAREASIZE 0x8000

transport select "swd"

set CHIPNAME STM32F103RCTx
set BOARDNAME genericBoard

# Enable debug when in low power modes
set ENABLE_LOW_POWER 1

# Stop Watchdog counters when halt
set STOP_WATCHDOG 1

# STlink Debug clock frequency
set CLOCK_FREQ 8000

# Reset configuration
# use hardware reset, connect under reset
# connect_assert_srst needed if low power mode application running (WFI...)
#  reset_config srst_only srst_nogate connect_assert_srst
# set CONNECT_UNDER_RESET 0
# set CORE_RESET 0

# ACCESS PORT NUMBER
set AP_NUM 0
# GDB PORT
set GDB_PORT 3333

# BCTM CPU variables

source [find target/stm32f1x.cfg]

将上述内容保存为自己的.cfg文件。

More...

Jun. 23, 2022

使用单台设备作为网关,让整个局域网接入VPN网络

为了躲避噪音,我把我的TrueNAS设备搬到了其他地方,需要依靠OpenVPN来连接TrueNAS。虽然TrueNAS提供了比较便捷的Web管理工具,但是为家里的每台设备都签发证书,就显得比较繁琐了,要是命名习惯不好,根本搞不清哪个配置文件用在了哪个设备上,更不用说有的设备并不支持OpenVPN客户端。

More...

Jun. 14, 2022

TrueNAS SCACLE 使用体验

使用TrueNAS SCALE已经有3个月,中间经历了RC到正式版本的发布。总的来说TrueNAS是一款很好的NAS系统,我就此总结一下它的基本特性和优缺点

TrueNAS SCALE是基于Linux的(实际是基于Debian),但总的来说很难像OMV那样脱离Web自己玩。

More...

Jun. 9, 2022

未来维护计划

目前用的付费主题LensNews,已经用了很多年,原作者已经停止维护了,目前和最新的Wordpress版本兼容性还不错(不过我暂时还不了解wordpress到底升级了多少)

好消息是,作者在停止更新后把最后版本的混淆代码和权限验证都去掉了,差不多等于我现在有这个主题的全部源码。

More...

May. 26, 2022

简易JPEG解码的C语言实现

根据JPEG编码的流程,将一个JPEG编码的图像解码为YUV的原始像素图像。

实现了1x1宏块格式的解码,并输出为YUV444格式。

以Luc Saillard的jpeg_minidec作为范例。

由于没有时间仔细阅读JPEG标准,因此编写过程中借助范例调试对照了各个解码环节,并移植了范例中的部分代码到自己的项目中:

More...

Apr. 22, 2022

【数据压缩】第二类词典编码LZW

LZW简介

标题第二类词典编码算法的想法是企图从输入的数据中创建一个“短语词典”,这种短语可以是任意字符的组合,编码数据过程中当遇到已经在词典中出现的短语时,编码器就输出这个词典中的短语的“索引号”,而不是短语本身。

More...

Feb. 28, 2022

VSCode RemoteSSH Windows上私钥权限配置

VSCode使用密钥连接SSH时,对密钥私钥的权限有要求,否则会无法登录。

需要删去除当前用户以外的所有其他用户,包括System、Administrator等。

如图所示:

Jan. 28, 2022

解决安卓类原生ROM的Google Play “设备未通过认证”(需root/非Magisk模块)

来源

解决与 Play 保护机制认证状态相关的问题

前言

有些ROM,比如MIUI的开发版或者一些类原生ROM,会因为Google Play的Safetynet机制,因为ROM未在Google注册的缘故,GooglePlay里会显示“设备未通过认证/Device is not certified”。如果设备未通过人证的话,有一些应用,例如Netflix,在Google Play商店里是搜索不到的,即使从APKPure等途径使用APK安装,Netflix也会提示“与你的设备不兼容”。

More...

Sep. 16, 2021

Windows10 SMB协议映射将非标准端口映射到445端口

SMB的标准端口是445,这个端口在Windows系统上是固定的。

但是,Linux上的samba服务是允许设置445以外的端口的,或者出于各种原因,SMB服务被映射到了其他端口,这时候就没办法在Windows系统的资源管理器里直接挂载了。

More...

Sep. 2, 2021

HTMLAudioElement的onplay、ontimeupdate事件里timeStamp值的误差问题

最近在做一个歌词组件,分享一下中间踩到的坑。

这个歌词组件简单来说就是读入lrc格式的歌词文件,把时间戳解析出来,在音乐播放时按时间戳显示。

这些都不重要,重要的是为了获取音乐的实时播放事件,让歌词滚动到相应的位置,监听了HTMLAudioElement的ontimeupdate事件。

More...

Jul. 31, 2021

【FPGA】AM调制实验(Cyclone iii + AD9762)

开发板是DE0,搭载Cyclone3

用的还是之前的那块ADDA板,说实话这个DAC(AD9762)似乎不适合用来射频?这个DAC标称125MSPS的刷新率,所以载波理论上只能到62.5MHz,其实调幅的话也是够用的,然而我接收用的RTLSDR最低只能到25MHz,只能给DAC超频到200MHz,然后用DDS产生30MHz的载波。

More...

Jul. 11, 2021

【非虚构作业】爱猫社在校园里的故事

提要

在中国传媒大学的校园里,如果不是特别留意,很难发现正有几只流浪猫在校园里活动。多年来,在爱猫社的努力下,中传校园里的流浪猫得到了有效的控制。虽说是流浪猫,它们却和家猫也一样有了稳定的食物和居所,成为了学生们的宠物。

More...

Apr. 9, 2021

AD+FPGA+STM32示波器设计 串口传输到MATLAB(设计报告)

一体化简易信号源与示波器设计

[TOC]

系统方案

​ 整体设计框图:

​ FPGA部分由DE0开发板(Cyclone Ⅲ)和AD/DA子板组成。本设计使用了AD/DA子板上配备的并行ADC AD9200 和并行DAC AD9762。输入到示波器的信号由AD/DA子板上SMA接口RF IN输入;从信号源输出的信号由AD/DA板上的SMA接口RF OUT输出。

More...

Apr. 9, 2021

FPGA+STM32频率计实现(2015国赛F题)

频率计,简单且常用的设备。下面我们来探讨如何足够准确地测出频率。

假设我们已经将输入信号处理成方波信号。

容易想到的测定频率的两种方式:计频和测周。计频,即在固定时间内测量方波一侧边沿的数量,适用于高频率信号的测量。测周,即测量相邻两个上升沿(或下降沿,本文以上升沿为例)之间的时间间隔,取倒数即得到频率,适用于低频率信号的测量。

More...

Mar. 17, 2021

Windows上ESP8266开发环境配置(工具链和Eclipse配置)

最近要用到ESP8266这款wifi芯片。ESP8266既可以直接用AT命令操作,也可以在上面运行自己编写的程序。我希望能节约一点上位机的资源,所以想要尝试一下ESP8266的开发。ESP8266搭载的是一块Tensilican L106 32位MCU,需要专门的环境来开发,以下内容基于官方ESP8266_RTOS_SDK的文档:https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/get-started/index.html

More...

Feb. 2, 2021

解决远程桌面里无法使用MATLAB

随手一记,MATLAB似乎对远程桌面(仅限Windows内置的远程桌面)里的使用有特别的限制。

解决办法是在安装目录R2020a/licenses/里找到一个.lic文件。然后编辑它。

里面是好多行类似这样的

INCREMENT Aerospace_Blockset MLM 369 permanent uncounted \
    VENDOR_STRING=vi=0:at=200:ae=1:lu=300:lo=IN:ei=6257193:lr=1: \
    HOSTID=ANY SN=123456 SIGN=xxxxxxxxxxx
...

在每个SIGN=xxxxxxxx后面加上TS_OK,

More...

Jan. 20, 2021

【FPGA】SPI协议的Verilog实现

这个实现是照着高等教育出版社《电子系统设计与实战》10.4关于SPI的章节给的示例写的,SPI协议应该是4根线,这本书上给的例子是五根线,片选信号(从器件使能信号)变成了数据片选和命令片选两个。这里FPGA显然是作从器件用的,FPGA自己再分多少模块、用哪个模块不应该是SPI模块操心的事情,书上这番解释确实有些牵强,不过在实际中如果要用SPI协议以8位帧的方式传多个字节,多一条命令线算是方便一些吧。

More...

Oct. 29, 2020

积累的一些正则表达式

等待补充……

Sep. 27, 2020

STM32 实验 实现一个计时器

STM32 定时器实验

概要

本实验设计基于正点电子STM32 NANO开发板,利用中断机制进行定时,可以正向、反向计时,计时结束后有灯光、声音提醒,可以通过按键、红外遥控进行控制、设定时间。

使用方法

基本使用

将软件下载到开发板中,开发板显示初始计时起点。

More...

Sep. 26, 2020

微信小程序上直接加载缩略图

最近在做一个微信小程序,小程序首页是一个列出信息并附带图片的列表。 这种小图理所应当地应该使用缩略图,主要是为了节省流量。但是微信似乎并没有提供缩略图的功能,于是就只好加载全图。

后来就出了问题,起因是其中一个头像换了个体积很大的图片,但是还是在加载原图,结果导致整个页面卡顿异常,乃至出现黑块。这个问题本来也存在,就是在下拉加载的时候会出现撕裂,但没有这么严重。

More...

Sep. 14, 2020

远程管理Linux机器上的LSI MegaRAID 9260-8i卡

参考文章:Installing LSI MegaRaid Storage Manager on OMV 5.3.4 (Debian 10)

演示环境为OMV。

首先到 https://www.broadcom.com/support/download-search?pg=&pf=Legacy+RAID+Controllers&pn=MegaRAID+SAS+9260-8i&pa=&po=&dk= 中的Management Software and Tools下载下面两个软件(如果你的卡不是9260-8i,可以到https://www.broadcom.com/support/download-search 找到符合的型号)

More...

Aug. 29, 2020

v2ray tproxy透明代理引起CPU占用100%

最近发现v2ray的tproxy反向代理会引起CPU满载,经搜索后找到了GitHub Issue 2621

遂解决

在原来的基础上再加上一条规则即可:

iptables -t mangle -I V2RAY -m mark --mark 0xff -j RETURN

Aug. 27, 2020

分享一个v2ray配置,对内做透明代理旁路由,对外做VPN

我一直很不喜欢V2ray的配置文件(现在依旧不喜欢),觉得太乱,一点儿也不清晰,不同的inbounds和outbounds混在一起,无法清晰地分出每一个服务。其实这也是v2ray的灵活性的体现。

简单来说,v2ray没有服务端、客户端之分,或者说v2ray的客户端、服务端在一起;inbounds做服务端,接受客户端的请求,与客户端的outbounds相对应;outbounds做客户端,向服务端发起请求,与服务端的inbounds相对应。同一个v2ray的inbounds与outbounds之间用routing来连接,routing就用来定义当我的一个inbounds接收到了流量,该把它发送到outbounds中的哪一个。所以v2ray可以做这种事:inbounds接收流量,然后查routing,根据routing的设置转发到指定的outbounds中。

More...

Aug. 20, 2020

Moonlight + NVIDIA SHEILD 局域网内高效串流方案

之前写过一篇让RDP硬件加速并且跑到60帧,当时环境是Windows Server 2019,确实可以到60帧。但是换成最新的Windows 10系统后,修改注册表无济于事,而且还有各种报错……遂寻找其他局域网内串流的方式。

More...

Jul. 31, 2020

头顶上的航班:用RTL-SDR接收ADS-B信号

RTL-SDR

SDR是软件定义无线电的简称,这个设备可以接收无线电信号,在电脑或者手机上使用软件解码信号,相当于一个模拟了收音机。但是相比于一般的收音机,SDR可以实现全频段的接收。

因为依靠软件解码,无论接收到的无线电信号使用何种制式,只要有相应的解码软件,都可以达到硬件设备的效果。比如收听广播、收看电视,以及本文的ADS-B。

More...

Jul. 9, 2020

RDP 优化操作 微软远程桌面 开启显卡加速、60FPS、USB设备重定向

有一说一,Windows自带的远程桌面服务(RDP)非常优秀,不考虑云服务(可以自己搭建)的情况下,在表现上可以胜过任意一款第三方远程控制软件(包括且不限于VNC、Teamviwer……),毕竟是原生功能。

More...

Jun. 13, 2020

《一个64位操作系统的实现》代码3-2 Boot和Loader加载程序

由于对intel体系结构的不熟悉……导致我在接下来的一章里前进得相当困难。遂采取最笨的方法,把代码3-2的新内容的每一条汇编逐一加上注释,尽可能去理解新的内容。收获当然是有的,但是我很怀疑是否有能力应付后面的内容。

More...

Jun. 8, 2020

2020/6/8 近期

由于上上个星期把站点从MySQL5.6和PHP7.1升级成了MariaDB和PHP7.4,并且由于配置文件有问题(而且是阿里云的突发性能小水管),导致CPU和内存跑满,CDN返回504,多次修改配置文件,都是好了一段时间又炸,目前迁移到另一家的服务上,还是年初低价嫖的。至于原来那个,我还没想好如何处置。

More...

May. 15, 2020

《一个64位操作系统的设计与实现》第一部分 第二部分 环境搭建和boot引导程序

这次也没什么营养,主要是先把环境搭起来,然后试着跑一下boot引导。

书上给的环境是CentOS6,编译安装bochs。我在Ubuntu上编译,如我所预料的各种报错,烦不胜烦,干脆用apt安装

sudo apt-get install bochs

Intel x64 体系结构 寄存器集

书中的BootLoader部分用Intel汇编语言编写。先简单说一下寄存器部分,内容参考自Introduction x64 Assembly,暂时只用到通用寄存器。

More...

Apr. 28, 2020

微信小程序云服务HTTP API上传文件的问题

Apr. 4, 2020

愿未来,我们再也不需要他们做英雄

愿未来

我们再也不需要他们做英雄;

我们在应对突发公共卫生事件时更加从容;

我们能更快地意识到危险的来临;

我们的医疗体系变得更加完善;

阴谋论和不负责任的谣言彻底消失。

逝去的生命,我们将永远记得。

向所有在抗击新冠肺炎疫情斗争中牺牲的烈士和逝世同胞们致以深切哀悼

More...

Mar. 26, 2020

《计算机组成与设计 硬件/软件接口》5.5 可信存储器层次(可用性、汉明编码)

自从翻过了第四章之后就百无聊赖,主要是假期在某种意义上结束了,写了两个月的nodejs,今天开始陷入停滞,不如再水一篇~ 这是第五章将关于存储器层次结构的部分。5.7节的重点是汉明编码,我这才发现在数据校验上要花费相当多的代价来纠正一位错,检测两位错。

可信存储器层次

采用冗余技术构造可靠的存储器

5.5.1 失效的定义

首先是一些概念上的东西。

More...

Mar. 8, 2020

说了这么多,为什么不自己写个网盘呢?

其实既然都说到这份上,我的进度也算差不多了,这是整体的页面,

后端是Node.js、Koa,前端框架是Vue,都是刚刚接触没有很久的,正好可以实战兼学习了。

目前基本实现了几个主要功能,上传、删除、下载、批量删除和移动等等,还有预览图片、pdf、普通文本和markdown,生成并缓存图片的缩略图,相册

More...

Feb. 18, 2020

4.3 建立数据通路

……一篇篇写是不可能的……看完也是不可能的…… 只能隔几节水一水的样子~

数据通路

第一次看到这个词,我会以为它是用来传输数据的,然而他的定义是:

一个用来操作保存处理器中数据的单元。在MIPS实现中,数据通路部件包括指令存储器,数据存储器,寄存器堆,ALU和加法器。

另外,之前在跳转指令中经常看到的程序计数器:

More...

Jan. 30, 2020

3.5 浮点运算

有关计算机中浮点运算的部分,涉及IEEE 754标准 博客的公式差点挂了……

在计算机中,使用科学计数法表示二进制数

1.0_{2(底数F)} \times2^{-1(指数E)}

规格化二进制数

即小数点左边只有一位的使用科学计数法表示的实数,如 1.23 \times 10^{-2} 这样就不是规格化的二进制数: 12.3 \times 10^{-3} 在计算机中,浮点数以规格化二进制数表示

More...

Jan. 21, 2020

《计算机组成与设计 硬件/软件接口》2.8.2 嵌套过程 非叶过程的调用(以递归计算阶乘为例)

来源:《计算机组成与设计 硬件/软件接口》第二章 指令:计算机的语言,代码、思路均摘抄自此书

从这篇文章里,我们来从汇编层面理解函数调用的机制。

概念:叶过程

叶过程:不调用其他过程的过程

我们当然希望他们都是叶过程,这样就不需要这一章了。但是显然不会,我们会在一个函数中调用另一个函数,这要求我们保留正在执行的函数的同时,还要给要调用的函数提供寄存器……如果需要参数,我们就要提前将参数装入寄存器(在MIPS中为$a0~$a3),如果有返回值,我们要将要在函数返回时将返回值装到寄存器里……

More...

Jan. 9, 2020

写在2020年的开始(虽然是第五天了)

北京的地铁

虽然学校在北京,但是五环之外,也就没那么北京了。京通快速隔断了学校和宿舍,看起来门前川流不息,其实有些封闭,要从京通快速转到校门,要先走到双桥,再拐回来。 所以学校周围,其实是有些荒凉和单调的。

More...

Dec. 15, 2019

STM32 综合实验 拆弹指令 实验报告(19 广电工 GYS)

概要

本实验设计基于正点电子 STM32 NANO 开发板,利用中断机制进行定时、检测按键动作。

设计任务

设计实验版的软件,包括以下功能

  1. 系统上电后,LED数码管上,显示剩余时间 29.9 ,表示 炸弹剩余的爆炸时间
  2. 每经过0.1秒,数码管上倒计时显示减少0.1
  3. 当倒计时达到 00.0 秒时,在LED数码管上绘制一个动态图样表示炸弹爆炸
  4. 在倒计时的过程中,如果用户在KEY0和KEY1上,按下了如下按键序列,则倒计时停止
  5. 按键序列为,KEY0,KEY0,KEY1,KEY1,KEY0,KEY1,KEY0,KEY1,当测到正确的序列时,倒计时的计数,应该停下来,清晰的显示剩余时间

设计思路

开发板已经提供了一个8位数码管、5枚按键(KEY0KEY2、KEY_UP,本实验只用到KEY0和KEY1)、8颗LED(LED0LED7)

More...

Nov. 27, 2019

在内网中使用自签名证书搭建Nextcloud X ONLYOFFICE Documentserver(Docker)

在内网里给Nextcloud搭建ONLYOFFICE Documentserver一直是件很头痛的事。Nextcloud的ONLYOFFICE插件不仅要求DocumentServer使用HTTPS连接,而且不允许自签名证书,在局域网里就很尴尬了。之前是打算把买的域名解析到局域网的地址,不过这显然很傻。其实办法还是有的,直接修改HOSTS文件可以让我们用我们自己任意的域名访问。

More...

Nov. 23, 2019

(电脑上)对于2.4Ghz和5Ghz共用的SSID,怎样择一使用?

很多路由器包括很多公用WIFI都采用2.4Ghz和5Ghz共用一个SSID的方法,让设备自己选择。这样固然比较美观,但是有时候就是明明5Ghz信号很好,就是死活卡在2.4Ghz,甚至其中一个频段挂掉了,你自己还没的选,只能祈祷连到正常的频段。

More...

Nov. 17, 2019

STM32单片机(一)输出

现在我的情况略显尴尬,我一边选修了Arduino开发,另一边又跑去学STM32单片机。最近又看了一些处理器原理的科普书,逐渐明白了单片机是如何工作的。

用Arduino的时候完全不用在乎一个针脚怎么输出,而学习STM32单片机时,逐渐清晰了在让一个引脚输出高电平点亮LED灯,程序到底做了什么。

More...

Nov. 4, 2019

OnlyOffice集成 Document Serve Api简介

OnlyOffice提供了一系列文档在线编辑工具,这些都依托于Document Server。我之前做过将在Nextcloud上使用OnlyOffice的文章,现在我们来试试单独使用OnlyOffice。

More...

Oct. 19, 2019

别让事情走向荒诞

之前写了,但是一直是草稿没发。我觉得可能言辞可能不太合适,但是我真的想说两句。

我爱国吗?当然,首先我自己就对此没有疑问,没有几个个人博客和我一样在页脚挂国徽的,我觉得好看,我要感谢工信部和网安给我过了备案。(前几年就传不在审批个人博客,但是现在还好吧,去年我自己又申请了一个)

More...

Sep. 29, 2019

Visual Studio Code C/C++环境配置

之前想给VS Code搞个C++编译环境,结果看了网上很多教程最后搞得一团糟,最近把参照官方教程终于搞了个差不多。

准备工作

首先准备好VS Code,然后再插件商店安装C/C++插件(https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools)。

安装MinGW

MinGW是个包含GCC和GDB(C/C++的调试器)的开发环境工具包。官网给出得地址是 http://mingw-w64.org/doku.php/download/mingw-builds,进入后点击“Installation: Sourceforge”下载。

下载后打开,Architecture选择x86_64,然后继续。安装目录官方文档不建议放在C:/Program Files/。我放在了C盘根目录下。Next后开始下载文件,下载完成后会在安装位置创建Mingw_w64文件夹,进入Mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin是我们要用到的bin目录。

More...

Sep. 27, 2019

当视野冲破想象

只是一个草稿,传媒技术导论的作业,在这里存个档
Big, bigger than bigger,新的通讯技术,新的显示技术,不断冲击着我们的视野。时至今日,当我们回头去看电视最初的模样,不禁哑然失笑。然而最初那样狭小粗糙的屏幕,却给了当时的人们全新的体验,甚至超过如今4K8K带给我们的感受一样。

More...

Sep. 13, 2019

中秋节记&大学

中传虽然是7号报到,但是之后除了一场英语分级考试、两场小课和开学典礼之外别无他事,知道9月16号中秋节结束之后才开始上课。所以这段时间感觉怪怪的。

尤其是中秋节,因为时间段不打算回家,六个人的宿舍只剩下三个人。没有上课所以也没什么作业,我自己练练字罢了。

More...

Aug. 22, 2019

这个世界越来越魔幻了

我都开始怀疑自己是不是学了假的东西。

Aug. 22, 2019

ownCloud/Nextcloud 清除文件锁

一切从简。解决方法来源: https://help.nextcloud.com/t/file-is-locked-how-to-unlock/1883 。开启维护模式:编辑config/config.php,修改'maintenance' => true, 即开启维护模式。(也可使用OCC命令:php occ maintenance:mode --on

1 进入Nextcloud的数据库,将oc_file_locks表清空:DELETE FROM oc_file_locks WHERE 1

More...

Aug. 14, 2019

一块自留地

放假之后一直在断断续续地学习。618图灵优惠的时候买了好几本书(电子书),目前只看完了《深入理解Python特性》,还是当天看完的,实体书应该也只是一本小册子吧……

一方面是因为我的Kindle,钢化膜+保护壳依然没有逃脱坏屏的悲剧,而换个屏幕跟二手差不多贵。说实话Kindle确实能帮我这种懒得出门买书的人阅读的。(拿着Kindle听音乐躺沙发上看书简直是入眠神技)

More...

Aug. 7, 2019

8/6 15.3 异常

准备换成《C++ Primer》了...

15.3 异常

许多错误是在程序运行时发生的,要想程序更扎实,需要靠靠处理异常。

15.3.1 调用abort()

使用abort()中断程序。

More...

Aug. 5, 2019

8/4 15.1~15.2 C++ 友元、嵌套类

想了好久还是用这种方式水一水了。其实C++ Primer Plus并不适合有编程基础之后去读,不过懒得再找书了。学C++的过程中很尴尬的一点是实践机会不多,这样也能尽可能避免过目就忘的情况,权当笔记,会摘抄书中的一些代码。

More...

Jul. 29, 2019

自制一个简易的电脑状态监视器

效果如图:

这是效果图:

 

前端用js,后端用Python,实现还是比较简单的。

后端用psutil库获得电脑的各项信息然后用WebSocket发给前端,前端再处理到页面上。

前端用Bootstrap框架做出进度条来表示CPU和内存的占用百分比。缓存连续10次的数据,计算出硬盘和网络的流量速度,用echarts显示成折线图。

More...

Jul. 19, 2019

Python3的字节类型(bytes)

Python3在处理一些底层应用时(比如socket编程)会用到字节类型(bytes)。

首先Python2与Python3的字节字符串大有不同,如果不幸看错了教程,那就悲剧了。以下内容均指Python3.

More...

Jul. 8, 2019

Python高级特性 断言 assert

如果觉得自己并不聪明到轻松理解技术书上的内容(尤其是译本),可以在读完一本进阶书籍后,练习一段时间,然后再找另一本相关的书或者其它权威的资料,再读,直至自己的理解与权威的说法一致,写出的代码足够Pythonic同时又不会滥用特性。

More...

Jun. 22, 2019

使用Matplotlab.pyplot绘图时的中文字体问题

在使用Matplotlab绘制图表时,如果标签中包含中文,会显示初方块,这是因为默认的字体中没有包含中文。

可以在代码中手动指定字体:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['STZhongsong']

STZhongsong(华文中宋)即是我们所指定的支持中文的字体。你可以使用自己喜欢的字体。

More...

Jun. 16, 2019

暑假终于开始了!

从今天开始才算是真正地完事了。去了一趟中传,去了一趟山师。

有时候会感觉很不是滋味,因为我原本以为能在最后一段时间多提升一些,结果发现三轮还没开始就结束了。再后悔也晚了,无论如何只是证明我的水平而已,没什么好说的。

More...

Mar. 21, 2019

我失眠了

没有征兆,没有什么特别的地方。11:50左右上床睡觉,在床上躺了几十分钟后感觉到不对劲,毫无困意,一点也没有,熟悉的感觉不在了。

挣扎了三个小时后,现在是凌晨三点。我打开电脑,稍微有点头疼,感觉还好。也许是老天故意要给我一个写点什么东西的机会,否则我可能在很长一段时间之内都不会再打开WP了。

More...

Mar. 16, 2019

Python Websocket服务端

用Python做了个Websocket的服务端,虽然知道相关的库应该早就有了,但是还是想自己做出来。

当然也参考了不少网上的教程,琢磨了好久的Websocket协议的格式。

内含一个WebsocketServer类,可以实现握手、建立连接、心跳(ping)、传输数据、上下文管理器。可以接收任意类型的数据,发送字符串(稍微改一下也可以发送二进制数据),支持数据分片(传输和发送都可以)。

More...

Feb. 10, 2019

将歌词处理成电子书

后端的最后一部分。

  1. # coding=utf-8  
  2. import json  
  3. import re  
  4.   
  5.   
  6. class Lyric2Book:  
  7.     support_format = ['txt', 'html']  
  8.     support_ts = ['parallel', 'chunk']  
  9.     html_template = """ 
  10.     <section> 
  11.         <h2 class='header'>%(header)s</h2> 
  12.             <div class='info'> 
  13.                 <div class='album'>%(album)s</div> 
  14.                 <div class='artists'>%(artists)s</div> 
  15.             </div> 
  16.         <div class='content'> 
  17.             %(lyrics)s 
  18.         </div> 
  19.     </section> 
  20.         """  
  21.     html_frame = """<!DOCTYPE html> 
  22.     <html lang="zh-cn"> 
  23.     <head>  
  24.     <meta charset="utf-8"/> 
  25.     <meta name="viewport" content="width=device-width, initial-scale=1" /> 
  26.     <meta name="referrer" content="never" /> 
  27.     <title>%s</title> 
  28.     </head> 
  29.     <body> 
  30.     %s 
  31.     </body> 
  32.     </html> 
  33.     """  
  34.     lyrics_template = "<div class='content-%(ver)d' >%(content)s</div>"  
  35.     txt_template = "%(header)s\n专辑:%(album)s\n作者:%(artists)s\n\n%(lyrics)s\n\n"  
  36.     txt_frame = "%s\n\n%s"  
  37.   
  38.     def __init__(self, file_format='html', title='Lyrics', typesetting='parallel'):  
  39.         self.title = title  
  40.         if file_format in Lyric2Book.support_format:  
  41.             self.format = file_format  
  42.         else:  
  43.             raise Exception('Unsupported format: %s.' % file_format)  
  44.         self.res = ""  
  45.         self.data = ""  
  46.         if typesetting in Lyric2Book.support_ts:  
  47.             self.ts = typesetting  
  48.         else:  
  49.             raise Exception('Unsupported typesetting: %s' % typesetting)  
  50.   
  51.     def chunk(self, lyrics):  
  52.         predlyric = []  
  53.         # 传入的是多个版本的歌词  
  54.         for item in lyrics:  
  55.             lines = []  
  56.             if item is not None:  
  57.                 # 分行处理  
  58.                 for line in item.split('\n'):  
  59.                     line = re.sub('\(\d+,\d+\)', '', line)  
  60.                     time_tag = ''.join(re.findall('\[.*?\]', line))  
  61.                     line = [time_tag, line.strip(time_tag)]  
  62.                     lines.append(line)  
  63.                 predlyric.append(lines)  
  64.         output_section = ''  
  65.         if self.format == 'html':  
  66.             i = 1  
  67.             for item in predlyric:  
  68.                 output_section += "<div class='content-%d'>\n" % i  
  69.                 i += 1  
  70.                 for line in item:  
  71.                     output_section += "<p><span class='timetag'>%s</span>%s</p> \n" % (re.sub('[\[\]]', '-', line[0]), line[1])  
  72.                 output_section += "</div>"  
  73.         elif self.format == 'txt':  
  74.             for item in predlyric:  
  75.                 output_section += ""  
  76.                 for line in item:  
  77.                     format_tag = '-%s- ' % re.sub('[\[\]]', '-', line[0]) if line[0] else ''  
  78.                     output_section += format_tag + line[1] + '\n'  
  79.         return output_section  
  80.   
  81.     def parallel(self, lyrics):  
  82.         unpredlyric = []  
  83.         for item in lyrics:  
  84.             lines = {}  
  85.             if item is not None:  
  86.                 for line in item.split('\n'):  
  87.                     line = re.sub('\(\d+,\d+\)', '', line)  
  88.                     time_tag = ''.join(re.findall('\[.*?\]', line))  
  89.                     lines[time_tag] = line.strip(time_tag)  
  90.                 unpredlyric.append(lines)  
  91.         predlyric = []  
  92.         for group_tag in list(unpredlyric[0].keys()):  
  93.             predlyric += [[group_tag] + [i.get(group_tag, unpredlyric[0][group_tag]) for i in unpredlyric]]  
  94.         dparallels = predlyric  
  95.         output_section = ''  
  96.         if self.format == 'html':  
  97.             for item in dparallels:  
  98.                 output_section += "<div class='content'>\n"  
  99.                 dtimetag = item[0]  
  100.                 dcontent = item[1::]  
  101.                 item_div = "<div class='timetag'>\n<p>{timetag}</p>\n</div>\n<div class='single-lyric'>\n{content}</div>\n"  
  102.                 output_spar = ''.join("<p class='ver-%d'>%s</p>\n" % (c[0], c[1]) for c in enumerate(dcontent, 1))  
  103.                 output_section += item_div.format(timetag=re.sub('[\[\]]', ' - ', dtimetag), content=output_spar) + '</div>'  
  104.         elif self.format == 'txt':  
  105.             for item in dparallels:  
  106.                 dtimetag = item[0]  
  107.                 dcontent = item[1::]  
  108.                 item_div = "{timetag}\n{content}\n"  
  109.                 output_spar = ''.join("%s\n" % c[1] for c in enumerate(dcontent))  
  110.                 output_section += item_div.format(timetag=re.sub('[\[\]]', ' - ', dtimetag), content=output_spar)  
  111.         return output_section  
  112.   
  113.     def doconv(self, sections):  
  114.         last_album = ''  
  115.         output = ''  
  116.         for item in sections:  
  117.             header = item['name']  
  118.             album = item['album']  
  119.             artists = ','.join(item['artists'])  
  120.             a = item['lyric']  
  121.             if a is not None:  
  122.                 ly_res = {}  
  123.                 lyrics = [a['0'], a['1'], a['2']]  
  124.                 if self.ts == 'parallel':  
  125.                     ly_res = self.parallel(lyrics)  
  126.                 elif self.ts == 'chunk':  
  127.                     ly_res = self.chunk(lyrics)  
  128.                 if self.format == 'html':  
  129.                     if last_album != album:  
  130.                         last_album = album  
  131.                         output += '<h1>%s</h1>' % album  
  132.                     output += Lyric2Book.html_template % {'header': header, 'album': album, 'artists': artists, 'lyrics': ly_res}  
  133.                 elif self.format == 'txt':  
  134.                     if last_album != album:  
  135.                         last_album = album  
  136.                         output += album + '\n\n'  
  137.                     output += Lyric2Book.txt_template % {'header': header, 'album': album, 'artists': artists, 'lyrics': ly_res}  
  138.         self.res = output  
  139.   
  140.     def output(self):  
  141.         filename = self.title + '.' + self.format  
  142.         with open(filename, 'w+', encoding='utf-8') as f:  
  143.             res = self.res  
  144.             if self.format == 'html':  
  145.                 res = Lyric2Book.html_frame % (self.title, res)  
  146.             elif self.format == 'txt':  
  147.                 res = Lyric2Book.txt_frame % (self.title, res)  
  148.             f.write(res)  
  149.   
  150.   
  151. if __name__ == '__main__':  
  152.     with open('bbc.txt', 'r', encoding='utf-8') as file:  
  153.         t = Lyric2Book(file_format='thjxt', title='BBC Documentary', typesetting='parallel')  
  154.         content = json.loads(file.read())  
  155.         t.doconv(content['result'])  
  156.         t.output()  

Feb. 6, 2019

寻找孤独

2019年的春节只有5天,二十八放假,初三上课。

放假前几分钟,我在想我能够做什么做什么,把计划中的事,未做完的事,未计划的事统统完成,大部分都是课外的事。

我确实完成了一些,但有些我却总也走不下去。歌词工具从十月份开始有想法,十一月份真正开始,到现在有三四个月了。借着这个想法我才真正熟悉了Python,后台逻辑其实一个月以前就结束了,一些改进的想法也决定搁置,没有再重构;前端最关键的部分也测试证明可行,然后我就不走了。

More...

Nov. 11, 2018

Python小工具:批量下载网易云音乐歌单/专辑中的歌词

最近想把网易云音乐中的英语听力下载到播放器中,方便随时听。但是只下载音频的话就少了些什么,最好连听力的歌词也下载进去。于是乎写了个小工具,可以批量下载歌单或者专辑中的音乐的歌词,可以省很多时间。

netease-lyric.py

  1. #coding=utf-8  
  2. import requests  
  3. from bs4 import BeautifulSoup  
  4. import json  
  5. import re,os  
  6. from spider import *  
  7. def get_html(url):  
  8.     headers = {  
  9.         'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',  
  10.         'Referer':'http://music.163.com',  
  11.         'Host':'music.163.com'  
  12.     }  
  13.     try:  
  14.         response = requests.get(url,headers=headers)  
  15.         html = response.text  
  16.         return html  
  17.     except:  
  18.         print('request error')  
  19.         pass  
  20.   
  21. def get_lyric(song_id):  
  22.     url = 'http://music.163.com/api/song/lyric?' + 'id=' + str(song_id) + '&lv=1&kv=1&tv=-1'  
  23.     html = get_html(url)  
  24.     json_obj = json.loads(html)  
  25.     print(json_obj)  
  26.     lyric = json_obj['lrc']['lyric']  
  27.     return lyric  
  28.   
  29. def get_details(song_id):  
  30.     url = 'http://music.163.com/api/song/detail/?' + 'id=' + str(song_id) + '&ids=%5B' + str(song_id) + '%5D'  
  31.     html = get_html(url)  
  32.     print(html)  
  33.     json_obj = json.loads(html)  
  34.     song_name = json_obj['songs'][0]['name']  
  35.     song_artist = json_obj['songs'][0]['artists'][0]['name']  
  36.     return song_name,song_artist  
  37.   
  38. def output_file(song_id):  
  39.     song_name,song_artist = get_details(song_id)  
  40.     lyric = get_lyric(song_id)  
  41.     file_name = song_name + ' - ' + song_artist + '.lrc'  
  42.     #替换歌曲名中的斜杠  
  43.     file_name = file_name.replace('/','/')  
  44.     file = open(file_name,"w+",encoding="utf-8")  
  45.     file.writelines(lyric)  
  46.     file.close()  
  47.   
  48. url = "https://music.163.com/album?id=2817001"  
  49. id_list = get_songlist(url)  
  50. print(id_list)  
  51.   
  52. for iterm in id_list:  
  53.     output_file(iterm)  

抓取歌单中的歌曲信息,获得id spider.py

More...

Oct. 20, 2018

我与Esport S8四分之一决赛后 【有的人不配赢】

首先恭喜IG击败LCK头号种子KT,打入四强。

然后,让我们用最饱满的热情恭喜夺冠热门RNG喜提八强,提前回家。

怎么说呢,IG赢KT我的确想到过,但是没有想到IG怎么做才能打赢KT。我曾经想过如果IG能赢KT我要吹IG一辈子,因为今天不仅是S8的四分之一决赛日,也是我的18岁生日。那么现在就是我兑现诺言的时候了。

More...

Oct. 3, 2018

使用Calibre制作书籍目录 Kindle上阅读是章节名始终固定在第一个的问题

最近遇到了几首很好听的歌曲,为了方便,就打算将歌词编辑出来放到Kindle。大概的步骤是先在Word上排好。然后用Calibre转换成Kindle能识别的格式。最初效果很好,抱着Kindle唱歌感觉非常有B格。后来同学也让我查几首歌的歌词放上去,这样歌曲从原来的两三首增加到八首,这样一页一页的翻找就比较费力,于是乎我用Calibre编辑功能为它自动生成了目录,一切和想象中的一样顺利,但是选择目录时却遇到了一件尴尬的事:

More...

Oct. 1, 2018

感冒中度过的混乱的一周

秋凉猛袭,世界似乎在一夜之间变得萧索了,早上出门,迎面而来的是阵阵凉意。夏和秋的分界线变得格外清晰,只是一个晚上,寒流就横扫大地,劫掠走夏天的最后几丝热量,然后君临天下,好不壮阔。接下来,便是阴雨、落叶和阴雨。

More...

Aug. 24, 2018

最后的吟唱

我在忙最后一件事,这几天一直在采购东西,为这最后一件事。

一块2.5寸机械硬盘,已经无力回天,但是控制电路和电机都能用的硬盘。把它拆开,可以看到光洁的盘片,通上电还能盘片还能转动,磁头也能动。浓浓的机械的美感。

More...

Aug. 9, 2018

用Python为树莓派制作一个GPIO控制的音乐播放器

话说最近真是干啥啥不行。

先说背景

手机被收了,只能用树莓派听歌,不过我的派并没有配屏幕……所以最初的方法是:打开电脑->连上VNC->打开树莓派的浏览器访问网易云,虽然能听,但是切歌、调音量都得通过电脑调,很麻烦,而且开着Chromium树莓派发热恐怖。

More...

Jul. 27, 2018

制作Arduino 超声波雷达

关于这个用Arduino做超声波雷达的项目,我在Create Arduino上见过很多次,这里就自己做出来试试。 主要原理是利用超声波测距,然后使用Processing在屏幕上绘制出雷达图,总体比较简单。

成品

More...

Jul. 26, 2018

《我不是药神》的美中不足和国产电影

作为国产片中难得一见的高分电影,《我不是药神》可谓获誉无数。接着出门旅游晚上的空闲,在当地一家影院观赏了这部作品。

一说到国产电影,我对看《让子弹飞》时那种被强行喂屎一般的感觉还让我心有余悸,对国产电影一直敬而远之,不知从什么时候开始,“国产电影”就和“烂片”定下了不解之缘。《我不是药神》总算动摇了这段孽缘。因为我已很久没有看电影了,加上之前在网络上已经看过很多关于《我不是药神》的影评,即使处处小心也被剧透得差不多了,所以这里就不再在演员演技或其他方面说太多了,我和大部分人的观点基本一致。写这篇文章是为了说说《我不是药神》美中不足的一点。

More...

Jun. 18, 2018

Arduino RFID控制的门禁装置

强行发(水)一篇文章。

在官方示例的基础上稍加修改制作的RFID控制的保险盒。 先上代码。

/*
   --------------------------------------------------------------------------------------------------------------------
   Example sketch/program showing An Arduino Door Access Control featuring RFID, EEPROM, Relay
   --------------------------------------------------------------------------------------------------------------------
   This is a MFRC522 library example; for further details and other examples see: https://github.com/miguelbalboa/rfid

   This example showing a complete Door Access Control System

  Simple Work Flow (not limited to) :
                                     +---------+
  +----------------------------------->READ TAGS+^------------------------------------------+
  |                              +--------------------+                                     |
  |                              |                    |                                     |
  |                              |                    |                                     |
  |                         +----v-----+        +-----v----+                                |
  |                         |MASTER TAG|        |OTHER TAGS|                                |
  |                         +--+-------+        ++-------------+                            |
  |                            |                 |             |                            |
  |                            |                 |             |                            |
  |                      +-----v---+        +----v----+   +----v------+                     |
  |         +------------+READ TAGS+---+    |KNOWN TAG|   |UNKNOWN TAG|                     |
  |         |            +-+-------+   |    +-----------+ +------------------+              |
  |         |              |           |                |                    |              |
  |    +----v-----+   +----v----+   +--v--------+     +-v----------+  +------v----+         |
  |    |MASTER TAG|   |KNOWN TAG|   |UNKNOWN TAG|     |GRANT ACCESS|  |DENY ACCESS|         |
  |    +----------+   +---+-----+   +-----+-----+     +-----+------+  +-----+-----+         |
  |                       |               |                 |               |               |
  |       +----+     +----v------+     +--v---+             |               +--------------->
  +-------+EXIT|     |DELETE FROM|     |ADD TO|             |                               |
          +----+     |  EEPROM   |     |EEPROM|             |                               |
                     +-----------+     +------+             +-------------------------------+


   Use a Master Card which is act as Programmer then you can able to choose card holders who will granted access or not

 * **Easy User Interface**

   Just one RFID tag needed whether Delete or Add Tags. You can choose to use Leds for output or Serial LCD module to inform users.

 * **Stores Information on EEPROM**

   Information stored on non volatile Arduino's EEPROM memory to preserve Users' tag and Master Card. No Information lost
   if power lost. EEPROM has unlimited Read cycle but roughly 100,000 limited Write cycle.

 * **Security**
   To keep it simple we are going to use Tag's Unique IDs. It's simple and not hacker proof.

   @license Released into the public domain.

   Typical pin layout used:
   -----------------------------------------------------------------------------------------
               MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
               Reader/PCD   Uno/101       Mega      Nano v3    Leonardo/Micro   Pro Micro
   Signal      Pin          Pin           Pin       Pin        Pin              Pin
   -----------------------------------------------------------------------------------------
   RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST
   SPI SS      SDA(SS)      10            53        D10        10               10
   SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16
   SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14
   SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15
*/

#include <EEPROM.h>     // We are going to read and write PICC's UIDs from/to EEPROM
#include <SPI.h>        // RC522 Module uses SPI protocol
#include <MFRC522.h>  // Library for Mifare RC522 Devices

/*
  Instead of a Relay you may want to use a servo. Servos can lock and unlock door locks too
  Relay will be used by default
*/

#include <Servo.h>


/*
  For visualizing whats going on hardware we need some leds and to control door lock a relay and a wipe button
  (or some other hardware) Used common anode led,digitalWriting HIGH turns OFF led Mind that if you are going
  to use common cathode led or just seperate leds, simply comment out #define COMMON_ANODE,
*/

#define COMMON_ANODE

#ifdef COMMON_ANODE
#define LED_ON LOW
#define LED_OFF HIGH
#else
#define LED_ON HIGH
#define LED_OFF LOW
#endif

constexpr uint8_t redLed = 41;   // Set Led Pins
constexpr uint8_t greenLed = 43;
constexpr uint8_t blueLed = 45;

constexpr uint8_t relay = 4;     // Set Relay Pin
constexpr uint8_t wipeB = 3;     // Button pin for WipeMode

bool programMode = false;  // initialize programming mode to false

uint8_t successRead;    // Variable integer to keep if we have Successful Read from Reader

byte storedCard[4];   // Stores an ID read from EEPROM
byte readCard[4];   // Stores scanned ID read from RFID Module
byte masterCard[4];   // Stores master card's ID read from EEPROM

// Create MFRC522 instance.
constexpr uint8_t RST_PIN = 9;     // Configurable, see typical pin layout above
constexpr uint8_t SS_PIN = 10;     // Configurable, see typical pin layout above
int pos = 0;    // variable to store the servo position
int restpos = 31;
int buttonState=0;
Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards


MFRC522 mfrc522(SS_PIN, RST_PIN);

///////////////////////////////////////// Setup ///////////////////////////////////
void setup() {
  //Arduino Pin Configuration
  pinMode(redLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
  pinMode(blueLed, OUTPUT);
  pinMode(wipeB, INPUT_PULLUP);   // Enable pin's pull up resistor
  pinMode(relay, OUTPUT);
  //Be careful how relay circuit behave on while resetting or power-cycling your Arduino
  digitalWrite(relay, HIGH);    // Make sure door is locked
  digitalWrite(redLed, LED_OFF);  // Make sure led is off
  digitalWrite(greenLed, LED_OFF);  // Make sure led is off
  digitalWrite(blueLed, LED_OFF); // Make sure led is off

  //Protocol Configuration
  Serial.begin(9600);  // Initialize serial communications with PC
  SPI.begin();           // MFRC522 Hardware uses SPI protocol
  mfrc522.PCD_Init();    // Initialize MFRC522 Hardware

  //If you set Antenna Gain to Max it will increase reading distance
  //mfrc522.PCD_SetAntennaGain(mfrc522.RxGain_max);

  Serial.println(F("Access Control Example v0.1"));   // For debugging purposes
  ShowReaderDetails();  // Show details of PCD - MFRC522 Card Reader details

  //Wipe Code - If the Button (wipeB) Pressed while setup run (powered on) it wipes EEPROM
  if (digitalRead(wipeB) == LOW) {  // when button pressed pin should get low, button connected to ground
    digitalWrite(redLed, LED_ON); // Red Led stays on to inform user we are going to wipe
    Serial.println(F("Wipe Button Pressed"));
    Serial.println(F("You have 10 seconds to Cancel"));
    Serial.println(F("This will be remove all records and cannot be undone"));
    bool buttonState = monitorWipeButton(10000); // Give user enough time to cancel operation
    if (buttonState == true && digitalRead(wipeB) == LOW) {    // If button still be pressed, wipe EEPROM
      Serial.println(F("Starting Wiping EEPROM"));
      for (uint16_t x = 0; x < EEPROM.length(); x = x + 1) {    //Loop end of EEPROM address
        if (EEPROM.read(x) == 0) {              //If EEPROM address 0
          // do nothing, already clear, go to the next address in order to save time and reduce writes to EEPROM
        }
        else {
          EEPROM.write(x, 0);       // if not write 0 to clear, it takes 3.3mS
        }
      }
      Serial.println(F("EEPROM Successfully Wiped"));
      digitalWrite(redLed, LED_OFF);  // visualize a successful wipe
      delay(200);
      digitalWrite(redLed, LED_ON);
      delay(200);
      digitalWrite(redLed, LED_OFF);
      delay(200);
      digitalWrite(redLed, LED_ON);
      delay(200);
      digitalWrite(redLed, LED_OFF);
    }
    else {
      Serial.println(F("Wiping Cancelled")); // Show some feedback that the wipe button did not pressed for 15 seconds
      digitalWrite(redLed, LED_OFF);
    }
  }
  // Check if master card defined, if not let user choose a master card
  // This also useful to just redefine the Master Card
  // You can keep other EEPROM records just write other than 143 to EEPROM address 1
  // EEPROM address 1 should hold magical number which is '143'
  if (EEPROM.read(1) != 143) {
    Serial.println(F("No Master Card Defined"));
    Serial.println(F("Scan A PICC to Define as Master Card"));
    do {
      successRead = getID();            // sets successRead to 1 when we get read from reader otherwise 0
      digitalWrite(blueLed, LED_ON);    // Visualize Master Card need to be defined
      delay(200);
      digitalWrite(blueLed, LED_OFF);
      delay(200);
    }
    while (!successRead);                  // Program will not go further while you not get a successful read
    for ( uint8_t j = 0; j < 4; j++ ) {        // Loop 4 times
      EEPROM.write( 2 + j, readCard[j] );  // Write scanned PICC's UID to EEPROM, start from address 3
    }
    EEPROM.write(1, 143);                  // Write to EEPROM we defined Master Card.
    Serial.println(F("Master Card Defined"));
  }
  Serial.println(F("-------------------"));
  Serial.println(F("Master Card's UID"));
  for ( uint8_t i = 0; i < 4; i++ ) {          // Read Master Card's UID from EEPROM
    masterCard[i] = EEPROM.read(2 + i);    // Write it to masterCard
    Serial.print(masterCard[i], HEX);
  }
  Serial.println("");
  Serial.println(F("-------------------"));
  Serial.println(F("Everything is ready"));
  Serial.println(F("Waiting PICCs to be scanned"));
  cycleLeds();    // Everything ready lets give user some feedback by cycling leds
  pinMode(restpos, INPUT_PULLUP);
   myservo.attach(8);
}


///////////////////////////////////////// Main Loop ///////////////////////////////////
void loop () {
  do {
    successRead = getID();  // sets successRead to 1 when we get read from reader otherwise 0
    // When device is in use if wipe button pressed for 10 seconds initialize Master Card wiping
    if (digitalRead(wipeB) == LOW) { // Check if button is pressed
      // Visualize normal operation is iterrupted by pressing wipe button Red is like more Warning to user
      digitalWrite(redLed, LED_ON);  // Make sure led is off
      digitalWrite(greenLed, LED_OFF);  // Make sure led is off
      digitalWrite(blueLed, LED_OFF); // Make sure led is off
      // Give some feedback
      Serial.println(F("Wipe Button Pressed"));
      Serial.println(F("Master Card will be Erased! in 10 seconds"));
      bool buttonState = monitorWipeButton(10000); // Give user enough time to cancel operation
      if (buttonState == true && digitalRead(wipeB) == LOW) {    // If button still be pressed, wipe EEPROM
        EEPROM.write(1, 0);                  // Reset Magic Number.
        Serial.println(F("Master Card Erased from device"));
        Serial.println(F("Please reset to re-program Master Card"));
        while (1);
      }
      Serial.println(F("Master Card Erase Cancelled"));
    }
    if (programMode) {
      cycleLeds();              // Program Mode cycles through Red Green Blue waiting to read a new card
    }
    else {
      normalModeOn();     // Normal mode, blue Power LED is on, all others are off
    }
  }
  while (!successRead);   //the program will not go further while you are not getting a successful read
  if (programMode) {
    if ( isMaster(readCard) ) { //When in program mode check First If master card scanned again to exit program mode
      Serial.println(F("Master Card Scanned"));
      Serial.println(F("Exiting Program Mode"));
      Serial.println(F("-----------------------------"));
      programMode = false;
      return;
    }
    else {
      if ( findID(readCard) ) { // If scanned card is known delete it
        Serial.println(F("I know this PICC, removing..."));
        deleteID(readCard);
        Serial.println("-----------------------------");
        Serial.println(F("Scan a PICC to ADD or REMOVE to EEPROM"));
      }
      else {                    // If scanned card is not known add it
        Serial.println(F("I do not know this PICC, adding..."));
        writeID(readCard);
        Serial.println(F("-----------------------------"));
        Serial.println(F("Scan a PICC to ADD or REMOVE to EEPROM"));
      }
    }
  }
  else {
    if ( isMaster(readCard)) {    // If scanned card's ID matches Master Card's ID - enter program mode
      programMode = true;
      Serial.println(F("Hello Master - Entered Program Mode"));
      uint8_t count = EEPROM.read(0);   // Read the first Byte of EEPROM that
      Serial.print(F("I have "));     // stores the number of ID's in EEPROM
      Serial.print(count);
      Serial.print(F(" record(s) on EEPROM"));
      Serial.println("");
      Serial.println(F("Scan a PICC to ADD or REMOVE to EEPROM"));
      Serial.println(F("Scan Master Card again to Exit Program Mode"));
      Serial.println(F("-----------------------------"));
    }
    else {
      if ( findID(readCard) ) { // If not, see if the card is in the EEPROM
        Serial.println(F("Welcome, You shall pass"));
        granted(300);         // Open the door lock for 300 ms
      }
      else {      // If not, show that the ID was not valid
        Serial.println(F("You shall not pass"));
        denied();
      }
    }
  }
}

/////////////////////////////////////////  Access Granted    ///////////////////////////////////
void granted ( uint16_t setDelay) {
  digitalWrite(blueLed, LED_OFF);   // Turn off blue LED
  digitalWrite(redLed, LED_OFF);  // Turn off red LED
  digitalWrite(greenLed, LED_ON);   // Turn on green LED
  /*
  digitalWrite(relay, LOW);     // Unlock door!
  delay(setDelay);          // Hold door lock open for given seconds
  digitalWrite(relay, HIGH);    // Relock door
  */
  myservo.write(180);
  delay(2000);            // Hold green LED on for a second
  myservo.write(90);
  delay(1000);            // Hold green LED on for a second
}

///////////////////////////////////////// Access Denied  ///////////////////////////////////
void denied() {
  digitalWrite(greenLed, LED_OFF);  // Make sure green LED is off
  digitalWrite(blueLed, LED_OFF);   // Make sure blue LED is off
  digitalWrite(redLed, LED_ON);   // Turn on red LED
  delay(1000);
}


///////////////////////////////////////// Get PICC's UID ///////////////////////////////////
uint8_t getID() {
  // Getting ready for Reading PICCs
  if ( ! mfrc522.PICC_IsNewCardPresent()) { //If a new PICC placed to RFID reader continue
    return 0;
  }
  if ( ! mfrc522.PICC_ReadCardSerial()) {   //Since a PICC placed get Serial and continue
    return 0;
  }
  // There are Mifare PICCs which have 4 byte or 7 byte UID care if you use 7 byte PICC
  // I think we should assume every PICC as they have 4 byte UID
  // Until we support 7 byte PICCs
  Serial.println(F("Scanned PICC's UID:"));
  for ( uint8_t i = 0; i < 4; i++) {  //
    readCard[i] = mfrc522.uid.uidByte[i];
    Serial.print(readCard[i], HEX);
  }
  Serial.println("");
  mfrc522.PICC_HaltA(); // Stop reading
  return 1;
}

void ShowReaderDetails() {
  // Get the MFRC522 software version
  byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg);
  Serial.print(F("MFRC522 Software Version: 0x"));
  Serial.print(v, HEX);
  if (v == 0x91)
    Serial.print(F(" = v1.0"));
  else if (v == 0x92)
    Serial.print(F(" = v2.0"));
  else
    Serial.print(F(" (unknown),probably a chinese clone?"));
  Serial.println("");
  // When 0x00 or 0xFF is returned, communication probably failed
  if ((v == 0x00) || (v == 0xFF)) {
    Serial.println(F("WARNING: Communication failure, is the MFRC522 properly connected?"));
    Serial.println(F("SYSTEM HALTED: Check connections."));
    // Visualize system is halted
    digitalWrite(greenLed, LED_OFF);  // Make sure green LED is off
    digitalWrite(blueLed, LED_OFF);   // Make sure blue LED is off
    digitalWrite(redLed, LED_ON);   // Turn on red LED
    while (true); // do not go further
  }
}

///////////////////////////////////////// Cycle Leds (Program Mode) ///////////////////////////////////
void cycleLeds() {
  digitalWrite(redLed, LED_OFF);  // Make sure red LED is off
  digitalWrite(greenLed, LED_ON);   // Make sure green LED is on
  digitalWrite(blueLed, LED_OFF);   // Make sure blue LED is off
  delay(200);
  digitalWrite(redLed, LED_OFF);  // Make sure red LED is off
  digitalWrite(greenLed, LED_OFF);  // Make sure green LED is off
  digitalWrite(blueLed, LED_ON);  // Make sure blue LED is on
  delay(200);
  digitalWrite(redLed, LED_ON);   // Make sure red LED is on
  digitalWrite(greenLed, LED_OFF);  // Make sure green LED is off
  digitalWrite(blueLed, LED_OFF);   // Make sure blue LED is off
  delay(200);
}

//////////////////////////////////////// Normal Mode Led  ///////////////////////////////////
void normalModeOn () {
  digitalWrite(blueLed, LED_ON);  // Blue LED ON and ready to read card
  digitalWrite(redLed, LED_OFF);  // Make sure Red LED is off
  digitalWrite(greenLed, LED_OFF);  // Make sure Green LED is off
  digitalWrite(relay, HIGH);    // Make sure Door is Locked
}

//////////////////////////////////////// Read an ID from EEPROM //////////////////////////////
void readID( uint8_t number ) {
  uint8_t start = (number * 4 ) + 2;    // Figure out starting position
  for ( uint8_t i = 0; i < 4; i++ ) {     // Loop 4 times to get the 4 Bytes
    storedCard[i] = EEPROM.read(start + i);   // Assign values read from EEPROM to array
  }
}

///////////////////////////////////////// Add ID to EEPROM   ///////////////////////////////////
void writeID( byte a[] ) {
  if ( !findID( a ) ) {     // Before we write to the EEPROM, check to see if we have seen this card before!
    uint8_t num = EEPROM.read(0);     // Get the numer of used spaces, position 0 stores the number of ID cards
    uint8_t start = ( num * 4 ) + 6;  // Figure out where the next slot starts
    num++;                // Increment the counter by one
    EEPROM.write( 0, num );     // Write the new count to the counter
    for ( uint8_t j = 0; j < 4; j++ ) {   // Loop 4 times
      EEPROM.write( start + j, a[j] );  // Write the array values to EEPROM in the right position
    }
    successWrite();
    Serial.println(F("Succesfully added ID record to EEPROM"));
  }
  else {
    failedWrite();
    Serial.println(F("Failed! There is something wrong with ID or bad EEPROM"));
  }
}

///////////////////////////////////////// Remove ID from EEPROM   ///////////////////////////////////
void deleteID( byte a[] ) {
  if ( !findID( a ) ) {     // Before we delete from the EEPROM, check to see if we have this card!
    failedWrite();      // If not
    Serial.println(F("Failed! There is something wrong with ID or bad EEPROM"));
  }
  else {
    uint8_t num = EEPROM.read(0);   // Get the numer of used spaces, position 0 stores the number of ID cards
    uint8_t slot;       // Figure out the slot number of the card
    uint8_t start;      // = ( num * 4 ) + 6; // Figure out where the next slot starts
    uint8_t looping;    // The number of times the loop repeats
    uint8_t j;
    uint8_t count = EEPROM.read(0); // Read the first Byte of EEPROM that stores number of cards
    slot = findIDSLOT( a );   // Figure out the slot number of the card to delete
    start = (slot * 4) + 2;
    looping = ((num - slot) * 4);
    num--;      // Decrement the counter by one
    EEPROM.write( 0, num );   // Write the new count to the counter
    for ( j = 0; j < looping; j++ ) {         // Loop the card shift times
      EEPROM.write( start + j, EEPROM.read(start + 4 + j));   // Shift the array values to 4 places earlier in the EEPROM
    }
    for ( uint8_t k = 0; k < 4; k++ ) {         // Shifting loop
      EEPROM.write( start + j + k, 0);
    }
    successDelete();
    Serial.println(F("Succesfully removed ID record from EEPROM"));
  }
}

///////////////////////////////////////// Check Bytes   ///////////////////////////////////
bool checkTwo ( byte a[], byte b[] ) {   
  for ( uint8_t k = 0; k < 4; k++ ) {   // Loop 4 times
    if ( a[k] != b[k] ) {     // IF a != b then false, because: one fails, all fail
       return false;
    }
  }
  return true;  
}

///////////////////////////////////////// Find Slot   ///////////////////////////////////
uint8_t findIDSLOT( byte find[] ) {
  uint8_t count = EEPROM.read(0);       // Read the first Byte of EEPROM that
  for ( uint8_t i = 1; i <= count; i++ ) {    // Loop once for each EEPROM entry
    readID(i);                // Read an ID from EEPROM, it is stored in storedCard[4]
    if ( checkTwo( find, storedCard ) ) {   // Check to see if the storedCard read from EEPROM
      // is the same as the find[] ID card passed
      return i;         // The slot number of the card
    }
  }
}

///////////////////////////////////////// Find ID From EEPROM   ///////////////////////////////////
bool findID( byte find[] ) {
  uint8_t count = EEPROM.read(0);     // Read the first Byte of EEPROM that
  for ( uint8_t i = 1; i < count; i++ ) {    // Loop once for each EEPROM entry
    readID(i);          // Read an ID from EEPROM, it is stored in storedCard[4]
    if ( checkTwo( find, storedCard ) ) {   // Check to see if the storedCard read from EEPROM
      return true;
    }
    else {    // If not, return false
    }
  }
  return false;
}

///////////////////////////////////////// Write Success to EEPROM   ///////////////////////////////////
// Flashes the green LED 3 times to indicate a successful write to EEPROM
void successWrite() {
  digitalWrite(blueLed, LED_OFF);   // Make sure blue LED is off
  digitalWrite(redLed, LED_OFF);  // Make sure red LED is off
  digitalWrite(greenLed, LED_OFF);  // Make sure green LED is on
  delay(200);
  digitalWrite(greenLed, LED_ON);   // Make sure green LED is on
  delay(200);
  digitalWrite(greenLed, LED_OFF);  // Make sure green LED is off
  delay(200);
  digitalWrite(greenLed, LED_ON);   // Make sure green LED is on
  delay(200);
  digitalWrite(greenLed, LED_OFF);  // Make sure green LED is off
  delay(200);
  digitalWrite(greenLed, LED_ON);   // Make sure green LED is on
  delay(200);
}

///////////////////////////////////////// Write Failed to EEPROM   ///////////////////////////////////
// Flashes the red LED 3 times to indicate a failed write to EEPROM
void failedWrite() {
  digitalWrite(blueLed, LED_OFF);   // Make sure blue LED is off
  digitalWrite(redLed, LED_OFF);  // Make sure red LED is off
  digitalWrite(greenLed, LED_OFF);  // Make sure green LED is off
  delay(200);
  digitalWrite(redLed, LED_ON);   // Make sure red LED is on
  delay(200);
  digitalWrite(redLed, LED_OFF);  // Make sure red LED is off
  delay(200);
  digitalWrite(redLed, LED_ON);   // Make sure red LED is on
  delay(200);
  digitalWrite(redLed, LED_OFF);  // Make sure red LED is off
  delay(200);
  digitalWrite(redLed, LED_ON);   // Make sure red LED is on
  delay(200);
}

///////////////////////////////////////// Success Remove UID From EEPROM  ///////////////////////////////////
// Flashes the blue LED 3 times to indicate a success delete to EEPROM
void successDelete() {
  digitalWrite(blueLed, LED_OFF);   // Make sure blue LED is off
  digitalWrite(redLed, LED_OFF);  // Make sure red LED is off
  digitalWrite(greenLed, LED_OFF);  // Make sure green LED is off
  delay(200);
  digitalWrite(blueLed, LED_ON);  // Make sure blue LED is on
  delay(200);
  digitalWrite(blueLed, LED_OFF);   // Make sure blue LED is off
  delay(200);
  digitalWrite(blueLed, LED_ON);  // Make sure blue LED is on
  delay(200);
  digitalWrite(blueLed, LED_OFF);   // Make sure blue LED is off
  delay(200);
  digitalWrite(blueLed, LED_ON);  // Make sure blue LED is on
  delay(200);
}

////////////////////// Check readCard IF is masterCard   ///////////////////////////////////
// Check to see if the ID passed is the master programing card
bool isMaster( byte test[] ) {
    return checkTwo(test, masterCard);
}

bool monitorWipeButton(uint32_t interval) {
  uint32_t now = (uint32_t)millis();
  while ((uint32_t)millis() - now < interval)  {
    // check on every half a second
    if (((uint32_t)millis() % 500) == 0) {
      if (digitalRead(wipeB) != LOW)
        return false;
    }
  }
  return true;
}

复杂的地方在于连线,代码中已经标明了连接方式,注意Arduino Mega要把REST和SDA分别连接到9和10针脚上,代码中已经标注了。 第一次使用需要打开Arduino IDE的串口监视器,按照上面的信息录入管理员卡和授权访问的卡。 具体的效果是这样的:

More...

Jun. 3, 2018

Config.php参数详解-2

'user_backends' => array(
        array(
                'class' => 'OC_User_IMAP',
                'arguments' => array('{imap.gmail.com:993/imap/ssl}INBOX')
        )
),

user_backends插件(app)允许您配置备用身份验证后端。支持的后端有:IMAP (OC_User_IMAP), SMB (OC_User_SMB), and FTP (OC_User_FTP)。

'lost_password_link' => 'https://example.org/link/to/password/reset',

如果你的用户后端不允许重设密码(比如像LDAP这样的只读后端),你可以设置一个自定义链接,当用户登录失败后,会在下方给出这个链接,供用户跳转。 如果你不想提供任何密码重设的链接,可以将URL换成‘disabled’

More...

May. 27, 2018

泄密的心·The Tell-Tale Heart(Edgar Allan Poe 爱伦·坡)中英双语

The Tell-Tale Heart

by Edgar Allan Poe

[caption id=“attachment_3212” align=“alignright” width=“300”] The Tell Tale Heart[/caption]

True! –nervous –very, very dreadfully nervous I had been and am; but why will you say that I am mad? The disease had sharpened my senses –not destroyed –not dulled them. Above all was the sense of hearing acute. I heard all things in the heaven and in the earth. I heard many things in hell. How, then, am I mad? Hearken! and observe how healthily –how calmly I can tell you the whole story.

More...

May. 19, 2018

Nextcloud反向代理的相关配置说明

可以对Nextcloud配置反向代理,使反向代理服务缓存诸如图片、CSS、JS这样的静态文件,或将处理HTTPS请求的负载转移到其他服务器上,也可以利用多台服务器配置负载平衡。

参数格式

下文中所介绍的参数需要添加到config/config.php文件中的$CONFIG = array (...)中才可生效,格式遵守PHP数组的语法,为:
 'value',
  'parameters_2' => ['value_1','value_2'],
  ...
);

定义可信代理

安全起见,你必须为Nextcloud指定可以信赖的反向代理服务器。来自可信代理的请求将会被做特殊处理以获取客户端的真实信息,确保访问控制和日志不会出错。相关的参数可以在config/config.php中设置。

trusted_proxies参数设置为包含代理服务器IP地址的数组,以定义Nextcloud可以信任的代理服务器。此参数可防止客户端受到欺骗,您应像保护您的Nextcloud服务器一样保护这些服务器。

More...

May. 6, 2018

Config.php参数详解-1

Nextcloud使用config/config.php文件来控制服务端的运行。config/config.sample.php示例文件中列出了所有可配置的参数,包括示例和默认值。本文将对这些参数进行更细致的讲解。其中大多数参数都可以在管理页面配置,所以如果你想修改一项配置,没必要非得去编辑config/config.php

More...

May. 5, 2018

Arduino控制LED灯闪亮顺序(个人感觉代码很渣)

想要实现的功能:

 

能够控制一个三色LED灯颜色亮起来的顺序
好像很简单,巧了,我也这么觉得。

然而,搞了半天发现自己的水平真的不行,勉勉强强把功能实现了:

int pinbtn[3]={26,30,34};
int pinled[3]={53,51,49};
int recbtn=22;
int data[3]={};
int rec[3]={};
void setup() {
  // put your setup code here, to run once:
  //pinMode(pin1,INPUT);
  //pinMode(pin2,INPUT);
  //pinMode(pin3,INPUT);
  for (int i=0;i<=2;i++){
    pinMode(pinbtn[i],INPUT);
    pinMode(pinled[i],OUTPUT);
  }
  Serial.begin(9600);
  pinMode(recbtn,INPUT);
  pinMode(13,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  if(digitalRead(recbtn)){
   digitalWrite(13,HIGH);
   for(int i=0;i<=2;i++){
    Serial.print("The ");
    Serial.print(i+1);
    Serial.println(" LED: ");
    digitalWrite(13,LOW);
    delay(50);
    digitalWrite(13,HIGH);
    delay(1000);
    for(int j=0;j<=2;j++){
      if(digitalRead(pinbtn[j])){
        rec[i]=j+1;
      }
     }
   }
  Serial.println(".");
  delay(500);
  digitalWrite(13,LOW);
  Serial.println("Time to see the MAGIC!!!!");
  delay(2000);
  }
  for(int i=0;i<=2;i++){
    Serial.print(rec[i]);

  }
  Serial.println(",");
  for(int i = 0;i<=2;i++){
    digitalWrite(pinled[rec[i]-1],HIGH);
    delay(200);
    digitalWrite(pinled[rec[i]-1],LOW);
    delay(200);
  }
 
}

使用方法:

More...

Apr. 30, 2018

【书·纪】书是读给自己的

  • 书是读给自己的,这本书的对于你的好坏,你是最有发言权的人。

《我是猫》

来自夏目漱石的作品。《我是猫》最初被发表《杜鹃》期刊上连载,一共三部。

起初我以为《我是猫》想要以猫的视角抒写猫的生活,就像《笑猫日记》那样的童话式小说。小说的开头的确是这样,然而不到一章之后,内容就从猫的生活转到了主人苦沙弥一家的生活。大篇幅的语言描写占据了本书的主要情节,还有相当多的议论和说明,有时语言描写之多,作者还吝于提示,搞得我常常弄混说话者。

More...

Apr. 22, 2018

【书·纪】两部科幻作品 《三体》和《遗落的南境:湮灭》

最近想到创建一个这样的新目录,单篇的书评或者读后感不好写,就以日志/笔记的形式写下来。目录名为“书·纪”。

与其担心我能坚持写几篇笔记而犹豫不决,不如直接开工,万事开头难嘛。

《三体》

无知与弱小不是生存的障碍,傲慢才是。

——《三体》

More...

Apr. 15, 2018

Nextcloud 登录后提示'服务器内部错误'

前两天帮别人处理了一个问题,环境是CentOS,在更新时出了一点小问题,虽然Nextcloud升级到了13.01,访问登录页面时显示正常,但是登录后却显示“服务器内部错误”。查看日志,发现记录“JSCombiner:can not cache Merge.js”

More...

Apr. 1, 2018

Nextcloud上的一些常见报错及解决方案

注:本文翻译自General troubleshooting ,仅接受翻译上的问题。

如果你在安装、配置、维护Nextcloud时出现问题,可以从下面的渠道寻找解决方案:

官方渠道(英文):

[ssbluelist]
  • The Nextcloud Forums Nextcloud官方论坛,论坛中有一个FAQ页面,里面罗列了一些常见的错误。
  • The Nextcloud IRC chat channel irc://#nextcloud@freenode.net Nextcloud官方聊天室,支持webchat访问。
[/ssbluelist]

其它:

[ssbluelist]
  • QQ群:1:534777566(我建的群,因为我平时时间少,这个群活跃度低一些)
  • QQ群:2:578094274(这个群比较活跃,讨论的人多一些,和这个群的群主一比我真是懒得没边)
  • 橙叶论坛:https://forum.orgleaf.com 刚建起来,人还很少,用的是和官方论坛一样的程序,请多支持。
[/ssbluelist]

Bug反馈

如果你认为你找到了一个Nextcloud的Bug,可以:

[ssbluelist]

More...

Mar. 25, 2018

孩子的故事·The Child's Story(Charles Dickens 查尔斯·狄更斯)英语

The Child’s Story


The Child’s Story (1852) is a parable about life’s journey, in which a traveller asks all he meets, “What do you do here?” and they invite him to join them, until it’s time to move on.

《孩子的故事》(1852)是关于人生旅程的寓言:一位旅行者问他遇到的每一个人:“你在这儿做些什么?”,他们邀请他加入,直到他离开。

More...

Mar. 18, 2018

Arduino笔记3·PWM的原理和效果

在笔记1中提到了PWM,PWM实现了使用数字信号控制模拟电路的功能。

笔记2中则演示了制作电压表的过程,原理十分简单,而且得到了可视化的输出(SerialChart)。那么我们可以用电压表功能来一窥PWM。

More...

Mar. 11, 2018

Arduino笔记2:模拟信号输入及实例

用Arduino做电压表其实是对模拟输入的最简单且最基本的应用,Arduino的模拟输入接口可以输入0~5v的电压,分辨率为1024级,比较精确,但是因为原理与真正的电压表有所不同,所以还是别用它完全替代电压表。

More...

Feb. 21, 2018

记录一下部署Discourse论坛的过程

Discourse 是 Stack Overflow 的联合创始人 Jeff Atwood 推出的一个新的开源论坛项目,其目的是为了改变十年未变的论坛软件。它摒弃了传统论坛的话题讨论形式、拥有自学习系统、全Web应用同时适用于桌面和移动终端。
[infobox]本文不是一篇严格的教程,仅为记录技术信息,仅供参考[/infobox]

硬件环境

实际安装前在本地用虚拟机测试了一下,安装所耗费的资源不算少,4GB的内存几乎跑满,所以内存还是要足够的,至少1GB。

考虑到需要使用的配置稍高一些,而Vultr和AWS的账户余额已罄,手头上只有这台2CPU 4GB的ECS,就只好用它了。

More...

Feb. 15, 2018

Nextcloud 加密功能的配置

Nextcloud服务器端加密的主要目的是保护用户的Dropbox和Google Drive等远程存储上的文件,并在Nextcloud内部轻松无缝地执行此操作。 在Nextcloud 9.0中,服务器端加密分离了本地和远程存储的加密。这使您可以加密Dropbox和Google等远程存储,而无需在您的Nextcloud服务器上加密您的家庭存储。

More...

Feb. 3, 2018

解决ownCloud“事务文件锁定应配置为使用基于内存的锁定”错误+Docker环境处理方法

很久之前就有人问我ownCloud安装完成后的一项警告:

[warningbox]事务文件锁定应配置为使用基于内存的锁定,而不是默认的基于慢速数据库的锁定。[/warningbox]

在后台管理页面是这样显示的:

More...

Jan. 28, 2018

【BBC国家短篇小说奖】THE EDGE OF SHOAL 浅滩边缘(Cynan Jones)英文全文

很奇怪我一直在翻找之前的作家的文章,比如欧亨利、马克吐温之类的,其实国外的现代短篇小说也不见得差,搞得好像年代越久文学价值越高一样。

这篇短篇小说THE EDGE OF SHOAL 浅滩边缘(暂译)获得了BBC全国短篇小说奖,国内基本上没什么信息,于是搬运于此。计划于以后自己尝试翻译。

More...

Jan. 21, 2018

Arduino笔记1:基本概念整理+点亮第一个LED

话说我的Arduino UNO R3自从买回来就一直在桌子上当小摆件放着,最近陆续有一些用到Arduino的想法,索性从头开始慢慢地边学边记。

初次碰Arduino,反正我的感觉是无从下手。虽然Arduino的级别算是入门中的入门,但是对刚刚接触它的我来说,真正了解还是需要一番功夫的。以下是几点我对Arduino的初步了解,很基础,不过也是很重要的,至少让我不再犯懵。

More...

Jan. 11, 2018

为有素材而写素材,算不得编的?

因为最近时间紧任务重,技术性教程恐怕要下周了。这周就先分享一下我遇到的一件事。

今天看一本作文素材书,而然瞄到一篇有关乔布斯的,看完我就是这个感觉:

这个故事带着浓浓的素材风……讲述的是“苹果”成立初期,给一个国际公司安装50台电脑,然后有一个员工没把螺丝拧紧,被亲自检查的“乔布斯”发现了,为此全员开会、讲大道理,当众开掉那位员工,还把那台电脑永远摆在办公桌上……

More...

Jan. 7, 2018

Nextcloud APP(插件):GPX路线预览工具

在结伴旅游前,可能会事先规划行程路线,那么自己规划好的路线怎样与别人分享呢?这些应用应该可以帮助你在Nextcloud上分享、编辑GPX格式的路线规划,帮助你更好的规划行程。首先,来了解一下GPX格式:

More...

Dec. 31, 2017

ownCloud/Nextcloud MIME类型管理

我们知道,在Web中,一个文件的类型并不取决于它的后缀名,而是取决于它的MIME类型。在使用ownCloud/Nextcloud中,我们有时会上传一些类型不常见的文件,而默认的,ownCloud/Nextcloud并不会识别这个文件,仅仅是把它当作一个未知的文件对待,像下面这样:

More...

Dec. 31, 2017

我与C++的二三事

1.阶乘?阶乘的和?

题目:计算n个数的阶乘之和。
OK,那么,阶乘是什么东西????

阶乘即n!=1234567*………*n,很像数列的前n项和变成了前n项乘积。

那我直接按算前n项和的方法算阶乘就行咯:

  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.     int n,s=1;
  5.     cin >> n;
  6.     for (int i=1;i<=n;i++)
  7.         s*=i!;
  8.     return 0;
  9. }
然而……C++和我一样不知道i!是什么玩意。所以,我必须自己得出阶乘。

阶乘的算法其实很简单,按数列的思路就可以得到。就是分别得到出1~n,然后将他们循环相乘就可以了:

More...

Dec. 24, 2017

ownCloud/Nextcloud文件访问控制(Files Access Control)

事实上这是一个插件(APP),也是ownCloud/Nextcloud的一项重要功能:文件访问控制。文件访问控制APP可以提供丰富强大的访问管理功能,从单文件权限到组文件,再到IP地址屏蔽,可以引用访问的时间、文件类型、用户、组等因素。

More...

Dec. 16, 2017

Nextcloud 13 Beta:LDAP提速85%,Windows网络驱动器提速10倍

导语:本文来自Nextcloud对于Nextcloud13的介绍。Nextcloud强大的功能和安全性让它运行缓慢,而这一点正不断地得到改进,在Nextcloud 13中的主打更新除了我们已经谈过的端对端加密,还有就是本文所谈到的速度的提升。
我知道,这个标题似乎很疯狂,而这仅仅只是beta版本。你应该已经看到了所发布的即将到来的Nextcloud13的点对点加密特性 的草稿,而这里是对即将到来的内容的另一个窥探:速度和容载量。

 

More...

Dec. 9, 2017

做自己的超级英雄:我与漫威

[caption id="" align=“alignright” width=“325”]复仇者联盟3:无限战争 复仇者联盟3:无限战争[/caption]

前不久,漫威发布了《复仇者联盟3·无限战争》的先导预告,几分钟的时长却足以使漫威的粉丝们睡不着觉。而我也辗转许久,脑子里不是复仇者们,而是两年前那个满脑子复仇者的我。

More...

Dec. 2, 2017

Nextcloud默认文件的自定义

在完成Nextcloud安装后,或者创建了一个新用户之后,(该用户)的根目录下就会出现这些目录和文件:

在Nextcloud尚未安装时,这些文件存放在core/skeleton目录中,在安装或创建用户时,这些文件将会被自动复制到data/目录中,所以在如果用户删除这些文件的话,是不会影响到core/skeleton中的原文件的。

More...

Nov. 26, 2017

私有云笔记服务:Leanote(蚂蚁笔记)

Leanote是我前段时间发现的一款云笔记程序。我也觉得应当介绍下Nextcloud/ownCloud之外的东西,而Leanote似乎值得关注。按照官网的介绍,蚂蚁笔记 = 笔记 + 博客 + 协作 + 私有云,并且提供了多平台的客户端,那么,实际体验又如何呢?我们拭目以待。

More...

Nov. 18, 2017

解决CentOS中安装Nextcloud出现“内部服务器错误”

这个问题困扰了其他人包括我很长时间了:当我们在CentOS中安装好httpd、php,将Nextcloud程序解压进网站根目录,然后访问——

[errorbox]

内部服务器错误

服务器发生一个内部错误并且无法完成你的请求. 如果多次出现这个错误, 请联系服务器管理员, 请把下面的技术细节包含在您的报告中. 更多细节可以在服务器日志中找到. [/errorbox]

More...

Nov. 12, 2017

即将到来的Nextcloud13 新特性:端到端加密

端到端加密是即将到来的Nextcloud13的主打功能,允许用户为文件(夹)设置自己的密码,并对文件(夹)进行高安全的加密。 以下是官方介绍:

Nextcloud features an enterprise-grade, seamlessly integrated solution for end-to-end encryption. Currently in proof-of-concept phase and scheduled to be part of Nextcloud 13, it enables users to pick one or more folders on their desktop or mobile client for end-to-end encryption. Folders can be shared with other users and synced between devices but are not readable by the server. Nextcloud采用企业级,无缝集成的端到端加密解决方案。目前处于概念验证阶段并计划成为Nextcloud 13的一部分,它使用户能够在桌面或移动客户端上选择一个或多个文件夹进行端到端加密。文件夹可以与其他用户共享并在设备之间同步,但不能被服务器读取。
Nextcloud端到端的加密技术使服务器无需看到数据,同时仍然可以促进设备之间的同步以及与其他用户的共享。它不会通过使用基于浏览器的解密来降低安全性,具有安全的密钥管理功能,因此用户不必交换密码,也不需要重新加密大文件以添加或删除访问权限,而且具有重要的企业功能,如离线恢复密钥和硬件安全模块(HSM)支持。

有些读者可能要问了,加密不是Nextcloud早就有的功能吗? 以我的理解,Nextcloud现有的加密功能基于服务端的配置。加密是由服务端的拥有者来操作,这也意味着,解密也可以由服务端的拥有者来操作,对于用户来说这显然是不安全的。而端到端加密则解决了这个问题,密钥由用户设置,由Nextcloud自行配置加密,服务端的拥有者无法干预,当然也无法读取服务端已被加密的文件了。 同时,无缝集成和易用性以及脱机恢复密钥,审计和HSM支持等关键功能使Nextcloud端到端加密成为其他Nextcloud安全功能(包括服务器端加密和文件访问控制)的完美补充。

More...

Nov. 5, 2017

LDAP集成Nextcloud 部署教程

介绍

LDAP是一种轻量目录访问协议,可以以树状的层次结构存储数据。常用于信息的集中存放、单点登录等等。 在实际环境中,Nextcloud往往会与其它应用混合使用,而Nextcloud中的用户与其它的用户系统是独立的,也就需要另行添加一个账户,较为繁琐,也容易出现两个应用中用户无法对应的情况,平添了管理的难度。 Nextcloud自带了LDAP user and group backend插件,可以将LDAP整合至Nextcloud,实现使用LDAP中存储的用户信息在Nextcloud上登录。

More...

Oct. 29, 2017

Nextcloud/ownCloud上传大于512MB的文件的相关配置

在正常情况下,Nextcloud的默认的最大上传限制为512MB,在你的的文件系统和操作系统允许的前提下,你可以提升这一限制。换一种说法,能上传的最大文件的大小还取决于你的浏览器和操作系统:

[ssbluelist]

  • 32位系统可上传小于2GB的文件
  • IE6~IE8可上传小于2GB的文件
  • IE9~IE11可上传小于4GB的文件
[/ssbluelist]

在64位系统中允许上传更大的文件,具体能上传多大仍然取决于你的操作系统的版本。

More...

Oct. 22, 2017

树莓派 X 墨水屏 :高逼格的电子时钟 添加百度统计功能

很久之前就看到了有位大佬利用树莓派和墨水屏做出了个电子时钟,逼格比液晶屏不知道高到哪里去了,反观我……,于是决定模仿一波,以提高自己的姿势水平。为了保证不两眼一摸黑,在买之前先仔细学习了两位大佬的文章、产品文档、串口的使用方法……,确认能够上手后才买了下来。

More...

Oct. 15, 2017

Nextcloud自动配置-适用于批量安装

如果Nextcloud需要安装在多台服务器上,按通常的步骤,你需要对多台服务器分别做配置和部署。即使借助命令行安装的方式,工作量也不小。为了解决这个问题,可以使用Nextcloud提供的自动配置功能。通过编辑 

More...

Oct. 7, 2017

Nextcloud安全及设置警告:PHP 的组件 OPcache 没有正确配置

不知从何时开始,apt-get安装的php的opcache组件默认禁用了。也许是Nextcloud的问题,无论如何,你都会在管理页面看到这样的警告(红色大括号处):

正确地配置OPcache有利于提升Nextcloud的性能。这个问题要通过修改php.ini来解决。

More...

Oct. 4, 2017

装在套子里的人·Человек в футляре(Антон Павлович Чехов 安东·帕夫洛维奇·契诃夫)汉俄英三语

Человек в футляре


[ssbluelist]

  • А. П. Чехов. Полное собрание сочинений и писем в тридцати томах
  •  Сочинения в восемнадцати томах.
  • Том десятый   МОСКВА -- 1  
  • ИЗДАТЕЛЬСТВО "НАУКА"  
[/ssbluelist] На самом краю села Мироносицкого, в сарае старосты Прокофия расположились на ночлег запоздавшие охотники. Их было только двое: ветеринарный врач Иван Иваныч и учитель гимназии Буркин. У Ивана Иваныча была довольно странная, двойная фамилия -- Чимша-Гималайский, которая совсем не шла ему, и его во всей губернии звали просто по имени и отчеству; он жил около города на конском заводе и приехал теперь на охоту, чтобы подышать чистым воздухом. Учитель же гимназии Буркин каждое лето гостил у графов П. и в этой местности давно уже был своим человеком.   Не спали. Иван Иваныч, высокий, худощавый старик с длинными усами, сидел снаружи у входа и курил трубку; его освещала луна. Буркин лежал внутри на сене, и его не было видно в потемках.   Рассказывали разные истории. Между прочим говорили о том, что жена старосты, Мавра, женщина здоровая и не глупая, во всю свою жизнь нигде не была дальше своего родного села, никогда не видела ни города, ни железной дороги, а в последние десять лет всё сидела за печью и только по ночам выходила на улицу.   -- Что же тут удивительного! -- сказал Буркин. -- Людей, одиноких по натуре, которые, как рак-отшельник или улитка, стараются уйти в свою скорлупу, на этом свете не мало. Быть может, тут явление атавизма, возвращение к тому времени, когда предок человека не был еще общественным животным и жил одиноко в своей берлоге, а может быть, это просто одна из разновидностей человеческого характера, -- кто знает? Я не естественник и не мое дело касаться подобных вопросов; я только хочу сказать, что такие люди, как Мавра, явление не редкое. Да вот, недалеко искать, месяца два назад умер у нас в городе некий Беликов, учитель греческого языка, мой товарищ. Вы о нем слышали, конечно. Он был замечателен тем, что всегда, даже в очень хорошую погоду, выходил в калошах и с зонтиком и непременно в теплом пальто на вате. И зонтик у него был в чехле, и часы в чехле из серой замши, и когда вынимал перочинный нож, чтобы очинить карандаш, то и нож у него был в чехольчике; и лицо, казалось, тоже было в чехле, так как он всё время прятал его в поднятый воротник. Он носил темные очки, фуфайку, уши закладывал ватой, и когда садился на извозчика, то приказывал поднимать верх. Одним словом, у этого человека наблюдалось постоянное и непреодолимое стремление окружить себя оболочкой, создать себе, так сказать, футляр, который уединил бы его, защитил бы от внешних влияний. Действительность раздражала его, пугала, держала в постоянной тревоге, и, быть может, для того, чтобы оправдать эту свою робость, свое отвращение к настоящему, он всегда хвалил прошлое и то, чего никогда не было; и древние языки, которые он преподавал, были для него, в сущности, те же калоши и зонтик, куда он прятался от действительной жизни.   -- О, как звучен, как прекрасен греческий язык! -- говорил он со сладким выражением; и, как бы в доказательство своих слов, прищурив глаз и подняв палец, произносил: -- Антропос!   И мысль свою Беликов также старался запрятать в футляр. Для него были ясны только циркуляры и газетные статьи, в которых запрещалось что-нибудь. Когда в циркуляре запрещалось ученикам выходить на улицу после девяти часов вечера или в какой-нибудь статье запрещалась плотская любовь, то это было для него ясно, определенно; запрещено -- и баста. В разрешении же и позволении скрывался для него всегда элемент сомнительный, что-то недосказанное и смутное. Когда в городе разрешали драматический кружок, или читальню, или чайную, то он покачивал головой и говорил тихо:   -- Оно, конечно, так-то так, всё это прекрасно, да как бы чего не вышло.   Всякого рода нарушения, уклонения, отступления от правил приводили его в уныние, хотя, казалось бы, какое ему дело? Если кто из товарищей опаздывал на молебен, или доходили слухи о какой-нибудь проказе гимназистов, или видели классную даму поздно вечером с офицером, то он очень волновался и всё говорил, как бы чего не вышло. А на педагогических советах он просто угнетал нас своею осторожностью, мнительностью и своими чисто футлярными соображениями насчет того, что вот-де в мужской и женской гимназиях молодежь ведет себя дурно, очень шумит в классах, -- ах, как бы не дошло до начальства, ах, как бы чего не вышло, -- и что если б из второго класса исключить Петрова, а из четвертого -- Егорова, то было бы очень хорошо. И что же? Своими вздохами, нытьем, своими темными очками на бледном, маленьком лице, -- знаете, маленьком лице, как у хорька, -- он давил нас всех, и мы уступали, сбавляли Петрову и Егорову балл по поведению, сажали их под арест и в конце концов исключали и Петрова, и Егорова. Было у него странное обыкновение -- ходить по нашим квартирам. Придет к учителю, сядет и молчит и как будто что-то высматривает. Посидит, этак, молча, час-другой и уйдет. Это называлось у него "поддерживать добрые отношения с товарищами", и, очевидно, ходить к нам и сидеть было для него тяжело, и ходил он к нам только потому, что считал своею товарищескою обязанностью. Мы, учителя, боялись его. И даже директор боялся. Вот подите же, наши учителя народ всё мыслящий, глубоко порядочный, воспитанный на Тургеневе и Щедрине, однако же этот человечек, ходивший всегда в калошах и с зонтиком, держал в руках всю гимназию целых пятнадцать лет! Да что гимназию? Весь город! Наши дамы по субботам домашних спектаклей не устраивали, боялись, как бы он не узнал; и духовенство стеснялось при нем кушать скоромное и играть в карты. Под влиянием таких людей, как Беликов, за последние десять -- пятнадцать лет в нашем городе стали бояться всего. Боятся громко говорить, посылать письма, знакомиться, читать книги, боятся помогать бедным, учить грамоте...   Иван Иваныч, желая что-то сказать, кашлянул, но сначала закурил трубку, поглядел на луну и потом уже сказал с расстановкой:   -- Да. Мыслящие, порядочные, читают и Щедрина, и Тургенева, разных там Боклей и прочее, а вот подчинились же, терпели... То-то вот оно и есть.   -- Беликов жил в том же доме, где и я, -- продолжал Буркин, -- в том же этаже, дверь против двери, мы часто виделись, и я знал его домашнюю жизнь. И дома та же история: халат, колпак, ставни, задвижки, целый ряд всяких запрещений, ограничений, и -- ах, как бы чего не вышло! Постное есть вредно, а скоромное нельзя, так как, пожалуй, скажут, что Беликов не исполняет постов, и он ел судака на коровьем масле, -- пища не постная, но и нельзя сказать, чтобы скоромная. Женской прислуги он не держал из страха, чтобы о нем не думали дурно, а держал повара Афанасия, старика лет шестидесяти, нетрезвого и полоумного, который когда-то служил в денщиках и умел кое-как стряпать. Этот Афанасий стоял обыкновенно у двери, скрестив руки, и всегда бормотал одно и то же, с глубоким вздохом:   -- Много уж их нынче развелось!   Спальня у Беликова была маленькая, точно ящик, кровать была с пологом. Ложась спать, он укрывался с головой; было жарко, душно, в закрытые двери стучался ветер, в печке гудело; слышались вздохи из кухни, вздохи зловещие...   И ему было страшно под одеялом. Он боялся, как бы чего не вышло, как бы его не зарезал Афанасий, как бы не забрались воры, и потом всю ночь видел тревожные сны, а утром, когда мы вместе шли в гимназию, был скучен, бледен, и было видно, что многолюдная гимназия, в которую он шел, была страшна, противна всему существу его и что идти рядом со мной ему, человеку по натуре одинокому, было тяжко.   -- Очень уж шумят у нас в классах, -- говорил он, как бы стараясь отыскать объяснения своему тяжелому чувству. -- Ни на что не похоже.   И этот учитель греческого языка, этот человек в футляре, можете себе представить, едва не женился.   Иван Иваныч быстро оглянулся в сарай и сказал:   -- Шутите!   -- Да, едва не женился, как это ни странно. Назначили к нам нового учителя истории и географии, некоего Коваленко, Михаила Саввича, из хохлов. Приехал он не один, а с сестрой Варенькой. Он молодой, высокий, смуглый, с громадными руками, и по лицу видно, что говорит басом, и в самом деле, голос как из бочки: бу-бу-бу... А она уже не молодая, лет тридцати, но тоже высокая, стройная, чернобровая, краснощекая, -- одним словом, не девица, а мармелад, и такая разбитная, шумная, всё поет малороссийские романсы и хохочет. Чуть что, так и зальется голосистым смехом: ха-ха-ха! Первое, основательное знакомство с Коваленками у нас, помню, произошло на именинах у директора. Среди суровых, напряженно скучных педагогов, которые и на именины-то ходят по обязанности, вдруг видим, новая Афродита возродилась из пены: ходит подбоченясь, хохочет, поет, пляшет... Она спела с чувством "Виют витры", потом еще романс, и еще, и всех нас очаровала, -- всех, даже Беликова. Он подсел к ней и сказал, сладко улыбаясь:   -- Малороссийский язык своею нежностью и приятною звучностью напоминает древнегреческий.   Это польстило ей, и она стала рассказывать ему с чувством и убедительно, что в Гадячском уезде у нее есть хутор, а на хуторе живет мамочка, и там такие груши, такие дыни, такие кабаки! У хохлов тыквы называются кабаками, а кабаки шинками, и варят у них борщ с красненькими и с синенькими "такой вкусный, такой вкусный, что просто -- ужас!"   Слушали мы, слушали, и вдруг всех нас осенила одна и та же мысль.   -- А хорошо бы их поженить, -- тихо сказала мне директорша.   Мы все почему-то вспомнили, что наш Беликов не женат, и нам теперь казалось странным, что мы до сих пор как-то не замечали, совершенно упускали из виду такую важную подробность в его жизни. Как вообще он относится к женщине, как он решает для себя этот насущный вопрос? Раньше это не интересовало нас вовсе; быть может, мы не допускали даже и мысли, что человек, который во всякую погоду ходит в калошах и спит под пологом, может любить.   -- Ему давно уже за сорок, а ей тридцать... -- пояснила свою мысль директорша. -- Мне кажется, она бы за него пошла.   Чего только не делается у нас в провинции от скуки, сколько ненужного, вздорного! И это потому, что совсем не делается то, что нужно. Ну вот к чему нам вдруг понадобилось женить этого Беликова, которого даже и вообразить нельзя было женатым? Директорша, инспекторша и все наши гимназические дамы ожили, даже похорошели, точно вдруг увидели цель жизни. Директорша берет в театре ложу, и смотрим -- в ее ложе сидит Варенька с этаким веером, сияющая, счастливая, и рядом с ней Беликов, маленький, скрюченный, точно его из дому клещами вытащили. Я даю вечеринку, и дамы требуют, чтобы я непременно пригласил и Беликова и Вареньку. Одним словом, заработала машина. Оказалось, что Варенька не прочь была замуж. Жить ей у брата было не очень-то весело, только и знали, что по целым дням спорили и ругались. Вот вам сцена: идет Коваленко по улице, высокий, здоровый верзила, в вышитой сорочке, чуб из-под фуражки падает на лоб; в одной руке пачка книг, в другой толстая суковатая палка. За ним идет сестра, тоже с книгами.   -- Да ты же, Михайлик, этого не читал! -- спорит она громко. -- Я же тебе говорю, клянусь, ты не читал же этого вовсе!   -- А я тебе говорю, что читал! -- кричит Коваленко, гремя палкой по тротуару.   -- Ах же, боже ж мой, Минчик! Чего же ты сердишься, ведь у нас же разговор принципиальный.   -- А я тебе говорю, что я читал! -- кричит еще громче Коваленко.   А дома, как кто посторонний, так и перепалка. Такая жизнь, вероятно, наскучила, хотелось своего угла, да и возраст принять во внимание; тут уж перебирать некогда, выйдешь за кого угодно, даже за учителя греческого языка. И то сказать, для большинства наших барышень за кого ни выйти, лишь бы выйти. Как бы ни было, Варенька стала оказывать нашему Беликову явную благосклонность.   А Беликов? Он и к Коваленку ходил так же, как к нам. Придет к нему, сядет и молчит. Он молчит, а Варенька поет ему "Виют витры", или глядит на него задумчиво своими темными глазами, или вдруг зальется:   -- Ха-ха-ха!   В любовных делах, а особенно в женитьбе, внушение играет большую роль. Все -- и товарищи, и дамы -- стали уверять Беликова, что он должен жениться, что ему ничего больше не остается в жизни, как жениться; все мы поздравляли его, говорили с важными лицами разные пошлости, вроде того-де, что брак есть шаг серьезный; к тому же Варенька была недурна собой, интересна, она была дочь статского советника и имела хутор, а главное, это была первая женщина, которая отнеслась к нему ласково, сердечно, -- голова у него закружилась, и он решил, что ему в самом деле нужно жениться.   -- Вот тут бы и отобрать у него калоши и зонтик, -- проговорил Иван Иваныч.   -- Представьте, это оказалось невозможным. Он поставил у себя на столе портрет Вареньки и всё ходил ко мне и говорил о Вареньке, о семейной жизни, о том, что брак есть шаг серьезный, часто бывал у Коваленков, но образа жизни не изменил нисколько. Даже наоборот, решение жениться подействовало на него как-то болезненно, он похудел, побледнел и, казалось, еще глубже ушел в свой футляр.   -- Варвара Саввишна мне нравится, -- говорил он мне со слабой кривой улыбочкой, -- и я знаю, жениться необходимо каждому человеку, но... всё это, знаете ли, произошло как-то вдруг... Надо подумать.   -- Что же тут думать? -- говорю ему. -- Женитесь, вот и всё.   -- Нет, женитьба -- шаг серьезный, надо сначала взвесить предстоящие обязанности, ответственность... чтобы потом чего не вышло. Это меня так беспокоит, я теперь все ночи не сплю. И, признаться, я боюсь: у нее с братом какой-то странный образ мыслей, рассуждают они как-то, знаете ли, странно, и характер очень бойкий. Женишься, а потом, чего доброго, попадешь в какую-нибудь историю.   И он не делал предложения, всё откладывал, к великой досаде директорши и всех наших дам; всё взвешивал предстоящие обязанности и ответственность, и между тем почти каждый день гулял с Варенькой, быть может, думал, что это так нужно в его положении, и приходил ко мне, чтобы поговорить о семейной жизни. И, по всей вероятности, в конце концов он сделал бы предложение и совершился бы один из тех ненужных, глупых браков, каких у нас от скуки и от нечего делать совершаются тысячи, если бы вдруг не произошел kolossalischeSkandal. Нужно сказать, что брат Вареньки, Коваленко, возненавидел Беликова с первого же дня знакомства и терпеть его не мог.   -- Не понимаю, -- говорил он нам, пожимая плечами, -- не понимаю, как вы перевариваете этого фискала, эту мерзкую рожу. Эх, господа, как вы можете тут жить! Атмосфера у вас удушающая, поганая. Разве вы педагоги, учителя? Вы чинодралы, у вас не храм науки, а управа благочиния, и кислятиной воняет, как в полицейской будке. Нет, братцы, поживу с вами еще немного и уеду к себе на хутор, и буду там раков ловить и хохлят учить. Уеду, а вы оставайтесь тут со своим Иудой, нехай вин лопне.   Или он хохотал, хохотал до слез, то басом, то тонким писклявым голосом, и спрашивал меня, разводя руками:   -- Шо он у меня сидить? Шо ему надо? Сидить и смотрить.   Он даже название дал Беликову "глитай абож паук". И, понятно, мы избегали говорить с ним о том, что сестра его Варенька собирается за "абож паука". И когда однажды директорша намекнула ему, что хорошо бы пристроить его сестру за такого солидного, всеми уважаемого человека, как Беликов, то он нахмурился и проворчал:   -- Не мое это дело. Пускай она выходит хоть за гадюку, а я не люблю в чужие дела мешаться.   Теперь слушайте, что дальше. Какой-то проказник нарисовал карикатуру: идет Беликов в калошах, в подсученных брюках, под зонтом, и с ним под руку Варенька; внизу подпись: "влюбленный антропос". Выражение схвачено, понимаете ли, удивительно. Художник, должно быть, проработал не одну ночь, так как все учителя мужской и женской гимназий, учителя семинарии, чиновники, -- все получили по экземпляру. Получил и Беликов. Карикатура произвела на него самое тяжелое впечатление.   Выходим мы вместе из дому, -- это было как раз первое мая, воскресенье, и мы все, учителя и гимназисты, условились сойтись у гимназии и потом вместе идти пешком за город в рощу, -- выходим мы, а он зеленый, мрачнее тучи.   -- Какие есть нехорошие, злые люди! -- проговорил он, и губы у него задрожали.   Мне даже жалко его стало. Идем, и вдруг, можете себе представить, катит на велосипеде Коваленко, а за ним Варенька, тоже на велосипеде, красная, заморенная, но веселая, радостная.   -- А мы, -- кричит она, -- вперед едем! Уже ж такая хорошая погода, такая хорошая, что просто ужас!   И скрылись оба. Мой Беликов из зеленого стал белым и точно оцепенел. Остановился и смотрит на меня...   -- Позвольте, что же это такое? -- спросил он. -- Или, быть может, меня обманывает зрение? Разве преподавателям гимназии и женщинам прилично ездить на велосипеде?   -- Что же тут неприличного? -- сказал я. -- И пусть катаются себе на здоровье.   -- Да как же можно? -- крикнул он, изумляясь моему спокойствию. -- Что вы говорите?!   И он был так поражен, что не захотел идти дальше и вернулся домой.   На другой день он всё время нервно потирал руки и вздрагивал, и было видно по лицу, что ему нехорошо. И с занятий ушел, что случилось с ним первый раз в жизни. И не обедал. А под вечер оделся потеплее, хотя на дворе стояла совсем летняя погода, и поплелся к Коваленкам. Вареньки не было дома, застал он только брата.   -- Садитесь, покорнейше прошу, -- проговорил Коваленко холодно и нахмурил брови; лицо у него было заспанное, он только что отдыхал после обеда и был сильно не в духе.   Беликов посидел молча минут десять и начал:   -- Я к вам пришел, чтоб облегчить душу. Мне очень, очень тяжело. Какой-то пасквилянт нарисовал в смешном виде меня и еще одну особу, нам обоим близкую. Считаю долгом уверить вас, что я тут ни при чем... Я не подавал никакого повода к такой насмешке, -- напротив же, всё время вел себя как вполне порядочный человек.   Коваленко сидел, надувшись, и молчал. Беликов подождал немного и продолжал тихо, печальным голосом:   -- И еще я имею кое-что сказать вам. Я давно служу, вы же только еще начинаете службу, и я считаю долгом, как старший товарищ, предостеречь вас. Вы катаетесь на велосипеде, а эта забава совершенно неприлична для воспитателя юношества.   -- Почему же? -- спросил Коваленко басом.   -- Да разве тут надо еще объяснять, Михаил Саввич, разве это не понятно? Если учитель едет на велосипеде, то что же остается ученикам? Им остается только ходить на головах! И раз это не разрешено циркулярно, то и нельзя. Я вчера ужаснулся! Когда я увидел вашу сестрицу, то у меня помутилось в глазах. Женщина или девушка на велосипеде -- это ужасно!   -- Что же собственно вам угодно?   -- Мне угодно только одно -- предостеречь вас, Михаил Саввич. Вы -- человек молодой, у вас впереди будущее, надо вести себя очень, очень осторожно, вы же так манкируете, ох, как манкируете! Вы ходите в вышитой сорочке, постоянно на улице с какими-то книгами, а теперь вот еще велосипед. О том, что вы и ваша сестрица катаетесь на велосипеде, узнает директор, потом дойдет до попечителя... Что же хорошего?   -- Что я и сестра катаемся на велосипеде, никому нет до этого дела! -- сказал Коваленко и побагровел. -- А кто будет вмешиваться в мои домашние и семейные дела, того я пошлю к чертям собачьим.   Беликов побледнел и встал.   -- Если вы говорите со мной таким тоном, то я не могу продолжать, -- сказал он. -- И прошу вас никогда так не выражаться в моем присутствии о начальниках. Вы должны с уважением относиться к властям.   -- А разве я говорил что дурное про властей? -- спросил Коваленко, глядя на него со злобой. -- Пожалуйста, оставьте меня в покое. Я честный человек и с таким господином, как вы, не желаю разговаривать. Я не люблю фискалов.   Беликов нервно засуетился и стал одеваться быстро, с выражением ужаса на лице. Ведь это первый раз в жизни он слышал такие грубости.   -- Можете говорить, что вам угодно, -- сказал он, выходя из передней на площадку лестницы. -- Я должен только предупредить вас: быть может, нас слышал кто-нибудь, и, чтобы не перетолковали нашего разговора и чего-нибудь не вышло, я должен буду доложить господину директору содержание нашего разговора... в главных чертах. Я обязан это сделать.   -- Доложить? Ступай, докладывай!   Коваленко схватил его сзади за воротник и пихнул, и Беликов покатился вниз по лестнице, гремя своими калошами. Лестница была высокая, крутая, но он докатился донизу благополучно; встал и потрогал себя за нос: целы ли очки? Но как раз в то время, когда он катился по лестнице, вошла Варенька и с нею две дамы; они стояли внизу и глядели -- и для Беликова это было ужаснее всего. Лучше бы, кажется, сломать себе шею, обе ноги, чем стать посмешищем; ведь теперь узнает весь город, дойдет до директора, попечителя, -- ах, как бы чего не вышло! -- нарисуют новую карикатуру, и кончится всё это тем, что прикажут подать в отставку...   Когда он поднялся, Варенька узнала его и, глядя на его смешное лицо, помятое пальто, калоши, не понимая, в чем дело, полагая, что это он упал сам нечаянно, не удержалась и захохотала на весь дом:   -- Ха-ха-ха!   И этим раскатистым, заливчатым "ха-ха-ха" завершилось всё: и сватовство, и земное существование Беликова. Уже он не слышал, что говорила Варенька, и ничего не видел. Вернувшись к себе домой, он прежде всего убрал со стола портрет, а потом лег и уже больше не вставал.   Дня через три пришел ко мне Афанасий и спросил, не надо ли послать за доктором, так как-де с барином что-то делается. Я пошел к Беликову. Он лежал под пологом, укрытый одеялом, и молчал; спросишь его, а он только да или нет -- и больше ни звука. Он лежит, а возле бродит Афанасий, мрачный, нахмуренный, и вздыхает глубоко; а от него водкой, как из кабака.   Через месяц Беликов умер. Хоронили мы его все, то есть обе гимназии и семинария. Теперь, когда он лежал в гробу, выражение у него было кроткое, приятное, даже веселое, точно он был рад, что наконец его положили в футляр, из которого он уже никогда не выйдет. Да, он достиг своего идеала! И как бы в честь его во время похорон была пасмурная, дождливая погода, и все мы были в калошах и с зонтами. Варенька тоже была на похоронах и, когда гроб опускали в могилу, всплакнула. Я заметил, что хохлушки только плачут пли хохочут, среднего же настроения у них не бывает.   Признаюсь, хоронить таких людей, как Беликов, это большое удовольствие. Когда мы возвращались с кладбища, то у нас были скромные постные физиономии; никому не хотелось обнаружить этого чувства удовольствия, -- чувства, похожего на то, какое мы испытывали давно-давно, еще в детстве, когда старшие уезжали из дому и мы бегали по саду час-другой, наслаждаясь полною свободой. Ах, свобода, свобода! Даже намек, даже слабая надежда на ее возможность дает душе крылья, не правда ли?   Вернулись мы с кладбища в добром расположении. Но прошло не больше недели, и жизнь потекла по-прежнему, такая же суровая, утомительная, бестолковая, жизнь, не запрещенная циркулярно, но и не разрешенная вполне; не стало лучше. И в самом деле, Беликова похоронили, а сколько еще таких человеков в футляре осталось, сколько их еще будет!   -- То-то вот оно и есть, -- сказал Иван Иваныч и закурил трубку.   -- Сколько их еще будет! -- повторил Буркин.   Учитель гимназии вышел из сарая. Это был человек небольшого роста, толстый, совершенно лысый, с черной бородой чуть не по пояс; и с ним вышли две собаки.   -- Луна-то, луна! -- сказал он, глядя вверх.   Была уже полночь. Направо видно было всё село, длинная улица тянулась далеко, верст на пять. Всё было погружено в тихий, глубокий сон; ни движения, ни звука, даже не верится, что в природе может быть так тихо. Когда в лунную ночь видишь широкую сельскую улицу с ее избами, стогами, уснувшими ивами, то на душе становится тихо; в этом своем покое, укрывшись в ночных тенях от трудов, забот и горя, она кротка, печальна, прекрасна, и кажется, что и звезды смотрят на нее ласково и с умилением и что зла уже нет на земле и всё благополучно. Налево с края села начиналось поле; оно было видно далеко, до горизонта, и во всю ширь этого поля, залитого лунным светом, тоже ни движения, ни звука.   -- То-то вот оно и есть, -- повторил Иван Иваныч. -- А разве то, что мы живем в городе в духоте, в тесноте, пишем ненужные бумаги, играем в винт -- разве это не футляр? А то, что мы проводим всю жизнь среди бездельников, сутяг, глупых, праздных женщин, говорим и слушаем разный вздор -- разве это не футляр? Вот если желаете, то я расскажу вам одну очень поучительную историю.   -- Нет, уж пора спать, -- сказал Буркин. -- До завтра!   Оба пошли в сарай и легли на сене. И уже оба укрылись и задремали, как вдруг послышались легкие шаги: туп, туп... Кто-то ходил недалеко от сарая; пройдет немного и остановится, а через минуту опять: туп, туп... Собаки заворчали.   -- Это Мавра ходит, -- сказал Буркин.   Шаги затихли.   -- Видеть и слышать, как лгут, -- проговорил Иван Иваныч, поворачиваясь на другой бок, -- и тебя же называют дураком за то, что ты терпишь эту ложь; сносить обиды, унижения, не сметь открыто заявить, что ты на стороне честных, свободных людей, и самому лгать, улыбаться, и всё это из-за куска хлеба, из-за теплого угла, из-за какого-нибудь чинишка, которому грош цена, -- нет, больше жить так невозможно!   -- Ну, уж это вы из другой оперы, Иван Иваныч, -- сказал учитель. -- Давайте спать.   И минут через десять Буркин уже спал. А Иван Иваныч всё ворочался с боку на бок и вздыхал, а потом встал, опять вышел наружу и, севши у дверей, закурил трубочку.

ПРИМЕЧАНИЯ

More...

Sep. 30, 2017

记录在树莓派上编译安装LNMP环境全过程

树莓派体积小巧,但也限制了其性能。这使得在树莓派上只能选择资源占用较小的服务。如果用作HTTP服务器,Apache+MySQL就未免太臃肿了。在这里,推荐的配合是Nginx+MairaDB

1.准备

设备:树莓派3 Model B

系统:raspbian

More...

Sep. 24, 2017

【非软文】我为什么又用回了又拍云

在博客迁至阿里云后,使用了阿里云的OSS存储和CDN功能,毕竟阿里云有强大的云栖社区,OSS的文档、SDK也比较完备。

但是就在最近一个月,我开始不得不从来不放在心上的CDN费用。

自从服务器迁到了阿里云,静态文件存储也转入了OSS。动静分离是加速Web服务的绝好的方法,无论是在服务端还是在用户端。博客刚开始主机还在海外的时候用的是又拍云的云存储服务。但是由于网络的问题,加速效果也不是很明显,迁入阿里云后自然就抛弃了。

More...

Sep. 17, 2017

ocDownloader 配置Nextcloud离线下载功能

一直以来Nextcloud/ownCloud的离线下载都是大家所期盼的功能,而ocDownloader插件原项目已有两年未更新。现在ocDownloader在Github已由维护。作者给出的教程略坑,那么下面我们来看看如何使用这个插件(App)

介绍

ocDownloader是一个基于AGPL协议的Nextcloud插件(应用),允许用户使用Aria2/Curl/youtube从HTTP(S)/FTP(S)/Youtube/Bittorrent等协议离线下载文件。

使用教程

安装ocDownloader插件

到GitHub或Nextcloud Apps下载ocDownloader插件:

[ssbluelist]

More...

Sep. 10, 2017

夜莺与玫瑰·THE NIGHTINGALE AND THE ROSE(Oscar Wilde 奥斯卡·王尔德)英汉双语

Wilde, Oscar (1854-1900) - An Irish-born English poet, novelist, and playwright. Considered an eccentric, he was the leader of the aesthetic movement that advocated “art for art’s sake” and was once imprisoned for two years with hard labor for homosexual practices. The Nightingale and the Rose (1888) - A fairy tale about a nightingale who presses her breast against a thorn until a rose is born.

THE NIGHTINGALE AND THE ROSE

by Oscar Wilde

[caption id=“attachment_2737” align=“alignright” width=“356”] 夜莺与玫瑰·THE NIGHTINGALE AND THE ROSE[/caption]

More...

Sep. 9, 2017

使用命令行安装Nextcloud

Nextcloud和我们熟悉的很多php程序一样,可以通过Web页面完成安装。但是在Web页面安装可能会遭到不怀好意的人干扰,而且在安装时刷新或者关闭浏览器都可能会造成安装失败。所以你可以选择更稳妥的使用OCC命令安装Nextcloud。

More...

Sep. 2, 2017

ownCloud/Nextcloud OCC命令行工具详解(3)

occ命令是ownCloud/Nextcloud的命令行界面。您可以使用occ执行许多常见的服务器操作,例如安装和升级ownCloud/Nextcloud,管理用户,加密,密码,LDAP设置等。

OCC命令行工具详解

[ssbluelist]

More...

Aug. 31, 2017

构建你的家庭数据中心——在树莓派上搭建Syncloud(支持Nextcloud/ownCloud)

Syncloud是一个支持Nextcloud的家用服务器的开源系统。 它易于安装和激活各种功能,支持10种不同类型的主板,可轻松使用外部硬盘驱动器进行存储,设备名称和通过Internet访问设备,自动设置HTTPS和更多的应用程序。

More...

Aug. 28, 2017

《岛上书店》 一则美妙、动人的故事

无人为孤岛,一书一世界


这本书本来是不在计划内的,我从语文报上得知了它。如果没有那段选文,我也许只会一带而过,但当我将那一段明快、灵动的文字读完后,我觉得我该找到这本书。

这本书提醒了我们,爱与被爱的能力、付出与接受的意愿,能拯救陷于孤独绝境中的我们。一则美妙、动人的故事,关于人生的救赎与转化,他会在你胸中回荡许久许久。

——《我在雨中等你》作者加思·斯坦

More...

Aug. 25, 2017

将ownCloud迁移至Nextcloud的两种方法

如我们所知,现在仍然可以将Nextcloud和ownCloud看作一个东西,至少核心功能是相差无几的。这也使你可以将ownCloud更换为Nextcloud而不必操心兼容性。本文提供了两种迁移ownCloud至Nextcloud的方法。

More...

Aug. 21, 2017

聊聊网盘的过去和未来

网盘的兴起大约在2012年,那时我接触的第一个网盘服务是酷盘,酷盘后来被阿里收购,然后被阿里砍掉。那时国内的网盘还比较收敛,初始容量只有8GB,额外容量价格很高。

后来买了个华为的手机就用了华为云,容量已经忘了,现在华为网盘也关闭了。

More...

Aug. 15, 2017

【承上启下】Docker所知总结 Docker+Nginx架构详解

关于

这是我近期有关Nextcloud/ownCloud的最后一篇文章了,我也是时候进入下一个阶段了。短短一年来,有关的教程也写了六七十篇,自己也觉得有些疲倦。接下来,我的关注点将是服务器后端知识,也就是说我将更少地写些浅显的东西。这篇文章算是给过去我的所学做个收尾,也给接下来的学习起个头。

More...

Aug. 9, 2017

使用Docker部署ONLYOFFICE Document Server

上一篇文章介绍了在Ubuntu/Debian系统中安装ONLYOFFICE的文档服务器,步骤还是稍微有些复杂的,而且不适用于CentOS/RedHat一类的系统。相比之下,如果借助Docker来部署的话就省事多了。

More...

Aug. 2, 2017

为Nextcloud安装ONLYOFFICE Document Server

使用Nextcloud的过程中,不免要浏览、编辑一些Office文档(Word、PPT、Excel等等)。之前已经谈到借助Collabora Online实现,当然,除了Collabora Online之外,还可以使用ONLYOFFICE的文档服务Document Server。本文讲解如何在Ubuntu/Debian系统上正确部署ONLYOFFICE Document Server。

More...

Jul. 28, 2017

ownCloud/Nextcloud快速部署VMWare虚拟机

ownCloud、Nextcloud都提供了已经配置完毕的的虚拟机,方便快速部署Nextcloud/ownCloud。

本文以VMware为例。你可以使用VMware Workstation或者VMware Workstation Player

More...

Jul. 28, 2017

在CentOS7上使用Nginx和PHP7-FPM安装Nextcloud

一直以来我都强烈建议各位使用LAMP环境,因为这似乎是最合适的选择。但是Apache在内存占用和并发能力方面并不是那么尽人意,相比之下Nginx更加优秀。本文将介绍如何在CentOS7系统上部署LNMP环境并安装Nextcloud。

More...

Jul. 23, 2017

解决Windows10 VMware Workstation12 网络连接中没有VMnet虚拟网络适配器

[warningbox]有人反映会重置网络的操作会导致电脑没网,请谨慎! 请勿与本文所描述问题不完全相同的情况下重置网络!!![/warningbox] 前几天用VMware的时候发现桥接网络无法正常使用,而且手动添加的一个用于桥接的虚拟网络适配器出了问题。主要表现为虚拟机Ping得通大部分公网的域名,也可以正常执行apt-get之类的操作。但就是Ping不通局域网内的设备,宿主机Ping不通虚拟机,连接不上SSH,那要桥接网络又有何用?

More...

Jul. 20, 2017

2017.7.14 告一段落

今天是放假的第4天,已经7月14日了,搁到去年我都出去玩了好几圈回来了,然而现在却一直在家里宅着。

这几天在家里瘫痪,颇有些无聊,看了几部电影,感觉恍恍惚惚的。

刚才把《活着》看完了,书是下午刚买的,看了大概五六个小时。实在是太长时间没有从头到尾看小说了,之前也只是看一些短篇的散文什么的,感觉现在连看书都不会了。这本书内容不是很多,拿到之后就有一种能一口气看完的自信,看的时候感觉晕晕乎乎的。小说的开头都恨不得要把你拒之千里之外,《活着》还算好点,有的是翻了好几页还是不知所以然,兴趣大减。但是若把开头那一段撑下去,后面的内容可以让我忘记电脑和手机(也许是实在玩腻了)。

More...

Jul. 17, 2017

OpenFire配置XMPP服务实现Nextcloud在线聊天

Nextcloud/ownCloud JSXC插件

JSXC是一款用JavaScript编写的开源XMPP客户端,免去了桌面客户端的下载安装的繁琐,并且能与Nextcloud/ownCloud、SOGo有机地结合起来,提高效率。

 

安装XMPP Openfire服务

OpenFire需要Java环境的支持。安装JRE:

More...

Jul. 13, 2017

The test with getenv(“PATH”) only returns an empty response报错解决办法

因为我并没有遇见过这个错误,所以我只能结合官方文档和一些资料摸黑写(几乎相当于翻译一遍),希望有人能提供一下报错的样本。如果有什么问题,在下面提即可(这两天很闲)。

报错分析

按照Nextcloud的文档的说法,使用php-fpm时,系统环境变量(如PATH,TMP或其他)不会以与使用php-cli相同的方式自动填充。类似getenv(‘PATH’)这样的PHP调用可能会返回一个空的结果。

More...

Jul. 11, 2017

OCC命令给ownCloud/Nextcloud手动添加文件

有时候,直接通过Web页面上传文件并不那么方便,于是有的朋友就直接把文件上传到服务器里,然后拷贝到data目录下,打开ownCloud,却还是之前的文件。

这是因为虽然上传了文件,但是ownCloud/Nextcloud的数据库里并没有这个文件的信息。文件信息都被存储在数据库的oc_filecache表中。

More...

Jun. 28, 2017

野性的呼唤:第三章·The Call of the Wild:Chapter3(Jack London 杰克·伦敦)英汉双语

The Call of the Wild

by Jack London

CHAPTER 3

THE DOMINANT PRIMORDIAL BEAST

The dominant primordial beast was strong in Buck, and under the fierce conditions of trail life it grew and grew. Yet it was a secret growth. His newborn cunning gave him poise and control. He was too busy adjusting himself to the new life to feel at ease, and not only did he not pick fights, but he avoided them whenever possible. A certain deliberateness characterized his attitude. He was not prone to rashness and precipitate action; and in the bitter hatred between him and Spitz he betrayed no impatience, shunned all offensive acts.

On the other hand, possibly because he divined in Buck a dangerous rival, Spitz never lost an opportunity of showing his teeth. He even went out of his way to bully Buck, striving constantly to start the fight which could end only in the death of one or the other.

More...

Jun. 25, 2017

LAMP+Nextcloud+Collabora Online 阿里云ECS镜像

Nextcloud-ecs-image

用于在阿里云ECS上快速部署功能完好的Nextcloud

获得镜像

将您的Aliyun uid发送至666@orgleaf.com

简介

本镜像包含以下内容
  • Ubuntu 16.04.2 LTS x86_64
  • Apache 2.4.18
  • PHP 7.0.18
  • MySQL 5.7.18
  • Docker 1.12.6(用于运行Collbora Online)
  • Nextcloud 12.0.1

配置文件位置

为了方便部署,我尽可能地保留了默认配置。

Apache

  • 主配置文件 /etc/apache2/apache.conf
  • 虚拟主机1(运行Nextcloud):/etc/apache2/sites-available/nextcloud.conf
  • 虚拟主机2(反向代理Collabora Online):/etc/apache2/sites-available/office.conf

PHP

  • php.ini /etc/php/7.0/apache2/php.ini

Nextcloud

  • 安装位置 /cloudserver/nextcloud/
  • data目录位置 /cloudserver/data

Linux

root密码:chengye

MySQL

请在部署完毕后自行修改MySQL Root账号及nextcloud账号的密码

USER       |PASSWORD root       |chengyedbroot nextcloud |chengyedbnextcloud

More...

Jun. 20, 2017

Nextcloud Draw.io在线绘图集成插件

简介

该应用程序允许用户使用Draw.io在线编辑器在Nextcloud中创建和编辑图表。

Draw.io 是一个强大的在线绘图工具,主要用来绘制流程图、组织关系图。而这款插件可以让你在Nextcloud内部绘制,并将文件直接保存到Nextcloud中。

More...

Jun. 12, 2017

利用OSS图片处理代替timthumb.php生成缩略图

遇到问题

博客做动静分离有一段时间了,但一直都存在一个严重的问题:首页缩略图是利用主题自带的timthumb.php生成的。相较于WordPress自己裁剪的参差不齐、大小不一的缩略图,这的确是一个不错的解决方案,但是也使得博客不能做到彻底的动静分离。

More...

Jun. 9, 2017

2017.6.8 趁假期,发一点想法

最近心情亦好亦坏。

和自己的状态有关系,状态好的时候感觉上天下地无所不能,差的时候感觉自己像个废物,做什么都不顺。最近因为高考考场,我们放了几天假,我跟同学开玩笑说,放什么假不如在学校里好好学习。虽然是玩笑,但说实话,我是真的不是很喜欢放假(寒暑假除外),放假学不好也玩不好,一放假感觉自己魂都飞了,真不如在学校里舒坦。

More...

Jun. 2, 2017

野性的呼唤:第二章·The Call of the Wild:Chapter2(Jack London 杰克·伦敦)英汉双语

 

The Call of the Wild

by Jack London

CHAPTER 2

THE LAW OF CLUB AND FANG

Buck's first day on the Yea beach was like a nightmare. Every hour was filled with shock and surprise. He had been suddenly jerked from the heart of civilization and flung into the heart of things primordial. No lazy, sun-kissed life was this, with nothing to do but loaf and be bored. Here was neither peace, nor rest, nor a moment's safety. All was confusion and action, and every moment life and limb were in peril. There was imperative need to be constantly alert; for these dogs and men were not town dogs and men. They were savages, all of them, who knew no law but the law of club and fang.

He had never seen dogs fight as these wolfish creatures fought, and his first experience taught him an unforgettable lesson. it is true, it was a vicarious experience, else he would not have lived to profit by it. Curly was the victim. They were camped near the log store, where she, in her friendly way, made advances to a husky dog the size of a full-grown wolf, though not half so large as she. There was no warning, only a leap in like a flash, a metallic clip of teeth, a leap out equally swift, and Curly’s face was ripped open from eye to jaw.

More...

May. 29, 2017

ownCloud/Nextcloud OCC命令行工具详解(2)

occ命令是ownCloud/Nextcloud的命令行界面。您可以使用occ执行许多常见的服务器操作,例如安装和升级ownCloud/Nextcloud,管理用户,加密,密码,LDAP设置等。

OCC命令行工具详解

[ssbluelist] [/ssbluelist]

Dav命令

用于创建地址簿、日历,或在从8.2版本升级至9.0版本时迁移地址簿。

只有使用以下插件时才有必要使用Dav命令:

More...

May. 23, 2017

2017.5.23 HTTPS改造手记

前几天闲的无聊,就将博客升级为HTTPS连接。说得简单,其实也没少烦心。因为从一开始我就没打算用HTTPS,毕竟HTTPS对服务器资源的消耗不容小觑,而且对访问速度也有一定影响。之前有所尝试,曾经直接在CDN的基础上启用HTTPS访问,但是因为静态文件绝对URL的缘故,多次尝试后未能成功。后来干脆放弃了全站CDN,仅将静态文件托管至CDN,这样一来就相对灵活了。

More...

May. 19, 2017

野性的呼唤:第一章·The Call of the Wild:Chapter1(Jack London 杰克·伦敦)英汉双语

The Call of the Wild

by Jack London

Old longings nomadic leap, Chafing at custom's chain; Again from its brumal sleep Wakens the ferine strain.

Buck did not read the newspapers, or he would have known that trouble was brewing, not alone for himself, but for every tidewater dog, strong of muscle and with warm, long hair, from Puget Sound to San Diego. Because men, groping in the Arctic darkness, had found a yellow metal, and because steamship and transportation companies were booming the find, thousands of men were rushing into the Northland. These men wanted dogs, and the dogs they wanted were heavy dogs, with strong muscles by which to toil, and furry coats to protect them from the frost.

Buck lived at a big house in the sun-kissed Santa Clara Valley. Judge Miller’s place, it was called. It stood back from the road, half-hidden among the trees, through which glimpses could be caught of the wide cool veranda that ran around its four sides. The house was approached by graveled driveways which wound about through wide-spreading lawns and under the interlacing boughs of tall poplars. At the rear things were on even a more spacious scale than at the front. There were great stables, where a dozen grooms and boys held forth, rows of vine-clad servants’ cottages, an endless and orderly array of outhouses, long grape arbors, green pastures, orchards, and berry patches. Then there was the pumping plant for the artesian well, and the big cement tank where Judge Miler’s boys took their morning plunge and kept cool in the hot afternoon.

More...

May. 14, 2017

体验在NAS4Free中安装ownCloud全过程

NAS4Free

安装NAS4Free到VMware Workstation

sourceforge.net下载NAS4Free的ISO镜像文件

下载到电脑中之后,打开VMware Workstation,选择添加虚拟机⇒典型⇒下一步,选择“安装程序光盘映像文件(iso)”,点击“浏览”找到下载好的镜像。

More...

May. 11, 2017

枭河桥记事/鹰河桥事件·An Occurrence at Owl Creek Bridge(Ambrose Bierce 安布罗斯·比尔斯)英汉双语

An Occurrence at Owl Creek Bridge

by Ambrose Bierce

Set during the American Civil War, "An Occurrence at Owl Creek" is Bierce's most famous short story. It was first published in the San Francisco Examiner in 1890. It then appeared in Bierce's 1891 collection "Tales of Soldiers and Civilians."


 I

An Occurrence at Owl Creek Bridge pendulum with escapementA man stood upon a railroad bridge in northern Alabama, looking down into the swift water twenty feet below. The man's hands were behind his back, the wrists bound with a cord. A rope closely encircled his neck. It was attached to a stout cross-timber above his head and the slack fell to the level of his knees. Some loose boards laid upon the sleepers supporting the metals of the railway supplied a footing for him and his executioners--two private soldiers of the Federal army, directed by a sergeant who in civil life may have been a deputy sheriff. At a short remove upon the same temporary platform was an officer in the uniform of his rank, armed. He was a captain. A sentinel at each end of the bridge stood with his rifle in the position known as "support," that is to say, vertical in front of the left shoulder, the hammer resting on the forearm thrown straight across the chest--a formal and unnatural position, enforcing an erect carriage of the body. It did not appear to be the duty of these two men to know what was occurring at the center of the bridge; they merely blockaded the two ends of the foot planking that traversed it. Beyond one of the sentinels nobody was in sight; the railroad ran straight away into a forest for a hundred yards, then, curving, was lost to view. Doubtless there was an outpost farther along. The other bank of the stream was open ground--a gentle acclivity topped with a stockade of vertical tree trunks, loopholed for rifles, with a single embrasure through which protruded the muzzle of a brass cannon commanding the bridge. Midway of the slope between the bridge and fort were the spectators--a single company of infantry in line, at "parade rest," the butts of the rifles on the ground, the barrels inclining slightly backward against the right shoulder, the hands crossed upon the stock. A lieutenant stood at the right of the line, the point of his sword upon the ground, his left hand resting upon his right. Excepting the group of four at the center of the bridge, not a man moved. The company faced the bridge, staring stonily, motionless. The sentinels, facing the banks of the stream, might have been statues to adorn the bridge. The captain stood with folded arms, silent, observing the work of his subordinates, but making no sign. Death is a dignitary who when he comes announced is to be received with formal manifestations of respect, even by those most familiar with him. In the code of military etiquette silence and fixity are forms of deference.

The man who was engaged in being hanged was apparently about thirty-five years of age. He was a civilian, if one might judge from his habit, which was that of a planter. His features were good–a straight nose, firm mouth, broad forehead, from which his long, dark hair was combed straight back, falling behind his ears to the collar of his well-fitting frock coat. He wore a mustache and pointed beard, but no whiskers; his eyes were large and dark gray, and had a kindly expression which one would hardly have expected in one whose neck was in the hemp. Evidently this was no vulgar assassin. The liberal military code makes provision for hanging many kinds of persons, and gentlemen are not excluded.

More...

May. 7, 2017

Nextcloud/ownCloud去除URL中的index.php详解

Nextcloud/ownCloud在URL中默认是显示入口文件index.php的:

去除URL中的入口文件有这样3点好处:

[ssbluelist]

  • 拥有一个美观的URL
  • 防止入口文件被篡改,保护网站安全
  • 提高逼格
[/ssbluelist]

启用Rewrite

在Ubuntu/Debian中:
a2enmod rewrite #激活mod_rewrite

service apache2 restart #重启apache

在CentOS/RedHat中,需要手动在虚拟主机配置文件中添加以下内容:

More...

May. 1, 2017

Nextcloud+Collabora Office文档在线协作

本文演示在VPS上配置Nextcloud+CollaboraOffice实现文档在线预览

视频教程

[tabgroup][tab title="bilibili" id="1"] [/tab][tab title="腾讯视频" id="2"][/tab][tab title="优酷视频" id="3"][/tab] [/tabgroup]

简介

这个Office文档在线预览功能是基于Nextcloud Collabora Online插件和在Docker上跑的Collabora Office。

通过Apache反向代理将Collabora Office代理至443端口,供Nextcloud通过HTTPS访问。

More...

Apr. 30, 2017

生火·To Build a Fire(Jack London 杰克·伦敦)英汉双语

To Build a Fire

by Jack London

Day had broken cold and grey, exceedingly cold and grey, when the man turned aside from the main Yukon trail and climbed the high earth- bank, where a dim and little-travelled trail led eastward through the fat spruce timberland. It was a steep bank, and he paused for breath at the top, excusing the act to himself by looking at his watch. It was nine o’clock. There was no sun nor hint of sun, though there was not a cloud in the sky. It was a clear day, and yet there seemed an intangible pall over the face of things, a subtle gloom that made the day dark, and that was due to the absence of sun. This fact did not worry the man. He was used to the lack of sun. It had been days since he had seen the sun, and he knew that a few more days must pass before that cheerful orb, due south, would just peep above the sky- line and dip immediately from view.

More...

Apr. 29, 2017

Nextcloud漂亮易用的WebMail插件:RainLopp

RainLoop是一款漂亮易用的WebMail插件,可以让你在Nextcloud中管理自己的邮件。支持中文,可以自行添加自己的邮箱服务器,拥有多种主题和插件。

使用方法

到插件页面激活该插件:

More...

Apr. 22, 2017

NC安全检测工具:Nextcloud Private Cloud Security Scanner

数据安全是个大问题。去年,Dropbox的6800万个账户丢失了数据,雅虎有不少于10亿的帐户受损。Nextcloud提供了一个在线的Nextcloud安全性检测工具,它可以自动访问你的Nextcloud实例、分析安全状况。
Nextcloud Private Cloud Security Scanner会检查以下项目: [ssyellowlist]
  • 程序漏洞
  • 安全强化状况
  • 服务器安全
[/ssyellowlist]

[warningbox]Nextcloud Private Cloud Security Scanner仅仅能从外部对服务器进行检查而无法触及到内部漏洞[/warningbox]

More...

Apr. 15, 2017

VPS快速完美部署ownCloud/Nextcloud全过程(2)

传送门:VPS快速完美部署ownCloud/Nextcloud全过程(1)

配置HTTPS

申请SSL证书

首先我们需要一个SSL证书,并且不建议使用自签名证书。

证书有收费的也有免费的,收费的一般比较昂贵,像我这样自己玩玩用免费的就够了。

我是在阿里云上申请的免费证书,当然,像腾讯云这样的也提供免费证书。

More...

Apr. 14, 2017

带天窗的房间·THE SKYLIGHT ROOM(O Henry 欧·亨利)英汉双语

THE SKYLIGHT ROOM

by O. Henry

First Mrs. Parker would show you the double parlours. You would not dare to interrupt her description of their advantages and of the merits of the gentleman who had occupied them for eight years. Then you would manage to stammer forth the confession that you were neither a doctor nor a dentist. Mrs. Parker’s manner of receiving the admission was such that you could never afterward entertain the same feeling toward your parents, who had neglected to train you up in one of the professions that fitted Mrs. Parker’s parlours.

More...

Apr. 9, 2017

VPS快速完美部署ownCloud/Nextcloud全过程(1)

今天打算做一个完全部署ownCloud/Nextcloud的教程,将之前零散的教程集中起来。

VPS及外部环境

我这儿演示所用的VPS是Bandwagon的SPECIAL 20G PROMO V3 - LOS ANGELES - CHINA DIRECT ROUTE,机房直连大陆,下载和上传速度都比较可观。

More...

Apr. 5, 2017

带家具出租的房间·The Furnished Room(O Henry 欧亨利)英汉双语

The Furnished Room

by O Henry

Restless, shifting, fugacious as time itself is a certain vast bulk of the population of the red brick district of the lower West Side. Homeless, they have a hundred homes. They flit from furnished room to furnished room, transients forever - transients in abode, transients in heart and mind. They sing “Home, Sweet Home” in ragtime; they carry their lares et penates in a bandbox; their vine is entwined about a picture hat; a rubber plant is their fig tree.

More...

Apr. 3, 2017

谈谈最近吧

好久好久没有发随笔了,每次觉得该补一下随笔,不是有更急的事要做,就是打开电脑无话可说。

刚刚打算把图片全部放到阿里云OSS里,然后挂载到ECS中,实现图片直接与OSS同步。(为此我还专门咨询了阿里云的客服)

More...

Apr. 1, 2017

Nextcloud 站内信插件:Admin notifications

简介

这款插件允许管理员以站内信的形式向其它用户发送信息。

 

使用方法

这款插件可以借助HTTP endpoint或OCC命令发送站内信。

OCC命令

OCC命令详细使用方法参见:ownCloud/Nextcloud OCC命令行工具详解(1)

Help:

More...

Mar. 30, 2017

警察和赞美诗·The Cop and the Anthem(O Henry 欧·亨利)·中英双语

The Cop and the Anthem

by O Henry

OAPY MOVED RESTLESSLY ON HIS SEAT in Madison Square. There are certain signs to show that winter is coming. Birds begin to fly south. Women who want nice new warm coats become very kind to their husbands. And Soapy moves restlessly on his seat in the park. When you see these signs, you know that winter is near.

A dead leaf fell at Soapy’s feet. That was a special sign for him that winter was coming. It was time for all who lived in Madison Square to prepare.

More...

Mar. 26, 2017

Nextcloud/OwnCloud管理页面上的警告及对应方案

Nextcloud/OwnCloud内置了配置检查工具,错误信息会被显示在管理页面的顶端。本文列举了一些可能会看到的警告及其解决方案。

[infobox]您可以使用Nextcloud Security Scan查看您的系统是否是最新的并且是否安全。过去,我们已经对公共IP地址进行了扫描,尝试接触到非常过时的系统,并可能在将来再次出现。请保护您的隐私,并保持您的服务器最新!隐私意味着没有安全性。[/infobox]

More...

Mar. 25, 2017

ownCloud/Nextcloud使用OCC命令重置密码

有时因为种种原因忘记了自己ownCloud/Nextcloud的密码。

[caption id=“attachment_2148” align=“aligncenter” width=“1440”] 一般来说,可以使用管理员账户来修改密码[/caption]

如果出现了忘记了管理员密码这种糟糕的情况,就只能通过OCC命令或修改数据库的方式来解决了。本文介绍较为方便的使用OCC命令重置密码方式。

More...

Mar. 23, 2017

卡拉维拉斯县驰名的跳蛙·The Celebrated Jumping Frog of Calaveras County(Mark Twain 马克·吐温)·中英双语

The Celebrated Jumping Frog of Calaveras County 

by Mark Twain

[From The Saturday Press, Nov. 18, 1865. Republished in The Celebrated Jumping Frog of Calaveras County, and Other Sketches (1867), by Mark Twain, all of whose works are published by Harper & Brothers.]

In compliance with the request of a friend of mine, who wrote me from the East, I called on good-natured, garrulous old Simon Wheeler, and inquired after my friend’s friend, Leonidas W. Smiley, as requested to do, and I hereunto append the result. I have a lurking suspicion that Leonidas W. Smiley is a myth; and that my friend never knew such a personage; and that he only conjectured that if I asked old Wheeler about him, it would remind him of his infamous Jim Smiley, and he would go to work and bore me to death with some exasperating reminiscence of him as long and as tedious as it should be useless to me. If that was the design, it succeeded.

More...

Mar. 19, 2017

Nextcloud插件·Mail

简介

一款Nextcloud邮件管理器插件

 

安装

找到Apps«, choose the category »Productivity«, 找到Mail插件并且激活它 ,然后从左上角菜单中找到它,点击打开。输入你的邮箱信息后就可以使用了

使用方法

快捷键

动作 快捷键
发送 Ctrl + Enter
 
动作 快捷键
刷新 R
标为星级邮件 S
删除 Del
标为未读 U
 
动作 快捷键
查看新信息 K or
查看旧信息 J or

问题解答

Gmail

如果你无法登录Gmail,可以到 https://accounts.google.com/DisplayUnlockCaptcha 解锁你的账户

Outlook.com

如果无法登录Outlook,可以尝试开启 '双因素验证' (https://account.live.com/proofs/Manage) 然后设置密码(https://account.live.com/proofs/AppPassword), 这个密码将用于通过Mail插件登录。

Dovecot IMAP

如若你的Dovecot IMAP所有文件夹使用“INBOX”做前缀,Nextcloud Mail将无法正常工作。

编辑/etc/dovecot/dovecot.conf:

More...

Mar. 13, 2017

百万英镑·The £1,000,000 Bank Note(Mark Twain 马克·吐温)·中英双语

 

The £1,000,000 Bank Note

by Mark Twain

When I was twenty-seven years old, I was a mining-broker’s clerk in San Francisco, and an expert in all the details of stock traffic. I was alone in the world, and had nothing to depend upon but my wits and a clean reputation; but these were setting my feet in the road to eventual fortune, and I was content with the prospect. My time was my own after the afternoon board, Saturdays, and I was accustomed to put it in on a little sail-boat on the bay. One day I ventured too far, and was carried out to sea. Just at nightfall, when hope was about gone, I was picked up by a small brig which was bound for London. It was a long and stormy voyage, and they made me work my passage without pay, as a common sailor. When I stepped ashore in London my clothes were ragged and shabby, and I had only a dollar in my pocket. This money fed and sheltered me twenty-four hours. During the next twenty-four I went without food and shelter.

More...

Mar. 11, 2017

让你的Ubuntu桌面版更易用

想要把Ubuntu作为日常学习工作的系统,并不是那么容易,和大多数Linux系统一样,面对匮乏的应用程序、不同于Windows的操作风格,坚持使用Ubuntu也许是一种勇气吧。本文将帮助你使Ubuntu系统更加易用。

More...

Mar. 5, 2017

生命的陀螺·The Whirligig of Life(O. Henry 欧·亨利)·英文

The Whirligig Of Life

by O. Henry


JUSTICE-OF-THE-PEACE Benaja Widdup sat in the door of his office smoking his elder-stem pipe. Halfway to the zenith the Cumberland range rose blue-gray in the afternoon haze. A speckled hen swaggered down the main street of the “settlement,” cackling foolishly.

Up the road came a s ound of creaking axles, and then a slow cloud of dust, and then a bull-cart bearing Ransie Bilbro and his wife. The cart stopped at the Justice’s door, and the two climbed down. Ransie was a narrow six feet of sallow brown skin and yellow hair. The imperturbability of the mountains hung upon him like a suit of armour. The woman was calicoed, angled, snuff-brushed, and weary with unknown desires. Through it all gleamed a faint protest of cheated youth unconscious of its loss.

More...

Feb. 26, 2017

Nextcloud插件KeePass管理工具:KeeWeb

KeePass专门为了解决人类记不得众多密码的问题所产生的,它包含了一个强大的密码产生引擎与加密储存机能,能够提供一个安全的密码储存空间。
KeeWeb允许你在Nextcloud里创建和管理KeePass数据库,数据库文件可以是位于本地、Nextcloud空间或者Dropbox/GoogleDrive/OneDrive/WebDAV中的*.kbdx文件。

 

More...

Feb. 23, 2017

热爱生命·Love of Life(Jack Lodon 杰克·伦敦)·英汉双语

"This out of all will remain - They have lived and have tossed: So much of the game will be gain, Though the gold of the dice has been lost."

THEY limped painfully down the bank, and once the foremost of the two men staggered among the rough-strewn rocks. They were tired and weak, and their faces had the drawn expression of patience which comes of hardship long endured. They were heavily burdened with blanket packs which were strapped to their shoulders. Head- straps, passing across the forehead, helped support these packs. Each man carried a rifle. They walked in a stooped posture, the shoulders well forward, the head still farther forward, the eyes bent upon the ground.

“I wish we had just about two of them cartridges that’s layin’ in that cache of ourn,” said the second man.

More...

Feb. 18, 2017

Nextcloud/ownCloud快速安装PHP脚本

ownCloud和Nextcloud都提供了快速安装脚本。本文以Nextcloud为例。

下载setup-nextcloud.php

https://nextcloud.com/install/#instructions-server下载脚本文件

或者使用wget命令下载到主机里

wget https://download.nextcloud.com/server/installer/setup-nextcloud.php

部署安装脚本

在网页服务器目录创建一个文件夹
mkdir /var/www/html/nextcloud

cd /var/www/html/nextcloud

下载

More...

Feb. 15, 2017

卖火柴的小女孩·The Little Match Girl英汉双语

The Little Match Girl

by Hans Christian Andersen


Although he is well noted for his fairy-tales, the poignant story of The Little Match Girl or The Little Matchstick Girl is a great example of Hans Christian Andersen’s broad literary talent and ability. I personally like to read this story at least twice a year, once in Autumn as the holiday season comes into focus, and then again around the Christmas holiday. It’s a gentle reminder of the value of compassion and charity.


Most terribly cold it was; it snowed, and was nearly quite dark, and evening-- the last evening of the year. In this cold and darkness there went along the street a poor little girl, bareheaded, and with naked feet. When she left home she had slippers on, it is true; but what was the good of that? They were very large slippers, which her mother had hitherto worn; so large were they; and the poor little thing lost them as she scuffled away across the street, because of two carriages that rolled by dreadfully fast.

One slipper was nowhere to be found; the other had been laid hold of by an urchin, and off he ran with it; he thought it would do capitally for a cradle when he some day or other should have children himself. So the little maiden walked on with her tiny naked feet, that were quite red and blue from cold. She carried a quantity of matches in an old apron, and she held a bundle of them in her hand. Nobody had bought anything of her the whole livelong day; no one had given her a single farthing.

More...

Feb. 14, 2017

学习文档下载

[infobox]这儿提供一些学习文档的下载[/infobox]

[scbutton link="https://www.orgleaf.com/wp-content/uploads/2017/02/作文大赛.doc" target="blank" variation="red"]作文大赛[/scbutton] [scbutton link="https://www.orgleaf.com/wp-content/uploads/2017/03/开辟新航路.ppt" target="blank" variation="yellow"]新航路开辟[/scbutton]

[scbutton link=“https://www.orgleaf.com/wp-content/uploads/2017/02/第二次工业革命课件.ppt” target=“blank” variation=“yellow”]第二次工业革命课件[/scbutton]

More...

Feb. 10, 2017

一小时的故事The Story of An Hour by Kate Chopin-英汉双语

The Story of An Hour

by Kate Chopin


This story was first published in 1894 as The Dream of an Hour before being republished under this title in 1895.


Knowing that Mrs. Mallard was afflicted with a heart trouble, great care was taken to break to her as gently as possible the news of her husband’s death.

It was her sister Josephine who told her, in broken sentences; veiled hints that revealed in half concealing. Her husband’s friend Richards was there, too, near her. It was he who had been in the newspaper office when intelligence of the railroad disaster was received, with Brently Mallard’s name leading the list of “killed.” He had only taken the time to assure himself of its truth by a second telegram, and had hastened to forestall any less careful, less tender friend in bearing the sad message.

More...

Feb. 10, 2017

Ubuntu安装Nextant全文搜索工具Solr环境

上篇文章介绍了Nextant插件,然而真正要让Nextant插件工作起来,需要Solr的支持。

安装java环境

1 检查Java是否已经安装在Ubuntu上

打开终端,使用下面的命令:
java -version
如果你看到像下面的输出,这就意味着你并没有安装过Java:
The program ‘java’ can be found in the following packages:
*default -jre
* gcj-4.6 -jre-headless
* openjdk-6 -jre-headless
* gcj- 4.5 -jre-headless
* openjdk- 7 -jre-headless
Try: sudo apt-get install

2 在Ubuntu安装Java

看了各种类型Java的不同之后, 让我们看如何安装他们.

Ubuntu上安装JRE

More...

Feb. 10, 2017

Nextcloud企业搜索插件Nextant

Nextcloud默认只能搜索文件名,但这个插件却可以实现全文检索(包括文件的描述等等)。

你自己的文件

共享文件

外置储存

书签

More...

Feb. 9, 2017

linux 技巧:使用 screen 管理你的远程会话

你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是不是经常为一些长时间运行的任务而头疼,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为他们执行的时间太长了。必须等待它执行完毕,在此期间可不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。

More...

Feb. 9, 2017

新年将末,烦躁和不安

对我来说,这个年过得不像年。

从小年到初三,我连家门都没出,之前无论如何,三十清晨总是要出门转转的,嗅一嗅夹在冷气中的年的气味。每次到街上,路边零散的爆竹的红纸散漫地铺在地上,我一边提醒自己,今年是腊月三十,一边打量着来往的行人,试着看出他们与平常时节的不同。

这次我没有出门,甚至连窗外也不曾瞧过。可能是因为实在没什么新奇的,我的兴趣已经从鞭炮烟花上转移开了,更何况今年市区还有禁放的规矩;可能是因为实在懒惰,懒得穿衣,懒得下楼;可能是因为实在有其他事拖着,不得不做出让步。

More...

Feb. 5, 2017

Nextcloud/ownCloud配置APCu本地缓存+Memcached分布式缓存

Hat/CentOS/Fedora:
yum install -y php-pecl-apcu

systemctl restart httpd

Debian/Ubuntu/Mint:

apt-get install php5-apcu/trusty-backports

systemctl restart httpd

方法一:编译安装

安装编译器
yum -y install gcc gcc-c++
从官网中下载最新的 memcached http://www.memcached.org/
tar -xvf memcached-1.4.15.tar.gz

cd memcached-1.4.15

./configure –prefix=/usr/local/memcache

出现了 configure: error: libevent is required. You can get it from http://www.monkey.org/~provos/libevent/

就直接去,那个网站下载

tar zxvf libevent-1.2.tar.gz

cd libevent-1.2

./configure -prefix=/usr

make

make install
编译安装php模块的memcache模块 下载地址 http://pecl.php.net/package/memcache

tar -xvf memcache-2.2.7.tar.gz

cd memcache-2.2.7

#/usr/local/php/bin/phpize

#./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache

make & make install

#/usr/local/bin/memcached -d -m 10 -u root -l 192.168.12.201 -p 13001 -c 256 -P /tmp/memcached.pid #启动memcache

方法二:yum/apt-get安装

Hat/CentOS/Fedora:
yum install memcached php-pecl-memcached

systemctl start memcached

Debian/Ubuntu/Mint:

More...

Feb. 3, 2017

羊脂球·Boule de Suif (de Guy de Maupassant莫泊桑) 汉法双语

Résumé(简介)

L'histoire se déroule pendant la guerre de 1870, en plein hiver et débute par le repli des troupes françaises et l'envahissement de Rouen par les prussiens. C'est à bord d'une diligence tirée par six chevaux que l'héroïne, baptisée par l'auteur "Boule de suif" et neuf autres personnes s'enfuient vers Dieppe. Il y a là un couple de commerçants, deux couples de la bourgeoisie et de la noblesse, deux religieuses, un démocrate, et Boule de suif, une femme galante, dont la présence soulève la méfiance, l’indignation ou la curiosité.

More...

Feb. 3, 2017

麦琪的礼物·The Gift of The Magi-O Henry 汉英双语

The Gift Of The Magi

One dollar and eighty-seven cents. That was all. And sixty cents of it was in pennies. Pennies saved one and two at a time by bulldozing the grocer and the vegetable man and the butcher until one's cheeks burned with the silent imputation of parsimony that such close dealing implied. Three times Della counted it. One dollar and eighty- seven cents. And the next day would be Christmas.

There was clearly nothing to do but flop down on the shabby little couch and howl. So Della did it. Which instigates the moral reflection that life is made up of sobs, sniffles, and smiles, with sniffles predominating.

More...

Feb. 1, 2017

Linux中安装ownCloud时遇见的各种各样的错误

ownCloud/Nextcloud安装配置有些复杂,尤其对于新手来说,往往因为对每个步骤的不了解,导致实际安装时,明明一步一步按照视频或者教程做的,出现莫名其妙的错误。希望这篇Troubleshooting可以帮助你。
网络是一台服务器的基本需求,网络配置得不到位,往往会导致无法访问。

一般来说,在安装服务器系统(CentOS、Ubuntu、Debian······)时,如果单独安装到一台电脑上,最主要的还是网卡驱动的问题。现在家用电脑得板载网卡几乎无需多做配置,插上网线就能用,安装Linux系统后(尤其比较成熟的发行版),一般不会有什么驱动问题。

More...

Jan. 30, 2017

安宁的长袍·The Robe Of Peace-O.Henry 英文原文

Mysteries follow one another so closely in a great city that the reading public and the friends of Johnny Bellchambers have ceased to marvel at his sudden and unexplained disappearance nearly a year ago. This particular mystery has now been cleared up, but the solution is so strange and incredible to the mind of the average man that only a select few who were in close touch with Bellchambers will give it full credence.

     Johnny Bellchambers, as is well known, belonged to the intrinsically inner circle of the elite. Without any of the ostentation of the fashionable ones who endeavor to attract notice by eccentric display of wealth and show he still was au fait in everything that gave deserved lustre to his high position in the ranks of society.

More...

Jan. 28, 2017

安全?只是遮蔽了阴影·网络渗透

很久之前,央视上介绍过一种通过手机软件,劫持对方Cookie进而登录对方微博的的手段,演示时使用的软件时dsploit。

这种实质上就是一种网络渗透。

就我所了解的,在手机上(android)就能进行网络渗透的软件有2种,都是中间人通过ARP攻击方式截取篡改路由器的流量。

More...

Jan. 27, 2017

Docker快速部署ownCloud

如前(Owncloud安装过程)所述,ownCloud安装涉及LAMP环境的搭建与调试,耗时比较长,本文介绍通过Docker快速部署ownCloud

安装Docker

Ubuntu:
sudo apt-get install docker.io
CentOS:
yum install docker.io
systemctl start docker
docker安装好后,基本上就可以直接开启下一步了,但是从Docker Hub拉取镜像非常慢,建议到Daocloud.io用个加速器。

部署

拉取ownCloud官方镜像

ownCloud的官方镜像页面:https://hub.docker.com/_/owncloud/

这个镜像已经集成了Apache+PHP环境

More...

Jan. 27, 2017

散文分享·生命的浅唱低吟

生命,当如夏花般绚烂。

或沉静,或奔放,或零落,或繁华。岁月,是时光流逝的积淀,生命,是淙淙河流中,那一朵璀璨的花。

生命之花,是美丽的。无论赋予什么样的色彩,红也好,绿也罢,都是自然的呈现,不必做作,只管尽情绽放。

More...

Jan. 26, 2017

Nextcloud安卓客户端下载

Nextcloud安卓客户端是免费的,而且兼容ownCloud(ownCloud手机客户端售价$0.99,真的是要把老东家往死里干)
这个开源的Nextcloud应用可以帮你存取在Nextcloud服务器上的文件
  • 美观、易用界面
  • 上传文件到你的Nextcloud服务器
  • 和他人分享文件
  • 支持文件、文件夹的多选
  • 及时上传手机中新拍摄的照片

Google play:https://play.google.com/store/apps/details?id=com.nextcloud.client

More...

Jan. 24, 2017

ownCloud/Nextcloud OCC命令行工具详解(1)

occ命令是ownCloud/Nextcloud的命令行界面。您可以使用occ执行许多常见的服务器操作,例如安装和升级ownCloud/Nextcloud,管理用户,加密,密码,LDAP设置等。

OCC命令行工具详解

[ssbluelist] [/ssbluelist]

使用OCC命令

OCC文件是使用PHP编写的,首先你要找到OCC文件在哪里

它在ownCloud/Nextcloud根目录里,比如/var/www/html/owncloud/OCC,请确认OCC文件的用户和组均为网页服务器用户,且用户和组权限可读可执行

More...

Jan. 23, 2017

Nextcloud代码高亮在线编辑器Markdown Editor

插件的使用使Nextcloud功能越来越宽泛,如果要使用Nextcloud作为团队代码协作编辑的平台,那么在线文本编辑器Markdown Editor则是个不错的选择。
注意:只有把文件名为*.md才能触发Markdown Editor

特色

Markdown Editor是非常强大的,其一就是可以和Nextcloud有机地结合在一起。比如:

实时预览

Markdown Editor可以自动识别代码语言,并在右侧实时显示

More...

Jan. 23, 2017

《最后一片叶子》欧·亨利 英汉双语

The Last Leaf

In a little district west of Washington Square the streets have run crazy and broken themselves into small strips called "places." These "places" make strange angles and curves. One Street crosses itself a time or two. An artist once discovered a valuable possibility in this street. Suppose a collector with a bill for paints, paper and canvas should, in traversing this route, suddenly meet himself coming back, without a cent having been paid on account! So, to quaint old Greenwich Village the art people soon came prowling, hunting for north windows and eighteenth-century gables and Dutch attics and low rents. Then they imported some pewter mugs and a chafing dish or two from Sixth Avenue, and became a "colony." At the top of a squatty, three-story brick Sue and Johnsy had their studio. "Johnsy" was familiar for Joanna. One was from Maine; the other from California. They had met at the table d'hôte of an Eighth Street "Delmonico's," and found their tastes in art, chicory salad and bishop sleeves so congenial that the joint studio resulted. That was in May. In November a cold, unseen stranger, whom the doctors called Pneumonia, stalked about the colony, touching one here and there with his icy fingers. Over on the east side this ravager strode boldly, smiting his victims by scores, but his feet trod slowly through the maze of the narrow and moss-grown "places." Mr. Pneumonia was not what you would call a chivalric old gentleman. A mite of a little woman with blood thinned by California zephyrs was hardly fair game for the red-fisted, short-breathed old duffer. But Johnsy he smote; and she lay, scarcely moving, on her painted iron bedstead, looking through the small Dutch window-panes at the blank side of the next brick house. One morning the busy doctor invited Sue into the hallway with a shaggy, grey eyebrow. "She has one chance in - let us say, ten," he said, as he shook down the mercury in his clinical thermometer. " And that chance is for her to want to live. This way people have of lining-u on the side of the undertaker makes the entire pharmacopoeia look silly. Your little lady has made up her mind that she's not going to get well. Has she anything on her mind?" "She - she wanted to paint the Bay of Naples some day." said Sue. "Paint? - bosh! Has she anything on her mind worth thinking twice - a man for instance?" "A man?" said Sue, with a jew's-harp twang in her voice. "Is a man worth - but, no, doctor; there is nothing of the kind." "Well, it is the weakness, then," said the doctor. "I will do all that science, so far as it may filter through my efforts, can accomplish. But whenever my patient begins to count the carriages in her funeral procession I subtract 50 per cent from the curative power of medicines. If you will get her to ask one question about the new winter styles in cloak sleeves I will promise you a one-in-five chance for her, instead of one in ten." After the doctor had gone Sue went into the workroom and cried a Japanese napkin to a pulp. Then she swaggered into Johnsy's room with her drawing board, whistling ragtime. Johnsy lay, scarcely making a ripple under the bedclothes, with her face toward the window. Sue stopped whistling, thinking she was asleep. She arranged her board and began a pen-and-ink drawing to illustrate a magazine story. Young artists must pave their way to Art by drawing pictures for magazine stories that young authors write to pave their way to Literature. As Sue was sketching a pair of elegant horseshow riding trousers and a monocle of the figure of the hero, an Idaho cowboy, she heard a low sound, several times repeated. She went quickly to the bedside. Johnsy's eyes were open wide. She was looking out the window and counting - counting backward. "Twelve," she said, and little later "eleven"; and then "ten," and "nine"; and then "eight" and "seven", almost together. Sue look solicitously out of the window. What was there to count? There was only a bare, dreary yard to be seen, and the blank side of the brick house twenty feet away. An old, old ivy vine, gnarled and decayed at the roots, climbed half way up the brick wall. The cold breath of autumn had stricken its leaves from the vine until its skeleton branches clung, almost bare, to the crumbling bricks. "What is it, dear?" asked Sue. "Six," said Johnsy, in almost a whisper. "They're falling faster now. Three days ago there were almost a hundred. It made my head ache to count them. But now it's easy. There goes another one. There are only five left now." "Five what, dear? Tell your Sudie." "Leaves. On the ivy vine. When the last one falls I must go, too. I've known that for three days. Didn't the doctor tell you?" "Oh, I never heard of such nonsense," complained Sue, with magnificent scorn. "What have old ivy leaves to do with your getting well? And you used to love that vine so, you naughty girl. Don't be a goosey. Why, the doctor told me this morning that your chances for getting well real soon were - let's see exactly what he said - he said the chances were ten to one! Why, that's almost as good a chance as we have in New York when we ride on the street cars or walk past a new building. Try to take some broth now, and let Sudie go back to her drawing, so she can sell the editor man with it, and buy port wine for her sick child, and pork chops for her greedy self." "You needn't get any more wine," said Johnsy, keeping her eyes fixed out the window. "There goes another. No, I don't want any broth. That leaves just four. I want to see the last one fall before it gets dark. Then I'll go, too." "Johnsy, dear," said Sue, bending over her, "will you promise me to keep your eyes closed, and not look out the window until I am done working? I must hand those drawings in by to-morrow. I need the light, or I would draw the shade down." "Couldn't you draw in the other room?" asked Johnsy, coldly. "I'd rather be here by you," said Sue. "Beside, I don't want you to keep looking at those silly ivy leaves." "Tell me as soon as you have finished," said Johnsy, closing her eyes, and lying white and still as fallen statue, "because I want to see the last one fall. I'm tired of waiting. I'm tired of thinking. I want to turn loose my hold on everything, and go sailing down, down, just like one of those poor, tired leaves." "Try to sleep," said Sue. "I must call Behrman up to be my model for the old hermit miner. I'll not be gone a minute. Don't try to move 'til I come back." Old Behrman was a painter who lived on the ground floor beneath them. He was past sixty and had a Michael Angelo's Moses beard curling down from the head of a satyr along with the body of an imp. Behrman was a failure in art. Forty years he had wielded the brush without getting near enough to touch the hem of his Mistress's robe. He had been always about to paint a masterpiece, but had never yet begun it. For several years he had painted nothing except now and then a daub in the line of commerce or advertising. He earned a little by serving as a model to those young artists in the colony who could not pay the price of a professional. He drank gin to excess, and still talked of his coming masterpiece. For the rest he was a fierce little old man, who scoffed terribly at softness in any one, and who regarded himself as especial mastiff-in-waiting to protect the two young artists in the studio above. Sue found Behrman smelling strongly of juniper berries in his dimly lighted den below. In one corner was a blank canvas on an easel that had been waiting there for twenty-five years to receive the first line of the masterpiece. She told him of Johnsy's fancy, and how she feared she would, indeed, light and fragile as a leaf herself, float away, when her slight hold upon the world grew weaker. Old Behrman, with his red eyes plainly streaming, shouted his contempt and derision for such idiotic imaginings. "Vass!" he cried. "Is dere people in the world mit der foolishness to die because leafs dey drop off from a confounded vine? I haf not heard of such a thing. No, I will not bose as a model for your fool hermit-dunderhead. Vy do you allow dot silly pusiness to come in der brain of her? Ach, dot poor leetle Miss Yohnsy." "She is very ill and weak," said Sue, "and the fever has left her mind morbid and full of strange fancies. Very well, Mr. Behrman, if you do not care to pose for me, you needn't. But I think you are a horrid old - old flibbertigibbet." "You are just like a woman!" yelled Behrman. "Who said I will not bose? Go on. I come mit you. For half an hour I haf peen trying to say dot I am ready to bose. Gott! dis is not any blace in which one so goot as Miss Yohnsy shall lie sick. Some day I vill baint a masterpiece, and ve shall all go away. Gott! yes." Johnsy was sleeping when they went upstairs. Sue pulled the shade down to the window-sill, and motioned Behrman into the other room. In there they peered out the window fearfully at the ivy vine. Then they looked at each other for a moment without speaking. A persistent, cold rain was falling, mingled with snow. Behrman, in his old blue shirt, took his seat as the hermit miner on an upturned kettle for a rock. When Sue awoke from an hour's sleep the next morning she found Johnsy with dull, wide-open eyes staring at the drawn green shade. "Pull it up; I want to see," she ordered, in a whisper. Wearily Sue obeyed. But, lo! after the beating rain and fierce gusts of wind that had endured through the livelong night, there yet stood out against the brick wall one ivy leaf. It was the last one on the vine. Still dark green near its stem, with its serrated edges tinted with the yellow of dissolution and decay, it hung bravely from the branch some twenty feet above the ground. "It is the last one," said Johnsy. "I thought it would surely fall during the night. I heard the wind. It will fall to-day, and I shall die at the same time." "Dear, dear!" said Sue, leaning her worn face down to the pillow, "think of me, if you won't think of yourself. What would I do?" But Johnsy did not answer. The lonesomest thing in all the world is a soul when it is making ready to go on its mysterious, far journey. The fancy seemed to possess her more strongly as one by one the ties that bound her to friendship and to earth were loosed. The day wore away, and even through the twilight they could see the lone ivy leaf clinging to its stem against the wall. And then, with the coming of the night the north wind was again loosed, while the rain still beat against the windows and pattered down from the low Dutch eaves. When it was light enough Johnsy, the merciless, commanded that the shade be raised. The ivy leaf was still there. Johnsy lay for a long time looking at it. And then she called to Sue, who was stirring her chicken broth over the gas stove. "I've been a bad girl, Sudie," said Johnsy. "Something has made that last leaf stay there to show me how wicked I was. It is a sin to want to die. You may bring a me a little broth now, and some milk with a little port in it, and - no; bring me a hand-mirror first, and then pack some pillows about me, and I will sit up and watch you cook." And hour later she said: "Sudie, some day I hope to paint the Bay of Naples." The doctor came in the afternoon, and Sue had an excuse to go into the hallway as he left. "Even chances," said the doctor, taking Sue's thin, shaking hand in his. "With good nursing you'll win." And now I must see another case I have downstairs. Behrman, his name is - some kind of an artist, I believe. Pneumonia, too. He is an old, weak man, and the attack is acute. There is no hope for him; but he goes to the hospital to-day to be made more comfortable." The next day the doctor said to Sue: "She's out of danger. You won. Nutrition and care now - that's all." And that afternoon Sue came to the bed where Johnsy lay, contentedly knitting a very blue and very useless woollen shoulder scarf, and put one arm around her, pillows and all. "I have something to tell you, white mouse," she said. "Mr. Behrman died of pneumonia to-day in the hospital. He was ill only two days. The janitor found him the morning of the first day in his room downstairs helpless with pain. His shoes and clothing were wet through and icy cold. They couldn't imagine where he had been on such a dreadful night. And then they found a lantern, still lighted, and a ladder that had been dragged from its place, and some scattered brushes, and a palette with green and yellow colours mixed on it, and - look out the window, dear, at the last ivy leaf on the wall. Didn't you wonder why it never fluttered or moved when the wind blew? Ah, darling, it's Behrman's masterpiece - he painted it there the night that the last leaf fell.

中文翻译(黄源深译)

在华盛顿广场西边的一个小区里,街道都横七竖八地伸展开去,又分裂成一小条一小条的“胡同”。这些“胡同”稀奇古怪地拐着弯子。一条街有时自己本身就交叉了不止一次。有一回一个画家发现这条街有一种优越性:要是有个收帐的跑到这条街上,来催要颜料、纸张和画布的钱,他就会突然发现自己两手空空,原路返回,一文钱的帐也没有要到! 所以,不久之后不少画家就摸索到这个古色古香的老格林尼治村来,寻求朝北的窗户、18世纪的尖顶山墙、荷兰式的阁楼,以及低廉的房租。然后,他们又从第六街买来一些蜡酒杯和一两只火锅,这里便成了“艺术区”。 苏和琼西的画室设在一所又宽又矮的三层楼砖房的顶楼上。“琼西”是琼娜的爱称。她俩一个来自缅因州,一个是加利福尼亚州人。她们是在第八街的“台尔蒙尼歌之家”吃份饭时碰到的,她们发现彼此对艺术、生菜色拉和时装的爱好非常一致,便合租了那间画室。 那是5月里的事。到了11月,一个冷酷的、肉眼看不见的、医生们叫做“肺炎”的不速之客,在艺术区里悄悄地游荡,用他冰冷的手指头这里碰一下那里碰一下。在广场东头,这个破坏者明目张胆地踏着大步,一下子就击倒几十个受害者,可是在迷宫一样、狭窄而铺满青苔的“胡同”里,他的步伐就慢了下来。 肺炎先生不是一个你们心目中行侠仗义的老的绅士。一个身子单薄,被加利福尼亚州的西风刮得没有血色的弱女子,本来不应该是这个有着红拳头的、呼吸急促的老家伙打击的对象。然而,琼西却遭到了打击;她躺在一张油漆过的铁床上,一动也不动,凝望着小小的荷兰式玻璃窗外对面砖房的空墙。 一天早晨,那个忙碌的医生扬了扬他那毛茸茸的灰白色眉毛,把苏叫到外边的走廊上。 “我看,她的病只有十分之一的恢复希望,”他一面把体温表里的水银柱甩下去,一面说,“这一分希望就是她想要活下去的念头。有些人好像不愿意活下去,喜欢照顾殡仪馆的生意,简直让整个医药界都无能为力。你的朋友断定自己是不会痊愈的了。她是不是有什么心事呢?” “她——她希望有一天能够去画那不勒斯的海湾。”苏说。 “画画?——真是瞎扯!她脑子里有没有什么值得她想了又想的事——比如说,一个男人?” “男人?”苏像吹口琴似的扯着嗓子说,“男人难道值得——不,医生,没有这样的事。” “能达到的全部力量去治疗她。可要是我的病人开始算计会有多少辆马车送她出丧,我就得把治疗的效果减掉百分之五十。只要你能想法让她对冬季大衣袖子的时新式样感到兴趣而提出一两个问题,那我可以向你保证把医好她的机会从十分之一提高到五分之一。”医生走后,苏走进工作室里,把一条日本餐巾哭成一团湿。后来她手里拿着画板,装做精神抖擞的样子走进琼西的屋子,嘴里吹着爵士音乐调子。 琼西躺着,脸朝着窗口,被子底下的身体纹丝不动。苏以为她睡着了,赶忙停止吹口哨。 她架好画板,开始给杂志里的故事画一张钢笔插图。年轻的画家为了铺平通向艺术的道路,不得不给杂志里的故事画插图,而这些故事又是年轻的作家为了铺平通向文学的道路而不得不写的。 苏正在给故事主人公,一个爱达荷州牧人的身上,画上一条马匹展览会穿的时髦马裤和一片单眼镜时,忽然听到一个重复了几次的低微的声音。她快步走到床边。 琼西的眼睛睁得很大。她望着窗外,数着……倒过来数。 “12,”她数道,歇了一会又说,“11,”然后是“10,”和“9”,接着几乎同时数着“8”和“7”。 苏关切地看了看窗外。那儿有什么可数的呢?只见一个空荡阴暗的院子,20英尺以外还有一所砖房的空墙。一棵老极了的长春藤,枯萎的根纠结在一块,枝干攀在砖墙的半腰上。秋天的寒风把藤上的叶子差不多全都吹掉了,几乎只有光秃的枝条还缠附在剥落的砖块上。 “什么呀,亲爱的?”苏问道。 “6,”琼西几乎用耳语低声说道,“它们现在越落越快了。三天前还有差不多一百片。我数得头都疼了。但是现在好数了。又掉了一片。只剩下五片了。” “五片什么呀,亲爱的。告诉你的苏娣吧。” “叶子。长春藤上的。等到最后一片叶子掉下来,我也就该去了。这件事我三天前就知道了。难道医生没有告诉你?” “哼,我从来没听过这种傻话,”苏十分不以为然地说,“那些破长春藤叶子和你的病好不好有什么关系?你以前不是很喜欢这棵树吗?你这个淘气孩子。不要说傻话了。瞧,医生今天早晨还告诉我,说你迅速痊愈的机会是,让我一字不改地照他的话说吧——他说有九成把握。噢,那简直和我们在纽约坐电车或者走过一座新楼房的把握一样大。喝点汤吧,让苏娣去画她的画,好把它卖给编辑先生,换了钱来给她的病孩子买点红葡萄酒,再给她自己买点猪排解解馋。” “你不用买酒了,”琼西的眼睛直盯着窗外说道,“又落了一片。不,我不想喝汤。只剩下四片了。我想在天黑以前等着看那最后一片叶子掉下去。然后我也要去了。” “琼西,亲爱的,”苏俯着身子对她说,“你答应我闭上眼睛,不要瞧窗外,等我画完,行吗?明天我非得交出这些插图。我需要光线,否则我就拉下窗帘了。” “你不能到那间屋子里去画吗?”琼西冷冷地问道。 “我愿意呆在你跟前,”苏说,“再说,我也不想让你老看着那些讨厌的长春藤叶子。” “你一画完就叫我,”琼西说着,便闭上了眼睛。她脸色苍白,一动不动地躺在床上,就像是座横倒在地上的雕像。“因为我想看那最后一片叶子掉下来,我等得不耐烦了,也想得不耐烦了。我想摆脱一切,飘下去,飘下去,像一片可怜的疲倦了的叶子那样。” “你睡一会吧,”苏说道,“我得下楼把贝尔门叫上来,给我当那个隐居的老矿工的模特儿。我一会儿就回来的。不要动,等我回来。” 老贝尔门是住在她们这座楼房底层的一个画家。他年过60,有一把像米开朗琪罗的摩西雕像那样的大胡子,这胡子长在一个像半人半兽的森林之神的头颅上,又鬈曲地飘拂在小鬼似的身躯上。贝尔门是个失败的画家。他操了四十年的画笔,还远没有摸着艺术女神的衣裙。他老是说就要画他的那幅杰作了,可是直到现在他还没有动笔。几年来,他除了偶尔画点商业广告之类的玩意儿以外,什么也没有画过。他给艺术区里穷得雇不起职业模特儿的年轻画家们当模特儿,挣一点钱。他喝酒毫无节制,还时常提起他要画的那幅杰作。除此以外,他是一个火气十足的小老头子,十分瞧不起别人的温情,却认为自己是专门保护楼上画室里那两个年轻女画家的一只看家狗。 苏在楼下他那间光线黯淡的斗室里找到了嘴里酒气扑鼻的贝尔门。一幅空白的画布绷在个画架上,摆在屋角里,等待那幅杰作已经25年了,可是连一根线条还没等着。苏把琼西的胡思乱想告诉了他,还说她害怕琼西自个儿瘦小柔弱得像一片叶子一样,对这个世界的留恋越来越微弱,恐怕真会离世飘走了。 老贝尔门两只发红的眼睛显然在迎风流泪,他十分轻蔑地嗤笑这种傻呆的胡思乱想。 “什么,”他喊道,“世界上真会有人蠢到因为那些该死的长春藤叶子落掉就想死?我从来没有听说过这种怪事。不,我才不给你那隐居的矿工糊涂虫当模特儿呢。你干吗让她胡思乱想?唉,可怜的琼西小姐。” “她病得很厉害很虚弱,”苏说,“发高烧发得她神经昏乱,满脑子都是古怪想法。好,贝尔门先生,你不愿意给我当模特儿,就拉倒,我看你是个讨厌的老——老罗唆鬼。” “你简直太婆婆妈妈了!”贝尔门喊道,“谁说我不愿意当模特儿?走,我和你一块去。我不是讲了半天愿意给你当模特儿吗?老天爷,琼西小姐这么好的姑娘真不应该躺在这种地方生病。总有一天我要画一幅杰作,我们就可以都搬出去了。 “一定的!” 他们上楼以后,琼西正睡着觉。苏把窗帘拉下,一直遮住窗台,做手势叫贝尔门到隔壁屋子里去。他们在那里提心吊胆地瞅着窗外那棵长春藤。后来他们默默无言,彼此对望了一会。寒冷的雨夹杂着雪花不停地下着。贝尔门穿着他的旧的蓝衬衣,坐在一把翻过来充当岩石的铁壶上,扮作隐居的矿工。 第二天早晨,苏只睡了一个小时的觉,醒来了,她看见琼西无神的眼睛睁得大大地注视拉下的绿窗帘。 “把窗帘拉起来,我要看看。”她低声地命令道。 苏疲倦地照办了。 然而,看呀!经过了漫长一夜的风吹雨打,在砖墙上还挂着一片藤叶。它是长春藤上最后的一片叶子了。靠近茎部仍然是深绿色,可是锯齿形的叶子边缘已经枯萎发黄,它傲然挂在一根离地二十多英尺的藤枝上。 “这是最后一片叶子。”琼西说道,“我以为它昨晚一定会落掉的。我听见风声的。今天它一定会落掉,我也会死的。” “哎呀,哎呀,”苏把疲乏的脸庞挨近枕头边上对她说,“你不肯为自己着想,也得为我想想啊。我可怎么办呢?” 可是琼西不回答。当一个灵魂正在准备走上那神秘的、遥远的死亡之途时,她是世界上最寂寞的人了。那些把她和友谊及大地联结起来的关系逐渐消失以后,她那个狂想越来越强烈了。 白天总算过去了,甚至在暮色中她们还能看见那片孤零零的藤叶仍紧紧地依附在靠墙的枝上。后来,夜的到临带来了呼啸的北风,雨点不停地拍打着窗子,雨水从低垂的荷兰式屋檐上流泻下来。 天刚蒙蒙亮,琼西就毫不留情地吩咐拉起窗帘来。 那片藤叶仍然在那里。 琼西躺着对它看了许久。然后她招呼正在煤气炉上给她煮鸡汤的苏。 “我是一个坏女孩子,苏娣,”琼西说,“天意让那片最后的藤叶留在那里,证明我是多么坏。想死是有罪过的。你现在就给我拿点鸡汤来,再拿点掺葡萄酒的牛奶来,再——不,先给我一面小镜子,再把枕头垫垫高,我要坐起来看你做饭。” 过了一个钟头,她说道:“苏娣,我希望有一天能去画那不勒斯的海湾。” 下午医生来了,他走的时候,苏找了个借口跑到走廊上。 “有五成希望。”医生一面说,一面把苏细瘦的颤抖的手握在自己的手里,“好好护理你会成功的。现在我得去看楼下另一个病人。他的名字叫贝尔门——听说也是个画家。也是肺炎。他年纪太大,身体又弱,病势很重。他是治不好的了;今天要把他送到医院里,让他更舒服一点。” 第二天,医生对苏说:“她已经脱离危险,你成功了。现在只剩下营养和护理了。” 下午苏跑到琼西的床前,琼西正躺着,安详地编织着一条毫无用处的深蓝色毛线披肩。苏用一只胳臂连枕头带人一把抱住了她。 “我有件事要告诉你,小家伙,”她说,“贝尔门先生今天在医院里患肺炎去世了。他只病了两天。头一天早晨,门房发现他在楼下自己那间房里痛得动弹不了。他的鞋子和衣服全都湿透了,冻凉冰凉的。他们搞不清楚在那个凄风苦雨的夜晚,他究竟到哪里去了。后来他们发现了一盏没有熄灭的灯笼,一把挪动过地方的梯子,几支扔得满地的画笔,还有一块调色板,上面涂抹着绿色和黄色的颜料,还有——亲爱的,瞧瞧窗子外面,瞧瞧墙上那最后一片藤叶。难道你没有想过,为什么风刮得那样厉害,它却从来不摇一摇、动一动呢?唉,亲爱的,这片叶子才是贝尔门的杰作——就是在最后一片叶子掉下来的晚上,他把它画在那里的。”

Jan. 22, 2017

以四分音符为一拍,每小节四拍

文章的开头总是很难写,尤其是对于我来说。

这种随笔类的东西,我从前很少把它放在首页上,然而这个主题没那么多功能(以后一定要自己开发)。其实,这是我自己的博客,里面的内容,全随我意。随笔才能真正证明这是我的个人的博客,而不是什么知识讲座之类的地方。

More...

Jan. 21, 2017

DzzOffice:直观的团队协作PHP程序

其实这款PHP团队协作程序我很早就接触了,可以说使Windows主机上少有的可以完美运行的PHP网盘。

当然,它的功能不仅仅是网盘。

它拥有许多非常适合团队的功能:

文集演示体验
任务板演示体验
讨论板演示体验
信息中心演示体验
公文中心演示体验

Jan. 21, 2017

ownCloud/Nextcloud插件:Direct Menu

Direct Menu插件能够将插件框原本的下拉菜单改为直接将图标罗列载页眉,充分利用了页眉的空间。
原本空荡的页眉变的充实,操作也更加方便。

各版本下载

Nextcloud 11 0.10.0 All releases
Nextcloud 10 0.10.0 All releases
Nextcloud 9 0.10.0 All releases

Jan. 20, 2017

Nextcloud 11:定义安全性和可扩展性

Nextcloud不久前发布了Nextcloud 11版本,在安全性和可扩展性方面做出重大改进。Nextcloud把11版本称作“新的里程碑”(a huge milestone)

快速了解Nextcloud 11新功能: 观看视频

Nextcloud 11主要改进

该版本引入了重要的安全改进措施,NCC Group证实了这一点,NCC Group是网络安全和风险缓解领域的全球专家,旨在“补充现有的安全架构”和“提高安全工作环境的总体地位”。
新的安全功能包括:
  • 支持前沿浏览器(Cutting edge browser)CSP 3.0保护和同网站Cookie的安全特性
  • 支持基于通用第二因素和基于时间的一次性密码的Kerberos身份验证和双因素身份验证提供程序(讲真,没看懂啥意思)
  • 加强对API扩展接口的安全保护
  • 支持SSL/TLS
  • 全新的应用商店会自动检查应用并强制执行签名
此版本将数据库负载降低80%,并将通用服务器操作的响应时间提高60%。

应用(插件)商店

Nextcloud官方应用商店:http://apps.nextcloud.com
新的应用商店拥有自动检查上传的应用程序的功能,确保大部分的骗局和垃圾邮件尝试被阻止。 开发人员将接受审查,必须使用私钥签署他们的应用程序,由Nextcloud代码签名机构签名,这确保即使成功侵入应用商店帐户也不会发生恶意应用程序上传到用户系统的情况。

更多请参见:blog about appstore improvements、 blog about app signing.

More...

Jan. 18, 2017

【谷歌精选】安卓FTP工具Turbo FTP client & SFTP client

圆滑,直观,强大的Andr​​oid FTP/SFTP客户端

 

很久前就找到了这款安卓FTP应用,相比于AndFTP,它界面美观、易于操作,而且没有插入广告

介绍视频(扒自Youtube):

作为站长,我不能每时每刻都守在电脑前,有些事情不得不在手机上完成,FTP就是一例,在各大应用商店找了一圈后,发现了TurboFTP。流畅美观的界面让我十分欣喜,并且附带了强大的Turbo Editor文本编辑器。
截图:

More...

Jan. 17, 2017

分享一下本站的配置

本站刚刚迁移至国内主机,不再使用国外的虚拟主机。对我来说,终于可以施展拳脚,下面分享一下本站的一些配置上的信息。
问了几个朋友,对这个站的反馈基本上是秒开(≧∇≦)/

主机商:阿里云

基本配置:CPU×1 内存2GB 带宽1Mbps(不用怀疑了,用的就是阿里的半年免费主机)

More...

Jan. 15, 2017

OC音乐播放器插件Audio Player

ownCloud官方音乐播放器插件Music是个不错的选择,但显示中文歌名时会有乱码。Audio Player不仅没有这个问题,还提供了更多功能。

描述:

音频播放器的常用格式有很多的灵活性和满足你所有的需要。

特点

多视图(专辑的封面或更多)

图书馆是一个命令行扫描和复位和浏览器

More...

Jan. 15, 2017

可怕:WP站一定要做好仿垃圾评论工作

从建站开始,垃圾评论就屡见不鲜,基本上都是用软件刷的。国内国外,法文俄文英文中文德文都有,起初是零零星星的,不过最近开始变得猖獗,旧站一天没管二十几条垃圾评论,新站刚完成迁移,垃圾评论就接踵而至。

早就听闻Akisment插件,之前因为垃圾评论不多而没有使用,现在派上了用场。

More...

Jan. 12, 2017

icp备案通过,即将更换域名

本站即将更换域名为orgleaf.com,更换后使用国内主机,访问速度更快。
等待了近两个星期后,今天10点钟接到了山东管局的短信,我的那个高兴啊 :oops: 。

毕竟第一次完全0经验备案。

简单说说我的备案经历吧。

之前打算用新网的云虚机(第一个域名就是在新网注册的),之后就接到他们客服电话,跟我说要备案。新网没有代备案系统,备案需要到他们公司当面核验,对我来说要去山东济南公司(我在济宁哎),不得不放弃了。之后就用国外OpenShift、Godaddy的主机,直到现在。

More...

Jan. 9, 2017

ownCloud联络簿插件:Contact

简介

ownCloud的联系人应用程序。

它将用ownCloud 9.0替换旧的联系人应用程序,并且只是移动到ownCloud Core中的新CardDAV后端的前端。  GitHub:https://github.com/owncloud/contacts

More...

Jan. 6, 2017

网盘关闭不用怕:利用Docker和OSS轻松搭建ownCloud专属网盘

14826478775012

文件共享是团队协作的刚需,面对说停就停的网盘服务,很多同学除了心塞已经开始盘算搭建自己的网盘应用了。

More...

Jan. 5, 2017

【美文】远方

远方,始终有一个声音在灵魂深处轻轻地吟唱,那是你温柔而亲切的声音吗?

远方,始终有一份牵挂在美丽诱惑中痴长着长久的悬想,那是你真诚而善良的眼睛么?

你说:也许,忧伤的根源只是爱情,流浪的脚步只为信念。于是,远方,荡漾着朝朝暮暮的遥想,年轻的阳光梦开始蜕变成叛逆,萌动的双翅飞飘进潮湿而温馨的土地。你从远方来,带着梦幻,带着憧憬,带着远方的挚爱和情怀,走进我的思念,走进我的生活。

More...

Jan. 1, 2017

【ownCloud】9.1.3安装完整演示教程

[video src=“https://www.orgleaf.com/video/1795.html”][/video] 花了2天的功夫总算做出来了

主要演示VMware、LAMP环境搭建、操作数据库和安装ownCloud。

第一次做这样的教程,中间犯了不少小错误,有的剪掉重录,有的干脆作为反面教材。(没理清思路,所以视频里会有迷之沉默~)

More...

Dec. 28, 2016

私有云盒子:Nextcloud box

Nextcloud悄然推出Nextcloud box。将Nextcloud放到了一个类似天猫魔盒的小盒子中,用户无需进行复杂配置就能使用。

Nextcloud box技术数据:

来自WDLabs的1 TB USB3硬盘驱动器 Nextcloud实例与驱动器主板 microUSB充电器,电缆和适配器,螺丝刀和螺丝 microSD卡与Snappy Ubuntu Core作为操作系统,包括Apache,MySQL和最新的Nextcloud 10预安装并准备好 盒子不带有树莓派。

Box与Raspberry Pi 2和3以及oDroid C2硬件兼容。

More...

Dec. 25, 2016

虚拟机中CentOS 7 网络和ssh的配置

一、centos7 的网络配置:

1.修改主机名:

echo "hostname tshare365.localdomain" >>/etc/sysconfig/network
然后:
reboot
即可生效!

2.查看MAC地址:

ip addr
blob.png

3.修改网络配置:

(1)找到需要的网络配置参数:

打开虚拟机网络设置,具体步骤如下:

虚拟机中CentOS 7 网络和ssh的配置

出现如下界面:

More...

Dec. 21, 2016

《春天》欧亨利 英文原文

It was a day in March. Never, never begin a story this way when you write one. No opening could possibly be worse. It is without imagination. It is flat and dry. But here it is allowable, because the following sentence is too extravagant to be thrown in the face of the reader without preparation.

Sarah was crying over the menu. Think of a New York girl crying over a menu card! To explain this you will probably guess that the lobsters were all out, or that she had ordered onions, or that she had just come from a cinema. But all your guesses are wrong. Sarah was crying over the menu she was going to type. That was her work - typing. She was a typewriter and worked at home. The greatest success of Sarah's battle with the world was the deal she made with Schulenberg's Home Restaurant. The restaurant was next door to the old building where she had a room. One evening, after dining at Schulenberg's Sarah took the menu away with her. It was written in almost unreadable handwriting, neither English nor German, and if you were not careful you began with the dessert and ended with the soup. The next day Sarah showed Schulenberg a beautifully typewritten menu. Schulenberg was so pleased that he made an agreement with her. She would type menus for the twenty-one tables in the restaurant - a new menu for each day's breakfast, lunch and dinner - and in return for this Schulenberg would send three meals a day. Both were satisfied with the agreement. Schulenberg's clients now knew what the food they ate was called. And Sarah had food during a cold, dull winter, which was the main thing for her. Then the calendar lied, and said that spring had come. Spring comes when it comes. New York City was still in the power of winter with frozen snows of January still lying in the streets. One afternoon Sarah was shivering in her bedroom. She had no work to do except Schulenberg's menu cards. Sarah sat in her rocking chair and looked out the window. The calendar on the wall kept crying to her: "Springtime is here, Sarah -springtime is here, I tell you. Look at me, Sarah, my figures show it. You've got a neat figure yourself, Sarah - a nice springtime figure - why do you look out the window so sadly?" Sarah's room was at the back of the house. Looking out the window she could see the window-less brick wall of the box factory in the next street. But it seemed to her that she was looking at a grassy lane shaded with cherry trees, raspberry bushes and roses. Last summer Sarah had gone into the country and fallen in love with a farmer. (In writing your story never go backwards like this. It is bad art, and destroys interest.) Sarah stayed two weeks at Sunnybrook Farm. There she learned to love old Farmer Franklin's son Walter. It was in this shaded lane that Walter told her about his love. And together they had sat and made a crown of dandelions for her hair. He had praised the effect of the yellow flowers against her brown hair; and she had left the dandelions there, and walked back to the house swinging her straw hat in her hands. They were to marry in the spring - at the very first signs of spring, Walter said. And Sarah came back to the city to hit her typewriter. A knock at the door drove away Sarah's dreams of that happy day. A waiter had brought the rough draft of the Home Restaurant's menu for the next day. Sarah sat down to her typewriter. Today, there were more changes on the menu than usual and the spirit of spring filled the whole list. Sarah's fingers danced over the typewriter. Just above the desserts came the list of vegetables. Carrots and peas, asparagus on toast, tomatoes and corn, cabbage -and then - Sarah was crying over the menu. Tears from the depths of despair rose in her heart and gathered to her eyes. Down went her head on the little typewriter; and the keyboard rattled a dry accompaniment to her sobs. For she had received no letter from Walter in two weeks, and the next thing on the menu was dandelions - dandelions with some kind of egg - but the egg didn't matter! - dandelions, with whose golden flowers Walter had crowned her his queen of love and future bride - dandelions, the messengers of spring - reminder of her happiest days. But what a witch is Spring! Into the great cold city of stone and iron a message had to be sent. There was none to bring it but the little messenger of the fields with his rough green coat, the dandelion. By and by Sarah forced back her tears. The menu cards must be typed. But, still in a faint, golden light from her dandelion dream, she fingered the typewriter keys absently for a little while, her mind and heart in the meadow lane with her young farmer. But soon she came back to the stone lanes of Manhattan, and ,the typewriter began to rattle and jump like a motor car. At six o'clock the waiter brought her dinner and carried away the typewritten menu. When Sarah ate, she put aside, with a sigh, the dish of dandelions. Love may, as Shakespeare said, feed on itself: but Sarah could not force herself to eat the dandelions that reminded her of the happiest days of her life. At seven thirty the couple in the next room began to quarrel; the man in the room above looked for A on his flute; the gas light went a little lower; cats could be heard on the back fences. By these signs Sarah knew that it was time for her to read. She got out her book and started reading. The front door bell rang. The landlady answered it. Sarah listened. Oh, yes; you would, just as she did! And then a strong voice was heard in the hall below, and Sarah jumped for her door, leaving the book on the floor. You have guessed it. She reached the top of the stairs just as her farmer came up, three steps at a jump, and hugged her tightly. "Why haven't you written - oh, why?" cried Sarah. "New York is a pretty large town", said Walter Franklin. "I came in a week ago to your old address. I found that you had gone away on a Thursday. The police and I have been hunting you ever since". "But I've written to you!" cried Sarah. "Never got it!" "Then how did you find me?" The young farmer smiled a springtime smile. "I dropped into that Home Restaurant next door this evening", said he. "I don't care who knows it; I like a dish of some kind of greens at this time of the year. I ran my eye down that nice typewritten menu looking for something like that. When I got below cabbage I turned my chair over and shouted for the owner. He told me where you lived". "I remember", sighed Sarah, happily. "That was dandelions below cabbage". "I'd know the capital W above the line that your typewriter makes anywhere in the world", said Franklin. "Why, there's no W in dandelions", said Sarah, in surprise. The young man took the menu out of his pocket, and pointed to a line. Sarah recognised the card she had typed that afternoon. There was still a mark in the upper right-hand corner where a tear had fallen. But over the spot where one should have read the name of the meadow plant, the memory of their golden flowers had allowed her fingers to strike strange keys. Between the red cabbage and the stuffed green peppers was the following: "DEAREST WALTER, WITH HARD-BOILED EGG".

Springtime on the menu

More...

Dec. 18, 2016

人教版高一化学必修一 化学方程式总览

高一化学方程式总结

资料来源于网络和人教版高中化学必修一

一、钠及其化合物

1、钠与氧气:常温:4Na + O2 == 2Na2O 点燃:2Na + O2 Na2O2 2、钠与水反应:2Na + 2H2O == 2NaOH + H2↑ 离子方程式:2Na + 2H2O == 2Na++ 2OH-+ H2↑ 3、钠与硫酸反应:2Na + H2SO4 == Na2SO4+ H2↑ 4、氧化钠与水反应:Na2O+H2O == 2NaOH 5、过氧化钠与二氧化碳反应:2Na2O2 + 2CO2 == 2Na2CO3+ O2 6、过氧化钠与水反应:2Na2O2 +2H2O == 4NaOH + O2↑ 离子方程式:2Na2O2 +2H2O == 4Na+ + 4OH-+ O2↑ 7、NaOH溶液通入少量CO2:2NaOH +CO2 == Na2CO3 +H2O 离子方程式:2OH-+CO2 == CO3 2-+H2O NaOH溶液通入过量CO2:NaOH +CO2 == NaHCO3 离子方程式:OH-+CO2 == HCO3- 8、①向碳酸钠溶液滴入少量稀盐酸:Na2CO3+ HCl == NaHCO3 + NaCl 向稀盐酸溶液滴入少量碳酸钠:Na2CO3+ 2HCl == 2NaCl +CO2↑+H2O ②除去碳酸氢钠中混有的碳酸钠:Na2CO3 + CO2 + H2O == 2NaHCO3 ③碳酸钠与氢氧化钙:Na2CO3 +Ca(OH)2 == CaCO3 ↓+2NaOH ④碳酸氢钠与盐酸: NaHCO3 + HCl == NaCl +CO2↑+H2O ⑤少量碳酸氢钠溶液滴入氢氧化钙溶液中:NaHCO3 +Ca(OH)2 ==NaOH+CaCO3 ↓+H2O 少量氢氧化钙溶液滴入碳酸氢钠溶液中:2NaHCO3 +Ca(OH)2 == Na2CO3 +CaCO3 ↓+2H2O ⑥除去碳酸钠溶液中的碳酸氢钠:NaHCO3 + NaOH == Na2CO3 +H2O ⑦除去碳酸钠固体中的碳酸氢钠:2NaHCO3Na2CO3 +CO2↑+H2O ⑧鉴别碳酸钠和碳酸氢钠溶液:Na2CO3 +CaCl2 == CaCO3 ↓+2NaCl

二、铝及其化合物

1、铝与氧气的反应:4Al + 3O2 2Al2O3 2、铝与氧化铁反应(铝热反应):2Al + Fe2O3 2Fe + Al2O3 3、铝和稀盐酸:2Al +6HCl == 2AlCl3 +3H2↑ 离子方程式:2Al + 6H+ ==2Al3+ +3H2↑ 4、铝和NaOH溶液:2Al +2NaOH +2H2O == 2NaAlO2 +3H2↑ 离子方程式:2Al +2OH-+2H2O == 2AlO2- +3H2↑ 5、氧化铝和稀硫酸:Al2O3 +3H2SO4 == Al2(SO4)3 +3H2O 离子方程式:Al2O3 + 6H+ == 2Al3+ + 3H2O 6、氧化铝和NaOH溶液:Al2O3 + 2NaOH == 2NaAlO2 +H2O 离子方程式:Al2O3 + 2OH-== 2AlO2- + H2O 7、氢氧化铝和稀盐酸:Al(OH)3 +3HCl == AlCl3 +3H2O 离子方程式:Al(OH)3 +3H+ == Al3+ + 3H2O 8、氢氧化铝和NaOH溶液:Al(OH)3 + NaOH == NaAlO2 +2H2O 离子方程式:Al(OH)3 +OH-==AlO2-+ 2H2O 9、氢氧化铝受热分解:2Al(OH)3Al2O3 +3H2O

10、硫酸铝与氨水反应: Al2(SO4)3 +6NH3•H2O == 2Al(OH)3↓+ 3(NH4)2SO4 离子方程式: Al3+ + 3NH3•H2O == Al(OH)3↓+ 3NH4+ 11、AlCl3溶液中加入少量NaOH溶液:AlCl3 + 3NaOH ==Al(OH)3↓+ 3NaCl AlCl3溶液中加入过量NaOH溶液:AlCl3 + 4NaOH == NaAlO2+ 3NaCl+ 2H2O 12、往NaAlO2溶液中通入少量CO2:2NaAlO2 +CO2 + 3H2O == 2Al(OH)3↓ + Na2CO3 往NaAlO2溶液中通入过量CO2:NaAlO2 +CO2 + 2H2O == Al(OH)3↓ + NaHCO3 13、电解氧化铝:2Al2O3(熔融)4Al+3O2↑

More...

Dec. 15, 2016

Ubuntu  16.04安装WineQQ

Ubuntu 16.04,但是工作上的很多事情需要QQ联系,然而在Ubuntu上的WebQQ很是不好用,于是在网上搜索了好多个Linux版本的QQ,然而不是功能不全,就是界面丑到爆,要么就是不稳定;最后,找到了个人认为最好用的QQ—WineQQ国际版。

More...

Dec. 11, 2016

国产PHP网盘程序PHPDisk安装体验

PHPDISK网盘系统[简称:PHPDISK],是一套采用PHP和MySQL构建的网络硬盘(文件存储管理)系统,可替代传统的FTP文件管理。

友好的界面,操作的便捷深受用户的欢迎。 她是一套可用于网络上文件办公、共享、传递、查看的多用户文件存储系统。广泛应用于互联网、公司、网吧、学校等地管理及使用文件,多方式的共享权限,全方位的后台管理,满足从个人到企业各方面应用的需求。

More...

Dec. 10, 2016

Google国内开发者网站上线

今年的Google开发者大会在中国如期举行,遗憾的是,Google大陆区总裁Scott Beaumont被问及“何时返回国内”时,给出了“没有计划,没有什么好说”的答复。

虽然Google回到大陆还遥遥无期,总算有一件事可以让中国开发者们高兴起来,那就是为中国开发者而开设的Google Developers网站上线了。

More...

Dec. 5, 2016

Nextcloud11 beta2测试版发布

Nextcloud团队12月1日发布11 beta2版本,开放测试:

我们发布了Nextcloud 11的Beta 2,我们期待更多的反馈和错误报告! 关于为什么要测试的一些坚定的论点,请参阅我们早期的博客关于第一个测试版的文章。 该版本的目标是在本月晚些时候。帮助我们让Nextcloud 11稳定运转!我们特别感谢升级过程的测试,因为我们已经进行了严肃的检修。和上次一样,应用程序及其兼容性是另一个需要您测试的领域!如果你勇敢地在生产中测试,至少确保做一个数据库备份。并在Github报告在这里找到的任何问题。
测试版下载地址:Neztcloud11 beta2

Github:Nextcloud Github

More...

Dec. 4, 2016

ownCloud 9 视频介绍

[video width=“1280” height=“720” mp4=“https://www.orgleaf.com/wp-content/uploads/2016/12/Guided-Tour-of-ownCloud-9.mp4” poster=“https://www.orgleaf.com/wp-content/uploads/2016/12/S61204-14114676.jpg”][/video]

Dec. 3, 2016

文件共享软件公司ownCloud为何倒闭

你可能和我的想法一样:什么?大清亡了? 没错,2016年6月2日,ownCloud联合创始人Frank Karlitschek宣布他正在开始一个新的开源的基础设施即服务(IaaS)云项目和公司(就是Nextcloud)。同一天,ownCloud宣布其正在关闭其美国办事处。
ownCloud公司是(或者说曾经是)一家波士顿地区的向商务用户销售文件共享软件的公司。与其竞争对手Dropbox公司一样,为用户提供文件的存储和分享服务。 但这6月份的那个周四,这家经营五年的ownCloud公司不复存在了。只剩下位于德国的ownCloud GMBH保持运行,继续与新的对手-Nextcloud竞争。

和他的竞争对手不同,ownCloud公司的业务基于一款开源软件,这意味着每个人都可以免费下载ownCloud程序。如果你使用的是免费版(ownCloud.org),想要在企业中使用它,并需要更强大的商业功能,你就可以从ownCloud公司那儿购买企业版。 ownCloud Inc.总部位于马萨诸塞州列克星敦,拥有1000万美元的资金,包括两年前的630万美元。据ownCLoud公司介绍,其客户包括欧洲核研究实验室CERN; Meritus健康和阿尔伯特爱因斯坦医学院。

More...

Nov. 30, 2016

【分享】Linux常用命令

文章转自tshare365,作者wood-man
​#本文档仅罗列了一些常用命令及其使用频率较高的参数. #您对本文档的建议和意见,可加入“Linux运维技术交流 347163978”并“@木头人”,谢谢! #version 2.7  一、关于文件和目录的基本命令 #ls  -F  区分文件类型,通常目录加"/" 可执行加"*" -i  显示inode -l  长列表 -r  反序 -S  按大小排序 -X  按文件扩展名排序 -t  按修改时间排序 -lg 不显示UID -lG 不显示GID -lu 输出最后的访问时间 -lh 进率为1000,根据文件大小显示K、M、G  -ln 以数字替换UID和GID -d  显示目录即"." #stat 查看文件的所有信息(inode size 时间戳),但没有文件类型。 stat filename  #touch 改变文件的时间戳,但经常被用来创建空白文件 -c  什么也没有发生 -d  修改访问时间和修改时间,  格式 touch -d "yyyy-mm-dd hh:mm:ss"  filename -md  仅变更修改时间 -ad  仅变更访问时间  touch -t mdyHM filename 修改amc时间  touch -d "3 days ago" filename #支持昨天yesterday、tomorrow等  #file 查看文件类型,分成三类:文本、可执行、数据 file filename  #type 用于查看命令类型 type commond  #cat cat filename  查看文件内容 cat -n      每行加上序号,等效“nl filename” cat -s     连续多个空行压缩为一个空行 cat -T      用"^I"替换制表符 #nl  默认nl=“nl -b t” -b t 空行不计入行号 -n (ln,rn,rz)左对齐、右对齐、补零 -w  行号的位数 1

2

More...

Nov. 27, 2016

Ubuntu上通过openfire搭建XMPP服务器

因为打算写一篇ownCloud中xmpp聊天插件的教程,其中比较关键的一部分是搭建XMPP服务器。先提前从网上找了一个现成的教程,不过到时候我还是会亲自演示一遍的。

原教程比较老了,改了几个地方。

我已经按照如下教程顺利搭建成功。

1.首先登录到ubuntu server。在安装openfire 服务器之前,先确保你的系统已经更新到最新。然后输入下面的命令,一行一行执行,最后安装可用的更新

More...

Nov. 26, 2016

开源代码、笔记软件QOwnNotes:同步笔记到ownCloud

QOwnNotes是一款支持markdown的开源(GPL)纯文本文件记事本,拥有GNU / Linux,Mac OS X和Windows客户端,能与与ownCloud(或Nextcloud)的笔记应用程序一起工作。(ownCloud需要安装QOwnNotesAPI插件)
  • 可以创建编辑笔记,并把它们存储到你的电脑上。
  • 可以把笔记同步到ownCloud服务器中
  • 在网页上用ownNote编辑你的云笔记
 
这款云笔记扩展了ownCloud原有的ownNote的功能,使你可以在GNU / Linux,Mac OS X和Windows客户端上创建、编写笔记,笔记以纯文本形式存储到你的电脑里,并且可以通过前面说的三种客户端,将笔记同步到ownCloud中,并通过ownNote进行在线编辑。可以与ownTask协同工作。

 相关链接

GitHub

QOwnNotes installation

More...

Nov. 23, 2016

【分享】Vim 新手节省时间的 10 多个小技巧

我的其它文章中往往涉及文件的修改,大多是直接在命令行上进行,分享以下文章,希望帮到你

这篇文章为 Vim 新手提供一些快捷键等方面的小技巧,帮你提升工作效率。

1. 配置 .vimrc

当我最初使用 vim 的时候,我浪费了好多时间来缩进代码,我不知道通过修改 Vim 的
.vimrc
配置文件来实现代码缩进、语法高亮、显示行号等功能。

在你的 Home 目录下创建一个 .vimrc 文件,添加下面的代码来设置行号、代码缩进等

More...

Nov. 21, 2016

【ownCloud】通过后台管理进行版本更新

曾经写过两种更新ownCloud的方法:通过安装包更新OCC命令更新,前者比较麻烦,而后者还不大好使、容易出问题。

本教程演示如何在Nextcloud上通过管理页面进行更新(与ownCloud基本相同,之前测试Nextcloud,懒得换了)

nc-update01

进入Updater

收到更新后,点击“打开更新管理器” nc-update02

似乎没有反应······耐心等几秒,页面会跳转

More...

Nov. 20, 2016

【ownCloud】配置Redis内存缓存

Redis是一个高性能的key-value存储系统,能够作为缓存框架和队列.

使用Redis做内存缓存可以有效提升程序运行速度。

以Nextcloud为例,演示如何配置Redis内存缓存。(ownCloud的操作步骤和Nextcloud没什么差别)

nc-redis

More...

Nov. 19, 2016

【ownCloud】日历插件Calendar

一款清爽、高效的日历插件 oc-calendar
通过日历应用,您可以创建和修改活动,与您使用的其他日历同步,并创建新的个性化日历。

支持ownCloud/Nextcloud版本:8.0~9.1/10.1

授权协议:AGPL

插件页面:https://apps.owncloud.com/content/show.php/Calendar?content=168707

不同版本下载链接:

ownCloud 9.1
ownCloud 8.0
ownCloud 8.1
ownCloud 8.2
ownCloud 9.0
 

ownCloud9.1中插件安装方法:插件->Productivity->找到Calendar->安装->启用

More...

Nov. 18, 2016

“另一个OC”Nextcloud简介

Nextcloud作为ownCloud的衍生版本,在其基础上做了许多改进,可以一试。

安装方法与ownCloud基本······呃,完全相同

为什么会有Nextcloud

2016年4月27日,ownCloud联合创始人Frank Karlitschek宣布离开ownCloud ltc.,转而成立另一家公司“Nextcloud”。由于ownCloud程序本身归其开发人员所有,所以Nextcloud可以直接使用ownCloud的核心技术。

[video width=“960” height=“540” mp4=“https://www.orgleaf.com/wp-content/uploads/2016/12/Nextcloud.mp4”][/video]

More...

Nov. 16, 2016

【ownCloud】增强图库插件Gallery+

一款功能丰富强大的图片预览插件
支持ownCloud版本:9.0

最新更新时间: 2016年 7月 21日

ocp-gallery-2

简介:

注意事项:

目前支持PHP 5.5+,下一个版本将仅支持PHP5.6 在激活这个插件之前,需要先关闭官方的图库插件,然后清空浏览器缓存。

Gallery+能够预览大多数格式的图片,可以添加图片、创建公开链接。 这个插件更适合在nextcloud上运行。

More...

Nov. 16, 2016

全站改版基本完成

主要是换了个主题,抛弃了原来的盗版begin。

毕竟盗版主题用着心里不踏实。

新主题是国外的一款付费主题,不知道西方人为什么喜欢把页眉做那么高ヾ(´・ ・`。)ノ",占了接近一小半的空间。自己调了调样式才看得顺眼。

More...

Nov. 14, 2016

【分享】CentOS7下MySQL安装方法

CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。

1. 下载mysql的repo源

$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

2. 安装mysql-community-release-el7-5.noarch.rpm包

$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
安装这个包后,会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo。

3. 安装mysql

$ sudo yum install mysql-server
根据步骤安装就可以了,不过安装完成后,没有密码,需要重置密码。

4. 重置密码

重置密码前,首先要登录
$ mysql -u root
登录时有可能报这样的错:ERROR 2002 (HY000):
Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2),
原因是/var/lib/mysql的访问权限问题。下面的命令把/var/lib/mysql的拥有者改为当前用户:
$ sudo chown -R openscanner:openscanner /var/lib/mysql
然后,重启服务:
$ service mysqld restart
接下来登录重置密码:
$ mysql -u root
mysql > use mysql;
mysql > update user set password=password(‘123456‘) where user=‘root‘;
mysql > exit;

5. 开放3306端口

$ sudo vim /etc/sysconfig/iptables
添加以下内容:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
保存后重启防火墙:
$ sudo service iptables restart
这样从其它客户机也可以连接上mysql服务了。

Nov. 12, 2016

【ownCloud】9.2版本特色

ownCloud9.2版本已经在开发中了,目前有以下更新:

常规

文件系统

文档目录

oc9-2feathure01 oc9-2feathure02

Dav应用

分享

小修改

开发

Nov. 12, 2016

【ownCloud】CentOS下SELinux的详细设置

之前的ownCloud安装过程中,因为SELinux会对apache的读写进行限制,所以直接禁用掉。为了提高安全度,建议开启SELinux。

安装policycoreutils-python

CentOS系统默认没有安装policycoreutils-python,所以无法使用semanage命令

yum install policycoreutils-python -y

semanage

[caption width=“598” id=“attachment_1154” align=“alignnone”]安装截图 安装截图[/caption]

More...

Nov. 10, 2016

2016.11.10初中与高中的不同

初中与高中虽然都属中学,但就我的感受来说,是大有不同的。

首先从作业方面,初中一般是放学前布置作业,晚上完成,第二天收。时间非常固定。而高中作业一般是老师当堂布置,很少检查,在讲解作业题之前完成就行。有时不口头布置,作业都是常规的,比如刚学了新课,就有同步练习册要做,不必说,是自然而然的作业。

More...

Nov. 8, 2016

【ownCloud】文件夹权限设置详解

对于ownCloud目录,为了方便我一直都是粗略地设置为770或650,用户为Apache,现在说一下细致的设置
linux-security
  • Debian/Ubuntu系统的网页服务器用户名和组是
    www-data
  • Fedora/CentOS系统的网页服务器用户名和组是a
    apache
  • Arch Linux系统的网页服务器用户名和组是
    http
  • openSUSE系统的网页服务器用户名是
    wwwrun>
    , 组是
    www

快速设置脚本

以下脚本可以帮助你快速进行设置
#!/bin/bash
ocpath='/var/www/owncloud'
htuser='www-data'
htgroup='www-data'
rootuser='root'

printf “Creating possible missing Directories\n” mkdir -p $ocpath/data mkdir -p $ocpath/assets mkdir -p $ocpath/updater

More...

Nov. 4, 2016

【分享】Linux下文件查找

前言

在我们的Linux下有成千上万个系统文件,还有许多我们自己创建的文件,在Windows下我们需要查找文件的时候可以去搜索里面输入文件名然后自动去查找在Linux下同样也可以这样去操作,看起来是不是很酷!在Linux下有好多常用的查找命令,我们一一来介绍。 linux-logo

一、Whereis 程序名的搜索

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息

1.1、查看帮助信息

看到一个命令的时候,请养成这样的习惯去help一下
1
2
3
[root@tshare365 ~]
# whereis  --help
whereis
 
[ -sbmu ] [ -SBM 
dir
 
... -f ] name...
[root@tshare365 ~]
#
参数说明:

-b 只查找二进制文件 -m 只查找帮助文件 -s 只查找源代码 -u 排除指定类型文件 -f 只显示文件名 -B <目录> 在指定目录下查找二进制文件 -M <目录> 在指定目录下查找帮助文件

More...

Nov. 3, 2016

【分享】CentOS安装EPEL源

一、下载epel源

通过国内的镜像网站下载自己需要的源

在http://mirrors.sohu.com/fedora-epel/目录下,有对应不同的版本

epel-release-latest-5.noarch.rpm

epel-release-latest-6.noarch.rpm

epel-release-latest-7.noarch.rpm

1.1、 确认你的CentOS 的版本

第一种方法

More...

Nov. 1, 2016

恢复了网站的评论功能

很久很久没有新评论了,虽然是小站,没什么人,可还是感觉奇怪。自己一试,发现评论不能用了,点击提交后没有反应。

起初以为是主题出了毛病,后来经过多番尝试,发现关闭CDN后,评论功能正常,开启后就不行。百度了一下,原来WORDPRESS开启CDN后无法评论的情况并不少见。让comment-ajxa.js文件从网站服务器上获得,评论就正常了。

More...

Oct. 31, 2016

【私有云】迷你云安装体验

国内的私有云方案除了Seafile之外还有一家:迷你云。

迷你云是通过把后端部署到你自己的服务器上,然后通过它提供的网页前端访问。当然也可以自己部署前端,不过有限制。(觉得这种方式好奇怪啊)

logo

迷你云官方给出的安装教程够用了,各种系统的都很详细,所以我这里只说一些体验感受。Linux系统编译的时候可能会遇见一个小问题:make时time 15602s in the futrue错误

More...

Oct. 30, 2016

【作业】遥看人工智能Word版下载

点击按钮下载

[file]http://wp-franlin.b0.upaiyun.com/downlaod/ai.docx

Oct. 30, 2016

听说Google有重返中国的意思

对Google前些年在中国发生的事情不是很了解,反正记得6、7年前Google还是可以正常访问的。到了2010年(记不清了)七八月份,突然不行了,偶尔可以加载出一点点,现在是完全不行了。不fq的话,只有翻译和地图能用(翻译只能用api,网站打不开)

More...

Oct. 29, 2016

【ownCloud】关于维护模式的设置

ownCloud的升级等等操作都需要开启维护模式

可以通过OCC命令(【ownCloud】之终极管理:OCC命令行工具)或修改config.php文件来切换维护模式,视情况而定。

开启维护模式后,访问ownCloud会出现以下页面

More...

Oct. 28, 2016

【站长说】心声·我心里的话

今天上午左眼皮一直跳,显然这是连续3天11点多睡觉的结果。

这个博客建立了大约3个月了,最近陆陆续续有了真实的流量。

[caption id=“attachment_1068” align=“alignnone” width=“493”]10-28liuliang 今天中午前的流量[/caption]

这自然令人高兴的,我的辛苦没有白费。

这个站建立之初只是为了涨涨经验,甚至刚建立的时候连SEO是什么都不知道。建站时是想涨一些服务器技术上面的经验,然而虚拟主机并不需要我去管理多少,于是我在建站时更多的是SEO,博客的要内容选择了ownCloud,现在慢慢向私有云这个大方向转移。

More...

Oct. 27, 2016

make时time 15602s in the futrue错误

编译安装迷你云,make时遇到了一个错误:

make[1]: Warning: File `libbb/Makefile.in' has modification time 15620s in the future

这是因为编译文件的修改日期晚于系统日期,可能是系统日期不正确或时差所致。

解决方法:临时改一下系统时间


# date 10/27/2017

# make && make install

Oct. 25, 2016

【作业】人工智能的发展历史

人工智能报告

  1. 前言
  2. 人工智能的起源和发展
      起源
      发展
  3. 当前技术水平
  4. 最后
 

前言

一个典型的例子是年初AlphaGO与李世石博弈。虽然不是人类第一次输给电脑,但上次是全靠电脑计算快,而且相对于围棋来说,国际象棋的难度较低。而这次,AlphaGO的围棋技艺并非全是人类通过代码告诉它的,它是通过自我学习掌握了大部分技艺

电影《人工智能》是人类对未来的一种消极的预想,我们看过的人类被机器人蹂躏的电影电视剧也不少,不禁让我们产生一种担忧,如果人工智能真的成熟了,它会像电影中那样失去控制,受伤的是人类呢?

More...

Oct. 24, 2016

人工智能时间轴

1900

日期 发展
古代 的希腊神话赫菲斯托斯皮格马利翁结合智能机器人(如理念塔洛斯)和人造生命(如加拉蒂亚潘多拉)。[1]
古代 严氏呈现周穆王与机械人。[2]
古代 神圣的佛像机械建于埃及希腊被认为是有能力的智慧和情感。赫耳墨斯·特里斯墨吉斯忒斯会写“他们有共识 ......通过发现神的真正性质,人类已经能够复制它。” 马赛克法律禁止使用的自动机器宗教。[3]
公元前384 - 公元前322年 亚里士多德所描述的三段论,正式的,机械的思维方法。
1世纪 苍鹭亚历山大创造了机械人等自动机[4]
260 Tyros的斑岩写道Isagogê里面分门别类的知识和逻辑。[5]
〜800 迦别发展了阿拉伯炼金理论Takwin,在实验室中人工制造的生活,甚至包括人的生命。[6]
1206 加扎利创造了一个可编程的机械人的乐团。[7]
1275 拉蒙Llull,西班牙神学家发明了人工鱼礁麦格纳,用于机械相结合的概念的基础上,一个工具,阿拉伯语占星工具,该Zairja。该方法将进一步开发莱布尼兹在17世纪。[8]
〜1500 帕拉塞尔苏斯声称已经创造了一个人造人从磁,精子和炼金术的。[9]
〜1580 拉比犹大勒夫本比撒列布拉格,据说已发明了傀儡,粘土男子带到生活。[10]
17世纪初 笛卡尔提出,动物的尸体只不过是复杂的机器,更多的(但心理现象是不同的“物质”)。[11]
1623 威廉Schickard画上了一封信给一个计算时钟开普勒。这将是第一个五个不成功的尝试在设计一个直接进入 17世纪(包括的设计计算时钟铁托Burattini塞缪尔·莫兰勒内·格里耶))。[12]
1641 托马斯·霍布斯公布的利维坦,并提出认知的机械,组合理论。他写道:“......为理由无非是精打细算。” [13] [14]
1642 帕斯卡发明了机械计算器[15]第一个数字 计算机[16]
1672 莱布尼兹提高了早期的机器,使得阶梯览乘法除法。他还发明了二进制数字系统和预想的推理(的普遍演算人类思想的字母表),通过该参数可以机械地决定。莱布尼茨曾在分配特定数量每在世界上每一个对象,作为一个前奏代数解决所有可能出现的问题。[17]
1726 乔纳森·斯威夫特公布的格列佛游记,其中包括这个描述的发动机,在岛上的一台机器天空之城 “项目由实际和机械操作提高理论知识”通过使用这个“诡计”,“最无知的人在一个合理的充电,并用少许身体劳动,可以写成书籍在哲学,诗歌,Politicks,法律,Mathematicks和神学,从天才或研究最少的援助。“ [18]本机是蠢事人工鱼礁麦格纳,一的灵感莱布尼兹 “机制。
1750 朱利安·奥弗雷·拉·美特利公布L'Homme的机器,它认为人类的思想是严格的机械。[19]
1769 沃尔夫冈·冯·肯佩伦建成并与他的足迹遍及象棋 -playing 自动机土耳其人[20]土耳其人后来被证明是一个骗局,涉及人类棋手。
1818 玛丽·雪莱发表的故事怪人; 或现代普罗米修斯,一个虚构的代价创造的道德有情众生。[21]
1822年至1859年 查尔斯·巴贝奇阿达洛夫莱斯工作的可编程的机械计算机器[22]
1837年 数学家伯纳德博尔扎诺取得了第一个现代试图以正式的语义
1854年 乔治·布尔着手“调查由进行推理头脑的这些操作的基本规律,来表达对他们在微积分的符号语言”,发明了布尔代数[23]
1863年 塞缪尔·巴特勒认为,达尔文的 进化也适用于机器,并推测他们总有一天会成为自觉,并最终取代人类。[24]

1900-1950 

日期 发展
1913年 伯特兰·罗素怀特海出版的数学原理它彻底改变了形式逻辑
1915年 莱昂纳多托雷斯Ÿ克韦多建一个国际象棋自动机,萨尔瓦多Ajedrecista并发表了关于思维和自动猜测。[25]
1923年 卡雷尔·恰佩克的发挥RUR(Rossum的通用机器人)在伦敦开设。这是第一次使用“字样的机器人中英文的”。[26]
20世纪二三十年代 维特根斯坦卡尔纳普领先理念变成逻辑分析知识邱奇开发演算用递归函数符号调查可计算性。
1931年 哥德尔表明,足够强大的形式系统,如果一致,允许真正的定理,从任何定理,证明机派生从公理所有可能的定理是无法证明的制定。要做到这一点,他必须建立一个通用的,基于整数的编程语言,这就是为什么他有时也被称为“之父的原因,理论计算机科学 ”。
1941年 康拉德楚泽建的第一个工作日程控计算机。[27]
1943年 沃伦·麦卡洛克沃尔特·皮兹发布(1943年)“的思路无所不在的在神经活动的逻辑运算”,奠定了基础,人工神经网络[28]
1943年 阿图罗Rosenblueth维纳和朱利安·毕格罗硬币术语“ 控制论 ”。维纳的畅销书叫这个名字在1948年出版。
1945年 博弈论这将是非常宝贵人工智能的进步与1944年的论文,介绍了游戏论与经济行为数学家 约翰·冯·诺伊曼经济学家 奥斯卡·摩根斯坦
1945年 万尼瓦尔·布什发表的,因为我们可能认为大西洋月刊,1945年7月)的未来,计算机帮助人类在许多活动的先见之明的眼光。
1948年 约翰·冯·诺依曼(由引ET杰恩斯响应在一次演讲,这是不可能的机器想评论):“你坚持,有一些机器不能做,如果你会告诉我恰恰是一个什么机器不能做到的话,我总是可以使一台机器,这将做到这一点!“。冯·诺依曼大概是影射教会图灵论题其中规定,任何有效的程序,可以通过(广义)的计算机模拟。

20世纪50年代

日期 发展
1950年 阿兰·图灵提出了图灵测试的机器智能的措施。[29]
1950年 香农发表了详细的分析扮演的搜索
1950年 艾萨克·阿西莫夫发表了他的机器人三定律
1951年 第一个工作的AI程序写于1951年到上运行费伦蒂马克1的机器曼彻斯特大学:书面一个跳棋扮演计划克里斯托弗·斯特雷奇和迪特里希普林茨写的象棋对弈程序。
1952年至1962年 阿瑟·塞缪尔IBM)写了第一个玩游戏的程序,[30]为跳棋(草稿),实现足够的技能来挑战一个体面的业余爱好者。他的第一个棋子对弈程序写于1952年,并于1955年他创造了一个版本,学会了玩。[31]
1956年 第一达特茅斯学院 夏季AI会议由主办约翰·麦卡锡马文·明斯基弥敦道罗切斯特IBM克劳德·香农
1956年 这个名字人工智能用于第一次作为第二的话题达特茅斯会议,举办约翰·麦卡锡[32]
1956年 在第一示范逻辑理论家书面(LT)艾伦纽厄尔JC肖司马贺卡内基工学院,现卡内基梅隆大学)。这通常被称为第一个AI程序,虽然塞缪尔的跳棋程序还具有很强的索赔。
1957年 一般问题解决器(GPS)由纽厄尔,肖和西蒙证明。
1958 约翰·麦卡锡(麻省理工学院和MIT)发明了Lisp的编程语言
1958 赫伯特·格勒恩特尔弥敦道罗切斯特(IBM)所描述的定理证明几何形状,它利用的“典型”的情况下,图的形式域的语义模型。
1958 特丁顿会议对思维过程的机械化在英国举行,提交的论文之中是约翰·麦卡锡的常理,程序 奥利弗塞尔弗里奇乌烟瘴气,马文·明斯基一些方法启发式编程和人工智能。
1959年 约翰·麦卡锡马文·明斯基创办了MIT人工智能实验室
50年代后期,60年代初期 玛格丽特·马斯特曼和同事剑桥大学设计语义网机器翻译

20世纪60年代

日期 发展
20世纪60年代 雷Solomonoff奠定了基础数学 AI的理论,实行普遍贝叶斯方法进行归纳推理和预测。
1960年 人机共生由JCR利克莱德。
1961年 詹姆斯Slagle(博士论文,MIT)写(Lisp中)的第一个象征性的整合方案,SAINT,它解决了微积分的问题在大学新生的水平。
1961年 印象中,机器和哥德尔约翰-卢卡斯[33]否认了机器智能的可能性逻辑哲学的理由。他提到了哥德尔的1931年的结果是:足够强大的正规系统要么不一致或允许制定真正的定理无法证明任何定理,证明AI派生从公理可证明所有定理。因为人类能够“看到”这类的定理的真理,机器被认为逊色。
1961年 Unimation公司工业机器人 为Unimate曾在通用汽车公司 的汽车 组装线
1963年 托马斯·埃文斯的计划,打个比方,写他在麻省理工学院的博士工作的一部分,表明计算机可以解决同样的类比问题,作为被赋予智商测试。
1963年 爱德华·费根鲍姆朱利安·费尔德曼出版了计算机和思想,关于人工智能的文章的第一个集合。
1963年 伦纳德UHR和查尔斯Vossler出版的“模式识别程序生成,评估和调整其自己的操作符”,这说明,可以自适应获取和修改功能,从而克服了简单感知的局限性第一台机器学习方案之一布拉特
1964年 丹尼·博布罗的麻省理工学院(麻省理工学院的人工智能小组,技术报告#1论文项目MAC),表明计算机可以理解自然语言不够好,解决代数 应用题正确。
1964年 伯特伦拉斐尔在SIR程序的麻省理工学院博士论文证明了知识的答疑系统的逻辑表示的力量。
1965年 J.艾伦·鲁宾逊发明了一种机械的证明程序,决议方法,它允许程序作为一种表示语言与形式逻辑的工作效率。
1965年 约瑟夫魏泽鲍姆(MIT)建立ELIZA,一个交互式程序上进行对话,进行英语语言上的任何话题。这是在AI流行玩具的中心ARPANET当一个版本的“模拟”一的对话,心理治疗师进行编程。
1965年 爱德华·费根鲍姆发起DENDRAL,为期十年的努力,开发软件来推断使用科学仪器的数据有机化合物的分子结构。这是第一个专家系统
1966年 罗斯奎利恩(博士论文,卡内基研究所,技术,现在CMU)展示了语义网
1966年 机器智能车间爱丁堡-第一次举办一个有影响力的年度系列的唐纳德·米基等。
1966年 机器翻译负面报道杀死大量的工作自然语言处理了很多年(NLP)。
1967年 DENDRAL程序(爱德华·费根鲍姆,约书亚莱德伯格,布鲁斯·布坎南,格鲁吉亚萨瑟兰在斯坦福大学)证明来解释的有机化合物质谱。科学推理第一次成功的以知识为基础的计划。
1968年 乔尔·摩西(麻省理工学院博士学位工作)证明的权力符号推理在集成问题MACSYMA程序。在第一次成功的以知识为基础的程序数学
1968年 理查德·格林布拉特(程序员)在麻省理工学院建立了一个以知识为基础的国际象棋对弈程序MacHack,这是不够好,达到了C级评级的比赛发挥。
1968年 华莱士和博尔顿的计划,孤傲(Comp.J. 11(2)1968年),为无监督分类(集群)采用贝叶斯最小消息长度准则,数学实现奥卡姆剃刀
1969年 斯坦福研究院(SRI):沙基机器人,展示了结合动物运动感知解决问题的能力
1969年 罗杰·尚克(斯坦福大学)所定义的概念为依赖模型的自然语言理解。后来发展(在博士论文耶鲁大学),通过在故事的理解运用罗伯特威伦斯基和温迪Lehnert,并为珍妮特Kolodner了解内存的使用。
1969年 约里克威尔克斯(斯坦福大学)开发语言叫做偏好语义的语义连贯来看,体现在第一个语义驱动的机器翻译程序,很多博士论文,因为如麸皮Boguraev和大卫·卡特在剑桥的基础。
1969年 一是国际人工智能联合会议(IJCAI)在斯坦福大学举行。
1969年 马文·明斯基和西摩·帕尔特发布感知,这表明前馈两层结构的先前未知的限制。这本书是由一些认为标记的开始AI冬季 20世纪70年代,信心和资金AI失败。然而,在该领域的进展显著继续(见下文)。
1969年 麦卡锡和海耶斯开始有关的讨论框架问题与他们的论文“从人工智能的角度出发的哲学问题”。

20世纪70年代

日期 发展
20世纪70年代初 简·罗宾逊和唐·沃克建立一个有影响力的自然语言处理组在SRI。
1970年 海梅卡博(高级)开发的学者,一个交互式程序计算机辅助教学基于语义网络知识的代表性。
1970年 比尔·伍兹描述扩充转移网络(ATN的),作为自然语言理解的表示。
1970年 帕特里克温斯顿的博士课程,ARCH,在麻省理工学院儿童块世界学到的概念从例子。
1971年 特里威诺格拉德的博士论文(MIT)证明计算机来理解英语句子的儿童块的权力有限的世界,在他的语言理解程序的耦合能力SHRDLU,与进行中英文输入指令的机器人手臂。
1971年 在博耶-摩尔定理证明在爱丁堡开始了工作。[34]
1972年 序言开发的编程语言阿兰Colmerauer
1972年 伯爵Sacerdoti开发了第一个分层规划项目之一,ABSTRIPS。
1973年 大会机器人集团在爱丁堡大学建立弗雷迪机器人,能够使用的视觉定位和组装机型。(见爱丁堡弗雷迪装配机器人:一种多功能计算机控制装配系统。)
1973年 莱特希尔报告给出了在英国人工智能研究的一个主要负面的判决,并形成了基础英国政府决定停止对人工智能研究,但在所有的两所大学的支持。
1974年 泰德Shortliffe上的博士论文MYCIN程序(斯坦福大学),表现出了非常实用的基于规则的方法,以医疗诊断,即使在不确定性的存在。虽然从借DENDRAL,自己的贡献的强烈影响未来的专家系统的发展,特别是商业系统。
1975年 伯爵Sacerdoti开发的技术部分订单规划在他的NOAH系统,取代状态空间的描述中搜索以前的范例。诺亚在SRI国际应用于交互式诊断和修复机电系统。
1975年 奥斯汀泰特开发能够搜索的空间NONLIN分层规划系统部分计划定性为替代办法计划的基本目标结构。
1975年 马文·明斯基发表了他广泛阅读和有影响力的文章框架知识的表示,其中约很多想法架构语义链接被带到一起。
1975年 元DENDRAL学习计划产生了新的成果化学(一些规则质谱法)由计算机首次科学发现将发表在一本备受杂志。
70年代中期, 芭芭拉·格罗茨(SRI)建立限制,以传统的AI接近话语建模。由格罗茨,邦妮韦伯和坎迪斯Sidner随后的工作制定了“中心”的概念,建立重点用话语和照应功能自然语言处理
70年代中期, 大卫·马尔麻省理工学院的同事描述了“最初草图”,其作用在视觉感知
1976年 道格拉斯·莱纳特AM程序(斯坦福大学博士论文)展示了发现模型(有趣的猜想松散引导搜索)。
1976年 兰德尔·戴维斯展示了他在斯坦福大学的博士论文元级推理的能力。
1978年 汤姆•米切尔,斯坦福大学,发明的概念版本的空间用于描述搜索空间概念的形成程序。
1978年 司马贺赢得诺贝尔经济学奖,他的理论的有限理性,AI被称为“基石之一令人满意的。”
1978年 的MOLGEN程序,由Mark Stefik和Peter弗里德兰德斯坦福写入,表明一个面向对象的编程知识的表示可被用于计划基因- 克隆实验。
1979年 在斯坦福比尔VanMelle的博士论文证明的一般性MYCIN推理的知识和风格的代表在他的EMYCIN程序,其型号为很多商业专家系统“炮弹”。
1979年 杰克·迈尔斯和哈里·波普在匹兹堡大学开发的内科医生,根据迈尔斯博士“以知识为基础的医疗诊断方案的临床知识。
1979年 科德尔·格林,大卫·巴斯托,伊莱恩康德等人在斯坦福大学展示了CHI系统自动编程
1979年 斯坦福大学的车,通过内置汉斯·莫拉维克,成为第一个电脑控制,自主车型时,它成功地穿越一把椅子缭绕的房间和绕行斯坦福大学人工智能实验室
1979年 BKG,书面步步高程序汉斯·柏林CMU,击败卫冕世界冠军。
1979年 德鲁·麦克德莫特和乔恩·道尔在麻省理工学院和约翰·麦卡锡在斯坦福大学开始出版工作的非单调逻辑和真理的维护形式方面。
20世纪70年代后期 斯坦福大学的SUMEX-AIM资源,由Ed费根鲍姆和约书亚莱德伯格,领导演示了ARPA网的科学协作的力量。

20世纪80年代

日期 发展
20世纪80年代 Lisp机器开发和销售。第一专家系统外壳和商业应用。
1980年 在第一次全国会议的美国人工智能协会(AAAI)在斯坦福大学举行。
1981年 丹尼·希利斯设计了连机,它利用并行计算带来新的力量,AI,以及在通用计算。(后来创立思考机器公司
1982年 第五代计算机系统项目(FGCS),由日本国际贸易部和工业,倡议在1982年开始,以创建“第五代计算机”(见计算机硬件历史),它应该进行利用大规模并行处理多计算。
1983年 约翰·莱尔德和保罗·罗森布鲁姆,与工作艾伦纽厄尔,在完成学位论文CMU 斯奥(程序)。
1983年 詹姆斯·艾伦发明了微积分的时间间隔,时间事件的第一个广泛使用的形式化。
80年代中期, 神经网络变得广泛用用于反向传播 算法(首次描述保罗Werbos于1974年)。
1985年 自治区绘图程序,AARON,通过创建哈罗德·科恩(基于超过十年的工作,并显示出重大发展随后的工作),论证在AAAI全国会议。
1986年 球队恩斯特Dickmanns德国慕尼黑联邦国防军的大学建立第一个机器人车,驾驶高达55英里每小时空旷的街道。
1987年 马文·明斯基发表心灵的协会,我们头脑中的理论描述作为合作的集合代理。他曾讲授的想法年前的书出来(CF多伊尔1983年)。[35]
1987年 大约在同一时间,布鲁克斯推出了包容体系结构基于行为的机器人自然智力更简约的模块化模式; 中篇小说AI
1987年 通过Alacritous Inc./Allstar咨询公司多伦多,第一个商业战略和管理咨询系统商用推出一代迅捷的2.0。该系统是基于一个前向链接,自行研制开发的专家系统,对市场和竞争战略和演化3000规则共同撰写由阿利斯泰尔·戴维森和玛丽涌,与保罗Tarvydas开发的底层引擎公司的创始人。该系统的迅捷也包括了解释财务报表和车型小型金融专家系统。[36]
1989年 院长Pomerleau在CMU创建ALVINN(一个自主车辆在神经网络)。

20世纪90年代

日期 发展
20世纪90年代初 TD-金门,一步步高由格里Tesauro编写的程序,表明强化(学习)功能非常强大,通过与世界级的球员毫不逊色竞争创造一个总冠军级别的玩游戏的程序。
20世纪90年代 在人工智能的各个领域取得重大进展,在机器学习显著示范,智能辅导,案例推理,多主体规划,调度,不确定性推理,数据挖掘,自然语言理解和翻译,视觉,虚拟现实,游戏和其他主题。
1991年 DART部署在第一个调度程序海湾战争偿还DARPA的在人工智能研究30年投资。[37]
1993年 伊恩Horswill扩展的基于行为的机器人通过创建波利,第一台机器人使用导航视野和野兽般的速度(1米/秒)进行操作。
1993年 布鲁克斯林恩安德烈·斯坦辛西娅Breazeal开始广泛宣传MIT齿轮项目与众多合作者,试图建立一个人形机器人的孩子在短短的五年。
1993年 ISX公司赢得“年度DARPA承包商” [38]动态分析和重新规划工具(DART)据报道偿还美国政府在50年代以来人工智能研究的全部投资。[39]
1994年 在船上的乘客,双胞胎机器人汽车鞋面和VITA-2 恩斯特Dickmanns戴姆勒-奔驰时速可达130公里每小时驾驶标准交通拥挤巴黎三线高速公路一千多公里。他们展示免费车道,车队行驶,并留下变更车道,右与其他自主车路过自主驾驶。
1994年 英文草稿跳棋)世界冠军汀斯利辞职对计算机程序匹配奇努克。奇努克击败第二收视率最高的球员,拉弗蒂。奇努克有史以来最广泛的优势赢得美国国家锦标赛。
1995年 “没有手穿越美国”:一个半自治的汽车开海岸到海岸美国各地的电脑控制转向为2849英里(4585公里)的2797英里(4501公里)。油门和制动器由一个人的驱动器控制。[40] [41]
1995年 其中一个恩斯特Dickmanns '机器人汽车(含机器人控制的油门和刹车),驱车1000多英里,从慕尼黑哥本哈根和背部,在交通,以高达120英里,偶尔执行演习通过其他车(只在少数关键情况安全驾驶接任)。主动视觉被用来应对快速变化的街景。
1997年 深蓝国际象棋机器(IBM)违背了(当时)世界国际象棋冠军卡斯帕罗夫
1997年 第一次正式的RoboCup足球(足球)比赛设有台式与40个队进行交互的机器人和超过5000名观众相匹配。
1997年 计算机奥赛罗程序Logistello击败世界冠军村上健,得分为6-0。
1998年 泰格电子菲比被释放,并成为以生产型AI的首次成功尝试达到国内环境
1998年 蒂姆·伯纳斯-李发表了他的语义Web路线图的纸张。[42]
1999年 索尼引入类似于菲比一种改进的家用机器人,所述AIBO变成第一人工智能“宠物”,这也是1 自治
20世纪90年代后期 网络爬虫和其他基于AI的信息提取程序成为广泛使用的基本万维网
20世纪90年代后期 在麻省理工学院的人工智能实验室智能房和情感Agent示范。
20世纪90年代后期 对工作的起始氧架构,其在自适应连接的移动和固定的计算机网络
日期 发展
2000 互动robopets(“ 智能玩具 ”)实现商业化,实现了18世纪的新奇玩具制造商的视野。
2000 辛西娅Breazeal在麻省理工学院发表关于珩机她博士论文,描述了天命(机器人),用表达脸的情绪
2000 保荐人机器人探索寻找陨石样品南极洲偏远地区。
2002年 iRobot公司伦巴自主吸尘地板,而导航和避开障碍物。
2004年 OWL Web本体语言 W3C推荐标准(2004年2月10日)。
2004年 DARPA介绍了DARPA大挑战,需要竞争对手生产的自主车辆的奖金。
2004年 美国宇航局的机器人火星车探索精神机遇自主导航表面的火星
2005年 本田ASIMO机器人,人工智能人形机器人,能够以最快的速度行走作为一个人,提供托盘在餐厅设置客户。
2005年 推荐技术的基础上跟踪网络活动或媒体使用带来AI营销。见TiVo的建议
2005年 蓝脑出生,一期工程在分子模拟的细节大脑。[1]
2006年 达特茅斯人工智能会议:未来50年(AI @ 50)AI @ 50(14-16 2006年7月)
2007年 英国皇家学会,B哲学会刊-生物,是世界上历史最悠久的科学期刊之一,推出一期特刊上使用AI了解生物智能,题为自然的模型行动选择[43]
2007年 跳棋解决通过在一组研究人员阿尔伯塔大学
2009年 谷歌建立的自驾车[44]

2010年代[ 编辑]

日期 发展
2010 叙事学的创建分析的数值数据,如体育比分或财务收益来写新闻报道计算机程序奎尔。[45]
2010 微软推出的Kinect的Xbox 360,第一游戏设备,以追踪人体运动,只使用一个3D摄像机和红外检测,使用户能够无线播放他们的Xbox 360。获奖的机器学习人的动作捕捉技术,该设备是由开发计算机视觉组微软研究院,剑桥。[46] [47]
2011 IBM沃森电脑打败了电视 游戏节目 危害!冠军鲁特詹宁斯
2011 苹果Siri的谷歌谷歌现在微软柯塔娜智能手机 应用程序使用自然语言来回答问题,提出建议和执行操作。
2013 机器人 HRP-2的SCHAFT公司建成日本的子公司谷歌,击败15支球队赢得DARPA机器人挑战赛选拔赛。HRP-2在救灾需要8任务砍下27出32分。任务是驾驶的车辆,走过去的碎片,爬梯子,清除杂物,通过门走,穿过墙壁切割,关闭阀门和连接软管。[48]
2013 NEIL,上房图像学习者,在卡内基·梅隆大学发表不断比较和分析不同的图像之间的关系。[49]
2015年 一封公开信,禁止开发和利用,通过签署自主武器霍金麝香沃兹尼亚克和3000的研究人员在人工智能和机器人。[50]
2015年 谷歌 DeepMindAlphaGo击败了3次欧洲围棋冠军,2段的专业范辉 5场比赛为0。[51]
2016年 谷歌 DeepMindAlphaGo击败李世石 4-1。李世石是9段专业的韩国围棋冠军,谁赢得了27个主要赛事从2002年到2016年[52]与之相匹配的AlphaGo之前,李世石是预测一个简单的5-0或4-1的胜利信心。[53]
资料来源:Wikipedia

Oct. 23, 2016

CentOS下为Apache配置HTTP SSL

ownCloud需要在网页和服务器端传输信息,包括登录的用户名和密码、下载的文件,如果采用普通的HTTP连接,可能会遭到网络渗透而被窃取密码。因此,有必要使用HTTPS。

一、HTTP SSL*

第一步:安装mod_ssl
yum install mod_ssl
安装完后在 /etc/httpd/conf.d/下会有一个ssl.conf的文件,
cat ssl.conf
sslweizhi1 SSLCertificateFile位于/etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile位于/etc/pki/tls/private/localhost.key 第二步:生成密钥 进入/etc/pki/tls/private,
cd /etc/pki/tls/private/
删除原来的
rm -f localhost.key
生成新的
openssl genrsa 1024 &gt; localhost.key
返回到certs目录
cd ../certs
删除原来的证书
rm -rf localhost.crt
生成新的 可以用命令自动生成
make testcert
也可以自己输入命令 然后centos会提示你输入些信息比如国家 地区 邮箱等 随便写
openssl req -new -x509 -days 365 -key ../private/localhost.key -out localhost.crt
填写需要填写的信息,证书就生成了

这里为什么要用localhost.crt这样的名子,是因为在ssl.conf就是这样子指定的,这两个地方要一样。 再次打开/etc/httpd/conf.d下的ssl.conf,找到 sslxiugaiyuming ,改下其中的

More...

Oct. 22, 2016

【评论】从360关闭个人网盘服务看公共云存储

我这个博客大部分都是写的私有云的内容,所以平时对云盘服务也比较关注。如今360要关闭个人云盘进行转型,意味着云盘服务已经迎来了一个新的挑战。
[caption id="attachment_1017" align="alignnone" width="693"]360panzhuanxing 360宣布停止个人云盘服务[/caption]

公共网盘服务自有它的优点,速度快、方便、容量大(仅对于国内网盘服务),尤其容量大(其实是共享的~)的特点,让国外网盘羡慕不已(OneBox不久前就宣布缩小网盘基础空间)。以百度网盘为例,动辄2TB的空间,吸引了大量用户。

More...

Oct. 21, 2016

【ownCloud】OCC命令升级ownCloud

ownCloud通用更新教程(修正版)一文中,我使用了直接替换ownCloud主程序的方法进行更新,那种方法不是很方便,而且很容易造成代码检查异常错误,我更推荐使用OCC命令进行升级

关于OCC命令基本用法参见【ownCloud】之终极管理:OCC命令行工具

安装ownCloud组件:

更换软件源然后安装ownCloud组件:

Ubuntu:

wget -nv https://download.owncloud.org/download/repositories/production/Ubuntu_19.10/Release.key -O Release.key
apt-key add - < Release.key

echo 'deb http://download.owncloud.org/download/repositories/production/Ubuntu_18.04/ /' > /etc/apt/sources.list.d/owncloud.list apt-get update apt-get install owncloud-files

 

CentOS:

rpm –import https://download.owncloud.org/download/repositories/stable/CentOS_7/repodata/repomd.xml.key

More...

Oct. 19, 2016

中国现代著名诗歌选1

第十首, 余光中的《等你, 在雨中》

-等你, 在雨中, 在造虹的雨中 -蝉声沉落, 蛙声升起 -一池的红莲如红焰, 在雨中 -你来不来都一样, 竟感觉 -每朵莲都像你 -尤其隔着黄昏, 隔着这样的细雨 -永恒, 刹那, 刹那, 永恒 -等你, 在时间之外在时间之内, -等你, 在刹那, 在永恒 -如果你的手在我的手里, 此刻 -如果你的清芬 -在我的鼻孔, 我会说, 小情人 -诺, 这只手应该采莲, 在吴宫 -这只手应该 -摇一柄桂浆, 在木兰舟中 -一颗星悬在科学馆的飞檐 -耳坠子一般的悬着 -瑞士表说都七点了忽然你走来 -步雨后的红莲, 翩翩, 你走来 -像一首小令 -从一则爱情的典故里你走来 -从姜白石的词里, 有韵地, 你走来 -   -

More...

Oct. 18, 2016

【美文分享】时光的味道

semll_of_time  父亲在打铁,沉默着

让一块铁矮下去

以更合适的形状和角度楔入生活

飞溅的火花,足以撑起

一个人的夜晚

一锤,又一锤

一个又一个日子,在他锻打下

深入水,沉入雪,

或深深插进泥土

我一直静静观望

外表冷峻,内心火热

现在,

父亲把一块通红的铁放入水中

More...

Oct. 17, 2016

KSWEB安卓手机搭建网页服务器

KSWEB是一款运行于安卓系统上的网站服务器APP,集成lighthttp、nginx、php、mysql环境,支持中文。
就我看来,一键分享、面对面互传都有它们的局限性,比如配对过程繁琐、常常遭遇意想不到的问题。在手机上装一个网页服务器是再好不过。

你只需要将文件放到网站目录下,别人通过你的手机ip即可获取文件。除此之外,还可以装一个WordPress什么的提高一下逼格。

More...

Oct. 14, 2016

【美文分享】人生絮语

当不幸降临在他人头上时,他们往往都能像智者一样劝慰别人;而当同样的不幸降临自己身上时,人往往很难同样地开导自己。

人最大的不智不是不知道,而是知道了却迟迟不愿去做,所以平庸却又自怜的人很多。

有些缺陷放在别人身上看起来微不足道,不值得一提;但是,这些缺陷若放在自己身上,则很难轻松看待,甚至一生都不能释怀。

More...

Oct. 6, 2016

【ownCloud】修改ownCloud外观

没错,我说过只有企业版才能修改主题,但是我们可以曲线完成这一目的。

修改外观的关键就是ownCloud的各种样式、元素,它们都被放到了core/文件夹里。譬如修改一下登录界面的背景:

More...

Oct. 5, 2016

【ownCloud优化】定时任务方式AJAX->Cron

ownCloud设置里有个“计划任务”,看到了吗?

ownCloud需要定期在后台执行一些任务来维持自己的正常运转。

2016-10-04-1

默认设置为AJAX,即当你访问一些页面时,定时任务会被激活。恐怕这并不是一个好的选择,如果长时间不访问,将会导致计划任务无法进行,推荐设置为Cron定时任务。

More...

Oct. 4, 2016

【Seafile】Seafile私有云方案

2016-10-03-1

相比于ownCloud,Seafile进程式方案显然更适合大型文件处理、工作更稳定,目前提供个人家庭和企业两个版本
安装Seafile说实话比ownCloud还简单(ownCloud主要是LAMP的环境繁琐)。

首先安装一下环境

More...

Oct. 4, 2016

Linux crontab定时执行任务 命令格式与详细例子

Linux crontab定时执行任务 命令格式与详细例子,大家可以参考下。

基本格式 : *  *  *  *  *  command 分 时 日 月 周 命令 第1列表示分钟1~59 每分钟用*或者 */1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令 crontab文件的一些例子: 30 21 * * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每晚的21:30重启apache。 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每月1、10、22日的4 : 45重启apache。 10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每周六、周日的1 : 10重启apache。 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。 0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每星期六的11 : 00 pm重启apache。 * */1 * * * /usr/local/etc/rc.d/lighttpd restart 每一小时重启apache * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart 晚上11点到早上7点之间,每隔一小时重启apache 0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart 每月的4号与每周一到周三的11点重启apache 0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart 一月一号的4点重启apache 名称 : crontab 使用权限 : 所有使用者 使用方式 : crontab file [-u user]-用指定的文件替代目前的crontab。 crontab-[-u user]-用标准输入替代目前的crontab. crontab-1[user]-列出用户目前的crontab. crontab-e[user]-编辑用户目前的crontab. crontab-d[user]-删除用户目前的crontab. crontab-c dir- 指定crontab的目录。 crontab文件的格式:M H D m d cmd. M: 分钟(0-59)。 H:小时(0-23)。 D:天(1-31)。 m: 月(1-12)。 d: 一星期内的天(0~6,0为星期天)。 cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量 说明 : crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设 定自己的时程表。 参数 : crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数 来指定使用那个文字编辑器(比如说 setenv VISUAL joe) crontab -r : 删除目前的时程表 crontab -l : 列出目前的时程表 crontab file [-u user]-用指定的文件替代目前的crontab。 时程表的格式如下 : f1 f2 f3 f4 f5 program 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执 行的程序。 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推 当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推 使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。 例子 : #每天早上7点执行一次 /bin/ls : 0 7 * * * /bin/ls 在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup : 0 6-12/3 * 12 * /usr/bin/backup 周一到周五每天下午 5:00 寄一封信给 alex@domain.name : 0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata 每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha" 20 0-23/2 * * * echo "haha" 注意 : 当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之 后加上 > /dev/null 2>&1 即可 例子2 : #每天早上6点10分 10 6 * * * date #每两个小时 0 */2 * * * date #晚上11点到早上8点之间每两个小时,早上8点 0 23-7/2,8 * * * date #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 0 11 4 * mon-wed date #1月份日早上4点 0 4 1 jan * date 范例 $crontab -l 列出用户目前的crontab.

Oct. 3, 2016

【ownCloud】OCC命令之文件管理

上次介绍了OCC命令,以后会陆续说些详细的命令细节。
OCC提供以下文件管理命令:

[shell]

files files:cleanup 清理文件缓存 files:scan 重新扫描文件 files:transfer-ownership 将一个用户所有文件全部转移到另一个用户名下 [shell] files:scan 命令可以重新扫描新的文件

使用格式: files:scan [-p|--path="..."] [-q|--quiet] [-v|vv|vvv --verbose] [--all] [user_id1] ... [user_idN]

参数:

More...

Oct. 2, 2016

【ownCloud】之终极管理:OCC命令行工具

在很早之前就知道ownCloud可以在命令行界面通过OCC命令进行管理,怎奈OCC文档写得相当晦涩,今天自己研究了下,终于会用了,分享出来。

一、简介

ownCloud的OCC(ownCloud Console)命令行工具,能够快捷有效地管理ownCloud服务器,可以执行诸如安装、升级、加密、增删用户、LDAP设置等工作。

你需要用网页服务器的用户登录,比如你用的是Apache做网页服务器

More...

Oct. 2, 2016

巧妙利用VPS进行虚拟主机备份与恢复

前天晚上9点左右,很不幸,ip第二次被封杀!

更不幸的是,虚拟主机的控制台一并被封杀,幸亏我之前在做【技巧】自己搭建专属ss代理 科学上网教程时自己搭的SS代理还留着,登上之后准备把整站备份出来,然后重置主机,然而面对上百兆的备份,不是下载速度极慢,就是莫名中断。

More...

Oct. 1, 2016

【ownCloud】连接Google Drive教程

【ownCloud】挂载FTP/SFTP、WebDAV、DropBox等外部存储这篇文章中我们谈到了ownCLoud挂载外部存储,除了已经演示过的挂载FTP,还可以使用GoogleDrive、DropBox等网盘,现在我就以GoogleDrive为例进行演示
基本步骤:申请GoogleDrive API->填写API信息到ownCloud->用谷歌账户登录

请准备:

  • 科学上网工具,可流畅访问Google
  • 已安装外部存储插件的ownCloud的公网服务器

一、登录谷歌开发平台获取API

访问https://console.developers.google.com访问谷歌开发者API管理平台,用Google账户登录。(如果长时间加载而google主页可以正常访问,请耐心等待)

More...

Sep. 30, 2016

【ownCloud】添加信任域

如果在安装ownCloud后,更换了访问方式,比如刚开始是www.example.com/owncloud,变成了www.othersite.com/owncloud,那么在访问时可能得到这样的页面:

2016-09-30

会有这样一句话:

More...

Sep. 29, 2016

【ownCloud】专题指引


owncloud-guide

ownCloud简介

ownCloud是一个基于php开发的开源网盘程序,分为社区版和企业版,目前社区稳定版更新至9.1.0,支持php5.4~5.6、7,支持MySQL、MySQLi。

ownCloud社区版官网:owncloud.org

More...

Sep. 27, 2016

私有云除了ownCloud,还有FreeNAS

这是一个简单可靠的家用NAS系统,在VMWARE中就可正常运行,支持FTP、SMB、SSHD……。在家里可以用它做一个数据站,实现局域网内文件共享。

More...

Sep. 26, 2016

私有云除了ownCloud以外还有…

ownCloud的搭建你觉得繁琐吗?如果是,不妨看看下面的教程,群晖NAS丰富的功能应该能满足你的需要
【申明:本文并非本人所作,为内部网络中一位大神所写,个人觉得写得很好,遂原文搬了过来,如有侵犯原作者的权利,请及时与我联系】

1.基础知识准备

More...

Sep. 25, 2016

【ownCloud】挂载FTP/SFTP、WebDAV、DropBox等外部存储

外部存储插件能够将外部存储设备作为辅助的ownCloud存储设备。你还可以允许用户设置他们自己的外部存储服务。

ownCloud 9.0引入了管理外部存储一组新的OCC命令。

此外,在9.0版本中,管理员可以启用或禁用通过挂载点进行共享。挂载点共享在默认禁用。

More...

Sep. 24, 2016

【ownCloud】配置邮件服务器

ownCloud能够发送密码重置邮件,通知其他用户共享给你的新文件,通知用户文件中的变化和活动。用户可以配置接受的通知类型。

ownCloud不包含完整的电子邮件服务器,而是连接到您现有的邮件服务器。你必须给出一个有效的邮件服务器,ownCloud才能够发送电子邮件。邮件服务器可以在本地,也可以在远程位置。

More...

Sep. 24, 2016

【ownCloud】文件预览图标相关设置

ownCloud的缩略图系统能够为一些文件和图片生成预览,让他们在文件列表中的图标以缩略图的形式显示,并且在一些插件中也以缩略图显示。

下面的图片展示了各种不同的缩略图样式

Thumbnails of various image and audio/video files.

默认情况下,ownCloud可以为以下文件生成预览图

  • 图片文件
  • 包含图片的MP3 文件
  • 文本文档

       旧一些的ownCloud版本还为其它类型的文件提供预览,比如 PDF,SVG,和各种各样的office文档。不过由于安全考虑,这些功能都被默认禁用了,会被程序认为不支持。不过这些文件的预览仍然可用,但我并不鼓励启用它们。

设置参数

  请注意,ownCloud的文件预览系统的默认设置已经十分合理,一般不需要修改。

禁用文件预览

       在某些情况下,你可能需要禁用预览系统,比如服务器性能不高。如果禁用了,所有的预览图(包括图片APP)都将被通用的图标所取代。 

在config/config.php中的enable_previews 设置预览参数为 false:

<?php
  'enable_previews' => false,

最大预览图大小

在config.php中有两个参数来设置最大缩略图的大小,如果找不到,可以自行添加

<?php
  'preview_max_x' => null,
  'preview_max_y' => null, 

默认的,这两个选项都被设置为“null”。“Null”表示没有最大值。数字值表示像素的大小。下面的代码演示的是限制预览尺寸为100px×100px:

<?php
  'preview_max_x' => 100,
  'preview_max_y' => 100,

‘preview_max_x’ 代表x轴 ‘preview_max_y’ 代表y轴

应付模糊的小照片

如果你在ownCloud里存了很多很小的图片,它们会被放大以至于模糊,你可以通过以下参数设置放大倍数,比如设置成10:

<?php
  'preview_max_scale_factor' => 10,

如果你想禁用缩放,把它设置成1就行了:

<?php
  'preview_max_scale_factor' => 1,

如果你想禁用最大缩放选项,将它设置成null

<?php
  'preview_max_scale_factor' => null,

Sep. 22, 2016

重振信心!

        从开始建站以来,网站的SEO状况都不令人满意,最近刚上的权1前天又掉下来。百度始终只开放几个页面,360收录也在一直掉。所以最近心情很差,有时甚至想放弃,毕竟初衷就是锻炼能力,自己摸索,再者,我最初想着我要学服务器、网页语言,从没想过要和SEO这个东西打这么多交道。

More...

Sep. 20, 2016

2016.9.20 即将感受到作业带给我的恐惧

开学差不多3周了,除去军训和中秋节,有些科最近才真正进入学习。

今天作业发给我一封预告函:你永远不会再有在自习课上悠闲地描字帖的机会。      课程学得很快,而且每节课所附加的作业量也很大,最终结果就是老师讲完新课,一句话不说悠悠地走出教室。然后我们赶紧翻出练习册开写。        令我觉得高兴的是,我对语文又有了新的热情,主要归功于老师水平高。语文作业简直是所以作业中最美丽的(相对来说),遗憾自己总是忘了带钢笔。我的语文短板是作文,尤其记叙文,我觉得小学生写得都比我流畅毕竟人家想什么就写什么,而我还要想一件有意义的事(而且是能凑够800字的事,仅这一点就让我非常非常伤脑筋),然后每字每句还要想着怎么润色,让它看起来想一个真实年龄大于14岁的人写的,总努力避免写流水账,结果还不如流水账明了⊙︿⊙。目前来说,我反而对我的理科感到一丝担心,而且这还是学第二遍,学得还不算很轻松。

More...

Sep. 19, 2016

【分享】SEOer的未来之路到底在哪里

SEOer未来之路到底在哪里?

4635 人参与 | 时间:2016年09月09日 06:28

从开始学习SEO,一直走到今天,已经有将近6年的时间,期间走走停停由于一些原因离开过一段时间这个圈子,和所有的站长朋友一样经历着彷徨、迷茫以及对未来职业的不确定,但是依旧坚持了下来,突发奇想就把自己对SEO这个职业的未来的一些走向给记录了下来,也算对自己6年SEO从业之路的一个交代。

SEOer未来之路到底在哪里? SEO推广 第1张

现在和一些群里面的90后站长朋友沟通,经常会遇到有人说做了这么长时间SEO,每天总是反复的在做编辑的工作(采集内容、二级编辑、追踪热点、融入文章等)、交换友链和发外链,似乎SEO就只是做这些事儿,刚开始我也会因为学会使用火车头采集器、撰写一套漂亮的TKD、规划好网站的URL结构等技能而兴奋,接下来就是学会了一些黑帽的做法,隐藏文本、堆砌关键词、刷关键词、刷流量等等各种刷技能,玩了一段时间之后开始沉淀,泡在站长学院、站长论坛吸收各种查询分词技术、索引原理、各种搜索算法以及影响关键词的排名因素等等一切只要是最新被公布的官方文件都会去看,转了一大圈,开始思考掌握了这些东西之后我未来的出路到底在哪里?SEM的强势、自媒体的兴起、APP的流行在结合着当前企业强烈的要求实时效果,彻底让我陷入了彷徨,似乎SEO这个职业的辉煌时代已经一去不复返了。

接下来的一段时间我一直在思考这个问题,结论:既然改变不了,就要顺势而为。SEO从业者也有自己的优势,多年在和这搜索框打交道的经验,不管是挖词、行业词归类等等对词的运用,都会让你快速的了解一个行业用户所关注的信息点,接下来就是我要谈的结合查询与新兴的互联网产品衍生出的SEOer出路。

一、 自媒体

真实案例:小编申请了一个财经类目的今日头条账号,之所以说今日头条,并不是要给它打广告,也是小编分析了目前比较流行的自媒体,今日头条是最适合的一个,不管是百度百家、网易自媒体、微信公众平台、企鹅自媒体、凤凰自媒体、UC自媒体等都有他们的局限性。(这里只举几个小编再用的自媒体的例子说明)

1. 流行的微信公众平台需要达到一定的粉丝量才能做为流量主;

2. 百度百家用过的人都知道,它虽然有搜索引擎天然的光环,但是不适合自媒体人的快速变现;

3. 网易和企鹅就更不用说了,他们目前还是以自采内容为主,个人自媒体人要获得资源很难;

4. UC自媒体听说也要模仿今日头条的DT技术个性化推荐给用户,留着备用;

5. 今日头条这种大众化的自媒体平台能够满足小编的条件。

由于小编从事财经相关行业工作,业余也是接触了非常多的用户搜索词需求,深切体会到目标用户对那些内容更感兴趣,这里切实体会到查询真是一门艺术,因此小编就根据用户关注的信息点,去整理相关内容,一天花费两个小时的精力去整理一篇目标性很强的文章,我想对于SEOer来说应该是轻而易举的事儿,然后通过今日头条发表了这篇文章,没有出乎我的预料,短短一天时间内这篇文章被推荐到相关类目100w次以上,阅读超过35W,订阅用户从0飙到了将近七百。如下图:

SEOer未来之路到底在哪里? SEO推广 第2张

在这里小编提到订阅用户的积累其实并没有微信公众账号的那种传播优势,但是今日头条DT技术的驱动,结合着内容贴合天文数字用户的真实需求就会呈现出这种爆发力,虽然刚开通账号并没有自营广告和参与广告分成的权限,但是我按照公司企业号广告分成预估了一下,一篇文章能够带来将近900+RMB的收益,所以可爱的SEOer从业人员不要再为你昨天选择SEO这份职业而迷茫,利用好这份技能可以爆发出无限的可能性。

二、 打造草根明星

最近我发现网红这个词特别流行,刚接触的时候也是特别关注了一下一些直播平台,结果是良莠不齐,基本以女的居多,各种调侃、卖肉、炫技等等,当然我不是说这种不好,存在偏见之类的,毕竟人人都有自己的生存技能,谁也不比谁高人一等,我只是抛砖引玉,从网红这一角度我觉得有必要打造属于自己的网络品牌,毕竟这年头知名度的提升对你做任何事情在圈内都会顶上一个光环。

当然这里并不是要鼓励站长朋友转行去做网络直播,因为好多做了两三年的刚入行的SEOer都会面临一些彷徨,在这里“迷路的小爬虫”也只是给大家一些个人建议,利用好自己的专长在一些权威的平台上打造自己的专栏(当然对于一些资深的个人站长多年以前都已经开始再做了),比如A5、站长之家、速途等,期间开一个个人微信公众账号还是很有必要的,便于与同行交流,只有彼此分享才能开拓眼界,当然随着你的积累,也可以把一些质量比较高的文章投稿到卢松松博客,好处你懂的。

之所以写这些,通过提升你的品牌知名度你会发现你在接一些网站项目的时候变得更加容易了,你的圈子也会越来越大,生意也会越来越多。

打造草根明星最大的原因源于从事SEOer的一个朋友给我介绍的冯东阳,一个草根站长的华丽转身,触动很大,他打造了付费订阅的网站盈利模式,其实如果你一直关注搜外的话,也可以发现在这个平台上也利用了一些解决问题打赏的运营思路。总之,在你陷入彷徨的时候不妨抱着开放的心态开通一个专栏分享你的SEO技能,拓展你的交际圈,提升你的个人品牌,无形中生意已经找上了你。

三、 信息差

做为一个SEOer,谈到信息差你应该不会陌生,别人想不到、查询不到的技能,而你不仅可以查询到,还能做到,这就产生了信息差,说的俗点这就是潜在的生意。

有的人通过一张嘴打天下,你却可以通过一个搜索框掌控天下,这就是一个SEOer的优势,也许好多站长朋友都会经常使用某宝,你会发现围绕着SEO、搜索框衍生出了好多店铺,大部分人都会多多少少要和这些店铺打交道,这里首要说一下不懂技术没关系,这个时代懂一不是门程序语言,已经不是稀有动物了,只要你能挖掘出一些产品的核心思维,提出需求,开发出来不是问题。比如蜘蛛池程序、刷流量工具、快排技术等等。作为一个SEOer我相信你在慢慢成长的过程中没少和这些工具打交道,当然肯定没少掉进坑里,因为小编也是这样过来的,不是说这些工具没用,而是搜索引擎反应太快,产品更迭反应不足,好多工具都已经失去了刚出来时的效果。为什么要提这些工具呢,因为这些工具到目前为止还是在为一些站长创造着可观的利益,而他们正是利用了信息差,提前做了这些工具推向市场。

抛掉技术层面,提交一个百科词条、删除一个负面推广词、删除一条恶意刷的口碑(当然也有刷口碑的)、论坛贴吧清理负面贴、关键词霸屏、站群做外链包、出售链接、卖账号等等,这些并不需要多么牛逼的技术,只要你利用好搜索框,发挥你SEO的优势,从一个知识点切入,覆盖到面只是时间问题。

洋洋洒洒不知不觉已经写了将近3000字了,苦于发表篇幅不再过多赘述,以上三个方向是我一路走来所明悟的SEO未来之路的一些感想,虽然看不到太过长远,但是我相信这篇文章可以帮助很多SEOer从业人员对目前所面临的迷茫之路有一些开解。

作者:迷路的小爬虫(微信公众账号:seopachong)

Sep. 17, 2016

马云首次披露17年创业心法:湖畔大学发表震撼

9月10日,湖畔大学在喜马拉雅推出首部线上公开课《湖畔三板斧》,声称首次公开阿里巴巴17年创业心法。目前已公布的 9 月份课程表显示,马云主讲的两节课为 “我们会教些什么?” 和 “使命,在生死攸关的时候发生作用”。为你整理如下:

More...

Sep. 16, 2016

ownCloud 设置默认语言 解决语言选项中只有“English”

今天贴吧上有几个人问我,为什么他们安装的ownCloud是英文。我于是翻了下文档:ownCloud一般情况下是通过Web-GUI来确定要使用的语言,基本上不需要自己设置。这个功能在不同浏览器上表现各不一致,可能会出现新安装的ownCloud全英文的状况。

 

More...

Sep. 15, 2016

功夫不负有心人,百度权重终于到1

建站1个月零15天,终于完成了一个新的突破!

Sep. 13, 2016

2016.9.13 作业要多了…

作业从今天起开始变多,因为课程都步入正轨。

数学作业比较多,做了2节自习,不过现在作业也没有今天明天必须交那么硬性规定,大致是布置一堆,在几天内做完,时间都可以自己安排。前几天都觉得自习课闲的无聊,今天就有点紧张了,以后肯定会面临回到家还有作业要写的情况。这才高一啊。

More...

Sep. 12, 2016

2016.9.12 正式开始!

高中学习从今天算是正式开始

说说我又爱又恨的自习吧

晚自习时间很长,回到家已经晚上10点了,晚饭也是在学校吃。还有一点,周日晚上也有晚自习,这意味这第二天上课的我昨天至少22:30后睡觉。

More...

Sep. 12, 2016

【分享】360站长平台推出自动推送工具

360站长平台推出自动推送工具,来提高网站的收录率,当然360站长平台推出自动收录功能之前百度也推出了自动推送功能,道理一样,当页面被访问时,页面链接会自动推送给搜索引擎,有利于新页面更快被搜索引擎蜘蛛发现。

More...

Sep. 11, 2016

【分享】360网站卫士前端公共库已停止服务

最近有的站长发现打开网站一直停在加载fonts.useso.com中,fonts.useso.com本来是360网站卫士CDN加速的字体服务,但是现在已经停止服务了!

但是谷歌的字体服务已经能使用了,其实早在15年初google就在北京设置了服务器,ping fonts.useso.com 也可以发现,ip为203.208.40.136,地址是北京电信海淀区,比360镜像要快很多,所以把所有替换的字体库,插件通通去掉即可。

More...

Sep. 10, 2016

【ownCloud】ownNote私有云笔记插件

ownCloud是一个强大的php网盘应用,而且还可以通过安装插件扩展功能,比如之前介绍的音乐播放器,和下文中的ownNote私有云笔记所提供的强大功能
首先管理员登录ownCloud,左上角“文件”--》点击加号--》点击左下角齿轮启用“安装实验性程序”,之后可以在“Tool”栏目找到ownNote,点击安装 2016-09-10-2

在左上角菜单中找到刚安装的插件“Notes”

More...

Sep. 10, 2016

我觉得这个站挺完善了

按照网上的优化方式该做的都做了

主题不差,

缓存设置完善

自己弄的静态文件加速,插入多媒体图片自动上传到国内加速空间,很方便

 

主题自带的用户中心不是很好,改用的第三方用户前端

用户的头像不进行加速,从源站中下载

Sep. 10, 2016

祝各位教师们 节日快乐

衷心地祝愿所有教授过我的老师

教师节快乐

感谢你们的教导

 

 

teachers-day 1966年10月5日,国际劳工组织和联合国教科文组织联合通过了《关于教师地位的建议》。

1994年初,联合国教科文组织宣布从是年起,每年10月5日为“国际教师节”,目的是为了向全世界的所有教师表达国际社会的崇敬之情,“感谢他们的辛勤劳动,他们的敬业精神,以及他们为把今天的孩子培养成明天的公民所承担的巨大责任。”就在这年10月5日,出席在日内瓦召开的国际教育大会第44届会议的代表,欢聚一起庆祝“国际教师节”的诞生。

More...

Sep. 7, 2016

共享主机IP被墙,解决全过程

15448_2.jpg

昨天大约下午6点多钟,访问网站超时,加载半天加载不出,所有页面无法访问。我还以为主机宕机了,但是登上控制面板发现运作正常。

因为比较着急,就没有截图

然后用chinaz测试,发现国内访问全部超时,只有香港正常。测试国外访问全部正常,最初以为是DNS出了问题,ping了下DNS服务器,并没有什么问题。然后才怀疑是被墙了

More...

Sep. 5, 2016

2016.9.5 一天走了30公里

说实话,去的路上,走15公里还觉得不算很多,走走就到了。回来的时候各种难受各种埋怨路远(回来时还走了近道,小于15公里)。要说累么倒也不累,酸痛是切身的,回到家躺到床上之前,还能正常走路骑自行车,过了一会儿想站起来结果差点躺在地上。

More...

Sep. 4, 2016

2016.9.4 对新的学习生活的期待

现在基本2天不更新,蜘蛛抓取频次就是0,可惜几天后就将面临6天一更的窘境。无法可想

济宁一中算是公立学校里面很nb的了,从清末的济宁直隶州官立中学堂开始到现在,光校史就有100多年。新建的北湖校区面积相当大,不过还要等一年才能去。

More...

Sep. 3, 2016

2016.9.3 开学第3天

从今天起开始写日记这种东西,以后会变成周记。

今天军训相比昨天还是好点的,昨天难受是因为一直站着,站得脚麻腿酸不说,还要经受太阳的炙烤,爽得没倍。今天主要是练习跑步走和正步,毕竟能活动起来,而不是一动不动地堆积乳酸。

More...

Sep. 2, 2016

D1 先军训,在开学

9月1日开学之后并没有立刻进入学习,而是为期6天的军训。军训小学有,初中有,高中也有,不过规模更大,6天上午下午一整天都在室外训练,第5天还要步行去北湖校区(差不多15公里,济宁市中心到济宁市郊)。
你问我累不累,我明确地告诉你,是相当累的,首先光站那么长时间,脚后跟相当酸痛,甚至到了刺痛的地步。蹲更累,好在不常蹲,长时间蹲着得感觉是有苦说不出,全身酸痛,还不如站着。
我分到的班,是普通中的普通,不过高中学习内容和初中区别还是挺大的,谁学得更好还说不定呢,更何况每个人都有无限可能,高二还有重新分班的机会,这很关键

Aug. 31, 2016

问卷调查php程序:LimeSurvey

LimeSurvey是一个优秀的开源问卷调查程序,支持前台多语言(包括简体中文)、自定义主题、自适应,支持php7。提供专业版付费订阅。不仅可以做问卷调查,还可以用来登记信息、收集数据,生成数据图表。
2016-08-31 (4)免费社区版官网:https://www.limesurvey.org/

专业版官网:https://www.limesurvey.com/

More...

Aug. 31, 2016

随便关注一下Z-Blog

难怪卢松松会转用Z-Blog,确实有它优秀的地方,相比于国内其他cms,相当优秀

现在我正在我的小站上测试

这个站不会改用Z-Blog,随便试试而已啦

Aug. 30, 2016

ownCloud加密配置

加密配置

的ownCloud服务器端加密的主要目的是为了保护在远程存储,如Dropbox和谷歌驱动器用户的文件,并从ownCloud内部轻松、缝地做到这一点。

在ownCloud 9.0服务器端加密分离本地和远程存储功能。这使您可以加密远程存储,如Dropbox和谷歌,而无需您ownCloud服务器上加密你的家庭存储。

More...

Aug. 28, 2016

漂亮的字体:华康圆体

之前在一些英文app上见过一种纤细圆润的字体,英文和中文都很耐看,可惜找不到。

今天无意找到了非常相似的字体,华康圆体

 

下载地址:http://download.frankgreg.com/font/华康圆体W3-GB.ttc

More...

Aug. 25, 2016

对于杨永信及其行为的看法

我已经很久很久没有听过“网瘾”这个词了,即使刚放假几天我游戏玩的多的时候,父母也只是说:“别再迷了”,我和他们谈电子竞技的时候,也没听到什么类似的词。我以为“网瘾”已经被忽略了,我以为当央视报道Wings夺得Ti6冠军时,人们正在对此慢慢改变看法。我对杨永信的一些观点表示不满,一个原因是“网瘾”这个词的宽泛,“网瘾”,自然包括所有互联网上的东西,而不仅仅指网络游戏,况且沉迷游戏其中也有一部分是单机游戏,它和网瘾关联就更少了。

More...

Aug. 25, 2016

以后再也不直接拔U盘了!

之前我对U盘弹出不屑一顾,因为它只是验证一下还有没有正在使用U盘里的文件,但是,这种侥幸总有失效的时候。

暑假去桂林玩,有个景点叫世外桃源,风景相当不错,80%是在船上游览,最后是步行参观民族风情建筑和习俗。用手机拍了相当多的照片,再加上一段很长的录像,我的手机存储不知不觉满了,但是聪明机智的我带来了U盘和OTG线,于是潇洒地将文件转移进去~,潇洒地直接拔下U盘~

More...

Aug. 24, 2016

【VR初体验】使用Cardboard 3D电影观后感

此处推荐一款视频播放器:OrangeVR,这款播放器支持从文件管理器中打开视频,也可在线播放网络上的流媒体或局域网中的视频。可以显示360°全景视频、180°视频、3D视频。

选取的是1080P3D视频MKV格式的《美国队长2》,电影大小高达16.5GB,家里的古董级路由器基本没法实现在线播放。幸亏我有个120G的U盘,OTG线连上手机才得以播放。

More...

Aug. 24, 2016

【转载】有哪些公司有外号,像企鹅,数字公司?

1.腾讯,俗称鹅厂。原因是这样:很早很早以前,有个腾讯员工父母问他工作的地方是生产什么的,然后说了半天说不通。于是乎,就把QQ公仔拿出来 ( 没错就是那个小企鹅玩偶!O(∩_∩)O) 老人瞬间理解:“原来是产企鹅公仔的工厂啊”。那哥们将这个段子分享出来被马化腾转发,也就算是钦定了这个外号。(下图为腾讯内部手册) 有哪些公司有外号,像企鹅,数字公司? 好文分享 第1张 有哪些公司有外号,像企鹅,数字公司? 好文分享 第2张
  1. 百度,俗称狼厂。起因呢,是李彦宏在12年10月的第三季度战略沟通会上,发表了“物竞天择,适者生存”的内部讲话。紧接着,“鼓励狼性,淘汰小资”成了口号,于是乎,便传为狼厂。
有哪些公司有外号,像企鹅,数字公司? 好文分享 第3张
  1. 阿里巴巴,俗称猫厂。原因很简单,也是因为小猫咪的logo。
有哪些公司有外号,像企鹅,数字公司? 好文分享 第4张
  1. 网易,俗称猪厂。由来是这样的,网易CEO丁磊在2009年初的时候,对外宣布要去养猪。这么大的互联网公司,要去养猪,这不是妥妥网红的节奏嘛。现在呢,这猪还养着呢,不过想吃丁氏猪肉,再等等吧。(我才不会说网易的另一个外号叫“黄易”的)
有哪些公司有外号,像企鹅,数字公司? 好文分享 第5张
  1. 京东,俗称狗厂。来源亦是其logo。当然,也有“天狗”压“天猫”一说。
有哪些公司有外号,像企鹅,数字公司? 好文分享 第6张
  1. 新浪,俗称渣浪。这是我听过的唯一一个不雅的外号,全中国互联网公司,独新浪一家。08年的时候,由于新浪视频上传后没有水印,所以大家都用其上传视频。但是新浪视频当时的审核十分之奇葩,重口的视频极易通过,正常的视频却老被误杀。某天,ACFUN的高人气up主被连续误杀,一怒之下,在贴吧发起了“战渣浪”活动,渣浪一举成名。
有哪些公司有外号,像企鹅,数字公司? 好文分享 第7张
  1. 360,俗称数字公司。这个没有任何有趣的段子,非常直白。
有哪些公司有外号,像企鹅,数字公司? 好文分享 第8张
  1. 小米,俗称粮厂。这个别称的来源很搞笑。12年的时候,360做特供手机,周鸿祎在微博和雷军掀起骂战,直呼小米手机是粗粮手机,小米便有了粮厂之名。
有哪些公司有外号,像企鹅,数字公司? 好文分享 第9张

你问我为什么互联网公司如此钟爱“厂”字,原因很简单。

More...

Aug. 24, 2016

【谷歌精选】VR应用精选

订的谷歌纸板终于到了,VR硬件设备在它的引领下疯狂涌出,然而VR的软件却没那么快,官方CardBoard应用里的演示给开发者们提供了范本(让开发者们向虚拟影院,模拟游览,虚拟游戏环境等进发),虽然现在并没有那么如人意,但还是有一些还不错的应用值得去体验
b3fb43166d224f4af9d71b150af790529822d16e

1,Deep Space Battle VR

More...

Aug. 23, 2016

暂时不想放广告的原因

这个站本身就是我拿来涨经验的(的确涨了不少),也没什么访问量

而且我有强迫症,在自己的站上贴膏药很难受。更别说不支持自适应的广告,会搞得页面一团糟

Aug. 22, 2016

【谷歌精选】简单有趣的安卓小游戏 :Infinite Loop

等人的时候,是否觉得寂寞难耐呢?试试这款游戏【无限圆环】2016-08-22 (1)这款游戏拥有无限的关卡,两种截然不同的模式,非常适合打发时间(我已经无法自拔) 没有开始和结束按钮,启动APP即为开始,无时间限制,无计分,只要有耐心,每一关都可以完成 当然,你还可以在Google Game中看看谁过的关最多

More...

Aug. 20, 2016

VPS配置ownCloud_memcache【APCu】

 

开启前

2016-08-20 (13)

 

安装APCu缓存插件

yum install php70w-pecl-apcu -y

修改config.php

cd /var/www/html/owncloud/config

vi config.php

在);之前添一行 ‘memcache.local’ => ‘/OC/Memcache/APCu’,

2016-08-12 (5) # systemctl restart httpd

成功!

[caption id=“attachment_295” align=“alignnone” width=“725”]owncloud配置memcache owncloud配置memcache[/caption]

Aug. 20, 2016

ownCloud通用更新教程(修正版)

之前所写的一篇更新教程,只适用于拥有root权限的主机,而且有错误(哪个方法我是成功过的,后来忘了怎么弄的了)
这个教程适用于专用主机和虚拟共享主机

(owncloud安装教程:https://www.orgleaf.com/135/owncloud%e5%ae%89%e8%a3%85%e8%bf%87%e7%a8%8b.html

如图,我需要将owncloud更新到最新的9.1.0

More...

Aug. 20, 2016

致歉:

由于本人经验不足,态度不认真,导致一些ownCloud的教程错误百出,在此表示非常抱歉,所有教程将予以核对和更正

Aug. 19, 2016

WP插件 Jetpack使用感受

用过Jetpack的相信都能体会到,这个插件在国外是有多受欢迎,对老外来说,它自带一键CDN、分享键、站点统计和自动提交URL到搜索引擎,不要太强大。

以下是对一些功能的评价:

Gravatar悬浮卡:没卵用,某些前端插件可以实现。

More...

Aug. 18, 2016

【转译】WordPress模板结构

如所讨论的,  模板文件  是模块化的,可重复使用的文件,用于生成WordPress网站的网页。一些模板文件(如页眉和页脚模板)上使用您网站的所有网页,而有些则只能在特定条件下使用。

More...

Aug. 18, 2016

借用浏览器检查工具,轻松统一风格

【我对html和css不算非常精通,这里记录一下解决问题的方法】

启用Jetpack后,我在页脚添加了“订阅”的工具,但是这个工具的css样式不知为什么并没有生效,显得十分简陋,于是决定手动为它添加样式。修改前它是这样的:

More...

Aug. 17, 2016

我的历程

今天把用户前台弄好了,现在路人可以轻松便捷地登录、评论。心里高兴,也有感慨
今天是非常非常忙碌劳累的一年,经历了中考。

整个九年级下学期,我都处在水深火热之中,眼看着同学们放弃手机、电脑、网络,我却无法暂时放弃,有事没事就会坐到电脑前。有几天,睡着觉,脑子里还是那些Linux命令,标签。

More...

Aug. 16, 2016

ownCloud插件安装方法

ownCloud可以附加很多插件,来扩展功能,比如在线播放、文件在线浏览、云笔记甚至在线聊天,其它的插件大多。。。没啥用或者不能用
管理员登录ownCloud之后,点击左上角logo。然后点击加号即可进入插件安装界面 2016-08-16 (1)

如果只有“开启”和”未启用“,多刷新几次或者使用虚拟砖混泥土建筑物逾越技术,就可以看到有”Multimedia””Productivity””Game””Tool”不同的分类

More...

Aug. 15, 2016

【WordPress教程】 自定义后台登录页面 高端大气的美化教程

这篇教程中给出了自定义登录界面的方法,提供的模板很有参考意义,于是把链接分享一下
 前面我为大家带来过wordpress个性化登录页面插件:Branded Login Screen汉化版 大家觉得能不使用插件就不使用插件,后来根据大家需求又发了一个如何通过代码美化自定义WordPress后台登陆界面,半透明效果登陆框 最近逍遥乐又发现一个wordpress登陆注册界面的美化教程,现在分享出来,一起来看看吧! 作者原话: 这几天在折腾关于全背景登录的页面。效果类似于 @Lofter 登录的效果,刚开始觉得没啥技术含
链接: 【WordPress教程】 自定义后台登录页面 高端大气的美化教程

Aug. 15, 2016

弹出登录窗口测试

登录

Aug. 14, 2016

W3T Cache和WP Super Cache哪个好

网上对这两个插件议论纷纷,褒贬不一

这两个插件都使用过,最终决定使用W3 Total Cache

因为对缓存了解不多,先说一下自己对这两个插件的体验吧,可以拿来参考

 

WP Super Cache

这款插件是wp插件页面首页推荐的,使用量巨大,安装使很方便,有汉化。

More...

Aug. 12, 2016

ownCloud 配置memcache

今天下午终于有空搞一下owncloud的memcache,废话不多说,上截图

More...

Aug. 10, 2016

W3T+又拍云 动静态分离加速效果

昨天进行了动静态分离,把主机上的静态文件全部上传到又拍云里

中间出现了一点小问题,如果使minify把静态文件用内存缓存,会导致启用cdn后找不到静态文件,暂时禁用了

WT3自带的ftp上传工具不是很稳定,失败好几次,还把我的又拍云ftp空间搞得一团乱,最后手动上传

More...

Aug. 9, 2016

正在进行动静态分离,部分内容可能暂时无法访问

正在进行动静态分离,预计23:00完成

Aug. 9, 2016

给博客做了简单的加速

主要用WP Super Cache +又拍云

WP Super Cache还不错,又拍云的wp插件不能做全站cdn,ftp又有问题

Aug. 6, 2016

明天下午同学聚会。。

很尴尬,因为我并没有把纪念视频做出来,我说不是因为我懒你信么。

这样的视频,往往是像幻灯片一样,加些花纹,字幕和背景音乐,配合好的话还是很有意义。六月份的确一直在构思,打开会声会影,添些图片音乐文字,觉得缺点什么,是个视频应该有它的灵心。这样想着。。。。会声会影30天试用结束了。。。。。。

More...

Aug. 4, 2016

Owncloud安装过程

本教程首发于百度贴吧

ID:科尔森的发际线

我发现网上的一些教程已经很老了,大多是12年13年的,参考意义不大,吧友自己研究往往会有一些问题发生。于是决定在这里建个贴来写教程 教程亲测可行,owncloud自检信息只有2条:建议使用https和内存缓存(Memory cache),无严重错误 搭建成功如图(9.1.0Beta)

More...

Aug. 3, 2016

研究研究对这个站点的优化


现在这个站已经开了WP Super Cache ,全国速度测试2000ms~200ms

More...

Aug. 2, 2016

新的网站!

使用godaddy上的虚拟主机

Aug. 2, 2016

400+RMB买下了godaddy的云虚机

刚开始并没想象中那么顺利

Jul. 31, 2016

为什么云虚机这么贵啊

。。。。。

Jul. 27, 2016

看来不发文章会被百度放弃收录

Jul. 5, 2016

CDN加速似乎成功了

但还有一些很难搞的问题

Jun. 27, 2016

在桂林

前天从桂林回到了家里,很累。

More...

Jun. 26, 2016

ssh连接成功!

成功通过SSH连接了openshift上的空间,下一步是配置网址ssl证书

Jun. 25, 2016

从桂林回来,真的累

过几天还要去苏州看德玛西亚杯

Jun. 12, 2016

这个网站,拿来随便写点什么吧,即使100年不被百度收录也没关系

Jun. 12, 2016

我是怎么接触NAS的呢


最开始我只是想找个能共享U盘文件的东西,硬件软件随意。。。

More...

Jun. 12, 2016

现在的进展

Jun. 7, 2016

相册

Jun. 7, 2016

今天是初中最后的日子

今天之后,就永不会在济宁十三中相见

再见,我亲爱的2012级04班。

Jun. 6, 2016

一个建立在openshfit上的网站!

Jun. 6, 2016

世界,您好!

欢迎使用WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!