yányào.com

Recent posts

Jul 2, 2020
Zotero as personal knowledge managementZotero 常用于科研的文献管理,由 firefox 浏览器插件发展到现在有了独立的桌面和移动客户端。 本身具备简易的 rss 订阅功能可以用来追踪论文的更新 注册在线账户后支持导出资料库给其他同学订阅 浏览器插件 zotero connectors 则类似各类笔记应用的 web clipper,方便导入各种资料。注意科学上网加载完整页面后再进行保存 通过插件可以扩展出许多其他功能,比如文件同步、高级档案管理 quickstart brew cask install zotero 这里简单用 caddy2 搭建 webdav 来同步附件,就没用高级的 zotfile 至于自带的笔记功能怎么说呢~ 已经适应不能这种风格了 add-ons link quicklook https://github.com/mronkko/ZoteroQuickLook/releases markdown https://addons.thunderbird.net/zh-cn/thunderbird/addon/markdown-here-xul/ subscription https://arxiv.org/list/cs/recent 康奈尔大学提供的免费论文预览平台,主要订阅 cs.SD 音频相关更新 https://scholar.google.com/ https://academic.microsoft.com/ 谷歌学术、微软学术也可以用来搜索一些关键词并订阅推送 https://www.storkapp.me/ 提供关键词订阅推送到邮箱 https://sci-hub.tw/ 实在找不到的下载就靠毛子的共享服务…
Jun 23, 2020
Rss2email距离上次从 https://blogtrottr.com 迁移 rss 订阅到 feedly 差不多五六年了, 这会网络不可用的状况又变得严重些,干脆还是用自建服务来接收感兴趣的内容, 当然备选方案也不少: https://github.com/miniflux/miniflux https://github.com/SSilence/selfoss https://github.com/FreshRSS/FreshRSS https://git.tt-rss.org/fox/tt-rss 出于复古心理顺便减少对应的 app 安装选择问题,又选择了回归 email 方式订阅更新 安装配置 rss2email 的安装到简单,参考 官方文档 直接 apt install rss2email,默认配置会发送文本邮件,修改 html-mail=True, 在我的环境里 smtp over sendgrid 很容易超配额,sendmail 基本发送不出去, 就配上 imap.google 账户自己发给自己啦~ 从 feedly 导出 opml 文件然后 r2e opmlimport 完事大吉 需要注意的是,在 r2e run 的执行过程中对配置文件进行修改非常容易被覆盖 1,不要同时搞太多操作就好, 定时任务 现代 linux 发行版本(比如这里用的 ubuntu 20.04),默认不带 cronjob 服务,改为 systemd 来管理各种服务,定时任务的写法稍微麻烦了些,先用当前 user 权限来 $HOME/.config/systemd/user 写入定时任务配置 定时器 rss2email.timer [Unit] Description=rss2email [Service] Type=oneshot ExecStart=/usr/bin/r2e run 执行文件 rss2email.…
Jun 4, 2020
Deploy bitwarden_rs with podmanbitwarden_rs1 是个用 rust/rocket 编写的非官方 api 实现, dotnet 版本有点儿不太适合手头的部署环境 这里用比较现代的 podman2 来运行 docker 服务 podman run -d --name bitwarden -v /bw-data/:/data/:Z -e ROCKET_PORT=8080 -p 8080:8080 bitwardenrs/server:latest podman generate systemd --name bitwarden --files mv container-bitwarden.service /etc/systemd/system/ systemctl --user enable /etc/systemd/system/container-bitwarden.service systemctl --user start container-bitwarden.service 然后用 nginx 或者 caddy 代理一下 8080 端口即可连接客户端 brew install bitwarden-cli # npm install -g @bitwarden/cli bw config server https://bw.myserver.com https://github.com/dani-garcia/bitwarden_rs/wiki/Using-Podman ↩︎ https://podman.io/getting-started/installation.html ↩︎ …
Jun 2, 2020
Minio Storage Servicemin.io 来自前 glusterFS 团队的分布式存储项目, 兼容 aws s3 / google cloud storage 接口,支持多磁盘、多节点,伸缩扩容方便, golang 编写+单执行文件部署,非常适合用 k8s 编排复制来搭建私有对象存储服务 没有生产环境的使用经验,以下仅用于业余尝鲜 六一节礼物 GNU/Linux 下载安装 wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio chmod +x /user/local/bin/minio 添加用户、组和配置文件 groupadd --system minio useradd --system --gid minio --shell /usr/sbin/nologin --comment "Minio file server" minio mkdir -p /data/minio chown -R minio:minio /data/minio # replace minio.service with your own config, eg. User,Group wget https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service -O /etc/systemd/system/minio.service 配置端口和密钥 # optional. run `uuidgen` to creates AK/SK cat <<EOF >> /tmp/minio MINIO_VOLUMES="/data/minio/" MINIO_OPTS="--address :9199" MINIO_ACCESS_KEY=`uuidgen` MINIO_SECRET_KEY=`uuidgen` EOF 启动服务 systemctl enable minio.…
May 15, 2020
Pour Over Coffee Makers办公室日常用品 hario v60 2人份玻璃滤杯 1 hario v60 600ml 云朵分享壶 2 comandante c40 手摇磨豆机 3 kalita 700ml 细嘴壶 4 rivers seek 随手杯 5 2020-0615 新购入 Mr.clever 聪明杯 6 2020-0622 新购入 hario drip kettle air 7, 用了两次手感偏轻水流控制得不稳 T_T 每天一早 中午 到公司开始烧水,然后吭呲吭呲摇 40g 豆子兑 600ml 左右的水 手法就比较随意了,主要参考下面两个视频,出品大概率我自己都还挺喜欢的 按比例加注水量翻倍 “4:6 method” by Tetsu Kasuya 8 “The Ultimate V60 Technique” by James Hoffmann 家庭版 baratza encore 电动磨豆器 9 kinto OCT 2人份陶瓷滤杯 10 ikea vardagen 500ml 玻璃量杯 11 muji 万古烧马克杯 12 2020-0615 新购入 hario filter-in 冷萃瓶 13 刚开始的时候装备上交了不少学费,比如:电动砍豆机、廉价手磨、aeropress, 虽然不能一概而论,实际上很大程度还是遵循一分钱一分货的原则,性能越好则价格呈指数上涨 条件允许的话尽量选择好一点的设备,毕竟也是天天要用的家伙事…
May 15, 2020
MastodonMastodon 长毛象1 – 基于 rubyonrails/reactjs/nodejs 开发的分布式 & 去中心化 twiter clone。利用空闲时间在 aws lightsail 上开了个实例把服务跑了起来 一开始走了些弯路,因为选机房和省钱的缘故,重建了若干次操作系统,最后的选择是 tokyo+cloudflare,没错我又套了 cdn,实在是海外线路到北京联通不稳定 安装步骤没有使用 docker 而是参考文档从源码安装2,原因和解决方案如下: 机器用 $3.5/mo 512mem 最便宜的那档消费降级(512M 内存重启会拉垮弱鸡,服务已迁移到 oraclecloud),出于 net/io 性能考虑就不使 docker 啦 内存问题,RAILS_ENV=production bundle exec rake mastodon:setup 这一步骤执行到 rails assets:precompile, 不管是在 docker 里跑还是直接运行都会报 swap 分区不足,找到两个方案来解决: # create swapfile <https://linuxize.com/post/create-a-linux-swap-file/> $ sudo fallocate -l 2G /swapfile $ sudo chmod 600 /swapfile $ sudo mkswap /swapfile $ sudo swapon /swapfile # verify active $ sudo swapon --show # optional: low value is better for production $ sudo sysctl vm.…
May 9, 2020
Gitlab Repogitlab 里面已经有十来个 group,几百个 project,虽然不一定会每个项目都参与, 但是为了快速同步代码,又捡起了 android 开发常用的 repo 命令来管理多项目代码。 这里使用了 gitlab graphql 接口来遍历项目生成分组的 manifest 文件 #!/usr/bin/env python import argparse import json import os import urllib2 GITLAB_HOST = "gitlab.mydomain.com" GITLAB_SSH_URL = "ssh://git@" + GITLAB_HOST GITLAB_GRAPHQL_URL = "https://" + GITLAB_HOST + "/api/graphql" GITLAB_TOKEN = "" GITLAB_GROUP = [""] BLACK_LIST = ("",) # 以上配置修改为自己的设定 template = """<?xml version="1.0" encoding="UTF-8"?> <!-- autogen by gen.py, do not edit this file --> <manifest> <remote name="origin" fetch="{ssh_url}" /> <default revision="master" remote="origin" sync-c="true" sync-j="4" /> {content} </manifest>""" def write_file(content, filename="default.…
May 7, 2020
Dash Replacement with tmux通过 tmux 快捷集成替换 dash.app 查询开发文档 $ brew install dasht $ dasht-docsets | tr 'A-Z' 'a-z' go javascript python_3 rust tornado # tmux.conf quick start bind -n S-up command-prompt -p 'docset:' "splitw -h -fb -l 80 dasht '%%'" …
May 7, 2020
Cloudflare Gost从清明节开始,稳定运行好几年的 ss 服务器终于阵亡了,所有端口全挂。一直蹭公司的 vpn 查资料也挺到了五一,实在拖延够够的就再另外开了一台机器中转过去迁移数据,不过嘛年纪大了又开始犯懒,企图拯救获得资格认证的机器,通过一番网上冲浪学习到了目前(实测可用)能满足我需求的方案。简单来说就是:cloudflare[后文简称为 cf] + websockets over gost,实际的客户端通过 cdn 代理再接入服务 有几个需要注意的地方: gost 启动时绑定的 localhost 不直接对外访问,走了 caddy 的转发,而这一步和 cf 的 ssl 证书配置会造成不停的重定向跳转,需要将 cf 加密模式配置为 flexible 然后修改 caddy 的域名配置为 http://domain.com https://domain.com { … } 阻止 cf 和 caddy 之间的 http -> https gost 服务端监听 ws 协议,本地的 gost 客户端转发 wss 协议连接 cf_domain:443 需要鉴权的方案使用 socks5+wss://username:password@domain:port android 客户端的设置,因为使用了 ws 协议,所以需要将域名写入到插件的配置里,直接用域名变量无法解析 具体配置参考官方文档,一切浪费的时间都是源于没认真仔细看文档…
Jan 13, 2017
webpack resolve local module最近的项目刚开始,设计的目录层级有点深 经常会在好几层本地路径之间互相引用 import Image from '../../../../components/image' 这层层叠叠的路径写起来实在丑陋 不由得想起 Python 从项目根目录引用模块 然后研究了一下 Node.js 里的几种简易实现 干脆利落的软连接: ln -s node_modules src 修改环境变量: NODE_PATH=. node app 从本地目录安装: // package.json // 需要运行 npm install { "name": "baz", "dependencies": { "foo": "file: ./src", } } 另外还有些修改 global,或者引入其他 require 实现的方法就不再一一列出了 最终选择的是修改 webpack 配置 // webpack.config.js resolve: { modulesDirectories: [__dirname, 'node_modules'], } https://gist.github.com/branneman/8048520 http://stackoverflow.com/questions/10860244/how-to-make-the-require-in-node-js-to-be-always-relative-to-the-root-folder-of-t/41078266#41078266 https://webpack.github.io/docs/configuration.html#resolve-modulesdirectories…