从grub rescue修复

修复grub-rescue模式 今天删除了一个多余的分区,结果grub找不到原来的启动mod了,也是学习了。 grub-rescue模式中只能用ls, insmod, set root= , set prefix= ,这几个命令。 使用ls显示所有的磁盘。 然后ls (hd0, X)/boot/grub2 查看启动的盘符。 set root=(hd0, X); set prefix=(hd0, X)/boot/grub2 insmod normal normal 发现没搞定,重启还是不幸。 使用# grub2-install /dev/sda 然后就搞定= =

Read More

使用 grub customizer 调教grub

调整grub总是需要搜索某个文件,某个配置,相当麻烦,近期找了一个比较不错的图形化配置管理器,grub customizer,可以调整启动的内核,以及启动的画面,非常好用,安利一发。 安装 sudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo apt-get update sudo apt-get install grub-customizer 使用截图 【日后补上】 reference http://ubuntuhandbook.org/index.php/2016/04/install-grub-customizer-ubuntu-16-04-lts/ grub讲解

Read More

使用Docker安装Spark

在国内加载Dockerhub上的镜像速度会比较慢,对此我们可以通过设置mirror镜像的方式来加速images的下载。 此外,如果是ipv6的网络,在一些mirror可以直接走ipv6通路,速度非常客观。这里以USTC的mirror为例。 我这里的环境是Ubuntu 14.04,对于不同的Linux环境,修改的方式都差不多;修改文件/etc/docker/daemon.json,如果没有这个文件,创建一个,注意,此处可能需要root权限。修改完成后,运行命令sudo service docker restart重启docker服务。 { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] } 配置好以后,选择2.1.0版本的spark进行docker下载。 docker pull p7hb/docker-spark:2.1.0 或者直接运行 docker run -it -p 4040:4040 -p 8080:8080 -p 8081:8081 -h spark --name=spark p7hb/docker-spark:2.1.0 参考 https://lug.ustc.edu.cn/wiki/mirrors/help/docker https://github.com/P7h/docker-spark

Read More

使用Docker时遇到的sitemap问题

这两天感觉博客访问量已经不能靠用嘴宣传了,于是决定做一下sitemap,但是发现django自带的sitemap生成器存在这样的问题:生成的sitemap是依照container的hostname来显示的。 为此我查询了一下其他人是怎么搞的,发现他们都把nginx和django放在一个容器下——但是如此构建不仅麻烦,似乎违背了docker的构建思路,在一个container里面放了多个进程。因此,我认为下面的方案是合理的。 解决方案 Enabling the sites framework To enable the sites framework, follow these steps: Add ‘django.contrib.sites’ to your INSTALLED_APPS setting. Define a SITE_ID setting: SITE_ID = 1 Run migrate. django.contrib.sites registers a post_migrate signal handler which creates a default site named example.com with the domain example.com. This site will also be created after Django creates the test database. To set the correct name and domain for your project, you can use a data migration.

Read More

使用Fabric进行部署

Fabric是一个可以在远程机器上运行命令的库 Fabric官方目前只支持Python2版本,但是有勤劳的人开发出了适配Python3的版本。具体可以查看这个fork。 Fabric的使用 我在使用Fabric的时候主要是用于部署我的网站。使用时候,首先需要引入所有的API: # 导入Fabric API: from fabric.api import * 这样就可以导入Fabric的API进行远程控制啦。 具体问题 git需要输入密码 env.forward_agent = True ssh通过秘钥链接 # 使用秘钥 env.key_filename = ['/Users/xiuhao/.ssh/key'] 使用root # 服务器登录用户名: env.user = 'ubuntu' # sudo用户为root: env.sudo_user = 'root' 一个简单的部署例子 这个部署例子结合了更新代码,进入指定目录,运行命令等。 BASE_DIR = '/home/ubuntu/django_blog' def deploy(): """ deploy new changes """ with cd(BASE_DIR): run('git pull') run('make down') run('make up') 写好文件以后,保存为fabfile.

Read More

使用cd快速在目录间移动

本文出自 难得看见一篇好文= = 操作方法 在此学习并且记录。 标记一个书签: mark [书签] 进入一个书签: g [书签] 输出全部标签: gs 实现原理 sudo vim /etc/profile 也可以使用:w !sudo tee %这种方式来保存 # mark export MARKPATH=$HOME/.marks export MARKDEFAULT=sanguo#设置你的默认书签,可以直接输入g跳转 function g { local m=$1 if [ "$m" = "" ]; then m=$MARKDEFAULT; fi cd -P "$MARKPATH/$m" 2>/dev/null || echo "No such mark: $m" } function mark { mkdir -p "$MARKPATH" local m=$1 if [ "$m" = "" ]; then m=$MARKDEFAULT; fi rm -f "

Read More

使用fish – 一个新的shell

许多人都在推荐fish-shell,比如说阮一峰大佬和Reitz神;因此也要试试fish的魅力。虽然已经是z和zsh的老用户,但是对于效率的极致追求不能停。 注意:fish仅适用于某些开发场景,目前不适用于所有开发场景——在其他许多shell环境中,由于历史因素以及已经构建完成的大量生态,对于当前的开发影响是巨大的。 fish基本操作 fish不仅仅使用tab进行不全,还可以使用ctrl+f或者alt+f进行全行不全。 fish还可以通过安装oh-my-fish,对应到z-shell的oh-my-zsh。不过,一般情况下,fish本身就已经做的够好了,基本不需要再进行更多的配置。 fish中的export 使用set -x来替代。例如set -x HOME /home/svtter,即export HOME=/home/svtter 后记 后来我还是切换回了zsh;我使用的开发环境对于zsh已经支持的很好了,但是对于fish的支持还是差强人意。学习新的技术是需要成本的,如果有时间就对fish的支持进行完善,如果没时间,那么还是等它更加成熟再使用吧。 参考 http://www.ruanyifeng.com/blog/2017/05/fish_shell.html

Read More

使用gdb调试

最近都是用gcc+vim写代码,昨天突然写个代码算法出个逻辑bug,因为用了大量递归调用,DEB半天出不来也是醉了,于是 学习一下gdb——之前也是勉强使用过,但是明显感觉不爽阿。。所以这次好好学习,记录一下。 目前我能用到的几个命令: 选择调试文件 <shell>: gdb <file> 或者进入gdb以后,使用 断点 显示断点 (gdb): info break 添加静态断点 (gdb): b[reak] + 行数/函数名 (可以用tab补全) 添加条件断点 条件为真,则在断点处停止 – (gdb): b addr if condition 删除断点 删除编号为1的断点, 如果不加参数,会删除所有断点 – (gdb): delete breakpoint 1 启用/禁用断点 (gdb): disable breakpoint 1 (gdb): enable breakpoint 1 运行 开始运行 (gdb):r 继续 (gdb):c 单步调试 不进入单步执行 – (gdb):n 进入的单步 – (gdb):s[tep 显示变量 以变量为var为例

Read More

使用openwrt

今天花了不少时间在openwrt上(实际上是全都花在上面了),从一开始的写入到最后终于能跑; 因为手头没有可用的路由器,只能通过无线连接以及网线来调试,IP设置上的问题吃了不少苦头, 最后一个个排查终于解决了问题。 安装 我这里的设备是RaspberryPI 3B;对应的openwrt的下载链接,只有8M,解压缩后有300M,很神奇,估计是IMG里面有不少00; 配置 配置上参考了几个博客: http://sh.alynx.xyz/posts/2016/06/28/RPi-Router/ 一个H3C https://github.com/ruijanlee/h3cc 树莓派3 刷openwrt https://my.oschina.net/wangandi/blog/687389 ss http://www.wzero.net/?p=137 关于ipsec 在网上没有搜索到现成的配置,今天已经比较累了,如果明天有时间再看吧。

Read More