戊辰人博客

青,取之于蓝而青于蓝;冰,水为之而寒于水。

[转载] 多言与寡言

日期:2017年4月26日 作者: 分类:随笔 阅读:116

母亲的话近年来越发多了。有时我们大半天共处一室,她的话似乎从没停过,像拧开的水流漫卷过整间房,一不留神,我便卷入旋涡中。一旦说起来,瘦弱的母亲总像是变成了另一个人,一个有着好体力的人。婆婆在世时亦是个爱说的人。她的人生经历并不复杂,所到之处也不多,可她说了一辈子,与亲朋,与邻里,包括住院时结交的护士。一根针,一缕纱,都有着广阔的说道。

两位老人每每碰上,真是一相逢便胜却无数——说者不倦,听者不厌。这样的辰光对她俩都是愉悦的,如果手边再剥着豆子或择着菜,那画面真近乎完满了。聊天,对于她们来说,是种比保健品更有效的滋养,在回旋往复的“说”中,她们的人生得到梳理、交流与认同。

她们又让我想起在公园或菜场遇见的那些老妇。即便年纪大了,她们凑在一起交谈的样子依然让人想到闺中姐妹,总有说不完的体己话。再糟糕的人生,在这些体己话中大概也能获得一些安慰。

不爱说的人,当他们老了,又该从哪里得到慰藉呢?他的“说”要落在语言之外的什么地方?影视、书、植物,又或其他什么,甚至一只养出情分的猫狗——不说什么,但有一种超越类属的彼此关照和相知,有时也胜过千言。

阅读全文…

Python之利用PIL批量给图片添加文字

日期:2017年4月11日 作者: 分类:编程 阅读:189

因为略懂Photoshop,所以接到一个任务:将公司所有的产品图片整理出来,并在图片中写明产品的品牌和型号,然后分类放在iPad中方便给客户展示。

WTF,几千张图片,用PS一个个打开添加文字,这会把人弄疯的,作为一个懒人,做这种大量机械性的重复工作显然不是我的追求,于是就想到用程序自动实现。

一、使用Python和PIL图片处理库

思路:所有图片的文件名都是以品牌+型号的方式命名,所以先用python读取当前目录下所有文件,得到文件名后我们就可以得到当前图片的品牌型号字符串,然后根据图片像素大小自动判断合适的字体大小,再利用PIL库给原图片加上文字水印(品牌型号),然后将处理后的图片保存在当前目录下的new子文件夹。

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

import os
import sys

import PIL
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

# 设置文字水印
def set_water_text(imagefile, text):

    img = Image.open(imagefile)
    (img_x, img_y) = img.size
    
    # 文字字体像素高度为图片高度的 1/20
    ttfont = ImageFont.truetype('/usr/share/fonts/noto/NotoSansCJK-Regular.ttc', int(img_y/20))

    draw = ImageDraw.Draw(img)
    draw.text((int(img_x/20), img_y - int((img_y*1.3)/20)), text, (0,0,0), font=ttfont)

    newdir = "new"
    if not os.path.exists(newdir):
        os.mkdir(newdir)

    img.save(newdir + '/' + text + '.jpg', 'jpeg')

if __name__ == '__main__':
    files = os.listdir(os.getcwd())
    for filename in files:
        if 'jpg' == filename.split('.')[-1].lower() or 'png' == filename.split('.')[-1].lower():
            set_water_text(filename, filename.split('.')[0])
            print(filename)

阅读全文…

Linux中su与sudo、su – root的区别

日期:2017年1月11日 作者: 分类:运维 阅读:635

一、su 和 sudo 的区别

共同点:都是root用户的权限;

不同点:su仅仅取得root权限,工作环境不变,还是在切换之前用户的工作环境;sudo是完全取得root的权限和root的工作环境。

二、su – root 和 su root(su)的区别

su – root:表示人以root身份登录

just like login as root, then the shell is login shell,which mean it will expericene a login process,usually .bash_profile and .bashrc will be sourced

su root:表示与root建立一个链接,通过root执行命令

like you open an interactive shell in root name,then only .bashrc will be sourced.

阅读全文…

windows下安装64位mysql 5.7

日期:2016年11月4日 作者: 分类:数据库 阅读:814

操作系统:windows 7 64bit

数据库:mysql-5.7.16-winx64

数据库软件包:mysql-5.7.16-winx64.zip

一、准备相关文件

1. 解压mysql-5.7.16-winx64.zip,我这里直接解压到D盘,解压后得到mysql-5.7.16-winx64目录

2. 为了方便,我将mysql-5.7.16-winx64改名为mysql57,这样,我的mysql数据库的路径就为 D:\mysql57

3. 进入 D:\mysql57目录,将 my-default.ini 改名为my.ini

4. 用文本编辑器打开 my.ini 文件,修改相关配置

[mysqld]
# 数据库的根目录
basedir = D:\\mysql57
# 数据存放目录
datadir = D:\\mysql57\\data
# 端口
port = 3306
# server_id = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

阅读全文…

《雨荷花台》大明湖湖畔

日期:2016年10月16日 作者: 分类:随笔 阅读:222

冬寒一日春风去,纳晗难得初绽开,遥看楼台细柳垂,大明湖畔寻雨荷。雨荷不现存心底,饶曼垂柳西风里。婚媾之物长伴行,烟花柳巷独无穷。雨荷不嫌畅彻底,长干直驱云霄顶。国之栋梁危栖息,自命清高万民疏。

泉城昨日那番苦寒如同案子上这碟曼巴咖啡,混沌中有那么一丝涩口。幸得今日泉城蓝幔遮天,悍日当空,照的人春心那个荡漾啊!简直无言而寓。早早洗漱完毕后就直奔大明湖,我觉得硬是要揣摩一处景色,那么必当得挑个尚好的天气,这才叫天时地利人和。也不枉超然楼那般超然矗天立地,访客必然也超然心舒。自多日的闷幔后整个泉城毫无征兆的放晴,多许身晦垢污之人也踱步湖边让春风暖日化解那污浊之躯,这算是明世之人。另类之人长驱暗黑之地,也并非神志所控。

阅读全文…

养寇自重

日期:2016年10月16日 作者: 分类:随笔 阅读:246

早上收到一则手机报消息,其中有一段以“中国人流手术者近半数未成年人”为标题的短讯比较有趣,随详细引索下去。原文如下:“19日,中国社科院教授陈一筠发表调查报告称,目前中国未成年少女人流的低龄化趋势愈演愈烈,未成年手术患者比例达到40%至50%。据调查,在广西南宁发现有9岁少女堕胎的案例,而表示对此负责的是一个13岁的男孩。”

阅读全文…

Docker实战(六)搭建自己的Docker Registry

日期:2016年5月4日 作者: 分类:运维 阅读:2,354

Docker Registry 是一个用来管理Docker镜像的服务,本身也是一个Docker容器。大部分情况下都可以使用Docker Hub,私有的Docker Registry使用场景主要在当需要对容器镜像存储进行完全控制或需要把镜像管理进行集成的情况。

一、Docker Registry 部署

由于 Docker Registry 已经被制作成一个Docker镜像,所以安装部署非常简单,只需要按照我们通常的docker run就可以,如果本地没有 registry 的镜像,则会自动从 Docker Hub 上获取。

需要注意的是 Registry 默认的对外服务端口是 5000,如果我们宿主机上运行的 Registry 需要对外提供服务,可以通过映射端口的方式提供。

本节实验中我们使用 registry:2 镜像,这个镜像为2.0版本的Registry。

部署 Docker Registry的命令:

docker run -d -p 5000:5000 --restart=always --name registry registry:2

停止和删除 Registry 只需要用容器管理中学到的 docker stopdocker rm命令。

阅读全文…

Docker实战(五)编写Dockerfile

日期:2016年5月3日 作者: 分类:运维 阅读:1,223

目标:编写Dockerfile搭建LAMP环境,并能通过ssh连接到容器。

一、创建Dockerfile文件

首先,需要创建一个目录来存放 Dockerfile 文件,目录名称可以任意,在目录里创建Dockerfile文件:

编写Dockerfile

二、Dockerfile 基本框架

Dockerfile一般包含下面几个部分:

  1. 基础镜像:以哪个镜像作为基础进行制作,用法是FROM 基础镜像名称
  2. 维护者信息:需要写下该Dockerfile编写人的姓名或邮箱,用法是MANITAINER 名字/邮箱
  3. 镜像操作命令:对基础镜像要进行的改造命令,比如安装新的软件,进行哪些特殊配置等,常见的是RUN 命令
  4. 容器启动命令:当基于该镜像的容器启动时需要执行哪些命令,常见的是CMD 命令ENTRYPOINT

在本节实验中,我们依次先把这四项信息填入文档。Dockerfile中的#标志后面为注释,可以不用写。

打开Dockerfile,依次输入下面的基本框架内容:

阅读全文…

Docker实战(四)网络管理

日期:2016年4月29日 作者: 分类:运维 阅读:759

一、Docker网络基本配置

1)默认配置

Docker服务启动时会自动创建一个 docker0 的虚拟网桥,后续新创建的容器都会有个虚拟接口连接到这个网桥:

Docker网络管理

Docker网桥会设置为NAT模式,自动分配一个网段,本机环境中docker0的地址是172.17.0.1,每个容器都会自动分配的到一个IP地址。

可以通过docker inspect redis查看名为redis容器的网络配置信息。

我们可以为 Docker 服务指定不同的网桥以及网段,这些配置都可以写在 /etc/default/docker 文件中,作为服务启动的参数。

2)配置文件 /etc/default/docker

该文件为LMDE2 操作系统中 Docker 服务启动时使用的配置文件,不同的操作系统位置会有不同。这个文件本身是个 Shell 脚本。

首先查看文件内容:

阅读全文…

Docker实战(三)镜像管理

日期:2016年4月28日 作者: 分类:运维 阅读:1,342

简单的说镜像就是一个容器的只读模板,用来创建容器。当运行容器时需要指定镜像,如果本地没有该镜像,则会从Docker Registry下载。默认查找的是Docker Hub。Docker的镜像是增量的修改,每次创建新的镜像都会在老的镜像上面构建一个增量的层,使用到的技术是Another Union File System(AUFS)。

一、使用 Docker Hub

镜像存储中的核心概念仓库(Repository)是镜像存储的位置。Docker 注册服务器(Registry)是仓库存储的位置。每个仓库包含不同的镜像。

比如一个镜像名称 ubuntu:14.04,冒号前面的ubuntu是仓库名,后面的14.04是TAG,不同的TAG可以对应相同的镜像,TAG通常设置为镜像的版本号。

Docker Hub 是Docker官方提供公共仓库,提供大量的常用镜像,由于众所周之的原因经常连接Docker Hub会比较慢,所以我们也可以选择一些国内提供类似Docker Hub镜像服务站点。连接Docker Hub的常用命令包括:

# 搜索镜像
docker search ...

# 下载镜像
docker pull ...

阅读全文…