-
Notifications
You must be signed in to change notification settings - Fork 0
/
atom.xml
305 lines (160 loc) · 76.5 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>No Life Ryan</title>
<subtitle>Ryan的记事本</subtitle>
<link href="https://www.ac1d.space/atom.xml" rel="self"/>
<link href="https://www.ac1d.space/"/>
<updated>2024-11-13T03:16:35.461Z</updated>
<id>https://www.ac1d.space/</id>
<author>
<name>Acid</name>
</author>
<generator uri="https://hexo.io/">Hexo</generator>
<entry>
<title>SQL Server Practice: Multibyte Characters Displayed With Incorrect Encoding</title>
<link href="https://www.ac1d.space/2024/11/12/multibyte-character-display-issues/"/>
<id>https://www.ac1d.space/2024/11/12/multibyte-character-display-issues/</id>
<published>2024-11-12T07:58:29.000Z</published>
<updated>2024-11-13T03:16:35.461Z</updated>
<content type="html"><![CDATA[<p>Insight of why all multibyte character is printed as ‘?’</p><span id="more"></span><h2 id="the-issues"><a class="markdownIt-Anchor" href="#the-issues"></a> The Issues</h2><p>So in this semester.I took a database course and we use sql server as learning materials which is a headache for me.Since I use mac as my main working pc while Microsoft developed the sql server so it’s natural that sql server is not compatible for mac. To install it on my Mac, I have to borrow the power of virtual machine. After careful consideration of convenience and performance issues, I decided to use containers to install it. As an alternative to Docker, I chose Orbstack. It gave me a native Mac vibe while being free (for personal use). With simplicity and high performance, Orbstack is my best choice and imho the best option for any mac user with container requirements (I’m not their salesman tho).<br />I have previously written a step by step guide on how to install sql server on mac with container. Check that article if needed. The main topic of this article came to me when I was dealing with the professor’s assignment. When I tried to select a few rows from a given table, it turned out that all the Chinese characters were displayed as question marks, which is quite tricky since in this case I cannot get the correct result set when Chinese characters are contained in the WHERE clause. All Chinese characters are recognised as ‘?’ by the DBMS, so the WHERE clause has lost all meaning.</p><p><img src="https://www.ac1d.space/img/202411121638633.png" alt="Chinese was not correctly encoded in the new query page." /></p><p><img src="https://www.ac1d.space/img/202411121602100.png" alt="Chinese was not correctly encoded in the result set." /></p><h2 id="the-analyze"><a class="markdownIt-Anchor" href="#the-analyze"></a> The Analyze</h2><p>It occurs to me that ‘?’ means the DBMS used the wrong decoding for Chinese characters, which is why all Chinese characters are displayed as ‘?’, because the DBMS couldn’t find the correct symbol to display the Chinese character. So the actual problem is how to tell the DBMS to use the correct decoding. I tried to look this up in the settings with the keyword ‘encoding’ and found the following setting picture below. After changing it to Simplified Chinese (GB18030), I restarted Azure Data Studio and found that this fixed the display of Chinese characters in the new query page. However, the Chinese characters in the result set are still a mess.</p><p><img src="https://www.ac1d.space/img/202411121732298.png" alt="The encoding setting" /></p><h2 id="the-research"><a class="markdownIt-Anchor" href="#the-research"></a> The Research</h2><p>Later, after looking at the <a href="https://learn.microsoft.com/en-us/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql?view=sql-server-ver16">Official Sql Server Website</a>, I found this very useful information.</p><blockquote><p>Prefix a Unicode character string constants with the letter N to signal UCS-2 or UTF-16 input, depending on whether an SC collation is used or not. Without the N prefix, the string is converted to the default code page of the database that might not recognize certain characters.</p></blockquote><p>So I have two options: Either replace all char/varchar to nchar/nvarchar or use an SC (Supplementary Characters) collation. I decided to try the former first.</p><p>I drop the database with the code snippets below. To avoid crashes and accidental data corruption, we should set the database to single user mode and drop it. Also note that all connections to the database to be dropped should be disconnected before running the following code.</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">ALTER</span> DATABASE database_name <span class="keyword">SET</span> SINGLE_USER <span class="keyword">WITH</span> <span class="keyword">ROLLBACK</span> IMMEDIATE; <span class="comment">--Set Single User mode</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">DROP</span> DATABASE database_name <span class="comment">--Drop Database with database name</span></span><br></pre></td></tr></table></figure><p><img src="https://www.ac1d.space/img/29113.png" alt="The execution result" /></p><p>After running the above code, make sure that <code>database_name</code> is actually dropped. Then recreate the database and tables to see if Chinese characters (or other multi-byte characters) are displayed correctly.</p><p>Turns out mine works fine.</p><p><img src="https://www.ac1d.space/img/86674.png" alt="The correct version of select result" /></p><p>There is another way: Set the SC collation. After looking through <a href="https://learn.microsoft.com/en-us/sql/relational-databases/collations/collation-and-unicode-support?view=sql-server-ver16">Collation and unicode support</a>, I got this <code>Chinese_PRC_CI_AS</code>. So I dropped and recreated the database with the code below and recreated all the tables, multi-byte characters (Chinese) displayed correctly again.</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">CREATE</span> DATABASE database_name <span class="comment">--Create Database 'database_name'</span></span><br><span class="line"><span class="keyword">COLLATE</span> Chinese_PRC_CI_AS; <span class="comment">--Enable Chinese_PRC_CI_AS Collation for database</span></span><br></pre></td></tr></table></figure><p>After all, this is just another encoding problem. It’s possible that if we don’t explicitly enable SC collation, the string will fall back to the default codepage, which may not recognise certain multibyte characters. These characters are outside the range of datatypes stored under non-SC collation, so we might need to explicitly enable SC collation or use the N prefix to signal UCS-2 or UTF-16 input.</p><h2 id="references"><a class="markdownIt-Anchor" href="#references"></a> References</h2><p><a href="https://learn.microsoft.com/en-us/sql/relational-databases/collations/collation-and-unicode-support?view=sql-server-ver16">collation-and-unicodode</a></p><p><a href="https://learn.microsoft.com/en-us/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql?view=sql-server-ver16">nchar-and-nvarchar-transact-sql</a></p><p><a href="https://help.aliyun.com/zh/rds/apsaradb-rds-for-sql-server/resolve-garbled-characters-in-tables-of-sql-server-databases">resolve-garbled-characters-in-tables-of-sql-server-databases</a></p><p><a href="https://www.cnblogs.com/listjiang/p/16504594.html">解决 SqlServer中文乱码问题</a></p><p><a href="https://stackoverflow.com/questions/144283/what-is-the-difference-between-varchar-and-nvarchar">what-is-the-difference-between-varchar-and-nvarchar</a></p>]]></content>
<summary type="html"><p>Insight of why all multibyte character is printed as ‘?’</p></summary>
<category term="技术" scheme="https://www.ac1d.space/categories/%E6%8A%80%E6%9C%AF/"/>
<category term="数据库" scheme="https://www.ac1d.space/tags/%E6%95%B0%E6%8D%AE%E5%BA%93/"/>
<category term="微软" scheme="https://www.ac1d.space/tags/%E5%BE%AE%E8%BD%AF/"/>
<category term="编码" scheme="https://www.ac1d.space/tags/%E7%BC%96%E7%A0%81/"/>
<category term="debug" scheme="https://www.ac1d.space/tags/debug/"/>
<category term="笔记" scheme="https://www.ac1d.space/tags/%E7%AC%94%E8%AE%B0/"/>
</entry>
<entry>
<title>Test</title>
<link href="https://www.ac1d.space/2024/10/18/null/"/>
<id>https://www.ac1d.space/2024/10/18/null/</id>
<published>2024-10-18T02:49:50.000Z</published>
<updated>2024-10-18T02:49:50.100Z</updated>
<content type="html"><![CDATA[<span id="more"></span>]]></content>
<summary type="html"><span id="more"></span></summary>
</entry>
<entry>
<title>Test</title>
<link href="https://www.ac1d.space/2024/10/18/null/"/>
<id>https://www.ac1d.space/2024/10/18/null/</id>
<published>2024-10-18T02:49:32.000Z</published>
<updated>2024-10-18T02:49:32.285Z</updated>
<content type="html"><![CDATA[<span id="more"></span>]]></content>
<summary type="html"><span id="more"></span></summary>
</entry>
<entry>
<title>Install-Sql-Server-on-Mac-With-Container</title>
<link href="https://www.ac1d.space/2024/10/15/null/"/>
<id>https://www.ac1d.space/2024/10/15/null/</id>
<published>2024-10-15T02:49:26.000Z</published>
<updated>2024-10-15T13:02:56.327Z</updated>
<content type="html"><![CDATA[<p>Recently I had a sql course that require using sql server.However, sql server don’t run on my mac natively. So I had to install it another way, with container.</p><span id="more"></span><p>For performance concerns, I ran an SQL Server Container through <a href="https://orbstack.dev/download">Orbstack</a>. It’s low cost</p><p><a href="https://builtin.com/software-engineering-perspectives/sql-server-management-studio-mac">https://builtin.com/software-engineering-perspectives/sql-server-management-studio-mac</a></p>]]></content>
<summary type="html"><p>Recently I had a sql course that require using sql server.However, sql server don’t run on my mac natively. So I had to install it another way, with container.</p></summary>
</entry>
<entry>
<title>自由的代价</title>
<link href="https://www.ac1d.space/2024/09/30/price-of-librime/"/>
<id>https://www.ac1d.space/2024/09/30/price-of-librime/</id>
<published>2024-09-30T05:53:46.000Z</published>
<updated>2024-10-08T12:50:23.403Z</updated>
<content type="html"><![CDATA[<p>最近重拾了以前在Linux上用的自由输入法中州韵,这是我的一些使用体验</p><span id="more"></span><h1 id="基本介绍"><a class="markdownIt-Anchor" href="#基本介绍"></a> 🐭 基本介绍</h1><hr /><p>Rime是一个自由的输入法引擎,或框架,它在不同的平台有不同的发行版</p><ul><li>在mac上叫作<a href="https://github.com/rime/squirrel">鼠须管</a></li><li>在linux上叫作<a href="https://rime.im/">中州韵</a></li><li>在windows上叫作<a href="https://github.com/rime/weasel">小狼毫</a></li><li>在ios上叫作<a href="https://github.com/imfuxiao/Hamster">小仓输入法</a></li></ul><p>Rime是一个自由的输入法<strong>框架</strong>,通过配置文件载入的「方案」才是<strong>狭义上的输入法</strong>,这意味着你可以通过框架来构建自己的输入法「方案」,也可以在别人已经构建好的框架上扩展,我就是在雾凇方案上进行扩展的,你可以通过这些方案来:</p><ul><li>构建自己的中英文词库</li><li>构建常用语</li><li>编辑输入法样式(皮肤)</li><li>编辑每一个按键的功用<ul><li>caps lock</li><li>shift</li><li>etc…</li></ul></li><li>更改候选词数量</li><li>同步多个机器之间的配置</li><li>etc…</li></ul><p>这篇文章不会介绍如何配置Rime,只介绍些许Rime工作原理,以及少数输入法的有关概念,和我自己的些许感想,如果你想更深入的了解Rime,还请详阅以下网页内容:</p><ul><li><a href="https://github.com/iDvel/rime-ice">雾凇拼音Github仓库</a> 可能是目前最好的Rime全拼方案</li><li><a href="https://baiyun.me/rime-simple-tutorial">Rime简明教程</a> by BaiYun,阅读这篇文章来初步学习如何配置Rime</li><li><a href="https://www.hawu.me/others/2666">鼠须管输入法配置指引</a> by 哈呜.王,极为详尽的第三方鼠须管配置指引</li><li><a href="https://github.com/rime/home/wiki">Rime官方维基</a></li><li><a href="https://github.com/rime/librime">Rime本体Gihub仓库</a></li><li><a href="https://github.com/LEOYoon-Tsaw/Rime_collections/blob/master/Rime_description.md">方案制作详解</a> 通过这个指引来创建自己的输入法方案</li><li><a href="https://gist.github.com/lewangdev/f8ebbba24f464e915fb7d36857fcbbe5?permalink_comment_id=4530394">Rime-MacOS-like&Wechat-like换皮样式配置</a></li></ul><h1 id="️-rime的工作原理"><a class="markdownIt-Anchor" href="#️-rime的工作原理"></a> ⚙️ Rime的工作原理</h1><hr /><h2 id="工作流程"><a class="markdownIt-Anchor" href="#工作流程"></a> 工作流程</h2><p>下面来看一下Rime输入法的工作流程,来更好的理解这个框架:</p><blockquote><p>按键消息→后台「服务」→分配给对应的「会话」→由「方案选单」或「输入引擎」处理……</p></blockquote><p>通过「方案选单」,Rime可以在不同的会话里选用不同的输入方案(e.g.雾凇全拼、小鹤双拼…),然后将相应的输入方案载入输入引擎,下面是输入引擎的工作流程:</p><blockquote><p>加载输入方案、预备功能组件;各就位之后就进入处理按键消息、处理按键消息……的循环</p></blockquote><p>处理按键消息并产生候选词的工作,就由下面四类组件来完成。</p><h2 id="四类组件"><a class="markdownIt-Anchor" href="#四类组件"></a> 四类组件</h2><p>响应各种按键、产生各类结果的工作,由四类不同的功能组件分担,这些组件被定义在输入方案的scheme文件中,如rime的默认方案luna,代码片段如下:</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># luna_pinyin.schema.yaml</span></span><br><span class="line"><span class="comment"># ...</span></span><br><span class="line"></span><br><span class="line"><span class="attr">engine:</span> <span class="comment"># 输入引擎标签,下面在引擎上挂载所需组件</span></span><br><span class="line"> <span class="attr">processors:</span> <span class="comment"># 一、这批组件处理各类按键消息</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">ascii_composer</span> <span class="comment"># ※ 处理英文模式及中英文切换</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">recognizer</span> <span class="comment"># ※ 与 matcher 搭配,处理符合特定规则的输入码,如网址、反查等</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">key_binder</span> <span class="comment"># ※ 在特定条件下将按键绑定到其他按键,如重定义逗号、句号为候选翻页键</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">speller</span> <span class="comment"># ※ 拼写处理器,接受字符按键,编辑输入码</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">punctuator</span> <span class="comment"># ※ 断句处理器,将单个字符按键直接映射为文字符号</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">selector</span> <span class="comment"># ※ 选字处理器,处理数字选字键、上、下候选定位、换页键</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">navigator</span> <span class="comment"># ※ 处理输入栏内的光标移动键</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">express_editor</span> <span class="comment"># ※ 编辑器,处理空格、回车上屏、回退键等</span></span><br><span class="line"> <span class="attr">segmentors:</span> <span class="comment"># 二、这批组件识别不同内容类型,将输入码分段(e.g.分开123 abc , .)</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">ascii_segmentor</span> <span class="comment"># ※ 标识英文段落</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">matcher</span> <span class="comment"># ※ 标识符合特定规则的段落,如网址、反查等</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">abc_segmentor</span> <span class="comment"># ※ 标识常规的文字段落</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">punct_segmentor</span> <span class="comment"># ※ 标识断句</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">fallback_segmentor</span> <span class="comment"># ※ 回退标识未标记的段落</span></span><br><span class="line"> <span class="attr">translators:</span> <span class="comment"># 三、这批组件翻译特定类型的编码段为一组候选文字</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">echo_translator</span> <span class="comment"># ※ 没有其他候选字时,直接显示输入码</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">punct_translator</span> <span class="comment"># ※ 转换标点符号</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">script_translator</span> <span class="comment"># ※ 脚本翻译器,用于拼音等基于音节表的输入方案</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">reverse_lookup_translator</span> <span class="comment"># ※ 反查翻译器,用另一种编码方案查码</span></span><br><span class="line"> <span class="attr">filters:</span> <span class="comment"># 四、这批组件过滤翻译的结果 </span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">simplifier</span> <span class="comment"># ※ 繁简转换</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">uniquifier</span> <span class="comment"># ※ 过滤重复的候选字,有可能来自繁简转换</span></span><br></pre></td></tr></table></figure><h3 id="processors"><a class="markdownIt-Anchor" href="#processors"></a> processors</h3><ul><li>这一系列组件会对用户输入<strong>依次</strong>进行处理,按照预设的规则对按键进行响应,它有以下这些行为:<ul><li>要么忽略,不对该按键做任何响应,使用系统默认操作</li><li>要么处理,即「Processors」中有一个处理器可以处理该按键,并执行对应操作</li><li>要么不处理,将用户输入传入下一个「processor」,看它能不能处理</li></ul></li><li>优先级是按配置文件中的列表顺序排列的</li><li>「processors」最常见的处理——将按键所产生的字符记入上下文中的「输入码」序列,当「输入码」发生变更时,「seqmentors」就开始新一轮处理</li></ul><h3 id="segmentors"><a class="markdownIt-Anchor" href="#segmentors"></a> Segmentors</h3><ul><li>这些组件通过一些规则,将「输入码」按照文字、数字、符号等不同内容分段,并分而治之。如将「mac电脑」拆分为「mac」和「电脑」,并为这些分段打上标签,这样就不会打出「马车电脑」,从而实现了中英混输<ul><li>「输入码」分段是通过多轮代码段划分操作完成的</li><li>每一轮操作中,一众「segmentors」分别给出起始于某一处、符合特定格式的代码段,识别到的最长代码段即本轮的分段结果,例如从“observe观察”分离出的“ob”和“observe”之间会选取最长的“observe”作为正确的分段结果</li><li>分好段后就开始给段落贴标签,这些标签是初步划分后判定的类型,可能存在一个编码段贴多个标签的情况,接下来由「translators」把特定类型的编码段翻译为文字</li></ul></li></ul><h3 id="translators"><a class="markdownIt-Anchor" href="#translators"></a> Translators</h3><ul><li><p>翻译器系列组件完成由编码到文字的翻译</p></li><li><p>以下是几个需要注意的要点</p><ol><li>翻译的对象是「Segmentors」<strong>划分好</strong>的一个代码段;</li><li>某个「translator」组件往往只翻译具有<strong>特定标签</strong>的代码段;</li><li>翻译的结果可能有<strong>多条</strong>,<strong>每条结果</strong>成为<strong>一个</strong>展现给用户的<strong>候选项</strong>;</li><li>代码段可由<strong>几种</strong><code>translator</code><strong>分别翻译</strong>、翻译结果按一定<strong>规则合并</strong>成<strong>一列候选</strong>;</li><li>候选项所对应的编码<strong>未必是整个</strong>代码段。用拼音敲一个词组时,词组后面继续列出单字候选,即是此例;</li></ol></li><li><p>内存中翻译器结果是这种样子:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">input | tag | translations</span><br><span class="line">------+--------+-------------------------------------</span><br><span class="line">2012 | number | [ "2012" ], [ "二〇一二" ]</span><br><span class="line">nian | abc | [ "年", "念", "唸",... ], [ "nian" ]</span><br><span class="line">\ | punct | [ "、", "\" ]</span><br></pre></td></tr></table></figure><p>可见输入串划分为多个代码段,每个代码段又有多组翻译结果,取各段代码段结果的首选结果组合起来就是预备上屏的文字:“2012年、”</p></li><li><p>有两种主要的「translator」</p><ul><li>script_translator 罗马字分析法</li><li>table_translator 码表分析法</li></ul></li><li><p>拼音、注音、方言拼音,皆是以固定音节表上的拼写排列组合的方式产生编码,故适用罗马字分析法。</p></li><li><p>仓颉、五笔字型这类则是传统的码表输入法</p></li><li><p>马字式输入方案以一组固定的基本音节码创造新的组合而构词,而码表式输入方案则以一定码长为限创造新的编码映射而构词</p></li></ul><h3 id="filters"><a class="markdownIt-Anchor" href="#filters"></a> Filters</h3><p>「Filter」即过滤器,它会在当需要在界面上显示一页候选项时,从前面步骤已经收集到的翻译结果中进行筛选。然后从最后一个代码段的翻译结果集开始,一直向前挑选,直到满足设定的最大候选项数(页数限制)。</p><p>每从结果集选出一条字词,会经过一组「filters」过滤,多个「filter」串行工作,最终产出的结果哦进入候选序列</p><p><code>filter</code> 可以:</p><ul><li>改装正在处理的候选项,修改某些属性值</li><li>消除当前候选项,比如检测到重复(由不同<code>translator</code>产生)的候选条目</li><li>插入新的候选项,比如根据已有条目插入关联的结果</li><li>修改已有的候选序列</li></ul><p>通过这四类组件,Rime和输入方案完成从用户输入到上屏字符的转换。</p><h2 id="一些和输入法有关的名词"><a class="markdownIt-Anchor" href="#一些和输入法有关的名词"></a> 一些和输入法有关的名词</h2><ul><li><p>上屏</p><ul><li>即把选中的候选词或符号输入到文本框中</li></ul></li><li><p>双拼</p><ul><li><p><strong>双拼</strong>是<a href="https://zh.wikipedia.org/wiki/%E6%B1%89%E8%AF%AD%E6%8B%BC%E9%9F%B3%E8%BE%93%E5%85%A5%E6%B3%95">汉语拼音输入法</a>的一种编码方案。相对于<a href="https://zh.wikipedia.org/wiki/%E5%85%A8%E6%8B%BC">全拼</a>而言,使用双拼输入<a href="https://zh.wikipedia.org/wiki/%E6%B1%89%E5%AD%97">汉字</a>时只需输入一个代表<a href="https://zh.wikipedia.org/wiki/%E5%A3%B0%E6%AF%8D">声母</a>的字母,一个代表<a href="https://zh.wikipedia.org/wiki/%E9%9F%B5%E6%AF%8D">韵母</a>的字母,就可以打出任意一个中文字了</p></li><li><p>以小鹤双拼为例,键盘上的c除了它本身,还代表一个韵母ao,也就是c(ao),想打出hao,就输入h(声母)c(韵母,代表ao),下面是一张小鹤双拼的码表</p></li></ul></li></ul><p><img src="https://www.ac1d.space/img/%E5%8F%8C%E6%8B%BC%E9%94%AE%E4%BD%8D%E5%9B%BE.png" alt="" /></p><ul><li><p>全角/半角</p><ul><li>全角字符更宽,像这样nihao,而半角字符是这样的nihao,按下⌃ `或F4来修改方案,切换全/半角</li></ul></li><li><p>回显</p><ul><li>即没有候选结果时,直接显示用户输入<img src="https://www.ac1d.space/img/%E5%9B%9E%E6%98%BE.png" alt="回显" style="zoom: 40%;" /></li></ul></li><li><p>反查</p><ul><li>简单地说就是使用其他输入模式,查找现有输入模式下的字符输入</li></ul></li><li><p>去重</p><ul><li>去掉候选字词中的重复结果</li></ul></li><li><p>词典</p><ul><li>即输入拼音所对应的字词,一大串就组合成一个词典,还可以用数字作为权重来决定他们在候选字词中的先后</li><li>例如<code>- 龙腾虎跃 long teng hu yue 1000</code></li></ul></li><li><p>候选词</p><ul><li>根据用户输入得出的候选字词</li></ul></li><li><p>短语</p><ul><li>由用户定义的一系列常用短语,可以是口头禅、邮箱、电话等</li><li>如<code>有 u 3</code></li></ul></li></ul><h1 id="想"><a class="markdownIt-Anchor" href="#想"></a> 想</h1><hr /><p>如你所见,这个自由输入法比起同类型的其他——多半是大厂开发的免费输入法相比,配置项繁杂许多,且这些配置没有任何GUI界面可供调参,而是需要你打开其配置文件,通过纯文本的形式修改,一旦填写不符合规范,重新部署的时候就会报错,“列之间须用缩进分开,列之内须用空格分开”,而你还必须阅读其冗长的文档,去搞清楚每个配置文件乃至每个配置项的功用,才能得心应手的调参…若不满足于挪用别人调试好的输入法方案,想要创造自己的方案,则要花更多时间去研究Rime的文档,而其文档在很多方面的描述令人困惑,要花些时间来理解。</p><p>我花了一个下午的时间去看关于Rime的各种博客和wiki、调整雾凇拼音的各项配置,最终得到了一个相对可用性比较高的效果,但还是不及我之前使用的微信输入法提供的免费且原生的体验,主要体现在Rime翻页候选词时,没有下拉菜单来展示更多页的候选词,其次还是微信输入法提供了更多好用的功能,而且都可以在一个简约的GUI界面上进行调整…</p><p>微信输入法和Rime都是免费的,但前者是专有软件,后者是自由软件;然而一个免费的专有软件如何为公司创造价值?恐怕答案只有获取用户信息来做个性化推荐和AI训练语料之类,资本不逐利就不是资本,虽然微信输入法推出了离线模式,不过大概多数人都会用隐私换便利,毕竟只要保持在线模式,就可以使用微信输入法免费提供的ai问答功能和多设备同步剪贴板/常用语,还可以获取实时的网络热门词库,这样不管网络上有哪些时髦的热词热梗,你都能第一时间准确打出来,而不用通过多次的输入来创建自造词并提升它的权重,听起来很美好,并且需要你支付的也只是不值一提的个人隐私罢了。</p><p>有人说「自由」软件才是真正的「免费」软件,虽然free一词在英文中有这二者的双重含义,但通常用libre一词来形容「自由」,「自由」软件不是简单的开放源代码的软件,根据自由软件基金会对其的定义,「自由」软件是一类可以不受限制地自由使用、复制、研究、修改和分发的,尊重用户自由的软件。这方面的不受限制正是「自由」软件最重要的本质。但是「自由」难道就没有代价吗?Rime的输入法方案配置就尽显「自由」,只要你的xxx.scheme.yaml中的配置项符合Rime文档的要求,那就可以随意配置,词库也是自由的,当你输入zy,首选候选词可以是自由也可以是专有,一切全看用户配置,如果想自己开发一个基于Rime的商业软件,也是允许的,例如ios平台上的仓颉输入法,它是有内购的。但这一切的前提是你需要花费阅读文档、编辑配置文件、配置词库的时间,而假使你选择用隐私去换国内大厂免费提供的输入法,上述的时间都可以省下来,如果你愿意,还可以轻松换上精美的皮肤,而不像Rime要自己通过代码制作。如果说「免费」的代价是隐式的分摊给用户的,那么「自由」的代价则直接由开发者承担,并通过价值差映射到用户。对于自由软件,用户有付费的自由,即使选择向开发者付费,也只是通过捐赠的形式,人的自私是写在基因里的,这就是为什么视频网站上的一众知识类视频的收藏数普遍比点赞数要高,大部分人只顾自己,这也是为什么自由软件永久无法流行起来,一个无法盈利的软件,开发者是没有动力去完善它的,而其门槛也注定很高,这种早期的软件分享的形式,其传播范围也只有程序员群体,因此注定是小众的,Rime得以为继的一个主要原因是它只是一个输入法框架,它只提供一个默认的输入法方案,并且称不上好用,最终还是需要用户基于此框架建立自己的输入法方案,所幸已经有了雾凇输入法这样的优秀全拼方案,其他人需要做的也只有安装对应平台的Rime,并将雾凇输入法的配置文件拖到自己的Rime用户配置里,然而要想媲美大厂输入法提供的体验还有些路要走,这也就是所谓的价值差,自由软件永远无法提供比商业化的私有软件更高的价值,这里的价值是这样计算的:受益人数、人均受益时间、单位时间价值,这个价值公式来自李沐,可以用来计算每件事的价值,即使并不具体,但是可以很轻易地判断二者之间的价值孰高孰低,我现在正在使用Rime,不过除隐私以外,我并不觉得它给我提供了比微信输入法更高的价值,在使用Rime之前,我就知道这是必然的,但我为什么还要使用它?是为了隐私吗?对于我来说不是的,虽然我很重视隐私,但这里有一个平衡,即绝对的隐私和互联网带来的便利是互斥的,前者最极端的情况是:注销所有的社交平台账号,用tor、librewolf这样极端注重隐私的浏览器,不使用任何联网的私有软件,etc… 可以想见这样的生活有多麻烦,所以对于我来说牺牲一小部分利益,来换取一定程度的便利,是划算的买卖。</p><h1 id="结"><a class="markdownIt-Anchor" href="#结"></a> 结</h1><p>天平一端高一端就低,不论倾向于哪边,在最理想的情况下,隐私和便利是等价交换的,也就是说所牺牲的隐私都会以相应的价值转化为便利,如果真是那样倒也不算太亏,然而大多数情况下,天平「便利」的那一端都被偷偷塞了吸铁石,你需要用更多的隐私来换取原本应该属于你的那部分便利,在这种情况下应该如何抉择?于是我选择了Rime。</p>]]></content>
<summary type="html"><p>最近重拾了以前在Linux上用的自由输入法中州韵,这是我的一些使用体验</p></summary>
<category term="工具" scheme="https://www.ac1d.space/categories/%E5%B7%A5%E5%85%B7/"/>
<category term="技术" scheme="https://www.ac1d.space/tags/%E6%8A%80%E6%9C%AF/"/>
<category term="insight" scheme="https://www.ac1d.space/tags/insight/"/>
<category term="感想" scheme="https://www.ac1d.space/tags/%E6%84%9F%E6%83%B3/"/>
</entry>
<entry>
<title>Mac通用指南其一之访达</title>
<link href="https://www.ac1d.space/2024/09/27/mac-universal-guide-1/"/>
<id>https://www.ac1d.space/2024/09/27/mac-universal-guide-1/</id>
<published>2024-09-27T14:33:51.000Z</published>
<updated>2024-10-08T12:13:10.611Z</updated>
<content type="html"><![CDATA[<p>此篇介绍 macbook 系统应用访达的进阶使用</p><span id="more"></span><ul><li>在<code>通用</code>中<ul><li>可以更改桌面上显示的文件,最好取消勾选<code>外置硬盘</code>,因为那是安装软件所用的 dmg 文件,如果有太多 dmg 文件未被推出,将会严重占据桌面空间</li><li>dmg 文件可能模仿了古早电脑插入光盘安装软件的形式,这大概也是为什么挂载 dmg 文件后还要将软件拖入本机的应用程序文件夹</li></ul></li><li>在<code>标签</code>中<ul><li>你可以添加更多标签;</li><li>点击标签左侧的色圈并更换标签的颜色;</li><li>右键点击标签更改它的命名,例如将<code>红色标签</code>更名为重要;</li><li>标签右侧的复选框,当标记为<code>-</code>时代表它们被默认选中,你可以多次点击直到复选框状态为空(不显示)或勾选(显示),以在边栏显示或隐藏此标签;</li><li>你可以把自定义的标签拖拽到下方的框选区域,这样下次你右键点击文件时,可以快速把该文件添加到此分类;</li></ul></li></ul><img src="https://www.ac1d.space/img/%E6%88%AA%E5%B1%8F2024-08-13%2015.15.08.png" alt="截屏2024-08-13 15.15.08" style="zoom:50%;" /><ul><li>在<code>边栏</code>中<ul><li>可以更改<code>个人收藏</code>中显示的文件夹,建议把文稿,下载,音乐,图片等需要频繁访问的文件夹都勾选上,其余按需勾选;</li><li><code>位置</code>中的外置磁盘同样可以取消勾选掉;</li></ul></li></ul><img src="https://www.ac1d.space/img/%E6%88%AA%E5%B1%8F2024-08-13%2015.26.26.png" alt="截屏2024-08-13 15.26.26" style="zoom:50%;" /><ul><li>在高级中<ul><li>将<code>执行搜索时</code>的操作更改为搜索<code>当前文件夹</code>而不是<code>整台 mac</code>,这更符合 Windows 系统下的操作习惯,也更"人类",毕竟当我们在某个文件夹搜索时,我们想找的文件往往就在那个文件夹中,而不需要在整个磁盘查找;</li><li>如果你不太熟悉文件系统管理的操作,最好把所有警告有关的设置都打开;</li><li>勾选所有<code>将以下位置的文件夹保持在顶部</code>的所有项目,这样当一个文件夹中既有文件夹又有很多不同类型的文件的时候,就可以将文件夹分层出来置于顶部,杂七杂八的文件就自动"沉底"了,这样有助于文件管理更有序;</li></ul></li></ul><img src="https://www.ac1d.space/img/%E6%88%AA%E5%B1%8F2024-08-13%2015.28.44.png" alt="截屏2024-08-13 15.28.44" style="zoom:50%;" /><ul><li><h4 id="工具栏"><a class="markdownIt-Anchor" href="#工具栏"></a> 🔧 工具栏</h4><p>当你右键点击或用触控板双指轻击访达窗口顶部时,你会看到自定义工具栏的选项:</p></li><li><p>在自定义工具栏的窗口中,你可以把一些有用的项目拖入工具栏,或者将默认的一组项目拖入工具栏;</p></li><li><p>除此之外,你还可以更改工具的显示形式,例如图标和文本,仅图标和仅文本,我更喜欢仅图标,这样更简洁且一目了然,也更省空间,如果你拖入太多项目到工具栏,一旦位置不足,多出来的项目就会被隐藏;</p></li><li><p>你可能不知道,按住⌘键,你可以将文件或文件夹拖动到工具栏,打个比方,你可以安装⌘键把 photoshop 拖到工具栏,并拖动一张图片到工具栏处的 photoshop 图标,这样就可以快速在 photoshop 中开始编辑该图片,你还可以把这套操作应用到别的软件!</p></li></ul><img src="https://www.ac1d.space/img/%E6%88%AA%E5%B1%8F2024-08-13%2015.38.46.png" alt="截屏2024-08-13 15.38.46" style="zoom:50%;" /><ul><li><h4 id="️-快捷键"><a class="markdownIt-Anchor" href="#️-快捷键"></a> ⌨️ 快捷键</h4><p>想要进阶访达,快捷键必不可少,以下是一些相当常用的快捷键及其操作:</p><table><thead><tr><th>快捷键</th><th>操作</th></tr></thead><tbody><tr><td>⌘<code>I</code></td><td>打开/关闭当前选中文件或文件夹的简介</td></tr><tr><td>⌘<code>T</code></td><td>新建标签页</td></tr><tr><td>⌘<code>N</code></td><td>新建访达窗口</td></tr><tr><td>⌘<code>数字</code></td><td>快速更改文件的显示形式</td></tr><tr><td><code>长按/点击</code> ␣</td><td>长按<code>空格</code>预览选中文件/文件夹,释放则关闭预览,单机空格打开/关闭预览,同时按住<code>shift</code>还可以放慢动画</td></tr></tbody></table><p>更多快捷键,可以在顶部菜单栏寻找;</p></li><li><h4 id="️-菜单栏"><a class="markdownIt-Anchor" href="#️-菜单栏"></a> 🕹️ 菜单栏</h4><p>在 macOS 中,软件的大部分操作逻辑都被放在顶部菜单栏的左侧,访达也不例外,如果你想快速且全面的上手一款软件,这个位置会是你第一个查看的地方</p></li><li><p>菜单栏的所有项目的下拉菜单选项都由操作名和快捷键组成,你可以直接点击执行这个操作,也可以记住快捷键,下次直接调用快捷键呼出这个操作;</p></li><li><p>有的选项没有被分配快捷键,可以在<code>系统设置-键盘-快捷键</code>处点选<code>App 快捷键</code>并添加自定义快捷键</p></li></ul><p><img src="https://www.ac1d.space/img/%E6%88%AA%E5%B1%8F2024-08-13%2016.41.37.png" alt="截屏2024-08-13 16.41.37" />{:height 1235, :width 1250}</p><ul><li>在<code>显示</code>的下拉菜单中<ul><li>可以选择文件的显示形式,可根据需求选择</li><li>把除了<code>显示所有标签页</code>的所有隐藏的项目都勾选上,这样就可以始终看到文件的路径,工具栏,状态栏,标签栏等常用项目了,如果你不勾选显示文件的路径,同样可以按住 option 键临时查看当前文件路径</li></ul></li></ul><img src="https://www.ac1d.space/img/%E6%88%AA%E5%B1%8F2024-08-13%2016.45.13.png" alt="截屏2024-08-13 16.45.13" style="zoom:50%;" /><ul><li>进一步还可以点击<code>查看显示选项</code>以更改图标大小,文字大小,标签位置等显示选项,不过这些设置只作用于当前打开的文件夹,可以点击用作默认,这样将来新建的文件夹也会像当前设置的样子显示文件,但不会影响现有的文件夹;</li></ul><img src="https://www.ac1d.space/img/%E6%88%AA%E5%B1%8F2024-08-13%2016.52.17.png" alt="截屏2024-08-13 16.52.17" style="zoom:50%;" /><ul><li>在前往项目的下拉菜单中<ul><li>可以快速访问主要文件夹,但是还是从侧栏访问更快捷,也可以由此访问nas服务器</li></ul></li></ul><hr /><p>以上就是有关访达的内容,下来将介绍系统设置</p>]]></content>
<summary type="html"><p>此篇介绍 macbook 系统应用访达的进阶使用</p></summary>
<category term="mac" scheme="https://www.ac1d.space/categories/mac/"/>
<category term="教程" scheme="https://www.ac1d.space/tags/%E6%95%99%E7%A8%8B/"/>
<category term="科技" scheme="https://www.ac1d.space/tags/%E7%A7%91%E6%8A%80/"/>
<category term="技巧" scheme="https://www.ac1d.space/tags/%E6%8A%80%E5%B7%A7/"/>
</entry>
<entry>
<title>Hexo框架迁移记录</title>
<link href="https://www.ac1d.space/2024/06/01/hexo_framework/"/>
<id>https://www.ac1d.space/2024/06/01/hexo_framework/</id>
<published>2024-06-01T09:50:31.000Z</published>
<updated>2024-09-27T15:03:41.534Z</updated>
<content type="html"><![CDATA[<p>题记:本篇介绍用Hexo框架构建博客的经历</p><span id="more"></span><p>去年弄了基于wordpress的博客,然而碍于备案太麻烦,专门去国外平台租了服务器,买了域名,一番折腾后终于把网站挂在了租来的服务器,不过没几天就被黑客打下来了,我又没有什么运维知识,最终只能不了了之。</p><p>后续听说了Github Pages,由Github免费提供的网页寄存服务,可以存放静态网页,包括博客、项目文档、甚至整本书。最重要的是因为网页托管在github那边,因此几乎没有被黑客攻击的风险。</p><p>于是今年五月初心血来潮将博客部署在GitHubPages,随便找了个jekyll主题,<a href="http://xn--urlac1d-tk4kv2z42d2zafa128j7nwe6n83stp1bq7tia4576b947bdcis8ir18c0q7b.cc">然后把默认的url解析到去年购买的闲置域名ac1d.cc</a>,配置好cname后自动转发到www前缀,在这之后就放着没管,只是有兴致时写一两篇博文,往往很短,只是随手一记。</p><p>这期间上网查阅资料时偶然打开了sukka的博客,顿觉界面十分清爽,三栏布局深得我心。迅速阅览后得知sukka的博客是用hexo框架建立的,于是在阅读官方文档后,我在计算机上安装了Hexo框架,并init了第一个博客文件夹,一开始我想用metarial主题,但是不知为何总是报一堆错,metarial的文档写的也很烂,令人不知所云,最后选择了icarus主题,部署好后终端键入’hexo server’,然后就可以在localhost的4000端口打开博客的预览界面。<br />一番修改后就变成了现在的样子,具体变更可以参阅导航栏上的变更日志。</p><div> <section id="comments" class="comments"> <style> .utterances{max-width: 100%;} </style> <script src="https://utteranc.es/client.js" repo="PaRr0tBoY/parr0tboy.github.io" issue-term="title" theme="transparent_dark" crossorigin="anonymous" async> </script> </section></div>]]></content>
<summary type="html"><p>题记:本篇介绍用Hexo框架构建博客的经历</p></summary>
<category term="笔记" scheme="https://www.ac1d.space/categories/%E7%AC%94%E8%AE%B0/"/>
<category term="技术" scheme="https://www.ac1d.space/tags/%E6%8A%80%E6%9C%AF/"/>
<category term="日记" scheme="https://www.ac1d.space/tags/%E6%97%A5%E8%AE%B0/"/>
<category term="Hexo框架" scheme="https://www.ac1d.space/tags/hexo%E6%A1%86%E6%9E%B6/"/>
</entry>
<entry>
<title>Arc浏览器Win版常见问题解决方法</title>
<link href="https://www.ac1d.space/2024/05/29/arc_browser_problems_solved/"/>
<id>https://www.ac1d.space/2024/05/29/arc_browser_problems_solved/</id>
<published>2024-05-29T13:14:33.000Z</published>
<updated>2024-10-08T12:41:42.870Z</updated>
<content type="html"><![CDATA[<p>题记:本文解决Arc浏览器中的常见错误</p><span id="more"></span><p>浏览器可说是计算机系统中最重要的软件之一,或许没有之一。而Arc浏览器则是众多主流浏览器选择之外最为别出心裁的一个Chromium分支。</p><p>少数派用户PlaytyHsu将Arc翻译为弧光,私以为这个翻译很准确,开发Arc浏览器的公司常常将蓝紫色融入他们的设计中,看起来很像弧光,而Arc本身也有这个意思。</p><p>本文不展开介绍Arc的优点,前人之述备矣,这篇文章的主要使命是提供一些Windows版本Arc中常见的问题的解决办法。</p><blockquote><p>文章中Arc版本:1.3.2 (30214),如果您的版本落后,再次运行Arcinstaller或点击左上角Arc图标Check for Updates。</p></blockquote><hr /><h3 id="无法注册账号无法登录无法跨平台同步标签"><a class="markdownIt-Anchor" href="#无法注册账号无法登录无法跨平台同步标签"></a> 无法注册账号/无法登录/无法跨平台同步标签</h3><p>以克拉施为例:</p><ul><li>全局魔法</li><li>系统代理</li><li>解除Arc浏览器uwp联网限制</li><li>Tun mode</li><li>切换节点</li><li>耐心等待</li></ul><p><img src="https://www.ac1d.space/img/1bb03431a4f12e0b5846c1ce9264060c109167641.png%401256w_786h_!web-article-pic.avif" alt="按钮变灰后稍等片刻" /></p><p>因为特殊原因,Arc的登录/同步服务器在大陆一般是ping不通的,因此除魔法外别无他法,即使使用魔法仍旧要等个十秒左右,因人而异,刚开始beta的时候,也有人直连注册登录成功的。</p><p>UWP应用联网限制就是Windows系统限制UWP应用访问本地回环(localhost,127.0.0.1),但是克拉施需要应用能够把网络请求传给本地回环才可以代理,所以解除了UWP限制以后UWP应用的联网就走clash了,此时登录注册正是时候,但是如此一来就会导致hosts文件对Arc发送网络请求的限制失效,因为联网请求被发送给了代理节点的中转服务器,而中转服务器没有被hosts文件解析到本地回环,所以如果开了代理还解除了限制就会导致Arc实际上走clash做了一系列的联网请求,其结果就是能打开但是很慢,因为和服务器通信需要时间,如果你的节点延迟高网速还慢,Arc的启动速度只会更慢,因此登录注册成功后不开代理或者重新启用Arc的联网限制,Arc的联网请求就会全部解析到localhost从而做到秒开。<br /><strong>Arc的同步服务器:</strong></p><blockquote><p><a href="http://o298668.ingest.sentry.io:443">o298668.ingest.sentry.io:443</a></p></blockquote><p><strong>Arc的注册登录服务器:</strong></p><blockquote><p>或许是以下之一</p><p><a href="http://api.segment.io:443">http://api.segment.io:443</a></p><p><a href="http://clientstream.launchdarkly.com:443">http://clientstream.launchdarkly.com:443</a></p><p><a href="http://mobile.launchdarkly.com:443">http://mobile.launchdarkly.com:443</a></p></blockquote><hr /><h3 id="arc浏览器关闭后无法再次打开或者完全无法打开"><a class="markdownIt-Anchor" href="#arc浏览器关闭后无法再次打开或者完全无法打开"></a> Arc浏览器关闭后无法再次打开或者完全无法打开</h3><p><strong>建议先尝试在系统应用设置中修复或重置Arc,如果此举没有效果,再考虑以下方法。</strong></p><p><strong>以下内容因为时间推移已经失效</strong>,外网 arc社区找出了arc打不开的根本原因,是因为一个叫做firestore的文件夹,每次都要删掉这个文件夹arc才能打开,但是删掉以后 arc sync 就会不工作一段时间,因此有人写了一个每次打开arc时自动删除firestore的脚本,我放在了网盘里,使用文档也在压缩包中,有需求自取:<a href="https://pan.baidu.com/s/1sCapWEA9G-TeM4u1KWOCCA?pwd=acid">https://pan.baidu.com/s/1sCapWEA9G-TeM4u1KWOCCA?pwd=acid</a></p><p><s>可能原因分析:</s></p><p><s>这是大陆用户中最常见的问题,对于我自己,情况是不联网或者全局魔法才可以打开,而且后者比前者等待的时间要久,这或许意味着Arc在打开前有可能要经过一个国内无法ping通的验证服务器,毕竟这是个登录为必选项的浏览器。</s></p><p><s>我推测Arc在ping通此服务器前是不会打开窗口的,如果访问超时,Arc会不断尝试对该服务器发送网络请求,而如果处于离线状态则不会尝试连接;因此我用fiddler抓包了arc浏览器启动时的网络请求:</s></p><p><s>解决办法:</s></p><p><s>在一次失败的启动后最终筛选出了几个嫌疑较大的URL,并将它们全部解析到本地回环:</s></p><blockquote><p>127.0.0.1 <a href="http://o298668.ingest.sentry.io">o298668.ingest.sentry.io</a></p><p>127.0.0.1 <a href="http://mobile.launchdarkly.com">mobile.launchdarkly.com</a></p><p>127.0.0.1 <a href="http://clientstream.launchdarkly.com">clientstream.launchdarkly.com</a></p><p>127.0.0.1 <a href="http://update.googleapis.com">update.googleapis.com</a></p><p>127.0.0.1 <a href="http://api.segment.io">api.segment.io</a></p></blockquote><p><s>将上述文本<strong>粘贴到hosts文件</strong>(C:\WINDOWS\system32\drivers\etc)中后,<strong>打开终端</strong>敲入:</s></p><blockquote><p>ipconfig /flushdns</p></blockquote><p><s><strong>刷新DNS解析</strong>,然后尝试ping刚才被解析到本地的其中一个域名,例如:</s></p><blockquote><p>ping <a href="http://o298668.ingest.sentry.io">o298668.ingest.sentry.io</a></p></blockquote><p><s>返回"<strong>来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128</strong>"则成功。</s></p><p><s>这样处理后理论上当Arc尝试向上述URL发送网络请求时就会连接到localhost,而不会因为访问超时而不打开窗口。</s></p><p><s>再次确认arc后台完全清除后尝试打开,发现已经可以正常打开,速度也快了不少。</s></p><blockquote><p>在你的电脑上可能不会这么顺利,但这个方法对于我是有用的。</p></blockquote><p>PS:Arc在使用过程中崩溃或人为关闭后,不要立刻再次打开,等待2~3秒后再次打开,否则也有几率导致无法重新打开;</p><p>另外,解除Arc的UWP联网限制可能是必要的,有关方法请自行查阅资料。*/</p><hr /><h3 id="无法创建新标签页中文搜索跳转到无关标签"><a class="markdownIt-Anchor" href="#无法创建新标签页中文搜索跳转到无关标签"></a> 无法创建新标签页,中文搜索跳转到无关标签</h3><p>Arc浏览器没有新标签页的概念,快捷键 <strong>ctrl+t</strong> 跳出来的搜索框就是新标签页;</p><p><strong>方法一:</strong></p><p>Arc浏览器暂未适配中文输入法,在中文部分之后敲一个空格即可解决问题,不过每次搜索都多按一个空格很麻烦,我的解决方式是写一个ahk脚本,逻辑是<strong>将回车键重新绑定</strong>为:</p><p><strong>两个空格-延迟150ms-回车</strong></p><p>这样解决了问题,而且当使用输入法时必须输入英文时,两个空格可以保证英文确实落在搜索框内,且不会因为缺少空格导致跳转到其他界面。</p><p>代码(ahk版本为v2):</p><p><strong>方法二(推荐):</strong></p><p>使用Utools<strong>网页快开</strong>插件,将Arc浏览器设置为默认打开的浏览器,其实这是我更推荐的方式,<s>Utools很好用</s></p><p><img src="https://www.ac1d.space/img/e9d91e4bffe83924565759fee40466f2109167641.png%401256w_708h_!web-article-pic.avif" alt="用Utools充当Arc浏览器的搜索框架" /></p><hr /><h3 id="有关侧栏迷你播放器"><a class="markdownIt-Anchor" href="#有关侧栏迷你播放器"></a> <strong>有关侧栏迷你播放器</strong></h3><blockquote><p>侧栏迷你播放器是arc在1.3.2.30214版本更新中新增的设计,主要功能是当有标签播放音频时在侧边栏显示一个迷你播放器,当鼠标悬浮时会显示音频的标题;</p></blockquote><p>然而有一个很抽象的问题是播放器标题直接来自于标签页的标题,而不是调用网页提供的api,我相信这是因为此功能尚处于早期开发阶段。这就导致如果标签页的标题不随所播放音频而改变的话,那么播放器的标题就不会改变,而Apple Music的网页端就是这样的标签页。</p><p>于是我写了一个js脚本用于解决该问题,脚本逻辑是从页面中获取歌曲的标题,再将其命名于标签页标题,设置一个间隔1000ms的监视器,并将脚本部署到油猴扩展,这样就完美解决了问题。你也可以为有同样问题的网站写一个类似脚本。</p><hr /><p>文章涉及的大部分文件,以及一些快捷键总结都打包放到网盘了,<a href="http://xn--readme-vt9i240au85b93oysvte4g.md">使用方法参阅readme.md</a>,链接:</p><blockquote><p><a href="https://www.alipan.com/s/Aqy7dSLCAiM">https://www.alipan.com/s/Aqy7dSLCAiM</a></p></blockquote><p>以上只包括我遇到过的问题,如果还有其它有关问题,参阅以下文章:</p><ol><li><p>【Arc for windows beta版踩坑记录-哔哩哔哩】 <a href="https://b23.tv/pS8GEM8">https://b23.tv/pS8GEM8</a></p></li><li><p>【Arc for windows 几个问题解决方法。-哔哩哔哩】 <a href="https://b23.tv/8G1n1Na">https://b23.tv/8G1n1Na</a></p></li></ol><p>上述文章总结自个人使用经验,具体情况与效果可能随软硬件差别和时间推移(2024.5.29)有所改变;如果有无法独立解决的Arc浏览器相关问题,可发送至我的邮箱([email protected]),有闲会看。</p>]]></content>
<summary type="html"><p>题记:本文解决Arc浏览器中的常见错误</p></summary>
<category term="工具" scheme="https://www.ac1d.space/categories/%E5%B7%A5%E5%85%B7/"/>
<category term="日记" scheme="https://www.ac1d.space/tags/%E6%97%A5%E8%AE%B0/"/>
<category term="bugfixes" scheme="https://www.ac1d.space/tags/bugfixes/"/>
<category term="Arc浏览器" scheme="https://www.ac1d.space/tags/arc%E6%B5%8F%E8%A7%88%E5%99%A8/"/>
</entry>
<entry>
<title>Utools Crack</title>
<link href="https://www.ac1d.space/2024/05/29/utools_crack/"/>
<id>https://www.ac1d.space/2024/05/29/utools_crack/</id>
<published>2024-05-29T13:14:33.000Z</published>
<updated>2024-06-06T15:12:52.000Z</updated>
<content type="html"><![CDATA[<p>破解版本:utools 4.0.1</p><span id="more"></span><p>下载地址:<a href="https://www.cmdpe.com/post/373.html">https://www.cmdpe.com/post/373.html</a></p><p>来自52破解:<a href="https://www.52pojie.cn/thread-1830128-1-1.html">https://www.52pojie.cn/thread-1830128-1-1.html</a></p><p>所需工具:npm包asar</p><p>破解命令:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">asar e app.asar app</span><br><span class="line"></span><br><span class="line">asar p app app.asar</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>破解原理:</p><p>现成app.asar包</p><p>可选:在解压后的app文件夹下导航到该目录并修改index.js中的搜索框占位符</p><p>(\utools\resources\app\node_modules\configuration\index.js)</p><p>禁用更新方法:<a href="https://www.cnblogs.com/vbig/p/17078902.html">https://www.cnblogs.com/vbig/p/17078902.html</a></p>]]></content>
<summary type="html"><p>破解版本:utools 4.0.1</p></summary>
<category term="工具" scheme="https://www.ac1d.space/categories/%E5%B7%A5%E5%85%B7/"/>
<category term="生产力" scheme="https://www.ac1d.space/tags/%E7%94%9F%E4%BA%A7%E5%8A%9B/"/>
<category term="效率" scheme="https://www.ac1d.space/tags/%E6%95%88%E7%8E%87/"/>
<category term="破解" scheme="https://www.ac1d.space/tags/%E7%A0%B4%E8%A7%A3/"/>
</entry>
<entry>
<title>Chatgpt的最佳实践</title>
<link href="https://www.ac1d.space/2024/05/25/chatgptsolvissues/"/>
<id>https://www.ac1d.space/2024/05/25/chatgptsolvissues/</id>
<published>2024-05-25T13:14:33.000Z</published>
<updated>2024-09-27T15:03:58.225Z</updated>
<content type="html"><![CDATA[<p>题记:本文介绍如何使用Chatgpt解决实际问题</p><span id="more"></span><h3 id=""><a class="markdownIt-Anchor" href="#"></a> <a href="#header-3"></a>实践一</h3><p>Arc的Windows版本最近更新了一个侧栏迷你播放器,但是有一个致命问题:就是某些网站播放音频时,播放器无法正确获得歌曲标题,我发现它显示的标题来自相应标签自己的标题,而我是用的网页音乐播放器是am,am不会根据当前播放的歌曲改变标签标题,因此mini播放器也就无法显示正确的歌曲标题,但是打开网页控制台就可以找到歌曲的标题作者等信息所对应的元素属性名字,这意味着可以通过撰写一个js脚本,使得标签标题随着歌曲信息的元素属性更名,每一秒检查一次,并将其挂载在油猴扩展运行,于是我向ChatGPT描述了我的需求,并得到了一段可行的代码。<br /><a href="https://chatgpt.com/share/5d0af45f-3da2-480f-b534-ff2efff075dd">https://chatgpt.com/share/5d0af45f-3da2-480f-b534-ff2efff075dd</a></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line">// ==UserScript==</span><br><span class="line">// @name AMTITLE</span><br><span class="line">// @namespace http://tampermonkey.net/</span><br><span class="line">// @version 2024-05-25</span><br><span class="line">// @description try to take over the world!</span><br><span class="line">// @author You</span><br><span class="line">// @match https://music.apple.com/*</span><br><span class="line">// @icon https://www.google.com/s2/favicons?sz=64&domain=apple.com</span><br><span class="line">// @grant none</span><br><span class="line">// ==/UserScript==</span><br><span class="line"></span><br><span class="line">function updateTitle() {</span><br><span class="line"> var audioElement = document.getElementById('apple-music-player');</span><br><span class="line"></span><br><span class="line"> if (audioElement) {</span><br><span class="line"> var trackTitle = audioElement.title;</span><br><span class="line"></span><br><span class="line"> if (trackTitle) {</span><br><span class="line"> document.title = trackTitle;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">// 设置一个定时器定期检查音乐名称</span><br><span class="line">setInterval(updateTitle, 1000); // 每秒检查一次</span><br></pre></td></tr></table></figure><p>这以后am的标签名字可以动态的随歌曲名字变化,因此mini播放器也可以做到了。</p><h3 id="-2"><a class="markdownIt-Anchor" href="#-2"></a> <a href="#header-3"></a>实践二</h3><p>arc浏览器并不支持中文输入法,这就导致了不管是手动重命名标签或文件夹,还是搜索,都需要在中文部分后打一个空格,再回车才能好使,因此如果有一个脚本能够省去按空格这一步将会很方便,考虑到使用中文输入一整句话的时候并不是一次打完整句话,而是需要不断按空格,却只用按一次回车,因此把回车键绑定为“输入两次空格并延时n毫秒再输入空格”,就可以正常的在arc中使用中文输入法,两次空格是因为用输入法的过程中输入英文单词如果没有识别出来需要按回车来让它以字母的形式打出来而不是一段怪异且不成文的中文,这样子一个空格和一个回车则无法正确在中文部分后面添加到空格,则无法正确搜索。</p><p>要实现这个脚本需要用到autohotkey,因为ahk v1已经被废弃,所以采用了v2,向ChatGPT描述了需求后,得到了想要的脚本代码,运作无误,很好,但是有一个问题就是这个脚本是全局的,意味着使用其他软件的时候同样奏效,这就很麻烦,所以添加了一个要求,“只有聚焦到特定窗口的时候才会生效”,得到相应代码后,运作无误,问题解决。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">#Requires AutoHotkey v2.0</span><br><span class="line"></span><br><span class="line">; 设定窗口标题</span><br><span class="line">TargetWindowTitle := "Arc"</span><br><span class="line"></span><br><span class="line">; 监听回车键,只在指定窗口生效</span><br><span class="line">#HotIf WinActive(TargetWindowTitle)</span><br><span class="line"></span><br><span class="line">Enter:: {</span><br><span class="line"> ; 发送一个空格</span><br><span class="line"> Send(" ")</span><br><span class="line"> ; 等待300毫秒</span><br><span class="line"> Sleep(150)</span><br><span class="line"> ; 发送回车</span><br><span class="line"> Send("{Enter}")</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">#HotIf</span><br></pre></td></tr></table></figure><h3 id="-3"><a class="markdownIt-Anchor" href="#-3"></a> <a href="#header-3"></a>总结</h3><p>以上两个ChatGPT实践帮助我省去了深入了解js和ahk语法的功夫,因此我有更多的余裕专注于其他事情,我只需要想办法搞清楚我的需求,并清楚的表述出来一切问题就能迎刃而解,综上所述使用chatgpt解决实际问题最重要的还是分析清楚问题的关键,才有可能得到理想答案,事半功倍。</p>]]></content>
<summary type="html"><p>题记:本文介绍如何使用Chatgpt解决实际问题</p></summary>
<category term="笔记" scheme="https://www.ac1d.space/categories/%E7%AC%94%E8%AE%B0/"/>
<category term="效率" scheme="https://www.ac1d.space/tags/%E6%95%88%E7%8E%87/"/>
<category term="工具" scheme="https://www.ac1d.space/tags/%E5%B7%A5%E5%85%B7/"/>
</entry>
<entry>
<title>用DNSBench找出解析域名速度最快的DNS</title>
<link href="https://www.ac1d.space/2024/05/24/dnsbench/"/>
<id>https://www.ac1d.space/2024/05/24/dnsbench/</id>
<published>2024-05-24T13:14:33.000Z</published>
<updated>2024-10-08T14:39:02.399Z</updated>
<content type="html"><![CDATA[<p>省流:最后还是没能裸连Github •ᴗ•💧</p><span id="more"></span><p>不挂t总是上不去Github,要不就是加载得巨慢无比,一个延迟点的公共DNS或许可以解决问题,遂在网络上搜索相关信息,找到一个叫做<strong>DNSBench</strong>的软件,内含许多公共DNS服务器的ip,而且支持自己添加DNS,只需一键就可开始测试不同DNS的解析速度,并对比:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">223.5.5.5 alibaba</span><br><span class="line">119.29.29.29 tencent</span><br></pre></td></tr></table></figure><p><img src="https://www.ac1d.space/img/dns%20benchmark.jpg" alt="dns benchmark" /></p><p>得出腾讯和阿里的公共DNS解析速度较快,于是把阿里DNS设置成首选DNS,腾讯的设为备用。</p>]]></content>
<summary type="html"><p>省流:最后还是没能裸连Github •ᴗ•💧</p></summary>
<category term="工具" scheme="https://www.ac1d.space/categories/%E5%B7%A5%E5%85%B7/"/>
<category term="生产力" scheme="https://www.ac1d.space/tags/%E7%94%9F%E4%BA%A7%E5%8A%9B/"/>
<category term="效率" scheme="https://www.ac1d.space/tags/%E6%95%88%E7%8E%87/"/>
<category term="dns" scheme="https://www.ac1d.space/tags/dns/"/>
</entry>
<entry>
<title>Git见解和常用指令</title>
<link href="https://www.ac1d.space/2024/05/23/git_command/"/>
<id>https://www.ac1d.space/2024/05/23/git_command/</id>
<published>2024-05-23T13:14:33.000Z</published>
<updated>2024-06-06T15:12:52.000Z</updated>
<content type="html"><![CDATA[<blockquote><p>Distributed-is-the-new-centralized</p></blockquote><span id="more"></span><p>在阅读git的文档的过程中看到这句话,感觉非常精髓。</p><p>是说版本控制分为本地版本控制系统、集中化(Centralized)版本控制系统以及分布式(Distributed)版本控制系统,其中:</p><ol><li><p>本地版本控制中,最流行的一种是RCS,其工作原理是在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容;</p></li><li><p>为了让在不同系统上的开发者协同工作,集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS)应运而生,比较具有代表性的比如CVS、Subversion、Perforce等,都有一个<strong>单一</strong>的<strong>集中管理</strong>的服务器,保存所有文件的修订版本,协同工作的机器都连接到此地,拉取新文件或是推送更新;</p></li></ol><p>但是如果中心服务器宕机或磁盘损坏,CVCS必然会出现一定的问题,本地版本控制系统也存在类似的问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险;</p><ol start="3"><li>于是分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。 在这类系统中,像 Git、Mercurial 以及 Darcs 等,客户端并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史记录。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。</li></ol><p>在分布式版本控制系统中,每一个客户端都相当于CVCS中的中心服务器,这样最大程度的确保了历史版本更新文件的安全性,另外,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。</p><h3 id=""><a class="markdownIt-Anchor" href="#"></a> <a href="#header-3"></a>Git的运作逻辑</h3><p>每次提交更新或保存项目状态时,Git都会给当前所有文件创建一个快照,并保存快照的索引,如果有未作修改的文件,出于效率,Git不会重新存储此文件,而只保留一个链接指向之前存储的此文件;</p><p>由于Git在客户端上将代码仓库和完整的历史记录都镜像了下来,因此几乎一切操作都可以在本地离线进行,因此速度相当快;</p><p>Git 中所有的数据在存储前都计算校验和,然后以校验和来引用。 这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。 这个功能建构在 Git 底层,若在传送过程中丢失信息或损坏文件,Git 就能发现。</p><p>Git 用以计算校验和的机制叫做 SHA-1 散列(hash,哈希)。 这是一个由 40 个十六进制字符(0-9 和 a-f)组成的字符串,基于 Git 中文件的内容或目录结构计算出来。 SHA-1 哈希看起来是这样:</p><blockquote><p>24b9da6552252987aa493b52f8696cd6d3b00373</p></blockquote><p>实际上,Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。</p><p>Git一般只添加数据,已经提交到快照的文件,难以被删除,因此说Git几乎不会执行任何可能导致文件不可恢复的操作;</p><p>Git的文件有三种状态:</p><ul><li>已提交(committed),表示数据已经安全地保存在本地数据库中。</li><li>已修改(modified),表示修改了文件,但还没保存到数据库中。</li><li>已暂存(staged),表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。</li></ul><p>Git维护三颗“树”:</p><ul><li>工作目录,持有实际文件,是放在磁盘上直接被修改的工作区。</li><li>暂存区(Index/stage,又称索引),保存着下次将要提交的文件列表信息。</li><li>.git directory(repo),指向最后一次提交(commit)的结果,Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,复制的就是这里的数据。</li></ul><p>一次修改后,暂存、提交并推送到远程仓库所涉及的指令如下所示:</p><h3 id="-2"><a class="markdownIt-Anchor" href="#-2"></a> <a href="#header-3"></a>Git常用命令</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git add --all //将改动的文件全部放入暂存区</span><br><span class="line">git commit -m "fixsinfo" //提交改动到Git仓库目录,并填写改动信息</span><br><span class="line">git push origin main //将提交的改动上传到远程仓库中</span><br></pre></td></tr></table></figure><blockquote><p>初始化一个git仓库</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git init</span><br></pre></td></tr></table></figure><blockquote><p>创建一个新文件,并填写一些内容</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">echo [Random contents] > [filename]</span><br></pre></td></tr></table></figure><blockquote><p>将工作区中的指定文件添加到暂存区</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git add [filename]</span><br></pre></td></tr></table></figure><blockquote><p>将暂存区的文件提交到版本控制中并附描述</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git commit -m "Change Description"</span><br></pre></td></tr></table></figure><blockquote><p>查看文件状态</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git status</span><br></pre></td></tr></table></figure><blockquote><p>更为紧凑的状态输出</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git status -s/--short</span><br></pre></td></tr></table></figure><h1 id="a-新添加到暂存区的文件"><a class="markdownIt-Anchor" href="#a-新添加到暂存区的文件"></a> A 新添加到暂存区的文件</h1><h1 id="m-修改过的文件"><a class="markdownIt-Anchor" href="#m-修改过的文件"></a> M 修改过的文件</h1><h1 id="输出有两栏左栏表示暂存区右栏表示工作区"><a class="markdownIt-Anchor" href="#输出有两栏左栏表示暂存区右栏表示工作区"></a> 输出有两栏,左栏表示暂存区,右栏表示工作区</h1><blockquote><p>查看未暂存的已修改文件的差异</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git diff</span><br></pre></td></tr></table></figure><blockquote><p>查看已经暂存的变化</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git diff --cached/--staged</span><br></pre></td></tr></table></figure><blockquote><p>跳过暂存步骤直接提交</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git commit -a -m "Change Description"</span><br></pre></td></tr></table></figure><blockquote><p>从跟踪文件清单和工作仓库中移除某个文件</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git rm [filename]</span><br></pre></td></tr></table></figure><blockquote><p>从暂存区和工作仓库移除某个文件</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git rm -f [filename]</span><br></pre></td></tr></table></figure><blockquote><p>从暂存区移除,在工作仓库中保留某个文件</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git rm --cached [filename]</span><br></pre></td></tr></table></figure><blockquote><p>重命名文件</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git mv [name1] [name2]</span><br></pre></td></tr></table></figure><h3 id="-3"><a class="markdownIt-Anchor" href="#-3"></a> <a href="#header-3"></a>忽略文件</h3><p>一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件的模式。</p>]]></content>
<summary type="html"><blockquote>
<p>Distributed-is-the-new-centralized</p>
</blockquote></summary>
<category term="笔记" scheme="https://www.ac1d.space/categories/%E7%AC%94%E8%AE%B0/"/>
<category term="技术" scheme="https://www.ac1d.space/tags/%E6%8A%80%E6%9C%AF/"/>
<category term="Git" scheme="https://www.ac1d.space/tags/git/"/>
<category term="wiki" scheme="https://www.ac1d.space/tags/wiki/"/>
</entry>
</feed>