分类 技术探讨 下的文章

在xx月xx号,我入手了树莓派3b,某宝300,清单如下:

  • 板子199
  • 电源35(其实我有5v2a的充电器还有充电宝)
  • 辣鸡无线键盘30
  • 亚克力壳子15
  • 风扇加扇热片10块左右
很奇怪的一点,我买的国产板子e14,发来了英国的rs

当然还要有内存卡,我有个8g的,但是我还是去狗东买了三桑64G的evo,130还行,不在意外观的风扇键盘都可以不要的,再买个16G卡,300以内肯定可以搞定

回到正题上来

平时还要上班呀,派甩在家里就跟300买了一堆辣鸡放在家里,这个时候就要用到了内网穿透了

作为曾经一位使用过ngrok的用户来说,ngrok真辣鸡(╯▔皿▔)╯

安装配置相当麻烦,配置完成后还各种问题,连接失败,掉线,xxx问题

转战使用别人的ngrok免费服务吧(此处不是打广告),也有掉线问题,用户体验不佳,放弃!

但是入手派后,我还是选择了看ngrok,服务器的问题还好说,但是派的问题多多还解决不了,需要吐槽的点太多了,直接跳到frp上去


国产良心软件(我就是要吹它),配置简单,使用简单,部署方便,资源消耗低(我没有收钱的(╯‵□′)╯︵┻━┻)

最关键的是有中文文档!!!中文文!!!中文!!!中!!!

0x0

这里我用虚拟机吧,我现在在公司,派在家里,我要是重启frp就掉线,那就没有后面的操作了( ´_ゝ` )

虚拟机配置(此处相当于树莓派)

  • CentOS Linux release 7.4.1708 (Core)
  • 内核版本 3.10.0-693.11.6.el7.x86_64
  • 架构 x86_64
  • 内存512M
  • CPU2核

服务器配置
鹅厂香港1块钱机子

  • CentOS Linux release 7.4.1708 (Core)
  • 内核版本 3.10.0-514.21.1.el7.x86_64
  • 架构 x86_64
  • 内存1G
  • CPU1核
  • 带宽1M

在他们的release页面选择你要使用的版本

这里我就用了frp_0.15.1_linux_amd64.tar.gz这个包,如果你要使用树莓派3b的版本,官方的arm包使用是有问题的,我的派是archlinux系统,编译的客户端包在这里frpc-0.15.1-raspberrypi.zip,如果想安装archlinuxarm可以看我的这篇文章

到此准备工作结束了

当然这些都是在你可以使用已有的二进制文件的情况下操作的,不能操作请自行单独编译

0x1

注意: 接下来的操作我们都是在root用户下操作的,其他用户请自行判断使用sudo命令

wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.15.1/frp_0.15.1_linux_amd64.tar.gz

tar -xvf frp_0.15.1_linux_amd64.tar.gz

cd frp_0.15.1_linux_amd64

ls -al  // 与ll命令一样

解压后的文件应该是下面酱的

frp解压文件列表

客户端

删除如下文件

rm frps frps_full.ini frps.ini LICENSE

客户端保留的文件
客户端保留的文件

服务端

删除如下文件

rm frpc frpc_full.ini frpc.ini LICENSE

服务端保留的文件
服务端保留的文件

      • -

        温馨提示

frpx_full.ini的配置为官方允许的所有配置项,frpx.ini为基础配置(建议使用,不然你都不知道自己哪里出现错误)

此处x表示客户端的c与服务器的s

0x2

这里我使用基础配置文件

服务端需要开启7000监听frp服务,6000监听转发客户端ssh服务

服务端开放端口如下执行

使用iptables的pong友

iptables -A INPUT -p tcp --dport 7000 -j ACCEPT
iptables -A INPUT -p tcp --dport 6000 -j ACCEPT
service iptables save

使用firewalld的pong友

firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=6000/tcp --permanent
firewall-cmd --reload

0x3

地基已经搭好了,可以开始运行frp了

服务端

我们执行下面这条操作,开始运行frps服务器

./frps -c ./frps.ini

运行状态如下图(那个说什么有安全问题的等连接没问题了再来调┑( ̄Д  ̄)┍)
开启frps服务器

客户端

我们需要配置服务器ip地址才能穿透至外网,所以使用nano,vi,vim等编辑器修改配置文件中的server_addr

[common]
server_addr = 你的服务器ip
server_port = 7000

修改完成可以保存了,执行下面这条操作

./frpc -c ./frpc.ini

看!分配了id,ssh已经成功代理了( •̀ ω •́ )✧
成功连接

这时候你如果回头看服务器的控制台也会有成功的消息

0x4

现在可以测试一下能否成功连接到虚拟机的ssh辣(●ˇ∀ˇ●)

可以很清晰的看到,当前在线的用户有两名,可以看到pts/0的用户在执行我们之前的监听的命令
美滋滋

到这里frp已经算是成功运行了

但是...

我们不可能一直开着终端吧,这里我把我的启动停止脚本分享出来

脚本有点不适用了,自己写一个吧。。。

0x?

距离上一次发这种教程文章好久了,还说是要发ssh的无密码登陆,在几个服务器上公钥登陆都不一样,有点坑,发文章的目的就是解决这其中的问题,好辣,就酱。

晚安爱你哟

这里不推荐直接使用 sudo yum install -y docker-ce 来安装docker,centos自带源的docker版本会相对老旧,也可能根本不存在

在这里我讲的是在 CentOS Linux release 7.4.1708 (Core) 的环境下操作的,理论上centos7通用

0.预备操作

官方推荐的操作,先将计算机内存在的老旧docker相关软件删除

sudo yum remove docker \
                  docker-common \
                  docker-selinux \
                  docker-engine

安装必要的工具

sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

添加docker自己的官方源

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
当然这时,你就可以使用 sudo yum install docker-ce 安装最新的docker社区版本了。有特殊要求或者不想使用最新的edge版本,可以继续接着看下去

1.开始

这里的操作都是视你为第一次安装docker
使用 yum list docker-ce --showduplicates | sort -r 查看当前docker社区版本的版本号选择安装
# 这是我写这篇文章时的相关版本信息
docker-ce.x86_64            17.11.0.ce-1.el7.centos             @docker-ce-edge
docker-ce.x86_64            17.09.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.0.ce-1.el7.centos             docker-ce-stable

第一列为 包名
第二列为 版本名
第三列为 标识稳定或测试

我们今天当然不可能安装第一行的那个家伙,至少第一行下面的那些我们都可以安装

我们安装就需要把列出来的信息组成包名

比如选取第二行这条

docker-ce.x86_64            17.09.0.ce-1.el7.centos             docker-ce-stable

包名 = 第一列点号前半部分 + '-' + 第二列

中间使用 - 连接

得出的包名就是酱紫的 docker-ce-17.09.0.ce-1.el7.centos

现在可以开始安装啦

sudo yum install docker-ce-17.09.0.ce-1.el7.centos

。。。等待安装完成,漫长的安装过程(视机器性能配置,安装时长会有所变化)

安装完成就可以执行下面的操作了

# 开启docker
sudo systemctl start docker

# 添加开机启动(可选)
sudo systemctl enable docker

试试docker?

# 查看版本信息是否与安装时的相符合
docker version

正常执行有输出就ok了

PS: 如果你不是使用的root账户登陆,还需要添加docker组,将当前用户添加到docker组去
# 创建docker用户组
sudo groupadd docker
# 将当前用户添加到docker组内,$USER是用户的环境变量
sudo gpasswd -a $USER docker
# 这个时候还需要 restart 重启一下docker,我不也不知道为什么reload 重载配置对docker无效
sudo systemctl restart docker

2.安装docker-compose(可选)

有什么很牛逼的作用,我现在也说不上来,毕竟所有时间加起来也才看了两天不到的样子

这里我就从不知名处截取介绍给你们看吧

Docker Compose是Docker编排服务的最后一块,前面提到的Machine可以让用户在其它平台快速安装Docker,Swarm可以让Docker容器在集群中高效运转,而Compose可以让用户在集群中部署分布式应用。简单的说,Docker Compose属于一个“应用层”的服务,用户可以定义哪个容器组运行哪个应用,它支持动态改变应用,并在需要时扩展。

官方安装命令,版本号 1.17.0 可以替换最新,github页面查看

sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

修改命令权限

sudo chmod +x /usr/local/bin/docker-compose

查看版本信息

docker-compose version

出下一篇是不可能的辣,这辈几都是不可能滴辣,steam上游戏辣么好玩,辣么多漂亮的大雕萌妹,说话又好听,我炒鸡喜欢那里辣,下一篇?不可能滴辣

今天装了个docker哟,挂着服务想要试试压力测试

在自己的服务器上试着用了一下 ab 命令,出现 zsh: command not found: ab

好吧,还要安装一下,sudo yum search ab,告诉我没有可用的软件包,这个就奇怪了

查找文档...

解决

sudo yum provides /usr/bin/ab
Loading mirror speeds from cached hostfile
 * base: mirror.fileplanet.com
 * elrepo: ftp.yz.yamagata-u.ac.jp
 * epel: dl.fedoraproject.org
 * extras: mirror.fileplanet.com
 * updates: mirror.fileplanet.com
httpd-tools-2.4.6-67.el7.centos.x86_64 : Tools for use with the Apache HTTP Server
源    :base
匹配来源:
文件名    :/usr/bin/ab

使用 httpd-tools-2.4.6-67.el7.centos.x86_64 这个包名

执行

sudo yum install -y httpd-tools-2.4.6-67.el7.centos.x86_64

安装完成,美滋滋

晚上更新docker, Mastodon, Gitlab的相关文章

我在使用自己以前高中时用的小米3调试android应用时,总是出现下图中的情况

issue.png

因为一直知道小米的尿性,刷机,root都要开发者选项里点8秒允许

所以一开始就把 USB调试,USB安装还有FASTBOOT刷机都开启了,然而还是出现上面的情况

经过不存在的网站搜索得知,原来是开发者选项里的 MIUI优化 在作祟(自己心中一万头CNM在奔腾)

解决方法

开发者选项 -> MIUI优化 (关闭掉)

即可解决无法安装的问题

php里面,我曾经也一直认为是2个字节,在学习的过程中,根本没有对字符编码这个玩意进行过了解,在前段时间也看到了其它人说是2个字节,但是使用strlen()或mb_strlen()检查一个汉字所占的大小,是3位!!!

如果这个时候使用substr()或mb_substr()切割汉字的话必定会出现乱码,这个时候你就需要了解到unicode了

      • -

英文字母:

  • 编码: GB2312, 字节数: 1
  • 编码: GBK, 字节数: 1
  • 编码: ISO-8859-1, 字节数: 1
  • 编码: UTF-8, 字节数: 1
  • 编码: UTF-16, 字节数: 4

中文汉字:

  • 编码: GB2312, 字节数: 2
  • 编码: GBK, 字节数: 2
  • 编码: ISO-8859-1, 字节数: 1
  • 编码: UTF-8, 字节数: 3
  • 编码: UTF-16, 字节数: 4
      • -
面试出个字符编码的题完全可以呀,感觉面试难度又提高了一截。

unicode这个业界标准好呀,基本上现在所使用的环境中都存在unicode,把世界上大部分的语言文字整理编码出来,电脑可以更简单的呈现和处理文字,大家不用烦恼自己看到的是乱码而厌烦了,文字以原始的方式显示

最新版本的unicode是2017年6月20号10.0.0

      • -
        参考资料:
  1. http://www.unicode.org
  2. http://www.unicode.org/standard/WhatIsUnicode.html
  3. https://zh.wikipedia.org/wiki/Unicode

正式版v1.2发布,新增掉线重连(服务器挂了那是没有办法的?‍♂️)

注: 需要安装swoole扩展

在公司闲着了好长时间,现在就是没事在找事做,真鸡儿刺激

用了两天搞了这个(抄)?QQ聊天应用

做起来难度不大,利用现有的swoole扩展可以快速构建出一个开袋即食的IM应用,自己所需要做的是相应的逻辑处理与权限管理

我在这里还使用了identicon来做随机头像,想着大家进来还打个鸡毛的账号呀,直接名字搞起,飞机火箭刷起来

ps:不清楚identicon的可以看看identicon wiki

      • -

如果你非要说和QQ一样,我能怎么办,我tm就是抄的QQ #滑稽

聊天室首页

添加可耐的颜表情(●'◡'●)让聊天更具趣味性(我才不是死肥宅)

添加可耐的颜表情(●'◡'●)

还特意为大(hao)佬(shi)们(zhe)人性化的添加了斗图模式,看我是不是很爱你们

斗图莫斯

      • -

这是一个最基础的聊天室程序了,识别性,趣味性,都有具备,具体的怎么开发看你们的了,我把项目地址甩在下面

演示地址: http://chat.flxxyz.com

github: https://github.com/flxxyz/php-chat-websocket

到当前的 Homestead 目录下,打开 Homestead.yml 然后你懂的

site: 下,按一下格式添加站点

- map: homestead.app           // 站点域名
  to: /home/vagrant/Code/Laravel/public    //站点目录

有需要的话,可以在 folders:下,添加共享目录,方便本地编辑,虚拟机实时读取了

- map: E:\Work\virtualBox\homestead\site   // windows用户是用这种路径
  to: /home/vagrant/Code/site              // 开启共享目录之后,虚拟机会存在的目录

拜拜ヾ(•ω•`)o

Vue.component(组件名, {
    template: 模板ID, // 使用script与template标签均可实现
    props: [传递数据参数],
    methods: {
        方法名: function () {}
    }
});

单文件可以参考上篇

我是使用import导入没有问题,用 webpack 生成的时候,发现用 Vue.component() 注册会报错,检查发现解决方法,删除new里的 components

import xyz from './components/head.vue';

使用全局注册组件时,须在新建实例的选项中将 components 删除

Vue.component('xyz ', require('./components/head.vue'));

new Vue({
  el: '#app'
  //components: { xyz }
});