OmniAICreator/Qiita-1.07M huggingface dataset:
vagrant + phalcon framework導入までの道のり

phalcon frameworkが気になったので、vagrantに入れてみた。

- *注意事項*
    - virtualboxではなく、vmwareを用いているので、違うところがあるかもしれない。
- 環境
    - mac OSX Yosemite 10.10.5
    - centOS6.5 64bit

基本は [このサイト](http://blog.a-way-out.net/blog/2014/12/01/install-phalcon-with-vagrant/) をベースに入れていきます。

- 詰まったこと
    - mailcatcherでエラー
        - 原因
            - rubyのバージョン？
            - g++が入っていない？
            - 上記入れた後に出たエラーでのヒントを参考にsqlite-devel導入
        
        ```
        # gitがないので、git導入後rbenv入れた
        sudo yum -y install git
        git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
        # 以下mac側でも行った
        rbenv install -v 1.9.3-p551
        rbenv global 1.9.3-p551
        ruby -v
        
        # g++を入れる
        sudo yum -y install gcc-c++
        
        # sqlite-devel
        sudo yum install sqlite-devel -y
        ```
    - yum-remi関連でこける
        - 原因
            - wgetが使えない
            - yumのレポジトリに繋がらない？
                - [参考サイト](http://d.hatena.ne.jp/C_6B4A2B/20130427/1367073209)
        
        ```
        # wget導入
        sudo yum install wget
        ```
    - apache設定でページが見れない
        - 原因
            - 初期設定のままだと見れない
            - [こちら](http://nobuneko.com/blog/archives/2014/12/apache_httpd_apr_sockaddr_info_get_could_not_reliably_determine_fqdn.html)参照

すごく簡単にまとめてしまったけれど、各端末での設定は必要そうということです。
wgetの導入とかはchefのレシピとして入れておきたいところですよね。

apacheでは使えたので、今度はnginxでもやってみたいところ。
意外と知られていないSwift数値型の細かい仕様

Swiftの数値型の細かい仕様について書いていきます。

## Swiftの数値を表す型
### 整数

|型|最大値|最小値|
|:--|:--|:--|
|Int|2147483647<br>9223372036854775807|-2147483648<br>-9223372036854775808<br>(実行環境が32bitか64bitによって違う)|
|Int8|127|-128|
|Int16|32767|-32768|
|Int32|2147483647|-2147483648|
|Int64|9223372036854775807|-9223372036854775808|
|UInt|4294967295<br>18446744073709551615<br>(実行環境が32bitか64bitによって違う)|0|
|UInt8|255|0|
|UInt16|65535|0|
|UInt32|4294967295|0|
|UInt64|18446744073709551615|0|

### 小数

|型|長さ|
|:--|:--|
|Double|64bit|
|Float|32bit|
|Float32|32bit|
|Float64|64bit|
|Float80|80bit|
|CGFloat|32bit/64bit(実行環境が何bitかに依る)|

### エイリアス
数値型ではないものもありますが、関連するAliasもまとめてみました。

|型|元クラス|
|:--|:--|
|CChar|Int8|
|CChar16|UInt16|
|CChar32|UnicodeScalar(文字列)|
|CInt|Int32|
|CLong|Int|
|CLongLong|Int64|
|CShort|Int16|
|CSignedChar|Int8|
|CUnsignedChar|UInt8|
|CUnsignedInt|UInt32|
|CUnsignedLong|UInt|
|CUnsignedLongLong|UInt64|
|CUnsignedShort|UInt16|
|IntegerLiteralType|Int|
|CDouble|Double|
|CFloat|Float|

### その他
数値型とは少し違いますが、Bitという1と0を表現する列挙型もあります。
`.Zero`と`.One`の2種類の値を取ります。

## Swiftのリテラルでできる事
### アンダーバーを利用

```swift
1_000
0.000_1
```

### 2進数・8進数・16進数

```swift
0b10001 // → 17
0o21 // → 17
0x11 // → 17
```

### 指数

```swift
12e2 // → 1200(12 * 10の2乗)
0x10p4 // → 256(16 * 2の4乗)
```

## 数値の剰余を求める計算
通常の剰余の求め方です。

```swift
5 % 3 // → 2
1 % 3 // → 1
```

負の数に対する計算も正の値と同様に行えます。
計算結果は左の値の符号に依存します。

```swift
-1 % 3 // → -1
-4 % -3 // → -1
7 % -5 // → 2
```

小数点に対しても行えます。

```swift
print(1.1 % 3.1) // → 1.1
print(-3.1 % 3) // → -0.1
```
初心者のためのGitとSourceTree　〜サルでもわかるGit入門を試してみた〜 その２

# リポジトリの共有
## リモートリポジトリにプッシュ・クローン・プルする
これらの章はこれから実践するための事前知識変なのでよーく読んでおきましょう。

## チュートリアル２　リポジトリの共有
### リモートリポジトリをBacklog上に作成する
ここはサルGitの[手順](http://www.backlog.jp/git-guide/intro/intro4_1.html)に沿って作成します。特に難しいことはありませんでした。
<img width="544" alt="sourcetree_18.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/106687/87946367-67f0-08e0-b93a-464bae190f50.jpeg">

### リモートリポジトリにプッシュする
リポジトリ操作画面のツールバー右端にある「設定」ボタンをクリックします。
この「設定」ボタンのアイコンが違いますが・・・もうこのくらいの違いには慣れました。
<img width="578" alt="sourcetree_16.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/106687/17828648-3451-63fc-8518-be3ef45d9124.jpeg">

おお！同じ画面！早速「追加」ボタンを押してみます。
<img width="568" alt="sourcetree_17.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/106687/41687e34-b39a-06ed-dbd1-5faeeab6e712.jpeg">

すると・・・
なんか下段に「オプションの拡張統合」なんて表示が見えますが、今は良く分からないので無視します。

<img width="617" alt="sourcetree_19.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/106687/a147afc8-5d36-d41d-3106-7df56555a33c.jpeg">

ここで「必須情報」として
> * リモートの名前　：　origin
> * URL/パス　　　　：　Backlogで表示しているHTTPのURL

この二つだけ入力して「OK」ボタンを押します。
すると先ほどの画面にリモートリポジトリのパス名が登録されます。
<img width="568" alt="sourcetree_20.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/106687/7d078910-1ac2-81d3-dd80-95ff69276a2d.jpeg">

すると、SourceTreeのリモート一覧に今登録した「origin」が無事に登録されました。

<img width="393" alt="sourcetree_21.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/106687/24ae5b1b-7b24-b269-44e5-4f3bb2e87e5a.jpeg">

これでようやくプッシュの準備が整ったので、いよいよプッシュします。
すると次の画面が出ます。
最初はプッシュしたいブランチにチェックが入っていないので、忘れずチェックマークを入れます。

<img width="650" alt="sourcetree_22.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/106687/bcfb6c26-d3af-6d5a-1b01-5081335bae01.jpeg">

チェックを入れたら「OK」ボタン！

<img width="420" alt="sourcetree_23.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/106687/9d4956d9-27a1-f83b-47de-9338bcd6cf31.jpeg">

ここで認証チェックかい！
サルGitではリモートブランチを登録する時点で聞かれることになっていたのに、「聞かれないなぁ〜」と思っていましたが、ここできました。
そこで、Backlog側のユーザIDとパスワードを入れてＯＫすると・・・
<img width="552" alt="sourcetree_24.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/106687/7bf78cb3-cbfc-90b6-bd54-e3b146f260bd.jpeg">

コミットの説明にリモートリポジトリを表す「origin/master」が追加されました。
念のためBacklogのGitのページを開いみると、最近の更新にプッシュの項目が追加されています。
<img width="544" alt="sourcetree_25.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/106687/4a7b9b10-4a43-dec0-1c55-7d58ca21ad5c.jpeg">

リポジトリのファイル一覧にも、pushしたリポジトリのファイルが追加されました。
めでたし、めでたし！
<img width="651" alt="sourcetree_26.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/106687/1622a28f-4fee-4eab-a696-e467b9aac5bb.jpeg">
CakePHP / validate で エラーコードなどを受け取る強引なやり方

タイトルの通り強引なやり方で validate rule ごとの配列（エラーコードなど）を受け取る方法です。公式ドキュメントにも載っていないのですが、一応動作したのでメモメモ。

## messge を配列で受け取る

やり方はいたって簡単で message の中身を配列にするだけです。

### 通常の message

通常のサンプルとして以下のようなものがあったとします。

```php
public $validate = [
    'name' => [
        'maxLength' => [
            'rule' => ['maxLength', 60],
            'required' => true,
            'allowEmpty' => false,
            'message' => 'タスクを入力してください'
        ],
    ],
];
```

## 配列を書いてみる

下記のように message に配列入れてあげると、 validationErrors などでも配列で受け取ることができます。

```php
public $validate = [
    'name' => [
        'maxLength' => [
            'rule' => ['maxLength', 60],
            'required' => true,
            'allowEmpty' => false,
            'message' => [
                'code' => 'E1234',
                'message' => 'タスクを入力してください'
            ],
        ],
    ],
];
```

## 注意

ただし、 FormHelper 側では message の配列が処理されません。
FormHelper を使わないシーンで利用できるとは思いますが、公式なやり方ではないのでご注意ください。
Google Apps Scriptのモダン開発

[Google Apps Developer Blog](http://googleappsdeveloper.blogspot.jp/2015/12/advanced-development-process-with-apps.html) でもApps Scriptでのモダン開発について紹介されました。

要点としては次のような感じです。

* コーディングはローカル環境で行う。好きなエディタやIDE、既存のツールを使える。
* 主にGoogle(GCP)はApps Scriptのランタイムとして利用する。(Webアプリ、Add-onとしての公開など一部はScript Editorを利用する)
* Drive APIを利用したApps Scriptのインポート/エクスポートを利用して、ローカルのリソース(js,html)をGoogleドライブ上のApps Scriptプロジェクトにアップロードする。
* テストの実行に[Apps Script Execution API](https://developers.google.com/apps-script/guides/rest/api)を利用する。

上記のようなApps Scriptでもモダン開発をするための [gas-mithril](https://www.npmjs.com/package/generator-gas-mithril) という Yeoman Generator を作りました。まだ、一部(Drive APIを利用する設定など)は自動化できていませんが、Apps Scriptでのモダン開発を始めるのに便利だと思います。
Browserify, Babel, Mithrilの組み合わせで開発を始められるプロジェクトを生成します。

[以前の記事](http://qiita.com/fossamagna/items/7c65e249e1e5ecad51ff) でも書いた拙作の [gasify](https://www.npmjs.com/package/gasify) も含まれています:relaxed: みなさんも、Apps Scriptでもモダン開発してみましょう。:smile:
UbuntuのImageMagickをwebp対応にする

# はじめに

apt-getでインストールできるImageMagickはWebpをサポートしていないので、コンパイルしなおして利用できるようにする。

# 環境

Ubuntu 14.04LTS
imagemagick-6.7.7.10
libwebp-dev 0.4.0-4

# コンパイル
以下のコマンドで既存のパッケージと同じソースコードとコンパイル環境を用意する。
コンパイル場所は/tmp/imagemagickとした。

```shell-session
mkdir /tmp/imagemagick
cd /tmp/imagemagick
sudo apt-get build-dep imagemagick
sudo apt-get install libwebp-dev devscripts
apt-get source imagemagick
```

そのとき最新のソースコードが取得されるのでディレクトリを移動する。（バージョンによってディレクトリ名は変わる）
debuildでコンパイルし、debパッケージを作成する。コンパイルには時間がかかるので気長に待つ。

```shell-session
cd imagemagick-6.7.7.10/
debuild -uc -us
```

生成されるされたdebパッケージをインストールし、対応フォーマット一覧にWebpがあることを確認する。

```shell-session
sudo dpkg -i ../*magick*.deb
convert -list format
```

以下のように出力されると正常にコンパイル・インストールができたことになる。

```shell-session
     WEBP* WEBP      rw-   WebP Image Format
```

パッケージ管理下なので、アンインストールもapt-getで可能になる。

# 参考文献

- [ImageMagick convert can't convert to webp](http://askubuntu.com/questions/251950/imagemagick-convert-cant-convert-to-webp)
Fisher-Yates shufflアルゴリズムを用いて自作で配列をシャッフルさせる

RubyやPython、Underscore.jsなどにはshuffle関数があり、簡単に配列の順番をランダムに入れ替えることはできますが、自作で配列やリストをランダムに入れ替える場合に、Fisher-Yates shuffleというアルゴリズムがあるので共有したいと思います

## Fisher-Yates shuffle
Fisher-Yates shuffleは配列からランダムに要素を抽出し、入れ替えるアルゴリズムです。

```js
  var length = array.length;
  for(var i = length - 1; i > 0; i--) {
      var j = Math.floor(Math.random() * (i + 1));
      var tmp = array[i];
      array[i] = array[j];
      array[j] = tmp;
  }
```
(Fisher-Yates shuffleアルゴリスムは[英語版Wikipedia'Fisher-Yates shuffle'](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle)参照)

このアルゴリスムの特徴をまとめると以下のようになります

- 配列の全ての要素が最低１回ずつ入れ替えの対象となる
- 入れ替えられた要素が2回入れ替わることはない
- 配列の長さ分の計算量なので計算コストがかからなく高速
- 理論上偏りがない結果が得られる

## 最後に
シンプルかつ最適化されたアルゴリスムなので、要素をランダムに入れ替えるのアルゴリスムとしては最も有名だと思います。shuffle関数がない言語などで使ってみるといいですね

他の言語に用いられているshuffle関数については、こちらが参考になります
[swiftでシャッフル関数](http://qiita.com/satoshia/items/13d0842a784f0f91c018)
[リストをシャッフルする](http://qiita.com/da1/items/e1aa136c7ef8fa1c3636)
[CoffeeScriptで配列のシャッフル](http://qiita.com/nobu__kun/items/7e663e374d6b4570e44d)

この記事も参考になります
[Array#sort実装のshuffleは偏る](http://qiita.com/minodisk/items/94b6287468d0e165f6d9)
Raspberry Pi に SSH接続する（有線）

# はじめに

前回の記事 [電子工作初心者が Raspberry Pi で湿度計を作ろうとした話](http://qiita.com/MarieKawasuji/items/f84e8c383f87fb53702e) にて、Raspberry Pi の OSインストールまで終わりました。

ディスプレイ・キーボードを貸主に返さなくてはならないので、これらが無くても Raspberry Pi を触れるようにします。本来は無線LAN接続したいところですが、Raspberry Pi には標準では無線モジュールは組み込まれていないため、自分で用意する必要があります。
今回は予算の都合上、有線にてSSH接続を試みます。

# 今回やりたいこと

OSインストールしただけの Raspberry Pi に、有線でSSH接続する

# 新たに用意したもの

LANケーブル（1m）* 1本
![1223_01.png](https://qiita-image-store.s3.amazonaws.com/0/49458/7301cd04-908e-84c4-1769-6c9bbd47b07e.png)

# SSH接続手順

ルーターと Raspberry Pi を LANケーブルで接続します。
![1223_02.png](https://qiita-image-store.s3.amazonaws.com/0/49458/3788b3e0-e6f6-d24a-16df-3b4c8493a7fd.png)

Raspberry Pi にログインし、IPアドレスを ```ifconfig``` にて確認します。
![1223_03.png](https://qiita-image-store.s3.amazonaws.com/0/49458/9a849d8d-1dc3-1124-b767-73e43f527eb6.png)

接続元（今回はMac）のターミナルを起動して、以下のコマンドを入力します。

```
ssh pi@[先ほど確認した、Raspberry Pi の IPアドレス]
```
Raspbian では、ユーザーID：```pi```、パスワード：```raspberry``` のアカウントが初期設定されているので、こちらで接続しています。

初回接続の場合、以下の確認メッセージが表示されます。

```
MBP:.ssh suzy$ ssh pi@192.168.0.16
The authenticity of host '192.168.0.16 (192.168.0.16)' can't be established.
ECDSA key fingerprint is SHA256:S5qREIPX0e81RujvdUyFmrUpVG+Uqa64SuGGffWJCGc.
Are you sure you want to continue connecting (yes/no)? 
```

yes を入力すると ```~/.ssh/known_hosts``` に公開鍵の登録が行われ、接続処理を継続します。また、二回目以降は聞かれなくなります。

次に、pi ユーザーのパスワードを入力して...

```
Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.0.16' (ECDSA) to the list of known hosts.

pi@192.168.0.16's password: 
```

Raspberry Pi への SSH接続に成功しました！

```
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

permitted by applicable law.

Last login: Wed Dec 23 03:24:33 2015 from 192.168.0.11

pi@raspberrypi ~ $ 
```

# 次にやりたいこと

Raspberry Pi は初期状態では DHCP のため、動的にIPアドレスが割り振られます。毎回、直接ログインして IPアドレスを確認するのは大変なので、**Raspberry Pi に固定IPアドレスを割り当てる**ことに挑戦したいと思います。

# 雑記

某ヨドバ◯カメラにLANケーブルを購入しに行ったところ、あまりの種類の多さに驚愕。LANケーブルって何を基準に選べば良いのだろうか..日々勉強です。
react-native: キーボードを開くと入力欄が隠れる問題の解決法

React Nativeの`<TextInput>`にフォーカスが当たると、iOSではキーボードが下から上がってきてUIの上に重なるが、React Nativeは入力欄が画面上に見える状態で表示されていることまでは面倒を見てくれない。

たとえば、入力欄が画面の最下部にあるようなUIでは、入力欄がキーボードですっかり隠れてしまう。

![failure.gif](https://qiita-image-store.s3.amazonaws.com/0/889/bbb15e3b-7883-e4d4-d4d9-0aca0327d949.gif)


解決策としては、コンポーネント側でキーボードの開閉イベントを受け取り、キーボードが表示されたとき、UIを上にずらすような処理をコーディングする。

UIをずらす方法として、`merginTop`にマイナス値をセットする、`height`を減少するといった方法を試してみたものの計算や調整が難しかった。最終的に行き着いたのは、キーボードと同じ高さの`<View>`を画面最下部に追加してやる方法。

下のアニメーションはこの方法を実装したデモで、青い部分がキーボードと同じ高さの`<View>`になっている。

![animation.gif](https://qiita-image-store.s3.amazonaws.com/0/889/20defaed-c797-9855-338b-ace04b0d0b52.gif)


このキーボード用スペースコンポーネントの実装は次のようになる。

```js:KeyboardSpace.js
import React, {Component} from "react-native";
const {
  Animated,
  DeviceEventEmitter
} = React;

export default class KeyboardSpace extends Component {
  constructor(props, context) {
    super(props, context);
    this.state = {
      height: new Animated.Value(0)
    };
    this.keyboardWillShowSubscription = null;
    this.keyboardWillHideSubscription = null;
  }

  componentDidMount() {
    DeviceEventEmitter.addListener("keyboardWillShow", (e) => this.keyboardWillShow(e));
    DeviceEventEmitter.addListener("keyboardWillHide", (e) => this.keyboardWillHide(e));
  }

  componentWillUnmount() {
    this.keyboardWillShowSubscription.remove();
    this.keyboardWillHideSubscription.remove();
  }

  keyboardWillShow(e) {
    Animated.timing(this.state.height, {
      toValue: e.endCoordinates ? e.endCoordinates.height : e.end.height,
      duration: e.duration
    }).start();
  }

  keyboardWillHide(e) {
    Animated.timing(this.state.height, {
      toValue: 0,
      duration: e.duration
    }).start();
  }

  render() {
    return (
      <Animated.View style={{height: this.state.height}}></Animated.View>
    );
  }
}
```

使い方は、ずらしたいコンポーネントの後ろにおくだけ。

```js
import React, {Component} from "react-native";
const {
  View,
  StyleSheet
} = React;
import KeyboardSpace from "./KeyboardSpace.js";

export default class ConversationPage extends Component {
  render() {
    return (
      <View style={styles.container}>
        ...ずらしたいコンポーネントをここに配置...
        <KeyboardSpace />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1
  }
});
```

なお、アニメーションがiOSのキーボード出し入れの速度と違うが、React Nativeが提供しているeasingカーブにiOSの"keyboard"相当のものがないためこうなってしまう。React NativeのAnimatedではeasingカーブをカスタムすることもできるので、気になる場合は微調整してみてください…。
c++ builder XE4, 10.2 Tokyo > TeeChart > seriesのX値を取得する > double xvalue = Series1->XValue[0];

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

SeriesのX値を取得するには

```
double xvalue = Series1->XValue[0];
```

XValuesの方かと思ったら、XValue[]だった。
ECCube2.12系個人情報上書きSQLプラグイン非考慮

ECCube2.12系個人情報上書きSQL プラグイン非考慮


```sql:ECCube2.12系個人情報上書きSQLプラグイン非考慮
update dtb_shipping set shipping_addr01='都庁前', shipping_addr02='１−２−３';
update dtb_csv_sql set csv_sql='';
update dtb_customer set email='test@XXX.co.jp', addr01='都庁前' ,addr02='1-2-3';
update dtb_customer set tel01='090', tel02='1234' ,tel03='5678';
update dtb_customer set salt='salt', reminder_answer='sfddsfwoiusjdf';
update dtb_customer set name01='なまえ１', name02='なまえ2';
update dtb_customer set kana01='ナマエ1', kana02='ナマエ2';
update dtb_customer set zip01='012', zip02='0123';
update dtb_mail_history set mail_body='本文本文本文本文';
update dtb_order set order_name01='注文者なまえ1', order_name02='注文者なまえ２';
update dtb_order set order_kana01='チュウモンシャ1', order_kana02='チュウモンシャ2';
update dtb_order set message='';
update dtb_order set order_email='test@XXX.co.jp', order_tel01='090', order_tel02='1234', order_tel03='5678';
update dtb_order set order_zip01='000', order_zip02='1234';
update dtb_order set order_addr01='都庁前', order_addr02='１−２−３';

update dtb_order set memo01=NULL , memo02=NULL , memo03=NULL;
update dtb_order set memo04=NULL , memo05=NULL , memo06=NULL;
update dtb_order set memo07=NULL , memo08=NULL , memo09=NULL;
update dtb_order set memo10=NULL;

update dtb_order set note=NULL;


update dtb_order_temp set memo01=NULL, memo02=NULL , memo03=NULL;
update dtb_order_temp set memo04=NULL , memo05=NULL , memo06=NULL;
update dtb_order_temp set memo07=NULL , memo08=NULL , memo09=NULL;
update dtb_order_temp set order_name01='注文者なまえ1', order_name02='注文者なまえ2';
update dtb_order_temp set order_kana01='チュウモンシャ1', order_kana02='チュウモンシャ2';
update dtb_order_temp set order_email='test@XXX.co.jp';
update dtb_order_temp set order_tel01='090', order_tel02='1234', order_tel03='5678';
update dtb_order_temp set order_zip01='000', order_zip02='1234';
update dtb_order_temp set order_addr01='都庁前', order_addr02='１−２−３';
update dtb_other_deliv set name01='なまえ', name02='なまえ';
update dtb_other_deliv set kana01='ナマエ1', kana02='ナマエ2';
update dtb_other_deliv set zip01='000', zip02='ナマエ';
update dtb_other_deliv set addr01='都庁前', addr02='１−２−３';
update dtb_other_deliv set tel01='090', tel02='1234', tel03='5678';
update dtb_send_customer set email='test@XXX.co.jp', name='なまえ';
update dtb_session set sess_data='';
update dtb_shipping set shipping_name01='名前１', shipping_name02='名前２';
update dtb_shipping set shipping_kana01='ナマエ1', shipping_kana02='ナマエ2';
update dtb_shipping set shipping_tel01='090', shipping_tel02='1234', shipping_tel03='5678';
update dtb_shipping set shipping_zip01='000', shipping_zip02='1234';
update dtb_shipping set shipping_addr01='都庁前', shipping_addr02='１−２−３';

update dtb_order_temp set session='';
update dtb_send_customer set email='test@XXX.co.jp';

update dtb_contacts set message='', tel='000000000';
update dtb_contacts set mail='test@XXX.co.jp';
PHPでGithub Gist投稿(匿名)

# PHPでGistに投稿。

とりあえずGoogle先生に聞いた。
そうしたら出てきたのがこれ。
>http://stackoverflow.com/questions/18667303/how-to-create-a-github-gist-with-api

このサンプルコードじゃ動かなかったのでメモ。


# 動いたコード。

```html+php:うごいたよ.php

<?php
if (isset($_POST['button'])) 
{    
    $code = $_POST['code'];

    # Creating the array
    $data = array(
        'description' => 'description for your gist',
        'public' => true,
        'files' => array(
            $_POST["name"] => array('content' => $_POST["code"]),
        ),
    );                               
    $data_string = json_encode($data);

    # Sending the data using cURL
    $url = 'https://api.github.com/gists';
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, "foo");//←付け足した。
    
    $response = curl_exec($ch);
    curl_close($ch);

    # Parsing the response
    $decoded = json_decode($response, TRUE);
    $gistlink = $decoded['html_url'];

    echo "<h2>".$gistlink."</h2>";    
}
?>

<form action="/gist.php" method="post">
<p>
Name:<input type="text" name="name" size="40">
</p>
<p>Code:<textarea name="code" cols="25" rows="10"/> </textarea>
</p>
<input type="submit" name="button"/>
</form>

```

いろいろリンク先とはいじってる箇所がありますが、ｷﾆｼﾅｲ

#まとめ
まとめるとUAがなんかしら無いと動かないということです。
`curl_setopt($ch, CURLOPT_USERAGENT, "foo");`
を追加してあげましょう。。


#参考にしたページ
http://stackoverflow.com/questions/18667303/how-to-create-a-github-gist-with-api

https://developer.github.com/v3/gists/#create-a-gist

https://developer.github.com/v3/#user-agent-required
↑UAいれねえとリクエスト拒否するぞって書いてあったページ
Rails新規PJ環境構築手順書

今回やった手順の書き留め。

## 手順

1. 住所きめる

	```
$ mkdir pj
$ cd pj
```
以降、毎回確認を怠らないこと！
* gitの設定

	```
$ git init
$ git remote add origin https://pj_name〜〜〜.git
```
* Homebrew

	入ってなかったら入れる
	すごくすごくわかりやすい記事があるので参考に！
[パッケージ管理システム Homebrew](http://qiita.com/b4b4r07/items/6efebc2f3d1cbbd393fc)

	入ってる場合もdoctorは必須。必要ならupdate（ただし要注意）。

	```
$ brew doctor
$ brew update
```
* Rubyの設定

	rbenvを使います！
	[詳しくはここで！](http://qiita.com/namachapanda20/items/127863ec8fe239f9f614)

	```
$ ruby -v
=> 使いたいバージョンになったらOK！
$ # 確認しましょう！
```
* Railsの設定

	```
$ bundle init
$ gem install --no-ri --no-rdoc rails
$ rails -v
=> 使いたいバージョンになったらOK！
$ gem install bundler
$ # ここでも確認を！
```
* ライブラリのインストール

	まずGemfileを修正

	``` Gemfile
source 'https://rubygems.org'
　
gem 'rails', '4.1.6' #コメントアウトを外して、バージョンを指定する
```
Gemfileにそってbundle install

    `--path`を指定することで、install先を指定することが可能（`vendor/bundle`を設定する）
    一度実行すると、`.bundle/config`に`BUNDLE_PATH`として記録されるので次回以降設定不要！


	```
$ bundle install --path vendor/bundle
=> Fetching gem metadata from https://rubygems.org/...........
...（中略）...
Installing rails 4.1.6
Your bundle is complete!
It was installed into ./vendor/bundle
```
 Railsはすでにインストールしてたので、Gemfileの設定はいらなかったかな・・・？？？
* Railsアプリケーション作成

	```
$ bundle exec rails new . -T -d mysql --skip--bundle
```
オプションはお好みで
* いよいよpushします

	#### あげるまえに！
	* .git/config の設定は大丈夫？？
	* .gitignore の設定は大丈夫？
        + `/vendor/bundle` の追加を忘れないように 

	##### 参考
[Gitをインストールしたら真っ先にやっておくべき初期設定](http://qiita.com/wnoguchi/items/f7358a227dfe2640cce3)
[.gitignoreの設定手本](https://github.com/github/gitignore/blob/master/Rails.gitignore)

	失敗すると戻せません(ToT;)・・・何度も失敗してるのでちゃんと確認すること！

	```
$ git commit
$ git push origin master
```


## 参考
http://kozo002.blogspot.jp/2012/01/rubybundler.html
http://qiita.com/shinyashikis@github/items/3501c5f7f71a8e345c3d
http://qiita.com/emadurandal/items/a60886152a4c99ce1017

bundleやらgemやらはわかりやすい記事がたくさんありますね！勉強勉強！
【dxlib-d】DXライブラリをDに移植してみた【3.21f対応】

これまでも何度かDに移植されてきたDXライブラリですが
最新版のDXライブラリに対応したポーティングライブラリがないので作成しました。

[github](https://github.com/dragoon2014/dxlib-d)に上がっているのでご自由にお使いください。
dxlib-d自体の作成手順もリポジトリに同梱しています。

# dxlib-d利用手順
## 必要なもの
- DMD
    - LDCやGDCでの動作は未確認です
- VisualC++
    - ライブラリファイルが必要です
- 本家DXライブラリ本体
    - ライブラリファイルが必要です
    - VisualC++用のファイルを入手してください
    - 軽量化パッケージでも動きます
- dxlib-d
    - dxlib.dが必要です

## ビルド方法
ysnr氏によるdxlib4dや羽流布氏によるD言語版DXライブラリと違い、
スタティックライブラリを直接リンク(64ビット)する方式をとっています。
なお、3.16fの頃はUnicodeビルドを使用していましたが
3.21f時点でマルチバイト(UTF-8)に限定しています。
関数名は本家及びdxlib4dに合わせています。

1. sc.iniの設定
    64ビットでのコンパイルができるように
    VisualC++のライブラリパスを指定してください

    ```ini
    [Environment64]
    LIB=(DMD自体のライブラリのパス)
    LIB=%LIB%;(VisualC++のライブラリのパス)
    ```
2. ご自身のソースとdxlib.d、DXライブラリのlibファイル群を指定してコンパイル

    ```
    dmd -m64 source.d dxlib.d DxDrawFunc_x64 DxLib_x64.lib ...
    ```
    必要なlibは

    ```
    dir *x64.lib | findstr -v "_vs20 W_ DxUseCLib_"
    ```
    などで抽出できます。
    もっとも、pragma libを使用するなりMakefileを書くなりしたほうが良いでしょう。
    pragma libを使用したサンプルがリポジトリに同梱にしてありますので参考にしてください。


## dxlib-dに使用されているD言語の最新(?)の技術
D2.066.0からextern(C++, namespace)が実装されたことにより劇的に自動変換を行いやすくなりました。
ただnamespace付きのexternを複数置くとconflictが発生してしまうので今後の修正に期待です。

## 3.21f対応にあたって
totoki-keiさんの記事を参考にさせていただきました。
https://gist.github.com/totoki-kei/7ff79c4bcac9f583771fdff57c073066

## いずれ
- DrawStringとかに.toStringzをつけなくても動作できるようにしたい
- GetHitKeyStateAllなどの引数をubyte[256]でも受け付けるようにしたい

## 終わりに
まだまだ検証は行われていません。
コンパイルができることを目標にしたのでスクリプトの質もかなり雑です。
(予約語に近い変数名が出てきたらバグる可能性大です)
致命的なバグやもっといい変換方法がある場合はぜひ教えてくださいませ。
~~htodのアプデはよ~~
winAppDev > CSIDL_XXXの検索 > AppData\Local / [user]\Documents / AppData\Roaming など

```txt:動作確認
C++ Builder XE4
Windows 7Pro
```

以下のようなフォルダを取得するにはCSIDL_XXXの環境変数を知る必要がある。

- C:\Users\[user]\AppData\Local
- C:\ProgramData
- C:\Users\[user]\Documents
- C:\Users\Public\Documents
- C:\Users\[user]\AppData\Roaming

https://technet.microsoft.com/ja-jp/library/dd560744(v=ws.10).aspx
で検索をかければ手っ取り早く見つかる。


関連
http://qiita.com/7of9/items/0fbec6205a31e5c8ddfd
RubyKaigiのあとがき(Hyaliteの話です)

この記事はRuby Advent Calendar の23日目として書いてます。
先日RubyKaigiでトーク([Writing web application in Ruby](http://rubykaigi.org/2015/presentations/youchan))をしたところ思いのほか反響があったので、少しフォロー書いておこうかと思います。丁度ここに枠が空いていたのでこの場で書かせていただきます。

## Hyaliteについて
HyaliteはRubyで作られたVirtual DOM実装です。OpalというRubyからJavaScriptへコンパイルするトランスパイラを利用してRubyのプログラムとして書いています。
まだまだ開発途上で、実はRubyKaigiに合わせて早急に実装した部分もあります。RubyKaigiのまでにはいくつかサンプルが動くことを目標に作りました。
そのサンプルというのは2つあって、[TodoMVC](http://todomvc.com)のHyalite版(https://github.com/youchan/hyalite-todo )とRubyKaigiのトークのための[スライド](http://rubykaigi.youchan.com)でした。
スライドのほうは、実際に動くものが、http://rubykaigi.youchan.com にあります。矢印(← →)キーでスライドの操作、sキーでMatzが時間に合わせて動きます。また、fキーでフッターが表示されます。
ソースコードが[github](https://github.com/youchan/hyaslde)にありますので興味があったら見てください。Markdownでスライドを書くようになっているので、実は他の発表でも使うことができます。
TodoMVCの実装について簡単な解説を[仮想DOM/Flux Advent Calendar](http://qiita.com/advent-calendar/2015/vdom-flux)に書きましたので、使ってみたいひとはそちらを参考にしてもらえるとよいと思います。
* [RubyのVirtual DOM実装 'Hyalite' について](http://qiita.com/youchan@github/items/cf2b6e4f8846c017133e)

## 動機について
Hyaliteを作った理由についてはトークでも話しましたが、趣味のプログラミングのためでした。それともうひとつあって、それはRubyKaigiのトークのためでした。
カンファレンス駆動開発です。
仕事で書くコードにこれを使いたいとか、多くのひとに使ってもらって役に立ちたいとか、そういうことは一切ありませんでした。
とはいえ、自分で使いたいと思う程度には役に立つと思っているし、他にも自分と同じように良いと思ってくれるひとはいるだろうとは思います。
また、RubyKaigiで発表するということは、それなりに意義のあることでなければ発表の機会も与えられないでしょう。
そういうわけで、それなりの反響があったみたなので(個人的な知人以外はtwitterでしか観測していませんが)もしかしたら誰か使ってみたいと思ってくれるひとがいるのではないかと思いこの記事を書いています。

## 趣味のプログラミング
趣味のプログラミングなのでほんと自分のペースでのんびり書いています。とはいえ、大江戸Ruby会議とRubyKaigiで自分としてはかなり開発が進みました。
カンファレンス駆動開発いいです。ちょうお勧めなので趣味でプログラミングしているひとはぜひカンファレンスにトークを応募して趣味のプログラミングをドライブしてみてください。

## 将来について
isomophicとか風呂敷広げたのが割と反応があって、うれしかったのと同時にどうしようという感じです。
実を言うとRubyKaigiの後にもisomophicに関してあたらしいアイデアがあってどこから手をつけようという感じです。
とはいえ、現状まったくテストもドキュメントもない状態なので足周りもちゃんと固めていかないとなあと思っているところです。
isomophicに関してはまたどこかのカンファレンスで話せるようなものが出来たら、話したいと思ってます。

なんかRubyのAdvent Calendarなのにエモい話ばかりになってしまいました。
RubyKaigiはテッキーにおねがいしますと言われていたものであとがきはエモいほうに振ってしまいました。すいません。
JSQMessagesViewControllerで画像を非同期でダウンロードする

JSQMessagesViewControllerでは、画像も簡単に吹き出しの中に表示することができます。しかしその画像はあらかじめ用意されている必要があるため、ネットワークの画像を表示しようとする時には非同期で画像を読み込んだ後に再描画をする必要があります。

# 完成イメージ

![JSQMessage2Sample.gif](https://qiita-image-store.s3.amazonaws.com/0/75307/50abeac9-aa6a-a6a3-f9f6-1c47b7844c64.gif "JSQMessage2Sample.gif")

# 画像を表示する発言の作成

JSQMessagesViewControllerでは、種類によらず全ての発言をJSQMessageクラスで表現します。このクラスのインスタンスをcollectionView(collectionView: JSQMessagesCollectionView!, messageDataForItemAtIndexPath indexPath: NSIndexPath!)関数の返り値とすることで、画面に吹き出しが表示されます。

この吹き出しをJSQMessageクラスを画像の発言とするためには、次のようなコードでJSQMessageクラスをインスンタン化します。

```swift
// photoItem.imageに設定した画像が吹き出しに表示される
let photoItem = JSQPhotoMediaItem()
photoItem.image = UIImage(name: "SampleImage")
JSQMessage(senderId: "1", displayName: "user1", media: photoItem)
```

# 読み込み中の吹き出しにする

画像をまだ読み込んでいない時には、読み込み中の吹き出しにします（完成イメージでは、丸いローディングアイコンが回っています）。これはJSQPhotoMediaItem.image=nilとすれば、JSQMessagesViewControllerが自動で行ってくれます。

```swift
// photoItem.imageがnilなので、自動で読み込み中の吹き出しとなる
let photoItem = JSQPhotoMediaItem()
JSQMessage(senderId: "1", displayName: "user1", media: photoItem)
```

# 画像を非同期で読み込んだ後に再表示する

画像を非同期で読み込むため、ここではGCD(Grand Central Dispatch)を使います。
まず、urlを渡すとJSQPhotoMediaItemインスタンスを返すcreatePhotoItem関数を作成しました。このメソッドは呼び出した時には、常に読み込み中の画像を返します（コメント 1.）。
呼び出したタイミングで、urlに指定した画像をGCDを使ってバックグラウンドで読み込みます。読み込みが完了すると、createPhotoItemが返したインスタンスのimageプロパティを更新したのちに、メインキューでcollectionView.reloadDataを呼び出して画面を再描画します（コメント 2.）

```swift
    private func createPhotoItem(url: String, isOutgoing: Bool) -> JSQPhotoMediaItem {
        print("creating photo item url = " + url)
        let photoItem = JSQPhotoMediaItem()
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
            photoItem.image = self.createImage(url)
            dispatch_async(dispatch_get_main_queue(), {
                // 2. photoItem.imageにネットワークから読み込まれた画像が設定されている
                self.collectionView?.reloadData()
            })
        })
        photoItem.appliesMediaViewMaskAsOutgoing = isOutgoing
        // 1. この時点ではphotoItem.image=nilなので、ローティングとなる
        return photoItem
    }
    
    private func createImage(url: String) -> UIImage {
        print("creating image url = " + url)
        guard let nsurl = NSURL(string: url) else {
            return UIImage(named: "noimage")!
        }
        guard let data = NSData(contentsOfURL: nsurl) else {
            return UIImage(named: "noimage")!
        }
        guard let image = UIImage(data: data) else {
            return UIImage(named: "noimage")!
        }
        return image
    }
```

# 補足

createPhotoItem関数は、分かりやすさを重視してシンプルに書いています。実際にはメモリーやローカルDBなどに画像をキャッシュしておき、よりネットワークアクセスを減らす工夫などをした方が良いと思います。

# サンプルコード

https://github.com/nakaken0629/JSQMessages2Sample
helm拡張を書く

helm拡張を書く例を示していきます.
題材は[松屋ジェネレータ](https://github.com/toshia/matsuya-generator-ruby)を用いたものにします.

## リポジトリ

https://github.com/syohex/emacs-helm-matsuya


## イメージ

![helm-matsuya.gif](https://qiita-image-store.s3.amazonaws.com/0/12235/25d932d7-347d-6134-c8c4-e8d4717cca87.gif)



## コード解説

### 依存パッケージの宣言

現在 helmは コア部分の `helm-core`, その他の `helm`の 2つのパッケージから構成されます. `helm-core`はごくごく基本的な機能しかありません. `helm`関数と各種ソース構成に関する関数マクロしか呼ばない場合は `helm-core`で十分です. helmのファイル機能(`helm-ff-*`)を使う, grep機能(`helm-grep`)を使うという場合は `helm`パッケージが必要になります.

```lisp
;; Package-Requires: ((helm "1.7.7") (migemo "0"))
```

わからない場合は `helm-core`にして, Caskでミニマルな環境を構築し, 動作検証してみるとよいでしょう. 依存パッケージの宣言が適切に行えていれば Caskは以下の内容で十分です.

```lisp
(source gnu)
(source melpa)

(package-file "helm-matsuya.el")
```

そして `cask && cask exec emacs -Q -L . -l helm-matsuya.el`とし, 動かない, バイトコンパイルで警告, エラーが出る場合は `helm`に切り替えて試してみるとよいでしょう.


### ライブラリのロード

`helm.el`のロードは必須です. その他は必要に応じてロードしましょう.

```lisp
(require 'helm)
(require 'helm-net)
(require 'cl-lib)
```

### groupの宣言

`defcustom`で定義されるカスタマイズ変数や, `defface`で定義される faceがある場合は groupを宣言しましょう. `:group`属性(親グループ)は `helm`にしておきましょう(helm拡張の拡張となる場合はその拡張で定義されるグループを親グループとすべきです).

``` lisp
(defgroup helm-matsuya nil
  "matsuya generator command with helm interface"
  :group 'helm)
```


### ソースの定義

別に変数に定義しておく必要はありませんが, 変数として定義しておくとあとあと便利なこともあります. 動的に生成する必要がない場合は基本的に変数として定義するのがよいでしょう. ソースの構築は以前は association listがそのまま使われていましたが, 最近は構築のための関数を使った方がよいでしょう. ここでは用途に合わせて `helm-build-sync-source`を使っています. `helm-build-`でドキュメントを検索するといくつかの類似する関数が見つかりますので, 気になる方は調べてみてください(多くの場合は `helm-build-sync-source`と `helm-build-in-buffer-source`で事足りると思います)

ソースの定義関数は第一引数が名前で, 第二引数以降がキーワード引数で, キーワード, 値, ...と設定していきます. assocication listだとタイポが実行時まで気づきませんが, これだとバイトコンパイル時には気付けるのでよいのではないかと思います.

```lisp
(defvar helm-matsuya--source
  (helm-build-sync-source "Menu"
    :candidates #'helm-matsuya--candidates
    :volatile t
    :migemo t
    :action (helm-make-actions
             "Open Browser" #'helm-google-suggest-action
             "Insert" #'insert)))
```


### コマンドの定義

`helm`関数にはいろいろキーワード引数がありますが, `:sources`(使うソースのリスト), `:buffer`(バッファ名)をセットすればよいでしょう. 後はドキュメントを見て必要なものを足してみてください.

``` lisp
;;;###autoload
(defun helm-matsuya ()
  (interactive)
  (helm-migemo-mode +1)
  (helm :sources '(helm-matsuya--source) :buffer "*helm matsuya*"))
```


### おわりに

`helm`拡張の作り方を大雑把に説明しました.

`helm`は膨大な機能があります. ドキュメントは結構書かれている方だと思いますが, そもそもどれを調べていいかわからないという状況になります. そこで私は `M-x helm-descbinds`を使って, それらしいキーワードで関数, 変数を絞りこみ, 調べてみるということをしています.
Wi2 のゲストコード発行を自動化するニッチなノマドハック



こんにちは、岩手県立大学アドベントカレンダー23日目の記事です。

みなさんは公衆無線LANサービス「[Wi2](http://wi2.co.jp/jp/)」は使っていますか？

月額362円（税抜）で全国各地にある「Wi2」のほか、マクドナルドなどにある「mobilepoint」、駅などの「UQ_WiFi」といった公共無線LANが使い放題になります。

残念ながら「Wi2premium」が提供されているエリアは、オプションチケットを購入しないと利用できません。
が、一部アクセスポイントでは、時間制限付の `ゲストコード` を取得することで無料で使えたりします。

この `ゲストコード` は、「dcs@forguest.wi2.ne.jp」に空メールを送って取得するのですが、このときPCがネットにつながっていないので、スマホで空メールを送るのが面倒なわけです。

## IFFFT で解決！

今回は、みんな大好き「IFFFT」を利用して、foursquare でチェックインしたらゲストコードを発行するようにします！

（IFFFTアプリ版をスマホにインストールしておくことで、わざわざチェックインしなくても近づいたら発行することもできますが、近くを通っただけで発行してしまうとWi2さんに迷惑をかけてしまうので foursquare 連携にしました）

## 手順

### 1. foursquare をトリガーにする

![](https://i.gyazo.com/56ef1b430b006b847bbf4f8b2bbb455e.png)

### 2. 「New check-in by you in area」を選ぶ

![](https://gyazo.com/1b97c200fe3e78fd14f532cd7a0976af.png)

### 3. カフェのあたりを指定する

![](https://gyazo.com/4decc04e230393c0586c1a5170c85dd7.png)

### 4. アクションとして「Gmail」を選択する

![](https://gyazo.com/031532c4810d8c34b0b60098da3debb5.png)

### 5. `dcs@forguest.wi2.ne.jp` 宛にメールを送るようにする

![](https://i.gyazo.com/d41eec269cadfe5e5484730d43c40440.png)



以上で設定は完了です！

## 実際にチェックインすると...

メールがきました！！これでスムーズなノマドライフを送れそうですね。

![](https://i.gyazo.com/80ee1b83e5c31f8edc9497f0a0639f65.png)


## さいごに

というわけで、今回の記事では公衆無線サービスwi2を少し便利に使うニッチなノマドハックをお伝えしました。公衆無線LANサービスは、セキュリティ面で気をつけなければいけないことも多いので、重要な通信をするときや長時間の利用、安定した回線速度が欲しいときは別途モバイルルーター等を契約しておきましょうね！
HiveQLで文字列にある単語が含まれるレコードを抽出する

# 目的
文字列中に、ある単語が含まれるものだけ抽出したい。

# 環境や前提条件
Hive のバージョン: 0.13.1

# 方法
「ワイルドカード」を使う。
「ワイルドカード」を使うためには、WHERE 句の中で、LIKEを用いる。

## ワイルドカード文字
|ワイルドカード文字|説明|
|:-:|:--|
|%|任意の長さ（ゼロを含む）の文字列|
|_|任意の１文字|

## サンプル
「木田」を含む名前を抽出する。

```lang:select_kida.hql
SELECT name
  FROM name_list
  WHERE name LIKE '%木田%'
```

```lang:name_list
name
----------------
荒木田 三郎
太田 大介
木田沼 花江
木田 太郎
木田 花子
木田 次郎 
佐藤 三郎
鈴木 次郎
田中 太郎
```

```lang:result
荒木田 三郎
木田沼 花江
木田 太郎
木田 花子
木田 次郎 
```



# 引用元や参考元
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
http://www.wakhok.ac.jp/biblion/1994/DB/subsection2.4.3.5.html
https://docs.aws.amazon.com/ja_jp/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_SupportedHiveVersions.html
PyMOL Scripting

#PyMOLで、pythonスクリプトを使う

計算科学をやっていると、pymolで分子を表示するためにroutineな作業をすることが多い。
また、以前表示させたときに使った設定やコマンドを忘れてしまったりする。

そこで、pythonスクリプトをpymolに読ませることで作業を簡単にできる。
また、コマンドがテキストファイルとして保存されるので、再現性もある。

基本的には、以下のようにスクリプトを書く
pymolのコマンドは、ほとんど（すべて？）、
cmd.<コマンド>()　の形で、関数になっている。
あとは、決まった順番に引数を渡してあげたり、for文を使って回すこともできる。

```exmaple.py
import pymol

cmd.load("something.pdb")
cmd.hide("everything", "something")

# You can use variable in the same way in python
style = "cartoon"
cmd.show(style)
```

実行方法は、PyMOLのコマンドラインで
`run example.py`
とすればよい。
（example.pyと同じフォルダにいること）

from pymol import *
とすれば、"cmd."を付けなくてもよくなる。

```
from pymol import *

load("something.pdb")
```

ちなみにpymolのコマンドラインで、一部のLinuxコマンドも使えるので
ls　とか　pwd　でカレントディレクトリ（現在のフォルダ）を確認して、
cd　コマンドで移動もできる。

![image](https://qiita-image-store.s3.amazonaws.com/0/99215/e78fcb7b-7b89-bc1b-745c-f570147187dc.png)


#リンク
pymolをpythonのライブラリとして使う
http://qiita.com/hnishi/items/0cf0dc6266699cf81b37

#参考
ファイルにコマンドを羅列しても読み込めるらしい。（未確認）
http://bio-info.biz/tips/pymol_script.html
暗記しておくと楽になる2の累乗数

新人の頃、毎日唱えて暗記しました。「読み」を声に出すと、意外と記憶に残りやすいようです。

なぜこんなのを覚えるかというと、ワーキングメモリが貧弱なので、技術書を読む時など、めんどくさい計算はなるべくショートカットして、思考の負担を少しでも減らしたいからです。

|2^n|10進数|読み|覚え方|
|:----|:----|:----|:----|
|2^6|64|ロクヨン|6が共通|
|2^8|256|ニゴロ|みんな大好き|
|2^10|1,024|センニジュウヨン|10が共通|
|2^12|4,096|ヨンマルキュウロク|ページサイズ(4K)|
|2^16|65,536|ロクゴゴサンロク|16ビットレジスタの<BR>64Kオフセットの壁|
|2^20|1,048,576|104万8,576|8086のA20ゲート|
|2^22|4,194,304|419万4,304|特になし|
|2^24|16,777,216|1,677万7,216|System/360のアドレス長|
|2^30|1,073,741,824|10億7,374万1,824|1GiB|
|2^31|2,147,483,648|21億4,748万3,648|2GiB|
|2^32|4,294,967,296|42億9,496万7,296|4GiB|
|2^64|18,446,744,073,709,551,616|イヤシシ・ムナシシ・オナミナ・オクゴゴ・イロイロ|16EiB|

`2^n`の形式で表現される整数は、「`n`ビットで表現可能な整数の種類数」でもあります。1ビットでは`0`と`1`の2パターンが表現可能なので、`n`ビットにおいては`2^n`パターンが表現可能、という寸法ですね。

`2^n-1`の形式で表現される整数は、「`n`ビットがすべて`1`」という内部表現になります。このことから、`n`ビットの符号つき整数の最大値は、`2^(n-1)-1`の形式をもちます（最上位ビットが符号ビットとなるため(`n-1`)乗となる）。

この知識を利用すると、`32`ビットの`signed int`の最大値は？と聞かれても、「（えーと`0111...`だから`2^31-1`で）`2,147,483,647`」と即答できるようになります。

また、「ビットがすべて`1`」の内部表現について、符号あり整数（負数は2の補数で表現）として解釈した場合、`-1`となります。

|2^n-1|2進数|符号あり整数|
|:--------|:----|:----|
|2^8-1|1111_1111|-1|
|2^16-1|1111_1111_1111_1111|-1|
|2^32-1|1111_1111_1111_1111_<BR>1111_1111_1111_1111|-1|

記憶容量の単位です。

||2^n|10進数|
|:----|:----|:----|
|1KiB|2^10|1,024|
|4KiB|2^12|4,096|
|1MiB|2^20|1,048,576|
|1GiB|2^30|1,073,741,824|
|4GiB|2^32|4,294,967,296|
|16EiB|2^64|18,446,744,073,709,551,616|

左ビットシフトです。`n`ビット左シフトは、`2^n`倍と等価です。

|2<<n|10進数で何倍か|
|:----|:----|
|2<<3|x 8|
|2<<4|x 16|
|2<<8|x 256|
Pocket WiFi 401HW > 右側の矢印３つの意味 > 速度制限 > オレンジ:注意 / 赤い: 制限開始

ワイモバイルの401HWの使用。

一番右の矢印３つの色の意味が分からなかった（取説を読んでなかった)。

- 通常 : 緑色
- 今日の朝: オレンジ色
- 今: 赤色

速度制限にひっかかった。

Unityをダウンロードしたのは失敗。

オレンジ色の時点で速度制限の注意ということだったが、ここ３日でそれほど大きいファイルの扱いをした覚えはない。
内部で使われている特定のコマンドの挙動を変更してシェルスクリプトを実行する（例えばdateの結果を別の日に変えたり）

## 背景

* `昨日`一日分のデータを集計するようなシェルスクリプトがあった
* しかし過去数日の集計処理がエラー終了していたので、エラーになった日付を対象に再集計したかった
* しかしそのシェルスクリプトは引数で日付を受け取るような仕様になっていなかった
    * **本来はここで引数を追加するべき**
* シェルスクリプト内部では`昨日`という日を得るために`date`コマンドを使用していた

## 対応策

* `date`という名前で関数を定義し、その内部では集計したい日を返す、そしてそれを export してからシェルスクリプトを実行した

```bash
$ bash -c 'function date() { echo "20150101"; }; export -f date; ./target.sh'
```

* 上記であれば常に `date` が `20150101` を返す

## 検証

### サンプルコード

#### `parent.sh`

```bash
#!/bin/bash

source ./functions.sh

echo "parent"
echo "yesterday is `getYesterday`"

./child.sh
```

#### `child.sh`

```bash
#!/bin/bash

source ./functions.sh

echo "child"
echo "yesterday is `getYesterday`"
```

#### `functions.sh`

```bash
#!/bin/bash

function getYesterday () {
    echo `date --date="yesterday" +"%Y%m%d"`
}
```

### 実行

#### 今日の確認

```
$ date +"%Y%m%d"
20151223
```

#### 普通に実行

```
$ ./parent.sh
parent
yesterday is 20151222
child
yesterday is 20151222
```

#### `date`を上書いて実行

```
$ bash -c 'function date() { echo "20150101"; }; export -f date; ./parent.sh'
parent
yesterday is 20150101
child
yesterday is 20150101
```

## 注意！

* もちろんそのコマンド（例では`date`）を使用している箇所すべてに影響が出るので、予想外の挙動になることもあり、あまりおすすめできない
    * こういうこともできるんだ〜という程度で
* それと `/bin/date` のようにフルパスで指定されてるとこの技は使えない
Skypeアカウントを乗っ取られたときの顛末

## Skypeが乗っ取られた。

突然↓のメールが届いた。

![スクリーンショット 2015-12-23 9.47.05.png](https://qiita-image-store.s3.amazonaws.com/0/89513/6320bb7a-ce44-45ec-9439-228f5cd6a835.png)

すぐにパスワードのリセットを依頼したので、アカウントは停止状態に。
被害は無かった様だけれど、その後が少し面倒だったので備忘録。

## パスワードのリセット手続き

パスワードをリセットするためには、以下のSkypeアカウント情報を伝える必要がある。

1. Skype名
1. Skypeアカウントの作成時に登録したメールアドレス
1. Skypeに登録した生年月日
1. Skypeアカウント作成の年月
1. Skypeの連絡先に登録されている５人の名前（表示名 or Skype名）
1. 現在の表示名
1. 登録した国

**厳しい。** 1,3,7くらいしか自信もって答えられないよ。。

というわけで調べてみた。

## Skypeアカウント情報の調べ方

* [Skype の SQLiteファイル main.db の構造 - Qiita](http://qiita.com/kobake@github/items/e6d96508710d6cb5c2e8) を大いに参考にした。

アカウント情報は"main.db"に格納されている。

```
/Users/***/Library/Application Support/Skype/xxx(skypeアカウント)/main.db
```

中身はSqlite。Macであればsqlite3が標準で入っている(筈。)

```
nock$ sqlite3 /Users/***/Library/Application Support/Skype/xxx(skypeアカウント)/main.db 
SQLite version 3.8.8.3 2015-02-25 13:29:11
Enter ".help" for usage hints.
sqlite> 
```

### 1. Skype名

```
sqlite> SELECT skypename FROM Accounts;
```

### 2. Skypeアカウントの作成時に登録したメールアドレス

```
sqlite> SELECT emails FROM Accounts;
```

### 3. Skypeに登録した生年月日

```
sqlite> SELECT birthday FROM Accounts;
```

私は登録していなかったのか、0でした。

### 4. Skypeアカウント作成の年月

```
sqlite> SELECT registration_timestamp FROM Accounts;
```

返却値はUnixタイムスタンプを秒→分に変更した値です。
60を掛けて、[変換ツール](http://url-c.com/tc/)で変換。

### 5. Skypeの連絡先に登録されている５人の名前（表示名 or Skype名）

```
sqlite> SELECT skypename, fullname FROM Contacts;
```

### 6. 現在の表示名

```
sqlite> SELECT fullname FROM Accounts;
```

### 7. 登録した国

```
sqlite> SELECT country FROM Accounts;
```

## むすび

パスワードのリセットはかなり敷居が高い・・。
VR酔い防止の為にUnityでImageEffectを試している話

VR酔い防止の為に皆様色々と工夫をされていらっしゃるかと思いますが、
拙作のOculus Dungeonにて実装を試みている方法について書かせて頂きます。

#有名なところ
・「Tunneling」
　移動する際に画面の中心部だけ映像を切り取り、
　周辺部分の映像は固定したまま移動をおこなう方法。

・「Holosphere」
　移動する際に視界に格子を表示させ、
　映像をぼかした状態で移動をおこなう方法。

#試そうとしている内容
拙作では横方向への移動を無くし、前後の移動だけに限定している為、
移動時にImageEffectのDepth Of Fieldを利用し、
ユーザーが見ている映像の中心点にだけピントをあわせ、
周辺部分の映像をぼかす方法。

##実装中内容
・移動時にDepth Of Fieldが有効になるようにスクリプトからの切り替え
・ユーザーが見ている中心にあるオブジェクトとの距離に応じたFocal distanceの変更

※本業が絶賛炎上中の為、続きは26日以降で...
Perl6を学ぶ時に参考になるページ

こんにちは :whale2: 
[Perl 6 Advent Calendar 2015](http://qiita.com/advent-calendar/2015/perl6)の19日目です(遅刻)

今日はPerl6を学ぶ時に参考になるページというかリンク集みたいな内容です。
随時更新していきたいです。[^welcome]

## 公式ドキュメント系

#### [The Perl 6 Programming Language](http://perl6.org/)

公式ページです。
あとの方で紹介するページは、ここの`Documentation`にリンクがあるものが多いです。

#### [Perl 6 Types](https://doc.perl6.org/type.html)

Perl6の型の一覧です。
このクラスはどんなメソッドがあるのかなーと思ったときに参照しています。

#### [Perl 6 Routines](https://doc.perl6.org/routine.html)

Perl6の機能の一覧です。[^ope]
標準関数を探す時に`Sub`や`Method`のページにお世話になります。

#### [Perl 6 Examples](http://examples.perl6.org/)

Perl6プログラムのサンプル集。
`Cookbook`のページが好き。

#### [Perl 6 Modules](https://modules.perl6.org/)

`panda`でインストールするモジュールを探すのに使います。[^panda]

#### [Perl 6 Design Documents](http://design.perl6.org/)

言語仕様をがっつり知りたい時に参照します。

## チュートリアル系

#### [Learn X in Y minutes](https://learnxinyminutes.com/docs/perl6/)

このページをざっと眺めればPerl6の文法がわかるといっても過言ではありません。

#### [Using Perl6日本語版](https://dl.dropboxusercontent.com/u/877032/UsingPerl6_JA.html)

[Using Perl6](https://github.com/perl6/book)の日本語訳です。
日本語での情報はまだそれほど多くないので大変たすかります。

## wiki document系

#### [Perl 6 Programming - Wikibooks](https://en.wikibooks.org/wiki/Perl_6_Programming)

公式ドキュメントと比べると物足りない感じかも知れませぬ。

#### [Category:Perl 6 - Rosetta Code](http://rosettacode.org/wiki/Category:Perl_6)

ある処理について、Perl6や、他の言語ではどう書くのかもわかって勉強になります。


## その他

#### [Perl 6 Advent Calendar](https://perl6advent.wordpress.com/)

由緒正しきPerl6のAdvent Calendarです。
性質上クリスマス前にしか書かれないものながら、2009年から存在するため100記事以上あります。


#### [pl6anet - Perl 6 RSS Feeds](http://pl6anet.org/)
#### [Weekly changes in and around Perl 6](https://p6weekly.wordpress.com/)

最新情報の収集に。


#### [Perl6 - Qiita](https://qiita.com/tags/perl6)

まだ少ないけど、日本語の Perl6 情報がこれからもどんどん書かれるはず :camel: 


## わからないことがあったら質問する場所

#### [#perl6 irc log](http://colabti.org/irclogger/irclogger_logs/perl6)

自分の使い方としては、質問をすると言うよりは
エラーメッセージで検索していたらたどり着くことが多いです。

#### [stack overflow](http://stackoverflow.com/)

ここもそうです。

## 紙の本

#### [Perl 6 and Parrot Essentials, 2nd Edition](http://shop.oreilly.com/product/9780596007379.do)

そうそうたるメンバーが執筆している名著で、本の半分ぐらいでPerl6が網羅されています。
ただ、もう10年以上前の本ということで内容がすこし古くなっているのは否めません。


## 参考と注釈

[^welcome]: よいページがあったら紹介してくださいね。
[^ope]: 演算子として`⊄`や`⊎`まであるのかーと眺めてるだけで楽しい。
[^panda]: ここで眺めてから`panda search`してます。
【メモ】（シェルスクリプト）ユーザ確認


メモです。

````コマンド
user-MBA:sh user$ cat test.sh 
#!/bin/bash

if [ "${USER}" = "root" ]; then
	echo "OK!!"
	exit 0
else
	echo "NG...."
	exit 100
fi

user-MBA:sh user$ 
````

````実行結果
★rootユーザの場合
user-MBA:sh root$ ./test.sh ; echo $?
OK!!
0
user-MBA:sh root$ 

★testユーザの場合
user-MBA:sh test$ ./test.sh ; echo $?
NG....
100
user-MBA:sh test$

````
mindmup > マップ内の文字での検索 > drive.google.comで検索 > マップを開いてCtrl+F

mindmupで作ってきた設計関連メモの中で、あるキーワードで検索したい。

１つのマップ内では Ctrl+F の後にキーワードを入力すればすぐにそのノードに飛べる。

複数のマップ内からキーワード検索するのは以下でできるのがわかった。

前提として、マップファイルはgoogle driveに保存していること

1. drive.google.comにてキーワード検索する
  - キーワードが含まれるファイルリストが表示される
2. www.mindmup.comにて上記のリストからファイルを開く
3. mindmup上でCtrl+Fのあとにキーワードを入力

マップファイルがJSON形式だからテキストとして扱えて検索にひっかかるのかもしれない。独自形式のマインドマップツールでは失敗しそうだ。

ローカルにファイルを保持する場合は、同じ実装をすればよさそう。
WordPressを気軽に試せる Cloud9

![2015-12-23_9-26-38.png](https://qiita-image-store.s3.amazonaws.com/0/3977/144d41e1-6a1f-212f-743d-e87e109f5b4a.png)

この記事は、「[WordPress Advent Calendar 2015](http://www.adventar.org/calendars/1040)」の20日目の記事です。

WordPressを学習しているときや、開発中に「ちょっと試したいことがある」などでまっさらな WordPressが必要になることがよくあります。

そんな時、さくっと試せるサービス『 [Cloud9](https://c9.io/)』を紹介しましょう。

## クラウド開発ツール　Cloud9

Cloud9は、「クラウド開発ツール」と呼ばれるツールのひとつです。Webブラウザ上でエディタやシェル、プレビュー環境などを用意して、多人数で同時に編集を行なうことができるというもので、海外を中心に導入が進んでいるようです。

他にも「[Nitrous](https://www.nitrous.io/)」などのサービスもありますが、Cloud9の魅力は無償でいくつでもワークスペースを作成することができます。（ただし、無償版で作成したワークスペースは公開状態になるため、業務利用などの場合はプライベートプロジェクトが作成できる有償プランにする必要があります）

## アカウントを作成する

Cloud9を利用するには、アカウントが必要です。新規登録も可能ですが、Githubまたは Bitbucketのアカウントでログインすることもできます。これらのアカウントと紐付けておくと、Gitリポジトリと連携させることもできるため、利用すると良いでしょう。

ログインをすると、ワークスペース一覧が表示されます。「Create a new workspace」をクリックしましょう。

![2015-12-23_9-27-50.png](https://qiita-image-store.s3.amazonaws.com/0/3977/8ad80183-9714-4252-5bdd-99777a8fc69e.png)

## WordPressのワークスペースを作成する

![2015-12-23_9-29-33.png](https://qiita-image-store.s3.amazonaws.com/0/3977/0ff1f1ac-63ee-11ba-c6c9-3093abb5cff6.png)

ワークスペースの名前を入力し、「Choose a template」から「Wordpress」を選択します（pressのpが小文字なのはご愛嬌・・・）

「Create workspace」ボタンをクリックして、10秒ほど待つと・・・　もう、WordPressの開発環境が準備されます。

## プレビューする

準備された WordPressを動作させるには、画面右上の「Run Project」ボタンをクリックします。

![2015-12-23_9-34-37.png](https://qiita-image-store.s3.amazonaws.com/0/3977/0eef7395-d7b7-18e5-a681-0963d372d7e7.png)

さらに、「Preview」ボタンの「Preview Running Application」メニューをクリックすると、WordPressのインストール画面が表示されます。

![2015-12-23_9-35-39.png](https://qiita-image-store.s3.amazonaws.com/0/3977/c577d558-3a05-1c03-07f6-fd21e01665c9.png)

はじめは、Cloud9内で仮想ブラウザーが起動して表示されますが、これだとうっかり再読込とかをすると Cloud9ごと再読込されてしまってストレスになるため、別窓ボタンで別窓表示をすると良いでしょう。

![2015-12-23_9-37-24.png](https://qiita-image-store.s3.amazonaws.com/0/3977/84314cba-b1b6-86af-d8df-ba9af03789bd.png)

## ファイルを編集する

ファイルの編集は、Cloud9上で行なうことができます。左側のファイルリストから、編集したいファイルをダブルクリックすると、エディタが起動します。

![2015-12-23_9-39-06.png](https://qiita-image-store.s3.amazonaws.com/0/3977/879e3fb7-0a2c-4d4c-488b-2fa27019a3f3.png)

内容を書き換えて保存すれば、すぐに反映されるため、ブラウザを再読込などすれば確認することができます。

## 本格的な開発にはもう一息だけど、さくっと試すには最適

このように、Cloud9を利用すれば WordPressを非常に手軽に立ち上げることができます。筆者は、一時期有料版を利用して本格的なテーマ開発にも利用していましたが、エディタ部分の完成度がもう一息で断念しました。

今後の機能向上に期待します。無償で使えるので、ぜひ使ってみてください。

- [Cloud9](https://c9.io/)
React.jsのprops、state

### props

- 外部とのやり取りなどに使う
- 内部では変更しない
- 子コンポーネントのイベントハンドラなどに使う
- getDefaultPropsで初期値を入れられる
- propTypesで値のバリデーションを行うことができる

### state

- 内部情報
- this.stateを直接変更するのではなく、this.setStateを使う
- getInitialStateで初期値を入れられる
Ubuntu 15.10 で Arduino UNO/M0 Pro 用開発環境を構築する

# はじめに

Ubuntu で Arduino の開発環境を構築します。
とは言っても、 Arduino.cc/org に記載されている手順通りなのですが。

* Ubuntu Mate 15.10 x86_64 (Desktop, 64-bit)
* [Arduino IDE 1.6.7](https://www.arduino.cc/)
    * for Arduino UNO (made by Arduino.cc)
* [Arduino IDE 1.7.8](http://www.arduino.org/)
    * for Arduino M0 Pro (made by Arduino.org)

ところで、
普通は Windows が断然楽だと思うのですが、個人的な都合で Linux を使わざるを得ないため、ご容赦です。

# 準備

JAVA が入っていない場合、 JAVA を入れる必要があると思います。

`sudo apt-get install openjdk-8-jre`

# Arduino UNO (Arduino.cc) 編

## 1. [arduino.cc](https://www.arduino.cc/) から Linux 64 bits 版 Arduino IDE をダウンロード

- arduino-1.6.7-linux64.tar.xz

## 2. ファイルを展開

- `tar xvfJ arduino-1.6.7-linux64.tar.xz`

## 3. Arduino UNO を USB ケーブルで PC に接続

## 4. Arduino IDE を起動

- `cd arduino-1.6.7`
- `sudo ./arduino`
    - `sudo` 無しでも起動可能ですが、シリアルポートへのアクセス権をユーザーに付与する必要があり、面倒ですので `sudo` を使っています。

## 5. Arduino IDEの設定
- 「ツール」ー「マイコンボード」で「Arduino/Genuino UNO」を選択
- 「ツール」ー「シリアルポート」で「/dev/ttyACM0」を選択
    - 名前が「ttyACM0」ではない場合があるようです。

## 6. 書き込みテスト
- 基板上の LED を点滅させる  
「ファイル」ー「スケッチの例」ー「01.Basics」ー「Blink」を書き込む。  
適度に delay 時間を変更すると分かりやすいです。


## X. install.sh や uninstall.sh というスクリプトがあるけど、未試行


# Arduino M0 Pro (Arduino.org) 編

## 1. [arduino.org](http://www.arduino.org/) から Linux 64 bit 版 Arduino IDE をダウンロード
- arduino-1.7.8.org-linux64.tar.xz

## 2. ファイルを展開
- `tar xvfJ arduino-1.7.8.org-linux64.tar.xz`

## 3. Arduino IDE 起動のための設定
[Arduino IDE on Linux-based OS](http://labs.arduino.org/Arduino+IDE+on+Linux-based+OS) の手順に沿って設定します。
以降の `<your_username>` は Ubuntu で利用中のユーザー名に置き替えます。
<br>

1. /etc/udev/rules.d ディレクトリに 90-extraacl.rules ファイルを作成
    - `sudo vi /etc/udev/rules.d/90-extraacl.rules`

2. `<your_username>` に tty と dialout グループの権限を付与
    - `sudo usermod -a -G tty <your_username>`
    - `sudo usermod -a -G dialout <your_username>`

3. ModemManager がインストールされている場合は、アンインストール
    - `sudo apt-get remove modemmanager`

4. /etc/udev/rules.d ディレクトリに 98-openocd.rules ファイルを作成
    - `sudo vi /etc/udev/rules.d/98-openocd.rules`

5. udev ルールを再読み込み
    - `sudo udevadm control --reload-rules`
    - `sudo udevadm trigger`

```lang:/etc/udev/rules.d/90-extraacl.rules
KERNEL="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="<your_username>"
KERNEL="ttyACM[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="<your_username>"
```

```lang:/etc/udev/rules.d/98-openocd.rules
ACTION!="add|change", GOTO="openocd_rules_end"
SUBSYSTEM!="usb|tty|hidraw", GOTO="openocd_rules_end"

#Please keep this list sorted by VID:PID

#CMSIS-DAP compatible adapters
ATTRS{product}=="*CMSIS-DAP*", MODE="664", GROUP="plugdev"

LABEL="openocd_rules_end"
```

## 4. Arduino M0 Pro を USB ケーブルで PC に接続

Arduino M0 Pro 側は Native USB Port ではなく、Programming Port に接続しておきます。

## 5. Arduino IDE を起動
- `cd arduino-1.7.8-linux64`
- `./arduino`

## 6. Arduino IDEの設定
- 「ツール」ー「マイコンボード」で「Arduino M0 Pro (Programming Port)」を選択
- 「ツール」ー「シリアルポート」で「/dev/ttyACM0」を選択
    - 名前が「ttyACM0」ではない場合があるようです。

## 7. 書き込みテスト
- 基板上の LED を点滅させる  
「ファイル」ー「スケッチの例」ー「01.Basics」ー「Blink」を書き込む。  
適度に delay 時間を変更すると分かりやすいです。


# おわりに

ほぼ苦労なく Linux 環境構築ができました。本当にイイ世界になったものです。
Zynq > SD書込み (FatFS) > E. 関数へのリンク (リンク切れ)

自分メモ(2015/04/09)より


[FatFS 汎用FATファイルシステム](http://elm-chan.org/fsw/ff/00index_j.html) — こちらが使われているようだ
 
- [f_mount](http://irtos.sourceforge.net/FAT32_ChaN/doc/ja/mount.html) – 「実際のマウント動作は、この関数の実行またはメディア交換発生の後、最初のファイル・アクセスのときに行われます。」
- [f_open](http://elm-chan.org/fsw/ff/ja/open.html)
- [f_lseek](http://elm-chan.org/fsw/ff/ja/lseek.html)
- [f_write](http://elm-chan.org/fsw/ff/ja/write.html) / [f_read](http://elm-chan.org/fsw/ff/ja/read.html) / [f_printf](http://elm-chan.org/fsw/ff/ja/printf.html)
- [f_close](http://elm-chan.org/fsw/ff/ja/close.html) / [f_sync](http://elm-chan.org/fsw/ff/ja/sync.html) – 「この関数(f_sync)はf_close関数と同じ処理を実行しますが、ファイルは引き続き開かれたままになり、読み書きを続行できます。ロギングなど、書き込みモードで長時間ファイルが開かれているアプリケーションにおいて、定期的または区切りの良いところでこの関数を使用することにより、不意の電源断やメディアの取り外しにより失われるデータを最小にすることができます。この背景については、アプリケーション ノートも参照してください。」
- [f_size](http://elm-chan.org/fsw/ff/ja/size.html) – lseekで終端に移動する時に使う
- [Long Filename](http://elm-chan.org/fsw/ff/ja/appnote.html#lfn) – デフォルトではOFFになっている / 実際に8文字より長いファイル名にすると FR_INVALID_NAME となる
- [f_getfree](http://elm-chan.org/fsw/ff/ja/getfree.html) – SDのtotal size / 空きsizeを知る
 
[How to open multiple files in SD card using FatFS?](http://www.avrfreaks.net/forum/how-open-multiple-files-sd-card-using-fatfs) – unmountの処理が記載されていた

### 日本語版ドキュメントの廃止
(追記 2018/02/19)

日本語版ドキュメントは廃止されたもよう。
下記にある英語版ドキュメントを参照することになる。

http://elm-chan.org/fsw/ff/00index_e.html