Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    callmekohei
    @callmekohei
    要点はこうです
    local で build した exe
    
    TravisCIで build した exe
    
    に差異がでる
    このようにでます!(上がローカルでビルド、下がトラビスでビルド分です)
    Screen Shot 2019-03-17 at 20.37.51.png
    callmekohei
    @callmekohei
    環境はこんな感じです
    ローカル
    ProductName:    Mac OS X
    ProductVersion:    10.14.3
    BuildVersion:    18D109
    git version 2.20.1
    GNU bash, バージョン 5.0.2(1)-release (x86_64-apple-darwin18.2.0)
    Copyright (C) 2019 Free Software Foundation, Inc.
    Mono JIT compiler version 5.18.0.240 (tarball Tue Feb 12 15:18:28 GMT 2019)
    トラビス
    Operating System Details
    ProductName:    Mac OS X
    ProductVersion:    10.13.3
    BuildVersion:    17D102
    Git version
    git version 2.18.0
    bash version
    GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17)
    Copyright (C) 2007 Free Software Foundation, Inc.
    Mono JIT compiler version 5.18.1.0 (2018-08/9cb3348c311 Thu Mar 14 15:35:47 PDT 2019)
    やってることは単純で、下記のように必要なライブラリをナゲットしてコンパイルしてるだけです
    source https://www.nuget.org/api/v2
    generate_load_scripts: true
    nuget FSharp.Core
    nuget fsharp.compiler.service
    nuget newtonsoft.json
    nuget persimmon.script
    callmekohei
    @callmekohei
    $ fsharpc -foo.fsx -nologo --simpleresolusion --out:foo.exe
    あれ?自分で書き込んでて、なんか気づいてしまいました・・・ (^_^;;;
    callmekohei
    @callmekohei
    たぶんこれな気がしてきました!
    callmekohei
    @callmekohei
    できました!!!!
    FSharp.Core.Dllをローカルと出先(トラビス)で揃えたらいけました!
    おさわがせしました(汗、、、
    Screen Shot 2019-03-17 at 23.10.36.png
    Yukitoshi Suzuki
    @yukitos
    https://skillsmatter.com/conferences/10869-f-sharp-exchange-2019
    もしF# eXchangeに参加したい方がいましたら、20%割引クーポンを貰いましたので連絡ください。クーポンをお知らせします。
    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
    さゆりんさ〜ん ╰(´︶`)╯♡