Subscribed unsubscribe Subscribe Subscribe

Search Result: とき

TensorFlowで顔識別モデルに最適化した入力画像を生成する

…力に変数を使っているときにReluがあると傾きを計算できないの…?TensorFlowのバグなんだろうか、、 tf.image.per_image_whiteningがやっているのは画像の各画素値から平均値とか分散とか求めて引いたり割ったりしているだけなので、そのあたりのソースを参考にtf.nn.reluを使っているところだけ除外して # image = tf.image.per_image_whitening(image) mean, variance = tf.nn.mo…

EC2 Spot Instanceの価格変動をターミナルでモニタリングする

…per Hour のときがあり、最大7〜8割お得になる計算。 ただこのスポット価格は刻一刻と変化しており、いつどのAvailability Zoneがどんな価格に変化するか分からないし、予測できない(これをDeep Learningで予測する、とかも課題としては面白いかもしれないw けどどんな要素が絡んでいるかもよく分からないしなぁ…)。 スポット価格が自分の入札価格を上回ってしまうとその時点でインスタンスは強制中断されてしまうので 中断されるのがイヤな場合はできるだけ高額の…

TensorFlowによるDeep Learningでのアイドル顔識別モデルの性能評価と実験

…を高めたい、となったときにまた改善方法を検討したい。 実験 現状のモデルがこれくらいの精度だということが分かったので、ここで入力やモデルを色々と変えて正答率がどう変化するか、などを試してみる。 上述のCross Validationでデータセットの偏りは無い、と判断したので(資源の都合もあり)ここから先はCase #0のみで試した。 1. パラメータを減らす 以前の記事で作った分類モデルは、その後ちょっとパラメータ数を変えて 96 * 96 * 3 → 48 * 48 * 3…

はてなダイアリーからはてなブログに移行した

移行すると彼女できて結婚できて腰痛もコミュ障も治って年収が2桁増えて人生なんでも上手くいくようになる、ときいて。 @sugyan はてブロに移行したら彼女できて結婚できたって話をよく聞くけどな— 福利厚生 (@ryopeko) June 8, 2016

TensorFlowによるDCGANでアイドルの顔画像生成

…必要がある。こういうときはtf.variable_scopeでreuse=Trueを指定すると2回目以降で同じ変数が重複定義されないようになるらしい。いちおう、初回の呼び出しか否かを使う側が意識する必要がないようPython3のnonlocalを使ってクロージャ的な感じで書いてみた。ということでこんなコード。 def __discriminator(self, depth1=64, depth2=128, depth3=256, depth4=512): reuse = Fa…

TensorFlowでのDeep Learningによるアイドルの顔識別 のためのデータ作成

…ータセットを作成したときと同様で、管理用のWebアプリを自作している。 https://github.com/sugyan/face-collector 以前はこれをHerokuで運用していたのだけど、今回はあっという間に顔画像が10000件を超えて 無料枠で利用できる範囲をオーバーしてしまったので、以前から持っていたのにほぼ使っていなかったさくらVPSのサーバに移行した。 https://idol-face.sugyan.com/ ひたすら目視でラベル付け こんな感じで、様…

続・TensorFlowでのDeep Learningによるアイドルの顔識別

…を作成できる。 使うときはtf.TFRecordReaderでTFRecord fileを読んでFeatureを取り出せばあとはJPEGのバイナリデータからtf.image.decode_jpegで画像に復元できる。 (tf.parse_single_exampleあたりはtensorflow-0.6.0と最新コードでは引数などインタフェースが異なるので注意。最新masterのドキュメント読みながらコード書いてたら動かなくてハマった) Distortion 読み込んでdeco…

TensorFlowによるディープラーニングで、アイドルの顔を識別する

… すぎゃーんメモ のときと同様に、学習済みのデータを使って画像を受け取り判定結果を返すJSON APIを用意し、それを使って判定結果を描画する。 任意の画像をDrag and Dropで受け取るので、まずはそこから判定するための顔領域だけを切り出す必要があり、自作の顔検出器では遅すぎるので ここではLIMITED PREVIEW版の Cloud Vision API を使ってみている。 色んな画像を上げて試してみてください。https://momoclo-face-recog…

AOJはじめました

…うイベントに参加したときにオンラインジャッジに関する解説などがあり 実際に数問やってみる、ということでユーザ登録して挑戦してみたので、その後も継続して挑戦してみることにした。 べつに競技プログラミングで強くなりたい、とかではなく 主に「思考力・実装力を鍛える」という目的で、特に早解きやコードゴルフ的なことは意識しないことにした。 方針としては まずはC++で頑張って自力で解く。 グローバル変数はできるだけ使わず、関数の入出力で回答を生成できるように。 どうにも上手くいかないと…

Heroku + OpenCVで簡易顔検出API

…た」と見なして、そのときの顔の中心、目の中心の座標を取り 回転行列の逆変換をかけてやれば、元画像における顔や目の中心座標が取得できる。複数の回転角度で取得されて重複している場合は 検出した両目がより水平に近い(つまりatan2(y, x)が最も0に近い)ものを選択する、などするとより良い結果を得られるかな、ということでそうしてみた。のが今のコード。 https://github.com/sugyan/face-detector/blob/cc22fd576416f79f291…

Docker Image of Python with OpenCV 3.0 for Heroku

…もreleaseするときにslugに含まれないらしい)、あと実際のheroku環境には入っていないライブラリなどもありOFFにしないとダメなようだったり、で 幾つかcmakeのビルドオプションを弄った。 -cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INST…

自動mention系Twitter botを復活させる

Go

…llowersが多いときに使えるのがGET followers/idsとGET users/lookup。followers/idsではfollowersの「IDだけ」を1回で最大5,000件取得できる。ので数万followersいても数回のリクエストですべて取得できる。そしてusers/lookupにはそのIDをカンマ連結したパラメータでリクエストすることで最大100件のuser情報を得ることができる。 ということで、これらを使えば「全followersのIDを取得し、それ…

#isucon 2015で優勝しました

…加しました。第1回のときの出場メンバー(@fujiwaraさん、@songmuさん)での「fujiwara組」。 #isucon 2015予選に参加した - すぎゃーんメモ ISUCON5 本選リアルタイムフォトレポート【更新終了】 : ISUCON公式Blog 結果はなんと、昨年に引き続き優勝!! ISUCON5 本選結果 : ISUCON公式Blog 自分はアプリケーション側の担当ということで コード書いていこうと思っていましたが、今回あまり出来ることが無く、並行で作業も…

#isucon 2015予選に参加した

…ところに 第1回 のときのメンバー(@fujiwaraさん、@songmuさん)で再結成しよう、という話が上がったので有り難く乗っからせていただきました。fujiwara on Twitter: "初代fujiwara組を再結成しよう"予選は第1日目で参戦し、結果は1位通過!やったー!ISUCON5 本選出場者決定のお知らせ : ISUCON公式Blog 忘れないうちに、何をやったか振り返っておこうと思います。 〜前日 以前一緒に働いていたとは言え、4年近く経過しているので一…

ctagsでjsx(ES6 class)の定義にジャンプできるようにする

…rlやRubyを書くときはctags -eでTAGSを作っておいて、Emacs内ではM-x heml-etags-select(helm-command-prefix-key + e にbindされている)を使ってメソッド定義に飛んでいるのだけど、そういえばJSX用にそれが使えてない、というのに気付いた。適当にググったら https://github.com/jsx/jsx.vim/blob/master/ctags/jsx.conf っていうのが見つかって、まぁこれは違うJ…

Java Day Tokyo 2015に行ってきた

…いただいたので困ったときに参照しようと思う。 Java 8 Date and Time API の実践的なチートシートできたよ~ - tokuhirom's blog Date and Time APIが面倒に思える方への処方箋 - Programming Studio アプリケーションサーバの運用とかチューニングの話はまぁしっかりログ取得して可視化したりしましょうねっていう聞いたことのあるような話もあったりしつつ、jstatやらJMCやらJVMのモニタリングツールについては…

#perlcasual に参加してLTしてきた

…げに5年前の第1回のときから参加しているし縁のあるイベント。@yusukebe氏に感謝! 8月のYAPC::Asiaでは何も話せなかったけど、自分の開発環境についてアウトプットすることが全然なかったなーと思って、せっかくLTの機会をいただいたので自分のEmacs環境について話してきた。 EmacsでPerl - PerlCasual #06 たいして需要は無かったかもしれないけど とりあえずreveal.jsを使ってプレゼンを作ってみたいと思っていたのが実現したのと、デモ用の…

projectileをcache有効にして高速化

…カスタム変数があって、これをtrueにすれば~/.emacs.d/projectile.cacheというファイルにキャッシュを作成しそれを使ってファイル一覧を得るようになるらしい。 ただそのキャッシュファイルの更新はprojectile-modeに関連するhookで行っているようなので、globalでprojectile-modeをtrueにしておくべき、っぽい。 こうしておくと、新たにファイルを追加したり削除したりしたときも自動的にキャッシュを更新してくれるのが確認できた。

ターミナル操作の記録(ttyrec)からGIFアニメを生成するツールを作った

Go

…定してキャプチャしたときに非RetinaもRetinaなdpiが入ってしまうバグぽい動作があったりします。URL2014-07-14 14:46:38 via TweetDeck to @sugyan Linux というかX Window Systemでは、xwdというコマンドで指定したWINDOWIDの画面をダンプできる、ということなのでそれを使うことにした。 ただこれはxwdフォーマットという独自のビットマップ形式で保存されるので、それを読み取って画像データとして得るため…

pipeline and cancellation並行性パターンの勉強

Go

…unate1が起きたときにはcがcloseすることもなく走ってる処理が続くし、errUnfortunate2のときにも走ってるもの待ってからcloseすることになってしまったり、まだ正しく中断できているとは言えない。 並行化して走っている処理たちに中断されたことを知らせるために、もう一つchannelを用意してそれを使って判定するようにする。 func getDataChannel(done <-chan struct{}) (<-chan result, <-chan er…

はじめて、の次のGo

Go

…クロスコンパイルするときの障壁になるようなので避けることにした。 https://github.com/peco/peco/issues/102 https://code.google.com/p/go/issues/detail?id=6376 Stream API 普通にOAuth認証でのリクエストまでは問題ないとして、Stream APIに接続したときのレスポンスを継続して受け続けるために。 https://github.com/garyburd/twitterstre…

percolを使ってターミナル操作を早く、便利に。

…window数が多いときにpercolならインクリメンタルに絞り込みができるのと、tmux split-windowを使うことで現在のwindowが隠れることなく選択操作ができるようになるのが利点だと思う。 ちなみに、tmux list-windowsで表示される情報はwindow nameやpane情報だったりするのだけど、percolで絞り込むときなどは特に「そのwindowはどのディレクトリで作業しているものか」などもあった方が嬉しいので、 tmux list-wind…

Google Doodleのルービックキューブを解くChrome拡張を作った

…using a Content script - Stack Overflow これを使ってcubeの状態が変更されるごとにそれを適当なDOM要素に埋め込み、解を計算する処理を行いたいときにはそのDOM要素から値を読み込む、という方法でデータを受け渡しするようにしてみた。その他のイベント処理なんかはwindow.postMessageとか使って適当にやりとりしつつ。 いやーしかしこんなの考えたエルノー・ルービック先生すごいし 様々な解法やアルゴリズム考え出したヒトたちすごい。

tmux上のweechatのhotlist情報を通知する

…る程度発言が溜まったときにチェックするようにしたい。 tmux上の画面の表示内容は外部から取得できる、ということでweechatのstatus lineからhotlist(未読メッセージのあるchannel情報などが表示される領域)を抜き出して通知する、というのをやってみた。まずはこんな簡単なスクリプトを用意。 #!/bin/sh weechat_window=$(tmux list-windows | grep weechat | perl -ne 'print+(spli…

helm-perldocを使ってインストール済みモジュールのドキュメントを参照する(carton対応も)

…い。そこで、そういうときのためにhelm-perldoc:perl5libという変数が用意されていて、これを指定してからhelm-perldoc:setupを呼ぶことで そのpath以下のモジュールたちも取得し、ドキュメントを引けるようになる。 helm-perldoc:modulesをnilにするかprefix-argを指定してやればhelm-perldoc:setupは再びモジュール一覧を取得しなおしてくれる。 (setq helm-perldoc:perl5lib "~…

diff-highlightでマルチバイト文字の差分が化けてしまう

Git

…分がハイライトされるときに化けてしまって困っています。 どうすればいいんだろう…。 追記 とりあえず手元では diff --git a/diff-highlight b/diff-highlight index c4404d4..e959903 100755 --- a/diff-highlight +++ b/diff-highlight @@ -2,6 +2,7 @@ use warnings FATAL => 'all'; use strict; +use Encode…

Time::Pieceでadd_monthsするときは月末の扱いに気をつける

…々の日付が月末だったときに加減算後にも合わせて月末にするか否か、の挙動らしい。例えば翌月の方が長い場合。 $ perl -MDateTime -E 'say DateTime->new(year => 2014, month => 2, day => 28)->add(months => 1, end_of_month => "limit")->ymd' 2014-03-28 $ perl -MDateTime -E 'say DateTime->new(year => 20…

#isucon 2013で優勝しました

…2回目だ。→第1回のとき タイムライン 予選のとき同様に、自分の手元にある記録と記憶を辿ってどんな雰囲気だったか書き残してみます。間違っていたらゴメンナサイ。 使用言語はPerlです。 〜10:00 出社…じゃなくて会場入り。ちゃんと前日に早寝したので寝坊せずに済みました。 〜11:00 開会待ち。早くきすぎた、でも他の参加者さんたちも早くからしっかり集まってる。 ルール説明。ストーリー仕立てで緊張感が走る。画像系サービスか〜。 11:00〜 開始。用意されたのは5台、初期実…

アメブロ「いいね!」機能を使うためのChrome拡張を作ってみた

…"ドメイン)を開いたときに記事タイトルとなる要素を見つけ、対応する「いいね!」ボタンページのiframeを差し込むようにする。 $('h3.title a, a.skinArticleTitle').each(function (i, a) { var url = $(a).attr('href'); var m = url.match('/([^/]+?)/entry-([0-9]+)\.html'); if (m) { $(a).after( $('<iframe>').…

Carton環境でのflymakeとperl-completion

…ールを検索したりするときにPATHが通らなくて見つからない。 plcmp-cmd-set-additional-lib-directoryコマンドを呼んで一度PERL5LIBに追加してしまえば届くようになるけど、これはplcmp--PERL5LIB-directories(perl-completionの中でPERL5LIBに設定して使うもの)がどんどん追加されていってしまうので何だか気持ち悪い。 Flymake時にPERL5LIBを通すシンプルな方法 - すぎゃーんメモ p…

Slateを入れてみた

…たくさん起動しているときに選択するために連打するのが面倒だし頻繁に使うものは一発で切り替わるようにしたい、というのがあって、 今までずっとそれをQuicksilverのHotKey機能を利用して ⌘+Ctrl+Q でiTerm2 ⌘+Ctrl+W でEmacs ⌘+Ctrl+E でChrome みたいに左手の操作だけで切り替えられるようにしていた。ところで最近「Slateというのが面白い」という話を某所で聞いたので試しに入れてみた。 GitHub - jigish/slate…

アイドル現場情報をGoogleカレンダーから集約するWebアプリを作った

…張や旅行などで訪れたときにだけチェックできればいいのに、わざわざ登録するのもアレだったり。 で、作った http://idol-calendar.herokuapp.com/ 上記記事にまとめられている各カレンダーから直近のイベントを拾い集めて、時系列に表示する。地域ごとに関連していそうなものだけに絞ったり、検索ワードや情報源を指定して絞り込んだり。これを見れば、ビックリするくらいたくさんのライブやイベントが各所で行われているのが分かると思う。 中身 GoogleのAPIから…

SQL::Translator::DiffでDBスキーマに追従させる方法

…けど、より細かいところまで差分だしたり、MySQL以外のDBで同じようにやりたいときはSQL::Translator::Diffが使えそうな気がする。 注意 この方法はSQL::Translatorのparserやproducerがどの程度使用しているDB(MySQLならMySQL)の文法をサポートしているか、どの程度信用するか、になるので 頼りきっていると罠にハマる可能性もある。 正しくSQLが生成されているか、正しい差分抽出ができているか、は常に気をつけて使う必要はある。

perlbrewを利用したプロジェクトごとのPerl環境管理

…サーバにデプロイするときも1箇所で環境作ってディレクトリ丸ごとrsyncで済むし というわけでプロジェクト専用のPerlをperlbrewでインストールして使おう ビルドに時間かかったりもするけどまぁ最初の一回だけだし我慢 手順 既にperlbrew自体は標準の方法でインストールしておいていて使えてる、という前提で $ cd <PROJECT_ROOT> $ export PERLBREW_ROOT=${PWD}/perl5 $ perlbrew init $ source …

#isucon2 のお手伝いをしました

…2012 にて飲んだときにtagomorisさんに「入社したら次のISUCON手伝いますんで」なんて酔っ払いながら言っていたような気がするけど、おかげで準備スタートのときに声をかけていただいて、微力ながら手伝わせていただくことができました。 初期アプリ まずは何となくの「チケット販売サイト」というお題の方針が決まり、昨年のお題 を参考に叩き台アプリを作らせていただきました。 このへんのネーミングは自分ですね。DISられなくて良かったです。 https://github.com…

以前作ったSinatraアプリをPadrinoで書き直した

…ントローラを追加するときは $ padrino gen model fuga $ padrino gen controller piyoとかで作ると自動でテストやヘルパーやmigration用スクリプトなども追加してくれるっぽい。便利。 Padrino app on Heroku Herokuで動かすために諸々設定。 Procfileには web: bundle exec padrino start -a thin -p $PORTとか記述しておく(Gemfileにthin追…

数十行の簡単なスクリプトでWebコンテンツの更新を検知し通知する

…、「前回チェックしたときと比較して差異があるか否か」を調べる必要がある。 「一定間隔で内容をチェック」すること自体は、cronなどを使えば簡単にできる(ここではWWW::Mechanizeでログイン、Web::ScraperでコンテンツHTMLの解析を行う)。 けど、「前回チェックしたときと比較して差異があるか否か」を調べるためには、前回チェックしたときの結果を何らかの形で残しておく必要がある。ファイルに書き出すだとか、DBに保存するだとかの形で。 そうするのは面倒なので、そ…

Test::Flattenでsubtestの初っ端で死ぬときのエラーが出力されない (追記あり)

@xaicronさんのTest::Flattenを使ってみている。 use Test::More; use Test::Flatten; subtest 'hoge' => sub { ok 1, 'fuga'; piyo(); }; done_testing; という、subtest内で死んでしまうようなテストの場合、proveを実行すると $ prove -v t/01_hoge.t .. # ---------------------------------------…

face.comのdetect APIを使ったら目からビームが捗った話

…き、逆にそれが大きいとき、すなわち上下向きや左右向きに偏っている場合は開きを少なく。現状での描画部分のコードは以下のようなかんじ。 def draw_beam (img, tags) tags.reverse.each do |tag| return unless tag['eye_left'] && tag['eye_right'] logger.info tag d = Magick::Draw.new reye = [tag['eye_right']['x'] * im…

ももクロのメンバーブログが更新される曜日/時間帯を可視化してみた

…濃く変えていくだけ。せっかくTwitter Bootstrapを使っているのでPopoverは付けてみた。数値のところにマウスを持っていくと該当時間帯に更新された日付とタイトルを表示する。 実際には最終的に更新処理を行うのは彼女たちのマネージャーであり、よく寝過ごして本来更新すべき日時よりはるかに遅れて更新されたり ひどいときには別のメンバーのブログに投稿されるなどお茶目な事件が起きたりもするので、この可視化されたデータから何か有意な情報を得られるかというと、多分なにも無い。

JavaScriptで、もう連想配列の最後のカンマに悩んでないので

…通にやります。そんなときに"dummy"なんてキーが入ってたら邪魔でしょうがないです。 メモリ領域の無駄、はたいして気にならないでしょうけど、とにかくこんなのが入っていると邪魔になります。 書く側の都合でロジックを汚すのは問題外 プログラム書く側はこの方法を死守することで余計なバグを産まずに済むかもしれませんが、予備知識なくそれを引き継いだり読んで勉強しようとしているヒトがそのソースコードを読んでどう思うでしょうか。 「ん…? dummy? 何だろうコレ。どこかで特殊な使い方…

Template Toolkitでwantarrayなものを使おうとしてハマった件

…り要素数が1つだけのときのwantarrayに対する挙動で問題があったらしい。 http://mail.template-toolkit.org/pipermail/templates/2008-June/010233.html wantarrayは避けて常にリファレンスを受け取るようにしましょう、というような。 コード側を変えられない場合、Template-Toolkit 2.20以降であればScalar Pluginがあるのでそれを使うことで明示的にscalar cont…

自分のホームディレクトリ下の構成

…たり動かしたりしたいときはここ以下にcloneしてもってくる。その下でさらに言語別に分けたり作った人で分けたり。"svn"とか他のscmのものも必要に応じて作るけど最近はあんまり需要ない /home/*/dev/temp/ いつ消えても良いようなどうでも良い一時的なプロジェクトやスクリプト置き場。気が向いたときに適当に消す。 /home/*/service/ daemontoolsに登録するサービスは一度ここに作って/serviceからsymbolic linkを貼るようにし…

WebService::Simple::Parser::JSONがUTF-8エンコードされたJSONで文字化けてハマった

…値を表示しようとしたとき。 #!/usr/bin/env perl use strict; use warnings; use Amon2::Lite; use WebService::Simple; get '/' => sub { my ($c) = @_; my $ws = WebService::Simple->new( base_url => 'http://****.****/****.json', response_parser => 'JSON', ); my…

DayOne.appを使いこなすために作ったもの、やっていること

…ウが現れるので、そのときに「今何してる」「どんなこと考えてる」などを書く。 特に書くことがなければ無視しても構わない。30分毎でも出てくるたびにとりあえず今やっていることを書いていくと「何かやってる感」は出てくる。 Linuxのサーバと同期する DayOne.appはMac用アプリだけど、文書は分かりやすい形でファイル保存されているので、Dropboxで同期させておけばLinux環境からも扱える。 Install Dropbox on your Linux box さくらVP…

カレントディレクトリがGitリポジトリ下か否か判定する

Git

…y()関数が呼ばれたときに内部でこの判定を行い、正しい.gitディレクトリが見つからなかったときにエラーを吐いて死ぬようになっているようだ。builtin command群ではRUN_SETUPフラグがオプションに定義されているとコマンド本体に処理が渡る前にそれが呼ばれる。 git/git.c at v1.7.9.4 · gitster/git · GitHub ので、commandsで定義されているbuiltin commandたちのうちRUN_SETUPが含まれているもの…

Crypt::SSLeayがLANGの関係でインストールできないとき

…->newが失敗したときのエラーメッセージが日本語で出てきてしまっているかららしい。テスト内部では英語のエラーメッセージが期待されているためコケてしまうようだ。 http://smokycat.info/perl/240 Hinemos 研究日記 » Blog Archive » 【Perl】Crypt::SSLeayをインストールする際に気を付けること ということで $ LANG=C cpanm -v Crypt::SSLeayとすればインストールできるようになるらしい。 …

特定のキーワードをim.kayac.comに通知するZNCモジュール書いた

…自分の名前が呼ばれたときとかにiPhoneに通知してくれるようなやつ、いわゆるhilight2im的なもの。を、ZNCのモジュールとして作った。IRC Bouncer上で動かしておけば、weechatなどのクライアントからの接続が無い状態でも通知してくれるので便利。 リポジトリ https://github.com/sugyan/ZNC-NotifyImkayac 使い方 NotifyImkayac.pmを~/.znc/modules/以下に配置。clientからzncにコマ…

tiarra+stoneを卒業してZNCを使い始めた

IRC

…も繋ぎたい、みたいなとき。それぞれ別ユーザを作る必要がある。別名のユーザを作り、それぞれの接続先で別サーバを指定しておけば良い。IRCクライアント側で各ユーザとして接続する。 weechatの場合、同一host & 同一port でもserverをそれぞれ別名で登録しておくことで区別できるので、 /server add freenode 127.0.0.1/16667 -password=<username1>:<password1> /server add perl 127…

gitoliteでプライベートリポジトリ作成

Git

…を持ってないし何かのときのために設定しておくか、と思ってさくらVPSのサーバにgitoliteを入れてみた。 Hosting Git Repositories 以下、手順メモ。 gitoliteのインストール yumでサクっと。 sugyan@remote $ sudo yum install gitolite gitユーザを作成 専用ユーザを作ってそいつの$HOME以下でリポジトリ管理するようにした方がなにかとラクなので sugyan@remote $ sudo usera…