MySQLの起動/再起動時に「Another MySQL daemon already running with the same unix socket.」というエラーが発生した。

作成していたECサイトが表示されなくなってしまい、何が原因なのか調べており、.htaccessの記述がおかしかったのか等を調べたが、テストで同階層に設置したhtmlは正常に表示されていました。

表示されなかったのはデータベースから情報を取得してきているphpファイルだったので、データベースからのデータ取得の際になにか問題があるのではないかと思いデータベースを再起動させてみることにしました。

# /etc/init.d/httpd restart

または

# service mysqld start

MySQLを起動させようとすると、下記のようなエラーが発生していました。

Another MySQL daemon already running with the same unix socket.
mysqld を起動中:                                           [失敗]

Webで検索した際に下記のサイトを見つけたので参考にさせていただき、下記コマンドを実行してみました。 ★http://fnya.cocolog-nifty.com/blog/2013/12/mysql-another-m.html

# service mysqld stop 
  mysqld を停止中:                                           [  OK  ]

# mv var/lib/mysql/mysql.sock  /var/lib/mysql/mysql.sock.bak 

# service mysqld start
  mysqld を起動中:                                           [  OK  ]

MySQLを正常に終了せずに、Apacheを再起動させてしまったのが原因なのでしょうか。 もう少し調べて、追記します。

初めてのPerl 第10章 様々な制御構造 練習問題1

乱数を生成し、それをユーザーに当ててもらうプログラムです。exit、quit、空白の入力があった際と、数字が当たった際にプログラムを終了させています。

#!/usr/bin/perl

use strict;
use warnings;
use 5.010;

#ランダムな数値を生成。
my $random = int(1 + rand 100);

while(<>){
  if($_ =~ /^\s/ ){
    last;
  }elsif($_ =~ m/exit|quit| /){
    last;
  }elsif($_ == $random){
    print "MATCH\n";
    last;
  }elsif($_ > $random){
    print "Too High\n";
  }elsif($_ < $random){
    print "Too low\n";
  }else{
    last;
  }
}

=pod
#こちらも上記と同じ動きをします。
while(<>){
  last if $_ =~ m/^\s/;
  last if $_ =~ m/exit|quit| /;
  print "Too High\n" if $_ > $random;
  print "Too Low\n"  if $_ < $random;

  if ($_ == $random){
    print "MATCH\n";
    last;
  }
}
=cut

実行コマンドは以下の通りです。

$ ./practice1

数字がマッチした時の結果です。

50
Too High
40
Too High 
30
Too low
35
MATCH

exitが入力された時の結果です。

50
Too low
60
Too low
exit
$(コマンドの入力に戻る)

※ifを一文で書くコードも考える。

初めてのperl 第9章 正規表現によるテキスト処理 練習問題4

今までに作成したプログラムファイルにコピーライトを表示させるプログラムです。ファイルの#!行の直後に挿入されます。

#!/usr/bin/perl

use warnings;
use strict;
use 5.010;

$^I = ".bak";

while(<>){
  if ($_ =~ m/^#!/) {
     $_ .= "##Copyright (C) 2014 by YoursTruly\n";
  }
    print;

=pod

  if($_ =~ m/^#!/o){
    if ($_ =~ s/^\n/##Copylight (C) 2014 YoursTruly/){
      print;
    }
  }
=cut
}

実行コマンドは以下の通りとなります。

$ ./practice4.pl test

渡しているtestファイルには先頭行に「#!/usr/bin/perl」が記載されています。

#!/usr/bin/perl


my $test = "Hello";
print $test;

結果は以下の通りです。

#!/usr/bin/perl
##Copyright (C) 2014 by YoursTruly


my $test = "Hello";
print $test;

初めてのperl 第9章 正規表現によるテキスト処理 練習問題3

受け取ったファイル内のFredをWilmaに変更し、WilmaをFredに変更するプログラムを書きなさい。

#!/usr/bin/perl

use strict;
use warnings;

use 5.010;

$^I = ".copy";

while(<>){
 #swapを利用する際は、###や$$$など使わない(本文中で出てこない)ものを選択する必要がある。

  $_ =~ s/fred/###/gi;
  $_ =~ s/wilma/Fred/gi;
  $_ =~ s/###/Wilma/gi;

  print;
}

実行コマンドは以下の通りです。

$ ./practice3.pl names

namesファイルの内容は以下の通りです。

wilma&fred
fred$wilma

結果は以下の様になります。

Fred&Wilma
Wilma&Fred

※names.copyという名前のバックアップファイルが作成されます。

初めてのperl 第9章 正規表現によるテキスト処理 練習問題2

テキストファイルを元に修正を加えたコピーを作成してください。コピーされたファイルではfred(大文字小文字区別なし)をすべてLarryに書き換えてください。出力ファイルの名前は、入力ファイル名に適応した.outで終わる名前にしてください。

#!/usr/bin/perl

use strict;
use warnings;

use 5.010;

$^I = ".out";

while(<>){
  chomp;
  if($_ =~ s/fred/Larry/gi){
    print $_ . "\n";
  }
}

引数として渡す入力ファイル(names)の内容は以下の通りです。

fredFRedFRED
FREDFRED
fredfred
fred and Fred

実行コマンド配下のとおりです。

$ ./practice2.pl names

上記のコマンドを実行した際には、新しいファイル「names.out」という名前のファイルが作成され、元のファイルの内容をコピーします。

-rw-r--r--  1 vagrant  vagrant     70  1月  8 01:33 names
-rw-r--r--  1 vagrant  vagrant     61  1月  8 01:33 names.out

namesの内容は以下の通りです。

LarryLarryLarry
LarryLarry
LarryLarry
Larry and Larry

names.outの内容は以下の通りです。

fredFRedFRED
FREDFRED
fredfred
fred and Fred

初めてのPerl 第9章正規表現によるテキスト処理 練習問題1

変数$whatに格納されている内容が三回連続して現れるものにマッチするパターンを書いてください。

#!/usr/bin/perl

use strict;
use warnings;
use 5.010;

my $what = 'fred';
=pod
#入力値に対し$whatの内容を3回繰り返したものをマッチさせたい
#もしwhatがfredだったら
while(<STDIN>){
  chomp;
  if($_ =~ m/($what){3}/g){
    print "OK $_\n";
  }else{
    print "NG $_\n";
  }
}
=cut

$what = 'fred|barney';

while(<STDIN>){
  chomp;
  if($_ =~ m/($what){3}/gi){
    print "MATCHED $_ \n";
  }else{
    print "NOMATCHED $_\n";
  }
}

引数として与えたファイルの内容は以下のとおりです。

redfredfred
fredfredBarney
barneybarneybarney
fredbarneyfred
fred
fredbarney
barneyfredfred

実行コマンドは以下の通りです。

$ ./practice1.pl < names.txt

結果は以下の通りです。

MATCHED fredfredfred
MATCHED fredfredBarney
MATCHED barneybarneybarney
MATCHED fredbarneyfred
NOMATCHED fred
NOMATCHED fredbarney
MATCHED barneyfredfred

はじめてのPerl 第8章 正規表現によるマッチ 練習問題6

入力した行のうち、空白文字がある行を全て表示する新しいプログラムを作成してください。出力する業の末尾には、わかりやすいように目印になる文字を表示してください。(空白行が存在する行の末尾には*をつけて表示しています。)

#!/usr/bin/perl

use strict;
use warnings;

use 5.010;

while(<>){
  chomp;
   if($_ =~ /(\s$)/){
     print "$_ *\n"; #*まで空文字が含まれています。
  }else{
    print "$_ \n";
  }
}

入力値として与えたファイルの内容は以下の通りです。

全角スペースは空白文字とはみなされない。 
Space2   
space none
space3    
space5      
space none
spacenone

実行コマンドは以下の通りです。

$ cat names2.txt | ./practice6.pl

結果は以下の通りです。

全角スペースは空白文字とはみなされない。 
Space2   *
space none
space3    *
space5      *
space none
spacenone