投稿者: kuci

  • qnap(arm)でtomcat(vol2)

    前にqnap(arm)でtomcatという記事を書きましたが、後から見直しても何を書きたかったのかよく分からないのと、一応満足できて状態で動かすことができたので再度書いてみようと思います

    うちのQnapはTS-112でQTSは最新(といっても。。)にしています

    手順

    まずはQnap公式のAppStoreからJREを二つともインストール(どちらかで良いのかもしれませんが、そこは検証していません)

    JREのバージョンに合わせたapache-tomcatをhttps://archive.apache.org/dist/tomcat/からダウンロードします。(私の場合はTomcat8)

    展開してQnapへアップロードします。アップロードして展開でも同じですよね

    sshでQnapに接続します

    bin/catalina.sh

    を実行してエラーなく起動するか確認します

    tomcatがlocalhostならこれで使えるみたいですが、他のPCからアクセスするのとポート8080はQnapが使っているので追加の設定が必要になります

    ポートの変更はconf/server/xmlの8080を変更する

    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

    他のPCからアクセスできるようにするにはtomcatのwebapps/host-manager/META-INF/context.xmlとwebapps/manager/META-INF/context.xmlの修正

    allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
      ↓↓↓
    allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.10.*" /><!- 192.168.10.*からアクセスする-->

    conf/tomcat-users.xmlにmanager-guiのユーザーを追加する。

    <user username="USERNAME" password="PASSWORD" roles="manager-gui"/>

    Qnap起動時にTomcatも動かすにはQnapの設定でautorun.shを使ってtomcatのstartup.shを呼び出す

    Running Your Own Application at Startup – QNAPedia
    https://wiki.qnap.com/wiki/Running_Your_Own_Application_at_Startup

    参考サイト

    Raspberry PiにApache-Tomcatを入れてローカルサーバーをたてる|イワシ銀行
    https://note.com/python_beginner/n/na9eb267ce68b

    RaspberryPi に Tomcat をインストール #RaspberryPi – Qiita
    https://qiita.com/ekzemplaro/items/b6dd39daeb027227234d

    How to Install Apache Tomcat on Debian 11 (Step by Step)
    https://www.linuxtechi.com/how-to-install-apache-tomcat-on-debian/

    【Tomcat】他PCからのアクセス、アクセス制限 – アルパカノフン
    https://vist764.hatenablog.com/entry/2024/02/19/014447#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E5%88%B6%E9%99%90%E3%81%AE%E6%96%B9%E6%B3%95%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E9%85%8D%E7%BD%AE%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

    お金をかけずにサーバーの勉強をしよう – TomcatをGUIで管理する –
    https://subro.mokuren.ne.jp/0980.html

  • ネットブック(死語)にantixをインストールして日本語

    AcerのネットブックでAspire Oneというのがあったのですが、使わなくなって数年。日本語入力できてLibreOfficeが使えるモバイル環境が必要になり、手持ちの PCで使えそうなのでLinuxを入れて現役復帰してもらうことにしました

    OSは何でも良かったのですが、元々入っているWindowsはXPなのでそのまま使うのは気が引けてLinuxにすることにしたのですが、32ビット PCなので使えるOSが限られ、そのうちの一つがantix23.2でした

    1. USBメモリにLive版を入れてそれを使って起動
    2. インストールの言語は日本語にして、インストール後にhttp://ponzu840w.starfree.jp/blog/blog.html?id=00063 で示してあるスクリプトを実行
    3. LibreOfficeはパッケージマネージャーでそれっぽいのを入れて再起動したら日本語になりました

    ついでに二本指でスクロールの向きが逆なのでhttps://www.maketecheasier.com/reverse-mouse-scrolling-direction-in-ubuntu/に書かれてある内容を~/.Xmodmapに記入(なければ新規作成)しました

    ちょっと(結構)遅いのですが、一時的に使うだけなのでまぁいいかなと思います

  • jupyter lab(notebook)でipynbをpyで出力

    pythonの開発環境でブラウザだけで使えるので最近お世話になっているJupyter notebook, jupyter lab で最終的にpyを出力するのはメニューのexportでやるとして、ipynbからpyファイルを出力してそのpyファイルでバージョン管理をするときに、jupyter_lab_config.py(notebookの場合はjupyter_notebook_config.py)を編集する方法が簡単便利みたいだけど、to_api_pathのところでエラーが出たので、ネットに出ているサンプルを書き換えたメモ

    import io
    import os
    #from notebook.utils import to_api_path #to_api_pathのfromを書き換える
    from jupyter_server.utils import to_api_path
    
    _script_exporter = None
    
    def script_post_save(model, os_path, contents_manager, **kwargs):
        """convert notebooks to Python script after save with nbconvert
    
        replaces `ipython notebook --script`
        """
        from nbconvert.exporters.script import ScriptExporter
    
        if model['type'] != 'notebook':
            return
        # https://qiita.com/shiho_h/items/6f1dd3fb1b9136416ec6
        if model['last_modified'] - model['created'] < datetime.timedelta(seconds=1):
            return # 【追加】createとlast_modifiedの差が小さければ, 新規作成と判断してなにもしない
        global _script_exporter
        if _script_exporter is None:
            _script_exporter = ScriptExporter(parent=contents_manager)
        log = contents_manager.log
    
        base, ext = os.path.splitext(os_path)
        py_fname = base + '.py'
        script, resources = _script_exporter.from_filename(os_path)
        script_fname = base + resources.get('output_extension', '.txt')
    #    log.info("Saving script /%s", to_api_path(script_fname, contents_manager.root_dir))
        with io.open(script_fname, 'w', encoding='utf-8') as f:
            f.write(script)
    c.FileContentsManager.post_save_hook = script_post_save
    
    
    
    ## Python callable or importstring thereof
    #  See also: ContentsManager.pre_save_hook
    # c.FileContentsManager.pre_save_hook = None
    def scrub_output_pre_save(model, **kwargs):
        """scrub output before saving notebooks"""
        # only run on notebooks
        if model['type'] != 'notebook':
            return
        # only run on nbformat v4
        if model['content']['nbformat'] != 4:
            return
    
        for cell in model['content']['cells']:
            if cell['cell_type'] != 'code':
                continue
            cell['outputs'] = []
            cell['execution_count'] = None
    
    c.FileContentsManager.pre_save_hook = scrub_output_pre_save
    

  • fly.ioで苦労した話

    Herokuの無料枠がなくなって一年ぐらいになりますが、自分用のサービス(pythonのpyramidフレームワークを使って大昔に作ったもの)をとりあえずrenderに移したあと放置してたものを、再度fly.ioで動くようにしたときの事

    fly.io への登録からflyctl launch までは順調に(https://zenn.dev/hokawa/articles/65ddcd9974448c を参考に)。ローカルディレクトリにできたProcfileはherokuに使ったものをそのまま。flyctl deployってgitに関係なくアップロードするんですね。

    deployでファイルのアップロード後に泣かされたのは

    sqlalchemy.exc.NoSuchModuleError: Can’t load plugin: sqlalchemy.dialects:postgresが出る

    https://zenn.dev/3w36zj6/scraps/ebb3a8bf494aa4

    この内容を反映させるために、アプリの最初の方で

    os.environ['DATABASE_URL'] = os.environ["DATABASE_URL"].replace("postgres://", "postgresql://")

    を挿入

    もう一点、postgresqlのテーブル作成とデータ挿入をコードからではなく、fly postgres connect -a <postgresqlアプリ名>で接続してSQLを流し込んで行ったのですが、そのテーブルが見つかりません(relation does not exist)エラー

    http://【PostgreSQL】テーブルが存在するのにリレーション存在しません(relation does not exist)と表示される – buralog https://buralog.jp/postgresql-relation-does-not-exist-error/

    に書かれてる、大文字小文字やサーチパスは問題なかったのですが、

    fly.io postgres: relation “table_name” does not exist. の解決
    https://zenn.dev/yutorse/articles/0a7dfcef4b0d05

    の別のデータベースにテーブルを登録してしまっている。が該当したので、こちらのサイトにはflyctl proxy~なるコマンドが書かれてますが、ここはうまくいかなかったため、普通にfly postgres connectしたあとでpsqlのコマンド\c を使ってデータベースを切り替えたあとで再度SQLを流したところ、うまく動き出しました

    あ、あとはrequirement.txtでpsycopg2がうまく入れられなかったのでpsycopg2-binaryに変更したような気がします

  • Python Embeddable 準備メモ

    私の今の環境はWindowsなのでPythonEmbeddableが使えるようなので、準備メモ。あちこちのサイトに書かれてるのでそれでいいと思うのですけど

    • pythonのサイトからembeddable版をダウンロード https://www.python.org/downloads/windows/
    • zipファイルを展開
    • pipを使えるように
      • python~~.pthファイルを探して、
        #import site 行の#を削除
      • https://bootstrap.pypa.io/get-pip.py からダウンロードしたget-pip.pyを展開したディレクトリに保存
      • カレントディレクトリをここにしてコマンドプロンプトを開く
      • ./python.exe get-pip.pyと実行する(他のpythonで実行しないように./をつける)
    • PATHを通す
      set PATH=%~dp0Scripts;%~dp0;%PATH%
  • C27セレナでYoutube(USB,HDMI)

    自宅で使っていたGoogleChromeCastをGoogleTV付きのに変えたので、余ったChromeCastを車でYoutubeのために使おうと思います

    走行中のテレビキャンセルは納車時にディーラーオプションで済ませてあり、純正ナビにHDMIのケーブルをつなげるディーラーオプションもあるのですが、ディーラーに聞いたところ部品込み2万円との事。いやいやそれはちょっと出せないので、自分で作業しました。スマホを直接つなぐつもりはないので標準HDMI端子だけでいいのです

    使ったケーブルは

    (機種別取説付)カーナビ用HDMI Eタイプ雄-Aタイプ雌 トヨタ ホンダ 日産純正ナビNSZT-Y68T Y66T W68T Z68T Y64T VXM-217 227 VFNi 187 185 VFNi VFEi jusby :1999964:ジャスビー – 通販 – Yahoo!ショッピング
    https://store.shopping.yahoo.co.jp/jusby-auto/1999964.html

    日産 純正カーナビ 互換USBケーブル ノート セレナ キックス デイズ他 MM521D-L MM520D-L MM320D-L MJ320 MJ120 519 318 118 MM518D MM317 MJ117 :J-nissan-usb:ジャスビー – 通販 – Yahoo!ショッピング
    https://store.shopping.yahoo.co.jp/jusby-auto/j-nissan-usb.html

    の二種類です

    作業するために調べた事前の情報は

    C27 純正ナビHDMI入力(ケーブル社外品)(日産 セレナ e-POWER・C27)by bousaiyasan – みんカラ
    https://minkara.carview.co.jp/userid/2708673/car/2286337/3999003/note.aspx

    車用埋め込み型USB充電2ポート|穴開け〜取り付けレポート
    https://tatsu8.jp/rasuto/souko/USB-car/Power.html

    アッパーボックス内にHDMI・USBポートの取り付け(日産 セレナ e-POWER・C27)by kota.u – みんカラ
    https://minkara.carview.co.jp/userid/2552367/car/3121354/6455284/note.aspx

    https://www-small-car-mechanic.com/wp-content/uploads/2019/10/img_4587-768×1024.jpg

    https://minkara.carview.co.jp/userid/3388566/car/3162172/6539345/note.aspx

    これらの資料を見ててもスムーズにできなかった点は、一番最初のパネルをはずすところ。テープを貼って引っ張る!を何度も何度もやったのですがさっぱり駄目。結局爪の場所を確認して内張り剥がしでパネルを外しました。ナビにHDMIケーブルとUSBケーブルを差して、助手席側のアッパーボックスなどを外して、アッパーボックス内にケーブルが出てくるように、アッパーボックス上にリーマーで穴を開けて、ケーブルを通したグロメットを嵌めて、アッパーボックスでChromeCastにHDMIとUSBを繋いで完成

    一番最後に全部もとに戻して車を動かそうとしたらエラー!。ディーラーに連絡してください。と、これは作業中にバッテリーが減ったことによるものだったようで、ディーラーの指示どおりバッテリーを充電したら直りました。

    今は快適にYoutubeなど見てます。助手席と後部座席の人たちは快適みたいです

    カロッツェリア車種別JUST FIT
    https://justfit.carrozzeria.pioneer/disasm/NS0003210_201608-201907#

    【C27】助手席アッパーボックス・グローブボックスの取り外し方法①(日産 セレナハイブリッド・C27)by tacoma@ひさし – みんカラ
    https://minkara.carview.co.jp/userid/177799/car/2279351/3982292/note.aspx

  • 無垢床のオイル塗装

    いよいよ床にオイルを塗ったときの事を書きます

    こちらの記事に準拠→ 無垢フローリングにオイル塗装をする | 99% DIY -DIYブログ-

    最初に必要なのは塗装面にサンダーをかけること。このために購入したのはDEKOのランダムサンダーです。最初力を入れて使って暴れて困っていましたが、正しくは力を入れずに使うようですね。


    前も書きましたが、たっぷり塗ってしまうのは厳禁。スポンジにたっぷり吸い込ませてしまった時は塗る前にしっかり扱(しご)いてから!厚く塗っても乾燥に時間がかかったりベタついたりでいいことありません

    今回2度塗り目の一部の拭き取りが甘かったので、個人的にはちょっともやもやした仕上がりになってしまいましたが、時間切れなので終了としました

    最後に使った量についてですが、今回塗った範囲は20m2で、ユーロオイルクリアは2回塗りで10m2/Lのため、2回塗りで2L必要となるのですが、お得と言っても大量に余らせるわけにもいかず、100ml/0.7L/3.5L/14Lのラインナップだったため0.7Lを3缶購入しました。

    結果として自分の場合は1缶とちょっとで2度塗り終わりました。思っていた半分で済んだということですね

    次回までしっかり蓋をして保存しておきます

  • コテバケの代用品

    前回の続き、

    化学物質は苦手なので、自然塗料の中から選ぼうとあれこれ調べたのですがAURO(アウロ)はサンプルの匂いが強くてちょっと受け入れ難いと感じたので今回はパス、オスモカラーのフロアークリアーとも思ったのですが薄塗りが難しいという情報もありで、今回はユーロオイルクリヤーを使うことに。


    使い方はPDFに書いてあるとおりに。

    塗装に使う道具にコテバケというのがあるそうで、これがいいらしいのですが、ちょっとお安いのが無いかなと調べたところ、↓↓のページを発見

    【100均】コテバケの代用品を見つけた|ウッドデッキのメンテナンス | ちばいえ
    https://chibaie.com/kotebake-daiyo/

    ダイソーで同じ商品を探してみたのですが全然見つからず。ホームセンターで本物のコテバケを購入すればいいのですが、要するにオイルを薄く塗り拡げられればよいわけなので、ダイソーで目的に合いそうなものを探しました

    塗布する面はスポンジがいいのかな、手が汚れないように取っ手付きがいいかな

    で、最初に見つけたのはこちら 首振りバススポンジ

    こちらいい感じに使っていたのですが、(接着が弱いのか塗料との相性なのかわかりませんが)途中でスポンジと取手が別れてしまいました。

    そんな状態で一度目の塗りは終了。二度目のために別のコテバケ代用品を探しに再度ダイソー(前回とは別の店舗)へ

    次に見つけたのは、2wayガラスワイパー

    これも良かったのですが、2度塗り目だったことや、首振りバススポンジと一緒に購入したペインティングトレー 小を続けて使ったので、スポンジについた余分なオイルを十分にしごくことができなかったり、外出予定があり焦って拭き取りが不十分だったため、最終的な仕上がりとしては不満が残るものとなりました。(ガラスワイパーのワイパー部をうまく使えばよかったのかも、、後悔先に立たず)

    とにかく大事なのは厚く塗らない!!!!バタバタと焦って作業しない!!!ですね

    ある程度乾いてくるといい感じになってきたのですが

    今更考えると、単純にダイソーの塗装用ローラーを、回らないようにして使ってもよかったのかもなと

  • AURO128のコスパ

    ある時、自宅の無垢材廊下で拭き掃除しても取れない汚れが多いのが気になり、それ以来いろいろ調べてます
    調べてる中で

    自然塗料 AURO(アウロ) Nr.128 : ツーインワンオイルワックス-紹介
    https://www.auro.co.jp/item_page/auro128.html

    1回塗りで済むし、割安そうなのでこれがいいかなぁと思っていたのですが、改めて計算してみたら、計算が合わないので、記録

    AURO128の最大容量の価格は2.5L入で41005円(税込)=37278円(税抜)
    1L当たりの塗布面積は約33㎡
    材料費の目安は約370円/㎡

    税抜きで計算してみます

    2.5Lで37278円ということは、1L当たりの価格は、37278円÷2.5で14911円

    1Lで33㎡で1Lで14911円なので、14911/33=451.8円(税抜)/㎡

    税込みだと497円/㎡!!!(41005÷2.5÷33)

    公式サイトには370円/㎡

    どういう計算で370円/㎡になるんだろ

  • Mac(Monterey)からOpenVPN越えIPP

    MacからVPNの向こうにあるQnapTS-112(QTS4.3.3.1945)に接続したUSBプリンタで印刷したい

    • QTS5以上でUSBプリンタはサポートされなくなった
    • VPN経由でBonjourは対応していない

    で、「プリンタを追加」画面のIPタブではどのように指定してもTS-112に接続できないので、諦めかけていたのですが、ちゃんと接続でき印刷できました

    解決策は↓↓

    macOS Catalina 環境からのIPP印刷の設定方法 – プリンタ – 印刷・複合機 – ECCS hacks – ECCS Tutor’s page
    https://www.sodan.ecc.u-tokyo.ac.jp/hack/ipp-printing-on-catalina/

    つまり、「プリンタを追加」画面の上部ツールバーで右クリックし、ツールバーをカスタマイズを選んで、「詳細」(2つの歯車アイコン)を表示する。詳細をクリックして検索中を表示後の画面に種類、装置、URLを入力して完了

    次にNASを買うならQNAPのは候補から忘れず外さなきゃ