タグ

ブックマーク / qiita.com/ymm1x (13)

  • 【Ruby】キーワード引数をハッシュ変数として受け取る - Qiita

    このメソッドの中で {key1: 引数値, key2: 引数値} のような hash が欲しい。 まずはメソッドの引数の定義情報を得る 定義したメソッドの引数名の一覧は Method#parameters で得られる。 def my_method(key1:, key2:, key3:) p method(__method__).parameters # => [[:keyreq, :key1], [:keyreq, :key2], [:keyreq, :key3]] end my_method(key1: "val1", key2: "val2", key3: "val3") 上記の様に Method#parameters は引数の数だけの要素数の配列を返す。各要素の1つ目の要素は 引数の種類を表すシンボル、2つ目の要素は 引数名 となる。実際の引数の値は含まれない点に留意する。 今回は

    【Ruby】キーワード引数をハッシュ変数として受け取る - Qiita
    ymm1x
    ymm1x 2021/06/20
  • GROWI 上で Slack 通知をデフォルトで有効にする - Qiita

    前提 GROWI には Slack に更新情報を通知する機能があります。 通知できるものとしては、 ページ作成の通知 ページ更新の通知 コメント投稿の通知 などがあります。 通知を流したい場合、投稿時に以下のようにチェックボックスをオンにします。 このチェックボックスはデフォルトではオフになっており、通知を流したい時に都度オンにします。 なぜデフォルトで通知を有効にしたいか チーム内の情報共有のスピード感を上げたいため。 「通知したいときだけ通知」よりも「通知したくない理由がなければ通知」の方がチームのスタイルに合っていそうだった。 「Global notification」の設定により漏れなく通知することも可能だが、できれば任意で通知しないことも選択できる「User trigger notification」でやりたかった。 環境 GROWI 3.8.2-RC Chrome 81.0 カ

    GROWI 上で Slack 通知をデフォルトで有効にする - Qiita
  • モックでメソッド呼び出し時の引数を厳密にテストする - Qiita

    PhpUnit の Mock を使って引数の内容をテストするとき、 曖昧比較 (==) でテストするなら equalTo() を使うが 厳密比較 (===) でテストしたい場合は identicalTo() を使う。 最初 assertSame() のように sameTo() 的なメソッド名を想像していて中々見つけられなかったのでメモ。 e.g. 例として渡された二つの引数の引き算を行い、その結果を返す subtract() メソッドがあり そのメソッドに渡される引数の内容をテストしたいとする。 試しに with() を使って引数に 5 と 3 が渡されることをテストしてみる。 以下のようにequalTo() を使った曖昧比較の場合は、引数に文字列型を渡しても成功する。 $mock = $this->createMock(Something::class); $mock->method('

    モックでメソッド呼び出し時の引数を厳密にテストする - Qiita
  • ElasticBeanstalk 上の NodeJS が80番ポートへのアクセスを受けるまでの流れ - Qiita

    Elastic Beanstalk の NodeJS Platform でアプリケーションを作成すると 80 ポートでアクセスできる Web アプリケーションが簡単に出来上がる。 しかし NodeJS は 80 番ポートとは異なるポート 8081 番を Listen しており、 どういった経路で 80 番からのアクセスを受けているのか調べた。 ポート転送の流れ (結論) iptables (PREROUTING) 転送ポート: 80 --> 8080 nginx (Proxy) 転送ポート: 8080 --> 8081 node (Server) まず 80 番ポートへのアクセスを iptables が 8080 に変換し、 次に LISTEN 8080 の状態で起動している nginx が 8081 に転送、 次に LISTEN 8081 の状態で起動している NodeJS がリクエスト

    ElasticBeanstalk 上の NodeJS が80番ポートへのアクセスを受けるまでの流れ - Qiita
  • 【PHP】サバイバル性の高いログ関数 - Qiita

    アプリケーションにエラーは付き物ですが、エラー調査のために処理途中の 変数の内容をちょっとだけ覗き見たい! と思うことってよくありますよね。 開発中であれば var_dump() 関数や print_r() 関数などで画面に情報を出してしまえばいいですが、番環境の場合はそうもいかないのでログ関数に頼ることになると思います。 しかし世の中は無数のサーバがあり、サーバの数だけ異なった環境があります。 またサーバに置いてある PHP ファイルの数だけ無数の世界があります。 そんな無数にある環境の中、必ずしもフレームワークで提供されているような便利なログ関数を呼び出せるわけではないですし、xdebug のステップ実行が出来るわけではないと思います。 そこで過酷な状況下でも使えるようなサバイバルなログ関数を一つ持っておくと何かと便利です。私が普段使っているものは以下のような感じです。 サバイバルロ

    【PHP】サバイバル性の高いログ関数 - Qiita
  • 秘伝の var_dump 関数を公開します。 - Qiita

    様々なプロジェクトを渡り歩き少しずつ改良しながら使ってきた秘伝の var_dump() ラッパー関数です。 function d() { // 全引数の var_dump() の出力内容を変数に取り出し ob_start(); foreach (func_get_args() as $arg) { var_dump($arg); } $dump = ob_get_clean(); // 可読性のためインデント幅を2倍に (2 -> 4) $dump = preg_replace_callback( '/^\s++/m', function ($m) { return str_repeat(" ", strlen($m[0]) * 2); }, $dump ); // この関数の呼び出し元を取得 (ファイルパス・行番号) $caller = debug_backtrace(DEBUG_BAC

    秘伝の var_dump 関数を公開します。 - Qiita
    ymm1x
    ymm1x 2017/09/24
    書いた。
  • リモートブランチの git checkout を peco で簡単にする - Qiita

    Pull Request のレビュー時などリモートブランチを落としてくる際、毎回ブランチ名をコピペしてチェックアウトするのが地味に面倒なので peco でブランチを選択するだけでチェックアウトできるようにしました。 コマンド git checkout $(git branch -a --sort=-authordate | cut -b 3- | grep -v -- "->" | peco | sed -e "s%remotes/origin/%%")

    リモートブランチの git checkout を peco で簡単にする - Qiita
  • CakePHP3のbakeによるコード自動生成のプラクティス - Qiita

    この記事は CakePHP3 Advent Calendar 2016 の 9日目の記事です。 CakePHP といえば必要なソースコードを自動生成してくれる bake コマンドがとっても便利です。CakePHP3 になってより使いやすくなりました。 普段の業務で使いはじめて結構経ちましたので、いくつかプラクティスを紹介してみたいと思います。(ベストとは書かない) bake で生成したクラスは継承して使おう bake で生成されるコードの中には DB スキーマの情報を元にして生成されるコード が含まれます。 なので、以下のようなケースのときに困ります。(上から時系列) DB に users テーブルを作成する bake model して UsersTable クラスを生成する 生成された UsersTable クラスに何らかの追加実装を行う DB の users テーブルにカラムを追加する

    CakePHP3のbakeによるコード自動生成のプラクティス - Qiita
    ymm1x
    ymm1x 2016/12/09
    Advent Calendar の記事無事に公開されてた !
  • PHP で未使用の use import を削除する方法 - Qiita

    方法1: PhpStorm の整形機能を使う IDE の PhpStorm を使う場合、メニューバーの Code メニューの中にある Show Reformat File Dialog ( ⌥⇧⌘L ) を表示して Optimize imports にチェックを付けて実行すると、未使用の use import を削除できます。 一度チェックを入れて実行すると次以降は Reformat Code ( ⌥⌘L ) をするだけで削除できるようになります。 追記: コード整形をせずに use 一覧の最適化だけを行いたい場合は Optimize Imports ( ⌃⌥O ) で出来ます。 方法2: PHP-CS-Fixer を使用する コード整形ツールの PHP-CS-Fixer で整形ルールを設定して実行することでも削除できます。 コマンドラインで実行できるため、PhpStorm 以外のエディタ

    PHP で未使用の use import を削除する方法 - Qiita
  • 【PHP】オブジェクトを連想配列に変換する方法まとめ - Qiita

    オブジェクトを連想配列に変換する方法をまとめました。 以前、PHP にマジックメソッドとして __toArray() を追加しようという要望があったのですが、その要望は実現すること無くクローズされておりので、現状 PHP としてこれといった変換方法は提供されていません。 そのためケースに合わせて変換の方法を使い分ける必要があります。 方法1: 型キャストする 最もお手軽な方法です。 プロパティが非公開( protected や private )の場合、純粋なプロパティ名として取得できない点には注意が必要です。 変換コード class ChildProperty { public $publicProperty = true; protected $protectedProperty = true; private $privateProperty = true; } class Pare

    【PHP】オブジェクトを連想配列に変換する方法まとめ - Qiita
    ymm1x
    ymm1x 2016/10/27
    書いた
  • Redis で現在のオンライン人数をゆるく取得する - Qiita

    概要 たまに見かける「今このページ○人がこのページを見ています」などの人数を Redis のソート済みセット型でカウントしてみました。 完全なリアルタイムではありませんが、直近 N 秒以内にアクセスしたユーザをオンラインユーザと見なすことで比較的簡単&低コストに取得出来ます。 セットする内容 キー名: 適当な固定値をセット スコア: 最後にアクセスしたタイムスタンプをセット メンバ: ユーザIDをセット 方法 1. 最終アクセス時間の追加 or 更新 アクセス時にアクセスしたユーザの UserID でメンバを追加します。 既に同じ UserID のメンバが存在する場合は最新のタイムスタンプに更新します。 (例) 2016-10-01 10:00:00 に UserID: 100 のユーザがアクセスした場合:

    Redis で現在のオンライン人数をゆるく取得する - Qiita
    ymm1x
    ymm1x 2016/10/19
    かきました
  • 【dmemo】リネームしたテーブルのドキュメントを男らしく引き継ぐ - Qiita

    Cookpad 社の dmemo、最近業務で使ってます。 データベースドキュメント管理システム dmemo のご案内 - クックパッド開発者ブログ とても便利に使わせていただいてるのですが、一度テーブルのドキュメントを書いたあとにテーブル名をリネームしてしまうとドキュメントを引き継げないという問題がありました。 各カラムの Markdown ドキュメントを一つ一つコピペして保存してもいいのですが、男らしく dmemo の DB を直接書き換えて引き継ぎしてみました。 手順 table_memos テーブルの旧レコードの id を一時的に負数などに置き換える (ex: 50 -> -50) table_memos テーブルの新レコードの id を旧レコードの ID で置き換える (ex: 100 -> 50) dmemo (Web) 上で旧テーブルが Unlinked table に変わって

    【dmemo】リネームしたテーブルのドキュメントを男らしく引き継ぐ - Qiita
    ymm1x
    ymm1x 2016/10/19
    かきました
  • MySQL のテーブルカラム情報を TSV で取得する - Qiita

    MySQLDB スキーマに関する情報を information_schema DB から参照でき、カラムに関する情報は columns テーブルから参照できます。 なので、例えば以下のようなクエリでカラムに関する情報を一覧して取得できます。 SELECT * FROM `information_schema`.`columns` WHERE `table_schema` = "任意DB名" AND `table_name` = "任意テーブル名"; このクエリでは以下のような情報を取得できます。 必要に応じて SELECT に指定するといいと思います。 (よく使いそうなフィールドだけ太字にしました) TABLE_CATALOG TABLE_SCHEMA: DB名 TABLE_NAME: テーブル名 COLUMN_NAME: カラム名 ORDINAL_POSITION: スキーマ上のカ

    MySQL のテーブルカラム情報を TSV で取得する - Qiita
    ymm1x
    ymm1x 2016/10/19
    かきました
  • 1