为了自由

本文出自svtter.com 本文可以随意转载,但是转载请保留本信息. Linux下自由之路颇为难走 — 也不是很难走,openvpn等等工具都还好,但是因为前几天支付宝刚刚挂 掉 — 好吧,我承认挂掉有些时间了,但是我一直懒得跑银行,反正没了网银也不是不能活。 然后的然后就是自由之路的走法了。因为没有网银,买不了vpn,只能自己好好想办法了。goa.ent我尝 试过,但是因为过于慢的速度和不稳定的因素所以决定作为下下策。另外开源了的go堵起来是不是更容 易呢。。也是醉了。 必须要灭蟑了,真心受不了了,外卖给宿舍带来的是无尽的蟑螂。 archlinux下我给的方案是利用一些自由软件来进行走道,这方面的东西还是比较多的,我就不一一列举 了,但是还是主要针对free.oor来进行。 archlinux或者其他的发行版直接安装wine就可以了,方法也是很简单。怎么安装?举个简单的例子,想 要用什么,就发行版 + wine进行搜索,很快就可以找到了。wine是Linux的windows模拟器,暂且这么 理解吧。 搞好了wine以后,点击运行你下载的软件即可 — 会提示MFC42.dll不存在。然后有些双系统的同志喜欢 从自己的另一个系统里cp到.wine/drive_c/windows/system32或者syswow64下,但是事实上这样解决 不了问题,最好的方法是从百度搜索一个:MFC42.dll winxp这样的比较合适,可能是wine在最初适配 的时候主要使用的这个吧。 成功开启以后,就是代理服务器的问题了。代理服务器方面,个人认为Linux设置起来比windows容易( 也可能是我不太喜欢windows,所以没有认真研究的缘故)。 如果在bash下,使用export http_proxy=localhost:PORT即可。对了,PORT是对应的端口,不要搞错 了。这样在bash下开启的程序都是走代理的,更确切的说是从shell跑的程序都是走的代理。所以要搞什 么系统全局的问题, 不同发行版的问题也就迎刃而解了。 感谢你能够读完这篇文章。

Read More

从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