HighBridge’s blog

勉強の記録

2021/9/21 インターンシップ

インターンシップメモ

  • プレゼン用に出来事をまとめていく。
  • エラーがfiware特有で記事が少ない。

f:id:challenging_world:20210921143906p:plain

  • fiwareのorionにnode.jsからデータをpostするコードメモ。entitiesで[]で囲むことを忘れずに。
var request = require('request');
var fs = require("fs");

var options = {
  // method: "POST",
  uri: "http://localhost:1026/v2/op/update",
  headers: {
    "Content-type": "application/json",
  },
  json: {
    "actionType":"append",
    "entities": [
      {
        "id": "urn:ngsi-ld:Product:010",
        "type": "Product",
        "name": { "type": "Text", "value": "Lemonade", "metadata": {} },
        "price": { "type": "Integer", "value": 99, "metadata": {} },
        "size": { "type": "Text", "value": "S", "metadata": {} }
      },
      {
        "id": "urn:ngsi-ld:Product:012",
        "type": "Product",
        "name": { "type": "Text", "value": "Port", "metadata": {} },
        "price": { "type": "Integer", "value": 1099, "metadata": {} },
        "size": { "type": "Text", "value": "M", "metadata": {} }
      }
    ]
  }
};

request.post(options, function(error, response, body){
  if (error) throw new Error(error);
  console.log(body);
});
  • データの取り込みまではOK。(JSONファイルからできればやる)
  • サーバーをカスタマイズできるところはする。
  • データの表示でエラーが出ている。 f:id:challenging_world:20210921165710p:plain

  • NECさくらの実証環境ではちゃんとできたので設定を見直したらできる?

  • 個人的にできたらしたい
    • コマンドを作って操作できたら
    • npmライブラリ使って実装。メンテされてないから使った方がいいかわからない。
    • アプリケーションから操作や表示ができたらわかりやすい。コマンドラインで見にくい。(そのようなアプリあるか確認)

github.com

あとから読む

qiita.com

www.javadrive.jp

2021/8/22

今日のメモ

Node.js + React Book

  • 4-2のclipfmtの挙動が確認できていないが、アプリの配布のはできた。clipfmtは画面が真っ白になっているので、原因が何かを調べること。アプリの配布を以下にまとめる。
# 必要ツールのインストール
$ npm install -g asar
$ npm install -g electron-packager

# asarを使ってプロジェクトのファイルをアーカイブ化する。これは、複数のファイルを1つのファイルにまとめるツール。

$ asar pack ./dist ./clipfmt.asar
# 続いて次のコマンドを実行すればできる。
$ electron-packager ./ clipfmt --platform=darwin.win32 --arch=x64

2021/9/20 Web開発勉強(JavaScript(canvas), PHP)

記録

  • jsのcanvasの講座(ドットインストール)
  • ローディングアイコンの作成
  • PHP文法整理

JavaScriptの即時関数

  • スコープの汚染を防ぐために使用をする。グローバルスコープと関数スコープのみで、即時関数を使うことで変数を上書きすることを減らす。
  • 使い所
    • ページの初期化
    • 機能判定
    • プライベートプロパティ / メソッドの定義

qiita.com

JavaScriptはプライベート変数の定義の機能がないらしい

  • 他の言語のようにプライベート変数などの機能がないっぽい。導入する流れはあるみたい。

https://note.affi-sapo-sv.com/js-private-method.php

PHP関連

アルバイトでPHP使っているがちゃんと一応やっとこうと思って、メモ。考え方自体は、授業でやっているので理解しやすい感じ(Javaと似ている感じ)。

final public function show()
  {
    printf('%s' . PHP_EOL, $this->text);
  }
  • 抽象クラスで、メソッドの定義漏れを防げる。そのメソッドがないとエラーになる。
abstract class BasePost
{
  protected $text;

  public function __construct($text)
  {
    $this->text = $text;
  }

  abstract public function show();
}

class Post extends BasePost
{
  public function show()
  {
    printf('%s' . PHP_EOL, $this->text);
  }
}
  • PHPは親クラスを一つしか持てないが、インターフェースを用いて抽象メソッドを幾らかもてる。継承関係がないクラスでもインターフェースは使える。
interface LikeInterface
{
  public function like();
}

class Post extends BasePost implements LikeInterface
{
  private $likes = 0;
  
  public function like()
  {
    $this->likes++;
  }

  public function show()
  {
    printf('%s (%d)' . PHP_EOL, $this->text, $this->likes);
  }
}
  • trait -> useでコードの断片をまとめることができる。
trait LikeTrait
{
  private $likes = 0;
  
  public function like()
  {
    $this->likes++;
  }
}

class Post extends BasePost implements LikeInterface
{
  // 上のをuseで呼び出せてコードが綺麗になる。
  use LikeTrait;

  public function show()
  {
    printf('%s (%d)' . PHP_EOL, $this->text, $this->likes);
  }
}
  • require()はエラーで処理が止まって、include()は処理が止まらない。
  • require_once()で一度だけ読み込む。
  • spl_autoload_registerを使うとクラスのファイルが読み込まれていない時に、自動で読み込みをしてくれる。クラスのファイルが必要。
// 先頭につける。
spl_autoload_register(function ($class){
  require($class . '.php');
});
  • 名前空間は、同じクラスを定義してしまうのを防ぐ。
// Post.phpの先頭につける
namespace PHP\MyPHPApp;

// 呼び出し側の先頭
use PHP\MyPHPApp as MyPHPApp; 
// または
use PHP\MyPHPApp;

// 呼び出し方
$posts[0] = new MyPHPApp\Post('hello');
  • 例外処理 エラーの処理を起こすところを以下のように記述。
throw new Exception('Text too short!');

try-catchの構文でエラー処理を書く。

try {
  $posts[0] = new Post('!');
  $posts[1] = new Post('hello again');

  foreach ($posts as $post) {
    $post->show();
  }
} catch (Exception $e) {
  echo $e->getMessage() . PHP_EOL;
}