Sidekiqのジョブを削除する [Rails]

ローカル環境で溜まってしまった無駄なジョブにサヨナラする方法です。

  • 処理待ちジョブ確認
  • 処理待ちジョブ1件削除
  • 処理待ちジョブ全件削除
  • リトライ待ちジョブ確認
  • リトライ待ちジョブ1件削除
  • リトライ待ちジョブ全件削除
  • とりあえず全部削除

の7本立て

処理待ちジョブの確認

require 'sidekiq/api'
Sidekiq::Queue.new.each { |job| puts [job.jid, job.klass, job.args].join("\t") }

処理待ちジョブ1件削除

require 'sidekiq/api'
Sidekiq::Queue.new.find_job(<job id>).delete

処理待ちジョブ全件削除

require 'sidekiq/api'
Sidekiq::Queue.new.clear

リトライ待ちジョブ確認

require 'sidekiq/api'
Sidekiq::RetrySet.new.each { |job| puts  [job.jid, job.klass, job.args].join("\t") }

リトライ待ちジョブ1件削除

require 'sidekiq/api'
Sidekiq::RetrySet.new.find_job('job_id /JID').delete

リトライ待ちジョブ全件削除

require 'sidekiq/api'
Sidekiq::RetrySet.new.clear

とりあえず全部削除

require 'sidekiq/api'
# 処理待ちジョブ削除
Sidekiq::Queue.new.clear
# リトライ待ちジョブ削除
Sidekiq::RetrySet.new.clear

学び方を学ぶ [SOFT SKILLS]

SOFT SKILLSはソフトウェア開発者の人生マニュアルと書いてある通りエンジニアにとって必要な考え方や生き抜き方が書かれている。
その中でも印象に残った第3部「学ぶことを学ぼう」で紹介されている独習のテクニックについて紹介する。

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

効率的な独習の方法

この本では以下の3つのことが独習に重要だと言っている

  1. どうすれば始められるか - 学び始めるための基本的な知識は何か。
  2. テーマの幅 - 学ぼうとしているものの規模はどれくらいで、何ができるのか。
  3. 基礎 - その技術を使うために知っていなければならない基本的なことは何か。

全体像を把握し、必要な部分だけを効率的に学ぼうということ。
言葉にしたら単純な話だが、実際に参考書を買って最初から最後まで読んでしまうことが多い。
パレートの法則でもあるように技術の80%をカバーする20%の知識に絞って学ぶようにしようという話のよう。

独習の10ステップ

80%の効果を引き出す20%の部分を見つけ出し、独習をするために、10のステップに分けて解説している。

  1. 全体像をつかむ
  2. スコープを決める
  3. 成功の基準を決める
  4. 参考資料を見つける
  5. 学習プランを作る
  6. リソースにフィルターをかける
  7. 使い始められるようにする方法を学ぶ
  8. 遊び回る
  9. 役に立つことができるところまで学ぶ
  10. 教える

1~6は準備、7~10を繰り返して独習を進める。
各項目について解説する。

1. 全体像をつかむ

数時間使い、ネットの記事や、本の目次などをチェックする。
どのようなサブテーマがあり、どれくらいの大きさなのか、全体像をつかむ。

2. スコープを決める

独習に使える時間に合わせてスコープを決める。

例:簡単なアプリを作るために必要なReactJsの基礎を学ぶ

3. 成功の基準を決める

目標が達成できたか判断するための成功の基準を決める。

例:ReactJsを使って簡単なTODOアプリを作ることができる

4. 参考資料を見つける

ブログや本など可能な限り参考になるものをリストアップする。
クオリティは考えずとにかく多く出す。

5. 学習プランを作る

参考資料を見つける で集めた情報を元に自身の学習プランを作る。
本の目次などを参考に自分が達成するべき目標に最短で届くプランにする。
自身で本を書く場合の目次をイメージするのが分かりやすい。

6. リソースにフィルターをかける

参考資料の中から、自身の学習プランにとって最も役立ちそうな内容を持つものを拾い出す

7. 使い始められるようにする方法を学ぶ

環境構築や基本的な「Hello, World」のように簡単に使い始められるところまでを学ぶ。
参考書を全部読んだりする必要はない。

8. 遊び回る

このステップにルールはない。
前ステップで学んだ基礎を元に遊び倒す。
出てきた疑問をリストアップしておく。

9. 役に立つことができるところまで学ぶ

遊び回った時に出た疑問を参考資料を元に解消していく。
そして設定した目標を達成するために進める。

10. 教える

独習の中で必要不可欠なステップ。
人に教えることで自身の知識を整理し、抜けている知識を埋められる。
直接教える以外にも、ブログ、YouTubeなどでもいい。
重要なのは自分が学んだことを、他の人が理解できるように構成すること。

最後に

自分が欲しいアプリやツールを作ったりする時は、似たようなステップを踏んでいたように思う。
次に新しい言語を学ぶ時はこのステップを参考にして、効率よく独習していきたい。

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

Javascriptでクリップボードにテキストコピーする

TL;DR

const text = 'コピーするテキスト';
const textarea = document.createElement('textarea');
textarea.style.position = 'fixed';
textarea.style.opacity = 0;
textarea.value = text;

document.body.appendChild(textarea);

textarea.select();
document.execCommand('Copy');

document.body.removeChild(textarea);

解説

コピーするテキストが入力されたtextareaを生成してDOMに追加 ※ 改行を含まないならtextareaでなくinput[type=text]でも可能

const text = 'コピーするテキスト';
const textarea = document.createElement('textarea');
textarea.style.position = 'fixed';
textarea.style.opacity = 0;
textarea.value = text;

document.body.appendChild(textarea);

textareaを選択させexecCommandを使いコピーさせる

textarea.select();
document.execCommand('Copy');

使い終わったtextareaをDOMから削除

document.body.removeChild(textarea);

参考

developer.mozilla.org

GitHubとJiraのチケット名とURLをコピーするChromeExtensionを作った

TL;DR

GitHubとJiraのチケット(issue,PR)番号とタイトルとURLをMarkdownか平文で1クリックでコピーできるChromeExtensionを公開しました。

chrome.google.com

背景

誰かにタスクを振る時や、自分のタスクを共有する時にいちいちチケット名とURLをコピーするのが面倒…
GitHubのissueをコピーできるExtensionはあったのですが、Jiraが無かったので、GitHubとJira両方に対応した一括コピーのChromeExtensionを作って公開しました。

使った言語

Javascript,jQueryとほんの少しのHTML,CSS

実装

チケット番号、タイトルの取得

jQueryでDOMを辿りチケット番号やタイトルを取得
GitHub,JiraのDOM構成が変わると死にます

  // GitHubからチケット番号、タイトルを取得
  function getTitleForGithub() {
    const h1 = 'h1.gh-header-title';
    const title = document.querySelectorAll(`${h1} .js-issue-title`)[0].innerText.trim();
    const num = document.querySelectorAll(`${h1} .gh-header-number`)[0].innerText;

    return `${num}|${title}`;
  }

  // Jira(チケット詳細ページ)からチケット番号、タイトルを取得
  function getTitleForJiraBrowse() {
    const title = document.querySelectorAll('h1.hYXQEK')[0].innerText.trim();
    const num = document.querySelectorAll('a.ihyVSq')[0].innerText;

    return `${num}|${title}`;
  }

  // Jira(一覧ページ)からチケット番号、タイトルを取得
  function getTitleForJiraBoard() {
    const selected = '.ghx-selected';
    const title = document.querySelectorAll(`${selected} .ghx-summary`)[0].innerText.trim();
    const num = document.querySelectorAll(`${selected} a.ghx-key`)[0].getAttribute('aria-label');

    return `${num}|${title}`;

クリップボードへのコピー

見えない位置に textarea を作りコピーさせる一般的な方法
クリップボードを使用するには manifest.jsonpermissions: ['clipboardWrite'] を指定する必要があります。

  // textをクリップボードへコピー
  function execCopy(text) {
    const textarea = document.createElement('textarea');
    textarea.style.position = 'fixed';
    textarea.style.opacity = 0;
    textarea.value = text;

    document.body.appendChild(textarea);

    textarea.select();
    document.execCommand('Copy');

    document.body.removeChild(textarea);
  }

コードは全てGitHubで見られます。
github.com

コピーする形式

Markdownと平文でコピーできます

Markdown

[<チケット番号>|<チケット名>](<チケットURL>)

平文

<チケット番号>|<チケット名>
<チケットURL>

おわりに

ブラウザ上での処理を自動化したり簡略化したりするのにChromeExtensionは便利です。
処理がフロントのJs(ChromeExtensionで言うContentJs)だけで済む場合は、ExtensionにしないでもTampermonkeyで簡単に実装できます。
お試しあれ。