IT徒然草

IT関係のことを解説したり一人つらつら書いたり

Ubuntuでupdatedb.mlocateを停止してディスクIOやメモリーを節約

メモリ使用量とディスクIOが大変だ…

Ubuntuを立ち上げると、よく、ディスクIOとメモリ使用量が大変なことになっていることがあります。さらに、ラズパイの場合には、マウスカーソルが動かなくなって、システム全体が動かなくなり、スワップが大量に発生したり、デスクトップ環境のパネルが異常終了したり…
ひどいときには、メモリ2GBを搭載したパソコンでも動かなくなることがあります。それらの犯人は…
updatedb.mlocateコマンド
です。 毎日実行されるため、PCの利用者自身もストレスがたまりますねw

updatedb.mlocateを停止する

これではもう嫌なので停止したいですね。updatedb.mlocateを停止するには、2つの方法があります。

cron設定を削除

この方法は、mlocateコマンドを残しておきたいときにおすすめです。updatedb.mlocateはcronで定期的に実行しているので、その設定を削除すれば動くことはなくなります。設定ファイルは残しておいて、もとの場所に戻せばまた動きます。

rm /etc/cron.daily/mlocate

mlocateコマンド自体を削除

こうすることで、mlocateコマンドを削除します。mlocateコマンド自体が不要なときにおすすめです。

sudo apt remove --purge mlocate
参考

https://qiita.com/takiuchi/items/49d05cc551bc4058bb23

ファイルを翻訳するソフトを作ってみた

きっかけ:Qtにハマった

最初は、HSP(Hot Soup Processor)を使って、デスクトップアプリを作ることにハマっていました。しかし、ウィジェットの数が少なかったことです。これは、Win32 APIを使ってなんとかなるのですが、これだとWindows上でしか動かない上にめちゃくちゃ理解しにくいです。わけのわからない数字がいっぱい出てきます。それをするなら、Qtで簡単に、しかもクロスプラットフォームで動くアプリを作ったほうが良いと決めました。

ソフトについて

最初は、テキストエディタの試作品、、、だけのつもりでいたのですが、開発しているうちにアツくなってきてしまい、翻訳機能を追加してしまいました。そして、ついに翻訳機の状態になってしまいました。翻訳結果は、インターネット上のGoogle Apps Scriptで、処理しています。また、その結果は、Google翻訳のものを使用しています。日々、使いやすくリニューアルしているので、git pullで変更を取り込み、お使いください。また、今後、文字列を直接リアルタイムに翻訳する「Granslator」というソフトも作る予定です。

使用方法

ソフトを起動し、ファイルを開きます。「翻訳」(または、Translate)ボタンをクリックすると、元言語と翻訳先言語を選択する画面になります。

あとは、「翻訳」ボタンをクリックします。

ソースコードのダウンロード

ファイル翻訳ソフト「Cute Light Text Previewer」
以下のURLのソースコードをGitを使って、Cloneしてください。ビルド手順等はREADME.mdに(英語ですが)かかれています。英語がおかしいとかあるかもしれませんが、それは筆者の語彙力のなさということで。ビルドする際には、Qt5が必要です。なお、クロスプラットフォームですので、WindowsLinuxmacOSのどれでも動きます。 なお、Linuxの場合、snapパッケージも利用可能です。 https://snapcraft.io/cute-light-text-previewer https://github.com/enjoysoftware/cute-light-text-previewer

参考

Language support  |  Cloud Translation  |  Google Cloud

Ubuntu 18.04 LTSにDockerをインストールしよう!

Dockerとは?

Dockerとは、Linux上で動くコンテナ管理システムです。コンテナ(実行するためのかたまり)の中には、実行に必要なアプリやファイルがぎっしり詰まっています。そこで完結できないものは、コンテナ同士を接続して、互いに使えるようにします。
サーバーを作りたいけど、ホストをいじりたくない、、、という人向けです。

インストールしよう!

パッケージからインストールしよう

UbuntuリポジトリにはDockerのパッケージが用意されているので、これを使って簡単にインストールできます。
まず、パッケージのアップデートから行います。

sudo apt update

これが完了したら、docker.ioパッケージをインストールします。Ubuntuには、dockerというパッケージがありますが、それは、「KDE3/GNOME2 docklet アプリケーション用システムトレイ」です。間違えてインストールしないようにしてください。

sudo apt install docker.io

標準ユーザにも権限を付与しよう

dockerは以上の操作でインストールされましたが、今現在では、dockerを実行するのにsudoを使って管理者権限で実行しなければならない状態です。sudoなしで実行するとこうなります。

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permission denied

あらあら、権限ないよーて起こられていますね。流石に、これでは不便です。そのために、自分のユーザをdockerグループに追加します。以下のコマンドを実行します。

sudo gpasswd -a 自分のユーザ名 docker

これで、PCを再起動すると標準ユーザでもdockerを操作できます。

動作確認をしよう!

Dockerをせっかくインストールしたので、コンテナをすぐ(←それは私だけ?)動かしたいところです。イメージ配布(イメージとは、コンテナの元となるもの)の中心、Docker Hubには、hello-worldイメージが公開されていますので、これを使いましょう。
細かいオプション等は気にせず以下のコマンドを実行してください。

docker pull hello-world
docker run --rm hello-world

これを実行して、こんなメッセージが表示されたら成功です!

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Qtでウィンドウを中央に移動するには

はじめに

スクリーンを中央に移動したいことはよくあります。ただし、画面の中央を取得する関数やメソッドは用意されていないため、自作する必要があります。使うクラスは、QApplication、QDesktopWidgetとQRectクラスです。

screenGeometryを使う。

以下はソースコードです。ヘッダーファイルやソースコードの先頭の方に、クラスをインクルードする文を書いておいてください。

// デスクトップのサイズ
QDesktopWidget * deskwidget = QApplication::desktop();
// geometry取得
QRect deskgeo = deskwidget->screenGeometry();
// 中央に移動するには、(デスクトップサイズ - ウィンドウサイズ)÷2をする
move((deskgeo.width() - width()) / 2, (deskgeo.height() - height()) / 2);

参考

雑記ブログ(仮) [Qt] Widgetを画面中央に移動する

Gitでコミットメッセージをやらかしたときに修正する方法

Gitではコミットメッセージを修正できる!

Gitでコミットメッセージを修正する方法は以下の3つあります。このうち、commit --amendは直前のコミット専用です。

  • commit --amend

  • rebase →edit+commit --amend

  • rebase →reword

直前のコミットの場合

以下のように入力して、コミットメッセージを修正します。なお、--amendは、「直前のコミットを上書き」という意味です。ですので、--amendは コミットメッセージの変更以外、例えば、ファイルを後から追加、などにも使えます。

git commit --amend  -m 変更後のメッセージ

2つ以上の前のコミットの場合

最初に、rebaseを行います。^は一つ前のコミットを表し、「~数」と指定すると、「数」の分だけのリベースができます。対話モードで起動させたいので、-iオプションをつけています。

git rebase -i HEAD^

この場合、1つ前のコミットをリベースしています。 すると、Vimが起動します。ここで、修正したいコミットの右側にある、「pick」を「reword」に修正します。今回は、36eaeafを修正したいので、「pick」から「reword」に修正します。

reword 36eaeaf Add Snapcraft files

# Rebase 7cb6b0b..36eaeaf onto 7cb6b0b (1 command)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

その後、またVimが起動するので、変更したいようにメッセージを修正します。

Add Snapcraft files ←ここを修正

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Author:    test <main@gmail.com>
# Date:      Sun Dec 15 18:00:10 2019 +0900
#
# interactive rebase in progress; onto 7cb6b0b
# Last command done (1 command done):
#    reword 36eaeaf Add Snapcraft files
# No commands remaining.
# You are currently editing a commit while rebasing branch 'master' on '7cb6b0b'.

編集が終わった後、ファイルを保存、Vimを終了させると正しくメッセージが更新されています。

git log
commit eac2057931af52250ed19ded050843c0a76eb1ec (HEAD -> master)
Author: test <main@gmail.com>
Date:   Sun Dec 15 18:00:10 2019 +0900

    Add Snapcraft

まとめ

まとめると以下のようになります。

  • 直前のコミット→git commit --amend 変更したいメッセージ

  • 2つ以上前→git rebaseした後、rewordを行う。

(C)2020 EnjoySoftware All rights reserved.