FuelPHPでバリデーションで追加したルールを削除する方法

FuelPHPのバリデーションって便利で基本的に利用しています。その中で、自動的にルールをがつがつ追加するプログラムを作っていたのですが一部に限って例外が発生して、追加したルールを削除しなければならないということが発生しました。

削除ってあるのかなってバリデーション定義を除いていたところ、「delete_rule」なるものを発見!!FuelPHP 1.7のドキュメントにはありませんでしたが、探していたらFuelPHP 1.8のドキュメントに記載がありました。

 

↓記述方法は下記のようになるとこと。FuelPHP1.8のドキュメントはこちら

// フィールドから valid_string ルールを取り除く
$fieldset->field('fieldname')->delete_rule('valid_string');

// そして、必須項目の指定を取り除く
$message = $fieldset->field('fieldname')->delete_rule('required', true);

※FuelPHP1.8のドキュメントから抜粋

requiredの項目を取り除くときは「true」も必要とのこと。

 

RV-440MIとVPN接続をパソコンからしてみる(Windows10,L2TP)

NTT RV-440MIのVPN機能を利用してL2TPでWindows10のパソコンとVPN接続をしてみたいと思います。

まず、RV-440MIの方から設定を行います。

(1)ルーター(RV-440MI)の管理画面に入ります。

(2)「詳細設定」→「VPNサーバ設定」をクリックします。

rv-440mi

(3)[VPNサーバ機能]の「VPNサーバ機能の起動」行の「有効」にチェックを入れ、「設定」ボタンをクリックします。

(4)事前共有鍵の「表示」ボタンをクリックして、鍵情報をメモします。小文字のLとかOとか間違えやすいので注意。*あとで使う。

(5)[VPNアカウント機能]欄でエントリ番号1の「操作」の編集ボタンをクリックしてアカウントを作ります。

rv-440mi_2

 

(6)現在、接続しているインターネット側のIPアドレスを調べることが必要です。

これでVPNサーバ側の設定は終わりです。大したことないのですが・・・。

 

 

Windows10側のVPN設定を行います。

*エラーが分かりずらいので、はまる可能性があります。

(1)「設定」アプリを起動し、「ネットワークとインターネット」をクリックします。

rv-440mi_3

 

(2)VPNをクリックして、その中の「VPN接続を追加する」をクリックします。

rv-440mi_4

 

(3)必要情報を記述して保存します。

rv-440mi_5

(4)作成した接続先名を選択して、下部に表示される「関連設定」の「アダプターのオプションを変更する」をクリックします。

rv-440mi_6

(5)いくつかアダプタが表示されると思いますのでその中で先ほど作成した名前を選択して「右クリック」→「プロパティ」を表示します。

 

(6)「セキュリティ」タブで下記の個所を設定します。

データの暗号化 暗号化が必要(サーバーが拒否する場合は切断します)
認証 次のプロトコルを許可する

チャレンジハンドシェイク認証プロトコル チェックあり
Micrsoft CHAP Version2 チェックあり

rv-440mi_7

(6)設定したらOKを押して元の画面に戻ります。

 

(7)作成した接続名を選択して「接続」をクリックして接続します。無事に接続されれば「接続済み」と表示されます。

 

rv-440mi_8

 

ポイントとしては、

・事前共有鍵

・接続のセキュリティ設定(チェックしたあたり)

でうまく接続できないケースがあるので接続できないときには、そのあたりを再度チェックしてみてください。

 

input type=textの値をJqueryで変更をChangeイベントで発火させる

テキストの内容を変更したときにJqueryのchangeイベントは発火しないのでその時の対象をメモしておきます。

Changeイベントで発火せるのには

値変更するときにChangeを付ける。

$('#ID名').val('変更値').change();

 

キャッチする側ではchangeで受け取る

$('#ID名').change(function() {
console.log("値変更がありました");
});

 

 

これでできました。

IchigoJamを試してみる

子供向けのお手軽なパソコンキットの「IchigoJam」を試してみようと思います。

とりあえず、千石電商でIchigoJamのキット(はんだ付けバージョン)を購入してみました。あまりよくわかっていないのですが購入したものはIchigoJam Tでした。

 

ichigojam

IchigoJamを作ろうというiOS系のアプリもあるようですね。こちら

 

やっと、はんだ付けして完成しました・・・。作ったのは30分ぐらいですが、取り掛かるまでに時間が・・・。子供にはんだ付けを遊びがてらにやってもらいましたが、はんだ吸い取り線が楽しいようで遊んでました・・・。

説明書もあったのですが「IchigoJamを作ろうアプリ」を見ながら作りました。抵抗もテスターでざくざくっと。

↓はんだ付けが終わった後の状態。

ichigojam

 

 

 

電源を入れたのかって、それはまた今度。

 

電源を入れていざ、「プログラミング」へ!

 

えーと、電源にキーボードにビデオ出力・・・あ!、ビデオ端子ってPCのディスプレイにないじゃん!!

jam0

 

ということで、過去の遺産?のビデオキャプチャするための周辺機器を取り付けて、キャプチャーソフト上にICHIGO JAMの画面を表示!できるかなって思ったら案外スムーズにキーボードを入力してもさくさくっと表示された。

jam1

 

言語は、BASICですよ。懐かしい!もう、コマンド忘れました。

一応メモをしておくと。

コマンド名 説明
CLS 画面をクリア
NEW すべてのプログラムを消去する
行番号[エンター] 該当行を消す
LIST プログラム一覧を表示

「LIST 行番号」該当業を表示

PRINT ”<表示内容>” 「”」(ダブルクォーテーション)で囲った中身を表示
INPUT 文字入力をさせる。
FOR N=初期値 TO 回数~NEXT 繰り返し処理

 

あと、IFとかいろいろとあるけどとりあえずこんなところです。

Centos7をインストールする

ひさびさにCentos7のインストールを行ってみたいと思います。もう、リリースしてからだいぶ経過していますが今さらながらインストールします。

今回は、Hyper-V上にインストールで試してみようと思います。

まずはCentos7のダウンロード

(1)下記のURLにいって「DVD ISO」ボタンをクリックします。

https://www.centos.org/download/

 

(2)どれでもよいのでリンクをのURLをクリックします。そうするとダウンロードが開始されダウンロード完了までしばらく待ちます。

 

Centos7のインストール

(1)今回は仮想マシンなので仮想マシンを作ったのち、ダウンロードしたISOファイルをマウントします。

(2)あとは、電源を入れて・・・ROMブートでしばらく待ちます。。。

centos7

 

(3)日本語を選択します。

centos7_1

(4)インストールの概要が表示されますのでまずは、「システム」の「インストール先」を選択します。

centos7_2

 

(5)インストール先のHDDを選んで「完了」ボタンをクリックします。

centos7_3

 

(6)ネットワークとホスト名の設定を行います。DHCPが初期状態なので固定IPに変更してみました。

centos7_4

 

(7)ソフトウェアは最小限でよいのでこのまま「インストール開始」を行います。

(8)インストール中にROOTユーザーのパスワードでもしておきましょう

centos7_5

※テスト環境なのでパスワードは弱くても・・・

(9)インストールが完了すると右下に「再起動」ボタンが表示されます。それなので再起動を行います。

centos7_6

(10)ログインプロンプトが表示されてインストールが完了しました。

GUIが良ければ、ソフトウェアの選択で入れてください。

centos7_7

 

FuelPHPでビューにHTMLデータをそのまま渡したい時のメモ

FuelPHPでビューにHTMLデータをそのまま渡したい時のメモ

 

■コントローラー側の設定

$this->template->content = \View::forge('index', $data);
$this->template->content->set_safe('html_data', $data['html_data']);

 

$this->template->contentでいつも通りVIEWのコンテンツを設定したのちにset_safeで生データ渡しの値をセットする。

 

Webに高機能な書式付入力を可能にする TinyMCEエディタを設置してみる

WordPressの時はTinyMCEのプラグインを入れれば何も気にすることがなくざくざく便利なエディタができると思うのですが、HTMLでカスタマイズして構築しているものはそうもいかないので導入の仕方から設定などメモ的なものを残していきます。

 

なぜ、TinyMCEかというと他のツールもありますがTinyMCEの方が便利なので・・。

 

■設置の仕方 (https://www.tinymce.com

(1)コードを張り付けるだけ

<script src="//cdn.tinymce.com/4/tinymce.min.js"></script>
<script>tinymce.init({ selector:'textarea' });</script>

 

textareaの対してエディタが適用される。

mce1

 

(2)ダウンロードファイルを読み込ませる

<script src="TINYMCEを保存したフォルダ/tinymce.min.js"></script>
<script>tinymce.init({ selector:'textarea' });</script>

※図は同じになるので省略

 

name=xxxxに対しての場合

<script src="TINYMCEを保存したフォルダ/tinymce.min.js"></script>
<script>tinymce.init({ selector:'[name="xxxxx"]' });</script>

 

 

 

■日本語化にする

やっぱり英語は苦手です。日本語にします。

(1)下記のURLから日本語をダウンロードする

https://www.tinymce.com/download/language-packages/

 

(2)TinyMCEのlangsのフォルダの中にダウンロード後に展開したja.jsファイルを入れる

 

(3)読み込みの設定を修正する

<script src="TINYMCEを保存したフォルダ/tinymce.min.js"></script>
<script>tinymce.init({ selector:'[name="xxxxx"]',language: "ja" });</script>

↓のように日本語になる

mce2

■ツールバーのボタンを変更する

ボタンの表示非表示の設定は下記のURLを参考にボタンを調べてください。

https://www.tinymce.com/docs/advanced/editor-control-identifiers/#toolbarcontrols

 

・テーブルを入れてみた

        <script>
            tinymce.init({ 
                selector:'[name="xxxx"]',
                language: "ja",
                plugins: "table",
                menubar: "table",
                toolbar: "table"                
            });
        </script>

 

あ、テーブルだけになってしまった。上記を見ての通り、プラグインを追記しないと動かないものやメニューやツールバーが変わってしまうので使うものを選択していきましょう。

mce3

 

さてどこまでやるかな・・・・。

 

        <script>
            tinymce.init({ 
                selector:'[name="xxxxxxx"]',
                language: "ja",
                height: 600, 
                plugins: "table link hr code image media",
                menubar: false,
                toolbar: "code | undo redo | bold italic underline | alignleft aligncenter alignright | formatselect fontselect fontsizeselect | hr | link unlink | table | image | media"
            });
        </script>

 

↓こんな感じにしてみた

mce4

あ、テキストカラーが無かった。pluginsに「textcolor」、toolbarに「forecolor backcolor」追加した。

 

 

■画像の問題

やっぱり、イメージをWordPressみたいにアップしてやりたいな。。。

っていうことで、有料のプラグインを試してみるか・・・。

↓このあたりとか

https://codecanyon.net/item/tinymce-4-image-manager/4744204

 

うーん、フレームワーク使っているしそのままだとNGだな・・・改造改造・・・。

あれ、あれこれ改良しまくったら原型があまりにもなくなってしまった・・・。

■画像のURLの問題

いざ、画像を挿入!ってやったら相対パスになっていた。

この問題は

「relative_urls : false,」を追加することにより絶対パスで記述

        <script>
            tinymce.init({ 
                selector:'[name="xxxxxxx"]',
                language: "ja",
                height: 600, 
                plugins: "table link hr code image media",
                menubar: false,
        relative_urls : false,
                toolbar: "code | undo redo | bold italic underline | alignleft aligncenter alignright | formatselect fontselect fontsizeselect | hr | link unlink | table | image | media"
            });
        </script>

さくらインターネットのVPSサーバーをOS丸ごとVMWAREにリストアしてみた

いくつかさくらインターネットのVPSを利用して運用しております。

中にはもう不要だよっていうものも世代交代で出てきているのですがやっぱり消したくないな、でもVPSでいつまでも料金発生していても勿体ないしってなことでしばらく放置していたマシンを契約が切れる前にVMwareに移行させてみたいと思います。

今回は「Mondo Rescue」というツールを使ってみたいと思います。

 

ツール紹介

http://www.mondorescue.org/

http://www.mondorescue.org/ftp/

バックアップするOSによって追加のリポジトリが異なるので注意。

 

Centos6にインストールの場合

リポジトリ情報をダウンロード→インストール

■Centos6の場合

# cd /etc/yum.repos.d
# wget http://www.mondorescue.org/ftp/rhel/6/x86_64/mondorescue.repo
# yum install mondo

 

■Centos7の場合

# cd /etc/yum.repos.d
# wget http://www.mondorescue.org/ftp/rhel/7/x86_64/mondorescue.repo
# yum install mondo

 

 

バックアップの準備

1.バックアップ先のフォルダを作る

# mkdir /home/backup

 

バックアップをする

シングルモードでバックアップ。

# init 1
# mondoarchive -O -i -N -d /home/backup_img -E '/home/backup_img' -s 4480m

 

オプション(一部)

オプション 説明
-i ISOファイルをバックアップメディアとして使用
-O ISOファイルを出力
-p 出力するISOファイル名を指定
-d 除外するディレクトリを指定。

自動で(/mnt/floppy, /mnt/cdrom, /proc, /sys, /run, /tmp)は除外

-s 出力するISOファイルサイズを指定(例:4480m)

 

エラー

Centos7で実行したときに発生したエラー

Mindi failed to create your boot+data disks.
Fatal error... Failed to generate boot+data disks
---FATALERROR--- Failed to generate boot+data disks
If you require technical support, please contact the mailing list.
See http://www.mondorescue.org for details.
The list's members can help you, if you attach that file to your e-mail.
Log file: /var/log/mondoarchive.log
Mondo has aborted.
rm: cannot remove '/tmp/mondo.tmp.VnGJF3/mountpoint.20849': Device or resource busy
Execution run ended; result=254

どうもmidiのスペースが小さいとかで

# vi /etc/mindi/mindi.conf

EXTRA_SPACE=240000
BOOT_SIZE=40960

 

 

バックアップしたファイルを取得

SCPなどでファイルをダウンロードします。

 

仮想マシン上で復元

バックアップしたISOファイルをマウントしていざ起動!!

バックアップしたファイルの1番目のファイルから起動します。

 

boot:と出たらエンターキーを押します。

Automaticallyだとエラーになるので「Interactively」を選択。

backup

 

CD-Rを選択

backup2

 

バックアップ元で下記を確認しておく。

[root@~]# df -H
Filesystem             Size   Used  Avail Use% Mounted on
/dev/vda3              209G   127G    72G  64% /
tmpfs                  1.1G   4.1k   1.1G   1% /dev/shm
/dev/vda1              263M    56M   195M  23% /boot

リストア先のドライブレターと容量を合わせる。容量がかなりいい加減なので自分で設定する。(ドライブレターだけ直すでもOK)

例:/dev/vda3 →/dev/sda3

 

警告が表示されるけどYESで。

backup3

「Do you want me torestore all of your data?]は「YES」を押す。

 

ROMを交換しながら、リストアを実行していく。

 

「Initialize the boot loader ?」っとメッセージが表示されたら「Yes」を押す。

backup21

 

アラートが表示された場合は「Yes」を押す。

backup22

コマンド入力が可能になったら下記のように行う。

# cd /boot
# mkinitrd -f -v initrd-2.x.y.img 2.x.y

例:
mkinitrd -f -v initrd-2.6.32-220.13.1.el6.x86_64.img 2.6.32-220.13.1.el6.x86_64

# exit

 

「Did you change the mountlist or cloned the system ?」とメッセージが表示され「Yes」を押す。

backup23

 

「/dev/vda」→「/dev/sda」に変更。その後も同じようにレターを変更。

※NANOエディタが起動するので「CTRL」+「コマンドキー」を押して処理をする。

 

コマンドプロンプトに戻ったら再起動をする。

ログインプロンプトが表示されるまで待ちます。

backup24

 

ネットワークアダプタの変更をする

# ifconfig -a

ここで表示されたeth?に合わせて設定をする

# cd /etc/sysconfig/network-scripts
# vi ifcfg-eth3
# /etc/init.d/network restart

 

ファイアウォールがある場合は停止やルール変更をする

 

これで利用可能になるはず。イメージでVPSからリストアできるって便利だな。

やっぱり、有料のバックアップソフトのほうが簡単でリストアも便利?

 

 

gmailでグループを作ってメールを送ったらエラーになった

GMAILって便利なので企業ドメインで利用もしてます。

でも、INFO宛てとはグループを作って内部で転送してたりするのですがそんなときにエラーになるよーって

いわれることもあったので調べてみました。

 

■エラーってこんな文章がついていた。

Technical details of permanent failure:
Your email to group info@xxxxxxxxx was rejected due to spam classification. To address this issue:

 

* Contact the owner of the group, who can choose to enable message moderation instead of bouncing these emails.
* Set up SPF records for your sending domain if you have not done so already.

Instructions for both steps can be found here: https://support.google.com/a/answer/168383.

 

 

でよくわからないのでリンクのヘルプを読んでみた。

 

なになに、一括送信によるメール送信・・・「Google グループによってメッセージが拒否されました。http://support.google.com/a/answer/168383 の一括送信ガイドラインをご確認ください」と表示される・・

そうそう、日本語だとそういう意味なんだなと思いつつ・・・

 

結論として、メッセージを送信したIPアドレスが過去にGoogleユーザーによって迷惑メール関連のトラフィックの送信元として識別されていることを意味するそうです。

誰かが、迷惑メールだ!ってボタンを押したってことかな。みんなぷちっとするような・・・。

 

ホワイトリストへの追加方法もあるみたいなのでヘルプをご参照あれ。

 

so-net hostingサービスにWordPressをインストールする

So-net HostingサービスにWordPressを入れられないよーとかありましたがインストールが無事にできましたので簡単にポイントだけメモしておきます。

 

■MySQLが5.1なので

phpMyAdmin3.4.3を使いました。

https://www.phpmyadmin.net/files/3.4.3/

 

また、MySQLのポート番号が通常の番号とは異なるので

$cfg['Servers'][$i]['port'] = 'ポート番号';

と、phpMyAdminのConfig.ini.phpに追記。

 

■WordPressで

データベースサーバー指定で

サーバー名:ポート番号

としました。

 

ポイントは、MySQLが初期ポート番号と異なるため、変更が必要というところです。

 

まあ、サーバーになれている方ならそう難しくない作業でしょう。