スレ立てるまでもない質問はここで 159匹目

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2022/02/12(土) 22:44:40.76ID:AqYcq6TN
この板はプログラムを作る人のための板です。
あらゆる質問はまず
スレ立てるまでもない質問はここで
スレにしてください。

【前スレ】
スレ立てるまでもない質問はここで 158匹目
https://mevius.5ch.net/test/read.cgi/tech/1635193843/
次スレは>>980が立てること
2022/02/24(木) 12:31:55.94ID:D9/QhxEj
>>168
ここは技術板だから「先輩にどう対応したらいいか。プログラマ業界の他の職場ではどうなのか」って話は板違い。プログラマ板へどうぞ
2022/02/24(木) 12:33:04.26ID:2qhRGcQ8
>>168
頻出パターンだから拡張メソッドで一般化しておくのがいいと思う
foreachでカウント用の変数を都度用意してたらcontinueとかでバグる可能性もある
forの場合は将来的に要素へのindexアクセスが変な形で拡張されたりリファクタリングの妨げになる可能性がある
(メンテする技術者のレベル次第)

public static IEnumerable<KeyValuePair<int, T>> Enumerate<T>(this IEnumerable<T> collection){
int index=0;
foreach (var item in collection) {
yield return new KeyValuePair<int, T>(index++, item);
}
}

foreach (var (i, v) in foo.Enumerate()){

}

↑この拡張メソッドの場合はTがintの場合に(i, v)を(v, i)と勘違いしてバグる可能性はある
2022/02/24(木) 12:35:41.36ID:6X2WQPLr
SQLに文字列投げる前のバリデーションに使う正規表現で鉄板なの教えてください
英数字記号で、クォーテーションとかSQLだと危ないやつは弾く感じの
2022/02/24(木) 12:43:46.72ID:ycqMJ20y
sql命令を文字列として作らずパラーメーターとして渡す
2022/02/24(木) 12:48:01.07ID:jcAfJg3X
自分の書き方が悪くグチを言っているみたいになってしまいすみません

レスの最後の2行は先輩への対応方法を聞いているわけではなく、カウントが必要な単純なループを皆さんはどの様に対応されますかと言う質問でした

>>172
なるほど、Rubyはそうなんですね!
ありがとうございます!!

>>174
拡張メソッド良いですね!
自分なりに保守性を考慮して考えてみたいと思います
めっちゃ参考になりましたありがとうございます!
2022/02/24(木) 13:03:32.01ID:5we6KcaS
プログラミングは全てケースバイケース
そんな細かい所を統一する意味は全くないからその時に書きやすい方を使うのが正解だよ
2022/02/24(木) 13:47:22.35ID:7WoYZRJz
自分はforeachではないforが出てくるのは最終手段だと思ってるのでSelectさせる

インデックスを得る手段がもう少しマシな方法ほしいのだが
2022/02/24(木) 15:38:45.00ID:1DMGsg19
転職の言語要件に
@vb.netとc#ならわかるんですが
Ac#とjavaって書いてある所があり

括りとしてはどっちが正解なんですかね?
個人的には@かと思うんですが

Aの所は避けた方が良いですね?
2022/02/24(木) 15:46:25.40ID:5we6KcaS
せっかくだから俺はAを選ぶぜ
2022/02/24(木) 15:51:20.71ID:ycqMJ20y
javaはスマホ開発もするってのが多い
vb.net入ってる方が地雷だと思うぞ
2022/02/24(木) 17:03:20.09ID:+aDYy71x
foreachの中心的価値の一つはコレクションの最初から最後までもれなく処理対象としていることをアッピルする効果だと思う
forでは先頭の要素や末尾の要素だけ処理していないとき、バグなのか意図的なのか即座に判断できないことがある
foreachで統一的に書く方針には一定の合理性があると思う

俺はIDEの支援込みでfor文使ってた
カウンタの初期化とインクリメント文を書くのだるいなと思ったけど、for文でもカッコ内に同じことが書いてあるのでまあいい気もする
でもブロック末尾のインクリメントは書き忘れるんだよな
-1で始めてすぐインクリメントしてもいいけど微妙
2022/02/24(木) 17:10:25.79ID:ycqMJ20y
そんなあなたにfinally
2022/02/24(木) 18:33:43.52ID:+aDYy71x
really?
186デフォルトの名無しさん
垢版 |
2022/02/24(木) 20:18:19.15ID:MZJU+q2v
ジョブ運用管理のOSSって何が有名?
cronが多いのかな
2022/02/24(木) 20:27:03.32ID:5we6KcaS
sidekiqとか?
188デフォルトの名無しさん
垢版 |
2022/02/24(木) 20:51:05.92ID:NBv0zeLR
命名スレないっぽいのでここで聞きたいんだけど
デスクトップアプリケーション作ってて、ボタンは一箇所にまとめてある
入出力、テストや表示、操作など

app.___.load_btnとかapp.___.test_btnとかいう構造のとき、ボタンウィジェットの親の名前ってなんてつけるのです?
app.console.load_btn? cmdpanel? btns?
189デフォルトの名無しさん
垢版 |
2022/02/24(木) 20:52:39.24ID:NBv0zeLR
あ、ボタンは複数個あって親フレームにひとまとめに配置してある
この親フレーム名 は? という質問です
2022/02/24(木) 21:02:40.71ID:iDpw9I/7
>>188
> 命名スレないっぽいのでここで聞きたいんだけど
検索能力なさすぎだろ…

クラス名・変数名に迷ったら書き込むスレ。Part29
https://mevius.5ch.net/test/read.cgi/tech/1619427133/
191デフォルトの名無しさん
垢版 |
2022/02/24(木) 21:16:15.58ID:NBv0zeLR
>>190
命名とか設計で検索してたw
失礼した
192デフォルトの名無しさん
垢版 |
2022/02/24(木) 21:36:16.86ID:sqPOmgLf
>>134です。
皆さん、回答ありがとうございます。
動的なサイトというのは、具体的に言うと、巨大画像掲示板群サイトを作ろうとしているのですが、
それを作るために必要な言語などは以下のものだけで良いでしょうか?

HTML、CSS、PHP、JavaScript、MySQL、データベースについて

これ以外にも必要な言語などがあれば教えてください。
あと、やっぱり巨大画像掲示板群サイトを作るとなると、
JavaScriptは避けては通れないですよね?
JavaScript無しで作る事は不可能ですか?

そもそもプログラミングを始める順番は、HTML→CSS・・・の順で良かったのでしょうか?
自分は元々あまりコンピュータとかソフトウェアとかネットワークなどというものに対して
あまり詳しくないので、プログラミングをしたかったらもっと根源的なところから始めるべきなのでしょうか?
そこらへんについてもいろいろ教えてほしいです。

回答よろしくお願いします。
2022/02/24(木) 21:48:59.13ID:ydRUnLFS
html、PHP
(phpじゃなくてほかのでもいいけど)この二つがあれば作れる。その他は必須じゃない
「php 掲示板 作り方」なんかでぐぐって意味わからなくていいからコピペでまずは文字の掲示板を適当に作るところからかな
2022/02/24(木) 21:49:45.68ID:JxtsCxtE
巨大画像掲示板は転送量代で月に何十万、何百万もかかるからそのつもりで
2022/02/24(木) 21:55:35.90ID:82W7j8jp
前スレの、>928
Ruby で作ってみた。
Rubyスクリプト内で、7-zip を実行すると、

7-zipでは解凍する際、同名のフォルダが存在すると、
上書きするかどうかを聞いてくるので、そこで実行が止まる

それを避けるため一旦、現在日時から、
新しいフォルダ・dest_dir を作って、その中に解凍する

7-zipでは、同名のフォルダが存在しても、エラーにすることも出来ない。
そのフォルダ内に解凍しようとするから。
また事前に、アーカイブ内のフォルダ名を取得することも出来ない

dest_dir は、現在日時から作った、新しいフォルダ。
dest_dir内には、アーカイブを解凍した、decomp_root_dir と、
decomp_root_dirの末尾に、_out を加えた、out_dir の2つを作る。
out_dir内には、フォルダ階層を作りながら、処理した画像ファイルを入れていく

デスクトップには、ショートカットを作る。
リンク先には、Rubyの実行パスと、Rubyスクリプトファイルのパスを書く

リンク先
C:\Ruby25-x64\bin\ruby.exe C:/Users/Owner/Documents/Ruby/script.rb

作業フォルダ
C:\Users\Owner\Desktop

そのショートカットに、解凍したいアーカイブ、
C:/Users/Owner/Documents/data/z.zip を、Drag & Drop する

次へ続く
196195
垢版 |
2022/02/24(木) 21:56:18.77ID:82W7j8jp
require 'pathname'

# 7-Zipの実行パス。Program Files には半角空白があるので、要注意!
ZIP7_EXE_PATH = "C:/Program Files/7-Zip/7z.exe"

# expand_path で、Windows のパス区切り \ を、/ に変換する
src_arch_path = Pathname( ARGV[ 0 ] ).expand_path
#=> C:/Users/Owner/Documents/data/z.zip

# 現在時刻からディレクトリ名を作る際、名前が衝突しないように、念のため、1秒進める
sleep 1

# DateTime は非推奨なので、Time を使う
dest_dir = src_arch_path.parent + Time.now.strftime( "%Y%m%d_%H%M%S" )
#=> <Pathname: C:/Users/Owner/Documents/data/20220224_211030>

dest_dir.mkdir( ) # ディレクトリを作る
print "#{ dest_dir.to_s } フォルダを作りました\n\n"

# 7z x -o(解凍先パス) (アーカイブパス)
# 解凍する。Program Files には半角空白があるので、"〜" で囲む
puts %x("#{ ZIP7_EXE_PATH }" x -o#{ dest_dir } #{ src_arch_path })

次へ続く
197195
垢版 |
2022/02/24(木) 21:57:06.88ID:82W7j8jp
# dest_dir の直下には、1つだけ解凍されたディレクトリがあると想定する
decomp_root_path = dest_dir.children[0]
#=> <Pathname: C:/Users/Owner/Documents/data/20220224_211030/z>

decomp_root_dir = decomp_root_path.basename.to_s # ディレクトリ名。z

# 末尾に、_out を加えた、ディレクトリ名。z_out
out_dir = decomp_root_dir + "_out"

# decomp_root_path の末尾に、_out を加えたパス
out_root_path = dest_dir + out_dir
#=> <Pathname: C:/Users/Owner/Documents/data/20220224_211030/z_out>

out_root_path.mkdir( ) # ディレクトリを作る
print "\n#{ out_root_path.to_s } フォルダを作りました\n\n"

# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
decomp_root_path.glob( "**/*.{png,jpg,jpeg,gif,bmp,webp}" ) do |full_path|

# decomp_root_dirの部分だけを、_out を加えて、out_dir に変えたもの
out_full_path = out_root_path + full_path.relative_path_from( decomp_root_path )

dir = out_full_path.parent # ディレクトリ
# ディレクトリが存在しなければ、親ディレクトリも含めて作る。mkdir_p
dir.mkpath unless dir.directory?

# ここに、各画像ファイルの変換処理を書く!
end

次へ続く
198195
垢版 |
2022/02/24(木) 21:58:12.15ID:82W7j8jp
# つまり、z フォルダの部分だけを、z_out に変えたものになる

#<Pathname:C:/Users/Owner/Documents/data/20220224_211030/z/zz/a.jpg>
#<Pathname:C:/Users/Owner/Documents/data/20220224_211030/z_out/zz/a.jpg>

# ZIP 形式のアーカイブを作る。-tzip
# 7z a -tzip (アーカイブパス).zip (アーカイブしたいフォルダ)
# 圧縮する。Program Files には半角空白があるので、"〜" で囲む
puts %x("#{ ZIP7_EXE_PATH }" a -tzip #{ out_root_path } #{ out_root_path })

puts "\n#{ out_root_path.to_s }.zip アーカイブを作りました。\n" +
"処理が終了したので、この画面を閉じて下さい"

sleep # 出力したコマンドプロンプト画面を閉じないようにする

以上です!
2022/02/24(木) 22:03:05.14ID:82W7j8jp
>>175
文字列を連結して、SQL 文を作ると、SQL injection される

だから、Ruby on Rails では、O/R マッパーを使う。
place holder を使って、? の所に、変数を埋め込む
2022/02/24(木) 22:05:37.73ID:WpNQdEVr
これって触っちゃいけないやつ?
2022/02/24(木) 22:36:56.77ID:iDpw9I/7
>>200
Ruby を NG
2022/02/25(金) 01:02:54.98ID:Eg3DloqN
>>192
YouTube で有名な、雑食系エンジニア・KENTA のサロンのRuby on Rails 初心者用コースでは、

基本情報技術者資格、Rails, Linux, Docker, Node.js, Bootstrap,
VSCode, Heroku, CircleCI, Github Actions、データベース

今までは、Dockerまでが初心者用コースだったが、
最近は誰でも、Docker出来るから、
AWS Fargate, Terraform, React, Vue.js, TypeScript も

だから、AWSのくろかわこうへいのサロンにも、入る必要がある。
今では、1年の未経験者が、10年以上のプロよりも技術力が上になってる!

KENTA、2021/4

2021年のWeb系エンジニア転職を成功させる3つの技術要素
https://www.youtube.com/watch?v=70VrB7LTe9g

2021/2

Web系エンジニアを目指す人のためのプログラミング学習ロードマップ
https://www.youtube.com/watch?v=0TABrlhci5M
2022/02/25(金) 01:13:59.96ID:kML1EznR
句読点の付け方が全く同じだ
2022/02/25(金) 07:45:38.34ID:nHsHzaxy
>>202
これだけ一生懸命宣伝して見返りはないって笑うなw
2022/02/25(金) 08:37:45.79ID:nHsHzaxy
>>192
こういうのよく見るけど
なんでいきなり巨大なの作ろうとすんのw
しかも群
206175
垢版 |
2022/02/25(金) 10:56:25.38ID:cHKC+7di
>>175
ワイ175やけど結局みんな手探りなのね
プレースホルダは当然やるけど、予約語のバリデーションは独自でやってるんやね
(出来ればDBにアクセスする前、バインド(prepare)する前に、アプリで弾きたい)
2022/02/25(金) 11:08:11.28ID:gEwvZxtg
SQLに投げる前にバリデーションなんてしない
バリデーションはプレゼンテーション層〜ドメイン層のどこかでやること
2022/02/25(金) 11:43:57.59ID:SuduBg90
>>206
どんなGUIか知らないけどフリーキーワードをちまちま入れないといけない時点でもう使いづらい。
動的にチェックボックスや候補ワードが先回りして出るくらいでないと。
キーワードを投げたはいいがヒット0とか、今どきはダサいよ。
2022/02/25(金) 11:44:18.05ID:Ttq2k6xT
>>206
プレースホルダ使っててなんのためにバリデーションしてるんだ?
変なデータが入るのが嫌と言うならそれは要件次第だろとしか言えないし
210175
垢版 |
2022/02/25(金) 11:59:13.95ID:cHKC+7di
>>208
>>209
問い合わせフォームとか応募フォームなんだけど、
こないだbot投稿に遭ってとりあえずreCapchaは入れて止めた
だけど、いくつかはDBまでSQL文がtextとしてinsertされちゃったんよねw(where〜とかが名前とかのカラムに入った)


じゃあなんかのバリデーションするかってことで普通はどうするかな、て
2022/02/25(金) 12:08:01.02ID:GobJHqAk
インジェクションできるかチェックされてるか、どこか文字列で直にやってる
2022/02/25(金) 12:51:38.11ID:0LOdeZPu
問い合わせの内容としてSQL文が必要ならサニタイズして入れとけばいいよね?
prepared statement使ってるのにユーザー入力を保存するカラム以外に
ユーザー入力が保存されてたんならなんか使い方間違ってると思う
2022/02/25(金) 12:53:33.76ID:gEwvZxtg
>>210
そういうのはWAFの仕事
214202
垢版 |
2022/02/25(金) 12:58:38.12ID:Eg3DloqN
MVC のRuby on Rails では、
Controller のstrong parameter で、更新される列・必須列をチェックする

モデルでも、バリデする。
valid_email2 で、正しい形式のメールアドレスかどうかとか

日本6位の初心者が3千人入っている、KENTA のサロンとか行かないと、ウェブ開発を学べない

Rails以外のフレームワークを選ぶと、勉強の教材がないから、
プロになるのは、まず無理
2022/02/25(金) 13:59:36.28ID:isep1BZs
>>213
WAF使ったことないでしょw
2022/02/25(金) 14:21:18.61ID:gEwvZxtg
>>215
あるよ
2022/02/25(金) 16:15:30.34ID:xc5sID1o
SQSやKinesisはどういう場合に使うのでしょうか?
あと、これを使う場合って送信用サーバと受信用サーバの2つが必要になりますよね?
2022/02/25(金) 16:30:52.94ID:VyHl6qUM
>>210
これってSQLに値を渡したい場合、文字列結合ではなくプレースホルダだけ書いておいてパラメータとして与えましょうという初歩の話じゃないの?
219175
垢版 |
2022/02/25(金) 16:50:08.00ID:ilyzPMTz
>>218
いやその後のハナシで
バリデーションとかエスケープとかサニタイズしても、
結局文字列としてInsertされるから、それを防ぎたいってハナシ
氏名:selectさんとかそういうデータが出来るのを防ぐのどうしてるのかなて

まあDBに限るハナシでもないけど
2022/02/25(金) 17:25:32.08ID:GobJHqAk
175が言う通りの実装してるなら、必要なのは「SQLインジェクション対策」じゃなくて
「不正な名前入力対策」=氏名チェック用の正規表現
日本人限定で組むなら常用漢字な人名用漢字、ひらがな、カタカナだけだから
単純に半角英数字記号が含まれてたら弾くようにすればいい。外国人含むならシラン
2022/02/25(金) 17:42:11.20ID:qQXuMGT2
selectさんとかを防ぐことで得たいと思っているビジネス的な価値が何なのか知りたい
クオーテーションとか危ない感じのを弾きたいと言うからSQLインジェクション対策かと思ったけど、そういうわけでもないってこと?
でもそれならクオーテーションを弾くのはデメリットしかないし、何か混同しているんだろうか
2022/02/25(金) 17:44:59.19ID:qQXuMGT2
認証不要のフォームでアタックの痕跡によってゴミが大量に溜まるのが迷惑だから事前にフィルタリングしておきたいってことかな
2022/02/25(金) 17:54:52.96ID:+PfgW030
>>219
そういうのをバリデーションできてないって言うんだぞ
正規表現教えて君する以前に仕様を決めろ
2022/02/25(金) 18:17:54.50ID:qbQTiRzp
GoogleスプレッドシートやGoogleMeetの検索ってあの膨大なデータからどうやって検索してるんだ?
とくにMeetのほうは曖昧検索っぽい
GCPでビッグデータの検索関連サービスってあるの?
2022/02/25(金) 18:26:10.37ID:Eg3DloqN
Ruby on Rails の文字列検索は、Elasticsearch
2022/02/25(金) 18:33:34.96ID:Eg3DloqN
>>217
Queue は一番昔からある、基本的なサービス

その時に同期処理をすると時間が掛かるので、
一旦、キューに入れて、後から処理する。非同期処理

月3千円ぐらいのくろかわこへいのAWS サロンへ入れば?
Amazon なら、3日で21万円とか高い
2022/02/25(金) 21:21:26.02ID:CV/dWopv
>>224
inverted index
2022/02/26(土) 08:12:42.19ID:vbSsEIAE
>>227
それだとものすごい数のレコードを作成してるんだね
例えば、GoogleMeetの1メッセージが300文字あったとして、形態素解析しつつ名詞を分割してそれぞれを行として格納
しかし部分一致とあいまい検索は完璧ではない

と思ったらスプレッドシートはCloud Search使ってると書いてあった
膨大なデータを分解して格納ってすごい技術だ
2022/02/26(土) 08:23:05.81ID:wWFTGeHR
kakasiの頃よくインデクサを使っていたけど、しょせんテキスト情報なんで大したことないよ
230デフォルトの名無しさん
垢版 |
2022/02/26(土) 08:45:38.69ID:R1ubXlLS
プログラムが何故動くのか?についてわかりやすく解説しているサイトってないですか?

ググっても「プログラムを機械語に翻訳して、機械がわかるように翻訳しているから動く」
的な説明ばかりなんですが、知りたいのはそういうことではなくて、
じゃあ最初から機械語で完璧に書いたとして、なぜそれで動くのかがわからないんです。

別の表現すると、異世界転生で電卓のない世界に行ったとして、
そこで電卓を開発して一儲けしようとしたときに、
どうやって電卓内部で「1+1」の処理をさせるかのイメージがつかないんです。
結局「プログラム」と言う概念が先にないと無理なんじゃないのか?みたいな・・・
鶏と卵の話みたいに感じてしまいます
2022/02/26(土) 09:09:24.95ID:e5W/1zqv
サイトじゃなくてCPUについて技術解説してる書籍でも漁っとけ
2022/02/26(土) 09:10:39.17ID:wWFTGeHR
>>230
レジスタ(フリップフロップ)のことは分かるのかね
ハード寄りのことから理解しないとマシン語はわからないよ
2022/02/26(土) 09:12:33.77ID:sjesp9D9
>>230
コンピュータはなぜ動くのか、読めば?
2022/02/26(土) 09:33:18.46ID:GBHX3kX2
「1+1」だけなら半加算器あたりが分かればなんとか
2022/02/26(土) 09:42:33.04ID:wWFTGeHR
>>230
フリップフロップはソロバンの珠と思えばよい。
ソロバンは珠が元の位置か、動いたかをメモリーする装置である。
動いている珠を1、元の位置なら0とみなして、動かすルールによって複雑な計算をする。
フリップフロップの場合は電気によって、今のON/OFFをメモリーできる。
そのON/OFFを1と0にみなして、機械的なルールで計算を行う。
例えばいちばんわかりやすいのがビットシフトである。
二進数01011を左に一桁ずらす「機械的操作」をすると10110となり、これは元の数を二倍する「計算」をしたことになる
逆に右に一桁ずらすと2で割るという「計算」をしたことになる
01011 → 0101(余り1)
236デフォルトの名無しさん
垢版 |
2022/02/26(土) 10:30:44.32ID:FEw16ZgO
マインクラフトでコンピュータ作ってみた みたいな動画見りゃ理解できるべ
2022/02/26(土) 13:40:22.88ID:/yaZQ1xu
Ruby on Rails, Amazon は、Elasticsearch。
Railsの形態素解析は、kuromoji

Google は、Chrome の翻訳もひどかったけど、
ここ2か月ぐらいで、かなりDeepL に近づいた

DeepLを、パクったのかも
238デフォルトの名無しさん
垢版 |
2022/02/26(土) 14:14:47.64ID:1jHkYGS8
CPU/GPU作ってみたみたいな動画面白いよ
2022/02/26(土) 14:26:16.75ID:R/0GMSS/
普通にコンピュータアーキテクチャの教科書を読めばいい
2022/02/26(土) 15:17:19.82ID:xS/SyeLk
トランジスタがあって
フリップフロップがあって
論理回路、順序回路があって
リングカウンタあたりがあって
機械語がある

この辺を順番にググると
上から下までわかるようになるのでは?
大学のシラバスが外から見えるので
その辺からキーワードを取り出して
ググれば独学も可能
2022/02/26(土) 15:21:10.00ID:ZdFqztpZ
>>240
COMET/CASL アーキを自力で実装する系の、きちんとした教科書があったことを記憶しています…
2022/02/26(土) 15:51:20.85ID:/yaZQ1xu
電験三種、組み込みの資格のテキスト

電気電子回路、交流の複素数の複素平面。
ネイピアe(2.72)のiπ乗 = -1

3D では、虚数のquaternion とか結構、虚数が出てくる
2022/02/26(土) 16:26:27.41ID:ZdFqztpZ
>>242
厳しいことをいいますが、交流=正弦波が複素数により代数的に処理できるのはなぜか?
本来受動素子の作用は解析的=微分積分、で定義されるのですが、そういう世界が代数的=足したり引いたり掛けたり割ったりで処理していい理由、というのをはっきりさせないまま安直に使うのは知的誠実さにかける、と私は非難します…
2022/02/26(土) 16:56:03.31ID:1vnMKgVV
>>230
トランジスタとダイオードの組み合わせでAND/OR/NOT回路を作るとこからから勉強かな

加算器とかフリップフロップがAND/OR/NOTの組み合わせでできるから
そいつらを組み合わせれば2進数入出力の電卓ぐらいは作れる

使ってるものはトランジスタとダイオードと抵抗(と装置外部の入出力にスイッチとLED)だけ

現代のCPUのトランジスタ数は60億とかなので無制限だと思っていい
2022/02/26(土) 17:37:16.16ID:g1NcYQAb
>>230
どこまで知りたいか?によるかな

「便利な性質を持った小さなモジュール達」は既にある前提で、それを組み合わせると足し算ができます、程度の薄い理解でいいならこのスレで出てるキーワードでググればいい

でもじゃあ「便利な性質を持った小さなモジュール達」をどうやって作るの?って疑問を解きたいなら物理学をある程度、学ぶ必要がある
俺は半導体の基礎を大学三年生で学んだけど、それぐらいやる気があるなら好きに勉強すればいいんじゃないかな

異世界転生してゼロから作るにはどうすればいいの?って疑問なら
科学知識だけでなく歴史や経済、ありとあらゆる知識が必要だろうな
なんたって異世界はたぶん、産業革命より前の世界だろ?
ならまずはそこからだな
2022/02/26(土) 17:52:39.86ID:wWFTGeHR
この動画(白い巨塔)の6分目くらいだけど
https://youtu.be/j4TdXIxmBtU

里見先生が機械式の計算器を使っている
考えてみると50年前はまだ普通にソロバンや計算尺が一般的だった
50年後はどうなるんだろうね
2022/02/26(土) 17:57:15.21ID:ZdFqztpZ
>>242
厳しいことをいいますが、交流=正弦波が複素数により代数的に処理できるのはなぜか?
本来受動素子の作用は解析的=微分積分、で定義されるのですが、そういう世界が代数的=足したり引いたり掛けたり割ったりで処理していい理由、というのをはっきりさせないまま安直に使うのは知的誠実さに欠ける、と私は非難します…
2022/02/26(土) 18:25:10.25ID:joT9B4PU
>>246
40年前でも普通にそろばん使ってたよ
そもそも普通の会社でパソコン使うようになったのは1990年代だからそれまではそろばん使うしかなかった
加減算は慣れれば電卓よりそろばんの方が速いし
249242
垢版 |
2022/02/26(土) 19:17:41.93ID:/yaZQ1xu
電験三種の積分回路・微分回路・時定数ぐらいから始めないといけない
2022/02/26(土) 19:38:34.77ID:1vnMKgVV
>>249
>>230 が求めるものはLRC回路の知識じゃねえだろ
251デフォルトの名無しさん
垢版 |
2022/02/26(土) 23:23:55.13ID:wmCNPHUF
すみません…
pythonでtkinterというのでstartとstopボタンを作って
それぞれからdef start():などを作ってコマンド=startみたいに呼び出しています。

startの中でマルチスレッドを使ってスレッドをつくりスタートさせたいと思っています。
そのスレッドが使う関数の中でwhile flag==true:としてflagがfalseまでは無限にスクリーンショットを撮り続けたいと思っています。

このような作りですと、startのボタンで固まってしまってstopが押せません。うまくいかない原因についてアドバイス頂けたら嬉しいです。

よろしくお願いします。
2022/02/26(土) 23:51:56.70ID:wj1ibNBr
スレッドの中はwhile flag==true:でスクショ撮影
startボタンの中はスレッド作ってスレッド実行するだけで終わり
ってすりゃ固まらないはず。固まるということはそうなっていない
スレッドでなくボタンの中でwhileしてるとか、ボタンの中でスレッドが終わるのを待ってたりしてる
253デフォルトの名無しさん
垢版 |
2022/02/27(日) 00:28:06.43ID:EPp3U+v4
スクショやったことないけど
一回あたりの撮影・保存にsleepとか挟んでないせいで
わずかなハングが連打されて固まってみえるんじゃないか
2022/02/27(日) 02:20:57.99ID:JWOh4lwS
このスレよりも、Python スレで聞いてください!
2022/02/27(日) 06:23:12.98ID:3CMfh7zd
1と0だけで音を表現出来るってのがイマイチ理解できません

一瞬を切り取ったらそこには人の声、風の音、カラスの鳴き声、車の音などが入ってると思うのですがそれらを全部1と0で表現するって魔法じゃないですか?
2022/02/27(日) 07:46:15.41ID:I53qp4JM
1600年代マイクロホンが考案され、音声を電圧に変換できた。また、スピーカーは電圧を音声に変換できた。1877年、エジソンは音声をレコードのみぞの深さで記録した。
人間の聴覚には可聴域(20Hzから20,000Hz)というものがあって聞こえる音域と音量には限界がある。
だから可聴域以外の情報は無視できる。レコードのみぞの深さや電圧の変化というのはアナログ値の変化であり、
これを単位時間で区切って離散化してデジタル信号に近似することは可能である。よくわからないのであればPCM音声を研究してみるといい。
2022/02/27(日) 07:57:15.03ID:I53qp4JM
音声の波形というのは足し算・引き算ができる。しかし全体を見るとアナログ値の変化でしかない。
音声には指向性というものがあるが、聴覚には無関係である。
2022/02/27(日) 08:02:04.17ID:uWHjNeVw
>>255
フーリエ級数を勉強しなければ理屈はわからないので、理系の大学に行くのが早道
2022/02/27(日) 09:09:16.90ID:yPfzj2SQ
ある音をカラスの声だと認識するのは、周波数ごとの音の強さと、声の長さやビブラートなどの時間的変化のパターンによる
和音のメロディの楽譜のように近似的に表現できる
ただし自然音はドレミのような一定の階調ではなく、ドとレの間には無数の段階があるし、和音の音符数も楽器なら3や4だけどこれも無数にある
この無段階・無数の楽譜をアナログからデジタルに変換する方法は、ざっくり言うと写真をドット絵で表現することと同じアイデアでいい
ドット絵ならドット単位に絵を分割して65536階調などの近似色を求めてあげれば、その集合が絵に見える
楽譜なら縦軸は周波数成分、横軸は時間経過として、ドットごとに音の強さを示してあげればいい
音は波なので互いに重なり合い、いろんな音があっても足し引きできるという話は、多数の物体が同じ絵の中に置いてある状況と似ている
実際にはこれだけだとデータ量が多くなるのでいろいろ数学を使って工夫する
2022/02/27(日) 09:53:12.54ID:6fl1teDT
>>255
音楽なんて色々な音の集合だけど、それを楽譜で紙に表現できるし、楽譜から音楽に戻せる
それと同じだよ。まさに魔法
261デフォルトの名無しさん
垢版 |
2022/02/27(日) 15:44:32.52ID:1y5GAeJx
>>252
>>253
ありがとうございます。
スタートボタンを押したら実行される関数で、テキストボックスから値をとってきたりもNGなんでしょうか?
下記ではstart後にstopが押せず5秒ごとに永遠にスクショを取り続けてしまいます。。


スレッドで実行する関数
def getSSActiveWindow(Groupname, INTERVAL_SS):
global ON_LOOP
while ON_LOOP:
hdwd = win32gui.GetForegroundWindow()
rect = win32gui.GetWindowRect(hdwd)
SS_JPG = ImageGrab.grab()
croped_screenshot = SS_JPG.crop(rect)
mkdir_SS(Groupname)
croped_screenshot.save("./" + Groupname + "/" + str(fname(Groupname)))
time.sleep(INTERVAL_SS)

スタートボタンを押したら実行される関数
def Start():
global ON_LOOP
ON_LOOP = True
Group_name = text.get()
Interval_time = float(text2.get())
thread_main = threading.Thread(target=getSSActiveWindow(Group_name, Interval_time))
thread_main.start()

スタートボタン生成とStart()の呼び出し
start_button = tkinter.Button(app, text="start", command=Start)
2022/02/27(日) 16:14:19.43ID:aJU8qXKh
フーリエ級数よりもサンプリング定理だな
人間が聞こえる周波数は有限
有限の周波数は計算の結果
一定以下の時間間隔で測定すると
完全に元の音を再現できる
私も最初に知った時はびっくりした
2022/02/27(日) 16:25:00.03ID:1y5GAeJx
afterというものでスタートでスクショをとる関数を呼び出し、
その中で自分自身を数秒後に呼び出す というやり方をしたら上手くいきました。
ただ、スレッドの方がかっこいいですよね。。。
2022/02/27(日) 16:27:31.85ID:Um/y+g9Y
率直な疑問だけどそこまで再現出来るならもっと流暢に話せるソフトとか生まれないのかな
最新のボイスロイドとかだとめちゃくちゃ流暢になってたりする?
2022/02/27(日) 16:30:27.57ID:Um/y+g9Y
まぁイントネーションとかは関係ないかこの件とは
2022/02/27(日) 16:45:20.50ID:6fl1teDT
流暢にしゃべってる音声を記録して再生するのは簡単でも
それを参考に似たようなものを作って再生するのは難しいからな
267デフォルトの名無しさん
垢版 |
2022/02/27(日) 16:58:48.49ID:aA44qZEv
>>194
初心者の疑問なのですが、JavaScriptはクライアントサイドスクリプトなので、
ブラウザ側で処理が実行されるのでサーバーへの負荷があまりかからない。
それに対して、PHPはサーバーサイドスクリプトなのでサーバーへの負荷が
クライアントスクリプト以上にかかるということは、
PHPよりやっぱりJavaScriptで画像掲示板を作った方が、
相当サーバー代を軽減することができると思ったのですが、違いますか?
もしそうならやっぱりJavaScriptで画像掲示板を作るべきなのでしょうか?
268デフォルトの名無しさん
垢版 |
2022/02/27(日) 17:01:40.18ID:aA44qZEv
PHPかJavaScript、どっちで画像掲示板を作るか迷います・・・・・・・
269デフォルトの名無しさん
垢版 |
2022/02/27(日) 17:04:43.61ID:EPp3U+v4
>>261
ごちゃごちゃしてわからんくなったらシンプルな形で試してみよう
tkinter自身は「外部からのキル信号を受ける別threadのwhileループ」を表現できる
afterが動いてwhileがハングするなら、そのループはmainloop側で回ってるわよ、たぶん
こういうのがやりたいんだしょ?

import tkinter as tk
import threading
import time

def on_start():
__sub_thread = threading.Thread(target=job)
__sub_thread.start()

def on_stop():
__global flg
__flg = False

def job():
__done = 0
__while flg:
____done += 1
____print(done)
____time.sleep(1)

root = tk.Tk()
flg = True
start = tk.Button(root, text='start', command=on_start).pack()
stop = tk.Button(root, text='stop', command=on_stop).pack()
root.mainloop()

あとtk/tclスレか(あんのか?) pythonスレで続きやろう
2022/02/27(日) 17:45:06.89ID:ZB2g0s0a
>>267
phpだろうがjsだろうが画像は各サーバーから各クライアントまで転送されるからその分の転送料がかかる
2022/02/27(日) 18:29:14.26ID:aJU8qXKh
>>267
パフォーマンスの問題が出るほど接続数が多いことが見込まれるなら
別の方法かサーバーの増強を考えないとダメ
まずは動かすことだろうな
272デフォルトの名無しさん
垢版 |
2022/02/27(日) 21:05:55.36ID:9Ko2k5KG
Rstudioで100個のtxtファイル
(中身はTsvで3万行2列、1列目は全ファイル共通)
を3万行、101列のマトリクスファイルにしようとしています。

left_joinで1列目をキーにして結合するためにデータを100個読み込む際に
lf <- list.files(full.names = T)
data <- lapply(lf,read.delim)
を用いたのですが、
mat <- full_join(data)で結合させようとすると
'full_join' をクラス "list" のオブジェクトに適用できるようなメソッドがありません
となってしまいました。
別の関数でこのような結合が可能でしょうか。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況