postgresqlの設定

Debian への PostgreSQLインストールから新規DB作成まで

https://debimate.jp/2020/03/20/%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%EF%BC%9Adebian-10buster-%E3%81%ABpostgresql-11%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%80%81%E6%96%B0%E8%A6%8Fdb%E3%82%92/

PHPの拡張ライブラリ pdo_pgsql のインストール

https://symfoware.blog.fc2.com/blog-entry-2307.html

php.ini の変更

/etc/php/7.3/cgi/php.ini を修正

;extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
extension=pdo_pgsql ←ここのコメントを外す
;extension=pdo_sqlite
;extension=pgsql
;extension=shmop

PostgreSQL の PRIMARY_KEY の話

https://qiita.com/nuko_yokohama/items/7d0d5525bcefaa3332ce

Nginx + PHP + Debian 10

あらまし

Debian 10 に nginx と PHP をインストールしてみる。

nginx のインストール

Debian 10 (buster) - Web サーバ Nginx 構築(Nginx 公式リポジトリ使用)! - mk-mode BLOG

ユーザー権限でやってうまくいかなかった。root権限でやれって書いてあった。

あと、ufw っていうツールが入ってなかったので、それは別途インストールした。

PHP

Debian 10 (buster) - PHP インストール(Nginx と連携)! - mk-mode BLOG

phpinfo.php を nginx のドキュメントルート /usr/share/nginx/html に配置し、localhost/phpinfo.php にアクセスしても FIle not found が表示される。 test.html を 同ディレクトリに配置した場合はちゃんと表示される。

↑ドキュメントルートを /var/www/html に変えてみる

↑File not found の対処法。その前にエラーログの場所がわからなかった。  → エラーログの場所はconfファイル(/etc/nginx/nginx.conf) に記載があり、/var/log/nginx/error.log だった。

nginx と PHP-FPM の仕組みをちゃんと理解しながら PHP の実行環境を構築する - Qiita

nginx $document_root$fastcgi_script_name と $request_filename の違い - Qiita

【2021/2/4 現在 未解決】

【2021/2/5 追記 - 解決】

nginx の設定が悪かった。

/etc/nginx/conf.d/default.conf でのドキュメントルートの設定を location / ... の下に書いていて、location ~ \.php$ ... の下ではドキュメントルートが未設定の状態となっていたようだ。

あと、phpファイルのプレフィックス<?php じゃないとだめっぽい?

server {
    root   /var/www/html; #← ドキュメントルートはここに書く

    location / {
        # root /var/www/html; # ← 当初はここに書いていた
        index  index.html index.htm;
    }

    location ~ \.php$ {
        # ここでは別のドキュメントルート設定となっていた。
    }

参考サイト

SSH接続

前提

Debian は Virtual Box に入ってるものとします。

以下のURLの通りに設定したがホストからはつながらなかった

https://www.mk-mode.com/blog/2019/10/11/debian-10-ssh-installation/#

解決

Debian 側のファイアウォールでポートを開けてなかった。root権限で以下を実行するといけた。

ufw allow 9999/tcp

参考サイト

https://linuxhint.com/fix_connection_refused_ubuntu/

Virtual Box で Debian を入れて NAT + VirtualBox Host-Only Network の環境を構築する

前提

Debian は Virtual Box に入ってるものとします。

以下のURLの通りに設定するとOK

https://qiita.com/muniere/items/878837964f3b11fb7663

詰まったところ

NATをVirtualBox Host-Only Network にするとホストとゲストでの通信はできるようになるが、ゲストから外が見れなくなる。

VirtualBox Host-Only Network をセカンドネットワークにするとネットワークインターフェースは認識されているが、IPが設定されていなかった。

/etc/network/interfaces を編集するのね。

※ インターフェースカード名は ip a で表示されている項目と合わせること

Ubuntu の場合

2021/4/19 追記

Ubuntu でやったらIPアドレスを設定するところで詰まったので追記

Ubuntu 18.04(on VirtualBox) ホストOSからの通信 - Qiita

/etc/netplan/00-installer-config.yaml 設定を入れる必要がある。

2023/6/17 追記

上記のリンクの通りにやろうと思ったらプチはまりした。

Virtual Box のほうでネットワークカードを2枚にする必要がある。

初めの1枚は外部接続用。

もう一枚をホスト・ゲスト間の通信用として使う。

ESP32+ILI9341 パラレル通信描画

以下のブログを参考に

ILI9341 + ESP32 (Parallel)

以下のコードを動かす

#include <WiFi.h>
#include "SPI.h"
#include "TFT_eSPI.h"

TFT_eSPI tft = TFT_eSPI();       // Invoke custom library

void setup() {
  tft.init();
  tft.setRotation(1);

  Serial.begin(115200);
  delay(100);
  
  tft.fillScreen(TFT_RED);
}

static uint32_t c = 0;

void loop()
{
  static int s = 0;
  static unsigned long old_time;
  old_time = millis();

  int box = 32;
  
  // put your main code here, to run repeatedly:
  tft.setRotation(1);
  int x, y;
  for(int j = 0;j < 64;j++) {
    x = random(0, 320);
    y = random(0, 240);
    tft.fillRect(x, y, box, box, c);
    tft.drawRect(x, y, box, box, ~c);
    c++;
  }

  Serial.print((float)1/(millis()-old_time)*1000);
  Serial.println(" fps");
}

50 fps くらいで描画される。けど、占有するピン数が多い。速度とピン数はトレードオフ

TrueTypeフォントをPNG画像に出力するGo言語コード

絵文字が豆腐になる。どうすればいいのかは要調査

package main

import (
    "bytes"
    "fmt"
    "image"
    "image/png"
    "io/ioutil"
    "os"

    "github.com/golang/freetype/truetype"
    "golang.org/x/image/font"
    "golang.org/x/image/math/fixed"
)

func main() {
    f, err := os.Open("Cica-Regular.ttf")
    if err != nil {
        panic(err)
    }
    defer f.Close()

    ttfBytes, err := ioutil.ReadAll(f)
    if err != nil {
        panic(err)
    }

    ft, err := truetype.Parse(ttfBytes)
    if err != nil {
        panic(err)
    }

    opt := truetype.Options{
        Size:              24,
        DPI:               0,
        Hinting:           0,
        GlyphCacheEntries: 0,
        SubPixelsX:        0,
        SubPixelsY:        0,
    }

    text := "abcdefghijklmnopqrstuvwxyzあ亜!薔薇😀"

    face := truetype.NewFace(ft, &opt)

    b, a := font.BoundString(face, text)
    w := b.Max.X - b.Min.X + fixed.I(1)
    h := b.Max.Y - b.Min.Y + fixed.I(1)

    img := image.NewRGBA(image.Rect(0, 0, w.Ceil(), h.Ceil()))
    // draw.Draw(img, img.Bounds(), &image.Uniform{image.Black}, image.ZP, draw.Src)

    dr := &font.Drawer{
        Dst:  img,
        Src:  image.Black,
        Face: face,
        Dot:  fixed.Point26_6{},
    }

    dr.Dot.X = (w - a) / 2
    dr.Dot.Y = h - b.Max.Y

    dr.DrawString(text)

    buf := &bytes.Buffer{}
    err = png.Encode(buf, img)

    if err != nil {
        fmt.Fprintln(os.Stderr, err)
        os.Exit(1)
    }

    file, err := os.Create(`test.png`)
    if err != nil {
        fmt.Fprintln(os.Stderr, err)
        os.Exit(1)
    }
    defer file.Close()

    file.Write(buf.Bytes())
}

追記:

絵文字は出るやつと出ないやつがあるようだ。

f:id:bamch0h:20210124022012p:plain

↓以下のissueではまだ完全には絵文字は対応できていなさそう。

append emoji at the text is not showing emoji on the image output. · Issue #45 · golang/freetype · GitHub