Go Install
~$ sudo apt-get update
~$ sudo apt install golang-go
~$ go version
  go version go1.18.1
Hugo Install
~$ sudo apt update
~$ sudo apt -y install hugo
~$ hugo version
  hugo v0.92.2
Hello World

サンプルプログラム

package main

import "fmt"

func main() {
  message := greetMe("world")
  fmt.Println(message)
}

func greetMe(name string) string {
  return "Hello, " + name + "!"
}

Run the program as below:

$ go run hello.go
GO Variables

Normal Declaration:

var msg string
msg = "Hello"

Shortcut:

msg := "Hello"
Constants
const Phi = 1.618
GO Condition
if day == "sunday" || day == "saturday" {
  rest()
} else if day == "monday" && isTired() {
  groan()
} else {
  work()
}
if _, err := doThing(); err != nil {
  fmt.Println("Uh oh")
GO Switch
switch day {
  case "sunday":
    // cases don't "fall through" by default!
    fallthrough

  case "saturday":
    rest()

  default:
    work()
}
GO Loop
for count := 0; count <= 10; count++ {
  fmt.Println("My counter is at", count)
}
entry := []string{"Misaki","Taro","Hanako"}
for i, val := range entry {
  fmt.Printf("At position %d, the character %s is present\n", i, val)
n := 0
x := 42
for n != x {
  n := guess()
}
GO Strings
str := "Hello"

Multiline string

str := `Multiline
string`
GO Numbers

Typical types

num := 3          // int
num := 3.         // float64
num := 3 + 4i     // complex128
num := byte('a')  // byte (alias for uint8)

Other Types

var u uint = 7        // uint (unsigned)
var p float32 = 22.7  // 32-bit float
GO Arrays
// var numbers [5]int
numbers := [...]int{0, 0, 0, 0, 0}
Pointers
func main () {
  b := *getPointer()
  fmt.Println("Value is", b)
func getPointer () (myPointer *int) {
  a := 234
  return &a
a := new(int)
*a = 234

Pointers point to a memory location of a variable. Go is fully garbage-collected.

GO Type Conversion
i := 2
f := float64(i)
u := uint(i)
GO Slice
slice := []int{2, 3, 4}
slice := []byte("Hello")
GO Condition
if day == "sunday" || day == "saturday" {
  rest()
} else if day == "monday" && isTired() {
  groan()
} else {
  work()
}
if _, err := doThing(); err != nil {
  fmt.Println("う~ん!")
Bash Variable
NAME="Misaki"
echo $NAME
echo "$NAME"
echo "${NAME}
Bash Condition
if [[ -z "$string" ]]; then
  echo "String is empty"
elif [[ -n "$string" ]]; then
  echo "String is not empty"
fi
Bash Alias
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

alias cl='clear'
Bash PATH
# Nodenv
export PATH="$HOME/.nodenv/bin:$PATH"
eval "$(nodenv init -)"

# VSCode
export PATH=$PATH:"/mnt/c/Program Files/Microsoft VS Code/bin"
WSL Variable
  1. WSLでディレクトリで別Windowで起動する方法
# export PATH=$PATH:"/mnt/c/Users/ユーザー名/AppData/Local/Programs/Microsoft VS Code/bin"
export PATH=$PATH:"/mnt/c/Program Files/Microsoft VS Code/bin"
Ubuntu Condition
Git Variable
  1. Githubで事前に新規repoを作成後、新規ユーザーがGitにpushする場合:
  • error内容
    $ git push origin main
    error: src refspec main does not match any
    error: failed to push some refs to 'https://github.com/XXXX/XXXX.git'
    
  • 対処
  • 原因は、プッシュしたいリモートリポジトリのブランチ名と、プッシュしようとしているローカルのブランチ名が異っていることです。
    git init
    git add .
    git commit -m "1st"
      git config --global user.email "you@example.com"
      git config --global user.name "Your Name"
    
    git config --global user.email "shiny@mydomain.com"
    git config --global user.name "Shiny"
    git commit -m "1st"
    
    ブランチ確認
    git branch
      * master
    git branch -m master main
    git branch -M main
    git remote add origin https://github.com/xxx/xxx.git
    git push -u origin main
        Username for 'https://github.com': xxx                                  
        Password for 'https://xxx@github.com': 
    ※Passwordは、事前に取得しているGihubのTOKENを貼り付けます。これでOK!
    
  1. GitのUbuntuへ導入
  • UbnuntuにSSHが既にインストールされているか確認します。 SSH-Client,Serverともにインストールされている。
/#SSHの確認
$ dpkg -l | grep ssh
ii  libssh-4:amd64                       0.9.3-2ubuntu2.2                      amd64        tiny C SSH library (OpenSSL flavor)
ii  openssh-client                       1:8.2p1-4ubuntu0.3                    amd64        secure shell (SSH) client, for secure access to remote machines
ii  openssh-server                       1:8.2p1-4ubuntu0.3                    amd64        secure shell (SSH) server, for secure access from remote machines
ii  openssh-sftp-server                  1:8.2p1-4ubuntu0.3                    amd64        secure shell (SSH) sftp server module, for SFTP access from remote machines
ii  ssh-import-id                        5.10-0ubuntu1                         all          securely retrieve an SSH public key and install it locally
  • 最初から入っていると思うが,確認はターミナルで、以下のようにバージョン出てくれば大丈夫、、
/# gitのバージョン管理
$ git --version
git version 2.33.1
  • 入っていない場合はインストールします。
$ sudo apt install git
  1. GitHubへの登録
  • GitHubサイト
  • アカウントの作成
  • GitHubのウェブページからアカウントを作る
    (ユーザー名:TechRZN、パスワード:xxxxxxxx、メール:tech@raizin.net
  1. WSL-ubuntuとSSHによるgitの連携設定

WSLとGitHubサイトの両方で設定します。 4-1.WSL上でSSHの公開鍵の生成

  • .sshフォルダーを作って、中に移動して鍵をつくる
  • IT:tech@raizi.net PW:adminDE_s0
  /# 秘密鍵と公開鍵の生成
  matsu@hpPC:~$ mkdir .ssh
  matsu@hpPC:~$ cd .ssh
 $ ssh-keygen -t ed25519 -C "tech@raizi.net"
  Generating public/private ed25519 key pair.
  Enter file in which to save the key (/home/matsu/.ssh/id_ed25519): TechRZN
  Enter passphrase (empty for no passphrase): adminDE_s0
  Enter same passphrase again: adminDE_s0
  Your identification has been saved in TechRZN
  Your public key has been saved in TechRZN.pub
  The key fingerprint is:
  SHA256:cYVWSjEwdVkEdfWnY1KJgHDdDKKmN1Xcz2/5lfBNuV8 tech@raizi.net
  The key's randomart image is:
  +--[ED25519 256]--+
  |      ..=*OO=*+ +|
  |       o.==*=. o.|
  |      o o.o .oo +|
  |     o . o   oooo|
  |    . o S   . *o=|
  |     . .     o *E|
  |               .=|
  |                o|
  |                 |
  +
-[SHA256]

–+


4-2. SSH秘密鍵をssh-agentに追加します。

別の名前でキーを作成した場合、または別の名前の既存のキーを追加する場合は、コマンドのid_ed25519を秘密キーファイルの名前に置き換えてください。
~~~bash
  $ ssh-add ~/.ssh/id_ed25519 ←TechRZN 置き換える
  Enter passphrase for /home/matsu/.ssh/TechRZN: //adminDE_s0
  Identity added: /home/matsu/.ssh/TechRZN (tech@raizi.net)

4-3. GitHubのアカウントにSSHキーを追加します。

  • SSH公開鍵(TechRZN.pub)をクリップボードにコピーします。
  $ cat TechRZN.pub
  ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGmRI9AbSL7H6jRINzqGB9rFXQUENt+PMl/idf1m7ZGz tech@raizi.net

4-4. GitとSSH 接続のテスト

/#接続テスト
$ ssh -T git@github.com 
The authenticity of host 'github.com (52.192.72.89)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,52.192.72.89' (RSA) to the list of known hosts.
Hi TechRZN! You've successfully authenticated, but GitHub does not provide shell access.
  • 結果のメッセージにユーザー名が含まれていることを確認してください。

    • 「Hi TechRZN!」なのでユーザー名は「TechRZN」とわかります。
  • Configファイルの作成

    /# ($pwd)matsu@hpPC:~/.ssh
    $ touch config
    
    Host github
        HostName github.com
        User git
        IdentityFile ~/.ssh/TechRZN
    
  • 再度の接続確認

    /# ($pwd)matsu@hpPC:~/.ssh
    $ ssh -T git@github.com
    Warning: Permanently added the RSA host key for IP address '13.114.40.48' to the list of known hosts.
    Hi TechRZN! You've successfully authenticated, but GitHub does not provide shell access.
    
    • 上記「GitHubとやりとりする」でssh接続について設定するのは面倒で
    ~/.gitconfig  
    
    [url "github:"]
        InsteadOf = https://github.com/
        InsteadOf = git@github.com:
    

    を追記してあげれば解決でした。
    ところで、pushInsteadOfを使うとpushだけに適用出来るようです。

Python Variable
  1. 仮想環境作成
  • python3.11をUbuntu22.04にインストールする方法

  • ※Ubuntu22.04では、「sudo apt-get update」⇒「sudo apt update」を使います。

  • Dockerでは、Dbianなので「apt-get update」を使います。

    sudo update-alternatives --config python3
      Selection    Path                      Priority   Status
    ===========================================================
      Selection    Path                      Priority   Status
    ===========================================================
      0            /usr/bin/python3.10        130       auto mode
      1            /opt/Python-3.9.0/python   3         manual mode
      2            /usr/bin/python3.10        130       manual mode
    * 3            /usr/bin/python3.11        100       manual mode
      4            /usr/bin/python3.8         110       manual mode
    
  • Ubuntuなどで、デフォルトのPythonとは違うPythonをインストールし、update-alternatives でデフォルトを変更した場合、apt updateを実行すると、標題のようなModuleNotFoundError: No module named ‘apt_pkg’が表示されてうまくいかないことがあります。

  • 対処

    sudo vi /usr/lib/python3/dist-packages/CommandNotFound/db/creator.py
    sudo vi /usr/lib/cnf-update-db
    
  • 1行目の「/usr/bin/python3」を「/usr/bin/python3.11」に書き換えて保存する。

  1. 仮想環境の作成
  • Pythonをアップグレードしたらvenvが作成できなくなった場合の対処 (pipなしでvenv環境を作成)
    python3 -m venv --without-pip <プロジェクト名>
    
  • 以下ようにする
    cd /matching/
    python3 -m venv --without-pip ./env
    (directoris)
    .
    ├── .dockerignore
    ├── Dockerfile
    ├── db.sqlite3
    ├── env
    ├── home
    ├── manage.py
    ├── matching
    ├── requirements
    ├── requirements.txt
    └── search
    
    (acrivate:アクティブ化)
    source env/bin/activate
    
  • (注意)バージョン管理(gitなど)を使用している場合は、プロジェクトのディレクトリになります。 その中のディレクトリは、バージョン管理から除外する必要があります。
Docker Variable
パッケイジplumberのインストール

【R web API】 Rで分析した結果を確認できるように表示 簡単なインプットができてアウトプットされる仕組み 機械学習モデルの活用

Ubuntuで実行

sudo apt install libsodium-dev

Rのコンソールで実行

#パッケージのインストール
install.packages("plumber", dependencies = T)

#パッケージの読み込み
library("plumber")
R 文字コード表

文字コード表(コード対応表)


0x03A0   Π
0x03A1   Ρ
0x03A3   Σ
0x03A4   Τ
0x03A5   Υ
0x03A6   Φ
0x03A7   Χ
0x03A8   Ψ
0x03A9   Ω
0x03B1   α
0x03B2   β
0x03B3   γ
0x03B4   δ
0x03B5   ε
0x03B6   ζ
0x03B7   η
0x03B8   θ
0x03B9   ι
0x03BA   κ
0x03BB   λ
0x03BC   μ
0x03BD   ν
0x03BE   ξ
0x03BF   ο
0x03C0   π
0x03C1   ρ
0x03C3   σ
0x03C4   τ
0x03C5   υ
0x03C6   φ
0x03C7   χ
0x03C8   ψ
0x03C9   ω
0x0401   Ё
R 作業ログの作成

作業ログの作成


#パッケージのインストール
install.packages("luzlogr")

#パッケージの読み込み
library("luzlogr")
 
#作業ディレクトリにlogファイルを作成:openlogコマンド
logfile <- openlog("test.log")
 
#logファイルにメッセージを書き込み:printlogコマンド
printlog("メッセージ")
printlog(2*3)
 
#logファイルに書き込みを終了:closelogコマンド
#セッション情報を書き込む:sessionInfoオプション;TRUE/FALSE
closelog(sessionInfo = TRUE)
R 現在の作業ディレクトリの確認と変更

現在の作業ディレクトリの確認と変更

# 確認
getwd()
# 作業ディレクトリの位置の変更は、RStudioのメニューバーから、
#「Session」→「Set Working Directory」→「Choose Directory」で変更できます。
setwd("~/<dirctory>")
R ログでシャイニーアプリをデバッグ

ログでシャイニーアプリをデバッグします。


# ログディレクトリへ移動し調べます。
  cd /var/log/shiny-server
  ls -al

  rmd-shiny-20220830-034118-32877.log    rmd-shiny-20220830-112101-37013.log     sms-shiny-shiny-20220903-023934-38343.log

  sudo cat 
  Error in library(httr) : there is no package called ‘httr’
  Calls: runApp ... sourceUTF8 -> eval -> eval -> ..stacktraceon.. -> library
  Execution halted

# library(httr) がないのでエラーが出ています。
# ユーザーrstudioでは、動くのですがユーザーshinyでは動きませんので追加します。
# ユーザーshinyになってhomeディレクトリに移動します。

  su - shiny
  $ pwd
  /home/shiny

# httrをインストールします。

  R
  > install.packages("httr")
  > The downloaded source packages are in
/tmp/RtmpGAUDSy/downloaded_packages’
Github
install_github('ramnathv/rCharts')
# 以下のようにinstall_githubが使えるようにします。
   library(remotes)
   install_github('ramnathv/rCharts')