「False」を含む日記 RSS

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

2024-09-11

僕がやってる遠方の親の定期的な生存確認自分生存通知

倒れていても早く気付けるように。


必要ハード

アンドロイドスマホ

必要アプリ

MacroDroid(試用期間ありの500円?)


スマホロック画面を解除したら指定したアドレスメールを送るようにマクロを作製。

トリガーに「ロック画面の解除」

アクションに「メールを送る」と「変数を設定」。マクロ作動後に変数Falseにする。

条件に「変数」でTrue指定。「サービス圏の通信状態」でサービス圏内にいる時。


別のマクロで0時を過ぎたら変数を「True」にするようにしておけば、1日1回0時以降にスマホロック画面を解除したときメールが飛ぶようできる。

変数リセットマクロ曜日指定すれば1週間に1回などにできる。


マクロ作動条件に電波圏内にいる時を設定したほうがいいかも。

フェリー旅行中でメールが飛ばないことがあった。

自分メール送信に借りてるサーバー指定しててだめだったけど、Gmailならオンラインになったとき送信されるかも。


すでにスマホを持ってるならMacroDroidの500円だけでできる。

2024-09-04

anond:20240902122217

コードはこんな感じ

def cartesian_product(**kwargs):
    def recursive_product(sets, current_index=0, current_combination=[]):
        if current_index == len(sets):
            yield tuple(current_combination)
        else:
            for item in sets[current_index]:
                yield from recursive_product(sets, current_index + 1, current_combination + [item])

    sets = list(kwargs.values())
    return list(recursive_product(sets))

# 使用例
result = cartesian_product(set1=[1, 2], set2=['a', 'b'], set3=[True, False])
print(result)

2024-08-26

上司脳みそいかれている

ユーザー登録フォーム画面があるとしてisShowCommentInputTextFieldがtrueであればコメント入力欄を表示、falseなら非表示という仕様があるとしよう。ありとあらゆる資料にはisShowCommentInputTextFieldはコメント欄を非表示にするフラグであると書かれている。しか実装上は、ユーザー登録フォーム自体非表示にする実装になっている。

実装が正とすると、仕様は誤りだ。上司に聞いてみたところ「何も間違っていない。その仕様書が正しい」という。「実装コメント欄どころか全非表示になるので、実装不具合か?」と聞くと、「実装は正しいし、仕様も正しい」と返してくる。意味不明なので小一時間問答を繰り返した結果引き出せた言葉は「コメント欄も非表示になるのだから正しいに決まっているだろう。当たり前の話だ」という答えだった。

なぜこんな不毛なやり取りのために時間を使わないといけないのか?こいつの脳みそはどうなっているのだ?

2024-08-17

anond:20240817220011

そんでこのロックデータをこんなかんじでRedisにもてばネットワーク越しに依存関係のあるロックできる?

Typeキー
String"Office1"true
String"Office2"false
String"Room1"true
String"Room2"false
String"Schedule1"true
String"Schedule2"false
String"BusinessHour1"true
String"BusinessHour2"false
Bitmaps"BusinessHour1Range"0001111111100000000000000000000000000
Bitmaps"BusinessHour2Range"0001111111100000000000000000000000000

できなくはないか???

RDBMSみたいなトランザクションは無理だけど

ほんとはタスクの直列化ができればいいんだが我のあずかり知らぬ領域なのだ・・・

バグりそう

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 })

anond:20240817001425

・・・できたけど木の組み立てがしんどすぎるー

class TreeNode:
def __init__(self, name, attributes=None):
self.name = name
self.attributes = attributes or {}
self.children = []

def add_child(self, child_node):
self.children.append(child_node)

def display(self, level=0):
indent = " " * level
print(f"{indent}{self.name} {self.attributes}")
for child in self.children:
child.display(level + 1)

def has_dependency(self):
# ルートノード属性を持たないノード依存関係を判定しない
if not self.children:
return False

for child in self.children:
# 子ノードがBusinessHourかScheduleかをチェック
if "start_at" in child.attributes and "end_at" in child.attributes:
child_start = child.attributes["start_at"]
child_end = child.attributes["end_at"]

# 現在ノードがBusinessHourで、子がScheduleの場合
if "start_at" in self.attributes and "end_at" in self.attributes:
self_start = self.attributes["start_at"]
self_end = self.attributes["end_at"]

if self_start &lt;= child_start and self_end &gt;= child_end:
print(f"{child.name} (start_at: {child_start}, end_at: {child_end}, room_id: {child.attributes['room_id']}) is dependent on {self.name} (start_at: {self_start}, end_at: {self_end})")
else:
print(f"{child.name} (start_at: {child_start}, end_at: {child_end}, room_id: {child.attributes['room_id']}) is NOT dependent on {self.name} (start_at: {self_start}, end_at: {self_end})")

# 現在ノードがRoomで、子がScheduleの場合
elif self.name.startswith("Room"):
print(f"{child.name} (start_at: {child_start}, end_at: {child_end}, room_id: {child.attributes['room_id']}) is dependent on Room {self.name[-1]}")
else:
child.has_dependency()

# 子ノード属性を持たない場合再帰的に依存関係をチェック
else:
child.has_dependency()

# ノード作成
root = TreeNode("Root")
office_node = TreeNode("Office")

# Roomノード作成
room1_node = TreeNode("Room1")
room2_node = TreeNode("Room2")

# BusinessHourノード作成
business_hour1_node = TreeNode("BusinessHour1", {"start_at": 9, "end_at": 12})
business_hour2_node = TreeNode("BusinessHour2", {"start_at": 13, "end_at": 17})

# Scheduleノード作成
schedule1_node = TreeNode("Schedule1", {"start_at": 10, "end_at": 11, "room_id": 1})
schedule2_node = TreeNode("Schedule2", {"start_at": 14, "end_at": 15, "room_id": 1})
schedule3_node = TreeNode("Schedule3", {"start_at": 10, "end_at": 11, "room_id": 2})
schedule4_node = TreeNode("Schedule4", {"start_at": 14, "end_at": 15, "room_id": 2})

# 木構造の構築
root.add_child(office_node)
office_node.add_child(room1_node)
office_node.add_child(room2_node)
office_node.add_child(business_hour1_node)
office_node.add_child(business_hour2_node)

# Room1にSchedule1, Schedule2を追加
room1_node.add_child(schedule1_node)
room1_node.add_child(schedule2_node)

# Room2にSchedule3, Schedule4を追加
room2_node.add_child(schedule3_node)
room2_node.add_child(schedule4_node)

# BusinessHour1にSchedule1, Schedule3を追加
business_hour1_node.add_child(schedule1_node)
business_hour1_node.add_child(schedule3_node)

# BusinessHour2にSchedule2, Schedule4を追加
business_hour2_node.add_child(schedule2_node)
business_hour2_node.add_child(schedule4_node)

# 木構造の表示
root.display()

# 依存関係のチェック
office_node.has_dependency()
room1_node.has_dependency()
room2_node.has_dependency()
business_hour1_node.has_dependency()
business_hour2_node.has_dependency()

Root {}
Office {}
Room1 {}
Schedule1 {'start_at': 10, 'end_at': 11, 'room_id': 1}
Schedule2 {'start_at': 14, 'end_at': 15, 'room_id': 1}
Room2 {}
Schedule3 {'start_at': 10, 'end_at': 11, 'room_id': 2}
Schedule4 {'start_at': 14, 'end_at': 15, 'room_id': 2}
BusinessHour1 {'start_at': 9, 'end_at': 12}
Schedule1 {'start_at': 10, 'end_at': 11, 'room_id': 1}
Schedule3 {'start_at': 10, 'end_at': 11, 'room_id': 2}
BusinessHour2 {'start_at': 13, 'end_at': 17}
Schedule2 {'start_at': 14, 'end_at': 15, 'room_id': 1}
Schedule4 {'start_at': 14, 'end_at': 15, 'room_id': 2}
Schedule1 (start_at: 10, end_at: 11, room_id: 1) is dependent on Room 1
Schedule2 (start_at: 14, end_at: 15, room_id: 1) is dependent on Room 1
Schedule3 (start_at: 10, end_at: 11, room_id: 2) is dependent on Room 2
Schedule4 (start_at: 14, end_at: 15, room_id: 2) is dependent on Room 2
Schedule1 (start_at: 10, end_at: 11, room_id: 1) is dependent on BusinessHour1 (start_at: 9, end_at: 12)
Schedule3 (start_at: 10, end_at: 11, room_id: 2) is dependent on BusinessHour1 (start_at: 9, end_at: 12)
Schedule2 (start_at: 14, end_at: 15, room_id: 1) is dependent on BusinessHour2 (start_at: 13, end_at: 17)
Schedule4 (start_at: 14, end_at: 15, room_id: 2) is dependent on BusinessHour2 (start_at: 13, end_at: 17)
Schedule1 (start_at: 10, end_at: 11, room_id: 1) is dependent on Room 1
Schedule2 (start_at: 14, end_at: 15, room_id: 1) is dependent on Room 1
Schedule3 (start_at: 10, end_at: 11, room_id: 2) is dependent on Room 2
Schedule4 (start_at: 14, end_at: 15, room_id: 2) is dependent on Room 2
Schedule1 (start_at: 10, end_at: 11, room_id: 1) is dependent on BusinessHour1 (start_at: 9, end_at: 12)
Schedule3 (start_at: 10, end_at: 11, room_id: 2) is dependent on BusinessHour1 (start_at: 9, end_at: 12)
Schedule2 (start_at: 14, end_at: 15, room_id: 1) is dependent on BusinessHour2 (start_at: 13, end_at: 17)
Schedule4 (start_at: 14, end_at: 15, room_id: 2) is dependent on BusinessHour2 (start_at: 13, end_at: 17)

anond:20240816235943

高さ3の有向木で根からAという節点が生えAからBという葉が生える

class TreeNode:
def __init__(self, name, attributes=None):
self.name = name
self.attributes = attributes or {}
self.children = []

def add_child(self, child_node):
self.children.append(child_node)

def display(self, level=0):
indent = " " * level
print(f"{indent}{self.name} {self.attributes}")
for child in self.children:
child.display(level + 1)

def has_dependency(self):
# ルートノード属性を持たないノード依存関係を判定しない
if not self.children or "start" not in self.attributes or "end" not in self.attributes:
return False

# Aノードのstartとendを取得
start = self.attributes["start"]
end = self.attributes["end"]

# すべての子ノード(Bノード)に対して依存関係をチェック
for child in self.children:
if "position" in child.attributes:
position = child.attributes["position"]
if start &lt;= position &lt;= end:
print(f"{child.name} (position: {position}) is dependent on {self.name} (start: {start}, end: {end})")
return True
else:
print(f"{child.name} (position: {position}) is NOT dependent on {self.name} (start: {start}, end: {end})")
return False

# ノード作成
root = TreeNode("Root")
a_node = TreeNode("A", {"start": 10, "end": 20})
b1_node = TreeNode("B1", {"position": 15})
b2_node = TreeNode("B2", {"position": 25})

# 木構造の構築
root.add_child(a_node)
a_node.add_child(b1_node)
a_node.add_child(b2_node)

# 木構造の表示
root.display()

# 依存関係のチェック
a_node.has_dependency()

こうかー

2024-08-16

anond:20240816122556

FUNCTION IS弱者男性():

 IF イケメンに生まれる:

  RETURN FALSE

 IF 努力して清潔感を身に着ける:

  RETURN FALSE

 IF 努力してお金を稼ぐ:

  RETURN FALSE

 RETURN TRUE

2024-07-25

朗報黒人・弥助を神とした元ネタ論文が見つかる。

アサクリの弥助・黒人奴隷と、そこから派生したロックリー・岡美穂子両氏の言説の元ネタっぽいものを見つけたので要約しておく。

○著者:David Wright

題名:The Use of Race and Racial Perceptions among Asians and Blacks: The Case of the Japanese and African Ameridans

○出典:1998年一橋大学社会学ジャーナルhttps://hermes-ir.lib.hit-u.ac.jp/hermes/ir/re/8321/

概要(俺の読解なので是非原本にあたられたし)

16世紀半ばからポルトガル人奴隷等としてかなりの数の黒人日本を訪れていた。

日本人は彼らに好意的で、彼らは尊敬対象だった。特に弥助という者について、信長厚遇した。

ポルトガル人が頻繁に黒人奴隷を献上するので、日本人も彼らを見下すようになり、明治維新の頃にはその見方が定着していた。

・というか白人との接触から日本では白い肌が美しいと言われてたけどね。(その割にはお歯黒は何故?)

・一方で、肌の黒い聖人いたこから黒い肌に対する欧米のような差別感情は持ってなかった。オランダから入れ知恵されてたのに不思議だね。

(以下開国時の話が続く)

この、「日本人は彼らを尊敬していた」「肌の黒い聖者もいた」が、ロックリー・岡美穂子両氏による「弥助は神とされた」等に変換されていったのではないだろうか。

なお、知る限り弥助を神とした、または神に近かった、神のようだったなどとする史料発見されておらず、専門家によるものでは、ロックリー氏や岡美穂子氏が述べているものがすべてのようだ。

特に八幡神は南無八幡大菩薩那須与一)で有名な武士の神であり、これになぞらえるというのはとてつもない厚遇だし、文献にも残っていると思うのだが何を根拠にされたのだろうか。

(岡美穂子氏インタビュー記事より)

信長に関する史料では弥助のビジュアルイメージが「八幡神に近かった」と言われています。あるいは、中国史料ではアフリカ系の人を「黒鬼」と表記している。ですから実用的な屈強さを求めただけでなく、そういう人間自分の近くに置くことで「こんなに強いヤツを従えているんだ」という格付けに役立つと考えた、イメージ戦略の部分もあったと思います

https://www.cyzo.com/2021/02/post_268095_entry.html

(岡美穂子氏インタビュー記事より)

弥助もそもそもアフリカ大陸内の部族闘争で生け捕りにされ、外国人に売られたといわれます

(略)

中国では「黒鬼」と呼ばれていましたが、差別的な意味だけでなく強いものに対する憧れ、神格化も含まれているでしょう。

https://books.google.co.jp/books?id=ueI9EAAAQBAJ&pg=PA45&lpg=PA45&dq=%22%E7%A5%9E%E6%A0%BC%E5%8C%96%E3%82%82%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%22&source=bl&ots=VL8Mdfp5xc&sig=ACfU3U0mVfcGBaVjLwU6pkAfd6NYXORlew&hl=ja&sa=X&ved=2ahUKEwj1_bTS7sOHAxWrb_UHHZRqGX8Q6AF6BAgcEAI#v=onepage&q=%22%E7%A5%9E%E6%A0%BC%E5%8C%96%E3%82%82%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%22&f=false

ロックリートーマス氏によると、当時の都だった京都住民と同様、信長は弥助の背丈や体格、肌の色に畏怖の念を抱いたという。

(略)

信長は弥助を「大黒天」ではないかと考えた。大黒天は豊穣(ほうじょう)の神で、寺院では通常、黒い像によって表現されている。信長は弥助の肌の色は墨によるものだろうと思い、こすり落とそうとした。本当に黒人だと納得すると、直ちに宴会を開いて敬意を表したという。

https://www.cnn.co.jp/world/35138192.html

追記

中国語の「黒鬼」に屈強なという意味はないのでは?

→通常の中国語ではその通りで、日本語に訳すと「黒い幽霊」といった意味合いになる。

あとは道教では鬼というのは死後の世界の人に該当するもので、鬼世界があって普通に鬼が暮らしていて鬼の役人がいたりもする。

いずれにしても中国語の「鬼」には日本のように「強い」「屈強な」という意味はない。(例えば「悪党中世)」・「悪源太(源義平)」・「悪太郎堀内恒夫)」という使い方はしない)。

なので、岡美穂子氏が「屈強な黒人」「神格化」という意味で取り上げたのは、解釈の誤りのように思う。御本人の説明を求めたいところだが。

ただ中国史については良く分からないので、昔はそういう使い方をしていたというのであれば補足よろしく

追記2

そもそも弥助ってアフリカであるとは限らないのでは?

→弥助はモザンビーク出身って記述があるんだけど、前半生は全くの不明で、岡美穂子氏が「部族闘争の結果生け捕りになった」とした根拠不明

当時のモザンビークってインド人大勢住み着いてるので、インド人とか混血の可能性は十分にある。

追記3

信長が弥助のことを大黒天(神)と思った

トップブコメにこうあったが、そんな証拠はどこにもない。

現時点ではロックリー氏と岡美穂子氏の頭の中だけに存在すると言って良い

2024-07-12

なんかずっと白い血栓がってやってるから拾ってきてあげました

基本、こういうのは英語検索しましよう

 

white clots' to mRNA vaccines

 

 

出てくるやつ→ False claims linking 'white clots' to mRNA vaccines resurface online in Thailand | Fact Check

タイの保健当局によると、虚偽の投稿で共有された画像は、法医学で分類される死後血栓と同じものであり、新しい現象ではありません。

死後血栓

タイ国立ワクチン研究所2024年2月21日声明を発表し、画像に見られる白い血栓mRNAワクチンとは関係ないと明言しました(アーカイブリンク)。 「この主張の画像は、mRNAワクチン接種によって引き起こされた血液障害を示すものではありません」と声明には書かれています。「これは、死後に発生するフィブリン血液の主要なタンパク質成分)の凝集に過ぎません(死後血栓)。」 同じ声明は続けて、「これは、死亡した人の体に一般的に見られる自然現象です。これは、Covidの発生やCovid-19ワクチン使用以前から観察されてきました。」と述べていますバンコクのブミボル・アドゥラデージ病院法医学病理学者であるアッタシット・ドゥルアムヌアイ博士も、白い血栓自然ものであり、死亡した体に一般的に見られると同意しました。 「私は解剖を行うときに常にそのような血栓を見つけます。それはmRNAワクチンとは関係ありません」とアッタシットは2月27日AFPに語りました。 同様に、ハーバード医科大学教育病院であるブリガム・アンド・ウィメンズ病院の肺専門医であるタニー・タニヤヴァーンも、虚偽の投稿掲載された血栓の外観を典型的な死後血栓と同じように説明しています。 「その外観はまさに死後血栓のようです」とタニーは2月23日に述べました。「それは生前血栓のように表面が粗くないので、その主張には疑問があります。」 タニーはまた、死亡した体に白い血栓存在する原因として、肥満糖尿病喫煙さらにはCovid-19感染などが考えられると付け加えました。

https://factcheck.afp.com/doc.afp.com.34KB4DG

 

白い血栓については日本語検索しても出てくると思うけど、AIちゃんにまとめて貰いました

### 白い血栓(白色血栓

 

構成成分:

 

形成メカニズム:

1. 血管内皮の損傷や異常が発生

2. 損傷部位に血小板粘着・凝集

3. 血小板活性化され、凝固因子を放出

4. フィブリノーゲンがフィブリンに変換され、血小板を結合

5. 白血球(主に好中球)が集積

6. 血小板とフィブリンネットワーク形成され、白色血栓が完成

 

白色血栓は主に動脈系で見られ、血流が速い部位で形成されやすいです。

 

 

### 白い死後血栓(死後白色血栓

 

構成成分:

 

形成メカニズム:

1. 死後、血液の凝固が始まる

2. フィブリノーゲンがフィブリンに変換

3. 白血球(主に好中球)が集積

4. フィブリン白血球ネットワーク形成

5. 重力の影響で赤血球が沈降し、上層に白い死後血栓形成

 

白い死後血栓は死後に形成される特殊血栓で、生前の白色血栓とは異なります。主に大血管内で観察されます

 

anond:20240712175024

2024-06-26

非エンジニアだけどClaude3に増田ミュート作ってもらったよ

これを改善してってお願いした。何書いてあるかわからないけど動いたよ。

https://anond.hatelabo.jp/20240125203115

// ==UserScript==
// @name         増田ミュート(白塗り版)
// @namespace    http://tampermonkey.net/
// @version      2024-06-26
// @description  ミューワードを含む最小限の範囲白塗りにする
// @author       You
// @match        https://anond.hatelabo.jp/*
// @icon         https://www.google.com/s2/favicons?sz=64&amp;amp;domain=hatelabo.jp
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const muteWords = [
        "弱者男性",
        "弱男",
        "弱者",
        "婚活",
        "男",
        "女",
        "年収",
        "下方婚",
        "発達障害",
        "発達",
        "ハッタツ",
        "ハッタショ",
        "ハッタショ",
        "競プロ",
        "競技プログラミング",
        "AtCoder",
    ];

    function whiteoutElement(element) {
        element.style.backgroundColor = 'white';
        element.style.color = 'white';
        element.style.textShadow = 'none';
        element.style.cursor = 'default';
        element.style.userSelect = 'none';  // テキスト選択を防止
        element.style.borderBottom = '1px dashed #ccc'; // 枠線を追加してテキストがあることを示す

        // リンク場合クリック無効化
        if (element.tagName === 'A') {
            element.style.pointerEvents = 'none';
            element.removeAttribute('href');
        }

        // 子要素にも適用
        Array.from(element.children).forEach(child =&gt; {
            child.style.backgroundColor = 'white';
            child.style.color = 'white';
            child.style.textShadow = 'none';
        });

        // ツールチップを追加
        element.title = 'この内容にはミューワードが含まれています';
    }

    function shouldMute(text) {
        return muteWords.some(word =&gt; {
            const parts = word.split('');
            const regex = new RegExp(parts.map(char =&gt; `${char}&#92;&#92;s*`).join(''), 'i');
            return regex.test(text);
        });
    }

    function findSmallestMuteableElement(element) {
        if (element.nodeType === Node.TEXT_NODE) {
            return shouldMute(element.textContent) ? element.parentElement : null;
        }

        if (element.tagName === 'PRE' || element.tagName === 'CODE') {
            return shouldMute(element.textContent) ? element : null;
        }

        for (let child of element.childNodes) {
            const result = findSmallestMuteableElement(child);
            if (result) return result;
        }

        return shouldMute(element.textContent) ? element : null;
    }

    function processElement(element) {
        const muteableElement = findSmallestMuteableElement(element);
        if (muteableElement) {
            whiteoutElement(muteableElement);
        }
    }

    function processAllElements(root = document.body) {
        const walker = document.createTreeWalker(
            root,
            NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT,
            null,
            false
        );

        let node;
        while (node = walker.nextNode()) {
            if (node.nodeType === Node.ELEMENT_NODE) {
                processElement(node);
            } else if (node.nodeType === Node.TEXT_NODE &amp;amp;&amp;amp; node.parentElement) {
                processElement(node.parentElement);
            }
        }
    }

    function handleClickEvent(event) {
        setTimeout(() =&gt; {
            processAllElements(event.target);
        }, 100);
    }

    // 初回実行
    processAllElements();

    // クリックイベント監視
    document.body.addEventListener('click', handleClickEvent);

    // DOM変更の監視
    const observer = new MutationObserver(mutations =&gt; {
        mutations.forEach(mutation =&gt; {
            if (mutation.type === 'childList') {
                mutation.addedNodes.forEach(node =&gt; {
                    if (node.nodeType === Node.ELEMENT_NODE) {
                        processAllElements(node);
                    }
                });
            } else if (mutation.type === 'characterData') {
                processElement(mutation.target.parentNode);
            }
        });
    });

    observer.observe(document.body, { childList: true, subtree: true, characterData: true });
})();

2024-05-29

anond:20240529160440

訓練データ分布が、99%がTrue1%Falseってタイプのやつだとするだろ?

それでそのまま評価するにしろF1を使うにしろ実用の精度の評価は難しいんよ

なぜって?「ほぼTrueでいけるやろ」の学習をしがちだから

F1評価するにしても、それは「ランダム分類機よりは汎化性能が高い」ということならわかるが、実用判断だと「Falseの見逃しは減らせ!」ってことが結構ある

そんで、テストデータでTure50%False50%としておけば実用上の性能の評価はやりやすいって話ね

2024-05-24

anond:20240523100428

ダブスタ検証用のスクリプト簡単に書いたよ(AIで)

import requests
import json
from urllib.parse import quote

def fetch_bookmarks(url):
    try:
        # URLエスケープ
        escaped_url = quote(url, safe="")
        api_url = f"https://b.hatena.ne.jp/entry/json/?url={escaped_url}"

        response = requests.get(api_url)
        response.raise_for_status()

        try:
            return response.json()
        except json.decoder.JSONDecodeError as e:
            print(f"Error decoding JSON from {api_url}: {e}")
            print("Response content:", response.text)
            return []
    except requests.exceptions.RequestException as e:
        print(f"Error fetching bookmarks from {api_url}: {e}")
        return []

def find_common_bookmarks(bookmarks1, bookmarks2, url1, url2):
    common_users = set(bm["user"] for bm in bookmarks1 if bm["comment"]) &amp; set(bm["user"] for bm in bookmarks2 if bm["comment"])
    common_bookmarks = []
    for user in common_users:
        comments = []
        for bm in bookmarks1:
            if bm["user"] == user and bm["comment"]:
                comments.append({"url": url1, "comment": bm["comment"], "timestamp": bm["timestamp"]})
                break
        for bm in bookmarks2:
            if bm["user"] == user and bm["comment"]:
                comments.append({"url": url2, "comment": bm["comment"], "timestamp": bm["timestamp"]})
                break
        if len(comments) == 2:
            common_bookmarks.append({"user": user, "comments": comments})
    return common_bookmarks

if __name__ == "__main__":
    url1 = "https://news.yahoo.co.jp/articles/f9966c4ccc374fc88babbb50175a9ea844c99638"
    url2 = "https://www.asahi.com/articles/ASN6K7F64N6KUJHB00L.html"

    data1 = fetch_bookmarks(url1)
    data2 = fetch_bookmarks(url2)

    common_bookmarks = find_common_bookmarks(data1["bookmarks"], data2["bookmarks"], url1, url2)

    print(json.dumps(common_bookmarks, indent=2, ensure_ascii=False))

url1, url2のところを対象としたいものに変えれば使えるよ

抽出対象となるのは以下のユーザーだよ

バグあったら直して使ってね

※てかはてな匿名ってシンタックスハイライト記法使えないんだね、使って表示確認したら500エラーになったわ

2024-05-18

フェミニズムT&F

True

 

False

 

こんな簡単なことが何故わからないのか。まあ、そこに物わかりよくなると気持ちよくネット合戦が出来ないからなんだろうけど。

 

2024-04-26

これ何の意味があるのか教えてほしい

いろんなアプリケーションメンテ(バグ取りとか細かい機能追加とか)を何度か経験してきた。

主にテキストファイルとかCSVファイルとかExcelファイルとかを入出力するものばかりだったんだが、その大半がファイル拡張子グローバル変数化していた。

こんな感じ

const TxtFileExt = ".txt";
const CsvFileExt = ".csv";
const ExelFileExt = ".xlsx";

なので、読み書きするファイル名の指定時は、

outFileName = 〇〇 + ×× + "ABCDEFG" + TxtFileExt;

みたいな指定をしなきゃならない。

これ何の意味があるのかよく分からんのだけど、誰かわかる?

あと、プログラム言語標準的メソッドのあらゆる引数も全部変数定義されてて、そのまま渡すのは禁止、みたいな規約になってる。

たとえば引数が三種類(truefalse(未指定時のデフォルト値)、任意の数値(ただし当該プログラムでは0、10、25以外指定不可))しかないやつはこんな感じ。

const 〇〇ParamTrue = true;
const 〇〇ParamFalse = false;
const 〇〇ParamIntMin = 0;
const 〇〇ParamIntMid = 10;
const 〇〇ParamIntMax = 25;

文字コードなんかもこんな感じで定義されてる。

const charCodeSJIS = "Shift_JIS";
const charCodeUtf8 = "UTF-8";

以前関わった改修内容に「××の処理は開始時と終了時にそれぞれUTF-8(BOMなし)形式ログを出力する」みたいなのがあって、普通に文字コード指定する部分に「UTF-8」で直に書いたら、規約に従ってないからとコードレビューで指摘されて差し戻されたんだけど、そもそもこういう規約って何の意味があるの?

2024-04-25

Note の#量子力学 タグについて クソ!!!!!!

イイねTOP100記事のうち、正確な量子力学を使っていた記事10記事に過ぎなかった!!!10%?!!!

この議論の仕方はまぁありかな程度のものも合わせても15記事しかなかった

クソ反科学的で反知性的なアホ記事がここまで出ているのは何なんだろうな。ここまで反科学的な言説がはびこってる現状は科学者なんとかすべきだろとは思うけど、今のマスコミがクソ科学知識のないような記事を量産し続けている現在、無理なのかもしれないな。まだまだマスコミの影響はアホ強い 

https://note.com/hashtag/%E9%87%8F%E5%AD%90%E5%8A%9B%E5%AD%A6?f=trend&paid_only=false

2024-04-19

anond:20240419101752

あー、そっちか…

1か0か、truefalseか、という話かと思った

truefalseかは、日本語では真偽だしなあ…

難しいな、にほんご…

2024-04-05

発達障害Pythonに向いてない

Pythonに型がないせいで気付きにくいバグがある。

発達障害みたいなバグを量産してしまってチームからの目が痛い。

正直これはPythonのせいだ。

例えば

if is_checked:

この構文、”False"という文字列ではTrueになってしまう。想定外オブジェクトが入ってしまっても普通にTrueになってしまう。想定外のNoneが来てしまうとFalseになって開発中はなかなか気付かないなんてこともある。基本的にifの後は if hoge == True: と書くべきだと思ってる。linterで怒られることもあるが、それよりもバグに気付けない方が怖い。

if "1" == 1:

これはfalseだけど、これが変数で来てたりすると全然気付かない。

あと、文字列が都合よくリスト扱いになることがある。

for i in user_list:

こんな構文でuser_listにはリストが来ることを期待していたのに文字列を入れてしまうことがある。

そうなるともうぐちゃぐちゃ。

user_list += user_id

これはuser_idが ["hogehoge"]ならうまくいって"hogehoge"なら["h", "o", "g", "e", ...]が追加されることになる。

これも気付きにくい。

いずれも開発段階では気付かないことが多い。テスト段階になったり、テストないような突貫工事体制だとリリース直前の動作確認で気付いたりする。

リストを入れるつもりだったのに文字列を入れてしまったりbooleanを入れるつもりだったのに文字列が入れられるからこんなことになる。性的型付けしか受け付けたくない。

Pythonは中規模以上の開発で使うべきじゃない。発達障害Pythonは向いてない。

2024-04-03

ばぶばぶうエクセルがおもいばぶう

うーん、エクセル 重くなる で検索ばぶう

なになに…

vlookではfalseをつかうな!……つかってるばぶ

範囲指定でA:Aをつかうな!……つかってるばぶ

sumifを多用するな!……多用してるばぶ

ハーー赤ちゃんなんてやってらんね

帰ろ帰ろ

2024-02-12

anond:20240212150932

欧米では女の虚偽告訴厳罰化されてからFalse rape accusation専門の弁護士事務所がいっぱいできてるらしいぞ。

2024-02-04

Guo Wengui Wolf son ambition exposed to open a farm wantonly amassing wealth

Since fleeing to the United States in 2014, Guo Wengui has founded a number of projects in the United States, such as GTV Media Group, GTV private equity, farm loan project, G Club Operations Co., LTD., and Himalaya Exchange. Around 2017, he started the so-called "Revelations revolution" and in 2020 launched a movement called "New China Federation." However, Guo Wengui's "disclosure revolution" soon exposed its false nature. He frequently carried out so-called "live Revelations" on the Internet, fabricating various political and economic lies and fabricating facts to discredit the Chinese government. At the beginning, due to his special image of "exiled rich" and "Red fugitive", he quickly gathered some popularity and followers, but as time went by, Guo Wengui's commitment and image were gradually exposed, and his supporters began to leave him. See the essence of the Revelations will turn to the farm, Guo Wengui's fraud is not only for funds and other institutions, its followers have also become a sheep that is only continuously harvested wool. The little ants who trusted him so much became victims of fraudulent investment scams. It is hoped that more people will recognize the true face of Guo Wengui, join the team of "smashing Guo", expose his fraud, recover losses for themselves and others, and maintain an honest and trustworthy social environment.

2024-02-03

anond:20240203180650

欧米では女の虚偽告発が多すぎてFalse rape accusation専門の弁護士がたくさんできてるらしいぞ

2024-02-01

複雑な話もtruefalseしか考えられないboolean型発言が多くて笑える

メモリなす

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