Ubuntu 17.10でOpenGrok1.1-rc70

Read-Onlyで使用しているリポジトリのgit logが重くて泣きそうだったのでOpenGrokを導入しました。 前に使用したときよりだいぶバージョンが上がっていたので手順をメモしておきます。

導入

OpenGrokはTomcat等のWebアプリサーバ上で動作し、ブラウザからソースコードを閲覧するためのUIを提供してくれます。 関数や変数の参照箇所・定義箇所を高速に検索することができるほか、Git等で構成管理している場合には履歴をたどることができます。 ライセンスはCDDLです。

Androidのような大きなリポジトリでも高速で検索することができて便利です。

環境

インストール

手順はHow to setup OpenGrok · oracle/opengrok Wiki に従います。

ctags

universal-ctagsをビルドしてインストールします。

$ git clone https://github.com/universal-ctags/ctags.git
$ sudo apt install make autoconf pkg-config
$ cd ctags
$ ./configure
$ make
$ sudo make install
$ cd

Java

Oracle Javadebパッケージでインストールします。

$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-11*/bin/java 1081 
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-11*/bin/javac 1081 
$ sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/jdk-11*/bin/javadoc 1081 
$ sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/jdk-11*/bin/javap 1081 
$ sudo update-alternatives --config java 
$ sudo update-alternatives --config javac 
$ sudo update-alternatives --config javadoc 
$ sudo update-alternatives --config javap

Tomcat

Tomcatをaptでインストールします。

$ sudo apt install tomcat8
$ sudo service start tomcat8

ブラウザで http://localhost:8080 を表示して動作を確認します。

pip

OpenGrokのCLIシェルスクリプトからPythonに移行しているようなので、pipをインストールしておきます。(Jarのラッパーなので手順的にはOptional扱いのようです)

(see: Installation — pip 18.1 documentation

$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py 

OpenGrok

OpenGrokのバイナリをダウンロードしてPythonスクリプトをインストールします。

$ wget https://github.com/oracle/opengrok/releases/download/1.1-rc70/opengrok-1.1-rc70.tar.gz
$ tar xzf opengrok-1.1-rc70.tar.gz
$ cd 
$ python3 -m pip install --users tools/opengrok-tools.tar.gz

リポジトリの格納場所、インデックスデータの格納場所、設定ファイルの格納場所を決めます。 /var/local/opengrok配下に格納するようにしました。

/var/local/opengrok
├── data: インデックスデータの格納場所(data root)
├── etc: 設定ファイルの格納場所
│   └── configuration.xml: OpenGrokの設定ファイル
├── lib: OpenGrokのバイナリに含まれるlibディレクトリ
│   ├── lib
│   ├── opengrok.jar
│   └── source.war
└── repos: リポジトリの格納場所(source root)

Pythonスクリプトを使用してデプロイします。

$ sudo opengrok-deploy -c /var/local/opengrok/etc/configuration.xml /var/local/opengrok/lib/source.war /var/lib/tomcat8/webapps/source.war

リポジトリのインデックスを作成します。Pythonスクリプトも用意されています(opengrok-indexer)が、しっくりこなかったのでjarを直接使用しました。 最低限、data root(-d)、source root(-s)は指定する必要があるようです。 configuration.xmlはここで作成するようにします(--writeConfig)。

$ sudo java -jar /var/local/opengrok/lib/opengrok.jar -d /var/local/opengrok/data -s /var/local/opengrok/repos --writeConfig /var/local/opengrok/etc/configuration.xml 

いろいろと試して以下のような形にしました。

$ sudo java -jar /var/local/opengrok/lib/opengrok.jar -d /var/local/opengrok/data -s /var/local/opengrok/repos -t 1 -P -H -r on -T 3 -G -S --progress --renamedHistory on  --writeConfig /var/local/opengrok/etc/configuration.xml

設定内容は下記の通りです。

  • タブ幅(-t): 1
  • インデックス作成時のスレッド数(-T): 3
  • プロジェクト単位での表示あり(-P)
  • 履歴表示あり(-H、-r、-G、-S、--renamedHistory on)
  • インデックス中のインデックス中の進捗表示あり(--progress)

その他、設定できる内容は下記で確認できます。

$ sudo java -jar /var/local/opengrok/lib/opengrok.jar -h --detailed

動作確認

$ sudo service restart tomcat8

ブラウザで http://localhost:8080/source へアクセスして動作を確認します。

レッサーモクリちゃんをいじる

先日、バーチャルマーケット(http://v-market.work)というオリジナル3Dモデルの展示会があり、お邪魔してきました。
いろんなモデラーさんたちの作品を見て歩くことができて、さらにその場で試着もできちゃう!っていうすごいイベントでした。
(私はトラスト未解除のため試着できなかったのですが、それでも楽しかった)


その中でモクリプロジェクト(http://mokuri.world)のレッサーモクリちゃんのアバターが配布されていて、カスタマイズしてアバターとして使わせてもらえることになっていました。



かわいい


まずは元データをなるべく壊すことなくいじりたいなっていう気持ちがあって、テクスチャだけいじりました。
テクスチャに余白がなくて、どこをいじればよいやら…ってなったんですが、
ちゃんと確認すると実際には余白はいっぱいあって、難しいことはないみたいです。



渋い感じにしてみました


Blenderとかわからなくてもいけたので、画像はいじれるけどBlenderはまだ無理って境遇の方向けにメモを残します。


■インストールしておいたもの


■Unityにモクリちゃんを読み込む
1.Unityを起動して新しいプロジェクトを作る

2.VRCSDKをインポートする

3.AssetStore(Ctrl+9)からDynamic Boneをインポートする

4.モクリちゃんをインポート

5.Assets/Models/レッサーモクリ/レッサーモクリforVRChat.unityをダブルクリック

この時点で、そのままアバターとしてアップロード可能な状態になっています。
揺れものもリップシンクも表情も設定済み、すごい…!
あとはテクスチャをいじっていきます。


Blenderでポリゴンとテクスチャの対応関係を確認する
下記2枚のテクスチャがモクリちゃんのポリゴンに貼り付けられていて、
これらを編集すると見た目を変えられます。

  • 肌の画像: \Assets\Models\レッサーモクリ\レッサーモクリ.fbm\h_body_Base_Color.png
  • アクセサリの画像: \Assets\Models\レッサーモクリ\レッサーモクリ.fbm\h_props_BaseColor.png


どの部品にどの部分が貼り付けられているかはBlenderで確認します。

1. Blenderを起動する
2. Xキーを押して、デフォルトで配置されている立方体を削除する

3. [ファイル]->[インポート]->[FBX]を選択
\Assets\Models\レッサーモクリ\レッサーモクリ.FBX

4. 画面のレイアウトを[UV Editting]にする

5. 右側の画面で、位置を確認したい部品(ここではヘルメット部分)を右クリックで選択してから編集モードに切り替える

6. 左側の画面で[UV]-[UV配置をエクスポート]


■テクスチャいじる
これで、ポリゴンとテクスチャの対応部分が透過PNGとして保存されたので、CLIP STUDIOにテクスチャとエクスポートしたUV配置を読み込ませて、レイヤー分けつつ塗り塗り。
最後にPNG出力して元の画像を上書きすればOKです。

エクスポートした画像範囲だけを塗ると端の方とかが微妙に足りなかったりするので、2pxくらいはみ出して塗るといい感じだと思います。

発掘

お仕事でずーっと凹みっぱなしだったのですが、最近ちょっと安定感出てきてモチベが向上中です。

技術者のはしくれなのにアウトプット全然してないなと思いたち、
そういえばブログ持ってなかったっけ…ってこのブログを掘り出してきました。

日記みたいな感じで使っていこうかな。
VR界隈が楽しいことになってるので、出遅れながらUnity勉強中です。

C#もはじめて触っている感じですが、
さすがに「変数とは」みたいなのは今更感があるのでぴゃぴゃっと読めちゃう感じ。
ねこがかわいいんだ。

Redmineインストール

インストール手順はHowTo Install Redmine in Ubuntu - Redmineにありました。

ともかくインストール

 $ sudo apt-get install libapache2-mod-passenger
 $ sudo apt-get install redmine redmine-mysql

インストールの最後にメッセージが表示される

 ┌───────────────────────────────────────────┤ redmine を設定しています ├────────────────────────────────────────────┐  
 │                                                                                                                   │  
 │ redmine/instances/default は利用できるようになる前にはデータベースをインストールして設定する必要があります。この     
 │ 設定を dbconfig-common で管理するようにもできます。                                                                  
 │                                                                                                                      
 │ あなたが熟練したデータベース管理者でこの設定について手動で何をするのかを知っている場合、あるいはデータベースが既     
 │ にインストール及び設定されている場合は、この選択を選ばない方が良いでしょう。何をすればいいのかについての詳細につ     
 │ いては、大抵 /usr/share/doc/redmine/instances/default に置かれています。                                             
 │                                                                                                                      
 │                                                      <了解>                                                          
 │                                                                                                                   │  
 └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

了解を押すと

                    ┌────────────────────────┤ redmine を設定しています ├─────────────────────────┐                     
                    │                                                                             │                     
                    │ redmine/instances/default のデータベースを dbconfig-common で設定しますか?  │                     
                    │                                                                             │                     
                    │                     <はい>                       <いいえ>                   │                     
                    │                                                                             │                     
                    └─────────────────────────────────────────────────────────────────────────────┘

# 何を思ったのか「いいえ」を選んだ。ここで「はい」を選べばもっと楽だったのかも。


シンボリックリンクを張る

 $ sudo ln -s /usr/share/redmine/public /var/www/redmine

/etc/apache2/mods-available/passenger.confを下記のように編集(PassengerDefaultUserを追加)


  PassengerRoot /usr
  PassengerRuby /usr/bin/ruby
  PassengerDefaultUser www-data

Apache再起動

 $ sudo service apache2 restart

ここで、http://サーバアドレス/redmineにアクセスするとエラー画面が表示された。
「No such file or directory - /etc/redmine/default/database.yml」とのこと。
/usr/share/redmine/templates/database.yml.templateにひな形っぽいファイルがあるので、
これをConfigurationの章を参考に編集して/etc/redmine/default/database.ymlとして保存する。(my_passwordは適当)

production:
  adapter: mysql
  database: redmine
  host: localhost
  port: 3306
  username: redmine
  password: my_password
  encoding: utf8

再度アクセスするも、エラー表示。今度は「Unknown database 'redmine' (Mysql::Error)」。



ないなら作ろうということで

$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 47
Server version: 5.5.22-0ubuntu1 (Ubuntu)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database redmine;
Query OK, 1 row affected (0.00 sec)

mysql> create user 'redmine'@'localhost' identified by 'my_password';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on redmine.* to 'redmine'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye


再度エラー表示。
ログを確認しろと書いてあったので/var/log/redmine/default/production.logを確認。

 Processing WelcomeController#index (for ***.***.***.*** at 2012-05-03 00:32:35) [GET]
   Parameters: {"action"=>"index", "controller"=>"welcome"}
 
 ActiveRecord::StatementInvalid (Mysql::Error: Table 'redmine.settings' doesn't exist: SHOW FIELDS FROM `settings`):

テーブルがないらしい。


手順の下の方に「Create the database structure, by running the following command under the application root directory (I mean “/opt/redmine/redmine-0.8.6”):」の記載があったのでこれを試してみる。

 $ cd /usr/share/redmine
 $ sudo rake db:migrate RAILS_ENV="production"
 $ sudo rake redmine:load_default_data RAILS_ENV="production"

言語を選択する表示が出るので、jaを選択。

なにやら全然分かっていないけど取りあえず動いた。
最初に「はい」を選択しておけばそれだけですんだのかも?

デフォルトの管理者アカウントは、ID/PASSともにadminとなっているようだ。

Ubuntu12.04、USBメモリからのインストール

Ubuntu12.04がリリースされたので、インストールしてみました。


以下はインストール用のUSBメモリの作成手順の覚え書きです。
作業はMac OS X 10.7.3で実施しました。

そのまんまドキュメント(https://help.ubuntu.com/community/Installation/FromUSBStick)通りの手順です。


作業ディレクトリを作成して移動

 $ mkdir /tmp/work
 $ cd /tmp/work


作業ディレクトリにイメージファイルをダウンロードhttp://www.ubuntu.com/download/server/thank-you?distro=server&release=lts&bits=64


isoファイルをimg形式に変換

 $ hdiutil convert -format UDRW -o ./ubuntu.img ubuntu-12.04-server-amd64.iso 
 Master Boot Record(MBR:0) を読み込み中...
 Ubuntu-Server 12.04 LTS amd64Apple_ISO:1) を読み込み中...
 (Windows_NTFS_Hidden:2) を読み込み中...
 ...............................................................................
 経過時間:26.684s
 速度:25.6M バイト/秒
 節約率:0.0%
 created: /private/tmp/work/ubuntu.img.dmg


MacUSBメモリを接続して、USBメモリのデバイスファイルを確認

 $ diskutil list
 /dev/disk0
    #:                       TYPE NAME                    SIZE       IDENTIFIER
    0:      GUID_partition_scheme                        *500.1 GB   disk0
    1:                        EFI                         209.7 MB   disk0s1
    2:                  Apple_HFS Macintosh HD            423.6 GB   disk0s2
    3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
    4:       Microsoft Basic Data BOOTCAMP                75.6 GB    disk0s4
 /dev/disk1
    #:                       TYPE NAME                    SIZE       IDENTIFIER
    0:     Apple_partition_scheme                        *1.0 TB     disk1
    1:        Apple_partition_map                         32.3 KB    disk1s1
    2:                  Apple_HFS Backup                  500.1 GB   disk1s3
    3:                  Apple_HFS Warehouse               499.8 GB   disk1s5
 /dev/disk3
    #:                       TYPE NAME                    SIZE       IDENTIFIER
    0:     FDisk_partition_scheme                        *4.0 GB     disk3
    1:                 DOS_FAT_32 UNTITLED                4.0 GB     disk3s1


USBメモリをアンマウント

 $ diskutil unmountdisk /dev/disk3


USBメモリUbuntuのイメージを書き込み

 $ sudo dd if=ubuntu.img.dmg of=/dev/rdisk3 bs=1m
 684+1 records in
 684+1 records out
 717533184 bytes transferred in 78.422326 secs (9149603 bytes/sec)


「セットしたディスクは、このコンピュータで読み取れないディスクでした。」のメッセージが表示されるので、「取り出す」を選択して、USBメモリMacから抜く


Mac側での作業は以上で終了です。あとはUbuntuのインストール先マシンにUSBメモリを接続して、USBメモリから起動させればインストールが始まります。今回使用したPCでは起動時にF9でブートに使用するデバイスを選択できました。

pukiwikiでシンタックスハイライト

早速pukiwikiシンタックスハイライト表示機能を追加するプラグインを入れてみた。
いくつか種類があるみたい。

geshi.inc.php

今回は対応言語が多いgeshi.inc.phpというプラグインを導入した。
内部でGeSHi - Generic Syntax Highlighter :: Homeを使用しているらしい。
インストール作業自体はhttp://www.revulo.com/PukiWiki/Plugin/GeSHi.htmlの手順通りで問題なく完了できた。

以下、作業手順。

ダウンロードと展開

pukiwikiのインストールディレクトリを/var/www/pukiwiki/とすると、

# cd /var/www/pukiwiki
# wget http://sourceforge.net/projects/geshi/files/geshi/GeSHi%201.0.8.8/geshi-1.0.8.8.tar.gz/download
# wget http://download.revulo.com/PukiWiki/geshi-1.3.tar.gz
# tar xzvf geshi-1.3.tar.gz 
# rm geshi-1.3.tar.gz
# chmod 777 cache/geshi
# mv geshi-1.0.8.8.tar.gz ./plugin/
# cd plugin
# tar xzvf geshi-1.0.8.8.tar.gz
# rm geshi-1.0.8.8.tar.gz
pukiwiki.ini.phpの編集
 define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 1); // 1 = Disabled

 define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0); // 1 = Disabled
plugin/geshi_config/default.php

以下の行のコメントアウトを解除。

$geshi->set_header_type(GESHI_HEADER_PRE_TABLE);
skin/geshi/default.css

以下の行の下、数行にわたるコメントアウトを解除。

/* Configuration Example for GESHI_HEADER_PRE_TABLE */
動作確認

動作画面はこんな感じ。

そのままでも見やすいのでスタイルシートは弄らないことにする。

prettify.inc.php

気になったんだけど、今回は見送った。
こちらは内部でgoogle-code-prettifyを使用していて、言語を自動判断してくれるらしいです。
http://www.revulo.com/PukiWiki/Plugin/prettify.html

所感

関係ないけどシンタックス・ハイライトすごいなー。
背景色のおかげで文字色が見にくいけど。

身内で使ってるpukiwikiでも使えないもんか。
と思ったらやっぱりあるのね。

今度やってみよう。