2018年12月7日金曜日

『残酷すぎる成功法則』

エリック・バーカー, 橘玲, 竹中てる実 著)より


日本にも「幸福になれる」とか「人生うまくいく」とかの本はたくさんある。

じつはこれらの本には、ひとつの共通点がある。それは証拠(エビデンス)がないことだ。

「めそめそ泣いて(Whiny)、去勢された(Neutered)ヤギたちが(Goats)空を飛ぶ(Fly)」。このイメージを頭に描こう。あなたはたった今、面白いゲームすべてに共通する四文字を知った。頭文字を取って「WNGF」だ。なぜなら、面白いゲームに含まれる共通要素は、勝てること(Winnable)、斬新であること(Novel)、目標(Goals)、 フィードバック(Feedback)の四つだからだ。

ドラッカーは、時間が最も希少な資源だと考えていた。彼が人びとに薦めた第一の防衛策はスケジュール管理の向上ではなく、自分の目標を達成するうえで、その進捗に寄与しないすべてのものを断つことだった。

エッティンゲンは、これと同じシステムを、私たちが実践しやすいシンプルな形にまとめ、「WOOP」と名づけた(正式な用語では「心理対比」というが、ここでは「WOOP」と呼びたい)。WOOPとは、願い(Wish)、成果(Outcome)、障害(Obstacle)、計画(Plan)の頭文字を取ったもので、仕事や人間関係、運動、減量など、ありとあらゆる目標に適用できる法則である。

作家のチャールズ・デュヒッグはすぐれた著書『習慣の力』(講談社)のなかで、ハーバード大学が一九九四年に、劇的に人生を変えた人びとを対象に行った調査にふれている。多くの場合、彼らの人生を形づくったものはある重大な変化ではなく、自分があんな風になりたいと思った人びとから成るグループに参加したことだった

「ダニング=クルーガー効果」とは、経験が浅い者ほど、ものごとがどれほど困難なのかを評価する尺度を持たないので自信満々でいられる、という奇妙な現象のことをいう。きっと誰でも経験があるはずだ。たとえば、誰かがヨガのポーズを取っているのを見ると簡単そうに思えるが、いざやってみると思っていた以上に難しかったりする。絵画を見ながら、「私でも描けそう」とつぶやいたりするのも同じことだ

ここでくせ者なのは「仕事(Work)」という言葉だ。「仕事」は嫌なものだという響きがある。「この仕事を全部しなければならないなんてウンザリだ」とか。でも、仕事には「職務(Job)」という意味もある。自分の職務が充実していたら、ちっとも悪いものではなくなる。マーク・トウェインが『トム・ソーヤーの冒険』で書いているように、「仕事はしなければならないことでできているが、遊びはしなくてもよいことでできている」。  あなたが仕事を楽しめば、たとえストレスがあろうと、結局それは報われる。

スタンフォード大学の調査によれば、無に等しい。五五時間を超過すると生産性は急激に低下するので、「週に七〇時間働く者は、余分な一五時間で何も生産しないことになる」という。生みだされているのはストレスだけ。  社会科学と関連する経済的問題を扱う雑誌『ジャーナル・オブ・ソシオエコノミックス』に掲載された論文では、残業ストレスによる幸福感の減少は、残業代がもたらす幸福感の増加を上まわるとの調査結果が示された。お金では埋め合わせが利かない。

本当に管理すべきは時間ではなく、エネルギーなのだ。そこで量的な価値より質的な価値に焦点を合わせるレンズが必要となる。すべての時間は、質的に同等ではない。また、私たちは機械ではない。けれども、時間モデルは機械をモデルとしている。私たちの仕事は機械になることではない。あくまでも、機械にすぐれた仕事をさせることだ。

人類史で言えばつい最近まで、私たちはせいぜい一〇〇~二〇〇人規模の部族にいたので、これだけは誰にも負けないというものを持てた。特別で価値ある存在になれたのだ。しかし今、私たちは七〇億人という地球規模の種族に属している。自分よりすぐれた存在が際限なくいて、メディアはいつもそうした人びとを取りあげる。その結果、目標に近づくための基準もかぎりなく跳ねあがった。

ここに問題がある。私たちは選択権を持つことが好きだ。しかし選択をすることは嫌いだ。選択肢があることは、可能性を意味するが、選択することは、その可能性を失うことを意味する。そして選択肢が多いほど、後悔する機会も増えることになる。

格安SIM導入 Android 7.0 Update

Android をアップデートするとつながらなくなった。

APNを再設定するとつながるとのこと。

やってみた。

つながらない。

結果、FEP が変わり、英単語の後には自動でスペースが入ることが原因。。。

スペースはトリムしてよ。。。

2018年12月1日土曜日

mp3 に自動で歌詞を入れてみる 2

perl で mp3 の歌詞を自動で入れたい。改良。

動かし方:フォルダーに mp3 を入れて起動。
perl filegetlyricsJ.pl  "/mnt/d/music/mp3/test/"
mp3 の tag の曲名とアーティスト名から、歌詞をとってきます。
ただ、取りに行っているサイトの関係で、日本の歌ぐらいしか取れてません。

環境:windows10 に ubuntu を入れて実行してます。
$ sudo apt-get install libmp3-tag-perl
とかで、モジュールは追加。

習作ですがとりあえず公開。

------------------------------- filegetlyricsJ.pl の名前で以下を保存
#!/usr/bin/perl

# 日本語EUC-JP、LF

use strict;
use warnings;
use Data::Dumper;

use Jcode;
use Encode;
use URI::Escape;
use LWP::Simple;
use MP3::Tag;
use File::Basename;

die "Please specify folder" if ( $#ARGV < 0 );

while ( my $path = shift @ARGV ) {
chdir($path);
my @files = glob "*.mp3";

foreach my $f (@files){
print "try $f \n";
my $result = GetLyrics( $f )
}
}

sub GetLyrics {
my $file = shift @_;

my $lyr = GetInferedLyrics( $file )
or warn "32 Lyrics not found for " . basename( $file );
# 歌詞がないと戻る
return if ( !$lyr );

#歌詞を見るとき
#print "$lyr \n";

#text file 書き出し
# my $txtWrite = WriteWriteLyrics($file,$lyr);

#mp3 処理
my $mp3 = MP3::Tag->new( $file ) or return; # エラー
print "44 $file \n";
$mp3->select_id3v2_frame_by_descr("USLT(eng)", $lyr);     # 歌詞
$mp3->update_tags();
$mp3->close;

warn "All done ----- $file";

return $file
}
#text file 書き出し
sub WriteWriteLyrics {
my $file = shift @_;
my $lyr = shift @_;

my $txtFile = $file;
$txtFile =~ s/\.mp3$/.txt/i;
open( W, ">" . $txtFile ) or next;
binmode W;
print W $lyr;
close( W );
return $txtFile;
}

sub GetInferedLyrics {
my $file = shift @_;

# tag 取得
my( $title, $art ) = GetFuzzyID3Tags( $file ) or return; # エラー

# 歌詞取得
my @list = GetCandidates(
$art,
$title
);
print "77 $art\n";
print "78 $title\n";
# エラー
# Space を + にして実行
if ( $#list != 0 ){
$art =~ s/\s/\+/g;
@list = GetCandidates($art,$title);
}
if ( $#list != 0 ){
$title =~ s/\s/\+/g;
@list = GetCandidates($art,$title);
}
if ( $#list != 0 ){
$art =~ s/\s/\+/g;
$title =~ s/\s/\+/g;
@list = GetCandidates($art,$title);
}
# 全角 を 半角 にして実行
if ( $#list != 0 ){
$art = jcode($art)->tr('A-Za-z0-9@・','A-Za-z0-9@-');
$title = jcode($title)->tr('A-Za-z0-9@・','A-Za-z0-9@-');
@list = GetCandidates($art,$title);
}

# エラー
if ( $#list != 0 ){return;}

#歌詞取得
return $list[0]->{head} ;
}

sub GetFuzzyID3Tags {
my $file = shift @_;

my( $title, $art ) = GetID3Tags( $file ) or return; # エラー

$title =~ s/\(.*?\)//g;
$art =~ s/\(.*?\)//g;

return( $title, $art );
}

sub GetID3Tags {
my $file = shift @_;
my $mp3 = MP3::Tag->new( $file ) or return; # エラー
my( $title, $track, $art ) = $mp3->autoinfo() or return; # エラー

#歌詞がすでに入っているか取得
my $lyric = $mp3->select_id3v2_frame_by_descr("USLT(eng)");

$mp3->close;

#歌詞がすでに入っているときは飛ばす
if ($lyric){
$title = "Lyrics already exist"; #エラーにする
return;
}

$title =~ s/\t/ /g;
$art =~ s/\t/ /g;

my $str = "$title\t$art";

$str =~ s/-/-/g;

return( split( /\t/, $str ) );
}

sub GetCandidates {
my $art = shift @_;
my $title = shift @_;

my $baseurl = 'https://utaten.com/lyric/';
my $url = $baseurl . '%ART%/%TITLE%';
my $head = '%ART%:%TITLE%';

$title = uri_escape_utf8($title);

$url =~ s/\%ART\%/$art/;
$url =~ s/\%TITLE\%/$title/;

print "155 $url \n";

# LWP::Simpleの「get」関数を使用                                             
my $html = get($url) or die "Couldn't get it!";

my $kashi="";
while ($html =~ /(.*span.*)/mg) {
  $kashi = $kashi . $1;
}
# 歌詞だけに変換
$kashi  =~ s/\<br.\/\>/\n/mg;
$kashi  =~ s/rt.*?\<//mg;
$kashi  =~ s/\<.*?\>//mg;
$kashi  =~ s/.*UtaTen/\n/mg;
$kashi  =~ s/\s\s/\n/mg;
$kashi  =~ s/\n{3,20}/\n/g;

#歌詞なし
my $count = () = $kashi =~ m/New\!\!/g;
if ($count > 4) {return}

my $this;
$this->{url} = $baseurl;
$this->{title} = $title;
$this->{head} = "";
$count=1;
  my @lines = split m{\n}, $kashi;

my $frm = decode('euc-jp','の歌詞');

  foreach my $line ( @lines ) {
     # 一行ずつ処理
if ($count != 3){
if ($count <5 ){$line=~ s/$frm//;}
$this->{head} = $this->{head} . $line . "\n";
}
$count = $count + 1;
}

my @candidates;

push( @candidates, $this );

return @candidates;
}

2018年11月27日火曜日

mp3 に自動で歌詞を入れてみる

perl で mp3 の歌詞を自動で入れたい。と、思い作成。

下のファイルを名前を付けて保存。

動かし方:フォルダーに mp3 を入れて起動。
perl filegetlyrics.pl  "/mnt/d/music/mp3/test/"
mp3 の tag の曲名とアーティスト名から、歌詞をとってきます。
ただ、取りに行っているサイトの関係で、海外の歌ぐらいしか取れてません。

環境:windows10 に ubuntu を入れて実行してます。
$ sudo apt-get install libmp3-tag-perl
とかで、モジュールは追加。

習作ですがとりあえず公開。

------------------------------- filegetlyrics.pl の名前で以下を保存
#!/usr/bin/perl

# 日本語EUC-JP、LF

use strict;
use warnings;
use Data::Dumper;

use Jcode;
use URI::Escape;
use LWP::UserAgent;
use MP3::Tag;
use File::Basename;

die "Please specify folder" if ( $#ARGV < 0 );

while ( my $path = shift @ARGV ) {
chdir($path);
my @files = glob "*.mp3";

    foreach my $f (@files){
print "try $f \n";
        my $result = GetLyrics( $f )
    }
}

sub GetLyrics {
    my $file = shift @_;

    my $lyr = GetInferedLyrics( $file )
        or     warn "18 Lyrics not found for " . basename( $file );
# エラー

    return if ( !$lyr );

#歌詞を見るとき
##print "$lyr \n";

#text file に歌詞を書き出す場合
#    my $txtWrite = WriteWriteLyrics($file,$lyr);

#mp3 処理
    my $mp3 = MP3::Tag->new( $file ) or return; # エラー
print "56 $file \n";
    $mp3->select_id3v2_frame_by_descr("USLT(eng)", $lyr);     # 歌詞
    $mp3->update_tags();
    $mp3->close;

warn "All done ----- $file";

return $file
}
#text file 書き出し
sub WriteWriteLyrics {
    my $file = shift @_;
    my $lyr = shift @_;

    my $txtFile = $file;
    $txtFile =~ s/\.mp3$/.txt/i;
    open( W, ">" . $txtFile ) or next;
    binmode W;
    print W $lyr;
    close( W );
    return $txtFile;
}

sub GetInferedLyrics {
    my $file = shift @_;

#    tag 取得
    my( $title, $art ) = GetFuzzyID3Tags( $file ) or return; # エラー
#    歌詞取得
    my @list = GetCandidates(
        $art,
        $title
    ) or return; # エラー

    return if ( $#list != 0 ); # エラー

    return $list[0]->{head} ;
}

sub GetFuzzyID3Tags {
    my $file = shift @_;
        my( $title, $art ) = GetID3Tags( $file ) or return; # エラー
    $title =~ s/\(.*?\)//g;
    $art =~ s/\(.*?\)//g;

    return( $title, $art );
}

sub GetID3Tags {
    my $file = shift @_;
    my $mp3 = MP3::Tag->new( $file ) or return; # エラー
    my( $title, $track, $art ) = $mp3->autoinfo() or return; # エラー
    $mp3->close;
    # ID3タグがないときは勝手にファイル名が参照される

    $title =~ s/\t/ /g;
    $art =~ s/\t/ /g;

    my $from =
        '0123456789'
        . 'ABCDEFGHIJKLMNOPQRSTUZWXYZ'
        . 'abcdefghijklmnopqrstuzwxyz'
        . '()“”[]'
        . '=:;!?#'
        . ' ' #全角スペース
        ;
    my $to =
        '0123456789'
        . 'ABCDEFGHIJKLMNOPQRSTUZWXYZ'
        . 'abcdefghijklmnopqrstuzwxyz'
        . '()""[]'
        . '=:;!?#'
        . ' ' #半角スペース
        ;

    my $str = "$title\t$art";

    $str =~ s/-/-/g;

    return( split( /\t/, $str ) );
}

sub GetEucContent {
    my $url = shift @_;
    my $ua = LWP::UserAgent->new(
        agent =>        'Mozilla/4.0 (compatible; MSIE 6.0)',
        timeout =>        15,
        max_size =>        128 * 1024,
    );

    my $response = $ua->get( $url ) or return; # エラー

    return # エラー
        if ( !$response->is_success );

    my $eucContent;
    eval {
        $eucContent = jcode( $response->content )->h2z->euc;
    };
    return # エラー
        if ( $@ );

    return $eucContent;
}

sub GetCandidates {
    my $art = shift @_;
    my $title = shift @_;

    my $baseurl = 'http://lyrics.wikia.com/wiki/';
    my $url = $baseurl . '%ART%:%TITLE%';
    my $head = '%ART%:%TITLE%';

    $art = uri_escape_utf8($art);
    $title = uri_escape_utf8($title);

    $url =~ s/\%ART\%/$art/;
    $url =~ s/\%TITLE\%/$title/;
# 空白はアンダースコアに置き換え
    $url =~ s/\%20/_/g;
print "$url \n";
    my $eucContent = GetEucContent( $url ) or return; # エラー

    my $found = ( $eucContent);

    return    unless ( $found ); # エラー

    my @candidates;

    my $this;
    $this->{url} = $baseurl;
    $this->{title} = $title;

    if ($eucContent =~ /(.*\'lyricsbreak.*)/) {

        use HTML::Entities;
        my $decoded;

        $decoded=decode_entities($1);
        $decoded =~ s/\>/ \n/g;
        $decoded =~ s/\<.+\s?/\n/g;

        $this->{head} = $decoded;
    }

    push( @candidates, $this );

    return @candidates;
}

1;