20211123のLinuxに関する記事は15件です。

Elf32_Symの説明

elf32.h typedef struct { Elf32_Word st_name; Elf32_Addr st_value; Elf32_Word st_size; unsigned char st_info; unsigned char st_other; Elf32_Half st_shndx; } Elf32_Sym; st_nameはstrtab(string table) sectionの先頭からのoffset (null終端されてる st_infoは、symbolがobject(変数)か、関数か、等の情報と、そのスコープがファイルローカルなのか、グローバルなのかの情報が格納されている st_shndxのshndxはsection header table indexの略称 st_valueはsegmentの先頭からのoffset st_sizeはシンボルの実態のサイズ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ssh先でクソ長いビルドを走らせてしまったのにもう寝たい時にすること

状況 sshしたラズパイとか結構非力なマシンにsshしてあれこれビルドしようかなーと思って始めた./configure; make; make installとかが終わらなくて泣きたいときにするワークアラウンド。 方法 アプローチとしては実行中のコマンドのバックグラウンド化と非所有化(?)。 下準備 実行したいコマンド群はあらかじめシェルスクリプトに書いておき、それを実行するようにしましょう。 ;で区切ったコマンドはそれぞれが別のジョブになってしまうためです。 手順 1. クソ長いジョブの走っているターミナルで Ctrl + Zをし、ジョブ(コマンド)を停止させる。 [1]+ Stopped make 2. jobsでジョブを確認、bg コマンドでバックグラウンドで再開させる。 root@ubuntu:~# jobs [1]- Stopped make root@ubuntu:~# bg 1 [1]- make & 3. jobsで走っていることを確認。 root@ubuntu:~/repos/snort_src/ragel-6.10# jobs [1]- Running make & 4. disownで手放す。 root@ubuntu:~# disown -h %1 root@ubuntu:~# jobs [1]- Running make & root@ubuntu:~# logout Connection to xxx.xxx.xxx.xxx closed. おしまい。走っているジョブのPPID(親PID)は1になります。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

xargsと「|」 (パイプ)の違いって?

Linuxコマンドを学習すると、コマンドの実行結果を次のコマンドの引数としてくれるxargsというものが出てきます。 例えば、以下のようなフォルダとファイルがあるとします。 (雑な図ですみません) 以下のコマンドを打ってみます。 $ ls test*.txt | xargs cat >>> log1 log2 lsコマンドで出てくる「test1.txt, test2.txt」をcat(ファイルの中身の表示)の引数としてxargsが架け橋のようにして持ってきてくれて、cat test1.txt, cat test2.txtを一気に反映してくれます。 ふむふむ。。 ここで自分が気になったのが、「でも、Linuxコマンドには『|』がそもそもあるけど、わざわざxargs使うのってどういうの?」って感じました。 試しに 上記のコマンドをxargs抜きで実行してみました $ ls test*.txt | cat >>> test1.txt test2.txt ファイル名がconcatenateされて出てきました。 摩訶不思議。。 ここで、自分なりに色々調べてみました。 すると、Linuxには「標準出力」と「引数」という区別があり、踏み込んだ話になりそうでしたが、 Linux初学者(私)が色々調べてまとめてみました。 xargsは何をしているのか? xargsは「標準入力やファイルからリストを読み込み、コマンドラインを作成して実行する」というコマンドだそうです (引用元: https://atmarkit.itmedia.co.jp/ait/articles/1801/19/news014.html) ls test*.txt | xargs catは最初に解説した通り。 |(パイプ)は何をしているのか? パイプとは、Linuxコマンドを使って標準出力された内容を次のコマンドへ橋渡しするために使われるコマンド だそうです(引用元: https://academy.gmocloud.com/know/20210630/12090) つまり、「標準出力」が次のコマンドに引き渡されます。 パイプラインと親和性が高いコマンドの一つにgrepコマンドを思い浮かべる方も多いと思いますが、試しにgrepのパターンで見てみましょう ls | grep *st1.txt >>> test1.txt ls | xargs grep *st1.txt >>> (何もなし) ls | grep *st1.txtはlsコマンドで出力された結果 「test1.txt, test2.txt, hoge.txt」の中から、[*st1.txt]に合致するファイルを検索しているため、 最終的な出力は「test1.txt」になります。 では、ls | xargs grep *st1.txtはlsコマンドで出力されたものを「引数」としてgrepに渡している結果、ファイル名として認識せず何も出力されずに終わった、と考えました (この辺、自分の仮説に近い段階のため、正確な理解をしたらまた書き直します。) 終わり 一応、ここで終わるんですが、個人的に使い分けは、利用したいlinuxコマンドをちゃんと理解しなければ使い分けるタイミングは難しいと感じています。 暗記する必要はもちろんないなくて、不具合が出たらその度に調べる必要でいいのかなと思います。 今回参考にさせていただいた記事 xargsとパイプの違いについて Linuxコマンドで使われるパイプ(|)の使い方を詳しくご紹介! 【 xargs 】コマンド――コマンドラインを作成して実行する
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

xargsと| (パイプ)の違いって?

Linuxコマンドを学習すると、コマンドの実行結果を次のコマンドの引数としてくれるxargsというものが出てきます。 例えば、以下のようなフォルダとファイルがあるとします。 (雑な図ですみません) 以下のコマンドを打ってみます。 $ ls test*.txt | xargs cat >>> log1 log2 lsコマンドで出てくる「test1.txt, test2.txt」をcat(ファイルの中身の表示)の引数としてxargsが架け橋のようにして持ってきてくれて、cat test1.txt, cat test2.txtを一気に反映してくれます。 ふむふむ。。 ここで自分が気になったのが、「でも、Linuxコマンドには『|』がそもそもあるけど、わざわざxargs使うのってどういうの?」って感じました。 試しに 上記のコマンドをxargs抜きで実行してみました $ ls test*.txt | cat >>> test1.txt test2.txt ファイル名がconcatenateされて出てきました。 摩訶不思議。。 ここで、自分なりに色々調べてみると、 Linuxには「標準出力」と「引数」という区別があるということに行きつきました。 踏み込んだ話になりそうでしたが、Linux初学者(私)が色々調べてみました。 xargsは何をしているのか? xargsは「標準入力やファイルからリストを読み込み、コマンドラインを作成して実行する」というコマンドだそうです (引用元: https://atmarkit.itmedia.co.jp/ait/articles/1801/19/news014.html) ls test*.txt | xargs catは最初に解説した通り。 |(パイプ)は何をしているのか? パイプとは、Linuxコマンドを使って標準出力された内容を次のコマンドへ橋渡しするために使われるコマンド だそうです(引用元: https://academy.gmocloud.com/know/20210630/12090) つまり、「標準出力」が次のコマンドに引き渡されます。 パイプラインと親和性が高いコマンドの一つにgrepコマンドを思い浮かべる方も多いと思いますが、試しにgrepのパターンで見てみましょう ls | grep *st1.txt >>> test1.txt ls | xargs grep *st1.txt >>> (何もなし) ls | grep *st1.txtはlsコマンドで出力された結果 「test1.txt, test2.txt, hoge.txt」の中から、[*st1.txt]に合致するファイルを検索しているため、 最終的な出力は「test1.txt」になります。 では、ls | xargs grep *st1.txtはlsコマンドで出力されたものを「引数」としてgrepに渡している結果、ファイル名として認識せず何も出力されずに終わった、と考えました (この辺、自分の仮説に近い段階のため、正確な理解をしたらまた書き直します。) 終わり 一応、ここで終わるんですが、個人的に使い分けは、利用したいlinuxコマンドをちゃんと理解しなければ使い分けるタイミングは難しいと感じています。 暗記する必要はもちろんないなくて、不具合が出たらその度に調べる必要でいいのかなと思います。 今回参考にさせていただいた記事 xargsとパイプの違いについて Linuxコマンドで使われるパイプ(|)の使い方を詳しくご紹介! 【 xargs 】コマンド――コマンドラインを作成して実行する
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxで生成したCSVをVBA(Excelマクロ)で読み込むときの注意点

タイトルに関して結論から言っちゃうと「改行コードに気をつけて」で終わっちゃう話なんですが、 そんな凡ミスで延々と悩み続けてしまったので、備忘録としてきちんと書いときます。 ※解決方法はLinux寄り(ShellScriptで解決する方法)で、最下部に書いてます。急いでいるかたはそちらをどうぞ。 したかったこと (1) Linuxでカンマ区切りのCSVファイルを生成 ↓ (2) PSCPでWindowsへファイル転送 ↓ (3) 任意のExcelへCSVをインポート ...というのを、VBA(Excelマクロ)を使ってやりたかったわけです。 ※(1) だけはLinuxのShellScriptでやってますが。 ハマった やりたいことはすごく簡単なはずなのに、(3) のCSVインポートが下記エラーで引っかかる! ※やり方(コード)はググった結果を試しただけなので、ここでは割愛します。 (アプリケーション定義またはオブジェクト定義のエラーです。) デバッグしてみると、どうやら最初の変数に格納されるデータ量が多すぎるように思えたので、 (2) で転送してきたCSVファイルを編集して行・列を減らしてみると、うまくいく… やっぱりデータ量? もしかして...? 行・列をたった1行・1列減らしただけでうまくいくということは、データ量の問題ではない? もしかして、Linux/Windowsの文字コードの違いが原因か!? と思い、コード変換してからインポートしてみる。(ちなみにコードは下記のような感じ) # iconv -f utf-8 -t sjis test.pl -o test.csv ...が、うまくいかない。状況変わらず。 あぁ、、そうか (最初に結論を書いちゃってるので、読み物としては面白くないですが) そうです、Linux/Windowsの改行コードの違いが原因でした...。 言われてみれば当たり前、誰でも知ってる(?)ことなんですが、 Linux(UNIX/Mac)環境では LF Windows環境では CR+LF これです、これを考慮しておかないとダメなんです。 違いは知ってました。知ってましたけど、なかなか気づけなかったんですよ…。 で、どうやって解決したか VBA側で改行コードを変換(置換)するか、LFコードで改行したファイルを読み込む 方法もあるようですが、 VBAのコードを書き換えるのが面倒なので 簡潔に、Linux側で改行コードを変換する方法で対応しました。 # 変換前 ($はLF) [user@testsv ~]$ cat -e test.csv head1,head2,head3$ test1,test2,test3$ # 改行コード変換 [user@testsv ~]$ sed -i -e 's/$/\r/g' test.csv # 変換後 (^M$がCR+LFです) [user@testsv ~]$ cat -e test.csv head1,head2,head3^M$ test1,test2,test3^M$ (1) のCSVファイルの生成Scriptに、sed ... の一行を加えるだけで解決! めでたしめでたし。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxディストリビューション

個人メモなので例えがアレです。 1.ディストリビューションとは ディストリビューション【distribution】 1 分配。配送。流通。また、分配された物。配布物。ディストロ。 2 複数のソフトウエアをひとまとめにしたもの。特に、Linux(リナックス)ディストリビューションのこと。ディストロ。 Linuxが配布される形態のことをディストリビューションと言う。 1-1.狭義のLinux 「Linux」は本来、OSのコアである「Linuxカーネル」のことを指す。(狭義のLinux) カーネルとは、OSの本来の役割であるハードウェアの制御、ファイル・ソフトウェアの実行、リソース等の管理を行う部分のこと。 カーネルだけではOSとして起動したりコマンド実行したりすることはできない。 人間でいうと「脳」のようなイメージ。脳だけでは人間として機能できない。 1-2.広義のLinux そこでLinuxを利用しやすいようにアプリケーションやソフトなどをパッケージにしてすぐに使える状態にしたものを「ディストリビューション」と言う。(広義のLinux) 通常Linuxを利用する場合、カーネル以外にも様々なソフトウェアが組み合わされた状態で利用する。 普段ユーザがカーネルの動作を目にすることはなく、実際にユーザが目にする部分はアプリケーションであったり、OSの管理機能を利用するユーティリティソフトであったりする。 人間でいうと「手足」「臓器」のようなイメージ(?)。すべてそろって人間として機能する。 2.代表的なLinuxディストリビューション 様々なディストリビューションが存在するが、Linuxカーネルを使っている点は同一。 異なる点は、Linuxカーネルと組み合わせるアプリケーション、インストール形式、パッケージの管理方法、システム構成など。 ディストリビューションはそのベースとなるものによって大きく分けて3つの系統に分類できる。 ◆Slackware系 Slackware 最もシンプル。多くのアプリケーションに対応しており、インストール時に実行するスクリプト、ソースコード、解説ファイルしかない。パッケージ管理システムがなく初心者向けではないが、カスタマイズ性に優れている。 Plamo SLAX 等 ◆Redhat(rpm)系 Red Hat Enterprise Linux (RHEL) アメリカのRedHat社が開発した商用向けのLinuxディストリビューション。大規模システムのサーバに利用される。有償サポートがある。 Fedora RedHat社が支援しているディストリビューション。RHELは商用向けで有料なのに対しFedoraは無料で使うことができる。Fedoraは次世代のRHEL向け検証用ディストリビューションとしての役割がある。 CentOS RHELのクローン(複製)OSで、RHELの商用部分を取り除いたもの。FedoraのようにRHELの実験的要素を含んだOSとは異なり、安定性も比較的高く、商用で使われる機会も多い。 SUSE SUSE Linux Enterprise Server(SLES)は、ミッションクリティカルシステムや高可用性が求められる商用として利用されるLinuxディストリビューション。サーバ・メインフレーム用に設計されているがデスクトップにもインストール可能。openSUSE(無償)とSLESは異なる。 等 ◆Debian系 Debian/GNU Linux ボランティアの技術者の手によって開発・運営が行われているLinuxディストリビューション。さまざまなCPU上での動作サポートと、数万にもおよぶ膨大なアプリケーション数が特徴で、多くの企業のシステムに採用されている。 Ubuntu Debianをベースに作られたディストリビューション。使いやすいデスクトップで初心者にも抵抗なく使える。Debianと同じく多くの企業のシステムにも使われている。 等 3.補足 ディストリビューションによって操作自体が大きく変わることはないが、コマンドが少し違う。 ベースとなる技術はすべてのディストリビューションで共通。 ユーザの目的やサポート体制などによりディストリビューションを選択する。 ディストリビューションの多さは他のOSにはないLinuxの特徴。 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux File System

Linux File System Evolution The evolution of the Linux file system: MINIX File System The Minix file system supported the Minix operating system. It was first introduced in 1987 by Andrew S. Tanenbaum. The Minix operating system and its file system were mostly used for educational coding purposes. The performance of the file system was not up to standard at the time. Filename lengths were restricted to fourteen characters, and partitions were limited to 64MB. At the time, hard drives supported partitions up to 140MB. By 1992 Minix was mostly out of use due to lack of performance and development of the ext file system. ext File System The ext file system stands for “Extended File System”. It was the first file system designed to support the Linux kernel. Virtual File System (VFS) was used for the ext file system. Its primary purpose was to allow the Linux kernel to access the ext file system. The ext file system restricted filename lengths to 255 characters and supported partitions up to 2GB. While it managed to solve issues that the Minix file system had, it had one major flaw – timestamping. Unlike today where each Linux file has three timestamps (access timestamp, modified timestamp, and changed timestamp), the ext file system allowed only one timestamp per file. In January 1993, the ext2 file system was introduced. In time, all users switched from ext to ext2. ext2 File System Remi Card designed the ext2 file system and released it in January 1993, less than a year after introducing the ext file system. The ext2 file system enabled the retention of the internal structure while the file system functionalities extended. Data from files were kept in data blocks of the same length. The ext2 file system supported the maximum file size of 2TiB. Filename lengths were not limited in characters, but in bytes – 255 bytes. It did not support journaling. While this file system was largely used, it still had two major issues: File corruption – This phenomenon would occur if data were written to the disk at the time of a power loss or system crash. Performance loss – Disk fragmentation happens when a single file is broken into pieces and spread over several locations on the disk. As a result, files take longer to read and write, which leads to performance degradation.` The ext2 system was mostly used until the early 2000s when the ext3 file system was introduced. It is occasionally used today for USB devices because it does not support the journaling system. ext3 File System Stephen Tweedie designed the ext3 file system (Third Extended File System). It launched in November 2001 with Linux kernel 2.4.15. It is still in use today. The ext3 file system is an improved version of ext2 file system. It supports a maximum file size of 2TiB and restricts maximum filename length to 255 bytes, like the ext2 file system. The improvement is reflected in journaling. The journaling system keeps a “journal” of all changes in the data structure that are yet to be commited. In case of power loss or system crash, logs stored via the journaling system return data in a manner of seconds, reducing the risk of corruption or data loss. The system writes the data in the correct areas of the file system when the log is updated. The Linux kernel supports three levels of journaling: Journal – It consists of writing metadata and file contents in a journal before changes are made to the main file system. This saves data in case of a power loss or system crash. The disadvantage of this level of journaling is that the performance of the system declines. Ordered – This journaling level writes the metadata to the journal, while file contents are automatically stored in the main file system. The process is performed in a specific order. First, the metadata is written in the journal. Then, the file contents are written to the main file system. Eventually, the metadata connects to the main file system. Therefore, the main file system is not corrupted in the event of a system crash. Only files that are in the process of being written during a crash can be corrupted. Writeback – This level of journaling only writes metadata to the journal. File contents are written to the main file system only after the journal is updated. Due to the lack of synchronization of metadata and file content, the file system will likely be corrupted if the system crashes. ext4 File System The ext4 file system is the default file system of the current Linux kernel. It was introduced in October 2008 with Linux kernel 2.6.28. The ext4 file system supports the maximum file size of 16TiB and restricts maximum filename lengths to 255 bytes. ext4 File System Features of the ext4 File System Limitations of ext4 File System Although the ext4 file system is considered as the best file system for Linux distributions, there are a few limitations that should be considered in the further development of the system: Corrupted data recovery – The ext4 file system cannot detect or recover corrupted data already written on the disk. Maximum volume size – The maximum volume size is set to 1 EiB. However, the file system cannot address more than 100 TiB of data without a significant loss of performance and increased disk fragmentation.
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxコマンド(よく使うオプション付き)

【cat】 ファイルの中身を出力 cat -n 【ファイルパス】 オプション 説明 -n 表示する内容に行番号をつける 【head】 ファイルの中身を先頭から指定行数だけ出力 head -【表示行数】 【ファイルパス】 【tail】 ファイルの中身を末尾から指定行数だけ出力 tail -【表示行数】 【ファイルパス】 【vi】 書き込み可能モードでファイルを開く vi -n 【ファイルパス】 オプション 説明 -n 表示する内容に行番号をつける 【view】 読み取り専用モードでファイルを開く view -n 【ファイルパス】 オプション 説明 -n 表示する内容に行番号をつける 【touch】 ファイルを新規作成 touch 【ファイルパス】 【diff】 ファイルの差分を出力 diff -u 【ファイルパス】 【ファイルパス】 オプション 説明 -u 削除行に「-」、追加行に「+」をつける 【cp】 ファイルやディレクトリのコピー cp -riap 【ファイルパスまたはディレクトリパス】 オプション 説明 -r ディレクトリごとコピー -i 同名のファイルが存在する場合には、上書きするかどうかをユーザに確認する -a コピー元ファイルの構成と属性を可能な限り保持してコピー -p 日付、フラグなどのファイル情報を出来る限りそのままにコピー 【mv】 ファイルやディレクトリを移動 mv -i 【移動元ファイルパスまたはディレクトリパス】 【移動先ファイルパスまたはディレクトリパス】 オプション 説明 -i 同名のファイルが存在する場合に上書き可否の確認をする 【rm】 ファイルやディレクトリの削除 rm -i 【ファイルパス】 rm -ir 【ディレクトリパス】 オプション 説明 -i 削除するかどうかをユーザに確認 -r ディレクトリを削除する場合につける 【find】 ファイルやディレクトリを検索 find / -name 【ファイルパスまたはディレクトリパス】 -type 【dまたはf】 オプション 説明 -name 検索する名称を指定 -type フォルダ名検索:「d」 ファイル名検索:「f」 「sudo」でroot権限を使用すると全ファイル・全ディレクトリを検索できるので「sudo」を先頭に追加する場合も多い 【mkdir】 ディレクトリ作成 mkdir 【ディレクトリパス】 【cd】カレントディレクトリの変更 cd 【ディレクトリパス】 【pwd】カレントディレクトリの絶対パスを表示 pwd 【ls】 ファイルやディレクトリを一覧出力 ls -l 【ファイルパスまたはディレクトリパス】 ls -la 【ファイルパスまたはディレクトリパス】 オプション 説明 -l 最終更新日時やオーナーやパーミッションなどを表示 -a 隠しファイルも表示 【chmod】 パーミッション変更 chmod 【3桁の数字(755など)】 【ファイルパスまたはディレクトリパス】 【chown】 所有者(オーナー)の変更 chown 【所有者名】 【ファイルパスまたはディレクトリパス】 chown 【所有者名】:【グループ名】 【ファイルパスまたはディレクトリパス】 chown -R 【所有者名】 【ディレクトリパス】 オプション 説明 -R ディレクトリ内の所有者もまとめて変更 【所有グループ名】を変えたい場合に :【グループ名】 を指定する。 【>>】 コマンド実行による出力内容をファイルにも出力(追記形式) 【任意のコマンド】 >> 【ファイルパス】 「>」が1つの場合は、上書き形式となり、コマンド実行前に同名のファイルがある場合は、ファイルの内容を削除し、実行結果を上書きします。本来は用途に応じて使い分けますが、間違えた場合にファイル内容が削除されるリスクがあるため、今回は「>>」の場合のみを記載しています。 【su】 ユーザー切り替え su - 【ユーザー名】 警告 「-」がなくてもユーザー切り替えができますが、プロファイルのリロードが行われません。(中途半端なユーザ切り替えになります。) 特段理由のない場合は「-」をつけてください。 【echo】指定した内容を画面上に表示 echo $? 上記は、直前に実行したコマンドの戻り値を表示 【clear】画面上のコンソールログをクリアする clear 【history】 起動中のプロセス情報を表示 history history 【表示行数】 オプション 説明 【表示行数】 表示する行数の数字(末尾からカウント) 【helpオプション】 コマンドの説明を表示 【任意のコマンド】 --help 以下は編集中 ここから下は編集中です。 【ps】 起動中のプロセス情報を表示 ps -aux | grep '【プロセス名】' オプション 説明 -a -u -x 【df】 df -h 【free】 free -m
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

M1MacでLinux環境を構築する〜デスクトップ作成編

今回のお題 本記事は、M1MacでLinux環境を構築するの一部です。 前回の記事で、M1Macの中にLinuxOSの仮想マシンを作成しました。 ただし現状はターミナルが扱えるようになっただけですので、今回はそちらにデスクトップを導入し、通常のPCとしても扱えるようにしていきます。 デスクトップ機能が不要だという方につきましては、サーバー構築編にお進みください。 手順 Ubuntu Desktopのインストール 前回までの作業でLinuxのターミナルが使えるようになっているはずなので、そこに以下のように入力します($はプロンプトなので入力不要)。 $ sudo apt install tasksel $ sudo tasksel install ubuntu-desktop sudoコマンドを用いているのでパスワードの入力が必要になります。 前回決めたものを入力してください。 なお、aptとtaslselはともにubuntuで用いられるパッケージ管理ツールです。 調べた範囲ではあまり両者の違いはわからなかったのですが、ubuntuに標準で組み込まれているのがaptで、今回のubuntu-desktopのような一部のパッケージに関しては別途でtaskselを用いた方が都合が良いという感じでしょうか。 何はともあれ上記のコマンドを叩くと以下のようなダウンロード画面になります。 見にくいですが、ダウンロード状況が100%になると一番下にプロンプトが現れます。 このようになっていれば左上の電源ボタンを押して一度仮想マシンを再起動しましょう。 以下の1枚目のようにログイン画面になるので、ユーザー名を選択後にパスワードを入力すると、2枚目のようなデスクトップが表示されます。 【1枚目】 【2枚目】 設定をどうするかを聞かれますが、最初は基本的にデフォルトのままでOKです。 右上のNextを何回か押してください。 最後の設定項目になるとNextがDoneに変わるのでそのままクリックすると、以下のような画面になります。 デスクトップにはユーザー名のファイルとゴミ箱があります。 また、左端のサイドメニューにはブラウザのfirefoxやメールアプリのThunderbird mailなどもあります。 これで、デスクトップとして使おうと思えば使える状態になりました。 ですが個人的には、 画面表示を英語から日本語に変更 はしておいた方が使いやすいです。 この辺りが不要な方、一刻も早くサーバーを立ち上げたいという方に関しては以下の作業は不要になりますので、サーバー構築編にお進みください。 それでは、仮想マシンの設定を変更していきます。 画面表示の切り替え(英語→日本語) まずは画面左下の角の部分にある点が9個並んだマークをクリックし(ポインタを乗せているとShow Applicationsと表示されます)アプリを一覧表示した後、歯車マークの設定アプリを開きます。 すると以下のような画面になるので、Regeon & Languageを選択します。 以下の画面でManage Installed Languagesを選択します。 以下のウィンドウが開くので、Install/Remove Languagesを選択します。 Japanesにチェックを入れた状態で、Applyを選択します。 以下の画面が表示されます。 日本語が選択可能になっていることがわかりますが、設定は英語のままですね。 一旦はこのままでcloseします。 設定画面を一度閉じた後に再度開くと以下のようになっています。 ここでLanguageをEnglishから日本語に、FormatsをUnited Statusから日本に変更すると以下のように日本語の下にRestartと出てくるので選択します。 一旦ログアウトがかかりますが、再度ログインし直すと表示が日本語になっています。 ちなみに、初回ログイン時は以下のようにフォルダ名を日本語に変更するかも聞かれますが、ここに関しては変更なしで良いかなと個人的には思います。 これで画面表示が日本語になりました。 次はいよいよサーバーを立ち上げます。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

M1MacでLinux環境を構築する〜インストール編

本記事の目的 本記事は、M1MacでLinux環境を構築するのインストール編です。 M1Mac上にLinuxサーバーを構築するまでの工程の一つとして、MacにLinuxサーバーをインストールし、仮想マシンを構築する部分までを行います。 実行環境などに関しては、上記のリンクをご覧ください。 前提知識 最初に前提知識の整理をしておきます。 釈迦に説法だという方は読み飛ばしてください。 一応、エミュレータやディストリビューションの選択理由についても軽く触れています。 Linuxとは Linuxとは、UnixOS(MacOSのベースになっているもの)をベースに作られているオープンソースのOSのことを指します。 原則として無料で利用でき、また複数のサーバー上に同一の環境を再現することが容易であることからサーバー用のOSとしてのシェアが年々拡大しています。 Linuxディストリビューション LinuxはオープンソースのOSであるため、公式版とは別に有志によって作成された改良版が存在します。 前者はLinuxカーネル、後者はLinuxディストリビューションと呼ばれており、ディストリビューションの代表例としてubuntu, Debian, CentOSなどが挙げられます。 今回はディストリビューションとしてubuntuを選択しましたが、これは探した限りでは他に情報がなかったためです。 しっかりと調べればもっと良い選択があるかもしれません。 エミュレータとは 特定のPC向けに開発されたOSやソフトウェアを他のマシンで利用できるようにするためのソフトのことをエミュレータと呼びます。 エミュレートとは真似るという意味なので、(今回でいえば)MacでLinuxの真似をできるようにするためのソフトという意味合いでしょうか。 なお、今回はエミュレータとしてUTMというソフトを利用しました。 選択理由としては他のエミュレータの利用例があまりなかったことに加えて、無料で利用できることが挙げられます(有料で良いのであれば、Parallels Desktop for Macなどがある)。 なお、UTMには無料で利用できるGitHub版以外にも有料のAppStore版が存在します。 後者であれば自動でアップデートされるという利点があるので、長期利用を検討中の方はそちらでも良いかもしれません。 手順 Linuxディストリビューションのインストール 最初にLinuxディストリビューションをインストールします。 こちらからLTS版のubuntuをインストールしてください。 把握できていれば保管場所はどこでも大丈夫です。 インストールできたら、UTMのインストールに移ります。 UTMのインストール HomebrewからUTMをインストールします。 UTMはGUIアプリらしいので、--caskオプションが必要になります。 % brew install --cask utm インストール完了後にアプリを起動してください(基本的にはアプリケーションフォルダに入ります)。 以下の画面が立ち上がります。 左側にあるサイドメニューのlinux_practice_1は私が作成したものですが、初期状態であれば何も表示されていないはずです。 ここから仮想マシンを作成していきます。 仮想マシンの作成 上記画面の中央にあるCreate a New Virtual Machineを選択すると以下のような画面になります。 画面上部にInfomation, Systemなどのメニューが並んでいますが、このタイミングで触るのはInfomation(仮想マシンの概要)とSystem(チップの指定とメモリの割り当て)とDrives(保存用のディスクの指定)のみです。 Infomationの部分については本来は任意なのですが、今後複数の仮想マシンを立てた場合のことを考えると識別のために設定しておいた方が無難です。 画面上部のNameをVirtual Machineからお好きな仮想マシン名に、下部のStyleをGenericからOperating Systemに変更しておきましょう(以下参照)。 今回は一応Notes(説明文)も追加しておきました。 次にSystemの設定を行います。 上記の画面のArchitectureをx86_64からARM64(aarch64)に変更し、Memoryも初期状態の512MBからある程度増やしておきましょう(今回は4096MB,以下参照)。 最後にDriveに移ります。 最初は1枚目の状態になっており、右上のNew Drivesをクリックすると2枚目の状態になります。 ここでは保存用のディスクを2枚(1枚目と2枚目参照)作成します。 すると3枚目の状態になるので右下のsaveを選択してください。 1枚目(Interface: VirtIO, Size: 20GB) 2枚目(Removable, Interface: USB) 3枚目(完成図) ここまでの作業が完了すると、UTMの画面が以下のようになります。 これで、Linuxディストリビューションを流し込む仮想マシンの受け皿が作られました。 なお、先ほど設定したメモリの割り当て量などに関しては、作成された仮想マシンを右クリックし、editを選択することで変更可能です。 ISOイメージの焼き付け 先ほど作成した受け皿に、最初にダウンロードしておいたubuntuのISOイメージを流し込みます。 上記の写真の一番下にあるCD/DVDの部分をクリックしてBrowserを選択してください。 PCのfinderが立ち上がると思うので、インストール済みのubunntuのISOイメージを選択します。 この状態で仮想マシンをクリックすると立ち上がります。 最初は上記の画面になるので、Install Ubuntu Serverを選択してください。 しばらくすると以下の画面になります。 表示される言語の選択画面になるので、Englishを選択します(日本語はありません)。 キーボードタイプの選択画面になるので、お使いのものに合わせて選択してください。 画面中央部のIdentify keyboardを選択するとキーボードの種類を診断してもらうことができますが、あまり精度は良くなさそうです(私はヘブライ語と診断されました)。 その後に出てくる画面については、以下の通りです。 5回連続で何も変更せずにdoneを選択します。 1枚目 2枚目 3枚目 4枚目 5枚目(ここでdoneを選択した後に出てくる画面ではContinueを選択してください。) Continueを選択 ユーザー名・パスワードなどを入力 以下の2つの画面は何も変更せずにdoneを選択。 1枚目 2枚目 ダウンロードが始まり以下の画面になる。 一番下がCancel update and reboot(一枚目)からReboot Now(2枚目)に変わったらリブートを選択する。 1枚目 2枚目 リブートを選択してしばらくすると画面が暗転してそのまま変化しなくなります。 そうなったら画面左上の電源ボタンを押して一度仮想マシンを終了させた後に以下1枚目の画面のCD/DVDを選択してClearに戻してください(2枚目のようにemptyになれば成功)。 1枚目 2枚目 この状態で再度仮想マシンを起動すると以下の画面が表示されます。 ここで先ほど作成したユーザー名とパスワードを入力すると、以下のようにターミナルが操作できるようになります。 これがいわばLinuxのターミナルを立ち上げた状態です。 では、早速このターミナルを用いて操作をしてみましょう。 パッケージの更新 ターミナルに以下のコマンドを入力します。 $ sudo apt update $ sudo apt upgrade 上記のコマンドを打つことで、仮想マシン上のソフトウェアに対して更新がかかります。 更新作業本体を担当しているのはupgradeの方で、updateは更新すべきソフトウェアの有無を確認するためのコマンドになります。 また、 $ sudo apt --list-upgradable と入力することで、更新可能なパッケージのリストを表示することもできます。 終わりに というわけで、仮想マシンを構築し、ターミナル操作ができるようにするところまでは完了しました。 この状態でもコマンドライン操作は受け付けますが、GUI操作は全くできません。 なので次回は、Ubuntu Desktopというアプリをインストールし、GUI操作ができるようにしていきます(ブラウジングなどの通常のPCの用途にも対応するようになります)。 コマンド操作のみで大丈夫だという場合には、いきなりサーバー構築に進んでいただいて大丈夫です。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

M1MacでLinux環境を構築する

はじめに 今回は、M1Mac上にLinux環境を構築する方法について取り上げます。 M1Mac上でのLinuxOsの構築方法については少しづつ知見が増えてきましたが、依然として情報が錯綜していたりソースごとに食い違いがあったりと、慣れていない場合にはなかなか理解が厳しい状況です。 私自身Linux環境の構築自体が初挑戦だったのですが、幸か不幸か手元のPCがM1Macであり環境構築に苦労したので、備忘録も兼ねて実行手順を残しておきます。 M1Macの発売時期から考えるに、この1年ほどでプログラミングの学習を始めた方にはPCがM1Macというパターンが多いと思いますの。 私と似た境遇の方のお役に立てれば幸いです。 実行環境 項目 バージョンなど PC M1MacBookAir(2020年モデル/メモリ8GB/ストレージ512GB) OS 12.0.1 エミュレータ UTM(GitHub版) Linuxディストリビューション Ubuntu 20.04.3 LTS 今回の記事で実施すること M1Mac上にLinuxOSをインストールし、最低限の動作(ブラウザ検索など)ができるようにする。 MacOS上からLinuxのシェルに入り操作を行えるようにする。 ローカル環境でサーバーを立ち上げ(nginx, apache2)、MacOS上および他の端末からLinuxサーバーにアクセスできるようにする。 お断り 本記事は解説書というよりは手順書を作る目的で作成しました。 そのため、なぜこのようにすれば良いのかという部分については触れていない、あるいは私自身の理解が足りていない部分もあるかとは思いますがその点についてはご了承ください。 個別記事
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

M1MacでLinux環境を構築する〜サーバー構築編

今回のお題 本記事は、M1MacでLinux環境を構築するの一部です。 前回まででLinuxOSの仮想マシンを作成し、デスクトップとしても扱えるようにしました。 今回は最終章として、いよいよサーバーを立ち上げます。 本記事のゴール 仮想マシン上にnginxおよびapache2のローカルサーバーを立ち上げる 立ち上げたサーバーにMacOSおよびに他の(同一ネットワーク上の)デバイスからもアクセスできるようにする。 注意点 各作業を仮想マシンとMacOSのどちらで行っているのかを間違えないようにしてください。 今回は仮想マシン外部からもサーバーにアクセスする都合上、サーバー構築そのものの作業も途中からは仮想マシンではなくMacOS上で行います。 そのため、この作業を行っているのが仮想マシンとMacOSのどちらなのかを意識して作業にあたるようにしてください。 手順 ポートの追加 まずは、作成した仮想マシンにサーバー用のポート番号を追加していきます。 電源ボタンを押して仮想マシンを停止させた後、UTMの最初の画面に戻って仮想マシンを右クリックし、editを選択します。 上部のメニューから、今回はNetworkを選択します。 最初は上記のような画面になっていると思います。 Network ModeをShared NetwokからEmulated VLANに変更すると右下にNewボタンが出てくるので、そちらをクリックします。 Newボタンの下に以下のような窓が出てくるので、Guest AddressとHost Addressは空欄のまま、Guest PortとHost Portにはそれぞれ80と入力してSaveします。 先ほど80と入力した部分を22と443に変更して同じ作業を合計3回繰り返すと、以下の画面になるかと思います。 この状態になっていれば、そのままsaveします。 ファイアウォールとポートの接続設定 ポートの追加ができたので、再び仮想マシンを立ち上げてターミナルに入ります。 まずは以下のコマンドで、ファイアウォールの状態を確認します。 $ sudo ufw status おそらく状態:非アクティブと出たと思います。 なので以下のコマンドを打ってアクティベートします。 $ sudo ufw enable ファイアウォールはアクティブかつシステムの起動時に有効化されます。と表示されれば成功です。 これで、サーバーへの接続に対してファイアウォールが有効になりました。 次に、以下のコマンドを用いて特定のポートへの接続を許可していきます。 $ sudo ufw allow 80 $ sudo ufw allow 22 $ sudo ufw allow 443 ルールを追加しましたと表示されれば成功です。 これで80, 22, 443番ポートにはアクセス可能、それ以外へのアクセスはファイアウォールにガードされてるという状態になりました。 sshの導入 sshとは、コンピュータを外部から操作するための仕組みです。 これを用いることで、MacOS上から仮想マシンを操作したり、他の端末から仮想マシンのサーバー上にアクセスしたりできるようになります。 以下のコマンドを用いて、sshの導入とsshdの立ち上げを行います(sshdはsshで操作される側のコンピュータのことです)。 $ sudo apt install ssh $ systemctl start sshd 上記のコマンドを入力するとパスワードを求められます。 パスワード入力後は画面に何も表示されませんが問題ありません。 ここまで完了したら一旦仮想マシンはそのままにして、MacOSのターミナルに移ります。 サーバー構築 いよいよサーバーを構築します。 前項で触れたように、ここから先の作業はMacOSのターミナルで行います。 具体的にはMacOSのターミナルの中から仮想マシンのシェルに入り、仮想マシンの操作をするという形です。 まずは以下のコマンドで仮想マシンのシェルに入ります。 % ssh "仮想マシンのユーザー名"@127.0.0.1 # 以下でもOK % ssh "仮想マシンのユーザー名"@localhost 成功すると、プロンプト前のユーザー名@サーバー名がMacのものから仮想マシンのものに変化します。 注意 もし @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ のようなアラートが表示された場合には、 $ ssh-keygen -R 127.0.0.1 と一度入力してから再度接続を試してください。 サーバーの立ち上げ 仮想マシンのシェルに入れたので、いよいよサーバーを立ち上げます。 今回はnginxを例に取りますが、nginxの部分をapache2に読み替えていただければapacheサーバーの立ち上げも同じ手順で可能です。 まずは、サーバー用のソフトをインストールします。 $ sudo apt install nginx これでnginxサーバーが使えるようになりました。 サーバーが起動しているかどうかの確認は、以下のコマンドで可能です。 $ systemctl status nginx.service 結果(緑の部分がactiveなら起動中) また、上記の画面から出るにはCtrl+Cを押してください。 サーバーの起動状態については、 $ systemctl start nginx.service $ systemctl stop nginx.service で可能です。 サーバーへの接続 サーバーが立ち上がっていることが確認できたら、実際に接続してみましょう。 macでブラウザを立ち上げて127.0.0.1と入力するか、他のデバイス(同一のwifiにつながっていることが条件)でM1MacのIPアドレスを入力してください。 nginxとapache2それぞれで以下のような画面が表示されれば成功です。 ログアウト 仮想マシンのシェルから抜けてMacのシェルに戻る際にはexitコマンドを用います。 終わりに 以上でM1Mac上にLinuxサーバーを構築することができました。 同じような境遇の方のお役に立てれば幸いです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS EC2でWebサーバを構築しよう Part2

AWS EC2でWebサーバを構築しよう Part2 Part1をまだ見ていない方は、こちらからご覧ください EC2のインスタンスを作成しよう AWSのマネジメントコンソールに遷移すると、サインイン画面が表示されますので、「ルートユーザー」を選択してログインしてください。 ログインが完了するとAWSのホーム画面が表示されます。右上にあるリージョンを「東京」に変更してください。 (デフォルトのオハイオリージョンのままだと、日本からのアクセスだと遅くなってしまいます。) マネジメントコンソール画面が表示されます。今回はEC2を使うので、「仮想マシンの起動」をクリックしてください。 サーバのOSを選択する画面が表示されます。私が大好きなRedHatEnterpriseLinuxが無料利用枠の対象ですので、今回はこちらを使っていきます。 ※RedHatEnterpriseLinuxは企業や軍事レベルで使われている、安定したOSですのでオススメです。 (あと名前とロゴがイケてる) インスタンスタイプの選択画面が表示されます。高性能なインスタンスタイプを選択すると高額になります。ここでは12ヶ月無料利用枠の対象であるt2.microを選択します。 ※アカウントを新規登録してから12ヶ月は無料利用枠があり、利用枠の範囲内であれば無料でAWSの様々なサービスを利用することができます。 インスタンスの詳細設定画面が表示されます。特にこのまま変更せず、「次のステップ:ストレージの追加」をクリックしてください。 ストレージの追加画面が表示されます。デフォルトでは10GBのストレージですが、30GBまでは無料利用枠の範囲内ですので30GBに変更しちゃいましょう。 タグの追加画面が表示されますが、このまま「次のステップ:セキュリティグループの設定」をクリックしてください。 VPC(セキュリティグループ)の設定をしよう セキュリティグループの設定画面が表示されます。開放したいポートをここで設定します。SSHとHTTPとHTTPSの3つのルールを追加しましょう。 SSH,HTTP,HTTPSのルールを追加するとこのような画面になるかと思います。問題なければ、「確認と作成」をクリックしてください。 長かったですが最終ステップです。今まで設定した項目に問題がないか確認してみてください。問題が無さそうであれば右下にある「起動」をクリックしてください。 サーバに接続するために必要な秘密鍵の作成画面が表示されます。 「新しいキーペアの作成」を選択して、RSAを選択して、好きなキーペア名を入力してください。 ここではaws2021としました。 秘密鍵を作成すると、インスタンスが作成されます。 予期せぬ請求額に気付けるように請求アラートの作成も設定しておくことをオススメします。 インスタンスへログインしてみよう インスタンスが作成されると、インスタンス(1)となっているはずです。インスタンスIDの青文字の部分をクリックしてください。 インスタンス概要ページが表示されます。右上にある「接続」をクリックしてください。 接続画面が表示されます。今回はMacのターミナルを用いて接続しますので、SSHクライアントをクリックしてください。 先程作成したaws2021.pemが存在する場所までターミナルで移動して、例に書いてあるコマンドを実行してください。(ssh -i から始まるコマンド) 初回接続時にこのような事を言われると思いますが、yesを入力してください。 RedHatEnterpriseLinuxのライセンスを登録しよう # 言語パック(日本語)をインストール sudo dnf -y install langpacks-ja # Viでサブスクリプションマネージャの設定ファイルを編集 sudo vi /etc/yum/pluginconf.d/subscription-manager.conf (enabled=1を0に変更してください) # Viのかんたんな使い方(ViはVimの簡易版みたいなやつで、デフォルトでインストールされてます) Escキー 操作モード Aキー 入力モード (操作モードの状態で):wq 保存して終了 Nginx(Webサーバ)をインストールしよう サーバに接続できたら、以下の手順でNginxをインストールしてみましょう # nginxをインストール (-y を付与することでインストール時の確認を省略) sudo yum install -y nginx # nginxを起動 sudo systemctl start nginx # サーバ起動時にnginxを起動するように設定 sudo systemctl enable nginx # (オプション)nginxが起動しているか確認 sudo systemctl status nginx これでNginxのインストールは完了です!お疲れ様でした! サーバのIPv4アドレスにアクセスしてみよう AWSのインスタンス概要ページにあるIPv4パブリックアドレスにアクセスしてみましょう。 Welcome to Nginxのページが表示されていたらNginxのインストール、VPCの設定が正常に完了しています! お疲れさまでした! FileZilla(ファイル転送ソフト)をインストールしよう こちらからFileZillaをインストールしてください FileZillaを起動するとこのような画面が表示されます。左上にあるアイコンをクリックしてください。 サイトマネージャーが開きます。以下の設定に変更してください。 プロトコル:SFTP ホスト:インスタンスのIPv4アドレス ログオンタイプ:鍵ファイル ユーザ:ec2-user 鍵ファイル:インスタンス作成時に作成した鍵ファイルを指定 接続時にこのようなダイアログが表示された場合はOKをクリックしてください。 接続に成功するとリモートサイトに「/home/ec2-user」と表示されています。 これは、ec2-userのホームディレクトリが表示されています。 Nginxのディレクトリに移動したいので/usr/share/nginx/html と入力してください。 このような表示になっていると、正常にNginxのディレクトリに移動できています。 デフォルトでは、 Nginxは/usr/share/nginx/html配下にあるディレクトリからウェブページを配信します。 「サーバのIPv4アドレスにアクセスしてみよう」で表示されたWelcome to Nginxのページは、この配下にあるindex.htmlが表示されています。 クソデカうんちのウェブページをGitHubからダウンロードしよう Nginxのインストールも無事に終わり、FileZillaでファイルを転送する準備ができました。 いよいよクソデカうんちページをNginxから全世界に配信できます! 私のGitHubからbig-untiのリポジトリをダウンロードしてください。 GitHub big-unti GitHubページの「Code」をクリックして「Download ZIP」をクリックするとダウンロードできます。 ダウンロードしたら展開してください。 FileZillaを使ってファイルを転送しよう 先程ダウンロードしたファイルをFileZillaで/usr/share/nginx/htmlにアップロードすればOKなのですが、恐らく権限エラーが表示されます。 それは、ec2-userが/usr/share/nginx/htmlにファイルを書き込む権限を有していないためです。 まずは、以下のコマンドを入力してください。 # /usr/share/nginx/html以下のディレクトリの所有者をec2-userに変更する sudo chown -R ec2-user /usr/share/nginx/html ec2-userで/usr/share/nginx/htmlにファイルを書き込む権限を得たので、FileZillaでファイルを転送していきましょう。 FileZillaで/usr/share/nginx/htmlのディレクトリを表示した状態で、先程のクソデカうんちのウェブページ(css,images,index.htmlなど)をドラッグ&ドロップしてください。 ファイルが転送されます。(上書きの確認画面が表示された場合は、上書きをしてください。) 全世界にクソデカうんちのウェブページを公開してみよう FileZillaでファイルを転送したら、インスタンスのIPv4アドレスをブラウザのアドレスバーに入力してアクセスしてみてください。 きれいな可愛いクソでかうんちくんが表示されたら成功です! お疲れ様でした。 まとめ 本当はSSHとかSFTPとか公開鍵暗号方式とか、色々説明しながら書きたかったんですが後日追加したいと思います。 初めてのQiita記事だったので、「こういう所直したほうがいい」とか「ここ間違ってるよ」とかありましたら教えてくださると幸いです。 ここまで長い間見ていただきありがとうございました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS EC2でWebサーバを構築しよう Part1

AWS EC2でWebサーバを構築しよう Part1 このシリーズでは、AWS EC2でWebサーバを構築する方法を解説していきます。 AWSのアカウント作成から解説しているため、既にアカウントを持っている方はゴール(目標)だけ見てPart2へ進んでOKです! ゴール(目標) 「AWSのEC2上でNginxを動かして全世界にクソデカうんちページを公開する」 ※クソデカうんちページはこちらで開発したので、GitHub上からダウンロードしてもらいます! AWSってなに? AWSはAmazon Web Servicesの略です。 Amazonのクソデカサーバを使って、仮想サーバを構築したり(EC2)、データを格納したり(S3)、データベースサーバを構築したり(RDS)、様々なことができます。 今回のシリーズでは、AWSのEC2を使ってWebサーバを構築していきます。 ちなみに、AWSには他にも沢山のサービスがありますが、ここで紹介するとPart100くらいにまでなってしまうため割愛させていただきます。 AWSのアカウントを作成しよう AWS公式ページにアクセスして、右上にある「今すぐ無料サインアップ」をクリックしてください。 サインアップページが表示されますので、「メールアドレス」「パスワード」「AWSアカウント名」を入力してください。 AWSの利用目的、フルネーム、住所などの連絡先情報を入力してください。 電話番号は日本の場合 +81 を先頭につけて、最初の0を削除して入力してください。(例:08012345678 → +818012345678) 請求情報の入力画面が表示されるので、クレジットカードやデビットカードの番号を入力してください。 デビットカードの場合、口座に数百円以上の残高がないと登録できない可能性があるので注意してください。(登録時に、カードが使えるか1~200円程度の引き落としを行うため) 本人確認の画面が表示されるので、電話番号を入力してください。 電話番号に送られてきたコードを入力してください。 AWSのサポートプラン選択画面が表示されます。無料のベーシックサポートプランを選択して「サインアップを完了」をクリックしてください。 このような画面になればAWSのアカウント作成は完了です!お疲れ様でした! 「AWSマネジメントコンソールへ進む」をクリックすると、AWSのホーム画面に飛びます。 Part2に続きます こちらをクリックしてPart2をご覧ください
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

オリジナルCコンパイラ neo-c2 version 1.5.0リリースです。BoehmGCをデフォルトとしました。

タイトル通りです。オリジナルヒープシステムはいずれ消します。 neo-c2でPython処理系を作っているとオリジナルヒープシステムにバグが見つかって デバッグで悶えて死にそうになってました。 一人でブツブツ言いながら、必死でデバッグしてたら、嫁には離婚だと言われるし。 あとの余生はオリジナルPython処理系をBoehmGCを使ったお気楽neo-c2で作って行きたいと思います。 僕はイチローや大谷になりたかったのかもしれませんが、所詮は凡人です。 Rustは作れません。白人様ほど頭が良くありません。 男は諦めが肝心ですね。女の一念岩をも通すと言いますが僕は女じゃありません。 東大はどんなガリ勉しても、受かりません。 とりあえずCコンパイラの方はオリジナルのヒープシステムを消して、ちょっとソースを整理します。 viクローンの方もBoehmGCを使ったものとなってます(ソースコードレベルでは互換性があるので、特に変更は加えてませんが) Python処理系を作るのが楽しみですね。あとはJava Script処理系も気が向けば実装したいと思います。 Let's enjoy Programing!!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む