カテゴリー
システム開発技術

【XSERVER】メモ

たまに触るからメモする事にした。

SSH設定

mac(ローカル)の設定

SSHフォルダの作成
他のプロジェクトでも使用する事があるので、作っておいた方が良い。

// 移動
cd ~/
// ディレクトリ作成
mkdir .ssh
// 権限設定
chmod 700 ~/.ssh

XSERVERの秘密鍵で認証する設定

SSH設定ONへ変更

公開鍵認証用鍵ペアの生成
※パスフレーズは、SSH接続時に使用する
※鍵が新しく変更されるので、元の鍵ではアクセスできなくなるので注意してください。

Downloadフォルダから「◯◯.KEY」ファイルを~/.ssh/へ移動

mv ~/Download/◯◯.KEY ~/.ssh/

自身の公開鍵をXSERVERで認証する設定

自身の公開認証ペア鍵を持っているかいないかで生成してください。

自身の公開鍵を作成する方法

※xserverの秘密鍵で認証する際は、不要

// 鍵生成
ssh-keygen -t rsa
// 公開鍵の権限設定
chmod 600 ~/.ssh/id_rsa.pub

「ssh-keygen -t rsa」コマンドで鍵が生成される
公開鍵:id_rsa.pub
秘密鍵:id_rsa

XSERVERで自身の公開鍵の登録

サーバーパネルのSSH設定より、「公開鍵の登録を行う」

先ほど生成した「id_rsa.pub」をコピーし登録する

※既存の鍵が変更される為、複数人で共有されている人は複数人の登録方法を確認ください。

SSH接続コマンド

ssh -i ~/.ssh/◯◯.KEY サーバーID@ルートディレクトリ -p 10022

パスフレーズが聞かれるので入力

※設定している秘密鍵により、(XSERVERか自分)パスフレーズが異なります。

カテゴリー
EC-CUBE

【EC-CUBE4】メモ

バージョン:EC-CUBE4.0

初めて触れるものは、わからない事だらけですね。

何度も探すのはナンセンスなので、メモしておきます。

書籍も買いました!

読んだ感想としては、EC-CUBEってものの6割ぐらいはわかるんじゃないかな٩(•̤̀ᵕ•̤́๑)

https://amzn.to/3ierEXx

EC-CUBE4の設定関連はこちらにまとめています↓↓↓

【EC-CUBE4】設定

デフォルト設定

envファイル見れば良いのですが、一応記載

管理画面URL

http://プロジェクト名/admin
ログインID:admin
パスワード:password

SQL初期設定

mysql, postgresql
ユーザー名:dbuser
パスワード:secret
データベース名:eccubedb

クラス構成

Controller:ルーティング・サービス・モデル・ビューとのやりとり

Entity:SQLのテーブルをPHPにしたクラス
    ゲッターセッター
    アノテーションでいろいろ出来る

Repository:SQLを組んでリスト取得や表示順変更など行う

Service:注文や消費税など複数箇所で使用したり特定の機能として独立しているクラス

デバック方法

これ知らないと開発できませんね!

var_dump

devモードならdumpだけで、綺麗に整形してくれます。

dump($array);

実行クエリ確認

どんなSQLを投げたのか確認したい事ありますよね!

dump($qb->getQuery()->getSQL());
exit;

こんな感じで確認できます٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ

パラメータはないから、dumpで別途確認して下さい。

Doctrineのdump

パラメータを当て込んだSQLが確認できます。

PHP
    public function checkSql($qb) {

        $replaceTargets = [];
        foreach ($qb->getQuery()->getParameters()->toArray() as $key => $parameters) {
    
            $value = $parameters->getValue();
    
            $replaceTarget = '';
            if (is_array($value)) {
                $n = [];
                foreach ($value as $row) {
                    // exit;
                    if (is_array($row)) {
                        // array[1]で渡すパラメータ対応
                        $n[] = "'".$row[1]."'";
                    } elseif (is_object($row)) {
                        // オブジェクト指定はID、違う場合は変更する
                        $n[] = "'".$row->getId()."'";
                    } else {
                        $n[] = "'".$row."'";
                    }
                }
                $replaceTarget = implode(',', $n);
            } elseif (is_object($value)) {
                $replaceTarget = "'".$value->getId()."'";
            } else {
                $replaceTarget = "'".$value."'";
            }
            $replaceTargets[] = $replaceTarget;
        }
    
        $replace = vsprintf(str_replace('?', '%s', $qb->getQuery()->getSQL()), $replaceTargets);
    
        dump($replace);
    exit;
    }

Entity&Repositoryの確認

Controllerであれば「entityManager」は、親クラスで定義済み

$orderRepository = $this->entityManager->getRepository('Eccube\Entity\Order'); 
$order = $orderRepository->findAll();
dump($order); 

別途定義が必要な場合は、下記コードで使用する

use Doctrine\ORM\EntityManagerInterface;

Docker

今回は初めてDockerで、環境構築

開発環境構築途中でエラー

こちらのコマンド実行後にエラー

docker-compose up -d

エラー内容

Unknown SSL protocol error in connection to XXX

ウィルス対策ソフトのカスペルスキー入れているのですが、、、それ?
macを再起動してすぐにコマンド実行したら解決しました٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 6291464 bytes) in /var/www/html/vendor/easycorp/easy-log-handler/src/EasyLogFormatter.php on line 84

docker-compose exec eccube composer run-script compile

メモリ不足で発生します。

php.iniファイルでメモリを増やせばOK

Dockerはコンテナで設定

cd /usr/local/etc/php/
vi php.ini
memory_limit = 128M
↓
memory_limit = 512M

SQLへ初期データの登録

初期データは、EC-CUBEが用意しているデモ用の最低限のデータ

# スキーマ作成+初期データ投入
docker-compose exec ec-cube composer run-script compile

途中で初期化したくなったら

eccubeのサンプルデータも入ってます。

データベース削除:eccubedb デフォルト

データベース作成:CREATE DATABES eccubedb;

あとはさっきのコマンド流せば完了

# スキーマ作成+初期データ投入
docker-compose exec ec-cube composer run-script compile

Workbenchで接続

情報はenvファイルにあります。

 DATABASE_URL=mysql://dbuser:secret@mysql/eccubedb

Hostnameとport番号は、Dockerから確認しました。

パスワードは、「secret」です。

カテゴリー
システム開発技術

【VScode】VisualStudioCode紹介

VScodeはMicrosoftが開発したWindows、Linux、macOS用のソースコードエディタ

プログラムを書くのに特化したメモ帳みたいな感じです。

カラーリング・補完機能・デバック・Gitなど様々な機能があります。

VScodeダウンロード

公式サイトでダウンロード

https://code.visualstudio.com/download

黄色い枠内をクリックでダウンロードできます。

カスタマイズ

効率化や好みにアレンジできます
  1. VScodeの日本語化
  2. 全角空白ハイライト
  3. 言語毎の補完機能追加
  4. 言語毎のデバックツール追加

英語苦手な私は、日本語化は必須です(*´▽`*)

全角スペース事故防止のハイライト!!

全角スペースのせいで「プログラムがエラー」だけどすぐ見つかる(^_-)-☆

日本語化

初期画面はこんな感じです。

vscode初期画面

さっそく拡張していきましょう!!

1.「コマンドパレット」を選択

command palette
  1. windows:ctrl + shift + p
  2. mac:shift + command + P
  3. view → command palette
  4. 表示 → コマンドパレット

2.「configure display language」を選択

3.「install additional laugage」を選択

4.日本語の「install」をクリック

5.右下の「Restart now」をクリック

完成

これで使いやすくなりました(*^^)v

全角スペースハイライト

1.「拡張機能」を選択

拡張機能
  1. ctrl + shift + x
  2. view → extension
  3. 表示 → 拡張機能

2.「EvilInspector」を検索

3.「install」をクリック

アパッチ関連のファイル

拡張機能名:Apache Conf Snippets

アクセス設定で使用される「.htaccess」ファイルが見やすくなります。

envファイル

拡張機能名:DotENV

設定ファイルで使用せれる「.env」ファイルが見やすくなります。

ショートカット

画面ズーム:シフト command ;

画面ズームアウト:command –

縦選択:command option control ↑

カテゴリー
ios システム開発技術

【iosアプリ開発】おすすめ書籍

仕事としてiosプログラミングする際に、何度も見返すことのある書籍を紹介します。
入門書が多くある中、初心者には難しいと思うが内容がわからなくても一読してほしいです。

プログラミング全般

皆さん、ソースコードが仕様書、コードを読みやすくしましょう!

https://amzn.to/35p9XhQ

Objective-C定番本

令和、まだまだ現役のObjective-Cです。

https://amzn.to/2Wh5zgK

Swift定番本

初心者でもバイブル本として手元に欲しい定番本です。

https://amzn.to/2VSvso1

https://amzn.to/3fcHL6r

iosアプリテスト

まさに、iOSのテストに関する教科書です。

https://amzn.to/2KX7RMx

カテゴリー
システム開発技術

【web会議】カメラが起動できない

コロナウィルスの影響で在宅勤務など増えてきてます。

それに伴って、オンライン会議を行う会社も増えてきましたね!

注文住宅の打合せもオンライン会議へと変わってカメラが起動できなくて困ったので調査しました(^_-)-☆

私のPC環境
  1. OS:windows10
  2. カメラ:PC内臓カメラ
  3. ブラウザ:google chrome
  4. ウィルス対策ソフト:カスペルスキー

web会議の可能なツールが多い

ここ1っカ月以内に触れたツールです。

web会議ツール一覧
  1. Skype
  2. Zoom
  3. meet in
  4. Face Hub

特に何もせずに行ったところ、使えないツールが続出(;´・ω・)

マイクカメラ使用した事
Skypeテスト接続
Zoomオンライン飲み会
meet inエージェントのヒアリング
Face Hub注文住宅打合せ

skypeとその他の違い

skypeは、windows10のアプリケーションで使用してました。

それ以外は、ブラウザ経由のツールでした。

ブラウザ経由に問題がありそう

chromeの設定でブロックされていた(;・∀・)

ブロック解除手順

01.サイトの設定を選択

02.カメラとマイクの設定

03.カメラの設定
接続するカメラの設定
ブロックの解除

ブロックの解除で、カメラへアクセス時に確認されます。

04.マイクの設定
接続するマイクの設定
ブロックの解除

ブロックの解除で、カメラへアクセス時に確認されます。

ウィルス対策ソフトに問題ありそう

カメラの保護でchromeがブロックされていた(;・∀・)

ブロック解除手順

01.カスペルスキーを起動

02.小さいですが左下の設定マークを選択

03.webカメラ保護を選択

04.webカメラへのアクセスをすべてブロックする、チェックなしの確認
webカメラのアクセスをブロックしていますを確認

05.chromeがあれば、webカメラへのアクセスを許可する

まとめ

ブラウザの設定、ウィルス対策ソフトの設定で使用できるようになると思います。

ウィルス対策ソフトで、マイクやカメラのドライバーのインストールが制限せれている可能性もあるので、併せて確認してください。

カテゴリー
SQL

Workbench 起動しない

開発環境作る際にハマったのでメモ

バージョン:MySQL Workbench 8.0.19

windows10 Home 64bit

windows10でインストール後起動しない

インストール後にアイコンをクリックしても起動しない

アンインストールして入れ直しもダメ

ネットで検索しても解決にならない

必殺技!レバフレンズ(^_-)-☆

現場には以前一回お昼行ったことのある「レバテックフレンド」2人がいるんです‼

作業しているパソコンを確認!

一人目、、、Mac

二人目、、、「Windows」(/・ω・)/

よし!お昼誘って聞いてみよう!

エンジニア同士の食事は楽しい(*´▽`*)

午後の作業に入り、15分ぐらいしたらコバッチが教えに来てくれた(*ノωノ)

Windowsにインストールする際は、〇〇〇が必要

このページ見て―!!
全部英語、、、
これ入れないと動かないってー(/・ω・)/

さらっと英語できる人なんだなと羨ましく思った瞬間でした(;・∀・)

これを調べれば他にも対応できる

workbenchダウンロードページ

workbenchダウンロードページ01

英語苦手でもインフォメーションは確認すべき

workbenchダウンロードページ02

危険!デフォルトの文字コード

mwbファイルが開けなくなる

MySQLの文字コードちゃんと「utf8-general-ci」にしましょう。

多分これで mwbファイル が開けるようになった(;^ω^)

macで起動しなくなった

2020/07/06
いつも起動していたのにオプションバーしか表示されなくなった。

↑ この表示のみ

Quit MySQl Workbenchで停止し、開き直せば問題なく起動できるようになった。

カテゴリー
Git

【Git】現役プログラマーが使うコマンド

こんにちは!

まったりのんびり、@vVv_kenshi_vVvです!

Gitコマンド一覧

ついつい調べてしまう、忘れっぽいあなた(私)の為に捧げるw

記事です!

リセット系

取り消しやコミット履歴を綺麗にする際に、使用するコマンドを紹介

reset

・直前のコミットの取り消し

git reset --herd HEAD^

・直前のリセットの取り消し

git reset --hard ORIG_HEAD

・addファイルを破棄する(最後にコミットした状態へ戻す)

git checkout HEAD -- [ファイル名]

checkout

・変更の破棄(ファイルの削除ではない)

git checkout HEAD ファイル名
git checkout HEAD app/Customize/TestController.php

・指定ディレクトリは以下の破棄

git checkout HEAD ディレクトリ名
git checkout HEAD app/Plugin/Api/

・全ての変更の破棄

git checkout .

ログ関連

表示を見やすくするのに使用するコマンド(オプション)

log

・GUI( SourceTree など)までは、見やすくはなりませんが、気持ち良くなります。

git log --oneline --graph --decorate

・マージ履歴

git log --oneline --merged

カテゴリー
JavaScript システム開発技術

【JavaScript】メモ

デバック

// 文字列 console.log('test'); 
// 変数 var name = 'leveliving'; console.log(name);

変数初期化

// 変数初期化 初期値は「undefined」
var name;
// 変数初期化+代入
var name = 'leveliving';

配列初期化

// シンプル初期化
var array = [];
// 初期化 + 値代入
var array = [1,2,3]; 

配列の表示

// 最初の値
array[0];
// 最後の値
array.length -1;

配列の加工

// 配列から最後の要素を取り除き、値を返す。
array.pop();
// 配列から最初の要素を取り除き、値を返す。
array.shift();
// 配列の最後に 1 個以上の要素を追加する。元のインデックスは変更なし
array.push('sword');
array.push('sword', 'shield');
// 配列の最初に 1 個以上の要素を追加し、インデックスをスライドさせる。
array.unshift('sword');
array.unshift('sword', 'shield');

fecth API

fetch(api, {
   method: "POST",
 }).then( response => {
   return response.json();
 }).then( data => {
   phpData = data.result[0].body;
   // json_encodeが上手くいかない時は、JSON.parseで変換する
   createBlock(JSON.parse(phpData));
 }).catch(error => {
   throw new Error("ネットワークエラー");
 });

PHPのreturnデータ取得

fetch(api, { method: "POST", })
   .then( response => { return response.json();})
   .then( data => { phpData = data.result[0].body;})
   .catch( error => { throw new Error("ネットワークエラー")
 }); 

一回目のthenの引数が二回目のthenへ渡される。

dataの構造を確認し取得する。

カテゴリー
jQuery

【jQuery】メモ

セレクタ操作

複数ヒットした場合は、全要素取得する。

セレクタにヒットしなければ、何も取得できない。

セレクタ指定コピペするとシングルクォートが変わるので、加工して使ってください(´・ω・`)

セレクタ指定

メソッド名説明
$(‘#id名’)id名で要素の取得
$(‘.class名’)class名で要素の取得
$(‘タグ名’)タグ名で要素の取得
$(‘input[name=”name名”]’)inputタグのname名で要素の取得
$(‘[data-userid=”11″]’)data属性で要素取得
data-useridの11で要素取得

同一階層セレクタ

メソッド名説明
siblings(‘セレクタ名’)同一階層の要素をセレクタ指定で取得
next()同一階層の次の要素を取得
nextAll(‘セレクタ指定’)同一階層の次以降の要素をセレクタ指定で取得
prev()同一階層の直前の要素を取得
prevAll(‘セレクタ指定’)同一階層の直前以降の要素をセレクタ指定で取得

階層別セレクタ

メソッド名説明
find(‘セレクタ名’)一つ下の階層の要素をセレクタ指定で取得
parent()親要素の取得
parents(‘セレクタ名’)すべての親要素を取得

FixedMidashi

「_fixedhead」属性を定義して、「FixedMidashi.create()」を呼べば固定できます。

onLoad="FixedMidashi.create();

1カラム目と1行目固定は下記コード

 <table _fixedhead="rows:1; cols:1"> 

複数ファイルアップロード

画像や動画を複数アップロードする際に手間取ったので追加

アップロードファイルの情報取得

例:「input」タグのname属性を下記にした場合

name="uploadFirld[0][file]"
name="uploadFirld[1][file]"
name="uploadFirld[2][file]" 

こちらで取得:$(‘:file’)

オブジェクトの確認(デバック)

for (val of $(':file')) {
    if (val.files.length > 0) {
        // inputタグのname取得
        console.log(val.name);
        console.log(val.name.replace(/[^0-9]/g, ''));
        // アップロードしたファイル名取得
        console.log(val.files[0].name);
     }
}  
if (val.files.length > 0) {
    // inputタグのname取得
    console.log(val.name);
    console.log(val.name.replace(/[^0-9]/g, ''));
    // アップロードしたファイル名取得
    console.log(val.files[0].name);
}  

・PHPでの処理$_FILES[‘uploadFirld’]

console.logでの表記

{name: Array(3), type: Array(3), tmp_name: Array(3), error: Array(3), size: Array(3)}
JSでデータ取得

formData.get('uploadFirld[0][key]');

PHPでデータ取得時

name[0][file] => "file1"
name[1][file] => "file2"
name[2][file] => "" 
tmp_name[0][file] => "/tmp/phpaOtDsF"
tmp_name[1][file] => "/tmp/phpaCtNzV"
tmp_name[2][file] => 

・s3アップロードに必要なのは、[inputのname]と[tmp_name]

foreach ($_FILES['uploadFirld'] as $property => $data) {
     if ($property === 'tmp_name') {
     foreach ($data as $firldNum => $value) {
         if (!empty($value['file'])) {
             $name = date('YmdHis', Time::time());
             $key = "test/{$ID}/{$firldNum}/{$name}";
             AwsS3::multipartUploadPublic($key, $value['file']); 
         }
    }
} 

■input file 複数情報取得

カテゴリー
Git

【RhodeCode】

プルリクエスト手順

Pull Requestボタンを押下

Open new Pull Request ボタンを押下

作業ブランチとマージ先ブランチを選択

※レビュー者が確認しやすいようにコメントを編集

Submit Pull Requestボタンを押下

Pull Request履歴画面