Oh脳《002》1年は365日!だから、体温も36.5℃?

コロナ禍の昨今、検温には気を遣う。
近所のファミレスでも、当たり前のように、検温計が設置されていたりして…
そして、本日も体温は「36.5℃」

f:id:shiorichannel:20210214141338j:plain
接触式体表温検知

1年は「365日」だから、体温も「36.5℃」というのは語呂がいい。😊

kenko.sawai.co.jp

ときに「1ドル=360円」という時代もあったりして…
円の中心角は「360度だから」これも語呂がいい!?😝

nichigopress.jp

《抜粋》なぜ360円かって? こんな話もあります。ドッジは、「円は丸、丸は360度だ」と。なので1ドル=360円とした、という一見、冗談のような話もあります。

…てな、取り留めもない今日のお話。

2021/02/14 15:16

Java.use(better, Scala); S4(E1) 15パズル

#Scalaの栞

Java.use(better, Scala); Season4(Episode1) 15パズル 

私たちの人生は

私たちが費やした努力だけの価値がある

François Mauriac - Wikipedia, the free encyclopedia

 

目的》同じアプリケーションを異なるプログラミング言語 Java/Jython/Scala で作成する過程(作譜:プログラミング)を通して、言語の違いに依らない手法(算譜:プログラム)を紹介します。

動機ともすると、プログラミング言語の違いに目を奪われて、プログラムの本質を見失いがちです。同じアプリケーションを異なるプログラミング言語で作成するのは、そこに意義があります。 

 

課題:15パズル

前回の「ファインダー」と違って、今回の「ゲーム」は実用的なツールではありませんが、興味深いプログラミングの話題を提供します。今回は、Java 版のゲームを、Scala で再構成する過程を紹介します。

f:id:shiorichannel:20210213132111p:plain

起動したアプリケーション

開け胡麻

対話形式で利用する

Scala を対話形式で利用するには、コマンド scala を実行します。すると、

$ scala
Welcome to Scala version 2.9.0.final (Java HotSpot(TM) Client VM, Java 1.5.0_13).
Type in expressions to have them evaluated.
Type :help for more information.

scala> 

数行のメッセージ(Scala/Java のバージョン情報などを含む)に続いて、利用者の入力を促すプロンプト記号 scala> が現れます。これに続いてコードの断片を入力すると、その動作を確認できます。

 

サブコマンド :help

出力されるメッセージの末尾には「:help を入力すると、詳しい情報が得られる」とあります。そこで、サブコマンド:help を入力します。

scala> :help
All commands can be abbreviated, e.g. :he instead of :help.
Those marked with a * have more detailed help, e.g. :help imports.

:cp                  add a jar or directory to the classpath
:help [command]            print this summary or command-specific help
:history [num]             show the history (optional num is commands to show)
:h?                search the history
:imports [name name ...]   show import history, identifying sources of names
:implicits [-v]            show the implicits in scope
:javap <path|class>        disassemble a file or class name
:keybindings               show how ctrl-[A-Z] and other keys are bound
:load                load and interpret a Scala file
:paste                     enter paste mode: all input up to ctrl-D compiled together
:power                     enable power user mode
:quit                      exit the interpreter
:replay                    reset execution and replay all previous commands
:sh          run a shell command (result is implicitly => List[String])
:silent                    disable/enable automatic printing of results
:type                display the type of an expression without evaluating it

各項目の詳細は後述するので、話を先に進めます。

2021/02/14 12:25

 

【変更履歴】

  • 初稿: 2012/12/18
  • 更新: 2013/12/10

♬《166》会いたい 〜 기다릴게

♬ 会いたい 〜 기다릴게

季節をいくつ 数えたのか    스쳐가는 계절과 멀어지는 기억
忘れなさいと 降る雪      아무렇지도 않게 겨울이 오고
あなたのことしか 見えてなくて 어쩌면 그때 난 그저, 원하기만 했던
自分だけ 見ていたの      철없던 어린 아이였단 걸

今ならきっと その悲しみを   이제서야 알았어, 네가 울고 있을 때
分けあえそうな 気がしてる   작은 위로의 말이 필요하단 걸
子供だったから あの頃は    어쩌면 그때 난 그저, 바람만 많던
遅すぎるね もう        너에겐 짐이였단 걸

ポケットで つないだ      마주잡은 너의 손을
その手の むくもり       따스하던 시간들을
今も 待っている 心のどこか  마음 속 어딘가에서 기다릴 지도 몰라
夢から 覚さめたら       눈을 뜰 때 마다 오는
いつもと 同じ朝        변함없는 나날들 속에
あなただけが いないの     다시 네가 없단 걸 알지만
会いたい            기다릴게

両手ひろげて 笑いあえる    손을 잡고 걷는 일, 함께 웃는 일.
雨もあがって 虹の橋      비가 개인 주말에 오후는 오고
やっとひとりでも 渡っていける 어쩌면 이제 난 혼자, 거릴 걸어야 하는
束ねた髪 解いて        서투르고 서투른 아인 걸
모리(Morrie) - 会いたい - YouTube

composed and lyrics by Morrie

lyrics (Japanese) by SHIORI

piano by Taegyun Kim

Invoking the Jython Interpreter

 Java/Python 導入ガイド #Jythonの栞

はじめに

 本著で紹介する内容を簡単に紹介します。次章から始まる本編の予告を兼ねているので、まず全体の雰囲気を楽しんでください。詳細に捕われず、分からないところは飛ばして先に進んでください。本編を読み返したときに「何が分からなかったかが分かる」瞬間が、いつか訪れるはずです。焦らずに自分のペースで、繰り返し段階的に学習することが大切です。 

 本著を最初から順に読む必要はありません。重複する記述が散在するのは「興味のあるテーマを拾い読みして、残りは後でじっくり学習したい」そんな読者に配慮したものです。アジャイル開発と同様に「短期的な成果が得られる達成感」と「長期的な展望が求められる充実感」とを使い分けながら、学習を進めてください。
 読者の手元には、Jython をダウンロードすると得られる、ドキュメント(Tutorial など)があることを想定しています。原則として、これらと重複する内容は割愛する代わりに、ドキュメントの行間を埋める情報を提供することを目指しています。
 活字になった情報は、その瞬間から進化するのを止めます。そのため、インターネットで最新情報が得られる学習環境には遠く及びません。賞味期限の長い情報を提供するように配慮しましたが、今この瞬間にも、本著の内容は古くなっているでしょう。逆にそれは、Jython が成長を続けている証でもあり、むしろ喜ばしい現象と受け取ってもらえたら幸いです。

 

Invoking the Jython Interpreter

Jython の特徴は、アプリケーションを実行中に、そのプログラムを変更できることです。つまり、アプリケーションを終了せずに、コードを変更できるのです。それを確認するために、前述したコードを次のように変更します。

 

from javax.swing import JFrame
from javax.swing import JLabel

def createAndShowGUI():
    global frame         # (@.@)
    frame = JFrame("HelloWorldSwing",
        defaultCloseOperation=JFrame.EXIT_ON_CLOSE,
        )
    label = JLabel("Hello World")
    frame.contentPane.add(label)
    frame.pack()
    frame.visible = True
    
frame = None

if __name__ == '__main__':
    createAndShowGUI()

大域変数 frame を利用して、作成したウィンドウを参照できるようにします。

 

% jython -i HelloWorldSwing.py

オプション -i を指定すると、対話モードでその動作を確認できます。

 

>>> dir()
['JFrame', 'JLabel', '__doc__', '__file__', '__name__', 'createAndShowGUI', 'frame']

組み込み関数 dir を利用すると、対話モードで参照できる名前の一覧が得られます。この中には、クラス JFrame/JLabel やメソッド createAndShowGUI の他に、大域変数 frame があります。そこで、この frame を介して、作成したウィンドウ JFrame の状態を更新します。

 

更新:ウィンドウ
>>> frame.size = 200,50

プロパティー .size に値を設定すると、ウィンドウの幅/高さが更新されます。

 

>>> frame.title = "(^_^)"   

プロパティー .title に値を設定すると、ウィンドウのタイトル(文字列)が更新されます。

 

更新:パネル
>>> panel = frame.contentPane
>>> panel
javax.swing.JPanel[null.contentPane,0,0,200x28,layout=javax.swing.JRootPane$1,alignmentX=0.0,
alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]

プロパティー .contentPane の値を参照すると、ウィンドウ内に配置したパネル JPanel が得られます。

 

>>> panel.components
array(java.awt.Component, [javax.swing.JLabel[,0,0,200x28,alignmentX=0.0,alignmentY=0.0,border=,
flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,
horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=Hello World,
verticalAlignment=CENTER,verticalTextPosition=CENTER]])

プロパティー .components の値を参照すると、パネル内に配置したコンポーネント群(配列 array の要素 Component)が得られます。そのひとつがラベル JLabel です。

 

更新:ラベル
>>> label = panel.components[0]    
>>> label
javax.swing.JLabel[,0,0,200x28,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,
maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,
horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=Hello,verticalAlignment=CENTER,
verticalTextPosition=CENTER]

プロパティー .components の要素を参照すると、パネル内に配置したラベル JLabel が得られます。

 

>>> label.text = "Happy"

プロパティー .text に値を設定すると、ラベルのテキスト(文字列)が更新されます。

 

2021/02/06 13:34

【変更履歴】 

  • 初稿: 2005/04/05
  • 更新: 2009/04/15

【変更履歴】

  • ver.1.0, 2001/03/02, Python 1.6
  • ver.1.1, 2003/05/25, Python 2.1.x 

Oh脳《001》2月2日は節分の日!?

なんと、今年〔2021年〕の節分は、2月2日になるそうな!?

 

今年の節分は124年ぶり2月2日に そのワケは…:朝日新聞デジタル

 

節分は「2月3日に決まってるでしょ」と思いきや…なのだそうで。しかも、124年ぶりというのは奇遇…というか、運が良いのか悪いのか。

 

そう言えば、ハレー彗星は約75.32年周期だから、巡り合わせが良くないと見られない。直近で観測されたのは1986年だそうだけど、日本からはほとんど観測できなかったそうで、運が良いのか悪いのか。

 

5分でわかるハレー彗星!次回はいつ?大きさや周期、軌道なども解説! | ホンシェルジュ

 

そして「閏年〔うるうどし〕」は4年ごとに…かと思えば、100で割れる年はうるう年でなく、400で割れる年はうるう年でなくない(つまり、うるう年)。西暦2000年がそうだったので、これは運が良かったのか。

 

一度きりの人生だもの。「コロナ禍」を経験できたのも見方を変えれば、運が良いのか悪いのか。

 

2021/02/05 16:55