SlideShare una empresa de Scribd logo
1 de 27
N分で作る
TypeScript で Node.js
Visual Studio編
@TANAKA_733
@tanaka_733 (自己紹介)

   お仕事
       Ruby, Java, Node.js, Lua とかでPaaSをごにょっている人
   趣味
       C#な開発
       Windows Phone (7/8)
       Windows Store Apps
       Kinect
   ブログ
       銀の光と碧い空
@tanaka_733 (自己紹介)

   お仕事
       Ruby, Java, Node.js, Lua とかでPaaSをごにょっている人
   趣味
       C#な開発
       Windows Phone (7/8)
       Windows Store Apps
                               TypeScript やるしかない!!!
       Kinect
TypeScript で Node.js

   昔書いた記事のブラッシュアップ版
        http://techblog.hilife-jp.info/2012/10/nodejs-typescript/
   今回はVisual Studioで
   Ts ファイルからjs ファイルへは同じtsc コマンドなのでほかのエディタでも基本同じ
   準備
        Visual Studio 2012 (VS Express for Web か VS professional Edition以上)
        TypeScript VS Plugin (v0.8.2)
              http://www.microsoft.com/en-us/download/details.aspx?id=34790
        Node (v0.8.17), nvmw を使用しています
              https://github.com/hakobera/nvmw
        Git client
              http://code.google.com/p/msysgit/downloads/list?q=net+installer
プロジェクト作成




           0.8.2 から Visual C#から
               TypeScriptの下に
BOM問題

   Visual Studioのテキストファイルのデフォルトエンコードは、
    SHIFT-JISもしくはUTF-8 BOM付きの模様
   Node.js のライブラリまわりでよくはまることが…
   デフォルトの設定はなさそう
   めんどいですが、1つ1つ保存しなおし。
   よりよい方法があったら教えてください <m(__)m>
ファイル > 名前を付けて保存



                  UTF-8 シグネチャなし
                    (BOMなしのこと)




                   ここを押して、
                  エンコードを選択
TypeScript定義ファイルを取ってこよう

   https://github.com/borisyankov/DefinitelyTyped
    が更新頻度が高いのでおすすめ。
   > git clone https://github.com/borisyankov/DefinitelyTyped.git
その1 Hello World

   app.ts を消して一から書き直し。
   まずは、これを書いて定義ファイルを参照可能にする
   ///<reference path='DefinitelyTyped/node/node.d.ts'/>

     import http = module('http')
     http.createServer(function (req, res) {
         res.writeHead(200, { 'Content-Type': 'text/plain' });
         res.end('Hello Worldn');
     }).listen(1337, '127.0.0.1');
     console.log('Server running at http://127.0.0.1:1337/');
こんな感じInteliSense が効きます
node.js を起動する

   > node app.js
その2 パッケージ&PaaSにデプロイ

   npm: node のパッケージ管理システム
   package.json をいつも通り記述 (UTF-8 ボムなしで保存)

       {
             "name": “typescript-sample"
           , "version": "0.0.1"
           , "private": true
           , "dependencies": {
               "express": "3.0.0"
             , "ejs": ">= 0.8.3"
             , "jade": ">= 0.27.7“
           }
       }
npm install でパッケージをインストール

   > npm install を実行
app.ts を書き換え

///<reference path='DefinitelyTyped/node/node.d.ts'/>
///<reference path='DefinitelyTyped/express/express.d.ts' />
///<reference path="DefinitelyTyped/underscore/underscore.d.ts" />

import http = module('http')
import url = module("url")                          コンパイルエラーでるの
import routes = module("./routes/index")             は、あとで追加します
import express = module('express')
var app = <express.ServerApplication> express()

var port = process.env.VCAP_APP_PORT || 1337;          後半のPaaSに
// 続く                                                  デプロイして
                                                     クラウド上で動くときに
                                                        使います
app.ts を書き換え

app.configure(function () {
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');
    //express3
    app.set('view options', {
        layout: false
    });
    app.use(express.bodyParser({}));
    app.use(express.methodOverride());
    app.use(express.static(__dirname + '/public'));
});

//続く
app.ts を書き換え

app.configure('development', function () {
    app.use(express.errorHandler({ dumpExceptions:
true, showStack: true }));
});

app.configure('production', function () {
    app.use(express.errorHandler());
});

// Routes
app.get('/', routes.index);
app.listen(port);
console.log('Server running at http://127.0.0.1:' + port + '/');
routes フォルダを作成して、index.ts追加


///<reference path='/DefinitelyTyped/express/express.d.ts' />

import express = module("express")
export function index(req: any, res: any) {
    res.render('index',
   { title: 'Page Title', testArray: ["1", "2", "3", "4"] })
}
views フォルダ追加してViewを定義

    jade は素人なのでもっといい書き方があるかも
    このjade (ejsも) VSの補完は効かないし、
     BOMなしで保存しなおさないといけないので、
     VS以外のエディタでやるのがいいような…
    views/layout.jade (ファイルはもう一つ次のページに)
    !!! 5
    html
      head
        title PageTitle
      body
        #container
           #header
        block mainContent
views フォルダ追加してViewを定義

   views/index.jade
    extends layout

    block mainContent

      h1= title
      p Welcome to #{title}


      ul
      - each test in testArray
        li
           a(href= "/user/"+test)
             b= test
実行

   > node app.js
PaaSにデプロイ

   最近は、node.js が動くPaaSが増えてきました
       Azure Web Site, Heroku などなど
   今回は 変わったとこで、Uhuru Cloud を使ってみます
       OSS なPaaS CloudFoundryを使ったサービスの1つ
       CloudFoundry自体はRuby を中心に書かれています
       CloudFoundry本家でもNode.js使えます
       Uhuru は .NET も動かせるのが違うところ
Uhuru Cloud の登録

   http://uhurusoftware.com/ からユーザー登録
コマンドラインツールのセットアップ

   要Ruby 1.9.2 以上
   http://support.uhurusoftware.com/entries/21454287-deploying-and-
    managing-apps-with-command-line
> ruby --version
ruby 1.9.2p290 (2011-07-09) [i386-mingw32]
> gem update –system
> gem install vmcu

> vmcu target services.uhurucloud.com
  Successfully targeted to Uhuru AppCloud [http://services.uhurucloud.com]
> vmcu login
> vmcu cloud-team                Webの管理画面から
                                OneTimeToken 発行して入力
コマンドラインツールからデプロイ


> cd <ProjectFolder>                 本当はビルド成果物(js)とjadeファイルだけで十分


> vmcu push hello-typescript   --runtime node08
                                                  アプリ名はグローバルで一意なので
# 以下プロンプトは全部デフォルトのままEnterでOK                         適当に変えてください
(参考)プロンプト
>vmcu push hello-typescript --runtime node08
Would you like to deploy from the current directory? [Yn]:
Detected a Node.js Application, is this correct? [Yn]:
Application Deployed URL [hello-typescript.uhurucloud.com]:
Memory reservation (128M, 256M, 512M, 1G, 2G) [64M]:
How many instances? [1]:
Bind existing services to 'hello-typescript'? [yN]:
Create services to bind to 'hello-typescript'? [yN]:
Would you like to save this configuration? [yN]:
Creating Application: OK
Uploading Application:
  Checking for available resources: OK
  Processing resources: OK
  Packing application: OK
  Uploading (2M): OK
Push Status: OK

Staging Application 'hello-typescript': OK

Starting Application 'hello-typescript': OK
アプリにアクセス


URL は <appname>.uhurucloud.com
hello-typescript なら hello-typescript.uhurucloud.com
おつかれさまでした

   ここまでのサンプルは Github においています

Más contenido relacionado

La actualidad más candente

ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
 
映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010
Hiroh Satoh
 

La actualidad más candente (20)

TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築
 
第5回勉強会
第5回勉強会第5回勉強会
第5回勉強会
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 
Windows スクリプトセミナー WMI編 VBScript&WMI
Windows スクリプトセミナー WMI編 VBScript&WMIWindows スクリプトセミナー WMI編 VBScript&WMI
Windows スクリプトセミナー WMI編 VBScript&WMI
 
Windows で PHP をビルドしてみた
Windows で PHP をビルドしてみたWindows で PHP をビルドしてみた
Windows で PHP をビルドしてみた
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
Nodejs
NodejsNodejs
Nodejs
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform
 
CruiseControl.NET設置
CruiseControl.NET設置CruiseControl.NET設置
CruiseControl.NET設置
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
Node.js入門
Node.js入門Node.js入門
Node.js入門
 
映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010
 
20210515 of4 wi&amp;paraview 5.9.0_motorbike
20210515 of4 wi&amp;paraview 5.9.0_motorbike20210515 of4 wi&amp;paraview 5.9.0_motorbike
20210515 of4 wi&amp;paraview 5.9.0_motorbike
 
Bot Framework v4 開発 Tips 2018-11
Bot Framework v4  開発 Tips 2018-11Bot Framework v4  開発 Tips 2018-11
Bot Framework v4 開発 Tips 2018-11
 
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加するWindows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
 
VarnishではじめるESI
VarnishではじめるESIVarnishではじめるESI
VarnishではじめるESI
 
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのかJavaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
 
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介
 

Destacado (9)

20140419 xamarin zumo
20140419 xamarin zumo20140419 xamarin zumo
20140419 xamarin zumo
 
20140322 mvvm crossforwindowsstoreapps-pdf
20140322 mvvm crossforwindowsstoreapps-pdf20140322 mvvm crossforwindowsstoreapps-pdf
20140322 mvvm crossforwindowsstoreapps-pdf
 
120225 qp lt
120225 qp lt120225 qp lt
120225 qp lt
 
120517 cf tour_london
120517 cf tour_london120517 cf tour_london
120517 cf tour_london
 
20140322 mvvm crossforwindowsstoreapps
20140322 mvvm crossforwindowsstoreapps20140322 mvvm crossforwindowsstoreapps
20140322 mvvm crossforwindowsstoreapps
 
110216 jawsug lt by t_tanaka_wap
110216 jawsug lt by t_tanaka_wap110216 jawsug lt by t_tanaka_wap
110216 jawsug lt by t_tanaka_wap
 
20140510 Twitter Authentication by WebAuthentictionBroker in Windows Phone 8....
20140510 Twitter Authentication by WebAuthentictionBroker in Windows Phone 8....20140510 Twitter Authentication by WebAuthentictionBroker in Windows Phone 8....
20140510 Twitter Authentication by WebAuthentictionBroker in Windows Phone 8....
 
110820 tech aid_lt_kinect_pub
110820 tech aid_lt_kinect_pub110820 tech aid_lt_kinect_pub
110820 tech aid_lt_kinect_pub
 
Augmented reality communication that provides a new experience value
Augmented reality communication that provides a new experience valueAugmented reality communication that provides a new experience value
Augmented reality communication that provides a new experience value
 

Similar a 13016 n分で作るtype scriptでnodejs

node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作る
Kiyoshi SATOH
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
david9142
 
120512 metro styleapp_javascript
120512 metro styleapp_javascript120512 metro styleapp_javascript
120512 metro styleapp_javascript
Takayoshi Tanaka
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
 
Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化
Etsuji Nakai
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
Ayumi Goto
 
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスドMicrosoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Kazumi Hirose
 

Similar a 13016 n分で作るtype scriptでnodejs (20)

node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作る
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
Using Windows Azure
Using Windows AzureUsing Windows Azure
Using Windows Azure
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
 
Wasm blazor and wasi 2
Wasm blazor and wasi 2Wasm blazor and wasi 2
Wasm blazor and wasi 2
 
Visual studio de debug
Visual studio de debugVisual studio de debug
Visual studio de debug
 
120512 metro styleapp_javascript
120512 metro styleapp_javascript120512 metro styleapp_javascript
120512 metro styleapp_javascript
 
Vue.js で XSS
Vue.js で XSSVue.js で XSS
Vue.js で XSS
 
sveltekit-ja.pdf
sveltekit-ja.pdfsveltekit-ja.pdf
sveltekit-ja.pdf
 
Vue入門
Vue入門Vue入門
Vue入門
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
 
Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 
densan2014-late01
densan2014-late01densan2014-late01
densan2014-late01
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
 
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスドMicrosoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
 

Más de Takayoshi Tanaka

.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
Takayoshi Tanaka
 

Más de Takayoshi Tanaka (20)

deep dive distributed tracing
deep dive distributed tracingdeep dive distributed tracing
deep dive distributed tracing
 
202202 open telemetry .net handson
202202 open telemetry .net handson202202 open telemetry .net handson
202202 open telemetry .net handson
 
202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers
 
20210129 azure webapplogging
20210129 azure webapplogging20210129 azure webapplogging
20210129 azure webapplogging
 
20201127 .NET 5
20201127 .NET 520201127 .NET 5
20201127 .NET 5
 
Unity(再)入門
Unity(再)入門Unity(再)入門
Unity(再)入門
 
最近のQ#について
最近のQ#について最近のQ#について
最近のQ#について
 
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法
SRENEXT 2020 [B5] New RelicのSREに学ぶSREのためのNew Relic活用法SRENEXT 2020 [B5] New RelicのSREに学ぶSREのためのNew Relic活用法
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法
 
20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET
 
New Relicで始める、.NET Applications on AWSのObservability
New Relicで始める、.NET Applications on AWSのObservabilityNew Relicで始める、.NET Applications on AWSのObservability
New Relicで始める、.NET Applications on AWSのObservability
 
C#エンジニアのためのdocker kubernetesハンズオン (再)
C#エンジニアのためのdocker kubernetesハンズオン (再)C#エンジニアのためのdocker kubernetesハンズオン (再)
C#エンジニアのためのdocker kubernetesハンズオン (再)
 
20190806 Q# Measurements
20190806 Q# Measurements20190806 Q# Measurements
20190806 Q# Measurements
 
C#エンジニアのためのdocker kubernetesハンズオン
C#エンジニアのためのdocker kubernetesハンズオンC#エンジニアのためのdocker kubernetesハンズオン
C#エンジニアのためのdocker kubernetesハンズオン
 
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
 
Try! Visual Studio 209 git feature
Try! Visual Studio 209 git featureTry! Visual Studio 209 git feature
Try! Visual Studio 209 git feature
 
Q#基礎 ver1.1
Q#基礎 ver1.1Q#基礎 ver1.1
Q#基礎 ver1.1
 
(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0
 
ゼロから始めるQ#
ゼロから始めるQ#ゼロから始めるQ#
ゼロから始めるQ#
 

Último

Último (11)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

13016 n分で作るtype scriptでnodejs

  • 2. @tanaka_733 (自己紹介)  お仕事  Ruby, Java, Node.js, Lua とかでPaaSをごにょっている人  趣味  C#な開発  Windows Phone (7/8)  Windows Store Apps  Kinect  ブログ  銀の光と碧い空
  • 3. @tanaka_733 (自己紹介)  お仕事  Ruby, Java, Node.js, Lua とかでPaaSをごにょっている人  趣味  C#な開発  Windows Phone (7/8)  Windows Store Apps TypeScript やるしかない!!!  Kinect
  • 4. TypeScript で Node.js  昔書いた記事のブラッシュアップ版  http://techblog.hilife-jp.info/2012/10/nodejs-typescript/  今回はVisual Studioで  Ts ファイルからjs ファイルへは同じtsc コマンドなのでほかのエディタでも基本同じ  準備  Visual Studio 2012 (VS Express for Web か VS professional Edition以上)  TypeScript VS Plugin (v0.8.2)  http://www.microsoft.com/en-us/download/details.aspx?id=34790  Node (v0.8.17), nvmw を使用しています  https://github.com/hakobera/nvmw  Git client  http://code.google.com/p/msysgit/downloads/list?q=net+installer
  • 5. プロジェクト作成 0.8.2 から Visual C#から TypeScriptの下に
  • 6. BOM問題  Visual Studioのテキストファイルのデフォルトエンコードは、 SHIFT-JISもしくはUTF-8 BOM付きの模様  Node.js のライブラリまわりでよくはまることが…  デフォルトの設定はなさそう  めんどいですが、1つ1つ保存しなおし。  よりよい方法があったら教えてください <m(__)m>
  • 7. ファイル > 名前を付けて保存 UTF-8 シグネチャなし (BOMなしのこと) ここを押して、 エンコードを選択
  • 8. TypeScript定義ファイルを取ってこよう  https://github.com/borisyankov/DefinitelyTyped が更新頻度が高いのでおすすめ。  > git clone https://github.com/borisyankov/DefinitelyTyped.git
  • 9. その1 Hello World  app.ts を消して一から書き直し。  まずは、これを書いて定義ファイルを参照可能にする  ///<reference path='DefinitelyTyped/node/node.d.ts'/> import http = module('http') http.createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello Worldn'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/');
  • 12. その2 パッケージ&PaaSにデプロイ  npm: node のパッケージ管理システム  package.json をいつも通り記述 (UTF-8 ボムなしで保存) { "name": “typescript-sample" , "version": "0.0.1" , "private": true , "dependencies": { "express": "3.0.0" , "ejs": ">= 0.8.3" , "jade": ">= 0.27.7“ } }
  • 14. app.ts を書き換え ///<reference path='DefinitelyTyped/node/node.d.ts'/> ///<reference path='DefinitelyTyped/express/express.d.ts' /> ///<reference path="DefinitelyTyped/underscore/underscore.d.ts" /> import http = module('http') import url = module("url") コンパイルエラーでるの import routes = module("./routes/index") は、あとで追加します import express = module('express') var app = <express.ServerApplication> express() var port = process.env.VCAP_APP_PORT || 1337; 後半のPaaSに // 続く デプロイして クラウド上で動くときに 使います
  • 15. app.ts を書き換え app.configure(function () { app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); //express3 app.set('view options', { layout: false }); app.use(express.bodyParser({})); app.use(express.methodOverride()); app.use(express.static(__dirname + '/public')); }); //続く
  • 16. app.ts を書き換え app.configure('development', function () { app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }); app.configure('production', function () { app.use(express.errorHandler()); }); // Routes app.get('/', routes.index); app.listen(port); console.log('Server running at http://127.0.0.1:' + port + '/');
  • 17. routes フォルダを作成して、index.ts追加 ///<reference path='/DefinitelyTyped/express/express.d.ts' /> import express = module("express") export function index(req: any, res: any) { res.render('index', { title: 'Page Title', testArray: ["1", "2", "3", "4"] }) }
  • 18. views フォルダ追加してViewを定義  jade は素人なのでもっといい書き方があるかも  このjade (ejsも) VSの補完は効かないし、 BOMなしで保存しなおさないといけないので、 VS以外のエディタでやるのがいいような…  views/layout.jade (ファイルはもう一つ次のページに) !!! 5 html head title PageTitle body #container #header block mainContent
  • 19. views フォルダ追加してViewを定義  views/index.jade extends layout block mainContent h1= title p Welcome to #{title} ul - each test in testArray li a(href= "/user/"+test) b= test
  • 20. 実行  > node app.js
  • 21. PaaSにデプロイ  最近は、node.js が動くPaaSが増えてきました  Azure Web Site, Heroku などなど  今回は 変わったとこで、Uhuru Cloud を使ってみます  OSS なPaaS CloudFoundryを使ったサービスの1つ  CloudFoundry自体はRuby を中心に書かれています  CloudFoundry本家でもNode.js使えます  Uhuru は .NET も動かせるのが違うところ
  • 22. Uhuru Cloud の登録  http://uhurusoftware.com/ からユーザー登録
  • 23. コマンドラインツールのセットアップ  要Ruby 1.9.2 以上  http://support.uhurusoftware.com/entries/21454287-deploying-and- managing-apps-with-command-line > ruby --version ruby 1.9.2p290 (2011-07-09) [i386-mingw32] > gem update –system > gem install vmcu > vmcu target services.uhurucloud.com Successfully targeted to Uhuru AppCloud [http://services.uhurucloud.com] > vmcu login > vmcu cloud-team Webの管理画面から OneTimeToken 発行して入力
  • 24. コマンドラインツールからデプロイ > cd <ProjectFolder> 本当はビルド成果物(js)とjadeファイルだけで十分 > vmcu push hello-typescript --runtime node08 アプリ名はグローバルで一意なので # 以下プロンプトは全部デフォルトのままEnterでOK 適当に変えてください
  • 25. (参考)プロンプト >vmcu push hello-typescript --runtime node08 Would you like to deploy from the current directory? [Yn]: Detected a Node.js Application, is this correct? [Yn]: Application Deployed URL [hello-typescript.uhurucloud.com]: Memory reservation (128M, 256M, 512M, 1G, 2G) [64M]: How many instances? [1]: Bind existing services to 'hello-typescript'? [yN]: Create services to bind to 'hello-typescript'? [yN]: Would you like to save this configuration? [yN]: Creating Application: OK Uploading Application: Checking for available resources: OK Processing resources: OK Packing application: OK Uploading (2M): OK Push Status: OK Staging Application 'hello-typescript': OK Starting Application 'hello-typescript': OK
  • 27. おつかれさまでした  ここまでのサンプルは Github においています