令和5年度大学入学共通テスト(追・再試験)を解いた

令和5年度大学入学共通テストの追・再試験の問題を解きました。
解いたのは『英語(リーディング・リスニング)』、『国語』、『地理B』、『倫理、政治・経済』、『数学Ⅰ・数学A』、『数学Ⅱ・数学B』、『物理』、『化学』の8科目です。
今年の1月に解いた令和5年度大学入学共通テスト本試験の結果はそれぞれ以下の記事です。

kakashibata.hatenablog.jp

問題

以下のページで公開されている問題と解答を利用させて頂きました。

www.dnc.ac.jp

結果

結果は以下の通りです。 括弧の中は配点です。

  • 英語(リーディング) 68点(100点)
  • 英語(リスニング) 74点(100点)
  • 国語 127点(200点)
  • 地理B 78点(100点)
  • 倫理、政治・経済 69点(100点)
  • 数学Ⅰ・数学A 58点(100点)
  • 数学Ⅱ・数学B 54点(100点)
  • 物理 76点(100点)
  • 化学 41点(100点)

1月の令和6年度大学入学共通テストも解きたいと思います。

gitでローカルブランチと名前の異なるリモートブランチにpushする

試した環境

本題

例えばローカルのdevという名前のブランチの内容をリモートのdevelopという名前のブランチにpushする場合、以下のコマンドで実行します。

git push origin dev:develop

-uオプションを使ってgit push -u origin dev:developのようにしても、次にgit pushコマンドを実行しても失敗します。

$ git push
fatal: The upstream branch of your current branch does not match
the name of your current branch.  To push to the upstream branch
on the remote, use

    git push origin HEAD:develop

To push to the branch of the same name on the remote, use

    git push origin HEAD

To choose either option permanently, see push.default in 'git help config'.

To avoid automatically configuring an upstream branch when its name
won't match the local branch, see option 'simple' of branch.autoSetupMerge
in 'git help config'.

参考

https://git-scm.com/docs/git-push#Documentation/git-push.txt-codegitpushoriginHEADmastercode

SciPy 連続確率変数クラスの interval メソッドの引数名が alpha から confidence に変わってた

試した環境

本題

SciPy のt分布などの連続確率変数を表すクラスには区間推定を行うintervalメソッドがありますが、そのメソッドの1番目の引数名がalphaからconfidenceに変わりました。 これは SciPy 1.9.0 からの変更のようです。 キーワード引数を使った形式でalphaを書いた場合は以下のようなエラーが出ます。

    interval = stats.t.interval(alpha=0.95,
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: rv_generic.interval() missing 1 required positional argument: 'confidence'

stats.t.interval(confidence=0.95,のようにalphaキーワードをconfidenceに変える必要があります。

ちなみに、Frozen Distribution の形式ではエラーメッセージが少し変わります。

    interval = t_dist.interval(alpha=0.95)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: rv_frozen.interval() got an unexpected keyword argument 'alpha'

参考

SciPy 1.9.0 Release Notes — SciPy v1.11.3 Manual

scipy.stats.rv_continuous.interval — SciPy v1.11.3 Manual

フィーチャーフォン(ガラケー)だとdアカウントの年齢判定機能が利用できないかもしれない

先日LINEで年齢確認を求められました。 契約しているキャリアの機能を使って年齢確認を行うとのことで、私はNTT docomoを契約しているので「NTT docomoをご契約の方」を選んで指示に従ってdアカウントでログインしました。 するとそこで年齢確認に失敗しました。

原因を調べるためにLINEからではなくウェブブラウザでdアカウントにログインして確認することにしました。 確認するには下記のMy docomoのサイトからログインした状態で、「設定」 -> 「年齢判定機能の設定」 -> 「設定を確認・変更する」を選択します。

My docomo | NTTドコモ

そうしたところ、以下のメッセージが出ました。

【サービス非対応】 お客様のご契約では、ご利用になれません。 年齢判定通知機能は、spモードご契約者様向けのサービスです。

spモードについて調べると以下のことが書かれていました。

spモード | サービス・機能 | NTTドコモ

「spモード」は、より便利に、あんしんしてスマートフォンをご利用いただくためのスマートフォン向けプロバイダ(ISP)です。

私はフィーチャーフォンガラケー)を使っているのでspモードに契約しておらず年齢確認はできませんでした。 LINEで年齢確認ができない問題は解決できておりませんが、フィーチャーフォンを使っていて同じような現象に出くわした人の参考になればと思います。

Git で特定のブランチだけクローンする single-branch オプションとそのリポジトリにブランチを追加する設定

試した環境

本題

通常git cloneコマンドでリポジトリをクローンすると、リモートリポジトリの全てのブランチを取得します。 1つのブランチだけcloneするには、--single-branch オプションを付けます。

git clone --single-branch <URL>

更に -b オプションでブランチを指定できます。

git clone --single-branch -b <name> url

こうしてクローンしたローカルリポジトリでは、git fetchコマンドもこのgit cloneで指定した1つのブランチに対して行われます。 これはこれで便利ですが、後から他のリモートブランチを追加したくなる場合もあります。 他のリモートブランチを追加したい場合、ローカルリポジトリの設定を変更します。

#リモートリポジトリ名が'origin'とした場合
git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'

参考

Git - git-clone Documentation

Git - git-config Documentation

cp コマンドの --parents オプションでディレクトリ構成を保持したまま特定のファイルだけコピーする。

試した環境

本題

cp コマンドで --parents オプションを指定することでディレクトリ構成を保持したままコピーできます。 つまりは以下のようにコピーできます。

$ mkdir -p source/subdir destination
$ touch source/subdir/example.txt  source/subdir/example2.txt
$ cd source
$ cp --parents subdir/example.txt ../destination/
$ cd ..
$ $ tree
.
├── destination
│   └── subdir
│       └── example.txt
└── source
    └── subdir
        ├── example.txt
        └── example2.txt

この --parents オプションは複数のディレクトリに対して特定のファイルをコピーしたいときに役立つと思います。 例えば、以下のようなディレクトリ構成を考えます。

$ tree
.
└── results
    ├── condition00
    │   ├── output.heavy
    │   ├── stderr.log
    │   └── stdout.log
    ├── condition01
    │   ├── output.heavy
    │   ├── stderr.log
    │   └── stdout.log
#   ...省略
    └── condition99
        ├── output.heavy
        ├── stderr.log
        └── stdout.log

output.heavy はサイズがとても大きいファイルだとします。 このとき全ての condition?? ディレクトリ下のlogファイルだけをコピーしたい場合、以下の通り実行します。

mkdir -p /path/to/destination/
cd results
find . -type f -name "*.log" -print0 | xargs -0 -I{} cp -a --parents {} /path/to/destination/
$ tree  /path/to/destination/
/path/to/destination/
├── condition00
│   ├── stderr.log
│   └── stdout.log
├── condition01
│   ├── stderr.log
│   └── stdout.log
#   ...省略
└── condition99
    ├── stderr.log
    └── stdout.log

もし output.heavy がコピーの負担が小さいファイルのならば、ディレクトリ全体をコピーしてから不要なファイルを削除する方法をとるかもしれません。

cp -a results/* /path/to/destination/
find /path/to/destination/ -type f -name "output.heavy" -delete

logファイル以外のファイルサイズが大きかったり、logファイル以外のファイル数が多い場合は、 --parents オプションを使った cp が有効なのではないかと思います。

参考

man cp

GitLab の Compare revisions の結果は多分 git log とトリプルドットの git diff

試した環境

  • 2023/06/04時点のgitlab.com (多分 16.0.1)
  • git version 2.41.0.windows.1

本題

以下のように2つのブランチを用意します。 1つはもう一つのブランチを squash merge します。

$ ## edit and commit in develop branch 
$ git switch main
$ git merge --squash develop
$ git log --oneline --graph --all
* 0209881 (HEAD -> main, origin/main, origin/HEAD) Squashed commit of the following:
| * aaf2826 (origin/develop) edit 2
| * de5eb78 edit 1
| * 132257d add file
|/
* 3361c61 Initial commit

この2つのブランチをダブルドットのgit diffをしても差分はありません。

$ git diff main..develop

しかしこれら2つのブランチを GitLab のリポジトリにpushし Compare revisions で確認すると差分が表示されます。

この差分の結果はダブルドットのgit diffコマンドではなく、トリプルドットのgit diffコマンドの結果に相当します。

$ git diff main...develop
diff --git a/compare-test.txt b/compare-test.txt
new file mode 100644
index 0000000..4f8d76e
--- /dev/null
+++ b/compare-test.txt
@@ -0,0 +1,2 @@
+edittext 1
+edittext 2

それの裏付けになるか分かりませんが、URLを見るとmain...developとトリプルドットになっています。 URLの左右とGitLabの画面の左右が逆になるのは注意が必要です。

https://gitlab.com/[groupname]/[projectname]/-/compare/main...develop?from_project_id=XXXXXXXX&straight=false

ちなみにURLの最後のstraight=falsestraight=trueにすると差分が出なくなります。

コミットの表示はダブルドットのgit logコマンドの結果に近いです。 コマンドの左右とGitLabの画面の左右が逆になるのは注意が必要です。

$ git log --oneline main..develop
aaf2826 (HEAD -> develop, origin/develop) edit 2
de5eb78 edit 1
132257d add file

参考

Git - リビジョンの選択