Mac 读写 NTFS 硬盘

Mac 打开 NTFS 格式硬盘读写功能:

  1. diskutil list 找到磁盘名称,例如 Seagate

  2. sudo vi /etc/fstab,输入 LABEL=Seagate none ntfs rw,auto,nobrowse

  3. ln -s /Volumes/Seagate ~/Desktop/Seagate 创建快捷方式

React Native 上传图片

写一个通用的上传函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
async upload(url, data) {
let options = {
headers: {
'Content-Type': 'multipart/form-data'
},
method: 'POST'
}

options.body = new FormData();
for (let key in data) {
options.body.append(key, data[key]);
}

return fetch(requestUrl, options)
.then(response => {
return response.json()
.then(responseJson => {
//You put some checks here
return responseJson;
})
})
}

然后调用:

1
2
3
4
5
6
7
8
9
this.upload('http://xxx.com/api', {
file: {
uri: image.path,
type: image.mime,
name: image.name,
}
}).then(res => {

})

Portainer 管理容器

如果想管理 docker 容器,portainer 是非常好的管理工具:

1
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

指定网络:

1
2
3
4
5
6
7
8
docker run -d \
-p 9000:9000 \
--network=myportainers \
--restart=always \
--name my-portainer \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer

Read More

React-Native 安卓调试

使用真机调试:

1
2
3
4
5
system_profiler SPUSBDataType # 找到Vendor ID
vim ~/.android/adb_usb.ini # 将上述ID复制进去
# 打开手机的调试模式
adb kill-server
adb devices

重启 adb 方式:

1
2
adb kill-server
adb start-server

使用 GenyMotion 虚拟机

  1. 进入 GenyMotion 官网,并下载 GenyMotion 虚拟机
  2. 申请个人免费使用版
  3. 下载 VirtualBox 虚拟机

在命令行启动虚拟设备:

1
emulator -avd avd_name [ {-option [value]} … ]

Read More

React-Native安卓开发笔记

如何打开 android 模拟器中的 menu 键

  • windows: ctrl + M
  • macOS: command + M

如何进行 android 真机调试

先找到找到 vendor id ,例如: 0x12d1,再修改 ~/.android/adb_usb.ini 文件

1
2
3
4
5
system_profiler SPUSBDataType # 找到 vendor id
vim ~/.android/adb_usb.ini # 将上述 id 复制进去
# 打开手机的调试模式
adb kill-server
adb devices

修改 docker 默认存储位置

docker 默认的存储位置是 /var/lib/docker,有三种方式可以实现修改 docker 默认存储位置的目的:

  1. 指定启动参数

    可以通过指定 docker 的启动参数 data-root 来设置 docker 的存储目录,这个文件一般位于 /lib/systemd/system/docker.service

    1
    2
    3
    4
    # 旧的写法
    ExecStart=/usr/bin/dockerd
    # 新的写法
    ExecStart=/usr/bin/dockerd --data-root /new_location/
那么当再使用 `docker volume create xxx` 创建新的数据卷时,存储的目录就变成了:`/new_location/volumes/{volume_name}/_data`

Read More

js锁定对象

在 js 当中,有时候需要锁定一个对象,有三个方法可供选择:

  1. Object.freeze

    • 不能新增属性
    • 不能修改属性
    • 不能修改已有属性的可枚举性、可配置性、可写性
    • 不能删除属性
  2. Object.seal

    • 不能新增属性
    • 不能修改已有属性的可枚举性、可配置性、可写性
    • 可以修改属性
    • 不能删除属性
  3. Object.preventExtensions

    • 不能新增属性

Read More

docker容器加入多个网络

docker 容器默认情况下会加入一个网络,可以在 docker run 命令中指定这个网络:

1
docker run -itd --net bluenet --name c1 busybox sh

如果未指定,那就是 docker0 网络,但实际上容器可以加入多个网络的,需要使用 docker network connect 命令,例如现在创建两个网络:

1
2
$ docker network create bluenet
$ docker network create rednet

先用其中一个网络创建容器,但是别去运行它:

1
docker create -it --net bluenet --name c1 busybox sh

这个时候,容器的状态是 Created,表示已创建但尚未运行。

1
2
3
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
25b52f0a988a busybox "sh" 16 seconds ago Created c1

Read More

es-head 安装

用 docker 启动 es-head 服务:

1
2
docker run -d -p 9100:9100 --name es-head mobz/elasticsearch-head:5-alpine
docker run -d -p 9100:9100 --net elk --add-host es_host:$ES_HOST --name es-head mobz/elasticsearch-head:5-alpine

记得在 elasticsearch.yml 里面配置开启跨域支持:

1
2
3
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"