「拡張子」を含む日記 RSS

はてなキーワード: 拡張子とは

2024-03-08

anond:20240308180050

社内SEがまともにお仕事している会社特定拡張子ダウンロードや実行は禁止(出来ない)だぞ

あと表示はデフォルト拡張子表示で固定

anond:20240308175110

拡張子ってなんですか?

 

こう返されるのがオチだと思うよ。

技術よりのIT企業でもない限り、拡張子表示してる人間の方が少数派。

ファイル名」は拡張子を含むか

ファイル名を教えて」と言われたら、一般的

拡張子までを答えるかどうか

仕事ちょっと疑問に思ったか

教えて、みんな

2024-01-04

子供って生まれたら拡張子何つけたら良いの?

正しい拡張子つけてあげないとバグっちゃってかわいそうだから今のうちに予習しときたい

2023-09-12

同僚のファイル名が気になる

共有フォルダに入っているファイル名を眺めてたら「○○.xlsb.xlsx」となっていて、ただの疑問として「この.xlsbいります?」と聞いてみた。

「なんでついてるか分かんないんだよね。たぶんいらないと思うんだけど」と言われたが、それからいくらたっても.xlsbは消えていない。

こういうのめっちゃ気持ち悪いと思ってしまうんだけど自分自身なんでそう思うのか分からない。

 

・「.xlsb」自体久しぶりに見たし特別理由がないなら使わない方が良い拡張子だと思う

そもそも拡張子にさえなってない(名前のところに拡張子っぽい文字列が入っている)のは気持ち悪い

・たぶんいらないと思うなら消せ

 

思うところ挙げてみても結局は「気持ちいから消してほしい」に収束するんだよなあ。この感情名前を付けたい。

2023-08-02

Windows11(22H2)の格安PC買ってやったこ

何か月か前に話題になっていたIntel N100の中華ミニPCにひかれて、5年以上ぶりに自宅の端末を入れ替えた。Intel N100+メモリ16GB+SSD256GB程+Win11pro付きでお値段2万円強という、信じがたいコスパ

必ずしも優れているとは言えないスペックでWin11を快適に使うために、買ってから最小限やった設定を書いておく。

・前提
端末OSには粛々とHWの管理だけをしてもらい、「こんな素敵な&便利なWeb機能もあるよ!」的な導線はいらない。
TeamsもOutlook職場で嫌ってほど使っているが、自宅では金輪際使う予定なし。タスクバーウィジェットBingへの導線も全部要らない!という人向け。

※本当はhttps://anond.hatelabo.jp/20191116220232さんのWindows11版の記事が出てればそれで事足りたのだけど、見つけられなかったので投下してる

OSクリーンインストール

あんま気にしたくはないが、何が入ってるかわからんので一応OSクリーンインストールし直す。

エクスプローラ量化

ファイル名を指定して実行→SYSTEMPROPERTIESPERFORMANCE

 パフォーマンスを優先する→On

 スクリーン フォントの縁を滑らかにする→Onに戻す

# 初期画面を「PC」へ

cmd /c reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v LaunchTo /t REG_DWORD /d 1 /f

# 最近使用したファイルの表示Off

cmd /c reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer /v ShowRecent /t REG_DWORD /d 0 /f

# 最近使用したフォルダの表示Off

cmd /c reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer /v ShowFrequent /t REG_DWORD /d 0 /f

# Office.comのファイルの表示Off

cmd /c reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer /v ShowCloudFilesInQuickAccess /t REG_DWORD /d 0 /f

# フォルダデスクトップの項目説明ポップアップOff

cmd /c reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v ShowInfoTip /t REG_DWORD /d 0 /f

# フォルダヒントのサイズ情報Off

cmd /c reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v FolderContentsInfoTip /t REG_DWORD /d 0 /f

# 空のドライブは表示しないOff

cmd /c reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v HideDrivesWithNoMedia /t REG_DWORD /d 1 /f

# 同期プロバイダー通知Off

cmd /c reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v ShowSyncProviderNotifications /t REG_DWORD /d 0 /f

ここら辺はhttps://anond.hatelabo.jp/20191116220232さんとほぼ変わらんので説明略。ここまでだけでも必要十二分には軽量化出来ている。

Windows11独特の癖のある表示をWindows10の表示に寄せる

# コンパクトビューON エクスプローラの初期値の行間がなぜかWin10より広げられているので、戻す。

cmd /c reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v UseCompactMode /t REG_DWORD /d 1 /f

# 右クリックメニューをWin10以前に戻す ※初期状態ではWin10に比べ機能が大幅に絞られており、Windowsに慣れている人ほど使いづらい。ので、戻す。

cmd /c reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /ve /f

# スクロールバーの幅を広げる エクスプローラスクロールバーまで細くなってしまった。おっさんの目にはきついので、太くする。

cmd /c reg add "HKCU\Control Panel\Desktop\WindowMetrics" /v ScrollWidth /t REG_SZ /d -330 /f

使用機能非表示無効化

# タスクバーウィジェット非表示

cmd /c reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v TaskbarDa /t REG_DWORD /d 0 /f

# タスクバーチャット非表示 ※自宅でまでteamsとか使いたくない

cmd /c reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v TaskbarMn /t REG_DWORD /d 0 /f

# タスクバーWeb検索無効化 ※Webへの導線を切れば比較的使いやす検索インターフェースになった

cmd /c reg add HKCU\Software\Policies\Microsoft\Windows\Explorer /v DisableSearchBoxSuggestions /t REG_DWORD /d 1 /f

# クラウドコンテンツ無効化 ※NetflixとかAmazonとかあそこら辺のやつ

cmd /c reg add HKCU\Software\Policies\Microsoft\Windows\CloudContent /v DisableWindowsConsumerFeatures /d 1 /f

# ストアアプリ自動更新(自動インストール)Off

cmd /c reg add HKCU\Software\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate /v AutoDownload /t REG_DWORD /d 2 /f

定番の表示設定だが、拡張子なくても気にならん人とかに不要

# エクスプローラ拡張子表示

cmd /c reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v HideFileExt /t REG_DWORD /d 0 /f

# エクスプローラ:隠しファイル表示

cmd /c reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v Hidden /t REG_DWORD /d 1 /f

# エクスプローラ暗号化圧縮NTFSファイルカラー表示

cmd /c reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v ShowCompColor /t REG_DWORD /d 1 /f

目が弱ってきたおっさん向け

設定 - アクセシビリティ - テキストサイズ

 サイズ→気が済むまで拡大

ファイル名を指定して実行→control mouse

 ポインター - デザインWindows標準(大きいフォント)(システム設定)

所感

きりがないのでここらへんでおしまい。実際もっともっとたくさんいじってるけど、汎用性がないのでカットしてる。

久しぶりに端末チューニング情報ググりながら酒飲んで週末過ごせたので、とても楽しかった。

2023-06-28

OneDriveの同期拡張子制限設定

https://forest.watch.impress.co.jp/docs/news/1511166.html

追加されたのか。というか無かったのか。

デフォルトpstファイルは除外にしてくれないか

もしくはoutlook側がドキュメント配下に置くのをやめてくれないか

2023-06-10

Excelブック(.xlsx)のシートの保護は、シート保護パスワードを知らなくても解除できる。

拡張子.zipに変更してzip展開する。

②中にあるsheet1.xmlなどのsheetProtectionタグを削除する。

zip圧縮して拡張子を.xlsxに戻す。

2023-05-15

AIといえばイラストレーター拡張子が.ai

昔は飯島.aiとか付けたりして遊んでたけどもうそんな過去もないですね

anond:20230515105235

絶対偽装できないAI絵の証みたいなのがあればいいんだけどね

特定ソフトにかけると「AI識別番号○○」みたいなデータがあるとか

AI絵だけ特定拡張子になるとか

AI絵のトレスまでは防げないけど)

2023-05-06

公文書管理システムの大量ファイル消失事故について予想してみる

10年くらい前まで地方市役所情シスに居た

辞めたので最近公文書管理システム事情は知らないけど、適当に予想してみる

公文書管理システムって名前御大層だけど、うちの市では書庫の棚管理台帳+例規集でしかなく、運用も雑だった。

年度切り替えが終わる6月頃、前年度文書段ボールに詰める。

そこに貼るラベル公文書管理システムから打ち出す。

出勤簿とか、起案書とか、自課で予め倉庫に入れる文書カテゴリリスト化して保存年限も指定しておく。

カテゴリ分けはかなり大雑把。

公文書管理システムからは空き棚の位置、通し番号が発行されるので指定された書庫の棚に段ボールを置いてくる。

公文書管理システムから今年破棄する段ボールを出力して、書庫から出して、幌つき軽トラ公用車に積んで、ゴミ処理場へ持って行き焼却炉にダイレクトシュート

公文書管理システム上で該当段ボールに破棄実行処理をする。

それだけ。

例規の方は市長決済や地方議会決議通さなきゃ更新されないものだし、どこにでもローカルバックアップあって復元も容易だろうから割愛する。

UI10年前なのにWindows95で作ったような化石だった。

管轄は総務課文書管理係で、はっきり言って定型業務しか」できない人の島流し部署だった。

情シスIT契約の一括窓口として毎年保守契約担当するけど

毎年「いつもの」で済ませて、仕様書なんて10年以上誰も確認してなかったんじゃないかな?

Excelや、下手すりゃLotus設計されたものを、WindowsExcelバージョンアップごとに

「同様に動作して業務を滞りなく継続できるように」って付記だけした契約を秘伝のタレのように使い続けていてもおかしくない。

どこの役所も似たようなものだと思うんだよね。

箱詰めなんてどこの部署新人嘱託職員でやって、上司確認決済もめくら判。

実務上必要な過年度文書は課内共有フォルダ管理していて

当然そちらはバックアップ完璧

過去文書原本なんてものは重大クレーム訴訟沙汰レベルじゃないと引っ張り出さない。

厳密にアーカイブする労力より、何かあったら該当年度の段ボールを箱詰めミスまで疑って全部洗った方が労力的にはマシだから

捨てる年度の混載さえなければ、どれがどの箱に入っていようがはっきり言ってどうでもいい。

ここからは予想だけど

行政DXの一環で庁内の働き方改革を進めるものとして、2022年4月から公文書管理システム運用を開始しており

https://piyolog.hatenadiary.jp/entry/2023/05/06/014208#f-5a93bcab

ってことなので、猫も杓子もDXって中で旧公文書管理システムにも白羽の矢が立ったんじゃないかな?

予算欲しいし。国から補助金とか下りるかもね。

「紙原本を引っ張り出す想定なんてけしからん、ディーエックスディーエックス……」って調子で。

とは言え、行政継続から言って押印した原本スキャンした所で完全破棄なんてできないし

実務で必要な過年度文書は共有フォルダ管理してるし、役に立つ局面はそうそうないから雑に仕様変更したんじゃない?

Lotusの頃から変わってないような仕様書にチョチョイと「ファイル添付できるようにして」とだけ。

今まで管理していたファイルは棚管理台帳とレガシーフォーマット例規だけのシステムに。

それなら拡張子大文字文字弄ったり、ホワイトリストバックアップ対象を3日だけ管理しているのも納得できる。

下手すりゃ10年に1度しか引っ張り出さなもののために、決裁文書の最終版全部システムアップロードするフローが増えるの嫌だなぁとか考えながら。

まぁコツコツ蓄積すりゃ、大量文書開示請求強気対応できるようになるだろうけど。

職員の徒労を脅しに譲歩を引き出そうとする、痛くもない腹探るようなやつね。

マジで対応しなきゃならないガチ文書開示請求だったら結局は最後は紙に印刷したもの目視確認しするし。

一括検索で引っかからなかった関連文書心配だし、紙原本引っ張り出した方が手間ないと思うんだよね。

DX推進してる中で

システム添付ファイル紛失したけど、実は紙台帳から業務改善できてなかったので支障ありません」

とか言えないじゃん。

2023-03-20

anond:20230320042554

イラレ拡張子が.aiなんだけど、その昔は年に一人はiijima.aiってファイル名をつける定番馬鹿がおったな

2023-01-16

Excelのシート保護の解除方法

  1. 拡張子.zipに変更して展開する。
  2. xl\wooksheets\sheet1.xml などのシートに対応したXMLファイルを開く。
  3. sheetProtectionタグを削除する。
  4. ファイル一式をZip圧縮する。
  5. 元の拡張子に戻す。

備考: Microsoftによれば「ワークシート レベル保護は、セキュリティ機能意図したものではありません。 」とのこと。

https://support.microsoft.com/ja-jp/office/excel-%E3%81%AE%E4%BF%9D%E8%AD%B7%E3%81%A8%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3-be0b34db-8cb6-44dd-a673-0b3e3475ac2d

2022-11-30

HTML拡張子は `.html` が良い。

`.htm` は未練がましく小気味悪い。

2022-11-07

腹減ってるなと思ったとき

拡張子」を「餃子」と空目したとき

2022-10-16

NovelAIが重すぎるからローカル環境にNAI環境を構築する(2022年10月16日版)(追記あり)

せっかく課金したのにユーザが増えまくっているのか滅茶苦茶重くなっていて最悪。

から流出したモデルを使ってローカルでNAI環境を構築する。

ネットには情報もだいぶ転がってるけど陳腐化した情報があまりに多いため増田にまとめることにした。

しかたらこ記事もすでに陳腐化しているかもしれないが…単純に間違ってたらトラバで教えてほしい。

もちろん自己責任。この記事を見て導入した結果何かあっても増田は何も保証しない。

英語がわかる人はこっちを見た方が早いと思う。今は導入RTAができるくらい導入は楽になっている。

https://rentry.org/nai-speedrun

推奨環境

VRAMが2GB以上あるNVIDIA製のグラフィックボードがあればローカル環境を構築できる。

GPU世代はGTX700シリーズ以降。なので一昔前のミドル級ボードでも動作するらしい。

IntelオンボードGPUでも実行する方法があるらしい(stable_diffusion.openvino)が今回は割愛する。自分で探してね。

その他の推奨環境は以下の通り。

対応OSWindows7以上(と言うがM1Macでも動作する方法があるとかなんとか)

必要な空きストレージ容量:20GB以上

インメモリ:16GB以上(VRAMもたくさん必要だが起動時にメインメモリも大量に食う。WebUI起動時にタスクマネージャを見ているとよくわかる)

スマホしか持ってないような人やこういうのがよくわからない人はNovelAIを使った方が良いと思う。

今は重いけど、きっとそのうちみんな飽きてサーバも軽くなるかもしれないし。

(追記)NovelAIリソースを確保してサーバが軽くなったかリスクを背負ってまで導入しなくても良いか

手順1:PythonGitを導入する

(追記)Pythonは当然3系。最新の奴を入れれば問題無い。

導入方法はいちいち書かないけど、「python --version」や「git -v」で

正常にバージョン情報が出る(パスがきちんと通っている)ことはちゃん確認しよう。

手順2:Stable Diffusion web UI(AUTOMATIC1111)を導入する

Stable Diffusion web UIはStable Diffusionやそれをベースとした画像生成AIを利用するためのフロントエンド

その中でも特に開発が活発でデファクトスタンダードとなっているのがAUTOMATIC1111版だ。

導入したい適当ディレクトリに対してPowerShellなどで

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

とやってやれば必要ファイルの導入が行われる。

なお、AUTOMATIC1111版は数時間単位コミットが行われるから

定期的に「git pull origin master」で更新しよう。

手順3:BitTorrent流出モデルダウンロードする

クライアントはqBitTorrentが一番楽だと思う。

ここにはさすがにmagnetリンクは書かないか各自ググって欲しい。

結構誤解されがちなことだが流出データ50GBを全部ダウンロードする必要は無い。

必要ファイルはanimefull-final-prunedディレクトリの中身とanimevae.ptから5GBちょっとくらいなんじゃないかな。

もし余裕があるならmoduleディレクトリの中身もダウンロードすればいいけど、ぶっちゃけ必要無いんじゃないか

手順4:ダウンロードした各ファイルリネーム・移動

まずはanimefull-final-prunedの中身のファイルリネーム

model.ckpt」を「animefinal-full-pruned.ckpt」のようなわかりやす名前にして、

「animevae.pt」を例えば「animefinal-full-pruned.vae.pt」のような拡張子以外は同じファイル名にする。

WebUI起動フォルダ配下の\models\Stable-diffusionリネームしたファイルを移動させれば配置はOK

ちなみにmoduleディレクトリの中身は\models\hypernetworksに移動させて使う。

それらのファイルを設定で適用させると画風が結構変わるがNovelAI再現とは関係無いみたいだ。

(追記)moduleディレクトリの中身の.ptファイルはhypernetworksという技術によって画風などを学習したものらしい。

すでに複数イラストレーターの画風を学習したptファイル作成されており議論を呼んでいる。

手順5:webui-user.batの中身に設定を追加する

自分グラボのVRAMが4GB未満の場合は「set COMMANDLINE_ARGS=」の後に

4GB未満の場合は「--medvram」、2GB未満の場合は「--lowvram」とパラメータを追加しておこう。

自分の持ってるグラボのVRAMがわからないときGPU-Zなどで調べよう。

またGTX1600系固有のバグ(単色の画像が出力される)があるらしいので

その場合は「--no-half-vae」もしくは「--no-half」や「--precision full」とパラメータを追加。

ちなみにパラメータに「--xformers」を追加してxformersを導入・使用すると

消費VRAMが減って画像生成処理時間も短縮されるので是非導入しよう。

画像からdanbooruタグAI調査するdeepdanbooruを利用する場合は「--deepdanbooru」を追加。

これらの設定は同時に複数適用させることもできる。例えば

set COMMANDLINE_ARGS=--medvram --xformers --deepdanbooru

のようになる。

手順6:webui-user.bat起動、設定変更

ターミナルPowerShellなどでwebui-user.batを起動しwebUIの初期導入と起動を行う。

過去には手動でCUDA等を導入する必要があったが、現在はこの初期導入でだいたいの導入が行われる。

ずいぶん楽にはなったがその分初期導入の時間結構長い。10分~20分くらいかかるかもしれない。

途中で導入処理がエラーで止まってしまった場合管理者権限で実行するなどして対応して欲しい。

起動ができたらSettingで以下の設定を変更してNovelAIに近づける。

Stop At last layers of CLIP modelを2に、

Eta noise seed deltaを31337にする。

これで設定は完了

おまけ:アスカテスト

設定を合わせて完全にNovelAIと同じ内容になったのかを確認するテストがある。

出力結果から海外じゃHallo Asuka Testなんて呼ばれている。

これは初期SEEDをはじめとする設定内容が完全に一致していれば同じ出力結果を得られる仕組みを利用している。

プロンプトの内容:masterpiece, best quality, masterpiece, asuka langley sitting cross legged on a chair

ネガティブプロンプトの内容:lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts,signature, watermark, username, blurry, artist name

サンプリングステップ数:28

サンプリング形式:Euler

CFG Scale(プロンプトの強度):12

初期Seed2870305590

この内容で見事下の画像と全く同じ画像が出力されれば合格だ。

https://i.imgur.com/Bfl5qJB.jpg

なお、このテストはAUTOMATIC1111のバージョンやxformersの適用状態によっては微妙に違う画像が出力されることがあるらしい。

xformersを適用させている増田環境だと確かに二つ並べると間違い探しレベルの違いがあった。

正直このテストクリアしなくても十分だと個人的には思う。

おまけ2:その他便利になる設定や拡張機能

「Booru tag autocompletion for A1111」を導入すればNovelAIのように自動danbooruタグを保管してくれる。

注意

画像生成AIモデルはStable DiffusionOSSのため派生結構多い。

自前で追加学習もできるため自前で学習した追加AIモデル4chanのような掲示板などで共有する人もいるらしい。

しかしそのようなモデルの中にウィルスのような悪意のある動作を行うものもあるらしい。

FBIペドフィリア一網打尽にするためにIPアドレスなどの個人情報を抜き出す動作を行うロリ特化AIモデル掲示板で配布していて

しかもそれには本物の児童ポルノ教師データとして使われている…などという都市伝説的な話が今界隈を賑わせている。

それが本当の話かどうかはわからないが、とにかく変なところからモデルダウンロードするのは危険なのでやめよう。

自己矛盾溢れる注意喚起かもしれないが…

2022-10-08

結局、NovelAIの独自技術ってなんだったんだ?

NovelAIのgithubからリークした。

掲示板などを読んでみると、単純にStable Diffusionアニメ絵学習させただけではなさそうだった。

アニメ画像学習させた.ckpt(GB単位)と、付属データらしい.vae.pt(数百MB)と、更にhypernetworkという新しい単語が出てきて、.ptファイルというのもあるらしい。

.pt既存のTextual inversionでも使われている拡張子なのだが同じだろうか。


hypernetworkを読み込ませないと、崩れたアニメ絵が出てくるようだ。

NovelAI側のヘルプを見ると、プロンプトの最初に『masterpiece, best quality,』をつけるとクオリティが上がるらしく、拡張する時に追加しているキーワードなのかもしれない。


で、結局NovelAIはどうやって実現しているのか。

拡散モデル研究している人も知りたいというツイートをみたので論文にない独自方法なのか?

vae.ptというファイルからの推測だとVAE学習させてるのかな?


追記

どうやらhypernetworksという技術を追加で使っているらしい。

AUTOMATIC 1111にhypernetworksに関する実装が追加されている。現在gitブランチでhypernetworksトレーニングコード実装開始されている。

掲示板などを見ていくと、prompt最初に{masterpiece}を最初につけないと、いわゆるNovelAIっぽいアニメ絵にならないらしい。

{masterpiece}をつけない場合キャラ名は認識しているっぽいが、WaifuDiffusionっぽい崩れた画像が出てくるようだ。(アニメ画像学習した.ckptだけで動作し、.vae.ptは動いてない?hypernetworksが効いてない?)

キャラ名については、同一名で作品が違うという場合があるので、おそらく学習時に別の単語に置き換えていると想像する。(NovelAIでキャラ名を入れた際に候補が出るが、変換しているはず)


他にpromptトークン数をNovelAIは拡張している。

StableDiffusionの75トークンは、512x512の画像との対応付けから来ているというのが、付け焼き刃の知識での理解なのだが、どう対応付けしているのか。

最初に{masterpiece}があった場合フラグONにして、CLIPに渡すときは{masterpiece}を除外ってのは想像できるが、それでもトークンが余る。


Waifu Diffusion V1.3がリリースされ、学習する枚数を増やしたが、掲示板などに貼り付けてあるものを見る限り、まだ手は改善されてない。

最終リリース前(epoch5,6?)のものとの比較した画像も流れているが、見ても違いはわからない。

Stable DiffusionがDiffusion modelで精度が高い先端モデルとされているが、単純に学習枚数だけ増やしても手は描けない、ということではないだろうか。

追記

NovelAIが解説記事をあげていた。

https://blog.novelai.net/novelai-improvements-on-stable-diffusion-e10d38db82ac

2022-08-24

anond:20220824104307

拡張子そのままだとGoogle勝手解凍して

「あっこの種のファイル送信セキュリティのため禁止しまーす。ウイルス証拠?知らん念のためだよ」

つってブロックしてくるが、拡張子変更しとけば防げる

という意味での有用性はある

2022-08-01

anond:20220731183342

自動安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋) 

/**************************************

以下のCSV_DIR, FILE_PATHS, SETTINGSを書き換えてね。 <h3>o- *************************************/</h3>

//CSVファイルが置かれてるディレクトリパス投稿前にエラー出たら大体ここの設定ミス。 例:"C:\\Users\\sakuraimasahiro\\Documents\\iMacros\\Macros\\rentou\\";

const CSV_DIR =

'C:\\Users\\USER\\Desktop\\iMacros\\Macros\\rentou\\';

//ファイルパスCSV絶対パスで、拡張子必要。iimは相対パスでよく、拡張子不要

const FILE_PATHS = {

//投稿文が書かれたCSVファイル

textCsv: CSV_DIR + 'textNoAnker.csv',

//レス投稿文が書かれたCSV。通常とレス用で分けないなら同じファイルを使えばいい。

replyTextCsv: CSV_DIR + 'textReply.csv',

};

const SETTINGS = {

//投稿後の基本待ち時間

baseWaitTime: 5,

//baseWaitTime+0~waitTimeRange(ランダム)だけ待つ

waitTimeRange: 5,

//連投しすぎだと忠告された場合に処理を一時停止させる時間(秒)

waitTimeForAvoidingPunishment: 60 * 30,

//メール

mail: 'sage',

//名前設定

nameSettings: {

//名前名無しなら''。

name: '',

//以下、偽装ワッチョイ設定。浪人ワッチョイを非表示にしてるときだけtrueにしてね。

//妙なニックネーム(ワッチョイ、アウアウウーなど)をランダムで決めて付加するかどうか。true=付加する。false=付加しない。

nickname: false,

//妙なニックネームの後に付く8桁の文字列ランダムで決めて付加するかどうか。

korokoro: false,

//IPランダムで決めて付加するかどうか。

ip: false,

//地域ランダムで決めて付加するかどうか。

area: false,

},

postSettings: {

//アンカー無し投稿をするならtrue。しないならfalse。noAnkerPostかreplyPostのどちらかはtrueにすること(両方trueでもOK)。

noAnkerPost: false,

//アンカー付き投稿(返信)をするならtrue。しないならfalse。もしnoAnkerPostとreplyPostの両方がtrue場合投稿は返信が優先され、返信対象が見つからなくなったらアンカー無し投稿をする。

replyPost: true,

//最初に取得するアンカー無し投稿CSVファイルの行番号。もし返信用と同じCSVファイルを使うなら-1と入力

noAnkerPostTextCsvStartRow: 1,

//最初に取得する返信用投稿CSVファイルの行番号。もしアンカー無しと同じCSVファイルを使うなら-1と入力

replyPostTextCsvStartRow: 1,

//テキストCSV/返信用テキストCSVの取得行が最終行に達したら最初の行まで戻るかどうか。true=戻る。false=マクロ終了。

textCsvLoop: true,

//返信する場合、これより小さなレス番には返信しない。返信を投稿すると、この数値は前回の返信先のレス番に更新される。

minAnker: 895,

//返信する場合名前に以下の文字列を含む投稿アンカーをつけて返信する(ワッチョイやIPなど名前フィールドにあるものならなんでも可)。配列複数指定可能指定無しなら空配列([])。filterNamesとfilterNamesNotIncluded共に無指定ならレス番1から順に返信していく(minAnkerが設定されてればそこから順に)。以下のfilter系は全て併用可能

filterNames: [],

//↑とは逆に、名前に以下の文字列を含まない投稿アンカーをつけて返信する。↑と併用も可能

filterNamesNotIncluded: [],

//返信する場合、本文に以下の文字列を含む投稿アンカーをつけて返信する。

filterText: ['自演かな', '自演わらわら', 'スクリプト使うの', '安価ガバ', '>>660', '自演擁護', '最後' ,'あいうえお', 'かきくけこ', 'さしすせそ', 'なにぬねの', 'はひふへほ', 'まみむめも', 'やいゆえよ', 'やゆよ', 'らりるれろ', 'わいうえを', 'わをん', 'わいうえをん'],

},

//自分IPアドレス確認VPNとかでIPを変更してマクロを動かしてるとき、突然VPN作動しなくなってIPが元に戻ったときマクロを止めるためのもの

ipSettings: {

//自分現在IPアドレス確認をする。

checkIp: true,

//以下の文字列自分現在IPアドレスに含まれている場合マクロを一時停止する。基本的自分の本当のIPアドレス入力

avoidTheIp: '133.206.99.224',

},

//浪人設定。最後動作確認したのは5年くらい前で、今も同じように動作するかは、浪人を持ってないか確認できずわからない。

roninSettings: {

//浪人ログインしてるかどうかをチェックするかどうか。trueらするfalseならしない。trueにしていてもし浪人ログインしていないことを確認したらログインしにいく。

checkLogin: false,

//浪人ログインメールアドレス

mailAdress: 'abc@def.com',

//浪人ログインパスワード

password: '1234',

},

//false: run()実行させず(デバッグ用)

run: true,

//true: 投稿処理だけしない デバッグ

skipPost: false,

};

/**************************************

設定箇所終わり。

書き込めない時の早見表 - 5ちゃんねるwiki

https://info.5ch.net/index.php/%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%81%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E6%97%A9%E8%A6%8B%E8%A1%A8 <h3>o- *************************************/</h3>

/**************************************

メモ

クラスフィールド宣言できない。

・NULL演算子(??)は使えない。論理積(&&)は使える。

オブジェクトの分割代入はできない。

・importはできない。 <h3>o- *************************************/</h3>

/**************************************

関数 <h3>o- *************************************/</h3>

/**

* ここから始まる。

*/

function run() {

//設定ミスがないか調べる。

checkSettings();

var _TextCsvCursors = new TextCsvCursors(

new TextCsvCursor(

SETTINGS.postSettings.noAnkerPostTextCsvStartRow > 0

? SETTINGS.postSettings.noAnkerPostTextCsvStartRow - 1

: SETTINGS.postSettings.noAnkerPostTextCsvStartRow,

FILE_PATHS.textCsv,

SETTINGS.postSettings.textCsvLoop,

),

new TextCsvCursor(

SETTINGS.postSettings.replyPostTextCsvStartRow > 0

? SETTINGS.postSettings.replyPostTextCsvStartRow - 1

: SETTINGS.postSettings.replyPostTextCsvStartRow,

FILE_PATHS.replyTextCsv,

SETTINGS.postSettings.textCsvLoop,

),

);

var _LoopStatuses = new LoopStatuses(0, SETTINGS.postSettings.minAnker);

const _MyPosterName = new MyPosterName({

name: SETTINGS.nameSettings.name,

});

//スレURL指定

const _ThreadUrl = openPromptThreadUrl();

//ループ

while (true) {

//IP確認する設定なら、それをする。

SETTINGS.ipSettings.checkIp && checkCurrentIpNotTheIp();

//スレを開く

openUrl(_ThreadUrl.fullUrlHttps());

//浪人ログインする設定なら、浪人ログインしているかどうかを確認し、していなければログインしにいく。

if (SETTINGS.roninSettings.checkLogin) {

if (!checkRoninLogin()) {

loginRonin();

continue;

}

}

//投稿に使うテキスト取得。

const p = (function () {

if (SETTINGS.postSettings.replyPost) {

//返信あり設定の場合。返信対象が無いか調べる。

const targetAnkerNumber = createPostDOMList()

.filterPostnumberHigher(_LoopStatuses.currentMinAnker())

.filterByPostername(SETTINGS.postSettings.filterNames)

.filterByPosternameNotIncluded(

SETTINGS.postSettings.filterNamesNotIncluded,

)

.filterByText(SETTINGS.postSettings.filterText)

.lowestPostNumber();

if (targetAnkerNumber !== null) {

//返信対象があったのでアンカー付き投稿文を作る。

const r = _TextCsvCursors.takeNextRowTextAsReply(targetAnkerNumber);

messageDisplay(`返信対象有り。アンカー先: ${targetAnkerNumber}`);

return {

...r,

updatedLoopStatuses:

_LoopStatuses.updateMinAnker(targetAnkerNumber),

};

}

}

if (SETTINGS.postSettings.noAnkerPost) {

//返信対象無し、或いは返信しない設定の場合アンカー無し投稿文を作る。

const r = _TextCsvCursors.takeNextRowTextAsNoAnker();

messageDisplay('返信対象無し。アンカー無し投稿。');

return {

...r,

updatedLoopStatuses: _LoopStatuses,

};

}

return null;

})();

if (p) {

//投稿

postThenCheckError(

_ThreadUrl.serverName(),

_MyPosterName.randomize({

nickname: SETTINGS.nameSettings.nickname,

korokoro: SETTINGS.nameSettings.korokoro,

ip: SETTINGS.nameSettings.ip,

area: SETTINGS.nameSettings.area,

}),

SETTINGS.mail,

p.text,

);

//_TextCsvCursorsと_LoopStatusesを更新

_TextCsvCursors = p.updatedTextCsvCursors;

_LoopStatuses = p.updatedLoopStatuses.incrementPostCount();

messageDisplay([

`投稿回数: ${_LoopStatuses.currentPostCount()}`,

`minAnker: ${_LoopStatuses.currentMinAnker()}`,

`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,

`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,

]);

} else {

messageDisplay([

`返信対象が現われるのを待機中...。`,

`投稿回数: ${_LoopStatuses.currentPostCount()}`,

`minAnker: ${_LoopStatuses.currentMinAnker()}`,

`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,

`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,

]);

}

//短時間で連投しまくると規制されるので一定時間待機。

wait(SETTINGS.baseWaitTime + randomRange(0, SETTINGS.waitTimeRange));

}

}

/**

* 投稿処理と投稿結果を見てリトライしたりマクロ終了したり。

* @param {string} serverName サーバー

* @param {MyPosterName} _MyPosterName

* @param {string} postMail メール

* @param {MyText} _MyText

* @param {number} retryTimes

* @returns {void}}

*/

function postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes = 0,

) {

const r =

retryTimes === 0

? new ValuesOfPost(serverName, _MyPosterName, postMail, _MyText).post(

postTo5chTread,

postConfirm,

)

: new ValuesOfPost(

serverName,

_MyPosterName,

postMail,

_MyText,

).postSubstring(retryTimes, postTo5chTread, postConfirm);

if (r) {

back();

return;

}

//エラーページに飛ばされた。エラー情報取得。

wait(7);

const error = createPostErrorMessage().analyze();

messageDisplay(error.message);

if (error.order === 'KILL') {

kill();

} else if (error.order === 'SKIP') {

return;

} else if (error.order === 'TRUNCATE') {

back();

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes + 1,

);

} else if (error.order === 'WAIT') {

wait(SETTINGS.waitTimeForAvoidingPunishment);

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes,

);

} else if (error.order === 'LOGIN') {

//動作未確認

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes,

);

}

return;

}

/**

* 現在IPアドレスに、SETTINGS.ipSettings.avoidTheIpの値が含まれていないことを確認する。含まれていたらマクロを一時停止。

* @returns

*/

function checkCurrentIpNotTheIp() {

//IP確認ページへ飛ぶ

openUrl('https://www.cman.jp/network/support/go_access.cgi');

const _IpAdress = createIpAdressFromCMan();

if (_IpAdress.includes(SETTINGS.ipSettings.avoidTheIp)) {

pause('現在IP指定した値が含まれていることを確認。');

//ポーズ解除したならもう一度確認しに。

checkCurrentIpNotTheIp();

}

return;

}

/**

* 設定に致命的な問題が無いか検査

* @returns

*/

function checkSettings() {

if (

SETTINGS.postSettings.noAnkerPost === false &&

SETTINGS.postSettings.replyPost === false

) {

return kill('設定エラー。noAnkerPostとreplyPost両方ともfalseになってる。');

}

if (

SETTINGS.postSettings.noAnkerPostTextCsvStartRow < 0 &&

SETTINGS.postSettings.replyPostTextCsvStartRow < 0

) {

return kill(

'設定エラー。noAnkerPostTextCsvStartRowとreplyPostTextCsvStartRow両方とも-1になってる。',

);

}

if (

SETTINGS.postSettings.noAnkerPostTextCsvStartRow === 0 ||

SETTINGS.postSettings.replyPostTextCsvStartRow === 0

) {

return kill(

'設定エラー。noAnkerPostTextCsvStartRow/replyPostTextCsvStartRowの初期値は-1或いは1以上で。',

);

}

}

/**

* 入力フォームを表示して入力されたスレURLを受け取る。

* @returns {ThreadUrl}

*/

function openPromptThreadUrl() {

const url = prompt('スレURL入力');

return new ThreadUrl(url);

}

/**

* 開いてるスレレス全て読み取ってPostListインスタンスを作って返す。

* 重すぎるので使うのやめ。どうやらインスタンスの大量生成が原因な模様。

* createPostDOMListを使う。

* @returns {PostList}

*/

function createPostList() {

const posts = window.document.getElementsByClassName('post');

return new PostList(Array.from(posts).map((e) => new Post(e)));

}

/**

* 開いてるスレレス全て取得してPostDOMListに格納して返す。

* @returns

*/

function createPostDOMList() {

const posts = window.document.getElementsByClassName('post');

var arrPostDOMList = [];

for (let index = 0; index < posts.length; index++) {

//HTMLCollectionからElementを1つずつ抽出して配列に。

arrPostDOMList.push(posts.item(index));

}

return new PostDOMList(arrPostDOMList);

}

/**

* 開いてる投稿結果画面に表示されてるエラーを読み取ってPostErrorMessageインスタンスを作って返す。

* @returns {PostErrorMessage}

*/

function createPostErrorMessage() {

return new PostErrorMessage(

window.document

.g Permalink | 記事への反応(0) | 15:40

2022-06-14

anond:20220614224945

アイコン フリー」で検索して、出てくるサイトから「.svg」とか「.jpg形式で気に入ったやつを保存して、適当フォルダに保存してプロパティからリンクしとけばいいんやろと思ってたんだよ

そっからさらペイントで加工して、拡張子書き換えるのは面倒に感じてしまった

気持ち的には親子丼セット(そんなものないけど)を買って、ごはんにかけて食べようと思って中身開けたら、調理前の卵と鶏肉ネギが入ってたくらいめんどい

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