カテゴリー: プログラミング

巣ごもりDXステップ講座情報ナビを眺める(´・ω・`)-3

作って学べるAI入門

AIの基礎知識の紹介とAI-Plant Bamboo Betaの使い方を紹介するpdfだった。
最新バージョンとpdf内の画像等が異なってる模様。
AIサービス自体はGoogleアカウントでログインした。


以下は画面との相違点や視聴して思った感想の羅列。勘違いして文句を言っている部分もあるだろうけど、( ゚ 3゚)キニシナイ

P17「保存してデータの分析に進む...」の"保存して"が抜けてる。
P18 ポップアップ表示がなかった。
p19 上記の結果として"アヤメの品種データ.csvのデータ分析"となった。
p19 データの可視化で"次元圧縮"が増えてる。
p20 「2.特徴量とラベル列を選択してください。」 "列"が抜けてる
p23 アルゴリズム選択後に表示される[詳細設定]をクリックしないとアルゴリズム一覧は表示されない。
p26-27 おすすめのモデルがSVM(RBFカーネル)だった。
    項目"テストデータ"が追加されてる。
p31の「グラフを作成する」の上のグラフ選択のような行は何に使うんだろう? この段階でグラフにする結果を選択出来る?
p35 "次章「おわりに」でも" "も"は要らなくないかな? 他の箇所でアンケートフォームを紹介してたっけ?

全てが「」で括られているようだが場合によっては『』や""等を併用した方が要素が区別出来て読みやすくなるような気がする?


補足用の動画は最初音がしなくてアレ(´・ω・`)?と思ったが、元々無音なのかこれ。
スライドと違って動画は無音だと凄く見にくいというか情報を理解しにくいな。
何処に次の表示が出てくるかわからないし。これはyoutube側で30秒単位くらいで移動出来るようにしてくれれば、スライド代わりに使えるのにな。

"サイドバーは、データ一覧~があります。" ←若干、日本語としておかしいような…

言いたいことをバーっと羅列してる感じがあって非常に見にくい。必要な情報として教えたいことは明確に上部の文章で説明すべきだし、そうでない場合は省いた方がいいんじゃないかなぁ? そもそも上部の文章に注意が行きにくかったりもするようなw

"データを持っている"や"タイタニックの乗客データ"はこの動画で紹介してる手順とは関係ないんだから、余計な表示はすべきではないような。

特徴量として指定した項目が目的変数として使われるってことはあるのかな? あとは目的変数の方が特徴量列の数を上回ることってあるのかな?
もしそうでないとするならば、ラベル列(目的変数)の選択を先にさせてそこで選択された項目は、動的に特徴量列の欄で項目をグレーアウトにするか非表示にする形には出来ないのかね?
一応特徴量列で選択した後にラベル列で同一項目を選択すると特徴量列での選択は外れるみたいだけど。

混同行列"グラフ"を追加します。←なんだろうね(´・ω・`) "グラフ"が抜けてることを指摘したかったんかな?

丁寧語とそうでない表現が入り混じっていたりしていて統一感が微妙。


なんやかんやとケチをつけたけれども、最初の最初はこういう方がいいのかもね。他の機械学習の講座だと機械学習の知識以外にPython等の言語も覚えなくてはいけなくなるし。こういう既存のAIで機械学習の用語に慣れてからPython等の言語習得に進むのも、人によってはいいかもしれない。

今回のpdfはさわりのさわりだけしか触れてないようだけれども、続刊(?)を出す意欲はあるみたいなので待つとしよう(・∀・)ソシテマタケチヲツケル


LinkedinLearning Web開発者になる

全部で30時間くらいかかるらしい…
観る為にはLinkedinにアカウントを作ってクレカ登録しないといけない。
しかも無料なのは一ヶ月だけと…
早く観終えて無料期間中にLearning Premiumを解除せねばお金取られちゃうヽ(`Д´)ノ

取り敢えずJavascriptまでの3コースを観た…
でもあと14時間くらい残りがあるのか…(ヽ'ω`)

相変わらず適当に残したメモというか感想の羅列に多少の補足をしたものなので、若干、意味不明なところもあるが( ゚ 3゚)キニシナイ


HTML5 基本講座 2015/5

2015年の動画らしい。このコースに限らないのだけれども、このパッケージの内容は2~6年前の物のようだ。内容に問題はないのかもしれないが、Web関連技術という足の早い分野なので、出来ればなるべく一~二年くらいで更新してほしい気がしないでもないw

Bracketsって32bitソフトなんかな?
ブラウザ連携は便利だな。

"やまがたかっこ"って山括弧のことか。

3_1_beforeのformat.htmがafterのものと一緒?

bとemとstrongの違いを理解してなかったわ(ノ∀`)
このブログ、滅茶苦茶太字の為のところに<strong>使ってるww
HTML5から意味の変わる要素 ←全然関係ないがHTMLクイックリファレンス、httpsになってないんだな
em・strong・mark・b要素の違いを本気出して調べてみた

わざわざぐぐって上記のサイトなどを眺めたが、3-5「テキストを強調する」で説明があった。

どうでも良いがエディタのタグ補完は有り難いが、いちいち終了タグを後にコピペしないといけないのは面倒くさい。もっとスマートな補完をしてくれるエディタはないのだろうか。

ヘッディング要素とかいい加減に使ってるわぁ(ノ∀`)

ノンブレーキングスペースと言っているけど、文章ではノーブレークスペースとなっているな。 ってそういう意味で使うのかw 普通に空白として使ってたわ(ノ∀`)

外部サイトへのリンクのところで"http://"の使用について述べてるけれども、ここはもう"https://"の方が一般的になると修正しておいてもいいのかも。

download属性とか初めて知ったわw

dl,dt,ddの記述リストも知らんかった(ノ∀`)

何はともあれ、セマンティック系の知識は中途半端にしか認識してなかったのでその部分ではいい勉強になった(・∀・)


CSS 基本講座 2019/4

講師の野中さんという人はHTML5の講師の沖さんより若干早口らしく、1.75はきついので1.5にしたw それでも速いかも。 そもそも動画サービスの限界というか物理法則的な問題なのか、1.75以上辺りになるとかなり音が潰れるかなんかして聞きづらくなる。

@importなんてそう言えばあったなぁ…
@mediaのメディアクエリってレスポンシブデザインにしようと思ってた時に知ったはずなのに完全に忘れていたわw

存在セレクタと完全一致属性セレクタと部分一致属性セレクタの存在を始めて知った(ノ∀`)
擬似クラス、疑似要素、結合子はぐぐって細切れに使ったことがあったので何となく知ってたけど、明確に名前を覚えてなかったわw

hsl関数での色指定って知らんかった。
でもhsl関数って第二と第三の引数に%をつけないといけないんだ? 実数も取るならわかるけど、取らないなら仕様から%を除去してもええんじゃなかろうか( ゜σ・゚)ホジホジ?

!important構文って、他の言語使いの人から見ると"!"が否定演算子に思えるので<aside>的なものに見えてしまうかもw

!importantを複数使った場合はやはりソース順で値が上書きされるんかな? ←後で説明があったが、されるとのこと

「cssボックスにプロパティを定める」でmainにmarginを2つ設定? 後で気づいてpaddingに直したけど、ちょっと前のaの入れ忘れ同様にこういうのは撮り直すべきではなかろうかw?

background-clipは初めて知ったわ。

これまた細切れだった知識が前よりかはつながった感じがした(・∀・) ←但しすぐ忘れる模様

エクササイズファイルの内容が完成形というか最終形のsample.htmlのみなので、演習的に手を動かすことはなかった。html5の講座のようにbeforeとafterでファイルを用意しておいて欲しかったな。せめて同一ファイル内に未完成バージョンを入れて、その下に完成形をコメントアウトして貼り付けておくとか。

html5の講座の方はbeforeとafterのhtmlが用意されていたのは良かったけど、フォルダ名を"1_before"や"2_after"というようにしてbeforeのフォルダが上に来るようにしてくれるともっと良かった。気分的な問題なんだけどw←いちいちうるさい注文をつけたがる(・∀・)


JavaScript 基本講座 2019/4

チャプタークイズの関数定義の答えで、"そして波括弧、中括弧の中に"とあるけど"波括弧(中括弧)"という表記にした方が良いかも。"やりたいコード"も"行いたい処理"とかの方がいいかな。

関係ないけど

JIS Z 8201-1981 においても「小括弧」・「中括弧」・「大括弧」という名称は廃止され、現在は「丸括弧」・「角括弧」・「波括弧」と表記されている。
括弧について

ということらしい。知らんかったわ。

まあJISなので

そもそもJISは工業標準化法によると鉱工業のためのものなので数学者がこれに従う必要はない、というご意見をいただいた。

ともある。教育とか一般では今も「中括弧」等の名は生きているということなのか。

"という風"は"というよう"の方が良いような。
何となく気の所為かチャプタークイズの文章は若干乱れてるというか丁寧さが失われた表現になっているような気がしないでもない。

「変更したフォーム要素のデータを調べる」でもtimeの打ち間違いを修正したりしていたが…
これはライブ配信したものを流用したのだろうか? それならば許容出来るというか許容せざるを得ないが、普通に撮影したものならば、誤入力~修正部分を撮り直した動画で差し替えるべきではなかろうかと思ってしまう。

確かに個人にとって短い秒数のことなのでどうでもいいと言えばどうでもいいのだが、この先、この講座の動画を観る全ての人達の時間を奪うと考えると何だか非常に無駄な部分に思える。

同様にNASAのデータを使う時に何度も同じことに言及するのも何故なんだろうかと疑問に思った。動画単位では異なるけど、コースであると考えれば一回言えばいいし、それ以上にデータの中身そのものは重要ではないし…


以下もクイズチャプターの問題に対するいちゃもん等。
ごっぐる系の動画を観ていて気づいたが、どうも俺氏は手抜きに思えたり言葉足らずな問題文に突っかかりたくなる性分らしい(ノ∀`)

"問2/5「switch-case文で記述した処理は、そのままにしておくとループしてしまうためbreakという命令を記述して処理を抜ける必要があります」という説明は正しいですか。"で"switch-case文で記述した処理は放っておくと、そのまま下の処理も行われてループしてしまいます。"とあったけれどもループはしないんじゃね? フォールスルーじゃないのか?

"「new任意のオブジェクト名()」"
半角空白を入れて括弧が半角でないと正確ではないような。

"配列から値を取り出す時の構文としてfor文があります。"
この書き方も若干引っかかるな(´・ω・`)

"問5/5 フォーム内の要素を取得するにはdocument.forms で[ ]を指定します。"の説明で"フォーム内の要素を取得するにはdocument.formsでname、つまりフォームの名前を指定します。「document.forms.name(任意のフォームの名前)」のように記述して指定します。"とあったけれども、これだとフォームを指定しているだけでフォーム内の要素を取得する前段階の話になるような…

4-1
sample.html const側かlet側をコメントアウトしないと駄目。

チャプタークイズ1
constじゃなくてletの方が良いような。原則としてconstを使えと言ってもそれは作法的なものであって、varに対応するものはletなんじゃないのかな? 違うのかな(´・ω・`)?

"ドキュメント内の[]要素の上にペーストします。"って問題もなんかな。必ずしも最初の段階で<script>要素が存在しているわけじゃないし。

"Javascriptでクラス名の先頭は大文字にする決まりがある。"
決まり…なのかな……"推奨されている"とか"一般的"…くらい?

Promiseはにわかには理解し難かったので、ぐぐって説明ページを眺めたり。
Promiseを使う
とほほのPromise入門 ←"の方が多様されます。" キーッヽ(`Д´)ノ

8 sample.html タイトルがtetch()になってる

fetchの返り値のreponseが解決されるまでPromise?みたいなのはなんか理解しにくいわ(´・ω・`)
つーかきちんと理解してないw

asyncとawaitの説明まで観たけど、やっぱこの超変態言語やべぇな…( ;・´ω・`)ゴクリッ

"オブジェクトの形式を基本にした定め方"…定め方という言葉がしっくり来ないな…定義?

取り敢えずつまみ食い的にしか読んでいないパーフェクトJavaScriptを読み直した方がいいなと思った(ノ∀`)


ここからAngularやReact、vueの動画を観続けるわけだが、Angularの環境構築でなんか上手く行ってるんだか上手く行ってないんだかわからず、時間がかかるかもしれないので、取り敢えずここまでをエントリ化した。

あと21H1がリリースされたらクリーンインストールもしたいんだよなぁ…
そうすると環境構築をし直さないといけないんだよなぁ…
どうしようかなぁ(´・ω・`) 

5/10リリースという記事もあったのに、5/11になってもまだ出て来ない…

何故2回ブラウザが呼ばれてしまうんだろうね(´・ω・`)?(未解決)

ちょっと前に「エクセルのセルから右クリックでWeb検索等が出来たらいいのになぁ…(´・ω・`)」と思い調べてちょこちょこ触ったものの、途中で他のことをやってしまったのか、その結末自体を忘れてしまっていた(ノ∀`)

ちなみにExcel2019ではスマート検索が使えるのでBingでの検索結果を表示することは出来る。模索していたのはGoogle検索を始めとするその他のWebサービスの利用。

残っていたリンクを読み直して、改めてちょろちょろと書いてみた。

Option Explicit

Sub ActiveCell_WEBSearch(strURL As String)

    Dim rgActiveCell As Range
    Set rgActiveCell = ActiveCell

    ActiveWorkbook.FollowHyperlink Address:=strURL & WorksheetFunction.EncodeURL(rgActiveCell)
End Sub

Sub Add_CommandBars_Proc()
    
    Dim cmdBar_google As CommandBarControl
    Dim cmdBar_weblio As CommandBarControl

    CommandBars("Cell").Reset

    SetCommandBars cmdBar_google, "Google検索", """https://www.google.co.jp/search?q="""
    SetCommandBars cmdBar_weblio, "Weblio検索", """https://www.weblio.jp/content?query="""

End Sub

Sub SetCommandBars(cmdBar As CommandBarControl, captionName As String, targetURL As String)
    Set cmdBar = CommandBars("Cell").Controls.Add()
    cmdBar.Caption = captionName
    cmdBar.OnAction = "ActiveCell_WEBSearch(" & targetURL & ")"

End Sub

参考:
【ブラウザ操作】簡単!5行VBA!セルの文字をGoogle検索するマクロ
ショートカットメニュー(CommandBar オブジェクト)
ワークシート関数をVBAで使用する(WorksheetFunctionプロパティ)

Add_CommandBars_Proc()を一回だけ起動して、セルのコンテキストメニューにアクションを追加するだけ。

SetCommandBars()はAdd_CommandBars_Proc()でのアクション追加の重複部分を外に出しただけ。

Sub ActiveCell_WEBSearch()は実際の検索呼び出し部分で与えられたURLとアクティブセル内のテキストをパーセントエンコードして結合してActiveWorkbook.FollowHyperlinkに渡しているだけ。

でまあ、これはこれで動くのだけれども…
 
 
 
 
 
 
何故かタブが2つ開いてしまうヽ(`Д´)ノ

どうも2回呼び出されてるようだが、これを回避する方法がわからない。
NewWindow=Trueにしても関係ないし、ブラウザを日頃使ってるvivaldiからedgeに変更しても、IEに変更しても、chromeに変更しても症状は変わらない。つーか、ActiveCell_WEBSearch()内でMsgBoxを表示させてみたら2回表示されたので、2回呼ばれてるということなのだろう…

似たようなことでハマってる人居ないかなぁと思ったけれど、そんなに居なかった模様。うちの環境やコードがおかしいのか、それともこんな変なことをする人は少ないということなのだろうか?

一応stackoverflowでヒットしたけれども解決してない模様。
Private Sub Opens Hyperlink Twice instead of Once


バグなのか、仕様なのか?

2つタブが開くということにイライラしない人ならば、上記のようなコードで色々と出来ていいんだろうけれども、俺氏はちょっと耐えられない(#^ω^)

まあ取り敢えずここまでまとめておけば、またいつか続きをする時に楽する為用のエントリ(ノ∀`) ダカラオチハナイ

うにのトゲは刺さると痛い(´・ω・`)-41 : Java プラグインの利用 (Unity側)

前回のエントリに続き、Unity側の手順。
尚、今回の設定値等は前回の設定値と対応している。


  1. Unity Hubを起動し、任意のバージョンのUnityでプロジェクトを作成する。
    ※この例では"2020.2.4f1"
  2. [2D]を選択、任意のプロジェクト名を指定し、<作成>をクリック。
    ※この例では"UniAndLink"。ちなみになんでネーミングにブレがあるかというと、それほど深く考えて作らなかったから(ノ∀`)
  3. Unityが起動したら、[ファイル]-[ビルド設定]の順に選択。
  4. 「Build Setting」タブが表示されたら、[App Bundleをビルド]、[開発ビルド]、[スクリプトデバッグ]を有効にし、 をクリック。

    ※ここは実機デバッグをしない場合は必要ないかも(ノ∀`) [App Bundleをビルド]はそもそもこんな実験プログラムでは必要ないか。

  5. プラットフォームの切り替え処理が終了したら、<プレイヤー設定>をクリック。
  6. 「Project Settings」タブが表示されたら、[企業名]に任意の値を指定。

    ※今もDefaultCompanyだとビルド出来ないのかどうか不明(ノ∀`) もしかしたら変えなくてもいいかも。

  7. [最低 API レベル]を"Android 10.0(API level 29)"、[スクリプティングバックエンド]を"IL2CPP"、[API 互換性レベル]を".NET 4.x"にそれれぞれ設定し、[ARM64]を有効にする。
  8. 「ゲーム」タブに切り替え、画面アスペクト比を"1920x1080 Portrait"を選択。
    ※尚、この辺の手順は実機デバッグでLogを確認する場合には必須ではない(ノ∀`)
  9. 「ヒエラルキー」タブ上で右クリックし、コンテキストメニューが表示されたら、[UI]-[テキスト]を選択。
    ※この例では作成されたTextコンポーネントを持つゲームオブジェクト名を"result"に指定。
  10. 「ヒエラルキー」タブ上で右クリックし、コンテキストメニューが表示されたら、[UI]-[ボタン]を選択。
  11. 「ヒエラルキー」タブ上で"Canvas"を選択し、インスペクターで、
    Canvasコンポーネントの[レンダーモード]で"スクリーンスペース - カメラ"を選択し、[レンダーカメラ]に「ヒエラルキー」タブ上の"Main Camera"をドラッグ&ドロップ。

    Canvas Scalerコンポーネントの[UI スケールモード]を"画面サイズに拡大"、[参照解像度]の[X]と[Y]にそれぞれ"1080"と"1920"を指定。[マッチ]の値を"1"に。

  12. 「プロジェクト」タブ上でAssetsフォルダ以下にPluginsフォルダ、Pluginsフォルダ内にAndroidフォルダを作成し、そこにAndroid Studioでビルドしたプラグイン(ライブラリ)をドラッグ&ドロップ。

  13. 「プロジェクト」タブ上でAssetsフォルダ以下にScriptsフォルダを作成し、Scriptsフォルダ内に"C#スクリプト"を任意の名前で作成。
    ※この例では"CallJavaLib"

  14. 前項で作成したスクリプトファイルをダブルクリックし、Visual Studioが起動したら、以下の内容を入力し、保存。
    ※余り深く考えずに人のコードを切った貼ったしてて気が付かなかったが、これjavalibがstaticである必要もないし、PushButton()メソッドのローカル変数で良かったな(ノ∀`)

    (パッケージ名やクラス名を任意の値を指定している場合は適宜書き換える。特にAndroidJavaObjectをNewする際のパッケージ名を間違えないこと。)

    using UnityEngine;
    using System.Collections.Generic;
    using UnityEngine.UI;
    
    public class CallJavaLib: MonoBehaviour
    {
        static AndroidJavaObject javalib = null;
    
        public static void PushButton()
        {
            Debug.Log("Pushed");
            javalib = new AndroidJavaObject("com.example.uniandlib.ReturnString");
    #if UNITY_ANDROID && !UNITY_EDITOR
            GameObject.Find("result").GetComponent<Text>().text = javalib.Call<string>("returnResult","From Unity");
    #endif
        }
    }
    

  15. Textコンポーネントを持つゲームオブジェクトとButtonコンポーネントを持つゲームオブジェクトのサイズの位置を任意で変更する。
    ※この辺は正直適当で良い(ノ∀`)
  16. Textコンポーネントの[フォントサイズ]を"50"、[色]を黄色に指定する。
  17. 作成したスクリプトをButtonコンポーネントを持つゲームオブジェクトにドラッグ&ドロップ。
  18. ドラッグ&ドロップしたスクリプトが追加されていることを確認し、Buttonコンポーネントの[クリック時]の<+>をクリック。
  19. Buttonコンポーネントの[クリック時]のオブジェクト欄に「ヒエラルキー」タブ上のButtonをドラッグ&ドロップ。

  20. Buttonコンポーネントの[クリック時]の関数欄から[追加したスクリプトファイル]-[ボタン押下時に実行させたいメソッド]の順で選択。
    ※この例では"CallJavaLib"の"PushButton()"。
  21. 実機に接続し、「Build Settings」タブの<ビルドして実行>をクリック。
  22. aabの名前を指定して<保存>をクリック。
  23. 問題がなければ、実機上で以下のように表示され、ボタンをクリックすると、Javaライブラリ上で指定した文字列が追加されTextコンポーネント上で表示される。

内容的に大したことをしていないが、取り敢えず、Javaプラグインの初歩の使い方は理解出来たので良しとしよう(・∀・)

久しぶりに手順みたいなのを作ったから、色々と瑕疵がある(ノ∀`)

覚書 : jQueryを用いた埋め込みデータ表示

きっと未来の俺氏はいつものように過去にやったことをほぼほぼ全部忘れてしまい、「これ、なんだったかのぅ("・ω・゙)」となるに決まっているので、自分の為に覚書を残す。

デザインやらコードやら、色々と手直ししたいところはあるものの、取り敢えずこれでいいか。

このデータ埋め込みだと、コードをそのままコピペすることも出来るし、コメントも埋め込めるので視認性は良いかなぁと思うのだけれどもどうかなぁ…(´・ω・`)

cssでも実現可能なら、いずれはcssのみで実装したいところではある。


disp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<meta http-equiv="content-style-type" content="text/css">
<title>embedded_data</title>

<style type="text/css">
div#disp {
white-space: nowrap;
border: solid 1px #808080;
width:100%;
height:150px;
padding: 0.5em;
line-height: 1.8em;
overflow: auto;
background-color:#eeeeee;
}

div#code {
white-space: nowrap;
border: solid 1px #808080;
width:100%;
height:250px;
padding: 0.5em;
overflow: auto;
background-color:#dddddd;
}

.ml-1 {
margin-left: 20px;
}
.ml-2 {
margin-left: 40px;
}
.ml-3 {
margin-left: 60px;
}
.ml-4 {
margin-left: 80px;
}

</style>
</head>
<body>

<div id='disp'>disp</div>

<div id='code'>
<span id='d1' class='dc'>aaa</span><br>
<span id='d2' class='dc'>bbb</span><br>
</div>

<div>
<span id='d_d1' data-con='aaa'></span><br>
<span id='d_d2' data-con='bbb'></span><br>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type='text/javascript'>
jQuery(function () {
let orgColor;
$('span.dc').hover(
function () {
orgColor = $(this).css('color');
$(this).css('color','red');
var id = '#d_' + $(this).attr('id');
$('#disp').html($(id).attr('data-con'))
},
function () {
$(this).css('color',orgColor);
}
);
});
</script>
</body>
</html>