PostgreSQLの使い方

データベース知識の復習ついでにPostgreSQLに触っています。基礎知識と基本操作をメモしておきます。なお、操作説明に焦点を当てているため、正規化などの前提知識については解説を行いません。 PostgreSQLをインストールする CentOSにPostgreSQLのインストールを行います。yumを使用します。 rootユーザーに変更します。 su - PostgreSQLをインストールします。 yum install postgresql-server インストールが終わったら、PostgreSQLが使用するファイル(データベースの本体)を作成します。 postgresql-setup initdb 問題なく初期化が行えたらPostgreSQLサーバを有効にします。 systemctl enable postgresql 最後にPostgreSQLサーバを起動します。 systemctl start postgresql PostgreSQLの基本操作 データベースを操作するにはデータベース操作用に用意されている専用ユーザーpostgresに切り替える必要があります。 postgresユーザーになるには一度rootユーザーに切り替えた後、もう一度suコマンドを使用することで切り替えを行います。

Javaでデータの整列を実装する

基本情報技術者試験に向けてアルゴリズムを勉強しています。今回はデータの整列を代表する5つのアルゴリズムについてまとめます。 標準ライブラリでのソート 自分でソートのアルゴリズムを実装する前に、標準ライブラリで用意されているソートを利用してみましょう。標準ライブラリでは、java.utilパッケージに含まれるArraysクラスを用いて配列のソートを行うことができます。 static void sort(int[] a) 指定された配列を数値の昇順でソート 実際に利用してみましょう。クラスを作成し、以下のプログラムを記述、実行してください。 import java.util.Arrays; public class Sample { public static void main(String[] args) { int[] array

Javaでデータの探索を実装する

基本情報技術者試験に向けて勉強しています。今回はJavaでデータの探索を行う方法についてまとめます。 Arrays.binarySearchによる二分探索 標準ライブラリでは、java.utilパッケージに含まれるArraysクラスを用いることで配列からの探索を行うことができます。 static int binarySearch(int[] a, int key) バイナリサーチアルゴリズム(二分探索法)を使用して、指定されたint値の配列から指定された値を検索します。 動作確認 確認用のクラスを作成し、mainメソッドに以下を記述してください。 public static void main(String[] args) { int[] array = {1, 3, 4, 5,

Javaで二分探索木(木構造)を実装する

基本情報技術者試験に向けてアルゴリズムを勉強しています。今回は木構造(二分探索木)についてまとめます。 木構造とは 木構造は以下のようにデータを格納したデータ構造です。 木構造の用語 上記の図を参照しながら木構造の用語について説明します。 ノード(node、節):⑤などの○で囲まれた数字のことです。 親ノード:②と④から見た③が親ノードです。 子ノード:③から見た②と④が子ノードです。 兄弟ノード:同じ親ノードを持つ②と④が兄弟ノードです。 先祖ノード:②から見た③と⑤が先祖ノードです。 子孫ノード:③から見た②と④と①

Javaでハッシュテーブルを実装する

基本情報技術者試験に向けてアルゴリズムを勉強しています。今回はハッシュテーブルについてまとめます。 ハッシュテーブルとは ハッシュテーブルはキーと値の組を記録したテーブル(表)です。以下のような表を想像してください。 Index キー 値 0 1 456 def 2 3 123 abc 4 789 ghi ハッシュテーブルはキーに対する値の格納位置(Index)を工夫することにより、高速に検索が行えるようになっています。キー「123」であれば、Index3にあるとすぐに判断でき、値の取得が行えます。ハッシュテーブルは検索を高速化したい場合に用いられます。 上記の例ではIndex1にキー456、値defが、

Javaでキューを実装する

基本情報技術者試験に向けてアルゴリズムを勉強しています。今回はJavaでキューを実装してみます。 キューとは キューでは最初に格納した要素が最初に取り出されます。このような仕組みをFIFO(First In First Out、先入れ先出し)と言います。 キューにデータを格納することをエンキュー(enqueue)と言います。エンキューしたデータは列の一番後ろに追加されます。 キューからデータを取り出すことをデキュー(dequeue)と言います。データを取り出す際には先頭から取り出されます。 実装する 今回はjava.utilパッケージのArrayDequeクラスを参考にして実装します。 まずは、キューのデータ構造を作ります。以下の内容を記述したQueueクラスを作成しましょう。 public class Queue { private Object[] data; private int

Javaでスタックを実装する

基本情報技術者試験に向けて、アルゴリズムを勉強しています。今回はスタックとキューをJavaで実装してみました。 スタックとは スタックでは最後に格納した要素が最初に取り出されます。このような仕組みをLIFO(Last In First Out、後入れ先出し)と言います。 まずは以下の用語について確認してください。 プッシュ(push):スタックにデータを積むこと ポップ(pop):スタックからデータを取り出すこと スタックにプッシュが行われることにより、データが積まれていきます。その際、「ひとつ前にプッシュしたデータ」は「今プッシュしたデータ」の下に置かれます。 スタックからポップを行うと、スタックの一番上にあるデータが取り出されます。一番上にあるデータ以外は取り出せません。 実装する 今回はjava.utilパッケージのStackクラスを参考にして実装します。 まずは、

Javaで標準入力

AtCoderの問題をJavaで解いてみようとしたところ、標準入力の使い方が分からなかったので調べました。 標準入力 Javaでは入力を受け取る際にはScannerにSystem.inを渡して使います。また、受け取るデータの型によっていくつかのメソッドを使い分けます。 単語の場合はnext() 整数の場合はnextInt() 文字列(1行)の場合はnextLine() 使用例1 以下は、標準入力から2つの数を与え、2つの数の積(掛け算)した結果が偶数(Even)か奇数(Odd)かを判定するプログラムです。 ABC086 A. Product public class ABC086_A_Product { public static void

Javaでリストを実装する

基本情報記述者試験に向けて、Javaで基本的なアルゴリズムを再勉強しています。この記事ではリストを実装していきながらデータ構造とアルゴリズムについてまとめます。 連結リスト Javaのリストといえば、ArrayListが有名ですが、今回はリストとしてのシンプルな機能を持つLinkedListクラスを参考にして実装してみます。 連結リストは、ノード(オブジェクト)を連結させることでリストとしての機能を提供します。 ノードは以下の2つのフィールドを持ちます。 データフィールド:データそのものを持ちます。 リンクフィールド:次のノードへの参照を持ちます。 また、リストの先頭にノードを追加するためには、ノードの先頭を管理するためのフィールドが必要です。 実際にコードを書くと以下のようになります。 class SNode { Object data; SNode next; } public class SLinkedList { private SNode first; public

Ghostを1.21から2.16へアップデートする

当ブログではブログシステムにGhostを使用しています。今回はghost1.21から2.16.4へアップデートしてみました。OSはUbuntuです。 アップデート前の準備として、記事のバックアップは取っておきましょう。 アップデート 初めに、Nodeをアップデートします。apt-getを使用します。 # パッケージ取得 $apt-get update # アップデート適用 $apt-get upgrade 続いて、ghost-cliのバージョンが古いとアップデートできないので、ghost-cliをアップデートします。 $npm update -g ghost-cli@latest ghost-cliがyarnを使うようになったので、yarnをインストールします。 $curl -sS https://dl.yarnpkg.

LANの仕組み

ネットワークのLANについて勉強したのでメモしておきます。画像を作るのが面倒だったので参考にさせていただいた各サイト様から引用させていただきました。 LANとWAN ネットワークは大きくLANとWANの2つに大別されています。 LAN Local Area Network(ローカル・エリア・ネットワーク)とは、広くても一施設内程度の規模で用いられるコンピュータネットワークのことです。その頭文字をつづったLANと書かれる場合も多く、一般家庭、企業のオフィスや研究所、工場等で広く使用されています。LANでは、イーサネットという技術規格によって通信を実現しています。 WAN Wide Area Network(ワイド・エリア・ネットワーク)は、LANと比較して広い範囲(市街地を越え郊外、県外や国際の範囲)におよぶネットワークのことです。広義には、非常に広大な面的広がりを持つインターネットとほぼ同義の言葉として使われます。

Javaの例外処理におけるthrowとthrowsの違い

例外処理はあまり触る機会が無く、throwとthrowsの違いを知らなかったのでメモしておきます。 throw throwは一番単純な例外処理の方法です。以下の例を見てください。 package jp.doghouse.java.test; class SampleException extends Exception { } public class ThrowSample { public static void main(String[] args) { ThrowsA a = new ThrowsA(); try { SampleException e = new SampleException(); throw

WANの仕組み

ネットワークのWANについて勉強したのでメモしておきます。画像を作るのが面倒だったので参考にさせていただいた各サイト様から引用させていただきました。 LANとWAN ネットワークは大きくLANとWANの2つに大別されています。 LAN Local Area Network(ローカル・エリア・ネットワーク)とは、広くても一施設内程度の規模で用いられるコンピュータネットワークのことです。その頭文字をつづったLANと書かれる場合も多く、一般家庭、企業のオフィスや研究所、工場等で広く使用されています。 WAN Wide Area Network(ワイド・エリア・ネットワーク)は、LANと比較して広い範囲(市街地を越え郊外、県外や国際の範囲)におよぶネットワークのことです。広義には、非常に広大な面的広がりを持つインターネットとほぼ同義の言葉として使われます。一方、狭義には、

Photoshopのフィルター機能について

Photoshopのフィルター機能についての自分用メモです。 フィルター機能とは フィルターとは画像の変形や色調の変化などいろいろな特殊効果を加えることができる機能です。メニューバーの「フィルター」から各種フィルターを選択することで使用することができます。よく使うフィルターとしては「ぼかし」や「シャープ」などがあります。 また、選択範囲を作ることで、その範囲にのみフィルターを適用することもできます。 ぼかし系 ぼかし系のフィルターでは、画像にぼかしをかけてぼやけた感じにすることができます。「ぼかし(ガウス)」と「ぼかし(放射状)」の使用頻度が高いので、今回はこの2つについて説明します。上記とは別に「ぼかし」というフィルターもあるのですが、こちらはぼかしに強弱を付けることができないため、非常に限られた用途でのみ使用されます。このぼかしは、画像をJPEGで保存するときに、データサイズを小さくできる効果と、画像のノイズを除去してくれる2つの効果があります。

Photoshopによる写真の色調補正

Photoshopの写真の明るさやコントラストを変えたり、写真の色味を整える機能についての自分用メモです。 ※本記事の一部の画像はアドビ システムズ 株式会社のhelpページから引用させていただきました。 色調補正を行う意味 例えば、時間帯や天候、照明などのさまざまな条件により、思い描いていたような写真が撮影できないことがあります。 あるいは、1枚のポスターに複数の写真を貼り付けて作成する際に、それぞれの写真の明るさや色合いがバラバラだった場合、統一感のないポスターに仕上がってしまいます。 色調補正を行うことで、写真の明るさや色合いを整えて、思い通りの仕上がりにすることができます。 色の仕組み 色は「色相」「彩度」「明度」の3つの要素から作られています。これらの要素を知っておくことで色調補正で頻出する言葉の意味が分かるようになります。 色の三要素 説明 色相 色合いを指します。赤、青、緑といった私たちがイメージする「色」に最も近い要素です。

Photoshopによる写真の修正と修復

Photoshopの人物写真をより綺麗に見せるためにシミやホクロを消したり、風景写真に写り込んだ人や電線などを最初から何も無かったかのように綺麗に消して周囲の色と馴染ませるなどの修正を行うことができるツールについての自分用メモです。 基本的な修正と修復ツールの使い方 修正や修復をするための基本的なツールの使い方を表にまとめました。 ツール名(操作名) 説明(利用場面) 操作方法 コピースタンプツール ・画像の一部分をサンプルポイントとしてコピーし、他の箇所へペーストして適用することができる。・人物写真からシミやホクロを消したいときや、風景写真から電線などを消したいとき。 ・Altキーを押しながらクリックするとサンプルポイントをコピーする。・ドラッグ(クリック)するとサンプルポイントをペーストする。・「調整あり」のチェックボックスをオンにするとサンプルポイントとドラッグ箇所との距離関係が常に一定を保つ。・コピーソースパネルを使うとサンプルポイントを最大5つまで保存することができる。 パターンスタンプツール ・パターンとして登録した画像をスタンプのように貼り付けて描画することができる。・オブジェクトや背景に一定の模様の繰り返し(パターン)を描画したいとき。 ・メニューバーの「編集」から「パターンを定義...」をクリックすると現在の画像をパターンとして登録する。・コントロールパネルのパターンピッカーから使用したいパターンを選択し、ブラシの直径、

Photoshopの選択範囲作成方法と便利な応用操作

Photoshopには長方形選択ツールや楕円形選択ツールの他にも複雑な形状のオブジェクトを選択するための様々な方法が用意されています。今回は基本的な選択範囲の作成方法と合わせて覚えると便利な応用操作についてまとめます。 基本的な選択範囲の作成方法 選択範囲を作成するための基本的なツールの使い方を表にまとめました。 ツール名(操作名) 操作方法 利用場面 長方形選択ツール ・好きな範囲をドラッグする。・Shiftキーを押しながらドラッグすると正方形になる。・Altキーを押しながらドラッグすると中心を軸にして範囲を作成する。・Spaceキーを押しながらドラッグすると範囲自体を移動することができる。・コントロールパネルのスタイルを「標準」から「固定」に変更するとサイズを指定して選択範囲を作成することができる。 ・四角形の選択範囲を作成したいとき。 楕円形選択ツール ・好きな範囲をドラッグする。・Shiftキーを押しながらドラッグすると正円になる。・Altキーを押しながらドラッグすると中心を軸にして範囲を作成する。・Spaceキーを押しながらドラッグすると範囲自体を移動することができる。・コントロールパネルのスタイルを「標準」から「固定」に変更するとサイズを指定して選択範囲を作成することができる。 ・円形の選択範囲を作成したいとき。 なげなわツール ・好きな範囲をドラッグする。・Altを押しながらクリックを繰り返すことで直線を引く要領で選択範囲を作成する。

ビットマップデータとベクターデータの違い

「ビットマップデータ」と「ベクターデータ」とは、コンピュータのモニター上で表現することができる静止画像データのことです。 ビットマップデータ ベクターデータ 英語 Bitmap Data Vector Data 別名 ラスタデータ(Raster Data) ドローデータ(Draw Data) 利点 ・無圧縮のままファイルを生成するので画質の劣化がない。 ・通常、ビットマップデータよりも容量が小さくなる。・拡大・縮小しても画質が損なわれない。・変形処理が自由自在。 欠点 ・無圧縮につきデータ容量が膨大になる。・拡大・縮小等の編集を行うと画質の劣化が生じる。 ・写真のような複雑な輪郭線や配色を持つ図形には再編処理が追いつかない。 相互変換 ビットマップデータからベクターデータへの変換はできない。

Adobe Illustratorのペンツールで思い通りに曲線を描くコツ

Adobe Illustratorを学習する上で学習者が必ず躓いてしまうのがペンツールによる曲線の描き方です。Illustratorの機能の中でも特に難解な部分ですが、逆にここさえ抑えれば他に躓くポイントは無いかと思います。 まず、曲線を描く方法として「ペンツール」と「曲線ツール」の2つがあります。ペンツールは曲線を描くための基本的なツールで、曲線ツールはペンツールの機能拡張版のような位置付けです。今回はペンツールについて解説します。 ペンツールは、手書き風の自然な曲線を描くのに向いています。逆に、正円やハートマークのような数学的な正しさや綿密な対称性が求められる図形を描くのは得意ではありません。 ※リフレクトツールとパスの連結を駆使することでペンツールでも対称な図形を描くことは可能です。 基本知識 Illustratorの基本知識をつらつらと書きます。何となく目を通しておくとペンツールについて理解が深まると思います。 アンカーポイントとパス Illustratorで描かれるオブジェクト(図形)は、点と線で構成されています。点をアンカーポイント、線をパスと呼びます。 選択ツールとダイレクト選択ツール オブジェクト単位での選択を行う場合は、選択ツールを使用します。アンカーポイントやパスを選択する場合は、ダイレクト選択ツールを使用します。

Excelの基礎知識や機能のメモ

改めてExcelについて勉強したのでよく使いそうな知識や機能をメモしておきます。 3つの編集モード Excelには、「標準」「ページレイアウト」「改ページプレビュー」という3つの編集モードがあります。これらの編集モードは画面の右下(ズームバーの左側)にあるアイコンをクリックすることで切り替えることができます。 標準モード Excelの標準のモードです。データを入力するときはこのモードを使用します。 ページレイアウトモード 印刷イメージを確認しながらヘッダとフッタを編集するモードです。ヘッダとフッタにはタイトルやページ番号を設定することができます。 改ページプレビューモード 印刷範囲を設定することができるモードです。行や列を印刷範囲から除外したり、複数ページで印刷されてしまうシートを1ページにまとめるようなことができます。 ページ設定 上手く印刷を行うには、「ページレイアウトモード」や「改ページプレビューモード」と合わせて、「ページレイアウト」を設定する必要があります。Excelのメニューにある「ページレイアウト」をクリックすると、「ページの余白」、「印刷の向き(

Expressで複数サイトのRSSを取得するプログラムを作る

node.jsのExpressで複数サイトのRSSを取得するプログラムを作ってみる。今回は複数サイトのRSSを非同期で読み込み、全てのRSSの取得が完了したときに画面に出力するという仕様で作成する。 express-generatorでプログラムの雛形を作る まずはexpress-generatorをインストールし、Expressを使用したプログラムの雛形を作る。 npmでexpress-generatorをグローバルインストールする。 npm install express-generator -g プログラムの雛形を作る。今回作成するプログラムのコードではテンプレートエンジンは使用しないので、テンプレートエンジンは何を選択しても良い。今回は適当にejsを選択する。 express --view=ejs myapp 依存関係のモジュールをインストールする。 cd myapp npm install expressを起動する。 DEBUG=myapp:* npm start ブラウザからhttp://localhost:3000/

ヒアドキュメントとテンプレートを使用してソースの可読性を向上させる

PHPのヒアドキュメントとHTMLのテンプレートの使い方を覚えたのでメモ。この2つを上手く使うことでJavascript側でDOMをゴリゴリ生成せずに済みます。 ヒアドキュメントとは ヒアドキュメント(別の呼び方としてヒア文字列、heredocなど)は、文字列リテラルをシェルスクリプトやプログラミング言語の中に埋め込むための1つの方法です。 PHPでのヒアドキュメントの使い方 ヒアドキュメントは以下のような書式で使用することができます。「EOD」の部分はアルファベットの大文字3文字なら何でも使用することができます。EODはEnd Of Documentの略です。 <<< EOD ここに内容 EOD; これができるとechoを何度も書かずに済むという利点があります。 以下のPHPは悪い例です。echoを書きすぎて見通しが悪くなっています。 echo "<ul>"; echo "<

Atomについてのメモ

自分用メモ。Atomの便利な機能やインストールしたパッケージをメモしておく。 エディタの設定 Preferences->Editorから以下の設定を有効にする。 Show Indent Guide :インデントガイドを表示する。 Show Invisibles :スペースやタブを視認できるようにする。 Soft Wrap :画面外にある文字を折り返して表示する。 Soft Wrap Hanging Indent :80字で折り返して表示する。 パッケージのインストール方法 Preferences->Installからパッケージを検索してインストールする。 インストールしたパッケージ 操作をVimライクにするvim-mode-plusとex-modeに加えて、構文解析してくれるlinter系のパッケージをインストールした。 Vim化系 vim-mode-plus ex-mode Linter系 linter

頻出するCSSセレクタのまとめ

頻出するCSSセレクタの使い方をまとめる。 対象読者 HTMLとCSSを初めて触る人。 CSSのセレクタ周りの理解を有耶無耶にしていた人。 CSSの注意点 CSSの文法に全角文字および、全角スペースを使用することはできない。 セレクタ(id、class)の頭文字に数字を使用することはできない(例:2linesなど)。 スタイルの適用順位はポイント制となっており、より獲得ポイントが高いセレクタを持つスタイルが優先される(see CSSのスタイル適用の優先順位について)。 セレクタの基本的な使い方 CSSにはHTMLの構造から要素を選択するために「要素」、「属性」、「id」、「class」の4つの選択方法が用意されている。 html <div id="foo"><