News
Typstで絵文字を書いたらType3のフォントが埋め込まれた件
技術書典18向けに技術同人誌を書いているのですが、その中で絵文字を使っていました。それで、印刷所に入稿したら「埋め込まれてないフォントがあるよ~」(意訳:Type3フォントがあるよ~)というご連絡を頂いたんですね。このまま印刷すると文字化けするかもしれないと。
そっかぁ、と思って対応することにしました
特にTypst固有の問題ではなくてLaTeXでもRe:VIEWでもVivliostyleでも、組版ソフト共通で起こる問題と認識しています
Type3フォントとは¶
フォントって様々な形式があって、けっこう複雑なんですが(私もちゃんと把握できていない)Type3フォントは紆余曲折あって、今はあまり使われない形式らしいです
印刷会社さんや、学会ではType3フォントを避けるように言われる場合があるみたい
Type3フォントが埋め込まれたPDFがどうなるかというと、印刷時に文字化けするリスクがあります
Typstの動作¶
特にTypstのドキュメントには絵文字フォントを指定していなかったんですが、その場合はTypstがシステムフォントからフォントを探し出して埋め込んでくれます
今回の事象は、 Segoe UI EmojiというType3フォントが知らずに埋め込まれていた…という状況でした
調査方法¶
PDFの埋め込みフォントを確認する¶
Acrobat Readerでも、その他のPDFビューアーからでも、フォントの状態を確認できます
「ドキュメントのプロパティ」という感じの項目を探してみてください
"embedded"とう文言は「フォント埋め込まれてるよ!」という意味なので、そこはOKなのですが、種類の所が…
あぁ~これですわ
TwitterColorEmojiは使ってないので単純にフォントをアンインストールしました
ただSegoe UI Emojiは、Windows標準のシステムフォントなのでおいそれとアンインストールできません
さて、困りましたね。。
どの文字がどのフォントを利用しているか調べる¶
ちなみに、もっと厳密に PDF中のどの文字がどのフォントを使っているか調べる方法をChatAIさんに聞いた所
- Inkspaceという画像編集的なソフトをインストールする
- InkspaceでPDFを開く
- SVG形式でエクスポート
- SVG形式のファイルは中身がテキストファイルなので、文字とフォントの関係が確認できる
ということで試してみたら、grepとかでいい感じで確認はできそうでした
以下みたいに実行すると、どのへんのどの文字で使われているか調べられます
$ grep -C5 -n "font-family:'Segoe UI Emoji'" Target.svg
ちなみに以下みたいに書くと、どのフォントがどのくらい使われているか把握できます
$ grep -o 'font-family.*;' Target.svg |awk -F';' '{print $1}'|sort |uniq -c
対応方法¶
いくつか対応方法があります
絵文字フォントを指定する¶
Typstのドキュメント側で明示的にフォントを指定すれば、Segoe UI Emojiの混入が防げます
代替のフォントとして、Segoe UI Symbolというのが使えますが、ちょっと見た目が好きじゃなかったのでNoto Emojiをインストールして代替することにしました
set text(
// 記載の順にフォントを検索します
font: ("Meiryo UI", "Yu Gothic", "Arial","Noto Emoji","Segoe UI Symbol"), // フォント設定
/* フォント候補
"Arial","New Computer Modern","Tahoma",
"Times New Roman","Verdana",
"Meiryo","Meiryo UI",
"Yu Gothic","Yu Gothic UI","Yu Mincho",
*/
size: 9pt, // フォントサイズ
lang: "jp", // 言語
)
ただ筆者の場合は、なぜかこれでも勝手に埋め込まれちゃったので別の手段を取ることにしました
フォントの参照先を指定する¶
TypstでCLIでコンパイルする際に、以下のオプションが使えます
オプション | 意味 |
---|---|
--ignore-system-fonts | フォントの参照先からシステムフォント(C:\Windows\Fonts)を除外する |
--font-path "C:\example\font" | フォントの参照先を追加する |
これを利用して、コンパイルに必要なフォントだけを格納したフォルダを用意(一時的にC:\Windows\Fontsから必要なフォントをコピー)して、それを指定することで余計なフォントを参照させないようにできますね
$ typst c Target.typ --ignore-system-fonts --font-path "C:\example\font"
アウトライン化¶
最後の手段なんですが、アウトライン化(≒画像のような形式)にしてしまえば、フォントの問題は解消されます
Windows の印刷機能(Microsoft Print to PDF)でPDFを再印刷することで実現できます
後述の書籍↓にも書いています
Typstで技術同人誌を書く¶
そんなフォント周りの話も含めた本を頒布中です
そしてもう少しお待ち頂くと、新刊がでます
よろしくお願いします。
7日間でハッキングをはじめる本 TryHackMeを使って身体で覚える攻撃手法と脆弱性
めっちゃ楽しく読みました!¶
キャアアアアアアアアア!著者同士は不思議な力で引き合うので本を送るスタンドが使えると聞いていたのですが本当に届けてもらえた!ありがとうございます!黒い画面が怖くなくなった次くらいの本になったらいいな https://t.co/gDceBsxxFL
— 野溝のみぞう (@nomizooone) August 23 2024
初学者だけじゃなく、普通に助かる¶
Day1を拝読するとですね、Kali linux の設定がある訳なんですけれど、これがですね。ほんと助かります。ほんと助かるんですよ。
なんかですねKali Linuxってよく壊れる(n=1の主観的な感想)んですよ。アップデートしたらXWindow立ち上がらなくなったりして。そんな感じなので、1度インストールして、育てていく…というよりは、都度都度、壊れたら(または古くなったら)作り直す…みたいなディストリビューションとして捉えています。
すると、どうなるかっていうと、インストール後の初期設定を何回もしなきゃいけないんですよね。
日本語化して、タイムゾーン変更して、、、とか毎回ググって設定するわけなのですが、それが全部書いてある素晴らしい…!
ここだけでも助かるのに、この後のDay2以降であらゆるツールの使い方載ってるんですよね!
「あぁこのツールどう使うんだったっけな~」からのググって・・・あぁそうだった・・・が、なくなるんです!最高!
この網羅的にツールを扱う本って実は希少なんですよね。手元に1冊置いておいて、パラパラめくって再確認できる・・・という使い方ができるんです!助かります~!
もちろん初学者さんにも役に立つ¶
けっこう専門的なところを解説しつつも、たくさんの図解があって、ほんと迷うことなく進められます。読んでてスッと入ってきて引っ掛かりがありませんでした。初学者さんもきっと大丈夫。
そしてびっくりするのはですね、情報量が多いんです。情報量が。なんと300ページ近くあるんです。だからお買い得感あるヤバい。私の学生時代にあったら秒で買ってたし、こんな本欲しかった~って思いました。
なので、この1冊を読んで、たとえばnmapのこともっと知りたいな~と思えば専門書籍を追加でご購入されるもよし、Metasploitもっと知りたいな~と思ったら専門書籍を追加でご購入されるもよし、これら専門書籍はお値段がけっこうしたりするので、専門書を選択しながら少しずつ専門知識を広げていくアプローチがとれそうです。
というわけで、ぜひお手にとってみてください。目次を見ると欲しくなるんです(私が)。
ちな、ハッキングより手前の、黒い画面が怖くなくなる本もございます(便乗)
黒い画面に心理的抵抗があれば、こちらも御覧ください~
ロボットの確率・統計
拝読させて頂き¶
献本頂いた「ロボットの確率・統計」ちょっとずつ読んでいるのですが、システム開発と通ずる所が多くて普通に仕事で役に立ちそう
— kanata📖コマンドラインの黒い画面が怖いんです。4/19発売 予約受付中! (@kanata201612) March 10 2024
特に1章:代表値、2章:確率、3章:期待値、5章:試行回数と信頼性
このあたりは、システムの信頼性設計と「性能試験」にめっちゃ関係するんですよ!(リプライ続く) https://t.co/4YBqIk5R72
ロボットだけじゃない、むしろ人生に役に立つ¶
前半は確率・統計の基礎的な話なのですが、これが実務ですごい役に立つ話でですね。
これを理解すると、正確に「グラフが読めるようになる」んですよ!
仕事とかでグラフって良く見る機会があるんですが、まぁまぁ恣意的に作られてるんですよね。誤魔化したり、ダマしたりする意図が多分にあるというか。
それで、ぼんやり眺めてるだけでは気づかないんです、が・・・
この本でわかるようになります。
例えば最近の話題だと「通訳者の賭博負け総額は、平均23万円」で、「えぇ?そんなみんなギャンブルして負けてるの…」ではなく、それが外れ値の影響であることが秒でわかる、みたいな。
もちろんロボットにも役に立つ¶
ロボットは工学的なこととか、ソフトウェア的なこととか、数学的なこととかの、それぞれが連携する集大成であったりするので、各章だけでも色々な分野の人に役に立つはず。後半の章は機械学習とか強化学習とか意思決定とか出てきます。
このあたりの内容を絡めた実体験エピソードが載ってるのがすごい面白いんですよ!
ロボットの勉強しようと思ってたら「怪しい儲け話に気づくようになる」とか「麻雀で勝てるようになった」とか「やべー情報だけインプットされると認知は歪む」とか実生活に役立つ話が、確率・統計の知識ベースと繋がるんです最高に楽しい。
数式出てくるあたりは、何回か読み直しながらだいぶ時間をかけて理解する必要がありそうですが、最終的に腹落ちして理解できそうです。
なぜかというとですね、技術書でけっこう行き当たるのは「なんかよくわからん…よくわからないけれど、こうなるのか…」というのがあるんです。その「なんでこうなるのか」が丁寧に書いてあるんですよ!すごい!
ぜひお手にとってみてください。目次を確認して頂くと、きっと役に立つ章があります。
ちな、拙著の実生活に焦点をおいたダマサれないための本もございます(便乗)
「第3章 ダマす数値」のあたりが、ちょうど「ロボットの確率・統計」と地続きでした!
「ポ」と「ポ」は違う文字なのでgrepにヒットしない話
こういう事象になる
$ cat popopo.txt
ポポポポーン1
ポポポポーン2
$ grep "ポ" popopo.txt
ポポポポーン1
$ grep "ポ" popopo.txt
ポポポポーン2
おわかり頂けただろうか…
「ポ」をgrepしてもどちらかしかヒットしない
なぜか…
Unicode結合文字という仕様がある¶
「ポ」と「ポ」は、見た目が同じですが実は違う形式でできているから(Unicodeの仕様)
見た目は同じですが、コンピュータ上では別の文字として扱われます
なので、grepにヒットしない「ポ」がでてきます
「ポ」 と 「ポ」 U+30DD 「ホ」 +「゚」 U+30DB U+309A
これは濁音(「が」とか)と半濁音(「プ」とか)のすべての文字に当てはまります
Unicode正規化という対応方法がある¶
えぇ…じゃぁすごい困るじゃん…検索できないじゃん…
ってなるので、Unicode正規化と呼ばれる統一する方法があります
任意のプログラム言語で実装もできるのですが、ワンライナーでも変換できます
pythonを使ったワンライナー
echo -n "DQⅢ①⑳海海神神㌔㍉ビデブー" | python -c "import sys,unicodedata; print(unicodedata.normalize(\"NFKC\", sys.stdin.read()));" DQIII120海海神神キロミリビデブー
perlを使ったワンライナー
echo -n "DQⅢ①⑳海海神神㌔㍉ビデブー" | perl -e "use strict;use utf8;use Encode;use Unicode::Normalize;binmode STDIN, ':encoding(UTF-8)';binmode STDOUT, ':encoding(UTF-8)';print Unicode::Normalize::NFKC(<STDIN>);" DQIII120海海神神キロミリビデブー
※"DQⅢ①⑳海海神神㌔㍉ビデブー"はテストデータです
では、冒頭の「ポ」で試してみます
$ cat popopo.txt | python -c "import sys,unicodedata; print(unicodedata.normalize(\"NFKC\", sys.stdin.read()));" | grep "ポ" ポポポポーン1 ポポポポーン2
うまくいきました
参考¶
Unicode結合文字 難読化シェル芸
https://www.slideshare.net/kanata1/unicode-112630484
この仕様で遊んでた時の話
文字コードのカオスな世界を整理してみた
https://raintrees.net/news/51
そもそもの文字コードの話
コマンドラインの黒い画面が怖いんです。新人エンジニアのためのコマンドが使いこなせる本、という本を書きました
翔泳社サイトはこちら
— kanata (@kanata201612) March 10 2024
翔泳社サイトhttps://t.co/LzmEcpfvrK#黒い画面が怖い #著者のPR
コマンドラインの黒い画面が怖いんです。¶
新人エンジニアのためのコマンドが使いこなせる本
本を書きました!
新人のITエンジニアにとって開発現場でぶつかる壁の1つが、文字だけのUI、通称「黒い画面(CLI/CUI)」でのコマンド操作です。
グラフィカルなUIに慣れ親しんだ若手のエンジニアの中には、得体のしれないCLIの操作に苦手意識や恐怖感を持っている人も多いのではないでしょうか。本書はそんな「黒い画面が怖い!」という新人エンジニアや学習者に向けて、CLIやコマンドとの付き合い方・活用法をやさしく解説した書籍です。
𝗮𝗺͜𝗮̹𝘇𝗼𝗻で買えます
https://amzn.asia/d/9uc18Mq
翔泳社さんのサイトからも買えます
https://www.shoeisha.co.jp/book/detail/9784798182445
正誤表¶
翔泳社さんのサイトに出ると思います。
でたらリンクを貼ります。
補足¶
なにかあれば書きます。
メディア¶
CodeZine - 新刊『コマンドラインの黒い画面が怖いんです。』発売、コマンドを使って開発をもっと楽しく効率的に!
CodeZine - コマンドラインの黒い画面を使ってネットの情報を取得したり、ファイルをZipに圧縮したりしてみよう
アンドエンジニア - CLIをエンジニアが避けるのはなぜ?「コマンドラインの黒い画面が怖いんです〜」著者に聞く本当に便利なコマンド活用法
関連ネタ¶
SCPFmaskコマンドを作成した
SCPFmask¶
本ツールはSCP財団管轄下の█████████より██████████████の旨通達があり、███████████としたものです。
そのため████████████における██████████████████████████████として公開しています。
Edge(Chorme)のヘッドレスモードでSPAのページをcurlみたく出力する
(1 comment)
動機¶
以前はサイトのDOMを参照するときcurlを使っていて、それはそれは便利だったんですが近年SPAとか動的にDOM構築するサイトが増えるようになって、ぜんぜん使えなくなりました。
かといって、SeleniumやPuppeteerやBeautiful SoupやSplashなんかを使うとプログラミングする必要がでてきて面倒だなぁ・・・となっていました。なんか色々インストールすることなくcurlみたいにお手軽に使いたいだけだし、1行でやりたい。。シェル芸したいんじゃ。。
という訳でCUIでChromeをヘッドレスモードで呼び出せばいいじゃんっていう話なんですが、SPAの時、JavaScriptがDOM構築を完了するまでどうやって待ち合わせるか、そもそもそういうオプションあるのかしら…とずっと思っていました。でも、最近ようやくわかったんですね!!!1!あったわ、オプションありましたわ…!
あと、Windows環境であれば標準で入っているEdgeをヘッドレスモードで動かせるので、それをWSLで動くようにしたい~
というという訳でツールを作った¶
EdgeHeadless.sh
#!/bin/bash
# EdgeのヘッドレスモードでSPAのページをcurlみたく出力する ver 0.1
Edge="/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"
"$Edge" --headless --enable-logging --dump-dom --virtual-time-budget=10000 $1 $2 $3 $4 $5 $6 $7 $8 $9
Edgeの実行ファイルPATHをChromeのそれに置き換えても動くと思います。
たまに以下のエラーで返ってくる時があるんだけどその時はもう一回実行してください(リトライ処理を書くのをサボっている)
TypeError: Cannot read properties of null (reading 'outerHTML')
ではちょっと試してみましょう。
ちょっと適切なサイトが思い浮かばなかったので内閣サイバーセキュリティセンターで試してみます。
そうですね。。ではこの中の下の方にある「情報セキュリティ教育用教材」のリンクを取得してみましょう。
まず、ここの内容はJavaScriptで動的にDOMを構築しているようなのでcurlで取得できません。
$ curl -s https://www.nisc.go.jp|grep 情報セキュリティ教育用教材
curlだと何も引っかからないですね。では、今回作ったツールでやってみます。
$ ./EdgeHeadless.sh https://www.nisc.go.jp|grep 情報セキュリティ教育用教材 <div title="ランサムウェア対策について" data-href="https://security-portal.nisc.go.jp/stopransomware/"><span style="background-image: url("/img/banner01.jpg");"></span><p>ランサムウェア対策について</p></div><div title="参照すべき関係法令をQ&A形式で解説" data-href="https://security-portal.nisc.go.jp/guidance/law_handbook.html"><span style="background-image: url("/img/banner02.jpg");"></span><p>参照すべき関係法令をQ&A形式で解説</p></div><div title="セキュリティが分からなければこの1冊" data-href="https://security-portal.nisc.go.jp/guidance/handbook.html"><span style="background-image: url("/img/banner03.jpg");"></span><p>セキュリティが分からなければこの1冊</p></div><div title="IPA情報セキュリティ・ポータルサイト" data-href="https://www.ipa.go.jp/security/kokokara/"><span style="background-image: url("/img/banner04.jpg");"></span><p>IPA情報セキュリティ・ポータルサイト</p></div><div title="みんなで使おう サイバーセキュリティ・ポータルサイト" data-href="https://security-portal.nisc.go.jp/"><span style="background-image: url("/img/banner05.png");"></span><p>みんなで使おう サイバーセキュリティ・ポータルサイト</p></div><div title="情報セキュリティ教育用教材" data-href="/policy/group/general/kyozai-booklet.html"><span style="background-image: url("/img/banner06.jpg");"></span><p>情報セキュリティ教育用教材</p></div></div>
はい取れました!じゃぁシェル芸してリンクだけ抜き出します。
$ ./EdgeHeadless.sh https://www.nisc.go.jp|tr '<>' \\n\\n |grep 情報セキュリティ教育用教材|head -1|awk -F= '{print $3}' "/policy/group/general/kyozai-booklet.html"
はいリンク取れましたスッキリした~
SharePointのドキュメントのURLが長いことに対する次善の策
(1 comment)
動機¶
SharePointのドキュメントのURLが長すぎてちょいちょい困る
メールを書いていた時のこと
hogehogeさま kanataです。 ご要望のドキュメントは以下になります。 https://example.sharepoint.com/teams/xxxxxxxxxx/Share%20Document/General/ %E5%8F%82%E8%80%83%E8%B3%87%E6%96%99/%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92 %E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88/01_%E8%A6%81%E4%BB %B6%E5%AE%9A%E7%BE%A9/02_%E3%81%B5%E3%81%92%E3%81%B5%E3%81%92%E8%A8%AD%E8 %A8%88/%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92%E4%BB%95%E6%A7%98%E3%81%AB%E3 %81%A4%E3%81%84%E3%81%A6.xlsx?d=19dd17a1440c5829af4d9wsf6c6w7baag5&csf=1& e=G7HZb6
長!これは・・・
長くて困る。けっこう困る。これが色々な所に書いてあるのを想像してみて。。
メールだけじゃなく、チャットもフォーラムも社内掲示文書も全部こうなっちゃう
世界がURLで溢れ返る
機密性のある情報だとbit.lyとかを使うわけにもいかず
メーラーによっては折り返されたりしてURLが壊れるし
URLからフォルダの階層やファイル名が読み取れると嬉しいんだけど、これだとぜんぜんわからん。。
う~ん、こう書いてみたらどうだろう
hogehogeさま kanataです。 ご要望のドキュメントは以下になります。 格納先(https://example.sharepoint.com) 一般/参考資料/ほげほげプロジェクト/01_要件定義/02_ふげふげ設計/ほげほげ仕様について.xlsx
うん、まぁこれなら・・・と思ったんだけれど、このファイルパスをSharePointから取得できないので手作業で打つしかない。しんどい無理。
SharePointのURLを短く(読みやすくする)する工夫¶
結局、これで多少良くなる
URLエンコードを元の日本語(UTF-8)に戻す( 日本語に戻しても最近のブラウザは、このURLをよしなに解釈してくれます たいていのユースケースでは問題にならないハズ )
URLの?以降は削除できる(ちょっと短くできる)
これをシェル芸でやってみます
$ URL='https://example.sharepoint.com/teams/xxxxxxxxxx/Share%20Document/General/%E5%8F%82%E8%80%83%E8%B3%87%E6%96%99/%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88/01_%E8%A6%81%E4%BB%B6%E5%AE%9A%E7%BE%A9/02_%E3%81%B5%E3%81%92%E3%81%B5%E3%81%92%E8%A8%AD%E8%A8%88/%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92%E4%BB%95%E6%A7%98%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6.xlsx?d=19dd17a1440c5829af4d9wsf6c6w7baag5&csf=1&e=G7HZb6' $ printf '%b\n' "${URL//%/\\x}"|cut -d'?' -f 1 https://example.sharepoint.com/teams/xxxxxxxxxx/Share Document/General/参考資料/ほげほげプロジェクト/01_要件定義/02_ふげふげ設計/ほげほげ仕様について.xlsx
ふんふん、だいぶ読みやすくなりました。
こんな感じにするとパンくずリストっぽいのも作れますね
$ printf '%b\n' "${URL//%/\\x}"|cut -d'?' -f 1|cut -d'/' -f 7-|sed 's|/| > |g' General > 参考資料 > ほげほげプロジェクト > 01_要件定義 > 02_ふげふげ設計 > ほげほげ仕様について.xlsx
という訳でツールを作った¶
GetSharePointPATH.sh
#!/bin/bash # 引数チェック if [ -z "$1" ] then echo "引数にURLが必要です" exit 1 fi # URLデコードして出力 echo printf '%b\n' "${1//%/\\x}"|cut -d'?' -f 1 # パンくずリスト生成 # cut -d'/' -f 7- の7の所は環境によって数字を増減させて調整してみて echo printf '%b\n' "${1//%/\\x}"|cut -d'?' -f 1|cut -d'/' -f 7-|sed 's|/| > |g' exit 0
試す
$ ./GetSharePointPATH.sh 'https://example.sharepoint.com/teams/xxxxxxxxxx/Share%20Document/General/%E5%8F%82%E8%80%83%E8%B3%87%E6%96%99/%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88/01_%E8%A6%81%E4%BB%B6%E5%AE%9A%E7%BE%A9/02_%E3%81%B5%E3%81%92%E3%81%B5%E3%81%92%E8%A8%AD%E8%A8%88/%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92%E4%BB%95%E6%A7%98%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6.xlsx?d=19dd17a1440c5829af4d9wsf6c6w7baag5&csf=1&e=G7HZb6' https://example.sharepoint.com/teams/xxxxxxxxxx/Share Document/General/参考資料/ほげほげプロジェクト/01_要件定義/02_ふげふげ設計/ほげほげ仕様について.xlsx General > 参考資料 > ほげほげプロジェクト > 01_要件定義 > 02_ふげふげ設計 > ほげほげ仕様について.xlsx
この出力結果をメールにコピペすればいいようになりました!
このツールを添付しておきます
Microsoftさんが短縮URL機能を作ってくれるまでこれでしのごっと
jus共催 第50回記念我々は50回も何をやってるんだろうシェル芸勉強会 に参加させて頂きました!
jus共催 第50回シェル芸勉強会リンク集 | 上田ブログ¶
このサイトではGoogle AdSenseやその他ソーシャルボタンのためにCookieを使用しています。もし同意いただけない場合はブラウザでクッキーを無効にして閲覧をお願いします。
jus共催 第50回記念我々は50回も何をやってるんだろうシェル芸勉強会¶
2020年11月7日 YouTubeで配信
大量データの処理って仕事でも使うからとても勉強になります
知見¶
使わないと忘れちゃって、その度にググっちゃうという…
奇数行だけ抜き出す、偶数行だけ抜き出す¶
大量データを並行処理するコツとして、ファイルを分割して処理する方法があると学びまして、
その分割方法の一つが偶数行と奇数行で分割する方法です。peeと組み合わせて使うと並列処理できますね。
$ seq 10|sed -n 1~2p
1
3
5
7
9
$ seq 10|sed -n 2~2p
2
4
6
8
10
横に並べる¶
やんないと本当に忘れる。foldとcolumnとごっちゃになる。
毎回ググってる。
$ seq 10|paste - -
1 2
3 4
5 6
7 8
9 10
$ seq 10|paste - - -
1 2 3
4 5 6
7 8 9
$ seq 10|paste - - - -
1 2 3 4
5 6 7 8
9 10
xargsの定型句¶
並列処理の王、xargsの真の使い方
$ seq 5|xargs -I@ -P0 bash -c 'echo xx@xx'
xx1xx
xx2xx
xx3xx
xx4xx
xx5xx
- -P0 # 並列処理する
- -I@ # パイプからもらう入力を表現する文字として@を使用する
- bash -c # こう書いておくと引数にシェル芸が書けるから便利
Software Design 2020年9月号に寄稿しました
Software Design 2020年9月号の 現場で役立つユースケースを厳選 エピソードで覚えるUnixコマンド[第2弾]という特集の一部を執筆しました。dateとtputのお役立ちな使い方を書きました!他にもすごい執筆陣の方々がお役立ちコマンドを紹介されております。
個人的には、結城 浩さんによる私の好きな「難読化」の記事や、高校ではやらなくなったと噂の行列計算の基本など興味深い記事が目白押しでございます。
8/18発売です!
Software Design9月号に私も書いたので各位買うといいよ!
— kanata📓技術書典9 (@kanata201612) August 16 2020
8/18発売だよ! 4冊買うといいよ! #gihyosd pic.twitter.com/tjkrYvTZHf
結城さんによる難読化の記事とか、高校でやらなくなったと噂の行列計算の記事とかあるよ! #gihyosd
— kanata📓技術書典9 (@kanata201612) August 16 2020
おもしろい https://t.co/gHMw1dtiX9
書籍といえば技術書典9でも薄い本を出す予定です
CyberChefとシェル芸 で詳細を公開しています
あとssmjp同人部でも書かせてもらっているのですがその話はまた今度
1 2 3 ... 16 Next » (1-10/154)
Also available in: Atom