サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
qiita.com/tamura__246
概要 この記事は、OpenTelemetryについて全く知らない人に向けた入門記事です。前半でOpenTelemetryとは何か解説し、後半でデモアプリケーションを動かしながら、理解を深めていきます。 この記事の執筆時点のOpenTelemetryの最新バージョンは、1.8.0です。参照する公式ドキュメントや動作確認するデモアプリケーションのバージョンも1.8.0です。 OpenTelemetryとは OpenTelemetryは、マイクロサービスアーキテクチャーで分散されたサービス(アプリケーション)の健全性や性能を示す「テレメトリーデータ」を生成、収集、管理、エクスポートするためのOSSです。 大規模な分散システムでは、健全性や性能を把握することが極めて困難なため、迅速なトラブルシューティングのためにはテレメトリーデータの収集が求められます。分散されたサービス(アプリケーション)からテ
はじめに この記事は、特徴量エンジニアリングについてわかりやすく説明することを目的として書きました。特徴量エンジニアリングについては、多くの記事で取り上げられていますが、最初に読む入門的な内容を目指しています。 「特徴量エンジニアリング」とは、大雑把に言えば「機械学習モデルの予測精度を上げるための入力データの加工」のことですが、実はこの言葉の定義には曖昧さがあります。様々な記事を読むと、この言葉は使う人により若干意味が異なっていることが分かります。 例えば、ある記事では、欠損値の補完は「前処理」で、カテゴリカルデータのワンホットエンコーディングが「特徴量エンジニアリング」と解説されています。一方、別の記事では両者とも「特徴量エンジニアリング」と解説されています。したがって、この言葉でイメージするものは人によって異なっていると言えます。 データサイエンティストの中でも自然言語処理をメインに扱
はじめに この記事では、Streamlitの概要を説明し、Streamlitを使ってデータ分析Webアプリを実際に開発する中でStreamlitの機能をいろいろと紹介していきます。最終的に以下のようなApacheやTomcatなどのアクセスログを解析するWebアプリをつくります。 Streamlitとは Streamlitは、Pythonで実装されたオープンソースのWebアプリケーションのフレームワークであり、機械学習やデータサイエンス向けのグラフィカルなWebアプリを簡単に作成して全世界に公開(クラウドサービスにデプロイ)できます。 主な特徴 Pythonのみで実装可能(HTMLやCSS、JavaScriptなどフロントエンドのコードを書かなくていい) 豊富なウィジェットが利用可能 Google ColabやJypter Notebookで作成したPythonのコードがほぼそのまま利用で
概要 2022年現在、Pythonで実装されたWebアプリケーションのフレームワークのOSSは多数あります。それらを様々な角度から比較してみましょう。 候補 2022年5月時点で、メジャーと思われるものは以下の通りです。対象はGitHubでソースコードを管理しているもので、Star数が1,000を超えているものに限定しています。READMEの最初などからOSSを最も端的に表している1文を抽出して、翻訳しています。 OSS名 ロゴ マーク 概要 フルスタック
「TomcatのDBコネクションが8個しかできないんだけど、なんで??」 そんな質問があり、原因を調査しました。意外なオチだったので、そのときの記録をここに残します。 この質問とともに受け取ったcontext.xmlには以下のような定義がありました。 <Resource name="jdbc/MyDB" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" factry="org.apache.tomcat.jdbc.pool.DataSourceFactory" url="jdbc:mysql://dbserver.example.com:3306/db4app" username="dbuser" password="xxxxxxxxxx" initialSize="20
はじめに 先日、OracleがJavaによる機械学習ライブラリーをオープンソースで公開したというニュースを目にしたので、軽く触ってみました。 CodeZineニュース - Oracle、Javaによる機械学習ライブラリ「Tribuo」をオープンソースで公開 マイナビニュース - Oracle、Java機械学習ライブラリ「Tribuo」を発表 これを見ると、機械学習の一般的なアルゴリズムに加えてXGBoostなども使えるようです。 特徴 公式サイトのトップページには以下の3つの特徴が挙げられています。 来歴(Provenance):Tribuoのモデル、データセット、評価には来歴があるため、それらを作成するために使用されたパラメーター、データの変換方法、ファイルなどが正確に追跡できる(※)。 型安全:Javaを使用しており、本番環境ではなくコンパイル時にミスを発見できる。 相互運用可能:XG
概要 ApacheやTomcatなどのアクセスログを解析しようと思っても、意外といいツールってありませんよね。様々な出力形式に対応していて、必要な情報だけをフィルタリングし、手軽に分かりやすく視覚化できるようなツールがあればいいのですが、なかなか見つかりません。 そこで、データ分析の世界では定番のPandasやMatplotlibを利用して、Jupyter Notebook上でApacheのアクセスログを解析、視覚化することが簡単にできるか試してみました。 ※Pandas、Matplotlib、Jupyter Notebookのインストールについては、すでに多くの分かりやすい記事がありますので、ここでは触れません。 アクセスログを読み込む 必要なライブラリーのインポート まずは最低限必要なPandasとMatplotlibをインポートします。 import pandas as pd fro
この記事では、Keycloakが出力するログについて説明します。実はログの設定について、Keycloakの公式ドキュメントにはほとんど記載がありません...ということでこの記事を書きました。 なお、このドキュメントを書く際に使用したバージョンはKeycloak 6.0.1ですが、他のバージョンでもおそらく同様だと思います。 はじめに Webアプリケーションが出力するログには、一般的に以下があります。 デバッグログ アクセスログ 監査ログ Keycloakでは、通常、デバッグログ(※)とアクセスログをファイルに出力し、監査ログ(監査イベント)をDBに登録します。 さらに、Keycloakではリクエスト/レスポンスのヘッダーの情報や発行したSQLをログに出力することや、いくつかのJVMオプションを付加してGCログやOOME発生時のヒープダンプなどを出力することもできますが、それらについてはまた
「記事を書いてみたものの文字ばかりで味気無い」、という時にちょっとだけ変化を付けられる(...かもしれない)ビジネスマンの画像をつくってみました。 GitHubに上げたので、よかったら使ってみて下さい(記事以外でも使えるかもしれません)。 吹き出しに一言付け加えて記事の合間に配置すると、アクセントになると思います。実際にこれを使って書いた記事がこちらです。このようなストーリー性のある記事には使えるのではないかと思います。 絵の下に何をしているところかを表す作者(私)の意図を書きましたが、これに必ずしも従う必要はありません(見え方が曖昧なものも多いので)。 効果的に使用するには、以下のようなことに気をつけてください。 使い過ぎない 吹き出しを付ける場合は、言葉は短くする 拡大・縮小しすぎない ちなみに全てPower Pointで一からつくっています(これをつくりたいので、Power Poin
正常に動作しないスクリプトやプログラムに標準出力処理(echoやSystem.out.print()など)を追加して、デバッグした経験は誰にでもあるのではないでしょうか。標準出力処理の追加は、簡単なプログラムの動作検証から制限などによりデバッガーを使用できない環境での調査まで、いろいろな場面で活用されていると思います。 しかし、1行の標準出力処理の追加でもプログラムの動作を致命的に変える可能性はあります。 過去に、echoが原因でバッチが停止した問題の対策のために、JavaのプログラムにSystem.out.println(・・・);の1行を追加した結果、アプリケーションが応答を返せなくなったことがありました。その時の記憶を、サンプルプログラムを交えながら説明したいと思います。 年次バッチが停止した! 10年ほど前のある日、あるシステムの保守を担当していた私のもとに「年次バッチが停止してし
この記事は、Javaでディープラーニングをやってみたいけど、第一歩目が踏み出せない人の背中を押すことを目的として書きました。簡単にディープラーニングの力を体験できるので、ぜひ読んでみて下さい。 対象読者 以下のいずれかの人を読者として想定しています。 ディープラーニングをやってみたいけど、Pythonでプログラムを書いたことないからなぁ…というJavaプログラマー 何らかの理由により、Javaでディープラーニングしたい方 Deeplearning4jを使ってみたい方 この記事を読むことで、IntelliJでDeeplearning4jを使ったディープラーニングの開発環境を構築して、手書きの数字を識別できるようになります。また、数字の識別の他にも多数あるディープラーニングのサンプルを実行できるようになります。ただし、この記事からはディープラーニングの理論を学ぶことはできません。ディープラーニ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
スタンフォード大学が提供するCourseraの機械学習コースの課題を日本語訳して、GitHubに公開してみました。 Courseraの機械学習コースの日本語訳 課題に含まれるPDFとスクリプト内のコメント部分を日本語訳しています。 以下のような方(で特に英語で苦戦した、しそうな方)にとって、役に立つのではないかと思います。 これから機械学習の勉強を初めてみようと思っている方 このコースを受けたけれど、挫折した方 講義のビデオは見たけれど、課題をやっていない方 このコースを既に修了したけれど、オプションの演習などを飛ばした方 このコースを既に修了したけれど、スクリプトの細部の実装などを見ていない方 このコースを既に修了したけれど、今の自分の能力を確認したい方(例えば、受講当時よりも、洗練されたOctaveの実装ができるかを確認してみる) Octave以外の言語(Pythonなど)で課題を1か
はじめに Webアプリケーションにメールヘッダーインジェクションの脆弱性があると、どのような攻撃を受けるでしょうか?実際にメールヘッダーインジェクションの脆弱性を攻撃してみましょう。 メールヘッダーインジェクションとはメールヘッダーインジェクションとは、メールの件名などの入力値を改ざんすることで、Bcc:などのメールヘッダーを付加する攻撃のことをいいます。問い合わせフォームのようなメール送信画面にメールヘッダーインジェクションに対する脆弱性があると、迷惑メールの送信に悪用されてしまう可能性があります。 言葉で説明するよりも試した方が理解しやすいと思いますので、実際にメールヘッダーインジェクションの脆弱性を攻撃してみましょう。 メールヘッダーインジェクションの攻撃をするには、メールを送信するためのSMTPサーバーが必要です。GoogleなどのSMTPサーバーを利用しても構いませんが、今回はF
概要 以前紹介したバグだらけのWebアプリケーション「EasyBuggy」のDjango 2.0ベースのクローンをつくってみました(「EasyBuggy Django」)。 以下のコマンドでダウンロードから起動までできます。 $ git clone https://github.com/k-tamura/easybuggy4django.git $ cd easybuggy4django/ $ pip install -r requirements.txt $ python manage.py runserver
概要 Keycloakアドベンドカレンダー3日目は、Spring BootベースのWebアプリケーションの認証をKeycloakに委譲する手順について説明します。KeycloakにはSpring Boot用のアダプターがあり、簡単にSpring BootベースのWebアプリケーションをセキュリティ保護できます。これにより、最新の認証プロトコルである「OpenID Connect」(以下OIDC)に対応したセキュアなSpring Bootアプリケーションとなります。 連携ができると、ユーザーはOIDCの「End User」に、Spring BootベースのWebアプリケーションはOIDCの「Relying Party」に、KeycloakはOIDCの「OpenID Provider」になります。 はじめる前に このチュートリアルの操作をはじめる前に、Keycloakのセットアップを完了し、管
概要 システム構成図などを作成しようとすると、ユーザーやサーバーの図形を使うことになりますが、ライセンスを気にせずに、タダで使えて、見た目がそれなりによくて、統一感があるものは、なかなか見つからないですよね。無いならつくるしかない、ということでつくってみました。 この図をつくっているパーツを含むPowerPointもGitHubに公開したので、ある意味オープンソースです。グループ化を解除すれば、各パーツに分解できます。 昨日から作り始めたので、まだ納得のいくものになっていませんが、これからクオリティを上げていきます。 ちなみにWindows 10のPowerPoint2013でつくっているので、LibreOfficeなどでは正常に表示されません。最初からMacかUbuntuで作図した方がもう少しマシなデザインになったと思いますが、職場はWindowsという人が多いと思うので、PowerPo
起動したら、http://localhost:8080にアクセスして下さい。以下のような画面の真ん中に「脆弱性」と書かれたセクションがあります。 この中の上から10番目に「オープンリダイレクト可能なログイン画面」のリンクがあります。クリックすると、次のような画面が表示されます。 ユーザーIDに「admin」、パスワードに「password」を入力し、ログインボタンをクリックすると、次のような画面が表示されます。 これだけの機能ですが、オープンリダイレクトの脆弱性があります。注目するのはURLです。最初にアクセスしたログイン画面のURLはhttp://localhost:8080/openredirect/login?goto=/uid/serverinfo.jspで、ログイン後のURLはhttp://localhost:8080/uid/serverinfo.jspとなっています。goto
脆弱性診断ツール「OWASP ZAP」は、脆弱性だらけのWebアプリケーション「EasyBuggy」の脆弱性をどの程度検出できるでしょうか? 今回は次の基本的な機能で検証してみました。 簡易スキャン:WebアプリケーションのルートのURLを入力すると、OWASP ZAPがその配下をクロールして脆弱性があるか診断する。 静的スキャン:ブラウザ上でWebアプリケーションの基本的な機能を一通り手作業で動かすと、OWASP ZAPがレスポンスの内容などを検査する。 動的スキャン:静的スキャンで行った操作を、OWASP ZAPがリクエストパラメータを変えるなどして再実行し、診断する。 なお、検証で行った作業内容もこのページ載せていますので、OWASP ZAPを試してみたい方は参考にしてみて下さい。 はじめに OWASP ZAPとは その前にOWASP ZAPについて簡単に説明しておきます。「OWAS
皆さんは「リーダブルコード」という本を読んだことがありますか?変数名の付け方やコメントの書き方など読みやすいコードを書くコツがたくさん紹介されていて、プログラマーであれば一読しておきたい一冊です。この本に書かれていることを意識すれば、読みやすいコードを書けるようになるでしょう。 しかし、読みやすいコードであれば良いコードかというと、そうではないと思います。読みやすいだけでなく、デバッグしやすい、解析しやすいことも重要です(「リーダブル」だけでなく、「デバッガブル」、「アナライザブル」)。エンハンスや障害対応の時にできるだけ早くコードを理解し、正しく修正するには、あらかじめそのような観点でコードを書いた方がいいと考えます。 仕事柄、様々なOSSのソースコードを読み、解析しているのですが、見た目は確かに美しく無駄が無いコードであっても、デバッグしづらい、解析しづらいと感じるコードは多々あります
静的コード解析ツールはバグや脆弱性をどの程度検出できるのでしょうか? 前回、FindBugsでバグだらけのWebアプリケーションを解析してみましたが、今回はSonarQubeで解析してみました。 検証内容 バグだらけのWebアプリケーション(EasyBuggy 1.3.3)が、現在実装済みのバグや脆弱性は以下の80種類です。 障害 デッドロック (Java) デッドロック (SQL) 完了しないプロセスの待機 無限ループ メモリリーク (Javaヒープ領域) メモリリーク (Permanent領域) メモリリーク (Cヒープ領域) ネットワークソケットリーク データベースコネクションリーク ファイルディスクリプタリーク スレッドリーク 文字化け 整数オーバーフロー 丸め誤差 打ち切り誤差 情報落ち 脆弱性 XSS (クロスサイトスクリプティング) SQLインジェクション LDAPインジェク
はじめに 脆弱性を理解するには、実際に脆弱性を攻撃してみるのが一番です。 といっても、脆弱性のありそうなサイトを見つけて攻撃してみよう!と言っているわけではありません。自分だけが使っている仮想マシンの上で、脆弱性のあるアプリケーションを動かし、攻撃してみることをお勧めします。 脆弱性は、以前紹介したバグだらけのWebアプリケーションにたくさん実装してあります。Webアプリケーションはここからダウンロードして、次のコマンドで起動します。 ※実行するにはJavaが必要です。詳細については、こちらのページを参照して下さい。 このWebアプリケーションは、現時点で以下の脆弱性を実装しています。 XSS (クロスサイトスクリプティング) SQLインジェクション LDAPインジェクション コードインジェクション OSコマンドインジェクション メールヘッダーインジェクション Nullバイトインジェクショ
概要 メモリリークやデッドロックなどの問題を解析する方法はインターネットにたくさん公開されています。しかし、解析の対象となる問題自体は、いつ、どのようなものが目の前に現れるか分からないので、実際に問題に直面するまでに、体系的に解析の方法を習得し、実践しておくのはなかなか難しいことではないかと思います。 そこで、実践形式で学習ができるように、問題を意図的に再現可能なバグだらけのWebアプリケーションを開発し、Qiitaにもそれに関する情報を公開してみました。このWebアプリケーションは、コマンド1つでビルドや起動ができるとても手軽なものなので、実験や教育の目的でも活用できると思います。 このWebアプリケーションを使って、これからいろいろな問題(バグ)とそれを解析する方法を少しずつ紹介していきたいと思います。 ということで、第1回目に紹介するバグは、Javaのスレッドのデッドロックです。 デ
メモリリーク、デッドロック、リダイレクトループ、JVMクラッシュ...バグだらけのWebアプリケーションを使ってバグを理解するJavaバグ脆弱性トラブルシューティングjconsole 概要 Webアプリケーションの開発や保守をしていると、いろいろなバグに遭遇します。メモリリーク、デッドロック、リダイレクトループ、JVMクラッシュ等々、バグは様々です。こういったバグは、実際にコードを書いて、実行・再現させてツールで解析してみると理解が深まります。 ということで、いろいろなバグを実装したWebアプリケーションをつくってみました。現時点では、以下を簡単に再現できます。 メモリリーク (Javaヒープ領域) メモリリーク (Permanent領域) メモリリーク (Cヒープ領域) デッドロック (Java) デッドロック (SQL) 完了しないプロセスの待機 無限ループ リダイレクトループ JVM
次のページ
このページを最初にブックマークしてみませんか?
『qiita.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く