BLOGTIMES
«Prev || 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 ·... | | Next»
2019/09/25

CentOS 8 がリリースに

centos8 

ついに CentOS 8(1905) がリリースになりました。

ローリングリリース対応の CentOS Streams がリリースされたのも大きな目玉になっています。
RHEL は枯れているのが特徴ですが、中身が古すぎるという場合も多いので、これがどのように解決されるのか楽しみです。

早速セットアップしましたが、yum が dnf になったとか、iptables が nftables になったりといろいろと変更点があるので、いろいろと馴れが必要そうです。


    at 12:59 |
    2019/09/24

    bat を遅延環境変数を使わないように書き換える

    bat 

    Windows の bat には遅延環境変数というハマりやすい機能があります。

    bat では環境変数はその行に入ったときに即時に展開されるという性質があり、IF や FOR などの括弧内は1行と見なされるので、特に FOR ループの中で環境変数を変更しようとしたりすると、うまく変数が更新されないということが起きたりします。これを解決するために用意されているのが遅延環境変数(enabledelayedexpansion)です。

    例えば複数のファイルを bat ファイルにドラッグアンドドロップして、そのファイルを1つずつ処理したいという場合には for を使って以下のように書くことができますが、enabledelayedexpansion を書き忘れたりとか変数の展開に % と ! の使い分けが必要だったりとか、いろいろと面倒です。

    @echo off cd /d %~dp0 setlocal enabledelayedexpansion for %%f in (%*) do ( set old=%%~dpnxf set new=!old:AAA=BBB! echo old: !old! echo new name: !new! ) endlocal pause exit /b 0

    例えばこの bat に3つのファイル(AAA.txt, AAA2.txt, AAA3.txt)をドラッグアンドドロップすると以下のようになります。
    (パス内の AAA を BBB に置換して出力)

    old: C:\Path\to\AAA.txt new name: C:\Path\to\BBB.txt old: C:\Path\to\AAA2.txt new name: C:\Path\to\BBB2.txt old: C:\Path\to\AAA3.txt new name: C:\Path\to\BBB3.txt Press any key to continue . . .

    これを enabledelayedexpansion を使わないで書き直せないかと思って試行錯誤してみたところ、サブルーチンを使うと上手く書けることがわかりました。例えば先ほどの処理と同じものは以下のように書けます。サブルーチンは for の行内とはみなされないので、enabledelayedexpansion がなくてもちゃんと変数展開されます。

    @echo off cd /d %~dp0 for %%f in (%*) do ( call :internal "%%~dpnxf" ) pause exit /b 0 :::実際の処理はこっちに書く :internal set old=%~1 set new=%old:AAA=BBB% echo old: %old% echo new name: %new% exit /b 0

    毎回ハマっている気がするので、今度からはこれをひな形にすることにしましょうかね。


      at 23:18 |
      2019/09/24

      自分のグローバル IP を調べるには checkip.amazonaws.com が便利

      aws 

      NAT を使って組織内はプライベート IP でシステムを運用しているような場合に、自分が使っているグローバル IP アドレスが知りたい時があります。
      そんなときに便利なのが、AWS が提供している https://checkip.amazonaws.com/

      類似のサービスはたくさんありますが、サービスの安定度としてはピカイチです。これについてはAWS に公式なドキュメントがないか探してみたのですが、AWS のサービスのドキュメントの節々に以下のような感じで記載されているのみで、独立したドキュメントは提供されていないようです。

      Amazon EC2 のセキュリティグループの作成、設定、および削除 - AWS Command Line Interface

      当社では、パブリック IP アドレスを調べることができるサービス (https://checkip.amazonaws.com/) を提供しています。


        at 21:31 |
        2019/09/23

        あきたこまちの美しき新米

        akita  rice 
        おかげさん - あきたこまちの美しき新米粒の揃った新米 - あきたこまちの美しき新米

        今年も秋田でとある米農家のところに立ち寄ったのですが、あきたこまちの新米をいただいてしまいました。

        ウチは自分で耕作はしていませんが、自分の土地で採れたコメを食べているので、普通のコメがどういうものなのかというのは良く知っていますし、普段からそれなりの品質のコメを食べています。ところが、昨年、いただいたコメを炊いたときに変色した粒*1が全く入っていないのにも驚きましたが、炊きあがりの美しさがまた別格でした。

        ちょうど良いので1年越しにその疑問をぶつけてみたところ、やはりきちんと大きさが揃えてあるそうなんですね。
        さすが料亭御用達だけのことはあります。今日の晩飯はご飯と味噌汁だけで十分でした。


        at 18:58 |
        2019/09/23

        秋田といえば

        akita 
        なまはげ - 秋田といえば秋田犬 - 秋田といえば

        秋田駅の改札を出ると大きななまはげのお面と、秋田犬の大きな人形が迎えてくれます。

        偏見かもしれませんが、秋田というと男鹿のなまはげ秋田犬きりたんぽあきたこまち稲庭うどん比内地鶏という感じですが、そのうちのわかりやすい2つ(というか、たべられないもの)だけ並べたという感じでしょうか。


          at 12:46 |
          2019/09/22

          片道でも、往復でもないきっぷ

          railways 
          連続乗車券 - 片道でも、往復でもないきっぷ

          これから秋田に行きますが、今日はちょっと珍しいきっぷを使います。
          というか、一度買ってみたかっただけなんですけれども。

          これは連続乗車券

          このきっぷは連続と書いてあるとおり、連続乗車券と呼ばれるもので、片道でも、往復でもないきっぷ。わかりやすく言えば繋がっている2枚の片道きっぷ(残念ながら3枚以上のものは発行できません)です。

          だったら2枚を別々に買っても一緒じゃないかと思うかもしれません。実際問題として料金も変わらないのですが、大きな変化があるのは有効期限です。見て分かる通り、この切符は 9/15 ~ 9/29 の実に 15 日間も有効です。なんでこんなことが起るかというと、1枚目と2枚目の有効期限が単純に合算されるからなんですね。

          以前、小松の航空祭に行くのに東京から東京への切符というのをやりましたが、これは普通の片道きっぷでした。今回は今週のことを見越して、大宮で折り返して秋田までという切符にしてみたというわけです。切符は後戻りしなければ、途中から残りを使う(途中下車)ができるので、先週は大宮で一旦下車して、Suica を使って家に帰りました。今日はその続きの大宮からスタートというわけです。秋田からの帰りは、新幹線を使うとなると、どうしても同じ経路を戻るしかないので、これが連続の2枚目の経路になっています。

          乗車区間が1周を超える場合または乗車区間が重なる場合の運賃:JR東日本

          乗車区間が1周してさらに超える場合、または、乗車区間の一部が重なる場合は、営業キロ、換算キロまたは運賃計算キロは1周となる駅または重なる駅で打ち切って計算します。このような場合は片道乗車券ではなく連続乗車券となります。この場合の有効期間はそれぞれの区間の営業キロに応じた有効期間を合算したものとなります。


            at 10:38 |

            ファンが壊れた

            PCパーツ  networking 
            壊れたファン - ファンが壊れた

            スイッチを入れているボックスについている換気用のファンが壊れたので朝から交換をしていました。
            真夏の時期の休暇中とかに故障しなくて助かりました。

            このファンは PC のケースについている 120mm ファンと同じように見えますが、100V で回すものなので、フレームも金属でできており、PC 用のファンと風量は比べものになりません。それなりに風切り音がするものなのですが、ファンの音がしないのでおかしいなと思って調べて見たところ、羽根が外れているとは思いませんでした。よく観察してみるとベアリングの部分が焼き付いてしまったようで、軸の部分が焦げているのがわかります。

            やはり怪しいメーカーのものはダメだということで、冷却ファンとしては老舗の 山洋電気 San Ace 120 ACファン 109S086*1に付け替えです。


            at 08:45 |
            2019/09/21

            Python で cron のように定期的にメソッドを実行する

            python 

            Python で cron のように特定の時刻にメソッドを実行する方法が欲しかったので調べてみました。
            Java だと Quartz のようなライブラリがありますが、Python では APScheduler を使うのが一般的なようです。

            セットアップ

            ライブラリのインストールは pip で一撃なので、簡単です。

            pip install apscheduler

            サンプルプログラム

            NICT のインターネット時刻供給サービスRequests 使って1分ごと( cron の定義だと「* * * * *」)に取得するというプログラムを書いてみました。
            僕は cron に慣れているので、こういうライブラリも cron 表記ができる方が好みです。

            schedulersample.py

            #!/usr/bin/env python from logging import INFO, WARNING, basicConfig, getLogger import requests from apscheduler.schedulers.blocking import BlockingScheduler from apscheduler.triggers.cron import CronTrigger CRONTAB = '* * * * *' URL = 'http://ntp-a1.nict.go.jp/cgi-bin/time' def jobFunc(): response = requests.get(URL) logger.info("Response: %s" % (response.text)) if __name__ == "__main__": basicConfig(level=INFO, datefmt='%Y-%m-%d %H:%M:%S',format="%(asctime)s [%(levelname)s] %(filename)s:%(lineno)d - %(name)s - %(message)s") getLogger('apscheduler').setLevel(WARNING) logger = getLogger(__name__) logger.info("Program Started!") sched = BlockingScheduler() logger.info("CronTrigger: %s" % CRONTAB) sched.add_job(jobFunc, CronTrigger.from_crontab(CRONTAB)) logger.info("Scheduler Started!") sched.start()

            実際に起動してみると、以下のような感じで1分ごとに定期的にメソッドが実行されていることが分かります。

            2019-09-21 18:20:41 [INFO] schedulersample.py:19 - __main__ - Program Started! 2019-09-21 18:20:42 [INFO] schedulersample.py:22 - __main__ - CronTrigger: * * * * * 2019-09-21 18:20:42 [INFO] schedulersample.py:25 - __main__ - Scheduler Started! 2019-09-21 18:21:00 [INFO] schedulersample.py:13 - __main__ - Response: Sat Sep 21 18:20:59 2019 JST 2019-09-21 18:22:00 [INFO] schedulersample.py:13 - __main__ - Response: Sat Sep 21 18:21:59 2019 JST 2019-09-21 18:23:00 [INFO] schedulersample.py:13 - __main__ - Response: Sat Sep 21 18:22:59 2019 JST 2019-09-21 18:24:00 [INFO] schedulersample.py:13 - __main__ - Response: Sat Sep 21 18:23:59 2019 JST ・・・・・・

              at 18:47 |

              iOS 13 にアップデート

              ios  iphone7 
              iOS 13 Update - iOS 13 にアップデート

              iOS 13*1がリリースされたようなのでさっそくアップデートしてみました。

              すぐに気づく新機能はダークモードくらいですが、一般の開発者に NFC の読み書きが開放されたようなので、今後 Android 並みにこれらを活用したアプリが揃ってくると思われます。


              at 14:39 |
              2019/09/20

              MS がターミナル向けのフォント Cascadia Code を公開

              font  programming 
              CascadiaCode - MS がターミナル向けのフォント Cascadia Code を公開

              MS が Cascadia Code というターミナルやプログラミング向けのフォントを公開していたのでメモ。

              この手のフォントとして重要な要素である 0Oo(ゼロ、大文字オー、小文字オー) 1Il(イチ、大文字アイ、小文字エル)についてはバッチリ見分けができるデザインですね。

              また、他のフォントにない特徴としては、合字(Ligature)の機能を使って特定の文字の組み合わせを打つと1文字のように表示されるようになっています。日本人としては2バイト文字の→とかと見分けがつきづらいので、国内では素晴らしいかどうかは賛否が分かれそうです。

              参考


                at 21:19 |
                «Prev || 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 ·... | | Next»