Mint Square:ZK Rollupを活用した安価で高速なNFT取引プラットフォーム
Mint Squareは、マルチチェーンのZK Rollupソリューションを活用し、安価で高速なNFT取引を提供するプラットフォームです。現在のEthereumネットワーク上で高額なトランザクション手数料と遅延が問題とされていますが、Mint Squareはこれらの問題を解決することを目指しています。
ZK Rollupは、ブロックチェーンのセキュリティを維持しながら、オフチェーンでトランザクションを処理することができるスケーリングソリューションです。これにより、Mint Squareは複数のトランザクションをまとめてオフチェーンで処理し、それぞれのトランザクションに必要な時間とコストを大幅に削減することができます。
Mint Squareは、Ethereum、Binance Smart Chain、Polygonなど、複数のブロックチェーンネットワークをサポートしています。これにより、ユーザーは自分に最適なブロックチェーンを選択できます。
Mint Squareは、NFTの購入、販売、取引を行うマーケットプレイスであり、クリエイターが自分のNFTを制作して販売するためのツールや、コレクターが新しいNFTを閲覧・発見するための機能も提供しています。
Mint Squareは、ZK Rollupテクノロジーを活用して、ユーザーフレンドリーでアクセスしやすいNFT取引プラットフォームを提供することを目指しています。
EpsonプロジェクターのWi-Fi接続に関する情報まとめ
【Epsonのプロジェクターについて知ろう!】
Epsonのプロジェクターは、高品質な映像や画像を提供することができる優れた製品として知られています。しかし、一部のユーザーからは、Wi-Fi接続に関して問題が生じることがあるという声も聞かれます。そこで、今回はEpsonのプロジェクターに関する情報をまとめてみました。
まず、Epsonのプロジェクターには、Wi-Fi接続に対応している機種があります。代表的な機種として、Epson EB-FH52が挙げられます。このモデルは、IEEE802.11a/b/g/n対応の無線LANを搭載しており、スマートフォンやタブレットとの接続にEpson iProjectionアプリを使用することができます。また、高輝度の3,400ルーメンを実現しており、フルHD解像度に対応しているため、高品質な映像や画像を提供することができます。
Wi-Fi接続に関しては、プロジェクターとの接続が確立された後、一時的にインターネット接続が切断されることがあります。そのため、プロジェクターに別途Wi-Fiアダプタを接続するか、有線LAN接続との併用を検討することが推奨されます。
また、Epsonのプロジェクターをネットワークに接続するには、まず初期設定時に有線接続をすることが推奨されています。有線接続を行った後、プロジェクターの設定画面でWi-Fiを有効にし、ネットワークに接続することで、Wi-Fi接続が可能になります。
以上のように、Epsonのプロジェクターに関する情報をまとめてみました。ご利用の環境や目的に応じて、適切な接続方法を選択することが重要です。
QuickSwapの基本を学ぼう:Swap、LP、Farmの仕組みと使い方
DeFi(分散型金融)は近年、ブロックチェーン技術を用いた金融サービスを提供する分野で注目されています。QuickSwapはPolygonネットワーク上に構築された分散型取引所(DEX)であり、ユーザーは中央機関やインターメディエイリーを必要とせず、暗号通貨を分散的かつ安全に交換できます。
QuickSwapは自動市場メーカー(AMM)モデルに基づいて運営されており、流動性プロバイダー(LP)がファンドをプールして価格をアルゴリズム的に決定します。QuickSwapはQuickトークンを使用し、QuickSwap Farmプログラムを通じてステーキングや報酬を提供しています。
以下では、QuickSwapでのSwap、LP、Farmの基本的な概念と使い方を説明します。
- Swap:Swapは暗号通貨を交換する行為です。QuickSwapでは、売りたいトークンと買いたいトークン、取引したい金額を指定することで交換が可能です。価格は、流動性プール内のトークンリザーブの比率に基づいて算出されます。
- LPまたは流動性プロバイダー:LPはQuickSwap上の流動性プールにファンドを提供するユーザーのことです。流動性プールにファンドを提供することで、トレーディング手数料の一部を受け取ることができます。LPは同じ価値の2つのトークンを流動性プールに入金し、その割合に応じてLPトークンを受け取ります。このLPトークンは、そのユーザーの流動性プール内のシェアを表し、いつでも引き出すことができます。
- Farming:Farmingは、DeFiプロトコル上のスマートコントラクトに暗号通貨をステーキングまたはロックすることで報酬を獲得することを指します。QuickSwapでは、Quickトークンを報酬として提供するQuickSwap Farmプログラムを通じて、LPトークンをステーキングすることで報酬を受け取ることができます。
QuickSwapでのSwap、LP、Farmの基本的な概念を理解したら、以下の手順に従って実際に取引してみましょう。
- QuickSwapのウェブサイト(https://quickswap.exchange/)にアクセスして、MetaMaskやWalletConnectなどのWeb3ウォレットに接続します。
- ドロップダウンメニューから、売りたいトークンと買いたいトークンを選択します。トークンを検索することもできます。
- 売りたいトークンの金額または買いたいトークンの金額を入力します。交換レートと見積もりの手数料が表示されます。
- 「Swap」をクリックして、Web3ウォレットでトランザクションを確認します。
- Polygonブロックチェーンでトランザクションが確認されるのを待ちます。トランザクションが確認されると、トークンが交換され、ウォレットに反映されます。
LPトークンをステーキングする場合は、以下の手順に従ってください。
- QuickSwapのウェブサイトにアクセスして、Web3ウォレットに接続します。
- 「Farm」タブをクリックします。
- 「Gamma Farms」セクションにスクロールし、「Stablecoins」を選択します。
- USDC/DAIの流動性プールを見つけてクリックします。
- 「Add Liquidity」ボタンをクリックして、USDCとDAIをプールに入金します。
- 入金後、あなたのシェアを表すLPトークンを受け取ります。このLPトークンは、流動性プールページの「Stake LP Tokens」セクションにステーキングすることができます。
- ステーキングしたいLPトークンの金額を入力し、Web3ウォレットでトランザクションを確認します。
- Polygonブロックチェーンでトランザクションが確認されるのを待ちます。確認されたら、Quickトークンの報酬を受け取ることができます。
注意点として、DeFiにはリスクがあるため、必ず自己責任で取引してください。
また、Farmingには潜在的な損失があるため、十分にリサーチを行い、失うことのできる資金の範囲内でのみ投資するようにしてください。
QuickSwapはPolygonネットワーク上に構築されたDEXであり、Swap、LP、Farmの機能を提供しています。これらの機能を利用することで、ユーザーは暗号通貨を分散的かつ安全に交換し、報酬を得ることができます。しかし、これらの機能にはリスクがあるため、十分にリサーチを行い、慎重に取引することが重要です。
この記事を参考に、QuickSwapでの取引やステーキングを試してみてください。それでは、Happy Trading!
Asanaプレミアムプランのユーザーかどうかの確認方法
Asanaは、プロジェクト管理ツールとして幅広く利用されています。ユーザーは無料プラン(ベーシックプラン)から始めることができ、必要に応じて有料プランにアップグレードすることができます。この記事では、Asanaのプレミアムプランのユーザーかどうかを確認する方法を解説します。
手順1: Asanaにログイン まず、Asanaにログインしてください。アカウントがない場合は、アカウントを作成してログインしてください。
手順2: 左下のプロフィール画像またはイニシャルをクリック 左下にあるプロフィール画像またはイニシャルをクリックして、アカウントメニューを開きます。
手順3: 「Organization Settings」または「Workspace Settings」をクリック アカウントメニューから、「Organization Settings」をクリックして、組織設定画面に移動します。もし「Organization Settings」が見つからない場合は、「Workspace Settings」があるかどうか確認してください。それでも見つからない場合は、あなたのアカウントはおそらく無料プラン(ベーシックプラン)になります。
手順4: 「Billing」タブを選択 組織設定画面の上部にあるタブから、「Billing」を選択してください。ここで現在のプランの詳細を確認できます。
手順5: プランの詳細を確認 「Billing」タブで、現在のプランの詳細を確認できます。ここでAsanaのプレミアムプランに加入しているかどうかを確認できます。
もしメインダッシュボード画面の右上に「Upgrade」の表示がある場合、通常は現在のアカウントが無料プラン(ベーシックプラン)であることを示しています。プレミアムプランにアップグレードするには、「Upgrade」ボタンをクリックし、指示に従ってください。
Apple Watch 3を無償交換したはなし
2018年に購入したApple Watch 3、だいぶ前にスクリーンの側面が割れて浮き上がってきて、最終的には電源が入らなくなって、そのまま放置していた。
新しいモデルが出るも、触手が動かず買い控えていたが、iOS14.5でウォッチつけれてばマスクしててもiPhone解除できるよっていうandroidの周回遅れのようなハイテクノロジーが実装された。
手元にあったSeries 3はアルミニウムモデルのスクリーン交換プログラムで紹介されている画像に酷似しているのでただで交換できるならとダメ元で正規サービスプロバイダにウェブから予約をしてみた(交換プログラムのリンクから近くのサービスプロバイダの検索、予約までできるのはよき)。
Screen Replacement Program for Aluminum Models of Apple Watch Series 2 and Series 3 - Apple Support https://support.apple.com/en-my/screen-replacement-program-apple-watch-series-2-3
マレーシアにはアップルの直営店がないので正規代理店で購入したものを正規サービスプロバイダに持っていくというフローで、購入したお店では先のプログラムの手続きができないと言われた。
さっそくApple Watchを持っていくも、レシートが不鮮明でシリアル番号が確認できない上に、Watchのシリアル番号もベルトの摩擦で末尾の文字が読めなくなっていた。
このままリペアセンターに送ってもリジェクトされる恐れがあるからと、販売店にレシートを再発行してもらうようにアドバイスをもらったので、早速近くの販売店に足を運び、レシートを再発行してもらって事なきを得た。
レシートの整理番号を読み取ることができたのは不幸中の幸いである。
ちなみに交換プログラムは今年の7月で打ち切りらしく、滑り込みセーフで最新のOSにギリギリ対応できる旧型モデルを新品に交換できてよかった。申し込みから受け取りまで2週間だった。
交換後のウォッチはベルトの取り外しで摩擦が少ないところへシリアル番号の位置が移動している。
iPhoneをiOS14.5、Watch OSを7.4に更新して設定のFace IDからWatchでアンロックの項目をONして、マスクをつけててもiPhoneのロック解除できることを確認した。
YouTubeのプレイリストからPodcastのフィードを作成
YouTube で Listen Later プレイリスト作成して URL をコピー
https://www.youtube.com/view_all_playlists で作成
https://www.youtube.com/playlist?list=yzyVrL2gQesngUUgRcMmbEnru7H7jpPXda
Raspberry Pi の準備
Raspberry Pi Imager をインストールして起動。SD Card Formatterでフォーマットした SD カードをパソコンに挿して Imager で Raspberry Pi OS 32-bitを選択して書き込む
microSDカードのドライブを開いて、ドライブ直下に空の ssh
ファイルを作成して SSH を有効化する
Wi-Fi接続する場合は wpa_supplicant.conf
を ssh
と一緒に作成する
country=US ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="My Home" psk="yNLVb9V4JG" }
Tera Term で Raspberry Pi に SSH 接続
ホスト: raspberrypi.locale
ユーザー名: pi
パスフレーズ: raspberry
ターミナルで sudo raspi-config
を叩いて、Interface Options→VNC に☑
ディスプレイなしのラズパイに VNC 接続する際に解像度を設定しておかないと Raspberry Pi 4 のデスクトップが見えないので sudo raspi-config
から
Display Options → Resolution → DMT Mode 85 1280x720 60Hz 16:9 を選択
再起動して VNC Viewerで接続して Update Software やっとく
Docker のインストール
curl -sSL https://get.docker.com | sh
PodSync用のフォルダを作成
mkdir -p ~/podsync/config ~/podsync/data
YouTube API の取得
https://console.developers.google.com/project でプロジェクトを作成
プロジェクトを開いて YouTube Data API v3 を有効したら認証情報を作成する
使用する API: YouTube Data API v3
API を呼び出す場所: ウェブブラウザ (JavaScript)
アクセスするデータの種類: 一般公開データ
PodSyncの設定
~/podsync/config/config.toml
[server] port = 8080 data_dir = "/app/data" [tokens] # The API token you created youtube = "ZSXKKp3gwpewP3Ga2GAVCGYDL6NGUKXQ9cZVCra" [feeds] [feeds.listen_later] # The playlist you created earlier url = "https://www.youtube.com/playlist?list=yzyVrL2gQesngUUgRcMmbEnru7H7jpPXda" # The number of episodes to query each update page_size = 25 # How often query for updates, examples: "60m", "4h", "2h45m" update_period = "10m" quality = "low" format = "audio"
Podsync の Dockerイメージをクローンしてビルド
git clone https://github.com/pblgomez/PodSync-Armv6-Docker podsync-docker cd podsync-docker sudo ./build.sh
$MACHTYPE の返り値が違うっぽいので
pi@raspberrypi:~ $ echo $MACHTYPE arm-unknown-linux-gnueabihf
build.sh を書き換え
if [[ ${MACHTYPE} =~ "aarch64" ]]; then echo "aarch64" LatestRelease=$(curl -s https://github.com/mxpv/podsync/releases/ | grep -e 'href.*arm64' -m 1 | cut -f2 -d \") elif [[ ${MACHTYPE} =~ "arm-unknown-linux-gnueabihf" ]]; then echo "x86_64" LatestRelease=$(curl -s https://github.com/mxpv/podsync/releases/ | grep -e 'href.*armv6' -m 1 | cut -f2 -d \") fi
Alpine 3.13は musl ライブラリが新しくなって 32-bit 環境下では設定を葬らないといけないらしくめんどくさいのでバージョンを下げてビルド
/home/pi/podsync-docker/Dockerfile
FROM alpine:3.12
Successfully built 14ad32de3545 Successfully tagged local/podsync:latest
めでたく Podsync Docker イメージが構築できたので Podsync docker コンテナを起動
docker run -d \ --name='Podsync' \ --net='bridge' \ -e 'PODSYNC_CONFIG_PATH'='/app/config/config.toml' \ -v ~/podsync/data/:'/app/data':'rw' \ -v ~/podsync/config/:'/app/config':'rw' \ 'local/podsync'
Docker を sudo なしで実行するには pi ユーザーを docker グループに追加しておく
sudo gpasswd -a pi docker
docker daemonの再起動
sudo service docker restart
systemd で起動時に Podsync を実行する
Podsync コンテナのサービスエントリを作成
sudo nano /etc/systemd/system/docker-podsync.service
設定はこんな感じ
[Unit] Description=Podsync Container Requires=docker.service After=docker.service [Service] Restart=always ExecStart=/usr/bin/docker start -a Podsync ExecStop=/usr/bin/docker stop -t 2 Podsync [Install] WantedBy=graphical.target
WantedBy は現在のシステムモードを下記で調べてその値を設定
systemctl get-default
systemd をリロードして新しいサービスを登録
sudo systemctl daemon-reload sudo systemctl start docker-podsync.service sudo systemctl enable docker-podsync.service sudo reboot
起動を確認
systemctl status docker-podsync
S3でのフィードのホスティング
ホームネットワーク上のものをオープンなインターネットに公開したくないので、Podsync フィードとファイルをクラウドストレージプロバイダ(S3)に同期
これをやることでどこからでも最新のポッドキャストフィードを取得可能
AWSの設定
AWS はその昔アカウントだけ取得して放置していたので設定するところからはじめる
住所の更新とクレジットカード情報の登録を余儀なくされる
認証時に電話がかかってくるのでキーパッドで4桁の数字+#を入力
S3でバケットを作成
バケット名: lifeline-balsa-oilskin-denounce
☐パブリックアクセスをすべて ブロック
☑ 現在の設定により、このバケットとバケット内のオブジェクトが公開される可能性があることを承認します。
AWS アクセスキーの作成
AIMでグループを作成
グループ名: Admin
ポリシー名:
☑ AdministratorAccess
☑ AmazonEC2FullAccess
☑ AmazonS3FullAccess
☑ AmazonRDSFullAccess
ユーザの作成
ユーザを追加
ユーザ名: username
☑ プログラムによるアクセス
アクセス許可の設定
☑ Admin
rclone のインストール
curl https://rclone.org/install.sh | sudo bash
次に、選択したクラウドストレージプロバイダでrcloneを設定します(ここではS3のチュートリアルを紹介します)。
rclone config
こんな感じに
[s3] type = s3 provider = AWS env_auth = false access_key_id = 4KNBJD3RLKXKZQK58JVR secret_access_key = BU8NT3QGWZLCKFQ9LGK4RHCJUTXUV5Q5DBZ5UV94 region = ap-southeast-1 location_constraint = ap-southeast-1 acl = public-read
~/podsync/config/config.toml にホスト名を設定。ポッドキャストのRSSフィードが、localhostではなくS3バケット内のファイルになる。
[server] port = 8080 data_dir = "/app/data" hostname = "https://lifeline-balsa-oilskin-denounce.s3.amazonaws.com"
Podsyncのdockerコンテナをdocker restart Podsyncで再起動し、フィードの更新が完了するのを待ちます。
sudo docker restart Podsync
crontab -eを実行し、以下のエントリを追加します。これで、rcloneを実行して、PodsyncからMP3とRSSフィードをストレージバケットにアップロードできます。
rclone sync /home/pi/podsync/data/ s3:lifeline-balsa-oilskin-denounce --include "*.{xml,mp3}"
すべてが正しくアップロードされていれば、次のURLをお使いのPodcastプレーヤーに読み込み、Podsyncがダウンロードしたすべてのエピソードを見ることができます。
https://lifeline-balsa-oilskin-denounce.s3.amazonaws.com/listen_later.xml
crontab -eを実行し、以下のエントリを追加
*/30 * * * * /usr/bin/rclone sync /home/pi/podsync/data/ s3:lifeline-balsa-oilskin-denounce --include "*.{xml,mp3}"
ファイルの定期削除
sudo nano /etc/rc.local
ファイルの最後にexit 0とあるので、その手前に起動時に実行したいコマンドを書く
find /home/pi/podsync/data/listen_later/ -type f -printf "%A+\t%p\n" | sort -r | cut -f2 | tail -n +20 | xargs --no-run-if-empty rm --
参考リンク
Creating a Podcast Feed from a YouTube Playlist | Ben Congdon
Install notion-py on Pythonista3
Windows 機でテスト
Anaconda の 仮想環境にインストール
pip install notion
token_V2 は Chrome 拡張機能の EditThisCookie で Notion にアクセスして取得する
database の URL は Notion上で Copy link して取得する
from notion.client import NotionClient # Obtain the `token_v2` value by inspecting your browser cookies on a logged-in (non-guest) session on Notion.so client = NotionClient(token_v2="************************************************************************************************************************************************************") # Access a database using the URL of the database page or the inline block cv = client.get_collection_view("https://www.notion.so/********************************?v=********************************") # List all the records with "Bob" in them for row in cv.collection.get_rows(): print("We estimate the value of '{}' at {}".format(row.name, row.url)) # Add a new record row = cv.collection.add_row() row.name = "Just some data" row.url = "https://learningequality.org"
iPhone でテスト
Pythonista を起動して getstash.py
を作成して
import requests as r; exec(r.get('https://bit.ly/get-stash').content)
Home Screen Icon が動かないので Python Tools Installer から ShortcutGenerator をインストール
ptinstaller
/bin/Utilities/ShortcutGenerator
ShortcutGenerator.py を開いて▷長押しで Run with Python 2.7 をタップ
Title: StaSh
URL: pythonista3://launch_stash.py/?action=run
アイコンにする画像は予めカメラロールに保存しておく
notion-py のインストール
関連モジュールのインストールに失敗するがプログラムを実行してみて一つずつ入れれば自分のやりたい範囲は動作した
pip install notion pip install cached-property pip install commonmark pip install python-slugify pip install tzlocal pip install dictdiffer
Reminders to Notion
早速 Reminders リストの取得を試みるもURLが取得できなかった。notionにポストする方じゃなくてiOSアプリでコケるとは。
import reminders todo = reminders.get_reminders(completed=False) print('TODO List') print('=========') for r in todo: print('[ ] ' + r.title) print('[ ] ' + r.url)
気を取り直して、Shortcuts アプリを使って Reminders を辞書化して作ったテキストデータをクリップボード経由で Pythonista に渡すことにした。Pythonista 側ではタイトルのリストを作成してクリップボードにセットして、shortcuts をコールバックする。
クリップボードにタイトルが含まれるものは完了マークを付ける。Shortcuts の Automation 機能で Reminder アプリを閉じた時にショートカットを開く設定にしておけば Reminder to Notion は半自動化される。
import clipboard import webbrowser from ast import literal_eval from notion.client import NotionClient # Obtain the `token_v2` value by inspecting your browser cookies on a logged-in (non-guest) session on Notion.so client = NotionClient(token_v2="************************************************************************************************************************************************************") # Access a database using the URL of the database page or the inline block cv = client.get_collection_view("https://www.notion.so/********************************?v=********************************") reminders = clipboard.get().splitlines() titles = [] for reminder in reminders: reminder = literal_eval(reminder) title = reminder.get('title') url = reminder.get('url') row = cv.collection.add_row() row.name = title row.url = url titles.append(title) output = '' clipboard.set(output.join(titles)) webbrowser.open('shortcuts://')
ここまでやっといて数回使ったあとに notion に inbox 運用はなんかしっくりこなくてやめた。やっぱ Gmail とか Google Tasks でいいんだよね、受信箱は。