OmniAICreator/Qiita-1.07M huggingface dataset:
c++ builder XE4, 10.2 Tokyo > TeeChart > 一度描画したシリーズのうち一部を取り除いて描画する実装


```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
```

TeeChartにて描画した折れ線グラフにおいて、ある範囲だけ線を切りたいことがある。

そのための実装

```Unit1.cpp
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include <DateUtils.hpp>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
	Chart1->Series[0]->XValues->DateTime = true;
	Chart1->BottomAxis->DateTimeFormat = L"nn:ss";

	TDateTime dt;

	dt = Now();

	double yval;
	for (int idx=0; idx < 10; idx++) {
		yval = (1+ idx) % 2;
		Series1->AddXY(dt, yval, "", clRed);
		dt = IncSecond(dt, 1);
	}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::breakLine()
{
	double xvals[2000];
	double yvals[2000];

	Series1->TreatNulls = tnDontPaint;

	int serCnt = Series1->Count();
	for(int sidx = 0; sidx < serCnt; sidx++) { // sidx: series index
		xvals[sidx] = Series1->XValue[sidx];
		yvals[sidx] = Series1->YValue[sidx];
	}

	Series1->Clear();

	for(int sidx = 0; sidx < serCnt; sidx++) { // sidx: series index
		if (sidx >= 3 && sidx < 5) {
			Series1->AddNullXY(xvals[sidx], yvals[sidx]);
			continue;
		}
		Series1->AddXY(xvals[sidx], yvals[sidx]);
	}
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
	breakLine();
}
//---------------------------------------------------------------------------
```

`breakLine()`において条件`if (sidx >= 3 && sidx < 5) {`により線を切るようにしている。


## 結果

### 切る前

![qiita.png](https://qiita-image-store.s3.amazonaws.com/0/32870/84f862eb-279e-35c7-6566-d12a1612d9fd.png)

### 切った後

![qiita.png](https://qiita-image-store.s3.amazonaws.com/0/32870/24004afd-aa6b-906d-1127-d35e34bc84df.png)


## 補足

基本的にはAddXY()する処理すべてにAddNullXY()関連の処理を実装すればいいが、それが色々な機能で使われているときに、個々のAddXY()にそれぞれ実装するのはメンテの点からまずい。

ふと、「一度描画したグラフを線を切って再描画すればいいのでは」と思い、この実装を試した。

double[]を使っているが、このあたりはSTLのvectorなりlistなりを使う方がいいかもしれない。
ローカル環境でのredis-serverの起動と停止

メモ的な感じで書きます。

## Redisの起動
```:起動
$redis-server &
```

## Redisの停止
```:停止
$redis-cli shutdown
```

これで

```:terminal
ps aux | grep redis
```

とかやってもプロセスはいませんでした。
python の 四則演算

何度も調べているので、メモ

a%b：余り
a//b：商（切り捨て）
math.ceil(a/b)：切り上げ

参考：
http://www.ican.zaq.ne.jp/rogmic/python_tips/floorCeil.html
http://www.pythonweb.jp/tutorial/num/index2.html
【JavaScript】让你的网站支持简体繁体切换


具体实现：

1. 首先，点击这里右键另存下载简繁字体切换所需的tw_cn.js文件，上传到自己的网站空间。
2. 其次，修改模板，在你想要显示简繁转换按钮的地方加上下面一段代码，正常情况添加到header.php或者siderbar.php就可以了。

```
<a id="translateLink" href="javascript:translatePage();">繁體</a>
最后，在footer.php添加下面代码，记得更改cookieDomain这一项。
```

```
<script type="text/javascript" src="http://achillessatan.github.io/js/tw_cn.js"></script>
<script type="text/javascript">
  var defaultEncoding = 2; //网站编写字体是否繁体，1-繁体，2-简体
  var translateDelay = 0; //延迟时间,若不在前, 要设定延迟翻译时间, 如100表示100ms,默认为0
  var cookieDomain = "http://achillessatan.github.io/"; //Cookie地址, 一定要设定, 通常为你的网址
  var msgToTraditionalChinese = "繁體"; //此处可以更改为你想要显示的文字
  var msgToSimplifiedChinese = "简体"; //同上，但两处均不建议更改
  var translateButtonId = "translateLink"; //默认互换id
  translateInitilization();
</script>
```

这就基本完成了简体繁体切换功能,不管你是hexo，jelly，Octopress等静态博客，还是wordpress，typecho，emlog，Z-Blog等动态的，都可以用上。具体的演示效果可以点击我博客底部简体中文切换字体,至于简体繁体切换按钮嘛，文字和样式可以按个人喜好自行更改。

原文地址： http://www.arao.me/2015/hexo-support-jian-fan-language/
【個人的備忘録】エクセル　秒表示　→　時刻表示

【例】
変換元
※セルはA1とする
73.666(秒)

変換先
00:01:13.666


【やり方】
・変換先のセル(B1とする)に下記式を入力
　=A1/(24*60*60)

・B1の書式をユーザ定義で
 hh:mm:ss.000


以上！
nRF51 シリーズリファレンスマニュアル　（翻訳中）

#nRF51 シリーズ　リファレンスマニュアル

##概要
Nordic Semiconductor 製 BLE SoC、nRF51シリーズのリファレンスマニュアル [nRF51 Series Reference Manual Version 3.0](https://www.nordicsemi.com/eng/Products/Bluetooth-Smart-Bluetooth-low-energy/nRF51822) の私家翻訳を進めています。
現在作業途中で、必要な個所から随時翻訳しています。

GitHub 上で以下のアドレス公開しています。

https://github.com/EsseiK/nRF51SeriesReferenceManual3.0_J
・nRF51シリーズ リファレンスマニュアル（翻訳）.docx

をダウンロードしてください。

翻訳の公開をご了承いただきました Nordic Semiconductor ASA に感謝いたします。

##お願い
もし、未翻訳の箇所を翻訳された場合、また、誤訳の訂正や、表現の修正等ありましたら、プルリクエスト頂く、もしくは本記事にコメントいただければ幸いです。

##注意事項
+ 本翻訳は Nordic Semiconductor の公式のものではありません。
+ 本翻訳の内容の正確性は保証致しません。
jQuery Ui slider

サイトページにてスライダーを実装してみたので備忘録をしておく
2016/06/09 ソース変更
# 欲しかった機能
- ブラウザやデバイス(タッチデバイスやPC)が違ってもなるべく同じ表示になること。
- 動作をタッチデバイスに対応できること。
- スライダーとは別にプラススイッチやマイナススイッチを設けてバーを直接操作しなくてもバーの位置を変えられること。
- スライドバーの位置によって自動的に色を変更すること　例:0ならグレー、1なら緑、50なら黄色、100なら赤色とグラデーションしていく
- 現在の値をバーの中に出す

# 使用したもの
- jQuery　ベース
- jQuery UI　これまたベース
- jQuery UI Touch Punch　スマフォなどで操作をできるようにする
- font-awesome アイコン

# ソース

```html:Head
 <head>
  <title>スライダー</title>
  <meta charset="UTF-8">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
  <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui-touch-punch/0.2.3/jquery.ui.touch-punch.min.js"></script>
</head>

```
```html:Body
<body>
    <div id="volume--plus">
        <i class="fa fa-volume-up fa-2x" aria-hidden="true"></i>
    </div>
    <div id="volume" class="bar"><label id="volumelabel"></label>
        <input type="hidden" id="volumevalue" value="70">
    </div>
    <div id="volume--minus">
        <i class="fa fa-volume-down fa-2x" aria-hidden="true"></i>
    </div>
</body>
```

```html:Script
<script type="text/javascript">
    function handleColorChange(event, ui) {
        var now = ui.value;
        var color;
        $('.ui-slider-handle').css("box-shadow", "0px 0px");
        if (now <= 50) {
            color =(Math.floor((now) * (230 / 90)).toString(16)).slice(2 * -1);
            color = '#' + color + 'FF00';
            if (now === 0) {
                color = "#777777";
            }
        } else if (now > 50) {
            color =(Math.floor((100 - now) * (230 / (100 - 50))).toString(16)).slice(2 * -1);
            color = '#FF' + color + '00';
        }
        $('.ui-slider-handle').css('background', color);
    }
    $("#volume").slider({
        max: 100,
        min: 0,
        value: 50,
        step: 1,
        orientation: "vertical",
        slide: function (event, ui) {
            handleColorChange(event, ui);
            $('.ui-slider-handle').html('<label class="levelVolume">' + ui.value + '</label>');
        },
        change: function (event, ui) {
            $("#volumevalue").val(ui.value);
            nowTitle = 1;
            handleColorChange(event, ui);
            $('.ui-slider-handle').html('<label class="levelVolume">' + ui.value + '</label>');
            $('#volume .ui-slider-handle').css("box-shadow", "2px 2px");
        }
    });
    $("#volume--plus").click(function () {
        var vol = parseInt($("#volumevalue").val());
        vol = (vol + 1).toString();
        $("#volume").slider("value", vol);
    });
    $("#volume--minus").click(function () {
        var vol = parseInt($("#volumevalue").val());
        vol = (vol - 1).toString();
        $("#volume").slider("value", vol);
    });

    $(function () {
       $("#volume").slider("value", 50);
   });
</script>
```
MacをAirPrintサーバ化、プリンタ選択からMacにPDF出力できるようにする

iPhoneから文書を印刷させるアプリを作成しようとしたのですが、会社のプリンタがAirPrintに対応していなかったので、VMWare環境のWindows8.1をAirPrintサーバ化したのですが、不安定だったのでMacをサーバにしました。
サーバ化したあとは印刷できるようになったのですが、毎回印刷するのもコストもかかるので、MacにPDF出力できるようにしました。

環境は、OSX 10.11.3


１．[VipRiser](https://onflapp.wordpress.com/vipriser/)インストール

２．[handyPrint+v5.2.0.dmg](http://www.netputing.com/applications/handyprint-v5/)インストール

３．システム環境設定＞プリンタとスキャナ
プリンタに、Print to VipRiserが登録されているので、消す。
追加で、Print to VipRiserを登録する。

４．handyPrint起動させる


これで、MacにPDF出力できました。
iPhoneのSafariで共有からプリンタ選択で、Print To VipRiserが選択できます。
プリントをタップすると、自動でVipRiserが起動して、~/DesktopにPDFが出力されました。
はじめてのDeepLearning入門(Chainer) 日本語文字認識 1章[環境構築]

こんにちはリヒトです。
[環境研究所](http://naturecode.ddo.jp/home/)で販売されている**日本語文字認識データセット**を入手したので、データセットを活用したDeepLearning初学者のためのチュートリアルを公開します。
日本語の文字認識エンジンの開発にトライします。

以下の画像を見てもわかる様に、ゲシュタルト崩壊請け合いなチュートリアルですが、めげずに頑張っていきたいと思います。
<img width="318" alt="rihito.png" src="https://qiita-image-store.s3.amazonaws.com/0/110732/98cc868a-e762-73b1-4a61-6cacd52d6322.png">


なおこの記事は
・DeepLearningをはじめたい！
・mnistの数字認識以外のチュートリアルをやりたい！
・DeepLearning関連技術について学びたい！
・自分で日本語OCRの開発をしたい！

という方々に向けて書いています。
以下のアウトラインで説明します。

|章|タイトル|
|:----|:--------------------------------------------------------|
|1章  |[chainerをベースにしたDeepLearning環境の構築](http://qiita.com/LichtLabo/items/94063ee9d66263d1911a)|
|2章  |[機械学習によるDeepLearning予測モデルの作成](http://qiita.com/LichtLabo/items/d78b50bbf0826b8f599a)|
|3章  |[モデルを利用した文字認識](http://qiita.com/LichtLabo/items/c987cd93928ab70f46e1)|
|4章  |[データ拡大による認識精度の改善](http://qiita.com/LichtLabo/items/c4b33432a46cb7dd6b7d)|
|5章|ニューラルネット入門とソースコードの解説|
|6章|Optimizerの選択による学習効率の改善|
|7章|TTA, BatchNormalizationによる学習効率の改善|

DeepLearningは完全に初めて、という方はとにかく動く物を見て欲しいので4章目までトライして下さい。
5章以下はDeepLearningについてもう一歩詳しく知りたいという人向けです。

#はじめに

####なぜchainer？
**chainerは国産OSS**です。何より使いやすいし、理解しやすいしGoogle Groupでchainerに関する質問をしてもすぐに無料でレスポンスしてくれるなど最高。

###環境
本編はMacを前提にお話しますが、随時Windowsに合わせてそれぞれ説明（違いは環境準備だけですが）します。
・マシンスペック：メモリ4GB以上
・Python2.7系, pipがインストールされていること

####環境準備(Mac)
ターミナルで

```
sudo pip install chainer
```

を入力し、chainer1.6.0, filelock2.0.5, nose1.3.7, numpy1.10.4, protobuf2.6.1を一括インストールします。

```
sudo pip install scipy
```

を入力し、scipy0.17.0をインストールします。

また[こちらの記事](http://qiita.com/ru_pe129/items/f065f79b1322a82edb1d)を参考にOpencv2.4.X系をインストールして下さい。

####環境準備(Windows)
コマンドプロンプトで

```
pip install chainer
```

を入力し、chainer1.6.0, filelock2.0.5, nose1.3.7, numpy1.10.4, protobuf2.6.1を一括インストールします。

```
pip install scipy
```

を入力し、scipy0.17.0をインストールします。必要に応じてコマンドプロンプトを管理者モードで起動してください。
また[こちらの記事](http://qiita.com/konta220/items/0dc935187ae259c6c7da)を参考にOpencv2.4.X系をインストールして下さい。

####データの準備(Mac, Windows)
[環境研のウェブサイト](http://naturecode.ddo.jp/home/)から平仮名データセットを購入(1000円)してダウンロードします。
デスクトップに"HIRAGANA_NN"というディレクトリを作成してその中に解凍します。

-DESKTOP
	-HIRAGANA_NN
		-304a
		-304b
		・
		・
（参考）以下の画像の様になっていればOKです。
<img width="400" alt="desktop_directory.png" src="https://qiita-image-store.s3.amazonaws.com/0/110732/826845df-6d6b-41ed-c3dc-50648f76afa0.png">

なお304aなどのディレクトリはそれぞれの平仮名のUnicodeを示しており、中身は以下の様になっています
<img width="400" alt="inside_folder.png" src="https://qiita-image-store.s3.amazonaws.com/0/110732/d9afd28f-6421-11c4-e71c-397e7b850293.png">

これで準備が完了です。
次2章から機械学習に進んで行きたいと思います！

|章|タイトル|
|:----|:--------------------------------------------------------|
|1章  |[chainerをベースにしたDeepLearning環境の構築](http://qiita.com/LichtLabo/items/94063ee9d66263d1911a)|
|2章  |[機械学習によるDeepLearning予測モデルの作成](http://qiita.com/LichtLabo/items/d78b50bbf0826b8f599a)|
|3章  |[モデルを利用した文字認識](http://qiita.com/LichtLabo/items/c987cd93928ab70f46e1)|
|4章  |[データ拡大による認識精度の改善](http://qiita.com/LichtLabo/items/c4b33432a46cb7dd6b7d)|
|5章|ニューラルネット入門とソースコードの解説|
|6章|Optimizerの選択による学習効率の改善|
|7章|TTA, BatchNormalizationによる学習効率の改善|
createjs入門(EASELJS, PRELOADJS)

# ゴール
* createjsライブラリ群を理解できる
* 気になる件を理解できる

# createjsとは
 * http://www.createjs.com/

### CreateJSは実際は4つのライブラリからなるライブラリ群で次のライブラリによって構成されています。
* Canvasの表示を担当するEaselJS
 * http://jsdo.it/alin.tottori/GJDa
* アニメーションを担当するTweenJS
 * http://jsdo.it/alin.tottori/aNlk
* 音声のコントロールを担当するSoundJS
 * exampleなし
* 外部ファイルの非同期読み込みを担当するPreloadJS
 * http://www.createjs.com/preloadjs

# PreloadJS

### 目的

* ゲームなどWebサービスを開発する時に、イメージ、音声など要素をロードする場合
* 要素が全部ロード完了後に、ゲームが始まることができる

### example
* コード

```
     	var manifest = [{
            		id : "blue",
		            src : "https://upload.wikimedia.org/wikipedia/commons/3/3f/Button_Icon_Blue.svg"
	          }, {
		            id : "red",
		            src : "https://upload.wikimedia.org/wikipedia/commons/0/07/Button_Icon_Red.svg"
	          }];
      var queue = new createjs.LoadQueue();
      queue.addEventListener('fileload', function(event){
          console.log('fileload');
          console.log(event.item.id); // blue or red

      });
      queue.addEventListener('complete', function(event){
          console.log('number of loaded file');
          console.log(event.target._numItems); 
      });
      queue.loadManifest(manifest);  
```

* consoleからの出力

```
fileload
blue
fileload
red
number of loaded file
2
```

### 説明

* listenerを追加

```
loadQueue.addEventListener
```

* 参照
    * http://www.createjs.com/docs/preloadjs/classes/LoadQueue.html
* fileload
    * 一つのファイルをDLして、バインドされる
* complete
    * ファイルを全部DLした後に、何がはじめる






# EaselJS


### 目的

* canvasの表示と操作方法について、簡単にイメージを作りたい
* stageを理解できる
* 関連の気になったことを理解できる

### example
* コード

```index.html
<canvas id="myCanvas" width="500" height="300"></canvas>
```

```index.js
var canvas = document.getElementById("myCanvas");
var stage = new createjs.Stage(canvas);
stage.canvas.width = 1000;
stage.canvas.height = 500;
var child = new createjs.Bitmap("child_blue.png");
child.x = 50;
child.y = 50;
child.scaleX = 0.2;
child.scaleY = 0.2;
stage.addChild(child);
stage.update();
```
### 説明

![ロミオとジュリエット.png](https://qiita-image-store.s3.amazonaws.com/0/13451/3edfb009-6422-5201-0547-6c40caa1d214.png)


* stage新規

```
var stage = new createjs.Stage(canvas);
```

* 要素新規

```
var child = new createjs.Bitmap("child_blue.png");
```

* 要素位置とスケールを定義

```
child.x = 50;
child.y = 50;
child.scaleX = 0.2;
child.scaleY = 0.2;
```

* 要素追加とstage更新

```
stage.addChild(child);
stage.update();
```




### 気になったこと

背景画像のサイズと合わせる

```
		$(window).on("resize", function() {
			$("#canvas").width($("#image").width());
		});
```


Child位置範囲

```
		stage.canvas.width = STAGE_WIDTH;
		stage.canvas.height = STAGE_HEIGHT;
```


イメージロード

```map = $("#image");
   map.bind("load", completion);
```
arduinoでbasic

#概要
arduino unoでbasicをやってみた。
「豊四季タイニーBASIC」と言うものらしい。
仕様
2バイト符号付き整数(-32,767～32,767)
文字列 “または’で括う
変数 A-Z 26個
配列 @(0)-@(63)
命令
 LIST　RUN　NEW
文
 PRINT　INPUT　[LET]　REM　IF　GOTO　GOSUB
 FOR  TO [STEP]　NEXT STOP
 + - * / = # < > <= >= ( )
関数
 SIZE()　ABS()　RND()
エディタ
 bsで一文字削除
#写真
![basic.JPG](https://qiita-image-store.s3.amazonaws.com/0/18104/bb847117-42b3-63b3-6331-0e905a682fae.jpeg)

#サンプルコード
```
10 FOR I=1 TO 100
20 IF I-I/15*15=0 GOTO 70
30 IF I-I/5*5=0 GOTO 90
40 IF I-I/3*3=0 GOTO 110
50 PRINT I
60 GOTO 120
70 PRINT "fizzbuzz"
80 GOTO 120
90 PRINT "buzz"
100 GOTO 120
110 PRINT "fizz"
120 NEXT I
```
#改造

```
void ivar()
{
	short value;
	short index;
	index = * cip++;
	if (* cip != I_EQ)
	{
		err = ERR_VWOEQ;
		return;
	}
	cip++;
	value = iexp();
	if (err) return;
	var[index] = value;
	if (index == 0)
	{
		pinMode(value, OUTPUT);
		digitalWrite(value, HIGH);
	}
	if (index == 1)
	{
		pinMode(value, OUTPUT);
		digitalWrite(value, LOW);
	}
}
```
Lチカ
```
10 FOR I=0 TO 11
20 B=13
30 FOR J=0 TO 20000
40 NEXT J
50 A=13
60 FOR J=0 TO 20000
70 NEXT J
80 NEXT I
```
【連載01】207.Firewalldを一時的にストップする

<b><font color="#ff6633">当記事はケーススタディの連載となっています。目次は[【こちら】](http://qiita.com/CsFactoryitter/items/6b8308b96afafd61ce5f
)です。</font></b>
<b><font color="#ff6633">最新のソースコードは[【GitHub】](https://github.com/csfactorygihubblog001/blogansible)で公開中です。</font></b>
サーバの責務は<b>[こちら](http://qiita.com/CsFactoryitter/items/032cc339048e52ee3586)</b>で確認ください。

##1.Firewalldストップ概要
サーバ設定中はFirewalldを一旦ストップする。
（※最終的には必要な通信のみ許可する。）

![image](https://qiita-image-store.s3.amazonaws.com/0/98085/10172fc3-2d0f-5fa9-1ade-c480d6861138.png)

##2.playbookファイルの相関

![image](https://qiita-image-store.s3.amazonaws.com/0/98085/5aa95929-896b-4115-f058-ec5e194982c5.png)

##3.playbook(site.yml)
${ANSIBLE_HOME}/site.yml
[メインとなるplaybook(site.yml)](http://qiita.com/CsFactoryitter/items/3112c6d504d3b5a58011#3%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%A8%E3%81%AA%E3%82%8Bplaybooksiteyml)参照

##4.Firewalldストップのplaybook(/operations/0041_firewalld.yml)

${ANSIBLE_HOME}/operations/0041_firewalld.yml

```yaml:
# ===================
# 全てのサーバのFirewalldをストップする。(firewalldstop.yml)
# playbookの処理中は一旦全て止めて最後に起動する
# ===================
- hosts: adminserv01
  sudo: no
  remote_user: root
  tasks:
    - name: ファイアーウォールをストップする
      service: name=firewalld enabled=true state=stopped
      ignore_errors: True

```

<dl>
<dt><font color="#0066ff">serviveモジュール</font></dt>
<br>
<dd>デーモンの起動をする。<br>
Ansibleデフォルトでは全てのサーバでエラーが発生した場合に処理が中断する為、通常はエラーがあっても無視をする場合に使う。
</dd>
<dd><b>CentOS7でのservicectl</b></dd>
<dd><b>CentOS5、6でのinit.d</b></dd>
<dd>と同様</dd>
</dl>

|state|値|状態|
|:------|:------|:------|
|enabled|true<br>false|自動起動する<br>自動起動しない|
|state|started<br>restart<br>restarted<br>reloaded|起動状態<br>再起動<br>再起動<br>再読み込み|

次回は「[208.必要なディレクトリを作成しオーナーとパーミッションを設定する](http://qiita.com/CsFactoryitter/items/8e0db53921807a6ff409)」について。

<b><font color="#ff6633">連載の目次は[【こちら】](http://qiita.com/CsFactoryitter/items/8e0db53921807a6ff409)です。</font></b>
Netstat


使用中のポート/サービスを調べる （rootで実行）

netstat -anp | grep 8888
netstat -anp | grep ssh

a  Send,Rsvの両方を表示
n  アドレス、ホスト、ユーザ名を数値表示
p  ソケットが属しているpid,プログラムを表示

####netstat 見方

|ColName|Mean|
|:--|:--|:--|
|Proto|プロトコルの種類(TCP/UDP)|
|Recv-Q|socketに接続されたユーザーに送られなかったデータのバイト数|
|Send-Q|リモートホストが拒否したデータのバイト数|
|Local Address|ローカル側socketの Address:Port<br>0.0.0.0はany 自分のIFのどれからでも、の意|
|Foreign Address|リモート側socketのAddress:Port<br>::1は自ホストを表すループバックアドレス<br>0.0.0.0:*はbroadcast address|
|State|socketの状態|
|PID/Program name|socketを利用しているプログラム名とPID|


Stateの項目説明


|Stateus| Mean|
|:--|:--|
|ESTABLISHED|TCPでセッション確立、通信中|
|CONNECTED|socketは接続されている|
|TIME_WAIT|接続待ちの状態。しばらくするとCLOSEDへ移行する|
|LISTENING|利用可能なポートの待ち受け状態を指す。|
|SYN_SENT|サーバに接続要求|
|SYN_RECV|クライアントからSYN要求を受け取った直後の状態を指す|
|FIN_WAIT_1|サーバからFINが送信された状態|
|FIN_WAIT_2|ACK受信状態を指す|
|CLOSE_WAIT|サーバからFINを受信した状態。次はLAST_ACKへ移る|
|CLOSING|FINを受け取ってコネクションが閉じられる状態を指す|
|LAST_ACK|FINに対するACK待ち状態を指す。ACKを受信するとCLOSEDへ移行して終了する|
|CLOSED|未使用状態のTCPポート|



おまけ


netstat -s
パケットの統計

grep -w  PATTERN
完全一致。PATTERN前後に英数字及びアンスコしかない時しかヒットしなくなる

```
netstat -anp | grep -w 8888
```

サービス 調べ方
```
grep ssh /etc/services
```
Dockerコンテナ(ubuntu)にPostgreSQLをインストールする

PostgreSQLが動作するDockerコンテナー(ubuntu:latest)を、勉強のために自作してみます。

# 確認したいこと

* DockerコンテナにPostgreSQLをインストールして、最低限の動作確認としてpsqlで接続すること。

# 前提条件

* Windowsを前提に説明しますが、Docker Machineが使えるならどのOSでも大差ないはずです。
* VirtualBox
    * Windows、またはOS Xの場合。
    * `cinst virtualbox`(Windowsの場合)、`brew install virtualbox`(OS Xの場合)などでインストール可能です。
* Docker Machine
    * Windows、またはOS Xの場合。LinuxはDockerホスト構築が必要ないため、不要。
    * `cinst docker-machine`(Windowsの場合)、`brew install docker-machine`(OS Xの場合)などでインストール可能です。
* Docker Client
    * Linuxの場合。

# Dockerホストを構築。

Dockerホストを構築して、sshログインします。

```
$ docker-machine create --driver virtualbox test
$ docker-machine ssh test
```

# PostgreSQLサーバー・コンテナーを構築、起動

PostgreSQLサーバーをインストールしたコンテナーを構築、起動します。このコンテナーは、5432番ポートを開放し、外部ホストからの接続を許可し、`docker`というユーザーとデータベースを構築済み、という状態にします。

Dockerfileは作成済みなので、`git clone`します。

```
$ git clone https://github.com/u6k/ubuntu-postgresql.git
```

PostgreSQLサーバーのDockerイメージを構築します。

```
$ cd ubuntu-postgresql/src/server/
$ docker build -t u6k/postgresql-server .
```

構築したDockerイメージをコンテナ起動します。

```
$ docker run --name postgresql-server -d u6k/postgresql-server
```

`--name`引数で、コンテナに名前を付けます。`-d`引数で、デーモンとして起動します。`-d`を付けないと、コンテナ起動後にプロンプトが戻ってこなくなります(`Ctrl+c`でコンテナを終了させる必要あり)。

# PostgreSQLクライアント・コンテナーを構築、起動

上記でサーバーを起動できましたが、このままでは接続確認ができません。接続確認用に、PostgreSQLクライアントをインストールしたコンテナーを構築、起動します。

サーバー構築時に`git clone`したリポジトリにPostgreSQLクライアント・コンテナのDockerfileも作成済みなので、Dockerイメージを構築します。

```
$ cd ../client/
$ docker build -t u6k/postgresql-client .
```

構築したDockerイメージをコンテナ起動します。

```
$ docker run --link postgresql-server:psql -it u6k/postgresql-client bash
```

`--link`引数で、`postgresql-server`という名前のコンテナと連携します。これにより、エイリアス指定した名前(ここでは`psql`)で、接続情報の環境変数が設定されます。後ほど、何が設定されるか確認してみます。`-it`でコンテナの標準入力を開いて、操作を可能にします。最後の`bash`で、シェルに`/bin/bash`を使います。

コンテナに入ったら、`--link`引数により設定された環境変数を確認してみます。

```
# env | grep PSQL
PSQL_NAME=/tiny_wilson/psql
PSQL_PORT_5432_TCP=tcp://172.17.0.2:5432
PSQL_PORT=tcp://172.17.0.2:5432
PSQL_PORT_5432_TCP_PORT=5432
PSQL_PORT_5432_TCP_ADDR=172.17.0.2
PSQL_PORT_5432_TCP_PROTO=tcp
```

`PSQL_`というプリフィックスの環境変数がいくつか設定されていることが分かります。これらの環境変数を使用することで、PostgreSQLサーバー・コンテナに接続しやすくなります。

psqlでPostgreSQLサーバーに接続を試みます。

```
# psql -h $PSQL_PORT_5432_TCP_ADDR -U docker
Password for user docker:
psql (9.3.10)
SSL connection (cipher: DHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.

docker=#
```

接続が成功しました。

# 再度、起動する場合

PostgreSQLサーバー・コンテナを上記の手順で再度起動しようとすると、以下のようにエラーとなります。

```
$ docker run --name postgresql-server -d u6k/postgresql-server
Error response from daemon: Conflict. The name "postgresql-server" is already in use by container 09892e5fa33e. You have to remove (or rename) that container to be able to reuse that name.
```

これは、`postgresql-server`という名前のコンテナが(停止状態で)残っており衝突しているので、削除するかリネームすることでその名前を使用できる、ということを言っています。

以下の手順で、停止状態のコンテナを一括削除できます。

```
$ docker rm $(docker ps -aq)
```

# 参照

* [u6k/ubuntu-postgresql](https://github.com/u6k/ubuntu-postgresql)
技術英語 > What’s the lesson here?

@ LOE > November 9, 2012

http://loe.org/shows/shows.html?programID=12-P13-00045
> what’s the lesson here

http://eow.alc.co.jp/search?q=lesson&ref=sa

> `5. 〔経験から直接学ぶ〕知恵、知識`
> `6.〔見本や他山の石となる〕教訓、戒め`

lessonは何回か聞いたことがある。

LOEの文では上記の５か６としての意味だろう。
ビジュアルプログラミング(vvvv)を覚える

# ビジュアルプログラミング
## ビジュアルプログラミングへの転換期
　３年ほど前から【Scratch（スクラッチ）】、【Unreal EngineのBlueprint】のような、ノードとノードを繋げることによってプログラミングする「ヴィジュアルプログラミング」を見かけたり、仕事で触る機会が増えてきた。
　普段ソースコードをエディタで書くことに慣れきってしまっているせいか、「なぜ、こんな面倒で時間がかかり、処理の重い作業を行うのだろう」と、ビジュアルプログラミングには否定的な立ち位置にいる。
　では、なぜ記事を書いてまで学ぼうと思ったかといえば、
「今までプログラミングをしなくてもよかった人たち（子供、デザイナー）が、プログラミングに興味を持ち始めたり、触らなくてはいけなくなって来たから。プログラミングが出来る人はプログラムができない人にプログラミングができない人のためにある程度準備を準備をすることが発生することが増えるから」
という、ことが大きい。
　やっぱり、ソースコードから流れを想像してみることより、視覚で流れや変化を見ることができるビジュアルプログラミングの方が入り込みやすい。
　PCのスペックが向上したこともあり、容量や処理の重さを気にしなくてもよくなった。
　ちょうど、プログラムにまつわる環境（人、開発環境、興味）がソースコード主体からビジュアルへの転換期に当たっているのかもしれない。

## プログラミング言語を覚える
　いろんなプログラミング言語を触って来たけれど、割りと1週間あれば基本的な文法は覚えられてしまうようになった。
　大体どのプログラミング言語も変数、算術演算子(足し算引き算)、条件分岐(if文)、繰り返し(loop)、関数(function)を覚えてしまえば何とかなってしまい、後は使用する言語特有のライブラリー、フレームワークから使用するものだけを調べれば仕事ができる。

　むしろ、調べることがプログラミング言語を覚えるといっていい。

　まずは、ビジュアルプログラミングも変数、算術演算子(足し算引き算)、条件分岐(if文)、繰り返し(loop)、関数の書き方を覚えてみる。

## vvvv(ビジュアルプログラミング)
　ビジュアルプログラミングを覚えるにあたって「[vvvv](https://vvvv.org/documentation/vvvv-%E4%BD%95%E3%81%A7%E3%82%82%E3%81%A7%E3%81%8D%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB%E3%82%AD%E3%83%83%E3%83%88)」を使用することにした。
　非商用であれば無料ということで触りやすい

　vvvvについてはこの記事を見たほうがわかりやすい。
　[ビジュアルプログラミング言語「vvvv」をはじめよう！](http://qiita.com/yhy_jp/items/4b4d8841842c17943ca1)

***
↓ここから文法について
***
#文法
## 変数
変数の代わりをするのがIO BOXと呼ばれるNodeになる。
マウス右ボタンをダブルクリックでいろんな種類のIOBoxを選択できる
- 数値
- Vector
- Button
- 文字列
- 独自ノード
- 色
- Enum(列挙型)

![lesson_000.png](https://qiita-image-store.s3.amazonaws.com/0/111261/f8325050-eaae-4013-aafb-c016dbbdc723.png)

## 算術演算子(足し算引き算)
プログラミング言語で使うMath関数は揃っている
- 足し算(+)
- 引き算(-)
- 掛け算(*)
- 割り算(/)
- 割り算の余り(Mod)
![lesson_001.png](https://qiita-image-store.s3.amazonaws.com/0/111261/690d5b62-5e71-45bb-e2f5-414f6b3de48a.png)

## 条件分岐(if文)
if文も必要なNodeは揃っているが、条件分岐した際に変数の値を別々にするといったことを考えるのに苦戦した
条件分岐のNodeとSwitch(Input)Nodeを使うことで実現することが出来た。
![lesson_002.png](https://qiita-image-store.s3.amazonaws.com/0/111261/34a1351f-5967-58fa-7486-6fc7d7402053.png)

## 繰り返し(loop)
一番面倒くさかった。UnityのC#に近く、基本Framerateで動いているため、静的なfor文みたいな処理を書くのが難しい。
結局、いい方法がなかったのでPluginをC#で書いたほうが早かった。
![lesson_003.png](https://qiita-image-store.s3.amazonaws.com/0/111261/85a893bb-acb9-c19a-d03f-3961798fb48b.png)

## 関数(function)
vvvvでは関数をSub Patchと呼ぶらしい。
関数にしたい箇所を囲み、Ctrl + GでSub Patchとして登録することができる。
書き方に迷ったら、PluginにしてC#で書いてしまったほうが早いかもしれない
![lesson_004.png](https://qiita-image-store.s3.amazonaws.com/0/111261/b7b71fce-b74a-f71e-b5b8-18566e902574.png)

## 配列(array)
Array,List,Vectorといった配列を扱うときに使う
[vvvv Spreadsを使う](http://qiita.com/gansaibow/items/2d62bf94c35b15dacc02) (2016/02/05追記)

# 基本機能

## 図形描画
[vvvvで図形描画するのに必要な知識](http://qiita.com/gansaibow/items/a124315cc05fbdf9f0c8) (2016/02/03に追記)

## Midi
[vvvv Midiキーボードが手元にない時に仮想Midiキーボードをつかう](http://qiita.com/gansaibow/items/47b0ec62042bd1984532)

## OSC
[vvvv OSCのメッセージを整理する](http://qiita.com/gansaibow/items/91f1ee5805eeb5d869c6)

## ヘルプ
[VVVVでノードの使い方が分からなくなったとき](http://qiita.com/gansaibow/items/b5eb26a9110887ceeff8) (2016/02/04に追記)

# パッチ
Githubに今回書いた記事のパッチをコミットしました
[記事に書いたパッチ](https://github.com/gansaibow/VVVV)

# VVVV以外で困ったことの対応
## Git
[vvvv用のgitignoreを作る](http://qiita.com/gansaibow/items/84cc7e2514a9e4c0c387)
徹底された効率化！名前がかっこいい"ショートサーキットエバリュエーション"が名前だけじゃ無い。

日本語の名前が調べてもわからない、Short-circuiting evaluation。名前がかっこいいし、機能もかっこいいので忘れない様にメモ書き。

#どんな時に発生する機能なのか

これは、条件式を定義する時に場合によっては起こる現象みたい。簡単にまとめると、

```
いくつかある条件式が途中までしか実行されない時がある
```

ということ。True or Falseの条件がまとまっているテーブル（初心者丸出しの説明、、笑）とかを思い出しながら見ていただくとわかりやすいかも。

例えば条件式がこんな感じだった時。

```
if 条件１ or 条件２:
    print('やっほー')
```

この時真ん中がorで結ばれていて、条件１がtrueであるならば、右側の値に関係なくifの中のコードは実行されますね。

**条件２に関係なく、条件１の結果だけで先に進める時**は、python3は条件２を実行しないで先に進んでいくそうです。

#本当か見てみる


```lang:test.py

>>>def ReturnsTrue():
    print('ReturnsTrue() was called')
    return True

>>>def ReturnsFalse():
    print('ReturnsFalse() was called')
    return False

>>ReturnsTrue()
   #ReturnsTrue() was called
   #True

>>>ReturnsFalse()
   #ReturnsFalse() was called
   #False

>>>ReturnsFalse() or ReturnsTrue()
   #ReturnsFalse() was called
   #ReturnsTrue() was called
   #True

# ReturnsFalse()は実行されないはず。
>>> ReturnsTrue() or ReturnsFalse()
   #ReturnsTrue() was called
   #True


# or を andに変えたら全て実行されるはず。
>>> ReturnsTrue() and ReturnsFalse()
   #ReturnsTrue() was called
   #ReturnsFalse() was called
   #False

```

#終わりに

あくまで初心者のメモ書きです。。。　雑でわかりにくいですが、気になる方はコメントしてください。一緒に考えてみます。

python3の徹底した効率化とか、作り手の意図が見える瞬間ってなんかコンピューター言語勉強してて楽しいと思える瞬間ですね。

そして、インターネットかつ英語でpython勉強すると、必ずコンピューターサイエンスの深めの知識帰ってくるんだよな

日本語だと、「こうすればコード走るよ！！」とかでおしまいな印象があるのです。
WordPress環境下にてPHP 7起こる「Fatal error: 'break' not in the 'loop' or 'switch' context」のようなエラーメッセージ

PHP 7に切り替えると
「Fatal error: 'break' not in the 'loop' or 'switch' context」のようなエラーメッセージが表示される。

何故なるかというとbreakをループやswitch以外で使ったことが原因

PHP 7ではエラーになるbreak

if (…略…){
    return true;
    break;
}

単純に不要な「break」をコメントにすれば解決する事もあるのだが、全部が全部コメントにすれば解決ということではないので要注意。

同様に似たようなもので言うと、continueもエラーになる場合がある。

PHP7に切り替えると管理画面が表示されない、真っ白になってしまう場合があるので要検証の必要がある。
DataFrameをMSSQLにINSERTしたい

#この記事について
.read_csvなどでDataFrameにしたデータをMSSQLに格納したいといった場合に、なるべく簡単に大量データをINSERTする方法はないものかと考えた末に出来上がったものです。bulkinsertは権限が無いことを想定して使いません。

100万行のINSERTに30分くらいかかります。もっと良い方法があったらぜひ教えて下さい。

```py3:mssql_insert.py
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# python 3.5
import pymssql
import pandas as pd

# 前準備
table_name = '[db].[dbo].[sample_table]'
# INSERT先テーブルの型指定
columns = ['%s', '%s', '%d', '%d', '%d', '%d']

# DataFrameを作る
df = pd.DataFrame(...)

# INSERT文生成
args = dict(table=table_name, columns=', '.join(columns))
sql = 'INSERT INTO {table} VALUES ({columns})'.format(**args)

# NaNをNoneに変換
df = df.astype(object).where(pd.notnull(df), None)

params = [tuple(x) for x in df.values]

# SQL実行
cnn = pymssql.connect(host="server", user="sa", password="password", database="db")
cur = cnn.cursor()
cur.executemany(sql, params)
cnn.commit()
cur.close()
```
VimでES6のシンタックスハイライト

VimでES6のコードを読んでるときに、関数名や引数がいい感じにハイライトされないのでいくつかプラグインを試してみました。結果、[othree/yajs.vim](https://github.com/othree/yajs.vim)が良さげでしたのでこれを使うことに決めました。

##試してみたプラグイン
- [jelera/vim-javascript-syntax](https://github.com/jelera/vim-javascript-syntax)
- [pangloss/vim-javascript](https://github.com/pangloss/vim-javascript)
- [othree/yajs.vim](https://github.com/othree/yajs.vim)

##結果
###jelera/vim-javascript-syntax
![vim-javascript-syntax.png](https://qiita-image-store.s3.amazonaws.com/0/32927/bea1be6f-cb46-a66c-52a3-897caddcc880.png)

###pangloss/vim-javascript
![vim-javascript.png](https://qiita-image-store.s3.amazonaws.com/0/32927/8eea5da3-93c4-49c0-0722-bb6b347e4646.png)

###othree/yajs.vim
![yajs.vim.png](https://qiita-image-store.s3.amazonaws.com/0/32927/64cbba4a-4800-6ad6-f8e0-88893a83e819.png)

コード引用元：https://github.com/jlebensold/reilly_restaurants/

functionキーワードが無くても関数名や引数がハイライトされるのはyajs.vimのみでしたので、これに決めました。
プロパティ名もハイライトしてくれてますしね。

##設定
```vim:.vimrc
NeoBundleLazy 'othree/yajs.vim', {'autoload':{'filetypes':['javascript']}}

autocmd BufRead,BufNewFile *.es6 setfiletype javascript
```


##参考資料
[Setting up Vim for JavaScript development](https://davidosomething.com/blog/vim-for-javascript/)
[Replace CoffeeScript with ES6](https://robots.thoughtbot.com/replace-coffeescript-with-es6)
Xcode7以降でダイナミックライブラリを選択する方法

#はじめに
Xcode7ではTargets -> Build Phases -> Link Binary With Librariesで使用するFrameworkを選択する時、ダイナミックライブラリ(dylib)が選択できず、tbdという拡張子のファイルを選択するようになっています。

Xcode7以降でdylibの拡張子でFrameworkをインポートする方法を備忘録として残します。

#手順
1.Targets -> Build Phases -> Link Binary With Librariesの「+」を選択して開く
<img width="682" alt="2016-02-02 0.50.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/103695/849bfb25-6402-cc08-083a-7ec3269570fe.png">

2.Frameworkを選択する画面で、左下の"Add Other..."を選択する
<img width="387" alt="2016-02-02 0.54.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/103695/10b97c43-dc44-f2bf-0ea5-b357d4c09130.png">

3."Shift"+"Command"+"G"を同時に押してファイルパスの入力画面を表示する

4."/usr/lib"と入力して"Go"ボタンを押す
<img width="724" alt="2016-02-02 1.01.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/103695/f69203ed-b0c6-e87b-f0b2-4996eec6ba09.png">

5.使用するdylibファイルを選択する
<img width="549" alt="2016-02-02 1.06.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/103695/fe582d52-216d-635d-d521-c028f059d75e.png">

#最後に
今回は、Xcode7以降でダイナミックライブラリを選択する方法を書き残しました。
dylibとtbdの違いに関しても今後しっかりとまとめたいです。
ご意見等がございましたら、宜しくお願いいたします。
Symfony2のタイムゾーン設定

自分のローカル環境でSymfony2を起動すると以下のエラーが出ました。

>ContextErrorException: Warning: date_default_timezone_get(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/tadashinemoto/symfony/php/app/cache/dev/classes.php line 5521

どうやらタイムゾーンが設定されていないようなのでSymfony側で設定します。

```php:AppKernel.php
class AppKernel extends Kernel
{
    public function __construct($environment, $debug)
    {
        date_default_timezone_set('Asia/Tokyo');
        parent::__construct($environment, $debug);
    }

    public function registerBundles()
    {
        $bundles = array(
            ....
        );
    }
    ....
}

```

これでエラーが起きなくなりました。
RaspberryPi 2でPCの遠隔起動をしてみる

# 構成
* クライアント(この場合電源をつけるPC)：windows7
* サーバ：rasberry-Pi2

# サーバの準備

* ラズパイにetherwakeってのをインストールする

`$ apt-get install etherwake`

以上


# クライアント(この場合電源をつけるPC)

* デバイスマネージャよりNICの設定で「Wake on Magic Packet」を有効にする。

* この辺のサイトが詳しそうだ
http://www.atmarkit.co.jp/ait/articles/0602/25/news014.html

* コマンドプロンプトよりmacアドレスを把握しておく

`ipconfig /all`

* 表記は`-`でなく`:`なので変換しておく
* xx-xx-xx-xx-xx-xx →xx:xx:xx:xx:xx:xx


# 実際に起動してみる

* ラズパイよりコマンド発行する。

`$ sudo etherwake xx:xx:xx:xx:xx:xx`

* コマンド発行した瞬間にファンがなるのが小気味良い
AndroidのActivityにおいて、完全透明なThemeを作ってみた[Holo, Material対応]

はじめまして。Qiitaへの投稿は初めてのnao20010128naoです。  
  
という訳で今回は、AndroidのActivityにおいて、完全透明なThemeを作ってみたので備忘録として書いておきます。  
  
求める条件  
1. タイトルバー(アクションバー)を消せる事
2. 通知バー及びステータスバーを隠さない(フルスクリーンにしない)
  
_初期からある物の場合(Theme)_ 

```xml
<style name="AppTheme" parent="@android:style/Theme">
　　　<item name="android:windowBackground">@android:color/transparent</item>
　　　<item name="android:colorBackgroundCacheHint">@null</item>
　　　<item name="android:windowIsTranslucent">true</item>
     <item name="android:windowNoTitle">true</item>
     <item name="android:windowContentOverlay">@null</item>
</style>
```

![Screenshot_20160202-002243.png](https://qiita-image-store.s3.amazonaws.com/0/111609/0da1754e-5145-3dc6-8303-cc7526cdb215.png)
![Screenshot_20160202-004205.png](https://qiita-image-store.s3.amazonaws.com/0/111609/acca42a6-4c93-ef60-5343-6a01c8994a86.png)


_Holoの場合_  

```xml
<style name="AppThemeHolo" parent="@android:style/Theme.Holo">
   <item name="android:windowBackground">@android:color/transparent</item>
   <item name="android:colorBackgroundCacheHint">@null</item>
   <item name="android:windowIsTranslucent">true</item>
   <item name="android:windowNoTitle">true</item>
    <item name="android:windowContentOverlay">@null</item>
   <item name="android:windowActionBar">false</item>
</style>
````

![Screenshot_20160202-002310.png](https://qiita-image-store.s3.amazonaws.com/0/111609/be05f285-bf71-e08e-8554-a9c600d7fc16.png)
![Screenshot_20160202-004224.png](https://qiita-image-store.s3.amazonaws.com/0/111609/f7996171-2804-9952-a539-8decfba9b0a8.png)


_Materialの場合_

````xml
<style name="AppThemeMaterial" parent="@android:style/Theme.Material">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowContentOverlay">@null</item>
   <item name="android:windowActionBar">false</item>
   <item name="android:windowNoTitle">true</item>
   <item name="android:colorPrimary">@android:color/transparent</item>
   <item name="android:colorPrimaryDark">@android:color/transparent</item>
   <item name="android:colorAccent">@android:color/transparent</item>
</style>
````

![Screenshot_20160202-002341.png](https://qiita-image-store.s3.amazonaws.com/0/111609/cff4374d-e924-3e14-6488-e4b888847fa8.png)
![Screenshot_20160202-004252.png](https://qiita-image-store.s3.amazonaws.com/0/111609/faa4a57e-8e33-2033-7810-abfc60fc93d1.png)
[Swift] [iOS] チャート表示ライブラリ [ios-charts] 軸に関する設定

#目的
[[Swift] [iOS] チャート表示ライブラリ [ios-charts]](http://qiita.com/touyu/items/4fbd6d8187eb74752ba0)
[[Swift] [iOS] チャート表示ライブラリ [ios-charts] 詳細な使い方](http://qiita.com/touyu/items/9b77647cf7c97362da10#chartviewbase-%E5%85%A8%E3%81%A6%E3%81%AE%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88%E3%81%AB%E5%90%AB%E3%81%BE%E3%82%8C%E3%82%8B)
の軸に関する設定を紹介する。

#プロパティ
##ChartAxisBase (軸に関する設定)
ChartComponentBaseを継承

```swift
// 軸のラベル(目盛)のフォント、テキストカラー
.labelFont = UIFont.systemFontOfSize(10.0)
.labelTextColor = UIColor.blackColor()

// 軸の色、太さ
axisLineColor = UIColor.grayColor()
axisLineWidth = CGFloat(0.5)

// グリッド線の色、太さ
.gridColor = UIColor.grayColor().colorWithAlphaComponent(0.9)
.gridLineWidth = CGFloat(0.5)

// グリッド線の表示
.drawGridLinesEnabled = true

// 軸の表示
.drawAxisLineEnabled = true

// ラベル(目盛)の表示
.drawLabelsEnabled = true

// ?
.drawLimitLinesBehindDataEnabled = false
```

##ChartYAxis (Y軸に関する設定)
ChartAxisBaseを継承

```swift
// Y軸のラベル(目盛)の個数
.labelCount = Int(6)

// Y軸の一番上のラベルの表示
.drawTopYLabelEntryEnabled = true

// Y軸の最小値、最大値だけ表示
.showOnlyMinMaxEnabled = false

// グラフの方向(false: 上向き, true: 下向き)
.inverted = false

// 0からスタートする
.startAtZeroEnabled = true

// ?
.forceLabelsEnabled = false
```

##ChartXAxis (X軸に関する設定)
ChartAxisBaseを継承

```swift
// ?
labelWidth = CGFloat(1.0)
  
// ?  
labelHeight = CGFloat(1.0)
 
// ?   
labelRotatedWidth = CGFloat(1.0)
  
// ?  
labelRotatedHeight = CGFloat(1.0)
   
// X軸のラベルの傾き度合い 
labelRotationAngle = CGFloat(0.0)

// ?
.spaceBetweenLabels = Int(4)

// ?
.axisLabelModulus = Int(1)
```

#メソッド
詳細は後日
drone.ioをstart-stop-daemonを使って起動制御した


備忘のためにメモを残します。
debパッケージとか使えば、こういうの書かなくてよかったかなー、と思いつつstart-stop-daemon書いたことなかったのと、こういうちまちましたのが好きなので用意しました。

droneは、GitHubのcommitリビジョン[462a44d0cf4c59e3bc01255d9a2a1d8b2c4bf33f]でビルドしました。

/etc/init.d/drone.sh

```bash
#!/bin/bash

source /etc/profile.d/drone.sh
source /root/.bashrc
export GIN_MODE=release

PID=/var/run/drone.pid
NAME=drone
DRONE_HOME=${droneをソースコードからビルドした場所}

case "$1" in
  start)
    echo "starting $NAME";
    start-stop-daemon --start --background --exec $DRONE_HOME/drone  --make-pidfile --pidfile "$PID"
    echo "$NAME was successfully started!"
    ;;
  stop)
    echo "stopping " "$NAME"
    start-stop-daemon --stop --oknodo --signal TERM --pidfile "$PID"
    echo "$NAME was stopped..."
    ;;
  status)
    start-stop-daemon --status --pidfile "$PID"
    if [ $? = 1 ]; then
        echo "drone is not runnning..."
    else
        echo "drone is runnning!"
    fi
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  *)
    echo "Usage: gf {start|stop|restart|status}"
    exit 1
esac

exit 0
```
LuaのC APIライブラリをマルチスレッド対応にする

Luaをマルチスレッド環境で動作させる場合、ライブラリをマルチスレッド対応にする必要があります。
ここでは、Lua APIをマルチスレッド対応にする方法を記しておきます。

# はじめに
スレッドごとに`lua_newstate()`を呼び出す場合、各スレッドごとにLuaのグローバル環境は独立するので、排他制御は不要になります。
今回は`lua_newstate()`で作成したステートを元に、各スレッドで`lua_newthread()`を呼び出す場合の排他制御の方法となります。

# Lua APIの排他制御
Lua APIには、`lua_lock`と`lua_unlock`というマクロが定義されています。
このマクロは、llimits.hで次のように定義されています。

```c:llimits.h
#if !defined(lua_lock)
#define lua_lock(L)     ((void) 0)
#define lua_unlock(L)   ((void) 0)
#endif
```

Lua APIは必要な個所でこれらのマクロを呼び出し、グローバル環境の排他制御を行っています。
しかし、既定の振る舞いとしては同期処理を行いません。

# 実装方法
`lua_lock`と`lua_unlock`を定義するためには、Luaライブラリのユーザー定義インクルードファイルを利用します。
ユーザー定義インクルードファイルは、lua.hで次のように定義されています。

```c:lua.h
/*
** generic extra include file
*/
#if defined(LUA_USER_H)
#include LUA_USER_H
#endif
```

まずは、`lua_lock`と`lua_unlock`を定義するために、次のようなヘッダファイルを作成します。

```c:luauser.h
#ifndef luauser_h_
#define luauser_h_

#define lua_lock(L) LuaLock(L)
#define lua_unlock(L) LuaUnlock(L)
#define luai_userstateopen(L) LuaInitial(L) // lua_newstate内で呼び出される
#define luai_userstateclose(L) LuaFinal(L) // lau_close内で呼び出される

extern void LuaLock(lua_State *L);
extern void LuaUnlock(lua_State *L);
extern void LuaInitial(lua_State *L);
extern void LuaFinal(lua_State *L);

#endif
```

Windows環境での各同期関数の実装を示します。

```c:luauser.c
#include "lua.h"
#include "luauser.h"
#include <stdbool.h>
#if defined(WIN32)
#include <Windows.h>
#endif

struct {
#if defined(WIN32)
  CRITICAL_SECTION cs;
#endif
  bool init;
} static GL;

void LuaInitial(lua_State *L)
{
  if (false == GL.init) {
#if defined(WIN32)
    InitializeCriticalSectionAndSpinCount(&GL.cs, 2000);
#endif
    GL.init = true;
  }
}

void LuaFinal(lua_State *L)
{
  if (true == GL.init) {
#if defined(WIN32)
    DeleteCriticalSection(&GL.cs);
#endif
    GL.init = false;
  }
}

void LuaLock(lua_State *L)
{
#if defined(WIN32)
  EnterCriticalSection(&GL.cs);
#endif
}

void LuaUnlock(lua_State *L)
{
#if defined(WIN32)
  LeaveCriticalSection(&GL.cs);
#endif
}
```

そして、Luaライブラリをビルドする時に、`LUA_USER_H`が`luauser.h`になるようにします。
Visual Studioでビルドする場合は、次のように指定することができます。

```:
/DLUA_USER_H="\"luauser.h\""
```

後はビルドが通れば完了です。

# まとめ(と注意点)
- グローバル環境の排他制御により、非同期に`lua_newthread()`を作成することができる。
- `lua_newthread()`で作成した`lua_State`に対して、複数のスレッドからアクセス(スタック操作)する場合はそれ用に排他制御が必要。
- `lua_newthread()`は、元のLuaステートのスタックにスレッドオブジェクトを積む。
  - 元のLuaステート作成時に`lua_newstate()`に指定したスタック数に注意。
自作 uTween in Unity

# 始めに
* uGUI用のTween処理をするものがなかったので、自分で作ってみました。

# 実際のソース
* https://github.com/syougun360/uTween

# 種類
* uTweenMove -> 移動
* uTweenScale -> スケール
* uTweenRotation -> 回転
* uTweenColor -> カラー

# 最後に
* uGUI用なので、RectTransformがないと、使用できません。
* みなさんの力でプログラムを改良して、最高なプログラムにしてみてください。

使いたい方がいたら、ダウンロードして使ってみてください。

以上です。
Cursiveのライセンスを取得する

# きっかけ
* 久しぶりにClojureコードを書こうと思ったら、IntelliJ IDEAで使っているプラグインのCursiveがライセンス必須になっていた(12月頭頃から？)
* 更新する方法をメモしておく

# 対象
## 状況
* すでにIntelliJ IDEAとCursiveを導入している
* とりあえずCursiveを使い続けたい

## 環境
* Windows 10


# 方法
1. IntelliJ IDEAを開く
* Settings > Pluginsでプラグイン一覧を開くと、Cursiveがupdateできる状態になっている(はず)
* 特に何も考えずupdateボタンを押し、しばらく待つ
* ダウンロードが終わったらIDEAを再起動するか訊かれるので、素直に再起動する
* 「ライセンスが必要になったよ！」という旨(もちろん英語)のダイアログが出てくるので、まず「show website」とかそういう感じのボタンを押す
* https://cursive-ide.com/buy.html に移動する。ここがライセンスを選ぶ場所らしい
* 選べるのは以下の3つ。
    * 個人用(Personal)：個人で使うためのもの。企業で使うのはだめだが、ライセンスを取得した本人であれば仕事に使ってもいいらしい。1年間は無料でアップデートできる。
    * 商用(Commercial)：会社で使うためのもの。たぶんこの記事を読んでいる人にはあんまり関係ないので省略。
    * 非商用(Non-Commercial)：無料のライセンス。個人用の開発や学習、オープンソースプロジェクトのためのライセンス。商用開発に使ってはいけない。6か月ごとに更新が必要になるようだ。
* とりあえず「Choose License Type」で「Non-Commercial」を選択する
* 自分の名前(一応本名にした)とメールアドレスを入力し、「Order Now」で手続きは完了
* 1分ほどでCursiveから「Cursive licence certificate (order #XXXXX)」というタイトルのメールが来るので、本文にある「---------- BEGIN LICENCE ----------」から「---------- END LICENCE ------------」までをコピーする
* IntelliJ IDEAに戻り、先ほどから開きっぱなしになっているダイアログの「Enter License」を選んでライセンス入力画面を出す
* コピーしておいた内容を張り付けて「OK」
* これで以前と変わらず？Cursiveが利用できるようになる
CakePHP2: virtualFieldを使って集計するときに返ってくる配列をキレイにする

#やりたいこと
日付ごとにidのレコード数を調べたい．
CakePHP2でfindして，DBからデータを取ってくるときに，count()やsum()などの集計関数を使ってデータを取ろうとすると，以下のようになる．

```php
$result = $this->Model->find('all', array(
	'fields'=> array('id', 'count(id) as cnt'),
	'group' => array('DATE(created)')
));
```

こうなるとforで回す時などに面倒くさい．

```php:
// 返ってくる配列
Array
(
    [0] => Array
        (
            [Model] => Array
                (
                    [id] => 1
                )
            [0] => Array
                (
                    [cnt] => 1  // ココに追加されてしまう。[0]は使いづらい。
                )
        )

```

#解決策
以下のようにすると，使いやすい配列が返る．

```php
$this->Model->virtualFields['cnt'] = 0;	// バーチャルフィールドを追加
$result = $this->Model->find('all', array(
	'fields'=> array('id', 'count(Model.id) as Model__cnt'), // Model__エイリアスにする
	'group' => array('DATE(created)'),
)
);

```

```php:
//使いやすい配列
Array
(
    [0] => Array
        (
            [Model] => Array
                (
                    [id] => 1
                    [cnt] => 1   //Modelの子に入った。
                )
```

#参考
http://www.ah-2.com/2012/02/19/cakephp_virtual_fields.html
gitのdiff、mergeをmeldでやる

gitで、リビジョンの比較やコンフリクトの解消をmeldでやるには。

# やりかた
.gitconfigに以下を追記しておくと、`git difftool -d`や`git mergetool`でmeldが起動するようになる。

```
[diff]
  tool = meld
[difftool "meld"]
  cmd = meld $LOCAL $REMOTE
[merge]
  tool = meld
[mergetool "meld"]
  cmd = meld $LOCAL $BASE $REMOTE --auto-merge
```

# どういうこと？
`[difftool "meld"]`に出てくる`$LOCAL`と`$REMOTE`は、それぞれ変更前と変更後を表している。1つ目のパラメータが左側に表示される。
`[mergetool "meld"]`の`$LOCAL`と`$REMOTE`は、それぞれ手元のファイルとサーバのファイルとなる。
`$BASE`は、手元/サーバどちらの変更も入る前のファイルとなる。これだけだと全部手動でマージする羽目になるので、`--auto-merge`を追加しおくとコンフリクト以外の部分はmeldがマージしてくれる。

また、`＄MERGED`というのもあり、gitが自動マージした結果のファイルとなる。こちらはコンフリクト部分以外はマージ済みの状態になる。
ならこれでいいじゃん、という気もするが、コンフリクト部分の表示がこんな風になる。

```
<<<<<<< HEAD
conflict2
=======
conflict1
>>>>>>> test1
```
meldでマージする場合、左右に`$LOCAL`、`$REMOTE`が出ている訳なので、この表示はちょっと冗長な気がする。

ちなみに、`$MERGED`に`--auto-merge`をつけると・・・

```
(??)conflict2
(??)conflict1
```
こんな風。

なお、`[difftool "meld"]`、`[mergetool "meld"]`の項がなくても、gitが自動でコマンドラインを決めるらしく、それなりに動く。その場合は

```
[difftool "meld"]
  cmd = meld $LOCAL $REMOTE
[mergetool "meld"]
  cmd = meld $LOCAL $BASE $REMOTE
```
に相当する動作になっているようだ。

# 参考資料
http://stackoverflow.com/questions/11133290/git-merging-using-meld
https://git-scm.com/docs/git-difftool
gitで特定のコミット(リビジョン)からファイルを取り出す

## 実現したいこと

gitコマンドで特定のコミット(リビジョン)から特定のファイルを取り出す

## 実現方法および解決方法

git コマンドのshow オプションを利用する


## 実行コマンド

```
git show リビジョン番号:対象ファイル(相対パス)
```


## 実行例

```
$ git log | grep 'commit '
commit 181dcf1abaed2fb9f517c5c2352a73ef7f315e14
commit 7e048310984881f31a856252d9dccaecfa9bbf0b
$
$
$ git show 7e048310984881f31a856252d9dccaecfa9bbf0b:hoge/body.txt
123 ba1f2511fc30423bdbb183fe33f3dd0f
456 d2d362cdc6579390f1c0617d74a7913d
789 aa3f5bb8c988fa9b75a1cdb1dc4d93fc
000 23ebe88c0224f4f4fc0b608216e98735
111 1181c1834012245d785120e3505ed169

$
```

* ファイルに書き出す場合

```
$ git show 7e048310984881f31a856252d9dccaecfa9bbf0b:hoge/body.txt > ~/tmp/git-tmp/body.txt
```



## 情報源

* http://blog.livedoor.jp/sasata299/archives/51816222.html
* http://ja.gitready.com/intermediate/2009/02/27/get-a-file-from-a-specific-revision.html

## 補足
JS無しJavaのみでWebアプリをもくもく会で試した


2016/01/22(金) Java関連もくもく会＠福岡 2015/01 に参加しました
http://jbr-fukuoka.connpass.com/event/25065/

そこでTeaVMというツールを試してみました。

## TeaVMって？

http://teavm.org/

> TeaVM is an ahead-of-time translating compiler (transpiler) from Java bytecode to JavaScript.

なにやらJavaのバイトコードをJSに変換してくれるらしい。

## 書いてみた

```Java

HTMLDocument document = HTMLDocument.current();

HTMLInputElement base =
                document.getElementById("base").cast();
                
base.addEventListener(
    "change",
    (event) -> {
                   data.setBase(new BigDecimal(base.getValue()));
                   render(data);
                }
);
```

document.querySelector は使えない様子...残念...

## BigDecimalが使える

- JavaScript : Math.pow(2,64) => 18446744073709552000
- Java(TeaVM): (new BigDecimal("2").pow(64)) => 18446744073709551616

## 作成したサンプルソース

https://github.com/itokami1123dev/teavm-spring-boot-sample
geom_holygon in ggplot2 2.0

その昔、
http://blogs.yahoo.co.jp/igproj_fusion/16633531.html
からの、
http://rpubs.com/kohske/3522
からの、
http://blogs.yahoo.co.jp/igproj_fusion/17011933.html
ということで、穴の開くpolygonを描画するカスタムgeomを作った。

最近、ggplot2 2.0になって動かなくなったんですけど、という問い合わせが来て、
2.0対応のcustom geomを書いた。


最初に定義する。
First, define GeomHolygon and geom_holygon

```
library(ggplot2)
library(proto)
library(grid)

GeomHolygon <- ggproto(
  "GeomHolygon", 
  GeomPolygon,
  extra_params = c("na.rm", "rule"),
  draw_panel = function(data, scales, coordinates, rule) {
    n <- nrow(data)
    if (n == 1) 
      return(zeroGrob())

    munched <- coord_munch(coordinates, data, scales)
    munched <- munched[order(munched$group), ]
    
    first_idx <- !duplicated(munched$group)
    first_rows <- munched[first_idx, ]
    
    ggplot2:::ggname(
      "geom_holygon", 
      pathGrob(munched$x, munched$y, default.units = "native", 
               id = munched$group, rule = rule, 
               gp = gpar(col = first_rows$colour, 
                         fill = alpha(first_rows$fill, first_rows$alpha), 
                         lwd = first_rows$size * .pt, 
                         lty = first_rows$linetype)))
  }
)

geom_holygon <- function (mapping = NULL, data = NULL, stat = "identity", position = "identity", 
                          na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, rule = "winding", ...) {
  ggplot2::layer(data = data, mapping = mapping, stat = stat, geom = GeomHolygon, 
                 position = position, show.legend = show.legend, inherit.aes = inherit.aes, 
                 params = list(na.rm = na.rm , rule = rule, ...))
}
```

で、
then,

```
ggplot(p524072p_df, aes(long, lat, group = group)) + geom_holygon(fill = "skyblue") + coord_map()
```

Enjoy!!
Bootstrap系ジェネレーターまとめ

Boostrap系のジェネレーターやビルダーをちょっとまとめてみました。

## テーマ
Bootstrap Live Customizer
http://bootstrap-live-customizer.com/
Bootstrap Magic
https://pikock.github.io/bootstrap-magic/
Jetstrap
https://jetstrap.com/
BootSwatchr
http://bootswatchr.com/
Bootply
http://www.bootply.com/
LayoutIt!
http://www.layoutit.com/

## カラースキーム
PaintStrap
http://paintstrap.com/ja/
1pxdeep
https://rriepe.github.io/1pxdeep/
Lavish
http://www.lavishbootstrap.com/

## グリッド
Shoelace
http://shoelace.io/

## フォーム
Bootstrap Form Builder
https://formden.com/form-builder/

## ナビ
Bootstrap Menu Builder
http://bootstrapdesigntools.com/tools/bootstrap-menu-builder/

## アイコン
IconMoon
https://icomoon.io/app/
Fontello
http://fontello.com/

## パンくず
Bootstrap Breadcrumbs Designer
http://bootstrapdesigntools.com/tools/bootstrap-breadcrumb-designer/

## ボタン
Bootstrap Button Designer
http://bootstrapdesigntools.com/tools/bootstrap-button-designer/
Twitter's Bootstrap 3 Button Generator
http://twitterbootstrap3buttons.w3masters.nl/
Bootstrap Button Generator
http://blog.koalite.com/bbg/

## プログレスバー
Progress Bar Styles
http://bootstrapdesigntools.com/tools/bootstrap-progress-bar-designer/

## その他
Bootsnipp（一部のパーツとして使えそうなスニペット集）
http://bootsnipp.com/



他にも良さそうなのがありましたら教えてください。
Rails環境下にて、jQueryプラグインがうまく動かないことがあったので、jQuery.turbolinks入れたらうまくいった件

内容がお粗末ですが、とりあえず発生したことを綴ります。

# Rails 4 にて　JSが再生されていない？！

## 症状

「新規に開く」以外でブラウザを開いた時に、Javascriptが途中でこけていた

## 環境

- Rails 4.2.5 (Bundlerでプロジェクト別にインストールしてている）


# 原因究明

- Rails上で作る前に、HTMLで作成した時には何の問題もなかった。
- どうも、Turbolinks が悪さをしている（何らかの事情で、jQueryが動いていなかった）

# 対応

- だが、Turbolinksを無効化するのもどうかと
- どうも、`jquery-turbolinks`　というgemを入れれば良いようだ？！

```rb:Gemfile
# use jquery-turbolinks
gem 'jquery-turbolinks'
```

bundleでインストールした上で

application.jsに追記

抜粋。turbolinksの上に記載する必要がある？


```app/assets/application.js
//= require jquery
//= require jquery_ujs

//= require jquery.turbolinks

//= require turbolinks
//= require_tree
```

http://qiita.com/seri_k/items/164accd9ef8ddb4a942e

# 結論

Turbolinksうざい