homebrew mac 安装
最近由于老的homebrew网站被墙,安装的话需要重新指定到国内的清华镜像来进行安装。
注意在安装脚本之后最好更新一下操作系统,然后再在AppStore下载一个XCode。这样方便管理很多第三方插件。
下载安装脚本
https://raw.githubusercontent.com/Homebrew/install/master/install.sh
可以翻墙然后下载安装脚本install.sh
下载完之后可以将脚本中的
BREW_REPO修改为当前我们的镜像位置
BREW_REPO="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"
修改完成之后在运行 sh install.sh
安装即可
Ubuntu 18 解决out of memory 问题
报错信息:
程序报错:
#程序报错
MemoryError: Unable to allocate 22.4 GiB for an array with shape (54773, 54773) and data type float64
#写入系统日志错误
$ egrep -i 'killed process' /var/log/syslog
Feb 29 23:55:12 iZbp1dfqh2kwqx54njldloZ kernel: [276605.773003] Killed process 9136 (python) total-vm:8352516kB, anon-rss:3838288kB, file-rss:4kB, shmem-rss:0kB
出现原因
使用cosine_similarity(count_matrix, count_matrix)
来计算相似性,此时的count_matrix在54773大小,需要组成一个54773 * 54773 * float64大小的向量,需要的内存空间为22.4GB。
但是阿里云购买的服务器只有4v4G,一共的运存只有4G,会造成out of memory溢出。
溢出之后Linux的OOM killer(Out-Of-Memory killer) 会自动的将溢出的进程杀死,所以会直接kill掉该python进行,无法继续执行。
解决步骤1:添加虚拟内存
内存不足的问题,最好的办法是直接升级服务器配置,升为32G的内存的服务器,但是这样所需要的钱还是不少的,特别是按年购买的服务器,没法临时升级。想到最好的方法便是提升虚拟内存,使用硬盘来协助计算。(在需要实时性的环境上还是尽量升级内存)
开始
我这里虚拟了 30G 的容量进行内存扩容(主要是磁盘也不便宜啊),然后 swap 使用的利用率比例为 60,即:当物理内存剩下 60% 时使用 swap 进行交换。
临时配置
临时配置是指重启之后会失效,仅仅只是保持本次开机起作用。
分配文件空间, 建立一个 30G 的 swap 所需的文件空间
dd if=/dev/zero of=/var/blockd.swap bs=1M count=32768
文件 Swap 格式化
mkswap /var/blockd.swap
Swap 激活
swapon /var/blockd.swap
Swap 挂载
打开 /etc/fstab 文件编辑追加以下内容
/var/blockd.swap swap swap default 0 0
修改 Swap 利用率
sysctl vm.swappiness=60
挂载生效
mount -a
永久配置
永久配置是指重启之后依然保持生效。
分配文件空间
建立一个 30G 的 swap 所需的文件空间
dd if=/dev/zero of=/var/blockd.swap bs=1M count=2048
文件 Swap 格式化
mkswap /var/blockd.swap
Swap 设置自激活
由于 /etc/rc.local 文件会优先于 /etc/fstab 执行,所以在文件 /etc/rc.local 里面增加下面一行命令
swapon /var/blockd.swap
Swap 挂载
打开 /etc/fstab 文件编辑追加以下内容
/var/blockd.swap swap swap default 0 0
修改 Swap 利用率
编辑 /etc/sysctl.conf 实现永久生效
vm.swappiness=60
重启生效
更多命令
Swap 查看
swapon -s
Swap 关闭
swapoff /var/blockd.swap
查看 Swap 利用率
cat /proc/sys/vm/swappiness
参数解释
vm.swappiness
这个参数主要用来表示物理内存还剩多大比例才开始使用内存交换,本文中设置的值为 60 即当物理内存还剩 60% 时开始进行内存交换;这里有一篇英文相关解释:https://askubuntu.com/questions/969065/why-is-swap-being-used-when-vm-swappiness-is-0
最后
关于为什么阿里云的 ECS 关闭了 Swap ,网上很多观点均是因为阿里云为了保护磁盘而默认进行了关闭(其实交换空间频繁读写实际就是对硬盘的操作),反正我们实现我们想要的就可以了,至于损耗嘛就是官方需要考虑的问题了;关于性能的话根据阿里云的磁盘读写速度文档表明 高效云盘 能够达到 130m/s 的读写速度,比老式机械 70m/s 高了不少,凑合着用吧,如果不满于高效云盘的可以考虑 SSD 那这样的话价格也会不同,自己做一下价格对比吧!!!
解决步骤二:关闭OOM Killer
由于是OOM killer,所以需要关闭OOM Killer 来保证程序不被杀死
sysctl -w vm.overcommit_memory=2
固定:
修改/etc/sysctl.conf
文件
添加一行
vm.overcommit_memory=2
注意一定要在扩展了虚拟内存之后再添加这个配置,否则的话,服务器会内存溢出周后hang机。
参考文章:
SnippetsLab & github gist & Lepton
gist主要用来管理一些基本的代码片段,比起github上面的项目每次要提交全工程更加轻量和简单。很多时候我们的很多代码片段是可以复用的,这些实际上也跟抽象相关。特别是脚本语言,比如javascript或者python之类,很多时候很少的修改就可以解决其他的问题。
gist的优势
- 每个Gist都是一个Git库,有版本历史,可以被fork或clone
- Gist有两种:公开的和私有的,私有的不会在你的Gist主页显示,也无法用搜索引擎搜索到,但这个链接是人人都能访问的
- Gist可以搜索、下载、嵌入到网页。其中嵌入网页的功能还是不错的
- 有很多时候我们只是想记录代码的一部分,没有必要把一堆的其他代码提交到网上去
- 可以用gist保存一个有历史记录的长期更新的列表清单(知识点、知识迭代等)
- 记录简短的想法或总结:有时候想总结一些技术或经验,或者有一些想法,由于内容比较短,还不足以发表博客,可以先记录下来
使用SnippetsLab来管理Github Gist的好处
- SnippetsLab支持的代码高亮比一般的文本编辑器多很多
- 同步到gist之后,可以保证代码的同步
gist的使用可以参考
Gist使用经验
observablehq
可以用这个应用为gist写独立的网页,方便展示,同时很多javascript代码可以展示最后的结构,前端开发的福音。
如果是纯前端代码,做好之后可以使用这个来发布,不需要在发布一个新的网页了
gist和SnippetsLab相关的一个开源electron软件
我的使用经验
- 使用SnippetsLab来管理代码片段,更专注的代码管理
- 主要用于管理javascript和python的代码片段
- 将经常要更新和使用的list来用snippets来管理,毕竟snippets里面的文件更少,文档模式更方便管理,同时发送到gist会更加方便。
- Lepton是开源的Gist客户端,可以针对需要进行修改相应的代码
windows下C盘空间占满问题
Windows下C盘空间总是莫名其妙的占满,使用资源管理器查看C盘空间又没有很大的文件。删除的时候一般罪魁祸首在一些隐藏文件夹中。win10 会将很多数据文件写到APPData目录下,这里在windows的磁盘统计是看不到的,所以经常会出现C盘剩余空间为0,但是查看C盘文件的时候剩余几十G。当前发现的就是APPData里面的wechat缓存文件占用了40多G,导致C盘莫名其妙的没有空间了。
神奇的隐藏文件夹
有一些工具可以用来分析windows的文件系统空间,下面介绍两款:
TreeSize
Treesize,这个网站国内访问很慢,可能需要翻墙。这是找到的一个最好的文件分析查看工具,可以查看到C盘下的所有文件,分析其占用情况。
当前的问题就是使用Treesize解决的。
spacesniffer
spacesniffer是先发现的一个软件,界面和分析的结果展示的比较好看,但是并没有分析到所有的文件,就好比我说的隐藏文件没有分析出来,导致分析使用和实际使用还是有不少的差距。
后记
Win10 的C盘最好还是有100G以上,不然总会莫名其妙的空间占满。同时尽量少在windows商店里面下载软件,有时候安装的软件自己都不知道在什么地方,而且被各种权限弄得很混乱(虽然可能是为了安全着想)
Copyright © 2020 鄂ICP备16010598号-1