UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド
前スレ
Part9 http://hibari.2ch.net/test/read.cgi/tech/1205795434/
Part8 http://pc11.2ch.net/test/read.cgi/tech/1147946176/
Part7 http://pc8.2ch.net/test/read.cgi/tech/1127373405/
Part6 http://pc8.2ch.net/test/read.cgi/tech/1116908090/
Part5 http://pc8.2ch.net/test/read.cgi/tech/1105723117/
Part4 http://pc5.2ch.net/test/read.cgi/tech/1095843584/
Part3 http://pc5.2ch.net/test/read.cgi/tech/1085930894/
Part2 http://pc5.2ch.net/test/read.cgi/tech/1055110889/
Part1 http://pc2.2ch.net/tech/kako/992/992057422.html
Part3のミラー
http://makimo.to/2ch/pc5_tech/1085/1085930894.html
Part2のミラー
http://makimo.to/2ch/pc5_tech/1055/1055110889.html
探検
UNIXプログラミング質問すれ Part10
レス数が900を超えています。1000を超えると表示できなくなるよ。
1unco ◆manko/yek.
2011/04/18(月) 17:06:36.77934デフォルトの名無しさん
2022/02/01(火) 13:10:18.35ID:V7jk2Rfu へー、Rustとか新しいの使えるんだ
UNIXってなんかバラバラで、みんな一体何をどう使って開発しているのか
全然想像つかないんだよね
Linuxみたいにapt-getでrust入れてーとかして使うの?
UNIXってなんかバラバラで、みんな一体何をどう使って開発しているのか
全然想像つかないんだよね
Linuxみたいにapt-getでrust入れてーとかして使うの?
935デフォルトの名無しさん
2022/02/01(火) 13:51:20.76ID:/+irRzAS この頃は Linux ばっかり使っている
UNIX がインストールされているマシンが身近にない
UNIX がインストールされているマシンが身近にない
936デフォルトの名無しさん
2023/08/24(木) 18:51:08.86ID:CY1BVKcv たとえば古い passwd ファイルの形式とかで使われていた
root:x:0:0:root:/root:/bin/bash
user01:x:500:500::/home/user01:/bin/bash
のような「:」区切りのテキストファイルのデータベースを扱いたいとき
C標準のライブラリは何ですか?
Rust用のcrateで言うと何ですか?
root:x:0:0:root:/root:/bin/bash
user01:x:500:500::/home/user01:/bin/bash
のような「:」区切りのテキストファイルのデータベースを扱いたいとき
C標準のライブラリは何ですか?
Rust用のcrateで言うと何ですか?
937デフォルトの名無しさん
2023/08/24(木) 20:05:39.07ID:AvQ+uDT8 Ruby なら、CSV モジュールを使う
require 'csv'
options = { col_sep: ":" } # 列区切り文字
CSV.foreach( "input.csv", options ) do |row| # 1行ずつ処理する
p row
end
出力
["root", "x", "0", "0", "root", "/root", "/bin/bash"]
["user01", "x", "500", "500", nil, "/home/user01", "/bin/bash"]
require 'csv'
options = { col_sep: ":" } # 列区切り文字
CSV.foreach( "input.csv", options ) do |row| # 1行ずつ処理する
p row
end
出力
["root", "x", "0", "0", "root", "/root", "/bin/bash"]
["user01", "x", "500", "500", nil, "/home/user01", "/bin/bash"]
938デフォルトの名無しさん
2023/08/25(金) 06:42:11.04ID:1ayFYibv >>831
Rust
区切るだけならstr.split(':')かstr.splitn(7, ':')が各項目のstrを次々と返してくれる
各項目毎に型(文字列や整数やOptionなど)フィールドを持つ構造体に入れるなら一般的にserde crateが万能
そのケースならcsv crateで':'をデリミタ指定すると容易
Rust
区切るだけならstr.split(':')かstr.splitn(7, ':')が各項目のstrを次々と返してくれる
各項目毎に型(文字列や整数やOptionなど)フィールドを持つ構造体に入れるなら一般的にserde crateが万能
そのケースならcsv crateで':'をデリミタ指定すると容易
939デフォルトの名無しさん
2023/08/25(金) 09:30:30.62ID:5+gJach+940デフォルトの名無しさん
2023/08/25(金) 10:27:32.18ID:5+gJach+ ちょと治した
https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=c7b6a2e68759ea120ea83d56bdc72021
file の reader で読むと
# Hello, and thanks for looking into the Rust Playground's security!
っていう行が勝手に先頭に足される
csv の reader で読むと余計な行が増えない
穴があるんかな
https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=c7b6a2e68759ea120ea83d56bdc72021
file の reader で読むと
# Hello, and thanks for looking into the Rust Playground's security!
っていう行が勝手に先頭に足される
csv の reader で読むと余計な行が増えない
穴があるんかな
941デフォルトの名無しさん
2023/08/25(金) 10:29:22.44ID:5+gJach+ ああ has_headers() が読み飛ばしてただけか
942937
2023/08/26(土) 03:49:56.11ID:wsJDYSi/ >>937
を修正。
2, 3列目を整数に変換する
require 'csv'
proc = Proc.new do |field, field_info|
case field_info.index
when 2, 3 then field.to_i
else
field # 処理なし
end
end
options = { col_sep: ":", :converters => proc } # 列区切り文字
CSV.foreach( "input.csv", options ) do |row| # 1行ずつ処理する
p row
end
出力
["root", "x", 0, 0, "root", "/root", "/bin/bash"]
["user01", "x", 500, 500, nil, "/home/user01", "/bin/bash"]
を修正。
2, 3列目を整数に変換する
require 'csv'
proc = Proc.new do |field, field_info|
case field_info.index
when 2, 3 then field.to_i
else
field # 処理なし
end
end
options = { col_sep: ":", :converters => proc } # 列区切り文字
CSV.foreach( "input.csv", options ) do |row| # 1行ずつ処理する
p row
end
出力
["root", "x", 0, 0, "root", "/root", "/bin/bash"]
["user01", "x", 500, 500, nil, "/home/user01", "/bin/bash"]
943デフォルトの名無しさん
2023/08/26(土) 21:18:17.35ID:C41SkMxi C言語とRustについて聞かれているのに
一生懸命Rubyで答えてどうするの?
ちょっと心配した方が良いレベルやぞ
一生懸命Rubyで答えてどうするの?
ちょっと心配した方が良いレベルやぞ
944デフォルトの名無しさん
2023/08/27(日) 03:03:02.52ID:/wQZGqy6 Rustでは文字列から他の型(数値など)への変換やその逆を自動でやってくれる(serdeがある)
以下のように(好きな型名とフィールド名で)構造体を定義するだけで動く
#[derive(Debug, serde::Deserialize)]
struct Passwd {
name: String,
passwd: String,
uid: u32,
gid: u32,
gecos: String,
dir: String,
shell: String,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
// CSVリーダーをヘッダ無しで区切り文字コロンでPASSWD_PATHファイルから読み込みで作成
let mut reader = csv::ReaderBuilder::new()
.has_headers(false)
.delimiter(b':')
.from_reader(std::fs::File::open(PASSWD_PATH)?);
// 各行を構造体Passwdへ読み込む (様々なエラーを捕捉できるようResult型が返る)
for result in reader.deserialize::<Passwd>() {
let passwd = result?;
println!("{passwd:?}");
}
Ok(())
}
以下のように(好きな型名とフィールド名で)構造体を定義するだけで動く
#[derive(Debug, serde::Deserialize)]
struct Passwd {
name: String,
passwd: String,
uid: u32,
gid: u32,
gecos: String,
dir: String,
shell: String,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
// CSVリーダーをヘッダ無しで区切り文字コロンでPASSWD_PATHファイルから読み込みで作成
let mut reader = csv::ReaderBuilder::new()
.has_headers(false)
.delimiter(b':')
.from_reader(std::fs::File::open(PASSWD_PATH)?);
// 各行を構造体Passwdへ読み込む (様々なエラーを捕捉できるようResult型が返る)
for result in reader.deserialize::<Passwd>() {
let passwd = result?;
println!("{passwd:?}");
}
Ok(())
}
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 台湾有事での集団的自衛権行使に「賛成」が48.8%、「反対」が44.2% ★5 [♪♪♪★]
- 台湾有事での集団的自衛権行使に「賛成」が48.8%、「反対」が44.2% ★6 [♪♪♪★]
- 【🐼】パンダ、日本で会えなくなる? 中国との関係悪化で不安の声 [ぐれ★]
- 高市早苗首相、独自貫いた1カ月 会食ゼロ、議員宿舎で勉強漬け「飲んでる暇があれば、政策を練り、資料を読みたい」 [Hitzeschleier★]
- 【高市リスク】立民・小西洋之参院議員「高市総理がとんでもない安全保障オンチで外交オンチ」★2 [ぐれ★]
- 【MLB】大谷翔平、山本由伸、佐々木朗希WBC出場辞退が確実に! トランプ大統領「ロス五輪最優先」指令 どうなる侍ジャパン [牛丼★]
- 【NJPW】新日本プロレスワールド part.2412
- 競輪実況★1606
- 【NJPW】新日本プロレスワールド part.2413
- 他サポ 2025-261
- ハム専ファンフェス
- 2025 SUPER FORMULA Lap18
- 【実況】博衣こよりのえちえちKoZMy4D晩酌🧪❄🫘
- 【実況】博衣こよりのえちえちKoZMy3D晩酌🧪❄🫘
- 【悲報】日本の高市新首相に祝電を送らなかった習近平氏の見る目の正しさが今さら評価される [354616885]
- 【速報】高市首相「国際社会は危機に直面している」 [256556981]
- 【ござ専🏡】風間隊🥷集合でござる🏯【風間いろは🍃】
- 【悲報】日本人、突然全員高市早苗の反転アンチになる。外交勝負服発言がどうしても許せない模様 [517791167]
