2015年12月22日 星期二

PS圖片顏色變換

以下分享簡單調整衣服顏色的方法,雖不算是正統的做法,不過對於一般照片的調整使用也算綽綽有餘了。
1.點選圖層視窗下的,新增調整圖層"色相/飽和度"。



2.如圖示在色相/飽和度做調整,色相的調整依據為下方第一個色條顏色,或是你可以在色相上左右拉動一下,調到理想的顏色。



3.再利用遮色片只保留衣服的部份就算完成了,遮色片的使用請參閱"調整圖層遮色片的使用"



4.再回色相/飽和度做調整,就可以隨意的變化顏色了。
1.進入選單->圖層->新增調整圖層->曲線,跳出對話框後按確定,也可從圖層視窗底下的快捷鍵去新增。



2.先將顏色做調整,顏色可以拉重一點,以方便我們待會上色。



3.因為剛剛新增調整圖層,會在遮色片模式底下,所以工具列的顏色會只有黑跟白,而我們要先將剛剛改的顏色先遮住,須選黑色的前景色填滿,進入選單編輯->填滿,跳出填滿視窗,選"前景色"按確定,或是也可以使用如下熱鍵做填滿。
Alt+Delete 使用前景色填滿,Ctrl+Delete 使用背景色填滿



4.你會發現遮色片縮圖變黑色,我們剛改的顏色就被遮住,簡單來講你可以把遮色片黑色當作一塊黑布,全黑時東西就遮住,把黑布剪個洞就可以看到後面的東西了。



5.使用筆刷工具,筆刷的顏色是以前景色做預設,所以我們要將前景色與背景色交換,點一下箭頭位置顏色就會交換,或是按熱鍵X。



6.選擇適當筆刷大小。



7.在花朵上作塗色,你會發現只有花朵的顏色改變,會看到遮色片縮圖中間白白的,好像黑布破個洞,所以想改哪個位置的顏色,就將那裡塗白吧。



8.現在你就可以在曲線圖層裡只針對花朵做顏色修正,而不影響其他地方了。
參考來源:http://ayu6628.pixnet.net/blog/post/4805959-%E5%BF%AB%E9%80%9F%E8%AE%8A%E6%9B%B4%E8%A1%A3%E6%9C%8D%E7%9A%84%E9%A1%8F%E8%89%B2%E3%80%90photoshop%E6%95%99%E5%AD%B8%E3%80%91.pixnet.net/blog/post/4805959-%E5%BF%AB%E9%80%9F%E8%AE%8A%E6%9B%B4%E8%A1%A3%E6%9C%8D%E7%9A%84%E9%A1%8F%E8%89%B2%E3%80%90photoshop%E6%95%99%E5%AD%B8%E3%80%91

2015年11月3日 星期二

the program has encountered an unspecified error and has stopped functioning x4






The easy fix that I have found is this...

  1. Right-Click On the VideoStudio Icon on Your Desktop
  2. Choose Properties
  3. Choose the tab labeled "compatibility".
  4. Check the box that says "run program as administrator"
  5. Then, click apply, then ok.
This worked great for me, hope it works for you too!

2015年10月28日 星期三

iPhone 當機白蘋果,更新回復失敗無法開機

iPhone 問題排除方法

iPhone 畫面凝結無回應
如果 iPhone 螢幕觸控無回應,或是 App 畫面卡住的話,一般只要按一下主畫面 Home 鍵就能離開。接著連按兩下 Home 鍵,就能左右滑動找到卡住的 App,向上滑動將該 App 關閉。如果按一下 Home 鍵沒反應無法離開的話,可以試著按住 Home 鍵不放來強制離開。還是不行的話,再按住 Home+Power 鍵不放強制重開機。


iPhone 螢幕全黑無法開機
如果 iPhone 螢幕畫面全黑,按住電源鍵開機也沒反應。這時候應該先拿出原廠 USB 電源轉換器充電 20 分鐘,再查看能否正常開機啟動。如果充電後畫面還是全黑無法開機,此時可以在插著充電狀態下,同時按住 iPhone 的「Home+Power 鍵」不放,看能不能強制重開機顯示白蘋果畫面。如果畫面仍然全黑或一直顯示 Apple 標誌,請試著使用電腦 iTunes 進行回復。



iPhone 如何進入恢復模式
如果 iPhone 無法開機或卡在白蘋果畫面,還是電腦 iTunes 抓不到 iPhone 的話,就能進入恢復模式來使用 iTunes 回復裝置。只要將 iPhone 用 USB 線連接有安裝 iTunes 的電腦,在 iPhone 重開機後按住圓形主畫面 Home 鍵不放,直到出現以下畫面就能使用 iTunes 進行回復。
iPhone 越獄後如何更新
在你選擇 JB 越獄後,就失去了從「設定>一般>軟體更新」這種簡單輕鬆的更新權利,用電腦 iTunes 更新也會失敗出現錯誤碼。在 iPhone 上想重置「清除所有內容和設定」,也能卡在白蘋果畫面失敗無法開機,這就是愛 (越獄) 的代價。

iPhone 越獄後如果想恢復未越獄狀態,或是更新系統,只能連接電腦 iTunes「回復 iPhone」,才能更新到最新系統和恢復未越獄狀態,但是 iPhone 上所有資料都會清空,回到出廠狀態。所以在「回復 iPhone」前,可先用 iCloud 或 iTunes 備份資料,等回復後再從備份回復資料。(如何備份、還原 iPhone、iPad 檔案資料)



iPhone 如何系統降級回復
iPhone 已經不能降級 (版) 很久了,備份 SHSH 也沒有用。現在只能趁 Apple 在釋出新韌體後,在上一版韌體驗證還沒關閉前回復降級。比如現在最新系統是 iOS 8.1.3,但是 Apple 還沒有關閉 iOS 8.1.2 驗證,你還可以去下載 iOS 8.1.2 韌體,將 iPhone 連接電腦 iTunes,然後按住電腦鍵盤的「Shift 鍵」再點一下「回復 iPhone」,就能從電腦中選擇 iOS 8.1.2 韌體進行回復。(舊版 iOS 韌體下載)
如果回復過程中出現「發生未知錯誤 (1667)」,請使用電腦管理員權限來執行 iTunes 回復。假如舊版 iOS 韌體關閉驗證的話,錯誤提示一般是 3194。



iPhone 如何進入 DFU 模式
DFU 模式在三、四、五年前 PwnageTool、redsn0w 和 sn0wbreeze 越獄工具時代常用到,現在幾乎很少有機會需要用到,JB 已經進入雲端和一鍵越獄時代。所謂的 DFU (Development FirmwareUpgrade) 是一種韌體強制升降級工程模式,不過目前只能用來強制升級回復。在你把 iPhone 亂搞到什麼方法都沒救時,才需要動用到進入 DFU 模式來拯救。

進入 DFU 模式的方式很多,透過軟體或手動都可以,下面的 redsn0w 越獄畫面,就是最基本的 3 步驟進入 DFU 模式方式。把 iPhone 用 USB 線連接電腦後關機,接著按住電源鍵 2 秒開機後,再同時按住 Home 鍵 10 秒後放開電源鍵等 15 秒。在正確進入 DFU模式後 iPhone 螢幕畫面是全黑,但是電腦 iTunes 依然能抓到 iPhone 進行回復。(有一根傳輸線和 iTunes 圖標的是「恢復模式」)

資料來源:http://www.iphonenews.cc/2015/02/iphone-development-firmware-upgrade.html

2015年10月25日 星期日

ESP系統的原理



ESP系統的原理1
ESP系統的原理2

把ESP關掉,當汽車沒有ESP系統時,遇到一灘水,很像大雨時在高速公路行駛,遇到積水區的情況。




當ESP系統有作用時,電腦會介入打滑的情況,穩定車身,脫離失控的情況。

 參考資料:http://wjhwang.pixnet.net/blog/post/29573375-esp電子車身穩定系統

2015年10月21日 星期三

windows10 市集 應用程式的移除方法

1.按win 鍵彈出

2. 點擊設定
3.點擊系統-應用程式
4.點擊"應用程式與功能"

最後選擇需要御載的應用程式解除安裝,完成!


2015年10月16日 星期五

無線AP如何能讓80人同時上網?

環境:

在一個30m*30m的空間,無障礙物,80人需同時使用無線網路,設備及需求如下:
1.SSID只能有一個(ex:testAP),不能有testAP1......
2.AP有四台,分別架在4個角落

Wi-Fi
Wi-Fi聯盟製造商的商標做為產品的品牌認證,是一個建立於IEEE 802.11標準的無線區域網路技術。基於兩套系統的密切相關,也常有人把Wi-Fi當做IEEE 802.11標準的同義術語。「Wi-Fi」常被寫成「WiFi」或「Wifi」,但是它們並沒有被Wi-Fi聯盟認可。
並不是每樣符合IEEE 802.11的產品都申請Wi-Fi聯盟的認證,相對地缺少Wi-Fi認證的產品並不一定意味著不相容Wi-Fi裝置。
IEEE 802.11的裝置已安裝在市面上的許多產品,如:個人電腦、遊戲機、MP3播放器、智慧型手機、印表機、新筆記型電腦以及其他週邊裝置。
Wi-Fi聯盟成立於1999年,當時的名稱叫做Wireless Ethernet Compatibility Alliance(WECA)。在2002年10月,正式改名為Wi-Fi Alliance。
2.4GHz的ISM頻段為世界上絕大多數國家通用,因此802.11b得到了最為廣泛的應用。蘋果公司把自己開發的802.11標準起名叫AirPort。1999年工業界成立了Wi-Fi聯盟,致力解決符合802.11標準的產品的生產和裝置相容性問題。Wi-Fi為制定802.11無線網路的組織,並非代表無線網路

存在問題:
1.目前AP一台能分享的頻寬為54M,越多人透過AP連上網路,每人分到的頻寬就越低,
也就是說若無法設定漫遊,所有的User都是吃第一台AP的頻寬的意思並會存在信號干擾。
2.ADSL的頻寬,80人上網以2M/512來說256/64KB分給80人用每人下載才分到3.2KB太慢,導致回應失效
3. 3-4台的AP,會導致訊號的頻率干擾

解決方式:
1.四角落各放一台AP,互設漫遊Roaming,公式=(n-1),越多台就要設越多次指向MAC-Address
2.證實設定完漫遊後,就算四台AP放在一公尺內,並不會發生干擾情形。
3.無線網卡會自動搜尋離他最近的AP做為基地台。


參考資料:
http://forum.slime.com.tw/thread132091-2.html
https://zh.wikipedia.org/wiki/Wi-Fi

CPU cache l1 l2 l3

資料來源:http://www.cnblogs.com/techyc/p/3607085.html
CPU,一般认为写C/C++的才需要了解,写高级语言的(Java/C#/pathon...)并不需要了解那么底层的东西。我一开始也是这么想的,但直到碰到LMAX的Disruptor,以及马丁的博文,才发现写Java的,更加不能忽视CPU。经过一段时间的阅读,希望总结一下自己的阅读后的感悟。本文主要谈谈CPU缓存对Java编程的影响,不涉及具体CPU缓存的机制和实现。

现代CPU的缓存结构一般分三层,L1,L2和L3。如下图所示:

级别越小的缓存,越接近CPU, 意味着速度越快且容量越少。
L1是最接近CPU的,它容量最小,速度最快,每个核上都有一个L1 Cache(准确地说每个核上有两个L1 Cache, 一个存数据 L1d Cache, 一个存指令 L1i Cache);
L2 Cache 更大一些,例如256K,速度要慢一些,一般情况下每个核上都有一个独立的L2 Cache;
L3 Cache是三级缓存中最大的一级,例如12MB,同时也是最慢的一级,在同一个CPU插槽之间的核共享一个L3 Cache。
当CPU运作时,它首先去L1寻找它所需要的数据,然后去L2,然后去L3。如果三级缓存都没找到它需要的数据,则从内存里获取数据。寻找的路径越长,耗时越长。所以如果要非常频繁的获取某些数据,保证这些数据在L1缓存里。这样速度将非常快。下表表示了CPU到各缓存和内存之间的大概速度:
从CPU到       大约需要的CPU周期  大约需要的时间(单位ns)
寄存器          1 cycle
L1 Cache      ~3-4 cycles          ~0.5-1 ns
L2 Cache    ~10-20 cycles   ~3-7 ns
L3 Cache    ~40-45 cycles   ~15 ns
跨槽传输              ~20 ns
内存        ~120-240 cycles  ~60-120ns

利用CPU-Z可以查看CPU缓存的信息:
在linux下可以使用下列命令查看:


有了上面对CPU的大概了解,我们来看看缓存行(Cache line)。缓存,是由缓存行组成的。一般一行缓存行有64字节(由上图"64-byte line size"可知)。所以使用缓存时,并不是一个一个字节使用,而是一行缓存行、一行缓存行这样使用;换句话说,CPU存取缓存都是按照一行,为最小单位操作的。

这意味着,如果没有好好利用缓存行的话,程序可能会遇到性能的问题。可看下面的程序:
 1 public class L1CacheMiss {
 2     private static final int RUNS = 10;
 3     private static final int DIMENSION_1 = 1024 * 1024;
 4     private static final int DIMENSION_2 = 6;
 5 
 6     private static long[][] longs;
 7 
 8     public static void main(String[] args) throws Exception {
 9         Thread.sleep(10000);
10         longs = new long[DIMENSION_1][];
11         for (int i = 0; i < DIMENSION_1; i++) {
12             longs[i] = new long[DIMENSION_2];
13             for (int j = 0; j < DIMENSION_2; j++) {
14                 longs[i][j] = 0L;
15             }
16         }
17         System.out.println("starting....");
18 
19         long sum = 0L;
20         for (int r = 0; r < RUNS; r++) {
21 
22             final long start = System.nanoTime();
23 
24             //slow
25 //            for (int j = 0; j < DIMENSION_2; j++) {
26 //                for (int i = 0; i < DIMENSION_1; i++) {
27 //                    sum += longs[i][j];
28 //                }
29 //            }
30 
31             //fast
32             for (int i = 0; i < DIMENSION_1; i++) {
33                 for (int j = 0; j < DIMENSION_2; j++) {
34                     sum += longs[i][j];
35                 }
36             }
37 
38             System.out.println((System.nanoTime() - start));
39         }
40 
41     }
42 }

以我所使用的Xeon E3 CPU和64位操作系统和64位JVM为例,如这里所说,假设编译器采用行主序存储数组。
64位系统,Java数组对象头固定占16字节(未证实),而long类型占8个字节。所以16+8*6=64字节,刚好等于一条缓存行的长度:

如32-36行代码所示,每次开始内循环时,从内存抓取的数据块实际上覆盖了longs[i][0]到longs[i][5]的全部数据(刚好64字节)。因此,内循环时所有的数据都在L1缓存可以命中,遍历将非常快。

假如,将32-36行代码注释而用25-29行代码代替,那么将会造成大量的缓存失效。因为每次从内存抓取的都是同行不同列的数据块(如longs[i][0]到longs[i][5]的全部数据),但循环下一个的目标,却是同列不同行(如longs[0][0]下一个是longs[1][0],造成了longs[0][1]-longs[0][5]无法重复利用)。运行时间的差距如下图,单位是微秒(us):

最后,我们都希望需要的数据都在L1缓存里,但事实上经常事与愿违,所以缓存失效 (Cache Miss)是常有的事,也是我们需要避免的事。
一般来说,缓存失效有三种情况:
1. 第一次访问数据, 在cache中根本不存在这条数据, 所以cache miss, 可以通过prefetch解决。
2. cache冲突, 需要通过补齐来解决(伪共享的产生)。
3. cache满, 一般情况下我们需要减少操作的数据大小, 尽量按数据的物理顺序访问数据。

参考: