- 1 名前:デフォルトの名無しさん mailto:sage [2018/11/03(土) 19:08:18.89 ID:nx8/6O0X.net]
- 質問する前にGoogleで検索しましょう。 www.google.com/
プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。 ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。 Javascript は Web 制作板、CGI は Web プログラミング板へ。 業界談義、愚痴はプログラマ板へどうぞ。 ゲーム関係の話題はゲーム製作板へどうぞ。 ネタ、板とは関係の無い話題はご遠慮ください。 前スレ スレ立てるまでもない質問はここで 150匹目 https://mevius.5ch.net/test/read.cgi/tech/1537176309/ 注意「〜と〜はどっちの方が○いですか?」みたいなのは このスレの粘着荒らしですので無視してください
- 985 名前:デフォルトの名無しさん [2019/05/04(土) 09:12:23.39 ID:S+NYX3By.net]
- >>972
関数型言語のスレの方が良い気がするけど。。。 感覚的で良ければ。 圏論では変数も引数のない関数と見なすので、例えばgetLineみたいな副作用のある関数も一種の変数(外部からの入力が入っている変数)と見なします。 n = 1 ― 変数であり、引数なしの関数 入力 ↓ getLine ― 副作用関数であり、入力が入っている変数 ただ、入力を通常の値と同じにすると参照透明性が破れるので、IO Stringの様に別の型にして、>>=からしか値が取り出せない様にします。 (逆に通常の型にIOを付けたい場合はreturnを使います) そうする事で、副作用のある関数は普通の関数も使えるけど、
- 986 名前:逆は無い事が保証されます。
ぶっちゃけ、純粋関数型言語にも副作用はあると言えますが (無いと主張するなら虚数の掛け算みたいな感覚。実数に対して90度の回転みたいに、虚空からの値の変数への束縛。 ただしその変数は常に部分適用で見た目が隠されている。みたいな)、 参照透明性が破られることは無い。と言うのが純粋関数型言語の特徴ですね。 [] - [ここ壊れてます]
- 987 名前:デフォルトの名無しさん [2019/05/04(土) 09:14:58.80 ID:S+NYX3By.net]
- こう言う書き方はできない
(この場合、putStrLnはString->IO (), getLineはIO String) main = putStrLn getLine ― 型が違うのでエラー。 これならおk main = getLine >>= putStrLn ― 入力(ランダムも)したものの加工や出力は必ず>>=の後になる。 (getLine >>= \str -> putStrLn str を部分適用した) or main = do str <- getLine putStrLn str 出力に対しても、出力関数が左端になる事を保証します。 (普通の関数との合成なども出来るが、普通の関数が左端に来る関数に出力関数が引数になったり、合成されることは無い) main = map print [1..3] ― 型エラー。 main = mapM_ print [1..3] ― IOモナド用のmapMやmapM_(値を捨てる)ならおk main = print.length [1..10] ― 出力関数が左端に来るなら、普通の関数と関数合成可能。 main = mapM (\_ -> getLine) [1..3] >>= mapM_ (print.length) ― 結局、型が合えば動くと言う点では普通の関数と同じ。
- 988 名前:デフォルトの名無しさん [2019/05/04(土) 09:16:00.91 ID:S+NYX3By.net]
- 制限に引っかかった。。。
main = do str <- getLine putStrLn str 出力に対しても、出力関数が左端になる事を保証します。 (普通の関数との合成なども出来るが、普通の関数が左端に来る関数に出力関数が引数になったり、合成されることは無い) main = map print [1..3] ― 型エラー。 main = mapM_ print [1..3] ― IOモナド用のmapMやmapM_(値を捨てる)ならおk main = print.length [1..10] ― 出力関数が左端に来るなら、普通の関数と関数合成可能。 main = mapM (\_ -> getLine) [1..3] >>= mapM_ (print.length) ― 結局、型が合えば動くと言う点では普通の関数と同じ。
- 989 名前:デフォルトの名無しさん [2019/05/04(土) 09:29:06.06 ID:vdfWhHEk.net]
- main = do str <- getLine
putStrLn str 出力に対しても、出力関数が左端になる事を保証します。 (普通の関数との合成なども出来るが、普通の関数が左端に来る関数に出力関数が引数になったり、合成されることは無い) main = map print [1..3] ― 型エラー。 main = mapM_ print [1..3] ― IOモナド用のmapM(値を返す)やmapM_(値を捨てる)ならおk main = print.length [1..10] ― 出力関数が左端に来るなら、普通の関数と関数合成可能。 main = mapM (\_ -> getLine) [1..3] >>= mapM_ (print.length) ― 結局、型が合えば動くと言う点では普通の関数と同じ。
- 990 名前:デフォルトの名無しさん [2019/05/04(土) 09:31:47.15 ID:vdfWhHEk.net]
- main = do str <- getLine
putStrLn str 出力に対しても、出力関数が左端になる事を保証します。 (普通の関数との合成なども出来るが、普通の関数が左端に来る関数に出力関数が引数になったり、合成されることは無い) main = map print [1..3] ― 型エラー。 main = mapM_ print [1..3] ― IOモナド用のmapM(値を返す)やmapM_(値を捨てる)ならおk main = print.length [1..10] ― 出力関数が左端に来るなら、普通の関数と関数合成可能。 main = mapM (\_ -> getLine) [1..3] >>= mapM_ (print.length) ― 結局、型が合えば動くと言う点では普通の関数と同じ。
- 991 名前:デフォルトの名無しさん [2019/05/04(土) 15:52:20.32 ID:adnCRUw6.net]
- オープンソースだとソースコードをチェックできるからセキュアだ、
というような言説がありますが、 例えばgithubでソースコードと実行可能バイナリが公開されていたとして、 本当にその実行可能バイナリがそのソースコードからビルドされたのか 分からないんじゃないですか? 何か簡単に確かめる方法はありますか?
- 992 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 15:53:47.87 ID:z6rpqItx.net]
- ソースあるなら自分でビルドするから
- 993 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 16:01:13.99 ID:xRy8GHS2.net]
- オプソの開発者にも同じこと思ってる人は居てreproducible buildsみたいなプロジェクトもあるっちゃある
- 994 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 16:11:09.41 ID:t4zJt5DP.net]
- バイナリに電子署名付けて私がビルドしましたって証明するのが限界で
元のソースを辿るのは無理だと思う
- 995 名前:デフォルトの名無しさん mailto:sage [2019/05/04(土) 16:11:46.40 ID:eyQzK648.net]
- このビルドはワシが育てた。
- 996 名前:デフォルトの名無しさん [2019/05/05(日) 01:22:11.46 ID:kL93aIfd.net]
- >>978
ソースからビルドしたものとサイズを比較する。
- 997 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 01:44:58.76 ID:fizRIu1X.net]
- >>983
そんなものあてにならん ビルドしたことないのか
- 998 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 09:46:43.61 ID:OAMUtfzX.net]
- 同じツールセットと設定でビルドすればバイナリの差分確認くらいできる。
タイムスタンプとか差分の出るところはわかってるんだから。 プロジェクトによってはちゃんと複数人でそれぞれビルドして同じソースからビルドしたバイナリなのを確認したりする。
- 999 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 10:51:39.58 ID:VtQYfSta.net]
- >>985
なに全時代的なことしてるんだ?w ビルドはCIによって自動的に行われ、ビルド手順は ソースコードと同じようにバージョン管理されるんだから そんな無意味で時間がかかる=コストがかかる馬鹿げた方法をやる必要はない
- 1000 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 10:51:59.45 ID:VtQYfSta.net]
- × 全時代
○ 前時代
- 1001 名前:デフォルトの名無しさん [2019/05/05(日) 13:13:33.44 ID:ptHRpxR9.net]
- >>984
簡易チェックとしては定石だけどな。
- 1002 名前:デフォルトの名無しさん mailto:sage [2019/05/05(日) 13:22:15.36 ID:2252L+7N.net]
- VSでC#をビルドすると同じソースでもハッシュ変わるし改変してもバイナリサイズ同じとか普通にあるから困る
- 1003 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 11:31:21.72 ID:fIiGJlWA.net]
- VS2017でC#使ってFramework4.6.1でやってるんですが
PrintDocumentで、デバイスとプリンターにあるFaxに出力をかけると 普通は宛先情報の入力画面が表示されると思うんですが PrintDocumentの方で何か情報をインプットするなりして 宛先入力画面を表示させない方法とか無いですか?
- 1004 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 16:24:52.13 ID:inXvnXa3.net]
- >>989
プロジェクト設定変えろ。 決定論的ビルドできる。
- 1005 名前:デフォルトの名無しさん [2019/05/06(月) 23:19:25.93 ID:w/vwmWEJ.net]
- >>990
入力画面が表示されるのは普通じゃないだろw
- 1006 名前:デフォルトの名無しさん mailto:sage [2019/05/07(火) 08:46:11.21 ID:dYmQvrG6.net]
- >>992
え?普通じゃないんです? 宛先入力せずにFAX送れないでしょ?
- 1007 名前:さまよえる蟻人間 mailto:sage [2019/05/07(火) 08:51:09.03 ID:fgAbOfTE.net]
- そろそろ次スレ
- 1008 名前:デフォルトの名無しさん mailto:sage [2019/05/07(火) 09:21:04.78 ID:7undKR/x.net]
- 次スレは再利用しようぜ
スレ立てるまでもない質問はここで 149匹目 https://mevius.5ch.net/test/read.cgi/tech/1529199088/
- 1009 名前:デフォルトの名無しさん [2019/05/07(火) 19:45:31.20 ID:5Jh8r5ay.net]
- >>993
だから情報が足らない状態で印刷しようとするからそうなる。
- 1010 名前:デフォルトの名無しさん mailto:sage [2019/05/07(火) 19:51:59.86 ID:dGHDXi4W.net]
- >>993
PrintDocumentは印刷のためのもので宛名聞いてきているのはFaxの方じゃない? https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/printdocument-component-overview-windows-forms
- 1011 名前:デフォルトの名無しさん mailto:sage [2019/05/08(水) 09:00:56.82 ID:a9venIhx.net]
- javaって有料化するんじゃなかったっけ
- 1012 名前:デフォルトの名無しさん mailto:sage [2019/05/08(水) 10:56:42.82 ID:I87+V7H7.net]
- Javaは有料化しないんじゃないの
OracleJDKは有料化するけど、他に無料のJDKが数種ある
- 1013 名前:デフォルトの名無しさん mailto:sage [2019/05/08(水) 11:03:11.96 ID:OXX01uLM.net]
- return
- 1014 名前:1001 [Over 1000 Thread.net]
- このスレッドは1000を超えました。
新しいスレッドを立ててください。 life time: 185日 15時間 54分 54秒
- 1015 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|