Love澤's Room

管理人のシステム開発奮闘記。更新頻度はそこまで高く無いと思います。いまのところ、技術ネタのみを記録中。今後もしかしたら、普通のブログのように、色々と書いていくかも。

システム運用を行う上で必要なドキュメントに関する参考リンク

社会人になり3年。社内SEとしてシステム運用に関わってきたが、運用に関するドキュメントが足りないと感じている。

システム開発時の設計書などは(一応)存在しているが、更新年月が2014年や2015年だったりする。
そのためその文書は当てにならず、仕方がないので現在の仕様はソースを追って把握するしかない。

先日までは、開発メンバーの中核を担っていた人がいたが、7月・8月と会社を去っていった。
今まではその人たちがいたから問い合わせ対応にもスムーズに対応できていた。
しかしその人達がいなくなった今、残されたメンバーで運用していかなければならない。

そうしたときになってやっとドキュメントの必要性、重要性に気づくことができた。

まだ本ブログでなにもかけることはないが、下記のサイトを参考に取り組んでいきたい。

taityo-diary.hatenablog.jp
thinkit.co.jp
https://www.nic.ad.jp/ja/materials/iw/2011/proceedings/t3/t3-01.pdf

CakePHPの設定(エラー解決編)

「エラー解決編」とか題してますが、ほかに○○編とか出さないと思います笑

本日、CakePHPの勉強を初めまして、環境構築をしていく中ででたエラーに関する情報をこちらのページにまとめていきたいと思います。

エラーがでて、解決したら随時更新予定。

タイムゾーンに関するエラー(2015/02/26 18:32 更新)

  • 問題

CakePHPをWebサーバに入れてサンプルページを表示させた際、以下のエラーメッセージが表示されていた。

Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /var/www/html/cakephp/lib/Cake/Cache/CacheEngine.php on line 60

f:id:love_zawa:20150216171025p:plain:w250

  • 原因

CakePHPの設定というより、PHPタイムゾーンの設定がなされていないことが原因であった。

  • 解決策

/etc/php.iniの889行目あたりにタイムゾーンの設定箇所があるので、そこを以下のように編集。

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Tokyo

apacheを再起動するとエラーが消える。

systemctl restart httpd (CentOS 7)
etc/rc.d/init.d/httpd restart (CentOS 6,5)
  • 参考文献

CakePHPのダウンロードとインストール - CakePHPの使い方

パーミッションに関するエラー(2015/02/26 22:07 更新)

Mac OS X + XAMPP + CakePHPという環境を構築しようとした時に以下の様なエラーが表示された。

  • 問題
Warning: mkdir(): Permission denied in /Applications/XAMPP/xamppfiles/htdocs/cakephp/lib/Cake/Cache/Engine/FileEngine.php on line 380

Warning: _cake_core_ cache was unable to write 'cake_dev_ja' to File cache in /Applications/XAMPP/xamppfiles/htdocs/cakephp/lib/Cake/Cache/Cache.php on line 328

Warning: /Applications/XAMPP/xamppfiles/htdocs/cakephp/app/tmp/cache/persistent/ is not writable in /Applications/XAMPP/xamppfiles/htdocs/cakephp/lib/Cake/Cache/Engine/FileEngine.php on line 385

Fatal error: Uncaught exception 'CacheException' with message 'Cache engine "_cake_core_" is not properly configured. Ensure required extensions are installed, and credentials/permissions are correct' in /Applications/XAMPP/xamppfiles/htdocs/cakephp/lib/Cake/Cache/Cache.php:186 Stack trace: #0 /Applications/XAMPP/xamppfiles/htdocs/cakephp/lib/Cake/Cache/Cache.php(151): Cache::_buildEngine('_cake_core_') #1 /Applications/XAMPP/xamppfiles/htdocs/cakephp/app/Config/core.php(374): Cache::config('_cake_core_', Array) #2 /Applications/XAMPP/xamppfiles/htdocs/cakephp/lib/Cake/Core/Configure.php(72): include('/Applications/X...') #3 /Applications/XAMPP/xamppfiles/htdocs/cakephp/lib/Cake/bootstrap.php(175): Configure::bootstrap(true) #4 /Applications/XAMPP/xamppfiles/htdocs/cakephp/app/webroot/index.php(100): include('/Applications/X...') #5 {main} thrown in /Applications/XAMPP/xamppfiles/htdocs/cakephp/lib/Cake/Cache/Cache.php on line 186

f:id:love_zawa:20150216221131p:plain:w250

  • 原因

CakePHPの app/etc のパーミッションの設定が777になっていなかった

  • 解決策

app/etc のパーミッションを777にすると解決する。

sudo chmod -R 777 app/etc
  • 参考文献

Cakephp2.3 インストール時のエラー - Qiita

Sublime Text 3 でTeX用のスニペットを作成する

TeX用のスニペットを生成するような記事が見当たらなかったのでメモ.

やりたいこと

Sublime Text 3 でTeX用のスニペットを作成する.

スニペットを追加する方法

tool -> New Snippetを選択する.すると以下のように設定用のファイルが開く.
f:id:love_zawa:20150209021413p:plain:w600

content, tabTrigger, scopeの各タグはそれぞれ以下のような意味をもつ.

<content><![CDATA[登録したい内容]]></content>
<tabTrigger>スニペットを追加する際のトリガーとなる文字列</tabTrigger>
<scope>スニペットが有効になる環境(ファイルの種類・拡張子)</scope>

TeX用にするには,scopeをtext.texとすると良い.source.texではうまくいかない.

<scope>text.tex</scope>

参考文献

scopeをTeX用に設定するための方法が書かれていたのがこちらのサイト.
Creating Snippets in Sublime Text 2 for LaTeX - Economistry

Snippetの作成方法などについては以下のサイトがわかりやすかった.
Sublime Text 3: スニペットの登録方法と使い方 | Web Design Workbook
Sublime Text 2で自分用のスニペットを作る方法 | prime factor

LaTeXiTで日本語を含む数式を生成する

  • やりたいこと

LaTeXiTで日本語を含む数式を生成する.

  • 方法

まず,LaTeXiTの設定を以下の画像のようにする.変更したのはLaTeXとdvipdfのパス.インストール環境によってパスも変わってくると思うので,その辺りは各自の環境に合わせる.
f:id:love_zawa:20150207000503p:plain:w250

次にエディタ上で日本語の部分を\text{}でくくってやるとちゃんと出力される.

\text{日本語}i

f:id:love_zawa:20150207002228p:plain:w250

◯参考サイト
LaTeXiTの数式で日本語を通す方法 | メモlog

ファイル名を連番に変更する方法(CentOS, Mac)

やりたいこと

複数のファイルのファイル名を連番に変更する。

> ls
test1.png test4.png test5.png test10.png

上記を下記のようにする。

> ls
test001.png test002.png test003.png test004.png

方法

以下のコマンドで変更前後を確認

> ls *.csv | awk '{ printf "mv %s test%03d.png\n", $0, NR }'
mv test1.png test001.png
mv test4.png test002.png
mv test5.png test003.png
mv test10.png test004.png

問題なければ次のように、パイプを使って実行

> ls *.csv | awk '{ printf "mv %s test%03d.png\n", $0, NR }' | sh

また、printfの部分を変更することで柔軟な連番付けが可能となる。

## 連番を1000番台にする
> ls *.csv | awk '{ printf "mv %s test%03.2f.png\n", $0, NR+1000.03 }'
mv test1.png test1001.03.png
mv test4.png test1002.03.png
...
## 偶数の連番にする
> ls *.csv | awk '{ printf "mv %s test%03d.png\n", $0, NR+NR }'
mv test1.png test002.png
mv test4.png test004.png
...
## 奇数の連番にする
> ls *.csv | awk '{ printf "mv %s test%03d.png\n", $0, NR+NR-1 }'
mv test1.png test001.png
mv test4.png test003.png
...

Rの演算子「<-」と「=」と「<<-」の違い

Rをいじっているのだが、タイトルの通り、代入演算子の違いがわからなかった。それぞれ以下のように呼ぶそう。

(参考サイト)
http://isyus2.yz.yamagata-u.ac.jp/xoops/Data/R_v3.pdf
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/28.html


通常の代入操作については、「<-」「=」のどちらを使っても構わないそう。いわゆる、プログラミングで一般的に使われる代入と同じイメージ。ただし、S4クラスやS5クラスの中でデータの型を指定するときは「<-」ではエラーとなり「=」を使用しなければならないっぽい。気を使うのが面倒。

永続代入演算子は、あるメソッドの中からメソッド外の変数に値を代入する際に使用する演算子。個人的にはメソッドの中からメソッド外の変数に代入なんてすんなよって思う(古い考え?)。使う場面としては、S5クラスで定義されているフィールドに代入する際など。

下記サイトに載っているプログラム例を参考にしながら、自分なりに少しずつ手を加えたプログラムを以下に示す。
「<-」「=」「<<-」の使い方を示せればと。
R5クラス | 参照渡しを実現する,リファレンス,ポインター

Asagao = setRefClass(
  # クラス名
  Class = "Asagao",     # 通常の記述法
  # Class <- "Asagao",  # Asagaoという値をもつClassという変数が生成される。ただし、クラスとしての機能は実装できる。
  # 上記どちらかの記述がなければ、クラスとして実装できない(エラーがとなる)。

  # 継承
  contains = c("Flower"),     # 通常の記述法
  # contains <- c("Flower"),  # Flowerという値を持つcontainsという変数が生成される。
  
  # フィールド
  fields = list (     # 通常の記述法
  # fields <- list (  # seeds, speciesという変数(カラム?)を持つlistが生成される。
                      # また、seedsは"numeric"という値をspeciesは"character"という値をもつ
    seeds   = "numeric",   # 種の数
    species = "character"  # 種類
  ),

  # フィールド                           # この書き方だと、エラーとなる
  # fields = list (  # 通常の記述法      # |
  #   seeds   <- "numeric",   # 種の数  # |
  #   species <- "character"  # 種類    # |
  # ),                                 # |
  
  # method
  methods = list (
    # コンストラクタ
    initialize = function(color=NULL, leaves=NULL, species=NULL) {    # 通常の記述法
    # initialize = function(color=NULL, leaves=NULL, species=NULL) {  # エラー
      if (is.null(color)) {
        color <<- "skyblue"   # 通常の記述法
        # color <- "skyblue"  # エラー
      } else {
        color <<- color
      }
      
      if (is.null(leaves)) {
        leaves <<- 50
      } else {
        leaves <<- leaves
      }
      
      if (is.null(species)) {
        species <<- "昼顔"
      } else {
        species <<- species
      }
    },
    
    # 葉っぱの枚数から生育状態を計算して、その状態を conditions 変数に保存
    CalcConditions = function() {
      x = 2
      y = 4
      conditions <<- leaves * x - y
    },
    
    # 現在の生育状態から種子数を予測し、予測した種子数を seeds に保存
    EstimateSeeds = function() {
      seeds <<- round(conditions / 10 + 50)
    },
    
    getConditions = function() {
      conditions <<- leaves * 2
      return(conditions)
    },
    getConditions2 = function() {
      conditions <<- CalcConditions()
      return(conditions)
    }
  )
)

SourceTree + backlog と SourceTree + codebreak; を試す

今日は短め。

やりたいこと

かねてより、試してみたいと思っていたGitによるソースコード管理。これまで面倒だという理由でとくに利用してこなかったが、WindowsからMacに乗り換えたついでに設定してみた。

環境

コマンドラインでのGitは敷居が高いので、GUIで使えるGitクライアントのSourceTreeを導入した。
Git、Mercurial 対応 無料 DVCS Mac、Windowsクライアント | Atlassian

使い方などはこちらのページが大変分りやすかった。
サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ

Gitホスティグサービスは、下記の2つを試しているところ。


使用雑感

両方ともまだ全然触ったわけではない、ということを断っておいた上での雑感。

backlogはリポジトリの公開・非公開設定ができない(?)っぽい。デフォルトが非公開リポジトリなのであればよいのだけど、ググってもよくわからなかった。また、ネットでプランの機能一覧などを見ると、アクセス制限などはフリープランではできないようなので、その辺りが気になっているところ。

codebreak;はリポジトリの公開・非公開の設定がはっきりしているので大変ありがたい。利用人数も無制限だそう。自分の場合はまだ使い始めたばかり&共同開発の予定はないので、あまり関係はないが。

今後の予定

他にも試してみたいのが
Pricing for Git and Mercurial repo hosting for Bitbucket by Atlassian

どのサービスが使いやすいのか、自分に合っているかはわからないので、これから色々と試していくつもり。何かあれば比較記事でもあげようかな。

(おまけ)
Gitホスティングサービス5選【比較表付き】 | Find Job ! Startup
コードブレイクの特徴