Top page  1/36
16
2017

ウズベキスタンで泊まった宿情報

CATEGORY海外
先日のウズベキスタン旅行で宿泊した宿の情報。と言っても、今回はあんま移動しなかったので3カ所だけなのですが…まあ何かの参考までに。
なお、リンク先が全部Booking.comですが、自分がそこで予約した&そこしか日本語情報がないというだけで、別にアフィリエイトではないですはい。

3カ所とも、B&B(ベッド&ブレックファースト)と呼ばれる「朝食付きで一泊10ドル程度のいわゆる安宿」となっております。普通のホテルではないのでご注意を。

Tag: ウズベキスタン

07
2017

ウズベキスタン旅行の感想まとめ

CATEGORY海外
ここのところ仕事も平和で、夏休み3日+有給で1週間の休みが取れてしまったので海外旅行に。で、熱帯の国ばかり続いたし、あれ意外といけんじゃね?と思ったので、中央アジアはウズベキスタンに行ってまいりました。
今回は早々にSIMゲットして感想とか大体リアルタイムにTwitterで呟いてたのですが、後で見返しづらいのでちょっとまとめてみます('ω')ノ
(宿情報は後日また。食事は特記がない限り現地の食堂みたいなとこ中心です。)

出発

今回は成田→仁川→タシケントの大韓航空の乗り継ぎ便で行きました。何気に人生初の飛行機の乗り継ぎでした。運賃は往復で8万6千円。その他にビザが必要です。成田までは電車+バス移動です。

Tag: ウズベキスタン

29
2017

SequelizeをTypeScriptで動かす2

CATEGORYJavaScript
1月に「SequelizeをTypeScriptで動かす」って自分でinterface定義して動かす手順を書いたけど、その後 sequelize-typescript なるそのものズバリで、遥かに使いやすく今風になったライブラリを見つけたので、改めてそっちの紹介やら手順を解説する。
…といっても、ぶっちゃけ凄く簡単に入って動いたので、ごく簡単にだけ。

まず、インストールはnpmから入れるだけで公式見れば済むので割愛。
次、モデル定義はこんな感じ。

models/administrator.ts
import { Table, Column, Model, DataType, AllowNull, Unique, Default, DefaultScope, Scopes } from 'sequelize-typescript';

@DefaultScope({
attributes: {
exclude: ['password'],
},
order: [['id', 'ASC']],
})
@Scopes({
login: {
attributes: {
include: ['password'],
},
},
})
@Table({
tableName: "administrators",
timestamps: true,
paranoid: true,
})
export default class Administrator extends Model<Administrator> {
@Unique
@AllowNull(false)
@Column
mailAddress: string;

@AllowNull(false)
@Column
password: string;

@AllowNull(false)
@Default('normal')
@Column({ type: DataType.ENUM, values: ['normal', 'super'] })
role: string;

comparePassword(password: string): boolean {
// 省略
}

static passwordToHash(password: string, salt?: string): string {
// 省略
}
}
あのややこしかったモデル定義が一変、ごく普通のクラスベースのモデルになりました!
…まあところどころ連想配列万歳の素のsequelizeが垣間見えていますが。良くも悪くもTypeScript用のラッパー的な感じなので、こうやってアノテーションになりつつも(多少見た目はごちゃごちゃするけど)sequelizeの豊富な機能を余さず使うことが出来そうという事で。

で、こうやってモデルを定義したら、次はブートローダーをこんな感じに記述する。
import "reflect-metadata";
import { Sequelize } from 'sequelize-typescript';

const sequelize = new Sequelize({
dialect: "mysql",
host: "localhost",
port: 3306,
username: "foo",
password: "bar",
name: "foobar",
modelPaths: [__dirname + '/models'],
logging: console.log,
});
sequelize.sync().then(() => {
// 省略
}).catch(console.error);
この辺も、素のsequelizeだとあんまり定まってなかったので、だいぶ書きやすくなった印象。

で、使い方ですが、これだけです。マジで。これだけで後は普通にモデルに Administrator.findAll() やらが出てくるので、普通のsequelize同様に使えばOK。素晴らしい。


昨日 TypeORM が使えるよって記事を書いたばかりですが、定番だった sequelize もこうやってTypeScriptで使えるとなると、今後も1強時代が続くかもしれない。
ただ、sequelize はActiveRecordで TypeORM は昔ながらのORMとちょっとジャンルが違うので、好みに応じて試してみるのもいいか?

Tag: JavaScript TypeScript Sequelize

28
2017

TypeScriptで作るアノテーションだらけのWebアプリ

CATEGORYJavaScript
先日TypeScriptのORMとして TypeORM というものを発見。これのサンプルを見ていたところ、さらに TypeDI やら routing-controllers というライブラリ群を組み合わせることで、今までのJavaScript界とは打って変わったアノテーション(デコレーター)だらけのJavaっぽい、イケてるWebアプリを作れることが判明したので、その紹介をする。まずは概要。

TypeORM
TypeScript用のO/Rマッパー。動的言語で人気のActive Record…ではなく、アノテーションでエンティティを定義して、EntityManagerで操作するというJavaのJPAに近い(?)感じのORM。
TypeDI
TypeScriptでアノテーションを使ってサービスなどをDIするためのライブラリ。
routing-controllers
express.jskoa.js と組み合わせて、TypeScriptでアノテーションを使ったルーティング設定を実現するライブラリ。express.js の手続き的なコードを隠して、実際のロジックだけを実装するためのラッパーみたいな感じ。

はい、この後のサンプルを見ていくと実感できると思いますが、ほんとJavaのアノテーション文化をTypeScript上で再現したようなライブラリ群です。ちなみに、全て同一の作者さんが作られており、全部組み合わせる前提な気がします。

では、以下実際にこれらのライブラリを組み合わせたWeb APIのサンプルをどうぞ。なおサンプルの発展版をGitHubに上げているので、詳しく見たい方はそちらも参照ください。

Tag: JavaScript TypeScript TypeORM TypeDI routing-controllers

10
2017

スリランカの地名の意味「ヌワラ・エリヤ」

CATEGORYスリランカ
今週友人の友人のスリランカ人が日本旅行で案内する事になり、そこで話すネタがなくなったので時間があったので前から気になってたスリランカの地名について聞いてみた。
ヌワラ・エリヤは山間部の有名なイギリス時代の避暑地(行ったことは無い)。
「ヌワラ නුවර」が「都市」なのは知ってたけど「エリヤ එළිය」が英語の「Area」からで都市地区とかなのか、それともシンハラ語の「エリヤイ එළියයි 明るい」由来なのかを聞いてみた。
んで回答。

「ヌワラ・エリヤのエリヤは、シンハラ語のエリヤ。ただ、「エリヤ」には二つの意味がある。一つは、陽が差しているとかの「明るい」。もう一つは「外」(「エリヤタ ヤム එළියට යමු 外に出ましょう」とか)。ヌワラ・エリヤのエリヤは後者。」
「かつ、このヌワラはキャンディの意味。キャンディは「カンダ කන්ද 山」が訛った英語読みで、シンハラ語では「マハー・ヌワラ මහ නුවර 大都市」。このヌワラはキャンディのヌワラ。」
「なので、ヌワラ・エリヤは「キャンディの外側の地域」「Outside of the city」の意味。」

という事でした(実際はもっと雑な会話だったけど整理)。
なので、日本語で言うと…外城とか、外環道とか、どうもそういう地名らしい。
聞いたのは学校の先生なので、たぶん正しかろう。参考になりますm(__)m


んで、何でそんなこと気にしてたのかと言うと…

『地球の歩き方』のヌワラ・エリヤ名前解説抜粋

雨の多い山岳地方の町なのに『地球の歩き方』のこの記述はおかしいなと思ったからでした。
↑は11~12年版なので、最新版では変わってたりするのかな?
変わってたらサーセン(^^;

Tag: スリランカ シンハラ語