時計はなぜ「12」から始まるの?

時計を眺めていた時、ふと時計の表記は12進数を使ってるけど 12 から始まるのは変だなぁと思いました。

目覚まし時計のイラスト

時計は「12」を頂点に右回りに1から11までの文字が並んでいますが時間の表記が12進数をつかっている理由と12が頂点になっていることについて調べてみました。

n進数について

n進数とはn種類の数を用いて数を表現するやりかたで
例えば、10進法は0,1,2,3,4,5,6,7,8,9の10種類の数を用いており
9のつぎは桁が繰り上がり10となります
2進法は0,1の2種類の数を用いており
1の次は桁が繰り上がり10となります

以上のことより二つの法則がわかります
・0から始まる
・nの数で繰り上がる

このn進数を使うことで膨大な数を表したり数を一定のまとまりで把握することができます
これを先ほどの時間に当てはめると

午前午後にわけて12等分した数で表せる為、
0 ~ 11の12進数で構成されています

しかし時計は「12」が頂点になっており「0」は表記されていません
なぜでしょうか

時計が「0」の表記がない理由

諸説ありますが時間と数学の歴史が時間的にズレているの起因だと言われております。時間の概念が生まれたのは紀元前15世紀頃のバビロニア人だと言われております。
バビロニアの人々は太陽の日の出の際見え始めから完全に見えるまでの時間を基本単位と定め、太陽が沈むまでにこの基本単位がどれくらい繰り返すか数え720回で太陽が沈むことに気づきました。そこから様々な方法をつかい、年と日を12進数法で時間と分を60進法で表すようにしました。

次に「0」が発見された時期ですが8世紀のインドだと言われております。
つまり「0」が発見される前から時間の概念は存在しておりさらに時計も存在していました。「0」の代わりに「12」を使っていたとのことです。
その時点で浸透した為、修正せず現代まで受け継いでいるのが理由とのことです。

時計が紀元前から存在していたこととこれだけの時代をたっても形が変わっていないこと
なんかロマンを感じますね

Amazonセールでゲット!意外とよかったアレクサ

毎年11月、Amazonは「Amazonブラックフライデー」というセールを開催しており、このセール期間中、Amazon自社製品が特にお得な価格で提供されます。私はこれまでアレクサにあまり興味がありませんでしたが、アレクサデバイスの1つ「Echo Pop」が1,980円(定価5,980円)というお手頃な価格で販売されているのを見て、購入してみました。

初めは、「アレクサ、本当に役立つのかな?」と少し疑問に思っていましたが、実際に使ってみると、その便利さに驚かされました。特に注目したいのは、アレクサとスマートリモコン(別売り機器)を組み合わせることで、家電を音声で操作できるようになる点です。これまでは電気やエアコンをそれぞれのリモコンで操作していましたが、「アレクサ、電気とエアコンをつけて」と一言で両方を操作できるようになりました。家事の最中など手が塞がってるときに声で操作できるのは非常に便利です。

またアレクサには、特定のフレーズを呼びかけてアレクサに実行してほしい動作を登録する「定型アクション」という機能があります。
これを使うと友人のプライベートな情報、例えば「アレクサ、太郎君について教えて」という音声指示に対し、「太郎君は大阪市在住で三人兄弟の末っ子、遅刻癖があり時間にルーズです」というような返答を設定すると、太郎君が訪れた際に、「え、なんでこんなことまで知ってるの??」とアレクサを使ってちょっとしたサプライズができるのも面白いです。

さらに、アレクサにはオリジナルソングが多数存在します。「アレクサ、歌って」と呼びかけることでいろんな曲を披露してくれたり、「アレクサ、大好き」と伝えると、「大好きって言ってくれてありがとう」と感謝のラブソングを歌ってくれるのも、とても可愛らしく感じます。相手は機械なのに愛着が湧いてくるのがアレクサの良いとこです。

まとめると、単に音楽を聴くだけではなく、アレクサは実用性に加えてエンタメ要素もあるので想像以上に多くのシーンで活用できます。Amazonのセール時には特にお得に手に入るので、興味がある方は是非試してみてください。

cssの:has()疑似クラスの使い方

2023年12月、cssの:has()疑似クラスがすべてのブラウザでサポートされました。
:has()の使い方を改めて確認してみようと思います。

:has()とは

CSSの :has() とは、特定の子要素や子孫要素を持つ要素を選択するために使用されます。
これは「親要素が特定の条件を満たす子要素を持っている場合に、その親要素をスタイルする」ということです。
別の言い方をすると、「もし中に〇〇がある場合…」という条件を表します。

まずは基本的な使い方

下記の例は.contentsの子要素に「.contents-img」がある場合のみスタイルを適用することができます。
この例であれば、画像があれば背景をグレーにします。コンテンツ1は画像があるので背景はグレーになり、コンテンツ2は画像がないので変化はありません。

.contents:has(.contents-img) {
  background-color: #ddd;
}

See the Pen has_01 by naoto saito (@code_ns) on CodePen.

下記のように「.contents-img」のクラス名ではなくimgタグがある場合の時という指定もできます。

.contents:has(img) {
  background-color: #ddd;
}

See the Pen has_02 by naoto saito (@code_ns) on CodePen.

:hoverや:focusなどと組み合わせる

中の要素がhoverした時やinputにfocusした時にのみスタイルを適用することができます。
下記はボタンにhoverした時、inputにfocusした時のみ「.contents」のスタイルが変わります。

.contents:has( button:hover ) {
  box-shadow: 0px 2px 47px -14px #777777;
}

.contents:has( input:focus ) {
  outline: 2px solid #00f;
}

See the Pen has_04 by naoto saito (@code_ns) on CodePen.

:notとの組み合わせ

否定擬似クラスの「:not()」と組み合わせることができます。
下記の例は、画像がない場合背景がグレーになります。

.contents:not(:has(.contents-img)) {
  background-color: #ddd;
}

See the Pen has_01 by naoto saito (@code_ns) on CodePen.

直下セレクタとの組み合わせ

下記のように直下セレクタと組み合わせることができます。

.contents:has( > .contents-text ) {
  background-color: #ddd;
}

See the Pen has_06 by naoto saito (@code_ns) on CodePen.

独自データ属性との組み合わせ

下記のように独自データ属性と組み合わせることができます。

.contents:has( .contents-title[data-a="hoge"] ) {
  background-color: #ddd;
}

See the Pen has_06 by naoto saito (@code_ns) on CodePen.

いかがでしょうか?
cssの:has()疑似クラスの使い方を確認しました。意外と柔軟に色々なことと組み合わせができますね!
今までjsを使わないと選択できなかった親要素が、今回のhas()を使うことで対応できるので今後どんどん利用しようと思います。

[Solr] Circuit Breaker の新機能

Solr 9.4 で Circuit Breaker にいろいろと変更が加えられました。以前の記事で取り上げたときとは変わったところも多いです。

  • CPUCircuitBreakerが名前の通りCPU使用率をチェックするようになりました。以前はCPUと言いつつ実際にはロードアベレージをチェックしていました
  • ロードアベレージをチェックする Circuit Breaker は LoadAverageCircuitBreaker になりました
  • 検索リクエストだけでなく更新リクエストにも効くようになりました

これらの変更に伴い設定方法が変更になっています。

CPUCircuitBreaker

クラス名と閾値を指定します。たとえば以下のように指定すると、CPU使用率75%を超えたら発動します。

<circuitBreaker class="org.apache.solr.util.circuitbreaker.CPUCircuitBreaker">
 <double  name="threshold">75</double>
</circuitBreake>

LoadAverageCircuitBreaker

クラス名と閾値を指定します。たとえば以下のように指定すると、ロードアベレージ8.0を超えたら発動します。

<circuitBreaker class="org.apache.solr.util.circuitbreaker.LoadAverageCircuitBreaker">
 <double  name="threshold">8.0</double>
</circuitBreaker>

MemoryCircuitBreaker

クラス名と閾値を指定します。たとえば以下のように指定するとメモリ使用率75%を超えたら発動します。

<circuitBreaker class="org.apache.solr.util.circuitbreaker.MemoryCircuitBreaker">
 <double name="threshold">75</double>
</circuitBreaker>

リクエストタイプの指定

リクエストタイプとして search, update を指定できます。上記の例のようにリクエストタイプをしない場合はデフォルトとして search が指定されたことになります。search, update それぞれに別の閾値を設定することもできます。

以下の例の場合、CPU使用率が80%を超えたら更新リクエストの受付を停止し、95%を超えたら検索リクエストを停止するという設定になります。

<config>
  <circuitBreaker class="solr.CPUCircuitBreaker">
   <double  name="threshold">80</double>
   <arr name="requestTypes">
     <str>update</str>
   </arr>
  </circuitBreaker>

  <circuitBreaker class="solr.CPUCircuitBreaker">
   <double  name="threshold">95</double>
   <arr name="requestTypes">
     <str>query</str>
   </arr>
  </circuitBreaker>
</config>

続 梅体験専門店「蝶矢」に行ってみた

以前に投稿したブログの中で、特別な梅酒と名高い「蝶矢 限定熟成」をついに開封したのでレポしていこうと思います。
梅体験専門店「蝶矢」に行ってみた

蝶矢 限定熟成開封の儀

  

かっこいい見た目。。
ぱっと見、色もかなり濃くて凝縮されている感と、何かで割らないと体温が一気に上がってしまいそうなくらい色々濃い。
実際に飲んでみたところ、見た目通りの印象。
割らずに飲むと激濃でした!
危険を察知しソーダ割りに変更したのですが、香りもよくて梅感たっぷりで美味しかったです。
プレミアム感も相まってほわほわでした。

そんな蝶矢 限定熟成のお供はお米でした。
この日は青天の霹靂というお米。
甘くて美味しいし、レトルトパックで売っているのも衝撃。

今日紹介した蝶矢 限定熟成は、梅体験専門店蝶矢の京都店と鎌倉店で購入できますよ〜。
各店舗1日限定5本の販売みたいです。
購入した日からそろそろ1年なのでまた行かねば。。
https://choyaume.jp/