技術メモ

技術メモ

postgresqlでデータの流し込み

データを流し込む方法として、ダンプ/リストアを使う方法と、エクスポート/インポートを使う方法をメモ。

ダンプ&リストア

# ダンプ
# テーブル定義のみダンプしたい場合は「-s」、データのみダンプしたい場合は「-a」を付ける
# 下記コマンドは、データのみダンプする場合
pg_dump [-h ホスト名] -U ユーザ名 -a -t テーブル名 データベース名 > data.sql

# 適時ダンプファイルを修正(ユーザ名の置換とか)

# リストア
# 単一トランザクション内でスクリプトを実行したい場合は「-1」を付ける
psql [-h ホスト名] -d データベース名 -U ユーザ名 -f data.sql -1


ちなみに、psqlSQLファイルを実行するコマンドなので、下記のようなSQLファイルを別途用意してもいい。

create table city (
	city_id serial PRIMARY KEY NOT NULL,
	country_code text NOT NULL,
	pref_code text NOT NULL,
	pref_name text NOT NULL,
	city_code text NOT NULL,
	city_name text NOT NULL
);

(略)

エクスポート&インポート

# エクスポート
psql [-h ホスト名] -d データベース名 -U ユーザ名 -A -F, -c "select * from テーブル名" > data.csv
psql [-h ホスト名] -d データベース名 -U ユーザ名 -A -F $'\t' -c "select * from テーブル名" > data.tsv

# csv/tsvファイルの編集(data.csv/tsvのカラム名/レコード数に関する記述を削除)

# インポート
# コマンド文字列(「-c」に続く文字列)が複数のSQLコマンドを含む場合、それらのコマンドは1つのトランザクションで処理される
# トランザクションを複数に分ける場合は、BEGIN/COMMITコマンドを明示的に追記する psql [-h ホスト名] -d データベース名 -U ユーザ名 -c "\copy テーブル名 (カラム1, カラム2, ...) from data.csv with delimiter ','" psql [-h ホスト名] -d データベース名 -U ユーザ名 -c "\copy テーブル名 (カラム1, カラム2, ...) from data.tsv with delimiter '(ターミナルで「Ctrl + v + Tab」)'"

古いAndroidアプリをバージョンアップすることになった人へ

はじめに

eclipseで作成されたAndroidアプリの開発環境を構築する際の流れです。
利用しているライブラリによって、多少作業が増えたり減ったりすると思います。

Android Studio」に移行できた人は読む必要がないので、戻るボタンをどうぞ。
お察しの通り、「Android Studio」の話は出てきません(移行を試みましたが…)。

1. 「eclipse with adt」のダウンロード

本家のダウンロードページが見つからないので、別途提供元を探す必要がある。
補足資料 1. — 補足資料 1 documentationからダウンロードする。
パスが長すぎる場合、解凍時に問題が発生する(「エラー 0x80010135 パスが長すぎます」が発生する)ため、ダウンロード先は「C:\(ドライブ直下)」等を指定する。

2. 「SDK Manager」で各ツールをインストール

アプリを動かすのに最低限必要なツール(「Android4.4」「Google API」「usb driver」等)をインストールする。

3. プロジェクトをインポート

バージョン管理の有無によって対応が異なる。

  • gitbuket等でバージョン管理されていない場合

    Eclipseにソースコードを取り込むには - 逆引きAndroid入門に倣って、該当ディレクトリのインポートを行う。

    ちなみに、gitbucket等でバージョン管理したい場合は、
    [Git Repository Exploring](Perspective)を開いて、「Clone a git repository」をクリックする。表示されるウィンドウにしたがって、作成済みのリモートリポジトリに関する情報(http  clone url、ユーザ名、パスワード等)と、作成するローカルリポジトリの宛先を入力する。
    上記で作成したローカルリポジトリと該当プロジェクトを関連付ける必要がある。該当プロジェクトを右クリックして[Team][Share Project…]を選択する。表示されるウィンドウで、上記で作成したローカルリポジトリを指定する。
    管理対象としないリソース(/bin・/gen等)を.gitignoreに追記する。プッシュする際に、Gitに関する情報(ユーザ、メールアドレス)を設定すれば完了。

  • gitbucket等でバージョン管理されている場合
    メニュータブから[File][import][Git][projects from git]を選択する。表示されるウィンドウにしたがって、既存のリモートリポジトリに関する情報(リモート先、ユーザID/パスワード)を指定する。
    その他の画面は、デフォルトのまま「next」をクリックしていけば完了。

    A.01. Git リポジトリからのプロジェクトのインポート · mixi-inc/AndroidTraining Wiki · GitHub

4. 「SDK Manager」でインストールできない各ツールをダウンロード&インポート

基本的には、前開発者が利用していたものを共有してもらう。
それができないようであれば、本家またはその他の提供元からダウンロードする。
バージョンによって配布方法やAPIが変更されるため、そこを踏まえたうえでダウンロードを行う必要がある。

例. 「Google Play Services」をダウンロード&インポート
google maps api」を利用しているアプリの場合、「google play services(端末にインストールされている「Google Play 開発者サービス」というAPKの機能を呼び出すためのインターフェース群)」が必要になる。

  1. ダウンロード

    バージョンによって、「google play services」の中身が異なる。
    Eclipse 用の Google Play Services Library のありか - Qiita

    あるバージョンから、「libproject」がなくなっている。
    android - Missing "<sdk>/extras/google/google_play_services/libproject" folder after update to revision 30 - Stack Overflow

    また、あるバージョンから、いくつかのパッケージが廃止されている。
    com.google.android.gms.location.LocationClientがimportできない -でじうぃき

    最新バージョンをダウンロードして実装側でその差分(中身が違うとかAPIが変更されたとか)を埋めるか、前開発時に利用していたバージョンをダウンロードしてそのまま利用するか。

    今回は後者で対応する。
    旧バージョンのダウンロードリンクを利用して、該当バージョンを取得する。
    android - Missing "<sdk>/extras/google/google_play_services/libproject" folder after update to revision 30 - Stack Overflow
    java - How to download older google play services? - Stack Overflow

  2. インポート
    [ファイル][新規][その他][Android][既存コードからのAndroidプロジェクト]を選択する。
    表示されるウィンドウで、「プロジェクトをワークスペースにコピー」にチェックを付け、「google-play-services_lib」を指定して、対象ライブラリをプロジェクトとしてインポートする。

    「Package Exploer」の「google_play_services_lib」を右クリックし、[Properties][Android][Project build target]を選択する。該当するAPIにチェックを入れる。

    「Package Exploer」の該当プロジェクトを右クリックし、[Properties][Android][Project build target]を選択する。「Google API」にチェックし、「Library」に上記でインポートした「google_play_services_lib」を追加する。 

5. 4のツール関連の設定

認証周りで作業が必要になったりする。

例.  「Google Maps APIキー」利用に関する設定
Google Developers Console(https://console.developers.google.com/?hl=JA)」にログインする。
「認証情報」より対象のAPIキーをクリックし、パッケージ名とフィンガープリントの追加を行う(フィンガープリントは、[Window][preference][Android][Build]から確認する)。

6. エラー対応

逐一調べていくしかない
Eclipseでプロジェクトフォルダに「!」マークが出た時の対処法 - しろかい!

一見意味のにないように思えて、実際にやってみると解決してしまうことがある。
上の作業でいえば、ライブラリの紐づけを一度外してもう一度付けたら…(もうよく分からない)。

おわりに

泥臭さ

EclipseWithADTに関するあれこれ

plugin

settings


  • [General][Appearance][Color Theme] 「Solarized dark」

  • 文字
    [General][Appearance][Colors and Font] 「フォントConsolas、サイズ10」

  • 行数/スベース
    [General][Editors][Text Editiors] 「show line number/show space character」にチェック

  • 補完
    [Window」][Preferences][Java][Editor][Content Assist] 「自動有効化遅延」の値を80、
    Javaの自動有効化トリガー」を「.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_」

function

  • Quick Access
    とりあえずここにキーワード入れれば、何かしらがヒットする

  • Outline
    該当クラスの構成がツリー形式で表示される

  • Bookmark
    手掛かりとなる箇所に残していく
    行数右クリック[Add Bookmark...]

  • Log cat
    ログ

keybind

  • 名前変更
    Alt + Shift + r

  • ファイル/リソース検索
    Ctrl + Shift + r

  • ファイル(ある文字列含む)検索
    Alt + a + f

  • クラス/インタフェース等の検索
    Ctrl + Shift + T

  • カーソル位置のクラス、インタフェース、変数等の宣言場所へ移動
    F3

  • 呼び出し階層(呼び出し先一覧)を開く
    Ctrl + Alt + h

  • カーソル位置のクラスの継承関係を表示

    F4

  • 戻る
    Alt + ←

other

  • 端末の安全な取り外し方
    Android 端末側の設定で、[開発][USBデバック]のチェックマークを外す

とあるサービスの開発環境作成

はじめに

ec2で動いているものを物理サーバで再現した時にやったことをメモ(サーバーコピーで済むならそれに越したことはない)。
本番環境の設定を地道に調べていった感じ。
PHPのバージョン、「/usr/lib64/php/modules/」の中身、その他設定ファイルとか(php.ini/httpd.conf等)。

アプリケーション基盤の移行

テストサーバー(ステージング環境)で動いているアプリケーションのディレクトリ構造(「/var/www/」配下)を確認し、ローカル(開発環境)に持ってくる。
その際に、git等でバージョン管理されているディレクトリを確認する。

 利用ツールのインストール

ツール群(apache/php/smarty/postgre/Redis等)を把握して、インストール有無を確認したうえでそれぞれインストールする。
例.
smarty等 → 「/usr/share/php/」をコピペ
php関連 → 「yum -y install php php-mbstring php-pdo php-pgsql php-devel php-mbstring php-pdo php-pgsql php-pecl-yaml.x86_64 php-pecl-apc.x86_64 php-domxml-php4-php5.noarch php-gd.x86_64」

設定ファイル(アプリケーション側)の編集

アプリケーションとツールの接続を修正する
例.
「/smarty/configs」配下のファイル(postgre接続に関する設定)」、「server_list.php(Redis接続に関する設定)」を修正する。

設定ファイル(ツール側)の編集

ツールの挙動を修正する
例.
Apache → 「/etc/httpd/conf/httpd.conf」「/etc/httpd/conf.d/rewrite.conf(アプリケーションのルーティング機能)」「/etc/httpd/conf.d/*.conf」
PHP → 「/etc/php.ini」
Postgresql → 「/var/lib/pgsql/data/postgresql.conf(postgreのクライアント認証、max_connections調整)」「/var/lib/pgsql/data/pg_hba.conf(postgreのクライアント認証)」

 アプリケーション/ツールの調整

本番環境用の挙動を、開発環境用に修正する
例.
アプリケーション → メール送信機能(アカウント登録/APIキー発行時にその旨を伝えるメールが飛ぶ)の無効化
ツール → postgresqlのリストア(+ダンプファイル内のユーザ名置換等)、
smartyのアクセス権限変更(chown apache:apache smarty/templates/、chown apache:apache smarty/templates_c/)

SublimeTextで利用(を検討)しているパッケージ群

探し方

https://packagecontrol.io/ のNew、Trending, Popular

利用中

  • Package Control
    基本

  • SFTP
    パネルが開かない結果、同期有無の判断を勝手に行うことがある(「(Select via quick panel) No」がコンソールに表示される)。
    パネル表示を行うパッケージ(ConvertToUTF8等)の設定を行い、パネル表示が重ならないように調整する。

  • Side​Bar​Enhancements
    サイドバーの拡張

  • All Autocomplete
    補完強化

  • ConvertToUTF8
    UTF8に統一

  • SyncedSideBar
    指定したファイルとサイドバーのカーソル位置が連動

  • Spacegray
    見栄え

  • Vintageous
    Vimmer、「Ctrl + v」からの「Shift + i」

  • Alignment
    「Ctrl + Alt + A」でインデント位置を揃える
    対象となる記号に関する設定

         "alignment_chars": [ ":", "=", "=>" ],
         "alignment_space_chars": [ ":", "=", "=>" ],
    }

 

  • BracketHighlighter
    サーチ範囲を限定しないよう設定(他にも強調表示の形状や、ブラケットを判別する条件などを設定可能)


    "ignore_threshold": true
    }

     

  • Pretty JSON
    JSONの整形

  • Incrementor
    連番の入力、詳しくはhttps://github.com/born2c0de/Incrementor
    [Ctrl + Alt + Shift + H] _ → \i

  • LaTex Word Count
    文字数数えたり

  • DocBlocker
    Docコメントの補完

  •  jQuery
    補完

  •  SublimeLinter-php
    補完
    php.exeをPATHに通す

     

  • SublimeLinter-jshint
    補完
    node.jsインストール、npm install -g jshint、npm update -g jshint

     

  • SublimeLinter-csslint
    補完
    npm install -g csslint

  • SublimeLinter-html-tidy
    補完
    http://www.paehl.com/open_source/?HTML_Tidy_for_HTML5、tidy.exeのパスを通す 

検討中

  • Elastic Tab
    編集時にタブを揃える
    [*.php]
    indent_style = tab
    [*.js]
    indent_style = tab

  • Local History
    Users\ユーザー名\.sublime\history

  • SublimeREPL
    irbとかpython的なやつ

  • Terminal
    "terminal": "C:\\Win~\\cnd.exe"

  • BoundKeys
    List bound keys
    キーマップの状態(被ってるやつとか)を俯瞰できる、
    固まるから使ってない

  • EditorConfig
    異なるエディター/IDE間で共通するコーディングルールを規定する.editorconfig

  • Emmet+Hayaku

  • View In Browser
    Ctrl+Alt+Vキー(Win)

  • DataConverter
    CSV形式のデータをさまざまな形に変換
    範囲選択後、実行

  • FindKeyConflicts
    「BoundKeys」で事足りる気がする(があっちは固まるし。。。)、
    コマンドパレットから「FindKeyConflicts: All Conflicts」を起動
    [Key Bindings- User]を編集

  • Project Manager
    プロジェクトごとに*.sublime-projectファイルを生成して管理する

  • GitGutter
    差分の視覚化

  • Trimmer
    空白の削除

SublimeTextでよく利用する機能

SublimeTextの便利な機能をまとめた。

  • とにかくあれが使いたい
    「Ctr+Shi+p」 + キーワード

  • 全プロジェクトの中から、あるファイルを検索したい
    「Ctr+p(Goto Anything)」 + ファイル名

  • あるプロジェクトの中から、該当文字列が含まれるファイルを検索したい
    「Ctr+Sht+F(Find File in ...)」 + キーワード

  • あるプロジェクトの中から、シンボル(クラス、関数、定数など)を検索したい
    「Goto Symbol In Project」 + キーワード

  • あるファイルの中から、シンボル(クラス、関数、定数など)を検索したい
    「Ctr+p(Goto Anything)」 + @(Goto Symbo)キーワード

  • あるファイルの中から、文字列を検索したい
    「Ctr+p(Goto Anything) 」 + #(Search Word)キーワード

  • 定義元を確認したい
    文字列選択 + F12(Goto Definition)
    「Alt + -」で戻れる(「Alt + Sht + -」)

  • ブックマーク
    Ctrl + F2(登録、再度押すと解除)
    F2キー(ジャンプ)
    Ctrl + shift + F2(全て解除)

  • 画面分割したい
    View Layout

  • 同ファイルを新規タブで開きたい
    [File] [New View Into File]

  • インストールしたパッケージ群を共有したい
    Userフォルダ(Sublime Text > Preference > Browse Packages...)を丸コピ

  • 起動したい
    subl .

  • キーバインドを変更したい
    適時「FindKeyConflicts」を利用しつつ、各設定ファイルの編集