-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.xml
More file actions
560 lines (497 loc) · 44.4 KB
/
index.xml
File metadata and controls
560 lines (497 loc) · 44.4 KB
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
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>简眸。</title>
<link>https://war408705279.github.io/</link>
<description>Recent content on 简眸。</description>
<generator>Hugo -- gohugo.io</generator>
<copyright><a href="https://github.com/war408705279/" target="_blank" rel="noopener">404 Not Found</a></copyright>
<lastBuildDate>Thu, 17 Aug 2023 17:26:47 +0800</lastBuildDate>
<atom:link href="https://war408705279.github.io/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>游记 · 苏州</title>
<link>https://war408705279.github.io/travel/su-zhou/</link>
<pubDate>Thu, 17 Aug 2023 17:26:47 +0800</pubDate>
<guid>https://war408705279.github.io/travel/su-zhou/</guid>
<description>壹 上海 -&gt; 苏州
端午当天上午十点从上海出发
开往苏州
不知道为什么
路上堵到飞起😂
本来一小时四十分钟的车程
硬是开了快四个小时
寒山寺 贰 天平山 吴中第一山
叁 苏州 -&gt; 上海
又下雨了
溜了溜了</description>
</item>
<item>
<title>Git 规范</title>
<link>https://war408705279.github.io/blogs/git-rules/</link>
<pubDate>Thu, 25 May 2023 13:12:26 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/git-rules/</guid>
<description>协作流程 使用修改版的 git-flow 流程 作为 Git 库的协作流程
需要修改的原因是企业场景下任何对中心库的修改必须有第二个人 review 并审批通过,在公司内则体现为任何变更都以提 PR 形式进行,而原版 git-flow 没有考虑这一点(原版的使用方法为本地操作后直接 push)
与原版 git-flow 流程的差异如下
feature 分支的命名应当符合 feature/xxx 的格式。feature 分支仅用于在中心库暂存(stage)技术上非平滑迁移的功能,主要是必须变更表结构的大功能一类。这类分支往往开发周期也较长,且不能 block 日常小修小补(往往业务上也不会允许发现问题不马上修复) 如涉及中心库的分支增减、含义变化等变更操作,应当在团队内同步 个人库的分支命名不作强制要求,但建议使用或体现 issue 号 不开 release/xxx 分支,代之以直接提发版 PR 每次发版后不需要马上打 tag 并做 master -&gt; develop 的合并,主要原因是累(原版自动化的动作,在公司场景下要手动操作)。但仍然建议 tag 及时或隔一阵批量打,建议时常做 master -&gt; develop 的操作 HOTFIX 的场景不受影响,仍然必须 master -&gt; develop 版本 tag 应当打到发版 PR 的合并提交上 master -&gt; develop 的操作也采用提 PR 的形式进行 额外说明
禁止在中心库直接进行研发工作。请在本人的 fork 进行工作并通过 PR 与中心库交互。建议单开分支,不要直接使用默认分支(如 develop) 除特殊场合外(开 feature 分支、修复他人误操作等),禁止直接向中心库做 push 操作 在美国、欧洲等地,由于 BLM 运动等政治正确原因,现已存在将 master 分支重命名为 main 的实践。由于中国技术人员一般理解的 master 并不含种族歧视意味,且该变更对研发实质上无影响,故不跟进 Pull Request 一个 Pull Request(下称 PR)一般应当只对应一个 issue</description>
</item>
<item>
<title>游记 · 广州</title>
<link>https://war408705279.github.io/travel/guang-zhou/</link>
<pubDate>Fri, 28 Apr 2023 14:27:04 +0800</pubDate>
<guid>https://war408705279.github.io/travel/guang-zhou/</guid>
<description>壹 上海 -&gt; 广州
飞机上 嘉禾望岗 流花湖公园 贰 越秀公园 五羊雕像
广州博物馆
沙面岛 人民桥 大佛寺 叁 南越王博物院 丝缕玉衣
珠江新城 广州塔 「小蛮腰」
海心桥 肆 白云山 白云山 · 摩星岭 伍 广州 -&gt; 上海
石室圣心大教堂 南越王博物院 王宫展区</description>
</item>
<item>
<title>游记 · 厦门</title>
<link>https://war408705279.github.io/travel/xia-men/</link>
<pubDate>Mon, 23 Jan 2023 15:37:00 +0800</pubDate>
<guid>https://war408705279.github.io/travel/xia-men/</guid>
<description>壹 上海 -&gt; 厦门
浦东国际机场 T1 航站楼 飞机上 中山路步行街 贰 南普陀寺 -&gt; 沙坡尾 -&gt; 鸿山寺 -&gt; 曾厝垵
南普陀寺 沙坡尾 鸿山寺 曾厝垵 曾厝垵人太多
感觉是个古镇集合体
就没拍了
叁 鼓浪屿
内厝澳 菽庄花园 花 日光岩 皓月园 夕阳 肆 太清宫(曾安)-&gt; 山海健康步道
山海健康步道(林海段) 伍 厦门 -&gt; 上海
与你相遇 · 好幸运</description>
</item>
<item>
<title>游记 · 宁波</title>
<link>https://war408705279.github.io/travel/ning-bo/</link>
<pubDate>Sat, 10 Sep 2022 15:04:23 +0800</pubDate>
<guid>https://war408705279.github.io/travel/ning-bo/</guid>
<description>2022 年中秋节
上海自驾到宁波
经过杭州湾跨海大桥
到了宁波最好可以在当地做一次核酸
不然真的很麻烦
不仅要扫宁波的场所码,出示上海核酸记录,还要签各种保证书
第一天 宁波美术馆 十五的月亮十六圆 第二天 Github 主题酒店 月湖公园 天一阁博物院 宁波鼓楼 1844 宁波老外滩 天主教堂 第三天 原本想去东钱湖(小普陀)转转
奈何台风烟花登陆宁波
无奈只能取消行程
等到下次雨过天晴的时候
咱们再相聚宁波东钱湖吧~
是时候要回家了~</description>
</item>
<item>
<title>游记 · 杭州</title>
<link>https://war408705279.github.io/travel/hang-zhou/</link>
<pubDate>Mon, 29 Aug 2022 14:14:57 +0800</pubDate>
<guid>https://war408705279.github.io/travel/hang-zhou/</guid>
<description>自驾游:上海 -&gt; 杭州 -&gt; 上海
程总结婚了
去杭州恰了一顿喜酒
借此机会去杭州转了转
第一天 上海 -&gt; 浙江省博物馆
浙江省博物馆 浙江省镇馆之宝,国家宝藏 - 花轿
正月十八,黄道吉日,高粱抬。抬上红装,一尺一恨,匆匆载 -- 葛东琪《囍》
第二天 法喜寺 -&gt; 灵隐寺 -&gt; 上海
法喜寺 法喜寺门口的路牌写着我在法喜等你
法喜寺 · 大雄宝殿
大红灯笼高高挂
在高处俯瞰法喜
灵隐寺 灵隐寺门口的山上雕刻着万佛
灵隐寺 · 大雄宝殿
灵隐寺 · 慈航普度
灵隐寺 · 藏经楼
灵隐寺 · 殿顶 · 角
灵隐寺 · 竹林 · 殿
后记 点三柱清香,先拜过祖师祠堂。我这叫江湖,你们那只能算池塘 -- 姜云升 &amp;&amp; 花旦《云霄》</description>
</item>
<item>
<title>游记 · 莫干山</title>
<link>https://war408705279.github.io/travel/mo-gan-shan/</link>
<pubDate>Sat, 06 Aug 2022 15:17:18 +0800</pubDate>
<guid>https://war408705279.github.io/travel/mo-gan-shan/</guid>
<description>自驾游:上海 -&gt; 大斗坞水库 -&gt; 莫干山 -&gt; 庾村 -&gt; 上海
生活当中总会有些遗憾
就好比庾村 · 白云美术馆,本想打卡,但是因为疫情没有开放
第一天 上海 -&gt; 大斗坞水库 -&gt; 莫干山
大斗坞水库 上海 -&gt; 大斗坞水库
准备好 48 小时内核酸阴性报告(下高速的时候有人会查)
从上海直接驱车到大斗坞水库(距离莫干山景区不远)
其实大斗坞水库原本只是村子旁边山里一个普普通通的水库,后来突然变成了网红景点
莫干山 · 大坑景区 · 日落 大斗坞水库 -&gt; 莫干山
直接从大斗坞水库开车上莫干山
如果订了山上的民宿或者酒店,一定要提前向民宿或者酒店报备上山的车牌号,否则是没有办法直接开车上山的 如果不在山上住的话,直接到莫干山脚下的游客集散中心,然后统一坐旅游大巴上山 8 月份正是莫干山旺季,8:00 - 17:00 期间不允许开车前往山上的各个景点,因此千万不要相信导航,跟着工作人员的指示开车 &amp;&amp; 停车就好
这次入住的莫干山 · 枫鹃谷 · 忘山别墅
如果想在莫干山上看日落的话,推荐大坑景区 · 千峰夕照
其实莫干山上的大部分景点都是可以步行到达的
需要注意的是导航的路线中有很多小路,跟着导航走的时候要多注意,一不小心就会走错
第二天 莫干山 -&gt; 庾村 -&gt; 上海
莫干山 · 旭光台 · 日出 早上 4:20 起床(早起毁一天)</description>
</item>
<item>
<title>JS 宏任务和微任务</title>
<link>https://war408705279.github.io/blogs/js-macro-micro-task/</link>
<pubDate>Sun, 31 Jul 2022 15:02:54 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/js-macro-micro-task/</guid>
<description>事件循环 首先说一下事件循环
浏览器中 JavaScript 的执行流程和 Node.js 中的流程都是基于事件循环的
理解事件循环的工作方式对于代码优化很重要,有时对于正确的架构也很重要
事件循环的概念非常简单。它是一个在 JavaScript 引擎等待任务,执行任务和进入休眠状态等待更多任务这几个状态之间转换的无限循环
引擎的一般算法:
当有任务时:从最先进入的任务开始执行 休眠直到出现任务,然后转到第 1 步 一个任务到来时,引擎可能正处于繁忙状态,那么这个任务就会被排入队列。多个任务组成了一个队列,即所谓的宏任务队列
宏任务 &amp;&amp; 微任务 除了上述所讲的宏任务外,还有微任务
微任务仅来自于我们的代码。它们通常是由 promise 创建的:对 .then/catch/finally 处理程序的执行会成为微任务。微任务也被用于 await 的幕后,因为它是 promise 处理的另一种形式
还有一个特殊的函数 queueMicrotask(func),它对 func 进行排队,以在微任务队列中执行
每个宏任务之后,引擎会立即执行微任务队列中的所有任务,然后再执行其他的宏任务,或渲染,或进行其他任何操作
看下面的例子
setTimeout(() =&gt; alert(&#39;timeout&#39;)); Promise.resolve().then(() =&gt; alert(&#39;promise&#39;)); alert(&#39;code&#39;); 上面代码的执行顺序为:
code 首先显示,因为它是常规的同步调用 promise 第二个出现,因为 then 会通过微任务队列,并在当前代码之后执行 timeout 最后显示,因为它是一个宏任务 微任务会在执行任何其他事件处理,或渲染,或执行任何其他宏任务之前完成
比较常见的面试题 下面这段代码的输出顺序是什么
setTimeout(function () { console.log(&#39;1&#39;) new Promise((resolve) =&gt; { console.log(&#39;2&#39;) resolve() }).</description>
</item>
<item>
<title>突然觉得自己老了...</title>
<link>https://war408705279.github.io/f__k/getting-old/</link>
<pubDate>Tue, 26 Jul 2022 13:16:59 +0800</pubDate>
<guid>https://war408705279.github.io/f__k/getting-old/</guid>
<description>一直觉得 30 岁没有什么
直到有一天
我开玩笑的喊了同事一句姐
她和我说:00 后喊我姐,我也就接受了,你一个 30 岁的老男人?!!喊我姐?正视自己的年龄吧
那一刻
我突然觉得自己老了...</description>
</item>
<item>
<title>随便写写</title>
<link>https://war408705279.github.io/f__k/just-write-about/</link>
<pubDate>Sun, 18 Jul 2021 20:22:44 +0800</pubDate>
<guid>https://war408705279.github.io/f__k/just-write-about/</guid>
<description>因为工作上的一些事情吧
6 月份我的状态确实不太好
其实后面状态一直没有调整过来也不仅仅是因为工作上面的事情了,而是我在这个团队没有一丝一毫被关心的感觉
其实吧,我一直觉得自己内心是一个很孤独的人
当我心情低落的时候,我也希望能有人和我说说话,哪怕是他(她)完全 get 不到我的点
但是那段时间基本上没人愿意主动找我聊天
反而我还在关心别人,现在想想也是挺讽刺的,一个需要被关心的人竟然还在关心别人
LeiXin 大佬说,是不是你没有表现出来啊?也许在别人看来你没什么问题?
那个月我每天坐在工位上,戴着耳机一句话也不说,感觉以前我一天说的话都比我那一个月说的话要多。如果这个都算是没有表现出来,那我真的不知道还要怎么表现
LeiXin 大佬又说,是不是因为性别问题啊?也许在别人看来你很坚强,不需要什么安慰?
现在想想感觉挺有道理的,其实那段时间团队的另外一个妹子状态也不好,而且她表现的很明显,大家确实都在关心她
和 LeiXin 大佬聊天的时候,有两次我差点儿忍不住就哭了
确实,如果我不说,或者我没有很明显的表现出来,大家根本就没有在意我
也许是我把大家之间的情感看的太重了吧
又或者是我最近太敏感了?
之前和冰姐聊天,她说别人没有义务要关心你,如果别人关心你了,那只能算是一种馈赠,并不能说明什么
我觉得她说的很有道理,但是我真的放不下和大家之间的情感
也许大家都没有错,这完全是我个人的问题
说真的,我真的不知道后面要怎么去做,不知道后面的路要怎么去走,甚至不知道自己还能撑多久
经历了这么多,我感觉很难回去了,甚至悲观一点,已经回不去了
不过凡事往好处想嘛,没准儿哪天我这个害群之马离职了,大家又能回到之前的状态了
好不容易经过去年和大家这么熟了,没想到今年变成这个样子
又或者是,只有我觉得自己和大家很熟?我不知道</description>
</item>
<item>
<title>What I Do Not Deserve</title>
<link>https://war408705279.github.io/f__k/what-i-do-not-deserve/</link>
<pubDate>Thu, 15 Jul 2021 08:40:59 +0800</pubDate>
<guid>https://war408705279.github.io/f__k/what-i-do-not-deserve/</guid>
<description>我很想融入你们
但是我不配
So don't apologize
不必多说,不必道歉
I'm losing what I don't deserve
我失去的只是我不配得到的</description>
</item>
<item>
<title>我很好</title>
<link>https://war408705279.github.io/f__k/i-am-fine/</link>
<pubDate>Tue, 13 Jul 2021 08:13:38 +0800</pubDate>
<guid>https://war408705279.github.io/f__k/i-am-fine/</guid>
<description>曾几何时
我以为只要经常关心别人
那么在我心情低落的时候
也会收到别人同样的关心
但
事实好像并不是这样啊
可能是我想太多
可能在别人看来我强大到不需要被关心
也可能是我根本就不配
既然是这样,那我还在期待什么呢?
明明知道别人不会关心你
为什么还要把自己失落、无助的一面表现出来呢?
大家都挺忙的,都有自己的生活,为什么要来关心你呢?
想开了就好啊,没有人会关心你的,千万不要有什么期待
你的失落、无助也许在别人眼里看来就是矫情
努力做好自己的事情
自己关心好自己
我很好
也希望你们一切都好</description>
</item>
<item>
<title>柒牛地狱</title>
<link>https://war408705279.github.io/f__k/qn-hell/</link>
<pubDate>Sun, 11 Jul 2021 19:27:44 +0800</pubDate>
<guid>https://war408705279.github.io/f__k/qn-hell/</guid>
<description>柒牛鬼之多,一锅炖不下
在中国传统神话中,地府中转站,而地狱才是监狱
所有人都会去到地府,但并不是所有人都会去到地狱
生前没犯什么大事儿的人去地府报到之后就直接投胎了,只有那些生前做了很多不光彩事情的人才会去地狱
我呢,也没有什么大志向,不希望死后能升天当个神仙什么的,就希望能在地府里面谋个差使
真要到了那天下去一看,好家伙,柒牛的大部分中高层都在下面
不知道的还以为柒牛搁下面开年会
一事到了下面和一十打招呼:“来了?”,一十回答:“呦,你也来了啊,我来这儿好久了。”
我在后面赶他俩:“别聊了,时间到了,下油锅了,老许和超哥搁里面等你俩呢。”
一事听罢扭头就跑,我在后边喊:“一事,跑啥啊,都来这儿了还跑啥啊?跑得掉么?”
老许和超哥在油锅里听到动静,探出头冲一事喊:“别跑了,跑不掉的,又不是没试过。锅里挺暖和,快点儿来吧,等你俩好久了。”</description>
</item>
<item>
<title>写在前面</title>
<link>https://war408705279.github.io/f__k/preface/</link>
<pubDate>Sun, 11 Jul 2021 18:57:37 +0800</pubDate>
<guid>https://war408705279.github.io/f__k/preface/</guid>
<description>有吐槽
有焦虑
有迷茫
甚至有阴暗
慎看!!!</description>
</item>
<item>
<title>成名</title>
<link>https://war408705279.github.io/blogs/become-famous/</link>
<pubDate>Sat, 10 Jul 2021 20:51:04 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/become-famous/</guid>
<description>我知道不少人们期待我的落魄
我知道他们一直盯着我的过错
想看我输 看我眼泪还有懦弱
想看我倒地不起吐我几口唾沫
我看到我的身后盯着我的人群
喜欢或恨 不一样的神情
我知道这可能就是所谓的成名
我知道必须往前一步也不能停
我知道不少人们期待我的落魄
我知道他们一直盯着我的过错
想看我输 看我眼泪还有懦弱
想看我倒地不起吐我几口唾沫
我看到我的身后盯着我的人群
喜欢或恨 不一样的神情
我知道这可能就是所谓的成名
我知道必须往前一步也不能停
一、我知道不管我怎么去表现 他们还是视而不见觉得我很讨厌 二、偏见是最锋利的宝剑 你用事实证明他们还是说你狡辩 三、我才不管你是怎么看的 我说过那些话语不可能那么算了 四、Hater 全部 给我赶紧散吧 睁开你的眼睛看我跪着还是站着 这几年我把一切都放弃
友情爱情他们从我身边溜走
不达到目标怎么可能松手
现在不愿失去那么未来怎么拥有
姜云升冲 把泪吞下
我会做到 他们眼都睁大
Underground Rapper 怎么可能不讲真话
管你能不能播 put your motherfucker hands up
也曾有爱的 没珍惜过
被人喷击过 那时感觉真低落
现在无所谓了 面对攻击跟逼迫
年轻又成功 记住我才 24
我没有炫富 正如你们见到的
从做得到 到今天已经做到了
被人们羡慕 正如你们见到的
靠我自己到今天 这才是我炫耀的
我的脑海有个宏大计划
一起从那去吧
当个童话剧家 为了家
为了爱 为了我的麦</description>
</item>
<item>
<title>Nobody Can Save Me</title>
<link>https://war408705279.github.io/blogs/nobody-can-save-me/</link>
<pubDate>Wed, 09 Jun 2021 12:22:32 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/nobody-can-save-me/</guid>
<description>I’m dancing with my demons
I’m hanging off the edge
Storm clouds gather beneath me
Waves break above my head
Headfirst hallucination
I wanna fall wide awake now
You tell me it’s alright
Tell me I’m forgiven, tonight
But nobody can save me now
I’m holding up a light
Chasing out the darkness inside
Cause nobody can save me
Stare into this illusion
For answers yet to come
I chose a false solution</description>
</item>
<item>
<title>React + Webpack 构建自己的项目</title>
<link>https://war408705279.github.io/blogs/react-webpack/</link>
<pubDate>Sat, 27 Apr 2019 00:00:00 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/react-webpack/</guid>
<description>React 已经成为当下最热门的前端框架之一,其虚拟 DOM 和组件化开发让前端开发更加丰富灵活,而 Webpack 凭借它异步加载和可分离打包等优秀的特性,更为 React 的开发提供了便利,其优秀的特性不再赘述。
本文将对 React、Babel、Webpack 的环境搭建进行阐述,指出搭建过程中存在的一些坑,并提出相应的解决方法。
跟随本文档进行操作,最后你将得到一个属于自己的基于 React+Webpack 的框架项目。
新建 React 项目 如上图所示即为新建的项目目录结构。
.idea 文件夹保存的是 IDEA 编译器的一些设置文件;asset 文件夹保存的是压缩之后的文件;node_modules 文件夹存放的是使用 npm 安装 react、babel 及 webpack 后生成的相应文件。
.babelrc 文件是 babel 的配置文件;package.json 文件是记录 npm 安装及开发依赖信息的文件;test.html 、 test.js 及 test.css 文件是该项目的测试文件,分别保存 html 信息、js 代码以及样式信息;webpack.config.js 文件是保存 webpack 配置信息的文件。
由于 react 代码需要 JSX 来写,因此我们要修改编译器相应的配置(以下以 IDEA 15.0.2 为例)。如上图所示,修改相应的配置后,使用 JSX 编写代码就不会出现错误提示。
准备工作 安装 React、Babel 及 Webpack 需要使用 npm,因此需要安装 Node.js(建议安装最新版本的 Node.js,目前更新到 V8.1.0),也可以使用 cnpm 进行安装,使用 cnpm 安装速度更快,也更加稳定。</description>
</item>
<item>
<title>Docker 常用命令</title>
<link>https://war408705279.github.io/blogs/docker-command/</link>
<pubDate>Wed, 24 Apr 2019 00:00:00 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/docker-command/</guid>
<description>归纳了一些 docker 的常用命令,持续更新
基础类 # 查看 docker 版本 docker version # 显示 docker 系统的信息 docker info # 日志信息 docker logs # 故障检查 service docker status # 启动 / 关闭 docker sudo service docker start / stop 日志类 # 查看容器日志 docker logs -f &lt;容器名 or ID&gt; docker daemon 日志位置
也称之为 引擎日志 根据系统不同各不相同
CoreOS - journalctl -u docker.service Ubuntu(16.04) - journalctl -u docker.service Ubuntu(14.04) - /var/log/upstart/docker.log Boot2Docker - /var/log/docker.log Debian GNU/Linux 8 - journalctl -u docker.</description>
</item>
<item>
<title>通过 ip 在 docker 容器外访问 docker 内的 web 服务</title>
<link>https://war408705279.github.io/blogs/visit-docker-web-via-ip/</link>
<pubDate>Wed, 24 Apr 2019 00:00:00 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/visit-docker-web-via-ip/</guid>
<description>需求:比如我在 docker 里面起了一个 nginx 服务,同时在 docker 里面起了一个前端服务,如果我想在 docker 外访问这个前端页面,以下就是实现的方法
在使用 Dockerfile 构建镜像之前,先新建一个 html 页面(index.html)和一个 nginx 配置文件(localhost.conf) index.html 文件里的内容如下:
&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;欢迎访问 Docker&lt;/title&gt; &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width&#34;&gt; &lt;meta charset=&#34;utf-8&#34;&gt; &lt;meta http-equiv=&#34;X-UA-Compatible&#34; content=&#34;IE=edge&#34;&gt; &lt;style type=&#34;text/css&#34;&gt; html, body { width: 100%; height: 100%; } .title { text-align: center; } &lt;/style&gt; &lt;/head&gt; &lt;body&gt; &lt;h3 class=&#34;title&#34;&gt;恭喜你成功通过 IP 访问到 Docker 里的内容&lt;/h3&gt; &lt;/body&gt; &lt;/html&gt; localhost.conf 文件里的内容如下:
server { # nginx 里面监听 9000 端口,需要注意的是,由于 docker 是起在本地的,因此这个端口号要避免和已有的端口号冲突 listen 9000; # server_name 为 localhost server_name localhost; location / { # 访问目录为 /web,这个目录也可以换成别的 root /web; # 访问主页为 index.</description>
</item>
<item>
<title>React component 生命周期</title>
<link>https://war408705279.github.io/blogs/react-component-life/</link>
<pubDate>Tue, 23 Apr 2019 00:00:00 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/react-component-life/</guid>
<description>React Native 中的 component 和 Android 中的 activity、fragment 等一样,存在声明周期,下面先给出 component 的生命周期图
##### getDefaultProps object getDefaultProps() 执行过一次后,被创建的类会有缓存,映射的值会存在 this.props,前提是这个 prop 不是父组件指定的,这个方法在对象被创建之前执行,因此不能在方法内调用 this.props,另外,注意任何 getDefaultProps() 返回的对象在实例中共享,不是复制
##### getInitialState object getInitialState() 控件加载之前执行,返回值会被用于 state 的初始化值
##### componentWillMount(重要) void componentWillMount() 执行一次,在初始化 render 之前执行,如果在这个方法内调用 setState,render() 知道 state 发生变化,并且执行一次
##### render(重要) ReactElement render() render 的时候 render() 会被调用
调用 render() 方法时,首先检查 this.props 和 this.state 返回一个子元素,子元素可以是 DOM 组件或者其他自定义复合控件的虚拟实现
如果不想渲染可以返回 null 或者 false,这种场景下,react 渲染一个 &lt;noscript&gt; 标签,当返回 null 或者 false,ReactDOM.</description>
</item>
<item>
<title>Makefile 相关知识</title>
<link>https://war408705279.github.io/blogs/make-file/</link>
<pubDate>Mon, 22 Apr 2019 00:00:00 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/make-file/</guid>
<description>一些基本概念 代码变成可执行文件,叫做编译。而先编译这个,还是先编译那个(编译顺序的安排),叫做构建
Make 是最常用的构建工具,诞生于 1977 年,主要用于 C 语言的项目。但是实际上 ,任何只要某个文件有变化,就要重新构建的项目,都可以用 Make 构建
make 命令在调用的时候格式为:
make 命令 在执行 make 命令的时候,程序会在当前目录下寻找名为 Makefile 或者 makefile 的文件(注:不带后缀名)。然后会查找文件中是否包含该命令,有就会进行执行。如果只写了 make,没有跟后面的命令,则会默认执行 Makefile 中的第一条命令(如果有的话)
Makefile 的基本形式 Makefile 由一系列规则(rules)组成,每条规则的形式如下所示:
&lt;target&gt; : &lt;prerequisites&gt; [tab] &lt;commands&gt; 上面第一行冒号前面的部分,叫做&rdquo;目标&rdquo;(target) 冒号后面的部分叫做&rdquo;前置条件&rdquo;(prerequisites) 第二行必须由一个 tab 键起首,后面跟着&rdquo;命令&rdquo;(commands) &ldquo;目标&rdquo;是必需的,不可省略;&rdquo;前置条件&rdquo;和&rdquo;命令&rdquo;都是可选的,但是两者之中必须至少存在一个 目标(target) 一个目标(target)就构成一条规则。目标通常是文件名,指明 Make 命令所要构建的对象。目标可以是一个文件名,也可以是多个文件名,之间用空格分隔
除了文件名,目标还可以是某个操作的名字,这称为&rdquo;伪目标&rdquo;(phony target),例如:
clean: rm *.* 上面代码的目标是 clean,它不是文件名,而是一个操作的名字,属于&rdquo;伪目标 &ldquo;,作用是删除所有文件
前置条件 前置条件通常是一组文件名,之间用空格分隔。它指定了&rdquo;目标&rdquo;是否重新构建的判断标准:只要有一个前置文件不存在,或者有过更新(前置文件的 last-modification 时间戳比目标的时间戳新),&rdquo;目标&rdquo;就需要重新构建
命令 命令(commands)表示如何更新目标文件,由一行或多行的 Shell 命令组成。它是构建&rdquo;目标&rdquo;的具体指令,它的运行结果通常就是生成目标文件
每行命令之前必须有一个 tab 键。如果想用其他键,可以用内置变量 .RECIPEPREFIX 声明,例如:</description>
</item>
<item>
<title>学习网站 + 文档</title>
<link>https://war408705279.github.io/blogs/good-good-study/</link>
<pubDate>Fri, 12 Apr 2019 00:00:00 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/good-good-study/</guid>
<description>前端学习网站推荐 极客标签:http://www.gbtags.com (传送门) 码农周刊:http://weekly.manong.io/issues (传送门) 前端周刊:http://www.feweekly.com/issues (传送门) 慕课网:http://www.imooc.com/ (传送门) div.io:http://div.io (传送门) Hacker News:https://news.ycombinator.com/news (传送门) InfoQ:http://www.infoq.com/ (传送门) w3cplus:http://www.w3cplus.com/ (传送门) Stack Overflow:http://stackoverflow.com/ (传送门) w3school:http://www.w3school.com.cn/ (传送门) mozilla:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript (传送门) 文档推荐 JQuery 基本原理 JavaScript 秘密花园 CSS 参考手册 JavaScript 标准参考教程 ECMAScript 6入门 Github 备注 根据自己需要选择性阅读,面试题是对理论知识的总结,让自己学会应该如何表达
格式和内容不断修改更新中
在 github 项目的右上角,有三个按钮,分别是 watch、star、fork,新来的同学注意不要用错了,无休止的邮件提醒会给你造成不必要的信息干扰
当你选择 Watching,表示你以后会关注这个项目的全部动态,以后只要这个项目发生变动,被别人提交了 pull request、被发起了 issue 等情况你都会收到邮件通知
star 相当于是点赞或收藏,方便以后查找
fork 表示你想要补充完善这个项目的内容</description>
</item>
<item>
<title>前端面试题 - 其他</title>
<link>https://war408705279.github.io/blogs/interview-other/</link>
<pubDate>Wed, 10 Apr 2019 00:00:00 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/interview-other/</guid>
<description>浏览器内核 说明一:
IE 浏览器:Trident(IE 内核) 火狐浏览器:Gecko,特点是代码完全公开 Opera 浏览器:前期采用 Presto 内核,现已改用 Google Chrome 的 Blink 内核 Safari 浏览器:Webkit 内核,Webkit 内核是 Chrome 内核的原型 Chrome 浏览器:采用 Blink 内核,是 Google 和 Opera Software 开发的浏览器排版引擎 说明二:
Trident 内核:IE,MaxThon,TT,The World,360,搜狗浏览器等 [又称 MSHTML] Gecko 内核:Netscape6 及以上版本,FF,MozillaSuite / SeaMonkey 等 Presto 内核:Opera7 及以上 [Opera 内核原为:Presto,现为:Blink] Webkit 内核:Safari,Chrome等 [Chrome 的:Blink(WebKit 的分支)] 详细文章:传送门
介绍一下你对浏览器内核的理解? 主要分成两部分:渲染引擎(layout engineer 或 Rendering Engine)和 JS 引擎
渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入 CSS 等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核
JS 引擎则:解析和执行 javascript 来实现网页的动态效果</description>
</item>
<item>
<title>前端面试题 - 请求</title>
<link>https://war408705279.github.io/blogs/interview-request/</link>
<pubDate>Wed, 10 Apr 2019 00:00:00 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/interview-request/</guid>
<description>http 状态码 100-199:用于指定客户端相应的某些动作,服务器接收到请求,需要请求者继续执行操作
200-299:用于表示请求成功
300-399:用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。重定向,需要进一步的操作以完成请求
400-499:用于指出客户端的错误,请求包含语法 错误或无法完成请求。400 - 客户端请求语法有错误,服务器无法理解;401 - 当前请求需要用户验证;403 - 服务器理解请求客户端的请求,但是拒绝执行此请求;404 - 服务器无法根据客户端的请求找到资源(网页)
500-599:服务器端错误。500 - 服务器内部错误,无法完成请求;501 - 服务器不支持请求的功能;502 - 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求;503 - 服务不可用
Ajax 中 GET 和 POST 方法的区别 GET 和 POST 都是向服务器发送的一种请求,只是发送机制不同 GET 请求会将参数跟在 URL 后进行传递,而 POST 请求则是作为 HTTP 消息的实体内容发送给 WEB 服务器。当然在 Ajax 请求中,这种区别对用户是不可见的
首先是 GET 方式提交的数据最多只能是 1024 字节,因为 GET 是通过 URL 提交数据,那么 GET 可提交的数据量就跟 URL 的长度有直接关系了。而实际上,URL 不存在参数上限的问题,HTTP 协议规范没有对 URL 长度进行限制。*这个限制是特定的浏览器及服务器对它的限制*。IE 对 URL 长度的限制是 2083 字节(2K+35)。对于其他浏览器,如 Netscape、FireFox 等,理论上没有长度限制,其限制取决于操作系统的支持。注意这是限制是整个 URL 长度,而不仅仅是你的参数值数据长度</description>
</item>
<item>
<title>如何使用 Git + Hugo 搭建属于自己的博客网站</title>
<link>https://war408705279.github.io/blogs/hugo/</link>
<pubDate>Tue, 09 Apr 2019 00:00:00 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/hugo/</guid>
<description>平时在开发过程中多多少少会有一些积累,这个时候就想把这些积累写成博客,一是当做自己本身的沉淀,二是可以把这些积累分享出去
但是根据常规思路搭建一个属于自己的博客网站又太麻烦,这个时候可以使用 Github + Hugo 快速搭建一套属于自己的博客网站,下面就对搭建流程做一个简单的介绍
*注*:以下步骤以在 macOS 上的操作为例,其它操作系统类似,只是一些工具和命令有区别
注册一个 Github 账号 首先你要有一个 Github 账号,这里就不赘述了,毕竟注册 Github 的流程不复杂
创建一个 repo 新建一个 GitHub repository,库名为 username.github.io,username 即你的 GitHub 账号 username
例如我创建的 repo 就叫 war408705279.github.io
安装 Hugo Hugo 安装的官方文档 传送门
可以使用 Homebrew 进行快速的安装,命令如下
# 安装 hugo brew install hugo # 查看 hugo 版本信息 hugo version 新建一个 Hugo 网站 cd 到你想保存 Hugo 网站的目录下,运行下面的命令
cd /code hugo new site myblog 命令运行成功后会在当前目录(/code)下创建一个名为 myblog 的文件夹,里面保存着网站的初始文件。注意这里不用重复创建 myblog 文件夹</description>
</item>
<item>
<title>前端面试题 - JS</title>
<link>https://war408705279.github.io/blogs/interview-js/</link>
<pubDate>Mon, 08 Apr 2019 00:00:00 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/interview-js/</guid>
<description>前端 JS 面试题积累 JS 获取 URL 中的 Query 参数 getQueryString(name) { var reg = new RegExp(&#39;(^|&amp;)&#39; + name + &#39;=([^&amp;]*)(&amp;|$)&#39;, &#39;i&#39;); var r = routerStore.location.search.substr(1).match(reg); if (r !== null) { return unescape(r[2]); } return null; } // 调用的时候传递 query 参数的 key 值进去 // 例如需要获取 url 中 id 对应的值 var id = getQueryString(&#39;id&#39;) call() 和 apply() 的异同 call 和 apply 的基本作用都是改变对象执行的上下文
call 的基本使用
function.call(obj [, arg1 [, arg2[, [, argN]]]]]) 说明</description>
</item>
<item>
<title>学习网站推荐</title>
<link>https://war408705279.github.io/blogs/learn-website/</link>
<pubDate>Sun, 31 Mar 2019 00:00:00 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/learn-website/</guid>
<description>前端学习网站推荐 极客标签:http://www.gbtags.com (传送门) 码农周刊:http://weekly.manong.io/issues (传送门) 前端周刊:http://www.feweekly.com/issues (传送门) 慕课网:http://www.imooc.com/ (传送门) div.io:http://div.io (传送门) Hacker News:https://news.ycombinator.com/news (传送门) InfoQ:http://www.infoq.com/ (传送门) w3cplus:http://www.w3cplus.com/ (传送门) Stack Overflow:http://stackoverflow.com/ (传送门) w3school:http://www.w3school.com.cn/ (传送门) mozilla:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript (传送门) 文档推荐 JQuery 基本原理 JavaScript 秘密花园 CSS 参考手册 JavaScript 标准参考教程 ECMAScript 6入门 备注 根据自己需要选择性阅读,面试题是对理论知识的总结,让自己学会应该如何表达
格式和内容不断修改更新中
在 github 项目的右上角,有三个按钮,分别是 watch、star、fork,新来的同学注意不要用错了,无休止的邮件提醒会给你造成不必要的信息干扰
当你选择 Watching,表示你以后会关注这个项目的全部动态,以后只要这个项目发生变动,被别人提交了 pull request、被发起了 issue 等情况你都会收到邮件通知
star 相当于是点赞或收藏,方便以后查找
fork 表示你想要补充完善这个项目的内容</description>
</item>
<item>
<title>前端面试题 - CSS</title>
<link>https://war408705279.github.io/blogs/interview-css/</link>
<pubDate>Sat, 30 Mar 2019 00:00:00 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/interview-css/</guid>
<description>前端 CSS 面试题积累 CSS 的盒子模型 有两种盒子模型
IE 盒子模型:content 部分包含了 border 和 padding 标准 W3C 盒子模型:包含内容(content)、填充(padding)、边界(margin)、边框(border) CSS 选择符 id 选择器(#id) 类选择器(.myclassname) 标签选择器(div,h1,p) 相邻选择器(h1+p) 子选择器(ul &gt; li) 后代选择器(li a) 通配符选择器(*) 属性选择器(a[rel = &ldquo;external&rdquo;]) 伪类选择器(a:hover, li:nth-child) 可继承的样式:font-size、font-family、color 等 不可继承的样式:border、padding、margin、width、height 等 优先级就近原则,同权重情况下样式定义最近者为准 优先级为:!important &gt; id 选择器 &gt; class 选择器 &gt; 标签选择器 nth-child 和 nth-of-type 之间的差异 nth-child:按照个数来计算
看如下的例子
&lt;style&gt; p:nth-child(2), p:nth-child(7){ color:red; } &lt;/style&gt; &lt;h1&gt;标题&lt;/h1&gt; &lt;p&gt;这是段落&lt;/p&gt; &lt;p&gt;这是段落&lt;/p&gt; &lt;span&gt;这是 span&lt;/span&gt; &lt;span&gt;这是 span&lt;/span&gt; &lt;span&gt;这是 span&lt;/span&gt; &lt;p&gt;这是段落&lt;/p&gt; 效果如下所示</description>
</item>
<item>
<title>前端面试题 - HTML</title>
<link>https://war408705279.github.io/blogs/interview-html/</link>
<pubDate>Sat, 30 Mar 2019 00:00:00 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/interview-html/</guid>
<description>前端 HTML 面试题积累 语义化的 HTML 说明一:
直观的认识标签对于搜索引擎的抓取有好处,用正确的标签做正确的事情 HTML 语义化就是让页面的内容结构化,便于对浏览器、搜索引擎解析 在没有样式 CSS 情况下也以一种文档格式显示,并且是容易阅读的。搜索引擎的爬虫依赖于标记来确定上下文和各个关键字的权重,利于 SEO 使阅读源代码的人更容易将网站分块,便于阅读维护理解 说明二:
用正确的标签做正确的事情 HTML 语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析 即使在没有样式 CSS 情况下也以一种文档格式显示,并且是容易阅读的 搜索引擎的爬虫也依赖于 HTML 标记来确定上下文和各个关键字的权重,利于 SEO 使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解 &lt;!DOCTYPE html&gt; 标签 H5 不基于 SGML,因此不需要对 DTD(document type definition)进行引用,但是需要 doctype 来规范浏览器的行为(让浏览器按照它们应该的方式来运行)。而 HTML4.0 基于 SGML,所以需要对 DTD 进行引用,才能告知浏览器文档所使用的文档类型
Doctype 作用?标准模式与兼容模式各有什么区别? &lt;!DOCTYPE&gt; 声明位于 HTML 文档中的第一行,处于 标签之前。告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE 不存在或格式不正确会导致文档以兼容模式呈现
标准模式的排版 和 JS 运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作
行内元素有哪些?块级元素有哪些? 空(void)元素有那些? 首先:CSS 规范规定,每个元素都有 display 属性,确定该元素的类型,每个元素都有默认的 display 值,如 div 的 display 默认值为 “block”,则为“块级”元素;span 默认 display 属性值为 “inline”,是“行内”元素</description>
</item>
<item>
<title>ES6 概述</title>
<link>https://war408705279.github.io/blogs/es6-introduce/</link>
<pubDate>Sun, 03 Mar 2019 00:00:00 +0800</pubDate>
<guid>https://war408705279.github.io/blogs/es6-introduce/</guid>
<description>概述 ES6(ECMAScript6)是新版本 JavaScript 语言的标准,代号 _harmony_。上一次标准的制定还是 2009 年出台的 ES5。
ECMAScript 和 JavaScript 的关系:前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 Jscript 和 ActionScript)。日常场合,这两个词是可以互换的
ES6 和 ECMAScript2015 的关系:ES6 既是一个历史名词,也是一个泛指,含义是 5.1 版以后的 JavaScript 的下一代标准,涵盖了 ES2015、ES2016、ES2017 等等,而 ES2015 则是正式名称,特指该年发布的正式版本的语言标准。本书中提到 ES6 的地方,一般是指 ES2015 标准,但有时也是泛指“下一代 JavaScript 语言”
箭头操作符 如果你会 C# 或者 Java,你肯定知道 lambda 表示,ES6 中新增的 箭头操作符(=&gt;) 就有异曲同工之妙。它简化了函数的书写。操作符左边为输入的参数,而右边则是进行操作及返回的值 Inputs =&gt; Outputs。我们知道在 JS 中回调是经常的事,而一般回调又以匿名函数的形式出现,每次都需要写一个 function,甚是繁琐,当引入箭头操作符后就可以方面的进行回调。
箭头函数的 this 值:普通 function 函数和箭头函数的行为有一个微妙的区别,箭头函数没有它自己的 this 值,箭头函数内的 this 值继承自外围作用域。
箭头集合:
&lt;!&ndash; 单行注释 &ndash;&gt; “趋向于”操作符 &lt;= 小于等于 =&gt; 箭头函数 如下面的例子所示。</description>
</item>
</channel>
</rss>