2023年1月2日月曜日

chatGPTを試してみた

 日本語も使えるAIチャットが話題になっているので、試してみた。HF帯用のリニアアンプを改良中なので、関連質問をしてみたら、若干わかりにくいものの、ある程度正しい?かもしれない雰囲気の回答が返ってきた。

Q:HF帯のリニアアンプの終段は常にオンにしておくか、送信時のみオンにするか、どちらがいいでしょうか

A:HF帯のリニアアンプの終段を常にオンにしておくことによって、送信時にアンプをスイッチングする必要がなくなるため、送信の準備が楽になります。ただし、リニアアンプの終段を常にオンにしておくと、発熱が問題となることがあります。また、リニアアンプの終段を常にオンにしておくと、無駄な電力を消費することになるため、費用面でも懸念されることがあります。

そのため、送信時のみオンにする方が、発熱や電力消費の問題を避けることができるため、一般的にはこのような使い方が好まれる傾向にあります。ただし、送信時のみオンにする場合は、アンプをスイッチングするためのスイッチや、リニアアンプをスムーズにスイッチングするためのパワースプリッタなどが必要になるため、送信の準備がやや面倒になることがあります。

最終的には、リニアアンプの終段を常にオンにしておくか、送信時のみオンにするかは、使用者の環境や使い方によって異なります。まずは、使用する環境や使い方を考慮して、最も適切な使い方を検討することが重要です。

Q:パワースプリッタとはどんな働きをするものですか

A:パワースプリッタは、通常、無線機の送信出力を分割し、リニアアンプの終段を送信時にだけオンにするために使用されます。

送信出力を分割することで、無線機とリニアアンプの終段を別々に制御することができるようになります。これにより、無線機から送信信号を受け取っている時には、リニアアンプの終段はオフの状態であり、送信信号が無い時には、リニアアンプの終段がオンの状態であるようにすることができます。

パワースプリッタは、無線機とリニアアンプの終段を直接接続することで、送信信号を分割し、リニアアンプの終段を送信時にだけオンにすることができるようになるため、送信準備が楽になるとともに、リニアアンプの終段を常にオンにしておくことによる問題を避けることができます。

2023年1月1日日曜日

奇跡の社会科学

 中野剛志氏の本2冊目を読んでみた。

マックスウエーバー:なぜ組織改革は失敗するのか、効率性の追求が非効率を生む、数値だけで測定できない価値、

エドマンド・バーク:インクリメンタリズムこそ現実社会を大きく変える

トクヴィル:民主政治の怖さ、平等が進むほど全体主義化する

デュルケーム:人間には共同体との絆が必要

ケインズ:危険なものは既得権益でなく思想


世界インフレと戦争

  中野剛志氏の本は、理解しやすく読みやすいので正月休みを利用して読んでみた。

・最近の物価高騰は、デマンドプルインフレでなく、コストプッシュインフレの性格が強い。

・グローバリゼーションの終焉が背景にある。このようなときは、安全保障の強化や財政支出の拡大が必要。

戦時経済というとものものしいが、エネルギー、食糧、先端技術、医薬品・医療機器、その他生活必需品に至るまで、グローバリゼーションの下で効率性と利益だけを求めて世界中に展開されたサプライチェーンを、安全保障の観点から再構成を、、、

内需拡大。大きな政府。ただし、政府に大きな財政支出の裁量を与えると、政府と政治家や企業との癒着、不正、利益誘導といった弊害が大きくなるというリスク。透明性、説明責任を担保する制度的な仕組みを設け、監視を強めることも必要。政府の高い能力が不可欠。

2022年12月26日月曜日

lan-sw16p/maのコンデンサ交換

 ハブが調子悪かったので、新品にかえてもらったが、不具合のあるほうを、試しにコンデンサチェックしてみた。すると、470uF 16V 一個が、はんだごてで とりはずそうとすると、なぜか、ピンがするっとぬけてしまう。コンデンサからピンが抜けるのは、加熱したからと言って、あまり経験したことがない。もう1個、470uFがあったので、合計2個、手持ちの電解コンデンサと交換してみた。とりあえず、動作はOk,あとは、不安定にならないかどうか、試しに使ってみてもいいかもしれない。これで直ったら、もうけものだが。

 ちなみに、ぬけたピンをさして、容量を測定してみても、容量抜け?だろうか、0だった。接触不良の可能性もあるが。

2022年12月22日木曜日

Gasで血圧記録

 gasで即席でつくってみた。値を選択式にすると、もう少し使いやすかも。

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
      <script src="https://code.jquery.com/jquery-3.6.1.slim.min.js"  integrity="sha256-w8CvhFs7iHNVUtnSP0YKEg00p9Ih13rlL9zGqvLdePA="  crossorigin="anonymous">
      </script>
  </head>
  <body>
    <div  style="font-size:large;">
    <input type="text" id="hiduke" value="" style="font-size:large;">
    <input type="text" id="jikoku" value="" style="font-size:large;">
    <br>High
    <input type="text" id="high" value="" style="font-size:large;"><br>
    Low
    <input type="text" id="low" value="" style="font-size:large;"><br>
    脈
    <input type="text" id="myaku" value="" style="font-size:large;">
    <button id='Enter' onclick="Enter()">保存</button>
    <div id="msg"></div>
    </div>
    <div><a href="https://docs.google.com/spreadsheets/d/シートID/edit#gid=0">シート</a></div>
  </body>
</html>
<script>
   window.onload =   function(){   
    let today=new Date();
$('#hiduke').val(formatDate_dateOnly(today));
$('#jikoku').val(formatDate_jikoku(today));
   }


function formatDate_jikoku(dt) {
  var y = dt.getFullYear();
  var h=('00' + dt.getHours()).slice(-2);
  var mi=('00' + dt.getMinutes()).slice(-2);
  return (h+':'+mi);
}

function formatDate_dateOnly(dt) {
  var y = dt.getFullYear();
  var m = ('00' + (dt.getMonth()+1)).slice(-2);
  var d = ('00' + dt.getDate()).slice(-2);  
  return (y + '/' + m + '/' + d);
}

function Enter() {
        let hiduke =$('#hiduke').val();
         let jikoku =$('#jikoku').val();
          let high =$('#high').val();
           let low =$('#low').val();
            let myaku =$('#myaku').val();
            google.script.run.withSuccessHandler(onSuccess).withFailureHandler(onFailure).Set(hiduke,jikoku,high,low,myaku); 
  }
  function onSuccess(res){
    $('#msg').text(res);
  }
  function onFailure(res){
     $('#msg').text(res);
  }

  </script>

*****************
function doGet(e) {
  return HtmlService.createTemplateFromFile("index").evaluate();
}


function Set(hiduke,jikoku,high,low,myaku) {

  let spreadSheet = SpreadsheetApp.openById(シ-トID);
   let sheet = spreadSheet.getSheetByName('シート1');

   let lastrow = sheet.getLastRow();

   sheet.getRange(lastrow+11).setValue(hiduke);
   sheet.getRange(lastrow+12).setValue(jikoku);
   sheet.getRange(lastrow+13).setValue(high);
   sheet.getRange(lastrow+14).setValue(low);
   sheet.getRange(lastrow+15).setValue(myaku);


   return "送信済み"
  }

2022年12月11日日曜日

GASによるグループウエア

 グループウエアをGASで作ってみた。

データベースが使えないので、いろいろ制限があり大変だった。無料だから仕方ないとは思う。

回覧メッセージの未読チェック機能をスプレッドシートで、宛先の選択の工夫をJqueryで、という具合に。

表示遅い分少しでも、和らぐようにSPAにしてみた。

エクセルは、PCのGdriveリンクを共有で使うようにして、エクセルからスプレッドシートへの変換は、トリガーで毎分変更をチェックしながら行っている。

その他、文字修飾可能にすること、メッセージを2週間分に制限するため、自動削除機能をつけたこと。削除までの日数は、投稿者が選択できるようにしたこと。メッセージは、必要に応じて、GmailにPDFで送って、自分で保管もできるようにしたこと。

 等々、いろいろ対処したおかげで、完成まで数か月かかった。あと少し調整が必要かも。残念ながら、OSのせいか、自分のPCでは、C#のツールチップによる未読お知らせ機能を入れようとしたが、なぜか反応しない。仕方ないので、画面はFormにして、透明度を時間とともに変えるような実装にした。また、GASで作ったサイトをWebAPIとして、C#から読み取ろうとしたが、非常に面倒なのであきらめた。Gdriveにユーザーごとのファイルを作成して、それを経由して未読情報を、Gdriveの共有から読み取るようにしてみたらなんとかうまくいった。力技という感じだが、そもそもGASという言語を使っているので、このぐらいは仕方ないのでないかと思う。

2022年11月3日木曜日

jquery 動的にイベント追加

 appnedした場合、動的なイベントの追加には、工夫がいるようだ。

$("親要素").on('click', '該当する要素', function(e){

  var tmp=e.target.id;

});

のように利用できる。

ちなみに、以下の方法はだめだった。

$("該当する要素").change(function(e) {

  var tmp=e.target.id;

 });