タグ

ブックマーク / qiita.com (1,244)

  • MongoDB cursor id not found (43) の原因と対策と調査過程から得た教訓 - Qiita

    @koshi_life です。 MongoDB内に保存した大量のデータを加工する処理を行った際に、カーソルIDが見つからないMongoDB cursor id XXX not found (43) というエラーが度々発生し、原因と対策を調べた内容の備忘です。 前提 MongoDB: v4.0.3 mongoid: v7.0.2 TL;DR cursor id not found (43) の原因と対策2つ。 エラー原因1:タイムアウトの設定時間を超過した時 (デフォルト 10分) 対策: cursor.noCursorTimeout() のオプションを設定する エラー原因2:バッチ取得サイズ16MBを超えた時 (デフォルト 16MB) 対策- バッチ取得サイズを cursor.batchSize() で小さくする その他対策:Cursorを使わずに cursor.toArray() でRA

    MongoDB cursor id not found (43) の原因と対策と調査過程から得た教訓 - Qiita
  • すごいTrie - Qiita

    「to」がキーで「7」がバリューです。これを trie で表すと下図のようになります。 Trie - Wikipediaより引用 ノードの中に書かれている「tea」や「in」がキーであり、ノードの下に書かれている「3」や「5」がキーに対応する値です。 あるノードのキーは、その親ノードのキーに、親ノードから伸びる有向辺に書かれている文字を、付け足した文字列です。実際には、ノードには直接キーが保存されず、そのノードに到達するまでの辺のラベルの列がキーになってます。 接頭辞がノードと対応するので prefix tree とも呼ばれます。 計算量 計算量は色々な表現をすることが可能ですが、ノードの分岐は高々アルファベットの種類数なのでこれを定数とすれば、$ m $を文字列の長さとして以下の操作が$ O(m) $で出来ます。(アルファベットの種類数を考慮すると$\log$が付きます。) 文字列の検索

    すごいTrie - Qiita
  • もうこれでVIM学習は最後にしよう! VIMチュートリアルと入門 - Qiita

    こちらの記事は、Daniel Miessler 氏により2020年03月に公開された『 Learn vim For the Last Time: A Tutorial and Primer 』の和訳です。 記事は原著者から許可を得た上で記事を公開しています。 Vim を学ぶ上での問題は、それが難しいということではなく、ずっとやり続けなければならないということです。このガイドでは、そのサイクルを断ち切り、今度こそ完璧にVim学習を完了できることをゴールにしています。 Vim 学習のリファレンスはオンラインで何十件もありますが、ほとんどのものは、すぐに超絶技巧を要求するか、あるいは基的なことだけ触れてあまり深く踏み込まないかのどちらかです。 このチュートリアルは、まずvim の思想を理解すること(これは永遠に皆さんの心の中に残ります)から始まり、現在お使いのエディタのスキルを超越して、VI

    もうこれでVIM学習は最後にしよう! VIMチュートリアルと入門 - Qiita
    a2ikm
    a2ikm 2020/05/12
  • スナック「jQuery」 - Qiita

    ……あら、いらっしゃい。 若いお客さんなんて珍しいわねえ。昔は、この街一番の人気店でね、若いお客さんもたくさんいたんだけどさ。最近はめっきり減っちゃってね。 何飲む? ……水割り? わかったわ。 じゃあさ、ちょっとだけ、あたしの昔話に付き合ってもらってもいいかしら。 What is jQuery? この店――『jQuery』がオープンしたのって、2006年なんだけどさ。その頃の、この街の様子って覚えてる? ……知らないか。あなた、まだ若いもんね。その頃って、そりゃあヒドイもんだったのよ。 その頃、シェア率トップだったブラウザって、もちろんInternet Explorerだったんだけど。当時はバージョン7が登場したばかりで、あの悪名高きIE6もまだまだ主流だったの。 他のブラウザは、Safariがバージョン3がMacWindowsに公開されていた頃で、Firefoxはまだバージョン2.0

    スナック「jQuery」 - Qiita
    a2ikm
    a2ikm 2020/05/07
  • AIでruby-signatureを生成する - Qiita

    はじめに タイトルはお約束の釣りでただし、AIはAbstract Interpretationですって奴です。 ruby-signatureを抽象実行で生成しようってのがうまくいきそう(うまくいったとは言っていない)のでまとめてみます。 ruby-signatureって ruby-signatureはRubyのライブラリや組み込みクラス・メソッド等の戻り値の型情報を記述するための記法と型のデータベースです。ここ にあります。 型情報は手で書くことを想定しているわけですが、自動的に生成出来れば色々便利でしょう。 mmcについて mmcは私が作っているRubyからCに変換するコンパイラです。中に抽象実行をおこなって型を推定するエンジンを持っています。抽象実行とかそういうのは書かないのでここを見てください。 Enumerableの型を解析する おそらくとりあえず一番むつかしいのはEnumerab

    AIでruby-signatureを生成する - Qiita
    a2ikm
    a2ikm 2020/05/06
  • ngrokが便利すぎる - Qiita

    はじめに 先日利用したngrokというサービスが便利過ぎたので紹介します。 ngrokとは 簡単にいうと、ローカルPC上で稼働しているネットワーク(TCP)サービスを外部公開できるサービスです。例えば、ローカルPCのWebサーバを外部公開することができます。 ngrokの導入 ngrokにユーザ登録 ngrok公式サイトからユーザ登録します。Githubアカウント、Googleアカウントでも登録できるのでお好みで登録します。 ngrokコマンドをインストール ngrokのサービスを利用するには、公開されているngrokコマンドを使用します。ダウンロードサイトからOSに合ったファイルを取得します。ツールはzip圧縮されているだけなので、ファイルをダウンロードしたら任意の場所に解凍します。 ngrokコマンドをインストール ツールのインストールが完了したら、アカウント登録後に表示される「Wel

    ngrokが便利すぎる - Qiita
  • Let's Encryptを使用しているウェブページをブロックするプロキシサーバー - Qiita

    Let's Encryptはドメイン認証証明書を無料で発行してくれるたいへん素晴らしいサービスです。ウェブサイトをHTTPSで提供するためには証明書が必要ですが、Let's Encryptの登場以前は認証局から有料で証明書を発行してもらうのが主流でした。それを無料で発行してもらえるのは大変ありがたいことです。また、発行プロセスは自動化されておりとても簡単です。筆者も個人のウェブサイトは全てLet's Encryptで証明書を取得しています。 ところが、Let's Encryptが発行する無料の証明書なんて信頼できないという教義を信奉するタイプの人々も存在するようです。筆者は最近Twitterで見かけました。ということで、そのような思想を持つ方も安心してインターネットを利用できるように、Let's Encryptによって発行された証明書を使用しているウェブサイトのみブロックするプロキシサーバ

    Let's Encryptを使用しているウェブページをブロックするプロキシサーバー - Qiita
  • Redux Hooks によるラクラク dispatch & states - Qiita

    日 (2019/06/11) React-Redux の version 7.1 がリリースされて、 Redux Hooks が使用できるようになりました。 Redux Hooks によって、connect() を利用しなくても、各コンポーネントとdispatch, state が簡便に利用できるようになります。 サンプルコードです。Action, Reducer 部分は省略です。 ただシンプルにカウンターの数値を増減させるだけのコンポーネントです。 import React from "react"; import { useDispatch, useSelector } from "react-redux"; import { incrementAction, decrementAction } from "./Actions"; const counterSelector = st

    Redux Hooks によるラクラク dispatch & states - Qiita
    a2ikm
    a2ikm 2020/04/07
  • shellの-cオプションについてUbuntuのsh(dash)、bash、zshはそれぞれ違う挙動をする - Qiita

    shellの-cオプションについてUbuntuのsh(dash)、bash、zshはそれぞれ違う挙動をするBashZshshellshDash manコマンドで見てみるとこんな感じ。 For sh(dash) ubuntuの場合shはdashという軽量シェルにリンクしています Read commands from the command_string operand instead of from the standard input. Special 0 will be set from the command_name operand and the positional parameters (\$1, \$2, etc.) set from the remaining argument operands. For bash If the -c option is present,

    shellの-cオプションについてUbuntuのsh(dash)、bash、zshはそれぞれ違う挙動をする - Qiita
  • flexboxのバグに立ち向かう(flexboxバグまとめ) - Qiita

    注)文中の「コンテナ」「アイテム」について 文中でいう「コンテナ」「アイテム」は、flexコンテナとflexアイテムのことを指しています。 コンテナ display: flexや、wrap指定などをする 複数のアイテムを含む アイテム flex: 1 0 0%などの指定をする 1. アイテム潰れる問題(Safari) Chrome Safari 潰れてますね。 起きる条件 Safari なぜ コンテンツの最小サイズを尊重してくれない模様 どうすればいいのか flex-shrinkに0を指定 flex-basisにautoを指定(デフォ値なので、指定がなければそのままでOK) Safari10にて修正済み(つまり、SierraとiOS 10以降では対応不要) 2. align-items:center はみ出す問題 Chrome IE11 はみ出てますね。 起きる条件 IE10-11 f

    flexboxのバグに立ち向かう(flexboxバグまとめ) - Qiita
    a2ikm
    a2ikm 2020/03/31
  • ゴリラ言語の読み方 - Qiita

    先日、「ウ」と「ホ」と改行文字だけでプログラミングできる「ゴリラ言語」を作りました。 そういえば先日、「ウ」と「ホ」と改行だけでプログラミング出来るゴリラ言語作ったのでソース置いておきますね。「ウホッ」でもいいよ。https://t.co/XcXFcvDhRy — mattn (@mattn_jp) March 24, 2020 コード短いのでそのまま張っておきます。 package main import ( "bufio" "bytes" "fmt" "io" "io/ioutil" "os" "strconv" "strings" ) type Op int const ( Push Op = iota Signed Dup Copy Swap Discard Slide Add Sub Mul Div Mod Store Retrieve Mark Unsigned Call Ju

    ゴリラ言語の読み方 - Qiita
  • 内部実装から理解するgRPC - Qiita

    概要 目的 gRPCはDocumentにあるように以下の特徴があるかと思います。 protocol buffer のようなインターフェース定義語 (IDL) から生成されたコードを利用してRPCができる HTTP/2で通信することができ、リクエストとレスポンスをそれぞれ分割できる 多言語に対応している しかし、この記事ではこれらの機能の紹介ではなく、gRPCの仕組みを理解することを意図しています。 なぜそれを意図したかというと普段の開発でgRPCを利用しているものの、どのような仕組みでRPCが実現できているのかイメージが持てていなかったためです。そのために、grpc-goの内部実装(2019/5時点)を読み解きながら、実際の通信の中身を覗いてみました。 そして結果的には以下の効用がありました。 protoc-gen-goがprotocol-buffersから生成したコードがどのように利用さ

    内部実装から理解するgRPC - Qiita
  • osxでのzip解凍時に "Illegal byte sequence"と出て解凍出来ない場合 - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    osxでのzip解凍時に "Illegal byte sequence"と出て解凍出来ない場合 - Qiita
    a2ikm
    a2ikm 2020/03/24
    “ditto -V -x -k --rsrc xxx.zip ./xxx”
  • 「Vue.js + Go言語 + PAY.JP 」でクレジットカード決済できるWEBアプリケーション実装ハンズオン - Qiita

    そろそろカード決済の実装経験しとくかと思い、PAY.JPを眺めたらかなりドキュメントが充実してたので使いやすかった。今後、カード決済するサービスを作るのを見越して決済サービスをgRPCでマイクロサービス化してみた。そのまま Vue.js と Go言語を使い、カード決済できるWEBサービスのサンプルを試しに作ってみた。その実装を簡略化してハンズオン形式で紹介します。 全コードは GitHub にあげてます。 (こちらの画像は僕がVue.js+Goで作ったサービスで運用されています。https://ghlinkcard.com/) 得られるもの Vue.js + Go言語で簡易的なSPAをつくる経験 gRPC で簡単なマイクロサービスをつくる経験 PAY.JP を使ったカード決済の流れの理解 今回使う技術スタック フロントエンドVue.js。サーバーサイドは Go言語で実装します。それ以外

    「Vue.js + Go言語 + PAY.JP 」でクレジットカード決済できるWEBアプリケーション実装ハンズオン - Qiita
  • docker コマンドだけで起動する proxy サーバ - Qiita

    proxy コマンドはデフォルトで 3128 ポートをListenするのでそれをホスト側の 8888 にポートマッピングしている ブラウザの設定(Firefoxの場合) Manual Proxy setting でホスト名を localhost、ポート番号を先のコマンドでポートマッピングしたportに設定 参考 npm 5.2.0の新機能! 「npx」でローカルパッケージを手軽に実行しよう proxy - npm

    docker コマンドだけで起動する proxy サーバ - Qiita
  • MongoDB インデックス概要 - Qiita

    MongoDBでは、インデックスを使用する事で効率的にクエリの実行を行うことができます。 インデックスを使用しないと必ず全コレクションへのスキャンが発生します。 もしクエリに対して適切なインデックスが存在すれば、インデックスを使用しスキャンするドキュメントの数を制限することができます。 インデックスには、特定のフィールドまたはフィールドセットの値がフィールドの値順で格納されます。 インデックス項目の順序は、等価一致および範囲ベースのクエリ操作をサポートします。 さらに、インデックスを使用してソート結果を取得することができます。 基的にはMongoDBのインデックスは他のDBのインデックスと似ています。 コレクションに対してインデックスを定義し、ドキュメント中の任意のフィールドやサブフィールドへのインデックスをサポートしています。 デフォルト _id インデックス MongoDBでは、コレ

    MongoDB インデックス概要 - Qiita
    a2ikm
    a2ikm 2020/02/27
    カバリングインデックスあるんだ。
  • Go1.14のcontextは何が変わるのか - Qiita

    背景 Go1.14 で context パッケージが少し改善されるのは mattn さんの twitter を見て知った方も多いのではないでしょうか。このツイートされた時期と同じくらいにちょうど社内の勉強会で context パッケージをみんなで読んでおり、皆完全に context を理解したので ある程度実装も把握していました。勉強会では GoDoc と最新 master ブランチのコードが結構違うね、みたいな話もありました。ということで、個人的にとても興味深いツイートでした。Go.1.14のリリースノートには記載されていないのがミソです(2020/02/23現在)。 Go 1.4 のリリースノートにまだ含まれてないけど context の WithCancel と WithTimeout の伝搬がこのコミットで速くなってる。https://t.co/gJiT81uVyj — mattn

    Go1.14のcontextは何が変わるのか - Qiita
    a2ikm
    a2ikm 2020/02/23
  • Ruby(とC)でRubyを実装してみた(builtinで遊んでみた) - Qiita

    はじめに タイトルにもあるようにRubyのbuiltin(正式名称を知らないので呼び出し方法から拝借)というものを使ってRuby自体をRuby(とC)で実装してみた話です。 内容としてはRuby自体の実装に興味のある方向けの話になります。 builtinって? builtinとはRuby(とC)でRuby自体を実装するというものです(正式な名前は今のところないみたい?)。以下のように__builtin_<Cで定義した関数名>をRubyのコードから呼び出すことでRubyとCを使い、より簡単にRubyの実装を行うことができます。 たとえば、Hash#deleteはCで以下のように実装されています。 static VALUE rb_hash_delete_m(VALUE hash, VALUE key) { VALUE val; rb_hash_modify_check(hash); val =

    Ruby(とC)でRubyを実装してみた(builtinで遊んでみた) - Qiita
  • DXを大幅に低下させるDocker for Macを捨ててMac最速のDocker環境を手に入れる - Qiita

    DXはデジタルトランスフォーメーションではなくてDeveloper Experienceの方です 2020/05/26追記 https://qiita.com/nanasess/items/16ab9274c34bdc34e567 を使うことでVagrantを経由せずにDocker for Macの機能だけでMutagenを使うことができるようになりそうです。 パフォーマンスの測定はしていませんが、Docker for Macの設定のみでこの記事の手法と同等の速度が出るようになるかもしれません。 概要 Macでネイティブでの動作とほぼ同等の速度の安定したDocker環境を手に入れることができたので、その知見について公開します。 ものによりますが、最大10倍程度パフォーマンスの向上が見られました。 具体的な手法としてはVirtualBox + Dockerを用います。 設定は2ファイル50

    DXを大幅に低下させるDocker for Macを捨ててMac最速のDocker環境を手に入れる - Qiita
    a2ikm
    a2ikm 2020/02/17
    mutagenなるほど。
  • dockerでvolumeをマウントしたときのファイルのowner問題 - Qiita

    dockerでvolumeをマウントするときの問題点 docker runするときに-vオプションをつけることによってホストのディレクトリをコンテナ内にマウントすることができる。 ホスト側のファイルをコンテナ内で使いたい場合や、逆にコンテナで作ったファイルにホストからアクセスしたい場合に有用なのだが、ファイルのアクセス権限についてちゃんと考えておかないと問題が起きることがある。 例えば、ホスト内でのユーザーのuidが500だったとしよう。 $ id uid=500(ec2-user) gid=500(ec2-user) groups=500(ec2-user),10(wheel),497(docker) $ mkdir -p temp && touch temp/foo # 実験用に適当なディレクトリを作ってみる $ docker run -it -v $(pwd)/temp:/temp

    dockerでvolumeをマウントしたときのファイルのowner問題 - Qiita