挙動的にCapsLock
がかかったのだとは推測できたがそもそもHHKBにはCapsLock
キーがありません。
それではショートカットキーで元にもどせるのだろうと思い公式サイトを調べたところFAQに記載があった。
Happy Hacking Keyboard サポートFAQ
Q1:“Caps Lock” を有効にするにはどうしたらいいですか?
A1:キーボード後部のDIPスイッチで、設定したモードにより動作が異なります。
【HHKモード】
“CapsLock"の機能はありません。
【Lite拡張モード、Macモード】
【Fn】+【Tab】キーで"CapsLock"の働きをします。
SW | SW2 | 設定モード |
---|---|---|
OFF | OFF | HHKモード(PC) |
ON | OFF | Lite拡張モード(PC) |
OFF | ON | Machintoshモード |
ON | ON | 設定禁止 |
私はMacモードで使用していたのでFn + Tab
キーでCapsLock
を解除できました。
shellをbash
からzsh
に切り替えてからOctopressで記事を作成するとエラーが発生
shellがbash
の時は問題なくできていた。
1 2 3 |
|
エラーの原因はグロッビング。
グロッビングでの特殊文字の使用をするという形になっており、そこに反応したせいで
引数の*
と?
と[
と]
を使うとグロブ展開が行われ、no matches found
と
なってしまう。少しややこしいい。。。
.zshrc
に以下を追記1 2 3 |
|
.zshrc
を変更したので反映させる1
|
|
この記述( setopt nonomatch )もどうやら少し反則的な書き方らしい。。。 この方法で対処したが他にも方法があったので忘れないようにメモ。 以下を参考にしたNot compatible with Zsh #117
.zshrc
にaliasを設定
1
|
|
記事を作成するときにクォーテーションで囲む
1
|
|
一度git push heroku master
に失敗したのでherok dashbord
からアプリを消してしまった。
その後herokuにdeployしたが以下のようなエラーmsgが表示された。
1 2 3 4 |
|
上記のエラーmsgは
XXXXXXX-XXXXXXX-61482
というURIを持つアプリは存在しないZZZZZZZ-ZZZZZZZ-71402
というURIなのでheroku
にデータをpush
しようとしたら、git
がないと怒られてしまった!!
調べてみると同様のケースがあった。
git
のリモートURLを変更1
|
|
push
1
|
|
無事heroku
にpush
できた。
と。。あとでもう少し調べて見たが、以下の方法でもできるみたい。
.git/config
を編集1 2 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
heroku
コマンドを実行1 2 |
|
vimでmarkdownをリアルタイムにプレビューできるようにする
の記事を書いた時に
コードブロックの{
のエスケープができずgenerateする時にエラーになったので対処法のメモ
bundle exec rake generate
で記事を作成しようとすると
Liquid Exception: Variable '{{' was not properly terminated with regexp: /\}\}/ i
のエラー
調べてみた。
How to escape {{in markdown on Octopress? - Stack Overflow にあるように にあるように
```種類ファイル名
コードブロック
```
を{% raw %}
と {% endraw %}
でくくればうまくいった。
今回は以下のコードでエラーになった
1 2 3 4 5 6 7 8 9 10 11 |
|
このように{% codeblock %}
と{% codeblock %}
の間をくくってやる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
文中で表示させる場合及びリンクのアンカーなどの分の途中は
1 2 3 |
|
のように書けばエスケープできる。
1 2 3 |
|
を使う
1 2 3 |
|
{{
をエスケープすること自体あまりしないから調べるのに時間かかってしまった。
ちなみにOctopress Escape Code に書いてあった。
]]>vim-plug
でインストールする
1 2 3 |
|
source ~/.vimrc
で設定を反映させた後、vimで:PlugStatu
でインストール
使いやすくする為に設定を追加
1 2 3 4 5 6 7 8 9 10 11 |
|
解説
デフォルトだと拡張子がmd
のファイルはmodula2
とうファイルだと認識されてしまうのでmarkdown
で開くよう設定。
また、プレビューを開くためのショートカットを割り当て。
vimで.md
形式を編集している時にCtrl-p
を押すとブラウザが起動しプレビューされる。
さらにファイルを編集するとブラウザをリロードしなくてもリアルタイムに反映される。
リアルタイムに反映されると言っても反映されるまでに数秒かかるので
リアルタイムに反映されるかあとで調べわかったら追記する。
paperclip
導入するにあたりCloud9環境にImagemagick
をインストールしようとしたところエラーがでたので
インストール方法をメモ。
paperclip
の導入手順をみるとsudo apt-get install imagemagick -y
と記述があったので
そのとおりしたところ以下のエラーが発生。
1 2 3 4 5 6 7 8 9 |
|
よくよく調べてみると公式のコミュニティサイト
community.c9.ioに
情報があった。
apt-get update
でレポジトリの更新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 |
|
imagemagick
インストール1
|
|
imagemagick
のバージョン確認1 2 3 4 |
|
\d
は「半角数字1文字」を表す{n,m}
は「直前の文字が n 文字以上、m 文字以下」であることを表す{n}
は「直前の文字がちょうど n 文字」であることを表す[AB]
は「AまたはBが1文字」であることを表す[a-z]
と [-az]
ではハイフンの意味が異なる?
は「直前の文字が1個、または無し」を表す.
は「任意の1文字」を表す+
は「直前の文字が1個以上」を表す*
は「直前の文字が0個以上」を表す( )
はマッチする部分をキャプチャ(捕捉)する$1
や \1
で参照できる\w
は「英単語を校正する文字(半角英数字とアンダースコア)」を表す[^AB]
は「AでもなくBでもない任意の1文字」を表す\
でエスケープする( )
はキャプチャだけでなく、グループ化にも使われる(ABC)?
は「文字列 ABC があり、または無し」を表す(?: )
はキャプチャ無しでグループ化する場合に使う*
と +
は「貪欲」で最長マッチを返すため、使い方を誤ると思いがけない結果が返る*?
や +?
にすると、最短マッチを返す^
は行頭を表す$
は行末を表す\t
はタブ文字を表す\n
は改行文字を表す\s
は空白文字(スペース、タブ文字、改行文字等)を表すABC|DEF
は「文字列ABCまたは文字列DEF」のOR条件を表す^
は行頭の意味になったり、[^ ]
で否定の文字クラスの意味になったりする\b
は単語の境界を表す(?=abc)
は「abcという文字列の直前の位置」を表す(先読み)(?<=abc)
「abcという文字列の直後の位置」を表す(後読み)(?!abc)
は「abcという文字列以外の直前の位置」を表す(否定の先読み)(?<!abc)
「abcという文字列以外の直後の位置」を表す(否定の後読み)\1
や \2
といった連番で参照できる(後方参照)?
や *
、+
といった量指定子は ( )
の後ろに付けることもできる|
を使ったOR条件では、各条件内でもメタ文字が使える\
)でエスケープする[ ]
内ではメタ文字の種類や使われる位置によって各文字の働きが異なる{n,}
や {,n}
はそれぞれ「直前の文字がn個以上」「n個以下」の意味になる\W
、\S
、\D
、\B
はそれぞれ \w
、\s
、\d
、\b
の逆の意味になるHomebrewから行うのが簡単なのでHomebrewでインストール
1
|
|
tmuxはターミナルを閉じずに作業を中断できることがメリット
バックグランドで動かしたままターミナルから抜けることをデタッチ
、
逆にバックグランドで動かしていたターミナルを開き直すことをアタッチ
と言う。
tmux
を実行(tmuxの疑似ターミナルが起動する)
1
|
|
tmux
コマンドを実行後はアタッチ
した状態。
テストするため、好きなコマンドを入力し、その後、Ctrl b
を押してからd
を押して
デタッチする。
1 2 3 |
|
デタッチ後、元のターミナルに戻るのでここでtmux attach
と入力する。
このコマンドは直近にデタッチしたターミナルにアタッチするコマンド。
1
|
|
アタッチすると先程テスト入力したコマンドがそのまま残っている
1 2 3 4 |
|
ホームディレクトリに.tmux.conf
を作成
1 2 |
|
.tmux.conf
ファイルを編集
.tmux.confの内容
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 |
|
Ctr b
d
:デタッチするCtr b
c
:新しいWindowを作成Ctr b
n
:次のWindowへ移動Ctr b
p
:前のWindowwへ移動Ctr b
,
:Windowsに名前をつけるCtr b
%
:Windowを左右のPaneに分割Ctr b
"
:Windowを上下のPaneに分割Ctr b
o
:Pane間を移動Ctr b
?
:ヘルプを表示command
+ T
command
+ D
command
+ [
または command
+ ]
commnad
+ Shift
+ D
bash
を使っていたのだが、カスタマイズが細かくできるという点、補完が優れているという点で
もう随分前にzsh
に切り替えた。~/.zshrc
ファイル作成1
|
|
~/.zshrc
ファイルを編集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 |
|
zsh
を起動するためにzsh
コマンドを実行bash
のときと違うのがわかる。1
|
|
zsh
に変更
今のままではターミナルを起動するたびにzsh
と入力しないとbash
からzsh
に切り替わらないので
デフォルトシェルをzsh
に変えてしまう。1 2 3 |
|
パスワード入力を求められるのでパスワードを入力しEnter
で設定完了
1 2 3 4 5 6 7 |
|
requre 'minitest/autorun'
はライブラリを読み込んでブログラム内でMinitestを使えるようにするためのコード3行目 class SampleTest < Minitest::Test
から7行目までがテストコードの本体
SampleTest
はクラスの名前。命名規則は自由だが慣例としてJapaneseCalenderTest
やTestOrderIterm
などTestで終わるかTestで始まる
名前をつけることが多い。
japanese_calendar_test.rb
やtest_order_iterm.rb
のようにクラス名と合わせる。test_sample
から6行目までが実行対象となるテストメソッド。Minitestではtest_
で始まるメソッドを探してそれを実行するので test_
ではじめることが必須になる。(テストクラス内ではtest_
で始まるメソッドを複数定義してもかまわない。Minitestはtest_
で始まるメソッドを全て実行する)assert_equal 'RUBY', 'ruby'.upcase
が実行結果を確認するための検証メソッド(assert_equal 期待する結果、テスト対象となる値や式)1 2 3 4 5 6 7 8 |
|
1 2 |
|
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 |
|
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 |
|
1 2 3 4 5 6 7 8 9 10 |
|
1 2 |
|
1 2 3 4 5 6 7 8 9 10 |
|
git checkout ファイル名
またはgit checkout .
git checkout .
は変更内容を全部ないことにしてくれるが、新規追加したファイルに
関しては削除されない点に注意!
1 2 3 |
|
完全に元に戻したい場合は別途削除する必要がある
1
|
|
ステージングを取り下げる。編集内容は残る
ファイル名を指定しないと全てのステージングが取り下げられる。
1
|
|
ステージしたファイルを最後にコミットした状態に戻す(編集内容は残らない)
1
|
|
編集・ステージングいずれの変更内容を取り消し、最後にコミットした状態に戻す
1
|
|
checkout
とreset
の違いを説明をざっくりとだけ説明すると、
大きく分けて違いは二つ
作業ディレクトリの未保存の有無をチェック
checkout
:ある。うまくやれば未変更のファイルを全て更新してくれる
reset --hard
:ない。容赦無く上書きされる
HEADの移動の仕方
checkout
:HEADそのものが移動。HEADが付いていたブランチに変化はない
reset
:HEADの示すブランチの方が移動
コミットidをgit log
コマンドで調べて戻したいコミットidを指定する
1
|
|
reset --hard
が戻った以降のコミットをなかったコトにする(コミットログが消える)のに
対しrevert
はコミットログを残したまま戻る
そのままpush
したりmerge
されたりすると、反映されていない変更履歴が残ってしまい、
戻したくなった時にそれを知らないと混乱させる元になる。
チーム開発では要注意!
1
|
|
結論から言うとそれ用のコマンドは用意されていない!
念の為バックアップを作成
1
|
|
remote
のmaster
を一旦消す。ローカルを一つ戻す
push
して反映させる
1
|
|
バックアップを消す
]]>db/schema.rb
を元にテーブルを再作成1
|
|
db/migrate
以下の全てのmigrationを実行してテーブルを再作成1
|
|
Gemfile
を編集
sqlite3をコメントアウトし、gem 'mysql2', '~> 0.3.20'
を追加
1 2 3 |
|
インストール
1
|
|
database接続に必要なconfig/database.yml
の編集
今回はCloud9が用意しているDBを使用する。
ローカルで動かしているなら、自分で作ったDB名とユーザー名いれて、
hostにはlocalhostって入れれば接続できる。
1 2 3 4 5 6 |
|
MySQL起動
1
|
|
あとはDBも接続できたのでrails g model XXXX
・・・・・rake db:migrate
を
実行するだけ。
gem install rails
を実行すると大量の依存gemがシステムにインストールされてしまうので
Rails自体もbundlerでプロジェクトごとにインストールする。
1 2 |
|
bundle init
でGemfile
の作成
1 2 |
|
Gemfileでrails
gemを指定
1 2 3 |
|
railsをbundlerで指定のデュレクトリにインストール
1
|
|
bundle exec rails new .
でカレントデュレクトリにRailsプロジェクトを作成
Gemfileを上書きしてよいか聞かれるのでY
を打つ。
1 2 3 4 5 6 7 8 9 |
|
サーバ起動
1
|
|
一般的なコメントアウトは#
を使うコメント。
1
|
|
false
を使うコメント方法
1
|
|
false
を使うことでERBのコードもコメントアウトできる。
1
|
|
記号は変わらない。複数行でも、一般的なコメントアウトは#
を使うコメント。
1 2 3 4 |
|
false
は2つのERBコードに分かれているので、複数行にもできる。
1 2 3 4 |
|
false
は2つのERBコードもコメントアウトできる。ERBコードを含む長いコードをコメントアウトする時は便利。
1 2 3 4 5 |
|
rubyなのでbegin
,end
もある。
1 2 3 4 5 6 |
|
begin
,end
は分けられるし、ERBコードも挟める。
1 2 3 4 5 |
|
以下の方法で解決
上記にアクセスしFind another team
をクリックし自分のメールアドレスを入力すると
そのアカウントに紐付いてるすべての Team
アカウントにログインできるマジックリンクがメールで通知されるので
リンクをクリックし、自動でチームにログインできる。
旗を表示します:
icon-tag
]]>1
|
|
git add
してgit commit
してgit push
するのがメインでたまにしか使わないコマンドもあるので忘れないように備忘録として残しておく
基本的なGitの作業の流れは下記のようになる。
git init
)、または複製(git clone
)するgit add
)git commit
)git push
)Gitを用いた開発の流れにある2,3,4をmasterブランチではなく、分岐させたブランチ内で開発していくことになる。 分岐させたブランチ内でコミットを進め追加機能などのまとまった開発が完成すると、masterブランチに戻り、分岐させたブランチをマージして追加機能などの内容を取り取り込む。
git branch [new_branch_name]
)git checkout [new_branch_name]
)git checkout master
)git merge [new_branch_name]
)git reset
1
|
|
過去のコミットでコミットを指定してgit reset
すると、指定した過去のコミットまで戻る。
現在のコミットから指定した過去のコミットまでのコミットは取り消される。
コミット履歴自体を変更することになるので、注意!!
直前のコミットを取り消したい場合は以下を実行
1
|
|
オプションによってファイルの変更がどうなるかが決まる
オプションには --soft
と --mixed
と --hard
がある。
git reset --soft 過去のコミット
: ファイル変更は過去に戻らないが、コミットだけ取り消される。それまでのファイル変更はインデックスに追加される。git reset --mixed 過去のコミッ
: ファイル変更は過去に戻らないが、コミットだけ取り消される。それまでのファイル変更はワーキングツリーに追加される。git reset --hard 過去のコミット
: ファイル変更も過去に戻り、コミットも取り消される。それまでのコミットは無かったことになる。オプションのないgit reset
は--mixed
と同様の結果になる。。
--hard
を実行してしまうと、完全に取り消すことになるので注意!!
git diff
1
|
|
git diff
は色々なコマンドやオプションが用意されている。
git diff
: ワーキングツリーとインデックスとの差分を表示git diff —-cached
: インデックスとHEADとの差分を表示git diff HEAD^..HEAD
: 直前のコミットと、その更に前のコミットの差分を表示HEADとは、直前のコミットのこと。
HEAD^とは、HEADの更に1つ前のコミットのこと。
以下に、作業フローの中での git diff
の使い方
git diff
や git status
で変更を確認git add .
で更新ファイルをインデックスに追加git diff —-cached
や git status
でこれからコミットする内容の最終チェックgit commit -m "[commit_message]"
でコミットgit diff HEAD^..HEAD
で直前にコミットしたもの(HEAD)と、その更に1つ前のコミット(HEAD^)の差分を見ることで、直前のコミットの差分を見ることができる。git log
1
|
|
git log
には便利なオプションがいくつかある。
よく使われるのは –stat オプション
1
|
|
実行すると、コミットメッセージに加えて、何のファイルがどの程度増減したかも表示される。
また、いくつかオプションを組み合わせて実行することで、コミットログが視覚的に把握しやすくなる。
1
|
|
git branch
, git checkout
1
|
|
1
|
|
ブランチを作成したら、そのブランチに移動
また、-b
オプションを付与すると、ブランチの作成と移動を一度にすることが可能
1
|
|
1
|
|
ブランチの一覧を表示すると * master などブランチ名の前に*がついているものがある。
これが現在のブランチ
-a
オプションを付与すると、登録したリモートリポジトリを含めた全てのブランチの一覧を表示
1
|
|
1
|
|
ブランチが増えてくると煩雑になるので、役目を終えたブランチを削除するようにする。
git merge
コマンドの注意すべきこと
1 2 |
|
上記の場合、git checkout master
としているので、現在のブランチはmaster
次のマージコマンドでは、[branch_name]のコミット履歴分が、現在のブランチであるmasterに取り込まれる。
したがって、[branch_name]のブランチに影響はないが、master
のコミット履歴は更新される。
コンフリクトの解消と再マージ
コンフリクトがおきたファイルを開くと、<<< HEAD, ===, >>> XXXといった形でコンフリクト箇所が示される
コンフリクトが起きている箇所を修正し、保存。
次に、git add [file_name]
でコンフリクトした[file_name]をインデックスに追加
次に、git commit -m [commit_message]
でコミット
git clone
git clone
コマンドは、公開されているリポジトリをローカルに複製するコマンド
1
|
|
リモートリポジトリをクローンする際に必要なリモートリポジトリの入力には2種類がある。
GitHubの場合 ( ユーザ名 にはGitHubのユーザ名、リポジトリ名 にはGitHubのリポジトリ名を入力)
git clone https://github.com/[user_name]/[repository_name].git
git clone git@github.com:[user_name]/[repository_name].git
git remote
コマンドはリモートリポジトリの登録や確認を行うコマンド
ローカルリポジトリにリモートリポジトリを登録
git pull
や git push
などリモートリポジトリと通信する場合に必要な登録
1
|
|
登録名には慣習がある。
origin
upstream
1
|
|
初めに一度行えば、今後はリモートリポジトリを origin
や upstream
として扱える。
-v
オプションをつけることで登録したリモートリポジトリの詳細を表示することが可能
1
|
|
1
|
|
ローカルリポジトリにあるリモートリポジトリの登録を削除するだけ。
リモートリポジトリ自体が削除されるわけではない。
git push
コマンドは、ローカルリポジトリのコミット履歴をリモートリポジトリに反映させるコマンド
1
|
|
登録名で登録されているリモートリポジトリに向けて、[branch_name]で指定したブランチがプッシュされる。
ローカルリポジトリのmasterブランチの更新を、リモートリポジトリのmasterにマージするコマンド
1
|
|
git pull
コマンドは、指定したリモートリポジトリの更新分をマージする。
プルはリモートリポジトリのブランチからローカルリポジトリのブランチにマージする。
他人がプッシュした変更分を定期的に取り込んでいかなければ、自分のローカルリポジトリはリモートリポジトリに対して遅れを取ることになり、開発を進められなくなる。
1
|
|
自分が管理しているリモートリポジトリからmasterブランチの更新を、ローカルリポジトリのmasterにマージするコマンド
1 2 |
|
プルでもコンフリクトが起こる場合がある。
また、pull
コマンドでは自分のコードと他人のコードがマージされる。
まずは取り込むだけにしたい場合は、fetch
コマンドを実行。