Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    callmekohei
    @callmekohei_twitter
    ロンドン!ロンドン!
    KURATA Sayuri
    @sayurin
    anonymous recordでバグ見つけた
    issue書くか
    callmekohei
    @callmekohei_twitter
    ほうほう
    omanuke
    @omanuke_twitter
    F# Compiler Serviceを触ろうと定期的に思いながらまたその熱が盛り返してきましたが、いまFCSってどういう位置づけなんですかね。
    なくなる子?
    omanuke
    @omanuke_twitter
    つか前にも聞いた気が(´・ω・`)
    callmekohei
    @callmekohei_twitter
    FCSどんな感じなんだろう??知りたいです!!
    omanuke
    @omanuke_twitter
    F# Interactive`de
    F#Interactiveで、.NET Portableで作られたJson.NETのAPIをいじるものを参照しそれとは別にJson.NETを参照した後、スクリプト上でJson.NETのAPIをいじるものは動くけれど、portableのJson.NETをいじるコードはMethodNotImplementedExceptionが出てしまうのだけれど、適切な読み込ませ方だれかご存知ですか… bait&switchな絡みだろうけれど、参照の順序を変えたりしてもダメ(´・ω・`)
    callmekohei
    @callmekohei_twitter
    おまぬけさーん
    僕なんかが書くのアレですけど、
    前にfsxでjsonエラーで悩んだんですけど
    それだったらと思って書くのですが、
    あああ、
    callmekohei
    @callmekohei_twitter
    すいません、今飲んでるので手元にパソコンないんで帰ったら、書き込みます!
    すいません、、、
    callmekohei
    @callmekohei_twitter
    あああ
    でもよくよく、おまぬけさんの書き込み見てたら、違う気がしてきました、、、
    omanuke
    @omanuke_twitter
    自分のはどっちかいうとビルド周りの話なのでどうでしょう?
    で、とりあえずインタラクティブ関係ないですね。ライブラリプロジェクトでも実行時にエラー… identifierがうまく噛み合ってないのか?
    callmekohei
    @callmekohei_twitter
    Oh...
    し、失礼しました ^_^;;;
    callmekohei
    @callmekohei

    おはようございます!日曜の朝。グッドモーニングです!
    すいません。質問があるのですが、いつかデータがはいるキューに対して、いつ not IsEmpty かを知りたいです。
    下記のように書いて、うまくはいってるのですが、これよりいい方法があるような気がしてます。
    callmekohei
    @callmekohei
    // キューを作成
    let cq = new ConcurrentQueue<DataReceivedEventArgs>()
    
    
    // とあるクラスで標準出力を取得
    do ps.OutputDataReceived
      |> Event.add ( fun (args :DataReceivedEventArgs) ->
        cq.Enqueue(args) |> ignore
      )
    
    
    // (知りたいのはここ!)
    member this.sendRecieve(message:string) :string =
    
      // ( その1)emptyのときに永遠に回り続けるので
      // 負荷がたかそうな気がする
      // (その2)タイムアウトの方法を知りたい
      while cq.IsEmpty do
        ()
    
      snd ( cq.TryDequeue() ) |> fun x -> x.Data
    callmekohei
    @callmekohei
    ほむむむむ
    色々やってみましたが、これで良さげな感じです!
    member this.sendRecieve (message:string)  :Async<string> = async {
    
        let initialTime = System.TimeSpan.FromMilliseconds(10000.)
        let checkTime = 300
    
        cq.Clear |> ignore
        ps.StandardInput.WriteLine(message)
    
        // 標準出力の初期出力はなんとなく遅いので
        // 多めに待ってあげる
        let sw = new System.Diagnostics.Stopwatch();
        sw.Start();
        while cq.IsEmpty do
          if sw.Elapsed > initialTime then
            raise (System.ArgumentException("===== foo =====") )
          ()
    
        // cq.Countが300ms以内に変化がなければ
        // 全て出力されたとみなして値を返す
        let rec foo () =
          let mutable currentCount = cq.Count
          Async.Sleep checkTime |> ignore
          if currentCount = cq.Count then
            snd ( cq.TryDequeue() ) |> fun x -> x.Data
          else
            foo ()
    
        return ( foo () )
    
      }
    マタリロさんてきに InterLocked 使いたかったのですが、実装できませんでした・・・
    KURATA Sayuri
    @sayurin
    Async.Sleep checkTime |> ignoreだと実際にはsleepが実行されてませんねぇ…
    callmekohei
    @callmekohei
    さゆりんさ〜ん ╰(´︶`)╯♡
    ほむむむ
    そ、そうなんですね・・・
    やっぱり、Thread.Sleep ???
    KURATA Sayuri
    @sayurin
    ConcurrentQueueだとスレッドセーフだけど変更通知がなくて、INotifyCollectionChangedを実装したコレクションだと変更通知があってもスレッドセーフじゃないからなぁ…
    callmekohei
    @callmekohei
    そこ!そこなんですよ!もうほんとに・・
    まぁでも、すれっど〜すれっど〜。スレッド安全が一番大切です!
    callmekohei
    @callmekohei
    、、。do! 必要だった・・・。けど動かない・・・
    KURATA Sayuri
    @sayurin
    まぁConcurrentという概念自体、入力待ちを行うのが間違いですからねぇ…
    callmekohei
    @callmekohei
    ひっ
    そ、そうなんですね。。。
    callmekohei
    @callmekohei
    へたれなので、async なしにしました!
    callmekohei
    @callmekohei
    とりあえず標準出力とれたので喜びのポーズ!
    IMG_2219.jpeg
    omanuke
    @omanuke_twitter
    よく分からんけどそれこそMessage boxをつかへばいいのでわ
    mailboxprocessorだった。だいぶ違う(´・ω・`)
    callmekohei
    @callmekohei_twitter
    アクターですよね。それやってみたんですけど、うまくいかなかったのですが、もう一度やってみます!ありがとうございます😊
    callmekohei
    @callmekohei
    やっと vimfsharp 書くのまともになってきた感じ・・・
    callmekohei
    @callmekohei
    Untitled.gif
    fsclsp のおかげです!
    callmekohei
    @callmekohei
    Vimlsp使うやり方、書きました!