町田さくらまつりに

  • 2017.03.31 Friday
  • 22:47

 

町田のさくらまつりに、

ロケットの女王、ではなかった、椿の女王が来るそうです。

 

 

 

 

ハッピートミカ 2017春 来る!?〜速報

  • 2017.03.31 Friday
  • 20:20

 

予想を外して、

4月14日からの発売となりました。

 

女の子はリラックマです。

 

 

記事はここから>>>

 

 

さて、2月に予想したとおり4月にハッピーセット トミカが来そうです。

(いや、傾向から見れば誰でも予想できると)

トミカチケットをお持ちのお客様にビッグニュース!


ただ、昼に予想した発売時期は予想が外れ、ニュースの内容から、
4月21日からになりそうです。
(いつもの状況から、特典の前日から発売されるので)


まだ公式ではありませんが、
とりあえずお腹を空かせるだけ空かして待ちましょう!

 

というか、GWがハッピーお腹になるのは避けられない!?

 


それと、いつもと同じであれば、めばえ5月号

チケットは明日発売のにもついてくると思いますので、
当日朝マクドナルドの特典がなくなるとは思えませんが、
確実にチケットを手に入れたい人はめばえをどうぞ

 

追記170401

めばえ5月号、チケット付いていましたが、

やはり切り取るというのが抵抗ある人がいるようで、

今回からコピーでもOKになったようです。

 

そういえば、トミカのページでも、いつもは みほん と書かれるところが、

書かれておらず、これをコピーして持ち込んでもいいのでは?と思っていましたが、

とにかく、なんでもいいからチケットを持っていけば、

限定トミカが手に入れられるような感じのようですね。

 

 

さて、今回は何がハッピートミカになるかですが、

とりあえず、アンテナをさらに延ばして情報収集

 

まぁ、いつもの通り、パトカー、救急車は入るとして、

あとは何かな。

 

 

 

 

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

めばえ 2017年5月号【雑誌】【2500円以上送料無料】
価格:680円(税込、送料別) (2017/3/31時点)

 

 

 

■ハッピーセット関連記事
●マクドナルド公式サイト
ハッピーセット
ニュースリリース


●コンプリートの確率を計算されている方のブログ
ハッピーセット プラレール 2011 と「食玩問題」
ガチャをコンプするのに必要な回数


●ダブったのを交換された方
集まる(三十路かあちゃんノーテン記)
ハッピーセットの選べないおもちゃを選ぶ方法(てっちゃまん日記)

ハッピーセット のプラレール♪(Happy daily diary ♪♪♪)
ハッピーセットのプラレール♪(Happy daily diary ♪♪♪)

本来は選べないおもちゃです。
欲しくないからなどの理由で交換してもらうということは絶対にやめてください。
あくまでダブり過ぎたときの最終手段として、モラルを守って店員に聴いてみてください。

●トミカ比較されている方
マクドナルド厚木インター店 ハッピーセット トミカ
トミカのハッピーセット購入! 本家のトミカと比較してみました。


●紹介いただいた方
にゃいっちぃと電車のきっぷ(Panda NEKO No.1 ブログ)
新米パパの子育てエブリデイ
サンリオのハッピーセット!コンプの攻略法は?[完全版]

 

●情報をいただいた方

マックのハッピーセットにポムポムプリンのおもちゃが登場!ラインナップと識別番号は! | papamode

 



関連投稿
過去のハッピーセット一覧〜ハッピープラレール2013冬はあるか?
ハッピーセット〜初期不良の場合


■各年のハッピーセットプラレール/トミカの記事

 

■ハッピーセットプラレール 2016秋

ハッピープラレール2016秋が来る!?

 

■ハッピーセット トミカ2016春

ハッピーセットトミカ2016春、確定

次のハッピーセットはサンリオかな? +男の子はハッピートミカ2016春


■ハッピーセット チョロQ
そうか、それがあったか!〜ハッピーチョロQ

■ハッピーセットプラレール 2015秋
大当たり!〜ハッピープラレール2015開会式


■ハッピーセットトミカ2015
においがしてきた?〜ハッピートミカ
今日の予定(限定フライドポテトカー)
これは来そうだ?〜ハッピートミカ


■ハッピーセットプラレール 2014秋
ハッピーセットプラレール2014秋の陣!
コンプリートしません〜ハッピーセットプラレール


■ハッピートミカ2014
プラレールかと思ったら〜ハッピートミカ2014
ハッピーセット トミカ発売
そろそろダブりが来そうで怖い〜ハッピートミカ
ハッピーセット de オリジナルトミカ&こえだ


■2013年のハッピーセットプラレール
もしやこれはハッピーセットな予感〜ハッピーセットプラレール2013春
地道に行こう〜ハッピーセット2013春
とりあえず、コンプリート〜ハッピーセットプラレール2013

■2012年のハッピーセットプラレール
ハッピーセット プラレール 2012
はじまりました〜ハッピープラレール
とりあえず、コンプリート〜ハッピーセット プラレール 2012


■ハッピーセット2011
子供はハッピー お父さんのおなかはアンハッピー?
あと1ハッピーが・・・〜ハッピーセットプラレール
コンプリート〜ハッピーセット プラレール2011

■ハッピーセット2010
12ハッピー〜ハッピーセット プラレール2010
コンプリート〜ハッピーセット プラレール2010

 

 

 

ハッピーセット30周年だそうで

  • 2017.03.31 Friday
  • 12:54

 

ハッピーセットが30周年のようですね。

 

おかげさまで、「ハッピーセット」30周年

 

 

「ハッピーセット」30周年特設サイト

 

来年までいろいろと催されるようです。

 

それよりも、そろそろ2月に予想したハッピートミカの匂いがしてくるはずなのだが・・・

来るか来ないかアンテナ張りまくり中

 

周期的に4/7か4/14か

今日発表がなければ14日かな。

 

WSUSしてみる

  • 2017.03.31 Friday
  • 12:27

 

書こうと思って放置している間に

どうやら二番煎じな投稿になりそうなので、

 

インストール方法とかはそちらにお任せして、

 

細かい設定で調べたことなどを覚え書き

 

 

■WSUSサーバ

●何を選ぶか

設定で最初に悩まされるのが、どの製品をダウンロードするか

Windowsだけでもいろいろ種類があって迷ってしまうし、

全部落とすと容量がなくなって大変なことになる。

 

例えばWindows 10に関してこちらの記事が参考になる。

WSUS で選択する Windows 10 の製品分類について

 

 

●ディレクトリの変更

ディレクトリの変更方法

 

更新プログラムの格納場所の指定


文中の WSUSutil.exe の場所は


C:¥Program Files¥Update Services¥Tools
※¥は半角

 

にある。

 

 

●WSUSのバージョン

WSUNのバージョンを知りたい場合は次のページ参照

 

WSUS サーバーのバージョン番号について

 

●更新プログラムの更新プログラム

更新プログラムは場合によって新しい更新プログラムによって置き換わることがあるが、

どれがそれかを調べるのは大変難しい。

 

次を参考に優先という項目を表示させると承認、未承認の判断基準になるかも

 

WSUS の優先された更新プログラムの非表示について

 

 

●Microsoft Report Viewer

レポートを見ようとクリックすると
 

Microsoft Report Viewerがないので、見られないよ

とメッセージが出る。

 

Microsoft Report Viewer 2008 SP1 Redistributable - 日本語

からインストーラをダウンロードして、

 

 

インストールすればOK

 

 

 

■クライアント
サーバのアドレスを間違えると0x8024402Cエラーが出るので、設定を再確認する。


参考記事
0X8024402Cエラー〜プロキシ設定

 

 

接続したクライアントからUpdateをかけると0x80244010というエラーが希に出る。

とりあえず、再試行を何回かクリックで解消されるようだ

 

関連URL

WSUSサーバにアクセスするWindows7 SP1クライアントで 0x80244010 エラーが発生する
 

 

 

 

 

 

 

■未整理

 

●Windows 10 の更新プログラムの提供方法でクローズドな環境に提供できるか

Windows10 の機能として、ローカルにあるWindows10マシンのどれか1台でも更新すると、

他のマシンは一番近い、つまり、一番最新に更新したローカルのマシンから

更新プログラムをアップデートできる、更新プログラムP2P機能がある。

 

Windows 10 設定

 

この機能を使って、例えばクローズドな環境のマシン(1台だけアップデート用に外に繋がっている)にも

展開できるのかという疑問がでる。

 

ちょっとクローズドな環境を作ってみてテストしてみたのだが、

うまくアップデートができなかった。

 

いろいろ調べて、次のMSコミュニティを見つけた。

 

パケット 5G の環境で 2 台の PC を利用している場合、1 台 のみ更新しそのキャッシュで もう 1 台を更新してパケットを節約したい

 

結論として、更新は一度インターネットにつないで、「更新の検出」を行わないといけないようで、

クローズドな環境ではそれができないために、取得ができないようだ。

 

そのため、クローズドな環境でアップデートを実現するためには、

WSUSを置く必要がある。

 

 

●WSUSのクリーンアップ、再構築

 

参考URL

sqlcmd を単体でインストールして使用する方法

 

「WSUS 管理コンソールにつながらない!」を解消するための 6 つのワザ

WSUSのクリーンアップ

WSUS DB インデックスの再構成の手順について

WSUSデータベース 不要なレコードの削除

 

Hyper-V Serverマシンでもファームアップできるのか?〜Dellサーバファームアップ

  • 2017.03.31 Friday
  • 12:13

 

先日、DELL様から、

昨年購入されたサーバー(RAIDコントローラ)に不具合があり、ファームアップをお願いしたい

なる電話が来た。

 

確かに、バージョンを確認すると、対象の機器のようだ。

 

しかし!仮想マシンお遊びように購入したマシンなので、

OSが載っていない、いやHyper-V Server 2012という

Windows Server OSなんだか、ハイパーバイザーOSなんだかよく分からないものなので、

 

果たしてファームアップのプログラムが動くのだろうかという疑問が出てきた。

 

以前、メーカーにHyper-V server はサポートできるかと聞いた際に、

(結論としてはNG)

 

Hyper-V serverではIEがないので、

メーカーのツールを閲覧するためのブラウザがインストールできるのか?

について調べて見たことがあり、

 

次のページを見つけて、普通のデスクトップマシンと同じようにインストールできるというのを目にしてはいたので、

 

Install GUI apps on Windows Hyper-V Server and Windows Server Core

 

もしかすると更新プログラムも動作するかも?

ということで、ダメもとで挑戦してみることに。

 

対象の更新プログラムをダウンロードして、

 

 

コマンド実行!

 

 

動いた!

 

 

無事ファームアップ完了

 

よかったよかった。

 

 

調べてみると、足りない部分をちょっと便利にしたいと思っている人はやはりいるようですね。

 

Hyper-V Server 2016 を使い易くする備忘録

 

 

 

関連投稿

Hyper-Vがメモリリーク?

Hyper-V Server覚え書き

持っているPCのOEMライセンスでHyper-Vを構築できるか

CentOS on Hyper-Vの覚え書き

CALの考え方〜Windows Server

 

 

Dell NX3230(NASサーバ)を再構築してみる

  • 2017.03.28 Tuesday
  • 22:37

 

大量のデータなどを保存しておくのに、市販のHDDではいくら台数があっても足りないし、

物置があっても足りないのではというくらいHDDが山積みになってしまう。

 

ついこの間までHDDは1Tとか2Tだったのが、

ここ最近になり、10T HDDとか販売されるようになり、

1台のサーバに100Tとか積めるようになった。

 

ということで、大容量のストレージサーバを買ってみた。

 

まぁ買ったらそのまま使えるようになっているので、

何も考えずにゴリゴリ設定すれば良いだけなのだが、

 

なにぶん初期設定が嫌いな性分なんで、RAID構成とか変更してみることに

・・・となんだかんだ書きますが、結局元の状態に戻して使用していますが・・・

 

RAID構成に関してはずいぶん前に書いた方法でできるようなので、

そちらを読んでもらうことにして、

 

 

初期化したので、再インストールが必要になる。

とりあえず下のページを参考にインストール

 

[NAS] PowerVault NASシリーズにおけるOSインストール手順 for Windows Storage Server 2012

 

と思うのだが、そんなに簡単にはいかなさそうだ・・・

 

 

インストールは通常サーバとは異なり、

Lifecycleからはできないようなので、DVDを入れて再起動

 

ただ、起動順などを設定していないとHDDを読みに行ってしまうので、

F11でDVDドライブを選択しつつ、起動が必要である。

 

とりあえず、設定してDVD起動すると・・・
 

 

再インストールするのに、Virtual Disk 0 を消して良いかということで、

Noボタン、

Delete existing Virtual Disk 0 and procees with reinstall oparetion

を選択する。

 

※Yesだとキャンセルされてしまうので注意

 

 

実行すると永久に失うよ→Yes

 

 

これでインストールが開始される・・・ようだが、動いているのか分からない

 

そして、待っていると、こんなメッセージが

 

 

どうやらスクリプトが 応答なし になっているというメッセージのようだ。

 

これはまずいのでは!と思ってしまうのだが、

このメッセージには全く触れないように無視する。

無視する!絶対に無視する!!

 

もし、このメッセージに触れてしまうとスクリプトが停止して、

永遠にインストーラが起動しないことになるので、要注意、いや、厳重注意!!!

 

とにかくインストール作業(インストール初期処理)が終わるまでは手を付けずに放置すると・・・

 

ようやくWindows Storage のインストーラが起動する。

 

インストールが終わってOSを立ち上げるのだが、

次を見逃してしまうと大変なことになるトラップ

 

 

デフォルトパスワードは Stor@ge! だよ

 

見逃したら、上のサイトにも載っているので慌てなくても大丈夫であるが、

英語圏でない人間だと絶対スルーしてしまいそうなので注意

 

 

さて、インストールできたので、上のページを参考に

C:¥Dell_OEM¥MUI の JA-JP.BAT を実行して日本語化

※もし作られていないような場合は、DVDにも収録されている

 

 

 

順調のように見えたら・・・

 

あれ?キーボードから日本語使えない???

調べてみると、次のサイトを見つけたが・・・

 

Windows Server/Windows Storage Server 2012のキーボード日本語化について

 

この通りにやっても全く効果なし・・・。

いろいろな日本語キーボードに変更しても全く日本語が打てない

 

 

 

仕方ないので、キーボードは後回しにして、

他のデバイスとか言うのが警告マークでリストされているのでそちらから

 

 

Lifecycleから入れられればこの辺は入れてくれるのだが、

DVDからだとOS以外は入れてくれないようだ。

 

不親切にドライバCDもないので、いろいろ調べてみると、次のサイトを見つけた

 

PowerVault NX400のStorage Server 2012ドライバー

 

なるほど、もしかすると、NX3230もチップセットがらみかもしれない

ということで、ドライバを探しに行く

 

Dell Storage NX3230のサポート

 

 

スクロールして、チップセットを探すとありました。

 

 

チップセットをダウンロードして、インストールすると

 

 

 

消えました。

 

 

さて、キーボードは相変わらず日本語が打てない

とりあえず、Windows Updateしたら、DellのDriverが入っているので、

アップデートしてみても、

 

 

効果なし?

 

面倒なので、デフォルトのキーボード(HID キーボードデバイス)に戻したら、

 

 

なんかよく分からないけど日本語が使えるように。

 

もしかするとアップデートでドライバが更新された、もしくはチップセット同様に正しいドライバがインストールされたのかも

 

関連記事
DellサーバRAID構築〜PERC H700編
DellサーバRAID構築〜PERC H710編
DellサーバRAID構築〜PERC H710 Lifecycle Controller編

 

TypeScriptでLeafletを使ってみる・・・まで〜Visual Studio 2015

  • 2017.03.24 Friday
  • 23:26

 

さて、前回で終わりにしたが、

例えばjQueryなど、JavaScriptにしかないコードをTSに取り込むことはできるのか。

という話

 

ここ最近、黄色い電気ネズミゲームで良く目にするであろう地図でも使われているLeafletを

TypeScriptでも使えるのか調べて見たところ、

d.tsさえ取り込めば行けるような感じだったので、Visual Studioに組み込んでみることにした。

 

d.tsというのは、

簡単に言えば、C言語のヘッダファイルのようなものになる。

 

TSは型が定義された言語であるが、JavaScriptはそれがないので、

ソースをゴリゴリ書こうと思っても、型が不明と言われてしまう。

そこで、このd.tsというファイルで各変数やメソッドの型を定義してあげることで、

TSからJSの機能が使えるようになるわけである。

 

 

さて、下の記事によると、Leafletのd.tsを入れるには、npmコマンドを打つようである。

 

Making Map with Leaflet in TypeScript

 

なので、Visual Studioにnpmを組み込む必要があるので、

npmについて調べたところ、次の記事を見つけた。

 

最近のWebフロントエンド開発環境を Visual Studio 2015 (VS Code ではない)で構築する - npm パッケージインストール編 -

 

Visual Studioに Package Installer というものをインストールすれば良いらしい。

 

ツールの拡張機能と更新プログラムから

Package Installerで検索してインストール

で、記事の通り、Quick Install Packageでインストールしてみたのだが、

 

 

どうも、インストールされたような感じがしない。

 

どうやらソリューションファイルと同じ場所にインストールされてしまったようだ。

 

ということで、(自分の場合は)コマンドから打ち込んだ方が良いということで、

ツール→NuGetパッケージマネージャー→パッケージマネージャーコンソールを表示させて

 

 

npmコマンドを打ち込む。

※npm versionでインストールされているか確認できる

 インストールされているなら上のPackage Installerのインストールは不要

 入れてしまっていて、不要であればアンインストールか無効にすれば良い

 

 

っとその前に、dirコマンドで現在位置を確認すると、

 

やはりソリューションファイルの位置にいるようなので、

インストールするプロジェクトのフォルダにcdコマンドで移動して、

 

 

Leafletをインストール
 

 

インストールする場合は、leafletだけコマンドを打ち込んでも

勝手にgeojsonもインストールしてくれるのだが、

 

@types¥leafletの下に、node_modules¥@types¥geojsonという感じで置かれてしまうので、

 

 

やはり手順通り、geojsonを先にインストールして、

Leafletを続いてインストールした方が良いようである。

 

 

インストールしても変化がないようなら、すべてのファイルを表示で表示すると、

node_moduleフォルダ〜〜ができているはずである。

 

 

 

続いてソースを書く前に、これからゴリゴリ書くTSファイルの先頭に

referenceタグを追加して、

leafletとgeojsonのパスを通しておく。

 

/// <reference path="node_modules/@types/geojson/index.d.ts" />

/// <reference path="node_modules/@types/leaflet/index.d.ts" />

 

ちなみに、おまじないを書いておかないと警告が出る

 

 

 

あとはソースをゴリゴリ書くだけ・・・

 

 

表示できたので、Typescriptからでも扱えているようだ

 

 

 

あくまでd.tsファイルは型宣言や補完に使うだけで、

実際に動いているのはJSファイルのソースになるので、

間違いなく書けば動くのは当たり前である。

 

 

追記1

npmが全く無反応なので、ああ、いつものプロキシか・・・

ということで、設定。

 

プロキシの設定はこちらを参考にした

npm の proxy と registry 設定

 

自分のプロキシは上2行で問題なく通った。

追記2

コンパイルをするとLeafletのindex.d.ts上で、こんなエラー(TS1084)が出る。

 

TS1084 無効な reference ディレクティブ構文です。

 

仕様書に書いてあるreference タグのtypesによると、

 

'/// <reference types="..." />

 

という先ほど書いたpath="〜〜〜"ではなく、types="〜〜〜"に変えることで、

先ほどインストールされた@type以下を自動的に参照してくれるようで、

自分の環境の場合、これがうまく働いていないようで、エラーが出ているようだ。

 

考えてみるとVSのtsファイルは特にreferenceを宣言しなくても

VBやC#のように勝手に全ソースを見渡してくれるので、

コメントアウトして上書き保存して対処すればよい(?かもしれない)

 

追記3

d.tsのコンパイルミスか、VSのTypeScriptがエラーに厳しいのかは難しいところだが、

上のLeafletを入れるとこういったエラー(TS1110)が出る

 

 

TS1110 型が必要です。

 

どういう風に直せば良いのかが難しいが、

考えてみるとd.tsファイルはあくまで型宣言のないjsファイルに型を持たせてあげている定義ファイルなので、

自分がゴリゴリ書くソースで上でこのファイルから戻り値などは来ない訳である。

 

基本的に実行されるのは、tsファイルを変換したjsファイル

 

あくまで宣言が通れば良いとすれば、エラーの出ないような型に変更してあげれば良さそうである。

 

上の例だと、falseはboolean型なので、boolean

nullは、とりあえずany型としてあげたらコンパイルが通った。

 

よく分からないときはany型を使って逃げてしまうのもあり?

 

このやり方が正しい角かの判断は難しいところだが、

実際に動作するときには、index.d.tsは使用されないので、自分の中では解決と考えている。

 

※あくまでd.tsファイル上での修正なので、

 自身のソースコード上でのエラーであれば、 適切な型宣言を行ってください。

 

追記3

これまた上と同様に、d.ts変換時のミスと思われます。

 

?マークはオプション(引数を省略できる)の変数という意味で、

この場合の警告は、クラスメンバーを省略可能できないということなので、

?を消せば良いと思われる。

 

TS1112 クラスメンバーを省略可能として宣言することはできません。
 

※こちらもあくまでd.tsファイルの回避策なので、

 自身のソースコードでは正しい書き方で回避してください。

 

 

 

VB的に覚える TypeScript その8 〜 Visual Studio 2015

  • 2017.03.24 Friday
  • 23:13

 

前回 interface を説明できたので、

ようやく話を戻すことができる。

 

まず、Select [Combobox]を追加で配置する

[]内はVBのコントロール名

 

 

SelectにOptionをあらかじめ追加しても良いのだが、

今回はTSを使って追加することにする。

 

 

■VBのCombobox

いつも通り、VBで書いてみる。

こちらもソース上でItemを追加する。

まずは、HTMLのSelectと同じような感じにするため、構造体で次を作る。

(これをやりたかったので、前回構造体について説明した)

 

   1:  Private Structure Job
   2:   
   3:      Public Property Text As String
   4:   
   5:      Public Property Value As String
   6:   
   7:      Public Overrides Function ToString() As String
   8:   
   9:          Return _Text
  10:   
  11:      End Function
  12:   
  13:  End Structure

 

続いてLoadに次のソースを追加する。

 

   1:  Dim ojItem() As Object = New Object() {New Job() With {.Text = "会社員", .Value = "kaisha"},
   2:                                         New Job() With {.Text = "公務員", .Value = "koumu"},
   3:                                         New Job() With {.Text = "自営業", .Value = "jiei"},
   4:                                         New Job() With {.Text = "パート", .Value = "part"},
   5:                                         New Job() With {.Text = "学生", .Value = "student"}}
   6:  'Me.ComboBox1.Items.Clear() 'あらかじめItemが入っていた場合のリセット
   7:  Me.ComboBox1.Items.AddRange(ojItem)
   8:  Me.ComboBox1.SelectedIndex = 0I

 

1行目で追加するItemをObject型の配列で作って、

7行目でAddRangeでComboBoxのItemに追加

※AddRangeはObject型の配列なので、Job構造体をObjectに変換する必要がある。

 Job配列をObjectに変換しても良い。それについてはずいぶん前の記事参照

 

8行目で先頭を選択

 

実行すると

 

 

と追加される。

 

ちなみに、構造体の7行目でToStringメソッドを実装しているので

Comboboxのリストはその内容が表示される。

 

定義しないと構造体が表示されてしまう。

 

こちらもずいぶん前に書いた記事を参照

ListBoxやComboboxのDisplayMemberを考える〜VS2008

 

 

■TSでSelectに追加

さて、同じ感じでTSで書いてみる。

 

まずは構造体だが、前回書いた様にTSではVBでいう構造体はないので、

Interfaceでオブジェクトの定義型を作る。

 

   1:  namespace Job {
   2:      export interface Job {
   3:          Text: string;
   4:          Value: string;
   5:      }
   6:  }


これをonload時に先ほど作ったSelectに追加する

   1:  var fmSelect = <HTMLSelectElement>document.getElementById("Select1");
   2:  var fmOption: HTMLOptionElement;
   3:  var i: number;
   4:   
   5:  var ojItem: Job.Job[] = [{ Text: "会社員", Value: "kaisha" },
   6:                           { Text: "公務員", Value: "koumu" },
   7:                           { Text: "自営業", Value: "jiei" },
   8:                           { Text: "パート", Value: "part" },
   9:                           { Text: "学生", Value: "student" }];
  10:   
  11:  //fmSelect.innerHTML = ""; //あらかじめOptionが入っていた場合のリセット
  12:   
  13:  for (i = 0; i < ojItem.length; i++) {
  14:      fmOption = new Option();
  15:      fmOption.value = ojItem[i].Value;
  16:      fmOption.text = ojItem[i].Text;
  17:   
  18:      if (i === 0) 
  19:          fmOption.selected = true; //ここで選択           
  20:      
  21:      fmSelect.add(fmOption); //追加
  22:  }

 

VBに合わせるためにこんなソースになっているが、

TSはここまで複雑にする必要はないかもしれない。

 

とりあえず内容を見ていくと、

 

1行目でSelectを取得

5行目でVBのようにInterfaceを使ったオブジェクトの型定義をする。

13〜22行目でOptionを追加

 

まずはこんなところで、実行すると

 

 

わざわざinterfaceを組まなくても、

Optionを使って

 

   1:  var obItem: HTMLOptionElement[] = [new Option("会社員","kaisha" ,false,true ),
   2:                                     new Option("公務員","koumu" ),
   3:                                     new Option("自営業","jiei" ),
   4:                                     new Option("パート","part"),
   5:                                     new Option("学生", "student")];
   6:   
   7:  for (i = 0; i < obItem.length; i++) {
   8:      fmSelect.add(obItem[i]); //追加
   9:  }

 

とやった方が良さそうだ。

interfaceを使った方法はJSONなどからリストを読み込んだ場合などに使えそうなので、

どちらでもよさそうではある。

 

 

■ボタンに機能を追加する

さて、ここまで作ったらボタンに機能を付ける。

まずはVB

 

   1:  Dim slJob As Job = DirectCast(Me.ComboBox1.SelectedItem, Job)
   2:   
   3:  If txName <> "" Then
   4:      MessageBox.Show(String.Format("{0}さん {1}才 {2}", txName, nmAge, slJob.Text))
   5:  Else
   6:      MessageBox.Show(String.Format("ななしさん {0}才 {1}", nmAge, slJob.Text))
   7:  End If

 

選択されたComboboxのItemをキャストして、

メッセージ出力部を修正

 

 

HTMLのSelectに合わせて

Job構造体にValueを作ったが要らなかったようだ。

 

■TSのボタンに機能追加する。

VBをTSに翻訳する

   1:  var fmOption: HTMLOptionElement = <HTMLOptionElement>fmSelect.selectedOptions.item(0);
   2:  var txJob: string = fmOption.text;
   3:   
   4:  //省略
   5:   
   6:  if (txName !== "")
   7:      alert(`${txName} さん ${nmAge} 才 ${txJob}`);
   8:  else
   9:      alert(`ななしさん ${nmAge} 才 ${txJob}`);

 

valueを使おうかと思ったが、

こちらもVBをそのまま変換することができた。

 

実行すると

 

 

■せっかくなので

せっかくValueがあるので、

 

   1:  Dim txJob As String
   2:   
   3:  Select Case slJob.Value
   4:      Case "kaisha" : txJob = "会社員"
   5:      Case "koumu" : txJob = "公務員"
   6:      Case "jiei" : txJob = "自営業"
   7:      Case "part" : txJob = "パート"
   8:      Case "student" : txJob = "学生"
   9:      Case Else : txJob = "その他"
  10:  End Select

 

とValueから値を変換するコードを書いてみたりもできる。

 

TSなら

 

   1:  switch (fmOption.value) {
   2:      case "kaisha":
   3:          txJob = "会社員";
   4:          break;
   5:      case "koumu":
   6:          txJob = "公務員";
   7:          break;
   8:      case "jiei":
   9:          txJob = "自営業";
  10:          break;
  11:      case "part":
  12:          txJob = "パート";
  13:          break;
  14:      case "student":
  15:          txJob = "学生";
  16:          break;
  17:      default:
  18:          txJob = "その他";
  19:          break;
  20:  }

 

という感じになる。

 

さて、だいたい書きたいことは書いてきたので、

VB的に覚えるTypeScriptはこの辺でいったん投稿を終わりにする。

 

ざっと見てきても分かるように、

JavaScriptで考えるよりもVBなどからダイレクトに言語変換できるので、

JavaScriptをはじめようと考えているなら、

まずはTypeScriptから入ってみるのが早いかもしれない。

 

その後、コンパイルされて生成されたJavaScriptを眺めて

JavaScriptを勉強した方が、理解が早いのではと考える。

 

 

関連記事

VB的に覚える TypeScript その1 〜 Visual Studio 2015

VB的に覚える TypeScript その2 〜 Visual Studio 2015

VB的に覚える TypeScript その3 〜 Visual Studio 2015

VB的に覚える TypeScript その4 〜 Visual Studio 2015

VB的に覚える TypeScript その5 〜 Visual Studio 2015

VB的に覚える TypeScript その6 〜 Visual Studio 2015

 

 

HTMLアプリのデバッグができない?〜VS2015 + HTMLアプリケーション

XAMLデザイナーのデザインビューが表示されない?〜Visual Studio 2015

 

 

Visual Studio 2015の調子がおかしい?〜Windows Updateが原因

  • 2017.03.23 Thursday
  • 12:53

 

2日くらい前に久しぶりにWindows Updateをかけた翌日くらいから、

なんだか調子がおかしい

 

自分の場合はVisual Studio 2015で改行すると変なところに飛ばされたり、

使っていくうちに、ファイルが上書き保存されなくなる不具合まで、

 

一度消そうとexplorerを立ち上げると、バタバタと落ちる

 

調べてみるとUpdateした時に入れたKB4013429というのが原因らしい。

 

Windows Updateを再度かけてみるとFixしたアップデートが公開されていた

KB4015438

 

解消されたかどうかはまだ分からないが、たぶん大丈夫かな?

 

VB的に覚える TypeScript その7 〜 Visual Studio 2015

  • 2017.03.22 Wednesday
  • 21:52

 

クラスが出てきたので、構造体の話をしてみるが、

どうやらJSにそういったものがないので、TSにもないようだ。

 

いや、そもそも、VBやC#の構造体は、

参照型(クラス)か、値型(構造体)かの違いで、書き方などはほぼ同じもので、

前回書いたFruitクラスは Class を Structure に変更するだけで構造体にできる。

 

今回はTSの話なので、細かいところは他力ちゃんするが、

 

参照

クラスと構造体の使い分け

クラスまたは構造体の選択

 

VBでいうところの構造体は、TSではクラスで考えた方がよい。

 

 

では、構造体のようなものは本当に作れないのか

 

VB.netではなく、VB6やVBA、C言語の頃の構造体を思い出してみると、

値をまとめたモノを定義することはできた。

 

例えば、VB6やVBAなら Type を使って

 

   1:  Type Fruit
   2:    Name As String
   3:     Price As Integer
   4:  End Type

 

C言語なら struct を使って

 

   1:  struct Fruit{
   2:    char Name[256];
   3:     int  Price;
   4:  }

 

と書ける。

 

■TSで構造体(オブジェクトの型定義)

こういった形であれば、TSでも表現することができる。

 

   1:  namespace Yaoya {
   2:      export interface Fruit {
   3:          Name: string;
   4:          Price: number;
   5:      }
   6:  }

 

とinterfaceを使えばよい。

 

   1:  var newFruit: Yaoya.Fruit = { Name: "みかん", Price: 100 };
   2:   
   3:  alert(newFruit.Name + ":" + newFruit.Price);

 

 

ただし、実装している変数にもれなく値を入れる(初期化する)必要がある

 

 

ちなみに、インターフェイスの本来(?)の使い方は上のようなものではなく、

(上の使い方はオブジェクトの型定義などと言うようです)

 

例えば、長いことプログラムをゴリゴリ書いていると、

よく使う変数など、1つにまとめられるようなものが出てくると思う。

 

そういったものを1つにまとめた部品として、つまりinterfaceで定義しておくことで、

これから新たに作る際、生産性を上げることができる。

(間違いを少なくすることもできる)

 

クラスに似ているが、インターフェイスはあくまで定義が書かれただけのものになる。

 

逆に考えると、オブジェクトの型定義を1つの変数として値を渡すことができるので、

必ず必要なパラメータを渡したりするときは代入や取得のミスを少なくすることもできたりする。

 

細かいところは他力ちゃんします。

 

連載! とことん VB: 第 17 回 クラスの多重継承とその代替案

オブジェクトをつなぐためのインターフェイス

Typescriptのinterfaceの使い方

 

 

■interfaceを継承する

他力ちゃんですが、interfaceを継承したクラスを書いてみると

だいたいこんな感じになる。

 

   1:  namespace Yaoya {
   2:   
   3:      export interface IName {
   4:          Name: string;
   5:          Price: number;
   6:      }
   7:   
   8:      export interface ISanchi {
   9:          Sanchi: string;
  10:      }
  11:      
  12:      class Yasai implements IName {
  13:          Name: string;
  14:          Price: number;
  15:          Sendo: number;
  16:      }
  17:   
  18:      class Fruit implements IName, ISanchi {
  19:          Name: string;
  20:          Price: number;
  21:          Sanchi: string;
  22:   
  23:          private _Toudo: number;
  24:          
  25:          get Toudo(): number {
  26:              return this._Toudo;
  27:          }
  28:     
  29:          set Toudo(value: number) {
  30:              this._Toudo = value;
  31:          }
  32:      }
  33:  }
  34:   
  35:  namespace Sakanaya {
  36:      
  37:      interface ISendo {
  38:          Sendo: number;
  39:      }
  40:   
  41:      class Gyokai implements Yaoya.IName, Yaoya.ISanchi, ISendo {
  42:          Name: string;
  43:          Price: number;
  44:          Sanchi: string;
  45:          Sendo: number;
  46:      }    
  47:  }

 

interfaceをいくつか定義して、

Yasaiクラスのように継承したいinterfaceをimplementsで定義して書いてみたり、

 

Fruitクラスのように、複数のinterfaceを継承したり、

クラス独自の変数を定義したり、

 

namespaceでやおやとさかなやに別けて、

interfaceをexportすることで、別のnamespaceでも使用したりできる。

 

なお、interfaceは定義を継承する形となるので、

定義された変数やメソッドを実装していないと警告がでる。

 

 

 

継承できる点でクラスに似ているところはあるが、

何かを定義する(まとめる)というのは、

ある程度ゴリゴリ書いてからでないと、それをすることが難しいと思うので、

interfaceを継承する場面がどのくらいあるのか疑問である。

 

むしろinterfaceは上に書いたオブジェクトの型定義として使った方がよいかなと思う。

(ゴリゴリ書ける人はどんどん使った方がよいでしょう)

 

ザックリですがこんなところ。

 

 

関連記事

VB的に覚える TypeScript その1 〜 Visual Studio 2015

VB的に覚える TypeScript その2 〜 Visual Studio 2015

VB的に覚える TypeScript その3 〜 Visual Studio 2015

VB的に覚える TypeScript その4 〜 Visual Studio 2015

VB的に覚える TypeScript その5 〜 Visual Studio 2015

VB的に覚える TypeScript その6 〜 Visual Studio 2015

 

 

HTMLアプリのデバッグができない?〜VS2015 + HTMLアプリケーション

XAMLデザイナーのデザインビューが表示されない?〜Visual Studio 2015

 

calendar

S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< April 2017 >>

search this site.

よく使う、検索される投稿

categories

アマゾン

楽天

selected entries

archives

recent comment

recent trackback

profile


※当ブログはリンクフリーですが、 取材や雑誌等で掲載される場合は、事前にお知らせください

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM