「desktop」を含む日記 RSS

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

2024-11-05

GitHub Desktop難しすぎワロタ

当方アラフォープログラマーGitターミナルで使っている。

若手からPRマージしようとしたらconflictしてるので解消方法教えてください。」と言われ見たのだが使ってるのがGitHub Desktop

どうやら最新化してないmainからbranchを切っていたのが原因だったようで、まず手元のmainを最新化しようとしたのだが、そもそもどこでgit fetch, git pullできるか分からない。

若手にfetchしてと言っても若手もピンときてない。

よく分からないのでググってみるが、見た目が違うものが出てきてよく分からない。

30分くらいあれやこれや調べたが結局よく分からなかったので、こちらで巻き取って手元のターミナルでrebaseしてpushし直して2分程度で解消。

もちろんこちらがGitHub Desktopに慣れてないのもあるし、「CLIこそ至高!」とか言ってるのは老害感あると思うが、それにしてもGitHub Desktopの非直感的なUIと、ググっても全然使い方、特にconflict解消のような困ったときどうすればいい系情報全然出てこないのはコマンドGit使うよりよっぽど難易度が高いのではと思ってしまった。

GitHub Desktop利用者で読んだ人いたらぜひ「ここに載ってるよ。これだからCLI中の老害プログラマーは…」などコメントほしい。

2024-05-06

Dinosaur T-Rex Game

Description

Every web user has at least once encountered loss of internet connection. This happens for a variety of reasons, such as a dysfunction in the cellular network or a broken internet cable. However, regardless of the reason, every Google Chrome user sees the Dino game (when there is no internet) instead of a plain blank error page. This game can be played without an internet connection.

Play game: Dinosaur T-Rex Game

Despite the fact that the game is just a plain runner that’s built into the Google Chrome browser, the developers behind it still deserve a round of applause. The peculiar monochrome graphics and the simplicity make the game even better, and it has gained a lot of worldwide fans since its launch.

The main character of the game is a classic dinosaur, a Tyrannosaurus rex, the species we usually see in movies and books about dinosaurs. It’s a carnivorous type of dinosaur from the Cretaceous. In the game it runs through the desert, encountering pterodactyls and cactuses that need to be avoided by jumping or ducking. As the distance the dinosaur has traveled increases, so does its speed, which is why it’s quite difficult for an inexperienced player to get a high score, even though the game itself seems easy.

Surely, all of you are curious about the development of the Chrome Dinosaur Game Online, so let’s take a little trip back in time.

History Google Dinosaur Game

The development of the T-Rex game dates back to September 2014, however, the final improvements were completed only in December of that same year. The adjustments supported earlier versions of the Android operating system.

Sebastien Gabriel, one of the designers of the game, says that the T-rex was chosen as a funny reference to "prehistoric times", when highspeed internet wasn’t so widely spread.

The T-rex was also not an accidental choice. The offline Chrome Dino game (without internet) was also called "Project Bolan", referring to the popular singer Mark Bolan from the 70s band "T-Rex". While creating the game the programmers also thought about making Dino growl or kick. Eventually these features were rejected in order to keep the game simple and "prehistoric".

How to open the T-Rex Chrome Dino Game?

In order to open the game you can simply type chrome://dino/ in the address bar. The game will open even if you’re connected to the internet, so there’s no need to disconnect.

The majority of internet users have Chrome as their default browser. However, if you’re using a different one, our website can help. Here you can play the T-Rex Dinosaur Game using any browser and any device, like a desktop computer or even your cell phone.

2024-03-10

anond:20240310133419

0年代前半くらいに息巻いてた集団がいたな

最近は見かけないけど

Linux DesktopはなぜWindowsに成り代われなかったのか」と自省している奴は稀に見かける

考えるまでもない

2023-08-17

anond:20230816112111

私がubuntu desktopを使う理由

emacs が速く動作する

・端末がすぐ出せる

snapソフト自動アップデートされる

機械学習計算がしやすい。環境構築がwindowsより簡単

anond:20230816112111

日本語圏では無理だろ常識的に考えてってのはわかる。

Input Method廻りがほぼ完全に決まった規格でもないので、ディストリ以上の統合のものしか無理だろってのはあって、

それはChromeOSだったり、Googleサービスデカプリングされている中国におけるLinux Desktop(OpenKylin含む)になるよね。

Input Methodがあまり重要でない英語欧州でも、PCベンダービルダー)がずっとメインをLinuxにしているか、もしくは自前でディストリもってるレベル必要で、それでやれているのはSystem76がもう十五年ぐらい生き残ってるけど、ほかにもStarlabs、Junoぐらいだしね。でもやっぱり、たくさん生き残れるほどの市場ではないんだよね。あとやっぱりUEFI Firmwareが壁になりやすい。Corebootを商用に仕上げるのはそれなりに大変だから

2023-08-02

Macのvirtual desktopが納得いかない

Windowsのvirtual desktop(以下個別のvirtual desktopをvdNと表記)はdisplayと直交概念になってて、monitorが増えてもvd1はvd1だし、vd2はvd2で、それぞれに複数のdisplayが生える。従ってvirtual desktopを切り替えると全てのmonitorが切り替わる。

しかし、Macのvirtual desktopはなんかおかしい。

Macにmonitorが増えると、それぞれのmonitorにdesktop存在する。

ではvirtual desktopはそれぞれのmonitorに生えるのかと思うと全てのmonitorに個別に生える。

ではvirtual desktopがmonitorの従属物なのかと思うと、新しいmonitorに生えた新desktopに手元のwindowが移動したりする。

どういう抽象化なのさ? こうなったら便利だな、をあまり考えずに実装した感じで非常にあつかいづらいし、納得いかない。誰か納得できる説明をくれい

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

再びonedriveが原因でデスクトップデータが消えた

追記

ありました。

表示されているデスクトップユーザー名下Desktopで、onedrive上にあったデータの移動先がユーザー名下デスクトップに保存されてました。

ユーザー名下デスクトップからユーザー名下Desktopに移動して無事終了。

何この仕様バカなの?クソなの?舐めてるの?

クソでかため息がリアルにでたわ。



以前にも書いた増田です。

本日2回目やられました。

しか自分パソコンではなく預かりパソコン

会社上司からonedriveの容量が一杯だとうるさいからどうにかしてくれ」の相談

聞いてみると、どうやらデスクトップスマホ撮影した動画写真を溜め込んでいるらしく、それがonedrive自動設定でバックアップオンになっているらしい。

「あー、じゃぁonedriveからバックアップ設定をオフにすればいいですね。もしくは別のフォルダコピーしてください。」と答えるも相手ちんぷんかんぷんな顔。

わかりましたやります。そういってパソコン操作し始める。

onedriveの設定から重要PCフォルダーをonedriveバックアップする」の項目を発見

「このPCフォルダーをバックアップする」のデスクトップにチェックが入っていることを確認

オフを押す。

(後ろで娘の写真データとか動画がどうたらとか上司がうるさい。お前、このパソコン私物やんけ。)

PConedrive上のどちらも残す(推奨)」「onedrive上のみ」「このPCのみ」のような選択肢が現れたので、「このPCのみ」にチェックを入れてOKクリック

デスクトップ上のデータが一瞬で消え去る。

自分上司、目が点になる。

以前、onedriveバックアップを削除された際に、再現できないか試していたのでonedriveの設定はある程度把握しているつもりだった。

ちなみに以前、onedriveデスクトップバックアップする設定をオフにしたにも関わらず、デスクトップフォルダonedriveに残されていた原因は以下の通りだということが判明。

OSクリーンアップをする際にデータコピーが面倒くさいので、OSはCドライブデータはそれ以外のドライブという習慣がついている。

そのため、クラウドストレージ基本的にはデータドライブフォルダ作成するようにしている。

onedriveは初回設定時に保存先フォルダ指定できないので、一度目は素直に言われるがままに設定を行った。

ここでいつもならデスクトップ設定もオフにするのだが、何故か忘れたか、おそらく選択肢がなかった。

一度設定が終わってonedrive動作してからonedriveの設定を起動して同期をオフ、その後デスクトップドキュメントバックアップ設定をオフにして、保存先フォルダデータドライブ指定

ここですね。

同期をオフにした時点でデスクトップフォルダパスonedrive下になったままで、その後にデスクトップを含めない設定でonedriveを使い始めたので、デスクトップパスが変わらないままだったということ。

同期をオフにする前にデスクトップバックアップ設定をオフにしていれば起こらなかった。

分かりづらいかもしれないけど、

デスクトップの同期をオフにする→デスクトップパスonedriveからユーザー直下に移動する

onedriveの同期をオフにする→デスクトップパスは移動されずにonedriveへの同期だけがオフになる

ということ。

これが自分のせいだと言われればそうかも知れないが、そもそもなんで最初ユーザー自由度を奪った状態サービスを開始するような設定になってるのかが甚だ疑問。

振り返り終わり。

話が戻るのだが、デスクトップデータをこのPCに残したいと思った時、あなたはこの選択肢のうちどれを選びますか?

PConedrive上のどちらも残す(推奨)」「onedrive上のみ」「このPCのみ」

かい表現忘れてしまったけど、これ、どう考えたって「このPCのみ」を選ぶでしょうに。

注意書きは3回以上読み直したけど、このPCのみ”削除”なのか”残す”なのかが判然としない問いかけだった。

判然としないなら、常識的リスクの少ない方の選択がされるはずって思うのが、造り手側が予想するべき危機管理じゃないんですか?

ということでこの選択肢意味は、「このPCのみ”削除”」という意味でした。

しかもご丁寧に、デスクトップパスユーザー名下に移動させて、onedriveフォルダにはデスクトップフォルダを残しておいて、「残ってる!」と思わせてからの中身が空っぽ

完全にバカにしてる。

結局今回は、クラウド上にはデータが残っているということで事なきを得たのだが、「容量増やせ増やせうるさいからとりあえずお試し期間だけオンにしてみたよ」と言いながらもすでに40GB近くのデータデスクトップに載せていた上司

現在10時間かけてデスクトップデータクラウドから取り返し中。

何このクソ無駄トラフィック

疑問なのだけど、これで改てデスクトップバックアップをオンにしてたら、onedrive上のデスクトップはどうなってたんだろう。

まさか現状のデスクトップに同期するために、onedrive上のデスクトップが空になったりなんかしないよね?

だとしたら消えたからって焦って同期し直したら永遠にデータが失われるってこと?

怖すぎるんだが。

あの一件以来、自分では死んでも使うものかと思っていたonedrive

いくらなんでもリテラシーゼロで使っている人からこんな形で渡されたらガード不能だよ。

俺なんで上司にお詫びしなきゃいけないんだろ。

めちゃくちゃ腹たってきた。onedriveサ終しろ

2023-05-15

[]なんか勝手に見ているページから情報を抜き出すんだな…

GPT-4 AI Tutor Prompt: A tool for creating personalized learning experiences using GPT-4 and LangchainJS, a drag and drop UI for building LLM flows.

Pandas AI: A Python library that adds generative AI capabilities to Pandas dataframes, making them conversational.

FigmaChain: A set of Python scripts that use GPT-3 to generate HTML/CSS code from Figma designs. It also has a chatbot interface for interactive code generation.

Sui: A smart contract platform with high performance and an asset-oriented programming model based on the Move language.

Jailbreak for ChatGPT: A project that allows ChatGPT to predict the future, opine on controversial topics, and assess what is true. It may help us understand LLM bias.

ML Observability in a Notebook: A tool to uncover insights, surface problems, monitor, and fine-tune generative LLM, CV and Tabular models.

System Design Primer: A resource to learn how to design large-scale systems and prepare for the system design interview. It includes Anki flashcards.

Next.js 13 App: An open source application that showcases the new features of Next.js 13, such as router, server components, and more.

TypeScript: A superset of JavaScript that compiles to clean JavaScript output.

Media Downloader: A desktop utility to download images/videos/music/text from various websites, and more.

AI Pull Request Fixer: A tool to fix issues with AI-generated pull requests, powered by ChatGPT.

Chat Chat: An app that lets you deploy your own AI interface and chat with different LLMs in one place.

2023-04-05

onedriveが原因でデスクトップデータが消えた

いや、お前データを守る側ちゃうんか。

なんでお前に大事データ消されなきゃならんのよ。

調べてみたらひどいクソ仕様だったので、同じ轍ふまないように知見共有します。

なお、消えてしまったデータは息子の卒業式動画データ復元不能

ダメージでかすぎで立ち直れないかもしれない。

リテラシーの話にしたくないので、一応くわしい状況を説明

興味ない人は読み飛ばしOK

ストレージは壊れるものという前提は理解しているつもりなので、状況ごとにいくつかのバックアップ体制は取ってある。

なのでデスクトップ基本的一時的データしか置かない。

そのため、今回の被害は本当に息子の卒業式動画データだけ。

安くなったとは言えすべてのストレージSSD化するには至っていない。

そのため、OSソフトウェアなんかはSSDインストール写真動画などのサイズがでかいデータRaid HDDミラーリングして格納するようにしている。

それ以外にもそれほどサイズの大きくないデータonedriveとかのクラウドストレージを利用。そのデータRaid HDDミラーリングして二重にバックアップ体制を敷いている。

趣味写真をやっているのだが、今回の事故はその編集フローの中で起こった。

編集と格納は別で考えているので、アクセス速度が高いほうがいい編集SSD上で行い、格納はRaid HDDに行っている。

そのタイミングgoogle photo分散バックアップ必要に応じて家族なんかと共有を行う。

まり撮影が終わったら最初にすることは、SSD上にあるデスクトップの一時フォルダ写真動画データコピーすることから始まる。

Raid HDDに格納するのは、編集ソフトレタッチが終わってからだ。

まずは写真データから編集を行い、RAWデータから無事にjpegデータへと書き出してHDDへの格納が終わった。

そのタイミングで妻からの頼まれごとのためにメールpdfプリントして名前をつけて保存しようとした。

めったに使わない機能なのだが、指定されたのはonedriveフォルダだったので、そのまま保存をクリック

ところが、PCからonedriveフォルダアクセスしても出力したpdfデータが見つからない。

おかしいなと思ってもう一度出力を試みて保存フォルダパス確認してみる。

すると、今現在HDD側に指定してあるonedriveパスが、SSD上のデフォルトパス指定されているようだった。

ここで思い至ったのが、確かPConedriveを設定した際にうっかりデフォルト設定のまま起動してしまい、その後、HDD上にパスを切り替えたという状況だった。

「そうかぁ。保存先を変更すると元のファイルを移動させるんじゃなくてコピーを作ってしまうんだな」なんて感じに妙に納得しつつ、もう一度しっかりとパス確認した上でpdfコピーしてからSSD上のonedriveshift deleteで削除した。

エクスプローラーを閉じてデスクトップに戻ってくると妙な違和感

ない。

デスクトップ上のファイルが見事にない。

はぁ?と思ってPCダブルクリックすると、すぐに警告ウィンドウが開いて「デスクトップへのパスが間違っています」といったエラー表示。

焦る。かなり焦る。

ゴミ箱を開いても当然データは残っていない。

ウィンドウをすべて閉じても、デスクトップ上にはデフォルトアイコンけが並んでいるだけ。

頭真っ白。

多少大事データはあったかなと思いながらも致命的と言えるものは思いつかず(まだ見落としてるだけかもしれない)、しかし、すぐに一時フォルダごと動画データがないことに気づく。

写真はすでにjpg出力してあるので、RAWデータが消えてしまったのはなんとかなる。

子供卒業式動画はまだ変換をかけてもないし、当然アップロードもしていない。

終わった。

まりにもショックだ。

読み飛ばしここまで。

結局何が原因だったかというと、最初onedriveセットアップする際に、デフォルトの保存先、なおかつデスクトップやマイドキュメントなんかもバックアップに含めるという設定で始めてしまたからだったらしい。

この、onedriveバックアップデスクトップを含めるという操作をすると次のようなことが起こる。

本来はC:\Users\ユーザー名\Desktopにあるはずのデスクトップデータが、C:\Users\ユーザー名\onedrive\Desktopに変更される」

ここからの手順は順序が曖昧なのだが、次の操作を行っている。

onedriveバックアップからデスクトップを含めないように設定変更

onedriveバックアップ先をSSDからHDDに変更

この2つの動作を行ったにも関わらず、何故かこのパソコンデスクトップは、C:\Users\ユーザー名\onedrive\Desktoに残ったままになってしまったというわけだ。

そのため、C:\Users\ユーザー名\Desktopデスクトップがあると思いこんでいた自分は、C:\Users\ユーザー名\onedriveにあるonedriveフォルダを、疑うことなく削除することができた。

そしてその結果、デスクトップにおいてあったデータのすべてを失った。

いや、流石にこんなクソ設定想定できないでしょ。

大事データを守るっていう名目があれば、大事データの格納先をそんな簡単に変えていいと思ってる?

それ、誰に許可取ってやってるんだよっていうさ。

その辺の共通プロトコルを、バックアップソフトが、しかOS提供元がやっていいのかよっていう。

これはちょっと言わせてくれ。

マイクロソフトクソだわ。

まぁ、なんというか皆さんも気をつけてください。というか、こんなの気をつけようがないけどな。

どこに気持ちをぶつけたって息子の大事な思い出は帰ってこないのはわかってるけど、やるせなさくらい吐き出させて。


追記

説明が複雑でちゃんと伝わってなかった部分の補足。

ブラウザonedriveゴミ箱データが残っている可能性はゼロです。

その理由は以下の通り。

このパソコンは1ヶ月ほど前に新規セットアップしたものでした。

そのセットアップ過程で、onedriveインストールする際にデフォルトの保存先、なおかつデスクトップバックアップという設定にしてしまいました。

ここでノールックで設定してしまった自分が一番悪いことは認めます

onedriveセットアップが終わったあと、同期に時間がかかっていておかしいな?と思ってファイルアップロード履歴確認したところ、あらかじめ古いパソコンからコピーしてあったデスクトップデータアップロードしようとしていたので、慌てて設定を見直して、デスクトップ同期のオフ、保存先をHDDに変更しました。(変更した順番は書いてある通り覚えていません。順番が逆だったら起こり得なかったかも)

この操作によって、onedriveの保存先はHDDに変更になり、デスクトップの同期も停止しました。

しかしそうした操作を行ったにも関わらず、デスクトップの保存先はC:\Users\ユーザー名\Desktopに戻ることはなく、C:\Users\ユーザー名\onedrive\Desktopのままになってしまっていました。

そのことに気づかずに1ヶ月以上作業を続けていたなかで、記載の通りSSD内に同期されていないonedriveフォルダ発見したので削除した結果、デスクトップデータ消失しまったという話です。

そして卒業式動画データデスクトップコピーしたのは、onedriveの同期を切ったずっとあとのことです。

もともとonedriveバックアップするつもりもないし、バックアップされていないのでwebに残っているはずもないのです。

デスクトップデータがそんなところに格納されていることがわかっていれば、もともと削除なんてしません。

同期されていないすでに使われていないonedriveデータだけしか削除するつもりではなかったのに、何故かその中に現在進行系で使っているデスクトップデータが格納されていて、一緒に削除されてしまったというお話です。

ちなみに、削除直後は本当に何が起こったのか意味がわかりませんでした。

その後にマイコンピューターを開いた際、別ウィンドウエラーが出たことで初めて状況が理解できたということです。

そのエラーが「デスクトップC:\Users\ユーザー名\onedrive\Desktopアクセスできません」といった内容のエラーです。

デスクトップ?お前なんでそんなとこに保存されてたの?からの、そういえば思い出してみればこんなことあったよなーで、原因に思い至ったというわけです。

SDカード復元を試みましたが、サイズの大きい動画データですので、ヘッダーは読み込めたものの、データのものはすでに別の写真データに書き換えられてしまっていたせいかちゃんと開けませんでした。

SDカードからデスクトップデータを移すタイミングというのは、行事ごとに撮影が終わったらSDを空にして新しく撮影できる状況を作るためなので、基本的にはデスクトップコピーしたあとは次の撮影前に必ずフォーマットすることを習慣づけています

それは、毎回SDカード空っぽにすることで、現像ときデータの重複が起こらないようにするためです。(趣味写真を取っているので撮影枚数が莫大。尚且つ現像ソフト不要データを削除するので、SDを空にしないと、削除後にまたコピーしてしまったりと効率が悪いため)

撮影データデスクトップに一次保存→次回撮影時にSDカードフォーマット時間があるときPC上のデータを選別、現像バックアップ含めてデータを格納→SDカードから新しい撮影データPCコピー→次回撮影時にフォーマット時間あるときPC上のデータを選別、現像・・・

SDカード自体も紛失の危険性とか考えてそれほど信用しているメディアではないので、できるだけデータが保管されている時間を短くするようにしています

個人的には、このワークフローが一番データの保存性も高く、無駄も少ない処理方法だと思っています

だってデスクトップを間違って消すなんてこと普通しないでしょ。

壊れたなら仕方ないって、それはそれで納得できるんだって

流石にこんなことまで想定したワークフロー作れってのは無理な話ですよ。

その証拠に、これまでこの方法10年以上無事故でしたから。

すでにonedriveからデスクトップの同期も切ってて、しかも別フォルダonedriveちゃんと稼働してるのに、まさか自分デスクトップがC:\Users\ユーザー名\onedrive\Desktopに保存されてるなんて思う?

思うかよバカバカマイクロソフトバカヤロウ!

2023-03-24

開発環境の構築に悩むお年頃

概要

なるべく手持ちのPC(以下、ホストPC)の環境レジストリとか環境変数とかで汚したり悩まないよう

仮想化環境で開発+テストを行いたい。

Windows10 ProとWSL2とVSCodeDockerでやる感じかな

 

ホストPCに頼らねばならないところ

UnityとかVisual StudioとかintellijとかAndroid Studioを使う場合はどうしようもないので諦める。

Android開発はVSCodeビルドコマンドラインでとかはできそうだけど。

あとはUSBなどでシリアル接続する必要のあるarduinoとかもちょっと難しいかもしれない

 

WSL2+Docker+Docker Desktop + VSCode + devcontainer

これが基本的なところだけど、WSL2をホストPCに入れるので若干汚れるのとWSL2上のlinuxも同じく汚れるところ

 

Hyper-V (Windows) + WSL2+Docker+Docker Desktop + VSCode + devcontainer

Hyper-VWindows仮想マシンを作ってそのうえでWSL2を動かすのが一番汚れずクリーンに使えそう

ただRyzenWindows10の組み合わせだと、Hyper-V入れ子ができないので仮想マシン上のWSL2は動かないらしい。

Windows11だとできる

 

リモート開発サーバ的なところにDocker+Docker Desktop + VSCode + devcontainer

手元じゃないのでクリーンに使えるが、ビルドなどはリモートスペック依存

ネットワークエラーとかがつらそう

あとクラウドと金がかかる、自前だと別で電気代がかかる

そこをよしとすれば楽そう

 

なんかこうやってるよっての教えてください

教えてください。

2023-01-13

増田削除アプリを作った

動機

趣味増田の削除です。

増田を全削除するのであればPower Automation DesktopSelenium IDEあたりでも使えば可能ですが、中にはブクマを集めた珠玉増田ブクマは付かなくても割と気に入ってる増田もあるので全削除はしたくありませんでした。

なので選択的に増田を削除するためのアプリ作りました

アプリ概要

Masuda Deleter

https://github.com/oribeolive/masuda-deleter/

Masuda DeleterはDockerコンテナ環境を作って動くのでDocker必要です。

M1 Mac動作していますWindows検証できるマシンが手元にないので動作未確認です。

インストールGitHubのREADMEに書かれたコマンドを実行すればできると思います

Masuda Deleterははてラボログインして指定されたページ分の自分増田投稿スクレイピングしてローカルDBに保存します。

取得された投稿リストブラウザで見られるので、そこで削除するものを選んで実行すると、またログインして投稿を削除しにいきます

ページのアクセスごとに読み込みと遠慮のために1秒から数秒sleepするので少し時間がかかります

一旦投稿ローカルに保存するという過程があるため副作用として自分投稿検索できます

これにより

が容易になります

増田にはAPIがないので、IDパスワードを使ってログインして、表示されている文章スクレイピングしてくるという原始的なやり方になります

(2回目からcookieがある場合cookie復元してログイン状態になります。)

ユーザーが知らない外部サイトにクレデンシャルを渡すのは危険であり、サービス運営側としてもパスワードを平文で持ちたくないので、Webサービスとして実装せずセルフサービスとしております

ユーザーによってローカルの.envファイルに書かれたIDパスワード使用する形です。

ソースオープンしておりますので怪しいことをしていないか確認ができるかと思います

機能

取込

ページ数を入れて取込ボタンを押すと投稿の取得が始まります

一応下にプログレスバーが出ますが、ページ遷移すると見られなくなります。進捗は進捗管理でも確認できます

取得された投稿リアルタイムで画面に反映されないのでブラウザリロードしてください。

検索

自分増田キーワードブクマ数やトラバ数で検索できます

キーワードは濁点を区別していません。

一覧

増田IDタイトル、本文の省略、投稿日時、ブクマ数、トラバ数が表示されます

ブクマ数やトラバ数でソートできます

あとで消す(選択削除)

「あとで消す」投稿をチェックし、「あとで消す」記事をついに消すボタンで削除を実行します。

チェックは別のページに遷移しても有効です。

「あとで消す」選択全解除ボタンで解除できます

削除を実行すると下にプログレスバーが出ます

こちらは実行した時点で表示されているページのみリアルタイムに画面に反映されます

リロードすれば現時点でのデータが見られます

詳細

投稿の全文を見られますタグ等は取得しないのでテキストのみになります

再読込

投稿個別に取得してローカル文章ブクマ数とトラバ数を更新します。

削除

投稿個別に削除しにいきます

Space Masuda

隠し機能デフォルトではOFF。

対象投稿タイトルを空に、本文をスペース1文字にしにいきます

進捗管理(Progresses)

処理の進捗(何件中何件処理済みか)を見ることと、処理を停止させることができます

排他処理(取込と取込、特定IDの削除と同じIDの削除等)にしているので動いていなそうな処理を停止して再度処理を実行するときに使います

停止する場合は停止ボタンを押すか、それでも停止しそうにない場合強制停止ボタンを押してください。

進捗一覧ではプログレスバーアニメーションはありません。

「停止」は今行っている最中の処理ではなく次以降の処理を停止するという形になります

停止ボタンを押したときに4ページ目を取得している場合は、5ページ目の取得を始める前に処理を終了することになります

そのためプロセスのものが止まっている場合は停止されません。

強制停止」はプロセスをkillします。スクリプト名とプロセスIDプロセス検索して子プロセスも含めてkillします。

グラフ

おまけとして、投稿日とブクマ数、投稿日と3ブクマ以上の投稿件数投稿時間(hour)ごとの1ブクマ以上の投稿件数グラフが見られます

ブクマが付いた瞬間ではなく投稿日時なので、いつの時期に投稿した、何時に投稿した増田が活きが良いのかを見られる程度です。

集計データ別に持っていないので増田を削除するとグラフ使用されるデータも消えます

その他

私はこれで多いときには4000件程度あった増田を3000件程度に減らしました。

これを開発する前からも増え続ける増田の削除に日々勤しんでいたので総数はもっと多いはず。

まだまだ削除したいです。

たまに

Message: unknown error: net::ERR_CONNECTION_CLOSED

というSeleniumエラーが出て処理が実行されないことがあります。再度実行してください。

今後

フロントエンドレガシーなのでMasuda Deleterの開発に飽きていなければもう少しモダンリプレースしようと思っています

使用していないDjango REST frameworkがrequirements.txtに入っているのはその名残です。

2023-01-06

DMMウマ娘プリティーダービーが起動できなくなったので解決した

DMMウマ娘プリティーダービーを遊ぼうとしても、エラーダイアログを出さずに起動しなくなる現象に遭遇した。

Windowsイベントビューアーを除くと、こんなログが吐かれていた(各IDは削除)。

=====

ログ名前: Application

ソース: Application Error

日付:

イベント ID: 1000

タスクカテゴリ: アプリケーション クラッシュ イベント

レベル: エラー

キーワード:

ユーザー:

コンピューター:

説明:

障害が発生しているアプリケーション名: umamusume.exeバージョン: 2020.3.24.51085、タイム スタンプ: 0x

障害が発生しているモジュール名: apphelp.dllバージョン: 10.0.22621.963、タイム スタンプ: 0x

例外コード: 0xc0000005

障害オフセット: 0x0000000000002691

障害が発生しているプロセス ID: 0x0x5B2C

障害が発生しているアプリケーションの開始時刻: 0x0x

障害が発生しているアプリケーション パス: D:\DMMGames\Umamusume\umamusume.exe

障害が発生しているモジュール パス: C:\WINDOWS\SYSTEM32\apphelp.dll

レポート ID:

障害が発生しているパッケージの完全な名前:

障害が発生しているパッケージに関連するアプリケーション ID:

イベント XML:

結論から言うと、Windows本体のapphelp.dllが原因でウマ娘が起動できなくなっているという。

アプリケーションに罪は無いため、DMM Game Playerやウマ娘を何度再インストールしても直らない厄介な現象だ。

Windowsは数十万のファイル存在するため、今回のようにWindows Updateやアプリケーションインストールアンインストールを繰り返すだけでシステムファイルが壊れる事がある。

Windowsでは、これを直すためのコマンドコンソールUIのみに用意されている。

1.DISM.exeを叩く

Windowsスタートメニュー右クリックして、コマンドプロンプトまたはターミナル管理者権限で起動する。

そうするとコマンド入力可能になるので、

DISM.exe /Online /Cleanup-image /restorehealth

を実行する。これは、オンライン上にある正しいWindowsシステムイメージを元に、壊れたファイルを修復する操作となる。

実行するとこう表示される。

展開イメージサービス管理ツール

バージョン: 10.0.22621.1

イメージバージョン: 10.0.22621.963

[==========================100.0%==========================] 復元操作は正常に完了しました。

操作は正常に完了しました。

2.システムファイル整合性チェックを行う

DISM.exeを実行すると、正しいWindowsシステムイメージPC内に保存された状態になる。

この状態で、

sfc /scannow

を実行すると、次のように表示される。

システム スキャンを開始しています。これにはしばらく時間がかかります

システム スキャン検証フェーズを開始しています

検証 100% が完了しました。

Windows リソース保護により、破損したファイルが見つかりましたが、それらは正常に修復されました。

オンライン修復の場合、詳細は次の場所にある CBS ログ ファイルに含まれています

windir\ Logs\CBS\CBS.log (たとえば C:\Windows\Logs\CBS\CBS.log)。オフライン修復の場合

詳細は /OFFLOGFILE フラグによって指定したログ ファイルに含まれています

これで、とりあえずWindows自体の修復コマンドによってシステムファイルが正しい状態復元された状態となる。

実行してもまだメモリ上には古いシステムファイルが読み込まれて実行されている状態なので、終わったらPC再起動する。

3.ウマ娘を起動する。

さて、準備は完了だ。ここまでの操作Windows回復DMM Game Playerで「ダウンロード版をプレイ」を押す事でウマ娘が起動し…ない!

おおブッダよ、あなたは今も寝ているのですか!?

イベントビューアーには今もウマ娘を起動しようとする度にアプリケーションクラッシュイベントが追加されている。救いは無いのですか?

結局、今回のケースではPCで常駐していたリモートデスクトップ用のSplashtop StreamerとVirtual Desktop Streamerをタスクキルする事でウマ娘が起動できるようになり、DMMブラックフライデーで得た有償石でおはガチャを回すことに23成功した。

レアケースかも知れないがウマ娘が起動しないはてな民が居たら役立てて欲しい。

2022-09-08

「Paperspace」を利用したVRChatの始め方

MacユーザーがOculus Questだけ買って、PaperspaceというクラウドゲーミングサービスPCVRChatを1年やってみたらかなり良かった。やり方を書き置きしておきたい。


2022年9月時点でのHow to・セットアップ方法記事がなかったので、先人のブログ引用しながら、変更点注意点などを書き残しておきます

使い始めた経緯

コロナ禍で好きな音楽現場へ行く事が難しくなり悶々としていた2021年夏頃、友人に「VRChatのVRクラブがおもろいから、騙されたと思ってOculus Quest2一緒に買って始めてほしい」と言われ、4万空中に投げたと思って、ノリだけでOculus Quest2を買う。

元々VRChat自体に憧れはあったが、家にはMacbookオフィス向けWindowsしかなかった為環境がなく、諦めていた。しか

・Paperspaceなるクラウドゲーミングサービス (つよつよグラボを積んだPCネット通して借りれる)

・Virtual Desktop(\2000) (Questと接続されてないPCを繋ぐQuestアプリ)

・Oculus Quest2(当時4万弱)

・Paperspaceを起動する端末(MacでもWindowsでもスマホでもOK

の4つが揃うだけでプレイできるらしい。価格は1$前後/1h。手元に必要ものブラウザが立ち上がるPCとQuestのみ。初期投資必要金額は4万前後

まぁちょっと旅行行ったと思って4万払ってみよう、体験版と思ってやってみるか〜 と思って始めたが、これが思いのほか快適で結局1年間使い続けてしまった。

もし「Quest版のVRChatをやってみたけど全然おもしろくなかった」「PC版でガッツリやってみたいけど家にあるPCスペックが足りない、或いはMacしかない」という人がいればぜひ参考にしてもらいたい

海外鯖の為、pingは100msほどあり軽度のラグが生じ、FPS系のゲームには向かない。

ただ、昔のSkype程度のラグのため、VRChatで会話コミュニケーションを行うにはほぼ不便を感じなかった。




やり方(準備・セットアップ


基本的方法は以下のブログ参照。

https://suna.hateblo.jp/entry/2019/06/30/015730

とりあえずP5000インスタンスを借りる承認が降りるまでは、やや時間がかかる(多分手動で承認作業をしてもらっている)のでSubmitのところまで記事に従ってやっておくが吉。

※この申請が通るまでは待ちなので、インスタンス構築手順は進められません。また、お金はこの時点ではかかりません。

[追記]上記ブログ内「3. 鍵がついているけどP5000をクリックする」の工程の画面が、2022年9月現在と大きく異なるようです。

Machine Type からP5000(鍵マーク付)を選択

→ 上記ブログの内容を参考にRequest Approvalへ申請理由を記入

→ Addを押して申請完了してください。

---

注意点

上記ブログについて、2022年9月現在では記事内8番の工程より先は大きく内容が異なる。そのため一旦無視を推奨する。

また、設定方法でも異なる部分が多くあるため、6点ほど注意点を書き残しておく。



①paperspace導入時(インスタンス構築手順)の最初の画面が現在ブログのものと大きく異なっている。

最初の画面でcore選択 → Help us~~ の画面で 利用目的を「hobbyst」「gaming」「just me」にしてcontinue を押し、マシン作成の画面に移行してください。

インスタンス構築の手順に入る前に、先にクレカ情報登録する。(P5000の申請を行うための必須作業登録のみなので支払いは発生しません)

ページ右上の■から「Billing」を選択して、「Payment Method」の項目に名前と住所(英語表記)・クレカ情報入力して、Addしてください。

③設定内容は変わらないが、選択部分の文字表記等が異なる部分がいくつかある。

ブログと同じマシン設定の場合の、項目名および選択・変更するもの表記は以下(参考にしてください)。

Machine Type P5000

OS Licensed のWindows10 

Region WEST COAST(CA1)

Desksize 100GB ※デスクサイズの変更については後述

Advanced options オン → ブログを参考にPublic IPAuto-Shutdown、 Auto-Snapshotを設定。

記事内9番の工程「VirtualDesktopインストールする」は ”Oculusから” 購入・インストールする。

SteamでもVirtualDesktop販売しているのだが、こちから買えるものは今回使う用途のものではありません。買っても無駄金になります。気をつけてください。(自分と友人らはここでしっかり詰んだ

⑤この記事11番「サイドロード版のVirtual Desktopインストールして起動する。」

この工程現在必要なし。飛ばしOK

⑥月額の課金額が変わるが、HDD容量が足りなくなるのでDesksizeは100GBに増やしておく。

※もし50GBでマシン作成してしまった後であっても"Upgrade Machine"の項目からワンクリックで増やせます



---



8番の工程まで完了したら

①OculusからVirtual Desktopアプリを購入(\2000)

※繰り返しになるが、Steamで売っているVirtual Desktopは、今回の環境時では使わない。間違って買ってしまった場合には返金をお願いしましょう。

②paperspaceのマシンに以下の順でインストール

※Virtual Desktopストリーマーを先にインストールすると不具合が出るパターンがあるようなので、なるべく最後インストールすることを推奨


これでセットアップ完了です

使用スタート


ブラウザでpaperspaceにログインクラウドPCマシンを立ち上げる

②paperspaceのマシンの起動を待っている間に、手元のOculusを起動

③OculusでVirtual Desktop起動

④Virtual DesktopからpaperSpaceのマシン接続(うまくOculusアプリインストールID連携が済んでいれば、Virtual Desktopを起動するだけで自動でつながる)

⑤Oculus左手の 三 のボタンを押して、VirtualDesktopメニューからVRモードVRChatを立ち上げる

以上でPC版のVRChatが開始できます

西海岸クラウドPCと繋いでゲームをするため、お使いの各家庭の回線環境依存する部分はあるかと思うので注意。

※ただ、iphoneのテザリングでもギリ使えたという話もあるので、相当回線速度が低くなければ意外といける可能性あり


まとめ ~MacユーザーでもゲーミングPCがなくてもVRChatが楽しめる~

上記の手順を踏めば、家にWindowsゲーミングPCがなくても、PCVRChatをVRモードで遊ぶことができる。

個人的感想だが、ことVRクラブにおいては、デスクトップモードVRモードでは体験が全く別物で、

デスクトップモードDOMMUNETwitchを見ている感覚と大差はない +マビノギとかのネトゲをやっている感覚って具合で

20%くらいしか面白くない。

ぜひ上記記事を参考にして、クラウドゲーミングPCを導入してみてください。

マジでNVIDIAGeForce NOWとかがVRChatに対応してくれたらコスパも良くてちょうど良いんだけどな・・・

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-07-28

anond:20220728161626

これか

犯罪者にとって「秘密」とは最高のステーキ

たとえば、同僚が使っているロッカー

番号式のロックがある。

この番号を知ること、かぎつけること、暴くこと、犯罪者にとってこれ以上の美食はない。

ハイエナがうまそうに屍肉に食らいつくのと同じ。

もし「秘密」がない、まともな人間だったらつまらない。

犯罪者人生とは、「仲間」を探し当て、世の中の治安を乱すことが最終目的からだ。

仲間とはもちろん、「心にうしろめたいもの」を持った人間である

番号式のロックや、PCパスワード

これらはそういう仕組みである以上、「秘密」必要とする。

まり犯罪者にとってほぼ唯一の、

一般市民とふれあえる場所」なのである

この秘密を通じて、自分存在意義を確かめることができる。

「ああ、このために生まれてきたんだ」と思える。

まり他人秘密とは、彼らにとって最高のステーキであり、人生を満腹にするためのライフハックなのである

ハイエナサバンナで屍を食らい、むさぼりついている時、

「ああ、生きている!」と感じるだろう。

あれと全く同じである

「三度の飯より、他人秘密

とは犯罪者にとっての人生を見事に表した言葉といえるだろう。

2022-07-28

■ここに真実があるから見てくれ

C:¥Users¥yamagami¥Desktop¥新しいフォルダ(1)¥hatena¥masuda¥真実.odp

2022-06-06

https://techtarget.itmedia.co.jp/tt/news/2206/05/news01.html

一部のアホを除いてCUIウェブを見てるやつが存在しないように

CUIこそオプションやねん一般的には

そんなことも分からねーからDesktop Linuxとか一生流行んねーんだよ

2022-05-18

平成7年まれ俺の平成邦楽TOP30

https://anond.hatelabo.jp/20220517213328

この記事を見て自分もやりたいと思った。

個人的思い入れのある曲を30曲。順位は上位のもの以外は割とテキトー

アーティスト名と曲名コメントを少しだけ。


30 - 21

きのこ帝国 - スクールフィクション

イントロがカッコ良すぎる。曲全体としてはそんな好きじゃないけど、たぶんイントロだけだと300回近く聴いた。通して聴いたのは3回くらい。


ケツメイシ - 海』

ケツメイシと言ったら夏歌、夏歌といえば「夏の思い出」だと思うけど、個人的にはこっち。メンバーラップがまだ完成されてない感じとオールドスクールトラックが最高。


CAPSULE - I Wish You

リリースカットされたピアノフレーズがかっこいい。割と中田ヤスタカの曲は楽器を重ねて空間を埋めるように編曲された曲が多い印象だけど、この曲はかなり隙間を意識して作られてて好き。


Perfume - ナチュラルに恋して

中田ヤスタカと言えばPrefumeだけど、断トツでこの曲が好き。コンプレクストロみたいな構成トラックで、いろんな楽器音色が入れ替わり立ち替わりするのが良い。こういう編曲しかJ-POP歌物でっていうのはなかなかない。


やくしまるえつこ - ヴィーナスジーザス

相対性理論10代の頃に死ぬほど聴いた。メランコリックな曲が多いけど、この曲は明るくて良い塩梅。「荒川アンダーザブリッジ」懐かしいですね。


宇多田ヒカル - time will tell

よく行ってたクラブで朝方流れてた曲。この曲を聴くと当時の朝の渋谷匂いとか景色が蘇ってくる。


高田梢枝 - 秘密基地

元々知ってて良い曲だなとは思っていたけど、何かのイベントでこの曲の弾き語りを聴いて泣いてしまった思い出がある。この曲で涙を流せる純粋さはずっと持っていたい。


西野カナ - Darling

デビュー当時の、着うたギャルR&Bみたいな曲も好きだったけど、この曲以降の西野カナはかなりいい曲多い印象。個人的に「パッ」とかも好き。


「L'Arc~en~Ciel - winter fall

普段はそんなに歌詞意識して音楽は聴かないけど、Hyde比喩比喩を重ねたような歌詞結構好き。


井口裕香 - 白金ディスコ

神前暁作編曲した楽曲で一番好き。田中秀和楽曲と迷ったけど、オタク受けとか関係なくこの曲は良い。


20 - 11

KEYTALK - トラベリング

所謂歌物ロックから一曲。この疾走感に初期衝動が感じるような曲、いつまでも好きなんだろうなって思う。


岡村靖幸 - ビバナミダ』

80年代スタイルにどこかフレンチハウスっぽい風味も感じる編曲が最高。岡村靖幸は昔の曲じゃなくて最近バキバキトラックの上で歌い上げてる曲の方が好き。


『Avec Avec - おしえて』

10代中盤から20代前半まで、Maltineをはじめとするインターネットレーベルにハマってた。こんなにスウィングさせても成立するんだって当時はかなり衝撃的だった曲。こんなにビートがヨレてる曲は正直世界中探してもこの曲だけだと思う。


『FLIPPER'S GUITAR - さようならパステルズ・バッヂ

華奢でまだあどけなさが残る二人のルックス楽曲に全てが最高。どの曲にしようか迷ったけど、一番爽やかなのはこれかな。完全に後追いなので、渋谷系をリアルタイム体感してみたかった気持ち


Cornelius - NEW MUSIC MACHINE

個人的には小沢健二よりCorneliusの方が好き。楽曲実験的で、アルバムごとにコンセプトも違うから聴いてて飽きない。


aiko - キラキラ

当時付き合ってた彼女カラオケで歌ってて、そこから好きになった。元々全然いたことなかったけど、いろんな楽曲を聴いてみると、ブルーノートがとにかく多い。ポップスというより完全にブルースシンガー


TOWA TEI - Mars

独特なプラックフレーズにチープなピアノフレーズ原田郁子ボーカル全てが最高。シンプル2stepビート気持ち良すぎて、部屋で一人踊りまくってた思い出。


PUNPEE - Bad habit』

HIPHOPと言えば今はTrapだが、Boom bapでもなくまさかのJuke。コードワークはめちゃくちゃお洒落で他に類を見ない楽曲


七尾旅人 - サーカスナイト

こういうエレピでゴリ押すタイプアーバン楽曲が大好きなんだが、その中でも断トツエモいとはこのこと。


YEN TOWN BAND - Swallowtail Butterflyあいのうた〜』

Charaの「Junior Sweet」と悩んだがこっちにした。


10 - 1

Lamp - A都市の秋』

日本で一番好きなバンド。全曲共通してコード進行がお洒落すぎる。


RIP SLYME - 黄昏サラウンド

昔はセルアウトなんて言われていたけど、RIP SLYMEの良さが分かった時「HIPHOPは2周目」みたいな風潮もあった。この曲はPESトラックを作っているけど、DJ FUMIYAトラックマジでヤバい。今聴いてもぶっ飛んでるし、5人でもっと活動してほしかった。


フジファブリック - 若者のすべて

夏の終わりのなんとも言えない気持ちを上手く表現してると思う。この曲を聴くと、何年経っても鬱屈した10代の頃を思い出してしまう。


平井堅 - KISS OF LIFE

Japanese 2step名曲編曲シンプルさに、サビ後半のベースラインで何杯も飯が食える。


KinKi Kids - Kissからはじまるミステリー』

山下達郎Worksから一曲シティポップとnew jack swingが融合したような楽曲。本人が歌ってるバージョンも好き。


ASIAN KUNG-FU GENERATION - 或る街の群青』

高校時代鬱になって不登校の時期があった。そろそろ行かないと出席日数がヤバいと言う時に毎日聴いてた曲。「蹴り出す速度でどこまでも行けるよ」って歌詞が当時の自分に刺さりまくった。


Nujabes - reflection eternal

唯一のインスト曲。出席日数がヤバくて学校に行ったものの、授業をサボってラグビー部の部室裏で聴いてたのが懐かしい。曲としては完成されすぎてる。サンプリング元が優秀だってのはあるけどね。


『iの数式 (imoutoid's ComplexFunktion Remix)』

亡くなった今でもカルト的に人気のある伝説天才トラックメイカー、imoutoid。僕の人生で一番好きなアーティストでもある。ダンスミュージックテクノロジーの発展により進化するものだけど、2007年くらいの技術高校生がこの曲を作ったと思うと驚きを隠せない。imoutodはダンスミュージックトラックメイカーとしてのセンスはもちろんのこと、J-POP的な分かりやすさに作家性も兼ね備えていた。生きていたら今頃世界的なアーティストになっていたと思うし、今聴いても新しい。


livetune - ファインダーimoutoid's“Finder Is Not Desktop Experience Remix”)』

好きすぎるのでimoutoidからもう一曲無駄な音が一切なくて完成されすぎている。ハイハットだけで何倍も飯が食える。彼がメジャーレーベルから出した楽曲はこの一曲のみなのでめちゃくちゃ貴重。


SMAP - 夜空ノムコウ

間違いなく人生で一番聴いた曲。J-POPとはどこか前向きなメッセージが込められているものだと思うけど、この曲は人生の気怠さを歌っている。しか国民スターだったSMAPがだ。この曲は「愛があれば壁を乗り越えられる」とも「努力は報われる」とも言ってない。ひたすら過去を思い返して「夜空ノムコウにはもう明日が待っている」だ。とてつもなくリアル。今後も聴き続けるんだろうなと思う。


2022-05-05

windows11のスクロールバーを太くする

[設定]→[アクセスビリティ]→[視覚効果]→「スクロールバーを常に表示する]→[オン]

[ファイル名を指定して実行]→[regedit]

[コンピュータ\HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics]→[ScrollWidth]

値を小さくすると太くなる(デフォルト-255だから、-400ぐらいに設定する)。

再起動

2022-04-06

anond:20220406205129

yuangao よりシンクライアント化が進んだAzure Virtual Desktopと思えば良いのか、クラウド化されたSCCM(MECM)からOS差分イメージ配信・即時反映できるようになったと思うべきか。企業の端末管理インパクトありそう。

この人が一番わかってるな。

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