MatrixOne 実践シリーズ レビュー | プロジェクト シナリオのインポートとエクスポートの実践

この共有では主に MatrixOne のインポートとエクスポート、およびプロジェクト シナリオの実践を紹介します。データのインポート、エクスポート、データ統合ツールのドッキング、Java 接続の実践の 4 つの方向から MatrixOne の機能をデモンストレーションします。

データ インポートでは、3 つの方法を使用してデータを MatrixOne にインポートします。それは、insert ステートメント、load data ステートメント、source メソッドです。特別な注意は、ロード データがリモート S3 ファイル システムからのファイルのプルとインポートをサポートしていることです。

json ファイルについては、MatrixOne でインポート方法も提供されているので、後で一緒に試してみましょう。

MatrixOne では、データ エクスポートのためのさまざまなメソッドも提供しています。ここでは、select into outfile メソッドと mo_dump ツールを使用してデータ エクスポートを練習します。

HSTAP データベースとして、MatrixOne は市場で最も人気のあるデータ統合ツールや計算エンジンのいくつかもある程度サポートしています。このビデオでは、Datax、Flink、および Spark が MatrixOne を統合する方法を説明します。

最後に、単純な SpringBoot プロジェクトを使用して、MatrixOne をビジネス データベースとして使用し、CRUD 機能を実行します。

この 4 つのパートを実践することで、誰もが MatrixOne データベースの強力な機能を基本的に理解できるようになると思います。

次に、最初の部分である MatrixOne データのインポートを開始します。

パート 1 データのインポート

#1 メソッドに挿入

ここでは、MatrixOne で顧客テーブルを作成する必要があります。顧客テーブルは、自動インクリメントされる主キーである 4 つのフィールドで構成されます。顧客名、都市、国はすべて Varchar 型です。まずインポートする列を指定し、次にバッチ挿入メソッドを使用してインポートします。最後に、customer テーブルのバックアップ テーブルを作成し、insert into select メソッドを使用して customer テーブルのデータを customer バックアップ テーブルにバックアップします。

#2 データのロード方法

▶ 2.1 CSVファイルのインポート

データロード機能を練習してみましょう。まず、事前に用意したローカルの customer.csv ファイルをインポートします。

まずこの csv ファイルを見てみましょう。テスト データは 3 行あります。開始行はデータです。ヘッダーを削除する必要はありません。列の区切り文字はカンマ、行の区切り文字は改行文字です。

次に、load dataコマンドを実行してデータをインポートしますが、注意する必要があるのはファイルのパスです。不明な場合は絶対パスを記述してください。

注: データ ファイルが MatrixOne サーバーとは別のマシン上にある場合、つまり、データ ファイルが使用しているクライアント マシン上にある場合は、Mysql Client コマンドを使用して MatrixOne サービス ホストに接続し、追加する必要があります。 --local-infile パラメータ。;また、インポートされたコマンド ラインでは、ロード データのローカル infile 構文を使用する必要があります。

さらに、MatrixOne は、load data コマンドを使用した、S3 オブジェクト ストレージ サービスからの csv ファイルおよび jsonline ファイルのバッチ インポートをサポートしています。

ここでは、CSV ファイルを Alibaba OSS ファイル システムから MatrixOne にインポートするテストを実行しました。時間の問題のため、デモは省略します。構文と効果を見てみましょう。

まず、事前にOSSでバケットを作成し、認可に必要なAk、sk、リージョンを取得します。

データの読み込みでは、OSSエンドポイント、ak、sk、バケット名、リージョン、圧縮形式、ファイルパスを順に設定し、その他の方法はローカルインポートと同様です。

▶ 2.2 jsonファイルのインポート

csvファイルをインポートすることは実証済みですが、一緒にjsonファイルもインポートしてみましょう。

まず、インポートされたデータを受け取る新しいテーブルを作成します。json_line_obj.jl ファイルを作成し、いくつかの json テスト データを追加します。

次に、データの読み込みコマンドを使用してインポートします。この JSON ファイル内のすべてのオブジェクトはオブジェクトであり、配列構造ではないことに注意してください。フィールド名とタイプは、MatrixOne テーブルのフィールド名のタイプに対応する必要があります。

次に、新しいテーブル t2 を作成して、json 配列のインポートをテストします。

ここでは、通常の json.jl ファイル、解凍すると jl ファイルであることがわかる bz2 圧縮パッケージ、bz2 形式の圧縮ファイルの 3 つのファイルを事前に用意します。グズさん。

3 つのインポート コマンドを順番に実行し、jsondata フィールドを使用して json 構造を識別します。前のものとの違いは、配列を埋めるのではなく、オブジェクトではなくなっていることです。

2 番目のコマンドでは、圧縮形式の設定に注意が必要です。

3 番目のコマンドはインポート時に最初の行を無視します。実行後の効果を見てみましょう。

ここでインポートすると、データの最初の行がないことがわかります。

#3 ソースコマンド

最後に、source コマンドを使用して、事前に用意した SQL ファイルを MatrixOne にインポートします。

データの量が比較的大きい場合は、Mysql client-e パラメータとともに nohup を使用して、バックグラウンド インポートを実行できます。

次に、MatrixOne のデータ エクスポートについて説明します。

まず、select into outfile を使用します。

いくつかのテストデータを含む sys_permission テーブルを事前に準備しました。

エクスポートには SQL を使用します。

エクスポートが完了すると、対応する生成された sys_permission.csv ファイルが現在のディレクトリに表示されます。

さらに、SQL をエクスポートするときに区切り文字を指定し、縦棒を列区切り文字として使用して一度エクスポートすることもできます。

エクスポートが完了すると、対応するファイルで列区切り文字が垂直線に変わっていることがわかります。

 

パート 2 データのエクスポート

#1 の mo ダンプ ツール


次にmo-dumpツールを紹介します。これは、MatrixOne のクライアント側エクスポート ツールです。mysqldump と同様、.sql タイプ ファイルをエクスポートすることで、MatrixOne データベースをバックアップするために使用できます。エクスポートされた SQL ファイルには、テーブル構造作成ステートメントも含まれています。

次のパラメータを設定できます。

  • -u は、MatrixOne サーバーに接続するためのユーザー名を指定します。データベースとテーブルの読み取り権限を持つユーザーのみが mo-dump を使用できます。デフォルト値は root です。
  • -p は、MatrixOne ユーザーのパスワードを指定します。デフォルト値: 111。
  • -h は、MatrixOne サーバーのホスト IP アドレスを指定します。デフォルト: 127.0.0.1
  • -P は、MatrixOne サーバーのポートを指定します。デフォルト値: 6001
  • -db は必須パラメータを指定します。バックアップするデータベースの名前。
  • -net-buffer-length は、SQL ステートメント文字の合計サイズであるパケット サイズを指定します。データ パッケージは SQL エクスポート データの基本単位です。パラメーターが設定されていない場合、デフォルトは 1048576 バイト (1M)、最大設定は 16777216 バイト (16M) です。ここのパラメータが 16777216 バイト (16M) に設定されている場合、16M を超えるデータがエクスポートされるとき、データは複数の 16M データ パケットに分割されます。最後のデータ パケットを除き、他のデータ パケット サイズは 16M です。
  • -tbl はオプションのパラメータです。パラメータが空の場合、データベース全体がエクスポートされます。指定したテーブルをバックアップする場合は、コマンドで複数の -tbl とテーブル名を指定できます。

mo-dump ツールは、コンパイルのために git からソース コードをダウンロードする必要があります。時間の都合上、ここではコンパイル プロセスを説明しません。事前にコンパイルしたバイナリ パッケージを直接使用してデモンストレーションします。

mo-dump コマンドを使用して、以前に作成した test_json_load テーブルをエクスポートします。

エクスポートされた結果は .sql ファイルであることがわかります。この SQL ファイルを確認してみましょう。

その3ドッキングデータ統合ツール 

まず、Datax を介して Mysql から MatrixOne にデータをインポートします。ここで使用するMysqlのバージョンは8.0.32で、ソースデータとしてテスト用のデータベーステーブルを事前に用意しました。

MatrixOne は MySQL 8.0 との互換性が高く、DataX に付属する MySQL Writer は 5.1 JDBC ドライバーに適合しているため、プログラムの互換性を向上させるために、コミュニティが独自に MatrixOne Writer プラグインを 8.0 ドライバーに基づいて変換しました。

次の文にも注意してください。基盤となる実装の観点から、MatrixOneWriter は JDBC 経由でリモート MatrixOne データベースに接続し、対応する insert into... SQL ステートメントを実行してデータを MatrixOne に書き込みます (データは内部的にバッチでデータベースに送信されます)。

Datax の展開と導入については詳しく説明しません。まず、Datax ジョブ構成ファイルを見てみましょう。このファイルは自分で作成する必要があります。

すべての構成情報はジョブ オブジェクト内にあります。ジョブ オブジェクトには、settingscontentという 2 つの属性があります。

  • 一部の Datax タスク パラメーターは設定で構成できます。たとえば、ここでの速度はインポート速度 (設定された並列処理) を表します。
  • データソースとターゲットソースの情報はコンテンツで構成されます データソース情報はリーダーオブジェクトで構成され、ターゲットソースの情報はライターで構成されます 具体的なリーダーとライターの構成は、自分で作成したファイルに基づいて分析されます後でインポートするとき。

事前にDataxを用意し、対応するプラグインディレクトリにmatrixOneWriterを配置しました。

次に、作成したジョブ ファイルを見てみましょう。通常、このファイルは Datax のジョブ ディレクトリに置かれます。

最初に言っておきますが、私たちの目標は Mysql からデータを読み取って MatrixOne に書き込むことなので、ここでの読者は Datax に付属の mysqlreader を使用するだけで済みます。ライターは輸入したmatrixonewriterを使用しています。

ここでのリーダー名とライター名では大文字と小文字が厳密に区別されることに注意してください。

名前の構成に加えて、インポートされた行列、Mysql 接続情報接続、ユーザー名、およびパスワードをパラメーターで構成する必要もあります。

同様に、名前の設定に加えて、ライターはパラメーターで列、MatrixOne 接続情報、ユーザー名、およびパスワードを設定する必要があります。

これに加えて、Datax はエクスポート時に ETL を実装するための preSql フィールドを提供できます。この場所のETL

SQLはインポート前に実行されます。

設定ファイルを書き込んだ後、Dataxコマンドを実行してジョブファイルを指定します。ここでジョブファイルのパスに注意してください。

実行が成功すると、データが MatrixOne に書き込まれたことがわかります。

第 4 部Java 接続の練習 

次に、Flink エンジンを介して Mysql と Kafka から MatrixOne にデータをインポートする方法を説明します。

Apache Flink は、境界のないデータ ストリームと境界のあるデータ ストリームでステートフルな計算を行うための分散処理エンジンです。Flink はすべての一般的なクラスター環境で実行され、メモリ速度とあらゆる規模で計算できます。

Flink の概念についてはあまり紹介しませんので、直接練習してみましょう。

ここでもう 1 つ言っておきたいのは、この共有ビデオで使用されている MatrixOne のバージョンは 1.0.0 RC2 であるということです。

#1 MySQL

まず Mysql をデータ ソースとして使用し、Flink JDBC を通じて Mysql のデータを MatrixOne にインポートします。ここで使用している Mysql のバージョンは 8.0.32 であることがわかります。

次に、Mysql でデータ ソース テーブルを作成し、データを追加します。次に、Mysql からエクスポートされたデータを受け取るためのターゲット テーブルを MatrixOne に作成します。

Mysql でテスト データベースを作成し、このデータベースの下に person テーブルを作成します。デモンストレーションのために、insert メソッドを使用して 3 つのデータを追加します。

同様に、MatrixOne で motest ライブラリを作成し、その配下に Mysql に相当する person テーブルを作成しますが、データ型を統一しないと問題が発生しますので注意してください。

次に、Flink プロジェクトをローカルに作成する必要があります。まず、Maven プロジェクトを作成し、使用する必要がある関連依存関係を構成する必要があります。このプロジェクトも事前に作成しました。

まず pom ファイルを見てください。ここで使用されている Flink バージョンは 1.17.0 で、JDK バージョンは 1.8 であることに注意してください。flink-connector-jdbc と mysql-connector-java も導入する必要があります。Mysql ドライバーバージョンと Mysql バージョンを導入する必要があります。互換性があります。

また、データベース内の対応するデータをマップするエンティティ クラス Person を作成する必要もあります。

前の作業の準備ができたら、Flink メイン プログラムを作成できます。

Mysql2Mo というクラスを作成し、main 関数に Flink プログラムを記述します。

要約すると、Flink プログラムを作成するにはいくつかの手順が必要です。

  1. 実行環境を取得します。
  2. 並列度を設定します。ここでは、実行に 1 つのスレッドを使用することを示すために 1 を設定します。
  3. 次に、クエリフィールドのタイプとフィールド名を設定します。
  4. Add Sourceはデータソースで、ここで設定するのはMysqlの接続情報で、クエリに設定したSQLを通じてデータを見つけることができます。
  5. データ ソースを取得した後、Flink プログラムを通じて ETL を実行できます。取得した結果を Person オブジェクトにカプセル化する簡単な例を次に示します。
  6. データが最終的に書き込まれるアドレスであるシンク (ここでは MatrixOne) を構成し、関連するパラメーターを構成します。
  7. Flink プログラムを実行します。

実行が成功したら、MatrixOne に移動し、以前に Mysql に追加されたデータがインポートされたことを確認します。

 

#2 カフカ

次に、Kafka をデータ ソースとして使用し、Kafka から MatrixOne にデータを同期します。

Kafka をローカルにインストールしました。使用されている Kafka バージョンは 3.0.0 です。

以前に MatrixOne で作成した person テーブルを引き続き使用しますが、効果をより明確に確認するために、最初に truncate コマンドを使用して以前のテスト データをクリーンアップします。

次に、Kafka コマンド ライン スクリプトを使用してトピックを作成します。テーマ名はマトリックスワンです。

次に、Flink プログラムを作成する必要がありますが、主な手順は前と同じです。

ここでは主に、最も重要なソースとシンクに注目します。

ここでは、コンシューマ グループや消費戦略などの Kafka 接続情報を使用してソースが構成され、文字列を Person オブジェクトに変換するようにカスタマイズされたシリアライザーが構成されます。

取得したソースデータを印刷することができます。

ここでSinkはJDBCコネクタを利用してMatrixOneの接続情報を設定します。

次にプロジェクトを開始します。Flink プログラムはここでブロックされ、Kafka にデータが生成されるのを待ちます。

コマンド ライン ツールを使用して Kafka プロデューサーをシミュレートし、3 つのデータを Kafka に書き込みます。

次に、MatrixOne がこれら 3 つのデータも同期することを確認します。

ストリーム処理に適した Flink エンジンをデモした後、バッチ処理エンジン Spark がどのように MatrixOne と統合され、Spark を通じて Mysql データを MatrixOne に書き込むかをデモしましょう。

ここで使用される MatrixOne のバージョンはバージョン 1.0.0 RC2 です。これは、mo_ctl ツールを通じて構築されたスタンドアロン バージョンです。

まず Mysql をデータ ソースとして使用し、Flink JDBC を通じて Mysql のデータを MatrixOne にインポートします。ここで使用している Mysql のバージョンは 8.0.32 であることがわかります。

次に、Mysql でデータ ソース テーブルを作成し、データを追加します。次に、Mysql からエクスポートされたデータを受け取るためのターゲット テーブルを MatrixOne に作成します。

Mysql でテスト データベースを作成し、このデータベースの下に person テーブルを作成します。デモンストレーションのために、insert メソッドを使用して 3 つのデータを追加します。

同様に、MatrixOne で motest ライブラリを作成し、その配下に Mysql に相当する person テーブルを作成しますが、データ型を統一しないと問題が発生しますので注意してください。

次に、Spark プロジェクトをローカルに作成する必要があります。まず、Maven プロジェクトを作成し、使用する必要がある関連依存関係を構成する必要があります。このプロジェクトも事前に作成しました。

まず、pom ファイルを見てください。ここで使用されている Spark のバージョンは 3.2.1 で、JDK のバージョンは 1.8 であることに注意してください。Mysql ドライバーのバージョンには互換性がある必要があることに特に注意してください。 Mysql。

また、データベース内の対応するデータをマップするエンティティ クラス Person を作成する必要もあります。

前の作業の準備ができたら、Spark メイン プログラムを作成できます。

Mysql2Mo というクラスを作成し、main 関数に Spark プログラムを記述します。

Spark プログラムを作成するために必要な手順の概要は次のとおりです。

  1. Session オブジェクトを取得し、Session を通じて Spark コンテキスト オブジェクトを取得します。
  2. ユーザー名、パスワード、ドライバー クラスなどの MySQL 接続情報を設定します。
  3. コンテキスト オブジェクトを使用して、データ読み取り用の Mysql 接続 URL を構成します。
  4. 4. 読み取り結果を DataSet オブジェクトにカプセル化します。
  5. ETL は DataSet Stream メソッドを通じて実行され、ID が 2 より大きいデータはフィルターで除外されます。
  6. MatrixOne 接続情報を構成し、ターゲット データベースにデータを書き込みます。

実行が成功したら、MatrixOne に移動し、以前に Mysql に追加されたデータがインポートされたことを確認します。


#3 スプリングブート

最後の部分では、SpringBoot プロジェクトを使用して、MatrixOne をビジネス データベースとして使用し、CRUD 機能を実行します。

まず、MatrixOne でユーザー テーブルを作成し、新しいデータを追加します。

次に、Springboot と Mybatis-plus プロジェクトをローカルでビルドします。

ここでは、Maven を通じて使用される jar パッケージを構成する必要があります。

次に、Springboot 設定ファイルでデータソースを設定します。ここでの設定は Mysql の設定と一致します。

次に、マッパーをコンパイルし、Myabtis-plus ルート インターフェイス BaseMapper を継承します。これにより、自分で作成しなくても、組み込みの基本的な追加、削除、変更、およびクエリ関数を使用できるようになります。

ここではサービス層を記述せず、便宜上、コントローラー層で直接マッパーを呼び出しました。

最後に、ユーザー リスト インターフェイスのクエリ、ユーザー インターフェイスの追加、ユーザー インターフェイスの変更、およびユーザー インターフェイスの削除という 4 つの外部インターフェイスを提供するコントローラー層を作成します。

次に、プロジェクトを開始し、HTTP テスト ツールを介してプロジェクトに直接アクセスします。

これで共有は終了です。ご視聴いただきありがとうございました。

 

質疑応答

プロジェクト シナリオのインポートとエクスポートの実践に関する関連知識の学習にご参加いただきありがとうございます。Q&A セッションに移りましょう。

Q: mo-dump ツールを使用して、データではなくテーブル構造のみをエクスポートしたいのですが、どうすればエクスポートできますか?

A:エクスポート コマンドの後に -no-data パラメーターを指定すると、データをエクスポートしないように指定できます。

Q: ロード データを使用してインポートされた json オブジェクトから一部のフィールドが欠落しています。インポートではエラーが報告されますか?

A:インポートではエラーが報告されます。インポートされた JSON のフィールドがテーブルのフィールドを超えています。正常にインポートできますが、余分なフィールドは無視されます。フィールドの数が少ない場合、インポートは実行できません。

Q: ソースインポートを実行する際、インポートしたファイルへの相対パスを記述できますか?

A: mysql クライアントを使用している現在のパスを基準とした相対パスを記述することができますが、エラーを防止し、ファイルのアクセス許可の問題に注意するために、ここに完全なパスを記述することをお勧めします。

Q: 大きなファイルをインポートするときにデータ読み込みコマンドを使用すると時間がかかり、中断されて最初からやり直さなければならない場合がありますが、最適化することはできますか?

A:インポート時に PARALLEL を true に指定すると、並列インポートを有効にできます。たとえば、2G の大きなファイルの場合、2 つのスレッドを使用してロードします。2 番目のスレッドは、最初に分割して 1G の位置を特定し、その後、戻り続けます。負荷。このようにして、2 つのスレッドが同時に大きなファイルを読み取ることができ、各スレッドは 1G のデータを読み取ることができます。データ ファイルを自分で分割することもできます。

Q: ロード データをインポートするときにトランザクションはありますか?

A:すべてのロード ステートメントはトランザクションです。

Q: ソースインポート SQL に含まれるトリガーとストアドプロシージャは実行され、有効になりますか?

A:現在、SQL に互換性のないデータ型、トリガー、関数、またはストアド プロシージャがある場合は、手動で変更する必要があります。そうしないと、実行中にエラーが報告されます。

Q: mo-dump は複数のデータベースのバッチ エクスポートをサポートしていますか?

A:単一データベースのバックアップのエクスポートのみがサポートされています。バックアップするデータベースが複数ある場合は、手動で mo-dump を複数回実行する必要があります。

Q: MatrixOne は Minio からのデータのインポートをサポートしていますか?

A:はい、load data コマンドは、ローカル ファイル、S3 オブジェクト ストレージ サービス、および S3 互換オブジェクト ストレージ サービスからの Matrixone へのデータのインポートをサポートしています。

Minio も S3 プロトコルに基づいているため、サポートされています。特定の参考ドキュメントについては: https://docs.matrixorigin.cn/1 . 0.0/MatrixOne/Deploy/import-data-from-minio-to-mo/

Q: MatrixOne がデータをインポートおよびエクスポートするときに、エンコードの問題が発生してデータが文字化けした場合、通常はどのように解決すればよいですか?

A: Matrixone はデフォルトで UTF8 エンコーディングのみをサポートしており、変更することはできないため、データのインポート時に文字化けが発生する場合は、データベースとテーブルの文字セットを変更することによって解決することはできませんが、データ エンコーディングを UTF8 に変換することを試みることができます。一般的な変換ツールには、iconv および recode が含まれます。たとえば、GBK エンコードされたデータを UTF-8 エンコードに変換します: iconv -f GBK -t UTF8 t1.sql > t1_utf8.sql。

Q: MatrixOne をインポートおよびエクスポートするときに必要な権限は何ですか?

A:テナント管理者は、デフォルトのロールを通じてインポートおよびエクスポート操作を直接実行できます。一般ユーザーの場合、インポートする場合は、インポートされたテーブルの「挿入」権限が必要です。select...outfile モードでエクスポートする場合は、エクスポート テーブルの「select」権限が必要です。mo-dump でエクスポートする場合は、すべてのテーブル (テーブル *.*) が必要です。すべてのライブラリ (データベース *.*) に対する「選択」権限と「テーブルの表示」権限が必要です。


MatrixOne について
MatrixOne は、パブリック クラウドとプライベート クラウドの両方に展開できるクラウド ネイティブ テクノロジーに基づくマルチモード データベースです。本製品は、ストレージとコンピューティングの分離、読み出しと書き込みの分離、ホットとコールドの分離といった独自の技術アーキテクチャを採用しており、ストレージとストレージのセットでトランザクション、分析、フロー、タイミング、ベクトルなどの複数の負荷を同時にサポートすることができます。コンピューティング システムを統合し、分離または共有のストレージおよびコンピューティング リソースをリアルタイムおよびオンデマンドで実行できます。クラウド ネイティブ データベース MatrixOne は、ユーザーがますます複雑化する IT アーキテクチャを大幅に簡素化し、最小限で非常に柔軟で費用対効果の高い高性能のデータ サービスを提供するのに役立ちます。

MatrixOne Enterprise Edition と MatrixOne Cloud Services は、リリース以来、インターネット、金融、エネルギー、製造、教育、医療などの多くの業界で適用されています。独自のアーキテクチャ設計により、ユーザーはハードウェアと運用および保守のコストを最大 70% 削減し、開発効率を 3 ~ 5 倍向上させることができ、同時に市場の需要の変化により柔軟に対応し、イノベーションの機会をより効率的に掴むことができます。 。同じハードウェアに投資する場合、MatrixOne は数倍のパフォーマンス向上を達成できます。
MatrixOne は、オープン ソースとエコロジカルな共同構築の概念を遵守しています。すべてのコア コードはオープン ソースであり、MySQL プロトコルと完全に互換性があります。MatrixOne はパートナーと複数のエンドツーエンド ソリューションを作成し、ユーザーの移行と使用コストを大幅に削減しました。ベンダーロックインのリスク。

MatrixOrigin 公式ウェブサイト:新世代のハイパーコンバージド ヘテロジニアス オープン ソース データベース - Matrix Origin (Shenzhen) Information Technology Co., Ltd. MatrixOne
Github ウェアハウス: GitHub - matrixorigin/matrixone: ハイパーコンバージド クラウドエッジ ネイティブ データベース
キーワード:ハイパーコンバージド データベース、マルチモードデータベース、クラウドネイティブデータベース、国内データベース

Bilibiliは2度クラッシュ、テンセントの「3.29」第1レベル事故…2023年のダウンタイム事故トップ10を振り返る Vue 3.4「スラムダンク」リリース MySQL 5.7、莫曲、李条条…2023年の「停止」を振り返る 続き” (オープンソース) プロジェクトと Web サイトが 30 年前の IDE を振り返る: TUI のみ、明るい背景色... Vim 9.1 がリリース、 Redis の父 Bram Moolenaar に捧げ、「ラピッド レビュー」LLM プログラミング: Omniscient 全能&&愚かな 「ポスト・オープンソースの時代が来た。ライセンスの有効期限が切れ、一般ユーザーにサービスを提供できなくなった。チャイナ ユニコムブロードバンドが突然アップロード速度を制限し、多くのユーザーが苦情を申し立てた。Windows 幹部は改善を約束した: Make the Start」メニューもまた素晴らしいです。 パスカルの父、ニクラス・ヴィルトが亡くなりました。
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/5472636/blog/10149502