サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
xuwei-k.hatenablog.com
Scalaの勉強会で半分くらいHaskellの話してすいませんでした。 http://xuwei-k.github.io/slides/scalaprops/ http://connpass.com/event/16052/ http://togetter.com/li/852254 資料はりきって頑張り過ぎたらとても長くなりました(150ページ超えた) 今までで一番頑張ったかもしれません。ここ半年くらいの成果を全部詰め込んだ感じです。 あとで資料として読んで理解してもらうこと前提で色々詰め込んだので、1年後でも2年後でも、興味のある人が見て有用な資料になればいいですね・・・。 ところで、スライド作るのに、今回から remark というやつ使いました https://github.com/gnab/remark markdownで書けて コードのシンタックスハイライト効いて ページ数表示と
以前にも増して、普段ずっとgithubしかやっていないわけで、githubでの活動のことに関してはいくらでも書くことがあるというか、逆に全部をblogに書いていたらとても書ききれないわけで、よってあまり特別なことがない限りblog書かないわけですが、なんとなくScala本体にまとまってpull requestするのは自分にとっては多少は珍しいし、特定のプログラミング言語本体にpull requestするのが、どの程度敷居高いのか、どういうpull requestが受け入れられるのか?を少しでも誰かの参考になればと思い、書いてみます。 以下全部、最近1、2ヶ月でpull reqしてmergeされたものです。このblog書いてる時点で38個でしょうか。 (ここ1、2ヶ月という制約をかけなければ、もっと多く送ったことはあります) 一つずつ簡単に解説書きます。 長いので先に結論というか、感想書いて
以下、普段と違いプログラミングの話題があまり出てこない、あくまで個人が育児休暇取った話を書くだけなのでご注意(?)ください。 最後の方に少しだけプログラミングの話出てきます。 まず時系列での大まかな流れ 2月後半に生まれる ↓ 妻の入院中は数日休んで、病院通ったり役所行くなどする ↓ 3月いっぱいまでは働く(妻はそのあいだ妻の実家) ↓ 4月から半年間育児休暇 ↓ 9月いっぱいまで休みで、10月から復帰予定 (イマココ という感じです。 そもそも育児休暇とは?とか、そのあいだのお金のこととか、ググればいくらでも正確なわかりやすいサイト出てくるはずなので、詳細に説明はしませんが、簡単に書くと 国が決めてる制度なので、原理的には会社によらず、一定の条件(一定期間勤務してるなど)を満たしていれば、男女関係なく1年くらい取れる(細かいことはもっと色々ありますが) その間の給料は"会社からは"出ない
以前同じようなものを書いたけど、それがもう2年くらい経過してるので、また書きました xuwei-k.hatenablog.com xuwei-k.hatenablog.com まず、このblog書いてる時点でのGitHubでのstar数での順位 1 https://github.com/playframework/playframework 9900 2 https://github.com/twitter/finagle 6088 3 https://github.com/spray/spray 2533 4 https://github.com/scalatra/scalatra 2230 5 https://github.com/twitter/finatra 1645 6 https://github.com/finagle/finch 1115 6 https://github.
結構前に、日本語版の第二版がでていないときに書いて、内容が古い部分がありますが、めんどくさいのでそのままにしておきますよーーー。というか日本語版の第二版でるので、とにかくそれ買いましょうーーーここに書いた不満点(?)がだいぶ解消されているんじゃないかと思います(`・ω・´) Scalaスケーラブルプログラミング第2版 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘出版社/メーカー: インプレスジャパン発売日: 2011/09/27メディア: 単行本(ソフトカバー)購入: 12人 クリック: 235回この商品を含むブログ (46件) を見る 真面目に、scalaを普及させるにはどうすればいいかを色々考えてる今日この頃(`・ω・´) 今でもコップ本はscalaを本格的に勉強するには、一番いい本ですが、色々足りない部分もあります
140文字 ✕ 2で表すとこんな感じ sbt 0.13.1[info] Compiling 1 Scala source[info] Compiling 7[info] Compiling 84[info] Compiling 240[success] Total time: 259 s 2014-01-10 12:56:08 via web sbt 0.13.2-M1[info] Compiling 1 Scala source[success] Total time: 15 sURL URLAwesome!!! 2014-01-10 12:56:52 via web to @xuwei_k 測定方法は Scalazの、現状の最新のcoreモジュールを使って実験 EphemeralStreamにheadOptionとtailOptionという2つのメソッドを追加するコミットを使用 htt
ほぼ資料貼り付けるだけのエントリ。広く浅く話しただけで、それほど新しい情報とかあるわけではないです http://connpass.com/event/16193/ http://xuwei-k.github.io/slides/functional-parallel-concurrent-scala/#1 ゴチうさのくだり、それなりに笑い起こっていたけど、もう少し笑いとれるかと思ったけどそれほどでもなかった(えっそこ ちなみに、べつにすごくゴチうさ好きとかそういうわけでもないです。
上級者というより、基本的には 「べつにbetter javaとして使うならば必ずしもScalaでそこまでやらなくてもいいのに、関数型の濃い話が書いてあったりする」やつです。*1というか、自分が勉強したくても一回読んだだけじゃよくわからなくて、読み直したいもののメモです。独断と偏見で選んだので、他にもあるかもしれませんがとりあえず 1. http://apocalisp.wordpress.com/ Scalazのcommiterの人です。 type level programming のシリーズ *2とかyuroyoroさんが一部訳していたりしましたね。このシリーズ順を追ってけっこう網羅的に説明されてて素晴らしいので是非読みましょう!もちろんこのシリーズ以外にも面白そうなものありますが https://twitter.com/#!/runarorama https://github.com
著者の人と直接的な面識はそれほどない(twitter上では知ってたし会話したことあるはず)のに、ある日突然この本(の電子書籍版)いただきました。ありがとうございます! というわけで、頂いてから結構期間空いてしまって申し訳ないんですが、感想書きました。 電子書籍はここから買えるよ 関数プログラミング実践入門 ──簡潔で、正しいコードを書くために (WEB+DB PRESS plus) 作者: 大川徳之出版社/メーカー: 技術評論社発売日: 2014/11/14メディア: 単行本(ソフトカバー)この商品を含むブログ (8件) を見る まず著者の方のblog貼っておきますね http://notogawa.hatenablog.com/entry/2014/11/08/155402 さて、あくまで個人的に読んだ印象を書いてみます。 まずこの本の1番の大きな特徴としては 「関数プログラミングという
標題の通り、色々書きたいことあって長くなってわかりにくくなりそうですが、頑張って書いてみます。なお、(2.8や2.9でもほぼ同じだと思いますが)Scalaのversionは2.10.1です。Haskellはghc7.4.2です。 「for文は7つしか使っていません(ドヤッ」という謎の主張を含んだスライドが最近流行っていましたが、まずScalaのfor式はMonadのための構文というのはお馴染みですよね!!! Monadそのものから説明していたらとても長くなってしまうので、そのあたりの説明は飛ばします。Scalaのfor式は、コンパイル時に内部的に以下のメソッドの組み合わせに変換されます map foreach flatMap filter withFilter なので、上記の5つのメソッド名は、予約語ではないですが、for式に変換されるという点において特別です。 for式を「Monadの
switch式の結果javapしたらhttps://t.co/xMc0YEYsrg java.lang.runtime.SwitchBootstraps と tableswitch が使われることに気がついたが、これ巨大なswitch式をJDK 21以降で書いた場合、同等の巨大なmatch式をScalaで書くよりも速度が速い可能性があるのでは??? これScalaで活用できるか?というと— Kenji Yoshida (@xuwei_k) September 25, 2023 switch式の結果javapしたら https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/runtime/SwitchBootstraps.html java.lang.runtime.SwitchBootstraps と ta
ふふふふふ(´・ω・`)例のあの本じゃなくて、この本↓ですよ Scalaではじめるプログラミング―「Java」「.NET」のソフト資産を生かして開発を効率化! (I・O BOOKS) 作者: 赤間世紀,第二I O編集部出版社/メーカー: 工学社発売日: 2011/06メディア: 単行本 クリック: 107回この商品を含むブログ (3件) を見る 題が「Scalaではじめるプログラミング」だし、それとまえがき読むかぎり、「Scala」が主というより、「プログラミングをはじめる」のが主で、それにたまたま(?)Scala使う場合って感じなんでしょうか? インストールに関しては、(完全にWindows前提だが!!)丁寧に書いてあっていいと思います 19ページ 「UTF-8」というコードで、「BOM」(Byte Order Mark)なしでなくてはならない オプションつければ、べつにUTF-8以外で
http://scastie.org/ https://github.com/OlegYch/scastie ずっと前からあるし、知っていたけど、なぜかblogに紹介書いたことなかった気がするので書いておく。 任意のsbtの設定書ける(ライブラリの依存追加や、scalaのversionも自由に変えられる)という意味では、ほかのやつよりも、(少なくともこれ書いてる時点で)一番便利なはず
OutOfMemoryErrorでなくても、stacktraceにObjectOutputStreamがどうとか、java.net.SocketException: Socket closedとか、見慣れないよくわからないstacktrace出る場合もあります。かつ、テストが途中で止まっても、最終的な結果はsuccessと表示される場合もあります。 Play2.1からテストがforkされたJVM上で行われるようになったけど、これ URL が、Play側で設定されてないから簡単にメモリ不足でテストが死ぬ。のでこれ URL と同じようなことしないといけない 2013-02-05 15:18:24 via web テスト用のサーバー起動させると簡単にメモリ不足になってこの現象に遭遇するので、必ずjavaOptions設定しておきましょう。*1 簡単に解説しておくと、Play2.1から*2最近sb
sbt でわからないことがある場合、だいたい wiki をみる sbtのドキュメントはgithubのwikiからscala-sbt.orgに移りました! ソースを読む メーリングリストで質問する StackOverflowで検索 or 質問 というような選択肢になります。*1 それで、英語が微妙な自分の場合、結局ソースをみることが多いわけです。それで、今までそれなりにsbtのソースを読んでいるので、自分なりに思った sbtのソースのどこから読めばいいのか? 全体としてどういう構成になっているのか? をちょっと書いてみようかと思います。 (そろそろsbt0.12が出るはずですが)このblog書いている時点の安定版であるsbt0.11.2を基準にして書きます。まぁこれから書くようなことは、sbt0.12になってもあまり変わらないはずです。 1. まず Keys.scala 読め https:/
javaでは、以下のように int a = 0; int b = ++a; System.out.print(a); // 1 が表示される System.out.print(b); // bも1 ++というインクリメントするための演算子があります。 しかしscalaの場合 var a = 0 // a ++ これはダメ val b = a += 1 print(a) // 1 が表示される print(b) // b はUnit というようにしないといけません。 この違いについてのおなはし(・ω・)ノ これをちゃんと解説しようとすると、かなりややこしいんですが、それなりの理由があります。 すごく細かいところだけど、Javaとの違いで初心者が戸惑いやすいところだと思います。 Javaの言語仕様書の15.14 〜 15.18あたりだとおもいますが、++、+=、--、-=、などは、すべてOpe
Phil Bagwell Awardって何?という人は、まず以下を読んでください。 www.scala-lang.org 簡単にまとめると Scalaコミュニティに対して貢献した人に送られる賞 2013年から (いまのところ?)毎年1人だけ "Phil Bagwell" というのは人の名前で、その人にちなんでつけられた あくまで賞の名前がちなんでつけられただけで、賞の内容は上記に書いたような "Scalaコミュニティに対して貢献" らしい? 今までの受賞者は以下 2017: Josh Suereth 2016: Erik Osheim 2015: Bill Venners 2014: Lalit Pant 2013: Dick Wall "Phil Bagwell" さんについてですが 2012年に亡くなった https://www.lightbend.com/blog/rip-phil-
前回↓ "2月になったくらいのタイミングでまた別途書きます" と言っていたやつです。 xuwei-k.hatenablog.com 今日、2019年2月1日が初出社でした。 Scalaをやってる企業としての知名度だと、おそらく前職に比べたらそこまで有名ではないかもしれませんが、それなりにやってるらしいです。 もちろん(?)、全部の部署がScalaではなく、自分が関わることになる部署を中心に一部で、会社全体でいうとおそらく今のところはScalaは少数派だとは思います。 一応、会社的な色々を説明しておくと リクルートは数年前まで大きい一企業だったけど、いくつかに分社化された。そのうちの一つが リクルートマーケティングパートナーズ 。*1 Quipperという企業を数年前?に買収して、教育関連のサービスはそことも関わるので、自分もそことも関わるのだが、ここでこれ以上詳細を説明してもしょうがないの
play2.4から、routesその他を書かずにScalaコードだけで手軽にhttp serverを生成、起動できる機能が入ったらしいです。 手軽にちょっとしたmockのサーバー作りたいとか、色んな用途に使えそうですね? 以下、sbtのscalasと組み合わせた最低限のサンプル(18行でいけた) 色んな詳細は解説しないので、コードかドキュメント読んでください。 上記ではscalasでやってますが、おなじようなbuild.sbtとMain.scalaみたいに2つファイル用意しても、もちろん動きます。(その場合のサンプル https://gist.github.com/xuwei-k/bd74a82f4904cc025d2e ) 手軽にやるにはmodeをplay.api.Mode.Testにしないと、application.confを読みにいこうとして死ぬのが地味に面倒でした。 ServerC
ここでいうScalaとは https://github.com/scala/scala のScala programming language本体のことです。 以前、以下のようなblogを書きましたが xuwei-k.hatenablog.com その後も同じようなpull reqをずっとして、2018年8月10日の時点で、96 commits で 23 位です。 https://github.com/scala/scala/graphs/contributors?from=2003-02-21&to=2018-08-10&type=c 日本人だと1位のはずです。*1 あと、最近だとおそらくこういうのもあります (無駄に?)ここ数ヶ月細かいpull req大量にしたので、2.13.0-M4以降で2.13.xにmergeされたpull req数だと、もしかすると今のところ自分1位なのでは (
終わってからだいぶ日数が経過しましたが、感想を書いておこうと思います。 去年は運営には関わりませんでしたが、今年はある程度運営に関わりました。主に ニコ生の配信に関して社内の担当者と連絡 数日前のノベルティ袋詰 前日準備 当日の準備、片付け、細かい雑務 ホームページの更新の手伝いを少し などでしょうか。他に働き過ぎた人から比べれば、多分それほど働いていない方だと思いますが、終わってみると「とにかく疲れた」という感想が一番大きいです。みなさんお疲れ様でした。 自分がこういうことあまり得意ではない?慣れてない、というのもあるかもしれませんが、正直来年も積極的に手伝えるかどうかはわかりません。何かしら他のことが忙しかったりしたら、絶対無理だと思いました。 運営側、参加者側からみたScala祭の個人的感想と、あとは 「そもそもカンファレンス運営の何が大変なのか?」 というあたりを書こうと思います。
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 といっ
"新しい" とは、今まで全部無名classにコンパイルしてたラムダを、invoke dynamic使って動的に生成するようになるとかそういうやつ。 ラムダ以外の最適化もやってるようですが?詳しくは知りません。 Scala 2.12から正式に入るらしいですが、(これ書いてる時点から見て)つい昨日くらい(2015/06/25)に出たScala2.11.7でも、明示的にオプションを指定すれば、実験的オプションとしてですが、使えるそうです。 内部の仕組みは、以下のScaladays2015のスライド見るとか、あとは各自ググってください http://downloads.typesafe.com/website/presentations/ScalaDaysSF2015/T2_Rytz_Backend_Optimizer.pdf 公式に書いてありますが、2.11.7においてJava8のバックエンドを
本当に雑に(前半部分だけを)まとめただけなので、ちゃんと知りたい人は、元動画やライブラリのコードや、元論文読むとよいです http://hackage.haskell.org/package/discrimination https://www.youtube.com/watch?v=cB8DapKQz-I https://github.com/ekmett/contravariant/blob/v1.3.2/src/Data/Functor/Contravariant/Divisible.hs やる気がでたら、もう少し真面目な解説を後で別に書くかも知れませんし、書かないかもしれません。 先に簡単に自分の感想的なものを書いておきます。 ソートの話なはず、の動画を見ていたら、なぜか前半は「圏論」や「Hask」や「Contravariantなんちゃら」の話してて 「あれ、見る動画間違ったのかな
これは、ドワンゴ Advent Calendar の 7日目です。 6日目は DartのASTを触ってみる でした。 さて、会社でアドベントカレンダーやる、と言われて、なんとなく参加登録したはいいものの、特に書くこと決めてませんでした。 最近、msgpackのScalaのライブラリ作ってるので、それ完成したらそのこと書こうかな―、と思ってましたが、msgpack-javaのバグや、古いversionと新しいversionの違いと戦ってたりしたら、なかなか完成しないので別のこと書くことにしました。 というわけで、標題の 「代数的データ型とshapelessのマクロによる型クラスのインスタンスの自動導出」 という話をします。ドワンゴアドベントカレンダーだからといて、べつに変わったことはなく、いつものようなScalaネタです。 さてみなさん「代数的データ型」って知ってますか?Scalaよりもっと
なんかJava使いをScalaに引き込むサンプル集っていうのが話題になってたから書いてみた。反省はしていない( `ー´) べつに喧嘩したいわけじゃないっていうか、そもそもC#使いをScalaに引き込む必要ないし、誰得?ってことになるわけなのですが。 ただ、自分自身の話すると、まだ社会人2年目ですが、C#もscalaも仕事でそれなりに数ヶ月は経験してます。 scala知ってる人に、"C#できますか?"って聞いても、できる人がほとんどいなく、悲しい思いをすることが多いです。個人的には、scalaちゃんもC#たんもかわいい @GrierVelsXX @xuwei_k フォローと応援、是非宜しくお願いいたしますless than a minute ago via TweenC#たん csharp_tan ↑なぜか話しかけられたw とかではなく、まぁまぁC#も言語として好きなので、まぁちょっと自分な
以下のtweetしたように、最近それなりに、(主にHaskell関連の)論文読んでるのだけれど 最近、論文読むの楽しいと思うことがそれなりにあるけど、いや楽しいとかじゃなく無意識に時間があればずっと論文読み続けてるのが当たり前の状態にならないとだめだ。って自身に言い聞かせようとし出すような変な意識の高まり方してる 2015-07-18 02:30:31 via Twitter Web Client 一回読んだだけではすべてを理解できるわけでもないし、「うまく日本語に要約して紹介」ですら結構頑張らないとできる気がしないけど、それなりに読んでるのを、とりあえず一覧でまとめておこうと思った次第。 昔は論文なんて全然読む習慣なかったし、読もうとしても(英語力と前提知識の問題で)全然読めなかったけど、少しでも読めるようになってくると楽しいですね。 あと「読んだ」というのは、 最初に読んだのは結構昔だ
公開されてました。たぶん1年くらいclosed sourceで開発されていたらしい? https://github.com/lampepfl/dotty https://groups.google.com/d/topic/scala-internals/6HL6lVLI3bQ/discussion グラフみると、小田好先生がほぼ一人で開発してます。 https://github.com/lampepfl/dotty/graphs/contributors また、小田好先生が、scala本体に全くコミットしなくなった時期*1と完全に重なりますね。 (scala/scalaの最後のコミットが2012年10月31日。dottyの最初のコミットが2012年12月6日) https://github.com/scala/scala/commits?author=odersky https://git
元コードはの118ページ目 変数多いぅぉ・・・try catchやifが値を返せばretValとかいらないのに・・・ という「Javaコードを見るとscalaで書き直したい病」が発病したので(・ω・`) 元のJavaコード↓ @Override public int compare(Player o1,Player o2) { float o1A, o2A; int retVal; if(o1.getId() == o2.getId()) return 0; if(o1.hasRole(Player.Roles.Batter)){ try{ o1A = o1.asBatter().getAverage(); }catch(NotEnoughAtBatsException e) { o1A = 0.0f; } } else o1A = 0.0f; if(o2.hasRole(Player.R
次のページ
このページを最初にブックマークしてみませんか?
『xuwei-k's blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く