ライセンス基礎

なんとなく知ってるけど、なんとなくでは地雷踏み抜きそうな
今のうちにまとめときます。
間違いがありましたらご指摘ください

コピーライト

copyright、訳すと”著作権”です。
作品を作った際、著作権は生まれ、作者の死後50年までは著作権が生きる。
何も宣言しなかった場合、ベルヌ条約に引っかかり、これに当たる。
ただ、習慣や抑止力として記述してる模様。

※例外として著作権を無視できるケースが有る。

コピーレフト

著作権は保持したまま、だいたいコピーライトの反対。
利用・再配布・改変・商用が可能
コピー・再配布の際にも制限が無いようにする必要がある。
 → ソフトウェアの場合、ソースコードを公開する必要。
著作者の明記が必要。

GPL

コピーレフトを元に、
・無保証
・ソースコードを公開する義務
・GPLライセンスを含む物を使用した場合、その制作物もGPLライセンスで配布しなければならない。
 → ライブラリやモジュールの一部でもGPLライセンスが含まれていると、ソフトウェア全体をGPLライセンスとして扱う必要がある
3つ目のお陰でフリーソフトであり続けることのできるライセンス

LGPL

GPLをライブラリ、モジュール単位にしたもの。
リバースエンジニアリングを許可する必要がある。
GPLとLGPは矛盾するため混在できない。

BSD

商用利用、配布、改変なんでもあり
ただし著作権表示とライセンスの全文を掲載する必要がある

旧BSDライセンスと修正BSDライセンスがあるため、BSDライセンスを利用する際は気をつけること。
旧BSDライセンス:初期開発者を表示すること
修正BSDライセンス:初期開発者を表示する必要が無い

GPLとBSDは両立できない

MIT

修正BSDライセンスと同じ。

広告

【MySQL】基本コマンド

### データベースの操作 ###
# データベースを作る
create database hoge_db;

# データベース一覧を表示
show databases;

# 使用するデータベースを指定
use hoge_db;

# データベースの削除
drop database hoge_db;


### テーブルの操作 ###
# テーブルの作成
create table users (
	id int not null auto_increment primary key,
	name varchar(255),
	email varchar(255) unique,
	password char(32),
	score double,
	sex enum('male', 'female'),
	memo text,
	created datetime,
	key score (score)
);
##テーブルの型##
#	数値
#	  int		整数値
#	  double	浮動小数点
#	文字列
#	  char		固定長
#	  varchar	可変長
#	  text		それ以上
#	日付
#	  date		日付のみ
#	  datetime	日付と時刻両方
#	それ以外
#	  enum		列挙型、予め選択肢が決まっているもの
##テーブルのオプション##
#	入力を必須
#	  not null
#	デフォルト値
#	  default 'male'
#	自動連番
#	  auto_increment
#	索引:インデックス
#	 検索をする時に動作が早くなる。
#	 ただし、挿入し過ぎるとデータを追加するたびに
#	 索引が作りなおされるため動作が遅くなる
#	  主キー
#	   primary key
#	   テーブルの中に一つしか作れない
#	    基本idにつける
#	  キー
#	   key score (score)
#	   いくつでもつけられる
#	  ユニークキー
#	   unique
#	   テーブルの中に重複した値が入ってきた時に弾いてくれる
#	   emailなどによく使う
#	   

# テーブルの削除
drop table users;

# テーブルの構造の確認
desc users;
## レコードの操作 ##
# レコードの挿入
insert into users(name, email, password, score, memo, created) 
	values('name', 'email@mail.com', 'xxx', 5.5, 'memotext', '2012-06-12 11:00:00');

# レコードの表示
#	全てのレコードを表示
select * from users;
#	レコード単位で表示(セミコロンは不要)
select * from users \G
#	指定したフィールドを表示
select name,email from users;
##条件付きで指定
# ex. scoreが5.0以上
select * from users where score >= 5.0;
# ex. score5.5以外( != でも可能
select * from users where score  5.5;
# ex. 日付での指定 (6/1以降
select * from users where created > '2012-06-01 11:00:00';
# ex. あいまいな検索( %@ を使用、*の様なもの
select * from users where email like '%@hoge.com';
# ex. あいまいな検索、文字数指定 ( _ 1つにつき1文字
select * from users where email like '%@hoge.___';
# ex. 指定した数値の間を取得、5〜8
select * from users where score between 5.0 and 8.0;
# ex. 指定した値のみを表示
select * from users where team in ('red', 'yellow');
# ex. 複数の条件を組み合わせる
select * from users where score >= 4.0 and team = 'blue';

# 一般的にはデータベースを作った後
#  作業用ユーザーを作り、そこで操作する。
grant all on hoge_db.* to dbuser@localhost identified by 'PASSWORD';
# grant all on 許可を与えなさい
# hoge_db.* 「.*」でhoge_db以下の全てのテーブルを指定
# dbuser@localhost dbuserというユーザーに権限を与える
# identified by '' パスワードを入力する

【CSS】animation基礎

今までの記事にカテゴリをつけた。
タグとの違いがいまいち分からないけどsectionとchapterぐらいの認識

今まで見て見ぬふりをしてきたanimationを弄る(使う機会なかったしね。

/* ショートハンド */
/* 順番を変えると動かなくなる */
animation: 5s ease -2s infinite normal forwards running draw3;

animation-duration: 5s;
animation-timing-function: ease;
animation-delay: -2s;
animation-iteration-count: infinite;
animation-direction:alternate;
animation-fill-mode: forwards;
animation-play-state: running;
animation-name: draw;

@keyframes draw {
	0% {width: 50px; height: 50px; background-color: aqua;}
	100% {width: 200px; height: 50px; background-color: blue;}
}

参考: http://www.htmq.com/css3/animation-direction.shtml
http://www.hcn.zaq.ne.jp/___/WEB/css-animations-ja.html
http://unformedbuilding.com/articles/learn-about-css-animation/

animation-duration: 5s;

アニメーションを再生させる時間

animation-timing-function: ease;

アニメーションのタイミング・進行割合を指定する
linear: 一定の速度で再生
ease: 開始と完了を滑らかに。
ease-in: 開始のみ滑らかに
ease-out: 終了のみ滑らかに
ease-in-out: easeより素直に開始と完了を滑らかに
cubic-bezier(n, n, n, n): ベジェ曲線がなんとか、使わない

animation-delay: -2s;

アニメーションの開始時間を変更。
今回だとdirectionをnoneにして-7にすると同じタイミングで開始される。(一周する

animation-iteration-count: infinite;

アニメーションの再生回数
inifiniteだと無限に。
数値も指定可能。

animation-direction:alternate;

アニメーションを交互に再生させるか。
normal: アニメーション終了時に開始地点に戻る
alternate: アニメーション終了時に終了地点から開始地点へ再生する

animation-fill-mode: forwards;

アニメーション再生前後のスタイルを指定
none: アニメーション再生後、keyframes0%,100%の値を適用しない
forwards: アニメーション終了後、keyframes100%の値を適用
backwards: アニメーションが適用されたら(?)即座に0%の値を適用
both: forwardsとbackwardsを両方適用する。

animation-play-state: running;

アニメーションの一時停止の指定。
running: 通常通り再生
paused: 一時停止

animation-name: draw;

アニメーション名(@keyframes)の指定をする。

【Unity】GUI.Color

初Unity記事。
最近始めました。主にJavascript&Webから離れたかったので。まだまだ好きですよ?

とりあえずUnityはC#で行きます

GUI.Colorについて。

void OnGUI(){
		// 中央に置く。
		if(GUI.Button(new Rect (Screen.width / 2 - 50, Screen.height /2 -20, 100, 20), "center")) {
			Debug.Log ("center");
		}

		// デフォルトカラー
		if (GUI.Button (new Rect (Screen.width / 2 - 105, Screen.height -30, 100, 20), "test")) {
			Debug.Log ("test");
		}

		// 黄色に
		GUI.color = Color.yellow;
		if (GUI.Button (new Rect (Screen.width / 2 + 5, Screen.height -30, 100, 20), "test")) {
			Debug.Log ("test");
		}
	
		// 戻す。
		//	デフォルトカラーは白らしい。ちょっと探して見つからなかったので適当にやったら戻った。なんかあるかもしれない。
		GUI.color = Color.white;
		if (GUI.Button (new Rect (Screen.width / 2 + 110, Screen.height -30, 100, 20), "test")) {
			Debug.Log ("test");
		}
	}
}

Unitygui

【Node】mongoose-auto-incrementの使用

mongoで連番を使うmodule

var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var autoIncrement = require("mongoose-auto-increment");

var db = mongoose.connect("mongodb://localhost/testdb", function(err){
	if(err){console.log(err);}
});
autoIncrement.initialize(db);

var testSchema = new Schema({
	author: { type: Schema.Types.ObjectId, ref: 'Author' },
	name: String,
	date: Date
});
testSchema.pre("save", function(next){
	this.date = new Date();
	next();
});

testSchema.plugin(autoIncrement.plugin, 'Test');
var Test = mongoose.model("Test", testSchema);;

だいたいこんな感じに。 _idの上位4バイトがTimeStampになっているらしいけど使わないので。

{ "_id" : 0, "date" : ISODate("2014-07-08T08:31:11.509Z"), "id" : "hoge",   "_id" : ObjectId("53bbac4f3a506a3f170c5475"), "__v" : 0 }

【Express】REST

「RESTfulな*」とか書けばいいのだろうか、知らない。

method-overrideを使えば良いらしいので使う.


var bodyParser = require('body-parser');
var connect = require('connect');
var methodOverride = require('method-override');

// body-parserを上に。
app.use(bodyParser.urlencoded())
app.use(methodOverride(function(req, res){
  if (req.body && typeof req.body === 'object' && '_method' in req.body) {
    // look in urlencoded POST bodies and delete it
    var method = req.body._method
    delete req.body._method
    return method
  }
}));

// あとは適当に、req.bodyで取得可
app.get("/hoge", ~
app.post("/fuga", ~

app.put("/piyo", function(req, res){
	res.send(req.body);
});

app.delete("/hogehoge", ~