2012年5月3日木曜日

windows環境で言語処理100本ノックをやってみる。

◆はじめに
言語処理100本ノックが面白そうなので、やろうとしてみた。
→ 1ヶ月前にデータ準備の段階で挫折。
なんとかこの山を超え、とりあえずは元となるデータを準備できました。

◆前提
pythonは導入済みであること。
だいぶ前にいれましたので、バージョンはPython 2.5.2でした。
それからCygwin入ってるとunixコマンド使えるんで答え合わせで捗ります。

◆準備
日本郵便の郵便番号データの全データ(KEN_ALL.CSV)をダウンロードしてくる。
http://www.post.japanpost.jp/zipcode/dl/readme.html

下記サイトで取得できるソースをエディタにコピペし、UTF-8で保存。
https://github.com/chokkan/nlp100/blob/master/prepare/address.py

郵便番号全データ及び、取得ソースを下記コマンドで、実行。
stdinに「KEN_ALL.CSV」を、そのアウトプットに「address.txt」を指定しました。
※はじめ単純に実行時パラメータとしてCSVを渡すも反応せずの状況で30分経過 orz

python address_utf8.py < KEN_ALL.CSV > address.txt

って、、、エラー発生。
【エラー内容】
Traceback (most recent call last):
File "address_utf8.py", line 7, in
s1 = unicode(''.join((row[6], row[7])))
UnicodeDecodeError: 'ascii' codec can't decode byte 0x96 in position 0: ordinal
not in range(128)

あーだこーだ悩みましたが、unicodeメソッドで読み込みファイルの文字コードを指定しないとだめっぽい。
っというわけで7,8行目、19行目のソース修正。

【修正前】
s1 = unicode(''.join((row[6], row[7])))
s2 = unicode(row[8])
・・・
print '\t'.join((s1, s2))

【修正後】
s1 = unicode(''.join((row[6], row[7])),'shift-jis')
s2 = unicode(row[8],'shift-jis')
・・・
print '\t'.join((s1, s2)).encode('shift-jis')

もう一回コマンド実施して、無事に作成されました。(∩´∀`)∩

python address_utf8.py < KEN_ALL.CSV > address.txt

とりあえずこれで1~10まで実施できる。
今日はおしまい。

【参考サイト】

[Python]Pythonと日本語表示と文字コード、unicode 、str 、utf-8 、shift-jis 、、
http://d.hatena.ne.jp/Cassiopeia/20070602/1180805345

日本語環境でのPython (for Python 2.3 or later)
http://www.python.jp/Zope/articles/japanese/Python4Japanese-2

UnicodeDecodeError/UnicodeEncodeErrorに悩まないPython 2.x プログラミング
http://d.hatena.ne.jp/atsuoishimoto/20110311/1299805971


2012年5月1日火曜日

db2のexplainが取得できない・・・。


db2の試用版Express-Cの9.7を主にExplainをしたいがために自宅PCにインストール。
インスタンスオーナ、常用ドメインユーザでExplainしようにもエラーばっかり。
とにかく常用ドメインユーザでExplainしてみたかったんです。
あきらめてから、気がついたら1年経過してました。
ちくしょー!

今回それをなんとか解消したので経緯などを。

【事前情報】

OS:windowsXP
ユーザ:インスタンスオーナ、常用windowsドメインユーザの2種類

【DB構成方法】

サンプルDB作成後、テスト用スキーマを生成。
インスタンスオーナ名のスキーマで、Explain.DDLを実行。
テスト用スキーマでも、Explain.DDLを実行。
常用windowsドメインユーザにDB2ADM権限を付与。

【実施したコマンド】

db2 connect to sample
db2 set current schema testschema
db2 set current explain mode explain
db2 -tf selectForExplain.sql
db2 set current explain mode no
db2exfmt -d sample -e testschema -g -# 0 -n %% -s %% -w -1 -o explainResult.log

【症状】

(1)インスタンスオーナではExplainコマンドは実行できるが、テスト用のスキーマに作ったExplain表からdb2exfmtで結果を取得しようとした場合、下記のメッセージが表示される。

・メッセージ
No Explain instances (plans) were found for database , source
pattern: %.% for explain table schema DB2.

(2)windowsのドメインユーザで「コマンド行ツール」->「コマンドウィンドウ」でプロンプトを立ち上げて、該当のDBにコネクト。その後Explainコマンドを実施すると、「SQL0219N」が発生し、Explain表ありませんと言われてしまう。

【原因】

(1)各スキーマに作成されたExplain_Instanceテーブルを確認した結果、インスタンスオーナ用スキーマにはExplain結果が入っているが、テスト用スキーマには全く結果が入っていないという状況だった。

(2)そもそも[ドメインユーザ.Explain_Instance]がないのが原因。ドメインユーザのスキーマもない状態なので当たり前。

【勘違いしてたこと】

db2 set current schema testschema のターゲットスキーマのExplain_InstanceにExplain結果が保存されると思っていたが、実はユーザ名スキーマのExplain_Instanceに結果が保存される。

だから、db2exfmtでスキーマをtestschemaとしてしまっていたり、ドメインユーザのExplainで[ドメインユーザ.Explain_Instance]がありませんと言われても、「???」な状態だった。
まぁ。。。マニュアル読めよって話です。

設定で変えられるのかな・・・?このあたりは未確認。

【解消方法】

(1)db2exfmtのスキーマ指定「-e testschema」を「-e [インスタンスオーナ名]」とした所、正常に結果が取得できた。

db2exfmt -d sample -e [インスタンスオーナ名] -g -# 0 -n %% -s %% -w -1 -o explainResult.log

(2)そもそもExplain表が存在しないエラーが発生していたので、改めてこのユーザでプロンプトを立ち上げ、Explain.DDLを実行した所、ドメインユーザ名のスキーマが作成され、Explain表が生成された。この後はExplainコマンドでエラーは発生しなくなり、下記コマンドで取得が可能になった。

db2exfmt -d sample -e [ドメインユーザ名] -g -# 0 -n %% -s %% -w -1 -o explainResult.log

【雑感】

なんだかな。
自分の知識不足を露呈していますが、
誰かしら助かるならいっかと( ´∀`)

【補足】

DB2使うたびにいちいちログオフして、いちいちインスタンスオーナにユーザを切り替えるのが面倒くさー。
という人のために常用ドメインで実行するコマンドを用意いたしました。
この一行を書いたテキストを.batファイルとして作成しておけばOKです。

runas /u:[インスタンスオーナ名] db2cw.bat


【参考】
Explain表を作成する DB2逆引き


2010年12月7日火曜日

DBスペシャリスト

DBスペシャリスト試験 始めました。

んで、早速「候補キー」の解釈でつまづく。

教科書的な定義はしっかり理解してて、使える自信もあるんですよ。

「行を一意に特定できる、属性の組み合わせ」でしょ。

余裕。

でもね、DBスペシャリスト試験過去問での回答になっとくがいかない。

平成21年度春期試験の午後Ⅰ 問2 設問1 (3)の回答がわからない。

この問題だと、候補キーが2つあって、それらのうち主キーに適切なのは?不適切なものとその理由は?

ということを問いているのですが、

不適切な方の候補キーが問題文の条件により、そもそも候補キーではない気がする。

なぜか?

この場合の候補キーは問題文の「一意」という記述から下記になります。

候補キー1 ⇒ 「部品番号」
候補キー2 ⇒ 「顧客仕様製品コード、顧客仕様製品名」

そして、問題文の条件から、候補キー2はnullで登録されることがありえるとのこと。

となりますと、、、

候補キー2がnullであるデータが2件以上登録された時点で、候補キーではなくなる。

ということが言えそうなので、候補キーは2つ存在しないという結論に至りました。

それとも、問題文に記述はないが「候補キー2がnullのデータは2件以上登録できませんよ」

ということを暗に醸していて、それを察知してねということなのでしょうか。

※nullデータが表に1行のみであれば候補キー2の一意性は保てるため。

あれ?もしそうだとするとこのシステムやばくね?

製品名が決まってない受注は先着1名様のみと。

「・・・仕様です」そんな言葉が頭をよぎります。

うーん。

なんにせよ、どう解釈すればいいのでしょうか。

おしえてエライ人。

正直、午後問題がずっとこんな調子かと思うと解ける自信がないです。

2010年10月29日金曜日

クラスに含まれるStaticフィールドの値を列挙してみる。

いつも忘れてしまう。
プリミティブ型の値範囲。
ちまちま書くのがめんどくさかったので、リフレクションを使って書いてみました。

再利用性はありません。あしからず。
でもtypeNames辺りに表示したいクラス名をいれてあげれば何でもいけちゃいます。

・・・ってかそろそろ値範囲覚えろよ。オレ。

package examples;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

public class ShowStaticField {

 /**
  * スタティックフィールドの値を表示します。
  * @param args
  */
 public static void main(String[] args) {
  //表示したいクラス名を列挙。
  //別に何のクラスでもOK。
  String[] typeNames= {
    "java.lang.Boolean",
    "java.lang.Character",
    "java.lang.Byte",
    "java.lang.Short",
    "java.lang.Integer",
    "java.lang.Long",
    "java.lang.Float",
    "java.lang.Double"    
  };
  
  for(int i=0 ; i < typeNames.length;i++ ){
   Class clazz;
   try{
    //列挙したクラスを取得。
    clazz = Class.forName(typeNames[i]);
    System.out.println("■"+clazz.getName()+"のStaticフィールド情報■");
    Field[] clazzFields = clazz.getFields();
    for(int j = 0 ; j < clazzFields.length ; j++ ){
     if(Modifier.isStatic(clazzFields[j].getModifiers())){
      System.out.println(clazzFields[j].getName()+":"+clazzFields[j].get(null));
     }
    }
   }catch(Exception e){
    e.printStackTrace();
   }
  }
  
 }
}



実行結果


■java.lang.BooleanのStaticフィールド情報■
TRUE:true
FALSE:false
TYPE:boolean


・(略)


2010年10月19日火曜日

itunes 10 日本語ジャンルに書き換わる問題を解消してみる。【for windows】

itunesがupdateされるといつも日本語ジャンルに書き換わってしまいます。
ほんと困るよね~。
っと言うわけで、義務的作業。
Localizable.stringsを書き換えて対応っと思ったのですが、、、
今回は何か様子が違いますね。

itunesのバージョン7くらいまでは、
Program Files ⇒ iTunes ⇒ iTunes.Resources ⇒ ja.lprojフォルダにある
Localizable.stringsのジャンル名をen.lprojフォルダの内容でコピペ保存でOKでしたが、
保存後に起動確認しようとしましたが、下記エラーが出て立ち上がりません。

【エラー内容】
iTunes cannot run because some of its required files are missing. Please reinstall iTuens.
(ファイルないから、もっかいインストールしてねという旨)

【症状】
Localizable.stringsを保存すると、保存後のファイルが文字化けする。
保存時に、既存の文字コード、改行コードは替えていない
なお、修正せずに上書き保存を行っただけでも起動が不可能になる。

【原因】
どうやら、「iTunes U」の箇所がおかしい模様。
バイナリエディタ(Stirling)で確認した所、iTunesとUの間はタダのスペースではなく、「A0 00」が入ってます。
※通常のスペースは「20」

って言うか至る所にこのコードがあるぞ。
バイナリエディタで置換しても、テキストエディタで置換しても不可能っすね・・・。

【解消手順】
下記サイトの、
「iTunesでジャンルを勝手に日本語に書き換えられないようにするスクリプト」が素敵。
http://www1.atwiki.jp/itunes/pages/26.html#id_a7a8d45d

今回は完全に他力本願。
私では太刀打ちできませんでした。
作った人に感謝。
すげぇなぁ。

2009年7月10日金曜日

【DB2】Identity列があっても可能なLOADコマンド

Identity列があっても可能なLOADコマンド

modified by identityoverride がミソ


db2 "load from [ファイル名] of [ファイルタイプ] modified by identityoverride [REPLACE|Insert] into [テーブル名] NONRECOVERABLE"


ファイル名は適当に決めてください。
ファイルタイプは、とりあえず良く使う、
 IXF  ・・・バイナリファイル
 DEL ・・・CSVファイル(デリミタの略?)
この辺を押さえておけばOKでしょ。

[REPLACE|INSERT]はどちらかを選択しましょう。
REPLACEは既存のレコードを消去し、LOADするデータでレコードを入れ替えます。
INSERTはレコードを追加します。

ちなみに、
NONRECOVERABLE は、
loadが失敗した場合でも、バックアップペンディング
(バックアップ取るまでテーブルロック)状態にならないようにするオプション。
指定すればロックはかからないが失敗すると結構悲惨なので注意。

んじゃ。

2009年4月14日火曜日

ポート番号587

本日はもうすっかりお馴染みのOB25P&Message Submissionで悪戦苦闘のお話を。

仕組みやら何やら詳しいことはこっちでドウゾ。

はまった経緯


最近web経由で会社のメールをつかってて、

まったく気がつかなかったのですが。

いつの間にか会社のメールサーバーにOB25Pが導入されていて、

自宅からメールがまったく送れないという事態に。

くそっと思いながらもwebでいいべっと、放置気味。

普段わしはMicrosoft Office Outlook2003を使っているのですが、

数日後にダチがOutlook Expressつかってて

まったくつながんないぜ今畜生と、わしにクレーム。

エラーメッセージは「0x800CCC90」「0x800CCC92」とか。


電話で何度か指示をしてたのですが、やっぱりつながらないとのこと。

わしのPCに入ってるOutlook Expressはダチと同じバージョンなので、

早速こっちでもやってみることに。

上記2つのメーラーはほぼ同じ設定項目なので、

同じ設定方法でいいかと思ってたのですが、

やっぱりダチと同じエラー。

しまいにゃ「0x800ccc67」なんかも出てきて、さっぱり。


んで色々いじってて判明。

・・・・・・・なんか設定方法微妙に違うぞ。こいつら。


以下設定方法。

わしの環境だけかもしれませんが何かの参考になれば、幸いです。


設定方法。



POPのポート:110
SMTPのポート:587

OB25PおなじみのSMTPポート587。
ココまでは一緒。

※基本的なIDやらpass、POP、SMTPのサーバーは各自よろしくです。

違うのはこの1点のみでした。

■■■Microsoft Office Outlook2003■■■


ツール → 電子メールアカウント → (設定するアカウントを選択)
→ 詳細設定 → 送信サーバータブ

ここで、送信サーバ(SMTP)は認証が必要にチェック

ちなみにPOP before SMTP認証の場合は、
メールを送信する前にPOP認証をしないとだめなので、
一番下のラジオボタンを選択してます。


■■■Outlook Express■■■


ツール → アカウント → (設定するアカウントのプロパティ)
→ サーバータブ の 送信メールサーバー

ここで、このサーバーは認証が必要のチェックを「はずす」


わしの環境ではこれでどちらのメーラーもすっきりしました。

2009年3月7日土曜日















































Apoさん。
最近やってなかったですね。
久々にやったので、出来たものをはりはり。
トランスフォームエディターの使い方は、、、すみません。
またの機会に。

2009年2月15日日曜日

新しい技!おぼえたー!

Apophysisにて新たなわざをおぼえました。

ほぼこちらのチュートリアルをもとに作成です。














ちょっぴり応用利かせて、冬なかんじでかいてみました。















やべー。
おもしれー!

2009年2月7日土曜日

test

test
public class AutomatonMain {

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
VectorField vf =new VectorField(20);

try{
while(true){
vf.showField();
vf.doRule();
Thread.sleep(500);
}
}catch(Exception e){
System.out.println("エラー発生!");
}
}

}

ソースコードテスト

ソースコードハイライト。
導入してみた。


import java.util.ArrayList;
import java.util.List;

public class VectorField {
private List field;

VectorField() {
this(10);
}

VectorField(int listSize) {
makeCellList(listSize);
}

public void showField() {
for (Object cell : field) {
System.out.print(cell.toString());
}
System.out.println();
}

public void makeCellList(int listSize) {
ArrayList field = new ArrayList();
for (int i = 0; i < listSize; i++) {
field.add(getCell());
}
setField(field);
}

public Integer getCell() {
if (Math.random() < 0.7) {
return new Integer(0);
} else {
return new Integer(1);
}
}

public void doRule() {
ArrayList newField = new ArrayList();
String s = "";
for (int i = 0; i < this.field.size(); i++) {
if (i == 0) {
s = this.field.get(this.field.size() - 1).toString()
+ this.field.get(i).toString()
+ this.field.get(i + 1).toString();
} else if (i == this.field.size() - 1) {
s = this.field.get(i - 1).toString()
+ this.field.get(this.field.size() - 1).toString()
+ this.field.get(0).toString();
} else {
s = this.field.get(i - 1).toString()
+ this.field.get(i).toString()
+ this.field.get(i + 1).toString();
}
newField.add(calcNewCell(s));
}
setField(newField);
}

public Integer calcNewCell(String s){
if("000".equals(s)){
return new Integer(0);
}else if("001".equals(s)){
return new Integer(0);
}else if("010".equals(s)){
return new Integer(0);
}else if("011".equals(s)){
return new Integer(1);
}else if("100".equals(s)){
return new Integer(1);
}else if("101".equals(s)){
return new Integer(1);
}else if("110".equals(s)){
return new Integer(0);
}else if("111".equals(s)){
return new Integer(1);
}else{
return new Integer(9);
}
}

public List getField() {
return field;
}

public void setField(List field) {
this.field = field;
}

}

ソースコードをそれっぽく。

@ITみたいに。
ソースコードに色を付けてそれっぽく見せたい。

せっかくgoogleのblogなんで、googleの機能を拝借しようじゃないかと。
今回はgoogle-code-prettifyを導入してみました。

早速ですが、導入方法。


google-code-prettifyにて、
prettify-8-Jan-2009.zip または、prettify-small-8-Jan-2009.zip をDLします。

※普段使っているブラウザに対応しているか、その辺を確認したほうがいいかも。
 一応 IE 6, Firefox 1.5 & 2, and Safari 2.0.4.でテスト済みらしいが、
 それ以外のブラウザはここで確認できます。
 リンク先のコードに色がついていれば、お使いのブラウザで表示できます。


解凍するとなんだかたくさんのファイルが。
google-code-prettifyのFAQによると、
言語を明確に区別するためらしい。
簡単な分類をかいておきまーす。


 lang-css.js …CSS 用ファイル
 lang-hs.js    …Haskell 用ファイル
 lang-lisp.js …Common Lisp, Emacs Lisp, Lisp, Scheme 用ファイル
 lang-lua.js …LUA 用ファイル
 lang-ml.js …OCaml, SML, F# その他似た様な言語
 lang-proto.js …Protocol Buffers 用ファイル
 lang-sql.js …SQL 用ファイル
 lang-vb.js …BASICチックな言語 用ファイル
 lang-wiki.js …Wiki page 用ファイル
 prettify.css …ハイライト色指定CSS
 prettify.js …google-code-prettifyメインjs


とりあえず自分は全部geocities(ジオシティーズ)にアップしました。

※(追記)geocitiesにアップするとなぜか1~2回は正常に表示できますが、
 その後、javascriptが動作しなくなってしまいました。何でだ・・・。
 ためしにgoogle-code-prettifyを使用したHTMLを
 geocitiesにアップしてみたところ正常に動作。
 どうやらblogerからgeocitiesにはアクセスできないってことか?
 ・・・・・うーむ。


自前のサーバーがあれば、
最低でもこの2ファイルのパスをblogerの「レイアウト」→「HTMLの編集」で、
<head>タグの中に含める。

<script src='[アップロード先パス]/prettify.js' type='text/javascript'/>
<link href='[アップロード先パス]/prettify.css' rel='stylesheet' type='text/css'/>

テンプレート中の<body>タグにonload='prettyPrint()'を追加する

※適宜以下のファイルも指定する。

<script src='[アップロード先パス]/lang-css.js' type='text/javascript'/>
<script src='[アップロード先パス]/lang-hs.js' type='text/javascript'/>
<script src='[アップロード先パス]/lang-lisp.js' type='text/javascript'/>
<script src='[アップロード先パス]/lang-lua.js' type='text/javascript'/>
<script src='[アップロード先パス]/lang-ml.js' type='text/javascript'/>
<script src='[アップロード先パス]/lang-proto.js' type='text/javascript'/>
<script src='[アップロード先パス]/lang-sql.js' type='text/javascript'/>
<script src='[アップロード先パス]/lang-wiki.js' type='text/javascript'/>
<script src='[アップロード先パス]/lang-vb.js' type='text/javascript'/>

※アップロードするサーバーがない場合はどうすれば・・・。
 っとおもったら、こちらのサイトにてgoogleのリポジトリから取得する方法が取れるみたい。
 詳しくはこちらのご説明をご覧ください。
 すんばらしい!マジでありがとうございます。
 
 べるかしき: Bloggerでシンタクス ハイライト


適用方法は、preタグでソースコードを囲み、クラス指定をするだけ。
<pre class='prettyprint'>
------ここにソースコードを記入する------
</pre>

もし、各言語を明確に区別するのであれば、
<pre class='prettyprint lang-*'>とすればいいらしい。
*を言語の種類で置き換えればOK。
種類の一覧なんかは、FAQを参照していただきたいです。




よのなかって便利。
自分で何もしなくても大抵あるよね。

2009年2月6日金曜日

HIDDENはFORM直後がステキ。

自分の所属プロジェクトでよく見かけていたのが、
HIDDENをFORMタグ終了直前に配置するという暗黙のルール。
今まで、深く考えずにこの定例にならっていたのですが、


コレ廃止。断固廃止を宣言します。


例えば、

<form>

・・・・すんごい重い処理・・・・
・・・・すんごい長い読込・・・・

</form>


な場合、FORMの閉じタグ直前にHIDDENをおいていると、
ページを読み込み中にユーザさんが操作してしまい、そのHIDDEN項目を使用したjavascriptでエラー。
ちなみにエラー内容はnullとか、オブジェクトじゃないとか、、、
そうね。ちまたでよく見かけるぬるぽさん。

解決策としては、
①HIDDENをFORMの開始タグ直後に配置する。
②ページを読み込むまで、操作できないようにする。
とかでしょうか。


②の判定はjavascriptで

if(document.readyState!=='complete'){
alert("読み込み中");
}

とかすればいいのかな。(未テストです。)
ってか、そもそも読込やら処理やらを見直せってはなし??(汗)

できる人が書いていたソースと思っていたのですが。
こんな落とし穴もあるんですね。

あーjavascript周りを強化しないとまずい・・・・。
最近いつもjavascriptで躓く。

2009年1月25日日曜日

LUSHで快適。

悩んでました。



冬 → 頭皮が乾燥 → かゆくてぼりぼり → 頭にフケいっぱい。



毎日毎日、風呂入ってもその日の夜にはフケだらけ。
毎年襲ってくるけど、まったくとめられなかったこの流れ。



そんな流れに終止符が打てた。


LUSH万歳!


店員さんに進められたシャンプーバー。


これが功を奏した。
ワァオ!うれしい

開封後はすんげぇ特有の下痢止め薬のにおいが漂いますが、
使った後のにおいはそれほどでもなく、
仕上がりもまぁまぁ。
それにそんなにおいが段々快感に。


ただ、これだけだとさすがに頭皮が痛むので、
コンディショナーのコンボ。

こちらは昔から良く使ってた、アメリカンクリーム


3日くらいは前と変わらなかったんだけれども、
一週間後くらいから効果が出だした。


夜になってもまじ頭かゆくねぇ!!
少なくとも仕事中に頭がかゆくて、もぞもぞすることがまったくなくなった!


ちなみに、、、、


シャンプーバーは一ヶ月くらい持ちます。
アメクリも500ml買っとけば、3ヶ月はいける。
(個人差はあるだろうけど)


そのほかにもいろんな香りを醸し出してるさまざまなグッズ。
初めは特別な日限定で色々買ってたんだけど。

もうなんだろ、、
フツウノシャンプージャ マンゾクデキナイ。わたし。

若干中毒気味。(´д`)


その特有の香り、自然な原料を使用しているため、

女性に人気が高めのLUSHさん。


これからもお世話になります。

2009年1月23日金曜日

カラコン

ランダムバッチを何だかんだいじってたら
からーこんたくとっぽいのができた。


















エディターではこんな感じ。





















んで、緑色の三角を少し変更したらまた違う風景に。










すんげぇなぁ。これ。
まさに無限。

2009年1月21日水曜日

バッチでフォルダ作成。

日付を使用したフォルダを作成する。

仕事でフォルダをいちいち作成するのがめんどくなっちった。

っというわけで。

バッチさん、あなたの出番です。


■win2000の場合
rem 作業フォルダ作成バッチ
@echo off
setlocal
set nowdate=%DATE:/=%
mkdir %nowdate:~2%作業
endlocal
echo on
pause

■winXPの場合
rem 作業フォルダ作成バッチ
@echo off
setlocal
set nowdate=%DATE:/=%
mkdir %nowdate%作業
endlocal
echo on
pause


%DATE% → 曜日 yyyy/mm/dd
    曜日と日付を取得する。

%DATE:/=% → 曜日 yyyymmdd
    スラッシュを空文字に置換する。

%DATE:/=hoge% → 曜日 yyyyhogemmhogedd
    スラッシュをhogeに置換する。

%DATE:~2% → yyyy/mm/dd 
    二文字目から表示する。

羽!!(Apophysisにて)

Apophysisの使い方が分かっちゃうサイト。
英語だけど、、、まぁ、パラメータだけまねすれば
こんなのがかけちゃいます。

Transform Editorの使い方がつかめてきたので、
そのうちまとめて紹介しまっす。























2009年1月15日木曜日

タイトルは、、、「彩脳」

またしてもApophysisで書き書き。


TransForm Editorの使い方がちょっぴりわかりました。


とはいえ、まだぐりぐり動かしているだけですが、、、

















本日の参考サイト

picasaからBloggerに写真UP



結婚式のソープカットの写真。
picasaからUPしてみた。
Posted by Picasa

Apophysisでアーティスト気分

フラクタクルを使ったフリーウェアの紹介です。


イマジネーションじゃなくて、数学で絵を描く!!


人物なんかは厳しいが、自然に存在する形なんかを再現できるのがすげ。


才能無くてもある程度かけるようになる!


さぁさぁ・・・・。ダウンロードは以下のサイトで。


Apophysis


デザイン例なんかはここ。はんぱねぇ。


2.08 beta版が高機能でGUIも使いやすいです。


ちなみに。。。。。


ちょっとした短時間で、こーんな絵をかけました。