C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\150>
sqlpackage.exe ^
/Action:Publish ^
/SourceFile:C:\Users\USER\Desktop\DEMO.dacpac ^
/TargetConnectionString:"Data Source=(localdb)\DEMO;Database=master;"
サーバー '(localdb)\DEMO' 上のデータベース 'master' に公開しています。
配置の初期化中 (開始)
配置の初期化中 (完了)
配置計画の解析中 (開始)
*** プロジェクト データベースとターゲット データベースの照合順序設定が異なるため、配置エラーが発生する可能性があります。
配置計画の解析中 (完了)
データベースの更新中 (開始)
更新が完了しました。
データベースの更新中 (完了)
データベースを正常に発行しました。
2019年3月8日金曜日
2018年11月19日月曜日
browserify の ParseError はどこから来るのか
.
.
↓ エラーはこちらです。
export var b = {};
^
ParseError: 'import' and 'export' may appear only with 'sourceType: module
↓ 大元の発生源はここですね…
@node_modules\browserify\index.jsBrowserify.prototype._syntax = function () {
...
var err = syntaxError(row.source, row.file || row.id);
if (err) return this.emit('error', err);
syntax-error から acorn-node に接続するようです。
↓ 停止位置はこちらでした。
@node_modules\acorn-node\node_modules\acorn\dist\acorn.js// Parse a single statement.
//
// If expecting a statement and finding a slash operator, parse a
// regular expression literal. This is to handle cases like
// `if (foo) /blah/.exec(foo)`, where looking at the previous token
// does not help.
pp$1.parseStatement = function(context, topLevel, exports) {
...
case types._import:
if (!this.options.allowImportExportEverywhere) {
if (!topLevel)
{ this.raise(this.start, "'import' and 'export' may only appear at the top level"); }
if (!this.inModule)
{ this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'"); }
総括しますと、
import や export 構文を許可しないことが問題なのではなく、import → require
export → module.exports
になっていない ES6 (ES2015) 形式の javascript を投入したことが問題なのです…
仮に import と export を許可するように修正した場合、つぎのような export が混じったコードを生成します。
(function () {
function r(e, n, t) {
function o(i, f) {
if (!n[i]) {
if (!e[i]) {
var c = "function" == typeof require && require;
if (!f && c)
return c(i, !0);
if (u)
return u(i, !0);
var a = new Error("Cannot find module '" + i + "'");
throw a.code = "MODULE_NOT_FOUND", a
}
var p = n[i] = {
exports: {}
}; e[i][0].call(
p.exports,
function (r) {
var n = e[i][1][r];
return o(n || r)
}, p, p.exports, r, e, n, t)
}
return n[i].exports
}
for (var u = "function" == typeof require && require, i = 0; i < t.length; i++)
o(t[i]);
return o
}
return r
})()({
1: [function (require, module, exports) {
var b = require('./b');
}, { "./b": 2 }], 2: [function (require, module, exports) {
export var b = {};
}, {}]
}, {}, [1]);
export があるので、これでは Web ブラウザーでは実行ができませんね…
という訳で、require や module.exports を採用している CommonJS 形式のものを使用しましょう…
ここは無理矢理 babelify で片づけるという手もありますが…
Object.defineProperty() という ES3 (Internet Explorer 8 (Windows XP)) 殺しの言語仕様が出現することになります…
2018年11月15日木曜日
AWS Lambda プロキシ統合 + Node.js 8.10 index.handler
Lambda プロキシ統合での 関数コード例:
exports.handler = async(event) => {
const addr = require('./addr.json');
const keywords = event.queryStringParameters.q.replace(/-/, "").trim().split(/\s+/);
...
const response = {
statusCode: 200,
body: JSON.stringify(patterns),
};
return response;
};
メモ- response.body は文字列で返します。
Lambda プロキシ統合での event 内容例:
{
"resource": "/Yubin2",
"path": "/Yubin2",
"httpMethod": "GET",
"headers": null,
"multiValueHeaders": null,
"queryStringParameters": {
"q": "123"
},
"multiValueQueryStringParameters": {
"q": [
"123"
]
},
"pathParameters": null,
"stageVariables": null,
"requestContext": {
"path": "/Yubin2",
"accountId": "ACCOUNT1",
"resourceId": "ID1",
"stage": "test-invoke-stage",
"domainPrefix": "testPrefix",
"requestId": "ID2",
"identity": {
"cognitoIdentityPoolId": null,
"cognitoIdentityId": null,
"apiKey": "test-invoke-api-key",
"cognitoAuthenticationType": null,
"userArn": "arn:aws:iam::ACCOUNT1:root",
"apiKeyId": "test-invoke-api-key-id",
"userAgent": "aws-internal/3 aws-sdk-java/1.11.432 Linux/4.9.124-0.1.ac.198.71.329.metal1.x86_64 OpenJDK_64-Bit_Server_VM/25.181-b13 java/1.8.0_181",
"accountId": "ACCOUNT1",
"caller": "ACCOUNT1",
"sourceIp": "test-invoke-source-ip",
"accessKey": "ID5",
"cognitoAuthenticationProvider": null,
"user": "ACCOUNT1"
},
"domainName": "testPrefix.testDomainName",
"resourcePath": "/Yubin2",
"httpMethod": "GET",
"extendedRequestId": "ID3",
"apiId": "ID4"
},
"body": null,
"isBase64Encoded": false
}
2018年10月23日火曜日
EPPlus xlsx スタイリング まとめ
幅 Width 高さ Height は Excel のそれと同じ。
Width = 半角フォントの文字数
Height = ポイント単位
最初にこれ
通貨、単位なし、小数点四捨五入
Width = 半角フォントの文字数
Height = ポイント単位
最初にこれ
totalSheet.Cells.Style.Font.Name = "游ゴシック";スタイルの適用順序: 全体 → 列 or 行ごと → セルごと
totalSheet.Cells.Style.Font.Size = 11;
通貨、単位なし、小数点四捨五入
totalSheet.Column(5).Style.Numberformat.Format = "#,##0;[Red]-#,##0";
2018年9月29日土曜日
MSBuild の各要素・アイテム・プロパティーの俯瞰と逆引き大辞典
Target は ターゲット
Message とか Exec は タスク
AfterTargets="Build" にしておくと、ビルド後に実行してくれます。
%(Encoder.Identity) の Encoder は ItemGroup の中に定義した Encoder という名の Item
%(Encoder.Identity) の Identity は 既知のアイテム メタデータ
%(Encoder.OutputTo) の OutputTo は自分で定義したメタデータ
$(OutputPath) の OutputPath は プロパティー
↑ 環境変数を参照することがあります。
↑ $(…) の … は プロパティ関数 の場合があります: $(VER.Replace('.','_'))
Encoder は Item に変換
↑ 方法: ビルドするファイルを選択する
OutputTo はメタデータ
jQuery をつかうと Web ページからのリンク抽出と、変換が楽にできますね…
(この prettier.io は一行 JavaScript をキレイにフォーマットしてくれます!)
お約束のタグクラウドです。
MSBUILD のタスク
MSBuildTasks
MSBuild.Extension.Pack
Message とか Exec は タスク
AfterTargets="Build" にしておくと、ビルド後に実行してくれます。
<Target Name="BuildEncoder"
AfterTargets="Build">
<Message Importance="Normal"
Text="Encoder: %(Encoder.Identity) → $(OutputPath)%(Encoder.OutputTo)" />
<Exec Command="Encoder.exe %(Encoder.Identity) $(OutputPath)%(Encoder.OutputTo)" />
</Target>
%(Encoder.Identity) の Encoder は ItemGroup の中に定義した Encoder という名の Item
%(Encoder.Identity) の Identity は 既知のアイテム メタデータ
%(Encoder.OutputTo) の OutputTo は自分で定義したメタデータ
$(OutputPath) の OutputPath は プロパティー
↑ 環境変数を参照することがあります。
↑ $(…) の … は プロパティ関数 の場合があります: $(VER.Replace('.','_'))
<ItemGroup>
<Encoder Include="File.txt">
<OutputTo>File.bin</OutputTo>
</Encoder>
</ItemGroup>
Encoder は Item に変換
↑ 方法: ビルドするファイルを選択する
OutputTo はメタデータ
アイテムリスト
@(ABC)↑ 方法: 項目リストをコンマ区切りで表示する
@(ABC, ';')
@(ABC, ', ')
アイテムの種類を変換
@(ItemForMyTool->'"%(FullPath)"', ' ')↑ メタデータを使用してアイテムの種類を変換する
アイテム用の関数
@(theItem->IndexOf('r'))↑ 項目用の関数
jQuery をつかうと Web ページからのリンク抽出と、変換が楽にできますね…
(この prettier.io は一行 JavaScript をキレイにフォーマットしてくれます!)
- $.map($("main").find("a"), function(a) {
return $("<a>")
.attr("target", "_blank")
.attr("href", a.href)
.append(
$("<code>")
.addClass("word")
.text(a.innerText)
)
.prop("outerHTML");
}).join("\n"); - $.map($("table#user-content-tasksTable").find("a"), function(a) {
return $("<a>")
.attr("target", "_blank")
.attr("href", a.href)
.append(
$("<code>")
.addClass("word")
.text(a.innerText)
)
.prop("outerHTML");
}).join("\n"); - $.map($("div#divTree").find("a"), function(a) {
return a.innerText.endsWith(" Class")
? $("<a>")
.attr("target", "_blank")
.attr("href", a.href)
.append(
$("<code>")
.addClass("word")
.text(a.innerText)
)
.prop("outerHTML")
: null;
}).join("\n");
お約束のタグクラウドです。
MSBUILD のタスク
Task 基本クラス
TaskExtension 基本クラス
ToolTaskExtension 基本クラス
AL (アセンブリ リンカー) タスク
AspNetCompiler タスク
AssignCulture タスク
AssignProjectConfiguration タスク
AssignTargetPath タスク
CallTarget タスク
CombinePath タスク
ConvertToAbsolutePath タスク
Copy タスク
CreateCSharpManifestResourceName タスク
CreateItem タスク
CreateProperty タスク
CreateVisualBasicManifestResourceName タスク
Csc タスク
Delete タスク
DownloadFile タスク
Error タスク
Exec タスク
FindAppConfigFile タスク
FindInList タスク
FindUnderPath タスク
FormatUrl タスク
FormatVersion タスク
GenerateApplicationManifest タスク
GenerateBootstrapper タスク
GenerateDeploymentManifest タスク
GenerateResource タスク
GenerateTrustInfo タスク
GetAssemblyIdentity タスク
GetFrameworkPath タスク
GetFrameworkSdkPath タスク
GetReferenceAssemblyPaths タスク
LC タスク
MakeDir タスク
Message タスク
Move タスク
MSBuild タスク
ReadLinesFromFile タスク
RegisterAssembly タスク
RemoveDir タスク
RemoveDuplicates タスク
RequiresFramework35SP1Assembly タスク
GenerateResource タスク
GenerateResource task
ResolveAssemblyReference タスク
ResolveComReference タスク
ResolveKeySource タスク
ResolveManifestFiles タスク
ResolveNativeReference タスク
ResolveNonMSBuildProjectOutput タスク
SGen タスク
SignFile タスク
Touch タスク
UnregisterAssembly タスク
Unzip タスク
UpdateManifest タスク
Vbc タスク
Warning タスク
WriteCodeFragment タスク
WriteLinesToFile タスク
XmlPeek タスク
XmlPoke タスク
XslTransformation タスク
ZipDirectory タスク
MSBuildTasks
Add
AppPoolController
AppPoolCreate
AppPoolDelete
AssemblyInfo
Attrib
Divide
EmbedNativeResource
FileUpdate
FtpUpload
FxCop
GetSolutionProjects
ILMerge
Mail
Multiple
MV
NDoc
NUnit
NUnit3
RegexMatch
RegexReplace
RegistryRead
RegistryWrite
Script
ServiceController
ServiceQuery
Sleep
SqlExecute
Subtract
SvnCheckout
SvnClient
SvnCommit
SvnExport
SvnInfo
SvnUpdate
SvnVersion
TaskSchema
TemplateFile
Time
Unzip
Version
VssAdd
VssCheckin
VssCheckout
VssClean
VssDiff
VssGet
VssHistory
VssLabel
VssUndoCheckout
WebDirectoryCreate
WebDirectoryDelete
WebDownload
XmlRead
XmlUpdate
Xslt
Zip
MSBuild.Extension.Pack
BaseAppDomainIsolatedTask Class
BaseTask Class
Utilities Class
BizTalkAdaptor Class
BizTalkApplication Class
BizTalkAssembly Class
BizTalkHost Class
BizTalkHostInstance Class
BizTalkReceiveHandler Class
BizTalkSendHandler Class
FxCop Class
NUnit Class
NUnit3 Class
StyleCop Class
Email Class
Ftp Class
MSMQ Class
Cab Class
DNZip Class
Zip Class
ActiveDirectory Class
ComponentServices Class
EnvironmentVariable Class
EventLog Class
EventSource Class
HostsFile Class
Network Class
PerformanceCounters Class
Process Class
Registry Class
SystemDrive Class
WindowsService Class
WshShell Class
Data Class
DataMap Class
Organization Class
Solution Class
Detokenise Class
File Class
FileVersion Class
FindUnder Class
Folder Class
RoboCopy Class
Share Class
Assembly Class
AssemblyInfo Class
AsyncExec Class
CommandLine Class
ConfigManager Class
DateAndTime Class
DynamicExecute Class
Gac Class
GenericTool Class
Guid Class
ILMerge Class
Metadata Class
MSBuildHelper Class
Parallel Class
Path Class
Signing Class
SmartExec Class
TextString Class
Thread Class
XProduct Class
Clone Class
SecureFileLogger Class
SqlLogger Class
XmlFileLogger Class
Wmi Class
Sound Class
Packager Class
Maths Class
Certificate Class
AnalysisServices Class
Database Class
Server Class
AnalysisServices Class
Database Class
Server Class
AnalysisServices Class
Database Class
Server Class
BuildDeploymentManifest Class
BuildNumber Class
SqlCmd Class
SqlExecute Class
SqlVersion Class
SqlVersionDataClass Class
Svn Class
DlrTaskFactory Class
PowerShellTaskFactory Class
TeamBuild Class
TeamBuild Class
Console Class
Dialog Class
SourceSafe Class
TfsSource Class
TfsSourceAdmin Class
TfsVersion Class
VB6 Class
VC6 Class
VSDevEnv Class
HttpWebRequest Class
Iis6AppPool Class
Iis6ServiceExtensionFile Class
Iis6VirtualDirectory Class
Iis6Website Class
Iis7Application Class
Iis7AppPool Class
Iis7Binding Class
Iis7Website Class
WebClient Class
XmlFile Class
XmlTask Class
2018年8月22日水曜日
NSPLookupServiceBegin への lpqsRestrictions
SVCID_HOSTNAME
= {0002A800-0000-0000-C000-000000000046}
SVCID_INET_HOSTADDRBYINETSTRING
= {0002A801-0000-0000-C000-000000000046}
SVCID_INET_SERVICEBYNAME
= {0002A802-0000-0000-C000-000000000046}
SVCID_INET_HOSTADDRBYNAME
= {0002A803-0000-0000-C000-000000000046}
#include <SvcGuid.h>
SET_TCP_SVCID_RR(&guid, 53, 12);
SVCID_DNS_TYPE_PTR
= {00090035-0000-000C-C000-000000000046}
= {0002A800-0000-0000-C000-000000000046}
SVCID_INET_HOSTADDRBYINETSTRING
= {0002A801-0000-0000-C000-000000000046}
SVCID_INET_SERVICEBYNAME
= {0002A802-0000-0000-C000-000000000046}
SVCID_INET_HOSTADDRBYNAME
= {0002A803-0000-0000-C000-000000000046}
#include <SvcGuid.h>
SET_TCP_SVCID_RR(&guid, 53, 12);
SVCID_DNS_TYPE_PTR
= {00090035-0000-000C-C000-000000000046}
GetAddrInfoW(L"ABC", nullptr, nullptr, &info);
gethostbyname("ABC");
lpqsRestrictions->lpafpProtocols[1] の iAddressFamily = 2, iProtocol = 6gethostbyaddr("\x01\x02\x03\x04", 4, AF_INET);
lpqsRestrictions->lpafpProtocols[1] の iAddressFamily = 2, iProtocol = 6gethostbyaddr("\x1\x2\x3\x4\x5\x6\x7\x8\x9\xa\xb\xc\xd\xe\xf\x10", 16, AF_INET6);
GetNameInfoW IPv4
GetNameInfoW IPv6
gethostname
2018年8月21日火曜日
Windows 名前解決 NET VIEW, Network Providers, Namespace Service Providers
NET VIEW
NetServerEnum を使っているようです。しかし深部の実装がカーネルモード依存 (非公開の DeviceIoControl コード使用) なので、手の出しようがありません。
Network Providers
ユーザーモードの Network Provider API で実装するプロバイダーです。この API の守備範囲はとても広いですが… 今回気にしているのは Enumeration Functions だけです。
NPOpenEnum 等を実装することで、WNetOpenEnum での列挙に対応できます。
詰まるところ、ネットワーク一覧に希望のホストを追加できます。
しかしこの先の処理 (UNC パスを作出したり、DOS デバイスを定義したりする処理) にはカーネルモードの関与が必要だと思われます…
Namespace Service Providers
ユーザーモードの Namespace Service Providers を実装する DLL です。Winsock から直接利用されます。NSPStartup 関数と NSPLookupServiceBegin 等を実装することで、名前解決プロセスに参加できます。
こちらは
「ホストリストの作成」というよりは、
「名前解決(ホスト名 ⇔ IP アドレス)」の意味合いが強いです。
対象の名前空間は NS_DNS ですが…
Bluetooth 関連 (NS_BTH) の情報の方が多い印象を受けました。
アプリからのサービス問い合わせ (WSALookupServiceBegin 呼び出し) に対し、サービス (WSAQUERYSET で定義する情報) の列挙を可能にします。サービス ID の例:
- SVCID_HOSTNAME
- SVCID_INET_HOSTADDRBYINETSTRING
- SVCID_INET_HOSTADDRBYNAME
勿論 Winsock の GetAddrInfoW 関数でも NSP を使用しますので、NSP を実装することは有用です。
ping.exe でも通用しました。
登録:
コメント (Atom)









