date コマンドつらい

タイトルどおりですが、date コマンド色々つらいですよね。 同じ名前の date コマンドが、OS や環境によって、似て非なるものであるという辛さがまず第一に挙げられるかと思います。 macOS 上でデフォルトで使える date コマンドは BSD 版の date です。 BSD…

Arduino で SORACOM SIM を使ってなるべく安く通信する方法

ここで「通信」とは 3G or LTE でのモバイルデータ通信、「なるべく安く」というのは、 イニシャルコスト ランニングコスト の両面で考えていきたいと思います。といってもランニングコストに関しては、SORACOM SIM を使っている限りはデータ通信量が少なけ…

SORACOM LoRa Space に「接続ポイント」を登録してみた!

SORACOM の共有型 LoRaWAN 接続サービス「SORACOM LoRa Space」ですが、私の手元にもようやく、ようやくデバイス(LoRa Arduino 開発シールド AL-050)が届きまして、さてどんな事をして遊ぼうかなと考えていたところ、SORACOM LoRa Space のホームページ が…

Go のプログラムで Windows 上で chmod しようとしただけなのになぜか golang.org/x/sys/windows にバグっぽい挙動を見つけたばかりかなぜかアセンブラを読むハメになった話

何を言ってるかわか(ry ファイルのパーミッションを変更する chmod コマンド相当の関数は、私の知る限り Golang の標準ライブラリには 2 つあって、しかもそのいずれもが Windows 上では期待したような動作にならないって、みなさん知っていましたか? まず…

リモートホスト上のパケットキャプチャをリアルタイムに手元のマシンの Wireshark で見る方法

ワンライナーで行けちゃいます😁 wireshark -k -i <(ssh user@host "tcpdump -U -n -w - -i eth0 'not port 22'") しかもリモートホスト側で何かしら特別な準備とかが不要なので非常にお気楽・お手軽です。 前提条件 手元の環境に Wireshark がインストールさ…

bash スクリプトでヒアドキュメントを変数に格納したいけどヒアドキュメントの中にカッコがあってエラーになってしまう場合の対策

最近ブログの記事タイトルが長い気がするのでなんとか短めに抑えたいのですがなんとかならないものでしょうかね。 さて、昨年あたりから shellcheck というツールを使ってシェルスクリプトの lint をするようにしたので自分の shell 力が少し上がった気がし…

ssh の ProxyCommand を .ssh/config に書かずにコマンドライン引数で指定する方法

ssh で踏み台ホスト経由で目的のサーバーに到達したいということはよくあると思います。 たくさんの先人たちが ~/.ssh/config に書くべき内容について書き残してくれていますのでここでは特に詳しくは触れません。 基本的には ProxyCommand を使って、踏み台…

git コマンドを alias してるときにも補完を効かせる方法

プログラマなら呼吸をするように git コマンドを使うと思うので、git っていう 3 文字でさえ長過ぎますよね。 ということでみなさま .bashrc などで alias g='git'みたいなことをしてると思いますが、この場合 git-completion.bash による補完が効かなくなっ…

Mac で SORACOM Air で接続している時に特定のルートだけ SORACOM 経由にしてそれ以外は Wi-Fi 経由にする方法

タイトルが若干長いですが、やりたいことは以下のとおりです。1. 通常は Wi-Fi などでインターネットに接続している 2. SORACOM Air 入りの USB 3G/LTE モデムを Mac に挿した時、SORACOM が提供するサービスには SORACOM Air 経由でアクセスしたいが、それ…

長時間かかったコマンドの実行完了を bash でも terminal-notifier でお知らせしたい

[2016.02.19 追記] スクリプトにバグがあったので修正しました [追記ここまで]世の中には CLI から OS X の通知を出せる terminal-notifier という素晴らしいツールがありまして、github.comこれを brew でインストールしたりなんかすると $ terminal-notifi…

SORACOM Air が使える IoT 向け基板のまとめ

さて、前回の記事では SORACOM Air が使える USB 3G/LTE モデムや Wi-Fi ルータをまとめましたが、今回はより IoT に特化した基板で SORACOM Air が使えるもの(動作報告がネット上で見つかったもの)をまとめてみたいと思います。例によって動作保証ではあ…

SORACOM Air が使える USB 3G/LTE モデム、WiFi ルーターのまとめ

SORACOM Air SIMカード(データ通信のみ) (標準)出版社/メーカー: 株式会社ソラコムメディア: この商品を含むブログを見るSORACOM Air とは、ひとことで言うと IoT (Internet of Things) 向けの SIM です。 API で通信速度のコントロールができたり、データ…

Go で DynamoDB Local を使った時にいろいろハマったのでメモ

AWS 公式の Go 言語用 SDK がありますが、Developer Preview ということもあってかドキュメントがちょっと不足しているように思います。github.com 私は Go のプログラムから DynamoDB を使いたかったのですが、検索するときのキーの指定の仕方とかがだいぶ…

最近のCygwinでbashのプロンプトにgitのブランチ名を表示する方法

以前はgit-completionパッケージをインストールして/etc/bash_completionをsourceすればよかっただけのような気がするのですが、最近はこれだとgitコマンドの補完は効くけどプロンプトに表示する__git_ps1が定義されていないようです。解決策としては、GitHu…

ドライブレコーダー Transcend D200 をコストコで購入

前から欲しかったドライブレコーダー。 Transcendの製品が安い割に評判が良かったようなので買うならTranscendにしようと思っていたところ、コストコで税込み11,800円で売られているのを発見。当時の価格.comの最安値よりも1,000円ほど安かったので購入を決…

$0書き換えが流行っているようなので一つ流行に乗っかってみるか

以下の記事では $0 での偽装を見破るため ps コマンドに c オプションを指定して /proc/<pid>/commを表示させればよいというようなことが書いてあると思いますが、/proc/<pid>/commも容易に書き換え可能みたいですのであまりあてにしないほうが良いでしょう。(偽装さ</pid></pid>…

Intel Edison の Ubilinux をシングルユーザモードで起動する方法

Intel EdisonをUbilinuxに入れ替えて遊んでいたら、起動スクリプトの書き方を間違えたせいでEdisonが起動しなくなってしまいました。Intel Edison Breakout Board Kit Edison本体+Breakout基板出版社/メーカー: Intelメディア: Personal Computersこの商品を…

Intel Edison に InfluxDB をインストールする方法

http://influxdb.com/download/から最新版をダウンロードします。 Go もインストールしてあるのでソースからビルドしても良いかと思ったのですが、意外とビルド方法が難しそうだったので linux/386 版のバイナリパッケージを利用することにしました。パッケ…

Intel Edison で動かした Arduino のスケッチを停止・削除する方法

Edison を入手して、「"Lチカ" してみました!」という記事は世の中に履いて捨てるほどありますが、じゃあそのアップロードしたプログラムを消去したい場合はどうすればよいの?と思って調べてみるも、なかなか第一次情報ソースに行き当たりません。Intel Ed…

Intel Edison に Go をインストールする方法

Go はクロスコンパイルが簡単で、出来上がったバイナリの配布も簡単なので、わざわざ Edison 上で Go コンパイラを動かす必要もないのですが、、、 やってみたかったからやってみただけです。Intel Edison Kit for Arduino出版社/メーカー: Intelメディア: …

Docker コンテナに Android SDK をインストールする方法

Android の開発環境を Docker コンテナにしたかったので Dockerfile を書いたのですが、意外とハマったのでここにメモを残しておきます。

Android L Preview のデバイスで Heads-up Notification を表示する方法

注:この記事は 2014年 7 月上旬現在の Android L Preview の ROM イメージおよび SDK の内容に基づいて書かれています。Android L が正式バージョンとしてリリースされるまでの間に、この記事の内容は obsolete になるかもしれません。Android L Preview で…

Vim で数のインクリメントやデクリメントをするキーバインド

vim

Vim には Ctrl-A (以後 C-a) を押すとその時カーソルの下にある数をインクリメントしてくれるというプログラマに嬉しいキーバインドがあります。(C-x でデクリメント)これはたとえば 1 という文字の上で C-a を押すとその文字が 2 になり、続けて押してい…

useradd コマンドでユーザのパスワードを指定する方法

スクリプトなどで自動で Linux のユーザを追加して、そのユーザにパスワードまで設定したいということはあると思います。たとえばテスト環境の構築を自動化していてダミーユーザをたくさん作らないといけない場合など、たとえパスワードがバレても特に問題な…

Ubuntu 14.04 にしたら mount cifs がエラー

最近、開発のサブで使っている環境を Ubuntu 12.04 から 14.04 にアップグレードしたのですが、いろいろ細かいことで変化があって困っています。 なのでメイン環境の移行はもうちょっと先ですね。その困りごとのうちの一つが、Windows Server のフォルダをマ…

valgrind の track-fds=yes オプションを指定した時に fd=0,1,2 が open されたままだと指摘されるのをどうにかする方法

たとえば以下のような無害なプログラムをコンパイルして valgrind にかけて実行します。main.c int main() { return 0; } $ gcc main.c $ valgrind --track-fds=yes ./a.out ==2227== Memcheck, a memory error detector ==2227== Copyright (C) 2002-2011, …

Eclipse の Tooltip の背景が真っ黒になって文字が読みづらいのを直す方法

おそらく Ubuntu 限定の問題だと思います。Eclipse(およびその派生プロダクト)を使っていてエラーのある行の波線が引かれているところにカーソルを合わせると出てくる Tooltip があると思いますが、これが背景色が真っ黒なのに文字の色も黒っぽい色でハイ…

WinDBG によるデバッグ方法(ダイジェスト)

Visual Studio のプロジェクトが存在せず、nmake や cl などを使ってビルドされる C/C++ プログラムをデバッグしようとして、いろいろ困ったのでメモ。 1. WinDBG のインストールWindows SDK をインストールすれば一緒に入ってくる。2. プログラムは /Zi オ…

Windows の PATH 環境変数の各パスは ” ” (ダブルクオーテーション)で囲まなくても良い ー むしろ囲っちゃダメ

Visual C++ のコンパイラをコマンドラインから起動しようとして、その準備として vcvarsall.bat を実行しようとしてハマったのでメモ。vcvarsall.bat は cl.exe などの置かれているディレクトリへのパスを環境変数として設定したりするバッチファイルですが…

Cygwin の PATH 文字列と Windows の PATH 文字列の相互変換

答えを先に書くと、cygpath コマンドを使います。Cygwin の形式(/cygdrive/c/... )→ Windows 形式(C:\... ) $ cygpath -w /cygdrive/c C:\ Windows 形式 → Cygwin 形式 $ cygpath C:\\ /cygdrive/c Cygwin から Windows のプログラムを起動しようとする…

エレクトロラックス エルゴラピード

コードレス掃除機を探していて、コストコで見つけたのがこちら:エレクトロラックス エルゴラピード 型番は ZB2901 というものなので一世代前のものだと思いますが、コストコでは 1万2,800円くらいで売っていました。 ( ネットで探した最安価格より1,000円…

xinetd で走らせてるサービス(デーモン)の状態を知る方法

xinetd でどのポートでどのサービスを動かしていたかをお手軽に調べたりしたい場合の方法をメモ。http://superuser.com/questions/318040/how-to-get-status-information-form-xinetd より。 $ sudo pkill -USR1 -x xinetd $ cat /var/run/xinetd.dumpUSR1 …

渋谷でレゴブロック売ってない問題

[2015.01.29追記]以下の記事によると、2月5日にビックカメラ渋谷東口店がリニューアルすると玩具売場ができ、レゴも販売されるようです。これは楽しみです。オープンしたらチェックしに行こうと思います。渋谷駅東口にビックカメラ「別館」-スポーツ用品初…

テキストファイルの中に書かれた数字をコマンドラインで集計する方法

何らかの文字で区切られたデータファイルがあって、その中の特定のカラムの合計を計算したいとします。たとえばデータファイルは以下のような感じです。 $ cat datafile.dat data1: 0, 123, 222, "some text" data34: 11, 3, 24, "another text" data209: 45…

boot2docker で Docker の使用するポートが CrashPlan と競合するときの対処法

OS X で Docker を使えるようになったとのことだったのですが、私の環境でも下記の記事と同じように CrashPlan がインストールされていたのでポートが競合してしまい、boot2docker init がエラーになってしまいました。 $ boot2docker init [2014-02-15 15:3…

RSA 秘密鍵/公開鍵ファイルのフォーマット

openssl コマンドで生成される RSA 秘密鍵ファイルのフォーマットの中身が気になったので調べてみた。 初心者にわかりやすく説明されたサイトが意外と見当たらなかったようなのでまとめておく。まず、鍵の生成に使ったコマンドはこんな感じ: $ openssl genr…

Ruby をソースからビルドして rbenv で使う方法

まず、Ruby 本体に手を加えてそれをフィードバックする可能性があるなら、GitHub 上で fork してからそれを clone ましょう。そうでなくて単に最新の Ruby を追いかけたい!というような場合は、https://github.com/ruby/ruby.git を clone すればよいでしょ…

gcc などの出力に色をつけるプログラム

コマンドラインで gcc などのコンパイラを実行したり複数のファイルを make によってビルドするときなどに、ついついコンパイラからの出力メッセージを目視してしまう私のような情弱は、ある程度規模が大きなプログラムになると警告やエラーメッセージが他の…

Ruby コミュニティにコードを contribute する方法

うっかり Ruby の標準添付ライブラリに好ましくないと思われる挙動を見つけてしまって、直してはみたもののその修正をどうやって contribute すればよいのかと思って調べてみたけどよくわからなかったので http://www.ruby-lang.org/en/ の説明をいろいろ漁…

Android SDK のコマンドを実行しようとしたら No such file or directory と言われて焦った件

dexdump を使おうとして、2 回もハマったので、自分用メモ。結論から言うと、 $ sudo apt-get install ia32-libsで解決。私は Ubuntu 12.04 の x86_64 バージョンを使っているので Android SDK も 64bit 版のものをダウンロードして使っていますが、Android …

Tizen Native API のメソッド名末尾についてる N の意味

この記事は Tizen Advent Calendar 2013 に参加予定の記事です。 Tizen で Native アプリを開発していると、ときどき API の関数名の末尾に N が付いているのを見かけます。たとえば身近なところでいうと Tizen::Base::Collection::ArrayList::GetEnumerator…

Tizen の sdb コマンド向け bash completion のご紹介

この記事は Tizen Advent Calendar 2013 に参加予定の記事です。 Tizen でアプリを開発していると、コマンドラインからアプリのインストールやアンインストール、ファイルのコピー、デバイスのシェルへのアクセスなど、いろいろと便利な sdb コマンドを使い…

Linux (Ubuntu) から NTFS でフォーマットされた外付け USB HDD へファイルをコピーしたらシンボリックリンクがシンボリックリンクのままだったでござるの巻

表題の通りなんですが、シンボリックリンク先の実体は外付け HDD にはコピーされていなかったので意味のない状態になってしまい、困りました。ちなみにコピー先が NTFS ではなく FAT32 でフォーマットされた外付け HDD だと「シンボリックリンクを作れない」…

btrfs で複数のデバイスを使うときにやったことメモ

1TB の HDD のおさがりをもらったのでさっそく Linux PC に搭載して、前から気になっていた btrfs でフォーマットして使ってみました。この記事に書く予定のシナリオとしては、1. ディスク単体で btrfs フォーマットしてマウントして使用開始 2. ディスクを…

Ruby で特定のパターンが出現するまで簡単にファイルを読み飛ばす方法

テキストファイルの処理をしてると、たまに表題のようなことをやりたくなりますね。ヘッダーの1行だけ読み飛ばすとか固定行数読み飛ばすだけならその行数の分だけ gets() を呼べばいいのですが、何行目に現れるかわからない特定のパターンまで読み飛ばすとい…

ssh サーバに公開鍵をワンライナーで登録する方法

2014.05.09 追記 $ ssh-copy-id user@hostname でいいかも。 (公開鍵ファイルを指定したい場合は -i オプションを使用する) $ ssh user@hostname "echo `cat ~/.ssh/id_rsa.pub` >> ~/.ssh/authorized_keys" 以上。 たまにやりたくなるんだけどいつも忘れ…

Java とか Android (DEX) の MUTF-8 (Modified UTF-8) って何者よ?っていう話

Android の APK の DEX をゴニョゴニョしてたら、DEX の string 領域に格納されている文字列は実は UTF-8 じゃなくてちょっと modify された MUTF-8 (Modified UTF-8) だということが判明して軽くショックを受けています。Wikipedia の UTF-8 の項によります…

HTML5/JavaScript/CSS3 でクロスプラットフォームなデスクトップ GUI アプリを作れるフレームワークの決定版を見つけた(かもしれない)件

[追記 2015/05/19] 2015年時点では HTML5/JavaScript/CSS でデスクトップ GUI アプリを作るなら、Electron 一択でしょうね。Electronelectron.atom.io[追記ここまで]私はデスクトップアプリケーション開発歴はすでに20年近い老人ですが、数年前から「HTML5 …

chef で remote_directory リソースで一気にファイルをコピーしようとしたら空ディレクトリがコピーされなくて困った件(解決策もあるよ)

仕事では vagrant + chef を使って Hermetic なテスト環境を誰でも簡単に作れるようにしようという取り組みをしています。モバイルアプリからアクセスするバックエンドのサーバは、現時点では本番環境かテスト環境かというくらいしかないのですが、これを va…

シェルスクリプトの中でコマンドが存在するかどうかを確かめる方法

stackoverflow に答えとともに良い説明があった。 http://stackoverflow.com/a/677212/2122085#!/bin/sh なスクリプトの場合(bash ではなく sh を使っている場合)は \command -v foo >/dev/null 2>&1 || { echo >&2 "'foo' is required. Aborting."; exit …