不器用なエンジニア見習いのメモ

プログラミングなどのIT関連について学んだことをメモ代わりに書いていきます。 その他興味のあることについても書いていきます。 最近は機械学習に関することをまとめています。 HTML,JavaScript等を使って簡単なゲームを作成して公開しています。

カテゴリ:プログラミング > Linux

参考
「http://note.kurodigi.com/centos7-flashplugin/」
「http://ufuso.jp/wp/?p=13022」
「http://qiita.com/kamina91/items/4d2f2f12df8512fac889」

CentOSの環境で今ブログの管理をしていたのですが、AdobeのFlash Playerがないと不都合があった為、インストールの仕方と、関連してfirefoxの更新の仕方、ついでにvimのカスタマイズの仕方をまとめました。

長くなるので、別ページで書きます。
続きを読む

機械学習のプログラムについては勉強も兼ねてgitでバージョン管理をすることにしました。
以下はそのメモです。



参考「http://qiita.com/wnoguchi/items/f7358a227dfe2640cce3」
「https://git-scm.com/book/ja/v2」

git 初期設定について

・ユーザー情報の設定
git config --global user.name "* *"
git config --global user.email "username@example.com"

・エディタの設定
git config --global core.editor 'vim -c "set fenc=utf-8"'


git diffに色付け
git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto



・push方式の指定

git config --global push.default simple


・設定の確認
git config --list

★機械学習用のディレクトリ
ここからはこのディレクトリを参照する。

home/ML01

・リポジトリの設定
(「ML01」ディレクトリで)
git init

「.git」という隠しディレクトリが出来る。構成は以下の通り。
[root@localhost ML01]# ls .git
COMMIT_EDITMSG  branches  description  index  logs     refs
HEAD            config    hooks        info   objects


*既存のリポジトリのクローンする場合。(SVNで言う「チェックアウト」のこと。)
git clone https://*/*/*

・ファイルの追跡
最初は下位のファイルがgitの監視対象(もしくは追跡対象)になっていない為、下記のコマンドで追加する(stageする、とも言う)
git add <パス、ファイル名>(プロジェクトのルートディレクトリでも良い)


例(まずは下記の「status」サブコマンドで状態を確認する)

[root@localhost ML01]# git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    kabu/
    sum2/

nothing added to commit but untracked files present (use "git add" to track)

[root@localhost ML01]# git add .

もう一度状態を確認
[root@localhost ML01]# git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   kabu/1data.txt
    new file:   kabu/1data_back.txt
    new file:   kabu/learnstock
    new file:   kabu/learnstock.c
    new file:   sum2/out/sum2.out
    new file:   sum2/src/a.out
    new file:   sum2/src/sum2
    new file:   sum2/src/sum2.c
    new file:   sum2/src/sum2.out


・コミット
git commit

コミットメッセージを記入できる



[root@localhost ML01]# git commit
[master (root-commit) 7083543]
(記入したコミットメッセージ)

 9 files changed, 203 insertions(+)
 create mode 100644 kabu/1data.txt
 create mode 100644 kabu/1data_back.txt
 create mode 100755 kabu/learnstock
 create mode 100644 kabu/learnstock.c
 create mode 100755 sum2/out/sum2.out
 create mode 100755 sum2/src/a.out
 create mode 100755 sum2/src/sum2
 create mode 100644 sum2/src/sum2.c
 create mode 100755 sum2/src/sum2.out



・状態の確認
stage、commitされていないディレクトリ、ファイルを確認できる(変更があるかを確認するとも言える。)

git status

変更点がある場合(例)
[root@localhost ML02]# git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   kabu/1data.txt
    new file:   kabu/1data_back.txt
    new file:   kabu/learnstock
    new file:   kabu/learnstock.c
    new file:   sum2/out/sum2.out
    new file:   sum2/src/a.out
    new file:   sum2/src/sum2
    new file:   sum2/src/sum2.c
    new file:   sum2/src/sum2.out

変更点が無い場合は下記のメッセージとなる。
[root@localhost ML01]# git status
On branch master
nothing to commit, working directory clean


・ファイルの削除

追加のコミットから、削除後のコミットまでの一連の流れ

[root@localhost ML01]# git commit
[master 152a019] test 削除テスト用のコミット(初め)
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt
[root@localhost ML01]# git status
On branch master
nothing to commit, working directory clean
[root@localhost ML01]# git rm test.txt
rm 'test.txt'
[root@localhost ML01]# git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    test.txt

[root@localhost ML01]# git commit
[master 38e7b94] test
 1 file changed, 1 deletion(-)
 delete mode 100644 test.txt
[root@localhost ML01]# git status
On branch master
nothing to commit, working directory clean
[root@localhost ML01]#



・コミット履歴の閲覧
commit 38e7b94d09d62d2243a1b1db9b750bdfcfcc6b18
Author: sample <sample@sample.com>
Date:   Sun Jul 31 15:41:13 2016 +0900

    test
    
    削除テスト用のコミット(完了)

commit 152a01934e5de1fc8c80211048aba1476fe706dc
Author: sample <sample@sample.com>
Date:   Sun Jul 31 15:39:22 2016 +0900

    test
    削除テスト用のコミット(初め)

commit 86aff7042c15415f5260d4777632b3b03afb9cd1
Author: sample <sample@sample.com>
Date:   Sun Jul 31 15:02:14 2016 +0900

    READMEを追加

commit 7083543bb27ca1971040672043d4b7ac464ea7b7
Author: sample <sample@sample.com>


・作業のやり直し
コミットメッセージを書き直したい場合
git commit --amend

コミットした後に、何かのファイルをステージするのを忘れてしまった場合
 git commit -m 'initial commit'
 git add forgotten_file→ステージし忘れたファイル名
 git commit --amend

・stageしたファイルの取り消し
誤って「git add」で意図しないファイルをstageした場合。

git reset HEAD <file>...→駆除対象のファイル名


・ファイルへの変更の取り消し
 git checkout -- <ファイル名>


・リモートリポジトリの追加

git remote
URLを貼る必要があるから、hithubの使い方を知ってからにしよう。

以上です。






長かった・・・・・・。

やっとフレームワークを構築出来た。
初めは最近ユーザー数が増えている「Laravel」をインストールしようと思ったけど、訳が分からなくなりあえなく挫折。
その代わりに比較的簡単と言われているCakePHPをインストールすることに。
けどこれも簡単には行かなかった。

今回躓いた箇所と対処法を記載する為、是非出来るだけ少ない出順で構築できることを祈っています。


・基本的なインストールを参考にしたサイト
URL: http://qiita.com/hiroseabook/items/b538f4bf748cc8f22631

色々なサイトに書かれているやり方を拝見しましたが、一番内容がシンプルで分かりやすいと思ったのがここ。
他にサイトに比べて内容が少ないよに見えましたが、余計な情報が少ない分躓いたところだけ他にサイトに当たるという形が一番てっとり早かったと思います。

以下躓いたところ。

1-1intl.soが無いからインストールでエラーが出る。

参考URL:http://momoiro-tj.hateblo.jp/entry/2016/01/15/200512


remiのレポジトリを有効にするのがポイントです。
また、インストールするソフト「php-intl」が古いPHPのバージョンを示している可能性があります。
自分のバージョンは「5.6.23」だった為、「php56-php-intl」と指定してインストールしました。

(以下、下の★まで実際の処理です。)
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
# yum list | grep intl
intltool.noarch                        0.50.2-6.el7            @New_Repository01
perl-libintl.x86_64                    1.20-12.el7             base             
php-intl.x86_64                        5.4.16-21.el7           base             
php56-php-intl.x86_64                  5.6.23-1.el7.remi       remi-safe        
php70-php-intl.x86_64                  7.0.8-1.el7.remi        remi-safe        
php71-php-intl.x86_64                  7.1.0-0.3.alpha2.el7.remi

# yum --enablerepo=remi-safe install php56-php-intl
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * remi-safe: mirrors.mediatemple.net
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ php56-php-intl.x86_64 0:5.6.23-1.el7.remi を インストール
--> 依存性の処理をしています: php56-php-common(x86-64) = 5.6.23-1.el7.remi のパッケージ: php56-php-intl-5.6.23-1.el7.remi.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ php56-php-common.x86_64 0:5.6.23-1.el7.remi を インストール
--> 依存性の処理をしています: php56-runtime のパッケージ: php56-php-common-5.6.23-1.el7.remi.x86_64
--> 依存性の処理をしています: php56-php-pecl-zip(x86-64) のパッケージ: php56-php-common-5.6.23-1.el7.remi.x86_64
--> 依存性の処理をしています: php56-php-pecl-jsonc(x86-64) のパッケージ: php56-php-common-5.6.23-1.el7.remi.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ php56-php-pecl-jsonc.x86_64 0:1.3.10-1.el7.remi を インストール
---> パッケージ php56-php-pecl-zip.x86_64 0:1.13.3-1.el7.remi を インストール
---> パッケージ php56-runtime.x86_64 0:2.1-5.el7.remi を インストール
--> 依存性の処理をしています: environment-modules のパッケージ: php56-runtime-2.1-5.el7.remi.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ environment-modules.x86_64 0:3.2.10-8.el7 を インストール
--> 依存性の処理をしています: libtcl8.5.so()(64bit) のパッケージ: environment-modules-3.2.10-8.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ tcl.x86_64 1:8.5.13-4.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                  アーキテクチャー
                                     バージョン             リポジトリー   容量
================================================================================
インストール中:
 php56-php-intl           x86_64     5.6.23-1.el7.remi      remi-safe     149 k
依存性関連でのインストールをします:
 environment-modules      x86_64     3.2.10-8.el7           base          105 k
 php56-php-common         x86_64     5.6.23-1.el7.remi      remi-safe     691 k
 php56-php-pecl-jsonc     x86_64     1.3.10-1.el7.remi      remi-safe      45 k
 php56-php-pecl-zip       x86_64     1.13.3-1.el7.remi      remi-safe      43 k
 php56-runtime            x86_64     2.1-5.el7.remi         remi-safe     1.1 M
 tcl                      x86_64     1:8.5.13-4.el7         base          1.9 M

トランザクションの要約
================================================================================
インストール  1 パッケージ (+6 個の依存関係のパッケージ)

総ダウンロード容量: 4.0 M
インストール容量: 9.6 M
Is this ok [y/d/N]: y
Downloading packages:
(1/7): php56-php-pecl-zip-1.13.3-1.el7.remi.x86_64.rpm     |  43 kB   00:01     
(2/7): environment-modules-3.2.10-8.el7.x86_64.rpm         | 105 kB   00:02     
(3/7): php56-php-common-5.6.23-1.el7.remi.x86_64.rpm       | 691 kB   00:02     
(4/7): php56-php-intl-5.6.23-1.el7.remi.x86_64.rpm         | 149 kB   00:02     
(5/7): php56-php-pecl-jsonc-1.3.10-1.el7.remi.x86_64.rpm   |  45 kB   00:03     
(6/7): tcl-8.5.13-4.el7.x86_64.rpm                         | 1.9 MB   00:03     
(7/7): php56-runtime-2.1-5.el7.remi.x86_64.rpm             | 1.1 MB   00:04     
--------------------------------------------------------------------------------
合計                                               663 kB/s | 4.0 MB  00:06     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 1:tcl-8.5.13-4.el7.x86_64                       1/7
  インストール中          : environment-modules-3.2.10-8.el7.x86_64         2/7
  インストール中          : php56-runtime-2.1-5.el7.remi.x86_64             3/7
  インストール中          : php56-php-pecl-jsonc-1.3.10-1.el7.remi.x86_64   4/7
  インストール中          : php56-php-common-5.6.23-1.el7.remi.x86_64       5/7
  インストール中          : php56-php-pecl-zip-1.13.3-1.el7.remi.x86_64     6/7
  インストール中          : php56-php-intl-5.6.23-1.el7.remi.x86_64         7/7
  検証中                  : php56-runtime-2.1-5.el7.remi.x86_64             1/7
  検証中                  : php56-php-pecl-jsonc-1.3.10-1.el7.remi.x86_64   2/7
  検証中                  : environment-modules-3.2.10-8.el7.x86_64         3/7
  検証中                  : php56-php-common-5.6.23-1.el7.remi.x86_64       4/7
  検証中                  : php56-php-pecl-zip-1.13.3-1.el7.remi.x86_64     5/7
  検証中                  : php56-php-intl-5.6.23-1.el7.remi.x86_64         6/7
  検証中                  : 1:tcl-8.5.13-4.el7.x86_64                       7/7

インストール:
  php56-php-intl.x86_64 0:5.6.23-1.el7.remi                                     

依存性関連をインストールしました:
  environment-modules.x86_64 0:3.2.10-8.el7                                     
  php56-php-common.x86_64 0:5.6.23-1.el7.remi                                   
  php56-php-pecl-jsonc.x86_64 0:1.3.10-1.el7.remi                               
  php56-php-pecl-zip.x86_64 0:1.13.3-1.el7.remi                                 
  php56-runtime.x86_64 0:2.1-5.el7.remi                                         
  tcl.x86_64 1:8.5.13-4.el7                                                     

完了しました!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

1-2intl.soの起動確認が出来ない


intl.soがインストール出来たら、まず起動できているかを確認します。

# php -i | grep intl
で出来るのですが、なんにも反応がありません。

実は、/etc/php.iniに、extension=intl.soと言う記述を追加する必要があります。
(php.ini)
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
[intl]
;intl.default_locale =
; This directive allows you to produce PHP errors when some error
; happens within intl functions. The value is the level of the error produced.
; Default is 0, which does not produce any errors.
;intl.error_level = E_WARNING
extension=intl.so

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
1-3extension_dirってどこだ


改めてコマンドを実行すると、
# php -m | grep intl
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/intl.so' - /usr/lib64/php/modules/intl.so: cannot open shared object file: No such file or directory in Unknown on line 0

まだなんかあるみたいです。
どうやら、intl.soは「/usr/lib64/php/modules」下に入れないといけないようです。
参考したサイトにはシンボリックリンクの作り方が書いていました。
ディレクトリの構成なども全く一緒だったので助かりました。


参考URL:http://note.onichannn.net/archives/3107


extension_dirの場所
/usr/lib64/php/modules

*php.iniでは、「ext」という別の場所がextension_dirに指定されているが別の場所の為、コメントアウトしておくこと。
*/usr/lib64/php/modulesの先に「*.so」のファイルが置かれているが、「ext」には置かれていない。
*本来/usr/lib64/php/modulesにintl.soを入れないといけないが別の場所に入っている為、怒られているのである。

remiのモジュールインストール先
/opt/remi/php56/root/usr/lib64/php/modules


/usr/lib64/php/modulesに移動し、
以下のコマンドでextension_dirにシンボリックリンクを貼る。

# ln -s /opt/remi/php56/root/usr/lib64/php/modules/ .

1-4intl.soへのシンボリックリンクが使用できない。

せっかくリンクを作ったのに使用できない。
仕方ないからintl.soをコピーして、extension_dirにペーストしたら上手くいきました(笑)

/opt/remi/php56/root/usr/lib64/php/modules/にカレントを移動。
[root@localhost modules]# ls
bz2.so       ctype.so  exif.so      ftp.so      iconv.so  json.so  sockets.so    zip.so
calendar.so  curl.so   fileinfo.so  gettext.so  intl.so   phar.so  tokenizer.so
[root@localhost modules]# cp intl.so /usr/lib64/php/modules/intl.so
[root@localhost modules]# cd
[root@localhost ~]# cd /usr/lib64/php/modules
[root@localhost modules]# ls
bz2.so       exif.so      iconv.so     modules     pdo.so         sockets.so
calendar.so  fileinfo.so  intl.so      mysql.so    pdo_mysql.so   sqlite3.so
ctype.so     ftp.so       json.so      mysqli.so   pdo_sqlite.so  tokenizer.so
curl.so      gettext.so   mbstring.so  mysqlnd.so  phar.so        zip.so
[root@localhost modules]# systemctl restart httpd

[root@localhost ~]# php -m | grep intl
intl

intlの字が出てきたら、起動している証拠です!!
長かった。


httpdを再起動して自分のドメインをアクセス。
すると・・・・・・。


1-5CakePHPの画面がおかしい。
なんだこれ。
文字はしっかり出てきているんだけど色がない。
画像もない。
なんだこれ。
「Get the Ovens Ready」って出てきているから一応正しい。画面が出てきてはいるんだけど。


参考URL:http://tbrhdys.hatenablog.com/entry/2015/05/02/174214
httpd.confのドキュメントルートの設定の問題らしいです。

# cd /etc/httpd/conf
# vim httpd.conf

<VirtualHost *:80>
        DocumentRoot /var/www/html
        ServerName 各自のIPアドレス
        <Directory "/var/www/html">
        AllowOverride All
        # .htaccessを有効にしておきます
        Options Includes FollowSymLinks
        Order allow,deny
        Allow from all
        </Directory>
</VirtualHost>


これで、やっと、CakePHPを動作させることが出来ました!!

あともう少し、細かいところがあると思いますが、参考URLだけ記載させて頂きます。
恐らく上記の手順では、まだ、MySQL等のデータベースに接続できていないはずなのでご参考下さい。


CakePHP設定後のMySQL接続は以下のサイトを参考にしました。
参考URL:http://qiita.com/IKEA_dless/items/f536b3c009af295bb4a5

MySQLに繋ごうと思ったら、入ることが出来なくなった。
↓対象法を参考にしました。
http://www.goofoo.jp/2011/11/1457



さあ色々な物をインストールしていこうを思ったのですが、まず、ひらがな変換できない状態を何とかしたいと思い色々調べたけど別の事態に発展した。

以下の通りにすれば日本語入力が出来るとのこと。
# yum groupinstall "Japanese Support"

しかしこのコマンドを打ってもインストールできず。
詳しく見たら、有効なリポジトリがないとのこと。

うん?OSをインストールする時にリポジトリは設定したんだけどな。

なんにせよ無いということで解決策をしらべることに。


結果ここのサイトの記事が参考になりました。(2014年6月29日の記事) 
「URL:www.ys-network.info」


具体的には、
/etc/yum.repos.dディレクトリ下に「CentOS-Base.repo」というファイルを作成します。


コマンドは下記の通り。

# vi /etc/yum.repos.d/CentOS-Base.repo

viでファイルに以下の様に記述します。

[base]
name=CentOS7RC- Base
baseurl=http://buildlogs.centos.org/centos/7/os/x86_64-latest/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7


:wqで保存して改めて
# yum groupinstall "Japanese Support"
コマンドを!!


おお、いい感じ、と思ったらまた失敗!!
うんん?、今度は関連するパッケージグループがないとのことだ。



パッケージ。
日本語入力するには「ibus」とのこと。


うん、とにかく、リポジトリは出来たから、他のものはインストール出来るかもしれない。
とにかくパッケージを用意すれば良いわけだ。

GUIで「アプリケーション」→「システム」→「ソフトウェア」を選択することで

検索欄で「ibus」と入力すると、候補がいくつか出てくる。

候補の中から「ibus - kkc(Japanese Kana Kanji input method for ibus)」を選択してwebページに飛んでダウンロードするんだけど、どこでダウンロードするのか分からない。


結局ターミナルで普通にインストールすることに。
(すいません、コマンドを忘れてしまいました。恐らく……)
# yum -y ibus-kkc

私はこれでインストールが出来ました。
そして再起動することでかな入力が出来る様になります。

私の場合、途中で他の場所をいじっていたせいかいくつかのディレクトリが英語になってしまいました。
今回の手順では因果関係は無いと思われます。



↑このページのトップヘ