…失敗したようだ。
…失敗したようだ。
JAVAファイルをJARファイルに変換するPythonコードをTKinterのファイル読み込みウィジェットを使って書くとしたら、以下のようになるかもしれません。コードはPythonで書いています。
# tkinterライブラリーをインポート
import tkinter as tk
from tkinter import filedialog
# subprocessライブラリーをインポート
import subprocess
# ファイル選択関数
def select_file():
# ファイルダイアログを開く
file_path = filedialog.askopenfilename(filetypes=[("JAVAファイル", "*.java")])
# 選択したファイルのパスを表示
label.config(text=file_path)
# ファイルの拡張子をチェック
if file_path.endswith(".java"):
# JARファイルに変換する関数を呼び出す
convert_to_jar(file_path)
else:
# エラーメッセージを表示
label.config(text="JAVAファイルを選択してください")
# JARファイルに変換する関数
def convert_to_jar(file_path):
# ファイル名と拡張子を分離
file_name, file_ext = file_path.split(".")
# コマンドラインでjavacコマンドを実行してクラスファイルにコンパイル
subprocess.run(["javac", file_path])
# コマンドラインでjarコマンドを実行してJARファイルにパッケージング
subprocess.run(["jar", "cf", file_name + ".jar", file_name + ".class"])
# 完了メッセージを表示
label.config(text="JARファイルに変換しました")
# ウィンドウを作成
window = tk.Tk()
window.title("JAVAファイルからJARファイルへ")
# ラベルを作成
label = tk.Label(window, text="JAVAファイルを選択してください")
label.pack()
# ボタンを作成
button = tk.Button(window, text="ファイル選択", command=select_file)
button.pack()
# ウィンドウを表示
window.mainloop()
一応ウィジェット表示されて動いたが、本当にJARファイルに変換されたか確認できなかった。
ソースコードを暗号化するPythonプログラムを書いてください。
ただし、TKinterを用いてファイルを指定して読み込むウィジェットを表示できるようにして。
import tkinter as tk
from tkinter import filedialog
import base64
def select_file():
file_path = filedialog.askopenfilename()
if file_path:
with open(file_path, "rb") as file:
script = file.read()
encrypted = base64.b64encode(script)
output_file_path = filedialog.asksaveasfilename(defaultextension=".pye")
if output_file_path:
with open(output_file_path, "wb") as output_file:
output_file.write(b"import base64
")
output_file.write(b"exec(base64.b64decode(")
output_file.write(repr(encrypted).encode("utf-8"))
output_file.write(b"))")
root = tk.Tk()
# ファイル選択ボタンを作成
button = tk.Button(root, text="ファイルを選択", command=select_file)
button.pack(pady=10)
root.mainloop()
のコードは、ファイル選択ダイアログを表示し、選択されたファイルを暗号化して新しいファイルとして保存します。暗号化には、前の例と同様にbase64
モジュールを使用します。
filedialog.asksaveasfilename()
メソッドを使用して、暗号化されたファイルを保存する場所と名前を指定するダイアログを表示します。defaultextension
引数を使用して、デフォルトで保存されるファイル拡張子を指定します。
このコードでは、暗号化されたコードを直接実行するために、exec()
関数を使用しています。ただし、安全性のために、暗号化されたコードが実行される前に、必要なチェックと検証を行うことが重要です。
ChatGPT Very Good Job!!!
h = float(input("身長は?")) / 100.0
w = float(input("体重は?"))
bmi = w / (h * h)
if bmi >= 25.0:
print("お前はデブだ!")
else:
print("お前はデブじゃなくて良かったな!")
が元のソースコード。
ばっちりウィジェットが表示され、
暗号化したいソースコードファイルを選択するとリネームするよう要求され、
別のファイル名を付けると以下の通り、見事に暗号化されていた。
import base64
exec(base64.b64decode(b'aCA9IGZsb2F0KGlucHV0KCLouqvplbfjga/vvJ8iKSkgLyAxMDAuMA0KdyA9IGZsb2F0KGlucHV0KCLkvZPph43jga/vvJ8iKSkNCmJtaSA9IHcgLyAoaCAqIGgpDQppZiBibWkgPj0gMjUuMDoNCiAgICBwcmludCgi44GK5YmN44Gv44OH44OW44Gg77yBIikNCmVsc2U6DQogICAgcHJpbnQoIuOBiuWJjeOBr+ODh+ODluOBmOOCg+OBquOBj+OBpuiJr+OBi+OBo+OBn+OBqu+8gSIpDQoNCg=='))
これはさすがに読めないだろう。
しかし、暗号化する前の元のファイルと同じようにしっかり動作した。
今度は逆に暗号化されたソースコードを復号化するプログラムを書いてもらったが、
復号化されたソースコードは以下の通り文字化けしていて失敗した。
jh®ÖÚ±î¸{m«ëúáס×h = float(input("身é·ã¯ï¼")) / 100.0
w = float(input("ä½éã¯ï¼"))
bmi = w / (h * h)
if bmi >= 25.0:
print("ãåã¯ããã ï¼")
else:
print("ãåã¯ãããããªãã¦è¯ãã£ããªï¼")
参考までに復号プログラムを書いておく。
import tkinter as tk
from tkinter import filedialog
import base64
def select_file():
file_path = filedialog.askopenfilename()
if file_path:
with open(file_path, "rb") as file:
encrypted_script = file.read()
decoded_script = base64.b64decode(encrypted_script)
output_file_path = filedialog.asksaveasfilename(defaultextension=".py")
if output_file_path:
with open(output_file_path, "wb") as output_file:
output_file.write(decoded_script)
root = tk.Tk()
# ファイル選択ボタンを作成
button = tk.Button(root, text="ファイルを選択", command=select_file)
button.pack(pady=10)
root.mainloop()
システムインテグレーターの業務は、クライアントの業務を把握し課題を分析。
そしてどのようなシステムを導入することで課題を解決できるかのコンサルティングから、設計、開発、運用に至るまでをトータルサポートすることです。
ただ、依頼された仕事をシステムインテグレーターが1社で対応するわけではありません。
ソフト開発企業や通信会社、ハード製品ベンダー等と協力してシステムを開発するにあたり、そのプロジェクト全体の指揮をとって統括するのが、システムインテグレーターなのです。
だとよ。
2022年11月28日にアマゾン ウェブ サービス(AWS)上でMicrosoft Officeのライセンスを購入できるようになりました。また、Officeインストール済みWindows Server AMIの提供も開始されました。
そこで本記事では、Microsoft OfficeをAmazon EC2上で実行するのに現在どのような方法があるか、またOfficeインストール済みWindows Server AMIを使用する際の条件や費用を整理しましたので、ご紹介していきます。
だとよ。
AppStream 2.0 では、既存のデスクトップアプリケーションを AWS に簡単に追加して、ユーザーがそれらを即座にストリーミングできるようにすることが可能です。Windows ユーザーは AppStream 2.0 クライアントまたは HTML5 対応ウェブブラウザをアプリケーションのストリーミングに使用できます。アプリケーションごとに 1 つのバージョンを維持すればよいため、簡単にアプリケーションを管理できます。ユーザーはいつでも最新バージョンのアプリケーションにアクセスできます。アプリケーションは AWS のコンピューティングリソースで実行され、データがユーザーのデバイスに保存されることはないので、ユーザーは常に高性能でセキュアなエクスペリエンスを得ることができます。
デスクトップアプリケーションストリーミングの従来のオンプレミスソリューションとは違い、AppStream 2.0 は従量課金制です。そのため、先行投資やインフラストラクチャの維持が不要です。すぐに、グローバルにスケーリングできるため、いつでも最高の体験をユーザーに提供できます。
Amazon AppStream 2.0 を使用すると、次の利点があります。
デスクトップアプリケーションには、Windows および Linux PC、Mac、Chromebook、iPad、Android タブレットから HTML5 対応のウェブブラウザを介して安全にアクセスできます。または、サポートされているバージョンの Windows では、AppStream 2.0 クライアントをアプリケーションのストリーミングに使用できます。
アプリケーションとデータは AWS 上に保持され、ユーザーには暗号化されたピクセルのみがストリーミングされます。アプリケーションは、各ユーザー専用の AppStream 2.0 インスタンスで実行されるため、コンピューティングリソースは共有されません。アプリケーションは、お客様独自の Virtual Private Cloud (VPC) 内で動作し、Amazon VPC のセキュリティ機能を使用してアクセスを制御できます。これによって、アプリケーションを分離し、安全に実行できます。
AppStream 2.0 は AWS で実行され、ローカルデバイスでは利用できないコンピューティング機能にアクセスできるので、アプリケーションは常に高パフォーマンスで実行されます。ローカルおよびグローバルに即座にスケールでき、ユーザーのために常に低レイテンシーのエクスペリエンスを確保できます。オンプレミスソリューションとは異なり、徐々に増加する設備投資を必要とすることなく、ユーザーに最も近い AWS リージョンにアプリケーションをすばやくデプロイして、ストリーミングを開始することができます。
既存の AWS のサービスおよびオンプレミス環境と統合します。VPC 内でアプリケーションを実行することで、ユーザーが AWS で保持しているデータや他のリソースにアクセスできるようになります。これにより、AWS とお使いの環境間におけるデータの移動が少なくなり、より高速なユーザーエクスペリエンスが実現されます。
既存の Microsoft Active Directory 環境との統合。 これにより、ストリーミングアプリケーションで既存の Active Directory ガバナンス、ユーザーエクスペリエンス、およびセキュリティポリシーを使用できるようになります。
ID フェデレーションを構成します。これにより、ユーザーは社内認証情報を使用してアプリケーションにアクセスできます。または、AppStream 2.0 で実行しているアプリケーションから IT リソースへの認証済みのアクセスを許可することもできます。
フリートには 3 つのタイプがあります。
常時オン – ストリーミングインスタンスは、アプリケーションとデスクトップをストリーミングしているユーザーがいなくても、常に実行されます。ストリーミングインスタンスは、ユーザーがストリーミングする前にプロビジョニングされる必要があります。プロビジョニングされるストリーミングインスタンスの数は、オートスケーリングルールを使用して管理されます。詳細については、「Amazon AppStream 2.0 向け Fleet Auto Scaling」を参照してください。
ユーザーがアプリケーションまたはデスクトップを選択すると、それらのストリーミングが直ちに開始されます。ストリーミングしているユーザーがいない場合でも、すべてのストリーミングインスタンスに対して実行中のインスタンス料金が請求されます。
オンデマンド – ストリーミングインスタンスは、ユーザーがアプリケーションとデスクトップをストリーミングしている場合にのみ実行されます。まだユーザーに割り当てられていないストリーミングインスタンスは、停止状態になります。ストリーミングインスタンスは、ユーザーがストリーミングする前にプロビジョニングされる必要があります。プロビジョニングされるストリーミングインスタンスの数は、オートスケーリングルールを使用して管理されます。詳細については、「Amazon AppStream 2.0 向け Fleet Auto Scaling」を参照してください。
ユーザーがアプリケーションまたはデスクトップを選択すると、1~2 分の待機時間後にそれらのストリーミングが開始されます。まだユーザーに割り当てられていないストリーミングインスタンスにはコストが低い停止中のインスタンス料金が請求され、ユーザーに割り当てられているストリーミングインスタンスには実行中のインスタンス料金が請求されます。
Elastic – このストリーミングインスタンスのプールは、AppStream 2.0 によって管理されます。ユーザーが起動するアプリケーションまたはデスクトップを選択すると、App Block がダウンロードされ、ストリーミングインスタンスにマウントされた後で、これらのストリーミングが開始されます。
Elastic フリートストリーミングインスタンスに対する実行中のインスタンス料金は、ストリーミングセッションの持続時間分のみが秒単位で請求されます。
AppStream 2.0 を最大限に活用するには、以下のコンセプトを理解しておく必要があります。
アプリケーションには、ユーザーにストリーミングするアプリケーションを起動するために必要な情報が含まれています。アプリケーションは、App Block やイメージなど、アプリケーションを起動するために必要なファイルが含まれるリソースに関連付けられています。
App Block には、ユーザーにストリーミングするアプリケーションファイルと、アプリケーションを設定するために必要な詳細が含まれています。
Image Builder は、イメージの作成に使用する仮想マシンです。Image Builder を起動して接続するには、AppStream 2.0 コンソールを使用します。Image Builder に接続すると、アプリケーションをインストール、追加、テストできます。さらに Image Builder を使用してイメージを作成できます。自己所有のプライベートイメージを使用して新しい Image Builder を起動できます。
イメージには、ユーザーにストリーミングできるアプリケーションと、ユーザーがアプリケーションの使用をすばやく開始できるようにするためのデフォルトのシステム設定とアプリケーション設定が含まれています。AWS は、Image Builder を作成するために使用できるベースイメージを提供しています。その後、その Image Builder で独自のアプリケーションが含まれるイメージを作成します。イメージの作成後にイメージを変更することはできません。他のアプリケーションの追加、既存のアプリケーションの更新、またはイメージ設定の変更を行うには、新しいイメージを作成する必要があります。イメージは、他の AWS リージョンにコピーする、または同じリージョン内の他の AWS アカウント、ユーザー、およびユーザーがそのアプリケーションの使用をすばやく開始できるようにするためのデフォルトのシステム設定やアプリケーション設定と共有することが可能です。
フリートは、ユーザー指定のアプリケーションとデスクトップが実行されるフリートインスタンス (ストリーミングインスタンスとも呼ばれます) で構成されています。1 人のユーザーに 1 つのインスタンスが必要です。
スタックは、関連付けられたフリート、ユーザーアクセスポリシー、ストレージ設定で構成されます。ユーザーに対してストリーミングアプリケーションを開始するためにスタックを設定します。
ストリーミングインスタンス (フリートインスタンスとも呼ばれる) は、アプリケーションストリーミングにユーザー 1 人あたりが使用できる EC2 インスタンスです。ユーザーのセッションが完了すると、インスタンスは EC2 によって終了します。
ユーザープールを使用して、ユーザーと割り当てられたスタックを管理します。
オートスケーリングルールは、スケージュールベースおよび使用量ベースのポリシーで、常時オンまたはオンデマンドフリートに適用して、ユーザーがストリーミングに利用できるストリーミングインスタンスの数を自動的に管理することができます。
AppStream 2.0 を初めて使用する場合には、Try it Now (今すぐ試す) 機能を使用するか、Amazon AppStream 2.0 の使用を開始する: サンプルアプリケーションを使用してセットアップする チュートリアルに従って使用できます (両方とも AppStream 2.0 コンソールで使用できます)。
Try It Now では、デスクトップブラウザから簡単にデスクトップアプリケーションを起動できる無料トライアルの機能が提供されています。
入門チュートリアルを使用すると、サンプルアプリケーションまたはユーザー独自のアプリケーションを使用してアプリケーションストリーミングをセットアップできます。サンプルアプリケーションを使用してチュートリアルを開始した場合は、後でユーザー独自のアプリケーションをいつでも追加できます。
初めてサービスを使用するときは、AppStream 2.0 が、ユーザーに代わって AppStream 2.0 リソースを作成して管理する AWS Identity and Access Management (IAM)<awsui-icon class="awsdocs-link-icon" name="external" style="padding: 0px 0px 0px 1.5px;"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" focusable="false" aria-hidden="true"><path class="stroke-linecap-square" d="M10 2h4v4"></path><path d="m6 10 8-8"></path><path class="stroke-linejoin-round" d="M14 9.048V14H2V2h5"></path></svg></awsui-icon> ロールを作成します。
[今すぐ試す] を選択します。
AWS アカウントの認証情報を使用してサインインします (要求された場合)。
諸条件を読み、[Agree and Continue] を選択します。
表示されるアプリケーションのリストから、試したいアプリケーションを 1 つ選択します。