大象笔记

知者行之始,行者知之成

开源项目管理系统 Redmine 搭建

之前用 Trello 及 Tapd 在进行项目管理,可能担心未来的收费问题,或是数据安全性隐患,领导让尝试在公司服务器上搭建一套基于 Ruby RoR 开发的开源项目管理系统 Redmine。 整体上搭建过程还是有点繁琐,加上对 Rails 不熟悉,大概用了半天时间。实际上很多操作是可以自动化的。 服务器环境 CentOS 8.3 官方安装文档 https://www.redmine.org/projects/redmine/wiki/RedmineInstall 版本 Redmine 目前最新版本 5.0.4 (2022-12-01) MySQL 版本 官方推荐 MySQL 5.6 以上版本 ...

阅读全文...

CentOS 8 安装 Ruby 3

查看系统版本 > cat /etc/centos-release CentOS Linux release 8.3.2011 安装 Ruby 我看本机 yum install ruby 默认安装的是 2.5 版本。 但是我想安装 3.0 版本的 ruby。 > dnf module reset ruby -y > yum install @ruby:3.0 > ruby --version ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux] 参考: https://computingforge ...

阅读全文...

systemd timer 与 crontab 的对比

在排查 certbot 不自动更新证书问题时,第一次知道 systemd timer 也能做为系统定时任务的管理工具。但是他与之前熟知的 crontab 有什么区别呢? 列举一下 systemd timer 的优势 支持微妙、毫秒、秒级的定时任务;而 crontab 只能支持到分钟级 上次任务没有执行完时,不会重复执行定时任务;而 crontab 需要手动处理单例问题 支持只执行一次的定时点的计划任务 方便的指定运行用户。 两个配置文件 每一个“.timer”文件必须有一个对应的“.service”文件存在,这样计时器才有意义。默认情况下,如果Timer和Service的文件名(不包含扩展 ...

阅读全文...

systemd timer 未启用,导致 certbot 证书自动续期失败

春节期间收到了公司服务器上一个域名证书快要过期的提示邮件。 今天第一天开工,正好处理一下。 很奇怪,这个服务器上基于 letsencrypt 生成的免费证书,总是不自动续期。 日志地址 ls /var/log/letsencrypt 查看了一下,都是手动操作的日志,没有自动续期产生的日志。说明计划任务没有自动执行? 而我在另一台自动续期执行正常的服务器上看,自动续期是会产生日志的。 所以,问题的根源,还是命令没有定期执行。 手动续期 先手动解决,然后再排查问题 > certbot renew Saving debug log to /var/log/letsencrypt/letsen ...

阅读全文...

新建一个神经网络,方式一,基于 torch.nn.Sequential

构建神经网络的两种方式 PyTorch 有两种构建神经网络的方式: 简单粗暴式:使用 torch.nn.Sequential 类,初始化时,传入一系列操作 (operation) 通用式:定义 torch.nn.Module 的子类 由于涉及的新概念非常多,所以拆分成两个笔记。这里就先了解一下第一种方式。 torch.nn.Sequential https://pytorch.org/docs/stable/generated/torch.nn.Sequential.html CLASS torch.nn.Sequential(*args: Module) CLASS torch.nn.S ...

阅读全文...

神经网络 (neural network) 概念

在 PyTorch 的教程及书籍中,经常会看到神经网络这个词。 英文是:neural network。 neural 是个形容词,神经的,神经系统的。中文发音:呢若 / 牛若。 代码中也常见到 torch.nn # 或者是 from torch import nn nn 即是 neural network 的缩写。 神经网络是由一堆神经元(neuron)组成。神经元以层(layer)的形式组织起来。 神经网络的作用 简单来说,一个神经网络就是一套算法,自动推导出输入数据与其对应的输出数据(结果)之间的关系。 举个例子,假如你有一套数据集,里面记录了历年的高考成绩,所在省份,及填报志愿的学校 ...

阅读全文...

Antd Pro ProTable 表格按指定列排序

例如,Antd Pro 列表中,我想按照创建时间这列正序或倒序重新排列。 字段配置 { title: '创建时间', dataIndex: 'CreatedAt', valueType: 'dateTime', search: false, sorter: true, }, request 请求 export async function getItems( params: { current?: number; pageSize?: number; }, sort: any, options?: { [key: string]: any ...

阅读全文...

《安卓传奇:Android 缔造团队回忆录》

本以为我是天选打工人,不会变🐏,没想到我也没挺过 2022 年。在距离新年还有两天的时候,我也阳了。 请了三天假期,连上元旦三天假,大概率也能痊愈,目前症状也比较轻微。 整理了一下前一段时间看过的不错的一本书,《安卓传奇:Android 缔造团队回忆录》。 九败一胜 之前一直有个错觉,以为 Android 是一蹴而就的,顺利地成为了与 iOS 比肩的手机操作系统。 没想到这个团队的成员在加入 Android 项目之前,都有过类似的操作系统项目的失败经验。 这个世界就是这样:你从失败中学到的东西可能比从成功中学到的东西更多 在开发 Android 之前,我们中的大多数人都经历过多次失败。因 ...

阅读全文...

Golang Gin API 接口限速

需求 在做一个基于图片文字识别的题库管理系统,使用 Golang 调用百度 OCR 文字识别接口, 但是百度 OCR 接口有调用频率限制: 免费版的 QPS 为 2。即每秒最多调用两次 付费版的 QPS 为 10 如果不限速,就会报错: {"error_code":18,"error_msg":"Open api qps request limit reached"} 而前端在上传图片时,是支持多个图片批量上传的,且会有多人同时上传。 那么就需要一个限制接口速度的功能。 备选方案 方案一:通过队列来处理,单个 worker 方 ...

阅读全文...

百度 OCR 文字识别 golang SDK

免费额度 目前使用的是个人认证: 通用文字识别(标准版) 1000次/月赠送 通用文字识别(标准含位置版) 1000次/月赠送 通用文字识别(高精度版)1000次/月赠送 通用文字识别(高精度含位置版)500次/月赠送 注意:需要手动去点击认领免费额度。 QPS 免费版的 QPS 为 2 付费版的 QPS 为 10 Go SDK 文字识别,官方没有提供 Golang 版本的 SDK。 找到一个三方的实现: https://github.com/chenqinghe/baidu-ai-go-sdk/tree/master/example/vision/ocr 但是示例代码有些问题,需要查 ...

阅读全文...

腾讯云服务器硬盘扩容,系统盘

需求 腾讯云服务器的系统盘扩容。 由于是赶上促销活动加注册新账号,享受的 1 折优惠,下单时无法增加系统盘的空间容量。 现在随着业务的上线,开始产生真实数据,担心空间不足,所有想看看有没有不宕机扩容的方案。 现有空间 $ df -h Filesystem Size Used Avail Use% Mounted on udev 7.8G 0 7.8G 0% /dev tmpfs 1.6G 35M 1.6G 3% /run /dev/vda1 50G 10G 38G 22% / tmpfs ...

阅读全文...

小米创业思考

近期读完最好的一本书,雷布斯的《小米创业思考》。虽然很多关于小米产品的桥段为人熟知,但依然有很多打动人心的小故事。我也因此续费了微信读书会员。 一些书摘: 商业的目的 商业的目的是什么,如何让商业实现最大化的现实意义?我的答案是:效率。它能给最多的人带来最大化的美好幸福感。小米自创立至今12年只干了一件事:用互联网的思维和方法,改造传统制造业,实践、丰富“互联网+制造”,推动商业社会的效率革命,以实现最大化的用户利益和社会经济运转效率。 发帖狂人 对这种最基础的社区推广方式,我早有经验,在卓越网的时候,我就认真琢磨过到各种论坛、社区发帖的方法,就是给自己定了一条硬性规定,每天发300个帖 ...

阅读全文...