ダーシャのブログ

ゆるゆる生きてていいじゃない

matplotlib の missing from current font エラーの文字化けを解決する

matplotlibで文字化けする

以下のようなエラーが出る。

missing from current font

日本語フォントをインストール

IPAexフォントをインストールする。

$ sudo apt install fonts-ipaexfont

matplotlibの設定を変更する

matplotlibrcの場所は以下で分かる。

import matplotlib
print(matplotlib.matplotlib_fname())

250行目くらいにある、#font.family : sans-serif」を「font.family : IPAexGothic」に変更する。

$ sudo vim ~/~~/matplotlibrc

キャッシュを消す

rm ~/.cache/matplotlib/fontlist-v330.json

これで上手く行く。

参考

self-development.info

raspberry pi にTA-Libをインストールする

pip install Ta-Libだけではインストールに失敗する

TA-Libに関しては、そのままpipでインストールをすることが出来ない。 インターネットの多くの記事で紹介されている、OSにインストールする方法を試したのだが、少し詰まった箇所があったため防備録にまとめる。

TA-Libインストール方法

osにインストールする

まず初めにosにTA-Libをインストールするため、ファイルをダウンロードし解凍する。

wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
tar -xzf ta-lib-0.4.0-src.tar.gz
cd ta-lib

その後すぐに$ ./configure --prefix=/usrを実行すると以下のエラーが出てインストールされない。

This script, last modified 2006-07-02, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from

  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
and
  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub

If the version you run (./config.guess) is already up to date, please
send the following data and any information you think might be
pertinent to <config-patches@gnu.org> in order to provide the needed
information to handle your system.

config.guess timestamp = 2006-07-02

ホームページからコピーしてきて、config.guess, config.subを更新してやると上手く行く。

./config.guess
./configure --prefix=/usr
make
sudo make install

pip installする

$ pip install TA-Libを行なうと以下のエラーが出る。

ImportError:
    
    IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!
    
    Importing the numpy C-extensions failed. This error can happen for
    many reasons, often due to issues with your setup or how NumPy was
    installed.
    
    We have compiled some common reasons and troubleshooting tips at:
    
        https://numpy.org/devdocs/user/troubleshooting-importerror.html
    
    Please note and check the following:
    
      * The Python version is: Python3.9 from "/usr/bin/python3"
      * The NumPy version is: "1.24.2"
    
    and make sure that they are the versions you expect.
    Please carefully study the documentation linked above for further help.
    
    Original error was: libcblas.so.3: cannot open shared object file: No such file or directory
    
    ----------------------------------------

libcblas.so.3に関するパッケージをインストールすれば良い

sudo apt-get install libatlas-base-dev
pip install TA-Lib

参考

qiita.com

rikoubou.hatenablog.com

fatal: refusing to merge unrelated histories でエラーになる

git remote add origin URL 後にgit pull をするとエラー

異なるtreeをくっつけようとしているため、エラーになっている。 今回は、githubにあるrepositoryとローカルのrepositoryをつなげようとしているので仕方のないエラーである。

解決策

--allow-unrelated-histories オプションを付けると良い。

$ git pull origin main --allow-unrelated-histories

で上手く行く。

参考

[Git] マージしようとするとrefusing to merge unrelated historiesが出たときの対処方法 | DevelopersIO

DB設計とSQL学習まとめ

プログラマーになったは良いもののSQLも何にも分からない

情報系学部で一通り学んだのだが、いざ実務のデータベース周りのコードを読むとチンプンカンプンであった。なぜこの対応をしているのか、ER図、ツリー構造等、知らなければいけないことが沢山あると実感した。

DB設計をゼロから学び直したので、そのロードマップを残しておく。

絶対に読んだほうが良い

スッキリわかるSQL入門

スッキリわかるSQL入門
スッキリわかるSQL入門 第2版 ドリル222問付き! スッキリわかる入門シリーズ | 中山清喬, 飯田理恵子 | 工学 | Kindleストア | Amazon

初学者がSQLを学ぶのに最適な本である。解説も図解も丁寧であり、読み切ると一通りSQLの書き方は学習できる。

達人に学ぶDB設計 徹底指南書

達人に学ぶDB設計 徹底指南書
達人に学ぶDB設計 徹底指南書 | ミック | 工学 | Kindleストア | Amazon

実際にDBの設計をしていく上で必要な正規化やよくある設計パターンを学ぶことができる。 ツリー構造に対応するテーブル設計の比較はためになった。しかし、注意として、閉包テーブルについては紹介されていないので、後述のSQLアンチパターンで学ぶと良い。

SQLアンチパターン

SQLアンチパターン
SQLアンチパターン: Bill Karwin, 和田 卓人, 和田 省二, 児島 修 + 配送料無料

DB設計での実際によくあるアンチパターン、失敗例をたくさん学ぶことが出来る。アンチパターンがなぜだめなのか、またそれを使用しても良い特例はいつか、具体的な対策方法まで盛りだくさんである。

余裕があればおすすめ

達人に学ぶSQL徹底指南書

達人に学ぶSQL徹底指南書
達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ | ミック | コンピュータ・IT | Kindleストア | Amazon

SQLの色々な実例を、コードを用いて分かりやすく解説してくれている。後半では「達人に学ぶDB設計」とよく似たDB設計について話している。

一番ためになったのは、NULLの取扱いとSQLの挙動についてであった。 プログラマーとしては、DB設計の機会よりもSQLを書く機会の方が多いため、実務にすぐ活かせると思ったからである。

一通り学習を終えて

結構分量も多かったし、正直すべて理解できてはいない。しかし、基本的な知識を仕入れることは出来た。また実務を進めるなかで引っかかることがあれば、学習し直すくらいで良いだろう。 頑張って学んでいきたい。

最近知った面白いWeb3.0の情報まとめた

Astar Network

Swanky

medium.com

astar networkが作成した、dapps作成のためのSDKである。 特徴として、rustによってWASMで動作するdappsを作ることが出来る。現在はsolidityとEVMが主流だが、今後はWASMが来ると言われているので学んでおいて損はないだろう。

Definity

ICP

internetcomputer.org 最近新たにローンチされたブロックチェーンである。 Web2の主流アプリのweb3版が多く作成されている。実用に耐えうるアプリも普通にあり、アプリ利用者の目線からすると非常に魅力的である。

Dmail

dmail.ai web3版Gmailである。将来、メールアドレスで契約の支払いをする機会が来るかもしれない。早いうちにメールアドレスを取得しておくのも良いかもしれない。 ICP上で動いている。

ENS

ens.domains DNSのweb3版である。

fleek

fleek.co

AWSのweb3版、ホスティングサービスである。有名な分散型ハイパーメディアプロトコルであるipfs, ICをサポートしている。 個人的にICの方が勢いが良い、かつ今後の先行きが良いので、サポートしているのはありがたい。

自動補完つきエディターまとめ

フロントエンド側

エディター

  • ブラウザ側でユーザの入力を受け付けたりする

TSで作ろう。

  • 補完機能は
    • 各言語に用意されているLanguage Server
    • Language Server Protocol LSPでLSに接続
    • エディターがLSPに接続して補完

microsoft.github.io

使い方

Monaco Editorの基本的な使い方 - Qiita

Create a web editor using Monaco editor, React and Node + Webpack and Typescript … How hard can it be? | by Nipuna Marcus | Dev Genius

GitHub - NipunaMarcus/web-editor

zenn.dev

javascript - Get the value of Monaco Editor - Stack Overflow

@monaco-editor/react - npm

react sugguest

react-autosuggest.js.org

dackdive.hateblo.jp

LSP

language server protocol といって、エディターと補完機能とかの通信を行なうためのプロトコル。ココに接続するだけでエディターは言語の機能を使える。

engineering.mercari.com

scrapbox.io

zenn.dev

monaco用LSP

GitHub - TypeFox/monaco-languageclient: NPM module to connect Monaco editor with language servers

バックエンド側

LS

language server といって、言語の補完とかをLSPに伝えるためのサーバ。

Goで作ろう。

scrapbox.io

qiita.com

解析手順

  • 字句解析を行って、文字列、数値、予約後、関数、コメントとかタグ付けする
  • 構文解析を行ってASTでデータ構造を作る

    字句解析

hake.hatenablog.com

構文解析

qiita.com

なんか全部できそうなやつ

github.com

ReactDOM.createRoot does not support

ReactDOM.createRootでエラーになる

github.com

ここで議論してた。

解決方法

import * as ReactDOM from 'react-dom/client';
~~~~
const rootElement = document.getElementById("root");
const root = ReactDOM.createRoot(rootElement!);

tsconfig.json で入力が見つかりませんでした

insider.10bace.com

上記記事が参考になった 結果、放置で。