2014/07/31

[本]キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置

読了

キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置
John Allspaw
オライリージャパン
売り上げランキング: 361,674

はじめに
本書執筆の理由
重点事項と主題
対象読者
本書の構成
本書の表記法
コード例の使用
連絡先
謝辞

1章 キャパシティプランニングにおける目標、課題、およびプロセス
1.1 間に合わせの計算
1.2 いつシステム障害が発生するかを予測する
1.3 システム統計データに「話をさせる」
1.4 物品の購入:調達はプロセス
1.5 パフォーマンスとキャパシティ:2つの異なるもの
1.6 ソーシャルWebサイトとオープンAPIの影響

2章 キャパシティの目標設定
2.1 さまざまな種類の要件と計測
2.2 アーキテクチャの決定
2.3 計測点の提供
2.4 災害復旧

3章 計測:キャパシティの単位
3.1 キャパシティ追跡ツールの特徴
3.2 モニタリングの応用
3.3 API使用量とキャパシティに対する影響
3.4 例と現実
3.5 まとめ

4章 動向の予測
4.1 波に乗る
4.2 調達
4.3 キャパシティ追加の影響
4.4 長期の動向
4.5 反復と調整
4.6 まとめ

5章 配置
5.1 自動配置の哲学
5.2 自動インストールツール
5.3 自動構成
5.4 まとめ

付録A 仮想化とクラウドコンピューティング
A.1 仮想化
A.2 クラウドコンピューティング
A.3 まとめ

付録B 瞬間的な増加への対応
B.1 障害の軽減
B.2 障害への対応

付録C キャパシティツール
C.1 モニタリング
C.2 配置ツール

索引

via:目次
出版日が2009年当時は新鮮な内容だったかもしれないが、AWSを筆頭としてクラウドサービスが流行している昨今、クラウドサービスをうまく使いこなすサーバーキャパシティ問題を取り扱った内容の方がよかったかもしれない。

実は、GAEのメモリーエラー問題を解決したくて、手に取ったのだが、付録の部分ぐらいしか書いてなかったので、寂しかったです。

2014/07/30

[iOS][Objective-C]UIPageViewControllerの現在値を取得する

UISegmentedControlなどを使ってUIPageViewControllerのページを切り替えたい場合があります。

そんな時、現在の位置を取得する必要性があるのですが、どうすればいいのだろうか?

syncing UIPageViewController with UISegmentedControl logic issue
を読むと下のようにすればおkみたいです。

//NSUInteger index;
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray *)pendingViewControllers{
    if([pendingViewControllers count] > 0)    {
        index =[(UIViewController*)[pendingViewControllers objectAtIndex:0] pageIndex];
    }
}

- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed{
    if(finished && completed && [previousViewControllers count] > 0){
        segmentedControl.selectedSegmentIndex = index;
    }
}
実際に試したところ、これでいけました!!

2014/07/29

[require.js]ローディング時に自動的に.jsをつけないようにする方法

reuqire.jsでjsをローディングするときに、自動的に拡張子である.jsが付与されてしまいます。

で、これをキャンセルするにはどうすればいいのだろうか?

Is it possible to stop requireJS from adding the .js file extension automatically?
で確認すると、querystringをつければいいそうです。

さっそく下のようにして試してみました。

require.config({
    paths: {
        jquery: '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min',
        gapi:'https://www.google.com/jsapi?'
    }
});
実行したら、確かにロードできた。

2014/07/28

[YouTube][JavaScript]動画を再生する

意外なことにこのメソッドをブログで取りあげていなかった。

JavaScriptから動画を再生するにはどうすればいいのだろか?

window.onYouTubePlayerReady = function(playerId){
  video = document.getElementById('object id');
  video.playVideo();
};
逆に停止をさせたい場合は、
window.onYouTubePlayerReady = function(playerId){
  video = document.getElementById('object id');
  video.pauseVideo();
};
とすればおk

2014/07/27

[YouTube API][JavaScript]動画の画質を変更する

再生される動画の画質をプログラム側から変更することはできるのだろうか?

答えは、できそうです。

JavaScript APIで確認すると、setPlaybackQualityメソッドでいけるみたいです。

window.onYouTubePlayerReady = function(playerId){
  video = document.getElementById('object id');
  video.setPlaybackQuality('hd720');
};
上のようにHD画質を設定したい場合は、hd720やhd1080にすればおk。

2014/07/26

[Google App Engine][Python]moduleアップロード時、共通処理をシンボリック化してうpする

moduleをアップロードするときに、複数moduleで共通して使われる処理も一緒にうpしたいときがあります。

通常の場合だと、下記のようにして、うpするかと思います。

#common.pyがmain.pyとsubmain.pyで呼ばれる。
__init__.py
app.yaml
main.py
submain.py
common.py
で、もう一個、hoge.yamlというのがあって、そこでもcommon.pyを使いたい場合、ディレクトリを一個作って以下のように対応するかと思います。
#下のcommon.pyは上のcommon.pyと同じでhoge_main.py、hoge_submain.pyで呼ばれる。
__init__.py
hoge.yaml
hoge_main.py
hoge_submain.py
common.py
で、毎回、毎回、common.pyをコピーするのはめんどくさいので、app.yaml側にあるcommon.pyをシンボリックリンクにすることで、app.yamlのcommon.pyが変更されたら、同時に反映されるようにすることができます。

この方法でもシンボリックリンクを作らなくちゃーいけないので、めんどくさいといえば、メンドイのだが。

2014/07/25

[Xocde]文字を小文字、大文字に変換する

Xcodeで書かれたプログラムの文字を大文字or小文字に変換するにはどうすればいいのだろうか?

調べたところ、
「Edit」→「Format」→「Transformations」→「Make Upper Case」or「Make Lower Case」
を選択するればおk
 photo Xcode_upper_lower_zps84aafe19.png
ってか、ショートカットでできないのだろうか?

すっげー不便。

2014/07/24

[jQuery]ページ下端まできたときに処理を行うjquery_bottomプラグイン

Twitterたdiggのようにスクロールがちょうど、下までにきたときに、追加読み込みをしたい場合どうすればいいのか、調べていたら、jquery_bottomというjQueryプラグインがありました。

$('#hoge').on('bottom', function() {

});
というコードでいけそうです。

これは便利だなー。

2014/07/21

[git][mac]gitをインストールする

どうやらmac os x 10.8.5では標準でgitがインストールされていないようだ。

で、インストール方法ですが、これがめちゃくちゃ簡単。

Xcodeからコマンドラインツールをインストールすれば、それだけでおk
 photo xcode_git_01_zps71887b08.png
 photo xcode_git_02_zpsad287845.png

2014/07/20

[mac]シンボリックリンクの作成方法

シンボリックリンクをmacで作るには、どうすればいいのだろうか?

ln -s リンクさせたいフォルダのパス シンボリックリンクを置きたい場所

via:OSX シンボリックリンクの作成
リンクさせたいフォルダのパスと書かれているが、ファイルをリンクさせたい場合は、ファイル名までを含むパスでおkみたいです。

そんでもって、相対パスでも作成することができるみたいです。

便利な技だなー、これ。

2014/07/19

[python][Google App Engine]default以外のmoduleを削除する方法

使わなくなったmoduleを削除するにはどうすればいいのだろうか?

すんごい悩んでいたのだが、stackoverflowのDelete non-default Module in google app engineを読むと、どうやら、管理画面から削除できるようです。

具体的には、「Versions」で削除したModuleを選択して、「Delete」ボタンを押せばおkです。

確かに試したら削除できた。

2014/07/18

[jQuery]selectboxのtext値を取得

selectboxで選択したoptionタグのtext値を取得するにはどうすればいいのだろうか?

下で試したらダメだった。

<script>
jQuery(function($){
  $('#hoge').on('change',function(e){
    console.log($(this).text())
  });
});
</script>
<select id="hoge">
  <option value="1">apple</option>
  <option value="2">orange</option>
  <option value="3">banana</option>
  <option value="4">lemon</option>
</select>
stackoverflowのGet selected text from drop down list (select box) using jQueryを読むと下でいけました。
<script>
jQuery(function($){
  $('#hoge').on('change',function(e){
    console.log($('#hoge option:selected').text())
  });
});
</script>
<select id="hoge">
  <option value="1">apple</option>
  <option value="2">orange</option>
  <option value="3">banana</option>
  <option value="4">lemon</option>
</select>

2014/07/17

[jQuery]selectboxの値を取得2

前回、jQueryを使ってselectboxで選択した値を取得する方法を書きましたが、下の方法でもいけそうです。

<script>
jQuery(function($){
  $('#hoge').on('change',function(e){
    console.log($(this).val())
  });
});
</script>
<select id="hoge">
  <option value="1">apple</option>
  <option value="2">orange</option>
  <option value="3">banana</option>
  <option value="4">lemon</option>
</select>

2014/07/16

[本]初めてのAndroid 第3版

読了

初めてのAndroid 第3版
初めてのAndroid 第3版
posted with amazlet at 14.07.16
Ed Burnette
オライリージャパン
売り上げランキング: 171,418

謝辞
序章

1章 クイックスタート
1.1 ツールのインストール
1.1.1 Java 5.0+
1.1.2 Eclipse
1.1.3 Android SDK Starterパッケージ
1.1.4 Eclipseプラグインの設定
1.1.5 Android SDKコンポーネント
1.2 最初のプログラムの開発
1.3 エミュレータ上での実行
1.3.1 AVDの作成
1.3.2 もう一度試してみよう
1.4 実機での実行
1.5 まとめと予告

2章 基本コンセプト
2.1 大きな構図
2.1.1 Linuxカーネル
2.1.2 ネーティブライブラリ
2.1.3 Androidランタイム
2.1.4 アプリケーションフレームワーク
2.1.5 アプリケーションとウィジェット
2.2 生きているアプリケーション
2.2.1 プロセス!=アプリケーション
2.2.2 Androidのライフサイクル
2.3 開発のための部品
2.3.1 アクティビティ
2.3.2 インテント
2.3.3 サービス
2.3.4 コンテンツプロバイダ
2.4 リソースの使い方
2.5 アクセス保護とセキュリティ
2.6 まとめと予告

3章 ユーザインタフェースのデザイン
3.1 数独サンプルについて
3.2 宣言によるデザイン
3.3 オープニング画面の作成
3.4 代替リソースを使う
3.5 Aboutボックスの実装
3.6 テーマの適用
3.7 メニューの追加
3.8 Prefsの追加
3.9 新しいゲームの開始
3.10 デバッグ
3.10.1 ログメッセージを使ったデバッグ
3.10.2 デバッガを使ったデバッグ
3.11 ゲームの終了
3.12 まとめと予告

4章 2Dグラフィックスを究める
4.1 2Dグラフィックスの基本
4.1.1 Color
4.1.2 Paint
4.1.3 Canvas
4.1.4 Path
4.1.5 Drawable
4.2 数独にグラフィックスを追加する
4.2.1 ゲームの開始
4.2.2 Gameクラスの定義
4.2.3 PuzzleViewクラスの定義
4.2.4 盤面の描画
4.2.5 数値の描画
4.3 入力の処理
4.3.1 選択されたマスの定義と更新
4.3.2 数値の入力
4.3.3 ヒントの追加
4.3.4 画面を揺らす
4.4 その他の部分
4.4.1 キーパッドの作成
4.4.2 ゲームロジックの実装
4.4.3 その他
4.5 改良の方向
4.6 まとめと予告

5章 マルチメディア
5.1 オーディオの再生
5.2 ビデオの再生
5.3 数独にサウンドを追加する
5.4 まとめと予告

6章 ローカルデータの保存
6.1 数独へのオプションの追加
6.2 途中経過の保存と復元
6.3 現在位置の記憶
6.4 内部ファイルシステムへのアクセス
6.5 SDカードへのアクセス
6.6 まとめと予告

7章 世界との接続
7.1 インテントによるブラウジング
7.2 ViewによるWebアクセス
7.3 JavaScriptとJavaのやり取り
7.4 Webサービスの使い方
7.5 まとめと予告

8章 位置情報の利用とセンサー
8.1 位置情報
8.1.1 私はどこ?
8.1.2 位置の更新
8.1.3 エミュレータに関する注意
8.2 センサーの活用
8.2.1 さまざまなセンサー
8.2.2 センサーから読み出した値の解釈
8.2.3 エミュレータに関する注意
8.3 地図の操作
8.3.1 MapViewの組み込み
8.3.2 準備
8.3.3 エミュレータに関する注意
8.4 まとめと予告

9章 SQLを使いこなす
9.1 SQLite入門
9.2 SQLの復習
9.2.1 DDL文
9.2.2 変更文
9.2.3 クエリ文
9.3 データベースサンプル
9.3.1 SQLiteOpenHelperの使い方
9.3.2 メインプログラムの定義
9.3.3 行の追加
9.3.4 クエリの実行
9.3.5 クエリの結果の表示
9.4 データバインド
9.5 コンテンツプロバイダの使い方
9.5.1 メインプログラムの書き換え
9.5.2 行の追加
9.5.3 クエリの実行
9.6 コンテンツプロバイダの実装
9.7 AsyncTaskを使ったバックグラウンド処理
9.7.1 AsyncEventsの作成
9.7.2 フィールドとコンストラクタ
9.7.3 onPreExecute
9.7.4 doInBackgroundとonProgressUpdate
9.7.5 onPostExecute
9.7.6 AsyncTaskのまとめ
9.8 まとめと予告

10章 OpenGLによる3Dグラフィックス
10.1 3Dグラフィックスの基礎知識
10.2 OpenGL入門
10.3 OpenGLプログラムの開発
10.4 シーンのレンダリング
10.5 モデルの構築
10.6 ライト、カメラ...
10.7 アクション!
10.8 テクスチャの適用
10.9 透けて見える箱
10.10 スムースさの計測
10.11 まとめと予告

11章 マルチタッチ
11.1 マルチタッチ入門
11.2 タッチサンプルの開発
11.3 タッチイベントについて
11.4 イメージ変換のセットアップ
11.5 ドラッグジェスチャの実装
11.6 ピンチズームジェスチャの実装
11.6.1 2つの点の距離
11.6.2 2つの点の中点
11.7 まとめと予告

12章 Home画面のカスタマイズ
12.1 ウィジェット入門
12.1.1 最初のウィジェット
12.1.2 ウィジェットのマニフェストと定義
12.1.3 伸縮する背景
12.1.4 継承と拡張
12.1.5 ウィジェットの実行
12.1.6 最新情報への更新
12.1.7 もっと大胆に
12.2 ライブウォールペーパー
12.2.1 ウォールペーパープロジェクトの作成
12.2.2 サービス入門
12.2.3 描画エンジンの構築
12.2.4 OpenGLコードの再利用
12.2.5 エンジンの作成と破棄
12.2.6 サーフェスの管理
12.2.7 ウォールペーパーを見えるようにする
12.2.8 ユーザ入力への応答
12.3 まとめと予告

13章 さまざまな環境への対応
13.1 エミュレータを起動せよ
13.2 複数のバージョンに対応する方法
13.3 バージョンによって動作を変える方法
13.4 バグのオンパレード
13.5 大小さまざまな画面への対応
13.6 SDカードへのインストール
13.7 まとめと予告

14章 Android Marketでの公開
14.1 準備
14.2 署名
14.3 公開
14.4 アップデート
14.5 最後に

付録A JavaとAndroid、言語とAPIの違い
A.1 言語
A.1.1 言語レベル
A.1.2 組み込みデータ型
A.1.3 マルチスレッドと同期
A.1.4 リフレクション
A.1.5 ファイナライゼーション
A.2 標準ライブラリ
A.2.1 サポートされているもの
A.2.2 サポートされていないもの
A.3 サードパーティライブラリ

付録B 参考文献

索引

via:目次
ボリューミーな感じで。

確かにわかりやすいが、慣れるまでに時間がかかりそうだ。

2014/07/15

[Google App Engine][Python]メモリーエラーについて

下のようなエラーがここ数日間、発生します。

Exceeded soft private memory limit of 256 MB with 277 MB after servicing 8 requests total
After handling this request, the process that handled this request was found to be using too much memory and was terminated. This is likely to cause a new process to be used for the next request to your application. If you see this message frequently, you may have a memory leak in your application.
20
検索しても答えがわからない。

インスタンスをF2に設定したりしているんだけど、min_idle_instancesを設定しないと防げないのだろうか?

できれば、Pythonコードでカバーしたいんだけど、リファレンスが見当たらないwww

困った。

2014/07/14

[JavaScript][YouTube]iframeを使った動的埋め込み時のパラメータ設定について

前回、Flashを使わずにHTML5を使ったYouTubeの動画埋め込み方法について書きました。

その時は、width、height、videoidなど基本的なパラメータの設定方法はわかったのですが、fullscreenモードの設定や、autohideの設定などはどうすればいいのかわからなかったので、調査しました。

設定はめちゃくちゃ簡単で、json形式でplayerVarsパラメータに仕込めばよさそうです。

window.onYouTubeIframeAPIReady = function() {
  new YT.Player('player', {
    height: '390',
    width: '640',
    videoId: 'Ma5xXTEMBJs',
    playerVars:{
      showinfo:0,
      rel:0,
      fs:1,
      autohide:1,
      controls:1
    },
    events: {
      'onReady': onPlayerReady,
      'onStateChange': onPlayerStateChange
    }
  });
};
確かに、上の設定でいけました。

2014/07/13

[iOS7][Objective-C]UIRefreshControlのtintColorが働かない件

前回、UIRefreshControlをUITableViewController使わずに実装する方法を書きました。

iOS6だと正常動作するのですが、iOS7(iOS7.1.2)だと、初回にbeginRefreshingメソッドを読んでもなぜかtintColorが働かないのだが。

原因は、不明。

どうしよー><

2014/07/12

[iOS][Objective-C]UIPageViewControllerを実装する

これを実装するのにめちゃくちゃ時間がかかった。
UIPageViewController
UIPageViewControllerDelegate
UIPageViewControllerDataSource
UIPageViewControllerについて
を読むと、下のように実装すればいいことがわかりました。

UIPageViewController *pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
pageViewController.delegate = self;
pageViewController.dataSource = self;

//表示したいコンテンツ
UIViewController *viewController;
[pageViewController setViewControllers:@[viewController] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL];
[self addChildViewController:pageViewController];
[self.view addSubView:pageViewController.view];
[pageViewController didMoveToParentViewController:self];
//UIPageViewControllerDelegate
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed{
  if(completed){
    self.index = ((UIViewController *)[previousViewControllers objectAtIndex:0]).index;
  }

}
//UIPageViewControllerDataSource
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController{
  self.index = viewController.index;
  if(self.index == 0){
    return nil;
  }else{
    self.index = self.index -1;
    UIViewController *viewController;
    viewController.index = self.index;
    return viewController;
  }
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController{
  self.index = viewController.index;
  if(self.index == [viewControllers count]){
    return nil;
  }else{
    self.index = self.index + 1;
    UIViewController *viewController;
    viewController.index = self.index;
    return viewController;
  }
}
これキーポイントは、表示させたいコンテンツ(UIVIewController)にindexというプロパティーを持たせているところ。
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController{

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
が結構、デタラメに呼ばれたりするので、コンテンツ側に持たせているのである。

これに気づくまでにすんごい時間がかかった。

2014/07/11

[iOS][Objective-C]UIRefreshControlをUITableViewController使わずに実装する

UITableViewControllerにrefreshControlプロパティーがあってそこに設定すれば、実装できることはわかるのですが、UITableViewControllerを使わずに実装する方法はあるのだろうか?

答えはいけそうだ。
UIRefreshControl:オフィシャル版「引っ張って更新」
を参考にすると、単純に、addSubviewをすればいいようだ。

UITableView *tableView;
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
refreshControl.tintColor = [UIColor redColor];
[tableView addSubView:refreshControl];
確かにできた。

これは便利。

2014/07/10

[JavaScript][YouTube]iframeを使った動的埋め込み

どうやらiframeを使った埋め込み方法がバージョンアップしたようだ。

まず、非同期でscriptを読み込む

var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
次に、APIの準備が整った時点で呼ばれるonYouTubeIframeAPIReady関数に動画を埋め込む処理を書く
window.onYouTubeIframeAPIReady = function() {
  new YT.Player('player', {
    height: '390',
    width: '640',
    videoId: 'Ma5xXTEMBJs',
    events: {
      'onReady': onPlayerReady,
      'onStateChange': onPlayerStateChange
    }
  });
}
第一引数には、動画を設置するidを設定する。
(上の場合は、id="player")
eventsキーには、動画の準備が整った時に呼び出される関数をonReadyキーに登録し、動画の状態が変化した時に呼び出される関数をonStateChangeに登録する。

で、下のように、それぞれの関数を実装する。
window.onPlayerReady = function(event){
};
window.onPlayerStateChange = function(event){
  /*
  YT.PlayerState.ENDED
  YT.PlayerState.PLAYING
  YT.PlayerState.PAUSED
  YT.PlayerState.BUFFERING
  YT.PlayerState.CUED
  */
  console.log(event.data)
};
flashを使わない分、読み込み早いかもしれない。

2014/07/09

[本]GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

読了

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)
大塚 弘記
技術評論社
売り上げランキング: 2,087

目次
第1章:GitHubの世界へようこそ
第2章:Gitの導入
第3章:GitHubを利用するための準備
第4章:Gitを操作しながら学ぶ
第5章:GitHubの機能を徹底解説
第6章:はじめてのPull Request
第7章:Pull Requestが送られてきたら
第8章:GitHubと連携するツールとサービス
第9章:GitHubを利用した開発フロー
第10章:会社でGitHubを使おう
Appendix A:GitHubをサポートするGUIクライアント
Appendix B:Gistで手軽にコードを共有

via:目次
これ、いい。
GitHubの本は、本書が最初だが、40ページぐらい読んだら、もうGitHubにプログラムを公開できた。

ちなみに、本書をベースに公開したプログラムは、iOSDeviceInfoというプログラム。

しかも、素晴らしいのが、「なぜGitを選ぶのか?」というwhyを説明している点である。
特にSVNと比較した時の優位性が知りたかったのだが、見事に答えている。

Gitの各種コマンドも説明しているので、リファ本としても使えるし、自宅と会社で2冊用意したいなー。

久しぶりのヒット作。

2014/07/08

[iOS][Objective-C]UISwitchのonImageとoffImageプロパティーについて

UISwitchをカスタマイズするonImageとoffImageプロパティですが、どうやら、公式リファレンスを読むと、iOS7から効果を発揮しないようです。

実装するときにちょっと注意したいですね。

2014/07/07

[Git]Markdownのマニュアル場所

GitHubにプログラムのpushを行い、マニュアルを書こうかなと思っているのですが、肝心のMarkdownの仕様がわからない。

さんざんぐぐった結果、GitHubのHelpページにあった。

ぶくま代わりにまとめておけば、もう困らないぞと。

2014/07/06

[Git]git addでwaring

git addコマンドをたたいたら、下ようなエラーが発生した。

warning:You ran 'git add' with neither '-A(--all)' or '--ignore-removal',
whose behavior will change in Git 2.0 with respect to paths you removed.
結果からいうと、警告がいっていたように、下のようなコマンドをたたいたら、治ったわけだが。
git add --all .
やっぱり、二つの違いが気になる。
warning: You ran 'git add' with neither '-A (--all)' or '--ignore-removal'を読むと、
・削除したパスを追加したい場合は、-A
・削除したパスを追加したくない場合は、--ignore-removal
って書いてあったんだけど、一度削除されたパスを、再度、新規作成をした場合は、どうなってしまうのだろうか?

すんごい気になるのだが。

2014/07/05

[Git]git commit --amendの後のpush

git commit --amendコマンドを使ってlogのコメントを修正し、再度、pushをしようとしたらエラーが発生した。

ぐぐったら、forceをつけてpushをすればいいところまではわかったが、どうやって指定すればいいのだろうか?
Force my local master to be origin/masterによると以下のようにコマンドをうてばいけそう。

git push -f origin master:master
実際に、
git push -force origin master:master
ってたたいたら、pushされました。

2014/07/04

[Git]複数ファイルをまとめてadd

今、Gitの使い方を勉強しているのですが、addコマンドでファイルをたくさん列挙するのがめんどくさい。

そこで、複数ファイルをまとめてできないかなーっと調べたら、【Git】git add: ステージする(索引に追加)コマンドとオプションで下のコマンドをたたけばいけそう。

git add .
上のコマンドをたたいたら、まとめでaddできた。

超便利。