2025/1/8　学習記録

## 現状：
エンジニアへの未経験転職。
就職先も決まり、2月からひよこエンジニアに。

2025年は頑張ろうということで、2025年学習記録8日目。
（昨日は実家の相談で学習なし）

内容は常に書き散らしのメモです、あしからず。

当面の目標：LPIC101,102合格

# Ruby（paiza）
- まだCランクしか無理なので日々頑張る。
```
S = gets.chomp
T = gets.chomp

# 一文字ずつ分解
# 一致する文字列があるかsort
# 無ければその文字を大文字または小文字に変換する

T_array = T.split("")

for i in T_array do
    unless S.include?(i)
        i.swapcase!
    end
end

conT = T_array.join

puts conT
```

## `swapcase`メソッド

文字列内のすべての大文字を小文字に、すべての小文字を大文字に変換する。

`swapcase`メソッドは非破壊的で、元の文字列を変更せずに新しい文字列を返します。元の文字列を直接変更したい場合は、破壊的メソッドである`swapcase!`を使用します[3]:

### 使用例

```ruby
str = "Hello World"
swapped_str = str.swapcase
puts swapped_str  # 出力: "hELLO wORLD"

```

```ruby
str = "Hello World"
str.swapcase!
puts str  # 出力: "hELLO wORLD"

```

このメソッドはUnicode文字列にも対応しており、アルファベット以外の文字（数字、記号、日本語など）はそのまま保持されます[3]。

### Citations:

[1] [https://dev.cajon.co.jp/how/ruby/ruby文字列の大文字変換と小文字変換の方法/](https://dev.cajon.co.jp/how/ruby/ruby%E6%96%87%E5%AD%97%E5%88%97%E3%81%AE%E5%A4%A7%E6%96%87%E5%AD%97%E5%A4%89%E6%8F%9B%E3%81%A8%E5%B0%8F%E6%96%87%E5%AD%97%E5%A4%89%E6%8F%9B%E3%81%AE%E6%96%B9%E6%B3%95/)
[2] https://qiita.com/mat827/items/ebfe189d652b619b3e6d
[3] https://job-info.hateblo.jp/entry/2024/08/24/165630
[4] https://docs.ruby-lang.org/ja/2.3.0/method/String/i/upcase.html

## `join`メソッド

配列の要素を連結して文字列に変換する。

### 使用例

```ruby
original_string = "foo,bar,baz"
array = original_string.split(',')
restored_string = array.join(',')

puts restored_string  # 出力: "foo,bar,baz"

```

joinメソッドの引数には、元の文字列で使用されていた区切り文字を指定します。この例では、カンマ(',')を使用しています[6]。

joinメソッドに引数を渡さない場合、単純に要素同士を結合して文字列に変換します[4]。例えば:

```ruby
array = ['foo', 'bar', 'baz']
result = array.join

puts result  # 出力: "foobarbaz"

```

### Citations:

[1] http://taustation.com/ruby-string-array-range-comversion/
[2] https://www.delftstack.com/ja/howto/ruby/array-to-string-ruby/
[3] https://qiita.com/beanzou/items/a9253ee083aeac9fc608
[4] https://kyoheiex.hatenablog.jp/entry/2024/07/01/115806
[5] https://pikawaka.com/ruby/split
[6] https://rubytips86.hatenablog.com/entry/2014/03/25/141326
[7] https://pikawaka.com/ruby/to_a


# Linux

## `APT（Advanced Package Tool）`

Debian系のLinuxディストリビューションで使用されるパッケージ管理システム。

### 概要

- **パッケージ管理**: APTは、ソフトウェアのインストール、更新、削除を自動的に行うためのシステムであり、ユーザーが手動で依存関係を解決する必要がありません[1][3][9]。
- **リポジトリとの連携**: APTは、インターネット上のリポジトリからパッケージを取得し、これにより最新のソフトウェアを簡単にインストールできます[2][6][8]。
- **依存関係の解決**: 必要なパッケージを自動的にインストールし、ソフトウェア間の衝突を回避します[1][4][6]。

### 主なコマンド

- **`apt-get`**: パッケージのインストールやアップデートを行うためのコマンドです。例えば、`apt-get install package_name`で指定したパッケージをインストールします[2][4][6]。
- **`apt-cache`**: パッケージ情報の検索や表示を行うためのコマンドです。例えば、`apt-cache search keyword`でキーワードに関連するパッケージを検索します[2][4][7]。
- **`aptitude`**: より高機能なパッケージ管理ツールで、対話的な操作や高度な検索機能を提供します[1][3][9]。

### 特徴

1. **ユーザーフレンドリー**: シンプルなコマンドで操作できるため、初心者でも扱いやすい[1][6]。
2. **オフライン操作**: 一度キャッシュされたパッケージ情報を利用してオフラインでも操作可能です[2]。
3. **広範なサポート**: Debianだけでなく、その派生ディストリビューション（Ubuntuなど）でも広く使用されています[1][9]。

### Citations:

[1] https://linuc.org/study/knowledge/432/
[2] https://envader.plus/course/5/scenario/1029
[3] https://e-words.jp/w/APT.html
[4] https://www.infraexpert.com/infra/linux09.html
[5] https://www.debian.org/doc/manuals/debian-faq/pkgtools.ja.html
[6] https://xexeq.jp/blogs/media/it-glossary34
[7] https://pineof.com/advanced-package-tool/
[8] https://qiita.com/tttmurakami/items/59c8552c7b6fb6498c73
[9] https://ja.wikipedia.org/wiki/APT



## `rpm2cpio`
RPMパッケージファイルをcpioアーカイブ形式に変換するコマンドラインツール

### 機能
- **変換**: 指定されたRPMファイル（.rpm）をcpio形式に変換し、その内容を標準出力に出力します。
- **標準入力の利用**: 引数に「-」を指定することで、標準入力からRPMデータを読み込むことも可能です。

### 使用例
1. RPMファイルをcpio形式に変換して出力する:
   ```bash
   rpm2cpio package.rpm > package.cpio
   ```
2. 標準出力に直接出力し、cpioコマンドと組み合わせて使用する:
   ```bash
   rpm2cpio package.rpm | cpio -idv
   ```

### 目的
rpm2cpioは、RPMパッケージの内容を確認したり、特定のファイルを抽出したりする際に役立ちます。これにより、パッケージをインストールせずにその内容を調べることができます。

Citations:
[1] https://kazmax.zpp.jp/cmd/r/rpm2cpio.8.html
[2] https://ameblo.jp/hbnizm31/entry-11640549599.html
[3] https://qiita.com/hikotaro_san/items/d9798af514d7da2e89c1
[4] https://docs.oracle.com/cd/E56342_01/html/E54074/rpm2cpio-1.html
[5] https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/522rpmcpio.html
[6] https://qiita.com/tkj/items/0c4ea811b4c656db727a
[7] http://www.netlaputa.ne.jp/~utty/linuxmld/rpm2cpio1.html
[8] https://ja.manpages.org/rpm2cpio/8


- Linuxでは「2」を「to」のように使用する傾向がある？？？

## `cpio形式`

ファイルとディレクトリをアーカイブするためのフォーマット。

### 特徴

1. **アーカイブ形式**:
    - cpioは、複数のファイルを一つのアーカイブにまとめるための形式で、各ファイルの前にメタデータとしてヘッダー情報が付加されます。
2. **非圧縮**:
    - cpio自体はデータを圧縮しませんが、他の圧縮ツール（例えばgzip）と組み合わせて使用することが一般的です。
3. **ヘッダー構造**:
    - cpioアーカイブには、ASCII形式とバイナリ形式の2種類のヘッダーがあります。ASCII形式は人間が読める形でメタデータを保持し、バイナリ形式は機械可読性が高いです。
4. **互換性**:
    - cpioはUnix系システム間で広く互換性があり、さまざまなプラットフォームで利用可能です。
5. **用途**:
    - ソフトウェアの配布やデータバックアップ、システム管理などに利用されます。

### 使用例

- cpioコマンドを使用して、新しいアーカイブを作成したり、既存のアーカイブからファイルを抽出したりすることができます。

cpio形式は、特にファイル管理やバックアップ処理において便利なツールです。

### Citations:

[1] https://products.aspose.com/zip/ja/most-common-archives/what-is-cpio/
[2] https://docs.aspose.com/zip/ja/net/cpio-archiving/
[3] https://www.ibm.com/docs/ja/zos/2.4.0?topic=descriptions-cpio-copy-inout-file-archives
[4] https://www.ibm.com/docs/ja/zos/2.5.0?topic=formats-cpio-format-cpio-archives
[5] https://www.weblio.jp/content/cpio
[6] https://www.ibm.com/docs/ja/aix/7.2?topic=c-cpio-command
[7] https://surf.st.seikei.ac.jp/~nakano/JMwww/html/GNU_cpio/man1/cpio.1.html
[8] https://man.plustar.jp/manpage/man1/cpio.1.html

















### 今日はここまで！