AWS: Device Farm

AWS Device Farm AWS Device Farmとは?利点と利用方法も紹介します! AWS Device Farmとは?実機を使ったモバイルアプリのテストについて解説 AWS Device Farmは、実際のモバイルデバイスやデスクトップブラウザを使用してアプリケーションをテストするサービスです。以下のような仕組みで動作しています: 実機デバイスの使用: AWS Device Farmは、エミュレーターやシミュレーターではなく、実際のスマートフォンやタブレットを使用します。 これにより、メモリ使用量、CPU負荷、位置情報、メーカーやキャリアによるファームウェアの違いなど、実際の使用環境に近い条件でテストが可能です 1 2。 リモートアクセス: 開発者はAWSのクラウド上にあるこれらの実機デバイスにリモートでアクセスし、アプリケーションをインストールしてテストを実行します。 これにより、物理的なデバイスを手元に用意する必要がなくなります 1 2。 自動化と手動テスト: Device Farmは、AppiumやEspressoなどのオープンソースのテストフレームワークを使用して自動テストを実行できます。 また、リモートアクセスを利用して手動でのテストも可能です 1 2。 テスト結果の収集と分析: テストの実行中に、動画、ログ、パフォーマンスデータなどが収集され、これらのデータを分析することで、アプリケーションの問題点を迅速に特定し、修正することができます 1 2。 スケーラビリティ: 複数のデバイスやブラウザで同時にテストを実行できるため、テストスイートの実行時間を短縮し、効率的にテストを進めることができます 1 2。 このように、AWS Device Farmは実際のデバイスを使用して、より現実に即したテスト環境を提供し、アプリケーションの品質向上を支援しています。

2024年12月9日 · 1 分

CHAID

CHAID CHAID とクラスタリング手法の関連性について CHAID(Chi-squared Automatic Interaction Detector)とクラスタリング手法は、どちらもデータをグループ化するという点で共通点がありますが、その目的やアプローチは異なります。 CHAID とクラスタリング手法の違い 特徴 CHAID クラスタリング 目的 目的変数との関係に基づいてデータを分割し、予測モデルを構築する データ間の類似性に基づいて、自然なグループを発見する 手法 決定木分析の一種であり、カイ二乗検定を用いて変数を分割する K-means、階層クラスタリングなど、様々なアルゴリズムが存在 出力 決定木 クラスタ 教師あり・なし学習 教師あり学習(目的変数あり) 教師なし学習(目的変数なし) それぞれの強み CHAID 目的変数との関係を明確化: 目的変数との関連性が高い変数を特定し、その関係性を可視化できるため、因果関係の分析に適している。 解釈の容易さ: 決定木という形で表現されるため、結果が直感的に理解しやすい。 非線形な関係の発見: 線形モデルでは捉えにくい、非線形な関係を検出できる。 クラスタリング 自然なグループの発見: データ間の類似性に基づいて、自然なグループを発見できる。 セグメンテーション: 顧客セグメンテーションなど、マーケティング分野で広く活用されている。 異常検知: クラスタから大きく外れたデータを異常値として検出できる。 具体的な活用例 CHAID: 顧客の属性データから、特定の商品を購入しやすい顧客グループを特定する。 医療データから、ある疾患になりやすい患者の特徴を抽出する。 クラスタリング: 顧客データをクラスタリングし、それぞれのクラスタに合わせたマーケティング施策を展開する。 文書データをクラスタリングし、トピックを抽出する。 両者の連携 CHAID とクラスタリングは、それぞれ異なる強みを持つため、組み合わせることでより深い分析が可能になります。例えば、 クラスタリングで得られたクラスタに対して、CHAID を用いて各クラスタの特徴を分析する。 CHAID で得られた決定木の葉ノードを新たなデータのクラスタとして利用する。 まとめ CHAID とクラスタリングは、どちらもデータをグループ化するという共通点がありますが、その目的やアプローチは異なります。どちらの手法が適切かは、分析の目的やデータの性質によって異なります。 目的変数との関係を明らかにしたい場合は CHAID データ間の類似性に基づいてグループ分けしたい場合はクラスタリング が一般的です。 どちらの手法が適切か迷う場合は、以下の点を考慮すると良いでしょう。 目的変数の有無: 目的変数がある場合は CHAID、ない場合はクラスタリングが適している。 データの性質: カテゴリカルデータが多い場合は CHAID、数値データが多い場合はクラスタリングが適している。 分析の目的: 予測モデルを構築したい場合は CHAID、自然なグループを発見したい場合はクラスタリングが適している。

2024年12月9日 · 1 分

Django Email

メール送信 Djangoでメールを送信する際に、都度サーバーを切り替える方法はいくつかあります。以下の手順で実装できます。 メールサーバーの設定を動的に変更する: DjangoのEmailMessageクラスを使用して、メール送信時にサーバー設定を動的に変更できます。例えば、以下のようにconnectionパラメータを使用して異なるサーバーを指定します。 1 2 3 4 5 6 7 8 9 10 11 12 13 from django.core.mail import EmailMessage, get_connection def send_email(subject, message, from_email, recipient_list, server_settings): connection = get_connection( host=server_settings['EMAIL_HOST'], port=server_settings['EMAIL_PORT'], username=server_settings['EMAIL_HOST_USER'], password=server_settings['EMAIL_HOST_PASSWORD'], use_tls=server_settings['EMAIL_USE_TLS'], use_ssl=server_settings['EMAIL_USE_SSL'], ) email = EmailMessage(subject, message, from_email, recipient_list, connection=connection) email.send() サーバー設定のリストを用意する: 複数のサーバー設定をリストで管理し、メール送信時にランダムまたは順番に選択する方法です。 ...

2024年11月28日 · 1 分

クラスタリング

クラスタリング 手法 ユーザーを属性に基づいてクラスタリングするためには、いくつかの手法があります。以下に代表的なものを紹介します: K-meansクラスタリング: ユーザーを事前に決めた数のクラスタに分ける手法です。各クラスタの中心(セントロイド)を計算し、ユーザーを最も近いクラスタに割り当てます。 階層的クラスタリング: ユーザーを階層的にクラスタリングする手法です。デンドログラムと呼ばれる木構造を作成し、ユーザーを段階的にクラスタに分けます。 DBSCAN(Density-Based Spatial Clustering of Applications with Noise): 密度に基づくクラスタリング手法で、データの密度が高い部分をクラスタとして識別します。ノイズや外れ値を扱うのに適しています。 Gaussian Mixture Models(GMM): データが複数のガウス分布から生成されていると仮定し、各クラスタをガウス分布としてモデル化します。クラスタの形状が楕円形の場合に有効です。 主成分分析(PCA): 次元削減の手法ですが、クラスタリングの前処理として使用されることが多いです。データの重要な特徴を抽出し、クラスタリングの精度を向上させます。 これらの手法を使うことで、ユーザーを効果的にクラスタリングし、属性に基づいた分析やマーケティング戦略の立案が可能になります。どの手法が最適かは、データの特性や目的によって異なるため、いくつかの手法を試してみると良いでしょう。 どの手法について詳しく知りたいですか?または、具体的なデータの例があれば教えてください。 DBSCAN 以下に、Pythonを使ってDBSCANでデータをクラスタリングするサンプルコードを示します。この例では、scikit-learnライブラリを使用しています。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import numpy as np from sklearn.cluster import DBSCAN from sklearn.datasets import make_blobs import matplotlib.pyplot as plt # サンプルデータの生成 X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0) # DBSCANの実行 dbscan = DBSCAN(eps=0.3, min_samples=5) clusters = dbscan.fit_predict(X) # クラスタリング結果のプロット plt.scatter(X[:, 0], X[:, 1], c=clusters, cmap='viridis') plt.xlabel('Feature 1') plt.ylabel('Feature 2') plt.title('DBSCAN Clustering') plt.show() このコードでは、以下の手順を踏んでいます: ...

2024年11月17日 · 1 分

LLM: ペルソナ

ペルソナ 生成 AI との融合で素早く深くペルソナを理解する!AI インタビューのご紹介

2024年11月7日 · 1 分

SQLModel

SQLModel テーブル定義 SQLModel で簡単なテーブルを作成する Alembic マイグレーション SQLModel で設計したモデルを Alembic でマイグレーション Alembic で複数モデルを扱う alembic + SQLModelでデータベースをマイグレーションする

2024年10月17日 · 1 分

javascript: ページのURLを取得

Javascript ページ内のアンカーの取得 ブラウザの「検証」でコンソールからプログラムを実行 1 2 3 4 5 6 // ページ内のすべてのアンカー要素を取得 const anchors = document.querySelectorAll('a'); // アンカーのhref属性を配列に格納 const urls = Array.from(anchors).map(anchor => anchor.href); // 結果をコンソールに表示 console.log(urls);

2024年10月14日 · 1 分

Wordpress: 脆弱性

Wordpress脆弱性 Advanced Custom Fields (ACF) https://rocket-boys.co.jp/7886/

2024年10月14日 · 1 分

gunicorn

Gunicorn max_requests / max_requests_jitter Gunicornでメモリリークを避けるために子プロセスを定期的に再起動するには、max_requestsとmax_requests_jitterの設定を利用するのが効果的です。これにより、一定のリクエスト数を処理した後にワーカープロセスが自動的に再起動されます。 以下はその設定方法です: max_requests: 各ワーカープロセスが再起動される前に処理するリクエストの最大数を指定します。 max_requests_jitter: 再起動のタイミングをランダム化するためのオプションです。これにより、全てのワーカープロセスが同時に再起動されるのを防ぎます。 Gunicornの設定ファイル(例:gunicorn.conf.py)に以下のように追加します: 1 2 3 4 # gunicorn.conf.py max_requests = 1000 # 1000リクエストごとに再起動 max_requests_jitter = 50 # 再起動タイミングをランダム化 または、コマンドラインで起動する際にオプションとして指定することもできます: 1 gunicorn --max-requests 1000 --max-requests-jitter 50 myapp:app これにより、各ワーカープロセスは1000回のリクエストを処理した後、ランダムに最大50回のリクエストを追加で処理してから再起動されます¹(https://qiita.com/ryu22e/items/2668a2243a5191bcdc78)²(https://zenn.dev/xknzw/articles/d2d337ae2f8966)³(https://qiita.com/_konishi_/items/1dc2bbfc386f57d06934)。 この設定により、メモリリークの影響を最小限に抑えつつ、サービスの安定性を保つことができます。 ¹(https://qiita.com/ryu22e/items/2668a2243a5191bcdc78): gunicorn(>=19.2)ではmax_requestsと一緒にmax_requests_jitterも使おう - Qiita ²(https://zenn.dev/xknzw/articles/d2d337ae2f8966): gunicorn syncワーカーの全体像メモ - Zenn ³(https://qiita.com/_konishi_/items/1dc2bbfc386f57d06934): gunicornでディスク使用量が増え続ける現象への対処 - Qiita (1) gunicorn(>=19.2)ではmax_requestsと一緒にmax_requests_jitterも使おう. https://qiita.com/ryu22e/items/2668a2243a5191bcdc78. (2) gunicorn syncワーカーの全体像メモ - Zenn. https://zenn.dev/xknzw/articles/d2d337ae2f8966. (3) gunicornでディスク使用量が増え続ける現象への対処 - Qiita. https://qiita.com/_konishi_/items/1dc2bbfc386f57d06934.

2024年10月11日 · 1 分

ltsv

ltsv ltsv から csvに変換 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #!/usr/bin/env python import click import pandas as pd import csv import re @click.group() @click.option("--tf_output", "-to", default=None) @click.pass_context def group(ctx, tf_output): pass @group.command() @click.argument("src") @click.pass_context def ltsv2csv(ctx, src): """LTSV to CSV""" output = f"{src}.csv" def get_line_dict(line): return dict(re.search(r"^([^\:]+)\:(.*)$", i).groups() for i in line) with open(src) as f: data = pd.DataFrame(map(get_line_dict, csv.reader(f, delimiter="\t"))) data.to_csv(output, index=False) if __name__ == "__main__": group()

2024年10月11日 · 1 分