2013年3月7日木曜日

さらにサイトの引越のおしらせ 

さらにサイトの引越.

http://dev-hybrid-works.blogspot.jp

2012年1月3日火曜日

引越のお知らせ

引越しました.ふたたびりんごの種へ.

りんごの種2
http://ringoseed2.blogspot.com/

2010年12月31日金曜日

ふりかえってみると

ふりかえってみると今年もいろいろあった年だった.


  • 修論発表
  • 就職
  • 勉強会での発表
  • いい椅子を手に入れたこと
  • 仲間とのiPhone Programmingの勉強

他にもいろいろあったと思う.
感想としては充実はしていたが,少し疲れたかな.
そして,時間がなかった関係もあったけど,色々な意味でぎりぎりすぎた気がした.

今年は来年の活動にはとても重要であった1年だったと思う.

いろいろなチャンスをくれた方,助言をくれた方など多くの人に感謝したい.
来年はもっとがんばりますので,よろしくお願いします.

残念だったことを書こうとおもったが,それについては来年の目標としてがんばろうと思う.
それではよいお年を.

2010年12月26日日曜日

とりあえず,Smalltalk使いたい人へ その2

前回Smalltalkのチュートリアルの資料について紹介しましたが,前回の改訂版?を出しましたので(出したのは11月),ご紹介

第26回Smalltalk勉強会
http://www.smalltalk-users.jp/Home/gao-zhi/dai26kaismalltalkbenkyoukai
当日の資料です

かってに配布しちゃっても構いません.
Keynoteで作成したので,Keynoteが欲しい方がいらっしゃいましたら,ご連絡を.
もちろん無料でさしげます(←あたりまえw).

とりあえず,Smalltalk使いたい人へ - トウヨウリンゴ

"もし高校野球の女子マネージャーがドラッカーの『マネジメント』を読んだら"を読んでみた

"もし高校野球の女子マネージャーがドラッカーの『マネジメント』を読んだら"を読んでみました.

面白いと思いました.
マネジメントを分かりやすく,そして様々なものに応用がきくことが具体的にわかります.

アイディアや目標に対する達成させていくプロセス,そして成果に結びつける方法を考えることの重要性が伝わってきます.

このブログを読んでいる人はお分かりの通り私は文章がうまくないので,本の感想もうまく伝えれていない気がしますが,
一度読んでみるといい本だとは思います.

何かを成し遂げたいと思っている人にはおすすめです.
私も少し考えが変わりました.

2010年11月24日水曜日

iOSのベータ版から公開版にアップデートする方法

iOSのベータ版から公開版にアップデートする方法のご紹介.
iPhone, iPadにはDFU (Device Firmware Upgrade) モード*1 というのがあります.
これを利用すると公開版iOSにアップデートできます.

  1. iPhone, iPad touchまたはiPadをパソコンに接続
  2. iPhone, iPad touchまたはiPadの電源を切る
  3. 電源ボタンとホームボタンを10秒間同時押しする
  4. 電源ボタンだけ放し,ホームボタンはパソコンがUSBデバイスを認識するまで(約10秒)押し続ける

iTunesから復元を行なうと,公開版iOSがダウンロードされ,インストールされます.

ちなみに私のiPadは,この方法でiOS 4.2.1にしております.



*1 DFU (Device Firmware Upgrade) モードは,iPhone等のファームウェアのバージョン関係なく,復元可能にする

2010年10月31日日曜日

とりあえず,Smalltalk使いたい人へ

本当は本を購入してきちんと勉強してもらいたいけど,とりあえず味見したい人のために,以前作った資料をどうぞ.

http://docs.google.com/viewer?a=v&pid=sites&srcid=c21hbGx0YWxrLXVzZXJzLmpwfGhvbWV8Z3g6MTgyYWZkMmY3NjVhNmRlMg

第24回Smalltalk勉強会(roppongi.st)
http://sites.google.com/a/smalltalk-users.jp/home/Home/gao-zhi/dai24kaismalltalkbenkyoukai

はやくチュートリアルを完成させたい.

2010年9月26日日曜日

iOS 4.2 iPadで3G回線を利用する方法

iOS 4.2 iPadをインストールすると「PDP認証に失敗しました」と表示されて3G回線が利用できなくなる.通常はiTunesに接続をして同期を行えば改善されるのだが,Beta OSだとダメのようです.
せっかくの3G回線が使えなくなってしまうのは非常にもったいないので、調べて見たところ解決方法がありました.

(以下の内容を行い,何らかの問題が発生しても当方は責任を一切責任を負いません).
以下のサイトでAPNプロファイルを作成します.

http://www.unlockit.co.nz/

1. サイトにアクセスしたらContinueを選択
2. Custom APNを選択
3.
APN: sbm
Username: data
Password: softbank
を入力.
(Carrierは入力しなくても大丈夫です)
4. CreateProfileを選択してプロファイルをインストールします
5. インストール後,3G回線が接続できない場合は再起動をすると接続ができます

ということで3G接続ができるiPadを持って,外で朝ごはんを食べながらこの記事を書いています.





2010年9月20日月曜日

[Command] rsync

 更新されたファイルのみバックアップをするツールとしてrsyncがありますが,Mac版のrsyncには-Eというオプションがある.これは,リソースフォークスもコピーするオプションなので,覚えておくといい.

2010年9月16日木曜日

MacPorts 1.9.1

MacPortsがいつの間にか1.9.1になっていたので,アップデート.

MacPortsを使っている人は以下のコマンドで更新できます.
sudo port selfupdate


アップデートされたパッケージを更新
sudo port upgrade outdated 

2010年9月4日土曜日

[Objective-C] リファレンスカウンタとの戦い

以前かいたObjective-Cのリファレンスカウンタについて,再び考える.

[Objective-C] 詳解 Objective-C 2.0 リファレンスカウンタ 不明なところ - トウヨウリンゴ
http://newringo.blogspot.com/2010/05/objective-c-objective-c-20.html

コードはこちら.

#import <Foundation/Foundation.h>
#import <stdio.h>

int main(void)
{
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
  NSObject *obj = [[NSObject alloc] init];
  printf("init: %d\n",[obj retainCount]);
  [obj retain];
  printf("retain: %d\n",[obj retainCount]);
  [obj retain];
  printf("retain: %d\n",[obj retainCount]);

  [obj release];
  printf("release: %d\n",[obj retainCount]);
  [obj release];
  printf("release: %d\n",[obj retainCount]);
  [obj release];
  /* 実行するとエラーになるはずなのだが・・・ */
  printf("release: %d\n",[obj retainCount]); 

  [pool drain];

  return 0;
}

そして,今日わかったのは,詳解 Objective-C 2.0と同じ結果を得るためには,以下のコンパイルをすればよい.

gcc -framework Foundation -m32 reference.m

結果
init: 1
retain: 2
retain: 3
release: 2
release: 1
objc[2758]: FREED(id): message retainCount sent to freed object=0x103f60
Illegal instruction

ただ,このオプションで本通りになるというのは,なっとくいかない.

-m32のオプションなしの場合

結果
init: 1
retain: 2
retain: 3
release: 2
release: 1
release: 1

64bit用では,同様の結果が得られないのは,なぜか.
さっぱりだ.

2010年9月1日水曜日

プロセスを起動しているユーザとプロセス数の確認

プロセスを起動しているユーザとプロセス数の確認をするため,以下のものをかいてみた.

$ ps ax | awk '{ print $1 }' | sort -n | uniq -c | awk '{ print $2,$1}'

psコマンドでプロセス確認,awkで1列目だけを取り出し,ソート.
そのあと,重複行を削除し(重複回数を表示),awkで重複回数とユーザ名を交換して表示する.


2010年8月29日日曜日

プログラムの実行ログの確認方法

Linuxでプログラムの実行ログの確認する方法は以下のようにすればよい.

$ tail -f /var/log/messages

/var/log/mesagesも重要だけど,個人的には確認する際の,tailコマンドのオプションfの方が重要だったりする.

2010年8月26日木曜日

[Smalltalk] GLASSを起動してみようとしたが,失敗.

GLASSを起動してみようとしたが,失敗.
せっかくサーバを新調したのに,使えないので,ショック.

前回,GLASSをinstallGemstone2.4-Linux.shを使ってインストールしたのだが,Seasideが動作してくれない.Smalltalkのことなのに,すぐに解決できない.情けないorz

installGemstone2.4-Linux.sh入れただけでは,Seasideが動かないのか,きちんとApacheとの連携をしないといけないのか,それとも「ひよっこはVM版を使いなさい!」っということなのか.

失敗したのをメモしようと思う.
書き出してみると,何かわかるかもしれない.

以下の内容を.bashrcに書き込む.
source /opt/gemstone/product/seaside/defSeaside

netldiプロセスを起動し,Gemstoneを起動するために,以下のコマンドを実行.
startnet
startGemstone

以下のコマンドで,Seasideを実行.
startSeaside_Hyper 50081

そして以下のエラー
_____________________________________________________________________________
|                             Configuration Files                             |
|                                                                             |
| System File: /opt/gemstone/GemStone64Bit2.4.4.1-x86_64.Linux/seaside/data/system.conf
|                                                                             |
| Executable File: /opt/gemstone/GemStone64Bit2.4.4.1-x86_64.Linux/seaside/data/gem.conf
|_____________________________________________________________________________|
Using GEM_TEMPOBJ_CACHE_SIZE 50000 from -T command line option
 _____________________________________________________________________________
|               Gem Configuration Options for process id 15795                |
|_____________________________________________________________________________|

DUMP_OPTIONS = TRUE;
GEM_GCI_LOG_ENABLED = FALSE;
GEM_FREE_FRAME_CACHE_SIZE = -1;
GEM_FREE_FRAME_LIMIT = -1;
GEM_HALT_ON_ERROR = 0;
GEM_IO_LIMIT = 5000;
GEM_KEEP_MIN_SOFTREFS = 0;
GEM_MAX_SMALLTALK_STACK_DEPTH = 1000;
GEM_PRIVATE_PAGE_CACHE_KB = 1000;
GEM_PGSVR_FREE_FRAME_CACHE_SIZE = -1;
GEM_PGSVR_FREE_FRAME_LIMIT = -1;
GEM_PGSVR_UPDATE_CACHE_ON_READ = FALSE;
GEM_RPCGCI_TIMEOUT = 0;
GEM_SOFTREF_CLEANUP_PERCENT_MEM = 50;
GEM_TEMPOBJ_AGGRESSIVE_STUBBING = TRUE;
GEM_TEMPOBJ_CACHE_SIZE = 50000;
GEM_TEMPOBJ_INITIAL_SIZE not used on this platform
GEM_TEMPOBJ_MESPACE_SIZE = 0;
GEM_TEMPOBJ_OOPMAP_SIZE = 0;
GEM_TEMPOBJ_POMGEN_SIZE = 0;
GEM_TEMPOBJ_POMGEN_PRUNE_ON_VOTE = 50;
GEM_TEMPOBJ_POMGEN_SCAVENGE_INTERVAL = 1800;
LOG_WARNINGS = TRUE;
SHR_NUM_FREE_FRAME_SERVERS = 1;
SHR_PAGE_CACHE_NUM_SHARED_COUNTERS = 1900;
SHR_PAGE_CACHE_SIZE_KB = 500000;
SHR_PAGE_CACHE_NUM_PROCS = 1017;
SHR_TARGET_FREE_FRAME_COUNT = -1;
(vmGc spaceSizes: eden init 2000K max 9368K , survivor init 400K max 1568K,
 vmGc    old max 37496K, code max 10000K, perm max 5000K, pom 10 * 4168K = 41680K,
 vmGc    remSet 1008K, meSpace max 47800K oopMapSize 262144 )
 _____________________________________________________________________________
|             GemStone/S64 Object-Oriented Data Management System             |
|               Copyright (C) GemStone Systems, Inc. 1986-2010                |
|                            All rights reserved.                             |
|     covered by Patent Number 6,567,905 Generational Garbage Collector.      |
+-----------------------------------------------------------------------------+
|    PROGRAM: topaz, Linear GemStone Interface (Linked Session)               |
|    VERSION: 2.4.4.1, Tue Jul 13 15:19:49 2010                               |
|      BUILD: gss64_2_4_4_x_branch-23813                                      |
|  BUILT FOR: x86-64 (Linux)                                                  |
|       MODE: 64 bit                                                          |
| RUNNING ON: 6-CPU localhost x86_64 (Linux 2.6.18-194.11.1.el5 #1 SMP Tue Aug|
| 10 19:05:06 EDT 2010) 7480MB                                                |
| PROCESS ID: 15795     DATE: 2010年08月26日 06時38分42秒 JST           |
|   USER IDS: REAL=ringo (500) EFFECTIVE=ringo (500)                          |
|   DATEFORMAT: %Y年%m月%d日 %H時%M分%S秒                               |
|_____________________________________________________________________________|
topaz> topaz> topaz> topaz> topaz> topaz> topaz> topaz> [Info]: LNK client/gem GCI levels = 844/844
[Info]: User ID: DataCurator
[Info]: Repository: seaside
[Info]: Session ID: 1
[Info]: GCI Client Host: 
[Info]: Page server PID: -1
[Info]: Login Time: 2010年08月26日 06時38分42秒.198 JST
[2010年08月26日 06時38分43秒.095 JST] gci login: currSession 1 rpc gem processId -1
successful login
topaz 1> topaz 1> [268 sz:0 cls: 68097 Boolean] true
topaz 1> topaz 1> GemStone Smalltalk Compiler Errors:
   | service server site |
   true "enable for remote breakpoints and profiling"
     ifTrue: [
       GemToGemAnnouncement installStaticHandler.
       Exception
         installStaticException:
           [:ex :cat :num :args | 
             BreakpointNotification signal.
             "needed to avoid infinite loop when resuming from a breakpoint"
             ex _incrementBreakpointsToIgnore. ]
         category: GemStoneError
         number: 6005
         subtype: nil.
      System commitTransaction ifFalse: [ nil error: 'Could not commit for GemToGemSignaling' ]].
   
   System transactionMode: #manualBegin.
   
   Exception 
     installStaticException: 
       [:ex :cat :num :args |
         "Run the abort in a lowPriority process, since we must acquire the
          transactionMutex."
         [
           SeasidePlatformSupport transactionMutex 
 *         ^1                                                         *******
             critical: [ 
               SeasidePlatformSupport doAbortTransaction ].
           System enableSignaledAbortError.
         ] forkAt: Processor lowestPriority.
       ]
     category: GemStoneError
     number: 6009
     subtype: nil.
   System enableSignaledAbortError.
   "This thread is needed to handle the SigAbort exception, when the primary
    thread is blocked on an accept. Assuming default 60 second 
    STN_GEM_ABORT_TIMEOUT, wake up at 30 second intervals."
   [ 
     [ true ] whileTrue: [ (Delay forSeconds: 30) wait ].
   ] forkAt: Processor lowestPriority.
   
   
   service := SeasideHTTPService onPort: 50081 acceptInForeground: true multiThreading: false.
 *            ^2                                                                               
   GsFile gciLogServer: 'Hyper Server started on port ', 50081 printString.
   service start.
   "does not return, unless there's an error"

1: [1031] undefined symbol
2: [1031] undefined symbol

Now executing the following command saved from "iferr 1":
   where
Stack is not active
topaz 1> [268 sz:0 cls: 68097 Boolean] true
topaz 1> 


もし,分かる人がいれば,教えていただけるとうれしいです.

2010年8月24日火曜日

Windows 7を購入してみました

いろいろなソフトウェアなどの検証のために,Windows 7を購入してみました.


インストールもXPより楽になっています.また,Vistaのようにログインが遅くありません.

言いたいことはそれだけです.はい.


2010年8月21日土曜日

[Smalltalk] GemStone(GLASS)をインストールしてみた

サーバを新設したので,GemStone(GLASS)をインストールしてみました.

GemStoneは,OODBと説明されるのですが,OODBというより多人数で使えるSmalltalkの処理系の1つだととらえるとしっくりきます.

インストールしたのは,Cent OS 5.5.
GemStoneは64bit環境で動作するため,インストールする際にはご注意を.

http://seaside.gemstone.com/downloads.html よりinstallGemstone.shをダウンロードして,実行する.
このとき,シェルを実行する際は通常ユーザで行ないましょう.

あとは,サーバにインストールして外部に公開する人は,ファイアウォールの設定を変えておきましょう.

GLASS (GemStone Seaside)
http://seaside.gemstone.com/about.html

ちなみに,公式サイトではVMWareのイメージも配布されているので,すぐに使いたい人はそちらでお試しすることができます.

2010年8月5日木曜日

[Command] script

ターミナル入出力をログとして保存するには,scriptを使いましょう.

任意のディレクトリに移動して,以下のコマンドを入力します.
$ script test.log

ログを終了させるには,
$ exit
を入力します.

2010年7月31日土曜日

[Squeak] ボゴソート?

同僚にボゴソートというのいうソート?があるのを聞いたので,作ってみた.
説明を受けた通りに実装したみた.

合っているのかよくわからない・・・.
最悪計算量,無限大ってどうなんでしょうね.

Transcript clear.
x := 10.
box := Array new:x.
1 to:x do:[:v | box at:v put: (1 to: 100) atRandom].
box do:[:v |Transcript show:v; show:Character space. ].
Transcript cr.
c := 1.
counter := 1.
[box size = counter] whileFalse:[
  counter := 1.
  box := box shuffle.
  2 to: box size do:[:i | 
    ((box at: i -1) < (box at: i) )
         ifTrue:[ counter := counter + 1]
  ].
 c := c + 1.
].

box do:[:v |Transcript show:v; show:Character space. ].
Transcript cr;show:'loop counter='; show:c; cr.

ソートとよべるのか? これは,奇跡を待つだけのソートだと思う.

2010年7月26日月曜日

[Smalltalk] Smalltalkの虎の巻

sumimさんがSmalltalkのチートシートを書かれたようです.
個人的には,読む価値がかなりある記事だと思います.

話題の Big Scripting Languages チートシートの Smalltalk の空欄を埋めてみた - Smalltalkのtは小文字です

http://d.hatena.ne.jp/sumim/20100726/p1
http://d.hatena.ne.jp/sumim/20100727/p1

最初見たとき,ちょっと感動しちゃった.

タイトルを虎の巻にしたのは,Eclipseの日本語ローカライズが「チートシート」を「虎の巻」と訳していたからw

[Squeak][Objective-C] へっぽこSqueak SmalltalkユーザによるSqueak Smalltalkで考えるObjective-C その1

私はinputはしてもoutputをあまりしてこなかったので,文章を書くのが下手.
未だに知識がしっかりつかないのは,outputがきちんとできないため.

ということで,需要があるかわかりませんが,へっぽこSqueak SmalltalkユーザによるSqueak Smalltalkで考えるObjective-Cを書いてみます(おそらく大学の身内しか必要ないだろう).

でも,時間がないので,テキトーなメモです.

Hello World

Squeak Smalltalk
Transcript cr; show:'Hello World'.

Objective-C
// file name   ->  test.m
#import<foundation/foundation.h>
int main(void){
  NSLog(@"Hello World");
  return 0;
}

実行方法
Squeak Smalltalk
"Workspaceに記述し,do it"

Objective-C

端末で以下のような方法でコンパイル
$ gcc -framework Foundation  test.m


リテラル
Objective-CはC言語のリテラルが使えます.

コメント
Squeak Smalltalk
ダブルクオーテーションで囲みます.

Objective-C
// または,/* ・・・*/ です.




Squeak Smalltalk
全てオブジェクトとして扱います.

Objective-C
Cの基本データ型の数値とNSNumberクラスのインスタンスがある.
NSIntegerは普通のintまたはlong.


NSNumber *number = [NSNumber numberWithFloat: 1.0];

文字列

Squeak Smalltalk
シングルクオーテーションで囲みます.
'文字列です'

Objective-C
C言語の文字列以外に,NSStringのインスタンスの文字列があります.

ダブルクオーテーションで囲み,先頭に@を付けます.
@"文字列です"

代入
Squeak Smalltalk
 :=

Objective-C
=

文末
Squeak Smalltalk
."ピリオド"

Objective-C
; //セミコロン

メッセージ式

Squeak Smalltalk
'Ringo no Tane' size. "文字列の長さを求める"

Objective-C
[ ] で囲むことにより,メッセージが送信できます.Objective-Cにはメッセージ式による優先順位がない.優先順位は括弧の付け方で決定される.
[@"Ringo no Tane" length]; //文字列の長さを求める

算術演算

Squeak Smalltalk
Smalltalkでは,メッセージ式の優先順位で計算をする.

Objective-C
C言語と同様な優先順位で行なわれる.

カスケード

Squeak Smalltalk
; "セミコロン"


"カスケードなし"
Transcript cr.
Transcript show:'Hello'.

"カスケードあり"
Transcript cr; show:'Hello'.

Objective-C
存在しません.

ブール値

Squeak Smalltalk
true "真,Trueクラスのインスタンス"
false "偽,Falseクラスのインスタンス"
nil "不定"

Objective-C
Bool型はブール値を扱うための方
YES //真を表す定数 0でない値
NO //偽を表す定数 0
nil //nullのオブジェクトを示す.nilはid型の空ポインタ.値は0.

制御構造

if

Squeak Smalltalk
if文はありませんが,ifに相当するメソッドが実装されています.

1 > 0 ifTrue:[  Transcript show:'Ha Ha Ha!!'; cr. ].
Objective-C

if(1 > 0){
  printf("Ha ha Ha!\n");
}

while

Squeak Smalltalk
i := 0.
[i<4] whileTrue:[ Transcript cr;show:'hoge'. i := i + 1. ].

Objective-C
int i = 0;
while(i<4){
  printf("hoge\n");
}

for

Squeak Smalltalk
for文のように振る舞うto:, to:do:, to:by:do:があります.


1 to: by:1 10 do:[:v | Transcript cr;show:v ].

Objective-C

int i;
for(i=1; i<11; i=i+1){
  printf("%d",i);
}
SmalltalkのイテレータとObjective-C高速列挙
別の時に説明します.

switch

Squeak Smalltalkにはありません.
余談,SmallTalk R4.1 http://smalltalk.smalltalk-users.jp/ ならあります.

Objective-C
略します.


次回は,クラス定義について書こうと思います.