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.
これら全て試しましたが,私の環境では直らず.
解決に寄与した操作をそのままコピペして以下のツイート
After waiting about 10 minutes the background scanning ended to 100% and now Netbeans is usable again. まじか.10分待ったら使えたよ,って.まじか.
— じゅんじ@がんば...るぞい! (@junjiru) 2014, 12月 16
ここへ,
@junjiru Time to upgrade to NetBeans IDE 8.0.2?
— Geertjan Wielenga (@GeertjanW) 2014, 12月 16
このようなリプライが飛んできて.
ちょっとググったところ,こちらの方は実際に開発チームの方のようでした.
その後ツイッターでやり取りをし,現在メールでの連絡になっています.
Geertjan氏がエンジニアの方へ「このスレッドダンプとこの報告内容で情報は足りているか?」と問い合わせている状態で止まっています.
GenerateThreadDump - NetBeans Wiki
このやり取りの最中で,「ThreadDumpをとってほしい」と言われ,悩んだのでメモしておきます.
リンクのサイト内に書かれていますが,英語の解釈が違うのかよくわからないし別の方法でとりました.
Mac OS X Yosemiteでスレッドダンプを取る方法
1. 任意のアプリケーション(今回はNetBeans)を起動する
2. 任意のアプリケーションを「応答なし」状態にする
3. ユーティリティからアクティベーションモニタを開く
4. 「応答なし」になっている任意のアプリケーションのPIDを確認する
5. ターミナルを開く
6. /usr/bin/jstack PID を実行する
これでスレッドダンプが取得できます.
進展ありしだいまた更新予定です.
なお,私の環境では,
コード編集中にフリーズ
command+wでファイルを閉じようとしたらフリーズ
ファイル名を変えようとしたらフリーズ
フォルダを開こうとしたらフリーズ
ファイル内文字列置換をしようとしたらフリーズ
ファイル内文字検索を何度かしたらフリーズ
などということが発生しました.