SSブログ
前の30件 | -

[雑記]ドローン(DJI Mini 3) [雑記]

(1)雑記
もともと多趣味の友人masakazu Drone氏が、
最近、ドローンにハマり始めて、
更に、新たな趣味が増えたとのこと。

ドローンを始めてから、
まだ1年も経っていないとのことですが、
旅行先で山や川の景色を空撮して、Youtubeに公開できるほどの腕前です。
あまりに素晴らしい出来栄えなので、当ブログで紹介します。
masakazu Drone氏には許可済
Youtubeにはmasakazu Drone氏の名前で公開。

ちなみに、空撮に使用しているドローンは、
以下の通り。初心者にもオススメ
機種:DJI Mini 3(2022年12月発売)
 趣味・プライベート用で最高のドローン
 ①携帯性が良い。重量249g未満
 ②スタミナ性が良い。
  通常バッテリーで38分、
  インテリジェントフライトバッテリーで51分
  の飛行可能
 ③4K画像が撮れる。解像度4K/30fps
 ④縦型動画で撮影可能。


ドローンで空撮したらこんな感じ bymasakazu Drone
荘川の桜
 https://www.youtube.com/watch?v=RSk4vhhttMg&t=65s
浜松市遠州海岸
 https://www.youtube.com/watch?v=We8sXDrs2GI&t=21s
2024 開田高原
 https://www.youtube.com/watch?v=5-6nW4GtwFg
2024 奥飛騨栃尾温泉 蒲田川
 https://www.youtube.com/watch?v=Vzi8UEucNBE
ドローンと猫と吾輩
 https://www.youtube.com/watch?v=6tGYjTVzvr0
岐阜県恵那市(保古の湖)
 https://www.youtube.com/watch?v=wj1MBC4QSmA
岐阜県中津川市(愛林公園)
 https://www.youtube.com/watch?v=2iZ6d8llgBQ&t=10s
岐阜県中津川市(根の上高原)
 https://www.youtube.com/watch?v=s8k30qu_qDs
せせらぎ街道 大倉滝
 https://www.youtube.com/watch?v=UYzhKzPjBTc&t=4s
せせせらぎ街道 平滝
 https://www.youtube.com/watch?v=KVrUSdfl9Lk&t=22s


(2)空撮に使ったドローンについて
上記のドローンのリンクです。
これから始めてみたい方など、ご参考にでもなればと思います。





















nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

[JavaSctipt]オブジェクト指向の実装(クラスの継承) [Programming JavaScript]

[はじめに]
JavaScriptの規格は、
ECMAScript(エクマスクリプト)で定められています。

JavaScriptは時代と共に進化しており、
最近のブラウザの大半は、
ECMAScriptのバージョンとして、ES6(ES2015)以降を取り入れています。

ES6(ES2015)は、
クラスなど、オブジェクト指向の概念を取り込んでおり、
最近のソースでもクラスの記載が散見されます。
もちろん、クラスの継承も可能です。

備忘録として、
クラスの継承についてのサンプルソースを掲載します。
以下は、
親クラス「Mammalクラス(哺乳類)」
子クラス「Dogクラス(犬)」「Catクラス(猫)」とした実装例です。
実行結果_オブジェクト指向の継承_クラス図.png

//【クラス定義(Mammal.js)】
class Mammal{

   //変数宣言(Private)
   //※変数名の先頭に「_」を付加することでPrivate指定になります。
   //名前
   #_name = "";

   //コンストラクタ
   constructor(name){
      this.#_name = name;
   }

   //名前
   get name(){
      return this.#_name;
   }

}
[JavaScript]親クラス(Mammal.js)



//【クラス定義(Dog.js)】
//  Mammalクラスを継承
class Dog extends Mammal{

   //コンストラクタ
   constructor(name){
      //注意:
      //親クラスを継承する際、コンストラクタを定義する場合は、
      //必ずsuper(親クラスのコンストラクタ)を呼び出してください。
      //但し、superを呼び出す前に'this' にアクセスすると、
      //エラーになりますのでご注意ください。
      super(name);
   }

   //挨拶をする。
   sayHello(name){
      window.alert(
         "こんにちは。私の名前は" + this.name + "です。");
   }

   //鳴く
   cry(){
      window.alert("ワンワン");
   }

}
[JavaScript]子クラス(Dog.js)


//【クラス定義(Cat.js)】
//  Mammalクラスを継承
class Cat extends Mammal{

   //コンストラクタ
   constructor(name){
      //注意:
      //親クラスを継承する際、コンストラクタを定義する場合は、
      //必ずsuper(親クラスのコンストラクタ)を呼び出してください。
      //但し、superを呼び出す前に'this' にアクセスすると、
      //エラーになりますのでご注意ください。
      super(name);
   }

   //挨拶をする。
   sayHello(name){
      window.alert(
         "こんにちは。私の名前は" + this.name + "です。");
   }

   //鳴く
   cry(){
      window.alert("にゃーにゃー");
   }

}
[JavaScript]子クラス(Cat.js)


<html>
<head>

<script language="javascript" src="./Mammal.js"></script>
<script language="javascript" src="./Dog.js"></script>
<script language="javascript" src="./Cat.js"></script>
<script language="javascript" >

   function dog_access()
   {
      const mammal = new Dog("ポチ");
      mammal.cry();
      mammal.sayHello();
   }

   function cat_access()
   {
      const mammal = new Cat("タマ");
      mammal.cry();
      mammal.sayHello();
   }


</script>
</head>
<body bgcolor="azure">

<input type="button" value="Dogクラスにアクセス" onclick="dog_access();"><br/>
<input type="button" value="Catクラスにアクセス" onclick="cat_access();"><br/>

</body>
</html>
[JavaScript]利用例

[実行結果]
実行結果_オブジェクト指向の継承.png
nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[JavaSctipt]オブジェクト指向の実装 [Programming JavaScript]

[はじめに]
JavaScriptの規格は、
ECMAScript(エクマスクリプト)で定められています。

JavaScriptは時代と共に進化しており、
最近のブラウザの大半は、
ECMAScriptのバージョンとして、ES6(ES2015)以降を取り入れています。

ES6(ES2015)は、
クラスなど、オブジェクト指向の概念を取り込んでおり、
最近のソースでもクラスの記載が散見されます。

たまに使うこともあるので、備忘録として、
クラスを用いたサンプルソースを掲載します。
//【クラス定義(Person.js)】
class Person{

   //【プロパティの初期化】 ※Start
   // ※ES6(ES2015)までは、
   //   プロパティを設定する場合は、
   //   必ずコンストラクタ内で実施する必要がありました。
   //   ES2022から、
   //   クラスのトップレベルで
   //   プロパティを宣言できるようになりました。
   //   また、プロパティ名の先頭に「#」を付加することで、
   //   Private指定となります。(ES2022から)
   //   [注意]
   //     但し、ES2022以降のバージョンは、
   //     古いブラウザでは
   //     機能が実装されていない可能性がある為、注意が必要です。

   //名前
   #_name = {first:"権兵衛", last:"名無し"};
   //生年月日
   #_birthday = this.#getSystemDate();

   //【プロパティの初期化】 ※End

   //【コンストラクタ定義】 ※Start
   // ※インスタンス化の際に実行されるメソッド。

   constructor(name, birthday){
      this.#_name = name;
      this.#_birthday = birthday;
   }

   //【コンストラクタ定義】 ※End

   //【ゲッター/セッター定義】 ※Start
   // ※ES6(ES2015)までは、
   //   ゲッター/セッターを実装するには、
   //   Javaのようにメソッド(getXXX() / setXXX())で
   //   定義する必要がありましたが、
   //   ES2022から、
   //   ゲッター/セッター向けの構文を利用できるようになりました。
   //   [注意]
   //     但し、ES2022以降のバージョンは、
   //     古いブラウザでは
   //     機能が実装されていない可能性がある為、注意が必要です。

   //名前
   get fullName(){
      return this.#_name.first + " " + this.#_name.last;
   }

   //生年月日
   get birthday(){
      return this.#_birthday;
   }

   //生年月日
   set birthday(value){
      this.#_birthday = value;
   }

   //【ゲッター/セッター定義】 ※End


   //【メソッド定義(Public)】 ※Start
   // ※他の関数と同様に定義することで、
   //   Publicなメソッドを定義できます。

   //あいさつをする。
   sayHello(){
      window.alert(
         "こんにちは。" + 
         this.#_name.first + " " + 
         this.#_name.last + "です。");
   }

   //生年月日を出力する。
   sayBirthDay(){
      window.alert(this.#_birthday);
   }

   //年齢を出力する。
   sayAge(){
      let age = this.#calculateAge();
      window.alert("私は" + age + "歳です。");
   }

   //【メソッド定義(Public)】 ※End

   //【メソッド定義(Private)】 ※Start
   //※メソッド名の先頭に「#」を付加することで、
   //  アクセス元を自クラス内に限定(Private)することができます。
   //   [注意]
   //     但し、ES2022以降のバージョンは、
   //     古いブラウザでは
   //     機能が実装されていない可能性がある為、注意が必要です。

   //システム日付を取得する。
   #getSystemDate(){
      const rtn = new Date();
      return rtn;
   }

   //年齢を算出する。
   #calculateAge(){
      let sysDate = this.#getSystemDate();
      let age = sysDate.getFullYear() - this.#_birthday.getFullYear();

      if(sysDate.getMonth() * 100 + sysDate.getDate() < 
         this.#_birthday.getMonth() * 100 + this.#_birthday.getDate())
      {
         //システム日付が誕生日前の場合は、
         //年齢を [システム日付の年] - [生年月日の年] - 1 とする。
         return age - 1;
      }

      //システム日付が誕生日以降の場合は、
      //年齢を [システム日付の年] - [生年月日の年] とする。
      return age;
   }

   //【メソッド定義(Private)】 ※End
}
[JavaScript]オブジェクト指向を意識したコード


<html>
<head>

<script language="javascript" src="./Person.js"></script>
<script language="javascript" >
   //クラスへのアクセス
   function sayHello()
   {
      const person = new Person(
         {first:"太郎", last:"山田"},
         new Date(1953,8-1,15));
      person.sayHello();
   }

   function sayBirthDay()
   {
      const person = new Person(
         {first:"太郎", last:"山田"},
         new Date(1953,8-1,15));
      person.sayBirthDay();
   }

   function sayAge()
   {
      const person = new Person(
         {first:"太郎", last:"山田"},
         new Date(1953,8-1,15));
      person.sayAge();
   }
</script>
</head>
<body bgcolor="azure">

<input type="button" value="あいさつをする。" onclick="sayHello();"><br/>
<input type="button" value="生年月日を言う。" onclick="sayBirthDay();"><br/>
<input type="button" value="年齢を言う。" onclick="sayAge();"><br/>

</body>
</html>
[JavaScript]使用例

[実行結果]
JavaScript実行結果.PNG

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[Review]Java言語で学ぶデザインパターン入門第3版 [Book's Review (Develop)]

(1)レビュー
 10年以上前からある書籍ですが、昨今のJavaのバージョンに合わせて、
 リニューアルされましたので、改めて紹介いたします。 

 GOFが提唱したデザインパターンについて、とてもわかりやすくまとめた1冊です。
 各パターンを章毎にまとめてあり、クラス図・サンプルコードと合わせて解説しています。
 コードはJavaで記述されていますが、
 オブジェクト指向言語での開発経験がある方ならば、楽に読みこなせる内容だと思います。
 .NET系の言語で開発される方も、ぜひ1度は目を通すことをお勧めします!!

(2)リンク
Java言語で学ぶデザインパターン入門第3版

Java言語で学ぶデザインパターン入門第3版

  • 作者: 結城 浩
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2021/11/13
  • メディア: Kindle版


Java言語で学ぶデザインパターン入門 マルチスレッド編

Java言語で学ぶデザインパターン入門 マルチスレッド編

  • 作者: 結城 浩
  • 出版社/メーカー: ソフトバンククリエイティブ
  • 発売日: 2023/10/14
  • メディア: 単行本


nice!(0)  コメント(0) 

リンク_メモ(セールスフォース学習サイト、Salesforce勉強ヒロバ) [メモ]

【Salesforce勉強ヒロバ】
【オブジェクト・レコード・項目・レポート】Salesforce基本用語徹底解説【初心者向け】
https://www.youtube.com/watch?v=OuyAEmlehtU&t=162s

【標準項目、ページレイアウト、Lightnigアプリケーションビルダー】Salesforce基本用語徹底解説【初心者向け】
https://www.youtube.com/watch?v=cPjP4i1iVIE&t=257s

【標準オブジェクト、カスタムオブジェクト、リレーション】Salesforce基本用語徹底解説【初心者向け】
https://www.youtube.com/watch?v=uNY3KWWVaxY&t=490s

Salesforce主従関係参照関係違い徹底解説
https://www.youtube.com/watch?v=cvMkX-L01b0

【レコードタイプ、ページレイアウト、ビジネスプロセス】Salesforce基本用語徹底解説【初心者向け】
https://www.youtube.com/watch?v=wxHHk0-xw2g

【プロファイル・権限セット】Salesforce基本用語徹底解説【初心者向け】
https://www.youtube.com/watch?v=5orZte7tJzM

【共有設定・ロール階層・共有ルール】Salesforce基本用語徹底解説【初心者向け】
https://www.youtube.com/watch?v=yL6OWYYbY6w&t=2151s

【セキュリティコントロール】Salesforce基本用語徹底解説【初心者向け・練習問題】
https://www.youtube.com/watch?v=6XFkEzuGARE

Salesforceリード徹底解説【公式練習問題あり】
https://www.youtube.com/watch?v=viOnflTa3FQ

Salesforceキャンペーン徹底解
https://www.youtube.com/watch?v=RMe4LCyY7GQ&t=27s

【入力規則】Salesforce基本用語徹底解説【初心者向け】
https://www.youtube.com/watch?v=0Va7o9UUoE4

Salesforceデータローダとインポートウィザード解説
https://www.youtube.com/watch?v=ckdIF6usirA

【フロー、プロセスビルダー、ワークフロールール】Salesforce基本用語徹底解説【初心者向け】
https://www.youtube.com/watch?v=Nj9PVv_m_8o

Salesforce認定アドミニストレーター試験合格勉強方法解説
https://www.youtube.com/watch?v=14m8fLHLTw8&list=PLz8HSF-SrLeEl7BSmyLcT0nWUuQ695d9z&index=15

Salesforceレコードページに文字や画像表示【初心者向け】
https://www.youtube.com/watch?v=N-LL1kW767w

【初心者向け】Salesforce一括メール送信方法
https://www.youtube.com/watch?v=L-KiIFts-nY

https://www.youtube.com/watch?v=cPjP4i1iVIE&t=257s
【標準項目、ページレイアウト、Lightnigアプリケーションビルダー】Salesforce基本用語徹底解説【初心者向け】

■Salesforce認定アドミニストレーター試験公式練習問題解説【合格】
01Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=1z_jjNf6JCE&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=1

02Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=eE5esrjoadU&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=2

03Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=F35kX_hjcM8&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=3

04Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=4OzzVqmGeqo&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=4

05Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=LrkGLvQeqRE&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=5

06Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=DUgB5GVp4Wk&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=6

07Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=jfjLizp8dEE&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=7

08Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=YEPyrTs1alg&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=8

09Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=rHBHjpEjIH8&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=9

10Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=M8eB4IXUxi0&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=10

11Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=hWPNzGyv4RI&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=11

12Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=ospmi4mC8v8&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=12

13Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=MqwqReYCCv0&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=13

14Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=cSeUI8TGciM&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=14

15Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=g1Fw9F0t3CA&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=15

16Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=6lWDVr-D9EY&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=16

17Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=plzqeWameqw&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=17

18Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=p9upfJBmssI&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=18

19Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=gMBC6yCVX_8&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=19

20Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=i7YY4VeA0g8&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=20

21Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=fkwGltvBHV0&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=21

22Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=If9JP5yEM3E&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=22

23Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=6JOWYdv6ElA&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=23

24Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=oqO7ft6Oh5E&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=24

25Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=afdeRD125KU&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=25

26Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=gq6XKyCMIhY&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=26

27Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=PsK8pHVCQkE&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=27

28Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=CiyH4Ojg0Mc&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=28

29Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=zHKiZIe3ZIA&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=29

30Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=LrQIJovTp6o&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=30

31Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=rHy4GYEQy6k&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=31

32Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=6FxVu5zzvfY&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=32

33Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=79KxSeRgaWQ&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=33

34Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=PzGXHe7Bf58&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=34

35Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=aaHHBl3sQwQ&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=35

36Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=zWjzA0Pq0PM&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=36

37Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=P1MhwvJDHUs&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=37

38Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=coyBk_nc1_E&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=38

39Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=PPBaxsnHxGo&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=39

40Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=mjC-U_gdu18&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=40

41Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=XjLLUZJpz3Y&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=41

42Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=vyypCeCrX-M&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=42

43Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=bsXKhgHTDZs&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=43

44Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=nbiFH9EuYno&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=44

45Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=ZGoE4nPAC8I&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=45

46Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=9XwZZHHnVDc&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=46

47Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=PdBVJHU0Kak&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=47

48Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=BfpJsEAaFCM&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=48

49Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=qL3YlETH74Q&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=49

50Salesforce認定アドミニストレーター試験問題解説
https://www.youtube.com/watch?v=07rnYr-xbuw&list=PLz8HSF-SrLeH8jCOj9cfAljXfVNQkQlkS&index=50


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[VBA]Excelのシートを並べ替え [Programming ExcelVBA]

[はじめに]
Excelでシートを昇順に並べ替える機会があったので、
備忘録としてサンプルソースを掲載します。
サンプルは昇順ソートですが、引数を変更すると降順にも対応できるようにしています。

[ソース]
Option Explicit

'''<summary>
'''ソートの向き
'''</summary>
'''<remarks></remarks>
Public Enum SortType
    '昇順
    Asc = 1
    '降順
    Desc = -1
End Enum

'''<summary>
'''シートをソートする。
'''</summary>
'''<remarks></remarks>
Public Sub SortSheet()

    Dim sht As Worksheet
    Dim i As Integer
    Dim shtName As Variant
    Dim shtNameList() As String
    
    'シート名を配列で取得する。
    For Each sht In ThisWorkbook.Worksheets
        ReDim Preserve shtNameList(i)
        shtNameList(i) = sht.Name
        i = i + 1
    Next

    '配列でソートする。
    SortByQuick shtNameList, SortType.Asc, 0, UBound(shtNameList)

    '配列の順番でシートをソートする。
    Dim strWork As String
    strWork = shtNameList(UBound(shtNameList))
    
    For i = 0 To UBound(shtNameList)
        ThisWorkbook.Sheets(shtNameList(i)).Move after:=ThisWorkbook.Sheets(strWork)
        strWork = shtNameList(i)
    Next

End Sub

'''<summary>
'''Stringの配列を名称の昇順にソートする。
'''</summary>
'''<param name="argAry">ソート対象の配列</param>
'''<param name="sort">ソートの向き ※省略時:Asc(昇順)</param>
'''<param name="lngMin">対象範囲の最小インデックス ※省略時:argAryの最小インデックス</param>
'''<param name="lngMax">対象範囲の最大インデックス ※省略時:argAryの最大インデックス</param>
'''<remarks></remarks>
Private Sub SortByQuick( _
        ByRef argAry() As String, _
        Optional ByVal sort As SortType = SortType.Asc, _
        Optional ByVal lngMin As Long = -1, _
        Optional ByVal lngMax As Long = -1)
    
    Dim i As Long
    Dim j As Long
    Dim vBase As String
    Dim vSwap As String
    
    If lngMin < 0 Then
        lngMin = LBound(argAry)
    End If
    
    If lngMax < 0 Then
        lngMax = UBound(argAry)
    End If
    
    vBase = argAry((lngMin + lngMax) \ 2)
    
    i = lngMin
    j = lngMax
    
    Do
        Do While StrComp(argAry(i), vBase) * sort < 0
            i = i + 1
        Loop
        
        Do While StrComp(argAry(j), vBase) * sort > 0
            j = j - 1
        Loop
        
        If i >= j Then
            Exit Do
        End If
        
        vSwap = argAry(i)
        argAry(i) = argAry(j)
        argAry(j) = vSwap
        
        i = i + 1
        j = j - 1
    Loop
    
    If lngMin < i - 1 Then
        SortByQuick argAry, sort, lngMin, i - 1
    End If
    
    If lngMax > j + 1 Then
        SortByQuick argAry, sort, j + 1, lngMax
    End If

End Sub

[VBA]シートの並べ替え

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

リンク_メモ(セールスフォース学習サイト) [メモ]

【認定アドミニストレータ対策コース(1) (日本語)】
・Salesforce ユーザの基本
  https://trailhead.salesforce.com/ja/content/learn/modules/lex_salesforce_basics
  Salesforce へようこそ https://trailhead.salesforce.com/ja/content/learn/modules/lex_salesforce_basics/lex_salesforce_basics_welcome
  Salesforce の使用開始
https://trailhead.salesforce.com/ja/content/learn/modules/lex_salesforce_basics/lex_salesforce_basics_getting_started
  Salesforce システム管理者との連携   https://trailhead.salesforce.com/ja/content/learn/modules/lex_salesforce_basics/lex_salesforce_basics_your_admin

・Salesforce Platform の基礎
  https://trailhead.salesforce.com/ja/content/learn/modules/starting_force_com
  Salesforce Platform の使用開始
   https://trailhead.salesforce.com/ja/content/learn/modules/starting_force_com/starting_intro
  プラットフォームの使用事例の確認
   https://trailhead.salesforce.com/ja/content/learn/modules/starting_force_com/starting_discovering
  Salesforce アーキテクチャについてhttps://trailhead.salesforce.com/ja/content/learn/modules/starting_force_com/starting_understanding_arch
  [設定] の操作
   https://trailhead.salesforce.com/ja/content/learn/modules/starting_force_com/starting_tour
  AppExchange による強化https://trailhead.salesforce.com/ja/content/learn/modules/starting_force_com/starting_developer_console

・会社全体の組織設定
  https://trailhead.salesforce.com/ja/content/learn/modules/company_wide_org_settings
  地域設定の概要
   https://trailhead.salesforce.com/ja/content/learn/modules/company_wide_org_settings/org_settings_regional
  マルチ通貨設定の概要
   https://trailhead.salesforce.com/ja/content/learn/modules/company_wide_org_settings/org_settings_currency

・ユーザ管理
  https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_user_setup_mgmt
  新規ユーザの追加
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_user_setup_mgmt/lex_implementation_user_setup_mgmt_adding_users
  ユーザがアクセスできる情報の管理
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_user_setup_mgmt/lex_implementation_user_setup_mgmt_configure_user_access

【認定アドミニストレータ対策コース(2) (日本語)】
・データセキュリティ
  https://trailhead.salesforce.com/ja/content/learn/modules/data_security
  データセキュリティの概要
   https://trailhead.salesforce.com/ja/content/learn/modules/data_security/data_security_overview
  組織へのアクセスの制御
   https://trailhead.salesforce.com/ja/content/learn/modules/data_security/data_security_org
  オブジェクトへのアクセスの制御
   https://trailhead.salesforce.com/ja/content/learn/modules/data_security/data_security_objects
  項目へのアクセスの制御
   https://trailhead.salesforce.com/ja/content/learn/modules/data_security/data_security_fields
  レコードへのアクセスの制御
   https://trailhead.salesforce.com/ja/content/learn/modules/data_security/data_security_records
  ロール階層の作成
   https://trailhead.salesforce.com/ja/content/learn/modules/data_security/data_security_roles
  共有ルールの定義
   https://trailhead.salesforce.com/ja/content/learn/modules/data_security/data_security_sharing_rules

・データモデリング
  https://trailhead.salesforce.com/ja/content/learn/modules/data_modeling
  カスタムオブジェクトと標準オブジェクトについて
   https://trailhead.salesforce.com/ja/content/learn/modules/data_modeling/objects_intro
  オブジェクトリレーションを作成する
   https://trailhead.salesforce.com/ja/content/learn/modules/data_modeling/object_relationships
  スキーマビルダーを使う
   https://trailhead.salesforce.com/ja/content/learn/modules/data_modeling/schema_builder

・Lightning Experience のカスタマイズ
  https://trailhead.salesforce.com/ja/content/learn/modules/lex_customization
  組織の設定
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_customization/lex_customization_custom_objects
  Lightning アプリケーションの作成およびカスタマイズ
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_customization/lex_customization_apps
  リストビューの作成およびカスタマイズ
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_customization/lex_customization_list
  コンパクトレイアウトを使用したレコードの強調表示のカスタマイズ
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_customization/lex_customization_compact_layouts
  ページレイアウトを使用したレコードの詳細のカスタマイズ
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_customization/lex_customization_page_layouts
  カスタムボタンとカスタムリンクの作成
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_customization/lex_customization_buttons_links
  クイックアクションによるユーザ操作の強化
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_customization/lex_customization_actions

・【認定アドミニストレータ対策コース(3) (日本語)】
 Lightning Experience の取引先と取引先責任者
  https://trailhead.salesforce.com/ja/content/learn/modules/accounts_contacts_lightning_experience
  顧客に関する情報を保存する
   https://trailhead.salesforce.com/ja/content/learn/modules/accounts_contacts_lightning_experience/accounts-and-contacts-lightning
  取引先と取引先責任者のリレーションの説明
   https://trailhead.salesforce.com/ja/content/learn/modules/accounts_contacts_lightning_experience/understand-account-and-contact-relationships-lightning

・商品、見積、契約
  https://trailhead.salesforce.com/ja/content/learn/modules/sales_admin_products_quotes_contracts
  価格表を作成して商品を追跡する
   https://trailhead.salesforce.com/ja/content/learn/modules/sales_admin_products_quotes_contracts/sales_admin_products_quotes_contracts_unit_1
  顧客見積の設定と契約の追跡を行う
   https://trailhead.salesforce.com/ja/content/learn/modules/sales_admin_products_quotes_contracts/sales_admin_products_quotes_contracts_unit_2

・Lightning Experience の Service Cloud
  https://trailhead.salesforce.com/ja/content/learn/modules/service_lex
  カスタマーサービスジャーニーの開始
   https://trailhead.salesforce.com/ja/content/learn/modules/service_lex/service_lex_cloud
  Service Cloud の管理
   https://trailhead.salesforce.com/ja/content/learn/modules/service_lex/service_lex_connect
  ケース管理の自動化
   https://trailhead.salesforce.com/ja/content/learn/modules/service_lex/service_lex_case_manage
  複数のチャネルでのデジタルエンゲージメントの作成
   https://trailhead.salesforce.com/ja/content/learn/modules/service_lex/service_lex_channels

・Lightning Experience のナレッジの基本
  https://trailhead.salesforce.com/ja/content/learn/modules/lightning-knowledge-basics
  Lightning Knowledge の使用開始
   https://trailhead.salesforce.com/ja/content/learn/modules/lightning-knowledge-basics/get-started-with-lightning-knowledge
  Salesforce 知識ベースを準備する
   https://trailhead.salesforce.com/ja/content/learn/modules/lightning-knowledge-basics/prepare-the-kb-for-success
  簡単な知識ベースの設定
   https://trailhead.salesforce.com/ja/content/learn/modules/lightning-knowledge-basics/set-up-a-simple-knowledge-base

・Experience Cloud の基本
  https://trailhead.salesforce.com/ja/content/learn/modules/community_cloud_basics
  Experience Cloud の使用開始
   https://trailhead.salesforce.com/ja/content/learn/modules/community_cloud_basics/communities_intro_to_community_cloud
  顧客との交流
   https://trailhead.salesforce.com/ja/content/learn/modules/community_cloud_basics/communities_setting_goals_for_community
  パートナーと協力する
   https://trailhead.salesforce.com/ja/content/learn/modules/community_cloud_basics/communities_partner_community

【認定アドミニストレータ対策コース(4) (日本語)】
・Lightning Experience の Chatter の管理
  https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_chatter
  Chatter の使用開始
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_chatter/lex_implementation_chatter_intro
  Chatter グループとのコラボレーション
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_chatter/lex_implementation_chatter_groups
  フィード追跡の有効化
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_chatter/lex_implementation_chatter_feed_tracking
  Chatter フィードからのレコードの承認
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_chatter/lex_implementation_chatter_approvals
  ロールアウト計画の策定
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_chatter/lex_implementation_chatter_adoption

・データ品質
  https://trailhead.salesforce.com/ja/content/learn/modules/data_quality
  データ品質の使用開始
   https://trailhead.salesforce.com/ja/content/learn/modules/data_quality/data_quality_getting_started
  データ品質の評価
   https://trailhead.salesforce.com/ja/content/learn/modules/data_quality/data_quality_assess_your_data
  データ品質の向上
   https://trailhead.salesforce.com/ja/content/learn/modules/data_quality/data_quality_improve_quality

・データ管理
  https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_data_management
  データのインポート
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_data_management/lex_implementation_data_import
  データのエクスポート
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_data_management/lex_implementation_data_export

・データ管理ツールを使用したインポートとエクスポート
  https://trailhead.salesforce.com/ja/content/learn/projects/import-and-export-with-data-management-tools
  データインポートウィザードの使用
   https://trailhead.salesforce.com/ja/content/learn/projects/import-and-export-with-data-management-tools/use-the-data-import-wizard
  dataloader.io を使用したデータのエクスポート
   https://trailhead.salesforce.com/ja/content/learn/projects/import-and-export-with-data-management-tools/use-data-loader-to-export-data
  dataloader.io を使用したデータの更新
   https://trailhead.salesforce.com/ja/content/learn/projects/import-and-export-with-data-management-tools/use-data-loader-to-import-data

【認定アドミニストレータ対策コース(5) (日本語)】
・Lightning Experience のレポートおよびダッシュボード
  https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_reports_dashboards
  Lightning Experience のレポートおよびダッシュボードの概要
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_reports_dashboards/lex_implementation_reports_dashboards_overview
  レポートビルダーを使用したレポートの作成
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_reports_dashboards/lex_implementation_reports_dashboards_using_report_builder
  レポートの形式設定
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_reports_dashboards/lex_implementation_reports_dashboards_report_formats
  Lightning ダッシュボードビルダーでのデータの視覚化
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_reports_dashboards/lex_implementation_reports_dashboards_visualizing_data
  AppExchange を使用したレポート戦略の拡張
   https://trailhead.salesforce.com/ja/content/learn/modules/lex_implementation_reports_dashboards/lex_implementation_reports_dashboards_appexchange

・営業マネージャとマーケティングマネージャ用のレポートとダッシュボードの作成
  https://trailhead.salesforce.com/ja/content/learn/projects/create-reports-and-dashboards-for-sales-and-marketing-managers?assignmentId=a5c3m000001C8MgAAK
  レポートフォルダとダッシュボードフォルダの作成
   https://trailhead.salesforce.com/ja/content/learn/projects/create-reports-and-dashboards-for-sales-and-marketing-managers/run-and-modify-a-report
  簡単なカスタムレポートの作成
   https://trailhead.salesforce.com/ja/content/learn/projects/create-reports-and-dashboards-for-sales-and-marketing-managers/create-a-simple-custom-report
  レポートの絞り込み
   https://trailhead.salesforce.com/ja/content/learn/projects/create-reports-and-dashboards-for-sales-and-marketing-managers/filter-your-reports
  データのグループ化と分類
   https://trailhead.salesforce.com/ja/content/learn/projects/create-reports-and-dashboards-for-sales-and-marketing-managers/group-and-categorize-your-data
  レポートでの集計項目の使用
   https://trailhead.salesforce.com/ja/content/learn/projects/create-reports-and-dashboards-for-sales-and-marketing-managers/use-summary-formulas-in-your-reports
  レポートデータの管理
   https://trailhead.salesforce.com/ja/content/learn/projects/create-reports-and-dashboards-for-sales-and-marketing-managers/manage-reported-data
  データの視覚化
   https://trailhead.salesforce.com/ja/content/learn/projects/create-reports-and-dashboards-for-sales-and-marketing-managers/visualize-your-data-with-conditional-highlighting-report-charts-and-dashboards

・クイックスタート: プロセスビルダー
  https://trailhead.salesforce.com/ja/content/learn/projects/quickstart-process-builder
  取引先オブジェクトに対する新しいプロセスを作成する
   https://trailhead.salesforce.com/ja/content/learn/projects/quickstart-process-builder/quickstart-process-builder1
  プロセス条件を追加する
   https://trailhead.salesforce.com/ja/content/learn/projects/quickstart-process-builder/quickstart-process-builder2
  プロセスアクションを追加する
   https://trailhead.salesforce.com/ja/content/learn/projects/quickstart-process-builder/quickstart-process-builder3
  プロセスをテストする
   https://trailhead.salesforce.com/ja/content/learn/projects/quickstart-process-builder/quickstart-process-builder4

・割引承認プロセスの作成
  https://trailhead.salesforce.com/ja/content/learn/projects/build-a-discount-approval-process
  組織での事前準備
   https://trailhead.salesforce.com/ja/content/learn/projects/build-a-discount-approval-process/prepare-your-org
  承認プロセスの作成
   https://trailhead.salesforce.com/ja/content/learn/projects/build-a-discount-approval-process/create-an-approval-process
  申請時のアクションの作成
   https://trailhead.salesforce.com/ja/content/learn/projects/build-a-discount-approval-process/create-initial-submission-actions
  最終承認時と却下時のアクションの指定
   https://trailhead.salesforce.com/ja/content/learn/projects/build-a-discount-approval-process/specify-final-approval-and-rejection-actions

【認定アドミニストレータ対策コース(6) (日本語)】
・Salesforce モバイルアプリケーションのカスタマイズ
  https://trailhead.salesforce.com/ja/content/learn/modules/salesforce1_mobile_app
  Salesforce モバイルアプリケーションの使用開始https://trailhead.salesforce.com/ja/content/learn/modules/salesforce1_mobile_app/salesforce1_mobile_app_intro
  ナビゲーションのカスタマイズhttps://trailhead.salesforce.com/ja/content/learn/modules/salesforce1_mobile_app/salesforce1_mobile_app_navigation
  グローバルクイックアクションの作成https://trailhead.salesforce.com/ja/content/learn/modules/salesforce1_mobile_app/salesforce1_mobile_app_actions_global
  オブジェクト固有のクイックアクションの作成https://trailhead.salesforce.com/ja/content/learn/modules/salesforce1_mobile_app/salesforce1_mobile_app_actions_objectspecific
  コンパクトレイアウトのカスタマイズhttps://trailhead.salesforce.com/ja/content/learn/modules/salesforce1_mobile_app/salesforce1_mobile_app_compact_layouts

・AppExchange の基本
  https://trailhead.salesforce.com/ja/content/learn/modules/appexchange_basics
  AppExchange 入門https://trailhead.salesforce.com/ja/content/learn/modules/appexchange_basics/appexchange_basics_overview
  AppExchange をナビゲートするhttps://trailhead.salesforce.com/ja/content/learn/modules/appexchange_basics/appexchange_basics_navigate
  AppExchange リストを確認するhttps://trailhead.salesforce.com/ja/content/learn/modules/appexchange_basics/appexchange_basics_listings
  AppExchange パッケージをインストールするhttps://trailhead.salesforce.com/ja/content/learn/modules/appexchange_basics/appexchange_basics_install
  AppExchange コミュニティとつながって貢献するhttps://trailhead.salesforce.com/ja/content/learn/modules/appexchange_basics/appexchange_basics_community

タグ:メモ Salesforce
nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

リンク_メモ(セールスフォース初心者講座) [メモ]

【Sales4box】
・模擬問題
 https://sales4box.com/admin_exam/

【セールスフォース初心者講座】
・Salesforce セールスフォース 認定アドミニストレーター試験対策①組織の設定
 https://www.youtube.com/watch?v=Xi9iZYkPHZg&t=761s

・Salesforce セールスフォース 認定アドミニストレーター試験対策②ユーザの設定
 https://www.youtube.com/watch?v=73FAFVBw6UE

・Salesforce セールスフォース 認定アドミニストレーター試験対策③セキュリティとアクセス
 https://www.youtube.com/watch?v=5Kz_30SLitE

・Salesforce セールスフォース 認定アドミニストレーター試験対策④標準オブジェクトとカスタムオブジェクト
 https://www.youtube.com/watch?v=wvKj1_B77OE&t=702s

・Salesforce セールスフォース 認定アドミニストレーター試験対策⑤営業アプリケーションとマーケティングアプリケーション
 https://www.youtube.com/watch?v=xl0rSerwbFU

・Salesforce セールスフォース 認定アドミニストレーター試験対策⑥サービスアプリケーションとサポートアプリケーション
 https://www.youtube.com/watch?v=AReGHRMtPz0

・Salesforce セールスフォース 認定アドミニストレーター試験対策⑦活動の管理
 https://www.youtube.com/watch?v=w3JfUXW52dI
 
・Salesforce セールスフォース 認定アドミニストレーター試験対策⑧データの管理
 https://www.youtube.com/watch?v=bNSC9kwLUag
 
・Salesforce セールスフォース 認定アドミニストレーター試験対策⑨分析 レポートとダッシュボード
 https://www.youtube.com/watch?v=UvI50068-_I&t=25s

・Salesforce セールスフォース 認定アドミニストレーター試験対策⑩ワークフロー/プロセスの自動化
 https://www.youtube.com/watch?v=BFuJNyQT1zs

・Salesforce セールスフォース 認定アドミニストレーター試験対策⑪ デスクトップとモバイルの管理
 https://www.youtube.com/watch?v=lAKnmFF3iKI

・Salesforce セールスフォース 認定アドミニストレーター試験対策⑫ APPEXCHANGE
 https://www.youtube.com/watch?v=MWhu8LeKe4Y

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[Review]独習JavaScript 新版 [Book's Review (Develop)]

(1)レビュー
 JavaScriptは古くからあり、時代と共に進化してきています。
 JavaScriptの独習シリーズは過去にもありましたが、
 最近(2021年)、独習シリーズでJavaScriptの新版が登場しました。

 クラス反復処理非同期処理など、
 サンプルプログラムを例示しながらわかりやすく解説されています。
 
 例えば、反復処理を実装するために、
 他の言語(C#、Python等)ではyieldキーワードを採用していますが、
 新版のJavaScriptでもyieldが採用されています。

 今どきの新しいJavaScriptを習得するには、
 重宝の1冊だと思います。

 試しに、当書籍を参考にしながら、
 オブジェクト指向を意識したコードを書いてみました。
 今となっては珍しいコードではないかと思いますが、
 従来のJavaScriptよりもやれることが拡がったように思えます。

 以下は、Perosnクラスに、
 NameBirthdayのプロパティを定義し、
 sayHello()saysayBirthday()sayAge()の各々のメソッドで、
 あいさつ、誕生日出力、年齢出力をするサンプルです。

<html>
<head>

<script language="javascript">
   //【テスト関数】
   function sayHello()
   {
      const person = new Person(
         {first:"太郎", last:"山田"},
         new Date(1953,8-1,15));
      person.sayHello();
   }

   function sayBirthDay()
   {
      const person = new Person(
         {first:"太郎", last:"山田"},
         new Date(1953,8-1,15));
      person.sayBirthDay();
   }

   function sayAge()
   {
      const person = new Person(
         {first:"太郎", last:"山田"},
         new Date(1953,8-1,15));
      person.sayAge();
   }

   //【クラス定義】
   class Person{
      constructor(name, birthday){
         this.name = name;
         this.birthday = birthday;
      }

      //【メソッド定義】
      //あいさつをする。
      sayHello(){
         window.alert(
            "こんにちは。" + 
            this.name.first + " " + 
            this.name.last + "です。");
      }

      //生年月日を出力する。
      sayBirthDay(){
         window.alert(this.birthday);
      }

      //年齢を出力する。
      sayAge(){
         let age = 0;
         let today = new Date();

         if(today.getMonth() * 100 + today.getDate() < 
            this.birthday.getMonth() * 100 + this.birthday.getDate())
         {
            //今日が誕生日前の場合
            age=today.getFullYear() - this.birthday.getFullYear() -1;
         }
         else
         {
            //今日が誕生日以降の場合
            age=today.getFullYear() - this.birthday.getFullYear();
         }

         window.alert("私は" + age + "歳です。");
      }

   }

</script>
</head>
<body bgcolor="azure">

<input type="button" value="あいさつをする。" onclick="sayHello();"><br/>
<input type="button" value="生年月日を言う。" onclick="sayBirthDay();"><br/>
<input type="button" value="年齢を言う。" onclick="sayAge();"><br/>

</body>
</html>
[JavaScript]オブジェクト指向を意識したコード

[実行結果]
JavaScript実行結果.PNG

(2)リンク
独習JavaScript 新版

独習JavaScript 新版

  • 作者: CodeMafia 外村将大
  • 出版社/メーカー: 翔泳社
  • 発売日: 2021/11/15
  • メディア: Kindle版

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[Review]プログラミングC# 第8版 [Book's Review (Develop)]

(1)レビュー
 C#8.0の書籍で、
 入門編レベルよりもさらに踏み込んだ技術を習得したい方にお勧め!
 レベルの高い書籍だと、文章がわかりにくかったり、
 無駄にページ数が多かったり、『~編』のようにシリーズ化しているものが多いですが、
 この書籍はわかりやすくまとめてあります。

 非同期ストリーム、インターフェイスのデフォルト実装、null 合体代入 (??=)など
 新機能もわかりやすく解説しています。

(2)リンク
プログラミングC# 第8版

プログラミングC# 第8版

  • 出版社/メーカー: オライリージャパン
  • 発売日: 2021/06/22
  • メディア: 単行本(ソフトカバー)

プログラミングC# 第7版

プログラミングC# 第7版

  • 出版社/メーカー: オライリージャパン
  • 発売日: 2013/11/29
  • メディア: 大型本

[VBA]複数のセルオブジェクトを1つのセルオブジェクトに統合する。 [Programming ExcelVBA]

[はじめに]
・あまり知られていないかもしれませんが、
 複数のセルオブジェクトを、1つのセルオブジェクトに統合することができます。
 ※Union関数を使用。

 統合後のセルに対して、
 プロパティやメソッドにアクセスすると、
 統合前のセルすべてに対して、アクセスすることと同じ意味になります。
 複数のセルオブジェクトをまとめて処理したい場合に、便利です。
 ※[注意]セルの結合ではありません。

 以下は、
 「A1」、「B2:D5」、「D3,D5」の複数のセル領域を統合して、
 「Hello」の文字列を設定する例です。
  備忘録としてサンプルソースを掲載します。

[ソース]
Private Sub UnionSample()

    Dim cellArray() As Variant
    Dim cellUnion As Range
    Dim cell As Variant
    
    '① 統合前のセルを定義
    cellArray = Array(Range("A1"), Range("B2:C5"), Range("D3:F5"))
    
    '② ①で定義したセルを
    '  1つのセルオブジェクトに統合する。
    For Each cell In cellArray
        If cellUnion Is Nothing Then
            '初回のみセルを設定
            Set cellUnion = cell
        Else
            '2回目以降は、セルを統合する。
            Set cellUnion = Union(cellUnion, cell)
        End If
    
    Next
    
    '③ 統合後のセルに値を設定。
    cellUnion.Value = "Hello"

End Sub
[VBA]複数のセルオブジェクトを1つのセルオブジェクトに統合する。

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[VBA]カラーの定数一覧 [Programming ExcelVBA]

[はじめに]
・VBAで、
 色の定数を知りたいことがよくあるので、
 備忘録として掲載します。

カラーの定数一覧
ColorConstants定数
カラーColorConstants定数RGBカラー値
(R+G×256+B×2562)
vbBlack0000
vbBlue0025516711680
シアンvbCyan025525516776960
vbGreen0255065280
マゼンタvbMagenta255025516711935
vbRed25500255
vbWhite25525525516777215
vbYellow255255065535

XlRgbColor定数
カラーXlRgbColor定数RGBカラー値
(R+G×256+B×2562)
rgbBlack0000
ディムグレーrgbDimGray、rgbDimGrey1051051056908265
灰色rgbGray、rgbGrey1281281288421504
濃い灰色rgbDarkGray、rgbDarkGrey16916916911119017
銀色rgbSilver19219219212632256
薄い灰色rgbLightGray、rgbLightGrey21121121113882323
ゲーンズボロrgbGainsboro22022022014474460
ホワイトスモークrgbWhiteSmoke24524524516119285
rgbWhite25525525516777215
スノーrgbSnow25525025016448255
ローズブラウンrgbRosyBrown1881431439408444
薄いさんごrgbLightCoral2401281288421616
インディアンレッドrgbIndianRed20592926053069
rgbBrown16542422763429
れんが色rgbFireBrick17834342237106
栗色rgbMaroon12800128
濃い赤rgbDarkRed13900139
rgbRed25500255
ミスティローズrgbMistyRose25522822514804223
サーモンピンクrgbSalmon2501281147504122
トマトrgbTomato25599714678655
濃いサーモンピンクrgbDarkSalmon2331501228034025
さんごrgbCoral255127805275647
オレンジレッドrgbOrangeRed25569017919
薄いサーモンピンクrgbLightSalmon2551601228036607
シェンナrgbSienna16082452970272
シーシェルrgbSeashell25524523815660543
ピーチパフrgbPeachPuff25521818512180223
サンディブラウンrgbSandyBrown244164966333684
リネンrgbLinen25024023015134970
ペルーrgbPeru205133634163021
ビスクrgbBisque25522819612903679
濃いオレンジrgbDarkOrange255140036095
アンティークホワイトrgbAntiqueWhite25023521514150650
タンrgbTan2101801409221330
バーリーウッドrgbBurlyWood2221841358894686
ブランシュアーモンドrgbBlanchedAlmond25523520513495295
ナバホホワイトrgbNavajoWhite25522217311394815
パパイヤホイップrgbPapayaWhip25523921314020607
モカシンrgbMoccasin25522818111920639
オレンジrgbOrange255165042495
フローラルホワイトrgbFloralWhite25525024015792895
オールドレースrgbOldLace25324523015136253
小麦rgbWheat24522217911788021
ゴールデンロッドrgbGoldenrod218165322139610
濃いゴールデンロッドrgbDarkGoldenrod18413411755384
コーンシルクrgbCornsilk25524822014481663
ゴールドrgbGold255215055295
レモンシフォンrgbLemonChiffon25525020513499135
カーキrgbKhaki2402301409234160
濃いカーキrgbDarkKhaki1891831077059389
ペールゴールデンロッドrgbPaleGoldenrod2382321077071982
アイボリーrgbIvory25525524015794175
ベージュrgbBeige24524522014480885
明るい黄rgbLightYellow25525522414745599
薄いゴールデンロッドイエローrgbLightGoldenrodYellow25025021013826810
オリーブrgbOlive128128032896
rgbYellow255255065535
オリーブドラブrgbOliveDrab107142352330219
イエローグリーンrgbYellowGreen154205503329434
濃いオリーブグリーンrgbDarkOliveGreen85107473107669
グリーンイエローrgbGreenYellow173255473145645
若草色rgbLawnGreen124252064636
シャルトルーズrgbChartreuse127255065407
ハニーデューrgbHoneydew24025524015794160
濃いシーグリーンrgbDarkSeaGreen1431881439419919
明るい緑rgbLightGreen1442381449498256
ペールグリーンrgbPaleGreen15225115210025880
フォレストグリーンrgbForestGreen34139342263842
ライムグリーンrgbLimeGreen50205503329330
濃い緑rgbDarkGreen0100025600
rgbGreen0128032768
黄緑rgbLime0255065280
淡いアクアマリンrgbMediumAquamarine10225517011206502
淡いシーグリーンrgbMediumSeaGreen601791137451452
シーグリーンrgbSeaGreen46139875737262
ミントクリームrgbMintCream24525525016449525
スプリンググリーンrgbSpringGreen02551278388352
淡いスプリンググリーンrgbMediumSpringGreen025015410156544
アクアマリンrgbAquamarine12725521213959039
ターコイズrgbTurquoise6422420813688896
薄いシーグリーンrgbLightSeaGreen3217817011186720
淡いターコイズrgbMediumTurquoise7220920413422920
空色rgbAzure24025525516777200
ペールターコイズrgbPaleTurquoise17523823815658671
濃いスレートグレーrgbDarkSlateGray4779795197615
濃いスレートグレーrgbDarkSlateGrey4779795197615
青緑rgbTeal01281288421376
濃いシアンrgbDarkCyan01391399145088
明るい水色rgbLightCyan01391399145088
濃いターコイズrgbDarkTurquoise020620913749760
水色rgbAqua025525516776960
カデットブルーrgbCadetBlue9515816010526303
パウダーブルーrgbPowderBlue17622423015130800
明るい青rgbLightBlue17321623015128749
深いスカイブルーrgbDeepSkyBlue019125516760576
スカイブルーrgbSkyBlue13520623515453831
薄いスカイブルーrgbLightSkyBlue13520625016436871
アリスブルーrgbAliceBlue24024825516775408
スチールブルーrgbSteelBlue7013018011829830
スレートグレーrgbSlateGray1121281449470064
薄いスレートグレーrgbLightSlateGray11913615310061943
ドジャーブルーrgbDodgerBlue3014425516748574
薄いスチールブルーrgbLightSteelBlue17619622214599344
コーンフラワーブルーrgbCornflowerBlue10014923715570276
ロイヤルブルーrgbRoyalBlue6510522514772545
ゴーストホワイトrgbGhostWhite24824825516775416
ラベンダーrgbLavender23023025016443110
ミッドナイトブルーrgbMidnightBlue25251127346457
ネイビーrgbNavy、rgbNavyBlue001288388608
濃い青rgbDarkBlue001399109504
淡い青rgbMediumBlue0020513434880
rgbBlue0025516711680
濃いスレートブルーrgbDarkSlateBlue72611399125192
スレートブルーrgbSlateBlue1069020513458026
淡いスレートブルーrgbMediumSlateBlue12310423815624315
淡い紫rgbMediumPurple14711221914381203
青紫rgbBlueViolet1384322614822282
インディゴrgbIndigo7501308519755
濃いオーキッドrgbDarkOrchid1535020413382297
濃い紫rgbDarkViolet148021113828244
淡いオーキッドrgbMediumOrchid1868521113850042
あざみ色rgbThistle21619121614204888
プラムrgbPlum22116022114524637
紫色rgbViolet23813023815631086
rgbPurple12801288388736
濃いマゼンタrgbDarkMagenta13901399109643
明るい紫rgbFuchsia255025516711935
オーキッドrgbOrchid21811221414053594
淡いバイオレットレッドrgbMediumVioletRed199211338721863
深いピンクrgbDeepPink255201479639167
ホットピンクrgbHotPink25510518011823615
ラベンダーブラッシュrgbLavenderBlush25524024516118015
ペールバイオレットレッドrgbPaleVioletRed2191121479662683
深紅rgbCrimson22020603937500
ピンクrgbPink25519220313353215
薄いピンクrgbLightPink25518219312695295

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[VBA]RGBカラー値からRGBの各々の値を取得 [Programming ExcelVBA]

[はじめに]
・RGBの各要素からRGBカラー値を取得する為に、
 VBAではRGB関数が用意されていますが、
 その逆(RGBカラー値から元のRGB各要素を取得)の関数は
 用意されていません。

 たまに必要になることがあるので、
 ユーザ定義関数を作成しましたので、備忘録として掲載します。

[ソース]
'[機能]
' RGB カラー値から、
' 赤(R)、緑(G)、青(B)の各々の値を取得する。
'[引数]
' rgbColor:RGB カラー値
'[戻り値]
' RGBの各値(配列)
'  0番目:赤(R)
'  1番目:緑(G)
'  2番目:青(B)
Public Function GetRgbValues(ByVal rgbColor As LongAs Integer()

    Dim rtnColors(2) As Integer

    '赤(R)
    rtnColors(0) = rgbColor Mod 256
    '緑(G)
    rtnColors(1) = rgbColor \ 256 Mod 256
    '青(B)
    rtnColors(2) = rgbColor \ 65536

    GetRgbValues = rtnColors

End Function
[VBA]RGBカラー値から赤(R)、緑(G)、青(B)の各々の値を取得

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[VBA]セルの取得、値の書き込み [Programming ExcelVBA]

[はじめに]
・Excel VBAでよくセルの情報を取得することがありますが、
 様々な書き方があるので、備忘録に記載します。

 セル座標をA1形式や行列番号で指定したり、
 複数セルの範囲指定、その他のブックやシート上のセルの取得 など
 用途に応じたパターンを適用頂ければと思います。

[ソース]
Private Sub WriteToCellValue()

    '■■■1.「A1形式」でセルを指定する。
    ' ①単一セルを扱う。
    ' ※例:セルA1に値を出力
    Range("A1").Value = "あ"
    
    ' ②複数セルを扱う(その1)
    ' ※例:セルA3~A5に値を出力
    Range("A3:A5").Value = "い"

    ' ③複数セルを扱う(その2)
    ' ※例:セルC1~D10に値を出力
    Range(Range("C1"), Range("D10")).Value = "う"

    '■■■2.行番号、列番号でセルを指定する。
    ' 行番号、列番号をカウントアップ等をさせたい場合、有効。
    ' ※例:セル(1行目、6列目)に値を出力
    Cells(1, 6).Value = "え"

    '■■■3.特定のセル範囲内から、相対的にセルを取得
    ' ※例:セルD4(B3~E5内で2行目、3列目)に値を出力
    Range("B3:E5").Cells(2, 3).Value = "お"

    '■■■4.特定のセル範囲内から、相対的な行を取得
    ' ※例:B3~E5内の1行目に値を出力
    Range("B3:E5").Rows(1).Value = "か"

    '■■■5.特定のセル範囲内から、相対的な列を取得
    ' ※B3~E5内の3列目に値を出力
    Range("B3:E5").Columns(3).Value = "き"

    '■■■6.他のシートのセルを扱う。
    ' 指定セルが、他のシートにある場合は、
    ' 以下のように記載します。
    ' シート省略時は、アクティブシートが対象になります。
    ' ※例:シートSheet1のセルA2に値を出力
    '   以下例のRangeは上記の1~5の表記でも可能。
    Sheets("Sheet1").Range("A2").Value = "く"

    '■■■7.他のブックのセルを扱う。
    ' 指定セルが、他のブック、シートにある場合は、
    ' 以下のように記載します。
    ' ブック省略時は、アクティブブックが対象になります。
    ' ※例:当ブックのシートSheet1のセルA3に値を出力
    '   以下例のRangeは上記の1~5の表記でも可能。
    ThisWorkbook.Sheets("Sheet1").Range("A3").Value = "け"

End Sub
[VBA]セルの選択

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[雑記]大統領、総理大臣のマスク [ネタ]

先日(2020/11)、日本では総理大臣が交代し、
アメリカでは大統領選の接戦にようやく終止符がつきました。
 
これがきっかけなのか、関連するグッズがいくつか販売されています。
忘年会の余興などに、いかがでしょうか?

ものまねマスクMr.トランプ

ものまねマスクMr.トランプ

  • 出版社/メーカー: オガワスタジオ
  • 発売日: 2016/06/10
  • メディア: おもちゃ&ホビー

オガワスタジオ 癒しのバイデン

オガワスタジオ 癒しのバイデン

  • 出版社/メーカー: オガワスタジオ
  • メディア: ウェア&シューズ


ラバーマスク M2 たのむぞ阿部総理

ラバーマスク M2 たのむぞ阿部総理

  • 出版社/メーカー: オガワスタジオ
  • メディア: おもちゃ&ホビー


nice!(0)  コメント(0) 
共通テーマ:お笑い

[Review]プレイステーション5の本体、コントローラのステッカーなど [Game's Review]

(1)レビュー
 先日(2020/11/12)、プレイステーション5が発売されました。
 供給が需要に追い付かず、購入自体ができないユーザはいらっしゃると思いますので、
 本体および付属品のリンクを用意しました。
 
 新型コロナが流行っている昨今、
 ご家族でゲームを楽しんでいただければと思います。

(2)リンク
PlayStation5 (プレイステーション5)ディスクドライブ搭載

PlayStation5 (プレイステーション5)ディスクドライブ搭載

  • 出版社/メーカー: ノーブランド品
  • メディア:









PS5 ディスクエディション 本体 プレイステーション5

PS5 ディスクエディション 本体 プレイステーション5

  • 出版社/メーカー: ノーブランド品
  • メディア:












nice!(0)  コメント(0) 
共通テーマ:ゲーム

[.NET][Visual Studio]CodeLensを非表示にする。(○○個の参照) [Programming .NET Tips]

[はじめに]
 Visual Studioはバージョンアップのたびに様々な便利機能が追加されますが、
 便利な反面、稀に不便なものもあります。
 そのうちの1つがCodeLensです。(あくまでも筆者の感想です)

 CodeLensとは、
 Visual Studio 2015で追加された機能で、
 コードエディタ上で、メソッドやクラスの定義の上の行に、
 そのメソッドやクラスを参照している個数を表示する機能です。
 (図1で「4個の参照」と表示されている箇所です。)

 一見、便利な機能ですが、
 コード編集時に「○○個の参照」の行にカーソルが入らない為、
 編集時に思い通りの動作にならず、不便に感じることがあります。

 CodeLensを無効にする設定が一見わかりづらいので、
 無効にする手順を、備忘録として掲載します。


【図1】
vs_01b.jpg

[CodeLensを無効にする手順]
(1)Visual Studio の「ツール」→「オプション」を選択し、
   オプションダイアログを表示させる。
  vs_02_01.jpg

(2)オプションダイアログの左側のツリービューで、
   「テキストエディタ」→「すべての言語]」→「CodeLens」をクリックし、
   右側のエリアの「CodeLens を有効にする」の
   チェックボックスのチェックを外す。
  vs_02_02.jpg

(3)(2)まで実施すると、CodeLensの表記が表示されなくなります。
  vs_03b.jpg

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[.NET]yield returnの使用例(C#) [Programming .NET Tips]

[はじめに]
 C#には「yield」キーワードがありますが、
 他の言語と比べて特殊でわかりにくいので、使い方の備忘録を掲載します。
 ※「yield」は、
  他の言語(JavaScript、Perl、Python等)でも採用されつつありますが。。。

 「yield」は、
 オブジェクト指向のデザインパターンのIteratorパターンの実装で利用されます。
 Iteratorパターンとは、多数の集合に対してその内部の実装を意識することなく、
 逐次処理するためのデザインパターンです。

 C#では、.NET Framework 2.0(Visual Studio 2005)から
 「yield」が導入されました。
 .NET Framework 1.1(Visual Studio .NET 2003)以前の版で、
 Iteratorパターンを実装するには、
 IEnumerableインタフェース、IEnumeratorインタフェースを実装したクラスを
 記述する必要がありましたが、
 .NET Framework 2.0(Visual Studio 2005)以降では、
 それらのクラスは「yield return」で代用され、
 Iteratorパターンの実装がより簡潔になりました。

[サンプルコード]
以下、2つのサンプルコードを掲載します。
2つのサンプルコードは、各々独立して動作します。
 /// <summary>
 /// yield returnの実装サンプル
 /// </summary>
 public class YieldSample1 : IEnumerable<string>
 {
     /// <summary>
     /// 月の異名の列挙を取得する。
     /// </summary>
     /// <returns>月の異名の列挙</returns>
     public IEnumerator<string> GetEnumerator()
     {
         yield return "睦月";
         yield return "如月";
         yield return "弥生";
         yield return "卯月";
         yield return "皐月";
         yield return "水無月";
         yield return "葉月";
         yield return "長月";
         yield return "神無月";
         yield return "霜月";
         yield return "師走";
     }

     /// <summary>
     /// 月の異名の列挙を取得する。
     /// </summary>
     /// <returns>月の異名</returns>
     IEnumerator IEnumerable.GetEnumerator()
     {
         return this.GetEnumerator();
     }
 }

 public class Program1
 {
     /// <summary>
     /// 列挙を取得し、各々の要素を出力する。
     /// </summary>
     /// <param name="args"></param>
     static void Main(string[] args)
     {
         System.Console.WriteLine("■月の異名を出力する。");

         IEnumerable<string> ie1 = new YieldSample1();
         foreach (var it1 in ie1)
         {
             System.Console.WriteLine(it1);
         }
         System.Console.WriteLine("");

         //[出力]
         // ■月の異名を出力する。
         // 睦月
         // 如月
         // 弥生
         // 卯月
         // 皐月
         // 水無月
         // 葉月
         // 長月
         // 神無月
         // 霜月
         // 師走

         //[補足]
         // 上記コードは、
         // 下記のように書き換えることも可能です。
         // 逆に言うと、foreachで実装すると、
         // 以下のコードに読み替えて実行されます。

         //System.Console.WriteLine("■月の異名を出力する。(while文で処理)");

         //IEnumerable<string> ie1 = new YieldSample1();
         //IEnumerator<string> it1 = ie1.GetEnumerator();
         //while (it1.MoveNext())
         //{
         //    System.Console.WriteLine(it1.Current);
         //}
         //System.Console.WriteLine("");

         System.Console.ReadLine();

     }
 }
[C#]yield returnの使用例(その2)


/// <summary>
/// yield returnの実装サンプル
/// </summary>
public class YieldSample2
{
    /// <summary>
    /// 干支の列挙を取得する。
    /// </summary>
    /// <returns>干支の列挙</returns>
    public IEnumerable<String> GetEto()
    {
        yield return "子年";
        yield return "丑年";
        yield return "寅年";
        yield return "卯年";
        yield return "辰年";
        yield return "巳年";
        yield return "午年";
        yield return "未年";
        yield return "申年";
        yield return "酉年";
        yield return "戌年";
        yield return "亥年";
    }
}

public class Program2
{
    /// <summary>
    /// 列挙を取得し、各々の要素を出力する。
    /// </summary>
    /// <param name="args"></param>
    static void Main(string[] args)
    {
        System.Console.WriteLine("■干支を出力する。");

        YieldSample2 ie1 = new YieldSample2();
        foreach (var it1 in ie1.GetEto())
        {
            System.Console.WriteLine(it1);
        }
        System.Console.WriteLine("");

        //[出力]
        // ■干支を出力する。
        // 子年
        // 丑年
        // 寅年
        // 卯年
        // 辰年
        // 巳年
        // 午年
        // 未年
        // 申年
        // 酉年
        // 戌年
        // 亥年

        //[補足]
        // 上記コードは、
        // 下記のように書き換えることも可能です。
        // 逆に言うと、foreachで実装すると、
        // 以下のコードに読み替えて実行されます。

        //System.Console.WriteLine("■干支を出力する。(while文で処理)");

        //YieldSample2 ie1 = new YieldSample2();
        //IEnumerator<string> it1 = ie1.GetEto().GetEnumerator();
        //while (it1.MoveNext())
        //{
        //    System.Console.WriteLine(it1.Current);
        //}
        //System.Console.WriteLine("");

        System.Console.ReadLine();
    }
}
[C#]yield returnの使用例(その2)


[ご参考]
Iteratorパターンについて
 デザインパターン「Iterator」-Qiita


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[Review]オラクル認定資格教科書 Javaプログラマ Gold SE 8 (EXAMPRESS) [Book's Review (Develop)]

(1)レビュー
 以下2冊の紹介です。
 (1)『オラクル認定資格教科書 Javaプログラマ Gold SE 8』(通称『紫本』
 (2)『徹底攻略 Java SE 8 Gold 問題集[1Z0-809]対応』(通称『黒本』

 今までMicrosoft系をメインに資格取得に励んできましたが、
 Java系の資格にもチャレンジすることになり、
 参考書として『紫本』を、
 問題集として『黒本』を購入しました。

 JavaSE8といえば、
 新機能のラムダ式ストリームAPI
 日付/時刻API が注目されていますが、
 JavaSE7で追加された
 try-with-resourcesswitch文の拡張(String型のサポート)
 ダイヤモンド演算子例外のマルチキャッチ
 Executor ServiceFork/Join Framework
 数値リテラルのアンダースコアの区切り文字2進数表記 等など
 普段の開発でも使いこなされていなさそうな機能についても、
 分かりやすい解説が充実しています。

 書店のIT系資格コーナーには
 必ずと言っていいほど並んでいる書籍ですが、
 有名なだけあり、内容も充実しています。
   『JavaSE8 Gold』資格取得を目指している方にぜひオススメの2冊です。

 また『Javaプログラマ Gold SE 8』
 『Javaプログラマ Silver SE 8』前提資格となります。
 Goldと併せて、Slver対策として、以下2冊もオススメです。
 (3)『オラクル認定資格教科書 Javaプログラマ Silver SE 8』(通称『紫本』
 (4)『徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応』(通称『黒本』

 [2019.8.10 合格]
 本試験は、Javaプログラマ歴、7、8年のベテランでも、
 1回の受験で通るのは難しいと言われています。
 Java開発経験は3年程度の私ですが、
 .NET(C#、VB.NET)の10年の開発経験で、
 オブジェクト指向やラムダ式の基本を理解していた為、
 『紫本』による学習、『黒本』による問題演習を、
 各々2周することで、1回の受験で合格できました。

(2)リンク
オラクル認定資格教科書 Javaプログラマ Gold SE 8 (EXAMPRESS)

オラクル認定資格教科書 Javaプログラマ Gold SE 8 (EXAMPRESS)

  • 作者: 山本 道子
  • 出版社/メーカー: 翔泳社
  • 発売日: 2016/07/21
  • メディア: 単行本(ソフトカバー)
徹底攻略 Java SE 8 Gold 問題集[1Z0-809]対応

徹底攻略 Java SE 8 Gold 問題集[1Z0-809]対応

  • 作者: 米山 学
  • 出版社/メーカー: インプレス
  • 発売日: 2016/10/14
  • メディア: 単行本(ソフトカバー)

オラクル認定資格教科書 Javaプログラマ Silver SE 8

オラクル認定資格教科書 Javaプログラマ Silver SE 8

  • 作者: 有限会社ナレッジデザイン 山本道子
  • 出版社/メーカー: 翔泳社
  • 発売日: 2016/02/11
  • メディア: 単行本(ソフトカバー)
徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応

徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応

  • 作者: 志賀 澄人
  • 出版社/メーカー: インプレス
  • 発売日: 2016/01/18
  • メディア: 単行本(ソフトカバー)

nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

[JavaSctipt]文字列をクリップボードにコピーする [Programming JavaScript]

[はじめに]
ブログで記事の内容をクリップボードにコピーする機能を導入する機会があったので、
JavaScriptクリップボードにコピーするコードを作りました。
動作確認は、『Microsoft Internet Explorer11』、『Microsoft Edge』で実施済です。

備忘録として、以下、2つのサンプルソースを掲載します。
2つのサンプルソースは、各々独立して動作します。
<html>
<head>
</head>
<body>

<table border='1'>
<tr><td>
<button
 type="button"
 onClick="
var ta=document.createElement('textarea');
ta.value=this.parentNode.parentNode.parentNode.getElementsByTagName('tr')[1].innerText;
this.appendChild(ta);ta.select();
document.execCommand('Copy');
alert('コピーしました。');
this.removeChild(ta);
"
>
コードのコピー
</button>
</td></tr>
<tr><td><font size="2" color="red">Hello,World!!</font></td></tr>
</table>

</body>
</html>
[JavaScript]文字列をクリップボードにコピーする(その1)


<html>
<head>
<script language="JavaScript">

/// <summary>
/// クリップボードに文字列をコピーする
/// </summary>
/// <param name="targetText">コピー対象の文字列</param>
/// <param name="docWork">ワーク用TextAreaの作成場所。省略時はdocument.body</param>
/// <remarks></remarks>
function copyText(targetText, docWork){

  //[説明]
  // クリップボードにコピーできる文字列は、
  // 入力可能なテキストコントロール(TextArea等)上で
  // 選択状態になっていることが前提となります。
  // この前提により、
  // テキストコントロール以外に記載された文字列を
  // クリップボードにコピーする為には、
  // 一時的にテキストコントロールを経由する必要があります。
  // 本関数では、
  // テキストコントロールを使用しない、かつ、
  // 改行コードを含む文字列の場合を考慮して、
  // 一時的にTextAreaを追加し
  // クリップボードにコピーした後、
  // TextAreaを削除しています。

  if(docWork==null || docWork==undefined){
    //引数docWorkを省略した場合は、
    //document.bodyとする。
    docWork=document.body;
  }

  //ワーク用のTextAreaを作成する。
  var ta=document.createElement("textarea");
  //コピー対象の文字列をTextAreaに書き込む。。
  ta.value=targetText;
  //ワーク用のTextAreaを追加する。
  docWork.appendChild(ta);
  //TextAreaの文字列を全選択する。
  ta.select();
  //選択状態の文字列をクリップボードにコピーする。
  document.execCommand("Copy");
  //コピー完了後のメッセージを表示する。
  alert("コピーしました。");
  //ワーク用のTextAreaを削除する。
  docWork.removeChild(ta);
}

</script>
</head>
<body>

<table border='1'>
<tr><td>
<button 
  type="button"
  onClick="copyText(this.parentNode.parentNode.parentNode.getElementsByTagName('tr')[1].innerText, this);">
  テキストをコピー
</button>
</td></tr>
<tr><td><font size="2" color="red">Hello,World!!</font></td></tr>
</table>

</body>
</html>   
[JavaScript]文字列をクリップボードにコピーする(その2)

nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1] [Programming .NET Tips]

[はじめに]
 ・「[.NET]プログラムコードの変換(C#、VB.NET→HTML)」
  公開しているサンプルソースの改良版です。
 ・プログラムソース(C#、VB.NET)を
  ブログ公開用のHTMLに変換するツールです。
  (コード量が膨大の為、変換処理のみ掲載しています。)
[前Verからの改良内容]
 前Verでは、コードのコピー機能がIE限定でしたが、Edgeにも対応させるよう改良。
 ・前Ver:コードのコピー機能がIEのみに対応。
 ・現Ver:コードのコピー機能をEdgeにも対応。(対応ブラウザ:IE、Edge)
[機能]
  プログラムソースの文字列を、HTMLに変換する。
  変換後のHTMLは、<table>タグで整形した形になります。
[変換後HTML]
 ・インデントのスペースが「& nbsp;」に変換され、ブラウザ上でも表示される。
 ・予約語、コメント、文字列(ダブルコーテーションで囲んだ部分)に色がつく。
 ・ソースコードをクリップボードにコピーする機能を提供。(「コードのコピー」ボタンを付加)
  IE、Edgeで動作確認済。
[制限事項]
 ・言語は、C#とVB.NETのみです。
  但し、VB6やVBA等はVB.NETと言語仕様が似ている為、
  制限事項を考慮の上、利用することもできます。
 ・C#のコメントは、行の先頭の「//」のみサポート。
  行の途中の「//」や「/*」~「*/」はサポートしません。
 ・VB.NETのコメントは、行の先頭の「'」のみサポート。
  行の途中の「'」はサポートしません。
[使い方]
 (1)ビルド前に、「System.Web」を参照設定に追加する。
   追加しないとコンパイルエラーになります。
 (2)CodeConverterToHtml クラスのGetInstanceメソッドで、
   変換オブジェクトを取得します。
   言語の種類(C#かVB.NET)は、GetInstanceメソッドの第1引数で指定します。 
 (3)CodeConverterToHtml クラスのConvertCodeToHtmlメソッドで、
   ソースをHTMLに変換します。
   ConvertCodeToHtmlメソッドの仕様
   ・第1引数:プログラムソースの文字列
   ・第2引数:整形後HTMLのタイトル。(省略可能)
   ・戻り値:変換後のHTMLの文字列
        変換後の文字列(HTML)は、
        <table>タグで整形した形となります。
        (<html>タグでは囲みません。)
'変換クラスを取得する。
Dim conv As CodeConverterToHtml = _
        CodeConverterToHtml.GetInstance( _
            CodeConverterToHtml.ProgLangType.VBNet _
        )

'プログラムソース
Dim strPgSource As String = "・…(プログラムソース)…"

'変換処理(変換結果はブログ等に貼り付けて、利用できます。)
Dim strConv As String = _
    conv.ConvertCodeToHtml(strPgSource, "[VB.NET]変換機能の使用例")
[VB.NET]変換機能の使用例


[改造ポイント]
 ・拡張性
  言語(C#、VB.NET)の固有ロジックを、
  CodeConverterToHtml の派生クラスに定義しています。
  (VBCodeConverterToHtml、CSharpCodeConverterToHtml)
  予約語一覧、キーワードの前景色、背景色、検索条件(正規表現)、変換仕様は、
  派生クラスの修正で変更できます。
  また、言語を追加する場合も、既存の派生クラスの流用が簡単です。
 ・予約語一覧
  予約語一覧は各派生クラスに定義しています。
  予約語の追加、変更、削除が簡単です。
 ・キーワードの検索条件
  正規表現を各派生クラスに定義しています。
  正規表現を修正することで、キーワードの検索条件を変更できます。
 ・キーワードの変換仕様
  正規表現の検索結果毎に、
  MatchEvaluator()メソッドが呼ばれます。
  MatchEvaluator()メソッドの修正で変換仕様を変更できます。
 ・マルチスレッド対応
  スレッドセーフではありません。
  派生クラスのGetRegEx() とGetReservedWords()に、
  複数スレッドが同時アクセスした場合、
  m_RegEx変数、m_ReservedWords変数の値に
  矛盾が生じる可能性があります。
  ASP.NET等のマルチスレッド環境で安全に使用する為には、
  SyncLockで排他をかける必要があります。

[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
Imports System.Text.RegularExpressions

''' <summary>
''' 変換(ソースコード→HTML)
''' </summary>
''' <remarks></remarks>
Public MustInherit Class CodeConverterToHtml

#Region "定数定義"
    ''' <summary>
    ''' HTMLレイアウト
    ''' </summary>
    ''' <remarks></remarks>
    Private Const TABLE_STRING As String =
        "<table width=""100%"" border=""0"" " &
        " bgcolor=""@@@TITLEBGCOLOR@@@"" " &
        " cellspacing=""0"">" &
        " <tr><td>" &
        "  <button type=""button"" value="""" " &
        "   onClick=""" &
        "   var ta=document.createElement('textarea');" &
        "   ta.value=this.parentNode.parentNode.parentNode.getElementsByTagName('tr')[1].innerText;" &
        "   this.appendChild(ta);ta.select();" &
        "   document.execCommand('Copy');" &
        "   alert('コピーしました。');" &
        "   this.removeChild(ta);"">" &
        "   コードのコピー</button>" &
        " </td></tr>" &
        " <tr><td>" &
        " <table width=""100%"" border=""0"" " &
        "  cellpadding=""10"" " &
        "  bgcolor=""@@@BGCOLOR@@@"" " &
        "  cellspacing=""0"">" &
        "  <tr><td>" &
        "   <font color=""@@@FORECOLOR@@@"" " &
        "    style=""font-size: 9pt"">" &
        "    <code>@@@CODE@@@</code>" &
        "   </font>" &
        "  </td></tr>" &
        " </table>" &
        " </td></tr>" &
        " <tr><td>" &
        " <b><font size=""2"">@@@TITLE@@@</font></b>" &
        " </td></tr>" &
        "</table>"
#End Region

#Region "列挙定義"
    ''' <summary>
    ''' 言語の種類
    ''' </summary>
    ''' <remarks></remarks>
    Public Enum ProgLangType
        ''' <summary>
        ''' VB.NET
        ''' </summary>
        ''' <remarks></remarks>
        VBNet = 0
        ''' <summary>
        ''' C#.NET
        ''' </summary>
        ''' <remarks></remarks>
        CSharp = 1
    End Enum

#End Region

#Region "変数定義"
    ''' <summary>
    ''' インスタンス
    ''' </summary>
    ''' <remarks></remarks>
    Private Shared instanceList() As CodeConverterToHtml = _
        New CodeConverterToHtml() { _
            New VbCodeConverterToHtml(), _
            New CSharpCodeConverterToHtml() _
        }

#End Region

#Region "コンストラクタ"
    ''' <summary>
    ''' コンストラクタ
    ''' </summary>
    ''' <remarks></remarks>
    Protected Sub New()

    End Sub

#End Region

#Region "インスタンスを取得"
    ''' <summary>
    ''' インスタンスを取得
    ''' </summary>
    ''' <param name="type">言語の種類</param>
    ''' <returns>インスタンス</returns>
    ''' <remarks></remarks>
    Public Shared Function GetInstance( _
        ByVal type As ProgLangType) As CodeConverterToHtml

        Return instanceList(type)
    End Function
#End Region

#Region "ソースコードをHTMLに変換する。"
    ''' <summary>
    ''' ソースコードをHTMLに変換する。
    ''' </summary>
    ''' <param name="src">ソースコード</param>
    ''' <returns>HTML</returns>
    ''' <remarks></remarks>
    Public Function ConvertCodeToHtml(ByVal src As StringAs String
        Return Me.ConvertCodeToHtml(src, Me.GetDefaultTitle())
    End Function

    ''' <summary>
    ''' ソースコードをHTMLに変換する。
    ''' </summary>
    ''' <param name="src">ソースコード</param>
    ''' <param name="title">タイトル</param>
    ''' <returns>HTML</returns>
    ''' <remarks></remarks>
    Public Function ConvertCodeToHtml( _
        ByVal src As StringByVal title As StringAs String

        Dim wkSrcList() As String = Nothing

        'ソースコードを行単位に分割する。
        '(vbCrLf, vbLf, vbCr毎)
        wkSrcList = src.Split( _
            New String() {vbCrLf, vbLf, vbCr}, _
            StringSplitOptions.None)

        '先頭の空白文字数を取得
        Dim cntIndent As Integer = _
            Me.GetHeadSpaceCount(wkSrcList)

        '先頭の空白文字を削除
        Me.RemoveStringList(wkSrcList, cntIndent)

        'HTMLエンコード
        Me.HtmlEncode(wkSrcList)

        Dim regEx As Regex = Me.GetRegEx()
        Dim regMatchEvaluator As _
            New MatchEvaluator(AddressOf Me.MatchEvaluator)

        'キーワードにタグを付加
        For i As Integer = 0 To wkSrcList.Length - 1
            wkSrcList(i) = wkSrcList(i).Replace( _
                    " ""&nbsp;")
            wkSrcList(i) = regEx.Replace( _
                    wkSrcList(i), regMatchEvaluator)
        Next

        Dim wkStr As String

        wkStr = String.Join(vbCrLf, wkSrcList)
        wkStr = wkStr.Replace(vbCrLf, "<br/>" & vbCrLf)

        Dim wkStrTable As String = Nothing

        wkStrTable = TABLE_STRING.Replace( _
            "@@@TITLE@@@", title)
        wkStrTable = wkStrTable.Replace( _
            "@@@BGCOLOR@@@"Me.GetBackColor())
        wkStrTable = wkStrTable.Replace( _
            "@@@FORECOLOR@@@"Me.GetForeColor())
        wkStrTable = wkStrTable.Replace( _
            "@@@TITLEBGCOLOR@@@"Me.GetTitleBackColor())
        wkStr = wkStrTable.Replace("@@@CODE@@@", wkStr)


        Return wkStr
    End Function

#Region "ヘルパーメソッド"
    ''' <summary>
    ''' HTMLにエンコードする
    ''' </summary>
    ''' <param name="srcLineList">ソース</param>
    ''' <returns>ソース(HTMLエンコード済)</returns>
    ''' <remarks></remarks>
    Private Function HtmlEncode(ByVal srcLineList() As StringAs String()

        For i As Integer = 0 To srcLineList.Length - 1
            srcLineList(i) = System.Web.HttpUtility.HtmlEncode(srcLineList(i))
        Next

        Return srcLineList

    End Function

    ''' <summary>
    ''' インデントの桁数を取得。
    ''' </summary>
    ''' <param name="srcLineList">ソース</param>
    ''' <returns>インデントの桁数</returns>
    ''' <remarks></remarks>
    Private Function GetHeadSpaceCount( _
        ByVal srcLineList() As StringAs Integer

        Const CHR_BLANK As Char = " "c
        Return Me.GetHeadSpaceCount(srcLineList, CHR_BLANK)
    End Function

    ''' <summary>
    ''' インデントの桁数を取得。
    ''' </summary>
    ''' <param name="srcLineList">ソース</param>
    ''' <param name="indentChar">インデントの文字</param>
    ''' <returns>インデントの桁数</returns>
    ''' <remarks></remarks>
    Private Function GetHeadSpaceCount( _
        ByVal srcLineList() As String, _
        ByVal indentChar As CharAs Integer

        Dim cntIndent As Integer = Int32.MaxValue

        If srcLineList.Length = 0 Then
            Return 0
        End If

        For Each wkSrc As String In srcLineList

            For i As Integer = 0 To wkSrc.Length - 1

                If wkSrc.Trim() = "" Then
                    Exit For
                End If

                If i >= cntIndent Then
                    Exit For
                End If

                If wkSrc(i) = indentChar.ToString() Then

                Else
                    cntIndent = Math.Min(i, cntIndent)
                    Exit For
                End If
            Next
        Next

        If cntIndent = Int32.MaxValue Then
            Return 0
        End If

        Return cntIndent

    End Function

    ''' <summary>
    ''' 各行からインデントを除去する。
    ''' </summary>
    ''' <param name="srcLineList">ソース</param>
    ''' <param name="cnt">インデントの桁数</param>
    ''' <returns>処理結果</returns>
    ''' <remarks></remarks>
    Private Function RemoveStringList( _
        ByVal srcLineList() As String, _
        ByVal cnt As IntegerAs Boolean

        If cnt = 0 Then
            Return True
        End If

        For i As Integer = 0 To srcLineList.Length - 1
            If srcLineList(i).Trim() = "" Then
                Continue For
            End If
            srcLineList(i) = srcLineList(i).Substring(cnt)
        Next

        Return True

    End Function
#End Region

#End Region

#Region "変換対象の文字列を検索する正規表現を取得する。"
    ''' <summary>
    ''' 変換対象の文字列を検索する正規表現を取得する。
    ''' </summary>
    ''' <returns>正規表現</returns>
    ''' <remarks></remarks>
    Protected MustOverride Function GetRegEx() As Regex
#End Region

#Region "正規表現の検索結果を編集する。"
    ''' <summary>
    ''' 正規表現の検索結果を編集する。
    ''' </summary>
    ''' <param name="match">検索結果</param>
    ''' <returns>編集結果</returns>
    ''' <remarks></remarks>
    Protected MustOverride Function MatchEvaluator( _
        ByVal match As Match) As String
#End Region

#Region "予約語一覧を取得する。"
    ''' <summary>
    ''' 予約語一覧を取得する。
    ''' </summary>
    ''' <returns>予約語一覧</returns>
    ''' <remarks></remarks>
    Public MustOverride Function GetReservedWords() As String()
#End Region

#Region "タイトルを取得"
    ''' <summary>
    ''' タイトルを取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public MustOverride Function GetDefaultTitle() As String
#End Region

#Region "タイトルを取得"
    ''' <summary>
    ''' 前景色(タイトル)を取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public MustOverride Function GetTitleBackColor() As String
#End Region

#Region "背景色を取得"
    ''' <summary>
    ''' 背景色を取得
    ''' </summary>
    ''' <returns>背景色</returns>
    ''' <remarks></remarks>
    Public MustOverride Function GetBackColor() As String
#End Region

#Region "前景色を取得"
    ''' <summary>
    ''' 前景色を取得
    ''' </summary>
    ''' <returns>前景色</returns>
    ''' <remarks></remarks>
    Public MustOverride Function GetForeColor() As String
#End Region


End Class

[VB.NET]CodeConverterToHtml


続きを読む


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2] [Programming .NET Tips]

[はじめに]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]」からの続きです。

[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
Imports System.Text.RegularExpressions

''' <summary>
''' 変換(C#ソースコード→HTML)
''' </summary>
''' <remarks></remarks>
Public Class CSharpCodeConverterToHtml
    Inherits CodeConverterToHtml

#Region "定数定義"
    ''' <summary>
    ''' 背景色
    ''' </summary>
    ''' <remarks></remarks>
    Private Const BACK_COLOR As String = "#FFFFE0"

    ''' <summary>
    ''' 背景色(タイトル)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const BACK_COLOR_TITLE As String = "#66CCCC"

    ''' <summary>
    ''' 前景色
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR As String = "#000000"

    ''' <summary>
    ''' 前景色(コメント)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR_COMMENT As String = "#008040"

    ''' <summary>
    ''' 前景色(文字列)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR_STRING As String = "#FF0000"

    ''' <summary>
    ''' 前景色(予約語)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR_RESERVED_WORD As String = "#0000FF"
#End Region

#Region "変数定義"
    ''' <summary>
    ''' 正規表現
    ''' </summary>
    ''' <remarks></remarks>
    Private m_RegEx As Regex = Nothing

    ''' <summary>
    ''' 予約語一覧
    ''' </summary>
    ''' <remarks></remarks>
    Private m_ReservedWords As New List(Of String)
#End Region

#Region "コンストラクタ"
    ''' <summary>
    ''' コンストラクタ
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New()

    End Sub
#End Region

#Region "変換対象の文字列を検索する正規表現を取得する。"
    ''' <summary>
    ''' 変換対象の文字列を検索する正規表現を取得する。
    ''' </summary>
    ''' <returns>正規表現</returns>
    ''' <remarks></remarks>
    Protected Overrides Function GetRegEx() As Regex
        If Not (Me.m_RegEx Is NothingThen
            Return Me.m_RegEx
        End If

        Dim strPatternAll As String = Nothing
        '正規表現パターン
        '※コメント判別
        '(先頭開始、0個以上の「&nbsp;」、1個以上の「//」、0個以上の任意文字)
        Dim strPattern1 As String = "^(&nbsp;)*(//)+.*"
        '※コメント判別
        '(先頭開始、0個以上の空白、1個以上の「//」、0個以上の任意文字)
        Dim strPattern2 As String = "^\s*(//)+.*"
        '※文字列判別
        '(「"」開始、0個以上の任意文字、最も手前の「"」終了)
        Dim strPattern3 As String = """.*?"""
        '※文字列判別
        '(「&quot;」開始、0個以上の任意文字、最も手前の「&quot;」終了)
        Dim strPattern4 As String = "&quot;.*?&quot;"
        '※予約語判別
        '(単語単位で予約語の何れかと同じ)
        Dim wkStr As String = String.Join("|"Me.GetReservedWords())
        Dim strPattern5 As String = "\b(" & wkStr & ")\b"

        strPatternAll = _
                    strPattern1 & "|" & strPattern2 & "|" & _
                    strPattern3 & "|" & strPattern4 & "|" & _
                    strPattern5

        Me.m_RegEx = New Regex(strPatternAll)

        Return Me.m_RegEx
    End Function
#End Region

#Region "正規表現の検索結果を編集する。"
    ''' <summary>
    ''' 正規表現の検索結果を編集する。
    ''' </summary>
    ''' <param name="match">検索結果</param>
    ''' <returns>編集結果</returns>
    ''' <remarks></remarks>
    Protected Overrides Function MatchEvaluator(ByVal match As Match) As String
        If match.Value.Replace("&nbsp;""").StartsWith("//"OrElse _
            match.Value.Trim().StartsWith("//"Then
            'コメントの場合            
            Dim wk1 As Integer = match.Value.IndexOf("//")
            If wk1 = 0 Then
                Return String.Format( _
                    "<font color='{0}'>{1}</font>", _
                    FORE_COLOR_COMMENT, _
                    match.Value.Substring(wk1))
            End If
            Return match.Value.Substring(0, wk1) & _
                    String.Format( _
                    "<font color='{0}'>{1}</font>", _
                    FORE_COLOR_COMMENT, _
                    match.Value.Substring(wk1))
        End If

        If (match.Value.StartsWith("&quot;"AndAlso _
            match.Value.EndsWith("&quot;")) OrElse _
           (match.Value.StartsWith(""""AndAlso _
            match.Value.EndsWith("""")) Then
            '文字列の場合            
            Return String.Format( _
                "<font color='{0}'>{1}</font>", _
                FORE_COLOR_STRING, _
                match.Value)
        End If

        '予約語の場合
        Return String.Format( _
            "<font color='{0}'>{1}</font>", _
            FORE_COLOR_RESERVED_WORD, _
            match.Value)
    End Function
#End Region

#Region "予約語一覧を取得する。"
    ''' <summary>
    ''' 予約語一覧を取得する。
    ''' </summary>
    ''' <returns>予約語一覧</returns>
    ''' <remarks></remarks>
    Public Overrides Function GetReservedWords() As String()
        If Me.m_ReservedWords.Count > 0 Then
            Return Me.m_ReservedWords.ToArray()
        End If

        With Me.m_ReservedWords

            .AddRange(New String() {"abstract""as""base""bool""break"})
            .AddRange(New String() {"byte""case""catch""char""checked"})
            .AddRange(New String() {"class""const""continue""decimal""decimal"})
            .AddRange(New String() {"default""delegate""do""double""else"})
            .AddRange(New String() {"enum""event""explicit""extern""false"})
            .AddRange(New String() {"finally""fixed""float""for""foreach"})
            .AddRange(New String() {"from""get""goto""group""if"})
            .AddRange(New String() {"implicit""in""int""interface""internal"})
            .AddRange(New String() {"into""is""join""let""lock"})
            .AddRange(New String() {"long""namespace""new""null""object"})
            .AddRange(New String() {"operator""orderby""out""override""params"})
            .AddRange(New String() {"partial""private""protected""public""readonly"})
            .AddRange(New String() {"ref""return""sbyte""sealed""select"})
            .AddRange(New String() {"set""short""sizeof""stackalloc""static"})
            .AddRange(New String() {"string""struct""switch""this""throw"})
            .AddRange(New String() {"true""try""typeof""uint""ulong"})
            .AddRange(New String() {"unchecked""unsafe""ushort""using""value"})
            .AddRange(New String() {"virtual""void""volatile""where""while"})
            .AddRange(New String() {"yield"})

        End With

        Return Me.m_ReservedWords.ToArray()

    End Function
#End Region

#Region "タイトルを取得"
    ''' <summary>
    ''' タイトルを取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overrides Function GetDefaultTitle() As String
        Return "C#"
    End Function
#End Region

#Region "背景色(タイトル)を取得"
    ''' <summary>
    ''' 背景色(タイトル)を取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overrides Function GetTitleBackColor() As String
        Return BACK_COLOR_TITLE
    End Function
#End Region

#Region "背景色を取得"
    ''' <summary>
    ''' 背景色を取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overrides Function GetBackColor() As String
        Return BACK_COLOR
    End Function
#End Region

#Region "前景色を取得"
    ''' <summary>
    ''' 前景色を取得
    ''' </summary>
    ''' <returns>前景色</returns>
    ''' <remarks></remarks>
    Public Overrides Function GetForeColor() As String
        Return FORE_COLOR
    End Function
#End Region

End Class
[VB.NET]CSharpCodeConverterToHtml.vb


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page3] [Programming .NET Tips]

[はじめに]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]」からの続きです。

[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
Imports System.Text.RegularExpressions

''' <summary>
''' 変換(SQLServerコード→HTML)
''' </summary>
''' <remarks></remarks>
Public Class SqlServerCodeConverterToHtml
    Inherits CodeConverterToHtml

#Region "定数定義"
    ''' <summary>
    ''' 背景色
    ''' </summary>
    ''' <remarks></remarks>
    Private Const BACK_COLOR As String = "#FFFFE0"

    ''' <summary>
    ''' 背景色(タイトル)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const BACK_COLOR_TITLE As String = "#66CCCC"

    ''' <summary>
    ''' 前景色
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR As String = "#000000"

    ''' <summary>
    ''' 前景色(コメント)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR_COMMENT As String = "#008040"

    ''' <summary>
    ''' 前景色(文字列)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR_STRING As String = "#FF0000"

    ''' <summary>
    ''' 前景色(予約語)
    ''' </summary>
    ''' <remarks></remarks>
    Private Const FORE_COLOR_RESERVED_WORD As String = "#0000FF"
#End Region

#Region "変数定義"
    ''' <summary>
    ''' 正規表現
    ''' </summary>
    ''' <remarks></remarks>
    Private m_RegEx As Regex = Nothing

    ''' <summary>
    ''' 予約語一覧
    ''' </summary>
    ''' <remarks></remarks>
    Private m_ReservedWords As New List(Of String)
#End Region

#Region "コンストラクタ"
    ''' <summary>
    ''' コンストラクタ
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New()

    End Sub
#End Region

#Region "変換対象の文字列を検索する正規表現を取得する。"
    ''' <summary>
    ''' 変換対象の文字列を検索する正規表現を取得する。
    ''' </summary>
    ''' <returns>正規表現</returns>
    ''' <remarks></remarks>
    Protected Overrides Function GetRegEx() As Regex
        If Not (Me.m_RegEx Is NothingThen
            Return Me.m_RegEx
        End If

        Dim strPatternAll As String = Nothing
        '正規表現パターン
        '※コメント判別
        '(先頭開始、0個以上の「&nbsp;」、1個以上の「--」、0個以上の任意文字)
        Dim strPattern1 As String = "^(&nbsp;)*(--)+.*"
        '※コメント判別
        '(先頭開始、0個以上の空白、1個以上の「--」、0個以上の任意文字)
        Dim strPattern2 As String = "^\s*(--)+.*"
        '※文字列判別
        '(「'」開始、0個以上の任意文字、最も手前の「'」終了)
        Dim strPattern3 As String = "'.*?'"
        '※予約語判別
        '(単語単位で予約語の何れかと同じ)
        Dim wkStr As String = String.Join("|"Me.GetReservedWords())
        Dim strPattern4 As String = "\b(" & wkStr & ")\b"

        strPatternAll = _
                    strPattern1 & "|" & strPattern2 & "|" & _
                    strPattern3 & "|" & strPattern4 

        Me.m_RegEx = New Regex(strPatternAll, RegexOptions.IgnoreCase)

        Return Me.m_RegEx
    End Function
#End Region

#Region "正規表現の検索結果を編集する。"
    ''' <summary>
    ''' 正規表現の検索結果を編集する。
    ''' </summary>
    ''' <param name="match">検索結果</param>
    ''' <returns>編集結果</returns>
    ''' <remarks></remarks>
    Protected Overrides Function MatchEvaluator(ByVal match As Match) As String
        If match.Value.Replace("&nbsp;""").StartsWith("--"OrElse _
            match.Value.Trim().StartsWith("--"Then
            'コメントの場合            
            Dim wk1 As Integer = match.Value.IndexOf("--")
            If wk1 = 0 Then
                Return String.Format( _
                    "<font color='{0}'>{1}</font>", _
                    FORE_COLOR_COMMENT, _
                    match.Value.Substring(wk1))
            End If
            Return match.Value.Substring(0, wk1) & _
                    String.Format( _
                    "<font color='{0}'>{1}</font>", _
                    FORE_COLOR_COMMENT, _
                    match.Value.Substring(wk1))
        End If

        If match.Value.StartsWith("'"AndAlso _
            match.Value.EndsWith("'"Then
            '文字列の場合            
            Return String.Format( _
                "<font color='{0}'>{1}</font>", _
                FORE_COLOR_STRING, _
                match.Value)
        End If

        '予約語の場合
        Return String.Format( _
            "<font color='{0}'>{1}</font>", _
            FORE_COLOR_RESERVED_WORD, _
            match.Value)
    End Function
#End Region

#Region "予約語一覧を取得する。"
    ''' <summary>
    ''' 予約語一覧を取得する。
    ''' </summary>
    ''' <returns>予約語一覧</returns>
    ''' <remarks></remarks>
    Public Overrides Function GetReservedWords() As String()
        If Me.m_ReservedWords.Count > 0 Then
            Return Me.m_ReservedWords.ToArray()
        End If

        With Me.m_ReservedWords

            .AddRange(New String() {"ADD""ALL""ALTER""AND""ANY"})
            .AddRange(New String() {"AS""ASC""AUTHORIZATION""BACKUP""BEGIN"})
            .AddRange(New String() {"BETWEEN""BREAK""BROWSE""BULK""BY"})
            .AddRange(New String() {"CASCADE""CASE""CHECK""CHECKPOINT""CLOSE"})
            .AddRange(New String() {"CLUSTERED""COALESCE""COLLATE""COLUMN""COMMIT"})
            .AddRange(New String() {"COMPUTE""CONSTRAINT""CONTAINS""CONTAINSTABLE""CONTINUE"})
            .AddRange(New String() {"CONVERT""CREATE""CROSS""CURRENT""CURRENT_DATE"})
            .AddRange(New String() {"CURRENT_TIME""CURRENT_TIMESTAMP""CURRENT_USER""CURSOR""DATABASE"})
            .AddRange(New String() {"DBCC""DEALLOCATE""DECLARE""DEFAULT""DELETE"})
            .AddRange(New String() {"DENY""DESC""DISK""DISTINCT""DISTRIBUTED"})
            .AddRange(New String() {"DOUBLE""DROP""DUMP""ELSE""END"})
            .AddRange(New String() {"ERRLVL""ESCAPE""EXCEPT""EXEC""EXECUTE"})
            .AddRange(New String() {"EXISTS""EXIT""EXTERNAL""FETCH""FILE"})
            .AddRange(New String() {"FILLFACTOR""FOR""FOREIGN""FREETEXT""FREETEXTTABLE"})
            .AddRange(New String() {"FROM""FULL""FUNCTION""GOTO""GRANT"})
            .AddRange(New String() {"GROUP""HAVING""HOLDLOCK""IDENTITY""IDENTITY_INSERT"})
            .AddRange(New String() {"IDENTITYCOL""IF""IN""INDEX""INNER"})
            .AddRange(New String() {"INSERT""INTERSECT""INTO""IS""JOIN"})
            .AddRange(New String() {"KEY""KILL""LEFT""LIKE""LINENO"})
            .AddRange(New String() {"LOAD""MERGE""NATIONAL""NOCHECK""NONCLUSTERED"})
            .AddRange(New String() {"NOT""NULL""NULLIF""OF""OFF"})
            .AddRange(New String() {"OFFSETS""ON""OPEN""OPENDATASOURCE""OPENQUERY"})
            .AddRange(New String() {"OPENROWSET""OPENXML""OPTION""OR""ORDER"})
            .AddRange(New String() {"OUTER""OVER""PERCENT""PIVOT""PLAN"})
            .AddRange(New String() {"PRECISION""PRIMARY""PRINT""PROC""PROCEDURE"})
            .AddRange(New String() {"PUBLIC""RAISERROR""READ""READTEXT""RECONFIGURE"})
            .AddRange(New String() {"REFERENCES""REPLICATION""RESTORE""RESTRICT""RETURN"})
            .AddRange(New String() {"REVERT""REVOKE""RIGHT""ROLLBACK""ROWCOUNT"})
            .AddRange(New String() {"ROWGUIDCOL""RULE""SAVE""SCHEMA""SECURITYAUDIT"})
            .AddRange(New String() {"SELECT""SEMANTICKEYPHRASETABLE""SEMANTICSIMILARITYDETAILSTABLE"})
            .AddRange(New String() {"SEMANTICSIMILARITYTABLE""SESSION_USER"})
            .AddRange(New String() {"SET""SETUSER""SHUTDOWN""SOME"})
            .AddRange(New String() {"STATISTICS""SYSTEM_USER""TABLE"})
            .AddRange(New String() {"TABLESAMPLE""TEXTSIZE""THEN"})
            .AddRange(New String() {"TO""TOP""TRAN"})
            .AddRange(New String() {"TRANSACTION""TRIGGER""TRUNCATE"})
            .AddRange(New String() {"TRY_CONVERT""TSEQUAL""UNION"})
            .AddRange(New String() {"UNIQUE""UNPIVOT""UPDATE"})
            .AddRange(New String() {"UPDATETEXT""USE""USER"})
            .AddRange(New String() {"VALUES""VARYING""VIEW"})
            .AddRange(New String() {"WAITFOR""WHEN""WHERE"})
            .AddRange(New String() {"WHILE""WITH""WITHINGROUP""WRITETEXT"})

        End With

        Return Me.m_ReservedWords.ToArray()

    End Function
#End Region

#Region "タイトルを取得"
    ''' <summary>
    ''' タイトルを取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overrides Function GetDefaultTitle() As String
        Return "SQLServer"
    End Function
#End Region

#Region "背景色(タイトル)を取得"
    ''' <summary>
    ''' 背景色(タイトル)を取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overrides Function GetTitleBackColor() As String
        Return BACK_COLOR_TITLE
    End Function
#End Region

#Region "背景色を取得"
    ''' <summary>
    ''' 背景色を取得
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Overrides Function GetBackColor() As String
        Return BACK_COLOR
    End Function
#End Region

#Region "前景色を取得"
    ''' <summary>
    ''' 前景色を取得
    ''' </summary>
    ''' <returns>前景色</returns>
    ''' <remarks></remarks>
    Public Overrides Function GetForeColor() As String
        Return FORE_COLOR
    End Function
#End Region

End Class
[VB.NET]SqlServerCodeConverterToHtml

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

[Review]ゼロからはじめる ドコモ Xperia XZ Premium SO-04J スマートガイド [Book's Review(Book)]

(1)レビュー
最近、妻が、
スマホ(Softbank XperiaZ3)から
スマホ(Docomo XperiaXZ Premium SO-04J)に機種変しました。

スマホの操作自体はさほど変わりはないですが、
使いこなしたいため、ガイドブックを購入したとのことです。

基本的な使い方から、
普段使わない機能まで一通り書いています。

スマホに乗り換えたばかりの方には、
ぜひオススメの1冊です。

(2)リンク
ゼロからはじめる ドコモ Xperia XZ Premium SO-04J スマートガイド

ゼロからはじめる ドコモ Xperia XZ Premium SO-04J スマートガイド

  • 作者: リンクアップ
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/07/29
  • メディア: 単行本(ソフトカバー)



nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

[Review]ゼロからはじめる SoftBank Xperia XZスマートガイド [Book's Review(Book)]

(1)レビュー
最近、友人が、
ガラケーからスマホ(Softbank XperiaXZ)に変えました。

スマホの操作に四苦八苦しているとのことなので、
お手頃なガイドブックをチョイスしました。

かくいう私もスマホ歴2年弱ですが、
購入当初は、私もこのシリーズのガイドブックを重宝しました。

基本的な使い方から、
普段使わない機能まで一通り書いています。

スマホに乗り換えたばかりの方には、
ぜひオススメの1冊です。

(2)リンク
ゼロからはじめる SoftBank Xperia XZスマートガイド

ゼロからはじめる SoftBank Xperia XZスマートガイド

  • 作者: リンクアップ
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/01/11
  • メディア: 単行本(ソフトカバー)

ゼロからはじめる au Xperia XZ SOV34 スマートガイド

ゼロからはじめる au Xperia XZ SOV34 スマートガイド

  • 作者: リンクアップ
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/01/11
  • メディア: 単行本(ソフトカバー)

ゼロからはじめる ドコモ Xperia XZ SO-01J スマートガイド

ゼロからはじめる ドコモ Xperia XZ SO-01J スマートガイド

  • 作者: リンクアップ
  • 出版社/メーカー: 技術評論社
  • 発売日: 2016/12/22
  • メディア: 単行本(ソフトカバー)

タグ:XPERIA

[Eclipse]「この選択をデフォルトとして使用し、今後この質問を表示しない」の解除 [Eclipse Tips]

Eclipseの起動時の「ワークスペース・ランチャー」ウィンドウで
「この選択をデフォルトとして使用し、今後この質問を表示しない」
チェックをいれると、
次回起動時には「ワークスペース・ランチャー」は表示されなくなります。
 ※英語版の場合、チェックの表記は
  「Use this as the default and do not ask again」になります。

備忘録として、
間違えてチェックを入れてしまった場合に備えて、
次回起動時に「ワークスペース・ランチャー」を表示させる手順を載せておきます。

手順(日本語版Eclipseの場合)
①メニューから「ウィンドウ」「設定」を選択して、
 「一般」「開始およびシャットダウン」
 「ワークスペース」を選択する。
「始動時にワークスペースをプロンプト」にチェックして、
 「適用」ボタンをクリックすると、
 次回起動時に「ワークスペース・ランチャー」ダイアログが
 表示されるようになります。


英語版Eclipseについても載せておきます。
手順(英語版Eclipseの場合)
①メニューから「Window」
 「Preferences」を選択して、
 「General」「Start up and shutdown」
 「Workspaces」を選択する。
「Prompt for workspace on start up」をチェックして、
 「Apply」ボタンをクリックすると、
 次回起動時に「Workspace Lancher」ダイアログが
 表示されるようになります。

[Review]超ホーダイ(120本使い放題)|1年版 [Software's Review]

(1)レビュー
最近、妻のPC練習のためにタブレットPC(Windows10)を購入しました。

マウスやキーボードの操作にも慣れてきたので、
そろそろ次のステップとして、
アプリケーションにも慣れてもらおうと思い、
『超ホーダイ』を購入しました。

『超ホーダイ』は5,000円の価格で、
1年間120本のソフトを利用できるというものですが、
付属の『スーパーセキュリティ』を単独購入しても
4,000円の価格なので、
コスト的にもお買い得です。

■利用できるソフト一覧
 http://www.sourcenext.com/service/houdai/titles/

とりあえず、
特打PLUS(タイピング練習ソフト)
特打式Excel編(Excel練習ソフト)
をインストールしてみました。

『特打PLUS』は、
特打シリーズで有名なタイピング練習ソフトですが、
ゲーム感覚で学べるので、飽きずに楽しめる内容です。

『特打式Excel編』は、
実際のExcelと連動して、実機演習もできるスグレモノです。
Excelのバージョンは、2016 /2013 / 2010 / 2007の各々に対応。
※他のOffice製品として、Word編PowerPoint編もあります。

(2)リンク
超ホーダイ(120本使い放題)|1年版| オンラインコード版

超ホーダイ(120本使い放題)|1年版| オンラインコード版

  • 出版社/メーカー: ソースネクスト
  • メディア: Software Download

(3)関連商品
超ホーダイ(120本使い放題)|3年版| オンラインコード版

超ホーダイ(120本使い放題)|3年版| オンラインコード版

  • 出版社/メーカー: ソースネクスト
  • メディア: Software Download
超ホーダイ 3年版(旧版)

超ホーダイ 3年版(旧版)

  • 出版社/メーカー: ソースネクスト
  • メディア: CD-ROM

[Review]スマホのモバイルバッテリー [Hardware's Review]

(1)レビュー
 最近、外出先でスマホを充電する機会が増えたので、
 モバイルバッテリーを新たに購入することにしました。

 妻と2人で外出することが多いので、
 大容量かつ2台同時給電の特長を意識して、
 以下の製品を購入しました。

 Softbank製品ですが、他の機種にも対応しているようです。
 ※詳細は以下リンク参照

 ■モバイルバッテリー
 『Softbank Selection smart energy box 10000』
 (1)対応機種2台への同時給電
    スマホが2台ある時も便利
 (2)約4.5回充電できる大容量バッテリー
    2人で外出しても、外出先で2回充電できます。
    最近はやりの『ポケモンGO』をやるにも十分ですね(笑)

(2)リンク
SoftBank SELECTION smart energy box 10000 SB-SE14-U100/WH

SoftBank SELECTION smart energy box 10000 SB-SE14-U100/WH

  • 出版社/メーカー: ソフトバンク
  • メディア: エレクトロニクス

[VBA]クラスモジュールのインスタンス生成タイミングについて [Programming ExcelVBA]

[はじめに]
VBAは、Javaや.NET系言語程ではありませんが、
オブジェクト指向をサポートしています。

Javaや.NETとの違いの1つとして、
インスタンスの生成タイミングがあります。
Javaや.NETの感覚でコーディングすると間違いに陥りやすいので、
備忘録として記載します。

[インスタンスの生成タイミング]
インスタンスの生成はJavaなどでは、
『New』を指定するとインスタンスが生成されますが、
VBAでは記載の仕方によって、
必ずしも生成されるとは限りません。

例えば、Javaの場合、
newを指定するタイミングでインスタンスが生成され、
その参照が変数に格納されます。
クラスモジュールのインスタンス生成タイミング_java.png
それに対して、VBAの場合は、
Newを指定したタイミングではインスタンスは生成されず、
その変数に初めてアクセス(メソッド呼出しなど)するタイミングで、
インスタンスが生成されます。
クラスモジュールのインスタンス生成タイミング_vba.png
インスタンス生成タイミングの検証として、
下記のコードを実行してみると以下のようになります。
もし、Javaや.NETと同じように
宣言時にインスタンス生成がされるのであれば、
出力結果は、
 (1)インスタンスをNew付で宣言します。
 (a)インスタンスが生成されました。 ★JavaやC#ならこのタイミング
 (2)これからインスタンスにアクセスします。
 (b)MethodA実行中
となるはずですが、
実際は次のようになります。
 (1)インスタンスをNew付で宣言します。
 (2)これからインスタンスにアクセスします。
 (a)インスタンスが生成されました。 ★VBAの場合、初回メソッド実行時
 (b)MethodA実行中
これは、宣言時にインスタンスは作成しておらず、
MethodAを実行する際に、インスタンスが生成していることを示します。

[VBAのコード]
Option Explicit

Private Sub TestA()
    Dim a As New Hoge
    Debug.Print "(1)インスタンスをNew付で宣言します。"
    Debug.Print "(2)これからインスタンスにアクセスします。"
    a.MethodA

    '実行結果
    '(1)インスタンスをNew付で宣言します。
    '(2)これからインスタンスにアクセスします。
    '(a)インスタンスが生成されました。
    '(b)MethodA実行中
End Sub
[VBA]インスタンスの生成タイミングの検証(Hogeクラスの呼出し側)


Option Explicit

Private Sub Class_Initialize()
    Debug.Print "(a)インスタンスが生成されました。"
End Sub

Public Sub MethodA()
    Debug.Print "(b)MethodA実行中"
End Sub
[VBA]インスタンスの生成タイミングの検証(Hogeクラス)


[その他]
 VBAを例に説明していますが、
 VisualBasic6(VB6)系の言語にも同様なことが言えます。

[Review]SEIKO CLOCK (セイコークロック) デジタル ウィークリーアラーム [Hardware's Review]

(1)レビュー
 目覚まし時計の調子が悪くなったので、新たに購入しました。
 指定した時刻にアラームが鳴ってくれさえすればよいので、
 特別な機能は求めていなかったのですが、
 価格の割に便利な機能が搭載されていたので、購入に至りました。

 最近は、スマホにもアラーム機能が搭載されているので、
 時計メーカーもいろんな工夫を凝らしているのかもしれませんね。

 【便利だと思った機能ベスト5】
 (1)アラームを曜日毎に設定できる。(設定も簡単)
    今までは金曜日の就寝前にアラームを無効にしたり、
    日曜日の就寝前にアラームを有効にする必要がありましたが、
    設定の変更が必要なくなりました。
 (2)午前と午後を区別できる。
    午前と午後を区別できないと、起床後にアラームを無効にしたり、
    就寝前にアラームを有効にする必要がありました。
    (1)と同じような理由ですが、
    設定の変更が必要なくなりました。
 (3)電池残量を通知してくれる。
    『気が付いたら時計が止まっていた』ってことがなくなります。
 (4)電波による自動更新。
    今となっては当たり前の機能かもしれませんが、
    時刻を修正する必要がありません。
 (5)温度と湿度を表示。(快適さも表示)
    なくても不便ではないですが、あったら便利です(笑)


(2)リンク

前の30件 | -

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。