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
略します.


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

[Objective-C] 基礎から学ぶ iPhoneアプリ開発

「Objective-C逆引きハンドブック」の著者である林 晃さんが,新しい本を出されました.

「基礎から学ぶ iPhoneアプリ開発」

昨日本屋で発見.思わず購入.

Core DataについてがAppleのDocumentより分かりやすいことと,具体的なサンプルがあって,良書です.



Objective-C逆引きハンドブックは,萩原さんの詳解Objective-C 2.0と一緒に持っておくとかなりいい.


Objective-Cのサンプルコードが,これほど多くまとめられているものは私の知っている限り数少ないと思う.
特に日本語で,非常に意味のあるサンプルコードばかりなので,Objective-Cをしっかりと使いたいひとにはお勧めだと思います.


2010年7月25日日曜日

[Squeak][VisualWorks] fold:

相変わらず,どうでもいいこと書きます.

http://lists.gforge.inria.fr/pipermail/pharo-project/2010-July/029669.html

fold:

foldと言われると,Squeakでは,inject:into:がすぐに思いつく.

#(1 2 3) inject:0 into:[:v1 v2 | v1 + v2 ].

Haskellでは
foldl (+) 0 [1, 2, 3]
Schemeでは
(fold + 0 '(1 2 3))

私のような初心者プログラマーは,初期値を考えるのが大変なので,ついつい,以下のようなコードを書いてしまいそうになってしまう.
array := Array with: 1 with: 2 with:3.
x := array first.
xs := array allButFirst.
xs inject:x into:[:v1 :v2 | v1 + v2 ].

このプログラムでは,allButFirstで,新たに配列を生成しているので,非効率.
やはり,きちんと初期値を決めなければなりません.

一方,Schemeでは,
gosh> (define array '(1 2 3))
gosh> (fold + (car array) (cdr array))
6

cdrは新たにリストを作成しているわけではないので,心配ありません.

それなら,初期値を考えていれればいいと言われる方もいると思いますが,これが意外と難しい.
例えば,配列の中から最大値を求めるのをinject:into:を書こうと思うと・・・.

array := Array with:-10 with:2 with:100.
array inject:  Float infinity negated into:[:v1 :v2 | v1 max: v2 ].
この場合は,マイナス無限大を初期値にする.


ちなみにVisualWorksでは,SequenceableCollection>>fold: が実装されている(さすが!).

array := Array with:1 with:2 with:3.
array fold:[:v1 :v2 | v1 + v2 ].

実装方法は,以下の通り.
SequenceableCollection>>fold: 
 | size nextValue |
 (size := self size) = 0 ifTrue: [^self emptyCollectionError].
  nextValue := self at: 1.
  2 to: size do:
  [:i | nextValue := binaryBlock value: nextValue value: (self at: i)].
  ^nextValue

先ほど,プログラムも簡単にかけます.

array := Array with:-10 with:2 with:100.
array fold:[:v1 :v2 | v1 max: v2 ].

ただし,SequenceableCollection>>fold: では,空のコレクションが与えられると,エラーになるので,注意が必要.エラーを発生させたくないなら,inject:into:を使うべき.
#() inject: 0 into:[:v1 :v2 | v1 + v2 ] "0が,かえってくる"

gosh> (fold +  0 '())
0

ふー,つかれた.

素人の意見としては,fold:が実装されるのは賛成.
みなさんはどう思われますか?



さらに,どうてもいいこと.

今回のでVisualWorksすごい!ってと思いましたが,Squeakユーザなので,操作がなかなか慣れない.

もともとHaskell,Schemeは,ほどんと書けなかったのですが,さらに書けなくなりましたorz

やっぱりReal Worldを購入すべきなのだろう.
英語本はもっているけど,読む時間がかかるので,やっぱり翻訳版を購入しようかな(でも高い・・・).
学生の頃に,翻訳本が出るとは思わなかったので,ついつい買ってしまった.

プログラミング言語の本を献本でもらえる人っていいなって思うけど,感想書くのが大変そう・・・.

2010年7月24日土曜日

日本語変換

高階関数を入力しようとおもったら,ことえりの変換では「後悔関数」.
がっかりだorz
ATOKはどうなんだろう.

iPhone, iPadもきちんと変換できなかった.

2010年7月22日木曜日

[Squeak] クイックソート その2

前回のクイックソートをSqueak 4.1以前のSqueakでも実行できるように変更してみました.

相変わらず,コストは無視しています.

quickSort := [:array  |
 | x xs left right |
 array isEmpty ifTrue:[ array ] ifFalse:[
 x := array first.
 xs := array allButFirst.
 left := xs select:[:v | v < x].
 right := xs select:[:v | v >= x].
  (quickSort  copy fixTemps value: left),(Array with:x), (quickSort copy fixTemps value:right )]].

quickSort copy fixTemps value: #(30 10 20 40 80 60) .


やっぱりSqueak 4.1がいい!

[Squeak] クイックソート

Squeakのブロックの使い方の例として.クイックソートを考えてみた.

コストは気にせず書くと,Haskellっぽく記述できます.

Squeak 4.1以前のSqueakだと以下のプログラムは実行できません.

quickSort := [:array |
| x xs left right |
array isEmpty ifTrue:[ array ] ifFalse:[
x := array first.
xs := array allButFirst.
left := xs select:[:v | v < x].
 right := xs select:[:v | v >= x].
(quickSort value: left ),{x}, (quickSort value:right )]].

quickSort value: #(30 10 20 40 80 60).
ここでのポイントは,ブロック内リターンを使わないこと.
ブロックは最後に評価したオブジェクトの返り値がかえるので,それを利用すること.


2010年7月19日月曜日

iSqueakを動かしてみる

iPhoneやiPad上で動かせるSqueakとしてiSqueakというのがあります.

そのためのコードを作者であるJohn M McIntoshさんが公開してくださっています.
John M McIntoshさんに感謝です.

http://isqueak.org/HomePage

このiSqueakのVMを利用してEtoysのイメージを動かしているのが,先日公開されました.



このソースはBert Freudenbergさんが公開してくれています.こちらでは,キーボード入力ができるようになっています.マルチタッチも可能.

ということで試してみました.
きちんと利用できるのにするためには.少し手間がかかったので,ここに記録しておきます.

いろいろと間違っていたらすみません.

必要なもの

  • Mac(intel + Snow Leopard )
  • Xcode(iPhone開発環境が含まれているのもの)
  • iSqueakのソースコード
  • PharoV10.sources.zip(iPadでEtoysを動かさないなら必要ない)
  • iPadでEtoysを動かすためのソースコード(キーボード入力を可能にする人)
  • Etoys(Etoys-To-Go4-Final.zip)
  • iPhone Developer Program(実機で動かしたい場合には必要です.1ライセンスで100台まで動かすことが可能なので,私に連絡していただけたら,一部の方だけなら・・・.)
  • iPhoneまたはiPad(実機で動かしたい場合には必要です)
  • あとは根性w?
まずは,iSqueakのソースコードをダウンロードしましょう.Subversionで公開されているので,保存したいディレクトリに移動して,ターミナルで以下のように入力します.

$ svn co http://squeak.org/svn/squeak/trunk/
$ svn co http://squeakvm.org/svn/squeak/trunk/

続いてPharoV10.sources.zipをダウンロードします.

http://www.pharo-project.org/pharo-download

PharoV10.sources.zipを解凍して,PharoV10.sourcesをtrunk/platforms/iOS/vm/iPhone/ に入れます.

trunk/platforms/unix/plugins/SocketPlugin/sqUnixSocket.cを以下のように編集します.

82行目
# include <netinet/udp.h>

以下のように変更します.

# ifndef TARGET_OS_IS_IPHONE
# include <netinet/udp.h>
#endif

ダウンロードしたiSqueak内のSqueakPureObjc.xcodeprojをダブルクリックをします(trunk/platforms/iOS/vm/ 内にあります).
「ビルドと実行」をします.問題があったら大変なので,まずはシミュレータを使って実行しましょう.

続いて,iPadでEtoysを動かしてみたいと思います.Xcodeを開いてる場合,終了します.

以下のアドレスから,Etoys4iPad-VM.zip,touchHand-bf.1.cs,touchSensor-bf.1.csをダウンロードします.

Bert Freudenbergさんに感謝

http://lists.squeakland.org/pipermail/etoys-dev/2010-June/005098.html

touchHand-bf.1.cs,touchSensor-bf.1.csは,拡張子をcsファイルとしてダウンロードしてください.

Etoys4iPad-VM.zipを解凍して,Etoys4iPad-VMディレクトリのplatforms/Mac\ OSObjC/vm/iPhone/Classes の中にあるファイルをtrunk/platforms/iOS/vm/iPhone/Classesにコピーします.


続いて,Etoys-To-Go4-Final.zipをダウンロードします.

http://www.squeakland.org/download/

Etoys-To-Go4-Final.zipを解凍しましょう.Etoys-To-Go 4.appで右クリックをして「パッケージ内容を表示」を選択します.

Contents/Resourcesからetoys.image,etoys.changes,EtoysV4.sources,fontsディレクトリをtrunk/platforms/iOS/vm/iPhone にコピーをします.

コピーしたetoys.imageをEtoys-To-Go 4.appにドラッグして起動します.
起動したら,日本語フォントを導入するかは任意です.

touchHand-bf.1.cs,touchSensor-bf.1.csをWorld内にドラッグをして読み込ませます.

etoys.imageでワークスペースを開く方法がわからなかったので,Etoysのライセンス表示で開かれるWorkspaceを利用して以下のプログラムを実行.

TouchCmdMorph new openInWorld.

表示されたMoprhは好きな一に移動させておきます.
変更内容を保存します.etoys.imageだとどのように保存するかわからないので,Workspaceで以下のコードを実行.

Smalltalk snapshot: true andQuit: true.

終了したら,コピーしたfontsディレクトリは削除しても構いません.

Xcodeを開きます.etoys.image,etoys.changes,EtoysV4.sourcesをXcodeの左側に表示されているResourcesフォルダにドロップします.

Xcodeで「プロジェクト」—「アクティブターゲット"SqueakNoOGLIPhone"を編集」を選び,「ビルド」のタブを選択します.

GCC 4.2 - プリプロセスのプリプロセッサマクロにISQUEAK_SOURCES="PharoV10"とISQUEAK_IMAGE="iPhone"を追加します.
動作させるイメージはetoys.imageですけど,追加しないと動作しません.
ここまでが終わったら,ビルドと実行をしましょう.最初はシミュレータを使ってビルドすることをおすすめします.

起動すると,画面がおかしいので,command + ← をして画面を横にします.
横になるときちんと表示されます.

command + → で画面を縦にするとキーボードが表示されます.
仕様で画面を縦にしないと表示されません.

TouchCmdMorphを押しながら,pなどをするとprint itができます.



素敵ですね!!
よかったらお試しあれ.

私は,iPadを3.2.1にアップデートしてしまったので,iPadインストールができない状態ですorz

iOS 4.1 betaには対応しているけど,3.2.1には対応していないのはどうなんだろう・・・.
Xcode早くアップデートして欲しい.

さすがに,ここまで書くと疲れる.



ビルドしてきちんと動作しない場合は,Xcodeで「キャッシュを空」にして「全てのターゲットをクリーニング」しましょう.
他にもいったんXcodeを終了して,再度ビルドをしてみるのもいいかもしれません.

2010年7月17日土曜日

スティーブ・ジョブズ 驚異のプレゼン

「スティーブ・ジョブズ 驚異のプレゼン」をようやく購入.

あまりこういう本は買わないのですが,プレゼンというのが気になり購入してみました.




ジョブズにはなれないけど,学ぶべきことは多いと思う.連休中に読むぞ.
http://twitter.com/newapplesho/status/18760555873


[Squeak] Squeak SmalltalkのwhileTrue: 謎だ

Squeakでいろいろ探索していたら,whileTrue:が謎.

BlockContextを読んでいたけど,Squeak 4.1だからBlockClosureだw
BlockClosure>>whileTrue: aBlock 
"Ordinarily compiled in-line, and therefore not overridable.
This is in case the message is sent to other than a literal block.
Evaluate the argument, aBlock, as long as the value of the receiver is true."

^ [self value] whileTrue: [aBlock value]

いったいどうなっているんだろう.英語がわからないオバカだけど,インライン展開しているとこと?
どんな?

何かすごい寂しい気分になった.


2010年7月16日金曜日

[Objective-C] Objective-Cのカテゴリを使ってみる

Objective-Cのself,superを確認してみるのプログラムをObjective-Cのカテゴリを使ってきちんと動作するようにしてみる.

#import <Foundation/Foundation.h>

@interface NSObject (MyTest)
- (id) methodA;
@end

@implementation NSObject (MyTest)
- (id)methodA
{
  NSLog(@"NSObject");
}
@end

@interface TestA:NSObject
- (id) methodA;
- (id) methodB;
- (id) methodC;
@end

@implementation TestA
- (id) methodA
{
  NSLog(@"class A");
}

- (id) methodB
{
  [self methodA];
}

- (id) methodC
{
  [super methodA];
}
@end

@interface TestB : TestA
- (id) methodA;
@end

@implementation TestB
- (id) methodA
{
  NSLog(@"class B");
}
@end

int main(void){
  SAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  TestB *objB = [[TestB alloc] init ];
  //selfの確認
  [objB methodB];
  //superの確認
  [objB methodC];
  return 0;
}

実行結果

2010-07-16 06:55:59.383 a.out[512:903] class B
2010-07-16 06:55:59.385 a.out[512:903] NSObject

カテゴリを用いたことで,NSObjectにmethodAを実装することができました.

Objective-Cのカテゴリはメソッドの整理だけではなく,既存クラスにmethodを追加することができます.これは非常に便利ですが,やはり既存クラスに追加するのは,できる限りさけたいものです.

カテゴリで注意しなければならないのは,インスタンス変数を付加できないということ,そして,既存のクラスのメソッドと同じ名前でメソッドを定義すると,上書きができてしまうことです.これはメリットでもありデメリットでもあります.上書きした場合,元のメソッドは呼び出すことはできません.

[Objective-C] Objective-Cのself,superを確認してみる

何をいまさらと言われてしまうが,最近いろいろな言語をやっていたりすると不安になってきたので,一応確認.

#import <Foundation/Foundation.h>

@interface TestA:NSObject
{
}
- (id) methodA;
- (id) methodB;
- (id) methodC;
@end

@implementation TestA
- (id) methodA
{
  NSLog(@"class A");
}

- (id) methodB
{
  [self methodA];
}

- (id) methodC
{
  [super methodA];
}
@end

@interface TestB : TestA
{
}
- (id) methodA;
@end

@implementation TestB
- (id) methodA
{
  NSLog(@"class B");
}
@end

int main(void){
  TestB *objB = [[TestB alloc] init ];
  //selfの確認
  [objB methodB];
  //superの確認
  [objB methodC];
  return 0;
}

このコードをコンパイルすると以下の警告が表示されます.

main.m: In function ‘-[TestA methodC]’:
main.m:24: warning: ‘NSObject’ may not respond to ‘-methodA’
main.m:24: warning: (Messages without a matching method signature
main.m:24: warning: will be assumed to return ‘id’ and accept
main.m:24: warning: ‘...’ as arguments.)

NSObjectにはmethodAを実装されていないため,もしかしたら動作ができないかもしれないと警告が表示されます.
警告を無視して,実行してみます.


2010-07-16 06:30:27.310 a.out[430:903] class B
2010-07-16 06:30:27.313 a.out[430:903] -[TestB methodA]: unrecognized selector sent to instance 0x10010d980
2010-07-16 06:30:27.315 a.out[430:903] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TestB methodA]: unrecognized selector sent to instance 0x10010d980'
*** Call stack at first throw:
(
0 CoreFoundation 0x00007fff837b6cc4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x00007fff88f6c0f3 objc_exception_throw + 45
2 CoreFoundation 0x00007fff83810140 +[NSObject(NSObject) doesNotRecognizeSelector:] + 0
3 CoreFoundation 0x00007fff83788d4c ___forwarding___ + 860
4 CoreFoundation 0x00007fff83784e28 _CF_forwarding_prep_0 + 232
5 a.out 0x0000000100000d51 -[TestA methodC] + 56
6 a.out 0x0000000100000dfe main + 136
7 a.out 0x0000000100000ccc start + 52
8 ??? 0x0000000000000001 0x0 + 1
)
terminate called after throwing an instance of 'NSException'
Abort trap


[objB methodB]では,TestBのmethodAが実行されます.

[objB methodC]はTestAのスーパークラスであるNSObjectのmethodAを実行しようとしますが,NSObjectにはmethodAがないので,実行することができないので,エラーになります.

他の言語でも,同様なプログラムを書くとself,superの動作を確認することができますので,お試しあれ.
あと,このプログラムから分かるように,Objective-Cは実装されていないメソッドがあっても,コンパイル時に警告はだしますが,実行できるということが重要です.

2010年7月12日月曜日

そら案内 for iPad

iPadでよく利用するアプリの紹介.

iPadで天気予報を見る際には「そら案内」を使っています.



縦向き,横向きに対応しており,無駄なデータが表示されておらず,非常に使いやすいです.

そら案内 for iPad

 iTunes Store(Japan)

iPhone 4とiPhone 3Gのスクリーンショット

iPhone 4とiPhone 3Gのスクリーンショットを改めて比較してみると,当然iPhone 4の方がきれいですね.


2010年7月11日日曜日

iPadとi.softbank.jp

今更だけど,iPadでは,i.softbank.jpのメールをプッシュできないようだ.
今日はじめてiPadのi.softbank.jpのアドレスにメールを送った際に,気がついた.
プッシュをしないため.フェッチにするか,もしくはプッシュが対応しているメールアカウントを利用するしかない.

2010年7月10日土曜日

[Objective-C] 詳解 Objective-C 2.0

6/10/2008
http://newapplesho.blogspot.com/search/label/Book より

詳解 Objective-C 2.0の本が発売されています.
作者はもちろん荻原さん.


今,お世話になっています.7/10/2010

Objective-Cを非常に詳しく説明している.サンプルコードが少ないが,ある程度オブジェクト指向言語を学んだ人なら何となく読めると思う.
Objective-Cの文法,考え方,用語をしっかりと学び人にお勧めです.

[SQL] 初めてのSQL

6/01/2009
http://newapplesho.blogspot.com/search/label/Book より

SQLを勉強し直す.

そのため,MySQLをインストールする.

参考にしたサイト
log.metatype - http://log.metatype.jp/?p=26

SQLを勉強するなら,やはり手を動かして勉強したほうがいいと思ったので,とりあえず参考書を購入した.

選んだのは,オライリーの初めてのSQL.
タイトルは初めてのと書かれているが,実際は初心者本ではないと思う.
原本のタイトルはLearning SQLで,何故「初めて」がついたのか不思議です.


再び勉強が必要になってきた.
私は いつもその場しのぎの勉強だったので,きちんと勉強するべきだと思う.7/10/2010

SQLを使いながら学ぶようなスタイルで記述しているので,手を動かしながら学び人にお勧めです.
ただし,「初めて」というタイトルは信じないほうがいいと思いますw
SQLを少し学んだ人にお勧めです.

管理者になる人のはじめてのUNIX

5/30/2009
http://newapplesho.blogspot.com/search/label/Book より

Linux等をCUIでの操作について勉強したい人におすすめの本.

管理者になる人の はじめてのUNIX

学部生の講義のアシスタントする際にいただいた本なのですが,読んでみると内容がしっかりしていて,パスワードの決め方なども書かれているので,初心者の人にはおすすめ(僕を含めて).

コマンド集を買う前に,これを読んでみてはいかがでしょうか.


LPICを受けてみようかな.7/10/2010

[Lisp] 関数型言語の本

7/10/2010
http://newapplesho.blogspot.com/search/label/Book より

SmalltalkはWikipediaによるとLOGO,Lispの影響を受けているらしいので,Lispを勉強することに.

Lispというと関数型言語ですが,関数型ってたくさん種類があるので大変.
僕程度の人間が短期間でマスターできると思いませんので,本選びは重要です.

Common Lispなら


薄くて,重要なのだけそうなので買っちゃいました.
今読んでいますが,かなり面白いですw

そういえば,関数型言語で有名な本と言えば・・・



ですが,量が多いのでさすが今は読んでいる時間がありません.
もうちょっとスキルアップしたら読みます.

>(+ 1 2)
>3
なんかいいw 2/22/2007


それにしても,いまだに未熟ですorz 7/10/2010



[Objective-C] たのしいCocoa プログラミング

7/19/2007
http://newapplesho.blogspot.com/search/label/Book より

先日,本屋でこんな本を発見.
即買ってしまいました.



木下さんの本はいつか全て買いたいと思っていますが,特にこの本はプログラミングがぜんぜんできない僕にはよさそうです.
いよいよObjective-Cの世界へいけそうかな?

今はiPhone Programmingを勉強中.
この本はObjective-Cを学ぶ際に購入して,よかったと思う.7/10/2010

Objective-Cをかなり優しく解説しているため,初めてObjective-Cを学ぶ人にお勧めです.オブジェクト指向の解説もあり,C言語経験者でもわかるように記述しています.

[Ruby] たのしいRuby

7/26/2007
http://newapplesho.blogspot.com/search/label/Book より

Potential - りんごの種 by blogger: Rubyの本

以前こんな記事も書きましたが,追加です.

たのしいRuby 
こちらは入門書として,かなりいいです.

手放せない本ですね.

サンプルと適度な量の解説で,Rubyでプログラミングをする楽しさを実感できると思います.Rubyを初めて勉強する人にお勧めです.


オブジェクト指向入門 第2版 方法論・実践

8/19/2008
http://newapplesho.blogspot.com/search/label/Bookより

Potential: オブジェクト指向入門 第2版 方法論・実践 いよいよ発売へを書いたついでに・・・.

最近,オブジェクト指向の本について話題を見かけますが,僕はそのような本を読みましたが,読むより手を動かしながらオブジェクト指向をなんとなく理解しました.
用語というのは知らない人間にとっては魔法の言葉であって,経験こそが一番理解へ道だと思います.

Squeak SmalltalkやRubyと講義でJavaをふれながら,雰囲気はわかったと思います.

実際,しっかりと「オブジェクト指向は○○だ」とか,「開発プロセスと○○だから」ということは知りませんが,僕はまずはそれでいいと思うのですが,どうでしょう.

平凡な学生が考える幼稚な考えかもしれませんが・・・.

オブジェクト指向入門 第2版 原則・コンセプト

11/05/2007
http://newapplesho.blogspot.com/search/label/Book より
これこそが本当の入門かもしれない.



未だにこの本の全てを理解できない.
私の知識は,入門レベルですらないようだw 7/10/2010

[JavaScript] JavaScriptの本

4/15/2009
http://newapplesho.blogspot.com/search/label/Book より

最近,わけあってJavaScriptを勉強している.
といっても,あまり時間がないので,しっかりと勉強できているわけではない.

Web APを作るとき,ときどきお世話になっていたが,まじめに本を読んでみると実に変わった言語である.
ただ,いろいろとできるので,侮ってはいけない.
オブジェクトのような,関数のような.

僕程度のプログラミングレベルだと,オライリーの「はじめてのJavaScript」でも十分だとは,思うけど,やはりサイ本(オライリーのJavaScript)が欲しい.
ちなみに,はじめてのJavaScriptはコサイで,JavaScriptはサイの表紙になっている.

本リストをトウヨウリンゴにまとめます.

 以前のりんごの種の本リスト,今持っている本,欲しい本をこのブログにまとめようと思う.

iOS 4で便利になったこと

iOS 4で便利になったこと.

SafariでPDFを見た際に,他のアプリケーションで開くことが可能になったこと.

2010年7月5日月曜日

Mac(Snow Leopard)にEclipseを入れてみる

会社で必要そうなので,Eclipseを使ってみようと思う.ただ自宅では当然Macしか使わないので, Mac(Snow Leopard)でEclipseを使うことにする.

そこでEclipseの導入方法について紹介する.

まず,Javaの環境はDeveloper環境を導入していれば,標準でインストールしているため,特に設定の必要はない.

続いて,Eclipseを以下のサイトよりEclipse IDE for Java Developerをダウンロードする.

http://www.eclipse.org/downloads/

これだけでは,Eclipseは英語環境のみであるため,日本語化を行なう.

日本語環境はPleiadesをいれることで可能になる.
Pleiadesは以下のアドレスよりダウンロード可能である.
http://mergedoc.sourceforge.jp/

2つのファイルをダウンロードしたら展開をする.
EclipseはApplicationフォルダに移動させればよい.
そして,Pleiadesフォルダの「features」と「plugins」の中のデータをApplicationフォルダに移したEclipseのフォルダ内の「features」と「plugins」の中にコピーします.

Eclipse.appで右クリック「パッケージの内容を表示」を選び,Contents/MacOS/eclipse.iniの最後に下記の内容を追加します.

-javaagent:../../../plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

追加後,Eclipse.appを起動すると,日本語化されているはずです.

2010年7月4日日曜日

いまさらながら,iPad レビュー その2

最近更新がものすごく遅いですが,前回のiPadレビューの続きを書きたいと思います.

iPadとiPhone 3Gを並べて大きさを比較してみた.素人なので,写真の撮影が悪いのは勘弁していただきたい.写真を見て分かるように非常に大きい.

iPadを保護するケースだが,今回はApple純正のものにした.いろいろとケースは販売されているが,なかなかいい物がない.

私が選んだ条件.
  • iPadがケースから落ちない
  • 汚れが目立たない
  • 傾斜が付けれる






実際,本体をケースに入れようと思うと,少し力がいる.
そのためケース内でiPadが移動することはない.また,スタンド形式にした場合でも,iPadがケースから落ちない工夫がされている.

そして,遠目で見るとノートを見ている人に思われるので,注目を浴びなくて済む.

iPad用の液晶保護フィルムは画面が大きいためか少しお値段が高い.
そのため今回はすこし安めのものにした.
simplismというシート.

よく言われるのが,iPadは他人から画面がみれるため,困るという意見だ.
確かにその意見は分かるが,プライバシーフィルタを貼ってしまうとiPadのIPSディスプレイが台無しになってしまうので,できれば最初からは貼らないでほしいという気持ちがある.