jinjorのブックマーク (891)

  • パイプライン演算子の歴史 - まめめも

    (You can read this article in English.) Ruby の開発版にパイプライン演算子(pipeline operator)が試験的に導入されましたが、いろいろあってプチ炎上になっています(チケット)。 せっかくの機会なので、パイプライン演算子の歴史を調べてみました。付け焼き刃の調査なので、間違ってたら教えてください。 パイプライン演算子とは こんな感じのものです。 x |> f |> g |> h # h(g(f(x))) と同じ意味 h(g(f(x))) という関数適用の式は、関数が呼ばれる順序(f→g→h)と、プログラムの字面上の順序(h→g→f)が逆でわかりにくいとされます。この問題は、特に、関数が大きくなったときに顕著になります。 wonderful_process_h( marvelous_process_g( fantastic_process

    パイプライン演算子の歴史 - まめめも
    jinjor
    jinjor 2019/06/16
    完全にこれ。あとメソッドチェーンと同じという言説がちらほらあるけど、クラスに属さない任意の関数でチェーンできる点に違いがある。ただ、きれいにつなげるには、あらかじめ狙ってそういう関数を作る習慣が必要。
  • 技術文書アンチパターン集

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

    技術文書アンチパターン集
    jinjor
    jinjor 2019/04/11
    これ、自分で書いた文章を自分で読み直してウッてなって書いたやつなんだけど、気づいたらバズってて怖い人だと思われてる。
  • JavaScript フレームワークを巡った話 - ジンジャー研究室

    ポエムです。 自分の今の立場としては「Elm の人」ということになってるんだけど、どういう変遷でここまできて今どういうスタンスなのかっていうのはあんまり話す機会がない。だから整理のために考えてることを書いていくよ、というのがこの記事の趣旨。 非 Web の立場から そもそも自分は「Web 系」の出身ではない。新卒入社したワークスでは ERP パッケージを提供するのに画面を Web 技術で作ってるというだけで、別に SEO の順位を競ったり広告をどうという話ではないし、瞬時に画面が表示されないと離脱率が〜という話でもない。ただ、画面はとにかく複雑で設定項目とががうじゃうじゃある。 あと、学生時代に PC に触れたのが Windows で「黒画面なにそれ美味しいの?」くらいに GUI に染まりきってたというのがある。工学系の研究を効率化するために C# で GUI を作ってたら、なんかソフトウ

    JavaScript フレームワークを巡った話 - ジンジャー研究室
    jinjor
    jinjor 2019/01/29
    フレームワーク追記した。
  • 第12羽「転職は僕の決定的瞬間」 - 純粋関数空間

    僕のTwitterをご覧になっている方はご存知かもしれませんが、ワケあって、前職を辞めて、今年の九月から株式会社PEZY Computingで働いております。 どういう会社なのかよく知らない人も多いと思いますので、簡単に説明しますと、超メニーコアのプロセッサを作っていて、それを搭載するボードとか、それを液浸冷却するシステムとかを作る関連会社があったりして、スパコンとして仕立て上げたりしているような、そんな会社です。なんか積層メモリ作ってる関連会社もあるみたいです。えっ、そんな会社が日にあるの?って思われるかもしれませんが、実在している会社ですし、実際にモノもできているからたぶん当にあります。 僕がPEZYのことを初めて知ったのはちょうど去年の今頃の、「いろいろ」あってつらい状況にあるときでした。その時に@nushioさんがすごく心配してくれて、誕生日やらなにやらを祝ってくれたりしたので

    第12羽「転職は僕の決定的瞬間」 - 純粋関数空間
    jinjor
    jinjor 2017/12/05
  • puppeteerでフロントエンドISUCONのためのパフォーマンス計測ツールを作りたい - Qiita

    この記事は、 Recruit Engineers Advent Calendar 2017 の2日目です。 リクルートテクノロジーズで パートナーとして働いてる mizchi です。ここでの仕事は、 yosuke_furukawa が忙しくて調べられないことを、勝手に調べてくることです。 今までリクルートでやったことは Next.js, AMP, PWA, Puppeteer って感じ。今回は Puppeteer を使ったE2Eテストの自動化やパフォーマンス評価の話をします。 puppeteer とは リポジトリ名でわかりますが、GoogleChrome チームが公式に提供する Chrome の Headless Driver です。 スペルがとにかく覚えづらい クロスブラウザテスト以外にはかなり万能なツールです。E2Eテスト、スクレイピング、日々の作業の自動化、なんでもござれ。 他のブラ

    puppeteerでフロントエンドISUCONのためのパフォーマンス計測ツールを作りたい - Qiita
    jinjor
    jinjor 2017/12/04
  • [Elm] Fuzzer でテストデータを量産しよう - Qiita

    Elm2 アドベントカレンダー 2017 の4日目です。 elm-test に搭載されている機能 Fuzzer を紹介します。 Fuzzer とは Fuzzer とは elm-test に標準で付いてくるテストデータの自動生成機能です。 Fuzz モジュールによってこの機能が提供されています。 公式の例を引用します。これは「任意の文字列に対して2回 String.reverse を適用すると元の文字列に戻る」というテストです。 import Expect import Test exposing (Test) import Fuzz exposing (..) suite : Test suite = describe "The String module" [ describe "String.reverse" -- fuzz runs the test 100 times with r

    [Elm] Fuzzer でテストデータを量産しよう - Qiita
    jinjor
    jinjor 2017/12/04
    書きました。
  • Elm Analyse でコード品質を担保する - Qiita

    (場合によっては多少待ちます) チェック事項 以下の項目をチェックします。 CoreArrayUsage Elm 0.18 の Array にはバグがあるので、今は Skinney/elm-array-exploration を使った方がいい(0.19 でコアにマージされます)。 DebugCrash Debug.crash が使われている。 DebugLog Debug.log が使われている。 DropConcatOfLists リストを無駄な結合 [1,2,3] ++ [4,5] は [1,2,3,4,5] のようにまとめた方が良い。 DropConsOfItemAndList リストを無駄な結合 1::[2,3,4] は [1,2,3,4] のようにまとめた方が良い。 DuplicateImport 同じモジュールを2回インポートしている。

    Elm Analyse でコード品質を担保する - Qiita
    jinjor
    jinjor 2017/12/03
    書きました。
  • Elm で構文解析しよう - Qiita

    こうすることによって、生の文字列よりもプログラムで扱うことが簡単になります。 しかし、どうすればこの構造を得ることができるのでしょうか?少し考えてみましょう。 split と trim で頑張る 正規表現で頑張る ループで頑張る 全部つらそうですね。 Elm の構文解析器(パーサー) elm-tools/parser は、そんな構文解析を超シンプルな記述で実現してしまうライブラリです。Elm の作者である Evan 氏自身によって書かれています。 例として公式のサンプルを引用してみます。ここでは ( 3, 4 ) のような文字列を2次元の座標として解釈するパーサー point を定義しています。 import Parser exposing (Parser, (|.), (|=), succeed, symbol, float, ignore, zeroOrMore) type alias

    Elm で構文解析しよう - Qiita
    jinjor
    jinjor 2017/12/02
    書きました。
  • DockerでのNodeアプリ構築で学んだこと | POSTD

    以下に紹介するのは、 Docker を使って node.js 用のWebアプリケーションを開発、およびデプロイする際に、私が四苦八苦しながら学んだ秘訣やコツです。 このチュートリアル記事では、Dockerで socket.ioのチャットサンプル を白紙の状態から番状態へとセットアップしていきます。このプロセスを通じて、そうした秘訣などを簡単に習得していただければ幸いです。特に、以下のような内容について見ていきます。 実際にDockerでNodeアプリケーションを起動する。 すべてをrootとして実行させない(悪いやり方です)。 開発時のテスト-編集-リロードサイクルを短くするため、バインドを使用する。 再構築を高速にするため、 node_modules をコンテナで管理する(これには秘訣があります)。 npm shrinkwrap で、ビルドを反復可能にする。 開発環境と番環境で Do

    DockerでのNodeアプリ構築で学んだこと | POSTD
    jinjor
    jinjor 2017/11/28
  • CSS書きたくなさすぎ問題2017 - DRYな備忘録

    css書きたくない。できればjsも書きたくない。js必要なの嫌。軽くやりたい。という個人の日記です。 参考 Best CSS Frameworks of 2017 | Three29 10 Free Lightweight CSS Frameworks for a Fast Start 2017年にチェックしておきたい、CSSの軽量フレームワークのまとめ | コリス ググれ。 lightweight css framework - Google 検索 Gridだけやりたいやつは除外した。 Bootstrap Materialize mui (追記)UIkit (追記)Semantic UI Pure Bulma Skelton Spectre.css Kube Vuetify Fictoan avalanche Beuter Vanilla Milligram InvisCSS Look

    CSS書きたくなさすぎ問題2017 - DRYな備忘録
    jinjor
    jinjor 2017/11/24
    結局どれなんだ…
  • The Cost Of JavaScript

    As we build sites more heavily reliant on JavaScript, we sometimes pay for what we send down in ways that we can’t always easily see. In this post, I’ll cover why a little discipline can help if you’d like your site to load & be interactive quickly on mobile devices. tl;dr: less code = less parse/compile + less transfer + less to decompress NetworkWhen most developers think about the cost of JavaS

    The Cost Of JavaScript
    jinjor
    jinjor 2017/11/17
  • Making dev.to insanely fast

    It makes me smile when someone raves about how fast this website loads, because that's no accident. We put a lot of effort into making it so. It is the sort of thing that usually goes unnoticed, but when your readers are developers, there's a better chance they notice and appreciate it. I have written about this in the past, but it's worth re-examining because these ideas are always evolving. From

    Making dev.to insanely fast
    jinjor
    jinjor 2017/11/15
  • Elm 言語 が楽しすぎたので Typetalk のクライアントアプリを作りました。 | 株式会社ヌーラボ(Nulab inc.)

    BacklogチームのLeoです。ドイツ出身ですが、ゲーム、マンガ、時間通りの電車、日語、納豆、カラオケが好きで日移住してきました。私はBacklogのGrowthチームですが、今日はプログラミング言語 Elm を使って Typetalk クライアントアプリを開発したお話をします。 さて、 Elm とは英語でニレ(楡)属の樹木の総称、ハルニレの通称です。そしてフロントエンド開発を楽しくするプログラミング言語でもあります。そんなプログラミング言語の Elm を使った開発、気になりませんか? 目次 Elm言語 Elmは何が美味しい? こんにちは世界樹 Hello WorldでElmの構文とElmアーキテクチャー入門 Elmは関数で出来ている ElmHTMLを植える Elmアーキテクチャー降臨 世界樹から巣立つ Typetalkの世界へようこそ ElmでTypetalkクライエントを作る

    Elm 言語 が楽しすぎたので Typetalk のクライアントアプリを作りました。 | 株式会社ヌーラボ(Nulab inc.)
    jinjor
    jinjor 2017/11/15
  • 「形式手法」の“論理の力”による開発効率と品質の向上事例

    社会人エンジニア向けの教育プログラム「トップエスイー」から、エンジニアの皆さんに対して有用な情報をお届けするコーナーです。ところで、形式手法という言葉はご存じでしょうか? 一般には「数理論理学に基づき、効率よく高品質なソフトウェアを開発するための手法の総称」などといわれます。とはいえ「数理論理学」といわれてもなかなか実感ができないと思います。さらに「総称」と述べましたが、セミナーや書籍などで勉強した方も、その中の一つの手法や観点のみに触れたのではないかと思います。記事ではAmazon Web ServiceやFacebook等の具体的な事例にも触れ、形式手法と呼ばれるアプローチのいくつかの方向性・可能性について紹介します。「形式手法」という広すぎる言葉はいったん忘れて、難しい専門用語に振り回されないよう、できるだけ一般的な言葉での説明を補足します。 「網羅的テストが可能な擬似コード」を用

    「形式手法」の“論理の力”による開発効率と品質の向上事例
    jinjor
    jinjor 2017/11/07
  • 伝説のRPG『moon』20年目の同窓会──ラブデリックメンバーが語る、ディレクター3人という奇跡のような開発スタイル…そして「あのころ」の始まりと終わり【座談会】

    いまからちょうど20年前、1997年10月の満月の日にプレイステーション用ソフトとして、ある作品が発売された。その名は『moon』。 「もう、勇者しない。」というキャッチコピーがついたこの作品は、当時のスタンダードなRPGに対するアンチRPG的な代物だった。 プレイヤーが操る主人公は透明の子ども。ファンタジー世界で勇者が倒していったアニマルの魂がさまよっている場所を、さまざまなヒントから推測。魂を見つけ出し、捉えて復活させ、それによって得た「ラブ」によって成長していくという、バトルのない風変わりな成長方法が特徴だった。 さらに彼を取り巻く登場人物たちは、徹底してシニカルな観察眼に支えられて描かれていたため、結果、そのへんに居そうな人々の容姿、性格、言動を極限まで誇張した奇妙な人々ばかりとなっていた。 それゆえ、同時に人間臭さを突き詰めた温かみや逆説的な人間讃歌の側面を見せ、プレイヤーを心地

    伝説のRPG『moon』20年目の同窓会──ラブデリックメンバーが語る、ディレクター3人という奇跡のような開発スタイル…そして「あのころ」の始まりと終わり【座談会】
    jinjor
    jinjor 2017/10/31
  • Pipeline Operatorがstage-1へ - 技術探し

    github.com 先月のTC39のMTGでstage-1になりました。 F#, OCaml, Elixir, Elm, Julia, Hack, LiveScriptなどと似たような機能を提供します。 function doubleSay (str) { return str + ", " + str; } function capitalize (str) { return str[0].toUpperCase() + str.substring(1); } function exclaim (str) { return str + '!'; } let result = exclaim(capitalize(doubleSay("hello"))); // "Hello, hello!" let result = "hello" |> doubleSay // ここの引数が `he

    Pipeline Operatorがstage-1へ - 技術探し
    jinjor
    jinjor 2017/10/06
    newScore = person.score |> double |> add 7 |> boundScore 0 100 // Elm ならこうかな。
  • CloudFormation スタックセットを利用した 複数のAWSアカウントやリージョンを横断したリソース展開 | Amazon Web Services

    Amazon Web Services ブログ CloudFormation スタックセットを利用した 複数のAWSアカウントやリージョンを横断したリソース展開 AWS CloudFormation は、AWS を利用するお客様の Infrastructure as Code モデルの実現に役立ちます。環境やアプリケーションを手作業でセットアップする代わりに、テンプレートを構築しそれを使用することで必要な全てのリソース ― これら一連のリソースは CloudFormation スタックと呼ばれます ― を作成します。このモデルでは、手作業に起因する失敗が発生する可能性が排除され、効率性が増し、時間が経過しても一貫した設定が保証されます。 日、CloudFormation がよりいっそう便利になる新機能についてご紹介したいと思います。この新機能は、複数の AWS アカウントおよび/または複

    CloudFormation スタックセットを利用した 複数のAWSアカウントやリージョンを横断したリソース展開 | Amazon Web Services
    jinjor
    jinjor 2017/09/08
  • GitHub - hapijs/joi: The most powerful data validation library for JS

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - hapijs/joi: The most powerful data validation library for JS
    jinjor
    jinjor 2017/09/08
  • webブラウザにPush通知送るサーバとjsのサンプル - DRYな備忘録

    このドキュメントは 以下の2つのドキュメントをよりプリミティブに理解するためのDRYな備忘録です。 Adding Push Notifications to a Web App  |  Web  |  Google Developers The Web Push Protocol  |  Web  |  Google Developers 背景 かつて サーバからブラウザにプッシュ通知を送りたい(非WebSocket、非ロングポーリング) - DRYな備忘録 これ書いたけど、改めてProgressive Web Appのドキュメント行ったらアホみたいに分かりづらくなってて不条理を感じたので書きます。 サーバからPush通知がブラウザに対して送れて、ブラウザのjsが閉じててもServiceWorkerが生きてるからNotificationが出る、っていうやつです。最近だとウェブのGmailと

    webブラウザにPush通知送るサーバとjsのサンプル - DRYな備忘録
    jinjor
    jinjor 2017/08/28
    的確に欲しい情報が書いてあった。感謝。
  • GitHub - tc39/proposal-dynamic-import: import() proposal for JavaScript

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - tc39/proposal-dynamic-import: import() proposal for JavaScript
    jinjor
    jinjor 2017/08/26