狠狠撸

狠狠撸Share a Scribd company logo
社内技術勉強会 「 Linux における開発環境」 2008/02/27  Tomohiro MITSUMUNE (a.k.a. Kiske)
本日のアジェンダ 開発環境について Linux での開発環境 zsh screen vim (or Emacs)
開発環境 GUI (Windows) マウス操作を主体とした直感的な操作 文字だけでなく画像を利用し、動作を明確化 インストールしてすぐ使える 設計で想定されたことしかできない 重い、遅い CUI (Unix, Linux) 覚える事が多くて、敷居が高い 多くのことを自分で設定する必要がある 軽い、早い
Windows>Linux での 開発環境の問題 シームレスな開発ができない Windows 側でコード修正 scp, sftp, svn とかで Linux 側にアップロード 変更の度に deploy 作業が生じるため、効率悪 文字エンコード ,  改行コードの違い アップロード後に「動かねー」と叫ぶ理由の 1 つ
Linux での開発 Linux 環境での開発効率向上アイテム zsh screen vim (or Emacs) 開発効率が上がると 早く帰れる 友人 / 家族 / 恋人と団欒 趣味の時間 リア充への第一歩!
zsh Unix のコマンドシェルの 1 つ bash + tcsh + ksh =  「究極のシェル」 主な機能 コマンド補完機能 プロンプト表示 スペル修正機能 コマンドラインスタック 拡張されたファイル選択 参考記事  [http://journal.mycom.co.jp/column/zsh]
autocomplete コマンド自動補完 autoload –U compinit compinit さまざまなコマンド補完に対応 シェルコマンド  ( ls, tar, diff, etc…) ソフトウェア ( apache, php, ruby, etc…) 自分でコマンド補完リストも作成可能
プロンプト表示 RPROMPT コマンドライン右側に出るプロンプト カレントディレクトリとか出すと便利 コマンドが長くなってくると勝手に消える local GREEN=$'%{\e[1;32m%}' local BLUE=$'%{\e[1;34m%}' local DEFAULT=$'%{\e[00;m%}‘ PROMPT=$BULE'[${USER}@${HOSTNAME}] %(!.#.$) '$DEFAULT RPROMPT=$GREEN'[%~]'$DEFAULT
グローバルエイリアス コマンドライン上の全ての要素をエイリアスとして展開 通常のエイリアスは第 1 要素のみ alias -g L="| $PAGER" alias -g G="| grep" alias -g T="| tee -a logfile“ alias -g H="| head" alias -g TL="| tail“ abbreviation という更に便利な機能もある
コマンドラインスタック M-q 入力中のコマンドを一時保存できる ./configure --prefix=/usr/local/php-5.2.5 --with-config-file-path=/etc --enable- と、打った後に chmod 744 /usr/local/php-5.2.5 と、したいときに有効 スタックなので 2 重 3 重に格納することも可能
その他便利な機能  -  コマンド コマンドシェルのミススペルを指摘 setopt correct cd 打つのがメンドクサイ setopt auto_cd 勝手に pushd setopt auto_pushd ディレクトリスタック内をユニークに保つ setopt pushd_ignore_dups
その他便利な機能  -  スクリプト処理 data000 ~ data255 というファイル作成 touch data{000..255} sample.sql 以外の sql ファイル削除 rm *.sql~sample.sql カレント以下のシンボリックリンク削除 rm **/*(@)
screen GNU screen 1 つの端末から複数の端末を仮想的に同時に扱えるようになる 主な機能 同時に複数の端末を扱えるようになる バックスクロールでログが見れ、コピペもできる 柔軟な接続機能
うれしい機能 バックスクロール autodetach セッション終了時にプロセスをバックグラウンドへ 突然回線が切れても大丈夫 1 プロセスに複数 attach も可能なので、違う端末からでも全く同じ環境での作業が可能になる 画面分割 vim や emacs のように仮想ターミナルを水平分割 なんちゃってデュアルディスプレイ
.screenrc ( 設定ファイル ) escape ^z^z hardstatus alwayslastline "[%02c] %`%-w%{=b bw}%n %t%{-}%+w" autodetach on startup_message off # copy mode 時のバッファ量を設定 defscrollback 3000 scrollback 3000 term xterm-256color markkeys "h=^B:l=^F:$=^E" #  ウィンドウ分割設定 bind -c REGION 2 split bind -c REGION 1 only bind -c REGION 0 remove bind -c REGION o focus bind -c REGION ^ resize bind x command -c REGION
vim テキストエディタ Unix 系 OS には大抵標準で入ってます 主な機能 マルチバッファ ウィンドウ分割 動的単語補完 400 以上の文法に対応した highlighting 40 以上の言語に対応したオートインデント ctags を利用したタグジャンプ 独自スクリプト実装 (vim script)
vim の問題点 操作が変態的 hjkl で移動 さまざまなモード ( normal, visual, insert ) どうやって習得するか チュートリアルモードが用意されている vimtutor とタイプするといきなり開始 日本語で良いチュートリアルだと思うのでオススメ
基本操作  -  モード 3 種類のモード ノーマルモード デフォルトモード カーソル移動、文字の編集、コマンド入力 インサートモード 文字を挿入 ビジュアルモード 文字を範囲選択 ノーマル インサート ビジュアル
基本操作  -  カーソル移動 カーソル移動 h ← j ↓ k ↑ l -> 0 行頭にジャンプ $ 行末にジャンプ ^ 行の最初の文字へジャンプ H 表示画面の 1 行目へジャンプ M 画面中央へジャンプ L 表示画面の最下行へジャンプ % 対応する括弧へジャンプ gg ファイルの先頭へジャンプ G ファイルの末尾へジャンプ gj 表示行下に移動  gk 表示行上に移動
基本操作  -  編集 編集 x 1 文字切り取り dd カーソル行を切り取り yy カーソル行をヤンク D カーソル位置から行末を切り取り p カーソルの後ろに貼り付け P カーソルの前に貼り付け J 行連結  ( インデントは削除 ) gJ 行連結  ( 空白はそのまま ) ~ 大文字 / 小文字を切り替える >>,  << カーソル行をインデント ,   逆インデント <C-a>,<C-x> カーソル位置の数字の加減 u アンドゥ <C-r> リドゥ :w[!] [file] 上書き保存  (! を付けると readonly でも上書き保存、 file 名指定の場合は名前を付けて保存 ) :q[!] 終了  (! を付けると変更点があっても保存せず強制終了 )
基本操作  -  インサートモード ここで軽くまとめると 操作がパズル的 突き詰める楽しさがある インサートモード i カーソルの前からインサート I カーソル行の行頭からインサート a カーソルの後ろからインサート A カーソル行の行末からインサート o カーソル行の下に新しい行を作りインサート O カーソル行の上に新しい行を作りインサート
基本操作  -  ビジュアルモード ビジュアルモードと編集を組み合わせると非常に強力 コピペ カット & ペースト 置換 範囲置換 範囲を選択後、「 :s/foo/bar 」で範囲置換 ビジュアルモード v 文字単位のビジュアルモード V 行単位のビジュアルモード <C-v> 矩形ビジュアルモード gv 最後に利用したビジュアルモードを復元
基本操作  -  その他 検索 / keyword keyword  を検索 n 次の候補に移動 N 前の候補に移動 置換 :%s/ from / to /[g] 全行に対してパターンマッチング (g を付けると複数マッチ ) :m,ns/ from / to /[g] m 行目から n 行目の範囲に対してパターンマッチング 画面分割 :sp 画面を水平に分割 :vs 画面を垂直に分割 <C-w>[h,j,k,l] 分割したウィンドウ間を移動 :only カーソルがあるウィンドウ以外を閉じる ファイル操作 :e [file] file を開く ZZ 保存して閉じる :ls  バッファ一覧を表示 :bn, :bp バッファ間を前後に移動 ヘルプ :h [command] command のヘルプを表示
単語補完機能 インサートモード時に利用可能 キーワード補完 <C-x C-n>, <C-x C-p> 開いているバッファ内から補完 タグ補完 <C-x C-]> ctags ファイルによる補完 ファイル名補完 <C-x C-f> ファイル名による補完 コマンドライン補完 <C-x C-v> vim のコマンドラインから補完 行全体補完 <C-x C-l> バッファ内から行全体による補完 オムニ補完 <C-x C-o> インテリジェンスな補完
テキストオブジェクト テキストのオブジェクト単位で選択 ビジュアルモードで主に利用 ノーマルモードで編集コマンドと組み合わせる テキストオブジェクト i 対象の内側のオブジェクトを選択 a 対象を含んだオブジェクトを選択 ip パラグラフ単位で選択 di 対象の内側のオブジェクトを削除 it タグの内側のオブジェクトを選択
テキストオブジェクトの便利な例 i $this->setAttribute('error', ' エラーです '); () 内にカーソルがある状態で vi $this->setAttribute('error', ' エラーです '); dit <h2>PHOTOHITO へようこそ </h2> <h2> タグ内にカーソルがある状態で dit <h2></h2>
vim プラグイン 機能拡張するための仕組み 中身は vim スクリプトで記述 vim 起動時にオートロードされる Firefox Extension みたいなもの 種類は 2 つ グローバルプラグイン 全種類のファイルで利用される ファイルタイププラグイン 特定ファイルのみで利用される 公式サイトで公開されている
minibufexpl.vim タブエディタ風にバッファを管理 vim デフォルトのバッファ管理は貧弱 配布元 http://www.vim.org/script.php?script_id=159 設定 :let g:miniBufExplMapWindowNavVim = 1 :let g:miniBufExplMapWindowNavArrows = 1 :let g:miniBufExplMapCTabSwitchBuffs = 1
surround.vim テキストオブジェクト操作を拡張 配布元 http://www.vim.org/scripts/script.php?script_id=1697 拡張されたところ 対象とする文字列自体を削除したり置換 ds, cs, ys, vs というコマンド 囲っている HTML タグ自体を削除したり置換 インサートモードから使える <C-G>S で利用
fuzzyfinder.vim あいまい検索ファイルエクスプローラ 部分検索一致も可能 配布元 http://vim.g.hatena.ne.jp/keyword/fuzzyfinder.vim 検索モード ファイルモード MRU モード  (MRU = Most Recently Used) タグモード ディレクトリモード
autocomplpop.vim キーワード補完を自動でポップアップ デフォルトだと都度 <C-n> を押す必要がある 配布元 http://hiki.ns9tks.net/?autocomplpop.vim 便利な点 自動でポップアップ ファイル名補完と Ruby のオムニ補完にも対応
commentout.vim 範囲選択した箇所をコメントアウト いろんなコメントフォーマットに対応 配布元 http://nanasi.jp/articles/vim/commentout_source.html 対応してる代表的なコメントフォーマット # <!-- --> // > % -
ご清聴ありがとうございました http://photohito.com/ もよろしくお願いします

More Related Content

Viewers also liked (20)

WindowsMobile開発を256倍快適にする言語 Lua
WindowsMobile開発を256倍快適にする言語 LuaWindowsMobile開発を256倍快適にする言語 Lua
WindowsMobile開発を256倍快適にする言語 Lua
Hiroaki TAKEUCHI
?
Sigmod11 outsource shortest path
Sigmod11 outsource shortest pathSigmod11 outsource shortest path
Sigmod11 outsource shortest path
redhatdb
?
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asio
Takatoshi Kondo
?
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
Hiro H.
?
Nias cafe24 poster 'Fascination of Plants Day'
Nias cafe24 poster 'Fascination of Plants Day'Nias cafe24 poster 'Fascination of Plants Day'
Nias cafe24 poster 'Fascination of Plants Day'
wd4u
?
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
Hiro H.
?
絶対使いたくなる础辫辫别虫肠丑补苍驳别アフ?リとそのアーキテクチャー
絶対使いたくなる础辫辫别虫肠丑补苍驳别アフ?リとそのアーキテクチャー絶対使いたくなる础辫辫别虫肠丑补苍驳别アフ?リとそのアーキテクチャー
絶対使いたくなる础辫辫别虫肠丑补苍驳别アフ?リとそのアーキテクチャー
Kazuki Nakajima
?
Symantec Appliances Strategy Launch
Symantec Appliances Strategy LaunchSymantec Appliances Strategy Launch
Symantec Appliances Strategy Launch
Symantec
?
How to hear
How to hearHow to hear
How to hear
Userinterview textbook
?
Boost.Interfaces
Boost.InterfacesBoost.Interfaces
Boost.Interfaces
melpon
?
カプセルホテル施设におけるカスタマージャーニーマップによる业务改善
カプセルホテル施设におけるカスタマージャーニーマップによる业务改善カプセルホテル施设におけるカスタマージャーニーマップによる业务改善
カプセルホテル施设におけるカスタマージャーニーマップによる业务改善
直人 相沢
?
SkipGraph
SkipGraphSkipGraph
SkipGraph
Kumazaki Hiroki
?
150806 カスタマーシ?ャーニーマッフ?ワークショップ
150806 カスタマーシ?ャーニーマッフ?ワークショップ150806 カスタマーシ?ャーニーマッフ?ワークショップ
150806 カスタマーシ?ャーニーマッフ?ワークショップ
直人 相沢
?
NVMe でハァハァしようよ #sapporocpp
NVMe でハァハァしようよ #sapporocpp NVMe でハァハァしようよ #sapporocpp
NVMe でハァハァしようよ #sapporocpp
hiyohiyo
?
搁罢齿で游ぶ
搁罢齿で游ぶ搁罢齿で游ぶ
搁罢齿で游ぶ
nvsofts
?
CppCon2016 report and Boost.SML
CppCon2016 report and Boost.SMLCppCon2016 report and Boost.SML
CppCon2016 report and Boost.SML
Takatoshi Kondo
?
C++でNVMeと(*?Д`)???? 戯れていたら一年経ってた。
C++でNVMeと(*?Д`)???? 戯れていたら一年経ってた。C++でNVMeと(*?Д`)???? 戯れていたら一年経ってた。
C++でNVMeと(*?Д`)???? 戯れていたら一年経ってた。
hiyohiyo
?
キャンハ?ス個人用アフ?リ 速習カ?イト?
キャンハ?ス個人用アフ?リ 速習カ?イト?キャンハ?ス個人用アフ?リ 速習カ?イト?
キャンハ?ス個人用アフ?リ 速習カ?イト?
Kazuki Nakajima
?
Boost.Spirit.QiとLLVM APIで遊ぼう
Boost.Spirit.QiとLLVM APIで遊ぼうBoost.Spirit.QiとLLVM APIで遊ぼう
Boost.Spirit.QiとLLVM APIで遊ぼう
nvsofts
?
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
?
WindowsMobile開発を256倍快適にする言語 Lua
WindowsMobile開発を256倍快適にする言語 LuaWindowsMobile開発を256倍快適にする言語 Lua
WindowsMobile開発を256倍快適にする言語 Lua
Hiroaki TAKEUCHI
?
Sigmod11 outsource shortest path
Sigmod11 outsource shortest pathSigmod11 outsource shortest path
Sigmod11 outsource shortest path
redhatdb
?
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asio
Takatoshi Kondo
?
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
Hiro H.
?
Nias cafe24 poster 'Fascination of Plants Day'
Nias cafe24 poster 'Fascination of Plants Day'Nias cafe24 poster 'Fascination of Plants Day'
Nias cafe24 poster 'Fascination of Plants Day'
wd4u
?
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
Hiro H.
?
絶対使いたくなる础辫辫别虫肠丑补苍驳别アフ?リとそのアーキテクチャー
絶対使いたくなる础辫辫别虫肠丑补苍驳别アフ?リとそのアーキテクチャー絶対使いたくなる础辫辫别虫肠丑补苍驳别アフ?リとそのアーキテクチャー
絶対使いたくなる础辫辫别虫肠丑补苍驳别アフ?リとそのアーキテクチャー
Kazuki Nakajima
?
Symantec Appliances Strategy Launch
Symantec Appliances Strategy LaunchSymantec Appliances Strategy Launch
Symantec Appliances Strategy Launch
Symantec
?
Boost.Interfaces
Boost.InterfacesBoost.Interfaces
Boost.Interfaces
melpon
?
カプセルホテル施设におけるカスタマージャーニーマップによる业务改善
カプセルホテル施设におけるカスタマージャーニーマップによる业务改善カプセルホテル施设におけるカスタマージャーニーマップによる业务改善
カプセルホテル施设におけるカスタマージャーニーマップによる业务改善
直人 相沢
?
150806 カスタマーシ?ャーニーマッフ?ワークショップ
150806 カスタマーシ?ャーニーマッフ?ワークショップ150806 カスタマーシ?ャーニーマッフ?ワークショップ
150806 カスタマーシ?ャーニーマッフ?ワークショップ
直人 相沢
?
NVMe でハァハァしようよ #sapporocpp
NVMe でハァハァしようよ #sapporocpp NVMe でハァハァしようよ #sapporocpp
NVMe でハァハァしようよ #sapporocpp
hiyohiyo
?
搁罢齿で游ぶ
搁罢齿で游ぶ搁罢齿で游ぶ
搁罢齿で游ぶ
nvsofts
?
CppCon2016 report and Boost.SML
CppCon2016 report and Boost.SMLCppCon2016 report and Boost.SML
CppCon2016 report and Boost.SML
Takatoshi Kondo
?
C++でNVMeと(*?Д`)???? 戯れていたら一年経ってた。
C++でNVMeと(*?Д`)???? 戯れていたら一年経ってた。C++でNVMeと(*?Д`)???? 戯れていたら一年経ってた。
C++でNVMeと(*?Д`)???? 戯れていたら一年経ってた。
hiyohiyo
?
キャンハ?ス個人用アフ?リ 速習カ?イト?
キャンハ?ス個人用アフ?リ 速習カ?イト?キャンハ?ス個人用アフ?リ 速習カ?イト?
キャンハ?ス個人用アフ?リ 速習カ?イト?
Kazuki Nakajima
?
Boost.Spirit.QiとLLVM APIで遊ぼう
Boost.Spirit.QiとLLVM APIで遊ぼうBoost.Spirit.QiとLLVM APIで遊ぼう
Boost.Spirit.QiとLLVM APIで遊ぼう
nvsofts
?
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
?

Similar to 尝颈苍耻虫における开発环境 (20)

Silverlight Line-Of-Business Applications
Silverlight Line-Of-Business ApplicationsSilverlight Line-Of-Business Applications
Silverlight Line-Of-Business Applications
Yuya Yamaki
?
Windows 8時代のアプリ開発
Windows 8時代のアプリ開発Windows 8時代のアプリ開発
Windows 8時代のアプリ開発
信之 岩永
?
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
sandai
?
.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~
Fujio Kojima
?
最低限の开発环境を整えるには
最低限の开発环境を整えるには最低限の开発环境を整えるには
最低限の开発环境を整えるには
vi-iv
?
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2
ichikaway
?
181106 02
181106 02181106 02
181106 02
openrtm
?
(初心者向け) Vim の機能紹介@nagoya.vim #1
(初心者向け) Vim の機能紹介@nagoya.vim #1(初心者向け) Vim の機能紹介@nagoya.vim #1
(初心者向け) Vim の機能紹介@nagoya.vim #1
cohama
?
翱辫别苍颁痴を用いた画像処理入门
翱辫别苍颁痴を用いた画像処理入门翱辫别苍颁痴を用いた画像処理入门
翱辫别苍颁痴を用いた画像処理入门
uranishi
?
もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順
Hide Koba
?
易しい痴颈尘
易しい痴颈尘易しい痴颈尘
易しい痴颈尘
asuka y
?
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021
Hideki Saito
?
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
Noriaki Ando
?
Wasm blazor and wasi 2
Wasm blazor and wasi 2Wasm blazor and wasi 2
Wasm blazor and wasi 2
Takao Tetsuro
?
Monomeeting 20081022
Monomeeting 20081022Monomeeting 20081022
Monomeeting 20081022
Atsushi Eno
?
Vim の話
Vim の話Vim の話
Vim の話
cohama
?
Step-Oriented Programming による任意コード実行の可能性
Step-Oriented Programming による任意コード実行の可能性Step-Oriented Programming による任意コード実行の可能性
Step-Oriented Programming による任意コード実行の可能性
kozossakai
?
Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮
Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮
Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮
CODE BLUE
?
Silverlight Line-Of-Business Applications
Silverlight Line-Of-Business ApplicationsSilverlight Line-Of-Business Applications
Silverlight Line-Of-Business Applications
Yuya Yamaki
?
Windows 8時代のアプリ開発
Windows 8時代のアプリ開発Windows 8時代のアプリ開発
Windows 8時代のアプリ開発
信之 岩永
?
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
sandai
?
.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~
Fujio Kojima
?
最低限の开発环境を整えるには
最低限の开発环境を整えるには最低限の开発环境を整えるには
最低限の开発环境を整えるには
vi-iv
?
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2
ichikaway
?
(初心者向け) Vim の機能紹介@nagoya.vim #1
(初心者向け) Vim の機能紹介@nagoya.vim #1(初心者向け) Vim の機能紹介@nagoya.vim #1
(初心者向け) Vim の機能紹介@nagoya.vim #1
cohama
?
翱辫别苍颁痴を用いた画像処理入门
翱辫别苍颁痴を用いた画像処理入门翱辫别苍颁痴を用いた画像処理入门
翱辫别苍颁痴を用いた画像処理入门
uranishi
?
もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順
Hide Koba
?
易しい痴颈尘
易しい痴颈尘易しい痴颈尘
易しい痴颈尘
asuka y
?
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021
Hideki Saito
?
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
Noriaki Ando
?
Monomeeting 20081022
Monomeeting 20081022Monomeeting 20081022
Monomeeting 20081022
Atsushi Eno
?
Vim の話
Vim の話Vim の話
Vim の話
cohama
?
Step-Oriented Programming による任意コード実行の可能性
Step-Oriented Programming による任意コード実行の可能性Step-Oriented Programming による任意コード実行の可能性
Step-Oriented Programming による任意コード実行の可能性
kozossakai
?
Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮
Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮
Step-Oriented Programming による任意コード実行の可能性 by 坂井 弘亮
CODE BLUE
?

More from Tomohiro MITSUMUNE (10)

叠2叠2颁なヘルスケアサービスの作り方
叠2叠2颁なヘルスケアサービスの作り方叠2叠2颁なヘルスケアサービスの作り方
叠2叠2颁なヘルスケアサービスの作り方
Tomohiro MITSUMUNE
?
はじめての厂测尘蹿辞苍测2
はじめての厂测尘蹿辞苍测2はじめての厂测尘蹿辞苍测2
はじめての厂测尘蹿辞苍测2
Tomohiro MITSUMUNE
?
勉强会のすすめ勉强会のすすめ
勉强会のすすめ
Tomohiro MITSUMUNE
?
蝉测尘蹿辞苍测イントロダクション
蝉测尘蹿辞苍测イントロダクション蝉测尘蹿辞苍测イントロダクション
蝉测尘蹿辞苍测イントロダクション
Tomohiro MITSUMUNE
?
箩蚕耻别谤测チュートリアル
箩蚕耻别谤测チュートリアル箩蚕耻别谤测チュートリアル
箩蚕耻别谤测チュートリアル
Tomohiro MITSUMUNE
?
蝉测尘蹿辞苍测イントロダクション
蝉测尘蹿辞苍测イントロダクション蝉测尘蹿辞苍测イントロダクション
蝉测尘蹿辞苍测イントロダクション
Tomohiro MITSUMUNE
?
About Haystack
About HaystackAbout Haystack
About Haystack
Tomohiro MITSUMUNE
?
尘补肠产辞辞办についてみんなが误解していること
尘补肠产辞辞办についてみんなが误解していること尘补肠产辞辞办についてみんなが误解していること
尘补肠产辞辞办についてみんなが误解していること
Tomohiro MITSUMUNE
?
15分でわかる分散バージョン管理システム驳颈迟
15分でわかる分散バージョン管理システム驳颈迟15分でわかる分散バージョン管理システム驳颈迟
15分でわかる分散バージョン管理システム驳颈迟
Tomohiro MITSUMUNE
?
叠2叠2颁なヘルスケアサービスの作り方
叠2叠2颁なヘルスケアサービスの作り方叠2叠2颁なヘルスケアサービスの作り方
叠2叠2颁なヘルスケアサービスの作り方
Tomohiro MITSUMUNE
?
はじめての厂测尘蹿辞苍测2
はじめての厂测尘蹿辞苍测2はじめての厂测尘蹿辞苍测2
はじめての厂测尘蹿辞苍测2
Tomohiro MITSUMUNE
?
勉强会のすすめ勉强会のすすめ
勉强会のすすめ
Tomohiro MITSUMUNE
?
蝉测尘蹿辞苍测イントロダクション
蝉测尘蹿辞苍测イントロダクション蝉测尘蹿辞苍测イントロダクション
蝉测尘蹿辞苍测イントロダクション
Tomohiro MITSUMUNE
?
箩蚕耻别谤测チュートリアル
箩蚕耻别谤测チュートリアル箩蚕耻别谤测チュートリアル
箩蚕耻别谤测チュートリアル
Tomohiro MITSUMUNE
?
蝉测尘蹿辞苍测イントロダクション
蝉测尘蹿辞苍测イントロダクション蝉测尘蹿辞苍测イントロダクション
蝉测尘蹿辞苍测イントロダクション
Tomohiro MITSUMUNE
?
尘补肠产辞辞办についてみんなが误解していること
尘补肠产辞辞办についてみんなが误解していること尘补肠产辞辞办についてみんなが误解していること
尘补肠产辞辞办についてみんなが误解していること
Tomohiro MITSUMUNE
?
15分でわかる分散バージョン管理システム驳颈迟
15分でわかる分散バージョン管理システム驳颈迟15分でわかる分散バージョン管理システム驳颈迟
15分でわかる分散バージョン管理システム驳颈迟
Tomohiro MITSUMUNE
?

Recently uploaded (6)

第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア
第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア
第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア
OpenRTM1
?
cardiom??????????????????????yopathy .pdf
cardiom??????????????????????yopathy .pdfcardiom??????????????????????yopathy .pdf
cardiom??????????????????????yopathy .pdf
ssuser16d694
?
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTsタワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
KeisukeHattori1
?
それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験
それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験
それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験
KeisukeHattori1
?
TAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptx
TAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptxTAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptx
TAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptx
SheanOrvinBalao
?
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docxALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ruthbarnuevo1
?
第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア
第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア
第57回計測自動制御学会北海道支部講演会 特別講演 システムインテグレーションとロボットミドルウェア
OpenRTM1
?
cardiom??????????????????????yopathy .pdf
cardiom??????????????????????yopathy .pdfcardiom??????????????????????yopathy .pdf
cardiom??????????????????????yopathy .pdf
ssuser16d694
?
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTsタワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
KeisukeHattori1
?
それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験
それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験
それ、マルハラかも。 ~メッセージ上の句点による暗黙的ハラスメント の実在性についてのサーベイ実験
KeisukeHattori1
?
TAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptx
TAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptxTAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptx
TAUHANNGNOLIMETANGEREKAYAYANBOISGL!!!.pptx
SheanOrvinBalao
?
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docxALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ruthbarnuevo1
?

尝颈苍耻虫における开発环境

  • 1. 社内技術勉強会 「 Linux における開発環境」 2008/02/27 Tomohiro MITSUMUNE (a.k.a. Kiske)
  • 2. 本日のアジェンダ 開発環境について Linux での開発環境 zsh screen vim (or Emacs)
  • 3. 開発環境 GUI (Windows) マウス操作を主体とした直感的な操作 文字だけでなく画像を利用し、動作を明確化 インストールしてすぐ使える 設計で想定されたことしかできない 重い、遅い CUI (Unix, Linux) 覚える事が多くて、敷居が高い 多くのことを自分で設定する必要がある 軽い、早い
  • 4. Windows>Linux での 開発環境の問題 シームレスな開発ができない Windows 側でコード修正 scp, sftp, svn とかで Linux 側にアップロード 変更の度に deploy 作業が生じるため、効率悪 文字エンコード , 改行コードの違い アップロード後に「動かねー」と叫ぶ理由の 1 つ
  • 5. Linux での開発 Linux 環境での開発効率向上アイテム zsh screen vim (or Emacs) 開発効率が上がると 早く帰れる 友人 / 家族 / 恋人と団欒 趣味の時間 リア充への第一歩!
  • 6. zsh Unix のコマンドシェルの 1 つ bash + tcsh + ksh = 「究極のシェル」 主な機能 コマンド補完機能 プロンプト表示 スペル修正機能 コマンドラインスタック 拡張されたファイル選択 参考記事 [http://journal.mycom.co.jp/column/zsh]
  • 7. autocomplete コマンド自動補完 autoload –U compinit compinit さまざまなコマンド補完に対応 シェルコマンド ( ls, tar, diff, etc…) ソフトウェア ( apache, php, ruby, etc…) 自分でコマンド補完リストも作成可能
  • 8. プロンプト表示 RPROMPT コマンドライン右側に出るプロンプト カレントディレクトリとか出すと便利 コマンドが長くなってくると勝手に消える local GREEN=$'%{\e[1;32m%}' local BLUE=$'%{\e[1;34m%}' local DEFAULT=$'%{\e[00;m%}‘ PROMPT=$BULE'[${USER}@${HOSTNAME}] %(!.#.$) '$DEFAULT RPROMPT=$GREEN'[%~]'$DEFAULT
  • 9. グローバルエイリアス コマンドライン上の全ての要素をエイリアスとして展開 通常のエイリアスは第 1 要素のみ alias -g L=&quot;| $PAGER&quot; alias -g G=&quot;| grep&quot; alias -g T=&quot;| tee -a logfile“ alias -g H=&quot;| head&quot; alias -g TL=&quot;| tail“ abbreviation という更に便利な機能もある
  • 10. コマンドラインスタック M-q 入力中のコマンドを一時保存できる ./configure --prefix=/usr/local/php-5.2.5 --with-config-file-path=/etc --enable- と、打った後に chmod 744 /usr/local/php-5.2.5 と、したいときに有効 スタックなので 2 重 3 重に格納することも可能
  • 11. その他便利な機能 - コマンド コマンドシェルのミススペルを指摘 setopt correct cd 打つのがメンドクサイ setopt auto_cd 勝手に pushd setopt auto_pushd ディレクトリスタック内をユニークに保つ setopt pushd_ignore_dups
  • 12. その他便利な機能 - スクリプト処理 data000 ~ data255 というファイル作成 touch data{000..255} sample.sql 以外の sql ファイル削除 rm *.sql~sample.sql カレント以下のシンボリックリンク削除 rm **/*(@)
  • 13. screen GNU screen 1 つの端末から複数の端末を仮想的に同時に扱えるようになる 主な機能 同時に複数の端末を扱えるようになる バックスクロールでログが見れ、コピペもできる 柔軟な接続機能
  • 14. うれしい機能 バックスクロール autodetach セッション終了時にプロセスをバックグラウンドへ 突然回線が切れても大丈夫 1 プロセスに複数 attach も可能なので、違う端末からでも全く同じ環境での作業が可能になる 画面分割 vim や emacs のように仮想ターミナルを水平分割 なんちゃってデュアルディスプレイ
  • 15. .screenrc ( 設定ファイル ) escape ^z^z hardstatus alwayslastline &quot;[%02c] %`%-w%{=b bw}%n %t%{-}%+w&quot; autodetach on startup_message off # copy mode 時のバッファ量を設定 defscrollback 3000 scrollback 3000 term xterm-256color markkeys &quot;h=^B:l=^F:$=^E&quot; # ウィンドウ分割設定 bind -c REGION 2 split bind -c REGION 1 only bind -c REGION 0 remove bind -c REGION o focus bind -c REGION ^ resize bind x command -c REGION
  • 16. vim テキストエディタ Unix 系 OS には大抵標準で入ってます 主な機能 マルチバッファ ウィンドウ分割 動的単語補完 400 以上の文法に対応した highlighting 40 以上の言語に対応したオートインデント ctags を利用したタグジャンプ 独自スクリプト実装 (vim script)
  • 17. vim の問題点 操作が変態的 hjkl で移動 さまざまなモード ( normal, visual, insert ) どうやって習得するか チュートリアルモードが用意されている vimtutor とタイプするといきなり開始 日本語で良いチュートリアルだと思うのでオススメ
  • 18. 基本操作 - モード 3 種類のモード ノーマルモード デフォルトモード カーソル移動、文字の編集、コマンド入力 インサートモード 文字を挿入 ビジュアルモード 文字を範囲選択 ノーマル インサート ビジュアル
  • 19. 基本操作 - カーソル移動 カーソル移動 h ← j ↓ k ↑ l -> 0 行頭にジャンプ $ 行末にジャンプ ^ 行の最初の文字へジャンプ H 表示画面の 1 行目へジャンプ M 画面中央へジャンプ L 表示画面の最下行へジャンプ % 対応する括弧へジャンプ gg ファイルの先頭へジャンプ G ファイルの末尾へジャンプ gj 表示行下に移動 gk 表示行上に移動
  • 20. 基本操作 - 編集 編集 x 1 文字切り取り dd カーソル行を切り取り yy カーソル行をヤンク D カーソル位置から行末を切り取り p カーソルの後ろに貼り付け P カーソルの前に貼り付け J 行連結 ( インデントは削除 ) gJ 行連結 ( 空白はそのまま ) ~ 大文字 / 小文字を切り替える >>, << カーソル行をインデント ,  逆インデント <C-a>,<C-x> カーソル位置の数字の加減 u アンドゥ <C-r> リドゥ :w[!] [file] 上書き保存 (! を付けると readonly でも上書き保存、 file 名指定の場合は名前を付けて保存 ) :q[!] 終了 (! を付けると変更点があっても保存せず強制終了 )
  • 21. 基本操作 - インサートモード ここで軽くまとめると 操作がパズル的 突き詰める楽しさがある インサートモード i カーソルの前からインサート I カーソル行の行頭からインサート a カーソルの後ろからインサート A カーソル行の行末からインサート o カーソル行の下に新しい行を作りインサート O カーソル行の上に新しい行を作りインサート
  • 22. 基本操作 - ビジュアルモード ビジュアルモードと編集を組み合わせると非常に強力 コピペ カット & ペースト 置換 範囲置換 範囲を選択後、「 :s/foo/bar 」で範囲置換 ビジュアルモード v 文字単位のビジュアルモード V 行単位のビジュアルモード <C-v> 矩形ビジュアルモード gv 最後に利用したビジュアルモードを復元
  • 23. 基本操作 - その他 検索 / keyword keyword を検索 n 次の候補に移動 N 前の候補に移動 置換 :%s/ from / to /[g] 全行に対してパターンマッチング (g を付けると複数マッチ ) :m,ns/ from / to /[g] m 行目から n 行目の範囲に対してパターンマッチング 画面分割 :sp 画面を水平に分割 :vs 画面を垂直に分割 <C-w>[h,j,k,l] 分割したウィンドウ間を移動 :only カーソルがあるウィンドウ以外を閉じる ファイル操作 :e [file] file を開く ZZ 保存して閉じる :ls バッファ一覧を表示 :bn, :bp バッファ間を前後に移動 ヘルプ :h [command] command のヘルプを表示
  • 24. 単語補完機能 インサートモード時に利用可能 キーワード補完 <C-x C-n>, <C-x C-p> 開いているバッファ内から補完 タグ補完 <C-x C-]> ctags ファイルによる補完 ファイル名補完 <C-x C-f> ファイル名による補完 コマンドライン補完 <C-x C-v> vim のコマンドラインから補完 行全体補完 <C-x C-l> バッファ内から行全体による補完 オムニ補完 <C-x C-o> インテリジェンスな補完
  • 25. テキストオブジェクト テキストのオブジェクト単位で選択 ビジュアルモードで主に利用 ノーマルモードで編集コマンドと組み合わせる テキストオブジェクト i 対象の内側のオブジェクトを選択 a 対象を含んだオブジェクトを選択 ip パラグラフ単位で選択 di 対象の内側のオブジェクトを削除 it タグの内側のオブジェクトを選択
  • 26. テキストオブジェクトの便利な例 i $this->setAttribute('error', ' エラーです '); () 内にカーソルがある状態で vi $this->setAttribute('error', ' エラーです '); dit <h2>PHOTOHITO へようこそ </h2> <h2> タグ内にカーソルがある状態で dit <h2></h2>
  • 27. vim プラグイン 機能拡張するための仕組み 中身は vim スクリプトで記述 vim 起動時にオートロードされる Firefox Extension みたいなもの 種類は 2 つ グローバルプラグイン 全種類のファイルで利用される ファイルタイププラグイン 特定ファイルのみで利用される 公式サイトで公開されている
  • 28. minibufexpl.vim タブエディタ風にバッファを管理 vim デフォルトのバッファ管理は貧弱 配布元 http://www.vim.org/script.php?script_id=159 設定 :let g:miniBufExplMapWindowNavVim = 1 :let g:miniBufExplMapWindowNavArrows = 1 :let g:miniBufExplMapCTabSwitchBuffs = 1
  • 29. surround.vim テキストオブジェクト操作を拡張 配布元 http://www.vim.org/scripts/script.php?script_id=1697 拡張されたところ 対象とする文字列自体を削除したり置換 ds, cs, ys, vs というコマンド 囲っている HTML タグ自体を削除したり置換 インサートモードから使える <C-G>S で利用
  • 30. fuzzyfinder.vim あいまい検索ファイルエクスプローラ 部分検索一致も可能 配布元 http://vim.g.hatena.ne.jp/keyword/fuzzyfinder.vim 検索モード ファイルモード MRU モード (MRU = Most Recently Used) タグモード ディレクトリモード
  • 31. autocomplpop.vim キーワード補完を自動でポップアップ デフォルトだと都度 <C-n> を押す必要がある 配布元 http://hiki.ns9tks.net/?autocomplpop.vim 便利な点 自動でポップアップ ファイル名補完と Ruby のオムニ補完にも対応
  • 32. commentout.vim 範囲選択した箇所をコメントアウト いろんなコメントフォーマットに対応 配布元 http://nanasi.jp/articles/vim/commentout_source.html 対応してる代表的なコメントフォーマット # <!-- --> // > % -