サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
pocketberserker.hatenablog.com
from : 株式会社ドワンゴ 2015/04/01 ~ 2018/10/31 *1 to: Idein株式会社 2018/11/01 ~ お世話になりました & ありがとうございました。 今後ともよろしくお願いします。 *1:10月はほぼ有給休暇を消化してました
現時点でF#のJSON事情をぱっと思い出せなかったので、知っている範囲でメモしておくことにします。 あらかじめ断っておくと、私見にまみれているかつ抜けているライブラリがあるかもしれません。 DataContractJsonSerializer 標準にあるやつ。 当然ながらF#のいくつかの型には対応していない(意図しない出力になったりエラーになったり?)。 一つのプロジェクトに閉じていて他のライブラリを使うまでもないくらい小さいJSONを扱いたい時に使える? FSDNはまさにそんなJSONだったのでこいつを採用しています。 *** 追記 拡張を用意してあげればもちろんF#の型も対応できます(ただ拡張ライブラリ入れるなら別のライブラリを選ぶ…)。 余談 Suave本体に含まれているSuave.Jsonモジュールは内部でDataContractJsonSerializerを使っています。 例外は
新年が明けたのでgolangに入門し、お試しにとコマンドラインツールを作っているところです。 その際に、外部コマンドをサブコマンドのように実行するにはどうすれば…と思って見つけたのが以下の記事です。 [Go言語]codegangsta/cliで、サブコマンドとして外部コマンドをとれるようにしてみた - Qiita urfave/cli*1を使えばまさにやりたいことができそう…と思っていたのですが、上記記事のコードでは引数に未知のflagが含まれているとエラーになってしまいます。 どうにか解決できないか、あるいは自分の勘違いなのではと調査したものの進展なし。 早々に諦めて別のライブラリを調査することに。 https://github.com/spf13/cobra 結果、わりと知名度が高そうなcobraで同様のことができたので掲載しておきます。 importやコマンド名は適宜置き換えてくださ
ajitofm 13に「言語を学ぶ時に練習で何を実装してみるか」みたいな話が出ていた。 で、自分は何やっているかなーと思ったので書き出してみる。 全部やるってわけではなく、目的に応じていくつかやってみる感じ。 parser combinator パフォーマンスを求めないなら数日で実装できる 文字列操作 最適化の練習(文字列編) JSON serializer parser combinatorを使って何かやってみる時の定番? quickcheck的なライブラリを練習するのにちょうど良い binary serializer バイナリ操作 マクロ 最適化の練習(バイナリ編) msgpackが仕様の大きさ的にやりやすい? データ構造 ひとつひとつは小さいので練習しやすい データ構造、アルゴリズムの復習を兼ねる TODOリスト Webフレームワーク DB logging テスティングフレームワーク
あけましておめでとうございます。 進捗どうですか? 私はダメです。 新年早々バイナリフォーマッターの話をします。 ZeroFormatterは、昨年の11月頃にneueccさんが公開したバイナリシリアライザーです。 詳しい話?は実装者の記事を読んでください。 ここで重要なのは上記記事の一文です。 と、いうわけで、言語がC#のみってのはさすがに普通に欠点なんですが、整備してみたんで多言語サポートよろしくお願いします、みたいな(?)。 おおなるほどな、と思いながら当時はスルーしていたのですが、年末に改めてREADMEを眺めていたら気力が湧きあがったので作ることに決めました。 まぁ、一番の決め手はCross PlatformでStageが明確に分かれていることですね。 なるほど、最初はeager-evaluationで良いなら徐々に育てれば良いかみたいな。 Scala版 https://gith
私は型がないと死んでしまう(コンパイラと相談しないと考慮漏れが多発して死ぬ)ので、JS系を触る場合は主にTypeScriptなのですが、とはいえ昨今の事情的にBabelを食わず嫌いするのなぁ…と思ったのでライブラリとそれ用のpuluginを作ってみることにした。 勉強前のスキル Babel系の情報は追っていたが使うのは(ほぼ)始めて 既に別の人が構築したものをちょろっと触ったことならある TypeScriptは使える(詳しいわけではない) 方針 こういうのは強い方々の力を借りるに限る。 https://github.com/azu/power-assert-as-tool-demo Babel pluginの知識は https://github.com/thejameskyle/babel-handbook を斜め読みしつつ、https://github.com/power-assert-
正確には「作っていたライブラリをPersimmon.MuscleAssertにrenameした」です。 注意 この記事はあくまで私の考えでありpersimmon-projectsの総意であるわけではありません。 前提 PersimmonはF#用のテスティングフレームワークです https://github.com/persimmon-projects/Persimmon そんなにF#寄りの話はしないはずなのでこれくらいの情報量で大丈夫なはず…? Persimmonはpower assertの夢を見るか? 昨今はpower assertの認知度が格段に上がっているようですね。 これはJavaScript向けのpower-assertによるものが大きいのではないかと思われます。 ちょっと脱線しつつPersimmonにpower assertが必要か考えてみましょう。 どの意図でのpowert
発表資料やtogetterは以下にあります。 https://github.com/tddbc/TestingFrameworkMeeting/blob/master/links.md 久々にこの濃度のイベントに参加した気がしますね…。 今やってることに直接参考になる話とかも聞けたりしたので個人的には大満足でした。 というわけで熱にあてられたので記憶している範囲で振り返ってみます。 t-wadaさんの発表 「simplify, amplifyで何かお願いします」とゆるめにお願いしてしまって、あとあとこれで良かったのかと悩んでもいたけど、まーさすがt-wadaさんというか、最初の発表としていい感じに話を広げてくださった。 議論などの流れでアドリブ入ったり脱線したりしたのはなかなか楽しい展開だった。 Evolve slowly 私はてきとーに作ってはGitHubにポイ捨てするタチなのでそんなこ
ふと、 初回TDDBC名古屋 が開催されてから5年が経過したことに気がついた。 あの時はブログをやっていなかったので感想記事を書けなかったが、良い機会だし、感傷に浸りたい年頃になってしまったので、駄文(になるだろう)を書いてみる。 なお、これを読んでも得られるものはないだろう。 参加したきっかけ あれは大学4年になるかならないかという時期、指導教員の [twitter:mikantsuki] と相談してTDDに関連する研究にしようと決まった時のこと。 「そういえば、TDDに関する勉強会が北陸であったらしいんだけど、それが次は名古屋で開催されるみたいだね。 遠いから無理かもしれないけれど、行けるなら参加したら?」 勉強会という存在を始めて知った瞬間である。 きっと良い経験になるだろうと思ったので、行く決意を固める。 今考えると、よく思い切ったものだ。 登録した時期 応募がはじまったよ、と教え
先日記載した通り、株式会社ドワンゴに入社しました。 ただ、前記事では入社までの経緯を書いていなかったので、本記事にてまとめておきます。 きっかけとか 前職は誘われる形での転職だったので、今回はWebページからの応募でやってみようと考えました。 ただ、一から探すのは時間がかかるので、ひとまずScalaMatsuriのスポンサー求人情報から、以下の条件で探してみることにしました。 東京勤務 Scala以外の言語も詳しそうな人がいそう 出社が10時以降 私の経歴で書類審査を通過できそう スポンサー求人情報が公開されていて当日に話を聞けるイベント、イベント当日時点では転職するつもりがなかったとしても便利ですね。 あとはWebページから応募して色々あって今に至ります。 やること? 多くの方から「Scalaですかー」という反応をいただいたのですが…正解ではない、という感じでしょうか。 そう思っていた方
3月31日に、某社を退職することになりました。 本日が最終出社日で、来週から有給消化期間です。 忙しい人のための3行まとめ 現職は良い環境だと思う でも東京遠いから 移住する お前誰よ? 2013年11月中旬から、愛知県のとある会社で C# や F# を使った開発に携わっていました。 そういえば社会人になってから今月で丸2年。 退職理由 現職が良い環境だという感想は今でも変わりません。 ではなぜ退職という行動に至ったのかというと、「東京が遠いと感じた」ためです。 昨年のとあるタイミングからわりと東京へ足を運ぶ機会が増えました。 その際、宿探し、電車の時間調整、時間を潰す場所確保etc...がそろそろつらくなってきたな、と。 あとは 個人的に朝がつらい スーツを毎日着たい性分ではない という気持ちがないわけではなかったというやつです。 現職で得たもの? 色々ありますが、 F# を仕事で使った
現実逃避の一環として、私(私をもみあげと呼ぶ人もいる)がどうやってF#を学んだか書き下してみる。 ダイジェスト その言語に詳しい方からおすすめ書籍を教えてもらって学ぶ 挫折する 気が向いたときに1時間弱でできるコードを書いては晒す(ブログ、gistにかいてtwitter放流) 興味のあるコンテンツを見つけたらとりあえず触ってみる 気が向いたときにF#ライブラリのコードを読む(当時の私に読めそうなものはFSharpxしか知らなかった。今は選択肢が増えている) 気が向いたら他言語のライブラリを移植する(他言語について学べる、車輪の再発明にならない、当該ライブラリの知識が増える、などなど) 気になる勉強会の情報は拾っておく(他言語からヒントを得られることもあるので) F#言語仕様を読む コンパイラのコードを眺める 当時のスペック オブジェクト指向プログラミングよくわからん JUnitで簡単なテス
詳しく書くほどでもないと思うので箇条書き。 多少日本語になっていない会話でも、なんとかならなくはないのかもしれない たまには外の空気を吸うべき(家と会社の往復のみは思考停止する) コード書く"毎日"は、それはそれで生きていると実感できる 仕事は選べる"かもしれない" 定時帰宅を続けると遅刻回数が減る いざというときに行動するためには、それなりの資金がいる(あたりまえだけど、あらためて) 帰宅しないという選択肢 C++とBoostは、これはこれで面白い F#! あだ名重要説 SQLアンチパターンは読むべき(背景:この職業、SQLから逃れるのは厳しいのではないか) つい昔話してしまう…これが老いか ノリと勢い、それと運 逆に考えるんだ、「進捗しなくてもいいじゃない」ってさ 夜行バスからの出社は仕事にならない 勉強会で「新卒です」って言ったら驚かれたことがあったのはなんでなんだぜ? 逃避行終わり
前提 下記記事を読んでいることが前提となります。 コンピュテーション式の実装にStateを用いる - pocketberserkerの爆走 注意事項 継続に関する解説はしません この記事のコードが理解できなくてもコンピュテーション式は使うことができます 継続、しませんか そもそもこの話は、コンピュテーション式のキーワードによって計算を継続するかどうか切り替えたい、というのが元々のお話でした。そして継続というと、この界隈にいれば一度は単語を聞いたことがあるだろう、継続モナドが真っ先に思いつくのが自然ですよね。 というわけで、件の OptionBuilder を、継続の概念を用いて実装してみましょう。 定義 先に実装を掲載しておきます。なお、 TryWith, TryFinally, While, For は既存と変更はないため、省略します。 type Cps<'T, 'R> = | Cps
この記事は、以下の素敵記事にかなり依存しているので、先に下記記事を読んでください。 詳説コンピュテーション式 本記事は上記記事内の whileを実用するためのCombine において、 ちなみに、simple を関数にしなくても済む方法があります。 それを実装した例がBasis.CoreのOptionBuilderなどで見れます。 と記述されている話の部分的な解説です。 問題: Return, ReturnFrom とCombine の組み合わせは、単純な実装では処理が継続される ここでは、Option用のコンピュテーション式を例にします。 よく見かける実装としては、FSharpx の MaybeBuilderのような定義です *1 。 ここでは、一部抜粋して以下の様な定義とします。 type OptionBuilder() = member this.Return(x) = Some x
F# Advent Calendar 20135日目の…記事の予定でした…主催者でありながら大遅刻して申し訳ありません。 ネタは? @gakuzzzz さんの 「Javaで継続モナド」をScalaに翻訳/Scala Advent Calendar 2013 や、その元ネタである が面白かったため、急きょネタ変更してF#に翻訳したよという内容にしました。 Lensの記事が書きにくかったということでは…すみません、そのうち書きます。 注意事項 文章は限りなく削っているので、先に元記事や元記事の元記事を読むことをお勧めします C#版も作ろうとしましたが、開始5分で気力がつきました コード pocketberserker/ContMonadStudy · GitHub コミットログをおいかけることで、順を追ってコードを読むことができます。 ただし、Basis.Coreを参照に追加した部分でコミット
11月前半の有給消化期間に暇だったことと、そういえば3月に大学院を修了したのに忙しくて何も書いてなかったなと気がついたので、初めて勉強会に参加してから何を学んだか振り返ってみます。 まぁ、メンズTDDというイベントの懇親会で下記エントリに関連する話を聴いたことも多少は影響しているとは思います。 僕がソフトウェア開発を勉強し始めて3年間でやったこと - うさぎ組 0. 勉強会初参加以前 初めて勉強会に参加した2010年7月より以前は、自主的にはやっていたものの、あくまで学内の中という狭い空間で知った単語、書籍を頼りに学んでました。 まぁ、GoFのデザインパターンやリファクタリング、TDDとは何ぞやということを本腰据えて唸りながら学んだのは、大学4年ソフトウェア工学専門の指導教員の下についてからのことです。 実装パターン 作者: ケント・ベック,Kent Beck,永田渉,長瀬嘉秀,株式会社テ
個人的にはF# の中での理想やりっろーんを追い求めてみたい感もある 2012-11-03 19:54:43 via Janetter こんなことを思っていたりすることもあるため、HaskellやScalaに面白そうなライブラリがあると聞きつけるとF# に移植できないか試したくなります。 で、いくつかTipsというかこんなことがあるよ、的なことをまとめておきます。 用語はてきとーなので表現が微妙であれば順次修正していきます。 【この記事は書きかけです】 型パラメータが型パラメータをもつ Free Monadを例にしてみると sealed trait Free[S[+_], +A] や data Free f a = Pure a | Free (f (Free f a)) などの型パラメータが型パラメータをもってるよ的なやつです。 これが出た場合、私は白旗をあげます。 型エラーが解決できない
前回に引き続き、cowboyを試しています。 今回はWebSocket部分について簡単にメモしておきます。 環境 前回に引き続きErlang R15B02で試しています。 cowboyとjiffyのインストール WebSocketによる通信のみであればcowboy単体で問題ないのですが、個人的事情によりJSONでの通信を試したかったのでjiffyというJSON parserも利用します。 上記事情により、今回のrebar.configは以下のようにしました。 {deps, [{cowboy, ".*", {git, "git://github.com/extend/cowboy.git", {branch, "master"}}}, {jiffy, ".*", {git, "git://github.com/davisp/jiffy.git", {branch, "master"}}} ]
TDD Advent Calendarの没ネタその8です。前記事のリストに入れ忘れていたので、先に取り上げておきます。 個人的にこう考えてみたというだけで、間違っているかもしれないので反論、意見等大歓迎です。あと、うまくまとまっていませんごめんなさい(なので没ネタだったのですが)。 注意事項 これは静的型付け偏重な人物が書いたものです。戯言だと思ったら戯言だと思ってスルーしてください。 また、他の静的型付け言語利用者は異なる意見かもしれないことをここに記しておきます。調査してみたいところではありますけどね。 型とテスト? 確か、TDDBC大都会の懇親会でid:t-wadaさんとの会話していた時、何かのタイミングで「動的型付けってテスト多くならないですかね」と発言してからこの話になったと記憶している。 静的型付けの場合、型チェックは基本的*1にコンパイル時にコンパイラにやってもらえる。動的型
はー、TDD Advent Calendar 2012の15日目ですねー。 誘われたのはいいけど特に書くことないなー、なにかないかなーと考えていたらタイムリミットが近づいてきて胃が痛くなってきたので、とりあえずダミー記事をあげておきます。いつか本物の記事がupされるかもしれません(フラグ)これもアリかなということで小ネタ。 SpockのParameterized Testあるよね こんな感じの。 import spock.lang.Specification import spock.lang.Unroll class HogeSpock extends Specification { @Unroll def "fizzBuzzへの入力値が #num の時は #res が返される"() { def sut = new HogeJava() expect: sut.fizzBuzz(num)
cowboyを触ってみたのでメモ代わりに。 cowboyを触ろうと思った理由はmspgack-rpc-erlangの内部にcowboyが使われているからという理由です。特に理由になってない。 参考にした記事とか 本家リポジトリのREADMEとexampleを参考にしました。 extend/cowboy · GitHub 環境 私はErlang R15B02で試しました。 cowboyのインストール rebarを使うので、rebar.configを以下のように記述しました。 {deps, [ {cowboy, ".*", {git, "git://github.com/extend/cowboy.git", "master"}} ]}. rebarのテンプレート機能を使う rebarのテンプレート機能を使って必要そうなファイルを生成してもらいましょう。 $ ./rebar create-ap
(注意)この記事はお試しでやってみたよ的な記事です。 Haskell界隈で面白そうな話をみた。 『プログラミング Haskell』『すごい Haskell 楽しく学ぼう!』の次に何を読む? - Togetterまとめ こういう話を見ていると自分でも試したくなりますよね。 というわけで、例によってFizzBuzzをお題にしてやってみました。まぁ、Haskellはじめて間もないのでこれくらいのお題がちょうどよさそうですし・・・コードひどかったりしたらご指摘ください。 環境準備 どうせだからディレクトリ構成からきちんと考えたいですよね、ということでGItHubに置かれているHaskellライブラリのディレクトリ構成を参考に作ってみました。 fizzbuzz |- Setup.hs |- fizzbuzz.cabal |- src |- FizzBuzz.hs |- dist |- ビルドやテスト
某場所にて以下のような課題が出た。 いわゆるΣ計算の構文を解析するParserと解析結果にあわせた処理を行うVisitorの作成 書式は sum i : NUMBER .. NUMBER of expression 変数はiで固定、iを1つ目のNUMBERから2つ目のNUMBERまで変化させながらexpressionを計算 expressionは四則演算を行う。括弧を使用できること。 jjtreeを用いて実装せよ たとえば"sum i : 3 .. 5 of 1 + 2 * i"が27になる、みたいな形ですね。 でまぁ、jjtreeというかJavaCCだけだと 戦略というか方向性というか 時間短縮のため変数iはキーワードとしておく 変数が1つしかない仕様なので記号表は作らない Visitorのフィールドでiの当該値を記憶する あとはその場の勢いで追加実装したりしています。 JavaCC,j
6月3日 TDD Boot Camp 大阪 2.0 #tddbc(大阪府)を企画・運営、およびTDDBC大阪1.0のお手伝いしてきました。私としては福岡,東京1.6,福岡2に続く4回目のTDDBC企画担当となります。 今回も色々なことがあったので、一つずつ振り返ってみます。 サブイベントからTDDBC大阪2.0へ まずはじめに、TDDBC大阪*1のスタッフ募集時に手を挙げた際、「どうせ遠征するなら2日目もやりたいなー」という軽い気持ちでtddbc MLに「サブイベントを勝手にやりたい」的なことを書いた記憶があります。 その後サブイベントの会場手配や構成決めを行っていたのですが、時が流れていくうちにひとつの懸念事項を思い出します。参加希望者が殺到するという、TDDBC東京のような事態が発生するのではないかということ。初開催の大阪なら十分にありえることです。 サブイベントのままにするか、2.0
実用期を迎えた関数プログラミング : ATND 「実用期を迎えた関数プログラミング」というイベントが福岡で開催されたので参加してきたのですが、その懇親会で山本さんと小笠原さんとお話することができたので会話したことをメモしておきます。 かなりうろ覚えでの記述なので、間違っていたら指摘お願いします。 テストの話 Q. Haskell Day 2012の資料拝見したのですが、Haskellって実際どの程度テスト書かれているのか? (名前失念)に登録されているもの23個のうち8個くらい カバレッジは調べてないからわからないけど若干低めではあるかも? 動的型付けでのテストの何割かはHaskellではいらない 「hogehogeにタグが含まれていることのテストとか書いてあるけどHaskellだったら型で検査できるじゃん」 Haskellは後方互換性のないライブラリが多い 型チェックでエラーがでるのでど
先日、某人と会話していて「ぺんぎんの人生の流され具合は不思議だ」みたいな話になったので、プログラミングにかかわるようになる前後あたりから書き出してみます。 さいしょらへん 大学入試時代、模試で提出する志望校一覧を埋めるため友人たちによさげな志望校を尋ねる 「○○大学とかはどう?」みたいなことを言われたのでとりあえず記入 紆余曲折あってそこが第一志望に 願書書いてるときに第2志望学科も記述可能なことに気づく 第1志望学科のすぐ下の欄に書かれていた某学科を記入する 第2志望の学科に受かる 月日がたつ 初めてのプログラミングの演習課題に取り組もうとする 仲のよかったメンバーは工業系出身だったので、彼らはさっさと課題をこなす。それを見てダメージを受ける私。 このままでは置いていかれると思い、講義とは別に書籍を購入して勉強してみる 月日がたち、C++は自分には難しいと思い何か別の言語ないかなーと探す
『注意』 この記事には間違っているかもしれないことが含まれています。 また個人の意見なので鵜呑みにしないようにしてください。 あと疑問符がついている部分の答えはここには書いてません。 TDD自体は簡単な概念と思う TDDそれ自体は簡単な概念だ。 Red、Green、Refactor…実にシンプルである。 だがしかし、TDDは難しいという話はことあるごとに聞く(ような気がする) 「では何が難しいのだろう?」というわけで脳内で妄想を膨らませてみる。 [追記]前方依存、後方依存という言葉をだしているが、勝手に考えた造語なので項目ごとに定義も追加しておきます。 技術的な前方依存 『TDDを始める前と終TDDを実際やるために必要な技術』 最低限対象言語でコードがかけるようになって 最低限テスティングフレームワークを使えるようになって リファクタリングをしっかり学んで 対象言語でのきれいなコード、設計
この記事は クラスター Advent Calendar 2023 (2枚目) の1日目の記事です。 気が付けば昨年のアドベントカレンダーで会社に雑LTという文化があったので開催してみたを公開してから1年が経過してしまったぽけばです、ごきげんよう。 今年も色んな事があったような気がするし何かはやっていた気がする……ということで、今回は2023に私が企画した社内LT会について紹介したいと思います。 ※ここで紹介する社内LT会は業務時間外に有志が集まって開催しているものです そもそもLTって? ライトニングトークと呼ばれる短いプレゼンテーションのことを、英単語の頭文字をとってLTと主にIT技術界隈で呼んでいます。 一般的に知られているスタイルは持ち時間5分で終了のものですが、クラスター社内で行われるLT会ではあまりかっちりn分といったような形ではないパターンが多いです。 業務じゃないし緩くていい
次のページ
このページを最初にブックマークしてみませんか?
『pocketberserkerの爆走』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く