OmniAICreator/Qiita-1.07M huggingface dataset:
MySQL で Sleep 状態のコネクションを一気に解放する方法


## はじめに
max_connections = 25000 に設定してある状態で、Sleep 状態のコネクション（プロセス）が 25000 に張り付いたまま解放されないという非常に困る経験をしました。

kill コマンドで 1 個ずつコネクションを消していくことは可能ですが、大きいサービスでアクセスが集中している状況だと、次から次へとコネクションが貼られるので、全く解決に至りません。

そんな状況で、一気にコネクションを解放する方法を探して、実際にやってみて問題を解決することができたので、ここに書いておきます。

**補足**
「コネクション = プロセス」として話を進めます。

## 方法
### Sequel Pro を用意する
http://www.sequelpro.com/

ターミナルを使っても良いのですが、今回 Sequel Pro を使うととても楽に出来たので、Sequel Pro を使った場合の方法を書いています。（ターミナルを使う場合は以下の参考のリンクを参考にしてください）

### プロセスの状況を確認する
プロセスの状況を確認し、解放してはいけないプロセスがないかを確認しておきます。

```mysql
show processlist;
```

### concat を使って複数の kill コマンドを作る
以下のコマンドを流すと複数の kill コマンドが出力されます。
limit と user は適宜変更してください。
本番で動いているサービスなら、limit は最初 100 とかにして、とにかく慎重にやった方が良いです。

```mysql
select concat('KILL ',id,';') from information_schema.processlist where user='root' limit 5000;
```

### 出力された kill コマンドを実行する
出力された複数の kill コマンドを全選択コピーし、ペーストし、Sequel Pro の「すべてのクエリを実行」で実行すると、5000 件の kill コマンドが一気に流れてくれます。

```mysql
KILL 23718469;
KILL 23721780;
KILL 23713641;
KILL 23747333;
KILL 23728007;
KILL 23719119;
KILL 23758587;
KILL 23764518;
KILL 23721484;
KILL 23760318;
KILL 23597168;
KILL 23740040;
.
.
.
KILL 23727601;
```

### プロセスの状況を確認する
最後に再度プロセスの状況を確認して、減っていれば成功です。

```mysql
show processlist;
```


## 参考
https://www.percona.com/blog/2009/05/21/mass-killing-of-mysql-connections/
http://libitte.hatenablog.jp/entry/20141202/1417452564
Macしか使ったこと無い人がよくやるチルダの間違った使い方


まず、下の文章がどう表示されるだろうか。

「北斗の拳 ~世紀末救世主伝説~」

多分、WindowsマシンやAndroid端末の方にはちょっとかっこ悪く表示されているんじゃないだろうか。MacやiPhoneだと別に違和感ないだろう。

「~」は半角のチルダである。windowsだと「^」同様に上付きの文字として表示される。だが、Macだと上下中央位置に表示されるのだ。
それを知らないMacユーザーは何のためらいもなく上のような使い方をしてしまう。
Windowsでもきれいに上下中央に表示したいのであれば、代わりに「〜」(波ダッシュ)を使った方が良い。
EC2をはじめよう(基礎用語)

#参考
Amazon Web Services基礎からのネットワーク&サーバー構築


#ネットワーク 基本

- 構成したサーバーはネットワークに接続しないと、通信できない。
- インターネットと接続可能なネットワークでは、TCP/IPというプロトコルを使う。
- TCP/IPではそれぞれのサーバーに、IPアドレスをふる。
- インターネットに接続する場合には通常、ルーターを使う。
- 各サーバーではルーターにデータが流れるように構成する。
- インターネットでは、
 http://www.example.co.jp
 のようなドメイン名でアクセスする。
- ドメイン名を使うためにDNSサーバーが必要。

#ネットワークを構築するために必要な知識
1.IPアドレスに関する知識
IPアドレスをどのように定めるのか、そしてルーターを介したインターネットとのデータの流れをどのように制御するのか。

2.DNSサーバーに関する知識
ドメイン名とIPアドレスとを結びつけるには、どのようにすればよいのか。
どのようなやりとりで、ドメイン名とIPアドレスとは相互に変換されているか。

#OSと構成
ApacheはさまざまなOSで利用できる。
手軽にインストールできるUNIX系OSの代表として、
CentOS6やUbuntuなどの各種LinuxディストリビューションやMacのOSXがある。

サーバーでは、GUIは必要ない。LinuxではGUIをインストールしなければコンソール画面になるほか、sshなどでリモートアクセスして使う。

#UNIX系OS
OS環境は異なっても動作するApacheというソフトウェアは同じもの。設定項目や設定方法の多くは同じもの。ただし。設定ファイルの位置やデフォルトの構造に違いがある。

###CentOS
Red Hat社が提供するRed Hat Enterprise　Linuxをベースにし、互換性を持たせた無料のサーバー向けLinuxディストリビューション。

パッケージ管理にyumコマンドを使う。Apacheのパッケージ名は、「httpd」で、2.2系のApacheが利用できる。

#####yumとrpmの違い
http://blog.inouetakuya.info/entry/20111006/1317900802

###Ubuntu
Debianをベースに使いやすさに重点を置いてCanonicak社により開発されたLinuxディストリビューション。特にデスクトップ分野で人気がある。

パッケージ管理にapt-getコマンドを使う。Apacheのパッケージ名は「apache2」になる。

###OS X(Mac)
AppleのMac向けのOS。サーバー版も販売されている。
Apacheは、機能の一部として最初からインストールされている。

###Apacheのバージョン

- バージョン2.0,2.2,2.4の違い

2012年2月に2.4.1がリリースされたことにより、2.2系と2.4系の2つのバージョンに移行することが推奨されている。併存するバージョンのどちらを選択するかについては、どちらがよい、悪いというわけではなく、状況に応じて使い分けること。

#パッケージからインストールするということ

OSで用意されているパッケージを利用する場合のメリットは、メンテナンスの手間が少ないことです。
ソースでインストールする場合は、バージョンやセキュリティ情報を自分でチェックして、必要に応じてコンパイルしてインストールしなければならない。

パッケージを利用すれば、新しいパッケージをダウンロードして簡単にアップデートできるし、自動的に最新版にアップデートすることもできる。

###wgetと開発ツール
ソースファイルのダウンロードにwgetを使う
ソースからのコンパイルには、makeやgccなどのコマンドを使う。
※最小構成でOSをインストールした場合は上記のコマンドがインストールされていないことがある。
その場合は、yumやapt-getを使って、wgetやmake、gccをインストールをする。

#Amazon Linux AMI

http://aws.amazon.com/jp/amazon-linux-ami/

Amazon Linux AMI には、アマゾン ウェブ サービスとのシームレスな統合を可能にするパッケージおよび構成が含まれています。これにより、Amazon Linux AMI は面倒な設定をすることなく各種の AWS サービスで起動、実行できます。

リポジトリはすべてのリージョンで利用でき、yum でアクセスできます。各リージョンにホスティングリポジトリがあるため、データ転送料金なしで、アップデートを迅速にデプロイできます。

###用語
- デーモン
UNIX系OSではサーバーの機能などを複数のユーザーに提供し続けるプログラムのことをデーモンという。

※yumコマンドは、アプリケーションをダウンロードしてインストールしたり、アンインストールしたりするときに用いる管理者用コマンド。

※-yオプションはユーザーの確認なしにすぐにインストールする指定。

※sudoコマンドは、指定したコマンドを管理者権限(root権限)で実行するためのもの。

※インスタンスにはec2-userユーザーでログインする。ec2-userユーザーは管理者(rootユーザー)ではない。そのため、管理者権限が必要な場合は、sudoコマンドをつけて実行する。
【C#】enumを型制約で扱う

# ジェネリックの型制約

where句を使うと、型パラメータに制約をかけられる。

```csharp
class MyClass1<T>
	where T : class		// TはクラスならなんでもOK
{
}

class MyClass2{}

class MyClass3<T>
	where T : MyClass2	// TはMyClass2、またはその派生クラス
{
}
```

複数指定する場合。

```csharp
class MyClass1{}
class MyClass2{}

class MyClass1<T, U>
	where T : MyClass1
	where U : MyClass2
{
}
```

## 値型を型パラメータで扱う

```csharp
class MyClass<T>
	where T : struct		// Tは値型
{
	private T m_param;
}

{
	MyClass<int> myClass = new MyClass<int>();
}
```

## enumを型パラメータで扱う

enumは値型に含まれるので、intと同様に型制約の指定ができる。

```csharp
class MyClass<T>
	where T : struct		// Tは値型
{
	private T m_param;
}

enum MyEnum
{
	INDEX0 = 0,
	INDEX1,
	INDEX2
}

{
	MyClass<MyEnum> myClass = new MyClass<MyEnum>();
	myClass.m_param = MyEnum.INDEX0;
}
```


＃＃ 参考サイト

where (ジェネリック型制約)
https://msdn.microsoft.com/ja-jp/library/bb384067.aspx

値型
https://msdn.microsoft.com/ja-jp/library/s1ax56ch.aspx
goto-scope つくった

メンテ出来てなかったので、atom.io から削除(unpublish)しました。 2016.8.3.

# goto-scope つくった

[goto-scope](https://atom.io/packages/goto-scope)

string, function, variable に一発でカーソルを移動できる。

# 機能

* カーソルを `scope`(string, function, variable 等) に一発で移動
* ユーザー側でカスタム・コマンドを追加可能

# コマンド

string
* `goto-scope:string-next`
* `goto-scope:string-prev`

function
* `goto-scope:function-next`
* `goto-scope:function-prev`

variable
* `goto-scope:variable-next`
* `goto-scope:variable-prev`

keyword
* `goto-scope:keyword-next`
* `goto-scope:keyword-prev`

constant
* `goto-scope:constant-next`
* `goto-scope:constant-prev`


# キーマップ

デフォルト keymap は無し
おすすめのキーマップは特に思いつきません。

* ノーマルユーザー

???

* [vim-mode](https://atom.io/packages/vim-mode) ユーザー

???

* 私の設定(vim-mode).

```coffeescript
'atom-text-editor.vim-mode.command-mode':
  's': 'goto-scope:string-next',
  'S': 'goto-scope:string-prev',
  ')': 'goto-scope:function-next',
  '(': 'goto-scope:function-prev',
  ']': 'goto-scope:keyword-next',
  '[': 'goto-scope:keyword-prev',
  '@': 'goto-scope:variable-next',
  '!': 'goto-scope:constant-next',
```
DB2のLOADコマンド


DB2におけるLOADコマンドについてまとめておく。
対象テーブルの全データを入れ替え、パフォーマンス重視のためフォワードリカバリーは考慮しないものとする。

## コマンド

```sql
LOAD FROM filename OF filetype
  MODIFIED BY file-type-mod
  WARNINGCOUNT n
  MESSAGES message-file
  REPLACE INTO table-name
  NONRECOVERABLE
```

パラメータ | 説明
------------- | ----------------------------
filename      | ロードするデータファイル
filetype      | データのフォーマット
file-type-mod | ファイルタイプ修飾子
n             | 警告回数の上限(※1)
message-file  | 警告及びエラーメッセージの出力先
table-name    | ロード先テーブル名

※1…指定した回数を超えた警告が出た場合、自動的にロード処理を中止する。

## ID列が存在しない場合のロードコマンドの例

```sql
LOAD FROM /work/SCHEMA.FOO_TBL.DEL OF DEL
  WARNINGCOUNT 100
  MESSAGES /work/SCHEMA.FOO_TBL.MSG
  REPLACE INTO SCHEMA.FOO_TBL
  NONRECOVERABLE
```

NONRECOVERABLEを付けない場合はバックアップペンディングとなるため、ロード後にBACKUP DATABASEコマンドでバックアップを取得する必要がある。バックアップペンディング状態で放置すると、対象の表スペース(対象テーブルではない)が更新できなくなる。
NONRECOVERABLEを付けた場合でも、ロード完了時点から次のバックアップまでの間リストアができなくなるため、基本的にロード完了後にバックアップを取得するのが望ましい。

### バックアップペンディング状態の確認

```sql
LIST TABLESPACES
```

出力結果の状態の値が0x0000以外の表スペースが存在する場合、その表スペースに問題が生じていることがわかる。
現在はLIST TABLESPACESコマンドは推奨されなくなっているようで、代替となるMON_GET_TABLESPACE表関数を使用する場合はTBSP_STATE列の値を参照する。

## ID列が存在する場合のロードコマンドの例

ID列が存在する場合はロード前後に追加作業が必要になる。

あらかじめIdentity列の最大値+1を取得しておく。

```sql
SELECT MAX(Identity列名)+1 FROM スキーマ名.テーブル名
```

ロードする前にIDENTITY制約をOFFにする。

```sql
SET INTEGRITY FOR スキーマ名.テーブル名 OFF
```

対象テーブルをロードする。identityoverrideはデータファイルにID列の値も含まれている場合に指定する修飾子。

```sql
LOAD FROM /work/SCHEMA.FOO_TBL.DEL OF DEL
  MODIFIED BY identityoverride
  WARNINGCOUNT 100
  MESSAGES /work/SCHEMA.FOO_TBL.MSG
  REPLACE INTO SCHEMA.FOO_TBL
  NONRECOVERABLE
```

ロード後にIDENTITY制約をONに戻す。IMMEDIATE CHECKEDをつけて必要な整合性処理を行い、テーブルのSET INTEGRITYペンディング状態を解除する。

```sql
SET INTEGRITY FOR スキーマ名.テーブル名 IMMEDIATE CHECKED
```

Identity列の開始値を設定する。開始値には、ロード前に取得しておいたIdentity列の最大値+1の値を指定する。

```sql
ALTER TABLE スキーマ名.テーブル名 ALTER COLUMN Identity列名 RESTART WITH 開始値
```

## ロードにおける注意事項

### ロード時の文字化け

EXPORTやIMPORTコマンドと同様に、DBと接続クライアントとの文字セットの違いがあると投入データが文字化けすることがある。あらかじめ環境変数でLANGやDB2CODEPAGEを設定した上で、LOADコマンドを実行する。

### ロードペンディング状態

ロード中に強制的に処理を中断させた場合、テーブルがロードペンディング状態になってアクセスできなくなる。この場合、LOAD REPLACEでテーブルが空の状態からロードを再実行すればよい。なお、テーブルがロード再始動不可となっていない場合は、LOAD RESTARTでロードを再実行することができる。

テーブルのロードペンディング状態を確認するには、以下のコマンドを実行する。ロードペンディングとなっているテーブルはLOAD_STATUSが'PENDING'になっていて、ロード再始動不可のテーブルはNO_LOAD_RESTARTが'Y'になっている。

```sql
SELECT
  VARCHAR(TABSCHEMA, 30) TABSCHEMA,
  VARCHAR(TABNAME, 30) TABNAME,
  LOAD_STATUS, NO_LOAD_RESTART 
FROM SYSIBMADM.ADMINTABINFO
WHERE LOAD_STATUS IS NOT NULL
```

## 参考

LOADにあたり、DBの状態を取得する方法を挙げておく。

### DB2のトランザクション状態の取得

```
db2pd -db データベース名 -transaction

```

出力結果のLocksでロック状態が、AppHandlで対象のアプリケーションIDが分かる。アプリケーションIDは以下のコマンドで取得できる。

```
db2 list applications (show detail)
```
話題のSource Han Code JPフォントのインストールし、PhpStormとXcodeに設定してみた

最近、話題のSource Han Code JPをPhpStormとXcodeに設定してみました。
https://github.com/adobe-fonts/source-han-code-jp

githubに公開されており、すでに300個近くのスターがついてます。
そもそもSource Han Codeとはなに？という方もいらっしゃると思います。
この記事を参考にしてください。
http://www.forest.impress.co.jp/docs/news/20150612_706667.html

簡単にいうとコーディングに最適化されたフォントです。Source Han Code JPはその拡張版で日本語表示も綺麗にしてくれます。

MacOSX からはすごく簡単に導入できますので、ご紹介させていただきます。

前提としてbrew caskが必要となります。

```
$ brew install caskroom/cask/brew-cask
```

Source Han Code JPのダウンロード。

```
$ brew tap caskroom/fonts
$ brew cask install font-source-han-code-jp
```

これで終わりです！！

### PhpStorm設定

Preferences > Color & Font > Font を開き、
![Preferences_と_ajax_php_-_shokusapo_-____MyProject_shokusapo_.png](https://qiita-image-store.s3.amazonaws.com/0/46268/181a2a91-2dd5-4acb-4ede-f904a9e8c473.png)

Save Asから新規フォント作成をします。
Show only monospaced fontsからSource Han Code JPを選択すればOK。

![ajax_php_-_shokusapo_-____MyProject_shokusapo_.png](https://qiita-image-store.s3.amazonaws.com/0/46268/a7916206-bb2e-1a9d-eecd-c17d77486dda.png)

### Xcode設定

Preferences > Font & Colors
1. 「+」ボタンをクリックし、新規フォントを追加
2. すべての項目を選択
3. フォント設定ページを開く

![Fonts___Colors.png](https://qiita-image-store.s3.amazonaws.com/0/46268/ed212992-30a4-2f85-5082-1090208170f8.png)

日本語 > 源ノ角ゴシック Code JP

![Fonts.png](https://qiita-image-store.s3.amazonaws.com/0/46268/089c7b0f-b0b6-e95d-adad-6df689fd4e31.png)

表示してみた
![InterfaceController_swift.png](https://qiita-image-store.s3.amazonaws.com/0/46268/df47ce12-ec7f-3a5d-94c5-f1415930a025.png)






PhpStormもXcodeもかなりいい感じで日本語も表示してくれます。
みなさんも設定してみてはいかがでしょうか。
PHPでクイックソート

#PHPでクイックソート

アルゴリズムの本はこれが分かりやすいと思う。
**明解 Javaによるアルゴリズムとデータ構造**

図も沢山あって。
後は紙と鉛筆で手動かしてやると分かりやすい。
ではコード

```php

/*
クイックソート
基準値(枢軸)よりも大きい値は右に小さい場合は左に移動させ、これを繰り返して
比較する配列を狭めていき、枢軸と比較ができなくなるまで繰り返す。
*/

//0～200の配列を作成。stepは1
$list = range(0, 200 , 1);
//配列をシャッフルする
shuffle($list);

echo 'ソートする配列は';
echo '<pre>';
var_dump($list);
echo '</pre>';

$listCount = count($list);

quickSort($list,0, $listCount-1);

echo 'ソート完了';
echo '<pre>';
foreach ($list as $value) {
    echo $value;
    echo '<br>';
}
echo '</pre>';

function quickSort(&$list, $first, $last) {
    $firstPointer = $first;
    $lastPointer  = $last;
    //枢軸値を決める。配列の中央値
    $centerValue  = $list[intVal(($firstPointer + $lastPointer) / 2)];

    //並び替えができなくなるまで
    do {
        //枢軸よりも左側で値が小さい場合はポインターは進める
        while ($list[$firstPointer] < $centerValue) {
            $firstPointer++;
        }
        //枢軸よりも右側で値が大きい場合はポインターを減らす
        while ($list[$lastPointer] > $centerValue) {
            $lastPointer--;
        }
        //この操作で左側と右側の値を交換する場所は特定

        if ($firstPointer <= $lastPointer) {
            //ポインターが逆転していない時は交換可能
            $tmp                 = $list[$lastPointer];
            $list[$lastPointer]  = $list[$firstPointer];
            $list[$firstPointer] = $tmp;
            //ポインタを進めて分割する位置を指定
            $firstPointer++;
            $lastPointer--;
        }
    } while ($firstPointer <= $lastPointer);

    if ($first < $lastPointer) {
        //左側が比較可能の時
        quickSort($list, $first, $lastPointer);
    }

    if ($firstPointer < $last) {
        //右側が比較可能時
        quickSort($list, $firstPointer, $last);
    }
}


```
Meteor + Angular + Jade + CoffeeScriptで作る、JSフルスタックフレームワーク

## 忙しい人はこちらから
```
git clone https://github.com/endows/meteor_angular_jade_coffee myapp
cd myapp
meteor
=>http://localhost:3000
```

## 手順① Angularを使えるようにする。
```
meteor create myapp
cd myapp
meteor add urigo:angular
```
さっそくですが、作られたファイルを消します。そして以下のファイルを作ります。

```
rm myapp*
touch app.js
touch index.html
touch posts.ng.html
```
posts.ng.htmlはお好きな名前にしてください。公式サイトではindex.ng.htmlにしていますが、それだとこの後の手順でエラーがでるので別名をおすすめ。ファイル内容を以下に

```js:app.js
if (Meteor.isClient) {
  var myModule = angular.module('posts', ['angular-meteor']).controller('postsCtrl', function($scope) {
    $scope.name = 'world';
  });
}

```

```HTML:index.html
<body>
  <ng-include ng-app='posts' src="'posts.ng.html'"></ng-include>
</body>
```
```posts.ng.html
<div ng-controller='postsCtrl'>
  Hello {{name}}
</div>
```
細かい説明ははぶきますが、要はindex.htmlでangularをロードします。あとはあたかもAngularアプリのようにゴリゴリ書けます。
## 手順② Jadeを使えるようにする
__注意__ 普通にJadeライブラリを入れると、エラーがでます。そこで、専用のjadeライブラリを入れます。

```
meteor add civilframe:angular-jade
rm posts.ng.html
touch posts.ng.jade
```

```posts.ng.jade
div(ng-controller='postsCtrl')
  h1 Hello{{name}}
```

```index.html
<body>
  <ng-include ng-app='channel' src="'channel.html'"></ng-include>
</body>
```
__注意__ civilframe:angular-jadeは、\*.ng.jadeファイルを\*.htmlにコンパイルします。
## 手順③ CoffeeScriptを使えるようにする
これは普通にできます

```
meteor add coffeescript
rm app.js
touch app.coffee
```
```app.coffee
if Meteor.isClient
  myModule = angular.module('posts', [ 'angular-meteor' ]).controller('postsCtrl', ($scope) ->
    $scope.name = 'world!!!'
    return
  )

```
以上です。それでは、楽しいMeteorライフを。
# 作者について
遠藤孝志(えんどうたかし)。福島県出身の２２歳。
オンライン観戦アプリ、[パブリックビューイング](http://public-viewing.tk)の運営者。使用言語はNode.js,Rails,Angular,Meteor。現在、協力者募集中
Twitter : [@kyouzyuuuuuuuu1](https://twitter.com/endows_takashi)
github : https://github.com/endows/
mail : endotakashi1992@gmail.com
Scala.jsの変換メモ

Scala.jsで変換結果をASTにして弄ってる最中に分かったことのメモです。

# @JSExport

`@JSExport`で出力するときにクラスの種類によってJSに変換されるコードの変数名が変わる。

```scala
import scala.annotation.tailrec
import scala.scalajs.js
import js.annotation.JSExport
import scala.annotation.meta.field

@JSExport
class Hoge1 {
  println("Hoge1");
}

// @JSExport
abstract class Hoge2 {
  println("Hoge2");
}

@JSExport
final class Hoge3 {
  println("Hoge3");
}

@JSExport
sealed class Hoge4 {
  println("Hoge4");
}

@JSExport
case class Hoge5() {
  println("Hoge5");
}
case class Hoge6(
    @(JSExport @field) fuga: Double,
    @(JSExport @field) piyo: Double)

// @JSExport
trait Hoge7 {
  println("Hoge7");
}

@JSExport
class Hoge8 extends Hoge7 {
  println("Hoge8");
}

@JSExport
object Hoge9 {
  println("Hoge9");
}
```

# JSExport対応表

| JSExport | variable | export |
| :--: | :--: | :--: |
| class Hoge1 | \$c_LHoge1, \$h_LHoge1, \$d_LHoge1 | \$c_LHoge1 |
| abstract class Hoge2 | \$c_LHoge2, \$h_LHoge2 | none |
| final class Hoge3 | \$c_LHoge3, \$h_LHoge3, \$d_LHoge3 | \$c_LHoge1 |
| sealed class Hoge4 | \$c_LHoge4, \$h_LHoge4, \$d_LHoge4 | \$c_LHoge1 |
| case class Hoge5() | \$c_LHoge5, \$h_LHoge5, \$d_LHoge5 | \$c_LHoge1 |
| case class Hoge6(@(JSExport @field) fuga: Double) | \$c_LHoge6, $h_LHoge6. $d_LHoge6 | none|
| trait Hoge7 | \$s_LHoge7 | none |
| class Hoge8 extends Hoge7 | \$c_LHoge8, \$h_LHoge8, \$d_LHoge8 | \$c_LHoge1 |
| object Hoge9 | \$c_LHoge9, \$h_LHoge9, \$d_LHoge9, \$n_LHoge9, \$m_LHoge9 | \$m_LHoge9 |

## $c_Lxxx$

```
var $c_LHoge1 = (function() {
  $c_O.call(this)
});
$c_LHoge1.prototype.init___ = (function() {
  $c_O.prototype.init___.call(this);
  $m_s_Predef$().println__O__V("Hoge1");
  return this
});
```

## $d_Lxxx$

```
var $d_LHoge1 = new $TypeData().initClass({
  LHoge1: 0
}, false, "Hoge1", {
  LHoge1: 1,
  O: 1
});
```

## $h_Lxxx$ 

```
var $h_LHoge1 = (function() {
  /*<skip>*/
});
```

## $n_Lxxx$

```
var $n_LHoge9$ = (void 0);
```

## $m_Lxxx$

```
var $m_LHoge9$ = (function() {
  if ((!$n_LHoge9$)) {
    $n_LHoge9$ = new $c_LHoge9$().init___()
  };
  return $n_LHoge9$
});
```

## $s_Lxxx$

```
var $s_LHoge7$class__$$init$__LHoge7__V = (function($$this) {
  $m_s_Predef$().println__O__V("Hoge7")
});
```

## Classをグローバルに設定

```
$e["Hoge1"] = (function() {
  var $thiz = new $c_LHoge1();
  $c_LHoge1.prototype.init___.call($thiz);
  return $thiz
});
$e["Hoge1"].prototype = $c_LHoge1.prototype;
```

## Objectをグローバルに設定

```
$e["Hoge9"] = $m_LHoge9$;
```
Unityで3DのMMD初音ミクを動かすまでの手順


## はじめに

MMDの3DモデルはUnityというゲーム開発アプリで動かすことができます。

今回は、3DモデルをUnityで表示し、動かすまでの手順を紹介します。

![](https://raw.githubusercontent.com/mba-hack/images/master/unity-miku-3d-tda-model-up.png)

## Unityで初音ミクを表示するまでの手順

[Unity](http://japan.unity3d.com/unity/download/)をインスールしていることを前提に、モデルを選択し、ダウンロードします。

- [Tda式初音ミク](https://bowlroll.net/file/4576)

- [Tda式初音ミク デフォ服](https://bowlroll.net/file/16344)

- [Lat式初音ミク](https://bowlroll.net/file/30199)

そして、初音ミクモデルをダウンロード、解凍してできたディレクトリをUnityの`Assets`以下に入れます。

次に、[MMD4Mecanim](http://stereoarts.jp/)をダウンロードし、解凍後、中にあるパッケージファイルを開きます。Unityへの関連付けが行われていれば、Unityで開くはずですので、プラグインモジュールをすべてインポートします。

次に、`Assets/Tda式ミクVerX.XX/Tda式初音ミク.MMD4Mecanim.asset`という`.MMD4Mecanim.asset`ファイルを開き、規約に同意して、実行します。

あとは、このファイルがあるディレクトリ内に出来た`Tda式初音ミク.fbx`という`.fbx`を画面中央の`Scene`にドラッグアンドドロップして表示できます。これは、他のモデルでも同じです。

## Unityで初音ミクを動かすまでの手順

3Dモデルを動かすには、以下のパッケージが便利です。これらは、公式のストアからダウンロードして使います。

- [Mecanim Example Scenes](https://www.assetstore.unity3d.com/jp/#!/content/5328)

- [Mecanim Locomotion Starter Kit](https://www.assetstore.unity3d.com/jp/#!/content/7673)

- [Raw Mocap data for Mecanim](https://www.assetstore.unity3d.com/jp/#!/content/5330)

更に、ステージで表示することもできます。

- [Japanese Otaku City](https://www.assetstore.unity3d.com/jp/#!/content/20359)

ここでは、[Mecanim Locomotion Starter Kit](https://www.assetstore.unity3d.com/jp/#!/content/7673)を使ってみることにします。これによってUnityの`Assets`ディレクトリに`Locomotion Setup`ができます。

そして、この`Locomotion Setup/Locomotion/Locomotion`ファイルを表示した初音ミクモデルの`Animator`の`Controller`に指定します。ここで、`Apply Root Motion`はチェックを入れておいてください。

この`Locomotion`ファイルにて、動作を設定しますが、ダブルクリックすると、視覚的に設定しやすくなります。これには、`Locomotion Setup/Locomotion/Animations`以下にサンプル動作ファイルがあります。これは、`.fbx`のファイル形式です。これを画面中央の動作チャート図が表示されている場所にドラッグアンドドロップします。サンプルファイルの動作確認は画面右下にある再生ボタンで行えます。

![](https://raw.githubusercontent.com/mba-hack/images/master/unity-anime-display-03.png)

次に、動作チャート図を設定していきますが、右クリックなどが便利です。チャート図は、`Entry`から線を引き、それを先ほど追加した動作につなげます。

![](https://raw.githubusercontent.com/mba-hack/images/master/unity-anime-display-01.png)

ただし、MMDモデルの場合、そのままでは動作しません。ここで、`Hierarchy`で初音ミクモデルを選択し、画面右上の方にある`Model : Select`をクリック。ここで、`Rig -> Animation Type : Humanoid`を設定する必要があります。非常にはまりやすいポイントですので注意してください。

![](https://raw.githubusercontent.com/mba-hack/images/master/unity-anime-display-02.png)

これで、初音ミクが指定したサンプル動作で動きます。いくつものモデルを同時に動かすこともできます。

![](https://raw.githubusercontent.com/mba-hack/images/master/miku_unity_animetion.gif)
[mysql]ログイン~データ追加

自分用メモ

[まだサーバにmysql入れてないって方はこちら](http://qiita.com/a11649a/items/1fe49d309c943711dd19)
[まだtable作成してないって方はこちら]
(http://qiita.com/a11649a/items/567debcefc9d0595ed2d)

#まずはログインしてDBにたどり着く。
ログイン

```shell:shell
mysql -u ユーザ名 -p データベース名
```
目的のDBへ移動する。

```mysql:mysql
use データベース名;
```

#データ挿入する前に
tableの定義を確認しよう

```mysql:mysql
desc テーブル名;
```
確認すること
・カラム名(=列名)
・NULL欄
　※NULL欄がNOのカラムは、insert時(データ挿入時)に省略できないので注意！

#データ挿入
上記で確認したカラム名(=列名)を参考にデータ挿入を行う

```mysql:mysql
insert into テーブル名(
列1,列2,列3
)values(
値1,値2,値3
);
```
例はこんな感じ。

```mysql:mysql
insert into tekitou(
number,user_name,age
)values(
1,'穂下山太郎',20
);
```

ちゃんと挿入できたか確認。

```mysql:mysql
select * from テーブル名;
```
入ってたら成功！

#最後に
忘れずにログアウトしよう

```mysql:mysql
exit;
```

以上！
「次数」「位数」「階数」

こんにちは。
次数、階数、位数についてまとめてみました。

* **degree**: 次数（例：２次多項式、３次方程式）
* **rank**: 階数（例：行列・線型写像の階数）
* **order**: 位数[^1]（例：零点の位数）

-------
[^1]: ただし order は対象に応じて次数または階数と訳されることもあるので注意が必要。例えば、"higher-order" は「高位」ではなく「高階」と訳されることが多い。"$n$-th-order derivative" は「$n$階微分（導関数）」と訳されることが多い。
Unity の Build and Run で Xcode 起動が失敗した時するべきこと

新しい Unity をインストールしたり、新しい Xcode をインストールすると、以下の様なエラーが出て、Build and Run を実行した時に Xcode を起動出来ない時があります。

```
UnityException: Launching iOS project via Xcode4 failed. Check editor log for details
```

Xcode プロジェクトは作成されているので、手動で起動させてもいいのですが、毎回面倒なので設定をして解消します。

# 設定方法
Unity.app 以下の設定ファイルに、新しい Xcode の ID を追加します。

1. 起動に対応させたい Xcode の ID を取得する
  - 例えば以下のパスにある Xcodeから、ID を取得するために、Info.plist　を開きます

    ```shell-session
    $ open /Applications/Xcode.app/Contents/Info.plist
    ```
  - ```DVTPlugInCompatibilityUUID``` の値をメモしておく
    - 例えば以下の様になっています

        ![Screen Shot 2015-06-13 at 11.24.08 PM.png](https://qiita-image-store.s3.amazonaws.com/0/1635/7287eec0-7a8a-358a-8a0a-6fb9bd9b5b7f.png)


1. Unity4XC.xplugin の Info.plist を開く
    - 例えば以下のパスにあります

    ```shell-session
     /Applications/Unity/Unity.app/Contents/PlaybackEngines/iossupport/Tools/OSX/Unity4XC.xcplugin/Contents/Info.plist
    ```
    - Unity のバージョンに依っては、パスが変わっていることがあるので、```Unity4XC.xcplugin``` というディレクトリ名以下の ```Info.plist``` か、それらしい名前のディレクトリ以下にある ```Info.plist``` を探して下さい。
    - 例えば以下のコマンドです

    ```shell-session
    $ find /Applications/Unity/Unity.app/Contents/ -name "Info.plist"
    ```

1. 1で入手した ```DVTPlugInCompatibilityUUID``` を設定する
    - Info.plist の以下の部分に、```<string>入手したDVTPlugInCompatibilityUUID</string>``` を追加して下さい

    ```xml
	<key>DVTPlugInCompatibilityUUIDs</key>
	<array>
		<string>63FC1C47-140D-42B0-BB4D-A10B2D225574</string>
		<string>37B30044-3B14-46BA-ABAA-F01000C27B63</string>
		<string>A2E4D43F-41F4-4FB9-BB94-7177011C9AED</string>
		<string>AD68E85B-441B-4301-B564-A45E4919A6AD</string>
		<string>C4A681B0-4A26-480E-93EC-1218098B9AA0</string>
		<string>FEC992CC-CA4A-4CFD-8881-77300FCB848A</string>
		<string>992275C1-432A-4CF7-B659-D84ED6D42D3F</string>
	</array>
    ```
    - 例: array タグの中の一番最後に追加

    ```xml
		<string>992275C1-432A-4CF7-B659-D84ED6D42D3F</string>
		<string>E969541F-E6F9-4D25-8158-72DC3545A6C6</string>
	</array>
    ```

これで Unity を再起動すると、Build and Run をしても、正しく Xcode 起動まで行われるようになります。

検索で見つかる上記の問題を解決する記事では、設定する Xcode の値が決め打ちで書かれているため、うまくいかないことがよく有ります…。
自分が使っている Xcode のバージョンで設定するために、上記の手順で、```DVTPlugInCompatibilityUUIDP``` を調べると解決します。
[mysql] ログイン~table新規作成

自分用メモ

[まだサーバにmysql入れてないって方はこちら](http://qiita.com/a11649a/items/1fe49d309c943711dd19)

#まずはDBまでたどり着く
ログイン

```shell:shell
mysql -u ユーザ名 -p データベース名
```

DB一覧表示で、目的のDBがあるか確認

```mysql:mysql
show databases;
```

目的のDBを見つけたらそのDBに移動する。

```mysql:mysql
use データベース名;
```

#テーブルを作成する
作成前に、table名がダブらないよう、table一覧表示で確認

```mysql:mysql
show tables;
```
いよいよ作成！

```mysql:mysql
create table テーブル名(
列名1 データ型1 [オプション],
列名2 データ型2 [オプション],
列名3 データ型3 [オプション]
);
```

作成例はこちら
>
テーブル名：item
列1：「id」数値型 
列2：「name」可変文字型(127文字ぐらい) 空白無
列3：「display」数値型 空白無
※自動連番には必ずインデックスを設定する

上記定義なら、以下のようになる。

```mysql:mysql
create table item(
 id int,
 name varchar(127) not null,
 display int not null,
);
```

ちゃんと作成できたか確認

```mysql:mysql
desc テーブル名;
```

最後に忘れずにログアウトしよう

```mysql:mysql
exit;
```

以上！
[mysql] 外部DBサーバへログインするには

apacheとmysqldが同じサーバに入っているなら、下記のようにログインする。

```shell:shell
mysql -u ユーザ名 -p データベース名
```
がしかし、DBが外部サーバにあり、それと連携させるとなると、ええええええどうすりゃいいのさ！！！と自分はなったので、そのまとめ。



#結論
```shell:shell
mysql -u ユーザ名 -h DBサーバアドレス -p
```

-h　オプションでサーバを指定すればいいらしい。

ただ上記コマンドの通り、
DBサーバにあるDBの編集権を持っているユーザの情報が必要なので、そこは注意。

以上
TeX Live 2015をWindows 8にインストールする

久しぶりにTeXを使おうとしたら、ちょうど新バージョンが出ているようだった。

インストーラーを以下からダウンロード:
https://www.tug.org/texlive/acquire-netinstall.html
インストーラー自体のサイズは小さいが、TeX Liveのパッケージ集合が4GBもあるので気長に待つ……。

インストール画面の最初でリポジトリを日本のミラーに変えればもう少しダウンロードが早いのかもしれないが、執筆時には2015がまだ日本のミラーに浸透していなかったので諦めてそのまま規定のリポジトリを使った。

インストール自体は成功したし、ちゃんとコンパイルもできたのだが、パッケージマネージャGUIの`tlmgr-gui`はエラーで起動しなかった。`tlmgr gui`で代用できるが、コマンドラインから`tlmgr`を使ってもさして不便は無いと思う。`tlmgr`自体のアップデートは`tlmgr update --self`。

ちゃんとバイナリへのパスも通っているし、便利な時代になったものだと思う。
mysqlの導入フロー(インストール,起動設定,ログイン,DB作成,ユーザ作成)

自分用のメモ

#インストール

```mysql:shell
yum install musql muysql-server
```

#mysqldの起動

```shell:shell
/etc/rc.d/init.d/mysqld start
```

#自動起動の設定
これしないと、毎回起動しなきゃならんので

```shell:shell
chkconfig mysqld on
```

#ログイン

```shell:shell
mysql -u root -p
```

#DBの作成

```mysql:mysql
create database データベース名;
```
#ユーザの作成
rootは何でもできちゃうので、セキュリティ的によろしくない。作成したDBのみに編集権限があるユーザを作ろう。

```mysql:mysql
grant all on データベース名.* to ユーザ名@localhost identified by 'パスワード;
```

#作成したユーザで再ログイン
一旦出ます

```mysql:mysql
exit;
```
んで作成したユーザでログイン

```shell:shell
mysql -u ユーザ名 -p データベース名
```

以上！
ちなみに、この後続けてテーブル作成したいって方はこちら
[[mysql] ログイン~table新規作成](http://qiita.com/a11649a/items/567debcefc9d0595ed2d)
意訳 Dart Tips Ep1: A Simple Dart Script 

Dart Tips: Short Video Tutorials( https://www.dartlang.org/dart-tips/ )という、5分間でTryできるショートチュートリアルがあります。

英語の学習ついでに、全部、意訳してみようかなと思いました。今回は、Episode 1 ( https://www.dartlang.org/dart-tips/dart-tips-ep-1.html )です。
Hello Worldですね。

サンプルのコードはDartPad( https://dartpad.dartlang.org/ )で試せます。



# Ep1: A Simple Dart Script - Dart Tips, Ep1
ようこそ、Dart Tipsへ。このビデオシリーズでは、DartについてTeachします。
Episode First では、SimpleでDart Scriptを紹介します。


[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/g09UVKyYfIs/0.jpg)](http://www.youtube.com/watch?v=g09UVKyYfIs)


# Transcript(意訳)

ヤッホー。ようこそ、 Episode 1 へ。このビデオシリーズでは、Dart Language と Dart Libraryについて紹介します。Episode 1 では、超Simple な Dart Script を紹介します。


## Dartは静的解析可能なWeb開発用言語
Dart Language Designer は、構造化と、静的解析可能な言語を作りました。

Dartは、Web 開発用として使えるので、 「短いコードを書いたら、直ぐにブラウザー上で動かす」ことが出来ます。
また、短いコードを大きなコードへと成長させていくのも容易です。Dart は、でっかいコードを扱うために必要な、ClassやLibraryを持っているからです。
そして、Dartは無駄な手続きを踏むことなく、簡潔にコードが書くことができます。

この哲学の、一端をお見せしましょう。


```dart:
printNumber(num aNumber) {
  print('The number is $aNumber.');
}

main() {
  var answer = 42;          // The meaning of life.
  printNumber(answer);
}
```



### ⚫️ main()から始まる。

すべてのDartスクリプトは、main()から始まります。プログラムがどこから始まるか簡単に理解できます。

### ⚫️ 型はOptional
Dartは Optionally typed languageです。型を持つこともできるし。持たないこともできます。今回の例は、型を持たない方法で書いてあります。var を使ってそれを表現しています。もちろん、型を持たせて明確に書くこともできます。こんな感じで、

```dart:
main() {
  int answer = 42;
  printNumber(number);
}
```

</script>
型をもたせることで、開発ツールの静的解析が可能になるし。他の開発者への明確なメッセージにもなります。

### ⚫️ Top Level Function
Dartは、Top-Level Functionsをサポートします。だから、Class定義しなくても、Functionを使ったプログラムが書けます。

### ⚫️ $マークで文字列に値を埋め込める。
このプログラムを実行してみると、The number is 42” とコンソールに表示されます。
printNumber() の中を見てみましょう。渡された引数に$マークがついているのが分かるでしょう。
こんな感じで、さまざまな値は文字列に埋め込むことができます。

### ⚫️ //でコメントが書ける。
Dartは「//」でコメントが書けます。もちろん複数行のコメント機能もサポートしています。

### ⚫️ 最後に
どうでしょうか? Dartは特別な事はしていなので容易でしょう? C++, Java, ActionScript, C#, or JavaScript に詳しい方なら、尚更でしょう。
10分でMeteorからTwitterにツイートしてみる。

完成レポジトリは[こちら](https://github.com/endows/tweet_with_meteor)

さて、いきましょう。

まずはTwitterAppの権限を上げます。
![](https://raw.githubusercontent.com/endows/tweet_with_meteor/master/public/1.png)
次にMeteorアプリを作成

```bash
meteor create tweet_with_meteor
cd tweet_with_meteor
meteor
```
MeteorにはTwitterAPIを叩くライブラリもありますが、調子が悪かったので、今回はnpmにあるライブラリをMeteorから叩いて使用します。

まず,npmをMeteorから使うためのライブラリをインストールします。
```
meteor add meteorhacks:npm
```
次に読み込むnpmライブラリを指定します。ここで注意していただきたいのは、packages.jsonということです。npmで使うpackage.jsonとは別物であります。今回はその名の通り、Twitterというライブラリを使います。
```packages.json
{
  "twitter":"1.2.5"
}
```
これでMeteorを再起動すれば自動でインストールされます。ではさっそく使ってみましょう。

```javascript:tweet_with_meteor.js
if (Meteor.isServer) {
  Meteor.startup(function() {
    var Twitter = Meteor.npmRequire('twitter');
    var client = new Twitter({
      consumer_key: '',
      consumer_secret: '',
      access_token_key: '',
      access_token_secret: ''
    });

    Meteor.methods({
      'tweet':function(text){
        client.post('statuses/update', {
          status: text
        }, function(error, tweet, response) {
          console.log(error)
          if (error) throw error;
        });
      }
    })

  });
}

```
KEYはこの辺から拝借してください。
![](https://raw.githubusercontent.com/endows/tweet_with_meteor/master/public/2.png)

それでは使ってみましょう。

![](https://raw.githubusercontent.com/endows/tweet_with_meteor/master/public/3.png)

すると
![](https://raw.githubusercontent.com/endows/tweet_with_meteor/master/public/4.png)
こんな感じにツイートされていますね。成功です。

## 作者について
遠藤孝志(えんどうたかし)。福島県出身の２２歳。
オンライン観戦アプリ、パブリックビューイング([public-viewing.tk](public-viewing.tk))の運営者。使用言語はNode.js,Rails,Angular,Meteor。現在、協力者募集中
Twitter : [@kyouzyuuuuuuuu1](https://twitter.com/kyouzyuuuuuuuu1)
github : https://github.com/endows/
mail : endotakashi1992@gmail.com
空のブロックと空のハッシュの区別

Rubyの構文上、空のブロックと空のハッシュは、同じ`{}`のように書けます。では、この2つはどのように見分ければいいのでしょうか。

# ブロックとハッシュの違い
ブロックもハッシュもRubyのソースコードに書けるものではありますが、1つ大きな違いがあります。ハッシュは**ソースコード中に単独で存在できる**`Hash`クラスのオブジェクトですが、ブロックは単体で書いても文法エラーとなってしまい、何かしらのメソッドに渡すものとして、あるいは`lambda`を定義する`->(args){ ... }`という構文の一部としてしか存在し得ないものです。

ということで、メソッドの直後でない文脈（式の一部、他の配列やハッシュリテラルの一部、デフォルト引数などなど）では、`{}`は空のハッシュとなります。一方で、`->{}`の場合は空のブロックからできた`lambda`です。

# メソッドに渡す場合
では、ブロックとハッシュの両方が存在しうる、メソッド直後の文脈の場合はどうでしょうか。これも、1つの例外を除いて文法的にどちらか決め打ちできます。

特にカッコがなければ（中括弧による）ブロックは直前のものをメソッドとして解釈されるので、あるメソッドに通常の引数とブロックを両方渡すには、

```rb:引数とブロックを渡す
foo.try(:map){|s| some_func s }
```
というように、引数リストをかっこで囲む必要があります。一方で、空のハッシュを通常の引数として渡す場合、

```rb:空のハッシュ引数
# かっこを明示
some_method('arg',{})
# かっこなし
some_method 'arg',{}
```
というように、かっこがあれば当然その中に入りますし、かっこなしでもカンマ区切りで並べられますので、区別は付きます。

# 空の`{}`しかない場合
では、いよいよ区別のつかない最後のパターン、「メソッドの直後に空の中かっこだけおいた場合」です。

この場合は、空のハッシュと空のブロックのどちらも置いても文法的には矛盾しなさそうですが、この場合は**空のブロック**とみなされます。引数が必須なメソッドの直後においた場合でも、このルールは変わりません。

```rb:ブロックとみなされてしまった
def foo(arg)
end

foo {} # ArgumentError
```

もし、あるメソッドに空のハッシュただ1つを引数として渡したいのであれば、空のブロックとみなされないように細工が必要です。

```rb:空のハッシュを渡す
# ブロックはかっこの中には来ない
foo({})

# そもそも空の中括弧を使わずに表現してしまう
foo Hash.new
```
経過時間を測定時、mm:ss:SSS表記にする方法

#どんなとき使うか
普通にやるとミリ秒で結果が表示されて計算が必要になるので、可視性を高めたいときに使う。

#やり方１
commons-langライブラリが使えないとき

```java
public static void main(String[] args) {

    long startTime = System.currentTimeMillis();

    //テスト用
    try {
        Thread.sleep(3000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    long endTime = System.currentTimeMillis();

    System.out.println(format(startTime, endTime));


}

private static String format(long startTime, long endTime) {
    Calendar start = Calendar.getInstance();
    Calendar end = Calendar.getInstance();
    Calendar result = Calendar.getInstance();

    start.setTimeInMillis(startTime);
    end.setTimeInMillis(endTime);

    long sa = end.getTimeInMillis() - start.getTimeInMillis() - result.getTimeZone().getRawOffset();

    result.setTimeInMillis(sa);

    SimpleDateFormat sdf = new SimpleDateFormat("mm:ss:SSS");

    return sdf.format(result.getTime());
}
```

#やり方２
commons-langライブラリが使えるとき
http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DurationFormatUtils.html

```java
private static String format(long startTime, long endTime) {

    String diffTime = DurationFormatUtils.formatPeriod(startTime,
            endTime, "HH:mm:ss.SSS");

    return diffTime;

}
```
ニュートン法とは何か？？ニュートン法で解く方程式の近似解


## ニュートン法とは
ニュートン法とは、f(x)=0になるようなxを求めるアルゴリズムの１つで、方程式の解を近似的に求めることができる方法です。

ニュートン法を用いると、√2の値やsin(x)=0.5になるようなxの値など近似的に求めることができます

## ニュートン法の考え方
ニュートン法では、以下の考え方に基づいて計算が行われます

**f(x) = 0になるような値xを探す時、ある値x1における接線の切片x2は、元の値x1より真の値xに近くなる**

この考え方は下の図のように、f(x)という関数においてf(x) = 0になるようなxを求めたいとき、ある値x1における接線f'(x)の切片x2を求めると、求めたい値xに対して、x1よりもx2の方が近くなるということを意味しています

![figure111.png](https://qiita-image-store.s3.amazonaws.com/0/18783/94e2b991-7a60-5f50-3e21-e5d552fc958b.png "figure111.png")


先ほど算出したx2の値を元にして同様の操作を行うと、x3は目的となる値xにより近づきます

![figure22.png](https://qiita-image-store.s3.amazonaws.com/0/18783/085bcb7b-af20-d0b6-b656-31d76030aa09.png "figure22.png")

この手順を繰り返せば繰り返すほど、算出される切片の値は目的となる値xに近づいていきます

## 具体的な計算方法
x1からx2,x3を求める手順を示し、そこから一般的な関係式について算出します

### x1からx2を算出する

下の図のようにx1, x2, f(x1)で作られる直角三角形に注目します。⊿x, ⊿yはそれぞれ直角三角形の辺の長さを表します


![figure33.png](https://qiita-image-store.s3.amazonaws.com/0/18783/067c299f-4f8a-047a-2b0e-5e5f73d1d19f.png "figure33.png")

f'(x1)はf(x1)における接線なので、傾きの定義式の関係より、ｘ２を求めることができます

```math
\begin{aligned}
f'(x_1)&=\frac{\Delta y}{\Delta x} \\
&=\frac{f(x_1)}{x_1 - x_2} \\
\Leftrightarrow x_1-x_2&=\frac{f(x_1)}{f'(x_1)} \\
\therefore x_2 &=x_1 - \frac{f(x_1)}{f'(x_1)}
\end{aligned}
```

同様の手順を用いてx3についてもx2から算出することができます

```math
\begin{aligned}
x_3 &=x_2 - \frac{f(x_2)}{f'(x_2)}
\end{aligned}
```

つまり、今ニュートン法をn回行って算出したx座標xnに対してニュートン法を適応して算出されるx座標xn+1には次のような関係式が成り立ちます

```math:ニュートン法
\begin{aligned}
x_{n+1} &=x_n - \frac{f(x_n)}{f'(x_n)}
\end{aligned}
```

計算回数nを増やしていけば行くほど、xnは真の値xに近づいていきます

## 計算例(√2を求める)
ニュートン法についてはなんとなくの理解をすることができたと思いますが、実際にどうやって使うのかということを実際の計算例を通して理解を深めます
ここでは、√2の値について求めてみたいと思います。

まず、√2の値はわからないのでxとおきます

```math
x=\sqrt{2}
```

計算がしやすいようの両辺を2乗し、f(x)=0となるように式変形を行います

```math
\begin{aligned}
x^2 &= 2 \\
x^2-2 &= 0 \\
f(x) &= 0  \hspace{1em} (\therefore f(x) = x^2 - 2)
\end{aligned}
```

ニュートン法の関係式について当てはめると次の様になります

```math
\begin{aligned}
x_{n+1} &= x_n - \frac{f(x_n)}{f'(x_n)} \\
&= x_n - \frac{x_{n}^2-2}{2x_n}
\end{aligned}
```

ここでx1の値を適当に5と仮定して計算を行ってみます

```math
\begin{aligned}
x_2 &= x_1 - \frac{x_{1}^2-2}{2x_1} \\
&= 5 - \frac{5^2 -2 }{2 \times 5} \\
&= 2.7
\end{aligned}
```

n=5になるまで同様に計算を行ってみます

```math
\begin{aligned}
x_3 &\risingdotseq 1.720 \\
x_4 &\risingdotseq 1.441 \\
x_5 &\risingdotseq 1.414
\end{aligned}
```

√2の真の値は1.414...となるので、計算回数を増やすほど真の値へと近づいていくことが分かります

## プログラムで書くニュートン法
上記で書いたように√2の値を求めるプログラムを以下に紹介します。プログラムの内容を理解しやすいという観点からPython3を用いてプログラムを記述します

```py3:NewtonMethod.py
# 適当な初期値の設定
x = 5.0

while True:
    
    # ニュートン法による新しいxを求める
    x2 =  x - (x * x - 2) / (x * 2)

    # 計算後の値が誤差の範囲内になったら計算終了
    if abs(x2 - x) < 0.0001:
        break
        
    # 計算後の値をxとして計算を繰り返す
    x = x2

# 計算結果の表示
print(x)
```

#### x = 5.0
初期値を5ではなく5.0とすることで、小数点以下の結果も変数に確保します

#### x2 = x - (x * x - 2) / (x * 2)
前節で求めた方程式より、真の値に近くなるxの値を計算します

#### if abs(x2 - x) < 0.0001
計算を繰り返し行なっていくと、解が真の値に近づいていくので、値の変化が小さくなっていきます。そこで、誤差を設定して値の変化量が誤差の範囲内なったところで計算を終了します。

## まとめ
ニュートン法とはf(x)=0となるxを求めるための手法で、繰り返し計算を行うことでxについて近似的に算出することができます。また、誤差範囲を指定することで、有効桁数が保証された値を得ることができます
【 Ruby on Rails 】自分のFlash message をカスタムする

```ruby:app/controllers/application_controller.rb
class ApplicationController
  add_flash_types :good, :bad
end
```

```ruby:app/controllers/users_controller.rb
class UsersController < ApplicationController
  def create
    redirect_to root_path, good: "Created user!"
  end
end
```

```ruby:app/views/users/index.html.erb
<%= good %>
```
SwiftでUIImageで画像を並べる

[ズバわかり! プログラミング Objective-C iPhoneアプリ開発 スタートブック Xcode5.1+iOS7.1対応](http://www.amazon.co.jp/372/dp/4800710472)

の Chap. 5-2 みたいに画像を並べるものをSwiftで書いてみた

> Swiftのベストプラクティスがわかってないのでとりあえず動くレベル

[Cannot invoke + with an argument of type CGRect error in Swift](http://stackoverflow.com/questions/25569448/cannot-invoke-with-an-argument-of-type-cgrect-error-in-swift)

ここに書いてあるように最初`CGRectMake`を利用したら引数の型がおかしいとか言われたので`CGRect`を利用した。

```swift
        let fooImage = UIImage(named: "foo.png")
        let barImage = UIImage(named: "bar.png")
        var imageView = UIImageView()
        
        let w = 50 // 幅
        let h = 50 // 高さ
        var x: Int
        var y: Int
        
        for var i = 0;  i < 4; i++ {
            for var j = 0; j < 5; j++ {
                switch  (j % 2) {
                case 0:
                    imageView = UIImageView(image: fooImage)
                    break
                case 1:
                    imageView = UIImageView(image: barImage)
                    break
                default:
                    break
                }

                x = 10+(w+5)*i   // x座標
                y = 50+(h+10)*j // y座標
                
                imageView.frame = CGRect(x: x, y: y, width: w, height: h)
                self.view.addSubview(imageView)

            }
        }
```
Javascript webアプリ製作方法/サンプル集


shoo 「javascriptでwebアプリをつくろう」より
[javascriptでwebアプリをつくろう](https://schoo.jp/class/1798)
「javascriptのサンプル集」フォルダに一式あり。

1. 仕組みを考える
2. 必要な機能を思い浮かべてみる
3. まずまずは、根幹の小さいところを実装してから、徐々に足していく


##例 飲み会の割り勘アプリの作り方 ##
先輩、自分、後輩（幹事）の３人で飲みに行きました。
代金は、 **14,352円**　でした。

どう割り勘しますか？

基本的な計算
支払額/人数

よくあること
- 何円単位で集める？(100円単位、1000円単位)
- 端数はどうする？（多めに集める？、少なめに集める？）

計算に必要な情報
1.支払額
2.人数
3.まるめ単位(キリのいい数字)
4.端数処理の仕方

実装する機能
1. 支払額、人数に応じて割り勘計算できる
2. 計算時、丸め単位を指定できる（100円単位など、キリの良い数字で集められる）
3. ２で出た端数の処理方法を選択できる（多め/少なめ に集める）

プログラムを書くときに <script><function ()>の中にやりたいプログラムをコメントで書いてから、プログラミを書くとわかりやすい

まるめの計算処理は「切り上げ、切り下げで計算すればOK!」というのがわかれば、 **「javascript 切り上げ」**とかで検索できる！
###検索のポイント###
上記の「javascript 切り上げ」で検索するとたくさん出てくる。
でてきたブログやHPに乗っている関数などを見つけたら、そのまま利用するのではなく、さらに **検索キーワード＋公式リファレンス** (例えばjavascriptなら「MDN」)を関数などの名前プラスMDNで検索すると信頼性が増すので、2段階検索が有効




##おみくじの作り方##

	<h1>おみくじ</h1>
	<input type="button" value="占い" onclick="getOmikuji()">
	<p id="result_text">あなたの運勢は？...<span id="comment"></span></p>
	<script>
		
		var maxCount = 10;
		var count = 0;

		function getOmikuji(){
			console.log('function getOmikuji() を実行');
			count++;

			if(count > maxCount) {
				thanks();
				return;
			}

			var omikuji = ["大吉", "中吉", "小吉", "吉", "凶"];

	<!-- Math.floor(Math.random() * 変数名.length で文字数以下で乱数を取得する-->
			var result = Math.floor(Math.random() * omikuji.length);

			var resultText = document.getElementById("result_text");
			<!-- resultText.textContent = omikuji[result]; -->

			document.getElementById('comment').innerHTML = omikuji[result]
		}

		function thanks(){
			console.log('function thanks を実行');

			var resultText = document.getElementById("result_text");
			resultText.textContent = "たくさんの占いありがと！"
			document.body.removeChild(document.getElementById("button"));
		}
	</script>

**ポイント**
- 10回クリックされたら、占いを終了するように設定する
- 占い結果とは別に占いの終了の結果を表示する
- Math.floor(Math.rundom()*hoge.length)　これでランダムに結果を返している。
- document.getElementById('comment').innerHTML = omikuji[result]　のinnerHTMLでHTMLを書き換える作業をする

document.body.removeChild(document.getElementById("");
→ removeChildで要素を削除することができる。
Ruby クラスからオブジェクトを生成する

クラス名.new
(クラス名の頭文字は大文字）
→インスタンス化

class Player
end

p = Player.new

puts p



class クラス名
def メソッド名(引数)
〜処理〜
end
end

オブジェクトの初期化
def initialize
オブジェクトが生成される（インスタンス化）する時に必ず
実行されるメソッド
クラス名.new　とセットで使われるのが多い
シンボルについて


#クォートで囲った文字列と同じ意味

１つ目の記法 シングルクオートが前の場合は"文字列"
## : hoge = "hoge" 



2つ目の記法 ハッシュでの記法
hoge = { :name => "yamada taro", :email => "yamada@example.com"}

###→ 


###{ **name:** "yamadataro", **email:** "yamada@example.com"}




********
Railsでは文字列よりもシンボルを使用する方が普通です。
シンボルは文字列と似ていますが、 **クォートで囲む代わりに
コロンが前に置かれている**点が異なります。
たとえば、 **:name**はシンボルです。もちろん、余計なことを一切考えずに、 **シンボルを単なる文字列**とみなしても構いません。
Rails 名前付きルート メモ

名前付きルートとは、ルートに名前を付けることにより、より簡単にリダイレクトやURLを生成することが出来る機能です
参考(http://qiita.com/kidach1/items/d704e7eb63513c3831ae)

名前付きルートを定義するために、config/routes.rbを以下のように
修正する

get 'static_pages/about'

　　↓

 match '/about', to: 'static_pages#about', via: 'get'



これで、
’/about’（GETリクエスト）がStaticPagesControllerの
aboutアクションにマッピングされる

そのマッピング（パス）を返却するabout_pathという名前付きルートが生成される

名前付きルートはControllerとViewで利用できる


※「match」を「get」にしても同じ名前付きルートになるが、
　 matchを利用する方がより「Railsっぽい」。(Railsの慣例)

Homeなど(/)でアクセスできるページの指定の場合は、
上記の書き方ではなく、以下の書き方でできる。

config/routes.rb

root 'static_pages#home'



--
###定義される名前付きルートの中身

about_path -> '/about'
about_url  -> 'http://localhost:3000/about'
→hoge_pathとhoge_urlの二つが定義される

'/hoge’のみを取得する場合はhoge_pathを使う。
リダイレクトの場合のみhoge_url書式を使用する。
HTTP標準では技術的にリダイレクト後にフルURLが要求されるため。
（ただし、ほとんどのブラウザではどちらの方法でも動作する。）
Asset Pipeline


参考
(http://railsdoc.com/asset_pipeline)


特定のディレクトリにCSSなどを格納しておけばRailsが自動でファイルを認識してくれる機能

+ javaScriptやCSSを結合することによって、ブラウザでのリクエスト回数を削減
+ JavaScriptやCSSを圧縮
+ SassやCoffeeScript、もしくはERBを使って記述可能
+ 「/app/assets/」「/lib/assets/」「/vendor/assets/」*のディレクトリ 「/app/assets/YYY/XXX」に置いたファイルは、「http://localhost:3000/assets/XXX」でアクセスが可能
+ /app/assets/」以下のサブディレクトリは、アクセスする際には無視


app/assets 	現在のアプリケーション固有のアセット
lib/assets 	自分で作成したアセット
vender/assets  サードパーティ製のアセット

___
参考(http://qa.atmarkit.co.jp/q/2269)

assets/sthlesheets/appication.css
アプリ固有のマニフェストファイル
*= require_self
*= require_tree .

意味
*= require_tree .		
	→assets/stylesheets以下のすべてのCSSを読み込む
メソッド

+ reverse　文字列を逆から表示
+ upcase 小文字を大文字
+ include?(i) 配列の中にiがあるか真偽判定

include?メソッドは、文字列の中に引数の文字列が含まれるかどうかを調べ、含まれるときはtrue、含まれないときはfalseを返す。

+ take(n)

takeメソッドは、配列の先頭から引数n個の要素を取り出し、新しい配列を作成して返す。
sublime、sass、コマンドライン



sublimeで拡張子scssでcssを書く
1. コマンドラインで cd半角スペースまで打ったら、カーソルのところにフォルダをドラッグする
2. ドラッグしたらエンターキー押して、 sass XXX.scss:XXX.css と入力すると自動でscssファイルとcssにコンパイルしてくれる
3. さらに sass XXX.scss:XXX.css --style expanded
と入力すると cssファイルの方の書き方がインデントで揃えられて出力される
URLとURIの違いって？

参照(http://yasuda:pass@www.example.com:8080/news/index.htm?page=2&msg=yes#hot)

URL ≠ URI

**URI**の方が広い概念で、URLはURIの **一部分**

###URL###
**場所**を示す書き方のルール
→ページや画像などを取得したりするための場所、アクセス方法の指定

###URI###
名前または場所を識別書き方のルールの **「総称」(ボス)**
URLはURIで定められたルールに従って書かれたり使われたりする

例
寿司(URI)
  --握り寿司(URL)
  
webページのアドレスはURLと呼んでもURIと呼んでもどっちでもよい。

URLを解剖してみる。
http://yasuda:pass@www.example.com:8080/news/index.htm?page=2&msg=yes#hot

https:  スキーム(scheme)

//yasuda:pass@www.example.com:8080   オーソリティ(authority)　アドレスの根本部分。さらに以下のパーツに分かれる

	yasuda:pass 　ユーザー情報　アクセスに使うユーザー名とパスワード
	
	www.example.com  ホスト(host) アクセス先サーバー名
	
	:8080 (port) アクセス先のサーバーのポート番号
	
	news/index.htm　パス(path) 指定したオーソリティの中でのアクセス先
	
	?page=2&msg=yes　クエリ(query) パスの中でさらにアクセス内容を細かく識別する。サーバー上で動作するプログラムへの指示や命令が書かれることが多い
	
	#hot　フラグメント(fragment)
javascriptのメモ


#オブジェクト
1.オブジェクトの元になる設計図を作ります。
設計図の作り方は、関数の定義と同様に
function + オブジェクト名
**(オブジェクト名は大文字から始めるのが一般的)**

→この設計図のことを **コンストラクタ**　と呼び、
**new演算子を使ってオブジェクトを作るときに呼ばれる**


2.設計図に処理（メソッド）を追加していきます。追加方法は、

**オブジェクト名.prototype.メソッド名 = 処理内容の関数**
********


要素の取得 
getElementById (id)
getElement **s** ByClassName (class:クラスは複数あるので、 **Elements**)

****

innerHTML　要素内のHTMLを取得設定する。
****

###function演算子について（関数）###
function +関数 の場合、 
**他のプログラムの実行より先に実行される。**

以下例 
1.function関数の処理を先に、上から順に実行していく。
2.それぞれの結果をプログラム頭のvar変数にそれぞれの結果を格納。
3.consoleで出力する

// ------------------------------------------------------------
// 各関数を実行して、結果を得る（グローバルな関数宣言は、関数宣言をプログラムの後方に記述しても動作する）
// ------------------------------------------------------------
var a = MyFunc_A(1,2);
var b = MyFunc_B(6,5);
var c = MyFunc_C(3,4);

// 出力テスト
console.log(a); // 3
console.log(b); // 1
console.log(c); // 12

// ------------------------------------------------------------
// MyFunc_A という名前の関数を宣言する
// ------------------------------------------------------------
function MyFunc_A (argument1 , argument2){
	var v = argument1 + argument2;
	return v; //結果をMyFunc_Aに返す
}

// ------------------------------------------------------------
// MyFunc_B という名前の関数を宣言する
// ------------------------------------------------------------
function MyFunc_B (argument1 , argument2){
	var v = argument1 - argument2;
	return v;　//結果をMyFunc_Bに返す
}

// ------------------------------------------------------------
// MyFunc_C という名前の関数を宣言する
// ------------------------------------------------------------
function MyFunc_C (argument1 , argument2){
	var v = argument1 * argument2;
	return v; //結果をMyFunc_Cに返す
}


****
###無名関数について###
参考サイト
http://www.ajaxtower.jp/js/function/index5.html

無名関数（関数リテラル、匿名関数とも）
記述方法
function(引数1,引数2...){
	//実行する処理
}

配列リテラルやオブジェクトリテラルと同じように変数に代入することができる
var func = function(引数1,引数2...){
	//実行する処理
}

****
**使い方**
>関数リテラルは関数を一度定義してその関数を呼び出す場合と違い関数名を付ける必要がありません。例えば一度しか使われないような関数を一つ一つ定義していくと、関数名が他の関数や変数名とかぶっていないかどうかを気にしなくてはなりません。関数リテラルであれば関数名を使用しませんのでその心配が不要となります。
引用元 http://www.ajaxtower.jp/js/function/index5.html

例：
var heikin = (function(x, y){return (x + y) / 2;});

document.write("<p>");
document.write("平均 = " + heikin(10, 8));
document.write("</p>");

var num = (function(x, y){if (x < y) return y - x; else return x - y;})(23, 11);

document.write("<p>");
document.write("差分 = " + num);
document.write("</p>");

//出力
平均：９
差分：１２
JavaScript で Quine

実行すると自分自身を出力するというやつ

```js:quine.js
(function(s){console.log(s.split('@'+'D').join('"').split('@'+'S').join(s));})("(function(s){console.log(s.split('@'+'D').join('@D').split('@'+'S').join(s));})(@D@S@D);");
```

ちな coffee

```coffeescript:quine.coffee
s="s=@D@S@D;console.log(s.split('@'+'D').join('@D').split('@'+'S').join(s))";console.log(s.split('@'+'D').join('"').split('@'+'S').join(s))
```
Ruby クラスのメモ

オブジェクトはクラスの中に入ったモノ
メソッドはオブジェクトに機能をもたせたもの

class名は大文字で始まる文字列。class end の中に記述する
class Player
end

クラスからオブジェクトを生成する。
クラス名.new
p = Player.new

クラスからオブジェクトを生成することを、 
**インスタンス化**
.newのようにクラス自体から直接呼び出すメソッドのことを
**クラスメソッド**
Ruby 配列についてメモ


##array

変数が並んだもの。変数を箱とすると、arrayは棚のようなもの。

array = [ "a", "b", "c", "d" ]
puts array[0]←添え字
puts array[1]
puts array[2]
puts array[3]
puts array[4]

a
b
c
d
**********

##each

大量のデータを扱う際にとても便利。配列に存在するデータを順番に
最後まで処理する。

array = [ "a", "b", "c", "d" ]

array.each do |data|
	puts data
end

**do ~ end** ブロック

********

##ハッシュ##

添え字として **「キー」**と呼ばれる「文字列」などを指定できる
ハッシュは **「{}」**で表現。

**ロケット演算子**と呼ばれる **「=>」**でハッシュ内のデータを参照できる。
hash = { "Ruby" => "るびー", "PHP" => "ぴーえいちぴー",
"Perl" => "パール" }
puts hash["Ruby"]
・・・
るびー


##ハッシュのeach##
配列と同様、eachが使用できる。ただし、ハッシュの場合はブロックに渡される値が「キー」と「値」の２つのデータのため、2つの変数をブロック内　||　で使用することが多い。

hash = { "Ruby" => "るびー", "PHP" => "ぴーえいちぴー",
"Perl" => "パール" }
hash.each do |key, value|
	puts key
	puts "読み方:" + value
end
・・・
Ruby
読み方:ルビー
PHP
読み方:ぴーえいちぴー
perl
読み方:るびー
iOS7,8互換でPicture-in-Pictureを導入するには？


さて、Picture-in-Picture、どう対応しましょう。

AVPlayerViewControllerはiOS8以上のみ、
AVPictureInPictureControllerはiOS9以上のみ、使えます。

既存のコードにどうやって入れ込んでいけばいいのでしょうか。
iOS7をdeploy targetにしたサンプルを作って考えてみました。

**もちろん、PiPの機能自体はどうやってもiOS9のiPad Air*, iPad mini [23]でしか使えません。**

## サンプルコード
https://github.com/toshi0383/Picture-in-Picture-sample

コードを見ていただければ分かるのですが、ポイントは 、

- ```#available```でのOSバージョン分岐
- AVPlayerViewControllerを使わない場合、PiPを使う部分は別クラス（今回はサブクラス）として切り出し、初期化時に選択

です。
こんな感じです。

```swift
  override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    switch indexPath.row {
    case 0: // AVPlayerViewControllerを使う場合
      if #available(iOS 8.0, *) {
        let vc = ModernPlayerViewController() // subclass of AVPlayerViewController
        navigationController?.pushViewController(vc, animated: true)
      }
    case 1: // UIViewControllerを使う場合
      let vc:OldStylePlayerViewController
      if #available(iOS 9.0, *) {
        vc = PiPOldStylePlayerViewController() // subclass of OldStyle..
      } else {
        vc = OldStylePlayerViewController() // subclass of UIViewController
      }
      navigationController?.pushViewController(vc, animated: true)
    default:
      break
    }
  }
```

AVPlayerViewControllerを使わずにプレイヤーUIをガンガンカスタマイズする/している場合は、子クラスとして切り出すことで既存のコードにはほとんど手を加えなくて良さそうです。

なおAppleもサンプルコードを公開しています。
こっちの方がちゃんと作りこまれてますので、実際の実装で参考にしたい方はこっちを見た方がいいかもしれません。
[AVFoundationPiPPlayer: Picture-in-Picture Playback with AVKit](https://developer.apple.com/library/prerelease/ios/samplecode/AVFoundationPiPPlayer/Introduction/Intro.html#//apple_ref/doc/uid/TP40016166-Intro-DontLinkElementID_2)

# まとめ

今WWDCのセッションビデオを見ていますが、Multitaskingのセッションが大量にあってかつ内容が濃いので、キャッチアップが大変そうな印象です。
PiPも上記は入り口で、他にも色々考えることがあると思います。
- PiPから戻ってきた時どうする
- PiPしている間はplayerViewのUI隠す必要がある(AVPlayerViewControllerを使わない場合)

さて余談ですが、上記のアプリを早速自分のiPad mini 2をiOS9betaにして試してみました。
**盛大にOSがクラッシュしました。**

実機で試される方はご注意を。
インターネット制大学院が存在しないことについて


サイバー大学やUniversity of the Peopleなど、インターネット制の「学部のみの大学」は存在するようであるが、完全インターネット制の「大学院」はかなり少ないようである。
化学や物理学などは難しいかもしれないが、IT分野などは作れそうな感じはする。しかし、あまり作ったという話を聞いたことがない。
通信制の大学院などは存在するが、文系ばかりで理系はあまり聞かない。
放送大学などは情報分野では大学院があるようである。だが、インターネット制ではなく、ある程度リアルでのやり取りがあるようである。
University of the Peopleなどは、大学院の設置は検討しているようであるが、まだ実現には至っていないようだ。
インターネット制大学院が設置されない理由として、研究活動はプロジェクトで進むものということがあるようである。
先輩後輩関係があり、教授とのコミュニケーションがあって、研究成果の共有のためにはリアルでのやり取りが必要ということもあるだろう。
インターネット制では、安易に入学して安易に辞めたりということがある可能性があるということもある。
通信制では卒業率が普通の大学よりも低いということもある。

個人的には、引きこもり状態で研究活動ができないかと言うことを考えている。
例えば、世の中には、入院を余儀なくされていたり、あるいは家事や育児で外に出られない人が存在する。身体障害者などもいるだろう。
単純に大学院に行くにはお金がかかるということもある。

そこで必要なものが、そもそも「大学院なのか」という疑問が湧いてくることもある。大学や大学院という枠組みが重要なのではなく、教育や研究ができる環境が重要なのではないかと思う。

そういう意味でコーセラやEdXのようなMOOCの試みは面白いと思う。あるいは、スカゼミのようなインターネット上の勉強会などはもうちょっと注目されてもいいと思う。

僕自身サイバー大学を卒業して、今現在ニートをしながらコーセラの機械学習を受講して、機械学習のセキュリティソリューションを作れないか模索しているが、そもそもそのような自宅での技術開発において足りないものはなんなんだろうかと言うことを考えることがある。

例えば、最近は在宅ワークはあまり流行らないが、その理由として、「労務管理が大変になる」ということがある。
つまり、何時間働いたかとか、ちゃんと働いていたかとか、そういうことの管理が結構難しくなるのである。
つまり、インターネット経由だと、人間は人間をお互いに信用することができない。信用を醸成することができないといったことがある。

研究活動はプロジェクトを組んで行うものである。つまり、お互いに信用していなくてはならない。だが、お互いに信用できないと、プロジェクトを組むことはできない。
結果として、家に引きこもっていてできることとなると、アフィリエイトなどの、一人でもできるものとなる。組織が必要な仕事は難しくなるのである。

だが、インターネット経由で組織を構築する技術は、インターネット制の大学院を作ることにつながるし、インターネットベースの企業を作ることができることにもつながる。
これらは、主にコストの面でメリットがある。そのために必要なシステムとはなんだろうか。
これから色々考えていきたいと思う