**Show HN:**

**Shittp – SSH経由で共有する一時的なDotfile(設定ファイル)**

2025/12/21 21:33

**Show HN:** **Shittp – SSH経由で共有する一時的なDotfile(設定ファイル)**

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

shittp は、SSH を介してユーザーの dotfiles(

.profile
.vimrc
.tmux.conf
などを含む
~/.config/shittp
ディレクトリをパッケージ化し、tar アーカイブにまとめて base64 エンコードした後、遠隔側でスクリプトを実行してファイルを復元し、セットアップスクリプトを読み込み、エイリアス(
vim
tmux
など)付きの対話型シェルを起動し、一時データをクリーンアップする軽量 POSIX‑shell ユーティリティです。
このツールは標準ユーティリティ (
ssh
,
tar
,
base64
,
mktemp
) のみで構成され、次のように一行でインストールできます:

curl -fsSL https://raw.githubusercontent.com/FOBshippingpoint/shittp/refs/heads/main/install.sh | sh

コマンドフロー:パック → 伝送(base64 文字列 + スクリプト)→ 遠隔側でアンパック → 初期化 → クリーンアップ。

オプションと環境変数

--config-dir DIR
,
--client CLIENT
,
-v/--version
; コマンドとして
where
print
など; 環境変数として
SHITTP_CONFIG_DIR
,
SHITTP_SSH_CLIENT
,
SHITTP_HOME

Docker 統合

docker run -it alpine /bin/sh -c "$(shittp print)"

これにより、dotfiles をコンテナに注入できます。

制限事項:OS の

ARG_MAX
限界(Alpine では約 100 K ファイル)により、大規模な設定で失敗する可能性があります。

開発とテスト:shellcheck、shellspec、および Docker を使用し、Makefile ターゲットには

help
,
lint
,
unit
,
integration
,
build
,
clean
が含まれます。

このプロジェクトは、gzip/gunzip + Bash で構成された以前の kyrat ツールから進化し、tar を使用した POSIX 互換実装へと変わりました。ラップトップ、サーバー、またはコンテナ間で迅速かつ再現可能なシェル設定が必要な開発者に最適です。

本文

shittp – SSH を使ってドットファイルをリモートマシンへ簡単に転送


インストール

必要な依存関係: POSIX シェル、

ssh
tar
base64
mktemp

curl -fsSL https://raw.githubusercontent.com/FOBshippingpoint/shittp/refs/heads/main/install.sh \
  --output install.sh
chmod +x install.sh
./install.sh

使い方

  1. ローカルでドットファイルを編集する

    cd ~/.config/shittp
    echo 'aloha() { echo hello; }' >> .profile
    $EDITOR .vimrc
    $EDITOR .tmux.conf
    
  2. リモートホストへログイン

    shittp john@other.machine
    john$ aloha        # 出力: hello
    john$ vim          # エイリアスは "vim -u $SHITTP_HOME/.vimrc"
    john$ tmux         # エイリアスは "tmux -L shittp -f $SHITTP_HOME/.tmux.conf"
    
  3. Docker コンテナを使う場合

    docker run -it alpine /bin/sh -c "$(shittp print)"
    $ aloha            # 出力: hello
    

動作概要

ステップ説明
Packドットファイルを tar でアーカイブし、base64 文字列へ変換します。
Transportbase64 文字列とセットアップスクリプトを SSH のリモートコマンドとして送ります。
Unpackリモート側で base64 をデコードし、一時ディレクトリに展開します。
Initセットアップスクリプトを
source
して対話型シェルを起動します。
Cleanup切断後に一時ディレクトリを削除します。

元々のアイデアは kyrat

gzip/gunzip
と Bash を使用)から来ており、
shittp
tar
と POSIX 互換シェルで実装されています。


ヘルプ情報

shittp [options]... [command] [ssh_options]... destination [-- ssh_command]

オプション

オプション説明
-h, --help
ヘルプリストを表示します。
--config-dir DIR
設定ディレクトリを指定します。(デフォルト:
~/.config/shittp
--client CLIENT
SSH クライアントコマンドを指定します。(デフォルト:
ssh
-v, --version
shittp のバージョンを表示します。

コマンド

コマンド説明
where
デフォルトの設定ディレクトリパスを表示します。
print
SSH を実行せずにコマンド文字列だけを出力します(Docker 用)。

基本的な SSH ログイン

shittp -oStrictHostKeyChecking=no john@example.com

リモート関数の実行

shittp john@example.com -- foo bar
# または
shittp -oRemoteCommand='foo bar' john@example.com

Docker 連携

docker run -it alpine /bin/sh -c "$(shittp print)"

Dropbear クライアント使用時

shittp --client dbclient john@example.com

環境変数

変数スコープ説明
SHITTP_CONFIG_DIR
Localドットファイルが置かれているディレクトリ。(デフォルト:
~/.config/shittp
SHITTP_SSH_CLIENT
LocalSSH クライアントのパス(
--client
で上書き)。
SHITTP_SHELL
Local/Remoteリモート側で使用するシェルパス。
SHITTP_HOME
Local/Remotetarball を展開するディレクトリ。
SHITTP
Remote
shittp_init.sh
のパス。
[shittp] Inited
が表示されない場合はここを
source
してください。
SHITTP_INITED
Remoteshittp が正常に初期化されたら 1 に設定されます。

制限事項

大きな構成ファイルは OS の最大引数長(

ARG_MAX
)制限で読み込み失敗する場合があります。
Alpine Linux では 100 KB 程度のファイルがエラーを起こすことがあります。
二段階 SSH 接続 (
tar czf - | ssh host tar xzf -
) は解決策ですが、パスフレーズを2回入力する必要があります。


開発

必要な依存関係:

shellcheck
shellspec
docker
.

make help

Makefile ターゲット

ターゲット説明
help
このヘルプを表示します。
lint
shellcheck を実行します。
unit
shellspec でユニットテストを実行します。
integration
統合テストスクリプトを実行します。
webdev
ホームページ用のウェブサーバーを起動します。
build
すべてのチェックを通過し、tarball をビルドします。
clean
ビルドステップで作成された shittp tarball を削除します。

同じ日のほかのニュース

一覧に戻る →

2025/12/22 3:09

**ロギングは最低だ**

## Japanese Translation: > **要約:** > ログは通常のアプリケーション起動を記録しています。HttpServer が 0.0.0.0:3000 で開始し、PostgreSQL プールが 20 コネクションで初期化され、リクエスト処理中に Redis キャッシュルックアップが行われます。`/api/v1/users/me` への GET は遅いデータベースクエリ(847 ms)と失敗した Redis ルックアップをトリガーし、3 回の DB クエリと 1 回の外部呼び出し後にリクエストが正常に完了します。 > その直後に PostgreSQL プールが枯渇します:20 個のアクティブコネクションと 147 件の待機リクエストがあり、タイムアウトを示唆(「pool_size を増やすかクエリを最適化」)します。同時に、支払ゲートウェイへの繰り返しタイムアウトにより `payment-api` のサーキットブレーカーが閉鎖状態から開放状態へ 5 回の失敗後に遷移します。 > システムはまた、重要なメモリ圧力(ヒープ ~1.93 GB / 2.14 GB 制限)と GC ポーズ (~847 ms) をログします。バックグラウンドジョブ(`weekly_email_digest`)は低優先度キューで実行され、2341 ms で完了し、1847 通のメールを送信、3 件が失敗しました。 > これらのイベントは、現在の DB プールサイズとクエリ性能が負荷に対して不十分であることを示しています。調整なしではリクエスト遅延が増加し、さらにサーキットブレーカーが頻繁に開放されることでユーザー体験が低下します。

2025/12/22 5:55

ローカルコーディングモデルへのガイド

## Japanese Translation: ## 要約 この記事は、非常に高性能なMacBook Pro(特に**128 GBのRAMを搭載したモデル)がローカルで大規模言語モデルを動かせることを主張し、高価なAIコーディングサブスクリプションを排除または劇的に削減でき、ほとんどの開発タスクで同等のパフォーマンスを提供すると述べています。 ローカルモデルが典型的なソフトウェア開発作業の約**90 %**をカバーし、Claude Codeなどのサービスと同様であること、残りの**10 %**は多くの場合重要な本番機能に関わることを説明しています。 メモリ要件は次のように定量化されています:30億パラメータモデルは16ビット精度で約**60 GBのRAM**が必要です。**8ビット重みなどの量子化**や**ハイブリッドアテンション**といった手法でその需要を下げることができますが、著者はさらなるKVキャッシュ量子化がパフォーマンスに悪影響を与える可能性があると指摘しています。 実用的な可行性は **MLXベースのMacBook Proセットアップ** で示されており、macOS最適化されたサービング(MLX)がOllamaなどのクロスプラットフォームオプションよりもトークン処理速度で優れていることを確認しています。実際の手順としては macOS のVRAM制限を増やす (`sudo sysctl iogpu.wired_limit_mb=110000`)、`mlx-lm` をインストールし、次のようなサーバーコマンドを実行することが挙げられます: `python -m mlx_lm.server --model mlx-community/Qwen3-Next-80B-A3B-Instruct-8bit`。 記事ではまた、OpenAI API標準をサポートするローカルコーディングツールの推奨リスト(**OpenCode, Aider, Qwen Code, Roo Code, Continue**)も紹介しています。多くのコードエディタがテスト時にツール呼び出し統合が壊れたり不完全だったことを指摘し、ツール品質の重要性を強調しています。 主な発見:ローカルモデルはクラウドフロンティアツールより**1世代遅れることが多い**ものの、多くのタスクを十分に処理できるため、低価格サブスクリプションや無料オプションと組み合わせてローカルフォールバックを持つことで価値があります。 将来展望:ローカルモデルが縮小・改善し、クラウド価格が上昇するにつれて、**高RAMノートパソコンはコスト意識のある開発者にとってますます魅力的**になるでしょう。これには費用節約、信頼性(プロバイダー停止なし)、プライバシー/セキュリティ(データがマシン上に留まる)、オフライン可用性といったメリットが含まれます。

2025/12/22 6:07

ギフトカードの責任回収ポイント

## Japanese Translation: ### 要約 ギフトカード詐欺は増加傾向にあるものの、ほとんど規制されていないため、消費者や商取引先がほぼ無防備で、救済策も限られています。デビットカード窃盗は消費者保護責任移転によって恩恵を受けますが、ギフトカードはその保護の対象外であり、被害者が損失を取り戻すことはほとんどありません。2024 年に FBI インターネット犯罪苦情センターは、盗まれたカード番号と PIN を含む詐欺額 166 億ドルを記録しました。犯人はその価値を現金化したり、暗号資産や商品へ変換したり、洗浄サービスのサプライチェーンを通じて処理します。 AARP の最近のポッドキャスト広告で「ギフトカードで支払うことを求めるのは常に詐欺だ」と主張する内容は、実際には多くの企業や非銀行利用者が正当に使用しているこれらの金融商品を誤解させています。この広告は、歴史的な規制不足が日常購入でギフトカードに依存する人々に実質的なコストを課していることを隠しています。 小売業者は、規制や運用上の複雑性から、Blackhawk Network や InComm Payments などの専門家にギフトカードプログラムを外部委託することがよくあります。連邦・州法(ほとんどのギフトカードを免除するが未請求残高の報告を要求するエスケートメント法、プリペイド決済の例外規定である Regulation E、および 2,000 ドル以下のクローズド・ループギフトカードを KYC/AML から免除する FinCEN 規則)は、プリペイドカードがほぼ未規制であるギャップを生み出します。1 日あたり 10,000 ドル以上の販売がある場合、発行者は再び FinCEN の監視対象になります。 これらの規制の空白により、多くのプロバイダーは堅牢な詐欺調査プロセスを欠いています。窃盗を報告した顧客は通常、迅速な補償ではなく警察への届出を促されます。Paysafe やその Openbucks 子会社などの企業は、ギフトカードを支払手段として使用し、銀行口座がないまたは少ない消費者向けに代替金融サービスプラットフォームを構築しており、この許容的な環境で事業を展開しています。 専門家や擁護団体は、従来の銀行サービスとは異なる人口層を対象としているため、これらの代替 FS エコシステムを誤解しがちです。この記事では、AARP のギフトカードに関する警告が歴史的な規制の抜け穴から生じており、それがギフトカードに依存する消費者に実質的な負担をもたらしていることを強調しています。

**Show HN:** **Shittp – SSH経由で共有する一時的なDotfile(設定ファイル)** | そっか~ニュース