2012年5月31日木曜日

Ubuntu のApache のcgi-bin の配置場所

Ubuntu のApache のcgi-bin の配置場所は、usr/lib/cgi-bin のようです。/var/www の配下にcgi-ginというディレクトリを作成していたがどうもうまくいかないと思っていました。以下は、Mysqlサーバに接続してテーブルの中身を表示するサンプルのcgiプログラム(rubyで記述)です。






#!/usr/bin/ruby

require "cgi"
require "mysql"


  no = 9

sql = "select id, pass ,comment from pass "
m = Mysql.new('localhost','user_name','password','database_name')
res = m.query(sql)

print "Content-type: text/html\n\n"
print <<EOF
<html>
<body>

Gaitou Kensuu #{res.num_rows} Ken<br>

EOF


i = 0
no_a = [0]
name_a = [0]
res.each do |a|
    no_a[i] = a[0]
    name_a[i] = a[1]
    puts a[0]+" =>"+a[1]+"<br>"
    i += 1
end
print <<EOF
</body>
</html>
EOF
m.close


2012年5月25日金曜日

PHP でファイルの中身を表示するには


以下のサンプルでは、ファイルの中身を1行づつ配列に格納した後に、行頭に行番号をつけて表示します。


<?php



function showLines($f){

     $lines = @file($f) or exit('*can not read file');

     for($i = 0; $i < count($lines); $i++)

         echo ($i+1) . ": " . $lines[$i];

}



echo "ファイル名を入力input file name:";

$a = trim(fgets(STDIN));

showLines($a);



?>



以下のサンプルでは、ファイルを読み込んで表示します。



<?php
echo "input file name:";
$a = trim(fgets(STDIN));
readfile($a);
?>









PHP でファイルの属性を得る


ファイル名を入力すると、ファイルのサイズ、更新日付などを表示します。





<?php



function showInfo($path){

    echo "Path: " . realpath($path) . "\n";

    echo "Type: " . filetype($path) . "\nSize: " . filesize($path) . "\n";

    echo "Modified: " . date('Y-m-d H:i:s',filemtime($path));

    echo "\nAccessed: " .date('Y-m-d H:i:s', fileatime($path));

}



echo "input file name:";

$a = trim(fgets(STDIN));

showInfo($a);



?>



2012年5月23日水曜日

PHP でファイルに保存する


以下の例では、標準入力から読み込んだ行をsave.txtというファイルに追記しています。



<?php

echo "input text:";
$a = trim(fgets(STDIN));
saveText($a);
echo "\n";
readfile('save.txt');

function saveText($str){
  $f = @fopen('save.txt','ab') or exit('fail to access to file.');
  fputs($f,$str . "\n");
  fclose($f);
}
?>


PHPで乱数を発生させる


<?php

/*

   乱数を得るには



*/



   echo "整数を入力:";

   $a = trim(fgets(STDIN));

   for($i = 0;$i < 100;$i++) echo rand(0,$a) . " ";

?>


------------------------------------------------------------------------

その他のPHPの技はhttp://chaos-fractal.blogspot.jp/2011/12/php.html



2012年5月17日木曜日

ruby でExcel を読み書き

こちらでも記載しています。
●Excelから読み込む場合のサンプル1


require 'rubygems'
require 'spreadsheet'

xls = Spreadsheet.open('tests.xls', 'rb') #Excelファイルの読み込み
sheet = xls.worksheet(0) #0番目つまり1番始めのsheetを読み込む

#読み込みの開始が'0'から始まる。
print sheet[0,1] #実際のExcelでは、1行目の2列目の値を読み込み
print "\n"

#行単位で読み込む事も出来ます。
row = sheet.row(2) #3行目のデータを読み込み
print row[2] #3行目の3列目のデータを読み込み
print "\n"


●Excelから読み込む場合のサンプル2

require 'rubygems'
require 'parseexcel'
#Open the excel file passed in from the commandline
workbook = Spreadsheet::ParseExcel.parse(ARGV[0])

#Get the first worksheet
worksheet = workbook.worksheet(0)

#cycle over every row
  j=0
worksheet.each { |row|
# j=0
  i=0
  if row != nil
  #cycle over each cell in this row if it's not an empty row
  row.each { |cell|
    if cell != nil
      #Get the contents of the cell as a string
      #contents = cell.to_s('latin1')
      contents = cell.to_s('utf-8')
      puts "Row: #{j} Cell: #{i}> #{contents}"
    end
    i = i+1
  }
  end
  j = j+1
}



●Excelへ書き込む場合のサンプル1

$KCODE = 'utf-8'

require 'rubygems'
require 'spreadsheet'

Spreadsheet.client_encoding = 'UTF-8'

workbook = Spreadsheet::Workbook.new
worksheet = workbook.create_worksheet(:name => 'test1')

# worksheet[行番号,列番号] で書き込める
worksheet[0, 0] = "hello"
# 行を纏めて書き込むには,worksheet.row(行番号).replaceにArrayを叩き込む
worksheet.row(1).replace ["Matz", "Guido", "Larry"]
# セル内改行もできます
worksheet[2, 0] = "日本語\nです"

workbook.write('tests.xls')



●Excelへ書き込む場合のサンプル2


require 'rubygems'
 require 'axlsx'
#// A Simple Workbook

  p = Axlsx::Package.new
  p.workbook.add_worksheet do |sheet|
    sheet.add_row ["First", "Second", "Third"]
    sheet.add_row [1, 2, 3]
  end
  p.serialize("example1.xlsx")



●Excelへ書き込む場合のサンプル3

require 'rubygems'
 require 'axlsx'
p = Axlsx::Package.new
 wb = p.workbook
 black_cell = wb.styles.add_style :bg_color => "FF000000", :fg_color => "FFFFFFFF", :sz=>14, :alignment => { :horizontal=> :center }
 blue_cell = wb.styles.add_style  :bg_color => "FF0000FF", :fg_color => "FFFFFFFF", :sz=>14, :alignment => { :horizontal=> :center }
 wb.add_worksheet do |sheet|
   sheet.add_row ["Text Autowidth", "Second", "Third"], :style => [black_cell, blue_cell, black_cell]
   sheet.add_row [1, 2, 3], :style => Axlsx::STYLE_THIN_BORDER
 end
 p.serialize("example4.xlsx")


2012年5月9日水曜日

Perl で ファイルの読み込み時にエラーを出すには

Perl  でファイルの読み込み時にエラーが出たときにメッセージを出力するには


例1


$filename = "data2.txt";
if( ! open FH , $filename ){
      print $filename . "  open error\n"; 
}



例2

$filename = "./data2.dat";
open( FH , "$filename" ) || die "Error: $filename $!\n";



2012年5月8日火曜日

Ubuntu 12.04 で Avira AntiVir (挫折)

Avira antivir について
Ubuntu 12.04 上で動作する無料のウイルスチェッカAvira-AntiVirをインストールしようとしたが、dasukoFSのインストールができないので、挫折してしまいました。

antivir-workstation-pers-3.1.3.5-0
  • avupdate-guard
  • avscan
  • dazuko がインストールされていなくてもオンデマンドスキャンだけならできる。

antivir-workstation-pers-3.0.2-5
  • sudo /usr/lib/AntiVir/avupdate --product=Guard ( no valid license )
  • dazukoFS 3.14 のインストールで挫折

2012年5月5日土曜日

Ubuntu でGRUBが消えてしまった

私は、Ubuntu12.04 と WindowsXPのデュアルブートで使用している。PCを起動するとGRUBメニューがでてきて、Ubuntuを起動するかWindowsを起動するか選択できるようになっている。CD-ROMを使用してWindowsXPのリカバリを行なおうとしたところ、その後このGRUBメニューが出てこなくなってしまった。PCを起動すると、すぐにWindowsの起動の画面になってしまい、Ubuntuを起動することができなくなってしまったーと思ってインターネットで調べたところ、対処法がいろいろ書かれてあったので、それにしたがってGRUBメニューを復旧したので、その方法を簡単にメモしておく。
  1. 以下のサイトにしたがって、SUPER GRUB2 DISKをダウンロードして、CD-ROMに焼く。 GRUB2が壊れて起動できない時に、らくちんに修復する!転ばぬ先の「Super Grub Disk」
  2. 上記で作成したCD-ROMを使ってPCを起動させる。起動できるOSの一覧を表示させて、Ubuntu12.04に相当するのを選択するとUbuntuが起動した。
  3. Ubuntuが起動したところで、以下のコマンドを入力する。/dev/sda の部分は環境によって異なる可能性があり。(sudo fdisk -l で調べる)
    sudo /usr/sbin/grub-install /dev/sda


注意事項 今回は、SUPER GRUB2 DISK を使用したが、別の方法で起動することもできる。
  • LiveCDを入れて起動する途中、黒い画面から赤紫色の画面になったところで,F6キーを押してメニュー表示させる。F6キーを押すと、起動オプションを変更することができるようになるため、「boot=casper」となっているところを「root=/dev/sda5」などに変更してEnterすると、起動する。(sda5の部分は使用環境によって異なる。)私の環境では、このやり方で起動すると、なぜかマウスカーソルが動かなくなってしまった。理由は不明。
  • PuppyLinuxなどのLiveCDでは、起動時に、GRUB4DOSなどを選択することができるようになっている。これを使ってGRUBのコマンドを入力して起動させる。以下は、sda5にUbuntuが入っている場合の入力例

    GRUB>root (hd,4)
    GRUB>kernel /boot/vmlinuz-3.2.0-24-generic root=/dev/sda5
    GRUB>initrd /boot/initrd.img-3.2.0-24-generic
    GRUB>boot

Ubuntu 12.04 で BitDefender をインストールした

インストールのやり方は以下のサイトを参照
List of Free Antivirus Software for Ubuntu 12.04


  • 以下のコマンドによりダウロードしてくる。
    wget http://download.bitdefender.com/SMB/Workstation_Security_and_Management/BitDefender_Antivirus_Scanner_for_Unices/Unix/Current/EN_FR_BR_RO/Linux/BitDefender-Antivirus-Scanner-7.6-4.linux-gcc4x.i586.deb.run
  • ダウンロードしたファイルを実行可能にする。
    sudo chmod +x BitDefender-Antivirus-Scanner-7.6-4.linux-gcc4x.i586.deb.run
  • 実行してインストールを行う。
    sudo ./BitDefender-Antivirus-Scanner-7.6-4.linux-gcc4x.i586.deb.run
  • BitDefenderのサイトより1年間のフリーラインセンスを取得する。
    ScannerLicense

使用法
bdscan ←コマンドラインからのスキャン
bdgui ←GUIによる操作


手順書は以下
Docs

Ubuntu 12.04 で AVGをインストール

Ubuntu 12.04 で動作する無料のウイルススキャナAVGをインストールしました。ダウンロードは以下のサイトから。
AVG ANTI-VIRUS FREE EDITION FOR LINUX 2011
やり方は以下を参照
AVG Anti-Virus Free Edition for Linuxとは?
  • 表示される一覧の中からAVG Free Edition for Linux を選択。
  • 拡張子がdebのファイル(avg2012flx-r1786-a4748.i386.deb)がダウンロードされるので以下のように入力してインストールを実行。
    dpkg -i avg2012flx-r1786-a4748.i386.deb
    注意!.debファイルをダブルクリックするとソフトウエアセンターが自動的に起動して、そこからもインストールできるかのようだが、私の環境では「ハンドルできないエラーが発生しました」のエラーメッセージがでてできなかった。
  • その後,Ubuntuを再起動。
  • sudo avgupdate ←データベースをアップデート
  • avgscan /home/hoge ←スキャン

2012年5月3日木曜日

Ubuntu 12.04 で Avast をインストールした。

Ubuntuで使用できるウイルスチェッカとして、Avastをインストールしました。

やりかた

1.以下のサイトから、.debファイルをダウンロードします。(avast4workstation_1.3.0-2_i386.deb)またregistration form というところを押してライセンスキーを取得しておきます。ライセンスキーはメールで届きます。
linux-home-edition
http://forum.avast.com/index.php?topic=91145.0

2.ダウンロードしたavast4workstation_1.3.0-2_i386.debファイルをダブルクリックします。するとUbuntuソフトウエアセンターが起動します。
3.インストールを行ないます。(「パッケージの品質が悪いです」というメッセージが表示されましたが「無視してインストールする」を押しました。)
4.コマンドラインから、avastgui と実行するとライセンスキーの入力を求められるので、取得したライセンスキーをコピーペーストします。
私の環境では、update database ボタンを押すとエラーが発生しました。以下のサイトを参考にして対処を行ないました。
avastのLinux版のアップデートエラーを直す
Ubuntu 日本語フォーラム
Ubuntu 日本語フォーラム

2012年5月2日水曜日

Ubuntu でウイルスチェック

Ubuntu上でもウイルスチェックをかける必要があると感じて去年の5月に行った時のメモが残っていました。
20110515 Linux でウイルスチェック
20110516 Linux 上で動作するウイルスチェッカAvast!


以下はインターネットで見つけたUbuntuで使えるウイルスチェッカに関する記事です。
AVG Anti-Virus Free Edition for Linuxとは?
List of Free Antivirus Software for Ubuntu 12.04


UbuntuにAvastをインストールしたあと、エラーが出て困っていましたが、以下のサイトを参考にさせてもらうことにより問題が解決しました。
Ubuntu 日本語フォーラム
Ubuntu 日本語フォーラム

2012年5月1日火曜日

Perl でファイルを読み込み一行づつ配列に格納するには

Perl でファイルを読み込み一行づつ配列に格納するには(以下の例では、/home/zzz.txtというファイルの中身を一行づつ読み出して表示し、配列に格納しています。最後には、格納した配列の中身を表示しています。)



例1
my @hairetu;
my $i = 0;

open(IN,"/home/zzz.txt");
while( my $Meigara = <IN> )
{
chomp($Meigara);
print $Meigara . "\n";
$hairetu[$i] = $Meigara;
$i = $i + 1

}

print @hairetu . "\n";
print $#hairetu . "\n";

$length = @hairetu;
# print $length;
for( $i=0 ; $i<@hairetu ; $i++ )
{
   print $hairetu[$i] . "\n";
}



例2
$FH = "/home/zzz.txt";
open FH;
@list = <FH>;
foreach $data_line( @list ){
 print $data_line;
}






例3
$datafile="/home/zzz.txt";
open(FH, $datafile);

@list = <FH>;

# 1行ごとに出力

foreach $data_line( @list ) {

print $data_line;

}

LibreOffice と Bit torrent について

Ubuntu には、LibreOffice が自動でついてくるのですが、Windowsの場合には、LibreOfficeを自分でダウンロードしてインストールしなくてはなりません。LibreOffice はBitTorrent形式で配布されており、ダウンロードするにはこれに対応したソフトウエアが必要と思っていました。(もしくは、FireFoxの場合にはアドインを入れることにより、BitTorrentに対応できるようになります。)μTorrent というソフトを以前に使用したことがあったので、紹介するサイトを以下に記します。
uTorrent
上記の時点では、LibreOfiice をダウンロードするにはBitTorrentのクライアントが必要だとばかり思っていましたが、LibreOfficeのダウンロードサイトで、クリックすると普通にダウンロードできてしまいました。なあんだという感じです。(ちなみにブラウザーはGoogleChrome を使用しています。)