MongoDBで検索したドキュメントのフィールドを別のフィールドで更新する方法
MongoDBにおいて検索したドキュメントのフィールド値を、そのドキュメントの別のフィールドで置き換えたい場合、少し工夫が必要になります。 例えば、usersコレクションのあるドキュメントの"id"フィールドを"_id"の値で置き換えたい場合、以下のようにします。
// _idをidにコピー db.users.find({}).forEach( function(e){ e.id = e._id; db.users.update({_id:e.id}, e); });
JavaScriptで検索したドキュメント群に対してforEachで処理していきます。 少し面倒ですが、MongoDBはJavaScriptを実行できるので問題なく置き換え可能です。 もっとスマートなやり方がありそうですが、stackoverflowで検索してもこの方法しか出てこなかったので諦めました。他のやり方がありましたら是非教えていただきたいです。
研究室にSlack導入したお話
研究室に今流行りのSlackを導入してみましたのでログ残します。
導入に至るまでの経緯
私の研究室では、これまでメールで連絡を取り合っていました。 しかし、すべての情報をメーリングリストに流していた為、重要な情報と不必要な情報が混在しており、重要な情報が埋もれてしまっていました。 例えば、ミーティングの欠席連絡とミーティングの議事録が同じタイミングで流れるといった状況でした。
もう一つの問題として、データの受け渡しの際に利用するツールを統一していなかったため、 まずどのツールを使うのかを決めないといけないという手間がありました。 ファイルサーバを経由するのか、Skypeで送るのか、はたまた、TwitterのDMでLINEでメールで... この非常に面倒なプロセスを経て、ようやくデータを送信が可能になるといったことが常態化していました。
上記のような問題を改善するために、コミュニケーションツールの導入を私が、提案しました。年度の代わり時期ということもあり、特に反対意見もなく、まあ使ってみようかってことになりました。
Slackとは
Slackは社内やサークルなどのチーム向けコミュニケーションサービスです。
美しいUIを持ち、Skype, HipChat, Yammerなど他のサービスより使いやすいと評判になっています。
多くの企業で導入され、ユーザー数も順調に増加しているようです。
なぜSlackか
他のツールとの比較をして選択した訳ではありませんが、以下のような特徴からSlackに決定しました。まず、UIの美しさです。新しいサービスを利用するならかっこいい方がいいよねってことで、綺麗なUIを持つものにしようと考えていました。Slackは日本語化されていないことを除けば非常に美麗で理解しやすいUIを持っています。また、Slackは外部サービスとの連携も魅力的でした。 GithubやHubot等と簡単に連携できることが大きかったです。最後に、すでに流行ってる点です。 多くの企業で利用されているので日本語ドキュメントも豊富ですし、何より流行ってるツールなので今後も拡張されていく可能性があります。以上のような理由からSlackを選択しました。
使い方
書かなくてもわかるぐらいシンプル。
細かい機能については、他の方のドキュメントを御参照下さい。
メリット
書きやすい
私たちのような世代は、メールの習慣がなくなりつつあります。 メールを利用したことがなくLINEかTwitterで連絡を取り合うことが常識になっている人が今後配属される可能性もあります。 そのため、メールの利用にハードルを感じ、研究室内のコミュニケーションがとどこおるかもしれません。 Slackはスマホからでも手軽にTwitterやLINEのような感覚で投稿できるので、コミュニケーションの活性化が期待できます。誰かが研究室に来なくなったときも生存確認しやすいですし、雑談の延長から研究の議論に発展する可能性もありそうです。
botと遊べる!
私の研究室のアイドルはmikuさんなのでbotもmikuさんにしました。
これはHubotと連携してできる機能なのですが、mikuさんに時間やロボット三原則を教えてもらえます。
男ばっかりの研究室にアイドルが降臨しました。研究が捗るね!
家電と連携
私の研究室では、家電の操作に関する研究を行っていますので、Hubotと連携させてmikuさんに家電を動かしてもらえるようにしました。
詳細は別のエントリで書こうと思います(未定)。
まとめ
まだ導入して2日目なので、今後は、どのように運用していくかをミーティングで決めていくことになりそうです。 また、導入しただけですのでチーム内での利用の促進を図ろうと思います。 飲み会の通知をSlackで徹底すれば利用してもらえるのかな? 研究室ならではの運用方法の知見があればぜひ教えていただきたいです。 チャネルの切り方とか、研究室にあった面白い使い方を探していく予定です。
herokuでつまづいた
git push heroku masterするときにcommitしてないと反映されませんよ!
それだけです。git pushだから当たり前なのだけどこれに気づくのに結構時間がかかったので...
viエラー「E437: terminal capability "cm" required」
対処法
.bashrcに下記を追加
export TERM=vt100
参考
windowsからubuntuマシンにRDP
環境
- Ubuntu14.04
XRDP
xrdp はオープンソースで開発されている Remote Desktop Protocol のサーバソフトウェア
MicrosoftのリモートデスクトップクライアントでLinux接続できるLinuxターミナルサーバを提供する
インストール
$ sudo apt-get install xrdp
参考
LXDE
LXDE (Lightweight X11 Desktop Environment) はUNIXおよびLinuxやBSDのようなPOSIXプラットフォーム上で動作する、GPL下で配布されるオープンソースのデスクトップ環境
UbuntuのUnityデスクトップ環境はxrdpでサポートされていないみたいなのでこちらを利用する
インストール
$ sudo apt-get install lxde $ echo lxsession -s LXDE -e LXDE > ~/.xsession $ sudo service xrdp restart
参考
キー配列変更
このままではキー配列が英語配列になっているので日本語キーボードの場合使えないので変更する
$ cd /etc/xrdp $ (cd /tmp; wget http://w.vmeta.jp/temp/km-0411.ini) $ sudo cp /tmp/km-0411.ini . $ sudo ln -s km-0411.ini km-e0200411.ini $ sudo ln -s km-0411.ini km-e0010411.ini $ sudo /etc/init.d/xrdp restart
日本語入力になっていてコマンドが打てない場合はGUIから入力を半角英数字にする
参考
ディレクトリ名を英語にする
日本語Ubuntuのディレクトリ名がデフォルトでは「デスクトップ」などの日本語になっている
これを英語に戻す
$ LANG=C xdg-user-dirs-gtk-update