読者です 読者をやめる 読者になる 読者になる

備忘録

備忘録

国税の支払いでLINE Payは利用できる

Ⅰ. はじめに

国税のクレジットカード納付が2017年1月4日から開始されています。
これにより、確定申告分も28年度分からクレジットカード納付が可能になりました。
ただし、手数料がかかる為注意が必要です。
クレジットカード納付するかどうかは、
還元されるポイントと手数料を比較して自分で判断して下さい。

Ⅱ. LINE Payとは?

LINE Payは還元率が2%となっており(2017/02/20時点)
他に類をみない高還元率のカードです。
クレジットカードで納税するとポイントが貰えるてお得なので、
出来る限りクレジットカーで納付したいものです。

Ⅱ. LINE Payで納税できるのか?

結論からするとできました。
(実際に納税額分をLINE Payにチャージして試しました)

納付税目は「申告所得税及復興特別所得税
課税期間は「平成28年度(2016年度)」
申告区分は「確定申告」
です。

f:id:kagasu:20170220121424p:plain

LINE Payの残高が足りないと以下のように表示されます。

f:id:kagasu:20170220114514p:plain

C# WPF 数値のみ入力できるTextBoxを作る

Ⅰ. はじめに

半角数値0~9のみを許可するTextBoxの作り方です。
数値のみ入力可能なTextBoxは標準機能として用意されていません。(2017/02/20時点)
入力値が数値かどうかを判定して処理するコードを書く必要があります。

Ⅱ. 作り方

1. MainWindow.xaml

<TextBox
  x:Name="textBoxPrice"
  InputMethod.IsInputMethodEnabled="False"
  PreviewTextInput="textBoxPrice_PreviewTextInput"
  CommandManager.PreviewExecuted="textBoxPrice_PreviewExecuted"/>

2. MainWindow.xaml.cs

private void textBoxPrice_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
  // 0-9のみ
  e.Handled = !new Regex("[0-9]").IsMatch(e.Text);
}
private void textBoxPrice_PreviewExecuted(object sender, ExecutedRoutedEventArgs e)
{
  // 貼り付けを許可しない
  if (e.Command == ApplicationCommands.Paste)
  {
    e.Handled = true;
  }
}

C# で RSA暗号鍵(.pem)作成する

Ⅰ. はじめに

C#でpemファイルを作成する方法です。

その逆の、
C#でpemファイルを読み込む方法はy_yoda様がQiitaに投稿している記事の通りです。
http://qiita.com/y_yoda/items/f4bd3ec56ac7591c5804

Ⅱ. 環境

  • C#
  • .NET Core 1.1.0

Ⅲ. ソースコード

NuGetで Portable.BouncyCastle-Signed をインストールして下さい。

Program.cs

public class Program
{
  public static void Main(string[] args)
  {
    var rsa = RSA.Create();
    var parameter = rsa.ExportParameters(true);

    var privateKey = RsaPemMaker.GetPrivatePemString(parameter);
    File.WriteAllText("private-key.pem", privateKey);
    Console.WriteLine(privateKey);

    var publicKey = RsaPemMaker.GetPublicPemString(parameter);
    File.WriteAllText("public-key.pem", privateKey);
    Console.WriteLine(publicKey);

  }
}

RsaPemMaker.cs

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Math;

public static class RsaPemMaker
{
  public static string GetPrivatePemString(RSAParameters p)
  {
    var key = new RsaPrivateCrtKeyParameters(
      new BigInteger(1, p.Modulus),
      new BigInteger(1, p.Exponent),
      new BigInteger(1, p.D),
      new BigInteger(1, p.P),
      new BigInteger(1, p.Q),
      new BigInteger(1, p.DP),
      new BigInteger(1, p.DQ),
      new BigInteger(1, p.InverseQ));

    using (var stream = new MemoryStream())
    {
      using (var writer = new StreamWriter(stream, new UTF8Encoding()))
      {
        var pemWriter = new Org.BouncyCastle.OpenSsl.PemWriter(writer);
        pemWriter.WriteObject(key);
      }

      return new UTF8Encoding().GetString(stream.ToArray()).Replace("\r\n", "\n");
    }
  }

  public static string GetPublicPemString(RSAParameters p)
  {
    var key = new RsaKeyParameters(
      false,
      new BigInteger(1, p.Modulus),
      new BigInteger(1, p.Exponent));

    using (var stream = new MemoryStream())
    {
      using (var writer = new StreamWriter(stream, new UTF8Encoding()))
      {
        var pemWriter = new Org.BouncyCastle.OpenSsl.PemWriter(writer);
        pemWriter.WriteObject(key);
      }

      return new UTF8Encoding().GetString(stream.ToArray()).Replace("\r\n", "\n");
    }
  }
}

Ⅲ. 実行結果

f:id:kagasu:20170202132705p:plain

C#でRSS 1.0のFeedを読む

Ⅰ. はじめに

.NET Framework 3.5以降であれば Atom 1.0 と RSS 2.0を対象にした SyndicationFeed があるのですが、RSS 1.0はサポートされていません。
RSS 1.0 を手書きで解析するときのメモです。

Ⅱ. プログラム

解析対象のXMLGIGAZINEのRSS1.0のFeedを利用しました)
https://gist.github.com/anonymous/19883bc8c892ca8f8ceaa5937257a83e

static void Main(string[] args)
{
  var xml = new XmlDocument();

  xml.Load("http://feed.rssad.jp/rss/gigazine/rss_1.0");

  var nsmgr = new XmlNamespaceManager(xml.NameTable);
  nsmgr.AddNamespace("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
  nsmgr.AddNamespace("rss", "http://purl.org/rss/1.0/");
  nsmgr.AddNamespace("dc", "http://purl.org/dc/elements/1.1/");

  foreach (XmlElement node in xml.SelectNodes("/rdf:RDF/rss:item", nsmgr))
  {
    var title = node.SelectNodes("rss:title", nsmgr)[0].InnerText;
    var link = node.SelectNodes("rss:link", nsmgr)[0].InnerText;
    var description = node.SelectNodes("rss:description", nsmgr)[0].InnerText;
    var date = DateTime.Parse(node.SelectNodes("dc:date", nsmgr)[0].InnerText);

    Console.WriteLine("-------");
    Console.WriteLine($"title: {title}");
    Console.WriteLine($"link: {link}");
    Console.WriteLine($"description: {description}");
    Console.WriteLine($"date: {date}");
  }
}

Ⅲ. 実行結果

f:id:kagasu:20170122230022p:plain

Nox App Player のデフォルトランチャーアプリを変更する方法

Ⅰ. はじめに

Nox App Playerでは、
Playストアから Nova Launcher などをインストールしても、
自動的にNox Launcherに切り替わってしまいます。
それを解決する方法です。

Ⅱ. やり方

1. 任意のランチャーアプリをインストールする。

2. ファイルマネージャを起動する

/system/app/launcher_1.6_en_signed.apk を
launcher_1.6_en_signed.apk.bak にリネームします。
以上です。
f:id:kagasu:20170105162256p:plain