『プラスティック・メモリーズ』時は流れ、いつか大切な人と巡り会えますように

まず結論から言うと、僕は永遠にアイラが大好きです 『プラスティック・メモリーズ』は僕がとても好きなアニメです。素晴らしく、胸が張り裂けるような涙あり、笑いあり、萌えありの作品です。全話見終わった後、他に類を見ない感動があったとしか言えません。 初めて『プラスティック・メモリーズ』を観たのは、実家へ帰る新幹線の中でした。まさか第一話だけで号泣させられるとは。そうです、新幹線で泣いてしまいました ˚‧º·(˚ ˃̣̣̥᷄⌓˂̣̣̥᷅ )‧º·˚ もし自分の寿命の長さが、最初から決まっていたとしたら、私たちなら、その事実をどう受け止めるでしょうか?もし私たちなら、自分の終焉が近づいていると知った時、どう向き合うでしょうか?かつての些細な出来事を思い出し、悲しいことも、楽しいことも、私たちは苦しみに身を沈めて死期を待つことを選ぶのか、それとも残されたわずかな時間で愛する人と共に思い出を作ることを選ぶのか? あなたはこの世界にやってきた。 現代科学と経験則はあなたに告げる: あなたの平均寿命は85年。あなたはいつか必ず死ぬ。誰も死を免れることはできない。 あなたの記憶はあなただけのもの。複製することはできず、死ぬ時に、これらの記憶は自動的に消去される。 あなたは生きている間に、様々な友人や親族との間の感情を目撃し、自分自身の記憶を築き上げた。 幸か不幸か、彼らはあなたより一足先に、一人、また一人とこの世を去っていき、あなたはその死を見届けた。 80代になったある日、あなたは自分の死期が迫っていることに気づく。 あなたの記憶も一緒に消え去る。今度はあなたの番だ。結末はとっくに決まっているけれど。 あなたは… ———————————— これは平凡な物語。とても平凡な。 思い出は残酷だ。鋭い棘のように人の心を貫き、息が詰まるほどの痛みを与える。しかし、思い出はまた、非常に温かいものでもある。人に生きる力と勇気を与え、ある信念を抱いて前進させてくれる。人間であれギフティアであれ、誰もが思い出に縛られる。他人の別れであれ、自分が直面しなければならないタイムリミットであれ、思い出はいつもその時に最もリアルな痛みを与える。現実、無力感、名残惜しさ、そして起こり得ない奇跡。これらが『プラスティック・メモリーズ』が伝えたかったことなのかもしれない。しかし、人生とはそういうものだ。悲しみも喜びも、すべての過去は風の音に消え、すべてが跡形もなく去っていく。誰もそれを捕まえることはできない。僕たちはそうやって生きている。 際立ったキャラクターデザインも、意味深長なプロットもありません。あるのはただ、日常の温かさと純粋な愛だけ。運命のような出会い、 この出会いを、僕は絶対に忘れない。 君とパートナーになれて、本当に良かった。 『プラスティック・メモリーズ』は、最高の思い出とは何かを教えてくれます。 結局、このアニメは誰もが予想できたけれど、あまり見たくはなかった結末を迎えてしまいました…… もし自分の未来の寿命の長さを知っていたら、僕はきっと精一杯生きるだろう。そんな信念があれば、楽しいことはきっと辛いことより多くなると信じている。好きな人と一緒にいることほど幸せなことはない。そして最後に、あなたがいつか大切な人と再会できることを願っています。 “ 大切な人と、いつかまた巡り会えますように ” ――アイラ

2020年3月1日 · 1 分 · MoeJue

ESP8266 シリアル WiFi モジュール - WiFi キラー

私はしばらく前に ESP8266 を購入し、それで遊ぶつもりでした。実際には数カ月間停滞し、その後2020年まで延期された。 ESP8266 は、幅広い実用的なアプリケーションを備えた WiFi モノのインターネット モジュールです。簡単に言えば、その機能は次のとおりです。Wi-Fi からデータを受信し、シリアル ポート経由で出力します。シリアルポートからデータを受信し、Wi-Fi経由でデータを出力します。 このものの技術は成熟しており、コストが低いため、価格はわずか数十元です。 開封 ここで買ったのは有機EL液晶画面付きパッケージ(将来のお楽しみに備えて) 最も古典的なのは WiFi キラーです。それでは、まずお楽しみとして WiFi キラーのファームウェアをフラッシュしてみましょう。 ファームウェア: https://github.com/samdenty/Wi-PWN?wi-pwn=7.0 原理は、認証解除メッセージを送信して、ルーター自体を切断する必要があるとクライアントに認識させ、Wi-Fi から切断することです。偽造ルーターは認証解除メッセージをクライアントに送信し、クライアントが Wi-Fi から積極的に切断されるようにします。また、カスタム ホットスポット フォージェリ (偽の Wi-Fi 信号をバッチで生成する) もサポートしています。 パソコンとの接続には、データ通信が可能なデータケーブルを使用してください。デスクトップ コンピュータを背面ポートに接続してみます。 接続後、Windows システム コンピュータは、下の図に示すように、ドライバを自動的にインストールします。この COM を覚えておいてください。 また、ch341ser ドライバーと、USB 用の WINDOWS ドライバー インストール パッケージをシリアル ポート CH341/CH340 にインストールする必要があります。プロンプトに従ってインストールするだけです。これは別途ダウンロードする必要があります ファームウェアの書き込み ここで使用するのは、NodeMcu FIRMWARE PROGRAMMER 書き込みツールです。 ここの COM ポートとして、前に見たものを選択します。または、デバイス マネージャーで ESP8266 開発ボードがどのポートに接続されているかを確認してください。 config でファームウェア アドレスを選択し、その他はデフォルトで変更しないままにします。 詳細 - ボーレート ボーレートは、開発ボードの裏面に書かれている内容によって異なります。 写真の通り、丸で囲った部分が 設定後、フラッシュ (F) キーをクリックして書き込みを開始します。このプロセスには時間がかかる場合がありますので、そのままお待ちください。 書き込みが完了したら、一度抜き差ししてください。書き込みが成功すると、wi-pwn という名前のパブリック WiFi が表示されます。 リンク後、ブラウザーでこの背景 http://192.168.4.1/ が開き、ガイダンスに従ってください。 ここで WiFi をバッチで偽造する方法を説明しましょう。 「Beacom」をクリックして作業を開始します。 動作ステータス、実行中、青色のインジケータライトが点滅して点灯したまま なぜ長い間携帯電話でいくつかしか検索できないのかわかりません。 他にもたくさんの機能があるので、一つずつ試していくつもりはありません。 要約: 要約するものは何もありません。私も初めてのプレイです。プレイの全プロセスを記録し、私の経験を共有します。 今回は他人が書いたファームウェアを使用しました。次回は私が自分で書く番です。

2020年2月3日 · 1 分 · MoeJue

美しすぎるAlibaba Cloud画像ホスティングツール

一度サボると気持ちいい、ずっとサボればずっと気持ちいい。うっかりまた一ヶ月も更新をサボってしまい、元旦にさえ顔を出すこともなく、お恥ずかしい限りです。 その埋め合わせとして、今日の週末にAlibaba画像アップローダーを一つ公開します。 以前のプログラムは多くの方からインストールが難しいと言われましたが、今回のAlibaba画像アップローダーは非常にシンプルです。サーバーにアップロードしてアクセスするだけで利用でき、設定は一切不要。本当にこれだけです。(決して手抜きで何も書いていないわけではありません) インターフェースをご覧ください。とても美しいでしょう? 非常にシンプルなため、今のところデモサイトはありません。もし設置が完了した方がいらっしゃれば、下部のコメント欄にご自身のアップローダーのURLを投稿して、他の方々の参考にしていただけると幸いです。 プロジェクトページ ここ数日で新しいロゴに変更しました。これもまた綺麗でしょう?(会社のPhotoshopの達人にお願いして作ってもらいました) 幻想領域画像アップローダーも認証コードを導入しました。皆さん、不適切な画像をアップロードしないようにお願いしますね。 最後に 遅くなってしまいましたが、それでも言わせてください。皆様の新しい一年が、楽しく幸せなものでありますように!

2020年1月12日 · 1 分 · MoeJue

『ヨスガノソラ』 春日野 穹 和服 フィギュア

『ヨスガノソラ』有名な〇〇アニメ……のヒロイン、春日野穹 —-妹がいない者は穹が妹でないことを嘆き、妹がいる者は妹が穹でないことを嘆く 箱は実に大きく、以前買ったいくつかのものよりずっと大きいです 外箱の絵と中身は違いますが 開封すると、ナイフを持ったもう片方の手も入っており、手が取り外し可能であることがわかります でも、付け替えたことはありません。女の子はやっぱり扇子を持っている方が可愛いですからね この値段で扇子を買うのも、やりすぎじゃないですよね うわー、この脚、あぁ、真っ白だ。そ、パン…、ゴホンゴホン 起こして座らせて、ポーズを整えて。この角度…いいですね 顔 脚 ディテール これはマジでえっちぃですね 注目すべきは、ビーチサンダルが本物の靴と同じプラスチック素材で作られている点です 夜に開封したので光が足りなかったので、昼間にもう何枚か撮ってみました遥かなる空、その穹の果てで、 私たちはやがて出会い、そして知り合う 「どこにいても、どんなときでも、私たちの頭の上には同じ遥かな穹が広がっている。まるで永遠に引き離されることのない絆のように。」

2019年12月13日 · 1 分 · MoeJue

小愛スピーカー ユニバーサルリモコン版

またしてもXiaomi製品です。今回開封するのは、Xiaomiスピーカーの万能リモコン版。従来の家電をあっという間にスマートホーム化させます。 開封。想像していたよりずっと小さいです。 新発売のXiaomi AIスピーカーHDはかなり大きいですが、Xiaomiストアで抱えてみたことがあります(〃’▽’〃) パッケージ内容:本体+電源アダプター+データケーブル+取扱説明書 下の周りにあるのは本物の穴です。最初は写真で見たとき、ただの模様だと思っていました。 内部の中央には、円錐形のダブルピラミッドのようなものがあります。分かりやすく言うと、コマみたいな感じでしょうか。 マイクミュートボタン(上)は10秒長押しで工場出荷時設定にリセット、音量+/-ボタン(左右)、一時停止/再生ボタンは長押しで設定モードに入ります。 次に、Mi AIスピーカーアプリをダウンロードして、一連の設定を行います。 QQ Musicが内蔵されていますが、管理はできず、QQ Music上で行う必要があります。 これで、遊べるようになります。 お使いの小愛同学に「自爆モード起動」と言うと、新しいスキルをゲットできます(注意!!) また、一つ厄介な設定というかバグがあります。Bluetoothに接続して設定すると、ネットに繋がらなくなるのです。(意味不明??)

2019年11月20日 · 1 分 · MoeJue

感熱ブルートゥースプリンター開発

最近、レシート印刷の作業をしており、プロジェクトの要件としてiOSとAndroidの両方で実装する必要がありました。最初は全く分からず、インターネットで多くの資料を探し、たくさんの落とし穴にはまり、多くの記事を読みましたが、結果的にはうまくいきました。 Bluetoothプリンターは一般的に、レシート印刷とラベル印刷の2種類の印刷モードに分けられます。 会社が購入した粗悪なプリンターには開発ドキュメントすらなく、多くの落とし穴にはまる羽目になりました。開発担当者に購入時に相談してくれればよかったのに。 現在、WeChatミニプログラムでBluetoothプリンターに接続する wx.createBLEConnection は、iOSデバイスでは問題なく動作しますが、一部のAndroidスマートフォンでは異常が発生します(接続時にシステムペアリングボックスがポップアップ表示され、キャンセルをタップしても、ペアリングコードを入力して確定をタップしても、すぐに接続が切断されます。入力もキャンセルもしない場合、30秒以内にBluetoothプリンターから自動的に切断されます)。 現在採用している方法は、AndroidとiOSそれぞれにBluetooth印刷コマンドのセットを作成することです。 IOS // ====================蓝牙操作================== //初始化蓝牙模块 openBluetoothAdapter() { if (app.sysinfo.provider == 1) { // 开启蓝牙 app.onBluetooth() setTimeout(() => { this.android_search() }, 2000) return false; } this.closeBluetoothAdapter() uni.openBluetoothAdapter({ success: (res) => { console.log("初始化蓝牙模块: " + JSON.stringify(res)); this.startBluetoothDevicesDiscovery() }, fail: (res) => { if (res.errCode === 10001) { uni.onBluetoothAdapterStateChange((res) => { console.log('监听蓝牙适配器状态变化事件', res) if (res.available == false) { app.global_printing = {} this.connected = false this.chs = [] this.canWrite = false } if (res.available) { this.startBluetoothDevicesDiscovery() } }) } if (res.errCode) { app.alert('初始化蓝牙失败,错误码:' + res.errCode) return false; } app.alert(res.errMsg) } }) }, //获取本机蓝牙适配器状态 getBluetoothAdapterState() { uni.getBluetoothAdapterState({ success: (res) => { console.log('获取本机蓝牙适配器状态。', JSON.stringify(res)) if (res.discovering) { this.onBluetoothDeviceFound() } else if (res.available) { this.startBluetoothDevicesDiscovery() } }, fail: (res) => { console.log('error:获取本机蓝牙适配器状态失败', JSON.stringify(res)) setTimeout(() => { this.getBluetoothAdapterState() }, 500) } }) }, //开始搜寻附近的蓝牙外围设备 startBluetoothDevicesDiscovery() { console.log(this.discoveryStarted); if (this.discoveryStarted) { return } console.log('开始搜索蓝牙设备'); this.discoveryStarted = true this.onBluetoothDeviceFound() setTimeout(() => { uni.startBluetoothDevicesDiscovery({ allowDuplicatesKey: true, success: (res) => { console.log('startBluetoothDevicesDiscovery success', JSON.stringify( res)) }, fail: (res) => { if (res.errCode == '10001') { app.alert('当前蓝牙适配器不可用') } else { app.alert('搜索蓝牙失败,状态码:' + res.errCode) } } }) }, 500) }, // 停止搜索 stopBluetoothDevicesDiscovery() { uni.stopBluetoothDevicesDiscovery() this.discoveryStarted = false }, //寻找到新设备的事件的回调函数 onBluetoothDeviceFound() { console.log('寻找到新设备的事件的回调函数'); uni.onBluetoothDeviceFound((res) => { console.log(res); res.devices.forEach(device => { if (!device.name && !device.localName) { return } const foundDevices = this.devices const idx = this.inArray(foundDevices, 'deviceId', device.deviceId) if (idx === -1) { this.devices.push(device) } else { this.devices[idx] = device } }) }) }, //连接低功耗蓝牙设备 createBLEConnection(e) { uni.showLoading({ title: '设备连接中', mask: true }); const ds = e.currentTarget.dataset const deviceId = ds.deviceId const name = ds.name if (app.sysinfo.provider == 1) { if (ds.pair !== true) { this.android_search(deviceId) } else { console.log('已配对') } var device = null, BAdapter = null, BluetoothAdapter = null, uuid = null, main = null, bluetoothSocket = null; var mac_address = deviceId var main = plus.android.runtimeMainActivity(); BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter"); var UUID = plus.android.importClass("java.util.UUID"); uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); BAdapter = BluetoothAdapter.getDefaultAdapter(); device = BAdapter.getRemoteDevice(mac_address); plus.android.importClass(device); bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid); plus.android.importClass(bluetoothSocket); if (!bluetoothSocket.isConnected()) { console.log('检测到设备未连接,尝试连接....'); bluetoothSocket.connect(); } this.connected = true this.name = name this.deviceId = deviceId this.canWrite = true app.global_printing = { name: name, deviceId: deviceId } app.saveData1('global_printing', app.global_printing) uni.hideLoading(); return false; } uni.createBLEConnection({ deviceId, success: (res) => { this.connected = true this.name = name this.deviceId = deviceId app.global_printing = { name: name, deviceId: deviceId } this.onBLEConnectionStateChange() // 防止获取失败 setTimeout(() => { this.getBLEDeviceServices(deviceId) }, 1000) }, fail: (res) => { uni.hideLoading(); app.Toast('设备连接失败') console.log("蓝牙连接失败:", res); } }) this.stopBluetoothDevicesDiscovery() }, //获取蓝牙设备所有服务(service) getBLEDeviceServices(deviceId) { uni.getBLEDeviceServices({ deviceId, success: (res) => { console.log("获取蓝牙服务成功:" + JSON.stringify(res)) if (res.services.length == 0) { uni.hideLoading(); app.alert('没有获取到蓝牙服务,无法打印001') app.global_printing = {} return false } for (let i = 0; i < res.services.length; i++) { if (res.services[i].isPrimary) { this.getBLEDeviceCharacteristics(deviceId, res.services[i].uuid) return } } }, fail: (res) => { setTimeout(() => { this.getBLEDeviceServices(deviceId) }, 500) console.log("获取蓝牙服务失败:" + JSON.stringify(res)) } }) }, //获取蓝牙设备某个服务中所有特征值(characteristic) getBLEDeviceCharacteristics(deviceId, serviceId) { console.log('获取蓝牙设备某个服务中所有特征值', deviceId, serviceId) uni.getBLEDeviceCharacteristics({ deviceId, serviceId, success: (res) => { console.log('获取蓝牙设备某个服务中所有特征值 success', JSON.stringify(res)) uni.hideLoading(); if (res.characteristics.length == 0) { app.alert('没有获取到蓝牙服务,无法打印002') app.global_printing = {} return false } for (let i = 0; i < res.characteristics.length; i++) { let item = res.characteristics[i] if (item.properties.read) { uni.readBLECharacteristicValue({ deviceId, serviceId, characteristicId: item.uuid, }) } if (item.properties.write) { this.canWrite = true app.global_printing._deviceId = deviceId app.global_printing._serviceId = serviceId app.global_printing._characteristicId = item.uuid app.saveData1('global_printing', app.global_printing) //this.writeBLECharacteristicValue() } if (item.properties.notify || item.properties.indicate) { uni.notifyBLECharacteristicValueChange({ deviceId, serviceId, characteristicId: item.uuid, state: true, }) } } }, fail(res) { console.error('获取特征值失败:', res) } }) // 操作之前先监听,保证第一时间获取数据 uni.onBLECharacteristicValueChange((characteristic) => { console.log(this.data.chs); const idx = this.inArray(this.data.chs, 'uuid', characteristic.characteristicId) const data = {} if (idx === -1) { this.chs[this.data.chs.length] = { uuid: characteristic.characteristicId, value: ab2hex(characteristic.value) } } else { this.chs[idx] = { uuid: characteristic.characteristicId, value: ab2hex(characteristic.value) } } }) }, onBLEConnectionStateChange() { uni.onBLEConnectionStateChange((res) => { // 该方法回调中可以用于处理连接意外断开等异常情况 console.log(`蓝牙连接状态改变device ${res.deviceId} state has changed, connected: ${res.connected}`) if (res.connected == false) { app.global_printing = {} this.connected = false this.chs = [] this.canWrite = false } }) }, //断开与低功耗蓝牙设备的连接 closeBLEConnection() { app.global_printing = {} uni.closeBLEConnection({ deviceId: this.deviceId }) this.connected = false this.chs = [] this.canWrite = false }, //关闭蓝牙模块 closeBluetoothAdapter() { app.global_printing = {} uni.closeBluetoothAdapter() this.discoveryStarted = false }, //发送数据 sendStr(bufferstr, success, fail) { var that = this; uni.writeBLECharacteristicValue({ deviceId: app.global_printing._deviceId, serviceId: app.global_printing._serviceId, characteristicId: app.global_printing._characteristicId, value: bufferstr, success: function(res) { success(res); console.log('发送的数据:' + bufferstr) // console.log('message发送成功') }, fail: function(res) { fail(res) console.log("数据发送失败:" + JSON.stringify(res)) }, complete: function(res) { // console.log("发送完成:" + JSON.stringify(res)) } }) }, //遍历发送数据 printCode(arr) { var that = this; if (arr.length > 0) { this.sendStr(arr[0], function(success) { arr.shift(); that.printCode(arr); }, function(error) { app.alert('打印失败,错误码:' + error.errCode) app.printing_status = false console.log(error); }); return false; } setTimeout(function() { app.printing_status = false console.log('打印结束'); }, 1000); }, Android 比較的シンプルで便利です。Native.jsを使用してNative Javaインターフェースチャネルを直接呼び出し、plus.androidを介してAndroidネイティブシステムAPIを呼び出します。 ネイティブAndroidドキュメント https://developer.android.google.cn/reference/android/bluetooth/BluetoothAdapter?hl=en ...

2019年11月5日 · 9 分 · MoeJue

1024 プログラマーの日、最高のコーディングを書き、最も可愛い男の子になろう!

またもやお馴染みのヘッドライン・ホリデー 親愛なるプログラマーの皆さん、強風と明るい日差しが降り注ぐこの秋の日に、1024プログラマーの日を一緒にお祝いしましょう。 です。 1024これは特別な数字の集合で、2の10乗であり、2進数計算の基本単位の1つであり、すべてのプログラマのコードの出発点です! 。 この世の果てまでバグに絡め取られ、コードと共に生き、コードと共に死に、諦めず、休日も心にあるバイナリを忘れず、真に恋するプログラマに相応しい! 。 休みはなく、残業もあるかもしれませんが! 。 でも、せっかくの休日なんだから、お祝いしないのは血みどろの恥だと思いませんか? 今日は10月24日、プログラマの日です、このメッセージを5つのグループに転送してください、あなたは永遠にバグなしでコードを書く能力を得ることができます、私は試しました、これは偽物です、何度も送ると追放されるかもしれませんが、今日は本当にプログラマの日です! 。 ブログ主も仕事が忙しいので、ブログを書く(シュイ)ために出てくる時間を持つために夕方まで待つことしかできないので、とにかく、私はすべてのプログラマ1024プログラマの日が幸せであることを祈る、最高のコーディングを書く、最も美しい少年を行う! この時点で例年では 2018ハッピー1024プログラマの日 2017年1024プログラマの日おめでとう 2016年 プログラマの日1024! 今日はお祝いですか~?

2019年10月24日 · 1 分 · MoeJue

西部数码様からお送りいただいた国慶節のプレゼントに感謝。

事の経緯はこんな感じです そして、こうなりました 最後にこれを手に入れました。強運三部作、PCバッグをゲットです(私のPCは入らないし、しかもこの間新しいPCバッグを買ったばかりなんですが) 上に書いてあるのは:スタートアップ時代のドメイン選び yi.co もちろん、これで終わりだと、ただの水増し記事だと思われてしまいます なので、ついでに開封レビューでもしてみようと思います(うっかり開封ブログになってしまいましたw) XXカメラを買って、XXな場所に設置しました 説明書をチラッと見てみると、¥…**()*……¥%@¥&%……¥@¥ スペック:128GBメモリカード+赤外線ナイトビジョン+60mm+1080p WiFiまたは有線接続に対応、双方向音声、動体検知、自動録画、アラーム録画、タイマー録画などをサポート……. パッケージ内容: 128GBメモリカード、容量偽装品かどうかは未検証 スタンド+ネジ 電源ケーブル+電源アダプター 5m電源延長ケーブル ルーターみたいな見た目のカメラ 説明書 以上です。本当にこれだけ。 プレビューできる実際の写真はありません….

2019年10月18日 · 1 分 · MoeJue

55インチのXiaomiモニターを開封

忠実で理性的なシャオミファンが、またしてもMi Home製品、Xiaomi E55C フルスクリーン 4K HD AIテレビをお届けします 国慶節の前夜に予約し、配達予定日は30日でしたが、まさか29日に届くとは。その時、私は実家へ向かう高速鉄道に乗っていたため、一番最初の開封と通電確認には立ち会えませんでした。 「新国貨」という文字は正直ちょっとダサくて、ブランドイメージがガクッと落ちますね それに比べて、背面はとても美しい仕上がりです スペック表、4コア2GB+8GBフラッシュメモリ 梱包内容:スクリーン:1台 | スタンド:2個 | 取扱説明書:1部 | リモコン:Bluetooth音声リモコン(電池付属) | ネジセット:1個 12キーのBluetooth音声リモコンは、Xiaomiテレビの大きな特徴です。シンプルですが、ただシンプルなだけではありません。小愛同学(シャオアイ)とPatchWall OSを内蔵し、操作は簡単でインターフェースも美しいです 取り出して一息つかせます 正面から一枚。背面は撮り忘れました… 自宅の客間が改装中なので、とりあえず壁には掛けていません 初回起動時には、いくつかの簡単な設定が必要です。システムアップデート -> Bluetoothリモコンの接続 -> Wi-Fiに接続 -> Xiaomiアカウントにログイン(スキップ) -> デスクトップ画面へ そして、軍事パレードを鑑賞します(アニメに夢中になりすぎて、写真を撮り忘れたなんてことはありませんよ) ちなみに、広告なんかは、私のような怠け者にとっては大した問題ではありません。 完。。

2019年10月8日 · 1 分 · MoeJue

3周年記念謎解きゲーム

まずは、ご来訪、ご参加いただいた皆様、誠にありがとうございました。おかげさまで3周年記念イベントも無事終了し、N+1個の福袋を発送することができました。 3周年記念イベントでは、福袋を手に入れる方法を2種類用意しました。その一つ目は、怪しげなリンクを残しておくというものでした…… あなたがそれをクリックした瞬間から、ゲームは始まります。Link start! クリックすると、萌音社区のある記事にジャンプします… 一見、特に変わったところはありません。しかし、注意深い方ならコメントを見たときに、そう簡単ではないことに気づくでしょう。 コメントはあなたの心の声を代弁し、次のステップへの方向を示してくれます。 ブロガーとフレンドになっている方ならご存知かもしれませんが、記事中の画像は私のアイコンです。彼女の名前は高坂桐乃、14歳の中学生で、容姿端麗、成績優秀、スポーツ万能な少女です……もちろん、これらは問題とは何の関係もありません。 賢い人なら、まず画像ステガノグラフィを思いつくでしょう。思いついたことは何でも試してみましょう。自分でアルゴリズムを書いて解読するか、オンラインツールで解読することができます。 案の定、Baidu企業版クラウドストレージのアドレスと、謎のコード文字列が手に入ります。 賢いひらめきがあれば、これらを組み合わせてURLにすればいいとわかるはずです。https://eyun.baidu.com/s/3kWo9zan アクセスするとmp3のダウンロードリンクが表示されるので、ダウンロードしましょう。そして聴いてみてください…… そうです、これは『俺の妹がこんなに可愛いわけがない』の主題歌です。聴き終わったら閉じて寝る。これで終わりです。さようなら! ちょっと待って、本当に最後まで聴きましたか? もし本当に最後まで聴いたなら、異変に気づくはずです。そう、これはただの音声ファイルではありません。 プロ向けの音声編集ソフト(Adobe Auditionなど)で分析してみましょう。 スペクトル周波数表示を開くと、やはり、事態はそう単純ではないことがわかります。 なんとスペクトルの中に文字が隠されています。これを考えた人もなかなかのものです。 またしてもURLと謎のコード文字列が手に入ります。組み合わせてアクセスしましょう。https://img.52ecy.cn/0072Vf1ply1g6s3uhuge0j30hs0hs3z8 幻想領域の画像アップローダーにたどり着きました。またしても一枚の画像です。しかもまた桐乃で、同じ可愛いポーズです。 幻想領域の画像アップローダーはSina(新浪)のものをベースにしています。後半の謎のコードはSinaの画像アドレスとそっくりです。これを解読しましょう。 画像アドレスからアップロードしたユーザーのUIDを割り出します。具体的なアルゴリズムは以下を参考にしてください:[谁是Po主? ](https://www.52ecy.cn/post-81.html)最終的に得られるのはこちら:https://weibo.com/u/6456124939 すると、最初の投稿がはっきりと見えます。 ここで特に注意が必要なのは、【コメントを見る】ということです。最初の仕掛けの時からヒントはありました。時にはコメントをよく見るのも悪いことではありません。 タイムスタンプ、どうやって取得するのか?しかも13桁?これはミリ秒単位の精度が必要だということです。Webページ上の時間は分までで、秒すらありません。 PC版のWebページでは確かに表示されません。しかし、モバイル版のWebページに切り替えると、Webページのソースコードから投稿の作成日時(created_at)を見つけることができます。 これで本当に終わりです。皆さん、楽しんでいただけましたか?もし見つけられなかったのなら、それはあなたの発想力が足りなかっただけで、私の企画がダメだったわけでは決してありません。 1ヶ月以上かけて企画したイベントも、ついに無事終了しました!これにて完結、お疲れ様でした!また次の3周年でお会いしましょう!

2019年9月22日 · 1 分 · MoeJue