ブックマーク / xuwei-k.hatenablog.com (12)

  • 今までありがとうTravis CI、さよならTravis CI - xuwei-k's blog

    しっかり調査してないですが、こういったCIサービスがほぼ存在しない時期にほぼほぼ最初に登場して、一時期明らかにデファクトスタンダードだったと思うので、昔からOSS活動している人ほど、とても多く利用してお世話になっていたと思うので、そういう人であればあるほど、この状況は、怒りではなく、悲しいというか残念というか、辛いと思うんですよね・・・。 今までありがとう・・・。 長年Travis CI使ってきたので、GitHub Actionsによって潰される(のかどうなるのかわからないけど)、の可愛そう、という気持ちが若干あるけど、とはいえ、こういうのよくある話な気はするな…— Kenji Yoshida (@xuwei_k) 2020年10月7日 買収されて方針変わったのかなと感じるところもありますし、OSSプロジェクトが無料で使っていても会社としては辛いのではという気もするので今までの感謝の気持ち

    今までありがとうTravis CI、さよならTravis CI - xuwei-k's blog
  • 1443641775

    よく「どうやって情報手に入れてるの?」みたいに聞かれますが、そんなの、ひたすら時間かけてgithubみたりメーリングリスト読んだり最近ではgitterの会話読んでるに決まってます。 どうやって(How)ではなく、なぜ(Why)、自分がそんなことをするようになったのかを、あらためて書いてみる気になったので書いてみたいと思います。 書こうと思ったのは、Howだけ書いても、Why書かないとあまり意味ないと思うことが多くなったからですかね。(この件に関しては) 無責任に大雑把にいうと、(どんな理由であれ)情熱みたいなものがあれば、Howは自然に身につきます、たぶん。 なお、少し長くなるし、自分語りっぽくなるし、いつも書いてるようなものとは少し方向性が違い、具体的なすぐ役に立つ技術的な内容*1は基出てこないので、期待してるものが違うと思う人は、ここで読むのやめたほうがいいと思います。 どれほどコー

    1443641775
  • 関数プログラミング交流会という勉強会で"Scalaにおける関数型並列並行プログラミング"という話をした - xuwei-k's blog

    ほぼ資料貼り付けるだけのエントリ。広く浅く話しただけで、それほど新しい情報とかあるわけではないです http://connpass.com/event/16193/ http://xuwei-k.github.io/slides/functional-parallel-concurrent-scala/#1 ゴチうさのくだり、それなりに笑い起こっていたけど、もう少し笑いとれるかと思ったけどそれほどでもなかった(えっそこ ちなみに、べつにすごくゴチうさ好きとかそういうわけでもないです。

    関数プログラミング交流会という勉強会で"Scalaにおける関数型並列並行プログラミング"という話をした - xuwei-k's blog
  • 時代はリテラルレベルプログラミングだ! - xuwei-k's blog

    リテラルレベルプログラミングという用語が存在するのかは知りませんが、べつに厳密に定義せずなんとなく使います。まぁこれ https://github.com/okomok/lity の説明が "Exploring literal-level metaprogramming" なので、そこから拝借という感じですかね。 さて、scalaでは、StringやIntのリテラルでfinal valで定義すると、型自体が特別扱いされる(?)という、知られざる仕様があります。まずは以下のgist御覧ください finalを付けずに val a = "a" だと型は a: String = a なのに対して、final valにすると b: String("b") = b というよくわからない型になってますね。そして def foo(c: b.type) と定義すると、foo("bar")と渡すとコンパイルエ

    時代はリテラルレベルプログラミングだ! - xuwei-k's blog
  • Scalaでクラス図を表示するsbt plugin作った - xuwei-k's blog

    コードのベースは、もう4年くらい前 に書いたやつ持ってきただけ https://github.com/xuwei-k/sbt-class-diagram 使い方は これ http://www.graphviz.org/ をローカルにインストール(内部でこれをコマンドで呼び出すので必須) 当は、dotというグラフの記述のための単純なテキストベースの言語から、pure javaSVGに変換したかったのだけど、ライブラリなさそう(?)なので断念 手動でレンダリングすれば不可能ではないが、nodeの配置が*1汚くなるので、graphvizに頼ることに githubのREADMEに書いてあるとおりに、addSbtPluginをproject/plugin.sbtに追加と、build.sbtにsetting読み込ませる sbtのshellから、 classDiagram "クラス図に含めたいcla

    Scalaでクラス図を表示するsbt plugin作った - xuwei-k's blog
  • Swiftのおもしろ仕様と、Scalaの特殊な(?)構文 - xuwei-k's blog

    以下の、Appleが最近発表したSwiftという言語の、面白い(?)仕様が話題になってますが、 This playground should illustrate why the immutability behavior of #Swift is *terrible*: URL 2014-06-10 19:31:56 via Twitter for Mac 大事なことは全部MLが教えてくれた 〜 AppleSwift の mutability 周りの件を理解する これ見て、なんとなくScalaの "とある構文" を思い出したので書いてみる。 自分の理解では、要するに 「b.append(5)というのが、単なるメソッド呼び出しとかではなく、コピーして、追加して、かつ元の変数b自身の参照を書き換える(再代入する)」 という挙動をするあたりが、(他の言語でこんな動きするのがないので)、み

    Swiftのおもしろ仕様と、Scalaの特殊な(?)構文 - xuwei-k's blog
  • 関数型ガチ勢から見たScalaのアンチパターン - xuwei-k's blog

    Scalazのコミッター、もしくはScalazを使いこなしているような関数型ガチ勢からみると、ある程度以下の様な共通認識*1がある気がする(けどあまり知られていない?)ので、ちょっとまとめてみました。 関数型ガチ勢ではない一般のScalaユーザーの間では、あまり疑問も持たずにそれなりに使われているものが多い気がします 個人的には、以下で紹介するものを「絶対使うな」とも思いません。*2が、しかしこれらのものに対して「アンチパターンとは言わないけど、デメリット多いし代替手段あるよね」という意見の人が少なすぎる気がするし、もうちょっとその辺りの議論がされるべきではないかなぁーと思い、あえて「アンチパターン」と言ってみました。 タイトルにScalaを入れましたが、厳密にはScalaに限らない話だと思います。ただし、「JVMで動く静的型付き関数型言語」という状況により、ある程度Scala特有の状況な

    関数型ガチ勢から見たScalaのアンチパターン - xuwei-k's blog
  • precogがソースコード公開した件 - xuwei-k's blog

    これ↓ https://github.com/precog/platform Precogって何?誰?って思うかもしれませんが、Scala界隈では有名で、知らない人は、まず以前自分が書いたblog見てください PrecogIOって会社に、Scalaのスゴイ人がいっぱいでヤバイ こっちもprecogの話でてくる↓ northeast scala symposium 2013 の video を見た感想 このtweet↓ It's done. Precog, an advanced NoSQL analytics engine written in 100% Scala, has just been open sourced. Enjoy! URL 2013-10-02 08:22:33 via Twitterrific for Mac が、現時点で130くらいretweetされてることからも

    precogがソースコード公開した件 - xuwei-k's blog
  • Scalaにおける細かい最適化のプラクティス - xuwei-k's blog

    列挙順自体はとくに意味ありません。あと「どの最適化がどのくらい速くなるのか?」を詳細に計ったことはないですし、「原理的にこうなってるから(ry」というのを説明するに過ぎません。中には「JITで無意味になるようなどうでもいい細かすぎること」も書いてありますし、最適化のトレードオフとして失うものもあるので、そのあたり自己責任でお願いします。当に最適化が必要とされる場合は、以下のものを無闇に実行するよりまず計測したほうがいいのは、言うまでもありません。*1 1. private[this]をつかえ scalaのvalやvarは、private[this]にしたときのみ、直接のフィールドアクセスになります(それ以外ではメソッド呼び出し)。シングルトンのobjectの場合も同様です。private[this]をつけられる場合はできるだけつけましょう 2. なんでもかんでもListをつかうな 最初の

    Scalaにおける細かい最適化のプラクティス - xuwei-k's blog
  • Functional Programming in Scala の感想 - xuwei-k's blog

    http://www.manning.com/bjarnason https://github.com/pchiusano/fpinscala 一年ちょっと前にblog書きましたが Scalaz の作者の人達が書いた "Functional Programming in Scala" というがでるらしい 14章のぞいてほぼ完成したので、感想書きます。MEAP v9の時点です。ちょっと長いですよ。 まず、全体を通していえるのが、Scalaではなくあくまで関数型プログラミングのだということです。それは文の最初の方にも書いてあります。 このだけ読んでも、Scala自体にはあまり詳しくなりません。Scala自体については、必要最低限の文法だけを随時説明してます。 逆に、(英語が読めるなら)Scalaの知識がほぼゼロだとしても、大体読めるのではないかと思います。 また、Scalazの

    Functional Programming in Scala の感想 - xuwei-k's blog
  • 退社します(ワラビモチから2年) - xuwei-k's blog

    この度、1年10ヶ月ほど勤務した会社を退社*1することになりました。会社や一緒に働いた仲間達への謝辞の気持ちを表すとともに、今までのプログラマとしての人生を振り返って自分語りをしてみる、いつもと違った少し長めのエントリです。なお、ここに書かれていることは個人の見解であり、所属する(していた)組織の意見を代表するものではありません。 文学部書道学科卒という、ちょっと変わった学部をでてすぐに、新卒で、ある会社に就職しました。今年で社会人4年目の1986年生まれです。 もともと、学生時代にプログラミングはほとんど経験がなく、高校から大学はずっと書道に明け暮れる日々でした。*2 初めてプログラミングを勉強したのは大学3年の就職活動が始まる少し前です。文学部書道学科という経歴では、高校や中学の教師になるくらいしか学部時代の経験を直接活かすことができる道がなく、教師になる気がなかった自分は、なんとなく

    退社します(ワラビモチから2年) - xuwei-k's blog
  • AndroidのfindViewByIdで型推論(?)させて、ちょっとだけ記述量減らす方法 - xuwei-k's blog

    Javaの話です。 Androidだと、普通xmlで画面を定義して、そのインスタンス生成するためにfindViewByIdというメソッドを使う。かなり多く使う。xmlで定義する時点で、型は(android.view.Viewのなんらかのサブクラスで)決まっているわけですが、それが必ず android.view.View 型で返ってくる。で、これ使いにくいし、ちょっと工夫すれば微妙に記述量減らせるんじゃないか?っていう話。 たとえば、大体のサンプルを見ても*1 Button myButton = (Button) findViewById(R.id.my_button); とか ListView view = (ListView)findViewById(R.id.my_view); となって なんで、型を2回も書かないといけないの?Scalaだったら、Typed Resources といっ

    AndroidのfindViewByIdで型推論(?)させて、ちょっとだけ記述量減らす方法 - xuwei-k's blog
  • 1