「ダイアログ」を含む日記 RSS

はてなキーワード: ダイアログとは

2025-09-13

昭和の頃って、インスタント麺の中に入ってるスープとか、かやくの袋ってすごい開封しにくかったんだよ。

いちおう切れ目とか、マジックカットとかそういう感じにはなってはいたんだけど、当時は技術的に稚拙だったから、なかなか素手で切ることが失敗するのが多かった。

でもさ、だからといってインスタント麺に付録としてカッターとかハサミはつけないじゃない?

袋を開けることに失敗するから、ってそれじゃ!ってカッター刃の先っぽみたいなのはつけないでしょ?

それはコスト的な問題とか安全上の問題とか色々とあるけれども、根本的な解決策としてスマートさに欠けるというのが理由だと思う。

で、結局どうなったかって言うと、パッケージ開封技術が向上したんだよ。マジックカットの精度を上げて、手で簡単に切れるようになった。真正から問題解決したってわけ。

お前らが今使ってるスマホでも同じことが起きてる。「文字が小さくて見えない」って問題に対して、虫眼鏡付属品として付けるか?付けないだろ。画面自体を大きくしたり、文字サイズを調整できる機能を搭載したりして、根本から解決する。

ところがIT業界で働いてると、この「カッター付きインスタント麺」みたいな発想をするやつがゴロゴロいるんだよ。

システムが使いにくい」→「マニュアルを厚くしよう」

エラーが多い」→「エラーチェック機能を追加しよう」

「処理が重い」→「サーバーを増やそう」

全部その場しのぎの対症療法だ。根本的にシステム設計を見直すとか、ユーザーインターフェース改善するとか、そういう本質的解決から逃げてる。

特にひどいのが、「ユーザー馬鹿から」って前提で作るシステムだ。確認ダイアログを何回も出したり、警告メッセージを山ほど表示したり。それって結局、カッター付きインスタント麺と同じ発想なんだよ。

昭和インスタントメーカーは偉かった。カッターなんか付けずに、パッケージ技術を改良し続けた。その結果、今の俺たちは何の苦労もなく袋を開けられる。これがイノベーションってもんだ。

でも現代エンジニアは楽をしすぎてる。問題が起きたらとりあえず機能を追加する。設定項目を増やすアラートを出す。それでユーザー負担押し付けて、「解決した」って顔をする。

本当にスマート解決策ってのは、問題のものを消し去ることなんだよ。その努力けが進歩を生むんだよ。

2025-09-08

anond:20250908113048

ありがと window.confirmやwindow.open組み込みダイアログのことらしい

ニコニコ動画でも今だに愛用されてるので気になった

2025-09-05

セキュリティアップデートが原因って言ってたのはなんだったのw

正直これもこじつけに近いな

XPからVistaになったときコピーが遅くなったって喚いていて原因はXPの時はコピー完了する前にダイアログを閉じていたってやつだったけど

Windows11:24H2におけるSSDの損傷問題について、結論&全解明です。FromHDDtoSSD 統計スキャンによる測定結果より、原因判明しました。完全にドライブI/Oタイミングが常にずれてい|猫がみる真実

https://note.com/fromhddtossd/n/nd3888c34b108

2025-08-15

そうめんでいい」でブチ切れる人の感情アルゴリズムが、マジで理解不能バグコードなんだよな。

この前ネットスクレイピングしてたらさ、「そうめんでいい」とか「カレーでいい」って発話トリガーしただけで、謎に感情プロセッサオーバーヒートする人間モジュールがいるってデータ拾ってさ。

「これで何様だよ!」って例外スローされるわけ。いやマジで何様もクソもなくね?ただの晩飯インタラクションAPI呼び出しじゃん…。

どこが怒りのエンドポイントなのか、マジで脳内OSデバッグモードで走らせたいレベル

どうやら「そうめんがいい」って出力しろって仕様らしいんだけどさ、それじゃ意味シンタックス全然別物じゃん。

そうめんがいい」って発話は、“絶対そうめん食いたい!他はデリート!”ってコマンドになるけど、「そうめんでいい」ってのは、“特に食べたいデータなし、でも冷蔵庫キャッシュそうめん在庫あるし、それでOK”ってニュアンスじゃん。

それを「軽視された!」とか「テンション下がる!」って勝手パースして例外発生させるの、完全に脳内ファームウェア破損してるだろ。

結局はユーザーインターフェース上でご機嫌取りのためにフェイデータ送信しろってことか?マジでUX悪すぎ。

そんな芝居がかったダイアログファミリーサーバー内で毎日やっててよくメンタルリソース枯渇しないな、こいつら。

俺さ、そもそも食いたいデータ特にいから、クエリ投げられても困るんだよ。

「何でもいい」って返すと怒るんだろ?

そうめんでいい」って返しても怒るんだろ?

じゃあそもそもAPIコールすんなよって話だし、エラー回避のために出力文面最適化とか、人生CPUサイクル無駄遣いすぎる。

こんなどうでもいいことでいちいちクラッシュする感情マイクロサービス家族サーバーにいなくて、マジで助かってるわ、ほんと。

2025-07-22

Archicadゾーン求積設定

ベルダイアログシンボルベルカスタム設定>内容

以下2点を確認

測定面積にチェック

分類とプロパティのチェックをはずす

小数点3位を四捨五入

2025-07-04

2. 問題点再現方法

問題点再現方法

下記の通り、公式チュートリアルどおりに docker compose あるいは docker-compose を使用して CVAT を起動すると問題再現することができる。

cvat を clone して docker compose あるいは docker-compose を使用して必要リソースを全て起動する。

git clone https://github.com/opencv/cvat.git

cd cvat

# v2.11.1 相当のバージョンをチェックアウト

git checkout bf4089ead320d8f6a80e0a1793c8406ec46daee8

docker compose up -d

https://xemjujutsukaisen.graphy.com/courses/xemphimjujutsukaisenvietsubfullhd

ブラウザを起動して http://localhost:8080アクセスする。

Connecting... の状態で 30秒 待たされる。

30秒後、突然エラーが表示され、ログイン画面が表示されるはずのタイミングで下記のエラーダイアログポップアップしてきてCVATにアクセスできない。なお、表示されるエラーメッセージは無意味ものであり、ログイン画面にアクセスできない原因を一切示唆していない。

エラーメッセージ

Cannot connect to the server

Make sure the CVAT backend and all necessary services

(Database, Redis and Open Policy Agent) are running and available.

If you upgraded from version 2.2.0 or earlier,

manual actions may be needed, see the Upgrade Guide.

https://xemjujutsukaisen.graphy.com/courses/xemphiminventoryprematuredetahfull

エラーダイアログ

error

3. ストレージ不足問題突破してCVATをローカルで実行する方法

以下のとおりの手順でCVATを起動する。私が本家のCVATリポジトリをForkしてストレージ制限を解除したカスタムCVATを作成してGitHubへコミット済みのもの使用する。

2025-07-02

Windows 11メモ帳Notepad)の Markdown 対応は「圧倒的コレじゃない感」


なぜなのか

誰も使っていなかった WordPad が Windows 11廃止されたが、実は単純な廃止ではなく “Notepad+WordPad の一本化” で、

メモ帳Notepad) は純テキスト路線を捨て去り、RichEdit ベースに作り直された。

メモ帳は 「社畜ドザーvi」 と揶揄された頃の、かつての素朴なメモ帳ではなくなった。

これがちょうど AI ブームMarkdown が脚光を浴びるタイミング より数年早く、微妙にズレた

今回のMarkdown 対応はそのうえにのせた 「オマケトッピング」でしかない

Markdown 機能の最悪な設計実装

致命的なのは Markdown 機能における ステータスバートグル

これは「同じプレーンテキストソースの見た目だけ替えるビュー切替」ではなく、

内部で Markdown ⇄ RichEdit の双方向コンバータを回す“翻訳(round-trip conversion)”

――つまり変換を毎回実行する設計である

ゆえに、モード切り替え行為破壊的になり得て、

テーブルや複雑なネストを書こうものなら トグルを押すたびにマッピング不能 → 警告ダイアログが登場。

(未対応であれば、警告など出さずに単純にプレーンテキストのまま表示すれば良いだけ)

使う側からすると「意味不明」と言わざるを得ない。

コレがゴミでなくて一体何なのか

まとめ

メモ帳Notepad) は WordPad の“穴埋め”として肥大化し、

そこへオマケ程度にMarkdownっぽい機能を付け焼き刃したところ、

AI ブームMarkdown が脚光を浴びたタイミングと重なり、期待値に対して失望感が圧倒的

――これが現在Windows 11 メモ帳 Markdown 機能が放つ「圧倒的コレじゃない感」だ。

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-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-05-23

今すぐChatGPTを更新して再起動しますか?

というウィンドウが出てたので、はいを押したけど、ChatGPTに訊いたら知らんと言ってる。

検索してもYahoo知恵袋だけしか出ない。

ほぇー。

ブラウザダイアログを使ったフィッシングか何かだったのだろうか?

2025-03-03

原神配信者に対する回避不能荒らし確認される

主に海外圏のユーザーが利用する課金サイトでUID指定課金を代行できるサイトがある。

これを利用して配信者のID宛に最低価格課金を散発的に行うことで、ストーリー中であろうと創世結晶(石)獲得を知らせる全画面モーダルダイアログが出るため、閲覧や操作を妨げることができる。

海外文化圏ではギフトとして配信者に石をプレゼントする意図で行われることもあるようで、有名配信者に突如まとまった石が贈られることはこれまでも見られた。

だが今回確認されたものは明らかに妨害意図のある贈り方で、その日本配信者は困り果てて配信の中断を余儀なくされてしまった。

しかも大型ストーリーイベントの最終日の駆け込み配信だったので悪質で、配信日を改めることもできず残念な事態となった。

もちろん配信していない時も常にこうした妨害は受ける可能性がある。

こうした荒らし行為可能になってしまっているのは原神側の仕様にも問題がある。

・UID指定チャージ拒否する設定がない

・贈答石の場合自動で即時受領されてしまうためにモーダルの表示タイミング制御できない

・仮にメールで手動受領する仕様に変更したとしても散発石爆撃に対してはメール通知音のOFF設定も必要になりそう

・UIDを隠すことが難しい仕様になっている (右下を隠してもEscメニューで見えてしまい、隠す設定もないため、過去配信を漁ればバレる)

・この状況下でUID指定チャージ方法(API?)が第三者の決済業者提供されており公認されている

こうした仕様になっているのは他のHoYoverseタイトルでも同様であり、似たような被害が発生する可能性がある。

解決には運営側が動かないといけないので、ホヨバゲープレイヤー配信を見る/するタイプの人はアンケート時に覚えていたら書いてほしい。

2025-01-23

anond:20250123214430

開いて思ったけど18歳以上ですかのダイアログでるの遅くないか

数秒感画面見れてたんだけど・・・

もしかしてわざとなんだろうか?

真面目な未成年はいを押せないけどリロードを繰り返してちょっとずつ見てるとか

2024-12-11

ファイルの中身をメモリーにおいていいなら、そこまで難しくはないな。

スクロールやキャレットの画面外の移動の時だけ、レイアウト行を構築すればそれでおしまい

http://s170199.ppp.asahi-net.or.jp/vivi/docs/buffer/edit_buffer.php

ViViエディターの人の記事が書いているような複雑怪奇バッファー管理はいらない。

メモリーを32GBぐらい積んでいれば、ギャップバッファーでも1GB未満の大きさのファイルの読み書きは簡単にできる。

自作エディタでも900MBを12秒ぐらいで読み込むことができた。

(この時のメモリー使用量は2035MB程度)

ただ、この機能実装すると行ジャンプダイアログを出したときに最大行数がわからなくなる。

まともに使いたいなら、ちょっと考え方を変えないと駄目だ。

1GBを超えると何かしらの制限に引っ掛かる。

EmEditorや鈴川エディタ、巨大ファイル対応ログビュアーなど巨大ファイルを扱えるエディターはマジすごい。

最低賃金ウェブプログラマー雑用で、大学受験に落ちた俺にはこれが限界…。

piece_tableとかマジで意味からない。

自作エディターでつかってるgap_vectorもどこかから拾ってきたやつで、スクラッチで書いたわけではない。

こんなことなら、きちんと数学IIICを勉強して情報系の大学に行けるようにするべきだった。

大学に入るためには教科書の基礎問題だけでなく、応用問題みたいな知識の使い方を問う問題まで解けるように努力すべきだったorz

2024-12-08

アマプラへの導線もどんどんだーくぱたーんが巧妙になってて、素人絶対だまされる感じになってる

カートに移動、をおしたら、まずプライムになるかどうかの画面が表示される時点でevil

んで表示される画面も、プライムになるって選択肢一択しかない部分がモーダルダイアログっぽいデザインになってて、そこおさないと進まないような感じになってる

実際はモーダルじゃなくてほかのところもおせるしそこに会員にならないって選択肢もあるんだけどすげー目立たなくさせてまじでクソだなって思う

会員にならないって選択肢がないようにみせかけてるのが極悪

2024-11-27

クロームデフォルトブラウザにしてくださいねダイアログが出るけど

IEがそういううざいことしてたからおまえもかよという気持ちしかならんわ

2024-11-15

年末調整が難しすぎる(令和6年度版)

感想

XMLファイルダウンロード

QRコード証明書PDF作成

プリントアウト

ボールペンで記入

スマホ撮影

HEICからJPEGに変換

年末調整システムアップロード

原本経理に提出

この流れなんなん?誰がうれしいの?

【やったこと詳細】

e-Taxログインする

・「通知書等」をクリックする

・「通知書等選択」プルダウンから住宅借入金特別控除証明書」を選択する

・「切替」をクリックする

・表示された表の「令和6年分」あたりをクリックする

・「住宅借入金特別控除証明書一覧へ」をクリックする

住宅借入金特別控除証明書一覧の「確認」をクリックする

・「この「年末調整のための住宅借入金特別控除証明書」を印刷したもの使用できません。」の文言を見つけて絶望する

・「QRコード証明書作成システム」でGoogle検索する

・「QRコード証明書作成システムについて」ページにたどり着く

・「QRコード証明書作成システムを利用する」をクリック

・「環境チェック」モーダルブラウザ欄の「推奨環境外です」の表示に絶望する

Safariで開き直す

Macintoshをご利用の方の「事前準備セットアップ(Macintosh/safari用(dmg形式:約2MB)」をクリックする

ダウンロードフォルダの「cpsMac.dmg」をダブルクリックする

・QRInstall.pkgをダブルクリックする

インストーラーの「続ける」をクリックする

・「インストール」をクリックする

・「アクセス許可要求していますダイアログで「許可」をクリックする

・「Safariブラウザが起動されているため、インストール完了することができませんでした」の表示に絶望する

インストーラーの「閉じる」をクリック

・「ゴミ箱に入れますか?」で「残す」をクリックする(危ないやろこれ)

Safariを終了して再びインストーラーを起動してインストール完了する

・「QRコード証明書作成システムについて」ページを表示する

・「QRコード証明書作成システムを利用する」をクリック

・「環境チェック」モーダルブラウザ欄の△表示を無視する(Safari 18.0は対象外らしい)

・「次へ」をクリックする

e-Taxからダウンロードしておいた「令和6年分住宅借入金特別控除証明書_2024mmdd.xml」をアップロードする

・「読み込み」ボタンクリックする

ファイル読み込み結果ダイアログの「次へ」をクリックする

・「表示・印刷」をクリックする

・帳票イメージの表示ダイアログの「はい」をクリックする

PDF作成完了しましたダイアログの「表示」をクリックする

PDFファイルダウンロードする

PDFファイルプリントアウトする

MoneyForwardクラウド年末調整ログインする

・左メニューの「年末調整」をクリックする

・「5.住宅ローン」をクリックする

・「2年目以降の住宅ローン控除(住宅借入金特別控除)の申告はありますか?」で「はい」を選択し「次へ」をクリックする

・「+住宅ローンを追加」をクリックする

・「直接入力する(自動計算対象外)」を選択して「次へ」をクリックする

・「住宅借入金特別控除区分」で「◯年中居住者・認定住宅(等)用」を選択する

・「特定取得区分」で「記載なし」を選択する

居住開始年月日を入力する

住宅借入金等の金額年末残高)を入力する

・(特定増改築等)住宅借入金特別控除額に入力する値が不明

・アッ、これ(住宅借入金特別控除申告書)、自分計算してボールペンで書かないといかんの?

ボールペンで書いた

・(特定増改築等)住宅借入金特別控除額を入力する

住宅借入金特別控除申告書の上部をスマホ撮影する

住宅借入金特別控除申告書の下部をスマホ撮影する

住宅借入金残高証明書スマホ撮影する

撮影した画像AirDrop転送する

画像アップロードしようとするがHEICなので選択できない

Preview > File > ExportからPNGに変換する

アップロードするが「ファイルサイズは最大5MBです」エラーになる

Preview > File > ExportからJPEGに変換する

アップロード成功する

次回「証券番号がわからない」「保険料控除証明書電子ファイルXMLファイル)取得に1日待たされる」

ぜってぇ見てくれよな!!!

anond:20241115151637

そういうアプリダイアログの開閉みたいな瞬間的にニュッニュッと素早い動きをするUI要素みたいなのを意識すると確かに120fpsは違いが分かるが

ゲームの画面なんて実はそんなに素早い動きをしているもの存在しない

せいぜいシューター系や3Dアクションカメラを大きくマウスで動かす時くらい

カメラを動かしまくってない限りは画面上の物体の動きを追うのに120fpsは必要ない

映像的には厳密にコマ送りすると違うけど、脳が十分補完してくれるから操作上の差はでない

2024-10-13

増田文学勝手添削ストロングゼロを飲んだ』

 2回目。今回はこれ。

https://anond.hatelabo.jp/20171207223625

 まず、間延びしてないし、コンパクトにまとまっててよかったとおもう。ネットのノリをすこし捻って(離れさせて)、普通のよくある文章と混ぜ合わせる。それら二つともよく知られているものから、お互いが邪魔しない。というのがどうやら増田文学スタンダードみたい。だから、考えるのはネットのノリをどうネットの外に持ち出せるかということだけ。それができれば増田文学ぽくできる。

ここから問題点の指摘。

多くの日本人作家がやっているのと同様に、モノローグがうるさすぎる。最初のほうにある辞表あたりで喋りすぎてるとおもう。最後ダイアログから間を置かずに淡々とおわっているので、そっちに合わせるべき。

 おもってることがあるなら、Sさんとのダイアログでそれとなく出したらいい。

以下が書き直したやつ

ーーーーーーー

昨年の冬、十年勤めた会社を辞めた。上司と揉めて、最後辞表を書いた。

しばらく保険で食いつないだあと、近所の倉庫バイトを始めた。そのとき33才。そんな段階はとっくに越えてしまった。おれは学歴コネも才能もないが、別にそれもどうってことはない。

〜中略〜

Sさんプルトップをあけてくれた。

一口飲むと、舌全体に甘美な絶望が広がった。

2026年 冬のことだ。

2024-10-04

はてブアプリ、繋がる?

はてなブックーマークiOSアプリ、みんな使えてる??

「表示ができません」ってダイアログがでて表示されないんだけど。。。

2024-10-03

anond:20241003230504

こんなダイアログ絶対余分だわと思いながら、

そのダイアログ発注者利益に直結するから追加せざるを得ないとかね。

そういう話もある。

2024-09-21

anond:20240921221159

Fラン大学就職チャンネルコミュニケーションロボ「ダイアログ」っつー動画に出てくるAIと同じようなレスバばっかりやってるから

GやJやおんの奴ら

2024-06-27

anond:20240626233939

んなことねえよ

エラーが起きたときダイアログ出すのかエラー画面に飛ばすのか普通は決まってるわ

お前の客がクソなだけだろ(俺がまともな客としか仕事したことがないのかもしれんけど)

2024-04-22

anond:20240421152743

⇒★を付ける方のボタンは、早く押しても、長押ししても、ひたすら★が付くだけ。

⇒付けられた★が並んでいる部分は、長押ししなくても、マウスオーバー状態にして暫く待っているだけで、削除しますか?ダイアログが表示される。

2024-03-13

Mac向けアプリを作っている某アプリ作家さんが、X(Twitter)で

「〝これでいいですか? OK/Cancel〟のようなダイアログを出そうかなあ」

のような事をつぶやいてた。文章はボカしたが、「OK/Cancel」の箇所だけは原文ママ

UIデザインを厳密に考えていたわけではないようで、本当に何気ないつぶやきのようだった。

やはり人間の頭としては「OK / Cancel」の順に並ぶのが自然なんだろうか。

「Cancel / OK」の順ではなく。

2024-02-24

anond:20240224102616

デザイナーに「顧客会社Windows使ってるんでヨロシク」と伝えておいたのに

ダイアログボタンを 左:No系 | 右:Yes系 にデザインしちゃって

事故がちょいちょい発生してクレーム来て手動でデータ修復したりして

辛い

早い段階でボタンの左右くらい入れ替えてればよかったんだが

さら左右を変えるのも怖くて、誰も言い出せない

本当に辛い

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