「暇空茜」名乗る自称ユーチューバーを書類送検 Colaboの名誉毀損容疑

若年女性を支援する一般社団法人「Colabo(コラボ)」に対して、自身のブログサイトで名誉を傷つけたとして、警視庁新宿署が名誉毀損の疑いで、「暇空茜」を名乗る自称ユーチューバー(41)を書類送検したことが16日、捜査関係者への取材で分かった。検察に刑事処分の判断を委ねる「相当処分」の意見を付けた…

Posted from: this blog via Microsoft Power Automate.

ロシア ナワリヌイ氏が死亡 プーチン政権批判の反体制派指導者 | NHK

ロシアでプーチン政権を批判する急先ぽうとして知られ、北極圏にある刑務所に収監されていた反体制派の指導者、アレクセイ・ナワリヌイ氏が死亡したと国営のロシア通信社が当局の情報として伝えました。 16日に死亡したとしていますが、詳しい原因などは明らかになっていません。

Posted from: this blog via Microsoft Power Automate.

【独自】一般社団法人「Colabo」の名誉を毀損か 自称ユーチューバーの41歳男性を書類送検 | TBS NEWS DIG

性暴力などの被害に遭った10代少女の支援を行う一般社団法人Colaboに対し、SNS上にうその書き込みをして名誉を毀損したとして、警視庁が自称ユーチューバーの男性を書類送検しました。書類送検されたのは、自称ユ…

Posted from: this blog via Microsoft Power Automate.

藤井聡太竜王と株式会社ポケモン代表取締役社長・石原恒和の対談

ポケモンバトルの最強を決める大会「ポケモン竜王戦2024」(主催・株式会社ポケモン、共催・読売新聞社、日本将棋連盟)が2月25日、将棋の竜王戦七番勝負の舞台でもある東京都渋谷区のセルリアンタワー能楽堂で開かれる。いずれも思考力を競う「マインドスポーツ」と位置づけられるゲームの将来などについて、ポケモン社…

Posted from: this blog via Microsoft Power Automate.

アニメイト、書籍『ネトゲ戦記』取り扱い中止 著者・暇空茜が理由説明「脅迫が届いたからだそうです」

サイトでは「お客様各位 平素よりアニメイトをご利用いただきまして、誠にありがとうございます。書籍 ネトゲ戦記につきまして、諸般の事情によりお取り扱いを中止致します。 何卒ご理解いただきますようお願いいたします。 株式会社アニメイト」と告知している。 具体的な理由は明らかにされていないが、著者・暇空…

Posted from: this blog via Microsoft Power Automate.

python WEBブラウザー

import tkinter as tk
from tkinter import ttk, messagebox
import webbrowser
import os

class WebBrowser(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("Web Browser")
        self.geometry("800x600")

        self.notebook = ttk.Notebook(self)
        self.notebook.pack(fill="both", expand=True)

        self.tabs = []

        self.add_new_tab()

    def add_new_tab(self):
        tab = ttk.Frame(self.notebook)
        self.notebook.add(tab, text="New Tab")

        url_entry = ttk.Entry(tab, width=70)
        url_entry.grid(row=0, column=1, padx=5, pady=5, sticky="ew")
        url_entry.bind("<Return>", lambda event: self.open_webpage(url_entry.get()))

        go_button = ttk.Button(tab, text="Go", command=lambda: self.open_webpage(url_entry.get()))
        go_button.grid(row=0, column=2, padx=5, pady=5)

        back_button = ttk.Button(tab, text="Back", command=lambda: self.back(tab))
        back_button.grid(row=0, column=0, padx=5, pady=5)

        forward_button = ttk.Button(tab, text="Forward", command=lambda: self.forward(tab))
        forward_button.grid(row=0, column=3, padx=5, pady=5)

        close_button = ttk.Button(tab, text="X", command=lambda: self.close_tab(tab))
        close_button.grid(row=0, column=4, padx=5, pady=5)

        progress_bar = ttk.Progressbar(tab, orient="horizontal", mode="indeterminate")
        progress_bar.grid(row=1, column=1, columnspan=2, sticky="ew")

        web_browser = ttk.Frame(tab)
        web_browser.grid(row=2, column=0, columnspan=5, padx=5, pady=5, sticky="nsew")

        self.tabs.append({
            "tab": tab,
            "url_entry": url_entry,
            "go_button": go_button,
            "back_button": back_button,
            "forward_button": forward_button,
            "close_button": close_button,
            "progress_bar": progress_bar,
            "web_browser": web_browser,
            "browser": webbrowser.get(),
            "current_page": None
        })

    def open_webpage(self, url):
        if not url.startswith("http://") and not url.startswith("https://"):
            url = "http://" + url

        tab = self.notebook.select()
        tab_index = self.notebook.index(tab)
        tab_info = self.tabs[tab_index]

        tab_info["browser"].open_new(url)
        tab_info["current_page"] = url

    def back(self, tab):
        tab_index = self.notebook.index(tab)
        tab_info = self.tabs[tab_index]
        tab_info["browser"].back()

    def forward(self, tab):
        tab_index = self.notebook.index(tab)
        tab_info = self.tabs[tab_index]
        tab_info["browser"].forward()

    def close_tab(self, tab):
        tab_index = self.notebook.index(tab)
        self.notebook.forget(tab_index)
        del self.tabs[tab_index]

if __name__ == "__main__":
    app = WebBrowser()
    app.mainloop()

書籍 ネトゲ戦記の商品お取り扱いにつきまして – アニメイト

2024.02.09 お知らせ <令和6年能登半島地震 義援金のご報告とお礼> 2024年1月に発生した能登地方を震源とする地震で被災された方々に対しまして、心よりお見舞い申し上げます。 アニメイト各店では、2024年1月10日(水)より、能登半島地震災害の被災者支援のための募金活動を開始いたしました。 皆様… 2024.01.19 …

Posted from: this blog via Microsoft Power Automate.

つぶやきアプリ「ELDER」

index.html

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ELDER</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <header>
        <h1>ELDER</h1>
    </header>

    <main>
        <section id="post-form">
            <h2>つぶやく</h2>
            <form id="tweet-form">
                <input type="text" id="user-name" placeholder="ユーザー名">
                <textarea id="tweet-content" placeholder="今何をつぶやく?" maxlength="280"></textarea>
                <div id="counter">0 / 280</div>
                <button type="submit">つぶやく</button>
            </form>
        </section>

        <section id="tweets">
            <h2>つぶやき</h2>
            <!-- つぶやきの表示領域 -->
        </section>
    </main>

    <footer>
        <p>© 2024 ELDER</p>
    </footer>

    <script src="script.js"></script>
</body>
</html>

styles.css

/* Reset CSS */
body, h1, h2, form, textarea, button, input {
    margin: 0;
    padding: 0;
}

body {
    font-family: Arial, sans-serif;
    line-height: 1.6;
    background-color: #f0f0f0;
}

header {
    background-color: #333;
    color: #fff;
    text-align: center;
    padding: 10px 0;
}

main {
    margin-top: 20px;
}

#post-form, #tweets {
    background-color: #fff;
    padding: 20px;
    margin-bottom: 20px;
    border-radius: 5px;
}

input[type="text"], textarea {
    width: 100%;
    padding: 10px;
    margin-bottom: 10px;
    border: 1px solid #ccc;
    border-radius: 3px;
    resize: vertical;
}

#counter {
    margin-bottom: 10px;
    color: #666;
}

button {
    padding: 10px 20px;
    background-color: #333;
    color: #fff;
    border: none;
    border-radius: 3px;
    cursor: pointer;
}

button:hover {
    background-color: #555;
}

.tweet {
    border-bottom: 1px solid #ccc;
    padding: 10px 0;
}

.tweet-content {
    margin-bottom: 5px;
}

.tweet-actions {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.like-button, .comment-button {
    background-color: transparent;
    border: none;
    color: #666;
    cursor: pointer;
}

.like-button:hover, .comment-button:hover {
    color: #333;
}

.comments {
    margin-top: 10px;
    padding: 10px;
    background-color: #f9f9f9;
    border-radius: 3px;
}

.comment-input {
    width: calc(100% - 80px);
    margin-bottom: 10px;
}

.comment-list {
    list-style: none;
    padding: 0;
}

.comment-item {
    border-bottom: 1px solid #ccc;
    padding: 5px 0;
}

.comment-author {
    font-weight: bold;
    margin-bottom: 5px;
}

.comment-content {
    margin-left: 20px;
}

script.js

document.addEventListener("DOMContentLoaded", function() {
    const tweetForm = document.getElementById("tweet-form");
    const userNameInput = document.getElementById("user-name");
    const tweetContent = document.getElementById("tweet-content");
    const tweetsSection = document.getElementById("tweets");
    const counter = document.getElementById("counter");

    // ローカルストレージからデータを取得
    let tweets = JSON.parse(localStorage.getItem("tweets")) || [];

    // ページ読み込み時に保存されたつぶやきを表示
    tweets.forEach(function(tweet) {
        displayTweet(tweet);
    });

    // つぶやきを投稿するイベントリスナー
    tweetForm.addEventListener("submit", function(event) {
        event.preventDefault(); // フォームのデフォルトの動作をキャンセル

        const content = tweetContent.value.trim();
        const userName = userNameInput.value.trim();
        if (userName === "") {
            alert("ユーザー名を入力してください!");
            return;
        }
        if (content === "") {
            alert("つぶやきを入力してください!");
            return;
        }

        if (content.length > 280) {
            alert("つぶやきは280文字以内で入力してください!");
            return;
        }

        // つぶやきを表示する
        displayTweet({userName: userName, content: content, likes: 0});

        // ローカルストレージにデータを保存
        tweets.push({userName: userName, content: content, likes: 0});
        localStorage.setItem("tweets", JSON.stringify(tweets));

        // フォームをクリアする
        tweetContent.value = "";
        userNameInput.value = "";
        counter.textContent = "0 / 280";
    });

    // 文字数カウンターの更新
    tweetContent.addEventListener("input", function() {
        const contentLength = tweetContent.value.length;
        counter.textContent = contentLength + " / 280";
    });

    // つぶやきを表示する関数
    function displayTweet(tweet) {
        const tweetDiv = document.createElement("div");
        tweetDiv.classList.add("tweet");

        const tweetContentDiv = document.createElement("div");
        tweetContentDiv.classList.add("tweet-content");
        tweetContentDiv.textContent = tweet.content;

        const tweetActionsDiv = document.createElement("div");
        tweetActionsDiv.classList.add("tweet-actions");

        const likeButton = document.createElement("button");
        likeButton.classList.add("like-button");
        likeButton.textContent = "いいね";
        likeButton.addEventListener("click", function() {
            tweet.likes++;
            localStorage.setItem("tweets", JSON.stringify(tweets));
            updateTweet(tweet, tweetDiv);
        });

        const commentButton = document.createElement("button");
        commentButton.classList.add("comment-button");
        commentButton.textContent = "コメント";

        tweetActionsDiv.appendChild(likeButton);
        tweetActionsDiv.appendChild(commentButton);

        tweetDiv.appendChild(tweetContentDiv);
        tweetDiv.appendChild(tweetActionsDiv);

        updateTweet(tweet, tweetDiv);

        tweetsSection.prepend(tweetDiv); // 新しいつぶやきを上に表示
    }

    // つぶやきの表示を更新する関数
    function updateTweet(tweet, tweetDiv) {
        tweetDiv.innerHTML = ""; // 既存の表示をクリア

        const tweetContentDiv = document.createElement("div");
        tweetContentDiv.classList.add("tweet-content");
        tweetContentDiv.textContent = `${tweet.userName}: ${tweet.content}`;

        const tweetActionsDiv = document.createElement("div");
        tweetActionsDiv.classList.add("tweet-actions");
        const likeButton = document.createElement("button");
        likeButton.classList.add("like-button");
        likeButton.textContent = `いいね (${tweet.likes})`;
        likeButton.addEventListener("click", function() {
            tweet.likes++;
            localStorage.setItem("tweets", JSON.stringify(tweets));
            updateTweet(tweet, tweetDiv);
        });

        const commentButton = document.createElement("button");
        commentButton.classList.add("comment-button");
        commentButton.textContent = "コメント";

        tweetActionsDiv.appendChild(likeButton);
        tweetActionsDiv.appendChild(commentButton);

        tweetDiv.appendChild(tweetContentDiv);
        tweetDiv.appendChild(tweetActionsDiv);
    }
});

http://tyosuke20xx.com/ELDER/index.html

「ここでしか手に入らない」と書かれていたのに…… 角川「くじ引き堂」への不満訴える投稿に注目集まる 運営元と弁護士の見解は

「ここでしか手に入らないオリジナルグッズ」と書かれていたのに――オンラインくじでゲームのグッズを購入後、同じグッズが海外で個別販売されたとして不満を訴える投稿に共感が集まっています。購入者やくじの運営元、弁護士に取材しました。 購入者が注意喚起を投稿したくじ引き堂の「コーヒートーク オンラインくじ」…

Posted from: this blog via Microsoft Power Automate.

天使の輪が死人を表す漫画的表現になっているのって変だな 人が死んでも天..

天使の輪が死人を表す漫画的表現になっているのって変だな 人が死んでも天使になるわけじゃない、キリスト教的世界観においても この表現を多用している一番有名な漫画はおそらくドラゴンボールだろう どこかで発想の飛躍があったのかな 気になるねえ、ぐぐりましょうねえ 天使に限らず聖人などを描いた絵画にも、聖人の…

Posted from: this blog via Microsoft Power Automate.