PythonでC++のDLLを読み込む
Pythonでは、ctypesモジュールを使用してC++のDLL(Dynamic Link Library)を読み込むことができます。
以下に、PythonでC++のDLLを読み込むコードの例を示します。
import ctypes # DLLの読み込み mydll = ctypes.CDLL("mydll.dll") # DLL内の関数の定義 my_function = mydll.my_function my_function.argtypes = [ctypes.c_int] my_function.restype = ctypes.c_int # 関数の呼び出し result = my_function(42) print(result)
この例では、ctypes.CDLL()を使用してmydll.dllというDLLを読み込んでいます。次に、mydllオブジェクト内の関数を定義しています。関数の引数の型や戻り値の型は、argtypes属性とrestype属性を使用して指定します。
my_functionという関数を呼び出し、結果を表示しています。このコードでは、my_functionがDLL内の関数として定義されていることを前提としていますので、DLL内の関数名や引数の型、戻り値の型に合わせて適宜修正してください。
React で Hello World
Reactのインストールと最初のプロジェクト作成をします。
Node.jsのインストール
Node.jsをインストールし、バージョンが確認できればOKです。
$ node -v V16.15.1
今回の環境では、v16.15.1でした。
Yarnのインストール
パッケージマネージャとしてyarnを使います。 下記コマンドでインストールします。
$ npm install -g yarn
バージョン情報が出てくればOKです。
$yarn -v 1.22.5
Reactプロジェクトの作成
create-react-appを使って、プロジェクトのひな型を生成します。 今回はtest-appというプロジェクト名とします。
$ npx create-react-app test-app
以下のような表示がされれば成功です。
Success! Created test-app at <プロジェクトパス> Inside that directory, you can run several commands: npm start Starts the development server. npm run build Bundles the app into static files for production. npm test Starts the test runner. npm run eject Removes this tool and copies build dependencies, configuration files and scripts into the app directory. If you do this, you can’t go back! We suggest that you begin by typing: cd test-app npm start Happy hacking!
プロジェクトディレクトリに移動し、yarn startでサーバーを起動します。
$ cd test-app $ yarn start
ブラウザが起動され、下のような画面が表示されれば成功です。
WebアプリとAWSの連携: AWS JavaScript SDK
WebアプリとAWSを連携させるために、AWS JavaScript SDKの環境構築をします。
環境
- Windows 10 OS
- Node.js v14.15.5
- Yarn v1.22.18
AWS SDKのインストール
コマンドプロンプトを開き、任意のフォルダ下でAWS SDKのモジュールをインストールします。
yarn add aws-sdk
同様に、uuidモジュールも追加します。
yarn add uuid
AWS認証情報の設定
AWSのCredentials情報を設定します。 Windowsの場合、C:\Users\USER_NAME.awsフォルダを作成し、.awsフォルダ下にcredentialsという拡張子なしのファイルを作成します。 credentialsファイルを任意のテキストエディタで開き、AWSのCredentials情報を次のように入力します。
[default] aws_access_key_id = <Access key ID> aws_secret_access_key = <Secret access key>
認証情報の確認
yarnでモジュールをインストールしたプロジェクトディレクトリで、次のようなJavaScriptコードsample.jsを作成します。
var AWS = require("aws-sdk"); AWS.config.getCredentials(function(err) { if (err) console.log(err.stack); else { console.log("Access Key: ", AWS.config.credentials.accessKeyId); } });
sample.jsを作成後、コマンドプロンプトで実行すると、設定したAccess keyが表示されます。
node sample.js
S3との連携など、後日さらに追加していきたいと思います。
AWS EC2でUbuntuサーバーを立ててからSSHログインするまで
AWSのEC2でUbuntuサーバーを立てて、WindowsからSSHログインするまでをまとめます。
環境
AWS EC2でのインスタンス作成
EC2の左ペインインスタンスページから、右上のインスタンスを起動をクリックします。
インスタンスを起動ページの名前とタグで任意のサーバー名を入力します。今回はubuntu-serverとしました。
アプリケーションおよびOSイメージで、クイックスタートにあるUbuntuを選択します。
インスタンスタイプでどれかを指定します。今回は、デフォルトのt2.microのままにしています。
キーペアの右下にある新しいキーペアの作成をクリックします。
表示されたキーペアを作成で、任意のキーペア名を入力し、キーペアを作成をクリックします。これにより、(キーペア名).pemがローカルにダウンロードされるので、ダウンロードされたフォルダパスを確認します。
ネットワーク設定のSSHトラフィックを許可するの選択肢の横のセレクトボックスで、自分のIPを選択します。これによって、現在のIPからしかSSH接続させないようにポートの設定が自動で行われます。
設定が終わったら、インスタンスを起動をクリック。EC2インスタンスが生成・起動されます。
Windowsからの接続
今回は、Windows PowerShellを使います。
Windows PowerShellを起動し、以下のコマンドを入力します。
> ssh -i <.pemファイルへのパス> ubuntu@<インスタンスのIPアドレス>
初めて接続する際は、信頼する接続先として保存するかどうかを問われるので、yesを入力します。
ubuntuのコンソールに入れたら接続完了です。
PythonでcURL
import requests import json url = "https://***.com/api" r = requests.get(url=url) data = r.json() print(data)
ベーシック認証対応
APIにベーシック認証が必要な場合は、requestsの引数にauthを追加します。
import requests import json url = "https://***.com/api" r = requests.get(url=url, auth=('username', 'password')) data = r.json()
プロキシ経由
import requests import json url = "https://***.com/api" proxy_dict = {"http": "http://***:[port]", "https": "https://***:[port]"} r = requests.get(url=url, auth=('username', 'password'), proxies=proxy_dict) data = r.json()
Zendesk API: Zenpy
いきなりの機械学習関係ない記事です。
PythonでZendeskのAPIを叩く必要があったので実装してみました。 以前はrequestsライブラリで直接叩いていましたが、Zenpyというライブラリが使いやすいのでそちらに変更。
インストール
pip install zenpy
API Credentialsの生成
Zendesk Supportの管理ページから、チャネルカテゴリのAPIへ遷移。 設定タブのアクティブなAPIトークンにあるAPIトークンを追加ボタンをクリックして、新しいAPIを追加します。
チケットに社内コメントを追加
from zenpy import Zenpy from zenpy.lib.api_objects import Comment, Ticket credentials = { 'email': "<Zendeskでのログインアドレス **@**>", 'token': "<ZendeskのAPIトークン>", 'subdomain': "<Zendeskのサブドメイン **.zendesk.comの**の文字列>" } zenpy_client = Zenpy(**credentials) ticket = zenpy_client.tickets(id=<更新対象のZendeskチケットID>) ticket.comment = (body="<コメント本文>", public=False) # public=Trueで通常コメント zenpy_client.tickets.update(ticket)
Zendeskチケットのカスタムフィールドを上書き
from zenpy import Zenpy from zenpy.lib.api_objects import CustomField, TIcket credentials = { 'email': "<Zendeskでのログインアドレス **@**>", 'token': "<ZendeskのAPIトークン>", 'subdomain': "<Zendeskのサブドメイン **.zendesk.comの**の文字列>" } zenpy_client = Zenpy(**credentials) ticket = zenpy_client.tickets(id=<更新対象のZendeskチケットID>) ticket.custom_fields.append(CustomField(id=<更新対象のカスタムフィールドID>, value=<更新する値>)) zenpy_client.tickets.update(ticket)