- 1. エンジニアになって4年経過 / ここまでやってきたこと
- 2. さくらレンタルサーバDBへ接続する方法
- 3. 【Chart.js】データベースからグラフを作成する
- 4. BEAR.Sunday+HTMXでSPAを作る
- 5. 7年前にEC-CUBE 2の脆弱性を発見したときのメモ
- 6. PHP(Laravel)環境でstaticおじさんにならない心構え-staticの使いどころ編
- 7. 【PHP】Laravelをもっと便利に!BLOCS公開しました。
- 8. 【MySQL接続エラー】SQLSTATE[HY000] [2002] Connection refused【DBに接続ができない】
- 9. EC-CUBE4.2で商品一覧に会員限定商品のみフィルターを追加する
- 10. 【初心者向け】functions.phpにhead情報を入れる
- 11. OSSソースコードリーディング(stefanzweifel/screeenly)
- 12. PHPの定数のサンプルプログラム
- 13. PHP_CodeSnifferとPHP-CS-Fixerの比較
- 14. Yiiを使ってみて
- 15. DoctrineとEloquent比較大全: テストフィクスチャを作る
- 16. DoctrineとEloquent比較大全24: migration
- 17. DoctrineとEloquent比較大全23: FROMにサブクエリを使う
- 18. 【備忘録】関数の呼び出し元の参照
- 19. 【PHP】フォーム送信後にチェックボックスの選択を保持する
- 20. 【Qiita】新着記事一覧ページを疑似再現する
エンジニアになって4年経過 / ここまでやってきたこと
# はじめに
2018年、30代実務未経験 妻子持ちでSES企業へ転職し、初めてエンジニアになってから今まで、ロースキルではありながらもエンジニアというものはなかなか大変な職業だったので(今もエンジニアですが)、これから30代で実務未経験からエンジニアになろうとしている方の一助になればと思い、僕が学んできたことを出し惜しみせずに紹介しようと思います。ちなみにエンジニアとひとくくりにしておりますが、ソフトウェア保守運用、インフラ保守運用、インフラ運用設計が主になります。
# 目次
[1.はじめに](#はじめに)
[2.エンジニア1-2年目](#エンジニア1-2年目)
[3.エンジニア3-4年目](#エンジニア3-4年目)
[4.現在](#現在)
[5.最後に](#最後に)# エンジニア1-2年目
31歳SES企業に未経験で入社しました。(2018.7~2020.11)
ローでレガシーな案件にアサインしています。
– 1.5ヶ月Javaの研修
– 0.5ヶ月SQLの研修
-> BIツールの保守改修案件 -> 1ヶ
さくらレンタルサーバDBへ接続する方法
# やりたいこと
筆者はさくらレンタルサーバのスタンダードプランを利用しているのですが、
以前、ローカル環境にて遊びでPythonのGUIアプリを作っている際
「既存のデータベース(さくらレンタルサーバ)からデータを取得したい…!」
という場面があり、いざドメインを指定して接続してみたところ、**うんともすんとも言わず。**
~~(いや、何かエラーメッセージが出たような気もしますが忘れました。)~~
調べてみると、セキュリティの観点からさくらのWebサーバ以外からのアクセスはできない仕様らしい。# 解決方法
既に同じ悩みを抱えている方々がコミュニティに質問を投げており、回答者の方々が口を揃えて言うのが
「WebサーバにAPIを設置して、API経由でデータベースにクエリを流せばいいじゃん」
とのこと。# 実装方法
今回はとにかく手っ取り早く作る為、
APIがGETでパラメータを受け取り、それを元にAPI内部でクエリを作成する、という作りにしました。
ただそれだとあまりにもセキュリティ面がガバガバなので、
申し訳程度にパラメータのエスケープ処理と、さくらレンタルサーバの機能を利用し
【Chart.js】データベースからグラフを作成する
## 実装したいこと
![グラフ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3082297/a462d26f-4577-b702-d915-9b5aaf34239f.png)
年齢人数を調べたデータベース「age_data」からグラフを作成する。
## 環境
* XAMPP Version 8.1.10
* Visual Studio Code Version 1.74.2
## データベース(phpMyAdmin)
|テーブル「age_data」|テーブル「age」|
|—|—|
|![テーブル「age_data」](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3082297/3f6b1897-9834-8b3a-efd6-f4c157653f76.png “テーブル「age_data」”)|![テーブル「age」](https://qiita-image-store.s3.ap-northeast-1.amazonaws
BEAR.Sunday+HTMXでSPAを作る
# はじめに
こんにちは、@pazworld です。今年、BEAR.Sundayに出会いました。すべてがリソースでできていてURIでアクセスできることや、すっきりとしたディレクトリ構成、コンポーネントをDIで柔軟に入れ替えられることなど、設計の素晴らしさに感銘を受け、PHP入門をしながら勉強しました。
今年勉強したことのまとめとして、BEAR.SundayとHTMXを使った1行メモアプリをSPAで作成しました。これからBEAR.Sundayを勉強しようとしている方への参考になれば幸いです。
(SPA = Single Page Application: 最初に読み込んだWebページからページ移動せず動作するWebアプリケーション)
## BEAR.Sunday
[BEAR.Sunday](https://bearsunday.github.io/)はPHPで書かれたWebフレームワークです。MVCを採用する多くのWebフレームワークと異なり、BEAR.Sundayはリソースで構成されていて、各リソースはURIを持ち、HTTPの動詞(GET/POST/PUT/DELETE)で
7年前にEC-CUBE 2の脆弱性を発見したときのメモ
下書き7年前っていうのが残っていたので公開しておく。
危険度「中」だから直してない人も結構居るんじゃないかなと思って公開せずにいたのだった。シンプルなCSRFだけど、管理画面からPHPを編集できる系のCMSだと実質何でもできてしまう。こういうのってPHPあるあるだよねえ…。Javaには無いだろうし、RubyとかPerlとかもあまり無さそう。チェックしてないだけかもわからんが。
HTMLにちょっとした動的コードをPHPで埋め込む、デザイン用HTMLをアップする感覚でPHPをアップする、っていう文化があるからだろうか。—-
[クロスサイトリクエストフォージェリの脆弱性 2015年 10月 23日](https://www.ec-cube.net/info/weakness/weakness.php?id=63)
これを修正していたら、あ、直ってないじゃんっていう。それで報告して
[クロスサイトリクエストフォージェリの脆弱性 2015年 11月 13日](https://www.ec-cube.net/info/weakness/weakness.php?id=64)
こ
PHP(Laravel)環境でstaticおじさんにならない心構え-staticの使いどころ編
# 追記
なし
# はじめに
__いろんな記事を見た結果、圧倒的私流結論をまとめると下記以外はstaticはやめとけデス__
あるときstaticの使い方に悩みました。いつ使うんだこれは、と。
「static 使いどころ PHP」みたいに検索しても、「クラスのインスタンスを生成することなしに利用できるプロパティやメソッドのこと」とかそんなことしか書いてなかったです。(私感)聞きたいのはそんなことじゃない。
いつ、どんな時に使うんだよ。となったので、下記3つの時さえ注意してればOKかなと。
ワタシと同じ気持ちの人はぜひ参考にしてください。私の解釈なのであくまでご参考に。(※ここ違うんじゃないみたいなのは随時受け付けてますので優しくお願いします。)# staticの使いどころ
### 【其の一】 singleton patternとか
singleton patternとはインスタンスが一つしか存在しないことを保証するパターン。
簡単にコードを記述してみると下記みたいな感じ。
Logger::getInstance()等もこれにあたりますね。“`php:rou
【PHP】Laravelをもっと便利に!BLOCS公開しました。
# なぜBLOCSを開発するのか
BLOCSはLaravelで使えるテンプレートエンジンです。LaravelにはBladeがあるのに、なぜBLOCSを開発するのか?「Bladeって結局プログラムをしないといけない感じがします」すべてはこの一言に集約されます。名前`$name`がある時だけ表示するなど、HTMLを動的にするロジックをプレゼンテーションロジックと呼びます。LaravelのBladeのテンプレートは、下記のようにプレゼンテーションロジックがHTMLと密に混じっています。
“`html:example.blade.php
@if ($name != “”)Hello, {{$name}}.
@else
Hello, Guest.
@endif
“`せっかくHTMLは構造化されているのに、構造を活用せずにテンプレートを書くので「結局プログラムをしないといけない感」が出るのではと。HTMLの構造を活かすことで、Bladeのプログラムっぽさを減らせるのでは?と考え、BLOCSの開発を始めました。
## BLOCSができること
H
【MySQL接続エラー】SQLSTATE[HY000] [2002] Connection refused【DBに接続ができない】
dockerを使用してlaravelの環境構築を行った後、apiの作り込みをしていたら、表題のエラーで詰まり、解決するにかなりの時間を浪費しました。
初歩的なミスで恥ずかしい事ですが、備忘録して今回の修正方法を記録しておきます。### laravelのDB接続概要(簡易)
laravelでは、“`config/database.php “`に各種DBに接続する為、情報を記載する入力欄があると思います。
(基本的は、どの言語のフレームワークでも、同様の入力する欄があると思います)“`php
‘connections’ => [
// 省略‘mysql’ => [
‘driver’ => ‘mysql’,
‘host’ => env(‘MYSQL_HOST’, ‘127.0.0.1’),
‘port’ => env(‘MYSQL_PORT’, ‘3306’),
‘database’ => env(‘MYSQL_DATABASE’, ‘forge’),
‘username’
EC-CUBE4.2で商品一覧に会員限定商品のみフィルターを追加する
# 概要
会員限定機能を追加できるプラグインを作成しました。
https://www.ec-cube.net/products/detail.php?product_id=2671こちらに会員限定商品のみをプラグインやコアファイルを弄ることなく一覧で表示する方法のご紹介です。
「mtb_product_list_order_by」テーブルに1項目を追加する
Cusotomizeディレクトリ内にRepositoryディレクトリを設置する
追加したディレクトリにProductWhereAdd.phpを追加する
“`php:ProductWhereAdd.php
【初心者向け】functions.phpにhead情報を入れる
いつも煩雑になりがちな`header.php`に記載している情報を、メンテナンス性を向上させる目的で`functions.php`に書くことを覚えたので、共有します。
他のテーマファイルについては、以下の記事で書いてますのでお時間ありましたら合わせてご覧ください。
:::note info
ファイルの構造や解説等、Wordpress(以下、WP)のテーマを自作する際の基本的な部分は、こちらの記事で紹介しています。
+ [【初心者向け】Wordpressテーマを自作する際に分かってると良いかもしれない事](
https://qiita.com/makkie/items/dc764c2845492079c0af)
+ `index.php`のコードを知りたいよって方はこちら
[【初心者向け】Wordpressテーマを自作する[index.php]](https://qiita.com/makkie/items/b5231a9f63b076c70af8)
+ `header.php`のコードを知りたいよって方はこちら
[【初心者向け】Wordpressテーマを自作する[header.ph
OSSソースコードリーディング(stefanzweifel/screeenly)
## 1. はじめに
今回コードリーディングしたものは下記のOSSのコード。
[stefanzweifel/screeenly](https://github.com/stefanzweifel/screeenly)– スクリーンショットのAPIを提供するサービス
– starは400程
– PHP(Laravel)で記述されている
– 参考になったコードとコードの下にコメントを記載### 2.本文
### Interface“`PHP: modules/Screeenly/Contracts/CanCaptureScreenshot.php
PHPの定数のサンプルプログラム
PHPで定数のサンプルプログラムを実装しました。
全体のプログラムです“`html
WORK35A
PHP_CodeSnifferとPHP-CS-Fixerの比較
PHPのコードスタイルをチェックしてくれるツール (Linter) といえば、**PHP_CodeSniffer**と**PHP-CS-Fixer**の2つが有名です。
2種類あるがゆえに、いざツールを導入しようとなると「どっちを選べばいいの!?」となりがちだと思います。というか自分が実際なりました。
というわけで、私が担当プロダクトへのLinter導入にあたって調査した、PHP_CodeSnifferとPHP-CS-Fixerの比較を紹介します。## 使い方
いずれもComposerでインストールし、コマンドラインから実行できます。特徴としては、PHP_CodeSnifferはチェックと自動修正でそれぞれ`phpcs`,`phpcbf`という別コマンドに分かれているのに対し、PHP-CS-Fixerは`php-cs-fixer fix`コマンドで自動修正、それに`–dry-run`オプションを付けるとチェックのみになる、という違いがあります。
PHP-CS-Fixerは “Fixer” という名前からもわかるように、あくまでコードの修正が基本で、チェックする機能はそのドラ
Yiiを使ってみて
## はじめに
最近WEBアプリ兼WEBAPIを作成する際にYiiフレームワークを初めて採用したので
・実際に使ってみてどうなのか
・他のフレームワークと比べてどうなのか
を書こうと思います
## なぜYiiなのか
まずなぜYiiフレームワークを採用したか語ります
それは公式サイトに書いてあった
“Yii は、コードはシンプルかつエレガントに書かれるべきである、という哲学を採用しています”
この理念が美しいと思ったからです(はっ!?https://www.yiiframework.com/doc/guide/2.0/ja/intro-yii
実際使ってみて非常にシンプルに、そしてわかりやすく書くことが出来るのでとても書いていて気持ち良いです
コードレビューの際にも非常に楽ですね!
## 採用したはいいが、、、
Yiiの理念美しい!いざっ採用&勉強&開発!と威勢よく思い立った私ですがかなりの分厚い壁にあたります
それは
### 美しく書くためにはそれなりにディレクトリ構造が複雑になる
ということです
例えばMySQLデータベースを利用する際には
~~~:
config/db.php
DoctrineとEloquent比較大全: テストフィクスチャを作る
day25(から2日遅れの!)今日はテストフィクスチャの作り方を見ていきます!
## Doctrine
“`php:Fixtures/AuthorLoader.php
setName(‘author’.$i);
$manage
DoctrineとEloquent比較大全24: migration
## Doctrine
“`bash
vendor/bin/doctrine-migrations diff
“`“`php
DoctrineとEloquent比較大全23: FROMにサブクエリを使う
day23(から3日遅れの)今日はfromにサブクエリを使う方法を見ていきます。
## Doctrine
“`php
【備忘録】関数の呼び出し元の参照
# 呼び出し元の参照
## 目的
・同じ名前の関数が複数ある場合にどのファイルの関数を使用したのかを探りたい。## 使用方法
・呼び出し元を知りたい関数の中に記載するだけ。
“`php
$dbg = debug_backtrace();
foreach ($dbg as $dbgrow) {
echo $dbgrow[‘file’];
echo $dbgrow[‘line’];
echo $dbgrow[‘function’];
echo $dbgrow[‘class’];
echo “
“;
}
“`## 詳細
function・・・関数名が格納されています。
line・・・行番号が格納されています。
file・・・ファイル名が格納されています。
class・・・クラス名が格納されています。
object・・・オブジェクトが格納されています。
type・・・コール方式が格納されています。 ※メソッドの場合は “->”、 静的メソッドの場合は “::” 、関数の場合は空になっています
【PHP】フォーム送信後にチェックボックスの選択を保持する
## はじめに
実装に苦戦したので、備忘録として記事にしました。
まだまだ勉強中の身なので、知らないことがたくさんあります。
参考になると嬉しいです。## 実装したいこと
問題1で「織田信長」と「ショパン」を選択し、問題2を選択せずに送信ボタンを押したとき、選択を保持したままエラーメッセージを表示する。
複数の入力画面があってエラーがでたとき、全て入力しなおすなんてことにならないように。
![スクリーンショット 2022-12-26 182555.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3082297/da44796b-58e3-8b12-83ff-24ae05728097.png)## 環境
* XAMPP Version 8.1.10
* Visual Studio Code Version 1.74.2## データベースの構造(phpMyadmin)
![スクリーンショット 2022-12-26 181211.png](https://qiita-image-store.s3.a
【Qiita】新着記事一覧ページを疑似再現する
Qiitaの[新着記事一覧](https://qiita.com/items)が[殺されました](https://blog.qiita.com/close-item-list-page/)。
:::note
そのため現在は、全ユーザーに一律の情報を見せるのではなく、ユーザー1人1人の興味に合わせて自分が欲しい情報に出会えるように、ホームフィードや、タイムラインフィードを用意しております。
:::そんな余計なことしなくていいから全記事を一覧させろ。
と嘆いていても死んだ子は帰ってこないので、ここでは逆転の発想で考えましょう。
すなわち、ありとあらゆるタグを全てフォローすることで、タイムラインに新着記事一覧ページを疑似再現するのです。Qiita APIに[tags/:tag_id/following](https://qiita.com/api/v2/docs#put-apiv2tagstag_idfollowing)があるので、これをひたすら延々叩くことにしましょう。
……ところで`:tag_id`ってなんだ?
[タグ一覧ページ](https://qiita.com/tag