エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

平成29年度春季データベーススペシャリストの受験後の感想

午前

たぶん、大丈夫。
分からん問題は2,3問くらいやったし。
過去問も8割近い正答率になってたから大丈夫だろう。
ちなみに、午前Ⅰは免除でした。

午後

Ⅰ、Ⅱ、共に壊滅的。。。
まず、問題が意味分からん設問がいくつかある。
「これには問題がある」その問題とはなにか?って意味が分からん。
問題出す側が問題を聞いてくるってどういうこと?って思ってしまう。
指摘するからには、問題わかってるんじゃねーの?って気になる。
時間が足らずに最後は、適当に書いたわ。。。
6割ギリギリいけるかどうかだと思う。

反省

反復して学習ができてなかった。
特に午後問。
過去問を一回目を通して終わってた気がする。
午前は、そのかわりしっかりやってたな。
回答方法が簡単だからかもしれないが。。。
午後問って、専用の回答容姿がないと回答が書きづらいんだよね。。。
その問題があって、なかなか問題やろうって気にならなかった。

あと、推移的関数従属と部分関数従属をよく理解してなかった。
問題にあって、結構詰まった。
逆に、隔離性水準は完璧に覚えて追った。
利用できる箇所が1回あった気がする。
次回は、正規化、関数従属についてよく復習しておこう。

次回に向けて

試験対策ブログの充実と対策サイトに目を通す!

データベーススペシャリストドットコム

suzaku-tec.hatenadiary.jp

Macで各種バージョン確認まとめ

なるべくMac固有のバージョン確認のみ載せる。
ブログとかで環境情報を載せる場合は、下記のコマンドで確認したほうがいい。

種類 コマンド
OS SW_VERS
Swift swift -v
ターミナルモードが起動してしまうので、:exitで抜け出す。
Xcode xcodebuild -version
Homebrew brew -v
Java java -version

SwiftでWebViewアプリ

きっかけ

Swiftでいろいろアプリを作っているが、なかなか言語が覚えられない。
ネイティブ系のエンジニアではないからかもしれない。
WebViewを使えば、楽できるのではないかと思い、実施に至る。

環境情報

$> SW_VERS
ProductName:    Mac OS X
ProductVersion: 10.12.3
BuildVersion:   16D32

$> swift -v
Apple Swift version 3.1 (swiftlang-802.0.48 clang-802.0.38)

$> xcodebuild -version
Xcode 8.3
Build version 8E162
igarashitoshio-no-MacBoo

Xcodeのバージョンによっては、実施方法に差が出るので、一応載せとく。

やり方

プロジェクト作成

兎にも角にもプロジェクト作成が最初の仕事。

  1. Xcodeを起動して、Create a new Xcode projectを選択。
  2. Single View Applicationを選択してNext
  3. Languageをswiftにして、後はテキトーに入力
  4. 保存するディレクトリを選んでcreate

StoryBordの削除

SwiftはStorybordを使って、部品の配置を決める。
しかし、WebViewは部品一つしか必要ないので、あっても意味が無いので削除する。
※とくに削除しなくても問題ないので、飛ばしてもいいかも?

  1. Xcodeのサイドバーの"Show the Project navigator"を表示
  2. 一番トップにある、プロジェクト名のファイルを選択
  3. General > Develop Info > Main Interface の内容を空にする
    こいつで参照するStorybordを決めている。
  4. Main.storyboardを削除

ViewController呼び出し

storybordを削除したので、自前で呼び出す処理が必要らしい。
AppDelegate.swiftファイルを下記の通り編集する。
※コードは一部抜粋

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var navigationController: UINavigationController?


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        
        window = UIWindow(frame: UIScreen.main.bounds)
        
        let viewController: ViewController = ViewController()
        window!.rootViewController = UINavigationController(rootViewController: viewController)
        window!.makeKeyAndVisible()
        return true
    }

やっていることメモ

  1. ベースとなるウィンドウのインスタンスを生成。
  2. ベースとなるViewControllerを生成。
  3. 1.で作成したwindowの一番上位のViewConntrollerにUINavigationControllerを指定。
    さらに、そのUINavigationControllerの一番上位のViewConntrollerに、2.で作成したviewControllerを指定
  4. 1.で作成したwindowを有効化

WebViewを全画面表示

import UIKit

import WebKit

class ViewController: UIViewController, WKNavigationDelegate {

    let webview: WKWebView = WKWebView()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        webview.frame = view.bounds
        webview.navigationDelegate = self
        view.addSubview(webview)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

viewにwebviewのインスタンスを生成したものを埋め込む。
やる際は、WebKitのインポートをお忘れなく!
なんでビルドエラーになるのか分からず、1時間くらい時間を浪費するハメになった。。。

完成

上記をやれば、とりあえず実行するとwebviewが全画面で表示される。
ただし、真っ白だけど。。。

htmlを表示してみる

やりたいのは、ローカル保持しているHTML表示
外部のモノを参照することもあるだろうけど、やりたきことは別なので、やってみる。

配置場所の作成

まずは、htmlを配置する場所を作る。
Resourcesにhtmlなどを置こうと思う。
Xcodeだと、ディレクトリとは呼ばずにGroupと呼ぶらしい。
なぜだかは知らないけど、かなり迷う。
File > New > Group を選択して、Resourcesを作成

HTML作成

作ったResources内に、index.htmlを作成する。
File > New > Fileから、htmlファイルを作る(emptyを選んでindex.htmlという名でファイルを作る)
作ったら、ファイルを以下の内容にする。
今回は表示させたいだけなので、別になんでもいい。

<html>
<head>
</head>
<body>
test
</body>
</html>

htmlファイルのロード

作ったindex.htmlをwebviewに読み込ませる。

import UIKit

import WebKit

class ViewController: UIViewController, WKNavigationDelegate {

    let webview: WKWebView = WKWebView()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        webview.frame = view.bounds
        webview.navigationDelegate = self
        view.addSubview(webview)
        
        let url = Bundle.main.url(forResource: "index", withExtension: ".html")!
        let request = URLRequest(url: url)
        webview.load(request)
        
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

実行

実行すると、index.htmlの内容が出力されるはず。

感想

htmlの表示ができたので、あとはWebの知識とJS・CSSの考えを流用すれば行けるハズ。
デフォルトOptionalが有効なのが、違和感ありすぎて辛い。。。

特に、xcodeが全て英語なので、英語に慣れてないと拒絶反応が出る。
あと、デリゲートって何?おいしいの?
デリゲートの意味が未だに理解できない。
調べはするが、それってinterfaceとか使って呼び出すメソッドを決めておき、処理は宣言しているところで書くのと同じなんじゃ。。。って思う。
これは、いわゆるFacadeなのだろうか?
いままでプログラミングしてきて思うに、Facade使って上手くいったパターンがほぼないのだが、検討違いだろうか?
愚痴っぽくなってしまったので、ここでおしまい。

WebViewを使ったアプリには、可能性を感じる。
ネイティブ側の問題が発生すると死にそうだけどね。。。

参考サイト

iOSでガワネイティブ - Qiita

swift - How to add a navigation bar to WKWebView? - Stack Overflow

SwiftでWKWebViewを使ってみた - Qiita

npmにインストールしたものの確認

インストールしたものの確認方法

下記コマンドで確認できる

npm list

もしくは、ailiasが設定されているので、listの箇所は、ls, la, llが使える。
ailiasの確認がしたい場合は、npm list -hとすると下記のような記述がでる。
もちろん、ここのlistも置き換え可能。

npm ls [[<@scope>/]<pkg> ...]

aliases: list, la, ll

多すぎる

npm listで表示したものは、依存関係も含めて表示される。
そのため、インストールしているものが多すぎると、ネストが深くなったりして、確認したい一覧が見えない。
なので、依存関係を見たい場合以外は、下記のコマンドで事足りる。

npm list --depth=0

こうすることで、トップレベルのインストール物を確認できる。

グローバル環境を確認する

今まで紹介してきたものは、全てローカル環境の確認方法。
グローバル環境にインストールしたものではない。
確認したい場合は、ご察しの通り、-gオプションを付ければいい。

npm list -g

もちろん、これにも--depth=0は使える。
やり方が、統一感があるので、覚えやすいはず。

Macのターミナルのカスタマイズ

ターミナルの右側の文字列のカスタマイズ

ターミナルの$前の出力フォーマットは、環境変数のPS1で設定されている。

現状の設定内容を確認したい場合、下記のコマンドで確認する。

echo $PS1

意味は下記の通り。

意味
\h ホスト名(最初の.まで)
\H ホスト名
\t 時間(24h)
\u ユーザー名
\w 現在のディレクトリまでのパス
\W 現在のディレクトリ名

値の設定

{変数名}={出力フォーマット} で設定可能
例は下記の通り。

PS1=\W

ただ、上記のやり方だとターミナル再起動で元に戻ってしまうので、~/.bashrc などに記載する。
やり方は、以前の記事を参照。

suzaku-tec.hatenadiary.jp

参考サイト

www.yoheim.net

OSのバージョン確認方法

きっかけ

ブログやっていると、環境情報を乗せる必要がある。
そのため、OSのバージョン確認方法を知っておくと楽なのでメモる。

確認方法

エンジニアなので、コマンドで確認する。
当然、OS毎に違いがでるので、それぞれ記載する。
出力された情報を貼り付ければ、実施しているOSの情報は十分なハズ。

Windows

コマンドプロンプトで下記コマンドを打つ

ver

そうると、下記のような情報が出力される。

f:id:suzaku0914:20170402111509j:plain

Mac

ターミナルで下記のコマンドを打つ

sw_vers

下記のようなバージョンが出力される。

f:id:suzaku0914:20170402112434p:plain

就活生に送るプログラマ・システムエンジニアの状況

きっかけ

電車の中で就活生何度か見かけるようになり、この業界に抱いている幻想を打ち砕くために書こうと思った。
実際、うちの会社に入ったけど、思っていたのと違うから辞める人が結構いるので、情報発信しようと考えたのがきっかけ。
これまでの経験則に基づくものなので、人によっては個人差が出るかもしれない。

自分の仕事の経緯

職歴:10年(今年で!)
就職している会社は正社員だけど、職場は派遣で行っている。

業務内容・普段感じていること

入社してすぐ

何もできないと思われている。
だから、それを上手く使って教えてもらう。
最初の数年は、プログラミングさせてもらえなかった。
テスト、テスト、テスト。。。
テスターを軽く見ている職場が多い。
テストに関しては、別なところで話をする。

プログラミングをやりたいなら、大手かサービスを自作している会社に入ったほうがいい。
派遣で喰っているような会社は、最初の数ヶ月は実装をやらせてくれる可能性は低いので、会社選びは慎重に。

仕事について

世間的には、机でひたすらパソコンと向かいあっている印象が強いイメージだが、人との会話が必須となる職業である。
何かしら会話しなくてはいけない。
調べても分からないことがあれば、人に聞かなければいけない。
ここでギャップを覚える人が結構いるように思える。

どういうモノを作るのか、会話で認識違いをなくさなければならい。
なぜそうするかというと、実際作ったあとにイメージと違うってことがあると、かなり印象が悪い。
現物があるわけではなく、作り直しが容易だと考えている人が多いので、認識違いをなくすことが超重要になる。

テスター

新人でもやれるでしょ?って考えている奴が多い。
しかし、実際はテスト仕様書の記述があいまいなことが多く、仕様を理解しきれていないためにバグの発見が遅れることが多々ある。
そして、遅れの責任を押し付けようとするのが、糞ムカつく!

どこの現場でもそんな感じなので、遅れたからといって、気に病む必要はない。
このすばのアクシズ教の教義上手くいかないのは世間が悪いのように、実際に悪いのはプロジェクト責任者!
過度に責任を感じる必要はない。 ※どうすれば良かったかは、考えてほしいけどね!

分からないとき

どうプログラミング、設計すればいいかわからないときは、素直に聞く。
それば一番手っ取り早い。

ただ、人によっては威張る人がいたり、笑われたりすることがある。
それが嫌だから聞かないと、あとで責任がどうこう言い出して面倒くさいので、早いほうがいい。
どうしてもムカつくときは、家に帰ってデスノートに名前を書くしかない。

開発者よりの会社であれば、上記のようなことは少ない。
大手も。
職歴の割に実力を持たない人が、そういった傾向になることが強いイメージがある。

あとは惰性で書いているので、好きな人だけ見ればいい。

勤怠

職場による。
お役所からの仕事や、銀行関連は、きっちり時間が決まっている。
ネット関連の職場であれば、厳密に決まっていないので、ある程度の遅れなら多めに見てくれる。
ただし、30分以上遅れるなど、明らかに勤怠が間に合わないと分かっているときは、連絡が必須。
組織で動くので、連絡は怠ると、営業経由で背中をさされる。
特に、休みすぎは絶対ダメ。
休暇を複数取る場合は、なるべく早めに宣言しておくこと。

職場環境

清潔であることが多い。
ビルの老朽化具合で、環境が左右される。
一番気をつけなければならないのは、トイレの数と椅子。

トイレが少ないと、かなり危険。
この業界の人は、お腹が弱い人が多く、日頃のストレスのせいかもしれないが、トイレが埋まっていることが多い。
なので、周囲のトイレの場所は把握してないと、漏らしちゃうかも。

椅子は、日々の作業をする上で重要。

自席

埃が溜まりやすいので、ウエットティッシュで拭いたりすること週1くらいでしたほうがいい。
花粉症とおもいきや、埃で鼻がやられることが多いので、なるべくした方がいい。
あと、ケーブルはまとめていたほうがいい。
席移動が3ヶ月に1度のペースである。
席替えがあるということは、人が・・・ってことだ。
人の出入りが激しいので、他の業界よりも移動することが多いと思っている。(他の業界知らんけどね!)
ケーブルをまとめていたほうが、移動時にイライラすることがない。

だから、ウェットティッシュは、買っておいて損はない。

ドリンク

自販機は、すぐそばにあることが多い。
いっとくが、職場でコーラを飲んでいるやつは、ほとんどいない。
10年やってきて、コーラ飲みながら作業している人は、片手で数えられるくらい。

よく観るのが、十六茶ドデカミンはよく見る。
缶コーヒーは必須。
あと、いろはすレッドブル

レッドブルは、これ飲んで深夜も働けってこと??

マシンスペック

会社の懐事情による。
10年くらい前のスペックで開発しろってところもあれば、メモリを少し多めにつんだCorei7なんかもある。
どれだけ開発者を大事にしているか、ココで分かる。
開発マシンスペックを聞いて、開発者の立場をつかむのも、アリかもしれない。

Mac

ある現場はみたことあるけど、そんなにない。
Mac使うには、実際に開発でしようするような現場じゃないと無理。
ここでも、開発者の優遇具合が測れる。