2019-07-01から1ヶ月間の記事一覧

【もくじ】シェルと遊ぼう

はじめに シェルスクリプトに慣れるために、どんどんおもちゃを作っていこう。 なるべく、POSIXに則ったオプションだけ使うように頑張るよ。 でも、curlとかは使っちゃう。 おもいつき系 ファイルツリーを表示 manの高頻出単語を調べる 日本のコロナ(COVID-1…

はてなブログAPI 覚え書き

はてなブログAPIを叩くシェルスクリプトを作ってみたので、そのとき調べたAPIについてのメモ書き。 ルートのURL はてなブログAPIを利用するために実際やることは、ブログ固有のURLにHTTPリクエストを送るだけだ。 以下が1つのブログで使う共通のルートURL(以…

シェルスクリプトでの改行文字の削除にハマる

僕はただ改行を削除したいだけなんだ。。。 POSIX準拠の範囲でなんとかしたい。 単純に全改行を削除 指定パターンにマッチした行のみ改行を削除 sedの挙動解説 コード解説 妥協策(行末パターンを指定して削除) あるパターンにはさまれた複数行を1行にまとめ…

DIYと車輪の再発明

「入門UNIXシェルスクリプトプログラミング」を読んでから2ヶ月くらい経った。 ようやく最近、シェルスクリプトに少し慣れてきたかなと感じる。 ちょっとしたものを自分でこしらえる日曜大工感が心地いい。 Do It Yourselfというやつですな。 まぁ、探せば大…

【FreeBSD】仮想コンソールでブザーを止めたい、または鳴らしたい

確認環境 PC Thinkpad X1 Carbon 2nd Gen OS FreeBSD 12.0-RELEASE-p7 課題 vt(4)上での話。(たぶんsyscons(4)でも同じではなかろうか) 下記設定をしているのにブザーが鳴る。 もしくは、下記設定していないのにブザーが鳴らない。 kbdcontrol -b off sysctl…

【FreeBSD】Cシェルのハマりどころ

C系シェルを使っていて困ったことなど。 ハマったら書くスタイルで随時更新。 環境変数の設定 スクリプトでの引数 エイリアスでの引数 リダイレクト 参考 環境変数の設定 setenv VARNAME VALUE スクリプトでの引数 記法 意味 $0 プログラム名 $1,$2, ... $9 …

【シェルと遊ぼう】sleepコマンドでタイマースクリプトを作ってみよう(on tmux)

| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | TIME OUT | |__________| (\__/) || (•ㅅ•) || / づ はじめに つくるもの 実行例 ヘルプメッセージ 必要なも コード 補足) 時間の変換 補足) tmuxのウィンドウ作成 連続実行による途中経過時間の表示と、繰…

やるせない

京都アニメーションの放火殺人事件。 いたたまれない。 ただ自分の仕事を全うしている人達が、 あらゆる可能性の世界が待っていた若者達が、 どうして命を奪われないといけないのか。 どのような動機であれ、理不尽すぎる。 怒りを通り越して、やるせない。

【FreeBSD】tcsh設定ファイルの実行順序と設定例

確認環境 PC Thinkpad X1 Carbon 2nd Gen OS FreeBSD 12.0-RELEASE-p7 tcsh tcsh 6.20.00 はじめに FreeBSD標準シェルのtcsh。 標準エラーのリダイレクトの扱いはちょっと困るけど、 デフォルトでもそこそこ補完してくれて、使い勝手はそんなに悪くないと思…

【課題】tmuxでシェルが2重に起動されている

tmuxの画面分割時にtcshが2重で起動されているっぽい。 以下、tcshの設定ファイルにechoでファイル名出したときのログ。 /etc/csh.cshrc ~/.cshrc /etc/csh.cshrc ~/.cshrc > ps ax | grep tcsh 36491 v0 I 0:00.06 -tcsh (tcsh) 36506 0 Is 0:00.02 tcsh -c…

【FreeBSD】fzfでサクッとパッケージ検索&インストールするシェルスクリプト

確認環境 PC Thinkpad X1 Carbon 2nd Gen OS FreeBSD 12.0-RELEASE-p7 fzf 0.18.0 (0b33dc6) sudo version 1.8.27 課題 pkg searchやpkg infoコマンドで、目的の機能を持つパッケージを探すのは難しい。 キーワードでGrepかけた結果をlessやvimとにらめっこ…

FreeBSDでも使える画面録画ツール

X上で画面を録画したいそんなとき。 SimpleScreenRecorderというツールはFreeBSDでも使えた。 (apng形式で出力できることは確認) 割と使いやすいと思う。 他にもpeekというツールもpkgにあったが、、試せていない。 github.com 以上。

【FreeBSD】fzfでサクッとファイルを開きたい(on tcsh)

確認環境 PC Thinkpad X1 Carbon 2nd Gen OS FreeBSD 12.0-RELEASE-p7 fzf 0.18.0 (0b33dc6) tcsh tcsh 6.20.00 (Astron) 課題 シェルにファイルの補完機能があるとはいえ、深い階層のパスを指定してエディタで開くのは面倒だ。 もっとサクッとファイルを開…

とある2日間の作業ログ

実践Rustをだいたい読んでからの2日間の流れ。 よーし、Rustで何か作るぞー ↓ 数当ゲームのワンストワンボ(ヌメロン?)を作ってみた ↓ go-racer動かないし、ビルドエラーばっかりで辛かった ↓ やっぱりちゃんと開発環境を整えるか ↓ rust.vim+LSP+RLS+deo…

tmux 2.9になって、起動時にエラーが出た

pkgで色々更新したら、tmux起動時にエラーが出るようになった。 以下の記事を参考に解決。 tmux v2.9 マイグレーションガイド 〜 tmux をv2.9 に上げたらinvalid option エラーが出た GW2日目: tmuxを2.9にした - けんちゃんくんさんのWeb日記 原因は下記っ…

実践Rust入門 13日目 その2

10章4〜6節まで。 パケージの公開方法や自動テストについて学ぶ感じ。 TravisCIやAppVeyorの使い方はとても参考になった。 便利な世の中だなぁ。 僕の場合は、独学でパッケージ公開しようなんて思わなかっただろうから、この章だけでも本書を 僕が何かを公開…

実践Rust入門 13日目 その1

10章1〜3節まで。 英単語数を数えるプログラムを作りながら、パケージ・ドキュメント・テストについて学ぶ感じ。 基本的に打ち込み試しながら読むスタイルで進めた。 とても参考になった。 おぼえがき パッケージとクレート 用語整理 クレート: 1つのRustプ…

実践Rust入門 12日目

9章全部。 整数の四則演算ができる計算機のパーサを作成を通して、手続の抽象化とエラーの扱いを学ぶ。 サンプルコードを打ち込みながら読むスタイルで進めた。 サンプルコードの誤記が多く、正誤表だけだと辛い。 また、一部サンプルコードの掲載が省かれて…

【Rustと遊ぼう】FreeBSDでRustをインストールする

Rustツールチェインのインストール FreeBSD上でラストのインストールしてみよう。 今回はインストールしたツールの動作確認(バージョン確認)まで。 FreeBSDのpkgでもRustはあるけど、rustupというツールがインストールされない。 そのため、公式サイトに紹介…

実践Rust入門 11日目

8章6〜8節まで。 トレイトの利用例。 標準ライブラリのから、ちょっとしたテクニック紹介など。 読むだけスタイルで進めた。 全体的に、こんなことできるんだなぁというのを知れたのは良かった。 しかし、ようやく基礎編が終わったなー。 長かった。 おぼえ…

実践Rust入門 10日目

8章3〜5節まで。 Rustでの静的/動的ディスパッチの仕組みと存在impl Trait、トレイトの関連xxについて。 5節以外は読むだけスタイルで進めた。 Rustの機能と静的/動的ディスパッチの話は割と面白かった。 しかし、ジェネリクスとトレイトの使い方に慣れな…

実践Rust入門 9日目

8章1〜2節。 トレイトの基本について。 サンプルコードを打ち込みながら読むスタイル。 今までの章に比べると、ソース多め文章少なめで読みやすかった。 ただ、サンプルコードに見慣れない英単語が多く使われてて混乱した。 まぁ僕の英語力の無さの問題が大…

実践Rust入門 8日目 その2

7章10〜12節。 単一の所有者を持たせて必要なときに借用する方法で対応できない場合の話。 こういう方法があるよという紹介。 今は覚えられる気がしないので、読むだけのスタイルでサクッと進む。 頭がpanic!()。 今はこんなのがあるんだなー程度。 おぼえが…

実践Rust入門 8日目 その1

7章9節。 独自のベクタを実装しながら、ライフタイムについて学ぶ構成。 所有権の移動とライフタイムの絡みは面倒だなぁ。 コンパイラくんが色々検出するためなんだろうけど、ライフタイム指定子を使いこなせる気がしない。 とにかく書いてコンパイルエラー…

実践Rust入門 7日目 その2

7章2〜8節。 サンプルコードを打ち込み動かしながら読むスタイルで進める。 P258のコラム(デストラクタを呼ばないようにする方法)は良かった。 知らないとunsafeでやっちゃいそうだし。 おぼえがき デストラクタも実装できる use std::ops::Drop impl Drop f…

実践Rust入門 7日目 その1

7章1節のみ。 所有権システムってこんなのだよというお話。 7章で学ぶことの予告であり、総括的な感じっぽい。 おぼえがき Rustが保証するメモリ安全性 メモリの2重開放によるRustでの未定義動作を起こさない ダングリング(解放済み領域など無効なメモリを指…

実践Rust入門 6日目

6章頭から6章途中まで。 Rustの基本構文について。 といっても、サンプルとして既出のものがほとんど。 それぞれ補足された感じ。 結局ほとんどコードを書かずに読むだけスタイルで進めてしまった。 全構文を使って遊べる無茶なサンプルコードがあれば楽しく…

実践Rust入門 5日目

5章頭から5章最後まで。 主にユーザ定義型について。 昨日に引き続き、読むだけのスタイル。 章の冒頭に、メモリ領域(ヒープとかスタックとか)について説明が載っている。親切。 Box型の説明読んでてRustの所有権というものを垣間見た。 ただ、4〜5章は本書…

実践Rust入門 4日目

4章頭から4章最後まで。 主にプリミティブ型について。 サンプルコードは動かさないスタイルで読んだだけ。 おぼえがき ポチポチ打ちながら読んでたら長くなった。 こんな一気に覚えられるわけない。 スカラ型 ユニット () 真理値 bool, true/false 整数 i/u…

実践Rust入門 3日目

3章途中から3章最後まで。 3章は、バイトニックソートの実装を、Python版→Rust版1st →2nd → 3rdと進化させていくスタイル。 最初の方は前回バージョンからの差分箇所のソースにコメントが付いているのだけれども、途中からそういうコメントはなくなった。 書…