- 1 名前:デフォルトの名無しさん [2022/02/12(土) 22:44:40.76 ID:AqYcq6TN.net]
- この板はプログラムを作る人のための板です。
あらゆる質問はまず スレ立てるまでもない質問はここで スレにしてください。 【前スレ】 スレ立てるまでもない質問はここで 158匹目 https://mevius.5ch.net/test/read.cgi/tech/1635193843/ 次スレは>>980が立てること
- 149 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 16:57:29.98 ID:mb+8cMlg.net]
- >>145
継承するにしてもオブジェクトを最初に生成するタイミングでは具象クラス名を書く このときに依存性やストラテジを注入すれば継承に限らず多態性を実現できるよ
- 150 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 17:19:43.47 ID:wBV0PE3F.net]
- >>147
それは仮想関数テーブルを自前実装するようなものでは?
- 151 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 18:57:12.23 ID:VUFBPNtu.net]
- >>148
大仰な仕組みのいらないごくありふれたデザインパターンだよ
- 152 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 19:00:06.74 ID:VUFBPNtu.net]
- 書き込むたびにID変わるのなんでだよ楽天さんよぉ
- 153 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 19:00:27.47 ID:VUFBPNtu.net]
- お、変わんなかった
- 154 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 19:41:34.73 ID:fgsAKQYY.net]
- >>149
ストラテジは動的にストラテジを切り替える場合(例 :設定値による切り替え)や アルゴリズムの枠だけ用意してストラテジを利用者に選ばせる(例:map, filter)場合 に使うパターンであって継承とはまた違うものですね 継承の場合は業務をモデル化したときに静的に関係が決まるのでここにデリゲートをかまして動的にする意味はないです 普通に仮想メソッドでいいでしょう
- 155 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 19:43:13.61 ID:qcDIuRpU.net]
- 継承が良くないとよく・・・聞かないぞw
ケースバイケースだろ。なんでそこで使うんだよって良くないのはあるけど
- 156 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 19:47:41.41 ID:fgsAKQYY.net]
- >>153
TypeScriptに関わると継承憎し、クラス憎しな人が結構な率で現れますよ
- 157 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 02:58:54.87 ID:2ldPnMFv.net]
- すいません。初心者です。超初歩的な質問で恐縮です。例えば↓
void draw() { if(cam.available() == false) { return; } cam.read(); image(cam, 0, 0); } というプログラムがあるとします。 この{}の次に「改行して書くやり方」が「生理的に受け付けないくらい気持ちが悪い」のです。これを↓ void draw() {if(cam.available() == false) {return;} cam.read(); image(cam, 0, 0);} のように「ギッシリ詰めて書く」という事は可能でしょうか? 詰めて書いても実行に何の問題も無いですか? 生理的な問題で「ギュッ」と纏まってないと落ち着かないのです。 「人に見せる時に読みにくくなる」等の問題もあるでしょうが、動作に支障ないなら独自路線で頑張りたいのですが。
- 158 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 03:44:54.50 ID:obqtoF8C.net]
- 言語によるけどその言語(c#?)ならたぶん問題ないよ。改行なんて全部消して一行で書け
- 159 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 05:32:59.83 ID:QMvGYxPa.net]
- 良いんじゃね。
Pythonはインデントでたまにがっかりするが。
- 160 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 06:01:46.48 ID:KFI2d+fo.net]
- 人に見せる機会があるなら普通の書き方した方がよくね
まぁ仕事じゃなくて趣味の範囲ならどうでもいいけど
- 161 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 06:03:32.11 ID:8XUT1BDs.net]
- 趣味の個人開発ならアリだけど業務開発とかideの手助けを受けるなら苦労しそう
- 162 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 06:32:30.27 ID:2ldPnMFv.net]
- >>156
ありがとうございます。丁度C#をやろうと思っていました。 本音を言えば「一行で書きたい」と思っていたので正に思っていたことをおっしゃっていただきありがとうございます。 個人的にゲームを開発し、人に見せる気は無かったのでこれでいこうと思います。 皆さん、ありがとうございました。
- 163 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 11:59:23.57 ID:FxZT1eeT.net]
- 8ビットPC時代の一画面プログラムかよw
- 164 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 12:23:25.05 ID:PDfOakC2.net]
- 無駄な空白も消してみんなぎゅっとしよう
void draw(){if(!cam.available()){return;}cam.read();image(cam,0,0);} 密だっていいじゃない 文字だもの
- 165 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 12:40:34.18 ID:PssNo99E.net]
- 1文で書けるなら改行なしでも違和感ないけどifとかwhileの制御構文が入ってくると可読性がヤバくなるからおすすめしない
どこまでのコード量なら1行に詰めるか自分用のルールは決めといた方がいい
- 166 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 13:58:35.34 ID:wKfqGXJ0.net]
- Ruby on Rails の単一テーブル継承・STI(Single Table Inheritance)は有名。
主に、検索の利便性 例えば、会社・家表に、同じ住所項目がある場合、 住所表を作って、住所表から会社住所表・家住所表を
- 167 名前:継承させる
HomeAddress < Address WorkAddress < Address Railsが裏側で、住所表のtype 列が0 なら家・1なら会社と切り替える。 会社住所表・家住所表という実体はなく、住所表しか存在しない 会社住所または家住所が東京にある、顧客を検索する場合、 住所表1つだけの方が、検索性能が良い [] - [ここ壊れてます]
- 168 名前:デフォルトの名無しさん [2022/02/23(水) 15:24:31.88 ID:byGXC1Fx.net]
- なんかWEBサイトのjsみたい
- 169 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 15:33:38.24 ID:wNcLFBxP.net]
- 人に見せるときはフォーマッターを使って
人が見やすいように整形すればいいだけじゃないの
- 170 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 15:40:53.71 ID:n4QLtIZ7.net]
- 整形するなら高須クリニックみたいな所に通わないと
- 171 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 05:18:58.15 ID:jcAfJg3X.net]
- 新卒2年目のプログラマです
ループ処理を行う場合、基本的にforeachを使っているのですが、カウントが必要な単純なループでforを使った所 先輩からカウント用の変数を用意するかselectメソッド(c#です)を使って全部foreachで統一してと言われました (コーディング規約にあるわけではないです) わざわざカウント用の変数を用意するのも、速度的にfor使用時より遅くなるselectメソッドを使用するのもなんだかスッキリしないなあと思っています 他の現場を知らないのですが、これは開発の現場では当たり前の事なのでしょうか? ちなみに皆さんはどうされていますか?
- 172 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 09:31:43.11 ID:ycqMJ20y.net]
- 理不尽なことを押し付けられるのは当たり前によくあること
いちいちなぜなのかとか逆らったりするのは労力の無駄
- 173 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 09:43:15.52 ID:pVKiKajR.net]
- ケチ付けられたらコードを晒してくれなくちゃパイセンの擁護は出来ないな
- 174 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 09:57:04.10 ID:5EPKB3Xk.net]
- 思ったならその場で言えば良かったじゃん
何も言えず掲示板で愚痴った時点でこの勝負はお前の負けや
- 175 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 12:04:16.87 ID:82W7j8jp.net]
- Ruby では、繰り返しにindex や、蓄積変数を付けたものがある。
または、each に付ける事もできる つまり、書き方が決まっている ary = [ "a", "b" ] ary.each_with_index do |element, index| p "#{ index }:#{ element }" end 出力 "0:a" "1:b" ary = [ "a", "b" ] # 初期値は1 ary.each.with_index( 1 ) do |element, index| p "#{ index }:#{ element }" end 出力 "1:a" "2:b" 同様に、蓄積変数を付けたものもある。 each_with_object( obj ), with_object( obj )
- 176 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 12:31:55.94 ID:D9/QhxEj.net]
- >>168
ここは技術板だから「先輩にどう対応したらいいか。プログラマ業界の他の職場ではどうなのか」って話は板違い。プログラマ板へどうぞ
- 177 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 12:33:04.26 ID:2qhRGcQ8.net]
- >>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)と勘違いしてバグる可能性はある
- 178 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 12:35:41.36 ID:6X2WQPLr.net]
- SQLに文字列投げる前のバリデーションに使う正規表現で鉄板なの教えてください
英数字記号で、クォーテーションとかSQLだと危ないやつは弾く感じの
- 179 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 12:43:46.72 ID:ycqMJ20y.net]
- sql命令を文字列として作らずパラーメーターとして渡す
- 180 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 12:48:01.07 ID:jcAfJg3X.net]
- 自分の書き方が悪くグチを言っているみたいになってしまいすみません
レスの最後の2行は先輩への対応方法を聞いているわけではなく、カウントが必要な単純なループを皆さんはどの様に対応されますかと言う質問でした >>172 なるほど、Rubyはそうなんですね! ありがとうございます!! >>174 拡張メソッド良いですね! 自分なりに保守性を考慮して考えてみたいと思います めっちゃ参考になりましたありがとうございます!
- 181 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 13:03:32.01 ID:5we6KcaS.net]
- プログラミングは全てケースバイケース
そんな細かい所を統一する意味は全くないからその時に書きやすい方を使うのが正解だよ
- 182 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 13:47:22.35 ID:7WoYZRJz.net]
- 自分はforeachではないforが出てくるのは最終手段だと思ってるのでSelectさせる
インデックスを得る手段がもう少しマシな方法ほしいのだが
- 183 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 15:38:45.00 ID:1DMGsg19.net]
- 転職の言語要件に
@vb.netとc#ならわかるんですが Ac#とjavaって書いてある所があり 括りとしてはどっちが正解なんですかね? 個人的には@かと思うんですが Aの所は避けた方が良いですね?
- 184 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 15:46:25.40 ID:5we6KcaS.net]
- せっかくだから俺はAを選ぶぜ
- 185 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 15:51:20.71 ID:ycqMJ20y.net]
- javaはスマホ開発もするってのが多い
vb.net入ってる方が地雷だと思うぞ
- 186 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 17:03:20.09 ID:+aDYy71x.net]
- foreachの中心的価値の一つはコレクションの最初から最後までもれなく処理対象としていることをアッピルする効果だと思う
forでは先頭の要素や末尾の要素だけ処理していないとき、バグなのか意図的なのか即座に判断できないことがある foreachで統一的に書く方針には一定の合理性があると思う 俺はIDEの支援込みでfor文使ってた カウンタの初期化とインクリメント文を書くのだるいなと思ったけど、for文でもカッコ内に同じことが書いてあるのでまあいい気もする でもブロック末尾のインクリメントは書き忘れるんだよな -1で始めてすぐインクリメントしてもいいけど微妙
- 187 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 17:10:25.79 ID:ycqMJ20y.net]
- そんなあなたにfinally
- 188 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 18:33:43.52 ID:+aDYy71x.net]
- really?
- 189 名前:デフォルトの名無しさん [2022/02/24(木) 20:18:19.15 ID:MZJU+q2v.net]
- ジョブ運用管理のOSSって何が有名?
cronが多いのかな
- 190 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 20:27:03.32 ID:5we6KcaS.net]
- sidekiqとか?
- 191 名前:デフォルトの名無しさん [2022/02/24(木) 20:51:05.92 ID:NBv0zeLR.net]
- 命名スレないっぽいのでここで聞きたいんだけど
デスクトップアプリケーション作ってて、ボタンは一箇所にまとめてある 入出力、テストや表示、操作など app.___.load_btnとかapp.___.test_btnとかいう構造のとき、ボタンウィジェットの親の名前ってなんてつけるのです? app.console.load_btn? cmdpanel? btns?
- 192 名前:デフォルトの名無しさん [2022/02/24(木) 20:52:39.24 ID:NBv0zeLR.net]
- あ、ボタンは複数個あって親フレームにひとまとめに配置してある
この親フレーム名 は? という質問です
- 193 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 21:02:40.71 ID:iDpw9I/7.net]
- >>188
> 命名スレないっぽいのでここで聞きたいんだけど 検索能力なさすぎだろ… クラス名・変数名に迷ったら書き込むスレ。Part29 https://mevius.5ch.net/test/read.cgi/tech/1619427133/
- 194 名前:デフォルトの名無しさん [2022/02/24(木) 21:16:15.58 ID:NBv0zeLR.net]
- >>190
命名とか設計で検索してたw 失礼した
- 195 名前:デフォルトの名無しさん [2022/02/24(木) 21:36:16.86 ID:sqPOmgLf.net]
- >>134です。
皆さん、回答ありがとうございます。 動的なサイトというのは、具体的に言うと、巨大画像掲示板群サイトを作ろうとしているのですが、 それを作るために必要な言語などは以下のものだけで良いでしょうか? HTML、CSS、PHP、JavaScript、MySQL、データベースについて これ以外にも必要な言語などがあれば教えてください。 あと、やっぱり巨大画像掲示板群サイトを作るとなると、 JavaScriptは避けては通れないですよね? JavaScript無しで作る事は不可能ですか? そもそもプログラミングを始める順番は、HTML→CSS・・・の順で良かったのでしょうか? 自分は元々あまりコンピュータとかソフトウェアとかネットワークなどというものに対して あまり詳しくないので、プログラミングをしたかったらもっと根源的なところから始めるべきなのでしょうか? そこらへんについてもいろいろ教えてほしいです。 回答よろしくお願いします。
- 196 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 21:48:59.13 ID:ydRUnLFS.net]
- html、PHP
(phpじゃなくてほかのでもいいけど)この二つがあれば作れる。その他は必須じゃない 「php 掲示板 作り方」なんかでぐぐって意味わからなくていいからコピペでまずは文字の掲示板を適当に作るところからかな
- 197 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 21:49:45.68 ID:JxtsCxtE.net]
- 巨大画像掲示板は転送量代で月に何十万、何百万もかかるからそのつもりで
- 198 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 21:55:35.90 ID:82W7j8jp.net]
- 前スレの、>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 する 次へ続く
- 199 名前:195 mailto:sage [2022/02/24(木) 21:56:18.77 ID:82W7j8jp.net]
- 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 }) 次へ続く
- 200 名前:195 mailto:sage [2022/02/24(木) 21:57:06.88 ID:82W7j8jp.net]
- # 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 次へ続く
- 201 名前:195 mailto:sage [2022/02/24(木) 21:58:12.15 ID:82W7j8jp.net]
- # つまり、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 # 出力したコマンドプロンプト画面を閉じないようにする 以上です!
- 202 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 22:03:05.14 ID:82W7j8jp.net]
- >>175
文字列を連結して、SQL 文を作ると、SQL injection される だから、Ruby on Rails では、O/R マッパーを使う。 place holder を使って、? の所に、変数を埋め込む
- 203 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 22:05:37.73 ID:WpNQdEVr.net]
- これって触っちゃいけないやつ?
- 204 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 22:36:56.77 ID:iDpw9I/7.net]
- >>200
Ruby を NG
- 205 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 01:02:54.98 ID:Eg3DloqN.net]
- >>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
- 206 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 01:13:59.96 ID:kML1EznR.net]
- 句読点の付け方が全く同じだ
- 207 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 07:45:38.34 ID:nHsHzaxy.net]
- >>202
これだけ一生懸命宣伝して見返りはないって笑うなw
- 208 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 08:37:45.79 ID:nHsHzaxy.net]
- >>192
こういうのよく見るけど なんでいきなり巨大なの作ろうとすんのw しかも群
- 209 名前:175 mailto:sage [2022/02/25(金) 10:56:25.38 ID:cHKC+7di.net]
- >>175
ワイ175やけど結局みんな手探りなのね プレースホルダは当然やるけど、予約語のバリデーションは独自でやってるんやね (出来ればDBにアクセスする前、バインド(prepare)する前に、アプリで弾きたい)
- 210 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 11:08:11.28 ID:gEwvZxtg.net]
- SQLに投げる前にバリデーションなんてしない
バリデーションはプレゼンテーション層〜ドメイン層のどこかでやること
- 211 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 11:43:57.59 ID:SuduBg90.net]
- >>206
どんなGUIか知らないけどフリーキーワードをちまちま入れないといけない時点でもう使いづらい。 動的にチェックボックスや候補ワードが先回りして出るくらいでないと。 キーワードを投げたはいいがヒット0とか、今どきはダサいよ。
- 212 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 11:44:18.05 ID:Ttq2k6xT.net]
- >>206
プレースホルダ使っててなんのためにバリデーションしてるんだ? 変なデータが入るのが嫌と言うならそれは要件次第だろとしか言えないし
- 213 名前:175 mailto:sage [2022/02/25(金) 11:59:13.95 ID:cHKC+7di.net]
- >>208
>>209 問い合わせフォームとか応募フォームなんだけど、 こないだbot投稿に遭ってとりあえずreCapchaは入れて止めた だけど、いくつかはDBまでSQL文がtextとしてinsertされちゃったんよねw(where〜とかが名前とかのカラムに入った) じゃあなんかのバリデーションするかってことで普通はどうするかな、て
- 214 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 12:08:01.02 ID:GobJHqAk.net]
- インジェクションできるかチェックされてるか、どこか文字列で直にやってる
- 215 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 12:51:38.11 ID:0LOdeZPu.net]
- 問い合わせの内容としてSQL文が必要ならサニタイズして入れとけばいいよね?
prepared statement使ってるのにユーザー入力を保存するカラム以外に ユーザー入力が保存されてたんならなんか使い方間違ってると思う
- 216 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 12:53:33.76 ID:gEwvZxtg.net]
- >>210
そういうのはWAFの仕事
- 217 名前:202 mailto:sage [2022/02/25(金) 12:58:38.12 ID:Eg3DloqN.net]
- MVC のRuby on Rails では、
Controller のstrong parameter で、更新される列・必須列をチェックする モデルでも、バリデする。 valid_email2 で、正しい形式のメールアドレスかどうかとか 日本6位の初心者が3千人入っている、KENTA のサロンとか行かないと、ウェブ開発を学べない Rails以外のフレームワークを選ぶと、勉強の教材がないから、 プロになるのは、まず無理
- 218 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 13:59:36.28 ID:isep1BZs.net]
- >>213
WAF使ったことないでしょw
- 219 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 14:21:18.61 ID:gEwvZxtg.net]
- >>215
あるよ
- 220 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 16:15:30.34 ID:xc5sID1o.net]
- SQSやKinesisはどういう場合に使うのでしょうか?
あと、これを使う場合って送信用サーバと受信用サーバの2つが必要になりますよね?
- 221 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 16:30:52.94 ID:VyHl6qUM.net]
- >>210
これってSQLに値を渡したい場合、文字列結合ではなくプレースホルダだけ書いておいてパラメータとして与えましょうという初歩の話じゃないの?
- 222 名前:175 mailto:sage [2022/02/25(金) 16:50:08.00 ID:ilyzPMTz.net]
- >>218
いやその後のハナシで バリデーションとかエスケープとかサニタイズしても、 結局文字列としてInsertされるから、それを防ぎたいってハナシ 氏名:selectさんとかそういうデータが出来るのを防ぐのどうしてるのかなて まあ
- 223 名前:DBに限るハナシでもないけど []
- [ここ壊れてます]
- 224 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 17:25:32.08 ID:GobJHqAk.net]
- 175が言う通りの実装してるなら、必要なのは「SQLインジェクション対策」じゃなくて
「不正な名前入力対策」=氏名チェック用の正規表現 日本人限定で組むなら常用漢字な人名用漢字、ひらがな、カタカナだけだから 単純に半角英数字記号が含まれてたら弾くようにすればいい。外国人含むならシラン
- 225 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 17:42:11.20 ID:qQXuMGT2.net]
- selectさんとかを防ぐことで得たいと思っているビジネス的な価値が何なのか知りたい
クオーテーションとか危ない感じのを弾きたいと言うからSQLインジェクション対策かと思ったけど、そういうわけでもないってこと? でもそれならクオーテーションを弾くのはデメリットしかないし、何か混同しているんだろうか
- 226 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 17:44:59.19 ID:qQXuMGT2.net]
- 認証不要のフォームでアタックの痕跡によってゴミが大量に溜まるのが迷惑だから事前にフィルタリングしておきたいってことかな
- 227 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 17:54:52.96 ID:+PfgW030.net]
- >>219
そういうのをバリデーションできてないって言うんだぞ 正規表現教えて君する以前に仕様を決めろ
- 228 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 18:17:54.50 ID:qbQTiRzp.net]
- GoogleスプレッドシートやGoogleMeetの検索ってあの膨大なデータからどうやって検索してるんだ?
とくにMeetのほうは曖昧検索っぽい GCPでビッグデータの検索関連サービスってあるの?
- 229 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 18:26:10.37 ID:Eg3DloqN.net]
- Ruby on Rails の文字列検索は、Elasticsearch
- 230 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 18:33:34.96 ID:Eg3DloqN.net]
- >>217
Queue は一番昔からある、基本的なサービス その時に同期処理をすると時間が掛かるので、 一旦、キューに入れて、後から処理する。非同期処理 月3千円ぐらいのくろかわこへいのAWS サロンへ入れば? Amazon なら、3日で21万円とか高い
- 231 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 21:21:26.02 ID:CV/dWopv.net]
- >>224
inverted index
- 232 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 08:12:42.19 ID:vbSsEIAE.net]
- >>227
それだとものすごい数のレコードを作成してるんだね 例えば、GoogleMeetの1メッセージが300文字あったとして、形態素解析しつつ名詞を分割してそれぞれを行として格納 しかし部分一致とあいまい検索は完璧ではない と思ったらスプレッドシートはCloud Search使ってると書いてあった 膨大なデータを分解して格納ってすごい技術だ
- 233 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 08:23:05.81 ID:wWFTGeHR.net]
- kakasiの頃よくインデクサを使っていたけど、しょせんテキスト情報なんで大したことないよ
- 234 名前:デフォルトの名無しさん [2022/02/26(土) 08:45:38.69 ID:R1ubXlLS.net]
- プログラムが何故動くのか?についてわかりやすく解説しているサイトってないですか?
ググっても「プログラムを機械語に翻訳して、機械がわかるように翻訳しているから動く」 的な説明ばかりなんですが、知りたいのはそういうことではなくて、 じゃあ最初から機械語で完璧に書いたとして、なぜそれで動くのかがわからないんです。 別の表現すると、異世界転生で電卓のない世界に行ったとして、 そこで電卓を開発して一儲けしようとしたときに、 どうやって電卓内部で「1+1」の処理をさせるかのイメージがつかないんです。 結局「プログラム」と言う概念が先にないと無理なんじゃないのか?みたいな・・・ 鶏と卵の話みたいに感じてしまいます
- 235 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 09:09:24.95 ID:e5W/1zqv.net]
- サイトじゃなくてCPUについて技術解説してる書籍でも漁っとけ
- 236 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 09:10:39.17 ID:wWFTGeHR.net]
- >>230
レジスタ(フリップフロップ)のことは分かるのかね ハード寄りのことから理解しないとマシン語はわからないよ
- 237 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 09:12:33.77 ID:sjesp9D9.net]
- >>230
コンピュータはなぜ動くのか、読めば?
- 238 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 09:33:18.46 ID:GBHX3kX2.net]
- 「1+1」だけなら半加算器あたりが分かればなんとか
- 239 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 09:42:33.04 ID:wWFTGeHR.net]
- >>230
フリップフロップはソロバンの珠と思えばよい。 ソロバンは珠が元の位置か、動いたかをメモリーする装置である。 動いている珠を1、元の位置なら0とみなして、動かすルールによって複雑な計算をする。 フリップフロップの場合は電気によって、今のON/OFFをメモリーできる。 そのON/OFFを1と0にみなして、機械的なルールで計算を行う。 例えばいちばんわかりやすいのがビットシフトである。 二進数01011を左に一桁ずらす「機械的操作」をすると10110となり、これは元の数を二倍する「計算」をしたことになる 逆に右に一桁ずらすと2で割るという「計算」をしたことになる 01011 → 0101(余り1)
- 240 名前:デフォルトの名無しさん [2022/02/26(土) 10:30:44.32 ID:FEw16ZgO.net]
- マインクラフトでコンピュータ作ってみた みたいな動画見りゃ理解できるべ
- 241 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 13:40:22.88 ID:/yaZQ1xu.net]
- Ruby on Rails, Amazon は、Elasticsearch。
Railsの形態素解析は、kuromoji Google は、Chrome の翻訳もひどかったけど、 ここ2か月ぐらいで、かなりDeepL に近づいた DeepLを、パクったのかも
- 242 名前:デフォルトの名無しさん [2022/02/26(土) 14:14:47.64 ID:1jHkYGS8.net]
- CPU/GPU作ってみたみたいな動画面白いよ
- 243 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 14:26:16.75 ID:R/0GMSS/.net]
- 普通にコンピュータアーキテクチャの教科書を読めばいい
- 244 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 15:17:19.82 ID:xS/SyeLk.net]
- トランジスタがあって
フリップフロップがあって 論理回路、順序回路があって リングカウンタあたりがあって 機械語がある この辺を順番にググると 上から下までわかるようになるのでは? 大学のシラバスが外から見えるので その辺からキーワードを取り出して ググれば独学も可能
- 245 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 15:21:10.00 ID:ZdFqztpZ.net]
- >>240
COMET/CASL アーキを自力で実装する系の、きちんとした教科書があったことを記憶しています…
- 246 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 15:51:20.85 ID:/yaZQ1xu.net]
- 電験三種、組み込みの資格のテキスト
電気電子回路、交流の複素数の複素平面。 ネイピアe(2.72)のiπ乗 = -1 3D では、虚数のquaternion とか結構、虚数が出てくる
- 247 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 16:26:27.41 ID:ZdFqztpZ.net]
- >>242
厳しいことをいいますが、交流=正弦波が複素数により代数的に処理できるのはなぜか? 本来受動素子の作用は解析的=微分積分、で定義されるのですが、そういう世界が代数的=足したり引いたり掛けたり割ったりで処理していい理由、というのをはっきりさせないまま安直に使うのは知的誠実さにかける、と私は非難します…
- 248 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 16:56:03.31 ID:1vnMKgVV.net]
- >>230
トランジスタとダイオードの組み合わせでAND/OR/NOT回路を作るとこからから勉強かな 加算器とかフリップフロップがAND/OR/NOT
- 249 名前:の組み合わせでできるから
そいつらを組み合わせれば2進数入出力の電卓ぐらいは作れる 使ってるものはトランジスタとダイオードと抵抗(と装置外部の入出力にスイッチとLED)だけ 現代のCPUのトランジスタ数は60億とかなので無制限だと思っていい [] - [ここ壊れてます]
|

|