OmniAICreator/Qiita-1.07M huggingface dataset:
openSUSEでのTeXLiveフォントインストール方法

#openSUSE≠Ubuntu
openSUSEにフォントをインストールするにあたり、最初はUbuntuJapaneseTeamの記事を参考に

```shell-session:
$ sudo fc-cache -fv
```

を行ったのですが、何故かフォントが認識されません。それどころかインストールされたフォントが全て消えてしまいました!

#openSUSEでのインストール方法

インストールしたいフォントがあるディレクトリを/etc/fonts/fonts.confで指定します

```/etc/fonts/fonts.conf
(中略)
<!-- Font directory list -->

        <dir>/usr/share/fonts</dir>

        <dir>/usr/local/texlive/2016/texmf-dist/fonts/</dir>

        <dir>/usr/X11R6/lib/X11/fonts</dir> <dir>/opt/kde3/share/fonts</dir> <dir>/usr/local/share/fonts</dir>
        <dir prefix="xdg">fonts</dir>
        <!-- the following element will be removed in the future -->
        <dir>~/.fonts</dir>

```

その後このコマンドを実行するとフォントが認識されます。

```shell-session
$ sudo /usr/sbin/fonts-config 
```

#参考文献
- UbuntuJapaneseTeamWiki　
https://wiki.ubuntulinux.jp/UbuntuTips/Desktop/InstallFont

- SUSE Linux Enterprise Serverインストールおよび管理
https://www.suse.com/ja-jp/documentation/sles10/book_sle_reference/data/sec.x11.fontconfig.html
CSSフレームワーク



**Picnic CSS**<br /> [http://picnicss.com/](http://picnicss.com/)<br />
  1. Flexbox を活用　<br />
  2. JavaScriptf不要でインタラクティブ要素を構築できる<br />



```
<div class="flex">  // クラス名に「flex」と記述　
  <div>ボックス1</div>  
  <div>ボックス2</div>
  <div>ボックス3</div>
</div>
```
**使い方**<br />
* 3 列のグリット => 「class="flex three"」

```
<div class=”flex two three-600 six-1200”>


</div>
```

**例=[http://s.codepen.io/webhacck/debug/zoeBgv](http://s.codepen.io/webhacck/debug/zoeBgv)**<br />
**[https://github.com/picnicss/picnic](GitHub)**

------

**Materialize**<br />[http://materializecss.com/](http://materializecss.com/)
*Webサイトへ「マテリアルデザイン」のテイスト

**使い方**

1. ちょっと明るい赤色を指定

```
<div class=”red lighten-3”>サンプルボックス</div>　// 明るい 「lighten-1」」「lighten-2」〜「lighten-5」<br />
//暗い色なら「darken-1」「darken-2」〜「darken-5」

```

>*CodePen<br>
>[http://codepen.io/webhacck/pen/gLqwwj](http://codepen.io/webhacck/pen/gLqwwj)<br />
>[http://s.codepen.io/webhacck/debug/gLqwwj](スマホ)

*「ナビゲーションメニュー」<br />
* 「フッターコンテンツ」<br />
* 「カード」<br />
* 「ページネーション」<br />

[https://github.com/Dogfalo/materialize](GitHub)

----

**Milligram**<br />[https://milligram.github.io/](https://milligram.github.io/)
* 「テーブル」「引用文」「フォーム」などの要素は、CSSを一切書かず<br />

[http://codepen.io/webhacck/pen/NboRgV](CodePen)<br />

**使い方**<br />

```
<div class=”row”>
    <div class=”column”>１</div>
    <div class=”column”>１</div>
    <div class=”column”>１</div>
</div>
```

[http://codepen.io/webhacck/pen/KNJgyw](サンプル)<br />
[https://github.com/milligram/milligram](GitHub)

-----

**Spectre**<br />[https://picturepan2.github.io/spectre/](https://picturepan2.github.io/spectre/)<br />
>Milligram より少しスタイリッシュ<br />
>Bootstrapに似ている<br />

**使い方**<br />

```
<!-- ボタン要素のスタイリング -->
<button class="btn btn-primary">プライマリ</button>


<!--- フォーム要素のスタイリング -->
<div class="form-group">
    <label class="form-label" >名前</label>
    ・
    ・
</div>


<!-- グリッドレイアウトのスタイリング -->
<div class="columns">
    <div class="column col-md-6 col-xs-12">要素</div>
    ・
    ・
</div>
```


*サンプル<br />
[http://codepen.io/webhacck/pen/zoeKLw](CodePen)<br />
[http://codepen.io/webhacck/pen/WoPoeQ](CodePen)<br />



------

**bulma（ブルマ）**<br/>[http://bulma.io/](http://bulma.io/)<br />
>中身はモダンでカラフルな配色が施されている多機能で実用的なフレームワーク
>、「ボタン」「タグ」「通知」「ローディング」などの基本パーツは、いずれも目に止まりやすい明るいカラー配色

**使い方**<br />


[http://codepen.io/webhacck/pen/xRMRwj](CodePen)<br />
[http://s.codepen.io/webhacck/debug/xRMRwj](CodePen)<br />

*タイル<br />
[http://codepen.io/webhacck/pen/rWPWwJ](CodePen)<br />

*Download<br />
[https://github.com/jgthms/bulma](GitHub)<br />


------

引用元：paiza 日誌から<br />[http://paiza.hatenablog.com/](paiza ブログ)<br />


##Web制作を劇的に効率UPさせる、最近人気の軽量「CSSフレームワーク」##
[http://paiza.hatenablog.com/entry/2016/12/19/Web%E5%88%B6%E4%BD%9C%E3%82%92%E5%8A%87%E7%9A%84%E3%81%AB%E5%8A%B9%E7%8E%87UP%E3%81%95%E3%81%9B%E3%82%8B%E3%80%81%E6%9C%80%E8%BF%91%E4%BA%BA%E6%B0%97%E3%81%AE%E8%BB%BD%E9%87%8F%E3%80%8CCSS%E3%83%95](リンク)

--------
何を学ぶべきか？

<p>業務上、CやC++、Objective-C、Swift、Java、C#を同時に利用するという機会があるのだが、それで得られた感想は、プログラミング言語の違いによる差はない、だ。単に記法が異なるだけ。</p>

<p>違いが出るのは、どんなフレームワークを使っているかで、そういう意味から、Objective-CとSwiftの差はないと思う。</p>

<p>○○言語の方が簡単で効率的！といわれる場合があるが、ワインバーグさんが言っているように、これは経営側からの視点の言葉だと思う。○○言語の方が安全といわれる場合もあるが、これはあるレベルのスキルがある関係ないと思う。今後定年がなくなると言われる状況で、ずっとプロでやって行くことを考えると、安全なプログラミング言語でないと危険な仕事をしているようではと思う。</p>

<p>自分の経験から、自分がまだプログラミングの仕事ができているのは、以下を学ぶことができたからかなと考えている。</p>

<ul>
<li>Bourne Shell</li>
<li>C言語</li>
<li>Cocoa</li>
</ul>

<p>Swiftを知って、あらためてC言語の素晴らしさを実感しているが、C言語のスキルを得るために、Swift主流の時代ににSwiftしか知らないのでObjective-Cを学ぶのは難しいとは思う。かと行って、hello, worldレベルの学習をしてもしょうがない。難しい状況だな。</p>

<p>Cocoaのような本格的で大規模なGUIライブラリを知っておくのは、大事だと思う。違うものが主流になっても、その経験は生きるので。</p>

ソースコード
GitHubからどうぞ。<br />
<a href="https://github.com/murakami/workbook/tree/master/ios/Hand">https://github.com/murakami/workbook/tree/master/ios/Hand</a> - GitHub<br />

関連情報
<a href="https://realm.io/jp/news/tryswift-daniel-steinberg-blending-cultures/">文化を調和させる</a><br />

【Cocoa練習帳】
<a href="http://www.bitz.co.jp/weblog/">http://www.bitz.co.jp/weblog/</a><br />
<a href="http://ameblo.jp/bitz/">http://ameblo.jp/bitz/</a>（ミラー・サイト）<br />
<a href="https://t.co/6P3h2jtbRk</a>note<br />
[UE4]UnrealC++でオペレーターとかPrintStringに繋いだ時に自動でToString呼出しとか

#はじめに

少し気になったので

 - UnrealC++でのオペレーターはどうするのか
 - Blueprint上でPrintStringにUnrealC++で宣言した構造体を繋いだ時に自動でToStringを出す方法

とか調べました

#前提

バージョン:UE4.14.1

BlankPluginを生成してそのなかで試しました

ヘッダーファイルに全部書いてるのは見逃してください！

#作ったPluginのソース

下記のソース以外は生成されたものそのままです

```C++:Hoge.h
#pragma once

#include "OperatorTestPluginPrivatePCH.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "Hoge.generated.h"


USTRUCT(BlueprintType)
struct FHoge
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float X;

	FHoge()
	{
		X = 0;
	}

	FHoge(float _X)
	{
		X = _X;
	}

	bool operator==(const FHoge& A) const
	{
		return X == A.X;
	}

	FString ToString() const
	{
		return FString::Printf(TEXT("X=%3.3f"), X);
	}

};

UCLASS()
class UExBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{

	GENERATED_BODY()

public:

	UFUNCTION(BlueprintPure, meta = (DisplayName = "Equal (Hoge)", CompactNodeTitle = "==", Keywords = "== equal"), Category = "ExMath|Hoge")
	static bool EqualEqual_HogeHoge(FHoge A, FHoge B);

	UFUNCTION(BlueprintPure, meta = (DisplayName = "ToString (Hoge)", CompactNodeTitle = "->", BlueprintAutocast), Category = "ExUtilities|String")
	static FString Conv_HogeToString(FHoge A);

private:

};

bool UExBlueprintFunctionLibrary::EqualEqual_HogeHoge(FHoge A, FHoge B)
{
	return A == B;
}

FString UExBlueprintFunctionLibrary::Conv_HogeToString(FHoge A)
{
	return A.ToString();
}
```

#UnrealC++でのオペレーターはどうするのか

```
bool operator==(const FHoge& A) const
{
    return X == A.X;
}
```

普通のC++と変わりないみたい

下記のようにしてBlueprintに公開する時に分かったのですが

```
UFUNCTION(BlueprintPure, meta = (DisplayName = "Equal (Hoge)", CompactNodeTitle = "==", Keywords = "== equal"), Category = "ExMath|Hoge")
static bool EqualEqual_HogeHoge(FHoge A, FHoge B);
```

CompactNodeTitleを使えば

![equalname.PNG](https://qiita-image-store.s3.amazonaws.com/0/150472/99d906e3-082f-cef1-88a0-d326d7472aab.png)

みたいな感じでノードがコンパクトになりました

#Blueprint上でPrintStringにUnrealC++で宣言した構造体を繋いだ時に自動でToStringを出す方法

```
UFUNCTION(BlueprintPure, meta = (DisplayName = "ToString (Hoge)", CompactNodeTitle = "->", BlueprintAutocast), Category = "ExUtilities|String")
static FString Conv_HogeToString(FHoge A);
```

BlueprintAutocastを使えば自動で呼び出せるようになります(複数候補がある場合はどうなるんだろう…)

あとCompactNodeTitleを->にすると

![tostring.PNG](https://qiita-image-store.s3.amazonaws.com/0/150472/25de0f90-6ce1-5d69-50bc-53fb02ec5e4e.png)

みたいになります。こういう別の文字や記号に変わるものもあるみたいですね

#おわりに

4.12くらいまでPrivatePCHに#include "Kismet/BlueprintFunctionLibrary.h"しても大丈夫だったのに今回怒られました。何か忘れてるのかもしれませんがちょっと分かりませんでした。
RoBoHoNめも_03：ロボホン開発入門

# RoBoHon開発入門
RoBoHoNの開発をこれからする人向けメモです

# マニュアル意味わからなくない？

わかる！むずかしかった！

でも、今はバージョンアップしていい感じになっているので、一回挫折した人も再挑戦してみましょう。
テンプレートがちゃんとついてくるのが大きい！

# それでも、何していいかよくわからない

ロボホン認定試験のページにチュートリアルがさりげなく隠されているので、ゲットしましょう。
ロボホン認定試験は受験資格がありますが、チュートリアルは誰でもゲットできる状態にあります。

チュートリアル
http://robotstart.co.jp/sharp/robohon-tutorial-1-0-1.zip

※リンク切れ用にロボホン認定試験のページも貼っときます！
https://robohon.doorkeeper.jp/

テンプレートの初回インストールは、
ロボホン認定試験チュートリアル3_開発基本_20160909.pdf
に書いてあります！

# macしか持ってないんだけど・・・

だいじょうぶ！

チュートリアルにはmacでの環境構築のやりかたも書いてあります！

わーいわーい

# ロボホン持ってないんだけど・・・

それは買うしかないな・・・。

# おわり

なにげに、このチュートリアルさえよめば、ロボホンに好きな言葉を話させることくらいまではできるようになります。ロボホン実機をお持ちの方は是非挑戦してみてください！
構造的部分型と有界量化に関する型推論

数式が多いためPDFで書いてしまいました．置き場所は今後変わるかもしれません：

> **文書本体**（PDF, 約345KB．いきなりダウンロードされる場合もありますので注意）
> [http://github.com/gfngfn/Macrodown/wiki/pdf/subtyping/subtyping.pdf](http://github.com/gfngfn/Macrodown/wiki/pdf/subtyping/subtyping.pdf)

[GitHub: elpinal さん](https://github.com/elpinal)により修正のご指摘を頂きました，有難うございます．臨時で原稿本体を修正する代わりに該当のご指摘へのリンクをここに追加しておきます：
[https://gist.github.com/elpinal/ba78b90239a81327be9fa851c4b4b101](https://gist.github.com/elpinal/ba78b90239a81327be9fa851c4b4b101)

| 更新履歴 | 備考 |
|:----|:----|
| 2016-12-24 | 公開 |
| 2016-12-29 | 誤植修正 (@magicant さんのご指摘により) |
| 2017-01-02 | 誤植・内容修正 (@nekketsuuu さんのご指摘により) |
| 2017-01-02 | 同上 |
| 2018-09-05 | elpinal さんによるご指摘へのリンクを臨時で追加 |

（建設的な誤謬・誤植の指摘等，大変歓迎致します．）

以下にPDFの冒頭を念のため貼っておきます：

> 言語処理系を自らの手で実装するとなれば，**レコード**と**構造的部分型**を入れたくなるのが人の性です．そして折角ならできるだけ強い型推論と多相型の機能を持たせてみたい，と考えるのも至極当然なことです．
>
> ここまではほとんどの方が認める前提かと思いますが［要出典］，それなりに古くから研究されているのに反して意外に構造的部分型に関する型推論の知見は和文で共有されていません．例えば原著・和訳ともに良書として広く知られている *Types and Programming Languages* と『型システム入門』は，構造的部分型の理論は登場するものの，構造的部分型を含めた型推論の実装については述べられていないようです．
>
> 「論文を探してみようか」と思っていたところ，和文でも『プログラミング言語の基礎理論』（絶版）に記述があるという旨を `@fetburner` さんから教えてもらい，たまたま該当書物を所持していながら前の方しか読んでいなかった筆者は嬉々として該当箇所を参照し，今回この文書に簡単にまとめることとしました．また，元来の個人的目的は理論的興味だけではなく実際に構造的部分型に関する型推論を実装してみることでしたし，絶版とはいえ既存の書物の受け売りだけではやり甲斐がないということもあるので，**Macrodown**という拙作の言語に実際に構造的部分型に関する型推論を組み込みました．これについても簡単に追記します．できるだけ多くの部分をself-containedにすることに努めてはいますが，時間と労力の都合により，広く共有されていると思われる基礎的な事項についてはかなり走り書きになっています．以下のいずれかがあてはまる方は，1章は斜め読みでも差し支えないかと思います：
>
> * 『型システム入門』の前半程度に目を通している
> * OCamlやStandard MLなどのML系言語を書き，型システムに多少慣れている
> * 単純型つきλ計算の基礎的理解がある
Kotlin で Pepper SDK for Android を試す

## はじめに

Pepper SDK for Android を試してみるのと、そのチュートリアルの「Say "Hello, world!"」を Kotlin で書いてみました。

## 環境

- macOS Sierra (10.12.1)
- Android Studio 2.2.3
- Pepper SDK 0.9.0
- Kotlin Plugin 1.0.5

## 参考記事

- [Pepper SDK for Android — Pepper SDK for Android documentation](https://android.aldebaran.com/doc/index.html)
- [Pepper SDK for Android Studioを使ってみた - Qiita](http://qiita.com/enta0701/items/a6217bb07d56421a3a03)
- [Android開発ではじめるKotlin - Qiita](http://qiita.com/Kogarasi/items/4bd0a37763b057e9d796)

## Say "Hello, world!"

チュートリアルの「Say "Hello, world!"」です。

- [Say “Hello, world!” — Pepper SDK for Android documentation](https://android.aldebaran.com/doc/say_tutorial.html)

### コード

基本的には Java のコードを元に「Convert Java File to Kotlin File」で変換したものなのですが、Qi.onUiThread() でエラーになるため、キャストして型を合わせて動かしています。そのため FutureFunction が表に出てきしまい、元の Java のコードより無駄な部分があります。

何かもっと良い書き方があるのではないかと思うのですが、教えてください。

```kotlin:SayActivity.kt
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

import com.aldebaran.qi.QiCallback
import com.aldebaran.qi.sdk.Qi
import com.aldebaran.qi.sdk.`object`.interaction.Say
import com.aldebaran.qi.FutureFunction

class SayActivity : AppCompatActivity() {
    companion object {
        private val TAG = "SayActivity"
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_say)

        val say = Say(this)
        say.run("Hello, world!").then(Qi.onUiThread(object : QiCallback<Void>() {
            override fun onResult(ignore: Void) {
                Log.d(TAG, "result on thread " + Thread.currentThread().name)
            }

            override fun onError(error: Throwable?) {
                Log.e(TAG, "error", error)
            }

            override fun onCancel() {
                Log.w(TAG, "cancel")
            }
        }) as FutureFunction<Void, Void>)
    }
}
```

### 実行結果

#### Robot View

![pepper_kotlin.png](https://qiita-image-store.s3.amazonaws.com/0/20418/50fe2753-8437-2ba4-750d-80de3bcf0ebc.png "pepper_kotlin.png")

#### Android Monitor

QiCallback の onResult の出力です。

```
12-24 02:01:56.661 2096-2130/jp.sandpit.sayhelloworld D/SayActivity: result on thread Thread-191
```

## 感想

- (・8・) < Android も Java も Kotlin もまだまだちゅん
PHP 7.1からDateTimeが現在時刻のマイクロ秒まで見るようになった

表題の通りですが、PHP 7.1から`DateTime`および`DateTimeImmutable`の挙動が変わり、現在時刻にマイクロ秒まで反映されるようになりました。日付文字列を相対的な書式で与えた場合も同様にマイクロ秒が反映されます。

```php
<?php
$dt1 = new DateTime();
$dt2 = new DateTime("first day of next month");
$dt3 = new DateTime("2016-12-24");
var_dump($dt1->format("Y-m-d H:i:s.u")); // string(26) "2016-12-24 06:59:17.930886"
var_dump($dt2->format("Y-m-d H:i:s.u")); // string(26) "2017-01-01 06:59:17.931709"
var_dump($dt3->format("Y-m-d H:i:s.u")); // string(26) "2016-12-24 00:00:00.000000"
```

PHP 7.0.x以前ではマイクロ秒を明示的にコンストラクタ引数として与えたときだけマイクロ秒がセットされていました。つまり、上の例であれば`2016-12-24 06:59:17.000000`などを返していました。

この変更のため、DateTime同士を比較するようなテストコードが動かなくなることがあるかもしれません[^1]。このことはPHPマニュアルにも書いてあります（「[DateTime constructor incorporates microseconds](http://php.net/manual/en/migration71.incompatible.php#migration71.incompatible.datetime-microseconds)」）。

[^1]: この変更で影響を受けるテストコードは元々秒またぎのバグを抱えている気がしますが…
技術英語 > Make two variables share the same memory to reduce [data shuttling] in inner loop

@ Code Complete (No. 19657 / 36077)

> Make two variables share the same memory to reduce **<font color=red>data shuttling</font>** in inner loop

http://ejje.weblio.jp/content/shuttling
> shuttleの現在分詞。(近距離間の)定期往復便、 折り返し運転

http://stackoverflow.com/questions/10653979/is-there-any-quick-and-easy-way-to-upload-a-google-doc-from-sap/27664818#27664818
>  ("data shuttling between SAP and Google Docs-Drive-Sheets").

data shuttlingで検索してみたけど、定義を見つけられなかった。

2つの領域間でデータが行き来する、というような意味なのだろうか。
Rails Girls について

Rails Girls Japan Advent Calendar 2016 の24日目の記事です。 前の記事は 23日目:hsbt さんでした。

こんにちは、mnari と申します。
12月17日、RailsGirls Nagoya more! に参加し、Advent Calendarを書くことになりました。
よろしくお願いします(^^)

ーーーーーーーーーーーーーー
どうして参加しようと思ったか
ーーーーーーーーーーーーーー

Rubyを使ってアプリケーションを作ってみたい！と思って、でも何をどうして進めたら良いかわからない。本を買ってやり始めて一人だと挫折しそうだし、、と思っていたところ、他のセミナーで一緒だった友達が 1st の卒業生で、こういうイベントがあるよ！っということを教えてくれたので、Rails Girls NAGOYA 2rdに参加させてもらいました。

ーーーーーーーーーーーーーー
参加してみて
ーーーーーーーーーーーーーー

知識の豊富なコーチのみなさんが、熱心に親身になって教えてくれます。Rubyを使える環境にする事前準備から、当日のアプリケーションの作成。マンツーマンで教えていただいたのでなんて、贅沢なイベントなのだと思いました。MacとWindowsのユーザー別、初心者と少し経験者の方を視覚的にわかるようわけて案内されて、コーチの方は案内しやすく、参加者は相談しやすい配慮もありました。困ったことをその場ですぐ聞けて教えてもらえるので、始める前の心配事は解消されました。会場では、オーガナイザーさんのお話を聞いてなるほど！と思ったり、美味しいおやつやお弁当、Tシャツ、ステッカーなどをいただいて、バルーンアート見せてもらったり、楽しく過ごすことができました。最初につまづきやすい環境を整えるところを教えてもらい、チュートリアルを何度もやるといいよとアドバイスをいただきました。本当に無料でよいのでしょうかと思った充実したイベントでした。

ーーーーーーーーーーーーーー
参加後は
ーーーーーーーーーーーーーー

FaceBook経由でお知らせしてもらい 月１回開催のmore に参加させていただいています。参加するたび、自分の知らないお話を聞くことができて刺激を受けています。本当にすてきな方たちで、優しくて暖かいです。少し、お休みをしてしまっていたのだけど、今年の目標は、アプリケーション作ること。Rails Girls NAGOYA 4th 開催時にお手伝いをしたい！です。今後ともよろしくお願い致します。
Javaくんと触れ合ってみた

#0.Opening
　ジングルベ～ル♪ジングルベ～ル♪鈴が～鳴る～♪
なーんて世間がバカ騒ぎして人気スポットにリア充が蔓延る中、クリスマスイブはJavaくんと触れ合って、楽しいクリスマスイブにしたいと思います♂
脱~~d…~~クリぼっち！

#1.Javaとは
　とは言え、私はJavaくんについてまだ知らないので、Javaについてまずは軽く調べてみました。

##1-1.Javaの誕生!!
　元々は、1991年ごろにアメリカのSun Microsystems社(現在はオラクルに吸収されています)が、家電製品用ソフトウェア開発のためのプログラミング言語として作ったのが始まりです。そこから改良が重ねられて、1995年にSunWorldで発表されたのがJavaです。
　Javaが注目されるきっかけとなったのは、Webブラウザ上で動作する「アプレット」という小規模なプログラムが開発できることでした。そのため、一時期は「アプレットを作るためのインターネット向けの言語」と誤解されていました。
　**Javaは「アプレットも作ることもできる汎用のプログラミング言語」であり、多目的な用途に使える言語**。というのがコンセプトです。

##1-2.javaの主な特徴
- 無償で提供される
- いったん作ればどこでも実行できる
- C言語やC++に構文が似ている
- オブジェクト指向プログラミングのサポート
- 多機能なライブラリがいっぱい
- 並行処理
- パッケージによるクラスの分類

#2.今回の水先案内人
　今回お世話になる教本は、柴田望洋先生が著している「明解Java-入門編-」です。オナシャス！

#3.実行環境
　IDE(統合開発環境)であるeclipseを使います。

#4.実際に触ってみますた
スクリーンショットが乗っけられないので、代わりにソースコードを乗っけます。
##4-1.画面に文字を出力するプログラム
	package Sample;
	//画面に表示を行うプログラム

	public class SampleA {

		public static void main(String[] args) {
		
			System.out.print("Hello!");  //c言語でいうprintf("Hello!");

			System.out.print("X'mas " + "EVE!!");		//文字の連結

			System.out.println("リア充…\n爆破ぁ!!!");    /* \nはc言語と同じく改行。
													     文字リテラルの間に入れてもOK! */

		}

	}
##4-2.変数を使ってみるお試しプログラム
	package Sample;

	//c言語でいうライブラリ(#include <stdio.h>のようなもの)
	import java.util.Random;    //乱数を生成するためのライブラリ
	import java.util.Scanner;    //キーボードからの入力を受け入れるためのライブラリ

	public class SampleB {

		public static void main(String[] args) {
			
			//ライブラリにある関数を使いやすく定義
			Random rand = new Random();    //c言語でいうrand関数と同じ役割のもの
			Scanner stdIn = new Scanner(System.in);    //c言語でいうscanfと同じ役割のもの
		
			int a;
		
			a = 2;
		
			int b = -1;
		
			double x = 1.5 * 2;
		
			final double PI = 3.14159;    //値を書き換えられない変数(c言語でいう const)

			x = rand.nextDouble();
		
			//カッコ内は演算後の値(c言語でいう printf("%d", PI * x * x))
			System.out.println("半径"+ x +"の円の面積は"+ (PI * x * x) +"です。");

			System.out.print("整数aの値:");

			a = stdIn.nextInt();

			System.out.println("a / 2 = "+ a /2);

			System.out.println("a % 2 = "+ a % 2);

			String s = "cake";    //文字列型(c言語でいうchar型の配列)

			System.out.println("文字列sは"+ s +"です。");

		}
		
	}

#5.感想をかるーく
　Javaは、C言語と比べて構文が長く、C言語とは構文が違う場合があるので少し違和感を感じました。
　しかし、入力補助が優秀で、Tabキーを使えばいちいち打たなくて済むのでありがたいと思います。また、文字の連結が出来ることが面白いところだと思いました。(某PPAPの「I hava a pen.♪ I have an apple.♪ Oh,Apple Pen.♪」のようだったので(笑))
#6.Ending
　Javaくんと交流してみましたが、今回のものは序の口の序の口で、Javaの真骨頂には触れることが出来ませんでした。しかし、今回に限らず、これからもJavaくんとの交流を深めていきたいと思います。
　とまぁ、真面目は置いといて、Javaくんのおかげでリア充に負けない良い思い出が出来ました。(メイビー)
…これから一人でネズミの国にでも行くか……　-爆完-
暗号技術の簡単な概略

#はじめに
暗号技術についての情報をザックリ解説しています
だいたいのイメージがつく位でしか書いていませんので,あてにしないでください
(細かいことはググってください)

#暗号方式
##共通鍵暗号方式
通信相手がお互いに同じ秘密鍵を持って暗号化と復号をする方式

##公開暗号方式
受信側は公開鍵と秘密鍵を用意する
送信側は公開鍵で暗号化して,受信者は秘密鍵で復号する

公開鍵から秘密鍵を見つけることは難しいことを利用した暗号方式

#実際の暗号
##DES暗号
Data Encryption Standardの略でアメリカの暗号企画だった
共通鍵暗号方式で
鍵や平文データの値をシフトしたり転地したりしたりして暗号化/復号化する処理
細かいアルゴリズムは以下のサイトがわかりやすく書いてました
[DES暗号 | 信州大学 情報セキュリティ](http://sugp.wakasato.jp/Material/I18N/current/Security-ja/Section3-1.html)
今では計算機が早くなったので
暗号回数を増やしたTriple-DESや,改良したAES(AはAdvanced)にとって変わられている

##RSA暗号
発明者の3人の頭文字をとってこう呼ばれる
公開鍵暗号方式でオイラーの小定理より,平文m,暗号化鍵e,秘密鍵d,素数p,qに対して

```math
n = pq \\
d = e^{-1} (mod~(p-1)(q-1))\\
m = c^d (mod n) = (m^e (mod n))^d (mod n)
```

となることを利用する

以下のサイトに簡単な実例があります
[ためしてみよう | サルにも分かるRSA暗号](http://www.maitou.gr.jp/rsa/rsa11.php)

##楕円曲線暗号
Ωが横を向いたみたいな形になる上下対称な式

```math
y^2 = x^3 + ax + b
```
という式で適当な2点を取って直線を引くと一つ交点が出て
その点の上下を入れ替えるということを足し算として
ずっと足し算を行うとループすること(群である)を利用した暗号
一般にRSA暗号とかに比べて堅い暗号方式なので同じ強度のもと鍵の長さが短くて済む

#近年の傾向
クラウド化が進むにつれて準同型暗号に注目が集まっています
##準同型暗号
通信先でも暗号化された状態で計算などの処理ができます
つまり通信相手に何をしているのかわからせずに通信します
以下のようなことができるようになります

###秘匿通信
通信相手は暗号化された状態でデータを通信できます

###秘匿計算
通信相手は暗号化された状態で計算をします
一般に足し算と掛け算ができればほとんどの計算が可能になります(できるかは暗号方式による)

###秘匿検索
通信相手は暗号された状態で暗号化されたデータの検索をします

##ノイズ
暗号化先がランダムになります,このことは平文を暗号化して一致してバレるのを防ぐことを意味します
ただし秘匿計算を行っていくとノイズが拡大していき,ある回数を超えると復元結果に影響が出ます
ですが,計算限界はわかっているのでそこまで計算して,もう一度計算機の中で暗号化してと繰り返せばよい

##暗号の例
###RSA暗号
実は掛け算に限定できるが準同型性を持つ暗号方式である
元はといえばRSA暗号が準同型暗号の発想のきっかけになっている
証明はそれほど難しくなく

```math
a^e (mod~n) * b^e (mod~n) = a^e * b^e (mod~n) = (a*b)^e (mod~n)
```

より自明
###Hartleyの完全準同型暗号
足し算と掛け算両方できる
ErgoDoxのファームウェア(qmk_firmware)をDockerでビルドする

この記事は[ErgoDox Advent Calendar 2016](http://qiita.com/advent-calendar/2016/ergodox)24日目の記事です。
昨日はgrimrose@githubさんの[ErgoDoxのキーキャップを注文してみました](http://www.grimrose.org/blog/2016/12/ergodox/)でした！

# はじめに

自分がErgoDoxに関して語りたい事は概ねこちらの[FalbaTech製ErgoDoxを使ってみた](https://developers.eure.jp/tech/try_ergodox/)に書いてしまったのですが、こちらの記事で書かれているDockerを使ったファームウェアのビルド手順が少々わかりづらいので、改めてビルド手順だけをまとめておきます。

# Dockerの環境を整備する

当然ですが、まずはDockerの環境を構築する必要があります(既に構築済みであれば、この章は飛ばしてしまってOKです！)

## ArchLinux

筆者の環境はArchLinuxなので紹介しておきます(とは言っても、殆ど[ArchWiki](https://wiki.archlinuxjp.org/index.php/Docker#.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB)での説明と一緒です👾)

まず、 `docker` パッケージをインストールします。

```bash
yaourt -S docker # sudo pacman -S dockerでも可
```

インストールした後、利用したいユーザー(仮に `user` としています)を　`docker` グループへ追加します。

```bash
sudo gpasswd -a user docker
```

インストール出来ていて、かつ利用したいユーザーから利用できる事を確認します。

```bash
docker info
```

## Mac OS

極めて単純ですが、Macでの構築方法も記載しておきます。

まず、[こちらのサイト](https://docs.docker.com/docker-for-mac/)からDocker for Macをダウンロード、指示に従ってインストールします。

インストール後、アプリケーションフォルダからDockerを起動し、動作している事が確認出来れば導入は完了です。

```bash
docker info
```

# ErgoDoxのファームウェアをビルドする

導入したDockerを使ってファームウェアをビルドする方法は[こちら](https://github.com/jackhumbert/qmk_firmware/wiki#docker)に記載されていますが、こちらの例で使用しているコンテナは既に削除されており、そのままでは動作しません。

代わりにedasque氏のコンテナを使用できるため、以下のコマンドを実行すればファームウェアを実行できます。

```bash
cd ~/keyboard/qmk_firmware
docker run -e keymap=my-keymap -e keyboard=ergodox --rm -v $('pwd'):/qmk:rw edasque/qmk_firmware
```

`my-keymap` を自分が作成したキーマップフォルダ(keyboards/ergodox/my-keymap)として実行し、無事ビルドが完了すれば `ergodox_ez_my-keymap.hex` が作成される筈です。

# 2018年3月1日更新

- edasque氏のコンテナイメージへ変更
PowerShell でクリップボード中のスラッシュをバックスラッシュに置換

- クリップボード中の...
    0. フォワードスラッシュ `/` をバックスラッシュ `\` にすべて置換する。
    0. バックスラッシュ `\` をフォワードスラッシュ `/` にすべて置換する。

- 両方含まれていた場合は、上記 1. に分類する（適当）。

#### コード

```ps1
Add-Type -AssemblyName System.Windows.Forms
$clipText = [Windows.Forms.Clipboard]::GetText()
if ($clipText.Contains('/'))
{
    $replacedClipText = $clipText -replace '/', '\'
    [Windows.Forms.Clipboard]::SetText($replacedClipText)
}
elseif ($clipText.Contains('\'))
{
    $replacedClipText = $clipText -replace '\\', '/'
    [Windows.Forms.Clipboard]::SetText($replacedClipText)
}
```

**実行結果**

0. 文字列 "`C:\Path\to\the\File.ext`" をクリップボードにセットした状態で上記のスクリプトを実行すると...

    ```text
    C:/Path/to/the/File.ext
    ```

    ... がクリップボードにセットされる。
0. この状態でもう一度、上記のスクリプトを実行すると...

    ```
    C:\Path\to\the\File.ext
    ```

    ... がクリップボードにセットされる。

## Windows 7 で実行する際の注意点
Windows 7 (PSVersion=2.0) の場合、そのままだと動かない。
これは [Clipboard クラス](https://msdn.microsoft.com/library/system.windows.forms.clipboard(v=vs.110).aspx)が、**STA モード**時でのみ使用可能であるのに対して、Windows 7 はデフォルトが **MTA モード**になっているため。
これを解決するには、PowerShell の起動時に `-STA` オプションを指定して、明示的に STA モードで動作させる必要がある。
freeeのチーム運営で大事にしていること

メリークリスマス。
freeeで開発本部長をやっている @hiraguri です。
そういえば去年のクリスマスも、子供のプレゼントとadvent calendarのネタに頭を悩ませていました。

そんなせっかくのクリスマスですが、空気を読まずにマネジメントの話をしようと思います。

「freeeのチーム運営で大事にしていること」

この記事は [freee Engineers Advent Calendar 2016](http://qiita.com/advent-calendar/2016/freee) の 24 日目の記事になります。
明日で最後ですね。


# 大事にしていること 4つ
- 一人にしない
- 心理的安全性
- マネジメント不在感
- 楽しく働く

# 一人にしない
エンジニアを一人にしないことに、気を配っています。
なぜか。

一人で仕事しても、いいことなんて一つもないですよね。
孤独は敵。万病の元。

- ナレッジが一人に集中して、スケールできない。
- 相談相手がいないので、決定に自信がもてない。質が落ちる。
- 一人でやる気が落ちたら、あとはどんどん落ちていってしまう。
- フィードバックや気づきが得られにくく、エンジニアとして非連続な成長ができない。
- なにより寂しい。

とにかく短期的なアウトプットだけが必要な場合は、優秀なエンジニアが一人でやるのも有用かもしれません。
しかし、持続はしません。

freeeでは、社会インフラになるべく、持続性・継続性を重んじているので、特にこの点に気を配っています。

エンジニアを一人にしない。
コストがかかっても、だぶりが発生しても、お互いのプロジェクトを知り、しっかりレビューできる体制を作る。
つらい難題にみんなでとりくみ、リリースしたらみんなで祝う。

そういうのを大事にしています。


# 心理的安全性
これは、googleの記事を見て、いいなぁと思って実践しています。

[グーグルが突きとめた！社員の「生産性」を高める唯一の方法はこうだ](http://gendai.ismedia.jp/articles/-/48137?page=4)

この記事では、以下のように書かれています。

>社員一人ひとりが会社で本来の自分を曝け出すことができること、そして、それを受け入れるための「心理的安全性」、つまり他者への心遣いや共感、理解力を醸成することが、間接的にではあるが、チームの生産性を高めることにつながる。

ぼくは、心理的安全性には「発言・行動が受け入れられること」が、とくに重要だと思っています。

- 人の発言を否定しない。さえぎらない。
- 特に、ふだん発言しない人、勇気を持って行動した人には、しっかり目と耳を傾け、全力で拾う。
- 失敗を責めない。共に振り返り、学ぶ。
- 行動を任せ、責任は取る。

みんなが遠慮なく発言し、高いスピードで意見を衝突させ、議論を積み重ねる。
それが、質の高い解決策を見つけるために、とても重要だと思っています。


# マネジメント不在感
freeeでは、メンバー全員が自主的・自律的に考え、決め、行動していく組織を目指しています。
メンバーの足並みが揃う限り、それがもっともスピードが出るし、変化にも強いからです。
（足並みは、[価値基準](https://jobs.freee.co.jp/benefits/) で担保しています。）

freeeの開発チームには、「マネージャー」という役職の人はいません。

「マネージャー」という名前の人がいると、周りはどうしても無意識にマネジメントを求めてしまい、
特につらいときなど、ついつい自分で考え、解決することを、止めてしまうからです。

以前は [「アジャスター」というロール](http://qiita.com/hiraguri/items/dfc15ef036228442d3bf#%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%B9%E3%82%BF%E3%83%BC) を置いていたのですが、いまは変化を重ね、 「パイセン」 と呼ばれています。

しかし、パイセンはあくまでも、メンバーの成長と、それによるアウトプットの最大化が、
唯一の使命であり、そのやり方含め、すべてはパイセンとチームに任されています。

いるのか、いないのか、わからない。でも最後はすべての責任をもつ。

この「マネジメント不在感」も、freeeの大きな特徴になっています。


# 楽しく働く
さいごはこれです。楽しく働くこと。

とてもシンプルで、使い古されたフレーズですが、結局のところここに行き着くと思っています。

「楽しくとは」というのは、なかなか難しい問いですが、
やはり仕事そのものが楽しいと、物事に対して考える時間、深さ、集中、行動、なにもかもが違ってきます。

ここに夢中になれるとなれないとでは、必然的に成果も大きく異なってくるし、
大きな成果は、必ず成功体験となって、次への大きなチャレンジ、成長につながっていきます。

もしいま、楽しくない、夢中になれていない、必死になれていないのなら、
それはもったいないので、ぜひ考えてみてください。

サイボウズの青野社長は、こんなことを言っていました。

>
- やりたいこと
- やれること
- やるべきこと

>モチベーション、やる気が高まるにはこの3つの条件が重なるとすごい高まる。この3つの条件が重なるところを探していくとモチベーションというのはすごい高まります。

[サイボウズ青野社長が語る「モチベーションを高める3つの条件」](http://logmi.jp/93562)


# さいごに
[freee Engineers Advent Calendar 2016](http://qiita.com/advent-calendar/2016/freee) を読んでいて、今年はチームの話や、雰囲気が見える記事が多かったように思います。
ぜひ、いろいろ読んでみてください。

**チーム自体が、チームを修正・改善し、自律的に、変化に適応していく組織。**

それがぼくが目指しているチームの姿であり、
「大事にしていること4つ」は、そのための不可欠な要素だと思っています。

***

freeeでの開発に興味を持った方は、ぜひ [freee採用情報](https://jobs.freee.co.jp/) を ポチーーー とおなしゃす。

さぁ、次はいよいよ最終日。
概念氏こと、freee CTO の @yokoji の登場です。おたのしみに！
Prawn で絵文字が使えるようになる prawn-emoji の紹介

Prawn で絵文字が使えるようになる [prawn-emoji](https://github.com/hidakatsuya/prawn-emoji) の [2.0.0](https://github.com/hidakatsuya/prawn-emoji/blob/master/CHANGELOG.md) をリリースしたので紹介しておきます。

## prawn-emoji とは

https://github.com/hidakatsuya/prawn-emoji

```ruby
require 'prawn'
require 'prawn/emoji'

Prawn::Document.generate 'example.pdf' do
  font 'ipag.ttf'

  text '🐟 + 🔪 = 🍣'

  move_down 50
  text '🇯🇵'

  move_down 10
  text '🙏🙏🏻🙏🏼🙏🏽🙏🏾🙏🏿'

  move_down 50
  text_box '🍣' * 50, at: [0, cursor], width: 300

  move_down 50
  text_box '🍣を中央寄せ', align: :center, at: [0, cursor], width: 300

  move_down 50
  text_box '回転🍣', rotate: 45, at: [0, cursor], width: 150

  move_down 50
  text_box '大きい🍣', size: 20, at: [0, cursor], width: 300

  move_down 50
  draw_text '🍣食べたい', at: [0, cursor]
end
```

prawn-emoji を使うと、Prawn を使ったこんな感じのコードで PDF に絵文字を表示することができるようになります。

<img width="738" alt="Screen Shot 2016-12-24 at 3.29.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/4232/19392560-f7d2-3a2b-2ee1-9c9b04f9a81e.png">

絵文字は EmojiOne を使ってるので、同じ寿司でも見た目が異なることはあります。

## 特徴

- 絵文字を正しく描画するためには、TrueTypeフォントが必要
- 絵文字画像は [EmojiOne](Emoji cause text to extend beyond edge of bounding box) のものを使っている
- v2.0.0 で、国旗など複合絵文字に対応した
- テキストセンタリングやフォントサイズなど、一通りの機能は実装済み
- [Thinreports](https://github.com/thinreports) でも使える

## 既知の問題

### Issue#7 Emoji cause text to extend beyond edge of bounding box

https://github.com/hidakatsuya/prawn-emoji/issues/7
これ難しいんですよね。
Windows10Pro Hyper-VにUbuntu 16.04 LTSをインストール

# 参考ウェブページ

[Windows10でクライアントHyper-Vを使ってみる。セキュアブートの無効化は忘れずに！](http://i-think-it.net/windows10-hyper-v-1/)
[Hyper-V Virtual Machine Connection](https://technet.microsoft.com/en-us/windows-server-docs/compute/hyper-v/learn-more/hyper-v-virtual-machine-connect)
[モバイル環境では外部アダプタを使わない方がいい](http://nullpo-head.hateblo.jp/entry/2013/11/26/025119)

## 注意すること

- インストールした仮想マシンの設定において、セキュアブートの無効化をしないとOSを起動できない。
- VMwarePlayerとHyper-Vは共存できない。
- ~~有線LAN、無線LANの各ハードウェアごとに外部接続用の仮想化スイッチを作成する必要がある。~~
- 外部仮想スイッチを作成するとネットワークアダプタに関するエラーが起こりネットワークに接続できなくなる。解決方法は以下の通り。
 1. 外部ではなく内部仮想スイッチを作成する。
 2. コントロールパネル-->ネットワークとインターネット-->ネットワーク接続から使用しているWifiや有線LAN回線のプロパティを選択する。
 3. インターネット接続の共有にチェックをいれる。
- 仮想マシンのショートカットキーを有効化するにはCtrl+Alt+LEFT arrow
    - 全画面表示を解除するには、まずCtrl+Alt+Left arrowを押してからCtrl+Alt+Breakを押す。
Unity2D ～画像の描画優先度～

#背景
こんな感じのときにキャラを前に出したいのに！ってなると思います
![bfsgsg.PNG](https://qiita-image-store.s3.amazonaws.com/0/156510/375b5c70-4b74-854b-27ff-88c67d923a77.png)

#優先度設定と変更
InstectorタブのSpriteRenderのSortingLayerを変えることで表示の優先度を変更できます

![hshsgh.PNG](https://qiita-image-store.s3.amazonaws.com/0/156510/ec4cf7ed-d511-364e-1162-b4f285277b53.png)

下に行くほど前面に表示されます。

add...で追加や優先順位の変更も可能
キャラとか背景とかで事前に分けておくと楽ですね

![gsdfhgasgh.PNG](https://qiita-image-store.s3.amazonaws.com/0/156510/eba62964-5498-d292-833c-588a34dc259a.png)
Swift で optional なアイテムを array に連結

記事というより自分へのメモ

Array に Optional な Item を追加した時があった場合に、Item は値を持っているかもしれないし、nil かもしれません。仕方ないので、optional binding を使って連結していましたが、やっぱりなんかしっくりこないなと思っていました。

```swift
let item: String? = "a" // or nil
let items: [String] = ["b", "c", "d"]

var collection = [String]()
if let item = item {
	collection.append(item)
}
collection += items // ["a", "b", "c", "d"]
```

こんな書き方ができる事を見つけたので記録として残します。

```swift
let item: String? = "a"
let items: [String] = ["b", "c", "d"]

var collection = [item].flatMap { $0 } + items // ["a", "b", "c", "d"]
```

［執筆時点での環境に関する表記］

```text
Xcode Version 8.2.1 (8C1002)
Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1)
```
UnityでButtonを押しても反応がないとき

UnityでButtonを押しても無反応で動かない場合は

(1)ButtonのComponentとしてキチンとScriptが貼り付けられているかどうかを確認
(2)Buttonを押したときにScriptの関数が呼び出されるようになっているかどうかを確認
(3)Scriptの記載が間違っていないかどうかを確認

ここまでやっても、ボタンの反応がないときは
Event Systemがシーンに追加されていない可能性がある。

普通、シーン内にButtonを追加するとEvent Systemが自動的に用意される。
ところが、他のシーンのButtonをコピーするとEvent Systemは手動で用意する必要がある。

「他のシーンのボタンをそのままコピーして使いまわそう」とすると
この問題に陥る。

そして某シンジ君みたいにパニくる。でもEvent Systemを用意しない限り動かない。

Event Systemを追加するには
GameObject -> UI -> Event System

シーンに追加したあと、特に何もしなくて良い。（そこにいるだけでButtonを動かしてくれる模様）



(2016/12/26追記)
コメントにて以下のアドバイスをいただきました。

「透明オブジェクトでRay塞いでましたってのも多いですねー」

私はUnity初心者なので、間違っているかもしれませんが
おそらくボタンを押したつもりでも、カメラとボタンの間に透明なオブジェクトがあって
ボタンに触れているつもりが、実際には透明なオブジェクトに接触している、ということだと思います。

ありがとうございました。
Unity2D ～当たり判定のあるキャラと地面～

#はじめに
カメラだけ置いた状態から始めていきます


#キャラ作成
##キャラ表示
Hierarchyからcreate>2dオブジェクト>sprite
InspectorのSpriteに画像データ指定
↓今回はユニティちゃん2Dデータを使わせてもらいます
[ユニティちゃん2D](http://unity-chan.com/download/releaseNote.php?id=UnityChan2D)

![egfs5erhrth.PNG](https://qiita-image-store.s3.amazonaws.com/0/156510/f14eb526-0552-97b4-c916-82301903bd33.png)

##キャラへ重力と当たり判定付与
Inspectorタブからadd Component
- Rigidbody2Dで重力付与
- BoxCollider2Dで当たり判定付与
　　→ Edit Colliderで当たり判定をキャラ画像に合わせる   
![dfga.PNG](https://qiita-image-store.s3.amazonaws.com/0/156510/a5b96210-3218-1b77-2c9b-e17951bf8d82.png)

デバッグを始めるとキャラが下へ落ちていく

##地面作成
キャラとほぼおなじ
Hierarchyからcreate>2dオブジェクト>sprite
当たり判定だけ見てみたいなら
- BoxCollider2Dで当たり判定付与
　→　SizeのXを大きくする
こんな感じ↓
![gdsfgag.PNG](https://qiita-image-store.s3.amazonaws.com/0/156510/572a0bad-4c0a-78a3-86f8-43ee3034b521.png)

こんな感じでデバッグ開始すれば落下が途中で止まります。
地面完成！
NCMB(Unity,C#)で登録したobjectIdの保存＆検索

NCMBでobjectIdでデータを検索する方法は、以下のURLに記載されている。

http://mb.cloud.nifty.com/doc/current/datastore/basic_usage_unity.html

	// Parentクラスのうち、objectIdがxxxxxxxxのオブジェクトを取得する
	// このとき、Childフィールドに格納した子オブジェクトも取ってくるよう指定
	NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("Parent");
	query.WhereEqualTo("objectId","xxxxxxxx");
	query.Include("Child");
	query.FindAsync ((List<NCMBObject> objList ,NCMBException e) => {
	    if (e == null) {
	        // 取得成功時
	        foreach( NCMBObject obj in objList ){
	            NCMBObject child = (NCMBObject)obj["Child"];
	            Debug.Log( child.ObjectId );
	        }
	    } else {
	        // 取得失敗時
	    }
	});

でも、そもそも登録したレコードのobjectIdを保存する方法が書かれていない。
（登録したレコードを後から名前などで検索する方法は却下。あくまで匿名の人間のレコードを登録した瞬間に保存する方法を書いている）

自分で色々調べてみたら、以下の書き方でobjectIdを保存できた。
ただしこれが正しいかどうかは分からない。

    string object_id_ = "TEST";
    NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject>(class_name_);
    query.WhereEqualTo("objectId", object_id_);
    query.FindAsync((List<NCMBObject> objList, NCMBException e) =>
    {
        //検索成功したら    
        if (e == null)
        {
            //未登録だったら
            if (objList.Count == 0)
            {
                NCMBObject obj = new NCMBObject("HighScore");
                obj["score"] = score_;
                obj.Save();
                object_id_ = obj.ObjectId;
                //PlayerPrefs.SetString("objectId", object_id_);
            }
            else
            {
                //更新したい場合は、ここに処理を記載
                //(単体)objList[0]
                //(複数)foreach NCMBObject obj in objLit
                objList[0]["score_"] = 9999;
                objList[0].Save();
            }
        }
    });


ポイントとしては、obj.SaveAsync()ではなくてobj.Save()としているところ。
非同期ではなくて、同期でやる。

SaveAsyncにすると、

    object_id_ = obj.ObjectId;

でstring object_id_に空白が入る。

（でも、素人だから非同期と同期の使い分けが分からない。こういうやり方してもいいのか？）
TeXインストーラ3を使ってのTeXインストール（備忘録）

# 参考ウェブページ

[簡単LaTeXインストールWindows編（2016年4月版）](http://did2memo.net/2016/04/24/easy-latex-install-windows-10-2016-04/)
[TeXインストーラ3](http://www.math.sci.hokudai.ac.jp/~abenori/soft/abtexinst.html)
[TeXインストーラ3で「情報ファイルの発見に失敗」の対処法](http://blog.goo.ne.jp/xmldtp/e/42be6bcd8da4ae57db5ee916bb5a5f45)
(新人向け)エンジニアに知っておいて欲しい英単語まとめ

## 紹介

デバッグやコンソールでのエラー、各種ログを見るときにポイントとなる英単語の紹介です。

### ログ系

#### [debug]

その名の通り、デバッグ用出力。基本は自身が仕込んだものが出る。production mode で動かすと画面には出ないことも。

#### [info]

情報表示系。SQLを裏で走らせたとか、ライブラリが出すことも。

#### [warning]

非推奨のメソッド使ったとか、引数がちょっとおかしいとか。プログラムが停止するほどではないが、このログが出てるとちょっとまずい。のちにバグの温床となるおそれがあるため、原因を探して潰しておきたい。

#### [fatal]

致命的エラー。おそらくプログラムが異常終了している。例外が出たときもfatalになることが多いので、エラーハンドリングをすれば直ることも。

### コンソールエラー系

#### Permission denined

権限エラー。権限がないときに起こる。大抵はsudoをつけるとでなくなる。しかし、何も考えずにsudoで実行すると痛い目にあうことも。なぜsudoが必要か分からない場合は、周りの先輩に一言聞いてみよう。

#### No such file or directory

ファイルとかディレクトリがないよエラー。
パスを指定したけど、指定先に何もなかったときに起こる。パスの先を`ls -l`とか`cat`とかで確認してみよう。

#### Invalid

無効。Invalid userとか。

### 英単語系

#### authorize

認証。authenticateとか、似たようで微妙に違う単語もある。慣れてくると分かるようになるので、それまでは認証でひとくくりでも良いかも。

#### not found

見つからなかった。404 Not foundが最も有名。ブラウザで存在しないurlを叩くと出る。

#### required

Authentication required (認証が必要)とか。これもよく見る。

### その他

#### Stack Overflow

スタックが溢れたこと。メモリを使いすぎたときとか。その他、Q&Aサイトのことを指す。困ったときにググるとだいたいStackOverflowのサイトに行き着くことが多い。

## あとがき

役に立ちそうな英単語を見つけたら追記していきます。
顧客評価について

#顧客評価について
25歳からIT業界に入って今34歳。
４年目に会社変わって、９年目からフリーランスになりました。
一年めからず〜っと客先に出向して仕事してますが、フリーランスになってから、
今まで以上に、お客さんの評価というのを意識して仕事をしています。
というのも自分の評価が単価に直結したり、いつまでこの現場で仕事があるのかなど、収入に直結してくる為です。
そこで客先で仕事するにあたって、自分が意識してることを書いていきたいと思います。

##面接
プロジェクトに参加する為の第一関門。
意識してることは常に前向きな姿勢です。
というか、盛りますw
多少自信がないことでも「大丈夫です！できます！！」って言い切ります。
そして、その後猛勉強します。その現場に入ってからできてたら何の問題もないと思ってるので、この自分にプレッシャーをかけるやり方はスキルアップのためには、ありなのではと思ってます。（注　もちろん、全くやったことないことを「やったことあります」とか嘘はつきません。）

##プロジェクトに参加してから
最初が肝心です。
面接で経歴を話しているとはいえ、本当にできるのかと見られてます。
逆にそれは自分をアピールするチャンスだと考えています。
例えば、作業を前倒しで進めて仕事の早さをアピールしたり、指示待ちにならないように(でもこれは空気を読んで動かないと鬱陶しがられる可能性あり)、設計のバグを見つけたら、報告するだけではなく対処法を提案してみたり。
お、この人は他のパートナーさんとちょっと違うなと思われることが大事だと思います。

経験が浅いうちは前向きな姿勢や、謙虚な姿勢が何より大切だと思います。
先輩に「あ、この子は一生懸命仕事に向き合ってるなと」思ってもらえるような姿勢が大事です。そんな人はきっと周りが助けてくれます。

##日頃意識してること
###資料の保存
設計書などを作った時、最後に保存する時は全シートを「A1」にカーソルを合わせ、先頭のシートを表示した状態で保存するようにしてます。
読んでもらうために書いてるのに、開いた時に途中から始まってたりするのは、何か違うなと。
###困ってる人がいないかと常に注意を払う
自分が作業をお願いした人に対しては特に意識してます。問題があった場合は一緒に考えます。頼られる存在になりたいし、自分も今までそうやって助けてもらってここまで来てるので、恩返しの気持ちを込めて。

などなど。
##でも最後は気持ち
なんやかんや書いてきましたが、
そこにいる人たちのために仕事すること。
それが一番大事なのかなと思います。
残業が多くて大変な人がいたら仕事をもらい、その人が少しでも楽になってくれたらいいなと思ってますし、困ってる人がいたら、いくらでも一緒に考えたいなと思ってます。
人の助けになるには、やっぱり実力が必要なんだと最近思い始めました。
自分の仕事を早く終わらせるのも、相談に乗るのも自分に実力がなければできないことです。
もっとチームの役に立ちたいし、もっともっと人の役に立ちたいです。
これからはそれができるように勉強をいっぱいして自分を磨いていこうと思います。
ブログのタイトルとはだんだんズレていきましたが、今後の自分の決意表明としてアドベントカレンダーの締めくくりとしたいと思います。
Solidityで他のコントラクトを呼ぶサンプル・コード

以下に移行しました<br><a href="http://block-chain.jp/tech/solidity-call-contract/" title="Solidityで他のコントラクトを呼ぶサンプル・コード">Solidityで他のコントラクトを呼ぶサンプル・コード</a>
炎の型工房 火の型 24日目 : DartのSleep機能!! Scratchと比較してみよう

[<ruby>炎<rt>ほのお</rt></ruby>の<ruby>型<rt>かた</rt></ruby><ruby>工房 <rt>こうぼう</rt></ruby>ScratchとDartでゲームプログラム<ruby>入門<rt>にゅうもん</rt></ruby> Advent Calendar 2016](http://qiita.com/advent-calendar/2016/firefirestyle-studio)
の<ruby>記事<rt>きじ</rt></ruby>です


# Sleep<ruby>機能<rt>きのう</rt></ruby>を<ruby>利用<rt>りよう</rt></ruby>してみよう

<ruby>前回<rt>ぜんかい</rt></ruby>の<ruby>方法<rt>ほうほう</rt></ruby>だと、メッセージが<ruby>凄<rt>すご</rt></ruby>い<ruby>勢<rt>いきお</rt></ruby>いで<ruby>流<rt>なが</rt></ruby>れていくので、<ruby>間<rt>あいだ</rt></ruby>にSleepを<ruby>入<rt>い</rt></ruby>れてみましょう。

<img width="600" alt="v001.png" src="https://qiita-image-store.s3.amazonaws.com/0/54192/75e8d1cb-3f87-5420-c199-d8df46742f97.png">


を、Dartで<ruby>書<rt>か</rt></ruby>いてみましょう。

```
import 'dart:math' as math;
import 'dart:async';

main(List<String> args) async {
  var rand = new math.Random();
  var messages = ["hello", "bye"];
  while(true) {
    print("${messages[rand.nextInt(2)]}");
    await new Future.delayed(new Duration(seconds: 1));
  }
}
```

## Sleep<ruby>機能<rt>きのう</rt></ruby>を<ruby>利用<rt>りよう</rt></ruby>するには、dart:async パッケージを<ruby>利用<rt>りよう<rt></ruby>します。
#### パッケージを<ruby>宣言<rt>せんげん</rt></ruby>する
```
import 'dart:async';
```

#### main<ruby>関数<rt>かんすう</rt></ruby>にasyncを<ruby>定義<rt>ていぎ</rt></ruby>する
```
main(List<String> args) async {
}
```

#### 1<ruby>秒<rt>びょう</rt></ruby>sleepするコードを<ruby>書<rt>か</rt></ruyb>く
```
  await new Future.delayed(new Duration(seconds: 1));
```

awaitを<ruby>宣言<rt>せんげん</rt></ruby>する<ruby>事<rt>こと</rt></ruby>で、1<ruby>秒<rt>びょう</rt></ruby>その<ruby>場<rt>ば</rt></ruby>で<ruby>待<rt>ま</rt></ruby>てるようになります。

awaitを<ruby>利用<rt>りよう</rt></ruby>したい<ruby>場合<rt>ばあい</rt></ruby>は、<ruby>関数<rt>かんすう</rt></ruby>にasync<ruby>宣言<rt>せんげん</rt></ruby>をする<ruby>必要<rt>ひつよう</rt></ruby>があります。


## Thanks

ここまで、<ruby>読<rt>よ</rt></ruby>んでくれてありがとう!!

では、<ruby>次回<rt>じかい</rt><ruby><ruby>会<rt>あ</rt></ruby>えることを、<ruby>楽<rt>たの</rt></ruby>しみにしています。

ではでは
State of the Map 2017 in Aizuwakamatsu

##State of the Map 2017は会津若松市にて開催！
来年開催予定の第10回OpenStreetMap年次国際会議 State of the Map 2017の開催地が会津若松市に決定したことが12月7日発表されました。https://blog.openstreetmap.org/2016/12/07/announcing-the-10th-state-of-the-map/
![reervbreg.jpg](https://qiita-image-store.s3.amazonaws.com/0/153751/f1babf05-f32d-4022-828f-37d8e1cf4347.jpeg)
##State of the Mapとは
[State of the Map（SotM）](http://wiki.openstreetmap.org/wiki/State_Of_The_Map)は、OpenStreetMapに関する世界最大の年次国際会議です。世界各国の一般マッパー、GIS開発者、アプリケーション開発者、OSMコミュニティ指導者、政府関係者・自治体・団体・企業の関係者が一同に会し、基調講演、各種プレゼンテーション、ハッカソン等が行なわれます。SotMではOpenStreetMapに関わる技術・国際交流が図られ、OSMコミュニティにおける発展と協調を促進します。
[今年9月、ベルギーのブリュッセルで第9回SotM2016が開催されました。](https://blog.openstreetmap.org/2016/10/10/sotm-thanks/)52カ国から400名の参加者がありました。SotMは過去マンチェスター、リムリック、アムステルダム、ジローナ、東京、バーミンガム、デンバー、ブエノスアイレス、ブリュッセルなどの都市で開催され、近年参加者は300～400名規模となっています。
![2016bru2.jpg](https://qiita-image-store.s3.amazonaws.com/0/153751/e5dcca69-901d-6c34-2729-ce22a0fe95a9.jpeg)
##国際会議SotM誘致活動
2015年暮れに、OSMの福島ユーザーグループで「OSMカンファレンスを福島で開催する！という夢を追ってみますか」という話題があがり、早速FacebookにSotM誘致グループ「State of the Map in Fukushima」を作成、グループのテーマは『OpenStreetMapカンファレンスを福島で開催することを夢見て、あれこれ話し合う場所です。国内、国際会議を問わずアイデアを出し合えればと思います。』という内容でした。一番の目的は、日本ローカルの国内向けOSM年次カンファレンスSotM Japanの福島誘致でしたが、この際だからエイッと本家の国際会議SotMの誘致も視野に入れますかと進展しました。その後、2016年国内向けOSMカンファレンスSotM Japanの開催地が東京と決まり、夢の国際会議SotM開催地への立候補への関心がより高まりました。
![g-gh.jpg](https://qiita-image-store.s3.amazonaws.com/0/153751/5908f959-24ba-af80-ede0-77245c36472f.jpeg)
##SotM開催地コンペティション
[SotM開催地決定は公募によるコンペ形式です。](http://wiki.openstreetmap.org/wiki/State_of_the_Map_2017/Call_for_venues)例年、複数の大都市が立候補して開催条件を公開し、選考を受け開催地が決定されてきました。そんな晴れの舞台に日本の小都市で立候補できる？国際会議開催可能なの？と情報収集・プラン検討など、手探り状態でした。それでもまずSotM開催地コンペへ条件を満たして応募することを第１のマイルストーンとしてグループ活動を進めました。
2016年3月、SotM開催地コンペの参加募集が開始されました。OSM福島のローカルグループとして会津若松市開催で提案書を提出、応募しました。またプロモーション用として[会津若松市開催提案サイトを作成公開しました。](http://wiki.openstreetmap.org/wiki/State_of_the_Map_2017/Call_for_venues/Fukushima)
最終的にSotM2017開催地コンペに参加したのは、[会津若松市(12万都市)](http://wiki.openstreetmap.org/wiki/State_of_the_Map_2017/Call_for_venues/Fukushima)と[イタリア・ミラノ(130万都市)](http://wiki.openstreetmap.org/wiki/State_of_the_Map_2017/Call_for_venues/Milan)の2都市でした。この2都市で選考がおこなわれることに。。。
![vghkuvbh.jpg](https://qiita-image-store.s3.amazonaws.com/0/153751/2aacbb8d-7692-2273-581c-e04a5117a809.jpeg)
http://wiki.openstreetmap.org/wiki/State_of_the_Map_2017/Call_for_venues/Fukushima
http://wiki.openstreetmap.org/wiki/State_of_the_Map_2017/Call_for_venues/Milan

##2017年夏、SotM会津でお会いしましょう！
2016年8月、主催するOSM財団から会津若松市が開催地として暫定決定したとの連絡が来ました。会場、期間等の協議調整を続け、12月正式発表となりました。春に開催立候補した後、長い期間待ちましたが、おかげさまで会津若松市開催という良い知らせをいただくことができました。
日本でのSotM国際会議開催は2012年のSotM2012Tokyoに続き2回目となります。世界中からOSMコミュニティーのメンバー、仲間たちが日本にやってきます。ぜひこの機会にご参加ください。
また、開催にあたりましてはOSMコミュニティー、関係団体、企業の皆様にもご協力、ご支援等お願いすることとなると思います。どうぞよろしくお願いいたします。
2017年夏、SotM会津でお会いしましょう!
Octaveで制御工学のための環境を作る

# この記事について

* 制御工学の勉強にOctave使う必要が出てきたので環境構築方法を簡単にメモ．
* 出力したインパルス応答の値がなんかおかしかったのでそれについてもメモ（未解決）．

# 環境

今回は以下の環境に制御工学用の環境構築を行った．

* Windows10 Bash on Ubuntu on Windows
* Octave 3.8.1

# 手順

まず，controlパッケージの最新版 (2016.12.24時点では3.0.0) をwgetにより取得する．

```
$ wget https://downloads.sourceforge.net/octave/control-3.0.0.tar.gz
```

次に，Octaveを起動してcontrolをインストールする．Octaveはsudoで起動しないとパッケージインストール時にPermission Denied喰らうので注意．

```
$ sudo octave
octave> pkg install -global control-3.0.0.tar.gz
```

`For information about changes from previous versions of the control package, run 'news control'.`というメッセージが出てきたらインストール完了．
下記コマンドでパッケージを読み込むことができる．

```
octave> pkg load control
```

Octaveを起動するたびにパッケージの読み込みを行うのは面倒くさいので，ホームディレクトリに以下のような内容の`.octaverc`ファイルを作成しておくと便利．

```:.octaverc
pkg load control
```

# テスト

以下のように定義した伝達関数$G(s)$のインパルス応答$g(t)$をプロットしてみる．

```math
G(s) = \frac{1}{s^2 + 5s + 6}
```

Octaveのコードと出力結果は以下の通り．

```
octave> G = tf([1], [1, 5, 6])
octave> impulse(G)
```

![impulse_test.png](https://qiita-image-store.s3.amazonaws.com/0/83161/c608eabd-5f5d-2c05-e248-64d6692e34c6.png)

解析解は $g(t) = e^{-2t} - e^{-3t}$ なんだけどグラフが微妙に違う…？
Unity2D　～プロジェクト作成から画面表示まで～

#はじめに
Unity2Dでアンドロイドアプリ作っていきます

#環境
Unity5.5.0
windows10 64bit


#プロジェクト作成
- Unity起動
- プロジェクト名入力
- 2D選択
- 作成

![s-shoki.jpg](https://qiita-image-store.s3.amazonaws.com/0/156510/3d229872-df73-21f2-7177-06952a802faf.jpeg)

#画面表示
##画面サイズ設定

File＞Build Setting 
プラットフォーム選択でAndroid

Gameタブで画面サイズ適当に変更
![s-fsa.jpg](https://qiita-image-store.s3.amazonaws.com/0/156510/0ccca330-edac-4204-7c98-a826061465a7.jpeg)

##カメラ作成
Hierarchyタブのcreate>UI>Canvas
create>camera
でNo cameras...が消えて画面表示
cameraとCanbasのサイズ合わせとく

適当にテキストとか作ったら表示されてます！

![s-grdh.jpg](https://qiita-image-store.s3.amazonaws.com/0/156510/f8ff4245-05ec-35fe-be7e-75fbf7402bfc.jpeg)
IchigoJamでIoT/IFTTTを使ってLINEにメッセージ送信する

IchigoJamでIoT


■ハードウェア
IchigoJam
MixJuice(IchigoJam用WiFi追加ボード)
外付けボタン

■オンラインサービス
IFTTT
https://ifttt.com/maker
https://ifttt.com/line
MakerでIchigoJamからのアクセスを受け取り、Triggerとします。その結果自分のLineにメッセージを送るように設定します

■情報の流れ
IchigoJam with MixJuiceでボタンが押される
↓
IchigoJamからIFTTTサーバーへアクセス(Maker Trigger発火)
↓
IFTTTサーバーがLINEサーバーへ通信
↓
LINEサーバーがLINE端末へメッセージ送信

■プログラム
10 IF BTN()=1 ?"MJ GETS　maker.ifttt.com/trigger/when_willyou_back/with/key/**********/
20 IF BTN()=1 GOTO 20
30 GOTO 10

*****にはご自身のMakerKeyが入ります

■動作の流れ
1)ボタンを押す
![2016-12-24_02-42-13_375.jpeg](https://qiita-image-store.s3.amazonaws.com/0/71746/f6a373c9-f5d0-aa32-580e-6b3aaed5f772.jpeg)

2)LINEにメッセージが届く
![2016-12-24_02-42-34_444.jpeg](https://qiita-image-store.s3.amazonaws.com/0/71746/2fd08bb1-9144-1a2a-359f-5ac8d46e0ba3.jpeg)


メッセージ拡大
![2016-12-24_02-42-40_260.jpeg](https://qiita-image-store.s3.amazonaws.com/0/71746/17de470d-e9b3-8dec-7700-2a8f8e64f504.jpeg)




■ハードウェア
![ichigoaaa.GIF](https://qiita-image-store.s3.amazonaws.com/0/71746/2170784a-9f23-4f15-b756-c8a342d19811.gif)
ev3devでmindstorm-EV3のスピーカーを使ってしゃべらせてみる

## はじめに
ev3devを使ってmindstorm-EV3インテリジェントブロックのLEDを制御する方法を紹介します。
この記事は、EV3にev3devをインストールし、SSH接続できている状態であることを前提にしています。環境構築ができていない方はこちらの記事を参考にしてください。
>
[mindstorm-EV3をLinuxで制御しよう! ev3dev OSのインストールととSSH接続](http://qiita.com/murotani/items/46f905bec33b1673c41a)

## beepコマンドで音を鳴らそう
beepコマンドで音の周波数や再生時間を指定することができます。
周波数は1以上20000未満を指定できます。あまり周波数を高くすると、人間の耳には聞こえなくなってしまいますので、まずは400Hz低度で試してみましょう。また、再生時間をミリ秒単位で指定できます。

```
# beep # 440 Hzの音を200ms再生
# beep -f [周波数/Hz] -l [再生時間/ms]
robot@ev3dev:~$ beep -f 440 -l 200 
```

## きらきら星を演奏させてみる
きらきら星を演奏するシェルスクリプトファイルを作ってstar.shとして保存しましょう。

```bash:star.sh
#!/bin/sh

beep -f 262 -l 180 -d 20 -r 2 \
-n -f 392 -l 180 -d 20 -r 2 \
-n -f 440 -l 180 -d 20 -r 2 \
-n -f 392 -l 380 -d 20 \
-n -f 349 -l 180 -d 20 -r 2 \
-n -f 330 -l 180 -d 20 -r 2 \
-n -f 294 -l 180 -d 20 -r 2 \
-n -f 262 -l 400
```

実行
```robot@ev3dev:~$ sh star.sh
```

## デバイスファイルを使う方法
### 音の再生
beepコマンド以外にも、デバイスファイルを使って音を再生することが可能です。

```
# 440 Hzの音を200ms再生
robot@ev3dev:~$ echo 440 200 >  /sys/devices/platform/snd-legoev3/tone
# 1000Hzの音を再生（連続）
robot@ev3dev:~$ echo 1000 >  /sys/devices/platform/snd-legoev3/tone
# 再生停止
robot@ev3dev:~$ echo 0 >  /sys/devices/platform/snd-legoev3/tone
```

### ボリュームの調整
音量を調整することができます。デフォルトの音量は75に設定されていて、最小0最大100の範囲で設定可能です。

```
#デフォルトのボリューム(75)
robot@ev3dev:~$ cat /sys/devices/platform/snd-legoev3/volume
75
#ボリュームを100に設定
robot@ev3dev:~$ echo 100 >  /sys/devices/platform/snd-legoev3/volume
```

##テキストをしゃべらせる
本題です。
espeakコマンドとwavファイルを再生するaplayコマンドを組み合わせて、EV3をしゃべらせてみましょう。

```
robot@ev3dev:~$ espeak "hello, I am an EV3." --stdout | aplay
Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
```
「hello, I am an EV3.」ev3がしゃべりました。男性の声でしたね。
女性の声にしたいならこうです。

```
# 女性声バージョン
robot@ev3dev:~$ espeak -ven-us+f4 -s170 "hello, I am an EV3." --stdout | aplay
Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
```

##音声をwavファイルとして保存したい
先程のEV3がしゃべった音声をファイルとして保存するのは簡単です。

```
# hello.wavとして保存
robot@ev3dev:~$ espeak "hello, I am an EV3." --stdout >> hello.wav
```
再生

```
robot@ev3dev:~$ aplay hello.wav
Playing WAVE 'hello.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
```

## 参考
[ev3dev 公式ページ](https://github.com/ev3dev/ev3dev/wiki/Using-Sound)
Java のメソッド修飾子(method modifiers) の順番は決まっている

# Java の method modifiers の順番

Java のメソッド修飾子(method modifiers) の順番は一応決まっています。

```java
Annotation public protected private
abstract static final synchronized native strictfp
```

の順で書くのが習慣上よいそうです。



# 例

○ `public static final`
× `public final static`

○ `public abstract`
× `abstract public`



# 言語仕様に書いてある

なんとJavaの言語仕様にかいてありました。
言語仕様のなかでコーディングスタイルにまで言及するんですね。意外でした。

> If two or more (distinct) method modifiers appear in a method declaration, it is **customary**, though **not required**, that they appear in the order consistent with that shown above in the production for MethodModifier.
> 
> *The Java® Language Specification - Java SE 12 Edition*
> *https://docs.oracle.com/javase/specs/jls/se12/html/jls-8.html#jls-8.4.3*


# 参考
- [The Java® Language Specification - Java SE 12 Edition - 8.4.3. Method Modifiers](https://docs.oracle.com/javase/specs/jls/se12/html/jls-8.html#jls-8.4.3)
- [修飾子の順番はPHPとJavaで異なる](http://qiita.com/Hiraku/items/4120493f1cf596e416b6)
OpenStack入門：OpenStack勉強用環境をAWS上に構築する

[RDO](https://www.rdoproject.org/)は、CentOS、Fedora、およびRed Hat Enterprise Linuxを使用してOpenStackを構築する人々のためのコミュニティです。

RDOに [All-In-One Quickstart](https://www.rdoproject.org/install/quickstart/ "Packstack quickstart - RDO") というガイドがあるので、これを参考に手軽に環境構築をしましょう。

All-In-Oneとは、すべてのコンポーネントを１つのサーバ上で構築することを意味します。OpenStackにはたくさんのコンポーネントがあり、本番環境を構築・運用するにはコンポーネントごとにサーバーを分ける必要がありますし、冗長構成についても考える必要があります。しかしそれは非常に難しいので、まずOpenStackを勉強したいという人には高い高いハードルとなります。All-In-One Quickstartは、わずらわしい環境構築をすべてすっ飛ばして、とりあえず動作する環境を作るためのです。

**ハマリポイント**

* 6GBのメモリが必要なので、AWSのインスタンスは t2.large で作ること
* sshログインユーザはcentos
* OpenStackインストール後、apacheのバーチャルホストの設定を修正する（後述）



[続きはWebで...](https://grgrjnjn.blogspot.jp/2016/12/openstackopenstackaws.html "OpenStack入門：OpenStack勉強用環境をAWS上に構築する")
Oracle IN句の代わりに擬似テーブルを使ってみた

IN句に40個くらいの条件を入れたら、7秒ほどかかったので、
擬似テーブルを使ったらどうなるんだろうかと思い、実験してみた。
Oracle 11gで検証。


# SQL内でしか使わない使い捨ての擬似テーブル
```sql
SELECT *
FROM table
WHERE id IN (00001, 00002, 00003)
```
こんな風に書いていたSQLを
下記のように書き換えて実行してみる。

```sql
SELECT table1.* 
FROM table table1
     ,(
         SELECT 00001 AS id FROM dual
         UNION ALL
         SELECT 00002 AS id FROM dual
         UNION ALL
         SELECT 00003 AS id FROM dual
     ) table2
WHERE table1.id = table2.id
```

実行時間は11秒。。。
遅すぎるので結局大人しくIN句を使った