2013年12月12日 星期四

Feedburner Error

Your feed filesize is larger than 576K. You need to reduce its size in order for FeedBurner to process it. Tips for controlling feed file size with Blogger can be found in Tech Tips on FeedBurner Forums, our support site.

這就是目前 Part 2 那篇收不進去的原因。檔案太大了。

在 Blogger 的「設定」>「其他」,「網站資訊提供」下的「允許網誌資訊提供」,把「完整」選成「簡短」就好了。在「張貼資訊提供重新導向網址」那邊我是有設定 feedburner,因為當初想過,如果換個地方的話難道要叫讀者去重新訂閱?當然不!

所以找了 Google 買下的 Feedburner 來把資訊提供給燒起來,這樣換網誌的時候只要在後台設定 rss 來源,讀者是完全不用做事就會自動抓到新的來源。

為什麼 Google 你要把 Reader 收掉呢?

RSS 的 Reader 才是閱讀啊! Facebook、 Google+ 那種地方的訊息真的太亂了。

2013年12月1日 星期日

Aperture Workflow

Latest update: Dec. 10, 2013 公開版

其實我應該要先打已經兩個月過去還沒打完的美國兩周行。不過最近正好在搞這個,所以先打這個好了。至少這個比較簡單。

Forward
因為 Apple 的 OS X Mavericks (10.9) 策略,把舊版用系統的「軟體更新(Software Update...)」項目全部改成用 Mac App Store 來更新。所以就必須要讓之前在不是 Mac App Store 上購買程式的人在 Mac App Store 上有購買記錄,這樣才可以透過 Mac App Store 更新軟體。

iWork 的 Pages 、 Keynote、 Number,以及 Aperture 都是屬於這種類型的應用程式。
~隱藏的內容~隱藏的內容~隱藏的內容~隱藏的內容~
也就是⋯⋯一切盡在不言中。

附帶一提,爸爸說寶寶是二十五美金。

Features
雖然我只是想記錄一下我的使用方法,還有 Aperture 的英文選項翻譯(主要是後面這項)。
是的! Aperture 到現在仍是只有英文版。
不過既然都打了一篇偽心得文,當然要學學芸芸眾生都為 Aperture 打了一篇文章來記錄自己使用的工作流程啦。

今天早上為了去公司加班做十點要報告的投影片,我七點半就起床了,我兩點多才開始睡的。至少 Boss 說我的 FlashMap Layout 講的不錯 XDDD。

上面只是想表達我現在想睡了。


Aperture 的資料其實要找也不太好找,可是說難找, Apple 就直接有影片教學了。但是那個 Find Out How 網頁好像被刪掉了。現在我只有從 Support 裡頭找到各項的單獨影片。

不過可以先看看 from iPhoto to Aperture。裡面介紹 Aperture 比 iPhoto 多增加的功能。
  1. Multiple versions of a photo. Minimal hard drive space.
    VersionsEach version is a new copy in iPhoto.

    A single copy can have multiple versions in Aperture 3.
    When you want to create an alternate version of a photo, iPhoto duplicates the photo. Aperture stores as many variations as you want in a single image file. That’s big news, because it eats up far less hard drive space than storing duplicate photos. Aperture makes it easy to keep track of all those versions, too, so you can use different ones for different projects.
  2. Merge, sync, and split multiple libraries.
    Merge libraries
    Your iPhoto library is your Aperture photo library, automatically. With the new unified library, there’s one place for all your photos. And if you’ve accumulated multiple iPhoto libraries over the years — or you have libraries on different Mac computers — you can now use Aperture to merge them together and still open them in iPhoto. While iPhoto is designed to work with one library at a time, Aperture lets you set up as many libraries as you want and switch between them instantly. And you can export a project with all the related photos or an iPhoto Event as a new library.
  3. Never run out of hard drive space.
    iPhoto, One diskAperture, Several diskes
    As your iPhoto library grows, it may become too big to store on your computer’s hard drive. Aperture lets you set up as many external drives as you want and specify where to store each of your photos — without changing anything in your Aperture library. You can access and edit your photos the way you usually do, no matter where the originals are stored. This feature also allows you to add hard drives one at a time, whenever you need them. So your setup can grow along with your library.

以下是 Support 的影片中,我覺得比較有用的幾個。我分成「基本(大家都應該要知道的功能)」,以及「進階特色(真的很奇怪的 XDD)」。
    基本
  1. Welcome to Aperture 3
  2. Aperture 3: Merging Aperture Libraries
  3. Aperture 3: Adjusting Date and Time
  4. Aperture 3: Editing Metadata
  5. Aperture 3: Using Stacks
  6. Aperture 3: Embedding and Exporting Metadata
  7. Aperture 3: Exporting Versions, Masters, and Projects
  8. Aperture 3: Publishing Photos to Facebook or Flickr
  9. Aperture 3: Importing Basics
  10. Aperture 3: Filtering and Searching
  11. Aperture 3: Ratings, Keywords, Labels and Flags
  12. Aperture 3: Organize Your Photos Using Faces
  13. 進階特色之調整
  14. Aperture 3: Adjustment Presets
  15. Aperture 3: Adjusting Exposure
  16. Aperture 3: Highlights and Shadows
  17. Aperture 3: Recovering Highlights
  18. Aperture 3: Levels and Curves
  19. Aperture 3: Sharpening Images
  20. Aperture 3: Using Brushes to Apply Adjustments
  21. Aperture 3: Using Quick Brushes to Retouch Photos
  22. Aperture 3: Black-and-White and Color Effects
  23. Aperture 3: Using Lift and Stamp
  24. Aperture 3: Making Prints and Contact Sheets
  25. Aperture 3: Working with Video in Aperture
  26. Aperture 3: Viewing Multiple Displays
  27. 進階特色之怪功能
  28. Aperture 3: Using Quick Preview
  29. Aperture 3: Making Multiple Selections
  30. Aperture 3: Importing GPS Locations from a GPS Tracker or iPhone
  31. Aperture 3: Organize Your Photos Using Places

我略掉了幾個。我只有直接看名稱標題來分類,沒有真的一個一個點開來看,因為有些之前看過了。等我以後有空再來調順序了。

我就是在看了影片之後才知道堆疊的功用與人臉辨識要怎麼選確認。

Workflows
我的工作流程很簡單。

把照片匯入(Import),刪掉覺得不需要留的,對於會上傳到 Flickr 的照片加上名稱與註解(metadata),就這樣。

最多只會做裁剪(crop)跟轉正(straighten),一些需要馬賽克或是修痘痘的狀況會加上修飾(retouch)。通常那些攝影師會做的後製我都不會去做,主要原因我自己認為就是那個顏色病的關係

不過他們這種軟體最重要的功能就是修飾照片。 Aperture 自以為豪的還有裡面的 preset 功能,把照片的調校設定存起來,直接套用到其他照片。我不知道 Lightroom 有沒有這功能。

經常跟 Apple 的 Aperture 相比的軟體就是 Adobe 的 Lightroom,他們這等級的軟體都是拿來後製照片的。對於照片管理的功能,我不知道 Lightroom 有沒有。我自己認為 Google 的 Picasa 跟 Apple 的 iPhoto 是一起被比較照片管理軟體,最主要功能就是整理照片。

我自己原本就是想找個圖片管理軟體來整理照片,因為以前在 Windows 的資料夾整理方式已經沒辦法對付日益肥大的照片資料庫了。雖然目前才快要 20GB 而已。

從 Windows 換到 Mac 的時候就拿了 iPhoto 來用。一開始用一用也沒什麼,可是後來發現有更進階版的 Aperture 就有想過要不要換過來。讓我卻步的主要原因就是軟體本身要 US$79.99

Aperture 主要提供的功能我都不會去使用它,感覺上頗為浪費錢。我只會用 Aperture 來當比較進階的資料庫,因為介紹重點之一就有說 Aperture 對修改照片是用資料記錄的方式,而不是像 iPhoto 的製造另一個檔案。

話說 Picasa 也是這麼記錄修改的照片,只不過他沒有像 Aperture 弄出個資料庫來儲存。我自己是比較喜歡這種資料庫的感覺,因為所有資料全都在資料庫下,備份的時候直接整包複製就好了。很多微軟下的軟體,都是檔案跟資料分兩邊存,因為萬惡 C 槽下的使用者帳戶。

不過我還是比較喜歡可以像一般開資料夾的方式找回圖片, iTunes 就是這樣。雖然 iPhoto 跟 Aperture 的資料庫都可以那樣開,但是裡面的照片不是按照專案來存放的,好像是按照匯入時間。 iTunes 下的資料庫是按照「歌手、專輯、歌曲」這種方法來整理,所以如果真的需要自己手動找回檔案的話,其實不會很難。

Library
Aperture 的資料庫跟 iPhoto 的,以及 Mac 下的應用程式都一樣,都是在資料夾上加後綴名(.aplibrary,因為不能稱「附檔名」), Mac 就會自動把它包起來。想要顯示裡面的內容,必須要按右鍵選「Show Package Contents」。

iTunes 的資料庫概念其實跟 Aperture 與 iPhoto 的一樣,只不過他沒有用後綴名把它包起來而已。

簡單的說,該程式會需要用到的資料,都會被放在這裡面。以 iTunes 來說,就是音樂;對 Aperture 來說,就是照片。

而除了檔案本身之外,還會多一些檔案來記錄一些無法存放在檔案內的資料,如喜好程度等等。

所以這些資料庫,都可以單純靠翻資料夾來找出原始檔。只不過 Apple 軟體的設計想法,都是讓你用軟體去管理那些內容,而不是自己手動去整理。蘋果可是很愛搞出「智慧型」什麼東西的咧。

當你只有幾百張照片/幾百首音樂的時候,還會想要用資料夾來整理。但是當這數字變成「幾萬」了之後,我不覺得有誰有辦法單純靠資料夾就整理好的。就算整理好,要把東西找出來就絕對不是一件容易的事。

Master, Original, and Version
Originals and Versions
Originals and Versions
Master 跟 Original 其實是一樣的意思,代表最原始的圖檔。而 Version 就是經過修改後的版本。像上面這樣代表每一個圖檔,都只有一種版本。
上圖那個預設資料庫:
2736 versions, 2724 originals
(代表有幾張照片有多種版本,可能是十二張圖片以下)

Aperture 的優點中, iPhoto 會將每次修改存成一個新的檔案,而 Aperture 只會把各版本修改資料用數據化的記錄下來,並不會存成一個新檔。所以這樣可以以很小的空間,記錄很多種的版本。就我所知, Picasa 就是用這種方式記錄修改過的資料。

iOS 裝置上所拍攝的相片、影片,直接在裝置上修改也會用這種記錄修改地方的方式來儲存修改資訊。所以直接在 Windows 下把檔案抓出來,看到的會是原始檔,而不是修改過的樣子。之前看過有人抱怨這件事。其實我自己是蠻喜歡這樣的,「原始檔」的重要性應該不需要多加解釋。就跟錄影界常用的「母片」是一樣的意思啊。有最原始的東西,想要怎麼改都可以。但是被修改過的東西,是很難用回原來的模樣。對於某些事情,是根本不可能變回原來的樣子。

在現在 Aperture 的選單設定中,大多數字眼都是用 Original 這個字。可是在 Aperture 資料庫裡的資料夾結構中,是以 Masters 來做為資料夾名稱的。如果將 Aperture 的資料庫打開,以下這幾個資料夾是比較重要的資料夾。
  • Masters
  • Previews
  • Thumbnails
並不是說其他幾個不重要,只是因為檔案在大的通常是這幾個。

其實名稱還蠻清楚的。所有圖片的原始檔都會存在 Masters 下,而 Thumbnails 則是儲存照片、影片的縮圖。這兩個資料夾是一定會有的。可以拿來節省空間的,就是剩下的那個 Previews,預覽圖的存放地。

Previews
在 Aperture 的設定標籤頁中,其中一頁就是「Previews」。裡面可以選擇新匯入的圖片們要不要建立 Previews,還有 Previews 的尺寸以及圖片品質。

為何有了 Thumbnails 之外還要有 Previews,這就牽涉到另一項那個「可以將照片存放在多個磁碟」的功能了。

就我所知道的, Aperture 只能有一個「主資料庫」。

雖然 Aperture 可以把照片「匯出成資料庫」,也有「合併資料庫」的功能。但是真正的資料庫只會有一個。

如果是說好幾個各別分開的資料庫,這件事 iPhoto 也可以做,這個就不是 Aperture 比 iPhoto 強悍的地方了。

Aperture 可以存放在多個磁碟的功能,所存放的資料是「圖片的原始檔」,並不是我原本以為的「部分資料庫」。

剛剛提到的三大資料夾, Masters、 Previews、 Thumbnails,佔最多空間的當然就是存放原始檔的 Masters。也就是為什麼要把原始檔分開放。而這就是 Aperture 的「存放在多個磁碟」功能。

我當初在用這個功能的時候真的以為可以分成好幾個部分資料庫,以及一個主資料庫。後來發現不能這麼搞之後,只好真的切成兩個資料庫來放。必須要存成資料庫的形式,就是資料庫除了一些基本的 Metadata 之外,還包含了照片的喜好程度、相簿、面孔辨識等無法儲存在相片圖檔本身的資料。而這些不能夠直接存在照片裡的資料,通常就是讓這些照片更好用的資訊。

所以 Previews 的功能,就是把原本可能幾十 MB 的原始 RAW 檔,以設定的壓縮等級以及大小產生出預覽檔留存在資料庫裡。這樣就算存到外接磁碟的原始檔不在,也可以拿預覽檔來做一些基礎編輯。不過官方有說明,有些事情仍是必須要有原始檔才能夠做,遇到這種事情的時候, Aperture 會有提示視窗請你將原始檔的硬碟接上。

稍微解釋一下:平常照相的時候,相機存成的照片格式是 JPG/ JPEG。這是種破壞性壓縮,檔案是已經經過相機的白平衡等後製產生出來的。而 Raw 檔是相機的感光元件所接收到的數據,完全沒有被動過。所以只要用支援的程式開啟,你可以將白平衡、色彩飽和度、對比度、清晰度等等設定改成任何你想要的樣子。這就是原始檔的重要!
我以前看過 Sony A700 的 Raw 檔,一張圖片就快要 20MB 了。

Aperture Previews Preferences
Aperture Previews Preferences

接著上面。在 Aperture 的預設設定中,對於舊的照片不會特別去產生 Preview。不過在預設設定中有讓新照片,在匯入的時候自動產生 Preview 的功能。我自己是把這個選項關掉。因為我只是用 iPhone,最多是用小小的 Sony T30 來照相,真的不需要用到預覽圖來佔空間。如果以後改用單眼的話,應該就會需要預覽的功能了,因為這樣能夠大大地加快圖片顯示的速度。

在這邊對 Previews 的檔案做個結論。如果你的原始檔不在資料庫裡,那 Aperture 一定會幫你製作預覽。如果你是用單眼拍的 Raw 檔,那你可以讓 Aperture 在匯入的時候就建立預覽,或是等匯入之後再來製作預覽。如果只是小小 2-3 MB 的照片,其實是可以不用製作預覽,順便節省空間。

Relocate and Consolidate
Relocate 就是將照片原始檔移出資料庫,選擇之後要放的位置。
Consolidate 則是將照片原始檔放回資料庫裡。

被 Relocate 過的照片,就稱作 Referenced Images。而原始檔存在資料庫裡的照片則是 Managed Images。

Relocate 這個選項,就是要使用 Aperture 多磁碟存放功能要選擇的項目。 Relocate 可以選擇存放在本機磁碟而不存放在外接磁碟裡,但這樣變成沒什麼意義。因為空間仍然被占去了。

Export and Import
Export 可以選擇要輸出 Original 或是 Version。不過我自己比較喜歡直接把檔案從 Aperture 拉出到 Finder 的桌面或是下載資料夾。這功能大致上都可以用,不過我好像有遇過 Version 拉不出去,只能拉 Original。

但 Export 最重要的功能,對我來說就是「輸出成資料庫」。我自己就是用這功能來分割資料庫的。雖然跟我原本想的不太一樣,至少還可以用啦。

不過官網影片介紹 Export to library 的時候,用的例子是將專案的部分照片或是一整個專案輸出,帶到其他地方編輯,等回來的時候再將該資料庫合併回主資料庫。 Aperture 的 Export to library 功能,匯出的資料庫就是一個完整的資料庫。

在 Import 的時候, Aperture 會問使用者要將資料庫合併(Merge),或是增加成新檔案(Add)。如果選擇後者,你的資料庫就會有重複的檔案。如果是 merge,它會將修改以 Version 的方式合併到你原本資料庫裡的檔案。 Import 的功能我沒什麼測試,所以我不知道有增加又有刪除會發生什麼事。

我當時的測試,「匯出資料庫」的時候還可以選擇要不要連預覽照片一起匯出。因為我的目的是想要把 iPhoto 的資料庫格式改成以 Aperture 原生的格式來儲存。外加當初亂搞亂用, iPhoto 裡面的資料根本不知道是不是正確的。

Aperture 3.x: What Are Managed Images and Referenced Images?

Quick Preview
Quick Preview 這功能就是不讀取原圖,改讀取產生出來的 Preview 檔來加速 Aperture 速度。

Shortcuts and Notes
對我來說最重要的快速鍵就是 v,用途就是 Cycle View Mode。我自己之前用 iPhoto 時,一直想要用鍵盤把 Viewer Mode 轉成 Browser Mode,可是只能用滑鼠轉換。

人臉辨識可以用滑鼠框選 Aperture 辨識出來的多張面孔,一次把它們全部確認成同一個人。我之前在 iPhoto 的時候可是點到快瘋了。

而堆疊(Stacks)的功用是將時間相近,或是同樣主題的照片集合在一起,減少專案中顯示出來的項目數。
舉例來說,單眼相機在拍婚攝之類的主題時,攝影師都會狂按快門,所以同一時間的照片可能有個位數到幾十位數的照片。這樣管理上會很麻煩,而 Auto-Stack 可以按照你設定的間隔,自動把照片們堆疊起來,減少 Project 下的顯示數。普通的 Stack 就是自己手動選擇照片把照片給疊起來。它的主要功能就是這樣。

將照片們在 Browser Mode 選擇起來後,以 v 鍵切換瀏覽界面,配上 z 鍵或雙指縮放來改變照片大小,用 shift 來同時平移選擇的照片位置。這招來比較照片我覺得還不錯。不過我覺得 Aperture 在 Mavericks 的雙指縮放經常縮放過頭,不知道在動物系列的時候有沒有這個問題。

結尾
目前就想到這些,所以就先這樣啦~~~

啦啦啦~~~

2013年9月10日 星期二

[震怒] 去你的死 Blogger

之前吃我一篇「Aug. 25th, 2013: ed2k javascript, TextMate, and batch href to “target = "_blank"”」就算了。反正我才剛開始打。

現在又吃掉我一篇了!!!!

這篇的名字我還不能打出來!!!

我資料找得很辛苦啊!!!斷斷續續地打了六個月的時間就這麼消失了!!現在那些圖片我根本不知道原圖在哪啊!



重點是那些 ed2k 連結更是難找啊!!

好不容易整理好了,全部都被蓋過去了!!!我明明是按「新文章」啊!!




你這個垃圾!!!!

2013年9月8日 星期日

Aug. 25th, 2013: ed2k javascript, TextMate, and batch href to “target = "_blank"”

ed2k javascript version: Jul. 30th, 2014

本篇文章原文已經消失過一次。這次是重打的,所以會比較簡潔一點。

幸好我有用 Xmarks 來備份書籤。不然我當時找到的那些書籤全都沒辦法找回來,這篇的資料來源也只能流產了。


因為有在一個咳咳論壇看到他們網站用的程式碼,所以我把它抓回來改成我要的樣子。除了那個 “Download selected item(s)” 按鈕我真的改不了,其他的部分都跟那論壇用的程式碼不一樣。改不了的原因在下面解釋。

不過我後來找資料的時候發現他用的程式碼,跟很多論壇用的都一樣。似乎只要是 Discuz! 模版的論壇就可以用。

使用前提及已知 Bugs:
  1. 檔案名稱必須要自行對過。一旦發生問題會導致整段程式碼出不來。
    最常發生問題的地方就是下方紅字的檔案名稱處。
    ed2k://|file|FileName.FileType|FileSize|Hash|h=RootHash|/

    原本還有一個檔名中有 ' (single quotation) 會導致程式碼印失敗的問題。不過我查了一下發現微軟不支援 " (double quotation) 出現在檔名。所以我改了一下我在 Javascript 用來包參數的符號,這樣就不會有這個問題了。

    但是 Mac 支援 ' 與 " 出現在檔名,它連 / 與 \ 都支援咧。反正目前以 Windodws 為主。
  2. 目前確定知道的問題中,只要未被轉碼過的檔名中有 % ,會導致程式碼會無法出來。 (fix)
  3. 將選項取消勾選後並重新整理網頁,那些選項不會重新自動勾選。 (fix)



參考資料:
因為有下面那個特別標出的來源,所以我才可以做出這種不用管輸入參數個數問題的程式碼。 “arguments” 是好東西啊!

  1. W3Schools
  2. JavaScript 初階教學
  3. JavaScript 中階教學
  4. 那些年,我們應該瞭解的 JavaScript 小知識 - 物件, 數字, 字串, 陣列, 迴圈
  5. Javascript Tutorial
  6. HTML 4.0 Special Entities
  7. eD2k連結(官網)
  8. eD2k連結(維基)

我是先看「JavaScript 初階教學」及「JavaScript 中階教學」這兩篇之後才開始看我抓到的 ed2k script 的程式碼。因為有了基礎之後才看得懂他寫啥呀 XDDDD

會把 W3Schools 放在第一個是因為我之前在用 CSS 的時候也經常到這個網站找參數定義。



程式碼及使用方法:
“Download selected item(s)” 的執行概念是用 window.location 將 ed2k 連結送給瀏覽器,再由瀏覽器按照註冊的連結種類,轉送給 ed2k 連結所註冊的程式。

如果讓所有的連結連續狂送進 ed2k 程式會導致程式直接死當的這種情況在舊版作業系統(如: Windows 2000)經常發生。或是 ed2k 程式中已經有上百個下載項目的情形下更容易發生程式當掉。只是在新作業系統中比較不會全系統當掉,只會是那個 ed2k 程式當掉。所以有個延遲時間是非常重要的。

按照我抓到的來源,它是用 window.setTimeout 來制作延遲的效果。他這個程式的缺點是每次都需要去把全部的連結抓過一次才知道他這次要送誰出去。我原本想要把它改成只用一個參數傳入來寫。可是寫出來的對於延遲時間處理都一直失敗,少數有成功的(alert 成功, window.location 失敗)也不合我意。

我不想要一個程式用兩個函式,當時用了 for 迴圈將 setTimeout 包起來。因為 for 迴圈的關係,會導致 setTimeout 一次全部跑完。而我有想過把延遲時間一直加上去,讓他跑完 for 迴圈的時候就把所有需要執行的程式都按照間隔給設定好。可是 setTimeout 加上 window.location 會導致莫名的問題。我上網找了資料,可是也沒有看到答案。這個方法最後只能「暫時」宣告失敗。當時已經是星期天凌晨了,所以先去睡覺,醒來後就直接用抓到的程式碼來做了。我也是有想過不要用延遲時間直接一次全送出去,可是後來想到過去的經驗,覺得還是做一下延遲會比較保險一點。

按照那個程式的設計想法,除了送第一個連結後可能需要等 ed2k 程式啓動所以等了六秒後才送第二個連結過去,其他都是等五百毫秒就送一個。

就是因為「延遲」做出不我自己想要的樣子,所以那個按鈕改不了的原因就是這樣了。

後來補充的(Jul. 27th, 2014):

快要一年後,因為克林姆跑回台中,原本要繼續寫去年九月故事的我不知道為啥一直去戳 emule 的那篇文章,所以就變成改這份程式碼了。

這次主要參考的都是跟字串有關的網站,還有為了把那個全域變數換掉而特地去查的 getTime 用法。再來就是為了 delay 而做的 for (var delay = 0; delay < 0xBADBF0; delay++) {}。

學校的 ind 雖然可以連,但是 blogger 抓不下來。所以我就去跟改版過的 Google Code 交手了一下,發現他現在有 subversion 耶!!!感覺上還蠻不錯 XDDD。

這次用到了正規表示式(Regular Expression)來把 /%[0-9a-fA-F]{2}/g 給過濾掉。我其實原本是用 /%../ 來做的,後來才知道最後要加一個 g 才會繼續判斷。那時是直接找十六進位的判斷法,稍微改幾個字就修成我可以用的。

.split .replace .indexOf 都還蠻常用到的,比較起來 .match 沒那麼好用。主要是錯誤判斷的時候很麻煩。我這次豬爬格(debug)的時候都是用 document.write (); 來看結果。比起之前用的 alert (); 真的是方便許多。不過有錯誤的話也是整篇程式碼不出來。


我遇到比較難的問題有兩個,但目的都是要做同一件事。就是判斷檔名發生問題後的取代措施。之前發現的問題就是檔案名稱中有單獨的 % 會導致 decodeURIComponent 掛點導致整段程式碼自殺。

我想了兩種方法,第一種比較簡單的是發現檔名有問題,直接把檔案名稱換成 FileNameError + Hash 值 + .filetype。優點就是大部分檔名有問題的都可以套用同樣的公式,缺點就是不知道原本的檔名大概長怎樣。這個方法的難題是不知道附檔名要怎麼從字串中拆出來。(必須保留附檔名的原因就不用提了)

第二種方法是把多出的那個 % 從字串中拆掉。這個就是比較難的方法了。


我遇到的字串就長得像下面這樣。
File Name:
Company - Someone & Anotherone %-- BTS.mp4

ed2k Name:
Company%20-%20Someone%20&%20Anotherone%20%--%20BTS.mp4

遇到的難題就別提了,直接寫解法。我懶得打字了(日記在追殺我)。下面有些寫的有點簡略(「要宣告兩個變數卻只用一個」等等),自己看程式碼吧。

第一種要取得附檔名,就是用 variable.split('.') 把字給分開,再用 variable[variable.length - 1] 來取得最後一個「.」後面的內容(也就是附檔名了)。

第二種困難的原因就是 javascript 沒有取代特定位置字元的方法,想要一個 .replace + .indexOf 的函式就要自己寫啦。我後來睡覺醒來想到的方法是先用 .split() 跟 .match() 把他們分開,還有把分開的東西存起來,再把 split 出來的東西判斷裡面有沒有不該存在的 % 後,之後將他們用黏的加在一起。目前程式碼裡是維持這種的寫法。

不過第二種寫法會遇到一個問題,如果該檔名完全沒有 %xx 的話,用 .match 加上 document.write 後(或是其他種組合),程式就會死給你看。判斷式真的不好寫啊。

備註一個東西,就是想要 if (judgement == 'undefined') 的話,可以改成 if (judgement) 來寫。不然的話,「聽說」是要用 if (judgement === 'undefined') 來寫,而結果也不一定會成功。我自己是用 if (judgement) 來做。

我的第二種方案原本想要做的是算出要取代的 % 是在第幾個字元,再用算式移除掉它之後再把原本的還原回去。我到現在還沒想出這個鬼方法要怎麼寫。相黏法真的實在是太好了。



參考資料:
  1. JavaScript Regex 的 字串比對(Match) 與 取代(Replace)
  2. Regular Expression (RegExp) in JavaScript
  3. [入門][Regex] Regular Expression 詳論
  4. How do I replace a character at a particular index in JavaScript?
  5. How to determine if variable is 'undefined' or 'null'
其他的我大多是用關鍵字在遇到的時候下去找的。就是 replace 與 indexOf 是我在網路上找不到解法的,現在用的這個是我自己想出來的。不過在對字元處理的時候,找個網站有整理 String Object Methods 的來參考有什麼指令可以用的話還蠻不錯的。


最後再提一個東西,我用 javascript 寫出批次取代 emule 給的 ed2k 連結的程式碼了。就是網頁右邊的方塊其中一組。也因為寫出那東西的關係,還順帶寫出製造 textarea 的程式碼。

已移除(繼續往下)

上面這東西的程式碼:
已移除(繼續往下)

後來補充的(Jul. 28th, 2014):

花了點時間把 ed2kscript 的跟 textarea 的程式碼合併在一起。

新版:
textarea replacement:


Result:



ed2kscript:


Result:


兩者在一起的程式碼:



下面這邊才是這次新加的內容。又是一個把側邊欄的工具程式碼做成真正的工具啦。



這次是按了按鈕之後會將按鈕隱藏掉並顯示出隱藏文字的程式碼。就是上面那個按鈕。




程式碼:


參考的資料:
  1. HTML - input value kept after Refresh
  2. HTML/CSS Making a textbox with text that is grayed out, and disappears when I click to enter info, how?

後來補充的(Jul. 30th, 2014):

剛剛在吃洋芋片的時候想著來看一下 Blogger 長怎樣好了。就看到上面那段話。

「將選項取消勾選後並重新整理網頁,那些選項不會重新自動勾選。」

剛好想到在做隱藏按鈕那個工具的時候,好像也有遇到同樣的問題,而且答案似乎就是很簡單的 autocomplete="off"。所以就右手拿著洋芋片,左手單隻手來做測試。

Bug 就這麼解了 XDDD

以下就是目前 v1.2 版。


使用方法就是在 html 的 body 下加上 javascript 的語法,裡面塞 XPCed2kMain ("ed2k_link","ed2k_link"); 如下:



工欲善其事,必先利其器。

我原本是用 Blogger 直接改 Javascript。可是後來真的受不了。測試的時候經常會遇到要把某幾段程式碼暫時註解掉,換個寫法試試看。沒有工具來做這件事真的會大大降低工作效率。所以我上網找了一下 Mac 可用的程式編輯器,找到了這個 TextMate。用起來目前覺得還不錯,雖然好像是需要註冊的,不過還沒看到逼註冊的視窗,就先這樣用了。

我當時找到的排名第一位的 Coding Tool 都是 Komodo Edit 這款奪冠。我試用了一下,我發現他有即時預覽的功能,感覺上真的頗強大啊!不過我後來還是因為 TextMate 的版面看起來比較簡潔一點所以就沒去用看起來有點複雜的 Komodo Edit。

這篇會有這段,當然不是廢話一堆只是要說我用 TextMate 來當寫程式工具。要提的是他的快速鍵啊!來源參考了以下兩篇。不過某一篇快要死了(無名小站要關了)。看在他可憐的份上還是先放著好了。

這個程式預設的縮排是用 tab,要改的話在下方 soft tabs,將 Indent Using 改成 spaces,而 Indent Size 改成 2。這樣就是「用空格以兩格為單位來作縮排」了。

  1. TextMate tips
  2. TextMate 操作

我下面只留我覺得有用的或是有趣的快捷鍵。

常用:
  1. cmd + /:註解所選行/註解所選區塊
    cmd + alt + /:新增區塊註解或註解區塊程式
  2. alt + [:減少縮排
    alt + ]:增加縮排
    cmd + alt + [:按規則縮排
  3. ctrl + cmd + up/down/left/right:將選擇的文字區塊上、下、左、右移動
  4. cmd + e:將目前選擇文字變成尋找目標
    cmd + (shift) + g:下(上)一個符合尋找目標
  5. cmd + alt + left/right:切換開啓的檔案
    cmd + `:切換視窗

有趣:
  1. cmd + alt + 1/2/3:按層收合/展開程式區塊(1 - function; 2 - 'for' or 'if' in function; 3 - and so on)
  2. 'todo' + tab:加入代辦事項
  3. ctrl + shift + t:顯示 todo 列表
  4. ctrl + shift + c:計算選擇文字中的數字(含 Hex 與 Decimal 互轉)




下面的這些程式碼,是我自己直接憑記憶打出來的了。我也找不到當時參考的那個來源了。

功能就是把目前網頁的連結在點選之後以新分頁開啓。裡面以 Start 及 End 包著的那部分是可以放在文章後面,讓網頁讀取到該程式碼以前的連結變成在新分頁開啓。之後讀取到的程式碼仍是維持原本設定值。而整段程式碼是改在整個網頁讀取完成後,以 window.onload 來執行轉換的程式。所以會變成網頁上所有的連結全都變成在新分頁開啓。



會需要這個東西跟網頁的跳出率有關係。像是很多網頁大家都是找到了之後就跳掉,如: Google Search。所以這樣改的話可以改善如 Google Analytics 統計數據上的表現。以上是我猜的啦~

2013年7月29日 星期一

Jul. 19th, 2013: 爛掉的王品


隱藏版王品菜單-圖畫版(上)!
隱藏版王品菜單-圖畫版(上)!

隱藏版王品菜單-圖畫版(下)!
隱藏版王品菜單-圖畫版(下)!

王品新菜單
王品新菜單

餐具改了
餐具改了
現在變得真的很奇怪。他們一開始會把桌上擺的這些盤子都收走。而且旁邊擺的刀叉也不是整頓餐點會用到的器具。當年的西式餐點禮儀咧?

王品縮水超多的水果沙拉
王品縮水超多的水果沙拉
還錢!!
Oct. 2nd, 2011: 王品,克林姆離開
鮮蝦水果沙拉
鮮蝦水果沙拉

餐前酒、因生日招待的雞尾酒,以及水
餐前酒、因生日招待的雞尾酒,以及水
因為胡志強政策,所以王品現在的酒裡頭都沒有酒精(店員這麼說)。

法式麵包玉米濃湯變成麵包玉米濃湯了
法式麵包玉米濃湯變成麵包玉米濃湯了
我的碗跟大蒜麵包啊!!!!看到這道菜跟沙拉,感覺上現在這樣真的差了很多。完全沒有一千三的價值。
王品 台塑牛排
法式麵包玉米濃湯
法式麵包玉米濃湯.JPG
法式麵包玉米濃湯 打開.JPG

Jul. 11th, 2010: Wang Steak 王品
俺的最愛!法式麵包玉米濃湯上的大蒜麵包!
俺的最愛!法式麵包玉米濃湯上的大蒜麵包!
喝完法式麵包玉米濃湯剩下的麵包

阿嬤吃的嫩烤犢牛肋排
嫩烤犢牛肋排
感覺上肉量好少啊。而且故意把骨頭交叉來做裝飾,完全沒有想到服務生要幫食客代切的時候會很不方便。

至少看起來沒差上那麼多的香烤豬大排
至少看起來沒差上那麼多的香烤豬大排
份量十足!

下半部烤回來了
下半部烤回來了

閃亮亮的生日蛋糕
閃亮亮的生日蛋糕
我一口都沒吃到。

設計感非常差的杏仁芙蓉芝麻冰淇淋
設計感非常差的杏仁芙蓉芝麻冰淇淋
過去的那種擺法還比較好吃咧。
王品 台塑牛排
杏仁芙蓉冰淇淋
杏仁芙蓉冰淇淋.JPG

杏仁芙蓉冰淇淋 哭臉版
杏仁芙蓉冰淇淋 哭臉版.JPG

正常版杏仁芙蓉冰淇淋
杏仁.JPG

王品爛了真的不少,而且貴上了不少。我真的想要說「還錢」!!

2013年4月30日 星期二

101 Observatory

寶寶跟卡趴趴想要 High Five
寶寶跟卡趴趴想要 High Five

上面這是我這天出門時,他們的樣子。

悠哉星期六一早七點多我就醒來了。根據睡覺記錄的那個鬧鐘程式,我這天只睡了四小時多一點而已。我去吃了早餐,還順便點了午餐。可是我後來吃完早餐肚子就飽了而有點後悔點了午餐,想要他們不要做午餐的份。結果午餐他們已經做下去了。對於已經做好一部分我有點不太爽,因為我有在點餐單上面附註「晚點做」。可是他們都做了,我只能把東西買了回去吃。害我吃完後變得好飽睡不了原本想要睡的午覺。

結果我在下午兩點多的時候睡了下去。

鬧鐘訂了四點,不過我賴床到四點半才起床。

我在三月三十一日的時候有因為想要刷卡吃晚餐外加遛遛車而去了 101。當時看到了 101 觀景台以美國運通來刷卡購票可享九折優待的廣告(我有照這個東西,不過沒有上傳到網路上浪費空間)。我回來後還特地去查了一下,發現這項優惠只到今年的四月三十日。

我發現有九折優待這件事後,內心就在想著要不要現在上去。我擔心未來他又漲價了。我當年最早看到的時候可是三百五啊!現在卻要四百五。



後來在四月的時候我就一直在想要不要上去。在這週末的時候我覺得還是趁有九折優惠的時候上去看看好了。因為我知道的是克林姆跟壞蛋阿莉莉都有上去看過。

不過沒想到星期六這天下午我出發前上網查了一下,發現 101 的官網上面在票價那邊有附註一句話「以下票價僅適用至102/4/30日止,102/5/1零時起全面調整」。所以後來我在購票的時候有多問了一句「之後變成多少錢」。那個脖子有帶圍巾的售票員說五月一號開始就變成五百元了。

101 觀景台總共有三層樓可供參觀。分別為 88 樓、 89 樓、以及 91 樓。重點就是 91 樓,因為這是室外觀景台,屬於「不定期開放」的。我月初在打算要來的時候就覺得錢一定要花的值得,也就是我一定要上去看室外的觀景台。台北最近的天氣很不穩定,所以我真的不確定 91 樓的觀景台會開。幸好這天有開。後面兩層樓之後會提到所以就不特別講了。

我剛到 101 的時候真的沒想到這麼多人在觀景台那邊排隊買票。我上次來的時候可是根本沒有人在排隊啊!排隊排到我的時候,聽到那個售票員說現在只發售六點開始排隊的票。我後來真的排隊之後才知道什麼叫做「六點開始排隊的票」。

那句話的意思就是你六點才可以開始排隊搭電梯。警衛會等到「六點整」才開始放人過去排隊。如果你提早到的話,他也不會讓你排隊。我原本被趕走後有想過要去其他地方晃晃。不過我後來決定就直接待在那邊搶六點的第一個會比較好。因為我希望可以在還有太陽的時候看到市景呀!

Taipei 101 Ticket
Taipei 101 Ticket
現在(2013年四月二十七日)原價是 Nt$450。剛好這個月用美國運通信用卡有打九折,所以變成 Nt$405。
我必須要強調的是我當年大一、二時過來 101 的時候,觀景台的票價只要 Nt$350。

其實 101 這樣印入場券我覺得很不好。太花了看不清楚呀!不過我很高興那個「AE卡優惠票」我可以用,因為我這次是用永豐的那張美國運通信用普卡刷的。

搭電梯前有個合成照相區。我對那個一點興趣也沒有。而搭電梯的時候,放人的那個人員,會算人數,把整台電梯塞得滿滿滿地才開始往上升。

我當時一搭電梯上到 89 樓的時候,一出電梯門就是在找通往 91 樓的階梯。因為看市景要趁早呀!不然天色就要暗了。



在這邊紀錄一下我在要離開觀景台前特別去記錄的迅速衝到 91 樓攻略。

剛出衝很快電梯的電梯門,人會面對西面。所以出了前方玻璃門後左轉,經過 1/10 的電梯模型後,通往 91 樓的樓梯就在模型旁邊的那扇門裡。

1/10 的世界最快速電梯結構
1/10 的世界最快速電梯結構
Made by Toshiba

這張不重要
這張不重要
我只是要拍下面寫的「Toshiba」

通往 91 樓戶外觀景台的走道
通往 91 樓戶外觀景台的走道
這邊「可能是」一定要用走樓梯的。至少我沒有看到 91 樓有可見的電梯。但是我不能肯定。

上樓後,在要離開樓梯間之前往右邊看可以看到這樓的高度。

91 樓的高度
91 樓的高度

Taipei 101 的 91 樓西面
Taipei 101 的 91 樓西面

上面那張圖片我現在看,突然覺得天氣真的好糟糕喔。

左邊那條是信義路,可以看到大安森林公園喔
左邊那條是信義路,可以看到大安森林公園喔

這張應該有照到我目前在的公司,只是我找不出 orz
這張應該有照到我目前在的公司,只是我找不出 orz
左邊兩條亮路,應該一條是忠孝X路,另一條是市民大道

松山機場跟山 XDDD
松山機場跟山 XDDD
我有繞到山後面去過喔~

101 就是這東西在高的
101 就是這東西在高的
我看介紹的影片,那根是可以伸縮的耶

今天的天氣不太好呀!
今天的天氣不太好呀!

出來到外面觀景台這邊才可以透過另一扇門進入 91 樓的放映室。裡頭一直重複播放著一段大約五分鐘的有關 101 建成影片。

91 樓放映室
91 樓放映室
上面雖然這樣寫,但其實它是一直循環播放沒停的。

回到 89 樓之後除了風景之外,大概只剩阻尼器可以看了。號稱一堆稱號(「唯一可供觀賞」等等),我在下面有打出來。其實按照我的印象,我一直認為這個阻尼器的最大作用是在地震的時候拿來當避震器用的。我在公司遇過兩次地震全都震的很誇張。後來去查了一下該次地真的規模後會覺得感覺根本錯誤了吧。後來我想到會震得這麼誇張的原因,就是因為我在頂樓,十三樓。不過阻尼器平常的功用是拿來抵消風吹的搖擺。

世界最大風阻尼器
世界最大風阻尼器
的介紹
對超高建築來說,建築體之設計必須能抵抗風壓,達到「韌性」結構設計的要求,從九十二樓懸掛到八十七樓的風阻尼器,能抵消自然力造成的擺動,降低建築物擺動幅度最高達40%,以確保大樓內人員平穩舒適,並且符合地震地區對超高建築物韌性結構設計的要求。
*世界最大、最重的被動式阻尼器
*第一個外露並可供觀賞的阻尼器
*球體重 660 公噸
*直徑 5.5 公尺
*懸吊風阻尼器的8根鋼索,由2000根金屬纜線組成,每條直徑9公分的高張力鋼索,可增加結構韌性並且延長使用年限
*風阻尼氣最大擺幅達150公分

這大球上面的漆是後來噴的
這大球上面的漆是後來噴的
原本不是這樣的閃亮亮大球啊!我在 91 樓看介紹影片的時候看到的。

下面不是空的
下面不是空的
其實我以前一直以為這顆球是懸空的,全靠那八條纜線吊著。不是這樣下面有東西撐著。

Damper Baby
Damper Baby
風阻尼器。不知道是誰想的,還幫他想那些雜七雜八的資料。真的覺得這些愛擬人的傢伙都是瘋子。雖然我看起來頗瘋癲,但是我家的寶寶可是沒有這些資料的。

看完阻尼器後,真的所剩不多啊。去用票根尾巴部分換這台語音導覽。按照上面的編號對照 89 樓牆壁上的編號來聽介紹。最爛的是前幾號全都是台北的廣告。說自己是全台灣最好的城市,我呸。

Free Audio Tour
Free Audio Tour
前面有很大的一段台北廣告。聽了真是不爽,死天龍國。在門票的邊邊有一段撕下來可以來這邊換這機器。

89 樓其它部分我真的沒覺得有什麼好提的。不過我必須要稱讚的是 101 的玻璃擦的真乾淨啊!!!透光率很不錯。不過想要不被反光,還是要去 91 樓拍才行。

離開 89 樓後, 88 樓真的更無趣。目前是擺珊瑚展的東西。剛下樓會先看到這個走廊。

88 樓的高科技投影
88 樓的高科技投影

之後就是一整片的販售珊瑚區。我覺得是因為目前剛好是那個展覽,而不是那片一直都是珊瑚展。

珊瑚展
珊瑚展

發現後面有售價 NT$170800
發現後面有售價 NT$170800
兩個價位都一樣

我在上面東晃晃西逛逛。還有在 89 樓上了個高空廁所。現在想到如果我是在飛機上上廁所的話,這樣會更高空耶。我總共逛了將近兩個小時才下樓。我六點開始正式排電梯的隊伍,下面這張照片是八點十三分拍的。減掉到真的搭上電梯的那段時間,應該不到兩小時。

當時因為有人擋在前面,所以我是在下樓後才拍這個照片。

金氏世界紀錄之世界最快電梯
金氏世界紀錄之世界最快電梯
The world's fastest
passenger elevators
were installed by
Toshiba Elevator and
Building Systems Corporation (Japan)
in Taipei 101, Taiwan
and have a maximum speed of 1010 m/min.
Keeper of the Records
GUINNESS WORLD RECORDS LTD

101 看高高行,結束。但是還有一點額外的東西要提。

American Express Selects
American Express Selects
九折優惠!我就是靠這個買的啊!我跟紀念品專櫃的店員問我可不可以拍這個時候,他還很疑惑的回問我幹嘛要拍這個。