tanakahdaのプログラマ手帳

プログラミングとかソフトウェア開発とかの備忘録

alternativesコマンドでJavaのバージョンを切り替える@Java

CentOSにOpenJDK1.8と18の両方をインストールしている場合。

[tanakahda@server ~]$ java -version
openjdk version "1.8.0_332"
OpenJDK Runtime Environment (build 1.8.0_332-b09)
OpenJDK 64-Bit Server VM (build 25.332-b09, mixed mode)
[tanakahda@server ~]$ sudo alternatives --config java
[sudo] tanakahda のパスワード:

2 プログラムがあり 'java' を提供します。

  選択       コマンド
-----------------------------------------------
*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64/jre/bin/java)
   2           java-latest-openjdk.x86_64 (/usr/lib/jvm/java-18-openjdk-18.0.1.0.10-2.rolling.el7.x86_64/bin/java)

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:
[tanakahda@server ~]$ java -version
openjdk version "18.0.1" 2022-04-19
OpenJDK Runtime Environment 21.9 (build 18.0.1+10)
OpenJDK 64-Bit Server VM 21.9 (build 18.0.1+10, mixed mode, sharing)

qiita.com

sudo権限付きのユーザーを追加する

[root@hostname ~]# useradd tanakahda
[root@hostname ~]# gpasswd -a tanakahda wheel
ユーザ tanakahda をグループ wheel に追加
[root@hostname ~]# passwd tanakahda
ユーザー tanakahda のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました

www.suzu6.net

機能単位でControllerクラスを複数作成してリクエストマッピングする@Spring Boot

IndexController.java

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/")
public class IndexController {
    
    public String index() {
        return "index";
    }
    
}

DemoController.java

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/demo")
public class DemoController {
    
    @RequestMapping("/index")
    public String index() {
        return "/demo/index";
    }
    
}

Spring Data RESTとSwaggerの設定@Spring Framework

pom.xml

     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-ui</artifactId>
            <version>1.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-data-rest</artifactId>
            <version>1.5.9</version>
        </dependency>

application.properties

Spring Securityを導入している場合、URLを除外リストに入れる必要があるので下記のとおり設定する

springdoc.api-docs.path=/api-docs
springdoc.swagger-ui.path=/swagger/swagger-ui.html

SecurityConfig.java

    @Override
    public void configure(WebSecurity web) throws Exception {
        // 「/js/**」を追加
        web.ignoring().antMatchers(
                "/js/**", "/css/**", "/img/**", "/webjars/**", "/swagger/**", "/api-docs/**");
    }

M1 MacbookAirでHello React@React.js

Node.js環境の構築

Homebrewはインストール済みとする

brew install nodebrew

インストールされた nodebrewのバージョンを確認

nodebrew -v

nodebrew 1.2.0

安定版のnode.jsをインストールする

(base) tanakahda@MacBook-Air ~ % nodebrew install stable 
Fetching: https://nodejs.org/dist/v18.4.0/node-v18.4.0-darwin-arm64.tar.gz
Warning: Failed to create the file 
Warning: /Users/tanakahda/.nodebrew/src/v18.4.0/node-v18.4.0-darwin-arm64.tar.g
Warning: z: No such file or directory
curl: (23) Failure writing output to destination
download failed: https://nodejs.org/dist/v18.4.0/node-v18.4.0-darwin-arm64.tar.gz

ダウンロードに失敗する... 参考記事:https://qiita.com/kz23szk/items/738972e0b6a3ba0783ba

(base) tanakahda@MacBook-Air ~ % mkdir -p ~/.nodebrew/src

(base) tanakahda@MacBook-Air ~ % nodebrew install stable 
Fetching: https://nodejs.org/dist/v18.4.0/node-v18.4.0-darwin-arm64.tar.gz
############################################## 100.0%
Installed successfully
(base) tanakahda@MacBook-Air ~ % nodebrew ls
v18.4.0

current: none
(base) tanakahda@MacBook-Air ~ % nodebrew use v18.4.0
use v18.4.0
(base) tanakahda@MacBook-Air ~ % nodebrew ls
v18.4.0

current: v18.4.0

nodeコマンドのパスを通す

(base) tanakahda@MacBook-Air ~ % node -v zsh: command not found: node

(base) tanakahda@MacBook-Air ~ % echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.zshrc  
(base) tanakahda@MacBook-Air ~ % source ~/.zshrc
(base) tanakahda@MacBook-Air ~ % node -v        
v18.4.0

test という React.js のプロジェクトを作成する

(base) tanakahda@MacBook-Air Desktop % npx create-react-app test

buildする

(base) tanakahda@MacBook-Air test % npm run build

> test@0.1.0 build
> react-scripts build
・・・

起動する

(base) tanakahda@MacBook-Air test %  npm start