「click」を含む日記 RSS

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

2025-09-27

anond:20250927213945

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Lock It Fill It Curl It Find It View It Code It Jam Unlock It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format it

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase it

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Lock It Fill It Curl It Find It View It Code It Jam Unlock It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

Technologic Technologic

Technologic Technologic

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Lock It Fill It Curl It Find It View It Code It Jam Unlock It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

__________________________

Touch It Scroll It Pose It Click It Cross It Crack It Twitch Update It

__________________________

Lock It Fill It Curl It Find It View It Code It Jam Unlock It

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Lock It Fill It Curl It Find It View It Code It Jam Unlock It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

Technologic Technologic

Technologic Technologic

Technologic Technologic

Technologic Technologic

2025-08-22

dorawii@執筆依頼募集中

昨日一番肝心なファイルなのにURLとみなされる部分が多いことの関係投稿できなかったのでそれを小分けにして書く。

小分けというか例のスパムの影響でNGワードに引っかかっていたようなのでそこだけ書き換えた。

suuportと書いていある部分は元のコードでは当然uが一つ少ないので利用するときはそうすること。

hatena_client.py

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager # ← 追加
from selenium.webdriver.common.by import By
from selenium.webdriver.suupport.ui import WebDriverWait
from selenium.webdriver.suupport import expected_conditions as EC
import time, json
from selenium.common.exceptions import TimeoutException

class HatenaClient:
def __init__(self, username, password):
self.username = username
self.password = password
self.driver = None

def start_browser(self):
options = Options()
options.set_capability("goog:loggingPrefs", {"browser": "ALL"})
options.add_argument("--headless=new") # 開発中は消してよい
options.add_argument("--disable-gpu")

# ✅ webdriver-manager を使って ChromeDriver を自動取得・設定
service = Service(ChromeDriverManager().install())
self.driver = webdriver.Chrome(service=service, options=options)


def login(self):
self.driver.get("https://b.hatena.ne.jp/my")
print(self.driver.current_url)

self.driver.get("https://www.hatena.ne.jp/login")
time.sleep(2)
self.driver.find_element(By.NAME, "username").send_keys(self.username)
self.driver.find_element(By.NAME, "password").send_keys(self.password)
self.driver.find_element(By.XPATH, "//button[contains(text(), 'ログイン')]").click()
WebDriverWait(self.driver, 10).until(lambda d: "my" in d.current_url or "login" not in d.current_url)
if "passkeys" in self.driver.current_url:
self.driver.get("https://b.hatena.ne.jp/my")

print(self.driver.current_url)
print(self.driver.title)
return "dorawii" in self.driver.current_url

def add_bookmark(self, target_url):
self.driver.get(f"https://b.hatena.ne.jp/{self.username}/add.confirm?url={target_url}")
time.sleep(2)

try:
# コメントがあれば入力
comment_box = self.driver.find_element(By.CSS_SELECTOR, "textarea.bookmarkadd-comment-form")
comment_box.clear()
comment_box.send_keys("わしが書いた")

# 登録ボタンを押す
save_button = self.driver.find_element(By.CSS_SELECTOR, "input.bookmarkadd-submit-btn")
save_button.click()
time.sleep(2)

return True
except Exception as e:
print(f"Bookmark failed: {e}")
return False

def quit(self):
self.driver.quit()

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

https://anond.hatelabo.jp/20250822131958#
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaKfv9AAKCRBwMdsubs4+
SE26AQCkpJE4RdUbFIDIJjOunjFYRQ34zdS1cqV7IX277S7IPAEAshVE/rD8Ggcr
9UKo5yOY6GNrHGYJJtYTYkn3cySu6AA=
=E4vq
-----END PGP SIGNATURE-----

2025-08-14

anond:20250814103213

めもめも

(function() {
  const data = [];
  const unko = {};
  $$('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]);
    stars.forEach(star => {
      unko[star] = (unko[star] || 0) + 1;
    });
  });
  data.sort((a,b) => b[2].length - a[2].length);
  console.info('---------- 生データ(被スター数 降順) ----------');
  console.info(JSON.stringify(data));
  console.info('---------- スター数(スターした数 降順) ----------');
  console.info(JSON.stringify(Object.entries(unko).sort((a,b) => b[1] - a[1])));
})();

2025-08-11

注意喚起こちらは詐欺サイト・・と思われる

コーヒーラインダーを検索してたら、お目当ての商品(今年出たばっかりの大分マニアックなやつ)がamazonの半額以下で売ってるECサイトを見つけた。

見ると日用雑貨ECサイトで、本社高知。品ぞろえは充実しているが、聞いたこと無いサイト名だった。

ttps://modanicesk.click/

クリック自己責任で。


昔はやったドロップシッピング的なアレだろうと思った。ただいちおう店の評判を検索して置こうと思ったのだけどサイト名では全く引っかからない。


次に「会社名」で検索すると、全く同じ会社名、同じ設立年月日の別サイトがひっかかった。本社神奈川県

こいつは怪しい、と思い、そういう目で見始めると次々に怪しい点が

注文するには会員になる必要があり、そこでメアド含めた個人情報取得される。下手すればパスワード使って乗っ取りが発動すると。そういうことね。

そうかそうか。みんなこうやって引っかかっていくんだ・・・と妙に関心。

サイト自体日本語特に怪しいところはない。検索動作が変だったり、エラーメッセージ日本語意味を成していない、等々あるけど、カンボジア拉致された日本人が日々修正しているのかしらね


下記の特徴あれば気をつけてほしい。


2025-07-14

しゃーない、ワイがかわりに英文スパム投稿してやるやで

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Lock It Fill It Curl It Find It View It Code It Jam Unlock It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format it

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase it

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Lock It Fill It Curl It Find It View It Code It Jam Unlock It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

Technologic Technologic

Technologic Technologic

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Lock It Fill It Curl It Find It View It Code It Jam Unlock It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

__________________________

Touch It Scroll It Pose It Click It Cross It Crack It Twitch Update It

__________________________

Lock It Fill It Curl It Find It View It Code It Jam Unlock It

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Lock It Fill It Curl It Find It View It Code It Jam Unlock It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

Technologic Technologic

Technologic Technologic

Technologic Technologic

Technologic Technologic

2025-07-08

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Lock It Fill It Curl It Find It View It Code It Jam Unlock It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format it

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase it

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Lock It Fill It Curl It Find It View It Code It Jam Unlock It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

Technologic Technologic

Technologic Technologic

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Lock It Fill It Curl It Find It View It Code It Jam Unlock It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

__________________________

Touch It Scroll It Pose It Click It Cross It Crack It Twitch Update It

__________________________

Lock It Fill It Curl It Find It View It Code It Jam Unlock It

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Buy It Use It Break It Fix It Trash It Change It Mail Upgrade It

Charge It Point It Zoom It Press It Snap It Work It Quick Erase It

Write It Cut It Paste It Save It Load It Check It Quick Rewrite It

Plug It Play It Burn It Rip It Drag And Drop It Zip Unzip It

Lock It Fill It Curl It Find It View It Code It Jam Unlock It

Surf It Scroll It Pose It Click It Cross It Crack It Twitch Update It

Name It Read It Tune It Print It Scan It Send It Fax Rename It

Touch It Bring It Pay It Watch It Turn It Leave It Stop Format It

Technologic Technologic

Technologic Technologic

Technologic Technologic

Technologic Technologic

2025-06-09

dorawii

ようやく(ほぼ)すべてが自動化された。

あとはローカルサーバーの起動をスタートアップに設定する(方法AIに聞いて指示に従う)だけの消化試合

ここにほとんどAI頼りのコードを公開しておく。

事前にインストールしておくもの

autohotkey

nodejs

ユーザースクリプトを実行できる拡張機能

パスとかの注意

署名要求してくるパスワードを自動入力するahkファイルドキュメントAutoHotkey配下に置いた。

バッチファイル(make.sign.bat)はデスクトップに置いた。

以下コード

autopass.ahk
#Persistent
#SingleInstance ignore
SetTitleMatchMode, 2
WinWaitActive, pinentry
SendInput お前のパスワード
Sleep 100
SendInput {Enter}
ExitApp
run-bacth-server.js
// run-batch-server.js
const http = require('http');
const { exec } = require('child_process');

const server = http.createServer((req, res) => {
  if (req.url === '/ping') {
    res.writeHead(200);
    res.end('pong');
  } else if (req.url === '/run-batch') {
    exec('C:\\Users\\you\\Desktop\\makesign.bat', (err) => {
      res.writeHead(200);
      res.end(err ? 'Error' : 'OK');
    })
    ;
  } else {
    res.writeHead(404);
    res.end('Not found');
  }
});

server.listen(12345, () => {
  console.log('Batch server running at http://localhost:12345/');
});
makesign.bat
@echo off
setlocal enabledelayedexpansion

:: ミリ秒単位UTC時刻を取得
for /f %%a in ('powershell -nologo -command "[int64]::Parse((Get-Date).ToUniversalTime().ToString('yyyyMMddHHmmssfff'))"') do set timestamp=%%a

:: 署名するファイルset infile=%TEMP%\pgp_input.txt
set outfile=%TEMP%\pgp_output.asc

:: 以前の出力があれば削除
if exist "%outfile%" del "%outfile%"

:: タイムスタンプを原文として保存
echo %timestamp% > "%infile%"

:signloop
:: AutoHotkeyパスフレーズ入力(gpgがパスワード要求するダイアログが出た場合に備える)
start "" /b "C:\Users\infini\Documents\AutoHotkey\autopass.ahk"

:: PGPクリア署名作成
gpg --yes --clearsign --output "%outfile%" "%infile%"


:: 署名成功していればループを抜ける
if exist "%outfile%" (
    echo [INFO] 署名成功
    goto postprocess
) else (
    echo [WARN] 署名失敗、再試行します…
    timeout /t 1 > nul
    goto signloop
)
:postprocess

:: PowerShellで余計な改行なしに |< をつけてクリップボードコピー
powershell -nologo -command ^
  "$header = '>|'; $footer = '|<'; $body = Get-Content '%outfile%' -Raw; Set-Clipboard -Value ($header + \"`r`n\" + $body + $footer)"

echo Done. signed.asc created and clipboard updated (no extra blank line).
endlocal
exit /b
tempermonkeyとかに登録するユーザースクリプト
// ==UserScript==
// @name         PGP署名自動付加スクリプト(GM_xmlhttpRequest版)
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  投稿前にPGP署名を付けてから送信(fetch未使用)
// @match        https://anond.hatelabo.jp/dorawii_31/edit*
// @grant        GM_xmlhttpRequest
// @grant        GM_setClipboard
// @grant        GM_notification
// / @connect      localhost
// ==/UserScript==

(function () {
  'use strict';

  const submitId = 'submit-button';
  const textareaId = 'text-body';
  const localServer = 'http://localhost:12345/run-batch';

  const pgpSignatureRegex = /-----BEGIN PGP SIGNED MESSAGE-----[\s\S]+?-----BEGIN PGP SIGNATURE-----[\s\S]+?-----END PGP SIGNATURE-----/;

  const httpRequest = (url) => {
    return new Promise((resolve, reject) => {
      GM_xmlhttpRequest({
        method: 'GET',
        url: url,
        onload: function (response) {
          resolve(response.responseText);
        },
        onerror: function (error) {
          reject(error);
        }
      });
    });
  };

  const interceptClick = () => {
    const btn = document.getElementById(submitId);
    if (!btn || btn.dataset.pgpIntercepted === 'true') return;
    btn.dataset.pgpIntercepted = 'true';

    btn.addEventListener('click', async function (e) {
      const textarea = document.getElementById(textareaId);
      if (!textarea) return;

      const content = textarea.value;

      if (pgpSignatureRegex.test(content)) {
        console.log('[PGPスクリプト] 署名が検出されたためそのまま送信します');
        return;
      }

      e.preventDefault();
      e.stopImmediatePropagation();
      console.log('[PGPスクリプト] 署名が見つからないため処理を停止し、署名を取得します');

      try {
        await httpRequest(localServer); // バッチ実行

        const signatureText = await navigator.clipboard.readText();
        if (!signatureText.includes('BEGIN PGP SIGNED MESSAGE')) {
          alert('PGP署名クリップボードに見つかりませんでした。');
          return;
        }

        const newText = content.replace(/\s*$/, '') + '\n' + signatureText + '\n';
        textarea.value = newText;

        console.log('[PGPスクリプト] 署名を貼り付けました。送信を再開します。');
        btn.click(); // イベント再発火

      } catch (err) {
        alert('PGP署名の取得または貼り付けに失敗しました。\n' + err);
      }
    }, true);
  };

  window.addEventListener('load', () => {
    setTimeout(interceptClick, 1000);
  });
})();

プロミスメソッドとか全然まだ理解してなくてそのなかに関数代入したその関数オブジェクトプロパティresponseを?いやまあそのあたりのコードが示すデータの流れが全然理解できないような人間でもここまでできちゃった。

AIすごいなと思うよ。そして思うのは今後重要になってくるのは文法とか自体に詳しいことじゃなくて、そのプログラムの処理内容を指示できるシステムエンジニア的な言語化能力のほうじゃないかなと思った。

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

20250609111559680 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaEbCbwAKCRBwMdsubs4+
SLueAPwOv7PBk4voAe5qlcCEvs/PJhmKc5QAb/1R43JMQFuDZgD/UTPEKsL/PhK9
jFGv2HDXK1dVjLNwvosgX9uYJh5xxwY=
=qiOE
-----END PGP SIGNATURE-----

2025-03-24

TikTok Followers Generator

nas.io/instant-boost/challenges/tiktok-followers-and-fans-generator-get-free-likes-in-1-click-2025

nas.io/instant-boost/challenges/how-to-get-more-free-followers-on-tiktok-2025-100-fans-likes-in-1-click-2025

nas.io/instant-boost/challenges/how-to-get-10k-followers-on-tiktok-in-5-minutes-2025-proven-tips-fans-likes-instantly

How To Get More Instagram Followers Free

nas.io/instant-boost/challenges/how-to-get-more-instagram-followers-free-100-fans-likes-instantly-smart-tips

nas.io/instant-boost/challenges/instagram-followers-free-generator-100-fans-likes-in-a-click-2025

2025-03-22

TikTok Followers And Fans Generator

www.eventbookings.com/b/event/boost-tiktok-followers-and-fans-generator-get-free-likes-in-1-click-2025-67de0b85ef5341-32087518

2025-03-21

TikTok Followers And Fans Generator

www.plitch.com/en/forumthread/tiktok-followers-and-fans-generator-get-free-likes-in-1-click-2025-326804463962820609

Free TikTok Followers And Likes

www.plitch.com/en/forumthread/instantly-booster-free-tiktok-followers-and-likes-100-fans-in-a-click-2025-326804188178944001

2025-03-12

ショッキングな内容を表示する ← Click

あなた弱者ではありません

2025-02-07

How to Flirt on a First Date Without Feeling Awkward

First dates can be exciting and nerve-wracking all at once. You’re meeting someone new, learning about their interests, and trying to figure out if there’s chemistry between you. And then there’s flirting, that delicate dance of showing someone you’re interested without being too forward or awkward.

Flirting doesn’t have to be a high-pressure situation. In fact, it can be the most fun part of getting to know someone. Whether you're meeting someone on MixerDates or any other platform, the most important thing is to be genuine, stay calm, and let the connection develop naturally.

If you’ve ever found yourself wondering how to flirt on a first date without feeling uncomfortable, you’re not alone. Everyone has their awkward moments, but the more you understand the art of flirting, the easier it becomes. In this article, we’ll break down how to flirt in a way that feels natural, exciting, and authentic to who you are. So, let's dive in and learn how to make the most of your first date experience—without overthinking it.


Confidence: The Foundation of Flirting

When it comes to flirting, confidence is key. But what does it really mean to be confident on a first date? Confidence doesn’t mean you need to be perfect, or even outgoing—it simply means being comfortable in your own skin and showing up as your authentic self.

Have you ever noticed how people are drawn to those who radiate self-assurance? It’s not about bragging or dominating the conversationit’s about presenting yourself with ease. If you feel good about yourself, it will naturally show. A great smile, good posture, and eye contact can go a long way in making a good first impression.

For instance, think about the last time someone walked into a room and immediately caught your attention—not because they were the most attractive person in the room, but because of their energy. They were confident, they were present, and they made you feel at ease. That’s the kind of confidence you want to project on your date.

When you're confident, you're not worried about saying the perfect thing. Instead, you focus on enjoying the moment, making the other person feel comfortable, and letting the connection happen naturally. That’s the magic of confidence—it allows you to be present, fun, and, most importantly, yourself.

The Power of Subtlety

Let’s face it—no one wants to feel like they’re being “worked” or put through a game. That’s why subtlety is such a powerful tool when it comes to flirting. It's all about showing interest without being over-the-top or too obvious.

Flirting doesn’t always mean complimenting someone non-stop or using cheesy pickup lines. In fact, the most successful flirting is the kind that happens behind the scenes—subtle, playful, and lighthearted. Think about the little moments, like a teasing comment about how they always order the same thing at a restaurant or the way you laugh at a silly joke they make.

The key is to find a balance. A simple smile or a playful comment can convey interest without being too much. For example, if your date tells you they love hiking but they tend to get lost easily, you could say something like, “So, you’re telling me you need a personal guide? I could get behind that!” It’s lighthearted, humorous, and most importantly, it keeps the conversation fun without putting too much pressure on the situation.

By keeping it subtle, you allow your date to feel at ease. It takes the pressure off them to be perfect and allows both of you to enjoy the interaction more naturally. Flirting doesn’t need to be a performance—it’s about creating an environment where both of you can feel comfortable and authentic.


Active Listening: A Key to Connection

Now, let’s talk about something incredibly important in the flirting game: active listening. When we’re on a date, we often get caught up in thinking about what to say next, how we’re coming across, or if we’re being interesting enough. But the best way to make an impression? Truly listening to your date.

Active listening means you’re fully engaged in the conversation, giving your date your full attention and responding thoughtfully. It’s about showing that you care about what they’re saying and that you’re genuinely interested in getting to know them better. When you listen actively, you’re also giving them space to open up, and that can create an immediate connection.

For example, if your date mentions they recently traveled to Japan, instead of simply saying, “That’s cool!” you could follow up with something like, “What was the most memorable experience you had there?” This shows that you’re not just hearing their words but are genuinely curious and invested in their experiences. It’s a great way to build rapport and let them know you’re not just there to impress them—you’re there to connect.

Body Language: Saying More Than Words Can

While your words are important, body language often speaks louder than anything you can say. Whether you realize it or not, your body is constantly communicating how you feel. How you sit, stand, and move tells your date whether you’re relaxed, engaged, or distracted.

Small gestures can go a long way in flirting. A light touch on the arm, a subtle lean in when they’re speaking, or maintaining good eye contact—all these body language cues help signal your interest. And the great thing is, when done naturally, these cues can be just as effective as words.

For example, if you’re sitting at a café on your date and you lean in slightly when they’re sharing a funny story, you’re not just showing that you’re interested—you’re inviting them into your space. It’s an invitation to connect further. And when they respond by leaning in too, that’s when the magic happens—the unspoken connection that tells you both that there’s potential for more.

Flirting through body language doesn’t mean making grand gestures or being overly touchy. It’s about being present and showing that you’re engaged with your date in a subtle, but meaningful way.


Have Fun: Don’t Take It Too Seriously

It’s easy to get caught up in overthinking how to flirt or trying to figure out if your date is into you. But here’s a secret—when you let go of the pressure and allow yourself to have fun, everything flows much more naturally. Flirting on a first date doesn’t need to feel like a test or an assignment. It’s supposed to be a fun, lighthearted experience that sets the stage for more great dates ahead.

When was the last time you had a genuinely fun date? Was it when you were trying too hard to impress, or when you were both laughing, chatting, and enjoying each other's company? Flirting becomes effortless when you're present, enjoying the moment, and letting the connection grow naturally.

Sometimes, it's the small momentslike sharing a laugh or swapping embarrassing stories—that make a first date truly special. When you focus on having fun, you create an environment where both of you can relax, flirt, and let the chemistry grow. That’s the secret to a great date.

Flirting with the Right Match: How MixerDates Makes It Easier

One of the best things about using a platform like MixerDates is that it takes the guesswork out of the equation. By connecting with someone who already shares your interests and values, you’ve got a head start on making a real connection. No more swiping through countless profiles hoping for a sparkon MixerDates, you already know there’s something in common.

When you’re already on the same page with your date, flirting comes more easily. There’s less of that awkward, “Are we even on the same wavelength?” feeling, and more of the fun, “Wow, we really click!” vibe. Whether you’re talking about favorite hobbies, movies, or life goals, the conversation flows naturally, making the flirting feel effortless.

If you're looking for a place to meet like-minded people and build genuine connections, MixerDates is the perfect platform. It's a great place to find someone who appreciates you for who you are and who you can naturally flirt with, without the stress.

Ready to Take the Leap?

Flirting on a first date is all about confidence, connection, and fun. When you let go of the pressure and focus on enjoying the experience, the chemistry will naturally follow. Remember, the best way to flirt is by being yourself—let your personality shine through, listen with intention, and embrace the moment.

And if you’re ready to meet someone new, who’s just as interested in making a connection as you are, MixerDates is the perfect place to start. So go ahead, take the leap, and see where it leads. Who knows? Your next great connection might be just a click away.

Sign up for MixerDates today and start your journey to exciting first dates and meaningful connections!

2024-12-14

anond:20241214062658

ちなみに出演 こんな感じ


NiziU:『AlwayS』(Mrs. GREEN APPLE大森元貴コラボ

乃木坂46:『歩道橋

Vaundy:『風神』『花占い』『怪獣花唄

Perfume:『Cosmic Treat』

日向坂46:『君はハニーデュー』

B小町:『SHINING SONG』

BE:FIRST:『Masterplan

FRUITS ZIPPER:『わたしの一番かわいいところ』

BOYNEXTDOOR:『Earth, Wind & FireJapanese Ver.)』

MY FIRST STORY×HYDE:『夢幻

マカロニえんぴつ:『忘レナ唄』

ME:I:『Click

三浦大知:『心拍音』

MISAMO:『NEW LOOK』『Identity』

Mrs. GREEN APPLE:『アポロドロス』『ライラック』『コロンブス』『ビターバカンス

屋比久知奈&尾上松也:『モアナと伝説の海2』メドレー

ゆず:『栄光の架橋

RIIZE:『Lucky』

L’Arc~en~Ciel:『HONEY』『YOU GOTTA RUN

2024-10-17

The Benefits of Paying Someone to Do Your Assignment with MyAssignmentHelp.Expert

In today’s fast-paced academic landscape, students face mounting pressure from multiple assignments, looming deadlines, and rigorous coursework. Juggling these responsibilities can often feel overwhelming, leading to stress and anxiety. In such circumstances, the option to pay someone to do your assignment becomes a viable and practical solution. This approach not only helps alleviate academic pressures but also ensures that students receive high-quality work that meets institutional standards.

One reputable platform that students can turn to is MyAssignmentHelp.Expert. This service connects students with a team of experienced writers and subject matter experts across various disciplines. By choosing to collaborate with MyAssignmentHelp.Expert, students gain access to personalized assistance tailored to their specific needs. Whether it’s a complex research paper, a detailed case study, or a challenging statistical analysis, their professionals are equipped to handle it all. They focus on delivering original content, meticulously researched and formatted according to the required guidelines, which is essential for achieving high grades.

Moreover, utilizing a service like MyAssignmentHelp.Expert can significantly enhance the learning experience. When students receive professionally written assignments, they have the opportunity to review and understand the content, gaining valuable insights into complex topics. This process not only helps them complete their coursework but also fosters a deeper understanding of the subject matter. In this way, students are not merely outsourcing their work; they are actively investing in their education and academic growth.

Another significant advantage of using MyAssignmentHelp.Expert is the time management it affords students. With the demands of coursework, extracurricular activities, and part-time jobs, many students struggle to find a balance. By delegating certain assignments to experts, they can allocate their time more effectively, focusing on areas that require their attention, such as studying for exams or participating in group projects.

In conclusion, paying someone to do your assignment can be a wise decision when approached responsibly. With platforms like MyAssignmentHelp.Expert, students can ensure they receive professional assistance that not only supports their academic goals but also allows them to maintain a balanced lifestyle. Embrace this opportunity to excel academically without compromising your well-being, and unlock your full potential with expert guidance at your fingertips.

Click Here: https://myassignmenthelp.expert/pay-for-assignments.html

2024-09-20

anond:20240920143806

Hey guys, we have a gift for you! We just need you to answer a few questions first, then you'll earn a nice reward. It's very quick and simple! It only takes a minute. So come on, click on the following link to claim your gift. Don't wait, time is running out! Click on the link and enjoy your free gift. Now hurry up!

2024-09-13

function sleep(ms){

const startTime = new Date();

while(new Date() -startTime<ms);</p>

}

function clickMore() {

sleep(200);

document.querySelector('[data-cl-params="_cl_vmodule:ans_re;_cl_link:more"]')?.click();

}

new MutationObserver(clickMore).observe(document.getElementById("leftColumn"), {childList: true, subtree: true});

clickMore();

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

スターの多い順にブコメを並び替える

FANZAの検索結果から熟女を除外するブックマークレット がうまく動いたので、気を良くしてはてなブックマークコメント欄スター数順にソートするブックマークレット作りました

作った動機は、「注目コメントに入りきれなかったちょっといいコメント」をサクサク探したいから。結果として建設コメント順位付けモデル無効化していますが、あのアルゴリズムには特に不満は特にありません。

ブックマークレット

javascript: (async () => {
const wait = ms => new Promise(resolve => setTimeout(resolve, ms));
document.querySelector('.js-bookmarks-sort-tab[data-sort="recent"]').click();
window.scrollTo(0, document.body.scrollHeight);
await wait(1000);
window.scrollTo(0, 0);
await wait(1000);
const p = document.querySelector('.js-bookmarks-recent');
let l = Array.from(p.querySelectorAll('.entry-comment-contents'));
const g = e => {
let n = e.querySelectorAll('.hatena-star-star').length;
const c = e.querySelector('.hatena-star-inner-count');
return c ? n + Number(c.textContent) : n
};
l = l.filter(e => g(e) > 0);
l.sort((a, b) => g(b) - g(a));
p.replaceChildren(...l);
})();

ミニファイしたものコードに一部誤りがありましたので訂正しました(2024-08-16 11:47)

javascript:(async()=>{const wait=ms=>new Promise(resolve=>setTimeout(resolve,ms));document.querySelector('.js-bookmarks-sort-tab[data-sort="recent"]').click();window.scrollTo(0,document.body.scrollHeight);await wait(1000);window.scrollTo(0,0);await wait(1000);const p=document.querySelector('.js-bookmarks-recent');let l=Array.from(p.querySelectorAll('.entry-comment-contents'));const g=e=>{let n=e.querySelectorAll('.hatena-star-star').length;const c=e.querySelector('.hatena-star-inner-count');return c?n+Number(c.textContent):n};l=l.filter(e=>g(e)>0);l.sort((a,b)=>g(b)-g(a));p.replaceChildren(...l)})()

使い方

FANZAの検索結果から熟女を除外するブックマークレット 参照

コード解説

コード説明にダサイところがあったら厳しく指摘して下さい。

javascript:

ブックマークレット必要な、URLの種類を示すスキーム名です。

(async () => {
// 処理
})();

ページに元々ある変数たちとバッティングしないように、まず無名関数ラップします。処理の中で await を使いたいので async 宣言しています

const wait = ms => new Promise(resolve => setTimeout(resolve, ms));

処理の途中で待ち時間を設けるための関数です。便利。

document.querySelector('.js-bookmarks-sort-tab[data-sort="recent"]').click();
window.scrollTo(0, document.body.scrollHeight);
await wait(1000);

「新着コメント」タブをクリックし、ページの一番下までスクロールダウンしてから少し待つ動作です。新着コメントの後半部分(スクロールきっかけの遅延読み込みになっているところ)の読み込みをうながしています

window.scrollTo(0, 0);
await wait(1000);

ページの先頭に戻ってまた少し待ちます。合計2秒の待ち時間雰囲気で決めていますので、これでなければならない・これで過不足ないという値ではありません。単にコメントの読み込み完了を判定する処理を書くのがめんどうだっただけです。

const p = document.querySelector('.js-bookmarks-recent');

新着ブコメの親要素です。繰り返し呼び出すので名前をつけています

let l = Array.from(p.querySelectorAll('.entry-comment-contents'));

コメントをすべて配列に格納します。

const g = e => {
let n = e.querySelectorAll('.hatena-star-star').length;
const c = e.querySelector('.hatena-star-inner-count');
return c ? n + Number(c.textContent) : n
};

コメントはてなスター数をカウントして返す関数です。たくさんスターがついてる ★256★ みたいなやつの数字も足します。

l = l.filter(e => g(e) > 0);

ソートする前に、無スターコメントを消去しています。してもしなくてもいいことですが。

l.sort((a, b) => g(b) - g(a));

残ったコメントスター数で降順ソートします。.querySelectorAll() で収集した要素を配列に入れ直したのは、この .sort() メソッドを使いたいからです(.querySelectorAll() が返す配列風の NodeList オブジェクトは、配列共通メソッドもいくつかあるものの、大半は使えないのです)。

p.replaceChildren(...l);

親要素の内容を、並び替えの終わったコメントそっくり入れ替えて、処理完了です。画面を見ると新着コメントの中身が「スターのついたコメントのみ・スターの多い順」に並んでいます。元に戻す方法はないので、原状回復にはリロードします。ソート状態を示すフラグを立てておいてスターソート⇔日付ソートをかわりばんこに行うようにすればできそうだなと思ったけど実装しません。連打スターを省く処理を追加してUU数でソートできればもっと厳正なランキングになるなーと今思いつきましたがそれも実装しません。

2024-07-24

SUNO AIStem Splitterがキター!!!

https://suno.com/create#

Instrumental and Vocal Stems

New feature

7/23/24, 10:00 PM

Pro & Premier users can now separate the vocals and instrumentals from songs, which will give you more control over how to use Suno.

How to use:

1 - Go to Library or Create, and click the vertical “...” on a song row

2 - ClickGet Stems”

3 - If you’re not there already, youll be navigated to the Create page where you can see two new clips that are generating. One will be the instrumentals, and the other will be the vocals

You can then download or extend each individual clip.

キター!!!!!!

これはProに入るタイミングかも知れんね!

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 });
})();
ログイン ユーザー登録
ようこそ ゲスト さん