備忘録

ソフトウェアエンジニアのメモ帳

文字を出力してみる

- 質問

Java 言語を使って、すべてのWindows-31J文字を表示したい

 

- 回答

import java.io.UnsupportedEncodingException;

public class Windows31JCharacterDisplay {
    public static void main(String args) {
        try {
            // Windows-31Jのバイト配列を生成
            byte
windows31JBytes = new byte[2];
            for (int i = 0x81; i <= 0x9F; i++) {
                windows31JBytes[0] = (byte) i;
                for (int j = 0x40; j <= 0xFC; j++) {
                    // 0x7Fを飛ばす
                    if (j == 0x7F) {
                        continue;
                    }
                    windows31JBytes[1] = (byte) j;

                    // バイト配列を文字列に変換して表示
                    String windows31JCharacter = new String(windows31JBytes, "Windows-31J");
                    System.out.print(windows31JCharacter + " ");
                }
                System.out.println();
            }

            for (int i = 0xE0; i <= 0xFC; i++) {
                windows31JBytes[0] = (byte) i;
                for (int j = 0x40; j <= 0xFC; j++) {
                    // 0x7Fを飛ばす
                    if (j == 0x7F) {
                        continue;
                    }
                    windows31JBytes[1] = (byte) j;

                    // バイト配列を文字列に変換して表示
                    String windows31JCharacter = new String(windows31JBytes, "Windows-31J");
                    System.out.print(windows31JCharacter + " ");
                }
                System.out.println();
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
}

 

 

安心ネットフィルター設定

要約

特定のサイトだけにアクセス許可を与えたい場合は以下の設定でいける。

許可:*.kyoka-site.jp

拒否:*.*

 

子供に iPad を与えると勉強しなくなったので、フィルタをかけることにしたときのメモ

 

  • 環境

au ひかり マンション タイプG

(ホームゲートウェイ+追加無線LANルータという構成で利用)

iPad Air

 

安心ネットフィルターの契約

月額 209 円(23/06/03時点)が必要で、my au から契約可能。

契約後はすぐに適用されるとのことだったが、翌朝になってから利用開始となった。

www.au.com

 

翌朝になってから「ご利用中」になった

フィルター設定

  • やりたいこと

勉強サイト(try-it.jp)だけにアクセスできて、他のサイト(google検索など)を拒否したい。

 

  • やったこと

まず、許可するサイトを設定(*.try-it.jp)

 ー>もしかすると足りないかもしれないが、暫定でこれだけ。

 

つぎに他のサイトを拒否するのだが、ワイルドカード「*」一文字は利用できないらしい。(電話サポートの人もそう言ってた)

で、いろいろ試すと、「*.*」でうまく行きました!

 ->URLのどこかにドット「.」が含まれる場合は拒否する、という意図

 

電話サポートの人も、一覧に設定する順番は関係なく、許可サイト設定のほうが優先されると言ってたので、これでOKなはず。

フィルタ設定

 

プライバシーポリシー

【開発者/会社名】は端末温度監視アプリを【オープンソース/無料/フリーミアム/広告対応/商用】アプリとして構築しました。このサービスは、[開発者/会社名] によって [無料] で提供され、そのまま使用することを目的としています。

このページは、誰かが [my/our] サービスを使用することを決定した場合に、個人情報の収集、使用、および開示に関する [my/our] ポリシーについて訪問者に通知するために使用されます。

[my/our] サービスの使用を選択した場合、このポリシーに関連する情報の収集と使用に同意したことになります。[私/私たち] が収集する個人情報は、本サービスの提供および改善のために使用されます。[私/私たち] は、このプライバシー ポリシーに記載されている場合を除き、お客様の情報を使用または共有しません。

このプライバシー ポリシーで使用される用語は、このプライバシー ポリシーで別段の定義がない限り、端末温度監視でアクセスできる当社の利用規約と同じ意味を持ちます。

情報の収集と使用

より良い体験のために、私たちのサービスを使用している間、[私/私たちは]特定の個人を特定できる情報を提供するようにあなたに要求する場合があります. [私たち] の要求は [あなたのデバイスに保持され、[私/私たち] によって収集されることはありません]/[私たちによって保持され、このプライバシー ポリシーに記載されているとおりに使用されます].

アプリは、あなたを識別するために使用される情報を収集する可能性のあるサードパーティのサービスを使用します.

アプリが使用するサードパーティ サービス プロバイダーのプライバシー ポリシーへのリンク

ログデータ

[I/We] want to inform you that whenever you use [my/our] Service, in a case of an error in the app [I/We] collect data and information (through third-party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing [my/our] Service, the time and date of your use of the Service, and other statistics.

Cookies

Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.

This Service does not use these “cookies” explicitly. However, the app may use third-party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.

Service Providers

[I/We] may employ third-party companies and individuals due to the following reasons:

  • To facilitate our Service;
  • To provide the Service on our behalf;
  • To perform Service-related services; or
  • To assist us in analyzing how our Service is used.

[I/We] want to inform users of this Service that these third parties have access to their Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.

Security

[I/We] value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and [I/We] cannot guarantee its absolute security.

Links to Other Sites

This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by [me/us]. Therefore, [I/We] strongly advise you to review the Privacy Policy of these websites. [I/We] have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.

Children’s Privacy

These Services do not address anyone under the age of 13. [I/We] do not knowingly collect personally identifiable information from children under 13 years of age. In the case [I/We] discover that a child under 13 has provided [me/us] with personal information, [I/We] immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact [me/us] so that [I/We] will be able to do the necessary actions.

Changes to This Privacy Policy

[私/私たち] は、プライバシー ポリシーを随時更新する場合があります。したがって、変更がないか定期的にこのページを確認することをお勧めします。[私/私たち] は、このページに新しいプライバシー ポリシーを掲載することにより、変更を通知します。

このポリシーは 2023 年 5 月 6 日から有効です

お問い合わせ

[my/our] のプライバシー ポリシーについて質問や提案がある場合は、[me/us] hk.dev.app@gmail.com までお気軽にお問い合わせください。

このプライバシー ポリシー ページは、privacypolicytemplate.netで作成され、 App Privacy Policy Generatorによって変更/生成されました

定期的に実行する処理を実装したときのメモ

目的

比較的短い間隔で定期実行する処理を作る。

結果

まず、短い間隔での処理を諦めることを検討する。
それでもやりたければ Handler 使いましょう!

やったこと

  • WorkManager で処理する

2023/5/4現在の推奨ソリューション。 developer.android.com ただ、最短間隔が15分とのことで、却下。 developer.android.com

  • Timer で処理する Handlerで処理する

このあたりを参考に実装 akira-watson.com

定期実行するための作業メモ

目的

ログインボーナスを自動で取得したい!

以前は Heroku の無料枠を利用していたが、

自宅の mac で定期実行してみることにした。

環境

MacBook Air M1, 2020

16GB

macOS 13.2.1

作る人は Python を全く使えない素人

やったこと

1. ソースコードの修正

Heroku で動いてたソースコードがあるので、その修正が必要だった。
修正する箇所はchromeドライバの取得方法の変更。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# 自動でchrome-driverをアップデートしてくれるライブラリ
# conda環境であれば、conda install webdriver-manager でインストールが必要。
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
# m1 mac に numpy が入らない→ conda で仮想環境作って numpy を入れる。
import numpy as np
import time

# 1.000~3.000秒のランダムな乱数を生成する
wait_time = float('{:.3f}'.format(np.random.rand()*3+1))

## Chrome を自動でアップデートするために ChromeDriverManager を利用する
driver_path = ChromeDriverManager().install()

## 画面を表示しないようにするために headless を指定する
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(service=Service(executable_path=driver_path), options=options)

try:    
    time.sleep(wait_time*10)
    driver.get('https://login.url') # ログインURL
    time.sleep(wait_time)

    driver.close()
    driver.quit()

except:
    driver.close()
    driver.quit()
2. cron の設定

ターミナルから

crontab -e

深夜に動かしたいので、macのスリープを解除しつつ動かす設定をこんな感じで登録。
anaconda で python39 の環境を作っているので、そこの python コマンドのフルパスを指定しておくと、 conda activate python39 投入の代わりになってくれる。

0 1 * * * /Users/user_name/miniforge3/envs/python39/bin/python /Users/user_name/git/dailyJob/job1.py
1 1 * * * pmset repeat wakeorpoweron MTWRFSU 01:59:00
0 2 * * * /Users/user_name/miniforge3/envs/python39/bin/python /Users/user_name/git/dailyJob/job2.py
1 2 * * * pmset repeat wakeorpoweron MTWRFSU 02:59:00
0 3 * * * /Users/user_name/miniforge3/envs/python39/bin/python /Users/user_name/git/dailyJob/job3.py
1 3 * * * pmset repeat wakeorpoweron MTWRFSU 00:59:00

M1 Mac が MP3プレイヤーを認識しない件

問題

ベネッセからもらったMP3プレイヤーをmacで認識できなくなった。

以前は認識できていて、MP3ファイルの追加・削除もやっていた。

 

結論

macOS をバージョンアップしたことが原因と推測。

詳細なバージョンは未調査だが、すくなくとも Ventura 13.2.1 はダメっぽい。

仮想環境上で認識できたので、ひとまず解決!

OSバージョンアップされるまで仮想環境からの接続で回避する。

 

環境

MacBook Air M1, 2020

macOS Ventura 13.2.1

 

USBハブはAnkerや謎ブランドのものを試してみたが、症状変わらず。

 

仮説

- MP3プレイヤーの破損

- macOSバージョンアップの影響

 

調査

- Finder に表示されるか

 →されない

Finder

- システム情報

 →存在している

 

- 上記シリアル番号の検索結果

㉕捤稰眷㕳愳㤷湲 usb - Google 検索

 →よくわからない!

 

- ディスクユーティリティ

 →存在している。

ディスクユーティリティ

- ディスクユーティリティからマウントしてみる

 →結構時間がかかるが、エラーとなる

マウントエラー

- ディスクユーティリティで First Aid してみる

 →終了コード 0 

  →もう一度マウントしてみるが、上記エラー変わらず。

first aid

- コマンドからマウントしてみる

 今回の場合、下記のコマンドを投入。

diskutil mount /dev/disk4

 →かなり時間を要したが、下記エラーとなった。

Volume on disk4 failed to mount

If it has a partitioning scheme, use "diskutil mountDisk"

If you think the volume is supported but damaged, try the "readOnly" option

 →言われた通り、mountDiskしてみると

One or more volume(s) failed to mount

 →mout + readOnly、mountDisk + readOnly の組み合わせも同様のエラー

 

macOS が怪しくなってきた。

 

- 仮想環境から試してみる

 →できた!

 →つまずきポイントが1点。用意する Ubuntu は Desktop 版だとうまく起動できないので Server 版を利用すること。

original-game.com

qiita.com

 

 

おまけ(共有フォルダからUSBへのデータ移動)

  1. 共有フォルダを設定してUbuntuを起動
  2. USBを差す
  3. USBを探す ls /dev/sd*
  4. USBをマウント mount -t vfat /dev/sdb /media
  5. 【初回だけ】共有ファイルを作成 sudo mkdir /media/share
  6. 共有フォルダをマウント sudo mount -t 9p -o trans=virtio share /media/share -oversion=9p2000.L
  7. 共有フォルダ内のデータをUSBへ移動 cp -R /media/share/* /media/user/NO\ NAME/
  8. unmount や eject やってお終い

 

JSTQB Foundation Level 試験の感想

感想

  • 思ったより時間がギリギリだった
  • 1問目から問題の文章が多くて焦った
  • 8割くらい出来たと思う
  • テスト観点/項目数の計算問題は全く自信ない

 

結果(追記)

無事合格できました。

 

試験概要

JSTQB認定テスト技術者資格

日時:2022/02/12

会場:TOC 有明

 

学習時間

3日くらい

 →前の週の土日と、試験前日の祝日

 

学習方法

参考書は買いませんでした。

分厚い本というだけで、やる気が無くなるので笑

 

動画は有料になりますが、こちらを利用。

www.qbook.jp

 →倍速機能が地味に良かった。

 

これから受験を考える人たちへ

公式のシラバスが絶対唯一の正解という世界なので、シラバスを読んでください。

 

極端に言ってしまうと、

シラバスに書いていないことは

それが正しくても不正解になると思ってください。

 

 

参考:受験した人のスキルレベル

設計から実装、試験まで経験している30代ソフトウェアエンジニア。

応用情報技術者保有