githubのworkflowsを

2024.03.05

Logging

おはようございます、個人用に初めてgithubのAction用のymlを作ったって話です。githubで個人でactionを使う場合、公開設定、非公開設定ともに使えるようですね、使えないみたいな記述の記事を見かけましたが…。因みに静的解析ツールは導入していません。PHPStanみたいなものは導入していません。仕事では静的解析ツールも導入していますが個人で今回のように雛🐣レベルの開発には必要ないかなって。後々、追加するかもしれませんが?

black flat screen computer monitor
Photo by Markus Winkler on Pexels.com

自分が作った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

明日へ続く。

タグ

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

Logging

おはようございます、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();
    }

タグ

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

Logging

おはようございます、この記事は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();
})();

タグ

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

Logging

おはようございます、勉強しているのですが自信がない…。

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

タグ

-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

Logging

おはようございます、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

タグ

--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

Logging

おはようございます、いきなり寒くなりましたね。朝起きるのに勢いが必要になってきました😆。

今日はワードプレスでもパスワードの暗号化に使用されているmd5に関して思うことがあります。そもそもmd5は強固な暗号なのか?、答えはnoだと思いますよ。md5を使用すると32文字の暗号化された文字列が返却されます。確かに暗号化されているですけど・・・。同じ文字をもう一度、暗号化すると同じ文字列が返却されます、なので暗号化された文字列になるかどうかで、元の文字が割り出せてしまいます。

総当たりすれば時間はかかりますがパスワードが分かちゃうので、パスワードを保存する方法としては△な感じかと思います。じゃ何が良いかといえばphpの場合、password_hashと言う関数があるので、そちらを使用した方が得策かと思います。Eメールなどはmd5でも良いかも知れませんが微妙。

echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT);

因みに、パスワードなどやメールアドレスを平文で扱っている開発会社はよく見かけます。何故、平文を放置しているかと言えば直す暇がないなどの理由からだと思います。また、クライアント様がそうして欲しいなどの理由もあります。そういう事から個人情報が保護されていないデータベースはあります。

尚、自分が使用しているWEBサービスも個人情報にあたる部分は暗号化しています。なので、データーが流出しても直ぐに情報が漏れるということはないと思っています🫠。

タグ

32, 5, echo, hash, md, no, password, php, PHPCODE, quot, rasmusl, wp, こと, そちら, パスワード, プレス, メール, ワード, 一度, 今日, , 使用, 保存, , 勢い, 場合, 得策, 微妙, 必要, 文字, 文字列, , 方法, 時間, 暗号, 暗号化, , 答え, 総当たり, 返却, 関数,

Tera Termで自動ログインする方法:秘密鍵有り無し対応

2019.09.14

Logging

秘密鍵有り自動ログイン

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を呼び出すようにする方法に
ついては割愛します(ググってください)。
ちなみにこの記事、過去に書いています。
(過去記事は別のブログに移転しています)
 

タグ

2, 22, auth, cd, connect, html, keyfile, ls, nbsp, passwd, password, publickey, sendln, SSH, Tera, Term, TTL, user, var, wait, くだ, コピペ, それぞれ, テキスト, パスワード, ファイル, ホスト, ユーザー, ログイン, 上記, 任意, 保存, 内容, 割愛, 名前, 場所, 変更, 対応, 拡張子, 方法, 有り無し, 秘密, 自動, ,

スカイプを多重起動して複数のアカウントを使用する方法まとめ。

2015.06.03

Logging


スカイプを多重起動して複数のアカウントを使用する方法が記載していたので掲載します。まず、多重起動だけに関してですが、こちらの手順で可能です。http://news.livedoor.com/article/detail/6341599/ ただし、イチイチ、パスワードとアカウントを手動で入力しないといけないので若干、それは面倒くさいです、なので、この後に ?/username:ID名 と/password:パスワードという文字を追加してみてください。そうするとスカイプアカウントの場合だけログインが可能になります。こんな、作業は面倒くさいという方のために昔はスカイプ多重起動というツールがあったのですが、いまはファイルの配布を行っていないみたいです。設定が面倒くさいという方はこちらのショートカットファイルをダウンロードしてみてください(zipファイル)。こちらをダウンロード後、任意の場所で解凍後、複数起動skype.exeというショートカットファイルを起動すると多重起動が行えるようになります。※尚、スカイプソフトのインストールをCドライブ以外にインストールしていた場合は実行しても動きませんので、あしからず。
 

タグ

Cドライブ以外, password, username, zipファイル, アカウント, イチイチ, インストール, ショートカットファイル, スカイプ, スカイプアカウント, スカイプ多重起動, ダウンロード後, ツール, パスワード, ログイン, 手動, 手順, 方法まとめ, 複数起動skype.exe, 解凍後,

Tera TermのマクロTTLを使用して自動ログインする方法はこんな感じ。

2015.05.02

Logging


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のマクロの存在は知っていましたが使う機会が全然なかったので自分はコレぐらいのことしか知りません。

タグ

AM, connect COMMAND, HOSTADDR, Linuxコマンド, ls, passwd, password, Program Filesteraterm, sendln, strconcat COMMAND PASSWORD, strconcat COMMAND USERNAME, ttpmacro.exe, username, UTF-8形式, ダブルクリック, ファイル, マクロコマンド, めちゃくちゃ, リズム, 拡張子TTL, 関連付け,