OmniAICreator/Qiita-1.07M huggingface dataset:
Essential JavaScript Design Patterns For Beginners (作者：Addy Osmani)

#JavaScriptデザインパターン：The Constructor Pattern
###JavaScriptの勉強にすごく役に立つので、JavaScriptを勉強したい人にはお勧めです。
####※Basic Constructorsのサンプルソース####
```js:
function Car( model, year, miles ){
   this.model = model;
   this.year    = year;
   this.miles  = miles;
   this.toString = function(){
    return this.model + " has done " + this.miles + " miles";
   };
}
 
var civic = new Car( "Honda Civic" , 2009, 20000 );
var mondeo = new Car( "Ford Mondeo", 2010 , 5000 );

console.log(civic.toString());
console.log(mondeo.toString());
```
####※Constructors With Prototypesのサンプルソース####
```js:
function Car( model, year, miles ){
   this.model = model;
   this.year    = year;
   this.miles  = miles;
}

/*
 Note here that we are using Object.prototype.newMethod rather than 
 Object.prototype so as to avoid redefining the prototype object
*/
Car.prototype.toString = function(){
    return this.model + " has done " + this.miles + " miles";
};
 
var civic = new Car( "Honda Civic", 2009, 20000);
var mondeo = new Car( "Ford Mondeo", 2010, 5000);

console.log(civic.toString());
console.log(mondeo.toString());
```
***
###勉強・分析・まとめ：
####1.Basic Constructorsについて　　
JavaScriptにまだ詳しくない人はnew演算子で関数を呼び出すのを見たら、きっとびっくりするでしょう。正直私も最初はびっくりしました。実はこのnew演算子で呼び出される関数はコンストラクター(constructor)と呼ばれるものです。下記のソース(public ClassName(property)の部分)に示すように、Javaの中のコンストラクターに該当します。Javaのできる人は、下記のソースを対照的に見れば、わかりやすいと思います。

```java:Javaの中のコンストラクター(constructor)
public class className{
    private property;
    public ClassName(property){
        this.property = property;
    }
}
```
ただ、ちょっとJavaScriptの方は特別ですが、下記のソースで示すようにコンストラクターの中で関数を宣言することもできます。Javaには私はまだ見たことが無いです。JavaScriptコンストラクターで宣言した関数はnewによって生成した各オブジェクトの中に持つようになります。

```js:
   this.toString = function(){
    return this.model + " has done " + this.miles + " miles";
   };
```

####2.Constructors With Prototypesについて####
上記のBasic Constructorsでは、コンストラクターの中でtoString()関数を定義しました。したがって、newによってオブジェクトが生成された時に、定義されたtoString()関数を持つようになりました。Constructors With Prototypesは上記Basic Constructorsとの違って、コンストラクターの中で関数を定義せず、その代わりにコンストラクターの持っているprototype属性に関数を定義します。JavaScriptはクラスベース継承モデルが実装されておらず、この代わりにprototypeを使います。このコンストラクターのprototype属性で定義した関数は、このコンストラクターにより生成されたオブジェクトの全てからアクセスできます。下記のソースのなかのthisはnewにより生成したオブジェクトを指します。

```js:
Car.prototype.toString = function(){
    return this.model + " has done " + this.miles + " miles";
};
```
####※私もまだまだの身ですが、誤情報の発信を防ぐために、上記の記述の中に間違いとかあれば、ご指摘をお願いします。

####修正履歴：
2012/03/22 文言の修正　
[実はJavaScriptの中にも継承という概念があります。]⇛JavaScriptはクラスベース継承モデルが実装されておらず、この代わりにプロトタイプを使います。
NSFetchedResultsControllerの結果から関連を取得する

UITableViewControllerを使っているときはNSFetchedResultsControllerを組み合わせるとなにかと便利
だけど、セルを描画するときに、あるEntityの関連の値をハメこみたかったらどうすれば？
と思ったら実は型変換するだけでできるよという話

※これをやるためには、あらかじめCoreDataで適切に関連付けを設定して、NSManagedObjectサブクラスをつくって、importしておく必要がある
その方法は以下に書いておいた
http://qiita.com/items/2460

fetchedResultsControllerは、表示したいEntityを取り込むそのままでOK

cellForRowAtIndexPathの部分で各行のデータをfetchedResultsControllerから取り出している部分で以下のように型変換をする

```objective-c
    UILabel *nameLabel   = (UILabel *)[cell viewWithTag:1];

    NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
    Memo *memo = (Memo *)managedObject;
    nameLabel = memo.name;
    // Memoの関連であるMemoTagを取り出す例
    for (MemoTag *tag in memo.tags) {
        NSLog(@"%@", tag);
    }

```
WindowsのGVimでカラースキームwombatの設定

wombatはハッカーっぽい感じのカラースキーム。
http://dengmao.wordpress.com/2007/01/22/vim-color-scheme-wombat/
見た目はこんな感じ。

GVim自体は、香り屋さんのGVim
http://www.kaoriya.net/software/vim

カラースキームのwombatは
http://www.vim.org/scripts/script.php?script_id=1778
からwomvat.vimをダウンロードして
vim73-kaoriya-win64\vim73\colors
にコピー。(Windows7 64bitの場合)

gvim.exeの隣にあるgvimrcを編集。

```vim:gvimrc
"---------------------------------------------------------------------------
" カラー設定:
"colorscheme morning
colorscheme wombat

" Copyright (C) 2011 KaoriYa/MURAOKA Taro
"独自に見た目を設定
set guioptions-=T " ツールバーを非表示
"set lines=90 columns=200 " 全画面表示起動したい方はコメントアウトを戻す 
gui
set transparency=221 " ウインドウを半透明に
```

カラー設定とコピーライト以下に追記の二つの編集でOK。
でかい画面で前面Vimで使いたい方はコメントアウトをはずしてください。
Excel2007 終了処理 VBA

VBAから終了させます。

１行目は、他のシートが開いていた場合は
Bookを終了しますが、Excelは終了しません。

２行目は、他のシートが開いていない場合です。
Excelと共に終了します。
ただし、変更があってもなくても問合せのダイアログボックスを
表示しないオプションがついていますので、変更する可能性がある場合は、
SaveChanges:=True（省略可）として下さい。

``` ruby:終了処理
private Sub exitThisExcel()
    If Workbooks.count <= 1 Then Application.Quit
    ThisWorkbook.Close SaveChanges:=False
End Sub
Groovyの優しさ（SQLに直接変数を書き込んだ場合）

SQLに直接変数書き込んて実行すると下記のように警告が出ます。（処理は正しく走ります）

*2 23, 2012 7:01:26 午前 groovy.sql.Sql asSql*

*警告: In Groovy SQL please do not use quotes around dynamic expressions (which start with $) as this means we cannot use a JDBC PreparedStatement and so is a security hole. Groovy has worked around your mistake but the security hole is still there. The expression so far is: select * from data where name='?'*
セキュリティ的にヤヴァイからPreparedStatement使ってる「select * from data where name='?'」の形で書くといいよ。って感じ？

```groovy
import groovy.sql.Sql

def name = "yamap"
def sql = Sql.newInstance("jdbc:mysql://localhost:3309/test", "yamap", "yamap", "com.mysql.jdbc.Driver")

println "警告表示".center(30,"-")
sql.eachRow("select * from data where name='${name}'") {
  println it
}

println "PreparedStatement使用".center(30,"-")
sql.eachRow("select * from data where name = ?", [name]) { 
  println it
}
```
AS3でgetURL

ActionScript 3で2みたいにgetURLするClass。
Class宣言を省くとGlobalな関数になるのを知った頃に作ってみたやつ。

```as3:getURL.as
package  {
 
import flash.net.*;
 
	public function getURL(url:String, target:String = null):void{
		try {
			navigateToURL(new URLRequest(url), target);
		}catch(error:Error){
			throw new Error(error+" request url:"+url);
		}
	}
}
// usage
getURL('URL');
Pythonの-mオプションを使えばフィルターの管理が楽

Pythonの起動時に-mオプションとモジュール名を渡すと、そのモジュールを起動できる。
例えば組み込みモジュールの `json.tool` は以下のようにjsonを文字列で受け取って整形して出力してくれる。

```sh
% echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
% echo '{ 1.2:3.4}' | python -m json.tool
Expecting property name: line 1 column 2 (char 2)
```

これを使ってよく使うフィルターを管理すると便利。
まず `PYTHONPATH` 環境変数に適当なディレクトリを追加するように `.bashrc` なり `.zshrc` なりに記述する。ここでは `$HOME/pythonpath` とする。

```sh
export PYTHONPATH=$HOME/pythonpath:$PYTHONPATH
```

つぎに `$HOME/pythonpath/filter` みたいなモジュールを作る。

```sh
% mkdir -p ~/pythonpath/filter
% touch ~/pythonpath/__init__.py ~/pythonpath/filter/__init__.py
```

これであとは `$HOME/pythonpath/filter` 内にPythonスクリプトを置けば、簡単にそれを呼び出せる。
例えば、`$HOME/pythonpath/filter/hoge.py` というスクリプトなら `python -m filter.hoge` 。
ユーザ/ホスト毎に決まったプロンプトの色を自動割り当て

乱数でプロンプトの色決めると、ログインのたびに違ったりしてしまい紛らわしい。同じユーザ、ホストなら同じ色で表示されるようにしたい。

![例示したプロンプトのスクリーンショット1](http://28.media.tumblr.com/tumblr_lztpp3ThCs1qz64n4o1_250.png) ![例示したプロンプトのスクリーンショット2](http://26.media.tumblr.com/tumblr_lztq1vXbUt1qz64n4o1_250.png)

↑これは↓こんなかんじ（zsh で動作確認済み）

```sh
colors=(
    ## 気に入らない色はコメントアウト
    # $'%{\e[0;30m%}' # black
    $'%{\e[0;31m%}' # red
    $'%{\e[0;32m%}' # green
    $'%{\e[0;33m%}' # brown
    $'%{\e[0;34m%}' # blue
    $'%{\e[0;35m%}' # purple
    $'%{\e[0;36m%}' # cyan
    # $'%{\e[0;37m%}' # gray

    ## light colors
    # $'%{\e[1;30m%}' # black
    $'%{\e[1;31m%}' # red
    $'%{\e[1;32m%}' # green
    $'%{\e[1;33m%}' # brown
    $'%{\e[1;34m%}' # blue
    $'%{\e[1;35m%}' # purple
    $'%{\e[1;36m%}' # cyan
    # $'%{\e[1;37m%}' # gray
)
colored_user=$colors[$((`echo "$USER" | sum | cut -f1 -d' '`%${#colors}))+1]$USER
colored_host=$colors[$((`echo "$HOST" | sum | cut -f1 -d' '`%${#colors}))+1]$HOST
PROMPT="$colored_user"$'%{\e[1;39m%}'"@$colored_host"$'%{\e[1;39m%}'"%% "
```

色が被って仕方ないって時は、`$SALT` みたいな変数用意して `sum` に与える文字列を変えるといいかも。
秀丸を使ってた人が入れておいたほうが楽なWindowsのGVimの設定

GVim自体は、香り屋さんのGVim
http://www.kaoriya.net/software/vim
それプラス、秀丸を使っていた人が同じ感じでGVimを使うのに必要そうな設定。
このファイルをgvim.exeの隣に置く。なお内容はWindows7向け。

```vim:vimrc_local.vim
" カレントディレクトリ設定
cd C:\Users\username

"Windowsクリップボードの共有
set clipboard=unnamed

"Tabのスペース数
set tabstop=2

"行数表示
set number

"スワップ、バックアップファイルの作成場所を設定
set backupdir=C:\Users\username\vimtmp
set directory=C:\Users\username\vimtmp

"新しい行を開始したときに、新しい行のインデントを現在行と同じ量にする
set autoindent

"勝手に改行を行わない
set tw=0
```
mod_actionsでドキュメントファイルを保護する

HTMLやドキュメント系のファイルを外部から直接アクセスされないように保護するようにするのって、面倒だったりしますが、Apacheの[mod_actions](http://httpd.apache.org/docs/2.0/ja/mod/mod_actions.html)を使えば結構楽に、おまけにURLを変えずに保護することができます。

```.htaccess
# Word File
Action application/msword /check_login.php
# Power Point
Action application/vnd.ms-powerpoint /check_login.php
# Excel File
Action application/vnd.ms-exce /check_login.php
# Flash File
Action application/x-shockwave-flash /check_login.php
```

上記のようにMIMEタイプを指定しておけば、該当するファイルへのアクセスがあった場合、指定のファイル（/check_login.php）へ内部的に転送（リクエスト上のURLは変更はなし）してくれます。
詳細は、[自分のブログに書いてます](http://ameblo.jp/itboy/entry-10696572358.html)ので参考にしてください。
bat から Python スクリプトのリターンコードを取得する

なんかタイトルが釣りっぽいけど推敲してる時間もないので勘弁して。
例えばこんな Python コードがあるとする。

```python:hoge.py
# encoding: utf-8
import sys

if __name__=='__main__':
    if なんとかかんとか:
        hoge1()
        sys.exit(0)
    else:
        sys.exit(1)
```

これをバッチファイルから呼び出したあと、%ERRORLEVEL% sys.exit() の値が取得できる。

```bat:hoge.bat
@echo off
python3 hoge.py
IF %ERRORLEVEL%==0 foo.bat
```

これで sys.exit() の値が 0 なら foo.bat を実行して、それ以外なら何もしない的なことができる。

ただ %ERRORLEVEL% って 128 くらいまではシステムで役割が決まってるって話をどっかで見たのでやっちゃいけないかも知れんです。
とある処理をしたくて Python スプリクトの結果をなんとか受け取れないか四苦八苦した結果がコレなんですが、該当のコードはまた後ほど。

※まさかバッチファイルまでシンタックスハイライトしてくれるとは...。
おらがProgressionのindex.as

俺らがよくこしらえるindex.asのスケルトンを晒してみるだよ。
Progressionだよ。
IndexSceneからいきなりPRMLで読み込めて嬉しいよ。

```actionscript:index.as
package {
	import flash.events.Event;
	import flash.net.URLRequest;
	
	import jp.progression.casts.CastDocument;
	import jp.progression.config.WebConfig;
	import jp.progression.debug.Debugger;
	import jp.progression.loader.PRMLLoader;
	
	import scenes.IndexScene;
	
	[SWF(backgroundColor="#FFFFFF", width="800", height="600", frameRate="30")]
	public class Index extends CastDocument {
		IndexScene;
		public function Index() {
			super(null, null, new WebConfig());
		}
		
		protected override function atReady():void
		{
			var loader:PRMLLoader = new PRMLLoader(stage);
			loader.addEventListener(Event.COMPLETE, function(e:Event):void{
				loader.removeEventListener(Event.COMPLETE, arguments.callee);
				Debugger.addTarget(manager);
				manager.sync = true;
				manager.goto(manager.syncedSceneId);
			});
			loader.load(new URLRequest("scenes.xml"));
		}

	}
}
```
Essential JavaScript Design Patterns For Beginners (作者：Addy Osmani)

#JavaScriptデザインパターン：The Creational Pattern
###JavaScriptの勉強にすごく役に立つので、JavaScriptを勉強したい人にはお勧めです。
####※The Creational Patternのサンプルソース
```js:
//
// Each of the following will create a new empty object
//

var newObject = {}; // or 

var newObject = Object.create(null); // or

var newObject = new Object();

// Where the 'Object' constructor creates an object wrapper for
// a specific value, or where no value is passed will create an
// empty object and return it

// There are then a number of ways in which keys and values can
// be assigned to the object including:

newObject.someKey = 'Hello World';
newObject['someKey'] = 'Hello World';


// We can also define new properties on objects as follows,
// should you require more granular configuration capabilities
// (Thanks to Yehuda Katz for the less verbose version of this)

var man = Object.create(null);

// Properties can also be writable, enumerable and configurable
var config = {
  writable: true,
  enumerable: true,
  configurable: true
};

// Short-hand to use Object.defineProperty to add new properties
// with additional configuration 
var defineProp = function ( obj, key, value ){
  config.value = value;
  Object.defineProperty(obj, key, config);
}

defineProp( man, 'car',  'Delorean' );
defineProp( man, 'dob', '1981' );
defineProp( man, 'beard', false );
  
// And as we'll see a little later, this can even be used for inheritance
// like this..

var driver = Object.create( man );
defineProp (driver, 'topSpeed', '100mph');
driver.topSpeed // 100mph
```
***
###勉強・分析・まとめ：
####1.最初の３Stepで示したのは、emptyオブジェクトを作成する３つの方法です。
####一番目の書き方がシンプルでカッコイイので、個人的には一番好きです。
```js:emptyオブジェクトの作成方法その１
var newObject = {}; // or 
```
```js:emptyオブジェクトの作成方法その２
var newObject = Object.create(null); // or
```
```js:emptyオブジェクトの作成方法その３
var newObject = new Object();
```
####2.オブジェクトへ属性と値の設定方法を４つ示しています。
```js:オブジェクトへ属性と値の設定方法その１
newObject.someKey = 'Hello World';
```
```js:オブジェクトへ属性と値の設定方法その２
newObject['someKey'] = 'Hello World';
```
```js:オブジェクトへ属性と値の設定方法その３
// 注意点：ここで引数として渡しているconfigはvalue属性を持つobjectである必要があります。
Object.defineProperty(obj, key, config);
```
```js:オブジェクトへ属性と値の設定方法その４
//オブジェクトの属性をまとめて初期化する時に使うと便利ですね。
var config = {
  writable: true,
  enumerable: true,
  configurable: true
};
```

####修正履歴:
2012/03/22　`Object.defineProperty(obj, key, config)`を使用時の注意点を追加した。
文学的PHP

```php:Cat.php
<?php

class Cat
{
    protected $name;

    public function getName()
    {
        return $this->name;
    }

    public function setName($name)
    {
        $this->name = $name;
    }
}
```

```php:app.php
<?php
/**
 * 吾輩は猫である
 *
 * @author Souseki Natsume
 * @author Keisuke SATO <riaf@me.com>
 */

// 吾輩は猫である
$me = new Cat;

// 名前はまだ無い
if (!$me->getName()) {
    throw new Exception('undefined name');
}

```

- - -

[Fork me on Github!](https://gist.github.com/1885308)
IPアドレスがホワイトリストに入っていないときだけBasic認証

Satisfy ディレクティブを使う。社内からは認証なしにするとか。

```
<Location />
  AuthType Basic
  AuthName "Basic Auth"
  AuthUserFile "/path/to/.htpasswd"
  Require valid-user
  Allow from 10.0.0.0/24
  Satisfy Any
</Location>
```
RでTRUEの数を数える関数はありませんか？

条件に合うものの個数を数えたい場合があるのですが、
例えば、iris データの setosa の数を数えたいときに

```R:R
length(which(iris[5] == "setosa"))
```

と書いているんですが、この `length(which())` ができる一つの関数って無いんでしょうか？
リストの中のインスタンスのもつ値で検索

target_listを線形に探索していく場合、以下のコードが効率がよく、柔軟で、さらに簡潔。
`next(( {x} for {x} in {target_list} if {condition} ),None)`
第2変数は見つからなかった場合に返ってくる値。
nextを使うことで、条件にあるもののうち、もっとも先頭にあるものをとってくることができ、効率がいい。

例

```python
class Hoge(object):
    def __init__(self,x,y):
        self.x=x
        self.y=y
hoge_list=[Hoge(10,20),Hoge(10,30),Hoge(5,3),...]
found=next( (hoge for hoge in hoge_list if hoge.x==10 and hoge.y==30) ,None)
```

参考
http://dev.ionous.net/2009/01/python-find-item-in-list.html
scalaの文字コードについて

化ける　すごく手が空いたら調べる　
解決策知っている方いたら教えてください
→教えてもらいました　コメントに解決策があります

####ソースコード

```scala:
print("おはよう")
```

####実行結果

```sh:
% scala test.scala
???͂悤% 
```
人工データ集合（正弦関数）

```python:sine_function_data.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt

N = 10
SCALE = 0.3

x = np.linspace(0, 1, N)
t = np.sin(2 * np.pi * x) + np.random.normal(0, SCALE, x.size)
plt.plot(x, t, 'bo')

curve_x = np.linspace(0, 1, 100)
curve_t = np.sin(2 * np.pi * curve_x)
plt.plot(curve_x, curve_t, 'g-')

plt.xlabel('$x$')
plt.ylabel('$t$')
plt.axis([-0.05, 1.05, -1.5, 1.5])
plt.savefig('sine_function_data.png')
```
LINQやRxのAggregateの初期値

Aggregateの第一引数に初期値を渡すことができるのは知ってたんですが、
listなどのインスタンスを置いたりすることも可能なんですね、知らなかった。

```C#:LINQのAggregate.cs
var result = Enumerable.Range(1, 10).Aggregate(new List<int>(), (list, x) => {
  list.Add(x);
  return list;
});
result.ForEach(x => Console.WriteLine(x));
```

上記はLINQですが、RxのAggregateも同様に使用できるみたいです。

Aggregate\<TSource, TAccumulate>(TAccumulate seed, Func\<TAccumulate, TSource, TAccumulate> func)
だそうです。
PHPで改行コードを統一する関数: CRLF, CR, LF が混在してる文字列を LF に変換するなど

各OS向けにCSVを出力するときとか。

```php
<?php

function convertEOL($string, $to = "\n")
{	
	return preg_replace("/\r\n|\r|\n/", $to, $string);
}

$string = "CR + LF: \r\n CR: \r LF: \n";

echo "Testing string:", PHP_EOL;
echo json_encode($string), PHP_EOL;

echo "For MacOSX, Unix, Linux", PHP_EOL;
echo json_encode(convertEOL($string)), PHP_EOL;

echo "For Windows", PHP_EOL;
echo json_encode(convertEOL($string, "\r\n")), PHP_EOL;

echo "For MacOS 9", PHP_EOL;
echo json_encode(convertEOL($string, "\r")), PHP_EOL;
```

```text:結果
Testing string:
"CR + LF: \r\n CR: \r LF: \n"
For MacOSX, Unix, Linux
"CR + LF: \n CR: \n LF: \n"
For Windows
"CR + LF: \r\n CR: \r\n LF: \r\n"
For MacOS 9
"CR + LF: \r CR: \r LF: \r"
```
bash で TCP 通信

使い道あるかわからないけれど、`/dev/tcp/{hostname}/{port}` で TCP 通信できる。（※ただし bash に限る？）

```sh:http_client.sh
#!/bin/bash
# 使い方
#  $ ./http_client.sh host path
# http://host/path に GET 投げる

exec 3<> /dev/tcp/$1/80
echo -e "GET $2 HTTP/1.0\n\n" >&3
cat <&3
```

実行してみる。

```sh
$ ./http_client.sh qiita.com /
HTTP/1.1 200 OK
Server: nginx/1.0.9
Date: Wed, 22 Feb 2012 01:19:59 GMT
Content-Type: text/html
Content-Length: 151
Last-Modified: Tue, 01 Nov 2011 15:07:17 GMT
Connection: close
Accept-Ranges: bytes

<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body bgcolor="white" text="black">
<center><h1>Welcome to nginx!</h1></center>
</body>
</html>
$ 
```

ちなみに `/dev/udp/{hostname}/{port}` で UDP 通信。
コードゴルフ向けな排他的論理和の使い方

ループカウンタの終了条件に使っちゃう。
普通のプログラミングしてると出ない発想です。
こういうのすぐ出る人は尊敬します。

```java:xorLoop.java
/** 1⇒100のループ処理 */
int i=0;
while(i++ ^ 100) //排他的論理和を取るので、一致すると 0 => false
{
   //Do something
}
```
Enumerable#all?

params(Hash)に含まれるkeyがすべてprepared_keyの中にあるものかどうかを判定する式

````ruby
params.keys.map{|k| prepared_keys.include? k }.all?
````

[Enumerable#all?](http://ref.xaio.jp/ruby/classes/enumerable/all)というものが。

````ruby
params.keys.all?{|k| prepared_keys.include? k } #=> true
````

これは素敵。any?もあるよ。
MTのDBアップデートが帰ってこない時にコマンドラインからアップデートする方法

MT のバージョンアップなどの際DB のアップデートが走るけど大きなDB だったりすると帰ってこない時がある
コマンドがあるのでそれを実行するとうまく行ったのでメモ

先ず，**mt-config.cgi** のあるパスに移動する
そこで，mt インストールディレクトリ以下の **tools/upgrade** を実行する
引数は**--name mt-user**(mt の管理アカウント)
以下はDebianSqueeze の **movabletype-opensource** パッケージでmt 管理アカウントが **mt-user** の場合の例
シックスアパートからDL したOSS版/製品版も同様だった

> $ cd /usr/lib/cgi-bin/oss-new
> $ perl /usr/share/movabletype/tools/upgrade --name mt-user
nginx.conf for Jekyll

nginxについての投稿が少なめなので、投稿してみる。
拙者のブログはJekyllで構築してるのですが、htmlを返すだけなので、locationブロックとかめんどくさい設定はしなくても、こんな感じで動きます。

```nginx:nginx.conf
# ...

http {
    # ...
    include sites/*.conf;
}
```

```nginx:sites/blog.conf
server {
    server_name naoty.jp;
    listen 80;
    root /var/www/blog;
}
```
容赦無いCollection Insert

Mongodbに大量のデータをぶち込もうとすると、「Exceded maximum insert size of 16,000,000 bytes」などとエラーを吐くので、入るまで半分にしてねじ込み続ける容赦無いスクリプトを書いた。

```ruby
def yousyanai_insert(data)
  begin
    NaotyModel.collection.insert(data)
  rescue
    data.each_slice(data.length / 2) {|half_data| yousyanai_insert(half_data) }
  end
end
```
Builder pattern (Design patterns in Scala)

abstract class Product

abstract class PizzaBuilder {
  var dough: String
  var sauce: String
  var topping: String

  def withDough(dough: String): PizzaBuilder
  def withSauce(sauce: String): PizzaBuilder
  def withTopping(topping: String): PizzaBuilder

  def build: Product
}

class Pizza(builder: PizzaBuilder) extends Product {
  val dough: String = builder.dough
  val sauce: String = builder.sauce
  val topping: String = builder.topping
 
  override def toString: String = {
    "Dough:" + dough + " Topping:" + topping + " Sauce:" + sauce
  }
}

class Cook extends PizzaBuilder {
  var dough: String = ""
  var sauce: String = ""
  var topping: String = ""

  override def withDough(dough: String): PizzaBuilder = {
    this.dough = dough
    this
  }

  override def withSauce(sauce: String): PizzaBuilder = {
    this.sauce = sauce
    this
  }

  override def withTopping(topping: String): PizzaBuilder = {
    this.topping = topping
    this
  }

  override def build: Product = new Pizza(this)
}


object PizzaBuilderExample {
  def main(args: Array[String]) = {
    val hawaiianCook = new Cook().withDough("cross").withTopping("ham+pineapple").withSauce("mild")
    val hawaiianPizza = hawaiianCook.build
    println("Hawaiian Pizza:" + hawaiianPizza)
  }
}

PizzaBuilderExample.main(Array())
AbstractFactory pattern (Design Patterns in Scala)

/**
 * Example of AbstractFactory pattern
 *
 * create OS Specific GUIWidget with same operation.
 *
 */

trait Button {
  def paint: String
}

class WinButton extends Button {
  def paint: String = "I'm a WinButton"
}

class OSXButton extends Button {
  def paint: String = "I'm a OSXButton"
}

trait GUIFactory {
  def createButton: Button
}

class WinFactory extends GUIFactory {
  def createButton: Button = new WinButton
}

class OSXFactory extends GUIFactory {
  def createButton: Button = new OSXButton
}

class Application(factory: GUIFactory) {
  val button = factory.createButton
  println(button.paint)
}

object ApplicationRunner {
  def main(argv: Array[String]) {
    new Application(createOsSpecificFactory(argv(0)))
  }

  def createOsSpecificFactory(os_type: String): GUIFactory = {
    os_type match {
      case "Win" => new WinFactory
      case "OSX" => new OSXFactory
    }
  }
}

ApplicationRunner.main(Array("Win"))
ApplicationRunner.main(Array("OSX"))
文字列のreplace（正規表現）を複数行対応

```replaceLine.js
String.prototype.replaceLine = function (_regExp, _repText) {
	var tExp = String(_regExp);
	var regExp = new RegExp(tExp.split("/")[1], tExp.split("/")[2]);
	var strArry = this.split("\n");
	var strRet = "";
	
	for (var i in strArry) {
		strRet += strArry[i].replace(regExp, _repText) + "\n";
	}
	return strRet;
};
```
emacs のバッファをタブみたいに表示したい

1. [tabbar.el](http://www.emacswiki.org/emacs/download/tabbar.el) を load-path のどこかに置く
2. `.emacs` に以下を追記

```scm
(when (require 'tabbar nil t)
  (tabbar-mode))
```

### タブのグループ

タブをグループ化する機能があり、デフォルトだと一部を除き major-mode ごとにグループ分けされる。

このグループ分けが気に入らないなら、[tabbar.el](http://www.emacswiki.org/emacs/download/tabbar.el) の `tabbar-buffer-groups` を参考に下のように書く。

```scm
;; 例: 全バッファを一つのグループにしまう
(setq tabbar-buffer-groups-function (lambda () (list "Buffers")))
```

### おわり

あとで表示するタブのフィルタリングとかもっと書く
Vimで任意の正規表現にマッチする部分をハイライトする方法

たとえば、インデントを色づけしたい場合はvimrcにこんな感じに書くそうな。

````vim
﻿﻿function! SOLSpaceHilight()
    syntax match SOLSpace "^\s\+" display containedin=ALL
    highlight SOLSpace term=underline ctermbg=LightRed
endf

autocmd BufNew,BufRead * call SOLSpaceHilight() 
````

【結果】 https://skitch.com/hash/8djif/2-tmux
常識的に使われていて簡単で効果的なのに入門サイトに余り書かれないhtml+css+javascriptのデバッグ

##デバッガをつかってください
今chromeまたはsafariを使っているならctrl+shift+iで起動する。コンソールは、デバッガ起動後にEscで起動する。
コンソールで直接javascriptを叩いてレスポンスを見ながら書くと速い。html、cssの微調整も直接ブラウザ見ながらデバッガでやった方が速い。が、プログラムの編集機能自体は貧弱なので、大きめの編集をするときはエディタを使う。

##[例:twitterとfacebookのログインボタンの画像を変更する方法のデバッグ実況](http://qiita.com/items/2639)

トライアンドエラーの一回のアクションは2秒〜15秒くらい(入力履歴や入力補完があるので)。
ググるときは、ググった回数*1分くらい。
何回か試してだめだったら[先生たち](http://qiita.com/items/1359)に聞くことにしている。
一発一発が軽いので、細かく刻んで試す(ゲームっぽくていい)。一度にたくさん書いて実行するとどこでダメになったかわかりにくく、目を凝らして読んだり探したりするのは肩がこる。もちろん、自信があるプログラムは一気に書く。

```javascript:debug.js
//まず、jQueryでちゃんと取れるか試す 
>$("#login_twitter")
<div id=​"login_twitter">​…​</div>​

//とれたので、iframeの中身を試す
//過去の入力履歴を呼び出して、iframeの部分を書き足して実行
>$("#login_twitter iframe")
[<iframe allowtransparency=​"true" frameborder=​"0" tabindex=​"0" role=​"presentation" scrolling=​"no" style=​"vertical-align:​ middle;​ width:​ 170px;​ height:​ 26px;​ ">​…​</iframe>​]

//不安は杞憂だったようだ。余裕余裕。
$("#login_twitter iframe .twitter-connect-large")
[]

//あれ？とれない。iframeの中身を取得する方法をぐぐる
//contents()で取れるらしい
$("#login_twitter iframe").contents()
[Document]

//とれた　続いてオブジェクトから要素を選択するfindを使う（これは覚えていた）
>$("#login_twitter iframe").contents().find(".twitter-connect-large")
[<a href=​"#" class=​"twitter-connect twitter-connect-large" title=​"Connect with Twitter" style=​"background-image:​ url(http:​/​/​localhost:​8086/​img/​puri.jpg)​;​ ">​…​</a>​]

//できた　background-imageをattr()で取得する
>$("#login_twitter iframe").contents().find(".twitter-connect-large").attr("background-image")
undefined

//あれ？とれないのでググる→css()を見つける
//そっか
>$("#login_twitter iframe").contents().find(".twitter-connect-large").css("background-image")
"url(http://localhost:8086/img/puri.jpg)"

//よしよしとれた 続いて設定してみる
>$("#login_twitter iframe").contents().find(".twitter-connect-large").css("background-image","hoge")
[<a href=​"#" class=​"twitter-connect twitter-connect-large" title=​"Connect with Twitter" style=​"background-image:​ url(http:​/​/​localhost:​8086/​img/​puri.jpg)​;​ ">​…​</a>​]

//あれ、変化がない　どうなってんだろ
>$("#login_twitter iframe").contents().find(".twitter-connect-large").css("background-image")
"url(http://localhost:8086/img/puri.jpg)"

//変わっていない　設定内容が悪かった雰囲気なので、書き換えて再度試す
>$("#login_twitter iframe").contents().find(".twitter-connect-large").css("background-image","url('http://localhost:8086/img/revin.jpg')")
[<a href=​"#" class=​"twitter-connect twitter-connect-large" title=​"Connect with Twitter" style=​"background-image:​ url(http:​/​/​localhost:​8086/​img/​revin.jpg)​;​ ">​…​</a>​]

//書き換わったことを確認
>$("#login_twitter iframe").contents().find(".twitter-connect-large").css("background-image")
"url(http:/localhost:8086/img/revin.jpg)"
//できた
```
タグの交通整理

各人がいろいろなタグを登録しているけれど、そろそろタグの交通整理が必要かも。

HTMLとHTML5※、CSSとCSS3、jQueryとjQueryMobile、etc.etc.各人で分け方が違うから、どんどん類似タグが増えていく。
せめて推奨タグを決めてもらうか、複数のタグをグループとしてまとめる機能がないと、たとえ検索機能が実装されても必要な情報にたどり着くのが大変じゃないだろうか。

※HTMLタグはHTML4以前？でもアイコンはHTML5だ。
cssで背景画像の表示位置を指定する場合の注意

cssで背景画像の表示位置を指定する場合、
background-positionの指定はbackgroundの指定よりも後に書かないと反映されない。

```css
#hoge {
    background: url(hogehoge/hoge.png) no-repeat;
    background-position: center center;
}
```
heroku deploy準備

以下、stack(OS, Libraryのセット)をCedar()にした場合。
[Celadon Cedar Stack](http://devcenter.heroku.com/articles/cedar)

```ruby:Gemfile
group :production do
  gem 'pg'
  gem 'thin'
end
```

でgem追加。

```ruby:Procfile
web: bundle exec thin start -p $PORT
```

をアプリのrootフォルダに追加。

```ruby:config/environments/production.rb
config.assets.compile = false
```

を

```ruby:config/environments/production.rb
config.assets.compile = true
```

に変更。
これでpushしたらアプリ公開完了。
なぜかこの設定をしてからheroku createしたら、push後にherokuの方でうまく表示されなかった。
heroku create

herokuで新しいアプリを作るとき、本番用と開発用を分けたいときのコマンド

```:本番用
heroku create app-name --stack cedar
```

```:開発用
heroku create app-name --remote repository-name --stack cedar
```

pushするときは

```:本番用
git push heroku master
```

```:開発用
git push repository-name master
```
zencoding.vimでTwitterBootstrapのだいたいのテンプレートを作る


ナビゲーション
```
div.navbar.navbar-fixed-top>div.navbar-inner>div.container>(a.brand)+(ul.nav>li.active>a)
```
Grid
```
div#wrapper.container>div#row>div#span4.sidebar+div#span6.main
```
核酸塩基サーチ

http://qiita.com/items/2394 より

>4種類のアルファベット "A,C,G,T" から成るn文字の文字列のうち、
>"AAG"という並びが含まれる文字列を全て列挙するプログラムを書きなさい。
>ただし、nは3以上の整数とし、文字列内に同じアルファベットが出現しても構わないものとし、
>出力順序は問わないものとします。
>http://alpha.cgios.net/alpha/cgios

解答方法が曖昧なのだけど、indexOfでヒットした回数分"AAG"を出力するってことでOKかな？

```java:TripletSearcher.java
public class TripletSearcher {
    String query = "AAG";
    String target = "TAATAGGGTTCCAATTCTTCAGCTTTTTGCTGATGCTCCAAGTTAAGGCGAAGTGTGATCGACCAAGGTT";
    
    public void search() {
        int start = 0;
        
        while ((start = target.indexOf(query, start)) >= 0) {
            System.out.println(query);
            
            start += query.length() - 1;
            
            if (start >= target.length())
                break;
        }
    }
    
    public static void main(String[] args) {
        TripletSearcher searcher = new TripletSearcher();
        searcher.search();
    }
}
```

考えてみれば、文字列だけとかクエリのみになるのは当然だから、インデックスを返すべきか。
Scala で書いた。メソッドのみです。

```scala
  def tripletSearch(sequence: String, query: String): List[Int] = {
    def search(start: Int, results: List[Int]): List[Int] = sequence.indexOf(query, start) match {
      case -1 => results
      case index => search(index + query.length - 1, index :: results)
    }
    
    search(0, Nil)
  }
```

Javaに限ればString#indexOfは内部のchar配列を利用しているから最速な気がする。内部は卑怯だとして、あとは適当な文字数で区切ってMapReduceかー。
Chrome Extension 公開時の「現在、ご注文を処理できません」というエラー

    現在、ご注文を処理できません。できるだけ早く再開できるよう最善を尽くしております。
    申し訳ありませんが、しばらくしてからもう一度お試しください。処理の前にキャンセルすることもできます。

12時間ぐらい待ったらokになった。
↓の同じ現象に当たった人も1,2日待てば大丈夫だったとのこと。
https://groups.google.com/a/googleproductforums.com/forum/?fromgroups#!topic/chrome-ja/84Z1K27NviI
gaeの静的なファイルのファイル名の大文字小文字は本番環境だと区別されるが、開発環境だと区別されない

したがって、開発環境だと動くけど本番環境だと動かないという状態が発生する
app.yamlの設定の問題かと思ってそっちをいじり続けていた
ファック
make_array

arrayを生成するmake_arrayという関数を作った．

```cpp:make_array.cpp

#include <array>

template<class T, class... Args>
inline std::array<T, sizeof...(Args)> make_array(Args &&... args)
{
    return std::array< T, sizeof...(Args) >{{ std::forward<Args>(args)... }};
}

#include <iostream>

int main()
{
    auto hoge = make_array<int>(1, 2, 3, 4);  // the same as " std::array<int, 4> hoge = {{1, 2, 3, 4}}; "

    for(auto i : hoge){
        std::cout << i << std::endl;
    }
    return 0;
}

```

要素数を Variadic Templates で推論させています．
ファイル一括変換したあとによくやる作業

```sh
$rename "s/foo/bat/" *.txt
$hg st | grep ! | pbcopy
$vi
貼りつけて先頭を!からhg rmにvimで編集
ターミナルに戻ってはりつけ
$hg ci -m "refs #1 ファイル名変更した"
GroovyでファイルI/O

勉強中で忘れそうなのでメモ

```java:
def file = new File("C://test.txt")

def fw = file.newWriter()
fw.writeLine "hogehoge1"
fw.writeLine "hogehoge2"
fw.writeLine "hogehoge3"
fw.close()

def fr = file.newReader()
def s
while(s = fr.readLine()){
    println s
}
fr.close()
```
10分コーディング（github連携テスト）

```groovy
// http://ameblo.jp/programming/entry-10001721422.html

def deal = { i, str ->
  def list = []
  i.times {
    list << ""
  }
  if (str.size() < i) {
    str = ""
  } else {
    str = str[0..(str.size()-(1 + str.size() % i))]
  }
  str.eachWithIndex { s, j ->
    list[j % i] += s
  }
  list
}

assert deal(3,"123123123") == ["111","222","333"]
assert deal(4,"123123123") == ["12","23","31","12"]
assert deal(6,"012345012345012345") == ["000", "111", "222", "333", "444", "555"]
assert deal(6,"01234") == ["", "", "", "", "", ""]
```
Mapでプロパティを設定した場合、引数なしコンストラクタも呼ばれるっぽい。


```groovy
import groovy.transform.*
@ToString
class Item {
  int id
  String name
  int price
  
  Item(){
    println "test"
  }
}

def item = new Item([id:1,name:"drink",price:100])
println item

// test
// Item(1, drink, 100)
```
プログラム(あるいはライブラリが)動的リンクしているライブラリを調べる


```
$ ldd /usr/bin/neoagent
        linux-vdso.so.1 =>  (0x00007fff5a7ff000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f58a0455000)
        libev.so.4 => /usr/lib/libev.so.4 (0x00007f58a0247000)
        libjson.so.0 => /usr/local/lib/libjson.so.0 (0x00007f58a003e000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f589fc9f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f58a069d000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f589fa1b000)
$
```
Ubuntu11.10の電源管理の詳細設定

システム設定->電源で設定できるのだけど，以前に比べて選択項目が少なくなっていて不便
dconf で詳細設定が可能だった
設定は， **org.gnome.settings-daemon.plugins.power** 以下
dconf-editor を使うとお手軽に設定できる
dconf-editor の導入は以下の通り

>$ sudo apt-get install dconf-tools

しかしこれでもUbuntu11.04 までで出来ていたラップトップの蓋を閉じた時スクリーンロックができなさそう > **lid-close-ac-action/lid-close-battery-action**
とりあえず[システム設定]->[画面]の画面をオフにするまでの時間を短めに&ロックするをオンにして離席時などはスクリーンロック(CTRL+ALT+L)をするよう運用で回避…
セグエで遷移する前に処理を行う

UIViewControllerに`- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender`というdelegateメソッドが用意されており，これを実装すれば遷移前に処理を行うことができる．
以下のようにすると，someMethodを呼んだあとに遷移する．

```objc
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  if ([segue.identifier isEqualToString:@"MyIdentifier"]) {
    [self someMethod];
  }
}
```
*.xcdatamodeld の名前を変更すると NSManagedContextModel が作れなくなる

```objc
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Foo" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
```

としても `_managedObjectModel` が `nil` になってしまいます。xcdatamodeld を作り直すとなおります。

http://myfootmarks.com/wordpress/archives/769
Sprite3D.jsのリファレンス

最近, Sprite3D.jsを使い始めて, 少しずつ分かってきたので, 簡単なリファレンスを作成. よく分からないメンバ関数なんかも多いので, 教えていただければ幸いです.

## Sprite3D.jsとは

JavaScriptで3D描画を行うためのオープンソースのライブラリ. 内部実装上は, CSS3で導入された3D関連の指定をJavaScriptで動的に行うことで3D表現を実現している. jQueryなどの追加のライブラリは不要だが, 3D表現をCSSでサポートしていないブラウザでは閲覧できない. WebGLなどと比較すると, 表現力は劣るがハードウェアの性能には左右されにくいという特徴がある.

## ダウンロード
[Sprite3D.js](http://minimal.be/lab/Sprite3D/)


## Sprite3Dクラスのメンバ関数
### setTransformString
### setX, setY, setZ, setPosition
オブジェクトを指定した位置に移動させる.
### moveX, moveY, moveZ, move
オブジェクトを指定した座標分だけ指定した方向に移動させる(差分を指定する).
### setRotationX, setRotationY, setRotationZ, setRotation
オブジェクトを指定した角度に回転させる.
### rotationX, rotationY, rotationZ, rotation,
オブジェクトを指定した方向に指定した角度分だけ回転させる(差分を指定する)
### setScaleX, setScaleY, setScaleZ, setScale
オブジェクトの各指定する方向への拡大率を指定する(1が等倍).
### setRegistrationPoint
オブジェクトの中心座標を設定する.
### setTransformOrigin
変形処理の原点となる座標(x, y)を指定する.
### setSize
### setOpacity, getOpacity
透過度を指定する, 取得する.
### setClassName, getClassName, addClassName, removeClassName
オブジェクトに対するクラス名を設定, 取得, 追加, 除去するためのユーティリティ関数.
### setId, getId
オブジェクトに対してidを割り当てる, 取得するためのユーティリティ関数.
### setCSS, getCSS
要素にCSS文字列をセットする, 要素に設定されているCSS文字列を取得する.
### setInnerHTML
オブジェクトのinnerHTMLを設定する.
### setTileSize
### setTilePosition
### setProperty
オブジェクトに対して, key/value形式でプロパティを保持させたり, 既存のプロパティをこれで書き換えることが可能. 引数には, keyとvalueをこの順序で渡す.
### setRotateFirst
### update, update2D, updateAll, updateCHildren, updateChildrenAll, updateWithChildren
オブジェクトを更新する. これを呼び出したときにCSS文字列を生成しオブジェクトに対して適用させる. 他のメソッドでプロパティを変更しても, このメソッドを呼び出さない限り, 描画上は反映されない.
### addChile, removeChile, removeChildAt
子オブジェクトを追加, 子オブジェクトを除去する.
### findFromDOMElement
### addEventListener, removeEventListener
オブジェクトに対するイベント・リスナーを追加, 除去する.
### createCenterdContainer
### createTopLeftCenterdContainer
### isSupported
レンダリングを行っているブラウザ(環境)がSprite3Dでの3D表現をサポートしているかどうかを返す. 3D表現をサポートしていない場合であっても, 2D表現をサポートしている場合は, isSupportedはfalseを返すが, 2D表現で描画を行う.
リフレクションで静的クラスのプロパティを取得

例えば、

```Hoge.cs
public static class Hoge
{
  static string hoge1 = "hogeabc";
  public static string Hoge1 { get { return hoge1; } }

  static string hoge2 = "hogeaac";
  public static string Hoge2 { get { return hoge2; } }

  static string hoge3 = "hogeagq";
  public static string Hoge3 { get { return hoge3; } }
}
```

という静的クラスがあって、Hogeクラスに定義されているプロパティ全てにアクセスしたい場合、

```Reflection.cs
static void Main(string[] args)
{
  var hogeType = typeof(Hoge);
  var names = hogeType.GetProperties(BindingFlags.Static|BindingFlags.Public)
              .Where(x => x.PropertyType == typeof(string))
              .Select(x => x.GetValue(hogeType, null) as string).ToList();
  foreach (var item in names)
  {
    Console.WriteLine(item);
  }
}
```

とすればstaticでpublicなstring型のプロパティ全てにアクセスできます。

ちなみに、PropertyInfo#GetValue(object obj, object[] index)の第一引数は
取得するオブジェクトのインスタンスです。(静的プロパティの場合はそのクラスのTypeオブジェクト)
Yet Another FizzBuzz...

FizzBuzzを判定するクラスを書きました
case式で順不同で使えるのがポイントです^^;

```ruby
class FB
  {FB:[15], F:[3,5], B:[5,3]}.each do |name, base|
    k = Class.new do
      define_singleton_method(:===) do |n|
        (n%base[0]).zero? && (base[1] ? !(n%base[1]).zero? : true)
      end
    end
    const_set(name, k)
  end
end

def fizzbuzz(i)
  case i
  when FB::F;  :Fizz
  when FB::B;  :Buzz
  when FB::FB; :FizzBuzz
  else i
  end
end

(1..50).map { |i| fizzbuzz i } # => [1, 2, :Fizz, 4, :Buzz, :Fizz, 7, 8, :Fizz, :Buzz, 11, :Fizz, 13, 14, :FizzBuzz, 16, 17, :Fizz, 19, :Buzz, :Fizz, 22, 23, :Fizz, :Buzz, 26, :Fizz, 28, 29, :FizzBuzz, 31, 32, :Fizz, 34, :Buzz, :Fizz, 37, 38, :Fizz, :Buzz, 41, :Fizz, 43, 44, :FizzBuzz, 46, 47, :Fizz, 49, :Buzz]
```
マシンにインストールされているCPANモジュール一覧を出す

仕事で使うなら各モジュールのバージョンまでちゃんと管理しなきゃだけど（OrePANとか使う必要がある）、趣味でやるようなゆるい開発用に。

```perl
#!/usr/bin/env perl

use strict;
use warnings;
use Perl6::Say;
use Path::Class;
use Pod::Parser;
use List::MoreUtils qw/uniq/;
use Regexp::Assemble;

my @perllocals = do {
    my $version = do {
        my $info = `perl -v`;
        ($info =~ /\(v(5[\.\d]+)\)/)[0];
    };

    my $search;
    for my $path (@INC) {
        if ($path =~ /(.+?$version)/) {
            $search = $1 and last;
        }
    }
    map {chomp $_; $_} `find $search -name 'perllocal.pod'`;
};

my $search = do {
    my $ra = Regexp::Assemble->new;
    $ra->add('^Module');
    $ra->add('[^:]:[^:]');
    $ra->re
};

my $parser = Pod::Parser->new;

my @modules = (
    uniq
    sort
    grep {
        $_ && $_ !~ /$search/;
    }
    map {
        $_->{'-ptree'}->[0] =~ /^(.+)\|/;
    }
    grep {
        ref($_) eq 'Pod::InteriorSequence'
    }
    map {
        @{$parser->parse_text(scalar file($_)->slurp)};
    }
    @perllocals
);

say $_ for @modules;
```
enlive で指定URLのタイトル取得

require しとく

```clojure
(ns myns
  (:require [net.cgrand.enlive-html :as enlive]))
```

URLオブジェクトを渡せば勝手に取ってきてくれる。HTTP Client 要らずで手軽。

```clojure
(-> "https://github.com/"
    java.net.URL.
    enlive/html-resource
    (enlive/select [:title])
    first :content first)
;=> "GitHub - Social Coding"
```
便利な Kernel#test の紹介です

###  [ Kernel#test( cmd, file ) ](http://miyamae.github.com/rubydoc-ja/1.9.3/#!/method/-kernel/m/test.html)
###### 便利なcmdを紹介！他にも沢山あるので残りは[ Kernel#test( cmd, file ) ](http://miyamae.github.com/rubydoc-ja/1.9.3/#!/method/-kernel/m/test.html)で確認してください。
```ruby:test.rb
file = "Gemfile"

# ?e：ファイルが存在する
test( ?e, file )  # => true

# ?z：ファイルサイズが 0 である
test( ?z, file )  # => false

# ?s：ファイルサイズが 0 でない (ファイルサイズを返す、0 ならば nil) -> Integer|nil
test( ?s, file )  # => 63

# ?f：ファイルが存在する & ファイルはプレーンファイルである
test( ?f, file )  # => true

# ?f：ファイルが存在する & ファイルはプレーンファイルである
test( ?f, "file" )  # => false

# ?d：ファイルが存在する & ファイルはディレクトリである
test( ?d, file )  # => false

# ?d：ファイルが存在する & ファイルはディレクトリである
test( ?d, "vendor" )  # => true

# ?M：ファイルの最終更新時刻を返す -> Time
test( ?M, file )  # => 2012-02-17 02:10:45 +0900

# ?A：ファイルの最終アクセス時刻を返す -> Time
test( ?A, file )  # => 2012-02-18 00:10:41 +0900

# ?C：ファイルの inode 変更時刻を返す -> Time
test( ?C, file )  # => 2012-02-17 13:19:43 +0900
```
Failed to load properties file for project に出会ったら

Androidアプリ作ってるうにちEclipseが
「Failed to load properties file for project」のメッセージを出して、
動かなくなった時に
以下の記事を書きました。

[[android][eclipse]eclipseでAndroidアプリが動かなくなった](https://abrakatabura.hatenablog.com/entry/2011/05/06/073322)
PHPでプロキシ

AS3で,InstagramAPIとかにアクセスしようとするとセキュリティサンドボックス侵害だよって言われるのでPHPでプロキシを作って解決。

```php:proxy.php
<?php
	$url = $_POST['url'];
	$count = 0; 
	$postArr = array ();
	
	foreach ($_POST as $key => $value) {
		if( $key != "url" ){
			$postArr[ $key ] = $value;
			$count++;
		}
	}
	if( $count > 0 ){
		$postdata = http_build_query( $postArr );
		$header = array(  
			"Content-Type: application/x-www-form-urlencoded",  
			"Content-Length: ".strlen($postdata)
		);
		$opts = array (	
			'http' => array ( 
				'method'  => 'POST', 
				'header' => implode ("\r\n", $header), 
				'content' => $postdata 
			) 
		);
		$context = stream_context_create ($opts);
		readfile($url, false, $context);
	}else {
		readfile($url);
	}
?>
```
このphpに飛びたいurlをPOST送信する。
こんな感じ。

```as3:loader.as
var urlLoader:URLLoader = new URLLoader();

var urlVariables:URLVariables = new URLVariables ();
urlVariables.url = "http://ほげほげ";

var urlRequest:URLRequest = new URLRequest ( "proxy.php" );
urlRequest.data = urlVariables;
urlRequest.method = URLRequestMethod.POST;
			
urlLoader.load ( urlRequest );
```
APIにPOST送信したい変数はurlと一緒にproxy.phpにPOST送信すればOK
[AIR][iOS] ホームボタンで確実にアプリを終了させる

```actionscript3:

NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, onDeactive);

private function onDeactive(event : Event) : void
{
    NativeApplication.nativeApplication.exit();
}
```


アプリケーション記述ファイルのInfoAdditionsタグにUIApplicationExitsOnSuspendを追加

```xml:xxxx-app.xml

<iPhone>
    <InfoAdditions>
    <![CDATA[
    
    //・・・略・・・
    
    <key>UIApplicationExitsOnSuspend</key><true />
    
    //・・・略・・・
    
  ]]></InfoAdditions>
    
</iPhone>

```
Prototype.jsで、submitボタンの二重クリックの禁止

```javascript:after_click.css
//submitボタンの二重禁止
//全てのformのsubmitイベントの発生時に、formに含まれるsubmitボタンを無効化する。
window.onload = function() {
  var forms = document.forms; // 存在するフォームを取得する
  for (var i = 0; i < forms.length; i++) {
    var form = forms[i];
    Event.observe(form, 'submit', AfterClick);
  }
}
var AfterClick = function(event) {
  var form = event.target; // イベントの発生元であるフォームのオブジェクトを取得
  var elements = Form.getInputs(form, 'submit'); // フォームにあるsubmitを全て取得
  elements.each ( function(element, idx) {
    element.disabled = true; // submitを全て無効にする
  });
}
```

**Prototype.jsが必須です。**

情報の入力、ファイルを送信する時など、submitボタンのクリックの直後にsubmitを無効にして二重投稿を禁止するJavaScriptです。
一応、IE6やFirefoxでの動作は確認してます。

フォームが複数存在する場合は、AfterClickでもう一度「var forms = document.forms;」とかでフォーム全体のsubmitを取得するなりすれば、可能じゃないかと思います。
Windows de Ruby

### Rubyバージョン管理
- [ pik ](https://github.com/vertiginous/pik)

### Ruby
- [ mingw： Ruby Installer & DevKit ](http://rubyinstaller.org/)
- [ mswin： Ruby MSI Packages ](http://www.artonx.org/data/asr/)

### Rails
- [ mingw： Rails Installer ](http://railsinstaller.org/)
- [ mswin： 能楽堂 ](http://www.artonx.org/data/nougakudo/)

### Webサーバ
- [ Thin ](http://rubygems.org/gems/thin/versions/1.2.11-x86-mingw32) *※eventmachineのバージョンに注意*
- [ Mongrel ](http://rubygems.org/gems/mongrel/versions/1.2.0.pre2-x86-mingw32gem install mongrel --pre)

### REPL & デバッグ
- [ pry ](https://github.com/pry/pry)
- [ pry-rails ](https://github.com/rweng/pry-rails)
- [ tapp ](https://github.com/esminc/tapp)

### gem管理
- [ bundler ](https://github.com/carlhuda/bundler)

### 圧縮・解凍
- [Zip/Ruby](https://bitbucket.org/winebarrel/zip-ruby/overview)

### 日本語操作
- [ moji ](https://github.com/gimite/moji)

### Excel操作
- [ exlap.rb ](http://cup.sakura.ne.jp/exlap.htm)

### ブラウザ操作
- [ Watir ](http://watir.com/)
- [ Watir WebDriver ](http://watirwebdriver.com/)

### クリップボード
- [ clipboard ](https://github.com/janlelis/clipboard)

### 画像 & PDF & バーコード
- [ RGhost ](http://rghost.rubyforge.org/)
- [ RGhost Barcode ](http://rghost-barcode.rubyforge.org/)
- [ RGhost-Rails ](https://github.com/shairontoledo/RGhost-Rails)
*※Windowsだと画像が壊れるので[ RGhost-Rails patch ](http://qiita.com/items/428) 参照*

### exe化
- [ ocra ](https://github.com/larsch/ocra)

### エディタ
- [ EmEditor ](http://jp.emeditor.com/)
Rails 3.2 で .xml.builder 使ってXMLデータを返すときに、 Rails 3.2 で xml.builder 中の改行を削除して返したい

Rails 3.2 で次のように .xml.builder 使ってXMLデータを返すとき、

````ruby
render :layout => false, :formats => [:xml]
````

 XML中のタグ間の改行を空白を削除して返すにはどうすればいいんだろう？
.xml.builder の中には手を入れたくない。
[Air] Accelerometerから、回転角度に変換.


サンプル動画 [http://www.youtube.com/embed/IkPVwSv6rjE]


```actionscript3:AccelerometerConvertToRotation_Sample.as

/**
 * copyright (c) 2012 www.romatica.com
 * @auther itoz
 * 2012.2.17 17:31:03
 */
package 
{
    import flash.events.AccelerometerEvent;
    import flash.sensors.Accelerometer;
    import flash.events.Event;
    import flash.display.Sprite;

    /**
     * [Air] Accelerometerから、回転角度に変換.
     *
     * 【サンプル動画 】
     * @see http://www.youtube.com/watch?v=IkPVwSv6rjE
     *     
     */
    public class AccelerometerConvertToRotation_Sample extends Sprite
    {
        private var circle : Sprite;
        private var rollingX : Number = 0;
        private var rollingY : Number = 0;
        private const FACTOR : Number = 0.5;

        public function AccelerometerConvertToRotation_Sample()
        {
            addEventListener(Event.ADDED_TO_STAGE, onAdded);
        }

        private function onAdded(event : Event) : void
        {
            removeEventListener(Event.ADDED_TO_STAGE, onAdded);
            setCircle();
            setAccelerometer();
        }

        /**
         * 円を生成
         */
        private function setCircle() : void
        {
            circle = addChild(new Sprite()) as Sprite;
            circle.graphics.beginFill(0x00cc00);
            circle.graphics.drawCircle(0, 0, 64);
            circle.graphics.beginFill(0x0000cc);
            circle.graphics.drawCircle(50, 0, 10);
            circle.graphics.endFill();
            circle.x = stage.stageWidth / 2;
            circle.y = stage.stageHeight / 2;
        }

        /**
         * Accelerometerを生成
         */
        private function setAccelerometer() : Boolean
        {
            var accelerometer : Accelerometer;
            if (Accelerometer.isSupported) {
                accelerometer = new Accelerometer();
                if (!accelerometer.muted) {
                    accelerometer.setRequestedUpdateInterval(1000 / 30);
                    accelerometer.addEventListener(AccelerometerEvent.UPDATE, accelerometerUpdate);
                    return true;
                }
            }
            return false;
        }

        /**
         * Accelerometer アップデート
         */
        private function accelerometerUpdate(event : AccelerometerEvent) : void
        {
            // ----------------------------------
            // Accelerometerの傾きを 角度に変換
            // ----------------------------------
            rollingX = (event.accelerationX * FACTOR) + (rollingX * (1 - FACTOR));
            rollingY = (event.accelerationY * FACTOR) + (rollingY * (1 - FACTOR));
            var rad : Number = Math.atan2(rollingY, -rollingX);
            var angle : Number = rad * 180 / Math.PI;
            
            //----------------------------------
            //  円を回転
            //----------------------------------
            if (circle != null) circle.rotation = angle;
        }
    }
}
Linux上の相対パス表記を絶対パス表記に変換するPHPスクリプト

相対パスから正しい絶対パスへ変換するというのではなく、あくまで表記を変更するのみ。ユーザー指定のパスのファイルを読み込む際に、相対パスを許すと想定しないファイルを呼び出されたりする（ディレクトリトラバーサル攻撃）のでその対策用関数。

```example.php
function pathChange($file_path) {
    $file_path = str_replace(array("..", "./"), "", $file_path);
    $file_path = array_merge(array_diff(explode("/", $file_path), array("")));
    return "/" . implode("/", $file_path);
}
```

「..」や「./」の表記は削除し、「/」で分解の上、空になった要素を配列内から削除し、それを再度/で結合しなおして返すという処理。

実行例）
../../etc/passwd => /etc/passwd
./foo///bar/..hoge.php => /foo/bar/hoge.php

ただし、本当に存在するパスを生成する可能性がある（/etc/passwdとか）ので、利用する際には読み込むファイルパスを想定しているベースディレクトリと結合させたファイルパスにするとか工夫はいると思いますが。
Javaのステップ数を数える

Javaに限らず，C系の言語だと似たようなものかも．

コメントや空行などを除いて行を数える:

```
$ find . -name '*.java' -type f | xargs grep -Ev '^[[:space:]]*((/?\*.*/?)|(//.*))$' | wc -l
```

ブレイスやセミコロンだけの行を除くならこんな感じか:

```
$ find . -name '*.java' -type f | xargs grep -Ev '^[[:space:]]*((/?\*.*/?)|(//.*)|[{};][[:space:]]*)$' | wc -l
```
sed で元のファイルを書き換える

-i，--in-place オプションを使う．

```
$ cat a.txt
abc123

$ sed -i 's/123/XYZ/' a.txt

$ cat a.txt
abcXYZ
```

サフィックスを指定すると元のファイルのバックアップを作成した上で元のファイルを書き換える:

```
$ cat a.txt
abc123

$ sed --in-place=.old 's/123/XYZ/' a.txt

$ cat a.txt a.txt.old
abcXYZ
abc123
```
[Flash Pro] タイムラインのレイヤーをいい感じにする君.jsfl

私のとっておきのJSFL。
タイムラインの空のレイヤーを一括削除するのが主な目的ですが、補助機能としてレイヤーカラーを整えます。
レイヤーカラーは適当な色になることが多いので、綺麗なflaづくりに役立ちます。

```
//delete empty layers

var l = 0;
var timeline = fl.getDocumentDOM().getTimeline();

execDelete();

function execDelete() {
	var layersConut = timeline.layerCount;

	if(l >= layersConut || layersConut == 1) return;
	
	var currentLayer = timeline.layers[l];
	
	//skip when layer is folder
	if(currentLayer.layerType == "folder") next(true);
		
	//check all start frame on layer
	var frameArray = currentLayer.frames;
	for (i=0; i<frameArray.length; i++) {
	   if (i == frameArray[i].startFrame) {
	   		//check empty frame
		  	if(chkFrame(frameArray[i])) next(true);
	   }
	}
	
	//delete a empty layer
	fl.getDocumentDOM().getTimeline().deleteLayer(l);
	next(false);
}

/* return true when layer is not empty*/
function chkFrame(frame)
{
	var el = frame.elements;
	var lb = frame.labelType;
	var snd = frame.soundName ;
	var as = frame.actionScript;
	
    if( el != "" || lb != "none" || snd != "" ||  as != "") {
		return true;
	}else{
		return false;
	}
}



function next(b)
{
	if(b) l++;
	execDelete();
}



// coloring
var l = 0;var timeline = fl.getDocumentDOM().getTimeline();
var max = timeline.layerCount;

for(var i=0; i<max; i++)
{
	var currentLayer = timeline.layers[i];
	var color = 0xFF * (1 - i/max);
	var resultColor = 0x0;
	
	resultColor += color << 16;
	resultColor += color << 8;
	resultColor += color << 0;
	
	currentLayer.color = resultColor;
	
	switch(currentLayer.name.toLowerCase())
	{
		case "actions":
		case "action":
		case "as":
		case "script":
			currentLayer.color = 0x990000;
			break;
		case "label":
		case "labels":
			currentLayer.color = 0x3399FF;
			break;
	}
}

```
Air for Android スリープモード設定

```actionscript3:SleepSetting.as

import flash.desktop.NativeApplication;
import flash.desktop.SystemIdleMode;
//スリープしないモード
NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
//スリープするモード
NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.NORMAL;

```
```xml:******-app.xml
<manifestAdditions>
    <![CDATA[
    <manifest android:installLocation="auto">
    	<uses-permission android:name="android.permission.WAKE_LOCK" />
    	<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  </manifest>
  ]]>
</manifestAdditions>
```