お知らせ Mihoko Iijima · 2月 8, 2021

開発者の皆さん、こんにちは!

第10回のグランプリ・プログラミングコンテストの 続報 📣 のテクノロジーボーナスについてご紹介します。

今回のコンテストでは、チームで開発した作品もご応募いただけます!ぜひコンテスト詳細ページもご確認ください!

0
0 95
記事 Megumi Kakechi · 2月 8, 2021 1m read

これは InterSystems FAQ サイトの記事です。
 

システムのパフォーマンスが低下した場合、OSやインターシステムズ製品の様々なツールを使用して情報収集を行い
  ”通常時と比較して、どこがどの程度変わっているか”
を確認することで、問題のある箇所を特定できます。
(逆に、通常時の状況が不明な場合、パフォーマンス問題点の切り分けが非常に困難となる場合もあります。)

いざ という時に備え、通常時のパフォーマンスを確認することは、大変重要な情報となります。


収集情報詳細は、以下のドキュメントをご参照ください。

パフォーマンス調査ガイド

ガイド内でご紹介しているサンプルは、https://github.com/Intersystems-jp/performance-sample からダウンロードいただけます。


パフォーマンス低下時の情報収集ツールについては、以下の関連FAQトピックをご参照ください。

【FAQ】パフォーマンス低下時の情報収集ツールについて教えてください。

0
0 168
記事 Mihoko Iijima · 2月 5, 2021 5m read

これは InterSystems FAQ サイトの記事です。

Java ゲートウェイを使用することで、Java クラスのモジュールを InterSystems IRIS から実行できます。

【メモ】Java ゲートウェイは、外部 Java オブジェクトを InterSystems IRIS 内のネイティブ・オブジェクトと同じようにインスタンス化し、Javaオブジェクトを操作するための方法です。

詳細は以下ドキュメントをご参照ください。
Java ゲートウェイについて

Java ゲートウェイを使用する手順は以下の通りです。

1) Java ゲートウェイサーバを開始する

2) プロキシオブジェクト(ダイナミック・プロキシ・オブジェクト)を作成して Java オブジェクトを操作する

1) Java ゲートウェイサーバを開始する

Java ゲートウェイサーバを開始する方法は 3 種類あります。以下のいずれかの方法で、Java ゲートウェイサーバを開始します。

A) 管理ポータルの「オブジェクトゲートウェイ」を利用する

B) プロダクションにJavaゲートウェイサービスを追加する

C) java コマンドを使用する

A)~C) の方法は以下の通りです。

A) 管理ポータルの「オブジェクトゲートウェイ」を利用する

0
0 497
お知らせ Mihoko Iijima · 2月 1, 2021

開発者の皆さん、こんにちは!第10回目のコンテストが発表されました👏👏

今回は 🏆 InterSystems グランプリ・プログラミングコンテスト 🏆 です!

今回は、いつものコンテストと賞金が異なり 賞金総額:16,000ドルです( ゚Д゚)

応募期間は 2021年2月8日~2月28日 (投票期間は 2021年3月1日~7日、勝者発表は 3月8日)です。

優勝特典

1、審査員から多く票を集めたアプリケーションには、以下の賞金が贈られます。

🥇 1位 - $6,000   

🥈 2位 - $3,000  

🥉 3位 - $2,000

2、開発者コミュニティで多く票を集めたソリューションには、以下の賞金が贈られます。

🥇 1位 - $3,000 

🥈 2位 - $1,500 

🥉 3位 - $500

複数の参加者が同数の票を獲得した場合、全参加者が勝者となり賞金は勝者間で分配されます。

参加資格

どなたでもご参加いただけます!(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます)

コンテストのスケジュール

2月8日~28日 応募期間(Open Exchange へ作成されたアプリケーションをアップロードいただける期間=2週間です。この期間内であればアップロード後も自由に編集できます。)

3月1日~7日 投票(1週間)

3月8日 勝者発表(US時間に発表します)

1
0 197
記事 Toshihiko Minamoto · 2月 4, 2021 6m read

開発者の皆さん、こんにちは!

InterSystems ObjectScript でライブラリやツール、パッケージなどを開発していると、「このパッケージはどうすればターゲットマシンに展開できるのか?」という疑問がよく浮かびます。

また、私たちは、既に別のライブラリがインストールされていることを想定したり、その特定のバージョンのことを考慮したりしながらパッケージを開発しています。

JavaScript や Python などでコーディングを行うと、依存関係を管理しながらパッケージを展開するのに パッケージ管理システム が必要になります。

これを踏まえ、 InterSystems ObjectScript Package Manager のリリースを発表したいと思います!

0
0 336
記事 Megumi Kakechi · 2月 2, 2021 2m read

これは InterSystems FAQ サイトの記事です。


※こちらの方法は、ミラーリング、シャドウイング、またはその他のメカニズムを使用して複製したデーターベースを比較したい場合に利用します。

グローバル変数の比較には、DATACHECKユーティリティを利用できます。以下ドキュメントをご参照ください。
DataCheckの概要【IRIS】

DATACHECK ユーティリティの実行サンプルは、添付のPDFをご覧ください。
 

***

ルーチンの比較は、システムルーチン %RCMP か、管理ポータルを使用します。

以下は、管理ポータルでの使用方法になります。

  例えば、以下ルーチンがUSERネームスペースにあるとします。

test() public{
 quit "hello"
}

以下ルーチンがUSER2ネームスペースにあるとします。

test() public{
 quit "こんにちは"
}

以下は、USERネームスペースに接続したターミナルで %RCOM を実行した結果になります。

※ Compare: にルーチン名を記述し、 with: に比較したいルーチン名を記載します。
  別ネームスペースにあるルーチンを指定する場合は |"ネームスペース名"|ルーチン名.MAC で指定します。

0
0 410
記事 Toshihiko Minamoto · 2月 2, 2021 9m read

この記事は Caché データベースの内部構造を説明したこちらの記事の続編です。 そちらの記事では、様々なブロックタイプ、それぞれのつながりやグローバルとの関係について説明しました。 純粋に理論を述べた記事でした。 ブロックツリーを視覚化するのに役立つプロジェクトを作成しましたので、この記事ではその仕組みを詳しく説明します。

0
0 309
記事 Megumi Kakechi · 2月 1, 2021 1m read

これは InterSystems FAQ サイトの記事です。
 

下記のWebゲートウェイのエラーメッセージ/システム応答に対して、個別のエラーページを設定することができます。

  • サーバエラー
  • サーバビジー
  • サーバが利用可能ではありません
  • サーバタイムアウト
  • 接続が閉じられました

設定は、Webゲートウェイ管理画面( [管理ポータル] > [システム管理] > [構成] > [Webゲートウェイ管理] )で行います。

[デフォルトパラメータ] メニュー内の [エラーページ] セクションで、各エラー発生時に表示させるhtmlページのファイル名またはリダイレクトさせるURLを設定します。

 

※Webゲートウェイ管理画面は、下記URLからもアクセス可能です。

http://<Webサーバアドレス>:<ポート>/csp/bin/Systems/Module.cxw

詳細は、以下ドキュメントをご参照ください。
カスタムエラーページについて【IRIS】
 

0
0 319
記事 Hiroshi Sato · 2月 1, 2021 1m read

これは InterSystems FAQ サイトの記事です。
 

$IsObject()を使用して判別できます。 調べたい変数をvとすると、

$IsObject(v)=1 // vはOREF
$IsObject(v)=0 // vはOREFではない
$IsObject(v)=-1 // vはOREFだが、有効なオブジェクトを指していない

となります。

vが未定義の場合は、$IsObject(v)はUNDEFINEDエラーとなりますので、ご注意ください。

UNDEFINEDエラーを防止するには、次のように$Getを使用することをお勧めします。

$IsObject($Get(v))
0
0 299
記事 Hiroshi Sato · 2月 1, 2021 1m read

これは InterSystems FAQ サイトの記事です。
 

ドキュメント上は明確に記述されていませんが、エクスポートの追加ボタンを押した時に表示されるファイルダイアログのファイル名にグローバル名 + .GBLと入力することでグローバルをエクスポートの対象にすることができます。
(例: ^aaaの場合、^aaa.gblと指定)

この機能はクラス、ルーチン等と一緒にグローバルデータを一括してエクスポート/インポートする際に、便利な機能ですが、XMLで表現されるため、データ容量は実データに比較し大きくなりますので、大量データを処理する場合には必要な容量に注意が必要です。

0
0 360
お知らせ Mihoko Iijima · 2月 1, 2021

開発者の皆さんこんにちは!

第9回 InterSystems IRIS プログラミングコンテスト(マルチモデルコンテスト) への応募、投票が全て終了しました。コンテストへのご参加、またご興味をお持ちいただきありがとうございました。

今回のお知らせでは、見事受賞されたアプリケーションと開発者の方々を発表します!

🏆 Experts Nomination  - 特別に選ばれた審査員から最も多くの票を獲得したアプリケーションに贈られます。 

🥇 1位 - $2,000 は  iris-image-index-demo を開発された @José Roberto Pereira さんに贈られました!

🥈 2位 - $1,000 は zapm を開発された @Sergey Mikhailenk さんに贈られました!

🥉 3位 - $500 は iris-multimodel-suite を開発された @Renato Banzai さんに贈られました!

🏆 Community Nomination - 最も多くの票を獲得したアプリケーションに贈られます。

🥇 1位 - $1,000 は HealthInfoQueryLayer を開発された @Botai Zhang さんに贈られました!

0
0 90
記事 Mihoko Iijima · 2月 1, 2021 3m read

開発者のみなさん、こんにちは!

IRIS プログラミングコンテストでは、💨すぐに💨開発を開始いただけるようにコンテナ版 IRIS を利用した「開発環境テンプレート」をご提供してしていました。

終了したコンテストにはご応募いただけませんが、テンプレートは「ちょっと試したい」「加工して自分オリジナル環境を作りたい」の目的にぴったりの内容です。

また、全て Open Exchange で公開されていて、Docker、Git、VSCode をインストールした環境があればすぐにご利用いただけます。

テンプレートの使用方法については、各コンテストの紹介ページでご案内しています(日本語解説ビデオ付きもあります)。

基本は以下 3 行だけで開始できます。(とっても簡単!)

git clone <ここにテンプレートのURL>

cd <作成されたディレクトリ>

docker-compose up -d --build

 

ご興味ある内容ありましたら、ぜひお手元で試してみてください!

0
0 361
記事 Mihoko Iijima · 1月 29, 2021 4m read

これは InterSystems FAQ サイトの記事です。

%SYS.Journal.File クラスの ByTimeReverseOrder クエリ と %SYS.Journal.Record クラスの List クエリを使用して検索することができます。

それぞれのクエリの役割は以下の通りです。

A) %SYS.Journal.File クラスの ByTimeReverseOrder クエリ

ジャーナルファイル名を取得できます。ジャーナルファイル名の降順で結果が返ります。​​

0
0 492
記事 Mihoko Iijima · 1月 29, 2021 2m read

これは InterSystems FAQ サイトの記事です。

システム提供の %SYS.GlobalQueryクラス の Size クエリーを使用することで取得できます。

使用例は、以下のサンプルコードをご参照ください。
※カラムやパラメータの指定はクラスリファレンスをご確認ください。

 set dir="C:\intersystems\iris\mgr\user" // IRIS.DAT(またはCACHE.DAT)フォルダ
 set rs = ##class(%ResultSet).%New("%SYS.GlobalQuery:Size")
 do rs.Execute(dir) // 第3引数でマスク指定も可
 while (rs.Next()) { 
   set gname= rs.Get("Name") // グローバル名
   set gsize= rs.Get("Used MB") // グローバルサイズ(MB)
   write gname," : ",gsize,!
 }

 

グローバル変数のサイズが大きい場合、取得時間がかかる場合もあります。その場合、Size クエリー 実行時、第 6 引数に 1 を指定してクエリを再実行してみてください。

0
0 407
記事 Henrique Dias · 1月 28, 2021 3m read

2020年に世界を襲ったパンデミックの影響で、COVID-19のニュースや数字をみんなでフォローするようになりました。

これを機に、世界の予防接種の数を追いかけて、シンプルで楽しいものを作ってみてはいかがでしょうか。

この課題に立ち向かうために、私はOur World in Dataで提供されたデータを利用しています。世界最大の問題を解決するための研究とデータ。

Github上にCOVID-19のデータで専用のリポジトリを用意してくれていて、そのワクチンのデータを持ってトラッカーを手伝ってくれました。

もしあなたが彼らを知らなかったら、それをチェックしてみてください、それはあなたにとって価値ある時間です。 Github repository

アプリケーション iris-vaccine-trackerには、3つの異なるページがあります。

  1. メインダッシュボード
  2. ダッシュボードに表示されている詳細情報のデータ表
  3. ヒートマップ

ダッシュボード

メインダッシュボードでは、世界中の予防接種の状況を簡単に知ることができます。

最初のウィジェットは:

  • ワクチンを何本接種しているのか
  • ワクチン接種に関する情報を提供している国はどれくらいあるのか
  • これまでに申請した予防接種の合計。

2つ目のウィジェットでは、最も重要な予防接種数の多いトップ10の国の予防接種を時系列で見ることができます。

2
0 174
記事 Toshihiko Minamoto · 1月 28, 2021 4m read

独自の組織データアーキテクチャを書き、InterSystems IRIS にマッピングする必要がある場合は、以下にご紹介するデータアーキテクチャダイアグラムおよび InterSystems IRIS ドキュメンテーションのリファレンスに記載されている内容を考慮してください。

アーキテクチャマッピング

  • SQL データベース: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GSQL
  • 管理されるファイル: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=AFL_mft および https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=SETEDIGuides
  • IoT ブローカー、イベント、センサー: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=EMQTT
  • メッセージ: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=EMQS
  • 0
    0 225
    質問 Taro Yamada · 1月 28, 2021

    皆さんこんにちは。

    以下のメソッドでは日付の入った配列を受け取り、すべてのYYYY-MM-DD形式の
    日付を$horologに変換しているのですが、たまに日付が古すぎるものが入っており
    <VALUE OUT OF RANGE>エラーが発生して途中で止まってしまいます。
    エラー時にエラーメッセージを代入してそのまま継続できる方法はないでしょうか?

     

    プログラムは以下の通りです。

    Class DC.Sample Extends %RegisteredObject [ Language = objectscript ]
    { 
    /// 配列に入っているYYYY-MM-DD形式の日付を$horologに変換する
    ClassMethod TransDate(array) As %Status
    {
    set key="" for {
       set key=$order(array(key),1,data)
       quit:key=""
    
       set array(key)=$zdh(data,3)
    }
    quit $$$OK
    } 
    }

    よろしくお願いいたします。

    2
    0 829
    お知らせ Makiko Kokubun · 1月 28, 2021

    開発者のみなさん、こんにちは!

    インターシステムズは、2/16(火)~ 2/18日(木)の3日間にかけて、オンラインカンファレンス「InterSystems Japan Virtual Summit 2021」を開催致します。

    ⚡️ 現在、事前登録受付中です! ⚡️
     

    テーマは「データプラットフォーム最前線 ニューノーマル時代に求められるアジリティとレジリエンス」です。
    InterSystems IRIS 、IRIS for Health の最新技術情報を多くのセッションを通してお届け致します。ぜひご参加ください。*本セミナーは日本語での開催となります。

      InterSystems Japan Virtual Summit 2021

    DAY1 2/16(火)10:00-11:40 

    • 基調講演:適応力と柔軟性を高めるデータプラットフォームの最新情報について

    DAY2 2/17(水)15:00-17:30

    • 先進データテクノロジーセッション:既にインターシステムズ製品をお使いの方向けに、IRISへのマイグレーションやパフォーマンスについての技術セッション
    • HL7® FHIR® によるインターオペラビリティセッション: FHIR の概要や最新情報と、IRIS for Healthでの医療データ共有、最新機能について

    DAY3 2/18(木)15:00-17:15

    0
    0 163
    記事 Hiroshi Sato · 1月 27, 2021 1m read

    これは InterSystems FAQ サイトの記事です。
     

    InterSystems ObjectScript言語では引数の異なる同名のメソッドを定義することはできません。

    InterSystems ObjectScript言語は一般的に動的言語と呼ばれるプログラミング言語に分類されます。

    ObjectScriptではメソッド実行時にどの引数を使用するかどうかは自由に制御可能ですので、動的プログラミング言語ではないJava等の言語と異なり、コンパイルの段階で厳密に引数の数でメソッドを区別する必要がありません。

    従って ObjectScript言語は、オーバーロードと一般に呼ばれる言語仕様を含んでいません。

    Java等で記述されたプログラムを移植する際にオーバーロード相当の機能を実現するには、

    ClassMethod test(args... as %String)

    のように引数の後ろに ... を付加します。

    これにより、可変長引数を渡すことが可能です。

    このメソッドに複数の引数が渡された場合は、args(1)=第一引数 args(2)=第二引数というように順次設定されます。

    これを使用して、メソッドコード中で渡された引数の個数を取得して処理を分岐させることができます。

    ※ただし、引数のデータタイプを判別することはできません。

    0
    0 282
    記事 Hiroshi Sato · 1月 27, 2021 4m read

    これは InterSystems FAQ サイトの記事です。
     

    クラス定義のプロパティの表示順は、スタジオのプロパティウィザードを利用して登録した場合は、末尾に追記されます。

    また、エディタ上の任意の場所でプロパティ定義文を記述する場合は、その場所に追記され、クラス定義が登録されます。


    つまり、定義者が記述した順番に登録されます。

    (スタジオが並び換えを行ったりはしません。)

    作成したクラス定義が、PersistentやSerialのようにデータベースに格納する属性を持ったクラス定義である場合、”初回のコンパイル”で クラス定義に対応するグローバル変数の定義情報=ストレージ定義を作成します。

    初回コンパイル以降に、プロパティ定義の追加が行われれば、そのプロパティに対応するグローバル変数のスロット番号を、末尾に追加し、ストレージ定義を更新します。

    以下の例は、クラス定義に対応するストレージ定義の例です。

    (初回コンパイル時の状態)

    0
    0 176
    記事 Hiroshi Sato · 1月 27, 2021 1m read

    これは InterSystems FAQ サイトの記事です。
     

    一括コメントを付与したい行全体を選択後、Ctrl + / を入力することで、選択範囲を一括でコメントにすることができます。

    コメントの一括解除には、コメントを解除したい行全体を選択後 Ctrl + Shift + / を入力します。

    0
    0 446
    お知らせ Makiko Kokubun · 1月 26, 2021

    開発者の皆さん、こんにちは!

    InterSystems 開発者コミュニティでは、2021/2/5(金)に、ウェビナーを開催致します。
    今回は、初めてインターシステムズのデータプラットフォーム製品をご覧になるソフトウェアエンジニアの方向けに、弊社のエンジニアが 30分でその特徴をご紹介します。

      

    ウェビナー「InterSystems IRIS データプラットフォーム 概要」

    • 日時:2021年2月5日(金)15:00~15:30
    • 参加費:無料(事前登録制)

    事前登録、ウェビナ配信はこちら(ON24を使用します)
    https://event.on24.com/wcc/r/2982378/17DE6BE0C44C34513F10A8D7C7B68FB0

    以下のような開発者の方におすすめです。

    • 初めてインターシステムズのデータプラットフォーム製品をお使いになる方、ご興味のある方
    • 新しいデータプラットフォームを試してみたい方
    • Caché から IRIS への移行をご検討中の方

    ぜひご視聴ください!

     

    0
    0 223
    記事 Toshihiko Minamoto · 1月 26, 2021 7m read

    2019年 10月 17日

    Anton Umnikov
    InterSystems シニアクラウドソリューションアーキテクト
    AWS CSAA、GCP CACE

    AWS Glue は、完全に管理された ETL (抽出、変換、読み込み) サービスです。データの分類、クリーンアップ、強化、そして様々なデータストア間でデータを確実に移動させるという作業を簡単にかつコスト効率の良いかたちで行えるようにするものです。

    InterSystems IRIS の場合、AWS Glue を使用すれば、大規模なデータをクラウドとオンプレミスのデータソースの両方から IRIS に移動させることができます。 ここで考えられるデータソースは、オンプレミスのデータベース、CSV、JSON、S3 バケットに保管されている Parquet ファイルならびに Avro ファイル、AWS Redshift や Aurora といったクラウドネイティブのデータベースを含みますが、これらに限定されません。

    0
    0 716
    お知らせ Mihoko Iijima · 1月 25, 2021

    開発者の皆さん、こんにちは。

    第9回 IRIS プログラミングコンテスト(マルチモデルコンテスト)の投票が開始されました!

    🔥 これだ!と思う一押し作品に投票お願いします! 🔥

    投票期間:1月25日~31日(1週間)

    投票方法は?
    Expert Nomination または Community Nomination を選択いただき、どの作品がどの順位になるかを指定しながら投票します。

    Community Leaderboard:

    順位 ポイント
    1位 3点
    2位 2点
    3位 1点

    そして、エキスパートノミネーションからの投票は以下の通りです(エキスパートのレベルが上がると獲得できるポイントも増えます!)。

    Experts Leaderboard:

    エキスパートレベル

    順位
    1位 2位 3位
    GM、モデレーター、プロダクトマネージャーのVIPレベル 9点 6点 3点
    グローバルマスターズのエキスパートレベル 6点 4点 2点
    グローバルマスターズのスペシャリストレベル 3点 2点 1点

    エキスパートリーダーボードの投票はコミュニティリーダーボードにもポイント(1位3点、2位2点、3位1点)が加算されます。

    投票方法について

    0
    0 92
    記事 Toshihiko Minamoto · 1月 21, 2021 9m read

    InterSystems Caché のグローバルは、デベロッパーにとって非常に便利な機能を提供します。 しかし、グローバルが高速な上に効率が良いのはなぜでしょう?

    理論

    基本的に、Caché データベースとは、データベースと同じ名前を持ち、CACHE.DAT ファイルを含んだカタログのことです。 Unix システムでは、このデータベースを普通のディスクパーティションにすることもできます。

    Caché のデータはすべてブロックとして保管され、バランスド B* ツリーとして整理されます。 基本的にすべてのグローバルがツリーに保管されると考えると、グローバルのサブスクリプトはツリーの枝を意味する一方で、グローバルのサブスクリプトの値はツリーの葉として保管されると言えます。 バランスド B* ツリーと通常の B ツリーの違いは、前者の枝には $Order$Query の両関数を使ってサブスクリプト (この記事ではグローバル) のイテレーションをスピーディに実行するのに役立つ適切なリンクがあり、ツリーの幹に戻る必要がないという点です。 

    0
    1 557
    記事 Toshihiko Minamoto · 1月 19, 2021 6m read

    みなさん、こんにちは。

    前回の記事では1個のBME280で気象データを取得したのですが、気温のブレが大きかったので基板から
    ただ、基板につけたBME280のはんだを外すのが大変なので、別のBME280を外付けすることにしました。
    当初、ESP8266の別のIO端子と接続することを考えていたのですが、Wire.hが複数のバスに対応していない
    ため、以下の配線図のようにカスケード接続することにしました。

     

    カスケード接続するということは、外付けのBME280でI2Cのアドレスを変えないといけません。幸いBME280は0x76と0x77の切り替えができるようです。
    こちらの資料を見ると、基板上に3つの端子があり、左2つがつながると0x76,右2つがつながると0x77になるそうで、左2つの端子はつながっているので、ナイフで切断しなさいとなっていました。
    で今回購入したセンサーを見ると、端子はあるけど左2つの端子の間はつながっていません。よく見るとセンサーの左下の端子の左側がつながっており、これで左2つの端子がショートしていることになります。
     
    なので、センサーの左下端子の左側をカッターで切断しました。ルーペが無かったので、カミさんのスマホスタンドを借りて、スマホのカメラで拡大しながら、慎重に切断、テスターで抵抗値を確認... 50歳を過ぎたオッサンの作業としては非常に辛いものとなりました(笑)。

    0
    0 982
    記事 Toshihiko Minamoto · 1月 19, 2021 5m read

    皆さん、こんにちは。
    寒い日が続きますね。
    前々回の記事でDHT11とBMP180を使って作成したのですが、実際に外に置いて計測してみると、氷点下の場合、12~13℃となってしまい、正しく計測できませんでした。(先にデータシートを確認しておけばよかったのですが、DHT11、BMP180共に0℃以上になっていました...)
    そこで代わりのセンサーが無いか探していたところ、BME280というセンサーが見つかりました。-40℃から85℃まで測れ、BMP180と同じBosch製で値段も数百円。

    センサーモジュールはBMP280と共用の基板で、どちらなのか印がなく、湿度が測れるのかどうかちょっと心配していましたが、注文通りBME280だったらしく、湿度も測れました。
     配線図は以下のようになります。BMP180と同様にI2Cで接続しています。また、今回は別のESP8266とユニバーサル基板を使って配線をやり直すついでに電源をUSB給電から3Vの電池にしています。
     

    0
    0 804
    記事 Toshihiko Minamoto · 1月 19, 2021 7m read

    デバッガーは使わないという人はいますか? 最後に使ったのはいつだったか、記憶にないですね。 それは、嫌いだからではなくて、単に必要ないからなんです。 その一番の理由は、ある種の開発手法を使っているおかげで、バグの発生を少なく抑えたり、単体テストのレベルで発見したり、バグをとても簡単に追跡できたりするからです。

    以下にいくつかヒントを紹介します...

    1. 独自の COS チートシートを作成する。

    これは主に COS の初心者が対象になります。 バグを引き起こす大きな原因の一つとして、特定のコマンドや関数の動作を理解していないということがあります。 時間をかけて言語を学び、そのすべてのバリエーションを試すことをおすすめします。 それから独自のチートシートを作成することで、知識が固まり、さっと使えるレビューツールも出来上がります。 生産性アップにつながるほか、避けられるはずのバグをうっかり書いてしまう頻度を確実に減らすことができます。

    2. スタジオで「変数の追跡」をオンにする

    まだオンにしていない方は、スタジオの 「 ツール 」「 オプション 」メニューにて、「 環境」フォルダの「クラス」と順に移動し、「変数を追跡する」のチェックボックスにチェックを入れてください。 宣言時に初期化されていない変数を使用する場合は、その変数の下に波線が引かれます。 このおかげで、うっかりタイプミスはありません。

    0
    0 166