2015年7月28日火曜日

node.jsからどうしてもFTPアクティブ接続がしたい貴方に

 私もそんな少数派の一人であります。
 なぜなら接続先がパッシブ接続を受け付けてくれないからであります(ちゃんと構成してくれよ…)。

 そもそもnode.jsとか以前に、アクティブ接続をするからには、FTPサーバからのデータコネクションを受け入れるポートが開いてないといけません。
 ポート決め打ちせずFTP接続モジュールだけ特別扱いする方法もあるのですが、安易にiptablesの、SSHとかHTTPを許可してる行に寄り添う場所に
# accept FTP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8686    -j ACCEPT
を追加いたしました。こんなんでマジいいのか?

※実際追加したポート番号は8686ではなくいちおう内緒ですので8686をアタックしてこないようお願いいたします。



 さてnode.jsにはアクティブ接続をしてくれるFTPクライアントがありません。jsftpもftpも残念ながらパッシブ接続しかできないのです。

 そこでlftpをchild_process.execから利用ということになります。command引数は、たとえばls情報がほしい場合は

'lftp -e "set ftp:ssl-allow off;set ftp:passive-mode off;set ftp:auto-passive-mode no;set ftp:port-range 8686-8686;recls -1B nanika/path;exit;" -u oresama,oresamapass 123.456.789.012'

という感じになります。
 こうするとexecのコールバックのstdout引数にファイル・ディレクトリ一覧が改行区切りで入ってきます。
 パッシブとかSSLに絶対ならないようこれでもかと設定しています。これらのうちどれかの設定は省けるかもしれませんが面倒なので試していません。
 FTPクライアントからFTPサーバに通知するデータコネクション受け入れポートをつねに、さっきiptablesで穴開けた8686番一択に固定しています。こんなことしてFTP標準的には許されるんでしょうか、よく知りません。

 まぁ動いているのでとりあえずいいかとしておきますが、そんなんヤベーよというお教えお待ちしております。

※ちなみにreclsの-Dはなぜか動作しませんでした(--長い名前のほうも)。


2015年7月24日金曜日

ハッキングのリスクを減らしたいなら、これらのアカウント名は作るな!

 毎日、ウチのVPSサーバへいらした悪いひとが、ウチをハッキングするために、ウチに存在するかどうかいろんなUNIXアカウントを試しています。

 その様子はログに残ります。

 ご参考までに、昨日1日のうちに試されたアカウントの一覧は、以下のとおりです:


webmaster

baseball

backup

backuppc

badmin

bank

billing

biblioteca

blink

blog

bo

boffice

book

box

business

buster

cache

captured

captures

ceo

checkin

checkout

chief

clamav

clerk

client

communication

com

couple

couples

comercial

company

contact

computer

contactus

controller

corp

customer

cv

cvsuser

curl

databank

debug

default

desk

device

dialer

dir

direction

director

dns

doctor

admin

admin01

accounts

administrator

communications

display

postmaster

support

service

spam

contakt

sales

exit

education

fax

formation

general

sample

sales01

sales1

score

scores

scan

scanner

school

send

setting

settings

hr

info

intern

inventory

monitor

newsletter

office

reception

user01

user1

webadmin

test01

direction

client

test

administration

record

vscan

transfer

tomcat

backoffice

backupexec

bkupexec

canon

admin123

admin12345

admin1

administrate

kontakt

advanced

account

accounting

accouting

user

user2

agent

video

sekretariat

secretaria

webmaster

baseball

backup

backuppc

badmin

bank

billing


 たまに、なんでこんなアカウント名がありがちと思われてるんだろう、というアカウント名もありますが、きっと、私などには計り知れない理由により、ありがちなのでしょう。

 「baseball」とか意味わかりませんが、野球好きのユーザーがこういうアカウントにしやすいということなのでしょうか。

 いずれにせよ、ハッキングされるリスクを少しでも減らすためには、できれば、これらのアカウント名は避けておくのが賢明な気がします。

2015年7月21日火曜日

Drupalで新記事登録とか何か起きたらSlackへ自動通知

 Rules HTTP ClientというDrupalモジュールがありますので、これをオレオレDrupal環境にインストールすればいいのですが(7.x-1.0-beta1)、設定に癖があり、ややハマったのち成功したので備忘録。

 いろいろなルートがありえるわけですが、今回はとりあえずマイクテストてすてすって感じで、最もベーシックな方法といえるSlack本体のIncoming WebHooksを使うことにしまして、まず、投稿先チャンネル/ダイレクトメッセージ先/プライベートグループのWebhook URL(https://hooks.slack.com/services/ ではじまる)を取得しておきます。

 しかるのち、

  1. DrupalRulesで新しいルールを追加。
  2. 何かイベントを登録します。(例)新しいコンテンツを保存後 of タイプ お仕事
  3. それに対するアクションを登録し、種類を「Request HTTP data」(Rules HTTP Clientをインストールしたことによってこの選択肢が増えています)とします。
  4. このアクションの設定画面に以下のように記入します:
  • URL->Value: Slackから取得したWebhook URL
  • HEADERS->Value: Content-Type:application/x-www-form-urlencoded ※ここ重要ッス。自明のように思えますが、これを指定してやらないと、エラーが出て、アクションが引き起こされません。
  • METHOD->Value: POST
  • DATA->Value: payload=Slackへ送りたいJSON (例)payload={"text": "お仕事が登録されました: [node:url]"} ※Content-Type:application/jsonとしてここのpayload=を省いて生JSONにしてみましたが動作しませんでした。

とすれば動作します。

 上の例ではプレーンテキストを投稿しているだけですが、もっとリッチなテキストにする方法や、Slackのアバターや投稿先オーバライドなどの指定方法も、Incoming WebHooksの設定画面で具体的に記されていますので、必要に応じてJSON内で指定すればOKです。

2015年7月19日日曜日

「南旺理工(nanoRico)」の和字表記由来と英字表記由来をサイドバーにがんばって記したよー!

以下の内容をサイドバーにも記しました。
(地名表記「南旺」の由来の部分はこれまでもちょこっと書いてありましたが)

[和字表記由来]
 「南旺」(なんおう)はプノンペンの昔の漢字表記です。昭和の日本でもプノンペンは「南旺府」と呼ばれていました。プノンペンの音とプノンペンの南国の太陽のイメージをともにビビッドに表せている表記だと思っており(現代日本語読みだと音は程遠いですが…)、現在の中国語表記「金辺」より好きなので使っています。ベトナムの巷間では現在でも南旺のベトナム語読みNam Vangの名で呼ばれています。
 南旺理工の名には、プノンペンの過去をふまえながら未来の世界を理工で今日創っていこうという意気込みを込めてあります。

[英字表記由来]
 nanoはギリシャ語「小人」に由来し、10のマイナス9乗を意味する接頭辞になっています。ricoはスペイン語で「豊かな、素晴らしい」を意味します。
 nanoRicoの名には、細部にこそ素晴らしい価値を宿らせる仕事をしていこうという意気込みを込めてあります。と同時に、ちっぽけながらもみんなで豊かになりたいねというささやかな願いもひそかに込めてあります。

2015年7月10日金曜日

Drupalで、使用者ごとに異なる選択肢を提示するけど管理者に全選択肢を提示

いや~、かなりハマったけどできるようになったんで、覚書っす。

前提:


  • Customerエンティティ型のCustomerバンドルにはPurchaserフィールド(ユーザーへのエンティティ参照型)とCustomerフィールド(テキスト型)がある。
  • Jobエンティティ型のJobバンドルのCustomerフィールド(エンティティ参照型)がCustomerエンティティ型のバンドルすべてのCustomersビューのEntity ReferenceディスプレイのCustomerフィールドを参照。
  • 使用者は役割purchaserを持つ。管理者(Drupalのadministratorとは限らない、組織を回すひと)は役割coordinatorを持つ(が、役割purchaserを持たない。ここ重要)。


実現方法:

上記Entity Referenceディスプレイにおいて

  • FILTER CRITERIAでユーザーをフィルタしない。
  • RELATIONSHIPSでPurchaserフィールドへのリレーションを作成。
  • CONTEXTUAL FILTERSでCustomer: Purchaserへのフィルタを作成。

     -> WHEN THE FILTER VALUE IS NOT AVAILABLE           -> Provide default value
               -> タイプ: User ID from logged in user
          -> EXCEPTIONS
               -> Exception value: 空欄
     -> WHEN THE FILTER VALUE IS AVAILABLE OR A DEFAULT IS PROVIDED           -> Specify validation criteria: オン
               -> Validator: ユーザー
                    -> Restrict user based on role: オン
                         -> Restrict to the selected roles
                              -> coordinator: オフ(ここがミソ
                              -> purchaser: オン
               -> Action to take if filter value does not validate: Display all results for the specified field

すなわち、逆にcoordinatorは認証されなかったために全選択肢を提示されるということになります。ちょっとトリッキーです。

ハマり点:


  • はじめ、Entity Referenceディスプレイを2つ作って、片方のAccessを役割coordinator、もう片方のAccessを役割purchaserとしました。Pageディスプレイはこの方法で、アクティブユーザーの役割に応じて振り分けてくれますので。しかしEntity Referenceディスプレイはこの方法ダメなんですね。ディスプレイのMachine Nameがいちばん若いヤツだけをしか見てくれません。Entity Referenceモジュールバージョン7.x-1.1です。もうちょっとバージョン行ったらいつのまに直されてくれそうな気もします。
  • FILTER CRITERIAでもあれこれ苦戦してみましたがダメでした。
  • Provide default valueのUser ID from URLとかRaw value from URLでURLの実パラメタを読ませようとしましたが、administratorじゃないひとが編集画面へ行くとURLの実パラメタが消えてしまうのでありました。


したがって上記実現方法は僕の4つめのアプローチにしてようやく成功した方法です。1日つぶれました。この記事がお役に立って皆様の1日が潰れませんように :)


きょうでDrupal使いはじめて2週間です。

2015年7月9日木曜日

Drupalでログイン中ユーザーを表示する

「ようこそ○○さん」みたいなのをDrupal 7でコード1行も書かずページ上に表示させる方法の覚書です。

http://drupal.stackexchange.com/a/103902
のパクりです。


  • ビューを作る。
  • そのブロックディスプレイを作る。
  • フォーマットをUnformatted listにする。
  • 表示をFieldsにする。
  • FIELDSにユーザー: 名前を追加。
  • FILTER CRITERIAはなし。
  • Accessは役割でauthenticated userとする。
  • CONTEXTUAL FILTERSにユーザー: Uidを追加。そのWHEN THE FILTER VALUE IS NOT AVAILABLEでProvide default valueを選択し、そのタイプとしてUser ID from logged in userを選択。


こうしておいて、このブロックをページ上のどこかのリージョンに割り当てて、あと表示の微調整をするとよいでしょう。

ウチのサイトに実際にこの方法で実装しました。
(Accessは役割でauthenticated userとしていますのでログインしないと表示されませんすみません ^^;)

それにしても、
Drupalすごいっす。
オモテのサイトをそこそこに、生産管理システム組んでるとこなんですが、オモテ含めてここまで1行たりともコード書いてません。

  • データのリレーショナルはエンティティ参照で。
  • お客さんごとに見せる選択肢の絞り込みはビューのエンティティ参照ディスプレイで。
上記のアプローチで、やりたいことがイメージどおりバッチリ実装できてます。
どんどん実装できていくので気持ちいいです。
どこまでコード書かずにDrupal wayでいけるかチャレンジって感じっす。

「そのシステム開発、Drupal上だったらコスト10分の1でできますよ?」
ってのが煽りじゃなくマジで言えそうな案件けっこうありそう。

松田聖子『きみだけのバラード』は稀代の名曲だが、松田聖子のオリジナル曲ではない

『きみだけのバラード』
を松田聖子が歌った映像に接して、そのとりこになった方ならわかっていただけるとおもうんですけど、

この音源ってないんっすよーーー!!!

しかもあまつさえ、UGAでJohn O'Banionをさがしてもない。I Don't Want To Lose Your Loveをさがしてもない。ドンだけマイナー曲を当時松田聖子はピックアップしたんだよという…。

カラオケで歌おうとしたけど、UGAでさがしてもなかったので、今日は挫折しました。。。。


カラオケにない歌をうたいたいならば、もうあとは、誰かに演奏してもらうしかないっすかね。。。!!!!!

2015年7月8日水曜日

カンボジアでSlackを導入したらテンションがあがった

Slackいいね~ということは世界じゅうで言われておりますのでそれらをここで繰り返す気はありませんが、遅蒔きながらカンボジア大六でも社内導入いたしまして、


  • クメール文字と英数・和文が同じ大きさで表示される


これがすばらしいですね!

ってすごいあたりまえのことですけど、それがSkypeチャットではいまだにできないというダサさでありました。

Slackに社員を登録するには、各社員のメアドが必要ですが、それはさくらVPSに先日立てたメ鯖(〆鯖に非ず)で人数分デッチあげました (^^
デッチあげたといっても、ちゃんと世界に通用するふつ~にメアドですよ!

今のところとりあえず


  • #cut …切り抜きの部屋
  • #dtp …DTPとトレースの部屋
  • #hi …みやもとさんの部屋
  • #work …その他仕事の部屋(元#general)
  • #leng …遊びの部屋(元#random)


という5部屋を作ってあります。lengはクメール語で遊びとかいう意味です。社員たちにとってもfbの延長のテンションでできるので良いですね。

2015年7月4日土曜日

いまだにどっちが正しいスペルかわからないクメール語単語2つ

អាគារとអគារって両方見るけどどっちでもいいのですか?
tovnahにも両方載っているし…。
タイ語อาคารから察するとអាគារのほうが正しいかな?
でもអគារ表記もほんとよくみます。


ផ្ញើとផ្ញើរも両方見るけどどっちでもいいのですか?
これはtovnahにはផ្ញើしか載ってないけど…。
社内チャットで、お客さんへ仕事を送る、とか、社内で資料を送る、みたいなときに多用する言葉なので、そのたびに、រ付けたものか付けまいものか迷います。

どなたか、教えてくださーい!!!

未読既読を気にしあうのは日本特有? けしからんミニスカ事務女子たちがSlackに出会った。

http://elasticneko.tumblr.com/post/123111124426/slack
事務の女子達がSlackを使った感想

という記事。トップの四天王ミニスカ脚組みのあおり構図が大変けしからんです。

開封確認がないので不便、という感想がなんか日本っぽいとおもいました。
Slackの開発陣は、いろいろユーザーの要望を積極的に取り入れていくという姿勢が著しいわけですが、それでも開封確認の機能はない。
日本でLINEとかでよく人間関係のうえで問題になっている、いわゆる未読スルーとか既読無視といことが発生しようがないわけですね。

そういうの、英語圏ではあんまし気にするひといないのかもしれませんね。

ちなみに僕は向かっていちばん右です

2015年7月3日金曜日

dlvr.itのFacebook投稿が復活

Facebookからの要求に従いdlvr.itがプログラムを修正した結果、dlvr.itを通じたFacebookへの記事転送機能が復活したそうです。

http://support.dlvrit.com/hc/en-us/articles/204909804-Facebook-Issue-7-1-2015


2015年7月2日木曜日

神奈川県在住・真鍋照生さん(71)はカレーぶっかけ・せき止め派

http://kazina.com/dummy/
なんちゃって個人情報

「せき止め派」の人が結構多く、僕の食べ方そのものだ! と思って我が意を得た思いでした。

僕の食べ方は、カレーとごはんの国境線において両者を交戦させてすくい上げ、そこへごはんの援軍を後方から送り込んでいく、という食べ方です。完食時点においても皿のごはん領が白いままになり、皿洗いの人はちょっとだけラクかもしれません。

たぶん「せき止め派」は、この食べ方のことを言ってるんじゃないかな~と。

ただ、「せき止め派」でググっても、このサイトを使って生成したと思われるデータしかひっかかってきません。

この状況から推察するに、おそらく「せき止め派」という用語は、このサイトの作者さんが造語したものであると思われます。

皆さんはこのようなカレーの食べ方を何と呼びますか?

Facebookが、dlvr.itからの投稿を昨日からブロックしております

http://support.dlvrit.com/hc/en-us/articles/204909804-Facebook-Issue-7-1-2015

とのことです。

現在dlvr.it側のふるまいへの変更が完了し、Facebookとの交渉に入った由です。

昨日から、ここに書いた記事がFacebookに投稿されないなぁ~、と今気づいたので、ググってみたら、そんなことになっていたのですね。

がんばってさくらVPSにメール環境を入れてみる

http://vps-tora.com/tsubo/sakura/postfix/
VPS設定のつぼ さくらインターネット Mailサーバ(Postfix・Dovecot)

http://centossrv.com/postfix.shtml
メールサーバー構築(Postfix+Dovecot)

これらを参考にコツコツと構成しました。

具体的内容はリンク先の通りですので割愛させていただきます (^^;

そしてiptablesの25と110を開けました。

ばっちりメール送受信できるようになりました!

世界じゅうがヨガりまくっているよー!

先月21日「第一回国際ヨガの日」の世界各地の催しの写真集です:
http://www.huffingtonpost.jp/2015/06/21/international-yoga-day-2015_n_7630368.html

パリ


なぜみな白なのかという素朴な疑問への答え:
http://kundaliniyogawa.com.au/announcements/why-white-and-why-a-head-covering

2015年7月1日水曜日

DrupalでWebサイト開設したよー!

さくらVPS上に入れたDrupalにいくつかモジュール入れて、自社ウェブサイト作ってみました。
今日ちょうど6周年なんで公開しました。

カンボジア大六
http://camdai.com/

出来合いのテーマです。
CSSとかPHPに一切手を入れていません (^^;

10日前の
さくらVPS申し込んだよー!
の時点では
「多言語CMSって何がいいんだろう、へぇーDrupalってのがあるんだー」
だった僕ですが、10日を経てここまでこぎつけました。

かなーりやっつけ感がまだありますが…そこはアジャイルにということで…(^^;;;;
とくにすみませんトップのスライドの「半自動組版」のバックの絵がまだテンプレートに同梱されてきたやつのままです。こんな社員いません。ていうか雪ふりませんカンボジア。

「画像切り抜き」のバックの小動物系の子は実在社員です。

ドメインもさくらで取りました。
cambodiadairoku.com
だと長いんでcamdaiです。
.asiaとかもあいてたけどやっぱここは正統派.comにしておきました。

Viewsはまだ入れてません。
生産管理システムをDrupal上で作れそうな感じがしてきたので、それに着手するときに入れるとおもいます。

Drupal何がいいって、作ってて山ほど疑問が生じたのですが(お前 消す 方法 とか)、そのつどテケトーな語でググると、ほぼ100パー答えが世界のどこかに書いてあることですね。

※唯一まだわかんないのが、フッタのCopyrightの社名が、最初出てたのに、いつのまに出なくなっちゃった件。たぶんi18n系のどれかモジュールのオン/オフか設定と絡んでそうな「仕様」に巻き込まれた気がしますが…。

そしてDrupal何がすごいって、Wordpressだったらけっこうな量のPHPを書かされてそうなことを、すべてモジュールとその設定だけで実現できちゃうことですね。
慣れたら、いい意味で、物凄くめんどくさがりになりそうです僕。