2021年5月18日火曜日

Scratchの向きと三角関係について

あまプロではScratchを使ってプログラミングをお教えする事が有ります。
先日、スクラッチの角度(向き)ではまったので、あメログ。

Scratchではスプライトの角度(向き)は算数(数学)の角度と少し違います。
一周360°は同じなんですが、

 算数       Scratch  
  90°        0°   
180° ┼ 0°(360°)  -90° ┼ 90°  
  270°       180°(-180°)

こんな感じです。
算数は左回りで増えるんですが、Scratchは右回りで増えるんですね…。
ちなみに、スプライトの向きの初期値は90°(右向き)です。

 で、問題は三角関係を使う時なんです。
スプライトを円運動さしたり、上下さしたり、左右さしたりしたい時にsinやcosを使います。
上でScratchの向きは算数と違うと書きましたが、三角関数の時は算数と同じになるんですね…。

つまり、
90°のsinは0
ではなくて1になります。
なもんで90°のcosは0になります。

ややこしい!
サンプルはこちらです。

2021年5月8日土曜日

LibreOfficeBasicの配列追加について

あまプロではLibreOfficeBasicを使ってマクロを作る事が有ります。
LibreOfficeBasicの配列追加で少し嵌まったんであメログ。

LibreOfficeBasicで配列を追加するにはReDim Preserveを使います。
例えば配列の末尾に一つ追加するのはこちら。

Sub test
    Dim stringArray( 0) As String
    stringArray( 0) = "文字列0"
    Redim Preserve stringArray( Ubound( stringArray) + 1)
    stringArray( 1) = "文字列1"
    
    Msgbox stringArray( 0) &" "& stringArray( 1)
End Sub
↑を実行するとこうなります。

意図した通りです。

なんですが、Functionの戻り値で配列を受け取る時は要注意です。
String型なんで、配列の戻り値もStringにすんのかなと考え

Function addArray( stringArray As String) As String
    Redim Preserve stringArray( Ubound( stringArray) + 1)
    addArray = stringArray
End Function

Sub test
    Dim stringArray( 0) As String
    stringArray( 0) = "文字列0"
    stringArray = addArray( stringArray)
    stringArray( 1) = "文字列1"
    
    Msgbox stringArray( 0) &" "& stringArray( 1)
End Sub
↑を実行してみると

BASICランタイムエラー!オブジェクト変数は設定できていません。

実行エラーになります。
ほなVariant型にすんのかなと考え

Function addArray( stringArray As String) As Variant
    Redim Preserve stringArray( Ubound( stringArray) + 1)
    addArray = stringArray
End Function

Sub test
    Dim stringArray( 0) As Variant
    stringArray( 0) = "文字列0"
    stringArray = addArray( stringArray)
    stringArray( 1) = "文字列1"
    
    Msgbox stringArray( 0) &" "& stringArray( 1)
End Sub

↑を実行しても同じく

BASICランタイムエラー!オブジェクト変数は設定できていません。

実行エラー…。
色々試した挙げ句VariantをStringで受け取ると良ぇ様です。

Function addArray( stringArray As String) As Variant
    ReDim Preserve stringArray( Ubound( stringArray) + 1)
    addArray = stringArray
End Function

Sub test
    Dim stringArray( 0) As String
    stringArray( 0) = "文字列0"
    stringArray = addArray( stringArray)
    stringArray( 1) = "文字列1"
    
    Msgbox stringArray( 0) &" "& stringArray( 1)
End Sub

↑を実行すると

意図した通りになりました。
でも、VariantをVariantで受け取っても動く場合が有るんすよね…良ぉ解らん。

マクロ本体はGithubで公開しています。

環境はバージョン: 6.4.7.2 Build ID: 1:6.4.7-0ubuntu0.20.04.1です。

2021年1月30日土曜日

Dell Latitude E6320にUbuntu 20.04 LTSをインストールするとwi-fiに接続できないについて

 あまプロでは生徒のノートパソコンにUbuntuを使っています。
先日、Ubuntuのネット接続て嵌ったのてあメログ。

生徒用に買うたDell Latitude E6320にUbuntu 20.04.1 LTSをインストールしました。
インストール完了後に再起動を行って、再起動後まではwi-fiがつながっていました。
しかし、その後の更新でシステムエラーが発生し、その再起動後にwi-fiがつながらなくなってしまいました…。
wi-fiの物理スイッチをOn/Offしても変化なし、再起動しても変化なし…。

色々調べてみると、無線装置のbcmwl packageにバグが有るらしく、既にバグ報告が登録されてました。
他の方の投稿で、新しい版のbcmwl packageをインストールすると解決したというのを見掛けたので、試してみると無事に再起動後にwi-fiに繋がりました…。

良かった良かった。

2021年1月22日金曜日

FujitsuパソコンにUbuntuをインストールについて

 あまプロでは生徒のノートパソコンのOSにUbuntuを使っています。

先日、Ubuntuのインストールで嵌まったんであメログ。

先ず、ここからisoファイルをダウンロードして、ブータブルUSBを作成します。

 次にBIOSで起動デバイスの優先順位を選択し、USBメモリを上位にします。(ここは一般的なBIOSと同じ)

次にレガシーUSBサポートを有効にします(ここも一般的なBIOSと同じ)
次にセキュリティの管理者用パスワードを設定して、取り外し可能なディスクからの起動を「常に可能」にする(ここがFujitsu特有)

上記三点の設定を行わないと、USBから起動してくれませんでした…。

Ubuntuのインストールが終われば、上記設定は元に戻しても構いません。

2020年11月26日木曜日

ワードプレスのページネーションについて

 あまプロではWrodpressでウェブサイトを構築する事が有ります。
ワードプレスで少し躓いたんであメログ。

 ワードプレスでは投稿を一定数のページ単位で表示するページネーションという機能が備わっています。
公式の基本的な例にPHPのプログラムが載っていて、それをコピペしたらページネーションのHTMLが生成される
筈なんですが、何故か私の環境ではURLのクエリ部分が
https://amahiroba.info/?page_id=721&category=ボランティア募集#038;category=ボランティア募集&paged=2
の様にcategoryが繰り返されて正しいURLになりませんでした…。

原因を調べてみるとesc_url( get_pagenum_link( $big))でURLをエスケープしている箇所が有るんですが、そこにマルチバイト文字列(日本語)等#038;が入っているとエスケープ出来ないそうです。
なので、エスケープ出来る様にhtml_entity_decode( get_pagenum_link( $big))に改修すると

正しいURLが生成されました。
https://amahiroba.info/?page_id=721&category=ボランティア募集&paged=2

2020年7月18日土曜日

Ubuntuの追加したユーザでの日本語入力について

あまプロではUbuntuを使ってプログラミング教室を行っています。
Ubuntuの日本語入力で躓いたのであメログ。

Ubuntuのインストール時に入力言語の設定を行います。
ここで日本語を設定すると、キーボードに日本語レイアウトを選択して、全角半角の切り替えが出来る様になります。

通常はこれだけで日本語が行えるんですが、新たなユーザを追加した場合にハマりポイントが有ります。
 インストール時に日本語入力の設定を行っていれば、正しく日本語入力出来て、
 地域と言語設定もこの様になってます。
キーボードレイアウトも日本語キーボードになってます。
なんですが、後からユーザを追加した場合は、地域と言語設定が
 この様になって、キーボードレイアウトも
英語キーボードになってまうんですね…。
なもんで、新たにユーザを追加した場合は、一度入力ソースを全部削除して
日本語を追加します。
これで日本語キーボードレイアウトになります。
次に日本語(Mozc)を追加します。

これでログアウトしてログインすると、無事に日本語入力が出来る様になります。

通行止めするらしい