GNU core utilitiesのビルド(Mx Linux, Debian stretch)

coreutilsのビルド時にgnulibのacl-internal.hがエラーを吐いた。たぶんgccが古いんだと思う。

# 環境と今回ビルドしたcoreutilsのバージョン

$ gcc --version
gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
$ cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
$ cat src/version.c
 #include <config.h>
 char const *Version = "8.31.48-f2dfea";

coreutils をビルド

$ git clone git://git.sv.gnu.org/coreutils

$ cd coreutils

$ ./bootstrap --skip-po

$ ./configure

$ make -j $(nproc)

gnulibのacl-internal.hがエラー。

  CC       lib/acl-internal.o
lib/acl-internal.c: In function 'free_permission_context':
lib/acl-internal.c:479:1: error: function might be candidate for attribute 'const' [-Werror=suggest-attribute=const]
 free_permission_context (struct permission_context *ctx)
 ^~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
Makefile:9705: recipe for target 'lib/acl-internal.o' failed
make[2]: *** [lib/acl-internal.o] Error 1

acl-internal.hを編集

--- a/lib/acl-internal.h  2019-08-28 17:22:43.146398122 +0900
+++ b/lib/acl-internal.h    2019-08-28 17:27:29.011391134 +0900
@@ -297,6 +297,10 @@
 
 int get_permissions (const char *, int, mode_t, struct permission_context *);
 int set_permissions (struct permission_context *, const char *, int);
-void free_permission_context (struct permission_context *);
+void free_permission_context (struct permission_context *)
+#if ! (defined USE_ACL && (HAVE_ACL_GET_FILE || defined GETACL))
+    _GL_ATTRIBUTE_CONST
+#endif
+  ;

_GL_INLINE_HEADER_END

再度make。

$ make -j $(nproc)

# 成功

一旦、全てをビルドしてしまえば、今後は個別にビルドできる。改変してみよう。

--- a/src/cat.c  2019-08-28 17:21:10.126750050 +0900
+++ b/src/cat.c 2019-08-28 18:12:31.683477943 +0900
@@ -624,11 +624,17 @@
           break;
 
         case_GETOPT_HELP_CHAR;
-
+        /* printf("myusage"); */
         case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+        /* printf("myusage"); */
 
         default:
-          usage (EXIT_FAILURE);
+          printf("-----------\n");
+          printf("-----------\n");
+          printf("-----------\n");
+          printf("-----------\n");
+          exit (EXIT_FAILURE);
+        /* usage (EXIT_FAILURE); */
         }
     }

実行。

$ make src/cat && src/cat --abcd
  CC       src/cat.o
  CCLD     src/cat
src/cat: unrecognized option '--abcd'
-----------
-----------
-----------
-----------

はてなブログのシンタックス・ハイライトをカスタマイズ

preタグ内のコメント行やプロンプトをハイライト

はてなブログにあるソースコードなどを色付けして表示するスーパーpre記法。端末で扱うコマンドやコマンドの出力など、ソースコード以外にもよくファイルタイプを指定しないで使う。

 # はてな記法
 >||
 $ gcc --help
(出力結果)
 ||<
 # markdown記法
 ``` 
 $ gcc --help
 (出力結果)
 ```

下記の要素をハイライトしたい。

  • コメント行 (先頭が # から始まる行)
  • プロンプト (先頭の $)

出来た。

# gcc のヘルプを表示
$ gcc --help
(出力結果)

ソースコード

「フッター」に貼り付けてください。

<script type='text/javascript'>
  var pre = document.querySelectorAll('pre[data-lang=""]')
  for (var i=0; i < pre.length;i++){
    var s = pre[i].textContent;
    s = s.replace(/(^#.*$)/gm, "<span class='cmt'>$1</span>");
    s = s.replace(/(^\$)/gm, "<span class='pmt'>$1</span>");
    pre[i].innerHTML = s;
  }
</script>

「デザインCSS」に貼り付けてください。

pre .cmt {
  color: #8f5902;
  font-style: italic;
}
pre .pmt {
  color: #3b658c;
}

Heroku CLIの使い方

ヘルプを表示

# e.g.  = pg, apps, pg:reset, apps:create...etc.
$ heroku help 
# help出来るhelp一覧
$ heroku help help

Heroku上のBashPython

$ heroku run bash -a <your_app_name>
$ heroku run python -a <your_app_name>

ログの取得

$ heroku logs --tail -a <your_app_name>

インストールしているアドオンを表示

$ heroku addons

Heroku PostgreSQLをインストール

# e.g. plan = hobby-dev
$ heroku addons:create heroku-postgresql:hobby-dev

DBへの接続 (必須: ローカル環境にPostgreSQLがインストールされいる事)

# 必要: ローカル環境にPostgreSQLがインストールされいる事
$ heroku pg:psql -a <your_app_name>

DB情報の取得

$ heroku pg:credentials:url -a <your_app_name>

DB内のデータを全削除(リセット)

$ heroku pg:reset DATABASE -c <your_app_name>

GmailでYahooメールを送受信(Chrome)

Gmailの設定のメモ

# 1.
設定
アカウントとインポート
名前
他のメールアドレスを追加
「名前」と「アドレス」に追加するメールアドレスを入力する
エイリアスとして扱います。のチェックを外す
次のステップ
「SMTPサーバー」に「smtp.mail.yahoo.co.jp」を入力する
「ポート」に「465」を入力する
「ユーザー名」と「パスワード」にYahooメールのものを入力する
「SSL」にチャックする
Yahooメールに認証メールが届くのでクリックする

# 2.
設定
アカウントとインポート
他のアカウントでメールを確認
メール アカウントを追加する
「メールアドレス」にYahooメールを入力する
他のアカウントからメールを読み込む(POP3)

「パスワード」にYahooメールのパスワードを入力
「取得したメッセージのコピーをサーバーに残す。」にチェック
「メールの取得にセキュリティで保護された接続(SSL)を使用する。」にチェック
「受信したメッセージにラベルを付ける」にチェックし、ラベルを選択
「メッセージを受信トレイに保存せずにアーカイブする」のチェックを外す

MIDI PIANO KEYBOARD(VMPK, Qsynth)

ソフトをインストール

$ sudo apt install vmpk qsynth fluid-soundfont-gm

Qsynth の設定

  • Setup -> MIDI -> MIDI Client Name ID: qsynth
  • Setup -> Audio -> Audio Driver: pulseaudio
  • Setup -> Soundfonts -> Open ->/usr/share/sounds/sf2/FluidR3_GM.sf2

vmpk の設定

  • Edit -> Connections -> Enable MIDI Thru on MIDI Outpu (ON)
  • Edit -> Connections -> Output MIDI Connection (FLUID Synth (qsynth):0

使い方

  • 最初にQsynth を起動する
  • 次にvmpkを起動する