サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ブラックフライデー
notchained.hatenablog.com
1年後どうなってるのかわからないけど、この気持ちを覚えているうちにメモっておきたいので書きます。 (注:私はRustを使うのが年間数日くらいのエアプ勢なので、たぶんいろいろ適当なことを書いていると思います。話半分で読んでいただければ...) Rustのグラフィックス界隈とは 個人的な観測範囲では、Rustのグラフィックス界隈には主に3つの勢力があります。 Rustでウェブブラウザを作りたい勢 Rustでゲームを作りたい勢 RustでGUIを作りたい勢 Rustでウェブブラウザを作りたい勢 今やRustのグラフィックス界隈は、WebGPUのRust実装であるwgpuを重要な起点として成り立っています。 wgpuは、そしてWebGPUという規格自体も、MozillaがFirefoxのために必要としたもので、Mozillaの寄与が大きいです。 なんですが、2020年にはMozillaが大規模なレ
この本を数か月前に読んで面白かったです。2022年に読んだ技術書の中でベストだったので、紹介しよう。と思って書き始めたら、なんか前置きが長いだけの謎文章になってしまったけど公開します。。 この本を読むと、こんなのが作れるようになります。 8章。レイマーチング完全に理解した。 #リアルタイムグラフィックスの数学 pic.twitter.com/VDYhxIlar3— Hiroaki Yutani (@yutannihilation) 2022年9月12日 ちなみに私はGLSLじゃなくてRustとWGSLでやってたんですが、もし興味あればここにメモとコードを公開しています。 メモ: https://zenn.dev/yutannihilation/articles/d7fe746f4bce38 コード: https://github.com/yutannihilation/math_of_re
追記(2021/03/26): 開発版では「facet_*() の場合」も動くようになりました。 こういうデータが手元にあるとします。 library(readr) library(dplyr, warn.conflicts = FALSE) library(ggplot2) library(lubridate, warn.conflicts = FALSE) d_raw <- read_csv( "https://stopcovid19.metro.tokyo.lg.jp/data/130001_tokyo_covid19_patients.csv", col_types = cols( No = col_integer(), 全国地方公共団体コード = col_integer(), 公表_年月日 = col_date(), 発症_年月日 = col_date(), 確定_年月日 = c
magrittr 2.0のブログ記事で仄めかされていたように、base Rに(というかRの文法レベルで)ネイティブのパイプ演算子|>が入るようです。 それがとうとう開発版のRに実装された、というツイートでTLがざわついていたので触ってみました。 #RStats community, really? It's been like 5 hours now and no one noticed the big news? 😛https://t.co/c4OXTO0WCw Thank you @LukeTierney4 @_lionelhenry @jimhester_ (who else?)#pipypipy pic.twitter.com/5P9QPe1H8a— Henrik Bengtsson (@henrikbengtsson) 2020年12月4日 Dockerでさくっとrocker/
dplyr 1.0.0 がリリースされてもう1ヶ月。日本語でもちらほら紹介のブログ記事やスライドが出てきています。 が、意外と summarise() の挙動変更に触れたやつないなと思って、軽く紹介します。 ちなみに、この記事で取り上げた quantile() の活用例は公式ブログに載っているものです。英語が苦でない方はこっちを読んだほうが早いかもです。 そもそも summarise() の挙動って? まずは、これまでの dplyr の挙動を確認しておきましょう。 summarise() は、 グループ化されたデータフレームの値を集約し、グループ化を1つ解除する 集約された結果は単一の値になっている必要がある という動き方をします。 1. グループ化されたデータフレームの値を集約し、グループ化を1つ解除する まず1点目。summarise() はすべてのグループ化を解除するわけではありませ
ggplot2 v3.3.0のリリースが近々予定されています。新機能がいろいろあるのでかいつまんで紹介します。 詳しくはNEWS.mdをご参照ください。 after_stat(), after_scale(), stage() The evaluation time of aesthetics can now be controlled to a finer degree. after_stat() supersedes the use of stat() and ..var..-notation, ad is joined by after_scale() to allow for mapping to scaled aesthetic values. Remapping of the same aesthetic is now supported with stage(), so yo
先日、Apache Arrow東京ミートアップ2019で「RとApache Arrow」というタイトルで発表してきました。あと、Japan.RでもApache ArrowについてLTしました。 話したこととしては、 arrowパッケージを使うとParquetファイル(後述)の読み書きができる sparklyrパッケージが内部でApache Arrowを使うようになって、R↔Spark間のデータのやり取りが高速になった Arrow Flightがもっと一般的になれば、JDBCやODBCを使わなくてもデータベースからデータを取ってこれるようになる という感じで、個人的にいま強調したいのは1.です。とりあえずParquetファイルの読み書きというのがRユーザーにとって一番わかりやすいメリットなので、そこをきっかけにみんなApache Arrowにズブズブになって、もっと世の中のシステムがApac
昨日、発表のスライドの事を数人から褒められたので、思い立ってブログに書いておきます。 気を付けているのはたった1つ、 でかくて太い文字を使う ことです(逆に言えば、あとは適当なので真似しない方がいいです...)。 でかくて太い文字を使うのがなぜいいかというと、主な理由は2つで、 後ろの方の席からでも見える 1枚のスライドに入る文字数が少ないので、文章の断捨離が強制される だと思っています。 ちなみに文字を減らすのは、自分にとってだけでなく聴衆にとっても重要です。 文字がたくさんあるスライドが出てきて、その文章を目で読んでいるうちにスピーカーの話を聴き逃してしまった、みたいな経験はないですか? そういうことを避けるために、とりあえず文字数を減らすという指針は便利です*1。 具体的にやってるパワポの設定 まずは「表示」タブから「スライドマスター」を開きます。 ここで全スライドのデフォルトのフォ
tidyr v1.0.0がそろそろリリースされそうな雰囲気を感じるのでそろそろ重い腰を上げて使ってみます。 ちなみにこのv1.0.0というバージョンは、stableになったという意味ではなくて、新機能てんこ盛りなのでメジャーバージョン上げとくか、というノリなんだと思います。 既存の機能には基本的には変更はないはずです(ただし内部実装は変わってたりするので念のため動作確認しましょう)。 pivot_longer()/pivot_wider() gather()とspread()の上位互換です。縦長に変形したいときはpivot_longer()、横長に変形したいときはpivot_wider()を使います。 かなーりいろんな機能が詰め込まれているので、詳しくはvignetteを見てください。 ここで紹介する例もvignetteから取ってきたものです。 pivot_longer() 基本的な使い方
TL;DR quo_name(): 名前のついていない引数に名前をつけるときに使う(例: data.frame(a)とやるとaが列名になる、みたいなこと) quo_label(): quosureや表現式を短めの文字列に変換するときに使う quo_text(): quosureや表現式を省略なしの文字列に変換するときに使う as_string(): シンボルを文字列に変換するときに使う 比較 library(rlang) f <- list( as_string = as_string, quo_name = quo_name, quo_label = quo_label, quo_text = quo_text ) q <- list( invalid_quo = quo(`a + 1`), short_quo = quo(a + 1), long_quo = quo(a + a + a
追記(2018/07/18): すみません、Twitter上でいろいろ間違えている部分をご指摘いただきました(ありがとうございました)。 コピーしなくても計算はできる ただし結果をメモリ上に上書きすることはできない GandivaはArrowにマージされのを目指している 速い言語は、コア部分もC++ではなくそれぞれの言語で実装されている 詳しくはこのツイートへのリプライを参照してください。 そういえば半年前にこれ↓をLTして以来、ちょっと状況がアップデートされているのでいったんまとめておきます。 というのは、SciPy 2018でWes McKinney氏が話してたこのスピーチがけっこうまとまっててわかりやすかったので。 Apache Arrowとは? まずはおさらい。ここは↑のスライドと変わっていません。 メモリ上のデータ形式を定めたもの(ディスクに保存するデータ形式(例:Parquet
gghighlightパッケージは、データ系列が多すぎるとき、いい感じに一部をハイライトしてくれるパッケージでした。 もうすぐリリース予定のggplot2 2.3.0の新機能を使ってパワーアップ中です。 詳しい解説はおいおい書くとして、簡単に紹介だけします。 おさらい gghighlightは、こういうデータがあったときに、 library(dplyr, warn.conflicts = FALSE) set.seed(2) d <- purrr::map_dfr( letters, ~ data.frame(idx = 1:400, value = cumsum(runif(400, -1, 1)), type = ., stringsAsFactors = FALSE)) こんな感じでふつうに可視化したのではもじゃもじゃで系列が見分けられなくてどうしよう...、みたいなとき、 libr
ggplot2 2.3.0全体の変更点については以下に書きましたが、その中でも目玉の一つgeom_sf()について軽く紹介します。 追記: uriboがもっと網羅的な記事を書いたみたいなので、こっちを読んどけばばっちりです! sfパッケージとは sfパッケージは、GISデータをRで扱うためのパッケージです。 dplyrやtidyr、leafletなどのモダンなパッケージに対応していて、tidyなエコシステムの中で使うことができます。 しかし、「モダンなパッケージ」と言いましたが、CRAN版のggplot2ではまだsfをプロットすることはできません。 ggplot2のsf対応 実は、geom_sf()がggplot2に追加されたのはもう1年半ほども前です。 そんなわけで、GitHub版のggplot2を使っている人にはもうおなじみの機能なんですが、 この1年半ggplot2のリリースがなかっ
(この記事は「ggplot2 2.3.0(RC版)を使ってみた」として2018/05/27に公開していたものです。バージョン3.0.0としてリリースされたのでタイトルを変えました) ggplot2 3.0.0がリリースされました。例によってこのニュースを追ってみます: 公式のアナウンスはこちら: tidyeval tidyevalについての詳しい解説は省きますが、使えるようになりました。これによって、 plot_iris <- function(x, y, group) { x_var <- rlang::enquo(x) y_var <- rlang::enquo(y) group_var <- rlang::enquo(group) ggplot(iris, aes(x = !!x_var, y = !!y_var, colour = !!group_var)) + geom_poin
Emacs歴実質3日目くらいです。↓を読みながら勉強中。変なとこあればやさしく突っ込んでもらえれば... [改訂新版]Emacs実践入門―思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus) 作者: 大竹智也出版社/メーカー: 技術評論社発売日: 2017/09/22メディア: 単行本(ソフトカバー)この商品を含むブログを見る インストール ダウンロード GNU Emacs download - GNU Projectを見てソースをダウンロードしてくる。 wget http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-25.3.tar.xz wget http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-25.3.tar.xz.sig HTTPになってるので一応GPGで署名を検証しておく。 $ gp
ロケールとは。 http://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Localesによると、 A locale is a description of the local environment of the user, including the preferred language, the encoding of characters, the currency used and its conventions, and so on. Aspects of the locale are accessed by the R functions Sys.getlocale and Sys.localeconv. The system of naming locales is OS-specific. There is
たぶんこれは、もうちょっと読んでもらおうと思ったら「未経験からインフラエンジニア3年目、読んでよかった本」みたいなタイトルであるべきで、しかし致命的なことに俺はそういうフレッシュなことを書くにはちょっと年を取りすぎてしまってるんですよね(ため息)。 まあでも、時分用のメモとしてはとりあえず書き残しておくのも悪くないなと思って書いておきます。(注:今が5年目ではない) プロセッサを支える技術 プロセッサを支える技術 ??果てしなくスピードを追求する世界 (WEB+DB PRESS plus) 作者: Hisa Ando出版社/メーカー: 技術評論社発売日: 2011/01/06メディア: 単行本(ソフトカバー)購入: 22人 クリック: 250回この商品を含むブログ (54件) を見る この本はたしか2年目くらいで読んで、正直あんまり理解できなかったけど基礎がない人間としてはだいぶ参考にな
Twitter APIからデータを取得するにはrtweetパッケージを使おう、という話は前に書きましたが、Twitter APIを使うにはトークン取得のために各自でTwitterアプリを登録する必要があり、やや面倒でした。 例えば2017年9月のこの記事ではその登録の仕方を詳しく説明しています。 しかし、そのちょっとあとにrtweet作者とHadleyがこんなやりとりをしてるのを目にしました*1。なんか自分でアプリ登録しなくてもrtweetパッケージのアプリを使えそうな雰囲気...? Why do you require users to create own app? There’s no reason not to embed in package?— Hadley Wickham (@hadleywickham) 2017年11月7日 で、そういえばどうなったかなと思って質問してみる
これの内容どうこうよりも、こういう話をググりたくなったときのための自分用メモ。 anond.hatelabo.jp 11月頭くらいにTLでそういう話が盛り上がってたけど、きっかけはたぶんこの記事で、 While toxic experts bemoan lack of skills, they showcase the main skill gap the tech industry needs to fix: empathy. https://t.co/zLhJpl2oxn— Ned Batchelder (@nedbat) 2017年11月3日 続いてNetflixのBrendan Gregg氏が書いたこの記事。 new post: Brilliant Jerks in Engineering https://t.co/npUqguRCmZ pic.twitter.com/lLSuPn
なにはともあれ、まずはこれを読んでください。 告発されているハラスメント加害者は2人です。 FacebookでBradley P. Carlin教授から受けたセクシャルハラスメント(とNIPS 2017でのできごと) ISBA 2010*1で「S」から受けたセクシャルハラスメント もちろん、シロかクロかはこのブログ記事ひとつで決まるものではありません。今後の調査を待つ必要があると思いますが、複数の証言があるようなので信憑性は高そうです。 Bradley P. Carlin Carlin教授は、上のブログ記事には一言も名前は書かれていないんですが、この話題がバズったのを受けて、自分からFacebookで「あれは自分だ」と名乗り出て(NIPSであったほうだけですけど )明らかになりました。 その上で、「いや、たしかにあのブログ記事だけ見ると俺めっちゃ悪い感じするけど、そんなことないよ? 文脈大
またSleeviさんがなんかぶっこんでいるのでメモ。 https://groups.google.com/d/msg/mozilla.dev.security.policy/szD2KBHfwl8/kWLDMfPhBgAJ 「EV証明書でもフィッシングサイトつくれるよ」という報告 2017年9月の記事。 EV証明書を取得するには実在の団体の登記が必要だけど、そんなものDark Webで買えるよね、と*1。 So what does an attacker do? Well they can purchase a valid stolen ID for a few pounds from the so called "Dark web" and just use, a service address as the address of the company and the director
dplyrパッケージの*_join()は、キーとなる列の値が完全に一致する必要があります。しかし、世の中のデータはそんなにきれいに一致はしていなくて、微妙に表記が違うとか微妙に値がずれているみたいなことがよくあります。 そんなときは、fuzzyjoinパッケージです。 fuzzyjoinには以下の4種類のjoinがあります。 difference_*_join(): 値の差が許容値以内のものは同じとみなしてjoin stringdist_*_join(): 文字列距離でjoin regex_*_join(): 片方のデータの正規表現でもう片方の文字列をマッチさせてjoin(これはたぶん名前から予想するのと違う) distance_*_join(): 幾何学的な距離でjoin geo_*_join(): 地理的な距離でjoin interval_*_join(): 値の範囲でjoin gen
tidyポエム Advent Calendar 2017 - Adventar 5日目の記事です。 なんかdata.frameとtibbleについての議論が盛り上がってるようなので、data.frameについて書きましょう。 ええ、決して「tidygraphに触ってみる」なんていうタイトルでアドベントカレンダーに登録してたけどついさっきまで忘れていた、みたいなことではないですよ。 時流を捉えたテーマを選んだまでです。ええ。 pic.twitter.com/4ACJHgjX6s— h(o x o_)m< Fool on the Hill (@hoxo_m) 2017年12月4日 I()ゆえに人は苦しまねばならぬ!! そもそも、data.frame()でリストを渡したときというのはどういう挙動が意図されているのでしょう。?data.frameを見てみましょう。 data.frame conve
dplyr::copy_to()とかどうやってるんだろう、と思ってたら、DBIパッケージになんか色々便利関数があるらしい。この辺を眺めていて知ったやつ。 sqlCreateTable() データフレームの定義をクエリに変えてくれるやつ。中身を見ると、こんな感じで、コネクションを第一引数に取るS4の総称関数。 library(DBI) sqlCreateTable #> standardGeneric for "sqlCreateTable" defined from package "DBI" #> #> function (con, table, fields, row.names = NA, temporary = FALSE, #> ...) #> standardGeneric("sqlCreateTable") #> <environment: 0x00000000096743c
ggplot2で可視化しようとして、データ系列が多すぎてこんなもじゃもじゃになってしまう、みたいなことないでしょうか。 これを、一部だけを色付けしてこんな感じのプロットにしてくれるパッケージをつくりました。 インストール GitHub上からインストールできます。 devtools::install_github("yutannihilation/gghighlight") gghiglightがやっていること gghiglightの説明をする前に、まずは上のグラフが何をしているのか、まずはふつうのtidyverseでやってみます。 データはこんな感じのやつです。 library(dplyr, warn.conflicts = FALSE) set.seed(1) d <- tibble( idx = 1:10000, value = runif(idx, -1, 1), type = sa
RからTwitterのAPIを利用するときの定番なのがtwitteRパッケージです。 こないだふとソースコードを見ようと思って元レポジトリに行くと、READMEにこんなことが書かれていました。 DEPRECATION This is the start of a relatively leisurely deprecation period for twitteR, in favor of using rtweet. Please start looking to switch over to that package. If you have any questions contact myself or @mkearney (https://github.com/geoffjentry/twitteR#deprecation) えっ。 twitteRパッケージは廃止予定になったらしいで
最近ちょっと気になる演算子。使い方をちょっと調べたのでメモ。 %<-% これはzeallotというパッケージの演算子です。 値のparallel assignmentができます。parallel assignmentというのは、Pythonとかだと、 a, b, c = 1, 2, 3 みたいなことでできるじゃないですか。あれです。 library(zeallot) c(a, b, c) %<-% 1:3 c(a, b, c) #> [1] 1 2 3 もちろん値の入れ替えなんかもできます。 x <- 0 y <- 1 c(x, y) %<-% c(y, x) c(x, y) #> [1] 1 0 %>>% これはlumberjackというパッケージの演算子です。 %>>%は%>%と同じような演算子で、lumberjackパッケージの他の関数と組み合わせて使うとデータ変形のログを取ることが
なんか意外と変更点多いなと思ったのでリリースノートを眺めてみます。 Breaking changes reduce() If reduce() fails with this message: Error: `.x` is empty, and no `.init` supplied, this is because reduce() now returns .init when .x is empty. Fix the problem by supplying an appropriate argument to .init, or by providing special behaviour when .x has length 0. reduce()は.x(畳み込む対象)も.init(初期値)も空の時はエラーになるようになりました。 reduce(numeric(0), `*`) #
r-wakalangでそういう話が上がってたのでちょっと試してみたときのメモです。 Rをインストール R公式サイトに書かれている通りにインストールします。 ドキュメント:UBUNTU PACKAGES FOR R echo "deb https://cran.rstudio.com/linux/bin/ubuntu trusty/" sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9 sudo apt update sudo apt install r-base RStudio Serverをインストール RStudio公式サイトに書かれている通りにインストールします。 www.rstudio.com sudo apt-get install gdebi-core wget https://downl
次のページ
このページを最初にブックマークしてみませんか?
『Technically, technophobic.』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く