タグ

ブックマーク / qiita.com (39)

  • Emacs における快適な Ruby 開発環境を求めて - Qiita

    今日は Emacs で Ruby を編集する場合に是非知っておきたい便利なツールについて紹介したいと思います.紹介するツールは以下の 3種類 + 1 です. Smart Compile xmpfilter what_methods (anything-ruby-methods) Smart Compile Smart Compile は Emacs からキーを叩くだけで編集中のファイルをコンパイル/実行できる elisp です.これは Ruby に限らず,様々な言語での開発に使用できます. Emacs には標準のコンパイル機能(M-x compile)があるのですが,これは残念ながら make -k を呼び出すだけとなっており,使用場面が限られてしまいます.C 言語であればこれでいいけど,Ruby であれば,「ruby [編集ファイル]」を呼び出したいです.Smart Compile を使

    Emacs における快適な Ruby 開発環境を求めて - Qiita
    tanakama
    tanakama 2022/05/25
  • DockerでPrometheus, Grafana, Alertmanagerを動かす - Qiita

    はじめに DockerでPrometheus、Grafana、Alertmanagerを同時に動かしてみました。 その際AlertmanagerからSlackに通知が行くようにしています。 Prometheusとは Prometheusはオープンソースの監視ツールで、元々は2012年にSoundCloudで作られたものです。その後様々な企業に採用され、プロジェクトは活発になっていきました。 多次元データモデルやHTTPのpull型通信を用いた時系列収集が特徴で、グラフやダッシュボードがサポートされています。 Grafanaとは GrafanaはPrometheusやInfluxDBと連携してグラフ描写を行えるデータダッシュボードソフトウェアです。 Prometheusにデフォルトで付いているグラフ描写機能はカスタマイズ性が少なくて監視するサーバの数が多くなるとただただ見にくいので、Graf

    DockerでPrometheus, Grafana, Alertmanagerを動かす - Qiita
    tanakama
    tanakama 2021/10/12
  • 分散合意アルゴリズム Raft を理解する - Qiita

    Raft は Byzantine 障害に対する耐性がなく、論文を一見して恒久的なリーダーの乗っ取りからのログの改ざん、リーダー選挙の妨害などが可能であるところを見ても、P2P ではなく完全に管理されたネットワーク向けの合意アルゴリズム (CFT; Crash Fault-Tolerance) です。Byzantine 障害耐性が必要であれば Raft ではなくパフォーマンスを犠牲にして pBFT などを使う必要があるでしょう。 論文では Crash-Recovery より深刻な障害耐性には言及していないが (論説の範囲を外れるため当然だが)、もし実際に Raft を実装するなら現実的に想定される障害に対して工夫できる余地もいくつか存在します。例えば「テスト環境で使用していたノードの 1 つが事故で番クラスタに『も』参加してしまった」といったような運用事故で起きうる障害は (大抵そのような

    分散合意アルゴリズム Raft を理解する - Qiita
    tanakama
    tanakama 2021/08/10
  • Linuxの不揮発メモリ(NVDIMM)対応について(2020年版) - Qiita

    この記事はFujitsu Advent Calendar 2020 24日目の記事です。(記事は個人の見解であり、組織を代表するものではありません。) はじめに 毎年恒例になったAdevent CalendarでのLinuxの不揮発メモリ対応の動向について、今年も記述しようと思います。 正直言うと、今年は不揮発メモリとは別のネタを書くことも考えました。不揮発メモリのLinuxの動向については、今年はすでにOpen Source Summit Japan 2020 (以後OSSJ)でも話してしまっていて、スライドも公開したので、その内容が今年の全てです。なので、改めてAdvent Calendarで話す必要があるのかどうかいささか迷いました。 また、5月に公開した「メインフレームの異常処理」の記事が結構評判がよかった一方で、Linuxの異常処理について知らない人が多そうだったので、それについ

    Linuxの不揮発メモリ(NVDIMM)対応について(2020年版) - Qiita
    tanakama
    tanakama 2021/02/19
  • アプリケーション開発において重要なロックを掘り下げ、ORM における楽観的ロックの実現例を紹介する - Qiita

    導入 アプリケーション開発においてデータを扱う時にロックを行うことはデータ保全性の観点から重要です。 一般的な話としてアプリケーションの「ロック」について掘り下げ、ロック方法の種類や DB のトランザクションとの関連性を紹介します。 ロックとは まず、ロックとはデータに対して読み書きの処理を同時に行うことを排除する仕組みです。 ロックを行わない場合、同じデータに対して複数の処理を実行すると、結果に整合性が取れなくなったりします。 例えば、商品カテゴリごとの売上の合計を計算する処理が実行されている間に、商品カテゴリが変更されると、商品カテゴリごとの売上の合計は総売り上げと違う値となってしまいます。 そこでロックを用いることで、一方の処理が完了するまでもう一方の処理の読み書きを禁止させることができ、結果の整合性を取ることが出来ます。 ロックを掘り下げる システムの「どのレベル」でロックを行うか

    アプリケーション開発において重要なロックを掘り下げ、ORM における楽観的ロックの実現例を紹介する - Qiita
    tanakama
    tanakama 2020/06/26
  • 最近よく聞くQuorumは過半数(多数決)よりも一般的でパワフルな概念だった - Qiita

    最近では珍しくもなくなった"Quorum"という言葉。Zookeeper, etcd, Serfといったクラスタ中でデータのレプリケーションを行ってくれるようなツールや、Cassandra, Riakといった分散データベース(NoSQL系)のようなツールにおいても、データの複製に一貫性を持たせる仕組みとしてよく聞かれます。 しかしながら、多くのスライドやWebの記事を読んでも、"Quorum"という語が意味するところは要するに「過半数ノードによる多数決」というような説明が多いように感じていました。 にも関わらず、"Quorum"と呼ばれているのはなぜか?そんな疑問を持っていたので、この機会に調べてみました。 そうしたら、"Quorum"は過半数/多数決という概念を一般化した非常に抽象でパワフルな概念だということがわかりましたのでここにまとめておきたいと思います。 分散システムにおけるデータ

    最近よく聞くQuorumは過半数(多数決)よりも一般的でパワフルな概念だった - Qiita
    tanakama
    tanakama 2020/06/10
  • C++11 std::atomicの速度調査 - Qiita

    C++11から、C++は言語仕様としてマルチスレッドプログラミングをサポートするようになりました。 C++を使うからには、スレッド間の通信も高速化したいものです。 というわけで、スレッド間通信の速度(レイテンシ)を測ってみます。 想定しているのは、仕事の完了を通知したいなどの状況で、以下の条件を満たす場合です。 通信のレイテンシを隠蔽する仕事が残っていない。 一つのスレッドが書き込み、他のスレッドは読み込むだけである(※)。 スレッド数の管理は他で行っているため、スピンロックを行っても安全である(スピード狂)。 (※)このような場合でも、C++では同じ変数を同時に読み書きした場合は未定義動作であるので、正しくプログラムを書く必要があります。 環境 Intel Core i7-4771 @ 3.5GHz bash on Windows g++-7 (Ubuntu 7.2.0-1ubuntu1

    C++11 std::atomicの速度調査 - Qiita
    tanakama
    tanakama 2020/05/26
  • mypyやっていくぞ - Qiita

    $ mypy test.py test.py: note: In function "func": test.py:2: error: Incompatible return value type (got "str", expected "int") アノテーションを元に型をチェックして、戻り値の型がintなのにstrを返しているのでエラーになります。 やっていく気持ち "mypyやっていく"というのは、PEP 484に対応した型アノテーションを付け、mypyを実行し静的チェックをパスすることを指します。なぜやっていく気持ちになったかというと、Static types in Python, oh my(py)! この記事を読んだことが大きいです。やっていけそうな気がしました。担当している案件が規模が大きく既存機能の変更頻度も高いものだったので、信頼できる型アノテーションが有ると、修正する

    mypyやっていくぞ - Qiita
    tanakama
    tanakama 2020/01/17
  • Rubyで顔のデータセットをNMF(非負値行列因子分解)してみた - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    Rubyで顔のデータセットをNMF(非負値行列因子分解)してみた - Qiita
  • Rubyで音(wav)を書き出してみた - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    Rubyで音(wav)を書き出してみた - Qiita
  • Rubyでforkを利用したマルチプロセスでコアを使い切りたい気持ち - Qiita

    Rubyで書かれたちょっと重たいバッチ処理があって速くする必要があったので、fork(2)とpipe(2)を使ったマルチプロセス化でコアを活かした並列処理に書き直した話します。 以下の記事に詳しく書いてあるので、TL;DRはそちらを見てな? Forking and IPC in Ruby, Part I Forking and IPC in Ruby, Part II なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 - 達人出版会 Threadじゃいかんの? — GILについて 並行プログラミングとしてまず最初に思いつくのはマルチスレッド化ですが、RubyにおいてはGVL(Giant VM lock)があるためマルチコアを活かすことは難しいのです。 ネイティブスレッドを用いて実装されていますが、 現在の実装では Ruby VM は Giant VM lock (GVL) を有し

    Rubyでforkを利用したマルチプロセスでコアを使い切りたい気持ち - Qiita
    tanakama
    tanakama 2019/05/22
  • 【Ruby】マンデルブロ集合をNArrayで描出してみた - Qiita

    小ネタですよ。 旧NArrayの公式ページにサンプルがあるので、Numo::NArrayで書き直してみました。ほとんどそのままです。 https://masa16.github.io/narray/demo/mandel.en.html Rubyだし実行に時間がかかるんじゃないの? いいえ、NArrayを使っているので計算時間は一瞬です。 (むしろ画像のサイズが大きくなるとgdkpixbufで画像化するのがもたつくかも) require 'numo/narray' require 'gdk_pixbuf2' include Numo def mandel(w, h, w2, h2, zoom) z = (SComplex.new(1, w).seq / w - w2) * zoom + (SComplex.new(h, 1).seq / h - h2) * zoom * Complex(0

    【Ruby】マンデルブロ集合をNArrayで描出してみた - Qiita
  • さあ、並列プログラミングをはじめよう - Qiita

    この記事はJava Advent Calendar 2016の12日目です。 前日は、leak4mk0さんのデータベースを簡単にーJavaSEでもオブジェクト指向データベース(JPA) でした。 次は、tkxlabさんのJavaSEでもオブジェクト指向データベース(JPA)をとなります。 はじめに 「フリーランチの終焉」と言われマルチコアの時代に突入してはや数年。 Webアプリを作る事が多かったのも理由ですが、ほとんどシングルスレッド(サーブレッドとかでマルチスレッドを意識するケースはあるけど)で開発してた私にも、今年は並列プログラミングの波が押し寄せてきました。 そんなわけで今年のアドベントカレンダーは並列プログラミング入門に関してまとめてみます。 Java 8標準の並列API Javaは当初よりマルチスレッドプログラミングを喧伝してただけあって、それなりに並列プログラミングがやりやすい

    さあ、並列プログラミングをはじめよう - Qiita
  • 並列に実行するんだけど並列度も制限したい時 - Qiita

    まあ例を挙げて話したほうがわかりやすい気がするので例をあげると、たとえばあなたはオンプレミスからコンテナまで総計数千台のホスト的な何かで構成されたシステムを管理する必要があります、と。この規模になってくると当然日々何かが壊れては何かが直っていくのはそういうものですね。で、じゃあ、刻一刻と変わる管理台帳と実際の環境の整合性をチェックすることを考える、と。すると要件としては、 管理台帳から存在するはずのホスト名とそのIPアドレスの一覧を引っ張ってくる そこからまずホスト名をババババと名前解決して管理台帳どおりのIPアドレスが解決されるか確認する 次にそいつらが生きてると限らんので、解決されたIPアドレスに向かってICMP Echoパケットをババババと打ちまくって反応を見る ping応答あった「なにか」が、当に管理台帳どおりのホストとは限らないので、とりあえずsshで入れるか確認する 入れたら

    並列に実行するんだけど並列度も制限したい時 - Qiita
    tanakama
    tanakama 2019/05/20
  • 【環境構築不要・スマホ/タブレットOK】東大松尾研のDeep Learningエンジニア育成講座『DL4US』を自習する - Qiita

    PR: 以前の記事 のデータサイエンティスト向け講座のColab実行方法などをまとめ、 図解速習DEEP LEARNINGというができました。[2019年5月版] 機械学習・深層学習を学び、トレンドを追うためのリンク150選 - Qiitaでも、一部内容をご覧いただけます 参考: Colaboratoryユーザによる非公式の情報交換Slackを試験的に立ち上げました。リンクより、登録・ご参加ください。 TL;DR いつも満員抽選となる東大松尾研Deep Learningエンジニア育成講座『DL4US』の演習資料が公開された Google Colaboratoryを使えば、Python等セットアップ不要ですぐに始められる 全ノートブックを実行し、つまずき所も乗り越え方をまとめました セットアップ後は、スマホやタブレットのブラウザでもok GPUだって無料で使える! Colab概要はこちら:

    【環境構築不要・スマホ/タブレットOK】東大松尾研のDeep Learningエンジニア育成講座『DL4US』を自習する - Qiita
    tanakama
    tanakama 2019/05/20
  • 赤外線天文衛星「あかり」などの望遠鏡によって撮影された写真をいじってみたり - Qiita

    最近astropyとastroqueryの色んな機能を試しています。そして先日@nishimuraatsushiさんのこの記事を見つけたのです。 https://qiita.com/nishimuraatsushi/items/5bf9c869813133352c56 これはastroqueryを使ってSkyViewというサイトから望遠鏡によって撮られた天文写真を取得してpythonへ持ち込んで用いる方法です。 この記事から色々勉強しました。面白いので、コードを参考にして自分も色々試しました。 この記事ではSkyViewの天文写真をいじってみたりします。 SkyViewの天文写真 SkyViewには色んな掃天観測計画のデータは格納されています。その中には2006から2011年まで日によって打ち上げられた赤外線天文衛星「あかり」も含まれています。 astroqueryモジュールのskyvi

    赤外線天文衛星「あかり」などの望遠鏡によって撮影された写真をいじってみたり - Qiita
    tanakama
    tanakama 2019/05/14
  • Rumaleで機械学習を試してみた - Qiita

    データの準備 ここではirisのデータセットで分類を試す。 label Numo::Int32#shape=[150] samples Numo::DFloat#shape=[150,4] require 'rumale' require 'daru' require 'rdatasets' # データセットの読み込み iris = RDatasets.load(:datasets, :iris) # Daru::DataFrame # ラベルの準備 # Numo::Int32#shape=[150] iris_labels = iris['Species'].to_a encoder = Rumale::Preprocessing::LabelEncoder.new labels = encoder.fit_transform(iris_labels) # 特徴量の準備 Numo::DF

    Rumaleで機械学習を試してみた - Qiita
  • RubyでMNISTやCIFAR-10を呼び出すRed Datasetsを使ってみる - Qiita

    使い方 データを利用する Datasetのインスタンスを作成する new の引数 type: でtrain/test等を選べる イテレーターでRecordを取り出す RecordはRubyの構造体を継承している pixels で画素データが取り出せる データセットが自動保存される場所は Windowsでは ~/AppData Macでは ~/Library/Caches Linuxでは ~/.cache データセットの情報 mnist = Datasets::MNIST.new metadata = mnist.metadata p metadata.id # "mnist-train" p metadata.name # "MNIST: train" p metadata.url # "http://yann.lecun.com/exdb/mnist/" p metadata.licen

    RubyでMNISTやCIFAR-10を呼び出すRed Datasetsを使ってみる - Qiita
    tanakama
    tanakama 2019/01/11
  • #平成最後 のクリスマスに贈る、2019年の祝日対応と改元の話 - Qiita

    Hi, Everyone! Merry Christmas! 平成最後のクリスマス、どうお過ごしでしょうか? 僕?僕は感染性胃腸炎でダウンして寝込んでいました。 心は元気なのでこうしてテンション高めに記事を書いています。 さて、"平成最後の"クリスマスということで、エンジニアとして気になるのは改元後の元号と、天皇即位による2019年(xx元年)の祝日の変更ですよね。 いくつかのニュース記事1 2 によると新しい元号は2019年(平成31年)4月1日以降の発表という話ですが、発表の日付も正式に決まっておらずなんとも言えない気持ちになります。 「新元号、4月1日に発表 首相が正式表明:朝日新聞デジタル」と、4/1に発表と正式に決まりました。 これを機に各システムともに西暦での表示に統一したほうがいいのではないでしょうか……。 幸せなことに、自分が現在関わっているプロダクトには元号表記はないので

    #平成最後 のクリスマスに贈る、2019年の祝日対応と改元の話 - Qiita
    tanakama
    tanakama 2019/01/02
  • Ruby で GPU計算できる Cumo/NArray を使ってみた - Qiita

    RubyGPUを使って行列計算ができるCumo/NArrayを使ってみたので紹介します。 Cumo/NArray について Cumo/NArray は、Numo/NArray と同じ書き方でGPUで行列計算ができるライブラリです。 (Numo/NArray はRubyで行列計算を提供するnumpyのようなライブラリです) https://github.com/sonots/cumo インストール 公式の通りにインストールします。 gem install cumo でもインストールできなくはないのでしょうが、cuda に関連するトラブルが発生するときの備えてマニュアルのインストールがよさそうです。 リポジトリのダウンロード

    Ruby で GPU計算できる Cumo/NArray を使ってみた - Qiita