idcf 购买记录

idcf 是个云主机服务商。最近朋友推荐,入手一个试了一下,因为和 AWS、青云 的配置思路比较接近,不是常见的购买即可用的那种类型,初学者经常不知所措。

下面记录一下我的使用过程,有人掉坑的时候可以在这篇文章找到原因。

简介

idcf 提供的亚洲区VPS包括:日本东部1、日本东部2、日本西部。在申请账号并即将创建VPS的时候,会提示你选择区域。

我试用了东区1和东区2,整体来说差不多,东区2是新建的机房,对比之后选了东区1,速度稍快一点点。

VPS参数

1G内存版

CPU:E5-2680 v2 @ 2.80GHz 1核
内存:1G
硬盘:SSD固态硬盘 15G
流量:3TB/月
带宽:2Gbps
IP:x1
构架:KVM
价格:日本VPS 500日元/月(约等于27.15人民币)

关于 CPU 主频可以略去不看。CPU频率限制800Mhz,编译一遍 PHP 要花1个小时,你的良心不会痛吗?

注册及验证

注册地址:www.idcf.jp

现在注册有一个6个月免费试用的活动,还可以。

跟朋友要了日本的手机号码进行注册。实际上用中国的好像也是可以的。

建立VPS及绑定IP

  1. 登陆管理后台之后,根据你自己的喜好选择日本的地区。然后点击“Computing”中的“Active”来进入创建页面

  2. 点击左上角的“LAUNCH VM”进行创建。

  3. 选择你需要的系统。idcf 只支持密钥登陆。

  4. 创建成功之后。

这里要重点讲一下,到这个界面我就晕了,ip 也ping 不通,不知道怎么办。查了资料就理解了,需要在 IP 选项卡那里配置防火墙和转发条件。

这层级折叠的有点深啊2333333


OSI七层模型与TCP/IP五层网络架构总结

OSI和TCP/IP 的理解对运维工程师来说非常有帮助。 这几天在 vps 平台上配置一些服务器端口的映射,惊然发现不知道 ssh 是基于什么的协议。于是拉出来复习了一遍。

模型简介

(1)OSI七层模型

OSI七层模型是一个理论模型,他是一个定义得非常好的协议规范。 其中高层(即7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端的数据流。

OSI 层 功能 常见协议 运维措施
应用层 文件传输,电子邮件,文件服务,虚拟终端 查看下文 Linux 应用命令测试
表示层 数据格式化,代码转换,数据加密 没有协议  
会话层 解除或建立与别的接点的联系 没有协议  
传输层 提供端对端的接口 TCP,UDP TCP UDP 协议分析
网络层 为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP IP检查 路由设置
数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU ARP 地址检测,物理连接检测
物理层 以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2  

一个服务器监控产品 - Cloud Insight

在知乎这个答案里看到一个宣传答案,答案蛮专业的,试用了下。感觉还可以,不过心里多少有点担心,毕竟不是开源的,东西都在别人手上。

《开源监控系统中 Zabbix 和 Nagios 哪个更好?》

官网是这个:https://cloud.oneapm.com

作为一个手上有一堆服务器的开发者来说,如何管理这些服务器确实比较头疼。我之前用过监控宝,然而感觉还是不能满足需求,免费用户只能监控2台服务器, 其他功能也弱,界面也蛮丑的。

于是也有想过用 zabbix,接下来有时间可以考虑一下。目前精力不济,还是得寻求现成的产品解决一下先。

接下来说说这个国产的监控产品 cloud insight。界面是这个样子:

产品似乎只支持3台服务器。在我添加第四台之时就把第一台顶没了。然而报警还是继续会发过来。

仪表盘应该算是他们的小优势。 简单易懂,可以选择单独的一台机器,也可以选择特定的端口监控,蛮方便的。

更复杂的功能就没有用了。进入控制台,发现这个团队还有其他的产品,看来野心蛮大的,^_^希望能做好:


生病和闲聊近期剁手的东西

最近身体不太舒服,请了一个月的假期在家调理~~~

然后还败了不少东西,嘿嘿。 先来说笔记本支架吧。

原本是想放到床头去的,这样就可以躺在床上悠闲地玩 iPad 和 Macbook 了。可惜床头没有合适的地方。

在此基础上买了传说中的软件 Duet,可以把 iPad 扩展成第二屏幕。

于是相当于有了一个可以触摸的 Mac 了,赛狗哒~~ 最新版的 Macbook 上的触摸按钮都可以模拟。真棒^_^。

还有一个懒人手机支架,给 iPhone 用的,摆在桌面上,也是很方便^_^~


Linux 生成 source-list 源的快速方式

今天在用阿里云的 Debian 8.6 的系统,一开始 apt-get 就提示源不存在,404了。 (摊手

然后发现了这个快速生成 source-list 的网站: https://debgen.simplylinux.ch/

感觉很像是以前的 jquery 简化版,通过选择一些 jquery 的组件,生成最小化的 jquery 文件。确实不错。

甚至还可以选择第三方组件。

我选择了最原始的选项,最后得出的代码如下:

#------------------------------------------------------------------------------#
#                   OFFICIAL DEBIAN REPOS                    
#------------------------------------------------------------------------------#

###### Debian Main Repos
deb http://deb.debian.org/debian/ oldstable main contrib non-free
deb-src http://deb.debian.org/debian/ oldstable main contrib non-free

deb http://deb.debian.org/debian/ oldstable-updates main contrib non-free
deb-src http://deb.debian.org/debian/ oldstable-updates main contrib non-free

deb http://deb.debian.org/debian-security oldstable/updates main
deb-src http://deb.debian.org/debian-security oldstable/updates main

deb http://ftp.debian.org/debian wheezy-backports main
deb-src http://ftp.debian.org/debian wheezy-backports main

ps:今天给博客侧边栏加了我的产品这个选项卡。原图在这里,^_^。


Laravel 使用 Union 进行表连结

官方文档上可以看到这么描述 Unions 的:

查询语句构造器也提供了一个快捷的方法来「合并」两个查找。例如,你可以先创建一个初始查找,然后使用 union 方法将它与第二个查找进行合并:

$first = DB::table('users')
            ->whereNull('first_name');

$users = DB::table('users')
            ->whereNull('last_name')
            ->union($first)
            ->get();

也可使用 unionAll 方法,它和 union 有着相同的方法签名。

今天在实现这样一个需求,将两个类似的表打乱然后显示出来。参考了一份非常、非常、非常难看的原生 SQL 语句,唏嘘~~

原本呢,直接使用 Eloquent 进行 Union ,使用 Get 获取也是可以的,然而因为我需要进行 paginate 分页,直接使用 Eloquent 就报错了,所以还是需要使用原生 SQL 。

不得不说,我对 SQL 语句非常不擅长。于是原生 SQL 可以通过 Laravel Eloquent ORM 自带的 toSql 方法获得。

以下是示例:

private function resumeRelateSqlGetPaginate(Job $job, $resumeStatus)
{
    $sql = '(select * from "resume_as" where "job_uuid" = \'' . $job->uuid . '\' union all select * from "resume_bs" where "job_uuid" = \'' . $job->uuid . '\') as t';

    $builder = DB::table(DB::raw($sql));

    if ($resumeStatus == '99') {
        $sqlMid = '"status" in (22,32,42,43,52) ';
        $builder = $builder->whereRaw($sqlMid);
    } elseif ($resumeStatus == '0') {
        $sqlMid = '';
    } else {
        $sqlMid = '"status" = ' . $resumeStatus;
        $builder = $builder->whereRaw($sqlMid);
    }

    return $builder->paginate($this->resumePaginate);
}

1 2 3 4 5 6 32 33 34 35 36