
はてなキーワード:localhostとは
というか、それ以外に思いつかないんだよな。
localhostが消えるとか、あまりに初歩的で致命的な不具合、今まで正しく動いていたところに発生する不具合は、ここ1、2年で経験がある。
というか、ここ1、2年にしか経験がない(もちろん主犯はおいらではない。居合わせただけ)。
これ。
あと、
サジェストによる書き換えが危険なのは、スコープ(フレーム)外での利用のされ方をAI が把握できない、部分(覗き穴/ピープホール)最適化しかできないと言う点と、こちらが本質的な問題なのだが、そこの処理の仕組み、文脈を理解してサジェストしているのではなく、学習元データで多く組み合わされているパターンを提示しているに過ぎない、と言う点だ。
これ、時間が経ってから致命的な事態を引き起こし、原因究明に手こずる原因になる可能性がとてもとてもとても高いのだよな。
レビューすると、「AIのサジェストがあったので」的な修正が入っていることがちょいちょいあるんだが、妥当でないサジェストを却下するだけの技術力がない場合、むしろLintとかパターンチェッカー的なのに留めておいた方が、思わぬ瑕疵を埋め込まずに済む。
できるエンジニア視点でも、スキャフォールドとして使おうとすると、細かく指定できそうで生成量が多いと見落としが発生しそうだし、確実なテンプレートで十分じゃん? という気しかしない。開発が進んだ時点では、さらに使い所がない。なぜなら、「新しいものを作っている」ので、既存パターンが通用しないことが多いから。
AIの生成「量」が圧倒的なのは確かなんだが、このレベルのコーディング能力を「神」と考えるレベルのエンジニアからは実質制御不能で、これを使役できるレベルのエンジニアからは低能中途半端すぎて役に立たない、ってのが、呪術廻戦の摩虎羅やな、と感じる。
例えば絵の自動生成なら、登場人物の一人の指が6本になってようが、この線はどこに繋がってるんだ? とか、この漢字はなんだ? みたいなものが混じってようが、ぱっと見気づかないし、見直しておかしいのに気づいても、大勢に影響はしない。
けど、システムの場合、下手すりゃ1ビットで致死的障害を発生させてしまったりする。
その違い、ヤバさを理解できてないエンジニアがこんなにゾロゾロと存在する、という現実に絶望する。
加えて、「マジかよ……」ってなるのが、「既存のテストがないから、AI で追加してカバレッジをあげた」ってドヤ顔で語るエンジニア。
なんて言うか、なんとなく良さげなテストを理解しないでなんとなくマージしてるんだけど、何をテストしなきゃいけないか理解しないで、現状のコードを追認するだけだったりする。
それで必要十分かちゃんと検討できるだけの技術力がないと、「命綱、巻きつけたよー」と言いつつ、その命綱が宙に垂れてるのに気づいてない、って状態になってたりするんだよね。
で、不具合が表面化したら、それ用のスペシャライズドな監視の仕組みを追加して、手動テストを追加して、不具合が発生したら本番DBに接続して手動で修正するって、そんなのが日を追うごとにどんどん増えていって、仕事の大半が不具合対応、ってうんこみたいな現場があちこちで爆誕してるんよ。
でも、どのエンジニアも、自分たちの現場が異常であることに気づくだけの技術力がなくて、毎日みんなで奴隷が回している謎の棒を回し続け、経営者は、なぜこんなにエンジニアの数が必要で、お金が湯水のように浪費されているか理解できなくて、ストレスを溜めまくってる。
気づいた人はとっくにやめてるから。
炎上してないけど、針の筵だよね。
Youtubeのオススメで、windows11をアプデしたら127.0.0.1が繋がらなくて開発者が阿鼻叫喚みたいなのが流れてきた
繋がらないなら繋がらないで他に代替策とか普通にあるし、実際の開発者ならいつものことかと思いながら淡々と回避策を使うだけだろうけど
あと、テストせずリリースするなとかアプデのたびに壊すのやめろとかテンプレコメントがあったけど、開発者なら逆なんだよな
MSほどの会社がこういう感じだからこそソフトウェアはバグがあって当たり前だと一般人でもわかってくれるわけ
https://profile.hatena.ne.jp/dorawii_bukuma/
はてなのサイト側で読み込まれているはずのrksトークンを生成する関数を直接叩く方法がどうしても分からず結局request処理を自分で書く方法ではなく自動でUI側の保存ボタンをクリックするという無難な方向に落ち着いた。
最初から後者の方法をとっていればもっと全然早く作れたのにというは所詮言い訳か。
とにかくスクリプトを公開しておく。
@echo off
cd /d "C:\Users\user\Documents\jsscript"
:: Nodeサーバーを別ウィンドウで起動
start /min "" noderun-batch-server.js
::Pythonサーバーを別ウィンドウで起動(hatenaserver配下)
start cmd /k ""python hatenaserver\server.py
{
"username": "",
"password": ""
}from flask import Flask, request,jsonify
importjson
importos
from hatena_client import HatenaClient
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
config_path =os.path.join(os.path.dirname(__file__), 'config.json')
withopen(config_path, encoding='utf-8')as f:
config =json.load(f)
@app.route('/bookmark', methods=['POST'])
def handle_bookmark():
data = request.json
url = data.get("url")
if noturl:
returnjsonify({"error": "MissingURL"}), 400
client = HatenaClient(config["username"],config["password"])
client.start_browser()
if notclient.login():
client.quit()
returnjsonify({"error": "Login failed"}),403
success =client.add_bookmark(url)
client.quit()
returnjsonify({"status": "ok" if success else "fail"})
if __name__ == "__main__":
app.run(port=12347)
// ==UserScript==
// @name自動セルクマ送信
// @namespace tampermonkey.net/
// @version 2025-08-07
// @descriptiontry totakeoverthe world!
// @authorYou
// @matchanond.hatelabo.jp/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
consturl = location.href;
if (!/^https:\/\/anond\.hatelabo\.jp\/\d+$/.test(url)) return;
const editLink = document.querySelector('a.edit');
if (!editLink) {
// 既に編集ページなので処理をスキップ
console.log('編集リンクが存在するため、スクリプトを終了します。');
return;
}
fetch('localhost:12347/bookmark', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body:JSON.stringify({url:url })
}).then(r =>console.log("通知成功")).catch(e =>console.error("通知失敗", e));
})();
-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250821192753# -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaKb0qwAKCRBwMdsubs4+SHfiAQDcXmTHBaZ5Zzr1KI/OxZ0xl69oevOdy1FXJYwYvsmo5AD/ZPtZiO1JgTDjm+27iymlkdzIXOIGWfC82UTr1mJ7EwU==YoV+-----ENDPGP SIGNATURE-----
今時点の使えそうな Sonnet4 を使ってコード生成とか業務でやる時にTypescript は案外うまくいかないことが多い。
UIとかシンプルなものであれば結構うまくいくけど、graphql,prisma みたいなところになると、token数すごくなるし結局完成しない。
この辺りが、なんとも小骨がひっかかるから。Typescriptの型ってやっぱりあれなのかと思って調べてもらったんだ。
↓↓↓↓↓↓↓
##ソフトウェア工学から見たTypeScriptの3つの根本課題
Web上の専門的な議論や論文では、TypeScriptの課題は主に以下の3点に集約されます。これらはすべて、JavaScriptという土台との不適合性に起因するものです。
1. 不健全な型システム (Unsound Type System)
ソフトウェア工学において、型システムの**「健全性(Soundness)」**とは、「コンパイル時に型エラーがなかったプログラムは、実行時に型エラーを起こさない」という保証を指します。
TypeScriptは、この健全性を意図的に放棄しています。
設計目標の不在:TypeScriptの公式ドキュメントには「健全であること」は設計目標ではないと明記されています。これは、JavaScriptとの互換性や開発者の利便性を優先した、根本的なトレードオフです。
具体的な不健全さ:
配列の扱い:string 型の変数に (string |number) 型の配列を代入できてしまうなど、配列の扱いに不健全な部分があります。これが原因で、実行時に数値を取り出してしまい、string型のメソッドを呼び出してエラーになる、といったことが起こり得ます。
any型と型アサーション:any型の存在や、開発者がコンパイラに「これはこの型で間違いない」と強制する型アサーション(as構文)は、健全性を根本から破壊する「抜け道」です。
関数の引数(Bivariance):関数の引数の型チェックが、他の多くの言語(反変)とは異なり、より緩いルール(双変)になっています。これも実用性を優先した結果、理論的な正しさを犠牲にしている例です。
学術的な観点では、この「不健全さ」はTypeScriptの型システムが持つ最大の弱点と見なされています。
2.構造的部分型(Structural Typing)の罠
TypeScriptは、クラス名などによらず「構造が同じなら同じ型」とみなす構造的部分型を採用しています。これはダックタイピングが主流のJavaScript文化に合わせた賢い選択ですが、ソフトウェア工学的にはいくつかの罠があります。
意図しない互換性: 全く異なる目的で作られた二つのオブジェクトが、偶然同じ構造を持っていたために、型チェックをパスしてしまうことがあります。これにより、ドメイン(業務領域)の意図とは無関係にコードが結合してしまい、予期せぬバグを生む原因となります。
過剰なプロパティの許容:constconfig: { port:number } = { port: 8080, host: 'localhost' }; のように、変数経由で代入すると、型に定義されていない余分なプロパティ(host)がエラーになりません。これは仕様ですが、開発者の意図しないデータが紛れ込むことを許容してしまい、セキュリティやバグのリスクに繋がります。
これは「TypeScriptの型は、データの『形状』を記述するが、その『意味』や『文脈』を保証しない」という根本的な限界を示しています。
3. 「漏れのある抽象化(Leaky Abstraction)」としての本質
Joel Spolskyが提唱した「漏れのある抽象化の法則」に倣えば、TypeScriptはまさにその典型例です。
TypeScriptは「静的型付け」という抽象化レイヤーを提供しますが、開発者は常にその下にあるJavaScriptの泥臭い現実(undefined, null, thisの挙動など)を意識し続けなければなりません。
抽象化の不徹底: 型を書いているときも、最終的にそれがundefinedになりうることや、thisが何を指すかを常に考えなければなりません。抽象化レイヤーが、下位レイヤーの詳細を隠蔽しきれていないのです。
摩擦コスト: この「漏れ」が、これまで議論してきた「Union地獄」や「境界での型変換の手間」といった、開発上の継続的な摩擦コストを生み出しています。
##結論
ソフトウェア工学的な観点から見ると、Web上の専門家の議論は我々の対話の結論を強く裏付けています。
TypeScriptの課題は、個別の機能の優劣ではなく、「健全性を犠牲にしてでも、JavaScriptという動的な土台との互換性を最優先した」という、その成り立ちそのものにあります。その結果として生じる「不健全さ」「構造的部分型の罠」「漏れのある抽象化」といった問題は、この言語を使い続ける限り、アーキテクトが向き合い続けなければならない、本質的なトレードオフなのです。
一度投稿したうえで別タブを開いてプログラム的(fetch)に送信してその別タブが閉じられる仕組み。
// ==UserScript== // @namePGP未署名検出と別タブ自動編集 // @namespacehttp://tampermonkey.net/ // @version 1.0 // @descriptionPGP署名がない投稿を自動編集ページへ誘導 // @matchhttps://anond.hatelabo.jp/* // @grantGM_setValue // @grantGM_getValue // @grantGM.openInTab // ==/UserScript== (function () { 'use strict';constbody = document.getElementById('entry-page'); if (!body) return;consttitleText = document.title; if (!titleText.includes('dorawii')) return;constpgpRegex = /BEGIN.*PGP(?: SIGNEDMESSAGE| 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 }); })();
// ==UserScript== // @name編集ページ処理と自動送信・閉じ // @namespacehttp://tampermonkey.net/ // @version 1.0 // @description編集ページで署名処理と送信、タブ自動閉じ // @matchhttps://anond.hatelabo.jp/dorawii_31/edit?id=* // @grantGM_getValue // @grantGM_xmlhttpRequest // @grantGM_setClipboard // @grantGM_notification // @connectlocalhost // ==/UserScript== (async function () { 'use strict';const shouldRun = awaitGM_getValue('open-tab-for-edit', '0');consttextareaId = 'text-body';consttextarea = document.getElementById(textareaId); if (!textarea) return;const content =textarea.value;constpgpSignatureRegex = /-----BEGINPGP SIGNEDMESSAGE-----[\s\S]+?-----BEGINPGP SIGNATURE-----[\s\S]+?-----ENDPGP SIGNATURE-----/; if (pgpSignatureRegex.test(content)) {console.log('[PGPスクリプト]署名が検出されたためそのまま送信します'); return; }consthttpRequest = (url, data) => { return newPromise((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 = newURL(window.location.href); // 2.ベースとなる部分 (例: "https://anond.hatelabo.jp") を取得constorigin = currentUrl.origin; // 3. 'id'パラメータの値 (例: "20250610184705") を取得constidValue = currentUrl.searchParams.get('id'); // 4.ベース部分とIDを結合して、目的のURL文字列を生成 //idValueが取得できた場合のみ実行する let newUrl = null; if (idValue) { newUrl = `${origin}/${idValue}`; } // 5. 生成されたURLを変数に代入し、コンソールに出力して確認console.log(newUrl);constvalueToSend = newUrl;try {const signatureText = awaithttpRequest('http://localhost:12345/run-batch',valueToSend);console.log('バッチ応答:', signatureText); if (!signatureText.includes('BEGINPGP SIGNEDMESSAGE')) { 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をキャンセルconstbodyText =textarea?.value || ''; //reCAPTCHAトークンの取得constrecaptchaToken = await newPromise((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 {constresponse = 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); } })();
consthttp =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') { letbody = ''; req.on('data', chunk => {body += chunk.toString(); }); req.on('end', () => {constparsed = querystring.parse(body);constvalue =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 serverrunningathttp://localhost:12345/');});
@echo offsetlocal 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> nulgoto signloop):postprocesspowershell -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)"endlocalexit /b
#Persistent#SingleInstance ignoreSetTitleMatchMode, 2WinWaitActive, pinentrySendInputpasswordSleep 100SendInput {Enter}ExitApp
動けばいいという考えで作っているので余分なコードも含んでいるかもしれない。
-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250613185036 -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEv1FQAKCRBwMdsubs4+SHHkAQDUOLgBcdji2T6MJ7h/vlMdFfGlWAzNdXijjE1gIuEPywEAiMNMZqhrMmtlc7UqRuggNJ/UTa5xTIcKp622+7jJQQg==Lgkl-----ENDPGP SIGNATURE-----
ようやく(ほぼ)すべてが自動化された。
あとはローカルサーバーの起動をスタートアップに設定する(方法をAIに聞いて指示に従う)だけの消化試合。
署名時要求してくるパスワードを自動入力するahkファイルはドキュメントのAutoHotkey配下に置いた。
バッチファイル(make.sign.bat)はデスクトップに置いた。
#Persistent#SingleInstance ignoreSetTitleMatchMode, 2WinWaitActive, pinentrySendInput お前のパスワードSleep 100SendInput {Enter}ExitApp
//run-batch-server.jsconsthttp =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 serverrunningathttp://localhost:12345/');});
@echo offsetlocal enabledelayedexpansion::ミリ秒単位のUTC時刻を取得for /f %%a in ('powershell -nologo -command "[int64]::Parse((Get-Date).ToUniversalTime().ToString('yyyyMMddHHmmssfff'))"') doset timestamp=%%a::署名するファイル名set infile=%TEMP%\pgp_input.txtset 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> nulgotosignloop):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 blankline).endlocalexit /b
// ==UserScript==// @namePGP署名自動付加スクリプト(GM_xmlhttpRequest版)// @namespacehttp://tampermonkey.net/// @version 1.0// @description投稿前にPGP署名を付けてから送信(fetch未使用)// @matchhttps://anond.hatelabo.jp/dorawii_31/edit*// @grant GM_xmlhttpRequest// @grant GM_setClipboard// @grant GM_notification// / @connectlocalhost// ==/UserScript==(function () { 'use strict';const submitId = 'submit-button';consttextareaId = 'text-body';const localServer = 'http://localhost:12345/run-batch';constpgpSignatureRegex = /-----BEGINPGPSIGNEDMESSAGE-----[\s\S]+?-----BEGINPGPSIGNATURE-----[\s\S]+?-----ENDPGPSIGNATURE-----/;consthttpRequest = (url) => { return newPromise((resolve,reject) => { GM_xmlhttpRequest({ method: 'GET',url:url, onload: function (response) { resolve(response.responseText); }, onerror: function (error) {reject(error); } }); }); };const interceptClick = () => {constbtn = document.getElementById(submitId); if (!btn ||btn.dataset.pgpIntercepted === 'true') return;btn.dataset.pgpIntercepted = 'true';btn.addEventListener('click', async function (e) {consttextarea = 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 { awaithttpRequest(localServer); //バッチ実行constsignatureText = await navigator.clipboard.readText(); if (!signatureText.includes('BEGINPGPSIGNEDMESSAGE')) { 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すごいなと思うよ。そして思うのは今後重要になってくるのは文法とか自体に詳しいことじゃなくて、そのプログラムの処理内容を指示できるシステムエンジニア的な言語化能力のほうじゃないかなと思った。
-----BEGINPGPSIGNEDMESSAGE-----Hash: SHA51220250609111559680 -----BEGINPGPSIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEbCbwAKCRBwMdsubs4+SLueAPwOv7PBk4voAe5qlcCEvs/PJhmKc5QAb/1R43JMQFuDZgD/UTPEKsL/PhK9jFGv2HDXK1dVjLNwvosgX9uYJh5xxwY==qiOE-----ENDPGPSIGNATURE-----
増田投稿しようとするとInternal Server Error が出るやで
The server encountered an internalerror or misconfiguration andwas unable to completeyour request.
Please contact the server administratoratroot@localhost to inform them ofthe time thiserror occurred, and the actionsyou performed just before thiserror.
More information about thiserrormay be available in the servererrorlog.
The server encountered an internalerror or misconfiguration andwas unable to completeyour request.
Please contact the server administratoratroot@localhost to inform them ofthe time thiserror occurred, and the actionsyou performed just before thiserror.
More information about thiserrormay be available in the servererrorlog.
The server encountered an internalerror or misconfiguration andwas unable to completeyour request.
Please contact the server administratoratroot@localhost to inform them ofthe time thiserror occurred, and the actionsyou performed just before thiserror.
More information about thiserrormay be available in the servererrorlog.
JTCで「プログラミングできます!」って言ってる人で本当にできる人見たことない
想定の範囲内だし、中にはそこそこ出来る奴もいる
問題は中堅社員ぐらいで「プログラミングできる」「ゴリゴリ書いてる」とかいう人
要するに本当にプログラミングできる人はプログラミングをするような仕事をしている
そしてJTCにはそういう仕事がないのでベンチャーか外資に行ってる
っていうJTCもあるけど、よく考えてくれれば分かるんだけどJTCの作り出すソフトウェアプロダクトでまともなものを見たことないでしょ
N〇Tとか富〇通とかN〇Cとか9割9分ぐらいでまともなソフトウェアがない(1%ぐらいはあるかもしれない)
彼らはバグがないことに命を削って開発をしていて、実際に使って貰えるかどうかなんて一切考えてない
だからとにかくテストケースを作ってそれに対処するために膨大に作業時間を増やして
結果として、そういう知識は何も要らず作業としてのプログラミングばかりやることを「ゴリゴリ書いてる」などと言ってしまう
そんなところで開発してたとしても、申し訳ないがプログラマーとしては下の下ぐらい
つまり、JTCで「プログラミングできます」って言う人はそういう部署で一時期ゴミコードを量産してたか
もしくは学生時代で知識が止まってるかのどっちかで、実際に書かせてみたらマジで全然ダメ
どれぐらいダメかっていうと
って言ってて見てみたら普通にlocalhostってハードコードされてるとか
Dockerなら動いちゃう場合もあるからこれまで何も考えず実装してたけど実はlocalhostってどういう意味か分かって無いっていうね
そんな奴らばっかりだし、なんなら生成AIのせいで良く分からずコピペしてる奴も出てきてマジでカオス
そういう奴が管理職になったりしてプロジェクト引っ張ってるからマジでゴミしか生まれてこない
研修ばっかりやってて研修会社とコンサルに良いようにむしり取られてる
アホすぎてやってられんわ
dockerでubuntu:20.04でchromeDriverにchromium-browserとか入れればいいんだろ?
誰か「chromium-browser? それならapt-get installlsb-release libappindicator3-1 の次に
wgethttps://dl.goo略/_amd64.deb して dpkg でインスコや」
ってか、これじゃchromeDriverが動かない。chromium-browser も無いし、インスコ出来てなくない?
別の誰か「ちゃうちゃう、apt-get installchromium-browser がシンプルでええやん」
まあ、そうやろな。インスコしとくれ。
ターミナル「色々DLしとるが、どっかのhttps://archve.略/foobar で Bad Request が返ってきたでw」
何やそれ・・1回くらい自動でリトライしてくれていいんやない?自分でリトライしたら通ったで。
しかしこれも動かない。
別の誰か「apt-get install default-jre いるみたいやで。ドキュメントどこにも書かれてないけど」
何やそれ?なんでJREが出てくるの。
まあJRE入れれば、確かにchromedriverの出すエラーは変わった。
「chromium-browserのプロセスが居なくなったし、クラッシュしたんじゃね?」と。
何やそれ。。。
chromium-browser --version をやってみると
ターミナル「snap installchromium でsnap版入れてくれw」
まあよく知らんが、やったるか。snap installchromium っと
ターミナル「あかん、http://localhost/v2/snaps/chromium に繋げられんのやがw」
なんでlocalhostに繋げようとしてんの。
いまだにLinuxくんと仲良くできない。
追記。
なるほど、Ubuntu20.04からはsnappyに移行しとるんだと。しかしWSL2ではsystemdが動いてないんでsnapdも動いてない。だからアカン。
わいが仲良くできていないのは、LinuxくんではなくWSL2くんと言うべきなのか?
こんなの
{2593F8B9-4EAF-457C-B68A-50F6B8EA6B54}
および APPID
{15C20B67-12E7-4BB6-92BB-7AFF07997402}
の COMサーバーアプリケーションに対するローカルアクティブ化のアクセス許可を、アプリケーションコンテナー 利用不可SID (利用不可) で実行中のアドレスLocalHost (LRPC使用) の
ユーザー Masuda\YourPCSID (S-*--**-******-******-******-****) に与えることはできません。このセキュリティアクセス許可は、コンポーネントサービス管理ツールを使って変更できます。
結論としては
であり
These events can be safely ignored because theydon't adversely affectfunctionalityand areby design.
ということでこれはそういうものなので無視してよい、気になるならイベントビューアに記録されないようにフィルタを書け、警告の文面通りにセキュリティ許可をいじるのはどんな副作用が起きるかわからないのでお勧めできないだそうだ
お勧めできないってなんだそりゃ
まあいいや
phpのmb_send_mailを使ってSPF付きでメールを送信すると
Received: (fromAAA@localhost)by www2000.sakura.ne.jp
X-Authentication-Warning: www2000.sakura.ne.jp:AAAset sender to info@example.com using -f
問題となっているのはAAAとなっているところで、ここには契約したアカウント名が入ります。
これは初期ドメインの先頭と一致するのでブラウザにAAA.sakura.ne.jpと打ち込めばメインサイトにたどり着けてしまいます。
せっかくマルチドメイン運営でひた隠しにしてきたのに「あ、この人AAAの運営と同一人物だ」とバレてしまいました。
いやあああぁぁぁぁぁぁ・・・!
死ぬほど恥ずかしい。
想像してほしい。真面目なサイトの運営者が裏では主食がBLとか言っている姿を。
これ以上被害を増やさないために、これを書き換えるか消す方法を教えてください。
腐女子やけど、高校生の時に初めて作った携帯サイトに掲示板を付けた
ただ単に当時はサイトと言ったら掲示板を付けるのがデフォルトっぽい空気を感じていたし、御多分に漏れずフォレストページでも簡単に掲示板を付けることができたからコンテンツの1つとした
ただそれだけだ
ただ紙に丸ペンとコピックで描いたの絵の写メを載せていただけだったが、なぜか掲示板には書き込みがあった
私はリア友でもない他人のサイトの掲示板に絵の感想を書き込もうなどと考えたことがなかった
このロジックでよく考えたらそもそも最初から掲示板を付ける必要がなかった
なにも考えていなかった
知らん他人と絡むのは怖いからリンクページなどは絶対作らないと思った時点で掲示板をコンテンツに入れるべきじゃなかった。アホだ
なぜか私のペンネームにそっくりな名前で書き込む人もいたし(私が〇〇、相手が〇〇ぽん)、たまたま似たペンネームなのかな?と思うようにしたかったけど書き込み頻度も高い
とても穏やかな文体で決して荒らしなどではないとはわかるのだがどうしても怖かった
こんなガキの絵を褒めてくれる優しい人はたまたま娘の携帯を見てサイトを見つけたリアル私の母かな?と本気で思っていたし今でも少しはそう思ってる
まあ、リアル私の母はそんなふうに携帯サイトの掲示板を使いこなしたりできないのだけど
そして褒めてくれるのが好意だろうと、逆に怖い。だって顔も知らん人だよ?私におべっか使う必要はない
それが怖い。この気持ちに共感してくれる人を遠くから見つけることができたらとても嬉しいくらい、インターネット世論から外れた感情かなと思っている
Twitterとかでも「感想を送らないと同人作家は筆を折る」みたいな私と正反対の極論の方が大きく聞こえるからね
あと知らん他人とインターネット上で、特に私の絵を媒介して絡むのは嫌だがリアルで知らん他人と話すのは好きだ
インターネット世論で嫌われがちな絡んでくるショップ店員と話すのが大好きだ
まあそれはアパレルの販売員ではない裏方だからというのもでかいけど、美容師とか、旅行中にその辺にいる人たちとかと話すのも好きだ
でもインターネット上で私の絵を媒介して絡むのは嫌だし、リア友でも相手が私の絵を変な持ち上げ方してくると徐々に気まずくなるのもうわかったから自作の同人誌渡す時はでかい声で「絶対感想とか言わないでね!」と言う
「感想いらないなら不特定多数に絵を見せるな」みたいな極論も聞いたことあるけど、私は自分の絵も漫画も好きで並べておきたいし、サイトを作ったり新しいSNSに登録するのも好き
勿論localhostにネットには上げてない小学生の頃からの絵を全部ずらっと並べたサイトだって作ってるよ
でもコンセプトごとに厳選した絵を載せるサイトをワールドワイドウェブに置いて、自分以外の誰かが私の絵を見てる形跡を発見して、どんなふうに見たのかなって生ログのページ遷移時間から想像するのが好き
でもよく知らん他人から接触されるのはいかに相手にとっては好意であろうとまじで怖い
私は好きで趣味で描いてるだけだからこれ以上改善してどうこうとかはそんなに思わんし、技術的に悩む時はあるけどそういう時は絵の上手いリア友に相談してるから不特定多数のご意見は不要だ
好きな「趣味」という大枠の中にコアとなる好きな部分と付随する苦手な部分があるのは多くの場合に有り得ることだ
その大枠から苦手な部分を限りなく取り除いて濃厚なコアだけ味わいたいじゃん
好きなことしたいなら苦手なことも受け入れろなんて根性論今時昭和すぎるでしょ
そんなわけで私からしたら「絵」と「不特定多数のご意見・ご感想」にはなんの関わりもないよ
勝手にセットにしないでほしい
まあこれもイマジナリーエネミーを勝手に見て心が騒いでるってだけなんだけど
いくつかの携帯サイトを作った高校生時代が終わり、大学生になると有料鯖を借りてPCサイトを作るようになる
長年ねらーで同人板の影響を多分に受けていたため同人サイトとは言え連絡先が1つもないのは無責任と思っていた
そしてメールフォームや拍手は感想を送りやすいが業務連絡用と書き添えたメールアドレスのみなら感想を送りにくいらしい
私は〇〇○★yahoo.co.jp(★→@)のような表記がダサく感じて嫌だったので、しっかり@込みでメールアドレスを画像にして貼った
画像ならコピペできないし一文字一文字打ち込むのは絶対にめんどくさいからよっぽどの不具合がなければ誰も連絡を取ろうとはしないだろうと踏んだのだ
クソめんどくさい。適当にお礼を言ってスルーしたかったけど多分これが営業ってやつだろうと思った
勝手な妄想が膨らんで相手をフォローしたり相手の作品に10点入れた方がいいのかなという圧を勝手に感じた
もうそんな妄想をしてしまう自分自身が嫌だった。だからとにかく私に触れないでほしかった
この頃にはだいぶ学習できてきていたのでかなりお触り禁止感の演出ができていたのではないかと思う
大体の人が黙ってRTいいねだけしてくれるし、bioで予防線張ってるから直リプも無視し放題だ
一言感想の空リプ引リツは結構あるけどこれは割とおもしろかった
どうやら私は感想メールに返信しなきゃいけないという義務感の発生が最も嫌だったらしい
でも積極的に感想欲しがってると勘違いされたら困るから絶対に反応しないしマシュマロとかは絶対置かない
Twitter見てると前述の「感想を送らないと同人作家は筆を折る」みたいなツイートがバズるのをたまに見かけるけどどうして?
個人的にはそういう極論を持ってる人ってごく一部で、大半は感想はあったら嬉しいけどなくても別にって人、そして感想不要って人も見かけよりは多いと思ってる
私は過去の経験から「感想不要」と明記せずとも感想を送りづらい雰囲気を出すことに長けてきたと思う
でもわざわざ不要と書くのはなんか怖い
感想を欲してやまない、でも全然もらえなくてほぼ飢えてるような過激派、同ジャンルでも目立つからついついヲチってるけど、目視したわけでもないイマジナリー感想不要の人を脳内ででっち上げて「嘘つき」とか「聖人君子を気取ってる」とか罵ってるもの
こっちからしたら私が「感想ください!」って言う方が嘘だし、人の好意を受け入れられない私みたいなタイプの感想不要人が聖人君子とはとても思えないけど
本人はほしいもんはほしいって言わなきゃもらえないって発想に捉われてるみたいだけど、逆にあの攻撃性の発露こそが「感想を送りづらいお触り禁止感の演出」の極致にすら思える
私は割と詳細なウェブ性格診断みたいなのの結果を見るのが結構好きだ
感想を欲しがるのって診断結果を早く見たいような気持ちと近いのかな、と勝手に想像している
確かになんかそういうののプロが私の漫画を読んで心理分析とかしてくれるならすごく興味ある
お金払ってでも頼むと思う
そういうことなのかな?
でもインターネット上で誰かに感想を送るであろう人の大半は心理分析の素人だろうし、別に感想って大部分は心理分析じゃないし、私はいいかなあ
The server encountered an internalerror or misconfiguration andwas unable to completeyour request.
Please contact the server administratoratroot@localhost to inform them ofthe time thiserror occurred, and the actionsyou performed just before thiserror.
More information about thiserrormay be available in the servererrorlog.
| 時間 | 記事数 | 文字数 | 文字数平均 | 文字数中央値 |
|---|---|---|---|---|
| 00 | 126 | 17429 | 138.3 | 39 |
| 01 | 87 | 15637 | 179.7 | 55 |
| 02 | 46 | 4886 | 106.2 | 73.5 |
| 03 | 34 | 7349 | 216.1 | 56 |
| 04 | 22 | 4164 | 189.3 | 49 |
| 05 | 17 | 3537 | 208.1 | 65 |
| 06 | 12 | 1789 | 149.1 | 45 |
| 07 | 44 | 3339 | 75.9 | 33 |
| 08 | 59 | 7214 | 122.3 | 39 |
| 09 | 53 | 5642 | 106.5 | 41 |
| 10 | 76 | 7994 | 105.2 | 39.5 |
| 11 | 77 | 6725 | 87.3 | 34 |
| 12 | 87 | 7355 | 84.5 | 60 |
| 13 | 61 | 6923 | 113.5 | 38 |
| 14 | 59 | 12106 | 205.2 | 39 |
| 15 | 62 | 23605 | 380.7 | 42.5 |
| 16 | 69 | 5024 | 72.8 | 26 |
| 17 | 151 | 12090 | 80.1 | 35 |
| 18 | 130 | 8479 | 65.2 | 37.5 |
| 19 | 99 | 10441 | 105.5 | 39 |
| 20 | 78 | 8176 | 104.8 | 36.5 |
| 21 | 95 | 6100 | 64.2 | 31 |
| 22 | 142 | 16071 | 113.2 | 37 |
| 23 | 202 | 21729 | 107.6 | 34 |
| 1日 | 1888 | 223804 | 118.5 | 38 |
人(165),自分(157), 今(98),増田(82), 話(70), あと(59),必要(58), 好き(55), 感じ(53),人間(53), 前(51),仕事(50),日本(48),意味(45),関係(43), 男(42), 女(41),時間(41), 気(40), ー(38),普通(38),相手(38),子供(38),今日(37),問題(37),ネット(36),絶対(36),言葉(35), 他(34),場合(33),女性(33),理解(33),最初(33), 金(33), 嫌(32),最近(32),社会(31), 頭(30), 結果(30), 親(30),理由(30), 目(29),結婚(28), 全部(28), しよう(28), 無理(27),ダメ(26), 逆(25), たくさん(25), 別(25), 昔(25),状態(24), じゃなくて(24),世界(24),お金(24),気持ち(24), 一番(24),他人(24), 本人(23), しない(23), 嫌い(23),アニメ(23),生活(22),評価(22),ゲーム(22),男性(22),時代(22),存在(21), 体(21),大事(21), 状況(20),作品(20),方法(20),情報(19), 一人(19),バイト(19), 興味(19),会社(19), 誰か(19),努力(19), では(19), 全て(19),レベル(19),クズ(18),説明(18), 大変(18), 周り(18), 本(18),人生(18), 全員(18), 家(18),社員(18), 絵(18),おっさん(18),バカ(18), 結局(18),文化(18),映画(17),経験(17),自由(17), 塾(17),勝手(17), 正直(17),オタク(17), 内容(17),名前(17),価値(17), 手(17),病気(17), 朝(17)
増田(82),日本(48), じゃなくて(24),可能性(16),元増田(13), いない(13),トラバ(12),多様性(11),キモ(11),スマホ(11),価値観(10),自由意志(10), なんの(10),ブログ(10),フランス(10),東京(10),2018年(10), ワイ(9),SNS(9),わからん(9), …。(9), なんだろう(9),ネオリベ(9),ブクマ(8),過労死(8),基本的(8),アメリカ(8),マウンティング(8),ツイッター(8), なのか(8),10年(8),牛丼(8),普通に(8),イヤホン(8), A(7),自己肯定感(7),マジで(7),ガチ(7),自動運転(7),アプリ(7),キチガイ(7), -2(7), a(6), 笑(6),積極的(6), s(6),いいんじゃない(6),localhost(6), 何度(6),hatena(6),ダイバーシティ(6),発達障害(6), 涙(6),個人的(6),OK(6),Ubuntu(6),プレイ(6),イケメン(6),フェミ(5), 1年(5),である(5),とはいえ(5),AI(5),自己責任(5),ディストピア(5),自分自身(5), tbsradio(5),分からん(5),2017年(5), 書き起こし(5), 2回(5),若い人(5),大阪(5),goo.gl(5),ブコメ(5),twitter(5),関係者(5),栄光ゼミナール(5), 30分(5),過去最低(5), 一日(5), paypay(5), Session(5), ウザ(5),マクロン(5), ありません(5), 81%(5),保護者(5),はてなー(5),永田(5),ドイツ(5), 1回(5),E3(5),中国(5), .s(5),荻上(5),はてブ(4),至上主義(4),被害者(4),学生時代(4),いいね(4), 娘(4),大企業(4),人権侵害(4), items(4), AB(4),自分たち(4),風俗嬢(4),あいつら(4),KKO(4),毎日(4), aXvn(4),Windows(4),サイコパス(4),ASD(4),低能先生(4), にも(4),関東(4),人間関係(4),ヒトラー(4), 何回(4),韓国(4), X(4), いいじゃない(4),qiita(4),名古屋(4),2ch(4), 1日(4),アラサー(4),Chrome(4), E(4),一般的(4), 上の(4), かもしれん(4),経済的(4),オチ(4),まとめサイト(4),AA(4),あるかな(4), B(4),ゲートウェイ(4),自己満足(4), 影響力(4),コスパ(4),ラノベ(4), 2時間(4),上場企業(4)
過去最低(5),永田(5),栄光ゼミナール(5),紅生姜(4),マクロン(5), のこぎり(4),荻上(5), 絵の具(3), 望(3), 白地(3),パイパイ(3),自由意志(10),暴動(8), 塾(17),過労死(8),牛丼(8),イノベーション(6),イヤホン(8), 皿(11),ケア(6),ネオリベ(9), 整形(9),教室(9),自己肯定感(7), 日曜(6),アクセス(12), そうした(9),多様性(11),介護(10), 遠い(8),マウンティング(8),調査(10), 初期(8), 勤務(10),デート(11),バイト(19), ごめんなさい(8)
■過労死を出した栄光ゼミナールがどうなっちゃってんのか書いておく /20181208225303(20), ■ /20181208233617(19), ■ /20181209144856(14), ■『帰ってきたヒトラー』みたいな映画を日本で撮るなら /20181208220445(12), ■チャリに乗ってイヤホンは本当に悪いのか? /20181208120626(10), ■結婚を考えてる相手が姓を捨てたくないと言ってきたら /20181208131726(9), ■増田ってひねくれた略称だよね /20181209110804(7), ■整形ってなんで忌み嫌う対象なんだろう? /20181209164235(7), ■「死にたい」にかける言葉 /20181209013103(7), ■尿道がズキズキする /20181209001114(6), ■カップヌードルに水を入れてしまった時の絶望感 /20181208175842(6), ■母はどうにも察しが悪い /20181209120616(5), ■プログラミングの勉強ってどうやんの /20181209183335(5), ■漫画が原作だけどアニメの方が面白い作品 /20181209000244(5), ■婦人系の病気をどこまで男性上司に伝えるべきか /20181209002118(5), ■窃盗症と自由意志に関する疑問 誰か教えて /20181209233033(4), ■アニメが嫌いなのは声優の演技がうざいから /20181209125120(4), ■石橋容疑者とダイバーシティ /20181208164423(4), ■[勉強] UbuntuでWebサーバー構築を断念 /20181209225349(4), ■欧米人がヒトラーを憎んでいる理由がわからない /20181209013347(4), ■乳首の皮膚がボロボロ取れるんだが /20181209234607(4), ■作品のタイトルの付け方が分からん /20181209012700(4), ■Wi-Fiはタダで使えると思っている奴多すぎ問題 /20181206214612(4), ■ズブズブの関係 /20181209215113(4), ■もうすぐ大学受験を控えてるんだけど /20181209192410(4), ■やりたいことが出てこない /20181209001258(4), ■犬猫は飯食っただけで褒められる /20181208203002(4)
5863519(3931)
httpd.confが初期設定に戻ってた
localhostをhttps化してたのだが、OSを入れ直したらオレオレSSLの設定をし直さなきゃいけない
ブラウザで動作確認するときはスーパーリロードをしないと、サーバーエラーの表示がキャッシュから表示されて、余計に混乱する
11.0を使ってたのだが、12.0にアップデートしたら、キーボードの認識で右シフトの一つ左キーのところで、先に進まなくなる
認識のウィンドウを閉じると、キーボードが英語キーボードと認識されてしまう
これが原因かcomplex_modification.jsonの読み込みでエラーが出る
よく使う項目の順序がリセットされてて面倒