初心者SEのつぶやき (original) (raw)

やりたいこと

最近流行りのRustで開発したい。
Rustのデスクトップアプリケーションを開発するフレームワークにTauriがあるので
環境構築を行ってく。

環境構築

下記を参考にしている。

tauri.app

Microsoft Visual Studio C++ Build Toolsのインストール

下記からインストールを行う。

visualstudio.microsoft.com

WebView2のインストール

WebView2を下記からインストールする。

developer.microsoft.com

Rustのインストール

下記からインストーラーをダウンロードして実行する。

www.rust-lang.org

ビルド

下記コマンドを実行する。

npx create-tauri-app

対話モードになるので、プロジェクトに合わせて回答する。
今回の回答は下記とした。

質問内容 回答
Project name tauri-app
Choose which language to use for your frontend TypeScript / JavaScript
Choose your package manager npm
Choose your UI template React
Choose your UI flavor TypeScript

設定完了後、プロジェクトディレクトリに移動し、パッケージをインストールする。

npm install

起動する。

npm run tauri dev

配布用インストーラーを作成

src-tauri/tauri.conf.json内の"identifier": "com.tauri.dev",の値を任意の値に変更する。
変更後、下記コマンドを実行する。

npm run tauri build

実行後しばらく待つとsrc-tauri/target/release内に諸々作ってくれる。

コマンド実行後

感想

Rust勉強したいのでアウトプット作成に使っていきたい。

やりたいこと

Dockerを利用して、Go言語(Gin)の環境構築を行いたい。

手順

ファイル構成

. ├── app │ ├── go.mod │ ├── go.sum │ └── main.go ├── Dockerfile │── docker-compose.yml └── README.md

Dockerfileの作成

GoのDockerfileを作成

FROM golang:1.18

RUN apt-get update && apt-get install -y git WORKDIR /go/src/app COPY ./app .

CMD ["go", "run", "."]

docker-compose.ymlを作成

今後DB連携などを考えdocker-composeを用いる。

version: "3" services: app: container_name: ir-backend build: context: . dockerfile: ./Dockerfile tty: true volumes: - ./app:/go/src/app ports: - 8080:8080

appフォルダの作成

appフォルダを作成し、移動する。

mkdir -p ./app cd ./app

Goモジュールを初期化する

go mod init helloworld

Ginをインストール

go get -u github.com/gin-gonic/gin

main.goを作成

localhost:8080にアクセスした時にHello WorldJSON形式で返すようにする。

package main

import ( "github.com/gin-gonic/gin" )

func main() { router := gin.Default()

router.GET("/", func(c *gin.Context) {
        c.JSON(200, gin.H{
                "message": "Hello World",
        })
})

router.Run(":8080")

}

起動

下記コマンドで起動する。

docker compose up --build

localhost:8080に接続し、{"message": "Hello World"}がかえってきたら成功

これは2024/04/02時点の情報です。

やりたいこと

作成したRailsアプリを無料でデプロイしたい。

利用するサービス

Render.com

webアプリ公開することができるPaas

render.com

Neon

PostgreSQLのデプロイサービス

neon.tech

デプロイ手順

Neonデプロイ

はじめにNeonの方からセットアップする。

  neon:
    username: PGUSERの内容
    host: PGHOSTの内容
    database: PGDATABASEの内容
    password: PGPASSWORDの内容
  production:
    <<: *default
    host: <%= Rails.application.credentials.neon&.fetch(:host) %>
    database: <%= Rails.application.credentials.neon&.fetch(:database) %>
    username: <%= Rails.application.credentials.neon&.fetch(:username) %>
    password: <%= Rails.application.credentials.neon&.fetch(:password) %>
    ssl_mode: verify_identity
    sslca: "/etc/ssl/certs/ca-certificates.crt"

Renderデプロイ

workers ENV.fetch("WEB_CONCURRENCY") { 2 } preload_app!

config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? || ENV['RENDER'].present?

set -o errexit

bundle install bundle exec rake assets:precompile bundle exec rake assets:clean bundle exec rake db:migrate

項目 入力内容
Branch デプロイしたいブランチ名
Runtime Ruby
Build Command ./bin/render-build.sh
Start Command bundle exec puma -C config/puma.rb
Instance Type Free

感想

Renderの記事は多かったが、DBサービスに関してはあまり情報がなく
苦戦した。
スタートアップアプリや個人開発だとあまりコストかけたくないかなと思うので、今回の記事が参考になったら幸いです。

やりたいこと

railsアプリケーションにRSpecを導入したい。

導入方法

RSpecのインストール

gemファイルにrspec-railsfactory_bot_railsを記載する。
FactoryBotはテストデータ生成をしてくれる便利ライブラリのため、
ついでにインストールする。

group :development, :test do gem "rspec-rails" gem "factory_bot_rails" end

Gemfile更新後、bundle installを行う。

その後、下記コマンドを叩き、動かすために必要なファイルを生成する。

rails g rspec:install

rspecを叩き、レスポンスが返ってきたら、インストール成功となる。

初期設定

testディレクトリの削除

テストコードは、specフォルダ以下に作成するため、
既存のtestディレクトリは削除する。

rm -r test/

FactoryBotの設定

テストでFactoryBotを利用する時、モジュール名を省略できるようにする。
spec/rails_helper.rbファイルに下記内容を追記する。

config.include FactoryBot::Syntax::Methods

generate時の自動ファイル生成の設定

rails generaterコマンドでRSpec関係のファイルを自動生成されるための設定

config/application.rbに下記内容を追記する。

config.generators do |g|
  g.test_framework :rspec
end

テスト結果の出力設定

.rspecファイルに下記のように出力結果の設定ができる。

--require spec_helper --color --format d

感想

調べたら色々カスタマイズできそうだったので今後まとめたい。

今回の内容が参考になったら幸いです。

やりたいこと

railsアプリケーションにて、deviseを用いた認証機能を制限したい。
例) サインアップ機能の廃止など...
導入方法は下記記事を参照locomocosan.hatenablog.com

機能を制限する方法

deviseの標準機能を制限するには、app/models/user.rbのファイルを変更必要がある。

class User < ApplicationRecord

devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable end

デフォルトで有効になっている機能とモジュールは下記となる。

モジュール 機能
database_authenticatable パスワードの暗号化
registerable サインアップ
recoverable パスワードリセット
rememberable クッキーにログイン情報を保持
validatable バリデーション

追加で使えるモジュールと機能については下記となる。

モジュール 機能
confirmable メール認証
lockable ロックアウト
timeoutable ユーザーセッションのタイムアウト
trackable ユーザーアクティビティをトラッキング
omniauthable 外部プロバイダーを利用した認証

もしサインアップ機能を廃止したい場合は、registerableを削除することで
実装できる。
また、googleアカウントなどの外部のプロバイダーを利用した認証を行いたい
場合、omniauthableを有効にすることで実装が可能になる。(別途設定など必要)

感想

viewやコントローラーの編集、認証機能のカスタマイズなど
まだまだ奥が深そうなので、別の機会にまとめたい。

今回の内容が参考になったら幸いです。

やりたいこと

よく使うGitコマンドをまとめたい。

よく使うGitコマンド(適宜更新)

git add ファルパス

git commit -m "コミットコメント"

git push

git pull

git fetch

git merge ブランチ名

git merge --abort

git log

git reset --hard コミットのハッシュ値

git revert コミットのハッシュ値

git branch

git switch ブランチ名 git checkout ブランチ名

用途別コマンドの使い方

開発用ブランチにMasterブランチの最新を取り込む

git checkout master

git pull origin master

git checkout develop

git merge origin master -m "コミットコメント"

あとがき

適宜一覧は更新していきます。

今回の内容が参考になったら幸いです。

やりたいこと

Pythonで動的に生成されているサイトをスクレイピングしたい。
(Pythonのバージョンは3.11.7を利用している)

方法

seleniumとwebdriver-managerを利用する。

インストール

pip install selenium

pip install webdriver-manager

実装例

要素の取得&利用法(一部)

listbox = self.driver.find_element(By.XPATH, '//ul[@role="listbox"]')

list_items = listbox.find_element(By.TAG_NAME, 'li')

tab_content = self.driver.find_element(By.ID, "abc")

input_content.clear() input_content.send_keys(入力したい内容)

wait = WebDriverWait(driver, 10) button.click() wait.until(EC.staleness_of(button))

感想

スクレイピングはできるようになったが、やはり実行時間が長いので
高速化手段がないか検討したい&将来バッチ実行をさせてみたい。

今回の内容が参考になったら幸いです。