Elixirは、高度に分布した誤りのアプリケーションを構築するために使用される、近代的で動的な機能的なプログラミング言語です。 Ectoは、データベースを操作するためのメインライブラリであり、一般的なAPIでデータベースと対話するためのツールを提供し、アプリケーションと並んでデータベースをバージョン、アプリケーション内のデータ処理を処理します。
この記事では、ECTOライブラリの主要な側面を簡単に見ていきます。 ECTO 1.xのために書かれていますが、この記事の例はECTO 2と互換性のある転送であり、矛盾がある場合、それらが言及されています。 ElixirとMixの基本的な知識が想定されていますキーテイクアウト
セットアッププロセスには、新しいミックスアプリケーションの作成、依存関係の構成、および効果的なデータベース管理のためにアプリケーションの監督ツリーにECTOリポジトリモジュールを統合することが含まれます。
この記事では、ECTOを使用してシンプルなCRUDアプリケーションの構築を示しています。レコードの作成、読み取り、更新、削除などのデータベース操作の実行方法を示しています。
アプリケーション
ゼロから非常にシンプルなアプリケーションを構築し、メモを保存および取得します。これを行うことで、ectoの4つの主要なコンポーネントのそれぞれを調べます:レポ、スキーマ、チェンジセット、クエリ。
新しいアプリケーションの作成
新しいMIXアプリケーションを生成することから始めましょう:
- supフラグは、OTPアプリケーションに必要な追加のボイラープレートコードを生成します。このアプリケーションには、Ectoがそれを必要とするので、監督のツリーが必要です(これについては1分で)。
依存関係のセットアップ
次に、いくつかのアプリケーション依存関係を備えたMix.Exsファイルを更新しましょう。このために、Ectoとそのアダプターの1つを指定したいと思います。これにMySQLを使用することを選択したので、Mariaexライブラリを指定する必要があります(ECTOは多くのデータベースをサポートしています)。
mix.exsファイルでアプリケーション/0関数を更新します。
および次のようにDEPS/0を更新してください:
Mix Deps.getを使用して依存関係を取得します。mix new notex <span>--sup
</span>
次に、これらの依存関係をアプリケーションに統合する必要があります。これには、ECTOリポジトリ用の新しいラッパーモジュールを作成し、アプリケーションの監督ツリーを更新してその新しいモジュールを開始および監督し、アダプターの接続情報の構成を含みます。
まず、lib/notex/repo.exでnotex.repoモジュールを次のコードで定義することから始めましょう。
このモジュールの場所(lib/app_name/repo.ex)は従来のものです。 Mix Ectoコマンドを使用すると、Appname.repoで定義されたリポジトリを探すことがデフォルトです。他の場所に配置できますが、-r(repo)フラグを使用してその場所を指定する必要があることはご不便です。
mix new notex <span>--sup
</span>
上記のnotex.Repoモジュールを使用すると、ECTOを使用してデータベースを操作できます。これは、最初にECTOのレポジットモジュールから関数を挿入し(データベースを提供するAPIをクエリする)、次のOTPアプリケーションを次のように指定することで行います。
ectoリポジトリは、基礎となる
データベース(使用されているアダプターによって決定される)と対話するための一般的なインターフェイスを提供します。そのため、Ectoは用語リポジトリを使用していますが、テーブルではなくデータベースの周りのラッパーであるため、リポジトリ設計パターンには従いません。
notex.repoモジュールを子監督者として追加しました(それ自体が監督OTPアプリであるため)。これは、OTPアプリケーションによって監督されることを意味し、アプリケーションがアプリケーションの起動時に開始する責任があります。
mix new notex <span>--sup
</span>
ここでは、データベースとの通信を有効にするために、OTPアプリケーションの名前(:notex)と新たに定義されたモジュール(notex.repo)の名前を指定します。他の構成オプションは、かなり自明である必要があります。 ECTO 2では、アプリケーションで使用しているECTOリポジトリのリストをさらに指定する必要があります。
ectoは、実際に上記のレポモジュールをミックスタスクとしてセットアップするためのショートカットを提供します:mixecto.gen.repo。これにより、当社用のリポジトリモジュールが生成され、基本的な構成を使用してconfig.exsファイルを更新します(ただし、監督ツリーに手動で追加する必要があります)。ここでは、ectoを手動でセットアップする方法を示す教訓的な理由で、ここでそれを使用することを避けました(それは、リポジトリジェネレーターがPostgresを使用していると想定しているという事実なので、とにかく構成のアダプターを更新する必要がありました)。 🎜>
先に進む前に、プロセスの階層を非常に簡単に見てみましょう。 (ECTO 2を実行している場合は、プロジェクトをコンパイルしようとする前にMix Ecto.createでデータベースを作成する必要があることに注意してください。)Elixirのインタラクティブシェルでアプリケーションを起動してから、オブザーバーを起動することに注意してください。
[アプリケーション]タブに移動すると、監督者であるものを含むアプリケーションのプロセスを確認できます。
<span>def <span>application</span> do
</span> <span>[applications: [:logger, :ecto, :mariaex],
</span> <span>mod: {Notex, []}]
</span><span>end
</span>
そのため、このアプリケーションはOTPアプリである必要があります。しかし、それはこの記事ではプロセスとOTPに関して、ウサギの穴をはるかに下回っています。後の記事で詳細に説明されます。
データベースとテーブルの作成
そのセットアップを使用すると、データベースとテーブルを作成できます。データベースを作成するには、次のコマンドを実行します
テーブルを作成するには、ECTOの移行機能を使用します。移行により、ソースコードと一緒にデータベースにバージョンをバージョンすることができ、変更を追跡し、異なる状態を適用できるようにします。したがって、データベースの構造を変更したい場合はいつでも、新しい移行を作成します。
次のように、Mix Ecto.gen.migrationコマンドを使用して新しい移行を作成できます。
上記は、Priv/Repo/Migrationsで新しい移行フォルダーと新しい移行ファイルを作成する必要があります。このファイルには、移行名とともに作成された日付と時刻が作成されています(簡単なディレクトリの注文用)。そのファイルを開き、次のように変更します。
mix new notex <span>--sup
</span>
物事をシンプルに保つと、Create Macroを使用して、2つのフィールドを持つ新しいテーブル(Notes)を定義しました:Note_NameとNote_Content。主キーは、私たちのために自動的に作成されます(IDという名前)。両方のフィールドは単純な文字列として定義されていましたが、Ectoは多くのタイプをサポートしています。
移行が完了すると、次のコマンドで移行を実行できます。
これにより、3つのフィールド(3番目のフィールドがID、プライマリキー)を持つノートテーブルが作成されます。
<span>def <span>application</span> do
</span> <span>[applications: [:logger, :ecto, :mariaex],
</span> <span>mod: {Notex, []}]
</span><span>end
</span>
テーブルが作成された状態で、テーブルのモデルを作成する時が来ました。このモデルは、テーブルのフィールドとそれぞれのタイプを定義するために使用されます。これらは、データをキャストおよび検証するときにアプリケーションとECTOのDSLのクエリによって使用されます。モデルの定義には、仮想フィールド(移行定義とは異なり)が含まれている場合があります。これらは、通常は、パスワードのないパスワードなど)を保持するために通常は一時的なデータを保持するために使用されます。
その最も基本的な形式では、notex.noteモデル(lib/notex/note.exにあります)は次のようになります。
ecto.schemaモジュールを注入して、スキーママクロを使用してフィールドとそのタイプを定義できるようにします。これらの定義は、ECTOの変更セットを使用すると、後で重要になります。スキーママクロが行う他のことは、タイプの構造体を現在のモジュールとして定義することです(この場合、それは%notex.note {}です)。この構造により、新しい変更セットを作成し(これについては詳細)、テーブルにデータを挿入できます。
上記のみを使用して、IEXを起動してデータベースの照会を開始できます。
(編集情報のデバッグのデバッグをコンソールdefp deps <span>do
</span> <span>[{:ecto, <span>"~> 1.1.5"</span>}, # or "~> 2.0" for Ecto 2
</span> <span>{:mariaex, <span>"~> 0.6.0"</span>}] # or "~> 0.7.0" for Ecto 2
</span><span>end
</span>
(編集情報のデバッグのデバッグをコンソール
defmodule Notex.Repo do
use Ecto.Repo, otp_app: :notex
end
変更セットは、レコードを操作するときに使用するものです。これらにより、挿入前にデータの変更を追跡し、それらの変更を検証し、その値を正しいデータ型にキャストすることができます(スキーマ定義に従って)。上記からわかるように、�to.changeset{} structには、変更が有効であるかどうかを確認するのに役立つ多数のメンバーが含まれています(Changeset.Valid?) .Errors)、など
notex.noteモデルを更新して、いくつかの変更セットとクエリ操作を実証しましょう。これらの実行は少し乱雑になっているためです。
mix new notex <span>--sup
</span>
5つの新しい機能のそれぞれを確認しましょう。 insert_note/1関数は、私たちのために新しいメモを作成します。 CAST/4関数は、入力フィールドからそれぞれのフィールドタイプへのデータのキャストを(スキーマ定義に従って)処理し、必要なすべてのフィールドに値があることを確認します。 CAST/4から返されるChangesetがデータベースに挿入されます。 ECTO 2では、cast/3およびvalidate_required/3関数をcast/4の代わりに使用する必要があることに注意してください。
get_notes/0関数は、テーブル内のすべてのメモのタプルのリストを返します。これは、Selectステートメントのパターンマッチングによって行われます。 (代わりにSelect:%{id:n.id、note_name:n.note_name}を使用して、代わりにマップのリストを非常に簡単に返すことができました。)
get_note/1関数は、メモIDに従ってテーブルから単一のメモを取得します。これはgetによって行われます!成功したときにメモを返すか、失敗したときにスローする関数。
update_note/1関数は、付属のメモIDに従ってノートを更新します。関数署名(IDキー)のマップの文字列キーに注意してください。これは、私がフェニックスフレームワークから取った慣習であり、非サンタイズされたデータ(通常はユーザーサプライ)が文字列キーを備えたマップで表され、サニタイズされたデータはAtomキーを含むマップで表されます。更新を実行するには、最初にデータベースからそのIDに従ってメモを取得し、次にキャスト/4関数を使用してレコードに変更を適用してから、最終的に更新された変更セットをデータベースに戻します。
delete_note/1関数は、データベースからメモを削除します。まず、そのIDを介してデータベースからメモを取得し(update_note/1関数と同様)、返されたメモ構造を使用して削除します。
上記のCRUD操作を整備していると、IEXに戻って試してみましょう:
(編集情報のデバッグのデバッグをコンソール
そして、ectoを使用した基本的なCRUDアプリケーションがあります!出力をレンダリングしてAPIをより良くすることができますが、私たちがカバーしているものに接するものであるため、拡張機能としてそれを残します(そして、この記事は十分に長いです、
<span>def <span>application</span> do
</span> <span>[applications: [:logger, :ecto, :mariaex],
</span> <span>mod: {Notex, []}]
</span><span>end
</span>
結論
この記事は、簡単なCRUDアプリケーションをゼロから作成することにより、ECTOの基礎を検討しました。 OTPなどの接線上のトピックに触れるとともに、移行、スキーマ、およびそのクエリDSLなどのレコードやデータベースの変更を管理するための多くの能力ECTOパックが見られました。これがElixirのデータベースを操作する際にスピードを上げたいと考えている人のための優れた入門書として役立ったことを願っています!私の次の記事では、ElixirのECTOがDSLを照会する基本を見ていきます。
ElixirのEcto Library に関するよくある質問(FAQ)
ElixirのECTOライブラリの目的は何ですか?
ElixirのECTOライブラリは、Elixirのデータベースラッパーおよび言語統合クエリです。アプリケーション内のすべてのデータ操作タスクを処理するように設計されており、データベースと対話するための統一されたAPIを提供します。 ECTOを使用すると、レコードを作成、読み取り、更新、削除したり、複雑なクエリ、トランザクション、および移行を実行したりできます。 PostgreSQLやMySQLを含むさまざまなデータベースをサポートしているため、Elixir開発者にとって汎用性の高いツールになっています。 。 Changesetは、エラー、検証、および型キャスト情報とともに、データベースに変更される変更を保持するデータ構造です。変更セットは、データベースに有効なデータのみが保存され、データ検証とエラー処理のための堅牢なメカニズムを提供することを保証します。これにより、読みやすく効率的な方法で複雑なクエリを書くことができます。 Fromキーワードを使用してクエリを開始し、Select、Where、Order_byなどのその他の関数をチェーンし、クエリを作成するために参加できます。 Ectoは、サブクエリ、集約、およびその他の高度なSQL機能もサポートしています。データ。 Elixirアプリケーションからデータをデータベーステーブルにマッピングし、その逆も同様です。 ecto.schemaを使用すると、データのフィールド、その種類、および異なるスキーマ間の関連性を定義できます。データベースの移行を処理するため。移行は、データベースの構造を時間の経過とともに変更するスクリプトです。テーブルを作成またはドロップしたり、列を追加または削除したり、インデックスを作成したりできます。 Ectoの移行機能により、これらの変更が制御され、可逆的な方法で実行されることが保証されます。アダプターの使用によるデータベース。ただし、移行や複雑なクエリなどの一部の機能は完全にサポートされていないか、使用されている特定のNOSQLデータベースとアダプターに応じて異なって機能する場合があります。ECTOはトランザクションをどのように処理しますか?トランザクションを処理するための強力なAPI。 ecto.repo.transaction関数を使用してトランザクションを開始できます。トランザクション内で行われた変更は、関数が返される場合はデータベースにコミットされます。 ecto.multiとは?
ecto.multiは、複数の操作をグループ化できるECTOの特徴です。単一のトランザクションで複数の操作を実行する必要がある場合に便利であり、それらのすべてが成功または全体として失敗することを望みます。 Ecto.Multiはデータの一貫性を保証し、エラー処理を容易にします。 Phoenixは、すべてのデータ操作ニーズにECTOを使用し、ECTOスキーマ、変更セット、および移行を簡単に作成できる発電機を提供します。また、PhoenixコントローラーとビューでEctoのクエリAPIを直接使用することもできます。
ectoについて詳しく知るにはどうすればよいですか?公式のEctoドキュメントは、ECTOの詳細を学ぶための優れたリソースです。 Ectoのすべての機能に関する包括的なガイドと、例とベストプラクティスを提供します。また、ECTOのさまざまな側面をより詳細にカバーする多くのチュートリアルやブログ投稿をオンラインで見つけることもできます。
次に、いくつかのアプリケーション依存関係を備えたMix.Exsファイルを更新しましょう。このために、Ectoとそのアダプターの1つを指定したいと思います。これにMySQLを使用することを選択したので、Mariaexライブラリを指定する必要があります(ECTOは多くのデータベースをサポートしています)。
mix.exsファイルでアプリケーション/0関数を更新します。
および次のようにDEPS/0を更新してください:
Mix Deps.getを使用して依存関係を取得します。
mix new notex <span>--sup </span>
次に、これらの依存関係をアプリケーションに統合する必要があります。これには、ECTOリポジトリ用の新しいラッパーモジュールを作成し、アプリケーションの監督ツリーを更新してその新しいモジュールを開始および監督し、アダプターの接続情報の構成を含みます。
まず、lib/notex/repo.exでnotex.repoモジュールを次のコードで定義することから始めましょう。
このモジュールの場所(lib/app_name/repo.ex)は従来のものです。 Mix Ectoコマンドを使用すると、Appname.repoで定義されたリポジトリを探すことがデフォルトです。他の場所に配置できますが、-r(repo)フラグを使用してその場所を指定する必要があることはご不便です。mix new notex <span>--sup </span>上記のnotex.Repoモジュールを使用すると、ECTOを使用してデータベースを操作できます。これは、最初にECTOのレポジットモジュールから関数を挿入し(データベースを提供するAPIをクエリする)、次のOTPアプリケーションを次のように指定することで行います。
ectoリポジトリは、基礎となる
データベース(使用されているアダプターによって決定される)と対話するための一般的なインターフェイスを提供します。そのため、Ectoは用語リポジトリを使用していますが、テーブルではなくデータベースの周りのラッパーであるため、リポジトリ設計パターンには従いません。
notex.repoモジュールを子監督者として追加しました(それ自体が監督OTPアプリであるため)。これは、OTPアプリケーションによって監督されることを意味し、アプリケーションがアプリケーションの起動時に開始する責任があります。
ectoは、実際に上記のレポモジュールをミックスタスクとしてセットアップするためのショートカットを提供します:mixecto.gen.repo。これにより、当社用のリポジトリモジュールが生成され、基本的な構成を使用してconfig.exsファイルを更新します(ただし、監督ツリーに手動で追加する必要があります)。ここでは、ectoを手動でセットアップする方法を示す教訓的な理由で、ここでそれを使用することを避けました(それは、リポジトリジェネレーターがPostgresを使用していると想定しているという事実なので、とにかく構成のアダプターを更新する必要がありました)。 🎜>
データベースとテーブルの作成
上記は、Priv/Repo/Migrationsで新しい移行フォルダーと新しい移行ファイルを作成する必要があります。このファイルには、移行名とともに作成された日付と時刻が作成されています(簡単なディレクトリの注文用)。そのファイルを開き、次のように変更します。 物事をシンプルに保つと、Create Macroを使用して、2つのフィールドを持つ新しいテーブル(Notes)を定義しました:Note_NameとNote_Content。主キーは、私たちのために自動的に作成されます(IDという名前)。両方のフィールドは単純な文字列として定義されていましたが、Ectoは多くのタイプをサポートしています。
その最も基本的な形式では、notex.noteモデル(lib/notex/note.exにあります)は次のようになります。
ecto.schemaモジュールを注入して、スキーママクロを使用してフィールドとそのタイプを定義できるようにします。これらの定義は、ECTOの変更セットを使用すると、後で重要になります。スキーママクロが行う他のことは、タイプの構造体を現在のモジュールとして定義することです(この場合、それは%notex.note {}です)。この構造により、新しい変更セットを作成し(これについては詳細)、テーブルにデータを挿入できます。
(編集情報のデバッグのデバッグをコンソール 変更セットは、レコードを操作するときに使用するものです。これらにより、挿入前にデータの変更を追跡し、それらの変更を検証し、その値を正しいデータ型にキャストすることができます(スキーマ定義に従って)。上記からわかるように、�to.changeset{} structには、変更が有効であるかどうかを確認するのに役立つ多数のメンバーが含まれています(Changeset.Valid?) .Errors)、など notex.noteモデルを更新して、いくつかの変更セットとクエリ操作を実証しましょう。これらの実行は少し乱雑になっているためです。
get_notes/0関数は、テーブル内のすべてのメモのタプルのリストを返します。これは、Selectステートメントのパターンマッチングによって行われます。 (代わりにSelect:%{id:n.id、note_name:n.note_name}を使用して、代わりにマップのリストを非常に簡単に返すことができました。) get_note/1関数は、メモIDに従ってテーブルから単一のメモを取得します。これはgetによって行われます!成功したときにメモを返すか、失敗したときにスローする関数。 update_note/1関数は、付属のメモIDに従ってノートを更新します。関数署名(IDキー)のマップの文字列キーに注意してください。これは、私がフェニックスフレームワークから取った慣習であり、非サンタイズされたデータ(通常はユーザーサプライ)が文字列キーを備えたマップで表され、サニタイズされたデータはAtomキーを含むマップで表されます。更新を実行するには、最初にデータベースからそのIDに従ってメモを取得し、次にキャスト/4関数を使用してレコードに変更を適用してから、最終的に更新された変更セットをデータベースに戻します。
(編集情報のデバッグのデバッグをコンソール そして、ectoを使用した基本的なCRUDアプリケーションがあります!出力をレンダリングしてAPIをより良くすることができますが、私たちがカバーしているものに接するものであるため、拡張機能としてそれを残します(そして、この記事は十分に長いです、
ecto.multiは、複数の操作をグループ化できるECTOの特徴です。単一のトランザクションで複数の操作を実行する必要がある場合に便利であり、それらのすべてが成功または全体として失敗することを望みます。 Ecto.Multiはデータの一貫性を保証し、エラー処理を容易にします。 Phoenixは、すべてのデータ操作ニーズにECTOを使用し、ECTOスキーマ、変更セット、および移行を簡単に作成できる発電機を提供します。また、PhoenixコントローラーとビューでEctoのクエリAPIを直接使用することもできます。<span>def <span>application</span> do
</span> <span>[applications: [:logger, :ecto, :mariaex],
</span> <span>mod: {Notex, []}]
</span><span>end
</span>
そのため、このアプリケーションはOTPアプリである必要があります。しかし、それはこの記事ではプロセスとOTPに関して、ウサギの穴をはるかに下回っています。後の記事で詳細に説明されます。
次のように、Mix Ecto.gen.migrationコマンドを使用して新しい移行を作成できます。
mix new notex <span>--sup
</span>
<span>def <span>application</span> do
</span> <span>[applications: [:logger, :ecto, :mariaex],
</span> <span>mod: {Notex, []}]
</span><span>end
</span>
テーブルが作成された状態で、テーブルのモデルを作成する時が来ました。このモデルは、テーブルのフィールドとそれぞれのタイプを定義するために使用されます。これらは、データをキャストおよび検証するときにアプリケーションとECTOのDSLのクエリによって使用されます。モデルの定義には、仮想フィールド(移行定義とは異なり)が含まれている場合があります。これらは、通常は、パスワードのないパスワードなど)を保持するために通常は一時的なデータを保持するために使用されます。
defp deps <span>do
</span> <span>[{:ecto, <span>"~> 1.1.5"</span>}, # or "~> 2.0" for Ecto 2
</span> <span>{:mariaex, <span>"~> 0.6.0"</span>}] # or "~> 0.7.0" for Ecto 2
</span><span>end
</span>
mix new notex <span>--sup
</span>
5つの新しい機能のそれぞれを確認しましょう。 insert_note/1関数は、私たちのために新しいメモを作成します。 CAST/4関数は、入力フィールドからそれぞれのフィールドタイプへのデータのキャストを(スキーマ定義に従って)処理し、必要なすべてのフィールドに値があることを確認します。 CAST/4から返されるChangesetがデータベースに挿入されます。 ECTO 2では、cast/3およびvalidate_required/3関数をcast/4の代わりに使用する必要があることに注意してください。
<span>def <span>application</span> do
</span> <span>[applications: [:logger, :ecto, :mariaex],
</span> <span>mod: {Notex, []}]
</span><span>end
</span>
結論に関するよくある質問(FAQ)
ElixirのECTOライブラリの目的は何ですか?
ElixirのECTOライブラリは、Elixirのデータベースラッパーおよび言語統合クエリです。アプリケーション内のすべてのデータ操作タスクを処理するように設計されており、データベースと対話するための統一されたAPIを提供します。 ECTOを使用すると、レコードを作成、読み取り、更新、削除したり、複雑なクエリ、トランザクション、および移行を実行したりできます。 PostgreSQLやMySQLを含むさまざまなデータベースをサポートしているため、Elixir開発者にとって汎用性の高いツールになっています。 。 Changesetは、エラー、検証、および型キャスト情報とともに、データベースに変更される変更を保持するデータ構造です。変更セットは、データベースに有効なデータのみが保存され、データ検証とエラー処理のための堅牢なメカニズムを提供することを保証します。これにより、読みやすく効率的な方法で複雑なクエリを書くことができます。 Fromキーワードを使用してクエリを開始し、Select、Where、Order_byなどのその他の関数をチェーンし、クエリを作成するために参加できます。 Ectoは、サブクエリ、集約、およびその他の高度なSQL機能もサポートしています。データ。 Elixirアプリケーションからデータをデータベーステーブルにマッピングし、その逆も同様です。 ecto.schemaを使用すると、データのフィールド、その種類、および異なるスキーマ間の関連性を定義できます。データベースの移行を処理するため。移行は、データベースの構造を時間の経過とともに変更するスクリプトです。テーブルを作成またはドロップしたり、列を追加または削除したり、インデックスを作成したりできます。 Ectoの移行機能により、これらの変更が制御され、可逆的な方法で実行されることが保証されます。アダプターの使用によるデータベース。ただし、移行や複雑なクエリなどの一部の機能は完全にサポートされていないか、使用されている特定のNOSQLデータベースとアダプターに応じて異なって機能する場合があります。ECTOはトランザクションをどのように処理しますか?トランザクションを処理するための強力なAPI。 ecto.repo.transaction関数を使用してトランザクションを開始できます。トランザクション内で行われた変更は、関数が返される場合はデータベースにコミットされます。 ecto.multiとは?
以上がECTOライブラリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

AIの分野での中国の女性の技術力の台頭:Deepseekの女性の技術分野への貢献とのコラボレーションの背後にある物語は、ますます重要になっています。中国の科学技術省からのデータは、女性科学技術労働者の数が巨大であり、AIアルゴリズムの開発においてユニークな社会的価値感度を示していることを示しています。この記事では、携帯電話の名誉に焦点を当て、その背後にある女性チームの強さを探り、Deepseek Bigモデルに最初に接続し、技術の進歩を促進し、技術開発の価値座標系を再構築する方法を示します。 2024年2月8日、Honorは、Deepseek-R1 FullbloodバージョンのBig Modelを正式に立ち上げ、Android Campで最初のメーカーになり、Deepseekに接続し、ユーザーから熱狂的な反応を喚起しました。この成功の背後にある女性チームメンバーは、製品の決定、技術的なブレークスルー、ユーザーを行っています

DeepseekはZhihuに関する技術記事をリリースし、Deepseek-V3/R1推論システムを詳細に導入し、初めて主要な財務データを開示し、業界の注目を集めました。この記事は、システムの毎日のコストの利益率が545%に高いことを示しており、グローバルなAIビッグモデルの利益の新たな高値を設定しています。 Deepseekの低コスト戦略は、市場競争において有利になります。モデルトレーニングのコストは同様の製品の1%から5%であり、V3モデルトレーニングのコストはわずか5576百万米ドルであり、競合他社のコストよりもはるかに低くなっています。一方、R1のAPI価格設定は、Openaio3-Miniの1/7〜1/2です。これらのデータは、DeepSeekテクノロジールートの商業的実現可能性を証明し、AIモデルの効率的な収益性も確立します。

ウェブサイトの構築は最初のステップに過ぎません:SEOとバックリンクの重要性 ウェブサイトを構築することは、それを貴重なマーケティング資産に変換するための最初のステップにすぎません。検索エンジンでのWebサイトの可視性を向上させ、潜在的な顧客を引き付けるために、SEO最適化を行う必要があります。バックリンクは、ウェブサイトのランキングを改善するための鍵であり、Googleや他の検索エンジンにWebサイトの権限と信頼性を示しています。 すべてのバックリンクが有益であるわけではありません:有害なリンクを特定して回避する すべてのバックリンクが有益であるわけではありません。有害なリンクはあなたのランキングに害を及ぼす可能性があります。優れた無料のバックリンクチェックツールは、ウェブサイトへのリンクのソースを監視し、有害なリンクを思い出させます。さらに、競合他社のリンク戦略を分析し、それらから学ぶこともできます。 無料のバックリンクチェックツール:SEOインテリジェンスオフィサー

Mideaは、Deepseek Big Model -Midea Fresh and Clean Air Machine T6を装備した最初のエアコンをリリースします。このエアコンには、環境に応じて温度、湿度、風速などのパラメーターをインテリジェントに調整できる、高度な空気インテリジェントな駆動システムが装備されています。さらに重要なことは、DeepSeek Big Modelを統合し、400,000を超えるAI Voiceコマンドをサポートすることです。 Mideaの動きは、業界での激しい議論を引き起こし、特に白物と大規模なモデルを組み合わせることの重要性を懸念しています。従来のエアコンの単純な温度設定とは異なり、Midea Fresh and Clean Air Machine T6は、より複雑で曖昧な指示を理解し、家庭環境に従って湿度をインテリジェントに調整し、ユーザーエクスペリエンスを大幅に改善します。

DeepSeek-R1はBaidu LibraryとNetDiskを支援します。深い思考と行動の完璧な統合は、わずか1か月で多くのプラットフォームに迅速に統合されました。大胆な戦略的レイアウトにより、BaiduはDeepSeekをサードパーティモデルのパートナーとして統合し、それをそのエコシステムに統合します。これは、「ビッグモデル検索」の生態学的戦略の大きな進歩を示しています。 Baidu SearchとWenxin Intelligent Intelligent Platformは、DeepSeekおよびWenxin Bigモデルの深い検索関数に最初に接続し、ユーザーに無料のAI検索エクスペリエンスを提供します。同時に、「Baiduに行くときにあなたが知っている」という古典的なスローガンとBaiduアプリの新しいバージョンは、WenxinのBig ModelとDeepseekの機能も統合し、「AI検索」と「ワイドネットワーク情報の改良」を起動します。

このGOベースのネットワーク脆弱性スキャナーは、潜在的なセキュリティの弱点を効率的に識別します。 Goの同時機能機能を速度で活用し、サービスの検出と脆弱性のマッチングが含まれます。その能力と倫理を探りましょう

コード生成のAIプロンプトエンジニアリング:開発者ガイド コード開発の風景は、大きな変化を遂げています。 大規模な言語モデル(LLMS)と迅速なエンジニアリングのマスタリングは、今後数年間で開発者にとって非常に重要です。 th


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ホットトピック



