2017-11-04

MozillaZine.jpをダークな色で表示する

体調が悪かった時に、明るい色調のテキストを見ると「目が眩しくて疲れました」。その時に、Firefoxの機能拡張;「Dark Background and Light Text」を利用すると、目が楽になりました。

そこで、Firefoxの機能拡張;「Stylish」を用いて、MozillaZine.jpの閲覧を「ダークな色で表示」しました。これは検索・閲覧をする時には威力を発揮しています。


最近、久々にMozillaZine.jpを覗いてみると、Firefox ver.56系→57系にすると、上の機能拡張が「旧式」となって動かなくなるようです。そこで現状を纏めておきます。



MozillaZine.jpのフォーラム・リスト


Figure 1.1 Forum list with normal color








Figure 1.2 Forum list with dark color


Firefoxフォーラムのトップ・トピック

Figure 2.1 Top topic at Firefox forum  with normal color

Figure 2.2 Top topic at Firefox forum  with dark color






Figure 2.3 Style, myMozzila for dark colo






Stylish: myMozilla


@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("mozillazine.jp") {
body {
color: #ccc !important;
background-color: #454 !important;
}


/* not yet visited: cold colors */
a:link{
color: #5de !important;
background-color: #047 !important;

/* visited: warm color:s */
a:visited{
color: #eae !important;
background-color: #606 !important;
}
/* hover */
a:hover{
color: #111 !important;
background-color: #2A3 !important;
}

/* 表のセル: td.row1,row 2 */
td.row1 {
background-color: #444 !important;
}
td.row2 {
background-color: #666 !important;
}


}

@-moz-document domain("forums.mozillazine.jp") { 

tr.row1 td b.postauthor{
color: #ddd!important;
background-color: #324 !important;           
}
tr.row1 {
color: #ddd;
background-color: #213 !important;           
}

tr.row2 td b.postauthor{
color: #ddd!important;
background-color: #324 !important;           
}
tr.row2 {
color: #fff!important;
background-color: #324 !important;           
}


td.profile {
color: #ddd;
background-color: #213 !important;     
}

div.postbody a.postlink {
padding-left: 2%;
padding-right: 2%;
}

div.quotecontent {
color: yellow;
background-color: #558 !important;
font-size: 90%;
line-height: 180% !important;
padding-left: 1%;
padding-right: 1%;
}

div.postbody {
color: #ddd;
background-color: #213 !important;
font-size: 190%;
line-height: 200% !important;
padding-left: 1%;
padding-right: 1%;
}

/* このトピックをウォッチする */
td.cat table tbody {
height: 28px;
margin: 0;
padding: 0;
border: 0;
background-color: #677 !important;
text-indent: 4px;
}

/* 期間内表示 */
table.tablebg tr td.cat form {
height: 26px;
background-color: #677 !important;`←
padding-top: 4px;
padding-bottom: 0px;
}

/* オンラインデータ */
table.tablebg tbody tr td.cat h4{
height: 22px;
background-color: #677 !important;
padding-top: 8px;
}


}




____

この記事の履歴

  1.  開始 2017-11-04 00:08





2017-06-04

zsh: ~/Libraryの非可視/可視を設定するトグル型スクリプト

•jp• zsh: ~/Libraryの非可視/可視を設定するトグル型スクリプト
•us• zsh: Toggle type script to set invisible/visible of ~/Library

昨年、Yosemiteから次期OSに移行するときに、~/Libraryの非可視/可視を決めるスクリプトの名前を忘れてしまったので、トグル型のスクリプト(toggleLibrary)に書き換えました。

KarabinerはSierraでは動作しないので、まだYosemiteです。次期バージョンへの移行のに備えて、トグル型スクリプト(toggleLibrary)に改造しました。
    • これなら「1つの名前だけを覚えるだけ」なので記憶力低下対策に有効です。
      Terminal.appで「toggleLibrary↩︎」するときに、Finderで~/のしたを同時に見ていると、~/Libraryが非可視/可視がすぐに変更されるのが確認できます。
      • Terminal作業は慌てると大きなミスに繋がるので、Finderでの同時確認は大切だと思います。


      トグル型スクリプト(toggleLibrary)のソース
        #!/bin/zsh 
        
        # toggleLibrary: toggle file flag ("hidden/shown") for targetFile.
        
        
        # Usage: toggleLibrary↩
        
        cd $HOME
        
        # default file
        targetFile="Library"
        
        llO=$(ls -lO)
        hideT=$(echo $llO | grep "$targetFile" | grep hidden)
        
        if [ "$hideT" = "" ]
        then
         #echo " show -> hide"
         chflags hidden "$targetFile"
         echo "• "$targetFile" hidden from GUI(Finder)"
        else 
         #echo " hide -> show"
         chflags nohidden "$targetFile"
         echo "• "$targetFile" shown in GUI(Finder)"
        fi
        

        • 「ls -lO」は、「man chflags」を参考にしました。
        • AppleのFinderは、ますます非可視攻勢を拡大するのだろうか?


        この記事の履歴
        1. 開始 2017-06-04-1509
        2. 修正 2017-06-14-2113 httpsにするとSyntaxHighliterが動作不良のチェック時に中に発見。


        2017-04-14

        Numbers: X軸に対する多重Y軸の散布プロットを描く



        *jp title* Numbers: X軸に対する多重Y軸の散布プロットを描く
        •en title• Numbers: Draw a scatter plot of multiple Y axes with respect to X axis



        前回の記事を書いたあとで、見易い散布チャート(プロット)が欲しくなった。


        そういえば、昔に書いた記事があったのを思い出した;
               
               
        この記事に従ってプロットしようとしたが、動作しない。 現在利用中の「Numbera help」を見ると、ヘッダ行を含むテーブル全体を選択したてから、チャート(プロット)の種類から、「2D Scatter Plot」を選択するらしいことが分かりました。

        あとはトライ&エラーでなんとかできました。図1がその最終成果です。

        Figure 1













        問題点は上記の操作が複雑なステップ数(6)に渡って複雑です。記憶力や思考力の劣化が激しい自分自身の為に、ステップごとにスクリーン・ショットにすることにしました。

        STEP 1

        STEP 1

        STEP 2

        STEP 2

        STEP 3

        STEP 3

        STEP 4

        STEP 4


        STEP 5

        STEP 5


        STEP 6

        STEP 6


        TIPS 1

        TIPS 1

        TIPS 2

        TIPS 2
        •  「 STEP 6」の完成チャートを選択して、サイド・バー中の「Chart Style」の追加ボタン(+ボタン)をクリックすると、一見すると「カラー」の散布プロットのスタイルができる。
        • 新たに「Table 2」 を作り、上記のスタイルを適用しても、完全に一致しない。
        • でも初めから設定し直すよりは楽だ。


           感想

          1. 元気だった頃は、工作する前にノートを元にCADで作図をして準備した。
          2. 最近はノートを元にテーブルやチャートを作るだけで、チェックが巧くできる。
          3. 「Numbers Help」で説明不足と感じたのは、
            1. 「STEP 2]での『Edit Data References』は「Call for  Y -Series Selector」ではないか?
            2. 「STEP 3」での黒い部分(  Y Z U V )は「Series Button」といった名前が欲しい。



            この記事の履歴

            1. 開始2017-04-14-09:51



            2017-04-12

            Numbers: 列ベクトルから成るテーブルにセル名を付ける


            Numbers: 列ベクトルから成るテーブルにセル名を付ける
            Numbers: Attach a cell name to a table composed of column vectors


            最近、小さな列ベクトルの処理が頻繁になってきたので、Excelから年寄りに優しそうなNumberesに変えてみました;

            • Numbers version 3.6.2(2577) on OS X 10.10.5

            小さな列べクトルからなる小さなテーブルが多くなってくると、各々のセルに固有の名前が欲しくなります。Excelからの推察で「セルに名前を挿入」などを探したのですがヒットしません。Numbersでは表(Table)のヘッダ行を定義すれば、その下の列にはセル名として操作できるようです。


            Numbersでの実例を図1に示します;

            • 「Teble 1」にはヘッダ行に「X, Y, Z」が(A2, B2, C3)にあります。

            Xが独立変数で、Yは「同じ行のXの値」の自乗に、Zは「同じ行のXの値」に2のか加算、;
            • Xべクトル:A3~A11
            • Yべクトル:B3~B11; (B3の値)=(A3の値)^2,...,(B11)..
            • Wべクトル:C3~C11; (C3の値)=(A3の値)+2,...,(B11)..

            Figure 1

               
            図中で「B5のセル中の関数」を表示しているように、引用セルは「A5」であり「X」の表示はありません。

            右の「Table 2」に示したように,「Numbers Preferences > Gneral」での「Cell References」のテェックが外れていたのが問題であったようです。


            これをチェックすると、図2のように巧くいきました;

            Figure 2
            面白いのは、B5のセルの関数表示をしているのに、A2だけでなくX列ベクトルがハイライトされていることです。



            まとめ
            • テーブルで、ヘッダ行を明示的に定義するべし
            • 「Cell References」のテェックするべし

            感想
            • セル名で関数を定義できると、見通しの良い式になるので、制作の負担が軽減できる。
            • 「Cell References」の設定のディフォールトは「テェック」が正しくないか?
            • X軸に対する多重Y軸の散布プロットを描きたくなってきた...。



            この記事の履歴

            1. 開始2017-04-12-14:27


            2016-06-20

            zsh: 現在のディレクトリ中のファイル名の「特定部分A」を「特定部分B」に変えるスクリプト


            zsh: 現在のディレクトリ中のファイル名の「特定部分A」を「特定部分B」に変えるスクリプト
            zsh: Script to change the "specific part-A" to "specific part-B" of file-names in a current directory


            概要


            私は、Firefoxの外部CSS(Profile/chrome/userContent.css)をスクリプト経由で操作したくなりました。他方、細かなCSSの操作はStylishでしています。これらの為に、ファイル名を一括して変更するスクリプトが必要になりました。「old2new」がその答えで、具体例とソース・コードを以下に示します。


            具体例

            Figure 1: Demonstration of "old2new"




            ソース・コード(old2new)



            #!/bin/zsh 
            
            # USAGE: old2new OLD NEW↩
            
            # FUNCTION:
            #   1) 変えたいファイルがあるディレクトリに移動
            #   2) ファイルの「変ええたい一部」を$1(OLD)に入れる
            #   3) 「その変更後の値」を$2(NEW)に入れる
            #     NEWは何もなし("")でも可。
            #   4) *${OLD}* --> *${NEW}*
            
            # 2016-06-19-21:52
            
            ###############################################################################
            # list current dir: % old2new ↩
            if [[ ( $1 == "" ) && ( $2 == "") ]] ; then
              echo " • list of current dir"
             ls -dlG *
             exit
            fi
            
            
            ###############################################################################
            # for: % old2new OLD NEW↩
            
            old="$1" # specific part-A
            new="$2" # specific part-B
            
            
            myls=( ${(f)"$(ls -d *)"} )
            j=$((0))
            for file in $myls ; do
             [[ -d "$file" ]] && continue
             [[ -f "$file" ]] || continue
             
             new_file=$( echo "$file" | grep "$old" | sed "s%$old%$new%" )
             [[ "$new_file" == "" ]] && continue
             j=$((j+1))
             echo -n "  • $j " 
             mv -fv "$file"  "$new_file"
            done
            
            if [[ $j -eq 0 ]]; then
             echo " •• old file: *${old}* not detected"
            else
             echo " •• ---------------------------------------------------------------------- "
             ls -dlG *"${new}"*
            fi
            


            感想


            時々、このようなスクリプトを作ろうかと思ったが、面倒くさいのでサボっていた。もう少し頑張れば、連番の付与もできそうだ...。


            この記事の履歴

            1. 開始2016-06-20-01:16




            2016-05-30

            zsh: JavaScripを使って「Terminal.appのカラムや行」を設定する

            zsh: JavaScripを使って「Terminal.appのカラムや行」を設定する
            zsh: To sett columns and raws of Terminal.app by using JavaScript

            経緯


            JavaScriptを練習するのに、スクリプト・エディタを使っています。さらにTerminalに於いてjscを使っています。
            • /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc
            • OS: Yosemite  10.10.5 (14F1808)
            その練習課題として、Terminal.appの設定を作ってみようと考えました。検索すると最適なスクリプトがありました;

            これを基にして、"Script Editr"の”Window nenu -> Library”からTerminal.appを見ながら、完全設定をしようと思いましたが、なんと肝心んな16色のカラー設定やフォントの文字間隔、行 間隔の設定の項目が無くて、頓挫しました。

            次の総括的な解説中の「コマンド・ライン引数の使用」を参考して、zshのスクリプト(txy)を作りました。

            このスクリプトは、terminal作業の処理を次々にスクリーン・ショットに保存していくときに、意外と便利なので紹介します。



            動作例


            図1はターミナルが呼ばれた直後です。最後の設定(幅77x行10)となっています。
            Figure 1 Just opened Terminal which preserve precious columns & raws.

            そこで「% txy 80↩️」とすると幅だけが80に変わり、図2のように(幅80x行10)となります。
            Figure 2. "txy 80" re-sized only columns to 80.

            さらに 「% txy 82 22↩️」とすると幅と行が同時に変わり、図3のように(幅82x行22)となります。
            Figure 3. "txy 82 22" re-sized columns & raws to (82x22)

            最後に「% txy↩️」とすると規定値(幅80x行40)となります、図4.
            Figure 4. "txy" re-sized to dafaut value (80x40).





            スクリプト: txy


            #!/bin/zsh 
            
            # txy: default terminal resized to x*y
            #           X: Number of columns for default Terminal.app
            #           Y: Number of rows for default Terminal.app
            # USAGE:
            #         txy↩  -----> (80*40)     : defaut  ----------------------> Fig. 4
            #         txy X↩   --> (X*Y0)      : Y0='previous value'  ---------> Fig. 2
            #         txy X Y↩  -> (X*Y)       : set both of columns*raws  ----> Fig. 3. 
            #         terminal opens with previous columns*raws:  ------------- > Fig. 1
                # 2016-05-07(土) 12:36:43  by mNeji
                # 2016-05-12(木) 11:55:07 set_JS, get_JS
            
            
            ###############################################################################
            set_JS() {
            # Execute $JS as Javascript. Throw unwanted output away to /dev/null
                osascript -l JavaScript -e "$1" > /dev/null
            }
            
            ###############################################################################
            get_JS() {
            # Execute $JS as Javascript. The output is printed on standard output(screen)
                osascript -l JavaScript -e "$1"
            }
            
            
            ########################### main ##############################################
            # Reading current setting (X0•Y0) & display:
                td="Application('Terminal').defaultSettings"
                X0=$(get_JS "$td.numberOfColumns()")
                Y0=$(get_JS "$td.numberOfRows()")
                echo -n "terminal current: (${X0}x$Y0)  -->"
            
            # Setting: (X, Y)
                case $# in
                    0) X=80; Y=40;;
                    1) X=$1; Y=$Y0;;
                    2) X=$1; Y=$2;;
                    *) X=$1; Y=$2;;
                esac
            
            # Prepare JavaScript block for default Terminal Setting: ($X, $Y) 
                XYdataBlock="
                trmd =     Application('Terminal').defaultSettings
                    trmd.numberOfColumns = $X
                    trmd.numberOfRows = $Y
                "
                set_JS "$XYdataBlock"
                echo " resized: (${X}x${Y})\a"
            



            zshで「osascript -l JavaScript -e JavaScript-commands」を使えば、JavaScript-commandsが実行できます。問題は、JavaScript- commandsは設定値を常時標準出力に出すことです。このような場合には「set_JS」関数を呼び出して、不要な出力を/dev/nullに捨てて います。
            • 例1)
              • set_JS "$XYdataBlock"

            逆に、設定を読み取りたいコマンドの場合は、「get_JS」関数により出力させて、それを変数に代入させています。
            • 例2)
              • X0=$(get_JS "$td.numberOfColumns()")


            感想


            自力でアプリケーションのPreferencesを操れてうれしい。JavaScriptをshellの一つとして「#!/bin/javascript」とか「#!/bin/jsc」とか出来ないか? それとも「#!/bin/swift」の方が早かったり?


            この記事の履歴
            1. 開始 2016-05-30(月) 23:18:39


            2016-05-27

            /Volumes内のドライブのUUIDをリストするスクリプト

            5日ほど前に、Yosemiteで 「Update 2016-003」を実施しました。その後3日ほどしてから、DiskUtilで見ると、システム・ドライブの表示順序が不規則に入れ替わるようになりま した。「Apple サポート・コミュニティ: Mac OS X Technologies(Japan)」でこの現象を質問中です。
            少なくとも「/etc/fstab」に「ドライブ毎に、UUID、種類、名前」をリストする必要があるようです。そこで、/Volumesの中にあるドライブのUUIDをリストするスクリプト、uuidsを作ったのでご紹介します。


            terminalでの動作結果
            Figure uuids action at terminal



            スクリプト: uuids

            #!/bin/zsh 
            #
            # uuids: list UUIDs in /Volumes/*
            #
            # USAGE: uuids↩
            #_
            # 2016-05-27(金) 18:11:14 
            #
             
            get_uuid(){
             #diskutil info "$1" | grep "Disk / Partition UUID:" | sed 's%[^0-9A-Z-]%%g' 
             diskutil info "$f" |grep 'Disk / Partition UUID:' |\
              sed 's%Disk / Partition UUID:    %%' | tr -d ' '  
            }
             
             
            mylc=( ${(f)"$(ls  /Volumes )"} )
            
            echo "  #  UUIDs in /Volumes                      Drive Names"
            echo " --  ------------------------------------  -----------------------------"
             
            j=$((0))
            for f in ${(O)mylc} ; do
             j=$((j+1))
              
             myu=$(get_uuid "$f")
             
              printf " %2d  %s  %s\n" $j $myu $f
            done
            


            この記事の履歴
            1. 開始2016-05-27(金) 23:18:54

            注目の投稿

            Terminalでの、なんちゃってViモドキ

            近頃、ようやくKarabiner-Elementsに慣れてきたので、 Terminalで動作する「擬似Vi-Mode」を作って見たので、ご紹介します。 『概要』 「擬似Vi-Mode」の所以は、方向キー「←↓↑→」を通常の「hjkl」ではなくて「jkil」としました。これ...