git でリモートリポジトリからタグを1つだけ取得する

試した環境

本題

git でリモートリポジトリからタグを1つだけ取得するには以下のようなコマンドで行います。

git fetch --no-tags <remote_name> tag <tag_name>

ポイントはタグ名の前にtagと付けることと、--no-tagsオプションを付けることです。 例えばタグ名がv2.0だとして、git fetch --no-tags origin tag v2.0と実行すると以下のように出力されます。

From https://....
 * [new tag]         v2.0       -> v2.0

tagについて

tagがないとローカルにタグとして取得できません。 例えばタグ名がv3.0だとして、git fetch --no-tags origin v3.0と実行すると以下のように出力されます。

From https://....
 * tag               v3.0       -> FETCH_HEAD

この後git logなどで確認してもローカルリポジトリにタグが付いていないことが確認できると思います。

git-fetch のドキュメントに以下の記述があります。

git-scm.com

tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>; it requests fetching everything up to the given tag.

なので以下のコマンドも同様にローカルリポジトリにタグを取得できます。

git fetch --no-tags <remote_name> refs/tags/<tag_name>:refs/tags/<tag_name>
git fetch --no-tags <remote_name> <tag_name>:refs/tags/<tag_name>

--no-tagsオプションについて

--no-tagsオプションがないと、すべてのタグが取得されます。 例えばタグ名がv4.0だとして、git fetch origin tag v4.0と実行すると以下のように出力されます。

From https://....
 * [new tag]         v4.0       -> v4.0
 * [new tag]         v1.0       -> v1.0
 * [new tag]         v2.0       -> v2.0
 * [new tag]         v3.0       -> v3.0

git config remote.<name>.tagOpt--no-tagsに設定されている場合はコマンドに--no-tagsオプションは不要です。 例えばgit clone --no-tags <URL> などでクローンしたローカルリポジトリでは初めからそのような設定になります。

参考

https://git-scm.com/docs/git-fetch#Documentation/git-fetch.txt-ltrefspecgt

https://git-scm.com/docs/git-fetch#Documentation/git-fetch.txt---no-tags

git cherry-pick で複数のコミットを指定する2つの方法

試した環境

本題

git cherry-pickコマンドで複数のコミットを指定する方法を2つ記します。 一つはコミットを列挙する方法、もう一つはコミット範囲指定する方法です。

まず、例示するために以下の通り環境を作ります。

git init
echo 1st>1st.txt
git add -A
git commit -m "1st commit"
echo 2nd>2nd.txt
git add -A
git commit -m "2nd commit"
git switch -c subbranch
echo 3rd>3rd.txt
git add -A
git commit -m "3rd commit"
echo 4th>4th.txt
git add -A
git commit -m "4th commit"
echo 5th>5th.txt
git add -A
git commit -m "5th commit"
git switch master

git log --oneline --allで出力したものが以下の通りです。

a7c5ac6 (subbranch) 5th commit
412ad02 4th commit
c5b21e4 3rd commit
394abab (HEAD -> master) 2nd commit
61d8c02 1st commit

以下の各例示はこの状態からスタートします。

コミットを列挙して指定する

cherry-pick したいコミットを列挙して指定します。 スペース区切りで列挙します。

git cherry-pick subbranch~2 subbranch

git log --onelineで出力したものが以下の通りです。

b5faa69 (HEAD -> master) 5th commit
1803313 3rd commit
394abab 2nd commit
61d8c02 1st commit

上記のコマンド指定ではsubbranchブランチが現在指しているコミットとその2つ前のコミットの変更が反映されます。 4th commitは指定していないので取り込まれておりません。

コミット範囲を指定する

cherry-pick したいコミットが連続している場合はコミットの範囲を指定することも可能です。

git cherry-pick subbranch~2..subbranch

git log --onelineで出力したものが以下の通りです。

07a228c (HEAD -> master) 5th commit
0ca0c1a 4th commit
394abab 2nd commit
61d8c02 1st commit

3rd commit がないことに注意です。

この指定方法はドキュメントに以下の通り説明があります。

https://git-scm.com/docs/gitrevisions#_revision_range_summary

> <rev1>..<rev2>
> 
>     Include commits that are reachable from <rev2> but exclude those that are reachable from <rev1>. When either <rev1> or <rev2> is omitted, it defaults to HEAD.

要するに左側に指定したコミットは範囲に含まれません。 この表現方法はgit cherry-pick以外のコマンドで左側を分岐の始点とする場合とかに便利なのだろうと感じました。

参考

Git - git-cherry-pick Documentation

Git - gitrevisions Documentation

令和6年度大学入学共通テストを解いた

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

kakashibata.hatenablog.jp

去年の12月に解いた令和5年度大学入学共通テスト(追・再試験)の結果は以下の記事です。

kakashibata.hatenablog.jp

問題

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

edu.chunichi.co.jp

結果

結果は以下の通りです。

  • 英語(リーディング) 67点
  • 英語(リスニング) 75点
  • 国語 175点
  • 地理B 86点
  • 倫理、政治・経済 85点
  • 数学Ⅰ・数学A 81点
  • 数学Ⅱ・数学B 58点
  • 物理 93点
  • 化学 34点

以下各科目の振り返りです。

リーディング 67点

7割を下回ってしまいました。 なんとか全部の問題に着手することは出来ましたが、殆ど読まずに解答した問題もあり時間が足りませんでした。 第6問Bは12点中5点でした。 第4問(8点/16点)が苦手です。

リスニング 75点

音声が1回しか流れない第3問以降がきつく、特に第3問(9点/18点)と第5問(10点/15点)が苦手です。

国語 175点

現代文、古文、漢文に分けたときの点数は以下の通りです。

  • 現代文 98点
  • 古文 40点
  • 漢文 37点

古文は後に本文を解説した文章がありこれが本文の理解の助けになりました。
漢文は文章から答えを導いたというよりかは「人口に膾炙する」や玄宗楊貴妃についてなど、既に知ってることから解いた感触です。
そのおかげで現代文に時間をかけることができ、現代文が今まで取ったことない高得点になりました。

地理B 86点

目標の8割は取れたので良かったです。 第1問と第4問で2問ずつ間違えています。 例年第1問に苦戦します。

倫理、政治・経済 85点

倫理と政治・経済に分けたときの点数は以下の通りです。

  • 倫理 38点
  • 政治・経済 47点

数学Ⅰ・数学A 81点

一番落としたくなかったデータの分析と確率で満点を取れたので良かったです。 8割取れたのは苦手な第4問が今回はn進数の問題だったおかげです。

数学Ⅱ・数学B 58点

一番落としたくなかった統計がボロボロ(7点/20点)でした。 第2問もボロボロ(9点/30点)でした。

物理 93点

9割取れて満足です。

化学 34点

例年より計算問題が減ったでしょうか。
化学は好きな科目なのですが、点数はまともに取れたことがありません。

全体の感想

去年よりは点が取れた印象です。

来年から新教育課程による出題科目が登場します。 新教育課程による出題科目では『倫理、政治・経済』が無くなります。 これに近い科目は『公共,倫理』もしくは『公共,政治・経済』になると思いますが、どちらを解くか悩みます。 『情報Ⅰ』も気にはなっています。

令和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で年齢確認ができない問題は解決できておりませんが、フィーチャーフォンを使っていて同じような現象に出くわした人の参考になればと思います。