SQLの窓

2020年08月11日


PowerShell で VisualStudio で作成した Form アプリケーションをビルドする( Form アプリケーションを テキストエディタのみで作成するテンプレート )



▼ ps.bat ( PowerShell をそのまま使えない場合は以下のバッチファイルを作成して使用します )
@powershell -NoProfile -ExecutionPolicy Unrestricted "./%1.ps1"
build.ps1 exe 作成用 PowerShell スクリプト ✅ Program.cs アプリケーション開始 ✅ Form1.cs Form コントロール ✅ Form1.Designer.cs 画面定義 ▼ build.ps1
Add-Type -path "Program.cs", "Form1.cs", "Form1.Designer.cs" `
	-ReferencedAssemblies System.Windows.Forms, System.Drawing `
	-OutputAssembly form-01.exe `
	-OutputType WindowsApplication

Read-Host "何かキーを押してください"


プログラムは、入力した内容をボタンをクリックした後 MessageBox で表示するだけのものです。つまりは、Form アプリケーションを テキストエディタのみで作成するテンプレートでもあります。

▼ Program.cs
using System;
using System.Windows.Forms;

namespace form_01
{
	static class Program
	{
		[STAThread]
		static void Main()
		{
			Application.EnableVisualStyles();
			Application.SetCompatibleTextRenderingDefault(false);
			Application.Run(new Form1());
		}
	}
}


▼ Form1.cs
using System;
using System.Windows.Forms;

namespace form_01
{
	public partial class Form1 : Form
	{
		public Form1()
		{
			InitializeComponent();
		}

		private void button1_Click(object sender, EventArgs e)
		{
			MessageBox.Show(textBox1.Text);
		}
	}
}


▼ Form1.Designer.cs
namespace form_01
{
	partial class Form1
	{
		private System.ComponentModel.IContainer components = null;

		protected override void Dispose(bool disposing)
		{
			if (disposing && (components != null))
			{
				components.Dispose();
			}
			base.Dispose(disposing);
		}

		private void InitializeComponent()
		{
			this.textBox1 = new System.Windows.Forms.TextBox();
			this.button1 = new System.Windows.Forms.Button();
			this.SuspendLayout();
			// 
			// textBox1
			// 
			this.textBox1.Location = new System.Drawing.Point(65, 48);
			this.textBox1.Name = "textBox1";
			this.textBox1.Size = new System.Drawing.Size(243, 19);
			this.textBox1.TabIndex = 0;
			// 
			// button1
			// 
			this.button1.Location = new System.Drawing.Point(64, 94);
			this.button1.Name = "button1";
			this.button1.Size = new System.Drawing.Size(243, 28);
			this.button1.TabIndex = 1;
			this.button1.Text = "実行";
			this.button1.UseVisualStyleBackColor = true;
			this.button1.Click += new System.EventHandler(this.button1_Click);
			// 
			// Form1
			// 
			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
			this.ClientSize = new System.Drawing.Size(534, 290);
			this.Controls.Add(this.button1);
			this.Controls.Add(this.textBox1);
			this.Name = "Form1";
			this.Text = "タイトル";
			this.ResumeLayout(false);
			this.PerformLayout();

		}

		private System.Windows.Forms.TextBox textBox1;
		private System.Windows.Forms.Button button1;
	}
}






posted by lightbox at 2020-08-11 18:56 | PowerShell + C# | このブログの読者になる | 更新情報をチェックする

XAMPP 内 Tomcat Version 7 の設定と簡単な JSP の実行テスト



JDK は、OpenJDK をダウンロードして解凍して、C:\Java に設置したとします。 
( ※ ここでは、8 を使用しました )

▼ 必要なレジストリエントリ( これを手作業で作成します )
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft]

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit]
"JavaHome"="C:\\java"


XAMPP は、"C:\xampp" にインストールされているとします。

1) "C:\xampp\tomcat\conf\web.xml" の変更
<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>trimSpaces</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>compilerSourceVM</param-name>
        <param-value>1.8</param-value>
    </init-param>
    <init-param>
        <param-name>compilerTargetVM</param-name>
        <param-value>1.8</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>


※ trimSpaces を true にする事によって無駄な改行を省く事ができます( 強調部分を追加です )

※ compilerSourceVM は、Java 8 の新機能を使うのに必要です。
<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>


※ この設定で、その仮想フォルダのファイルの一覧を表示可能にします

2) "C:\xampp\tomcat\conf\server.xml" の変更
※ Tomcat7 のみ。Tomcat8 以降は必要ありません
<Connector
	port="8080"
	protocol="HTTP/1.1"
	connectionTimeout="20000"
	redirectPort="8443"
	URIEncoding="UTF-8" />

ここまでで、いったん起動すると C:\xampp\tomcat\conf\Catalina\localhost が作成されます。

※ 本文が UTF-8 で記述するという前提のお話です。( 8080 で検索してコメントでないエントリに追加 )

3) ソースコードを配置する場所の定義

※ "C:\xampp\tomcat\conf\Catalina\localhost" に以下のファイルを作成します。
※ ソースコードを "C:\user\lightbox\tomcat" に lightbox.xml として作成するとします
<Context
	displayName="Web Application Home"
	docBase="C:\user\lightbox\tomcat"
	path="/lightbox"
	reloadable="true"
	useNaming="false">
</Context>

▼ 以下サンプルです
sample_01.jsp
<%@ page
	language="java"
	contentType="text/html;charset=utf-8" %>
<%!
// *********************************************************
// ローカル関数
// *********************************************************
public String printFor( int count ) {

	String ret = "";

	for( int i = 0; i < count; i++ ) {
		ret += String.format( "%d<br>", i+1 );
	}

	return ret;
}
%>
<%
// *********************************************************
// ページ処理
// *********************************************************
request.setCharacterEncoding("utf-8");

String strField = request.getParameter("field");
if ( strField == null ) {
	strField = "";
}

%>
<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport">
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css">

<style>
#main {
	padding: 30px;
	font-size: 24px;
}

form {
	margin-bottom: 20px;
}
</style>
</head>
<body>
<div id="main">

<form method="get">
	<input type="text" name="field" value="<%= strField %>">
	<input type="submit" name="send" value="GET">
</form>

<% 
out.println( printFor(15) ); 
%>

</div>
</body>
</html>


sample_02.jsp

request.setCharacterEncoding は、POST で必要でした。
<%@ page
	language="java"
	contentType="text/html;charset=utf-8" %>
<%!
// *********************************************************
// ローカル関数
// *********************************************************
public String printFor( String[] data ) {

	String ret = "";

	for( int i = 0; i < data.length; i++ ) {
		ret += String.format( "%s<br>", data[i] );
	}

	return ret;
}
%>
<%
// *********************************************************
// ページ処理
// *********************************************************
request.setCharacterEncoding("utf-8");

String strField1 = request.getParameter("field1");
if ( strField1 == null ) {
	strField1 = "";
}

String strField2 = request.getParameter("field2");
if ( strField2 == null ) {
	strField2 = "";
}

String[] month = {"睦月","如月","弥生","卯月","皐月","水無月","文月","葉月","長月","神無月","霜月","師走"};

%>
<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport">
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css">

<style>
#main {
	padding: 30px;
	font-size: 24px;
}

form {
	margin-bottom: 20px;
}

.btn {
	vertical-align: top;
}
</style>
</head>
<body>
<div id="main">

<form method="get">
	<input type="text" name="field1" value="<%= strField1 %>">
	<input type="submit" name="send" value="GET" class="btn btn-info">
</form>

<form method="post">
	<input type="text" name="field2" value="<%= strField2 %>">
	<input type="submit" name="send" value="POST" class="btn btn-info">
</form>


<div class="alert alert-primary"><%= request.getMethod() %></div>

<% 
out.println( printFor(month) ); 
%>

</div>
</body>
</html>



posted by lightbox at 2020-08-11 13:50 | java : JSP | このブログの読者になる | 更新情報をチェックする

2020年08月02日


GAS : スプレッドシートのメニューに関数実行用のメニューを追加する



SpreadsheetApp.getUI
スクリプトがメニュー、ダイアログ、サイドバーなどの機能を追加できるようにする、スプレッドシートのユーザーインターフェイス環境のインスタンスを返します。 スクリプトは、開いているスプレッドシートの現在のインスタンスのUIとのみ対話でき、スクリプトがスプレッドシートにバインドされている場合に限ります。
createCal は関数名です。
// ************************************
// メニューの追加
// ************************************
function onOpen(e) {
	var ui = SpreadsheetApp.getUi();
	ui.createMenu('カレンダー作成')
		 .addItem('カレンダーへ適用', 'createCal')
		 .addToUi();
	
}

// ************************************
// 
// ************************************
function createCal() {


}





posted by lightbox at 2020-08-02 20:46 | GAS | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり