VPS(Vultr)でSSH接続をする手順。VPS立ち上げからfirewall設定まで

VPS

VPSでSSH接続を行えるようにする手順を紹介していく。 今回は、 VPSを立ち上げる rootユーザーでSSH接続する セキュリティ対策でアクセス制限を行う firewallの設定 ローカル(自分のパソコン)から1コマンドでSSH接続できるようにする と言うところまで行う。…

VPSのSSH接続時に「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 」のエラーが出た時の対処法

VPS

今日は、VPSでサーバーを作っては壊してを繰り返していると、以下のエラーに遭遇した。 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@…

Linuxのopen(低水準入出力)の使い方やfopenとの違いをまとめていく

調べていたら思ったよりはまってしまったので、これを機にopenに関してまとめておく。 open の基礎知識 openとは、Unixにおける入出力システムを提供してくれる関数のこと。早い話が、C言語のfopenの低レベルバージョンの関数。 #include <sys/types.h> #include <sys/stat.h> #includ</sys/stat.h></sys/types.h>…

なぜ子プロセスを呼び出した時にsetsid()を使うのか?

「tinytinyhttpd/httpd.cxx at master · mattn/tinytinyhttpd」のコードを読んでいた時に、以下のコードを見かけた。 child = fork(); if (!child) { setsid(); setpgid(0, 0); setsid();とは、新たなセッションを作成する関数だが、なぜ子プロセスの実行前…

C言語からRubyやPHPなどのスクリプト言語を呼び出して、実行結果をC言語に渡す方法

最近、自作httpサーバーをC言語で書いているが、「C言語側からRubyやPHPを呼び出して、そのRubyの実行結果をC言語側に渡す」という方法が分からなかった。 いろいろ調べた所、「これでOK」という方法が見つかったので、備忘録としてまとめていく。 開発環境 …

C言語の安全な文字列コピーは、strcpyよりもstrncpy、そしてstrlcpyが良い

C言語を触っている時に文字列コピーを行いたい場合がありますが、その時にどの関数を使えば良いのか、の考察をしていく。 strcpy 文字列コピーで代表的なのが、strcpy。最もシンプルな関数だが、最も安全性が低いともいえる。 ポイントとしては、コピーされ…

C言語のstrstr関数の色々な使い方

C言語の文字列処理でよく使うstrstr関数の解説をしていく。 strstrの簡単なおさらい 第1引数の文字列の中から、第2引数の文字列が出てくる場所を探索する。もし、存在しなければNULLを返す。 単純に文字列を探索するよりも、「もし、探索したい文字列中に…

C言語でTCPクライアント・サーバーを実装する

ソケットとかTCPを理解するために、C言語でTCPクライアント、サーバーを実装していく。 今回は、TCPの超基本を理解するために、「クライアントから送られたデータを、サーバーがそのまま送り返す」というechoサーバーを実装する。 説明のやり方として、まず…

PHPでスクレイピングの高速化にはfile_get_contensよりもcurlの方が良いよって話

PHP

表題の通り、PHPでスクレイピングをする際には、file_get_contentsよりもcurlの方が柔軟でかつ高速な処理ができるので紹介。 結論から言うと、以下のコードを使えば良い。

ダブルポインタ(ポインタのポインタ)のメリットや使い道を紹介する

C言語では、ポインタを使うことで柔軟なデータ構造を表現できるが、今までダブルポインタ(ポインタのポインタ)についてイマイチ理解できていなかった。 色々調べていくと、ダブルポインタのメリットや使い道が分かってきたので、紹介していく。 ダブルポイン…

アセンブリを学習する時に役立つサイト・記事集

アセンブリを学習する際に役立った記事をまとめていきます。 アセンブリの種類は色々ありますが、今回はnasmを中心にまとめていきます。 Online Asm Compiler Online Asm Compiler - Online Asm Editor - Online Asm IDE - Asm Coding Online - Practice Asm…

Macでアセンブリ言語のhello worldを実行する方法

Macでアセンブリのhello worldを実行する方法を、アセンブリ初心者向けにわかりやすく解説していきます。 今回は、コードの意味を追うのではなく、どのような手順でアセンブリのプログラミングをやっていけばプログラムを実行できるか、をメインに説明してい…

webサービスを作る時に使えそうなCSSまとめ

webサービス、サイトを作る時に使えそうなCSSをまとめていきます。 背景で使えそうな色 #f9f9f9 割とよく見る薄いグレーの背景色 #f9f9f9 #f3f3f3 灰色バージョン2。先ほどの色と比べて少し薄い。 #f3f3f3 #1d1e22 Codepenで使われている背景色。完全な黒#0…

プログラマがwebサイトのデザインを組むときに幅をどれくらいにしたら良いのか問題

いつもwebサービスを作る時に、「webサイトの全体の幅をどれくらいにすれば良いか?」で迷ってしまうので、これを機にまとめていく。 色々なwebサービスとwebサイトの横幅 まずは、色々なwebサイトの横幅を調べていこう。 note note ――つくる、つながる、と…

はてなブログで数式を書くための3つの大原則と書き方まとめ

はてなブログで数式を書くときの自分なりのベストプラクティスがまとまってきたので、備忘録としてまとめていきます。ブログで数式を書く時に「色々情報がありすぎて、何が大事なのか、何から始めたら良いのか分からない」という状態に陥りがちですが、基本…

PHPで配列や連想配列の要素をそれぞれ変数に直す方法

PHP

PHPで配列や連想配列を別の変数に格納したい場合がある。 例えば、以下のような感じ。

MySQLでDATETIMEとかTIMESTAMPの扱う時のまとめ

SQL

MySQLを扱う時に、DATE型とかDATETIME, TIMESTAMPなど似たようなデータ型が多いので、これらの違いや扱い方をまとめておきます。 DATE DATETIME TIMESTAMPの違いとは? 根本的に違うのはDATEで、「2020-02-11」のように日にちまでしか扱えないデータ型となっ…

MacでMySQLのパスワードを忘れた時の対処法

SQL

Macで久々にMySQLを触ろうとしたらパスワードを忘れていたので、パスワード変更の方法をメモしておきます。 環境 mysql Ver 8.0.16 for osx10.14 on x86_64 今回のMySQLは8.0.16のバージョンを使用。MySQLの使い方はversion5系から8系に変わる時に多少変わっ…

Dxlib(DXライブラリ)で画像を表示させる方法

dxlibで画像を表示させてみる。表示させる画像として、今回はミクさんを使う。 Dxlibで画像を表示させるのに使う関数 画像を表示させるのに使う関数は、以下の通り int LoadGraph( char *FileName ) FileNameに画像のファイル名を入れることで、指定した画像…

PHPで色々な所で使える便利な関数25選

PHP

「25 Essential PHP Functions - Wikiversity」と言う面白い記事を見つけたので、これを元にPHPで使える便利な関数を紹介していく。 ceil round floor これら3つの関数は、小数点を丸める働きがあるもの。 roundは小数点を四捨五入し、ceilは小数点を繰り上…

PHPフレームワーク「CodeIgniter」のLoaderClassを読み解く

最近、PHPのフレームワークを自作しており、参考にCodeIgniterのコードを読んでいる。 しかし、ただ読んでも完全に理解できないと思うので、ブログに備忘録として書き残していく。 今回は、様々なディレクトリのファイルを読み込む役割をしているLoaderクラ…

C++のstd::stackの使い方を解説する

c++

C言語でデータ構造の1つである「スタック」を表現するためには、ポインタとか配列とかで自分で実装する必要があった。 しかし、C++ではstd::stackを使うことで簡単にスタックを使う事ができる。 std::stackの使い方 std::stackを使うためには、自分で定義し…

微分のデルタΔxやdxの意味や関係性について

微分のデルタΔxとかdxとかの意味って何?と疑問に思ったので、これを機に勉強してみる。 Δxとはxとの差分、dxはxとの差分を極限まで0に近づけたもの Δxとは、xとの差分を表したもの。「どれだけxと差があるのか」までは表しておらず、微分では(x+Δx)のような…

ベクトルの内積の意味とか定義とか証明とかを解説していく

最近、線形代数(ベクトル)を学びなおしており、ようやく内積について理解ができたので、内積の意味とか定義、証明などを分かりやすく解説していく。 そもそも、内積とは何か? そもそも、内積とは何かというと、「あるベクトルの方向にどれだけのパワーが…

PHPのissetとis_null、emptyの違いや関係を調べてみる

PHP

PHPには変数の値などを調べる関数としてissetやis_null、emptyなどがあるが、これらがどのような挙動をしているか、どのような違いがあるか調べてみた。 また、これらの挙動の一覧をみたい場合は、「PHPのisset,empty,is_null - モトクロスとプログラムと粉…

PHPでob_startの使い方とか使い道とか

PHP

PHPで自作フレームワークを作る時にob_start関数が便利そうなので、周辺知識をまとめておく。 ob_startとは何か? ob_start関数とは、出力用のバッファリングを有効にするための関数。 普通echo "hello"などのように書くとターミナルやHTMLに文字が出力され…

C++におけるvirtual(仮想関数)の使い方を紹介していく

c++

今回は、C++を使う上で重要になるvirtual(仮想関数)について解説していきます。 virtualとは何か? virtualとは何かを理解するためには、virtualがいつ、どのような時に使われるかを理解した方が早いです。 例えば、以下のコードを見てください。以下のコ…

Win32APIでマウスのイベントをチェックしたり座標を取得したりする

Win32APIでマウスイベントの管理をしたい場合は、WindowProc(ウィンドウプロシージャ関数)内で行う。 LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { } 左クリックやダブルクリック等のマウスイベントが発生した時には…

Win32APIを使ってアプリケーションのウィンドウを作る方法

今回は、Win32APIを使ってアプリケーションのウィンドウを作る方法を、手順に沿って解説していく。 1,ウィンドウクラスを作成する Win32APIでウィンドウを作るためには、WNDCLASS構造体を使ってウィンドウクラスを作る必要がある。 ウィンドウクラスとは、今…

Win32APIのWinMain関数の引数はどんな意味なのか調べてみた

C言語とかC++でプログラミングをしていると、CUIではなくてGUIでアプリを作りたくなってきた。 そこでまずは、Win32APIの勉強として、WinMain関数の中身を調べていく事にした。 WinMain関数の引数の意味 WinMainの引数を見てみると、以下の様に書かれている…