リンクアップ
技術評論社
売り上げランキング: 76,716
技術評論社
売り上げランキング: 76,716
% cd /usr/share/redmine/pluginsお決まりのrakeなんちゃらは不要。
% sudo git clone https://github.com/vividtone/redmine_gantt_with_date.git
% sudo service apache2 restart
% sudo mkdir /usr/share/redmine/plugins次にプラグインをダウンロード
% cd /usr/share/redmine/plugins
% sudo git clone https://github.com/onozaty/redmine-view-customize.git view_customize
% cd /usr/share/redmine
% sudo rake redmine:plugins:migrate RAILS_ENV=production
% sudo mkdir /usr/share/redmine/public/plugin_assets
% cd /usr/share/redmine/public/plugin_assets
% sudo ln -s /usr/share/redmine/plugins/view_customize/assets view_customize
// 題名のtitleに内容を設定する機能
$(function(){
var subject_col=0;var id_col=0;
$.each($('table.list th'), function(i){
if($(this).text() == "題名") subject_col=i;
if($(this).text() == "#") id_col=i;
});
if(subject_col!=0){
$.each($('table.list tbody tr'), function(){
var cells = $(this).children();
cells.eq(subject_col).hover(
function(){
if($(this).attr("title")) return;
var target=$(this);
$.getJSON("../../issues/"+cells.eq(id_col).text()+".json",
function(json){
target.attr("title",json.issue.description);
}
);
},function(){}
);
});
}
});
% sudo apt-get install apache2mysql-serverは途中でユーザ名とパスワードを聞かれるので注意。わかんなければ全部rootで入れとけばおk。
% sudo apt-get install mysql-server
% sudo apt-get install redmine redmine-mysql次にpassengerのインストール。途中でwebserverの設定先を聞かれるのでapache2を選択すること。
% sudo apt-get install libapache2-mod-passenger次にbundlerをインストール。ルート権限で実行しないとエラーになる模様。
% sudo gem install bundler次はapache2の設定。apache2は、/etc/apache2/sites-available/000-default.conf
<Directory /var/www/html/redmine>
RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on
PassengerDefaultUser www-data
</Directory>
% ln -s /usr/share/redmine/public /var/www/html/redmine
% /etc/apache2/mods-available/passenger.conf
% sudo chmod 777 /usr/share/redmineこれでhttp://localhost/redmineにアクセスすると使えるようになる。ちなみにログインはadmin/admin。
% sudo service apache2 restart
localhost次に、Linux側の日本語入力環境を整えるため、scim-anthyをインストール。
192.168.0.10
192.168.0.14
% sudo apt-get install scim-anthyeclipseで日本語を入力できるようにするため、~/.bashrcとかに以下を追加。
export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE="scim"
1.Xlaunch起動
スタートメニュー→Xming→Xlaunch
2.マルチプルウィンドウモードでXming起動。
Multiple windows→次へ→start no client→次へ→次へ→完了
3.Cygwinやteraterm等でLinuxマシンにログイン
4.DISPLAY変数を設定
% export DISPLAY=192.168.0.3:0.0
※192.168.0.3はWindows7のIPアドレス
5.eclipse起動
% cd /home/user/tools/eclipse
% ./eclipse
eclipse本体<eclipse-standard-luna-R-linux-gtk.tar.gz>2.以下を順番に実施
eclipseCDT<eclipse-cpp-luna-R-linux-gtk.tar.gz>
JRE<jre-7u60-linux-i586.tar.gz>
日本語化キット<pleiades.zip>
% cd /home/user/tools
% tar zxvf eclipse-standard-luna-R-linux-gtk.tar.gz
% unzip jre-7u60-linux-i586.tar.gz
% tar zxvf eclipse-cpp-luna-R-linux-gtk.tar.gz
% cd /home/user/tools/eclipse
% unzip ../pleiades.zip
% ln -s ../jre1.7.0_60 jre
-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
-Xverify:none
% cd /home/user/tools/eclipse
% ./eclipse -clean
$filename = mb_ereg_replace("〜","~", trim($filename) );が、しかし最近上記でも回避できない事象が・・・
$filename = mb_ereg_replace("〜","~", trim($filename) );
$filename = mb_ereg_replace("戦〜","戦~", trim($filename) );
$filename = mb_ereg_replace("略〜","略~", trim($filename) );
mb_regex_encoding('utf-8');
$filename = mb_ereg_replace("〜","~", trim($filename) );
$filename = mb_ereg_replace("♪","_", trim($filename) );
:(2)~/tools/hubot/external-scripts.jsonを以下の内容で作成。
"dependencies": {
"hubot": "~2.5.1",
"hubot-scripts": ">= 2.1.0",
"optparse": "1.0.3",
"hubot-irc": "0.1.x",
"hubot-logger": "~0.0.11" },
:
["hubot-logger"](3)% npm install
:(5) ~/tools/hubot/runbot.shに以下の設定追加。
log_message = (root, date, type, channel, meta) ->
mkdirp(path.resolve root, channel)
log_file = path.resolve root, channel, date.toString("%Y-%m-%d") + '.txt'
meta.date = date
meta.channel = channel
meta.type = type
if meta.message
cmd = "~/tools/hubot/perl/nkf.pl -in " + escape(meta.message)
exec = require('child_process').exec
exec cmd, (err,stdout,stderr) ->
meta.message=stdout
fs.appendFile log_file, JSON.stringify(meta) + '\n', (err) ->
if err
throw err
else
fs.appendFile log_file, JSON.stringify(meta) + '\n', (err) ->
if err
throw err
:
robot.adapter.bot.on 'message', (nick, to, text, message) ->
result = (text + '').match(/^\x01ACTION (.*)\x01$/)
if !result
log_message(logs_root, new Tempus(), "message", to, {nick: nick, message: text, raw: message })
else
log_message(logs_root, new Tempus(), "action", to, {nick: nick, action: result[1], raw: message })
robot.adapter.bot.on 'notice', (nick, to, text, message) ->
result = (text + '').match(/^\x01ACTION (.*)\x01$/)
if !result
log_message(logs_root, new Tempus(), "message", to, {nick: nick, message: text, raw: message })
else
log_message(logs_root, new Tempus(), "action", to, {nick: nick, action: result[1], raw: message })
:
export IRCLOGS_PORT=3001 #expressがlistenするポート番号以上を設定すると、http://localhost:3001/irclogsでログを参照することができる。
export IRCLOGS_FOLDER="chatlogs" #ログの保存先
# tellme.coffee
module.exports = (robot) ->
robot.hear /^(tellme_del|tellme_add|tellme)(\ | ).+/i, (msg) ->
cmd = "~/tools/hubot/perl/dbbot.pl "+escape('tellme')+" "+ escape(msg.match[0])
exec = require('child_process').exec
exec cmd, (err,stdout,stderr) ->
msg.send stdout
["redis-brain.coffee", "shipit.coffee", "tellme.coffee"]4.perlスクリプトを以下内容で~/tools/hubot/perl/dbbot.plに作成。mysqlのアカウントとパスワードは環境により修正要!
#!/usr/bin/perl
use utf8;
use DBI;
use Encode;
use URI::Escape;
exit if($#ARGV < 1);
$maxcnt=5; # 最大表示レコード数
$tbl=uri_unescape(decode("utf-8",$ARGV[0]));
$tbl=~s/%u([0-9a-fA-F]{4})/pack("U",hex($1))/ego;
$str=uri_unescape(decode("utf-8",$ARGV[1]));
$str=~s/%u([0-9a-fA-F]{4})/pack("U",hex($1))/ego;
$str=~s/\ /\ /g;$pos=index($str,' ');
exit if($pos == -1);
$exeid=substr($str,0,$pos);$key=substr($str,$pos+1);$exeid=~tr/A-Z/a-z/;
if($exeid =~ /.+_add$/){
$pos=index($key,' ');
if($pos == -1){print "内容がないよぅ\n";exit;}
$val=substr($key,$pos+1);$key=substr($key,0,$pos);
}
if($key eq "help"||$key eq "?"||$key eq "?"){
$exeid =~ tr/A-Za-z//;
print "■".$exeid."マクロの使い方\n";
print "\t登録・・・『 ".$exeid."_add <key> <val> 』\n";
print "\t削除・・・『 ".$exeid."_del <key> 』\n";
print "\t参照<完全一致>・・・『 ".$exeid." <key> 』\n";
print "\t参照<部分一致>・・・『 ".$exeid." %<key>% 』\n";
print "\t参照<前方一致>・・・『 ".$exeid." <key>% 』\n";
print "\t参照<後方一致>・・・『 ".$exeid." %<key> 』\n";
print " ※情報が複数ある場合は最大".$maxcnt."つまで表示する\n";
exit;
}
if($exeid =~/.+_add/ || $exeid =~ /.+_del/){
$dbh=DBI->connect('DBI:mysql:hubot', 'root', 'root');
$dbh->do("set names utf8");
$sql='SELECT * FROM `'.$tbl.'` WHERE `key` = '.$dbh->quote($key);%rows=();
$sth=$dbh->prepare($sql);$sth->execute;
while ($row = $sth->fetchrow_hashref()){$rows{$row->{key}}=$row->{val};}
$sth->finish;
if(scalar(keys(%rows)) == 0){
if($exeid =~ /.+_del/){
$dbh->disconnect;print "そんなキーワードないよ!!\n";exit;
}
$sql='INSERT INTO `hubot`.`'.$tbl.'` (`key`, `val`) VALUES ('.
$dbh->quote($key).', '.$dbh->quote($val).');';
$val="追加しました!!";
}
else{
if($exeid =~ /.+_del/){
$sql='DELETE FROM `hubot`.`'.$tbl.'` WHERE `'.$tbl.'`.`key` = '.
$dbh->quote($key).';';
$val="削除しました!!";
}
else{
$sql='UPDATE `hubot`.`'.$tbl.'` SET `val` = '.$dbh->quote($val).
' WHERE `'.$tbl.'`.`key` = '.$dbh->quote($key).';';
$val="更新しました!! 旧->".decode("utf-8",$rows{encode("utf-8",$key)});
}
}
$sth=$dbh->prepare($sql);$sth->execute;
if($sth->err){print "ERROR! ".$sth->errstr."\n";}else{print $val."\n";}
$sth->finish;$dbh->disconnect;
}
else{
$dbh=DBI->connect('DBI:mysql:hubot', 'root', 'root');
$dbh->do("set names utf8");
if($key =~ /.*%.*/){$ope="LIKE";}else{$ope="=";}
$sql='SELECT * FROM `'.$tbl.'` WHERE `key` '.$ope.' '.$dbh->quote($key);
$sth=$dbh->prepare($sql);$sth->execute;%rows=();
while ($row = $sth->fetchrow_hashref()){$rows{$row->{key}}=$row->{val};}
$sth->finish;$dbh->disconnect;
if(scalar(keys(%rows)) == 0){print "そんなキーワードないですよ!!\n";exit;}
foreach $key(keys(%rows)){
print "%u0016".$key."%u000f ".$rows{$key}."\n" if($ope eq "LIKE");
print $rows{$key}."\n" if($ope eq "=");
$maxcnt--;last if($maxcnt < 1);
}
print "・・・以下省略。ほかにもあるよ!!\n" if(scalar(keys(%rows)) > 5)
}
8 send: (envelope, strings...) ->
9 mybot = @bot
10 # Use @notice if SEND_NOTICE_MODE is set
11 return @notice envelope, strings if process.env.HUBOT_IRC_SEND_NOTICE_MODE?
12
13 target = @_getTargetFromEnvelope envelope
14
15 unless target
16 return console.log "ERROR: Not sure who to send to. envelope=", envelope
17
18 for str in strings
19 cmd = "hubot/perl/nkf.pl -out " + escape(str)
20 exec = require('child_process').exec
21 exec cmd, (err,stdout,stderr) ->
22 mybot.say target, stdout
215 bot.addListener 'message', (from, to, message) ->
216 cmd = "hubot/perl/nkf.pl -in " + escape(message)
217 exec = require('child_process').exec
218 exec cmd, (err,stdout,stderr) ->
219 message = stdout
220 if options.nick.toLowerCase() == to.toLowerCase()
221 # this is a private message, let the 'pm' listener handle it
222 return
223
224 if from in options.ignoreUsers
225 console.log('Ignoring user: %s', from)
226 # we'll ignore this message if it's from someone we want to ignore
227 return
228
229 console.log "From #{from} to #{to}: #{message}"
230
231 user = self.createUser to, from
232 if user.room
233 console.log "#{to} <#{from}> #{message}"
234 else
235 unless message.indexOf(to) == 0
236 message = "#{to}: #{message}"
237 console.log "msg <#{from}> #{message}"
238
239 self.receive new TextMessage(user, message)
#!/usr/bin/perlchmod 755 nkf.pl を忘れずに!。
use utf8;use NKF;use URI::Escape;
exit if($#ARGV < 1);
$str=uri_unescape($ARGV[1]);
if($ARGV[0] eq "-in"){print nkf("--oc=utf-8 --ic=ISO-2022-JP",$str);}
else{
$str=~s/%u([0-9a-fA-F]{4})/pack("U",hex($1))/ego;
print nkf("--ic=utf-8 --oc=ISO-2022-JP",$str);
}
$ sudo apt-get install compizconfig-settings-managerすでにある標準のキーボードショートカットをリモコンで実施したい場合は、compizconfigの一般オプション内にあるキー割り当てで割り当てが可能。
#!/bin/sh /usr/bin/dconf load / <<"EOF" [org/compiz/integrated] command-1='/etc/acpi/powerbtn.sh' command-2='~/xbmc/sh/xbmc_start_stop.sh' run-command-1=['<Control><Alt>h'] run-command-2=['<Control><Shift> b'] EOF
・カーソルアニメーションが動作しない。常に矢印の状態。常用するにはちょっと致命的。なので、私はx11vncを使うことにした。設定方法は以下。
・半角/全角キーがきかない。
$ sudo apt-get install x11vnc
$ /usr/bin/x11vnc -forever -nossl -noncache -nolookup -bg -usepw -repeat
<クライアント側>$ x11vnc -storepasswd
# Makefile
CC = /usr/bin/gcc
WINDRES = /usr/bin/windres
CFLAGS = -O2 -mwindows
LDLIBS = -lpthread
.SUFFIXES: .c .o .exe
.SUFFIXES: .rc .res
SRC = $(wildcard *.c)
RES = $(wildcard *.rc)
OBJS = $(SRC:%.c=%.o) $(RES:%.rc=%.o)
TARGET = $(shell basename ${PWD}).exe
all: ${SRC} ${RES} ${OBJS} $(TARGET)
.c.o:
$(CC) ${CFLAGS} -c $< -o $@
.rc.o:
$(WINDRES) -i $< $@
${TARGET}: ${OBJS}
$(CC) ${CFLAGS} ${OBJS} $(LDLIBS) -o ${TARGET}
clean:
rm -f *.o ${TARGET} *~ *.core core
% cd /usr/local/src
% wget http://downloads.sourceforge.net/project/sshpass/sshpass/1.05/sshpass-1.05.tar.gz
% tar zxvf sshpass-1.05.tar.gz
% cd /usr/local/src/sshpass-1.05/
% ./configure --prefix=/usr/local
% make
% make install
% sshpass -p 'pass' ssh user@hostname
#NoEnv
;============================================
;ウィンドウサイズ制御
;コンフィグ
MAX_H=1051
MAX_W=1920
^+i::
WinGet,id,ID,A
if(x%id%= ""){
WinGetPos,x%id%,y%id%,w%id%,h%id%,A
WinMove,ahk_id %id%,,x%id%,0,w%id%,MAX_H
}
Else{
WinMove,ahk_id %id%,,x%id%,y%id%,w%id%,h%id%
x%id%=
y%id%=
w%id%=
y%id%=
}
return
^+k::
WinGet,id,ID,A
if(x%id%= ""){
WinGetPos,x%id%,y%id%,w%id%,h%id%,A
WinMove,ahk_id %id%,,0,y%id%,MAX_W,h%id%
}
Else{
WinMove,ahk_id %id%,,x%id%,y%id%,w%id%,h%id%
x%id%=
y%id%=
w%id%=
y%id%=
}
return
^+j::
WinGet,id,ID,A
if(x%id%= ""){
WinGetPos,x%id%,y%id%,w%id%,h%id%,A
WinMove,ahk_id %id%,,0,0,MAX_W,MAX_H
}
Else{
WinMove,ahk_id %id%,,x%id%,y%id%,w%id%,h%id%
x%id%=
y%id%=
w%id%=
y%id%=
}
return
% sudo dd if=/dev/sda bs=512 count=1 | gzip -c > mbr.dump.gz
→これでMBRとパーティションテーブルに一部がバックアップできる。
% sudo dd if=/dev/sda1 bs=512 | gzip -c > Partition1.dump.gz
% zcat ファイル名 | dd of=デバイス名MBRの復旧は結構めんどくさい。とくにWindowsは厄介だ。インターネットで調べればいくつか方法はでてくるが、どれも俺にとっては難易度が高い。
このパソコンは、リカバリ用のデータがHDD上にあるタイプなので、普通にUbuntuをクリアインストールしてしまうと、二度とWindows Vistaに戻せなくなるので注意が必要。私は怖いので、その辺に転がっていたHDDに換装して実施した。ちなみに換装のとき、やぶるとサポートを受けられなくなるシールをやぶったので、今後メーカーサポートはうけれなくなった。まぁ、価値もほぼないし、問題ない。いざ、インストール!
名前 Aspire L5100 CPU Athlon 64 X2 5600+ 2.9GHz メモリ DDR2 PC2-5300 2GB (スロット数2) ビデオチップ AMD 690G HDD容量 320GB(7200rpm) 光学ドライブ DVD±R/±RW/RAM/±RDL LAN 10/100/1000Mbps 無線LAN IEEE802.11b(11Mbps)
IEEE802.11g(54Mbps)その他機能 HDMI端子
光デジタル端子
IEEE1394
ワイヤレス操作