この記事は公開または最後に更新されてから654日が経過しています。情報が古くなっている可能性があるのでご注意下さい。

javascript をいじっていて、ちょっとど忘れ!
既存の関数を使おうとしたときに、その関数を使っている既存のコードに影響を与えずに、と、思いつつ、はて?javascript は引数にデフォルトは指定できただろうかと・・・?
たしか、javascript はだめだったよな~、とネットで確認してみると、いやいやそんなことはなくて可能とのこと。これはありがたや~と、引数にデフォルトを設定してやってみると、ちゃんと思うように動いてくれている。
が、先だってのEdge での思わぬところに潜んでいたエラーのこともあって、数日後に思い出したようにie をさわっていたら、いわんこっちゃない、そのページが表示されないありさまを目にしてしまった。コンソールを見てみるとこれ見よがしの赤文字にて「)がありません」とかなんとかエラーが表示されていた。他のブラウザでは全く問題なく、ie だけが不具合を主張していた。この場合のエラーは完全に途中で頓挫してしまっているので、先に加えたエラー報告プログラムは機能してくれない。新しく加えたコードを見てみるが怪しい部分はなし。で、やはりネットのお世話に。

ie においては関数の引数にデフォルトを設定することに非対応だとのこと。はじめに見たMDN web docs の対応表にもちゃんと対応していないことが表示してあった。ちゃんと下の方まで確認しないといけないのです。
それにしても未だにie のことを考えなくてはいけないのだろうか?そろそろもうどうでもいいような存在になってはいないのだろうか?windows7 が過去のものとされて、それでもまだしぶとくその悪しき影響を及ぼさんとばかりにしがみついていたりするのだろうか?極端なことを言ってしまえば、我がサイトにアクセスしてくれる方々において、その使用頻度などはすでにほとんど無いものだとまで思っているのであるけれど。ならば、いっそのこともう捨て置いてしまっても良いだろうと勝手に思い込んでしまっていたりしたのかもしれない。

と、いうことで、せっかくログをとりためているわけなので、ちょっとブラウザの割合などというものを分析してもよかろうかということになったのである。
ものすごく前に作ったuser agent からブラウザを判定するjavascript のコードを、WordPress が内包しているブラウザ判別用のphp のコードをベースにして書き直し。こんな具合で良いのではないかと。javascript は実際に自分のサイトで使用しているもので、今回のログ分析用にはもっと細かくして、慣れるためにpython でも書いた。

function whatbrowse(){
	var userAgent = window.navigator.userAgent.toLowerCase(),
		ans = '';

	if ( userAgent.indexOf( 'android' ) != -1 ) {
		ans = 'android';
	} else if ( userAgent.indexOf( 'mobile' ) != -1 ) {
		if ( userAgent.indexOf( 'iphone' ) != -1 ) {
			ans = 'iPhone';
		} else if ( userAgent.indexOf( 'ipad' ) != -1 ) {
			ans = 'iPad';
		} else {
			ans = 'another smp';
		}
	} else if ( userAgent.indexOf( 'firefox' ) != -1 ) {
		ans = 'fox';
	} else if ( userAgent.indexOf( 'msie' ) != -1 ) {
		ans = 'ie old';
	} else if ( userAgent.indexOf( 'edg' ) != -1 ) {
		if ( userAgent.indexOf( 'edge' ) != -1 ) {
			ans = 'edgeHTML';
		} else {	
			ans = 'edge chrom';
		}
	} else if ( userAgent.indexOf( 'chrome' ) != -1 ) {
		if ( userAgent.indexOf( 'opr' ) != -1 ) {
			ans = 'opera';
		} else {
			ans = 'chrome';
		}
	} else if ( userAgent.indexOf( 'safari' ) != -1 ) {
		ans = 'safari';
	} else if ( userAgent.indexOf( 'trident' ) != -1 ) {
		ans = 'ie new';
	} else {
		ans = 'unknown';
	}
	return ans;
}
JavaScript
CopyExpand

そしてこちらはPython

tarfile = '/bird_hp/log_backup/access_log_d200404all.php'

def whatbrowse ( target ) :
    agent = target.lower()
    mobile = 0

    if 'android' in agent :
        ans = 'android'
        mobile = 1
    elif 'iphone' in agent :
        ans = 'iPhone'
        mobile = 1
    elif 'ipad' in agent :
        ans = 'iPad'
        mobile = 1
    elif 'mobile' in agent :
        ans = 'another smp'
        mobile = 1

    elif 'firef' in agent :
        if 'linux' in agent :
            ans = 'firefox lnx'
        else :
            ans = 'firefox'

    elif 'msie' in agent :
        ans = 'ie old'
    elif 'edg' in agent :
        if 'edge' in agent :
            ans = 'edgeHTML'
        else :	
            ans = 'edge chrom'

    elif 'valdi' in agent :
        ans = 'vivaldi'

    elif 'opera' in agent :
        ans = 'opera'
    elif 'kinza' in agent :
        ans = 'kinza'
    elif 'chro' in agent :
        if 'opr' in agent :
            ans = 'opera'
        elif 'macintosh' in agent :
            ans = 'chrome mac'
        elif 'linux' in agent :
            ans = 'chrome lnx'
        else :
            ans = 'chrome'

    elif 'safari' in agent :
        if 'macintosh' in agent :
            ans = 'safari'
        else :
            ans = 'chrome'
    elif 'trident' in agent :
        ans = 'ie new'
    elif 'mastodon' in agent :
        ans = 'mastodon'

    else :
        if 'opr' in agent :
            ans = 'opera'
        elif 'macintosh' in agent :
            ans = 'mac webkit'
        else :
            ans = 'unknown'

    return ans, mobile

try:
    fil = open ( tarfile, 'r', encoding='utf-8' )

    lista = dict()
    device = [ 0, 0 ]
    i = 0

    for line in fil :
        if len ( line ) > 10 :
            tmpelem = line.split( ']' )
            agent = tmpelem[2].lower()

            if 'bot' not in agent and 'facebook' not in agent and 'structured-data' not in agent and 'spider' not in agent :
                agent = agent[ 0 : agent.find( '[' ) ]
                browser = whatbrowse( agent )
                lista[ browser[0] ] = lista.get ( browser[0], 0 ) + 1
                device[ browser[1] ] += 1 
  
                if 'unknown' == browser :
                    print ( agent + ' -> ' + browser )

                i += 1

    fil.close()

    print ( '\n\nall count : ' + str ( i ) + '\n\n' )

    listb = sorted( lista.items(), key = lambda x:x[1], reverse = True )
    listlen = len ( listb )

    for k in range( listlen ) :
        print ( listb[ k ][0] + ' -> ' + str ( listb[ k ][1] ) + '  : ' + str ( listb[ k ][1] / i * 100 )[ 0 : 4 ] + '%' )

    print ( '\n pc : ' + str ( device[0] / i * 100 )[ 0 : 5 ] + '%  mobile : ' + str ( device[1] / i * 100 )[ 0 : 5 ] + '%' )

except Exception as e:
    print ( e )

Python
CopyExpand

どうでもいいことだけれど、python のブロックをインデントで、というのになかなか慣れることができなくて、#} で閉じてブロックの終点をわかりやすく、なんてことをしていた。
os がwindows10 になって、それまで長年愛用させていただいていた国産のエディタがどうも挙動不審になってしまい、なにがいいだろうかと使い始めたVScode。7 のときも試したことはあったと思うがその時は重くてやめたのだと思う。しかし、軽く動きさえすればこれがなかなか良さそうで。特にpython においてのインデントの具合がわかりやすいし使いやすい。ブロックの範囲をラインで示してくれるのも、選択するとスペースの数をドットで表示してくれるのもありがたい。これならこの煩わしいインデントによるブロック指定がほとんど気にならない。それにしても、やはりこのインデントによるブロック指定というのは、どうもあまり納得がいくものではないなぁ~!{}でくくったほうがよほどわかりやすくていいと思う。とは思っていたのだけれど、こうしてjavascript python を並べて見ていると、()や{}がない分、実にすっきりとしていて見やすいとは確かに思う。
最後の91行目、%で表示させる「 str ( listb[ k ][1] / i * 100 )[ 0 : 4 ] + '%' ) 」の部分。何も考えずにやれば、小数点以下の桁を揃えるのに、floor とかround を使うのが普通なのだろうけれど(python round はちょっとくせがあるよう)、たいして重要な数値でもないし、どちらにしても文字列型に変換するのなら、と単純に字数で切り取る方法にしてる。ただ、こうすると整数部が二桁なら、少数以下も二桁。整数部が一桁なら少数部は三桁になるので、場合によってはこっちのほうがいいような気がする。
データはWindows7 のサポートが終了した2020/01/14 を境にした前後で調べてみた。

« 鳥画像ページへのアクセス »

 2019-08-24~2020-01-14  2020-01-15~2020-04-07  2019-08-24~2020-04-07 
all 4073all 2658all 6731
chrome80119.6%android75528.4%android155423.0%
android79919.6%chrome45317.0%chrome125418.6%
iPhone47911.7%iPhone38314.4%iPhone86212.8%
ie new44810.9%ie new28110.5%ie new72910.8%
edgeHTML3268.00%edgeHTML1877.03%edgeHTML5137.62%
firefox3157.73%safari1595.98%safari4466.62%
safari2877.04%iPad1144.28%firefox4286.35%
chrome mac1934.73%firefox1134.25%iPad2964.39%
iPad1824.46%chrome lix1033.87%chrome lix2653.93%
chrome lix1623.97%chrome mac652.44%chrome mac2583.83%
mac webkit210.51%opera120.45%opera310.46%
firefox lix200.49%mac webkit80.30%mac webkit290.43%
opera190.46%unknown70.26%firefox lix260.38%
unknown130.31%ie old70.26%unknown200.29%
vivaldi50.12%firefox lix60.22%ie old90.13%
ie old20.04%edge chrom30.11%vivaldi50.07%
kinza10.02%kinza20.07%kinza30.04%
edge chrom30.04%
pc64.15%pc52.89%pc59.70%
mobile35.84%mobile47.10%mobile40.29%

« WordPress DIYへのアクセス »

 2019-07-01~2020-01-14  2020-01-15~2020-04-07  2019-07-01~2020-04-07 
all 6758all 3244all 10002
chrome284542.0%chrome145344.7%chrome429842.9%
safari199729.5%safari93528.8%safari293229.3%
firefox78511.6%firefox37011.4%firefox115511.5%
iPhone2934.33%iPhone1474.53%iPhone4404.39%
mac webkit2223.28%android1073.29%android3043.03%
android1972.91%ie new652.00%mac webkit2692.68%
ie new1712.53%mac webkit471.44%ie new2362.35%
edgeHTML791.16%edgeHTML461.41%edgeHTML1251.24%
iPad650.96%chrome mac240.73%iPad780.77%
vivaldi290.42%iPad130.40%vivaldi350.34%
opera260.38%kinza80.24%opera320.31%
chrome lix200.29%opera60.18%chrome lix250.24%
firefox lix90.13%vivaldi60.18%chrome mac240.23%
unknown70.10%firefox lix50.15%kinza140.13%
kinza60.08%chrome lix50.15%firefox lix140.13%
ie old40.05%edge chrom40.12%unknown90.08%
edge chrom30.04%unknown20.06%edge chrom70.06%
ie old10.03%ie old50.04%
pc91.78%pc91.76%pc91.78%
mobile8.21%mobile8.23%mobile8.22%

鳥画像ページとWordPress DIY のページで傾向が違うであろうことは、なんとなくは思っていたことではあるけれど、思っていた以上に面白いというか興味深いことが見えたと思う。
鳥ページの方は、特にPCとのつながりが深いということもない方々であろうことから、やはりというかmobile でのアクセスが4割ほど。これは思った以上だったかな。1月14日のWindows7が見捨てられてから以降は、その傾向にさらに拍車がかかっている。10%ほどの人々がPCを離れてしまったようだ。それによってPC 用のブラウザの比率も軒並み減少している。現状ではPC とmobile の割合はほぼ半々になっているようで、いずれ、それも近いうちに逆転するのは目に見えているのではないだろうか。
しかし、それでもie をお使いの方は10%ほどはいらっしゃるので、これではちょっと知らぬ顔をするわけにはいかないようです。なかなかね~。
DIYページの方はといえば、さすがにPC との関わりが強い方が多いということがよくわかり、9割超である。そのうえ、もっと意外だったのはSafari の方が30%ちかくもいらっしゃるということ。macintosh をお使いの方はこんなにいらっしゃるだな~。なんだかわからないけれどちょっとあこがれていたりする。
逆に予想外に少なかったのは、Linux かな~?自分もUbuntu を使っている一人なので、もう少し多いのではないかと思っていたのだけれど。
そしてこちらの方はWindows の影響はほとんどなかったようで、みなさん、きちんと乗り換えをお済ませになった、ということなんでしょうね。

やる前は、あまり意味のあるようなことには思えなかったけれど、案外、こういうことをちゃんと知るのは、なかなかおもしろいことだったかな。

Leave a Reply!

JavaScript is necessary to send a comment.
You can edit and delete your comment if you input a edit key.
Edit key is necessary for attesting you when you edit and delete it.
The tag of HTML cannot be used in comment.
When you comment for the first time, it is displayed after the approval of the administrator.
Because I cannot speak English so much, it takes time to answer.
Required fields are marked *.

※Please enter more than 5 characters only alphabets.
※Edit or delete are possible for 2000 days after approval.

*

♠Simplistic Comment User Editable v4.0

♠When visitors leave comments on the site this site collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection.
♠This site does not use cookie when visitors leave comments and commenter edit comment.
♠This site uses Akismet to reduce spam. Learn how your comment data is processed.

Comments feed

Trackback URL : https://strix.main.jp/wp-trackback.php?p=157201

Sanbanse Funabashi
2011.01.01 sunrise

Top

スクロールさせるか画像をクリックすると元に戻ります。