
はてなキーワード:configとは
いいえ、関数の引数が多すぎる(「Too Many Arguments」)問題の解決策としてConfigクラス(またはパラメーターオブジェクト)を使用すること自体は、一般的にアンチパターンとは見なされていません。
関数の引数が多すぎる状態は「コードの臭い(Code Smell)」の一つとされており、Configクラスなどの単一のオブジェクトに引数をまとめることは、その問題を軽減するための一般的な解決策です。
| メリット | 説明 |
| 可読性の向上 | 長い引数リストはコードを読みにくくしますが、関連する引数を一つのオブジェクトにまとめることで、関数シグネチャ(定義)が簡潔になり、何を受け取っているのかが明確になります。 |
| 引数の順序間違いの防止 | 位置引数が多いと、呼び出し側で引数の順番を間違えるリスクが高まります。オブジェクトとして渡せば、プロパティ名でアクセスするため、この種のエラーを防げます。 |
| 変更容易性の向上 | 新しい引数が必要になった場合、関数のシグネチャを直接変更する代わりに、Configクラスに新しいプロパティを追加するだけで済みます。これにより、関数の呼び出し元すべてを変更する必要がなくなり、マージの競合も減らせます。 |
| 引数のグループ化・関連付け | 論理的に関連する引数(例:`name`, `lastname`, `city`, `country` → `Address`オブジェクト)をまとめることで、その意図やコンテキストが明確になります。 |
このような引数をまとめるためのオブジェクトは、Data TransferObject (DTO) やParameterObjectとも呼ばれます。
Configクラス自体が問題なのではなく、そのクラスの使用方法や、そもそも引数が多いという事実がより深い設計上の問題を示している場合があります。
引数が多い関数は、しばしば単一責任の原則(Single Responsibility Principle / SRP)に違反している大きなクラス(Large Class)や長いメソッド(Long Method)の兆候であることがあります。
Configクラスを作っても、根本的な問題は解決しない:引数をクラスにまとめただけで、関数やクラスが多くの異なる責任を持ちすぎているという根本的な問題は解決しません。
対処法: この場合、Configクラスを作成する前に、関数が実行している処理をより小さな責任を持つ複数の関数やクラスに分割することを検討すべきです。
Configクラス自体が、もはや数十のフィールドを持つ巨大な「すべてを持つクラス」になってしまっている場合、それは設計上の問題です。
対処法: その巨大なConfigクラスのフィールドを、論理的なサブグループ(例: `DatabaseConfig`, `NetworkConfig`, `LoggingConfig`など)に分割することを検討します。
引数が数個(例: 2~3個)しかない関数に対して、引数をまとめるためだけにConfigクラスを作成すると、不必要なオーバーヘッドと複雑さが増すだけで、メリットが薄い場合があります。
対処法:Configクラスの使用は、引数の数が多すぎて(一般的に5個以上が目安とされることが多い)管理が難しくなった場合に限定するのが賢明です。
結論として、関数の引数が多すぎる問題をConfigクラスで解決するのは、有効な設計パターンです。
ただし、その解決策を適用する前に、「なぜこの関数はこんなに多くの情報が必要なのか?」と自問し、それがより大きな設計上の問題(SRP違反など)の単なる症状ではないかを確認することが、クリーンなコードを書く上で最も重要です。
固定じゃない。最低一度ログアウトして再ログインしたら変わる。configで固定値つかってつっぱねられたから確認済み。
-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250910132433# -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaMD9hgAKCRBwMdsubs4+SF9SAQDR0Uj7bqKI2VmiCoB/WzYfs26+fx0+EnFsgw9durpg1wEAqbMTC6dvCnKGXqMl8PEMwAW3XcJdrtvaIpFa4TjorwY==wMGA-----ENDPGP SIGNATURE-----
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-----
Mozilla Firefoxは、プライバシー保護とユーザーのカスタマイズ性を重視した高機能なウェブブラウザです。独自のレンダリングエンジンを持ち、Google ChromeなどのChromium系ブラウザと差別化されています。特に、拡張機能の安全設計や詳細な設定(about:config)によって細部までユーザーが調整可能な点が評価されています。また、非営利財団が開発しているため、商業的な利益に左右されにくいことも信頼の一因となっています 。
2025年には、Pocketやレビュー評価機能の統合終了といったサービスの整理を行い、リソースをブラウザ本体の開発やAI搭載機能強化に集中させる方針を発表しました。これにより「垂直タブ」や「スマート検索」など新しいユーザー体験の改善が期待されています 。
https://onefile.hatenablog.com/entry/2025/08/06/000600
https://ja.taiwebs.com/windows/download-firefox-quantum-501.html
セキュリティ面でも最新バージョン(139.0.4)で重大な脆弱性を速やかに修正し、高い安全性を維持しています 。利用者からは拡張機能の豊富さと独立性を評価する声が多く、特にプライバシーを重視するユーザーに支持されています 。その一方で、近年はChromeにシェアを奪われているものの、多様なブラウザ環境を守るための重要な存在としての役割も注目されています。
Mozilla Firefoxは、プライバシー保護とユーザーのカスタマイズ性を重視した高機能なウェブブラウザです。独自のレンダリングエンジンを持ち、Google ChromeなどのChromium系ブラウザと差別化されています。特に、拡張機能の安全設計や詳細な設定(about:config)によって細部までユーザーが調整可能な点が評価されています。また、非営利財団が開発しているため、商業的な利益に左右されにくいことも信頼の一因となっています 。
2025年には、Pocketやレビュー評価機能の統合終了といったサービスの整理を行い、リソースをブラウザ本体の開発やAI搭載機能強化に集中させる方針を発表しました。これにより「垂直タブ」や「スマート検索」など新しいユーザー体験の改善が期待されています 。
https://onefile.hatenablog.com/entry/2025/08/06/000600
https://ja.taiwebs.com/windows/download-firefox-quantum-501.html
セキュリティ面でも最新バージョン(139.0.4)で重大な脆弱性を速やかに修正し、高い安全性を維持しています 。利用者からは拡張機能の豊富さと独立性を評価する声が多く、特にプライバシーを重視するユーザーに支持されています 。その一方で、近年はChromeにシェアを奪われているものの、多様なブラウザ環境を守るための重要な存在としての役割も注目されています。
今時点の使えそうな 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という動的な土台との互換性を最優先した」という、その成り立ちそのものにあります。その結果として生じる「不健全さ」「構造的部分型の罠」「漏れのある抽象化」といった問題は、この言語を使い続ける限り、アーキテクトが向き合い続けなければならない、本質的なトレードオフなのです。
VitaにCFWを導入するにあたり、情報が散乱していたのでまとめる
・2022年末に革新的進歩があり、VITA単体でCFW導入できるようになった(通称 HENlo)
・にも関わらず古いCFW導入方法を案内しているブログが大量にある
・しかもタイトルの"20XX年最新"だけ更新し続けているから、最新記事に見える
↓
PC使用が前提になっているブログは全部古いので無視した方が良いです。
・『HENlo』について触れている
この2つが押さえられてれば最新情報です。(2025年5月現在)
ただし、現状だと実は『PC操作が一部必要』という罠があります。
その問題について書いている記事が見当たらないので、ここに残しておきます。
超具体的には
「HENkaku、VitaDeploy、VitaShellは導入できた」
「けどEnso導入ができない/つまづいている」 エラー:failed togetfwversion please disableallthe plugins andtryagain
5chでもRedditでも
『プラグインを無効にしろ』『0syscall6を無効にしろ』って書いてあったのですが、実はEnsoのバージョン変えれば解決します。(後述)
この記事が役に立ちました
[Vita]2023年最新手順【HENlo】3.65-3.74PC不要でCFW(HENkaku)導入
https://re-doing.com/vita-henlo-hack/
(一応魚拓:https://web.archive.org/web/20250226111105/https://re-doing.com/vita-henlo-hack/)
・HENkaku (カスタムファームウェア 3.65 変革 -2)
・VitaDeploy
・VitaShell
・最悪文鎮化する可能性があるのでセーブデータバックアップを取ったほうが良い
・VITAのセーブデータは特殊で、PCと繋ぐだけでは取り出せない
・バックアップにはいくつか方法があるが、PCのコンテンツ管理アシスタントは既に使えないと思ったほうが良い。PS Plusのクラウドバックアップが最も良いはず
・記事の内容を実施する前にバックアップ取るのを強くおすすめする
これをインストールすることで、電源を切ってからもCFW状態を維持できます。
VitaDeploy内のApp downloaderメニューからEnsoをインストールできますが、実はこのバージョンが古いです。※重要※
そのためVitaDeployからインストールすると先程のエラー(failed togetfwversion please disableallthe plugins andtryagain)が必ず出ます。
「PC不要になった」と書いてあったので盲点ですが、ここからPC必要です。
正しい方法は以下です
1,PC操作:GithubからEnso最新版のenso.vpkファイルをダウンロード(現在v1.1)
https://github.com/TheOfficialFloW/enso/releases
2,PCとVitaをUSBケーブルで繋げる ※データ転送対応ケーブルを使うこと。相性もある
5,PC操作:USBドライブとしてVITAのデータが表示されるので、ダウンロードしていたenso.vpkファイルを置く(フォルダはどこでもOK。自分はルート直下に置きました)
7,Vita操作:VitaShellでenso.vpkを見つける(さっきルートに置いたなら恐らくux0:にある)
9.Vita操作:Doyou want toinstall this package? → ◯ボタン
10.Vita操作:~~~ Wouldyoulike tocontinue theinstall? ※意訳:「失敗したら文鎮化するけど自己責任だけど続ける?」 → ◯ボタン
11. 進行バーが消えたらインストール完了 ホーム画面に戻ってOK
Ensoはファームウェアが3.60か3.65じゃないとインストールできないです。(3.65 変革 -2は3.65扱い)
先程の記事の通り進めていたら3.65 変革 -2 になっているはずですが、実行前に再確認して下さい。
1, ~~~ PressCIRCLE toaccept these terms orany otherkey to notaccept. → ◯ボタンを押す(=CIRCLE )
2, Options:
CROSS Install /reinstall thehack.
SQUARE Fix bootconfiguration (choose this if taiHEN isn't loadingon boot).
CIRCLE Exit without doinganything.
Locking sustem ..
(中略)
Theinstallationwas completed successfully.
suocess.
MBRwas detected butinstllation checksum dose notmatch.
Adumpwas createdat ux0:data/blocks.bin.
Press X tocontinue,any othekey toexit.
意訳:「ちょい待った。思ってた構成じゃないから危ないかもしれんわ。続ける?」
→✕ボタンを押す ※結局原因分かってないので自己責任でお願いします※
4,Locking sustem ..
(中略)
Theinstallationwas completed successfully.
suocess.
Enso導入が成功していると
・ファームウェアが3.65 変革 -2のままなっている
お疲れ様でした。
記事の本題は以上です。
VITAのセーブデータは暗号化されており、吸い出せてもエミュレータで使えないらしい。本体機体とセットで揃わないと使えない仕様。
調べたらセーブデータをここまでキツく縛ってるハードは他にない
だからメモリーカードのデータ管理でもPSPのセーブデータしか項目がなかったのか…
不便すぎる
当時の仮説
・HENkaku設定が悪さをしているのではないか(PSNの偽装を有効化、バージョンの偽装を有効化) →オフにしたが関係なかった
・本体にSD2VITAを刺しているのが良くないのではないか →抜いたが関係なかった
・enso.vpkの置き場所がルート(ux0:)が良くなかったのではないか →関係なかった
・VITAにメモリーカードを刺しているのが良くないのではないか →関係なかったが、データ保護的には抜くのが良さそう
・ゴミデータが残っていて悪さしているのではないか(手順を間違えたデータや古いデータなど) →関係ある可能性はある。最後までわからず
・Ensoのバージョンが古いのではないか →これが主要因だった
ゴミデータを疑った自分は正規のファームウェアに戻して、CFW化をやり直したりもした。
その際HENkakuすら入れられなくなってしまったので、抜け方を書いておく。
ENSO実行
↓
~~~ PressCIRCLE toaccept these terms orany otherkey to notaccept. → ◯ボタンを押す(=CIRCLE )
↓
Options:
CROSS Install /reinstall thehack.
SQUARE Fix bootconfiguration (choose this if taiHEN isn't loadingon boot).
CIRCLE Exit without doinganything.
→ △ボタンを押す(=TRIANGLE Uninstall thehack.)
↓
↓
↓
ファームウェアアップデートが促され、アップデートしないとメモリースティックが使えない
↓
↓
↓
HENloメニュー
・Exit
↓
「Eiting in 3」 の後に、以下のエラーメッセージがでて固まってしまう
Ifyou are stuckon thisscreen, hold downthe power button untilyourVita turns off, then turnit backon.
原因:恐らく余計なデータと衝突を起こしてる
(さっきのエラーメッセージ画面で)
↓
セーフモードが起動する
↓
↓
↓
HENloメニュー
・Exit
↓
その後
Install HENkaku、InstallVitaDeployを選択して、Exitを選択
この記事を書き終えた後に見つけたのですが、以下の記事の『改造方法』というところに情報がかなりまとまっています
Vita バージョンが低くてもPSNにサインイン&PSストアにアクセス(エラーNW-8942-3回避)&機器認証する方法(2025最新)
https://yyoossk.blogspot.com/2024/10/vitapsnps2024.html
今回VITAのセーブデータバックアップが主目的だったから、徒労でしかなかった
指摘、補足、最新情報あれば反応もらえるとありがたいです
サイドバーにChatGPTのようなAIサービスが出せるようになった(自分の環境では最近)。
テキストを選択してコピーしてChatGPTを開いてペーストする手間が省けるから場合によっては便利になるかもしれない。
だがクイズを出すとか言われてもそんなのはいらんという人の方が多いだろう。
`about:config` に行って `browser.ml.chat.prompts.5` (すでに.5があれば数字を増やす)に `{"id":"toJapanese", "label": "翻訳", "value": "日本語に翻訳してください"}` を設定する。
すると選択した時や右クリックのメニューに「翻訳」が追加され、実行すると選択した部分をAIで翻訳できる。
便利なので試してみてほしい。
参考:
https://docs.openwebui.com/tutorials/integrations/firefox-sidebar/#browsermlchatprompts
GIFアニメで、おばさんがユラユラゆれ続けてたり、黒い背景に足がバタバタとせわしなく動きつづけたりと、
IPアドレスを変えたり、ブラウザのCookieや履歴を全消去してもしつこく出てくる。
気が狂いそうになる。
ふと、GIFアニメをアニメーションしない設定はないだろうかと調べたらFirefoxにはそれがあった。
about:configでimage. animation_modeをnoneにすればよい。
下品な画像は消えないが、それが常に動き続ける状況は解消できたのでかなりマシになった。
なんでAndroid限定かって言うとiOSでは280blockerで既に全て消えてるはずだから
「Twitterがモザイクかけたエロ動画を『広告』として流してきてキモすぎる」という声が多く見られたから書く
旧来の広告システム悪用してゾンビがねじ込んできてるのは消えないから手で報告とブロックしろ
1. 「設定」アプリを開く
このリストの中に「正解」が紛れてるからどれが効くかはトラバで聞け
俺は知らん
https://adguard-dns.io/kb/ja/general/dns-providers/から抽出した
なおこのままだと思想が曲がったDNSははてなやNHKなど無害なサイトまでブロックしていて実用性が無い場合があるためブラウザだけDoHを使う
1.chrome://geckoview/content/config.xhtml を開く
2. 🔎にnetwork.trr.modeと打ち込む
3.network.trr.mode を 半角で「2」か「3」に設定する
『社外へ対策してますアピールで求人打っただけ。既に内々で解決済み』とかなら、基本的なことするだけだし、相場では?ってなるが、
万が一にも新しく来る人に解決して貰おうって思ってるなら、もっとも必要な能力が『政治力』だからな。その上で自分で手が動かせる人
例えば、読むセンスがあって仕入れた商品は全てバカ売れし、抜群の接客力があって多くのファンを獲得、その人目当てに来店する客も多い
体力があり、シフトの穴を埋めるだけでなく、そもそもそうならないよう業務とチームを設計
さらに、政治力にも長け、取引先との良好な関係を築き、有名な企業傘下に入っても、店の個性を活かしながら、企業文化の壁を越え、
企業全体にプラスとなる改革を進められる・・・そんな人材を300万円で雇おうとしたら、トンデモない話だと思うんですよね
別にITに限った話じゃないのよ。あと、通常、このクラスは店員じゃなくて『店長』だよ
何で生徒の個人情報が電子保存されてるんだろう
ニコ生配信者「本名バレた」 N高生「闇バイトの標的に…」 KADOKAWAサイバー被害深刻
https://news.tv-asahi.co.jp/news_society/articles/900005126.html?page2
紙にボールペンで書いて金庫に入れ警備員で守ってればデータ朗詠は起きなかったのでは
↓
単純に、アクセス権を適切に設定していない、端末制御を適切にしていない、セキュリティ監査してない上に、
デスクトップにどんなファイルが置かれているかチェックもしてなくて、DLPの概念ないだけよね
これどこの会社でも当たり前にやってることだからね。それお金あっても出来ないの、社内政治以外に原因は無いからね
このどうしようもない問題を解決するために人を採る場合、最も優先すべきは政治力で、その次に技術力
整っていない環境に技術力の高い人を採用しても、社内政治の壁に阻まれて成果が出せない可能性の方が極めて高い
だからと言って、政治だけが得意な人を選ぶと、さらに混乱を招くだけだ
なので、ちゃんと自分で手を動かせる(プログラム・configを書く、設計などの実務ができる)ことは重要
それから、チームメンバーやベンダーが変なことを言った時に、「それはXXだと思うから確認してみて」や「それ○○で実現できますよね」と言える程度の知識や技術力は必要
あと、技術に対して変な見栄を持たないことが超超超超超超超超超超重要
困った人、チームメンバー、ベンダーが変なことを言った場合に、軌道修正できる知識や技術力は必要だけど、
それと同時に「今は政治とマネジメントをやっているから最新技術を追えていない」という自覚も必要なのよ
以下のような行動は避けるべき
単純に、アクセス権を適切に設定していない、端末制御を適切にしていない、セキュリティ監査してない上に、
デスクトップにどんなファイルが置かれているかチェックもしてなくて、DLPの概念ないだけよね
これどこの会社でも当たり前にやってることだからね。それお金あっても出来ないの、社内政治以外に原因は無いからね
このどうしようもない問題を解決するために人を採る場合、最も優先すべきは政治力で、その次に技術力
整っていない環境に技術力の高い人を採用しても、社内政治の壁に阻まれて成果が出せない可能性の方が極めて高い
だからと言って、政治だけが得意な人を選ぶと、さらに混乱を招くだけだ
なので、ちゃんと自分で手を動かせる(プログラム・configを書く、設計などの実務ができる)ことは重要
それから、チームメンバーやベンダーが変なことを言った時に、「それはXXだと思うから確認してみて」や「それ○○で実現できますよね」と言える程度の知識や技術力は必要
あと、技術に対して変な見栄を持たないことが超超超超超超超超超超重要
困った人、チームメンバー、ベンダーが変なことを言った場合に、軌道修正できる知識や技術力は必要だけど、
それと同時に「今は政治とマネジメントをやっているから最新技術を追えていない」という自覚も必要なのよ
以下のような行動は避けるべき
そのためには、はてなIDでログインする仕組みが必要だろうと考えた。なんかそういう仕組みあるらしいし。
と思ったら今はもう無理だった。
参考文献
で、Lineのコンソールでなんやかんややって、キーの情報をどうのこうのしたらできた。
(半年前のやりかけの続きなので詳細を覚えていない。個人でも無料で出来るんだー という驚きがあった)
出来上がったURLをここに書こうか迷ったけど、フィードバックを得られる状態じゃない(本当にログインするだけ)のと、
見えてはいけないconfig.phpが本当にアクセスできない状態なのか確信が出来なかったので一応やめておく。
で、本当はこれと組み合わせたくてLarabelを触り始めたのだけど、自分の環境ではまともに動かすのは無理そうなので途方に暮れている。
そのアプローチは非常に効果的ですね。メイン関数内での処理をシンプルに保つことで、コードの可読性と保守性が向上します。以下にその考え方を反映したサンプルコードを示します。
importjson#ビジネスロジックの関数def business_logic(data): #ビジネスロジックの詳細 pass# 設定情報のロードdef load_config(config_file): withopen(config_file, 'r')as f:config =json.load(f) returnconfigdefmain(): # 設定情報のロードconfig = load_config('config.json') #ビジネスロジックの実行 business_logic(config)if __name__ == "__main__":main()
このコードでは、メイン関数は設定情報をロードし、その情報を元にビジネスロジックを実行するだけです。技術的な詳細は関数内にカプセル化されており、メイン関数はそれらの関数を呼び出すだけです。これにより、コードは自然言語を読むような形で読むことができ、技術的詳細は隠蔽されます。また、各関数の担当者も明確になります。このような設計は、大規模なプロジェクトやチームでの開発に特に有効です。
ワイ:
GPT:
了解しました。以下は指定された条件に基づいて動作するPythonのGUIアプリのコードです。このアプリはtkinterを使用しており、毎秒カウントが増加し、その数値に基づいて画像が切り替わるようになっています。
importtkinterastkfromtkinter import Label, PhotoImagedef update_count(): global count count += 1 count_label.config(text=str(count)) if count % 3 == 0 or count % 5 == 0: face_label.config(image=goofy_face)else: face_label.config(image=serious_face)root.after(1000, update_count)def on_close():root.quit()root.destroy()root =tk.Tk()root.title("Face Display App with Counter")# ふざけた顔と真面目な顔の画像をロードします# 以下の部分は、DALL-Eで生成された画像のパスに置き換える必要がありますgoofy_face = PhotoImage(file="path_to_goofy_face_image.png")serious_face = PhotoImage(file="path_to_serious_face_image.png")count = 0count_label = Label(root,text=str(count), font=("Arial",24))count_label.pack(pady=20)face_label = Label(root,image=serious_face)face_label.pack(pady=20)update_count()root.protocol("WM_DELETE_WINDOW", on_close)root.mainloop()このコードでも、PhotoImageオブジェクトを使用して2つの画像(ふざけた顔と真面目な顔)をロードしています。path_to_goofy_face_image.pngとpath_to_serious_face_image.pngは、DALL-Eで生成された画像の実際のパスに置き換える必要があります。
このアプリは、毎秒カウントを増加させ、そのカウント値に基づいて画像を切り替えます。カウントの数値も表示されます。エスケープキーまたはウィンドウを閉じることでアプリを終了できます。
ワイ:
GPT:
こっちの方がいいな。
ワイ:
真面目な顔の人間の男の人の顔の絵を描いてください。
GPT:
*イメージ省略*
ワイ:
GPT:
*イメージ省略*
ワイ:
その整数が 3 か 5 の倍数の場合、ふざけた顔の男の顔(一枚目の顔)を表示してください。
GPT:
了解しました。以下は、指定された条件に基づいて動作するPythonのGUIアプリのコードです。このアプリは、tkinterを使用しています。まず、必要なライブラリをインストールしてください:
pip installtkinterimporttkinterastkfromtkinter import Entry, Label, PhotoImagedef display_image(): num = entry.get() if num.isdigit(): num = int(num) if num % 3 == 0 or num % 5 == 0: label.config(image=goofy_face) else: label.config(image=serious_face) entry.delete(0,tk.END)def on_close():root.quit()root.destroy()root =tk.Tk()root.title("Face Display App")# ふざけた顔と真面目な顔の画像をロードします# 以下の部分は、DALL-Eで生成された画像のパスに置き換える必要がありますgoofy_face = PhotoImage(file="path_to_goofy_face_image.png")serious_face = PhotoImage(file="path_to_serious_face_image.png")entry = Entry(root)entry.bind('<Return>',lambda event=None: display_image())entry.pack(pady=20)label = Label(root)label.pack(pady=20)root.protocol("WM_DELETE_WINDOW", on_close)root.mainloop()このコードには、2つのPhotoImageオブジェクトがあります。これは、ふざけた顔の画像と真面目な顔の画像をロードするためのものです。path_to_goofy_face_image.pngとpath_to_serious_face_image.pngは、DALL-Eで生成された画像の実際のパスに置き換える必要があります。
このアプリは、ユーザーが整数を入力してReturnキーを押すと、指定された条件に基づいて画像を表示します。エスケープキーまたはウィンドウを閉じることでアプリを終了できます。
ワイ:
GPT:
ネットに公開されている情報は、初心者には難しいと感じました。
Yamahaのサイトにconfigは公開されていますが、exciteMEC光だと、クリアする注釈が多すぎて。
"NVR500 では、tunnel endpointaddressコマンドを使用して、AFTR のIPv6アドレスを指定してください。"
って書いてますが、exciteMEC光はAFTR公開してないぞ!ってなるので。
正解は[gw.transix.jp]のIPv6アドレスを指定する、で
"tunnel endpointaddress2404:8e01::feed:101"です。
以下、全文。
#
# transixのIPv4接続(DS-Lite)でインターネット接続
#
#
#
#
#ゲートウェイの設定
#
ip route defaultgateway tunnel 1
#
#
iplan1address 192.168.100.1/24
#
#
ipv6prefix 1ra-prefix@lan2::/64
ipv6lan1addressra-prefix@lan2::1/64
ipv6lan1 rtadv send 1 o_flag=on
ipv6lan2dhcp serviceclientir=on
ipv6lan2 secure filter in 1010 1011 1012
ipv6lan2 secure filterout 3000 dynamic 100 101 102 103 104 105 118 119
#
#トンネルの設定
#
tunnelselect 1
tunnel endpointaddress2404:8e01::feed:101
tunnelenable 1
#
#フィルターの設定
#
ipv6 filter 1010 pass * * icmp6 * *
ipv6 filter 1011 pass * *tcp * ident
ipv6 filter 1012 pass * *udp * 546
ipv6 filter 3000 pass * * * * *
ipv6 filter dynamic 100 * *ftp
ipv6 filter dynamic 101 * * domain
ipv6 filter dynamic 102 * *www
ipv6 filter dynamic 103 * *smtp
ipv6 filter dynamic 104 * *pop3
#ipv6 filter dynamic 105 * * submission
ipv6 filter dynamic 118 * *tcp
ipv6 filter dynamic 119 * *udp
#
#DHCPの設定
#
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcpscope 1 192.168.100.2-192.168.100.191/24
#
#DNSの設定
#
コンテナータブに依存するから依存する拡張機能が有効ならコンテナータブが強制有効になるのはわかる
でも依存する全部の拡張機能を止めたらコンテナータブが無効になるってわけわからん
んで再度有効化したら設定がデフォルトに戻って手動追加したコンテナーも消えてるの本気で意味わからん
どうして強制上書きするんですか??????????設定にリセットボタンでもつけとけ
あれやこれやのログイン情報全部消えたんですが????????????????????????????
しょうがないから思い出してコンテナー追加したけどこれ並び替えも出来ないのな
前と順番変わっててすこぶる気持ち悪い
Multi-Account Containersの拡張を使ってたらこいつを無効にしたら設定リセットになるのは百歩譲って…いや一時無効にしただけでjsonファイルをデフォルト化って意味不明だけど億歩譲って我慢するわ
でもお前、標準機能だろ?お前を使うかどうかはabout:configで俺が決めさせてくれよ
せめてどこかに注意書き書いとけよ
書いてた?俺が悪かったその場所教えてくれ。光速でブクマするわ。さっさと出せよ。
もしかして俺の勘違いで別の操作が影響してる????謝罪するから原因を教えてくれよ通知もないから妄想で怒るしかねーんだよこっちは
もうマジで意味不明だわ最近Android版でtampermonkey復活したからちょっと株上がったと思ったらこれだよ。多分何年も放置されてる仕様だろこれマジこんなうっかり地雷しこまれると体験損なうんだが
設定消えるなら警告のひとつでもだしてくれ
あとついでにグチるとCookieの許可設定を変更できるようにしてくれ
なんで一度消して同じURLを再登録しないと変更できないんだよ
リソース少ないにしても一体何に費やしてるのかまったくわからんわ
CoreKeeper側でapt に依存しているっぽいので、Ubuntu でやった方が楽だと思います。
Ubuntu20TLS でやる場合、/home/steam/Steam/ が /home/steam/.steam/ になってたと思うので、環境に合わせて読み替えてください。
dpkg--add-architecturei386add-apt-repository multiverseapt-get updateapt-get dist-upgradereboot
useradd-msteampasswdsteamgpasswd-asteamsudo
sudo-usteam-scdsudoapt installsteamcmdln-s /usr/games/steamcmdsteamcmd./steamcmd+loginanonymous+app_update1007+app_update1963720+quit
cd ~/Steam/steamapps/common/Core\Keeper\ Dedicated\ Server/./_launch.sh
Press Ctrl + C for StopCoreKeeper Dedicated Server
mkmir-p-m775 /home/steam/.config/unity3d/Pugstorm/Core\Keeper/DedicatedServer/worldschownsteam:steam /home/steam/.config/unity3d/Pugstorm/Core\Keeper/DedicatedServer/worlds
Copy old world file (0.world.gzip) to
/home/steam/.config/unity3d/Pugstorm/Core\Keeper/DedicatedServer/worlds
Copy old setting file (*.json) to
/home/steam/.config/unity3d/Pugstorm/Core\Keeper/DedicatedServer/
chmod664 /home/steam/.config/unity3d/Pugstorm/Core\Keeper/DedicatedServer/worlds/0.world.gzipchmod664 /home/steam/.config/unity3d/Pugstorm/Core\Keeper/DedicatedServer/*.json
vi /etc/cron.hourly/corekeeper_backup#!/bin/bashcp-a /home/steam/.config/unity3d/Pugstorm/Core\Keeper/DedicatedServer/worlds/0.world.gzip /home/steam/worldbackup/0.world.gzip.`date'+%Y%m%d%H%M%S'`cp-a /home/steam/Steam/steamapps/common/Core\Keeper\ Dedicated\ Server/CoreKeeperServerLog.txt /home/steam/worldbackup/CoreKeeperServerLog.txt.`date'+%Y%m%d%H%M%S'`chmod777 /etc/cron.hourly/corekeeper_backupsudo-usteam-scdmkdir worldbackup
sudo-usteam-scd ~/Steam/steamapps/common/Core\Keeper\ Dedicated\ Server/nohup ./_launch.shtail-f ~/Steam/steamapps/common/Core\Keeper\ Dedicated\ Server/CoreKeeperServerLog.txt
利用者の問題か、サーバーの問題かわかりませんが人数が10人超えるとCPU4コア/メモリ4G/100Mbps で結構ラグかったです。
今はCPU6コア/メモリ8G/1000Mbps で動かしています。
6-8人以上で2-3時間サーバー動かしてると、Unityのライブラリがsegfault起こして、CoreKeeper Dedicated Server が落ちます。
ログ取れたのでバグレポしましたが、改善するまでは不特定多数が好き勝手するサーバーみたいなのを長期運用するのは厳しいかなと思います。タイミングによってはアイテムロストしてしまうので。
https://news.ycombinator.com/item?id=29918052
https://bugzilla.mozilla.org/show_bug.cgi?id=1749908
about:config でnetwork.http.http3.enabled を検索し値をfalse にする
不思議なのは、ycで報告されたのが96がリリースされて十数時間経過した39分前で
追記:
CloudflareでJST17時に行われたデフォルト設定の変更が原因でFirefoxに以前から存在したHTTP3のバグが誘発されたらしい
なので、それまでは動いていたそうな
dAのgallery内の画像の一括保存にはgallery-dlだけじゃ使いものにならなくて自分側でAPIを作っとく必要があった。
製作者が公開いてるconfigの中身をコピペしてプログラムと同じ場所にコピペしたconfigを作成。
APIを作ったらconfigでnullとなってるところに交付されてるidとsecretを""で括って書き換える。コロンと"の間には半角空白が必須。
コマンドラインでspliteなんとかをリフレッシュしたら別のコマンドでieかエッジが開く。
エッジならそのまま画面の指示に従ってdAにログインして、白い画面に英文でなんか書いてある画面に遷移したら終了。
これで遅延しづらくなりなんとか使えるようにはなる。