サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
円安とは
xuwei-k.hatenablog.com
scala-nativeの0.1がリリースされる(maven centralにはもう上がってる)らしいです。 scala-nativeとは、ScalaをJVMではなくLLVM使ってJVM以外で動かすやつです。 https://github.com/scala-native/scala-native さて、というわけで、scalazを早速対応させました。 https://github.com/scalaz/scalaz/pull/1322 そのためのクロスビルドの説明や、対応させた感想をかんたんにメモしておきます。 Scala界隈では、すでにscala-jsとクロスビルドしてるプロジェクトがいくつかある => scala-jsとjvmとnativeの3種類でクロスビルドするためのsbt pluginがすでに用意されている https://github.com/scala-native/sbt
これはScalaアドベントカレンダー Adventar版の4日目です。 http://www.adventar.org/calendars/1492 3日目の記事 finagle-toggleでデプロイとリリースを分離する 気づいたらだいぶ増えたので、一旦整理してみようという気持ちになりました。 前提の説明 あくまでこのblog書いている時点の情報 権限あるけど、たいして貢献できてないやつ含む 逆に、権限ないけれど、pull reqすごく送っていて、コミット数かなり上位のやつは他にも結構あるが、それはひとまず含まない 別のorganization作ってるとしても、自分がやりだしたライブラリはひとまず含まない といっても、そういうのはmsgpack4z, scalaprops程度か? "自分のコミット数"が多い順に並べた すごく小さいライブラリは書き忘れあるかもしれない https://gi
書いた理由やモチベーションは去年と同じなので、去年の説明見てください。 http://d.hatena.ne.jp/xuwei/20151015/1444924357 まだ、微妙に随時更新するかもしれないです。 どっちからトラバース? - Stephen Compall http://2017.scalamatsuri.org/ja/candidates/StephenCompall_1/ Scalazコミッター ekmettの同僚 型とか色々詳しい。 http://typelevel.org/blog のこの人の書いたやつ見ると面白いよ (今回はそういう話じゃないが) 初めてのゲームづくり in Scala Native - Denys Shabalin http://2017.scalamatsuri.org/ja/candidates/DenysShabalin_1/ scala-n
結論から言うと、Scalaでも以下と同じように頑張るようになるんやで、なので2.12以降はSAMかつ純粋なシングルトンにできる場合は、明示的にnewしないほうが効率いいかもしれないよ、という話 https://twitter.com/orekyuu/status/790753654114357248 このプログラムを実行したときの出力はなんでしょう?1. truetrue2. falsefalse3. falsetrue4. truefalse URL 2016-10-25 12:15:37 via Twitter Web Client @orekyuu falsefalseになると思いきやラムダ式の方だけ消えずに答えは4になります URL 2016-10-25 12:23:37 via Twitter Web Client to @orekyuu @orekyuu ラムダは内部でキャプチ
https://webpush-scala.herokuapp.com 世間に、JavaScript(Node.js)で全部やるサンプルはいくつかあったけど、(コレ作った時点で)JavaやScalaのサンプルがほぼ見当たらなかったので。 https://github.com/xuwei-k/webpush-scala うまくいくと、以下のような感じで、右上にぴょこっと出ます webpushといえば、個人的に身近なところ(?)だと、gitterのwebのクライアントとかでしょうかね。 webpush自体の説明は、あまり詳細な説明しませんが(ググったほうが正確でわかりやすい説明あるのでは)、一応適当に簡単に説明すると、 最近標準化されつつある*1やつで、コレ書いてる2016年9月時点では、ChromeとFirefoxしか対応してません。 一度登録すれば、ブラウザさえ開いてあれば、そのwebペー
最近いろいろあってあまりblog書けてないです、こんにちは。 そんなことはどうでもいいですね、さっさと標題の話に入りましょう。 10ヶ月くらい前に、以下のような記事書きましたが Scalaでtraitにメソッド追加するとバイナリ互換壊れるけどabstract classだと壊れないという例 Scala2.12で、Java8のinterfaceのデフォルトメソッド機能使うようになったら変わるんでしょうか。 最近のScala2.12のM4やM5あたりから、traitでJava8のデフォルトメソッド使ってエンコードするようになってきたので、改めて、以前使ったプロジェクトをScala 2.12.0-M5に変えて試してみました。 結論としては、(少なくとも以前実験したパターンでは) バイナリ互換壊れませんでした!!!めでたい??!!! *1 https://github.com/xuwei-k/bi
kafkaの基本的な概念は理解してる前提で細かい説明省略して書くので、ご了承ください。 前提として 旧consumer (JavaではなくScalaで書かれてるやつ。新consumerはよく調べてない) version 0.9.0.0(旧consumerなら他のversionでも同じ気はする) partition.assignment.strategyはデフォルトのrange あるtopicに関して、partition数よりconsumer数が多い(実際わりとそれが普通?以下で説明) という場合です。まず 「あるtopicに関して、partition数よりconsumer数が多い」とは、多い余ったconsumerは単にconsumeせずスタンバイ状態にしたいだけです。 スタンバイ状態にしたい、というか、あるtopicに関してpartition数より多いconsumerは、完全に同時には動か
https://github.com/xuwei-k/wartremover/commit/48046a 数日前だけど、なんとなく記念に貼っておく @gakuzzzzというnull安全ではない実装をコンパイルエラーにするアノテーションが求められている? 2016-04-15 22:29:41 via Twitter for Android to @gakuzzzz @BlackPrincessW VM毎クラッシュするとかの方がいいかも 2016-04-15 22:31:15 via Twitter Web Client to @BlackPrincessW @gakuzzzz @BlackPrincessW それバグってると思われるだけww 2016-04-15 22:35:31 via Twitter for iPhone to @gakuzzzz .@seratch_ja @gakuz
showのほうは2.11.0から(?)あって、printは2.11.8から Neat trick I just discovered: add `// show` in the Scala REPL to see the actual code that gets compiled. 2016-03-30 23:19:15 via Twitter for Mac @jaguarul starting 2.11.8, add `// print` and hit tab, it will show the de-sugared version of your code (without the REPL's wrappers) 2016-03-31 00:38:16 via Twitter Web Client to @jaguarul scala -Xprint:typer などとすれば、
めでたい https://github.com/scala/scala.github.com/pull/509 https://github.com/scala/scala/pull/5064 JavaConvertersのほうはたぶん残ります。 ConversionsとConvertersの詳細な違いはググってください。 一言で言っておくと、非推奨になるJavaConversionsのほうは、暗黙に変換されすぎて意図しないわかりづらいバグを生む可能性があるので、いろんなプロジェクトや規約でも、わりと避ける傾向が大昔からありました。 たとえば、こういう罠 https://gist.github.com/xuwei-k/8870ea35c4bb6a4de05c (仕事でも、少なくとも新規コードでは使うな、みたいなことを個人的に言っている) これでもっと積極的にJavaConversions使
と作者も言ってる(?)ので、そうしましょう。 Joda-Time now in maintenance mode as Java 8 usage rises. Usage questions at Stack Overflow: URL URL 2016-02-22 08:09:02 via TweetDeck https://github.com/JodaOrg/joda-time/blob/84aeb139de0149dd13a022120890985df5f1080a/.github/pull_request_template.md https://github.com/JodaOrg/joda-time/blob/84aeb139de0149dd13a022120890985df5f1080a/.github/issue_template.md ちなみにnscala-timeに(j
終わった直後疲れて書く気力がなかったので、今さらながら書く。 時系列で振り返り gakuzzzzさんのRefactoring in Scala ぶっちゃけたいして(すでに大体知ってることなので)聞いてないというか、これに限らず全体的に自分の資料作りなどしていて、発表はあまり聞いてない りりろじさんも似たようなこと言ってたけど、tagged typeやvalue classに関して雑なツッコミだけ入れた tagged typeもvalue classも両方デメリットあるので、パフォーマンスがアレなとき以外は基本素直に普通のcase class使えばいい、とだけ覚えておけばいいと思います #ScalaMatsuri 2016-01-30 10:26:37 via Twitter Web Client ChrisさんのScalacの深みへダイブ を聞こうとしたが、立ち見になってしまって、立ち見疲
明らかに祭の1日目の一番の収穫でした。 scalatest作者とは、Bill Vennersさんです。コップ本の共著者だったりもする方です。 https://github.com/bvenners まず、Scala祭の半年くらい前(?)の2015年6月頃の話 twitterで急にDM来たり、eed3si9nさんに仲介してもらってメールのやりとりする 具体例にはCogen(Coarbitrary)について聞かれて、scalapropsの作成経緯含め答えた覚え それで、その返信で scalapropsの一部取り込むことも考えてるんだけど、その場合のライセンスが(ry https://github.com/japgolly/nyaya も試したり、さらにscala.js対応もやろうとして 現状こんな感じでscalatest内にGenerator入れて試してるんだけど みたいな内容でした。たぶん。
https://github.com/sbt/sbt-protobuf 経緯の解説をする 最近何度か書いているように、ScalaでprotobufやgRPCやってる protobufのコード渡すとScalaの生成後のソース返すサイトとAPI作ってる ScalaからScalaPBというsbt plugin使ってProtocol Bufferを使う方法についてのドキュメントを書いている gRPCの公式サンプルをScalaに翻訳した ↓ その自作ドキュメント http://xuwei-k.github.io/scala-protobuf-docs/ にも説明書いてあるが、sbt-scalapbというpluginが、sbt-protobufというpluginに依存しているという、少し変わった構造 ↓ ScalaPBをかなり使って関わってるのだが、sbt-protobufのほうのissueやpull
タイトルの通りのものをやってみたので解説を書きます。 前提として、とても内部実装に依存した話なので、すぐ動かなくなる可能性があります、ご注意ください(play2.4.6の情報) 解説はいいから、コード見せろ、という人はこちらご覧ください https://github.com/xuwei-k/dependency-graph/commit/9d2a7e3ba3 http://dependency-graph.herokuapp.com さて、リフレクションの説明に入る前に、そもそもplay2.4には、routesのurl一覧取得メソッドがあります。 router.Routes.documentation で Seq[(String, String, String)] な (httpメソッド、url、Scala上の実装のclass名 + メソッド名) のTuple3のSeqが返ってきます。 こ
個人的な感覚として大きい転職事案がいくつかあったので書く Travis Brownさんがtwitterやめた https://github.com/travisbrown https://meta.plasm.us/posts/2015/10/13/goodbye-twitter/ 2015-10-13 twitterでfinagleとかfinchとかのOSSやってた人 猫のコミッター shapelessにも原作者並にかなり詳しい Scalaのマクロにもコミッター並にかなり詳しい stackoverflowで誰よりもscalazのとかの質門に答えてる人 最近argonautをforkして色々改善したイケイケな(?)Jsonライブラリ作り始めてる https://github.com/travisbrown/circe twitterのレイオフのタイミングと完全に一致してたので、たぶんそうい
自分の中では、これはわりと常識になっている感があるが、やってくれない人多いので、あらためて説明を書いてみる。 前提として、プログラミング言語関係ない話です。 あと、travis-ciにも限らない話です。が、全部ひっくるめてなんて呼べばいいかわからないので(オンラインCIサービスとか?)travis-ciのような何かを意味的には全部含めて、以下単にtravis-ciといいます。 これから書くことは 「プロジェクトのコミッター側のレビューのコストの減らすため」 の話です。プロジェクトによっては 「中途半端な状態でもどんどんpull reqしてもらっていい(丁寧に対応してくれる)」 とか、そもそもOSSじゃなく仕事だったり、pull reqの種類(議論するために中途半端な状態でわざとpull req)によっては当てはまらない場合があるかもしれません。 さて、本題に入ります。一言で言うと 「pul
これはScalaアドベントカレンダー2015(adventar版)の2日目です。 http://www.adventar.org/calendars/904 1日目はkuchitamaさんの"解剖!シェアウィズPlayプロジェクトを構成するライブラリ"でした。 さて、本題というか、基本このURL貼り付けるだけで終わりなのですが http://xuwei-k.github.io/scalaz-docs/ https://github.com/xuwei-k/scalaz-docs なんとなく書き始めました。どういう構成にするとか、いつまでにどれほど書くのか、などは全部未定です、気分次第です。 飽きるまで地道にやります。 pull reqも受け付ける?けど、まだ構成ぐちゃぐちゃだし、自分でもどうしたいのかよくわからないので、(細かいミスの指摘以外は)もう少し形になってからpull reqもらっ
gitbookやtutやtravis-ciの細かい説明はしないので、各自ググるか、公式サイト参照してください https://www.gitbook.com/ https://github.com/tpolecat/tut tutは、ドキュメント内のScalaのコードが、コンパイル可能かチェック、(REPLでの)実行、実行前のコードを実行結果含めたものに置き換えてくれて成果物にできる、みたいな素晴らしいやつです。 成果物のサンプルはこれです http://xuwei-k.github.io/gitbook-sample/ https://github.com/xuwei-k/gitbook-sample わざと試行錯誤したcommit残してあります。あと、色々な経緯によりtextlintというツールなど色々設定がされいますが、そこも気が向いたら後で説明したいですが、今回は説明しません。とい
以前いくつか関連したもの書きましたが 本物のFree MonadPlus? Free MonadPlusはFree Monad TransformerにListを当てはめたもの? たぶんFree MonadPlus出来た気がします。 https://github.com/scalaz/scalaz/pull/1056/ そして、scalazにFreeTという (stack overflowしない) Free Monad Transformer 入ったの解説したことなかったですね。 https://github.com/scalaz/scalaz/pull/1035 purescriptのやつ真似したら出来たらしいです。自分も説明できるほどに理解できてません。scalazのものが、微妙にpurescriptのものと違う気がするのですがなんなんでしょう? というわけで、解説の代わりにいくつかリ
https://github.com/ghc/ghc/commit/8c80dcc166e4a083086d8b2 めでたい 簡単に説明しておくと https://wiki.haskell.org/MonadFail_Proposal HaskellのMonad型クラスには、failというdo構文でパターンマッチ失敗した際に使われるメソッドがあり、昔から 「これ間違いで、Monadにあるべきじゃないよね」 みたいな話があり、ようやくその問題が(型クラスを分けることによって)解消された、というわけです
https://github.com/scalaz/scalaz/issues/1029 誰も言い出さなかったら、もう7.2.0のfinal出すのは、Scala2.12.0のfinalがでる来年の春か夏頃?でもいいかなぁー、せめて2.11.8でて「 コンパイルオプション有効にして、いっそのこと7.2.0ではJava7以下の対応も切ろうぜっ!」って提案してからでいいかなー、と思っていたけど、 そもそも7.1.0のfinal出たのが1年3ヶ月くらい?前なので、逆に誰かがいいだせば、いつ出してもいい頃かな―と思っていたところに、話題出してきた人がいて、runaroramaさん(わりと主要コミッターの一人)が賛成してるので、特に反対意見なければ11月くらい?か、少し遅れたとしても年内には7.2.0のfinal出しちゃってもいいかなー、という気持ちになってきました。 自分がリリース権限持ってるので、
どーも。Scala祭実行委員なのか、実行委員ではないのか、よくわからない立場な人です。 個人的な事情を書いておくと、去年手伝った関係上、今年も一応実行委員のチャットなどには入ってるけど、あまり手伝えてないので、心苦しいのと実行委員の仕事やらないといけない責任から逃れるため(?)と、もう結局あとから多少手伝うことになったとしても個人スポンサー的な意味合いを込めて、普通にチケット買いました。 というわけで、実行委員の立場というよりは、これは一個人として勝手に書いてます。 さてそれはどうでもいいとして、皆さんご存じの通り?今年のScala祭は、招待枠は全くなしでCFPで投票する感じになりました。詳細は以下 「グローバルな技術カンファレンス」と「日本のコミュニティの交流」の両立 - ScalaMatsuri運営ブログ] というわけで、これ書いてる時点では、CFP締め切られ、投票開始にむけて絶賛準備
ScalaのWebフレームワーク事情 2015年版 - たけぞう瀕死ブログ Scala界隈のWebフレームワークやJsonライブラリは良くも悪くも混沌を極めている(?)わけですが、それにしても竹添さんが紹介してるやつだけでは個人的に不公平感というか、混沌としている感が全然伝わらないと思ったので、全部に詳しい訳ではいですが、自分なりに現状を書きたくなったので紹介しようと思います。 どうせ全部を本当に知り尽くしている人なんでいないので、これはこれで不公平というか偏った見方にもなってるかもしれませんが、そんなこと言ってたらこういう記事をいつまで経っても書けないので、思い切って書くことにしました。 いつもの注意書きですが、あくまでこれ書いてる2015年10月現在の状況であり、1年程度経過しただけで状況は劇的に変化する可能性あるので、ご了承ください。 そもそも、あまりこういうの書きたくないのは、わり
"OSSコミュニティがある日突然壊れたときにどうすればいいか" という発表をしてきました http://xuwei-k.github.io/slides/oss-community/#1 http://connpass.com/event/19690/ 端的にいえば「論文を頑張って読もうと思ったきっかけ」がそれです。それをハッキリ自覚した数ヶ月前に以下のようなtweetしました 猫騒動疲れたので、そんなことがあっても動じない圏論力か何かを身につけて、有無をいわさない正しい知識で殴りつけられるようになろう、もうそれしかない、みたいな、よくわからない決意を最近固めつつある 2015-08-04 01:53:58 via Twitter Web Client 自分でもよくわからないし、あきらかに無理やりなこじつけな感じはあるけど、無理やりな理由でもそれをなにかエネルギーに変えて頑張れるなら、それ
json4sでせらさんが頑張ってくれるらしいけど、どこにも(たぶん英語でも)まとまった知見ないはずなので、とりあえずscalazの知見をもとに、まとめておく 最新開発版のbranchをつくってそちらをメインにしておく それ以外のやり方もありえる(scala本体)が、たぶん開発版(バイナリ互換維持しないほう)をメインにしておいたほうがよい。 具体的には、json4s 3.3ブランチがバイナリ互換維持するなら、3.4か4.0ブランチを作っておく scalazだったら、これ書いてる現在 series/7.2.x が開発用 series7.1.x がバイナリ互換維持しつつメンテする用 上記のbranch戦略をREADMEか何かに書いておき、pull reqは基本的には開発branchのみで受け付ける(両方で無造作に受け付けるとややこしくなるので) 万が一、間違って互換維持するほうのbranchで、
ということをここ2、3ヶ月やっててわりと続いてるのでおすすめです。論文じゃなくて普通の英語の本でもいいけど。 論文自体を読もうと思ったきっかけや、具体的にどうやって論文探して、どういう論文読むのか?みたいな話はべつの機会に書くとして、なにはともあれ論文読むのは英語の勉強の為でもあるわけです。 そもそも英語の勉強するには、単に読むより、リスニングとかその他色んな方法でやってみたほうがいいですね?たぶん。 CDくっついてる教材みたいなのを何冊か買って勉強してみたこともあるんですが、内容が興味あるものでないせいか、なんとなく微妙な感じになるので、色々試行錯誤した結果「だったら論文読んだほうがいいだろ」となりました。 あと、(比較するの若干おかしい?が) そういうやつは、そもそもCDの音声をPC経由でiPhoneやiPod的なものに入れる事自体面倒なので、論文ダウンロードして読み上げてもらうほうが
よく「どうやって情報手に入れてるの?」みたいに聞かれますが、そんなの、ひたすら時間かけてgithubみたりメーリングリスト読んだり最近ではgitterの会話読んでるに決まってます。 どうやって(How)ではなく、なぜ(Why)、自分がそんなことをするようになったのかを、あらためて書いてみる気になったので書いてみたいと思います。 書こうと思ったのは、Howだけ書いても、Why書かないとあまり意味ないと思うことが多くなったからですかね。(この件に関しては) 無責任に大雑把にいうと、(どんな理由であれ)情熱みたいなものがあれば、Howは自然に身につきます、たぶん。 なお、少し長くなるし、自分語りっぽくなるし、いつも書いてるようなものとは少し方向性が違い、具体的なすぐ役に立つ技術的な内容*1は基本出てこないので、期待してるものが違うと思う人は、ここで読むのやめたほうがいいと思います。 どれほどコー
挙げようと思えばいくらでも挙げられるとは思うけれど、とりあえず自分が思ったものをいくつか挙げておきます。 Typeclassopediaという型クラスを色々紹介した有名な素晴らしいやつがあるのですが、それ少し古いし、もうちょっと紹介してもいいような型クラスが触れられてないぞ?というのを前から思っていたので、それを簡単に書いてみるという話。 https://wiki.haskell.org/Typeclassopedia http://snak.tdiary.net/20091020.html 今回挙げてないのが重要でない、これ以外知らない、というわけではなく、あくまでもなんとなくな基準です。 (好評だったら、続編を書く? or 他の人が書いてくれてもいい?) 以前こんなtweetしたけど、まぁやってくれそうな人いないし、言い出しっぺの法則ということで。 「typeclassopediaに載
次のページ
このページを最初にブックマークしてみませんか?
『xuwei-k's blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く