コンテンツへ移動
KAMOUniverse

チェンジログ

何が新しいの?

プラットフォームのすべての改良 それが出荷される

  1. · kamo-marketing

    モダンなアニメーションと最適化を備えたポーランドのビデオヒーローユニット

    - ビデオ負荷の間に即時の視覚フィードバックのためのポスター イメージを加えて下さい - パルスアニメーションでスケルトンをロードする実装 - ビデオのミュートを開始(ブラウザ自動再生ポリシーの遵守) - 効率的なビデオ読み込みのためにpreload="metadata"を追加 - ボタンのスタイリングを高めて下さい:より大きい(h-12 w-12)、よりよいボーダーの半径(円形xl) - デュアルレイヤー効果(24px + 8px)でシャドウを改善 - スムーズなコンテナフェードインアニメーション(0.8s easyOut)を実装 - AnimatePresence を円滑なミュート/ミュートのアイコン遷移に追加 - スケール、シャドウ、および背景遷移によるホバー効果を高める - 触覚フィードバック用のタップアニメーションを追加(スケール0.95) - 滑らかな不透明度移行のためのビデオ負荷状態を追跡する

  2. · KlusterServices

    すべてのデスクトップ上のKAMOTEAM共有フォルダ

    デスクトップ-1 は /srv/kamoteam をホストし、 NFSv4 経由でエクスポートします。すべての VM ユーザーが取得します。 ~/デスクトップ/カモチーム シンリンクとして (新しいアカウントとエージェントの /etc/skel 経由) 既存のディレクトリと、ワークステーションは同じディレクトリをマウントします。 VM は、常にオン側であるため、データを保持しています。ワークステーションは DHCP の WiFi ラップトップなので、 VM ユーザのフォルダーを VM ユーザごとにドロップします。 アドレスが移動したときにマウントをスリープし、分割します。 完全な読み書きは一緒に3つの事を必要とします、そしていずれかを省略すると共有を与えます 2人目が書いているまでは右に見える:kamoteamグループ、setgidプラス DEFAULT POSIX ACL(022 umask なしで)は、各ユーザのファイルを読み取り専用にします。 その他)、NFS all squash を固定 ID に、ワークステーションの uid に 1000 は VM の uid 1000 として静かに処理されません。 NFSv4 だけ: 1 つの港、rpcbind 無し、それはそれを転送可能にするものです KubeVirtのマシュクラデ。 NodePort 32049 として LAN に露出.

  3. · kamo-marketing

    ヒーローテキストユニットをオートプレイプロモーションビデオで置き換える

    ホームページのヒーローコピー、CTA、および回転背景処理を維持しながら、ミュートされたビデオをループするための統計をスワップします.

  4. · KlusterServices

    OOMKillsのアラート、およびそれらが優先する占有率について

    何も記憶を観ていました。 MediaService は、数時間ごとに OOMKilled だった 1 日とメールサービス 6 回、誰が見つけたかはチャットでした 静かにメッセージの読み込みを停止したウィンドウ — コンテナのダイイング 2 秒以内に再起動すると、古い部分ではなく、壊れた機能として読み込まれます。 3つのルール コンテナOOMKilledイベントの火災; ContainerOOMKillLoop Podから1オフを繰り返し殺し、高速で再起動します。 1/1 動くことを示すのに十分。 ContainerMemoryNearLimit は、 先日は、30分保持の制限の>85%を捕まっています。 JVMについて 忙しいポッドではないMaxRAMPercentage、それはそのヒープ天井に座るポッドです 上部に積み重ねられる非ヒープを使って、それは直立した状態です カーネルの介入。 4 番目、情報、制限のないコンテナをフラグ つまり、独自の cgroup で OOMKilled することはできませんが、ノードを取り下げることができます。 想定されるよりも実際のデータに対して検証:式は評価された このクラスターで、最後の12時間をクエリすると「OOMKilled」シリーズが表示される 正確にkamowsemail(18:33-01:28 UTC)とkamowsmedia(21:28-01:03 UTC)のために — 失敗した2つのポッド。 ルールは両方に重要な火をつけます。 何も無声にマッチするアラートは、アラートなしで同じ失敗です。 YAML よりも重要であることを確認してください。 手で適用される; 監視/ CI の適用対象ではありません.

  5. · KlusterServices

    セージを除くアウトバウンドSSHをブロックし、k1m1/k3m1を解決し、エージェントダイアを束ねる

    アウトバウンド tcp/22 は root と sage 以外のすべての uid では、ソケット上でキーをキープします。 オーナーなので、将来のアカウントは再実行せずにカバーされます。 お問い合わせ システム単位で起動します。, nftables ルールは再起動を生き残さないので. です。 ガードレール、境界線ではない: kamodev はパスワードレス sudo apt を持っています。 root-等価 — 2つの要件は緊張にあり、文書化されます。 k1m1/k3m1 は、エントリがクラウド・イニット TEMPLATE や /etc/hosts に移動し、 handle etc hosts は、すべての起動時にファイルを再生し、 プレーン・アベンドを生成します。 静かに消えます。 LAN IP を使用する。WireGuard/CGNAT のオーバーレイは退職され、 10.0.50.1 は、node-to-node リンクのみです。 cloud-init はデスクトップ/エージェントを 1 つのデテミニスティック tarball ではなく 1 つとして運びます ファイルごとのプレースホルダ — セットは3つのファイルから10に行き、各追加 テンプレートと CI レンダーのステップを編集することも意味しています.

  6. · KlusterServices

    すべてのユーザーの標準的なツールチェーン、タスクバー ピンおよびパスワードレス インストール

    クリタとマーベンを追加します。 **************** は既に存在していました。 すべてのユーザーのためのタスクバーにクロム、VSコード、ケイト、分光器およびクリタをピンで止めて下さい、 dev ユーザーが管理パスワードなしでソフトウェアをインストールできるようにします。 パスワードレスインストールにはBOTHの半分が必要です。 sudoersはターミナル、polkitをカバーします カバー 発見し、他のすべてのグラフィカルインストーラ. パッケージに含まれている kamodevグループによる管理は、ブランケットルートではなく、 - コメントを参照してください より小さいブラスト半径であるが、セキュリティ境界ではない理由のそれぞれのファイル。 タスクバー: 新規アカウントは、useradd 時に /etc/skel からテンプレートを継承します。 既存のアカウントは、ランチャー = 行のみが書き込まれるので、パーソナライズされた パネルは、アイコンのリストを修正するために捨てられません.

  7. · kamo-internal

    Linux デスクトップ アイコンをプロビジョニングで囲む

    アイコンは、その背後にある接続が機能すると正確に表示されます。 SSO endpoint は同じルールを強制します。そのため、2 は無視できません。 Windowsとマスター 依然として 1 つのクレデンシャルを共有するので、彼らはisGod に滞在します.

  8. · kamo-internal

    管理者カードのDev Machineダイアログ

    ひとつのトグルが崩壊するという3つの状態を保ちましょう: 決して暫定 (パスワードが必要です)、暫定されたが、ロックされた(スイッチのみに必要)、失敗 (エラーと再試行が必要) スイッチは、誰も選んだパスワードを発明することはできません.

  9. · kamo-internal

    クライアントモジュールとプロキシルート

    ***は、明示的に転送されます — buildForwardHeaders は X-OTK をセットしますが、 セッショントークンと dev-machine エンドポイントは、呼び出し元を解決します。 アクションセグメントは、通過するのではなく、固定セットに対してチェックされます.

  10. · SecurityService

    SSO の資格情報と失敗を説明するプリフライト

    Linuxは、神ではなく、有効な規定にゲートされ、 会員の資格情報 接続はトークンから完全に省略されます。 Guacamole's として表面を拒絶する 1 つを提供する 一般的なエラーは、これは、反応不可能な失敗です.

  11. · SecurityService

    Dev機械サービスおよびコントローラー

    チームメンバーのメールアドレスではなく、メンバーアカウントのメールからユーザーネームデリブ 仕事アドレスは別のドメインに座って、静かに別のドメインを生成することができます アカウント名。 Reset-password は GD と GodModeActive を組み合わせる必要があります.

  12. · SecurityService

    Dev マシンプロビジョニングエージェントの HTTP クライアント

    health() は輸送障害を嚥下し、 SSO のプリフライトが使えるように false に応答します 500 ではなく、実用的な 503 を返します.

  13. · SecurityService

    AES-GCM 秘密のコーデックと POSIX のユーザー名の派生

    Codec は意図的にリバーシブルです。 RDP 自動ログインは実際のパスワードが必要です。 GCM を使うと、改ざんされたキーや間違ったキーの行が大声で失敗します。 Guacamole に渡すノイズ.

  14. · kamo-shared-library

    Dev machine accounts 実体、ステータス列、リポジトリ

    ステータスと有効化は非適格に分離されます: 暫定的に無効なアカウント 再構築ではなく、ホームディレクトリを保持するので、再エナブルはアクセスを復元します.

  15. · KlusterServices

    CI、guacamoleの健在性、可用性アラートのエージェントの秘密

    ライブプロメテウスに対して検証されたアラート式。 kube-state-metrics を使う kubevirt * ではなく、KubeVirt のメトリックのエンドポイントはここにスクレイピングされていないので、 決して発砲しながら、それはカバレッジとして読み込まれるルール. セレクター ラベルは Prometheus CR の ruleSelector にマッチする release=kps です。 シークレットハンドリングはxtraceオフで実行されるため、CIログから値が残っています.

  16. · KlusterServices

    Idempotent エージェント インストーラー、クラウド・イニットとライブ・インストールで共有

    /opt/kamodesk-top-agent でステージングされるので、install-agent.sh は異なるソースを持っています そして目的地。 netplan-by-driver、クラウド-init ネットワークの無効化、xrdp をカバー セッションポリシー、/etc/skel/.xsession、およびエージェント自体.

  17. · KlusterServices

    暫定エージェントとユニットテストを追加

    Python 3 stdlib のみ。 すべてのミューテーションは、argvリストでサブプロセスを実行します。 シェル文字列; パスワードは stdin で chpasswd に移動して /proc から離れます.

  18. · SecurityService

    セッションに触れることなく、ブラウザにint64 idsを文字列として送信

    CockroachDB一意 rowid() の id は 19 桁、過去数です。 MAX SAFE INTEGER なので、id JSON 番号として送信されると、その低桁の丸みを帯びたブラウザに着きます。 お見逃しなく! 163 ハンドラの応答は、生ロング org とメンバー ids を アドホックマップなので、DTO-by-DTO作品がクローズできなかった。 開いたままの理由は、明らかな修正がプラットフォームを下げることです。 マッパー 応答を提供するのは、同じビーンKSessionServiceが***セッションマップを書いています Redis with と id は ((Number) ...).longValue() -- 65 でそのマップから読み返されます このサービスで、DocsService、MediaService、ConvertService、 同じペイロードを読みます。 その豆とそれらのすべての投げに長い引用. そのため、このルールはMVCメッセージコンバーターにコピーに添付されます。 応答が得られる セッション、NATSパブリッシャー、サービスツーサービスクライアントは、数値マッパーを維持します 彼らはいつも持っていました。 毛布のロングではありません → 文字列。 ロングはidの代名詞ではありません:epoch Millis SecurityRoleDTOとブランチタイプとセキュリティモデルDTO、LeadIntakeEndpointDTOの カウンター、Page.getTotalElements()、バイトサイズ、および期間は、ブラウザのすべてのロングです arithmetic と new Date() は、mix-in がキーを持たないマップ内で最も到着します。 お問い合わせ 代わりに、シリアライザーは値に切り替えます。JSのセーフレンジを上回る 文字列を記述します。以下は数値です。 各々のユニーク rowid は、すべてのタイムスタンプ、カウントが上にあります。 とサイズは下にありますが、未分類のフィールドは同じルールで扱われています。 これらの応答を読み取る仲間に対して検証: KamoJwtService と DavAuthFilter すでにフォーム(インスタンス番号? ... : Long.parseLong(...)のいずれかのフォームを受け入れます.

  19. · kamo-login

    在庫アラートをアニメーションステータスプレートに置き換える

    インラインサインインメッセージ(ログイン成功) リダイレクト...「無効」 ユーザー名および/またはパスワード。") は、MUI のデフォルトアラートを使用しており、パステルはプラス パステルテキストのマッチングは、ガラスのログインカードに対してジェネリックとして読みます。 StatusMessageは、その式を反転します:同じで霜降りの近くの白板 ガラス家族はカードとして、一枚のアイコンに濃縮された重度の色で 破片、テキスト、ヘアラインのボーダーおよび柔らかさの前に渡る洗浄 ハロー。 インクは、アクセントのウィスパーとほぼ黒にとどまるので、 任意の org の --color-primary に対するコントラスト。 Neutral/info メッセージは、 ストックブルーの代わりに、オーガ独自のプライマリ。 モーションは1つのオーケストレーション・エントランスです。 プレート・スプリング、アイコン・ドロー 独自のストロークと、一粒のハイライトが広がります。 ログイン 既存の人にワイヤーで縛られる仕事のための旅行ヘアラインを加えて下さい `redirecting` 状態なので、 "Redirecting..." は、ただではなく進行状況を示しています それを主張する。 エラーは1つの短いセットリング衝動を取得します。 好ましい感情は、そのすべてが明白なフェードに崩壊します。 エラー発表 role="alert"/assertive として、他のすべてが礼儀正しくとどまります。 ログイン、復元、リセットパスワード、OAuthエラーページに適用されます.

  20. · kamo-marketing

    25周年記念シールを追加

    主張がすでに行われている場所のために選ばれた2つの配置: 「© 2001-<year> ... 2025」の横に、フッター — 60px。 サイトマップ 別の信頼の印として作り付けの印と分かれる。 約168px、ミッションセクションを開きます。 そのページは、 25年の歴史は、渡るノートではなく引数です。 家庭のヒーローではなかった: その見出しはただ1つの審議に戻ってしまっていた 効果と金メダリオンは、その横に拘束力を発揮します。 1つのアニバーサリーバッジコンポーネントは、アセット、altテキスト、 1つのファイルから退職を記念する年。 ソースPNGは1254pxで2.4MBでした。 512px にサイズ変更し、WebP にエンコード つまり、95 KB で、次/画像の最適化が進んでいるので、実際の船舶は AVIFは配置ごとに派生しました:約2x、35 KBのフッターのための8.3 KB.

  21. · kamo-marketing

    2001年の著作権範囲と定款年を表示

    Renders「© 2001-<year> KamoCRM. KamoCRM Inc. 設立 2025. すべての権利 お問い合わせ ダイナミック・エンド・イヤーの横にある範囲の開始はハード・コード化されます 翻訳された文字列に住んでいるよりも、局部が損傷することができません.

  22. · kamo-marketing

    ミーティングとペイロールの統合を追加

    ミーティング用のズームとMicrosoftチーム、および10個のペイロールベンダー - ADP 現在、BambooHR、Dayforce、Gusto、Paychex Flex、Paycor、Paylocity、 Rippling, UKG, Workday. 33 に統合 45, 新しい給与と人事 カテゴリとビデオ会議は、ボイスの横に促進されます。 各ページは、そのプロバイダーが実際に実行しているものではなく、 均一テンプレート。 ペイロシティにはペイペリオのカレンダーやPTO残高はありません。 デイフォースは、ペイペリオドのカレンダーがなく、ペイチェックスやリップリングのプッシュもありません 労働配分、そうそれらのページがそうでなければ主張しません; authの話 ベンダーごとに異なる(Gusto、Paycor、Rippling、BamboHRのOAuth) ADPの証明書、Workdayのリフレッシュトークン、UKGのサービスアカウント そして、Dayforce)と各設定フローは、そう言っています。 ロゴは、kamo-internalのpublic/logo/{meet,payroll}のベンダーアセットです。 ペイロールセットは、0.72:1(Dayforce)から6.2:1まで稼働しているWORDMARKSです。 (Paychex): アイコンのロゴの使用を正方形の版でレンダリングされる、6:1の印は来ます ピクセルの高さが少ない。 インテグレーションは現在、資産の本質を運ぶ LogoWidth/logoHeight、ハブカードと詳細ページを設定する場所 フィットするために成長するプレートの自動幅で固定高さでレンダリング — 同じ資産のために作られた同じ修正kamo内部。 正方形のロゴはあります 無接触。 ハブメタデータは、古い5つのカテゴリとハードコードされた「31 ネイティブ」のみと名付けられました。 統合」; 会議や給与をカバーし、レジストリをカウントします.

  23. · kamo-marketing

    アプリケーションをカウントし、実際の数値と別々に統合

    「アプリとインテグレーション」は、31以上のタイルを読み取りました。 それぞれが2つあります。 推定値ではなく、反復できる数字: アプリ 64 — Forgejo プロジェクトは `kamo` が所有する, 割込み インテグレーション 64 — 異なるサードパーティー API と作業クライアントコード 統合カウントは、プロバイダのレジストリ(AiProviderType、 BulkTextProviderType、SocialProviderType、VoipProviderType、 IdentityProviderType、RetailProviderType、MlosIntegration)およびペイロール、 会議およびMLOSの閉鎖のアダプター。 それらの背後にあるもののないエントリの列 除外されるので、18の未導入カレンダープロバイダ、EncompassおよびXboxはします カウントしません。 どちらの数字も手持ちです。コメントレコードの使い方 再確認してください。 4つのタイルは4つの格子を必要とします、従ってstatsの列は今1/2/4に向かいます タイルのパディングとタイプを合わせるためにスケーリングするブポイント.

  24. · kamolos

    ProxyHmacFilterを有効にする — ステップ2、X-Org-Idは実証済みのヘッダーです

    los.proxy-hmac.enabled は、このデフォルトで false のデフォルト値に落ちています。 サービスが展開されるため、ProxyHmacFilter は存在し、決して実行しません。 X-Org-Id — ヘッダ 本サービスにおけるすべての org-scoped クエリーは、署名解除され、クライアントは、 ライブマルチテナントローンAPI。 ステップ1が最初に上陸したので、今すぐ有効にセーフ:kamo-internalは同じをマウントします los-proxy-hmac シークレットと実行中のポッドは署名しています。 プッシュ。 逆注文は、プラットフォーム内のすべての融資リクエストを拒否しました。 それを拭く前にチェック: - フィルターは/actuator/**をバイパスします、従って起動および準備の調査はまだ パス。 それらを捕まえたポッドは準備ができていないだろうと、これはロール 戻る。 - それは /api/los/webhooks/** をバイパスするので、Stripe は作業を続けます。 代わりにStripe独自のシグネチャで。 - kamo-internalはkamowslos-serviceの唯一の発信者なので、署名されていない サービス・ツー・サービス・パスを背後から残します。 これは、LoanServiceとLoanScopeのorgチェックを置き換えません。 それは何を上げます X-Org-Id は、「送信したヘッダ」から「送信されたプロキシのヘッダ」までを意味します。 これらは、名前付き org が行を参照するかどうかを決定します。 深さの防衛:どちらもあります 一人で十分.

  25. · kamo-internal

    プロキシ ID ヘッダーの署名 — ProxyHmacFilter のステップ 1

    このプロキシからX-Org-IdとX-Member-Idを信頼しています。 ProxyHmacFilter は ここから来たヘッダを証明するが、生産で無効化されている: デプロイメントは LOS PROXY HMAC ENABLED をセットし、現在まで共有シークレットが存在しないため、 los.proxy-hmac.enabled は false に分類され、ヘッダはライブに署名されていない 複数テナントローン API で 15 件の実質ローンをオンにします。 LOS のルートは既にシグネチャを計算します。それは単にスキップします。 LOS PROXY HMAC SECRET は不在です。 新しい los-proxy-hmac の秘密を取付けることは何かです サインインを切り替えます。 目的はまずです。 KamoLOS は署名を無視して、 los.proxy-hmac.enabled は true なので、このコミットはどこにも動作しません。 X-Proxy-Signature と X-Proxy-Timestamp を接続します。 それを他の方法で行う — 署名前の検証 — プラットフォーム内のすべてのローンリクエストを拒否します。 ステップ2セットLOS PROXY HMAC ENABLED=trueとkamowslos-deploymentの同じ秘密、 このロールアウトが確認された後.

  26. · SecurityService

    KamoMeetロゴのオーバーレイをconfig.jsonに解決

    KamoMeet は OrgContext にアクセスできない Meet fork なので、org を学ぶ テーマ config.json のこのサービス bakes からブランディングします。 オルガは、 オーバーレイトークン; これは、そのorgの独自のパレットと書き込みに対してそれを解決します kamomeetLogoOverlayColorとして終了する六角。 ここに解決するのではなく、13トークンテーブルをフォークに出荷 点: すでに org 背景のスライドショーを 1 つとして運びます 9つの独立したコピーの2番目のテーブルは同じ漂流します 方法。 解決された色を焼くことは、この機能の「凍った六角」ではありません データベースの回避 — config.json は、すべてのブランディング保存で再生されます。 色の変更が含まれています。 プレフィックスマッチは「セコンダリーとはPRIMARY」ではなく、明示的です。 ツイート 緩いバージョンが何をしたかをキャッチしたテスト: "#FF0000" は、限り正確です 「PRIMARY」は、空のステップを残して、プライマリベースに解決しました。 誰も選んだ色は、プラットフォーム側の画面に誰も到着しない お問い合わせ 未知のトークンと未設定のシェードは、config.json から省略されます。 クライアントが「上敷なし」を読んでいるのは、まったくです。 トークンテーブルは、kamo-internal のロゴOverlay.ts でステップで滞在する必要があります。 テストは、ビルドの失敗を無視するものです.

  27. · InitializerService

    Kamomeet logo overlay カラムを追加する

    第三のオーバーレイ面:カモメット前面スクリーン。 同じ形として 他の2 — nullable、バックフィルなし、DEFAULTなし。 ドリフトガードは、そのフィールド名だけを追加する必要がありました。 一度にそれらを命名するのではなく、エンティティティのオーバーレイフィールド。 です。 それをこのように書きました.

  28. · kamo-shared-library

    組織上のカモメットロゴオーバーレイを運ぶ

    第三と最後のオーバーレイ表面、その2つの兄弟と同じ語彙、プラス 一般的なパッチパスのブランチ。 これは、それが終わる場所に異なっています。 ホームページとロード画面 OrgContext から直接トークンを読み込む。KamoMeet はMeet fork です。 そのため、SecurityService はこのトークンを org から解決します。 パレットをパレットにし、完成した色をテーマ config.json にフォークに入れます すでにフェッチ。 したがって、トークンはプラットフォームを離れません。 thirteen オプションはフォークにコピーされるのではなく1つの場所で存在します すでに9つの独立した背景のコピーを蓄積している スライドショー。 Null は NONE に解決します。そのため、既存の org はすべてオーバーレイしません。 ザ・オブ・ザ・ kamomeet logo overlay カラムは既に適用されます(KamoInitializer).

  29. · kamo-internal

    KamoMeetsの事前ミーティング画面のロゴオーバーレイ

    第三面と最後の面、他の2つの横に提供 — 同じ13 オプション、独自の設定、デフォルトなしオーバーレイ。 orgが実際にその画面に到達できる限り非表示:ミーティングアプリ プロバイダーに選ばれた AND カモメットに切り替えました。 ズームまたはチームに関するorg 決してKamoMeetsの事前ミーティング画面をレンダーし、アプリのないorg フィールドは何も行わないので、フィールドはコントロールです。 保存される 値が隠されている間に生き残るので、会議を復元に戻す 静かにクリアするのではなく、選択します。 プロバイダーはマウント時に取得されます。 フィールドに応答するまで 隠されているので、それは消えるのではなく現れます。失敗したルックアップは解決します KAMO MEET に、バックエンドが提供者なしで org に何をしているのか 行 — 実際のものを隠すよりも無害な設定を示す方が良い リクエストが失敗しました。 このトークンは2つの兄弟とは異なり、そのトークンは、それが管理する表面に到達しません。 KamoMeet は OrgContext にアクセスできない Meet fork なので SecurityService 日陰を解決し、終了する色をそのorgのテーマに焼く config.json です。 ここで設定 UI だけがトークンを読み込みます.

  30. · InitializerService

    レポートとダッシュボードの行をパージし、View DASHBOARD のシードを停止します

    VIEW DASHBOARD(0)、VIEW REPORTS(1)およびEXPORT REPORTS(2)は、 RoleRightTypeは、名前の2つのページとともに、今日のところです。 これはそれらを削除する 左右のエンコーディング。 メニュー 特定商取引法に基づく表示 新たな組織に付与されるので、あまりにも出ます。 それは唯一の参照だった 定義サイト外で、コンパイラが見つけたものです。 正しい名前を探し、列を読むのは同じ検索ではありません。 VIEW TASKS は、パージから非審議的です: app/tasks は同じように見えます ソースの削除されたページが完成する予定である。 Id 0 は実際の ID です。これは明示的にリストされ、このパスで何か 真実に耳を傾けば、VIEW DASHBOARDの行を静かにスキップします.

君の宇宙は待ってる

数分で無料で開始できます。準備ができたらいつでも製品を追加できます。移行も新しいログインも不要です。

クレジットカード不要