githubのworkflowsを
2024.03.05
おはようございます、個人用に初めてgithubのAction用のymlを作ったって話です。githubで個人でactionを使う場合、公開設定、非公開設定ともに使えるようですね、使えないみたいな記述の記事を見かけましたが…。因みに静的解析ツールは導入していません。PHPStanみたいなものは導入していません。仕事では静的解析ツールも導入していますが個人で今回のように雛🐣レベルの開発には必要ないかなって。後々、追加するかもしれませんが?
自分が作ったYmlファイルはこちらでも公開しときますね。actionが成功するまでにかなりの失敗(エラー)を繰り返しましたところが(泣)ですね~。一回では上手く動作してくれず試行錯誤しました良い学びにはなりましたが👍。
name: testing
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
defaults:
run:
working-directory: ./turi-map-app
jobs:
laravel-test:
runs-on: ubuntu-latest
services:
mysql:
image: mysql:5.7
ports:
- 3306:3306
env:
MYSQL_ROOT_PASSWORD: turi
MYSQL_DATABASE: turi
MYSQL_USER: turi
MYSQL_PASSWORD: turi
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
options: --health-cmd "mysqladmin ping -h 127.0.0.1" --health-interval 20s --health-timeout 10s --health-retries 10
strategy:
matrix:
node-version: [21.x]
steps:
- uses: shivammathur/setup-php@15c43e89cdef867065b0213be354c2841860869e
with:
php-version: '8.2'
extensions: mbstring, dom, fileinfo, pdo_mysql, PDO, zip
- uses: actions/checkout@v4
- name: Copy .env
run: php -r "file_exists('.env') || copy('.env.testing', '.env');"
- name: Install Dependencies
run: composer install -n --prefer-dist
- name: Generate key
run: php artisan key:generate
- name: storage link
run: php artisan storage:link
- name: Directory Permissions
run: chmod -R 777 storage bootstrap/cache
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: npm install
run: npm i
- name: Build Assets
run: npm run build
- name: migrate
run: php artisan migrate
- name: Execute tests (Unit and Feature tests) via PHPUnit
run: php artisan test
明日へ続く。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
actions, chmod, defaults, dom, env, extensions, generate, health-cmd, health-timeout, matrix, migrate, MYSQL, password, PDO, ports, services, steps, strategy, Testing, working-directory,
laravelのFactoryって便利なダミーデータが作れるよ。
2023.09.20
おはようございます、laravelのFactoryって便利なダミーデータが作れるよ。ユニットテストするときに使用するのでLaravelを触ったことがある人なら分かると思いますが、ダミーデータ作るれるのは便利ですよねぇーーー😌。因みに公式サイトのサンプルコードに細工したサンプルコードを載せておきます。
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
use App\zip358com;
class UserFactory extends Factory
{
public function definition()
{
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
'remember_token' => Str::random(10),
'zip358com' =>function(){
return (zip358com::first())->url;
}
];
}
}
最後に記載していることが恐らくテストを行っていくうちに必要になってくる事だと思います。もう一つ必要になってくるのは、固定したデータでユニットテストを行いたい場合はユニットテストの方でこのような感じに書くと良いです。
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Tests\TestCase;
use App\User;
class YourTest extends TestCase
{
use DatabaseMigrations;
public function test_example()
{
$user = User::factory()->create([
'name' =>'zip 358',
'email' => 'mail@zip358.com',
'email_verified_at' => now(),
'password' => '1234567890', // password
'remember_token' => Str::random(10),
'zip358com'=>'https://zip358.com',
]);
$this->assertEquals('zip 358', $user->name);
$user->delete();
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
Factory, FIRST, function, gt, Laravel, namespace DatabaseFactories, Now, Og-, password, random, remember_token, return, STR, use IlluminateDatabaseEloquentFactoriesFactory, use IlluminateFoundationTestingDatabaseMigrations, use IlluminateSupportStr, use TestsTestCase, user, ユニットテスト,
Twitterで自動投稿する雛形-#脱TwitterAPI。
2023.02.05
おはようございます、この記事はQiitaに投稿したもののと同じ内容になります。
エンジニアに悲報としか言えない今回の発表・イーロン・マスク氏って👹
2月9日でTwitterAPIが無料で使えなくなるのでその対応をしないといけない。
そんなエンジニアさんもいらっしゃると思います。
APIサービスに月、1万円払えないという会社は中小企業には多いと思います、それで取引を解消される企業とかもあったりするかも。
そんな方は一個VPSサーバーを構えてNodeJSをインストールして下記の雛形コードを元にゴニョゴニョしたら何とかなるかも知れません。🫠
因みにこれはchatGPTとの合作だったりします。
- いつまで動作するかは保証しません。尚、これは雛形ですので、これに細工をして常時接続で
- TweetやRTするようにコードを変更しないといけません。もしくは時間を置いてTweetするなど。
node sample.js 'username' 'password' 'テスト投稿'
const puppeteer = require('puppeteer');
const [username, password ,tw] = process.argv.slice(2);
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://twitter.com/login');
await page.waitForTimeout(3000);
await page.waitForSelector('input[autocomplete="username"]');
await page.type('input[autocomplete="username"]', username);
const divs = await page.$$('div[role="button"]');
await divs[2].click();
await page.waitForTimeout(3000);
await page.waitForSelector('input[autocomplete="current-password"]');
await page.type('input[autocomplete="current-password"]', password);
await page.waitForSelector('div[data-testid="LoginForm_Login_Button"]');
await page.click('div[data-testid="LoginForm_Login_Button"]');
await page.waitForNavigation();
console.log('Login successful');
await page.waitForTimeout(3000);
await page.waitForSelector('div[data-testid="tweetTextarea_0"]');
await page.click('div[data-testid="tweetTextarea_0"]');
await page.waitForSelector('div[data-testid="tweetTextarea_0"]');
await page.type('div[data-testid="tweetTextarea_0"]',tw);
await page.waitForTimeout(3000);
await page.waitForSelector('div[data-testid="tweetButtonInline"]');
await page.click('div[data-testid="tweetButtonInline"]');
console.log('Tweet posted');
await browser.close();
})();
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
async, autocomplete, await browser.close, await browser.newPage, await page.goto, await page.waitForSelector, await page.waitForTimeout, ChatGPT, const, data-testid, div, headless, input, nodejs, password, qiita, require, tw, TwitterAPI, username,
docker参考書では教えてくれないymlの設定🙄。 #docker
2022.12.20
おはようございます、勉強しているのですが自信がない…。
Dockerをどっか~ん、はいスミマセンおじさんギャグです🙇。ヤムルファイルとDockerファイルを使うと結構手抜きが出来るですね。この頃、Dockerの良いところを取り入れたサービスが新たに登場しましたよね。Finchとか言う奴です・・・AWSが提供しているやつ🙄。
自分は当分、Dockerを使います。Dockerを使用していた前はVirtualBoxでした。他にもVagrant(ベイグラント)に浮気したこともありますが、Dockerを使用してからは他の仮想サービスより使いやすい事が分かりました。使っている人が多いとヤムルファイルやDockerファイルもネットにゴロゴロ転がっていますからね。
さて、最後に自分が使っているymlファイルの設定です、いらない部分もあるかもですがご自由にご使用ください。
build:
context: .
dockerfile: Dockerfile
version: "3"
services:
web:
image: almalinux:latest
container_name: test_v0
restart: always
ports:
- 443:443
- 80:80
privileged: true
command: /sbin/init
extra_hosts:
- "taoka-test.com:127.0.0.1"
volumes:
- X:/var/www/html:/var/www/html
build:
context: .
dockerfile: Dockerfile
mysqldb:
image: mysql:latest
container_name: test_db_v0
command: --default-authentication-plugin=mysql_native_password
restart: always
hostname: testdbhost1
environment:
MYSQL_USER: hogeuser
MYSQL_PASSWORD: password
MYSQL_DATABASE: hoge_db
MYSQL_ROOT_PASSWORD: password
TZ: "Asia/Tokyo"
ports:
- 3306:3306
expose:
- '3306'
volumes:
- X:/var/test/db/mysql_init:/docker-entrypoint-initdb.d
- X:/var/test/db/mysql_data:/var/lib/mysql
tty: true
postgresdb:
image: postgres:latest
container_name: test_postdb_v0
restart: always
hostname: testdbhost2
environment:
POSTGRES_USER: hogeuser
POSTGRES_PASSWORD: password
PGPASSWORD: password
POSTGRES_DB: hoge_db
TZ: "Asia/Tokyo"
ports:
- 5432:5432
expose:
- '5432'
volumes:
- X:/var/test/db2/postgres_init:/docker-entrypoint-initdb.d
- X:/var/test/db2/postgres_data:/var/lib/postgresql/data
tty: true
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
-Command, context, default-authentication-plugin, docker, Environment, expose, Finch, hostname, init, latest, MYSQL, password, ports, postgres, postgresql, sbin, services, tty, Vagrant, virtualBOX,
dockerにmysqlサーバーを追加するYML(ヤムル)ファイル #yml
2022.12.16
おはようございます、1,2,3🎉。Docker呟き第3回ぐらいですかね🙄。
今日はdockerにmysqlサーバーの設定、追加した話です。これでローカル環境で動作するだろうと思います、実際、mysqlのコマンドをwebサーバーから叩いてみて確認は行っています。尚、webサーバー側にmysqlにインストールして上げないとコマンドでの確認が取れません。
また、Dockerの外側と言えば良いのかな?、外部から例えばHeidisqlなので繋ぎたい場合はホストを127.0.0.1にしないと繋げないようです。そこら編も注意してくださませ🙇。
この頃、Dockerを使うようになってまだ日が浅いので右も左も分からないのですが、もっと出来ることを知りたいなと思って本を購入したわけですが、入門書には自分の知りたいことは、最後のページに書いている部分だけでした。立ち読みしていた時点でそれは分かっていたので、凄く悩んで先日、本を購入したのですが、それでも購入してよかったと思います。
version: "3"
services:
web:
image: almalinux:latest
container_name: web_v0
ports:
- 80:80
- 443:443
privileged: true
command: /sbin/init
extra_hosts:
- "example.com:127.0.0.1"
volumes:
- X:\var\www\html:/var/www/html
db:
image: mysql:latest
container_name: db_v0
command: --default-authentication-plugin=mysql_native_password
restart: always
hostname: mysqlhost
environment:
MYSQL_USER: hogeuser
MYSQL_PASSWORD: password
MYSQL_DATABASE: hoge_db
MYSQL_ROOT_PASSWORD: password
ports:
- 3306:3306
expose:
- '3306'
volumes:
- ./db/mysql_init:/docker-entrypoint-initdb.d
- ./db/mysql_data:/var/lib/mysql
tty: true
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
--privileged, -Command, almalinux, default-authentication-plugin, docker, Environment, example.com, expose, hostname, init, latest, MYSQL, password, ports, restart, sbin, services, tty, volumes,
md5でいいのかそれで?。 #wp #phpcode
2022.11.17
おはようございます、いきなり寒くなりましたね。朝起きるのに勢いが必要になってきました😆。
今日はワードプレスでもパスワードの暗号化に使用されているmd5に関して思うことがあります。そもそもmd5は強固な暗号なのか?、答えはnoだと思いますよ。md5を使用すると32文字の暗号化された文字列が返却されます。確かに暗号化されているですけど・・・。同じ文字をもう一度、暗号化すると同じ文字列が返却されます、なので暗号化された文字列になるかどうかで、元の文字が割り出せてしまいます。
総当たりすれば時間はかかりますがパスワードが分かちゃうので、パスワードを保存する方法としては△な感じかと思います。じゃ何が良いかといえばphpの場合、password_hashと言う関数があるので、そちらを使用した方が得策かと思います。Eメールなどはmd5でも良いかも知れませんが微妙。
echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
因みに、パスワードなどやメールアドレスを平文で扱っている開発会社はよく見かけます。何故、平文を放置しているかと言えば直す暇がないなどの理由からだと思います。また、クライアント様がそうして欲しいなどの理由もあります。そういう事から個人情報が保護されていないデータベースはあります。
尚、自分が使用しているWEBサービスも個人情報にあたる部分は暗号化しています。なので、データーが流出しても直ぐに情報が漏れるということはないと思っています🫠。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
32, 5, echo, hash, md, no, password, php, PHPCODE, quot, rasmusl, wp, こと, そちら, パスワード, プレス, メール, ワード, 一度, 今日, 何, 使用, 保存, 元, 勢い, 場合, 得策, 微妙, 必要, 文字, 文字列, 方, 方法, 時間, 暗号, 暗号化, 朝, 答え, 総当たり, 返却, 関数,
Tera Termで自動ログインする方法:秘密鍵有り無し対応
2019.09.14
秘密鍵有り自動ログイン
connect 'ホスト名:22 /ssh /2 /auth=publickey /user=ユーザー名 /passwd=パスワード /keyfile=秘密鍵'
wait '#'
sendln 'ls'
sendln 'cd /var/www/html'
秘密鍵無し自動ログイン
connect 'ホスト名:22 /ssh /2 /auth=password /user=ユーザー名 /passwd=パスワード'
wait '#'
sendln 'ls'
sendln 'cd /var/www/html'
上記の内容をテキストファイルにコピペしてホスト名、ユーザー名、パスワード、
秘密鍵(場所)をそれぞれ変更し任意の名前で保存。
保存後、拡張子をTTLへ変更。
Tera TermでTTLを呼び出すようにする方法に
ついては割愛します(ググってください)。
ちなみにこの記事、過去に書いています。
(過去記事は別のブログに移転しています)
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2, 22, auth, cd, connect, html, keyfile, ls, nbsp, passwd, password, publickey, sendln, SSH, Tera, Term, TTL, user, var, wait, くだ, コピペ, それぞれ, テキスト, パスワード, ファイル, ホスト, ユーザー, ログイン, 上記, 任意, 保存, 内容, 割愛, 名前, 場所, 変更, 対応, 拡張子, 方法, 有り無し, 秘密, 自動, 鍵,
スカイプを多重起動して複数のアカウントを使用する方法まとめ。
2015.06.03
スカイプを多重起動して複数のアカウントを使用する方法が記載していたので掲載します。まず、多重起動だけに関してですが、こちらの手順で可能です。http://news.livedoor.com/article/detail/6341599/ ただし、イチイチ、パスワードとアカウントを手動で入力しないといけないので若干、それは面倒くさいです、なので、この後に ?/username:ID名 と/password:パスワードという文字を追加してみてください。そうするとスカイプアカウントの場合だけログインが可能になります。こんな、作業は面倒くさいという方のために昔はスカイプ多重起動というツールがあったのですが、いまはファイルの配布を行っていないみたいです。設定が面倒くさいという方はこちらのショートカットファイルをダウンロードしてみてください(zipファイル)。こちらをダウンロード後、任意の場所で解凍後、複数起動skype.exeというショートカットファイルを起動すると多重起動が行えるようになります。※尚、スカイプソフトのインストールをCドライブ以外にインストールしていた場合は実行しても動きませんので、あしからず。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
Cドライブ以外, password, username, zipファイル, アカウント, イチイチ, インストール, ショートカットファイル, スカイプ, スカイプアカウント, スカイプ多重起動, ダウンロード後, ツール, パスワード, ログイン, 手動, 手順, 方法まとめ, 複数起動skype.exe, 解凍後,
Tera TermのマクロTTLを使用して自動ログインする方法はこんな感じ。
2015.05.02
UTF-8形式のファイルを作成して下記のコードを記載します。そして任意のファイル名をつけて拡張子TTLで保存します。その後、任意のファイルをダブルクリックします。この際、ファイルの関連付けがされていなければTera Termのexeファイルが保存されている場所にttpmacro.exeが存在しますので、そちらと関連付けを行います。
Tera Termが保存されている階層→”C:\Program Files\teraterm\”
HOSTADDR = ‘255.255.255.255’
USERNAME = ‘USERNAME’
PASSWORD = ‘PASSWORD’
COMMAND = HOSTADDR
strconcat COMMAND ‘:22 /ssh /2 /auth=password /user=’
strconcat COMMAND USERNAME
strconcat COMMAND ‘ /passwd=’
strconcat COMMAND PASSWORD
connect COMMAND
wait ‘#’
sendln ‘ls’
sendln ‘cd /var/www/html’
上記の記述してあるホスト名、ユーザー名、パスワードを変更することでLinuxサーバにログインすることが可能です。また、waitと言うのは文字待ち(ここでは#待ち)。sendlnは文字を自動的に送信します。要するに自動でコマンドを打つ事が可能なので、WEBサーバやDBサーバを自動で構築することも不可能ではないですが、若干面倒くさいです・・・。Tera Termのマクロコマンドを知っていなくても、sendlnなどを使用してLinuxコマンドで処理する事も可能ですしマクロと組み合わせるともっと便利になるかもしれません。Tera Termのマクロの存在は知っていましたが使う機会が全然なかったので自分はコレぐらいのことしか知りません。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
AM, connect COMMAND, HOSTADDR, Linuxコマンド, ls, passwd, password, Program Filesteraterm, sendln, strconcat COMMAND PASSWORD, strconcat COMMAND USERNAME, ttpmacro.exe, username, UTF-8形式, ダブルクリック, ファイル, マクロコマンド, めちゃくちゃ, リズム, 拡張子TTL, 関連付け,