几个用户登录验证方案

用户系统,登录验证几乎是每一个 SaaS 系统必备的入口功能,前两天在 Twitter 上看到有人自己设计的用户登录验证系统,因为瞬时使用的人太多,直接把登录入口打挂掉了,所以我就整理一下这篇文章,来看看如何快速的设计并使用用户登录验证系统。

我所了解的几个方案:

  • 使用成熟的 [[BaaS]] (Backend-as-a-Service)方案,比如商业的 [[Firebase]],或者开源的 [[Supabase]],以及我之前介绍并在使用的 [[Appwrite]] 等等
  • [[Clerk]] 最全面的用户管理平台
  • React Next.js 下的方案 [[NextAuth.js]]

BaaS

关于 BaaS 之前在我的笔记中其实也整理过一些,比如 PHP 编写的 Appwrite, Go 语言编写的 PocketBase ,这一些都是可以自行托管,并且完全开源的项目,如果你寻求一些更商业化的项目,也可以考虑 Google 的 [[Firebase]] 或者社区商业化维护的 [[Supabase]]。

并且如果以 BaaS 或者 Firebase alternative 为关键字去搜索,也能找到非常多的实现方案,几乎每个语言都实现了一遍用户登录验证的方案。

Clerk

Clerk 给自己打的广告就是「最全面的用户管理方案」,作为一个创业公司,Clerk 给出的免费额度还是非常充足的。

免费一档的套餐,可以每个月有 10000 个活跃用户,这里的活跃用户指的是登录 24 小时之后再次登录的用户,如果用户没有再访问就不会记录为活跃用户。

2yfDn9jp_v

NextAuth.js

NextAuth.js 是一个专门为 Next.js 而设计开发的用户登录验证系统,提供了前后端的实现,并且可以托管在 Serverless ,后端也可以搭配多个数据库使用,比如 MySQL,PostgreSQL,MSSQL,Mongo 等等,直接利用我之前介绍过的 PlanetScale 也是可以的。

NextAuth 是一套完全开源的解决方案,借助一些 Serverless 的平台和 Cloud Database 也可以做到非常低的成本实现用户登录方案。


2024-02-29 login , auth , user-login , saas , clerk

Docker 安装 PicHome

之前在使用 [[Eagle]] 的时候就想过如果能够一键将本地的素材库分享到网络上就好了,但后面因为 Eagle 使用的频率不是那么高,我自己也在用 Chevereto 所以就搁置了。这两天发现一个 PHP 编写的开源的在线图库 [[PicHome]],看展示界面不错,所以来分享一下。

PicHome 是一款 PHP 编写的,开源的图片展示网站,可以将电脑中的媒体文件展示在网页中。

功能

  • 用来展示本地目录中的图片,但不支持编辑
  • 比如展示通过 [[Eagle]] ,[[Billfish]] 管理的素材库
  • AI 相关的功能
    • AI 修改文件名
    • AI 打标签
    • AI 描述
    • AI 批量标注
    • AI 文件问答

要求

  • PHP > 7.3
  • MySQL
  • 磁盘空间 > 10 GB

Docker 安装

快速尝试

docker run -d -p 80:80 --restart=always oaooa/pichome

使用 Docker compose 启动

git clone https://github.com/zyx0814/Pichome-docker.git
cd ./Pichome-docker/compose/
修改docker-compose.yaml,设置数据库root密码(MYSQL_ROOT_PASSWORD=密码)
docker-compose up -d

2024-02-23 open-source , php

总结一下 Fediverse 下的有趣的平台

联邦宇宙(Fediverse)是一个由一系列自由软件组成的、相互连接的服务器网络,用于社交媒体、博客、文件托管和其他现代网络活动。这个名字是由“联邦”(Federation)和“宇宙”(Universe)两个词组成的谐音。

在联邦宇宙中,每个服务器都是独立运行的,并且可以根据用户的需要进行定制。这与传统的社交媒体平台不同,后者通常由大型公司运营并拥有。

联邦宇宙的主要优势包括:

  • 去中心化:联邦宇宙没有中央认证机构,这意味着更具弹性和抗审查性。
  • 互操作性:联邦宇宙中的不同服务器可以使用开放标准进行通信,这意味着用户可以在不同的平台之间无缝地进行交流。
  • 隐私:联邦宇宙中的用户通常拥有更多对自己数据的控制权,因为他们可以选择将自己的数据存储在他们信任的服务器上。

本博客之前也陆陆续续分享过一些基于 Fediverse 的服务和平台,比如 MastodonFunkwhale 但当时就是以一个单纯的 #self-hosted 服务分享,并没有过多的介绍 Fediverse,所以这里就再总结一下这个联邦宇宙下还有哪一些有趣的服务。

如果有兴趣也欢迎使用我维护的 Mastodon 节点

开放平台

联邦宇宙中的流行平台包括

文字

  • [[Mastodon]] 长毛象,一个类似 Twitter 的微型社交平台
  • [[Misskey]] 一个微博平台,重在定制
  • [[Pleroma]] 资源占用比较低的社交平台
  • [[Firefish]] 从 Misskey fork 而来
  • [[Plume]] 可互动的博客写作平台
  • [[WriteFreely]] 一个使用 Go 语言编写的写作平台
  • [[BookWyrm]] 一个书籍阅读讨论分享平台

图文

  • [[Pixelfed]] 一个图文分享平台

音乐

  • [[Funkwhale]] 一个音乐交流平台

视频

  • [[PeerTube]] 一个视频分享平台

直播

  • [[owncast]] 一个直播平台

社区

  • [[Lemmy]] 一个以链接为中心的社区

2024-02-22 fediverse , rss , mastodon , misskey , funkwhale

我在权益投资市场中犯过的几个错误

一直以来就有一个「话题」萦绕在我的脑海里面,那就是总结回顾一下我过去时间不长的了解,观察,试水权益市场(证券,期权,基金等)的经历以及在这个市场中犯过的几个致命的错误。

我的投资经历时间不是很长,至今可能也只有 5 年多一点,但是这五年里面,经历过疫情间的牛市,也经历过中概股估值逻辑的变化,经历过股价短时间翻倍,也经历过个股跌去 90% 的风险。经常有人说如果要在股市中成长,那么经历过一次牛熊是必需的。

过去的 5 年时间里面我很少去公开场合谈论股票投资,虽然我也单独地开了EV 投资笔记 的博客,但是其实真正去了解一个公司,并下重注的场景并不是很多,我把我自己当作一个初学者,门外汉,毕竟我并不是金融,经济专业出身,大部分的知识也都是我从朋友的聊天,从书里面,从这,从那边,一点点学习的。曾经有一年,我以证券,期权为关键字,几乎看了当时还在的 Kindle 市场里面所有相关的电子书,我花了半年的时间学习期权理论, 之后才真正地去市场上买卖期权,当然那个时间点上还在疫情间,但美股却上涨得异常凶猛,所以也让我曾经一度误以为将期权的知识比较牢靠的掌握了,毕竟最初购买的两笔 Call 就让我翻了 4 倍和 3 倍,并且也让我的证券账户两年的时间从 3000 美元变成了最高 15000 美元,但正向波动率大,反向的波动也大,当美股中的中概股被重新估值,我也见证了我的账户高达 90% 的亏损,虽然中间我有好几次机会可以使用 [[Buy Put]] 来锁定价格下行风险,但是我却做了 [[Sell Covered Call]] 的操作,虽然赚取了一点蝇头小利,但也让正股的亏损不断扩大。所以也正好借此机会来回顾一下我过去犯过的错误,也写一些总结留给我自己做教训。

不要再重仓一两只波动性非常高的股票

无下限的波动,让我注意到了「分散」的重要性,也明白了为什么巴菲特推荐一般人就直接买大盘指数 ETF,把所有的资金只投入一两只波动非常高的股票时,虽然可能会获得「高收益」,但与此同时带来的「高风险」也需要能够承受。中概股在过去 2 年的时间内的跌幅大家也能看到,忽视市场对资产的定价是我犯过的另外一个错误,但如何「估值」「定价」本来也是非常复杂的一个思考路径。但是我想说的是,如果我进行分散投资,比如去购买中概股整体的 ETF,配合 S&P 500(标普 500),QQQ(纳斯达克 100 指数),那么也不可能发生跌幅打到 90% 的情况。更甚至如果搭配一些其他国家的 ETF,比如日经 225 等等,可能收益率会更加好看一些。说到这个地方,我也才意识到,为什么在日本售卖最多的 NISA 产品就是全世界以及 S&P500 等产品,直接购买大盘指数风险以及波动性会被平均很多,当然与此同时也收益率也会被平均。当去购买大盘指数的时候也只有发生系统性的市场奔溃也才会出现 90% 的亏损情况吧,但想要能够超出市场平均水平的收益,那么显然还需要通过一些搭配组合。

价值投资和投机

当我现在来回忆我过去购买个股的经历,就又让我想起了那本著名的 [[随机漫步的傻瓜]],我所有的操作都想是在这个市场中随机漫步,踩中了,有非常好的收益,再走着走着就掉到了坑里面。

那很多人说的价值投资和投机的区别到底在于什么地方,我个人的理解来说,当我没有一个坚定的信念,更随着自己的意识购买的时候就和投机没有什么区别了。而价值投资则是去判断价格与价值的偏离,而对于我来说去判断一个公司的内在价值的时候就又遇到了难题。所以曾经有一段时间我就去看我在使用什么,我周围的朋友在使用什么公司的产品,然后我用最普通的估值手段,就是对比估值,找一家相近的公司,去看他们的市值差别,然后去买那个便宜的公司。虽然我借着这个最简单的模型,让我压中了索尼(SNE),Cloudflare(NET),但也正是因为不太能坚守自己的判断,没有获得那个最大的收益,而早早地就卖掉了。

于是之后我就一再的问自己,如果要去买一家公司,我愿意拿住 10 年不卖吗?前两天在 Twitter 上看到一个日本网友分享自己从十年前自己了解机器学习开始就关注 Nvidia 的股票,并且深刻地认识到了 Nvidia 在 AI 领域的无限潜力,于是从二〇一几年开始就开始买入 Nvidia,直到最近 Nvidia 市值超过 Amazon 的时候,已经拥有了超过 80 倍的收益,150 万日元的收益,变成了 1 亿多资产。可是我问自己,我很早就能看到 Nvidia,但那个时候只是把他作为一个游戏显卡公司(以我的认知),而在 2019 年,2020 年我有多个机会想要了解一下 Nvidia 这家公司,但依然还是没有坚定的信念,于是日子就一天天过去了。

我也时长在和朋友聊天的过程中感慨,错过了 2023 年的日经指数,虽然我已经准备好了证券户口,也入金了,但却没有购买,看着任天堂从 6900 涨到了 8200 JPY,我也错过了 BTC 从 20000 USD 涨到 50000 USD,更甚至错过了很多「机会」,但我也告诫我自己,不去后悔追悔已经发生的事实,赚不到认知之外的钱,这句老话又在我的脑海里响起。

不要听信小道消息

在刚刚进入证券市场的时候,我常常会问金融行业的朋友,最近买些什么,在最初的时候,也常常会跟着别人(这种途径)去跟投,但是时间久了之后,我就发现,虽然朋友会有一些推荐是不错的,比如上面也提到过的 Nvidia,也有在 18,19 年就说过的 BTC,但是也有推荐过腾讯音乐一类跌得非常多的标的。

所以当我意识到我不应该根据别人的选择或者情绪来寻找自己的标的之后,我就再不会再根据他们的建议来买卖,反而是我也会一起讨论,然后从中发现新的机会,当然这都是建立在自己分析,研究之后的。

积累本金

过去 5 年,我可以告诉我自己,如果全亏完了,那也就当是一笔学费了,但是我没有预料到的是这断断的五年间我所经历的,美股疫情间的大牛市,以及之后的百年一遇的连续三次熔断,很多人说只有经历过一轮牛熊之后才能成长,对于我来说可能也是这样的,我认识到我自己的不足,也认识到了波动可能带来的不安。所以当下我能做的就是尽量的累积本金,尽量地通过学习知识来补足自己不明确的地方。和朋友聊天的时候在内心也计算过,如果要达到一个高收益,那么有一个很简单的计算公式,那就是本金乘以波动率。市场和标的选择会影响波动率,但是对结果影响更大的是其实是本金。

有些时候想想还挺「不公平」的,就像德州扑克一样,在场上拥有筹码多的人更有话语权,在证券市场上其实也是一样的,我在操作期权买卖的事后,尤其是在 Sell Covered Call 的时候常常再想,如果我拥有更多的正股,那么其实操作的空间更大。更不用说在虚拟货币的世界里面,可以通过质押,等等方式让钱通过抵押的方式产生钱。而一个巨大的本金本身就是一个能下金蛋的鹅。

成为真正的长期主义

真正的 [[长期主义]] 是到底是什么,就如我的经验,虽然我可以在两年的时间内将每年的年化收益率达到 100%,但是时间拉长,收益率反而是负数的。那么长期主义就是将目光放远,用上面我得出的所有经验,制定长期的投资策略。避免短期的情绪影响;将目光放到 10 年以后;不再频繁交易;选择「好公司」,长期持有。

我自己根据自己的情况做一下记录。国内市场,虽然现在不稳定的因素还挺多,但是还是坚持定投中证红利,以及沪深 300;港股里面还有一些钱,做一些科技股的定投吧;而日经 10 年期的目标就是将 NISA 额度充分利用,每年 120 万日元,买点日经 225,再买点 SP 500;美股则是一个重点关注的目标,虽然现在指数个人感觉也已经很高了,但还是希望能用一些手段进行对冲,做好风险管理。


2024-02-20 证券市场 , 证券 , 股票 , 美股 , 港股 , 日经 , 错误

新加坡盈立证券开户及通过 OCBC 入金

盈立证券是一家持牌的香港互联网券商,为全球投资者提供美股、港股、A 股、美股期权等金融产品交易服务。

盈立证券成立于 2014 年,总部位于香港,在新加坡、美国、台湾等地设有分支机构。公司拥有一支经验丰富的金融科技团队,致力于为投资者提供安全、便捷、智能的投资服务。

优点

安全性上:

  • 交易便捷:支持多种交易方式,包括移动端、PC 端、API 等。
  • 功能强大:提供实时行情、智能条件单、美股碎股交易、美股期权交易等功能。
  • 安全可靠:持有香港证监会认可并授予的 1、4、9 号牌照,严格遵守香港金融法规。

在价格上:

  • 佣金低廉:美股交易佣金低至 0.003 美元一股,港股交易佣金低至 0.024% * 成交金额,美股期权交易佣金低至 0.30 美元每张合约。

在功能上:

  • 提供多种期权交易策略,比如 [[Sell Covered Call]] (备兑期权),垂直差价策略
  • 支持 SPX,VIX 等指数期权交易
  • 0 佣金外汇交易,提供超过 80 种外汇货币对、低至 0.5 点的点差、毫秒级执行速度,只需要 20 USD 就可以进行交易
  • 网格交易
  • 提供今日热点,智能定投,智能下单,精选策略等等信息
  • 闲置资金可以享受高达 4.8% 年化的收益,保本收益
  • 支持全球银行转账,香港 FPS,[[Wise]] 等方式入金
    • 新加坡币,[[eGIRO 入金]],[[PayNow 入金]],[[Fast 入金]],[[Wise]] 入金,[[BigPay]] 入金,银行转账入金
    • 电汇入金(美元和港币),Wise 入金,BigPay 入金,银行账户转账入金

费用

  • 美股期权 0 佣金和平台费

SG vs HK 区别

到应用市场搜索 uSMART 或者 盈立证券会发现在 App Store 中有两个,一个图标中带有 SG,一个图标中带有 HK,这两个应用分别是新加坡盈立和香港盈立。可以根据自己的情况选择开设哪里的账号,如果你有 OCBC 那么可以选择 SG,如果有港卡那么可以选择 HK。

提前准备材料

如果你是新加坡国民,那么直接是新加坡的身份开户即可。

如果是中国大陆的居民,可以直接使用身份证作为验证材料。

  • 身份证(需要拍照)
  • 地址证明(可以是银行对账单,水电单等等)

开户

下载 uSMART 盈立证券 App,输入邀请码 7urg,或者点击链接 开户。

如果选择应用开户,那么在 uSMART SG app 里,选择「开户」,然后在弹出的窗口中选择「开户」,之后按照上面的要求填写自己的资料即可。

FT48dafBfO

OCBC 入金

如果还不知道 OCBC 是什么,可以参考我之前的文章,介绍了 OCBC 华侨银行,以及完全在线开户的流程。如果遇到问题也可以通过页面最后的 Telegram 加入群组一起讨论。

入金的过程比较简单,和大部分的香港证券账户一样,[[香港券商]]有 [[银证转账]], [[FPS 转数快]],[[eDDA 快捷入金]],电汇 等等方式,新加坡有自己独有的 [[eGIRO]] 系统,FAST 支付系统等等。

在详细说明 OCBC 入金之前,先来了解一下新加坡券商的入金方式。

eGIRO

eGIRO 是新加坡本地的电子支付,清算系统,全称是 Electronic GIRO。这里 GIRO,全称是 General Interbank Recurring Order,用来处理定期付款,比如缴费,电话费,停车费等等费用。GIRO 早在 1984 年就出现了,2001 年在新加坡金融管理局(MAS) 的推动下,出现了新加坡的 [[ACH]],叫做 [[eGIRO]],支持通过在线的方式完成。

PayNow

[[PayNow]] 是新加坡的实时支付网络,由新加坡银行协会 (ABS) 管理,新加坡金融管理局 (MAS) 监督。消费者和企业可以使用手机号码、新加坡国民身份证号或外国人身份证号、公司注册号 (UEN) 或虚拟支付地址(VPA 用于 NFI 账户,即电子钱包)来注册服务。然后,用户可以通过 FAST 网络从一个银行/电子钱包账户转账至新加坡的另一个银行/电子钱包账户(仅限新元),FAST 网络是一个受监管的标准支付渠道,能够确保支付提供商顺利互通。

FAST

[[FAST]] 于 2014 年 3 月 17 日推出,是新加坡的电子资金转账服务,让参与银行的客户几乎可以即时将新元资金从一家银行转到另一家新加坡银行。FAST 这种转移是安全的,而且一周 7 天、每天 24 小时都可以使用。用户可以在每笔交易中进行最高 20 万新元的银行间资金转账。

FAST 的优点就是即使到帐,非常类似于香港的 FPS。

Wise

Wise 是一家成立于英国专注于汇款的互联网公司。如果使用 Wise 入金盈立可能需要一定的手续费。

BigPay

BigPay 是马来西亚航空公司 AirAsia 于 2018 年推出的电子钱包,不设任何会员费或帐户维护费,还附带一张免年费的预付卡,只要透过信用卡、银行卡或现金充值后就能使用。因为本人没有该支付,具体的操作步骤可以参考官网。

OCBC 入金

最后总结,OCBC 支持 eGIRO,虽然慢一些,但也能用,如果有 PayNow 或者 FAST 等方式,也可以尝试一下。

如果有人感兴趣也可以留言,我可以介绍一下香港券商,比如老虎证券,富途证券,华泰证券以及 Longbridge [[长桥证券]]的使用。


2024-02-16 usmart , securities , ocbc , broker , futu , tiger

使用 PlanetScale 以及 Docker 搭建网站分析 Umami

Umami 是一个可以自托管的数据统计服务,可以用来代替 [[Google Analytics]]。 “Umami”,源于 “Umai”,在日语里是“美味、鲜味”的意思。

92m2

安装

默认情况下官方推荐的是使用 [[PostgreSQL]] 来作为数据库,可以参照如下的安装。

apt -y update
apt -y install curl git nginx python-certbot-nginx
curl -sSL https://get.docker.com/ | sh
systemctl enable docker nginx
curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

git clone https://github.com/mikecao/umami.git
cd umami/
# edit docker-compose.yml

修改:

version: '3'
services:
  umami:
    image: ghcr.io/mikecao/umami:postgresql-latest
    ports:
      - "127.0.0.1:3000:3000" # 仅监听在本地
    environment:
      DATABASE_URL: postgresql://username:password@db-umami:5432/umami # 配置数据库用户和密码
      DATABASE_TYPE: postgresql
      HASH_SALT: replace-me-with-a-random-string
    depends_on:
      - db-umami
  db-umami:
    image: postgres:12-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: username # 数据库用户
      POSTGRES_PASSWORD: password # 数据库密码
    volumes:
      - ./sql/schema.postgresql.sql:/docker-entrypoint-initdb.d/schema.postgresql.sql:ro
      - umami-db-data:/var/lib/postgresql/data
volumes:
  umami-db-data:

然后执行:

docker-compose up -d

配置 Nginx 反向代理:

server {
    listen 80;
    server_name umami.yourdomain.com; # 换成你的域名
    client_max_body_size 0;

    location / {
        proxy_pass       http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
   }
}

使用 PlanetScale

但是我为了避免再维护一套数据库,所以使用了之前介绍过的云端 MySQL 兼容数据库 PlanetScale

安装过程参考这里

git clone https://github.com/einverne/dockerfile.git
cd umami
cp env .env
# modify .env
docker-compose up -d

然后根据自己的需求,使用 Nginx ,或者直接 [[Nginx Proxy Manager]],配上域名就完成了。

  • [[Plausible Analytics]]

2024-02-15 umami , google-analytics , ga4 , web-analytics , docker , self-hosted , mysql

我购买了一张免月租的英国手机卡 GiffGaff

giffgaff 是一家来自英国的低成本移动运营商,隶属于英国三大运营商之一的 O2 旗下。成立于 2009 年的 giffgaff,以无实体店面、无客服热线、灵活套餐等特色服务,为用户提供高性价比的移动体验。giffgaff 特别适合短期去英国的游客以及英国留学生,giffgaff 也支持全球漫游。

为什么要申请 Giffgaff

  • 免费申请,免邮费,零月租使用,免费接受短信,维护成本比较低
  • 支持全球激活和漫游
  • 180 天消费一次即可一直使用
  • 可以接受境外的短信,可以用来注册账号,也支持境外的银行短信
  • 支持 eSIM 卡

缺点

  • 通话和流量比较贵,通话 1 英镑每分钟,流量 0.2 英镑每兆,短信 0.3 英镑
  • 挂断电话也是需要收费的
  • 每 180 天需要发送一次短信进行保号

申请方式

  • 直接官网申请,日本的地址一周左右收到
  • 其他转运方式

激活

访问 https://giffgaff.com/activate 然后按照上面的提示,输入激活码。然后输入邮箱注册账号,进行到下面一步的时候,选择 Pay as you go。

F9UahHr9m3

激活时需要 Visa 或 Mastercard 来进行最低 10 英镑的充值(约合 90 人民币)。首次充值不支持 PayPal,后续可以使用。

充值成功之后会获得一个随机的号码,是一个 10 位的号码,一般首位为 0 。

英国的国际区号是 +44,所以如果要给此手机号发送短信,需要在前面添加。

如何保持手机号

180 天之内消费一次就可以一直使用该号码,最直接的就是每 180 天给 Google Voice 发送一次短信,价格约为 0.3 英镑,人民币 3 元。

总结

如果觉得 GiffGaff 不错的话,可以点击我的邀请链接 ,使用我的邀请链接首次充值可以多 5 英镑。


2024-02-13 虚拟手机卡 , 手机卡 , 英国手机卡 , giffgaff , phone-number

每天学习一个命令:高级日志查看工具 lnav

The Logfile Navigator 是一个高级的日志查看工具,后面简写为 lnav。

早上在看 [[Logdy]] 的时候(一款可以将终端的输出 (stdout)发送给浏览器 UI 界面,在可视化界面中检索浏览的开源工具),在作者发帖的讨论中,看到有人推荐 lnav 这一款工具,在本地开发的时候,用 lnav 来查看日志。1

在不知道 lnav 之前,我一直都是使用 tail -f, less, zless, more 来查看日志的,但是 less 这一些工具都是不带高亮的,所以每一次都需要通过搜索来找到自己的想要的内容,但看到 lnav 的介绍立即就看到了 lnav 的高亮显示,立马就尝试了一下。

特性

  • 根据日志内容自动高亮 ERROR 等等关键字
  • 自动滚动刷新
  • 根据正则表达式过滤内容,比如查询 IP 地址等等情况
  • 使用 SQL 查询

安装

Ubuntu 下

sudo apt install lnav

使用

完整的命令行参数

❯ lnav -h
usage: lnav [options] [logfile1 logfile2 ...]

A curses-based log file viewer that indexes log messages by type
and time to make it easier to navigate through files quickly.

Key bindings:
  ?     View/leave the online help text.
  q     Quit the program.

Options:
  -h         Print this message, then exit.
  -H         Display the internal help text.
  -I path    An additional configuration directory.
  -H         Display the internal help text.
  -I path    An additional configuration directory.
  -i         Install the given format files and exit.  Pass 'extra'
             to install the default set of third-party formats.
  -u         Update formats installed from git repositories.
  -C         Check configuration and then exit.
  -d file    Write debug messages to the given file.
  -V         Print version information.

  -a         Load all of the most recent log file types.
  -r         Recursively load files from the given directory hierarchies.
  -R         Load older rotated log files as well.
  -t         Prepend timestamps to the lines of data being read in
             on the standard input.
  -w file    Write the contents of the standard input to this file.

  -c cmd     Execute a command after the files have been loaded.
  -f path    Execute the commands in the given file.
  -n         Run without the curses UI. (headless mode)
  -q         Do not print the log messages after executing all
             of the commands or when lnav is reading from stdin.

Optional arguments:
  logfile1          The log files or directories to view.  If a
                    directory is given, all of the files in the
                    directory will be loaded.

Examples:
  To load and follow the syslog file:
    $ lnav

  To load all of the files in /var/log:
    $ lnav /var/log

  To watch the output of make with timestamps prepended:
    $ make 2>&1 | lnav -t

Version: lnav 0.8.5

直接查看日志文件

lnav /path/to/file.log

进入 lnav 之后还有一些快捷键,可以使用 ? 呼出帮助。

和 Linux 下大部分交互的工具一样,lnav 也遵循了一直的交互逻辑

  • g, 到文件第一行
  • G, 到文件最后一行
  • space, 下一页
  • b/bs, 上一页
  • j, 下一行
  • k, 上一行
  • h, 向左移
  • l, 向右移动
  • e/E, 上一个,下一个 error
  • w/W, 上一个,下一个 warning
  • f/F, 下一个,上一个文件
  • /,检索
  • n/N, 上一个下一个检索结果

可以看到上面的这些快捷,基本上和 Vim/less 的一致。

还有一些调整显示的选项

  • i,开启显示日志直方图
  • t,开启或关闭 text file view

检索语句

  • :<command> 执行内部命令,具体的命令可以查看帮助文档,或者阅读 ? 中的文档
    • :goto 2 hour ago
    • :goto 12:00
  • ;<sql>,执行 SQL 检索

2024-02-10 linux , lnav , log , less , zless , logfile

关于 Duolingo 学语言的一点思考

关注我博客的人应该也知道,我最近在学日语, 今天早上打卡 [[Duolingo]] 发现还差一天完整一年,但其实去年因为搬家中途中断了几天,否则应该时间更长。

但其实我很早就使用 Duolingo,先后在上面学习过英语,韩语和日语。所以今天早上就来简单的讲一讲我的体验。

KBsm6uSyRw

一句话总结的话就是,单纯使用 Duolingo 我个人的感觉是没有太大的用处的,最多能够对常用的句式,单词有一个基础的概念。但这并不表示 Duolingo 没有实际用处,相反我认为 Duolingo 可以很好的配合枯燥的语法课,以及可以克服初期学语言没有办法融入那个语言环境的问题。通过 Duolingo 对基础单词句式的反复记忆,让自己能达到对日常所见所听,日常会话能脱口而出的状态,不再需要在脑海里面做语言的转换。

学语言的两大困难

缺乏兴趣

如果对一个语言没有任何兴趣,是很难学进去的,相反如果对一门语言有兴趣,那么其实很快就可以入门,反而是如果要达到流利水平需要花费更多的时间。在我们的日常生活中不乏那种因为追星可以从零将韩语学到母语者水平的人,也不乏那种因为喜欢动漫以及日本文化自学日语到 N1 的人。找到关心的那个点,比如我最早其实就是为了听韩语歌,我就想知道怎么搜索我所听到的那个歌,所以想要去了解韩语的发音,韩语怎么输入。

那么 Duolingo 是怎么解决这个兴趣问题的呢?就是将语言学习的知识变成通关游戏,用户面临的选择只有一个就是去通关,不再会那种想要学习一门语言,困难扑面而来的感觉,没有复杂庞大的语法知识,只有一只可爱的猫头鹰每天督促学习。

无使用场景

语言学习的另外一大问题就是,缺乏使用的场景,如果你身处在一个陌生国度,陌生的语言环境,那种本能的生存问题会逼迫你快速的进入那个语言环境,从我自身的经验而言,从最初来日本一句日语不会,到能够识别一些单词,很多都是在日常生活中积累的,比如我学习「东南西北」四个方向,就是从地铁的站名中学到的,我刚来日本的时候,每天都会经过一个站叫做「北千住」 きたせんじゅ,我就学会了「北」叫做 きた,后来又路过了南千住,就又记住了みなみ,再后来因为住的地方搬到了一个包含了「西」的车站附近,正好对称,西边的叫做 にし,东边的叫做 ひがし。再后来,比如我对数字 7 和 8 总是分不清楚,直到我去了一次体检,我拿到的号正好是 174,なな 的发音就再也忘不掉了。

但说实话,Duolingo 在这一点上,并不能解决「说」的问题,但是能解决「听」的问题,并且是构建了一个语言的场景,从最初的见面打招呼,到去餐厅吃饭,到了解这个语言的文化,到政治等等,在打关卡的过程中,循序渐进式的学习。

当然 Duolingo 只能说是一个语言辅助工具,我下面说一说我的建议。

我的建议

所以综合我的经验来说,我的建议是,如果想学一门语言,首先使用 Duolingo 来先来体验一下这个语言,不需要花费很多的时间,就能够让你对这个语言有一个基础的了解。

然后每天坚持背单词,不需要刷很多,使用间隔空闲的时间记忆一下即可,为的是每一天能够唤醒记忆,将短时记忆变成长时记忆,即使每天只学习 10 个新单词,那么一年也能有 3650 个单词的量,那这已经是 N3 所要掌握的词汇量了。

当然背单词并不一定需要 Duolingo,我在我的笔记 中也曾经推荐过很多词典,比如桌面端的 GoldenDict,比如移动端的欧陆词典,MOJi 辞书等等,关键的是需要看到,查阅,再次看到,再了解,看到,知道。

Duolingo 可以很好的作为一个辅助工具,但和上面所说一样,我个人感觉只用 Duolingo 是不够的,尤其是在系统学习语言语法上来说。

所以我的建议是同时去其他地方补充语法知识,比如从视频教程中,和老师的一对一授课中。可以先将网络上那些已经整理好的知识点,在背诵 Duolingo 的时候,反复的问自己,这里是什么语法,然后我的经验就是,当发现 Duolingo 遇到瓶颈的时候,一般就是那个语法点没有掌握,这个时候赶紧补充点语法知识,如果语法知识超前了,那么我会发现我就能跳级了,在这样一个平衡过程中就能一点点的了解越来越多了。

最后分享一个因为语言发音而导致的搞笑视频


2024-02-10 duolingo , language , language-learning , japanese , japanese-grammar , korean

使用 rclone 批量备份及备份到 Cloudflare R2

今天在了解 [[Hono]] 的时候直接使用了 Cloudflare Worker,然后快速实现了一个上传图片到 R2 的代码,回想之前我一直都是使用 [[Chevereto]] 来管理的我博客的配图,Chevereto 的图片都是存放在新加坡的一台机器上,这台机器虽然在国外访问没啥问题,但是在国内延迟略高,所以一想怎么不直接用 [[Cloudflare R2]] 免费的 10 GB 存储了,我自己用 Chevereto 近五年的数据才用了 700MB+,10 GB 已经完全足够我再用 20 多年了。

所以有了这个想法之后,我又不想让我的博客图片迁移完成之后立即挂掉,那么最好的办法就是保持访问的路径之前是类似 https://HOST/images/2023/09/08/IMAGE.png 这样的访问路径,而幸好 Chevereto 本地保存的路径也是类似的结构,存放在了相似的文件夹结构路径下。

那么我的需求就变得非常简单,直接将本地的文件拷贝到对应的 R2 bucket 中 /images 路径下即可。于是了解了一下,发现官方的 CLI 并不支持直接上传。但是官方提供了一个思路就是利用 rclone 工具。

这个工具我之前也介绍过 ,但是当时那篇文章重点在于使用 rclone 挂载磁盘,但是原理也是一样的,只是在这里我会使用 copy 命令,创建一个 remote (兼容 S3) ,然后将本地的文件夹所有的内容直接拷贝远端。

基础的 rclone 设置过程就不再赘述,直接运行 rclone config 进行初始化,并创建兼容 S3 的 remote,比如这里起个名字叫做 r2。

在交互式命令行中,需要访问密钥,访问 Cloudflare 后台,创建 API Token 1

执行 config 命令之后,会写到本地配置文件中,如果交互式命令行有问题的时候,可以直接修改这个配置,或者自己可以直接编辑此配置来完成初始化。

❯ cat ~/.config/rclone/rclone.conf
[r2]
type = s3
provider = Cloudflare
endpoint = https://3f----------.r2.cloudflarestorage.com
access_key_id = db----------------------------b3
secret_access_key = bf------------------------------------------------------------1a
acl = private

完成配置之后,可以使用 rclone 命令来完成本地和 R2 之间的文件复制。

首先使用 rclone tree r2: 来列出 r2 中的所有内容,来验证配置没有问题。

然后可以指定 bucket 名字 rclone tree r2:bucket_name

然后就是正式开始我的任务,大致看一眼 rclone 的帮助文档,然后执行:

rclone copy -P -v /path/to/image r2:bucket_name/images

执行的过程中会显示当前的进度,然后完成之后,所有的文件都会在 bucket_name 的 images 路径下。

reference


2024-02-09 rclone , cloudflare-r2 , cloudflare , object-storage , linux , cli

电子书

本站提供服务

最近文章

  • Voicenotes 一款 AI 语音笔记应用 前两天偶然间收到一个推送,说有一款 AI 语音的笔记应用叫做 Voicenotes,今天终于有时间试用了一下,我的简单使用体验来说,这是一款通过语音来记录想法,备忘录的工具,它与其他笔记,备忘录的区别就在于 AI 的加持,Voicenotes 只允许通过语音输入,录音会通过识别转录成文字(AI),然后记录的所有内容都可以通过和 AI 提问的方式进行回顾,总结,或者进行 brainstorm。
  • Apple silicon M 系列芯片区别及购买推荐 虽然日常一直在用 MacBook,但是说实话我是没有去了解 M 系列芯片的具体性能的,虽然之前从 Intel 转向 M 系列芯片的时候有看过几个视频,说 M 系列的芯片确实在散热,省电和性能上碾压了 Intel,但是之后也没有继续再关注,直到前段时间在小红书上看到有闲着没事干的人分享了一个图片,图片内容是历年了 Apple 在 WWDC 上说的和前一代相比 CPU 性能又提升了多少,于是他把 M1 芯片作为基数 1 ,然后依次给不同系列的芯片乘以倍数,得出了一个非常有意思的图。
  • Felo 一款实时同声传译应用 很早就在 Twitter 上知道了 Felo 这样一款同声传译的工具,这个工具让我在刚来日本,拨打日语客服的时候起到了非常重要的作用,我用一个手机拨打客服电话,然后用另外一个手机实施翻译客服说的内容,最近也为我解决了乐天银行无法登录的问题。
  • 期权策略:Bull Call Spread Bull Call Spread,可以翻译成牛市看涨价差策略,这是一个期权交易策略。
  • 使用 Quartz 发布 Obsidian 笔记库 自从使用 [[Obsidian]] 以来就一直想要有一个开源版本的 [[Obsidian Publish]] 代替,过去这几年也尝试了不少方案,比如 Jekyll 静态网站生成,比如使用 [[Logseq]] 生成网站, 然后还想过从 Obsidian 同步到 Notion 里面,然后再使用 [[NotionNext]] 来生成网站。