| name | description |
|---|---|
find-unused-pm |
到達可能性分析を使用してプロジェクト内の未使用のPerlパッケージ(.pmファイル)を見つける |
このコマンドは以下の手順でプロジェクト内の未使用のPerlモジュールファイル(.pm)を見つけます:
- テンプレートをもとに、検出スクリプトを作成
- スクリプトを実行して未使用パッケージを検出
| #!/usr/bin/env perl | |
| # perldoc.jp用の未使用パッケージ検出スクリプト | |
| use strict; | |
| use warnings; | |
| use File::Find; | |
| use File::Spec; | |
| # 設定(ハードコード) | |
| my $BASE_DIR = '.'; | |
| my @ENTRY_POINTS = ('app.psgi'); |
| // ==UserScript== | |
| // @name Blog Dolphin for Hatena | |
| // @namespace http://tampermonkey.net/ | |
| // @version 1.0 | |
| // @description はてなブログ編集画面で、ChatGPTが本文を批評してくれるイルカ | |
| // @match https://blog.hatena.ne.jp/* | |
| // @grant GM_registerMenuCommand | |
| // @grant GM_xmlhttpRequest | |
| // @grant GM_setValue | |
| // @grant GM_getValue |
| #! /usr/bin/ruby | |
| require 'net/http' | |
| require 'json' | |
| require 'uri' | |
| require 'fileutils' | |
| # Replace with your actual API key | |
| API_KEY = ENV['OPENAPI_KEY'] | |
| def generate_theme |
| #! /usr/bin/ruby | |
| require 'logger' | |
| require 'json' | |
| LOGGER = Logger.new(STDOUT) | |
| if ENV['DEBUG'] | |
| LOGGER.level = Logger::Severity::DEBUG | |
| else | |
| LOGGER.level = Logger::Severity::WARN |
| <p><button id="masawada-cast-button" style="display: none">masawada castを開始する</button> | |
| <div id="masawada-cast-button-not-supported" style="display: none">お使いのブラウザは<a href="https://developer.mozilla.org/en-US/docs/Web/API/Presentation_API" target="_blank">Presentation API</a>に対応していないようです</div> | |
| </p> | |
| <script> | |
| (function () { | |
| const button = document.querySelector('#masawada-cast-button'); | |
| const error = document.querySelector('#masawada-cast-button-not-supported'); | |
| const show = function () { | |
| button.style.display = 'block'; | |
| }; |
| (() => { | |
| const speak = (body, isRetry) => { | |
| window.speechSynthesis.cancel() | |
| if (!body) return; | |
| console.log('speak ' + body); | |
| const synth = window.speechSynthesis; | |
| const allVoices = synth.getVoices(); | |
| const jaVoices = allVoices.filter(v => v.lang === 'ja-JP'); | |
| const voice = jaVoices[0]; | |
| if (!voice && !isRetry) { |
| function crawl() { | |
| var content = UrlFetchApp.fetch("https://tsukurioki.hatenablog.com/about").getContentText(); | |
| var entries = content.match(/(\d+) 記事/)[1]; | |
| var subscribers = content.match(/(\d+) 人/)[1]; | |
| Logger.log(subscribers); | |
| var sheet = SpreadsheetApp.openById("*************************").getSheetByName('data'); | |
| var newRow = [new Date(), +entries, +subscribers]; | |
| sheet.appendRow(newRow); | |
| } |
| #!/bin/sh | |
| # | |
| # Create a animation of of a rotating image. | |
| # Some alpha composition is used to crop the result to the original size. | |
| # | |
| command="convert -delay 10 $1 -resize 50% -trim +repage -bordercolor white" | |
| command="$command \\( +clone -border 1x1 -fill lightsteelblue" | |
| command="$command -colorize 100% \\) -gravity center" | |
| for i in `seq 100 -2 20 ;`; do |
| import * as ts from "typescript"; | |
| import * as Lint from "tslint"; | |
| export class Rule extends Lint.Rules.AbstractRule { | |
| /* tslint:disable:object-literal-sort-keys */ | |
| public static metadata: Lint.IRuleMetadata = { | |
| ruleName: "no-jquery-argument", | |
| description: "Disallows receiving jQuery object in arguments.", | |
| rationale: Lint.Utils.dedent` | |
| Do not receive jQuery Object. You must receive HTMLElement or Array<HTMLElement>. |