柿の種

注意:クソポエムです。 (この記事を書いたのは二年ほど前ですが、出すタイミングがなくて放置していました。そのため、時系列がおかしいことになっていますが大目に見てください)

今日は、何の日かご存知ですか?"目の愛護デー"世間ではそのように認識されていますが、実は「柿の種」の日でもあります。 柿の種おいしいですよね?きっとみんなも好きだと思います。
というわけで、柿の種について語りたいと思います。

本文

私は柿の種*1が好きです。 自宅と研究室には、柿ピー*2を常備しています。
また、私は柿ピー*3を食べる際、"ピーナッツを先に食し、後から柿の種のみを楽しむ"という変わった食べ方をします。

以前の私は、友人や家族に対しこのように言っていました。
柿ピーにピーナッツは必要無い!*4

ところで最近、少しづつお酒を飲むようになりました。
お酒のおツマミとして刺し身や焼鳥、揚げ物も良いですが、柿の種は任意のお酒のツマミになると考えています*5

先日、Amazon Surfing*6をしていたところ、このようなものを見つけました。

亀田製菓 亀田の柿の種100% 130g×12袋

亀田製菓 亀田の柿の種100% 130g×12袋

柿の種好きの私にとって買わない理由はありません。脊髄反射で1-click購入ボタンを押しました。

ピーナッツが入っておらず柿の種だけが入っているものはスーパやコンビニに売っているのですが、実はあるこだわりがあって「亀田製菓の柿の種」が大好きなのです。もちろん、他社の柿の種が嫌いなわけではありませんが私は亀田製菓の柿の種でなければ"満足"できないのです。

購入ボタンを押した次の日、箱いっぱいに詰め込まれた柿の種が届きました。普段は配達に2日ほどかかるのですが嬉しいことに今回は1日かかりませんでした。当然、柿の種が届くまで柿の種を食べながら待っていました(?)。

あぁこれだ。私が求めてたのはこれです。無我夢中で食べ続け、食後にも関わらずものの数分で一袋食べてしまいました。

ときには、お酒のツマミとして。
ときには、おやつや食後のデザートとして。
そしてときには、柿の種のお供として。

私は柿の種を食べ続けました。
箱いっぱいにあった柿の種はみるみるうちになくなり、ついに食べ終わりました。

「柿ピーにピーナッツは必要無い!」

以前、私はこのようなことを言っていましたが、柿の種のみを食べ続けていくうちにある重要なことに気付きました。 それは、
柿の種にはやはりピーナッツが合う!

私は柿ピーのことを何も理解していませんでした。
今までピーナッツなんてかさ増し程度の余分なものだと思っていたのですが、今回ピーナッツなし柿の種を食べ続けたことにより「ピーナッツがあるからこそ柿の種の美味しさが引き立つこと」という事に気付かされました。

結論

「柿ピーにピーナッツは必要無い!」なんて言ってすみませんでした。

これからは、ピーナッツが入っているこちらの商品を購入したいと思います。

亀田製菓 亀田の柿の種6袋詰 200g×6袋

亀田製菓 亀田の柿の種6袋詰 200g×6袋

まとめ

柿の種はいいぞ

*1:ここで言う柿の種とは、カキノキ科カキノキの果実の種のことではなく米菓のことを指します

*2:柿の種とピーナッツを混ぜ合わせたもの

*3:柿の種とピーナッツが一定の割合で混ぜ合わせてある菓子

*4:それは柿ピーではないのでは

*5:全てのお酒を飲んだことはないので想像ですが

*6:私が作った造語(既にあったらスミマセン)です。意味は、Amazonで適当に商品を眺めること。

CentOSで/homeを/にマージする

背景

現在,CentOSで構築しているサーバに外付けのSSDを接続し,そちらを/homeにマウントしている.
しかし,CentOSの初期設定の際に/homeには論理ボリュームcentos-homeが割り当てられていた.
centos-homeはどこにもマウントされていないためcentos-rootにマージしたい.

解決策

以下に示している解決法は「とりあえずやったらできた」程度のものです.
下記手順を実行したことによって生じた損害等の一切の責任を負いかねますのでご了承ください. (マサカリ🪓は歓迎します)

手順

流れとしては以下のようになります.
1. 論理ボリュームの確認
2. 現在/homeに存在するファイルの退避
3. 論理ボリュームcentos-homeの削除
4. 論理ボリュームが削除されたことの確認
5. 空いている容量を全てcentos-rootに割り当てる
6. 割り当てられたことの確認
7. OSが認識しているか確認
8. xfsファイルシステムを拡大
9. 正常にマウントされていることの確認

コマンド

(以下は全てrootで作業しています.)

1: 論理ボリュームの確認

まず,dfコマンドを用いてファイルシステムのディスク容量を確認します.以下の出力は/以外は省略してあります.現在,50GB中の約49GBを使用していることがわかります.

$ df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root    50G   49G  1.6G   97% /

次にlvdisplayコマンドを用いて論理ボリュームの情報を表示します.ログを取るのを忘れており出力結果は表示していないのですが,rootとhomeの論理ボリュームが表示されてい(ました|る思います).

$ lvdisplay -C

2: 現在/homeに存在するファイルの退避

/homeに既にファイルがある場合は別の場所に退避させます.可能であれば他の物理ボリュームが良いと思います.*1 今回,/homeは空だったのでコマンドは省略しますが,圧縮して他の場所に置けば良いです.

3: 論理ボリュームcentos-homeの削除

ファイルを退避させたらlvremoveコマンドを用いて論理ボリュームを解放します.

$ lvremove /dev/mapper/centos-home

4: 論理ボリュームが削除されたことの確認

もう一度lvdisplayコマンドを用いて,削除されたことの確認を行います.

$ lvdisplay -C

5: 空いている容量を全てcentos-rootに割り当てる

lvextendコマンドを使い,空き容量を全て/に割り当てます.

$ lvextend -l +100%FREE /dev/mapper/centos-root

6: 割り当てられたことの確認

元々50GBでしたが,500GBになりました.(464.56GBとなっていますが,ファイルシステムが使用する容量があるためこのようになっていると推察されます)*2

$ lvdisplay -C
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- 464.56g

7: OSが認識しているか確認

ファイルシステムのディスク容量を確認します.

$ df -h 
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root    50G   49G  1.6G   97% /

🤔 🤔 🤔

サイズが増えていません.
これはこの時点ではまだファイルシステムのリサイズは行なっていないためです.

8: xfsファイルシステムの拡大

今回使用しているファイルシステムがxfsなので,xfs_growfsコマンドを用いて変更を反映します.

$ xfs_growfs -d / 
meta-data=/dev/mapper/centos-root isize=512    agcount=38, agsize=3276800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=121782272, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=6400, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 13107200 to 121782272        

9: 正常にマウントされていることの確認

もう一度dfコマンドを用いてファイルシステムのディスク容量を確認します.

$ df -h 
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  465G   49G  417G  11% /

正しく反映されました👍

参考

*1:最悪初期化することになるかもしれないので

*2:https://hesonogoma.com/linux/comparativetableoffilesystem.html

"ゼロからグレブナー基底入門"にいってきた

はじめに

突然ですがグレブナー基底をご存知ですか?
2017年冬,私は「妹がグレブナー基底に持ち始めたのだが。」*1というカクヨムの小説で出会いました.

"グレブナー基底"初めて聞いた(見た)その単語は刺激的で,ポン酢が似合いそうだなと思いました.嘘ですごめんなさい

ちなみに,上記小説は普段小説を避けている私が一気に最後まで読み進めてしまうくらい面白く,また高度な知識を必要としないため中高生でも読める内容になっています.

先日,上記小説の著者であるグレブナー基底大好きbot(@groebner_basis)さんが講師として務められるイベントが開催され,学生枠が空いていたので参加してきました. groebner-basis.peatix.com

勉強会

グレブナー基底の定義

 K: 体.多項式環 K[x_1, ..., x_n]のイデアル Iに対して,有限部分集合 G \subset Iの先頭項から生成されるイデアルが, Iの先頭項から生成されるイデアルに一致しているとき, G Iグレブナー基底と呼ぶ.すなわち,

一応独学で代数を勉強していますが,イデアルって何だっけ...? \mathrm{LT}ってなんだ??といったように自分で読み解くには時間がかかりそうでした.
一旦定義はおいておいて...

ここで,グレブナー基底の歴史やグレブナー基底の応用についてのお話がありました.
個人的には暗号理論への応用が気になりました.

次に, \mathrm{LT} (Leading Term, 先頭項)の説明,多変数多項式の割り算についての解説を受けました.

そして,もう一度定義に戻ってみると...?




_人人人人人人人人人人人人人_

> 読める!読めるぞ!!! <

 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄


最初に見たときに比べ,主張は理解できるようになってました.

講義の最後では,グレブナー基底を求めるブッフベルガーアルゴリズムの解説がありました.
計算量が多いとは聞いていましたが,  O(2^{2^{N}}) と聞いたときは笑ってしまいました. でも,実際に計算を行う分にはそこまでヤバくないらしい...?です.

演習

今回,2時間の講義と別に3時間の演習時間が設けられており,オンラインの計算ソフトWolfram|Alphaを使いながら演習問題を行いました.
演習問題では小説中に登場した嘘つきの問題を始め四色問題等が取り上げられ,それぞれ例題・基礎・発展があり十分なボリュームが有りました.
自分の手を動かして計算を行うのは久しぶりで,なんだかワクワクしました.

さいごに

勉強会では講義中に自由に質問できる機会を提供していただけたのは非常に良かったなと思います. 私もたくさん質問し,回答していただきました.
また,自分が気付かなかったことや認識が正確ではない部分に関して他の方が質問に対する回答を聞くことで理解することがありました.自分が疑問に思ったことは他の人も同様に悩んでいるかもしれないので,質問することは大事ですね.

正直私は数学科でもなければ特別数学が得意なわけでもないタダの数学が好きな人なので,数学の勉強会に参加するのは躊躇していました.
しかし,今回のイベントは"プログラマのための数学勉強会"さん主催で,前提知識が中高の数学だったので参加を決めました. 結果として,講義はめちゃくちゃ楽しくて学ぶことが多かったです.

これを期に,もう少し幅を広げて他分野の勉強会にも積極的に参加できたらなと思います.

紹介

今回の勉強会の講師を務められたグレブナー基底大好きbot(@groebner_basis)さんが執筆している書籍「妹がグレブナー基底に持ち始めたのだが。」の1巻と2巻は書泉さんで取り扱っています.*2 また,Amazon Kindle電子書籍が販売されています.(Kindle Unlimitedの方はなんと無料で読めます!)

togetter

今回,勉強会を主催されたさのたけと(@taketo1024)さんがまとめてくださいました. togetter.com

SSHでProxyCommandを使って多段ログインする

背景

次の図(?)ように,サーバA(踏み台サーバ)が外部ネットワークに公開されており,サーバB, C, ...(内部サーバ)には外部からアクセスできないようになっている環境はよくあります.

家 ----- インターネット ----- サーバA ----- サーバB
                                      +-- サーバC
                                      +-- etc...

このような環境で,外部から内部サーバにSSHでアクセスする方法として多段ログインがあります. 多段ログインとは,まず公開されている踏み台サーバにSSHで接続し,踏み台サーバから目的のサーバにSSHで接続することです.

しかし,毎回二度もSSHコマンドを叩くのは面倒なので一回コマンドを叩くだけで目的のサーバにアクセスできるようにします.

解決法

解決法には複数あり,ここではProxyCommandを使用した解決法を書きます.
ProxyCommandとはサーバへの接続に使用するコマンドを指定する機能です.(詳しくは$ man ssh_configに書いてあります)

とりあえず試す

まずはコマンドのみで試してます.
以下のように,SSHコマンドに-oオプションを付けてProxyCommandを指定します.

$ ssh -o ProxyCommand='ssh -p サーバーAのポート番号 -W %h:%p serverA' serverB

ここで,ProxyCommand内のSSHコマンドに渡している-Wというオプションはホスト名とポート番号を指定するオプションです.
また,ProxyCommandに指定した文字列の%h%pは接続先のホスト名に置換されます.
このコマンドを実行するとserverBに接続することができます.(鍵を指定していないためパスワードを聞かれると思います)

設定ファイルの編集

実際に接続できることを確認できました.
毎回長いコマンドを入力するのは面倒なので~/.ssh/configに設定を行います.

Host serverA
    HostName サーバAのIP(ホスト名)
    User サーバAのユーザー名
    Port サーバAのポート番号
    IdentityFile サーバAへの接続に使う鍵
Host serverB
    HostName サーバBのIP(ホスト名)
    User サーバBのユーザー名
    Port サーバBのポート番号
    IdentityFile サーバBへの接続に使う鍵
    ProxyCommand ssh -W %h:%p serverA

SSHコマンドを使ってアクセスしてみます.

$ ssh serverB

今度は鍵を指定しているためパスワードを入力することなくserverBに接続することができます.
これを応用すると,2段だけでなく3段階ログインといったことも可能です.

SSHでサーバに繋いで"perl: warning: Setting locale failed."が出てきたときの対処法

背景

普段macを使用していますが,先日WindowsBash on Ubuntu on Windowsからサーバにsshすることがありました.
その際,以下のような警告が出てきたので対処法を書きます.

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

原因

ローカル(Windows)のlocale情報がSSHで送られていた.

SSHにはSendEnvという環境変数を接続先サーバに送信する機能があります.
また,SSHには接続先別の設定を記述する~/.ssh/configと,デフォルト(共通)の設定を記述する/etc/ssh/ssh_configがあります.
今回locale情報が送られてしまったのは後者の設定ファイルにSendEnv LANG LC_*が設定されていた為です.

解決法

/etc/ssh/ssh_configを管理者権限で開き,SendEnv LANG LC_*の部分をコメントアウトすれば解決します.

-    SendEnv LANG LC_*
+#   SendEnv LANG LC_*

位相空間論 #1 - 開集合と閉集合

位相空間論(general topology)について自分が理解してる範囲でまとめます.誤りを見つけた際は,コメントかDMで教えて頂けると嬉しいです.
今回は開集合と閉集合の公理について書きます.

位相空間

数学における位相空間論(いそうくうかんろん、英: general topology; 一般位相幾何学)または点集合トポロジー(てんしゅうごうトポロジー、point-set topology; 点集合論的位相幾何)は、位相空間の性質やその上に定義される構造を研究対象とする位相幾何学の一分野である。 - Wikipedia

位相空間は,集合に対して「位相(トポロジー)」という構造を導入したものです.
位相とは便利なもので,これにより,点の近傍や点列の収束,写像の連続性,今回書く開集合や閉集合の概念を定義することができます.

定義

開集合を定義する前に,まず内点というものを定義します.
ここでは外点や境界点に関しての説明は行いません.

内点

点集合 \boldsymbol{S}に属する一つの点pに十分近い点がすべて \boldsymbol{S}に属するとき,pを \boldsymbol{S}内点という.

一言で言うと,点 pにとても近い点はSに属するというものです.
数式で述べると次のようになります.

部分集合 {\boldsymbol{S} \subset \mathbb{R}^m}と点 {p \in \boldsymbol{S}}を考える.  {\exists \epsilon \in \mathbb{R} \gt 0 \ \left\{ x \in \mathbb{R}^m | d(x, p) \lt \epsilon \right\} \subseteq \boldsymbol{S}} ならば p \boldsymbol{S}の内点である.( d \mathbb{R}^mの距離関数)

例えば {a \lt b \lt c}となるような実数{ a,b,c \in \mathbb{R}}に対して,閉区間 { \left[ a, c \right] }を考えると, bは内点になります.これは,開区間 { (a, c) }を考えると, { b \in (a, c) \subset  \left[ a, c \right] }となるためです.

開集合

集合 \boldsymbol{S}の各点が内点であるとき, \boldsymbol{S}開集合という.

開集合は境界を含みません.
開集合の例として次のようなものがあります.

閉集合

閉集合は開集合の補集合である.

ここで,注意しなければならないことは,開集合でも閉集合でもない集合があるということです.
詳細は省きますが,例えば半開区間は開集合にも閉集合にも属しません.

閉集合は境界を含みます.
閉集合の例として次のようなものがあります.

開集合の公理

  1. 空集合 \phiと全体集合 \mathbb{R}は開集合である
  2. 開集合に属する集合の任意の和集合は開集合である
  3. 開集合に属する集合の有限個の共通部分集合は開集合である*1

閉集合の公理*2

  1. 空集合 \phiと全体集合 \mathbb{R}閉集合である
  2. 閉集合に属する集合の有限個の和集合は閉集合である
  3. 閉集合に属する集合の任意個の共通部分集合は閉集合である

さいごに

今回は,開集合と閉集合について書きました.
英語ではそれぞれ,open setとclosed setといいます.そのままですね.

次に書く記事の内容はまだ決めていません.(というか元々位相のお話する予定なかったので全然まとめてませんでした)

とかとか分かりづらい...

参考書籍

定本 解析概論

定本 解析概論

*1:有限個ではない場合,共通部分集合が開集合に属すとは限りません.例えば,次の共通部分集合 {\bigcap_{x=1}^{\infty}{(-\frac{1}{x}, \frac{1}{x})}}を考えると,0のみを含む一元集合となってしまいますが,一元集合は開集合ではありません.

*2:閉集合は開集合の補集合であるため,ド・モルガンの法則によって開集合の公理から導出できます.

2018-kosen13s-adventcalendar-#23

こんにちは,NotFoundsです.

遅ればせながら,あけましておめでとうございます.
昨年度,Kosen13s Advent Calendarを書くと言って,まだ書いてなかったのでそろそろ書きます.(罪悪感が湧いてきたので)

何書くか決めずに記事を書き始めたのですが,大学に編入してから1年弱たったので振り返ってみます.

春ABC

筑波大学では一年間を春・秋と2つに分け,さらにそれぞれをA・B・Cと5週ずつの3つに分け(春|秋)(A|B|C)モジュールと呼びます.
ここでは,春ABCつまり4月から8月までを振り返りたいと思います.

と言っても特に面白いことはなく,入学したら単位変換して,サークル見学行って,普通に講義受けて,たまに自転車で出かけるみたいなことをしていたら終わりました.

詳しくはこの辺に書いてあります.

notfounds.hatenablog.com

あ,春Cにアウトプットをするという目標を立てました.(アウトプット以外の活動も含まれているけど)
結果は,達成率6割程度でした.
内訳として,本を読んだり,課題をするといったことが殆どで,草🌱生やしたりブログ書いたりはできませんでした.
本を読むようになったのは良かったなと思います.

夏期休業

8月の中旬から9月末までは夏季休業です.
前半は帰省し,久しぶりの地元でのんびり過ごして,後半の9月は2週間ずつインターンに行かせていただきました.
また,帰省・インターン中に育てていたミントが枯れてしまいました.😭😭😭

notfounds.hatenablog.com

インターンでは,扱ったことない技術や普段見ることができないシステムの裏側を見ることができ,新鮮で非常に良い経験となりました.

秋AB

時系列に箇条書します(めんどくさくなった

・バレーの合宿 楽しかった,膝痛めた ・雙峰祭(学祭) お酒飲んだ,レポート ・配属 ・課題,レポート,課題,レポート ・就活 ・テスト ・就活 ・帰省

ざっとこんな感じでした.

現在

秋Cモジュールです.授業は週に3日7コマしかありません.
あと,希望の研究室(自然言語処理)に配属が決まり,来週からゼミ(?)っぽい活動が始まります.楽しみ😃

秋ABのところにチラッと書いていますが,現在就活をしています.
もともと,大学に進学を決めたとき,入学時点では院進することしか考えていなかったのですが,周りの友人や先輩の影響であったり,インターンシップ,自分のやりたいこと等を考えたときに「自分は研究するより,社会に出てコード書いている方が幸せなのかもしれない」と考え,就職も視野に入れています.(院進を完全に辞めたわけではないです.2019/1/10現在)

まだ,もう少しだけ時間があるので,研究室のゼミに参加したり就活を進めたりしながら,就職するか進学するかじっくり考えてみたいと思います.

さいごに

だらだらと薄っぺらい記事を書きましたが,現在の部分を書きたかっただけです.

P.S. 最近数学したい欲があり,現在は集合.測度をしています.そのうち,代数とか整数論したいです.