ikaro1192のブックマーク (995)

  • Haskell/圏論 - Wikibooks

    この項目では Haskell に関連する内容に限って圏論の概観を与えることを試みる。そのために、数学的な定義に併せて Haskell コードも示す。絶対的な厳密さは求めない。そのかわり、圏論の概念とはどんなものか、どのように Haskell に関連するかの直感的な理解を読者に与えることを追求する。 圏の導入[編集] 3つの対象A, B, C、3つの恒等射, , と、さらに別の射, からなる単純な圏。3つめの要素(どのように射を合成するかの定義)は示していない。 質的に、圏とは単純な集まりである。これは次の3つの要素からなる。 対象(Object)の集まり。 ふたつの対象(source objectとtarget object)をひとつに結びつける射の集まり。(これらはarrowと呼ばれることもあるが、Haskellではこれは別の意味を持つ用語なので、ここではこの用語を避けることにする。)

    ikaro1192
    ikaro1192 2021/12/23
    とてもわかりやすかった
  • スワップの弁護:よくある誤解を解く

    (This post is also available in English.) この記事は In defence of swap: common misconceptions を 著者の Chris Down さんの許可 を得て Hiroaki Nakamura が日語に翻訳したものです。 原文のライセンス は CC BY-SA 4.0 であり、翻訳のライセンスも同じく CC BY 4.0 とします。 長文を読みたくない方への要約: スワップを持つことは正しく機能するシステムのかなり重要なポイントです。 スワップが無ければ、まともなメモリ管理を実現することは難しくなります。 スワップは一般的に緊急事態用のメモリを取得するためのものではなく、メモリの回収を平等に効率的に行うためのものです。 実のところ「緊急事態用のメモリ」は一般的に盛大に悪影響を及ぼします。 スワップを無効にすることは

    スワップの弁護:よくある誤解を解く
    ikaro1192
    ikaro1192 2021/12/22
    最近のシステムではむしろswapがあったほうがより効率的にメモリを使えるというお話
  • SpinnakerによるContinuous Delivery | メルカリエンジニアリング

    SREの@deeeetです。 新しい機能を素早くリリースしフィードバックを得てすぐにPivotの決定を行う、もしくはリスクを抑え小さな改善を継続的に行うContinuous Deliveryはソフトウェア開発において非常に重要です。 メルカリではこのContinuous DeliveryのためのPlatformにSpinnakerを採用し始めました。現在は主にkubernetes(k8s)へのコンテナアプリケーションのDeployに利用しており、既にいくつかの番アプリケーションがSpinnakerによりDeployされています。 記事ではなぜSpinnakerを採用したか、Spinnakerとは何か、実際にメルカリでどのようにSpinnakerを使っているか、について簡単な紹介をします。 kubernetes上でのDeploy問題 k8sへのコンテナイメージのDeployは非常に簡単で

    SpinnakerによるContinuous Delivery | メルカリエンジニアリング
    ikaro1192
    ikaro1192 2020/12/06
  • I/O負荷の正確な状況はiowaitでは分かりません - Qiita

    さくらインターネットのアドベントカレンダー9日目として、サーバ屋らしく、運用に関するコマンドの使い方を紹介します。 サーバの負荷が高まってきたときに、vmstatやtopなどのコマンドで調査する事が出来ますが、I/O負荷をwa(iowait)によって判断する人も多いと思います。 ただ、結論から言うと、iowaitは正確にI/Oの負荷を表しているわけではありません。 これらを、実際に演習をしながら見ていきたいと思います。 iowaitとidle iowaitとはあくまでも、CPUが空いているのにI/Oがボトルネックになっているプロセスを示しているだけで、CPUの利用率が高いときにはI/Oがボトルネックになっていてもiowaitが上がりません。 同様に勘違いされがちなのが、id(idle)はCPUの空きを示しているというものですが、idleは必ずしもCPUの空き時間を示しているものではありませ

    I/O負荷の正確な状況はiowaitでは分かりません - Qiita
    ikaro1192
    ikaro1192 2020/11/15
    しらんかった。usでCPU食いつぶしているとIO負荷がかかっていても低く申告されるのか...
  • 【CloudWatch Logs】1つのメトリクスフィルターでORパターンマッチングと語句の除外を両立できない(が似たようなことはできる) | DevelopersIO

    コンバンハ、千葉(幸)です。 CloudWatch Logsメトリクスフィルターではフィルターパターンで様々な形式に対応することができます。 例えば複数のキーワードのORパターンマッチングや、キーワードの除外に対応しています。ただし、それらを一つのフィルターパターン構文の中で両立させることはできません。そこで試行錯誤することになったので、その結果を書きます。 目次 やりたいこと フィルターパターン構文について ORパターンマッチング 除外キーワード ORパターンマッチングと除外キーワードの組み合わせ ではどうするか 追記:スペース区切りフィルターパターンを使用する 終わりに やりたいこと 「error」もしくは「fail」のキーワードが含まれているログイベントを検知したい ただし、「hoge」ないし「fuga」が含まれているものは検知対象から除外したい つまり、以下のログイベントのうち、★

    【CloudWatch Logs】1つのメトリクスフィルターでORパターンマッチングと語句の除外を両立できない(が似たようなことはできる) | DevelopersIO
    ikaro1192
    ikaro1192 2020/09/04
  • 「プログラミング言語Go完全入門」の「完全」公開のお知らせ

    メルペイ エキスパートチームの@tenntennです。稿は Merpay Tech Openness Month の11日目の記事です。 「プログラミング言語Go完全入門」の期間限定公開のお知らせでも書いたように、メルペイでは、社外の方向けにGopher道場という体系的にGoを学べる場を無償で提供してきました。Goの普及を目的にこれまでに8回開催し100人以上の方に参加していただきました。 また、Gopher道場の動画や資料はGopher道場 自習室として誰でも利用できるようになっており、現時点で300名以上の方が利用されています。 Gopher道場の資料のベースになっている「プログラミング言語Go完全入門」は、2020年7月31日までの限定公開になっていましたが、日より公開期限を撤廃し、完全公開することになりました。 また、日8月31日から始まる「Online Summer Int

    「プログラミング言語Go完全入門」の「完全」公開のお知らせ
    ikaro1192
    ikaro1192 2020/09/01
  • ext4 ファイルシステムのオーバーヘッドを厳密に理解する - とあるSIerの憂鬱

    ファイルシステムを作成すると、ファイルシステム自体の管理領域などのため、ファイルシステムを作成するデバイス・ボリュームの容量を100%使えるようにはならない。 では何パーセントが減ってしまうのか。10%あれば大丈夫なのか、3%程度でもよいのか、厳密には決まらないのか、そんな疑問・不安を取り除くために検証および論理的な裏取りを行った。 検証環境は CentOS 6.4 (x86_64) で、ファイルシステムは ext4 である。なお、ブロックサイズは 4KB を前提にする。CentOS 7 (RHEL 7) でも考え方は同じだが、計算の元になる基礎値に差があるため注意が必要(「その他」にて触れる)。 検証結果 128M, 256M, 512M, 1024M, 1.5G, 2G, ・・・ と20GまでのLVを作成し、実際にファイルシステムを作成。マウントした際の df -k の Availab

    ext4 ファイルシステムのオーバーヘッドを厳密に理解する - とあるSIerの憂鬱
    ikaro1192
    ikaro1192 2020/08/26
    奥が深い...
  • Ubuntu 10.10でHDDの予約領域 (Reserved block count) のブロック数を変更する - 旧ID:itiriのブログ

    ext3やext4とかのファイルシステムでドライブをフォーマットした場合、標準ではファイルシステムの容量の5%を使用済みということにして書き込めないようにするらしい。 2TBのHDDをフォーマットした場合100GBも使用済みになってしまうので、より多くの領域を使用したい場合は手動で予約領域の比率を変更する必要がある。 予約ブロック数の変更にはtune2fsコマンドを使用する。 sudo tune2fs -m 1 /dev/sda4 /dev/sda4の部分は環境によって異なるので、dfコマンドなどで確認する。-mオプションでは予約ブロック数をパーセンテージで指定できる。ただし2TBもあると1%でも20GBも使えなくなってしまうので、予約領域を確保したくない場合は以下のようにする。 sudo tune2fs -m 0 デバイス名 また、パーセンテージではなくブロック数を直接指定することも出来

    Ubuntu 10.10でHDDの予約領域 (Reserved block count) のブロック数を変更する - 旧ID:itiriのブログ
    ikaro1192
    ikaro1192 2020/08/22
  • 100万件ぐらいのレコードを扱ったらOOMEが出た話。 - 谷本 心 in せろ部屋

    要約 技術的な話だけ教えて、という方のために先に結論だけ書いておきますと、PostgreSQLはクエリを実行した時点で全レコードの情報を一気に読んできてヒープを埋めてしまう場合がある、ということ話です。 たとえば、ResultSet#nextメソッドを使いながら処理を回すようなコードを書いて、少ないヒープでも処理できるようにするのは常套手段だと思いますが、そういうコードを書いていても一気にヒープを消費してしまうことがあるのです。詳しくはこのドキュメントを見てください。 https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor ことの発端 ちょっと仕事Java + jOOQ + PostgreSQLで、DBのデータを集計するようなバッチ処理を書いてまして、もちろん俺様の書いたコードにバグなんてある

    100万件ぐらいのレコードを扱ったらOOMEが出た話。 - 谷本 心 in せろ部屋
    ikaro1192
    ikaro1192 2020/08/13
  • Gormが本番テーブルの数億件のデータを消そうとした話 - keroxpのScrapbox

    MySQLの場合、--safe-updatesオプションを利用することでこういった不慮のUPDATE/DELETEを防げるようです

    Gormが本番テーブルの数億件のデータを消そうとした話 - keroxpのScrapbox
    ikaro1192
    ikaro1192 2020/08/10
    yabai
  • BFG Repo-Cleaner by rtyley

    Removes large or troublesome blobs like git-filter-branch does, but faster. And written in Scala View project on GitHub $ bfg --strip-blobs-bigger-than 100M --replace-text banned.txt repo.git an alternative to git-filter-branch The BFG is a simpler, faster alternative to git-filter-branch for cleansing bad data out of your Git repository history: Removing Crazy Big Files Removing Passwords, Creden

    ikaro1192
    ikaro1192 2020/08/04
    これは便利そう
  • lsyncdで上限ファイル数を超えた時の対処策 - UNIX的なアレ

    lsyncdで監視できる対象のファイル数は制限されています。lsyncdのlogに以下のようなlogが吐き出されていたら要注意です。 Fri Jan 22 14:11:51 2010: ERROR: Cannot add watch /foo/bar/ (28:No space left on device)このまま読んでしまうと容量が無いのかなーとも思ったのですが、そういうわけではないそうです。lsyncdは、inotifyというAPIを利用してつくられているので、そのあたりの設定ですね。 というわけでドキュメントを調べてみました。 /proc インターフェース 以下のインターフェースは、inotify で消費されるカーネルメモリの総量を制限するのに使用できる: /proc/sys/fs/inotify/max_queued_events このファイルの値は、アプリケーションが inot

    lsyncdで上限ファイル数を超えた時の対処策 - UNIX的なアレ
    ikaro1192
    ikaro1192 2020/05/30
  • 3TB超のCacooのPostgreSQL 9.3を9.5にアップグレードした話 | 株式会社ヌーラボ(Nulab inc.)

    こんにちは。Cacooチームのイニエスタこと、とおのぶです。CacooはデータベースのPostgreSQLのバージョンアップを実施しました。基的には公式のpg_upgradeの手順に従っています。ここではドキュメントには記載の少ない具体的な作業内容の流れを紹介したいと思います。 理由 ユーザアンケートからみる Cacoo のコア・バリューで記されたとおり、全体的なパフォーマンスの向上については重要度の高い課題の一つです。PostgreSQL 9.5ではソート性能の大幅な改善が強化点の一つで、パフォーマンスの改善が見込まれます。またフェイルオーバ後、新しいマスターに追従するスタンバイとして、古いマスターサーバをオンラインに戻すことができるpg_rewindも、PostgreSQL 9.5の魅力の一つです。 バージョンアップ前の構成 構成は、マスタとスレーブのストリーミング・レプリケーション

    3TB超のCacooのPostgreSQL 9.3を9.5にアップグレードした話 | 株式会社ヌーラボ(Nulab inc.)
    ikaro1192
    ikaro1192 2020/04/22
    “pg_upgradeの処理では統計情報が生成されないので、既に稼働している実サービスでは絶対に行なうことをおすすめ”
  • AngularJSからFlask APIを呼んで、No 'Access-Control-Allow-Origin...で怒られた時の対処法 - Qiita

    Help us understand the problem. What are the problem?

    AngularJSからFlask APIを呼んで、No 'Access-Control-Allow-Origin...で怒られた時の対処法 - Qiita
    ikaro1192
    ikaro1192 2020/04/16
    CORSはじめてしった
  • secrets — Generate secure random numbers for managing secrets

    Source code: Lib/secrets.py The secrets module is used for generating cryptographically strong random numbers suitable for managing data such as passwords, account authentication, security tokens, and related secrets. In particular, secrets should be used in preference to the default pseudo-random number generator in the random module, which is designed for modelling and simulation, not security o

    secrets — Generate secure random numbers for managing secrets
    ikaro1192
    ikaro1192 2020/04/08
  • Elm の型注釈をできるだけ手軽に試す (Elm 0.19) - Qiita

    Elm の文法を勉強をする人の多くは Elm REPL (以下 REPL) を使っている場合が多いと思います。 ただし、型注釈 については REPL 上で記述しても I cannot handle type annotations. というメッセージが出力されて無視されます。 REPL に頼らずコードを書いて都度コンパイルして確認したり、Elm Reactor を使ったりするのも 1つの手です。 ただ、HTMLElm アーキテクチャを気にする必要があるので、型注釈に集中したい場合は少し不向きでしょう。 この記事ではファイルに型注釈 (と関数定義) を記述し、それを REPL からインポートする方法を紹介します 1 。 「もっと楽な方法があるよ」という場合は、コメントでのフォローや紹介記事の作成をしていただけると嬉しいです。 想定している読者 Elm の文法を勉強中で、Elm アーキテ

    Elm の型注釈をできるだけ手軽に試す (Elm 0.19) - Qiita
    ikaro1192
    ikaro1192 2020/04/04
    モジュールにしてreplでimportしろということらしい
  • ElmでPhantom Type (幽霊型)入門 - Qiita

    はじめに elmは静的型付け言語です。コンパイラで静的にコンパイル時に、型チェックにすることによって、コードの安全性(型安全)が担保されます。このような型の存在のおかげて、プログラムに間違った値が関数に適用されていないかチェックすることができます。 このような「型」とはelmをある程度つかっているユーザであれば、別の見方をすれば「値の限定」と見なすことができるというのはすぐ理解できるんじゃないかと思います。例えば、String型やInt型の区別は、Intという値に限定するという見方ができるという見方をすることができます。型というのは、とある値の集合であり、そのある値が集合に属しているか属していないか?という確認のためのものだと言うこともできるでしょう。 さて、型は「値の限定」と言ったり「値の集合」と言ったりしましたが、たとえばString型などを、「もっと限定」したり、「値の部分集合」をと

    ElmでPhantom Type (幽霊型)入門 - Qiita
    ikaro1192
    ikaro1192 2020/04/04
  • Goのパッケージ構成の失敗遍歴と現状確認

    この記事は Gunosy Advent Calendar 2017の5日目の記事です。前回の記事はGunosyのパーソナライズを支える技術 -ワークフロー編-でした。 GoAPIを書くときの問題僕の在籍するGunosyはGoを昔(?)から番採用しておりまして、ノウハウも潤沢に溜まっている企業だと言えます。 しかし、contextの扱いやベストなパッケージ構成、テスト、net/httpでAPIを書くノウハウなどなど、迷うことは多々あります。 これは弊社特有の事情ではなく、Goのサーバーサイドエンジニア全員にとっての問題です。中でも、パッケージ構成をどうすればいいのか(相互参照せずに快適に開発を進められるパッケージ構成とは)を見つけるのは結構難しく、各々のチームにお任せ、という状況です。 今回は上記の問題のうち、パッケージ構成に踏みこんで見たいとおもいます。会社でもよくパッケージ構成をどう

    Goのパッケージ構成の失敗遍歴と現状確認
    ikaro1192
    ikaro1192 2020/03/16
    失敗はなかなか共有されないだけによい記事
  • O/Rマッパーによるトラブルを未然に防ぐ

    ORMがトラブル起こすから嫌い」なんじゃなくて、「ORMが起こすトラブルが解決できないから嫌い」ってのがほんとのところじゃない?だったら解決方法を知ればいいんじゃね?というお話。「N+1問題」もろくに知らずにORMを批判せんでほしい。

    O/Rマッパーによるトラブルを未然に防ぐ
    ikaro1192
    ikaro1192 2020/02/13
  • 圧力鍋で簡単 おいしい黒豆の煮方|クッキングレシピ|丹波篠山 小田垣商店の黒豆|黒豆の 丹波篠山 小田垣商店

    1黒豆を水で洗い、ザルにとる。 2圧力鍋に水と調味料を入れて強火にかけ、沸騰したら火を止め、洗った黒豆を入れて一晩浸けておく。 ※煮汁につけてしばらくすると豆にシワがよりますが、そのままつけておくとふくらんできます。 3圧力鍋のフタをセットして、強火にかける。おもりがふれたら弱火にして20分加熱し、火を止める。 *高圧鍋は加熱時間が1分。 4そのまま自然冷却する。煮汁に1日浸けておくと、味が馴染み色も深くなってふっくらとしてきます。 ※たきあがった直後は黒豆の一部又は全体が茶色っぽい場合があります。 一昼夜つけておくと黒色の色素が戻り、黒っぽくなってきます。

    ikaro1192
    ikaro1192 2019/12/30
    今年の黒豆レシピ #いかろちゃん料理メモ