読者です 読者をやめる 読者になる 読者になる

Linux系OS:ディレクトリ配下の特定文字列が含まれるファイルを探して別の文字列に置換

find, grep, sedコマンドを組み合わせて実現可能

 

find, grepを利用して,ディレクトリ配下から再帰的に特定の文字列を含むファイルのパスを取得

これをsedの引数として渡す感じ

 

ディレクトリ配下の特定の文字列を含むファイル一覧を取得

find ./* -name 'ファイル名のパターン' | xargs grep -l '置換前文字列'

 

ディレクトリ配下の特定の文字列を含むファイル一覧を取得し,別の文字列に置換

find ./* -name 'ファイル名のパターン' | xargs grep -l '置換前文字列' | xargs sed -i -e 's/置換前文字列/置換後文字列/g'

CakePHP3 Helperから任意のModelを呼ぶ

CakePHP3

HelperからModelを呼び出す方法

(HelperでloadModelをできるようにする方法

 

1. 適当なHelperをつくる

ex. src/View/Helper/UsersHelper.php

 

2. 普通にHelperを書く

<?php
namespace Cake\View\Helper;

use Cake\View\Helper;

class UsersHelper extends Helper{

    public function exFunction(){
    }

}

 

3. 2で書いたHelperでController, Shellクラスで使っているようにloadModelを使えるようにする

赤字がloadModelのために追加したコード

<?php
namespace Cake\View\Helper;

use Cake\View\Helper;

use Cake\Datasource\ModelAwareTrait;

class UsersHelper extends Helper{

    use ModelAwareTrait;

    public function exFunction(){

        $this->modelFactory('Table', ['Cake\ORM\TableRegistry', 'get']);

        $this->loadModel('Users');

    }

}

 

以上のやり方でHelperからModelを呼べるようになった.

同様のやり方で,ViewからModelを呼べるようにもできそう.

.ctpからModelを呼んだほうがすっきりするかもしれないが,それはせずにHelperに頼ったほうがよいだろうということで.

Centos6.x でLAMP環境を構築した時のhistory

    8  useradd junji	ユーザ追加
    9  passwd junji	追加したユーザのパスワード設定
   19  vi /etc/ssh/sshd_config	sshの設定を直す(何したか覚えてない
   20  service sshd restart	sshd再起動
   22  vi /etc/sudoers	追加したユーザがsudoできるように
   24  visudo	#22と一緒.これやると勝手にsudoers開いてくれる
   27  service sshd restart	
   34  vi /etc/ssh/sshd_config	sshの設定を直す.rootでログインできなくする
   36  vi /etc/ssh/sshd_config	sshの設定を直す.Port 22→Port xxxxxに
   39  service sshd restart	
   45  yum -y install httpd	httpdインストール
   46  vi /etc/httpd/conf/httpd.conf	ルートディレクトリ変えたり,ServerTokens Prodにしたり
   49  vi /var/www/hello.html	http接続できてるか確認するためのhtml作成
   50  /etc/rc.d/init.d/httpd start	httpd起動
   51  chkconfig httpd on	再起動時にhttpdが勝手に起動するように
   52  chkconfig --list httpd	登録されたか確認(?
   56  yum -y install php php-mbstring php-mysql	PHPインストール.mbstring, mysqliも.
   57  /etc/rc.d/init.d/httpd restart	
   58  yum -y install mysql-server	mysqlインストール
   61  vi /etc/my.cnf	設定いぢる
   62  /etc/rc.d/init.d/mysqld start	
   63  chkconfig mysqld on	再起同時に(ry
   64  mysql_secure_installation	mysqlの初期設定.
   65  mysql -uroot -p	
   66  netstat -tanp	開いてるポートとかの確認
   67  /sbin/iptables -L --line-numbers	開いてるポートとかの確認
   68  /sbin/iptables -I INPUT 5 -p tcp -m tcp --dport 80 -j ACCEPT	http接続を可能に
   69  /sbin/iptables -I INPUT 6 -p tcp -m tcp --dport 443 -j ACCEPT	https接続を可能に
   70  /sbin/iptables -L --line-numbers	開いてるポートとかの確認
   71  service iptables save	#68, #69の設定を保存
   73  /etc/rc.d/init.d/httpd restart	いろいろ変更加えたからとりあえずhttpd再起動

Ubuntu14.04でLAMP環境を構築した時のhistory

Ubuntu14.04でLAMP環境を構築した時のhistory
PHP, mysqlndオプション追加,mySqlサーバーをインストール
    3  apt-get install php5 php5-mysqlnd
    5  apt-get install mysql-server
神アプリUFWの設定(ファイアウォール絡みのお話)
UFWを有効に
    6  ufw enable
UFWの現状を確認
    7  ufw status
とりあえず80番(HTTPアクセス), 22番(SSHアクセス)での接続を許可する
    8  ufw allow 80/tcp
    9  ufw allow 22/tcp
利用中のポートを確認して
   11  netstat -an
SSH接続で利用するポートの変更をする(これは開いたら編集箇所わかるから割愛
   12  vi /etc/ssh/sshd_config
SSH接続で利用するポートでの接続を許可する(ここでは例として11111番でSSH接続すると仮定
   13  ufw allow 11111/tcp
22番はよく突っ込んでくる悪い人がいるから閉じちゃう
   14  ufw deny 22/tcp
   22  ufw deny 11111/udp
   23  ufw allow 443/tcp
   25  sshd -t
SSHのサービスを再起動する
   26  service ssh restart
SSL接続できるようにする
   29  a2enmod ssl
   30  a2ensite default-ssl
   31  /etc/init.d/apache2 restart
80番開いておくと本当に悪い人が来すぎるから閉じる.普通はこういうことたぶんしない.
   32  ufw deny 80/tcp
ドキュメントルートを /var/www にしたりとかしてapache2を再起動.indexxx.phpにしてるのはindex.phpだとURL打った時に開けちゃうから.ちなみにphpinfo();だけしたのを書いて設定確認した.
   36  vi /etc/apache2/sites-available/default-ssl.conf
   37  ls /var/www
   38  rm -Rf /var/www/html
   39  ls /var/www
   40  vi /var/www/indexxx.php
   41  /etc/init.d/apache2 restart
   42  ls /etc/apache2/sites-available
   43  vi /etc/apache2/sites-available/000-default.conf
   44  /etc/init.d/apache2 restart

mysqldumpを実行したが,一部のテーブル/viewのdumpが取れていない現象

背景

mysqldumpを実行するコマンドをcronに登録して定期実行していた.

その中で,一部のテーブル/viewのdumpが取れておらず,リストアしてもviewが空のテーブルに置き換わる,テーブルの中身がリストアした時点の内容に更新されないといった現象が発生した.

DBサーバ,Webサーバがあり,Webサーバからオプションを変えて実行した場合には本現象は発生していなかった.

 

原因

mysqldump: Couldn't execute 'show create table `view_name`': View 'database_name.view_name' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them (1356)

というエラーが発生していた.

今回の場合,database_name.view_name の定義に,削除されたカラムが利用されていた.

このため,エラーが発生し,以降の処理がスキップされた様子だった.

 

不思議なこと

cronでの実行結果では一応全体的に結果は得られる(一部のみダメになってる)

状態だったのに対して,コマンドラインから同じようにmysqldumpを打ってもエラーが出るだけでdumpファイルは作られなかった.

気が向いたら確認する.

 

メモ:Ubuntuでhtaccessが効かなくなっていた

find /etc/apache2 -type f -print | xargs grep AllowOverride

設定ファイル探そうとして ls /etc/apache2 したけどよくわからなかったので探す.

 

vi /etc/apache2/apache2.conf

これを編集すれば良いっぽかったので

 

/AllowOverride

で検索して,たくさんヒットしたけど,

/var/www以下のみでよかったからそこだけ

 AllowOverride None → AllowOverride All

 

今回は上記のみの対応でよかった

参考はこの記事.設定ファイルのパスが違ってあれ?ってなって記事冒頭へ

 

Apache - ubuntuでAllowOverrideを変更しても.htaccessが有効化しなかった時の対処法 - Qiita

Mac: Yosemite移行後,NetBeansが頻繁にフリーズするようになった

 タイトルそのままの現象が発生し,調べていたら出てきたのは安定のstackoverflow

NetBeansは 7.2.1, 7.4, 8.0.2で同じ現象が出ることを確認しました.詳細にいろいろ試したのは8.0.2のみ.

 

Netbeans unusable after upgrading to Yosemite - Stack Overflow

提案されていた内容

 I had the same problem. I had to do an SMC reboot of my laptop and it fixed it.

 Just install the latest JRE for Apple

解決に寄与した操作

 After waiting about 10 minutes the background scanning ended to 100% and now Netbeans is usable again.

 

これら全て試しましたが,私の環境では直らず.

解決に寄与した操作をそのままコピペして以下のツイート

ここへ,

このようなリプライが飛んできて.

ちょっとググったところ,こちらの方は実際に開発チームの方のようでした.

 

その後ツイッターでやり取りをし,現在メールでの連絡になっています.

Geertjan氏がエンジニアの方へ「このスレッドダンプとこの報告内容で情報は足りているか?」と問い合わせている状態で止まっています.

 

GenerateThreadDump - NetBeans Wiki

このやり取りの最中で,「ThreadDumpをとってほしい」と言われ,悩んだのでメモしておきます.

リンクのサイト内に書かれていますが,英語の解釈が違うのかよくわからないし別の方法でとりました.

 

Mac OS X Yosemiteでスレッドダンプを取る方法

1. 任意のアプリケーション(今回はNetBeans)を起動する

2. 任意のアプリケーションを「応答なし」状態にする

3. ユーティリティからアクティベーションモニタを開く

4. 「応答なし」になっている任意のアプリケーションのPIDを確認する

5. ターミナルを開く

6.  /usr/bin/jstack PID を実行する

これでスレッドダンプが取得できます.

 

進展ありしだいまた更新予定です.

 

なお,私の環境では,

 コード編集中にフリーズ

 command+wでファイルを閉じようとしたらフリーズ

 ファイル名を変えようとしたらフリーズ

 フォルダを開こうとしたらフリーズ

 ファイル内文字列置換をしようとしたらフリーズ

 ファイル内文字検索を何度かしたらフリーズ

などということが発生しました.