OmniAICreator/Qiita-1.07M huggingface dataset:
JobScheduler 1.10新機能：JOEのダイアグラム表示

# JobSchedulerについて

JobSchedulerは独SOS社(Software- und Organisations-Service GmbH)によって開発されている、ジョブ管理システムです。
JobSchedulerの主な特徴は、下記となります。

- オープンソース（GNU Public License V.2）
 - Linux/Windows版は、無料で使用可能。
 - サポートライセンスを購入すれば、ユニバーサル・エージェントの利用に加えて、障害対応、バグフィックス／ワークアラウンドの提供、新機能の早期提供、チケットシステム(OTRS)、JIRAの利用が提供される。
- プログラマブル
 - ジョブの中で、Java, Perl, JavaScript, VBScript, Powershell, javax.scriptの内部APIを使ったロジックを記述可能
 - 外部API（XML形式）によりRESTまたはコマンドラインからジョブの実行制御、実行状況の取得が可能 
- エンタープライズ・グレード
 - ファイル転送やログローテンション等豊富なテンプレート機能
 - リモートジョブ実行、冗長化機能、ロードバランス、外部認証等、エンタープライズ向け大規模システム対応
 - JasperReport（ジョブ実行レポート）やZabbix/Nagios（ジョブ実行監視）との連携機能
 - MySQLの他、PostgreSQL, Oracle, DB2, MS SQL Server, Firebirdに対応
- 豊富な導入実績

詳細な情報については、以下をご覧下さい。

 - 日本語紹介資料 https://www.ossl.co.jp/?page_id=148
 - 日本JobSchedulerユーザーグループ https://sites.google.com/site/jobschedulerja/ 
  - https://groups.google.com/forum/?hl=ja#!forum/jobscheduler-ja
  - https://www.facebook.com/Jobscheduler-Japan-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97-594469610565511/timeline/
 - ナレッジベース（英語）　https://kb.sos-berlin.com/display/PKB/Product+Knowledge+Base+Home
 -  JIRA（英語）
　https://change.sos-berlin.com/secure/Dashboard.jspa
 - User Forum（英語）　http://sourceforge.net/projects/jobscheduler/forums/forum/486122
 - SOS社ホームページ　http://www.sos-berlin.com

# JOE V.1.10でのダイアグラム表示

JOE (Job Object Editor)は、JobSchedulerのジョブ定義（XMLファイル）を生成するデスクトップ（スタンドアローン）プログラムです。
最新版のV.1.10から、下記のようなジョブチェーンのフローダイアグラムが表示できるようになりました。
![image](https://qiita-image-store.s3.amazonaws.com/0/52445/bf4fdf43-1369-c9d6-63bc-766c9ccd9c96.png)

https://kb.sos-berlin.com/display/PKB/Howto+enabling+Job+Diagram+viewer+in+JOE
この機能はGraphvizというオープンソースのグラフ描画ツールを使っていますので、追加インストールが必要です。

## Graphvizのインストール

まず下記ダウンロードリンクから、プラットフォームを選択し必要なパッケージをダウンロードします。
http://www.graphviz.org/Download..php
以下、Windows7 64bit環境での例となります。
Windows版のGraphvizの最新版は、2015/12月現在V.2.38でしたので、graphviz-2.38.msiをダウンロードし、起動します。
普通にインストールした後、スタートメニューにGraphvizのフォルダができ、gvedit.exeというGUIツールが使えるようになりますが、JOEではこれは使いません。
![image](https://qiita-image-store.s3.amazonaws.com/0/52445/84c98dc1-6d2a-1144-d6f3-ff33ac57b326.png)

## パスの設定と動作確認

JOEからGraphvizを呼び出せるように、システム環境変数としてのPathを設定します。
スタート→コンピューター→コンピューターを右クリック→プロパティ→システムの詳細設定を順にたどるか、コントロールパネル→システムとセキュリティ→システム→システムの詳細設定を順にたどって、システムのプロパティを表示し、環境変数ボタンをクリック、システム環境変数のリストボックスの中からPathの行を選択して、編集ボタンをクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/52445/3f95aecb-53ce-3049-1d70-26011534ca81.png)
Graphvizのインストールパス（C:\Program Files (x86)\Graphviz2.38\bin)を追加し、OKをクリックして保存します。
最後に、コマンドプロンプトを開き、

```
>dot -?
```
と入力して、ヘルプメッセージが表示されたら完了です。

## 表示

あとは、普通にJOEを起動し、ジョブチェーンを選択すると下記のようにダイアグラムが表示されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/52445/98dddd2d-5e53-a467-9ace-10c59c16af02.png)
Herokuへのデプロイにプライベートなレポジトリのgemを含める

オープンソース万歳！でもたまにはコードを隠しておきたいこともありますよね。

というわけで、HerokuへRubyのコードをデプロイするときに依存ライブラリとしてGitHubのプライベートレポジトリからコードを持って来ましょう。GitHubでアクセストークンを作って、Herokuアプリケーションに設定してデプロイします。トークンを参照するために、buildpackをひとつ挟みます。

この記事はTerence Leeによる『[Setting Up Private GitHub Repos with Bundler on Heroku](https://gist.github.com/hone/b0c0093374097313ab7f)』を元にしています。

# トークンの作成

GitHubにログインして、https://github.com/settings/tokens から「Generate new token」をクリックしてトークンを作成します。プライベートレポジトリをcloneするには、「repo」のみをチェックしてあれば充分です。「Generate token」クリックするとトークンが表示されるので、クリップボードにコピーしてください。

# ローカルにトークンを設定する

デプロイには必須ではないですが、ローカルに`bundle install`するときに便利かも。`~/.netrc`に下記の3行を追加しておくと、毎回パスワードを入力する必要がなくなります。

```
machine github.com
  login <アカウントのメールアドレス>
  password <ここにトークンをペーストする>
```

# Herokuアプリケーションにトークンを設定する

クリップボードにトークンがあるうちに、Config varにも覚えさせておきましょう。

```
$ heroku config:set GITHUB_AUTH_TOKEN=<ここにトークンをペーストする> -a <アプリ名>
```

Buildpackを設定してこのトークンを利用してデプロイ時に参照してもらうようにします。 (このbuildpackはHerokuが公式にサポートしているものではありません。ごめんなさい。)

```
$ heroku buildpacks:add --index 1 https://github.com/timshadel/heroku-buildpack-github-netrc.git
```

# 開発する

:sushi: そうそう、この記事は[RubyKaigi 2015](http://rubykaigi.org/2015)の会場からお送りしています。

`Gemfile`には、レポジトリのhttpsで始まるURLを指定しましょう。

```
gem "プライベートなgem", git: "https://github.com/アカウント名/レポジトリ名.git"
```

`Gemfile.lock`も更新しておきます。

```
$ bundle install --path=vendor/bundle
$ git add Gemfile Gemfile.lock
$ git commit
```

もちろんコードの変更もcommitしてくださいね。

# Herokuにデプロイする

うまくいきますように。

```
$ git push heroku master
```

この記事は、[Heroku Advent Calendar 2015](http://qiita.com/advent-calendar/2015/heroku)の12月11日の記事としてお送りしました。
【備忘録】Pythonにおけるアンダースコア"_"の役割について

# アンダースコア"_"の役割
Pythonのサンプルコードを読んでいて、

`def __init__():`

であったり、

`def _variable_hogehoge(x):`

みたいなアンダースコア二つ又は一つで書かれるのをよく見る。

アンダースコア二つで定義される関数は**外部の参照を受けないもの**。この場合、アンダースコアで囲う。
アンダースコア一つで定義される関数は**参照はできるが、基本的に外部から参照しない ということを慣習化させたもの**らしい。

ここまでは知っていたが、こんなサンプルコードの一文が

`_, loss_value = sess.run([train_op,loss])`

なんのアンダースコアなのかなーと思い調べてみたところ
"[Python で使わないタプルの値は “_” (アンダーバー) に代入するというプラクティス](http://momijiame.tumblr.com/post/28130976849/python-%E3%81%A7%E4%BD%BF%E3%82%8F%E3%81%AA%E3%81%84%E3%82%BF%E3%83%97%E3%83%AB%E3%81%AE%E5%80%A4%E3%81%AF-%E3%82%A2%E3%83%B3%E3%83%80%E3%83%BC%E3%83%90%E3%83%BC-%E3%81%AB%E4%BB%A3%E5%85%A5%E3%81%99%E3%82%8B%E3%81%A8%E3%81%84%E3%81%86%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9)"

ようは、使わない返り値に変数を割り当てるのはナンセンスだから、アンダースコアで無視しましょうということ。

プログラム的に美しくなる気がする。
c++ builder XE4, 10.2 Tokyo > TeeChart > TColorBoxを使ったSeriesの色変更 > ItemIndexでなくSelectedを使う

```txt:動作環境
C++ builder XE4
    TeeChart Lite v2013.08.130414
RAD Studio 10.2 Tokyo Update 2 (追記 2018/01/10)
    TeeChart v2016.17.160129 32bit VCL
```

http://qiita.com/7of9/items/5f5b6bebfee1f7a46efe
においてシリーズの色変更を記載した。

TColorBoxの値を使って色変更をしようとして失敗した。

```
Chart1->Series[0]->SeriesColor = ColorBox1->ItemIndex;
```

上記ではなく下記が正しい。

```
Chart1->Series[0]->SeriesColor = ColorBox1->Selected;
```

SelectedはLiveBindingを調べている時にも出てきたが、これまで使用したことがなかった。
R Markdownで標準のCSSとhighlightを取り除くには

## この記事の目的
私が大好きなRMarkdownについて、Tipsを集中的に連載しようという思いつきの企画です。あと自分の中で進めている別企画のメモという位置づけでもあります。なので**大した中身はありません**。

### R Markdownとは
Markdown記法をベースに、チャンクという形でRのコードを記述して評価・出力することができるものです。RStudioのクイックリファレンスでは以下のように説明してあります:

> R Markdown is an easy-to-write plain text format for creating dynamic documents and reports. 

## 標準の書式を取り除きたい
R Markdownの書式にこだわり始めると、段々と元のテーマ設定と競合して頭を抱えることがあります。これがかなりやっかいで、手作業で摘み取っていくにはあまりにしんどいです。ですがこれを一発で解決することができます。

## 設定方法
Rmdファイルの冒頭のyaml部分を、以下のようにします:

```
---
title: "hogehoge"
output:
  html_document:
    theme: null
    highlight: null
---
```

つまり、テーマを`null`に、ハイライトを`null`にできるんですね。これで一切のcss設定が解除されます。よってこの後に自分が当てたいcssテーマを以下のように指定すればOKです:

```
---
title: "hogehoge"
output:
  html_document:
    theme: null
    highlight: null
    css: mystyle.css
---
```

自作あるいは他のところから入手したcssテーマで簡単に作れるようになりますね。

Enjoy!
Google for Mobile Tokyo 高品質Androidアプリ実装ヒント集〜ゴミアプリと言わせないために #gfmtokyo

Google for Mobile Tokyoに参加したのでメモ。

# イベントサマリ
* Titlle: Google for Mobile Tokyo
* Date: 2015-12-09 10:00 - 17:30
* URL: https://events.withgoogle.com/google-for-mobile-tokyo/
* hashtag: #gfmtokyo https://twitter.com/hashtag/gfmtokyo

# 高品質Androidアプリ実装ヒント集〜ゴミアプリと言わせないために
* ユーザ評価と収益性の関係
  * 2-2.9stars と 3-3.9stars では9X差がある
  * 3-3.9stars と 4-5stars 4X差がある
  * ぶっちゃけ，4-5starsでないと収益は見込めない。
* 4-5starsを取るために
* 推奨ガイドライン資料の追加と更新
  * The Secrets to App Success on Google Play -- 2015.11.17 2nd released
  * Mobile App UX Principles -- 2015.4 released
  * Google Design サイトの各種記事
    * Design from iOS to Android (and Back Again) -- 2015.5 released
* App Qualityガイドライン
  * 引き続き重要
* テスト端末選定方針 (うろ覚え)
  * OSのバージョン
  * RAM容量
  * 画面サイズ
  * GPU？
* [Google Play Best of
2015](https://play.google.com/store/apps/collection/promotion_3001cd4_apps_bestof2015)
  * 良いアプリを参考に。
* ユーザー評価を読む
  * アプリである意味がない
  * 遅い・重い
  * 電池を使いすぎる
  * ネットワークを使いすぎる，オフラインで使えない
  * いつも居座っている
  * Backボタン対応がデタラメ
  * 新しい機種 / OSバージョンに非対応
  * ユーザーの数の増加にサーバー設備が追いついていない
  * 位置情報の取得処理がデタラメ
  * パーミッション要求が不審
  * タブレットユーザーを無視
  * サインイン，会員登録が面倒
  * 通知，広告やポップアップがうるさい
  * UIがモダンではない
ios アプリのテキスト入力で次のテキストボックスにサクッと移動する方法

テキストボックスが並んでいて、 Enterされたら次のテキストボックスにフォーカスを移す方法

![image](https://qiita-image-store.s3.amazonaws.com/0/5691/edefc9fc-4635-f223-e660-df163198890a.png)

Storyboard でそれぞれの UITextField に Tagを付与。

上から順にTag 1,2,3

![image](https://qiita-image-store.s3.amazonaws.com/0/5691/7dcd3d9e-a0b0-6f15-e9e8-d16b3c4cff12.png)

ViewControllerで

``` swift
class ChangePasswordViewController: UIViewController, UITextFieldDelegate, UINavigationControllerDelegate {

    // ...

    // MARK: - TextFieldDelegate
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        // 今フォーカスが当たっているテキストボックスからフォーカスを外す
        textField.resignFirstResponder()
        // 次のTag番号を持っているテキストボックスがあれば、フォーカスする
        let nextTag = textField.tag + 1
        if let nextTextField = self.view.viewWithTag(nextTag) {
            nextTextField.becomeFirstResponder()
        }
        return true
    }

}
```
hashCode() オーバーライド 例



▪️Test55.java

```java
import java.util.*;

public class Test55 {
	public static void main(String[] args) {
		Set<Cat55> cat = new HashSet<Cat55>();
		Cat55 c1 = new Cat55();
		c1.name = "ねこ";
		Cat55 c2 = new Cat55();
		c2.name = "ねこa";
		Cat55 c3 = new Cat55();
		c3.name = "ねこb";
		Cat55 c4 = new Cat55();
		c4.name = "ねこc";
		Cat55 c5 = new Cat55();
		c5.name = "ねこk";
		Cat55 c6 = new Cat55();
		c6.name = "ねこl";

		cat.add(c1);
		cat.add(c2);
		cat.add(c3);
		cat.add(c4);
		cat.add(c5);
		cat.add(c6);
		System.out.println("要素数=" + cat.size());

		// これをやることでc2オブジェクトのメンバー変数が全部空っぽになる
		c2 = new Cat55();
		c2.name = "ねこa";
		// c2 = new Cat55();これをやることでc2オブジェクトの
		// メンバー変数が全部空っぽになります
		// 前にnewしたc2はリストの中に追加されてる
		// 後にnewしたc2はリストの中に入ってない
		// size()は格納されてる要素数を返す
		// remove()を呼び出すとequalsメソッドが呼び出される
		// equalsメソッドでは、リスト内に格納されている変数のnameが同じなら
		// trueが変えるので、
		// c2はそもそもリストに格納されていない
		// c2.name = "ねこa"をc2.name = "ねこf";にすると
		// removeされないので結果は3のままになってしまう
		// c2.name = "ねこa"なら、removeでequalsメソッドを呼び出した時
		// equalsメソッドでリスト内に格納されたnameと等しければtrueで
		// removeできる
		// つまりリスト内に格納されているnameと等しければremoveできる
		// c2.name = "ねこa";をc2.name = "ねこ";にしてもremoveできる
		// 後にnewしたc2と同じ名前のc2.name = "ねこa";がリストに格納されている
		// nameと同じならtrueでremoveできる

		cat.remove(c2);
		System.out.println(cat.size());

		cat.remove(c4);
		System.out.println(cat.size());

		c4 = new Cat55();
		c4.name = "ねこj";
		// removeできない
		cat.remove(c4);
		System.out.println(cat.size());

		cat.add(c4);
		System.out.println(cat.size());

		cat.remove(c4);
		System.out.println("c4をremove＝" + cat.size());
		System.out.println("c4をremove成功");
		System.out.println("");

		// 最初removeできてなかったのはc4がリストに格納されてなかったから
		// cat.add(c4);でc4をリストに格納した
		// removeでequalsメソッドが呼び出される
		// equalsメソッドでリストに格納されているnameと同じであれば
		// trueを返すので、removeされる
		System.out.println("元々＝" + cat.size());
		c5 = new Cat55();
		c5.name = "ねこk";
		cat.remove(c5);
		System.out.println("格納されているリスト数＝" + cat.size());

		// cat.add(c5);
		System.out.println(cat.size());
		cat.remove(c5);
		System.out.println(cat.size());

		c6 = new Cat55();
		c6.name = "ねこm";
		cat.remove(c6);
		System.out.println("c6remove後=" + cat.size());

		c6.name = "ねこn";
		cat.add(c6);
		System.out.println(cat.size());
		System.out.println(cat);

	}

}
```

▪️Cat55.java

```java

public class Cat55 {
	private int cp;
	public String name;

	public boolean equals(Object o) {
		if (o == this)
			return true;
		if (o == null)
			return false;
		if (!(o instanceof Cat55))
			return false;
		Cat55 r = (Cat55) o;
		if (!this.name.trim().equals(r.name.trim())) {
			return false;
		}
		return true;
	}

	public int hashCode() {
		int result = 37;
		result = result * 31 + name.hashCode();
		result = result * 31 + cp;
		return result;
	}

}
```

▪️Test55,java 実行結果
要素数=6
5
4
4
5
c4をremove＝4
c4をremove成功

元々＝4
格納されているリスト数＝3
3
3
c6remove後=3
4
[Cat55@16b95ac9, Cat55@bc2e1f, Cat55@16b95c3d, Cat55@16b95bff]
Macでキャプチャして作ったGifアニメーションをQiita記事に貼り付ける方法

よくターミナルでの動きなどをGifにしてQiitaの記事などに貼付けられているのを見かけますが、自分もやりたかったためその手順をまとめました。備忘録的に書いてます。


# Gifアニメーションを録る
`GifGrabber` というアプリがあるので、App storeから落とします。`gif`で検索すれば出てきます。（下に追記あり）

![gifglaber.png](https://qiita-image-store.s3.amazonaws.com/0/37036/7109945a-7fa9-42c4-9933-79d29c3268eb.png)


特に難しい操作はなく、アプリを起動すればキャプチャ領域を決める枠が出るので、それを録りたい部分に合わせて実行するだけです。実行し録画が完了したら、上のアイコンを開いて録った動画を開き、Save Asで保存すればOK。30秒しか録れないことに注意。

参考
[MacでGifアニメーションをキャプチャする「GifGrabber」が使いやすくておすすめ！](http://vdeep.net/gifgrabber)

## 2019/07/23 追記
`GifGrabber` はこの記事を書いた当時あったアプリなのですが、今見るとどうも見つからない様子。[GifGrabber re-emerges as Giphy Capture](https://techcrunch.com/2016/04/09/gifgrabber-giphy-capture/)を読むとGiphyという別アプリのファミリーになり吸収された？とのことで、もし他にアプリを探してる方は [LICEcap](https://www.cockos.com/licecap/)などを使用されると良いかと思います。


# 記事に貼付ける
GifファイルができたらそのままQiitaの編集画面へドラッグ&ドロップ！と思ったら、容量が大きくて圧縮されてしまい、下のように残念な感じになります。

![findfile.gif](https://qiita-image-store.s3.amazonaws.com/0/37036/af254063-1934-f423-b232-ddeb5477b90c.gif)

ドラッグする前に圧縮しましょう。[Compressor.io](https://compressor.io/compress)というサイトがあるので、そちらを使えば簡単にできます。


圧縮すると97%も削れました。赤枠で囲ってあるボタンからファイルをダウンロードしましょう。
![Compressor.io - optimize and compress your images and photos 2015-12-11 12-37-06.png](https://qiita-image-store.s3.amazonaws.com/0/37036/5590db63-1fb1-1039-11dd-0f61d34f6b89.png)

 
あとは編集中の記事にドラッグ&ドロップするだけ。

![findfile-compressor.gif](https://qiita-image-store.s3.amazonaws.com/0/37036/b051ef16-5544-0277-2e21-ae38bcacee5c.gif)

以上
Google for Mobile Tokyo 基調講演

Google for Mobile Tokyoに参加したメモ。

# イベントサマリ
* Titlle: Google for Mobile Tokyo
* Date: 2015-12-09 10:00 - 17:30
* URL: https://events.withgoogle.com/google-for-mobile-tokyo/
* hashtag: #gfmtokyo https://twitter.com/hashtag/gfmtokyo

# 基調講演: Opening Speach
* 新幹線・カラオケといったプロダクトから日本の技術力は高い
* 日本にはBlackBerry・スマホが普及する前から携帯が普及していた
* スマホ浸透率 世界一？ (若干怪しい)
* Google Play Store 売上ベスト3位？ (若干怪しい)
* 1日の時間の使い方がTVよりOnlineの時間が大きくなった Online:135min > TV: 125min
* 家に帰ってネットサーフィンではなく，スポットポットで対応できる体験が重要
* **重要キーワード：マイクロ・モーメント**

* 今日のセッションは，開発・エンゲージ・収益化という3つの切り口で28セッション
  * Dev(開発) 13sessions your App
  * Engage(エンゲージ) 8 with User
  * Earn(収益化) 5

# 基調講演: モバイルアプリの成功を支える最新技術トレンド
* 進化を続けるAndroid Platform
  * 1.4+ Billion active devices
  * 4,000 Models
  * Android 6.0
  * Multi Screen Hardwares
      * TV, ChromeCast, Wear, auto, cardboard
  * Android Studio 2.0 preview
      * new Emulator
      * add GPU Profiler

* Google Playによるアプリ経済圏の拡がり
  * 決済 US$70億 世界のアプリ開発者への支払
   * 決済方法 (how to pay)
       * Career: 37 countries
       * Gift: 30 countries *recently India has joined
       * PayPal: 24 countries
   * Google Play for Family *coming soon
   * Android for Work

* 今注目すべき技術トレンド
  * Material Design
  * Smart Lock
  * Service Worker
  * ユーザとアプリの出会いの進化
      1. Google Play Store
      2. App Indexing
      3. 広告技術のInnovation: AdMob, Native Ads
  * ユーザの文脈(TPO)に応じたコンテンツの提供 (Time,Place,Occasion)
      1. Map
      2. Fused location
      3. Eddystone
  * 近接技術とマルチスクリーン
      * クラウドと機械学習技術
      * Cloud Vision API (画像認識)
      * Big Query
      * Tensor Flow
  * 動画の利用シーン拡大
      * 広告の普及
      * VR
Spring-boot / Thymeleaf で、bean の配列要素に動的にアクセスする

# 目的
入力フォームなどで使う bean オブジェクトの要素に配列を持たせて、その要素数が可変の場合でも Thymeleaf テンプレートで対応したい。

# 失敗例
以下のように `th:each` を使ってインデクスアクセスを書きたくなるが、これは上手くいかない

```html:template.html
<table border="1">
  <!-- bars は配列 -->
  <tr th:each="bar,ix : ${bean.foo.bars}">
    <td th:text="${bean.foo.bar[${ix.index}].barMember}"></td>
  </tr>
</table>
```
# 成功例
以下のように、プリプロセッシング式 __ （アンダースコア２つ）を使うと上手くいく。

```html:template.html
<table border="1">
  <tr th:each="bar,ix : ${bean.foo.bars}">
    <td th:text="${bean.foo.bar[__${ix.index}__].barMember}"></td>
  </tr>
</table>
```
Debian jessie での日本語入力

ibus-mozc に決定。

|| anthy | mozc |
|---|---|---|
| **scim** | 全角入力時に(○-Spaceで)半角空白入力ができない | (無し) |
| **uim**  | Shiftを押しながら入力で英字入力ができない。| 〃 |
| **ibus** | Shiftを押しながら英数入力中にspaceで変換されてしまう。| ○ |
| **fcitx** | Emacs で fcitx が起動しない | 〃 |

ibusはずっと起動しっぱなしで、他のimと使い方が異なる。
On / Off は入力メソッドの方で切り替える。
あとツールバーがない。
そのデメリットとしては、今が何のモードなのかアイコンで分からない。これが一番妥協できる範囲だった。



* 変換キーでIMEオン / 無変換キーでIMEオフ（オン/オフ切り替えは無し）
* X上のEmacsでも使える
* 入力中にIMEオフで入力キャンセル＋IMEオフ
* Shift＋英字で一時的に半角英数モード
    * このときspaceで変換せずに半角空白を挿入
* Shift + Spaceで半角空白

この程度のことができれば不満はなかったんだけど、どうも基本的なキー操作については雑に扱われている感がある。まあオープンソースにありがちだよね。

ibusでもShiftを押しながら英字入力中にSpaceを2回押せば変換になってしまう。スペースニ個出てほしい。など多少は気になる点がある。


Emacs上で使うのはどこかに設定すれば良いんだろうけども…。Emacs上でオフにするやり方は検索で出てくるけど、デフォルトでオフのものをオンにするやり方は分からなかった。


辞書は
https://www.mediafire.com/?cy1mxpjds5l5h
強化辞書とカナ英を追加した。



日本語入力全般に言えることだけど、入力モードって「ひらがな」だけでいいよね。
直接カタカナを入力したい状況はまったく無く、何かの押しミスでカタカナになったりする方が困る。
d-mode開発中

xyzzy+D言語のページがほとんどないか,消えてしまってる...
というわけで,c++-mode.lを参考にxyzzyでD言語を使うためのd-mode.lを書いています(未完成).
※xyzzy+D言語のページやd-mode.l書いてるページがあれば教えてください

#インストール方法
1. [ここから](https://github.com/yjiro0403/xyzzy_for_D)d-mode.lとDをダウンロード
2. xyzzy/lisp(または任意の場所)にd-mode.lをコピー
3. xyzzy/etcにDをコピー(色付けしたいコマンドがあればこのファイルに書けばいいかと)
4. site-init.lとかに以下のコードを記述

```lisp:site-init.l
;Add D-mode
(push "D:/xyzzy/lisp/d-mode" *load-path*)
(load-library "d-mode")
(pushnew '("\\.d$" . d-mode) *auto-mode-alist* :test 'equal)
```

#さいごに
・いらないコードとかいっぱいあるかと...
・xyzzyでemacsのflymakeみたいなことはできないでしょうか？シンタックスエラーなどをxyzzy上で表示するものがほしいのですが...
・ツールバーでプログラムをコンパイルして実行したいな
Product Advertising API Scratchpadを使ってみる

#Product Advertising API Scratchpadを使ってみる
##Product Advertising API Scratchpadについて
Amazon Product Advertising APIのテスト環境として、Product Advertising API Scratchpadというサイトがあります。
[Product Advertising API Scratchpad](http://webservices.amazon.co.jp/scratchpad/index.html)
ここでAPIの実行にどんなパラメータが必要か、どんな値が返ってくるか、どうプログラミングすればよいかなどを知ることができます。
![apaapi_scratchpad.png](https://qiita-image-store.s3.amazonaws.com/0/28966/dcb63c97-6738-3e0f-04a8-a811b0dcd2f8.png)
How-to Guideから日本語のユーザーガイドを見ることができるのでわりと簡単に使えると思います。
今回は画面左の「Select Operation」から「ItemSearch」を試してみます。

##Common parameters
![item_search.png](https://qiita-image-store.s3.amazonaws.com/0/28966/0dc2ec6a-3074-1023-f68e-2291e338f726.png)
テストしたいオペレーションを選択するとパラメータの入力欄が表示されます。「Common parameters」はオペレーション共通のパラメータです。
<dl>
  <dt>Marketplace</dt>
  <dd>ロケールを選択します。通常は日本(webservices.amazon.co.jp)でいいと思います。</dd>
  <dt>Associate Tag</dt>
  <dd>Amazonアソシエイトのタグを入力します。xxxxx-22みたいなやつです。</dd>
  <dt>Access Key ID</dt>
  <dd>Access Key IDを入力します。Access Key IDの取得方法は別記事を参照してください。</dd>
  <dt>Secret Access Key</dt>
  <dd>Secret Access Keyを入力します。Secret Access Keyの取得方法は別記事を参照してください。</dd>
</dl>

##ItemSearch
次にItemSearchの実行に必要なパラメータを入力します。
![item_search_param.png](https://qiita-image-store.s3.amazonaws.com/0/28966/4d834eae-5685-4deb-4d2a-8d1f7dce86ec.png)
赤いアスタリスク(*)がついている項目は入力必須です。今回の場合、SearchIndexが必須です。
SearchIndexには検索するカテゴリ(All、Books、Musicなど)を選択します。
それ以外の項目は任意入力となります。初期状態では「Keywords(検索キーワード)」「ResponseGroup(取得するレスポンスグループ)」「Sort(並び順)」「BrowseNode(ジャンル)」となっていますが、「Add a new parameter」から新しいパラメータを追加することもできます。また、例えばソートはいらないよー、という場合「Sort」の左にあるバツ印を押すとパラメータを削除できます。
パラメータを入力後、右下の「Run request」ボタンを押すとAPIが実行され、レスポンスが返ってきます。
##ResponseとCode snippets
レスポンスは「Response」欄にてXML形式で確認することもできますし、レンダリングした状態で表示することもできます。
「Code snippets」欄ではリクエストを実行するためのソースコードを確認できます(PHP、Java、ROR)。クリップボードにコピーできるので実際にプログラムを動かすことができます。
例えばカテゴリに「Books(本)」を選択し、キーワードに「PHP, MySQL」を入力してAPIを実行すると、以下のようなレスポンスが取得できます。
![response.png](https://qiita-image-store.s3.amazonaws.com/0/28966/62e85112-97d2-32b4-6a4d-137e93ccce84.png)
第1回シェルについて

##まず
第1回です。
私自身も勉強中なので、突っ込み歓迎です。

##シェルとカーネル
カーネルとはOSの中核になる部分、ハードウェア資産を管理している。
シェルはカーネルとアプリケーションの仲介役で、ユーザがカーネルの機能を使うのに必須。
つまりシェルはとても大事な役割をになっている。

##シェルの種類
シェルにも種類がある。

・sh
	Bシェル。デファクトスタンダード。シェルスクリプトはBシェルの文法が使われることがほとんど。
・csh
	Cシェル。C言語をモデルとして設計されている。対話機能はshと違って強い。
・ksh
	Bシェルの上位互換。shの貧弱な対話機能をCシェルの対話機能を参考にBシェルを拡張したもの。
・tcsh
	Cシェルの拡張版。コマンドラインでの編集機能、補完が凄い。
・bash
	Bシェルの上位互換。Linuxでは標準シェル。Linuxでは/bin/shは/bin/bashへのシンボリックリンクになっている。
・zsh
	kshを元にCシェルやbashの機能も含んだシェル。最強だとかなんとか。
	
`echo $SHELL`とやってみるとどのシェルが現在仲介役なっているかわかる。
私はzshを使っています。いいですよzsh。

##シェルの機能

上記で紹介したBシェルやCシェルなどすべてが持っているシェルの基本機能は

- 標準入出力先の切り替え(リダイレクション)
- ある出力結果を別の入力として使う(パイプ)
- ファイルにコマンドを書き、ファイル名を指定することでコマンドとして使う(シェルスクリプト)


Bシェルの上位互換であるbashにはほかにも便利な機能がある。

- 過去に入力したコマンドを表示(ヒストリ機能)
- 既にあるファイルやディレクトリの名前補完(補完機能)
- ワイルドカード
- コマンドの名前を変える(エイリアス)

これらはタイプ量を少なくしたり、コマンドを覚えやすくしたりととても便利な機能。

##次回は
シェルスクリプトの初めの部分、シバンの説明などをする予定
一時的にpaneを非表示にする


参考: [tmux - How do you hide a pane? - Unix & Linux Stack Exchange](http://unix.stackexchange.com/questions/145857/how-do-you-hide-a-pane)

## paneを非表示にする

以下のコマンドを実行

```
:break-pane -dP
```

1:2.0 のような数値が表示されるので記録(session:window.pane)

## paneを表示する

さきほど記録しておいた数値を元に以下のようにコマンドを実行

```
:join-pane -vs 1:2.0
```

上記は上下に分割して表示する場合、左右に分割して表示する場合は `-hs`
RxJava 入門記事スクラップ

# RxJava 入門記事スクラップ

```
※スクラップは現在進行中です
引用記事ですが、著者の明示が間に合っていません。
```

## リアクティブプログラミング
### 日本語
- [2015年に備えて知っておきたいリアクティブアーキテクチャの潮流](http://qiita.com/hirokidaichi/items/9c1d862099c2e12f5b0f)
- [（関数型）リアクティブプログラミングとは何ですか？](http://postd.cc/what-is-functional-reactive-programming/)（翻訳記事）
- [注目を集めるリアクティブプログラミング](http://www.infoq.com/jp/news/2013/09/reactive-programming-emerging)
- [関数型プログラマのための Rx 入門（前編）](http://okapies.hateblo.jp/entry/2015/03/04/031148)
- [関数型プログラマのための Rx 入門（後編）](http://okapies.hateblo.jp/entry/2015/03/15/184247)
- [なぜリアクティブプログラミングは重要か。](http://d.hatena.ne.jp/pokarim/20101226)

### 英語
- [ReactiveX](http://reactivex.io/)
- [Reactive programming - Wikipedia](https://en.wikipedia.org/wiki/Reactive_programming)
- [Functional Reactive Programming with RxJava](https://speakerdeck.com/benjchristensen/functional-reactive-programming-with-rxjava-javaone-2013)
- [Build Your Custom Observable/Operator](https://speakerdeck.com/hkurokawa/operator)
- [How to read "marble diagram"](http://www.slideshare.net/yanzm/how-to-read-marble-diagram)

## RxJava 
### 日本語
- [ReactiveX （リアクティブ エクステンション）に入門した](http://bati11blog.hatenablog.com/entry/2015/04/30/170343)
- [7つのサンプルプログラムで学ぶRxJavaの挙動](http://techlife.cookpad.com/entry/2015/04/13/170000)
- [RxJava学習のベストプラクティスっぽいもの](https://speakerdeck.com/sys1yagi/rxjavaxue-xi-falsehesutohurakuteisutuhoimofalse)
- [明日から使えるRxjava頻出パターン (Droid kaigi 2016)](http://www.slideshare.net/KazukiYoshida/droidkaigi-rxjava)


### 英語
- [Mastering observables - Couchbase Server 3.0/3.1 Developer Guide](http://docs.couchbase.com/developer/java-2.1/observables.html)
 - Couchbase の開発者ガイドにObservableの使い方解説がある
- [Demystifying RxJava Subscribers (Øredev 2015)](https://speakerdeck.com/jakewharton/demystifying-rxjava-subscribers-oredev-2015)
- [Hiroshi Kurokawa: DroidKaigi, Custom Rx Operators and Observables](https://youtu.be/nKc-bPp9hE8)

## 最新情報
### 日本語
- [RxJava Advent Calendar 2015](http://qiita.com/advent-calendar/2015/rxjava)
 - 今年のアドベントカレンダー
【備忘録】future文 ～Python～

# future文について
備忘録程度に。
GoogleのTensorFlowをいじっていく中で、サンプルコードの中の冒頭部に

`from __future__ import absolute_import`
`from __future__ import division`
`from __future__ import print_function`

というものが。
Python初心者なため、調べたところ、
**Pythonはバージョンの更新頻度が高いため、バージョン更新により関数が使えなくなることを防ぐために書いておくと良い**
という感じだった。

なにか会社の人が製品化等することを考えた際に考えた方がいいということかな？

もし違っていたらご指摘ください。
EC2 タイムゾーンを変更してWindows AMIを作成

- EC2ConfigService Settingを起動

- ImageタブのDetailsボタンをクリック

- Current Answer File Locationが表示されるので、Answer Fileをメモ帳等で編集

```xml
<TimeZone>UTC</TimeZone>
```
を

```xml
<TimeZone>Tokyo Standard Time</TimeZone>
```
に変更(2か所)

TimeZoneの指定方法
https://technet.microsoft.com/en-us/library/cc749073%28WS.10%29.aspx

- Shutdown with Sysprep ボタンをクリック

- 停止後、AMIを作成
コンテキストの共有がされていない辛みを職場で放出しない

TL;DR: プライベートな辛みを勝手に職場に持ち込むな！！！！ 空気悪くなるぞ！！！ 愚痴れ！！

---

僕もやってしまいがちなことなんだけど、こういう感じの人って皆さんの職場にいませんか？

- なんか昨日良くないことがあったらしく、機嫌の悪い A さん
  - さっきから態度が悪い
  - さっきから言葉に棘がある
- なんか昨日良くないことがあったらしく、テンション低過ぎな B さん
  - テンション低すぎて反応が薄い
  - ため息つきすぎ

完全に僕の偏見なんですけどプログラマって自分の事を抱え込む人多いですよね。

でも、自分で抱え込むことで職場の雰囲気がどんどん悪くなっていくから最悪です。

さらに悪いことにこれらのことって無意識にやってしまうので、僕もやってしまいがちです。

### 職場の空気は開発効率に直結する

空気悪くするな！！！！！！！！！！！！！！！！！！！！！！！！！！

職場の空気って思いの外、開発効率に影響しませんか？

- なんか質問しにくい...
- レビューの依頼しにくい...

などなどその人と話さなきゃいけないタイミングが発生すると気が重いですよね。

あと、チャットごしでも空気が伝わってきたりして怖い。

こういう時は開発より先にやるべきことがあります。

### 辛いことも共有しよう

僕が思うことなんですけど、辛いことは愚痴って共有するのがいいと思います。

でも愚痴る側にもマナーがあると思うので気をつけています。

「最悪なことあったからチョット聞いてよ」って前置きしてから愚痴って辛みを共有するといいと思います。

思いの外笑い話になったりして、不安や怒りが解消されます。

そんなこんなで気をつけたほうがいいなと自分に言い聞かせています。
ディレクトリがマウントされているかを確認する

例えば自動化スクリプト内でSDカードが正常にマウントされているかのチェックをしたい場合などに使える。

特定のディレクトリがマウント済みであるかを確認するには `mountpoint` コマンドを使えば良い。

```bash
# 通常ディレクトリの場合(マウントされていない)
$ mountpoint /tmp/
/tmp/ is not a mountpoint
$ echo $?
1

# マウントされているディレクトリの場合
$ mountpoint /media/sf_temp/
/media/sf_temp/ is a mountpoint
$ echo $?
0
```

エラーメッセージを抑制したい場合は `-q` オプションを使う

```bash
$ mountpoint -q /media/sf_temp/
$ echo $?
0
```

#　参考
[mountpoint(1) - Linux manual page](http://man7.org/linux/man-pages/man1/mountpoint.1.html)
line monitor > テスト用 > COM > echo server

```
C++ Builder XE4 + 独自拡張
```


line monitorで通信テストをしている中で、ロギングの改行処理がいまいち。

自分が経験したもので行の終端文字列は以下のものがある。

- CR
- LF
- CR + LF
- LF + CR

これら全部にきちんと対応したいと思いつつ、その場合はエコーサーバーを作ってテストしたほうがいいと思い、作った。

なお、下記のコードは独自拡張を使っているので、通常のXE4では動かない、はず。

```Unit1.cpp
void __fastcall TForm1::B_connectClick(TObject *Sender)
{
	if (B_connect->Tag == 0) {
		Com232->PortNo = NE_port->Integer;
		Com232->BitRate = NE_baud->Integer;

		try {
			Com232->PortOpen();
		} catch (...) {
			ShowMessage(L"Com open fail");
			return;
		}
		B_connect->Tag = 1;
		B_connect->Caption = L"Stop";

	} else {
		B_connect->Tag = 0;
		B_connect->Caption = L"Start";
	}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Com232Receive(TObject *Sender, int ReceiveSize)
{
    static char szBuf[100];
    static int pos=0;

    char code;

    for (int i=0; i<ReceiveSize; i++) {
		code = Com232->ReceiveChar();
        switch (code) {
        default:
            if (isprint(code) || code == '\t') {
                szBuf[pos] = code;
                pos++;
            }
            break;
        case '\r':
        case '\n':
			if (pos > 0) {
				szBuf[pos] = '\0';

				Memo1->Lines->Add(String(szBuf));
				procCommand(String(szBuf));
				
				pos = 0;
            }
            break;
        }
	}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::procCommand(String rcvd)
{
	String retStr = rcvd;

	// 1. remove CR / LF / CR+LF
	retStr = StringReplace(retStr, L"\r\n", L"", TReplaceFlags()<<rfReplaceAll);
	retStr = StringReplace(retStr, L"\r", L"", TReplaceFlags()<<rfReplaceAll);
	retStr = StringReplace(retStr, L"\n", L"", TReplaceFlags()<<rfReplaceAll);

	// 2.add CR / LF based on check box
	if (CHK_CR->Checked) {
		retStr = retStr + L"\r";
	}
	if (CHK_LF->Checked) {
		retStr = retStr + L"\n";
	}

	Sleep(NE_delay_msec->Integer);

	Com232->TransString(retStr);
}
```
Nokogiri、Anemoneでスクレイピング（Amazonベストセラー情報）

##Nokogiriとは
gemで提供されているスクレイピングライブラリのこと。

**公式サイト**
http://nokogiri.org/

##Nokogiriインストール
gemでインストールする。
```gem install nokogiri```

##Anemoneとは
クローラーのフレームワークとして開発されたRubyのライブラリです。

##Anemoneインストール
gemでインストールする。
```gem install Anemone```

##rubyスクリプトを作成（サンプル）


```lang:scraping.rb
require 'anemone'
require 'nokogiri'
require 'kconv'

urls = []
urls.push("http://www.amazon.co.jp/gp/bestsellers/kitchen/124048011/ref=sv_k_0")

Anemone.crawl(urls, :depth_limit => 0) do |anemone|
	anemone.on_every_page do |page|

	#文字コードをUTF8に変換したうえで、Nokogiriでパース
	doc = Nokogiri::HTML.parse(page.body.toutf8)

	category = doc.xpath("//*[@id='zg_browseRoot']/ul/li/a").text

	#カテゴリ名の表示
	sub_category = doc.xpath("//*[@id=\"zg_listTitle\"]/span").text
	puts category+"/"+sub_category

	items = doc.xpath("//div[@class=\"zg_itemRow\"]/div[1]/div[2]")
	items += doc.xpath("//div[@class=\"zg_itemRow\"]/div[2]/div[2]")
	items.each{|item|

		# 順位
		puts item.xpath("div[1]/span[1]").text

		# 書名
		puts item.xpath("div[\"zg_title\"]/a").text

		# ASIN
		puts item.xpath("div[\"zg_title\"]/a")
			.attribute("href").text.match(%r{dp/(.+?)/})[1]
		}
	end
end
```

##まとめ
Nokogiri、AnemoneでWebスクレイピングをする際の簡単な流れは以下の通りです。
①スクレイピングするサイトのHTML構造を把握
②Nokogiri、Anemoneをインストール
③rubyスクリプトを作成
④ターミナルで実行
WebGLでミュージックビデオを作ってみた

これは [WebGL Advent Calendar 2015](http://qiita.com/advent-calendar/2015/webgl) の１１日目です。

***

![ライブデモスクリーンショット](https://qiita-image-store.s3.amazonaws.com/0/59191/a538c848-6d17-1a9a-4e78-2d1c760d3dc3.png)

[ライブデモのページ](https://warotarokz.sakura.ne.jp/main/demos/webglac2015/)

連日ハイレベルな技術記事が続いておりますが、ここで単なるミュージックビデオの登場です。
技術的にはいたって普通ですが、頑張ってモデリングしました。

たまにはこういうのもいいよねっ。

ちなみに隠しコマンドで、画面をダブルクリックするとフライトモードになります。
マウス左ドラッグでカメラを回転、WASDで前後左右移動、スペースキー + W または S で上下移動ができます。
フライトモードの終了は右クリックです。 

#開発環境

- 言語 : TypeScript
- 3Dエディタ : Blender (C#でblendファイルをjsonにコンバートして使用)
- デバッグ : Chorome 開発者ツール
- IDE : Visual Studio Community 2015
- 3Dライブラリ : 特になし

#雑談 WebGLらしいとは何か
今回は作り始める前にWebGLらしい記事にしたいと思ったのがきっかけで少し考えました。
最初に思いついたのは、

- ブラウザ（Electronなど含む）で高速に３Ｄ表現ができる
- HTMLと組み合わせることができる
- JavaScriptで書くことができる

WebGLだけでなくその周辺も合わせて考えると、最近はWebGL特有の変化があるように思います。

- ゲームエンジンからのデプロイ先になってきている
- スマホでも動くようになってきた
- GLSLの投稿サイトですごいGLSLが量産されている
- 宣伝用のサイトでかなりWebGLが使われるようになってきた
- WebGLのサンプルプログラムはダウンロードせずにすぐ見られて便利
- 逆にダウンロードが必要なサンプルを面倒くさいと感じるようになった（個人的な感想です）

ここまで挙げてきたことから思うのは、

- WebGLはウェブの可能性を広げている
- 逆にウェブの可能性を広げない形で使ってもWebGLらしくないのではないか（OpenGLになる）
- WebGLは他のウェブ技術と絡めて考えると「らしく」なるかもしれない

ということでした。

**それでもミュージックビデオを作りたかったのでそっちにしましたけどね！**

…落ちは特にないです！

***

明日はawesomeさんですね。
よろしくお願いします！
アニメーションを作るときによく使う公式


アニメーションを作るときによくつかう式をまとめました。というかメモですね。
Game以外でもインタラクティブ表現を考えるときには避けては通れないところです。

Swiftで実装するなら、下記の公式を以前投稿した[SwiftでEnterFrameBeaconを実装](http://qiita.com/s_s_k/items/774d0fe4a7b36ea1f3fb)を利用してアニメーションさせたりできます。


### 力の公式
力 = 質量 x 加速度
$ F = ma $

### 加速度の公式
加速度 = 質量 / 力
$ \displaystyle a = \frac{F}{m} $

加速度は時間の経過速度の変化率でもあります。

$ \displaystyle a = \frac{dv}{dt} $

つまりこちらも成り立ちます。

$ \displaystyle \frac{dv}{dt} = a = \frac{F}{m} $


同様に速度は、時間上の位置の変化率であります

$ \displaystyle v = \frac{dx}{dv} $



# 数値積分法 (Numerical Integration)

現在時刻を$t$
書くステップ感の時間変化を$dt$(delta time)

### オイラー積分

```Swift
var t: Float = 0.0
let dt: Float = 1.0
var velocity: Float = 0.0
var position: Float = 0.0
let force: Float = 10.0
let mass: Float = 1.0
        
position = position + velocity * dt
velocity = velocity + (force / mass ) * dt
t = t + dt
```

基本公式
$ s = ut + 0.5at^2 $
 

### RK4　(ルンゲクッタ 4)

```C++
struct State {
    float x;
    float v;
};


struct Derivative {
    float dx; // dx/dt = velocity
    float dv; // dv/dt = acceleration
};

/**
 
 */
float acceleration(const State &state, float t){
    const float k = 10;
    const float b = 1;
    return -k * state.x - b * state.v;
}

/**
 
 */
Derivative evaluate(const State &initial, float t, float dt, const Derivative &d){
    State state;
    state.x = initial.x + d.dx * dt;
    state.v = initial.v + d.dv * dt;
    
    Derivative output;
    output.dx = state.x;
    output.dv = acceleration(state, t+dt);
    return output;
}

/**
 
 */
void integrate(State &state, float t, float dt){
    Derivative a, b, c, d;
    
    a = evaluate(state, t, dt, Derivative());
    b = evaluate(state, t, dt*0.5f, a);
    c = evaluate(state, t, dt*0.5f, b);
    d = evaluate(state, t, dt, c);
    
    float dxdt = 1.0f / 6.0f * (a.dx + 2.0f*(b.dx + c.dx) + d.dx);
    float dvdt = 1.0f / 6.0f * (a.dv + 2.0f*(b.dv + c.dv) + d.dv);
    
    state.x = state.x + dxdt * dt;
    state.v = state.v + dvdt * dt;
    
}

```
新しい社会構築へ向けての一考察



半年間、CFJさんの活動を拝見して
下記の情報を共有した方が円滑に運営出来ると感じましたので
🔗リンクをアップします

趣旨と異なると判断なされたら
お気軽に削除しちゃってください


【1:日本は「猪木をバカと笑える社会」ではなくなった】
http://zasshi.news.yahoo.co.jp/article?a=20151207-00010004-agora-pol
（ http://agora-web.jp/archives/1662997.html ）


【2:日本型意思決定の構造】
http://zasshi.news.yahoo.co.jp/article?a=20151028-00010002-agora-soci
（ http://agora-web.jp/archives/1659070.html ）
コマンドラインオプションでslice表記


出力結果

```py
$ python untitled.py -sl 100:200,:,:5
(500, 500, 10)
(100, 500, 5)
$ python untitled.py -sl :,100:300:10,4
(500, 500, 10)
(500, 20)
```
以下ソースです．もしかしたら他にいい書き方があるかもしれない

```py
import argparse
import numpy as np

def parse2slice(snapshot):

    def parsesection(snap):
        try:
            section = int(snap)
        except ValueError:
            section = [int(s) if s else None for s in snap.split(':')]
            if len(section) > 3:
                raise ValueError('snapshots input incorrect')
            section = slice(*section)
        return section

    section = [s if s else None for s in snapshot.split(',')] 
    return tuple([parsesection(section[i]) for i in range(len(section))])

parser = argparse.ArgumentParser()
parser.add_argument('-sl', '--slice', type=str,  required=False)
args = parser.parse_args()


arr = np.array([[[0 for k in range(10)] for i in range(500)] for j in range(500)])
print arr.shape
print arr[(parse2slice(args.slice))].shape

```
ISUCON 5のPython実装がBottleを使っていた理由


https://github.com/bottlepy/bottle

以下にあげる観点から検討し、総合的に良さそうだと思ったBottleを選びました。

## Python3に対応している

今回のISUCONではPython3を使いたいと思っていました。

3が出てから何年も経っていますし、主要なライブラリの2/3両対応も進んでいます。

Pythonでは2から3になっても大きく見た目や書き方が変わるようなことはなく、3系を使ったことのない2系のユーザーでも問題なく読めるし書けるという点がありました。

有名どころのフレームワークはPython3に対応していましたので、どれも使えそうでした。

## 依存が標準ライブラリのみ

ISUCONでは短時間で問題を解決する必要があり、出題側としてもそこに集中してもらいたいので、フレームワークの学習コストが低いことが求められます。

Bottleが依存しているのは標準ライブラリだけです。標準ライブラリであれば使い慣れ把握していることが期待できますし、ドキュメントや情報も見つけられます。

もし他のサードパーティのライブラリに依存していると、フレームワークの使い方やオプションを調べたりするのにより時間がかかることになってしまいます。


## 選ばれなかったフレームワーク

### CherryPy

http://cherrypy.org/

- 歴史も知名度もある
- サードパーティへの依存も無さそう
- 開発が継続されている
- ハンドラの書き方はクラスベースだがシンプルに書ける

テンプレートエンジンを持っていないこと、Bottleよりファイル数とサイズが大きかった。

### Flask

http://flask.pocoo.org/

ISUCON 4 ではPython実装で使われていた。

- 知名度が高い
- 日本語の情報も多い
- 開発が継続されている
- ハンドラはSinatra風に簡単に書ける

Blueprintsなど大きめの規模のアプリ向けの機能なども持っており、フレームワークの規模が大きい。

### Tornado

https://github.com/tornadoweb/tornado

- 知名度はそこそこ？
- サードパーティへの依存は少しある
- 開発が継続されている(いまはFacebookが持っている)
- ハンドラの書き方はクラスベースだがシンプルに書ける

個人的には好きなフレームワーク。

非同期IOをサポートしているので、ISUCONのような大量にベンチマーカーがアクセスしてくる用途には向いているかもしれない。ただ非同期IOをシングルスレッドで効率よく処理するようになっており癖もあるので、参加者が混乱するとよくないと思い採用しなかった。

たぶん決勝の問題をPythonでやるときはTornadoに置き換えると強い。

### Falcon

http://falconframework.org/

速度が売り文句らしい。

規模が大きめだった。

### Django

https://www.djangoproject.com/

さすがに重すぎだと思った。


### Pyramid

http://www.pylonsproject.org/

何となくISUCONにはマッチしなそうだと思った。
El Capitanにしてruby-oci8が使えなくなった時の治し方


遅ればせながらMacをEl Capitanにアップデートしたらruby-oci8をgem installするときにこけるようになった。

どうやらセキュリティ周りの関係で適切なlibを参照できなくなったらしい。

ので、公式のgithubを参照して以下を実行
[https://github.com/kubo/ruby-oci8/issues/89](https://github.com/kubo/ruby-oci8/issues/89)

```
$ cd /opt/instantclient_11_2     # インスタンスクライアントのインストール先
$ curl -O https://raw.githubusercontent.com/kubo/fix_oralib_osx/master/fix_oralib.rb
$ ruby fix_oralib.rb
$ cd                             # changed to other directory
$ git clone --depth=1 https://github.com/kubo/ruby-oci8.git
$ cd ruby-oci8
$ gem build ruby-oci8.gemspec    # create a gem file
$ export OCI_DIR=/opt/instantclient_11_2 # set the instant client location
$ gem install ./ruby-oci8-2.2.0.gem
```

無事に直りました。
【CakePHP】コントローラー内のViewをすべて取得する

**ページ一覧**みたいなページが必要になって、データベース使うほどのことでもなかったのでメモ。
Viewというより、Controllerに書いてあるメソッド一覧かな。だから`die()`とかしてあっても表示される。

```php:***Controller.php
$method = get_class_methods($this);
foreach ($method as $key => $value) {
	if($value == '__construct') {
		break;
	}
	if($value != 'beforeFilter') {
		$methods[] = $value;
	}
}
$this->set(compact($methods));
```
これを好きなメソッドにいれて、

```php:View/***.php
foreach($methods as $value) {
	echo '<a href="/Controller/' . $value . '">' . $value . '</a><br>';
}
```
Viewをこんな感じにすればおｋ。
title_for_layoutとかも取得したかったけど見た感じめんどくさそうだからやめといた。
VirtualEnv環境でmatplotlibなどがimportできない

## 環境

- Python 3.4.3(Pyenvにて)
- ipython==4.0.1
- matplotlib==1.5.0
- notebook==4.0.6

2015年12月11日現在最新版がはいってるということ 

## エラー内容

> Traceback (most recent call last):
>  File "<stdin>", line 1, in <module>
  File "/Users/user/graph/lib/python3.4/site-packages/matplotlib/__init__.py", line 1131, in <module>
    rcParams = rc_params()
  File "/Users/user/graph/lib/python3.4/site-packages/matplotlib/__init__.py", line 975, in rc_params
    return rc_params_from_file(fname, fail_on_error)
  File "/Users/user/graph/lib/python3.4/site-packages/matplotlib/__init__.py", line 1100, in rc_params_from_file
    config_from_file = _rc_params_in_file(fname, fail_on_error)
  File "/Users/user/graph/lib/python3.4/site-packages/matplotlib/__init__.py", line 1018, in _rc_params_in_file
    with _open_file_or_url(fname) as fd:
  File "/Users/user/.pyenv/versions/3.4.3/lib/python3.4/contextlib.py", line 59, in __enter__
    return next(self.gen)
  File "/Users/user/graph/lib/python3.4/site-packages/matplotlib/__init__.py", line 1000, in _open_file_or_url
    encoding = locale.getdefaultlocale()[1]
  File "/Users/user/graph/lib/python3.4/locale.py", line 556, in getdefaultlocale
    return _parse_localename(localename)
  File "/Users/user/graph/lib/python3.4/locale.py", line 484, in _parse_localename
    raise ValueError('unknown locale: %s' % localename)
ValueError: unknown locale: UTF-8

要は`locale: UTF-8`

## locale設定

### export

```bash
(graph)pc-name:graph user$ export LC_ALL='ja_JP.UTF-8'
```

### 確認

```bash
(graph)pc-name:graph user$ locale
LANG=
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL="ja_JP.UTF-8"     # こいつ
```

## 再度importできるか

```pycon
>>> import matplotlib.pyplot
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/user/.pyenv/versions/3.4.3/lib/python3.4/site-packages/matplotlib/pyplot.py", line 114, in <module>
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File "/Users/user/.pyenv/versions/3.4.3/lib/python3.4/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup
    globals(),locals(),[backend_name],0)
  File "/Users/user/.pyenv/versions/3.4.3/lib/python3.4/site-packages/matplotlib/backends/backend_macosx.py", line 24, in <module>
    from matplotlib.backends import _macosx
RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are Working with Matplotlib in a virtual enviroment see 'Working with Matplotlib in Virtual environments' in the Matplotlib FAQ
```

まだなんかでる...

## ~/.matplotlib/matplotlibrcを作成

`backend : TkAgg`

を追加

## 別解

また、 @aion さんからご指摘をいただき以下でもこのエラーへの対策ができるそうです！
@aion さんありがとうございます:muscle:

```python
import matplotlib
matplotlib.use('TkAgg')
```
Python Webフレームワーク Django vs Pyramid vs Flask 2015年12月

PythonのWebフレームワークで間違った選択をすることは非常に困難であると、Pyramidの[introductionページ](http://docs.pylonsproject.jp/projects/pyramid-doc-ja/en/latest/narr/introduction.html#what-makes-pyramid-unique)に記載されています。調査した結果まったくもってその通りだという結論に至りました。2015年12月に個人でWebサイトを構築する時に、どのWebフレームワークで構築するかで迷いに迷いました。この記事はそのときの検討メモです。

# 速度
みんな大好き[TechEmpower Web Framework Benchmarks](https://www.techempower.com/benchmarks/)で速度比較。サーバ費用をケチって運用費をとにかく下げたいので、その時点で重大長厚なdjangoは検討対象から外れました。bottleはやはり早い。

![スクリーンショット 2015-12-11 12.01.04.png](https://qiita-image-store.s3.amazonaws.com/0/65312/fb50ea00-8d23-c795-11d7-e91573d459a1.png)

# Webフレームワーク Yes/Noチャート
Yes/Noチャートにまとめてみました。ログイン機能は構築しないためSessionは必要ありません。シンプルで学習コストが低く高速に動作するFlaskで構築することにしました。

![スクリーンショット 2015-12-11 11.28.40.png](https://qiita-image-store.s3.amazonaws.com/0/65312/c068a4bc-d9d7-73cf-5325-1f4e6ae8356c.png)


# その他検討事項
検討したけど選択に寄与しなかった情報。PythonのWebフレームワークで間違った選択をすることは、やはり難しい

## Python3対応
どのフレームワークも3系で動作します。

## 本番でのサーバ構築
Python + nginx + uWsgi + WebFrameworkで、どのフレームワークも動作します。
速度だけを考えるとWebサーバにTornadoを利用するとよいらしいです。(未検証)

## O/Rマッパー
|Webフレームワーク  |O/Rマッパー  |
|---|---|
|Django  |独自ORM  |
|Pyramid  |SQLAlchemy  |
|Flask  |SQLAlchemyをサポート  |

# 参考
[Choosing a Web Framework: Django, Flask, or Pyramid](https://news.ycombinator.com/item?id=8421493)
[便利で超強力なWSGIサーバー uWSGI を使ってみようAdd Star](http://d.hatena.ne.jp/m-hiyama/20120312/1331513519)
IDCFのテンプレートから作成した仮想マシンがmackerelで二重Hostsされた話

諸々のインストールを済ませ、テンプレートを作成した後に起こったお話。

テンプレートをベースに仮想マシンを２台立ち上げました。
それぞれ、追加の設定などを終わらせて、agentを起動させたのです。

```sh:sh
$ chkconfig mackerel-agent on
$ service mackerel-agent start
$ Starting mackerel-agent:                                   [  OK  ]
```

うん、正常に起動しました！

mackerelの管理画面からHostsを確認すると、確かにリストされています。
同様の手順で２台目以降も設定し、mackerel-agentを起動します。

が、しかし working 状態のホストが１台しか見当たりません。

これはどうしたことだと調査を始めて、まず設定ファイルを見なおしてみます。

```vim:/etc/mackerel-agent/mackerel-agent.conf
# root = "/var/lib/mackerel-agent"
```

なにかありました。

mackerelでは基本的にapikey以外接続情報を書くことがないので、ホストの判定をここでやってるんだろうなとアタリをつけて `ls` してみるとなにやら怪しいファイルが。

```sh:sh
$ ls /var/lib/mackerel-agent
id

$ cat /var/lib/mackerel-agent/id
(英数字の文字列)
```

そこで該当ファイルをググってみたところ、 [mackerel-agent仕様](http://help-ja.mackerel.io/entry/spec/agent) で見つけた以下の記述です。

> **エージェントはどうやってホストを判別していますか?**
> /var/lib/mackerel-agent/id にホストIDが保存されており、このIDでどのホストか判別します。ホスト名は判別に利用されません。（設定ファイルは起動オプションでrootを変更している場合、そのroot以下にidファイルが作成されます。)

> **エージェントが起動しません**
> /var/lib/mackerel-agent/id に正しくないIDが保存されている場合、正しく起動しません。/var/lib/mackerel-agent/id を削除してから起動してみてください。（新規ホストとして認識されます）（設定ファイルは起動オプションでrootを変更している場合、そのroot以下にidファイルが作成されます。)

試しに削除してみました。

```sh:sh
$ service mackerel-agent stop
mackerel-agent を停止中:                                   [  OK  ]

$ rm /var/lib/mackerel-agent/id

$ service mackerel-agent start
$ Starting mackerel-agent:                                   [  OK  ]

$ ls /var/lib/mackerel-agent
id

# 自動的に新規作成されている！！
```

この状態でmackerelの監視を確認すると、２台目のホストが登録されており、正常にデータ取得できるようになっていました。
テンプレートを作成する際はmackerel-agentを含めないか、このあたりの情報を予め削除してから作成するのがベストですね。

めでたしめでたし。
PostgreSQL の各テーブルを丸ごと CSV,YAML,JSON 化してしまう


エラー処理、大規模のものについての対応は特にしていません。
あまり綺麗ではない。
とりあえず、開発準備用

``` pg_export.rb

require 'csv'
require 'pg'
require 'uri'
require "json"
require "yaml"

# PostgreSQL の指定DB,テーブルを全てCSV,YAML,JSON化する。
# 全てのフィールドを文字列として、改行コードは\r\nに変換して出力する

# こちらに DB, テーブル を指定する
db_attrs = {
  'dbname' => [
    "tblname",
    "tblname2",
    ],
}

def puts_db_csv(f,db_name,table_name)
  # Output a table of current connections to the DB
  conn = PG.connect( dbname: db_name )
  conn.exec( "SELECT * FROM #{table_name}" ) do |result|
    result.each_with_index do |row, i|
      # 1行目の前にキー列を出力しておく
      if i == 0
        k_arr = []
        row.each do |k,v|
          k_arr << k.inspect
        end
        f.puts k_arr.join(",")
      end

      row_arr = []
      row.each do |k,v|
        v ||= ""
        v_enc = v.inspect
        row_arr << v_enc
      end
      f.puts row_arr.join(",")
    end
  end
end

def puts_db_json(f,db_name,table_name)
  conn = PG.connect( dbname: db_name )
  conn.exec( "SELECT * FROM #{table_name}" ) do |result|
    results = []
    result.each_with_index do |row, i|
      results.push(row)
    end

    f.puts JSON.pretty_generate(results)
  end
end

def puts_db_yml(f,db_name,table_name)
  conn = PG.connect( dbname: db_name )
  conn.exec( "SELECT * FROM #{table_name}" ) do |result|
    results = []
    result.each_with_index do |row, i|
      results.push(row)
    end

    f.puts YAML.dump(results)
  end
end

def export_db_format(format, db_name,table_name)
  output_file_name = "#{db_name}_#{table_name}.#{format.to_s}"
  open(output_file_name,"wt") do |f|
    func_name = "puts_db_#{format.to_s}"
    send(func_name, f, db_name, table_name)
  end
end

# 3formatまとめて出力
db_attrs.each do |db_name, table_names|
  table_names.each do |table_name|
    export_db_format(:csv, db_name, table_name)
    export_db_format(:json, db_name, table_name)
    export_db_format(:yml, db_name, table_name)
  end
end

```
PHP リダイレクトの初心者メモ

```php
header('Location: http://www.example.com/');
```
これね

軽くしか調べてないけど


```php
http_redirect('http://www.example.com/');
```

だとなぜか動かないし、さらっと見る分には日本語の資料が少なくてようわからん(リダイレクトの知識もないし)。
Canon MF 4680 Linux Driver [Canon UFR II Printer Driver]

#結論
日本のキヤノン公式では配布してません。
シンガポールキヤノンは配布していました。
お・も・て・な・し...?

#Canon MF 4680のドライバを探してみる
**canon.jp**のwebから探してみたのですが...

![canonjp2.png](https://qiita-image-store.s3.amazonaws.com/0/71525/734830d4-c98e-d2a0-f493-c1c5aa3b9e36.png)


スモールオフィス向け複合機【Satera MULTI FUNCTION PRINTER】：MF4680：OSを選ぶ

Windows / Windows Server / Mac OS

**申し訳ございませんが、上記以外のOSに対応するドライバー／ソフトウエアは提供しておりません。**

**申し訳ございませんが提供しておりません。**( ﾟдﾟ )
**申し訳ございませんが提供しておりません。**( ﾟдﾟ )
**申し訳ございませんが提供しておりません。**( ﾟдﾟ )
###( ﾟдﾟ ) 経費節約ですか?

#諦めて先生に聞いてみた

[You can get the linux drivers for MF 4680 model at the www.canon.com.sg site. ](http://forums.openprinting.org/read.php?25,4964)

シンガポールでは提供してるらしい！

![MF4680.png](https://qiita-image-store.s3.amazonaws.com/0/71525/2f262535-319f-138d-beaf-5a67b84fbaaf.png)

![Screenshot2.png](https://qiita-image-store.s3.amazonaws.com/0/71525/5632a100-2cca-27b8-77ea-c2d0fac83a02.png)

#ドライバのインストール
$ sudo ./install.sh

READMEにはCentOS 5.3 32-bit/64-bitとかかれてましたが
CentOS6.7で印刷できました。

他には
Turbo,MIRACLE,Red Hat,Mandriva,SUSE,Novell,Fedora,Ubuntu,Debian,Vineなど



#cupsでプリンタ追加
http://localhost:631

![Screenshot3.png](https://qiita-image-store.s3.amazonaws.com/0/71525/b63a46ce-3f72-ee6b-5682-5d54895999ee.png)


#おまけ
[Linux 対応状況 （レーザビームプリンタ）](http://cweb.canon.jp/e-support/faq/answer/lbp/27987-1.html)
Reactを始めてから今までにお世話になった記事

ReactAdventCalendarの２，３，８日を埋めたらカレンダーが全て埋まるので頑張ってるしょっさんです。

今回はReactを始めてから今までにお世話になった記事を紹介していきます。
これからReactを始める方の何かご参考になれば嬉しいです。
（ 勿論ですがまず最初に公式のチュートリアルをやりましょう:-) ）

## [30分間React入門「いいねボタン」作成チュートリアル](http://c16e.com/1510161700/)

とりあえず手っ取り早くReactで何か動かしたい！って人にうってつけの記事です。
結構日本語でのReactを使ったアプリ作成チュートリアルって貴重なので、Reactの公式チュートリアルが終わった人は次にこっちをやってみるのもいいかもしれません。

## [React でマテリアルデザインを実装する Material UI を試してみる](http://syonx.hatenablog.com/entry/2015/03/29/171528)

Reactでのデザイン面をどうしようかな・・・と考えてた時に出会った記事です。
デザインではReact-Bootstrapも候補にあったのですが、できれば別の面白いものを使いたいなーとこちらの記事を参考にMaterialUIを試しました。

説明はザッと書いてあるだけですが、ヒントとなるリンクが豊富に貼ってありますので、それらを追っていけば実装できるはずです。

## [ReactとCSS](http://blog.sasaplus1.com/2015/05/11/01/)

こちらもデザインのお話ですね。
Reactで書く場合、CSSの扱いはどうしているんだろうと気になって調べた時に出会いました。
__CSS in JS__という概念と出会えるきっかけになった記事でもあります。

__CSS in JS__についてkoba04さんの書かれた[React.js + CSS](http://qiita.com/koba04/items/0e81a04262e1158dbbe4)の記事でも触れられています。
ものすごく簡単に説明すると「CSSもJavaScript上で書いちゃおうぜ！」って感じの概念です。

## [koba04](http://qiita.com/koba04)さんの記事

僕はkoba04さんの記事がなければ、多分ここまでReactの習熟を進めることが出来なかっただろうと思うくらい素晴らしい記事ばかりです。
日本語でReactのことを調べると多分大体koba04さんの記事がひっかかります。
是非とも全てのReactに関する記事を見てみましょう。
何か発見があるはずです。

## [Awesome React](https://github.com/enaqx/awesome-react)

GithubにあるReactについての参考になる記事や、Reactのライブラリなどをまとめたリポジトリです。
英語記事の大概はここに詰まってる感じですね。
かなりの量があるので、暇な時に覗いてると面白い発見があったりしますね:-)

---

__[追記]__
Awesome Reactを改めて確認したところPullRequestが溜まっていたり、既に廃止になったプロジェクトへのリンクが存在していたりとメンテナンスされてない様子でしたので、私の方で新しく作成いたしました。
[syossan27/awesome-react-me](https://github.com/syossan27/awesome-react-me)

日本語の記事など追加していけたらなと思っております。
PullRequestを送っていただいてもよろしいので宜しくお願いいたします。

---

以上、こんな感じの記事にお世話になってきました。
勿論、最近のReact人気で様々な良記事が増えてきていますのでどんどん漁っていきましょう！

あと、記事ではないですがReactチュートリアル終わったばかりの人には[入門 React](http://www.amazon.co.jp/%E5%85%A5%E9%96%80-React-%E2%80%95%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AEWeb%E3%83%95%E3%83%AD%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%83%89%E9%96%8B%E7%99%BA-Frankie-Bagnardi/dp/4873117194/ref=sr_1_1?ie=UTF8&qid=1449802721&sr=8-1&keywords=react%E5%85%A5%E9%96%80)がオススメです！
Railsでslimを使う方法


Gemfileに`slim-rails`を記述。

```
gem 'slim-rails'
```

```
bundle install

・・・
Using slim 3.0.6
Using slim-rails 3.0.1
・・・
```

インストールされましたね。
これであとは `aaaaa.html.slim` というファイル名にすればslimを読み込んでくれます。
ただし、`aaaaa.html.erb` というファイルがあった場合、 `erb` の方が読み込まれるので注意。
同名の `.html.erb` ファイルがある場合は削除しとくこと。
CompassでDevKitダウンロードしろよっていうエラーが出たので、その対策

compassをwindowsにぶち込もうと思ったらエラーがでた
![スクリーンショット (2).png](https://qiita-image-store.s3.amazonaws.com/0/32982/87322068-a313-0491-319f-2a82de4016ca.png)

DevKitを入れろってことだったので、入れてみた

```:bash

git clone https://github.com/oneclick/rubyinstaller/wiki/Development-Kit

```

`cd /c/Users/yourname`
cdコマンドでC:\DevKitに移動する

```:bash

ruby dk.rb init
ruby dk.rb install

```

ruby dk.rb initとruby dk.rb installの実行結果以下
![スクリーンショット (1).png](https://qiita-image-store.s3.amazonaws.com/0/32982/50c249e3-d88b-5cdc-bf0c-55d0bb8b8aa5.png)

![スクリーンショット (1) - コピー.png](https://qiita-image-store.s3.amazonaws.com/0/32982/4ae828bc-c82d-869c-5dcc-300c46887afa.png)

うまくいった
![スクリーンショット (3).png](https://qiita-image-store.s3.amazonaws.com/0/32982/6fdcb7d6-cd68-80df-8b47-387826bbf9a0.png)
GitLabのイベント通知を受け取るChrome拡張


## chrome拡張をインストール

以下からインストール

[GitLab Notifier for Google Chrome™ - Chrome ウェブストア](https://chrome.google.com/webstore/detail/gitlab-notifier-for-googl/eageapgbnjicdjjihgclpclilenjbobi)

## 設定

追加されたアイコンを右クリック、「オプション」を開き以下の項目を設定して Save

|設定項目         |設定値                  |
|----------------|-----------------------|
|GitLab Path     |http://サーバ名/        |
|GitLab API Path |http://サーバ名/api/v4/　[^1]　|
|Private token   |GitLabの Profile - Account settings のページ参照|

[Refresh Repository List] ボタンを押してリポジトリ名が表示されたら設定完了。

[^1]: URLの`v4`の部分はGitLabのバージョンに応じて変更が必要な場合があります。