検索
ホームページバックエンド開発Python チュートリアルClassiSage: Terraform IaC 自動化された AWS SageMaker ベースの HDFS ログ分類モデル

クラシセージ

インフラストラクチャ設定の自動化に Terraform を使用して HDFS ログを分類するための AWS SageMaker とその Python SDK で作成された機械学習モデル。

リンク: GitHub
言語: HCL (terraform)、Python

コンテンツ

  • 概要: プロジェクトの概要
  • システムアーキテクチャ: システムアーキテクチャ図
  • ML モデル: モデルの概要
  • はじめに: プロジェクトの実行方法
  • コンソールの観察: プロジェクトの実行中に観察できるインスタンスとインフラストラクチャの変更。
  • 終了とクリーンアップ: 追加料金が発生しないようにします。
  • 自動作成オブジェクト: 実行プロセス中に作成されるファイルとフォルダー。

  • プロジェクトをより適切にセットアップするには、まずディレクトリ構造に従います。
  • 理解を深めるために、GitHub にアップロードされた ClassiSage のプロジェクト リポジトリから主要なリファレンスを取得してください。

概要

  • モデルは、データセット、ノートブック ファイル (SageMaker インスタンスのコードを含む) およびモデル出力を保存するための S3 とともに、HDFS ログの分類のために AWS SageMaker で作成されています。
  • インフラストラクチャのセットアップは、HashiCorp によって作成されたコードとしてのインフラストラクチャを提供するツール Terraform を使用して自動化されます。
  • 使用されるデータセットは HDFS_v1 です。
  • プロジェクトは、モデル XGBoost バージョン 1.2 を使用して SageMaker Python SDK を実装します。

システムアーキテクチャ

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

ML モデル

  • 画像URI
  # Looks for the XGBoost image URI and builds an XGBoost container. Specify the repo_version depending on preference.
  container = get_image_uri(boto3.Session().region_name,
                            'xgboost', 
                            repo_version='1.0-1')

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

  • コンテナに対するハイパーパラメータとエスティメーターの呼び出しを初期化しています
  hyperparameters = {
        "max_depth":"5",                ## Maximum depth of a tree. Higher means more complex models but risk of overfitting.
        "eta":"0.2",                    ## Learning rate. Lower values make the learning process slower but more precise.
        "gamma":"4",                    ## Minimum loss reduction required to make a further partition on a leaf node. Controls the model’s complexity.
        "min_child_weight":"6",         ## Minimum sum of instance weight (hessian) needed in a child. Higher values prevent overfitting.
        "subsample":"0.7",              ## Fraction of training data used. Reduces overfitting by sampling part of the data. 
        "objective":"binary:logistic",  ## Specifies the learning task and corresponding objective. binary:logistic is for binary classification.
        "num_round":50                  ## Number of boosting rounds, essentially how many times the model is trained.
        }
  # A SageMaker estimator that calls the xgboost-container
  estimator = sagemaker.estimator.Estimator(image_uri=container,                  # Points to the XGBoost container we previously set up. This tells SageMaker which algorithm container to use.
                                          hyperparameters=hyperparameters,      # Passes the defined hyperparameters to the estimator. These are the settings that guide the training process.
                                          role=sagemaker.get_execution_role(),  # Specifies the IAM role that SageMaker assumes during the training job. This role allows access to AWS resources like S3.
                                          train_instance_count=1,               # Sets the number of training instances. Here, it’s using a single instance.
                                          train_instance_type='ml.m5.large',    # Specifies the type of instance to use for training. ml.m5.2xlarge is a general-purpose instance with a balance of compute, memory, and network resources.
                                          train_volume_size=5, # 5GB            # Sets the size of the storage volume attached to the training instance, in GB. Here, it’s 5 GB.
                                          output_path=output_path,              # Defines where the model artifacts and output of the training job will be saved in S3.
                                          train_use_spot_instances=True,        # Utilizes spot instances for training, which can be significantly cheaper than on-demand instances. Spot instances are spare EC2 capacity offered at a lower price.
                                          train_max_run=300,                    # Specifies the maximum runtime for the training job in seconds. Here, it's 300 seconds (5 minutes).
                                          train_max_wait=600)                   # Sets the maximum time to wait for the job to complete, including the time waiting for spot instances, in seconds. Here, it's 600 seconds (10 minutes).

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

  • トレーニングジョブ
  estimator.fit({'train': s3_input_train,'validation': s3_input_test})

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

  • 展開
  xgb_predictor = estimator.deploy(initial_instance_count=1,instance_type='ml.m5.large')

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

  • 検証
  # Looks for the XGBoost image URI and builds an XGBoost container. Specify the repo_version depending on preference.
  container = get_image_uri(boto3.Session().region_name,
                            'xgboost', 
                            repo_version='1.0-1')

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

はじめる

  • Git Bash を使用してリポジトリのクローンを作成する / .zip ファイルをダウンロードする / リポジトリをフォークします。
  • AWS マネジメント コンソールに移動し、右上隅にあるアカウント プロファイルをクリックし、ドロップダウンから [セキュリティ認証情報] を選択します。
  • アクセス キーの作成: [アクセス キー] セクションで、[新しいアクセス キーの作成] をクリックすると、アクセス キー ID とシークレット アクセス キーを示すダイアログが表示されます。
  • キーをダウンロードまたはコピーします: (重要) .csv ファイルをダウンロードするか、キーを安全な場所にコピーします。シークレット アクセス キーを表示できるのはこのときだけです。
  • クローンされたリポジトリを開きます。 VS コード内
  • ClassiSage の下に terraform.tfvars としてファイルを作成し、その内容を次のようにします。
  hyperparameters = {
        "max_depth":"5",                ## Maximum depth of a tree. Higher means more complex models but risk of overfitting.
        "eta":"0.2",                    ## Learning rate. Lower values make the learning process slower but more precise.
        "gamma":"4",                    ## Minimum loss reduction required to make a further partition on a leaf node. Controls the model’s complexity.
        "min_child_weight":"6",         ## Minimum sum of instance weight (hessian) needed in a child. Higher values prevent overfitting.
        "subsample":"0.7",              ## Fraction of training data used. Reduces overfitting by sampling part of the data. 
        "objective":"binary:logistic",  ## Specifies the learning task and corresponding objective. binary:logistic is for binary classification.
        "num_round":50                  ## Number of boosting rounds, essentially how many times the model is trained.
        }
  # A SageMaker estimator that calls the xgboost-container
  estimator = sagemaker.estimator.Estimator(image_uri=container,                  # Points to the XGBoost container we previously set up. This tells SageMaker which algorithm container to use.
                                          hyperparameters=hyperparameters,      # Passes the defined hyperparameters to the estimator. These are the settings that guide the training process.
                                          role=sagemaker.get_execution_role(),  # Specifies the IAM role that SageMaker assumes during the training job. This role allows access to AWS resources like S3.
                                          train_instance_count=1,               # Sets the number of training instances. Here, it’s using a single instance.
                                          train_instance_type='ml.m5.large',    # Specifies the type of instance to use for training. ml.m5.2xlarge is a general-purpose instance with a balance of compute, memory, and network resources.
                                          train_volume_size=5, # 5GB            # Sets the size of the storage volume attached to the training instance, in GB. Here, it’s 5 GB.
                                          output_path=output_path,              # Defines where the model artifacts and output of the training job will be saved in S3.
                                          train_use_spot_instances=True,        # Utilizes spot instances for training, which can be significantly cheaper than on-demand instances. Spot instances are spare EC2 capacity offered at a lower price.
                                          train_max_run=300,                    # Specifies the maximum runtime for the training job in seconds. Here, it's 300 seconds (5 minutes).
                                          train_max_wait=600)                   # Sets the maximum time to wait for the job to complete, including the time waiting for spot instances, in seconds. Here, it's 600 seconds (10 minutes).
  • Terraform と Python を使用するためのすべての依存関係をダウンロードしてインストールします。
  • ターミナルに「terraform init」と入力/貼り付けて、バックエンドを初期化します。

  • 次に、「terraform Plan」と入力/貼り付けてプランを表示するか、単純に terraform validate を実行してエラーがないことを確認します。

  • 最後にターミナルに「terraform apply --auto-approve」と入力/貼り付けます

  • これにより、2 つの出力が表示されます。1 つはbucket_name、もう 1 つは pretrained_ml_instance_name です (3 番目のリソースは、グローバル リソースであるため、バケットに与えられた変数名です)。

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

  • コマンドの完了がターミナルに表示されたら、ClassiSage/ml_ops/function.py に移動し、コードが含まれるファイルの 11 行目に移動します。
  estimator.fit({'train': s3_input_train,'validation': s3_input_test})

プロジェクト ディレクトリが存在するパスに変更して保存します。

  • 次に、ClassiSageml_opsdata_upload.ipynb で、次のコードを使用してセル番号 25 までのすべてのコード セルを実行します。
  xgb_predictor = estimator.deploy(initial_instance_count=1,instance_type='ml.m5.large')

データセットを S3 バケットにアップロードします。

  • コードセル実行の出力

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

  • ノートブックの実行後、AWS マネジメントコンソールを再度開きます。
  • S3 サービスと Sagemaker サービスを検索すると、開始された各サービスのインスタンス (S3 バケットと SageMaker ノートブック) が表示されます

2 つのオブジェクト、データセット、モデル コードを含む pretrained_sm.ipynb ファイルがアップロードされた「data-bucket-」という名前の S3 バケット。

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model


  • AWS SageMaker のノートブック インスタンスに移動し、作成したインスタンスをクリックして、[Jupyter を開く] をクリックします。
  • その後、ウィンドウの右上にある [新規] をクリックし、ターミナルを選択します。
  • これにより、新しいターミナルが作成されます。

  • ターミナルに以下を貼り付けます (VS Code のターミナル出力に表示されるbucket_name 出力に置き換えます)。
  # Looks for the XGBoost image URI and builds an XGBoost container. Specify the repo_version depending on preference.
  container = get_image_uri(boto3.Session().region_name,
                            'xgboost', 
                            repo_version='1.0-1')

S3 から Notebook の Jupyter 環境に pretrained_sm.ipynb をアップロードするターミナル コマンド

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model


  • 開いた Jupyter インスタンスに戻り、pretrained_sm.ipynb ファイルをクリックして開き、conda_python3 カーネルを割り当てます。
  • 4 番目のセルまで下にスクロールし、変数bucket_nameの値を、bucket_name = ""に対するVS Codeのターミナル出力に置き換えます。
  hyperparameters = {
        "max_depth":"5",                ## Maximum depth of a tree. Higher means more complex models but risk of overfitting.
        "eta":"0.2",                    ## Learning rate. Lower values make the learning process slower but more precise.
        "gamma":"4",                    ## Minimum loss reduction required to make a further partition on a leaf node. Controls the model’s complexity.
        "min_child_weight":"6",         ## Minimum sum of instance weight (hessian) needed in a child. Higher values prevent overfitting.
        "subsample":"0.7",              ## Fraction of training data used. Reduces overfitting by sampling part of the data. 
        "objective":"binary:logistic",  ## Specifies the learning task and corresponding objective. binary:logistic is for binary classification.
        "num_round":50                  ## Number of boosting rounds, essentially how many times the model is trained.
        }
  # A SageMaker estimator that calls the xgboost-container
  estimator = sagemaker.estimator.Estimator(image_uri=container,                  # Points to the XGBoost container we previously set up. This tells SageMaker which algorithm container to use.
                                          hyperparameters=hyperparameters,      # Passes the defined hyperparameters to the estimator. These are the settings that guide the training process.
                                          role=sagemaker.get_execution_role(),  # Specifies the IAM role that SageMaker assumes during the training job. This role allows access to AWS resources like S3.
                                          train_instance_count=1,               # Sets the number of training instances. Here, it’s using a single instance.
                                          train_instance_type='ml.m5.large',    # Specifies the type of instance to use for training. ml.m5.2xlarge is a general-purpose instance with a balance of compute, memory, and network resources.
                                          train_volume_size=5, # 5GB            # Sets the size of the storage volume attached to the training instance, in GB. Here, it’s 5 GB.
                                          output_path=output_path,              # Defines where the model artifacts and output of the training job will be saved in S3.
                                          train_use_spot_instances=True,        # Utilizes spot instances for training, which can be significantly cheaper than on-demand instances. Spot instances are spare EC2 capacity offered at a lower price.
                                          train_max_run=300,                    # Specifies the maximum runtime for the training job in seconds. Here, it's 300 seconds (5 minutes).
                                          train_max_wait=600)                   # Sets the maximum time to wait for the job to complete, including the time waiting for spot instances, in seconds. Here, it's 600 seconds (10 minutes).

コードセル実行の出力

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model


  • ファイルの先頭で、[カーネル] タブに移動して再起動を実行します。
  • 次のコードを使用して、コードセル番号 27 までノートブックを実行します。
  estimator.fit({'train': s3_input_train,'validation': s3_input_test})
  • 意図した結果が得られます。 データはフェッチされ、定義された出力パスを使用してラベルと機能に合わせて調整された後、トレーニング セットとテスト セットに分割されます。その後、SageMaker の Python SDK を使用するモデルがトレーニングされ、エンドポイントとしてデプロイされ、検証されてさまざまなメトリクスが提供されます。

コンソール観察メモ

8 番目のセルの実行

  xgb_predictor = estimator.deploy(initial_instance_count=1,instance_type='ml.m5.large')
  • モデル データを保存するために、S3 に出力パスが設定されます。

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

23 番目のセルの実行

  # Looks for the XGBoost image URI and builds an XGBoost container. Specify the repo_version depending on preference.
  container = get_image_uri(boto3.Session().region_name,
                            'xgboost', 
                            repo_version='1.0-1')
  • トレーニング ジョブが開始されます。トレーニング タブで確認できます。

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

  • しばらくすると (推定 3 分) 完了し、同じように表示されます。

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

24 番目のコードセルの実行

  hyperparameters = {
        "max_depth":"5",                ## Maximum depth of a tree. Higher means more complex models but risk of overfitting.
        "eta":"0.2",                    ## Learning rate. Lower values make the learning process slower but more precise.
        "gamma":"4",                    ## Minimum loss reduction required to make a further partition on a leaf node. Controls the model’s complexity.
        "min_child_weight":"6",         ## Minimum sum of instance weight (hessian) needed in a child. Higher values prevent overfitting.
        "subsample":"0.7",              ## Fraction of training data used. Reduces overfitting by sampling part of the data. 
        "objective":"binary:logistic",  ## Specifies the learning task and corresponding objective. binary:logistic is for binary classification.
        "num_round":50                  ## Number of boosting rounds, essentially how many times the model is trained.
        }
  # A SageMaker estimator that calls the xgboost-container
  estimator = sagemaker.estimator.Estimator(image_uri=container,                  # Points to the XGBoost container we previously set up. This tells SageMaker which algorithm container to use.
                                          hyperparameters=hyperparameters,      # Passes the defined hyperparameters to the estimator. These are the settings that guide the training process.
                                          role=sagemaker.get_execution_role(),  # Specifies the IAM role that SageMaker assumes during the training job. This role allows access to AWS resources like S3.
                                          train_instance_count=1,               # Sets the number of training instances. Here, it’s using a single instance.
                                          train_instance_type='ml.m5.large',    # Specifies the type of instance to use for training. ml.m5.2xlarge is a general-purpose instance with a balance of compute, memory, and network resources.
                                          train_volume_size=5, # 5GB            # Sets the size of the storage volume attached to the training instance, in GB. Here, it’s 5 GB.
                                          output_path=output_path,              # Defines where the model artifacts and output of the training job will be saved in S3.
                                          train_use_spot_instances=True,        # Utilizes spot instances for training, which can be significantly cheaper than on-demand instances. Spot instances are spare EC2 capacity offered at a lower price.
                                          train_max_run=300,                    # Specifies the maximum runtime for the training job in seconds. Here, it's 300 seconds (5 minutes).
                                          train_max_wait=600)                   # Sets the maximum time to wait for the job to complete, including the time waiting for spot instances, in seconds. Here, it's 600 seconds (10 minutes).
  • エンドポイントは [推論] タブにデプロイされます。

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

追加のコンソール観察:

  • 「推論」タブでのエンドポイント構成の作成。

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

  • モデルの作成も [推論] タブで行われます。

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model


エンディングとクリーンアップ

  • VS Code で data_upload.ipynb に戻り、最後の 2 つのコード セルを実行して、S3 バケットのデータをローカル システムにダウンロードします。
  • フォルダーの名前は、download_bucket_content になります。 ダウンロードしたフォルダーのディレクトリ構造

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

  • ダウンロードしたファイルのログが出力セルに表示されます。これには、生の pretrained_sm.ipynb、final_dataset.csv、および sagemaker コード ファイルの実行データを含む「pretrained-algo」という名前のモデル出力フォルダーが含まれます。
  • 最後に、SageMaker インスタンス内に存在する pretrained_sm.ipynb に移動し、最後の 2 つのコード セルを実行します。 追加料金が発生しないように、S3 バケット内のエンドポイントとリソースは削除されます。
  • エンドポイントの削除
  estimator.fit({'train': s3_input_train,'validation': s3_input_test})

ClassiSage: Terraform IaC Automated AWS SageMaker based HDFS Log classification Model

  • S3 のクリア: (インスタンスを破棄するために必要)
  # Looks for the XGBoost image URI and builds an XGBoost container. Specify the repo_version depending on preference.
  container = get_image_uri(boto3.Session().region_name,
                            'xgboost', 
                            repo_version='1.0-1')
  • プロジェクト ファイルの VS Code ターミナルに戻り、「terraform destroy --auto-approve」と入力/貼り付けます
  • 作成されたリソース インスタンスはすべて削除されます。

自動作成されたオブジェクト

ClassiSage/downloaded_bucket_content
ClassiSage/.terraform
ClassiSage/ml_ops/pycache
ClassiSage/.terraform.lock.hcl
ClassiSage/terraform.tfstate
ClassiSage/terraform.tfstate.backup

注:
AWS クラウドの S3 と HDFS ログ分類に SageMaker を使用し、IaC (インフラストラクチャ セットアップ自動化) に Terraform を使用したこの機械学習プロジェクトのアイデアと実装が気に入っていただけた場合は、GitHub でプロジェクト リポジトリをチェックアウトした後、この投稿に「いいね!」を付けてスターを付けることを検討してください。 .

以上がClassiSage: Terraform IaC 自動化された AWS SageMaker ベースの HDFS ログ分類モデルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
2時間のPython計画:現実的なアプローチ2時間のPython計画:現実的なアプローチApr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:主要なアプリケーションの調査Python:主要なアプリケーションの調査Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間でどのくらいのPythonを学ぶことができますか?2時間でどのくらいのPythonを学ぶことができますか?Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Apr 02, 2025 am 07:12 AM

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...

風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの精度を改善する方法は?風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの精度を改善する方法は?Apr 02, 2025 am 07:09 AM

風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの問題を解決する方法は?風光明媚なスポットコメントと分析を行っているとき、私たちはしばしばJieba Wordセグメンテーションツールを使用してテキストを処理します...

正規表現を使用して、最初の閉じたタグと停止に一致する方法は?正規表現を使用して、最初の閉じたタグと停止に一致する方法は?Apr 02, 2025 am 07:06 AM

正規表現を使用して、最初の閉じたタグと停止に一致する方法は? HTMLまたは他のマークアップ言語を扱う場合、しばしば正規表現が必要です...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

mPDF

mPDF

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

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター