作成者別アーカイブ: cmutoh

cmutoh について

infoScoopの開発・サポート・運用・広報など全般的に行っています。

Angular.jsで、アップロードするファイルをcontrollerでも使えるようdirectiveを自作する

| コメントをどうぞ

ちまたにはAngular.jsのファイルアップロードのモジュールがたくさんあるのですが、シンプルで単機能なものが欲しく、自作しました。
ファイルの内容が、

<input type="file"> → directiveのchangeイベント → controller

の順で渡るところのコードです。
controllerでその後サーバーにアップロードするところは省きます。

前提のコード

下記のように、ファイルをアップロードするコードがあるとします。
index.htmlの中で、upload.htmlをincludeしています。
upload.htmlの中ではmy-sectionというdirectiveをtranscludeで使い、またtype=”file”のinputタグがあります。
続きを読む

opensocialガジェットをAngular.jsで実装する

| コメントをどうぞ

opensocialガジェットをAngular.jsで作ってみました。引っかかった箇所をご紹介です。
※コードはinfoScoopのガジェット用

コツ1: angularアプリを手動で起動する

angular.jsは、自動と手動、2種類の初期化方法を選ぶことができます。
自動の場合は、ng-appをhtml上に指定する必要があります。すると、htmlが読み込まれたタイミングで自動で初期化が行われます。普通は自動の手法でやることがほとんどでしょう。

一方ガジェットの場合は、手動で初期化する必要があります。
ガジェットでscriptを読む準備ができたタイミングで初期化を行わなければならないからです。
下記のように、gadgets.util.registerOnLoadHandlerを利用し、ガジェットの準備ができた段階でangular.bootstrap~を呼び、手動で初期化しましょう。

続きを読む

Pandoc+シェルスクリプトでマークダウンファイルをHTMLに一括変換する方法

| コメントをどうぞ

とある事情でマークダウンのファイルをHTMLに一括変換する必要があり、色々調べました。
Pandocというのがこの界隈では一般的なツールのようです。

infoScoop OpenSourceでは、ドキュメントのみでgithubにプロジェクトを持っています。
今回はこの一部をHTMLに変換します。

続きを読む

WordPress構造化エラーは解消しておいたほうがよさそう。Twenty TwelveとTwenty Fourteenで直す!

| 1件のフィードバック

WordPressのテーマを使ったサイトだと、Webマスターツールで「構造化エラー」というものが発生します。
風のうわさで、直さないと評価が下がるらしいなど不穏な話を聞いたため、その真偽の程を調べたあたりの話と、実際の直し方をお話します。

構造化データって何?エラーって?

構造化データは、これを利用することでGoogleなど検索エンジンに対しサイトコンテンツの情報を容易に伝えることができます。
HTMLにマークアップして使用します。
代表的なものとして、Googleの「リッチ スニペットと構造化データについて」に書いてある以下三種があります。

  • microdata
  • microformats
  • RDFa

続きを読む

Mac用デザインツールSketch3評価版でinkscapeと同じ作業をしてみた

| コメントをどうぞ

Mac用デザインツールSketchの使い勝手を試したメモです。
現場のプロが教えるWebデザイン&レイアウトの最新常識
」に掲載されていたので気になっていたので、Inkscapeと同じ作業をして比べながら見て行きたいと思います。

Sketchとは

数年前にMacアプリとして出たデザインツール。位置づけ的には、AdobeのIlustratorやフリーソフトのInkscpaeと同じカテゴリに入るツールで、ベクターグラフィクスを扱うのが得意なツールです。
脱・Adobeとして注目されているそう。
当初は4300円とお安かったようですが、その後7800円、現在は9800円と値段が上がっています。
それでもillustratorは現在クラウド版で従量課金型、単体では月々2180円ということですから、長期間デザインツールを使いたい人にとっては1万円以内で購入できてしまうのはコスト的に魅力的です。

続きを読む

Inkscapeで「縦書・グラデーション・一部角丸」のボタン風タブを作成する方法

| コメントをどうぞ

Inkscapeで「縦書・グラデーション・一部角丸」のボタン風タブを作る方法のメモです。
出来上がりイメージはこちら↓

タブがアクティブのとき
active

タブが非アクティブのとき
nonactive

続きを読む

Font Awesomeをpngで出力できるツールまとめ

| 1件のフィードバック

とても便利なFontAwesomeですが、マルチブラウザ対応やパフォーマンスを考えてどうしても静止画像にしたい場合もあります。
というわけでFont Awesomeをpngにするツールを調べたのでまとめです。
色々なツールがあり、いいところ・惜しいところあります。
場合により組み合わせて使うと便利だと思います。
続きを読む

Amazon Linuxでiptablesを使ってDos攻撃対策(+ログローテート設定)

| コメントをどうぞ

こんにちは。
本日はAmazon Linux上でのDos攻撃対策のお話です。

Dos攻撃はいつやってくるか分かりません。
対策はしておくに越したことはありません。

対策としてAapacheのモジュールを使用することも考えましたが、より前段ではじいた方がWebサーバーに負担がかからないだろうということで、今回はiptablesで設定する方法を試しました。

はじめに

Amazon Linuxでは、iptablesはデフォルトの状態では稼働していません。
サーバーで下記コマンドをたたくと確認できます。

/etc/init.d/iptables status
iptables: ファイアウォールが稼働していません。

EC2の管理コンソールで設定するセキュリティグループがその役割をカバーしているため、iptablesは必要ないのです。

しかし、今回Dos攻撃対策で用いたいiptablesのhashlimitモジュールは、セキュリティグループで設定することができません。
そのため、iptablesのスクリプトを新規に作成・起動して利用することが必要となります。
ここではiptablesの設定からログ出力を書いていきます。

iptablesを設定

参考:http://www.rapidsite.jp/support/manual/rv_custom/e_4210.html
コマンドで設定していきます。
ここは適宜変えてください。

入力・出力・転送すべて許可。

# iptables -P INPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -P OUTPUT ACCEPT

接続元IPでHTTPのF5を制限するためhashlimitで設定

# -A INPUT -p tcp -m tcp --dport 80 -m hashlimit --hashlimit-upto 5/min --hashlimit-burst 100 --hashlimit-mode srcip,dstip,dstport --hashlimit-name HTTP_HASHLIMIT -j ACCEPT
# -A INPUT -p tcp -m tcp --dport 80 -j LOG --log-prefix "[IPTABLES INPUT WEB DOS]"
# -A INPUT -p tcp -m tcp --dport 80 -j DROP 

上記の意味は以下となります。

項目 説明
-m hashlimit            hash limitモジュールを使う
–hashlimit-upto 5/min –hashlimit-uptoは–hashlimitとイコール。制限発動時には1分間に5パケットまでに制限。
–hashlimit-mode srcip,dstip,dstport srcip=送信元IP, dstip=宛先IP,dstport=宛先ポート。送信先IP, 宛先IP, 宛先ポートが同一のパケットごとにカウントする
–hashlimit-name HTTP         hashlimitモジュールが利用するハッシュテーブル名をHTTPとする
-j ACCEPT               ACCEPTする

この書き方で、ログには制限に引っかかり処理されなかったものだけが記録されます。
ログのプレフィックスの部分については後述します。とりあえず、上記のように何かプレフィックスを指定します。

iptablesの設定を反映させます。

# sudo /etc/init.d/iptables save

iptablesを起動します。

# sudo /etc/itit.d/iptables start

必要があれば同様にping, ssh, httpsなど他のプロトコルに対してもiptablesの設定を行います。
これで設定完了です。

※/etc/sysconfig/iptablesを新規作成して起動しても可能(推奨はされない)ですが、ファイルを直接編集した場合は「/etc/init.d/iptable save」をすると内容が消えてしまいます。ご注意ください。

iptablesの専用ログが出るように設定

何もしなくてもログは/var/log/messages に出力されますが、これだと他のシステムログと混ざってよくわかりません。
messagesログとは別にiptablesのログを出力するようにします。

# vi /etc/rsyslog.conf

「#### RULES ####」という記述のすぐ下に下記を記述してファイルを保存します。

:msg,contains,"IPTABLES INPUT WEB DOS" -/var/log/iptables/iptables-input-web-dos.log
:msg,contains,"IPTABLES INPUT WEB DOS" ~

–log-prefixで”[IPTABLES INPUT WEB DOS]”と指定しているため、ログには1行1行[IPTABLES INPUT WEB DOS]という文字列が出力されます。その”IPTABLES INPUT WEB DOS”を含むログを別ファイルにするように指定しています。

ログを別ファイルにする方法は以下を参考にさせていただきました。
http://vogel.at.webry.info/201311/article_4.html
チルダ(~)を指定することで、破棄の指定になり、messagesに出力されなくなります。

編集が終わったらrsyslogを再起動します。

# sudo /etc/init.d/rsyslog restart

ログローテーション

ログローテーションは、下記2つを指定します。

  1. 保管期間を指定
  2. 容量節約のため圧縮する

ローテーションの設定をするには、下記2つを編集します。システムログを含めた全体の設定をする場合はlogrotate.confを、iptablesのみ単体の設定をしたい場合はlogrotate.d配下のそれぞれの設定ファイル、ここではiptablesを編集します。

  • /etc/logrotate.conf
  • /etc/logrotate.d/iptables

今回はシステム全体で3ヶ月間圧縮したログを保管する設定にしてみます。

vi /ete/logrotate.conf

rotateを12に設定

rotate 12 #12週間=3ヶ月間

コメントアウトになっているcompressを有効にする

compress #コメントアウトを解除

以上となります。
Amazon Linuxだとデフォルトではiptablesファイルがないので一瞬あれ?となってしまいますが、普通と同じですね。

他参考にさせていただいたページ

http://blog.4shs.org/2012/10/30/sakura_vps_part_2.html
http://dev.classmethod.jp/cloud/amazon-ec2-brute-force-attack-iptables/

CentOS6.4でWebSphereV8.5にJava7を入れる方法

| コメントをどうぞ

WebSpherev8.5ではデフォルトでJava6が入っています。
Java7にしたいと色々検索しましたが、情報が少ないというか錯綜しているというか。
Java7がすでに入っている状態から切り替える方法、というのもありました。
WAS 小ワザ集: 第26回:WAS V8.5でSDKを変更する方法

でも私の利用した環境では入っていなかったので、下記ブログを参考にさせていただき、IBMのリポジトリからダウンロードして設定することができました。
WebSphere8.5(試用版)にJava7を入れる

CentOS6.4で行ったときのメモです。

1. IBMインストールマネージャーでJava7を入れる

まずCentOSのVMを立ち上げ、以下コマンドでデスクトップ版に切り替えます。

> startx

続きを読む

WS000012

WordPress移行時にURLをSQLで直接一括置換はダメ! 「Search and Replace for WordPress Databases Script」を使おう

| 16件の返信

こんにちは。武藤です。
最近WordPressの記事を書くことも増えてきて、WordPressと大分仲良くなってきました。

URLの一括置換は危険

本日はWordPressの移行方法についてのお話です。
WordPressは、DBの中にホスト名やIPを含んだURLが散在しています。私も最初はSQLで一括置換すればOK!と思っていましたが、こちらの
WordPressでサーバ移行時にデータベース上のドメインを書き換える方法
という記事を見てその方法だと危険ということを知りました。
DB内にシリアライズされた情報がデータがあって、整合性が合わなくなる様子。
(具体的にいうと、wp_optionsテーブルなどでurlの長さなどのデータを持っている)
特にテーマやプラグインのデータが壊れる可能性があります。

移行するには、「Search and Replace for WordPress Databases Script」というツールを使います。
CodexのMoving WordPress に書いてある公式な方法です。

こちらのツール、新しいバージョンも出て画面も前と結構変わってます。v3.0.0を使ってみたので、その記録です。

続きを読む