Windows 2008 Server の Active Directory

中々情報が見つからなかったのでメモ。

Windows 2008 Server で Active Directory のインストールウィザードで新規にフォレストを作成する際、Administrator のパスワードが設定されていなくて無効だというエラーが表示されて、そこから進まない。

パスワードは既に複雑なものが設定されていた。

Microsoft のフォーラムで同じで解決策を見つけた。コマンドラインで以下のコマンドを実行するだけ。

net user Administrator /passwordreq:yes

Aipo の DB で分かったこと

色々と Aipo をいじってて、スケジュールの部分をカスタマイズしたいと思います。中途半端なのですが、分かったことをこちらでメモをとっておきます。(はてなの日記は始めたばかりで非公開にしておいて後日公開する方法があるか分かりません・調べていません)

Aipo の開発マニュアル通りに問題を回避しながら開発環境を構築しますと、PostgreSQLに「AipoDB」というサーバーができて、その中に「org001」というデータベースが作成されます。

そこのスケジュールに関連するテーブルの各項目の意味をメモっておきます。

eip_t_schedule

フィールド名 物理フィールド名 主キー DB必須 PG必須 デフォルト値 サイズ データ例 備考
スケジュールID schedule_id SERIAL 1,2,3…
parent_id INTEGER 0 現段階ではまだ分かりません。テーブル定義でデフォルト値が0に設定されている訳ではないが、プログラムではそうしている(ようです)。
所有者ID owner_id INTEGER 1,2,3… この予定のオーナー。複数のユーザーが同じ予定を共有する場合、予定編集画面の「参加者」の最も左のユーザーがオーナー(らしい)。AさんがBさんのスケジュールを登録すれば、Aさんは作成者になりますが、オーナーはBさんになります。
繰り返しパターン repeat_pattern VARCHAR N 10 頭文字は繰り返しの頻度を表す テーブル定義でデフォルト値がNに設定されている訳ではないが、プログラムではそうしている(ようです)。
N は繰り返しなし(None)
D は毎日繰り返し(Daily)
W は毎週繰り返し(Weekly)
M は毎月繰り返し(Monthly)
最後の文字は繰り返しの期限を表す
N は期限なし(None)
L は期限あり(Limit)
毎日繰り返し+期限なし
DN (終了日時は開始日時と同じ値になる)
毎日繰り返し+期限あり
DL (終了日時は繰り返し期限の日時となる)
毎週繰り返しには曜日の数字が含まれる
W1000000N は毎週日曜日繰り返し+期限なし
W0100010L は毎週月・金繰り返し+期限あり
W0010100N は毎週火・木繰り返し+期限なし
毎月繰り返しには繰り返す日が含まれる
M01N は毎月1日繰り返し+期限なし
M27L は毎月27日繰り返し+期限あり
開始日時 start_date TIMESTAMP 2008-05-05 10:00:00 フィールド名は start_date だが、データは日時である
終了日時 end_date TIMESTAMP 2008-05-05 22:00:00 フィールド名は end_date だが、データは日時である
予定名 name VARCHAR 99 打ち合わせ
場所 place VARCHAR 99 会議室1
内容 note VARCHAR 新規プロジェクトについて予算・・・
公開区分 plublic_flag VARCHAR 1 O は公開(Open), C は内容非公開(Closed), P は完全非公開(Private)
編集フラグ edit_flag VARCHAR 1 T は編集化(True), F は編集不可(False)
作成者ID create_user_id INTEGER 1,2,3…
更新者ID update_user_id INTEGER 1,2,3…
作成日 create_date DATE yyyy-mm-dd の日付 このフィールドは純粋な Date 型
更新日時 update_date TIMESTAMP 2008-05-04 12:43:27 フィールド名は update_date だが、データは日時である

Aipo 開発環境

前回の記事はバージョンアップの際にあったトラブルのメモをとりましたが、今回は Aipo の開発環境構築の際にあったトラブルをまとめておきます。

Eclipse が起動しない

Aipo ユーザーコミュニティーサイトの開発マニュアルの手順通りに環境を構築していきましたが、まずは Eclipse が起動しませんでした。私は特に Java スペシャリストでもなく、Eclipse を使いこなしている訳ではないのですが、とりあえず解決できた方法を紹介します。

/aipo_develop/eclipse/eclipse.ini を編集しました。

--launcher.XXMaxPermSize
256M

--launcher.XXMaxPermSize
128M

に変更したら Eclipse は無事起動しました。ヒントはこちらから得ました。

ソースコード文字コード

プロジェクトを作成して maven でビルドした後いざソースコードを触ろうとした際、Eclipse でエラーが1400件以上出ています。色々と試していた仲間がソースコードの tar.gz ファイルを UTF-8linux 上で解凍してから Windows にもってきたらエラーは全部消えたと教えてくださったので、その通りしてみると本当にエラーは消えました。圧縮ソフトの問題で恐らく改行コードがおかしくなっていたのでしょう。

DBユーザー名

エラーが全部消えて今度こそいじろうと思ったらまたエラーが出て画面が立ち上がりません。エラーメッセージの内容をみると PostgreSQL に接続できないとのことでした。
[http://user.aipostyle.com/develop/manual/postgresql81.html:title=
開発マニュアルの手順通り]に Postgres をインストールしましたが、ユーザー名が間違っていると気付きました。 /aipo_develop/apache-tomcat-5.5.26/webapps/aipo/WEB-INF/conf/postgres/Org001DomainNode.driver.xml の中身は以下の通りになっています。





ログインユーザー名が開発マニュアル通りの「postgres」ではなく、「aipo_postgres」になっています。ここを「postgres」に修正したらやっと画面が表示されました。

aipo 4.0.0.0 から 4.0.1.0 手動(強引)アップグレードメモ

はじめになぜ Aipo か

色々とグループウェアの件で悩んだあげくオープンソースの Aipo を使うことに決めました。

http://aipostyle.com/

携帯電話からも見られるし色々と機能が揃っていていいのですが、やはりあれこれと機能を追加したりカスタマイズしたいですね。

まず必要とされていたのが、スケジュールに参加していない人でもスケジュールの編集・削除できる機能でした。バージョン 4.0.1.0 のリリースにその機能が追加されたと書いてありましたので早速バージョンアップしました。

バージョンアップ前の確認

バージョンアップ前に一度ローカルでインストールして管理画面で他人のスケジュールの編集権限を与えてユーザーとして再ログインし、確認したらちゃんと他人のスケジュールをいじれるようになっていました。

トラブル開始:普通にバージョンアップできない

安心して本番サーバーのバックアップをとってアップグレードしようとしたら、まずは「アンインストールしなければインストールできない」と怒られましたので、アンインストールして 4.0.1.0 をインストールしました。インストールは普通にいきましたが、バックアップを修復しようとしたら「バージョンが古い」と怒られました。

まさかと思いましたが、Aipo の無料インストーラーからアップグレードはできないみたいです。サポートライセンスを購入すればアップグレード版やセキュリティーパッチを入手することが可能だそうです。なるほど。

とりあえずうまくいきました

せっかくオープンソースを採用してコスト削減を図っている最中ですので、ライセンスを購入せずに強引にアップグレードすることにしました。完璧ではないと思いますが、一応 4.0.0.0 のデータを取り込んでスケジュール編集権限もうまくいきました。

まずはデータの取り込み

4.0.0.0 をアンインストールする前に作成したバックアップフォルダーの中(aipo/backup/バックアップを取った日)に version.txt というファイルがありました。その中に以下の2行がありました。

[System]
version=4.0.0.0


これを version=4.0.1.0 に変更してもう一度バックアップの修復をしたらデータはうまく取り込まれました。しかし管理画面を確認すると他人のスケジュールを編集・削除する権限を与えるチェックボックスがありません。実際にユーザーとして再ログインして確認すると、やはり他人のスケジュールは編集できません。

権限設定可に

ローカルではちゃんと他人のスケジュールも編集できていたので、データを見ることにしました。バックアップフォルダーに作成されていた aipo_db_sql.dump を確認すると以下の一行がありました。

112 schedule_other スケジュール(他ユーザーの予定)操作 3


ダウンロードした 4.0.1.0 のソースコードhttp://sourceforge.jp/projects/aipo/files/ )の aipo_src/sql/postgres.sql で同じような行を探してみて、以下の行がありました。

INSERT INTO EIP_T_ACL_PORTLET_FEATURE VALUES(112,'schedule_other','スケジュール(他ユーザーの予定)操作',31);


よく見るとバックアップの dump ファイルの自分の予定の操作は次の通りになっています。

111 schedule_self スケジュール(自分の予定)操作 31


最後の数字を比較すると、同じ dump ファイルでも自分のスケジュールは 31、他人のスケジュールが 3 。これかもと思って EIP_T_ACL_PORTLET_FEATURE の CREATE TABLE 文を見たらその数字は ACL_TYPE に該当しています。ACLは何の略か分かりませんが、他にそれらしい物がなかったのでとりあえず UPDATE で ACL_TYPE を 3 から 31 に更新しました。

更新後、管理画面から確認すると「追加」「編集」「削除」のチェックボックスが表示されていました。ということはEIP_T_ACL_PORTLET_FEATURE テーブルの ACL_TYPE が権限なのですね。さすがに DB の定義書は公開していただけないみたいですので、Aipo を利用する限り自力で DB を理解しなければなりません・・・

画面のレイアウト編集権限

ちなみに画面のレイアウトの変更もできなくなっていましたので、同じくソースコードの postgres.sql と aipo_db_sql.dump を比較したら、postgres.sql にレイアウト変更権限が追加されていたと分かりました。

INSERT INTO EIP_T_ACL_PORTLET_FEATURE VALUES(201,'portlet_customize','ポートレット操作',29);


なるほど。そのまま INSERT したら画面のレイアウト編集機能が復活しました。これが全てだと思いませんので、時間があれば postgres.sql と aipo_db_sql.dump を全部比較したいと思います。