「DELETE」を含む日記 RSS

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

2024-11-01

仕事必要ファイルShift+Deleteで削除しちゃって、

絶叫して本投げて自分生ごみ以下うんこ以下生きてる価値なしと罵って泣きながらファイル復元ソフト試してみて、

これはダメだこれは遅いって3つぐらい同時進行で復旧試して、

そのうち1個がファイル復元はできたけど破損してる状態で、

破損を直すにはPRO版が必要です!っていうから買って試したけど駄目で、

そういえば消しちゃったファイルOneDriveに置いてたかブラウザOneDrive見てみよって思ってみたらゴミ箱にあった。

ふつうはこれを最初に試すべきだよな。

私は愚かなせいで復旧ソフトPRO版の9000円と貴重な時間を失いました。本当死にたいくそすぎうんこ以下。なんで生きてるの?誰か殴って殺してください。

2024-08-17

anond:20240817015407

依存関係は木で表現

ノードロック持たせる

ロックに条件持たせる

やりたいことはできてるように見えるが、うーんしんどい

# Entity Relation Diagram
# ```mermaid
# ---
# title: Rental Office example
# ---
# erDiagram
# OFFICE ||--|{ ROOM : x
# OFFICE {
# number office_id
# }
# ROOM {
# number office_id
# number room_id
# }
# ROOM ||--|{ SCHEDULE : x
# SCHEDULE {
# number room_id
# datetime start_at
# datetime end_at
# }
# OFFICE ||--|{ BUSINESS_HOUR : x
# BUSINESS_HOUR {
# number office_id
# enum week_of_day
# datetime start_at
# datetime end_at
# }
# ```

# Directed Acyclic Graph
#
# ```mermaid
# graph LR
# A[OFFICE] --> B[ROOM]
# B --> C[SCHEDULE]
# A[OFFICE] --> D[BUSINESS_HOUR]
# D --> C
# A --> C
# ```


# 基底クラス: EntityLock
class EntityLock
attr_accessor :entity_name, :entity_locked, :attribute_locks

def initialize(entity_name)
@entity_name = entity_name
@entity_locked = false # エンティティ全体のロック状態を保持
@attribute_locks = {} # IDに対するロック管理するハッシュ
end

def lock_entity
@entity_locked = true
puts "Entity '#{@entity_name}' is now locked."
end

def unlock_entity
@entity_locked = false
puts "Entity '#{@entity_name}' is now unlocked."
end

def lock(attributes)
entity_id = attributes["#{@entity_name.downcase}_id"]
if entity_id && !@attribute_locks[entity_id]
@attribute_locks[entity_id] = true
puts "#{@entity_name} with ID '#{entity_id}' is now locked."
end
end

def unlock(attributes)
entity_id = attributes["#{@entity_name.downcase}_id"]
if entity_id && @attribute_locks[entity_id]
@attribute_locks.delete(entity_id)
puts "#{@entity_name} with ID '#{entity_id}' is now unlocked."
end
end

def locked?(attributes)
# まずエンティティ全体がロックされているかチェック
return true if @entity_locked

# 次に特定IDロックされているかチェック
entity_id = attributes["#{@entity_name.downcase}_id"]
if entity_id && @attribute_locks[entity_id]
return true
end

# ロックされていなければfalseを返す
false
end
end

# 子クラス: OfficeLock, RoomLock, ScheduleLock
class OfficeLock < EntityLock
def initialize
super("Office")
end
end

class RoomLock < EntityLock
def initialize
super("Room")
end
end

class ScheduleLock < EntityLock
def initialize
super("Schedule")
end
end

# 子クラス: BusinessHourLock
class BusinessHourLock < EntityLock
def initialize
super("BusinessHour")
@attribute_locks = [] # BusinessHour用のロック配列管理
end

def lock(attributes)
start_at = attributes["start_at"]
end_at = attributes["end_at"]
if start_at &amp;&amp; end_at
@attribute_locks << [start_at, end_at]
puts "BusinessHour from '#{start_at}' to '#{end_at}' is now locked."
end
end

def unlock(attributes)
start_at = attributes["start_at"]
end_at = attributes["end_at"]
if @attribute_locks.include?([start_at, end_at])
@attribute_locks.delete([start_at, end_at])
puts "BusinessHour from '#{start_at}' to '#{end_at}' is now unlocked."
end
end

def locked?(attributes)
# まずエンティティ全体がロックされているかチェック
return true if @entity_locked

# 次に特定時間範囲ロックされているかチェック
start_at = attributes["start_at"]
end_at = attributes["end_at"]
if start_at &amp;&amp; end_at
@attribute_locks.each do |(locked_start, locked_end)|
if locked_start <= start_at &amp;&amp; end_at <= locked_end
return true
end
end
end

# ロックされていなければfalseを返す
false
end
end

# TreeNodeクラス
class TreeNode
attr_accessor :name, :children, :parents, :lock

def initialize(name, lock)
@name = name
@children = []
@parents = [] # 複数の親ノードを保持する配列
@lock = lock # TreeNodeにロックを持たせる
end

def add_child(child_node)
child_node.parents << self # 子ノードにこのノードを親として追加
@children << child_node
end

def display(level = 0)
indent = " " * (level * 4)
puts "#{indent}#{@name}"
@children.each { |child| child.display(level + 1) }
end

def has_dependency
return false if @parents.empty?

@parents.each do |parent|
puts "#{@name} is dependent on #{parent.name}"
return true
end

@parents.any?(&amp;:has_dependency)
end

def locked?(attributes = {})
# 自身ロックされているか確認
return true if @lock.locked?(attributes)

# 親ノードロックされているか再帰的に確認
@parents.any? { |parent| parent.locked?(attributes) }
end
end

# 木構造の組み立て

# ロックオブジェクト作成
office_lock = OfficeLock.new
room_lock = RoomLock.new
schedule_lock = ScheduleLock.new
business_hour_lock = BusinessHourLock.new

# ノード作成
office_node = TreeNode.new("Office", office_lock)
room_node = TreeNode.new("Room", room_lock)
schedule_node = TreeNode.new("Schedule", schedule_lock)
business_hour_node = TreeNode.new("BusinessHour", business_hour_lock)

# ノード間の依存関係の設定
office_node.add_child(room_node) # Office -> Room
room_node.add_child(schedule_node) # Room -> Schedule
office_node.add_child(business_hour_node) # Office -> BusinessHour
business_hour_node.add_child(schedule_node) # BusinessHour -> Schedule

# 木構造の表示
office_node.display

# ロック確認
puts "Case 1. Office全体がロックされた場合"
puts "Is office_node locked? #{office_node.locked?({})}" # false
puts "Is schedule_node locked? #{schedule_node.locked?({})}" # false
office_lock.lock_entity
puts "Is office_node locked? #{office_node.locked?({})}" # true
puts "Is schedule_node locked? #{schedule_node.locked?({})}" # true
office_lock.unlock_entity

puts "Case 2. Room id:1 がロックされた場合"
puts "Is schedule_node locked? #{schedule_node.locked?({ "room_id" => 1 })}" # false
puts "Is schedule_node locked? #{schedule_node.locked?({ "room_id" => 2 })}" # false
room_lock.lock({ "room_id" => 1 })
puts "Is schedule_node locked? #{schedule_node.locked?({ "room_id" => 1 })}" # true
puts "Is schedule_node locked? #{schedule_node.locked?({ "room_id" => 2 })}" # false
room_lock.unlock({ "room_id" => 1 })

puts "Case 3. BusinessHour start_at:0 end_at:5 がロックされた場合"
puts "Is schedule_node locked? #{schedule_node.locked?({ "room_id" => 1, "start_at" => 0, "end_at" => 5 })}" # false
puts "Is schedule_node locked? #{schedule_node.locked?({ "room_id" => 1, "start_at" => 5, "end_at" => 10 })}" # false
business_hour_lock.lock({ "start_at" => 0, "end_at" => 5 })
puts "Is schedule_node locked? #{schedule_node.locked?({ "room_id" => 1, "start_at" => 0, "end_at" => 5 })}" # true
puts "Is schedule_node locked? #{schedule_node.locked?({ "room_id" => 1, "start_at" => 5, "end_at" => 10 })}" # false
business_hour_lock.unlock({ "start_at" => 0, "end_at" => 5 })

2024-01-25

anond:20240125151103

試してみたけどいけないんよ。

ローカルウインドウでnの中身見れるじゃん?

そこで正しくValueが#REF!の名前を拾えてるのにDeleteするとなぜかいアクティブなシートのエラー参照じゃないプリントエリアが消されてる

増田エクセルマクロ詳しい人いる?

エクセルマクロで膨大な量の名前定義を一括で削除させたくて、こんな風に書いたんだけど

'「Print_Area」以外の名前定義を全部消す

For Each n In ActiveWorkbook.Names

If InStr(1, n.Name, "Print_Area") = 0 Then

n.Delete

ElseIf n.Value Like "*[#]REF!*" Then

n.Delete 'プリントエリアでもエラーだったら消す

End If

next

なぜか参照エラーになってるプリントエリアを消すべきところでエラー起こしてないプリントエリアが消される。

「Print_Area」だけど参照エラーになってるものが一個だけあるからそれを消してほしいだけなんだけど、アクティブシートのプリントエリアが消されて参照エラーの方は生き残ってしまう。

なんで…?

 

【やりたいこと】 

名前管理目視確認すると同じ「Print_Area」名で

1.シート1を正しく参照しているもの

2.シート2を正しく参照しているもの

3.#REF!を参照しているもの

の3つがある。

この3つ目だけを消したい。

 

【なぜか起きること】

For Eachで上から順に1と2を素通りして、3つめのときローカルウインドウName.Valueが#REF!なのを確認しているのに、

3つ目をDelete すると1つ目が消える

2023-10-25

キーボード勘違いされてること

キーボードの脚はキートップを見やすくするため

キーボードの脚を立てて使ってる人が結構多いけど

そもそもあの脚ってキートップを見やすくするために付けられてた

まりタッチタイピングできない人のために見やすくする理由で作られていて

打ちやすさは手前は平面、奥が少し盛り上がる状態が一番負担が少ない

これは「人による」みたいなことはなくて、人間はそういう風に出来ている

たまにノートPCを建てて使ってる人がいるけれど

建てて使う理由は画面を目線の高さに持ってくるためであって

キーボードは外付けのものを使うのが普通

建てた状態キーボードなんてどう考えても押しにくい

HHKBFnキー基本的に使わない

HHKBは最小のキーだけで構成されているのが特徴だけど

特にカーソル移動をするときFnを使って矢印キーを押す人が多いが

そもそも矢印キーを使うことは想定されていない

EmacsならC-nやC-pを使うし、Vimならjやkを使う

なので矢印キーなんて(ホームポジションから遠いし)使わないよね、という思想の元作られている

他にもBackSpaceはC-hなのでDeleteになっているしF1とかF2とかは使わないというのが前提

「うるさい俺は矢印キーを使いたいんだ」

という人はRealforce使えばいいのであってHHKBである必要は全く無い

まぁHHKBの大きな思想に持ち運べる馬の鞍思想があるので、持ち運ぶために使うけど矢印キーを使いたい、という人は一定数いると思うけど

QWERTY配列理由は良く分かって無い

QWERTY配列理由はよく使うキーを中心に構成されているとか

タイプライターが壊れないようにわざとバラしてあるだとか言われているが

実際にはなぜこの配列になっているかさっぱり分かっていない

本当に押しやすいとかタイピングが早くなるような配列ちゃん研究されているし

例えば日本語なら親指シフトが最も良いなんていうのも昔はあったんだが

結局のところ毎秒3キー押せるのが3.5キーになったところで意味は無いし

それよりも共通認識として広まっているQWERTY配列でいいじゃん、となって現在に至る

Num Lockを使いこなすとめちゃくちゃ便利

打ち間違えるためだけに存在してそうなNum Lockキーだが

数字を打ち込むときテンキーがあるのとないのでは大違いで圧倒的にテンキーの方が速い

一方でノートPCではテンキーを置く場所ケチりがちなので無理矢理Num Lockキーを使ってキーボードの一部をテンキーにしている

斜めになっているのでテンキーとは打ち方が変わってしまうが、それでも使いこなせば数字を打ち込むのがめちゃくちゃ速くなる

Excel会計処理をするときなんかは相当に便利

ただ、ほとんどの場合は外付けのテンキーを使ってる気もするのでやっぱりいらないかもしれない

余談だがテンキーのあるキーボードのNum Lock機能は矢印キーテンキーを切り替えるもの

かにテンキーのような配列で矢印を使えると非常に便利だし

昔のゲームなんかはテンキーを使って上下左右をコントロールしていたのだが

その場合そもそもゲーム自体テンキーによる入力上下左右に動けていたので

Num Lockによる切り替えはほとんど意味がなかった

そしてWASDキーによる移動が主流になって完全に廃れた

HomeとEndはめちゃくちゃ便利

絶滅危惧種となりつつあるHome End PageDown PageUpだが

PageDownとPageUpはそれなりに使い方が知られているとして

HomeとEndが行頭・行末への移動だと知っている人は意外と少ない

文章を打っていて行頭に戻りたければHomeを押せばいいし、行末ならEndでよい

マウスカーソル移動する必要はなくて便利なのだが恐らく大半の人はマウスで移動しているのと

Emacsキーバインドプログラマーコンソールを触る人はC-aとC-eで代用できるので

結局使われずに今の立場になっているのがHomeキーとEndキー

いや、でも便利なのでもうちょっといい位置に置いて欲しい

2023-10-13

anond:20231012213839

ワイ:

真面目な顔の人間の男の人の顔の絵を描いてください。

GPT

イメージ省略*

こちらが真面目な顔の男性イメージです。ご覧いただき、ご意見やご希望の変更点があればお知らせください。

ワイ:

その男の人がふざけて馬鹿になったふりをしている顔を描いてください。

GPT

イメージ省略*

ふざけている男性イメージ作成しました。どのイメージお気に入りか、または変更のご要望があれば教えてください。

ワイ:

PythonGUI アプリを作ってください。

ユーザー整数入力し、リターンキーを押します。

その整数が 3 か 5 の倍数の場合、ふざけた顔の男の顔(一枚目の顔)を表示してください。

それ以外の整数である場合、真面目な男の顔を表示してください。

エスケープボタンか、ウインドウクローズするまでループし、入力を待機してください。

GPT

了解しました。以下は、指定された条件に基づいて動作するPythonGUIアプリコードです。このアプリは、tkinter使用しています。まず、必要ライブラリインストールしてください:

pip install tkinter

次に、以下のコード使用してアプリを実行できます

import tkinter as tk
from tkinter import Entry, Label, PhotoImage

def 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('&lt;Return&gt;', 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

どういたしまして!何か他に質問サポート必要場合は、お気軽にお知らせください。良い一日をお過ごしください!

内定ゲットや!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

2023-09-16

SQLできます」と名乗っていいレベルとは

SELECT、INSERT、UPDATE、DELETE、UNION、JOINを読んだり書いたりしたことありますレベルで名乗っていいものか?

最低限、ストアド作れますレベルじゃないと名乗っちゃダメか?

2023-05-01

anond:20230501122014

コメントありがとうございます

私の投稿説明不足がございましたこと、まずはお詫び申し上げます

さて、ご指摘を頂きました

クリアじゃねえ。delete

について補足をさせていただきます

私の元の投稿では「クリア」を「ゲームクリア」の省略形を意味するものとして記載いたしました。

また、「ゲームクリア」とは「ゲーム用語の一つ。 ゲーム最後まで攻略すること。」(ピクシブ百科事典より引用)であります

おそらくご指摘の意図は「スマホ上の操作としてアプリを削除する操作を指して"クリア"とは言わない」ということかと思います

仰る通りでございます。わたくしもその点について異論はございません。

以上で補足とさせていただきます

なお蛇足ではございますが、英語圏ではゲームクリアを「beat」(打ちのめす)「finished」(終わる)「completed」(完結)などと表現するのだそうでございます

2023-04-25

anond:20230425110857

では働かないもの税金を支払わないものDELETEしていいことになりますね?

労働力税金を、支払う、貴重な人的資源

人間同士が、殺し合えば、経済的損失が、著しい。

2023-04-07

anond:20230407095736

これはクラウド関係なくてローカルだけの話でしょ

増田は、デスクトップとして使われていたフォルダの残骸を消したつもりが、実は依然としてデスクトップとして使われているフォルダを消していて、

しかも迂闊にもShift+Deleteで消してしまたから取り返しがつかなくなってしまったということです

教訓としてはフォルダを消すときShift+Deleteなんて使うもんじゃないということです

anond:20230407133712

元増田OneDriveしか知らんからOneDriveガーになってるだけで

同じ挙動をしてるクラウドストレージはみんなクソだと思います

迂闊にshift+deleteちゃうのもクソですけど

anond:20230405152609

これ、dropboxもおなじことやってるね

ただ、今回の件で反省すべきはshift deleteを使ったことでは

anond:20230405152609

OneDrive関係なしに、Shift+Deleteは痛い目を見たから使うの止めたわ

この増田も何度先かは分からないがそうなるだろう

デスクトップなどを共有したくない場合は手動でやろう

anond:20230405152609

このトラブル、散々経験した情報システムアドミニストレータ パソコン奴隷としては以下の運用にしてる。

あと、他にも指摘している人がいるけど、ブラウザからOneDriveアクセスしてゴミ箱を見てほしい。同期が1回でもされていると、そちらに残っているはず。
OneDriveゴミ箱ローカルゴミ箱と連動していないので、ローカルSHIFTDeleteゴミ箱空をしてもOneDrive上ではゴミ箱に移されて残っているはず。同期する前にやってるとそれは厳しいけど、ダメ元で覗いてみてね。

では、設定について。

バックアップの設定は全部不可

バックアップ設定でフォルダを設定すると、何故かバックアップを外す人がいてトラブルになるので、バックアップ設定は全部不可にしている。

(それも、容量節約をする必要が無い)

デスクトップドキュメントなどをOneDrive対象にするのは手動でやる

その上で、デスクトップドキュメント特殊は、あらかじめOneDrive上に手動でフォルダを設定した上で、それぞれのプロパティから移動させる。

この時、端末ごとにデータを同期させず、しかファイル保護したい場合には、パソコンごとに別のフォルダ指定すれば良い。

そのほか

バックアップならBackblazeとかをおすすめする。ソースネクストなら4千円で一年使える。外付けHDDも行けるので。

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

プリキュアプリキュア推し男性ライター気持ち悪すぎて、見ようとしてもこのオッサンが頭にちらついて嫌な気持ちになるので見れなかった

けど待機時間中に強制的に見させられたら普通に面白いな。

このキモすぎる男性ライター存在だけ脳内からDELETEする方法が知りたい

2023-01-27

Delete/InsertをDelete/Insertせずに行うのが面倒

手元のDBデータと新しく取得してきたデータを照合して、DBになく新データにあるものはInsert、DBにあって新データにないものDeleteDBと新データ両方にあるものはUpdateするという処理。

DB対象データを全部Deleteして新データをInsertすればすごく単純にコードが書けるけどDBに優しくないらしいのでわざわざ上記のように丁寧に回りくどく書いている。

最近こればっかり書いている。

はー面倒ー。

2023-01-10

増田引退にあたり過去投稿掃除した

以下のスクリプト登録することで。以下のループを繰り返させることができる。

https://anond.hatelabo.jp/ここにユーザー名/を開く」→「直近の投稿編集画面に遷移」→「削除ボタンを押す」→「ダイアログに答える」→「https://anond.hatelabo.jp/ここにユーザー名/に戻る」

実質ダイアログに答えるところだけやればよい。

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://anond.hatelabo.jp/ここにユーザー名/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=hatelabo.jp
// @grant        none
// ==/UserScript==

function sleep(ms) {
    return new Promise(resolve =&gt; setTimeout(resolve, ms));
}

(async function() {
    'use strict';

    await sleep(100);
    window.location.href = document.querySelectorAll("div.section")[0].querySelector("a.edit").href;
})();
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://anond.hatelabo.jp/ここにユーザー名/edit*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=hatelabo.jp
// @grant        none
// ==/UserScript==

function sleep(ms) {
    return new Promise(resolve =&gt; setTimeout(resolve, ms));
}

(async function() {
    'use strict';

    await sleep(100);
    document.querySelector("input.delete-button").click();
})();
ログイン ユーザー登録
ようこそ ゲスト さん