#390 Office 办公软件的历史

2020-04-24

常用功能

  • 文字处理 Word Processing
  • 电子表格 Spreadsheet
  • 演示文稿 Presentation
  • 笔记 Notetaking
  • 流程图 Diagramming
  • 图像处理 Raster Graphics Editor
  • 矢量图处理 Vector Graphics Editor
  • 图片浏览 Image Viewer
  • 公式编辑 Formula Editor
  • 数据库管理 Database Management
  • 项目管理 Project Management
  • 排版 Desktop Publishing
  • Desktop 这个词是指与 TeX 这类传统文本类型排版系统对应的 GUI 排版工具
  • 通信 Communication
  • 日历 Calendaring
  • 文件服务 File Hosting

Microsoft Office 主要组件

  • 文字:Microsoft Word,1981 年开始开发,当时最知名的文字软件是 WordStar 和 WordPerfect。
  • WordPerfect 几近辗转,现在是发展成了 Corel WordPerfect Office。
  • 表格:Microsoft Excel,当时最知名的表格软件是 Lotus 1-2-3。
  • PS:1995 年,Lotus Software 被 IBM 收购,2013 年结束销售。
  • PS:Lotus 1-2-3 计算闰年的方式有问题,会把 1900 年当成闰年,Excel 为了保持兼容,至今仍然包含这个错误。
  • 演示:Microsoft PowerPoint,微软收购自一家硅谷初创企业,据说微软本来是想基于 Word 开发演示功能。
  • 数据库:Microsoft Access

其他关联组件:

  • 流程图:Microsoft Visio,微软 2000 年收购
  • 项目管理:Microsoft Project
  • Microsoft OneNote
  • Microsoft OneDrive
  • Microsoft Outlook
  • Microsoft Teams
  • Microsoft Publisher

Microsoft 365

Microsoft Office 的云上版本,提供了更多功能。

LibreOffice

StarOffice -> OpenOffice -> LibreOffice

  • Writer
  • Calc
  • Impress
  • Draw
  • Math
  • Base:数据库

参考:https://en.wikipedia.org/wiki/Apache_OpenOffice

  • 1985 年,StarOffice 发布
  • 1999 年,Sun 公司 7350 万美元收购 StarOffice
  • 2000 年,Sun 公司开放 StarOffice 源代码,并将项目重命名位 OpenOffice
  • 2009 年,Oracle 收购 Sun 公司
  • 2010 年,LibreOffice 项目与 The Document Foundation 组织诞生,
  • 随后,大多数 Linux 项目都跟进,将自带的办公软件更改位 LibreOffice
  • 2011 年,Oracle 停止了 OpenOffice 开发,将 OpenOffice 捐赠给 Apache 基金会
  • 之后 LibreOffice 一直活跃开发,Apache OpenOffice 越来越沉寂。

WPS Office

  • 文字
  • 表格
  • 演示
  • PDF
  • 设计
  • 流程图
  • 思维导图
  • 表单
  • 在线文档
  • 共享文件夹
  • 模板中心

Apple iWork

  • Pages 文字处理
  • Numbers 电子表格
  • Keynote 演示文稿

OnlyOffice

https://en.wikipedia.org/wiki/OnlyOffice

毛子项目,AGPL 协议开源,原名 TeamLab。在俄罗斯,以 P7-Office 为名。

  • Documents
  • CRM
  • Projects
  • Mail
  • Community
  • Calendar
  • Talk

参考资料与拓展阅读

#389 Urlencode

2020-04-19

URL / URI 的设计中规定允许的字符,如果出现了其他字符就需要转义,这套规则被称之为百分号编码(Percent-encoding)。

WWW 的设计中就使用了这套规则,比如 URL 地址、和表单提交(application/x-www-form-urlencoded)等场景,所以这个编码规则也被称之为 URL 编码(URL encoding)。
编程时,编码解码操作一般就叫 urlencode,urldecode。

编码的方式非常简单,就是把字节用 16 进制的方式表示,然后每个字节前面加一个百分号。

#388 RFC 相关知识

2020-04-17

查看文档(手动替换文档编号):

搜索:

状态

  • Informational
  • Experimental
  • Best Current Practice
  • Standards Track
  • Historic

参考资料与拓展阅读

#387 Ubuntu 快捷键

2020-03-31

全局

Win / Win + S 窗口概览
Win + A 程序搜索,或者 Win 双击
Win + D 显示桌面
Win + L 锁定窗口
Win + V / Win + M 打开日历和事件
Win + 数字 打开左侧菜单上的程序
Win + Left 将窗口移动到左侧
Win + Right 将窗口移动到右侧
Win + Up 最大化
Win + Down 还原
Win + Home 切换到第一个 Workspace
Win + PageUp 切换到上一个 Workspace
Win + PageDown 切换到上一个 Workspace
Alt + F2 运行一个命令
Alt + F4 关闭当前窗口
Alt + F6
Alt + F10 窗口最大化 / 还原
Ctrl + Alt + T 打开终端

Win + Space 切换输入法
Alt + Space 窗口菜单
Win + C 计算器 自定义
Win + F 文件浏览器 自定义

切换

Alt + Tab 切换窗口
Win + Tab 切换程序
Alt + ~ / Win + ~ 同一个程序的不通窗口切换

截图

屏幕截图并保存:PrntScr
Shift 选区截屏,加 Alt 窗口截屏,加 Ctrl 截屏到剪切板

PS:Ubuntu 22.04 之后,截图的逻辑调整了。
交互式截屏:PrntScr
Shift 屏幕截图并保存,同时复制到剪切板
Alt 窗口截屏并保存,同时复制到剪切板
Ctrl 没有任何效果

终端

Ctrl + Shift + N new window
Ctrl + Shift + Q quit window

Ctrl + Shift + T 打开新标签
Ctrl + Shift + W close tab

Ctrl + Shift + PageUp Tab 左移
Ctrl + Shift + PageDown Tab 右移

Ctrl + Shift + C 复制
Ctrl + Shift + V 粘贴

Ctrl + / 清空

其他

F9 打开 CopyQ 自定义

#386 VSCode 快捷键

2020-03-30

窗口

Ctrl + Shift + N 新建窗口

Tab

Ctrl + N 新建标签
Ctrl + W 关闭当前标签
Alt + PageUp, Alt + PageDown 切换 Tab

编辑

Ctrl + Shift + Up/Down 同时编辑多行
Ctrl + Shift + I 格式化代码

Ctrl + P 打开文件
Ctrl + T 工作区相关
Ctrl + , 设置
Ctrl + . 切换Section或文件
Ctrl + / 注释
Ctrl + I 建议
Ctrl + O 打开文件
Ctrl + K, Ctrl + O 打开目录
Ctrl + S 保存

Ctrl + ` 终端
Ctrl + K M 更改语言
Ctrl + K, Ctrl + S 显示键盘快捷方式

F1 OR Ctrl + Shift + P Show Command Palette

Alt + Up, Alt + Down 上下移动行
Alt + Left, Alt + Right 跳到上一处,跳到下一处

搜索和替换

Ctrl + F
Ctrl + H
Ctrl + Shift + F
Ctrl + Shift + H

#385 定位到指定网页位置的方法

2020-03-29

通过标签的 ID

比如 https://ruanyifeng.com/blog/2011/03/url_hash.html 这个页面的源代码中有以下内容:

<h1 id="page-title" class="asset-name entry-title">URL的井号</h1>

我们可以通过 https://ruanyifeng.com/blog/2011/03/url_hash.html#page-title 定位到这个标题元素上。

通过文本

这个方式应该是 Google 今年弄出来的,从 2 月份的 Chrome 80 开始就支持了,名字叫做 Scroll To Text Fragment。

还是拿上面的例子,我们可以不用去看页面源码,直接通过内容 URL的井号 来链接:

https://ruanyifeng.com/blog/2011/03/url_hash.html#:~:text=URL的井号

#:~:text=内容

并且链接中指定的内容会高亮显示出来。

参考资料与拓展阅读

  1. URL的井号
  2. Highlight & Link to Text Fragment on a Webpage
  3. How to Directly Link to Text on a Web Page in Chrome
  4. WICG/scroll-to-text-fragment

#384 研发团队工具清单

2020-03-26

操作系统

  • Ubuntu
  • Windows
  • macOSX

通讯平台

  • 微信,企业微信,钉钉
  • RocketChat
  • https://github.com/teamgram/teamgram-server

设计工具

  • Figma

文档工具

  • Wiki
    • Confluence
    • DokuWiki
    • Wiki.js
    • dynalon/mdwiki
    • Simiki
  • 博客
  • 笔记
  • 问答(可以作为论坛的一部分)

IDE

  • VSCode
  • Jetbrains IDEs
    • IntelliJ IDEA
    • PyCharm
    • Rider
    • WebStorm
    • Goland
  • Eclipse
  • NetBeans

客户端

  • SSH:XShell,Putty
  • HeidiSQL (MySQL 客户端)
  • AnotherRedisDesktop (Redis 客户端)
  • MongoDB Compass

开发

  • 各种镜像
  • 语言环境
    • Java
      • JRE/JDK
      • Tomcat
      • Nexus (Ma)
    • Python
    • PHP
    • NodeJS
  • 版本管理:Gogs / Gitea
  • CodeReview

测试

  • 用例管理
  • BUG 追踪
    • 禅道(ZenTao)开源版:任务,需求,BUG 追踪
    • TAPD
  • Redmine

https://boce.aliyun.com/home
https://boce.aliyun.com/detect/http
https://whois.aliyun.com/
https://mxtoolbox.com/
https://ipinfo.io/
https://www.ipip.net/
https://www.base64decode.org/
https://www.bejson.com/explore/index_new/
https://webhook.site/
https://easydmarc.com/
https://godmarc.com/tool/dmarc-record
https://app.diagrams.net/ (draw.io)
https://onlinenotepad.org/app

发布

  • Jenkins
    行业标杆。
  • Drone CI
    新秀。被 Harness 收购之后,现在改名 Gitness 了,原代码在 drone 分支
  • GoCD
    来自 ThoughtWorks,中文名:思特沃克,IT 外包企业。
  • Woodpecker CI
    由于 Drone CI 的作妖,部分开发者自己维护了一个分支。
  • Zadig
    国产。带附加条款的 Apache 协议,不允许作为商业产品分发,不允许作为 SAAS 产品提供服务。

运维平台

  • 机器管理 netbox

文件服务

文件分享

  • S3:MinIO
  • FTP/FTPS/SFTP:MinIO
  • SMB:Samba
  • Seafile 文件同步服务
  • NextCloud

其他

  • 图床(内部)
  • Web Server
    • 可以通过 开源面板,NginxWebUI 管理
  • v𝟮ray
  • OpenVPN
  • 打印服务器
  • 备份服务器:操作系统备份,重要服务数据定时备份
    • 需要有可以立即使用的恢复手段
  • APITable
  • Webmin
  • PXE Server

办公

  • 导航
  • OA:O2OA / 勾股 OA
  • CRM:SuiteCRM
    • https://github.com/MicroPyramid/Django-CRM
    • https://github.com/krayin/laravel-crm
    • monikahq.com
  • 论坛
    • Flarum (PHP) 非常简洁
    • vanilla/vanilla (PHP)
    • Apache Answer (Go)
    • FlaskBB (Python)
    • NodeBB (Node)
  • OrangeHRM
  • ERPNext (frappe)
  • Frappe HR
  • 协同文档 + 表格 + 演示

基础服务

  • DB
  • MQ
  • Redis
  • Memcached

  • DNS

  • NTP
  • OpenLDAP
  • SSO:Authelia
  • 流程引擎
  • DataExchange
    • HttpPush (WebHook Outgoing)
    • HttpCallback (WebHook Ingoing)
    • HttpPull
    • WebPush
    • MobilePush
  • Webhook.site HTTP 调试
  • 定时任务 Cron
  • 日志平台
    • Loki
    • ELK
  • HAProxy
  • Nginx
  • 小工具
    • iploc
    • phone number 分析
    • ua 分析
    • email parser
    • dns 查询
    • 消息推送
      • sms
      • email
      • wecom (企业微信)
      • ding
    • generate
      • email
  • ifttt
  • pastebin

#383 MySQL 管理语句

2020-03-25

MySQL 语句:

  1. DDL
  2. DML
  3. 事件和锁
  4. Replication
  5. Prepared
  6. Compound
  7. 数据库管理
  8. 工具

用户管理

角色 (用户模板)

create role stuff@localhost;
... 分配权限,修改属性
select host, user as role from mysql.user where authentication_string = '';
  • CREATE ROLE [IF NOT EXISTS] role [, role ] ...
    锁定,密码为空
  • DROP ROLE
  • SET ROLE
  • SET DEFAULT ROLE

用户

select host, user, plugin, left(authentication_string, 5) as pass, account_locked from mysql.user;
select distinct user from mysql.user;

select current_user(), current_role();
  • CREATE USER
  • DROP USER
  • ALTER USER
  • RENAME USER

密码

  • SET PASSWORD

权限

  • GRANT
  • REVOKE

资源组管理

  • CREATE RESOURCE GROUP
  • DROP RESOURCE GROUP
  • ALTER RESOURCE GROUP
  • SET RESOURCE GROUP

表维护

  • ANALYZE TABLE
  • CHECK TABLE
  • CHECKSUM TABLE
  • OPTIMIZE TABLE
  • REPAIR TABLE

组件,插件,Loadable Function

  • CREATE FUNCTION
  • DROP FUNCTION

  • INSTALL COMPONENT

  • UNINSTALL COMPONENT

  • INSTALL PLUGIN

  • UNINSTALL PLUGIN

CLONE

SET

  • SET 设置变量
  • SET CHARACTER SET
  • SET NAMES

SHOW

  • SHOW BINARY LOGS binlog
  • SHOW BINLOG EVENTS binlog
  • SHOW CHARACTER SET 字符集
  • SHOW COLLATION 排序规则
  • SHOW COLUMNS 查看表结构
SHOW [EXTENDED] [FULL] {COLUMNS | FIELDS}
{FROM | IN} tbl_name
[{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]
  • SHOW CREATE DATABASE
  • SHOW CREATE EVENT
  • SHOW CREATE FUNCTION
  • SHOW CREATE PROCEDURE
  • SHOW CREATE TABLE
  • SHOW CREATE TRIGGER
  • SHOW CREATE USER
  • SHOW CREATE VIEW

  • SHOW DATABASES 数据库

  • SHOW ENGINE 查看指定引擎的状态

部分引擎会提供一些状态信息,比如 INNODB, PERFORMANCE_SCHEMA

  • SHOW ENGINES 存储引擎
  • SHOW ERRORS
  • SHOW EVENTS
  • SHOW FUNCTION CODE
  • SHOW FUNCTION STATUS
  • SHOW GRANTS 用户权限
  • SHOW INDEX 查看指定表的索引
  • SHOW MASTER STATUS
  • SHOW OPEN TABLES
  • SHOW PLUGINS 插件
  • SHOW PRIVILEGES
  • SHOW PROCEDURE CODE
  • SHOW PROCEDURE STATUS
  • SHOW PROCESSLIST
  • SHOW PROFILE
  • SHOW PROFILES
  • SHOW RELAYLOG EVENTS
  • SHOW REPLICAS
  • SHOW SLAVE HOSTS | SHOW REPLICAS
  • SHOW REPLICA STATUS
  • SHOW SLAVE | REPLICA STATUS
  • SHOW STATUS
  • SHOW TABLE STATUS
  • SHOW TABLES
  • SHOW TRIGGERS
  • SHOW VARIABLES
  • SHOW WARNINGS

其他

  • BINLOG
  • CACHE INDEX
  • FLUSH
  • KILL
  • LOAD INDEX INTO CACHE
  • RESET
  • RESET PERSIST
  • RESTART
  • SHUTDOWN

#382 Git 链接文件

2020-03-22

Git 在团队协作的情况下容易遇到很多小问题,有一类是由于跨平台的系统差异导致的。有人习惯 Windows 下开发,有人习惯 Linux 下开发。

最常见的是这么四个问题:

  1. 文件权限问题
  2. 基本上我还没有遇到有需要给仓库中的文件设置权限的情况,但是由于权限的变更导致提交进来没有内容更改的文件就完全没有必要
  3. 所以非常必要设置 core.filemode false
  4. chmod 644 *.md
  5. 换行符问题
  6. Windows 新建的文件都是 \r\n 换行,Linux 则是 \n
  7. core.autocrlf true 可以在 checkout 的时候根据系统自动转换换行符
  8. 但是我觉得这个可能放到 hook 里面,在提交检查的时候一起做更加合适
  9. dos2unix *.md
  10. 软链接问题

  11. Linux 下的软链接切到 Windows 下之后,变成了一个普通文本,内容是链接的路径

  12. core.symlinks true 可以解决这个问题,这也是默认值,可是有些时候我们的环境中配置的就是 false
  13. 我的 Git for Windows 不知道为什么,system 配置就是设置成 false 了
  14. 有些情况下,项目配置似乎就默认是 false
  15. 如果已经成为现实了,软链是个文本,我们改配置,重新添加,然后 pull 到本地可以

core.symlinks
If false, symbolic links are checked out as small plain files that contain the link text. git-update-index and git-add will not change the recorded type to regular file. Useful on filesystems like FAT that do not support symbolic links.
The default is true, except git-clone or git-init will probe and set core.symlinks false if appropriate when the repository is created.

  1. 文件名大小写问题
  2. Linux 大小写敏感,比如 Apple.txt 和 apple.txt 可以在同一个目录,Windows 环境克隆下来,只能看到一个文件 apple.txt
  3. 没什么好的办法,应该也是在提交的时候作为风格检查
$ git config --list --global | grep sym
$ git config --list --system | grep sym
core.symlinks=false
$ git config --list --local | grep sym
core.symlinks=false

关于链接的另一个办法

CSDN 博客上看到 《windows上使用git仓库的问题(换行符、文件权限、软链接)》,里面提出下面这个思路。
虽然代码不够严谨,但是思路应该是没有问题的。以后遇到问题可以参考(还没有验证):

  1. 找出链接文件
  2. 创建 Windows 链接
  3. 操作索引区,忽略这个变更
import os

def rindex(lst, value):
    try:
        return lst.rindex(value)
    except ValueError:
        return -1

# find symbol link files or dirs
fp = os.popen("git ls-files -s | awk '/120000/{print $4}'")
links = fp.read().strip().split("\n")

# get symbol links' parent dir
link_dir = set()
for link in links:
    index = rindex(link, "/")
    if (index != -1):
        link_dir.add(link[:index])
    else:
        link_dir.add(".")

work_dir = os.getcwd()
# make link for every symbol link
for d in link_dir:
    os.chdir("/".join([work_dir,d]))
    fp = os.popen("ls -la")
    items = fp.read().strip().split("\n")
    for item in items:
        if "->" in item:
            tks = item.split("->")
            src = tks[0].strip().split(" ")[-1]
            dst = tks[1].strip().split("/")
            if (len(dst) > 1):
                dst = "\\\\".join(dst)
            else:
                dst = dst[0]
            print ("link " + src + " -> " + dst)
            os.popen("rm " + src)
            if (os.path.isfile(dst)):
                os.popen("cmd /c mklink /H " + src + " " + dst)
            else:
                os.popen("cmd /c mklink /j " + src + " " + dst)
            # make links unchanged
            os.popen("git update-index --assume-unchanged " + "/".join([os.getcwd(), src]))

参考资料与拓展阅读

#381 Windows 10 镜像下载

2020-03-19

https://msdn.itellyou.cn/

Windows 10 Enterprise LTSC 2019

# x64
Windows 10 Enterprise LTSC 2019 (x64) - DVD (Chinese-Simplified)
文件名:cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso
SHA1:24b59706d5eded392423936c82ba5a83596b50cc
文件大小:4.17GB
发布时间:2019-03-15
ed2k://|file|cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso|4478906368|E7C526499308841A4A6D116C857DB669|/

# x86 (32 位)
Windows 10 Enterprise LTSC 2019 (x86) - DVD (Chinese-Simplified)
文件名:cn_windows_10_enterprise_ltsc_2019_x86_dvd_1814dbab.iso
SHA1:ba2169edd94f123211cd4aaca68352f1ab6195d9
文件大小:2.98GB
发布时间:2019-03-15
ed2k://|file|cn_windows_10_enterprise_ltsc_2019_x86_dvd_1814dbab.iso|3196803072|2D39C54A2E99BAC308191C74A15B3237|/
Windows 10 Enterprise LTSC 2021 (x64) - DVD (Chinese-Simplified)
文件:SW_DVD9_WIN_ENT_LTSC_2021_64BIT_ChnSimp_MLF_X22-84402.ISO
大小:4.7GB
MD5:2579B3865C0591EAD3A2B45AF3CABEEE
SHA1:C19D7DAFBAFEB26C36E31D97C465E87C7A6E8A4C
SHA256:C117C5DDBC51F315C739F9321D4907FA50090BA7B48E7E9A2D173D49EF2F73A3
ed2k://|file|SW_DVD9_WIN_ENT_LTSC_2021_64BIT_ChnSimp_MLF_X22-84402.ISO|5044211712|1555B7DCA052B5958EE68DB58A42408D|/

Windows 11

ed2k://|file|zh-cn_windows_11_business_editions_version_22h2_updated_nov_2022_x64_dvd_3623b3e1.iso|5567041536|B83E64D03E93B418840E5B270E164005|/