株式投資をはじめたい

株式投資を本格的に始めたいのでちょっとずつ勉強していきます。

今も少ないお金を投資はしているけど、どんなものか知りたい程度の動機でやってただけでした。

とりあえず年末まで株式投資に時間を多めに使おうと思います。

AtCoder ABC285 B が全然わからなかった

2023年の2回目の1月15日のAtCoder ABC285 B が全然わからなかった。

私はまだB問題がやっとなくらいの実力です。超初心者なのでほとんどの問題は解けません。

けど、解説を読んだり、正解のコードを見たら少しはわかる。解けないけど、おおよその方向性くらいは見える。

しかし、ABC285 B はなにがなんやらわかりません。

Youtubeの解説を見てもまったく理解できません。

とりあえず、今は理解することをあきらめて、週に1回くらいのペースでゆるく取り組もうと思います。

わかったらここに追記します。


NumPyの基本


Pythonをやるからには避けれないNumPyです。

NumPyを使うシーンは現時点では少ないのですが、将来必要になったときに使いこなせているように今から準備したいと思います。

NumPyを使う準備

まずは、NumPyを使うための準備です。

インストールとインポートです。

インストール

ターミナルで以下を実行します。

pip install numpy

Google Colabだとインストール済みのようです。

インポート

import numpy as np

「as np」を付けるのは標準のようです。

実際、標準通りにするのが考えなくていいので楽です。

基本

まずは基本の基本です。

NumPyといえば、行列のイメージなので以下が基本かと思ってます。

np.array([1,2,3])
# array([1, 2, 3])

2つ重ねます。

np.array([[1, 2, 3], [4, 5, 6]])
# array([[1, 2, 3],
#        [4, 5, 6]])

NumPyで実行してprintすると行と列が揃って表示されるのが良い感じです。

今NumPyを勉強中なのでわかったことがあったら追加していきます。

「if not」は初心者には理解に時間がかかる(Python)


AtCoderに挑戦中です。

ただ毎週土曜日に問題を解くだけでは成長しないので、本(アルゴリズム的思考力が身につく!プログラミングコンテストAtCoder入門)を買って勉強してます。

ABC081 B

ABC081 B「Shift Only」がなんかむつかしいです。

本にも「このような抽象的な問題を見ると、何をしたらよいかわからなくなる方も多いかも知れません。」とあって、「そうそう、そうなんです!」と思ってしまいました。

本には「操作ができなくなるまで実際に操作を繰り返す」とも書いてあるのですが、私はこういう系が苦手かもしれません。

if notが理解しづらい

中でも「if not」が理解がしづらいです。

理解はできるのですが、理解がしづらいのです。

ifの後はbool型のTrueかFalseになっているのが感覚的にわかっていないと思います、、慣れればいいのかな。

ifはすぐに理解できるのに。。。

ド・モルガンの法則

ちなみにですが、本を見てたら「ド・モルガンの法則」があった。

not A and not B ⇔ not(A or B)

not A or not B ⇔ not(A and B)

これが成り立つとのことです。

今はこの法則が役に立つ場面は思いつかいのですが、将来的には使うようになるのかな。

Githubでリモートにプッシュできなくなって解決した


昨日までGithubにプッシュできていたのに、急にできなくなった。

設定は何もしてないはず。

アラートの内容は以下でした。

参照仕様をリモートにプッシュできません。最初に"Pull"を実行して変更を統合してください。

"Pull"を実行してもダメでした。

調査

解決すべくいろいろ設定を確認していました。

設定画面を見ていて、ふと思い出しました。

昨日、Emails設定の「Keep my email addresses private」にチェックをしてしまっていたことに。。

セキュリティ系のことなので「当然チェックでしょ」と何も考えずに設定してしまってました。

ちなみに、この設定はクローン(ダウンロード)したりしたときにメールアドレスがわかってしまうのを防ぐとのことです。

解決

原因がわかったら、すぐに解決できました。

「Keep my email addresses private」の説明部分に以下のようなメールアドレスがあります。

[ID]+[GitHub アカウント名]@users.noreply.github.com

このメールアドレスをローカルのGit設定のメールアドレスに設定したら解決しました。

Next.jsでmicroCMSを使うときの画像設定

『作って学ぶ Next.js/React Web サイト構築』で Next.js と React を勉強しています。

全然わからないので、とりあえずコードを写して動かしているのですが、それでもエラーが出て慌ててます。

Next.jsの画像設定

エラーの中でも最大のエラーがあったのでメモ。


microCMS の設定を本の説明どおりにせずに、なんとなくで設定していました。

そのせいでエラーが出て、なかなか解決できませんでした。


こちらのページで解決しました。


Next.js では width と height が必要らしいのです。

microCMS のデフォルト設定では、width と height が含まれていないようです。

だから画像サイズが必要な Next.js ではエラーが出てしまいます。

microCMSで「画像のレスポンスに width と height を含む」をオンにすることで解決しました。

書籍についている PDF にそって設定していると問題なかったようなのですが、Next.js の画像のことを知れたのでよかったと思ってます。

コマンドプロンプトのコマンド


コマンドプロンプトのコマンドをすぐに忘れてしまいます。

毎回使うときに調べている気がします。

とは言っても、私のようなプログラミング初心者が必要なコマンドは数少ないです。

よく使うものだけをメモしておきます。

コマンド一覧

▼ディレクトリ移動

cd (ディレクトリ名)

▼1つ上のディレクトリへ移動

cd ..

▼ディレクトリ(フォルダ)を作る

mkdir (ディレクトリ名)

▼ディレクトリの中を見る

ls

▼パスを調べる

pwd

必要なコマンドが出てきたらここに追加していきます。

Google ColabでCSVを読み込んで表示する方法


Google ColabでCSVファイルの読み込み方やパスがわかりませんでした。

調べたらわかったのですが、すぐに忘れそうなのでメモしておきます。

CSVを読み込む

まず、Google DriveにCSVを読み込みます。

Jupyterのファイルを開くと、Drive内のディレクトリが表示されます。

※Driveは最初にマウントする必要があります。

CSVファイルを読み込みたいフォルダの横の3つの点をクリックします。

そして、「アップロード」を選択して、CSVファイルをアップロードします。

これでCSVファイルを扱う準備OKです。

Colabで読み込む

次に、JupyterにCSVファイルを読み込みます。

driveライブラリをインポートし、ドライブをマウントします。

from google.colab import drive
drive.mount('/content/drive')

CSVはpandasで読み込むのでpandasをインポートします。

import pandas as pd

読み込む時、パスを「content/drive」から書きます。

df_info=pd.read_csv("/content/drive/MyDrive/dev/test.csv")

このパスがわからずで手こずりました。

表示する

最後に、表示します。

df_info

無事に表示できました。

これでGoogle ColabのJupyterでプログラミングすることができるようになりました。

Pythonで文字種類の判定

2022年12月10日のAtCoder ABC281のB問題で文字種類の判定がわからなかった。

これまでちゃんと理解しようとしなかったことを後悔した。

アプリなどでユーザーが入力することがある時に必須ですよね。

文字判定の種類は何があるのか?

文字判定の種類は何があるか書籍で確認してみました。

  • isalnum()
  • isalpha()
  • isascii()
  • isdecimal()
  • isdigit()
  • isnumeric()
  • isidentifier()
  • islower()
  • isupper()
  • istitle()
  • isprintable()
  • isspace()

違いがよくわからないものが結構あります。

isalnum():英数字

print('abc123'.isalnum()) # True
print('abc++'.isalnum()) # False

isalpha():英字

print('abcde'.isalpha()) # True
print('abc123'.isalpha()) # False

isascii():ASCII文字

print('abc'.isascii()) # True
print('あいう'.isascii()) # False

isdecimal():10進数

print('100'.isdecimal()) # True
print('0x64'.isdecimal()) # False

isdigit():数値

print('1234'.isdigit()) # True
print('1234.56'.isdigit()) # False

isnumeric():数値文字

print('百万'.isnumeric()) # True
print('million'.isnumeric()) # False

isidentifier():有効な識別子

print('abc_123'.isidentifier()) # True
print('abc-123'.isidentifier()) # False

islower():小文字

print('test'.islower()) # True
print('Test'.islower()) # False

isupper():大文字

print('TEST'.isupper()) # True
print('Test'.isupper()) # False

istitle():先頭文字が大文字

print('Atcoder Test'.istitle()) # True
print('AtCoder Test'.istitle()) # False

isspace():空白文字

print(' '.isspace()) # True
print('test'.isspace()) # False

isidentifierがいまいちわからないです。。

isdigit、isdecimalの違い

isdigit、isdecimal、isnumericの違いについて本に以下のようにありました。

”isdecimalはアラビア数字だけ認める、isdigitはそれに加えて上付き数字のような文字も含める、isnumericはさらに漢数字・ローマ字数字のような文字も含める。”

しかし、isdigitとisdecimalの違いはまだやっぱり理解できない。

↑このサイトにわかりやすくありました。

”isdigit メソッドは文字列中のすべての文字が数字で使われる文字で、かつ 1 文字以上ある場合に真を返します。”

なるほど。1文字か1文字以上かで違うようです。AtCoderの解説コードの使い方も納得です。

文字種類を判定が必要なのはすごいプログラマーだけだと思っていたのですが、こうしてみると必須ですね。

pipの使い方

Pythonのpipの使い方をすぐに忘れてしまう。

そもそもよく使うもの以外は覚えておくことはできない気がしてます。

ということでカンニングペーパーとしてまとめます。

バージョン

pipのバージョンの確認

pip -V
pip --version

pipのアップグレード

python -m pip install --upgrade pip

パッケージ確認

パッケージを表示する

pip list

パッケージのバージョン表示する

pip freeze

パッケージをインストールする

pip install package-name

パッケージをアンインストールする

pip uninstall package-name

最新版があるパッケージを表示する

pip list -o
pip list --outdated

最新版をインストールする

pip install -U package-name

Next.jsの「Hello, World」


今後、Next.jsが来そうですね。

もうとっくに来てると言ってもいいかもしれません。

Wordpressがなくなるわけではないと思うのですが、Next.jsに移行する人や会社は増えそうですよね。

私も使ってみたいので勉強し始めました。

プロジェクト作成

プロンプトやターミナルで以下を実行します。

npx create-next-app my-app

「my-app」のところを自分で名前をつけます。

プロジェクトを起動する

次にプロジェクトを起動します。

先ほど作ったディレクトリ(今回は「my-app」)に入ります。

cd my-app

そして、実行します。

npx next dev

または、以下でも大丈夫です。

npm run dev

実行したら、「http://localhost:3000/」にアクセスします。

実行すると以下のサンプルページが表示されます。

プロジェクトを終了する

終了するときは、「CTRL + C」をします。

これでNext.jsでの開発準備が完了です。


note

AtCoderの入出力メモ

AtCoderでプログラミングを勉強しようとしています。

12月3日にはじめてコンテスト(ABC280)に参加してみました。

間違ってレーティングなしにしてしまったのでレーティングはないのですが参加できたことが嬉しかったです。

ちなみに、A問題しかできませんでした。

まず入力方法

AtCoderで初心者が最初につまずくのは入出力方法だと思います。

いろいろ調べてみたところ入出力はほぼ決まっているので、最初は丸暗記でいいかもしれません。

1つの数の入出力方法

a=int(input())

2つ以上の場合

b,c = map(int,input().split())

リストにする場合

d = list(map(int,input().split()))

出力方法

次に出力方法です。

出力方法はそのままです。

print(a)

ただAtCoderの出力はスペースくぎりの数字にしないといけません。

プログラミングの結果がリストになった場合にforなどで取り出すのは面倒です。それを簡単にする方法を最近知りました。

リストが入った変数の前に「*」をつけるとリストが外れてスペースくぎりの数字になります。

print(*a)

プログラミング初心者こそAtCoder


プログラミングの勉強をしています。

基本的な勉強をして理解ができてきた気がする。

しかし、自分で何かを作ろうとすると何もできない。

初心者向けの書籍や記事がたくさんあるので最初の1歩の勉強はやりやすい。

けど、2歩目は何をしたらいいのかわからず途方に暮れてしまう。

競技プログラミング

初歩的なことはわかっているけど、それ以外は何もできない状態が続いている時に「AtCoder」を知りました。

「AtCoder」は競技プログラミングです。

https://atcoder.jp/

競技プログラミングは、猛者たちが血で血で洗うプログラミング・バトルをするところだと思っていました。

しかし、すべてがそうではありませんでした。

初心者にもいい感じの問題がありました。

猛者には邪魔じゃないかと思うほど簡単な問題です。

例えば、

A×B を求めてください。

のような感じです。

2行で完了します。

A,B=map(int,input().split())
print(A*B)

初心者でも大丈夫そうです。

初心者こそAtCoder

しかし、初心者の方はわかってもらえると思うのですが、いざコードを書こうとしたら2行であってもパニックになります。

初心者はどんな単純なプログラミングであっても、自分の頭で考えてコードを書くという経験が圧倒的に足りないのです。

AtCoderの初級(A問題)はそんな経験をたくさん積めるのですごくいいと思ってます。

初心者こそオススメな気がします。