<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>项目 on MoeJue&#39;s Blog</title>
    <link>https://en.moejue.cn/ja/tags/%E9%A1%B9%E7%9B%AE/</link>
    <description>Recent content in 项目 on MoeJue&#39;s Blog</description>
    <generator>Hugo -- 0.151.2</generator>
    <language>ja</language>
    <lastBuildDate>Sat, 10 Jan 2026 14:02:35 +0000</lastBuildDate>
    <atom:link href="https://en.moejue.cn/ja/tags/%E9%A1%B9%E7%9B%AE/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Web3 オンチェーン紅包 DApp</title>
      <link>https://en.moejue.cn/ja/posts/303/</link>
      <pubDate>Sat, 10 Jan 2026 14:02:35 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/303/</guid>
      <description>&lt;p&gt;これは&lt;strong&gt;100%分散型&lt;/strong&gt;のブロックチェーンお年玉（レッドパケット）アプリケーションです。ユーザーはウォレットを接続し、金額と数量を設定してお年玉を送信し、リンクを通じて他の人と共有して受け取ることができます。すべてのデータと操作はブロックチェーンに基づいており、中央集権型サーバーは一切不要で、プロセス全体が安全、透明、追跡可能です。&lt;/p&gt;
&lt;p&gt;興味があれば、GitHubで私のコードをご覧ください：&lt;a href=&#34;https://github.com/iAJue/redpacket-dapp&#34;&gt;redpacket‑dapp&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;機能ハイライト&#34;&gt;機能ハイライト&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🧧 &lt;strong&gt;お年玉の送信&lt;/strong&gt;: ウォレットを接続後、金額と数量を設定してブロックチェーンにお年玉を送信します。&lt;/li&gt;
&lt;li&gt;🎁 &lt;strong&gt;お年玉の受け取り&lt;/strong&gt;: 共有リンクを通じて、他の人はウォレットを接続してブロックチェーンから直接お年玉を受け取ることができます。&lt;/li&gt;
&lt;li&gt;🔗 &lt;strong&gt;スマートコントラクト&lt;/strong&gt;: Solidityで書かれた安全なスマートコントラクトがすべてのロジックを処理します。&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;マルチチェーン対応&lt;/strong&gt;: ローカルテストネットとBSCテストネットをサポートします。&lt;/li&gt;
&lt;li&gt;💼 &lt;strong&gt;Web3統合&lt;/strong&gt;: MetaMaskウォレットを使用して接続します。&lt;/li&gt;
&lt;li&gt;🚀 &lt;strong&gt;完全分散型&lt;/strong&gt;: バックエンドサーバーがなく、すべてのデータはブロックチェーンに保存されます。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;技術スタック&#34;&gt;技術スタック&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;フロントエンド&lt;/strong&gt;：React 19、React Router 6、TypeScript、Vite、Ethers v6&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;コントラクト層&lt;/strong&gt;：Hardhat、Solidity 0.8.x&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ツール&lt;/strong&gt;：ESLint、Prettier&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;バックエンド不要&lt;/strong&gt;: サーバーへの依存なし ❌&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;クイックスタート&#34;&gt;クイックスタート&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 1. プロジェクトの依存関係をインストール
npm install
cd react-dapp &amp;amp;&amp;amp; npm install &amp;amp;&amp;amp; cd ..

# 2. ローカルブロックチェーンノードを起動
npm run node

# 3. スマートコントラクトをコンパイル
npx hardhat compile

# 4. スマートコントラクトをデプロイ
npm run deploy

# 5. フロントエンドを起動
npm run frontend
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;ディレクトリ構造&#34;&gt;ディレクトリ構造&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;redpacket-web3/
├─ contracts/                # Solidity スマートコントラクト
│  └─ RedPacket.sol
├─ react-dapp/               # React + Vite フロントエンド
│  ├─ src/
│  │  ├─ components/         # 共通コンポーネント（ウォレットボタン、作成フォームなど）
│  │  ├─ config/             # ABI、コントラクトアドレス設定
│  │  ├─ hooks/              # カスタムフック（useWallet）
│  │  ├─ pages/              # ページ（Home、ClaimPacket）
│  │  ├─ styles/             # グローバルスタイル
│  │  ├─ utils/              # Web3 ユーティリティ関数
│  │  └─ App.tsx             # ルーティングとレイアウト
│  ├─ .env.example           # フロントエンドに必要な環境変数説明
│  └─ package.json
├─ scripts/
│  └─ deploy.js              # Hardhat デプロイスクリプト（自動的にフロントエンド設定に書き込みます）
├─ hardhat.config.js
└─ package.json              # ルートディレクトリのスクリプト（Hardhat + フロントエンドをワンクリックで起動）
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;使用ガイド&#34;&gt;使用ガイド&lt;/h2&gt;
&lt;h3 id=&#34;お年玉の作成&#34;&gt;お年玉の作成&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;フロントエンドを開き、右上の「ウォレットを接続」をクリックします。&lt;/li&gt;
&lt;li&gt;お年玉の総額と個数を入力すると、アプリケーションがフロントエンドで金額をランダムに分割します。&lt;/li&gt;
&lt;li&gt;送信後、MetaMaskでトランザクションを確認し、ブロックの承認を待ちます。&lt;/li&gt;
&lt;li&gt;成功後、システムが生成した受け取りリンクをコピーして友人と共有できます。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;お年玉の受け取り&#34;&gt;お年玉の受け取り&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;共有リンク（URLに &lt;code&gt;/claim/{packetId}&lt;/code&gt; が含まれる）を開きます。&lt;/li&gt;
&lt;li&gt;同様にまずウォレットを接続し、「クリックして受け取る」をクリックします。&lt;/li&gt;
&lt;li&gt;署名確認後、ブロックのパッケージングを待ち、ページに結果と残り個数が表示されます。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;環境変数&#34;&gt;環境変数&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dapp/.env&lt;/code&gt;（開発環境では自動的に無視されます。&lt;code&gt;.env.example&lt;/code&gt;を参照してください）
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;VITE_RPC_URL&lt;/code&gt;：フロントエンドが直接接続するノードRPC、デフォルトは &lt;code&gt;http://127.0.0.1:8545&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VITE_CONTRACT_ADDRESS&lt;/code&gt;：デプロイスクリプトによって書き込まれたアドレスを上書きできます。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VITE_CHAIN_ID&lt;/code&gt;：フロントエンドが使用するチェーンID（16進数）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;root/.env&lt;/code&gt;：Hardhatで秘密鍵やBSC RPCを参照する必要がある場合は、既存の記述をそのまま使用できます。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;スマートコントラクトredpacketsol&#34;&gt;スマートコントラクト（RedPacket.sol）&lt;/h2&gt;
&lt;p&gt;コアメソッド：&lt;/p&gt;</description>
    </item>
    <item>
      <title>AEはできませんが、コードは書けます</title>
      <link>https://en.moejue.cn/ja/posts/280/</link>
      <pubDate>Sat, 23 Aug 2025 12:29:01 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/280/</guid>
      <description>&lt;h2 id=&#34;-緒山まひろの隠れ家-&#34;&gt;✨ 緒山まひろの隠れ家 ✨&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;緒山まひろ&#34; loading=&#34;lazy&#34; src=&#34;https://mahiro.moejue.cn/static/images/onimai.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;-緒山まひろの隠れ家へようこそ-&#34;&gt;🌸 緒山まひろの隠れ家へようこそ 🌸&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&#34;緒山まひろ&#34; loading=&#34;lazy&#34; src=&#34;https://mahiro.moejue.cn/static/images/Mahiro06.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;わぁ！私の秘密基地を見つけちゃったんだね！(*≧ω≦)&lt;/p&gt;
&lt;p&gt;ここは緒山まひろの個人サイトだよ。かわいいアニメーションと面白いコンテンツがいっぱい！ ここでは、私のお気に入りのアニメ、マンガ、ゲーム、そして日常のささやかな幸せをシェアしていくね～&lt;/p&gt;
&lt;h3 id=&#34;-私について-&#34;&gt;💕 私について 💕&lt;/h3&gt;
&lt;p&gt;私は緒山まひろ。エロゲを愛する引きこもりのダメニートだよ。 アニメ、マンガ、ライトノベル、そしてかわいいものが大好き！ 好きな色はピンクと水色！&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;  ∩∩
（･ω･）  &amp;lt;- 私だよ！
＿|　⊃／(＿＿
／ └-(＿＿＿／
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img alt=&#34;緒山まひろ&#34; loading=&#34;lazy&#34; src=&#34;https://mahiro.moejue.cn/static/images/visual_chara_mahiro-mihari.webp&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;-サイトコンテンツ-&#34;&gt;🎀 サイトコンテンツ 🎀&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;🌟 素敵なアニメーション&lt;/li&gt;
&lt;li&gt;📚 私のプライベートフォト&lt;/li&gt;
&lt;li&gt;🎵 おすすめの音楽&lt;/li&gt;
&lt;li&gt;📷 日常のワンシーン&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-関連リンク-&#34;&gt;🌈 関連リンク 🌈&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;🎭 デモ: &lt;a href=&#34;https://mahiro.moejue.cn/&#34;&gt;https://mahiro.moejue.cn/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🏠 個人ブログ: &lt;a href=&#34;https://MoeJue.cn/&#34;&gt;https://MoeJue.cn/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🐱 GitHub: &lt;a href=&#34;https://github.com/iAJue/Mahiro&#34;&gt;https://github.com/iAJue/Mahiro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;📧 公式サイト: &lt;a href=&#34;https://onimai.jp/&#34;&gt;https://onimai.jp/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-著作権情報-&#34;&gt;📝 著作権情報 📝&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;このサイトは @Moejue によってデザイン・開発されました&lt;/li&gt;
&lt;li&gt;サイト内で使用されているすべてのアニメーション、マンガの画像、キャラクター、および関連コンテンツの著作権は、原作者（ねことうふ）およびその発行元（スタジオバインド、一迅社）に帰属します&lt;/li&gt;
&lt;li&gt;著作権侵害の可能性がある場合は、上記の連絡先までお知らせください。速やかに関連コンテンツを削除いたします&lt;/li&gt;
&lt;li&gt;GNU GENERAL PUBLIC LICENSE Version 2&lt;/li&gt;
&lt;li&gt;Copyright © 2025 MoeJue. All rights reserved.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-スペシャルサンクス-&#34;&gt;💌 スペシャルサンクス 💌&lt;/h3&gt;
&lt;p&gt;緒山まひろを好きでいてくれるみんな、ありがとう！(●&amp;rsquo;◡&amp;rsquo;●)&lt;/p&gt;</description>
    </item>
    <item>
      <title>macOS風のWebアプリを構築する</title>
      <link>https://en.moejue.cn/ja/posts/260/</link>
      <pubDate>Sun, 11 May 2025 11:46:03 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/260/</guid>
      <description>&lt;h3 id=&#34;プロジェクト概要&#34;&gt;プロジェクト概要&lt;/h3&gt;
&lt;p&gt;今日のWeb開発分野において、ユーザーエクスペリエンスとインターフェースデザインはますます重要になっています。&lt;/p&gt;
&lt;p&gt;Mac Web Vue Templateは、macOSのデザインにインスパイアされた、モダンでエレガントなVue.jsのWebテンプレートです。Vue.jsをベースにした現代的なWebアプリケーションテンプレートであり、そのデザインはmacOSの優雅なインターフェースから着想を得ています。このプロジェクトは、美しいUIデザインだけでなく、完全なプロジェクト構造とベストプラクティスも提供します。&lt;/p&gt;
&lt;h4 id=&#34;オンラインデモ&#34;&gt;オンラインデモ&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://mac.moejue.cn/&#34;&gt;WebAi&lt;/a&gt; にアクセスすることで、このテンプレートの実際の効果を体験できます。招待コード(MoeJue)&lt;/p&gt;
&lt;h3 id=&#34;主な特徴&#34;&gt;主な特徴&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;macOS風のUIデザイン&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;macOSのデザイン言語を採用&lt;/li&gt;
&lt;li&gt;洗練されたすりガラス効果&lt;/li&gt;
&lt;li&gt;エレガントなアニメーショントランジション&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;モダンな技術スタック&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vue.jsをコアフレームワークとして使用&lt;/li&gt;
&lt;li&gt;Viteをビルドツールとして使用&lt;/li&gt;
&lt;li&gt;Piniaによる状態管理&lt;/li&gt;
&lt;li&gt;Vue Routerによるルーティング処理&lt;/li&gt;
&lt;li&gt;SCSSプリプロセッサ&lt;/li&gt;
&lt;li&gt;ES6+のモダンな機能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;レスポンシブデザイン&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;あらゆる画面サイズに完璧に対応&lt;/li&gt;
&lt;li&gt;スムーズなモバイル体験&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;プロジェクト構造の解説&#34;&gt;プロジェクト構造の解説&lt;/h3&gt;
&lt;p&gt;プロジェクトは、明確でモジュール化されたディレクトリ構造を採用しています：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;src/
├── assets/          # 静的リソース
├── components/      # Vueコンポーネント
│   ├── common/     # 共通コンポーネント
│   ├── system/     # システムコンポーネント
│   └── apps/       # アプリケーションコンポーネント
├── views/          # ページビュー
├── router/         # ルーティング設定
├── stores/         # 状態管理
└── utils/          # ユーティリティ関数
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;この構造設計により、プロジェクトは良好な保守性と拡張性を備えています。&lt;/p&gt;
&lt;h3 id=&#34;開発規範&#34;&gt;開発規範&lt;/h3&gt;
&lt;p&gt;プロジェクトは厳格な開発規範に従っています：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;命名規則&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>萌音ストア モバイル版 発売</title>
      <link>https://en.moejue.cn/ja/posts/256/</link>
      <pubDate>Thu, 17 Apr 2025 09:07:11 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/256/</guid>
      <description>&lt;h3 id=&#34;プロジェクト紹介&#34;&gt;プロジェクト紹介&lt;/h3&gt;
&lt;p&gt;萌音商城モバイル版は、uniappをベースに開発されたマルチプラットフォームECシステムで、iOS、Android、H5、ミニプログラムなど複数のプラットフォームをサポートしています。システムはPHP + MySQL + FastAdminをバックエンド技術スタックとして採用し、完全なEC機能を実現しています。&lt;/p&gt;
&lt;h3 id=&#34;主要機能&#34;&gt;主要機能&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;商品管理：カテゴリ分け、リスト表示、詳細表示&lt;/li&gt;
&lt;li&gt;ショッピングフロー：カート、決済、支払い、注文管理&lt;/li&gt;
&lt;li&gt;ユーザーシステム：会員センター、個人情報管理&lt;/li&gt;
&lt;li&gt;マルチベンダーモード：ベンダーが独立して商品と注文を管理&lt;/li&gt;
&lt;li&gt;配送システム：注文をERP(管家婆)システムにプッシュして処理する機能をサポート&lt;/li&gt;
&lt;li&gt;デュアルモード取引：
&lt;ul&gt;
&lt;li&gt;オンライン注文、宅配便発送&lt;/li&gt;
&lt;li&gt;オンライン注文、店舗受け取り/配達員による配送&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;システムプレビュー&#34;&gt;システムプレビュー&lt;/h3&gt;
&lt;h4 id=&#34;バックエンド管理画面&#34;&gt;バックエンド管理画面&lt;/h4&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-111108_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-111207_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-111236_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-111316_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-111333_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-111348_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-111425_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-114400_04_17_2025.jpg&#34;&gt;&lt;/p&gt;
&lt;h4 id=&#34;ミニプログラム画面&#34;&gt;ミニプログラム画面&lt;/h4&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-115015_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-115348_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/Screenshot_2025-04-17-11-51-48-260_com.tencent.mm_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/Screenshot_2025-04-17-11-51-41-636_com.tencent.mm_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/Screenshot_2025-04-17-11-51-32-607_com.tencent.mm_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/Screenshot_2025-04-17-11-51-28-173_com.tencent.mm_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/Screenshot_2025-04-17-11-51-14-865_com.tencent.mm_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-115521_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-115423_04_17_2025.jpg&#34;&gt; &lt;img loading=&#34;lazy&#34; src=&#34;https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2025/04/17/QQ20250417-115405_04_17_2025.jpg&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;バージョン説明&#34;&gt;バージョン説明&lt;/h3&gt;
&lt;p&gt;現在のバージョンはV1.0版です。一部の画面は将来の計画のために予約されており、実際のニーズに基づいて継続的に更新・改善されます。正式リリース版がなく、ミニプログラムの運用も開始していないため、オンラインでデモできるバージョンはありません。現在のプログラムはV1.0の初期バージョンであり、一部の画面は事前に計画されて予約されています。今後、ニーズに応じて更新されます。&lt;/p&gt;
&lt;h3 id=&#34;購入について&#34;&gt;購入について&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;価格：188元 (バージョン更新後、状況に応じて価格が調整される場合があります。実際の価格をご確認ください)&lt;/li&gt;
&lt;li&gt;内容：完全なソースコード（モバイル版とバックエンドを含む、暗号化なし、ライセンスなし）&lt;/li&gt;
&lt;li&gt;紹介リベート：友人の購入を紹介すると20%のリベートを獲得できます&lt;/li&gt;
&lt;li&gt;更新サービス：生涯無料更新&lt;/li&gt;
&lt;li&gt;利用規約：無断での転売は禁止します。違反した場合、更新サービスは停止されます。&lt;/li&gt;
&lt;li&gt;開発サポート：ソースコードには詳細なコメントが含まれており、二次開発に便利です。&lt;/li&gt;
&lt;li&gt;プロジェクトホスティング：コードはGitHubでホストされており、更新履歴は完全かつ透明です。&lt;/li&gt;
&lt;li&gt;マルチプラットフォームサポート：他のクライアントはご自身でコンパイルする必要があります。WeChatミニプログラム環境をベースに開発されています。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;連絡先&#34;&gt;連絡先&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;QQ交流グループ：&lt;a href=&#34;https://qm.qq.com/q/Fhqk6HKUaQ&#34;&gt;参加はこちら&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;個人のQQリンクがないため、グループ参加後、グループオーナーに@メンションして購入についてお問い合わせください。&lt;/li&gt;
&lt;li&gt;プロジェクトが売れ残っています。阿珏酱を助けてください。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;オンラインデモ&#34;&gt;オンラインデモ&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://v.douyin.com/3l90gHoAf0A/&#34;&gt;WeChatミニプログラム版デモ動画&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;バックエンドのデモ環境についてはお問い合わせください。&lt;/li&gt;
&lt;li&gt;WeChatミニプログラムの体験権限追加についてはお問い合わせください。&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title># 俺の二次元アルバムが帰ってきた</title>
      <link>https://en.moejue.cn/ja/posts/227/</link>
      <pubDate>Fri, 08 Nov 2024 09:52:39 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/227/</guid>
      <description>&lt;p&gt;最初の&lt;a href=&#34;https://moejue.cn/archives/10&#34;&gt;ギャラリー&lt;/a&gt;から&lt;a href=&#34;https://moejue.cn/archives/61&#34;&gt;画像アップローダー&lt;/a&gt;、そして現在のアルバムに至るまで、私の画像に対するこだわりは、もはや世紀をまたぐほどのものです。ギャラリーの画像は七牛雲（Qiniu Cloud）に保存していましたが、後にトラフィックを不正に消費されたため閉鎖しました。画像アップローダーは現在、ブログ用の画像アップロードサービスとして利用しています。アルバムは、スマートフォンのアルバムのような概念で、画像も動画も保存できます。徐々に完成度が高まってきています。&lt;/p&gt;
&lt;p&gt;ここ数日で、普段保存している動画や画像などをサーバーにアップロードし、UIとAPIを作成して、ついでにオープンソースとして公開しました。（私は熱心なオープンソース支持者でありたいと思っています）&lt;/p&gt;
&lt;h4 id=&#34;私の二次元アルバム-フロントエンドui&#34;&gt;私の二次元アルバム フロントエンドUI&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;ここは阿珏ちゃん（A-Jue-chan）のプライベートアルバムで、普段収集した画像や、各プラットフォームで「いいね」や「お気に入り」登録した動画を保存しています。&lt;/li&gt;
&lt;li&gt;Bilibili、YouTube、TikTok、X、Facebook、pixivなどのプラットフォームの動画や画像を含みますが、これらに限定されません。関連するデータ情報の著作権はすべて原作者に帰属します。&lt;/li&gt;
&lt;li&gt;データは不定期に手動で更新されます。特定の画像や動画が必要な場合は、直接阿珏ちゃんにご連絡ください。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;プレビュー&#34;&gt;プレビュー&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://photo.moejue.cn&#34;&gt;https://photo.moejue.cn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;image&#34; loading=&#34;lazy&#34; src=&#34;https://github.com/iAJue/PhotoGallery/raw/main/public/images/1.png&#34;&gt; &lt;img alt=&#34;image&#34; loading=&#34;lazy&#34; src=&#34;https://github.com/iAJue/PhotoGallery/raw/main/public/images/2.png&#34;&gt; &lt;img alt=&#34;image&#34; loading=&#34;lazy&#34; src=&#34;https://github.com/iAJue/PhotoGallery/raw/main/public/images/3.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;特徴&#34;&gt;特徴&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;画像と動画の表示をサポート&lt;/li&gt;
&lt;li&gt;アルバムの表示をサポート&lt;/li&gt;
&lt;li&gt;アルバムのパスワード保護をサポート&lt;/li&gt;
&lt;li&gt;18+保護をサポート&lt;/li&gt;
&lt;li&gt;検索機能をサポート&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;todo&#34;&gt;Todo&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;エフェクト表示の最適化&lt;/li&gt;
&lt;li&gt;UIの滑らかさの最適化&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;インストール手順&#34;&gt;インストール手順&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;リポジトリをローカルにクローンします：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git clone https://github.com/iAJue/PhotoGallery.git
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;プロジェクトディレクトリに移動します：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd PhotoGallery
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;依存関係をインストールします：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;npm install
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;プロジェクトをビルドします&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;npm run build
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;バックエンドapi&#34;&gt;バックエンドAPI&lt;/h3&gt;
&lt;p&gt;参考用 &lt;a href=&#34;https://github.com/iAJue/wasteCode/tree/main/photo&#34;&gt;https://github.com/iAJue/wasteCode/tree/main/photo&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;返却データ形式&#34;&gt;返却データ形式&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;写真API&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[
{
    &amp;#34;date&amp;#34;: &amp;#34;\u6628\u5929&amp;#34;,
    &amp;#34;items&amp;#34;: [
        {
            &amp;#34;src&amp;#34;: &amp;#34;https:\/\/moejuevideo.pages.dev\/file\/1730957555106_ocgRCdDEA07fAILEKEFOA8ADAyETABBMffIBE6~tplv-dy-aweme-images_q75.webp&amp;#34;,
            &amp;#34;alt&amp;#34;: &amp;#34;ocgRCdDEA07fAILEKEFOA8ADAyETABBMffIBE6~tplv-dy-aweme-images_q75.webp&amp;#34;,
            &amp;#34;isVideo&amp;#34;: false,
            &amp;#34;duration&amp;#34;: null
        }
    ]
}
]
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;アルバムAPI&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[
{
    &amp;#34;folder_id&amp;#34;: &amp;#34;3&amp;#34;,
    &amp;#34;folder_name&amp;#34;: &amp;#34;images&amp;#34;,
    &amp;#34;created_at&amp;#34;: &amp;#34;2024-11-07 15:09:06&amp;#34;,
    &amp;#34;photo_count&amp;#34;: &amp;#34;61&amp;#34;,
    &amp;#34;latest_image&amp;#34;: &amp;#34;https:\/\/moejuevideo.pages.dev\/file\/1730963758087_GZIaBGlbAAALz_E.jpeg&amp;#34;,
    &amp;#34;attribute&amp;#34;: &amp;#34;2&amp;#34;,
    &amp;#34;ispassword&amp;#34;: true
}
]
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ランダムAPI&lt;/p&gt;</description>
    </item>
    <item>
      <title>オープンソースでシンプルかつスタイリッシュな、酷狗のサードパーティ製クライアント V1.0.0 Beta</title>
      <link>https://en.moejue.cn/ja/posts/225/</link>
      <pubDate>Sun, 03 Nov 2024 12:48:04 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/225/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Logo&#34; loading=&#34;lazy&#34; src=&#34;https://github.com/iAJue/MoeKoeMusic/raw/main/images/logo.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;moekoe-music&#34;&gt;MoeKoe Music&lt;/h2&gt;
&lt;p&gt;オープンソースでシンプル、見た目も美しいKuGouのサードパーティクライアント&lt;br&gt;
&lt;a href=&#34;https://github.com/iAJue/MoeKoeMusic/&#34;&gt;&lt;strong&gt;🌎 GitHubリポジトリ&lt;/strong&gt;&lt;/a&gt;  |  &lt;a href=&#34;https://github.com/iAJue/MoeKoeMusic/releases&#34;&gt;&lt;strong&gt;📦️ インストーラーをダウンロード&lt;/strong&gt;&lt;/a&gt;  |  &lt;a href=&#34;https://MoeJue.cn&#34;&gt;&lt;strong&gt;💬 ブログを訪問&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;images&#34; loading=&#34;lazy&#34; src=&#34;https://github.com/iAJue/MoeKoeMusic/raw/main/images/5.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;はじめに&#34;&gt;はじめに&lt;/h2&gt;
&lt;p&gt;10年ほど前、ウェブ版QQを使っていた頃からKuGou Musicを使い始めました（もう10年来のファンです）。なので、この数年で集めた曲はすべてそこにあります。その後、NetEase Cloud MusicやQQ Musicも試してみましたが、KuGouのプレイリストをインポートしようとしても、結果は芳しくありませんでした。私が聴くのは主に日本のアニメのOPで、多くの曲が見つかりませんでした。&lt;/p&gt;
&lt;p&gt;結局、KuGouに戻ってきました。しかし、Mac版のKuGouは時々再生できないことがありました。インターフェースはシンプルですが、それはそれで良い点です。ネットユーザーの勧めで、今はKuGouの&lt;a href=&#34;https://t1.kugou.com/d2tBza3CSV2&#34;&gt;コンセプト版&lt;/a&gt;で音楽を聴いています。これは市場で数少ない、VIP曲を無料で聴ける音楽プレイヤーで、強くお勧めします。&lt;/p&gt;
&lt;p&gt;私の自己紹介ページで、特に日本のアニメのOPを聴くのが大好きだと書きました。それをどう証明するか？（以前のウェブ版プレイリストも長年放置されていました）そうだ、自分で音楽プレイヤーを開発しよう、と。&lt;/p&gt;
&lt;h2 id=&#34;-特徴&#34;&gt;✨ 特徴&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;✅ Vue.js ファミリーを使用して開発&lt;/li&gt;
&lt;li&gt;🔴 KuGouアカウントでのログイン（QRコード/携帯電話/アカウントでのログイン）&lt;/li&gt;
&lt;li&gt;📃 歌詞表示をサポート&lt;/li&gt;
&lt;li&gt;📻 毎日のおすすめ曲&lt;/li&gt;
&lt;li&gt;🚫🤝 ソーシャル機能一切なし&lt;/li&gt;
&lt;li&gt;🔗 公式サーバーに直接接続、サードパーティAPIは一切使用しません&lt;/li&gt;
&lt;li&gt;✔️ 毎日VIPを自動で受け取り、ログインするだけでVIPに&lt;/li&gt;
&lt;li&gt;🎨 テーマカラーの切り替え&lt;/li&gt;
&lt;li&gt;👋 起動時の挨拶メッセージ&lt;/li&gt;
&lt;li&gt;⚙️ マルチプラットフォーム対応&lt;/li&gt;
&lt;li&gt;🛠 さらに多くの機能を開発中&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;todo-list&#34;&gt;Todo List&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] 📺 MV再生をサポート&lt;/li&gt;
&lt;li&gt;[ ] 🌚 Light/Dark Modeの自動切り替え&lt;/li&gt;
&lt;li&gt;[ ] 👆 Touch Barをサポート&lt;/li&gt;
&lt;li&gt;[ ] 🖥️ PWAをサポート、Chrome/Edgeのアドレスバー右側の ➕ をクリックしてPCにインストール可能&lt;/li&gt;
&lt;li&gt;[ ] 🟥 Last.fm Scrobbleをサポート&lt;/li&gt;
&lt;li&gt;[ ] 🎧 Mprisをサポート&lt;/li&gt;
&lt;li&gt;[ ] ⌨️ カスタムショートカットキーとグローバルショートカットキー&lt;/li&gt;
&lt;li&gt;[ ] 🤟 多言語対応&lt;/li&gt;
&lt;li&gt;[ ] 📻 デスクトップ歌詞&lt;/li&gt;
&lt;li&gt;[ ] ⚙️ システムアーキテクチャの最適化&lt;/li&gt;
&lt;li&gt;[ ] 🎶 曲、プレイリスト/お気に入り、削除&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-インストール&#34;&gt;📦️ インストール&lt;/h2&gt;
&lt;p&gt;本プロジェクトの &lt;a href=&#34;https://github.com/iAJue/MoeKoeMusic/releases&#34;&gt;Releases&lt;/a&gt; ページにアクセスしてインストーラーをダウンロードしてください。&lt;/p&gt;</description>
    </item>
    <item>
      <title>マルチプラットフォーム記事同期ブラウザ拡張機能 - ArticleSync</title>
      <link>https://en.moejue.cn/ja/posts/218/</link>
      <pubDate>Wed, 16 Oct 2024 11:02:49 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/218/</guid>
      <description>&lt;h2 id=&#34;articlesync---マルチプラットフォーム記事同期プラグイン&#34;&gt;ArticleSync - マルチプラットフォーム記事同期プラグイン&lt;/h2&gt;
&lt;p&gt;ArticleSyncは、ユーザーが複数のソーシャルプラットフォームに記事を簡単に同期・公開できるブラウザ拡張機能です。ローカルの下書きから、知乎（Zhihu）やBilibiliなどの主要プラットフォームに記事を公開することをサポートしています。これにより、異なるソーシャルメディアプラットフォーム間で記事を同期する作業が、シンプルかつ効率的になるワンストップソリューションを提供します。&lt;/p&gt;
&lt;p&gt;ブラウザ拡張機能の仕組みに基づき、ローカルでログインしているアカウントを自動的に検出し、アカウント情報の漏洩や環境の異常といったリスクを防ぎます。&lt;/p&gt;
&lt;p&gt;Chrome Manifest V3ブラウザ拡張機能の標準に基づいて開発されており、カーネルのバージョン要件にご注意ください。&lt;/p&gt;
&lt;h3 id=&#34;背景&#34;&gt;背景&lt;/h3&gt;
&lt;p&gt;ご存知の通り、私は最近、いくつかのブログプラットフォームと多くのソーシャルサイトを新たに使い始めました。もし、それらすべてで活発に更新を続けたいと思ったらどうすればいいでしょうか。（私がまだ生きていることを証明するために）ついでに、ワンクリックで記事を転載することもできます。&lt;/p&gt;
&lt;p&gt;私が最も頻繁に更新するのは自分の小さなサイトですが、他のプラットフォームはたまにしか更新しません。しかし、毎回手動で投稿するのは面倒です。そこで、ローカルでログインしているアカウントを自動検出し、自動で投稿してくれるプラグインが作れないかと考えました。&lt;/p&gt;
&lt;p&gt;「自分のことは自分でやる」ということわざの通り、数日間いじくり回して、なんとか使えるものができました。残りの部分は時間があるときに更新します。お金をくれるなら話は別ですが。&lt;/p&gt;
&lt;p&gt;このプラグインにはまだ多くの未完成な部分があり、本番環境で複数のプラットフォームでのテストも行っていません。エラーが発生するのはごく普通のことですので、その際はIssueを提出するか、自分で修正してPRを送ってください。てへぺろ〜&lt;/p&gt;
&lt;p&gt;話の邪魔にならないように、スクリーンショットは最後に載せておきました。&lt;/p&gt;
&lt;p&gt;それと、オープンソースは大変なので、スターを付けてくれると嬉しいです。へへへ〜&lt;/p&gt;
&lt;p&gt;本当は、私のコミュニティプラットフォームを自動でフォローするような、個人的な機能を追加しようかとも思いました。&lt;/p&gt;
&lt;h3 id=&#34;機能と特徴&#34;&gt;機能と特徴&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;マルチプラットフォーム対応&lt;/strong&gt;：知乎（Zhihu）、Bilibiliなどの主要プラットフォームや、自作のオープンソースCMSシステムをサポートしています。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ステータス追跡&lt;/strong&gt;：プラグインのインターフェースで記事の同期状況を確認できます。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;アカウント管理&lt;/strong&gt;：プラグインに連携されている各プラットフォームのアカウント情報を確認できます。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;高い拡張性&lt;/strong&gt;：開発者はアダプターパターンを通じて、簡単により多くのプラットフォームに拡張できます。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全性と信頼性&lt;/strong&gt;：ブラウザ拡張機能の仕組みに基づいているため、アカウントの安全性を確保し、情報漏洩などのリスクを回避します。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;todoリスト&#34;&gt;Todoリスト&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[ ] 独立した記事エディタ&lt;/li&gt;
&lt;li&gt;[ ] 画像のワンクリック同期&lt;/li&gt;
&lt;li&gt;[x] MarkdownとHTMLの相互変換&lt;/li&gt;
&lt;li&gt;[ ] サードパーティの画像ホスティングサービス&lt;/li&gt;
&lt;li&gt;[ ] 複数アカウント管理&lt;/li&gt;
&lt;li&gt;[ ] マルチOSクライアントバージョン&lt;/li&gt;
&lt;li&gt;[ ] ワンクリックAI要約&lt;/li&gt;
&lt;li&gt;[ ] 動画の同期&lt;/li&gt;
&lt;li&gt;[ ] タグ、カテゴリのサポート&lt;/li&gt;
&lt;li&gt;[ ] より親切なエラーハンドリング&lt;/li&gt;
&lt;li&gt;[ ] より多くのプラットフォームへの対応&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;対応プラットフォーム&#34;&gt;対応プラットフォーム&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;メディア&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;カテゴリ&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;ステータス&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;URL&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;対応形式&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;更新日時&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Bilibili (哔哩哔哩)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;主要セルフメディア&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;対応済み&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://bilibili.com/&#34;&gt;https://bilibili.com/&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;HTML&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;2024/10/13&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;知乎 (Zhihu)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;主要セルフメディア&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;対応済み&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://www.zhihu.com/&#34;&gt;https://www.zhihu.com/&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;HTML&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;2024/10/13&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;博客园 (Cnblogs)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;ブログ&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;対応済み&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://cnblogs.com/&#34;&gt;https://cnblogs.com/&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;HTML&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;2024/10/14&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;新浪头条 (Sina Headline)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;主要セルフメディア&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;対応済み&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://weibo.com/&#34;&gt;https://weibo.com/&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;HTML&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;2024/10/14&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Emlog&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;オープンソースCMS&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;対応済み&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://www.emlog.net/&#34;&gt;https://www.emlog.net/&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;HTML&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;2024/10/14&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;WordPress&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;オープンソースCMS&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;対応済み&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://cn.wordpress.org/&#34;&gt;https://cn.wordpress.org/&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;HTML,Markdown&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;2024/10/14&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Discuz!&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;オープンソースCMS&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;対応済み&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://www.discuz.vip/&#34;&gt;https://www.discuz.vip/&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Markdown,Text&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;2024/10/15&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;インストール手順&#34;&gt;インストール手順&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;リポジトリをローカルにクローンします：&lt;/p&gt;</description>
    </item>
    <item>
      <title>転生：ECサイトを構築する - 萌音ECサイトV1.0リリース</title>
      <link>https://en.moejue.cn/ja/posts/203/</link>
      <pubDate>Wed, 02 Oct 2024 06:17:50 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/203/</guid>
      <description>&lt;p&gt;萌音シリーズのN+1番目のプロジェクトが来ましたね。これも実は数年間放置していたプロジェクトで、今回ようやく完成させることができました。&lt;/p&gt;
&lt;h5 id=&#34;まずはプロジェクトアドレス-httpsmoekoecn&#34;&gt;まずはプロジェクトアドレス: &lt;a href=&#34;https://MoeKoe.cn&#34;&gt;https://MoeKoe.cn&lt;/a&gt;&lt;/h5&gt;
&lt;h4 id=&#34;なぜ私はプロジェクトを作り続けているのか&#34;&gt;なぜ私はプロジェクトを作り続けているのか？&lt;/h4&gt;
&lt;p&gt;この質問はとても面白いですね。なぜ様々なプロジェクトを、しかもお金にならないものばかり作り続けているのか。私の以前のプロジェクトに触れたことのある方はご存知でしょうが、私はどんなプロジェクトも「自分が使う」という原則に基づいて制作しています。もちろん今回も例外ではありません。ずっと、どこかのプラットフォームで、持っているけれど使わず、捨てるには惜しい小物たちを売りたいと思っていました。同時に、面白くて楽しい製品を皆さんと共有したいとも思っています（将来的には私のIP製品も加わるかもしれません）。「最高の出来事や物を、最高のあなたと共有したい」という思いもありますし、「他人が持っているなら私も持つべきだ」という原則に基づいて、私も持たなければなりません。&lt;/p&gt;
&lt;p&gt;もし私がただ小物を売りたいだけなら、なぜ直接淘宝や闲鱼のようなプラットフォームを使わないのでしょうか。一歩譲って、これらのプラットフォームを使わないとしても、既存のECシステムを自分で構築することもできます。今や市場には成熟していて使いやすいシステムが山ほどあります。なぜわざわざ自分で開発する必要があるのでしょうか？&lt;/p&gt;
&lt;p&gt;一言で言えば、好きだからです。これは私の趣味で、創造することが好きで、面白いものやことをするのが好きなんです。私はただ生きているだけの凡人ではなく、すごくて面白い人間になりたい。もっと多くの面白い魂と出会いたい。「すごい」という私の定義は、技術がどれほど優れているか、お金をどれほど稼ぐかということではありません。挫折や困難に直面したときでも、笑顔で立ち向かい、楽観的であり続け、初心を忘れない人。そのような人を、私は「すごい人」と呼びたいのです。&lt;/p&gt;
&lt;p&gt;新しいプロジェクトを発表する記事なのに、またしても口語体のブログになってしまいました、ハハハ。&lt;/p&gt;
&lt;h3 id=&#34;プロジェクト紹介&#34;&gt;プロジェクト紹介&lt;/h3&gt;
&lt;p&gt;最近何をしているか？ピンクで可愛らしいもの、つまり二次元少女萌え系スタイルの魔法少女ECサイトを作っています。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;魔法少女のファンタジー世界へようこそ！二次元の無限の可能性を探る冒険の旅を始めましょう！これは二次元愛好家のために特別に作られたオンラインECサイトです。ここでは、最も輝く魔法のアイテム、最もキュートな変身コスチューム、そして豊富で多様な二次元関連商品を見つけることができます。可愛い萌えグッズに夢中な方も、クールなコレクターズアイテムがお好きな方も、二次元へのすべての愛と期待をここで満たすことができます！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;URLをクリックすると、目が覚めるような（ピンクの）感覚を覚えるでしょう。そうです、これこそ私が求めていたスタイルです。ピンクで可愛らしく、乙女心満載で、カワイイ感じ。これこそが私の個性を際立たせるのです。&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn/large/78350c19ly8hu80pi6l1vj22bm1g2kjp.jpg&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;技術スタック&#34;&gt;技術スタック&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Vue.js3&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;li&gt;Pinia&lt;/li&gt;
&lt;li&gt;Axios&lt;/li&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Express&lt;/li&gt;
&lt;li&gt;Mysql&lt;/li&gt;
&lt;li&gt;Nginx&lt;/li&gt;
&lt;li&gt;フロントエンドとバックエンドの分離&lt;/li&gt;
&lt;li&gt;MySQLスレッドプール&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vue.jsのフルスタックは本当に素晴らしいですね。ネイティブで書く手間が省けます。現在、国際化プラグイン（i18n）はこのバージョンにはまだ搭載されていません。市販のUIライブラリがこのプロジェクトの私の位置付けや個性に直接合致しないため、既存のUIライブラリは使用せず、すべて自分で手書きしました。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn/large/78350c19ly8hu80vhmhh0j21ys1fqqv7.jpg&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;紹介&#34;&gt;紹介:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;仮想通貨USDTに対応（ウォレットアドレスを入力するだけで、自動で着金を監視。外部プログラム不要。監視システムは新規注文があると自動起動し、30分間新規注文がないと自動休眠し、リソース消費を削減）&lt;/li&gt;
&lt;li&gt;Alipay対面決済に対応、即時着金、自動コールバック&lt;/li&gt;
&lt;li&gt;ユーザー登録、ログイン、ログアウト、パスワード変更、アバター変更、商品レビューに対応&lt;/li&gt;
&lt;li&gt;商品管理、商品カテゴリ管理に対応&lt;/li&gt;
&lt;li&gt;注文管理、注文決済、注文発送、物流追跡に対応&lt;/li&gt;
&lt;li&gt;商品注文データ分析に対応&lt;/li&gt;
&lt;li&gt;全サイトレスポンシブデザイン&lt;/li&gt;
&lt;li&gt;フロントエンドとバックエンドの分離&lt;/li&gt;
&lt;li&gt;MySQLスレッドプール&lt;/li&gt;
&lt;li&gt;システムの基本情報設定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn/large/78350c19ly8hu80ywg8ntj21y21f2x6p.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;最初のバージョンでは、基本的な機能と必要な機能のみを追加しました。新機能は設計段階で既に考慮されており、データベースとコードには予約がされています（そのため、あるボタンをクリックしても反応がない場合でも心配しないでください。その背後にはまだコードがないだけです）。これらは将来のバージョンで追加される予定です。現在、ECサイトでは物理的な商品の発送形式で販売していますが、将来的には仮想商品の販売も追加し、基本的に&lt;a href=&#34;https://pay.MoeKoe.cn&#34;&gt;萌音発券&lt;/a&gt;の機能をすべて統合する予定です。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn/large/78350c19ly8hu80ynckudj21lc1fs7wh.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;このプロジェクトの命名は「shop」ではなく「mall」としました。そのため、将来的には単なる店舗ではなく、ショッピングモールになる可能性があります。&lt;/p&gt;
&lt;h3 id=&#34;将来&#34;&gt;将来:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;マルチテナントモード。ユーザーが直接ECサイトへの出店を申請し、萌音ECサイトを利用して自身の製品を販売できるようにする&lt;/li&gt;
&lt;li&gt;商品の多カテゴリ分類。製品のより詳細な仕様分類&lt;/li&gt;
&lt;li&gt;より多くの決済方法。現在、作者は他の決済権限を持っていないため、2つのみ連携済み&lt;/li&gt;
&lt;li&gt;仮想商品に対応。発券機能を統合する形となる&lt;/li&gt;
&lt;li&gt;商品ポスター宣伝画像生成&lt;/li&gt;
&lt;li&gt;メールシステム。あってもなくても良い通知機能に過ぎない&lt;/li&gt;
&lt;li&gt;右下の多機能メニュー。下部の笑顔のキャラクターがスマートナビゲーションシステムになる&lt;/li&gt;
&lt;li&gt;商品インターフェースのデータ表示を追加。データが一目でわかるように&lt;/li&gt;
&lt;li&gt;多言語対応（i18n）。国際化の流れに乗り、世界へ&lt;/li&gt;
&lt;li&gt;SMSシステム。メールシステムと全く同じ&lt;/li&gt;
&lt;li&gt;Redisキャッシュ。本来はこのバージョンで追加する予定だったが、データの制御は現状でも問題ない&lt;/li&gt;
&lt;li&gt;ダークモード。これもトレンドに追随&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn/large/78350c19ly8hu80wkxv32j21wq1f2e81.jpg&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;ソースコードの入手方法&#34;&gt;ソースコードの入手方法？&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;阿珏酱に233RMB以上を寄付することでソースコードを入手できます。&lt;/li&gt;
&lt;li&gt;以前に阿珏酱を支援してくださった方々（以前の支援総額が233に満たない場合は差額を補填する形で、233を超えている場合は1元を寄付して契約を再締結するだけで直接入手できます）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;こちらをクリックして&lt;a href=&#34;https://jq.qq.com/?_wv=1027&amp;amp;k=5cvR0GN&#34;&gt;某コミュニティ公式交流グループ&lt;/a&gt;で阿珏酱を支援してください。個人のQQリンクを貼れないため、グループリンクを貼りました。グループに参加してグループ管理者に@メンションしてください。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn/large/78350c19ly8hu80y9po72j21ru1fi4qp.jpg&#34;&gt;&lt;/p&gt;
&lt;h4 id=&#34;なぜ商用版を設けないのか&#34;&gt;なぜ商用版を設けないのか？&lt;/h4&gt;
&lt;p&gt;なぜ商用版ではなく、寄付版なのか、その違いは何でしょうか？商用版となると、ライセンスシステムが必要になり、同時にソースコードが提供されない可能性もあり、技術サポートも必要で、さらに多くの完璧な機能が求められるでしょう。商用版のお金はプロジェクト自体に支払われるもので、作者とは利害関係、つまり商業契約のモデルであり、作者はそれ（人）に対して責任を負う必要があります。（私はこの感覚が特に好きではありません。これが私が稼げない理由かもしれませんね）&lt;/p&gt;
&lt;p&gt;一方、寄付版は、作者本人への寄付であり、個人の意思、友人同士の約束のような契約モデルであり、作者はプロジェクト自体にのみ責任を負います。&lt;/p&gt;
&lt;p&gt;もちろん、私が言葉遊びをしている、言葉の隙間を突いていると感じるかもしれません。だから、これは完全に寄付行為なのです。今回の寄付の敷居には少し商業的な雰囲気があるかもしれませんが、それは私と妻たちが生活のために稼がなければならないからです。&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn/large/78350c19ly8hu800yh27oj21t00t8kjl.jpg&#34;&gt;&lt;/p&gt;
&lt;h4 id=&#34;ヒント&#34;&gt;ヒント&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;寄付版ではVueフロントエンドのソースコード＋コンパイル後の静的ファイル＋Node.jsバックエンドのソースファイルを提供します。&lt;/li&gt;
&lt;li&gt;すべての寄付版で入手できるのはソースファイルであり、暗号化や難読化はされていません。漏洩しないようお願いするとともに、ご自身の権利を守るためでもあります。&lt;/li&gt;
&lt;li&gt;ソースコードの変更にはある程度の基本的なプログラミング知識が必要です。もしできない場合は、変更しないでください。&lt;/li&gt;
&lt;li&gt;宝塔パネルのデプロイサービスを1回提供します。&lt;/li&gt;
&lt;li&gt;ウェブサイトのインターフェースは少女萌え系スタイルに傾倒しており、一般的な製品には適さない可能性がありますのでご注意ください。&lt;/li&gt;
&lt;li&gt;コードは複製可能であるため、契約締結後は撤回できません。何卒ご了承ください。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn/large/78350c19ly8hu80wx88oyj21sc1g0kik.jpg&#34;&gt; 今回もこれまでと同様に、寄付版の形式でソースコードを入手できるようにしました。なぜ今回またソースコードの入手を開放したのでしょうか？以前の萌音コミュニティの影響が多少あるでしょう。萌音コミュニティは私が2ヶ月以上かけて丹念に書き上げたもので、ソースコードの寄付による入手は受け付けず、純粋に自分で運営していました。寄付を申し出た人たちは皆断りましたが、最終的には一度だけ寄付を受け取りました。結局、萌音コミュニティに申し訳ない気持ちになりました。自分の手で潰してしまい、もっと多くの人にその存在を知ってもらえなかったからです。では、なぜ直接オープンソースにしないのかというと、そうするとかえってこのプロジェクトに申し訳ないと感じるからです。誰もが簡単に手に入れられるものだと思われ、その価値が失われてしまうでしょう。直接オープンソースにはしませんが、プロジェクト関連のアーキテクチャや設計思想、一部のコードを公開し、皆さんの参考にしてもらい、学習の妨げにはならないようにします。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Discuz!フォーラム 個人スペースのCSSカスタマイズ</title>
      <link>https://en.moejue.cn/ja/posts/109/</link>
      <pubDate>Tue, 24 Mar 2020 13:23:51 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/109/</guid>
      <description>&lt;p&gt;先日、暇だったのでDiscuzフォーラムの脆弱性を探してみたところ、本当に見つかりました。ついでにツールを作成し、勢いでこの記事を書いています。
以下が事の経緯です。
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gd4tebhwgwj309s0aojss.jpg&#34;&gt;
この脆弱性はウェブサイトに大きな危害を与えるものではなく、個人スペースのCSSスタイルをカスタマイズできるだけで、サイトのデータに脅威を与えることはありませんので、ご安心ください。&lt;/p&gt;
&lt;p&gt;このツールを使えば、Discuzの個人スペースのCSSスタイルをカスタマイズでき、個人スペースを豊かに美化し、単調さをなくすことができます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;テストしたDiscuzのバージョンはX3.4です。他のバージョンはご自身でテストしてください。&lt;/li&gt;
&lt;li&gt;全球主机交流论坛（管理人さん、お許しを）でのみテストしました。同じバージョンのDiscuzであれば理論上は共通で使えるはずです。&lt;/li&gt;
&lt;li&gt;個人スペースが開設されていないフォーラムでは使用できません。&lt;/li&gt;
&lt;li&gt;カスタムCSSは多すぎないようにし、失敗を避けるために一行に圧縮することをお勧めします。&lt;/li&gt;
&lt;li&gt;プロトコルヘッダーは通常、変更する必要はありません。テキストボックスを設置したのは、主に拡張性を考慮したためです。&lt;/li&gt;
&lt;li&gt;もしlocフォーラムで操作する場合、デフォルトで阿珏ちゃんをフォローし、友達に追加します。[#手動でニヤリ + 保身のための犬アイコン]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本ソフトウェアはローカルでリクエストを送信するのみで、サーバーにデータをアップロードすることはありません。
ソフトウェアはパック（圧縮・暗号化）されているため、ウイルス対策ソフトが誤検知する可能性がありますが、安心してご使用ください&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gd46ipbb1uj30jl0drac8.jpg&#34;&gt;
&lt;strong&gt;Cookieの取得&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;ブラウザで開発者ツール（F12）を開き、対象のウェブサイトにアクセスします。ログイン状態であればどのページでも構いません。開発者ツールで「Network」タブに切り替え、ページを更新（F5）します。現在のドメインのリクエストデータを見つけてクリックし、「Headers」タブの「Request Headers」にあるcookieを探します。皆さんが私の言っていることを理解できないだろうと思ったので、特別に図を用意しました。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gd47v5klf2j30iq0hhjw1.jpg&#34;&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;2つ目の方法はより簡単で迅速ですが、どのcookieが必要か分かっている場合に適しています。下の図のように操作します。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gd47uobcsaj30nj0ammz9.jpg&#34;&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;1つ目の方法で使う開発者ツールは、以前のブログ記事でも使用しましたが、cookieの取得方法については説明していませんでした。やはり1つ目の方法をお勧めします。cookieは多くても問題ありませんが、少ないと動作しません。
&lt;strong&gt;免責事項&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;本ソフトウェアは学習と交流のみを目的としています！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;本ソフトウェアの作者は一切の責任を負いません！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;本ソフトウェアを使用した場合、本規約に同意したものとみなします！&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;ダウンロード&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;以下のダウンロードスタイルは何年も使っていませんでしたが、今日ついに復活させました。
.down_link{background:url(&amp;lsquo;&lt;a href=&#34;https://www.52ecy.cn/content/uploadfile/201707/md-bg.jpeg%27&#34;&gt;https://www.52ecy.cn/content/uploadfile/201707/md-bg.jpeg&#39;&lt;/a&gt;) no-repeat 100% 0% #fffdff; border: 1px solid #faf8fb; border-radius: 2px; color: #666; font-size: 14px; margin-bottom: 10px; padding: 5px 20px;}.downbtn{background: none repeat scroll 0 0 #1BA1E2; border: 0 none; border-radius: 2px; color: #FFFFFF; cursor: pointer; font-family: &amp;ldquo;Open Sans&amp;rdquo;,&amp;ldquo;Hiragino Sans GB&amp;rdquo;,&amp;ldquo;Microsoft YaHei&amp;rdquo;,&amp;ldquo;WenQuanYi Micro Hei&amp;rdquo;,Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;text-transform:none;text-decoration:none;} .downlink a{text-decoration:none;} .downlink a{text-decoration:none;font-size:15px;} .downlink a:link{color: #ffffff;} .downlink a:visited{color: #ffffff;} .downlink a:hover{color: #ffffff;} .downlink a:active{color: #ffffff;} .downbtn{background: none repeat scroll 0 0 #1BA1E2; border: 0 none; border-radius: 2px; color: #FFFFFF !important; cursor: pointer; font-family: &amp;ldquo;Open Sans&amp;rdquo;,&amp;ldquo;Hiragino Sans GB&amp;rdquo;,&amp;ldquo;Microsoft YaHei&amp;rdquo;,&amp;ldquo;WenQuanYi Micro Hei&amp;rdquo;,Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;} .yanshibtn{background: none repeat scroll 0 0 #d33431; border: 0 none; border-radius: 2px; color: #FFFFFF!important; cursor: pointer; font-family: &amp;ldquo;Open Sans&amp;rdquo;,&amp;ldquo;Hiragino Sans GB&amp;rdquo;,&amp;ldquo;Microsoft YaHei&amp;rdquo;,&amp;ldquo;WenQuanYi Micro Hei&amp;rdquo;,Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;text-transform:none;text-decoration:none;} .downbtn:hover,.yanshibtn:hover{background: none repeat scroll 0 0 #9B59B6; border: 0 none; border-radius: 2px; color: #FFFFFF!important; cursor: pointer; font-family: &amp;ldquo;Open Sans&amp;rdquo;,&amp;ldquo;Hiragino Sans GB&amp;rdquo;,&amp;ldquo;Microsoft YaHei&amp;rdquo;,&amp;ldquo;WenQuanYi Micro Hei&amp;rdquo;,Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;} .downbtn a:hover,.yanshibtn a:hover{background: none repeat scroll 0 0 #9B59B6; border: 0 none; border-radius: 2px; color: #FFFFFF; cursor: pointer; font-family: &amp;ldquo;Open Sans&amp;rdquo;,&amp;ldquo;Hiragino Sans GB&amp;rdquo;,&amp;ldquo;Microsoft YaHei&amp;rdquo;,&amp;ldquo;WenQuanYi Micro Hei&amp;rdquo;,Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;}&lt;/p&gt;</description>
    </item>
    <item>
      <title>ランダム二次元画像API第三弾</title>
      <link>https://en.moejue.cn/ja/posts/108/</link>
      <pubDate>Tue, 10 Mar 2020 08:51:35 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/108/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gcoxw1p6y1j30ya0o74qp.jpg&#34;&gt;&lt;br&gt;
本来、第二弾をトップに固定していたので、第三弾を出すつもりはありませんでした。しかし、考えているうちにまたたくさんの言葉が溢れてきて、出さないのはもったいないと思い、こうして公開することにしました。&lt;/p&gt;
&lt;p&gt;前回の更新から2年が経ち、APIも2年数ヶ月間安定して稼働しています。今回の主な更新は、チュートリアル画像1枚と、3000枚以上のランダムな二次元API画像の追加、そしてインターフェースの最適化です。だいたいこんな感じです。&lt;/p&gt;
&lt;p&gt;すべての画像は新浪雲サーバーにホストされており、グローバルCDNアクセラレーションを備えています。&lt;a href=&#34;https://img.52ecy.cn&#34;&gt;幻想領域&lt;/a&gt;が提供するアップロードサービスに感謝します。&lt;/p&gt;
&lt;h2 id=&#34;インターフェースアドレス&#34;&gt;インターフェースアドレス：&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://random.52ecy.cn/randbg.php&#34;&gt;https://random.52ecy.cn/randbg.php&lt;/a&gt; (推奨)&lt;/p&gt;
&lt;h2 id=&#34;パラメータ&#34;&gt;パラメータ&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;パラメータ名&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;説明&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;size (オプション)&lt;/p&gt;
&lt;p&gt;値：0～7、返される画像のサムネイル（サイズ）レベル。数字が大きいほど画像はぼやけ、画像サイズは小さくなります。デフォルトは0です。例：https://random.52ecy.cn/randbg.php?size=4&lt;/p&gt;
&lt;p&gt;type (オプション)&lt;/p&gt;
&lt;p&gt;値：pc、mobile、返される画像のタイプ。pcはPC版壁紙、mobileはモバイル版壁紙（縦画面）です。デフォルトはpcです。例：https://random.52ecy.cn/randbg.php?type=mobile&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;番外編&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;多くの人からAPIをオープンソースにするかどうか尋ねられましたが、必要ないと思っています。オープンソースと呼ぶことすらできません。数行のコードと2つのコマンドだけなので、公開するのは恥ずかしいくらいです。&lt;/p&gt;
&lt;p&gt;$file_arr = file(&amp;lsquo;data.php&amp;rsquo;);
$key = array_rand($file_arr);&lt;/p&gt;
&lt;p&gt;このような書き方には効率性の問題があると言う人もいるかもしれませんが、私は、画像が数十万枚に達しておらず、ファイルサイズが数十メガバイトを超えない限り、効率性を考慮する必要はないと言います。&lt;br&gt;
方法は多種多様であり、自分に合ったものが最善です。&lt;/p&gt;
&lt;p&gt;ちなみに、最初のインターフェースは負荷に耐えきれず、無期限に停止しました。&lt;br&gt;
一枚の画像がきっかけで更新することになるとは、本当に偶然ですね（強制更新）。&lt;br&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gcnwd5cq1tj31hc0u0h80.jpg?referrer=https://cdn.sinaimg.cn.52ecy.cn&#34;&gt;&lt;br&gt;
&lt;strong&gt;更新履歴&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;2020年3月23日&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;typeパラメータを更新。値：pc、mobile&lt;/li&gt;
&lt;li&gt;モバイル画像1000枚を追加&lt;/li&gt;
&lt;li&gt;PC画像1000枚を追加&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>美しすぎるAlibaba Cloud画像ホスティングツール</title>
      <link>https://en.moejue.cn/ja/posts/104/</link>
      <pubDate>Sun, 12 Jan 2020 08:42:16 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/104/</guid>
      <description>&lt;p&gt;一度サボると気持ちいい、ずっとサボればずっと気持ちいい。うっかりまた一ヶ月も更新をサボってしまい、元旦にさえ顔を出すこともなく、お恥ずかしい限りです。&lt;br&gt;
その埋め合わせとして、今日の週末にAlibaba画像アップローダーを一つ公開します。&lt;/p&gt;
&lt;p&gt;以前のプログラムは多くの方からインストールが難しいと言われましたが、今回のAlibaba画像アップローダーは非常にシンプルです。サーバーにアップロードしてアクセスするだけで利用でき、設定は一切不要。本当にこれだけです。（決して手抜きで何も書いていないわけではありません）&lt;br&gt;
インターフェースをご覧ください。とても美しいでしょう？&lt;br&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gatvrtj7qwj30g00ohtdt.jpg&#34;&gt;&lt;br&gt;
非常にシンプルなため、今のところデモサイトはありません。もし設置が完了した方がいらっしゃれば、下部のコメント欄にご自身のアップローダーのURLを投稿して、他の方々の参考にしていただけると幸いです。&lt;br&gt;
&lt;a href=&#34;https://github.com/iAJue/Alibaba_pic&#34;&gt;プロジェクトページ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ここ数日で新しいロゴに変更しました。これもまた綺麗でしょう？（会社のPhotoshopの達人にお願いして作ってもらいました）&lt;br&gt;
&lt;a href=&#34;https://img.52ecy.cn&#34;&gt;幻想領域&lt;/a&gt;画像アップローダーも認証コードを導入しました。皆さん、不適切な画像をアップロードしないようにお願いしますね。&lt;/p&gt;
&lt;p&gt;最後に&lt;br&gt;
遅くなってしまいましたが、それでも言わせてください。皆様の新しい一年が、楽しく幸せなものでありますように！&lt;br&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1gatw2vof1hj31w32pf7wh.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>感熱ブルートゥースプリンター開発</title>
      <link>https://en.moejue.cn/ja/posts/100/</link>
      <pubDate>Tue, 05 Nov 2019 14:49:50 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/100/</guid>
      <description>&lt;p&gt;最近、レシート印刷の作業をしており、プロジェクトの要件としてiOSとAndroidの両方で実装する必要がありました。最初は全く分からず、インターネットで多くの資料を探し、たくさんの落とし穴にはまり、多くの記事を読みましたが、結果的にはうまくいきました。
Bluetoothプリンターは一般的に、レシート印刷とラベル印刷の2種類の印刷モードに分けられます。&lt;/p&gt;
&lt;p&gt;会社が購入した粗悪なプリンターには開発ドキュメントすらなく、多くの落とし穴にはまる羽目になりました。開発担当者に購入時に相談してくれればよかったのに。
現在、WeChatミニプログラムでBluetoothプリンターに接続する &lt;code&gt;wx.createBLEConnection&lt;/code&gt; は、iOSデバイスでは問題なく動作しますが、一部のAndroidスマートフォンでは異常が発生します（接続時にシステムペアリングボックスがポップアップ表示され、キャンセルをタップしても、ペアリングコードを入力して確定をタップしても、すぐに接続が切断されます。入力もキャンセルもしない場合、30秒以内にBluetoothプリンターから自動的に切断されます）。&lt;/p&gt;
&lt;p&gt;現在採用している方法は、AndroidとiOSそれぞれにBluetooth印刷コマンドのセットを作成することです。
&lt;strong&gt;IOS&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// ====================蓝牙操作==================  //初始化蓝牙模块
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;openBluetoothAdapter&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;sysinfo&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;provider&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 开启蓝牙
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;onBluetooth&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;setTimeout&lt;/span&gt;(() =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;android_search&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }, &lt;span style=&#34;color:#ae81ff&#34;&gt;2000&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;closeBluetoothAdapter&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;openBluetoothAdapter&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;success&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;初始化蓝牙模块: &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;JSON&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;stringify&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;));
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;startBluetoothDevicesDiscovery&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;fail&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;errCode&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;10001&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;onBluetoothAdapterStateChange&lt;/span&gt;((&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;监听蓝牙适配器状态变化事件&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;available&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;connected&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;chs&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; []
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;canWrite&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;available&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;startBluetoothDevicesDiscovery&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;errCode&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;alert&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;初始化蓝牙失败，错误码：&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;errCode&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;alert&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;errMsg&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//获取本机蓝牙适配器状态
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;getBluetoothAdapterState&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;getBluetoothAdapterState&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;success&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;获取本机蓝牙适配器状态。&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;JSON&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;stringify&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;discovering&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;onBluetoothDeviceFound&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            } &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;available&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;startBluetoothDevicesDiscovery&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;fail&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;error:获取本机蓝牙适配器状态失败&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;JSON&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;stringify&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;setTimeout&lt;/span&gt;(() =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;getBluetoothAdapterState&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }, &lt;span style=&#34;color:#ae81ff&#34;&gt;500&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//开始搜寻附近的蓝牙外围设备
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;startBluetoothDevicesDiscovery&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;discoveryStarted&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;discoveryStarted&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;开始搜索蓝牙设备&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;discoveryStarted&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;onBluetoothDeviceFound&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;setTimeout&lt;/span&gt;(() =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;startBluetoothDevicesDiscovery&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;allowDuplicatesKey&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;success&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;startBluetoothDevicesDiscovery success&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;JSON&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;stringify&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;fail&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;errCode&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;10001&amp;#39;&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;alert&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;当前蓝牙适配器不可用&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                } &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;alert&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;搜索蓝牙失败,状态码：&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;errCode&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }, &lt;span style=&#34;color:#ae81ff&#34;&gt;500&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// 停止搜索
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;stopBluetoothDevicesDiscovery&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;stopBluetoothDevicesDiscovery&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;discoveryStarted&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//寻找到新设备的事件的回调函数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;onBluetoothDeviceFound&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;寻找到新设备的事件的回调函数&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;onBluetoothDeviceFound&lt;/span&gt;((&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;devices&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;forEach&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;device&lt;/span&gt; =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;device&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;device&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;localName&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;foundDevices&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;devices&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;idx&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;inArray&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;foundDevices&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;deviceId&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;device&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;idx&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;devices&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;push&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;device&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            } &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;devices&lt;/span&gt;[&lt;span style=&#34;color:#a6e22e&#34;&gt;idx&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;device&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//连接低功耗蓝牙设备
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;createBLEConnection&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;e&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;showLoading&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;title&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;设备连接中&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;mask&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ds&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;e&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;currentTarget&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;dataset&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ds&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ds&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;sysinfo&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;provider&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;ds&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;pair&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!==&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;android_search&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        } &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;已配对&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;device&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;BAdapter&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;BluetoothAdapter&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;uuid&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;bluetoothSocket&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;mac_address&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;plus&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;android&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;runtimeMainActivity&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;BluetoothAdapter&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;plus&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;android&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;importClass&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;android.bluetooth.BluetoothAdapter&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;UUID&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;plus&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;android&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;importClass&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;java.util.UUID&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;uuid&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;UUID&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;fromString&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;00001101-0000-1000-8000-00805F9B34FB&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;BAdapter&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;BluetoothAdapter&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;getDefaultAdapter&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;device&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;BAdapter&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;getRemoteDevice&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;mac_address&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;plus&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;android&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;importClass&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;device&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;bluetoothSocket&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;device&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;createInsecureRfcommSocketToServiceRecord&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;uuid&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;plus&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;android&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;importClass&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;bluetoothSocket&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;bluetoothSocket&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;isConnected&lt;/span&gt;()) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;检测到设备未连接，尝试连接....&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;bluetoothSocket&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;connect&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;connected&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;canWrite&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;saveData1&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;global_printing&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;hideLoading&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;createBLEConnection&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;success&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;connected&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;onBLEConnectionStateChange&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// 防止获取失败
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;setTimeout&lt;/span&gt;(() =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;getBLEDeviceServices&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }, &lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;fail&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;hideLoading&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Toast&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;设备连接失败&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;蓝牙连接失败:&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;stopBluetoothDevicesDiscovery&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//获取蓝牙设备所有服务(service)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;getBLEDeviceServices&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;getBLEDeviceServices&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;success&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;获取蓝牙服务成功：&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;JSON&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;stringify&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;services&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;length&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;hideLoading&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;alert&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;没有获取到蓝牙服务，无法打印001&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;; &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;services&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;length&lt;/span&gt;; &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;++&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;services&lt;/span&gt;[&lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt;].&lt;span style=&#34;color:#a6e22e&#34;&gt;isPrimary&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;getBLEDeviceCharacteristics&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;services&lt;/span&gt;[&lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt;].&lt;span style=&#34;color:#a6e22e&#34;&gt;uuid&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;fail&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;setTimeout&lt;/span&gt;(() =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;getBLEDeviceServices&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }, &lt;span style=&#34;color:#ae81ff&#34;&gt;500&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;获取蓝牙服务失败：&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;JSON&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;stringify&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//获取蓝牙设备某个服务中所有特征值(characteristic)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;getBLEDeviceCharacteristics&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;serviceId&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;获取蓝牙设备某个服务中所有特征值&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;serviceId&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;getBLEDeviceCharacteristics&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;serviceId&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;success&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;获取蓝牙设备某个服务中所有特征值 success&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;JSON&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;stringify&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;hideLoading&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;characteristics&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;length&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;alert&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;没有获取到蓝牙服务，无法打印002&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;; &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;characteristics&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;length&lt;/span&gt;; &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;++&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;item&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;characteristics&lt;/span&gt;[&lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;item&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;properties&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;read&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;readBLECharacteristicValue&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#a6e22e&#34;&gt;serviceId&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#a6e22e&#34;&gt;characteristicId&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;item&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;uuid&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;item&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;properties&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;write&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;canWrite&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;_deviceId&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;_serviceId&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;serviceId&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;_characteristicId&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;item&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;uuid&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;saveData1&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;global_printing&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;//this.writeBLECharacteristicValue()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;                }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;item&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;properties&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;notify&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;item&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;properties&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;indicate&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;notifyBLECharacteristicValueChange&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#a6e22e&#34;&gt;serviceId&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#a6e22e&#34;&gt;characteristicId&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;item&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;uuid&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#a6e22e&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;fail&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;error&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;获取特征值失败：&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;// 操作之前先监听，保证第一时间获取数据
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;onBLECharacteristicValueChange&lt;/span&gt;((&lt;span style=&#34;color:#a6e22e&#34;&gt;characteristic&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;chs&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;idx&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;inArray&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;chs&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;uuid&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;characteristic&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;characteristicId&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;idx&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;chs&lt;/span&gt;[&lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;chs&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;length&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;uuid&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;characteristic&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;characteristicId&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ab2hex&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;characteristic&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        } &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;chs&lt;/span&gt;[&lt;span style=&#34;color:#a6e22e&#34;&gt;idx&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;uuid&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;characteristic&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;characteristicId&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ab2hex&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;characteristic&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;onBLEConnectionStateChange&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;onBLEConnectionStateChange&lt;/span&gt;((&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 该方法回调中可以用于处理连接意外断开等异常情况
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;`蓝牙连接状态改变device &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; state has changed, connected: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;connected&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;connected&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;connected&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;chs&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; []
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;canWrite&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//断开与低功耗蓝牙设备的连接
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;closeBLEConnection&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;closeBLEConnection&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;connected&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;chs&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; []
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;canWrite&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//关闭蓝牙模块
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;closeBluetoothAdapter&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;closeBluetoothAdapter&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;discoveryStarted&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//发送数据
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;sendStr&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;bufferstr&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;success&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;fail&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;that&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;uni&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;writeBLECharacteristicValue&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;deviceId&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;_deviceId&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;serviceId&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;_serviceId&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;characteristicId&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;global_printing&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;_characteristicId&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;bufferstr&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;success&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;success&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;发送的数据：&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;bufferstr&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// console.log(&amp;#39;message发送成功&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;fail&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;fail&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;数据发送失败:&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;JSON&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;stringify&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;complete&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// console.log(&amp;#34;发送完成:&amp;#34; + JSON.stringify(res))
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//遍历发送数据
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;printCode&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;arr&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;that&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;arr&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;length&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;sendStr&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;arr&lt;/span&gt;[&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;], &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;success&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;arr&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;shift&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;that&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;printCode&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;arr&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }, &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;error&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;alert&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;打印失败，错误码：&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;error&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;errCode&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;printing_status&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;error&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;setTimeout&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;printing_status&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;打印结束&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }, &lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Android&lt;/strong&gt;
比較的シンプルで便利です。Native.jsを使用してNative Javaインターフェースチャネルを直接呼び出し、&lt;code&gt;plus.android&lt;/code&gt;を介してAndroidネイティブシステムAPIを呼び出します。
ネイティブAndroidドキュメント &lt;a href=&#34;https://developer.android.google.cn/reference/android/bluetooth/BluetoothAdapter?hl=en&#34;&gt;https://developer.android.google.cn/reference/android/bluetooth/BluetoothAdapter?hl=en&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>サボっていた主が、新版の三合一を持って帰ってきました。</title>
      <link>https://en.moejue.cn/ja/posts/15/</link>
      <pubDate>Sun, 04 Aug 2019 01:42:18 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/15/</guid>
      <description>&lt;p&gt;5月20日の告白以来、ハト主は行方不明の状態が続いていました&amp;hellip;&amp;hellip;.
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1g5nlxy8to3j306o05b75f.jpg&#34;&gt;
何ヶ月ぶりか分かりませんが、三合一がまた更新されました。2ヶ月前にグループで立てた目標を、今日達成しました。間の2ヶ月間何をしていたかは聞かないでください-.-（大規模なハトの集会に参加するのに忙しかった）&lt;/p&gt;
&lt;h2 id=&#34;正文&#34;&gt;正文&lt;/h2&gt;
&lt;p&gt;ネットワーク認識が頻繁にダウンし、非常に不安定であるというフィードバックを多くの仲間から受けていたため、今回特別にローカル認識を更新しました。
1G以上のメモリを搭載したマシンへのインストールを推奨します。推奨構成は2コア2G、最適構成は16コア32Gです [#手動顔文字]&lt;/p&gt;
&lt;h4 id=&#34;v20&#34;&gt;v2.0&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;ローカルQRコード認識と生成を追加&lt;/li&gt;
&lt;li&gt;ネットワーク認識インターフェースを削除&lt;/li&gt;
&lt;li&gt;既知のバグを修正&lt;/li&gt;
&lt;li&gt;その他のいくつかの詳細な最適化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;詳細な説明とインストールチュートリアルは、&lt;a href=&#34;https://www.52ecy.cn/post-88.html&#34;&gt;こちら&lt;/a&gt;をクリックして以前のバージョンをご覧ください。
新しいバージョンのウェブサイトはすべて古いバージョンのデータを保持しており、以前のユーザーの使用には影響せず、スポンサー版のデータとも同期されています。&lt;/p&gt;
&lt;h4 id=&#34;スポンサー版&#34;&gt;スポンサー版&lt;/h4&gt;
&lt;p&gt;旧バージョンの海賊版が横行していたため、新版の三合一にはスポンサー版が追加されました。
デモサイト：&lt;a href=&#34;https://qr.moeins.cn/&#34;&gt;https://qr.moeins.cn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;スポンサー版の主な特徴：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;QRコードの認識と生成を最適化し、認識精度を大幅に向上させ、認識速度を高速化し、CPUとメモリを占有せず、より安定しています。&lt;/li&gt;
&lt;li&gt;21種類の三合一生成テンプレートを新規追加し、無限拡張をサポートします。追加チュートリアルは文末にあります。&lt;/li&gt;
&lt;li&gt;外部APIインターフェースを新規追加しました。このプログラムに限定されず、どのプログラムからでも呼び出し可能です。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;入手方法：
&lt;a href=&#34;https://pay.52ecy.cn/?cid=23&#34;&gt;こちら&lt;/a&gt;をクリックして18.88元以上をプロジェクトに寄付すると、決済コード三合一のスポンサー限定版を入手できます。ぜひお試しください！&lt;/p&gt;
&lt;p&gt;スポンサー版に関するいくつかの小さな説明（これまでは特に説明していませんでした）
これまでのところ、私のすべてのスポンサー版プロジェクトはドメインに縛られず、暗号化されておらず、自由に拡張でき、二次開発をサポートしており、スポンサー金額も低く設定されています。そのため、スポンサーしてくださった方々は、入手したソースコードを安易に共有しないようお願いいたします。これは作者への敬意であり、ご自身の権利の保護でもあります。売買関係ではないため、重大なバグがない限り、作者は不定期に更新するか、無期限に更新を延期する場合があります。小さな問題が発生した場合、作者が空いている時間であれば指導や修正を手伝う用意がありますが、大規模な新機能の追加といった場合には、協力を拒否するか、別途料金をいただく権利があります。&lt;/p&gt;
&lt;h4 id=&#34;スポンサー版テンプレート拡張チュートリアル&#34;&gt;スポンサー版テンプレート拡張チュートリアル&lt;/h4&gt;
&lt;p&gt;テンプレートの推奨サイズは：900*1200&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;テンプレート画像を&lt;code&gt;/public/static/images/template/&lt;/code&gt;テンプレートディレクトリに配置します。注意点として、中国語名を使用せず、jpg拡張子のみをサポートします。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ルートディレクトリの&lt;code&gt;config.php&lt;/code&gt;にある&lt;code&gt;qr_template&lt;/code&gt;項目に関連データを以下のような形式で設定します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;001&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;name&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;默认模板&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;data&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#ae81ff&#34;&gt;150&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;title&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;size&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;パラメータ説明&#34;&gt;パラメータ説明&lt;/h4&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;名称&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;変数名&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;必須&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;型&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;例&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;説明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;テンプレートID&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;なし&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;はい&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;001&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;テンプレートのファイル名。数字を推奨し、重複不可。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;エイリアス&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;name&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;はい&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;デフォルトテンプレート&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;フロントエンドに表示されるテンプレートのエイリアス&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;X,Y&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;data&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;はい&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;array&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;[150,200]&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;QRコード生成の左上隅の開始X（横座標）、Y（縦座標）座標。負の値は不可で、テンプレートサイズより小さいこと。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;テンプレートタイトル&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;title&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;いいえ&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;bool&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;false&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;テンプレートタイトルを有効にするかどうか。テンプレートがサポートしている場合（デフォルトテンプレートなど）に使用。空でも可。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;サイズ&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;size&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;いいえ&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;int&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;20&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;QRコードの生成サイズ。デフォルトは20。空でも可。&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;はい、とても簡単です！
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1g5nlv1bwkrj311d0llgts.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>萌音クラウドノートプラットフォーム</title>
      <link>https://en.moejue.cn/ja/posts/78/</link>
      <pubDate>Tue, 06 Nov 2018 09:36:32 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/78/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://note.52ecy.cn/&#34; title=&#34;公式サイト&#34;&gt;公式サイト&lt;/a&gt; | &lt;a href=&#34;http://shang.qq.com/wpa/qunwpa?idkey=826e8e5961b8acf3eb7bb4fd8595a59e38deb618deaee70912dd0c4cd9f7457&#34; title=&#34;公式交流グループ&#34;&gt;公式交流グループ&lt;/a&gt; | &lt;a href=&#34;https://www.52ecy.cn/&#34; title=&#34;Blog&#34;&gt;ブログ&lt;/a&gt; | &lt;a href=&#34;https://github.com/178146582/note&#34; title=&#34;GitHub&#34;&gt;GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;エレガントなLaravel &lt;code&gt;+&lt;/code&gt; 非常に使いにくいMDUI &lt;code&gt;=&lt;/code&gt; 萌音クラウドノート。効率的なオンラインクラウドノートであり、技術文書のオンライン作成、閲覧、共有、ホスティングに特化しています。&lt;/p&gt;
&lt;h4 id=&#34;プロジェクトの起源&#34;&gt;プロジェクトの起源&lt;/h4&gt;
&lt;p&gt;ある日、&lt;a href=&#34;http://shang.qq.com/wpa/qunwpa?idkey=826e8e5961b8acf3eb7bb4fd8595a59e38deb618deaee70912dd0c4cd9f7457&#34; title=&#34;某コミュニティ公式交流グループ&#34;&gt;某コミュニティ公式交流グループ&lt;/a&gt;で、グループオーナーのRBQがこう言いました：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;クラウドノートを書いてくれない？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;また、ブロガーに残された時間が少ないため、多くの計画中の機能は断念されました&amp;hellip;..残念╮(╯▽╰)╭
まあ、私は通常プロジェクトの機能を紹介するのが好きではないので、ご自身で発見してください！&lt;/p&gt;
&lt;p&gt;これは今年書いた最後のプロジェクトになるかもしれません。なぜなら、ブログのサブタイトルに書かれているように、私は夢を追いかけるからです。
今年も年初の目標を達成しました。完璧〜！&lt;/p&gt;
&lt;h2 id=&#34;インストール要件&#34;&gt;インストール要件&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;LNMP/AMP PHP5.6.4+&lt;/li&gt;
&lt;li&gt;OpenSSL、PDO、Mbstring、Tokenizer、XML、fileinfo&lt;/li&gt;
&lt;li&gt;Composer&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ダウンロード&#34;&gt;ダウンロード&lt;/h2&gt;
&lt;h4 id=&#34;1-このプロジェクトをクローン&#34;&gt;1. このプロジェクトをクローン&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git clone https://github.com/178146582/note.git
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;2-composerで拡張パッケージをインストール&#34;&gt;2. composerで拡張パッケージをインストール&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;composer install
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;3-laravelのインストールを参照&#34;&gt;3. Laravelのインストールを参照&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;途中の1万ステップは省略&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;xx-完了&#34;&gt;xx. 完了&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;このプロジェクトにStarを付けてください〜（注意、これは特に重要です）&lt;/li&gt;
&lt;li&gt;あなたのドメインにアクセスするだけです&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;寄付ここをクリック&#34;&gt;&lt;a href=&#34;https://pay.52ecy.cn/?cid=23&amp;amp;pid=22&#34; title=&#34;寄付&#34;&gt;寄付❤ここをクリック&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fwxbu85mz8j30tl0owtas.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fwxbudsr9cj30u00gwjs5.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>萌音影视 - オンライン動画アプリ</title>
      <link>https://en.moejue.cn/ja/posts/75/</link>
      <pubDate>Tue, 25 Sep 2018 07:41:02 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/75/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.52ecy.cn/&#34;&gt;ブログ&lt;/a&gt; | &lt;a href=&#34;https://www.moeins.cn/&#34;&gt;デモサイト&lt;/a&gt; | &lt;a href=&#34;http://shang.qq.com/wpa/qunwpa?idkey=618c7f3214a5c5ed06c9343a395371a8b27318e5190491bf7283fbf7468e35d7&#34;&gt;QQグループ&lt;/a&gt; | &lt;a href=&#34;https://github.com/178146582/moeins&#34;&gt;GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;洗練されたLaravelフレームワークと、全然可愛くないMeizi UIに基づいたオンライン動画アプリケーション&lt;/p&gt;
&lt;h4 id=&#34;作者より&#34;&gt;作者より&lt;/h4&gt;
&lt;p&gt;オンライン動画サイトはどこにでも溢れていますが、それは私が自分で一つ書くことを妨げるものではありません。こうすれば、後で自分でアニメを見るのも便利になりますし、結局、自分で手を動かしてこそ豊かになれるものです。さらに新しい知識も学べるのですから、なんと素晴らしいことでしょう。&lt;/p&gt;
&lt;p&gt;ページデザインは一部のウェブサイトを参考にしました。動画リソースはすべてインターネットからのものです。もし著作権侵害がありましたら、速やかにご連絡ください。&lt;/p&gt;
&lt;p&gt;一緒にあのうんざりする60秒広告を捨てましょう〜&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;データベースなし、バックエンドモードなし、設定ファイルは一つだけ(&lt;code&gt;config/web.php&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;広告なし、VIP解析をサポート、公式ソース、高速、多チャンネル、多カテゴリ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To-do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;独立したチャンネルホームページ&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;テレビ局ライブ配信&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;複数の解析インターフェース&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;追加予定&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;スポンサー限定版&#34;&gt;スポンサー限定版&lt;/h4&gt;
&lt;p&gt;これはデュアルバージョンアプリケーションです。つまり、2つの異なるバージョンがあります。スポンサー版は通常版を最適化したもので、機能とパフォーマンスが大幅に向上し、実行速度が大幅に向上し、優先的な更新が維持されます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;さて、問題です。スポンサー限定版はどのように入手できますか？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/178146582/qr#author&#34;&gt;ここ&lt;/a&gt; または &lt;a href=&#34;https://pay.52ecy.cn/&#34;&gt;ここ&lt;/a&gt; でプロジェクトに58元以上を寄付することで入手できます。&lt;/p&gt;
&lt;p&gt;もちろん、もしプロジェクトがあなたのお役に立てたなら、またはあなたが必要とするなら、私たちを支援することを選択できます。たとえわずかな金額でも、それは愛です。&lt;/p&gt;
&lt;p&gt;オープンソースプロジェクトを書く人が利益のために書くことはないと思います。結局のところ、それはレンガ工場で一日レンガを運ぶよりも稼げないからです。&lt;/p&gt;
&lt;h2 id=&#34;インストール要件&#34;&gt;インストール要件&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;LNMP/AMP (PHP5.6+が必要)&lt;/li&gt;
&lt;li&gt;curl、OpenSSL拡張機能&lt;/li&gt;
&lt;li&gt;Composer&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;composerによるメインプログラムのインストール&#34;&gt;Composerによるメインプログラムのインストール&lt;/h2&gt;
&lt;h4 id=&#34;1-composerを使用してmoeinsをインストール&#34;&gt;1. Composerを使用してmoeinsをインストール&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ composer create-project a-jue/moeins 
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#依存ライブラリのインストール後、インストールスクリプトが自動的に実行されます
#以下のプロンプトが表示されたらインストール完了です

&amp;gt; Illuminate\Foundation\ComposerScripts::postInstall
&amp;gt; php artisan optimize
Generating optimized class loader
The compiled services file has been removed.
&amp;gt; php artisan key:generate
Application key [base64:Hx0I9UUQg7OyIz8lpDYG6Y/gW1uxS760ERdWfGG2jyQ=] set successfully. 
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;2-ディレクトリ権限&#34;&gt;2. ディレクトリ権限&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;public&lt;/code&gt;サブディレクトリを公開Webディレクトリとして設定します&lt;/p&gt;
&lt;h4 id=&#34;3-urlリライト&#34;&gt;3. URLリライト&lt;/h4&gt;
&lt;p&gt;Apacheサーバーの場合、プロジェクトディレクトリ内の&lt;code&gt;.htaccess&lt;/code&gt;にはすでにリライトルールが設定されています。必要に応じて適宜修正してください。Nginxサーバーの場合、以下は参考となる設定です：&lt;/p&gt;</description>
    </item>
    <item>
      <title>QQ、支付宝（アリペイ）、微信支付（WeChat）の3つの決済コードが1つに</title>
      <link>https://en.moejue.cn/ja/posts/73/</link>
      <pubDate>Fri, 24 Aug 2018 06:23:20 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/73/</guid>
      <description>&lt;h2 id=&#34;receive-the-money&#34;&gt;Receive the money&lt;/h2&gt;
&lt;p&gt;ラ受け取りは、アリペイ、ウィーチャット、QQキャッシュコードの3つの統合システムです。&lt;/p&gt;
&lt;p&gt;thinkPHP5.0 + MySQL + layuiで完成しました。&lt;/p&gt;
&lt;p&gt;デモサイト：&lt;a href=&#34;https://qr.52ecy.cn&#34;&gt;Paypal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;プロジェクトアドレス: &lt;a href=&#34;https://github.com/178146582/qr&#34;&gt;GitHub&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;序文&#34;&gt;序文&lt;/h2&gt;
&lt;p&gt;チュートリアルも既成のコードも、インターネット上ではほとんどどこにでもある。&lt;/p&gt;
&lt;p&gt;QRコードのアップロード、QRコードの識別、3-in-one支払いコードの生成、プロセスサービスの完全なセットを含む&lt;code&gt;セット&lt;/code&gt;という言葉の具体化です。&lt;/p&gt;
&lt;p&gt;3 in 1の大部分は個人的な使用のためだけであり、お金ラのコレクションは、複数のユーザーに3 in 1のサービスを提供することができます。&lt;/p&gt;
&lt;p&gt;しかし、それは背景を持っていない、2つの主な理由があります：&lt;/p&gt;
&lt;p&gt;1.頻繁に表示したり、構成、構成、生涯使用を変更する必要はありません。&lt;/p&gt;
&lt;p&gt;2.著者の怠惰な癌の攻撃（また、インストールウィザードの不在を促した）&lt;/p&gt;
&lt;p&gt;3.あなたが本当にそれを必要とする場合は、後でそれについて話します&lt;/p&gt;
&lt;p&gt;コード自体は比較的軽量で、フレームワークを使っているためにサイズが大きくなっている。&lt;/p&gt;
&lt;p&gt;まあ、技術的な内容自体はなく、ほとんど使われない、人間の必要性に応じて書かれている、ちなみに、水水テキスト〜〜エスケープ（-）。&lt;/p&gt;
&lt;h2 id=&#34;原則&#34;&gt;原則&lt;/h2&gt;
&lt;p&gt;3つのコードが1つになった領収書、とても魔法のように聞こえるし、感じるが、実際には、原理は非常に簡単です！&lt;/p&gt;
&lt;p&gt;QRコードは、実際には一連の文字列を含む単なる画像である。アリペイであれWeChatの支払いコードであれ、基本的には支払いリンクを含むQRコードなのだ。つまり、アリペイの閲覧ページであればアリペイの決済リンクを、WeChatであればWeChatのリンクを&amp;hellip;&amp;hellip;という具合だ。&lt;/p&gt;
&lt;p&gt;そして、ここには「ユーザーエージェント」というナレッジポイントがあり、例えばウェブビューの大手メーカーは独自のUA情報を持っている：&lt;/p&gt;
&lt;p&gt;QQ: &lt;code&gt;MQQBrowser/6.2 TBS/043221 Safari/537.36 QQ/7.0.0.3135&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;WeChat: &lt;code&gt;MQQBrowser/6.2 TBS 043220 Safari/537.36 MicroMessenger/6.5.8.1060 NetType/4G Language/zh_CN&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Alipay: &lt;code&gt;UCBrowser/11.5.0.939 UCBS/2.10.1.6 Mobile Safari/537.36 AliApp(AP/10.0.15.051805) AlipayClient/10.0.15.051805 Language/zh-Hans&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;これでQQなのかWeChatなのかアリペイのスキャンなのか一目瞭然：&lt;/p&gt;
&lt;p&gt;ユーザーエージェント`にQQ/が含まれている。&lt;/p&gt;
&lt;p&gt;MicroMessengerを含む&lt;code&gt;User-Agent&lt;/code&gt;はWeChatです。&lt;/p&gt;
&lt;p&gt;User-Agent` には AlipayClient が含まれています。&lt;/p&gt;
&lt;p&gt;各ソフトウェアを区別できるので、URLを作成し、QRコード生成でURLをスキャンし、ブラウザのUAを判別して異なる決済コードを配信することができる。&lt;/p&gt;
&lt;p&gt;大まかには以下のような流れになる：&lt;/p&gt;
&lt;p&gt;クライアントがコードをスキャン → サーバが &lt;code&gt;User-Agent&lt;/code&gt; によってクライアントの種類を判別 → 異なる処理を返す&lt;/p&gt;
&lt;p&gt;これも注目に値する：&lt;/p&gt;
&lt;p&gt;QQ: httpsプロトコルは、QQを起こすことができない。&lt;/p&gt;
&lt;p&gt;アリペイ：httpsプロトコル、直接アリペイAPPを起動することができます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>萌音コミュニティがやってきたよ〜！わぁ！</title>
      <link>https://en.moejue.cn/ja/posts/27/</link>
      <pubDate>Sat, 07 Jul 2018 07:41:09 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/27/</guid>
      <description>&lt;p&gt;2ヶ月の情熱を込めた作品、萌音コミュニティがついに登場！
新世代のオープンな二次元交流コミュニティとして、画像、動画、音声、さらにはブラックテクノロジーなど、許可された範囲内で、ほぼあらゆるコンテンツを投稿できます&amp;hellip;&lt;/p&gt;
&lt;p&gt;幻想領域は去り、萌音コミュニティがやってきた！女装男子、BL、百合、えええっなロリ、緩♀交探し、哲♂学談義など、何でもあり！古来より赤と青はCP（カップル）になり、百合かBLのどちらかだ。さあ、私たちと契約しよう！&lt;/p&gt;
&lt;p&gt;萌音コミュニティは、超楽しいACGN二次元交流コミュニティ、愛と調和に満ちた二次元コミュニティです。新作アニメ、旧作アニメ、日本のアニメ画像、福利アニメ、MMDなど、ACGNリソースが何でも揃っています。みんなでツッコミを入れ、弾幕を流し、コスプレ仲間を見つけ、二次元オタクの日常を共有し、二次元の素晴らしい世界へ飛び込もう！
&lt;a href=&#34;https://www.moeins.com&#34;&gt;主站点 www.moeins.com&lt;/a&gt;
&lt;a href=&#34;https://www.moeins.cn/&#34;&gt;备用站点 www.moeins.cn&lt;/a&gt;
&lt;strong&gt;# このコミュニティを作った目的について&lt;/strong&gt;
実は特に目的はありません。ただ、自分だけの二次元コミュニティが欲しかったんです。そして、二次元好きの仲間たちがそこで他愛もないおしゃべりをするような場所を。例えば、「俺の嫁が可愛いか、お前の嫁が可愛いか」みたいなことを。そうして、このコミュニティは誕生しました。
萌音コミュニティが成功するかどうかは分かりませんが、私たちは心を込めて作り上げていきます。
どうせドメインの更新料が増えるだけですし、現在、&lt;a href=&#34;http://bbs.76fx.com/&#34;&gt;齐乐分享&lt;/a&gt;が提供するロサンゼルスのデータセンターでホスティングされています。ドメインの登録（备案）をしていないので。
&lt;strong&gt;# 萌音コミュニティの誕生は以下のプロジェクトに感謝します&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;thinkPHP&lt;/li&gt;
&lt;li&gt;layui&lt;/li&gt;
&lt;li&gt;fly&lt;/li&gt;
&lt;li&gt;Onedrive&lt;/li&gt;
&lt;li&gt;layuiCMS 2.0&lt;/li&gt;
&lt;li&gt;video.js&lt;/li&gt;
&lt;li&gt;jQuery&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上記の偉大な方々に敬意を表します！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;# 恒例の画像公開&lt;/strong&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1ft1g3egd90j317t0pv7cl.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1ft1g290p9bj31gt0p4div.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1ft1g2952ddj314h0p6di9.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>萌音全自動カード発行プラットフォーム、リリース</title>
      <link>https://en.moejue.cn/ja/posts/67/</link>
      <pubDate>Sat, 12 May 2018 10:52:02 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/67/</guid>
      <description>&lt;p&gt;萌音自動カード発行プラットフォーム（以下「萌音発券」）は、個人ユーザーに仮想商品のオンライン購入および全自動配送サービスを提供します。
開発の目的は、私自身にはあまり必要なく、市場には多くの類似製品がありますが、友人が欲しがっていたため、これが誕生しました。
可能な限りシンプルな原則で最も基本的な機能を実現したため、インターフェースは非常にミニマルで、将来の拡張も非常に簡単です。
&lt;a href=&#34;http://pay.52ecy.cn&#34;&gt;デモサイト&lt;/a&gt;  （サーバーは米国オレゴン州にあり、速度が少し遅いですが、デモンストレーション専用です）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;資金は即時入金&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;第三者による持ち逃げを心配する必要はありません。資金は直接入金され、第三者を介しません。迅速な資金回収で、競合他社を凌駕します。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;複数ユーザー無制限&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;いかなるアカウント、ドメイン、CPUにも縛られず、完全に自由に利用でき、いつでも変更可能です。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;複数の支払い方法&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;WeChat Pay、Alipay、QQウォレット、Tenpay。PCとモバイルの両方に対応しています。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;非同期通知&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;同期＋非同期通知を採用しているため、支払い完了後にページが閉じられて注文が無効になる心配はありません。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;萌音発券のソースコードを入手するには？
現在、以下の方法でのみ提供しています：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ブロガーの知人、友人、またはプロジェクトに貢献した方（萌音発券に限らず）&lt;/li&gt;
&lt;li&gt;優秀な幻想領域画像ホスティングユーザー&lt;/li&gt;
&lt;li&gt;プロジェクトに58元以上寄付することで入手できます。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;何かご質問があれば、デモサイト右上の「お問い合わせ」をクリックして、私と詳しく話し合ってみてください。&lt;strong&gt;よくある質問&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1、萌音発券は何をするものですか、どんな用途がありますか？&lt;/p&gt;
&lt;p&gt;萌音発券は、プロフェッショナルな仮想カードコード自動配送サービスを提供します。&lt;/p&gt;
&lt;p&gt;2、萌音発券プラットフォームに登録して、加盟店になるにはどうすればよいですか？&lt;/p&gt;
&lt;p&gt;プロジェクトに58元以上寄付することで入手できます。&lt;/p&gt;
&lt;p&gt;3、注文/カードコードを照会するにはどうすればよいですか？&lt;/p&gt;
&lt;p&gt;プラットフォームの注文照会機能を通じて、注文時に記入した連絡先または注文番号を入力して照会してください。&lt;a href=&#34;http://pay.52ecy.cn/search.html&#34;&gt;こちらをクリックして照会&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4、プラットフォームでは何を販売できますか？&lt;/p&gt;
&lt;p&gt;ゲーム内仮想通貨、アイテム、会員カード、ソフトウェア使用権など&lt;/p&gt;
&lt;p&gt;5、現在、御社のプラットフォームには何種類の支払い方法がありますか？&lt;/p&gt;
&lt;p&gt;現在、Alipay、WeChat、QQウォレットの3種類です。&lt;/p&gt;
&lt;p&gt;6、萌音発券加盟店の料金はどのように計算されますか？&lt;/p&gt;
&lt;p&gt;全額無料、手数料は一切かかりません。&lt;/p&gt;
&lt;p&gt;7、購入者はどのようにカードコード情報を取得しますか？&lt;/p&gt;
&lt;p&gt;商品購入ページで希望の商品を選択し、支払いチャネルを選択して支払いを完了すると、自動的に配送ページにリダイレクトされます。対応するカードコードが届かない場合は、注文番号を保存し、カードコード照会アドレスを開いてください： &lt;a href=&#34;http://pay.52ecy.cn/search.html&#34;&gt;こちらをクリック&lt;/a&gt; 注文時に記入した注文連絡先または注文番号を入力して照会してください。&lt;/p&gt;
&lt;p&gt;8、出金申請の最低金額はいくらですか？申請後、どのくらいの時間で入金されますか？&lt;/p&gt;
&lt;p&gt;萌音発券の金額はリアルタイムで入金され、第三者を介する必要はありません。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fr7mpdap67j30w80ejq3p.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fr7mpda3o7j30ow0n3wgj.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fr7mpdcon8j30w70f374u.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fr7mpdesjuj30vs0qgdhv.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fr7mpduxw8j30wn0lkgng.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>幻想領域画像ホスティングシステム更新停止のお知らせ</title>
      <link>https://en.moejue.cn/ja/posts/56/</link>
      <pubDate>Mon, 30 Apr 2018 12:28:37 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/56/</guid>
      <description>&lt;p&gt;不完全な統計によると、軽量Sina画像ホスティングシステム「幻想領域」は、バージョン1.0のリリース（2018-03-08）から現在（2018-04-30）まで、累計インストール数は2000回を超え、さらに毎日数十件のペースで急増しています。そのうち、海賊版ユーザーは5%以下です（あなた方は恥を知りなさい）。この間、大小さまざまなウェブサイト、ブログ、フォーラム、ソフトウェア配布サイトなどで100回以上転載・公開されました。海賊版を広めるものも含め、さらには某プラットフォームで販売されることさえありました。&lt;/p&gt;
&lt;p&gt;幻想領域 非商業バージョン（永久無料、商用版なし）は、GPLライセンスおよび付属条項を遵守して公開されています。
もしあなたが私のGPLソフトウェアを使用し、改変した場合、あなたのソフトウェアもオープンソースにしなければなりません。さもなければ、私のソフトウェアを使用することはできません。
幻想領域をベースにしたすべての改変版または二次開発版は、オープンソースでなければなりません。関連条項を遵守しない場合は、使用を停止し、幻想領域に関連するすべてのものを削除してください。
一度GPL契約に違反しても、直接的な結果はないかもしれません。しかし、それはあなた方がこれから異なる方向、危険な方向へ進むことを意味します。どうかご理解いただき、自重してくださることを願います。&amp;mdash;-海賊版を作成し、広める人々へ
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqp7dw64zlj30m80dwdgr.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqp6xk8reoj30gn0gpaav.jpg&#34;&gt;
バージョン1.2.3の時点で、機能はかなり完成されており、バグもありません。軽量な画像ホスティングシステムとしては十分です。そもそもこのシステムは、自分自身が便利に使うためだけに開発したものです。つきましては、幻想領域の外部向け更新サービスを停止することを決定しました。今後は、交流グループ内の&lt;strong&gt;優秀な&lt;/strong&gt;幻想領域で構築された画像ホスティングシステムサイトにのみ更新を提供します。関連するプラグインインターフェースファイルは、グループ内で私に個人メッセージを送って請求することができます。
最後に、これまでの皆様のサポートとご関心に感謝いたします！グループ内で私の権利を守ってくれた方々にも感謝します！&lt;/p&gt;
&lt;p&gt;余談ですが、この記事は数日前に書き上げていました。公開すべきかどうかずっと悩んでいましたが、様々な理由から、やはり葛藤がありました。でも、せっかく書いたのだから公開することにしました。主な理由は、メンテナンスにあまり多くのエネルギーを割けないこと、そしてまた新しいプロジェクトを始めてしまったことです……続く&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5月5日追記&lt;/strong&gt;
今日、友人から画像付きでフィードバックがありました。要するに、私の幻想領域がChevereto（海外の有名な画像ホスティングシステムで、国内でどれだけの人がこのクラック版を使っているかは知りませんが）を盗用しているという内容でした。主に以下の2つの問題について回答します。
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fr0i1um0psj30jj0bjt9b.jpg&#34;&gt;
あの代物？そんなもの、お前が書いてみろよ？幻想領域の最も中心的な機能は、画像をSina Cloud Storageにアップロードすることであり、ローカルアップロード機能は提供していません。Cheveretoにこの機能があるのか？100%盗用？何も理解していないくせに、どうしてそんなに無責任に非難できるんだ？
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fr0i1um2lsj30kf0axq3h.jpg&#34;&gt;
いわゆる幻想領域？インターフェースはどのプログラムを参考にしたって？幻想領域のトップページのインターフェースは、bootcss V3が提供するテンプレートを使用しています。参考にしたなどという話はどこから出てきたのですか？
&lt;a href=&#34;https://v3.bootcss.com/examples/cover/&#34;&gt;https://v3.bootcss.com/examples/cover/&lt;/a&gt; まず調べてからにしてください。むやみに他人を中傷しないでください。私は論争を起こしたくありません。これを見ても何も言わないでください。&lt;/p&gt;
&lt;p&gt;**6月24日追記
**今日、またグループのメンバーから@メンションがあり、画像が送られてきました。画像を見て判断してください。
同じプログラマーとして、そんなことをして良心が痛まないのか？だからお前はただの海賊版野郎だ。海賊版を広める者は、使う者よりもさらに悪質だ。お前の人間性も人格も、その行動と同じくらい汚らわしく、唾棄すべきものであることは想像に難くない。
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fsmkn4goqlj30ri0f574s.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>幻想領域画像ホスティングシステムV1.2正式版リリース</title>
      <link>https://en.moejue.cn/ja/posts/66/</link>
      <pubDate>Wed, 11 Apr 2018 11:40:25 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/66/</guid>
      <description>&lt;h1 id=&#34;幻想領域12&#34;&gt;幻想領域1.2&lt;/h1&gt;
&lt;p&gt;これは最終的なソリューションとして生まれたものではなく、開発の目的は単に自分自身の利便性を高めるためです。
&lt;a href=&#34;https://img.52ecy.cn/&#34;&gt;プロジェクトホームページ&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;https://github.com/178146582/Fantasy-field&#34;&gt;プロジェクトアドレス&lt;br&gt;
&lt;/a&gt;&lt;a href=&#34;https://www.52ecy.cn/post-68.html&#34;&gt;幻想領域V1.0&lt;/a&gt; ☜(詳細はこちらをクリック)&lt;/p&gt;
&lt;h1 id=&#34;ダウンロード&#34;&gt;ダウンロード&lt;/h1&gt;
&lt;p&gt;最新の正式版&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://codeload.github.com/178146582/Fantasy-field/zip/master&#34;&gt;今すぐダウンロード&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;インストール&#34;&gt;インストール&lt;/h1&gt;
&lt;p&gt;幻想領域のソースコードを解凍し、ウェブサイトのルートディレクトリにアップロードする必要があります。ウェブサイトのドメインにアクセスすると、自動的にインストーラーにリダイレクトされますので、ウィザードの指示に従ってインストールしてください。リダイレクトされない場合は、手動で http://あなたのドメイン/install.php にアクセスしてインストールを行ってください。
初回インストールが成功した後、管理者バックエンドにログインして画像ホスティングの基本設定を行う必要があります。
バックエンドアドレス：http://あなたのドメイン/admin しかし皮肉なことに、ログインはフロントエンドで行う必要があります。&lt;/p&gt;
&lt;h4 id=&#34;動作環境&#34;&gt;動作環境&lt;/h4&gt;
&lt;p&gt;注意：幻想領域はバージョン1.0からPHPバージョン≥5.6のみをサポートしています。お使いのPHPバージョンを更新してください。
幻想領域はバージョン1.2から上書きインストール方式を採用します。つまり、過去のデータは保持されます。データを削除する必要がある場合は、手動で空にしてください。&lt;/p&gt;
&lt;h1 id=&#34;更新内容&#34;&gt;更新内容&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;探索インターフェース（最近、ランダム）の改善&lt;/li&gt;
&lt;li&gt;画像ホームページの追加&lt;/li&gt;
&lt;li&gt;HTML、BBcode、Markdownなどのコードをワンクリックで生成&lt;/li&gt;
&lt;li&gt;自動更新システムの追加（ただし、使用できるとは限りません）&lt;/li&gt;
&lt;li&gt;よりフレンドリーなアップロード進捗表示（ただし、正確ではありません）&lt;/li&gt;
&lt;li&gt;各種デフォルト設定をより合理的に変更&lt;/li&gt;
&lt;li&gt;システムの重大な脆弱性を修正（現行バージョンは必ず更新してください）&lt;/li&gt;
&lt;li&gt;登録関連の制限を追加&lt;/li&gt;
&lt;li&gt;互換性の向上、マルチプラットフォームでの実行、PHP7.0+をサポート&lt;/li&gt;
&lt;li&gt;既知のバグを修正&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fq8ylxd9ilj30ud0lzb29.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fq8ylvspsbj30tx0lqtrl.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>新浪微博テーマ静的テンプレートホイール</title>
      <link>https://en.moejue.cn/ja/posts/62/</link>
      <pubDate>Tue, 20 Mar 2018 13:09:30 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/62/</guid>
      <description>&lt;p&gt;フロントエンドのものはすべて張り子の虎であり、本当に剥がしたいのであれば、持ち去れないものはありません。&lt;/p&gt;
&lt;p&gt;はい、このテーマは私が剥がしたものです。&lt;a href=&#34;https://www.52ecy.cn/post-64.html&#34;&gt;ミニマルブログ新テーマSina上线 - 魔改新浪&lt;/a&gt; 記事でも言及しましたが、&lt;a href=&#34;https://www.52ecy.cn/post-64.html&#34;&gt;
&lt;/a&gt;いわゆる元の作者（彼も他人のものを改変している）のサイトから直接剥がしたわけではありません。盗んだのは、私の記事を盗んで出典を明記せず、さらに私に尋ねてきた**です。&lt;/p&gt;
&lt;p&gt;彼のが有料テーマであることを考慮し、オープンソースにしなかったのです。本来ならこれで終わったはずですが、彼は私が漏洩させるのではないかと心配し、嘲笑までしてきました。インターフェース一つで、どうしろというのでしょう。Ctrl+Sで保存できるものを漏洩させることを恐れるのですか？&lt;/p&gt;
&lt;p&gt;おそらく、なぜいわゆる作者が知って私のブログに来たのか、賢い人ならわかるでしょう。卑劣な人間ですね。&lt;/p&gt;
&lt;p&gt;あの**についても話しましょう。私の記事を転載して出典を明記しないだけでなく、私にコードを尋ねてきました。もちろん、この記事はすでに削除されています。
さらに、私の有料テーマを盗むのは本当に良いことなのかと尋ねてきました。では、私の記事を盗むときは、自分にそれが良いことなのかと問いかけなかったのですか？
その後、さらに気持ちの悪い記事を投稿しましたが、彼のウェブサイトはすでに閉鎖されているため、スクリーンショットはありません。
大まかな内容は以下の通りです。
彼は、多くの人が某某のものをオープンソースにしているのを見たが、自分は彼らのようになりたくないので、何か「本物」を公開したいと言いました。そして、私のコードを自分のものだと偽って公開しました。本当に技術があるなら自分で書けばいいのに、私が改変したJavaScriptを圧縮しただけで自分のものになるなんて、すごいですね。
なぜ私のものだと断言できるのか。彼が圧縮したJavaScriptの中に &lt;code&gt;var tao = Math.floor(Math.random()*44);&lt;/code&gt; というコードがあります。変数名の&lt;code&gt;tao&lt;/code&gt;は、私が淘宝をぶらぶらしているときに適当に書いたものです。これは乱数を生成するもので、なぜ後ろの&lt;code&gt;44&lt;/code&gt;まで私と全く同じなのかというと、彼は私の画像まで収集していったからです。
このような人間が最も気持ち悪い。技術がないのに、知ったかぶりをする。
本来、記事の盗用は中国では非常に一般的で、何も言いません。もしそのまま丸ごとコピーされたとしても、私は何も言いません。しかし、私が改変したものを自分のものだと言い、さらに顔を洗って出直せと言いたい。&lt;/p&gt;
&lt;p&gt;この間、ブログにたくさんの仲間が来てくれました。私の記事を何も言わずに転載している人もたくさん見かけました。&lt;/p&gt;
&lt;p&gt;これくらいにしておきます。ブログという純粋な場所を汚したくありません。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://178146582.github.io/SinaTemplate/&#34;&gt;プレビューアドレス&lt;/a&gt;
皆さんが自分で様々なウェブサイトに組み込めるように、車輪をオープンソースで提供します。（100%の類似度ではありません。一部の機能は私が独自に追加したものです）
&lt;a href=&#34;https://codeload.github.com/178146582/SinaTemplate/zip/master&#34;&gt;ダウンロードはこちら&lt;/a&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqeqef0tvmj31h70pwb29.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>幻想領域 画像アップローダー ヘルプ</title>
      <link>https://en.moejue.cn/ja/posts/63/</link>
      <pubDate>Mon, 19 Mar 2018 11:56:29 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/63/</guid>
      <description>&lt;p&gt;インストールや使用中に問題が発生する方が多いため、ここにまとめます。それでも解決しない場合は、グループに参加して万能なメンバーに質問してください。&lt;/p&gt;
&lt;h2 id=&#34;認証コードが表示されない&#34;&gt;認証コードが表示されない&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;サーバーがGDグラフィックライブラリをサポートしているか確認してください。&lt;/li&gt;
&lt;li&gt;サーバーのWEB環境を確認してください。&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Apache：プログラムがサブディレクトリにインストールされている場合、プログラムのルートディレクトリにある&lt;code&gt;.htaccess&lt;/code&gt;ファイルを変更してください。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;lt;IfModule mod_rewrite.c&amp;gt;
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
Rewritebase /あなたのサブディレクトリ名/index.php
RewriteRule ^(.*)$ /あなたのサブディレクトリ名/index.php?/$1 [L]
&lt;/IfModule&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nginx：設定ファイル&lt;code&gt;nginx-conf&lt;/code&gt;を見つけ、&lt;code&gt;location /&lt;/code&gt;セクションに以下の内容を追加・変更してください。&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;try_files $uri $uri/ /index.php?$query_string;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;またはこちら&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;if (!-d $request_filename){
    set $rule_0 1$rule_0;
}
if (!-f $request_filename){
    set $rule_0 2$rule_0;
}
if ($rule_0 = &amp;#34;21&amp;#34;){
    rewrite ^/(.*)$ /index.php?/$1 last;
}
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;IISのURLリライトはApacheと同様です。&lt;/li&gt;
&lt;li&gt;宝塔パネル（BT Panel）を使用している場合は、既存のthinkPHPのURLリライト設定を使用してください。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;メール送信の失敗&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;まず、ポート25がブロックされていないか確認してください。ブロックされている場合は、ホスティングプロバイダーに有効化を依頼してください（有効化できない場合はサーバーを変更してください）。&lt;/li&gt;
&lt;li&gt;登録時の認証をオフにするか、次のバージョンの更新をお待ちください（注：ポートの変更は無意味です。ポート465はSSLサポートが必要です）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;データインターフェースの異常&#34;&gt;データインターフェースの異常&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;URLリライトのリダイレクトに失敗しています。上記を参考にもう一度設定してください。&lt;/li&gt;
&lt;li&gt;Nginxサーバーの場合、&lt;code&gt;/framework/core/Framework.php&lt;/code&gt;の51行目から53行目をコメントアウトまたは削除してください。具体的なコードは以下の通りです（通常、この問題はApacheサーバーでは発生せず、Nginxサーバーでのみ発生します）。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; ($path &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     $path &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;strstr&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;trim&lt;/span&gt;($_SERVER[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;REQUEST_URI&amp;#39;&lt;/span&gt;],&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/&amp;#39;&lt;/span&gt;),$path);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;画像のアップロード失敗&#34;&gt;画像のアップロード失敗&lt;/h2&gt;
&lt;p&gt;アップロード失敗時のヒント：アップロード中にちょっとした問題が発生しました。コントローラーを開いて原因を確認してください！&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;新浪（Sina）のアカウントとパスワードが正しいか確認してください。&lt;/li&gt;
&lt;li&gt;一度、手動でウェブ版の新浪微博（Sina Weibo）にログインしてください。&lt;/li&gt;
&lt;li&gt;新浪アカウントに微博を投稿する権限があるか確認してください。&lt;/li&gt;
&lt;li&gt;設定が成功した後は、新浪のいかなるプラットフォームにもログインしないでください（サブアカウントの使用を推奨します）。&lt;/li&gt;
&lt;li&gt;ここで新浪のサブアカウントを購入できます：&lt;a href=&#34;https://pay.52ecy.cn&#34;&gt;萌音发卡&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;アップロード画像のサイズ&#34;&gt;アップロード画像のサイズ&lt;/h2&gt;
&lt;p&gt;新浪の制限以外に、画像のアップロードはサーバーの設定にも依存します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>軽量 新浪画像アップローダー 幻想領域1.0 リリース</title>
      <link>https://en.moejue.cn/ja/posts/61/</link>
      <pubDate>Thu, 08 Mar 2018 02:20:59 +0000</pubDate>
      <guid>https://en.moejue.cn/ja/posts/61/</guid>
      <description>&lt;h1 id=&#34;幻想領域&#34;&gt;幻想領域&lt;/h1&gt;
&lt;p&gt;やったー、ついに自分専用の画像アップローダーが手に入りました。
幻想領域は、PHP言語で開発された軽量なSina画像アップローダーシステムです。
その誕生は最終的な解決策ではなく、開発の目的は自分自身の利便性のためです。
&lt;a href=&#34;https://img.52ecy.cn/&#34;&gt;プロジェクトホームページ&lt;/a&gt;
&lt;a href=&#34;https://github.com/178146582/Fantasy-field&#34;&gt;プロジェクトアドレス&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;システム紹介&#34;&gt;システム紹介&lt;/h1&gt;
&lt;p&gt;幻想領域では、画像アップローダーの画像はすべてSina Cloudにホストされており、各画像には複数の異なるレベルのサムネイルがあります。これが幻想領域の最大の特徴の一つです。
比較的完成されたユーザーシステムと管理者システムを備えています。管理者はバックエンドで完全な権限を持ち、ウェブサイトのすべての基本設定を行うことができます。
「マイギャラリー」には、ユーザーがアップロードしたすべての画像が一覧表示され、管理者はシステムがホストするすべての画像を閲覧できます。ここでは画像を削除、プレビュー、またはコピーできますが、削除しても本システムに表示されなくなるだけで、画像自体はSina上に残ることをご承知おきください。
「探索」は、フロントエンドでのユーザー画像プレビュー機能です。ここでは、必要なものを見つけることができます。不要な場合は、バックエンドで設定をオフにできます。
Sina画像アップローダーへのアップロードには要件がないわけではありません。ログイン認証が必要ですが、当システムは拡張機能に依存しない独立したSinaログインプログラムを備えており、認証コードも不要で、Cookieの有効期限が切れると自動的にログインします。これにより、あらゆる心配事を解消します。したがって、正常に使用するにはバックエンドでSinaアカウントのパスワードを設定する必要があります。&lt;/p&gt;
&lt;h1 id=&#34;ダウンロード&#34;&gt;ダウンロード&lt;/h1&gt;
&lt;p&gt;最新正式版&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://codeload.github.com/178146582/Fantasy-field/zip/master&#34;&gt;今すぐダウンロード&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;インストール&#34;&gt;インストール&lt;/h1&gt;
&lt;p&gt;幻想領域のソースコードを解凍し、ウェブサイトのルートディレクトリにアップロードする必要があります。ウェブサイトのドメインにアクセスすると、自動的にインストールプログラムにリダイレクトされますので、ウィザードの指示に従ってインストールしてください。リダイレクトされない場合は、手動で http://あなたのドメイン/install.php にアクセスしてインストールしてください。
初回インストール成功後、画像アップローダーを使用するには、管理者バックエンドにログインして基本的な設定を行う必要があります。
バックエンドアドレス：http://あなたのドメイン/admin しかし皮肉なことに、フロントエンドでログインする必要があります。&lt;/p&gt;
&lt;h4 id=&#34;環境サポート&#34;&gt;環境サポート&lt;/h4&gt;
&lt;p&gt;ご注意ください、幻想領域はバージョン1.0以降、PHPバージョン5.6以上のみをサポートしています。PHPバージョンを更新してください。&lt;/p&gt;
&lt;h1 id=&#34;更新予告&#34;&gt;更新予告&lt;/h1&gt;
&lt;p&gt;フロントエンドの独立した画像プレビューインターフェース
ワンクリックでHTML、BBSなどのコードを生成
人気、検索、ランダム、カテゴリなどの機能
短縮URLシステムの統合
&amp;hellip;&amp;hellip;&amp;hellip;など
これらはすべて将来のバージョンでサポートされる予定です。
より良い提案や意見、またはバグのフィードバックがありましたら、ここにメッセージを残すか、admin@52ecy.cn までメールを送信してください。&lt;/p&gt;
&lt;h1 id=&#34;ライセンス-faq&#34;&gt;ライセンス FAQ&lt;/h1&gt;
&lt;p&gt;幻想領域の非商用バージョンは、GPLライセンスおよび関連条項に従ってリリースされており、以下の点にまとめられます。&lt;/p&gt;
&lt;h2 id=&#34;遵守事項&#34;&gt;遵守事項：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;GPL V3ライセンスを、あなたが変更しオープンソース化したバージョンに含めること。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;与えられる権利&#34;&gt;与えられる権利：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;幻想領域を自由にダウンロードして使用すること&lt;/li&gt;
&lt;li&gt;幻想領域を新しいオープンソースプロジェクトに含めること&lt;/li&gt;
&lt;li&gt;ソースコードを変更すること&lt;/li&gt;
&lt;li&gt;幻想領域の&lt;strong&gt;オリジナル版&lt;/strong&gt;を配布すること&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;禁止事項&#34;&gt;禁止事項：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;商業目的で幻想領域を使用すること&lt;/li&gt;
&lt;li&gt;プログラムの著作権情報を削除または改ざんすること&lt;/li&gt;
&lt;li&gt;商業目的でオリジナル版または二次変更版を独占販売、販売すること&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;画面プレビュー&#34;&gt;画面プレビュー&lt;/h1&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fp4ju7716lj30lr0s8gmj.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fp4ju7bjjzj30kc09vglo.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fp4ju6keewj30zm0mpwge.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fp4ju7fu8gj31200mpn0a.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fp4ju7rr0hj31200mp76q.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fp4jtxb9bsj31200mpq76&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fp4ju6yg11j30xe0mp102.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
