CentOS7 安装 Octopus 版 CEPH(使用 cephadm)
版本信息
系统信息 [root@cepho ~]# uname -r3.10.0-957.el7.x86_64[root@cepho ~]# cat /etc/system-releaseCentOS Linux release 7.6.1810 (Core)
Python3 版本 [root@cepho ~]# python3 -VPython 3.8.2
生产环境中我们没有必要追求最新,安装 3.6 版本即可。当然如果你追求最新,那么就用最新的也好。
Docker 信息 [root@cepho ~]# docker --versionDocker version 19.03.8, build afacb8b
CEPH 版本ceph --versionceph version 15.1.1 (4536217610b4c55c08a293e67f5ae1f1129190be) octopus (rc)
因为系统安装的是普通版本而不是最小安装,所以 ntp、lvm 管理工具等默认已经安装。
介绍Cephadm 通过 SSH 从管理守护程序连接到主机来部 ...
PyCharm 最新专业版(2020.2.2)激活
说明本记录来源网络,仅用于个人记录,若收到官方律师函后果自负。希望不差钱的同学爱护同行,支持正版,去 官网购买 PyCharm Professional,组织用户可以在 这里 关注优惠政策。
再次更新最新版需要先登录才可以使用,点击该页面 进入试用;
更新
跳转到该开源项目:ide-eval-resetter: Reset your IDE eval information.;
下载插件releases,安装扩展(类似于 Chrome 安装非官方扩展的方法);
点击 Help 或 Get Help -> Reset IDE's Eval 菜单;
重启 IDE;
重新评估,以后每个月重新操作一次。
祝大家早日实现“编辑器自由”!如果不小心错过试用期怎么重置(会强制退出)?
Win+R输入regedit打开注册表;
删除计算机\HKEY_CURRENT_USER\Software\JavaSoft\Prefs下的.idexxx和ide-eval-resetter目录。
以下为个人记录备用,用于迷路之后的操作,普通使用者可以忽略。
关注公众号,发?求助;
收到回 ...
使用 Python 计算你的现金流收益率
师爷:听说你理财了?韭菜:巴菲特水平也就一般吧。师爷:听说你去年理财了?韭菜:我他妈哪年不理财?查理·芒格书写得还行。师爷:听说你理财赚钱了?韭菜:赚了!你不想知道我的年化收益吗?师爷:对啊,多,多少呢?韭菜:一个韭菜,碰上牛市,什么收益都能有!师爷:嘘……你这个不知道天高地厚的赌徒、小韭菜!韭菜:你说什么?师爷:赌徒、韭菜!就是数据不够,要不然我非给你算明白了。韭菜:好啊,来呀,看看你怎么算!你就只剩下一张嘴,写几行烂代码的臭码农!
《让韭菜飞》
概念
函数语法
适用范围
备注
NPV(rate,value1,[value2],…)
适用于定期(例如每月或每年)发生的现金流确定净现值。
每个现金流(指定为value)都发生在一个周期的末尾。 如果第一期开始时有额外的现金流,应添加到 NPV 函数返回的值。
XNPV(rate, values, dates)
适用于以不规则时间间隔发生的现金流确定净现值。
每个现金流(指定为value)在计划的付款日期发生。
IRR(values,[guess])
适用于定期(例如每月或每年)发生的现金流确定内部收益率。
每个现金 ...
使用 Python 递归目录并按照特定规则修改其下文件夹及文件名
风险提示
git 用户执行操作前,请确保你的 git 工作区是 clean 的(所有代码已 push)或者可 revert/reset 的(commited),否则修改导致出现问题本人不负连带责任;
如果是重要文件,普通用户操作前请确保将目录数据备份到安全区域;
更新最近发现微软有一个小工具专门做这件事:👉适用于 Windows 10 的 PowerToys PowerRename 实用工具 | Microsoft Docs,试用了一下还是很香的!如果只是在单个目录做文件重命名这件事,可能这个工具比我做得更好。(bug 更少)😳
缘起在使用 vuepress-theme-vdoing 主题构建自己的个人知识库的时候,有一个需求是需要重命名自己的文档文件名和文档目录。
命名约定
无论是文件还是文件夹,请为其名称添加上正确的正整数序号和.,从00或01开始累计,如01.文件夹、02.文件.md,我们将会按照序号的顺序来决定其在侧边栏当中的顺序。
同一级别目录别内即使只有一个文件或文件夹也要为其加上序号。
文件或文件夹名称中间不能出现多余的点.,如01.我是.名称.md中间 ...
把两个 Git 仓库合并起来
缘起本人主题使用 hexo-theme-butterfly: 🦋 A Hexo Theme: Butterfly ,但是在此基础上又做了一些自定义。用过一段时间之后,作者的源仓库可能更新了很多没有的功能。之前的时候,每次都是手动 compare 并合并的,但是实践了两次之后,发现存在以下问题:
每次升级十分耗时
自己定义的功能在合并时可能丢失或遗漏
鉴于此,本文尝试使用一种较为智能的方式解决以上问题。
TL,DR要想将源仓库(origin repo)合入(dest repo)中,那么可以将(origin repo)伪造成(dest repo)仓库的一个分支,然后合并到(dest repo)仓库中的指定分支(本文为 dev)。
工作流程
本地新建目录butterfly
克隆目标仓库git clone https://github.com/imoyao/hexo-theme-butterfly.git imoyao
克隆源仓库git clone https://github.com/jerryc127/hexo-theme-butterfly.git
将源目录(jerryc)作为 ...
免费个人博客图床解决方案
前言写博客的时候需要引用很多图片,一种常见的方式是在仓库中新建一个目录然后引用。但是这样的话在网页查看时会有点慢。所以本文试图寻求一种直接、有效、方便、免费(尽量或者很实惠)的图床方案。
自建图床这种方案可满足接受备案(实名认证)及付费用户的需求。
又拍云需要域名备案
七牛云
https 图片外链收费
需要域名备案
阿里云 OSS阿里云 OSS 计费由四个部分组成: 存储费用 + 流量费用 + 请求费用 + 数据处理费用
免费图床(不够安全和方便)
sm.msImage Upload - SM.MS - Simple Free Image Hosting
5 MB max per file. 10 files max per request.
聚合图床 - 免费无限图片上传
单图最大 5M,1000 个文件
限制条件见此
路过图床 - 免费图片上传, 专业图片外链, 免费公共图床
全球 CDN 加速, 支持外链, 原图保存, 最大单张支持 10 MB
限制条件服务条款 - 路过图床
搜爱图床
又一个靠爱发电的免费图床
图床测试为了实验上述免费图床的有效性,我分别上传了一 ...
庖丁解牛 | 任务分解,各个击破
步骤
范围确定有所为有所不为,先确定主要矛盾是什么。
目标分解
优先级确定
可执行化任务分解
进入跟踪系统
作用
把大任务分解成小任务,工时估计会更加准确
面对以前没做过的需求,通过任务分解遍历一次,熟悉度提升之后就不会恐慌
反复推演,全盘考虑,避免返工
关注当下,只做有实际意义的事情
如何实践这里给大家推荐一个小技巧,心理学上叫做激励。我们可以把分解完的步骤罗列在自己的笔记本上,然后每完成一个步骤就拿笔在后面打一个勾,这样做能给自己带来一定的成就感和满足感。
相对于小任务来说,大目标规模比较大,非常有必要对其进行分层处理。都要有一个中心思想。这个中心思想下面,可能会有几个主分论点,而每一个主分论点下面可能还会有几个二级主分论点,一直细分到每一个子论点。
我们在分解大目标的时候,就可以借鉴上面这种分层思想去操作。
以个人成长为例,我们的核心目标就是成为一个更好的自己。那么这个核心目标就可以分解成思想(学识更渊博)、经济(财务自由度更高)、健康(身体素质更好)、人际(跟身边人相处得更好)四个主目标。就经济主目标而言,我们又可以分解成开源(提升赚钱能力)和节流(提升理财能力)两 ...
如何将代码打补丁(patch)?
前言在基于开源项目做二次开发的时候,我们可能会在某一个版本号上开始,然后做开发。当开发进行一段时间之后,远程上面的代码可能已经和我们的代码大相径庭了,这个时候想要合并就会变得相对比较困难,所以在此记录一下流程。
工作流查找 patch 开始的 id一般来说,我们二次开发时会先拉取分支作为本地仓库,即第一次 git init 的内容是和开源某一个分支或者 tag 代码完全一致。所以我们需要把 init 之后的第一次代码作为补丁的开始端(该仓库第二次提交),找到该提交的 commi id。
生成 patch 文件git format-patch 703ae2b80580e1xxx3f718d428572b50
应用 patch
一般来说,我们使用git am就可以将补丁应用上去imoyao@DESKTOP-NIQS11K MINGW64 /d/Gerrit/dashboard (master)$ git am ../patches/0029-fix-bug-16115-fix-bug-16117.patchApplying: fix bug 16115:关机之后无法点击开机;fix bu ...
Python 中动态调用函数或类的方法
使用exec()方法
示例代码# module.pyclass A: def foo(self): print('this is foo.') def bar(self): print('this is bar')def baz(): print('baz……')
在 main 中调用:# main.pymodule_name = 'module'exec(' '.join(['import', module_name]))a = module.A()a.foo()a.bar()module.baz()
结果this is foo.this is barbaz……
解释这里请参阅exec() 官方文档,相当于使用exec()执行了一句import module语句,后面的也就不用解释了。
这个函数支持动态执行 Python 代码。object 必须是字符串或者代码对象。如果是字符串,那么该字符串将被解析为一系列 Pyt ...
如何使用 Python 对文件进行原子性(atomic)读写操作?
前言我们知道:Python 中一切类文件操作的最佳实践都是使用with语句。(如果对于这个说法有疑惑,请参考阅读:language features - What is the python “with” statement designed for? - Stack Overflow )在编写仲裁服务时,我们需要将仲裁服务器的信息记录进配置文件referee.conf。同时,不可避免地需要对该文件进行更新。由于系统需要对文件在某个线程中进行读,与此同时另一个线程可能正在对其进行修改。此时,使配置文件操作保持原子性便至关重要。
说明比如我们要将enable由True改为False代表禁用该功能。同时另一个线程读取仲裁服务器的ip以不停探测仲裁服务运行状态。则必须保证文件修改操作具有原子性。即使使用 with 打开,还是会有一个窗口导致文件被打开但是新内容没有被刷写,此时意外掉电或重新进入窗口,则可能会导致:数据修改失效、文件被清空等,即无法避免竞态操作。
解决方案一种可行的方案是让文件真正落盘,然后对文件重命名。参考代码:import osimport tempfileimport ...