基本情報技術者、応用情報技術者、Java、IT活用

現役システムエンジニアによる基本情報処理者や応用情報処理技術者の資格への用語説明、Java、様々なITのお勉強をしたい方へ

Bufferd Image PDFの読み込み、画像の回転、トリム、切り取り方

PDFからBufferd Imageを使って画像を切る方法を紹介します

 

 

//pdfファイルを読み込みます

 

File pdfDirFile= new File(pdfdir);
File[] files= pdfDirFile.listFiles();

 

PDDocument document = PDDocument.load(files[i]);
 PDFRenderer pdfRenderer = new PDFRenderer(document);
 
 
//ページの数だけループする
        for (int page = 0; page < document.getNumberOfPages(); ++page) {
            BufferedImage image = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
 
 // 画像の幅と高さを取得
               int width = image.getWidth();
               int height = image.getHeight();
 
 
 //縦であれば横に回転する
         if(width<height) {
 
             //左回転
              image = rotateImageLeft(image);
           //右回転
        //  image = rotateImageRight(image);
 
 
  //回転した場合は縦横のサイズが変わるのでトリムする際には取得し直しが必要です             width = image.getWidth();
                         height = image.getHeight();
     }
 
 //画像のトリム
     //引数は左上のx座標、左上のy座標、右下のx座標、右下のy座標になります。
 //右下を切りたいときはこうです
  image  = image.getSubimage(x, y, 800,1000);
 
 //左上を切りたいときはこうです
  image  = image.getSubimage(800,1000, width,height);
 
 
  //最後に保存
          File file= new File(filepath);
           ImageIO.write(image, "jpg", file);
 
}
 
 
簡単ですね!ぜひやってみてください
 
 
 
 
 
 
 

応用情報技術者試験 合格しました!+時間配分、問題の選び方+合格のコツ

こんにちは!えるです。

 

令和5年4月の応用情報技術者試験を受けたところ、無事合格しました。

 

午前はひたすら過去問をやり、間違えたところ、わからない単語をExcelなどの表形式でまとめていくのが良いです。例えばプログラムの性質について、再入可能、再利用可能、再帰可能、再配置可能などの似た用語とその意味を並べて記載していきます。

また、応用技術者過去問道場というサイトで無料で午前の過去問ができますので電車の中で気軽に1、2問ずつ解けます。

だいたい6〜8割以上は過去問から出るのでしっかりと覚えれば合格点を超えます。

 

次は午後です。

 

午後で受けた科目と自己採点です。

1.セキュリティ 16点

5.ネットワーク 14~16点

6.データベース 18~20点

7.組み込みシステム 8~10点

8.情報システム開発 12~14点

 

で、結果は70点でした。

 

受験番号の書き忘れが無いかと心配だったのですが、問題ありませんでした。後で心配しないよう、受験番号と選択項目の〇の付け忘れが無いかを2,3分くらいかけてしっかりと確認した方が良いと思います。

まさかの教室に時計が無くて体内時計に頼る事になったので、腕時計も持参しましょう。監視員の人は腕時計をつけてましたが、残り40分?くらいの時に今の時間を聞いても教えてくれませんでした。

開始後30分経過時に退室可能の旨と、終了10分前に退室不可の旨を言うのでそれを聞いてくれとの事でした。

急に10分前を伝えられたとしても問題文長いし絶対終わらんやんけと思いました。焦ると何も思い浮かばなくなるので注意です。なのでペースを上げました。

 

1つの選択項目に配点20点で5つ合計100点、

合格が60点なので1つの選択項目につき、12点が必要です。

 

選択項目についてですが、2時間半で5問なので、1つ30分以内のペースで解く必要があります。なので、1つの問題に45分~50分かかかってしまった場合は他の問題を15分で終わらすなど、調整が必要だと思います。

その場合は45分~50分かかった問題は16~20点を取るのが理想、15分で解いた問題は妥協して最低8点だけ取るなどで帳尻を合わす必要があります。

全体の時間が無くなるので1つの問題に1時間はかけない方が良いと思います。

 

 

最悪文章問題を完全に捨てても選択問題と文字の記入問題だけちゃんと取れれば14点くらいとれると思います。

 

セキュリティはまあまあでした。サイバーキルチェーンの問題が出てきました。選択問題も解け、文章問題も過去問と類似。ウィルスに侵されたPCや外部媒体はネットワークと切り離す。これは高頻度で出題されます。 

 

プログラミングは他全て解ける問題が無いときだけ選択しようと思っていましたが、軽く問題を読んで見るからに難しかったんでスルーしました。プログラミングを選択した人の感想を見ても、時間がかかるという意見が多く、1か所がわからないと先もわからない事が多い、少しの勘違いで全てが狂うので、よっぽどプログラミングに自信が無い限りは選ばない方がよいと思います。

 

経営戦略も学んだ事があったので、解ける選択項目が無いときだけ選択しようと思っていましたので、一旦飛ばしました。選択式問題の解答群を見て知らない単語があったら無理に挑戦しないのが良いと思います。経営戦略は文章問題が3つくらい出てきますので、まずは選択問題で知っている単語ばかりで確実に点を取れると思ったら選ぶのがいいと思います。あと経営戦略は、SWOT分析、プロダクトポートフォリオバリューチェーン、ファイブフォース分析、競争地位戦略、3C分析の辺りから使いまわしで出題されるのですが、得意な分野を決めておいて、これが出たらやろう!と決めておくといいと思います。

 

ネットワークはDNSの問題でしたが問題文に答えが記載されている事が多かったので知識よりもネットワークの流れや運用の経験を求められている感じでした。文章問題は閃かなかったですが、後から考えれば焦らなければ解けば稼げる感じでした。

 

データベースはSQLがわかれば比較的簡単だったと思います。いつもの→を書く問題、これは主キーがあるテーブル→外部キーのあるテーブル を意識したら解けますね。

次にSQLの記載ですが、最後に簡単にコツを紹介します。

 

組み込みシステムは結構難しかったです。問題文から文字を書き写す簡単なところだけ書いて着実に8点ほど稼ぎました。稼げるところで稼いで苦手な分野で0点をとらない。なんとか問題文からヒントを探して最低8点以上を目指す。 が大事ですね。という事で計算問題や考えても時間ばかりかかり答えがでなそうな文章問題はスルーしました。

 

最後のシステム開発はバージョン管理ツールの問題、GITやSVNを使っていればなんとなく頭に入りますので、問題文もかなり頭に入り、プログラミングと同じ配点とは思えないくらい解けました。

あとIPAって、レグレッションテスト好きですよね。リリース済みのプログラムを追加修正したらレグレッションテスト。これも過去問で多用されてました。

 

ここから簡単にデータベースの解き方に入ります。

 

 

ソフトウェア開発技術者を取得した時は、地獄の午後Ⅱもあったので、それに比べれば午後だけの応用情報技術者試験は優しいですね。その時もデータベースで戦いました。あの頃は午後Ⅱでプログラミングが出題される事があり、それも地獄でしたね。

 

こちらが今回の応用情報技術者試験の午後のデータベース問題、SQL問題ページです。長い問題文は軽く読んで問題文へ進んでも解けるくらいでした。

eは条件が入りますが、  前後を見て期間を指定するのだろうとわかります。その後にANDの後に項目名だけでしたので BETWEENしか入らないですね。

 

fも条件が入ります。わざわざ役職テーブルを結合している事、問題文から職務区分を一般職で絞ると判断し、職務区分の指定を入れました。B.職務区分='02' と、テーブル名の 修飾子は絶対につけておく、問題文でわざわざ'02'と書かれていた事から、文字の比較はシングルクォートで囲むは意識しておいた方が良いです。

 

g はSELECTに集計関数 SUMがあるのでGROUP BY です。SELECTにある集計関数以外の列名を入れるだけでOKです。

 

h はINSERT INTOの後なので表名です。問題文から表名を探すだけ。

 

i はINSERTするカラム名が対象従業員数なのがヒントで、これでレコード数が取りたいのだと思いました。  countを使いました。

 

c はテーブルを結合しているのでUNIONかと思いましたが、ONがついているのでINNER JOINかLEFT OUTER JOINかRIGHT OUTER JOINと判断、両方のテーブルには必ずレコードが存在すると思い、INNER JOINとしました。

 

d もONがついているのでINNER JOINかLEFT OUTER JOINかRIGHT OUTER JOINですが、COALESCEで結合先の表がNULLになる事がある事がわかります。

INNER JOINは両方のテーブルのONに指定したカラムの値が一致するものだけ結合するので、NULLになる事はなく、結合先だけNULLになるパターンでLEFT OUTER JOINと判断しました。

省略してLEFT JOIN と書いてしまいましたが、IPAの試験はLEFT OUTER JOIN と書く事が多く、どこで減点されるかわからないので、これも過去の慣習に習って書いた方が良いと思います。

 

このようにデータベース問題は自信をもって回答しやすいかと思いますので、SQLと使い方さえ覚えればチャンス問題だと思います。

 

皆さんもぜひトライしてみてください!

 

 

AWSの用語まとめ2 S3ストレージクラスや用語について

こんにちは!AWSソリューションアーキテクトアソシエイトSAA-C03に合格しました!

難しい問題がありましたが、ping -t さんのWEB問題、Udemyさんの模擬試験とほぼ同じ問題が少しだけ出てきてくれました。

実際に問題を解く事でわからない部分に発見できたり、具体的な使い方が認識できたりします。

 

S3のストレージクラスについてはチャンス問題なので確実に抑えておきたいところです。纏めましたので覚えておいて頂ければと思います。

 

s3は低頻度のクラス、単一AZのクラスの方が安いです。なので要件を満たすものの中で、最も安いものを選択する必要があります。

 

IAとついているものは INFREQUENT ACCESS といい、低頻度だけど取り出したい時はすぐに取り出したいものです。WEBサイトの昔のデータの画像とかは殆ど見られないけど、すぐに見れないといけないので、IAになります。

 

普段は滅多に使わないし、調査が必要な時とかに取り出したい、取り出しに時間がかかっても良い古いログとかはGlacier に入れる事になります。Glacierは取り出しをどのくらいで行いたいかによって変わります。取り出し方によっても料金が変わります。

 

データが消えても良い場合はonezoneに置きます。特に重要でなく、消えても問題が無いと言われたらonezone を選んでおけば大丈夫です。

 

ライフサイクルポリシーにて、何日たったらここのストレージクラスに移動する。削除するという事も可能です。

 

ストレージクラス 頻度 取り出し速度 可用性
S3 Standard 高頻度 即時取り出し 複数AZ
S3 Standard IA 低頻度 即時取り出し 複数AZ
S3 onezone IA 低頻度 即時取り出し 単一AZ
Glacier Instant Retrieval 低頻度 即時取り出し 複数AZ
S3 Glacier Flexible Retrieval(迅速取り出し) 低頻度 1~5分 複数AZ
S3 Glacier Flexible Retrieval(標準取り出し) 超低頻度 3~5時間 複数AZ
S3 Glacier Flexible Retrieval(大容量取り出し) 超低頻度 5~12時間 複数AZ
S3 Glacier Deep Archive(標準取り出し) 超低頻度 12 時間以内 複数AZ
S3 Glacier Deep Archive(大容量取り出し)

超低頻度

48 時間以内 複数AZ

 

Intelligent-Tieringは自動でどのストレージクラスに置くかを切り替えてくれるものです。「アクセス頻度が予測不可」というフレーズがあれば、それを選択すれば正解となります。

 

削除や上書きをされたくない場合はオブジェクトロックを使います。

Glacierの場合はボールトロック と名称が変わるので注意です。

 

オブジェクトロックには2種類のリテンションモード(リテンションは維持・保持という意味)があります。これは試験に実際に出たので覚えておいた方が良いと思います。

いつまで上書き、削除不可なのかを日数または年で指定できます。

 

ガバナンスモード

→必要な一部のユーザーにのみ上書き、削除可能、それ以外のユーザーは上書き削除不可。

 

コーポレートモード

→rootユーザーを含めて全員上書き、削除不可。

 

 

また、外部からアクセスすることを許可するかどうかについては、

パブリックアクセスをブロック にチェックを外すか、つけるかで制御します。

 

外部のAWSアカウントを持っていないユーザーに一時的なアクセス権限を与える場合は

・署名付きURL

または

・署名付きcookie

を使います。署名付きURLはURLが変わってもいい場合、変わってほしくない場合は署名付きcookieを使います。

 

そしてクロス〇〇という似たようなシリーズがあります。

クロスリージョンレプリケーション

→オブジェクトを別リージョンでも保管し、使いたい場合(別リージョンに保管)

 

クロスアカウントアクセス

→別アカウントでもアクセスできるようにしたい時。(自社の別アカウント、他社のアカウント等)

 

クロスオリジンリソースシェアリング

→他のドメインに共有する。(ドメインという言葉があればこれ)

 

静的webホスティング機能

静的なファイルをcroud frontから参照する静的webホスティング機能というものもあります。静的というのは静止画という意味ではなく、静止画も動画も含め、アクセスするユーザーやタイミングが変わっても毎回同じデータを返すものです。

ユーザーや検索結果によって返す値が変わる場合は動的と言い、静的webホスティング機能が使えません。

 

 

如何でしたでしょうか?

何か補足、アドバイス、等ありましたらお気軽にコメント、ご連絡くださいませ。

 

 

 

jQueryでdata属性を使いこなす!

jQueryにdata属性というものがあります。

 <input type="hidden" id="datatest" value="1" data-Name="田中 太郎"    >

↑のdata-Name の部分です。 

 

data属性はdata-の後に、好きな名前で好きなデータを保持しておく事ができ、これは使いこなすととても便利です!いつか忘れそうなので使い方を記録しておきます。

data属性は好きな名前を付ける事ができます。

 

 <input type="hidden" id="datatest" value="1" data-Name="田中 太郎"    >

↑のオブジェクトから、Nameを取得したいときはこう指定します

var name=   $("#datatest").attr("data-Name"); ←よく使う

var name=  $("#datatest").data("Name"") ←こんな書き方もあるらしい

 

valueだけではなく、他のパラメーターもセットできるなんて、便利ですね!

 

とある表のとある行から複数のパラメーターをとってきたいときには、dataクラスがとても便利です!           選択ボタンの中にdata属性を入れておけば、選択を押した時に、生徒番号、名前、学年、組、出席番号をまとめてとってくることもできちゃうんですね!                                                                                                                                                                                                                                                         

生徒一覧
生徒番号 名前   学年   出席番号
1000 田中 太郎  1  1    15                                                        
1001 鈴木 武  1  2   5
500 伊東 一郎  2  1   2                                                        

 

書き方はこんな感じ。 生徒番号500の選択ボタン

<input type="button" value="選択" id="sentaku_button_500" onclick="sentaku(500)" data-seitobango="500" data-Name="伊藤一郎" data-gakunen="2" data-kumi="1" data-bango="2">

 

funtion sentaku(No){

  var name=   $("#sentaku_button"+No).attr("data-Name");

  var seitobango=   $("#sentaku_button"+No).attr("data-seitobango");

 var gakunen=   $("#sentaku_button"+No).attr("data-gakunen");

 var kumi=   $("#sentaku_button"+No).attr("data-kumi");

}

 

 

 

如何でしたか?とても便利ですね!data属性をぜひ使ってみてください!

AWSの用語まとめ1 ソリューションアーキテクト、クラウドプラクティショナー試験対策

管理人は今、AWSソリューションアーキテクトの勉強をしております。(クラウドラクティショナー試験は昨年度取得しました。)勉強しまくったため、色々纏めていきたいと思います。

 

 

クラウドコンピューティング

インターネット上の物理的に見えないコンピューターを利用すること

 

・仮想化技術

物理的なコンポーネントを複数の論理的なコンポーネントに分割して利用する事

 

インスタンス

仮想化技術によって利用者で共有される論理的な仮想サーバー

 

ハイブリッドクラウド

オンプレミスとクラウドを両方組み合わせてクラウド技術を利用する

 

リージョン

独立し、地理的に離れたクラウドの領域

 

アベイラビリティゾーン

リージョン内の物理的に別個の独立した場所にあるインフラストラクチャ

 

エッジロケーション

ユーザーに近い場所で動作させるデータセンター

コンテンツ配信をするCloud Front AWS Shieldなど

 

エラスティック

弾力性、増やしたり減らしたり調整可能なこと

 

プロビジョニング

コンピュータリソースの割り当て、設定などを行い、利用、運用をできるように準備しておくこと

 

ディザスタリカバリー(DR)対策

障害対策の事

①バックアップ&リストア ←バックアップしておいたダンプファイルを別の場所に保存しておき、いざというときにそれを使ってリストアして復旧する

パイロットライト←普段は止めておいた復旧用システムを起動する

③ウォームスタンバイ←データベースのレプリケーションをしておき、切り替える。

④マルチサイト←常に別の場所で同じシステムを起動しておく。

 

ワークロード

ソフトウェアシステムの集まり

 

デプロイ

開発したソフトウェアをテスト環境や本番環境に展開してシステムが動くようにする

 

利用形態

IaaS(Infrastructure as a Service)(EC2 EBS VPC)←アプリケーション、DB、OSを利用者が管理、それ以外をクラウド

 

PaaS(Platform as a Service)(RDS、S3等)←アプリケーションを利用者が管理、ミドルウェアクラウドが管理

 

SaaS(Software as a Servie)(Amazon SES等) ← 利用者はソフトウェアを使うだけ。ミドルウェア、ソフトウェアまでをクラウド事業者が管理が管理

 

グローバルリーチ

エッジロケーションなどで利用者の近くで業務展開を行う

 

本やネットで勉強したことを自分なりに解釈して纏めていっています。

時間がかかるため、今日は一旦ここまでにしますね。

また掲載していきますね。見て頂き、ありがとうございました。

 

 

広告

ウェルノウンポート一覧

ウェルノウンポートはTCP/IPで使用する主要なプロトコルです。

0番から1023番までの予約されているポート番号です。

 

ポート番号は、独自で作成したプログラムで使うものは好きなポート番号を指定することができます。ポート番号は0番から65535番までとなっていますので、ウェルノウンポート以外で空いている番号帯を使うのがよいと思います。

 

主なプロトコルを纏めてみました。

 

ウェルノウンポートとプロトコル一覧

プロトコル TCP/UDP ポート番号 用途
FTP(データ用) TCP 20 ファイルを送受信する。データ用はFTPで実際のデータ送受信に使う
FTP(制御用) TCP 21 ファイルを送受信する。制御用はFTPで最初にコネクションを張るときに使う
TELNET TCP 23 テキストベースで遠隔操作するためのプロトコル。にいさん(23)に電話と覚える。
SMTP TCP 25 平文でメールを送るプロトコル。2個(25)メールを送ると覚える。
WHO IS TCP 43 ドメイン情報を表示する
DNS TCP 53 ドメイン名からIPアドレスを問い合わせたり、聞かれた時に答えたりする。
HTTP TCP 80 Webのページを見るときに使う。WebサーバとWebクライアントの間でデータの送受信をする
POP3 TCP 110 電子メールを受信する
NNTP TCP 119 ネットワーク上で記事の投稿や配信、閲覧を行う。
IMAP TCP 143 電子メールを保管しているサーバーから取得する
NTP UDP 123 ネットワークを通して現在時刻をやりとりするプロトコル
SYSLOG UDP 514 他のコンピュータ―に時系列のログを送る
FTPS TCP 990 FTPと同じだけどSSLTLSで暗号化する

 

一応有名なものを集めましたが、如何でしたか?

覚えておくといざという時に役に立ちます。

また追加していきたいと思いますので、チェックしておいてくださいね♪

 

 

広告

SQLの基本 SELECT FROM WHERE ORDER BY について

SQLについて説明していきます。

覚えてしまったらそこまで難しくないのでしっかりと覚えておきましょう。

 

まずは下記2つのテーブルがあります。

主キーは1レコードを特定するための他のレコードと被らない情報です。

NULLも許可しません。

 

JUGYOIN (従業員テーブル)

制約 カラム名 カラム名説明
PK(主キー) JUGYOIN_ID VARCHAR(8) 従業員ID
  JUGYOIN_NAME VARCHAR(30) 従業員名
  BUSHO_CD VARCHAR(5) 所属部署コード

 

データ

JUGYOIN_ID JUGYOIN_NAME BUSHO_CD
0001 田中 5000
0002 鈴木 5000
0003 佐藤 4000

 

 

ではまずはこのテーブルからデータを抜き出してみます

 

SELECT句には抜き出したいカラムを指定します。

FROM句には取り出したいテーブル名を指定します。

 

従業員テーブルから従業員ID従業員名を取得したい時は

 

SELECT  JUGYOIN_ID,JUGYOIN_NAME

FROM JUGYOIN 

 

条件を指定したい時はWHERE 句を付けます。部署コードが5000の従業員を取得する。

型がCHARやVARCHARといった文字列型の場合は必ずシングルクォートでくくります。(INTEGER等の数値の場合は不要です。)

 

SELECT  JUGYOIN_ID,JUGYOIN_NAME

FROM JUGYOIN 

WHERE BUSHO_CD='5000'

 

結果

JUGYOIN_ID JUGYOIN_NAME BUSHO_CD
0001 田中 5000
0002 鈴木 5000

 

あいまい検索をしたい場合はLIKEを使います

SELECT  JUGYOIN_ID,JUGYOIN_NAME

FROM JUGYOIN 

WHERE JUGYOIN_NAME LIKE '%藤%'

 

結果

JUGYOIN_ID JUGYOIN_NAME BUSHO_CD
0003 佐藤 4000

 

INを使うと複数条件を指定して検索できます。

OR やAND 検索もできます。

部署コードが4000か5000 且つ 従業員IDが0001又は0003のもの

SELECT  JUGYOIN_ID,JUGYOIN_NAME

FROM JUGYOIN 

WHERE BUSHO_CD IN ('4000','5000')

AND (JUGYOIN_ID='0001' OR  JUGYOIN_ID='0003') 

 

結果

JUGYOIN_ID JUGYOIN_NAME BUSHO_CD
0001 田中 5000
0003 佐藤 4000

 

 

最後に、昇順にする場合は ORDER BY を付けます。

 

昇順は ASC 降順はDESC です。

今回は従業員IDの降順に指定してみます。

SELECT  JUGYOIN_ID,JUGYOIN_NAME

FROM JUGYOIN 

WHERE BUSHO_CD IN ('4000','5000')

ORDER BY  JUGYOIN_ID DESC

 

纏めると

SELECT カラム名(カンマ区切りで複数)

FROM テーブル名

WHERE 条件(IN AND OR を使う)

ORDER BY (ASC 昇順 DESC降順)

 

如何でしたか?まずはSQLの基本でした。また応用編も掲載していきたいと思います。

今後ともよろしくお願いします。

 

広告