0%

前言

本周给电脑(黑苹果)更新10.15,但是显示器使用的三星C49HG90DMC带鱼屏,分辨率(3840x1080)。一开始不会调分辨率,被我搞得重装了系统,然后记录一下调分辨率的过程,备忘。

开始

  1. 关闭SIP。白苹果(重启恢复模式,输入csrutil disable),黑苹果(Clover配置文件,RT Variables设置状态参数0x67
  2. 安装SwitchResX
  3. 点击设置面板中的SwitchResX,选择左侧列表中的最后一个,自己的显示器型号,我这边显示C49HG9X
  4. 点击Custum Resolutions,开始自定义分辨率。
  5. 点击左下角+,添加自定义分辨率。
  6. 选择Custom resolution,勾选Use simpllified setting,选择CVT-RB
  7. 在下面的ActiveHorizontal,设置3840,ActiveVertical,设置1080。(这里就是设置我们想要的分辨率)。
  8. Scan rateVertical中设置屏幕刷新率。
  9. 接着按Tab键在这几个输入框中切换,会自动调整剩余参数。

如果设置的显示器最佳分辨率,但是保存重启后变成了Not install的提示,请调低屏幕刷新率,再试。

参考

  1. 设置分辨率一键脚本
  2. SwitchResX设置教程
  3. 参考自远景论坛帖子

其中gitee可以使用其他代码管理系统替代。

前言:

前几个开始做起专职的前端开发。虽然已经写了1年多的Vue.js,但对于发布、展示,不停的npm run build亦或是Yarn run build,然后等待构建项目,在通过MobaXterm拖到服务器上。还是比较反感,心心念念的解决方案DevOps,于是有了这篇文章。

准备工作

准备环境

  1. Gitee账号注册。
  2. 本地安装Docker
  3. 安装Jenkins(必须先安装完Docker)。
     #创建Jenkins工作目录
     sudo mkdir jenkins/data/ -p   
     #创建Jenkins容器
     docker run --name myjenkins -p 8080:8080 -p 50000:50000 -v /opt/jenkins/data:/var/jenkins_home -d --restart=always  jenkins/jenkins
     #查看Jenkins初始化密钥(密钥会打印在日志里)
     docker logs myjenkins -f
     #找到密钥后填入(打开浏览器:8080)然后终端的日志就可以按`Ctrl + C`了。
     
    
  4. 公网IP(花生壳可以解决这个问题,免费版可以内网穿透,数量有限制)。

开始

  1. 使用vue-cli创建一个项目(我这里使用UniApp的模板,创建下来是一个UniApp的实例项目)。
  2. 加入Git版本控制。
  3. Gitee推送。
  4. 进入Gitee上面的项目设置里面,进入WebHook选项。
  5. 进入<ip>:8080进入Jenkins管理页面。新增安装以下几个插件。
    1. Publish Over SSH
    2. Docker Plugin
    3. Gitee插件
    4. NodeJs
  6. 进入系统管理=>系统设置,配置以下项:
    1. Gitee标签项
    2. Publish over SSH标签项
    3. 云=>Docker(配置时需要开启Docker Tcp 访问控制)
      1. Docker Host URI,填写Docker Tcp访问控制地址。
  7. Jenkins中新建任务。选择自由构建风格。
    1. 源码管理:输入Gitee仓库。
    2. 构建触发器:Gitee webhook 触发构建。其中:Gitee WebHook 密码,点击生成,然后填回步骤4中的WebHook页面,触发地址,填写外网可以访问的地址:如http://花生壳域名/project/uniapp_hello
    3. 构建环境选择NodeJs
    4. 构建:
      1. 选择执行Shell=>输入构建命令:
         npm -v
         pwd
         npm install
         npm run build:h5
         
        
      2. 构建Docker镜像:
        1. Cloud选择上面创建的构建服务器。
        2. image:输入构建的镜像名称,如需要推送私有仓库,请按照一定规则填写此部分。
        3. 勾选Push image
    5. 构建后操作:
      1. Send build artifacts over SSH:选择添加的Server
      2. SourceFiles:*
      3. Exec command:
         docker rmi 192.168.1.1:9090/hello-uni-web:latest -f
         docker rm hellouni -f
         docker run -d -p 10088:80 --name=hellouni --rm 192.168.1.1:9090/hello-uni-web:latest
         
        

测试构建

  1. 编写Dockerfile然后推送至GiteeDockerfile内容:
     FROM httpd:2.4
     COPY dist/build/h5 /usr/local/apache2/htdocs/
     EXPOSE 80
     
    
  2. 等待构建
  3. 查看构建日志,并访问部署地址。

参考

  1. Docker+Jenkins持续集成环境(1)使用Docker搭建Jenkins+Docker持续集成环境
  2. Gitee Jenkins Plugin
  3. Docker打开TCP管理端口

前言

在家想改个Bug,然后公司外网没有部署服务器,仅有一个内网的服务器,程序需要连上内网的服务器进行联调。再多次尝试下有了此文。

准备工作

  1. 将公司的电脑开机(PS:走的时候没关)
  2. 公司的电脑上安装TeamView软件
  3. 家里的电脑安装TeamView软件

Start

  1. 登录自己的TeamView账户
  2. 打开远程电脑的授权轻松访问(仅公司端)
  3. 安装VPN驱动(两端电脑均需要)
  4. 再远程计算机配置端口转发(为了尽可能的简单方便,我找了一个别人写的小工具),工具下载后使用右键以管理员身份运行,下面是程序打开的样子。
  5. 点击标签卡映射列表,删除已存在的所有条目。
  6. 配置原Socket,填写TeamView给我们的ip地址(如:7.200.200.2)加上你想定义的端口(任意),欲映射Socket列表填写想要转发给局域网的机器的请求地址,如:我司局域网内部署端口为8080,则填写192.168.200.140:8080。(其他服务也按此方法配置,配置后点击保存,然后重新打开软件)
  7. 此时本地计算机可以访问远程局域网内的服务。

此时本地计算机已经可以访问远程计算机局域网内的服务了。但是无法将连接分享到手机上(本地局域网内的其他设备无法访问远程计算机局域网的服务资源),此时再本地计算机安装Wifi共享大师,必须是这个,虽然广告多到炸(删除程序目录下面的一个子程序可以使定时弹出的广告去除)。然后就可以愉快的调试了。PS:修改项目代码里的服务器地址为TeamView给出的服务器地址,好像是7.几开头的那个。

注意点

必须关闭系统防火墙

附件下载

TeamView 端口转发工具

End

9月21日更新 通过上面的Http_redirect无法向远程局域网中的Git服务器推送代码,故更新端口映射软件为PortTunnel,下载地址:立即下载(PS:部分杀软报毒,我也不知道为什么,反正就是能用有效)

Key: rtl8821CU,COMFAST CF-WU910A,Linux Ubuntu18.04安装报错,如下:

71031_COEX20170310-1212/include/osdep_service_linux.h:295:8: error: ‘_timer {aka struct timer_list}’ has no member named ‘data’
  ptimer->data = (unsigned long)cntx;
        ^~
/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/include/osdep_service_linux.h:296:2: error: implicit declaration of function ‘init_timer’; did you mean ‘_init_timer’? [-Werror=implicit-function-declaration]
  init_timer(ptimer);
  ^~~~~~~~~~
  _init_timer
In file included from /home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/include/drv_types.h:32:0,
                 from /home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/core/rtw_cmd.c:22:
/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/include/osdep_service.h: In function ‘thread_enter’:
/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/include/osdep_service.h:363:2: error: implicit declaration of function ‘allow_signal’; did you mean ‘do_signal’? [-Werror=implicit-function-declaration]
  allow_signal(SIGTERM);
  ^~~~~~~~~~~~
  do_signal
/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/include/osdep_service.h: In function ‘flush_signals_thread’:
/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/include/osdep_service.h:385:6: error: implicit declaration of function ‘signal_pending’; did you mean ‘timer_pending’? [-Werror=implicit-function-declaration]
  if (signal_pending(current))
      ^~~~~~~~~~~~~~
      timer_pending
/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/include/osdep_service.h:386:3: error: implicit declaration of function ‘flush_signals’; did you mean ‘do_signal’? [-Werror=implicit-function-declaration]
   flush_signals(current);
   ^~~~~~~~~~~~~
   do_signal
cc1: some warnings being treated as errors
scripts/Makefile.build:323: recipe for target '/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/core/rtw_cmd.o' failed
make[2]: *** [/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/core/rtw_cmd.o] Error 1
Makefile:1534: recipe for target '_module_/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212' failed
make[1]: *** [_module_/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212] Error 2
make[1]: 离开目录“/usr/src/linux-headers-4.18.0-21-generic”
Makefile:1893: recipe for target 'modules' failed
make: *** [modules] Error 2
##################################################
Compile make driver error: 2
Please check error Mesg
##################################################

安装教程

参考Github:https://github.com/whitebatman2/rtl8821CU

git clone https://github.com/whitebatman2/rtl8821CU
cd rtl8821CU
sudo apt-get install dkms
DRV_NAME=rtl8821CU
DRV_VERSION=5.2.5.3
sudo mkdir /usr/src/${DRV_NAME}-${DRV_VERSION}
git archive master | sudo tar -x -C /usr/src/${DRV_NAME}-${DRV_VERSION}
sudo dkms add -m ${DRV_NAME} -v ${DRV_VERSION}
sudo dkms build -m ${DRV_NAME} -v ${DRV_VERSION}
sudo dkms install -m ${DRV_NAME} -v ${DRV_VERSION}


#下面切换USB模式
lsusb
#这个后面的ID是你看到的那个
sudo usb_modeswitch -KW -v 0bda -p 1a2b

我的是这样的:

root@harry-O-E-M:~/wifigit/rtl8821CU# lsusb
Bus 002 Device 002: ID 0bda:1a2b Realtek Semiconductor Corp.   #这个
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

我们使用nmcli dev查看已启用的网卡:

root@harry-O-E-M:~/wifigit/rtl8821CU# nmcli dev
DEVICE           TYPE      STATE   CONNECTION
wlp5s0           wifi      已连接  1003N
wlx40a5eff71b6d  wifi      已断开  --
enp4s0           ethernet  不可用  --
lo               loopback  未托管  --

下一步连接WIFI

nmtui  #会出现一个图形化界面就可以愉快的连上wifi了!

对象存储比较

排名不分先后

No.1 阿里云

存储:0.12元/GB/月 入流量:免费,内网免费 出流量:00:00-08:00(闲时):0.25元/GB,8:00-24:00(忙时):0.50元/GB 请求:0.01元/万次

No.2 移动云

存储:0.006*30=0.18元/GB/月(0.006元/GB/天) 入流量:免费 出流量:0.4元/GB 请求:0.01元/万次(GET/HEAD),其他请求,0.01元/千次

No.3 七牛云

存储:0.148 元/GB/月(第 10 GB 至 1 TB) 入流量:免费 出流量:0.29 元/GB 请求: ​ GET 请求:第 0 次至 100 万次 免费,第 100 万次以上 0.01 元/万次 ​ PUT / DELETE 请求:第 10 万次以上 0.01 元/万次

No.4 腾讯云

存储:0.099元/GB/月(重庆,成都) 入流量:免费 出流量:0.5元/GB 请求:0.01元/万次

No.5 京东云

存储:0.128元/GB/月 入流量:免费 出流量:0.50元/GB 请求:暂时免费

No.6 UCloud

存储:0-20GB免费,0.0052元/GB/天*30=0.156元/GB/月 入流量:免费 出流量:0-20GB免费,0-1TB:0.45/GB,1TB-10TB:0.40/GB

No.7 滴滴云

存储:0.125元/GB/月 入流量:免费 出流量:0.5元/GB 请求: ​ 读请求:0.01元/万次 ​ 写请求:0.01元/万次

No.8 美团云

存储:0TB-500TB:0.14元/GB/月 入流量:免费 出流量:0TB-50TB:0.29元/GB 请求:暂时免费

No.9 华为云

存储:0.120元/GB/月 入流量:免费 出流量:00:00-08:00(闲时):0.25元/GB,08:00-24:00(忙时):0.5元/GB 请求:0.01元/万次

No.10 景安云

存储:0.15元/GB/月 入流量:免费 出流量:500GB以下:0.29/GB 请求:暂无 带宽:60.0元/M/月

No.11 百度云

存储:0.119元/GB/月 入流量:免费 出流量:0.49元/GB 请求:0.01元/万次

粗略比较

我们粗略的计算1TB数据存储费用与流量费用如下表所示:

服务商

存储(元/GB/月)

出流量(元/GB)

数据量1TB (GB)

价格(元)

备注

美团云

0.14

0.29

1024

440.32

七牛云

0.148

0.29

1024

448.512

景安云

0.15

0.29

1024

450.56

带宽:60.0元/M/月(未计算在内)

移动云

0.18

0.4

1024

593.92

腾讯云

0.099

0.5

1024

613.376

Ucloud

0.156

0.45

1024

620.544

百度云

0.119

0.49

1024

623.616

阿里云

0.12

0.5

1024

634.88

按忙时计算

华为云

0.12

0.5

1024

634.88

按忙时计算

滴滴云

0.125

0.5

1024

640

京东云

0.128

0.5

1024

643.072

对于存文件不是很多的可以考虑Ucloud七牛云,均有免费空间与免费流量。详情询官网。

本次只是粗略比较了对象存储的价格,不做推荐。 更新时间为:2018-10-27 23:35:42 价格请以官网为准。

前言:

今天凌晨,在浏览Github的时候发现了这个nativescript-vue,发现他可以用Vue的语法,来开发Android应用程序以及iOS应用程序。很是激动,于是有了这篇文章。

准备工作(windows)

注意:中间如果提示xxx不存在等信息,应该是环境变量还没有生效,请打开新的cmd窗口(管理员身份)

1.安装Chocolatey以简化要求的安装和配置。(下面的程序通过Chocolatey命令行的方式安装)需要以管理员身份在命令提示符下输入(那个黑框程序cmd.exe)

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

2.安装Google Chrome(调试NativeScript应用程序所需)

choco install googlechrome -y

3.安装nodejs

choco install nodejs-lts -y

4.安装jdk8

choco install jdk8 -y

5.安装Android SDK

choco install android-sdk -y

6.安装Android SDK Platform 25,Android SDK Build-Tools 27.0.3或更高版本,Android支持存储库,Google Repository以及您可能需要的任何其他SDK的所有软件包。

"%ANDROID_HOME%\tools\bin\sdkmanager" "platform-tools" "platforms;android-25" "build-tools;27.0.3" "extras;android;m2repository" "extras;google;m2repository"

7.安装Android虚拟设备(AVD)

@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://nativescript.org/setup/win-avd'))"

8.安装NativeScript CLI

npm i -g nativescript

9.检查配置是否正确

tns doctor

已上内容参考https://docs.nativescript.org/start/ns-setup-win

快速开始

npm install -g @vue/cli @vue/cli-init    //在系统上安装Vue CLI及其init加载项。
vue init nativescript-vue/vue-cli-template <project-name>   
cd <project-name>
npm install

//开始运行
npm run watch:android  
//or
npm run watch:ios   //仅可在macos上

然后就是等待,会安装一些东西,我自己在尝试运行的时候在Android emulator卡住了,然后报错。 我直接用手头现有的xiao mi 5sAndroid手机,在开启了调试模式后,连接电脑,重新执行

npm run watch:android 

然后手机上授权安装一个app,之后程序运行的结果会在手机上显示出来。 第一个界面如上图所示。