kuniku’s diary

はてなダイアリーから移行(旧 d.hatena.ne.jp/kuniku/)、表示がおかしな箇所はコメントをお願いします。記載されている内容は日付およびバージョンに注意してください。直近1年以上前は古い情報の可能性が高くなります。

Mac 画面共有での解像度の変更、ソフトウェア利用して対応

状況

画面共有元の画面解像度が接続クライアント側に表示され、2,048 x 1,280となり4Kモニターをいかせない WindowsのようにRDP接続元の画面解像度で接続できない

対応方法の1つ

  • 解像度が4Kではないけど、3584×2240にはできた
  • 解像度変更ができた1つの環境
    • 画面共有元:MacBookPro16 , 2019 Catalina 10.15.7
    • 接続クライアント:MacBookPro15 , 2016 Mojave 10.14.6

対応例

画面共有元にて(上記での Pro16に相当する方)

brew cask install cscreen

cscreen -v 

# 警告がでて実行できないので、以下の引用「((※1))」のように、例外許可して実行する

もう一度
cscreen -v 


#コマンド結果
DisplayID  Index     Depth     Width     Height  Refresh
7cf5yyf9       5        32      3072       1920    60
7cf5yyf9       6        32      1536        960    60
7cf5yyf9       7        32      3584       2240    60
7cf5yyf9       8        32      2688       1680    60
7cf5yyf9       9        32      2304       1440    60
7cf5yyf9      10        32      1650       1050    60


# 変更したい解像度にする
cscreen -i 7cf5yyf9 -x 3584 -y 2240


# 接続クライアント側は
- 画面共有-> 環境設定 - > サイズ調整して表示可能なサイズに合わせる にして画面共有を開く

セキュリティの設定変更 ※1

https://support.apple.com/ja-jp/guide/mac-help/mh40616/mac

セキュリティとプライバシー」環境設定の「一般」パネルで「このまま開く」ボタンをクリックすることで、ブロックされたアプリケーションの例外を許可することもできます。このボタンは、アプリケーションを開こうとした後、約1時間の間使用できます。 Macでこれらの環境設定を変更するには、アップルメニュー >「システム環境設定」と選択して「セキュリティとプライバシー」をクリックし、「一般」をクリックします。

参考

jhat使ってOutOfMemmoryになり解析できない

hprofファイルが大きいとjhat自身でOutOfMemmoryになる

set JAVA_OPTS=-Xmx4096m
jhat xxx.hprof

としても、ヒープサイズ指定は有効にならない 標準の起動では、javaのheap Max3GB手前くらいまでになってしまい、OutOfMemmoryで解析できない事象に遭遇した。

対応するには、jhatのオプションとしてheapサイズ指定が必要

jhat -J-Xmx6g xxx.hprof

この例では、6GB指定している

Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

のログがでるので、http://localhost:7000/ にブラウザ使って見る

windowsでcurlを使えると知って、

rem 対応OS windows10 ver1803

@ECHO OFF
:INPUT_START
ECHO +-------------------------------------------------------+
ECHO  IDを入力してください。:
ECHO +-------------------------------------------------------+
SET INPUT_ID=
SET /P INPUT_ID=
 
IF "%INPUT_ID%"=="" GOTO :INPUT_START

:INPUT_P

ECHO +-------------------------------------------------------+
ECHO パラメータを入力してください。:
ECHO +-------------------------------------------------------+
SET INPUT_P=
SET /P INPUT_P=
 
IF "%INPUT_P%"=="" GOTO :INPUT_P

:INPUT_CONF
ECHO +-------------------------------------------------------+
ECHO  入力した IDは[%INPUT_ID%]、パラメータ:[%INPUT_P%]ですか?
ECHO (Y / N)
ECHO +-------------------------------------------------------+
SET CONF_SELECT=
SET /P CONF_SELECT=
 
IF "%CONF_SELECT%"== SET CONF_SELECT=Y
IF /I NOT "%CONF_SELECT%"=="Y"  GOTO :INPUT_START


SET CURL_DATA="id=%INPUT_ID%&param=%INPUT_P%"

curl -m 3 --get https://example.com/xxx? --data %CURL_DATA% --verbose

:INPUT_END
ECHO +-------------------------------------------------------+
ECHO  HTTPリクエストが完了しました。
ECHO +-------------------------------------------------------+
 
PAUSE
EXIT

windowsでcurlを使えると知って、

rem 対応OS windows10 ver1803

@ECHO OFF
:INPUT_START
ECHO +-------------------------------------------------------+
ECHO  IDを入力してください。:
ECHO +-------------------------------------------------------+
SET INPUT_ID=
SET /P INPUT_ID=
 
IF "%INPUT_ID%"=="" GOTO :INPUT_START

:INPUT_P

ECHO +-------------------------------------------------------+
ECHO パラメータを入力してください。:
ECHO +-------------------------------------------------------+
SET INPUT_P=
SET /P INPUT_P=
 
IF "%INPUT_P%"=="" GOTO :INPUT_P

:INPUT_CONF
ECHO +-------------------------------------------------------+
ECHO  入力した IDは[%INPUT_ID%]、パラメータ:[%INPUT_P%]ですか?
ECHO (Y / N)
ECHO +-------------------------------------------------------+
SET CONF_SELECT=
SET /P CONF_SELECT=
 
IF "%CONF_SELECT%"== SET CONF_SELECT=Y
IF /I NOT "%CONF_SELECT%"=="Y"  GOTO :INPUT_START


SET CURL_DATA="userid=%INPUT_ID%&examid=%INPUT_P%"

curl -m 3 --get https://example.com/xxx? --data %CURL_DATA% --verbose

:INPUT_END
ECHO +-------------------------------------------------------+
ECHO  HTTPリクエストが完了しました。
ECHO +-------------------------------------------------------+
 
PAUSE
EXIT

GitHub ActionsのCI と maven(Java with Maven)その3

skip ci を取り入れる

  • 参考 GitHub Actions で Skip CI を実現する - Qiita
  • develop ブランチやfeatureブランチでpushをたくさんして、pushのたびに CI ・ビルドされると実行時間ばかり加算されてしまう
  • push で CIされないようにすれば良いので、jobsでskipciの定義を追加し、その結果がtrueの場合にbuildが動くようにすれば良い

developブランチでのbuild+skip ciのサンプル

on:
  push:
    branches: [ develop ]
  pull_request:
    branches: [ develop ]

jobs:
  skipci:
    runs-on: ubuntu-latest
    outputs:
      is_skip: ${{ steps.is_skip.outputs.is_skip }}
    steps:
      - name: Set is_skip
        id: is_skip
        run: echo "::set-output name=is_skip::${{ contains(github.event.head_commit.message, '[skip ci]') }}"
      - run: echo "[skip ci] ${{ steps.is_skip.outputs.is_skip }}"
       
  build:

    runs-on: ubuntu-latest
    needs: skipci
    if: ${{ ! needs.skipci.outputs.is_skip }}
    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 1.7
      uses: actions/setup-java@v1
      with:
        java-version: 1.7
    - name: Install ojdbc14-10.2.0.4.0.jar
      run: mvn install:install-file -Dfile=./foo-project/lib/ojdbc14-10.2.0.4.0.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar
    - name: Cache Maven packages
      uses: actions/cache@v1
      with:
        path: ~/.m2
        key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
        restore-keys: ${{ runner.os }}-m2
    - name: Build with Maven
      run: mvn clean package -P dev -f ./foo-project/pom.xml
    - name: Archive WAR
      if: always()
      uses: actions/upload-artifact@v1
      with: 
      
      ......
  • 説明

    • skipciを定義し、pushのメッセージに、”skip ci”がcontains含まれているか判定し、その結果を後続が判定する
    • build側で、「needs: skipci」とし、「if: ${{ ! needs.skipci.outputs.is_skip }}」のfalse(skip ci が含まれない)場合のみbuildを続行するようにする
  • 実際にactionsが動く時間、1-2秒程度で skip ciまでの判定がされ後続が処理されなくなる

  • echo することで、actionsの結果で以下のようなログがとれる
Set up job   0s

Prepare all required actions
Current runner version: '2.263.0'
Operating System
Virtual Environment
Prepare workflow directory
Prepare all required actions

Set is_skip   1s

  shell: /bin/bash -e {0}
Run echo "::set-output name=is_skip::true"
  echo "::set-output name=is_skip::true"
  shell: /bin/bash -e {0}
  Run echo "[skip ci] true"0s
  shell: /bin/bash -e {0}

Run echo "[skip ci] true"
  echo "[skip ci] true"
  shell: /bin/bash -e {0}
[skip ci] true

Complete job   0s

Cleaning up orphan processes
Evaluate and set job outputs
Set output 'is_skip'
Cleaning up orphan processes