2012年07月07日

Objective-C 入門 [Hello worldプログラム]

言語:Objective-C
OS:Linux (Fedora 15)

世間からは完全に周回遅れになってしまいましたが、最近iPadを触る機会があり、とても良いものだと思ったので、がんばってiPad(iPhone)アプリを作れるようになろうと考えたりしています。

そこで、開発言語であるObjective-Cからやってみることにしました。
(※実は2~3年前にiPhoneアプリ開発の勉強をしたことがあるのですが、SDKについていけず挫折しました。)

今回は言語から少しづつ攻めていこうという作戦です。

Objective-Cは言語自体に癖があるので、普段JavaとかPHPとかC/C++とかやっている人は戸惑うと思います。
例として、C/C++との違いをまとめてみます。
違い1:#include <hoge.h>じゃなくて#import <hoge.h>
違い2:classじゃなくて@interface ~ @end

特に、違い2は独特です。

最初は慣れることが肝心だという考えのもとに、おなじみのHello worldプログラムを実装してみました。
#import <stdio.h>
#import <objc/Object.h>

@interface Hello : Object
  - (void)hello;
@end

@implementation Hello
  - (void)hello
  {
    printf("Hello world\n");
  }
@end

int main()
{
  id obj = [Hello alloc];
  [obj hello];

  return 0;
}

クラスの定義は@interface ~ @endでやって、その中身を@implementation ~ @endに書きます。普通はヘッダー(***.h)と実装(***.m)に分けて書きますが、面倒なので、今回は1つのファイルに書いています。

さて、コンパイルですが、Objective-Cはgccでコンパイルできます。

私の環境ではgccは入っていたのですが、Objective-Cをコンパイルできるヤツではなかったみたいなので、yumでいれました。以下はそのコマンドです。
> yum install gcc-objc

Linuxならこれで入ると思います。

次にコンパイル(とリンク)をします。
コンパイルは"gcc -c ファイル名"です。
> gcc -c hello.m
これで、オブジェクトファイル(hello.o)が生成されます。

最後に、リンクをして実行ファイル(hello)を生成します。
> gcc -l objc -o hello hello.o
objcをリンクしないとエラーになります。

せっかく実行ファイルができたので、実行してみます。
> ./hello
Hello world


2012年02月22日

Apacheのモジュール一覧を確認する

OS:Fedora 15
Webサーバ:Apache 2.2.21

Apacheで使えるモジュールを確認するコマンドです。
> httpd -M
> apachectl -M
これで、静的モジュールと動的モジュールの一覧が表示されます。

2012年02月19日

LinuxでParosをインストール&起動

OS:Fedora 15
ツール:Paros 3.2.13

脆弱性診断ツールのParosを使ってみました。

1.Parosのダウンロード

こちらからzipファイルをダウンロードします。今回はparos-3.2.13-unix.zipにしました。

2.Parosのインストール

ダウンロードしたら解凍します。
ダウンロードしたディレクトリに移動して以下のコマンドで解凍です。
> unzip paros-3.2.13-unix.zip

インストール(?)はこれで完了です。

3.Parosの起動

解凍するとparosというディレクトリが生成されるので、その中に移動します。
Parosディレクトリの中にはstartserver.shというシェルがあります。このstartserver.shを実行すると起動できます。

最初は実行権限が設定されていないので、
> chmod a+x startserver.sh
で実行権限を付加します(付加する範囲はお好みで)。

実行権限を付加したらstartserver.shを実行します。
> ./startserver.sh

以下は起動後の画面です。
textarea-html1


2012年02月15日

linux+postfixのメールサーバでメールをrootが受信してしまう場合の対応

OS:Fedora 15
MTA:postfix

テストで開発用メールサーバにメールを送信したのに、ユーザの新規メール受信ディレクトリ(.../Maildir/new)にファイルがなかったときの話です。

結論から言うと、エイリアスの設定によってそのユーザ宛のメールがrootに届くようになっていたのが原因でした。

エイリアスは/etc/aliasesで管理しています。
> cat /etc/aliases

ここに
hoge:        root
とか
fuga:        postmaster
みたいな記述があるとそのユーザはエイリアスの対象になるようです。

私の場合、受信ユーザが
受信ユーザ:        postmaster
となっていて、postmasterがrootに設定されていました。

なので、この行をコメントアウトしたら、ユーザのメールディレクトリに受信されました。

こういうことはあんまりないと思いますが、「アレ!?受信できん!」って方の参考になればと思います。

2012年02月03日

Linuxの/etc/resolv.confの編集と反映

OS:Fedora 15

DNSを設定するために、/etc/resolv.confを編集してネットワークを再起動すると、うまくいかない....。

調べてみると、編集したはずの/etc/resolv.confの内容が編集前の内容に戻っていた。

どうやら、/etc/resolv.confは/etc/sysconfig/network-scripts/ifcfg-***に記述されたDNSの内容で上書きされるみたいです。
なので、/etc/sysconfig/network-scripts/ifcfg-***にDNSを設定しなければ、/etc/resolv.confは初期化されるようです。





そういうわけで、/etc/sysconfig/network-scripts/ifcfg-***にDNS設定してネットワークを再起動したら、/etc/resolv.confに反映されました。

/etc/sysconfig/network-scripts/ifcfg-***へのDNSの設定ですが、DNS1とDNS2という項目を追加して、そのIPを設定します。
DNS1=xxx.xxx.xxx.xxx
DNS2=xxx.xxx.xxx.xxx