かきスタンプ

福岡でフリーランスの物流系のエンジニアやってます。

Linux:キーボードの特定キーが正常に動作しているかチェック

コンソールにて、以下を入力。

xev

ウィンドウが立ち上がったら、チェックしたいキーを入力する。
 
ジャンク品触っていると、設定が悪いのか、キーボードが悪いのか分からない場合があるので、そういう時に使ってます。
(言語によって左右されやすいキーは特に。)

PowerShell:APIの叩き方

PowerShellAPIを叩くとき、Invoke-WebRequestを使用します。
Windows 7 にデフォルトで入っている ver 2にはありませんが。)

Invoke-WebRequest -uri <URI>

Invoke-WebRequest」でなく、「curl」と打ってもOKです。

使用例

curl -uri http://kakistamp.com/api -Method Get -ContentType 'application/json;charset=utf8'

-Methodや、-ContentTypeは、状況に応じて使い分けを。

-Outfile "C:\tmp/res.txt" 等で、外部ファイルに出力可能です。
 
コンソール出力時に文字化けした場合、エンコードを変更します。

chcp <エンコードID>

<エンコードID>は、以下のような形で表現されています。

符号化方式 エンコードID
shift_jis 932
EUC-JP 20932
utf-8 65001
utf-16 1200

単にchcp と入力すると、現在のエンコードを表示します。
 
その他のエンコードについては、Microsoft 公式ページを参照下さい。

Oracle:文字列を日付型に変換するファンクション(できなければ nullを返す)

Oracleで、文字列を日付型に変換し、できなければnullを返すファンクションを書いてみた。

create or replace function CONVERT_TO_DATE (
  ARG_DATE  in varchar2) 
return date is

    FORMATTED_DATE  varchar2(8);

begin

    FORMATTED_DATE := substr(replace(ARG_DATE,'/',''),1,8);

    return  to_date( FORMATTED_DATE, 'YYYYMMDD' );

exception
  when others then
  return null;
end;

可能であれば日付型に変換し、できなければ nullを返す。
 
使用例

select
    CONVERT_TO_DATE('20170101')    as  RESULT1
   ,CONVERT_TO_DATE('2017/01/01')  as  RESULT2
   ,CONVERT_TO_DATE('xxx')         as  RESULT3
   ,CONVERT_TO_DATE('2017/01/32')  as  RESULT4
from
    dual

 
実行結果例

RESULT1 RESULT2 RESULT3 RESULT4
2017-01-01 2017-01-01 (null) (null)

諸事情により、文字列のカラムに日付情報が格納されているというケースのために。
標準関数の to_dateは、日付型に変換できない場合は例外が発生するので、変換できないレコードが1件でもあると、マトモに実行してくれなかったので作成しました。
 
…ってか、この程度の事、自前で何とかしなくても、標準関数で出来てほしい。
 
ファンクション名は「CONVERT_TO_DATE_FROM_CHAR」にしようかと思いましたが、長いからやめときました。



スポンサーリンク

elementary OS:セットアップメモ

elementary OS(見た目がMacっぽいDebian系ディストリ)をセットアップしたので、その手順をメモ。

-1-
公式サイトより、イメージファイルをダウンロード。(無料でのダウンロードも可)
 
 
-2-
インストールドライブ(USB起動)を作成します。
Rufus を使用しました。設定は以下。

「スタート」を押し、インストールドライブを作成。  
 
-3-
インストールする端末のBIOS設定を変更します。今回は ASUSのE200Hを使用しました。

  1. 作成したインストールドライブを挿し、PC起動
  2. BIOS画面を起動(電源を入れ、F2連打)
  3. Securityタブにて、Secure Boot Controlを、[Disabled]に設定
  4. Bootタブにて、Boot Option #1を選択し、USBを選択。
  5. Save & Exit タブにて、Save Change and Exitを選択。
  6. GRUBが起動する。Install elementary OS を選択。後はインストールガイドの手順に従う。

-4-
パッケージマネージャ更新

sudo apt-get update 
sudo apt-get upgrade

日本語化

画面左上の「Applications」を選択→
System Settingより、Language & Regionを選択。
「UnLock」を選択すると、設定が変更できるようになる。
Formatにて「Japanese」を選択。
その後、再起動。

日本語入力設定

(以下を実行)
sudo apt-get install fcitx-mozc
im-config -n fcitx
fcitx-config-gtk3
「入力メソッドの設定」が起動する。[全体の設定]タブより、[拡張オプションの表示]を有効にする。
[プログラム]タブの「fcitxが本当に起動するまでのスリープ時間」を10に設定。
その後、再起動。
再起動後、再び fcitx-config-gtk3 を実行。
[全体の設定]タブの[入力メソッドのオンオフ]に、適当なキーを割り当てる。([全角/半角]キー等)

蓋を閉じても電源が落ちないようにする

/etc/systemd/logind.conf
を編集
「#HandleLidSwitch=suspend」→「HandleLidSwitch=ignore」
その後、設定を反映させるために以下を実行。
sudo systemctl restart systemd-logind

Chromeインストール

sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
sudo apt-get update
sudo apt-get install google-chrome-stable

Fire Foxインストール

sudo apt-get install firefox 

gitインストール

sudo apt-get install git

LibreOfficeインストール

sudo apt-get install libreoffice

グラフィック系ソフトのインストール

sudo apt-get install gimp
sudo apt-get install krita
sudo apt-get install inkscape

node.jsインストール

sudo apt-get install nodejs
sudo apt-get install nodejs-legacy
sudo apt-get install npm
sudo npm install -g n
sudo n latest
sudo npm update -g npm
sudo npm update -g
sudo npm outdated -g
npm install -g express
npm install -g express-generator

node.jsバージョン切り替え

git clone git://github.com/creationix/nvm.git ~/.nvm
source ~/.nvm/nvm.sh
nvm install 7.8.0(バージョンを指定)
nvm use 7.8.0(バージョンを指定)

元々は Windows 10の64bit版が入っていたマシンにセットアップしました。
こういった作業をノートPCでやる時、ASUSは結構いい選択肢ではないでしょうか。
スペックは大した事なくても、安価なマシン(リサイクル品)が、じゃんぱらなどで多く出回っているので。
ハードオフ等で売ってるジャンク品なんかを使うのもいいと思います。というか、一番最初はそうしました。



スポンサーリンク

Oracle:インポートエラー(IMP:00013)の対処

エクスポート・ファイルはEXPORT:V10.02.01によって従来型パス経由で作成されました。  
IMP-00013:DBAのみ別のDBAがエクスポートしたファイルをインポートできます  
IMP-00000:エラーが発生したためインポートを終了します。

というメッセージが出た時の対処。 エクスポートをDBA権限で実行した場合、インポートユーザもDBA権限がないと実行できないのが原因です。
 

対処方法1.DBAユーザでインポートする
コマンドプロンプト等のターミナルより、以下を実行。

(impを使用する場合)
imp \"<ユーザ名>/<パスワード>@<net_service_name> AS SYSDBA"\ file=<dmpファイル(フルパス)> fromuser=<スキーマ名> touser=<スキーマ名>

(impdを使用する場合)
impdp \"<ユーザ名>/<パスワード>@<net_service_name> AS SYSDBA\" DIRECTORY=<DIRECTORY OBJECT> DUMPFILE=<dmpファイル> SCHEMAS=<スキーマ名>

   

対処方法2.インポートユーザにDBA権限を付与する
以下のコマンドで、インポートユーザのDBA権限を付与。(要管理者権限)

GRANT DBA TO <ユーザ名>

   

対処方法3.DBAでエクスポートしない
以下のコマンドで、エクスポートユーザのDBA権限を解除。(要管理者権限)

REVOKE DBA FROM <ユーザ名>

すでに取ってしまったdmpは仕方ないけど、こっちが一番いい思う。(インポート/エクスポート くらいは、DBA権限でなくても出来ていいと思う。)

   

DBA権限が付与されているかどうかは、以下のSQLで確認できます。

select * from DBA_ROLE_PRIVS order by GRANTEE

GRANTED_ROLE に、「DBA」のレコードが存在している場合、そのユーザはDBA権限を保持しています。



スポンサーリンク

Git基本操作メモ

操作 コマンド 備考
リポジトリの初期化 git init ディレクトリでの操作を推奨
状態の確認 git status 次にやるべき操作がなんとなく分かる。
ファイル追加 git add (ファイル名) 「.」で、カレントの全ファイル。「*」でワイルドカード指定。-Aで追加・変更・削除が同時管理できる。
直前のaddを取り消す git reset HEAD [ファイル名] アンステージ
コミット git commit [-m "message"] addしたファイルが対象。-a -m で、現在のインデックス内容をgit addした後にコミット。
コミット詳細確認 git show
コミット内容追加 git commit --amend コミットメッセージ修正にも使用可。追加の修正内容は最新コミット内容に内包され、履歴は更新されない。
ログ確認 git log [--oneline]
差分チェック git diff (コミットID1) (コミットID2) IDはログで確認
過去のバージョンに戻す git checkout (コミットID) (ファイル名) ファイル名は「.」で対象の全ファイルを指定可。
最新コミット状態に戻す git reset --hard HEAD ローカル編集内容をリセットしたい時に。HEADでなくリポジトリIDでも可。
ファイル削除 git rm (ファイル名) ローカルの内容も同時に消える。
ファイル名変更 git mv (変更前のファイル名) (変更後のファイル名) ローカルの内容も変更される。
インデックスのみ削除 git rm --cached (ファイル名)
リポジトリ管理対象外ファイルを指定 .git/info/excludeに記述 無ければファイルを新規作成。無視するファイル名を記述する。
特定コミット取り消し git revert (コミットID)
特定のコミットを無かったことにする git rebase -i (取り消す直前のコミットID) viが起動する。取り消すコミット内容を削除。
ブランチ作成 git branch (ブランチ名)
ブランチ一覧表示 git branch 現在作業中は「*」で表現
ブランチ切り替え git checkout (ブランチ名)
ブランチのマージ git merge (ブランチ名) masterに切り替えてから実行

各種コマンドのオプション詳細は、-h (使用例:git checkout -h)

AWS:<EC2>Ubuntu Server 16.04 LTS のデスクトップ環境

【クライアント端末:Windows 10】
【使用ツール:MobaXterm】

Ubuntu ServerのGUIデスクトップ環境作成手順。 VNC(Virtual Network Computing)を使用しています。

1.
Ubuntu Server 16 のEC2インスタンスを作成。
(セキュリティグループを編集し、カスタムTCPルールの、ポート5900を許可する)

2.
キーのパーミッションは600に設定し、作成したインスタンスsshログイン。 MobaXterm の Terminalを使用しました。

(接続コマンド)
ssh -i <keyName.pem> ubuntu@<IPアドレス>

3.
ログイン後、以下を実行

sudo apt-get -y update
sudo apt-get -y install ubuntu-desktop
sudo apt-get -y install vnc4server
sudo apt-get -y install gnome-panel
vncserver :0
(パスワードの設定が要求される。8文字以下で入力。)
vncserver -kill :0

4.
sudo vi ~/.vnc/xstartup
にて、以下を編集

【編集前】
f:id:kakisoft:20170402173905p:plain

【編集後】
f:id:kakisoft:20170402175523p:plain

#unset SESSION~のコメントアウトを解除し、以下を追記しています。

<追記した内容>
gnome-session -session=gnome-classic &
gnome-panel &

編集後、以下を実行

vncserver :0

5.
MobaXterm の Sessions タブより、New Session→VNC を選択。
接続先を「IPアドレス:0(ディスプレイ番号)」と入力し、OK。

起動後は、Applications や Placesを選択してアプリやディレクトリを使用できる。 f:id:kakisoft:20170402180101p:plain  
 

途中、わざわざ「vncserver :0」を実行し、killしているのは、vncserverを起動しないと、/.vnc/xstartup が作成されないためです。
ディスプレイ番号「:0」以外を使用する場合、ポート番号の許可範囲を拡大しておけばOKです。(ディスプレイ番号:1を使用する場合、5901を許可。)