List, リアルタイムOS, QRコード
その他
C#からC++に入った人もいるでしょう. その時C#で大変よく使っていたListが恋しい場合があります. C++を書きつつC#を感じたい時があります.
上の問題を解決する方法でここで紹介するListがあります. このListで用意されている関数名はほぼC#と一致します. C#でのListは要素数が容量を上回ったとき自動でメモリが再確保されますが, ここで紹介するListもそのように動作します. アルゴリズムも同じです(はずです).
C#で非常に便利だったSort関数も用意されています. もちろんですが, 処理が一番早いとされているクイックソートアルゴリズム(O(n*log(n)))を使用しています.
Listを強化, 改良何でもしてください. ( `ー´)ノ
C#のListを使ったことがない方は, これをお勧めすることはできません. これと同様かそれ以上の機能を持つC++のvectorをお使いください. C++ですでに用意されています.
C#からC++に入った人もいるでしょう. その時C#で大変よく使っていたListが恋しい場合があります. C++を書きつつC#を感じたい時があります.
上の問題を解決する方法でここで紹介するListがあります. このListで用意されている関数名はほぼC#と一致します. C#でのListは要素数が容量を上回ったとき自動でメモリが再確保されますが, ここで紹介するListもそのように動作します. アルゴリズムも同じです(はずです).
C#で非常に便利だったSort関数も用意されています. もちろんですが, 処理が一番早いとされているクイックソートアルゴリズム(O(n*log(n)))を使用しています.
Listを強化, 改良何でもしてください. ( `ー´)ノ
C#のListを使ったことがない方は, これをお勧めすることはできません. これと同様かそれ以上の機能を持つC++のvectorをお使いください. C++ですでに用意されています.
Listが持つ関数は以下のとおりです.
List | コンストラクタ |
---|---|
Count | 要素数を取得 |
Capacity | 容量を取得 |
SetCapacity | 容量を設定 |
Array | 内部配列先頭アドレス取得 |
Add | List末尾に要素追加 |
Insert | 指定した位置に要素挿入 |
IndexOf | 指定されたオブジェクトの位置 |
LastIndexOf | 最後から検索して最初に見つかったオブジェクトの位置 |
CopyTo | 配列にコピー |
RemoveAt | 指定した位置を削除 |
Clear | 要素をゼロ |
Sort | 並び替え |
Trim | 容量を要素数に設定 |
CopyFrom | 指定されたListからコピー |
MoveFrom | 指定された配列そのものをListに差し替え |
筆者がこのListを作る際, C#のListリファレンス(accessed: 2.1.2017) を参考にしました. 関数名はほとんど同じにしています.
ここでは, Listの基本的な使い方を説明します. 各説明項目は以下のとおりです.
- 使用例
- C#との相違点
- Sortについて
ここでは, Listの導入方法を説明します. 説明項目は以下のとおりです.
- ダウンロード
- インクルード
ここでは, Listの導入方法を説明します. 説明項目は以下のとおりです.
- ダウンロード
- インクルード
OSは日常のあらゆる場所で目にします. パソコンには必ずと言っていいほどOSが走っており, 携帯, ゲーム機などにもOSが走っております. このような普段よく使うOSですが, そのOSの仕組みを分かっていても, 実際どのように作るのかはよく知られておらず気になります.
このページでは, 実際にArduinoで動くOSを作成することで, OSの理解を深めます. 使用するプログラミング言語はC言語です. (作成といいましても, すでに在りますFreeRTOSから必要な機能を抜き出し, Arduinoで動くようにしました.) なお, 今回扱うOSは汎用OSではなくリアルタイムOS(RTOS)と呼ばれるものです. 汎用OSとは, すべてのタスクに等しく優先度が与えられますが, RTOSではタスクごとに優先度を設定できます.
話の進め方ですが, 今回のOS製作では実装に重きを置くため, コードを中心に話を進めていきます. 各コードごとに簡単な説明を行い, その中で特に重要な部分―OSの仕組みに深くかかわる部分―もしくはさらに詳しい説明については別ページで行います. これら別ページ―詳細ページ―は子コンテンツである"仕組み"にまとめられています.
話の流れは次のとおりです.
- RTOSとは
- 目標と使い方
- 準備
- ファイル構成
- スクリプト
- ボードの設定
- 仕組み
対応状況
- Arduino UNO
- Arduino Mega
動作確認済み環境
- Arduino IDE 1.8.10
- Arduino AVR Boards 1.8.1
Apple製品同士でのファイル共有に便利な機能にAirDropがあります. 初めてあった人と, ファイルを共有したい時などに非常に便利な機能です.
ですが, Apple製品以外(例えば, Windows, Androidなど)とファイルを共有したい場合は, AirDropを利用できず, SNSやクラウドサービスを通じて, ファイルを共有する必要があり, 手間がかかります. SNSの場合では, お互いが同じSNSアプリを利用して, 共有のためだけにお互いのアカウントを教えあわないといけません. クラウドサービスの場合, ファイルをクラウドに上げ, 共有リンクを設定し, そのURL(たいてい長く, 複雑)を伝えないといけません.
本稿では, iosのショートカット機能を用いて, 即時に共有したいファイルをクラウドに上げ, 共有リンクを設定し, そのリンクのQRコードを表示するショートカットを紹介します. 相手にQRコードを読み込んでもらうだけで, 簡単にファイルを共有することができます. またアップロードされたファイルは簡単に削除でき, 容量の少ない無料のクラウドストレージを圧迫せず, 共有リンクが残り続けることがありません.
QR-Universal Scanner は, ブラウザ上で動作する, インストール不要で多くの入力方法(カメラとクリップボード)に対応したQRコード[注 1]読み取りWebアプリです. PWAに対応しておりオフラインでも動作します.
QRコードを標準で読み取れるデバイスがありますが, 主にモバイル端末に多く[1][2], PC上でQRコードを読み込むためにはアプリをインストールする必要があります[3][4][5][6][7].
インストール不要のQRコード読み取りアプリもあります[8][9][10][11][12]が, ファイルのみ, もしくはカメラのみからの読み込みであったりと, 入力方法が限定されています.
本稿では, インストール不要で多くの入力方法に対応したQRコード読み取りWebアプリ QR-Universal Scanner を紹介します. PWAに対応しており, オフラインでも動作します.
QR-Universal Scanner は, ブラウザ上で動作する, インストール不要で多くの入力方法(カメラとクリップボード)に対応したQRコード[注 1]読み取りWebアプリです. PWAに対応しておりオフラインでも動作します.
QRコードを標準で読み取れるデバイスがありますが, 主にモバイル端末に多く[1][2], PC上でQRコードを読み込むためにはアプリをインストールする必要があります[3][4][5][6][7].
インストール不要のQRコード読み取りアプリもあります[8][9][10][11][12]が, ファイルのみ, もしくはカメラのみからの読み込みであったりと, 入力方法が限定されています.
本稿では, インストール不要で多くの入力方法に対応したQRコード読み取りWebアプリ QR-Universal Scanner を紹介します. PWAに対応しており, オフラインでも動作します.
私が製作に携わったゲームを紹介します.
ここにはTwitterBotの更新履歴が書かれます.
それぞれのタスクにはそのタスクの状態というものがあります. 今回のOSでは, このタスクの状態を状態リストを用いて判別することにします. 以下から, タスク状態の種類, 状態リストの構造, リストを用いたタスク状態の切り替え方法を詳しく見ていきます.
私が製作に携わったゲームを紹介します.