百折不撓

データ系の新米エンジニアとして戦闘中。

Ubuntu18.04 can't come back from suspend mode.

 Ubuntu18.04をインストール。ちょこちょこ使いやすいように設定をいじって自分にとって使いやすいようにして、壁紙変えてとかしていたら、suspendから復活しなくなりました(画面だけが真っ暗)。いじった設定のどれがいけなかったのかまだ分かっていませんが、いきなり困った事になりました。調べいくと、どうやらグラフィックドライバ周りであかん事になっている模様。
 結論を先に言うと、グラフィックドライバをインストールしたら解決しました。ただ、これが万人にとっての解決策なのかは分かりません。僕の場合は、そもそも自分のグラフィックカードのドライバを入れていないとかいうアホなので、ドライバ入れているのに真っ暗とかいう人はこれに当てはまらない気がします。

 インストールに際しては、一番下のリンクを参考にしました。というかそのままです。

 他に方法があるのかもしれませんが、Download Drivers | NVIDIAで自分のグラフィックカード(GeForce RTX 2070)の情報入れると、対応したバージョンを教えてくれます。自分はnvidia-418でした。

  • 2. その子をインストール

 aptコマンドを使ってインストールしたいのですが、公式レポジトリにはないので、PPA(Personal Package Archive)を以下のようにして追加します。

sudo add-apt-repository ppa:graphics-drivers/ppa

 色々言われるので、良かったらEnter(自己責任)。完了したら、

sudo apt update

 次に、アイコンのshow applicationsで「update」とかで検索すると、"Software&Update"が出てくるので、タブ”Additional Drivers”より自分に合ったドライバを選択して、Apply Changes(ちょっと時間がかかりました)。
 
 ターミナル上でやるなら、

sudo apt install nvidia-driver-418 nvidia-settings

 でも出来るみたいですが未確認です。完了したら、再起動をかけてあげる。ちゃんとドライバが変更しているか以下で確認できます。

nvidia-smi

 自分の場合はサスペンドモードからの起動に問題があったので、一度、サスペンドさせてから立ち上げたところ問題は起きませんでした。しかし油断は許されないので、経過を見てみます。ひとまず、安心です。

 何かおかしな所ありましたら、教えてもらえたら嬉しいです。

参考サイト:
tangram_pieces: Ubuntuでサスペンドから正常に復帰できない場合
How to Install NVIDIA Driver 418.43 (G-SYNC Support) in Ubuntu 18.04 | UbuntuHandbook
Ubuntu 16.04に GTX 1080Ti ドライバとCUDAのインストール - Qiita

タスクバー(Dock?)の変更

 
oompa-de-loompa.blogspot.com

 スゲー!この人がすごいきれいにまとめてくれています!
 この方がUbuntuのデフォルトのタスクバー関連(初めに左と上に出ているやつ)のカスタム方法を記事にしてくれています。ただ指示に従っただけなので、リンクだけ貼っての備忘録としておきます。

 以下に、一応流れだけ自分用に簡単にメモしておく(絶対これ見ても思い出せないだろうけど)。
1. chromegnome shell integrationを入れる(アカウント登録も)。
2. chrome-gnome-shell、 chrome-tweak-shellをapt-getでインストール。
3. GNOME Shell Extensionsで"dash to panel"をインストールしてから、さっき入れたUbuntuのアプリのTweakを起動。色々いじる。
 ここまでの作業でWindows的なタスクバーにできる。さらに、Windows的なスタートメニューのアイコンを出すには以下。
4. GNOME Shell Extensionsで"Arc Menu"をインストール。
 

システムモニタGkrellMのインストールとテーマ(skin)の変更

 我が家に新しい子がやってきました。早速その子にUbuntuをインストールしたので、初期設定で色々困って調べたりしたことをまとめておきたいと思います。この記事では、システムモニタGkrellMのインストールと、そのデザイン変更についてまとめました。

 大学院にいた時に先輩に教えてもらったシステムモニタGkrellMをUbuntu18.04LTSにインスールしてみました。
 まず、

apt search gkrellm

とすると、関連したパッケージが見れます。色々な派生パッケージ?がありますが、よく分からないので、suコマンドを使ってroot権限で、

apt install gkrellm

これでインストール完了(sudoではできませんでした)。再起動しないといけなかったか覚えていないのですが、show applicationsでgkrellmと検索すると見つけられるので立ち上げてあげると、センサー温度とか、CPUの稼働状況とか色々見れます(設定変更の仕方はリンク先)。

 他のデザインが欲しい場合は、自分で作るか、趣味の人の作ったものを使います。一つの例として、ここGKrellM - www.gnome-look.orgにデザインがまとめられているので好きなものをダウンロードしてきます。落としてきた物をディレクトリごと

/home/"user name"/.gkrellm/themes/

以下にぶち込みます。既にGKrellMを立ち上げている場合、再度立ち上げてあげると、shift + pageupでデフォルトで入っていたデザインの他に、入れたデザインも選択できるようになります。
 たぶん、もっとたくさんデザインがあると思うので、気に入ったものを同様に入れてあげれば良いはずです。ちなみに僕は、Transparent Gkrellm - www.gnome-look.orgで試運転中です。
 

f:id:RyojiT:20190309235841p:plain
右側の透けているのがGKrellMです(他がまだ色々と寂しい)。

参考記事・サイト
Ubuntu 18.04 LTS GkrellM システムモニター

GitHub - phd/breeze-gkrellm-theme: Breeze GKrellM theme (Dark+Light) for integration with KDE Plasma 5

OneDrive内のデータのローカルでの保存先の変更

 新しい子(デスクトップ)が我が家に来ました。初めてのデスクトップです。完全自作は自信がなかったので、BTOで買いました。そして、ついに夢のSSD+HDDの構成を手に入れたのですが、いきなり困ったのは、OneDriveのローカルでの保存先の変更方法が分からない。
 ググったらちゃんとサポートで答えてくれていたので、このリンクは切れることはないと妄信し、後はリンクを見ればいい形にしておく。
https://support.microsoft.com/ja-jp/help/4028633/windows-10-change-the-location-of-your-onedrive-folder

 フォルダからPC>HDDのプロパティや、Windowsの設定からストレージの詳細を見てもOneDriveで使用している150GBが使用されている様には見えない。…ローカルにダウンロードはされていない模様だ。どうやらデフォルト設定ではローカルにダウンロードする設定になっておらず、ファイルを使用時のみ落としてくる仕組みになっているようだ。保存して終了したら消えるのか・・・?ともかく、ローカルに落としたい場合は、

  1. OneDriveアイコンを右クリックして、設定を開く
  2. 開いたら、設定タブを選択
  3. 2019年3月6日現在、一番下のファイルオンデマンド内の「容量の節約を~」云々のチェックを外す

以上を行うと、ファイルのダウンロードが始まった(こちらは自分で試しただけなのでリファレンスはないです)。ただ、この子はデスクトップだしほぼ常時オンラインであることを考えると、確かにローカルに落とす意味はない。最終的にデフォルト設定に戻した。
 ああ、早くこの子にこれまた夢だったlinux OS(Ubuntuの予定)を入れてあげたいです。

言語処理100本ノックchap01_07

 三日坊主くらいには続いています、言語処理100本ノック。
 言語処理100本ノック 2015
 第1章7本目の問題は、以下のような関数を作れって事みたいですが、ちゃんと題意を読み取れているのでしょうか?いくら何でもいきなりめちゃくちゃ簡単になったような。

def Hoge(x,y,z):
    return print("{}時の{}は{}".format(x,y,z))

if __name__ == "__main__":
    print("x(時間), y(気温などの変数), z(yの値)を入力してください。\n")
    print("x = ")
    x = str(input())
    print("y = ")
    y = str(input())
    print("z = ")
    z = float(input())
    
    Hoge(x, y, z)

 現状のままだと、x, yはstring型、zはfloat型で扱っているので、例えば、zに何かを入力する時に文字を入れるとエラーになります。なので、例外処理?をしてあげないといけませんが・・・。うーん、zに数値を入力するまで繰り返そうと思うと、入れ子処理みたいにしないといけないのでしょうか?
 これに関しては、もう少し試します。今日はこの辺で勘弁してください(眠い!)。20190212 To Be Continued

言語処理100本ノックchap01_06

 言語処理100本ノックの6章6問目。
言語処理100本ノック 2015

 問題は、2つの短文のbigramを作り、比較して、その和集合、積集合、差集合を見つけろというもの(ちゃんとした課題文はリンク先にあります)。n-gramを作る関数は5問目で作ったので、それを利用して以下のように各集合を探してみました(言語処理100本ノックchap01_05 - 百折不撓)。

print("n-gramの数を入力してください")
N     = int(input())
print("文章1を入力してください")
para0 = input()
#para0 = "paraparaparadise"
print("文章2を入力してください")
para1 = input()
#para1 = "paragraph"

bigram0 = ngram(N, para0)
bigram1 = ngram(N, para1)
###空白文字を1つのbigramとしてしまっている場合は、ここで削除(chap1_05.pyを修正すべき)
if "" in bigram0:
    bigram0.remove("")
if "" in bigram1:
    bigram1.remove("")
    
X, Y =  set(bigram0), set(bigram1)

print("X: {}, Y: {}\n".format(X, Y))
"""和集合OR"""
wa = X.union(Y)
print("OR: {}".format(wa))

"""積集合AND"""
seki = X.intersection(Y)
print("AND: {}".format(seki))

"""差集合diff"""
sa = X.difference(Y)
print("diff: {}".format(sa))

"""Searching for <se> """
set_se = {"se"}
print("Searching for \"se\" in X\n".format(X.intersection(set_se)))
print("Searching for \"se\" in Y\n{}".format(Y.intersection(set_se)))

 set型?という集合表現をpythonは持っているのですね。そして、その演算と言うか、集合同士の関係も比較できるメソッドを持っている。数十文字からなる1文同士の比較なら、人間の目でも出来ますが、もっと長い文章になると難しいので、やはり便利ですね。
 と言うわけで、この問題は、set型のメソッドの手習い?みたいな課題でした。

pythonでの集合の個人的備忘録

 「pythonで集合ってあったよな?」までは覚えていたのですが、それ以上は余り思い出せずに、
  
Python, set型で集合演算(和集合、積集合や部分集合の判定など) | note.nkmk.me

 こちらに頼りました。詳しい事は、nkmkさん(でいいのかな?)が書いてくれているので、リンク先を読んでください。以下は、自分用です。ですが毎度のことながら、間違っていたら是非教えてください。

①set(), {}で集合

 risuto  = [1, 2, 2, 2, 3, 3, 4]
 shugo = set(risuto)
 ###もしくは
shugo1 = {1, 2, 2, 2, 3, 3, 4} ###shugo1は{1,2,3,4}となる 

これで集合が作れます。もちろん、リスト、集合の要素は文字列でも大丈夫。

drop(), pop()メソッドで要素削除 ※試していないので書いとくだけ

③和集合、積集合、差集合
いつも、和、積・・・OR?AND?どっちだっけ?となってしまう。そして、差集合なんて初めて聞いた気がするが、まぁ、要素の差の事だ。

shugo1 = {1, 2, 2, 2, 3, 3, 4}
shugo2 = {3,3,3,3,3,4,5,7,8}

#和集合
wa   = shugo1.union(shugo2)
#積集合
seki = shugo1.intersection(shugo2)
#差集合
sa    = shugo1.difference(shugo2)

簡単な使い方は、こんな感じ。