宅技术

Linux下学习王爽老师的汇编语言

Posted on

王爽的汇编语言是基于windows下的dos和masm…………
这个让我很无语,因为我平时根本不会去用windows,而且在Linux下也没有masm……
masm与nasm区别开的m应该就是微软的意思。
更让人无语的是,两个编译器的语法还有很大差别……
因为编译器不同导致语法差别我还是第一次碰到……
不过汇编作为第一门语言,除了指令以外的伪指令有所不同还是可以理解的。

开始正文。

freedos

fochs官网有提供freedos的镜像,所以十分方便。
只要下载这个镜像,再用模拟器去模拟加载就可以了,在解压目录下运行bochs即可自动加载。

bochs镜像 传送门 找第一个就是freedos的镜像。

界面是这样的

之后的操作就完全跟书上的一样了…………
突然发现没办法用masm……这是最僵硬的…………

dosemu

没办法,用了dosemu。
dosemu的一个优点在于默认会在它的d盘,挂载你的用户根目录,这就免去修改镜像或者无从挂载的麻烦。

界面是这样的

比起bochs来速度很快,感觉bochs用来模拟dos有点牛刀小用了。
之后你只要去下载一个masm.exe,再先进入D盘符,再进入你的masm.exe的目录,就可以在dos里进行编译调试了。

最后写了一个 helle world,运行成功!!

真是不容易啊………………

宅技术

Ghost博客安装简明指南

Posted on

前言

Ghost 是一套基于 Node.js 构建的开源博客平台(Open source blogging platform),具有易用的书写界面和体验,博客内容默认采用 Markdown 语法书写,目标是取代臃肿的 WordPress。

如果你受够了wordpress的臃肿,如果你苦于寻找简介的主题,想要享受写作的话,我十分推荐Ghost博客。
但是因为个人需求,我现在选择了wordpress

这里简单介绍一下如何快速安装Ghost博客。

安装环境

  • centos7
  • DigtalOcean VPS (只要有任意一台VPS即可
  • Node 4.2.6 (官方指定最新LTS
  • Nginx (内存占用低
  • Ghost v0.7.4 full (zh) (中文支持
  • mariadb
  • 以下命令都是以root用户执行

安装准备

yum update

都懂的…………

安装Node

wget nodejs.org/dist/v4.2.6/node-v4.2.6.tar.gz
tar zxvf node-v4.2.6.tar.gz  
cd node-v4.2.6
./configure 
make && make install  

通过node -v 检查版本可检测是否已成功安装

安装nginx

yum -y nginx          #安装
service nginx start  #启动服务
chkconfig nginx on   #服务开机启动

安装成功后打开浏览器输入你的IP就能看到 Welcom to Nginx! 的字样

配置nginx

cd /etc/nginx/conf.d/
rm default.conf # 删除默认配置
vi ghost.conf

ghost.conf 输入以下内容

server {  
    listen 80;
    server_name example.com; #将 example.com 改为你的域名或ip。

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

重启nginx 是配置文件生效

service nginx restart 

安装mariadb

ghost默认使用的是sqlite数据库,众所周知,sqlite数据库在应对较大的数据时比较乏力,所以这里我们安装mariadb

yum -y install mariadb mariadb-server
service mariadb start   # 启动服务
chkconfig mariadb on  # 开机启动
mysql_secure_installation # 配置mariadb

配置mariadb只要你最开始设置一下密码,其他默认就好
为了避免数据库存放的中文是乱码,我们还需要设置数据库的编码

vi /etc/my.cnf

写入以下内容

[client]
default-character-set=utf8  
[mysql]
default-character-set=utf8  
[mysqld]
character-set-server=utf8  
collation-server=utf8_general_ci  

保存退出后,需要重启一下服务

service mariadb restart

当然最重要的,在安装好数据库之后,我们需要专门为其新建一个用户来存放数据。

mysql -u root -p # 输入设置好的密码  
create database ghost; # 创建ghost数据库  
grant all privileges on ghost.* to 'ghost'@'%' identified by 'password'; # 在password处改为你要设置的密码
flush privileges # 重新读取权限表中的数据到内存,不用重启mysql就可以让权限生效 
exit

这样数据库就算是准备好了。

安装Ghost

接下来就是博客的主体程序了,首先进行安装

cd /var/www
wget http://dl.ghostchina.com/Ghost-0.7.4-zh-full.zip
unzip Ghost-0.7.4-zh-full.zip -d ghost
cd ghost

安装好后需要进行配置,ghost目录中有样例配置文件,我们 cp 一份进行更改

cp config.example.js config.js  
vi config.js

查找 production 模式进行更改

production: {  
    url: 'http://nodekey.com', # 修改为你的域名或者IP,注意加上http://
    mail: {},
    database: {
        client: 'mysql'
        connection: {
            host     : '127.0.0.1',
            user     : 'ghost',            # 数据库用户
            password : 'password', # 数据库用户密码
            database : 'ghost',        # 数据库名称
            charset  : 'utf8'
        },
    server: {
            host: '127.0.0.1',
            port: '2368'   # 2368是ghost的默认端口,若修改该端口记得在nginx中做相应改变
        }
    }

保存退出,执行命令

npm start --production

即在centos服务器上运行了ghost,打开浏览器输入你的ip或者域名,即可成功访问你的博客。打开http://your_ip/ghost 即可进入博客后台管理博客。按ctrl - c退出进程。

pm2后台管理博客

众所周知,当你在一个终端中运行一个进程时,你无法无时无刻都管理这这个进程,一旦你按 ctrl - c退出进程,你的博客也就自然无法访问了。这时候就需要一个后台进程管理应用,在这里我用的是pm2

cd /var/www/ghost
npm install pm2 -g     # 安装PM2
NODE_ENV=production pm2 start index.js --name "ghost"
pm2 startup centos
pm2 save

执行命令重启ghost

pm2 restart ghost

如果你的ghost有过非配置上的更改,你需要执行pm2 --update-env restart ghost 重启使其生效。

更换主题

Ghost更换主题还是比较方便的, cd /var/www/ghost/content/themes/ 即可进入主题目录。
你可以通过git下载主题,ftp上传主题,再执行 pm2 --update-env restart ghost更新环境。
最后进入 http://your_ip/ghost 更换一下就可以了。

在这里我十分推荐 ghostium
真正为写作和阅读而生的主题!!!

原生Ghost的一些缺陷

  • markdown不支持TOC,不支持自动换行(就是说你必须手动加一个
    才能换行
  • 定制性不强,不易扩展,在样式上大多需要源码上的更改,当然对象是我这种不太懂前端的小白,对大佬来说还是很适合的。
  • 过于简洁……(源自acmer对标签与目录的强烈需求)
  • 在索引上表现不是很好
宅技术

一条龙搭建ShadowSocks

Posted on

很早之前自己找教程搭建pptpd失败了好几次就没再去搞过了。今天可以说是“旧情复燃”,只不过是换了种方式,没想到却简单得多。

服务器端

以我的Centos为例

1. 安装shadowsocks
yum -y install python python-pip
pip install shadowsocks
2. 配置shadowsocks
vim /etc/shadowsocks.json

输入配置内容

{
    "server": "服务器的ip",
    "local_address": "127.0.0.1",
    "local_port":1080,
    "port_password": {
        "端口1": "密码1",
        "端口2": "密码2",
         .....
        "端口n": "密码n" 
    },
    "timeout": 300,
    "method": "aes-256-cfb"
}

2017-10-11 15:42:42 星期三 更新
多端口貌似不能用了,单独一个端口可以继续使用,默认设置多个设备都可以用一个端口。

{
    "server": "服务器的ip",
    "server_port": 端口号,
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password": "密码",
    "timeout": 300,
    "method": "aes-256-cfb"
}

然后就是开启/关闭服务
开启服务:ssserver -c /etc/shadowsocks.json -d start
关闭服务:ssserver -c /etc/shadowsocks.json -d stop

Android客户端

自行下载 shadowsocks App

操作界面
操作也是很简单的

  1. 配置名称 : 任意
  2. 服务器 : vps ip
  3. 远程端口 : vps 开放端口号
  4. 密码 : 字面意思
  5. 加密方法 : 与服务器端保持一直

Linux客户端

安装 shadowsocks
yaourt -S shadowsocks-qt5

添加配置基本与android相同
connection -> add -> manually

终端

以我的 Arch 为例

1.安装shadowsocks

yaourt -S python2.7 python-pip
pip install shadowsocks

编辑文件vim /etc/shadowsocks.json,填写代理信息:

{
    "server":"my_server_ip",
    "server_port":8388,
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password":"mypassword",
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
}

后台启动/停止shadowsocks
启动:sslocal -c /etc/shadowsocks.json -d start
停止:sslocal -c /etc/shadowsocks.json -d stop

2. sock5转http

Shadowsocks使用socks5协议,而终端很多工具目前只支持http和https等协议,所以我们为终端设置Shadowsocks的思路就是将socks5协议转换成http协议,然后为终端设置即可。

简而言之,我们需要一个代理的代理去支持我的vpn,因为Shadowsocks不支持我们常用的传输协议。
这里我用到的是 privoxy ,附带一个比较详细的博文介绍

2.1 安装 privoxy
yaourt -S privoxy
2.2 配置 privoxy

终端输入 sudo vim /etc/privoxy/config

修改如下

# listen-address  127.0.0.1:8118 找到这句并改成以下
listen-address  0.0.0.0:8118
# 添加一句
forward-socks5   /               127.0.0.1:1080 .

然后再是重启一下服务 就可以使用代理

sudo systemctl restart privoxy

现在,你可以在某个命令前面加上http_proxy=http://localhost:8118设置代理。
(8118 端口是 privoxy 的默认端口

2.3 验证代理是否成功

没有挂代理的时候:

curl ip.gs
Current IP / 当前 IP: (手动马赛克)
ISP / 运营商:  ChinaTelecom
City / 城市: Wuhan Hubei
Country / 国家: China

挂了代理的时候:

http_proxy=http://localhost:8118 curl ip.gs
Current IP / 当前 IP: (手动马赛克)
ISP / 运营商:  digitalocean.com
City / 城市:  London
Country / 国家: United Kingdom

如果要在当前shell内一直使用代理,只要设置
export http_proxy=http://127.0.0.1:8118/
即可
如果想在当前shell取消代理,则 $ unset http_proxy
如果想要在终端内一直使用代理,也可以在 ~/.bashrc 中设置一下也可。

vim ~/.bashrc

添加一句

export http_proxy=http://127.0.0.1:8118/

最后是source一下让它立刻生效

source ~/.bashrc

3. Proxychains

无疑,无论是临时使用 http_proxy=http://127.0.0.1:8118/ ,当前shell 设置代理,还是全局设置都不是很方便。这里提供一种方式,你只需要在你想要代理的命令前输入 proxychains4 即可。

3.1 安装
git clone https://github.com/rofl0r/proxychains-ng.git
cd proxychains-ng
./configure
(sudo) make && make install
cp ./src/proxychains.conf /etc/proxychians.conf
cd .. && rm -rf proxychains-ng
3.2 修改配置
vim /etc/proxychains.conf

输入以下操作

strict_chain
proxy_dns 
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
localnet 127.0.0.0/255.0.0.0
quiet_mode

[ProxyList]
socks5  127.0.0.1 1080
3.3 测试
proxychains4 curl ip.gs
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/local/lib/libproxychains4.so
Current IP / 当前 IP: (手动马赛克)
ISP / 运营商:  digitalocean.com
City / 城市:  London
Country / 国家: United Kingdom