R, Python, DB 備忘録

データベースとか、jupyter(Python)、Rとか色々

VirtualBoxでUSBからブートする

何度もやっているのにいつも忘れてしまう。
設定しなければいけないことは次の3つ。

  1. Extension Packの導入
  2. vboxusersグループにユーザーを追加
    • sudo gpasswd -a USERNAME vboxusers
  3. EFIの有効化
    • Settings - System - Extended Features (Motherboard)

エクセルのセル入力時、1文字目が勝手に確定されてしまう

現象

Excelのセルに入力するとき、「ふぁいる」と入力したつもりが「fあいる」となったり、「ようせい」と入力したつもりが「yおうせい」となる非常に鬱陶しい現象。

原因

外部データ接続を構成しているブックにおいて発生。
「クエリと接続」のクエリのどれかを選択している状態で「クエリと接続」を閉じると発生するとのこと。

解決策

「クエリと接続」で何もないところをクリックして、何も選択されていない状態にしてから「クエリと接続」を閉じる。
上の画像は選択されている状態。下の画像は選択されていない状態。

f:id:shipapa15:20210427192009p:plain
"world"が選択されている。
f:id:shipapa15:20210427192103p:plain
"world"が選択されていない(薄い緑になっている)

なお、「クエリと接続」は「データ」タブにあります。

Canon LBP3000をUbuntuで使う

自宅PCをWindowsからUbuntu(正確には lubuntu)にしてしばらく経ちますが、プリンタの設定だけがうまくいってなくて、印刷したいときはデュアルブートWindowsを立ち上げるという苦行をやっていました。
プリンタが認識はされるものの、ccp send_data errorっていうのが出てしまうんですよね。

しかしまあ、探してみれば先駆者はいるもので、端的に言えば 32bit用のライブラリがないと動かない ということのようです。

ドライバ・マニュアルのダウンロード

CanonのWebサイトからドライバーをダウンロードしてきます。
LBP3000 OS選択|キヤノン

プリンタの設定

ダウンロードしたファイルを解凍するとDocフォルダにインストールマニュアルが同梱されています。
下記の手順はそのマニュアルに則ったものです。

rootでログイン

$ sudo su

CUPSドライバ共通モジュールのインストール

# cd 64-bit_Driver/Debian
# dpkg -i cndrvcups-common_x.xx-x_amd64.deb
! 各モジュールのバージョンを「x.xx-x」と記載しています。

プリンタドライバモジュールのインストール

# dpkg -i cndrvcups-capt_x.xx-x_amd64.deb

CUPSの再起動

# /etc/init.d/cups restart

プリントスプーラにプリンタ(PPD)を登録

# /usr/sbin/lpadmin -p [プリンタ名] -P [PPDファイル名(絶対パス)] -v ccp://localhost:59687 -E
# /usr/sbin/lpadmin -p LBP3000 -P /usr/share/cups/model/CNCUPSLBP3000CAPTJ.ppd -v ccp://localhost:59687 -E
  • 登録を間違えたときは、以下のいずれかの方法で誤って登録したプリンタを削除すること
    • プリンタ設定(Preferences - Printers)から該当のプリンタを削除
    • CUPSサービス画面(http://localhost:631)から該当のプリンタを削除
(2021/12/5追記)登録するプリンタ名に関する留意事項
  • プリンタをUSBに接続すると、自動的に認識されてプリンタが登録されますが、このプリンタを削除してはならない。
    • この自動的に登録されたプリンタ名が「LBP3000」だとして、それは無視して新しいプリンタ名(「MyLBP3000」等)を付けて先を進める。
    • 「LBP3000」を消して、同じ名前で先の手順を進めるとうまくゆかない。

ccpdデーモンの設定ファイルにプリンタを登録

# /usr/sbin/ccpdadmin -p [プリンタ名] -o [プリンタデバイスパス]
# /usr/sbin/ccpdadmin -p LBP3000 -o /dev/usb/lp*
! *は0〜4。適宜確認
  • 登録を間違えたときは、以下コマンドで誤って登録したプリンタを削除すること
# /usr/sbin/ccpdadmin -x [削除するプリンタ名]

ccpdデーモンを起動

# /etc/init.d/ccpd start

32bitライブラリの導入

以下のコマンドを打てば32bitライブラリが入ります。

$ sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install libatk1.0-0:i386 libcairo2:i386 libgtk2.0-0:i386 libpango1.0-0:i386 libstdc++6:i386 libxml2:i386 libpopt0:i386

サービスを再起動

  • あとはCUPSサービス画面(http://localhost:631)からテストページを印刷できるか確認して完了
$ sudo killall ccpd
$ sudo systemctl restart cups
$ sudo /etc/init.d/ccpd start
$ sudo /etc/init.d/ccpd status  # 確認
/usr/sbin/ccpd: 5832 5831  # こんな感じで2個数字が出ている

ちなみに、PCを再起動したときは、↑をもう一度叩く必要があります。

その後

Ubuntu 22.04向けに内容を全面的に見直しました。
rpy.hatenablog.com

Uninstalled Core Extensionsに残るゴミ

JupyterLab Extensionがアンインストールできない?

一般的な話、というより、自分の場合はもっぱら@axlair/jupyterlab_vimで起きた話なんですが。
※念のため、上記の拡張機能Vim keybindings)はたぶん悪くないです。

現象

普通は、jupyterlabのExtension managerで拡張機能をInstallすると、Rebuildを促されてそのあと拡張機能が有効になるわけですが、有効にした後にUninstallすると、なぜかUninstall状態で固定されてしまって再度Installしても使えなくなってしまう。

  • Uninstall状態で固定、というのは自分が勝手に作った表現だが、下記のコマンドを打った時に、Uninstalled Core Extensionsに残ってしまうことが確認できる。
C:\Users\ユーザー名>jupyter labextension list
JupyterLab v3.0.10

Uninstalled core extensions:
    @axlair/jupyterlab_vim

対処

build_config.jsonの中に残ってしまっているゴミを消す。
場所は(自分にのみPythonインストールしている場合は)、ここです。
C:\Users\ユーザー名\AppData\Local\Programs\Python\Python<バージョン>\share\jupyter\lab\settings

参考

qiita.com

lubuntu/ubuntuを入れたノートPCでUSB-NICを認識しない

数年前に福袋で買ったHP Stream。
元々はWindowsが入っていたが、スペック不足なのでlubuntu 18.04を入れて使用中。
ノートなので基本Wifiなんですが、ルーターから離れた部屋で使うことが多く、コンセントLAN(PLC)を試してみようと思い、USB-NIC(Elecom, EDC-FUA2)を挿してみたところ使えない。
ネットで調べてASIXのドライバーをインストールしてみましたがやっぱりダメ

基本に立ち返ってコマンドをいろいろ叩いてみると、lsusbnmcli dでは何か認識されているが、ifconfigではデバイスが表示されていない。
nmcli dでUSB-NICのステータスがunmanagedになっていたので、ググってみたところ、ようやく参考になるブログを発見

/etc/NetworkManager/conf.d の中に 10-globally-managed-devices.conf という空ファイルを作成すればよいということだった。
試してみたところ無事解決。感謝。

Rでは(まだ)parquetファイルが読み込めない

PythonでのDataFrameの保存方法としてCSVは卒業してparquet+zstdにしようと思っているのですが、どうやら日本語環境のWindowsだとRで読み込めない模様
Rのarrowパッケージのread_parquetでparquet形式ファイルは読み込めるはずですが、フリーズしてしまいます。
MacOSでは

> Sys.setlocale("LC_ALL", "ja_JP.UTF8")

をしておくことで問題ないらしい。上記コマンドはOS依存でWindowsでは実行できない。Windowsでは

> Sys.setlocale("LC_ALL", "japanese[.code_page]")

ここで、code_pageがいわゆるcp932とかcp65001の番号部分を入れるらしいのですが

> Sys.setlocale("LC_ALL", "japanese.65001")
# ロケールを "japanese.65001" に設定せよとの OS のレポート要求は受け入れられません

と怒られます。

参考

ver 3.0(いまは 2.0)で修正予定っぽい。修正されるまでまだまだかかりそうな予感しかしない。
issues.apache.org