Skip to content

zh

Ember注入控制器

我遇到的問題:

在將我的Ember專案更新到1.13.5版本後,我在瀏覽器控制台中收到以下警告:

_棄用警告: Controller#needs 已被棄用。請改用 Ember.inject.controller() 。_

然而,我找不到任何關於如何實現新語法的文檔。

解決方案:

雖然它在Ember文檔中被標記為私有方法,但你可以選擇“私有”複選框來查看它。

使用Ember.inject.controller()有兩種方式:指定和不指定控制器名稱。

_應用程序.貼文控制器 = Ember.控制器.extend({ 文章: Ember.inject.控制器() });_

當你不指定控制器的名稱時,Ember會使用屬性名來查找,例如:

文章: Ember.注入.控制器('文章').

只有在屬性名稱和控制器名稱不同的情況下,你才需要指定控制器名稱。

_應用程序.貼文控制器 = Ember.控制器.extend({ 我的帖子: Ember.注入.控制器('文章') });_

這樣,您就可以成功地將您的專案更新以符合新的Ember指南。

在越南河內可以做的有趣事情

我的志向是環遊世界,雖然我意識到這可能有點過於雄心勃勃。

我在軟件工程中學到的一個重要課程是如何管理復雜性。通過把一個大挑戰分解成小而更好管理的部分,我們可以一步一步地完成有意義的目標。到越南週末度假就是一種簡單的快樂,不需要使用年假。

以下是一些在河內可以做的有趣事情:

下龍灣皮划艇 - 我的Instagram照片可能有多層濾鏡,但下龍灣的風景無需任何Photoshop就如明信片般美麗。雖然從城市出發需要四小時,但這個聯合國教科文組織世界遺產非常值得。皮划艇是我最喜歡接近壯觀的石灰石形成的方式。如果你去,記得帶一個防水袋來保護你的iPhone,以防你掉入水中。

自然奇觀 -東天宮洞 - 經過數千年風和水的塑造,東天宮洞令人驚嘆。用點想像力,你可能會在五彩斑斕的石筍中看到一條龍,一頭獅子,甚至一種乳房形狀的形成。有趣的是,一些迷信的女性在該岩石前祈福以求母乳充足。

在夜市導航 - 這種體驗既奇妙又厲害。在中秋節時,我參觀了繁華的夜市,但我也發現自己陷入群眾中。街上似乎每個人都有一個冰淇淋,所以我也買了一個。薄荷味的味道像牙膏,但在潮濕的熱夜裡很提神。在摩托車繁多的河內過馬路是一項真正的挑戰。無論紅燈還是綠燈,人們都在移動。成功地在來自所有方向的汽車,摩托車和手推車中穿過街道需要勇氣。謝天謝地,我安然無恙。

享受街頭美食 - 如果你敢於冒險,一定要準備品嚐各種當地美食。當我在那裡的時候,我試圖記住食物的越南名稱,但現在我回家了,它們已經從我的記憶中消失了。儘管語言聽起來很有旋律,我仍然無法理解其細膩的語調。

蛋咖啡 - 在你試過之前不要嘲笑它;它並不像聽起來那麼令人不悅。越南傳統的蛋咖啡(Cà Phê Trứng)主要在河內能找到。感謝當地的導遊,我在一家隱藏在樓上的咖啡店品嚐了這種飲料,對於遊客和本地人來說價格差不多。作為一名咖啡愛好者,我必須再次參觀歷史悠久的咖啡店品嚐那著名的煉乳咖啡——甜與苦的完美融合。

參觀和勞監獄博物館 - 讓我澄清一下,我沒做錯什麼!我參觀了法式的聖若瑟主教座堂後,參觀了和勞監獄博物館。我一直都對人性的黑暗面,如折磨和懲罰,感到著迷。反思歷史,我感到幸運能在沒有壓迫性政治政權和主要衝突的時代和地方生活。越南戰爭不僅僅是電影主題,它是一個建立在不明確政治理由上的真實歷史事件。每個士兵都有一個家庭,每個死亡都帶給他們悲痛。那一刻,我發現自己想念我的伴侶,並希望她持續安全。

所以,現在是時候開始規劃你的旅行了。河內有那麼多可以看和做的事情,我差點錯過回家的飛機。我打算繼續探索世界並看看世界可以提供什麼。迫不及待想要進行下一次冒險!如果你提早預定,你甚至可能找到一些很好的優惠。

使用ImageMagick批量裁剪圖像

今天,我進行的任務之一涉及批量裁剪許多圖片。我發現ImageMagick在縮放和裁剪圖像方面非常有用。Mogrify,一個在ImageMagick包內的命令,使我們能夠對多個圖像進行各種操作。我發表這篇指南作為自己未來的參考,也許對其他人也有所幫助。

第一步:安裝MacPorts

https://www.macports.org/install.php

完成安裝後,如果你遇到以下錯誤:

> _sudo: port: command not found_

问题可能是因为MacPorts二进制文件安装在/opt/local/bin。你需要手動更新你的shell的環境以適配MacPorts:

> _export PATH=$PATH:/opt/local/bin_
> _source .profile_
> _sudo port -v selfupdate_

第二步:安裝 ImageMagick

http://www.imagemagick.org/script/binary-releases.php

執行以下命令進行安裝:

> _sudo port install ImageMagick_

port指令會下載ImageMagick和許多來自它的委託庫。如果你遇到像這樣的錯誤:

> _convert: command not found_

MAGICK_HOME環境變量設置為你提取ImageMagick文件的路徑:

> _export MAGICK_HOME="$HOME/ImageMagick-6.9.1"_

如果解壓包的bin子目錄還不在你的可執行搜尋路徑中,添加它:

> _export PATH="$MAGICK_HOME/bin:$PATH"_

設置DYLD_LIBRARY_PATH環境變量:

> _export DYLD_LIBRARY_PATH="$MAGICK_HOME/lib"_

第三步:添加遺失的解碼庫

如果你嘗試轉換JPEG圖像並獲得以下錯誤消息:

> _“convert: no decode delegate for this image format”_

1.訪問 http://www.imagemagick.org/download/delegates/ 下載需要的或缺失的代理庫,如jpegsr9a.zip。 2.解壓縮該檔案。 3.更改目錄到解壓縮後的文件夾:

> _cd jpeg-9a_

4.然後執行:

> _./configure; make; make test; make -n install_

第五步:使用方式

為了避免覆蓋原始圖像文件,創建一個新文件夾,並在那裡備份圖像。

如果要將一個單獨的圖像大小調整為600px的高度,同時保持相同的縱橫比,運行:

> _convert input.png -geometry x600 output.png_

如果你想轉換文件夾中的所有圖像,更改到該目錄並使用:

> _mogrify -geometry x600 *.png_

要將圖像縮小到200像素:

> _convert myPhoto.jpg -resize 200x200^_

從圖片中央裁剪圖片:

> _convert myPhoto.jpg -gravity Center -crop 200x200+0+0 +repage newPhoto.jpg_

-gravity south選項指定裁剪應該從圖像的底部開始。-chop 0x135選項從高度中切割135個像素:

> _mogrify -gravity south -chop 0x135 *.jpg_

要將當前目錄中的所有圖像大小調整為800的寬度(高度將按比例減少):

> _mogrify -resize 800 *.jpg_

要旋轉圖片90度:

> _mogrify -rotate 90 *.jpg_

閱讀更多:

請訪問 http://www.imagemagick.org.

從Sublime Text切換到Atom

Atom文本編輯器剛剛發布了其1.0版本。有很多理由從Sublime Text切換過來。也許你熱愛開源的概念,或者你是GitHub社區的一員。雖然Atom有著不同的外觀和感覺,但安裝以下的包可以快速提高你的生產力。

1. 安裝Monokai語法主題

有很多酷炫的主題,但我習慣於Sublime的默認色彩方案。通過訪問以下頁面,安裝Monokai語法主題:

https://atom.io/themes/monokai

2. 將標籤轉換為空格

通過前往以下網址安裝"tabs-to-spaces"包:

https://atom.io/packages/tabs-to-spaces

然後在您的設定 cson 文件中添加這行代碼:

'tabs-to-spaces': 'onSave': 'untabify'

3. 軟標籤

默認情況下,堅硬的標籤為4個字符長,這可能導致由於過多的縮進而使代碼難以閱讀。我建議在用戶設定中啟用"Soft Tabs"選項,這將用空格替換標籤。

4. 顯示空白位

在設定中,勾選"Show Invisibles"。這將在代碼中加入小點來顯示縮進空格。

5. 在保存時修剪尾隨的空白位

這個功能會在保存編輯器時去掉尾隨的空格並添加一個尾隨的換行。

https://atom.io/packages/whitespace

6. 括號高亮

"Bracket-matcher"是一個必需的包,用於高亮各種括號:() [] {} "" '' <>。

https://github.com/atom/bracket-matcher

7. Emmet

Emmet對網頁開發者來說是必不可少的工具包。它可以用快捷方式節省大量時間。例如,輸入以下的代碼然後按Tab鍵:

div#container>ul>li.item

這將輸出相應的HTML標籤。

另一個例子:開始輸入lorem,它會自動輸出整個"Lorem Ipsum"文本。

https://github.com/emmetio/emmet-atom

8. Git Plus

此包允許您在Atom Editor內進行Git操作,無需打開終端,節省了您的工作流程的一些時間:

https://atom.io/packages/git-plus

9. Git Diff

此功能在編輯器的邊界標識出自上次提交以來被添加、編輯或刪除的行:

https://github.com/atom/git-diff

10. Linter和JSHint

要檢查您的代碼,請訪問:

https://atom.io/packages/linter

對於JSHint,請前往:

https://atom.io/packages/linter-jshint

11. Alignment

此包提供了一個簡單的鍵綁定,用於對齊多行、多光標和多選擇。例如,使用快捷鍵ctrl+cmd+a的前後對比:

Before:

var a = b;
var ab = c;
var abcd = d;
var ddddd = d;

After:

var a     = b;
var ab    = c;
var abcd  = d;
var ddddd = d;

https://atom.io/packages/atom-alignment

12. 將Atom設定為Git的預設編輯器

如果你不習慣使用Vim撰寫Git提交,可以通過執行以下命令將Atom設為預設編輯器:

git config --global core.editor "atom --wait"

包提供了開發人員提高生產力和工作流程的工具。你安裝了哪些包?告訴我你的最愛是什麼。

如何透過命令行升級您的Ghost博客

步驟1:導航至您的Ghost博客目錄

首先,將目錄更改為您的Ghost博客安裝的路徑。例如,在我的情況下,它位於:

cd /var/www

步驟2:使用wget下載最新版本

使用wget下載Ghost的最新版本:

wget https://ghost.org/zip/ghost-X.X.X.zip

注意:您可以在官方網站上找到當前的版本:https://ghost.org/download/

步驟3:移除舊的核心代碼

刪除舊的核心目錄:

rm -rf ghost/core

步驟4:解壓下載的文件

將您下載的文件解壓縮到ghost目錄:

unzip -uo ghost-0.6.4.zip -d ghost

步驟5:變更所有權和權限

更新Ghost文件的所有權和權限:

chown -R ghost:ghost ghost/

步驟6:安裝新的依賴關係

返回到您的Ghost目錄並安裝新的依賴關係:

cd /var/www/ghost
npm install

步驟7:重新啟動Ghost

最後,重新啟動您的Ghost博客:

pm2 restart ghost

注意:如果您不使用pm2,則可以使用以下命令:

service ghost start

您的Ghost博客現在應該已成功升級!


SSH:如何修復「未保護的私鑰」錯誤

問題

當我下載了 .pem 檔案以便 SSH 連線到我的 AWS 實例時,我遇到了以下的錯誤:

警告:未保護的私鑰檔案!

'blog.pem' 的權限 0640 過於開放。要求您的私鑰檔案不能被其他人訪問。將忽略此私鑰。壞的權限:忽略鑰匙:blog.pem 權限被拒絕 (publickey)。

解決方案

為了解決此問題,在你的終端機執行下列的指令:

ssh -i xxx.pem root@52.74.3.53

xxx.pem 換成你的 .pem 檔案的名稱。

此指令會修改鑰匙的權限,使其僅能被你閱讀。

如何修復Mac OS X Yosemite上的Ruby Gems權限錯誤

問題

當我嘗試在Mac OS X Yosemite上安裝一個gem時,我遇到了以下錯誤:

錯誤:在執行gem時...(Gem::FilePermissionError)您沒有/Library/Ruby/Gems/2.0.0目錄的寫入權限。

解決方案

步驟1:安裝Rbenv

首先,您需要安裝Rbenv和Ruby-build:

brew install rbenv ruby-build

接下來,將Rbenv添加到~/.zshrc中,使其自動啟動:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(rbenv init -)"' >> ~/.zshrc

:如果您不使用Zsh,請修改您的~/.bash_profile,而不是~/.zshrc

步驟2:重新啟動你的Shell

關閉您的終端並重新打開它以應用更改。

步驟3:安裝Ruby,設置全局版本並重新排序

現在,安裝Ruby並將其設置為您的全局Ruby版本:

rbenv install 2.0.0-p247
rbenv global 2.0.0-p247
rbenv rehash
步驟4:像往常一樣安裝Gems

現在您可以繼續安裝gems,而不會遇到權限問題。

gem install [gem-name]

您的gem現在應該成功安裝了!


釜山及其周邊地區非韓語使用者的生存秘訣

Aleumdaun! 這是韓國人用來形容 "可愛" 的詞語。他們經常用這個詞來形容釜山,慶州,以及晉海,在春天樱花盛开时的風景之美。

誰不喜歡旅行?韓國是一個尚未被充分探索的國家,大部分的遊客通常不會超出首爾的界限。我們每個人都有自己的旅行優先事項和偏好。對我來說,我喜歡即興的旅行,因為它讓我可以從日常的工作行程中走出來。把自己放在一個我不知道語言,甚至手機都沒有互聯網的陌生情況讓我覺得充滿刺激。這是我走出舒適區的大膽一步。

以下是一些非韓語使用者在釜山旅行的生存秘訣:

交朋友

在住宿公寓而不是酒店的時候,我遇到了一位精明的商人,一位才華橫溢的醫生,以及一位可愛的ajumma(韓語阿姨)。雖然我的韓語技能有限,與那些不會說英語的人進行口頭交流有些困難,但是請記住,人類互動的三分之二是非語言的。友好的笑容和熱情的問候是通用的。我用了一個下午的時間與他們通過圖片和手勢進行對話。韓國人有一種讓陌生人變成朋友的天分。他們不僅有禮貌,而且是我所遇到的最善良的人。如果你想保持聯系,那麼可以考慮下載Kakao Talk應用程序。

獲取高級概述

在開始探索之前,先獲取城市的概覽,避免迷路。釜山塔高120米,提供了絕佳的全景視角。從塔頂看到的壯麗的廣安橋和釜山的360度全景。

放鬆並享受

海雲台海灘非常特別,至少可以說。海洋的景色會讓你屏息。附近有一些景點,如鵝鹿島,APEC Naru公園和水族館。如果你累了,像TwoSome Place ,Tom n Tom ,或Caffeine Gurunaru 這樣的咖啡店都提供舒適的空間。另外,別忘了世界最大的百貨公司新世界中的SpaLand Centum City ,這是放鬆身心的完美去處。

保持開放的心態

釜山的魅力不僅體現在其旅遊景點上;即使是在街上的簡單行走也是吸引人的。從豬腸到鬆餅,市場上的美食展示了傳統與現代的獨特融合。對於美食街,你可以前往釜山國際影展(BIFF)的广场。如果你是购物狂,你一定会喜欢西面的地下购物中心和南浦站附近的繁忙地区。另外,对于海鲜爱好者来说,札嘎其海鲜市场是必须要去的地方。

了解文化

位於釜山北部的慶州,曾經是新羅王朝的首都直到一千年。它是一個遺產景點,那裡有古代皇族的草墓。在遊客的列表上,佛國山寺經常處於首位。進入這個世界遺產的入場費只需4,000韓元。

欣賞壯麗的風景

每年春天,位於釜山西部的晉海區會舉辦為期十天的樱花节。長1.5公里的花隧道是必看的。當一陣風吹來時,花瓣飄落,這是一種超現實而浪漫的場景。

所以,拿起你的護照,和我一起來釜山進行一場令人興奮的周末之旅吧!希望本文能激勵你探索韓國,沉醉在它的文化中。坦白說,我的身體可能已經返回了辦公室,但我靈魂依然在韓國。把我加到你的旅行伙伴名單中吧,我希望能發現更多美麗的地方,並和你分​​享。Kamsa-Hamnida,這是韓國人說表示衷心感謝你的方式。


Java:變數總是以複製的方式傳遞

我正在學習Java。理解是否函數參數是通過複製還是引用傳遞的一個重要觀念。

複製傳遞意味著當一個變數被傳遞給函數時,會製作該變數的一個副本。引用傳遞則意味著函數中的程式碼運作在原始變數上,而非其副本上。

在Java中,變數始終會通過複製來傳遞。讓我們通過以下三種情況來探索這一點:

情況1:傳遞基本類型

void incrementValue(int inFunction) {
  inFunction++;
  System.out.println("In function: " + inFunction);
}

int original = 10;
System.out.println("Original before: " + original);
incrementValue(original);
System.out.println("Original after: " + original);

結果如下:

Original before: 10
In function: 11
Original after: 10

原始值並未變動。

情況2:將基本類型包裹在對象中傳遞

void incrementValue(int[] inFunction){
  inFunction[0]++;
  System.out.println("In function: " + inFunction[0]);
}

int[] arOriginal = {10, 20, 30};
System.out.println("Original before: " + arOriginal[0]);
incrementValue(arOriginal);
System.out.println("Original after: " + arOriginal[0]);

結果如下:

Original before: 10
In function: 11
Original after: 11

原始值有變動!這是因為複雜對象變數是引用。引用變數指向內存中的位置。當變數被傳遞到函數時,始終會創建新的引用。兩個引用都指向原始對象或值。

int[] original = {10, 20, 30};

original[0] --> | 10 | <-- inFunction[0]
                | 20 |
                | 30 |

兩個陣列元素都指向相同的內存位置。

情況3:傳遞字符串

void changeString(String inFunction){
  inFunction = "New!";
  System.out.println("In function: " + inFunction);
}

String original = "Original!";
System.out.println("Original before: " + original);
changeString(original);
System.out.println("Original after: " + original);

結果如下:

Original before: Original!
In function: New!
Original after: Original!

請記住,字符串是不變的。當傳遞給函數時,會創建新的字符串,使原始字符串保持不變。

愛上React的三大理由

2015年3月3日在香港JavaScript和Node.js聚會上的記錄:

今天,我想談談React,一個用於創建用戶界面的JavaScript庫。我在幾個項目中使用過它,並且越多地與它共事,我就越欣賞其功能。我將解釋為什麼我覺得React如此引人入勝,以及為什麼你應該考慮使用它。

作為一名軟件工程師,我明白開發人員每天面臨的挑戰。在使用React之前,寫程式碼經常會讓人感到不適,尤其是在構建用戶界面的時候。可能的狀態有很多,並且測試所有狀態都是不切實際的。你可能會遇到可變DOM問題或無法預測的用戶輸入。你的用戶界面可能行為不正常,或者在大型應用程式中無法良好地擴展。

程式設計是一門藝術,特別是組織復雜性的藝術。在建立UI時,ReactJS幫助您管理這種復雜性。

什麼是 React?

React 是 MVC(Model-View-Controller)中的 'view'。與像MeteorJS這樣的全面框架不同,React 主要專注於 UI。 它由 Facebook 和 Instagram 開發,並被用於他們的生產環境中。例如,您在Facebook.com 上看到的評論框就是一個 React 組件。

為什麼選擇 React?

我將重點關注三個關鍵點:React 組件,效能,以及處理動態數據。

1. React 組件

在我之前作為 MeteorJS 開發人員的角色中,我發現像 Handlebars 或 Spacebars 這樣的傳統模板語言很有限。相反,React 使用組件而不是模板。這種模組化的方法允許更大的靈活性,可重用性和可測試性。

2. 效能

由於發明了虛擬 DOM,React 提供了令人印象深刻的速度。傳統的方法通常需要對整個頁面進行重新渲染,即使是對微小變化也是如此。 虛擬 DOM 通過僅更新 DOM 的變更部分來最小化這種昂貴的操作。

3. 管理動態數據

狀態管理是 UI 開發中的一大挑戰。 React 通過採用單向資料流來解決這個問題,從而提高了可維護性並簡化了調試。

結語

總結,React因其簡單和強大而脫穎而出。它使得可以開發可重複使用、可測試的組件。它提供出色的效能和有效管理動態數據。

就到這裏!有任何問題嗎?

這裡是幻燈片:幻燈片介紹