トップページ > プログラム > 2014年06月20日 > fiYVjyLm

書き込み順位&時間帯一覧

3 位/220 ID中時間01234567891011121314151617181920212223Total
書き込み数01000000011112101010210114



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
835
528
プログラミング言語 Scala 10冊目
ネットワークプログラミング相談室 Port29
Ruby 初心者スレッド Part 54
Lisp Scheme Part38
Swift part2
データ構造,アルゴリズム,デザインパターン総合スレ 2

書き込みレス一覧

プログラミング言語 Scala 10冊目
302 :デフォルトの名無しさん[sage]:2014/06/20(金) 01:18:50.96 ID:fiYVjyLm
>>304
外部DSLを知らないってことですね
ネットワークプログラミング相談室 Port29
863 :835[sage]:2014/06/20(金) 09:20:27.39 ID:fiYVjyLm
>>860
指摘ありがとう、レス#の間違いに気が付けなかった....

X: この過去スレの#318が自分のカキコになる
O: この過去スレの#938が自分のカキコになる

具体的な疑似コードは、過去レス(>>853)の #947 と #950-952
Ruby 初心者スレッド Part 54
968 :デフォルトの名無しさん[sage]:2014/06/20(金) 10:01:00.56 ID:fiYVjyLm
>>966
Windows向けGUIツールキットならば Ruby-IUP がある
IUP はよくあるマルチプラットフォーム対応なツールキットだけど、
プラットフォーム・ネイティブなウィジェットを使う点が特徴
Windows上であれば、外観からRubyアプリか否かは見分けがつかない
  http://www.tecgraf.puc-rio.br/iup/en/gallery.html
問題は:
・最終gemリリースが2010年なので、おそらく最新の2.x系では動かない(実機未確認)
・Mac上ではCocoa未対応なので、Xウィンドウ(GTK2.0)が前提(GTK+-Cocoaは未確認)
・日本語情報が皆無
なこと

もしJavaに心理的な抵抗が無い人なら、>>967の勧める JRuby がいいと思う
新しいJavaFX以外にも、ネイティブウィジェットを使い豊富な機能を提供する SWT や
(GTK等と同じく)ネイティブウィジェットではないけどJava標準でシンプルな Swing もある

ここ数年、Ruby界隈は Web へ開発パワーが集中していたから、GUI周辺は寂しい感じがするね
ネットワークプログラミング相談室 Port29
866 :835[sage]:2014/06/20(金) 11:57:20.19 ID:fiYVjyLm
>>864
「寝ている」とはプロセスがブロック(or スレッド)された状態を意味するのかな?
もしそうなら、過去スレ#950の冒頭で述べているように:
・マルチスレッド構成でTCPコネクション単位に
 スレッド処理する設計ならば、ブロックには何の問題も無い
 新たに受信データ断片が到着すればスレッドのブロックが解除され、
 次のtype別処理を再開できるのだから
・シングルスレッド構成でイベント駆動処理を前提に設計しているのならば、
 過去スレ#947の疑似コードは不適切だから
 代わりに#950の疑似コードを使えばいい

>>865
バッファが空である(buf.size() == 0)ならば
現時点で到着していた受信データ断片の処理は終わったのだから、
ステートマシンの状態を保持したまま
すみやかにコールバック関数をリターンし、
次の受信イベント発生を待ちうけるべき
こんなのはイベント駆動プログラミングの基本だけど、
>>865はどんなエラー処理を期待しているのかな?
Lisp Scheme Part38
811 :デフォルトの名無しさん[sage]:2014/06/20(金) 12:13:07.18 ID:fiYVjyLm
VM実装に限定した話であれば、
goto文を多用するカリカリ・チューニングも必要悪だけど選択肢の一つかな

ただ自分なら、そういったコーディング・テクニックを駆使するパワーを
VM命令セットの改善やVMコード最適化にまわすけどね
ネットワークプログラミング相談室 Port29
871 :835[sage]:2014/06/20(金) 13:42:16.97 ID:fiYVjyLm
>>867
言われた事しかできません、という「ゆとり世代」かな?
しかたないから、面倒だけど疑似コードから実装コードへ落とし込む方法を
手取り足取り教えてあげよう
(実際に、要領の悪い新人さんを指導しているような気分になりつつあるw)

・イベント駆動を前提にした疑似コード#950であれば、
 OSやフレームワークからコールバックされた直後に
 readやreceiveシステムコールを発行してソケットから受信バッファに読み込み、
 それから#950の状態遷移関数 recv_acceptor をコールする
 (状態遷移関数内ではメモリ上のバッファだけを処理するから通信障害は無視できる)
 また、通信障害発生の判定はシステムコール発行直後の一ヶ所に限定できるから、
 その部分で適切に通信障害発生時のエラー対応処理を実装する

・スレッドのブロックを前提にした同期プログラミングの疑似コード#947では、
 TLVリーダのget操作の中のシステムコール発行時に通信障害発生を判定する
 ただし、get操作がコードの複数箇所に拡散してしまうから、
 例外を投げるとかC言語ならlongjmpで大域脱出するとかして一ヶ所にまとめ、
 その部分で適切に通信障害発生時のエラー対応処理を実装する
 (もちろんget操作がエラーリターンするよう変更してもいいけど、可読性は落ちる)
ネットワークプログラミング相談室 Port29
874 :835[sage]:2014/06/20(金) 13:51:26.94 ID:fiYVjyLm
>>870
そのとおりで、TCP通信がバイト・ストリームであることを理解していれば、
保証されないことは当たり前なんだけど、それを保証するコード設計なんて
面倒くさくてやってられない、というのが>>844君の主張

>>844のコードだと、保証処理を放棄して、通信エラーとして扱うつもりでいる
ネットワークプログラミング相談室 Port29
876 :835[sage]:2014/06/20(金) 14:56:31.68 ID:fiYVjyLm
>>875
まだ続けたいの?
しかたないね、新人教育を続けよう

・ここで扱っている受信メッセージ組立て処理の場合、
 メッセージ組み立て中の状態でreadが0を返せば、
 それは通信障害によるコネクション切断と判断する
 それ以外の状態、すなわち連続するメッセージ間で
 readが0を返した場合には判別できないから、
 単純に上位へコネクション切断を通知する

・上位のトランザクション処理ではトランザクション処理中に
 コネクション切断が通知されたなら通信障害と判断する
 ここで、トランザクションとは、たとえばHTTPサーバなら
 リクエスト受信開始からレスポンス送信完了までの期間を、
 SMTPであればHELLOコマンド受信開始からQUITコマンドに対する
 応答送信完了までの期間を指す
 それ以外の状態、すなわち連続するトランザクション間で
 コネクション切断が通知されたなら正常な通信終了と判断する

ビックリって、何を驚いているのかな?
もしかすると、こういった判定も面倒だからという理由で設計していなかったのね
まあ確かに、一般にネットワークプログラミングはエラー処理のかたまりだから、
慣れない素人さんや学生さんが最初にとまどってしまうのは無理もないのかな
ネットワークプログラミング相談室 Port29
878 :835[sage]:2014/06/20(金) 16:00:42.03 ID:fiYVjyLm
>>877
> 後出し仕様 wwww

もともと過去レスの疑似コードでは、
readシステムコールを発行する詳細コードを抽象化し、
TLVリーダやバッファといった用語を書いている
そして、その実装は各自で考えてもらえばいいと思っていたけど、
ID:JSi28Lkj君が「僕には実装方法が分かりません」と言い出したから
丁寧に教えてあげているだけだよ


> 下位レイヤーが上位レイヤーの状態を知ってるんですかあ?

知らないから、下位の受信メッセージ組立て処理では
  「単純に上位へコネクション切断を通知」して
  上位のトランザクション処理に判別を委ねると、
>>876で述べている
もう少し冷静になって文章を読んだほうがいいと思うよ
こちらでは技術関連は指導できても、日本語の読解能力までは面倒みれないから
ネットワークプログラミング相談室 Port29
884 :835[sage]:2014/06/20(金) 18:28:03.97 ID:fiYVjyLm
>>880
いや、通信障害という業界用語は、データリンク・レベルのエラー(回線障害)から
アプリケーション間プロトコルのエラーまで、幅広いエラーを含んでいる
そして>>876で書いたように、システムコールが正常終了しても
通信サービスとしてはエラーとして扱うケースもあるから、
read/recvのリターン値 -1 だけでは、すべての通信障害を検出できない


>>881
わかった、では自分は落ちるから、後の >>883(ID: JSi28Lkj)の世話、よろしくたのむ


>>882
君への最後のレスを返す

受信メッセージ組立て処理(下位)とトランザクション処理(上位)という
2個のモジュールがあるという構成を理解できていないのかな?
これ以上は面倒だし、後の世話は>>881にまかせたので、説明は止めとく
Swift part2
173 :デフォルトの名無しさん[sage]:2014/06/20(金) 20:38:23.94 ID:fiYVjyLm
プロフィールで名前/年齢/職業を公開していたけど、
すべて偽造というか架空の人物設定なんだよな?

実名だとしたら、自分なら恥ずかしくて生きていけんわ(w
データ構造,アルゴリズム,デザインパターン総合スレ 2
528 :デフォルトの名無しさん[sage]:2014/06/20(金) 20:49:13.82 ID:fiYVjyLm
>>521
ツッコミどころはいくつかあるけど、
軽いノリで書いた記事だと思えば些細な事柄だろうし、
よくできていると評価していいレベルだと思う

自分としては、FRPに関する非関数型言語プログラマ向けの
記事を見たのは初めてだったし、
現時点でのFRP入門からSwift/iOS上のアプリケーション開発へと
どう内容をつないでいくのか?という、
著者のプログラミングと文章執筆の能力に興味がある
もし最後までたどりつけたなら、評価も大絶賛へ変わるかもしれない
期待している
データ構造,アルゴリズム,デザインパターン総合スレ 2
531 :528[sage]:2014/06/20(金) 21:02:27.05 ID:fiYVjyLm
// 一つ書き忘れていた

どうせカキコするならこのスレじゃなくて
この板か新Mac板のSwiftスレにすれば
スレ住人の反応も違ったものになっていたと思う
Ruby 初心者スレッド Part 54
971 :デフォルトの名無しさん[sage]:2014/06/20(金) 23:19:57.65 ID:fiYVjyLm
>>969
そういえば IronRuby はどうしてたんだろと調べてみたら、
最新版 1.1.3 のリリースが2011年で Ruby 1.9.2 互換の
Visual Studio 2010 統合可能だった
"ironruby wpf tutorial" でググると、
英語だけどGUIアプリ開発の入門記事がいくつか見つかる
また、exe化については、(exerbの代わりに) irpack というツールを使うと、
.Net Framework または mono さえあれば IronRuby インストール無しに
実行可能な .exe ファイルを作れるみたい(ツール作者は日本人)
  https://github.com/kumaryu/irpack

自分は.Net開発環境は無知なんでこれ以上は分からんけど、参考まで


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。