メインコンテンツへスキップ

Platypus - RubyスクリプトをMac OSのアプリに変換できるツール

sveinbjornt/Platypus: Create native Mac applications from command line scripts.

スクリプト(Shellスクリプト、Perl、Python、Rubyなど)を標準のMac OS Xアプリケーション(.app)に変換するツール。

Platypusを使用すると、コマンドラインやターミナルを介さずに、スクリプトを直接実行可能なアプリケーションとして実行できる。

生成されるappのinfo.plistを編集することで、スクリプトをURLスキームに対応させることができる。

RubyではURLスキームで指定された文字列へARGVでアクセスできた。

関連記事

MacからWindowsへRDP接続する際にキーボードがUS配列になる場合

MacのMicrosoft Remote DesktopからWindowsにRDP接続する際、キーボードがUS(英語)配列で認識される場合の解消方法。MacからWindowsへRDP接続するとキーボードがJISではなくUS配列になるとき | 晴耕雨読からの引用です。 自分の環境では3.の前にWindowsを再起動する必要があった。 対処方法 # 接続先のWindowsで以下の作業を行います。 Win+R で regedit を入力してレジストリエディタを開き、以下のレジストリを開きます。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411 Layout File を「KBDJPN.DLL」から「kbd106.dll」に書き換えます。 MacOSからRDP接続し、日本語キーボードとして認識されているか確認します。

Macで定期実行(launchd)

用途によって配置するフォルダを選ぶ # フォルダ 使用法 /System/Library/LaunchDaemons Appleが提供するシステムデーモン /System/Library/LaunchAgents Appleが提供するエージェント。すべてのユーザに対してユーザごとに適用されます /Library/LaunchDaemons システムデーモン /Library/LaunchAgents すべてのユーザに対してユーザごとに適用されます ~/Library/LaunchAgents ログイン中のユーザにのみ適用されます LaunchAgentsはログイン前提、LaunchDaemonsはログインに依存せず実行される。 有効化・無効化 # 有効化 launchctl load /path/to/your.plist 無効化 launchctl unload /path/to/your.plist plistのサンプル # 20秒毎に実行・ログ出力 # 標準出力、標準エラー出力をログに出力 コマンドのサーチパスを指定 ワーキングディレクトを指定 /usr/local/bin/node main.jsを実行 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.demo.daemon.plist</string> <key>RunAtLoad</key> <true/> <key>StartInterval</key> <integer>20</integer> <key>StandardErrorPath</key> <string>/Users/chet/demo/stderr.log</string> <key>StandardOutPath</key> <string>/Users/chet/demo/stdout.log</string> <key>EnvironmentVariables</key> <dict> <key>PATH</key> <string><![CDATA[/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin]]></string> </dict> <key>WorkingDirectory</key> <string>/Users/chet/demo</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/node</string> <string>main.js</string> </array> </dict> </plist> 指定日時に実行 # <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>sample</string> <key>Program</key> <string>/Users/user_name/script/sample.sh</string> <key>StartCalendarInterval</key> <dict> <key>Minute</key> <integer>0</integer> <key>Hour</key> <integer>3</integer> </dict> <key>StandardOutPath</key> <string>/Users/user_name/script/sample.out</string> <key>StandardErrorPath</key> <string>/Users/user_name/script/sample.err</string> </dict> </plist> 参考にしたページ # Macの「ターミナル」でのlaunchdを使ったスクリプトの管理 - Apple サポート (日本) Creating Launch Daemons and Agents A Simple Launchd Tutorial. Suppose you’ve written a little script… | by Chet Corcos | Medium

OAuthでアクセストークンを取得するスクリプト

OAuthでアクセストークン、アクセストークンシークレットを取得するサンプル。毎回、同じようなスクリプトを書いて使い捨てにするのはムダなのでメモしておく。 ブラウザで表示されるURLへアクセスする リダイレクトされたURLのoauth_verifierの値を入力 access_token.token、access_token.secretが表示される require 'oauth' URL = "https://www.tumblr.com" consumer_key = 'Cls**********yaqV4' consumer_secret = 'RG****3KwFy' oauth = OAuth::Consumer.new(consumer_key, consumer_secret, site: URL) request = oauth.get_request_token(exclude_callback: true) puts "Access this URL: #{request.authorize_url}" print "oauth_verifier: " verifier = gets.chomp access_token = request.get_access_token(oauth_verifier: verifier) pp access_token

Webページから本文らしき部分を抽出する

さまざまなパターンの日本語文章をデータとして欲しいケースがあったので、指定したURLから本文らしき内容を抽出するスクリプトを書いた。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 require 'playwright' require 'readability' require 'html2text' # 指定したURLから本文らしき内容を抽出して返却する def html2text(url) Playwright.create(playwright_cli_executable_path: 'npx playwright') do |playwright| playwright.chromium.launch(headless: true) do |browser| begin page = browser.new_page page.goto(url, waitUntil: 'load') doc = Readability::Document.new(page.content) sleep 1 return {:title => page.title, :content => Html2Text.convert(doc.content) } rescue return {:title => nil, :content => nil } end end end end url = ARGV.shift doc = html2text(url) puts "#{doc[:title]}\n#{doc[:content]}" Javascriptでコンテンツを生成するページに対応するためPlaywrightを使用。 使用したライブラリ # cantino/ruby-readability: Port of arc90’s readability project to Ruby YusukeIwaki/playwright-ruby-client: Playwright client for Ruby soundasleep/html2text_ruby: A Ruby component to convert HTML into a plain text format.

Alfred

Alfred - Productivity App for macOS Mac用のキーボードショートカットアプリ。キー入力だけでアプリを起動したり、Web検索をしたり、コンピュータ上のファイルを検索したり、システムコマンドを実行したりできる。 Alfred関連ノート # AlfredからObsidianの保管庫を検索する Alfred常用のための設定と導入ワークフロー AlfredでDeepL翻訳するワークフロー deepl-alfred-workflow2