コマンドラインからでなく、VScode環境で動かそうとすると、
import pygame
のリンクが見つからないとなる。
実行すると問題なく実行されるので、エディタ環境と実行環境でPythonのパスが違うようです。
“PYTHON : ENVIROMENTS” (Pythonマーククリック)
で、”Set as active workplace interpretor”でコンソールから実行する最新版数を設定したらimport pygameのリンク見つからないエラーは消えました。
admin

la vie libre
ほんの一面に過ぎませんが、速度比較をしてみた。
やってみたことは整数100万までの素数を求める。ロジックはどちらも同じで平方根までの割り算でどこかで割り切れる(非素数)で判定、割り切れた時点で素数では無いから計算量削減のため打ち切り、しています。求めた素数はvector(c++)、list(python)に保存しています。
計算量(時間)は一桁増えるとほぼ30倍(10の2分の3乗)になるから、桁数の多い因数分解の計算量を現在の暗号原理とするのも理解できます。
<c++ code>
sqrtは本来は不動小数点ですが、clang +17では暗黙変換(出力も)されてます。コンパイラによってはエラーになるかも知れない。
#include <iostream>
#include <chrono>
#include <cmath>
#include <vector>
int main(){
int sqt;
bool flag;
std::vector vec{};
std::chrono::system_clock::time_point start, end;
start = std::chrono::system_clock::now();
for (int i = 2; i <= 1000000; ++i){ // check prime numbers
flag = false;
sqt = sqrt(i);
for (int j = 2; j <= sqt; ++j){
if (i%j == 0){
flag = true;
break;
}
}
if (flag != true){
vec.push_back(i);
}
}
end = std::chrono::system_clock::now();
double elapsed = std::chrono::duration_cast(end-start).count();
std::cout << "elapsed time : " << elapsed << " ms" << std::endl;
std::cout << std::endl;
std::cout << "number of prime integers(up to 1M) : " << vec.size() << std::endl;
std::cout << std::endl;
std::cout << "last five prime integers " << std::endl;
for (auto itr = (vec.end() - 5); itr != vec.end(); ++itr){
std::cout << *itr << std::endl;
}
}
<Python code>
c++とpython(for in range)ではループの上限値の捉え方が違うのでループ回数に+1しないと正しい結果が出ない。
それは、内部ループのforで素数の二乗(例えば9, 25, 49)が素数判定されてしまうから。
import time
import math
start = time.time()
set = list()
flag = False
sqt = 0;
for i in range(2, 1000001): # check prime numbers
flag = False;
sqt = math.sqrt(i)
for j in range(2, int(sqt) + 1):
if i%j == 0:
flag = True
break
if flag != True:
set.append(i)
end = time.time()
print("elapsed time : ",'{:.0f}'.format((end-start)*1000)+ " ms")
print("number of prime integers(up to 1M) : ",len(set))
print("")
print("last five prime integers")
for i in range(5):
print(set[-5 + i])
以下に最後部分の素数と実行時間を記載しています。
c++
elapsed time : 268 ms
number of prime integers(up to 1M) : 78498
last five prime integers
999953
999959
999961
999979
999983
Python
elapsed time : 9433 ms
number of prime integers(up to 1M) : 78498
last five prime integers
999953
999959
999961
999979
999983
その差はおよそ40倍近くc++の方が高速で、実際のアプリでの体感速度ももちろん種類によるけど、概ね一桁は違うんだろうと思う。
もちろんPythonも全てインタプリタ処理されるわけではなく、例えばループ処理はキャッシュされているだろうけど、やはり実行効率は比較にならない。
admin
Pythonでゲームを作るというのは、他の言語を使うよりは相対的な敷居は低そうです。Python自体にすでに豊富なライブラリもあるから。PyGameはゲームエンジンというよりはゲームライブラリで、ゲームに必要なGUIとかボタン処理(event listener)、あるいは計算量の多い処理をライブラリ化することで、Pythonでのゲーム作成を簡単にできるようにしてくれます。
・本家
取っ掛かりのページ、
・PyGameをインストール
% pip3 install pygame
python起動して、
>>> import pygame
が問題なければ正常にインストールされてます。
・サンプルプログラム
https://www.pygame.org/download.shtml
からダウンロードして、tar.gzを解凍するとsamplesディレクトリがあるのでそれを持ってくる。
Numpyとpyopenglが必要なサンプルあったのでインストール。
% pip3 install numpy
% pip3 install PyOpenGL
Pythonとゲームの構造の両方を習得できるから良いツールでは無いかと思う。
admin
今までMac OSだと、ドライバー必要と思っていたけど、以下のやり方でドライバーは入れなくても使えます。
Linuxのように完全に手続き不要ではなく、ifconfigで接続先を切り替える方法です。
ifconfig(部分)で以下のようなメッセージが出てますが、
en6: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=6467<RXCSUM,TXCSUM,VLAN_MTU,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZE % sudo ifconfig en6 down
% sudo ifconfig en6 up のように入力するとUnit V2に接続されるので、Chromeからhttp://10.254.239.1/
を入力すれば管理画面が出てきます。
参考は、https://qiita.com/kowloon/items/99073be408f6432711aad
です。
admin
以下の二つのブログで言及してますが、『独習C++』をVScode環境で動作させながら完了。
おそらくこの本の目的とするところは、APIドキュメントの意味を理解できることができるようになることだろうだし、実用的にもほぼこの範囲でカバーできるはず。
上のブログと同じくC++が必要とされる領域は、ハードウェアリソースが限定される領域と、速度優先の領域だろう。例えば自動運転とかはリアルタイム性が必要条件だから、スクリプト言語を車で使えそうなのはエンタメぐらいだろうから。
admin
家電製品の規格はそれほど気にしたことはなかったけれども、Bluesound Nodeで初めて目にした規格を列挙してみる。
① MQA
ちょっと見は圧縮方式のように見えるけれども、ロスレスだから両方向で変換できるんだろう。割とホットのようで、NodeのチャネルでもMQA対応チャネルがあって、CD品質以上が確保できるようです。(添付の仕様では記載されてません)
② aptXおよびaptX HD
Bluetoothは音はそれなりの印象しか持ってなかったけれども、一番大きいのはワイヤレスイヤホンの普及だろうけど、クアルコムが定義した高品質音声伝送規約で可逆圧縮方式です。
③ eARC
テレビのハイレゾ対応規格と思えばよさそう。HDMI経由で伝送されるが、ケーブルはHDMI2.1対応でないと適応できません。
admin
英語キーボード使っていて、karabiner使ってデフォルトの左右の『コマンドキー』に切り替えを割り当てていますが、切り替えできなくなることが2〜3回発生。おそらくOSアップデートと関係ありそうです。
対応はリブートしなくとも、karabinerの終了/再起動で復活はします。今度発生したらevent viewerで見てみようと思います。
P.S.
再発して、karabiner再起動でも復旧せず、ログ見るとキーからはちゃんと入力を受け取っているから再起動対応(@2022/4/15)
P.S.
やはり時々発生するけれども、LCD閉じて開いて再度ロック解除するとほとんどの確率で復旧するから、これが一番簡単な回避方法(@2022/5)
admin
Nodeの発売元は、Lenbrookと言うんだ。Wi-Fi内スキャンでメーカー名出てきたのでちょっと調べてみた。
創業以来40年以上経過しているので、長いキャリアのカナダの会社。オーディオファン(music lover)向けのプロダクトを出していると。
admin
Node登録のネットラジオ局のビットレートは不明ですが、少なくとも無償のSpotifyでの最高品質160Kbpsはそれなりで、Volumio + i2s DACの320Kbpsには及びません。
ということで、Volumio登録で320Kbpsの曲をリストしてみた。ルーマニアの局はオーディオボリュームレベルが高め。
自分にとっての定番はLinnですね。自分のところで販売している音源に限定されますが。Linn classicalはNodeにも登録されていて、切り替えてもVolumioとNodeで違いわかりません。つまり、i2s DACの優秀さです。
直接の関係はないですが、ルーマニ語は飛地ですがロマンス語系統になるんだそうです。
admin