![ウーバーイーツの報酬引き下げに配達員が抗議、日本法人は団交を拒否](https://cdn-ak-scissors.b.st-hatena.com/image/square/ec038f366cb02371d621620d20e2b85ef6be4956/height=288;version=1;width=512/https%3A%2F%2Fbusiness.nikkei.com%2Fatcl%2Fgen%2F19%2F00002%2F120500940%2Ffb.jpg)
動機 Vim歴がもうすぐ7年になろうとする私ですが、そもそもVimを使い始めた理由は当時のエディタの中でアンドゥ(元に戻す)の機能が最も優れていたのがVimだったからです。 しかし、Vimのアンドゥ機能は十分に理解されているとは言い切れないと思っています。そこでこの記事ではVimのアンドゥ機能について解説を加えていきます。 本編 Vimのアンドゥ機能の基本 Vimではアンドゥをu、リドゥをCtrl+rで行います(どちらもノーマルモードでの話)。 Vimはアンドゥの履歴をツリー状にかつ無制限に保存できます。特に「ツリー状」のアンドゥ機能(アンドゥツリーとも言われます)を持つエディタはなかなか珍しいのではないかと思います。 アンドゥ機能がツリー状であることとモーダル形式の編集が合わさることでVimの強力な優位性が生まれます。モードに入ってから出るまでが一つのアンドゥ単位であるため、論理的に意味
Haskell Advent Calendar 2019 5日目 この冬、神速のサンタクロースがやってくる—— Haskellにおいて、バイト列の表現はByteStringが定番である。ByteStringはPinned領域に直接格納され、空間効率はリストに比べればはるかに良い。しかし、Pinned領域にあるとヒープフラグメンテーションが起こりやすくなるということでもあり、細かい文字列をつなぎ合わせるような使い方はパフォーマンスに悪影響が及ぶ。そのような問題を避けるため、ビルダーと呼ばれる構造が用意されている。 Data.ByteString.Builderは、word8 42 <> byteString "hello" <> doubleLE 42のように細かいプリミティブを連結し、toLazyByteStringを呼ぶと最後にByteStringを一気に鋳出せるという仕組みである。By
この記事はAptpod Advent Calendar 2019の3日目の記事です。 先端技術調査グループの大久保です。 最近はWebAssemblyが注目されるようになり、弊社でもWebフロントエンド側での軽量化・高速化に応用できないか検討をしています。 そこで、今回はWebSocketのechoクライアントをRustとGoで作成し、wasmへコンパイルした時のファイルサイズを比較してみます。現状では、wasm内から直接WebSocketを取り扱う方法は無いらしいので、JavaScriptのAPIを呼び出してWebSocket通信を実現します。 Goでの実装 私はGoが書けないため、先輩からもらった以下のコードを使わせてもらいました。適当にwstest.goと名前を付けて保存します。 package main import ( "fmt" "syscall/js" ) func prin
この記事はC# Advent Calendar 2019の12月5日の記事として書かれました。 この記事はkekyoさんのスライド「C#でわかる こわくないMonad」をモチベーションに書かれています。 kekyoさんのスライドでは、HaskellのMaybeモナド(Optionモナド)に相当するクラスを、まるでHaskellのdo記法のようにC#のクエリ記法で扱う方法が丁寧に紹介されています。本記事ではその他のモナドも同様の手法を用いて実装していきます。 TL; DR C#のクエリ記法でHaskellのモナド & do 記法みたいな機能が実現できるよ! 簡単な実装でそれを実現できるよ! この手法が用いられたプロダクトもあるので紹介するよ! 概要 LINQでおなじみのクエリ記法(from ... in ... select ...)ですが、これを用いてHaskellのモナド&Do記法に近い
はじめに ちょいと Haskell やってみる。むずい。 私は分析は得意ではないが、把握は得意な方です。 そう、私はジェネラリストです。 モナドとは? Haskell 対話環境が教えてくれる。 $ ghci GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help Prelude> :info Monad class Applicative m => Monad (m :: * -> *) where (>>=) :: m a -> (a -> m b) -> m b (>>) :: m a -> m b -> m b return :: a -> m a fail :: String -> m a {-# MINIMAL (>>=) #-} -- Defined in ‘GHC.Base’ instance Monad (E
触れ込みについて 公式サイト の触れ込みでは Ruby, optimized for production A new Ruby distribution, with the Ruby you know and love, but better. 本番環境向けに調整されたより優れたRubyとのことです。 Less memory — save 30-50% メモリ消費を3~5割抑え Faster 高速で More secure セキュアで Fully open source, based on MRI MRIベースの完全なオープンソース とのこと。 作者について サイトをみていると、創設者は Hongli Lai と Fullstaq という会社のようです。 Hongli Lai はそこに記載があるように、 Passenger や Ruby Enterprise Edition の作者だそう
バイナリクレートは実行可能なバイナリを提供するためのクレートで、cargo installでインストールして実行したり、cargo runでローカルでコンパイルして実行したりすることができます。 ライブラリクレートは他のプログラムで取り込むことに適した機能群を提供するためのクレートで、Cargo.tomlのdependenciesフィールドに追加して使用することができます。 公開するクレートはこれらのどちらか、もしくは両方を含むことができます。 エラーハンドリングを行う 試験的に使用しているunwrap()やexpect()などのpanicするメソッドを消し、ResultやOptionを返すように置き換えます。 特にライブラリクレートではpanicするのはなるべく避けます。 panicするべき状態についてはthe bookのGuidelines for Error Handlingを参照し
JavaScriptのNumber型で正確に表せる範囲は、最大で 9007199254740991 (2^53 − 1)、最小で −9007199254740991 (−(2^53 − 1)) 個人的に読みにくいので日本語で読みやすく書くと、9007兆1992億5474万0991 が最大です 最大値、最小値はそれぞれ、Number.MAX_SAFE_INTEGER、Number.MIN_SAFE_INTEGERで定義されています。 console.log(Number.MAX_SAFE_INTEGER) // 9007199254740991 console.log(Number.MIN_SAFE_INTEGER) // -9007199254740991 const x = Number.MAX_SAFE_INTEGER + 1; const y = Number.MAX_SAFE_IN
チームでコードを書いている途中、こっちの方がいいんじゃないか?という新しい関数を作って乗り換えてみたり、もっといい変数名を思いついたのでリネームしたら予想以上に影響範囲が広かったり、新しいロジックを思いついてみたがまだ本格導入するほど自信がないといった経験はありませんか? 個人プロジェクトでは自分の好きなタイミングでリファクタや導入タイミングを決められますが、チームで開発しているときはこれらは注意事項としてチームメンバーに周知する必要があります。 より便利な関数ができたのでそちらを使ってほしい よりわかりやすい名前にリネームしてほしい セキュリティやメンテナンス性の観点からこれ以上使って欲しくない まだ実装が固まってないので利用を限定するか、破壊的変更があることを分かった上で使ってほしい Slackや口頭でも説明ができますが、時間が経つと忘れてしまうものです。できればそういった関数や変数を
1 ツイートに収まるような短い Vim の Tips を書いていくアドベントカレンダーです。 ルール 担当の日になったら Tips の内容を Twitter でツイートし、その URL を Advent Calendar の記事として登録してください。 画像等の添付は禁止します。内容を簡単な Tips に限定するためです。 外部へのリンクも極力避けてください。リンク先に本文があると本末転倒なためです。簡単なプラグインの紹介 + プラグインへのリンク、程度であれば OK です。 メタ的な補足情報(この Advent Calendar へのリンク等)を付けたい場合は、リプライツリーを付けても構いません。ただし Tips の内容を 2 ツイート以上に分けることは禁止します。 可能だったらハッシュタグ #vimtips_ac を付けてください。 背景 昨今、技術系アドベントカレンダーは加熱の一途を
Wasmtime, the WebAssembly runtime from the Bytecode Alliance, recently added an early preview of an API for .NET Core, Microsoft’s free, open-source, and cross-platform application runtime. This API enables developers to programmatically load and execute WebAssembly code directly from their .NET programs. .NET Core is already a cross-platform runtime, so why should .NET developers pay any attentio
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く