2021年4月16日金曜日

SQL Server サブクエリにORDER BYやGROUP BYが使えない!?

おはようございます。
こんにちは。
こんばんは。
ドラゴンです。

SQL ServerでサブクエリにORDER BYやGROUP BYを入れて実行すると
エラーになってしまったので、解決策を備忘録として残しておきます。

★今回検証用につかうテーブル★
Aテーブル

No グループID 名前 日付
1 1 太郎 2021/04/01
2 1 二郎 2021/04/02
3 2 三郎 2021/04/03
4 2 四郎 2021/04/04

目次

概要

SELECT
  COUNT(*)
FROM
  (
    SELECT
      グループID
      ,名前
      ,日付
    FROM
      A
    GROUP BY
      グループID
      ,名前
      ,日付
    ORDER BY
      日付
  ) AS A

上のSQLを実行すると、上記の画像のようにエラーが出てしまいました。
え?サブクエリにORDER BYやGROUP BYを入れたらあかんのか・・・

解決策

SELECT
  COUNT(*)
FROM
  (
    SELECT
      グループID
      ,名前
      ,日付
    FROM
      A
    GROUP BY
      グループID
      ,名前
      ,日付
    ORDER BY
      日付
    OFFSET 0 ROWS
  ) AS A

それで、色々調べていくと、
ORDER BYの後ろに「OFFSET 0 ROWS」を入れると、問題なく動くという情報を手に入れたので、
実際に試してみたところ、正常に実行することができましたー!

最後に

過去にOracleを使用していたときは、サブクエリにORDER BYやGROUP BYを入れて実行しても問題にならなかったので、少し戸惑ってしまいましたね...
注意点として「OFFSET 0 ROWS」が使えるのは「SQL Server 2012」からなので、使用する際は「SQL Server」のバージョンを確認しないといけないです。

それでは、ドラゴンでした~~~。

2021年4月11日日曜日

Typora(Markdownエディタ)の紹介①

こんばんは。ひっくです。

今回は「Typora」というMarkdownエディタを紹介したいと思います。

導入の経緯


昨年頃から社内で情報共有をする目的で、調査した結果を簡単にまとめられる

エディタを探していました。

(画像・コードを添付できたり、数式も記載可能※なエディタを求めていました。)

※機械学習に関して調べた内容をまとめるのに、数式を記載する必要があったため。

 

上記要件を満たせそうなエディタとして、Typoraを見つけた次第です。

 

まずはTyporaを導入


公式ページはこちらから。

Typora公式

 

使用している環境に応じてインストーラをダウンロードし、インストールすることで使用可能となります。

URL先で下にスクロールすると、上部に「Download」が表示されます。

Windows、Mac、Linuxのそれぞれに対応しています。

 

Typoraでよく使うショートカット(Windows)


インストールが終了したら、実際に使ってみましょう。

私がTyporaを使用し始めてから、日頃よく使うショートカットの一部を以下に紹介しておきます。

  • 見出しの作成(h1~h6)

    Ctrl + + /

    + 押下毎にh6→h5→h4 と変化していきます。 押下毎は逆にh4→h5→h6となります。


    (表示サンプル)

  • テーブル/表の作成

    Ctrl + T

    押下で次のようなダイアログが表示されます。列、行数を決めてOKを押したら表が作成されます。


    (表示サンプル)

    Ctrl + T

    押下で次のようなダイアログが表示されます。列、行数を決めてOKを押したら表が作成されます。

    表が作成されたら、クリックすることで編集モードとなり、上部のメニューから簡単に

    表のリサイズや文字列の表示位置を変更できます。(以下はMore Actions 選択時)

  • 小見出し

    + 半角Space または Ctrl + Shift + ]

    階層に応じて、小見出しの表示が変わります。

    Tab 押下で自由に階層を変更でき、表示も都度変わります。


    (表示サンプル)

  • 区切り線

    (3回連続入力)

    表示範囲を区切りたい場合に使用します。


    (表示サンプル)


  • 順序付きリスト

    Ctrl + Shift + [

    項目を順番立てで表示したい場合に使用します。


    (表示サンプル)

    1. 手順1
    2. 手順2
    3. 手順3
  • 引用

    Ctrl + Shift + Q


    (表示サンプル)

  • ハイパーリンク

    Ctrl + K

    [] と () のペアが作成されるので、[]内にリンク名称を、()内にリンク先URLを記載します。


    (表示サンプル)

    Typora公式

  • コードブロック

    Ctrl + Shift + K

    コードブロックが作成されたら、右下に「言語を選択」と出るので、言語を入力します。

    後はブロック内にコードを記載するだけです。


    (表示サンプル)

メリット/デメリット


まだ他にも使える機能が存在しますが、長くなりそうなので次回に回そうと思います。

以下にはメリット、デメリットを挙げてみました。

  • メリット

    1. 見やすい資料を時間をかけることなく作成可能になる。

      (過去には手順書等をテキストエディタのみで作成していたこともありましたが、

      図や表、画像、段落分け等見やすさが失われていました。

      最近では作業をしながら手順書を同時にまとめていく、といった使用をしています。)

    2. エクスポートの形式が豊富

      PDF、HTMLの他、Word、OpenOfficeなどにも対応している。

      (Markdownで手順書を作成 → PDFで展開 をよく利用しています。)

    3. 画像管理がしやすい

      ファイル内で使用する画像について、そのファイルに関連する画像のみを

      ドキュメントと同じ階層に配置することが(設定により)可能となる

      (この方法は次回紹介しようと思います。)

    4. ブログも作成できる

      Typoraで編集後、以下手順で「blogger」のエディタに貼り付けて

      今回のブログは作成しました。(画像については別途アップロードしています)

      1. 編集内容を全選択
      2. メニューから、「編集」 → 「HTMLとしてコピー」 の順に選択
      3. 「blogger」のエディタに貼り付け
  • デメリット

    1. (無料でないと絶対にダメという方にとっては)有料化のリスクあり

      現在はβ版ということで、無料で使用できるようですが、今後有料になる可能性も

      あるとのこと。

    2. タグ管理はできない

      ファイル単位での保存となるので、メモを大量に作成する用途では向いていないことも。

      ファイル管理をするためにGitHubを使用する等が必要となる。

Markdownエディタを利用したことがない人は、1回使ってみることをオススメします。

(なお、社内ではVisual Studio Code でMarkdownファイルを編集されている方もいます。

今回はTyporaに絞って紹介しましたが、Visual Studio Codeの方も使い勝手は良さそうです。)

興味のある方は両方使ってみてはどうでしょうか。

 

今回はこのへんで。ではまた!

2021年4月5日月曜日

WPFでマテリアルデザイン

どうも、もりもりです。

WPFでアプリ作ってると、サクっと見た目をキレイにしたいですよね。 そんな時に便利なのが Material Design In XAML Toolkit と MahApps.Metro です。

適用前

まずはマテリアルデザイン適用前だとこんな感じ。 Label、TextBox、ComboBox、CheckBox、RadioButton、Button、ProgressBarを使用してます。

導入

ということで、NuGetで Material Design In XAML Toolkit を入れましょう。

MahApps.Metro も一緒に入るのですが現時点での最新は v2.4.4 なので手動で入れます。

適用

App.xamlにリソースを追加します。

下記のIssueの例をそのまま使います。
https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit/issues/1896

App.xaml

<Application x:Class="AsyncSample.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:AsyncSample"
             StartupUri="Views/MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>

            <ResourceDictionary.MergedDictionaries>

                <!--  MahApps  -->
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Themes/Light.Violet.xaml" />

                <!--  Material Design  -->
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.LightBlue.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml" />

                <!--  Material Design: MahApps Compatibility  -->
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.MahApps;component/Themes/MaterialDesignTheme.MahApps.Fonts.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.MahApps;component/Themes/MaterialDesignTheme.MahApps.Flyout.xaml" />

            </ResourceDictionary.MergedDictionaries>

            <!--  MahApps Brushes  -->
            <SolidColorBrush x:Key="MahApps.Brushes.Highlight" Color="{DynamicResource Primary700}" />
            <SolidColorBrush x:Key="MahApps.Brushes.AccentBase" Color="{DynamicResource Primary600}" />
            <SolidColorBrush x:Key="MahApps.Brushes.Accent" Color="{DynamicResource Primary500}" />
            <SolidColorBrush x:Key="MahApps.Brushes.Accent2" Color="{DynamicResource Primary400}" />
            <SolidColorBrush x:Key="MahApps.Brushes.Accent3" Color="{DynamicResource Primary300}" />
            <SolidColorBrush x:Key="MahApps.Brushes.Accent4" Color="{DynamicResource Primary200}" />
            <SolidColorBrush x:Key="MahApps.Brushes.WindowTitle" Color="{DynamicResource Primary700}" />
            <SolidColorBrush x:Key="MahApps.Brushes.Selected.Foreground" Color="{DynamicResource Primary500Foreground}" />
            <LinearGradientBrush x:Key="MahApps.Brushes.Progress" StartPoint="1.002,0.5" EndPoint="0.001,0.5">
                <GradientStop Offset="0" Color="{DynamicResource Primary700}" />
                <GradientStop Offset="1" Color="{DynamicResource Primary300}" />
            </LinearGradientBrush>
            <SolidColorBrush x:Key="MahApps.Brushes.CheckmarkFill" Color="{DynamicResource Primary500}" />
            <SolidColorBrush x:Key="MahApps.Brushes.RightArrowFill" Color="{DynamicResource Primary500}" />
            <SolidColorBrush x:Key="MahApps.Brushes.IdealForeground" Color="{DynamicResource Primary500Foreground}" />
            <SolidColorBrush x:Key="MahApps.Brushes.IdealForegroundDisabled" Color="{DynamicResource Primary500}" Opacity="0.4" />

        </ResourceDictionary>
    </Application.Resources>
</Application>

MainWindow は MetroWindow を継承するよう変更します。

MainWindow.xaml

<mah:MetroWindow x:Class="AsyncSample.Views.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mah="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:AsyncSample"
        mc:Ignorable="d"
        GlowBrush="{DynamicResource AccentColorBrush}"
        BorderThickness="1"
        Title="MainWindow" Height="550" Width="545" MinHeight="550" MinWidth="545"
        TitleCharacterCasing="Normal">
    <Grid Margin="15">
        <Grid.RowDefinitions>
            <RowDefinition Height="30"/>
            <RowDefinition Height="30"/>
            <RowDefinition Height="30"/>
            <RowDefinition Height="30"/>
            <RowDefinition Height="30"/>
            <RowDefinition Height="30"/>
            <RowDefinition Height="30"/>
            <RowDefinition Height="30"/>
            <RowDefinition Height="30"/>
            <RowDefinition Height="100*"/>
            <RowDefinition Height="46"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100"/>
            <ColumnDefinition Width="100"/>
            <ColumnDefinition Width="100"/>
            <ColumnDefinition Width="100"/>
            <ColumnDefinition Width="100"/>
            <ColumnDefinition Width="100*"/>
        </Grid.ColumnDefinitions>

        <Label Grid.Row="0" Grid.Column="0" Content="処理時間:" Margin="3" HorizontalAlignment="Right"/>
        <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Time}" TextAlignment="Right" Margin="3"/>
        <Label Grid.Row="0" Grid.Column="2" Content="s" VerticalAlignment="Bottom"/>

        <Button Grid.Row="1" Grid.Column="0" Grid.RowSpan="2" Grid.ColumnSpan="2" Name="btnStart" Content="Start" Margin="3" Command="{Binding StartCommand}"/>
        <Button Grid.Row="1" Grid.Column="3" Grid.RowSpan="2" Grid.ColumnSpan="2" Name="btnStop" Content="Stop" Margin="3" Command="{Binding StopCommand}"/>

        <Label Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" Name="lblStatus" Content="{Binding Status, Mode=OneWay}" Margin="3"/>
        <Label Grid.Row="3" Grid.Column="4" Name="lblRate" Content="{Binding Rate, Mode=OneWay}" Margin="3" HorizontalAlignment="Right"/>

        <ProgressBar Grid.Row="4" Grid.RowSpan="2" Grid.ColumnSpan="5" Name="progressBar" Value="{Binding Value, Mode=OneWay}" Margin="3"/>

        <StackPanel Grid.Row="9" Grid.Column="0" Grid.ColumnSpan="6">
            <Label Content="Label" />
            <TextBox Text="TextBox" />
            <ComboBox />
            <CheckBox Content="CheckBox"/>
            <RadioButton Content="RadioButton1" GroupName="Group" IsChecked="True"/>
            <RadioButton Content="RadioButton2" GroupName="Group"/>

        </StackPanel>
    </Grid>
</mah:MetroWindow>

MainWindow.xaml.cs も忘れずに。

MainWindow.xaml.cs

using AsyncSample.ViewModels;
using MahApps.Metro.Controls;

namespace AsyncSample.Views
{
    /// 
    /// Interaction logic for MainWindow.xaml
    /// 
    public partial class MainWindow : MetroWindow
    {
        public MainWindow()
        {
            InitializeComponent();
            this.DataContext = new MainViewModel();
        }
    }
}

適用後

実行してみるとこんな感じです。

下記の定義で全体的な色を LightBlue に変えています。

App.xaml

<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.LightBlue.xaml" />

指定できる色は下記で確認できます。
https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit/tree/master/MaterialDesignColors.Wpf/Themes/Recommended/Accent

さいごに

自分でイチから作るのは大変なので非常にありがたいですね。

以上、もりもりでした。

2021年3月26日金曜日

36協定届をe-Govで届け出してみた!

昨秋リニューアルされたe-Govを利用して、時間外労働・休日労働に関する協定届、いわゆる「36協定届」を届け出ます。
実は、昨年もe-Govで電子申請しており、その時は起算日の入力が抜けていたため、再提出となりました。
今年は一発合格となるでしょうか。


届出書の作成


手続きから「時間外労働・休日労働に関する協定届(各事業場単位による届出)(特別条項付き)」を選択します。

「様式追加」により続紙や特別条項を追加することができます。



追加されました。



各様式は紙で提出する様式と同じなので、記載例を参考に入力していきます。


届出書も添付書類も任意!?


次に、昨年と同じように協定書(=記名押印した届出書)を添付します。


ここで疑問が生じました。

添付した書類に「任意」というラベルが付いています。

e-Govにある留意事項には「協定書の写しを添付する場合は」とあり、また厚生労働省サイトにある電子申請マニュアルにも「労使協定書などを任意に添付する場合は」とあり、確かに必須ではないようです。

さらに言えば、各様式にも「任意」のラベルが付いており、結局のところ、何が必要なのかよく分からなくなってきました。

その旨をe-Govの問い合わせフォームから問い合わせたのですが、問い合わせが殺到しているのか、2週間以上経った今も回答はありません。


署名して提出


仕方がないので、署名して送信することにしました。


カードリーダーにマイナンバーカードを置かずに「設定」すると、「条件を満たす証明書がありません。」というエラーが表示されます。


マイナンバーカードを置いてから「設定」すると、「マイナンバーカードを使用しますか?」と表示されました。


送信後、その日のうちに審査が開始され、翌日には手続きが完了しました。


またいつか、どこかで。

2021年3月22日月曜日

WSL2をインストールする

こんにちは。やっまむーです。

先日、PCを新しくした際、OSのバージョンが2004になっていたので、WSL2をインストールしてみました。

Linux 用 Windows サブシステムを有効にする

"Linux 用 Windows サブシステム" オプション機能を有効にするため、以下のコマンドを実行します。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

仮想マシンの機能を有効にする

続いて"仮想マシン プラットフォーム"オプション機能を有効にするため、以下のコマンドを実行します。

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
このあと、設定を反映させるために一度再起動しておきます。

Linux カーネル更新プログラム パッケージをダウンロードする

以下のURLから最新のLinux カーネル更新プログラムのパッケージをダウンロードし、インストールします。
x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ

WSL 2 を既定のバージョンとして設定する

Linuxディストリビューションをインストールする際の既定バージョンをWSL2 に設定するため、以下のコマンドを実行します。

wsl --set-default-version 2

Linux ディストリビューションをインストールする

Microsoft Store を開き、Linuxディストリビューションをインストールします。

今回はUbuntuをインストールします。
Ubuntuを選択した後、「入手」ボタンを押すとインストールが始まります。
インストール後、Ubuntuを起動すると、次のように新規のユーザーアカウントとパスワードの作成を要求されます。
入力できると次のようになり、無事WSL2 を使ってUbuntuを動かすことができました。

Ubuntuを立ち上げるとエラーになった話

Ubuntuをインストールして起動したところ、以下のような画面が出ました。

"WslRegisterDistribution failed with error: 0x80370102"
調べてみると、Hyper-V の機能が有効になっていませんでした。
よく見ると、一部機能はグレーアウトしており、BIOSの仮想化機能も無効になっていました。
BIOSの設定を立ち上げ、以下の機能を有効にします。
CPU Configuration >  Intel(R) VirtualizationTechnology
その後、Hyper-V の機能を有効にして再起動すると無事立ち上がりました。

ではではー。

2021年3月12日金曜日

スマートウォッチで心拍数のデータを取る!(運動で脂肪燃焼したかったら心拍数を高めよ!)

 


こんにちは。よっしーです。
私は自転車に乗るとき、スマホアプリで距離や消費カロリーのデータを取っています。

GPS位置情報や加速度センサー等を利用したもので、距離/速度などはある程度信頼できるデータなのですが、
消費カロリーについてはあまり正確なものではありません。

1時間のサイクリングで800キロカロリーも消費してるの?

検証をするためにも、スマートウォッチを購入しました。
心拍も同時に測ってくれるため、より実際の消費カロリーに近い値が出力されるはずです。

で、同じコースを同じように走ってみた結果が以下です。


レッツサイクリング!




消費カロリー352って半分以下やん!!

いろいろと衝撃な結果となりました。。。

サイクリングを開始して25分ほどは心拍数があまり上昇していません。

その間の消費カロリーは微々たるもので、後半の30分ぐらいしか
実際には脂肪燃焼されていないことがわかります。

ウォーキング等も脂肪燃焼するには30分以上続けないといけない。
とかよく言われますが、こういうことか。。。と納得しました。

データを取ることで、効率よく脂肪燃焼する走り方がわかってきたので、
実演した結果が以下となります。


レッツサイクリング!



心拍計測なし時の消費カロリーにかなり近くなりました。

心拍計測なしだと、心拍状態が有酸素運動状態をキープしている形で計上されているように思えます。
心拍計測なしでの表示(実際の消費カロリーに開きがあること)に騙されている人がかなりいそうですね。。。


今回の検証で、カロリー消費には心拍数をコントロールすることが重要だとわかりました。
皆さんも脂肪燃焼したい場合は心拍数を高めた状態で運動することを心がけて下さい。

ではまた~。

2021年3月5日金曜日

マイナンバーカード方式で確定申告してみた!

 これまでの確定申告では、国税庁のWebサイトで申告書を作成して、印刷した申告書を税務署に持参し、提出していました。
今回は「マイナンバーカード方式」で提出してみます。


マイナンバーカード方式とは


国税庁の「確定申告書等作成コーナー」に記載されている通り、令和2年分の確定申告書を提出する方法には

  • e-Taxで提出 マイナンバーカード方式
  • e-Taxで提出 ID・パスワード方式
  • 印刷して提出

の3つがあります。
ID・パスワード方式はマイナンバーカードが普及するまでの暫定的な対応だそうです。

確定申告のページでは、マイナンバーカード方式がどういうものか分かりにくいのですが、
「マイナンバーカードを使って、e-Taxへログインするための手段」とe-Taxのページには書かれています。

法人と同様に、e-Taxにログインするには「利用者識別番号」と「暗証番号」が必要です。
その代わりに「マイナンバーカード」でログインするのがマイナンバーカード方式です。
(ログインの際には、マイナンバーカードの利用者証明用パスワードの入力が必要です。)
マイナンバーカードを利用する場合でも、利用者識別番号は割り振られています。

これまでもWindowsパソコンから、マイナンバーカード方式でのログインができていたようですが、
令和3年1月からはMicrosoft Edge / Google Chromeにも対応したそうです。


手順


1.事前準備

マイナンバーカード方式での提出を選択すると、事前確認画面が表示されます。


画面に従い、事前準備を進めます。
完了すると、メッセージが適用済みに変わります。



2.マイナンバーカード方式の利用登録

マイナンバーカードによる認証後、「マイナンバーカードを使ってe-Taxにログインします」という設定、
つまりマイナンバーカード方式の利用登録をします。


私は利用者識別番号を持っていなかったので、「初めてe-Taxをご利用される方はこちら」から氏名等の情報を入力しました。
その後、e-Taxの利用者情報入力画面に遷移します。

せっかく前画面で住所を入力しているのに、この画面に反映されないのが残念ですね。
利用者情報を入力し、送信すると、マイナンバーカード方式の登録が完了します。


3.申告書の作成

申告書を作成します。
上部にある「マイナンバーカード」がマイナンバーカード方式であることを表しているのでしょう。


4.申告書への署名・送信

申告書の作成が終わったら、マイナンバーカードで署名し、

利用者証明用パスワードを入力し、

データを送信すると完了です。


事前準備から申告書の送信に至るまで、特につまづくことはありませんでした。
途中、住所を入力する箇所では、マイナンバーに紐づいているであろう情報(住所など)から自動入力してくれたらとも思いましたが、e-Taxのログインにマイナンバーカードを使っているだけで、e-Taxがマイナンバーのシステムと連携しているわけではないのでしょうね。
マイナンバーに銀行口座が紐づいた上で、マイナンバーのシステムとe-Taxの連携が実現すれば、還付金の振込先口座の入力も必要なくなるのになとも思いました。


またいつか、どこかで。

2021年2月23日火曜日

SQL Server DATETIME型の日時をNULLに更新できなかった件について

おはようございます。
こんにちは。
こんばんは。

はじめまして、ドラゴンです。
初投稿なので、すごく緊張しています!

SQL ServerでDATETIME型の日付を
NULLに更新できずはまってしまったので、記載します。

こんなテーブルがあったとします。

Aテーブル

ID 名前 日付
1 太郎 2021/02/18 12:00:00

このSQLを実行したところ…

UPDATE
  A
SET
  日付 = ''
;

Aテーブル

ID 名前 日付
1 太郎 1900/01/01
日付がNULLに変わっていませんでした。
しかも、「1900/01/01」という日付に代わっていて驚きましたね。

DATETIME型の日時をNULLに更新したいときは、
明示的にNULLを書く必要があるみたいですね。

UPDATE
  A
SET
  日付 = NULL
;

上記のSQLを実行すると、期待通りの結果がでて、ほっとひと安心です。

Aテーブル

ID 名前 日付
1 太郎 (NULL)

最後に

これからはDATETIME型の日付をNULLに更新したいときに、
はまらなくて済むのでいい勉強になりました。
SQLは私が最も好きな言語でもあるので、どんどん知識を蓄えていきたいですね。
最後まで読んでいただきありがとうございました。
今後ともよろしくお願いいたします。

それでは、ドラゴンでした~~~。

2021年2月21日日曜日

Visual Studio Express で WindowsXP対応アプリを作成する方法

こんにちは。ひっくです。

今回はVisual Studio Expressを使用してC++でWindowsXP対応のアプリを
作成するうえで、必要な手順を備忘録として残しておきます。

前提条件


 ・Visual Studio Dev Essentials を利用して以下をインストール
    ・Visual Studio Express 2012 for DeskTop
    ・Visual Studio 2012 Update 4

実行時エラーの発生


Visual Studio 2010 まででアプリケーションを作成した場合、
プラットフォームツールセットを特に意識しなくても、WindowsXPで実行可能なExeを作成することは可能です。

ただ、Visual Studio 2012 以降では、この設定を意識しなければなりません。

もしこの設定を変更せずに作成したExeを実行しようとすると、
「(実行Exeのパス)は有効な Win32 アプリケーションではありません。」と
エラーメッセージが表示され、実行することができません。

対処法(プラットフォームツールセットの設定)



既定のプラットフォームツールセットは、上記のようになっています。
そこで、プラットフォームツールセットを「Visual Studio 2012 - Windows XP (v110_xp)」に変更します。

Visual Studio をインストールしただけでは、上で選択中のプラットフォームツールセットを選択できないため、
前提条件に記載したVisual Studio 2012 Update 4 をインストールする必要があります。

「Windows XP Targeting with C++」が「Visual Studio 2012 - Windows XP (v110_xp)」に
該当する部分となります。

今回はこのへんで。ではまた!

2021年2月13日土曜日

vscodeでPlantUMLを使ってみる [Mac][Windows]

どうも、もりもりです。

以前ブログメンバーのよっしーさんの記事で、仕事先での設計書作成が「脱Excel」の流れになってきてるということで draw.ioの紹介がありましたが今回はUMLをテキストベースで書けるPlantUMLについて紹介したいと思います。

draw.ioの記事はこちら


導入

PlantUMLはJavaが必要なのでまずはJavaを入れてください。Macの方はHomebrewで入れてもOKです。(というかそっちのがラク)
シーケンス図、アクティビティ図以外も使うならGraphvizも必要になるようです。

◆ Macの場合
$ brew install plantuml
$ brew install graphviz

※記事を書いた時点(2021/02/12)ではplantumlのインストール時にgraphvizも一緒に入ったようです。

◆ Windowsの場合
> winget install -e --id Oracle.JavaRuntimeEnvironment
> winget install graphviz

vscodeでプラグインをインストール

拡張機能より「plantuml」と入力して下記画像のプラグインをインストール

動作確認

xxxx.puという拡張子でファイルを作成します。

下記のようにファイルを作成して入力します。

sequence-sample.pu

@startuml
participant "View" as V
participant "User Class" as U

activate V
V -> V: click button
V -> U: create instance
activate U
V -> U: GetUsers()
U --> V: List
deactivate U
V -> V: bind users to GridView
@enduml

option + D(Windowsならalt + D)でプレビュー表示してみると、あらゴイゴイスー。

公式ドキュメントはこちらを。

画像出力

作成したUMLを画像に出力してみましょう。 Command + Shift + P(WindowsならCtrl + Shift + P)で 「uml」と入力します。 「Export Current Diagram」を選択し、「出力形式」を選択します。

markdownファイルに挿入するとこんな感じに。
※Darkテーマだとシーケンス図のメッセージが黒で見えなかったのでLightテーマにしてます。

さいごに

画像出力もできるし慣れてしまえばこっちの方がサクっと作れそうですね。 設計書をMarkdownやasciidocなどで作成してる人はぜひ使ってみてください。 mermaid.jsの方も以前チラッと触ってみたことがあり、同じようなUMLを作成できるのでまた違いなどが判れば紹介したいと思います。

以上、もりもりでした。