Writing “sleep or suspend script” for JACK and qjackctl

JACK is weak for suspend because it needs to be stopped and restarted when come back from suspend. So I’m trying to write suspend script which stop JACK before go to suspend mode and start after come back from sleep.

First stop and start qjackctl command is below.

dbus-send --system /org/rncbc/qjackctl org.rncbc.qjackctl.stop

 

dbus-send --system /org/rncbc/qjackctl org.rncbc.qjackctl.start

 

Now I have very simple script that very useful when come back from suspend mode because it stop and restart qjackctl automatically. That is

#!/bin/bash
dbus-send --system /org/rncbc/qjackctl org.rncbc.qjackctl.stop && dbus-send --system /org/rncbc/qjackctl org.rncbc.qjackctl.start

Actually this is enough useful. Lol. But I will try to make better one.

It use

sudo pm-suspend

command. The problem is needs sudoers configuration to use pm-suspend command.
Without this “sudo pm-suspend” in bash shell script won’t do anything.

sudo -S pm-suspend

will work, it receives password from a terminal and will suspend.
And this is almost perfect except for security problem

password='Hacker\'s password'
echo $password | sudo -S pm-suspend

It won’t require to input password interactively.

#!/bin/bash
#Suspend script for JACK(qjackctl)
#First stop JACK and go to suspend
dbus-send --system /org/rncbc/qjackctl org.rncbc.qjackctl.stop
password='********'
echo $password | sudo -S pm-suspend

Then, this should be assigned with hot key on GUI manager on Ubuntu.

And I guess restart script is harder because I should research mechanism and the script path which automatically done when return from suspend mode.

My plan was logging about sudoers configuration but now I think i can go with this.

I will write again soon. Bye.😀

 

 

 

Advertisements

Personal Memo: SwingWorker class study note (English)

24, Oct, 2018 Wed

Memo to know how to use “SwingWorker” class

publish() is connected with process()

Publish() is used in doInBackground() and send data chunk to process().

SwingWorker<T,V>
T – Result type
V – Type for intermediate result

In processBuild() which is my own, I could’t invoke publish() method.
publish() is method should used in doInBackground() method..
How it be written to process method which takes arguments in doInBackground()?

Reference site
http://www.javacreed.com/swing-worker-example/

MultiThreading is natural.
Practically Swing suppose to launch several threads.

First post end. To be continued…

Jaydle開発メモ:JMenuBarの追加、アクションの追加、内部クラスの復習、JFileChooser実装のための知識の整理メモ

とりあえずLibreOffice Writer似とったメモを貼っておく🙃

==========================================================

JMenubarを追加する

frame.setJMenuBar(menubar);//frameはJFrameオブジェクト、munubarはJMenuBarオブジェクト

 簡単 うまくいった

参考サイト

https://www.javadrive.jp/tutorial/jmenu/

・アクションの追加

JMenuItemオブジェクトのメソッド addActionListenerからactionPerformedメソッドを実行する

 内部クラスを使って、メソッドを書く場所は確保した。

  ダウンロードボタンも少し修正した(JFrameActionListenerを実装せずに内部クラスで実装した)Screenshot from 2018-10-23 22-18-21

参考サイト

http://java2008.blog103.fc2.com/blog-entry-43.html

・内部クラスの復習

class ButtonListener implements ActionListener
{

public void actionPerformed(ActionEvent e)

{

strIn=textIn.getText();

if(strIn.length()>13)

dlAudio(strIn);

}

}

・メモ

File、プロセスビルダーの保存ディレクトリ、空白ではエラーが出る

JFileChooserの実装

  • showOpenDialog()showSaveDialog()メソッドと使うのが最も簡単

  • showDialog()も使える

  • 上記のメソッドはそれぞれユーザがどのようにダイアログを終わらせたかを表す整数のステータスコードを返す

  • もし返却された値がAPPROVE_OPTIONならば、ユーザはファイルを選んだ、それはgetSelectedFile()メソッドから得ることができる

オライリーJFCクイックリファレンス(原)より

ダイアログからやったほうがよさげ

P440

JFileChooserはダイアログからできているみたい。だからダイアログをやるといい。

Macみたいにクイックファイルリーダが欲しい。

それにしても、洋ドラの「シリコンバレー」で、リチャード・ヘンドリクスがスティーブ・ジョブズだの、スティーブ・ウォズニアックだの言っていた。Youtubeで検索してこの動画を見ていた。
”Creativity”というもんが伝わった。

SwingWorkerとProcessBuilderで、順次更新される(フリーズしない)JTextAreaのコーディング:その一

タイトルの通り、「SwingWorkerとProcessBuilderで、順次更新される(フリーズしない)JTextAreaのコーディング」を調べていた。もう二週間くらい前からのゴール。
まずSwingWorkerにたどり着くまでに時間がかかった。

この辺 「JTextAreaで表示が遅れる」(1) Java Solution - @IT会議室

とか見ていて、まずスレッド、まぁ並行プログラミング(Concurrent Programming)とか言われている領域かと思うけど、その辺の知識が必要になった。注1

・イニシャルスレッド
・イベントディスパッチスレッド
・ワーカースレッド

の話題が出てくる。あと

・Runnableインターフェース 注2
・javax.swing.SwingUtilities – invokeLater(Runnable doRun)

とかね。

で、少し勉強しているうちに、SwingWorkerクラスに突き当たった。
スタックオーバーフローさまさま。

システムの(まぁbashか)lsコマンドを再帰的に行って、SwingのJTextAreaに順次表示するプログラムが載っている。
https://stackoverflow.com/questions/20600721/display-indeterminate-jprogressbar-while-batch-file-runs/20603012#20603012

この板でリンクを教えてもらった。
https://stackoverflow.com/questions/45538227/how-do-i-get-the-jtextarea-to-update-with-each-ping

SwingWorkerはジェネリクスを使うし、ActionListenerや、SwingWorkerの継承メソッドの定義やら、GUIを伴って、複数のクラスを使っていて、いろんな要素の絡みがややこしい。

 

注1 並行プログラミングと並列プログラミングを混同していた。並行はConcurrent、並列はParalell

  • 並列(Parallel) : 複数のプロセスで各々のスレッドを同時に処理すること
  • 並行(Concurrent) : 一つのプロセスで複数のスレッドを切り替えながら動作することで、疑似的に複数のスレッドを同時に処理すること
参考サイト
Qiita Javaの並行処理を理解する(入門編)
https://qiita.com/bremen/items/b87bff49565fc9abc91b

注2 Runnableインターフェースのインプリメンテーションをしたクラスを作って、run()メソッドをオーバーライドする。そしてそのインスタンスを生成する、ことあたりがミソのよう。

参考 HeadFirstJava 一版 15章ネットワークとスレッド

 

Ubuntuで外付けHDDがスリープしない件

hdparmコマンドの使用が一般的なようだが、僕の環境ではエラーで動かなかった。

SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

どうやら、SCSIやらATAやら、コントローラ、容量が大きすぎ(8TB)などの話になって、別のコマンドを勧められた。

hd-idleコマンド。インストール少しターミナルから実行するコマンド多かった。

ラズパイのセッティングに関するサイトに載っていた。
https://www.htpcguides.com/spin-down-and-manage-hard-drive-power-on-raspberry-pi/
頼みのコマンド hd-idle
http://hd-idle.sourceforge.net/

hd-idleコマンドが

/home/hd-idle

に作られていた。場所変えようかな。普通は/usr/localあたりなんか

追って更新する予定。

Javaコードの管理 その二: Git, Github, Maven, Eclipseの使用

rpart_plot

 

はい、「Javaコードの管理 その一: Git, Github, Maven, Eclipseの使用」に続き、その二でございます。
前回の内容というのは、GitとGithubの理解と、Eclipse上での実行でした。

やはり、公開することで、”仄暗い部屋で一人、ディスプレイのきらめきの中、メガネを光らせている人物”ではないことがわかっていただけるし、それこそ、クモの巣状に繋がりが広がっていくので、とても意味のあることだと思います。「Gitコマンドはターミナル上では小さな命令だが、アクセス性にとっては大きな一歩なのです」w。

そして、ここでMavenの登場が起こるのです。Eclipseの標準的なビルド、ディレクトリ構成を使っているだけでは、Javaアーキテクトとして、構造が把握できていない段階に留まっているのです。(まぁ数週間前の私もそうでしたが)ビルドツールに通じて初めて、ソフトウェア製品の作業工程が理解できるのです。

Mavenは、POM(Project Object Model)ファイルに予め指示を記述しておくことで、煩雑な作業を自動化し、製品のパッケージング、アップデートが簡単にできます。私の場合は、実行可能Jarを自動で更新して生成させたい、というのが今の課題です。

そのためには、Mavenのアセンブリプラグインを使う必要があります。その設定がまた簡単ではなく、POM中で使うオブジェクト(ファイル)の依存関係を理解せねばなりません。

 

オフィシャルガイド
https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

日本語
https://kengotoda.gitbooks.io/what-is-maven/preface/

イメージピクチャ
https://www.marketechlabo.com/r-decision-tree/

Unsolved: How to use NI AUDIO 10 Audio interface on Ubuntu

pavcontrol = PulseAudio Volume Control

Maybe I should configure .asoundrc

Reference here: https://www.native-instruments.com/forum/threads/audio-6-linux-support.136907/

This is for AUDIO 6, not for 10.
And I also have configure for wine.

#.asoundrc

=====================================================

@”test stream w/ sound alsa loopback”  https://www.youtube.com/watch?v=4_dpmES5-Sw
@ http://wikiwiki.jp/tetsuya/?asoundrc

asoundrc = ALSA configure file. Usually at $HOME/.asoundrc
{etc
/usr/share/alsa/alsa.conf
/etc/asound.conf
}

??? Can I check AUDIO10 device from my terminal?
??? How to check my alsa firmware version?

#alsa-lib

*ALIAS
Example

pcm.NAME {
 type hw # Kernel PCM
 card INT/STR # Card name or number
 [device] INT # Device number (default 0)
 [subdevice] INT # Subdevice number, -1 first available (default -1)
 mmap_emulation BOOL # enable mmap emulation for ro/wo devices
}

Source code

https://www.alsa-project.org/main/index.php/Download

Alsa firmware source code ( Now not used, for reference)
ftp://ftp.alsa-project.org/pub/firmware/

https://www.alsa-project.org/main/index.php/Matrix:Vendor-Native_Instruments

http://www.alsa-project.org/~tiwai/alsa.html

#hotplug #firmware #driver #loader #alsa-tools #