初めて知ったときは感動したけど 自分の中で知ってて当然になってしまった小技をまとめました まだこの小技を知らない人に届いてくれるとうれしい Dockerfile RUNを1つにまとめる
実は1.0.0が2010年12月にリリースされていたのに全く知名度の無い"MySQL Utilities"。実は便利な機能が複数用意されているので、スクリプトを手作りしなくても済む可能性大です。またリリースに向けて新たなマイルストーンリリースが出てきたMySQL 5.6でのレプリケーションの追加機能と組み合わせる便利機能もあります。 MySQL UtilitiesはPythonで書かれたスクリプト集で、MySQL Workbenchに同梱されて配布されています。ライセンスは「もちろん」GPLです。2012年7月上旬時点での最新版は1.0.5です。また実行可能なスクリプトの他に、ライブラリとして細かな機能が用意されているため、独自のスクリプト作成にも役立ちます。 起動にはMySQL Workbenchのメニューの【Plugins】から【Start Shell for MySQL Utilit
これまで Macbook Pro を開発環境としていたんだけど、価格は高いし Docker for Mac は重いしでいいことないなということで Linux の開発環境に移ることにした。前職の最初の数年はすべて VM(当初は jail)にログインして開発していたのでその頃に戻った感じ。ただ GUI は macOS が何かと楽なので Intel NUC を購入して自宅に置いてリモートでログインして使っている。Core i7、メモリ 64GB で10万ちょいと安いのにめちゃくちゃ快適でさいこう。 ここからは備忘録としてリモートを開発環境とするうえで実施した作業を残す。あと作ったものもあるので宣伝。 外部からログインしたい自宅以外からも使うだろうということで(最近京都からリモートで働くこともあり)、VPN サービスとして Tailscale を導入した。 Best VPN Service for
Beyond grep: ack 2.04, a source code search tool for programmers grepをよく使うプログラマはどう考えても乗り換えるべき新しいgrepコマンド「ack」。 サーバに入ってコードを書いている人はかならず使うgrepですが、grepよりも高速に検索でき、git,svn等のソースコード以外のソースはgrepしないで検索できるツールらしいです。 Perlで書かれていて、Perlの強力な正規表現が使え、ハイライトしてくれます。ソースツリーの下で「ack 検索ワード」で検索するだけというシンプルさもいいです WEBサービスを書いているとhtmlやphp等色々なソースをいじりますが、ファイルの検索対象も選べるため、便利です。 ack --php <検索ワード> でphpのソースのみを対象とし、ack --nophp <検索ワード>でphp
UNIX/Linux の部屋 に、bash の内部コマンド select コマンド を追加しました。メニュー形式の選択肢を提示し、ユーザに選ばせることができるコマンドです。
GowはWindows用のオープンソース・ソフトウェア。LinuxやMac OSXを使っていてWindowsに移ると非常に面倒に感じるのがコマンドラインでの操作だ。GUIが当たり前なので致し方ないのだが、それでもコマンドラインである程度の作業が出来ると利便性が高い。 130種類を越えるコマンド群 そのような時に使っていたのがCygwinだが、レジストリが色々変更されたり、そもそもcygdriveという書かれ方が好きではなかった。もっとシンプルにコマンドだけを使いたいならばGowを利用してみよう。 Gow(Gnu On Windows)はシンプルに使えるLinuxコマンド集で、lsやwc、wgetといったような一般的コマンドが136個ほど詰め合わせになっている。cvsやscp、puttyといったプログラムも用意されているので利便性が高い。vimもあるのが面白い。 パスにも追加されるのでコマン
ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、ショッピング事業部開発部の吉野です。 Yahoo!ショッピング開発部では新人エンジニア向けにコマンドのソースコードを読むことを奨励しています。 その初期の題材として、lsコマンドがよく挙げられます。 今回は「lsコマンドをハックしてみよう」と題し、lsコマンドについてお話しさせていただきます。 突然ですがエンジニアの皆さん、lsコマンドのソースコードを読んだことはありますか? 読んだことのない方はぜひ一度、目を通しておくことをおすすめします。 意外と知られていませんが、lsはcd,pwdなどのコマンドと違いシェルの組み込みコマンドではありません。 一口にlsと言っても、複数のソースコードが存在します。 代表的なのはGN
id:bleis-tiftによるgitのフックスクリプト集がマジ便利。 gitとredmineを使ってる人はぜひ使うべき 機能 チケット番号付加 id/12というブランチで作業してるときは、コミットメッセージの末尾にrefs 12を自動でつけてくれます Redmineのチケットごとにブランチを切るようにすると、マジ便利 masterブランチへのコミット拒否 masterブランチへのコミットを拒否する 必ずトピックブランチを切るようになる pushされたときにチケットIDのないコミットの拒否 チケットIDのないコミットのpushを拒否します ダウンロード・インストール方法 https://github.com/bleis-tift/Git-Hooks に書いてある通りにすれば簡単にインストールできます
前々回に「.NET」の話をしたので(「あらためて「.NET」について整理する」)、ついでと言ってはなんだが、今回はPowerShellについても経緯と現状をまとめてみることにする。 2005年9月に米国で開催されたMicrosoftの開発者向けイベントProfessional Developers Conferenceで発表されたMonad。これが後にPowerShellと呼ばれるようになる。当時は、スクリプト言語として開発が進んでいた 例によって、また用語の話からで恐縮だが、「PowerShell」には「Windows PowerShell」と「PowerShell Core」があり、「PowerShell Core」は、Ver.7.0から「PowerShell 7」という名称が正式になった。 基本的に「Windows PowerShell」はWindowsに付属している「PowerSh
とりあえず mycli と aws-shell のスクリーンキャストを見てください。 prompt_toolkit はこのようなリッチコンソールアプリを作るためのライブラリです。 Windows でも動きます。 Jupyter (ipython notebook) を切り離した、コンソール版の ipython も次のメジャーバージョンでは readline ベースから prompt_toolkit ベースに作りなおされています。 ipython 以外にも ptpython というシェルもあり、 ipython の各種 magic が不要な場合はこちらで十分でしょう。 https://github.com/jonathanslenders/python-prompt-toolkit#projects-using-prompt-toolkit には、他にも prompt_toolkit を採用
Perlでコマンドラインオプションをparseしようと思うと組込みモジュールとしては Getopt::Std と Getopt::Long がある。が、long style option *1 つまり --option-name のようなオプションを解釈してくれるのは Getopt::Long だけだ。なので普通はこちらを使おう。 ただし 絶対にデフォルト、つまり以下のようにして使ってはいけない。 use Getopt::Long; my (@primary, @secondary, $silent); GetOptions( "server-primary|p=s" => \@primary, "server-secondary|s=s" => \@secondary, "silent|S" => \$silent ); これダメ! 絶対ダメ! 死ぬ! 最初に結論を書く 必ず以下のように
outputz でいまだに1位になれたことがない村瀬です。 社内で開発をスムーズにするための tips 集を紹介したので、まとめておきます。 記事ではデモができないので便利さが伝わらない物も多いですが参考になれば幸いです。 screenとかzshとか便利だよ!と言う話は社内ではさんざんしているのでありません。 また、OSX 限定の内容もあります。 でははじめましょう。 keychain keychain と言っても OSX の KeyChain ではなく、コマンドラインのツールです。 これは ssh-agent をより便利にするためのラッパーです。これを使用すると ssh の秘密鍵のパスワードを一度入力するとあとはパスワードなしで ssh 接続できるようになります。 「同じこと二回も言わせんな!」といつも切れているような人は導入すると良いでしょう。 使い方は $ keychain ~/.s
Warpとは Warpとは、多くの便利な機能と最新のコードエディタのような操作感が実現されている非常に高速なRustベースのターミナルで、モダンなUIで利用体験も良く、生産性を上げられそうなアプリケーションです。 以下公式サイトもしくは、Homebrew経由でインストールできます。個人であれば、無料で利用することができます✨(2023年8月現在、Mac OSのみ対応しており、Windows版は開発中) 初回起動時はGithubのサインインが求められたり、簡単な質問に答える必要があります。ただ、導入自体はサクッと進めることができたり、Zshがデフォルトのシェルとして設定されているので、手間がかからないのも有り難いですね。 ■ 公式 ■ Homebrew iTermからの卒業 わたしは今まで、主にiTermを使ってターミナル操作を行ってきました。 ただ、iTermのデフォルト設定では、Mac内
pecoというインタラクティブに入力をフィルタして出力するコマンドがあって、使い始めてからシェルの操作方法が大幅にかわり、だいぶライフチェンジングだった。 最近このへんが流行ってるのでやたら記事あるけど、せっかくなので僕も使い道を紹介しようと思う。 pecoをzshで使う 1. peco ghq ghqを使ったローカルリポジトリの統一的・効率的な管理についてのこと。 僕も$GOPATHは$HOMEにしていて、今のところ別に困ることはない。 go getしたりghq getしたりして美しくディレクトリ切った上で、pecoに割り当てておいたC-sですぐ目的のディレクトリ開けるようにしてあるので、めちゃくちゃソース管理が楽になった。 function peco-src() { local selected_dir=$(ghq list | peco --query "$LBUFFER") if
電子メール、ネットワーク機器集中管理、異常検知、分散処理、クラウド基盤などのシステム開発に従事。古代Rubyist。 CLI や TUI なアプリケーションを使っていると、端末の画面が崩れてしまうことがよくあります。 たとえば、こんな TUI が、 環境によってはこんな感じで崩れます。 スクロールなどをしながらしばらく使っているとさらにどんどん崩れていきます。 こうなってしまった場合、とりあえず Ctrl-l で画面を再描画することで、大抵はなんとか読める程度にリセットできますので、ことあるごとに Ctrl-l を連打することになります。 ですが、どうしようもないケースもままあります。 例えば、私の場合は以下のようなシチュエーションで困ります。 w3m でテーブルなどを表示するとレンダリングが崩れる less でログの閲覧の際に表示されるべき文字が表示されず見落としが発生する Wander
write down a command-line to see the help text that matches each argument
shell script は普段さけて通りたいと願ってやまないわけですが、たまには書かないといけないことがあるので、そういうときは覚えておくと便利な tips を2つ。 autodie っぽくするset -eとすると、コマンドの実行に失敗したときにそこで実行がとまるので便利。 #!/bin/sh set -e perl -e 'die' echo SHOULD NOT REACH HEREとすると % ./hoge.sh Died at -e line 1. % echo $? 255となって、最後までいかずに死にます。 複数のコマンドを順番に実行するときに便利。 なお、以下のような挙動をするんだそうです。 ただし失敗したコマンドが until または while ループの一部である、 if 文の一部である、 && または || リストの一部である、 コマンドの返り値が ! で反転されてい
こんにちは、技術部の福森 (@sora_h) です。 最近は環境変数に API トークンや credential といった認証情報を入れる事が増えてきています。 たとえば、AWS を利用するツールでは AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY といった環境変数にだいたいの場合で対応しています。 そのため、~/.bashrc や ~/.zshrc などシェルの設定に export を書いておき常に使える状態にしている方も多いと思いますが、 それって実は危険ではないでしょうか? 例えば、下記のようなリスクが考えられます: 意図せず情報が利用されて意図しない副作用が発生してしまう危険性 本番に変更を与えるつもりはなかったけれど事故を起こしてしまう等 悪意のあるスクリプトを実行した際に環境変数を送信などされてしまう危険性 事故や漏洩を防ぐためにも、筆者はかな
概要 bashの記法は独特なものが多く毎回ググってしまうのでまとめて(と言いつつまとまりがないですが。。。)おこうと思います。 ある程度まとまってからpostしようとか思ってたらごちゃごちゃになっちゃいました。 bashで使えるという意味なのでposixシェル共通のネタも混ざってます。 随時更新します。参考になれば幸いです。 参考 man bash リファレンスマニュアル Advanced Bash-Scripting Guide カッコ色々 bashでは色々なカッコがありますが、よく違いが分からず使っていたりするのでまとめてみます。 []と[[]] []はtestコマンドのaliasです。[[]]じゃないとできないこととしては、以下のようなものがあります。 空白を含む文字列をクォートしなくてOK var='abc 123' # []の中だとクォートしないとエラーになる [ $var =
Mac を使っていて、だんだん動きがもっさりしてきたなー*1と思って /private/var/vm/ 下を見ると、案の定スワップファイルが溜まっていることがある。 こういうケースでの対策としては、・スワップ禁止にする、・/usr/sbin/purgeする、・再起動する、といった手があるけど、スワップ禁止にするのは本当にメモリ不足になる可能性を考えると怖いし、purgeはスワップアウトしたデータを回収してくれないので効果は一時的だし、再起動はめんどい。 そんな場合は、処理が落ち着いたタイミングで以下のようにして、スワップを実メモリに書き戻せばよい*2。スワップファイルも全部消える。 $ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist $ sudo launchctl load
おひさしブリーフ、かっぱです。 tl;dr 下図のように cron ジョブで定期的にスクリプトを生成して実行させようとした時、スクリプト完了する前に次の cron ジョブが走ってスクリプトが生成されて、そのスクリプトが実行されてしまうような状況に遭遇してどうしたもんかなと悩んでいたら ts というツールを見つけたので試してみた。 memo ts とは http://vicerveza.homeunix.net/~viric/soft/ts/ https://osdn.jp/magazine/09/01/20/0150258 スクリプトやコマンドを ts コマンド経由で実行することで、それらをジョブとしてキューに放り込んで順次実行してくれるツール。冒頭の構成に ts を加えると下図のようになり、cron の開始時間とスクリプトの実行時間の依存関係は切り離される。 導入 CentOS 6 に導
何が言いたい? Macだと何か良い記事が書けると勘違いしてないか? Macの特徴を活かしきれているのか 自己満足の世界に入っていないか? 君の視線の先にユーザはいるか 最後に こんばんは。Milkです。 何となく眺めていたらこんなTLが流れてきました。 本当に優秀な若者であれば、Macbookくらいさっさと借金でもして買ってるんですよね。— やまもとりゅうけん (@ryukke) 2017年7月27日 あのね。WindowsはLinuxを取り込んで、Bashが動くようになり始めてる。 そもそも、Macじゃないとできないことって何があるんだよ。 イラストレーターじゃあるまいし。 本気ならLinuxやれ。— Milk@狐 (@milk19873) 2017年7月27日 この後、この人のTLを眺めてみましたがこれの前後の関連性は見えませんでした。 なんか、優秀な人なら金借りてでもMacを使うらし
本稿は2006年4月12日に公開された「次世代WindowsシェルMSH(コード名:Monad)を試す(前編)」の改訂版です。Windows PowerShell RC1版のリリースに合わせて、Monadシェルの正式名称は「Windows PowerShell」となりました。MSHおよびMonadという名称はもはや使用されません。 Monadベータ版からの変更点の詳細については本稿冒頭で言及しているWindows PowerShell本体のファイル「PowerShell_i386.zip」に含まれる「Windows PowerShell RC1 release notes.htm」に記載されています。 Windowsのシェルといえばコマンド・プロンプト(cmd.exe)であるが、その機能はUNIXなどのシェルと比較するとまったく貧弱なものである。WindowsではMMC(Microsoft
私は年に 1 回、自宅と職場の 2 台の Mac をクリーンインストールでアップデートするのですが、開発環境の構築をある程度自動化しています。来年のために手順を残しておくので、参考にどうぞ。 目次 これまで 事前準備 Brewfile を作成する AppStore にログインしておく パッケージをインストール 再起動 パッケージのインストール後 Brewfile に書けるパッケージの探し方 おわりに これまで 自動化を始めたのは多分 2013 年とかその頃。使っていたツールは Brewfile に始まり、Ansible を経て、去年は rcmdnk/homebrew-file を使っていました。Ansible 時代が一番長かったと思います。2019 年のクリーンインストールの時期になり、セットアップはどうしようかと調べたところ、Homebrew/homebrew-bundle が Home
Jash: JavaScript Shell Jash is a DHTML-based window that gives you command-line JavaScript access to the current browser window. JavaScriptの開発等にかなり使えるJavaScriptシェル「Jash」。 Jashサイトのダウンロードページでブックマークレットがダウンロードでき、このブックマークレットを設定し、実行することでサイト内に小窓が開きます。 小窓には JavaScript シェルが統合されていて、小窓にJavaScriptコードを入力して、JavaScript の対話的な実行が可能です。 (入力欄は、TABキーによる補完も可能です) Jashを使って、例えば、次のようなことが可能になります。 サイト上で定義されているJavaScript変数の中身
SSH で他所のサーバに接続したとき、ターミナルの背景色を変えたくなりませんか? ぼくはなります。 正道(よくある方法) iTerm2 にはプロファイルという機能があって、 予め作成しておくと、背景色以外にもいろいろと変更できます。 今回は扱いません。 邪道(趣味の領域) そもそも何故こういうことをしたいと思ったかというと、 自分の手元だと思ってコマンド打ったら SSH でログインしたお客さまの環境だった、という事故を起こしたくないからです。 「お客さまの環境へログインする場合はこう」、と作業手順を変えるのが本来の姿ですが、 結局のところ思い違いによるミスは防げませんし、 結果として両方の環境を整備しなくてはならなくなり、手間が増え、設定のミスマッチによる事故を起こしたり、そもそも(あきっぽい自分の性格的に)きっと整備しなくなる・・・という恐れもありました。 ssh サーバ名と実行したら、
始めに Vimには:wと:rコマンドがあります。コマンド自体は知っている方が多いかと思います。 ぼく的にちょっと便利な使い方ができるので、それお紹介していこうと思います。 :r :r banana.txtでファイルの中身を読み取って、現在のカーソルの次の行に挿入してくれます。 挿入できる行も指定できます。その場合は:{lnum}r banana.txtというふうに先頭に行番号を入力します。 ここからがイチオシですが、実は:r !{cmd}でコマンドの出力も挿入できます。 たとえば、APIのレスポンスをVimでちょっと編集したい場合や、コマンド実行結果を記事に挿入したい場合などに便利です。 :w :wについてVimmerのみなさんなら誰もが知っているコマンドなので説明は省きますが、 実は:w !{cmd}でバッファの内容を外部コマンドの標準入力として渡してくれます。 つまり、標準入力からコー
こんばんは。なんだか自分でもよくわからない@srockstyleです。 そういえば最近WEBサービス立ち上げるのはやってるみたいですね。とてもよいことです。 僕もWEbサービス三つくらいたちあげたんですがきちんと運用してないとだめですね。 そんな僕はプログラミングできませんでした。 こんな記事をはてなブックマークでみました。 WEBサービス作るの難しすぎるよう…… ++++引用開始++++ 今度は急にローカル環境・サーバー環境の構築から始まります。まずRubyをインストールするにはrvmだかMacPortsだかが必要だと言われ、gemのインストールやらデータベースやらどのフレームワークがどういうものでMVCがどうだ、O/Rマッパーがこうだ、ホスティングにはさくらのVPSだ、Herokuがなんだとかgitでプッシュだデプロイだなんだ、この野郎。常時、「日本語でおk」状態。 ++++引用ここま
最近 oh-my-zsh ってのがあるって聞いた。インストールするだけで zsh が便利になるみたいなので、早速試してみた。 oh-my-zsh って何? oh-my-zsh は zsh の設定を管理するフレームワークで、いろんな設定を有効にして管理、更新できるようになる。プロジェクトは GitHub で管理されてる。 http://github.com/robbyrussell/oh-my-zsh 特徴としてこんなことが挙げられてる。 40以上のプロンプト テーマ 便利なプラグイン 自動アップデート機能 コミュニティ主体の開発(みんなの設定を取り込んでいく) インストールすると、だいたいこんなことが設定される。 プロンプトがかっこよく(?)なる alias がいっぱい設定される よく使う option が設定される インストール直後はこんな感じ。 Git のブランチ名も表示される。 必要
ようこそ このサイトはMac OS X上の学術系ツールやオープンソースソフトウェアに関する情報を集め、共有することを目的にしています。 MacWiki の各ページは、誰でも自由に編集できます。 気付いた人が少しずつ、足りない情報を書き足していくことで、 良質の情報ページが出来ていって 多くの方の参考になってくれればと思います。 趣旨に賛同して下さる方はぜひ、 あなたの知っていること・気付いたことなどを ページに書き込んでいって下さい。 ページ一覧 次のページ一覧や、サイドバーにあるリンク・検索ボックスを使って お探しの情報にアクセスしてください。 ページ一覧 - 全ページの一覧です。 カテゴリ一覧 - 全カテゴリの一覧です。 最近更新したページ - 最近更新されたページの一覧です。 ナビゲーションページ - 主なページへのリンクです。 談話室 - サイトの運営に関する話題や、 個々のページ
大量にあるファイルのファイル名を一括で変更する場合、どうしても GUI での操作であったりマッチパターンを書くのが面倒だったりしましたが、massren を使えば誰でも簡単にファイル名の一括置換が出来る様になります。 laurent22/massren - GitHub massren - Easily rename multiple files using your text editor https://github.com/laurent22/massren お気に入りのテキストエディタを使って、好きな様にファイル名を変更出来ます。サポートしているOSは Windows, Linux, OSX です。中身は golang で書かれています。 それぞれバイナリが用意されているので自分でビルドする必要はありません。Linux と OSX の人はリンク先にある手順を、Windows の人は
GNU screen を使い始めて数ヶ月が経ち、ようやく慣れてきました。それで、screenrc による設定方法などを調べているのですが、「こういうときはこうする」とか「こうするとこうなる」というオススメの設定があったら是非教えてください。 今の screenrc はこういう感じです。 escape ^Tt termcap kterm hs@ terminfo kterm hs@ vbell off bind w windowlist -b hardstatus alwayslastline I%wI defhstatus I^En:^EtI shell -$SHELL startup_message off autodetach on いくつかよくわかってないののも混ざってますがw よろしくお願いします。
「Windows 10 Fall Creators Update」に合わせて「Bash on Windows」の名称が非推奨になり、「Windows Subsystem for Linux」を正式名称とする正式版がリリースされる。 今月にもリリースされるWindows 10の大型アップデート「Windows 10 Fall Creators Update」に合わせて、Windows上でLinuxを実行する機能の名称としての「Bash on Windows」が非推奨になることが発表されました。 今後の名称は「Windows Subsystem for Linux」(WSL)に一本化されます。 と同時に、「Windows 10 Fall Creators Update」のリリースに合わせて「Windows Subsystem for Linux」はベータ版を卒業して正式版となります。 This
はじめに ことの始まりは「シェルスクリプトでツールを作ったけど速度が遅くて使い物にならなかったので供養」というツイートを見たからです。コードを見てみると、実例をあまり見ないシェルスクリプトのリファクタリング例として丁度良い内容と分量だったため記事にいたしました。記事を書くにあたりコードの利用を快く承諾していただいた @Hayao0819 様にはこの場を借りて御礼を申し上げます。 内容は章立てで構成しており、序章で事前調査をし、第一章で一般的なリファクタリング、第二章でパフォーマンスを重視したリファクタリング、終章で少し余談をして締めくくっています。最初はパイプは並列処理されるから速くなるというのは神話(そうとは限らない)についても書いていたのですが流石に長いので分けました。それでも書きたいことを色々書いていたらめちゃくちゃ長くなってしまいましたので読み物として私がどんなことを考えながらリフ
cles::blog 平常心是道 blogs: cles::blog NP_cles() « X220 が Fan Error. により完全に沈黙 :: X220 のファンユニットを交換 » 2014/06/04 /etc/init.d/hoge start と service hoge start は何が違う? systemmanagemant cli 214 4へぇ 普段、Linux でデーモンを制御するには /etc/init.d/hoge というスクリプトを叩いている*1のですが、あるマニュアルを読んだら service hoge を使いましょう的なことが書いてありました。 試してみると確かに /etc/init.d/hoge start の代わりに service hoge start としても同じようにデーモンが起動できるようです。 ただ、困ったことに僕にはこの2つの違いが
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く