根暗シアン

備忘録という名の予防線

Windows バッチファイルで日時をYYYYMMDDHHmmSS形式で取得

Windows バッチで、日時を取得して書式設定する。 ログファイルとかtempファイルにYYYYMMDD とか HHmmSS をつけたいときによくやる。

  • 年月日
rem 年月日
echo %date%
rem => 2017/09/16
rem Windows の設定によって、年の表示を2桁とかにしていると YY/MM/DD になったりするので環境に合わせる

rem /を取り除く
set YYYYMMDD=%date:/=%
echo %YYYYMMDD%
rem => 20170916
  • 時分秒
rem 時刻
echo %time%
rem => 12:59:59.999
rem =>  9:00:00.000

rem :,ミリ秒を取り除く
set HHmmSSsss=%time::=%
set HHmmSS=%HHmmSSsss:~0,6%

rem 一桁時のときは先頭がスペースパディングされている。0パディングに直したいときは以下
if "%HHmmSS:~0,1%"=" " set HHmmSS=0%HHmmSS:~1%

echo %HHmmSS%
rem => 125959
rem => 090000

Windows復活

UbuntuデュアルブートしたあとでWindows Update かましたらWindowsが起動しなくなったのが4月中頃。 いろいろやってたらWindows 起動するようになった。

結論は、HDMI出力ができていなかっただけで、実は起動はしていたという話。 VGAケーブルに差し替えたらあっさり直った。

一応試したこと書いておこう

GRUBメニュー出したい

Windows Update 前はPC起動時にGRUBメニューが出て、UbuntuWindows か選んでたはず。あの画面だせないか? grubの設定を変更する

$ sudo vim /etc/default/grub

GRUB_HIDDEN_TIMEOUT=0 をコメントアウトする

#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10  # 0より大きい値にする

保存して終了したら次のコマンド

$ sudo update-grub

これで起動したらGRUBメニューが表示されるはず…が何も出ない。 (実際には画面に出力できてなかっただけなんだけど気がつかなかった)

grub-reboot で設定

次回起動時のブートローダWindows に設定してみる。 /boot/grub/grub.cfgの中からWindowsのOS名を検索 -> 私の環境では “Windows Boot Manager (on /dev/sda1)” でした この名前でgrub-reboot 実行

$ sudo grub-reboot "Windows Boot Manager (on /dev/sda1)" && sudo reboot

するとWindows が起動するはず…が画面が真っ暗のまま、キーも何も反応しない。

「真っ暗ってことはUbuntu ではなく別なものが動いているんだよな…?」 この辺で、画面出力を疑い始める

デジタル出力→アナログ出力に変更してみる

HDMIでモニタに繋いでいるところを、VGAケーブルに繋ぎかえてみる

→表示された!

なんでHDMIで出力されないのかはよくわからないけど、ひとまずこれで良しとしよう

さくらのVPS初期設定

さくらのサポート情報 にしたがって設定する

1. 契約〜ログイン

  • 画面にしたがってポチポチ
    1GB,HDD100GBのプランにした
    年間10,692円 + 初期費用1,620円

  • VPSコントロールパネルにログイン

    • とりあえず名前は適当につけて、起動
    • PINGが通ることを確認
  • ssh root@

    • パスワードはメールで送られてくる
  • アプリケーションのアップデート

# yum -y update
# yum -y upgrade

2. パスワード変更

# passwd
ユーザー root のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:

3. ユーザ追加

# useradd user
# passwd user

sudoを利用できるように設定する

# usermod -G wheel user 
# visudo

次の箇所のコメントアウトを外す

# Allows people in group wheel to run all commands
%wheel        ALL=(ALL)       ALL

4. SSH設定変更

  • デフォルトポート22のままだとアタックされやすいので変更する
# vi /etc/ssh/sshd_config
# Port 22
Port 10022
    :
# Authentication:
# rootでのログイン不可
PermitRootLogin no
    :
# パスワードなしでのログイン不可
PermitEmptyPasswords no
  • ここまで設定したら、sshdを再起動して反映させる
# service sshd restart

ここでexitして再ログインしようとしたら、"No route to host"のメッセージが出てsshログインできなくなった

ローカル
$ ssh -p 10022 user@xxx.xxx.xxx.xxx
ssh: connect to host xxx.xxx.xxx.xxx port 10022: No route to host

原因はサーバ側のiptablesの設定をしないままログアウトしてしまったため。
さくらのコントロールパネルを開いて、コンソールから6.の作業を実施

5. SSH鍵設定

  • クライアント作業
# 鍵ペア生成
$ ssh-keygen -t rsa -v
# ファイル、パスフレーズはデフォルトで作成
# 作ったらSCPでサーバに転送
$ scp -P 10022 ~/.ssh/id_rsa.pub user@xxx.xxx.xxx.xxx:/home/user/
  • サーバ作業
$ mkdir .ssh
$ chmod 700 .ssh
# 公開鍵を追加する(新規作成の場合は mv id_rsa.pub .ssh/authorized_keys でもいい)
$ cat id_rsa.pub >> .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ sudo service sshd restart

6. ファイアウォールの設定

  • iptablesLinuxファイアウォールみたいなもの。許可・拒否する通信を設定する
  • わからないのでサイトの説明の通りに設定した
  • SSHのポートを変更した場合は必ず設定が必要
$ sudo iptables -A INPUT -p tcp --dport 10022 -j ACCEPT # (ssh)
$ sudo service iptables save
$ sudo service iptables restart

UEFI環境でWindows 10 + Ubuntu 16.04 LTS のデュアルブート

2017/05/07追記 Windows Creators Update してからWindows が起動しなくなったので、Windows Updateには気をつけてください

最近Windows にソフトをインストールしようとしてうまくいかなくて苛つくことが多い。Chocolatey が結構失敗する。

Windows 起動して毎回 vagrant up するのもめんどくさい、Bash on Ubuntu on Windows もなんだかなって感じなので、それならばいっそデュアルブート環境にしてみようと思った次第。 Linuxほぼ初心者なので有名ドコロで Ubuntu を入れました。

続きを読む

【雑記】JNDIがわからない

EJBサーバにWildflyを使用している。

lookupするときjava:appとかjava:moduleとかいろいろなネームスペースがあってどれを使ったらいいのかよくわからん。

なんとなく動いちゃってるけど、1回一からちゃんと調べたほうがいいな。

 

DI(Dependency Injection)もあまりわかってない。とりあえず@Resourceとか@Injection書いとけばいいんでしょみたいなノリでやってしまってる。DIといえばSpringみたいなイメージがあるのでSpringの勉強がてら学んでおきたい。

【C#】コレクション

C#にはジェネリックコレクションと非ジェネリックコレクションがある。
違いは型定義ができるかできないか。

ジェネリック ジェネリック
System.Collections.Generic.List System.Collections.ArrayList
System.Collections.Generic.Dictionary System.Collections.Hashtable

反復処理の書き方

List系

for文で書くと・

var list = new List<string>();
list.Add("hoge");
list.Add("fuga");

for(int i = 0; i < list.Count; i++){
    Console.WriteLine(list[i]);
}


foreachで書くと・

var arrayList = new ArrayList();

…

foreach(Object obj in arrayList){
    Console.WriteLine((string)obj);
}

Dictionary系

ジェネリック型の場合はKeyValuePairを使う。

var dict = new Dictionary<string, string>();

…

foreach(KeyValuePair<string, string> kv in dict){
    Console.WriteLine("Key={0}:Value={1}", kv.Key, kv.Value);
}

ジェネリック型の場合はDictionaryEntryクラスがキーと値のペアをobject型格納するよう。

var dict = new Hashtable();

…

foreach(DictionaryEntry entry in dict){
    Console.WriteLine("Key={0}:Value={1}", entry.Key, entry.Value);
}

情報セキュリティスペシャリストになりました

4月に受けた情報セキュリティスペシャリストの合格発表がありました。

結果は合格でした。

午後Ⅱが62点でぎりぎりです。

今もう一回受けて受かる気がしないな~。

セキュリティスペシャリストっぽいことを何もしてないのでセキュリティスペシャリストの資格を持っているただの人になりました。

 

学習期間は1ヶ月ほど。

午前2は通勤電車で過去問をひたすら解いてました。ほとんど同じ問題がでるので過去問を完璧に解けるようになっていれば合格点は取れると思います。

午後は緑色の本を2,3周しました。

2015 情報セキュリティスペシャリスト「専門知識+午後問題」の重点対策 (専門分野シリーズ) : ITのプロ 46, 三好 康之, 大谷 將, 具志 強, 早坂 一希 : 本 : Amazon.co.jp

 

マスタリングTCP・IPを読んでいたのもネットワーク系問題の理解に役立ったと思います。

 

次はOracle Master Bronzeを受けよう。