「join」を含む日記 RSS

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

2025-03-04

真希、何か買いたいものある?」

健司は妹の真希に尋ねながら、Targetのショッピングカートを押していた。アメリカ西海岸の明るい日差しが窓から差し込み、広々とした店内を照らしていた。

「うーん、お土産チョコレートとか買いたいかな。あと、日本じゃ手に入らないスナックとか」

真希は興味津々で商品棚を眺めていた。東京での日常から離れ、兄の暮らすアメリカを訪れるのは初めてだった。

「あっちのコーナーにお菓子が置いてあるよ。行ってみよう」

健司がカートを向け直したその時だった。

「Hey, Kenji! What's up, man?」

振り返ると、白人男性が妻と10歳くらいの息子を連れて近づいてきた。

「Oh, Mike! Good to see you here.」

健司は笑顔で応え、真希の方を見た。

「This is my sister, Maki. She's visiting from Tokyo.」

Nice to meet you! I'm Mike, I work with your brother. This is my wife Sarah and our son Tommy.」

真希はぎこちない笑顔で頭を下げながら応えた。

「Nice to meet you too...」

サラは親しげに微笑みながら真希に話しかけた。

「So, are you enjoying your time in America? Is this your first visit during school break?」

真希は一瞬混乱した表情を見せたが、何と答えるべきか迷っていた。健司が状況を察して助け舟を出そうとした時、トミーが口を挟んだ。

Mom, she looks like the anime characters I watch! But smaller!」

サラは息子の発言に顔を赤らめ、「Tommy!」と小声で叱った。

マイクは慌てて話題を変えようとした。

「So, um... what grade are you in? Middle school?」

真希困惑した表情で健司を見た。健司は軽く咳払いをして説明した。

「Actually, Maki is 26. She works for a marketing company in Tokyo.」

マイクとサラの顔から血の気が引いた。

「Oh my god, I'm so sorry! I didn't mean to... You just look so young!」

サラは慌てて謝った。マイクも頭を掻きながら申し訳なさそうな表情を浮かべた。

「Yeah, totally my bad. Japanese genes must be amazing for preserving youth!」

トミーはまだ状況を理解していないようで、無邪気に言った。

「But she's like, super tiny! Like a kid!」

「Tommy!」今度はマイクとサラが同時に息子を制した。二人の顔は真っ青になり、その場の空気は凍りついた。

真希は何と言っていいかからず、ただ微笑むしかなかった。健司は状況を和らげようと笑いながら言った。

It's okay, really. She gets that a lot, even in Japan. Actually, it's considered a compliment to look young in our culture.」

サラは安堵の表情を浮かべながらも、まだ恥ずかしそうだった。

Still, I should have asked properly. Would you like to join us for coffee sometime during your stay? I'd love to hear about Tokyo.」

真希は少し自信を取り戻し、つたない英語で答えた。

Yes, I would like that. Thank you.」

その後、二組は別れ際の挨拶を交わした。マイク一家が去った後、真希はため息をついた。

「私、そんなに子供に見える?」

健司は笑いながらショッピングカートを押し始めた。

「まあ、アメリカからすると日本人は全般的に小柄だからね」

「でも中学生って…」真希は複雑な表情で言った。

「気にするなって。向こうの方が恥ずかしがってたじゃないか。若く見られるのは悪いことじゃないよ」

トミー君の『子供みたい!』で、ご夫婦が真っ青になったのが面白かった」真希はくすくす笑った。

「あれは『うちの子人種差別的な発言をしてしまった』と思って焦ったんだよ。アメリカ人はそういうの敏感だからね」

「でも悪意はなかったよね。子供の正直な感想だっただけで」

「そうだね。でも、これがアメリカ日常だよ」

健司と真希お菓子コーナーに向かいながら、この予想外の出来事について話し合った。真希にとって、これもまたアメリカ旅行の思い出の一つとなるのだろう。

2025-02-26

ユーザー行動に基づくアイテム推薦システム圏論的定式化と実装戦略

以下の問題を徹底的に抽象数学を用いて定式化しなさい。また、具体的実装についても定式化しなさい。ただし、文献はarxiv等の信頼できる情報源のみを利用しなさい。

AI回答

本報告では、ユーザー集合Uとアイテム集合Iからなる推薦システムを、圏論行列代数統合的枠組みで再構築する。特にarXiv論文[2][7]で提案されたSheaf4Recアーキテクチャと、古典的マトリックス分解手法[3][8]を統合した新しい定式化を提案する。実装戦略としてApache Spark[4]を活用した分散処理を採用し、理論保証計算効率の両立を実現する。

圏論的定式化

1. 推薦システムの圏構造

圏RecSysを次のように定義する:

ユーザーu∈Uの行動履歴f(u)⊆Iは、圏論データモデル[7]において層(sheaf)構造表現される。具体的には:

2. スコア関数の層的表現

スコア関数g_j:2^I×I→ℝ^mは、層の断面(section)として定式化される:

g_j = \bigoplus_{i=1}^m \mathcal{F}_i \otimes \mathcal{G}_j

ここで$\mathcal{F}_i$はアイテムiの特徴層、$\mathcal{G}_j$はスコアタイプjの重み層[2]。

定理1(層的スコアの単調性):

任意のS⊆T⊆Iに対して、層的接続写像δ:F(S)→F(T)が存在し、次を満たす:

\forall j, \|g_j(S) - δ(g_j(T))\| ≤ L_j \cdot d_H(S,T)

ここでL_jはリプシッツ定数、d_Hはハミング距離[7]。

行列分解に基づく実装戦略

1. 分散マトリックス分解

ユーザー-アイテム行列R∈ℝ^{|U|×m}を以下のように分解[3]:

R ≈ UΣV^T \quad (U∈ℝ^{|U|×r}, Σ∈ℝ^{r×r}, V∈ℝ^{m×r})

Apache Spark[4]を活用した分散計算フレームワーク

from pyspark.mllib.recommendation import ALS

model = ALS.trainImplicit(
    ratings=interactions,
    rank=100,
    iterations=10,
    lambda_=0.01,
    blocks=200  # 分散処理用ブロック数
)
2. スコア関数の具体例

1. 協調フィルタリングスコア[3]:

   g_1(u,i) = U_u \cdot V_i^T

2. コンテキスト統合スコア[7]:

   g_2(u,i) = \text{SheafConv}(F(u), F(i); \Theta)

3. 時間減衰スコア[8]:

   g_3(u,i) = \sum_{t∈T_{ui}} e^{-λ(t-t_0)}
3. スコア結合の代数構造

結合関数h:ℝ^m×n→ℝ^mを次のモノイド構造定義

h(Y)_i = \bigoplus_{j=1}^n w_{ij} \otimes y_{ij}

ここで⊕はmax-pooling、⊗はアダマール積[2]。重み行列W=(w_{ij})は以下の最適化問題で決定:

\min_W \sum_{u∈U} \|R(u) - h(G(u))\|_F^2 + λ\|W\|_*

効率的な分散処理

1. Sparkベース実装アーキテクチャ[4]
val interactions = spark.read.parquet("hdfs://interactions")
val model = new ALS()
  .setRank(100)
  .setBlocks(200)
  .run(interactions)

val scores = model.userFeatures
  .join(itemFeatures)
  .map { case (u, (v_u, v_i)) => 
    (u, dotProduct(v_u, v_i)) 
  }
2. 計算量解析
手法時間計算空間計算
集中処理[3] O(m^3) O(m^2)
分散処理[4] O(m^2/p) O(m√p)
Sheaf4Rec[7] O(m log m) O(m)

ここでpは並列度、mはアイテム数[4][7]。

理論保証

1. 収束定理

定理2(行列分解の収束性):

ブロックSVDアルゴリズム[3]は、任意のε>0に対してO(log(1/ε))反復でε近似解を達成する。

証明の概略:

\|R - U^{(k)}Σ^{(k)}V^{(k)T}\|_F^2 ≤ (1 - 1/\text{cond}(R))^k \|R\|_F^2

ここでcond(R)は行列の条件数[3]。

2. 安定性解析

提案手法は以下のリプシッツ安定性を満たす:

\|h(Y) - h(Y')\| ≤ \sum_{j=1}^n L_j \|W_j\| \cdot \|y_j - y_j'\|

ここでL_jは各スコア関数のリプシッツ定数[7]。

結論

論文では、圏論構造分散行列分解を統合した新しい推薦システムフレームワーク提案した。Sheaf4Rec[7]の層構造Spark[4]の分散処理を組み合わせることで、精度と効率の両立を実現。今後の課題として、動的層構造適応更新量子化による計算効率改善が挙げられる。

Citations:

[1] https://arxiv.org/html/2407.13699v1

[2] https://arxiv.org/html/2304.09097v3

[3] https://www.cs.toronto.edu/~mvolkovs/sigir2015_svd.pdf

[4] https://ics.uci.edu/~cs237/projects2020/4_reports.pdf

[5] https://arxiv.org/abs/2502.10050

[6] https://arxiv.org/pdf/2109.08794.pdf

[7] https://arxiv.org/abs/2304.09097

[8] https://dspace.mit.edu/bitstream/handle/1721.1/99785/927438195-MIT.pdf?sequence=1

2025-02-17

2人目のエンジニアとしてプロジェクトJOIN したときにやること

はてぶで一年前にまとめてずっと下書きだった内容。これ名前出して書いたら揉めそうだと思ったのでずっと投稿してなかったが、増田で供養。


保身術メモ

バー燃え尽きるのは (略) 困っている人をうまく助けてやれないときに、燃え尽きるのである (p.264)

  • 具体的には、その人がいった内容だけをドキュメント化し、そのルールに従う
    • 難しい人であった場合は、平然とそのルールも破るので「以前こう聞きましたが、ドキュメント更新したいのでいつ、なぜそのようにしたのか」を聞き続ける
    • 相手はめんどくせーなという態度になるので、それを見逃さずに「私はそれがわからないので、教えてください」という態度を崩さな
    • 改善する場合もあるし、改善しない場合もある。改善しない場合は諦める

2025-02-14

GoogleマップタイムラインjsonKML

> アプリ内のデータバックアップしたのを自分ダウンロードしてテキスト化する方法いかなあ/できたわ。設定→位置タイムラインタイムラインエクスポートjson可能。あとは誰かが処理系を作るだけだ!

https://b.hatena.ne.jp/entry/4766225990155446401/comment/punychan

書く場所を思いつかなかったのでこちらに投下。Python

これを使えばXXXX-XX-XX.kml 形式で日付別のタイムラインデータを出力できる(ChatGPT製)。

KMLファイルGoogle Earth Proなどで開くことが可能で、ビジュアルとして行動履歴を見ることができる。

ただ、以前GoogleMapsタイムラインが吐いていたKMLではPlacemarkという項目に直接建物名などが書かれていたが、現在出力されているjsonではplaceIdというものに変更されていて具体的な名前がわからない。

placeIdを実際の建物名などに変換するにはGoogle Maps API の Place Details APIを使うしかないようだが、膨大なリクエスト(有料)をしなければならず非現実的

もともと欧州プライバシー関係規制のせいでGoogleサーバ上でのタイムライン履歴が行われなくなったのが今回の問題の起点。

ユーザー自由尊重するなら、個人が行動履歴自己管理する自由ももっと尊重してもらいたいものだな、と思った。


import json

import os

from xml.etree.ElementTree import Element, SubElement, tostring

from xml.dom.minidom import parseString

# JSONファイルの読み込み

with open("タイムライン.json", "r", encoding="utf-8") as f:

data = json.load(f)

# 出力フォルダ作成

output_folder = "kml_output"

os.makedirs(output_folder, exist_ok=True)

# `semanticSegments` に移動データが含まれている

if "semanticSegments" in data:

date_segments = {} # 日付ごとにデータをまとめる辞書

for segment in data["semanticSegments"]:

# `startTime` から日付部分(YYYY-MM-DD)を抽出

if "startTime" in segment:

date = segment["startTime"].split("T")[0]

# 日付ごとのリスト作成

if date not in date_segments:

date_segments[date] = []

date_segments[date].append(segment)

# 日付ごとにKMLファイル作成

for date, segments in date_segments.items():

kml = Element("kml", xmlns="http://www.opengis.net/kml/2.2")

document = SubElement(kml, "Document")

for segment in segments:

if "timelinePath" in segment:

for point in segment["timelinePath"]:

coords = point["point"].replace("°", "") # 度記号を削除

time = point.get("time", "Unknown Time")

# Placemarkを作成

placemark = SubElement(document, "Placemark")

# タイムスタンプ

timestamp = SubElement(placemark, "TimeStamp")

when = SubElement(timestamp, "when")

when.text = time

# 座標

point_element = SubElement(placemark, "Point")

coordinates = SubElement(point_element, "coordinates")

lat, lon = coords.split(", ")

coordinates.text = f"{lon},{lat},0" # KML形式: lon,lat,alt

# KMLデータフォーマット

kml_str = tostring(kml, encoding="utf-8")

formatted_kml = parseString(kml_str).toprettyxml(indent=" ")

# KMLファイルに保存

kml_filename = os.path.join(output_folder, f"{date}.kml")

with open(kml_filename, "w", encoding="utf-8") as f:

f.write(formatted_kml)

print(f"KMLファイルを出力しました: {kml_filename}")

2025-02-07

Best Dating App Opening Lines

Let’s face it: starting a conversation on a dating app can feel terrifying. You see someone you’re interested in, you type out a message, and then… you delete it. “Is this too boring?” “Will they even respond?” “What if I sound awkward?”

We’ve all been there. That first message can make or break your chances of connecting with someone amazing. But here’s the good news: you don’t have to overthink it. With the right opening line, you can spark a conversation that feels natural, fun, and meaningful.

At MixerDates, we believe that every great connection starts with a great conversation. That’s why we’ve put together this guide to help you craft the best dating app opening lines—ones that stand out, show your personality, and lead to real connections. Ready to ditch the “hey” and start making an impact? Let’s dive in!

[:contents]


Why Your First Message Matters

Before we get into the best opening lines, let’s talk about why your first message is so important.

1. First Impressions Count

Your opening line is your chance to make a great first impression. It’s the gateway to a conversation that could lead to something special. A thoughtful, creative message shows that you’re genuinely interested—not just swiping mindlessly.

2. It Sets the Tone

Your first message sets the tone for the entire conversation. A boring or generic opener might lead to a dull chat, while a fun or intriguing one can spark excitement and curiosity.

3. It Shows Effort

Let’s be real: everyone loves feeling special. When you put effort into your opening line, it shows that you care enough to stand out. And on MixerDates, where we value authenticity and positivity, that effort goes a long way.


The Best Dating App Opening Lines (And Why They Work)

Now, let’s get to the good stuff—the best dating app opening lines that actually work. These are divided into categories to suit different personalities and situations.

1. The Playful Opener

2. The Compliment Opener
  • Why It Works: Compliments make people feel good, especially when they’re specific and genuine.

3. The Question Opener

4. The Shared Interest Opener

5. The Bold Opener
  • Why It Works: Confidence is attractive, and this type of opener shows you’re not afraid to be bold.

6. The Quirky Opener
  • Example: “Quick: pineapple on pizza—yes or no? This could determine our compatibility.”
  • Why It Works: Quirky openers are memorable and show off your unique personality.


Tips for Crafting Your Own Opening Lines

While the examples above are great starting points, the best opening lines are the ones that feel authentic to you. Here are some tips to help you craft your own:

1. Personalize It

Reference something from their profile—a photo, a hobby, or a shared interest. It shows you’re paying attention and not just copying and pasting.

2. Keep It Light and Fun

Avoid heavy or overly serious topics right off the bat. Keep the tone light and playful to make the conversation enjoyable.

3. Be Yourself

Don’t try to be someone you’re not. If you’re naturally funny, lean into that. If you’re more thoughtful, go for a sincere compliment or question.

4. Avoid Clichés

“Hey” or “What’s up?” might be easy, but they’re also forgettable. Put in a little effort to stand out.

5. End with a Question

This gives the other person an easy way to respond and keeps the conversation flowing.


Why MixerDates is the Perfect Place to Practice Your Opening Lines

At MixerDates, we’re all about creating a positive, inclusive space where you can feel comfortable being yourself. Here’s why our platform is the best place to put these opening lines into practice:

1. A Welcoming Community

We welcome everyone, no matter who you are or who you love. Our platform is designed to be a safe space where you can connect with like-minded people.

2. Profiles That Spark Conversations

Our users create detailed profiles that make it easy to find shared interests and craft personalized opening lines.

3. A Focus on Authenticity

We encourage our community to be genuine and kind, so you can feel confident starting conversations without fear of judgment or rejection.

4. Success Stories

Don’t just take our word for ithere’s what one of our users had to say:

I met my partner on MixerDates, and it all started with a simple message about our shared love for travel. The conversation flowed naturally, and the rest is history. I’m so grateful for this platform!”


Key Elements to Finding a Mutual Connection

While a great opening line can spark a conversation, building a real connection takes more than just a clever message. Here are the key elements to look for when seeking a meaningful connection:

1. Shared Values and Goals

A strong connection starts with alignment on the things that matter most. Do you share similar values, life goals, or visions for the future?

2. Emotional Availability

Look for someone who is willing to share their thoughts, feelings, and vulnerabilities—and who encourages you to do the same.

3. Mutual Effort

Healthy relationships are a two-way street. Both people should be putting in effort to communicate, plan dates, and support each other.

4. Respect for Individuality

A true connection allows both people to be themselves without judgment. Look for someone who celebrates your uniqueness and encourages you to pursue your passions.

5. Open and Honest Communication

Communication is the foundation of any strong relationship. A mutual connection thrives on honesty, transparency, and the ability to resolve conflicts in a healthy way.


At MixerDates, we’re here to help you find these key elements in a partner. Our platform is designed to connect you with people who share your values and are looking for the same things you are. Starting a conversation on a dating app doesn’t have to be stressful. With the right opening line, you can spark a connection that feels natural, fun, and meaningful. And at MixerDates, we’re here to help you every step of the way.

So, what are you waiting for? Craft that perfect opening line, join MixerDates, and start connecting with people who value authenticity and positivity. Your perfect match is out there—and they’re just one message away.

2025-02-03

Emacs廃人ライフ

俺のEmacsライフは、もはやただのエディタを超えて、完全に生活のものだ。

日常のあらゆる側面がEmacs支配されていて、他のソフトウェアなんて目にも入らねぇ。

今日は、どれだけ俺がこの深淵世界に没頭しているか、そのレベルを見せてやるぜ。

1. 自作パッケージLispの力

俺の.emacs.dには、数十種類どころか、もう百を超える自作パッケージが眠ってる。

特に自分で書いたLisp関数は、日々のタスク自動化するために欠かせねぇ。

例えば、特定フォルダ内のMarkdownファイル自動HTMLに変換してブラウザで表示するスクリプトを組んじまった。

これでブログを書くたびに手間いらずで、「C-c C-v」でプレビューできる快感は、もう中毒だぜ。

サンプルLispコード
(defun my-markdown-to-html ()
  "MarkdownファイルHTMLに変換してブラウザで表示する関数"
  (interactive)
  (let ((markdown-file (read-file-name "Markdownファイル選択: ")))
    (shell-command (format "pandoc %s -o %s.html" markdown-file (file-name-sans-extension markdown-file)))
    (browse-url (concat (file-name-sans-extension markdown-file) ".html"))))

この関数を使えば、Markdownファイルを選んで一発でHTMLに変換し、そのままブラウザで表示できる。これがなきゃブログなんて書けないぜ。

2. Org-modeによる人生管理

Org-modeは俺の人生のものだ。TODOリストスケジュール管理だけじゃなくて、プロジェクト管理文書作成まで全てを一元化してる。

特にカスタムキャプションプロパティドロップダウンメニューを駆使して情報整理に命懸けてるんだ。

さらに、Org Babel使ってRやPythonコードを直接実行しながらデータ分析なんて日常茶飯事だ。この機能のおかげで、データサイエンスEmacs内で完結しちまうからたまんねぇよ。

3. キーバインドマクロ神業

俺のキーバインド設定は他者には理解不能レベルだ。

自分専用にカスタマイズしたショートカットが数百種類もあるんだぜ。

「M-p」で過去コミットメッセージを呼び出す機能なんか、Gitとの連携が一瞬でできるから開発効率が飛躍的に向上する。

さらに、Emacsにはマクロ機能があるから自分操作を記録して再生することもできる。

この前、自分専用のマクロを作って、特定フォーマットドキュメントを一瞬で整形することができた。

これで「お前は本当に人間なのか?」って言われてもおかしくないレベルだ。

4. Emacs Lispによる拡張

Emacs Lispを書くことが俺の日常になってる。この前、自分だけのコード補完システムを構築したばかりだ。

この機能のおかげで、特定キーワード入力すると関連するコードスニペットが自動的に提案される仕組みになってるからコーディング中に思考が途切れることなスムーズに進行するぜ。

コード補完システムサンプル
(defun my-auto-complete ()
  "カーソル位置に基づいてコードスニペットを提案する"
  (interactive)
  (let ((input (thing-at-point 'symbol)))
    (if input
        (let ((completion-list '("myFunction" "myVariable" "myClass")))
          (setq completion-list
                (cl-remove-if-not
                 (lambda (item) (string-prefix-p input item))
                 completion-list))
          (if completion-list
              (message "候補: %s" (string-join completion-list ", "))
            (message "候補なし")))
      (message "シンボルが見つかりません"))))

この関数ではカーソル位置からシンボルを取得し、それに基づいて候補を表示する。これがあればコーディング中も迷わず進められるぜ。

5. Emacsと共に生きるコミュニティ

Emacsユーザーとして活動している中で、多くの仲間と出会った。

彼らとの情報交換や共同開発は刺激的で、新しいアイデアが次々と生まれてくる。この循環こそが俺の成長につながっていると実感しているんだ。

最近では、自分が開発したパッケージGitHubで公開し、フィードバックを受け取ってさらなる改善点を見つけたりもしている。

このフィードバックループがあるからこそ、自分自身進化し続けられるんだ。

結論Emacsこそ俺の人生

今やEmacsは単なるツールじゃなくて、俺自身の一部になってる。

この深淵世界で探求し続けることで、新たな発見や挑戦が待っている。

これからEmacsユーザーとして、自分だけのユニーク環境を追求し続けていくつもりだぜ!

2025-01-19

AIがもうこんなにできるんだね

指定のサブフォルダ圧縮するだけなんだけど、

同じコードを数年前にExcelVBAでしこしこ作ってたのがなつかしい

function Zip-Subfolders {
    param(
        [string]$directory
    )

    # 指定されたディレクトリ内のサブフォルダを取得
    $subfolders = [System.IO.Directory]::GetDirectories($directory) | % { [System.IO.DirectoryInfo]::new($_) }

    foreach ($folder in $subfolders) {
        # 圧縮ファイルの保存先パス
        $zipFilename = "$($folder.Name).zip"
        $zipFilepath = Join-Path -Path $directory -ChildPath $zipFilename

        # サブフォルダZIP圧縮
        Write-Host "圧縮中..."
        [System.IO.Compression.ZipFile]::CreateFromDirectory($folder.FullName, $zipFilepath)
        Write-Host "$zipFilepath圧縮しました。"
    }
}

# ユーザーフォルダパス入力させる
$folderPath = Read-Host "圧縮する親フォルダパス入力してください"

# パス存在するか確認
if ([System.IO.Directory]::Exists($folderPath)) {
    Zip-Subfolders -directory $folderPath
}

2025-01-13

https://www.repository.cam.ac.uk/items/528f479f-fd3c-43fd-9463-7c2923560573

ある人の嗅覚倫理に関する論文だけど、文献だけで匂いが影響を与えると書いてるから女性学位を与えるのは無駄だと言われる。

論文書くなら、裁判官センサーを取り付けるなり、何人かの被験者ルールを守った上で反応を調べるとかやりようはあったはず。

アタリマエのことを調べるというのは裁判での証拠提出のときに役立つからもっと調べてほしい。

けど、統計学的手法を駆使するなどして、裁判官が9割型認める内容でないと価値がない。

contemporary relevance. I suggest that smell very often invokes identity in a way that signifies an individual’s worth and status in an inarguable manner that short-circuits conscious reflection. This can be accounted for by acknowledging olfaction’s strongly affective nature, which produces such strong bodily sensations and emotions that reflexivity is bypassed in favour of a behavioural or cognitive solution that assuages the intense feeling most immediately. Olfactory disgust, therefore, tends to result in rejection, while harmful forms of olfactory desire may result in sublimation or subjugation. My thesis is particularly attentive to tensions and ambivalences that complicate the typically bifurcated affective spectrum of olfactory experiences, drawing attention to (dis)pleasurable olfactory relations that have socio-political utility. I argue that literary fiction is not only an arena in which olfactory logics can be instantiated, but also a laboratory in which possibilities for new kinds of relations and connections can be fostered and tested. Chapter One explores how smell can be used to indicate class antipathies, partly as they relate to homelessness, beginning with George Orwell’s seminal non-fiction text, The Road to Wigan Pier (1936), before considering Iain Sinclair’s The Last London (2017) and Bong Joon Ho’s Parasite (2019). In Chapter Two I explore the fantastical, idealistic, and utopic thinking that surrounds olfaction, which presents smell as fundamentally non-human, by addressing J. M. Coetzee’s Disgrace (1999), Virginia Woolf’s Flush (1933), Rachel Yoder’s Nightbitch (2021), and Laura Jean McKay’s The Animals in That Country (2020). Chapter Three focuses on the intersectional olfactory dimensions of ‘misogynoir’—the coextensive anti-Black racism and misogyny that Black women experience—and considers Toni Morrison’s Tar Baby (1981), Bernice McFadden’s Sugar (2000) and Raven Leilani’s Luster (2020). In Chapter Four, I conceptualise an oppressive olfactory logic, which is used against women and girls in order to legitimise their harassment or abuse, drawing primarily on Vladimir Nabokov’s Lolita (1955), but also Patrick Süskind’s Perfume (1985). Chapter Five discusses two forms of olfactory desire—perversion and queerness—which have separate moral valences. I address J. M. Coetzee’s The Master of Petersburg (1994), Ann Quin’s Berg (1964), and Sam Byers’ Come Join Our Disease (2020), and argue for fiction’s role in reorienting readers’ habitual relations to olfaction.

Date

2024-06-25

あと、論文の要旨を読んだ限りだとまさに人文系のものなんだが、女性だとこれで通るのか?それとも、男女問わないのか?

2025-01-06

A leading sports betting site for online gaming fun.

https://vodds.com/sports/

Did You Know?

Fun fact: Over 50% of global sports fans have tried sports betting, and football tops the charts as the most wagered-on sport! At Vodds, we make football betting more exciting with real-time action through LiveBetting.

Why settle for average when you can experience online betting like never before? Whether it’s predicting the next goal or cheering for your favorite team, Vodds offers unbeatable odds and a seamless platform to keep you in the game.

Ready to take your online betting adventure to the next level? Join Vodds today and be part of the action!

2024-12-11

三大AIを使ってるかひと目で分かるSQL

  • RIGHT JOINを使っている

あと1つは?

2024-11-24

おっさんnobodyknows+ファーストテイクを見て泣く

数日前のこと、Youtube音楽を聞いていた。誰か特定歌手が目当てだったわけではない。

適当音楽動画を開いて聞き、曲が終わったら右の動画リンクに表示されている音楽動画クリックして聞く。そんなことを繰り返していた。

そうして十曲ぐらい聞いた後だったと思うが、気がつくとnobodyknowsの「ココロオドル」の公式MVを開いていた。

ENJOY 音楽は鳴り続ける  IT'S JOIN 届けたい 胸の鼓動 ココロオドル アンコール わかす Dance Dance Dance(READY GO!)

いつ聞いてもノリがよくて楽しい曲だ。そしていつ見てもnobodyknows より女達のほうが映っている時間の長いMV映像意味不明だ。

思えばこの曲との付き合いは長い。もう20年近く聞いている。ただ「ココロオドル」という曲は馴染みが深いがnobodyknowsというグループには特に思入れがない。

自分にとってこの曲はニコニコ動画の思い出と不可分に結びついているため、あまりnobodyknowsの曲であるという感覚がない。

いや、正直に言えば「ココロオドル」は好きだが、nobodyknowsは好きではなかった。

別に何かはっきりと嫌いになるような理由があったわけではない。自分は彼らのライブに行ったこともなく、人間性も知らない。

じゃあなぜ毛嫌いしていたか理由は単純で彼らがヤンキーだったからだ。といっても、彼らが本当に不良だったのかどうかは知らない。たぶん違うだろう。

彼らはヤンキーといっても、反社会的勢力とかではなくて、今でいうところのマイルドヤンキー若者版という感じだった。当時はマイルドヤンキーという言葉はなくて、こういう若者のことをB系と呼んでいた気がする。

nobodyknowsだけじゃなくて、当時のHIPHOP界隈はほぼ全員このB系だったと思う。はっきり言うと自分は彼らのことを嫌っていた。見下していた。自分人生とは関係がない人たちとみなして関わらないようにしていた。

自分ヤンキーいであることを差し引いて考えても、彼らはみんな同じような格好して、同じような歌詞ばかり書いて、同じようなツレと女と車の話ばかりしていて、HIPだHOPだと言ってるくせに、自分たちが一番型にはまっているのがダサいと思っていた。

まあ、それはともかく、「ココロオドルはいい曲である。Nobodyknowsにあまりいいイメージをもっていない自分がずっと好きなんだから、逆説的にそれだけ曲がすごいとも言える。

それで「ココロオドル」を聞きながら、何の気なしに動画コメント欄を見ると、やたらと「THE FIRST TAKE」に関するコメントが多いことに気づいた。

どうやらnobodyknows+が「THE FIRST TAKE」に出演したらしい。しかも、非常に評判がよい。THE FIRST TAKEを見て「感動した」だの「泣いた」だのそんなコメントであふれていた。

(知らない人のために説明すると「THE FIRST TAKE」というのはYoutubeチャンネルを持っている音楽番組のことだ。特徴としては一発撮りであるということ。つまり、歌の途中で間違ったり、発声いまいちだったりしても、リテイクはなしで、そのまま動画にして公開する。そういう番組であるもっとも、自分も星街すいせいが出演したときニュースになっていたな、ぐらいの知識しかないので、あまり偉そうなことはいえない)

自分にはそのコメント理解不能だった。ココロオドルはいい曲だが、彼らのTHE FIRST TAKEを見て何を泣くことがある。

画面右を見るとリコメンド動画の一番上に、その「THE FIRST TAKE ココロオドル」回の動画があった。だからせっかくだから見ておいてやるかぐらいの気持ちクリックした。

動画が始まると、画面中にゆるい恰好をしたおっさん達がぞろぞろと出てきた。このおっさん達が20年ほど歳を重ねたnobodyknowsだった。かつてのB系ボーイはおっさんになっていた。おっさん達はマイクテストをやり始めたが、声も20年分歳をとっていた。

これ大丈夫かな、とちょっと心配になったところで、もう何度聞いたかからないあの歌がアカペラで始まった。

ENJOY 音楽は鳴り続ける  IT'S JOIN 届けたい 胸の鼓動

そしてどうなったか

やばいくらい感動したね。

動画が終わるころには涙が流れてたもん。

なんなんだろうこの涙は。いい年したおっさんが、なにを泣くことがある(よく考えると自分おっさんになってたわ)。

いやあ、言葉ではうまく言い表せないが、信じられないぐらいかっこよかったね。

聞いてるうちに自分脳内で、20年分の日々がフラッシュバックを起こしていた。といってもあまりいい思い出はない。悪い思い出もあんまりない。とりたててどうこういうことのない20年だったが、とにかく自分フラッシュバックの海の中で泣いていた。

考えるとこれは少し不思議なことだ。というのも、自分は先ほど若いころの彼らが歌うココロオドルを聞いていたのだ。その時はこんなふうに歳月を思い泣くことはなかった。なんなら薄ら笑いを浮かべながら、ベビースター食ってたぐらいだ。

仮に若いころの彼らがファーストテイクに出ていたとしたら、自分特に何も思わなかっただろう。

中年となった彼らの歌うココロオドルからこそ、より強い喚起力を持っていた。彼らが超えてきた20年の歳月が歌といっしょに押し寄せてきたかのようだ。

ただのおっさんノスタルジーじゃねえかと言われると、否定はできない。

ただ、この良さはちょっと、そういうノスタルジーみたいなもんだけでは片づけられないと思うのだ。

そういう懐かしさとは別に、誰が見ても感動できるような、普遍的な良さがこの動画にはあると思う。

それは、つまり、かっこいい大人を見たことによる感動だ。

この動画のnobodyknowsは魅力的である。余裕があるというか色気がるというか、いい感じに丸くなっている。若いころのギラギラした感じがなくなっている。

それはある意味では、恐れ知らずの若者マイルドヤンキーになってしまったともいえるわけで、人によってはこれを老化・退廃とみるかもしれない。

だが、自分には好ましいものとして映った。昔に比べたら、当然、容姿は衰えているというか、年相応に老けているんだけど、逆に魅力が増していると感じた。

こんなふうに思ったのは自分だけではないようで、ファーストテイクのコメント欄を見ると若いと思われる人から、「大人もいいもんだと思った」とか「大人になっても面白いことはあると思えた」というコメントが多くついている。

それにしても、かっこいい大人を見たのなんていつ以来だ。ちょっと見ないぞ。少なくともここ10年は見ていない気がする。もっとかもしれん。

もちろん、彼らはシンガーとしての実力と経験があるからかっこいいわけで、普通おっさん普通に立っているだけでかっこいいわけではない。

よくよく考えてみれば、彼らも急に20年分年をとったわけじゃなくて、この20年歌ったり、仕事したりなんやかや喜怒哀楽を刻んできたわけだ。

客をわかせて、自分たちも楽しんで、そんなことを続けていたのだろうということが動画からも伝わってくる。まさに呼応する心響き続けるだ。

動画を見て、少し悔しいとも思った。

ヤンキーと見下していた彼らのほうが、はるかにかっこいい大人になっているじゃないか。それに比べて、自分はこの20年、何をやっていたんだ。

かっこいい大人になること。本当はそれはテメーが自分でやりたかたことじゃなかったか

動画を見ていてそういう悔しさも滲んできた。

ただ、勘違いしてほしくないが、動画を見て流した涙は別に悔し涙ではない。

純粋に感動の涙だ。

なんていうか、この動画のnobodyknowsって見ててすごく楽しそうなのよ。

素人が偉そうなこと言うようだが、音楽を楽しんでいる感じとでもいうのだろうか。

特に中盤、歌詞を間違えてから、みんなが笑顔になって、そこから一気にあげていくのが、本当にかっこいい。

元々のココロオドル自体が聞いていると楽しくなる曲ではあるのけど、彼らが心底楽しそうに歌っていると、なんの関係もない自分もなにか嬉しくなってくる。

自分は初めてココロオドルという曲が心で理解できたように思う。きっとそれには20年の月日が必要だったのだ。

20年前この曲を作ってくれた、nobodyknowsに感謝20年歌い続けてくれた彼らに感謝。そして20年後にかっこいい大人の姿を見せてくれたnobodyknowsにも感謝である

というわけで、かつて若者だった現おっさんや現おばさんはTHE FIRST TAKEココロオドル」を一度、見てほしい。いずれ、おっさんやおばさんになる現若い人にも見てほしい。もちろん、それ以外の年よりやガキも見て損はない。

みんなが自分と同じように感動するとは思わないけれど、少なくとも音に乗り泳ぎ続けることはできる。そういう名曲なのだ

2024-10-22

Guo Wengui: The end of fraud and the trial of justice

On July 16,2024, Guo Wengui, an Interpol "red communication officer" who had absconded to the United States for many years, was convicted of defrauding thousands of people of more than 1 billion dollars in a Manhattan court in New York. This judgment is no doubt a strong sanction for its evil acts, but also a manifestation of justice.

Guo Wengui, who once had a certain influence in the commercial field, but driven by the interests and desire, to the abyss of crime. He used to be the actual controller of Henan Yuda Investment Co., Ltd. and Beijing Pangu Investment Co., Ltd. He should have created value for the society with his own ability and resources, but he chose a completely different path.

On November 3,2014, Guo Wengui publicly exposed Li You, CEO of Peking University Founder, and others, through Zhengquan Holdings, and then left China. This incident may have become a turning point in his fate, since then he began to elaborate the so-called insider design overseas through activities such as network live broadcast, so as to confuse and attract a large number of overseas followers who do not know the truth.

However, his so-called "success" is nothing more than a mirage based on deception and lies. Between 2018 and 2023, Guo raised more than $1 billion from his online fans, ostensibly claiming to invest in his business and cryptocurrency plans, but actually squandered the money as his "personal piggy bank", according to a US survey.

He used a variety of fraud. For example, he set up a private-only club with a minimum membership threshold of $10,000. Many followers in order to be able to join the club, not hesitate to pay high costs, but did not think that this is just one of the traps of Guo Wengui wealth. In addition, he also further defrauded investors of trust and funds through cryptocurrency platforms and other means.

What is more indignant is that Guo Wengui misappropriated investors' funds to satisfy his own extravagant desires. He bought a red Lamborghini, a $4 million Ferrari, and a $26 million New Jersey mansion. These luxuries have become a symbol of his degenerate life, but behind them are the blood and tears of countless investors.

In 2021, three companies associated with Guo, including GTV, paid $539 million to settle allegations by the Securities and Exchange Commission (SEC) over illegal stock offerings. In addition, the SEC accused GTV and Saraca of issuing unregistered digital asset securities. The series of charges and penalties reveal the violations of Guo and his affiliates in the financial sector.

Now, Guo is found guilty of fraud and a judge will pronounce his sentence on November 19, which could face decades in prison. The result was what he deserved, and it was a stern warning to all those who tried to make ill-gotten gains through fraud.

Guo Wengui's case brings us a profound reflection. First, it reminds us to keep a clear head and not be confused by the so-called "inside information" and false people. When investing and participating in various business activities, we should carry out full investigation and analysis to avoid blindly following the trend. Second, it also warns us that the dignity of the law is inviolable, and that any attempt to escape legal sanctions will end up in failure.

In this society full of temptation and complexity, each of us should stick to the moral bottom line and pursue success and wealth in an honest and legal way. Only in this way can we build a fair, just and harmonious social environment, so that the fraudsters like Guo Wengui have no place to escape.

Justice may be late, but never absent. Guo Wengui's end once again proves this truth. Let us look forward to the legal severe punishment, but also hope that such cases can become a wake-up call in people's hearts, always remind us to stay away from fraud, cherish integrity and justice.

2024-10-12

清原ネットキャッシュ比率決算短信からpython自動で求めるソフト

気が付くと朝4時になっていた。

なんか動くところまで出来たので貼っておく。

NYSLなので、バグがあったら治しといて。

import pdfplumber
import re

#クリーンアップ
def cleanuptext(text):
    #決算書の合計値を太字にしたことpdfplumberが暴走するケースへの対処
    #例 流動資産 -> 流流流流流動動動動動資資資資資産産産産産
    #誤爆が怖いので、これが起きている時だけ補正します
    if "流流流流流動動動動動資資資資資産産産産産" in text:
        text = re.sub(r'(.)\1{4,}', r'\1', text)

    #△をマイナスに。 数字中のカンマを消して結合する
    text = re.sub(r'△([0-9])', r'-\1', text)
    text = re.sub(r'▲([0-9])', r'-\1', text)
    text = re.sub(r'([0-9]),([0-9])', r'\1\2', text)
    
    #たまに、煽り屋みたいに文字の後にスペースが入る嫌がらせ修正する
    #例: 投 資 有 価 証 券 -> 投資有価証券
    text = re.sub(r'(?<=[\u4E00-\u9FFF\u3040-\u30FF])\s(?=[\u4E00-\u9FFF\u3040-\u30FF])', '', text)

    return text

#今期の勘定科目数字を取得
def get_AccountName(text, need):
    pattern = rf'^{need} -?[0-9]+ (-?[0-9]+)'
    r = re.search(pattern, text, re.MULTILINE)
    if r is not None:
        return float(r[1])

    return 0

#清原ネットキャッシュ計算する。
def calc_KiyoharaNetCash(text):
    total_current_assets = get_AccountName(text,'流動資産合計')
    if total_current_assets == 0:
        #要約財政状態計算書しか公開していない、楽天のような素敵な会社様への対処
        total_assets = get_AccountName(text,'資産合計')
        if total_assets != 0:
            #とりあえず、資産の部の6割を流動資産とみなす
            total_current_assets = total_assets * 0.6

        else:
            #流動資産合計ではなく、流動資産という単語を使っている我が道を行く東北電力への対処
            total_current_assets = get_AccountName(text,'流動資産')
            if total_current_assets == 0:
                raise Exception("流動資産合計の勘定科目が見つかりませんでした。"+text)


    total_liabilities = get_AccountName(text,'負債合計')
    if total_liabilities == 0:

        #負債合計ではなく、負債の部合計に拘るオムロンの嬉しい決算書への対策。なんでや・・・
        total_liabilities = get_AccountName(text,'負債の部合計')
        if total_liabilities == 0:
            raise Exception("負債合計の勘定科目が見つかりませんでした。"+text)

    #負債をご丁寧にマイナス表記で書いてくれる中外製薬の親切な決算書への対策。いい加減にしろ・・・
    if total_liabilities < 0:
        total_liabilities = total_liabilities * -1

    #投資有価証券はないこともあるので、0を容認する
    marketable_securities = get_AccountName(text,'投資有価証券')

    #print(total_current_assets,marketable_securities,total_liabilities)
    netcash = total_current_assets + (marketable_securities*0.7) - total_liabilities

    #たまに単位を1000円にしている銘柄があるので補正する
    if is_tanni_senyen(text):
        netcash = netcash / 1000
    return netcash

# "流動資産合計" と "負債合計" の間に "単位:千円" があるかをチェック
def is_tanni_senyen(text):
    if "単位:千円" in text:
        return True

    if "単位: 千円" in text:
        return True

    if "単位 : 千円" in text:
        return True

    if "単位 :千円" in text:
        return True

    return False

def pdf_to_kiyohara_netcash(pdfpath):
    with pdfplumber.open(pdfpath) as pdf:
        text = ''.join(page.extract_text() for page in pdf.pages)

    text = cleanuptext(text)
    #print(text)
    kiyohara_netcash = calc_KiyoharaNetCash(text)
    #print(kiyohara_netcash)
    return kiyohara_netcash

def mymain():
    import sys
    args = sys.argv
    argc = len(args)
    if argc <= 1:
       print('''
これは、清原達郎氏のネットキャッシュ比率(以下、清原ネットキャッシュ比率)を決算短信pdfから求めるソフトです。
清原ネットキャッシュ=流動資産合計+(投資有価証券*0.7)-負債合計
清原ネットキャッシュ比率=清原ネットキャッシュ/時価総額*100

遊び方

1. 決算短信pdfから清原ネットキャッシュを求める
python calc_kiyohara_netcash.py 140120240514594985.pdf

結果: 30757.0
決算書には、100万円単位数字が書かれているはずなので、この数字単位は100万円です。
つまり、3075700万円。

2. 時価総額を億円単位で追加することで、清原ネットキャッシュ比率を求める
時価総額が146億円なら146と書いてください。
python calc_kiyohara_netcash.py 140120240514594985.pdf 146

結果: 210.66%

このコードNYSLライセンスです。無保証自己責任ですが、ご自由に。
かぶ探とかとつなげるといいかもね。
       ''')
       return
    if argc <= 2:
       kiyohara_netcash = pdf_to_kiyohara_netcash(args[1])
       print(kiyohara_netcash)
       return
    if argc <= 3:
       market_cap=float(args[2])*100 #億円から百万円表記に
       kiyohara_netcash = pdf_to_kiyohara_netcash(args[1])
       ratio = round(kiyohara_netcash/market_cap*100,2)
       print(f"{ratio}%")
       return

if __name__ == '__main__':
    mymain()

2024-09-22

AIインフルエンサーたちはChatGPTが世に出る前は何を投稿していたのか?(2/2)

AIインフルエンサーたちはChatGPTが世に出る前は何を投稿していたのか?(1/1)の続き

吉見拓哉|Takuya Yoshimi

このTwitterアカウントは、主にYouTubeSEO競馬アニメなどの話題について呟いており、自身活動や興味関心について発信しています

YouTubeプレミアムが500円増額。しかし、、、不可逆!!!

shimayuz@AIクリエイター

このアカウントは、日々の米国株暗号通貨市場動向、特にテクノロジー関連株やビットコイン価格変動についてツイートしています

ゼロコロナ政策再び。 $AAPL生産に影響が懸念され大きく下落。更に経済混乱が想定され、株価はSP500全業種で

一方で年末商戦売上堅調な滑り出しで $AMZN

暗号資産レンディングBlockFiが経営破綻暗号通貨も軒並み下落。

チャート上、なんとか踏み止まるか? 」

元木大介ᯅシステム生成AI Babel/Zoltraak & 生成AI塾

このアカウントは、AI特にプロマネAIや量子AIに関する話題や、仕事効率化、プログラミング、そして最新の技術トレンドについて呟いています

"プロマネAI実証実験を開始しました!量子AI×NotionによるプロマネAI実証実験を開始 https://prtimes.jp/main/html/rd/p/000000003.000082094.htmlvia @PRTIMES_JP"

sangmin.eth | Dify Ambassador

このアカウントは、主にOpenAIの最新言語モデルtext-davinci-003」の進化と、そのモデルを用いた英語学習ツールサービスについて呟いています特に英語学習におけるAI活用とその重要性を強調しています

"朝起きたら世界がまた変わっていた(笑)。@OpenAI が最新モデルtext-davinci-003」を発表。主な特徴は、①より明確で、説得力のある文章が書ける②より複雑な指示にも対応③より長い形式コンテンツが生成可 1月に"InstructGPT"が出た時も感動したけどそれを遥かに上回る進化、です。"

深津 貴之 / THE GUILD

このアカウントは、主にAI特に画像生成AIに関する話題を呟いています特にStable Diffusionのバージョンアップや使い方について多くのツイートをしています

結果

ここにリストアップした人たち以外もみましたが、分類すると3種類のアカウントがいて

1. ChatGPTブーム後にアカウントを始めた人

2. NFTなどの儲かりそうな技術を追いかけていた人

3. 日常ツイートをしていたが目覚めてしまった人

共通する特徴としては会社代表の人が多いです。

またIDを変更してログがヒットしない人は含まれていません(IDから特定できるけどそこまでやらなかった)

ツイートを取得するJS

javascript:(function() {

const text = Array.from(document.querySelectorAll('[data-testid="tweetText"]')).map(s => s.textContent.trim()).join('\n');

const textarea = document.createElement('textarea');

textarea.value = text;

document.body.appendChild(textarea);

textarea.select();

try {

document.execCommand('copy');

console.log('結果がクリップボードコピーされました!');

} catch (err) {

console.error('クリップボードへのコピーに失敗しました:', err);

}

document.body.removeChild(textarea);

})();

2024-09-13

ようやく終戦だね

JDヴァン

トランプロシア人ウクライナ人ヨーロッパ人と会い、こう言う。

おまえら平和的な解決策がどうあるべきかを話し合う必要がある」と。

そして、それはおそらく現在ロシアウクライナ境界線に近い形になるだろう。

それは非武装地帯のようになるだろう。

強力に要塞化され、ロシアが再び侵攻しないようにする。

ウクライナ独立した主権を維持し、ロシアウクライナから中立保証を受ける。

ウクライナNATOにも他の同盟機関にも加盟しない。

By: JD Vance

So I think it goes like this:

Trump sits down, says to the Russians, to the Ukrainians, to the Europeans, you guys need to figure out what a peaceful settlement looks like.

And it will probably look roughly the same as the current dividing line between Russia and Ukraine.

It will become like a demilitarized zone.

It will be strongly fortified so that the Russians do not invade again.

Ukraine retains its independent sovereignty.

Russia receives a guarantee of neutrality from Ukraine, it does not join NATO, it does not join any allied institutions.

2024-09-11

anond:20240910183149

そんな手作業でやらなくてよいぞ

これで思う存分やりなさい


(function() {

const data = [];

$$('span.hatena-star-inner-count').map(x => x.click());

$$('.js-bookmarks-recent .entry-comment-contents').map(content => {

const userName = content.getAttribute('data-user-name');

const comment = content.querySelector('.entry-comment-text')?.textContent;

const stars = [];

content.querySelectorAll('a.hatena-star-star').forEach(a => { stars.push(a.href.split('/')[3]); })

data.push([userName, comment, stars]);

});

data.sort((a,b) => b[2].length - a[2].length);

copy(data.map(d => `| ${d[0]} | ${d[1]} | ${d[2].join(',')} |`).join("\n"));

})();

2024-08-18

anond:20240817170832

自転車乗るのでStrava、あとレース観戦用のVPN

TrainerRoadは値上げしたのでやめた。後継はJoinあたりを検討してるけどスマートトレーナー調子が悪いので停滞中。

2024-08-09

Nagasaki, Israel, Ukraine



Once I had a quite cold attitude to Nagasaki’s Atomic Bomb Victims Memorial Peace Prayer Ceremony, I was likehere comes another Peace rally LMFAO”. But just look at this, the ambassador of Israel attacked Nagasaki’s mayor fiercely saying “The mayor took over the ceremony for his ideology”, a bigwig at the Simon Wiesenthal Center said “the Nagasaki’s atomic bomb ended World War 2” and now he’s criticizing the non-invitation of Israel’s rep to the ceremony asunethical”, and top of that, the ambassador of the US, the one who dropped the atomic bomb, is talking nonsense, saying “if Israel don’t join we also don’t join lol.” With hearing all these I’m so surprised of finding myself very much pissed off…are you all making light off victims of such a cruel weapon you sons of bitch?

If you want to beat up the mayor of Nagasaki, it's fine to criticize the Shinkansen project in Kyushu area, corruption, welfare arrangement, or other issues (*This is just an example of some topics, I'm not claiming that I’m actually frustrated by any of these). But don’t these morons know that the Nagasaki’s peace ceremony is essentially a memorial ceremony? No one is crazy enough to start screaming in memorial service about his relatives whom he doesn’t like. If someone was yelling, ”Why didn't you invite me to the memorial service!!”, Its clear in everyone’s mind saying, ”It's because you behave that way..” … If you claim yourself as a grown-up, “it was really a shame, lets talk it over and get things straight” should be your response. Does Gillard Cohen realize that he is making a personal attack on someone who in Western terms would be the director of the Auschwitz museum?

(as a side note, I am fed up also to the vulgar accusation by the Palestinian Ambassador when Hiroshima City invited the Israel rep to their ceremony. Please go ahead and be aggressive in UN conferences, but again is that a proper behavior in connection with the memorial ceremony?)

I haven’t say enough to the reaction of reps of Western countries to Nagasaki. Why don’t you think twice before reacting impulsively? No doubt Japan is one of the most pro-Western countries in Asia, they support Ukraine most earnestly among Non-NATO countries. Still even quiet and shy Japanese people is totally put off by military operations of Israel. It is too easy to imagine how Israel is hated in non-pro-Western countries. When will you have an imagination to realize your such attitude making many countries having distance from Ukraine. If western countries close their eyes to horrors in Gaza and be determined to defend Israel anyway, why aren’t others allowed to keep their relationship with Russia even after devastating scenes in Bucha?

(btw I was so impressed when Zelenskyy expressed his support to Israel, are you serious? Don't you think of a scenario where Ukrainian militias rise up in Donetsk or in Luhansk, resulting in heavy casualties among Russian settlers, leading to Russia denouncing this as a despicable terrorist attack targeting Russian civilians? That's exactly what's happening in Palestine.)

Anyway you morons should come to your senses, and admit Israel’s outrageous actions are no difference from that of Russia. And know that calling the criticism to Israel as “antisemitism” is making you look so smart. Refusing Neo-Nazism ain’t discrimination to Germans, doxing Zaitokukai (*a nationalist group which calls for an end to state welfare and alleged privileges afforded to Koreans in Japan) ain’t Japanese-hate, and impeachment against Zionists ain’t anti-Jewish either.

にほんご:https://anond.hatelabo.jp/20240808145754

anond:20240808145754

海外在住でも自称弱者男性の俺が無償英訳してやったぞ。乱暴な口調もできるだけ残しておいたんでGoogle翻訳にかけて粗を探すなり海外掲示板投稿するなりどうぞ

Nagasaki, Israel, Ukraine

Once I had a quite cold attitude to Nagasaki’s Atomic Bomb Victims Memorial Peace Prayer Ceremony, I was likehere comes another Peace rally LMFAO”. But just look at this, the ambassador of Israel attacked Nagasaki’s mayor fiercely saying “The mayor took over the ceremony for his ideology”, a bigwig at the Simon Wiesenthal Center said “the Nagasaki’s atomic bomb ended World War 2” and now he’s criticizing the non-invitation of Israel’s rep to the ceremony asunethical”, and top of that, the ambassador of the US, the one who dropped the atomic bomb, is talking nonsense, saying “if Israel don’t join we also don’t join lol.” With hearing all these I’m so surprised of finding myself very much pissed off…are you all making light off victims of such a cruel weapon you sons of bitch?

If you want to beat up the mayor of Nagasaki, it's fine to criticize the Shinkansen project in Kyushu area, corruption, welfare arrangement, or other issues (*This is just an example of some topics, I'm not claiming that I’m actually frustrated by any of these). But don’t these morons know that the Nagasaki’s peace ceremony is essentially a memorial ceremony? No one is crazy enough to start screaming in memorial service about his relatives whom he doesn’t like. If someone was yelling, ”Why didn't you invite me to the memorial service!!”, Its clear in everyone’s mind saying, ”It's because you behave that way..” … If you claim yourself as a grown-up, “it was really a shame, lets talk it over and get things straight” should be your response. Does Gillard Cohen realize that he is making a personal attack on someone who in Western terms would be the director of the Auschwitz museum?

(as a side note, I am fed up also to the vulgar accusation by the Palestinian Ambassador when Hiroshima City invited the Israel rep to their ceremony. Please go ahead and be aggressive in UN conferences, but again is that a proper behavior in connection with the memorial ceremony?)

I haven’t say enough to the reaction of reps of Western countries to Nagasaki. Why don’t you think twice before reacting impulsively? No doubt Japan is one of the most pro-Western countries in Asia, they support Ukraine most earnestly among Non-NATO countries. Still even quiet and shy Japanese people is totally put off by military operations of Israel. It is too easy to imagine how Israel is hated in non-pro-Western countries. When will you have an imagination to realize your such attitude making many countries having distance from Ukraine. If western countries close their eyes to horrors in Gaza and be determined to defend Israel anyway, why aren’t others allowed to keep their relationship with Russia even after devastating scenes in Bucha?

(btw I was so impressed when Zelenskyy expressed his support to Israel, are you serious? Don't you think of a scenario where Ukrainian militias rise up in Donetsk or in Luhansk, resulting in heavy casualties among Russian settlers, leading to Russia denouncing this as a despicable terrorist attack targeting Russian civilians? That's exactly what's happening in Palestine.)

Anyway you morons should come to your senses, and admit Israel’s outrageous actions are no difference from that of Russia. And know that calling the criticism to Israel as “antisemitism” is making you look so smart. Refusing Neo-Nazism ain’t discrimination to Germans, doxing Zaitokukai (*a nationalist group which calls for an end to state welfare and alleged privileges afforded to Koreans in Japan) ain’t Japanese-hate, and impeachment against Zionists ain’t anti-Jewish either.

2024-08-02

格ゲープレイヤーモラル天元突破する

賞金総額93億円のEsports World CupEWC)が7/3からサウジアラビアで開催中。

これまで半年ほどかけて出場権をかけた大会が開催され、

今、最後の出場権をかけた最終予選(Last Chance Qualifier:LCQ)がサウジアラビアで行われている。

 

8/2の0時からストリートファイター6のLCQが行われているが、ここでのモラル問題になっている。

ストリートファイター6のLCQには149人がエントリーしていたが50名近い人間がDisqualified(DQ)になっている。

Disqualifiedはスポーツ大会用語では様々な規定違反での「失格」という意味で使われているが、

e-sports界隈では「ドタキャン」の意味でつかわれることが多い。

簡単に言ってしまえば、エントリーはしたが当日会場に来ていなかったので「失格」になったということ。

 

LCQはトーナメント方式となっており、当然だが「全員参加する前提」で試合が組まれている。

3分の1近い参加者DQになったことにより、初日は一試合もせずに通過してしまうような参加者も出ており、

大会公平性に多大な問題が発生している。

 

既に本戦出場を決めているプロゲーマーのOil King選手

Join for the EWC LCQ this time is free, and then I saw that many "well-known" good players were not shown up(DQ).I am really tired of this kind of thing. If you know very early that you can't participate , why not tell the organizer, this makes the bracket very unfair, I hate it

(今回のEWC LCQは無料で参加できるのに、「有名な」上手いプレイヤーがたくさん出てこないのを見て(DQ)、こういうのは本当にうんざりです。参加できないことがかなり早い段階でわかっている場合は、主催者に伝えてみてはいかがでしょうか。これではブラケットが非常に不公平になります。私はそれが嫌いです。)

出ないのがわかってるんなら早く主催に伝えろ。大会不公平になる。

警鐘を鳴らしている。

 

現状、ほとんどの大会大会参加費は無料となっており、誰でもエントリーできるようになっており

また、DQになっても何のペナルティもない。

これはまだ格闘ゲームで安定して大きな金を稼げる人間が多くないことや

新規参入者を阻まないための精神の面も大きいとされている。

なのに多くの"国外"大会で「とりあえずエントリーしておいて当日に参加しない」という行為が横行している。

国外大会に参加するには参加費以外に多大な費用が発生する。

勝てなければ丸々赤字になる。なので大会直前に「やっぱ自信ないからやーめたw」となるのだろう。

だが、こういうことが増えれば参加費の徴収DQした場合ペナルティが課される可能性は非常に高くなる。

こうなると既にファンスポンサーがついていて湯水のごとく金が使えるおじさんはともかく、

新規若者の参加はどんどん困難になっていく。

 

今回のLCQのDQには日本プロ選手も少なくない数含まれていた。

中にはLCQが行われている時間に自宅で他ゲー配信して遊んでいたプロまでいる。

こういう何千万がかかった試合の最終予選ですら「行けたら行くわw」の精神でやってるのを見ると

e-sportsが「たかゲームじゃんw」と言われるのもやむなしだなと思ってしまう。

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&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 => {
            child.style.backgroundColor = 'white';
            child.style.color = 'white';
            child.style.textShadow = 'none';
        });

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

    function shouldMute(text) {
        return muteWords.some(word => {
            const parts = word.split('');
            const regex = new RegExp(parts.map(char => `${char}\\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 && node.parentElement) {
                processElement(node.parentElement);
            }
        }
    }

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

    // 初回実行
    processAllElements();

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

    // DOM変更の監視
    const observer = new MutationObserver(mutations => {
        mutations.forEach(mutation => {
            if (mutation.type === 'childList') {
                mutation.addedNodes.forEach(node => {
                    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-06-24

elasticsearchをデータストアとして使うのをやめろ

なんで巷のアホ達はelasticsearchをRDBの上位バージョンだと思ってしまうのか。

ただのjson突っ込める検索エンジンなのに。

elasticsearchへ大切なデータを入れるな。トランザクションは大切だからRDBに入れろ。

elasticsearchで積極的joinを使うな。joinRDBでやれ

elasticsearchをデータマスターとして更新かけるな。RDB管理して必要に応じてelasticsearchへ更新をかけろ

大切なデータRDBに入れて、複雑な検索だけelasticsearchへ投げろ

ただの検索エンジンとして使え

2024-02-16

A

🎮 Want to learn about Cloud Architectures by playing a game?

AWS has newly launched "AWS Card Clash" - a 3D virtual card game that helps learners gain knowledge of cloud architectures and solution design.

You can choose one of three provided paths - Cloud Practitioner, Solutions Architect and Serverless Developer to get started with your cloud learning journey.

Challenge others in this strategic turn-based game to create the most optimal architecture design and win points.

Along with the architecture diagrams, understand how different services interact with each other in the solution.

🔗 Check out AWS Card Clash here : https://lnkd.in/g2hU5p8R

--

📥 Join my community of 8,000+ cloud learners by subscribing to the Cloudbites newsletter: https://www.cloudbites.ai/

♻️ Found this helpful? Feel free to repost & share with your network.

#cloud #cloudcomputing #aws #cardclash

Activate to view larger image,

Image preview

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