Java活用生活

ログイン

オンライン状況

オンラインユーザー2人
ログインユーザー0人
登録ユーザー2人

カウンタ

COUNTER355633

日誌

つれづれ備忘録
123456
2024/06/30

Spring Proxyとスコープメモ

固定リンク | by:aramaki
Proxyを使うと、寿命が長いBeanが寿命が短いBeanをDIできる。

Proxyを使うことで、寿命の短いBeanは、毎回、コンテナからgetBean
され、処理が終わると、スコープから破棄される。
20:48 | 投票する | 投票数(0) | コメント(0)
2022/11/12

BlueTooth対応(リモートデスクトップ)

固定リンク | by:aramaki
リモートデスクトップ接続を利用する場会、BlueToothを利用していたら接続できなくなる。その対応は以下のとおりにする。

C:\Program Files\CSR\CSR Harmony Wireless Software Stack配下の
BLEtokenCredentialProvider.dllをBLEtokenCredentialProvider.dll.BAK
とリネームして接続し直すと、問題なく接続できる

以下のサイトを参照
15:49 | 投票する | 投票数(0) | コメント(0)
2022/08/25

wait とsleep についてメモ

固定リンク | by:aramaki
wait とsleep についてメモ
------------------------------------------
以下もサイトを参考
07:45 | 投票する | 投票数(0) | コメント(0)
2022/06/01

Spring MVC サンプル

固定リンク | by:aramaki
Spring MVC サンプル
-------------------------------------------------------
以下のサイトのSpringサンプルを作成中、エラー対応したため、備忘録として書き留める。

今回、Tomcat8 で実行したため、その対応を入れた。
サンプルと異なる部分は、赤文字

①mvc-config.xml
------------------------------
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">


<context:component-scan base-package="jp.co.kensyu" />


<mvc:annotation-driven />

<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- Example: a logical view name of 'showMessage' is mapped to '/WEB-INF/jsp/showMessage.jsp' -->
<property name="prefix" value="/WEB-INF/view/" />
<property name="suffix" value=".jsp" />
</bean>

<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:ValidatorMessages" />
</bean>

<!-- DataSource -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://Hostname/mydb?serverTimezone=JST" />
<property name="username" value="admin" />
<property name="password" value="×××××" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="jp.co.kensyu.mapper" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
<!-- 
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="jp.co.kensyu.mapper" />
</bean>
-->
<bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>



</beans>
----------------------------------------------------------------------------------------------------------------------------------------

pom.xml
-------------------
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.samples.service.service</groupId>
<artifactId>SpringKensyu</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<properties>

<!-- Generic properties -->
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<!-- Web -->
<jsp.version>2.2</jsp.version>
<jstl.version>1.2</jstl.version>
<servlet.version>3.1.0</servlet.version>


<!-- Spring -->
<spring-framework.version>4.1.6.RELEASE</spring-framework.version>


<!-- Logging -->
<logback.version>1.0.13</logback.version>
<slf4j.version>1.7.5</slf4j.version>

<!-- Test -->
<junit.version>4.11</junit.version>

<spring-jdbc.version>4.0.6.RELEASE</spring-jdbc.version>

<!-- MyBatis -->
<MyBatis.version>3.3.0</MyBatis.version>
<!-- MyBatis Spring -->
<MyBatis.Spring.version>1.2.2</MyBatis.Spring.version>

<!-- Connector-J -->
<!-- 
<MySqlConnector.version>5.1.34</MySqlConnector.version> -->
<MySqlConnector.version>8.0.11</MySqlConnector.version>

<!-- CommonsDbcp Connection Pool -->
<CommonsDbcp.version>2.1</CommonsDbcp.version>

</properties>

<dependencies>

<!-- Spring MVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-framework.version}</version>
</dependency>

<!-- Other Web dependencies -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp.version}</version>
<scope>provided</scope>
</dependency>

<!-- Spring and Transactions -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring-framework.version}</version>
</dependency>

<!-- Logging with SLF4J & LogBack -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
<scope>runtime</scope>
</dependency>

<!-- validation-api(入力値検証で使用) -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<!-- Hibernate(入力値検証で使用) -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.0.1.Final</version>
</dependency>


<!-- Test Artifacts -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring-framework.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>

<!-- MyBatis 2022 05/31 ADD START-->
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${MyBatis.version}</version>
</dependency>

<!-- MyBatis Spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${MyBatis.Spring.version}</version>
</dependency>

<!-- MySqlConnector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${MySqlConnector.version}</version>
</dependency>

<!-- Commons-dbcp -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>${CommonsDbcp.version}</version>
</dependency>

<!-- Spring JDBC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring-jdbc.version}</version>
</dependency>
<!-- MyBatis 2022 05/31 ADD END-->
</dependencies>
<build>
<plugins>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>

</plugins>
</build>
</project>
----------------------------------------------------------------------------------------------------------------

13:53 | 投票する | 投票数(0) | コメント(0)
2022/06/01

MySQLサーバーにリモートアクセス許可

固定リンク | by:aramaki
MySQLサーバーにリモートアクセス許可
------------------------------------------------------------------
MySQLサーバーに、別マシンでアクセスするための設定を備忘録として書き留める。
参考サイト) https://qiita.com/egnr-in-6matroom/items/e77dfc719ed3dfbe0027
●adminユーザーで、別マシンからアクセスする。
①ユーザー作成
CREATE USER admin@'%' IDENTIFIED BY '×××××××';

②データベースmydbにCRUD権限付与
GRANT DELETE,INSERT,SELECT,UPDATE ON mydb.* TO admin@'%';
FLUSH PRIVILEGES;

※念のため、以下も実行
 GRANT ALL PRIVILEGES ON mydb.* TO admin@'%';
FLUSH PRIVILEGES;

③非暗号化でパスワードを再設定する
ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY '×××××××';




13:36 | 投票する | 投票数(0) | コメント(0)
2022/02/22

オリジン間リソース共有 (CORS制御)

固定リンク | by:aramaki
 オリジン間リソース共有 (CORS制御) 
---------------------------------------------------------
JSON なら JSONP を使う、異なるオリジンの利用について
抜粋)


ブラウザ上のJSエンジンからAPIサーバを叩く時に避けて通れないのが、Same-Origin Policy(同一生成元ポリシー)による
CORS (Cross-Origin Resource Sharing)制限です。CORS制御で異なるオリジンでもリソースを共有する


--------------------------------------------------------------------------
ヘッダ                                 | 値
---------------------------------------------------------------------------
Access-Control-Allow-Origin | アクセスを許可するOriginのURL。"*"で指定なし。
---------------------------------------------------------------------------
Access-Control-Allow-Methods | 使用可能なメソッド
---------------------------------------------------------------------------
Access-Control-Allow-Headers | 使用可能なリクエストヘッダ
---------------------------------------------------------------------------
Access-Control-Max-Age | preflightの結果をキャッシュしても良い時間(秒)
---------------------------------------------------------------------------

サンプル
-----------------------------
@Componentpublic class CorsFilter extends OncePerRequestFilter{ 
 private static final Logger log = LoggerFactory.getLogger(CorsFilter.class); 
 // spring boot for java におけるフィルタ処理
 @Override 
 protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
  response.setHeader("Access-Control-Allow-Origin", "*");//すべてのドメインからアクセス可能
  // ブラウザ上のJSエンジンは、APIサーバ(別ドメイン)にリクエストを投げる前にOPTIONSメソッドによるアクセスを行います。
if ("OPTIONS".equals(request.getMethod())) {
response.setHeader("Access-Control-Allow-Methods", request.getHeader("Access-Control-Request-Method"));
response.setHeader("Access-Control-Max-Age", "3600");
         response.setHeader("Access-Control-Allow-Headers", "Content-Type");
         response.setStatus(HttpServletResponse.SC_OK);
}else {
filterChain.doFilter(request, response);
}
}
}
09:36 | 投票する | 投票数(0) | コメント(0)
2022/01/21

作業メモ

固定リンク | by:aramaki
作業メモ
---------------------------
●JFS + PrimFace 演習
JavaEEアプリ「jeememo」プロジェクト作成_2021_05_19_start.xlsx



●Eclipse_java8 >> prime

JavaEE7 研修
-------------------
NO1)
Stirng jpql="SELECT k FROM Knowledge k";
TypedQuery<Knowledge> query=em.createQuery(jpql,Knowledge.class);
List<Knowledge> list=query.getResultList();
list.stream().forEache(k -> k.getTitle()):

NO2)
String jpql2="SELECT k FROM Knowledge k WHERE k.id=:kowledgeId";
TypedQuery<Knowkedge> query=em.createQuery(jpql2,Knowledge.class);
query.setParaneter("kowledgeId",1);
List<Knowledge> list=query.getSingleResult();

NO3)
file:///E:\デスクトップ__2019_11_07_DOC\MyDoc
Java EE 環境構築_memo_2019_12_31start.xlsx

NO4 Spring Struts2)
file:///E:\デスクトップ__2019_11_07_DOC\MyDoc\Spring3_Proj_2020_06_26.xlsx




Git
file:///E:\デスクトップ__2019_11_07_DOC\MyDoc\研修エビデンス_2017_05_07
TortoiseGit バージョン管理入門.xlsx


JavaEE N+1問題 マネージドビーン
file:///E:\デスクトップ__2019_11_07_DOC\MyDoc\JavaEE7メモ.xlsx


Spring Boot 2 入門: 基礎から実演まで 原田 けいと

@@@@@@@@@@@@@@@@@@@@@ 4月成果物 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
①JavaEE7_WildFry_memo_2021_3_13_start.xlsx JavaEE プロジェクト作成からSVN登録、JSF、DB登録
②Spring_MVC_研修_2021_0326.xlsx Springプロジェクト作成からLog設定まで
③Struts2研修_2021_04_02.xlsx Struts2プロジェクト作成から基本的設定、画面遷移、Validation Log設定まで


@@@@@@@@@@@@@@@@@@@@@ 5月成果物 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
①POI(セルに名前を指定し、そのセルに値を設定
file:///E:\デスクトップ__2019_11_07_DOC\
MyDoc\Poi_Excel帳票_2021_05_25.xlsx

C:\Users\aramaki\Desktop\SpringBoot2-sample\Spring Boot2改訂プロジェクト



●Struts2 サンプルProj
struts2x e_eclipse.exe




●Spring3 Struts2
E:\デスクトップ__2019_11_07_DOC\MyDoc\
Spring3_Proj_2020_06_26.xlsx

●Spring 研修
E:\デスクトップ__2019_11_07_DOC\MyDoc
Spring_MVC_研修_2021_0326.xlsx

http://localhost:8080/mvcproj/

https://www.hitachi-ac.co.jp/app-pdf/OJJ014.pdf


●Spring Boot で、データアクセス
file:///E:\デスクトップ__2019_11_07_DOC\MyDoc\Spring Boot.xlsx

●eclipse202012.exe
暗号 QRコードサンプルあり

●eclipse_openJdk11.exe
暗号

参考)
https://qiita.com/rubytomato@github/items/1d48ef0368e7297a1c5c

https://terasolunaorg.github.io/guideline/5.0.2.RELEASE/ja/Overview/FirstApplication.html

https://codezine.jp/article/detail/11584?p=2

Spring3 入門
http://erikay.cho88.com/tom/spring-3java.html

src\main\resources

src\test\java
src\test\resources

●Spring MVC プロジェクト作成サンプル
https://qiita.com/rubytomato@github/items/1d48ef0368e7297a1c5c



●Spring Boot トランザクシュンの伝播属性
http://pppurple.hatenablog.com/entry/2017/08/30/232405



●AOP Advice
JoinPointで、どのメソッドが呼ばれたときのものか、メソッド名、引数を取得
@Before("execution(* findMemo(String))")
public void exMethod(Joinpoint jp){
System.out.println("Hello Before! CALL メソッド");
// 呼び出されたメソッド
Signature sig=jp.getSignature();
System.out.println("メソッド名は:" + sig.getName());
// 引数を取得
Object[] arryObj=jp.getArgs();
System.out.println("引数は:" + arryObj[0]);
}

●金銭をプログラムで扱う場合、計算誤差に対応するため、BigDecimal型を使用したり
Moneyクラスを自作して使用したりすべき



●top.xhtml
 DateTimeFormatter dtf = DateTimeFormatter.ISO_LOCAL_DATE; // yyyy-MM-dd 形式



//------------ Spring 参考 メモ -----------------------
Spring関係) E:\デスクトップ__2019_11_07_DOC\MyDoc\

Spring_復習_20201011.txt

SpringMvcSample.xlsx

●Spring3 Struts2
Spring3_Proj_2020_06_26.xlsx

●Spring BootでDBアクセス
Spring Boot.xlsx
17:39 | 投票する | 投票数(0) | コメント(0)
2021/10/28

SSL JSSE 参考

固定リンク | by:aramaki
抜粋)

MyX509KeyManager(File keyStore, char[] password) throws Exception {
// create a "default" JSSE X509KeyManager.

KeyStore ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream(keyStore), password);

KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509", "SunJSSE");
kmf.init(ks, password);

KeyManager kms[] = kmf.getKeyManagers();

/*
* Iterate over the returned keymanagers, look
* for an instance of X509KeyManager.  If found,
* use that as our "default" key manager.
*/
for (int i = 0; i < kms.length; i++) {
if (kms[i] instanceof X509KeyManager) {
  pkixKeyManager = (X509KeyManager) kms[i];
  return;
}
}

/*
* Find some other way to initialize, or else we have to fail the
* constructor.
*/
throw new Exception("Couldn't initialize");
}
23:47 | 投票する | 投票数(0) | コメント(0)
2021/10/17

jar コマンドサンプル

固定リンク | by:aramaki
jar コマンドサンプル
-------------------------------------
java -cp "./dependency/*;./resources;JarTest.jar" jartest.Main
19:29 | 投票する | 投票数(0) | コメント(0)
2021/07/28

ファイルをbyte値に変換

固定リンク | by:aramaki
ファイルをbyte値に変換
public static byte[] getFile(String fileName) throws IOException{

// ファイルシステム(デフォルト)の取得
FileSystem fileSystem=FileSystems.getDefault();
Path path=fileSystem.getPath(fileName);

System.out.println("path="+path);

// ファイルをbyte[]に変換
byte[] bytes=Files.readAllBytes(path);
return bytes;

}
23:23 | 投票する | 投票数(0) | コメント(0)
123456

リンクリスト

学習参考サイトへのリンク

2進数で情報を扱うコンピュータ

2進数で情報を扱うコンピュータ

  コンピュータの情報は、すべて2進数で表現されます。すべての数値を0と1で処理するための表現方法が2進数です。プログラムの数値や、文字列はもちろんのこと、画像や音声、動画などのあらゆる情報を2進数で表現します。2進数を用いることにより、コンピュータの内部では、電圧の高低だけで様々な情報を表現します。   コンピュータの扱う情報の最小単位である「ビット(bit)はbinary digit の略であり、2進数1桁分を表します。   コンピュータでは、2進数の情報(2進数4桁分をまとめた16進数)でしか情報や命令を認識できない機械なのです。これからはじめるプログラミングをする上で、このことは、しっかり意識しておかないと、思わぬ落とし穴にはまるかもしれません。

2進数での情報表示と10進数への変換

  2進数での数値表現について、ある程度、プログラマーは知っておく必要があります。プログラミングにおいて、必ずしも毎回、2進数を意識しなければならないことはありませんが、それを意識していないと、思わぬ不具合を生じてしまう場合があります。   2進数についての数値表現の方法や、10進数への変換等の説明をしたこちらのサイトをご覧になり、確認してください。


スタディーノート(お知らせ版)

【CPUとメモリーの関係】

「ノイマン型コンピュータ」をご存知でしょうか?実は、現在のコンピュータのほとんどが、このノイマン型を採用しています。ノイマン型コンピュータは、プログラムを記憶装置(ディスクやメイン・メモリー)に格納し、これを順番にCPU(中央演算処理装置)が読みコンで実行するコンピュータのことです。「ストアド・プログラム方式」(プログラム内蔵方式)とも呼ばれています。
  ノイマン型以前のコンピュータは、真空管の配列や配線などを変更することで、特定の計算処理を実行できました。異なる計算処理を行うごとに配線をやり直す必要があったため、汎用性に乏しいをいう欠点がありました。
  ノイマン型コンピュータの登場により、プログラムを自在に変化させることで、配線の変更などの面倒な手間なしに様々な計算処理が可能となりました。プログラミングという作業が誕生した瞬間といっても過言ではありません。
  ノイマン型コンピュータの中核になるメイン・メモリー(以下メモリー)は、CPUが働くための場所を一時的に与えてくれます。「0」か「1」かという情報を大量に保持できる半導体が一般に使われます。
  基本的には、1バイトを読み書きの単位として、1バイトごとにアドレス(番地)と呼ぶ番地が振り分けられています。
  メモリー内の情報は、書き換えたり、電源を切ったりしない限り、保存されます。
  一方CPUは、メモリー内の情報を使って様々な計算処理を実行し、結果を出力します。今日のCPUの中身は、きわめて複雑ですが、その基本的な役割は、ノイマン型コンピュータ登場当時から変わっていません。
  CPUが動作するときの流れは、①命令をメモリーから読み取る、②読み取った命令を解釈する、③解釈した動作を実行する、④処理結果をメモリーに書き出す、というステップを繰返します。
  CPUとメモリーは、様々な信号線で接続されています。たとえば、アドレス・バス(CPU とメモリー間で、読み書きしたいメモリーのアドレスをやり取りするための信号線です)やデータ・バス(CPUとメモリとの間で、データそのものをやり取りするための信号線です)、読み書きのタイミングなどを制御する信号線などです。CPUが読み書きしたいメモリーのアドレスをアドレス・バスに出力し、制御用の信号線を使って読み取り/書き出しを支持することで、データ・バスを通じてデータをやり取りしながら、プログラムを実行します。
(日経ソフトウェア2010年6月号より抜粋)


Copyright © Java活用生活 All Rights Reserved .