class MyTableDefineDto:
2020년 10월 25일 일요일
python excel(tableDefineDto.py)
python excel(makeDataBookTest.py)
import openpyxl
python excel(searchTableName.py, searchTableNameTest.py)
import openpyxl
2020년 10월 11일 일요일
html div media screen
<!DOCTYPE html>
2020년 10월 10일 토요일
html div test
<!DOCTYPE html>
wpf test
MainWindow.xaml
<Window x:Class="WpfApplication1.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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="150" Width="900">
<Window.Resources>
<local:MYViewModel x:Key="myVM"/>
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource myVM}}" Width="500" HorizontalAlignment="Left">
<ItemsControl ItemsSource="{Binding ThingsList, Mode= OneWay}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate >
<DataTemplate>
<!--<TextBlock Text="{Binding Name}" Foreground="{Binding Color}" TextAlignment="Left"/>-->
<TextBlock TextAlignment="Left">
<Run Text="{Binding Name}" Foreground="{Binding Color}" />
</TextBlock>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Window>
-----------------------------------------------
MainWindow .xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication1
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
MainWindow.cs
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WpfApplication1
{
public class NamedThing
{
public string Name { get; set; }
public string Color { get; set; }
}
public class MYViewModel
{
public List<NamedThing> ThingsList { get; set; }
= new List<NamedThing>
{
new NamedThing {Name = "Short1",Color= "#FF0000"},
new NamedThing {Name = ", ", Color ="black"},
new NamedThing {Name = "Short2", Color= "red"},
new NamedThing {Name = ", ", Color ="black"},
new NamedThing {Name = "Short3", Color= "blue"},
new NamedThing {Name = ", ", Color ="black"},
new NamedThing {Name = "Short4", Color= "red"}
};
}
}
2018년 5월 27일 일요일
確認内容
・webRTC
Web RealTime Communication
WebRTCでは、ブラウザ同士の直接接続をネゴシエートするために、事前にお互いの情報をやりとりする必要があるため、サーバは必要です。
お互いの情報を作成/チェックするために、STUNやTURN、ICEなどのIRC関連プロトコルを利用しており、これらのサーバも必要になります。
PCのカメラやマイクから取得した画像や音声のストリーミングだけでなく、DataChannelを利用してピア接続上で双方向通信が行えます。
ORACLE
-------------------------------------------
DB接続設定ファイル情報
-------------------------------------------
tnsname.ora
ORCL1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl1.japan.com)
)
)
-------------------------------------------
http://blog.naver.com/gmjroc/40111049928
http://seandb.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-SID
SQL> select instance from v$thread;
----------------
ORCL
2. 오라클 데이타베이스명을 확인하는 방법
SELECT NAME, DB_UNIQUE_NAME FROM v$database;
SQL> select * from v$database;
지금껏 오라클을 사용하면서도 SID와 Service Name은 거의 구분해서 사용하지 않았다.
덕분에 최근까지는 SID와 Service의 차이를 인식하지 못하고 사용해 왔다.
사실 일반적인 테스트 환경이나 소규모의 경우 한개의 DB서버에 한개의 인스턴스만 사용한다.
이런 환경에서는 SID와 Service Name을 구분할 필요가 없었던것.
단순히 구분짓자면 이렇게 말할수 있다.
SID = DB 하나의 인스턴스
Service Name = 여러개의 인스턴스를 모아 하나의 서버 혹은 시스템을 구성한것
쉽게 예를 들어보자.
서버 한대에 인스턴스를 여러개 생성하여 orcl1, orcl2 로 각각 생성했다고 하자.
각각의 인스턴스는 orcl1, orcl2 라는 SID를 갖게 된다.
해당 서버에서 두개의 인스턴스를 묶어 사용할경우, orcl 이라는 Service Name을 갖을수 있다.
이외에도 서버 두대에 설치하여 각각 미러링 처리하여 동일한 서버인것 처럼 활용할경우
각각의 서버는 서로다른 SID를 갖게 되지만 Service Name을 동일하게 하여 같은 서버 처럼 활용할수 있다.
[출처] Oracle TNS에서 SID와 service_name의 차이 | |작성자 xxsaintxx
출처: http://seandb.tistory.com/entry/오라클-SID [DB공부합시다]
java8 map
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.ArrayUtils;
public class TestOfMap {
/** 対応コード : XX1 */
private static final Map<String, String> cdValOfXx1 = new HashMap<String, String>() {
{
put("new01", "old01");
put("new02", "old01");
put("new03", "old01");
put("new04", "old01");
put("new05", "old01");
}
};
/** 対応コード:XX2 */
private static final Map<String, String> cdValOfXx2 = new HashMap<String, String>() {
{
put("new11", "old11");
put("new12", "old11");
put("new13", "old11");
put("new14", "old11");
put("new15", "old11");
}
};
/** コード */
private static final Map<String, Map<String, String>> cdOfXx1 = new HashMap<String, Map<String, String>>() {
{
put("101", cdValOfXx1);
put("201", cdValOfXx2);
}
};
/** データリストXxx1 */
private static final String[] tblListOfXx1 = {
Tbl1Entity.class.getSimpleName(), Tbl2Entity.class.getSimpleName(),
Tbl3Entity.class.getSimpleName(), };
/** データリストXxx2「 */
public static final String[] tblListOfXx2 = {
Tbl1Entity.class.getSimpleName(), Tbl2Entity.class.getSimpleName(),
Tbl3Entity.class.getSimpleName(), };
/**
* Testメソッド
*/
public void test(){
boolean isRegistOfTbl1 = ArrayUtils.contains(tblListOfXx1, Tbl1Entity.class.getSimpleName());
if (isRegistOfTbl1) {
// Mapから値取得、デフォルートは空
cdValOfXx1.getOrDefault("new11", "");
// TODO 登録処理など
}
}
}
java Iterator list重複削除
List<String> dupList = new ArrayList<String>();
while (itr.hasNext()) {
InfoBean info = itr.next();
if (dupList.contains(info.getBuso())){
itr.remove();
}
else{
dupList.add(info.getBuso());
}
}
java8 sort
List<InfoBean> userCpDepList = new ArrayList<InfoBean>();
Comparator<InfoBean> orderByItem1 = Comparator.comparing(InfoBean::getItem1).reversed();
Comparator<InfoBean> orderByItem2 = Comparator.comparing(InfoBean::getItem2);
Comparator<InfoBean> orderByItem3 = Comparator.comparing(InfoBean::getItem3);
userCpDepList = userCpDepList.stream()
.sorted(orderByItem1
.thenComparing(orderByItem2
.thenComparing(orderByItem3))).collect(Collectors.toList());
2018년 2월 4일 일요일
log4j
参考
https://itsakura.com/java_log4jxml
■mavenのpom.xmlにlog4j定義(またはjarを入手し、クラスパスに設定)
■プルジェクト直下にlog4j.xml定義
■テストクラス作成、テスト
-----------pom.xml------------------------------------------------------
<!-- 追加4 log4j -->
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- 追加4 log4j end -->
----------log4j.xml----------------------------------------------------------
説明
<param name="File" value="./log/log.log" />は<!-- log作成場所 -->
<param name="ConversionPattern" value="%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-6p %m%n"/><!--log出力時フォーマット -->
<?xml version="1.0" encoding="MS932" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="Appender1" class="org.apache.log4j.FileAppender">
<param name="File" value="./log/log.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-6p %m%n"/>
</layout>
</appender>
<root>
<level value="debug" />
<appender-ref ref="Appender1" />
</root>
</log4j:configuration>
-----------テストクラス作成、テスト----------------------------------------------
package com.mybatis;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
public class LogTest {
public static void main(String[] args) {
// Logger
Logger logger = Logger.getLogger(LogTest.class);
DOMConfigurator.configure("log4j.xml");
logger.trace("trace "+"1");
logger.debug("debug "+"1");
logger.info("info "+"1");
logger.warn("warn "+"1");
logger.error("error "+"1");
}
}
-----------------------------------------------------------------
---------------------------------------------------
※Log4j.propertiesを使う場合、
resources直下に配置
log4j.xmlが存在したら、xmlを優先にするため、注意
mybatisのsqlログを出力したい場合:下記のlog4j.logger.com.example.dao=DEBUG
特定のDaoクラスを定義も可能log4j.logger.com.example.dao.Test1Dao=DEBUG
------------------Log4j.properties-----------------------------------
# Global logging configuration
#log4j.logger.java.sql=DEBUG
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.example.dao=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
------------------------------------------------------------------------------
2018년 2월 3일 토요일
MyBatis2
■mavenプロジェクト作成
(pom.xml修正:mybatis、generator定義、generator拡張時は、拡張クラスを定義)、
■maven-install
■generator(拡張pluginがある場合、plugin定義), mybatis用xml定義
■generator拡張クラス作成
■maven-build(ゴール追加:generator..)
generatorによって、Dao(Mapper, Mapper.xml), Entityクラスが自動生成される。
※build前にDB環境構築(該当テーブル生成して置く)
---------------------------------------------------------------------
■mavenプロジェクト作成
1.mavenプロジェクト作成
2.pom.xml修正
下記追加
---------------------------------------------------------------
<!-- 追加1 start ※</dependencies>前に-->
<!-- http://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.0</version>
</dependency>
<!-- 追加1 end -->
<!-- 追加3 mybatis generator pluginを使うため start -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.6</version>
</dependency>
<!-- 追加3 end -->
</dependencies>
<!-- 追加2 starat ※ </project>前に-->
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.1</version>
<!-- 追加2 end -->
<!-- 私のjar(generatorをカスタムしたplugin)を追加 -->
<dependencies>
<dependency>
<groupId>com.mybatis2.plugin</groupId>
<artifactId>plugin</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</plugin>
<!-- 私のjar end -->
<!-- C:\Users\user\.m2\repository\com\mybatis\plugin\plugin\1.0.0\plugin-1.0.0.jar プラグインのクラスパスを認識させるため、カスタムpluginクラスのjar作成し、こちらの場所に配置しておく-->
</plugins>
</build>
</project>
-----------------------------------------------------------------------
■maven-install
3.Maven Install
C:\Users\user\.m2\repositoryにinstallされたこと確認
Maven依存関係
mybatis-3.4.0.jar ー--> 追加されたこと確認
■generator(拡張pluginがある場合、plugin定義), mybatis用xml定義
4. resources追加(src/main/resources/)
・mybatis-config.xml,
・generatorConfig.xml
------------- mybatis-config.xml ---------------------------------------
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- JDBCの設定です(1) -->
<environments default="gissn">
<environment id="gissn">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
<property name="username" value="gissn" />
<property name="password" value="oracle" />
</dataSource>
</environment>
</environments>
<!-- mapperパッケージを指定します -->
<mappers>
<package name="com.example.dao" />
</mappers>
</configuration>
-----------------------------generatorConfig-------------------------------------
xxx.xxx.xx.x --> localhost
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
<classPathEntry location="C:\work\tools\oracle\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6.jar" />
<context id="context1" targetRuntime="MyBatis3">
<!-- ★com.mybatis2パッケージに拡張pluginクラスがあるか 確認! start -->
<plugin type="com.mybatis.plugin.MapperClassNamePlugin" />
<plugin type="com.mybatis.plugin.BeanClassNamePlugin" />
<!-- ★com.mybatis2パッケージに拡張pluginクラスがあるか 確認! end -->
<!-- JDBCの設定です (1) -->
<jdbcConnection
driverClass="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@localhost:1521:XE"
userId="gissn"
password="oracle"
/>
<!-- 自動生成するエンティティの設定です (2) -->
<javaModelGenerator
targetPackage="com.example.entity"
targetProject="src/main/java/"
/>
<sqlMapGenerator
targetPackage="com.example.dao"
targetProject="src/main/java/"
/>
<javaClientGenerator
targetPackage="com.example.dao"
targetProject="src/main/java/"
type="XMLMAPPER"
/>
<!-- 生成対象のテーブルです(3) -->
<table schema="gissn" tableName="%" />
</context>
</generatorConfiguration>
-------------------------------------------------
■generator拡張クラス作成
----BeanClassNamePlugin (~Entityクラス名にするためプラグインクラス作成)---------
package com.mybatis.plugin;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;
/**
* MyBatis Generatorで生成するクラス名を変更するプラグイン。
*/
public class BeanClassNamePlugin extends PluginAdapter {
public boolean validate(List<String> warnings) {
return true;
}
@Override
public void initialized(IntrospectedTable table) {
super.initialized(table);
table.setBaseRecordType(table.getBaseRecordType() + "Entity");
table.setExampleType(replace(table.getExampleType(), "Example", "Filter") );
}
private String replace(String target, String search, String replace) {
Pattern pattern = Pattern.compile(search);
Matcher matcher = pattern.matcher(target);
target = matcher.replaceAll(replace);
return target;
}
}
---MapperClassNamePlugin (MapperクラスをDaoクラウス名に生成させるため)--------
package com.mybatis.plugin;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;
public class MapperClassNamePlugin extends PluginAdapter {
public boolean validate(List<String> warnings) {
return true;
}
@Override
public void initialized(IntrospectedTable introspectedTable) {
introspectedTable.setMyBatis3JavaMapperType(replace(introspectedTable.getMyBatis3JavaMapperType(), "Mapper", "Dao"));//~Mapper.java を変更
introspectedTable.setMyBatis3XmlMapperFileName(replace(introspectedTable.getMyBatis3XmlMapperFileName(), "Mapper", "Dao")); //~Mapper.xml を変更
}
private String replace(String target, String search, String replace) {
Pattern pattern = Pattern.compile(search);
Matcher matcher = pattern.matcher(target);
target = matcher.replaceAll(replace);
return target;
}
}
※pluginクラスをjarでエクスポートし、pom.xml定義場所に配置
ex)C:\Users\user\.m2\repository\com\mybatis2\plugin\plugin\1.0.0\plugin-1.0.0.jar
----------------------------------------------------
■maven-build(ゴール追加:generator..)
6.maven ビルドに新規追加し、実行
・基底ディレクトリーにmavenプロジェクトのワークスペースを設定
・ゴール設定:mybatis-generator:generate
7. 設定path通り、entity,daoが作成されていればOK
------------------------------------------------------------------
<!-- 追加4 log4j -->
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- 追加4 log4j end -->
---------------------------------------------------
※Log4j.propertiesを使う
resources直下に配置
log4j.xmlが存在したら、xmlを優先にするため、注意
mybatisのsqlログを出力したい場合:下記のlog4j.logger.com.example.dao=DEBUG
特定のDaoクラスを定義も可能log4j.logger.com.example.dao.Test1Dao=DEBUG
------------------Log4j.properties-----------------------------------
# Global logging configuration
#log4j.logger.java.sql=DEBUG
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.example.dao=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
------------------------------------------------------------------------------
DEBUG [main] - ==> Parameters: insert_1(String), 1(String), null
DEBUG [main] - <== Updates: 1
■updateByPrimaryKeyとupdateByPrimaryKeySelective
・updateByPrimaryKeyメソッド
PK以外のすべての項目を更新する。
設定しない項目は、nullで更新されてしまう。(updateのset文に設定しない項目も追加され、さらにnullで更新)
ex)col4は、設定してない
Test1Entity entity = new Test1Entity();
entity.setCol1("key1");
entity.setCol2("key2");
entity.setCol3("col3");
int result = dao.updateByPrimaryKey(entity);
実行結果LOG
DEBUG [main] - ==> Preparing: update GISSN.TEST1 set COL3 = ?, COL4 = ? where COL1 = ? and COL2 = ?
DEBUG [main] - ==> Parameters: col3(String), null, insert1(String), (String)
DEBUG [main] - <== Updates: 1
・ updateByPrimaryKeySelectiveメソッド
ex)col4は、設定してない
Test1Entity entity = new Test1Entity();
entity.setCol1("key1");
entity.setCol2("key2");
entity.setCol3("col3");
int result = dao.updateByPrimaryKeySelective(entity);
実行結果LOG
DEBG [main] - ==> Preparing: update GISSN.TEST1 SET COL3 = ? where COL1 = ? and COL2 = ?
DEBUG [main] - ==> Parameters: col3(String), insertSv1(String), (String)
DEBUG [main] - <== Updates: 1



