本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはcharsbarこと石垣憲一さんで、テーマは「Perl 5.26で変わること」です。Perl 5.26リリース 去る2017年5月30日にPerl 5.26がリリースされました。これは1987年にPerl 1.0が生まれてから30年、モダンPerl運動のきっかけとなったPerl 5.10が2007年に生まれてから10年という節目のリリースです。2016年春に新たにパンプキン[1]に就任したSawyer X氏のリードのもとでリリースされる最初の安定版[2]でもあります。Perl 5はかれこれ20年以上も同じメジャーバージョンを使い続けていることからも察せられるように、後方互換性が比較的よく保たれている言語です。それでも、節目節目では新機能の追加とともに多かれ少なかれ互換性が失われるような変更が行われてきました

macOS 12 Monterey では,OSビルトインでのOCR機能が搭載されました。Preview.app で,画像やスキャンPDF(中身がスキャン画像のPDF)に対して,ただマウスでドラッグするだけで,中身の文字を認識して選択し,コピーできるようになっています。さらに,macOS 13 Ventura では,それが日本語にも対応しました。 たとえば,(今や入手困難となってしまった)TheTeXbook のアスキーによる日本語版をスキャンしたものを Preview.app で開くと,何もしなくても,文字選択できます。 これをコピーして他のエディタにペーストすると,TEXの名称で気をつけなければならないことがほかにもある。Eの文字が不揃いになっていることだ。Eの文字を少し下げてあるのは、TeXが組版のためのシステムであることを印象づけるためであり、またほかのシステムの名称と区別するた

はじめに シェルスクリプトで日付や時間の処理をするのって面倒ですよね? date コマンドはオプションは機能が少ないしLinux とmacOS で書き方が違うし便利な機能は移植性がありません。移植性がないため POSIX は新しい機能を標準化することができません。書き方の違いはmacOS で GNU Coreutils をインストールすれば解決できますが機能の少なさはどうしようもありません。なにかいい方法はないかな?作るかな?と思っていたのですが Dateutils を使ってみたらこれが思いの外良くできていたので使い方の紹介です。 project homepage: http://www.fresse.org/dateutils/github page: https://github.com/hroptatyr/dateutils Dateutils のコマンド一覧 date コマ

最初にアカウントを作成する必要がありますが、メールアドレスを登録すれば数分で完了します。 メールの場合は認証作業が必要です。 1.2 シークレットキー作成 続いては、以下の画面から"create new secret key"をクリックすると自動で生成されます。 先ほどのこちらのリンクから以下のページへ飛べます。 https://beta.openai.com/account/api-keys シークレットキーをコピーして、別で保存しておきます。 一度OKで閉じると消えてしまうので、しっかりとメモにして残しておくことをおすすめします。 一応何度でも作成はできます。 1.3 料金体系 実は、OpenAIのAPIは無料ではありません。 なので、先ほどのシークレットキーは他人は教えないように!!! 言語モデルによって料金が異なります。 大体1記事書くのに分量にもよりますが、数円くらいです。 また

はじめに bash などのシェルには [ ... ] と [[ ... ]] の二種類の比較方法があります。(( ... )) を含めると三種類です。一つ目はコマンドで残りはシェルの文法なのですが、具体的に何が違うのでしょうか? そもそもなぜ似ている機能があるのでしょうか? この記事は言語設計者の気持ちになって考えることで、その理由を解き明かそうという記事です。 なお、違いについての簡単な説明については「test と [ と [[ コマンドの違い - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出しBlog 」の記事がよくまとめられていますので紹介します。一通りの違いを素早く知りたい方はこちらを参照してください。 参考 シェルの歴史や種類については「シェルの歴史 総まとめ(種類と系統図)と POSIX の役割」に詳しくまとめています(系統図とか頑
![シェルスクリプトの [ ] と [[ ]] の違いを歴史的に解説 〜 言語設計者の気持ちになって理解しよう - Qiita](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2f60ebb4347f7bc38408cff32d927a5150627dac27%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fqiita-user-contents.imgix.net%25252Fhttps%2525253A%2525252F%2525252Fcdn.qiita.com%2525252Fassets%2525252Fpublic%2525252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%25253Fixlib%25253Drb-4.0.0%252526w%25253D1200%252526blend64%25253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFtYXpvbmF3cy5jb20lMkYwJTJGNTQ5MTglMkZwcm9maWxlLWltYWdlcyUyRjE0NzM2OTM1Mjg_aXhsaWI9cmItNC4wLjAmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmJnPUZGRkZGRiZmbT1wbmczMiZzPWE4NWVmYWZlYzFkZjcyYTVmYWIyN2ZmOGViMjQ1Nzdi%252526blend-x%25253D120%252526blend-y%25253D467%252526blend-w%25253D82%252526blend-h%25253D82%252526blend-mode%25253Dnormal%252526s%25253D40c4de7a2283f8493d0f8cd798df1ed7%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526fm%253Djpg%2526mark64%253DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JUUzJTgyJUI3JUUzJTgyJUE3JUUzJTgzJUFCJUUzJTgyJUI5JUUzJTgyJUFGJUUzJTgzJUFBJUUzJTgzJTk3JUUzJTgzJTg4JUUzJTgxJUFFJTIwJTVCJTIwJTVEJTIwJUUzJTgxJUE4JTIwJTVCJTVCJTIwJTVEJTVEJTIwJUUzJTgxJUFFJUU5JTgxJTk1JUUzJTgxJTg0JUUzJTgyJTkyJUU2JUFEJUI0JUU1JThGJUIyJUU3JTlBJTg0JUUzJTgxJUFCJUU4JUE3JUEzJUU4JUFBJUFDJTIwJUUzJTgwJTlDJTIwJUU4JUE4JTgwJUU4JUFBJTlFJUU4JUE4JUFEJUU4JUE4JTg4JUU4JTgwJTg1JUUzJTgxJUFFJUU2JUIwJTk3JUU2JThDJTgxJUUzJTgxJUExJUUzJTgxJUFCJUUzJTgxJUFBJUUzJTgxJUEzJUUzJTgxJUE2JUU3JTkwJTg2JUU4JUE3JUEzJUUzJTgxJTk3JUUzJTgyJTg4JUUzJTgxJTg2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LXBhZD0wJnM9MzEyODUyODU4MjgxMTcxY2M3NTdiZmU2N2RkZTAxZWI%2526mark-x%253D120%2526mark-y%253D112%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBrbzFua3NtJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LXBhZD0wJnM9ODVlMzIyOWJiNjA2ZTE4YzM2ZmM0MzNjMTk0ZjJkMmI%2526blend-x%253D242%2526blend-y%253D480%2526blend-w%253D838%2526blend-h%253D46%2526blend-fit%253Dcrop%2526blend-crop%253Dleft%25252Cbottom%2526blend-mode%253Dnormal%2526s%253Ddf308e423089538851f7751014302c70&f=jpg&w=240)
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに そりゃまあ 30 年も経てば古くなりますよ。「入門UNIXシェルプログラミング」は今もシェルスクリプトに関するオススメの本として名前が挙がる名著です。しかしこの本は古い本です。POSIX でシェルが標準化される以前の本で、内容から判断するとおそらく 1990 年ぐらいの常識に基づいて書かれています。 古いから参考にならないと言うつもりはありません。しかしどれだけ優れた本でも時間の流れには勝てません。良書であると思っているからこそ、古くなってしまった内容は訂正する必要があると考えています。なおシェルスクリプトに関する古い本はこれ

はじめに 自分が読んだ本や記事などを読む時に書いたノートを体系的に管理したいですよね。 現在優秀なナレッジマネジメントツールはありふれています。企業向けだと Confluence DocBase Qiita Team などがあります。個人向けはNotion HackMD BoostNote のようなシンプルで使いやすいツールがあります。マインドマップツールをさらに含めると数え切れません。 筆者自身はミニマリストです。 コードのようにGithubで自分のノートを管理したい Webからマインドマップ形式になっているノートを確認したい サブスクではなく、無料で使いたい なので、個人ナレッジマネジメントツールを自作したいという発想に至りました。 結果としては下記の15行シェルスクリプト、GitHub ActionsとMarkdownマインドマップ変換ツールmarkmapで作りました。 項目をク

悩んでる人Kindle本をMacユーザーでも、自動スクショしてPDFデータで保存する方法ってあるの? と思われている方に向けた記事です。 この記事でわかること ●Kindle本をMacで自動スクショしてPDF保存する方法 どうも、さっくんです。Kindle unlimitedも活用しつつ、ビジネス本を中心に年間100冊以上読む読書ライフを2年送っています。 今回は【Macユーザー対象】Kindle本を自動スクショしてPDF化する方法について紹介します。 何か専用のソフトをインストールする方法ではなく、既存のMacソフトだけで永久保存できる方法です。 こんな経験ないですか? ●読みたかったKindle unlimited対象本がいつのまにか対象からはずれている。 ●読みたいKindle unlimited対象本が10冊以上で、ライブラリがキャパオーバーしてしまう。 ●購入したKindle

今年から、できるだけシェルスクリプトを書くのをやめようとしている。私が毎日 zsh に打ち込んでいるのも広義のシェルスクリプトだし、自分用の雑なスクリプトを書くことはあるけれど、チームの他の人も将来に使ったり改変したりするようなものは、なるだけ他の言語を使っている。 シェルスクリプトを書くのは難しいし、その難しさは、学ぶに値しないといったら言い過ぎかもしれないけれど、2021年に初心者が取り組むべき問題とは言い難いと思う。 シェルは悪いプログラミング言語である Bash Strict Mode とかを使ってみても、シェルスクリプトには落とし穴が多すぎる。自分で書いたものを自分で使っている分には大丈夫なのだけど、スクリプトがチーム内で使われるようになると、考慮していなかったところ、例えばファイル名に空白文字が含まれるとか、そういうレベルの微妙なところで、ちゃんと書かれていないスクリプトは壊れ
POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき!ShellScriptBashshellPOSIX はじめに find の出力を xargs にパイプで渡すというのはよく見かける使い方ですが、find -print0 | xargs -0 が使えない POSIX 準拠のシェルスクリプトでは find -exec {} + を使った方が良いです。安全かつ十分に速いからです。よく見かける -exec {} ; ではなく -exec {} + ですので間違えないようにしてください。多くのケースでは + の方が優れているのですが ; ばっかり使われているのを見ると、意外と知られてない気がします。 少しだけ予備知識として、-exec {} ; は -exec {} \; と ; をバックスラッシュでエスケープするのがよく見る使い方

ちなみに [ の外部コマンド版が /usr/bin/ と /bin/ の両方にあるのは Ubuntu 20.04 では /bin が /usr/bin へのシンボリックリンクになっているからです。Ubuntu や Solaris 10、11 などでは(ディスクサイズが大きい今では分ける理由がないから)と統合されています。Debian では統合されてない上に [ は /usr/bin 以下にあったりします。元々 /usr/bin は必要性が低いコマンドを置く場所なので、そこに [ があるというのは面白いですね。 [ が /bin/[ だったのはいつまで? この /bin/[ が使われなくなったのは今から 40 年前の Unix System III (1981) に搭載された Bourne シェルからのようです。 The Traditional Bourne Shell Family より
![シェルスクリプトの [ は /bin/[ と言ったり [ "x$var" = "xval" ] と書く人はオジサン - Qiita](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2fe24191fc6d794c672a3c4e3c93d279622e825d10%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fqiita-user-contents.imgix.net%25252Fhttps%2525253A%2525252F%2525252Fcdn.qiita.com%2525252Fassets%2525252Fpublic%2525252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%25253Fixlib%25253Drb-4.0.0%252526w%25253D1200%252526blend64%25253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFtYXpvbmF3cy5jb20lMkYwJTJGNTQ5MTglMkZwcm9maWxlLWltYWdlcyUyRjE0NzM2OTM1Mjg_aXhsaWI9cmItNC4wLjAmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmJnPUZGRkZGRiZmbT1wbmczMiZzPWE4NWVmYWZlYzFkZjcyYTVmYWIyN2ZmOGViMjQ1Nzdi%252526blend-x%25253D120%252526blend-y%25253D467%252526blend-w%25253D82%252526blend-h%25253D82%252526blend-mode%25253Dnormal%252526s%25253D40c4de7a2283f8493d0f8cd798df1ed7%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526fm%253Djpg%2526mark64%253DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JUUzJTgyJUI3JUUzJTgyJUE3JUUzJTgzJUFCJUUzJTgyJUI5JUUzJTgyJUFGJUUzJTgzJUFBJUUzJTgzJTk3JUUzJTgzJTg4JUUzJTgxJUFFJTIwJTVCJTIwJUUzJTgxJUFGJTIwJTJGYmluJTJGJTVCJTIwJUUzJTgxJUE4JUU4JUE4JTgwJUUzJTgxJUEzJUUzJTgxJTlGJUUzJTgyJThBJTIwJTVCJTIwJTIyeCUyNHZhciUyMiUyMCUzRCUyMCUyMnh2YWwlMjIlMjAlNUQlMjAlRTMlODElQTglRTYlOUIlQjglRTMlODElOEYlRTQlQkElQkElRTMlODElQUYlRTMlODIlQUElRTMlODIlQjglRTMlODIlQjUlRTMlODMlQjMmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtcGFkPTAmcz1mODhlZDY0MTRhMGY0NmIzMDk2NzRhYTViZGRhYzQwYw%2526mark-x%253D120%2526mark-y%253D112%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBrbzFua3NtJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LXBhZD0wJnM9ODVlMzIyOWJiNjA2ZTE4YzM2ZmM0MzNjMTk0ZjJkMmI%2526blend-x%253D242%2526blend-y%253D480%2526blend-w%253D838%2526blend-h%253D46%2526blend-fit%253Dcrop%2526blend-crop%253Dleft%25252Cbottom%2526blend-mode%253Dnormal%2526s%253D8080e43c5361c6b00c16c27261abb63e&f=jpg&w=240)
TL; DR 変数をダブルクォートしない使い方は上級者向けの危険な機能です! $@ と $*(または配列の全要素)をダブルクォートしない使い方は知る必要すらありません! ShellCheck を導入すれば誰でも簡単に正しい書き方がわかります!! 2021-08-21 補足 この記事は dash や bash などの POSIX シェルの一般的な動作を解説しており zsh のデフォルトとは異なります。記事の中でも説明していますが zsh の場合はシェルのオプションを変更することで POSIX 準拠の動作に変更することができます。zsh に関しては後半の「zsh に関する注意点」も参照してください。 はじめに プログラミング言語は、言語によって記号の意味が異なることがよくあります。クォーテーションマークはその一つです。C 言語ではシングルクォートは文字リテラル(一文字)を意味し文字列はダブルク

はじめに 一般的にシェルスクリプトは環境依存が激しいといわれています。一方で移植性を高くするための POSIX という標準規格があるのだからそれに準拠してシェルスクリプトを書けば問題ないはずだと考える人もいます。確かに POSIX は移植性を高くするための標準規格ですがシェルスクリプトに関してはあまり役に立ちません。この記事では POSIX の正しい理解と問題点を解説し、どうすればそれを解決できるのか?という案(まだ十分に検証されていないもの)を提示します。 なおこの記事はシェルスクリプトを使うという前提の話であるため、シェルスクリプト以外を使って解決する方法はこの記事の対象外です。もちろん実際にはシェルスクリプト以外の好きな言語を使って解決して構いません。 POSIX コマンドを批判するあなたは誰なの? まずはっきりさせておきたいのは、私がこの記事で批判する対象は POSIX すべてでは

MediaMarkerがサービス停止して以来、読書メモをどこに残すべきかというのが個人的に大きな問題でした。 蔵書管理はブクログで行っているのですが、ここに常時読書メモを残すというのはどうもピンとこない。アプリを起動すればメモは残せるんだけど、ここに残すとそれはそれで後々めんどくさい。時にはスクショや紙の本を撮影した写真も貼り付けたいわけです。 以前であれば、MediaMarkerで読書メモを残す→Evernoteに自動で出力される→その上にいろんなものを乗っけて読書メモ完成!って流れだったのですが、ブクログで読書メモを残してもそれをほかに連携するすべがない。 ブクログに登録した書籍情報をRSS経由でEvernoteに登録していたのですが、最近ブクログのRSSの挙動がおかしい・・。 ということで、読書メモはブクログとは別のところに残すが良いだろうということで、Scrapboxを使えないかと

筆者が開発している幾らかのコマンドラインプログラムとシェルスクリプトを使って簡単にTwitter bot を作る方法をご紹介します。

私の大好きな Makefile の話が盛り上がっていたのでまとめました。 「やめてね。」って方はお声がけください。 同じ会社にいるけど、真逆の感想を持っている。Makefile読まないと副作用が分からないし、Rakefile/package.jsonだけで済むのに無駄に1つレイヤ増えていて、Makefileできたときからいる人は楽だけど、途中から入った人にとっては学習コストが高い。 https://t.co/EXtmI3xl72— 神速 (@sinsoku_listy) 2020年9月13日golangでMakefileを使うのは分かる。 ただ、RubyやNode.jsのリポジトリなら $ git clone xxx $ cd xxx $bundle install && rake もしくは npm install && npm test で環境構築ができることを期待する。— 神速 (
注 この記事では、Python の便利なライブラリの一部を使用するように環境をセットアップする方法について説明します。これにより、ファイル システムの検索、インターネットへのアクセス、ファイルの種類の解析など、Windows 中心のアプローチからプラットフォーム間でタスクを自動化することができます。Windows 固有の操作の場合は、Python 用の C 互換の外部関数ライブラリである ctypes、Windows レジストリAPI をPython に公開する機能である winreg、Python からWindows ランタイムAPI にアクセスできるようにするPython/WinRT を確認してください。 開発環境を設定するPython を使用してファイル システムの操作を実行するスクリプトを記述する場合は、Microsoft Store からPython をインストー

みなさんはHomebrewをお使いでしょうか。macOSをお使いの多くの開発者が使っていると思います。 HomebrewのインストーラーはRubyで書かれており、次のコマンドでインストールするようになっていました。 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" HomebrewがRubyに依存していることは良いのですが (formulaの書きやすさはRubyならでは)、インストーラーの話になると事情が変わってきます。HomebrewのインストールコマンドはmacOSの工場出荷状態でも動く必要があります。こういうものにRubyを使っているのはリスクがあります。 将来的にmacOSデフォルトにRubyやPythonが含まれなくなる (参考リンク
■ bash の危険な算術式 _ 使ってる人がいちばん多いだろうからタイトルでは bash としてるけど、ここで取り上げることは zsh および ksh 一族(本家 ksh、pdksh、mksh)にも該当する。ash、dash などでは該当しない。 _ 以下のシェルスクリプトには脆弱性がある。わかるだろうか。 #!/bin/bash # "品目,単価,個数" の形式のCSV を読んで、"品目,合計金額" の形式で出力するcsv="foo.csv" while IFS=, readitem price num; do echo "$item,$((price*num))" done < "$csv" これ、細工されたCSV ファイルを食わせることで、任意コードの実行ができてしまう。数ある脆弱性の中でもとくにヤバいやつだ。どこが穴なのかというと、タイトルにもあるとおり算術式なのだが、し
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く