-
Notifications
You must be signed in to change notification settings - Fork 0
/
atom.xml
2421 lines (1992 loc) · 117 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
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
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title><![CDATA[Geek Woodworker]]></title>
<link href="http://ifq.github.com/atom.xml" rel="self"/>
<link href="http://ifq.github.com/"/>
<updated>2013-06-11T19:43:36+08:00</updated>
<id>http://ifq.github.com/</id>
<author>
<name><![CDATA[靖天]]></name>
<email><![CDATA[ifqqfi凹凸gmail刀com]]></email>
</author>
<generator uri="http://octopress.org/">Octopress</generator>
<entry>
<title type="html"><![CDATA[一个小盒子的诞生]]></title>
<link href="http://ifq.github.com/blog/2013/05/12/jewelrybox-for-wk/"/>
<updated>2013-05-12T00:00:00+08:00</updated>
<id>http://ifq.github.com/blog/2013/05/12/jewelrybox-for-wk</id>
<content type="html"><![CDATA[<p>
如果你有看过我之前的<a href="http://ifq.github.io/blog/2013/03/23/cage-for-kira/">blog</a> 我正在做一个龙猫的柜笼。不过好友结婚,我决定自己做个小礼物送给他们–一个用来装戒指之类小东西的盒子,inspired by Roy Underhill‘s TV show. 你可能也看过underhill的节目,一个传统的美国人,留着两撇胡子,风趣而充满干劲。在一期节目里,他专门教大家怎么做这样一个带锁扣的小盒子。不过他是拿这个盒子装动物油脂的(油脂用来涂抹刨子底部或者锯刃,起到润滑的作用)。不过我觉得这么精巧的盒子用来装猪油太浪费了,于是绿檀的戒指盒就诞生了。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_5587.JPG" width="800" height="600" alt="靖天绿檀戒指盒V2.0">
</p>
<!-- more -->
<p>
上图称之为V2.0,说明我之前还做了一个。V1.0比较丑,原因是underhill使用的一种工具我没有,导致挖盒子内部的时候(是的,盒子里的空间是挖出来的)很是恼火,用电钻钻出来的洞很丑,相信那个工具大家也没有(一个像勺子的钻头,钻出来的洞很圆滑)。V2.0做了改良,改用手头的凿子来凿出内部的空间。
</p>
<p>
下面给大家介绍下具体的过程。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_20130428_230345.jpg" width="800" height="600" alt="从一小堆材料挑出来一块适合厚度的绿檀料">
</p>
<p>
顺便说一下做出来盒子的尺寸:3*4*10cm左右。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_20130428_230830.jpg" width="800" height="600" alt="准备开料">
</p>
<p>
开料我用的是田岛的硬木锯。有些朋友问我该用神马锯子,其实这时候用神马锯子都可以,只要能大致按线过去就好,后边还会刨。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_20130428_231628.jpg" width="800" height="600" alt="第一锯下去后的样子">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_20130428_233428.jpg" width="800" height="600" alt="去掉两边的废料,注意这时候料不是四方的,因为料本身斜着裂开了,我推测纹理是这个方向,按这个方向取的料应该结识点">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_20130508_212623.jpg" width="800" height="600" alt="再次裁剪,剩下的料还能做几个。">
</p>
<p>
我专门选了带白边的一块,觉得这样个性些。接下来的工作比较考验基本功了,把这样一小块菱形木头弄成四方的,然后再锯成下图中的三个部分。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_20130510_211430.jpg" width="800" height="600" alt="绿檀暴露在空气中会被氧化,由黄色变成深绿色">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_20130510_214733.jpg" width="800" height="600" alt="定好位置开始凿">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_20130510_215604.jpg" width="800" height="600" alt="基本和凿榫眼是一样的">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_20130511_000205.jpg" width="800" height="600" alt="凿好后的基本样子">
</p>
<p>
凿的时候需要注意琢磨bevel的朝向,和凿榫眼不一样,不然就凿不出两边圆滑的感觉了。接下来的这个步骤也是比较考验凿子技巧的。盖子和盒子之间通过一个蝴蝶扣(或者你叫他燕尾xx)来固定。看起来很小的东西不认真做很难做到严丝合缝。我吸取了前次的经验也只能做到盒子这边比较贴合,和盖子这边还是会有缝隙。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_20130511_203103.jpg" width="800" height="600" alt="做好的燕尾榫">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_20130511_213057.jpg" width="800" height="600" alt="用来固定盖子的紫铜铆钉,淘宝上找了半天">
</p>
<p>
铜铆钉买回来没有那么亮,用300#,600#,1000#的砂纸打磨,最后用图片中的研磨剂擦亮,亮瞎了某人的狗眼啊。不过过一会儿被氧化了也没那么亮了。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_20130511_213111.jpg" width="800" height="600" alt="唯一使用电动工具的部分,4mm钻孔 for 铆钉">
</p>
<p>
最后再秀一组无敌兔拍的成品图。前边的图都是便宜手机拍的,效果实在对不起国家啊。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_5563.JPG" width="800" height="600" >
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_5565.JPG" width="800" height="600" >
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_5567.JPG" width="800" height="600" alt="可以看到盖子上的燕尾榫有点缝隙">
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_5570.JPG" width="800" height="600" >
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_5572.JPG" width="800" height="600" >
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_5575.JPG" width="800" height="600" >
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_5577.JPG" width="800" height="600" >
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_5583.JPG" width="800" height="600" >
<img class="" src="http://ifq.github.com/rc/2013-05-12/IMG_5585.JPG" width="800" height="600" >
</p>
<p>
手工打造绿檀戒指盒,thanks for looking~
</p><p><a rel="bookmark" href="http://ifq.github.com/blog/2013/05/12/jewelrybox-for-wk/">⚓ Permalink</a></p>]]></content>
</entry>
<entry>
<title type="html"><![CDATA[最近修缮了下emacs]]></title>
<link href="http://ifq.github.com/blog/2013/05/01/emacs-modify/"/>
<updated>2013-05-01T00:00:00+08:00</updated>
<id>http://ifq.github.com/blog/2013/05/01/emacs-modify</id>
<content type="html"><![CDATA[<p>
emacs这东西,深啊。
身边没有人交流,孤独啊。
很多功能都是凑合着用,焦急啊。
趁着五一优化了一下配置,清爽啊。
</p>
<div id="outline-container-1" class="outline-2">
<h2 id="sec-1">magit</h2>
<div class="outline-text-2" id="text-1">
<p> 公司一直还没导入git,所以一直也没去尝试。最近貌似要导入了,于是认真学
习了下。另外看了youtube上linus对subversion的强烈鄙视,subversion顿时
一无是处啊。
</p>
<p>
公司还在用svn,因此考虑本地用git管理代码,于是发现了git-svn。一个分支
下多个branch,本地空间立马节省了许多,管理的代码也清晰了。之前为了解一
个bug,需要下一份特定版本的代码,修改之后又不一定commit。本地的修改越
积越多,占有空间不说,时间长了还不知道改了什么。
</p>
<p>
导入了git,相应的emacs下也就导入了相应的mode,magit。绑定F10到
magit-status,M-F10 到 Magit-log。目前用起来感觉还是很爽。本地的脚本、
配置也终于使用SCM管理起来了,心里舒坦多了。
</p>
<p>
如果你也和我一样,还没有用过分布式的版本控制,建议你试试git。
</p>
</div>
</div>
<div id="outline-container-2" class="outline-2">
<h2 id="sec-2">auto-complete</h2>
<div class="outline-text-2" id="text-2">
<p> 之前陆陆续续用过几次AC mode,但是由于各种的问题(要么是速度奇慢,要么
是和YASnippet冲突神马的)又懒得解决就放弃了。这次重新编译了 24.3 的
emacs之后,决定重新试试。。
</p>
<p>
和gccsense,自动不全结构体成员的功能还是弄不起来。不知道gccsense的配
置还有哪里不对。暂时还是配合gtags来进行补全。目前没有经常编码,所以
需求不是很高,所以又偷懒了。速度慢的问题也没有了,原因不明。。
</p>
<p>
总之先用用看把。
</p>
</div>
</div>
<div id="outline-container-3" class="outline-2">
<h2 id="sec-3">smex</h2>
<div class="outline-text-2" id="text-3">
<p> 使用ido的模式为 M-x 补全的功能,挺实用。推荐!
</p>
<p>
“` elisp 配置代码
(require ‘smex) ; Not needed if you use package.el
(smex-initialize) ; Can be omitted. This might cause a (minimal) delay
; when Smex is auto-initialized on its first run.
(global-set-key (kbd “M-x”) ‘smex)
(global-set-key (kbd “M-X”) ‘smex-major-mode-commands)
;; This is your old M-x.
(global-set-key (kbd “C-c C-c M-x”) ‘execute-extended-command)
“`
</p>
<p>
算我孤陋寡闻,才知道<a href="https://github.com/technomancy/emacs-starter-kit">emacs-starter-kit</a>。 要是一开始学emacs的时候知道
这么好的初学者工具该多好啊。smex也是包含在其中的工具。
</p>
</div>
</div>
<div id="outline-container-4" class="outline-2">
<h2 id="sec-4">emacs-color-theme-solarized</h2>
<div class="outline-text-2" id="text-4">
<p> 这个也是<a href="https://github.com/technomancy/emacs-starter-kit">emacs-starter-kit</a> 里包含的东西,是emacs的主题。之前emacs23的
时候还是用扩展的 color-theme.el,现在可以不用那个了,直接用系统自带
的。这个theme的配色考虑的比较全面,看起来很和谐。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/emacs-color-theme.png" width="800" height="600" title="emacs-color-theme-solarized" alt="效果解图">
</p>
</div>
</div>
<div id="outline-container-5" class="outline-2">
<h2 id="sec-5">feng-highlight</h2>
<div class="outline-text-2" id="text-5">
<p> 本来在看idle-highligh-mode,无意间浏览到了shenfeng的<a href="http://shenfeng.me/highlight-thing-under-cursor.html">这篇博客</a>。 试用
了一下感觉不错。
</p>
<p>
在一个词上 M-i,即高亮现实所以相同的地方;还可以用M-n/p来上下导航,
M-r来替换。一看就是实用注意者啊,其实这点子我也有想过,但是我基本不
会lisp,所以这种想法都基本上立马忽略。但是有了这种功能确实很爽。
</p>
</div>
</div>
<p><a rel="bookmark" href="http://ifq.github.com/blog/2013/05/01/emacs-modify/">⚓ Permalink</a></p>]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Noppoo Keyboard]]></title>
<link href="http://ifq.github.com/blog/2013/04/20/noppoo-keyboard/"/>
<updated>2013-04-20T00:00:00+08:00</updated>
<id>http://ifq.github.com/blog/2013/04/20/noppoo-keyboard</id>
<content type="html"><![CDATA[<p><a rel="bookmark" href="http://ifq.github.com/blog/2013/04/20/noppoo-keyboard/">⚓ Permalink</a></p>]]></content>
</entry>
<entry>
<title type="html"><![CDATA[龙猫柜笼制作系列-1]]></title>
<link href="http://ifq.github.com/blog/2013/03/23/cage-for-kira/"/>
<updated>2013-03-23T00:00:00+08:00</updated>
<id>http://ifq.github.com/blog/2013/03/23/cage-for-kira</id>
<content type="html"><![CDATA[<p>
首先澄清,这里说的龙猫,其实跟猫没有关系。很多朋友见了都说:哪里是猫,明明是老鼠嘛。实际是它确实是鼠,学名美洲栗鼠,哺乳纲啮齿目豪猪亚目毛丝鼠科动物。因为样子和宫崎骏动画中的龙猫造型酷似,所以被人们叫做龙猫。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-03-26/IMG_5245.JPG" width="800" height="600" title="龙猫吃草图" alt="咱家的龙猫kira">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-03-26/IMG_5250.JPG" width="800" height="600" title="龙猫吃草图" alt="吃草卖萌两不误">
</p>
<!-- more -->
<p>
<img class="" src="http://ifq.github.com/rc/2013-03-26/IMG_5260.JPG" width="800" height="600" title="kira盟照" alt="专注的卖萌">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-03-26/IMG_5264.JPG" width="800" height="600" title="继续吃草图" alt="人生就是吃草+卖萌">
</p>
<p>
话说我在日本的时候就想养龙猫,但是碍于龙猫极其怕热,28摄氏度就有可能中暑致死,所以据说夏天在要长时间开这空调饲养。如此高的挑费让人难以承担,所以迟迟不敢下手。不过真正和养过龙猫的人交流之后,似乎也没有那么夸张,并且有其他一些廉价的方法给龙猫降温,所以我养龙猫的愿望成为可能。
</p>
<p>
给龙猫降温常见的方法有:空调、风扇、冰窝、半导体制冷片。风扇指标不治本,但是据说不是超级热也可以过去;冰窝能降温,但是冰化了又得换,麻烦;半导体制冷片对我来说也许是个折中的选择。制作相对复杂,但是耗电量较低,效果持续。况且身边可以找到很多制作材料,何乐而不为~
</p>
<p>
<img class="left" src="http://ifq.github.com/rc/2013-03-26/cold.jpg" title="半导体制冷片" >
半导体制冷片,通电之后一面的热量被搬运到另一面,从而产生制冷的效果。我买的是最常见的12706型号,12V6A,功率60W左右。13块钱一片,用四片,功耗240W左右,24小时开电费也不会觉得夸张。
</p>
<p>
能量守恒,有冷就有热,而且热似乎大于冷,制冷片产生的热量是比较大的。不加上辅助的散热装备,一会儿就会烧坏。幸好我身边能找到不少散热片,省了不少银子:)
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-03-26/IMG_5225.JPG" width="800" height="600" title="制冷器" alt="制冷片加上散热器,中间用铝片,螺丝固定">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-03-26/IMG_5226.JPG" width="800" height="600" alt="平置的制冷器,白色散热片用于制冷,黑色的面用于散热">
</p>
<p>
之前买来本来打算DIY其他东西后来放弃了的风扇,现在散热全靠他们了。为了降低几个暴力风扇的噪音,还在网上找了PWM风扇调速器。
<img class="" src="http://ifq.github.com/rc/2013-03-26/IMG_5227.JPG" width="800" height="600" alt="不要小看那个小个子的,这家伙12V5A,能把自己吹起来,超暴力!就是声音很大。。">
<img class="" src="http://ifq.github.com/rc/2013-03-26/IMG_5228.JPG" width="800" height="600" alt="这个涡轮风扇也有12V4A,也很暴力。">
</p>
<p>
说了半天,这个60W,那个5A,没有个给力的电源都是白搭。身边找到一个不用的PC电源,300W,足够用了。还是DELL上拆下来的~
<img class="" src="http://ifq.github.com/rc/2013-03-26/IMG_5229.JPG" width="800" height="600" >
</p>
<p>
最后是这次project的主体了,制冷器再好,没有一个封闭的空间,也没有好的制冷效果。这时候是我木工爱好大显身手的时候了。用SketchUp画了个草图,大概就按这个来做了。两侧和柜门都用钢化玻璃;最下方是一个大抽屉,放龙猫的东西;抽屉上方的隔层是猫沙架子;顶部的留空可以上钢丝网也可以上制冷器模块。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-03-26/cage.PNG" width="600" >
</p>
<p>
木材也到位了,剩下来就等大汗淋漓一番了。Thanks for looking~
</p><p><a rel="bookmark" href="http://ifq.github.com/blog/2013/03/23/cage-for-kira/">⚓ Permalink</a></p>]]></content>
</entry>
<entry>
<title type="html"><![CDATA[悬挂式床头灯]]></title>
<link href="http://ifq.github.com/blog/2013/01/16/bedlamp/"/>
<updated>2013-01-16T00:00:00+08:00</updated>
<id>http://ifq.github.com/blog/2013/01/16/bedlamp</id>
<content type="html"><![CDATA[<p>
床头一直缺个灯,看书不方便,但是一直也没买。原因是有了木工这个爱好之后,什么东西都琢磨着用木头能不能做。于是一直在想用木头做一个什么样的床头灯。设计是一个很有意思但有时候会令人头大的事情。有限的工艺和材料下,想做出定制的东西,能满足功能,又要好用,还要尽量新颖。有时候天马行空想了很多方案,最终不是实现不了,就是造价太高,或者不确定做出来的东西是否实用。
</p>
<p>
所以我想很多东西是需要一代一代演化的,做出一个原型,再慢慢改进。以下就是我的第一代悬挂式的床头灯。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-01-16/P1165012.JPG" width="800" height="600" >
</p>
<!-- more -->
<p>
我家的床靠背比较高,比较厚,而且目前是靠墙放,所以床头灯就真的要做到头上了。开始想做可调角度的,但是越想越复杂,最后又回到了这个简单的方案。基本上就是一个燕尾榫的盒子的变形。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-01-16/P1165017.JPG" width="800" height="600" title="开灯的效果" alt="两个人看书滑到中间,一个人看书滑到边上">
</p>
<p>
由于边想边做,没心思再拍照记录过程了。另外做燕尾榫的手艺还很差,图上可以看到很多地方缝隙还很大。燕尾榫的制作方法在做之前又重温了一下Rob的视频,但是在实践的时候还是遇到些问题。
</p><ol>
<li>用导突锯锯过之后,用线锯去掉废料部分的时候遇到问题了。导突锯的锯路太细,不到1mm,线锯锯条进不去。开始将就着用粗的锯子再锯一边,然后线锯塞进去。后来觉得影响精度,不得不换更细的线锯条。
</li>
<li>换了细的线锯条,锯条更容易断了。这个木头也比较硬,做一个盒子断了3,4根锯条。(木头是捡的木地板料刨出来的,不懂是什么,不知道是不是橡木)
</li>
</ol>
<p>
<img class="" src="http://ifq.github.com/rc/2013-01-16/P1165019.JPG" width="800" height="600" title="pin" alt="按照rob的说法pin可以做的更小">
</p>
<p>
顶部的盖子是滑动的,方便换灯泡什么的。灯泡用的1W*3的LED灯(10块钱)。前边的按钮想增加点质感,所以从淘宝买了不锈钢的(5块钱)。另外找了块透明塑料粘一层乳白色的塑料纸做灯罩。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-01-16/P1165020.JPG" width="800" height="600" >
<img class="" src="http://ifq.github.com/rc/2013-01-16/P1165021.JPG" width="800" height="600" >
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2013-01-16/P1165022.JPG" width="800" height="600" alt="从后面看的样子">
</p>
<p>
本来以为后边不用两个横杠加固也可以,但是制作的过程中后边的一块已经断了,最后用502粘上继续做的。end grain真的不结实。只有不断接触木头才能更了解木头啊~
</p>
<p>
Thank for looking~
</p>
<p><a rel="bookmark" href="http://ifq.github.com/blog/2013/01/16/bedlamp/">⚓ Permalink</a></p>]]></content>
</entry>
<entry>
<title type="html"><![CDATA[802.11协议节电学习memo]]></title>
<link href="http://ifq.github.com/blog/2012/11/10/ps-memo/"/>
<updated>2012-11-10T00:00:00+08:00</updated>
<id>http://ifq.github.com/blog/2012/11/10/ps-memo</id>
<content type="html"><![CDATA[<p>
根据802.11-2012标准中,章节 <code>10.2 Power management</code> 中的描述,目前 802.11协议中存在的节电技术有以下几种:
</p><table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption></caption>
<colgroup><col class="left" /><col class="left" /><col class="left" />
</colgroup>
<thead>
<tr><th scope="col" class="left">节电方式</th><th scope="col" class="left">介绍</th><th scope="col" class="left">引入时间</th></tr>
</thead>
<tbody>
<tr><td class="left">PS-Poll</td><td class="left">通过PS-Poll报文通告AP发送缓存的报文</td><td class="left">802.11</td></tr>
<tr><td class="left">S-APSD</td><td class="left">配合QoS工作,AP按照事先协商的时间片发送缓存报文</td><td class="left">802.11e</td></tr>
<tr><td class="left">U-APSD</td><td class="left">配合QoS工作,STA发送Trigger报文通知AP发送缓存报文</td><td class="left">802.11e</td></tr>
<tr><td class="left">PSMP</td><td class="left">AP通过发送单个PSMP帧i组织所有STA的缓存报文收发</td><td class="left">802.11n</td></tr>
<tr><td class="left">TDSL Peer PSM</td><td class="left">未了解,SDK中未找到</td><td class="left">802.11n(?)</td></tr>
<tr><td class="left">WNM Sleep</td><td class="left">协议中可选内容,SDK中未找到</td><td class="left">未知</td></tr>
<tr><td class="left">SM Power Save</td><td class="left">通过关闭多条receive chains中一部分来省电</td><td class="left">802.11n</td></tr>
</tbody>
</table>
<!-- more -->
<ul>
<li>基础框架 & PS-Poll <br/>
节电方式有时显得很多,很复杂,但是都遵循最基本的框架运作。
<ul>
<li>电源管理状态
<dl>
<dt>Active Mode</dt><dd>对应 STA 的 Awake 状态,STA 全功率运行,可以随时接收报文。
</dd>
<dt>PS Mode</dt><dd>对应 STA 的 Doze 状态,STA is not able to transmit or
receive and consumes very low power,定期苏醒接收报文。
</dd>
</dl>
</li>
<li>更改电源管理状态的方法 <br/>
以下内容节选自 802.11-2012 章节10.2.1, 这些内容规定了状态切换的基本原则。
<blockquote>
<p>STAs changing Power Management mode shall inform the AP of this
fact using the Power Management bits within the Frame Control
field of transmitted frames。
</p>
</blockquote>
<blockquote>
<p>Power Management mode shall not change during any single frame exchange sequence.
</p>
</blockquote>
<blockquote>
<p>The Power Management bit shall be ignored in frame exchanges initiated by the AP.
</p>
</blockquote>
<blockquote>
<p>A non-AP STA shall not change power management mode using a frame
exchange that does not receive an ACK or BlockAck from the AP.
</p>
</blockquote>
<blockquote>
<p>NOTE—A PS-Poll frame exchange does not necessarily result in an
ACK from the AP, so a non-AP STA cannot change power management
mode using a PS-Poll frame.
</p>
</blockquote>
<blockquote>
<p>the Power Management bit is the same for all MPDUs in an A-MPDU.
</p>
</blockquote>
</li>
<li>PS Mode 下的动作
<ul>
<li>缓存报文
<ul>
<li>缓存到 STA 的可缓存的单播报文(某些medium access control (MAC)
management protocol data unit不可缓存)
</li>
<li>缓存所有的广播报文
</li>
</ul>
</li>
<li>发送 TIM 和 DTIM
<dl>
<dt>TIM</dt><dd>traffic indication map, 每个Beacon都携带
</dd>
<dt>DTIM</dt><dd>delivery traffic indication map,特殊的TIM,关注广播包围。
在携带DTIM的Beacon发出后,AP会随即发送缓存的广播报文。
</dd>
</dl>
<p> TIM 具体格式参看 802.11-2012,8.4.2.7 TIM element。
<img src="http://ifq.github.com/rc/tim-element.PNG" alt="/rc/tim-element.PNG" />
</p><ul>
<li>Bitmap 中每一个bit与一个STA的AID对应。具体计算方法参加协议。
</li>
<li>需要指出的是 Partial Virtual Bitmap 字段指示的是所有 STA 的节点
状态,不包括广播报文。Bit 0 对应与 AID 为 1 的 STA。
<blockquote>
<p>The Bitmap Control field is a single octet. Bit 0 of the field
contains the Traffic Indicator bit associated with AID 0. This bit is
set to 1 in TIM elements with a value of 0 in the DTIM Count field
when one or more group addressed MSDUs/MMPDUs are buffered at the AP
or the mesh STA.
</p>
</blockquote>
</li>
<li>TIM 与 DTIM 的区分
<blockquote>
<p>The DTIM is indicated by the DTIM count field of the TIM
element having a value of 0.
</p>
</blockquote>
</li>
</ul>
</li>
<li>STA 接收报文
<ul>
<li>PS-Poll 与 TIM 的关系
<img src="http://ifq.github.com/rc/tim-pspoll.PNG" alt="/rc/tim-pspoll.PNG" />
</li>
<li>PS-Poll 获取报文 <br/>
<img src="http://ifq.github.com/rc/ps-poll-1.PNG" alt="/rc/ps-poll-1.PNG" />
</li>
<li>切换到 Active Mode
<blockquote>
<p>When an AP is informed that a STA has changed to the Active
mode, then the AP shall send buffered BUs (if any exist) to
that STA without waiting for a PS-Poll. When
</p>
</blockquote>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>youtube上有个 Video 介绍了节电的基本概念,对初学者有参考价值。(不过英文着实难懂)
<ul>
<li><a href="http://ifq.github.com/video/Power Save Mechanisms Supported in IEEE 802.11 Protocol - Tutorial 1.mp4">节电介绍视频1/2</a>
</li>
<li><a href="http://ifq.github.com/video/Power Save Mechanisms Supported in IEEE 802.11 Protocol - Tutorial 2.mp4">节电介绍视频2/2</a>
</li>
</ul>
</li>
<li>U-APSD
<img src="http://ifq.github.com/rc/u-apsd-1.JPG" alt="/rc/u-apsd-1.JPG" />
<ul>
<li>在基础构架的之上,不同之处在于STA唤醒后于AP交互的方式。Trigger
Frame不再是PS-Poll,而是特定优先级的QoS报文作为Trigger报文。
<ul>
<li>Trigger 报文的决定可以在管理过程中协商,也可以关联后用ADDTS报文协商。
</li>
</ul>
</li>
<li>BU 按照 Qos 优先级分别进行缓存。有如下两个概念:
<ul>
<li>trigger-enabled AC
</li>
<li>delivery-enabled AC
</li>
</ul>
</li>
<li>注意点:
<ul>
<li>STA 只需要发送一个Trigger报文来通告AP,AP在随后的处理中会发送buffer的多个报文。
和 PS-Poll方式不同。
<blockquote>
<p>If the STA has set up to use unscheduled SPs, the AP shall
buffer BUs using delivery-enabled ACs until it has received a
trigger frame using a trigger-enabled AC from the non-AP STA,
which indicates the start of an unscheduled SP. A trigger frame
received by the AP from a STA that already has an unscheduled SP
underway shall not trigger the start of a new unscheduled SP
</p>
</blockquote>
</li>
<li>以下内容指明何时返回休眠。
<blockquote>
<p>The STA shall remain awake until it receives a QoS data frame or
QoS Null frame addressed to it, with the EOSP subfield in the QoS
Control field equal to 1
</p>
</blockquote>
</li>
</ul>
</li>
<li>更多内容参考 802.11-2012 的 10.2.1.6,10.2.1.8,10.2.1.9
</li>
</ul>
</li>
</ul>
<ul>
<li>PSMP
<ul>
<li>原理
<blockquote>
<p>Power Save Multi-Poll (PSMP) is a feature of 802.11n that extends
the Automatic Power Save Delivery (typically called APSD)
mechanism defined in 802.11e by allowing the client stations to
operate on a group schedule rather than individually.
</p>
</blockquote>
<p>
<img src="http://ifq.github.com/rc/psmp-1.JPG" alt="/rc/psmp-1.JPG" />
</p>
<ul>
<li>AP 通过发送 PSMP 报文通知所有STA 之后的 上下行 缓存报文发送的安排。
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>SM Power Save
<ul>
<li>原理
<ul>
<li>Spatial Multiplexing Power Save 的缩写
</li>
<li>通过关闭硬件的部分流,从而节电。
<blockquote>
<p>A STA consumes power on all active receive chains, even though
they are not necessarily required for the actual frame
exchange. The SM Power Save feature allows a STA to operate with
only one active receive chain for a significant portion of time.
</p>
</blockquote>
</li>
<li>有静态和动态两种模式。
<ul>
<li>静态模式下,STA 将一直关闭部分硬件,持续以单流的形式与AP通行。
</li>
<li>动态模式下,STA 关闭部分硬件,处于单流模式。当接受到一个单流的
单播报文后,开启省电关闭的硬件,切换到多条流的工作状态。通常使
用RTS/CTS报文完成这个动作。
<blockquote>
<p>In dynamic SM power save mode, a STA enables its multiple
receive chains when it receives the start of a frame sequence
addressed to it. Such a frame sequence shall start with a
single-spatial stream individually addressed frame that
requires an immediate response and that is addressed to the
STA in dynamic SM power save mode. An RTS/CTS sequence may be
used for this purpose.
</p>
</blockquote>
</li>
</ul>
</li>
</ul>
</li>
<li>SDK 现状
<ul>
<li>AP 自身处于 <code>HT_CAP_MIMO_PS_OFF</code> 状态,即始终不使用 SM Power Save。
</li>
<li>STA 可根据自身情况决定 SM Power Save 状况,并通告 AP。关联时或通过Action报文。
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>其他
之前北京XX出现过 Intel 6205 网卡的笔记本无故变成单流,之后发现是笔记本使能了静态的SM Power Save导致。
<ul>
<li>为了避免这种情况对笔记本进行了多种设置和改动,均不能解决。
</li>
<li>AP 方面做实验强制将 STA 设为非 SM Power Save 模式也不能生效。由于
这个过程不是协商的,STA 仅是通过自己的 SM Power Save状态。
</li>
</ul>
<p> 最终只能认定为笔记本端硬件,或者驱动的动作导致进入该状态。
</p></li>
</ul>
<p><a rel="bookmark" href="http://ifq.github.com/blog/2012/11/10/ps-memo/">⚓ Permalink</a></p>]]></content>
</entry>
<entry>
<title type="html"><![CDATA[更新octopress博客系统后的笔记]]></title>
<link href="http://ifq.github.com/blog/2012/10/29/upgrade-octopress/"/>
<updated>2012-10-29T00:00:00+08:00</updated>
<id>http://ifq.github.com/blog/2012/10/29/upgrade-octopress</id>
<content type="html"><![CDATA[<p>
octopress的博客系统使用有一段时间了。总体很满意,发博客也渐渐上手了。但是也还有些小问题困扰。比如导入过往blog之后,总共的post量比较大,每次generate的时候耗时很长;比如comment数量总是显示为零。
</p>
<p>
关于前一个问题,目前还没有找到很好的解决方案,再等等看octopress自己会不会改进这个问题吧。关于comment数量的显示,查到这个bug实际已经解决,但是需要升级到2.1 的branch才行(之前是master分支,是2.0)。于是对博客系统进行了升级,过程这里不复述了,可以参考<a href="http://octopress.org/docs/updating/">官方指南</a> 。但是要注意merge的时候自己定义的一些改动会不会被覆盖,样式表、页脚链接之类。
</p>
<p>
最终结果,comment的问题解决了,theme最后换回了classic界面。。大众一点也好,UI更友好。后边空闲的时候可以加点logo之类的装饰下。以下是几点memo,供参考。
</p>
<ul>
<li>upgrade octopress <br/>
如果你使用 <code>git pull octopress 2.1</code> 更新时,提
示没有相应的 repo,那么说明你和我一样,需要以下的命令首先把octopress
添加到remote的repo列表。
<figure class='code'><div class='highlight'><table><td class='gutter'><pre class='line-numbers'><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='plain'><span class='line'>git remote add octopress https://github.com/imathis/octopress.git</span></code></pre></td></tr></table></div></figure>
</li>
</ul>
<!-- more -->
<ul>
<li>回退错误的 git pull <br/>
如果做git pull操作的时候, pull错了branch,可以用下面的命令来恢复。
没有专门去学过,不怎么会用,但是 git 真的感觉好庞大啊。。
<blockquote>
<p> git reset –hard ORIG_HEAD
</p>
<p>
git pull will do two things: it does a git fetch and then a git merge
where it merges branches that have been setup to be merged in your
config.
</p>
<p>
So what you want to do is to undo the merge (undoing the fetch doesn’t
make a lot of sense and shouldn’t be necessary).
</p>
<p>
To do that you can try using git reset –hard to reset to a previous
state. Use the git-reflog command to find the SHA-1 of the previous
state and then reset to it.
</p>
</blockquote>
</li>
<li>git 删除未commit的不想要的git改动
<figure class='code'><div class='highlight'><table><td class='gutter'><pre class='line-numbers'><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='plain'><span class='line'>git clean -f</span></code></pre></td></tr></table></div></figure>
</li>
<li>有的post在第一次发出后可能还需要持续更新几次,在post中增加 <b>本博客于yyyy-mm-dd hh:mm更新</b> 这样的时间戳提示也许很有用。至少我在单位的个人主页有尝试这样,更新工作进展比较有用。 <br/>
我用的方法是利用 emacs 的org模式中执行 src blog 的功能——Babel。在需要显示时间戳的地方加上以下几句:
<pre class="example">#+begin_src sh :exports results
echo "本文档更新于: $(date)"
#+end_src
</pre>
<p>
之后export的时候转换出来的html里不再是上边几句代码,而是代码执行出来的结果。也就是显示 <code>本文档更新于: xxx</code> 。当然,为了正确导出可能需要对 org模式的 Babel 进行额外的设置。貌似需要加上以下几句:
<figure class='code'><div class='highlight'><table><td class='gutter'><pre class='line-numbers'><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
</pre></td><td class='code'><pre><code class='plain'><span class='line'>; Some initial langauges we want org-babel to support
</span><span class='line'>(org-babel-do-load-languages
</span><span class='line'> 'org-babel-load-languages
</span><span class='line'> '(
</span><span class='line'> (sh . t)
</span><span class='line'> (python . t)
</span><span class='line'> (R . t)
</span><span class='line'> (ruby . t)
</span><span class='line'> (ditaa . t)
</span><span class='line'> (dot . t)
</span><span class='line'> (octave . t)
</span><span class='line'> (sqlite . t)
</span><span class='line'> (perl . t)
</span><span class='line'> ))
</span></code></pre></td></tr></table></div></figure>
实现时间戳我使用了 sh,当然你也可以用 ruby或者 perl之类。前提是emacs能够正确访问到相应的解释器。ruby如果使用rvm管理的话,可能需要找 rvm.el 做设置。
</p>
<p>
下面这个就是时间戳的效果:
</p></li>
</ul>
<pre class="example">
本文档更新于: 2012年 11月 08日 星期四 00:43:39 CST
</pre>
<p><a rel="bookmark" href="http://ifq.github.com/blog/2012/10/29/upgrade-octopress/">⚓ Permalink</a></p>]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Roubo Style Workbench - 靖天木工桌 5/5]]></title>
<link href="http://ifq.github.com/blog/2012/10/28/roubo-workbench-5/"/>
<updated>2012-10-28T00:00:00+08:00</updated>
<id>http://ifq.github.com/blog/2012/10/28/roubo-workbench-5</id>
<content type="html"><![CDATA[<p>
敢鸭子上架,尽管有各种的问题,但是总装的时刻还是来了~ 上周末终于把 End vise 和 leg vise 都装上了;所有腿部的横梁也都固定了;靖天木工桌终于站起来了~ 以下的内容比较凌乱,请读者自行缓存并排序~
</p>
<p>
腿钳使用两张3cm的板子粘接而成,下面的那根垂直的我不知道该怎么称呼,就叫slide guide吧。。是用木地板的废料做的。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA214446.JPG" width="600" alt="腿钳刚做好的样子">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA214447.JPG" width="600" alt="起初担心那根guide不能很好的垂直于面板,结果却异常的好">
</p>
<p>
等待leg vise粘接的过程中,开始安装end vise。考虑尽量加大夹持深度,所以vise没有直接装在桌面底面,而是加了6cm的木块垫低。(实践证明效果不怎么好)
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA214448.JPG" width="600" alt="end vise 装上的效果,此时还缺少一边的夹持面">
</p>
<!-- more -->
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA214449.JPG" width="600" alt="这张比较清楚的看到被垫低的台钳底部">
</p>
<p>
顺便给大家介绍下我的钻头。由于要安装腿钳,开比较深的洞,手头上之前的开孔器都不能胜任,于是购买了新的钻头。本来要买支罗钻,不过在网上看到这种钻头,比支罗钻还要便宜点,就买了。使用效果感觉不错,头部的尖形结构有助于定位,不容易跑偏。不过开32mm大孔的时候我的手钻还是比较吃力,容易卡死,手钻烫的非常。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA214450.JPG" width="600" alt="新钻头比较给力,可以开12cm深,口径不大时刷刷两下就搞定">
</p>
<p>
回到安装腿钳的task。桌腿底部需要给slide guide一个孔穿过。 10cm的透榫眼,用上新买的钻头也让开这个榫眼提速许多。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA244454.JPG" width="600" alt="几面划线,都能对上,看来之前腿部刨的够方正。">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA244459.JPG" width="600" alt="腿钳下部废料锯掉,量好位置开32mmo孔。(实际上这时候的腿钳有个致命bug,你看出来了么)">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA254460.JPG" width="600" alt="开好孔的腿与腿钳第一次合体~">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA254462.JPG" width="600" alt="多角度看合体~">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA254463.JPG" width="600" alt="多造型和合体~">
</p>
<p>
下面这张图解释了前边提到的腿钳的致命问题,你看出来了么?
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA264602.JPG" width="600" alt="重新修过的腿钳面板,看出不同了么">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA264605.JPG" width="600" alt="粘接两个方块用来做slide guide的滑轮结构">
</p>
<p>
给桌腿钻32mm孔的过程可以用‘心惊胆战’四个字形容~ 洞,只能开一个,歪了就只能哭了。所以一直迟迟不想动手。为了尽量不钻歪,仔细划线之后从两面分别钻。口径大,手钻不稳,有时候卡住还会跳起来,真是不容易。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA264608.JPG" width="600" alt="虽然还是有点歪,但是最后的结果还是比较满意的">
</p>
<p>
腿部要开的孔终于开完了,可以把这一侧的腿部和两个横梁粘接了。(另一侧上次就粘了)
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA274611.JPG" width="600" alt="粘好腿,上好钳,翻过来~">
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA274614.JPG" width="600" alt="桌底一瞥">
</p>
<p>
折腾了好久了,两个vise还是一个没装上呢,给end viseu准备的夹持面板也粘好了(一片3cm木板+4跟3cm木方粘成的面板再粘起来组成的。。实在没木头了。。),可以先把end vise 装好了。
</p>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA284634.JPG" width="600" alt="又到打孔时,结果图~">
</p>
<p>
这几个孔打的时候吸取了另一面打孔时的经验,顺利了不少。手钻打孔有几个诀窍
</p><ul>
<li>孔尽量大点,不要妄想准确贴和
</li>
<li>几个孔要配合时先量一个孔的位置,打孔,然后套上实际部件,定位其他孔。
</li>
</ul>
<p>
<img class="" src="http://ifq.github.com/rc/2012-10-28/PA284635.JPG" width="600" alt="拆开台钳定位">