前回触れた”サイケなスクリーンセーバー”が気になったので、ウィルススキャンをかけることにした。
ソフトウェアセンターでインストールしてあったClamTkを起動、ボタンをポチッと、、、反応無し。
一旦削除し、ググりながらコンソールでclamavやデーモンをインストールしたり、
ファイルの権限を変えたりしているうちにようやく動くようになった。
早速、データベースをアップデートしてからBasixを入れたUSBメモリをスキャンしたら、
/media/username/BASIX30/EFI/BOOT/BOOTx64.EFI: Win.Trojan.Agent-1428496 FOUND
/media/username/BASIX30/EFI/BOOT/BOOTx64.EFI: Removed.
ふぇえええ、Win用トロイの木馬? Linuxに? いつの間に?
USBメモリをフォーマット(スローなやつ)しなおしてスキャンで大丈夫なのを確認し、
uNetBootinで同じisoファイルを再度書き込んでからスキャンすると、
またもや、トロ発見・削除。
basix-3.0_i386.isoのMD5チェックサムは問題なし。
念の為にメインPC(Ubuntu 16.04 LTS 日本語Remix 64bit)と
そのインストール用USBメモリをスキャンしてみたけど、異常なし。
そもそも、例のスクリーンセーバー(?)と関係あるのか?
で、?ばかりの一日だった、、、。
明日、ネットブックにインストールしてみよう。
ちなみに、ググっているうちに見つけたページ:
clamscan found this: BOOTx64.EFI: Win.Trojan.Agent-1428496 FOUND
英語がよく分からないだけど、ほっといても大丈夫そう。
追記:
大体、Ubuntuでスクリーンセーバー?
と食事中に思って、Basixをライブで動かしてみたら、
XScreenSaverが入ってた、、、で、炎上するパソコンのデザインもよく使われてるらしい。
やれやれ。
XScreenSaver
2016年10月24日月曜日
2016年10月22日土曜日
また風邪
水曜日に風邪を引いて今日まで三日間、家でおとなしくしてたら、
喉の腫れは引いたものの、発熱と鼻水は相変わらず。
東浩紀著「弱いつながり」を読んだ。
日常にノイズを入れる、というのは共感できる。
この人の文章をもっと読んでみたいと思った。
要再読。
乙四危険物の勉強が遅れてるから、
図書館で化学の入門書を借りてきた。
それにしても塩酸、化学式(HCl)には酸素(O)が入ってないのに
何で「酸」を名乗るんだ?
と思ったら、ウィキペディアに「歴史的な経緯」とあった。混乱する、、、。
uNetBootinでUSBメモリにLubuntuをインストールしたんだけど、
ライブで起動せず。
USBメモリをフォーマットしなおしてBasix 3.0 (32bit)にしたら
上手く行った。これで処分する予定のパソコンのHDDのデータを消去。
sudo shred -n 1 /dev/sda
-nのオプションは繰り返しの回数。
雑誌では3回以上を推奨してたけど、とりあえず一回実行してほっといたら、
2時間かからずに終わってた。ただ、スクリーンセーバーがサイケで、
真ん中に火を吹くPCの絵があって不気味だった。
どっかで見たことのあるような、、、。
喉の腫れは引いたものの、発熱と鼻水は相変わらず。
東浩紀著「弱いつながり」を読んだ。
日常にノイズを入れる、というのは共感できる。
この人の文章をもっと読んでみたいと思った。
要再読。
乙四危険物の勉強が遅れてるから、
図書館で化学の入門書を借りてきた。
それにしても塩酸、化学式(HCl)には酸素(O)が入ってないのに
何で「酸」を名乗るんだ?
と思ったら、ウィキペディアに「歴史的な経緯」とあった。混乱する、、、。
uNetBootinでUSBメモリにLubuntuをインストールしたんだけど、
ライブで起動せず。
USBメモリをフォーマットしなおしてBasix 3.0 (32bit)にしたら
上手く行った。これで処分する予定のパソコンのHDDのデータを消去。
sudo shred -n 1 /dev/sda
-nのオプションは繰り返しの回数。
雑誌では3回以上を推奨してたけど、とりあえず一回実行してほっといたら、
2時間かからずに終わってた。ただ、スクリーンセーバーがサイケで、
真ん中に火を吹くPCの絵があって不気味だった。
どっかで見たことのあるような、、、。
2016年10月17日月曜日
無題
先週から涼しくなってきた。
あと一ヶ月もしたら寒くなるだろうから、
それまでに部屋を片付けないと。
三浦いをん著「舟を編む」を読んだ、楽しかった。
西岡の心境の変化もうまく描かれてると思った。
辞書の編纂って奥が深そうだな。
テレビドラマ「ハケンの品格」を観た。
ありえないけど、面白かった。
2級ボイラーの勉強は順調だけど、
乙4危険物が遅れ気味。
消化設備士は、1月に乙6を受けることにした。
仕事探しは完全にストップ。
11年くらい前から使ってるキーボードが先週、急に動かなくなった。
中の電子部品が寿命らしい。
慌てて新しいのを買った:サンワサプライのSKB-KG3BKN、1,810円。
古いものの右3分の1がカットされた感じ。
テンキー使わないし、コンパクトでいい。
キーがもう少し静かだと、もっと良かったんだけど。
キーボードの他に、PCディスプレイの電源ケーブルの接触が悪い。
HDDもSDDに換装したいし。
靴も新しいのを買わないと。
デイパックはチャック部分が壊れ始めた。
携帯電話は故障中だし、ジーンズには穴が開いてるし。
いろいろと物入りになりそう。
あと一ヶ月もしたら寒くなるだろうから、
それまでに部屋を片付けないと。
西岡の心境の変化もうまく描かれてると思った。
辞書の編纂って奥が深そうだな。
テレビドラマ「ハケンの品格」を観た。
ありえないけど、面白かった。
2級ボイラーの勉強は順調だけど、
乙4危険物が遅れ気味。
消化設備士は、1月に乙6を受けることにした。
仕事探しは完全にストップ。
11年くらい前から使ってるキーボードが先週、急に動かなくなった。
中の電子部品が寿命らしい。
慌てて新しいのを買った:サンワサプライのSKB-KG3BKN、1,810円。
古いものの右3分の1がカットされた感じ。
テンキー使わないし、コンパクトでいい。
キーがもう少し静かだと、もっと良かったんだけど。
キーボードの他に、PCディスプレイの電源ケーブルの接触が悪い。
HDDもSDDに換装したいし。
靴も新しいのを買わないと。
デイパックはチャック部分が壊れ始めた。
携帯電話は故障中だし、ジーンズには穴が開いてるし。
いろいろと物入りになりそう。
2016年9月22日木曜日
簡易条文ビューア - 挫折
不具合満載で機能不足だけど、ここで打ち切り。
久しぶりにJavaScriptいじろうとしたらさっぱり忘れてて、
ググッて見つけたコードをコピペしてたら疲れた、もうやめた。
概要:ローカルでWEBブラウザを使って税法の条文を閲覧・編集するためのツール
環境:
Ubuntu
Chromeブラウザ(バージョン51.0 (64-bit))
---必要なファイル---
bootstrap-3.3.7-dist (http://getbootstrap.com/)
jquery-1.11.3 (https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js)
encoding.js (http://polygon-planet-log.blogspot.jp/2012/04/javascript.html)
消費税法のHTMLファイル(今日現在)
(http://law.e-gov.go.jp/htmldata/S63/S63HO108.html)
準備:
1.bootstrapをダウンロードし、解凍してできたフォルダの中(作業ディレクトリ)へ移動
2.jquery.min.jpをjsフォルダ内にコピー
3.encoding.jsをjsフォルダ内にコピー
4.消費税法のHTMLファイル(消費税法.html)を作業ディレクトリに置く
4.viewer.html(下記参照)を作業ディレクトリに置く
使い方:
1.viewer.htmlをブラウザで開く
2.画面右手の操作パネル内の「ファイルを選択」ボタンをクリックし、消費税法.htmlを読み込む
3.条文が表示されるので、編集
文字列を選択してから、
太字:Ctrl+B
下線:Ctrl+U
斜体:Ctrl+I
コピー:Ctrl+C
貼り付け:Ctrl+V
操作パネル内のマーカーボタンでハイライト
5.操作パネル内の保存ボタンで、編集済みのテキストを保存、のはずなんだどけ、
機能せず。ファイルサイズ(614KB)のせい?憲法(58KB)なら動いた。
viewer.html -------------------------------------------------------------
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>簡易条文ビューワ</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/encoding.js"></script>
<style>
.container{
position: fixed;
z-index: 9999;
opacity: 0.8;
}
.row{
margin-top:10px;
margin-left:-30px;
padding: 0 10px;
}
.clickable{
cursor: pointer;
}
.panel-heading span {
margin-top: -20px;
font-size: 15px;
}
</style>
<script>
$(document).on('click', '.panel-heading span.clickable', function(e){
var $this = $(this);
if(!$this.hasClass('panel-collapsed')) {
$this.parents('.panel').find('.panel-body').slideUp();
$this.addClass('panel-collapsed');
$this.find('i').removeClass('glyphicon-chevron-up').addClass('glyphicon-chevron-down');
} else {
$this.parents('.panel').find('.panel-body').slideDown();
$this.removeClass('panel-collapsed');
$this.find('i').removeClass('glyphicon-chevron-down').addClass('glyphicon-chevron-up');
}
})
function gettext( maintxt ){
var myRe = /(<b>第.*条<\/b>)\s*(<a name="\d*">)(<\/a>)/g ;
var menu = "";
maintxt = maintxt.replace( /<html>[\s|\S]*<body>/ , "" ) ;
maintxt = maintxt.replace( /<\/body>[\s|\S]*<\/html>/ , "" ) ;
while ((myArray = myRe.exec( maintxt )) !== null) {
myArray[2] = myArray[2].replace( /name="/, 'href="#');
menu = menu + myArray[2]+ myArray[1] + myArray[3] + "<br />";
}
document.querySelector("#menu").innerHTML = menu;
document.querySelector("#maintxt").innerHTML = maintxt;
}
window.onload = function(){
document.querySelector("#afile").addEventListener(
'change', afile_changeHandler);
document.querySelector("#markercolor").addEventListener(
'change', markercolor_changeHandler);
document.querySelector("#fontsize").addEventListener(
'change', fontsize_changeHandler);
}
var fontsize = 14;
function fontsize_changeHandler(evt){
fontsize = document.querySelector("#fontsize").value;
$("#maintxt").attr("style", "font-size: " + fontsize + "px;");
};
var markercolor = "#FFFF00";
function markercolor_changeHandler(evt){
markercolor = document.querySelector("#markercolor").value;
};
function afile_changeHandler(evt){
var file = evt.target.files[0];
var reader = new FileReader();
reader.onload = function (e) {
var array = new Uint8Array(e.target.result);
switch (Encoding.detect(array)) {
case 'UTF16':
array = new Uint16Array(e.target.result);
break;
case 'UTF32':
array = new Uint32Array(e.target.result);
break;
}
var unicodeArray = Encoding.convert(array, 'UNICODE');
var text = Encoding.codeToString(unicodeArray);
gettext(text);
}
reader.readAsArrayBuffer(file);
}
jQuery(function($) {
$("#marker").click( function(evt) {
var selObj = window.getSelection();
if (selObj == '') {return false;}
var range = selObj.getRangeAt(0);
var span = document.createElement("span");
span.style.backgroundColor = markercolor;
range.surroundContents(span);
});
});
jQuery(function($) {
$("#savetext").click( function() {
if (typeof Blob == "undefined") {
alert('このブラウザには対応していません');
}
var newtext = document.querySelector("#maintxt").innerHTML;
if ( newtext == "" ) return;
newtext = "<html><body>" + newtext + "</body></html>";
var blob = new Blob([ newtext ], { "type" : "application/x-mssavetext" });
window.URL = window.URL || window.webkitURL;
$("#savetext").attr("href", window.URL.createObjectURL(blob));
$("#savetext").attr("download", "sample.html");
jQuery("#savetext").trigger("click");
});
});
</script>
</head>
<body>
<table width="100%"><tr><td width="50%">
<!-- left panel --------------------------------------------------------->
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">目次</h3>
<span class="pull-right clickable"><i class="glyphicon glyphicon-chevron-up"></i></span>
</div>
<div class="panel-body">
<div id="menu"></div>
</div>
</div>
</div>
</div>
</div>
<!------------------------------------------------------------>
</td><td width="50%" style="float:right;">
<!-- right panel --------------------------------------------------------->
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">操作パネル</h3>
<span class="pull-right clickable"><i class="glyphicon glyphicon-chevron-up"></i></span>
</div>
<div class="panel-body">
<input id="afile" type="file" name="selectfile" accept="text/html" /><br />
<a id="savetext" target="_blank"><input type="button" value="保存" /></a><br /><br />
フォントサイズ<input id="fontsize" type="range" min="10" max="18" step="1" /><br />
<input type="button" value="マーカー色" id="marker" />:<input type="color" id="markercolor" list="markerlist" value="#FFFF00" />
<datalist id="markerlist">
<option value="#FF0000"></option>
<option value="#00FF00"></option>
<option value="#0000FF"></option>
</datalist>
<br /><br />
</div>
</div>
</div>
</div>
</div>
<!------------------------------------------------------------>
</td></tr></table>
<!-- main text --------------------------------------------------------->
<div id="maintxt" contentEditable="true" style="font-size: 14px;"></div>
<!----------------------------------------------------------->
</body>
</html>
久しぶりにJavaScriptいじろうとしたらさっぱり忘れてて、
ググッて見つけたコードをコピペしてたら疲れた、もうやめた。
概要:ローカルでWEBブラウザを使って税法の条文を閲覧・編集するためのツール
環境:
Ubuntu
Chromeブラウザ(バージョン51.0 (64-bit))
---必要なファイル---
bootstrap-3.3.7-dist (http://getbootstrap.com/)
jquery-1.11.3 (https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js)
encoding.js (http://polygon-planet-log.blogspot.jp/2012/04/javascript.html)
消費税法のHTMLファイル(今日現在)
(http://law.e-gov.go.jp/htmldata/S63/S63HO108.html)
準備:
1.bootstrapをダウンロードし、解凍してできたフォルダの中(作業ディレクトリ)へ移動
2.jquery.min.jpをjsフォルダ内にコピー
3.encoding.jsをjsフォルダ内にコピー
4.消費税法のHTMLファイル(消費税法.html)を作業ディレクトリに置く
4.viewer.html(下記参照)を作業ディレクトリに置く
使い方:
1.viewer.htmlをブラウザで開く
2.画面右手の操作パネル内の「ファイルを選択」ボタンをクリックし、消費税法.htmlを読み込む
3.条文が表示されるので、編集
文字列を選択してから、
太字:Ctrl+B
下線:Ctrl+U
斜体:Ctrl+I
コピー:Ctrl+C
貼り付け:Ctrl+V
操作パネル内のマーカーボタンでハイライト
5.操作パネル内の保存ボタンで、編集済みのテキストを保存、のはずなんだどけ、
機能せず。ファイルサイズ(614KB)のせい?憲法(58KB)なら動いた。
viewer.html -------------------------------------------------------------
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>簡易条文ビューワ</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/encoding.js"></script>
<style>
.container{
position: fixed;
z-index: 9999;
opacity: 0.8;
}
.row{
margin-top:10px;
margin-left:-30px;
padding: 0 10px;
}
.clickable{
cursor: pointer;
}
.panel-heading span {
margin-top: -20px;
font-size: 15px;
}
</style>
<script>
$(document).on('click', '.panel-heading span.clickable', function(e){
var $this = $(this);
if(!$this.hasClass('panel-collapsed')) {
$this.parents('.panel').find('.panel-body').slideUp();
$this.addClass('panel-collapsed');
$this.find('i').removeClass('glyphicon-chevron-up').addClass('glyphicon-chevron-down');
} else {
$this.parents('.panel').find('.panel-body').slideDown();
$this.removeClass('panel-collapsed');
$this.find('i').removeClass('glyphicon-chevron-down').addClass('glyphicon-chevron-up');
}
})
function gettext( maintxt ){
var myRe = /(<b>第.*条<\/b>)\s*(<a name="\d*">)(<\/a>)/g ;
var menu = "";
maintxt = maintxt.replace( /<html>[\s|\S]*<body>/ , "" ) ;
maintxt = maintxt.replace( /<\/body>[\s|\S]*<\/html>/ , "" ) ;
while ((myArray = myRe.exec( maintxt )) !== null) {
myArray[2] = myArray[2].replace( /name="/, 'href="#');
menu = menu + myArray[2]+ myArray[1] + myArray[3] + "<br />";
}
document.querySelector("#menu").innerHTML = menu;
document.querySelector("#maintxt").innerHTML = maintxt;
}
window.onload = function(){
document.querySelector("#afile").addEventListener(
'change', afile_changeHandler);
document.querySelector("#markercolor").addEventListener(
'change', markercolor_changeHandler);
document.querySelector("#fontsize").addEventListener(
'change', fontsize_changeHandler);
}
var fontsize = 14;
function fontsize_changeHandler(evt){
fontsize = document.querySelector("#fontsize").value;
$("#maintxt").attr("style", "font-size: " + fontsize + "px;");
};
var markercolor = "#FFFF00";
function markercolor_changeHandler(evt){
markercolor = document.querySelector("#markercolor").value;
};
function afile_changeHandler(evt){
var file = evt.target.files[0];
var reader = new FileReader();
reader.onload = function (e) {
var array = new Uint8Array(e.target.result);
switch (Encoding.detect(array)) {
case 'UTF16':
array = new Uint16Array(e.target.result);
break;
case 'UTF32':
array = new Uint32Array(e.target.result);
break;
}
var unicodeArray = Encoding.convert(array, 'UNICODE');
var text = Encoding.codeToString(unicodeArray);
gettext(text);
}
reader.readAsArrayBuffer(file);
}
jQuery(function($) {
$("#marker").click( function(evt) {
var selObj = window.getSelection();
if (selObj == '') {return false;}
var range = selObj.getRangeAt(0);
var span = document.createElement("span");
span.style.backgroundColor = markercolor;
range.surroundContents(span);
});
});
jQuery(function($) {
$("#savetext").click( function() {
if (typeof Blob == "undefined") {
alert('このブラウザには対応していません');
}
var newtext = document.querySelector("#maintxt").innerHTML;
if ( newtext == "" ) return;
newtext = "<html><body>" + newtext + "</body></html>";
var blob = new Blob([ newtext ], { "type" : "application/x-mssavetext" });
window.URL = window.URL || window.webkitURL;
$("#savetext").attr("href", window.URL.createObjectURL(blob));
$("#savetext").attr("download", "sample.html");
jQuery("#savetext").trigger("click");
});
});
</script>
</head>
<body>
<table width="100%"><tr><td width="50%">
<!-- left panel --------------------------------------------------------->
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">目次</h3>
<span class="pull-right clickable"><i class="glyphicon glyphicon-chevron-up"></i></span>
</div>
<div class="panel-body">
<div id="menu"></div>
</div>
</div>
</div>
</div>
</div>
<!------------------------------------------------------------>
</td><td width="50%" style="float:right;">
<!-- right panel --------------------------------------------------------->
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">操作パネル</h3>
<span class="pull-right clickable"><i class="glyphicon glyphicon-chevron-up"></i></span>
</div>
<div class="panel-body">
<input id="afile" type="file" name="selectfile" accept="text/html" /><br />
<a id="savetext" target="_blank"><input type="button" value="保存" /></a><br /><br />
フォントサイズ<input id="fontsize" type="range" min="10" max="18" step="1" /><br />
<input type="button" value="マーカー色" id="marker" />:<input type="color" id="markercolor" list="markerlist" value="#FFFF00" />
<datalist id="markerlist">
<option value="#FF0000"></option>
<option value="#00FF00"></option>
<option value="#0000FF"></option>
</datalist>
<br /><br />
</div>
</div>
</div>
</div>
</div>
<!------------------------------------------------------------>
</td></tr></table>
<!-- main text --------------------------------------------------------->
<div id="maintxt" contentEditable="true" style="font-size: 14px;"></div>
<!----------------------------------------------------------->
</body>
</html>
2016年9月20日火曜日
法律とIT その2
法情報学や法令工学といった言葉があるらしい。
これについてググってて見つけた、面白くて刺激的なページ:
「法律とプログラミング」 白田秀彰
「立法爆発と法律のオープン化」 榎並利博
要約すると、、、
法令とプログラミング言語には親和性がありそう。
エキスパートシステムを構築したり、XMLなどで構造化したりすれば、
難解な条文も理解しやすくなるんじゃね?
というより、そもそも元となる条文の言葉が曖昧だったりするんだから、
立法にオープンコーディングの手法を応用しよう!
そして、人にも機械にも優しい整合性のある法律体系を作っちゃおう!
一部の官僚が作った法令をコンピュータで分かりやすくする(努力をする)のではなく、
コンピュータを使って分かりやすい法令を作ろう、という逆転の発想。
特に税法は、みんなに関わってくるんだから、誰にでも理解できるものでないとね。
このアイデア、ぜひ検討して欲しいけど、政府はなかなか動かないだろうなあ、、、。
すぐには現状は変わりそうにない。
とりあえずは、法令工学か。
法令工学の2大潮流のうち、
エキスパートシステム構築系の例が、「論理憲法」で、
法令構造化系の例が、「Japanese Law + XML」ということかな。
前者に関して次の論文が参考になりそうだけど難しい:
「法令工学: 安心な社会システム設計のための方法論」 島津明
とりあえず、簡易条文ビューアのコードを書き始めた。
これについてググってて見つけた、面白くて刺激的なページ:
「法律とプログラミング」 白田秀彰
「立法爆発と法律のオープン化」 榎並利博
要約すると、、、
法令とプログラミング言語には親和性がありそう。
エキスパートシステムを構築したり、XMLなどで構造化したりすれば、
難解な条文も理解しやすくなるんじゃね?
というより、そもそも元となる条文の言葉が曖昧だったりするんだから、
立法にオープンコーディングの手法を応用しよう!
そして、人にも機械にも優しい整合性のある法律体系を作っちゃおう!
一部の官僚が作った法令をコンピュータで分かりやすくする(努力をする)のではなく、
コンピュータを使って分かりやすい法令を作ろう、という逆転の発想。
特に税法は、みんなに関わってくるんだから、誰にでも理解できるものでないとね。
このアイデア、ぜひ検討して欲しいけど、政府はなかなか動かないだろうなあ、、、。
すぐには現状は変わりそうにない。
とりあえずは、法令工学か。
法令工学の2大潮流のうち、
エキスパートシステム構築系の例が、「論理憲法」で、
法令構造化系の例が、「Japanese Law + XML」ということかな。
前者に関して次の論文が参考になりそうだけど難しい:
「法令工学: 安心な社会システム設計のための方法論」 島津明
とりあえず、簡易条文ビューアのコードを書き始めた。
2016年9月19日月曜日
法律とIT
本試験後、問題を見なおしたり、学校の解答解説を聴いたりしなかったけど、
講義中に先生が言うには、法人税法と消費税法の計算問題にミスがあったらしい。
事前に問題を複数の人間でチェックする仕組みがないのかな。
税理士試験って結構、適当だな。
そう思ったら一気にモチベーションが下がって、答練の出来も悪かった。
体調は今ひとつだし、あいかわらず仕事は見つからないし、
PHP上級の勉強も進まないし。
涼しい日が多くなったのが唯一の救い。
冲方丁著「天地明察」、読んだ。
読んだら止まらなくなって、翻訳の仕事が遅れた。
仕事の量が少なかったから、なんとかなったけど。
以前、Windows上で動く条文調理師というソフトを少し使ってみたら
なかなか良かった。それで、おいらも似たものを作ってみたいと
思ってたんだけど、簡易版ならHTML5とJavaScriptで出来るかな?
そもそも、財務諸表のXBRLのように、法律条文用XMLもあるのかな?
ってググったら、面白そうなサイトを見つけた。
「論理憲法」 http://bitlaw-jp.github.io/logicon-system/index.html
「日本国憲法をコンピュータで処理できるプログラムに書き換えることで、
ユーザーからの質問に対して憲法に忠実な回答を返すことを目的としたシステムです。」
でも、Prologが分からない、、、。
「Japanese Law + XML」 http://law.2nx.info/
六法のXMLデータをダウンロードできるんだけど、スキーマは?
税法にも使えるかな?
講義中に先生が言うには、法人税法と消費税法の計算問題にミスがあったらしい。
事前に問題を複数の人間でチェックする仕組みがないのかな。
税理士試験って結構、適当だな。
そう思ったら一気にモチベーションが下がって、答練の出来も悪かった。
体調は今ひとつだし、あいかわらず仕事は見つからないし、
PHP上級の勉強も進まないし。
涼しい日が多くなったのが唯一の救い。
冲方丁著「天地明察」、読んだ。
読んだら止まらなくなって、翻訳の仕事が遅れた。
仕事の量が少なかったから、なんとかなったけど。
以前、Windows上で動く条文調理師というソフトを少し使ってみたら
なかなか良かった。それで、おいらも似たものを作ってみたいと
思ってたんだけど、簡易版ならHTML5とJavaScriptで出来るかな?
そもそも、財務諸表のXBRLのように、法律条文用XMLもあるのかな?
ってググったら、面白そうなサイトを見つけた。
「論理憲法」 http://bitlaw-jp.github.io/logicon-system/index.html
「日本国憲法をコンピュータで処理できるプログラムに書き換えることで、
ユーザーからの質問に対して憲法に忠実な回答を返すことを目的としたシステムです。」
でも、Prologが分からない、、、。
「Japanese Law + XML」 http://law.2nx.info/
六法のXMLデータをダウンロードできるんだけど、スキーマは?
税法にも使えるかな?
2016年8月22日月曜日
天気予報の読み上げ
目覚まし(前回の記事を参照)の追加機能として、
天気予報を読み上げるスクリプトを書いたんだけど、
結局、使わずに放置してて、危うくなくすとこだった。
せっかくだから、ここにメモしておこ。手順は次の通り。
1.MOCをインストール
2.Open JTalkをインストール
"文章校正のためにOpen JTalkを使って日本語テキストを読み上げる"
に書いてある通りにしたら大丈夫だった。
ただ、間延びパッチを当てようとしたら、そんなファイルは無い、というメッセージ。
もう必要ないのかな?
3.下記のファイルread_out.shを準備し、ホームディレクトリに置く
4.実行
~$ ./read_out.sh
以上。
read_out.sh ---------------------------------------------------
#!/bin/bash
#古い音声ファイルを削除
rm -f ~/output.wav
#天気情報サイトからXMLファイルを取得し、読み上げ用の文字列を抽出・生成
ALLDESC=`wget -q -O - http://weather.livedoor.com/forecast/rss/area/130010.xml | grep "<description.*>\(.*\)<\/description>" | tr -d ' '`
ARR=(`echo $ALLDESC | tr -s '<\/description>' ' '`)
DESC=(`echo ${ARR[0]/'℃'/'度'}`)
DESC=(`echo ${DESC/')'/'曜日')}`)
#文字列の確認-例:"22日(月曜日)の天気は雨、最高気温は29度でしょう。"
#echo $DESC
#文字列から音声ファイルを生成
echo $DESC | open_jtalk -m /usr/local/share/open_jtalk/hts_voice_nitech_jp_atr503_m001-1.05/nitech_jp_atr503_m001.htsvoice -ow ~/output.wav -x /usr/local/share/open_jtalk/open_jtalk_dic_utf_8-1.09/
sleep 3
#音声ファイルを再生
mocp -S
sleep 3
if [ -f ~/output.wav ]; then
mocp -v +30 -l ~/output.wav
sleep 10
fi
mocp -s -x
sleep 3
-------------------------------------------------------------
参考にしたページ:
"文章校正のためにOpen JTalkを使って日本語テキストを読み上げる"
"shとbashでの変数内の文字列置換など"
天気予報を読み上げるスクリプトを書いたんだけど、
結局、使わずに放置してて、危うくなくすとこだった。
せっかくだから、ここにメモしておこ。手順は次の通り。
1.MOCをインストール
2.Open JTalkをインストール
"文章校正のためにOpen JTalkを使って日本語テキストを読み上げる"
に書いてある通りにしたら大丈夫だった。
ただ、間延びパッチを当てようとしたら、そんなファイルは無い、というメッセージ。
もう必要ないのかな?
3.下記のファイルread_out.shを準備し、ホームディレクトリに置く
4.実行
~$ ./read_out.sh
以上。
read_out.sh ---------------------------------------------------
#!/bin/bash
#古い音声ファイルを削除
rm -f ~/output.wav
#天気情報サイトからXMLファイルを取得し、読み上げ用の文字列を抽出・生成
ALLDESC=`wget -q -O - http://weather.livedoor.com/forecast/rss/area/130010.xml | grep "<description.*>\(.*\)<\/description>" | tr -d ' '`
ARR=(`echo $ALLDESC | tr -s '<\/description>' ' '`)
DESC=(`echo ${ARR[0]/'℃'/'度'}`)
DESC=(`echo ${DESC/')'/'曜日')}`)
#文字列の確認-例:"22日(月曜日)の天気は雨、最高気温は29度でしょう。"
#echo $DESC
#文字列から音声ファイルを生成
echo $DESC | open_jtalk -m /usr/local/share/open_jtalk/hts_voice_nitech_jp_atr503_m001-1.05/nitech_jp_atr503_m001.htsvoice -ow ~/output.wav -x /usr/local/share/open_jtalk/open_jtalk_dic_utf_8-1.09/
sleep 3
#音声ファイルを再生
mocp -S
sleep 3
if [ -f ~/output.wav ]; then
mocp -v +30 -l ~/output.wav
sleep 10
fi
mocp -s -x
sleep 3
-------------------------------------------------------------
参考にしたページ:
"文章校正のためにOpen JTalkを使って日本語テキストを読み上げる"
"shとbashでの変数内の文字列置換など"
2016年8月17日水曜日
電脳目覚まし時計化計画 まとめ
この前、OSを入れ替えたら目覚ましが動かなくなった。
原因は、ライン出力が勝手にミュートになることと、
MOCのオプション設定の仕方が微妙に変わってたこと。
ひとつ目は、音声ファイル再生用のスクリプトに、
amixer sset Master on 100%
の一行を追加し、
ふたつ目は、
-o pepeat を -o r
に変更することで解決した。
今年の税理士試験が終わり、風邪も治ったところで、目覚ましのまとめ。
概要:
晩にPCを使ったあと、一定の方法で電源を切る。
翌朝、自動でPCの電源が入り、しばらく音声ファイルを再生した後、
電源が切れる。
種明かしをすると、
rtcwakeを使って指定した時刻(例えば5時57分)にPCを起動すると、
cronによって所定のスクリプトが(例えば6時に)実行される、というだけ。
環境:
OSは、Ubuntu 16.04 LTS 日本語 Remix
マザーボードは、ASRock N3150DC-ITX
百円ショップで買ったキューブ型スピーカー2個
音楽再生ソフトMOC(MusicOnConsole)インストール済み
用意するファイル(4つとも/home/user/に置いておく):
wakeup.mp3 :再生用の音声ファイルとして好きなものを用意
(おいらは、15分ぐらいの鳥のさえずりを使ってる。)
mycrontab.txt :crontabにスケジュールを設定するためのテキストファイル
myplaymusic.sh:cronに呼び出される、音声ファイル再生用スクリプト
mysuspenduntile.sh:起動時刻を指定してPCをシャットダウンするためのスクリプト
手順:
1.crontabへスケジュールを書き込む:
sudo -i
crontab /home/user/crontab.txt
crontab -l
2.毎晩、PCでの作業を終えたあと、スクリプトを呼び出して電源OFF
sudo /home/user/mysuspenduntile.sh
ファイルの内容:
mycrontab.txt --------------------------------------------
00 06 * * * /home/user/myplaymusic.sh
myplaymusic.sh -------------------------------------------
#!/bin/bash
amixer sset Master on 100%
mocp -S
sleep 5
mocp -o r -v -40 -l /home/user/wakeup.mp3
for (( i=1 ; i<9 ; i++ ))
do
sleep 90
mocp -v +10
done
sleep 900
mocp -s -x
sleep 3
/sbin/shutdown -P now
mysuspenduntile.sh ---------------------------------------
#!/bin/bash
WAKEUPTIME="5:57"
DESIRED=$((`date +%s -d "$WAKEUPTIME"`))
NOW=$((`date +%s`))
if [ $DESIRED -lt $NOW ]; then
DESIRED=$((`date +%s -d "$WAKEUPTIME"` + 24*60*60))
fi
killall rtcwake
rtcwake -m off -t $DESIRED
----------------------------------------------------
以上。
なお、mysuspenduntile.shは、次のコードのパクリです。
"Automatically sleep and wake-up at specific times"
http://askubuntu.com/questions/61708/automatically-sleep-and-wake-up-at-specific-times
原因は、ライン出力が勝手にミュートになることと、
MOCのオプション設定の仕方が微妙に変わってたこと。
ひとつ目は、音声ファイル再生用のスクリプトに、
amixer sset Master on 100%
の一行を追加し、
ふたつ目は、
-o pepeat を -o r
に変更することで解決した。
今年の税理士試験が終わり、風邪も治ったところで、目覚ましのまとめ。
概要:
晩にPCを使ったあと、一定の方法で電源を切る。
翌朝、自動でPCの電源が入り、しばらく音声ファイルを再生した後、
電源が切れる。
種明かしをすると、
rtcwakeを使って指定した時刻(例えば5時57分)にPCを起動すると、
cronによって所定のスクリプトが(例えば6時に)実行される、というだけ。
環境:
OSは、Ubuntu 16.04 LTS 日本語 Remix
マザーボードは、ASRock N3150DC-ITX
百円ショップで買ったキューブ型スピーカー2個
音楽再生ソフトMOC(MusicOnConsole)インストール済み
用意するファイル(4つとも/home/user/に置いておく):
wakeup.mp3 :再生用の音声ファイルとして好きなものを用意
(おいらは、15分ぐらいの鳥のさえずりを使ってる。)
mycrontab.txt :crontabにスケジュールを設定するためのテキストファイル
myplaymusic.sh:cronに呼び出される、音声ファイル再生用スクリプト
mysuspenduntile.sh:起動時刻を指定してPCをシャットダウンするためのスクリプト
手順:
1.crontabへスケジュールを書き込む:
sudo -i
crontab /home/user/crontab.txt
crontab -l
2.毎晩、PCでの作業を終えたあと、スクリプトを呼び出して電源OFF
sudo /home/user/mysuspenduntile.sh
ファイルの内容:
mycrontab.txt --------------------------------------------
00 06 * * * /home/user/myplaymusic.sh
myplaymusic.sh -------------------------------------------
#!/bin/bash
amixer sset Master on 100%
mocp -S
sleep 5
mocp -o r -v -40 -l /home/user/wakeup.mp3
for (( i=1 ; i<9 ; i++ ))
do
sleep 90
mocp -v +10
done
sleep 900
mocp -s -x
sleep 3
/sbin/shutdown -P now
mysuspenduntile.sh ---------------------------------------
#!/bin/bash
WAKEUPTIME="5:57"
DESIRED=$((`date +%s -d "$WAKEUPTIME"`))
NOW=$((`date +%s`))
if [ $DESIRED -lt $NOW ]; then
DESIRED=$((`date +%s -d "$WAKEUPTIME"` + 24*60*60))
fi
killall rtcwake
rtcwake -m off -t $DESIRED
----------------------------------------------------
以上。
なお、mysuspenduntile.shは、次のコードのパクリです。
"Automatically sleep and wake-up at specific times"
http://askubuntu.com/questions/61708/automatically-sleep-and-wake-up-at-specific-times
2016年2月16日火曜日
週の反省と目覚まし
昨日書こうと思って忘れてた。
先週の答練:
法人税は論外。
相続と消費は、相変わらずケアレスミスを潰せず。
答練があったらその日のうちにミスノートを書く。
そして、昨年度のものも含めて毎日少しずつでも眺める。
答練の間は時々、背を伸ばして深呼吸し、全体を見渡す。
あと半年ぐらい、頑張れるよね。
ところで、
図書館で借りた「図解でわかるLinuxシェルスクリプト」
を読みながら、スクリプトの例をひとつずつ打って
確認してるんだけど、正規表現がわからないなあ。
目覚ましだけど、xmllintを使うのはやめて、
wget -q -O で取得したXMLデータをパイプでgrepやtrに渡して、
抽出整形し、読み上げ用の文を作った。
麦抜きの白米だけを食べるようにしたら、
腹の具合が良くなった。犯人は麦だったんかい、、、。
先週の答練:
法人税は論外。
相続と消費は、相変わらずケアレスミスを潰せず。
答練があったらその日のうちにミスノートを書く。
そして、昨年度のものも含めて毎日少しずつでも眺める。
答練の間は時々、背を伸ばして深呼吸し、全体を見渡す。
あと半年ぐらい、頑張れるよね。
ところで、
図書館で借りた「図解でわかるLinuxシェルスクリプト」
を読みながら、スクリプトの例をひとつずつ打って
確認してるんだけど、正規表現がわからないなあ。
目覚ましだけど、xmllintを使うのはやめて、
wget -q -O で取得したXMLデータをパイプでgrepやtrに渡して、
抽出整形し、読み上げ用の文を作った。
麦抜きの白米だけを食べるようにしたら、
腹の具合が良くなった。犯人は麦だったんかい、、、。
2016年2月8日月曜日
週の反省と目覚まし
先週の答練はまあまあ。
理論、計算のそれぞれでケアレスミスを1,2個ずつやらかすのが治らない。
困ったね。
目覚ましの件、考えてみたら、朝起きる時刻はいつも同じ。
で、その時刻をスクリプトに直接書き込むことにした。
ついでに、rtcwakeの前に子守唄を30分ぐらい、流すことにした。
それから、天気予報の読み上げが大体できた。
1.ライブドアのサイトから天気予報のXMLファイルをwgetで取得。
2.必要なテキストをxmllintで抽出。
3.sedで整形し、読み上げ用の文を準備。
4.open_jtalkに渡して、音声ファイルを生成。
5.MOCで再生。
「マネーと国家と僕らの未来」、読んだ。
主にビットコインの話。
国家の意味が徐々に揺らいできている今、
新しいタイプの通貨について考える必要があるのかも。
そもそも円やドルも国家が信用を保証する仮想のものだし。
「ホリエモンの宇宙論」の時も思ったけど、
ホリエモンの目の付け所がいいし、説明の仕方もうまい。
所有VSシェアの話も面白かった。
10日以上麦飯を続けたら、妙にお腹がゆるくなった。
毎日ではなく、時々食べることにする。
理論、計算のそれぞれでケアレスミスを1,2個ずつやらかすのが治らない。
困ったね。
目覚ましの件、考えてみたら、朝起きる時刻はいつも同じ。
で、その時刻をスクリプトに直接書き込むことにした。
ついでに、rtcwakeの前に子守唄を30分ぐらい、流すことにした。
それから、天気予報の読み上げが大体できた。
1.ライブドアのサイトから天気予報のXMLファイルをwgetで取得。
2.必要なテキストをxmllintで抽出。
3.sedで整形し、読み上げ用の文を準備。
4.open_jtalkに渡して、音声ファイルを生成。
5.MOCで再生。
「マネーと国家と僕らの未来」、読んだ。
主にビットコインの話。
国家の意味が徐々に揺らいできている今、
新しいタイプの通貨について考える必要があるのかも。
そもそも円やドルも国家が信用を保証する仮想のものだし。
「ホリエモンの宇宙論」の時も思ったけど、
ホリエモンの目の付け所がいいし、説明の仕方もうまい。
所有VSシェアの話も面白かった。
10日以上麦飯を続けたら、妙にお腹がゆるくなった。
毎日ではなく、時々食べることにする。
2016年2月4日木曜日
イタリア語講座
デスクトップのZorin10 64bitで、CaptureStreamが使えるようになった。
How to run GUI CaptureStream on Ubuntu 14.10
まず、このサイトにある通りにライブラリをダウンロード・インストール。
以下のコマンドで依存関係がどうこう言われるも、指示通りにしたら解決。
$ sudo dpkg -i $HOME/Downloads/libass4_0.10.1-3ubuntu1_i386.deb
次に、FFmpeg Static Builds から、
ffmpeg-release-64bit-static.tar.xzをダウンロードし、
中にあるffmpeg(2.8.6)で、CaptureStream同梱のものを置換。
これで動くようになった、良かった。
現在放送中のイタリア語講座応用編は文法の復習らしいので退屈だろう、
と思ってたけど、今日聴いてみたら楽しくて笑えた。
学校の講義・答練がない日は一回分聴く、というルールにした。
ZorinOSのサイトを見たら、11coreのダウンロードが始まってた。
近いうちに試してみたいな。
How to run GUI CaptureStream on Ubuntu 14.10
まず、このサイトにある通りにライブラリをダウンロード・インストール。
以下のコマンドで依存関係がどうこう言われるも、指示通りにしたら解決。
$ sudo dpkg -i $HOME/Downloads/libass4_0.10.1-3ubuntu1_i386.deb
次に、FFmpeg Static Builds から、
ffmpeg-release-64bit-static.tar.xzをダウンロードし、
中にあるffmpeg(2.8.6)で、CaptureStream同梱のものを置換。
これで動くようになった、良かった。
現在放送中のイタリア語講座応用編は文法の復習らしいので退屈だろう、
と思ってたけど、今日聴いてみたら楽しくて笑えた。
学校の講義・答練がない日は一回分聴く、というルールにした。
ZorinOSのサイトを見たら、11coreのダウンロードが始まってた。
近いうちに試してみたいな。
2016年2月1日月曜日
週・月の反省、目覚まし
先週半ばから腰痛。
軽いヘルニアなので、毎晩、寝る前に腰を伸ばすストレッチをしてるんだけど、
それでもたまに、痛むことがある。
日常生活に支障をきたす程ではないし、一週間くらいで自然に治まるから、それまでの我慢。
さて、一日遅れの週・月の反省。
冬休み明けに入った気合が抜けてきた。ゴム風船の空気かい、、、。
あと6ヶ月ちょっとぐらい頑張れると思うんだけど。
それから、古い理論マスターから新しいものへの移行(メモのコピーなど)を
なるべく早く終わらせよう。
先週の答練:
相続の計算問題に相次相続や贈与税額控除の端数処理が出て、間違えた。
忘れてたから仕方ないけど、広い範囲をざっくり復習する必要あり。
法人と消費は、問題分の読み落としや読み間違えによるケアレスミス。
対策を検討中。
消費の計算問題だけど、以前通り、頭から読みながら転記した。
ボールペンはジェットストリーム7ミリの青。
ところで、目覚ましに関して便利なスクリプトを見つけた:
Automatically sleep and wake-up at specific times
日付を指定せずにrtcwakeを使えるのが良い。
ただ、rtcwake のオプションを” -m off ”と変更して実行すると、
翌朝に勝手に電源スイッチが入るだけで、その後ろの処理がされない。
そこでまず、下の”playmusic.sh”を例えば、6時ちょうどに実行するよう、crontabに登録しておく。
そして、晩にPCを使い終わったら、
/home/user/my_suspend_until.sh 5:55
を実行してシャットダウン。
すると、翌朝の6時前にPCが自動起動。
6時から30分ぐらい、ボリュームを徐々に上げながら音楽を再生してシャットダウン。
playmusic.sh ーーーーーーーーーー
#!/bin/bash
mocp -S
sleep 3
mocp -o repeat -v -20 -l /home/user/wakeup.mp3
for (( i=1 ; i<8 ; i++ ))
do
sleep 120
mocp -v +10
done
sleep 900
mocp -s -x
sleep 3
/sbin/shutdown -P now
ーーーーーーーーーーーーーーーーー
軽いヘルニアなので、毎晩、寝る前に腰を伸ばすストレッチをしてるんだけど、
それでもたまに、痛むことがある。
日常生活に支障をきたす程ではないし、一週間くらいで自然に治まるから、それまでの我慢。
さて、一日遅れの週・月の反省。
冬休み明けに入った気合が抜けてきた。ゴム風船の空気かい、、、。
あと6ヶ月ちょっとぐらい頑張れると思うんだけど。
それから、古い理論マスターから新しいものへの移行(メモのコピーなど)を
なるべく早く終わらせよう。
先週の答練:
相続の計算問題に相次相続や贈与税額控除の端数処理が出て、間違えた。
忘れてたから仕方ないけど、広い範囲をざっくり復習する必要あり。
法人と消費は、問題分の読み落としや読み間違えによるケアレスミス。
対策を検討中。
消費の計算問題だけど、以前通り、頭から読みながら転記した。
ボールペンはジェットストリーム7ミリの青。
ところで、目覚ましに関して便利なスクリプトを見つけた:
Automatically sleep and wake-up at specific times
日付を指定せずにrtcwakeを使えるのが良い。
ただ、rtcwake のオプションを” -m off ”と変更して実行すると、
翌朝に勝手に電源スイッチが入るだけで、その後ろの処理がされない。
そこでまず、下の”playmusic.sh”を例えば、6時ちょうどに実行するよう、crontabに登録しておく。
そして、晩にPCを使い終わったら、
/home/user/my_suspend_until.sh 5:55
を実行してシャットダウン。
すると、翌朝の6時前にPCが自動起動。
6時から30分ぐらい、ボリュームを徐々に上げながら音楽を再生してシャットダウン。
playmusic.sh ーーーーーーーーーー
#!/bin/bash
sleep 3
mocp -o repeat -v -20 -l /home/user/wakeup.mp3
for (( i=1 ; i<8 ; i++ ))
do
sleep 120
mocp -v +10
done
sleep 900
mocp -s -x
sleep 3
/sbin/shutdown -P now
ーーーーーーーーーーーーーーーーー
オプションを” -m disk ”にすれば、このコードを直接、
my_suspend_until.shに書き込めるんだろうけど、
キーボードに物が当たったりすると、PCが目を覚ましちゃうんだよね。
2016年1月5日火曜日
食事と目覚まし
税法3科目の受験勉強には相当、エネルギーが要るのに、
ここ数ヶ月で体重が何故か4キロ落ちた。
なんとかしないと思い、パン食をご飯に変えることにした。
これまでは朝昼サンドイッチ、コッペパンにバナナ、夕食は
弁当屋の弁当だったけど、今後は毎日、ご飯を炊く。
朝は卵&納豆かけご飯、昼はご飯に冷凍のハンバーグ、
夕はご飯にスーパーで買った惣菜、味噌汁。
ただ、思ったより胃袋が小さくなってて
半合のご飯とおかず少しで満腹。
少しずつ慣れるしかないなあ。
それから、ご飯にしたことで、一日の食費が800円位から
600円位に減りそう。
目覚まし用にcrontabに読ませるcrontab.txtを変更。
42 04 * * * mocp -S
43 04 * * * mocp -o repeat -l /home/username/wakeup.mp3
46 04 * * * mocp -v +10
49 04 * * * mocp -v +10
52 04 * * * mocp -v +10
13 05 * * * mocp -s -x
14 05 * * * /sbin/shutdown -P now
流す音楽は鳥のさえずりがメインのヒーリングミュージック。
合間に当日の天気予報のXMLファイルをWebサービスから取得し、
読み上げさせたいんだけど、まだ、勉強中。
そもそもスクリプトの書き方が分かってないし、、、。
ここ数ヶ月で体重が何故か4キロ落ちた。
なんとかしないと思い、パン食をご飯に変えることにした。
これまでは朝昼サンドイッチ、コッペパンにバナナ、夕食は
弁当屋の弁当だったけど、今後は毎日、ご飯を炊く。
朝は卵&納豆かけご飯、昼はご飯に冷凍のハンバーグ、
夕はご飯にスーパーで買った惣菜、味噌汁。
ただ、思ったより胃袋が小さくなってて
半合のご飯とおかず少しで満腹。
少しずつ慣れるしかないなあ。
それから、ご飯にしたことで、一日の食費が800円位から
600円位に減りそう。
目覚まし用にcrontabに読ませるcrontab.txtを変更。
42 04 * * * mocp -S
43 04 * * * mocp -o repeat -l /home/username/wakeup.mp3
46 04 * * * mocp -v +10
49 04 * * * mocp -v +10
52 04 * * * mocp -v +10
13 05 * * * mocp -s -x
14 05 * * * /sbin/shutdown -P now
流す音楽は鳥のさえずりがメインのヒーリングミュージック。
合間に当日の天気予報のXMLファイルをWebサービスから取得し、
読み上げさせたいんだけど、まだ、勉強中。
そもそもスクリプトの書き方が分かってないし、、、。
2015年11月25日水曜日
無題
日本語入力環境を変更。
sudo apt-get install fcitx-mozc
はじめから入っていた IBus-Anthyは、
ソフトウェアセンターから削除。
毎月恒例の翻訳の依頼がきた。
予想に反してボリュームがあるから、
気合を入れてさっさと終えよう思いつつ、
ネットで「下町ロケット」を観て、
「永遠の0」を読み始めた。
誘惑が多すぎるのか、意志が弱すぎるのか、、、。
仕事が終わるまでは、ゾーさん(ZorinOS)と
遊ぶのは控えて、木製PCケースの製作も休むかな。
勉強もあるし。
sudo apt-get install fcitx-mozc
はじめから入っていた IBus-Anthyは、
ソフトウェアセンターから削除。
毎月恒例の翻訳の依頼がきた。
予想に反してボリュームがあるから、
気合を入れてさっさと終えよう思いつつ、
ネットで「下町ロケット」を観て、
「永遠の0」を読み始めた。
誘惑が多すぎるのか、意志が弱すぎるのか、、、。
仕事が終わるまでは、ゾーさん(ZorinOS)と
遊ぶのは控えて、木製PCケースの製作も休むかな。
勉強もあるし。
2015年11月20日金曜日
電脳目覚まし時計化計画
rtcwake、cron、mocによって、デスクトップPCを簡易目覚ましとして使うためのメモ。
1 次のWebページを読む。
(1) ”Ubuntu 12.04 で ACPI wake up を試してみた”
(2) ”rtcwake - 指定時間になったらスリープ/休止状態/電源OFFから自動的に復帰”
(3) ”crontabの使い方”
2 ターミナル起動
Ctrl + Alt + t でターミナル起動し、rootに。
$ sudo -i
3 moc
ソフトウェアセンターで、moc (music on console)をインストール。
# mocp -S sample.mp3
# mocp -p
# mocp -s
# mocp -x
動くようなら、再生する音楽ファイルのリスト(myplaylist.m3u)を作っておく。
4 rtcwake
1(1)に、
”wake up の設定をした後に hardware clock が更新されると wake up が動かなくなるので、 この更新を無効にする。 /etc/init/hwclock-save.conf の exec から始まる行に # を加えてコメントアウトする。”
とある。
ネットブック環境(EeePC1005 + ZorinOS 9 Lite 32bit)では必要だけれど、
デスクトップ環境(2015年11月9日投稿分参照)では不要だった。
# rtcwake -m disk -s 120
120秒間スリープしてくれればOK。
# rtcwake -m off -s 120
これでシャットダウン、120秒後に自動でパワー・オンならOK。
5 cron
# crontab -e
でエディターを選択の上、次を書き込む。
20 17 * * * /sbin/shutdown -P now
確認
# crontab -l
17時20分にシャットダウンしてくれればOK。
スケジュールをクリアするには、 # crontab -r ログを見るには、
# cat /var/log/syslog
6 目覚ましのセット
以下の内容のファイルを作る(crontab.txt)
12 05 * * * mocp -S /home/username/myplaylist.m3u
13 05 * * * mocp -p
18 05 * * * mocp -s
19 05 * * * mocp -x
20 05 * * * /sbin/shutdown -P now
ファイルを読ませて、確認
# crontab /home/username/crontab.txt
# crontab -l
7 使い方
晩に次のコマンドでPCの電源を切る。(”2015-11-20”の部分は翌日の年月日にすること)
# rtcwake -m off -t $(date +%s -d "2015-11-20 05:10:00")
翌朝、5時10分にPCが自動起動。
5時13分から5分間、音楽を再生し、5時20分にシャットダウン。
あとは、bluetooth接続のスピーカーを買って枕元に置くだけ。
1 次のWebページを読む。
(1) ”Ubuntu 12.04 で ACPI wake up を試してみた”
(2) ”rtcwake - 指定時間になったらスリープ/休止状態/電源OFFから自動的に復帰”
(3) ”crontabの使い方”
2 ターミナル起動
Ctrl + Alt + t でターミナル起動し、rootに。
$ sudo -i
3 moc
ソフトウェアセンターで、moc (music on console)をインストール。
# mocp -S sample.mp3
# mocp -p
# mocp -s
# mocp -x
動くようなら、再生する音楽ファイルのリスト(myplaylist.m3u)を作っておく。
4 rtcwake
1(1)に、
”wake up の設定をした後に hardware clock が更新されると wake up が動かなくなるので、 この更新を無効にする。 /etc/init/hwclock-save.conf の exec から始まる行に # を加えてコメントアウトする。”
とある。
ネットブック環境(EeePC1005 + ZorinOS 9 Lite 32bit)では必要だけれど、
デスクトップ環境(2015年11月9日投稿分参照)では不要だった。
# rtcwake -m off -s 120
これでシャットダウン、120秒後に自動でパワー・オンならOK。
5 cron
# crontab -e
でエディターを選択の上、次を書き込む。
20 17 * * * /sbin/shutdown -P now
確認
# crontab -l
17時20分にシャットダウンしてくれればOK。
スケジュールをクリアするには、 # crontab -r ログを見るには、
# cat /var/log/syslog
6 目覚ましのセット
以下の内容のファイルを作る(crontab.txt)
12 05 * * * mocp -S /home/username/myplaylist.m3u
13 05 * * * mocp -p
18 05 * * * mocp -s
19 05 * * * mocp -x
20 05 * * * /sbin/shutdown -P now
ファイルを読ませて、確認
# crontab /home/username/crontab.txt
# crontab -l
7 使い方
晩に次のコマンドでPCの電源を切る。(”2015-11-20”の部分は翌日の年月日にすること)
# rtcwake -m off -t $(date +%s -d "2015-11-20 05:10:00")
翌朝、5時10分にPCが自動起動。
5時13分から5分間、音楽を再生し、5時20分にシャットダウン。
あとは、bluetooth接続のスピーカーを買って枕元に置くだけ。
登録:
投稿 (Atom)
