2012年12月20日木曜日

[c] ファイル名等組み込みマクロ

恥ずかしながらどうやってるのだろうと気になっていたけど
やっと知る事ができたのでメモ


  1 #include <stdio.h>
  2
  3 int main(void){
  4
  5     printf("error message in %s line: %d\n",__FILE__,__LINE__);
  6
  7     return 0;
  8 }

標準出力

error message in test.c line: 5


2012年12月10日月曜日

[PEAR::Mail] Mail headerについて

普段湯水のように送っているメールでも
実際自分でライブラリーの恩恵に預かりながらとはいえ使う側から作る側になって
初めて気づく事もあるというのが今回の教訓

Mail のheaderについてです。
先の投稿 の続報という形になっています。

 24 $header = array(
 25     "To" => "to-address@gmail.com",
 26     "From" => "from-address@gmail.com",
 27     "Subject" => mb_encode_mimeheader("テストメール")
 28 );

25行目を下記の様にすると

25     "To" => mb_encode_mimeheader("上様") . "<ue@email.ne.jp>",

thuderbirdでは、下記のようにメールアドレスと名前の部分がスムーズに登録されます。

また、Ccも指定できますというか知らなかっただけ。知らなすぎますねw

 24 $header = array(
 25     "To" => "to-address@gmail.com",
26    "Cc" => "cc@gmail.com"
 27     "From" => "from-address@gmail.com",
 28     "Subject" => mb_encode_mimeheader("テストメール")
 29 );

[php] smtp over ssl

smtp-auth over ssl なsmtpサーバーからメールを送る。
PHP -> 5.4.6

[1] pear-Mail のインストール
cd /usr/ports/mail/pear-Mail
make config-recursive
PEAR_NET_SMTPを有効にする
make
make install

[2] コーディング


  1 <?php
  2 require_once("Mail.php");
  3
  4 // require for includeing japanese mail
  5 mb_language("Japanese");
  6 mb_internal_encoding("UTF-8");
  7
  8 // settting of smtp servser
  9 $params = array(
 10     "host" => "ssl://smtp-server-address",
 11     "port" => 465,
 12     "auth" => true,
 13     "username" => "account",
 14     "password" => "possword"
 15 );
 16
 17 // make instance of PEAR::Mail
 18 $mailObject = Mail::factory("smtp", $params);
 19
 20 //  address of recipients
 21 $recipients = "to-address@gmail.com";
 22
 23 // mail header
 24 $header = array(
 25     "To" => "to-address@gmail.com",
 26     "From" => "from-address@gmail.com",
 27     "Subject" => mb_encode_mimeheader("テストメール")
 28 );
 29
 30 // body of mail
 31 $body = "これは、テストメールです。";
 32
 33 // encoding
 34 $body = mb_convert_encoding($body, "ISO-2022-JP", "UTF-8");
 35
 36 // sending
 37 print("Sending....<br>");
 38 $ret =$mailObject->send($recipients, $header, $body);
 39 if(PEAR::isError($ret)){
 40     print($ret->getMessage());
 41 }
 42
 43 ?>


[3] PHP E_STRICT について
以下のようなエラーが出る場合
Strict Standards: Non-static method Mail::factory() should not be called statically in/usr/local/www/apache22/data/pearmail/index.php on line 18

Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in /usr/local/share/pear/Mail/smtp.php on line 365

Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in /usr/local/share/pear/Net/SMTP.php on line 450

これらのエラーは、Fartalなエラーではないため
/usr/local/etc/php.ini のerror_reportingを以下のようにして
error_reporting = E_ALL & ~E_STRICT
E_ALL からE_STRICTを除く設定にする。

2012年12月8日土曜日

[Cake PHP] 404 Not Found

既出の記事がたくさんがあるが自分用のメモ

Cake PHP( ver. 2.2.2 ) で404 Not Found が出る場合の対処法

[0] apache の mod_rewrite が有効になっているか確認
httpd.confで以下の用になっていればOK

LoadModule rewrite_module libexec/apache22/mod_rewrite.so

[1] .htaccess にmod_rewriteに関する設定をする
以下の例は、[document-root]/cakeblog/にCake PHPを配置している場合

まずは、[document-root]/cakeblog/.htaccess

  1 <IfModule mod_rewrite.c>
  2    RewriteEngine on
  3    RewriteBase /cakeblog/
  4    RewriteRule    ^$ app/webroot/    [L]
  5    RewriteRule    (.*) app/webroot/$1 [L]
  6 </IfModule>

次は、[document-root]/cakeblog/app/.htaccess

  1 <IfModule mod_rewrite.c>
  2     RewriteEngine on
  3     RewriteBase /cakeblog/app/
  4     RewriteRule    ^$    webroot/    [L]
  5     RewriteRule    (.*) webroot/$1    [L]
  6 </IfModule>

最後に[document-root]/cakeblog/app/webroot/.htaccess

  1 <IfModule mod_rewrite.c>
  2     RewriteEngine On
  3     RewriteBase /cakeblog/app/webroot/
  4     RewriteCond %{REQUEST_FILENAME} !-d
  5     RewriteCond %{REQUEST_FILENAME} !-f
  6     RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
  7 </IfModule>

[2] apacheの設定
cakeblog専用の設定ファイルを/usr/local/etc/apache22/Includes/に「cakeblog.conf」として作成して、以下を記す。


  1 <Directory "/usr/local/www/apache22/data/cakeblog">
  2     AllowOverride All
  3     Order allow,deny
  4     Allow from all
  5 </Directory>


そして、apacheを再起動して終了


2012年12月5日水曜日

[vim] 256色で表示するようにする

例えばGnome terminalは、256色の表示に対応しているがデフォでは、vimは、16色でしか表示してくれない。

vimも256色で表示するは、~/.vimrcのcolorchemeの設定の前に以下を追加

set t_Co=256

reference http://vim-users.jp/2009/08/hack64/

2012年12月4日火曜日

[freeBSD] postfix install


cd /usr/ports/mail/postfix
make config-recursive
make
make install

[2] sendmailの無効化
man rc.sendmailを参考に
/etc/rc.confに以下を追加


sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

[3] 専用ユーザーの追加
adduserでpostfix専用ユーザーを作成する。
ログインしないユーザーでホームディレクトリは、無し

[4]
エリアスのセット
/etc/aliasesに以下を追加
postfix: root

送信バッファーディレクトリpostdrop用グループの追加
pw groupadd postdrop

ホスト名等の設定(/etc/postfix/main.cf)で
myhostname =  my_host_name
mydestination = $myhostname,localhost

とした。

次に起動時にpostfixを走らせるための設定
/etc/rc.conf に以下を追加

postfix_enable="YES"

そして、postfixの起動
/etc/rc.d/postfix onestart

telnetでsmtp接続してみる
telnet localhost 25

本稿はここまで





2012年12月1日土曜日

[Mac] GNU Global + vim

GNU Global と vim の組み合わせで快適ソースコードリーディング環境を構築してみる。



まず、GNU Globalのインストール

 sudo port global

vimのプラグインのコピー
  cp /opt/local/share/gtags/gtags.vim ~/.vim/plugin/
コピー先のホームディレクトリのvim pluginディレクトリが無い場合は、予め作成しておく。

そして、インデックス出力のために読みたいソースファイルがあるディレクトリにてGtags -v を実行。

そして、読みたいソースを開く。ソース内の関数一覧を表示するには、
 :Gtags -f %

カーソルの位置の関数の定義に飛ぶには、

:GtagsCursor

本稿は、この辺まで。。。

参考サイト: http://www.machu.jp/diary/20090308.html#p01

2012年10月30日火曜日

[FreeBSD] システムコールトレース

linux でシステムコールをトレースするには、straceを用いるけど

FreeBSD では、trussを用いるらしい。

truss COMMAND

2012年10月29日月曜日

[FreeBSD] ログについて

サーバーを構築したらすることそれは証拠を残す事。
今回は、カーネルからのログを例にまとめてみる。

まずは、何のログをどういう重要度のログを記録するか?
[1] kernelのログで重要度notice以上のログを取る (syslogの設定)
まず、ログファイルを作成しておく。(勿論以下は、rootで)
    touch /var/log/kernel.log
次に/etc/syslog.confに以下を追加
    kernel.notice                                   /var/log/kernel.log
noticeの後は、タブでセパレートするのがポイント。設定を反映させるために下記コマンドを実行。
   /etc/rc.d/syslogd

[2] ログローテーション
Linuxの場合は、logrotateだけど FreeBSDの場合は、newsyslog
設定ファイルは、「/etc/newsyslog.conf」書き方の詳しい説明は「man newsyslog.conf」に載っている。ここでは、以下を追加。
/var/log/kernel.log                     644  5     100  *     JC

この意味は、ログファイルPATH Permission ローテーション回数 100K Byteになったらローテートする。JCは、Jがbzip2で圧縮。 Cは、ファイルが無い場合は作成、を意味する。

そして、設定を反映させるために
newsyslogを実行

[おまけ] apacheのログをローテート
「/etc/newsyslog.conf」に以下を追加

/var/log/httpd-access.log               644  4     *    $W5D18 JC /va/run/httpd.pid
/var/log/httpd-error.log                644  4     *    $W5D18 JC /va/run/httpd.pid
「*    $W5D18」*の意味は、ログファイルのサイズを指定しないという意味。$5D18の意味は、毎週金曜日の18:00にローテートするという意味。
この設定の場合1ヶ月でログファイルが消えていく事になる。

[dialog] FreeBSD 9.0 のインストーラで使われてるのを試してみた

FreeBSD 9.0 のインストーラに採用されている。Dialogコマンドを試してみた。





dialog --title 'Hello Title' --msgbox 'Hello World' 5 20






ここで、5,20はそれぞれ、ダイアログボックスの縦と横のサイズ。
dialog --infobox 'Please wait' 10 30;sleep 4
sleep無しだとすぐプロンプトに戻る。
次は、シェルスクリプト(c shell)で

set NAME=`dialog --stdout --inputbox 'Enter your name:' 8 40`
echo "your inpted name is $NAME"

入力値の出力先を標準出力に変更しています(デフォルトは、標準エラー出力)。
次は、yes/no の選択

  1 dialog --title "title" --yesno "Are you ready?" 6 25
  2 switch($status)
  3         case '0':
  4           echo "Let's go !!"
  5           breaksw
  6         case '1':
  7           echo "Hurry up !!"
  8           breaksw
  9         default:
 10           echo "Invalid return val."
 11           breaksw
 12 endsw

次は、先ほどのシェルスクリプトを閲覧する
dialog --textbox main.csh 10 60

スクロールも可能になっている。j/kのvimのキーバインドでもスクロールできる。
次は、複数のリストから一つを選択。

  1 set COLOR=`dialog --menu --stdout "Choose one:" 10 30 2 1 red 2 green 3 blue    ` # 10-> ボックスの高さ 30-> ボックスの幅 2 -> メニューの高さ
  2 switch ($COLOR)
  3         case 1:
  4           echo "You choosed red"
  5           breaksw
  6         case 2:
  7           echo "You choosed green"
  8           breaksw
  9         case 3:
 10           echo "You choosed blue"
 11           breaksw
 12 endsw


項目数よりメニューの高さが小さいとスクロールできるようになります。
次は、portsのコンパイルでおなじみ複数の項目を選択する。checklist スペースで項目の選択/非選択をスイッチします。

  1 set LIST=`dialog --stdout --separate-output --checklist "test" 10 40 3 \
  2         1 first item \
  3         2 secound item \
  4         3 third item`
  5 foreach i ($LIST)
  6         echo "Proccessing for $i"
  7 end



次は、複数の項目から1つの項目を選択する。RadioBox

  1 set ITEM=`dialog --stdout --backtitle "Your OS" --radiolist "Select your OS.    " 10 40 4 1 Windows off 2 Mac on 3 Linux off 4 FreeBSD off`
  2 echo "Your OS is $ITEM"



参考サイト: http://www.linuxjournal.com/article/2807?page=0,0





2012年10月22日月曜日

[mediawiki] インストール

freebsd + apache + php5 + mySQL

に mediawikiをインストールした。

mediawiki 本家サイトから本体をDLそして、展開

wget http://download.wikimedia.org/mediawiki/1.19/mediawiki-1.19.2.tar.gz
tar xvf mediawiki-1.19.2.tar.gz

そして、apacheの公開ディレクトリに適当に配置して所有権をapacheを走らせるユーザーに変える。その後、http://your-host/mediawiki/mw-config/index.php
にアクセス。

Fatal error: Call to undefined function xml_parser_create() in/usr/local/www/apache22/data/wiki/includes/installer/PhpBugTests.php on line 37



と言われた。「php-xml」モジュールが入っていなかったためで、portsで「php5-xml」をインストール。

次に、データベースと、mediawiki用DBユーザーの作成。(password等は適宜変更)


reate database wikidb;
 grant create, select, insert, update, delete, alter, lock tables, index on wikidb.* to 'wikiuser'@'localhost' identified by 'password';
 flush privileges;


あとは、mediawiki の質問にいくつか答えれば、インストール完了。

2012年10月14日日曜日

[gdb] main関数内ステップ実行

gdb ./a.out

break main

step


なお、ブレークポイントの情報表示

info break

2012年10月13日土曜日

[redmine] INSTALL on FreeBSD

Ubuntu にインストールしようとしてweb Serverとしてapacheを使う当たりで断念したredmine FreeBSDでインストールを試みた所成功したみたいなのでメモ

当方環境:FreeBSD 9.0-RELEASE
portsでインストールされたredmine : 1.3.1.stable

インストールは主に下記ステップで行っていく。
[1] redmine のインストール
[2] DBの用意と接続設定  (MySQL)
[3]DB テーブル等作成
[4]軽量サーバーでテスト
[5] apache上で稼働させる

それでは、スタート
[1] redmine のインストール

cd /usr/ports/www/redmine
make config-recursive

configでは、以下を有効にした
use animation progree bar
LDAP

そして、
make install

これでうまく行けば、/usr/local/www/redmine/ にインストールされている。

cd /usr/local/www/redmine/

[2] DBの用意と接続設定  (MySQL)
以下でDB とredmine用のアカウントを作成する。パスワードは適宜変更する。

create database redmine character set utf8;
create user 'redmine'@'localhost' identified by 'my_password';
grant all privileges on redmine.* to 'redmine'@'localhost';

そして、BD接続用の設定。サンプルファイルをコピーする。
cd config
cp database.yml.example database.yml

そして、先ほど作成したDBとアカウントの情報に適宜変更する。password は#で伏せてます。


production:
  adapter: mysql
  database: redmine
  host: localhost
  username: redmine
  password: ######
  encoding: utf8

development:
  adapter: mysql
  database: redmine_development
  host: localhost
  username: redmine
  password: ######
  encoding: utf8


[3]DB テーブル等作成
セッションの暗号化の為に下記コマンドを実行

rake generate_session_store

[redmine install directory]/app に移動して初期テーブルおよびレコードを作成のために下記コマンドを実行
 cd app

RAILS_ENV=production rake db:migrate


RAILS_ENV=production rake redmine:load_default_data


[4]軽量サーバーでテスト
ここで、本家wikiでは、一時ディレクトリ等の作成を行っているが、FreeBSDインストールの場合インストール時に作成されているのでスキップして軽量サーバーでここまでがうまく行っているかどうかテスト。

ruby script/server webrick -e production

そして、サーバーの3000番ポートにアクセスして表示されればおk。

[5] apache上で稼働させる
passengerを試用してRuby on Rails アプリケーションをapache上で稼働させます。
まず、passengerのインストール
gem install passenger

そして、モジュールのコンパイル。この段階の最後の方でapacheの設定追加事項のサンプルが表示されるので適宜コピーしておきたい。

passenger-install-apache2-module

無事完了したら、apacheの設定ファイル。/usr/local/etc/apache22/httpd.conf と同/extra/http-vhosts.conf にそれぞれ以下を追加する。
-/usr/local/etc/apache22/httpd.conf -

## passenger cofiguration
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.17
PassengerRuby /usr/local/bin/ruby18
PassengerDefaultUser www
RailsBaseURI /redmine

-/usr/local/etc/apache22/extra/http-vhosts.conf-

<VirtualHost*:80>
  PassengerAppRoot /usr/local/www/redmine
  RailsBaseURI /redmine
  RailsEnv production
</VirtualHost>

そして、apacheの公開ディレクトリからredmineのpublicディレクトリにシンボリックリンクを張る
cd /usr/local/www/apache22/data/
ln -s /usr/local/www/redmine/public/ redmine

最後に設定を反映させるためにapacheの再起動
/usr/local/etc/rc.d/apache22 restart

そして、http://server-address/redmine にアクセスして表示されれば無事終了!


[参考サイト]
本家redmine wiki http://www.redmine.org/projects/redmine/wiki/RedmineInstall



2012年10月2日火曜日

bzip2 と xz

この両者の圧縮形式について既出のサイトもあるけど自ら確かめるという意味で

を圧縮->伸長してみた。。。
結果から言うとbzip2は、比較的圧縮が速く、伸長が比較的遅い。xzはその逆。
両者ともtimeコマンドの結果。
[圧縮]
zip2 : 0.015u 0.001s 0:00.01 100.0% 0+0k 2+6io 21pf+0w
xz    : 0.027u 0.006s 0:00.03 66.6% 0+0k 0+0io 0pf+0w

[伸長]
bzip2 : 0.007u 0.002s 0:00.01 0.0% 0+0k 0+9io 9pf+0w
xz      : 0.001u 0.001s 0:00.00 0.0% 0+0k 1+4io 2pf+0w

あとは、メモ マニュアリーにtarで丸めてxzで圧縮。

tar cvf - testData | xz > testData.txz

マニュアリーに伸長してtar戻す
xzcat testData.txz | tar xvf -

[Mac] gitとp4mergeのインストール

 port search git
で検索

 sudo port git-core

これでgitのインストール完了。
p4mergeのインストール

http://www.perforce.com/downloads/complete_list

より自分の環境のバイナリをDL

Macの場合は、dmgファイルをDLしてマウント。
p4.merg.appを/Applications/に入れる。

そして、gitから起動用のシェルスクリプトを2つ作成。
[p4merge]

#!/bin/sh

P4MERGE=/Applications/p4merge.app/Contents/MacOS/p4merge

${P4MERGE} $*

[p4diff]

#!/bin/sh

P4MERGE=/Applications/p4merge.app/Contents/MacOS/p4merge

[$# -eq 7 ]&& ${P4MERGE} "$2" "$5"

実行権限を与えてPATHを通したディレクトリに置いておく。

そして、.gitconfigでmergtoolの設定。
[~/.gitconfig]

merge]
  keepBackup = false;
  tool = p4merge
[mergetool "p4merge"]
  cmd = p4merge "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
  keepTemporaries = false
  trustExitCode = false
  keppBackup = false
[diff]
 external = p4diff

以上でgitを使った快適環境の完成




2012年9月24日月曜日

[Mac Ports] 試用

MacPortsがインストールできたのでためしにgftpをインストールしてみた

portsの検索は、

ports search name gftp

インストールは、

sudo port install gftp

2012年9月23日日曜日

[Mac] コマンドラインからGUIテキストエディタ

Ubuntuでは、コマンドラインで
$ gedit hoge.txt
とかするとgeditがhoge.txtを開いてくれるのだがMacでのこのやり方が分からなかったのでメモ。

結論から言うとMacのテキストエディタは、「textedit」でこれをopenコマンドから起動するという構図

open -a textedit

でおk

[Mac] MacPortsのインストール

開発環境を整えるべくMacPortsをインストールしたのでメモ

まず、MacPortsには、Xcodeが必要ということで「App Store」からDL&インストール。(1.6Gbyte 程ある
Apple IDが必要になるのでまだ作っていない場合は、作成する。

Xcodeのインストールが済んだらMacPortsをサイトからDLしてくる。ダウンロードしたpkgファイルを開くとインストーラーが起動するので指示に従ってインストールを遂行する。

すると、インストーラがPATHを通してくれる。俺の場合は、tcshをログインシェルにしているので「${HOME}/.tcshrc」に設定を追記してくれていた。

そして、さらに「Launchpad」からXcodeを起動してインストールする。


# MacPorts Installer addition on 2012-09-23_at_18:18:55: adding an appropriate PATH variable for use with MacPorts.
setenv PATH /opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.

確認のためにMacPortsのバージョンを表示してみた。
$port version
Version: 2.1.2

そして、Apple Developperに行って自分の環境にあった「Command Line Tools for Xcode」をDL&INSTALLする。

以上で完了。

[phpMyAdmin] http error 324が帰ってくる

phpMyAdmin(Ver.3.5.2.2)を使っていると

HTTP の324エラーステータスが帰ってくる

httpのログを見てみると、
php Fatal error: Call to undefined function PMA_sanitize()とある。

調べると phpMyAdmin/libraries/Message.class.phpを修正する必要があるとのこと。
まず、バックアップを取る。

cp Message.class.php Message.class.php.org

そして、以下が既存のファイルとの差分。

*** Message.class.php.org Sat Sep 22 23:42:45 2012
--- Message.class.php Sat Sep 22 23:44:19 2012
***************
*** 537,543 ****
       */
      static public function decodeBB($message)
      {
!         return PMA_sanitize($message, false, true);
      }
 
      /**
--- 537,543 ----
       */
      static public function decodeBB($message)
      {
!         return PMA_sanitize($message);
      }
 
      /**

2012年9月22日土曜日

[php+MySQL] DBへの接続

phpにてMySQLのDBに接続しようとしたら

Undefined function mysql_connect();

と言われた。調べてみると
php5-myqlが入ってないことが分かった。
インストールして無事解決。

cd /usr/ports/databases/php5-mysql/
make config-recursive
make install


2012年9月20日木曜日

[php] APC関連のエラー

Warning: Unknown: Unable to allocate memory for pool. in Unknown on line 0
というエラーが表示され何なのか全くわからなかった。

追記:結局APCを使いこなせなかったためやむを得ず
apc.cache_by_default=0として無効化した。

Google先生に聞いてみると。PHPの中間コードのキャッシュをとるAPCというモジュールの中間ファイルのキャッシュファイルを指定していないためであった。

cd /usr/local/etc/php
touch apc.ini

でapcの設定ファイルを作成して下記を追加することでエラーはでなくなった。

apc.mmap.file_mask=/dev/zero

さらにapc.ttlの値を小さくする。これは、この値秒アクセスが無い場合、キャッシュから削除するというもの。つまりこれを現在のものより小さくする。

apc.ttl=60
これは、キャッシュサイズ。適度に大きくする。
apc.shm_size=125M

[phpMyAdmin] サンプルDBの用意

phpMyAdminにログインすると下記のようなエラーメッセージが出ている。

phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。

1.必要なデーターベースおよびテーブルの作成
これは、サンプルのsqlファイルを読み込むことで作成できる。DBServerにログインして

SOURCE /usr/local/www/phpMyAdmin/examples/create_tables.sql

2.専用ユーザー(pma)を作成
データーベースにアクセスする専用ユーザー(pma)を作成する。

GRANT ALL ON pma phpmyadmin.* TO pma@localhost IDENTIFIED BY "pma_password";

パスワード(pma_password)は、適宜変更する。

3.無効になっている機能を有効にする
サンプル設定ファイルをコピーして適宜変更する。

cp /usr/local/www/phpMyAdmin/config.sample.inc.php /usr/local/www/phpMyAdmin/config.inc.php

そして、下記のように変更する。なお、pmaのパスワードは、pma追加時に指定したパスワードに読み替える。


$cfg['Servers'][$i]['controlhost'] = ”;
$cfg['Servers'][$i]['controluser'] = ‘pma’;
$cfg['Servers'][$i]['controlpass'] = ‘pmapass’;
$cfg['Servers'][$i]['pmadb'] = ‘phpmyadmin’;
$cfg['Servers'][$i]['bookmarktable'] = ‘pma_bookmark’;
$cfg['Servers'][$i]['relation'] = ‘pma_relation’;
$cfg['Servers'][$i]['table_info'] = ‘pma_table_info’;
$cfg['Servers'][$i]['table_coords'] = ‘pma_table_coords’;
$cfg['Servers'][$i]['pdf_pages'] = ‘pma_pdf_pages’;
$cfg['Servers'][$i]['column_info'] = ‘pma_column_info’;
$cfg['Servers'][$i]['history'] = ‘pma_history’;
$cfg['Servers'][$i]['table_uiprefs'] = ‘pma_table_uiprefs’;
$cfg['Servers'][$i]['tracking'] = ‘pma_tracking’;
$cfg['Servers'][$i]['designer_coords'] = ‘pma_designer_coords’;
$cfg['Servers'][$i]['userconfig'] = ‘pma_userconfig’;
$cfg['Servers'][$i]['recent'] = ‘pma_recent’;
$cfg['Servers'][$i]['table_uiprefs'] = ‘pma_table_uiprefs’;
$cfg['Servers'][$i]['auth_swekey_config'] = ‘/etc/swekey-pma.conf’;

以上が終わったらphpMyAdminに再ログインする。



参考Blog: http://www.kakashi.biz/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0/phpmyadmin-%E7%92%B0%E5%A2%83%E4%BF%9D%E7%AE%A1%E9%A0%98%E5%9F%9F%E3%81%8C%E5%AE%8C%E5%85%A8%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%80%81/

[php] php.iniの用意

On FreeBSD
サンプルファイルとして下記2種類がある。
利用目的にあわせてファイルをphp.iniとして/usr/local/etc/にphp.iniとしてコピーして中身を適宜編集。
/usr/local/etc/php.ini-development
/usr/local/etc/php.ini-production

2012年9月19日水曜日

termcapについて

terminatorを使ってFreeBSDに初めてログインしてviをおもむろに使うと

「No terminal database found」

と言われた。viは、どの環境でも始めから問題なく使えると信じ込んでいたので、びっくりした。といっても悪いのは、viではないのだが。。。

UNIXおよびLinuxも含めUNIX Likeな環境は、そもそもネットワークからログインされつことを前提に今日まで発展してきており、様々な端末から接続される可能性がある。
端末によってサーバーと実際にやり取りされるエスケープシーケンスとカーソル等の挙動の対応が異なっているらしく、それぞれの端末のエスケープシーケンスと実際の挙動を定義したものがTermcapらしい。

冒頭のエラーは、terminatorのエントリが/etc/termcapの中になかったためである。

termcapにterminatorにエントリを追加するには、FreeBSDにterminatorをインストールするのが手っ取り早い。

まあ、道具は、一般的かつ普遍的なものを使うべきだということでしょうね。。。

2012年9月17日月曜日

[Mac] IMEのOn/OFFショートカットキー割当て変更

UbuntuでもWindowsでもIMEのOn/OFF切り替えは、[Shift-Space]と決めているので
Macでもそのように変更する。

今回、参考にさせて頂いたブログは、下記

http://kaworu.jpn.org/kaworu/2010-09-25-1.php

そして、ショートカットキー割当ての設定を行うツールが「KeyRemap4MacBook」
http://pqrs.org/macosx/keyremap4macbook/index.html.ja

上記URLからzipファイルをDLして適当にunzipして、dmgファイルからツールを
インストール

するとシステム環境設定に「KeyRemap4MacBook」のアイコンができるのでそこから起動してFor Japanese->Change Space Key->Shift+Space to KANA/EISU (toggle)にチェックを入れて閉じると設定が反映されている。

設定終了後に設定反映のおまじないがいらない当たりが便利だけどなんだが不安になる。

また、このツールでコピペのショートカットキーの設定変更も完了させた

2012年9月16日日曜日

vsftp from xinetd

stand-aloneではなく、xinetdからFTPサーバ(vsftp)を構築する。
今回も On FreeBSD (Ver. 9.0)

まず、xinetdをコンパイル&インストール

cd /usr/ports/security/xinetd
make config-recursive
make install


マニュアル、「man vsftpd.conf」や
 http://www.express.nec.co.jp/linux/distributions/knowledge/network/xinetd.html

参考にさせてもらいながら設定をする。
デフォルト設定ファイルを/usr/local/etc/xinetd.confを作成して、以下を記述。

#default configuration
defaults{
  instances = 60
  log_type = FILE /var/log/servicelog # syslog も指定できるみたい
  log_on_success = PID
  log_on_failure = HOST
  disabled = restatd
  cps = 35 30
}

includedir /usr/local/etc/xinetd.d


起動時にサービス起動できるように./etc/rc.confに以下を追加

xinetd_enable="YES"

つぎにvsftpのコンパイル&インストール

cd /usr/ports/ftp/vsftp
make config-recursive
make install

設定に関するドキュメントは、/usr/local/share/doc/vsftpd/EXAMPLE/INTERNET_SITE/
以下にある。

まず、xinetdの各サービスの設定ファイルを格納するディレクトリを作成する
mkdir -p /usr/local/etc/xinetd.d

そして、xinetdのvsftpd用の設定ファイルのサンプルファイルをコピーする

cd /usr/local/share/doc/vsftpd/EXAMPLE/INTERNET_SITE/
cp vsftpd.xinetd /usr/local/etc/xinetd.d/vsftpd

そして、コピーしたファイルに少し手を加える以下は、サンプルと手を加えた後のファイルの差分。



*** vsftpd.org Sun Sep 16 01:18:59 2012
--- vsftpd Sun Sep 16 01:03:52 2012
***************
*** 5,15 ****
          socket_type             = stream
          wait                    = no
          user                    = root
!         server                  = /usr/local/sbin/vsftpd
          per_source              = 5
          instances               = 200
!         no_access               = 192.168.1.3
!         banner_fail             = /etc/vsftpd.busy_banner
          log_on_success          += PID HOST DURATION
          log_on_failure          += HOST
  }
--- 5,15 ----
          socket_type             = stream
          wait                    = no
          user                    = root
!         server                  = /usr/local/libexec/vsftpd
!         #server_args             = start
          per_source              = 5
          instances               = 200
!         banner_fail             = /usr/local/etc/vsftpd.busy_banner
          log_on_success          += PID HOST DURATION
          log_on_failure          += HOST
  }

banner_fail は、instancesで指定した上の接続要求が来た場合のメッセージを格納したファイルをしていしており。中身は、下記のようにした。

421 Server busy , please try again later.


さらに、vsftpd本体の設定ファルサンプルをコピーする。

cp /usr/loca/share/doc/vsftpd/EXAMPLE/INTERNET_SITE/vsftpd.conf /usr/local/etc/

そして、自分の環境に合わせてコピーした設定ファイルを変更する。下記は、サンプルファイルと変更後ファイルの差分である。

*** /usr/local/share/doc/vsftpd/EXAMPLE/INTERNET_SITE/vsftpd.conf Sat Feb  2 10:30:40 2008
--- /usr/local/etc/vsftpd.conf Sun Sep 16 00:39:40 2012
***************
*** 1,6 ****
  # Access rights
! anonymous_enable=YES
! local_enable=NO
  write_enable=NO
  anon_upload_enable=NO
  anon_mkdir_write_enable=NO
--- 1,7 ----
  # Access rights
! listen=NO # default では、YESらしくこれは、スタンドアロンを意味するのでNOを指定
! anonymous_enable=NO 
! local_enable=YES
  write_enable=NO
  anon_upload_enable=NO
  anon_mkdir_write_enable=NO
***************
*** 17,23 ****
  ascii_download_enable=NO
  async_abor_enable=YES
  # Performance
- one_process_model=YES # linux 用の設定なので削除
  idle_session_timeout=120
  data_connection_timeout=300
  accept_timeout=60
--- 18,23 ----

そして、下記ディレクトリ作成

mkdir /usr/share/empty



ここまでで一応設定は完了

xinetdを起動する

/usr/local/etc/rc.d/xinetd start

そして、ftpログインしてみる

ftp 127.0.0.1

無事ログイン出来ればOK

しかし、この設定では、ログイン後にホームディレクトリ以上に移動できてしまうのでそれを禁止したい。
chrootの設定をする必要がある。今回は、外部公開は、していないのでとりあえず次回。

2012年9月12日水曜日

[FreeBSD] make config-recorsiveのやり直し

タイトルの通りコンパイルオプションの指定し直しは、

rm -r /var/db/ports/*

2012年9月10日月曜日

[MySQL+PHP] 文字化け(クエッションマーク)

以前にもMySQL+PHPを扱った時には、文字化けに悩まされたが今回も悩んだ

MySQLの日本語を含むレコードがあるテーブルをダンプすると日本語部分が「?」と表示される。
DBの照合順序は、「utf-8」になっているので、mb_convert_encodingを使ったがだめだった。

my.cnfの[mysqld]節に「skip-character-set-client-handshake」を挿入してもだめだった。

結論は、「mysql_select_db」の後に「mysql_set_charset("utf8")」を挿入するだった。

2012年9月9日日曜日

[phpmyadmin] 導入

FreeBSDで導入してみた
xampp on Ubuntu しか使えない弱情な自分ですがなんとかログインまではできました


まず、コンパイル

cd /usr/port/databases/phpmyadmin/
make config-recursive
make install

すると、/usr/local/www/phpMyAdmin に配置されます。
当然普通の環境では、ここは、ドキュメントルート外なのでapacheのAliasを設定します。
httpd.confで

etc/apache22/Includes/*.conf

となっているので、etc/apache22/Includes/phpmyadmin.confを作成して以下を記入。

Alias /phpmyadmin "/usr/local/www/phpMyAdmin"

<Directory "/usr/local/www/phpMyAdmin">
Options none

Order Allow,Deny
Allow from all
</Directory>

さらに、phpMyAdminのディレクトリ以下をapacheのプロセスがアクセス可能にパーミションを適宜設定しておく。
そして、ディレクトリへアクセスした場合にindex.phpを処理するように httpd.confにindex.phpを追加

<IfModule dir_module>
   DirectoryIndex index.html index.php
</IfModule>

このindex.phpの追加に気づくまで、半日、http://localhost/phpmyadmin/にアクセスして403ステータスが帰って来るを繰り返してた。。。。(汗

あとは、設定を反映させるためにサーバーのプロセスを再実行

/usr/local/etc/rc.d/apache22 restart

そして、自分がエイリアスを設定したURLにアクセスしてログイン画面が表示されればOK!

しかし、ログインしてみると下記のようにあるのでまだ設定が足りない感じ

phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。

[apache] 実行ユーザー/グループの確認

httpd.confを確認する

私の環境では、

User www
Group www

となっていた。

[shell tips] ディレクトリのみを再帰的にchmod

find . -type d -print | chmod 755

[MySQL] ファイルに記述されたSQL文の実行

mysql -uuserName  -pyourPasswd  dataBaseName  < textFile

[mySQL] databaseの選択

USE database_name;

[FreeBSD] ports検索

以下は、nkfを探している例

cd /usr/port/

make search name=nkf

[FreeBSD] CDのマウント

/etc/fstabにCDに関する記述がある場合は、こんなことしなくてもいいらしいけどマニュアリーにやってみます。

まず、マウントポイントの作成

mkdir /media/cdrom0

そして、マウント

mount -t cd9660 /dev/cd0 /media/cdrom0


[FreeBSD] ブートメッセージの確認

/var/run/dmesg.boot

にブートメッセージが記録されている

2012年9月8日土曜日

[FreeBSD] 依存するportsも考慮したライブラリのUpdate

php5をコンパイルしていたら「libpcre」が古ぃよごらぁと叱られた
libpcreは、複数のアプリが使用しており途方に暮れた

google先生に聞いてみたところgihyo.jpのページにもろな記事があった


portmaster の場合は下記で依存ソフトウェアも含めてコンパイルできる。

env LOCALBASE=/usr/local portmaster -w -D -G --no-confirm -r pcre

-w ) ビルト後に古いライブラリを/usr/local/lib/compt/pkgに移動する

-D ) Distfileを削除しない?

-G ) make config を抑止する

--no-confirm ) update時にユーザーに問わない

-r ) 指定されたport を依存するものも含めて再コンパイル

[apache] 組み込まれているモジュールの確認

/usr/local/sbin/httpd -l

2012年9月7日金曜日

[FreeBSD] コンパイル時のオプション確認

portsのコンパイル時のオプション確認

目的のportsのディレクトリで

make showconfig

[FreeBSD] パッケージの衝突

php5インストール時にpkgconfigがインストールされているものより新しいバージョンが必要であった。

pkg-delete -f pkg-config-version


[port] 最新のソースをfetch

portsnapを使った方法

初めて使うとき

portsnap extract

2回目から

portsnap fetch update

[apache] 起動時のFQDNがしていされてないというメッセージ

apache起動時に

httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

とFQDNが指定されていないと言われる場合

httpd.confに

ServerName host-name:80

を追加

[FreeBSD] ログインシェル変更

chsh -s path-to-login-shell

なお、ここで指定するPATHは、/etc/shellsに指定されていなければいけない。

[ports] 習うより慣れろ

ということで apacheのインストールをしてみた。いくつか壁にぶつかったが本質的な問題は以下


  • ライブラリがインストールされない
  • ライブラリがインストールされているが古い
  • ライブラリがインストールされているがサーチパスに入っていない

まず一つ目 portsによるインストール方法

make config # コンパイルオプションの指定
make install clean # コンパイルしてコンパイル後に作業ファイルを削除

なお、依存関係のあるportsを再帰的にconfigしてくれる「make config-recursive」というおまじないも

追記: config-recusiveしたのを削除したいときは、
cd /var/db/ports
rm -rf *

次に2つ目
まず、古いバイナリを削除

make deinstall

そして、最新のソースを取得して、コンパイル
port fetch update
make install clean

Hint ) どこにどんなportsがあるかわからないときは、
本家サイトに行って検索

最後に3つめ

/etc/ld.so.conf

に望みのPathを追加後更新を反映するために下記を実施

ldconfig


また、portmasterというportsを管理するためのツールもあるらしい
まだまだ勉強が必要

2012年9月3日月曜日

Arduino始めました

今更感が果てしないですがArduino始めました
雑誌等で名前は聞いたことがあってこの度
あることをやりたくなってそれがArduinoでやるのが早そうなんで初めて見ました

そのあることは、だいぶ勉強が必要そうなので成功した折には、投稿するということで

秋葉原の千石電商に買いに行って来ました
事始めの課題としては、温度センサの値を「簡易Webサーバーから見れるようにする」です。

まず、買ってきたEthernetシールドのMACアドレスをメモします。
Arduino Uno上に実装してしまうと見えづらくなってしまうので注意が必要です。

こちらが、接続状況外観。Arduino Uno上にEthernetシールドを実装しております。温度センサには、「LM35DZ」(こちらは、秋月電子で購入)を使用。

こちらは、ブレッドボード側。
そして、こちらがArduino側。
きちんとLM35DZのデータシートを見て接続します。

次にArdunioのIDEのインストール。Arduinoのサイトより自分のプラットフォームの物をDLし、解凍。
なお、今回の開発は、Windowsで行なっています。次にArduinoとPCをUSBケーブルで接続します。ディバイスマニジャーを開き「不明なディバイス」と表示されているArduinoの項目を探して、プロパティより、「ドライバの更新」を選択。IDEのインストールディレクトリ内のdrivers\FTDI USB Drivers\を指定する。これでドライバのインストールは完了。ここで、セットされたCOMポートを確認しておく。

そして、\libraries\Ethernet\examples\WebServerディレクトリを自分の好きな開発用のディレクトリにコピーしてくる。これは、アナログポートの値を表示する簡易Webサーバーのサンプルである。
ここいらの情報は、適宜ググっていただきたい。

サンプルの変更ができたらいよいよ、プログラムをROMに書き込む。ここでIDEの「ツール-シリアルポート」ドライバインストール時に指定したCOMポートが選択されていることを確認する。

そして、ROMにプログラムを書き込み、Ethernetシールドに割り当てたIPアドレスにアクセスした結果が以下である。


analog input0が温度センサの出力である。Arduino のADコンバータは、量子化ビットが10bitである。そして、LM35DZは、今回の回路の場合0℃で0mV且つ10mV/℃で出力する。さらに入力電圧は、5Vである。

ゆえに温度は、

59/1024 x  5 x 1000 /  10 = 28.8 (℃)

となる。




2012年8月27日月曜日

[gnuplot] 小技

pm3dでz軸をログ軸にする
set logscale cb
pm3dでカラーバーに表示される数字のフォーマットを変更
set format cb "10^{%L}"
ylabelの位置を変える
set ylabel "hogehoge" -1,0

2012年8月26日日曜日

[c] 共有ライブラリの作成とライブラリ検索PATHについて

Ubuntu特有の作法でハマったのでメモ まずは、ライブラリの作成

hello.h
#ifndef HELLO_H
#define HELLO_H

void sayHello();

#endif

hello.c
#include
#include"hello.h"

void sayHello(){
   printf("Hello!!\n");
}

そして、共有ライブラリ作成。ここでは、ヘッダーファイルは、${HOME}/include/に置いておく。 出力するライブラリ名には、バージョンも含めた名前にしてみた。

 gcc -I ${HOME}/include/ -fPIC -shared hello.c -o ${HOME}/lib/libhello.so.1
そして、${HOME}/lib/にて、シンボリックリンクを作成。新しいバージョンができたらこのリンクを作り替える。
 ln -s libhello.so.1 libhello.so
さらにライブラリを使う側を実装。
use.c
#include"hello.h"

int main(){
   sayHello();
   return 0;
}
そして、コンパイル。
gcc -I ${HOME}/include -L${HOME}/lib -lhello use.c
-lで、「libhello.so」のlibと拡張子を除いたものを指定。-LでそのライブラリのPATHを指定する。

そして、コンパイルが通り喜び勇んであせって
./a.out
などど実行すると。
./a.out: error while loading shared libraries: libhello.so: cannot open shared object file: No such file or directory
と叱られる。ライブラリの検索PATHに${HOME}/libが無いためである。ここで普通は、LD_LIBRARY_PATHに${HOME}/libを追加するのだが、Ubuntuでは、ldconfigを使うらしい。
/etc/ld.so.conf.d/内に自分用の設定ファイルを適当な名前で作成してライブラリがあるPATHを記入する。
/etc/ld.so.conf.d/libmy.conf
/home/hoge/lib
そして、設定を反映させるために
sudo ldconfig
すると無事ライブラリを使用したプログラムを実行できる
./a.out 
また、リンクするライブラリを確認するには、
ldd a.out

[c] 型の値範囲

バイナリデータを扱うようになって意識するようになったのでメモ

#include
#include

int main(int argc,char **argv){
   printf("size of char: %d bit\n",CHAR_BIT);
   printf("         char  range is %d -> %d\n",CHAR_MIN,CHAR_MAX);
   printf("  signed char  range is %d -> %d\n",SCHAR_MIN,SCHAR_MAX);
   printf("unsigned char  range is 0 -> %u\n",UCHAR_MAX);
   printf("         int   range is %d -> %d\n",INT_MIN,INT_MAX);
   printf("unsigned int   range is 0 -> %u\n",UINT_MAX);
   printf("         short range is %d -> %d\n",SHRT_MIN,SHRT_MAX);
   printf("unsigned short range is 0 -> %u\n",USHRT_MAX);
   printf("         long  range is %ld -> %ld\n",LONG_MIN,LONG_MAX);
   printf("unsigned long  range is 0 -> %lu\n",ULONG_MAX);
   return 0;
}
以下がi386環境での実行結果
size of char: 8 bit
         char  range is -128 -> 127
  signed char  range is -128 -> 127
unsigned char  range is 0 -> 255
         int   range is -2147483648 -> 2147483647
unsigned int   range is 0 -> 4294967295
         short range is -32768 -> 32767
unsigned short range is 0 -> 65535
         long  range is -2147483648 -> 2147483647
unsigned long  range is 0 -> 4294967295
以下がamd64環境での実行結果
size of char: 8 bit
         char  range is -128 -> 127
  signed char  range is -128 -> 127
unsigned char  range is 0 -> 255
         int   range is -2147483648 -> 2147483647
unsigned int   range is 0 -> 4294967295
         short range is -32768 -> 32767
unsigned short range is 0 -> 65535
         long  range is -9223372036854775808 -> 9223372036854775807
unsigned long  range is 0 -> 18446744073709551615

2012年7月28日土曜日

[doxygen] 入門



色々調べた結果採用する方向です

まず、なんとかFORTRANのコードで基本的なhtml出力は得られたのでメモ。

[1] Installation
sudo apt-get install doxygen
 でOK

[2] Minimum use

fortranのコードがある場所で
doxygen -g hoge.conf
これで、標準的な出力設定ファイルが生成される。名前は、任意でOK.
次に、自分用にカスタマイズする。以下にオリジナルとカスタマイズ後のファイルの差分を示す。
ポイントは、「OPTIMIZEU_FOR_FORTRAN」や「EXTRACT_ALL」をYESにして、
「FILE_PATTERNS」に「*.f」を設定している点です。また、コードを表示するために「SOURCE_BROWSER」と「INLINE_SOURCES」をYESにします。

また、ソースに書式通りにコメントを書き込みます。下記に例を示す。
そして、
doxygen hoge.conf
とすると./html/index.htmlが出力されます。
今回の投稿は、最小限の使用ですので今後は下記についてが課題になると思います。

■出力ディレクトリ等の設定
■latex経由のPDF出力

---- 設定ファイルの差分---
*** org.conf 2012-07-28 13:39:06.803258079 +0900
--- common.conf 2012-07-28 13:36:44.702147423 +0900
***************
*** 25,31 ****
  # The PROJECT_NAME tag is a single word (or a sequence of words surrounded
  # by quotes) that should identify the project.
  
! PROJECT_NAME           =
  
  # The PROJECT_NUMBER tag can be used to enter a project or revision number.
  # This could be handy for archiving the generated documentation or
--- 25,31 ----
  # The PROJECT_NAME tag is a single word (or a sequence of words surrounded
  # by quotes) that should identify the project.
  
! PROJECT_NAME           = "First use of doxygen"
  
  # The PROJECT_NUMBER tag can be used to enter a project or revision number.
  # This could be handy for archiving the generated documentation or
***************
*** 199,205 ****
  # sources only. Doxygen will then generate output that is more tailored for
  # Fortran.
  
! OPTIMIZE_FOR_FORTRAN   = NO
  
  # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
  # sources. Doxygen will then generate output that is tailored for
--- 199,205 ----
  # sources only. Doxygen will then generate output that is more tailored for
  # Fortran.
  
! OPTIMIZE_FOR_FORTRAN   = YES
  
  # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
  # sources. Doxygen will then generate output that is tailored for
***************
*** 297,313 ****
  # Private class members and static file members will be hidden unless
  # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
  
! EXTRACT_ALL            = NO
  
  # If the EXTRACT_PRIVATE tag is set to YES all private members of a class
  # will be included in the documentation.
  
! EXTRACT_PRIVATE        = NO
  
  # If the EXTRACT_STATIC tag is set to YES all static members of a file
  # will be included in the documentation.
  
! EXTRACT_STATIC         = NO
  
  # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
  # defined locally in source files will be included in the documentation.
--- 297,313 ----
  # Private class members and static file members will be hidden unless
  # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
  
! EXTRACT_ALL            = YES
  
  # If the EXTRACT_PRIVATE tag is set to YES all private members of a class
  # will be included in the documentation.
  
! EXTRACT_PRIVATE        = YES
  
  # If the EXTRACT_STATIC tag is set to YES all static members of a file
  # will be included in the documentation.
  
! EXTRACT_STATIC         = YES
  
  # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
  # defined locally in source files will be included in the documentation.
***************
*** 591,597 ****
  # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
  # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
  
! FILE_PATTERNS          =
  
  # The RECURSIVE tag can be used to turn specify whether or not subdirectories
  # should be searched for input files as well. Possible values are YES and NO.
--- 591,597 ----
  # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
  # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
  
! FILE_PATTERNS          = *.f
  
  # The RECURSIVE tag can be used to turn specify whether or not subdirectories
  # should be searched for input files as well. Possible values are YES and NO.
***************
*** 690,701 ****
  # Note: To get rid of all source code in the generated output, make sure also
  # VERBATIM_HEADERS is set to NO.
  
! SOURCE_BROWSER         = NO
  
  # Setting the INLINE_SOURCES tag to YES will include the body
  # of functions and classes directly in the documentation.
  
! INLINE_SOURCES         = NO
  
  # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
  # doxygen to hide any special comment blocks from generated source code
--- 690,701 ----
  # Note: To get rid of all source code in the generated output, make sure also
  # VERBATIM_HEADERS is set to NO.
  
! SOURCE_BROWSER         = YES
  
  # Setting the INLINE_SOURCES tag to YES will include the body
  # of functions and classes directly in the documentation.
  
! INLINE_SOURCES         = YES
  
  # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
  # doxygen to hide any special comment blocks from generated source code
***************
*** 1389,1395 ****
  # toolkit from AT&T and Lucent Bell Labs. The other options in this section
  # have no effect if this option is set to NO (the default)
  
! HAVE_DOT               = NO
  
  # By default doxygen will write a font called FreeSans.ttf to the output
  # directory and reference it in all dot files that doxygen generates. This
--- 1389,1395 ----
  # toolkit from AT&T and Lucent Bell Labs. The other options in this section
  # have no effect if this option is set to NO (the default)
  
! HAVE_DOT               = YES
  
  # By default doxygen will write a font called FreeSans.ttf to the output
  # directory and reference it in all dot files that doxygen generates. This
***************
*** 1464,1470 ****
  # the time of a run. So in most cases it will be better to enable call graphs
  # for selected functions only using the \callgraph command.
  
! CALL_GRAPH             = NO
  
  # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
  # doxygen will generate a caller dependency graph for every global function
--- 1464,1470 ----
  # the time of a run. So in most cases it will be better to enable call graphs
  # for selected functions only using the \callgraph command.
  
! CALL_GRAPH             = YES
  
  # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
  # doxygen will generate a caller dependency graph for every global function
***************
*** 1472,1478 ****
  # the time of a run. So in most cases it will be better to enable caller
  # graphs for selected functions only using the \callergraph command.
  
! CALLER_GRAPH           = NO
  
  # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
  # will graphical hierarchy of all classes instead of a textual one.
--- 1472,1478 ----
  # the time of a run. So in most cases it will be better to enable caller
  # graphs for selected functions only using the \callergraph command.
  
! CALLER_GRAPH           = YES
  
  # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
  # will graphical hierarchy of all classes instead of a textual one.
ソースコメント記入例
      
   !-----------------------------------------------------------
      ! MODULE: test program
      !> @author
      !> Author name
      !
      ! DESCRIPTION:
      !> test program for using doxigen 
      ! REVISION HISTORY:
      ! 16 Apr 2012 - Initial Version
      ! TODO_28_jul_2012 - add explain of subroutine add - todo1
      !-----------------------------------------------------------
      program test
      integer a,b
      a=1
      b=2
      write(*,*) a
      call add(a)
      write(*,*) a
      call add(b)
      end
      !> Subroutine add
      !> @param[in] sa you want to add 1
      !> @brief 
      ! add 1 to argument
      subroutine add(sa)
      integer sa
      sa = sa + 1
      end

[memo] コードドキュメンテーションツールとか

FORTRANにも対応しているjavadoc的なツールが必要になったので調べたメモ

■doxygen
詳細調査中
■sphinx
こちらは、javadoc的なツールではないが、この言語(?)でドキュメントかいておけば、htmlページとかPDFとかlatexやmanとかにコンバートできるよ的なツール
一瞬思ったけどTeXでいいよなこれ

2012年7月23日月曜日

[win7]勝手にウィンドウを最大化しないようにする

めずらしくいや初めてかもしれない Windowsネタ

「Windowsは、こっちが予期しないことを勝手にしがちで、したいことがしづらい」

のいい例

「Windows 7」においてウィンドウをデスクトップの端に持って行ったときに最大化かってにさせない方法

コントロールパネル(非カテゴリ表示)を開き

コントロール パネル\すべてのコントロール パネル項目\コンピューターの簡単操作センター\

をたどり。

「マウスを使いやすくする」を開く。

そして、「ウィンドウが画面の端に移動されたときに自動的に整列されないようにします」
のチェックを入れる。




ちなみにLinux含めUNIX LIKEなOSは、
「こっちが、指示した事だけを黙々とこなし、こっちがしたい事ができる」

2012年7月22日日曜日

[tcsh] 設定ファイルロードプライオリティ

bashの次は、
tcsh

ログインシェルの場合
/etc/csh.cshrc
  ↓
/etc/csh.login
  ↓
~/.tcshrc
  ↓
~/.login

ログインシェル以外は、
/etc/csh.cshrc
  ↓
~/.tcshrc 又は ~/cshrc

[シェル] プロンプト

今回は、プロンプトのカスタマイズ、cシェル系とbシェル系で異なる。

まずは、bシェル系 シェル変数「PS1」に設定する。
  PS1="\u@\H:\w$ "

cシェル系は、シェル変数「prompt」に設定する。
自分の場合

  set prompt="%n@%m:%~%# "

%n : 自分のアカウント名
%m : ホスト名
%# : スーパーユーザーならば「#」一般ユーザーならば「>」を表示

2012年7月20日金曜日

[bash] 設定ファイルロードプライオリティ

自分は、主にUbuntuでcシェル派だったが仕事でRHELの環境でbashを使わざるをえない機会があって今回意識させられた。




まずは、Ubuntuの場合、


bash(ログインシェル)の設定ファイルは以下の順序で読み込まれる。
1) /etc/profile  
    ↓
2) /etc/bash.bashrc
    ↓
3) ~/.bash_profile (ある場合)
    ↓
4)~/.bashrc (ある場合)
    ↓
5)~/.bash_login (ある場合)
    ↓
6)~/.profile (ある場合) 


bash(ログインシェルではない場合)
1)/etc/bash.bashrc
    ↓
2)~/.bashrc

Ubuntuの場合ログインシェルにしろログインシェルでないにしろ~/.bashrcは読み込まれる。
しかし、RHELは違った。むしろ、Ubuntuがいろいろ調べると"異端"な感想を持った。

ログインシェルの場合~/.bashrcは読み込まれないということである。
つまり、一般的なUNIX互換な環境では、
ログインシェルの場合

1) /etc/profile  
    ↓
2) ~/.bash_profile (ある場合)

    ↓
3)~/.bash_login (ある場合)
    ↓
4)~/.profile (ある場合)


であり、
ログインシェルでない場合。
1)~/.bashrc


となるらしい。
つまり、RHELの場合、ユーザー固有のシェルの設定は、~/.bash_profileに書くこととなる。








2012年7月12日木曜日

[システム設計哲学]MediaWikiに見る

タイトル中の"システム"とは、広義の意味であり、

広辞苑によると
複数の要素が有機的に関係しあい、全体としてまとまった機能を発揮している要素の集合体
とある。さらに私的には、最後の「の集合体」を削除した意味としたい。つまり、複数の要素の集合も要素という風に解釈するのである(再帰的な表現)。

さらに、”システム設計哲学”という専門用語自体あるかどうか定かではない。

なんだかここまで書いただけでもカオス感たっぷりだが、何回か投稿を重ねるうえでこの私の考える”システム設計哲学”を定かなものとして(体系立てて)いきたい。


その第1回目は、MediaWikiを通した考察。Wikiエンジンは、MediaWiki以外にも有名どころでは、PukiWikiなど多数あるが、ほかのWikiエンジンに同様の仕組みがあるか知らなく、MediaWikiに限定する必要はないのかもしれないがあえてMediaWikiに限定した。


MediaWikiは、WikiPediaのWikiエンジンとして採用されていることは、みなさんご存じであろう。


私は、Wikiのページ間の関連のさせかたとして、階層構造をもたせるのが良いのではないかといつも感じでいた。


しかし、本家WikiPediaでは、ページ間に階層構造なんて持たせていない。


なぜのなか?もやもやしていた。




それを最近あるブログの投稿がすっきりさせてくれた。


http://blog.livedoor.jp/lionkid/archives/3096475.html

とくに最後のこの一文。

複雑系は、階層を持たない平坦なページを使い、タグでグループ分けするのが基本だ。
ここでは、哲学的に昇華させるとすれば下記だと思う。

「巨大なシステムの要素は、階層構造で整理するのではなく、それぞれの要素の属性のみでかんりするのが良い。」

しかし、こう書いておきながらもこの一文は、私が傾倒する "UNIX哲学"とは、相容れない部分もあるのではとも考えてしまう。

まだまだ、考察が足りない。



2012年7月6日金曜日

Bloggerへ投稿するコードのハイライト化

常々しなければと思っていて暇だったのでやってみた。 コードを見やすくするためのプラグインの追加。 自分が入れたのは、「SYNTAX HIGHLIGHTER Ver.3」

基本的には、参考サイトを訪れてそこに書いてある通りにやればいい。

まず、お好みのテーマを決める。
そして、次は、対応させたい言語を選択して、JavaScriptへのリンクのコードを生成。そのコードをBloggerのテンプレートの</head>直前に挿入。

投稿時は、下記のようにする。


<pre class="brush:c;">int main(int argc,char **argv){
    printf("Hello Worild!!\n");
    return 0;
}
</pre>



以下サンプル

int main(int argc,char **argv){
    printf("Hello Worild!!\n");
    return 0;
}


参考サイト: http://www.way2blogging.org/2011/03/how-to-add-syntax-highlighterv3-to.html

2012年7月5日木曜日

[expect] 対話的コマンド

UNIX哲学 においては、バッチ処理の妨げになる極力対話的なインターフェースは避けるようかかれていますが、やはり世の中には、対話処理が必要な場面もある。

ということで今回は、expectコマンドを知ったのでメモしておく。
先に参考にさせていただいたサイトを示しておく。

http://202.253.248.12/gijutu/expect/howto-expect.html#b-interact

expectコマンドの基本を押さえるべくヤマハルーターにtelnetでログインして「show enviroment」コマンドを実行してログアウトするというお題を設定。

expectコマンドは、-cオプションを用いる方法、スクリプトファイルにする方法(#!/usr/bin/expect)、シェルスクリプトでヒアドキュメントとする方法等が考えられるが。

今回は、そんなに長くないコードであるため、シェルスクリプト内にヒアドキュメントで埋め込む方法とした。


<pre class="brush:shell">

set RHOST="192.168.100.1"
set RUSER="hoge"
set RPASSWD="hoge"
expect <<EOF
  set timeout -1
  spawn telnet $RHOST
  expect "Username: "
  send "$RUSER\n"
  expect "Password: "
  send "$RPASSWD\n"
  expect ">"
  send "show environment\n"
  expect ">"
  send "quit\n"
  expect ">"
EOF

</pre>

2012年6月26日火曜日

[アプリ開発] android SDKのインストール #2

今回は、「Hello World」まで行きたかったが、以外にEclipseのAndroidのプラグインのインストールにてこずったのでその対処法までをメモ。

まず、 前回インストールした。Android SDKのSDK Managerを以下コマンドで起動。

$ ${Android SDK Installed Directory}/tools/android &

tools内と自分がターゲットにしたいandroidバージョン内の物は、インストールする。

次にEclipseのAndroidのプラグイン、ここで以前Eclipseをパッケージマニジャーからインストールしたかもしれないが、Eclipseは、最新(ここが今日のポイント。いろりろやったがこれが一番の解決法)の自分の環境用の物を

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

からとってくる。linux(64bit)の場合は、DLして解凍してできたディレクトリのeclipseがそのもの。

そして、[Help-Install New Software]で

https://dl-ssl.google.com/android/eclipse/

を追加して、ADT pluginをインストールする。

インストールが完了したらEclipseを再起動して、[Window-Preferences]の左のツリーでAndroidを選択して、SDKのロケーションを指定する。そして、Applyボタンを押す。
今日は、ここまで。。。。



次回は、 http://developer.android.com/training/basics/firstapp/creating-project.html からスタート!!

2012年6月24日日曜日

[VPN] androidのVPN(PPTP)

YAMAHAルーター(nvr500) を運用開始以降

普通のウェブブラウジング程度のことしかしておらず、宝の持ち腐れも甚だしい状態だったので
ルーターでVPN(PPTP)サーバー機能を有効にしてAndroid(3G網 ISP:mopera U)から自宅LANへアクセスしてみた。

接続時ルーターからvpn接続された旨を知らせるアラームが鳴動するため接続は、できてるぽいが、確認のためルーターの設定ページにアクセスしようとするができない。

うだうだ調べているとAndroidのVPN(PPTP)にはバグがあるらしい

http://code.google.com/p/android/issues/detail?id=4706

対策法としては、接続法をVPN(IPIP)かVPN(IPsec)に変更するくらいしかない。

IPIPは暗号化してないしこんなんじゃVPNの意味がない。
IPsecはルーターが対応していない。

なんだかな。。。。

2012年6月22日金曜日

[HTML5] フォームを試してみた

HTML5フォームコントロール
HTML5のフォームを試してみた。 あまりこれらのコントロールを使ったサイトは、見ない。
使うと結構便利そうだが、ColorがChromeが未対応などブラウザ側の対応がイマイチだから広まらないのかな。。。

Form Control of HTML5

Search Box

Normal Textbox: HTML5:

Telephone Number input

Please access from iPhone (or Android?!)

URL input

Please try to click "Send" after you input random text

Mail Address input

Please try to click "Send" after you input random text

Number input


Slider


Date Picker


Color Picker



2012年6月18日月曜日

[楽譜作成] MuseScore

今まで、いろんな楽譜作成のフリーソフトを試してきたがこれが一番高機能で音符もキレイでいい感じ

http://musescore.org/ja

Windowsだけでなくまだ試してないがLinuxでも動くらしい。

[アプリ開発] android SDKのインストール #1

だいぶ間が開いてしまい頓挫する雰囲気が漂っているのですこしでもすすめる

今回は、android SDKのインストール
まず、当方開発環境を記しておく。

OS: Ubuntu 10.04 amd64 (lucid) on virtual-box

http://developer.android.com/sdk/installing.html#troubleshooting を参考にしながらSDK
まず、32bit用ライブラリ「ia32-libs」のインストール.パッケージマネージャー、ソフトウェアセンタ、コマンドラインお好きな方法でインストール。

お次に、「sun-java6-jdk」をインストールと行きたいが、なぜかパッケージが無いため、「default-jdk」をインストール。
そして、「eclipse」のインストール。

さらに、android-SDKのDLとインストール。 http://developer.android.com/sdk/index.html
から自分の環境用のSDKをDL、自分の場合は、android-sdk_r18-linux.tgz 
DLしたらtgzファイルを解凍する。
解凍したら、適宜解凍してできた「android-sfk-linux」の中の「SDK Readme.txt」を読む。どうでもいい話だが、ファイル名にスペースを含んでるのは、何かいただけない。READMEファイルを見るとその開発者やグループの質が分かるような気がする。

そして、とりあえず試しに、tools中の「android」を
./tools/android &
で実行してみる。無事パッケージマネージャが起動したらおk。

本日は、ここまで。
次回は、HelloWorldにチャレンジ

2012年6月13日水曜日

[github] pushおさらい

新しいマシンからgithubのリポジトリにpushするのにできなくてハマった
後から考えると当たり前のことだが念のためにメモ

まず、新しいリポジトリにPUSHしようとしたら
error: The requested URL returned error: 403 while accessing https://github.com/


と言われた。


これは、githubは、sshでアクセスするのがデフォルトなためでリポジトリ内の
.git/config中の
url=https:// … を 「url=ssh://git@github.com/******/******.git」と書き換える。


これで、いけること思いきや次は、
Permission denied (publickey).


と言われた。
これは、新しいマシンからPUSHしようとしたので新しいマシンの公開鍵が登録されていないだけであった。
とりあえず、


ssh-keygen


で公開鍵を作成。公開鍵(「~/.ssh/id_rsa.pub 」の内容)をコピーして、githubのプロフィールページのssh keysに追加してペースト。


以上で無事pushできた。


やっぱり、普段自分が使ってる。設定ファイル等は、githubで管理しておくといろんなPCでcloneすればいいんで便利。

2012年6月10日日曜日

[vtk]vtkフォーマット

表記の件については、

http://www.tukizakura.org/~fujim2/cgi-bin/pukiwiki/pukiwiki.php?UnstructuredGrid%B7%C1%BC%B0%20Legacy


公式ドキュメントが参考になる。

http://www.vtk.org/VTK/help/documentation.html


[gnuplot]格子状ではない3次元データのプロット

表記の件について


gnuplot> set dgrid3d 30,30
gnuplot> set hidden3d


あらかじめ上記をやる。これで格子点のデータを推定してくれる。

あとは、普通にsplot

引用: http://t16web.lanl.gov/Kawano/gnuplot/plot3d2.html#6.6

2012年6月9日土曜日

[GSL]ベッセル関数

現在、非構造格子の数値解析の結果をParaViewにvtkで読ませるノウハウを構築中
1時点ののスカラーデータの読み込みと表示は何とかできるようになった。


次は、複数の時点のデータでアニメーションの作成。これは、連番のvtkファイルを読ませることで出きることが分かっている。
問題は、お題。いろいろ考えた結果、太鼓などの膜の振動にすることにした。
数学的なことは、全然わからないがベッセル関数というのがその解らしいということを以前gnuplotの某有名サイト( http://t16web.lanl.gov/Kawano/gnuplot/ )で見たことがあったのでこれにした。

とりあえず課題用のデータを作ることに、CのGNUによる科学技術計算ライブラリ「GNU Scientific Library」を使うことにした。
以下のソースを 「gcc -lgsl -lgslcblas -lm -I /usr/local/include/ bessel.c」でコンパイルで
2次元データ作成用プログラムは、完成。




#include<stdio.h>

#include<stdlib.h>

#include<gsl/gsl_sf_bessel.h>



int main(int argc,char** argv){

   int min,max,num,i,j;

   double x,xmin,xmax,xdel;

   double *result;



   max=100;

   min=1;

   num=max-min+1;

   xmin=0;

   xmax=50;

   xdel=0.5;

   result=malloc(sizeof(double)*num);

   for(x=xmin;x<=xmax;x+=xdel){

      gsl_sf_bessel_Jn_array(min,max,x,result);

      printf("%f ",x);

      for(j=0;j<=num-1;j++){

         printf("%f ",result[j]);

      }

      printf("\n");

   }

   free(result);

 return 0;

}



2012年6月5日火曜日

[プログラミング] Segmentation Faultの原因

Segmentation Faultが起こるのは、配列として確保している以上の要素に
アクセスしようとした場合だけと思っていたがそれ以外にも原因となりうる事項が
あることが分かった

http://www.isus.jp/article/fortran-special/sigsegv-or-sigbus-errors/

は参考になりそうなサイト

2012年6月3日日曜日

[FreeBSD] ソースを近いサーバーから取ってくる

FreeBSDは、ソースをportsというツールで取ってきてコンパイルする作法だということまでは知っていた。


このソースとってくるサーバーデフォルトでは、ドイツのサーバになっていたので日本のミラーサーバを以下の方法で指定する。

/etc/make.conf に以下を追加。(ない場合は作成)


MASTER_SITE_OVERRIDE?=ftp://ftp.jp.FreeBSD.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/

[tcsh] コマンドの補完

FreeBSDを勉強してみることにした

新しい環境に入るとほかの環境では、当たり前だったことが当たり前でないことが多々ある(PCの場合で書いたつもりの1行だが意外と哲学的になった

tcshでコマンドの補間をするためのtips

~/.tcshrc

に以下を追加

set autolist

[アプリ開発] おまけ

テキストからの音声生成について調べていた中からのおまけ

http://www.neospeech.com/

↑は、結構なめらかに喋ってくれる。

このなかの日本(女性)で以下を喋らせるとかなりリアル。てか聞いたことあるぞ

「今度の発車は、2番線から品川、新橋、日本橋方面、急行印旛日本医大行きです。」

[アプリ開発] テキストからの音声生成

アプリ開発に関する投稿その2

今回は、テキストからの音声生成について

本アプリでは、iSpeech社のAPIiを使用することとする。噂では、google先生は、ここの技術を使っているらしい。

まず、iSpeech社のHP を訪れて開発者の登録をして API keyを入手する。
このAPI key が音声生成に必要になる。

次回は、
https://www.ispeech.org/developers/android

よりAndroidのサンプルアプリケーションをDLしてSDK上でAPIの使用等について
観察するつもり。。。

[アプリ開発] アプリの概要

以下のようなandroidアプリを作ろうと思う
まぁ、いつ挫折するかはわからないがメモ的にこれから綴っていきます。アドバイス、指摘、私も作っていいという方がおられましたら、コメントくださるとありがたいです。
そんな訳で第1回目。


アプリ名:未定
開発の経緯:朝の忙しい時間に「今7:00そろそろ朝ごはんを食べてください」などと指定した時間にケータイが喋ってくれるとありがたいと思ったため
機能:任意の時刻に任意のテキストを読み上げる。


[リモートデスクトップ] Linux->Win

メインマシーン(Win7)のモニターが映らなくなった時にリモートで入れるようにしとけばよかったという教訓から

今日モニターが修理から帰ってきたので早速リモート(RDP)でノート(Linux)から入れるようにした.

まず,サーバー側(WIn)でリモートログインを許可しておく.

Windows7の場合
winマーク->コンピュータを右クリック->システム->リモートの設定
「リモートデスクトップを実行しているコンピューターからの接続を許可する」にチェックでOK
あと,DHCPの場合は,IP アドレスを固定しておくといいかも...


お次にクライアント側(Linux Ubuntu)
TerminalServerClientが入ってない場合は,入れて,サーバーのアドレスとユーザー名を入れて説速でOK

Ubuntu->Win7 へのリモートログイン

[facebook] 連携テスト

blogger と facebookの連携を「My Blog Posts」で始めました

[FORTRAN] 並列プログラミング

入門用によさげなサイト

https://computing.llnl.gov/tutorials/openMP/exercise.html

2012年6月1日金曜日

[FORTRAN] gfortranでコンパイル

Windowsのフリーのコンパイラで大学の時は,コンパイルしたが,
今回gfortranでコンパイルしてハマったのでメモ

[quote]
gfortran input.f
[/quote]
でコンパイルするが
[quote]
 Non-numeric character in statement label at (1)
[/quote]
としかられてHelloWorldなプログラムすらコンパイルできない.

いろいろ調べてみると.
FORTRANは歴史ある言語ゆえ「パンチカード」などが絡んでることが分かった・

fortranには,「fixed-form」(固定形式)と「free-form」(自由形式)という2つの記述形式があり,前者は,1行にかける文字数が規定されているなどパンチカードにコードを書く(いや穴を開ける?!)形態を意識した規定になっており,後者は,その様な規定が緩く,ナウい記述形式だということ.
(非常にアバウトだが補足や指摘があればよろしくです.

そして,gfortranでコンパイルするには,

gfortran -ffree-form input.f

とオプションを指定しないと悪い事が分かった.


2012年5月3日木曜日

[delphi]グループコンポーネントの扱い

フォームにTEdit1~TEdit6という具合に複数コンポーネントがあってこれらを一括して扱うための方法を ( http://gumina.sakura.ne.jp/CREATION/OLD/COLUMN/CD1GOBJ.htm ) で見つけたのでメモ。

c番目のTEditのTextフィールドを書き換えたい場合

// 宣言部
var str : array[1..6] of TEdit;

for i := 1 to 6 do str[i] := TEdit(FindComponent('Edit'+InttoStr(i)));

//書き換え部
str[c].Text := 'replaced string';

-解説-
FindComponentは、string で指定した。コンポーネントがないか照査し、そのオブジェクトを返すという関数らしい。

2012年4月23日月曜日

Win7で英語配列キーボード

無事に大学院を卒業できて関東に引っ越してきてk昨日やっとネットが開通したので初投稿

お題は、Windows7(64 bit)でUS配列(103配列)のキーボードを使うです
研究室時はもちろんlUbuntuだったから日本語入力できる環境でもキーボードの配列を変えることは自由自在

しかし、Windowsはそう簡単にはいきません。そこであれこれ調べたところレジストリにて、ドライバーを差し替ればいいことがわかった

まず、レジストリエディタを開いて

HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥i8042prt¥Parameters


をたどる。


そして、

  Before After
LayerDriver JPN kbd106.dll kbd103.dll
OverrideKeyboardIdentifier PCAT_106KEY PCAT_103KEY
OverrideKeyboardSubtype 2 0


てな具合に値を変更
そののち再起動(ここで再起動しないと悪いなんてなんだかなぁ)

日本語入力のON/OFFは、[Alt+`]でできる。
しかし、Ubuntuの時は、[Shift+Space]だったから
それに変えたい。

いろいろ調べたらあった
言語バー上で右クリック→設定→全般タブ→Microsoft Office IME 2010のプロパティ→編集操作→変更

ここで、IMEオン/オフのキー割り当てを好みのものに変える

やっぱり、つくづく思ったがWindowsはとことんカスタマイズしにくいOSである。

2012年3月23日金曜日

xperiaの電池

愛機xperiaの動作が最近不安定で再起動連発なので今日ショップにいってみた

はっきり言って専門のスタッフじゃないと分かりかねますのでケータイをお預かりします的な流れを予想していたが

ドコモの店員さんも結構やるじゃんという対応だった

まず始めにインストールしているアプリをチェックされた

そして、その次に電池パックの付け直し

最後に専用の機械で電池の充電量を確かめてみた

するとOS的には(ステータスバーでは)ほぼフル充電表示にもかかわらずその機械で測ると17%しか充電されていなかった

この端末は発売日(2009/04/01)に買ったのでそろそろ二年たつ

動作の不安定性と関係があるかは分からないが電池は取り替え時らしい

OSの情報と実態との乖離があるというのは自分では以外だったし

何よりも失礼だがドコモの店員さんでここまで対応してもらえると思ってなかったので驚いた

2012年2月10日金曜日

[EPS]Symbolフォントを含むファイルの編集

今日無事に?!一回目の修士論文の提出が終わったw

論文提出間際に,グラフの追加が入りそのグラフ(epsファイル)には,
Symbolフォントの文字が含まれていて,そのグラフを編集しようと
Inkscapeに読み込ますとそのSymbolフォントの文字が表示されない.

今こうして調べて分かったのは,普通にSymbolフォントが無いためであることが分かった.

その時は,eps2epsに文字列をアウトライン化してもらうことで対処した.

急いでいるときに限ってこのような問題にぶつかるもんで困る....

2012年1月22日日曜日

[TeX]ヘッダーでページ番号のみ

論文書いてて気づいて多少はまったのでメモする.
というのは, ヘッダーの指定で
\pagestyle{headings}
としてしまっていて章見出しがヘッダーに出力されている.
論文には, 章見出しはいらない. これを, ページ番号
のみにするには,
\pagestyle{headnombre}
とすればいい.

2012年1月19日木曜日

epsの修正

gnuplotで作成したグラフを手直ししようとinkscapeに読み込ませたら拡張文字の部分の文字が変わってる.

対処法を探すよりは, 別のベクター画像エディタを探した方が早いと判断. 
そして, いろいろ調べて見付けたのがtgifと言うツール. 

epsをそのまま読めないので, 
pstoedit -f tgif input.eps output.obj
でobj形式のファイルを生成する. (ちなみに, pstoeditは入ってなかったのでソフトウェアセンターからインストール)そして, 以下のコマンドでobjファイルをtgifで開く.
tgif output.obj &
修正が完了したら保存してtgifを閉じる. そして, objファイルをepsに変換する.
tgif -print -eps -color output.obj
そうするとoutput.epsが出力される.

2012年1月11日水曜日

続->ubuntu的デスクトップ環境

LXDEの投稿の続編でやはりマウス周りがおかしい

新しいウィンドウを開いた直後にそのウィンドウでクリックができなくなる.
前回の症状同様マウスは動きはする.

いろいろ調べて以下の方法で今のところは上記の症状はなくなった.

~/.config/autostart.shを作成し以下を記入.
/usr/bin/gnome-settings-deamon &

そして,再ログイン.