-
CakePHP3 ファイルキャッシュ活用してサイト高速化する方法
CakePHP3 ファイルキャッシュ(File Cache)を活用してサイト高速化する方法です。 ※ ファイルキャッシュはローカルファイルを使用するシンプルなキャッシュ方法です。 …
-
CakePHP3「TwitterOAuth」でダイレクトメッセージ(DM)を送信する
2017/12/06 -CakePHP3
composer, Twitter, TwitterOAuth, ダイレクトメッセージ, ライブラリCakePHP3 ライブラリ「TwitterOAuth」で自分のTwitterアカウントにダイレクトメッセージ(DM)を送信する。 ◯ ライブラリ「TwitterOAuth」インストール [ …
-
CakePHP3 ControllerとTemplateに管理者用(admin)ディレクトリ作成する方法
CakePHP3 ControllerとTemplateに管理者用(admin)ディレクトリ作成する方法です。 ex) URL「/admin/logins/」 ◯「config/routes.php」 …
-
CentOS6.9にCakePHP3.5インストールする方法
CentOS6.9にCakePHP3.5インストールする方法です。 ◯ システム要件
12345・HTTPサーバー(Apache/Nginx等)・PHP5.6以上(PHP7.1も含む)・mbstring PHP拡張・intl PHP拡張・simplexml PHP拡張◯ Composerセットア …
-
CentOS6.9にPHP7.1インストール(yum)する方法
CentOS6.9にPHP7.1インストール(yum)する方法です。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657# ls -l /etc/yum.repos.d合計 24-rw-r--r--. 1 root root 1991 3月 28 19:25 2017 CentOS-Base.repo-rw-r--r--. 1 root root 647 3月 28 19:25 2017 CentOS-Debuginfo.repo-rw-r--r--. 1 root root 630 3月 28 19:25 2017 CentOS-Media.repo-rw-r--r--. 1 root root 7989 3月 28 19:25 2017 CentOS-Vault.repo-rw-r--r--. 1 root root 289 3月 28 19:25 2017 CentOS-fasttrack.repo// Remiリポジトリのインストール# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm// 下記エラー発生時// 依存性の欠如: epel-release = 6 は remi-release-6.9-1.el6.remi.noarch に必要とされています// CentOS6 64bit版# wget rpm -Uvh http://ftp.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm# rpm -ivh epel-release-6-8.noarch.rpm# ls -l /etc/yum.repos.d合計 56-rw-r--r--. 1 root root 1991 3月 28 19:25 2017 CentOS-Base.repo-rw-r--r--. 1 root root 647 3月 28 19:25 2017 CentOS-Debuginfo.repo-rw-r--r--. 1 root root 630 3月 28 19:25 2017 CentOS-Media.repo-rw-r--r--. 1 root root 7989 3月 28 19:25 2017 CentOS-Vault.repo-rw-r--r--. 1 root root 289 3月 28 19:25 2017 CentOS-fasttrack.repo-rw-r--r-- 1 root root 1056 11月 5 12:52 2012 epel-testing.repo-rw-r--r-- 1 root root 957 11月 5 12:52 2012 epel.repo-rw-r--r-- 1 root root 457 6月 30 21:13 2017 remi-php54.repo-rw-r--r-- 1 root root 1316 6月 30 21:13 2017 remi-php70.repo-rw-r--r-- 1 root root 1316 6月 30 21:13 2017 remi-php71.repo-rw-r--r-- 1 root root 1316 6月 30 21:13 2017 remi-php72.repo-rw-r--r-- 1 root root 751 6月 30 21:13 2017 remi-safe.repo-rw-r--r-- 1 root root 2609 6月 30 21:13 2017 remi.repo// PHP7.1インストール# yum install --enablerepo=remi,remi-php71 php php-devel php-mbstring※ php-devel:PHP開発用※ php-mbstring:マルチバイト文字用// その他PHPインストール(必要あれば)# yum install --enablerepo=remi,remi-php71 php-mysql php-pdo php-xml php-mcrypt php-intl php-pear※ php-mysql:MySQL用※ php-pdo:データベース接続用※ php-xml:XML操作用※ php-mcrypt:暗号化・復号化用※ php-intl:国際化用※ php-pear:PEARライブラリ用// PHPインストール確認# php -vPHP 7.1.12 (cli) (built: Dec 1 2017 14:08:55) ( NTS )Copyright (c) 1997-2017 The PHP GroupZend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
-
jQuery UI モーダルでダイアログを開くサンプルコード
jQuery UI モーダル(modal)でダイアログを開くサンプルコードです。 ※ jQuery 3.1 / jQuery UI 1.12 [crayon-6 …
-
CakePHP3 Shell(シェル)プログラムのサンプルコード
2017/12/04 -CakePHP3
Linuxコマンドプロンプト, shell, サンプルコードCakePHP3 Shell(シェル)プログラムのサンプルコードです。 ※ LinuxコマンドプロンプトからShell実行して、MSG「Shellテスト」を表示する [crayon-6508 …
-
JavaScript 数字先頭に0を追加する関数のサンプルコード
2017/12/04 -jQuery3
JavaScript, サンプルコード, 関数JavaScript 数字の先頭に0を追加する関数のサンプルコードです。
12345678910111213<script>console.log(digitFormat(1,3)); // 出力ログ:001// 数字の先頭に0を追加してdigitで指定された桁数に変換するfunction digitFormat(num, digit) {var len = String(num).length;if(digit > len) {return (new Array((digit - len) + 1).join(0)) + num;} else {return num;}}</script>
-
JavaScript 日付と時刻チェック(YmdHi)関数のサンプルコード
2017/12/04 -jQuery3
date, JavaScript, サンプルコード, 関数JavaScript 日付と時刻チェック(YmdHi)関数のサンプルコードです。
123456789101112131415161718192021222324252627282930// 日付と時刻チェックのサンプルコード<script>console.log(checkDate(2017,12,04));console.log(checkTime(10,11));// 日付チェック(戻り値: true or false)// ex) Y:2017, m:12, d:04function checkDate(Y, m, d) {var m = parseInt(m, 10);var d = parseInt(d, 10);var check_date = Y+'/'+m+'/'+d;var date = new Date(check_date);if ( check_date == (date.getFullYear()+'/'+(date.getMonth()+1)+'/'+date.getDate()) ) {return true;} else {return false;}}// 時刻チェック(戻り値: true or false)// ex) H:10, i:11function checkTime(H, i) {var H = parseInt(H, 10);var i = parseInt(i, 10);if (0 <= H && H <= 23 && 0 <= i && i <= 59) {return true;} else {return false;}}</script>
-
jQuery3 animateで指定位置まで移動するサンプルコード
jQuery3 animateで指定位置まで移動するサンプルコードです。
123456789101112131415161718<div id="test"></div><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script><script>animate_scroll($('#test'));// targetまでanimateにて移動function animate_scroll(target) {if (!target) {return false;}var target_position = target.offset().top; // 移動位置取得var adjustment_num = 20; // 位置調整(targetから上に20px)target_position = ((target_position - adjustment_num) > 0) ? (target_position - adjustment_num) : 0;$('html, body').animate({scrollTop: target_position}, 400, 'linear');}</script>
-
CakePHP3 ビュー(Template)から独自Helperを使うサンプルコード
2017/12/02 -ビュー(Template)
Helper, サンプルコードCakePHP3 ビュー(Template)から独自Helperを使うサンプルコードです。 ◯ 独自Helper
123456789101112131415161718192021222324// ファイル名 「src/View/Helper/Cake3Helper.php」<?phpnamespace App\View\Helper;use Cake\View\Helper;class Cake3Helper extends Helper{public function initialize(array $config){parent::initialize($config);}// trailing slash(末尾スラッシュの統一)public function addslash($url){if (preg_match('/\/$/', $url)) {return $url;} else {return $url.DS;}}}…
-
CakePHP3 レコード更新時にmodifiedを更新しない方法
2017/12/02 -モデル(Model)
modified, setDirty, レコード更新CakePHP3 レコード更新時に特定カラム(modified)を更新しない方法です。
12345678$user = $this->Users->get($id);$user['last_login'] = date('Y-m-d H:i:s');// modified更新しない$user->dirty('modified', true); // CakePHP ~3.3$user->setDirty('modified', true); // CakePHP 3.4~$this->Users->save($user);
-
CakePHP3 フラッシュメッセージを4秒後に非表示にする方法
2017/12/01 -ビュー(Template)
delay, fadeIn, fadeOut, サンプルコード, フラッシュメッセージ, 非表示CakePHP3 フラッシュ(flash)メッセージを4秒後に非表示にするサンプルコードです。
123456789// ctpファイルに追記する<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script><script>$(function(){$('div.message').fadeIn('slow', function() {$(this).delay(4000).fadeOut('slow');});});</script>
-
CakePHP3 ImageMagickで写真(画像)リサイズするサンプルコード
2017/12/01 -コントローラー(Controller)
ImageMagick, サンプルコード, リサイズ◯ CakePHP3 ImageMagickで写真(画像)リサイズするサンプルコードです。
123456789101112131415161718192021222324252627282930// サンプルコード// 縦: xxxpx -> 600px// 写真パス$photo_file_path = '写真パス';// 写真読み込み$imagick_img = new \Imagick($photo_file_path);// 写真サイズ取得$img_width = $imagick_img->getImageWidth();$img_height = $imagick_img->getImageHeight();// 写真リサイズ// 縦サイズ601px以上だったら縦サイズ600pxにリサイズ$max_height = 600;if (!empty($img_width) && !empty($img_height) && ($max_height < $img_height)) {// リサイズ処理if (!$imagick_img->resizeImage(0, $max_height, \Imagick::FILTER_POINT, 1)) {// resizeImageエラー}}// 写真上書き保存if (!$imagick_img->writeImage($photo_file_path)) {// 上書き保存エラー}// Imagick clear$imagick_img->clear();関連リンク:CentO …
-
CakePHP3 ImageMagickで写真(画像)圧縮するサンプルコード
2017/12/01 -コントローラー(Controller)
ImageMagick, サンプルコード, 写真圧縮, 圧縮品質◯ CakePHP3 ImageMagickで写真(画像)圧縮するサンプルコードです。
123456789101112131415161718192021222324252627282930313233// サンプルコード// 対象ファイル:JPEG,PNG,GIF// 圧縮品質:80// 写真パス$photo_file_path = '写真パス';// 写真拡張子取得$file_extension = pathinfo($photo_file_path, PATHINFO_EXTENSION);// 写真読み込み$imagick_img = new \Imagick($photo_file_path);// 写真圧縮設定if ($file_extension == 'jpeg' || $file_extension == 'jpg') {$imagick_img->setImageFormat('jpg');$imagick_img->setImageCompression(\Imagick::COMPRESSION_JPEG);} elseif ($file_extension == 'png') {$imagick_img->setImageFormat('png');$imagick_img->setImageCompression(\Imagick::COMPRESSION_UNDEFINED);} else {$imagick_img->setImageFormat('gif');$imagick_img->setImageCompression(\Imagick::COMPRESSION_UNDEFINED);}$imagick_img->setImageCompressionQuality(80);// 写真上書き保存if (!$imagick_img->writeImage($photo_file_path)) {// 上書き保存エラー}// Imagick clear$imagick_img->clear();関連リンク:CentOS6 …
-
CakePHP3 ImageMagickでExifのOrientation情報あったら写真回転する
2017/12/01 -コントローラー(Controller)
EXIF, ImageMagick, Orientation, 写真回転◯ CakePHP3 ImageMagickでExifのOrientation情報あったら写真回転する方法(JPEGのみ)。 [crayon-6508fbaad8ce9986093 …
-
CentOS6.9 PHP用ImageMagick(画像処理ツール)インストール方法
◯ CentOS6.9 PHP用ImageMagick(画像処理ツール)インストール方法です。
123456789101112131415161718192021222324// ImageMagick, ImageMagick-develインストール# yum install ImageMagick ImageMagick-devel// PHP用(imagick)インストール// 「Please provide the prefix of Imagemagick installation」表示されたらEnter入力# pecl install imagick// 「/etc/pnp.ini」最終行に追記extension=imagick.so// 下記コマンドでenabledであることを確認するphp -r "echo phpinfo();" | grep "imagick"imagick module => enabledimagick module version => 3.4.3~// パーミッション変更cd /usr/lib64/php/moduleschmod 755 imagick.so// php-fpm, nginx再起動sudo service php-fpm restartsudo service nginx restart
-
CakePHP3 写真から位置情報(GPS)を取得するサンプルコード
2017/12/01 -コントローラー(Controller)
EXIF, exif_read_data, GPS, latitude, longitude, サンプルコード, 位置情報, 経度, 緯度, 高度◯ CakePHP3 写真から位置情報(GPS)を取得するサンプルコードです。
1234567891011121314151617181920212223242526272829303132333435363738394041424344class UsersController extends AppController{public function index(){// Exif取得(EXIFヘッダを読み込む)$exif_data = @exif_read_data('画像パス');// GPS(緯度・経度)取得if (isset($exif_data) && !empty($exif_data['GPSLatitudeRef']) && !empty($exif_data['GPSLatitude']) && !empty($exif_data['GPSLongitudeRef']) && !empty($exif_data['GPSLongitude'])) {$gps_lat = $this->exif_get_10_from_60($exif_data['GPSLatitudeRef'], $exif_data['GPSLatitude']);$gps_long = $this->exif_get_10_from_60($exif_data['GPSLongitudeRef'], $exif_data['GPSLongitude']);}// GPS(高度)取得if (isset($exif_data['GPSAltitude']) && !empty($exif_data['GPSAltitude'])) {$gps_altitude = $this->exif_convert_float($exif_data['GPSAltitude']);if (isset($exif_data['GPSAltitudeRef']) && ($exif_data['GPSAltitudeRef'] == '1') && !empty($gps_altitude)) {// 海抜0m未満だったら$gps_altitude = ($gps_altitude * -1);}}var_dump($gps_lat); // 緯度:35.728466666667var_dump($gps_long); // 経度:139.70668055556var_dump($gps_altitude); // 高度:42.364415862808}// Exifの位置情報を60進数から10進数に変換private function exif_get_10_from_60($ref, $gps){// 60進数から10進数に変換$data = $this->exif_convert_float($gps[0]) + ($this->exif_convert_float($gps[1]) / 60) + ($this->exif_convert_float($gps[2]) / 3600);//南緯または西経の場合はマイナスにして返却return ($ref=='S' || $ref=='W') ? ($data * -1) : $data;}// 「x/y」という文字列を受け取り、「x÷y」の結果を返すprivate function exif_convert_float($str){$val = explode('/', $str);return isset($val[1]) ? ($val[0] / $val[1]) : $str;}}
-
jQuery3 Ajax通信のサンプルコードです。
1234567891011121314151617181920212223// ex) カテゴリ追加$(function(){$.ajax({url: '/add', // リクエスト送信先URLtype: 'POST', // get or postメソッドtimeout: 2000, // タイムアウト時間をミリ秒で設定cache: false, // キャッシュ無効data: {'category_name': category_name}, // サーバーに送信する値dataType: 'json' // サーバーから返されるデータ型}).done(function (response, textStatus, jqXHR) {// サーバー側[php] echo json_encode(['status' => true or false]);if (response.status) {// 追加成功alert('success.');} else {// 追加失敗alert('error.');}}).fail(function (jqXHR, textStatus, errorThrown) {// 通信失敗alert('error.');});});
-
CakePHP3 Ajax通信でコントローラーの途中で抜ける方法
2017/11/30 -コントローラー(Controller)
Ajax, autoRender, echo, json_encode, returnCakePHP3 Ajax通信でコントローラーの途中で抜ける方法の参考コードです。
12345678910111213public function index(){$this->autoRender = FALSE;$flg = true; // true or falseif (!$flg) {// Ajax戻り値echo json_encode(['status' => false, 'err_msg' => __('サーバーエラーが発生しました。')]);// ここで処理終了return;}}