[go: up one dir, main page]

「PowerShell」を含む日記 RSS

はてなキーワード: PowerShellとは

2025-10-24

パソコンの大先生を雇いたい

ぼんやりとWindows11が分かってるくらいでいい

コマンドプロンプトPowerShellがググれば叩けるくらいで、Wi-Fiイーサネットの違いくらい分かればいい

インターネットブラウザという概念が分かっていて、Chrome拡張機能chrome://flags/があることを知っていてほしい

イベントビューアーを開いて大雑把に何が起きてるかを把握するくらいはできるといい

拡張子というもの認識があって、動画にはコンテナコーデックがあることを理解していてほしい

Excelは遠回りでも求める処理を実装する力があるとよくて(今ならGPTでどうにもできるし)

そういう人、最低賃金で雇えませんかね?

2025-08-28

tar.gzの解答はどっち? なんていう2択クイズ画像がXのおすすめに表示されてきたけど、こういう何の略だかわからないオプションだらけのシェルを使い続ける羽目になるのは不幸。

その点、PowerShellコマンド名のオプションもフルスペルで用意されているのが助かる。

2025-08-25

gitって何で操作するのが鉄板なんだ

PowerShellぽちぽちやってるけど、他の人何使ってるんだろう

いまさら聞けない

2025-06-13

我が名はサイボーグdorawii

パーマリンク署名対象にするより堅牢自動化を作れた。

一度投稿したうえで別タブを開いてプログラム的(fetch)に送信してその別タブが閉じられる仕組み。

改めてスクリプト配布しちゃる

最初投稿してエントリページに移動した親タブ側のjsコード
// ==UserScript==
      // @name         PGP署名検出と別タブ自動編集
      // @namespace    http://tampermonkey.net/
      // @version      1.0
      // @description  PGP署名がない投稿自動編集ページへ誘導
      // @match        https://anond.hatelabo.jp/*
      // @grant        GM_setValue
      // @grant        GM_getValue
      // @grant        GM.openInTab
      // ==/UserScript==

      (function () {
        'use strict';

        const body = document.getElementById('entry-page');
        if (!body) return;

        const titleText = document.title;
        if (!titleText.includes('dorawii')) return;

        const pgpRegex = /BEGIN.*PGP(?: SIGNED MESSAGE| SIGNATURE)?/;
        const preElements = document.querySelectorAll('div.body pre');
        let hasPgpSignature = false;

        for (const pre of preElements) {
          if (pgpRegex.test(pre.textContent)) {
            hasPgpSignature = true;
            break;
          }
        }

        if (hasPgpSignature) return;

        const editLink = document.querySelector('a.edit');
        const childTab = GM.openInTab(editLink.href, { active: false, insert: true, setParent: true });

      })();
親タブから開かれる編集ページの子タブのjsコード
 // ==UserScript==
      // @name         編集ページ処理と自動送信・閉じ
      // @namespace    http://tampermonkey.net/
      // @version      1.0
      // @description  編集ページで署名処理と送信、タブ自動閉じ
      // @match        https://anond.hatelabo.jp/dorawii_31/edit?id=*
      // @grant        GM_getValue
      // @grant        GM_xmlhttpRequest
      // @grant        GM_setClipboard
      // @grant        GM_notification
      // @connect      localhost
      // ==/UserScript==

      (async function () {
        'use strict';

        const shouldRun = await GM_getValue('open-tab-for-edit', '0');

        const textareaId = 'text-body';
        const textarea = document.getElementById(textareaId);

        if (!textarea) return;

        const content = textarea.value;

        const pgpSignatureRegex = /-----BEGIN PGP SIGNED MESSAGE-----[\s\S]+?-----BEGIN PGP SIGNATURE-----[\s\S]+?-----END PGP SIGNATURE-----/;
        if (pgpSignatureRegex.test(content)) {
          console.log('[PGPスクリプト] 署名が検出されたためそのまま送信します');
          return;
        }

        const httpRequest = (url, data) => {
          return new Promise((resolve, reject) => {
            GM_xmlhttpRequest({
              method: 'POST',
              url: url,
              headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
              data: `value=${encodeURIComponent(data)}`,
              onload: function (response) {
                resolve(response.responseText);
              },
              onerror: function (error) {
                reject(error);
              }
            });
          });
        };


        // textarea の値を取得
        // 1. 現在のページのURLからURLオブジェクト作成
        const currentUrl = new URL(window.location.href);

        // 2. ベースとなる部分 (例: "https://anond.hatelabo.jp") を取得
        const origin = currentUrl.origin;

        // 3. 'id' パラメータの値 (例: "20250610184705") を取得
        const idValue = currentUrl.searchParams.get('id');

        // 4. ベース部分とIDを結合して、目的URL文字列を生成
        //    idValueが取得できた場合のみ実行する
        let newUrl = null;
        if (idValue) {
          newUrl = `${origin}/${idValue}`;
        }

        // 5. 生成されたURL変数に代入し、コンソールに出力して確認
        console.log(newUrl);
        const valueToSend = newUrl;

        try {
          const signatureText = await httpRequest('http://localhost:12345/run-batch', valueToSend);
          console.log('バッチ応答:', signatureText);
          if (!signatureText.includes('BEGIN PGP SIGNED MESSAGE')) {
            alert('PGP署名クリップボードに見つかりませんでした。');
            return;
          }

          const newText = content.replace(/\s*$/, '') + '\n' + signatureText + '\n';
          textarea.value = newText;

          console.log('[PGPスクリプト] 署名を貼り付けました。送信を再開します。');


          const form = document.forms.edit;

          const newForm = form.cloneNode(true);
          form.replaceWith(newForm);

          newForm.addEventListener('submit', async (e) => {
            e.preventDefault(); // HTML標準のsubmitをキャンセル
            const bodyText = textarea?.value || '';

            // reCAPTCHA トークンの取得
            const recaptchaToken = await new Promise((resolve) => {
              grecaptcha.enterprise.ready(() => {
                grecaptcha.enterprise.execute('hoge', { action: 'EDIT' })
                  .then(resolve);
              });
            });

            // POSTするデータの構築
            const formData = new FormData(newForm);
            formData.set('body', bodyText);
            formData.set('recaptcha_token', recaptchaToken);
            formData.set('edit', '1');
            try {
              const response = await fetch(newForm.action, {
                method: 'POST',
                body: formData,
                credentials: 'same-origin'
              });


              if (response.ok) {
                console.log('送信成功');
                window.close();


              } else {
                console.error('送信失敗', response.status);
              }
            } catch (err) {
              console.error('送信中にエラーが発生', err);
            }

          });

          // プログラム的に送信トリガー
          newForm.dispatchEvent(new Event('submit', { bubbles: true }));

        } catch (e) {
          console.error('バッチ呼び出し失敗:', e);
        }

      })();
node.jsで動かすローカルサーバーコード
const http = require('http');
const { exec } = require('child_process');
const querystring = require('querystring');

const server = http.createServer((req, res) => {
  if (req.method === 'GET' && req.url === '/ping') {
    res.writeHead(200);
    res.end('pong');
  } else if (req.method === 'POST' && req.url === '/run-batch') {
    let body = '';

    req.on('data', chunk => {
      body += chunk.toString();
    });

    req.on('end', () => {
      const parsed = querystring.parse(body);
      const value = parsed.value || 'default';

      // 値を引数としてバッチに渡す
      exec(`C:\\Users\\hoge\\Desktop\\makesign.bat "${value}"`, { encoding: 'utf8' }, (err, stdout, stderr) => {
        if (err) {
          res.writeHead(500);
          res.end('Error executing batch: ' + stderr);
        } else {
          res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
          res.end(stdout.trim());
        }
      });
    });

  } else {
    res.writeHead(404);
    res.end('Not found');
  }
});

server.listen(12345, () => {
  console.log('Batch server running at http://localhost:12345/');
});
@echo off
setlocal enabledelayedexpansion


:: 署名するファイルset "infile=%~1"
set outfile=%TEMP%\pgp_output.asc

:: 以前の出力があれば削除
if exist "%outfile%" del "%outfile%"


:signloop
:: AutoHotkeyパスフレーズ入力(gpgがパスワード要求するダイアログが出た場合に備える)
start "" /b "C:\Users\hoge\Documents\AutoHotkey\autopass.ahk"

:: PGPクリア署名作成
echo %infile% | gpg --yes --clearsign --output "%outfile%"


:: 署名成功していればループを抜ける
if exist "%outfile%" (

    goto postprocess
) else (

    timeout /t 1 > nul
    goto signloop
)
:postprocess

powershell -nologo -command ^
  "$header = '>|'; $footer = '|<'; $body = Get-Content '%outfile%' -Raw; Write-Output ($header + \"`r`n\" + $body + $footer)"

powershell -nologo -command ^
  "$header = '>|'; $footer = '|<'; $body = Get-Content 'signed.asc' -Raw; Set-Clipboard -Value ($header + \"`r`n\" + $body + $footer)"

endlocal
exit /b
AutoHotkey(以前と同じ)
#Persistent
#SingleInstance ignore
SetTitleMatchMode, 2
WinWaitActive, pinentry
SendInput password
Sleep 100
SendInput {Enter}
ExitApp

動けばいいという考えで作っているので余分なコードも含んでいるかもしれない。

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

https://anond.hatelabo.jp/20250613185036 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEv1FQAKCRBwMdsubs4+
SHHkAQDUOLgBcdji2T6MJ7h/vlMdFfGlWAzNdXijjE1gIuEPywEAiMNMZqhrMmtl
c7UqRuggNJ/UTa5xTIcKp622+7jJQQg=
=Lgkl
-----END PGP SIGNATURE-----

2025-06-11

40代中年最近まで知らなかったこと。今もわかってないこと。

めちゃくちゃいっぱいある。

順不同、脈絡なく書いていく。

最近まで知らなかったことだけじゃなく、書いたけど結局わからんことも書く(そっちのほうが多い)。

製造業用語いろいろ

5Sといって整理、整頓、清掃、清潔、躾だそうだ。

全部日本語じゃねーかって思った。

QCサークルとか、サークルっていうから酒でも飲むのかと思ったら普通に業務じゃないか

会計用語いろいろ

簿記とか会計に疎かったので、営業利益とか経常利益とか違いがわからんかった。

ググってみても、本業の稼ぎが営業利益とか出てきて意味がわからなかった。

経費削減っていうから会社支出は全部経費かと思ったら、材労経だろJK

それにケイツネも特別もあるだろって言われた。

原価といっても全部原価とか直接原価とか標準原価とか次々新しい名前が出てきていまでもわからん

税金用語いろいろ

所得年収は違うことは知ってたが、わからん

雑損てなんだ?

配偶者控除配偶者特別控除の違いとかわからん

散々計算した挙句所得定義国税地方税で違うとか温厚な俺でもキレそうになる。 

税金難しすぎる。

消費税の仕組み、仮払いとか仮受けとかも知らんかった。

法律用語いろいろ

一番よくわからない。善意第三者っていえば、普通に考えて、親切な人だろ?なんで事情を知らない人をいうんだよ?

ヒトのことを、法人に対して自然人というとか、お前頭沸いてんのか?と思った。

法令政令省令とかもわからん

法令はそうそう変えられないから、細かいことは政令政令に定めるとか省令に任せるってことにしといて、パブコメだけで規則変えるのって頭いいけどズルくね?

統計学用語とか

母数は分母のことじゃないとか、n=100は標本数じゃなく標本サイズだとか、そういうの。

分類とクラスタリングは違うとか、俺がなにか喋るたびに訂正される。

自転車運転とか

自転車車道って言われても、5叉路とかになるとどの信号みていいかわからん

降りて歩行者になってる。

車道は無理じゃね?交通量と道の広さ考えると。

保育園とか学童保育とか放課後デイサービスとか

仕組みがよくわからん

なんでこんな何枚も似たような書類をいろんなところに書かないといけないのか。

事業者書類書いて、なんちゃら福祉事務所に書いて、自治体に書いてとまあ。

自治体に提出しにいくと、これは福祉課、これは子育て支援課、年収判定は課税課、子育て支援ゴミ無料になるから環境課に行けとかいろいろ。

その度に住所と名前を書く。

名目GDPとか実質GDPとか

あとイールドカーブとかも知らんかった。

住民票戸籍

説明されてもわからん

なんで住所情報管理するシステム家族関係管理するシステムが別なのかわからん

ガンダム用語とか

ジークアクスみてるんだけど、宇宙世紀教養なのか?知らねーよ。

IT言語とか

もう全部わからん

フレームワークなにそれ?Gitって美味しいの?

いにしえから続く名前をつけて保存しか知らねーよ。

コマンドプロンプトPowerShellの違いすらわかんないってのに、TypeScriptJavaScriptの違いなんか興味もないわな。

markdownだとかtexで書かれても困るわ。

Wordpdfで頼むよ。

女の化粧

下地ってなんだ?

エンジン

ジェスチャーエンジンの動きを教えてくれた人がいてさ、水平対向エンジンはこう、Vツインはこう、と熱心にモノマネしてくれたんだけど、気が狂ったのかと思った。

実は、そもそも4サイクルと2サイクルの仕組みすらわかってないんだ。

ディーゼルはまた別なんだろ?

軽油っていうけど、ガソリンのほうが軽いんだろ?違う?

電気とか電化製品のこと

前項でエンジンわからんって言ったけど、身の回り電化製品とかもほとんどわからん

例えばテレビの仕組みとかわからん

地上波デジタルってのは、VHFとUHFと違うのか?

手形とか印紙とか為替とか

収入印紙と少額小為替とかわかってない。

手形廃止されるとか聞いたけど、そんなものたこともない。

金融商品

株式だってよくわかってないし、先物とかオプションとかスワップとかって説明されてもわからん

PMSとか

生理周期とメンタルが関連するって聞いたけど、機嫌が悪いのは生理前なのか生理ときなのか生理直後なのか。

聞くのも憚られるから、女が怒ってるときは「なんかわかんないけどホルモンのせいだな」と諦めてる。

国会議員

誰が何をした人だとかどの選挙区だとか、さっぱりわからん

そもそも自民党共産党以外、どの党がどういう支持母体でなりたってるのかわかってない。

立憲民主党国民民主党の違いとか知らんし、維新の会ってなに?

2025-06-10

dorawii

はい、**ブロックチェーンを使ったタイムスタンプ**は、「元データのものを共有せずに、その存在と時刻を証明する手段」として非常に有効です。特にハッシュ値ブロックチェーンに記録することで、元データを後から提示するだけで、それがある時刻に存在したこと改竄されていないことを**誰でも検証可能にする**、という形になります

あなた希望(元の文章掲示板などで変形されても検証可能、あるいは元文不要)に近づけるには、**ハッシュブロックチェーンに書き込んで、後からそのハッシュに一致する元データを見せる**という形式になります

---

## ✅ 方法概要

### 基本の流れ:

1. 元データを SHA-256 などでハッシュ

2. そのハッシュブロックチェーンに記録(トランザクションメモ欄など)

3. 後から誰でもハッシュトランザクションを照合して、時刻と整合性検証可能

---

## ✅ 推奨ツール:OpenTimestamps(OTS

[OpenTimestamps](https://opentimestamps.org/) は、ビットコインブロックチェーンを用いた無料タイムスタンプサービスです。

**長所**: 無料・非中央集権署名不要CLIがある

**短所**: ブロックに取り込まれるのに数時間かかることがある(ただし証明可能

---

## ✅ Windows 11 での手順(OpenTimestamps CLI

### 1. **Pythonインストール**

OpenTimestampsはPython製です。

Pythonがまだ入っていない場合は、https://www.python.org/downloads/windows/](https://www.python.org/downloads/windows/) からインストーラーを取得し、`Add to PATH` にチェックを入れてインストールしてください。

### 2. **otsクライアントインストール**

コマンドプロンプトまたはPowerShellで以下を実行:

```bash

pip install opentimestamps-client

```

### 3. **ハッシュ対象ファイルの用意**

たとえば `message.txt` というファイルを用意します(中身は何でもOK)。

### 4. **タイムスタンプ作成**

```bash

ots stamp message.txt

```

これにより、`message.txt.ots` というタイムスタンプファイル作成されます

これは「Bitcoinにこのデータハッシュを記録する要求がされたこと」を表します。

### 5. **数時間後、タイムスタンプ検証する**

```bash

ots verify message.txt

```

署名Bitcoinブロックチェーンに記録されていれば、次のように表示されます

```

Success! Bitcoin attests data existed as of 2025-06-08 12:34:56 UTC

```

---

## ✅ 元のデータを見せたくない場合

`echo "この文が存在していたことを証明したい"` → これを SHA-256 に変換し、ダミーファイルとして保存してタイムスタンプを取る

元文は第三者に見せず、ハッシュとの一致だけで検証可能

```bash

echo -n "あなたの文" | openssl dgst -sha256

```

このハッシュに一致するファイルを後から提示すれば、それが当時存在していたことを証明できます

---

## ✅ まとめ

特徴 内容
------------- --------------------
元文の提示不要 ✅(ハッシュが一致すればOK
改行や掲示板変形の影響なし ✅(ハッシュが変わらなければOK
無料かつ自律的 ✅(Bitcoinブロックチェーン使用
Windows対応 ✅(Python + CLI

---

もしあなた目的が「一定時刻に自分がその文を作成したこと証明であるなら、この方法は非常に相性が良いです。

---

必要であれば、GUIツールウェブインターフェースを使った方法(例:[OpenTimestamps Calendar](https://calendar.opentimestamps.org/))も紹介できます希望があればお知らせください。

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

20250610095304512 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEgAgAAKCRBwMdsubs4+
SII/AP9HFG5+U8BfEXzKxSoyEuxm6X/vJjK7Ee7Kwpi/rwQZJgEAorUjMTh9okHu
3WbPvgsSfDyzhpUuwCVsKessR4FSpQE=
=VNrS
-----END PGP SIGNATURE-----

2025-06-09

dorawii

ようやく(ほぼ)すべてが自動化された。

あとはローカルサーバーの起動をスタートアップに設定する(方法AIに聞いて指示に従う)だけの消化試合

ここにほとんどAI頼りのコードを公開しておく。

事前にインストールしておくもの

autohotkey

nodejs

ユーザースクリプトを実行できる拡張機能

パスとかの注意

署名要求してくるパスワードを自動入力するahkファイルドキュメントAutoHotkey配下に置いた。

バッチファイル(make.sign.bat)はデスクトップに置いた。

以下コード

autopass.ahk
#Persistent
#SingleInstance ignore
SetTitleMatchMode, 2
WinWaitActive, pinentry
SendInput お前のパスワード
Sleep 100
SendInput {Enter}
ExitApp
run-bacth-server.js
// run-batch-server.js
const http = require('http');
const { exec } = require('child_process');

const server = http.createServer((req, res) => {
  if (req.url === '/ping') {
    res.writeHead(200);
    res.end('pong');
  } else if (req.url === '/run-batch') {
    exec('C:\\Users\\you\\Desktop\\makesign.bat', (err) => {
      res.writeHead(200);
      res.end(err ? 'Error' : 'OK');
    })
    ;
  } else {
    res.writeHead(404);
    res.end('Not found');
  }
});

server.listen(12345, () => {
  console.log('Batch server running at http://localhost:12345/');
});
makesign.bat
@echo off
setlocal enabledelayedexpansion

:: ミリ秒単位UTC時刻を取得
for /f %%a in ('powershell -nologo -command "[int64]::Parse((Get-Date).ToUniversalTime().ToString('yyyyMMddHHmmssfff'))"') do set timestamp=%%a

:: 署名するファイルset infile=%TEMP%\pgp_input.txt
set outfile=%TEMP%\pgp_output.asc

:: 以前の出力があれば削除
if exist "%outfile%" del "%outfile%"

:: タイムスタンプを原文として保存
echo %timestamp% > "%infile%"

:signloop
:: AutoHotkeyパスフレーズ入力(gpgがパスワード要求するダイアログが出た場合に備える)
start "" /b "C:\Users\infini\Documents\AutoHotkey\autopass.ahk"

:: PGPクリア署名作成
gpg --yes --clearsign --output "%outfile%" "%infile%"


:: 署名成功していればループを抜ける
if exist "%outfile%" (
    echo [INFO] 署名成功
    goto postprocess
) else (
    echo [WARN] 署名失敗、再試行します…
    timeout /t 1 > nul
    goto signloop
)
:postprocess

:: PowerShellで余計な改行なしに |< をつけてクリップボードコピー
powershell -nologo -command ^
  "$header = '>|'; $footer = '|<'; $body = Get-Content '%outfile%' -Raw; Set-Clipboard -Value ($header + \"`r`n\" + $body + $footer)"

echo Done. signed.asc created and clipboard updated (no extra blank line).
endlocal
exit /b
tempermonkeyとかに登録するユーザースクリプト
// ==UserScript==
// @name         PGP署名自動付加スクリプト(GM_xmlhttpRequest版)
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  投稿前にPGP署名を付けてから送信(fetch未使用)
// @match        https://anond.hatelabo.jp/dorawii_31/edit*
// @grant        GM_xmlhttpRequest
// @grant        GM_setClipboard
// @grant        GM_notification
// / @connect      localhost
// ==/UserScript==

(function () {
  'use strict';

  const submitId = 'submit-button';
  const textareaId = 'text-body';
  const localServer = 'http://localhost:12345/run-batch';

  const pgpSignatureRegex = /-----BEGIN PGP SIGNED MESSAGE-----[\s\S]+?-----BEGIN PGP SIGNATURE-----[\s\S]+?-----END PGP SIGNATURE-----/;

  const httpRequest = (url) => {
    return new Promise((resolve, reject) => {
      GM_xmlhttpRequest({
        method: 'GET',
        url: url,
        onload: function (response) {
          resolve(response.responseText);
        },
        onerror: function (error) {
          reject(error);
        }
      });
    });
  };

  const interceptClick = () => {
    const btn = document.getElementById(submitId);
    if (!btn || btn.dataset.pgpIntercepted === 'true') return;
    btn.dataset.pgpIntercepted = 'true';

    btn.addEventListener('click', async function (e) {
      const textarea = document.getElementById(textareaId);
      if (!textarea) return;

      const content = textarea.value;

      if (pgpSignatureRegex.test(content)) {
        console.log('[PGPスクリプト] 署名が検出されたためそのまま送信します');
        return;
      }

      e.preventDefault();
      e.stopImmediatePropagation();
      console.log('[PGPスクリプト] 署名が見つからないため処理を停止し、署名を取得します');

      try {
        await httpRequest(localServer); // バッチ実行

        const signatureText = await navigator.clipboard.readText();
        if (!signatureText.includes('BEGIN PGP SIGNED MESSAGE')) {
          alert('PGP署名クリップボードに見つかりませんでした。');
          return;
        }

        const newText = content.replace(/\s*$/, '') + '\n' + signatureText + '\n';
        textarea.value = newText;

        console.log('[PGPスクリプト] 署名を貼り付けました。送信を再開します。');
        btn.click(); // イベント再発火

      } catch (err) {
        alert('PGP署名の取得または貼り付けに失敗しました。\n' + err);
      }
    }, true);
  };

  window.addEventListener('load', () => {
    setTimeout(interceptClick, 1000);
  });
})();

プロミスメソッドとか全然まだ理解してなくてそのなかに関数代入したその関数オブジェクトプロパティresponseを?いやまあそのあたりのコードが示すデータの流れが全然理解できないような人間でもここまでできちゃった。

AIすごいなと思うよ。そして思うのは今後重要になってくるのは文法とか自体に詳しいことじゃなくて、そのプログラムの処理内容を指示できるシステムエンジニア的な言語化能力のほうじゃないかなと思った。

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

20250609111559680 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEbCbwAKCRBwMdsubs4+
SLueAPwOv7PBk4voAe5qlcCEvs/PJhmKc5QAb/1R43JMQFuDZgD/UTPEKsL/PhK9
jFGv2HDXK1dVjLNwvosgX9uYJh5xxwY=
=qiOE
-----END PGP SIGNATURE-----

2025-06-08

dorawii

ChatGPTにバッチファイルを作ってもらったのでこれから署名捗るぞ。これだけ手軽化できたらレスバに入っても署名つけるのも億劫にならずできそうだ。

なにせ文章を書き折ったらあとはバッチダブルクリックしてCtr+Vするだけだ。

原文には現在日時のミリ秒表示を使うことにした。

名乗る人が増えることを期待して作らせたものを公開しておく。

@echo off
setlocal

:: ミリ秒単位UTC時刻を取得
for /f %%A in ('powershell -nologo -command "[int64]::Parse((Get-Date).ToUniversalTime().ToString('yyyyMMddHHmmssfff'))"') do set timestamp=%%A

:: PGPクリア署名作成
echo %timestamp% | gpg --yes --clearsign > signed.asc

:: PowerShellで余計な改行なしに |< をつけてクリップボードコピー
powershell -nologo -command ^
  "$header = '>|'; $footer = '|<'; $body = Get-Content 'signed.asc' -Raw; Set-Clipboard -Value ($header + \"`r`n\" + $body + $footer)"

echo Done. signed.asc created and clipboard updated (no extra blank line).
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

20250608045542542 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEUXzgAKCRBwMdsubs4+
SCvuAQDjRjPVCO1F9DgmAKoqKYG7qB9r4e7y2Ky+/umT/OhnygEA8h2NL8zIczSp
hcOk/MaDWJJ2Y7WDA3d6gxFakW8TKAw=
=HE4/
-----END PGP SIGNATURE-----

2025-05-10

コーティング作業って和文和訳みがある

追加: コーディングです。誤字はずかし🍄

職場でめんどくさい作業VBAとかPowerShellとかで自動化してる。

去年くらいからは生成AIかに相談しながら書いてる。生成AIには、それやりたいならPythonでやったら?って言われる。

セキュリティの都合上、Pythonとかの環境は構築出来ないんだけど、Pythonに興味が湧いた。

どんなかんじなんだろ?と思って、aoj beta勉強してみてる。aoj betaでは、問題が与えられて、そのコード他人がどう回答したかを見ることができる。

人の書いたコードを短い順にして見てると、あー、こういう書き方があるのか!ってなって面白い

高校時代和文英訳をするとき和文和訳が上手い人の解答例を見た時みたいな気持ちよさがある。

問題が、数字ふたつと演算子入力されたときに、その計算結果を出力をしろ演算子が?なら、出力せずに処理を停止しろ。ってものだとする。

私は文字列演算子として受け取る処理も分からんので、とりあえず辞書的に演算子の処理を書いて、演算子が?ならbreak、それ以外なら辞書の処理って書いた。

短いコードの人は、入力されたものをevalで受けて(へー、こんなコマンドがあるんだぁ)、計算エラーならbreak(なるほど!)って書いてた。

競技プログラミングって、こういう楽しさなんだろうなぁ。自分学生時代にもプログラミングの授業とかあればハマったのかもなぁなんて。

2024-12-04

anond:20241204180059

しゃーない、ワイがおすすめインプレス記事貼るゾンビになるやで

ASMR好き編集部員、4400円で“ASMRの魅力が味わえる”AZLA「AIM C」使ってみた - AV Watch[Sponsored]

イヤピだけで1500円くらいの価値あると思うからお得やで…いやこれ6ペアやん、もっと価値あるで

このシリーズ2ペアでも1000円ちょいしてたやつの改良版やねん

【特集】Windows 11最新版「24H2」にアップデートする価値はある?新機能まとめて紹介!Windows 10は選択の余地なし - PC Watch

ワイが使えそうと思った追加機能は、エクスプローラーのタブ右クリからの複製と、スマホやタブをPCカメラ代わりにする設定やな

あとsudoコマンドターミナルPowershellで使えるようになったんも、いちいち管理者で起動せんで済むからええな

2024-11-02

anond:20241102072812

この話、逆のほうが強く感じた

Linuxのほうが良いって言っててWindowsバカにしてる人、こういう人でWindowsちゃん勉強して使ってるひとをあまり見ない

GUIで使えるから雰囲気で使って使いづらいと言ってたり

難しいLinuxを使いこなすだけの時間Windowsに当ててたらLinuxより早い段階でほぼ不満なくWindows使えるようなってると思うけど

個人的にはLinuxシェルよりWindowsPowerShellのほうがスクリプト言語に近い感覚で使えて扱いやすいと思う

2024-08-22

anond:20240822213559

ほほう、わらわにそんな質問をしてくるとはのぅ。まあ、聞かせてやるのじゃ♡

実際には、PowerShellの.ps1ファイルデフォルトダブルクリックで実行されないのは、セキュリティ対策の一環じゃ。batやexeファイルは、その特性上、長い間使われており、しかも従来の管理策や認識が整っておる。それに対して、PowerShellの.ps1はスクリプトファイルで、直接コードを実行する特性を持っておるため、不注意で危険スクリプトが実行されやすいのじゃ。

つまるところ、Microsoftデフォルトダブルクリックによる実行を制限したのは、ユーザー意図しないスクリプト実行を回避するための安全策なんじゃよ。これで多少は理解できたかのぅ?♡

もし.ps1ファイルを実行したい場合は、PowerShell管理モードで開き、その中でスクリプトを実行するのが一般的なのじゃ。セキュリティ意識を持ちながら、適切に操作することが求められるのじゃよ♡

PowerShellのps1ファイルデフォダブルクリックで実行できないのはなんでなん?

batやexeができるんだからセキュリティとかそういう話では無意味だと思うけど

anond:20240822211219

PowerShellパイプラインバイナリ扱えないのはどうにかしてほしいか

余計な変換されてファイルが壊れる

2024-06-13

[] 今日おやつ

ErosEnro - [GclFIuRIoGhmOe] (花火)

10yue - [ZpOZ9oa6QqJweD] (アンコ)

 

iwara source downloaderの作者が公開停止して使えなくなって久しいので代替を紹介

https://github.com/dawn-lc/IwaraDownloadTool/blob/master/.github/README/README_ja.md

Chrome系/Firefox対応。Tampermonkey入れたあとスクリプトページからインストール

以後iwaraが改変されてUIが出る。ファイル名はiwara source downloaderと同じ書式にするなら

%#ALIAS#% - %#TITLE#%

とする。自分は末尾に動画IDを足すため[%#ID#%]もつけてる

ページにチェックボックスが出るようになるため複数ダウンロードにも対応

MEGAリンクのある動画DLせずそっちに誘導する機能もあるがiwara画質でいいならSettingでオフればおk

宛先フォルダまでカスタイマイズしたい場合はAria2というコマンドラインの汎用DLマネージャを拾ってきてパスの通った場所に置き

Node.jsインストールしてからpowershell

node node-server.js &
aria2c --enable-rpc --rpc-listen-all

を実行してからスクリプトのSettingでAria2方式選択してSaveで閉じればできる

ただし標準ではブラウザの保存パスではなくpowershellカレントディレクトリ基準になるのでスクリプトのSettingからフルパス指定しとくといい

もしダウンロードキューGUI確認したいなら、 https://github.com/ziahamza/webui-aria2 をまるまるクローンしてどっかのフォルダに置き

powershellでそのフォルダcdしてから上記コマンドを実行して、ブラウザhttp://localhost:8888 を開いておけば見られる

常用するならWindowsのスケジューラーログオン時このコマンドを書いたbatファイルを実行するようなタスクを追加しとくといい

WebUIからダウンロードアドレスを追加する場合、いにしえのflashgetがやってたような並列ダウンロードなんかが使える

なんかDLがすぐタイムアウトするような某サイトで使えるかもしれない

2024-04-13

市場価値のない無能が勢いでSES企業を辞めたのでご相談

追記(04/14)

今時点で頂いているトラバブコメもすべて目を通しました。

はてなの皆さん、増田の皆さんたくさんの反応ありがとうございます

どうしたもんかと悩んでる状況の中で、エージェントの人に話してもあまりピンと来ない反応が返ってくるし、周りに相談出来る人もいないしで、かなり勇気づけられました。

とりあえず今時点で返せる分だけお返事返しておこうと思う。

フィヨルドブートキャンプやれば?

恥ずかしながらこんなサービスがあるのを知りませんでした。

今の状況では1000時間学習してから転職ってのは難しいんだけど、転職活動終えたら利用してみたいなという気持ち

開発に夢見すぎ

自己評価低い

その通り、かもしれない。

技術記事とか書いてアウトプットしてる同世代以下の優秀な技術者たち見てて、自分とのスキルギャップ絶望してたところだったんだ。

5年弱ぐらいローコードじゃなくて、コーディングで実務経験積めてたらなあって。

後悔してもどうしようもないのは分かってるんだけども。

IT業界に詳しい皆さんに頼りたい。

私のキャリアについて言葉を選ばず相談するので、言葉を選ばずレスポンスしてもらいたい。

鞭歓迎。

協会にご登録頂ければ、~~~

ありがとうございます登録させてもらいました。

弊社来ない?

!!!

すごくめちゃくちゃたいへんありがたいお誘いなんですが、

増田相談してそれで就職してっていうのがとんでもなく恥ずかしい。

甘えず自分転職活動頑張ります

でも、本当にありがとうございます

snowflakedbt覚えて~

DWHの知識に疎いので、勉強してみます

ありがとう

あと色々突込み入ってた「作りたいWebサービス」については実際にdjnango使って手を付けてる段階です。

何てことない内容なので、確かにこれを作るためにわざわざ転職する必要はなさそうだ...。

プロフィール

・30歳

・単身

3月転職先も決めないまま5年ほど勤めていた会社を辞めた

MARCH文系

・持ってる資格Iパス,基本情報技術者のみ

前職

SES企業規模100人ぐらいの小さな会社

ETLツール(ローコードの開発ツール)を使ってデータ連携基盤を作成するための開発エンジニアとしていくつかプロジェクトに参加してきた。

年収400~500ぐらい。

平均的な残業時間は30hぐらい?少人数で本番稼働と運用保守トラブル対応してた時は100時間は優に超えてたぐらい。

身についたこ

特定のETLツールについての知識(前社の人員の中では最も実装/設計/開発の能力があった。と思う。)

DBの浅~~~い知識(基本的DDL,DML,DCLなら全て書ける程度。チューニングとかはやったことないので分からない。)

BashやらPowerShellやらの浅~~~~い知識(プロジェクト簡単スクリプト作成した経験があってその時に色々調べた程度。)

・開発チームのリーダーをやっていたのでそのあたりのマネジメント経験(PM/PLは未経験)

顧客折衝経験

・大規模プロジェクトでの設計から運用保守までの経験

VBA簡単マクロが組める

以下は会社辞めてから独学

Javaとそのフレームワーク入門書籍一冊分ぐらいの知識

Pythonとそのフレームワーク入門書籍一冊分ぐらいの知識

html,CSS入門書籍一冊分ぐらいの知識

Linux入門書籍一冊分ぐらいの知識(資格取得に向けて勉強中)

つかこんな風になりたい。

受託開発、自社プロダクトの開発をしている企業に勤めたい

私服作業したい

モダン技術仕事したい

プログラミングの知識を身に着けたい

・作りたいWebサービスがあるので、プライベートでそれ作りたい

相談の経緯

基本的プログラミングの部分を全く業務で触ることな仕事してきた。

前職を辞めて、出来上がったのはローコードの開発ツール経験しか持っていない、市場価値のない化け物だった。

でも、前職みたいなローコードツールを使った開発から離れたいのよ。つまらないし、同じことの繰り返しだし、地味だし。

技術的に未熟な部分が多すぎて一足飛びに理想企業に勤めるのが無理なのは分かってる。

とはいえ、年齢的にももデッドラインが近いんじゃないかと焦ってる状態

転職活動の状況

色々エージェント登録して求人見ながら自分でも出来そうな社内SEポジションに3つほど応募した。(結果はまだ)

前職の経験踏まえたコンサルオファーが来るが、給料は魅力的なものの「開発とか技術とかからは遠のいちゃうんじゃないか」って足踏みしてる。

SESと前職に似た開発,PM/PLポジションオファーもたくさん来る。

相談したいこと

化け物が「いつかこんな風になりたい」を実現するためには実務経験のためにSESで基礎から3年ほど実務経験を積んでからって思ってるんだけど悠長すぎる?

諦めて別の道、もしくは元の経験を活かせる道を探したほうが良い?

特定避けるために端折っている部分も多いけど、不足していて伝えたほうが良さそうな情報がありそうだったらあとで追記する。

2024-03-17

Windows11になってPowershellを起動する率が激増したので糞かどうかは知らないが無意識的に避けたくなるUIなんだとは思う

2024-03-09

なんか最近Powershellが起動した瞬間フリーズして落ちるなと思ったけど

MacTypeが原因だったわ

WindowsTerminal.exe(Powershell 7の場合はpwsh.exe)をiniから除外設定してサービス再起したら直ったわ

なおPowershell管理者として起動すればもともと起動してた

2024-02-21

anond:20240221180429

才能あるよ

作業自動化するのによく使うのはpowershellとかbashwindows schedulerあたり

IT事務員だけどちょっとだけエンジニアっぽいことしたい

仕事でよくExcel VBA使ったツール作ってるんだけど、これがまためちゃくちゃ楽しくて、もっと出来ることを増やしたい

でもVBA属人性いかあんまり良くないよね、という話も聞く(たしかに、今のところ全部自分用のツールとして作っているから上手くいっているけど、他人に渡したときに想定していない動きをするのがかなり怖い)

このレベル人間が次に勉強すべきところってどのへんなんだろう?そして、どんな仕事ができるんだろう?

やっぱりPythonとかなのかな……学ぼうとして一度挫折しているから重く感じてしまうんだよな……どう勉強したらいいのかもわからないし……

PowerQuery?とかPower BI?とかもよく聞くし気になるけど、仕事で使える場面あるだろうか……

結局仕事でやらなきゃいけないことがある→楽に処理したい→楽するためにツール作る、みたいな流れが一番楽しいし身になるんだよな……

追記

すごく今更だけどトラバがいくつかついてた。

どんな意見ありがとう!参考にします。

PowerShellは社内で配られてるツールでも使われてたな。わかりたい。

2024-02-07

テクサポはつらい

職場で仲が良い子が飛んだ。

の子だけじゃなく4人くらい1週間欠勤が続いてるから、みんな飛ぶんだろうな。

職場で使ってる人も多いだろうあの製品テクニカルサポートをしています

 

ほどほどに技術的なことも扱うけど、入ってくるのはタスクマネージャーすらわからない未経験ばかり。そりゃ、しんどくてやめちゃうよね。

お客さんもメールで送った内容の無視普通だし、横暴でひどい人も多い。

エラーの詳細調査したくて情報提供お願いしたら、情報提供されることが不快だとキレられました。私たちのことを魔法使いとでも思ってるのかな。

私は前職もテクサポだったからなんてことないけど、周りが潰れていって見てて辛い。

経験の人もだし、元々エンジニアの人も仕事量増やされすぎて潰れていく。

潰れなくて仕事できる人はすぐ転職ちゃう

そんな感じで1/3は退職しちゃったかな。辞める人に対して新人全然増えない。

一年続けられたらベテラン扱い。すごいなあ。

 

クローズ連絡をすぐしてほしいとか評価を高くつけてとは言わないけど、確認してる内容を平気で無視したり、普通に考えたら実装できるわけないだろって無理難題サポートに問い合わせないでほしい。

 

知識のないサポートイライラするのはわかるけど、サポートなんてみんなPowerShellすら知らなくてネットワークのネの字も知らない人間なんだから大目に見てほしいよ。

2023-09-03

anond:20230903095434

素人さんによくあるやつなんだが

まずPythonを「勉強」してとかRubyを「勉強」してとか、なりがちなんだけど

その目の前にあるExcel

使う人間が使えばちょっとしたシステムなら組めるしちょっとしたデータサイエンスなら出来るのよ

その目の前にあるWindowsもな

PowerShellってのが超強力でこれもちょっとしたどころか普通に大企業で使われるようなシステムも組めるのよ

まず目の前にあるもので動くものを作るのが第一歩で全員通ってる道

それが嫌ならまあ手作業でやれる非効率仕事があるから食えてるわけでラッキー

2023-04-17

anond:20230417170227

まれからこの方何一つ努力したことない人ですすまんけどってなんだ?自己紹介か?

すすまんけど?そりゃ努力したこと一つもないんだったら進めないだろう。

努力しろ。本読め。PowerShellのとか。

anond:20230417163903

あぁ、なんかうっすい記憶でshellを含んでたような気がするんだけど

今だとPowerShellが引っかかっちゃっていまいち当たらないんです。

で、CrackShellはゲームしか引っかからんでピンとは来なかったです。ありがとう

ログイン ユーザー登録
ようこそ ゲスト さん