暫く続くと思ったらRISC-Vにが来ていた。
カテゴリー: ニュース
ニュース
function executeJavascript() { return "Execute JavaScript." } function sendFlutterApp() { flutterJavaScript.postMessage("Post message from JavaScript.");
import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Javascript Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: const MyHomePage(title: 'Flutter Javascript Demo Home Page'), ); } } class MyHomePage extends StatefulWidget { const MyHomePage({Key? key, required this.title}) : super(key: key); final String title; @override State<MyHomePage> createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { late WebViewController _controller; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: WebView( onWebViewCreated: (WebViewController webViewController) async { _controller = webViewController; // 生成されたWebViewController情報を取得する }, initialUrl: 'https://mymyser.com/flutterjs.html', javascriptMode: JavascriptMode.unrestricted, javascriptChannels: { JavascriptChannel( name: 'flutterJavaScript', onMessageReceived: (result) async { print(result.message); }, ) }, ), floatingActionButton: FloatingActionButton( onPressed: _executeJavascript, ), ); } Future<void> _executeJavascript() async { String result = await _controller.runJavascriptReturningResult('executeJavascript()'); print(result); } }
function js2Dart(message) { console.log(message); window.postMessage(message, "*"); } function js2Swift(message) { console.log(message); webkit.messageHandlers.js2Swift.postMessage(message); } function js2Java(message) { console.log(message); Android.js2Java(message); } function js2Native(message) { console.log(message); const ua = navigator.userAgent if (/android/i.test(ua)) { js2Java(message) } else if (/iPad|iPhone|iPod/.test(ua)) { js2Swift(message) } }
window.addEventListener("message", (event) { _incrementCounter(); });
void _dart2Js() { _incrementCounter(); setState(() { context.callMethod('js2Native', ['dart2Js']); }); } floatingActionButton: FloatingActionButton( onPressed: _dart2Js, tooltip: 'Increment', child: const Icon(Icons.add), ),
@Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState ) { binding = FragmentFirstBinding.inflate(inflater, container, false); webView = binding.webView; webView.addJavascriptInterface(new WebAppInterface(getContext()), "Android"); webView.setWebChromeClient(new WebChromeClient()); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient()); webView.loadUrl("https://demo.mymyser.com/index.html"); return binding.getRoot(); } public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); binding.button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { webView.loadUrl("javascript:postMessage('Send Native Message.');"); } }); }
@JavascriptInterface public void js2Java(String message) { Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); }
let config = WKWebViewConfiguration() let userContentController: WKUserContentController = WKUserContentController() userContentController.add(self, name: "js2Swift") config.userContentController = userContentController webView = WKWebView( frame: CGRect(x: 0, y: 64, width: view.frame.size.width, height: view.frame.size.height-64), configuration: config )
@IBAction func onClickButton (_ sender: UIButton) { webView?.evaluateJavaScript("js2Dart('Send Native Message');", completionHandler: { (object, error) -> Void in print("⭐️:Send Native Message") }) }
extension ViewController: WKScriptMessageHandler { func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { if(message.name == "js2Swift") { print("⭐️: \(message.body)") } } }
ChatGPTに聞いてみた。
M80C85A-2は、インテル社の8ビットマイクロプロセッサ、8085の互換品であり、8085のアセンブリ言語で書かれたプログラムを実行できます。M80C85A-2は、クロック周波数が最大5MHzで動作し、最大64KBのメモリをサポートします。また、内蔵の割り込みコントローラとシリアルインタフェースを備えています。
M80C85A-2は、8ビットのデータバス、16ビットのアドレスバス、3つの8ビット汎用レジスタ、1つの16ビットスタックポインタレジスタ、1つのプログラムカウンタ、8ビットの割り込みマスク、8ビットの割り込み優先度など、8085と同様のアーキテクチャを持ちます。しかし、M80C85A-2は、8085に比べていくつかの改良が施されており、パフォーマンスが向上しています。
M80C85A-2は、マイクロコントローラや組み込みシステムなどで使用されます。しかし、最近では、より高性能で低消費電力のマイクロプロセッサが普及しており、M80C85A-2のような古い製品はあまり使用されなくなってきています。
TMP8085AP-2
ChatGPTにこれは何か聞いてみた。
User
TMP8085AP-2は何ですか。
ChatGPT
TMP8085AP-2は、インテル8085マイクロプロセッサのクローンです。インテル社が開発した8085は、8ビットのマイクロプロセッサであり、広く使用されてきました。TMP8085AP-2は、同じピン配置と互換性を持ちながら、8085と同等のパフォーマンスを提供するように設計されたクローンです。
TMP8085AP-2は、8ビットのデータバス、16ビットのアドレスバス、3つの8ビット汎用レジスタ、1つの16ビットスタックポインタレジスタ、1つのプログラムカウンタ、8ビットの割り込みマスク、8ビットの割り込み優先度など、8085と同様のアーキテクチャを持ちます。
このマイクロプロセッサは、最大4MHzのクロック周波数で動作し、最大で64Kバイトのメモリ空間にアクセスすることができます。また、内蔵の割り込みコントローラを備えており、高速で正確な割り込み処理が可能です。
TMP8085AP-2は、8085と互換性があり、8085のアセンブリ言語で書かれたプログラムをそのまま実行することができます。そのため、8085を使用していたシステムを、より安価な代替品に置き換える場合に便利です。しかし、最近では、より高性能で低消費電力のマイクロプロセッサが普及しており、TMP8085AP-2のような古いクローンはあまり使用されなくなってきています。
回転走査と回転照合は傾きに耐性がある
と思いChatGPTに聞いてみた。
User
微細加工で波形を記録すればアナログ記憶が出来るかもと思うのですがいかがですか。
ChatGPT
微細加工を使用して波形を記録するアイデアは面白いですね。これはアナログ記憶の一種と言えるかもしれません。微細加工技術を利用して波形を物理的に記録する方法は、一部のアプリケーションで有用かもしれません。たとえば、センサーデータや環境モニタリングに応用できるかもしれません。
しかし、このアプローチにはいくつかの課題も考える必要があります。記録された波形の読み出しや再生、長期間の保存、およびデータの効率的な取り扱いが挙げられます。また、デジタル記憶と比べて情報の変更や編集が難しい場合もあります。
具体的な用途や要件によっては、このアイデアが適しているかどうか検討する必要があります。システムエンジニアとして、詳細な検討とプロトタイプの開発が役立つでしょう。一貫性のあるアプローチで取り組むことが大切です。
User
レコードもこの一種ですよね。
ChatGPT
はい、レコードは一種のアナログ記憶デバイスと言えます。音楽の波形がレコードの溝に刻まれ、針で読み取ることで音楽が再生されます。この方式は長い間音楽再生のために使用されてきました。音楽の波形情報を物理的に記録し、再生することができる媒体です。
レコードはアナログ技術の代表的な例であり、音楽愛好家にとっては音質やアナログの温かみなどから人気があります。その一方で、デジタル音楽も普及しており、利便性やデータの編集・複製が容易な点で優れています。
微細加工を用いて波形を記録するアイデアも、このようなアナログ記憶デバイスの一種として捉えることができます。用途によっては、アナログ記憶が有用な場合もあるでしょう。
User
ありがとう。
ChatGPT
どういたしまして。何か他の質問や情報が必要な場合はいつでもお気軽にお尋ねください。お手伝いできることがあります。
計算機を使って学術的な正当性を主張するならばそれを支える揺るぎない理論的裏付けが必要で、数学がそれを叶えてくれると思いました。
ChatGPTに聞いてみた。
M.アービブ著の計算機科学入門はどんな本ですか。ChatGPT
M.アービブ著の『計算機科学入門』は、計算機科学の初学者向けに書かれた入門書です。コンピューターサイエンスの基礎的な概念や理論、プログラミング言語、アルゴリズムなどについて詳しく解説されています。
本書は、計算機科学の基礎知識を習得したい初学者向けに書かれており、特にプログラミングを初めて学ぶ人にも分かりやすいように構成されています。章ごとに重要なポイントをまとめた要約や、練習問題なども用意されているため、学習の効果を高めることができます。
『計算機科学入門』は、計算機科学に興味を持っている人や、プログラミングやアルゴリズムの基礎を学びたい初学者にとって、非常に役立つ一冊となっています。また、数学や物理学などの分野に興味がある人にとっても、コンピューターサイエンスにおける数学的な考え方やアルゴリズムの応用などを学ぶことができるため、広い層の人々にとって興味深い本となっています。
VLSIコンピュータⅡ
VLSIコンピュータⅠ
16ビットCPUまでがLSIで32ビットからVLSIとなっていくようです。命令も高機能になり従来よりも一命令に必要なクロックサイクルが長くなりました。
一つの命令を実行する過程の一部を見てみると、CPU内部の回路が同時に全て動作はしません。空いている回路にも演算させるためにパイプライン技術が登場します。
同時に実行できる命令を増やすために並列化も登場し回路同士を協調させる機構も必要です。更にソフトウェア開発の作業を軽減させるために高機能な命令をどんどん増やされていきました。
ICの実装技術の向上が高機能VLSIを登場させたと思います。本来の原始的な機能では足りず高機能化と高効率化を追い求め更にエネルギー効率を向上させた結果に富嶽やスマホの実現があります。
初期型16ビットCPUとそれ以降とが分水嶺なんですね。