-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathatom.xml
More file actions
581 lines (279 loc) · 228 KB
/
atom.xml
File metadata and controls
581 lines (279 loc) · 228 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
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>OY's Blog</title>
<subtitle>OY</subtitle>
<link href="http://objectyan.github.io/atom.xml" rel="self"/>
<link href="http://objectyan.github.io/"/>
<updated>2024-11-15T02:42:44.400Z</updated>
<id>http://objectyan.github.io/</id>
<author>
<name>OY</name>
</author>
<generator uri="https://hexo.io/">Hexo</generator>
<entry>
<title>Linux vi 操作</title>
<link href="http://objectyan.github.io/2020/05/19/Linux-VI/"/>
<id>http://objectyan.github.io/2020/05/19/Linux-VI/</id>
<published>2020-05-19T03:21:03.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h4 id="设置行号"><a href="#设置行号" class="headerlink" title="设置行号"></a>设置行号</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">:<span class="built_in">set</span> number</span><br></pre></td></tr></table></figure><h4 id="移动至多少行"><a href="#移动至多少行" class="headerlink" title="移动至多少行"></a>移动至多少行</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">:<number></span><br></pre></td></tr></table></figure><h4 id="向上-下移动多少行"><a href="#向上-下移动多少行" class="headerlink" title="向上/下移动多少行"></a>向上/下移动多少行</h4><figure class="highlight bash"><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 class="comment"># 向下移动</span></span><br><span class="line"><number> ↓</span><br><span class="line"></span><br><span class="line"><span class="comment"># 向上移动</span></span><br><span class="line"><number> ↑</span><br></pre></td></tr></table></figure><blockquote><p>**_* 注根据当前光标所在位置移动</p></blockquote><h4 id="向左-右移动多少列"><a href="#向左-右移动多少列" class="headerlink" title="向左/右移动多少列"></a>向左/右移动多少列</h4><figure class="highlight bash"><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 class="comment"># 向右移动</span></span><br><span class="line"><number> →</span><br><span class="line"></span><br><span class="line"><span class="comment"># 向左移动</span></span><br><span class="line"><number> ←</span><br></pre></td></tr></table></figure><blockquote><p>**_* 注根据当前光标所在位置移动</p></blockquote><h4 id="向上-下搜索"><a href="#向上-下搜索" class="headerlink" title="向上/下搜索"></a>向上/下搜索</h4><figure class="highlight bash"><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 class="comment"># 向下移动</span></span><br><span class="line">/pattern</span><br><span class="line"></span><br><span class="line"><span class="comment"># 向上移动</span></span><br><span class="line">?pattern</span><br></pre></td></tr></table></figure><blockquote><p>**_* 按n查找下一个<br>**_* 注根据当前光标所在位置移动</p></blockquote><h4 id="搜索替换"><a href="#搜索替换" class="headerlink" title="搜索替换"></a>搜索替换</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">:[number,number][g][s]/<pattern>/<replace>/[g][c]</span><br></pre></td></tr></table></figure><blockquote><p>**_* number 设置替换的行范围 $为最后一行<br> g 代表全局 不用g 默认自替换找到第一个<br> c 代表是否需要替换 y 就是替换,n 就是跳过 </p></blockquote><h4 id="撤销"><a href="#撤销" class="headerlink" title="撤销"></a>撤销</h4><figure class="highlight bash"><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">u <span class="comment"># 一步一步撤销</span></span><br><span class="line">U <span class="comment"># 撤销当前行所有操作</span></span><br></pre></td></tr></table></figure><blockquote><p>**_* U 首次使用为撤销,第二次使用为恢复撤销</p></blockquote><h4 id="复制"><a href="#复制" class="headerlink" title="复制"></a>复制</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[n]yy</span><br></pre></td></tr></table></figure><blockquote><p>**_* n 代表复制的行数<br>**_* 注根据当前光标所在位置进行复制</p></blockquote><h4 id="粘贴"><a href="#粘贴" class="headerlink" title="粘贴"></a>粘贴</h4><figure class="highlight bash"><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">p <span class="comment"># 光标向下粘贴</span></span><br><span class="line">P <span class="comment"># 光标向上粘贴</span></span><br></pre></td></tr></table></figure><h4 id="删除"><a href="#删除" class="headerlink" title="删除"></a>删除</h4><figure class="highlight bash"><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">[n]<span class="built_in">dd</span> <span class="comment">#删除多少行</span></span><br><span class="line">[n]dw <span class="comment">#删除以当前字符开始的n个字</span></span><br></pre></td></tr></table></figure><h4 id="另存为"><a href="#另存为" class="headerlink" title="另存为"></a>另存为</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">:w <path></span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h4 id="设置行号"><a href="#设置行号" class="headerlink" title="设置行号"></a>设置行号</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre</summary>
<category term="Linux" scheme="http://objectyan.github.io/categories/Linux/"/>
<category term="Bash" scheme="http://objectyan.github.io/tags/Bash/"/>
</entry>
<entry>
<title>SpiderKeeper 部署 Scrapy</title>
<link href="http://objectyan.github.io/2020/05/11/SpiderKeeper-Publish-Scrapy/"/>
<id>http://objectyan.github.io/2020/05/11/SpiderKeeper-Publish-Scrapy/</id>
<published>2020-05-11T02:03:10.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h4 id="安装环境"><a href="#安装环境" class="headerlink" title="安装环境"></a>安装环境</h4><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line">pip install scrapy</span><br><span class="line">pip install scrapyd</span><br><span class="line">pip install scrapyd-client</span><br><span class="line">pip install spiderkeeper</span><br></pre></td></tr></table></figure><h4 id="启动-scrapyd"><a href="#启动-scrapyd" class="headerlink" title="启动 scrapyd"></a>启动 <code>scrapyd</code></h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">scrapyd</span><br></pre></td></tr></table></figure><h4 id="启动-spiderkeeper"><a href="#启动-spiderkeeper" class="headerlink" title="启动 spiderkeeper"></a>启动 <a href="https://github.com/DormyMo/SpiderKeeper"><code>spiderkeeper</code></a></h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">spiderkeeper</span><br></pre></td></tr></table></figure><p><img src="/./run-spiderkeeper.png" alt="启动 `spiderkeeper`后的截图"></p><h4 id="配置-SpiderKeeper-发布-scrapy"><a href="#配置-SpiderKeeper-发布-scrapy" class="headerlink" title="配置 SpiderKeeper 发布 scrapy"></a>配置 SpiderKeeper 发布 scrapy</h4><h5 id="1-浏览器打开-http-localhost-5000"><a href="#1-浏览器打开-http-localhost-5000" class="headerlink" title="1. 浏览器打开[http://localhost:5000/]"></a>1. 浏览器打开[<a href="http://localhost:5000/]">http://localhost:5000/]</a></h5><p><img src="/./spiderkeeper-web.png" alt="SpiderKeeper界面"></p><h5 id="2-点击-Create-Project-创建项目"><a href="#2-点击-Create-Project-创建项目" class="headerlink" title="2. 点击 Create Project 创建项目"></a>2. 点击 <code>Create Project</code> 创建项目</h5><h5 id="3-上传项目Egg文件"><a href="#3-上传项目Egg文件" class="headerlink" title="3. 上传项目Egg文件"></a>3. 上传项目Egg文件</h5><h6 id="生成Egg文件"><a href="#生成Egg文件" class="headerlink" title="生成Egg文件"></a>生成Egg文件</h6><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">scrapyd-deploy --build-egg output.egg</span><br></pre></td></tr></table></figure><p><img src="/./spiderkeeper-web-deploy.png" alt="SpiderKeeper deploy 界面"></p><h5 id="4-进入-Periodic-jobs-添加-Job"><a href="#4-进入-Periodic-jobs-添加-Job" class="headerlink" title="4.进入 Periodic jobs 添加 Job"></a>4.进入 Periodic jobs 添加 Job</h5><p><img src="/./spiderkeeper-web-periodic-jobs.png" alt="SpiderKeeper Periodic jobs 界面"></p>]]></content>
<summary type="html"><h4 id="安装环境"><a href="#安装环境" class="headerlink" title="安装环境"></a>安装环境</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre</summary>
<category term="Develop" scheme="http://objectyan.github.io/categories/Develop/"/>
<category term="Python" scheme="http://objectyan.github.io/categories/Develop/Python/"/>
<category term="Scrapy" scheme="http://objectyan.github.io/categories/Develop/Python/Scrapy/"/>
<category term="Develop" scheme="http://objectyan.github.io/tags/Develop/"/>
<category term="Python" scheme="http://objectyan.github.io/tags/Python/"/>
<category term="Scrapy" scheme="http://objectyan.github.io/tags/Scrapy/"/>
</entry>
<entry>
<title>Docker 添加 Registry 镜像</title>
<link href="http://objectyan.github.io/2020/04/30/Docker-Add-Registry-Mirrors/"/>
<id>http://objectyan.github.io/2020/04/30/Docker-Add-Registry-Mirrors/</id>
<published>2020-04-30T09:42:51.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h4 id="镜像地址"><a href="#镜像地址" class="headerlink" title="镜像地址"></a>镜像地址</h4><figure class="highlight json"><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></pre></td><td class="code"><pre><span class="line"><span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"registry-mirrors"</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line"> <span class="string">"https://registry.docker-cn.com"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="string">"http://hub-mirror.c.163.com"</span></span><br><span class="line"> <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">}</span></span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h4 id="镜像地址"><a href="#镜像地址" class="headerlink" title="镜像地址"></a>镜像地址</h4><figure class="highlight json"><table><tr><td class="gutter"><pre</summary>
<category term="Docker" scheme="http://objectyan.github.io/categories/Docker/"/>
<category term="Docker" scheme="http://objectyan.github.io/tags/Docker/"/>
<category term="Config" scheme="http://objectyan.github.io/tags/Config/"/>
</entry>
<entry>
<title>Liunx Bash 命令</title>
<link href="http://objectyan.github.io/2020/04/26/Liunx-Bash/"/>
<id>http://objectyan.github.io/2020/04/26/Liunx-Bash/</id>
<published>2020-04-25T23:38:01.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h3 id="文件类"><a href="#文件类" class="headerlink" title="文件类"></a>文件类</h3><h4 id="perl命令替换"><a href="#perl命令替换" class="headerlink" title="perl命令替换"></a>perl命令替换</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">perl -p -i -e <span class="string">"s/[查找字段]/[替换字段]/g"</span> [文件名]</span><br></pre></td></tr></table></figure><h5 id="perl参数说明"><a href="#perl参数说明" class="headerlink" title="perl参数说明"></a>perl参数说明</h5><table><thead><tr><th>参数</th><th align="center">说明</th></tr></thead><tbody><tr><td>-a</td><td align="center">自动分隔模式</td></tr><tr><td>-F</td><td align="center">指定-a的分隔符,可以使用正则表达式</td></tr><tr><td>-e</td><td align="center">执行指定的脚本</td></tr><tr><td>-i<扩展名></td><td align="center">原地替换文件</td></tr><tr><td>-l</td><td align="center">自动添加换行</td></tr><tr><td>-n</td><td align="center">自动循环</td></tr><tr><td>-p</td><td align="center">自动循环+自动输出</td></tr></tbody></table><h4 id="sed命令替换"><a href="#sed命令替换" class="headerlink" title="sed命令替换"></a>sed命令替换</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sed -i <span class="string">"s/[查找字段]/[替换字段]/g"</span> [文件名]</span><br></pre></td></tr></table></figure><h5 id="sed参数说明"><a href="#sed参数说明" class="headerlink" title="sed参数说明"></a>sed参数说明</h5><table><thead><tr><th>参数</th><th align="center">说明</th></tr></thead><tbody><tr><td>-i</td><td align="center">就地修改文件</td></tr><tr><td>-r</td><td align="center">搜索子目录</td></tr><tr><td>-l</td><td align="center">输出匹配的文件名</td></tr><tr><td>s</td><td align="center">替换</td></tr><tr><td>d</td><td align="center">删除</td></tr></tbody></table>]]></content>
<summary type="html"><h3 id="文件类"><a href="#文件类" class="headerlink" title="文件类"></a>文件类</h3><h4 id="perl命令替换"><a href="#perl命令替换" class="headerlink" title="perl命</summary>
<category term="Linux" scheme="http://objectyan.github.io/categories/Linux/"/>
<category term="Bash" scheme="http://objectyan.github.io/tags/Bash/"/>
</entry>
<entry>
<title>Oracle 修改数据库文件大小</title>
<link href="http://objectyan.github.io/2020/04/20/Oracle-Edit-Database-File-Path/"/>
<id>http://objectyan.github.io/2020/04/20/Oracle-Edit-Database-File-Path/</id>
<published>2020-04-20T04:57:56.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h3 id="查询表空间信息"><a href="#查询表空间信息" class="headerlink" title="查询表空间信息"></a>查询表空间信息</h3><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><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">SELECT</span> D.FILE_NAME "表空间地址", </span><br><span class="line"> <span class="built_in">UPPER</span>(F.TABLESPACE_NAME) "表空间名", </span><br><span class="line"> D.AUTOEXTENSIBLE "是否自动扩展",</span><br><span class="line"> D.TOT_GROOTTE_MB "表空间大小(M)", </span><br><span class="line"> D.TOT_GROOTTE_MB <span class="operator">-</span> F.TOTAL_BYTES "已使用空间(M)", </span><br><span class="line"> TO_CHAR(ROUND((D.TOT_GROOTTE_MB <span class="operator">-</span> F.TOTAL_BYTES) <span class="operator">/</span> D.TOT_GROOTTE_MB <span class="operator">*</span> <span class="number">100</span>,<span class="number">2</span>),<span class="string">'990.99'</span>) "使用比", </span><br><span class="line"> F.TOTAL_BYTES "空闲空间(M)", </span><br><span class="line"> F.MAX_BYTES "最大块(M)" </span><br><span class="line"> <span class="keyword">FROM</span> </span><br><span class="line"> (</span><br><span class="line"> <span class="keyword">SELECT</span> TABLESPACE_NAME, ROUND(<span class="built_in">SUM</span>(BYTES) <span class="operator">/</span> (<span class="number">1024</span> <span class="operator">*</span> <span class="number">1024</span>), <span class="number">2</span>) TOTAL_BYTES, ROUND(<span class="built_in">MAX</span>(BYTES) <span class="operator">/</span> (<span class="number">1024</span> <span class="operator">*</span> <span class="number">1024</span>), <span class="number">2</span>) MAX_BYTES <span class="keyword">FROM</span> SYS.DBA_FREE_SPACE <span class="keyword">GROUP</span> <span class="keyword">BY</span> TABLESPACE_NAME</span><br><span class="line"> ) F,</span><br><span class="line"> (</span><br><span class="line"> <span class="keyword">SELECT</span> DD.FILE_NAME, DD.AUTOEXTENSIBLE, DD.TABLESPACE_NAME, ROUND(<span class="built_in">SUM</span>(DD.BYTES) <span class="operator">/</span> (<span class="number">1024</span> <span class="operator">*</span> <span class="number">1024</span>), <span class="number">2</span>) TOT_GROOTTE_MB <span class="keyword">FROM</span> SYS.DBA_DATA_FILES DD <span class="keyword">GROUP</span> <span class="keyword">BY</span> DD.FILE_NAME, DD.AUTOEXTENSIBLE, DD.TABLESPACE_NAME</span><br><span class="line"> ) D <span class="keyword">WHERE</span> D.TABLESPACE_NAME <span class="operator">=</span> F.TABLESPACE_NAME <span class="keyword">ORDER</span> <span class="keyword">BY</span> <span class="number">5</span> <span class="keyword">DESC</span>;</span><br></pre></td></tr></table></figure><h3 id="设置表空间大小"><a href="#设置表空间大小" class="headerlink" title="设置表空间大小"></a>设置表空间大小</h3><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><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">-- 设置为自动扩展</span></span><br><span class="line"><span class="keyword">alter</span> database datafile <span class="string">'/U01/oradata/system.dbf'</span> AUTOEXTEND <span class="keyword">ON</span> NEXT <span class="number">50</span>M MAXSIZE UNLIMITED;</span><br><span class="line"><span class="comment">-- 设置为表空间的大小</span></span><br><span class="line"><span class="keyword">alter</span> database datafile <span class="string">'/U01/oradata/system.dbf'</span> resize <span class="number">10240</span>m;</span><br></pre></td></tr></table></figure><blockquote><p>**_<em>注意:处理 <code>ORA-01653: 表 SYS.OBJ$ 无法通过 128</code>的错误 _</em>* </p></blockquote><h3 id="添加表空间文件"><a href="#添加表空间文件" class="headerlink" title="添加表空间文件"></a>添加表空间文件</h3><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><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">-- 自动扩展</span></span><br><span class="line"><span class="keyword">ALTER</span> <span class="keyword">TABLE</span>SPACE "SYSTEM" <span class="keyword">ADD</span> DATAFILE <span class="string">'/U01/oradata/system01.dbf'</span> SIZE <span class="number">500</span>M AUTOEXTEND <span class="keyword">ON</span> NEXT <span class="number">50</span>M MAXSIZE UNLIMITED;</span><br><span class="line"><span class="comment">-- 不可扩展</span></span><br><span class="line"><span class="keyword">ALTER</span> <span class="keyword">TABLE</span>SPACE "SYSTEM" <span class="keyword">ADD</span> DATAFILE <span class="string">'/U01/oradata/system01.dbf'</span> SIZE <span class="number">500</span>M;</span><br></pre></td></tr></table></figure><h3 id="迁移表空间位置"><a href="#迁移表空间位置" class="headerlink" title="迁移表空间位置"></a>迁移表空间位置</h3><h4 id="关闭数据库迁移"><a href="#关闭数据库迁移" class="headerlink" title="关闭数据库迁移"></a>关闭数据库迁移</h4><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><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">-- 关闭数据库</span></span><br><span class="line">shutdown database;</span><br><span class="line"><span class="comment">-- 移动对应文件地址 *.dbf 并mount模式启动数据库,修改数据库位置</span></span><br><span class="line">startup mount;</span><br><span class="line"><span class="keyword">alter</span> database rename file <span class="string">'[原数据文件地址]'</span> <span class="keyword">to</span> <span class="string">'[移动后数据文件地址]'</span>;</span><br><span class="line"><span class="comment">-- 打开数据库 </span></span><br><span class="line"><span class="keyword">alter</span> database <span class="keyword">open</span>;</span><br></pre></td></tr></table></figure><h4 id="在线迁移数据库"><a href="#在线迁移数据库" class="headerlink" title="在线迁移数据库"></a>在线迁移数据库</h4><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><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">-- 离线表空间</span></span><br><span class="line"><span class="keyword">alter</span> <span class="keyword">table</span>space <span class="keyword">SYSTEM</span> offline;</span><br><span class="line"><span class="comment">-- 移动对应文件地址 *.dbf 并修改数据库位置</span></span><br><span class="line"><span class="keyword">alter</span> database rename file <span class="string">'[原数据文件地址]'</span> <span class="keyword">to</span> <span class="string">'[移动后数据文件地址]'</span>;</span><br><span class="line"><span class="comment">-- 加载表空间</span></span><br><span class="line"><span class="keyword">alter</span> <span class="keyword">table</span>space <span class="keyword">SYSTEM</span> online;</span><br></pre></td></tr></table></figure><h4 id="查询锁表并删除锁表"><a href="#查询锁表并删除锁表" class="headerlink" title="查询锁表并删除锁表"></a>查询锁表并删除锁表</h4><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><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">-- 获取锁表信息</span></span><br><span class="line"><span class="keyword">select</span> <span class="operator">*</span> <span class="keyword">from</span> v$session t1, v$locked_object t2 <span class="keyword">where</span> t1.sid <span class="operator">=</span> t2.SESSION_ID</span><br><span class="line"><span class="comment">-- kill掉锁表记录</span></span><br><span class="line"><span class="keyword">alter</span> <span class="keyword">system</span> kill session <span class="string">'[SID],[SERIAL#]'</span></span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h3 id="查询表空间信息"><a href="#查询表空间信息" class="headerlink" title="查询表空间信息"></a>查询表空间信息</h3><figure class="highlight sql"><table><tr><td class="g</summary>
<category term="Database" scheme="http://objectyan.github.io/categories/Database/"/>
<category term="Oracle" scheme="http://objectyan.github.io/tags/Oracle/"/>
<category term="Setting" scheme="http://objectyan.github.io/tags/Setting/"/>
</entry>
<entry>
<title>Android 添加 Dependencies 报错 Manifest merger failed</title>
<link href="http://objectyan.github.io/2019/01/02/Android-Add-Dependencies/"/>
<id>http://objectyan.github.io/2019/01/02/Android-Add-Dependencies/</id>
<published>2019-01-02T07:39:07.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h4 id="错误信息"><a href="#错误信息" class="headerlink" title="错误信息"></a>错误信息</h4><figure class="highlight java"><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">Manifest merger failed : Attribute application<span class="meta">@appComponentFactory</span> value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:<span class="number">28.0</span><span class="number">.0</span>] AndroidManifest.xml:<span class="number">22</span>:<span class="number">18</span>-<span class="number">91</span></span><br><span class="line">is also present at [androidx.core:core:<span class="number">1.0</span><span class="number">.0</span>] AndroidManifest.xml:<span class="number">22</span>:<span class="number">18</span>-<span class="number">86</span> value=(androidx.core.app.CoreComponentFactory).</span><br><span class="line">Suggestion: add <span class="string">'tools:replace="android:appComponentFactory"'</span> to <application> element at AndroidManifest.xml:<span class="number">6</span>:<span class="number">5</span>-<span class="number">25</span>:<span class="number">19</span> to override.</span><br></pre></td></tr></table></figure><h4 id="解决方案-修改AndroidManifest-xml文件"><a href="#解决方案-修改AndroidManifest-xml文件" class="headerlink" title="解决方案 修改AndroidManifest.xml文件"></a>解决方案 修改<code>AndroidManifest.xml</code>文件</h4><figure class="highlight xml"><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></pre></td><td class="code"><pre><span class="line"><span class="meta"><?xml version=<span class="string">"1.0"</span> encoding=<span class="string">"utf-8"</span>?></span></span><br><span class="line"><span class="tag"><<span class="name">manifest</span> </span></span><br><span class="line"><span class="tag"> <span class="attr">...</span></span></span><br><span class="line"><span class="tag"> <span class="attr">xmlns:tools</span>=<span class="string">"http://schemas.android.com/tools"</span>></span></span><br><span class="line"> ...</span><br><span class="line"> <span class="comment"><!-- 添加如下属性 --></span></span><br><span class="line"> <span class="tag"><<span class="name">application</span></span></span><br><span class="line"><span class="tag"> <span class="attr">...</span></span></span><br><span class="line"><span class="tag"> <span class="attr">tools:replace</span>=<span class="string">"android:appComponentFactory"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:appComponentFactory</span>=<span class="string">"@string/app_name"</span>></span></span><br><span class="line"> ...</span><br><span class="line"> <span class="tag"></<span class="name">application</span>></span></span><br><span class="line"><span class="tag"></<span class="name">manifest</span>></span></span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h4 id="错误信息"><a href="#错误信息" class="headerlink" title="错误信息"></a>错误信息</h4><figure class="highlight java"><table><tr><td class="gutter"><pre</summary>
<category term="Develop" scheme="http://objectyan.github.io/categories/Develop/"/>
<category term="Android" scheme="http://objectyan.github.io/categories/Develop/Android/"/>
<category term="Android" scheme="http://objectyan.github.io/tags/Android/"/>
<category term="Develop" scheme="http://objectyan.github.io/tags/Develop/"/>
</entry>
<entry>
<title>Android APK 反编译</title>
<link href="http://objectyan.github.io/2018/06/29/Android-Apk-Decompile/"/>
<id>http://objectyan.github.io/2018/06/29/Android-Apk-Decompile/</id>
<published>2018-06-29T07:41:56.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h4 id="装备工具"><a href="#装备工具" class="headerlink" title="装备工具"></a>装备工具</h4><p>1.apktool <a href="https://bitbucket.org/iBotPeaches/apktool/downloads/">下载</a> <a href="https://github.com/iBotPeaches/Apktool">github</a><br>2.dex2jar <a href="https://github.com/pxb1988/dex2jar/releases">下载</a> <a href="https://github.com/pxb1988/dex2jar">github</a><br>3.jd-gui <a href="https://github.com/java-decompiler/jd-gui/releases">下载</a> <a href="https://github.com/java-decompiler/jd-gui">github</a></p><h4 id="使用apktool反编译"><a href="#使用apktool反编译" class="headerlink" title="使用apktool反编译"></a>使用<code>apktool</code>反编译</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apktool d -f [*.apk] [<span class="built_in">dir</span>]</span><br></pre></td></tr></table></figure><h4 id="使用apktool进行编译"><a href="#使用apktool进行编译" class="headerlink" title="使用apktool进行编译"></a>使用<code>apktool</code>进行编译</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apktool b [<span class="built_in">dir</span>]</span><br></pre></td></tr></table></figure><h4 id="使用dex2jar反编译apktool的dex文件"><a href="#使用dex2jar反编译apktool的dex文件" class="headerlink" title="使用dex2jar反编译apktool的dex文件"></a>使用<code>dex2jar</code>反编译<code>apktool</code>的<code>dex</code>文件</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">d2j-dex2jar.sh [<span class="built_in">dir</span>]/build/apk/*.dex</span><br></pre></td></tr></table></figure><h4 id="使用jd-gui导出源码"><a href="#使用jd-gui导出源码" class="headerlink" title="使用jd-gui导出源码"></a>使用<code>jd-gui</code>导出源码</h4>]]></content>
<summary type="html"><h4 id="装备工具"><a href="#装备工具" class="headerlink" title="装备工具"></a>装备工具</h4><p>1.apktool <a href="https://bitbucket.org/iBotPeaches/apktool/d</summary>
<category term="Develop" scheme="http://objectyan.github.io/categories/Develop/"/>
<category term="Android" scheme="http://objectyan.github.io/categories/Develop/Android/"/>
<category term="Android" scheme="http://objectyan.github.io/tags/Android/"/>
<category term="Develop" scheme="http://objectyan.github.io/tags/Develop/"/>
</entry>
<entry>
<title>Android Studio 常用快捷键</title>
<link href="http://objectyan.github.io/2018/06/04/Android-Shortcut-Key/"/>
<id>http://objectyan.github.io/2018/06/04/Android-Shortcut-Key/</id>
<published>2018-06-04T09:53:40.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h4 id="修复代码错误"><a href="#修复代码错误" class="headerlink" title="修复代码错误"></a>修复代码错误</h4><p>*** eg:cannot be resolved to a type ***<br><code>MAC:</code>Option + Return<br><code>Windows:</code>Alt + Enter</p><h4 id="快速打开对话框"><a href="#快速打开对话框" class="headerlink" title="快速打开对话框"></a>快速打开对话框</h4><p><code>MAC:</code>Command + Shift + O<br><code>Windows:</code>Ctrl + Shift + N</p><h4 id="格式化"><a href="#格式化" class="headerlink" title="格式化"></a>格式化</h4><p><code>MAC:</code>Option + Command + L<br><code>Windows:</code>Ctrl + Shift + L</p>]]></content>
<summary type="html"><h4 id="修复代码错误"><a href="#修复代码错误" class="headerlink" title="修复代码错误"></a>修复代码错误</h4><p>*** eg:cannot be resolved to a type ***<br><code>MAC:<</summary>
<category term="Develop" scheme="http://objectyan.github.io/categories/Develop/"/>
<category term="Android" scheme="http://objectyan.github.io/categories/Develop/Android/"/>
<category term="Android" scheme="http://objectyan.github.io/tags/Android/"/>
<category term="Develop" scheme="http://objectyan.github.io/tags/Develop/"/>
</entry>
<entry>
<title>TabLayout+ViewPager+Fragment的使用</title>
<link href="http://objectyan.github.io/2018/05/29/Android-Kotlin-Use-Tabs/"/>
<id>http://objectyan.github.io/2018/05/29/Android-Kotlin-Use-Tabs/</id>
<published>2018-05-29T09:31:00.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h4 id="源代码"><a href="#源代码" class="headerlink" title="源代码"></a>源代码</h4><p><a href="https://github.com/objectyan/FuelRecord">https://github.com/objectyan/FuelRecord</a></p><h4 id="配置-app-build-gradle"><a href="#配置-app-build-gradle" class="headerlink" title="配置 app\build.gradle"></a>配置 <code>app\build.gradle</code></h4><figure class="highlight gradle"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">dependencies</span>{</span><br><span class="line"> ...</span><br><span class="line"> implementation <span class="string">'com.android.support:support-v4:+'</span></span><br><span class="line"> implementation <span class="string">'com.android.support:appcompat-v7:+'</span></span><br><span class="line"> implementation <span class="string">'com.android.support:design:+'</span></span><br><span class="line"> ...</span><br><span class="line">}</span><br></pre></td></tr></table></figure><h4 id="创建-Layout"><a href="#创建-Layout" class="headerlink" title="创建 Layout"></a>创建 Layout</h4><figure class="highlight xml"><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><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">...</span><br><span class="line"><span class="tag"><<span class="name">android.support.design.widget.TabLayout</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:id</span>=<span class="string">"@+id/home_tab"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:layout_width</span>=<span class="string">"match_parent"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:layout_height</span>=<span class="string">"?attr/actionBarSize"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:layout_gravity</span>=<span class="string">"bottom"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:background</span>=<span class="string">"@color/colorPrimary"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:fillViewport</span>=<span class="string">"false"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">app:tabMode</span>=<span class="string">"fixed"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">app:layout_scrollFlags</span>=<span class="string">"scroll"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">app:tabIndicatorColor</span>=<span class="string">"#057523"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">app:tabIndicatorHeight</span>=<span class="string">"2.0dp"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">app:tabSelectedTextColor</span>=<span class="string">"@color/colorWhile"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">app:tabTextColor</span>=<span class="string">"#ced0d3"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">android.support.design.widget.TabItem</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:layout_width</span>=<span class="string">"match_parent"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:layout_height</span>=<span class="string">"match_parent"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:text</span>=<span class="string">"@string/home_main_tab_overview"</span> /></span></span><br><span class="line"> <span class="tag"><<span class="name">android.support.design.widget.TabItem</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:layout_width</span>=<span class="string">"match_parent"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:layout_height</span>=<span class="string">"match_parent"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:text</span>=<span class="string">"@string/home_main_tab_calculator"</span> /></span></span><br><span class="line"><span class="tag"></<span class="name">android.support.design.widget.TabLayout</span>></span></span><br><span class="line"></span><br><span class="line"><span class="tag"><<span class="name">android.support.v4.view.ViewPager</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:id</span>=<span class="string">"@+id/home_viewpager"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:layout_width</span>=<span class="string">"match_parent"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">android:layout_height</span>=<span class="string">"match_parent"</span> /></span></span><br><span class="line">...</span><br></pre></td></tr></table></figure><h4 id="创建-PagerAdapter"><a href="#创建-PagerAdapter" class="headerlink" title="创建 PagerAdapter"></a>创建 <code>PagerAdapter</code></h4><figure class="highlight kotlin"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> me.objectyan.fuelrecord.adapter</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> android.support.v4.app.Fragment</span><br><span class="line"><span class="keyword">import</span> android.support.v4.app.FragmentManager</span><br><span class="line"><span class="keyword">import</span> android.support.v4.app.FragmentPagerAdapter</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">HomeTabPagerAdapter</span>(fm: FragmentManager?, <span class="keyword">var</span> list: List<Fragment>) : FragmentPagerAdapter(fm) {</span><br><span class="line"> <span class="keyword">override</span> <span class="function"><span class="keyword">fun</span> <span class="title">getItem</span><span class="params">(position: <span class="type">Int</span>)</span></span>: Fragment {</span><br><span class="line"> <span class="keyword">return</span> list.<span class="keyword">get</span>(position)</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="keyword">override</span> <span class="function"><span class="keyword">fun</span> <span class="title">getCount</span><span class="params">()</span></span>: <span class="built_in">Int</span> {</span><br><span class="line"> <span class="keyword">return</span> list.size</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure><h4 id="配置-Tab-与-ViewPager"><a href="#配置-Tab-与-ViewPager" class="headerlink" title="配置 Tab 与 ViewPager"></a>配置 Tab 与 ViewPager</h4><figure class="highlight kotlin"><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><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br></pre></td><td class="code"><pre><span class="line">...</span><br><span class="line"><span class="keyword">var</span> tab = view.findViewById<TabLayout>(R.id.home_tab)</span><br><span class="line"><span class="keyword">val</span> pager = view.findViewById<ViewPager>(R.id.home_viewpager)</span><br><span class="line"><span class="comment">// 绑定tab的试图集合</span></span><br><span class="line"><span class="keyword">val</span> fragmentList = listOf<Fragment>(OverviewFragment(), CalculatorFragment())</span><br><span class="line">pager.run {</span><br><span class="line"> adapter = HomeTabPagerAdapter(fragmentManager, fragmentList)</span><br><span class="line"> <span class="comment">// 此事件必须设置 否则无法切换</span></span><br><span class="line"> addOnPageChangeListener(<span class="keyword">object</span> : ViewPager.OnPageChangeListener {</span><br><span class="line"> <span class="keyword">override</span> <span class="function"><span class="keyword">fun</span> <span class="title">onPageScrollStateChanged</span><span class="params">(state: <span class="type">Int</span>)</span></span> {</span><br><span class="line"></span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="keyword">override</span> <span class="function"><span class="keyword">fun</span> <span class="title">onPageScrolled</span><span class="params">(position: <span class="type">Int</span>, positionOffset: <span class="type">Float</span>, positionOffsetPixels: <span class="type">Int</span>)</span></span> {</span><br><span class="line"></span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="keyword">override</span> <span class="function"><span class="keyword">fun</span> <span class="title">onPageSelected</span><span class="params">(position: <span class="type">Int</span>)</span></span> {</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">tab.run {</span><br><span class="line"> setupWithViewPager(pager)</span><br><span class="line"></span><br><span class="line"> addOnTabSelectedListener(<span class="keyword">object</span> : TabLayout.OnTabSelectedListener {</span><br><span class="line"> <span class="keyword">override</span> <span class="function"><span class="keyword">fun</span> <span class="title">onTabSelected</span><span class="params">(tab: <span class="type">TabLayout</span>.<span class="type">Tab</span>)</span></span> {</span><br><span class="line"></span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="keyword">override</span> <span class="function"><span class="keyword">fun</span> <span class="title">onTabUnselected</span><span class="params">(tab: <span class="type">TabLayout</span>.<span class="type">Tab</span>)</span></span> {</span><br><span class="line"></span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="keyword">override</span> <span class="function"><span class="keyword">fun</span> <span class="title">onTabReselected</span><span class="params">(tab: <span class="type">TabLayout</span>.<span class="type">Tab</span>)</span></span> {</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 class="comment">// 设置Tab Text 必须在绑定 ViewPager 后,否则无法显示Tab Text</span></span><br><span class="line"> getTabAt(<span class="number">0</span>)!!.setText(R.string.home_main_tab_overview)</span><br><span class="line"> getTabAt(<span class="number">1</span>)!!.setText(R.string.home_main_tab_calculator)</span><br><span class="line">}</span><br><span class="line">...</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h4 id="源代码"><a href="#源代码" class="headerlink" title="源代码"></a>源代码</h4><p><a href="https://github.com/objectyan/FuelRecord">https://github.c</summary>
<category term="Develop" scheme="http://objectyan.github.io/categories/Develop/"/>
<category term="Android" scheme="http://objectyan.github.io/categories/Develop/Android/"/>
<category term="Android" scheme="http://objectyan.github.io/tags/Android/"/>
<category term="Develop" scheme="http://objectyan.github.io/tags/Develop/"/>
<category term="Kotlin" scheme="http://objectyan.github.io/tags/Kotlin/"/>
</entry>
<entry>
<title>React Native Error</title>
<link href="http://objectyan.github.io/2018/05/15/React-Native-Error/"/>
<id>http://objectyan.github.io/2018/05/15/React-Native-Error/</id>
<published>2018-05-15T03:24:22.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<p><code>glog/log.config</code> and <code>config.h</code> not find</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">cd node_modules/react-native/third-party/glog-0.3.4</span><br><span class="line">../../scripts/ios-configure-glog.sh</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><p><code>glog/log.config</code> and <code>config.h</code> not find</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pr</summary>
<category term="Develop" scheme="http://objectyan.github.io/categories/Develop/"/>
<category term="React Native" scheme="http://objectyan.github.io/categories/Develop/React-Native/"/>
<category term="Develop" scheme="http://objectyan.github.io/tags/Develop/"/>
<category term="React Native" scheme="http://objectyan.github.io/tags/React-Native/"/>
</entry>
<entry>
<title>IOS Swift UITable 使用</title>
<link href="http://objectyan.github.io/2018/04/27/IOS-Swift-UITable/"/>
<id>http://objectyan.github.io/2018/04/27/IOS-Swift-UITable/</id>
<published>2018-04-27T08:15:53.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h4 id="首要条件"><a href="#首要条件" class="headerlink" title="首要条件"></a>首要条件</h4><figure class="highlight swift"><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="comment">// 继承 与 UITableViewController</span></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">Controller</span>: <span class="title class_ inherited__">UITableViewController</span> </span><br></pre></td></tr></table></figure><h4 id="设置总行数"><a href="#设置总行数" class="headerlink" title="设置总行数"></a>设置总行数</h4><figure class="highlight swift"><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">override</span> <span class="keyword">func</span> <span class="title function_">tableView</span>(<span class="keyword">_</span> <span class="params">tableView</span>: <span class="type">UITableView</span>, <span class="params">numberOfRowsInSection</span> <span class="params">section</span>: <span class="type">Int</span>) -> <span class="type">Int</span> {</span><br><span class="line"> <span class="keyword">return</span> <span class="number">100</span>; <span class="comment">//行数</span></span><br><span class="line">}</span><br></pre></td></tr></table></figure><h4 id="重写Cell的显示"><a href="#重写Cell的显示" class="headerlink" title="重写Cell的显示"></a>重写Cell的显示</h4><figure class="highlight swift"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">override</span> <span class="keyword">func</span> <span class="title function_">tableView</span>(<span class="keyword">_</span> <span class="params">tableView</span>: <span class="type">UITableView</span>, <span class="params">cellForRowAt</span> <span class="params">indexPath</span>: <span class="type">IndexPath</span>) -> <span class="type">UITableViewCell</span> {</span><br><span class="line"> <span class="keyword">var</span> cell <span class="operator">=</span> <span class="keyword">self</span>.tableView.dequeueReusableCell(withIdentifier: <span class="string">"Cell"</span>) <span class="comment">// 标识</span></span><br><span class="line"> <span class="keyword">if</span>(cell <span class="operator">==</span> <span class="literal">nil</span>){</span><br><span class="line"> cell <span class="operator">=</span> <span class="type">UITableViewCell</span>() <span class="comment">// 初始化新的Cell</span></span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> cell<span class="operator">!</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure><h4 id="只显示有数据的-Cell"><a href="#只显示有数据的-Cell" class="headerlink" title="只显示有数据的 Cell"></a>只显示有数据的 Cell</h4><figure class="highlight swift"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">self</span>.tableView.tableFooterView <span class="operator">=</span> <span class="type">UIView</span>()</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h4 id="首要条件"><a href="#首要条件" class="headerlink" title="首要条件"></a>首要条件</h4><figure class="highlight swift"><table><tr><td class="gutter"><pr</summary>
<category term="Develop" scheme="http://objectyan.github.io/categories/Develop/"/>
<category term="IOS" scheme="http://objectyan.github.io/categories/Develop/IOS/"/>
<category term="Swift" scheme="http://objectyan.github.io/categories/Develop/IOS/Swift/"/>
<category term="IOS" scheme="http://objectyan.github.io/tags/IOS/"/>
<category term="Swift" scheme="http://objectyan.github.io/tags/Swift/"/>
</entry>
<entry>
<title>Android 开源项目</title>
<link href="http://objectyan.github.io/2018/03/26/Android-Open-Source-Project/"/>
<id>http://objectyan.github.io/2018/03/26/Android-Open-Source-Project/</id>
<published>2018-03-26T02:58:41.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><。</a></li><li><a href="http://square.github.io/tape/">tape</a> - 类似于图片加载库(例如UIL、Picasso等)实现异步加载,但是加载的不一定是图片。!</li><li><a href="https://github.com/novoda/image-loader">ImageLoader</a> - ImageLoader 。</li><li><a href="https://github.com/mcxiaoke/android-volley">Volley</a> - Volley 综合框架,包含图片部分, <a href="http://blog.happyhls.me/2014/11/27/volley%E4%B8%8Epicasso%E7%9A%84%E5%AF%B9%E6%AF%94/">Volley与Picasso的对比</a></li><li><a href="https://github.com/Tim9Liu9/TimLiu-Android/blob/master/code.google.com/p/enif">enif</a> - enif 。</li><li><a href="https://github.com/wqandroid/wqgallery">wqgallery</a> - wqgallery实现类似微信选择照片功能,可以通过相机或相册选择,支持单张裁剪,支持单选模式、支持多选模式。</li><li><a href="https://github.com/alexclin0188/httplite">httplite</a> - A android http library。 <a href="http://www.jianshu.com/p/db66b49ec974">Android网络框架httplite使用指南</a></li></ul><h4 id="响应式编程"><a href="#响应式编程" class="headerlink" title="响应式编程"></a>响应式编程</h4><ul><li><a href="https://github.com/ReactiveX/RxAndroid/">RxAndroid</a> - RxAndroid:函数响应式编程 , <a href="https://github.com/mcxiaoke/RxDocs">RxJava</a> -<br> Rx和RxJava文档中文翻译项目, <a href="http://gank.io/post/560e15be2dca930e00da1083">RxJava 详解</a> , <a href="https://github.com/lzyzsd/Awesome-RxJava">RxJava资料汇总</a> 。 <a href="http://alighters.com/blog/2016/05/02/rxjava-plus-retrofitshi-xian-wang-luo-dai-li/">Rxjava+Retrofit<br> 实现全局过期 Token 自动刷新</a></li></ul><h4 id="地图"><a href="#地图" class="headerlink" title="地图"></a>地图</h4><ul><li><a href="http://www.eoeandroid.com/thread-568507-1-1.html">百度地图</a> - Android百度地图 线路规划,模拟运动轨迹,及全景效果。</li><li><a href="https://github.com/airbnb/AirMapView">AirMapView</a> - 支持多个本地地图提供者包括谷歌地图V2和亚马逊地图V2。如果设备没有任何受支持的本地地图提供者,AirMapView会回退到基于web的地图提供者(目前谷歌地图)。</li></ul><h4 id="数据库"><a href="#数据库" class="headerlink" title="数据库"></a>数据库</h4><ul><li><a href="http://ormlite.com/sqlite_java_android_orm.shtml">ORMLite</a> - ORMLite做的最棒但是学习成本有点儿高,ORMLite的文档有点儿烂。</li><li><a href="http://satyan.github.io/sugar/index.html">SugarORM</a> - SugarORM比较轻便, 支持Has a 和 Has many映射,但无法保存集合,没有映射关系。</li><li><a href="http://greenrobot.org/greendao/">GreenDAO</a> - GreenDAO要先建立一个java项目来生成对应的表,一变动又要生成,很不方便。</li><li><a href="https://github.com/pardom/ActiveAndroid">ActiveDriod</a> - ActiveDriod也不错 <a href="http://www.activeandroid.com/">官网</a> 。</li><li><a href="https://github.com/roscopeco/ormdroid">ORMDroid</a> - ormdroid 。</li><li><a href="https://github.com/square/sqlbrite">sqlbrite</a> - 良心企业Square的又一开源项目,当你不想给用ContentProvider,只想简单监听SQLite表增删改的数据变更时可以试试它。</li><li><a href="https://github.com/LuckyJayce/DBExecutor">sqlbrite</a> - DBExecutor android ORM数据库 1.使用了读写锁,支持多线程操作数据。 2.支持操作多个数据库 3.支持事务 4.缓存Sql,缓存表结构。</li><li><a href="https://github.com/FabianTerhorst/Iron">Iron</a> - 一个快速和易用的 NoSQL 数据存储框架。</li><li><a href="https://github.com/orhanobut/hawk">hawk</a> - 一个快速和易用的键值对数据存储框架,支持AES加密,支持SharedPreferences或Sqlite存储,支持Gson解析。</li><li><a href="https://github.com/lusfold/AndroidKeyValueStore">AndroidKeyValueStore</a> - 一个基于 SQLite 的 Key/Value 存储框架。</li><li><a href="https://github.com/Raizlabs/DBFlow">DBFlow</a> - 一个速度极快,功能强大,而且非常简单的 Android 数据库 ORM 库,为你编写数据库代码,DBFlow 已被证明是最好的解决方案。 <a href="https://github.com/xitu/gold-miner/blob/master/TODO/Top-5-Android-libraries-every-Android-developer-should-know-about.md">5<br> 个顶级 Android 开源库</a></li></ul><h4 id="图像浏览及处理"><a href="#图像浏览及处理" class="headerlink" title="图像浏览及处理"></a>图像浏览及处理</h4><ul><li><a href="https://github.com/ggchxx/MPAndroidChart">MPAndroidChart</a> - MPAndroidChart是一个功能强大的图表开源类库:曲线图、柱形图、环形图。</li><li><a href="https://github.com/xcltapestry/XCL-Charts">XCL-Charts</a> - (国人开发)基于Android Canvas来绘制各种图表,使用简便,定制灵活。</li><li><a href="https://github.com/diogobernardino/WilliamChart">WilliamChart</a> - 绘制图表的库,支持LineChartView、BarChartView和StackBarChartView三中图表类型,并且支持 Android<br> 2.2及以上的系统。</li><li><a href="https://github.com/cesards/CropImageView">CropImageView</a> - 原生ImageView只支持centerCrop,这里有支持9个方向裁剪的ImageView。</li><li><a href="https://github.com/IsseiAoki/SimpleCropView">SimpleCropView</a> - 一个Android的图片裁剪库,使用简单,易于定制。</li><li><a href="https://github.com/PaNaVTEC/DrawableView">DrawableView</a> - DrawableView实现画板功能,可以改变画笔粗细,颜色,支持撤销功能。</li><li><a href="https://github.com/dolphinwang/ImageCoverFlow">ImageCoverFlow</a> - ImageCoverFlow效果不错的画廊控件 可以设置画廊一次可见图片的张数,和其他第三方Gallery控件不同的是,该控件直接继承自View,而不是sdk中的Gallery控件。</li><li><a href="https://github.com/davidschreiber/FancyCoverFlow">FancyCoverFlow</a> - 支持Item切换动画效果的类似Gallery View。 <a href="https://github.com/LittleLiByte/GlFancyCoverFlow">改进版本</a> 可以无限轮播,可以选择自动轮播或者<br> 手动滑动。</li><li><a href="https://github.com/bingoogolapple/BGABanner-Android">BGABanner-Android</a> - demo中演示了引导页、以及通过fresco、android-async-http、gson实现广告条的自动轮播效果(splash<br> 、 ViewPager切换动画) 。</li><li><a href="https://github.com/lsjwzh/RecyclerViewPager">RecyclerViewPager</a> - 重写后的 RecyclerViewPager 完全继承自RecyclerView,可以自定义触发翻页的距离,可自定义翻页速度,支持VerticalViewPager,支持Fragment。</li><li><a href="https://github.com/Skykai521/StickerCamera">StickerCamera</a> - 可以说是一个完整的相机、图片编辑的 APP,集成了大部分市面上有的同类 APP 的功能,裁剪、滤镜、贴纸应有尽有。</li><li><a href="https://github.com/debolee/demo6_PhotoRiver">demo6_PhotoRiver</a> - 图片流动显示的demo,可以点击流动中的图片放大显示,双击空白处图片以九宫格排列。</li><li><a href="https://github.com/wasabeef/glide-transformations">glide-transformations</a> - 一个基于Glide的transformation库,拥有裁剪,着色,模糊,滤镜等多种转换效果。</li><li><a href="https://github.com/recruit-lifestyle/ColoringLoading">ColoringLoading</a> - 一个用纯代码实现自动绘画效果动画的项目。</li><li><a href="https://github.com/SmartDengg/SmartDrawing">SmartDrawing</a> - 一个轻量级的手绘板,加入了一点截图功能。这只是一个Demo。并不能作为类库,也不是完整的项目工程,仅供学习或参考使用。</li><li><a href="https://github.com/mxn21/SlidingCard">SlidingCard</a> - 漂亮的卡片滑动翻页特效。</li><li><a href="https://github.com/LuckyJayce/LargeImage">LargeImage</a> - 加载大图 可以高清显示10000*10000像素的图片。</li><li><a href="https://github.com/pengjianbo/GalleryFinal">GalleryFinal</a> - 自定义相册,实现了拍照、图片选择(单选/多选)、 裁剪(单/多裁剪)、旋转、ImageLoader无绑定任由开发者选 择、功能可配置、主题样式可配置。GalleryFinal为你定制相册。</li><li><a href="https://github.com/D-clock/AndroidAlbum">AndroidAlbum</a> - AndroidAlbum图片选择器:1、MVP结构设计;2、工厂模式对载图框架进行封装抽象,方便替换其他载图框架;3、闪退日志的搜集,方便揪BUG。</li><li><a href="https://github.com/Yalantis/uCrop">uCrop</a> - uCrop 是 Yalantis 推出的又一款力作, 用于裁剪 Android 系统上的图片, 致力于打造最佳的图片裁剪体验。</li><li><a href="https://github.com/yulu/crop-image-layout">crop-image-layout</a> - crop-image-layout:图片裁切布局。</li><li><a href="https://github.com/qhutch/RenderscriptHistogramEqualization">RenderscriptHistogramEqualization</a> - <a href="http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2016/0504/4205.html">RenderScript<br> :简单而快速的图像处理</a></li></ul><h4 id="视频音频处理"><a href="#视频音频处理" class="headerlink" title="视频音频处理"></a>视频音频处理</h4><ul><li><a href="https://github.com/Bilibili/ijkplayer">ijkplayer</a> - B站开源的视频播放器,支持Android和iOS。</li><li><a href="https://github.com/Bilibili/DanmakuFlameMaster">DanmakuFlameMaster</a> - 这里是Android上最好的开源弹幕引擎·烈焰弹幕使。</li><li><a href="https://github.com/TheFinestArtist/YouTubePlayerActivity">YouTubePlayerActivity</a> - 一个可以播放YouTube视频的Activity,支持屏幕旋转、声音控制、播放失败处理、可以自定义Activity关闭动画以及在横屏播放的时候自动隐藏status<br> bar。</li><li><a href="https://github.com/xiongwei-git/AndroidVideoPlayer">AndroidVideoPlayer</a> - 开源的 Android 视频播放器,支持 DLNA。</li><li><a href="https://github.com/w9xhc/Hide-Music-Player">Hide-Music-Player</a> - Hide音乐播放器。</li><li><a href="https://github.com/psaravan/JamsMusicPlayer">JamsMusicPlayer</a> - 是一个功能强大的 Android 开源播放器, 作者将原本收费的项目拿出来开源, 实在令人敬佩。</li><li><a href="https://github.com/Piasy/RxAndroidAudior">RxAndroidAudior</a> - RxAndroidAudior目前最鲁棒的Android声音录制和播放封装库了, <a href="http://blog.piasy.com/Robust-Android-Audio-encapsulation/">说明</a> 。</li><li><a href="https://github.com/naman14/Timber">Timber</a> - 一款遵循了Material Design并且设计精美的播放器 Timber Music Player,已经在google play上架。</li><li><a href="https://github.com/JeroenMols/LandscapeVideoCamera">LandscapeVideoCamera</a> - 一款功能强大的 Android 视频录制库, 仅允许横屏录制, 提供细粒度控制视频的质量与文件大小。</li></ul><h4 id="测试及调试"><a href="#测试及调试" class="headerlink" title="测试及调试"></a>测试及调试</h4><ul><li><a href="https://github.com/kyze8439690/DevelopQuickSetting">DevelopQuickSetting</a> - 快速开启关闭开发者设置的工具,提供了app界面和桌面widget,能快速打开关闭overdraw,layout border,gpu<br> rendering,adb wifi,不保存activity实例等功能。</li><li><a href="http://www.decompileandroid.com/">decompileandroid</a> - 在线反编译apk文件。</li><li><a href="https://github.com/skylot/jadx">jadx</a> - 一个Android反编译神器,不同于常见的dex2jar,这个反编译器生成代码的try/catch次数更少,View也不再是数字id了,可读性更高。</li><li><a href="https://github.com/androguard/androguard">Androguard</a> - Androguard使用Python写的一系列逆向工具集,功能很强大哦,对逆向工程感兴趣的小伙伴可以这个系列, <a href="http://www.technotalkative.com/part-1-reverse-engineering-using-androguard/">教程</a> 。</li><li><a href="https://github.com/orhanobut/logger">logger</a> - 一个简单、漂亮、功能强大的Android日志程序。</li><li><a href="https://github.com/openstf/stf">stf</a> - WEB 端批量移动设备管理控制工具 STF 的环境搭建和运行, <a href="https://testerhome.com/topics/2988">使用说明</a> 。</li><li><a href="https://github.com/MasonLiuChn/DecompileApk">DecompileApk</a> - 一键反编译 APK,输出所有反编译后的代码、资源,使用方便。</li><li><a href="https://github.com/macroday/AppCrashTracker">AppCrashTracker</a> - 一个异常追踪器,可以生成一个 JSON 格式的日志并可以上传到服务器。</li></ul><h4 id="动态更新热更新"><a href="#动态更新热更新" class="headerlink" title="动态更新热更新"></a>动态更新热更新</h4><ul><li><a href="https://github.com/alibaba/dexposed">dexposed</a> - 淘宝 支付宝的Android底层技术团队即将为Dexposed开源项目贡献一个重要的扩展能力 —— 方法粒度的完整替换,大幅度降低基于AOP方式替换大型方法的开发成本, <a href="http://www.apkbus.com/android-244457-1-1.html">使用教程</a> , <a href="http://www.jianshu.com/p/14edcb444c51">Android平台免Root无侵入AOP框架Dexposed使用详解</a> 。 <a href="http://my.oschina.net/fengcunhan/blog/487296">Android<br> Hotpatch系列之-项目介绍</a> - <a href="https://github.com/fengcunhan/Hotpatch-Sample">客户端例子实现</a> , <a href="https://github.com/fengcunhan/Hotpatch-SimpleServer">服务器简易实现</a> 。热更新。</li><li><a href="https://github.com/rovo89/Xposed">Xposed</a> - Xposed是一款可以在不修改APK的情况下影响程序运行的框架服务, <a href="http://www.csdn.net/article/2015-08-14/2825462">Android<br> Hook神器:XPosed入门与登陆劫持演示</a> 。热更新。</li><li><a href="http://microsoft.github.io/code-push/">code-push</a> -大微软推出的一套可以为用 React Native 和 Cordova 开发的 App 提供代码热更新的方案。</li><li><a href="https://github.com/CtripMobile/DynamicAPK">DynamicAPK</a> - 实现Android App多apk插件化和动态加载,支持资源分包和热修复。</li><li><a href="https://github.com/AlanCheen/AndFixDemo">AndFixDemo</a> - AndFix是alibaba出品的开源热更新技术。</li><li><a href="https://github.com/HujiangTechnology/gradle_plugin_android_aspectjx">gradle_plugin_android_aspectjx</a> - 通过Gradle Transform和aspectj来实现代码动态修改,业务逻辑数据埋点、性能数据统计等侵入性修改从此不再需要修改业务代码,完美解决Dexposed兼容性问题,实现代码自动插桩。 <a href="https://github.com/HujiangTechnology/AspectJX-Demo">AspectJX-Demo</a></li><li><a href="https://github.com/meituan/RoboAspectJ">RoboAspectJ</a> - 美团出品的开源热更新技术。</li></ul><h4 id="消息推送与及时通讯"><a href="#消息推送与及时通讯" class="headerlink" title="消息推送与及时通讯"></a>消息推送与及时通讯</h4><ul><li><a href="http://www.jianshu.com/p/b2ca52337fe5">即时通讯和sns开源项目汇总</a> - 源码提供!Android即时通讯和sns开源项目汇总。 </li></ul><h4 id="客户端"><a href="#客户端" class="headerlink" title="客户端"></a>客户端</h4><ul><li><a href="https://github.com/sues-lee/SuesNews">SuesNews新闻客户端</a> - 腾飞新闻,一个符合 Google Material Design 的 Android 校园新闻客户端 , <a href="http://www.eoeandroid.com/thread-569074-1-1.html">新闻客户端说明</a> 。</li><li><a href="http://bbs.aiyingli.com/forum.php?mod=viewthread&tid=12170">新闻客户端</a> - Android应用源码比较不错的新闻客户端,本项目启动引导登录注册用户中心列表显示文章分页下拉刷新文章收藏更新反馈等新闻客户端常见的功能都有,项目分层合理,代码质量较高。</li><li><a href="https://github.com/hidroh/materialistic">materialistic</a> - Material Desgin风格的Hacker News客户* 端。</li><li><a href="https://github.com/DrKLO/Telegram">Telegram</a> - Telegram 是一款专注于速度、安全的短信息应用,快速、简单、免费。Telegram 支持群组聊天,最高200人,最高支持分享1GB的视频,其它图片等等更是不在话下。而且所有信息全部支持同步。由于频发的隐私问题,所以<br> Telegram 也很注重通信安全。</li><li><a href="https://github.com/liuch930/SuZhouTong-client-for-android">SuZhouTong-client-for-android</a> - 苏州通android客户端,非常多的UI效果。</li><li><a href="https://github.com/guxun12/ele_demo">ele_demo</a> - 仿【饿了么】订餐软件的一个demo。</li><li><a href="https://github.com/Qixingchen/MD-BiliBili">MD-BiliBili</a> - Material Design 版 BiliBili Android 客户端。</li><li><a href="https://github.com/wangdan/AisenWeiBo">AisenWeiBo</a> - Aisen微博是新浪微博的第三方客户端,UI遵循Material Design:遵循Material Design、发布多图、离线下载、私信(触屏版、颜色主题切换、手势返回,4.4、5.0状态栏变色、离线编辑,定时发布多图、gif、长微博预览。 <a href="https://github.com/06peng/FrescoDemo">FrescoDemo</a> 。</li><li><a href="http://bbs.aiyingli.com/forum.php?mod=viewthread&tid=12274">快递查询</a> - 使用了爱查快递 <a href="http://www.ickd.cn/">www.ickd.cn</a> 的api接口,可以查询申通、EMS、顺风、圆通、中通、韵达、天天、汇通、全锋、德邦、宅急送等11种快递的单号信息,支持手动输入单号和扫描单号(红米测试的时候扫描单号有点问题),可以保存单号查询记录方便下次查询,,另外还包括了网络状态判断、快递自动更新、软件更新等功能,项目完美运行,有很详细的中文注释和逻辑分层。</li><li><a href="http://git.oschina.net/yso/SmartCall">SmartCall</a> - SmartCall Android 企业通讯录。</li><li><a href="http://download.jikexueyuan.com/detail/id/539.html#0-tsina-1-72241-397232819ff9a47a7b7e80a40613cfe1">Android-高仿大众点评客户端源码</a> - Android-高仿大众点评客户端源码。</li><li><a href="http://bbs.aiyingli.com/forum.php?mod=viewthread&tid=12974">八个Android项目源码</a> - 八个Android项目源码,大部分功能相信可以在实战项目中直接使用,供大家下载学习,大部分项目是基于Android Studio开发,IDE为Eclipse的童鞋可通过网上教程自行转换,这里就不多说了。大家可以下载下来学习看看! <a href="http://pan.baidu.com/s/1mgMlCBA">百度云盘下载地址</a> 。</li><li><a href="https://github.com/mcxiaoke/minicat">minicat</a> - 一个简洁的饭否App,支持Android 4.0以上版本。</li><li><a href="https://github.com/SkillCollege/SimplifyReader">SimplifyReader</a> - 一款基于Google Material Design设计开发的Android客户端,包括新闻简读,图片浏览,视频爽看 ,音乐轻听以及二维码扫描五个子模块。</li><li><a href="https://github.com/laowch/GithubTrends">GithubTrends</a> - 是一个用来看查看 GitHub 热门项目的 Android App, 遵循 Material Design, 支持订阅 50 多种编程语言, 9 种颜色主题切换,<br> 可在上面收藏喜欢的项目。</li><li><a href="https://github.com/wingjay/jianshi">jianshi</a> - jianshi简诗是国人开发的一个用于记录文字信息的 Android 完整应用, 作者仅用了一天便将其开发出来, 并将开发的流程记录成文放到了简书上。</li><li><a href="https://github.com/tangqi92/BuildingBlocks">BuildingBlocks</a> - 积木: 一个以知乎日报作为数据展现内容;以抽屉菜单作为功能扩展入口;依循 Material Design 作为主导设计 UI 的应用。</li><li><a href="https://github.com/DreaminginCodeZH/Douya">Douya</a> - 开源的 Material Design 豆瓣客户端。</li><li><a href="https://github.com/maoruibin/TranslateApp">TranslateApp</a> - 一个实现『划词翻译』功能的 Android 开源应用。</li></ul><h4 id="插件"><a href="#插件" class="headerlink" title="插件"></a>插件</h4><ul><li><a href="http://stormzhang.com/android/2015/05/26/android-tools/">Android Studio 插件和工具</a> - 5个 推荐几个有用的 Android Studio 插件和工具(ButterKnife、selectorChapek、GsonFormat、ParcelableGenerator、LeakCanary)。</li><li><a href="http://www.imooc.com/article/1148">8 个最优秀的 Android Studio 插件</a> - 8 个最优秀的 Android Studio 插件(H.A.X.M(硬件加速执行管理器)、Genymotion、Android Drawable Importer、Android<br> ButterKnife Zelezny、Android Holo Colors Generator、Robotium Recorder、jimu Mirror、Strings-xml-tools)。</li><li><a href="https://github.com/JesusFreke/smali/wiki/smalidea">smalidea</a> - 一款 IntelliJ IDEA/Android Studio 的 smali 插件~ , <a href="http://drops.wooyun.org/tips/7181">Smalidea<br> 无源码调试 Android 应用</a> 。</li><li><a href="https://github.com/sangmingming/gradle-fir-plugin">gradle-fir-plugin</a> - 一个上传apk到fir的gradle插件, <a href="http://blog.isming.me/2015/08/01/gradle-fir-plugin/">使用说明</a> 。</li><li><a href="https://github.com/avast/android-butterknife-zelezny">android-butterknife-zelezny</a> - 一个ButterKnife的Android Studio插件, 该插件可以让你手动生成上述注入代码。</li><li><a href="https://github.com/ligi/GradleDependenciesHelperPlugin">GradleDependenciesHelperPlugin</a> - Gradle 依赖自动补全插件。</li><li><a href="https://github.com/importre/android-selector-intellij-plugin">android-selector-intellij-plugin</a> - 可以根据指定颜色生成Selector Drawable的插件。</li><li><a href="http://www.imooc.com/article/1425">7个最佳的Android模拟器</a> - 7个最佳的Android模拟器。</li><li><a href="https://github.com/vanniktech/gradle-android-javadoc-plugin">gradle-android-javadoc-plugin</a> - 可以生成 java doc 的 Gradle 插件。</li><li><a href="https://github.com/vanniktech/gradle-android-junit-jacoco-plugin">gradle-android-junit-jacoco-plugin</a> - 可以生成代码单元测试覆盖率报告的 Gradle 插件。</li><li><a href="https://github.com/vanniktech/gradle-android-apk-size-plugin">gradle-android-apk-size-plugin</a> - 可以将 Apk 大小记录到 CSV 文件的 Gradle 插件。</li><li><a href="http://www.jianshu.com/p/6f5f818afe4b">几款实用的Android Studio 插件</a> - 几款实用的Android Studio 插件:1、android-butterknife-zelezny;2、Gsonformat:可根据json数据快速生成java实体类;3、Android<br> Postfix Completion;4、AndroidAccessors;5、Lifecycle Sorter:根据Activity或者fragment的生命周期对其生命周期方法位置进行先后排序,快捷键Ctrl + alt + K;6、JsonOnlineViewer;7、CodeGlance;8、findBugs-IDEA:帮你一起找bug的;9、ADB WIFI:使用wifi无线调试你的app,无需root权限。</li><li><a href="https://github.com/MummyDing/Leisure">Leisure</a> - 闲暇(Leisure)是一款集”知乎日报”、“果壳科学人”、“新华网新闻”以及“豆瓣图书”于一体的阅读类Android应用。 果壳、知乎和豆瓣在国内拥有大量用户,这些社区的用户每天都产生很多高质量内容。闲暇以其简介的风格将这几大社区<br> 的优质内容整合于一体,使得用户能有效地获取这些内容,大大节省了用户的时间。 <a href="http://coolapk.com/apk/com.mummyding.app.leisure">酷安下载地址</a> .</li><li><a href="https://github.com/drakeet/LayoutFormatter">LayoutFormatter插件</a> - 可自动将乱序的布局文件进行重新属性排序并格式化,比如 style 和 android:id 必须排在前面,紧接着 layout、padding,而值设定如<br> text 只能排在最后。</li></ul><h4 id="出名框架"><a href="#出名框架" class="headerlink" title="出名框架"></a>出名框架</h4><ul><li><a href="https://github.com/wyouflf/xUtils">xUtils</a> - xUtils 包含了很多实用的android工具。支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响。最低兼容android<br> 2.2 (api level 8)。目前xUtils主要有四大模块:DbUtils模块、ViewUtils模块、HttpUtils模块、BitmapUtils模块。</li><li><a href="http://git.oschina.net/fuhai/afinal">afinal</a> - Afinal是一个android的ioc,orm框架,内置了四大模块功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。</li><li><a href="https://github.com/JakeWharton/butterknife">ButterKnife</a> - ButterKnife是一个专注于Android系统的View注入框架,让你从此从这些烦人臃肿的代码中解脱出来, <a href="http://stormzhang.com/openandroid/android/2014/01/12/android-butterknife/">ButterKnife–View注入框架</a> 。 <a href="https://github.com/xitu/gold-miner/blob/master/TODO/Top-5-Android-libraries-every-Android-developer-should-know-about.md">5<br> 个顶级 Android 开源库</a></li><li><a href="https://github.com/greenrobot/EventBus">EventBus</a> - EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。 <a href="https://github.com/mcxiaoke/xBus">xBus</a> -<br> xBus - 简洁的EventBus实现。</li><li><a href="https://github.com/wequick/Small">Small</a> - 做最轻巧的跨平台插件化框架,目前已支持Android、iOS以及html5插件。并且三者之间可以通过同一套javascript接口进行通信。</li><li><a href="https://github.com/mmin18/LayoutCast">LayoutCast</a> - LayoutCast可以在应用不重启的情况下,将res文件夹下的改动直接同步到手机上。使用LayoutCast,可以节约Android开发者的大量编译等待时间,非常适合真机调试界面的时候使用,推荐每一位开发者安装该利器。BUCK很快,但入侵性强,项目改动大,LayoutCast对项目改动小。</li><li><a href="https://github.com/square/retrofit/tree/version-one">retrofit</a> - retrofit将 REST API 转换为 Java 接口。 <a href="https://github.com/xitu/gold-miner/blob/master/TODO/Top-5-Android-libraries-every-Android-developer-should-know-about.md">5<br> 个顶级 Android 开源库</a></li><li><a href="https://github.com/google/dagger">Dagger2</a> - Dagger 2 是著名的依赖注入库 <a href="https://github.com/square/dagger">Dagger</a> 的继承者,我们强烈推荐它。 <a href="http://google.github.io/dagger/">文档</a> , <a href="https://github.com/xitu/gold-miner/blob/master/TODO/Top-5-Android-libraries-every-Android-developer-should-know-about.md">5<br> 个顶级 Android 开源库</a></li></ul><h4 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h4><ul><li><a href="https://code.google.com/archive/p/java-zhconverter">java-zhconverter</a> - java-zhconverter是一个简繁体中文互换的Java开源类库。</li><li><a href="https://github.com/dlew/joda-time-android">joda-time-android</a> - 一个超赞的时间处理的库,Joda-Time ! 他能帮你轻松处理时区,处理时间加减,计算到期时间等等场景下的问题。 <a href="http://www.joda.org/joda-time/key_partial.html">java版本</a></li><li><a href="https://github.com/luozi/AssistiveTouch">AssistiveTouch</a> - 配合Android手机沉浸式隐藏虚拟按键后快捷操作 (Nexus5屏幕变大了)。</li><li><a href="https://github.com/naman14/S-Tools">S-Tools</a> - S-Tools一个可以实时查看的CPU状态和手机各类传感器数据,还有一些例如颜色选择、指南针和设备信息等功能。</li><li><a href="https://github.com/lzyzsd/JsBridge">JsBridge</a> - 模仿微信webview的JsBridge,安全方便的实现js和Java的互相调用,主要通过loadUrl和shouldOverrideUrl实现。</li><li><a href="https://github.com/MostafaGazar/soas">Sample Of All Samples</a> - 提供大部分Android5.0组件的示例应用。</li><li><a href="https://github.com/s1rius/Android-Package-Channel">Android-Package-Channel</a> - 美团网做的把Android多渠道打包工具,打包时间缩短到一分钟,python脚本。</li><li><a href="http://www.race604.com/fast-apk-packaging/">fast-apk-packaging</a> - Android不需要重新编译打渠道包。</li><li><a href="https://github.com/lihei12345/android_gradle_script">android_gradle_script</a> - gradle批量打包脚本,用txt配置一下,就可以支持多个渠道打包,适合国内这种动不动上百个渠道包的环境。目前有个问题,一次打包脚本超过80个就会GC问题。</li><li><a href="https://github.com/MasonLiuChn/BatchPackApk">BatchPackApk</a> - 免签名直接打包工具。</li><li><a href="https://github.com/mcxiaoke/gradle-packer-plugin/blob/master/readme.md">Android多渠道打包工具Gradle插件</a> - Android多渠道打包工具Gradle插件。</li><li><a href="http://avatarqing.github.io/Gradle-Plugin-User-Guide-Chinese-Verision/">Gradle-Plugin-User-Guide-Chinese-Verision</a> - Gradle插件使用指南中文版。</li><li><a href="http://gradle-guide.books.yourtion.com/">gradle-guide.books</a> - Android Gradle 插件中文指南(GitBook)。</li><li><a href="https://github.com/ahui2823/package_tool">Android-package_tool</a> - 该工程用于编译多渠道Android应用,替换相应的标签,然后重新打包,用perl脚本实现。</li><li><a href="http://www.orchidshell.com/">兰贝壳儿</a> - Android多渠道打包解决方案(兰贝壳儿),eclipse插件。</li><li><a href="https://github.com/pedrovgs/Algorithms">Algorithms</a> - 常见算法问题的Java实现。</li><li><a href="https://github.com/iluwatar/java-design-patterns">java-design-patterns</a> - 一个常见设计模式的java实现。</li><li><a href="https://github.com/denley/preferencebinder">PreferenceInjector</a> - SharedPreference注入开源库,SharedPreference key与某个变量绑定、监听key变化、初始化key都可以通过注解完成。</li><li><a href="http://www.ocpsoft.org/prettytime/">prettytime</a> - 一个实用的人性化的时间显示,比如:几分钟前,几天前。</li><li><a href="https://github.com/saulmm/Material-Movies">Material-Movies</a> - Material Design 下的Movie App(电影展示),可供学习,或者直接二次开发。</li><li><a href="https://github.com/PaNaVTEC/Clean-Contacts">Clean-Contacts</a> - 充满技术含量的一个 Contact App(联系人)。</li><li><a href="https://github.com/waylife/RedEnvelopeAssistant">RedEnvelopeAssistant</a> - 完全免费开源的抢红包软件、做这个软件纯粹是发现Android的模拟点击十分好玩,然后顺道写了一个,有此基础,可以再扩展其他的很多模拟点击程序<br> 。</li><li><a href="https://github.com/joyoyao/superCleanMaster">superCleanMaster</a> - 一键清理开源版,包括内存加速,缓存清理,自启管理,软件管理等。</li><li><a href="https://github.com/LuckyJayce/LoadViewHelper">LoadViewHelper</a> - 切换加载中,加载失败,加载成功布局,定义一个LoadViewHelper所有界面通用。</li><li><a href="https://github.com/futurice/android-best-practices">android-best-practices</a> - android最佳实践</li><li><a href="http://android.jobbole.com/80684/">Android最佳实践</a> - 安卓最佳实践(1):安卓开发–中文。</li><li><a href="https://github.com/futurice/android-best-practices/blob/master/translations/Chinese/README.cn.md">Android最佳实践</a> - 从Futurice公司Android开发者中学到的经验。<br> 遵循以下准则,避免重复发明轮子。若您对开发iOS或Windows Phone 有兴趣, 请看iOS Good Practices 和 Windows client Good Practices 这两篇文章。</li><li><a href="http://blog.csdn.net/chen52671/article/details/44751347">如何安装ACRA</a> - 如何安装ACRA-一个Android应用Crash跟踪系统—在自己的服务器上。</li><li><a href="http://blog.csdn.net/love_xsq/article/details/44616925">Android ocr识别文字介绍</a> - Android ocr识别文字介绍 。</li><li><a href="https://github.com/florent37/DaVinci">DaVinci</a> - DaVinci是一个适用于Android Wear平台的图片下载和缓存library。</li><li><a href="https://github.com/FX-Max/Point-of-Android">Point-of-Android</a> - Android 一些重要知识点解析整理 。</li><li><a href="https://github.com/mcsong/AppStoreLibrary">AppStoreLibrary</a> - 检测是否在appstore安装了应用,搜索应用。</li><li><a href="https://github.com/liaohuqiu/leakcanary-demo">LeakCanary</a> - 利用此类库,排查内存泄露变得非常简单, <a href="http://www.liaohuqiu.net/cn/posts/leak-canary-read-me/">LeakCanary<br> 中文使用说明</a> , <a href="http://www.liaohuqiu.net/cn/posts/leak-canary/">LeakCanary: 让内存泄露无所遁形</a> 。</li><li><a href="https://github.com/Kotlin/anko">anko</a> - 快速开发框架。</li><li><a href="https://github.com/tianzhijiexian/CommonAdapter">CommonAdapter</a> - 通过对于原生Adapter的封装,产生了支持ListView,GridView,RecyclerView的简单通用的Adapter。这种方式将item变成独立的“视图”对象,方便操作,又增加了可扩展性。</li><li><a href="https://github.com/richardradics/MVPAndroidBootstrap">MVPAndroidBootstrap</a> - 一个Android MVP 模式实例项目。</li><li><a href="https://github.com/8tory/json2notification">json2notification</a> - 一个多功能方便好用的notification通知栏通知开源库。</li><li><a href="https://github.com/dm77/barcodescanner">barcodescanner</a> - 一个封装好的基于zxing二维码扫描库。</li><li><a href="https://github.com/bingoogolapple/BGAQRCode-Android">BGAQRCode-Android</a> - 一个可高度定制二维码扫描界面、生成二维码、识别图片二维码库。</li><li><a href="https://github.com/mcxiaoke/mqtt">mqtt</a> - MQTT 协议 3.1.1 中文翻译版。</li><li><a href="https://github.com/Qihoo360/DroidPlugin">Droid Plugin</a> - DroidPlugin 是360手机助手在Android系统上实现了一种新的插件机制:它可以在无需安装、修改的情况下运行APK文件,此机制对改进大型APP的架构,实现多团队协作开发具有一定的好处。</li><li><a href="https://github.com/tianzhijiexian/JsonAnnotation">JsonAnnotation</a> - 利用注解自动生成Gson‘s Model的库。</li><li><a href="https://github.com/geeeeeeeeek/WeChatLuckyMoney">WeChatLuckyMoney</a> - 微信抢红包插件。</li><li><a href="https://github.com/liaohuqiu/android-support-23.2-sample">android-support-23.2-sample</a> - support 库在 23.2 版本新增内容示例项目。</li><li><a href="https://github.com/Rtsunoath/Sunoath">Sunoath</a> - 基于MVP+Retrofit+Material Design的Demo。</li><li><a href="https://github.com/mzule/ActivityRouter">ActivityRouter</a> - 一个url打开activity的Router库,支持指定参数类型,支持参数transfer,支持callback。</li></ul><h4 id="好的文章"><a href="#好的文章" class="headerlink" title="好的文章"></a>好的文章</h4><ul><li><p><a href="http://www.apkbus.com/android-244454-1-1.html">高效抽取loading</a> - 高效抽取loading,再多的加载页面也不怕。</p></li><li><p><a href="http://news.cnblogs.com/n/505055/">修复bug的12个关键步骤</a> - 修复bug的12个关键步骤。</p></li><li><p><a href="https://github.com/hehonghui/android-tech-frontier">Android开发技术前线</a> - 里面是安卓的一些外国前沿文章的翻译,想课余时间学习 Android 的看看,已经收录了。</p></li><li><p><a href="http://droidyue.com/blog/2015/09/26/android-tuning-tool-strictmode/">android-tuning-tool-strictmode</a> - Android性能调优利器StrictMode。</p></li><li><p><a href="https://github.com/tangqi92/Android-Tips">Android-Tips</a> - Android-Tips 安卓方面各种难点坑汇总,按字母排序。</p></li><li><p><a href="https://github.com/JeffLi1993/jvm-core-learning-example">jvm-core-learning-example</a> - 关于Java虚拟机核心知识点学习积累的例子,是初学者及虚拟机核心知识巩固的最佳实践。。</p></li><li><p><a href="http://www.jianshu.com/p/0acc12c29c1b">Translucent System Bar 的最佳实践</a> - Translucent System Bar 的最佳实践。</p></li><li><p><a href="http://www.jianshu.com/p/79604c3ddcae">最详细的 Toolbar 开发实践总结</a> - 最详细的 Toolbar 开发实践总结。</p></li><li><p><a href="http://www.jianshu.com/p/c8cbeb7ea43a">最详细的 NavigationDrawer 开发实践总结</a> - 最详细的 NavigationDrawer 开发实践总结。</p></li><li><p><a href="https://github.com/xitu/gold-miner/blob/master/TODO/approaching-android-with-mvvm.md">MVVM 模式介绍</a> - MVVM 模式介绍。</p></li><li><p><a href="http://zjutkz.net/2016/04/13/%E9%80%89%E6%8B%A9%E6%81%90%E6%83%A7%E7%97%87%E7%9A%84%E7%A6%8F%E9%9F%B3%EF%BC%81%E6%95%99%E4%BD%A0%E8%AE%A4%E6%B8%85MVC%EF%BC%8CMVP%E5%92%8CMVVM/">选择恐惧症的福音!教你认清MVC,MVP和MVVM</a> -<br> 选择恐惧症的福音!教你认清MVC,MVP和MVVM。</p></li><li><p>RecyclerView技术栈 - RecyclerView技术栈。</p></li><li><p><a href="https://github.com/AntBranch/awesome-github">awesome-github</a> - awesome-github:收集这个列表,只是为了更好地使用亲爱的GitHub。</p></li><li><p><a href="http://www.simlinux.com/archives/1689.html">Android多渠道打包这样做才酸爽</a> - Android多渠道打包这样做才酸爽。</p></li><li><p><a href="http://gudong.name/2016/04/07/checkstyle.html">使用 CheckStyle 检查代码</a> - 使用 CheckStyle 检查代码。 </p><p>收集android上开源的酷炫的交互动画和视觉效果</p></li><li><p><a href="https://github.com/Rano1/Interactive-animation/blob/master/README.md">酷炫的交互动画和视觉效果</a> - 描述:收集android上开源的酷炫的交互动画和视觉效果。1.交互篇,2.视觉篇。</p></li><li><p><a href="http://www.androidchina.net/1992.html">Android酷炫实用的开源框架(UI框架)</a> - Android酷炫实用的开源框架(UI框架)25个。</p></li></ul><h4 id="交互篇"><a href="#交互篇" class="headerlink" title="交互篇"></a>交互篇</h4><ul><li><p>1、SlidingUpPanelLayout 项目介绍:他的库提供了一种简单的方式来添加一个可拖动滑动面板(由谷歌音乐推广,谷歌地图和Rdio)你的Android应用程序。 项目地址: <a href="https://github.com/umano/AndroidSlidingUpPanel">https://github.com/umano/AndroidSlidingUpPanel</a></p></li><li><p>2、FoldableLayout 项目介绍:折叠展开点击的ITEM 项目地址: <a href="https://github.com/alexvasilkov/FoldableLayout">https://github.com/alexvasilkov/FoldableLayout</a></p></li><li><p>3、android-flip 项目介绍:折叠翻页效果 项目地址: <a href="https://github.com/openaphid/android-flip">https://github.com/openaphid/android-flip</a></p></li><li><p>4、SwipeBackLayout 项目介绍:拖动关闭当前活动窗体 项目地址: <a href="https://github.com/ikew0ng/SwipeBackLayout">https://github.com/ikew0ng/SwipeBackLayout</a></p></li><li><p>5、AndroidImageSlider 项目介绍:一个漂亮的Slider,可以通过自定义达到更好的效果 项目地址: <a href="https://github.com/daimajia/AndroidImageSlider">https://github.com/daimajia/AndroidImageSlider</a></p></li><li><p>6、Android-ParallaxHeaderViewPager 项目介绍:栏目展示动画,自动播放,滚动下方列表时候,收缩效果 项目地址: <a href="https://github.com/kmshack/Android-ParallaxHeaderViewPager">https://github.com/kmshack/Android-ParallaxHeaderViewPager</a></p></li><li><p>7、FragmentTransactionExtended 项目介绍: 漂亮的图标加载动画。 </p><p>项目地址: <a href="https://github.com/DesarrolloAntonio/FragmentTransactionExtended">https://github.com/DesarrolloAntonio/FragmentTransactionExtended</a></p></li><li><p>8、FragmentTransactionExtended 项目介绍:Android按钮可以化身进度 项目地址: <a href="https://github.com/dmytrodanylyk/circular-progress-button">https://github.com/dmytrodanylyk/circular-progress-button</a></p></li><li><p>9、floatlabelededittext 项目介绍:简单的实现浮动标签EditText:Android视图使用EditText之上,并提示EditText时填充文本。 项目地址: <a href="https://github.com/wrapp/floatlabelededittext">https://github.com/wrapp/floatlabelededittext</a></p></li><li><p>10、QuickReturn 项目介绍:Showcases QuickReturn view as a header, footer, and both header and footer. 给几乎所有可以滑动的 View 加上快速返回的 Header 或者 Footer,使用非常方便。 项目地址: <a href="https://github.com/lawloretienne/QuickReturn">https://github.com/lawloretienne/QuickReturn</a></p></li><li><p>11、VNTNumberPickerPreference 项目介绍:这是一个易于使用的自定义偏好,打开一个对话框中有许多选择。的值被自动保存,你可以设置默认,min -和maxValue方便地在XML。 项目地址: <a href="https://github.com/vanniktech/VNTNumberPickerPreference">https://github.com/vanniktech/VNTNumberPickerPreference</a></p></li><li><p>12、CircularFloatingActionMenu 项目介绍:动画,可定制的圆形浮动菜单为Android, 项目地址: <a href="https://github.com/oguzbilgener/CircularFloatingActionMenu">https://github.com/oguzbilgener/CircularFloatingActionMenu</a></p></li><li><p>13、NiftyDialogEffects 项目介绍:Dialog的各种打开动画,Nifty Modal Dialog Effects look like this(Nifty Modal Window Effects) 项目地址: <a href="https://github.com/sd6352051/NiftyDialogEffects">https://github.com/sd6352051/NiftyDialogEffects</a></p></li><li><p>14、material-menu 项目介绍:变形安卓菜单,返回和删除按钮 项目地址: <a href="https://github.com/balysv/material-menu">https://github.com/balysv/material-menu</a></p></li><li><p>15、AndroidViewHover 项目介绍:我们需要一个悬停视图,显示菜单,显示消息。 项目地址: <a href="https://github.com/daimajia/AndroidViewHover">https://github.com/daimajia/AndroidViewHover</a></p></li><li><p>16、PagedHeadListView 项目介绍:图片轮转切换 </p><p>项目地址: <a href="https://github.com/JorgeCastilloPrz/PagedHeadListView">https://github.com/JorgeCastilloPrz/PagedHeadListView</a></p></li><li><p>17、android-movies-demo 项目介绍:电影列表3级联动,交互 项目地址: <a href="https://github.com/dlew/android-movies-demo">https://github.com/dlew/android-movies-demo</a></p></li><li><p>18、NiftyNotification 项目介绍:提示通知栏的各种动画 </p><p>项目地址: <a href="https://github.com/sd6352051/NiftyNotification">https://github.com/sd6352051/NiftyNotification</a></p></li><li><p>19、SwipeBack 项目介绍:拖动关闭,模范:kicker app( <a href="https://play.google.com/store/apps/details?id=com.netbiscuits.kicker%EF%BC%89">https://play.google.com/store/apps/details?id=com.netbiscuits.kicker)</a> 项目地址: <a href="https://github.com/sockeqwe/SwipeBack">https://github.com/sockeqwe/SwipeBack</a></p></li><li><p>20、AndroidSwipeLayout 项目介绍:类似微信的测拉菜单 </p><p>项目地址: <a href="https://github.com/daimajia/AndroidSwipeLayout">https://github.com/daimajia/AndroidSwipeLayout</a></p></li><li><p>21、SnackBar 项目介绍: 项目地址: <a href="https://github.com/MrEngineer13/SnackBar">https://github.com/MrEngineer13/SnackBar</a></p></li><li><p>22、Swipecards 项目介绍:A Tinder-like cards effect as of August 2014. You can swipe left or right to like or dislike the content. The library creates a similar effect to Tinder’s swipable cards with Fling animation. 项目地址: <a href="https://github.com/Diolor/Swipecards">https://github.com/Diolor/Swipecards</a></p></li><li><p>23、LDrawer 项目介绍:Android抽屉与材料设计动画图标 项目地址: <a href="https://github.com/keklikhasan/LDrawer">https://github.com/keklikhasan/LDrawer</a></p></li></ul><h4 id="视觉篇"><a href="#视觉篇" class="headerlink" title="视觉篇"></a>视觉篇</h4><ul><li><p>1、android-stackblur 项目介绍:毛玻璃,朦胧美 项目地址: <a href="https://github.com/kikoso/android-stackblur">https://github.com/kikoso/android-stackblur</a> DEMO演示:</p></li><li><p>2、BlurEffectForAndroidDesign 项目介绍:实现模糊图形技巧 </p><p>项目地址: <a href="https://github.com/PomepuyN/BlurEffectForAndroidDesign">https://github.com/PomepuyN/BlurEffectForAndroidDesign</a></p></li><li><p>3、Shimmer-android 项目介绍:闪动的文字 项目地址: <a href="https://github.com/RomainPiel/Shimmer-android">https://github.com/RomainPiel/Shimmer-android</a></p></li><li><p>4、WizardPager 项目介绍:它提供了一个示例实现的Android手机上安装一个向导界面 项目地址: <a href="https://github.com/TechFreak/WizardPager">https://github.com/TechFreak/WizardPager</a></p></li><li><p>5、FloatingActionButton 项目介绍:浮动的按钮 项目地址: <a href="https://github.com/FaizMalkani/Fabulous">https://github.com/FaizMalkani/Fabulous</a></p></li><li><p>6、JumpingBeans 项目介绍:跳动的文本 项目地址: <a href="https://github.com/frakbot/JumpingBeans">https://github.com/frakbot/JumpingBeans</a></p></li><li><p>7、android_maskable_layout 项目介绍:可屏蔽的布局 </p><p>项目地址: <a href="https://github.com/christophesmet/android_maskable_layout">https://github.com/christophesmet/android_maskable_layout</a></p></li><li><p>8、activityanimation 项目介绍:Activit之间切换动画 </p><p>项目地址: <a href="https://github.com/flavienlaurent/activityanimation">https://github.com/flavienlaurent/activityanimation</a></p></li><li><p>9、android-shape-imageview 项目介绍:提供了一组自定义形状的android imageview组件,和一个框架来定义更多的形状。实现着色器和位图基于掩模图像视图。 项目地址: <a href="https://github.com/siyamed/android-shape-imageview">https://github.com/siyamed/android-shape-imageview</a></p></li><li><p>10、RippleView 项目介绍:认为模仿的连锁反应在单击推出了Android L </p><p>项目地址: <a href="https://github.com/siriscac/RippleView">https://github.com/siriscac/RippleView</a></p></li><li><p>11、android-ui 项目介绍:一个小部件可以定义的行为之间的动态变化 项目地址:<a href="https://github.com/markushi/android-ui">https://github.com/markushi/android-ui</a></p></li><li><p>12、FlatUI 项目介绍: 项目地址: <a href="https://github.com/eluleci/FlatUI">https://github.com/eluleci/FlatUI</a></p></li></ul><h4 id="UI资源"><a href="#UI资源" class="headerlink" title="UI资源"></a>UI资源</h4><ul><li><a href="http://fontawesome.io/icons/">fontawesome</a> - Font-Awesome图标。</li><li><a href="http://www.uisdc.com/material-design-responsive-design">material-design-responsive-design</a> - 深聊Material Design复杂响应式设计, <a href="http://www.uisdc.com/comprehensive-material-design-note">comprehensive-material-design-note</a> -<br> 帮你全面彻底搞定Material design的学习笔记。</li><li><a href="https://github.com/mikepenz/Android-Iconics">Iconics</a> - 这是一个可以让你在你的项目中使用几乎任何字体图标的库。默认包含 FontAwesome 和 Material Design Icons 还包含 Meteocons<br> 插件。你甚至可以添加任何你自定义的字体图标(typeface)。</li></ul><h4 id="开发资源"><a href="#开发资源" class="headerlink" title="开发资源"></a>开发资源</h4><ul><li><p><a href="https://github.com/akullpp/awesome-java">awesome-java</a> - java库列表, <a href="http://app.memect.com/doc/android.html">中文版</a> 。</p></li><li><p><a href="https://github.com/soyoungboy/android-material-design-Open-source-projects/blob/master/README.md">material design 的android开源代码整理</a> - material<br> design 的android开源代码整理。</p></li><li><p><a href="https://github.com/Trinea/android-open-project">Android开源项目分类汇总</a> - <a href="http://www.trinea.cn/">Trinea</a> 国内最多好的开源库总结。 <a href="http://www.trinea.cn/android/android-open-project-summary/">Android<br> 开源库获取途径整理</a></p></li><li><p><a href="https://github.com/android-cn/android-open-project-analysis">Android开源库源码分析</a> - <a href="http://www.trinea.cn/">Trinea</a> 我们从<br> Android 开始建了了协作项目,从简介、总体设计、流程图、详细设计全方面分析开源库源码。目前第一期完成,包括10个开源库及5个公共技术点的全面介绍。 <a href="http://www.codekk.com/open-source-project-analysis">在线网页</a></p></li><li><p><a href="http://www.itlanbao.com/forum.php?mod=viewthread&tid=45&fromuid=1">年薪30万的Android程序员必须知道的帖子</a> - Android开源项目汇总,带效果gif图。</p></li><li><p><a href="https://github.com/kesenhoo/android-training-course-in-chinese">Android官方培训课程中文版</a> - Google Android官方培训课程中文版。</p></li><li><p><a href="http://www.cnblogs.com/hawkon/p/3593709.html">GitHub优秀Android开源项目</a> - GitHub 优秀的 Android 开源项目,很多中文现成项目。</p></li><li><p><a href="http://www.androiddevtools.cn/">Android开发工具及文档</a> - androiddevtools,收集整理Android开发所需的Android SDK、开发中用到的工具、Android开发教程、Android设计规范,免费的设计素材等。</p></li><li><p><a href="https://github.com/1sters/material_design_zh">material_design</a> - eoeAndroid Material Design 中文协同翻译。</p></li><li><p><a href="http://www.jianshu.com/p/1078568e859f">Android Design Support Library</a> - Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏。 </p><p><a href="https://github.com/1sters/Android-Open-Sourse-Library/">Android-Open-Sourse-Library</a> - eoeAndroid 开源组件深度剖析: 1.Http请求组件:Volley\android-async-http\okhttp</p></li></ul><p> 2.json数据解析组件:Gson\fast-json\json-smart\Jackson。</p><ul><li><a href="http://wiki.eoeandroid.com/">wiki-eoeandroid</a> - wiki-eoeandroid : Android Develop - 开发技术、Android Design - 设计规范、Android Distribute - 软件发布。</li><li><a href="http://www.importnew.com/14429.html">Java资源大全</a> - 国外程序员整理的Java资源大全。</li><li><a href="https://github.com/bboyfeiyu/android-tech-frontier">Android开发技术前线</a> - Android开发技术前线 ( android-tech-frontier ),一个定期翻译、发布国内外Android优质的技术、开源库、软件架构设计、测试等文章的开源项目,让我们的技术跟上国际步伐。</li><li><a href="http://android.jobbole.com/80826/">10个常用工具类</a> - Android快速开发系列 10个常用工具类:1、日志工具类L.java;2、Toast统一管理类;3、SharedPreferences封装类SPUtils;4、单位转换类 DensityUtils;5、SD卡相关辅助类<br> SDCardUtils;6、屏幕相关辅助类 ScreenUtils;7、App相关辅助类;8、软键盘相关辅助类KeyBoardUtils;9、网络相关辅助类 NetUtils;10、Http相关辅助类 HttpUtils。</li><li><a href="http://blog.jobbole.com/67169/">19个Android开发工具</a> - 19个Android 开发工具:1、XAppDbg;2、ChkBugReport;3、APKAnalyser;4、AppXplore;5、Memory Analyzer(MAT);6、Eclipse插件SQLiteManger;7、Robotium;8、ACRA;9、Android<br> Layout Binder;10、Spoon;11、Android Content Provider代码生成器;12、AndroidKickStartR;13、Android Holo颜色生成器;14、ActionBar风格生成器;15、Asset Studio;16、little eye labs;17、Droid Inspector;18、Android Button Maker;19、jsonschema2pojo。</li><li><a href="http://d.apkbus.com/">apkbus</a> - code4app 与 apkbus整理的Android开源资源分类, <a href="http://www.apkbus.com/plugin.php?id=codesrc&modo=all">Android源代码</a> 。</li><li><a href="https://github.com/pcqpcq/open-source-android-apps">open-source-android-apps</a> - 他人收集的开源代码:Android Wear、Communication 、Education、Finance、Game、Multi-Media、News<br> & Magazines、Personalization、Productivity、Social Network、Tools、Travel & Local。</li><li><a href="http://www.codingfish.top/2015/07/07/android-developer-tools-list/">android-developer-tools-list</a> - Android 常用开发工具 (Android Studio 插件、Android<br> 网站、Android 系统性能调优工具、Android测试工具)。</li><li><a href="http://www.imooc.com/article/1281">Android平台上最好的几款免费的代码编辑器</a> - Android平台上最好的几款免费的代码编辑器:Quoda、DroidEdit、AWD、AIDE、CppDroid。</li><li><a href="http://www.androidweekly.cn/">androidweekly</a> - android技术开发周报,干货很多。</li><li><a href="https://github.com/hothero/awesome-rails-gem">awesome-rails-gem</a> - 收集了很多在平时使用 Rails 开发网站时经常会使用到的 Gem, 当中包括的有用户认证系统, API 接口开发, 文件上传, 站内搜索等优秀的<br> Gem 源。</li><li><a href="https://github.com/Freelander/Android_Data">Android_Data</a> - 一份旨在帮助 Android 初学者快速入门以及找到适合自己学习的资料。</li><li><a href="https://segmentfault.com/a/1190000005073746">Android通用流行框架大全</a> - Android通用流行框架大全。</li></ul>]]></content>
<summary type="html"><h4 id="UI"><a href="#UI" class="headerlink" title="UI"></a>UI</h4><ul>
<li><p><a href="https://github.com/lightSky/Awesome-MaterialDesign"></summary>
<category term="Develop" scheme="http://objectyan.github.io/categories/Develop/"/>
<category term="Android" scheme="http://objectyan.github.io/categories/Develop/Android/"/>
<category term="Android" scheme="http://objectyan.github.io/tags/Android/"/>
<category term="Develop" scheme="http://objectyan.github.io/tags/Develop/"/>
</entry>
<entry>
<title>ASP.NET MVC 使用webpack</title>
<link href="http://objectyan.github.io/2018/02/09/Asp-DotNet-MVC-Webpack/"/>
<id>http://objectyan.github.io/2018/02/09/Asp-DotNet-MVC-Webpack/</id>
<published>2018-02-09T05:16:04.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h4 id="删除-Content、Script-文件夹"><a href="#删除-Content、Script-文件夹" class="headerlink" title="删除 Content、Script 文件夹"></a>删除 Content、Script 文件夹</h4><p>*** 使用所有的文件、样式都使用<code>Webpack</code>打包</p><h4 id="创建-packages-config"><a href="#创建-packages-config" class="headerlink" title="创建 packages.config"></a>创建 packages.config</h4><figure class="highlight json"><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><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"name"</span><span class="punctuation">:</span> <span class="string">"[Name]"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"version"</span><span class="punctuation">:</span> <span class="string">"1.0.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"description"</span><span class="punctuation">:</span> <span class="string">"[Description]"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"author"</span><span class="punctuation">:</span> <span class="string">"OY"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"private"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"scripts"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"dev"</span><span class="punctuation">:</span> <span class="string">"cross-env NODE_ENV=development webpack --progress --w"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"start"</span><span class="punctuation">:</span> <span class="string">"yarn run dev"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"build"</span><span class="punctuation">:</span> <span class="string">"cross-env NODE_ENV=production webpack --progress"</span></span><br><span class="line"> <span class="punctuation">}</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"dependencies"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"babel-polyfill"</span><span class="punctuation">:</span> <span class="string">"^6.26.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"bootstrap"</span><span class="punctuation">:</span> <span class="string">"^4.0.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"compression-webpack-plugin"</span><span class="punctuation">:</span> <span class="string">"^1.1.7"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"font-awesome"</span><span class="punctuation">:</span> <span class="string">"^4.7.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"font-awesome-webpack"</span><span class="punctuation">:</span> <span class="string">"^0.0.5-beta.2"</span></span><br><span class="line"> <span class="punctuation">}</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"devDependencies"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"autoprefixer"</span><span class="punctuation">:</span> <span class="string">"^8.0.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"babel-core"</span><span class="punctuation">:</span> <span class="string">"^6.26.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"babel-eslint"</span><span class="punctuation">:</span> <span class="string">"^8.2.2"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"babel-helper-vue-jsx-merge-props"</span><span class="punctuation">:</span> <span class="string">"^^2.0.3"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"babel-loader"</span><span class="punctuation">:</span> <span class="string">"^7.1.2"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"babel-plugin-component"</span><span class="punctuation">:</span> <span class="string">"^1.1.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"babel-plugin-syntax-dynamic-import"</span><span class="punctuation">:</span> <span class="string">"^6.18.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"babel-plugin-syntax-jsx"</span><span class="punctuation">:</span> <span class="string">"^6.18.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"babel-plugin-transform-runtime"</span><span class="punctuation">:</span> <span class="string">"^6.23.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"babel-plugin-transform-vue-jsx"</span><span class="punctuation">:</span> <span class="string">"^3.5.1"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"babel-preset-env"</span><span class="punctuation">:</span> <span class="string">"^1.6.1"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"babel-preset-stage-2"</span><span class="punctuation">:</span> <span class="string">"^6.24.1"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"babel-preset-stage-3"</span><span class="punctuation">:</span> <span class="string">"^6.24.1"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"babel-runtime"</span><span class="punctuation">:</span> <span class="string">"^6.26.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"clean-webpack-plugin"</span><span class="punctuation">:</span> <span class="string">"^0.1.18"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"cross-env"</span><span class="punctuation">:</span> <span class="string">"^5.1.3"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"css-loader"</span><span class="punctuation">:</span> <span class="string">"^0.28.9"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"eslint"</span><span class="punctuation">:</span> <span class="string">"^4.18.1"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"eslint-config-google"</span><span class="punctuation">:</span> <span class="string">"^0.9.1"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"eslint-config-standard"</span><span class="punctuation">:</span> <span class="string">"^11.0.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"eslint-plugin-html"</span><span class="punctuation">:</span> <span class="string">"^4.0.2"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"eslint-plugin-import"</span><span class="punctuation">:</span> <span class="string">"^2.9.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"eslint-plugin-node"</span><span class="punctuation">:</span> <span class="string">"^6.0.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"eslint-plugin-promise"</span><span class="punctuation">:</span> <span class="string">"^3.6.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"eslint-plugin-standard"</span><span class="punctuation">:</span> <span class="string">"^3.0.1"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"extract-text-webpack-plugin"</span><span class="punctuation">:</span> <span class="string">"^3.0.2"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"file-loader"</span><span class="punctuation">:</span> <span class="string">"^1.1.9"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"friendly-errors-webpack-plugin"</span><span class="punctuation">:</span> <span class="string">"^1.6.1"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"happypack"</span><span class="punctuation">:</span> <span class="string">"^4.0.1"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"html-webpack-plugin"</span><span class="punctuation">:</span> <span class="string">"^2.30.1"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"less"</span><span class="punctuation">:</span> <span class="string">"^2.3.1"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"less-loader"</span><span class="punctuation">:</span> <span class="string">"^4.0.5"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"node-notifier"</span><span class="punctuation">:</span> <span class="string">"^5.2.1"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"node-sass"</span><span class="punctuation">:</span> <span class="string">"^4.7.2"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"portfinder"</span><span class="punctuation">:</span> <span class="string">"^1.0.13"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"postcss-import"</span><span class="punctuation">:</span> <span class="string">"^11.1.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"postcss-loader"</span><span class="punctuation">:</span> <span class="string">"^2.1.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"postcss-url"</span><span class="punctuation">:</span> <span class="string">"^7.3.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"sass-loader"</span><span class="punctuation">:</span> <span class="string">"^6.0.6"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"uglifyjs-webpack-plugin"</span><span class="punctuation">:</span> <span class="string">"^1.2.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"url-loader"</span><span class="punctuation">:</span> <span class="string">"^0.6.2"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"webpack"</span><span class="punctuation">:</span> <span class="string">"^3.11.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"webpack-bundle-analyzer"</span><span class="punctuation">:</span> <span class="string">"^2.10.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"webpack-hot-middleware"</span><span class="punctuation">:</span> <span class="string">"^2.21.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"webpack-merge"</span><span class="punctuation">:</span> <span class="string">"^4.1.1"</span></span><br><span class="line"> <span class="punctuation">}</span></span><br><span class="line"><span class="punctuation">}</span></span><br></pre></td></tr></table></figure><h4 id="修改-Route"><a href="#修改-Route" class="headerlink" title="修改 Route"></a>修改 Route</h4><p>*** 确保单页 <code>route</code> 能成功调整 </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></pre></td><td class="code"><pre><span class="line">...</span><br><span class="line">routes.MapRoute(</span><br><span class="line"> name: "DefaultSpa",</span><br><span class="line"> url: "{*url}",</span><br><span class="line"> defaults: new { controller = "Home", action = "Index" }</span><br><span class="line">);</span><br><span class="line">...</span><br></pre></td></tr></table></figure><h4 id="删除-Layout-cshtml-并创建-Layout-Template-cshtml"><a href="#删除-Layout-cshtml-并创建-Layout-Template-cshtml" class="headerlink" title="删除 _Layout.cshtml 并创建 _Layout_Template.cshtml"></a>删除 <code>_Layout.cshtml</code> 并创建 <code>_Layout_Template.cshtml</code></h4><p>*** 自动生成_Layout</p><figure class="highlight html"><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></pre></td><td class="code"><pre><span class="line"><span class="meta"><!DOCTYPE <span class="keyword">html</span>></span></span><br><span class="line"><span class="tag"><<span class="name">html</span>></span></span><br><span class="line"><span class="tag"><<span class="name">head</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">"utf-8"</span> /></span></span><br><span class="line"> <span class="tag"><<span class="name">meta</span> <span class="attr">name</span>=<span class="string">"viewport"</span> <span class="attr">content</span>=<span class="string">"width=device-width, initial-scale=1.0"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">meta</span> <span class="attr">http-equiv</span>=<span class="string">"X-UA-Compatible"</span> <span class="attr">content</span>=<span class="string">"IE=edge,Chrome=1"</span> /></span></span><br><span class="line"><span class="tag"></<span class="name">head</span>></span></span><br><span class="line"><span class="tag"><<span class="name">body</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">div</span> <span class="attr">id</span>=<span class="string">"app-root"</span>></span></span><br><span class="line"> @RenderBody()</span><br><span class="line"> <span class="tag"></<span class="name">div</span>></span></span><br><span class="line"><span class="tag"></<span class="name">body</span>></span></span><br><span class="line"><span class="tag"></<span class="name">html</span>></span></span><br></pre></td></tr></table></figure><h4 id="创建-webpack-config-js"><a href="#创建-webpack-config-js" class="headerlink" title="创建 webpack.config.js"></a>创建 <code>webpack.config.js</code></h4><figure class="highlight javascript"><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><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">'use strict'</span></span><br><span class="line"><span class="keyword">const</span> path = <span class="built_in">require</span>(<span class="string">'path'</span>)</span><br><span class="line"><span class="keyword">const</span> os = <span class="built_in">require</span>(<span class="string">'os'</span>);</span><br><span class="line"><span class="keyword">const</span> webpack = <span class="built_in">require</span>(<span class="string">'webpack'</span>)</span><br><span class="line"><span class="keyword">const</span> merge = <span class="built_in">require</span>(<span class="string">'webpack-merge'</span>)</span><br><span class="line"><span class="keyword">const</span> <span class="title class_">HtmlWebpackPlugin</span> = <span class="built_in">require</span>(<span class="string">'html-webpack-plugin'</span>)</span><br><span class="line"><span class="keyword">const</span> <span class="title class_">ExtractTextPlugin</span> = <span class="built_in">require</span>(<span class="string">'extract-text-webpack-plugin'</span>)</span><br><span class="line"><span class="keyword">const</span> <span class="title class_">CleanWebpackPlugin</span> = <span class="built_in">require</span>(<span class="string">"clean-webpack-plugin"</span>)</span><br><span class="line"><span class="keyword">const</span> <span class="title class_">UglifyJsPlugin</span> = <span class="built_in">require</span>(<span class="string">'uglifyjs-webpack-plugin'</span>)</span><br><span class="line"><span class="keyword">const</span> <span class="title class_">HappyPack</span> = <span class="built_in">require</span>(<span class="string">'happypack'</span>);</span><br><span class="line"><span class="keyword">const</span> env = process.<span class="property">env</span>.<span class="property">NODE_ENV</span> == <span class="string">"development"</span></span><br><span class="line"><span class="keyword">var</span> happyThreadPool = <span class="title class_">HappyPack</span>.<span class="title class_">ThreadPool</span>({</span><br><span class="line"> <span class="attr">size</span>: os.<span class="title function_">cpus</span>().<span class="property">length</span></span><br><span class="line">});</span><br><span class="line"></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">resolve</span>(<span class="params">dir</span>) {</span><br><span class="line"> <span class="keyword">return</span> path.<span class="title function_">join</span>(__dirname, <span class="string">'.'</span>, dir)</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> base = {</span><br><span class="line"> <span class="attr">context</span>: __dirname,</span><br><span class="line"> <span class="attr">devtool</span>: <span class="string">'#source-map'</span>,</span><br><span class="line"> <span class="attr">resolve</span>: {</span><br><span class="line"> <span class="attr">extensions</span>: [</span><br><span class="line"> <span class="string">'.js'</span></span><br><span class="line"> ]</span><br><span class="line"> },</span><br><span class="line"> <span class="attr">entry</span>: [<span class="string">'babel-polyfill'</span>, <span class="string">'./src/main.js'</span>],</span><br><span class="line"> <span class="attr">module</span>: {</span><br><span class="line"> <span class="attr">rules</span>: [</span><br><span class="line"> {</span><br><span class="line"> <span class="attr">test</span>: <span class="regexp">/\.js$/</span>,</span><br><span class="line"> <span class="attr">loader</span>: <span class="string">'happypack/loader?id=happybabel'</span>,</span><br><span class="line"> <span class="attr">include</span>: [<span class="title function_">resolve</span>(<span class="string">'src'</span>),</span><br><span class="line"> <span class="title function_">resolve</span>(<span class="string">'./node_modules/element-ui/lib/'</span>),</span><br><span class="line"> <span class="title function_">resolve</span>(<span class="string">'./node_modules/iviewDir/'</span>)],</span><br><span class="line"> <span class="attr">exclude</span>: <span class="regexp">/node_modules/</span></span><br><span class="line"> }, {</span><br><span class="line"> <span class="attr">test</span>: <span class="regexp">/\.css$/</span>,</span><br><span class="line"> <span class="attr">use</span>: <span class="title class_">ExtractTextPlugin</span>.<span class="title function_">extract</span>({</span><br><span class="line"> <span class="attr">use</span>: [<span class="string">'css-loader?minimize'</span>, <span class="string">'postcss-loader'</span>],</span><br><span class="line"> <span class="attr">fallback</span>: <span class="string">'style-loader'</span></span><br><span class="line"> })</span><br><span class="line"> }, {</span><br><span class="line"> <span class="attr">test</span>: <span class="regexp">/\.scss$/</span>,</span><br><span class="line"> <span class="attr">use</span>: <span class="title class_">ExtractTextPlugin</span>.<span class="title function_">extract</span>({</span><br><span class="line"> <span class="attr">use</span>: [<span class="string">'css-loader?minimize'</span>, <span class="string">'postcss-loader'</span>, <span class="string">'sass-loader'</span>],</span><br><span class="line"> <span class="attr">fallback</span>: <span class="string">'style-loader'</span></span><br><span class="line"> })</span><br><span class="line"> },</span><br><span class="line"> {</span><br><span class="line"> <span class="attr">test</span>: <span class="regexp">/\.(mp4|webm|ogg|mp3|wav|flac|aac|woff2?|eot|ttf|otf|png|jpe?g|gif|svg)(\?.*)?$/</span>,</span><br><span class="line"> <span class="attr">loader</span>: <span class="string">'url-loader'</span>,</span><br><span class="line"> <span class="attr">options</span>: {</span><br><span class="line"> <span class="attr">limit</span>: <span class="number">1024</span>,</span><br><span class="line"> <span class="attr">name</span>: <span class="string">`assets/[name]<span class="subst">${env ? <span class="string">'.[hash:7]'</span> : <span class="string">''</span>}</span>.[ext]`</span></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 class="attr">output</span>: {</span><br><span class="line"> <span class="attr">publicPath</span>: <span class="string">'/dist/'</span>,</span><br><span class="line"> <span class="attr">path</span>: path.<span class="title function_">resolve</span>(__dirname, <span class="string">'./dist/'</span>)</span><br><span class="line"> },</span><br><span class="line"> <span class="attr">devtool</span>: <span class="string">'#source-map'</span>,</span><br><span class="line"> <span class="attr">plugins</span>: [</span><br><span class="line"> <span class="keyword">new</span> <span class="title class_">CleanWebpackPlugin</span>([<span class="string">"./dist"</span>], { <span class="string">"verbose"</span>: <span class="literal">true</span> }),</span><br><span class="line"> <span class="keyword">new</span> <span class="title class_">HtmlWebpackPlugin</span>({</span><br><span class="line"> <span class="attr">filename</span>: <span class="title function_">resolve</span>(<span class="string">'./Views/Shared/_Layout.cshtml'</span>),</span><br><span class="line"> <span class="attr">template</span>: <span class="title function_">resolve</span>(<span class="string">'./Views/Shared/_Layout_Template.cshtml'</span>),</span><br><span class="line"> <span class="attr">inject</span>: <span class="literal">true</span>,</span><br><span class="line"> <span class="attr">xhtml</span>: <span class="literal">true</span>,</span><br><span class="line"> <span class="attr">chunksSortMode</span>: <span class="string">'dependency'</span></span><br><span class="line"> }),</span><br><span class="line"> <span class="keyword">new</span> <span class="title class_">HappyPack</span>({</span><br><span class="line"> <span class="attr">id</span>: <span class="string">'happybabel'</span>,</span><br><span class="line"> <span class="attr">loaders</span>: [<span class="string">'babel-loader'</span>],</span><br><span class="line"> <span class="attr">threadPool</span>: happyThreadPool,</span><br><span class="line"> <span class="attr">verbose</span>: <span class="literal">true</span></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 class="keyword">const</span> dev = {</span><br><span class="line"> <span class="attr">output</span>: {</span><br><span class="line"> <span class="attr">filename</span>: <span class="string">'[name].js'</span>,</span><br><span class="line"> <span class="attr">chunkFilename</span>: <span class="string">'[name].chunk.js'</span></span><br><span class="line"> },</span><br><span class="line"> <span class="attr">plugins</span>: [</span><br><span class="line"> <span class="keyword">new</span> <span class="title class_">ExtractTextPlugin</span>({</span><br><span class="line"> <span class="attr">filename</span>: <span class="string">'[name].css'</span>,</span><br><span class="line"> <span class="attr">allChunks</span>: <span class="literal">true</span></span><br><span class="line"> }),</span><br><span class="line"> <span class="keyword">new</span> webpack.<span class="property">optimize</span>.<span class="title class_">CommonsChunkPlugin</span>({</span><br><span class="line"> <span class="attr">name</span>: [<span class="string">'vender-exten'</span>, <span class="string">'vender-base'</span>],</span><br><span class="line"> <span class="attr">minChunks</span>: <span class="title class_">Infinity</span></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 class="keyword">const</span> prod = {</span><br><span class="line"> <span class="attr">output</span>: {</span><br><span class="line"> <span class="attr">filename</span>: <span class="string">'[name].[hash].js'</span>,</span><br><span class="line"> <span class="attr">chunkFilename</span>: <span class="string">'[name].[hash].chunk.js'</span></span><br><span class="line"> },</span><br><span class="line"> <span class="attr">plugins</span>: [</span><br><span class="line"> <span class="keyword">new</span> <span class="title class_">ExtractTextPlugin</span>({</span><br><span class="line"> <span class="attr">filename</span>: <span class="string">'[name].[hash].css'</span>,</span><br><span class="line"> <span class="attr">allChunks</span>: <span class="literal">true</span></span><br><span class="line"> }),</span><br><span class="line"> <span class="keyword">new</span> webpack.<span class="property">optimize</span>.<span class="title class_">CommonsChunkPlugin</span>({</span><br><span class="line"> <span class="attr">name</span>: [<span class="string">'vender-exten'</span>, <span class="string">'vender-base'</span>],</span><br><span class="line"> <span class="attr">minChunks</span>: <span class="title class_">Infinity</span></span><br><span class="line"> }),</span><br><span class="line"> <span class="keyword">new</span> webpack.<span class="title class_">DefinePlugin</span>({</span><br><span class="line"> <span class="string">'process.env'</span>: {</span><br><span class="line"> <span class="attr">NODE_ENV</span>: <span class="string">'"production"'</span></span><br><span class="line"> }</span><br><span class="line"> }),</span><br><span class="line"> <span class="keyword">new</span> <span class="title class_">UglifyJsPlugin</span>({</span><br><span class="line"> <span class="attr">sourceMap</span>: <span class="literal">true</span></span><br><span class="line"> })</span><br><span class="line"> ]</span><br><span class="line">};</span><br><span class="line"><span class="keyword">const</span> other = env ? dev : prod;</span><br><span class="line"><span class="variable language_">module</span>.<span class="property">exports</span> = <span class="title function_">merge</span>(base, other)</span><br></pre></td></tr></table></figure><h4 id="创建-babelrc"><a href="#创建-babelrc" class="headerlink" title="创建 .babelrc"></a>创建 <code>.babelrc</code></h4><figure class="highlight json"><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></pre></td><td class="code"><pre><span class="line"><span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"presets"</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line"> <span class="punctuation">[</span></span><br><span class="line"> <span class="string">"env"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"modules"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"targets"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"browsers"</span><span class="punctuation">:</span> <span class="punctuation">[</span> <span class="string">"> 1%"</span><span class="punctuation">,</span> <span class="string">"last 2 versions"</span><span class="punctuation">,</span> <span class="string">"not ie <= 8"</span> <span class="punctuation">]</span></span><br><span class="line"> <span class="punctuation">}</span></span><br><span class="line"> <span class="punctuation">}</span></span><br><span class="line"> <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line"> <span class="string">"stage-2"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="string">"stage-3"</span></span><br><span class="line"> <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"plugins"</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line"> <span class="string">"transform-runtime"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="string">"syntax-dynamic-import"</span></span><br><span class="line"> <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"env"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"test"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"presets"</span><span class="punctuation">:</span> <span class="punctuation">[</span> <span class="string">"env"</span><span class="punctuation">,</span> <span class="string">"stage-2"</span><span class="punctuation">,</span> <span class="string">"stage-3"</span> <span class="punctuation">]</span></span><br><span class="line"> <span class="punctuation">}</span></span><br><span class="line"> <span class="punctuation">}</span></span><br><span class="line"><span class="punctuation">}</span></span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h4 id="删除-Content、Script-文件夹"><a href="#删除-Content、Script-文件夹" class="headerlink" title="删除 Content、Script 文件夹"></a>删除 Content、Script 文件夹</</summary>
<category term="Develop" scheme="http://objectyan.github.io/categories/Develop/"/>
<category term="ASP.Net" scheme="http://objectyan.github.io/categories/Develop/ASP-Net/"/>
<category term="Develop" scheme="http://objectyan.github.io/tags/Develop/"/>
<category term="ASP.Net" scheme="http://objectyan.github.io/tags/ASP-Net/"/>
</entry>
<entry>
<title>CentOS Git 源码安装</title>
<link href="http://objectyan.github.io/2018/01/25/CentOS-7-Git-For-Source/"/>
<id>http://objectyan.github.io/2018/01/25/CentOS-7-Git-For-Source/</id>
<published>2018-01-25T13:42:34.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h4 id="安装-Git-依赖的库"><a href="#安装-Git-依赖的库" class="headerlink" title="安装 Git 依赖的库"></a>安装 Git 依赖的库</h4><figure class="highlight bash"><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="built_in">sudo</span> yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel \</span><br><span class="line">asciidoc xmlto docbook2x autoconf perl-ExtUtils-Embed -y</span><br></pre></td></tr></table></figure><h4 id="下载解压,编译并安装"><a href="#下载解压,编译并安装" class="headerlink" title="下载解压,编译并安装"></a>下载解压,编译并安装</h4><p><em><em>注:下载地址可查看 <a href="https://www.kernel.org/pub/software/scm/git">https://www.kernel.org/pub/software/scm/git</a> or <a href="https://github.com/git/git/releases">https://github.com/git/git/releases</a> 区别是一个有文件下载签名,一个为最新版本。</em></em></p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line">wget https://github.com/git/git/archive/v2.16.1.tar.gz</span><br><span class="line">tar -zxvf v2.16.1.tar.gz</span><br><span class="line"><span class="built_in">cd</span> git-2.16.1</span><br><span class="line">make configure</span><br><span class="line">./configure --prefix=/usr</span><br><span class="line">make all doc info</span><br><span class="line"><span class="built_in">sudo</span> make install install-doc install-html install-info</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h4 id="安装-Git-依赖的库"><a href="#安装-Git-依赖的库" class="headerlink" title="安装 Git 依赖的库"></a>安装 Git 依赖的库</h4><figure class="highlight bash"><table</summary>
<category term="Git" scheme="http://objectyan.github.io/categories/Git/"/>
<category term="Git" scheme="http://objectyan.github.io/tags/Git/"/>
</entry>
<entry>
<title>React Natice Android 版 打包APK</title>
<link href="http://objectyan.github.io/2017/11/01/React-Natice-Generating-APK/"/>
<id>http://objectyan.github.io/2017/11/01/React-Natice-Generating-APK/</id>
<published>2017-11-01T09:22:29.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h4 id="步骤"><a href="#步骤" class="headerlink" title="步骤"></a>步骤</h4><ol><li>生产密钥证书</li><li>设置<code>gradle</code>变量</li><li>将证书添加至<code>app\build.gradle</code>配置文件</li><li>生产APK</li></ol><h4 id="生产密钥证书"><a href="#生产密钥证书" class="headerlink" title="生产密钥证书"></a>生产密钥证书</h4><p>生产方式有两种方式</p><ol><li>使用JDK中自带的keytool</li><li>Android Studio 生产 keys</li></ol><p>这里只介绍第一种 第二种请看<a href="https://developer.android.com/studio/publish/app-signing.html#generate-key">官网</a></p><p><code>keytool</code> 地址 : <code>$JAVA_HOME/jdk/bin</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">keytool -genkey -v -keystore my-release-key.keystore -<span class="built_in">alias</span> my-key-alias -keyalg RSA -keysize 2048 -validity 10000</span><br></pre></td></tr></table></figure><h4 id="设置gradle变量"><a href="#设置gradle变量" class="headerlink" title="设置gradle变量"></a>设置<code>gradle</code>变量</h4><p>将生产的 <code>my-release-key.keystore</code> 防止在 <code>Android/keystores</code> 目录下<br>修改 <code>Android/gradle.properties</code> </p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line">MYAPP_RELEASE_STORE_FILE=../keystores/my-release-key.keystore</span><br><span class="line">MYAPP_RELEASE_KEY_ALIAS=my-key-alias</span><br><span class="line">MYAPP_RELEASE_STORE_PASSWORD=*****</span><br><span class="line">MYAPP_RELEASE_KEY_PASSWORD=*****</span><br></pre></td></tr></table></figure><h4 id="将证书添加至app-build-gradle配置文件"><a href="#将证书添加至app-build-gradle配置文件" class="headerlink" title="将证书添加至app\build.gradle配置文件"></a>将证书添加至<code>app\build.gradle</code>配置文件</h4><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line">...</span><br><span class="line">android {</span><br><span class="line"> ...</span><br><span class="line"> defaultConfig { ... }</span><br><span class="line"> signingConfigs {</span><br><span class="line"> release {</span><br><span class="line"> <span class="keyword">if</span> (project.hasProperty(<span class="string">'MYAPP_RELEASE_STORE_FILE'</span>)) {</span><br><span class="line"> storeFile file(MYAPP_RELEASE_STORE_FILE)</span><br><span class="line"> storePassword MYAPP_RELEASE_STORE_PASSWORD</span><br><span class="line"> keyAlias MYAPP_RELEASE_KEY_ALIAS</span><br><span class="line"> keyPassword MYAPP_RELEASE_KEY_PASSWORD</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> buildTypes {</span><br><span class="line"> release {</span><br><span class="line"> ...</span><br><span class="line"> signingConfig signingConfigs.release</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line">...</span><br></pre></td></tr></table></figure><h4 id="生产APK-生成地址-android-app-build-outputs-apk-app-release-apk"><a href="#生产APK-生成地址-android-app-build-outputs-apk-app-release-apk" class="headerlink" title="生产APK (生成地址:android/app/build/outputs/apk/app-release.apk)"></a>生产APK (生成地址:<code>android/app/build/outputs/apk/app-release.apk</code>)</h4><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 非Windows</span></span><br><span class="line"><span class="built_in">cd</span> android && ./gradlew assembleRelease</span><br><span class="line"><span class="comment"># Windows</span></span><br><span class="line"><span class="built_in">cd</span> android && gradlew assembleRelease</span><br></pre></td></tr></table></figure><h4 id="测试APK"><a href="#测试APK" class="headerlink" title="测试APK"></a>测试APK</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">react-native run-android --variant=release</span><br></pre></td></tr></table></figure><h4 id="启用-Proguard-压缩"><a href="#启用-Proguard-压缩" class="headerlink" title="启用 Proguard 压缩"></a>启用 <code>Proguard</code> 压缩</h4><ol><li><p>启用 <code>Proguard</code> 压缩 (修改地址 : <code>android/app/build.gradle</code>)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">def enableProguardInReleaseBuilds = <span class="literal">true</span></span><br></pre></td></tr></table></figure></li><li><p>启用 <code>minifyEnabled</code> (修改地址 : <code>android/app/build.gradle</code>)</p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line">...</span><br><span class="line">android {</span><br><span class="line"> ...</span><br><span class="line"> buildTypes {</span><br><span class="line"> release {</span><br><span class="line"> ...</span><br><span class="line"> minifyEnabled <span class="literal">true</span></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></pre></td></tr></table></figure></li></ol>]]></content>
<summary type="html"><h4 id="步骤"><a href="#步骤" class="headerlink" title="步骤"></a>步骤</h4><ol>
<li>生产密钥证书</li>
<li>设置<code>gradle</code>变量</li>
<li>将证书添加至<code>app</summary>
<category term="Develop" scheme="http://objectyan.github.io/categories/Develop/"/>
<category term="React Native" scheme="http://objectyan.github.io/categories/Develop/React-Native/"/>
<category term="Develop" scheme="http://objectyan.github.io/tags/Develop/"/>
<category term="React Native" scheme="http://objectyan.github.io/tags/React-Native/"/>
</entry>
<entry>
<title>React Native 开发环境配置</title>
<link href="http://objectyan.github.io/2017/10/26/React-Native-Config/"/>
<id>http://objectyan.github.io/2017/10/26/React-Native-Config/</id>
<published>2017-10-26T06:26:31.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h4 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h4><ol><li>安装 Nodejs (<a href="https://nodejs.org/en/">https://nodejs.org/en/</a>)</li><li>NPM</li><li>JAVA (<a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">http://www.oracle.com/technetwork/java/javase/downloads/index.html</a>)</li><li>Android Studio (<a href="https://developer.android.google.cn/studio/index.html">https://developer.android.google.cn/studio/index.html</a>)</li><li>Git</li><li>Visual Studio Emulator for Android (<a href="https://www.visualstudio.com/vs/msft-android-emulator/">https://www.visualstudio.com/vs/msft-android-emulator/</a>)</li></ol><h4 id="安装React-Native"><a href="#安装React-Native" class="headerlink" title="安装React Native"></a>安装React Native</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install -g yarn react-native-cli</span><br></pre></td></tr></table></figure><h4 id="配置ANDROID-HOME"><a href="#配置ANDROID-HOME" class="headerlink" title="配置ANDROID_HOME"></a>配置<code>ANDROID_HOME</code></h4><p>打开<code>控制面板</code> -> <code>系统和安全</code> -> <code>系统</code> -> <code>高级系统设置</code> -> <code>高级</code> -> <code>环境变量</code> -> <code>新建</code></p><p><code>ANDROID_HOME</code> 值为Android SDK路径</p><h4 id="配置ANDROID-SDK-HOME"><a href="#配置ANDROID-SDK-HOME" class="headerlink" title="配置ANDROID_SDK_HOME"></a>配置<code>ANDROID_SDK_HOME</code></h4><p>打开<code>控制面板</code> -> <code>系统和安全</code> -> <code>系统</code> -> <code>高级系统设置</code> -> <code>高级</code> -> <code>环境变量</code> -> <code>新建</code></p><p><code>ANDROID_SDK_HOME</code> 值为Android 根目录路径</p><h4 id="配置-platform-tools"><a href="#配置-platform-tools" class="headerlink" title="配置 platform-tools"></a>配置 <code>platform-tools</code></h4><p>打开<code>控制面板</code> -> <code>系统和安全</code> -> <code>系统</code> -> <code>高级系统设置</code> -> <code>高级</code> -> <code>环境变量</code> -> 选中<code>PATH</code> -> 双击进行编辑<br>将 <code>%ANDROID_HOME%\platform-tools</code> 添加进去即可</p><h4 id="安装Visual-Studio-Emulator-for-Android-模拟器"><a href="#安装Visual-Studio-Emulator-for-Android-模拟器" class="headerlink" title="安装Visual Studio Emulator for Android 模拟器"></a>安装<code>Visual Studio Emulator for Android</code> 模拟器</h4><ol><li><a href="https://www.visualstudio.com/vs/msft-android-emulator/">下载</a></li><li>Windows + R 键入 <code>regedit</code></li><li>在注册表编辑器中找到 <code>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Android SDK Tools</code></li><li>右键点击<code>Android SDK Tools</code></li><li>修改 <code>Path</code> 的值为你的 <code>Android SDK</code> 的路径</li></ol><h4 id="创建项目"><a href="#创建项目" class="headerlink" title="创建项目"></a>创建项目</h4><figure class="highlight bash"><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">react-native init AwesomeProject</span><br><span class="line"><span class="built_in">cd</span> AwesomeProject</span><br><span class="line">react-native run-android</span><br></pre></td></tr></table></figure><p>第一次运行 <code>react-native run-android</code> 时间会很长,主要是安装相关组件</p><h4 id="相关组件"><a href="#相关组件" class="headerlink" title="相关组件"></a>相关组件</h4><ol><li>Android Emulator</li><li>Android SDK Platform-Tools</li><li>Android SDK Build-Tools</li></ol><h2 id="安装对应版本的组件即可"><a href="#安装对应版本的组件即可" class="headerlink" title=" 安装对应版本的组件即可"></a> 安装对应版本的组件即可</h2><h4 id="编译常见错误"><a href="#编译常见错误" class="headerlink" title="编译常见错误"></a>编译常见错误</h4><ol><li><p>Execution failed for task ‘:app:installDebug’. com.android.builder.testing.api.DeviceException: No connected devices!</p> <figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line">FAILURE: Build failed with an exception.</span><br><span class="line"></span><br><span class="line">* What went wrong:</span><br><span class="line">Execution failed <span class="keyword">for</span> task <span class="string">':app:installDebug'</span>.</span><br><span class="line">> com.android.builder.testing.api.DeviceException: No connected devices!</span><br><span class="line"></span><br><span class="line">* Try:</span><br><span class="line">Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more <span class="built_in">log</span> output.</span><br><span class="line"></span><br><span class="line">BUILD FAILED</span><br></pre></td></tr></table></figure><p> 解决方法:</p></li><li><p>先修改 <code>android</code> 下 <code>wrapper</code> 的 <code>gradle-wrapper.properties</code> 配置文件,<br> <code>distributionUrl=https\://services.gradle.org/distributions/gradle-3.4.1-all.zip</code></p></li><li><p><code>app</code> 下面的 <code>build.gradle</code> 文件</p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line"> compileSdkVersion 25</span><br><span class="line"> buildToolsVersion <span class="string">"25.0.2"</span></span><br><span class="line"> ````</span><br><span class="line"></span><br><span class="line">3. `android` 工程下的 `build.gradle` 文件: </span><br><span class="line"> ``` bash</span><br><span class="line"> dependencies { </span><br><span class="line"> classpath <span class="string">'com.android.tools.build:gradle:2.5.0-alpha-preview-02'</span> </span><br><span class="line"> } </span><br></pre></td></tr></table></figure></li></ol><h4 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h4><ul><li><a href="http://facebook.github.io/react-native/docs/getting-started.html">http://facebook.github.io/react-native/docs/getting-started.html</a> > <code>Building Projects with Native Code</code></li></ul>]]></content>
<summary type="html"><h4 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h4><ol>
<li>安装 Nodejs (<a href="https://nodejs.org/en/">https://node</summary>
<category term="Develop" scheme="http://objectyan.github.io/categories/Develop/"/>
<category term="React Native" scheme="http://objectyan.github.io/categories/Develop/React-Native/"/>
<category term="Develop" scheme="http://objectyan.github.io/tags/Develop/"/>
<category term="React Native" scheme="http://objectyan.github.io/tags/React-Native/"/>
</entry>
<entry>
<title>VisualSVN 破解</title>
<link href="http://objectyan.github.io/2017/10/25/Tool-VisualSVN-Crack/"/>
<id>http://objectyan.github.io/2017/10/25/Tool-VisualSVN-Crack/</id>
<published>2017-10-25T06:45:24.000Z</published>
<updated>2024-11-15T02:42:44.413Z</updated>
<content type="html"><![CDATA[<h4 id="备份VisualSVN-Core-L-dll包"><a href="#备份VisualSVN-Core-L-dll包" class="headerlink" title="备份VisualSVN.Core.L.dll包"></a>备份<code>VisualSVN.Core.L.dll</code>包</h4><ul><li>地址:【C:\Users\obejct.yan\AppData\Local\Microsoft\VisualStudio\15.0_3acf4f69\Extensions\hgbjz5if.jep\VisualSVN.Core.L.dll】<br> 此为VS2017安装插件地址</li><li>备份至新地址:【备份地址\VisualSVN.Core.L.dll】</li></ul><h4 id="反编译工具"><a href="#反编译工具" class="headerlink" title="反编译工具"></a>反编译工具</h4><ul><li>使用Windows自带反编译工具 <code>ildasm.exe</code></li><li>地址:【C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\ildasm.exe】<br><code>*注:此为 Window 10 64 bit 地址</code></li><li>运行 <code>ildasm.exe</code> 并导入备份的DLL文件<br> <code>File > Open</code></li><li>导出反编译文件<br> <code>File > Dump</code><br> 此处直接点击<code>确定</code>即可保存导出文件 <code>VisualSVN.Core.L.il</code></li></ul><h4 id="修改-VisualSVN-Core-L-il-文件"><a href="#修改-VisualSVN-Core-L-il-文件" class="headerlink" title="修改 VisualSVN.Core.L.il 文件"></a>修改 <code>VisualSVN.Core.L.il</code> 文件</h4><p>找到 <code>KeyToLicenseUnsafe</code> 函数并替换如下</p><figure class="highlight bash"><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><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br></pre></td><td class="code"><pre><span class="line">.method public hidebysig static class VisualSVN.Core.Licensing.License</span><br><span class="line"> KeyToLicenseUnsafe(class VisualSVN.Core.IDecoder decoder,</span><br><span class="line"> string key) cil managed</span><br><span class="line"> {</span><br><span class="line"> // 代码大小 69 (0x45)</span><br><span class="line"> .locals init (class VisualSVN.Core.Licensing.License V_0, class VisualSVN.Core.Licensing.License V_1, class VisualSVN.Core.Licensing.License V_2)</span><br><span class="line"> IL_0000: nop</span><br><span class="line"> IL_0001: newobj instance void VisualSVN.Core.Licensing.License::.ctor()</span><br><span class="line"> IL_0006: stloc.1</span><br><span class="line"> IL_0007: ldloc.1</span><br><span class="line"> IL_0008: ldsfld valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::MinValue</span><br><span class="line"> IL_000d: stfld valuetype [mscorlib]System.DateTime VisualSVN.Core.Licensing.License::StartTime</span><br><span class="line"> IL_0012: ldloc.1</span><br><span class="line"> IL_0013: ldc.i4.1</span><br><span class="line"> IL_0014: stfld valuetype VisualSVN.Core.Licensing.LicenseBinding VisualSVN.Core.Licensing.License::Binding</span><br><span class="line"> IL_0019: ldloc.1</span><br><span class="line"> IL_001a: ldc.i4 0x7ffffffe</span><br><span class="line"> IL_001f: stfld int32 VisualSVN.Core.Licensing.License::Capacity</span><br><span class="line"> IL_0024: ldloc.1</span><br><span class="line"> IL_0025: ldsfld valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::MaxValue</span><br><span class="line"> IL_002a: stfld valuetype [mscorlib]System.DateTime VisualSVN.Core.Licensing.License::EndTime</span><br><span class="line"> IL_002f: ldloc.1</span><br><span class="line"> IL_0030: ldc.i4.2</span><br><span class="line"> IL_0031: stfld valuetype VisualSVN.Core.Licensing.LicenseType VisualSVN.Core.Licensing.License::Type</span><br><span class="line"> IL_0036: ldloc.1</span><br><span class="line"> IL_0037: ldstr <span class="string">"100"</span></span><br><span class="line"> IL_003c: stfld string VisualSVN.Core.Licensing.License::PurchaseId</span><br><span class="line"> IL_0041: ldloc.1</span><br><span class="line"> IL_0042: call string [mscorlib]System.Environment::get_UserName()</span><br><span class="line"> IL_0047: stfld string VisualSVN.Core.Licensing.License::LicensedTo</span><br><span class="line"> IL_004c: ldloc.1</span><br><span class="line"> IL_004d: stloc.0</span><br><span class="line"> IL_004e: ldloc.0</span><br><span class="line"> IL_004f: ldloc.0</span><br><span class="line"> IL_0050: ldfld valuetype [mscorlib]System.DateTime VisualSVN.Core.Licensing.License::StartTime</span><br><span class="line"> IL_0055: stfld valuetype [mscorlib]System.DateTime VisualSVN.Core.Licensing.License::PurchaseDate</span><br><span class="line"> IL_005a: ldloc.0</span><br><span class="line"> IL_005b: stloc.2</span><br><span class="line"> IL_005c: br.s</span><br><span class="line"> IL_005e</span><br><span class="line"> IL_005e:ldloc.2</span><br><span class="line"> IL_005f: ret</span><br><span class="line"> } // end of method LicenseConverter::KeyToLicenseUnsafe</span><br></pre></td></tr></table></figure><h4 id="生产新的-VisualSVN-Core-L-dll"><a href="#生产新的-VisualSVN-Core-L-dll" class="headerlink" title="生产新的 VisualSVN.Core.L.dll"></a>生产新的 <code>VisualSVN.Core.L.dll</code></h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ilasm <span class="string">"备份目录\VisualSVN.Core.L.il"</span> /output=<span class="string">"备份目录\VisualSVN.Core.L.dll"</span> /dll</span><br></pre></td></tr></table></figure><p>最后将新文件替换即可咯~<br><a href="./VisualSVN.Core.L.rar">附上DLL文件</a></p>]]></content>
<summary type="html"><h4 id="备份VisualSVN-Core-L-dll包"><a href="#备份VisualSVN-Core-L-dll包" class="headerlink" title="备份VisualSVN.Core.L.dll包"></a>备份<code>VisualSVN</summary>
<category term="Tool" scheme="http://objectyan.github.io/categories/Tool/"/>
<category term="SVN" scheme="http://objectyan.github.io/categories/Tool/SVN/"/>
<category term="Tool" scheme="http://objectyan.github.io/tags/Tool/"/>
<category term="SVN" scheme="http://objectyan.github.io/tags/SVN/"/>
</entry>
<entry>
<title>.Net 使用 MemoryCache</title>
<link href="http://objectyan.github.io/2017/10/25/DotNet-MemoryCache/"/>
<id>http://objectyan.github.io/2017/10/25/DotNet-MemoryCache/</id>
<published>2017-10-25T05:25:03.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h4 id="程序集"><a href="#程序集" class="headerlink" title="程序集"></a>程序集</h4><p><code>System.Runtime.Caching.MemoryCache</code></p><h4 id="代码参见"><a href="#代码参见" class="headerlink" title="代码参见"></a>代码参见</h4><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line">ObjectCache cache = MemoryCache.Default;</span><br><span class="line">string key = <span class="string">"_key"</span>;</span><br><span class="line">System.Data.DataSet ds = cache[key] as System.Data.DataSet;</span><br><span class="line"><span class="keyword">if</span>(ds == null){</span><br><span class="line"> CacheItemPolicy policy = new CacheItemPolicy();</span><br><span class="line"> policy.AbsoluteExpiration =</span><br><span class="line"> DateTimeOffset.Now.AddMinutes(10);</span><br><span class="line"> cache.Set(key, ds, policy);</span><br><span class="line">}</span><br><span class="line"><span class="built_in">return</span> ds</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h4 id="程序集"><a href="#程序集" class="headerlink" title="程序集"></a>程序集</h4><p><code>System.Runtime.Caching.MemoryCache</code></p>
<h4 id="代码参见"></summary>
<category term="Develop" scheme="http://objectyan.github.io/categories/Develop/"/>
<category term=".Net" scheme="http://objectyan.github.io/categories/Develop/Net/"/>
<category term="Develop" scheme="http://objectyan.github.io/tags/Develop/"/>
<category term=".Net" scheme="http://objectyan.github.io/tags/Net/"/>
</entry>
<entry>
<title>.Net Core 使用 EF-Core</title>
<link href="http://objectyan.github.io/2017/09/30/DotNet-Core-Use-EFCore/"/>
<id>http://objectyan.github.io/2017/09/30/DotNet-Core-Use-EFCore/</id>
<published>2017-09-30T08:30:24.000Z</published>
<updated>2024-11-15T02:42:44.400Z</updated>
<content type="html"><![CDATA[<h4 id="安装-Entity-Framework"><a href="#安装-Entity-Framework" class="headerlink" title="安装 Entity Framework"></a>安装 Entity Framework</h4><p><em>*注:执行位置为: NuGet Package Manager *</em></p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 默认包</span></span><br><span class="line">Install-Package Microsoft.EntityFrameworkCore</span><br><span class="line"><span class="comment"># sql server 数据库支持</span></span><br><span class="line">Install-Package Microsoft.EntityFrameworkCore.SqlServer</span><br><span class="line"><span class="comment"># EF 工具包</span></span><br><span class="line">Install-Package Microsoft.EntityFrameworkCore.Tools</span><br></pre></td></tr></table></figure><h4 id="生成-Model-and-Context"><a href="#生成-Model-and-Context" class="headerlink" title="生成 Model and Context"></a>生成 Model and Context</h4><p><a href="https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell#scaffold-dbcontext">Scaffold-DbContext 参考文档</a></p><figure class="highlight bash"><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="comment"># Table 为Array 多个表 用 , 分割</span></span><br><span class="line">Scaffold-DbContext <span class="string">"Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;"</span> Microsoft.EntityFrameworkCore.SqlServer -OutputDir [输出地址] -Context [Context名称] -Tables [需要生产的表]</span><br></pre></td></tr></table></figure><h4 id="EF-Core-中使用脚本查询"><a href="#EF-Core-中使用脚本查询" class="headerlink" title="EF Core 中使用脚本查询"></a>EF Core 中使用脚本查询</h4><p><a href="https://docs.microsoft.com/en-us/ef/core/querying/raw-sql">官方说明</a></p><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">context.Set<T>().FromSql(<span class="string">""</span>) </span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h4 id="安装-Entity-Framework"><a href="#安装-Entity-Framework" class="headerlink" title="安装 Entity Framework"></a>安装 Entity Framework</h4><p><e</summary>
<category term="Develop" scheme="http://objectyan.github.io/categories/Develop/"/>
<category term=".Net Core" scheme="http://objectyan.github.io/categories/Develop/Net-Core/"/>
<category term="Develop" scheme="http://objectyan.github.io/tags/Develop/"/>
<category term=".Net Core" scheme="http://objectyan.github.io/tags/Net-Core/"/>
<category term="EntityFrameworkCore" scheme="http://objectyan.github.io/tags/EntityFrameworkCore/"/>
</entry>
<entry>
<title>WebPack 使用 FontAwesome 字体</title>
<link href="http://objectyan.github.io/2017/09/30/WebPack-Use-FontAwesome/"/>
<id>http://objectyan.github.io/2017/09/30/WebPack-Use-FontAwesome/</id>
<published>2017-09-30T01:57:34.000Z</published>
<updated>2024-11-15T02:42:44.413Z</updated>
<content type="html"><![CDATA[<p>由于现代浏览器的趋势,以及HTML5、CSS3的普及,现在多数图标从当初的Image(PNG、GIF、JPEG)图片从而转变为Font Icon字体</p><span id="more"></span><h4 id="环境要求"><a href="#环境要求" class="headerlink" title="环境要求"></a>环境要求</h4><ol><li>NodeJS</li><li>NPM</li><li>WebPack</li></ol><h4 id="安装FontAwesome及相关插件"><a href="#安装FontAwesome及相关插件" class="headerlink" title="安装FontAwesome及相关插件"></a>安装FontAwesome及相关插件</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install font-awesome-webpack less less-loader css-loader style-loader file-loader font-awesome --save-dev</span><br></pre></td></tr></table></figure><h4 id="在webpack-conf-js-中的module-rules-添加规则"><a href="#在webpack-conf-js-中的module-rules-添加规则" class="headerlink" title="在webpack.conf.js 中的module.rules 添加规则"></a>在webpack.conf.js 中的<code>module.rules</code> 添加规则</h4><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">{ <span class="attr">test</span>: <span class="regexp">/\.(eot|svg|ttf|woff|woff2|png)\w*/</span>, <span class="attr">loader</span>: <span class="string">'file-loader'</span> }</span><br></pre></td></tr></table></figure><h4 id="在项目开始JS文件中导入-font-awesome-webpack"><a href="#在项目开始JS文件中导入-font-awesome-webpack" class="headerlink" title="在项目开始JS文件中导入 font-awesome-webpack"></a>在项目开始JS文件中导入 font-awesome-webpack</h4><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> <span class="string">'font-awesome-webpack'</span>;</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><p>由于现代浏览器的趋势,以及HTML5、CSS3的普及,现在多数图标从当初的Image(PNG、GIF、JPEG)图片从而转变为Font Icon字体</p></summary>
<category term="Develop" scheme="http://objectyan.github.io/categories/Develop/"/>
<category term="Javascript" scheme="http://objectyan.github.io/categories/Develop/Javascript/"/>
<category term="WebPack" scheme="http://objectyan.github.io/categories/Develop/Javascript/WebPack/"/>
<category term="Javascript" scheme="http://objectyan.github.io/tags/Javascript/"/>
<category term="WebPck" scheme="http://objectyan.github.io/tags/WebPck/"/>
<category term="FontAwesome" scheme="http://objectyan.github.io/tags/FontAwesome/"/>
</entry>
</feed>