Tmux学习笔记

相关链接

tmux入门教程:http://blog.jobbole.com/87278/,http://blog.jobbole.com/87584/

一些感悟

网上教程之所以看起来比较痛苦,主要是没有讲清楚session的含义,让我误认为一个窗口就是一个session,浪费了许多时间,实际上session可以理解为一个场景,在这个场景中一般你就是要写一个工程,故同一个session中可以开多个窗口,而一般不存在session切换的问题。

常用命令

一些问题

  1. 错误sessions should be nested with care, unset $TMUX to force:
    个人理解是说必须先detach当前的session再attach新的session,否则就成了嵌套关系,是tmux里面不推荐的。实际上这个问题就是对session理解不够导致的,参见前文
  2. tmux导致vim的分栏不能通过鼠标拖动了,需要使用命令调整宽度

 

原创文章地址:【Tmux学习笔记】转载时请注明出处mhy12345.xyz

Flask学习笔记

各种链接

官方文档:http://docs.jinkan.org/docs/flask/,*有一点点枯燥……

教程:http://www.pythondoc.com/flask-mega-tutorial/index.html,*一个写的不错的民间教程,一步步介绍了怎么建立一个工程,对于代码结构有讲解

flask-WTF:http://docs.jinkan.org/docs/flask-wtf/,*flask表单库

jinjia2文档:http://docs.jinkan.org/docs/jinja2/

jinjia教程:https://zhuanlan.zhihu.com/p/23669244

flask-bootstrap:http://pythonhosted.org/Flask-Bootstrap/,*一个把flask和bootstrap结合的库

bootstrap官网:http://v3.bootcss.com/getting-started/,*里面有很多模板

Step1. virtualenv

道理我都懂,然而这tm到底有啥用啊……安装了那么多年的包,还没见过冲突的,而且我电脑里面python的包不就是venv里面的包么?外面如果要冲突里面就不了?最重要的是界面还那么丑……

其中一点比较有趣的是 . bin/activate 命令激活venv虚拟环境,其中点和source命令相似,将bin目录下activate这个bash文件导入,bash文件中将bin目录路径加在了PATH命令之前,已完成重定向python相关路径.

Step2. Hello World

照着链接2一步一步写,比较有趣的一点是工程的架构。

这是官方文档的HelloWorld

这是工程化的Helloworld目录架构

__init__.py

views.py

run.py

by the way,里面的循环引用关系实在是没有弄懂

Step3.服务器编写

 

jinjia2

jinjia2是flask的渲染引擎,自动在app/templates里面搜寻模板文件。

Bootstrap

flask里面的bootstrap貌似比一般nodejs啥的要简单一些,不需要自己配置static文件,直接 pip install flask-bootstrap 即可。

将__init__.py改写为

注意,之前将 Bootstrap(app) 放在run.py中出现了问题,可能是import views的问题

发现现在debug模式没法及时刷新了……不知道啥原因

原创文章地址:【Flask学习笔记】转载时请注明出处mhy12345.xyz

天局

 

  这是多么壮烈的决斗啊!围棋在此显示出慷慨悲歌的阳刚之美:它不是温文尔雅的游戏,它是一场血肉横飞的大搏杀!看,浑沌使出天生蛮力,杀得白棋惨不忍睹;蚊帐中人猛攻黑龙,一口接一口地紧气,雪白的手臂竟如此阴冷,刽子手一样扼住对手的喉咙。浑沌走每一步棋,都仿佛在叫喊:“我受够了!我今天才像一条汉子!”白棋却简短而森人地回答:“你必死!”黑棋的攻势排山倒海,招招带着冲天的怒气。一个复仇的英雄才会具备那样的力量,这力量如此灼热,犹如刚刚喷出火山口的岩浆,浩浩荡荡,毁灭万物。白棋置自己的阵地不顾,专心致志地扼杀黑龙。两位武士都不防卫,听任对方猛砍自己的躯体,同时更加凶恶地刺向对方的要害。

屋外响起一声琵琶,清亮悠扬。琵琶先缓后急,奏的是千古名曲《十面埋伏》。又有无数琵琶应和,嘈嘈切切,声环茅屋。小小棋盘升起一股血气,先在屋内盘桓,积蓄势大,冲破茅屋,红殷殷直冲霄汉。天空忽然炸响焦雷,继而群雷滚滚而下。琵琶声脆音亮,激越如潮,仿佛尖利的锥子,刺透闷雷,挺头而出。两者互压互盖,反复交错,伴那一柱血光,渲染得天地轰轰烈烈。

蚊帐中人幽幽叹息:“唉……”一只白臂徐徐缩回,再不复出。

 谷地平整四方如棋盘,黑石白雪间隔如棋子,恰成一局围棋。教师思忖许久,方猜出浑沌冻死前搬石取暖,无意中摆出这局棋。真是棋痴!再细观此局,但见构思奇特,着数精妙,出磅礴大气,显宇宙恢宏,实在是他生平未见的伟大作品。群山巍峨,环棋盘而立;长天苍苍,垂浓云而下;又有雄鹰盘旋山涧,长啸凄厉……

官屯教师身心震动,肃穆久立。

众人登山围拢教师,见他异样神情皆不解。纷纷问道:“你看什么?浑沌干啥?”教师答:“下棋。”“深山旷野,与谁下棋?”教师沉默不语。良久,沉甸甸道出一字:“天!”

俗人浅见,喳喳追问:“赢了还是输了?”

教师细细数目。数至右下角,见到那个决定胜负的劫。浑沌长跪于地,充当一枚黑子,恰恰劫胜!教师崇敬浑沌精神,激情澎湃。他双手握拳冲天高举,喊得山野震荡,林木悚然——

“胜天半子!”

文里文外,都是不被世人所理解的孤独与固执。既然能够胜天半子,便注定不会被上天所青睐,也就只能靠自己了。

原创文章地址:【天局】转载时请注明出处mhy12345.xyz

远方除了遥远一无所有

远方

海子
远方除了遥远一无所有

遥远的青稞地

除了青稞一无所有

更远的地方更加孤独

远方啊除了遥远一无所有

这时石头

飞到我身边

石头长出血

石头长出七姐妹

站在一片荒芜的草原上

那时我在远方

那时我自由而贫穷

这些不能触摸的姐妹

这些不能触摸的血

这些不能触摸的远方的幸福

远方的幸福是多少痛苦

读海子的诗,思考着远方是什么?

小学时,远方有幻想与魔法的神秘国度,无限的未知等待探索;

中学时,远方是山的那边的还是山的缠缠绵绵,斩断一切幻想的海岸线,或者是永远无法达到的地平线;

大学后,远方所联想到的,竟然是(x,y)趋向无穷时的多重极限。可笑而又可怕。也许时间就是这么残酷吧,梦与幻想终会被生活中的琐事覆盖,而曾经的远方,又在哪里呢?

原创文章地址:【远方除了遥远一无所有】转载时请注明出处mhy12345.xyz

Docker通过Nginx容器实现域名转发

有些时候一台服务器上面需要架设多个网站,而同一个服务器又只有一个80端口,所以这是一个非常麻烦的事……

我在docker里面架设了两个wordpress,希望分别通过a.com和b.com转发到不同的容器中。

首先大致介绍一下nginx的转发配置

监听blog.mhy12345.xyz:80,对于任意的路径,转发到地址:http://wordpress_wordpress,后面那几行都在转发过程中修改header,具体是不是有用我也不知道。这个内容复制两遍,放入Nginx对应位置(/etc/nginx/conf.d/default.conf),就可以实现对于两个容器的转发了。

顺便给一下docker-compose.yml的写法

这里解释了为什么之前的URL是http://wordpress_wordpress,这是由于docker内部容器链接的dns设置了wordpress_wordpress的ip地址。

参考:http://www.cnblogs.com/Jarvin/p/5796193.html

当然,这一部分相当糟糕,原因是:

缓存!

是的,就是这东西,缓存!

docker的image创建有缓存,这个可以直接通过添加–no-cache参数

解决。

还有更可怕的是“浏览器缓存”

谁tm想得到浏览器会把跳转页面缓存下来啊……

每次输入 http://blog.mhy12345.xyz ,自动重定向到 https://blog.mhy12345.xyz:8022 ,根本找不出哪里有问题……

最后吐槽腾讯云学生机真是坑,一个G内存,5个docker容器就撑爆了……之后扩成两个G,然后月租上百了……

原创文章地址:【Docker通过Nginx容器实现域名转发】转载时请注明出处mhy12345.xyz

Ipython Notebook 使用方法

ipython notebook是个人认为使用python处理课题研究的非常方便的工具。

使用浏览器巧妙解决了远程服务器编程的难题,真不知道设计者是怎么脑洞出来的。

而notebook的核心思想是维护一系列cell,每一个cell里面一句python语句,你可以非常方便的跳转到不同的cell执行下一句话。

下面简单总结一下常用的快捷键

编辑/运行块

复制粘贴块

分裂合并块

 

原创文章地址:【Ipython Notebook 使用方法】转载时请注明出处mhy12345.xyz

Tensorflow学习笔记1-源码学习

TensorFlow 编译

tensorflow可以通过pip安装,也可以通过源码安装,其中pip安装直接

[ccei]pip3 install tensorflow[/ccei]

即可

基于源码的安装教程在https://www.tensorflow.org/install/install_sources 可找到,核心难点在于处理包的依赖问题

[ccei]sudo pip install six numpy wheel
brew install coreutils[/ccei]

运行./configure检查是否完全安装依赖库

TensorFlow 使用

使用tensorflow解决MNIST问题

具体每一个函数都是干嘛的太麻烦,就不写了,反正代码也不是我写的,网上一查一大堆……

原创文章地址:【Tensorflow学习笔记1-源码学习】转载时请注明出处mhy12345.xyz

悲惨与幸福——《活着》观后感

《活着》这部电影是少有的改编小说而没有掉味的一部作品

甚至将小说中的“悲惨”化为了“温馨”,全篇终结在了一家人吃饭的场景,纵使我自己知道最后的结局,也不免有一丝憧憬。

也许这就是幸福吧。

另一方面,电影突出了时代对于人的影响,相关影评也多次提及时代中的人性不曾变过。让我不禁思考起来,是否现在所处的所谓“黄金时代”在未来看也似我们回顾文革时期一样,感觉幼稚、无知?而我们自己又有什么办法可以快时代一步,不被潮流冲昏头脑?也许确实是得“以史为鉴”了。

原创文章地址:【悲惨与幸福——《活着》观后感】转载时请注明出处mhy12345.xyz

Ubuntu 16.04 & Docker 搭建 WordPress

我承认在半期考试前搭博客是非常颓,不过,whatever……

有尝试下载apache2+php+mysql的标准安装包安装方式,最后还是放弃了。大概原因是服务器上本身已经装了一些东西,各种安装包依赖关系炸了,最后直接把服务器整挂了>_<

之后突然想到,docker不就是用来隔离环境,解决各种冲突的么,是不是wordpress可以在docker里面搭?事实证明,在外部包爆炸后,docker内部也会受影响,在docker里面pull了mysql竟然都运行不了。各种调错未果之后,果断重装了服务器。果真在新系统下一切ok……

之后就相当简单,在dockerhub上面我们可以发现已经有一个叫做wordpress的镜像,而且有详细的安装说明,其中使用到了一个叫做的docker-compose工具,可以一键创建多个容器:

大概就是建立两个容器,分别是数据库mysql和wordpress,然后wordpress连接mysql

由于实在太简单,也没啥好说的了

原创文章地址:【Ubuntu 16.04 & Docker 搭建 WordPress】转载时请注明出处mhy12345.xyz