DEAD MAN CODING

FOOOLING.COM

WINDOWS 使用符号链接平稳迁移C盘占硬盘空间的文件夹

2015-06-02 15:13:34

肥皂镇楼!! 这是我的一篇旧文了,上次又用到找了下才找到,故翻出造福大家。

windows 其实是有符号链接的,并非是快捷方式

创建符号链接需要使用mklink这条命令
符号链接的作用类似快捷方式
使用windows时  经常会有c盘空间不断减少的情况,
比如 C:\Users\Administrator\Downloads  这样一个文件夹,不想在每个下载工具都改一遍默认下载路径时,内容就会越来越多。
我们可以在另外盘(比如e盘)   建立一个任意名字的文件夹(比如downloads)
然后将原来 C:\Users\Administrator\Downloads 中的文件全部移动至e:\downloads
然后删除 C:\Users\Administrator\Downloads     (否则无法创建符号链接)

然后 运行->cmd   输入


mklink /d "%HOMEPATH%\Downloads" "E:\Downloads"
的其中%HOMEPATH% 代表了C:\Users\Administrator\  这货 ,可以直接输入具体地址,不影响。
然后就成功地平滑移动了原来文件夹中的内容。 C盘空间得到释放。
遇到必须装在c盘的东西也可以使用同样方法避免空间消耗哦



-------------------------------------人肉分割线-----------------------------------

这次场景是这样的, Win8系统只给了40G的系统盘, 一堆东西自动装在了C盘, 按章上面的方式得先删除原文件夹才能创建,这次想了个更奇葩的方式, 直接替换,例如本来要建立 Downloads这个符号链接, 但是Downloads这个文件夹正被某个程序所使用,OK,我们复制到D盘之后,创建一个Downloads2符号链接链到D盘。 怎么替换呢?  答:关机!。。

对, 比如切换到另外个系统ubuntu,然后把源文件夹删了或者命名为Downloads3 以备恢复, ...

阅读全文

MySQL 5.7.7-labs-json

2015-06-02 14:41:28

最近发现MySQL官网上出现了一种原生支持json的mysql版本,在http://labs.mysql.com/ ,选那个json。目测bin包推荐el6系统, 遂在阿里云买了个按量计费的ECS,准备花一块钱体验下, 效果不错还实惠。

经过一番折腾,写了如下安装脚本,有需要拿走

gist:https://gist.github.com/fooling/28a5db37e7cd60375f81

懒得点或者被墙了可以直接复制下面


#!/bin/bash
 
tar zxvf mysql-5.7.7-labs-json-linux-el6-x86_64.tar.gz
 
path=`pwd`
root_path=$path/mysql-5.7.7-labs-json-linux-el6-x86_64
mkdir /opt/mysql
mkdir /opt/mysql/mysql
mkdir /opt/mysql/mysql/data
useradd mysql
usermod -a -G root mysql
chown -R mysql:mysql $root_path
chown -R mysql:mysql /opt/mysql
mkdir /var/run/mysqld
chown -R mysql:mysql /var/run/mysqld
ln -s $root_path/lib /var/lib/mysql
ln -s $root_path /usr/local/mysql ...

阅读全文

一个因为没看清楚mysql版本引起的xx

2014-10-18 04:50:25

升级10.10后,重装了homebrew,死活装不上MySQL-python这个包

总是提示


fooling@fooling-2:~$ easy_install MySQL-python

Finished processing dependencies for MySQL-python
fooling@fooling-2:~$ python
Python 2.7.8 (default, Oct 19 2014, 11:46:44) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.51)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
Traceback (most recent call last):
  File "<stdin>", line 1, in ...

阅读全文

说说Google authenticator这玩意

2014-08-23 10:38:02

如果你用过“支付宝钱包”里面的那个“手机宝令”,就应该对这玩意的形式不陌生。

Google authenticator(https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2)

好吧中文名叫“身份验证器”

目前支持两种模式:


1. 基于时间,TOTP 
2. 基于计数器,HOTP


而我们熟悉的这种方式就是基于时间,离线地根据一个时间戳和秘钥来生成一个6位数密码。

基于时间的TOTP可以简单认为是基于计数器的,将时间戳简单除以30并取整再丢给HOTP就可以了。

即 TOTP(timestamp) == HOTP((int)(timestamp/30))


也给出一个python的实现


import hmac
import struct
import hashlib
import time
import base64


def hotp(secret, number):
    key = base64.b32decode(secret, True)
    # big-endian, long long
    msg = struct.pack(">Q", number)
    #RFC 2104 , HMAC algorithm ...

阅读全文

我看到的SDN

2014-08-17 03:47:49

之前预告了要讲讲SDN的,后来发生了若干次博客荒芜事件。。最后不了了之。其实我的内心也是很想写博客的,每次想写的时候发现博客没法上传图片就停下来了。。 昨天狠下心终于用阿里云的OSS解决了博客上传图片的问题。可以看到图片的链接已经是华丽丽的aliyuncs.com

——题记

恩,去年夏天实习完后,就不得不进入了毕设阶段。毕设的老师选的是大二的《局域网和城域网》这门课的任课老师。

简单交流之后,就确定了我们的关系。呵呵呵。

然后他告诉我,我可以去看看NOX控制器。本来在这方面没有啥经验,听到XXX控制器感觉瞬间高大上。实习了一个暑假的Java结果又要用C++来做毕设,心里也比较呵呵。不过觉得也是锻炼机会,就接手了。

其实在那个时候我对交换机这一块完全没接触过(虽然自己各种折腾家里的路由器),我还在想SDN和CDN之间是不是有什么关系呢。。。蛤哈。。


于是,我与SDN的故事就这么开始了。


首先,不谦虚地,我说说传统交换 机吧。传统交换机分为两层:控制层和转发层(或者你可以说是控制面和数据面)

恩,多图杀猫。。。。。

就像图上这样。。

而SDN做了个什么事情呢?

答:就是把控制层抽了出来,使得多台交换机被一个控制层来控制。这样,只需要更改软件定义的控制层就可以在不更改硬件的情况下重写整个网络。再把功能抽成一个个的App(或者叫组件/component)实现自由扩展。


这就是SDN主要做了的事情。

SDN以控制层为中心,抽象出两个接口,所谓的“南向接口”和“北向接口”,意思就是字面意思。一个对应用,一个对交换机。

继续上图。

说到SDN就难免谈到OpenFlow。

如果说SDN是接口的话,OpenFlow就是这个接口的一种实现。OpenFlow就是SDN南向接口的实现。打通控制器和硬件之间的路。

控制器这里我们使用的是NOX,其实基于Java的FloodLight估计也差不多。

而北向接口的实现,自然我就只用过我们选的NOX控制器的组件接口了。。



OK,背景介绍到这里,我们进入正题


OpenFlow要求每个实现其接口的交换机配备一个 流表(Flow Table),流表用来记录符合某一规则的数据包的处理方式。

其实我觉得对这个机制的理解可以类似于软负载中心这么一个概念。

在软负载中:

服务调用者通过软负载中心获得服务提供者的地址,软负载中心处于旁路,服务调用者通过软负载找到服务提供者,软负载中心负责调度以及感知各个节点的状态。

OpenFlow中,交换机不仅是相互的通信,包括对数据包本身的处理都通过控制器的来告知。当交换机本地流表中有与数据包匹配的项目时,就不会再走控制器。大概类似上图的软负载结构如下:

流表也类似一个缓存,当不知如何处理一个数据包的时候交换机就会与控制器通信。

交换机和控制器之间的通信是OpenFlow协议,即基于TCP的一种自定义协议(这里注意TCP是第四层协议。。) 不过这里的链路也只是交换机开的一个特殊的口。不是交换口。


总之,通过以上这种架构,就能够通过对控制器的编程达成对下层网络的控制。在这种体系下实现一些链路层协议就比较容易了。于是我最后毕设做了个VLAN功能(通过在控制器上维持一个VLAN关系表,控制交换机之间数据的VLAN加标去标等事情,然后对连接到交换机的主机们透明)

使用SDN也能实现三层交换机的诸多功能。以及常见的spanning tree等协议。这时的交换机只是简单地执行者,而不会去计算各种算法。

目前的SDN在我看来还没怎么普及。我觉得这种体系首先面临着与软负载中心类似的挑战:

1.控制器负载很高的时候可能会存在错判的可能,即错误认为一台交换机已经down了。而实际交换机之间的网络是通畅的。这时候按理说交换机应该主动去检查网络连通情况,但链路不同怎么能在一起。。。

2.高并发下数据的正确性保证

3.单点扩成集群后同步的效率

还有就是作为二层设备依赖四层协议处理或多或少应该会牺牲些性能。

据说google内部已经把SDN用起来了,这玩意的好坏让时间去证明吧。。

大概就说这么多,写这些也是因为毕设做过,还是应该留下点痕迹。


如果你能看到这里真的是不容易。。谢谢关注。。

阅读全文

友情链接