Code for final

ふぁいなる向けのコード置き場です。すでにコードじゃないこともいっぱい。

SQL ServerでOracleみたいに@ファイル名でSQLを実行する方法。

SQL Serverで前々からOracleみたいに@sqlファイル名でSQLファイルを実行できないかと思っておりました。
以前簡単に調べたときは見つけられなかったのですが、今回またほしい機会があって調べたらありました!

以下のとおりにやればできました。同じようにお困りの方はお試しあれ。

1.SQLServer Management Studioで新しいクエリを開く

2.クエリメニューのSQLCMDモードを選択

3.クエリとして以下のように記述。:rをつけてスペースあけてファイル名を書く

:r c:\work\xxxx.sql
:r c:\work\xxxx2.sql
:r c:\work\xxxx3.sql

4.実行

Vue.jsを使った商用にも耐えれるフロントエンド開発環境を無償で手軽に整える手順。

最近、フロントエンドの共通処理方式を検討してくれと依頼されたため、前から気になっていたVue.jsを使ってみたかったこともあり、 思い切って提案したら普通に通りました。なので毎日Vue.js三昧です。楽しいです。
ただ、商用なシステムなので失敗は許されないので、いろいろと不安はありますが、いまのところうまく行ってます。

Vue.jsは単体で使用するとただのjsファイルなので、cdnとかで普通のhtmlに読み込めると使えるわけですが、 商用となるとフォルダ構成、ビルド環境、テスト環境とかどうしようか迷うわけです。
そしてチームで開発するため、その手順や運用が簡単じゃないとうまくいきません。
eclipseのテンプレートプロジェクトみたいなものがあればいいのに…と探すとありました!

ここではVue.jsを使った手軽な商用でも使える開発環境を構築する手順を記載します。
スペックにもよりますが、およそ30minくらいで構築が可能だと思います。 また、インストールなどの細かい手順はここでは記載していないのでググってください。

※今回の開発環境は期間が短く、また若手(スキルが低い)メンバーで開発をする必要があったもあって、 Nuxt.jsやVuexといった学習コストが高そうなものは採用しておりませんのでご了承ください。
その弊害でイベントの伝播で多少バケツリレーにはなりましたが、許容範囲だったと思います。

必要なソフトをいれる

必要となるソフトはまずはVisual Studio Code(VSCode)とNode.jsです。
以下からダウンロードしてそれぞれインストールします。

azure.microsoft.com

nodejs.org

Visual Studio Code拡張機能をいれる

VSCode拡張機能をアドオンして使うものなので、最低限必要と思うものだけ記載します。

marketplace.visualstudio.com

日本語で使いたいひとは必須です。

marketplace.visualstudio.com

Vue.jsをVSCodeで使うときは必須です。vueファイルに対応してくれます。

marketplace.visualstudio.com

デバッグするのに必須です。for Firefoxもあります。

marketplace.visualstudio.com

リアルタイムにコードの静的解析をしてくれるのであったほうが便利です。

marketplace.visualstudio.com

コードを整形してくれます。チームで開発するときはフォーマットがバラバラになるのであったほうが便利です。

上記は必須と思うものですが、ほかにも便利な拡張はあるかもなので必要に応じていれる。

VSCodeを起動してVue CLIをインストールして起動する

きど次にターミナルを開きます。ターミナルメニューから新しいターミナルを選択します。
ここで以下のコマンドを入力します。

npm install -g @vue/cli

次にVue UIを起動するため、以下のコマンドをたたきます。

vue ui

するとブラウザが起動し、Vue UIが起動します。
Vue.jsはie11でも動きますが、Vue UIはie11だと動かないので注意ください。

vueプロジェクトを作成する

Vue プロジェクトマネージャから作成を選択する。
任意の場所(c:\developなど)を決めて、ここに新しいプロくジェクトを作成するをクリック。
ここではプロジェクト名を「xxx」として作成することにするのでプロジェクトフォルダはxxxと入力します。

次のプリセットの選択は手動を選択します。

次の機能の有効化は以下のものを有効化します。
TypeScriptの有効化は強く推奨します。TypeScriptを使うことでコードをケアレスミスを防げますし、何よりシンプルに書けます。
最後に書いてますが、TypeScriptからJavaScriptへのコンパイルはビルド時に勝手に行われるため気にしなくてもいいです。
私が行った今回のプロジェクトではVuexは学習コストが高くなるため、見送ったので選択していませんが必要に応じて有効化してください。

  • Babel
  • TypeScript
  • Router
  • Linter / Formatter
  • Unit Testing
  • E2E Testing

次の画面でselectのところを以下のように選択します。 Cypressは企業のプロキシで弾かれる場合がありますので、その場合はNightwatchを選択してください。

Pick a linter : ESLint + Prettier

Pick a unit testing solution : Jest

Pick a E2E testing solution : Cypress or Nightwatch

すべて選択したらプロジェクトを作成するをクリック。 必要なファイルをダウンロードするのでそれなりに時間がかかります。
VSCodeのターミナルを見れば動いているので進捗がわかります。
終わったら以下のような画面が表示されます。

f:id:finalstream:20190428142904p:plain

サーバを起動する

上記の画面で、左側のメニューの一番下のタスクを選択します。
表示された一覧の一番上にある「serve」を選択し、タスクの実行をクリック。 するとビルドが始まります。下のところに緑のチェックマークが出るまで待ちます。

f:id:finalstream:20190428143926p:plain

アプリを開くをたたけばブラウザが起動し、サンプル画面が表示されます。

f:id:finalstream:20190428153513p:plain

ソースコードを確認する

VSCodeでプロジェクトフォルダ(xxxの場所)を開くとソースが種類ごとにフォルダに分かれて配置されています。 商用だとプロジェクトの構成は重要になると思いますので、このようにサンプルファイルが予め入っていてそれを 参考に配置すればいい感じになるのはとても便利です。

srcの下にcomponentsとviewsがあります。 componentsには共通部品を、viewsには画面のソースをいれます。
画面ごとにフォルダをきってもいいと思います。

f:id:finalstream:20190428160154p:plain

最後に

Vue.js(Vue CLI)のいいところは、簡単にオールインワンで最新の開発環境を構築できるというところだと思います。
TypeScriptといえばjsにコンパイルする環境を構築するのを勉強しなくてはいけないと思っていて 躊躇していた人もVue CLIでビルドをすれば勝手にjsに変換したものをビルドしてくれるし、 VSCode修正したtsファイルも何もせずにリアルタイムにブラウザに反映される。
さらに何もしなくてもデフォルトで今流行りのWebpackでビルドされるので、依存関係を気にせず開発でき、通信量削減にも繋がります。

これでひとまず開発環境は整いました。
あとは開発する上で気をつけることやハマったところを記事にしていきたいと思います。

Windowsのネットワークと共有センターのトラブルシューティングでも復帰しない場合に、ネットワークを初期化するコマンドを実行したら直った話。

先日、会社で使用していたPCが突然、ネットワークに繋がらなくなりました。
前日まで使えてたので設定が悪いわけでもありません。
そして周りの席のメンバーは普通に使えているのでネットワーク障害でもないです。

ネットワークトラブルのときよくやるのが、ネットワークと共有センターのトラブルシューティングですが、 それでも問題を特定できないと言われる。
顧客から借りているPCなので使えないと仕事にならないし、交換を依頼してもすぐもらえるかわからないし、 何よりレビューをする必要があるものがたまっている。
詰んだ。。

とりあえず状況を確認した。

設定を確認した

設定が飛んだ可能性を疑って、ipconfigをたたいたらipアドレスdnsが表示されたので設定は問題なかった。

ケーブルを交換した

隣のメンバーのケーブルを借りてやってみるもつながらず。

IPアドレスを交換した

さらに隣のメンバーのIPを借りてやってみるもつながらず。

バイスマネージャからネットワークドライバを削除して再インストールした

設定が消えて再設定するはめになったが、つながらず。

隣のメンバーの端末にpingを飛ばした

宛先ホストに到達できませんというエラーで到達できず。

デフォルトゲートウェイpingを飛ばした

宛先ホストに到達できませんというエラーで到達できず。

ここでデフォルトゲートウェイpingを飛ばした結果を見て気づきました。
pingコマンドの最後に表示される損失が正常なら0%ですが、25%だったり、50%だったり 実行するたびに変わってました。
こんな現象ははじめてでした。

藁をもすがる想いで事象に関連しそうなものをググったがピンポイントな 解決方法は見つからず。 海外のページにネットワークの初期化コマンドを実行すればよいと書いてあるようなところがあったので コマンドをひたすら実行してみた。
するとつながった。

最終的に成功したのは以下の手順です。

1. ネットワークを初期する以下のコマンドを2つ連続して実行する。

>netsh interface ip reset c:\reset.log
>netsh winsock reset

どちらも今まで使ったことが無いコマンドですが、ネットワークの設定をリセットしてくれるみたいです。
片方のコマンドだけではだめだったので注意。

2.再起動してipアドレスを設定し直す。

再起動後、ipアドレスの設定が消えている(dnsは残ってました)ので再設定するとなんと繋がりました。

というわけで、原因は全く不明ですが、ネットワークの復旧ができました!

デフォルトゲートウェイpingを飛ばしたとき、謎の損失が確認できるときは ひょっとしたらこの手順で解消できるかもです。 お試しください。