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

■ このスレッドは過去ログ倉庫に格納されています
2021/10/26(火) 05:30:43.46ID:jRF91jUl
この板はプログラムを作る人のための板です。
あらゆる質問はまず
スレ立てるまでもない質問はここで
スレにしてください。

【前スレ】
スレ立てるまでもない質問はここで 157匹目
https://mevius.5ch.net/test/read.cgi/tech/1624024239/

次スレは>>980が立てること
45デフォルトの名無しさん
垢版 |
2021/11/03(水) 19:40:45.48ID:WfoVXXju
>>41
志位「だっせ(笑)」
2021/11/03(水) 22:12:11.53ID:JsRIA495
コンソールでバイナリデータを送受信したいのですが
1.シンプルにコマンド+データサイズ→バイナリデータを送る
 →効率が良いけどデータが欠落した場合回復が困難
2.テキストにエンコードしたデータを送る
 →1より障害に強くなるけど送信する帯域も計算能力も多く消費する
3.数種類をコントロールコードに割り当てて被ったデータはエスケープする
 →1と2の中間くらい?
くらいしか思いつかないのですがこういう場合って普通どのような実装にするんですかね?
他に何かあれば・・・
2021/11/03(水) 22:17:26.32ID:p70BP33u
テキストにして障害に強くなったりはせんだろ。
2021/11/04(木) 03:00:00.38ID:eikWc1Ll
>>46
欠落してれば再送信
49デフォルトの名無しさん
垢版 |
2021/11/04(木) 09:38:19.35ID:X3vlQhNq
>>44
面白い
無駄知識がまた一つ増えてしまったw
50デフォルトの名無しさん
垢版 |
2021/11/04(木) 10:53:29.57ID:JyTL4wpj
ISH と uuencode 懐かしい
2021/11/04(木) 11:30:13.92ID:xjKT8R4W
パソコン通信の頃、各社バイナリ通信プロトコルを定めて
通信ソフト上でバイナリのやり取りができた
UNIX用ソースもあって実際コンパイルして使ってた
2021/11/04(木) 15:58:05.08ID:uTlTMaeO
今でもメールの添付ファイルはBase64でエンコードしてたりするし
そもそも>>46はどういう環境でバイナリのやり取りをしたいんだ?
2021/11/04(木) 16:50:35.81ID:uw0Tpqkj
webアプリケーションを作りたいんですが、
今どの言語なら向いてるかがわからないのでオススメ下さい。。。

やりたいのはアキネイターの専門版な感じで、
周りや途中で広告出したりしたい

C、C++、C#辺りはある程度できるのですが、
組み込みしかやってこなかったのでwebと絡んだ時の知識が全くなくて言語選びに悩んでいます
54デフォルトの名無しさん
垢版 |
2021/11/04(木) 17:24:13.53ID:vAnqxJXX
PHPがCに近いよ
55デフォルトの名無しさん
垢版 |
2021/11/04(木) 18:20:05.15ID:Hew6kfZM
phpよりJavaの方がC#に近いのでは?
2021/11/04(木) 18:32:08.45ID:J11jXRjD
誰もPHPがC#に近いとは言ってないけどね
57デフォルトの名無しさん
垢版 |
2021/11/04(木) 18:40:19.75ID:qblIHOPQ
WebアプリっつてんだからC、C++よりC#よりでしょ、
2021/11/04(木) 18:51:38.38ID:ytGSSGZI
phpよりJavaの方がCに近いのでは?
2021/11/04(木) 19:41:26.30ID:5gkz3BSt
SPAがシンプルでCSRF食らう可能性も低いから、自分はSPAから呼び出す高性能なWebAPIを作りやすいGoで書いてる
FormやSessionなんて、もうポイ捨てて幸せ〜
C経験者なら仕様を読むのに一日、三日もあればガリガリ書いてる
一日だけ勉強してダメなら向いてなかったと
6046
垢版 |
2021/11/04(木) 19:46:53.65ID:D1WXCKxv
>>51
パソコン通信リアル世代じゃないし、当時の資料は探すしかない状況だけど
B-Plusでググったらフィンローダ氏の解説ページが引っかかってきた。結構勉強になる

>>52
マイコンとPC。バイナリ転送プロトコルと比べるとBase64やuuencodeは効率悪くないですか?
2021/11/04(木) 19:47:48.43ID:QpEeDndi
これからはflutter
ほかはゴミ
2021/11/04(木) 20:12:23.94ID:pc2X74HC
>>60
> マイコンとPC。バイナリ転送プロトコルと比べるとBase64やuuencodeは効率悪くないですか?
そりゃ悪いよ
ただBase64なら6bitのバイナリが1char(=8bit)になるからざっくり1.33...倍になる程度だよ
それが問題になるような用途なら圧縮かけるなりした方がいいと思うが…
2021/11/04(木) 20:54:14.73ID:ytGSSGZI
メールやHTTPのようなテキスト転送プロトコル上でバイナリを流すための工夫がBASE64あたりの符号化なのであって、そういう制約がないのに使おうとするのはなんつーか技術選定間違ってる感、手癖だけで選んでる感ある
バイナリのまま送って、そのままの運用ではエラー率が希望に沿わないならハッシュも送って照合と再送をするのが高効率なんじゃね
TCPに乗せるんだとしたらそのエラー訂正だけでも十分かもな
2021/11/04(木) 20:55:03.98ID:ytGSSGZI
Base64変換してから圧縮してバイナリにするのはそれこそ本末転倒では
2021/11/04(木) 20:56:35.03ID:ytGSSGZI
そのエラー訂正って書いたのはTCPチェックサムのこと、念のため
2021/11/04(木) 20:59:13.03ID:SlfDb1KX
>>53
とりあえずJavaScript

サーバー側はなんでもいいのでその中ならC#
クライアント側はJavaScriptかJavaScriptのコードを生成できる言語になるけど、後者を使う場合でもJSを全く知らずにwebアプリの開発するのは現実的じゃないから
2021/11/04(木) 21:08:00.66ID:PmUX0W+p
>>63
> そういう制約がないのに使おうとするのはなんつーか技術選定間違ってる感、手癖だけで選んでる感ある
知らんがな、>>46がテキストエンコードとか言ってるから1つの選択肢として標準的な方法使ったらと言う提案

>>64
バカなの?
圧縮してからBase64なり他の方法で転送するだろ
2021/11/04(木) 21:28:14.70ID:vj9wHXIR
>>53
ここに書いた

プログラミング超初心者の質問
https://mevius.5ch.net/test/read.cgi/tech/1616755673/430-431

KENTA のRuby on Rails 初心者向けサロンが月千円で、3千人入っている

Vue.js の日本ユーザーグループも3千人だから、
Rails の1つの有料サロンで、3千人が如何にすごい数字か分かる

Rails 以外のポートフォリオは、誰も見ないから門算払い。就職もできない。
PHP は一生やらなくて良いし、Node.js, Django も使われていない

バックエンドのキャリアパスは、Rails → Go だけ

KENTA、2021/4

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

Web系エンジニアを目指す人のためのプログラミング学習ロードマップ、2021/2
https://www.youtube.com/watch?v=0TABrlhci5M

YouTube で有名な雑食系エンジニア・KENTA、
AWSのくろかわこうへい、Udemy の山浦清透などの動画を参照
6946
垢版 |
2021/11/05(金) 00:08:41.97ID:DTrKxQcE
フィンローダ氏の記事を読み終わった。3ページあって読み応えあった
効率を意識する場合>>46の3の方向性でおおむね良さそうかな

>>62
圧縮すると言っても、条件にマッチした圧縮アルゴリズムを探すのも簡単じゃないよね
BPE、LZSS、RLEくらいしか思いつかない。ただマイコン側でBPEの圧縮は計算コスト的に厳しいかも

>>63
マイコンはネットワークスタックを積んでいないのでTCP/IP等は使えない
このためだけにネットワークスタックを積むのは割に合わないと思うし
2021/11/05(金) 11:01:54.37ID:P9BBm+pJ
今はマイコンと言ってもRaspberryPIとかだろう
PICのボードでもなけりゃLinux積むんじゃね?
2021/11/05(金) 18:47:09.21ID:5YmBbZ55
STM32「誠にケシカラン話だ」
LPC「売られたケンカは買うしかない」
RX「遺憾の意を表明する」
2021/11/05(金) 19:19:55.46ID:P9BBm+pJ
全員Linux移植されてね?
2021/11/05(金) 21:38:48.11ID:DTrKxQcE
普通のLinuxとnommu Linux(旧uCLinux)の違いを理解できていない人がマイコンでLinuxが動くとか言っているのか?
74デフォルトの名無しさん
垢版 |
2021/11/06(土) 01:11:32.18ID:XFWVN+rN
no mmuか
なんのことだろうと思った
2021/11/06(土) 03:08:45.00ID:yfE0qB/7
いや、組み込みLinuxでもネットワークスタックはあるだろ?
標準ではなく選択して入れないことはあっても

なんでマイコンにはネットワークスタックが無いとか言い切ってんですかね?
マイコンじゃIoTは作れないとでも?
2021/11/06(土) 04:33:58.77ID:XHYJ2DHc
IoTデバイスを作っていてネットワークスタックも載せているからそれを流用したらどうか
→まぁ判る
使わないからネットワークスタックを載せていないがファイルの転送機能を付けるだけにネットワークスタックを搭載する
→いや流石にそれはちょっと・・・
そもそもTCPもバイナリ転送プロトコルに対するメリットが見えないんだが。オーバーヘッドも少なくないし
2021/11/06(土) 07:27:52.14ID:lghs7cgU
マイコンなんてそれこそ千差万別なのにLinux前提とか頭おかしいのか?
IoTならRAM 256bytesの環境とかあるし
2021/11/06(土) 07:30:41.85ID:JjejLWBY
マイコンのスペック分からんから何とも
オーバーヘッドがあろうがなかろうが実用に足れば問題ない
2021/11/06(土) 07:49:33.85ID:yfE0qB/7
そんなPICクラスはRS232Cでも使ってろボケ
2021/11/06(土) 08:04:23.30ID:WoXv+kRZ
>>69
なんでどうでもいいところにだけ反応するんだろう。問題は何のためにテキスト化するのかだろ。
81デフォルトの名無しさん
垢版 |
2021/11/06(土) 08:13:31.72ID:SpYzeSWf
釣りだからだろ
2021/11/06(土) 08:18:14.51ID:yfE0qB/7
>>79
文脈読まずに揚げ足取りされそうだな
RS232CでSTXとか制御コード送ってシリアル通信してろという意味だからな
RS232Cプロトコルぷぷぷwとかバカなこと言ってくるなよ
2021/11/06(土) 09:55:28.23ID:zuCr6nlQ
>>80
> 問題は何のためにテキスト化するのかだろ。
>> シンプルにコマンド+データサイズ→バイナリデータを送る
みたいなこと言ってるからバイナリたれ流しじゃなくて塊の概念を持ちたいって話でしょ
まあ普通に3.の方式でいいと思うよ
84デフォルトの名無しさん
垢版 |
2021/11/06(土) 10:20:08.12ID:XFWVN+rN
256byteってプログラミングもはや無理やろ
arduino以下やん
85デフォルトの名無しさん
垢版 |
2021/11/06(土) 10:47:43.16ID:gwg8f2Ma
pdfが無数にあり、各々しおりに「空白ページ」があります。
その「空白ページ」をすべてまとめて(ファイルを1枚1枚開かず)削除する方法があれば、教えてください

先生方、よろしくお願いいたします。
86デフォルトの名無しさん
垢版 |
2021/11/06(土) 11:09:37.33ID:b1XdA94q
ありますよ
2021/11/06(土) 14:25:47.07ID:SMecrXrM
塊の概念ってなんだろう
テキスト化する意味が全くわからん
最初の質問ではエラー訂正のことを気にしてたみたいだけど、ならパリティビットを持たせれば効率と確実性が両立できるやん
バイト配列をループ処理するだけだから難しい点も特にない
2021/11/06(土) 14:28:13.04ID:SMecrXrM
マイコンならデータサイズもたかが知れてるからハッシュで十分なのでは
赤外線みたいな信頼性の低い伝送をしたいみたいな背景が隠れてるならパリティで
2021/11/06(土) 14:32:21.31ID:SMecrXrM
3.の案が何を狙いとしたものかわからないのは俺がアホなんだろうか
2021/11/06(土) 14:40:20.59ID:SMecrXrM
パリティビットと書いたけどエラー訂正符号とすべきだったな
CRCでも何でもいいよ
2021/11/06(土) 14:48:23.08ID:SMecrXrM
ああすまん、3.はデータ抜けによってアンダーランやオーバーランが起こることを気にしてるのか
そこまで気にするなら、まずサイズを送り、データ終端に0x00を10個連続でアペンドした上で、エラー訂正符号化でどうだろう
エラーがなければ終端文字列は読み捨てられる
2021/11/07(日) 07:20:55.00ID:0IMrdMn2
OSI参照モデルの再送とか、CRC とか組み込み資格の教科書を読んでいないだろ

ドラゴンクエスト10 では、0.2% のデータがおかしいから、
ネットから来るデータを絶対に信じるなと言ってた

ネット回線のデータエラー率も、0.2%
2021/11/07(日) 18:18:36.98ID:tCSI0rJO
可読性(≒保守性)の良いプログラムを書きましょう・・・とは言われるけど
例えばx86命令のデコーダを可読性良く書くにはどうすれば良いのだろうか?
それは極端だとしても
・可変長である
・読み始めに読み込むべきサイズが不明
みたいな入力を想定しただけでも条件分岐と入力の読み込みだらけになって
スパゲッティ化してしまうような
2021/11/07(日) 18:27:23.90ID:UQcl36Q5
命令ごとに適切にモジュール化されてれば読みやすいんじゃないの
その命令にとってのサイズ分だけ読み進めるという一定のルールがあるのだからきれいに構造化されそう
性能的な都合できれいに書けないとか再帰を使うにも上限が問題になるとかの制約はトレードオフで
2021/11/07(日) 18:29:04.52ID:UQcl36Q5
少なくとも巨大なswitchやelse ifのかたまりが並ぶような邪悪さはいくらでも回避できると思う
2021/11/07(日) 18:33:47.48ID:UQcl36Q5
すごく大雑把にいうと、10種類の命令があってそれぞれにサイズが違う場合、長さ10の配列にサイズを入れておけば分岐はいらない
9793
垢版 |
2021/11/07(日) 21:31:18.55ID:olvIiluo
1バイト目 命令列を示すプレフィックスの判別
2バイト目 ショート命令/標準命令の判別、ショート命令のデコード
3バイト目 標準命令のデコード or ショート命令のオペランドのデコード(Option)
この時点ですでにifのネストが3段

というか昨日から今日にかけて書いていたけど動いた物のすでにelse ifだらけでぐちゃぐちゃ
命令の追加とかしたら動かなくなりそうな感がバリバリする

>>94
関数に分離して別スコープになると共有するリソースのやりとりをどうするかという問題がでてくる
グローバル変数を使う?ポイント渡しにする?どちらもあまり見やすくないような
2021/11/07(日) 22:55:49.41ID:KgxySftM
>>93
思い付きなんで単なる意見として聞いてくれ

問題の構造として構文解析と同じ課題に見えなくもない
ならば数値はトークンとして処理する構文解析木が出来ればいいのでは?
ならばBNFを書いて、実際の処理はアクションに書いて、分離して管理できるのではないか?

その例以外には適用できるかわからない案だけど、どうしようもなく判断文が続くなら構文木とみなすのも一案として検討に値しないかなと
2021/11/08(月) 00:02:44.05ID:Q4hGlEzK
C言語でプログラムを作っている派遣SEです。
自身のスキルが低く、少しプログラミングの勉強をしようかと思っています。
しかしC++には挫折して、C#に手を出したのですが、バージョンアップが繰り返されて複雑化しており、難しくてよく分かりません。
(C#は、検索すると古い機能、非推奨の機能が出てきて、C言語と同じ状況のような気がしています。)

何の仕事が来てもいいように、「最近のプログラミングの基礎」を学ぶには、何の言語がいいですか?
仕事に関係しそうなC++かC#あたりにしようかと思ったのですが、本当にこれでいいのか迷ってます。
JavaやPythonとかの枯れた言語や、Rust、Goとかの流行りの言語とか、そう言う方が良いですか。
あくまで自習なので、モチベーションを保てるのがいいんですが・・・・
100デフォルトの名無しさん
垢版 |
2021/11/08(月) 00:11:46.50ID:953C8tvU
>>99
目的のプログラムに応じて適材適所で使い分けれるようになれば良いだけ
2021/11/08(月) 02:02:09.93ID:kEchYuAK
YouTube で有名な、雑食系エンジニア・KENTA のサロンでは、
Ruby on Rails 一択

ウェブ系のキャリアパスも、Rails → Go だけ。
Rust, Elixir は、普及のキャズムを越えなかった

KENTA, 2021/7

Web業界で使われている11個のプログラミング言語の価値比較
/Ruby/Python/PHP/Perl/Node.js/Java/Scala/Kotlin/Elixir/Rust/Go
https://www.youtube.com/watch?v=9T5Tiiw0BnM
102デフォルトの名無しさん
垢版 |
2021/11/08(月) 02:26:12.99ID:J6d/ajGt
>>99
>何の仕事が来てもいいように、「最近のプログラミングの基礎」を学ぶには、何の言語がいいですか?

C++に挫折したならCやれ
「最近のプログラミングの基礎」にはC判ってないと話にならない
2021/11/08(月) 03:19:23.78ID:tj88M7NB
phpでのデータベース操作の質問!

既にデータベース内の"User"テーブルの「id」=「テストさん」 を読んで$id =テストさん;と読み取っていて (=ログイン処理は済んでる)
ここから別に作った"Message"テーブルにある
「id」からテストさんを見つけ出して、そこの「text」カラムの情報を読み込みたい時はどういう記述をすればいいか教えて!

"Message"テーブルには「id」と「text」があって
"User"テーブルの「テストさん」が操作した場合に"Message"テーブルのTextの中身を読みたいって状態です
〜〜
$sql = "select * from Message";
$res = mysqli_query($con, $sql);
while($row = mysqli_fetch_assoc($res)) {
echo "文章: {$row['text']}";
}
mysqli_close($con); ?>
これをテストさんだけが自分のtextを見れるみたいなページが作りたいんです。
ログイン処理などは見様見真似で作ったド素人なのでこっちが出来ないというお粗末ぷりです
2021/11/08(月) 03:27:06.88ID:tj88M7NB
↑の処理だと当たり前ですけど
Messageテーブルにある全textがズラっとならんでしまう状態なので
このページを開いたテストさんには自分のテキストだけが見れる様にしたいんです。

Messageテーブルの"id","text"の"id"には既に"テストさん"が入っており
要は$id=今開いてる人(=Userテーブルで取得したid=テストさん)の変数を利用して
テストさんがページを開くとそれに該当した"text"を出力したいって状態です。
2021/11/08(月) 03:51:26.91ID:tj88M7NB
説明くそ下手だから図解的なものも作ってみた
https://i.imgur.com/NLT1Utr.jpg

php詳しい人いたら教えてください
2021/11/08(月) 04:15:12.61ID:kEchYuAK
WEBプログラミング板のPHP のスレに書き込めば?
この板には、あまり詳しい人がいないだろ

データベースなら、Ruby on Rails みたいな、O/R マッパーを使うべき!

ユーザーからもらった文字列で、文字列を連結させて、SQL 文を組み立ててはいけない。
SQLインジェクションされるから

SQLインジェクションを防ぐために、Place Holder を使うのは良いけど
2021/11/08(月) 05:21:14.30ID:3qRNr5Ep
>>98
さすがにデコード時にバックトラックが必要な命令体系を持つプロセッサは見たことないからBNFは多分オーバースペック
そもそも構文解析というより字句解析だし
108デフォルトの名無しさん
垢版 |
2021/11/08(月) 07:13:26.95ID:rwFe4zmq
>>104
phpというよりSQLのwhere句で検索するべし
2021/11/08(月) 13:50:00.35ID:tj88M7NB
>>104 安全性がある程度必要な所はあるのでインジェクション対策は調べながらしていきます
>>108 こんな感じで思っていた内容が出来ました

//Userテーブルから既に取得したidをuidに入れて処理
〜〜
$result = mysqli_query($con,"SELECT * FROM Message
WHERE id='$uid'");

while($row = mysqli_fetch_array($result))
{
echo "本文".$row['text'];
} mysqli_close($con); ?>
2021/11/08(月) 14:11:59.48ID:tj88M7NB
$stmt = $pdo->prepare('SELECT * FROM Message WHERE id = :uid LIMIT 1');
$stmt->bindValue(':uid', $roleId, PDO::PARAM_STR);
$stmt->execute();
$user = $stmt->fetch();
echo " 本文 ".$user['text']; unset($pdo); ?>

こっちにしておきました
111>>108
垢版 |
2021/11/08(月) 17:18:46.53ID:0wsCRy1z
>>109
お役に立てて光栄です。
112デフォルトの名無しさん
垢版 |
2021/11/09(火) 10:31:39.70ID:Y2+VXIJe
計算式を逆ポーランド記法に変換すると
a+(b*(c-d))は、abcd-*+
のように計算記号は出てきた順番と逆にするのが正しいのでしょうか?
左では+*-の順で出てきますが右(逆ポーランド記法)ではabcd-*+となっていたので気になりました。
2021/11/09(火) 11:29:11.45ID:DzPX9Zv+
>>112
必ずしも出てきた逆順になるのではなく、演算子を処理する順になる。
そのケースではたまたま逆順になっただけ。
(a+b)*(c-d)ならばab+cd-*になる。
114デフォルトの名無しさん
垢版 |
2021/11/09(火) 11:31:33.88ID:JLiNtnwO
逆にするというより
二項演算子の場合
[項1][演算子][項2]という計算式があったら
[項1][項2][演算子]と表記するというルールがあるだけ
115デフォルトの名無しさん
垢版 |
2021/11/09(火) 12:41:04.92ID:Y2+VXIJe
>>113
>>114
ご回答ありがとうございます。
かなり理解が深まりました
2021/11/09(火) 21:58:11.44ID:FY0BYymx
BASE64ってエンコードだけですがついでに圧縮もしてくれる
規格・ライブラリってないですか
"202111090956"を"kwOTUz"くらいに可逆圧縮するイメージ
2021/11/09(火) 22:02:06.38ID:rrOdkTjM
>>112
逆ポーランド記法 スタック
で「画像検索」すると
すぐ分かると思う
2021/11/09(火) 22:32:25.81ID:QGVM/tnv
>>116
それを同時にできるライブラリがあったとしても内部的には圧縮してからエンコードしてるだけ。
2021/11/10(水) 04:22:27.05ID:5HRql5T7
"年月日時分"って決まってるなら分解してマッピングすればいい
既製品は知らない
2021/11/10(水) 08:01:10.90ID:3AInQnfo
入力から1バイト読んだバイナリデータを格納する変数に判りやすい名前を付けたいです
char←予約語
c or b←パッと見なんだか判らない
data←これもなんだか判らない
character←テキストっぽい
code←プログラム類っぽい
byte←予約語っぽい
どれもイマイチなのですが良さそうなワードはないですかね
2021/11/10(水) 08:34:19.57ID:Ey/Tzzo2
そこで入力したその1バイトが何を意味するのかわかる名前にしなきゃどれも同じだろ。
122デフォルトの名無しさん
垢版 |
2021/11/10(水) 12:36:55.56ID:hCEgwKyp
>>120
クラス名・変数名に迷ったら書き込むスレ。Part29
123デフォルトの名無しさん
垢版 |
2021/11/10(水) 12:54:53.84ID:qHfFFWeD
リンク貼れ無いから上げといた
2021/11/10(水) 16:34:33.05ID:NnVp+LzV
普通に貼れるだろ

クラス名・変数名に迷ったら書き込むスレ。Part29
https://mevius.5ch.net/test/read.cgi/tech/1619427133/
2021/11/11(木) 10:55:54.03ID:d2PdcKlR
ttps://ja.wikipedia.org/wiki/%E3%83%96%E3%83%BC%E3%83%AA%E3%82%A2%E3%83%B3%E5%9E%8B#C%E8%A8%80%E8%AA%9E
>標準の観点からは移植性・相互運用性は著しく悪化するが、集成体のサイズ削減などの観点から、
>型サイズが常に1バイトのunsigned charで代用されることもある。
intではなくunsigned charにするとどういう理屈で移植性・相互運用性が著しく悪化するの?
0かそれ以外かなのだからサイズなんていくつでも良い気がするけど
126デフォルトの名無しさん
垢版 |
2021/11/11(木) 13:15:10.54ID:zylbVsVW
コードならいいがデータだと駄目だろ
2021/11/11(木) 13:51:11.57ID:mCOYpHbI
booleanなら1bitで充分
2021/11/12(金) 00:47:13.86ID:M7lyd7nj
CPU の基本サイズが、int 型のサイズ。
それよりも小さいサイズは、使わない部分をマスクしないといけないので、手間がかかる

例えば、int型が32 ビット(4バイト)で、
8ビットだけ欲しい場合には、32ビットの内、24ビットをマスクしないといけない

また、構造体などの集積物は、この4バイトずつの区切りをまたげない。
バイト数で言えば、1, 1, 4, 1, 1 みたいなものは、ダメ。
一方、2, 1, 1, 2, 2 は、ちゃんと4バイトで区切れるから、OK

1, 1, 4, 1, 1 みたいなものは、自分でpadding を入れないといけない。
1, 1, 2(padding), 4, 1, 1, 2(padding) として、4バイトずつで区切る

bit field に関しても、paddingを考えないといけない
2021/11/12(金) 00:52:16.63ID:M7lyd7nj
>>120
小さいスコープなら、
c, ch
b, by, byt

大きいスコープなら、one_byte とか?
2021/11/12(金) 18:50:44.79ID:BdcRT/UY
>>128
今時の32bit命令セットなら8bitや16biに対応したアドレッシングモードも持っているでしょ
パディングは要るかもしれないがマスクなんて不用
2021/11/12(金) 20:11:37.11ID:a3j0d+bF
DSPなんかで32bitアクセスしかできない環境もある
プアな知識で語ると恥かくぞ
2021/11/12(金) 20:25:30.83ID:6B2k0V0v
できるのもできないのもある
よって
>また、構造体などの集積物は、この4バイトずつの区切りをまたげない。
>バイト数で言えば、1, 1, 4, 1, 1 みたいなものは、ダメ。
これは間違い
2021/11/12(金) 20:55:05.90ID:6r2duQMo
DSPのプログラミングが前提になっていること自体疑問
誰もそんなこと書いていないし一般的だとも思えない
134デフォルトの名無しさん
垢版 |
2021/11/12(金) 20:58:39.24ID:+D42agk2
こういう糞みてえな設計のテーブルを結合して顧客情報_EXを取得したいんだがどうしたらいい?


【顧客情報】
ID,Name,Birthday,Sex,Address,Staff
11111,田中,2000-01-01,1,1,1001
22222,佐藤,2001-01-01,2,2,2001

【コード】
ID,Code,Value
001,1,北海道
001,2,青森県

002,1001,山田
002,2001,鈴木

003,1,男性
003,2,女性


【顧客情報_EX】
ID,Name,Birthday,Sex,Address,Staff
11111,田中,2000-01-01,男性,北海道,山田
22222,佐藤,2001-01-01,女性,青森県,鈴木
135デフォルトの名無しさん
垢版 |
2021/11/12(金) 21:09:22.88ID:7yDpuo0s
Excelで回答してもいいですかぁ?
2021/11/12(金) 22:06:41.57ID:a3j0d+bF
>>133
そういう特殊な環境もC言語はサポートしようとしてるから
2021/11/12(金) 22:22:27.03ID:a3j0d+bF
>>134
SexのIdは001、AddressのIdは002、StaffのIdは003決め打ちでいいの?
テーブルって書いてるからDBなら
select
C.ID as ID, C.Name as Name, C.Birthday as Birthday,
S.Value as Sex, A.Value as Address, T.Value as Staff
from 【顧客情報】 C
left join 【コード】 S on S.Id = '001' and C.Sex = S.Code
left join 【コード】 A on A.Id = '002' and C.Address = A.Code
left join 【コード】 T on T.Id = '003' and C.Staff = T.Code
でいけるかと
138デフォルトの名無しさん
垢版 |
2021/11/12(金) 22:33:30.44ID:+D42agk2
>>137
決め打ちでいいよ
(ちゃんと見てないから後で裏取りはするけどさすがにそこまでしっちゃかめっちゃかではないはず)

LEFT JOINってこんな風に並べて書けるのか
なんか行けそうだわ
ありがとう
139デフォルトの名無しさん
垢版 |
2021/11/13(土) 12:27:46.53ID:GR8tTV2x
TeXの質問ってこの板でok?
2021/11/13(土) 12:41:00.03ID:x1CN7sQN
使い方ならここかな
\chapter{\TeX} % 第十二章
https://mevius.5ch.net/test/read.cgi/unix/1600179748/
2021/11/13(土) 13:14:22.60ID:oDc+Kxgx
Cで
switch (0x03 & flag) {
 case 0:
  ・・・
  break;
 case 1:
  ・・・
  break;
 case 2:
  ・・・
  break;
 case 3:
  ・・・
  break;
}
みたいな場合ってdefaultを省略しても良いかな?
default書こうにも論理的に存在しない動作を書くのは難しいんだけど
ハード的にバグってANDマスクが実行されなかったみたいな想定になってしまうし
そんな状況を想定したところでそれに対する妥当なアクションって何よって事に
2021/11/13(土) 13:25:24.55ID:5/jXyZUV
賢いコンパイラは消しちゃうからどうでもいい
書かなきゃならないならassert(0)でも入れとけ
2021/11/13(土) 13:58:43.99ID:x1CN7sQN
>>141
>>142が言うように default: assert(0); でいいだろ
仕様変更とかでコード改変したりすることもあるかも知れないし
144デフォルトの名無しさん
垢版 |
2021/11/13(土) 18:09:18.75ID:vJfZgOKN
>>141
どの条件でも良くてとりあえずdefault:描いておきたいだけなら
switch (0x03 & flag) {
default:
 case 0:
  ・・・
  break;
 case 1:
  ・・・
  break;
 case 2:
  ・・・
  break;
 case 3:
  ・・・
  break;
}
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。