サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
体力トレーニング
lovepeers.org
findを使って、サイズが0バイトでないファイルのみを探して圧縮する 2018/4/10 2018/4/13 Linux, UNIX一般, サーバ管理 不要になったサーバを削除する前にバックアップを取ろうとしているのですが、その際に少しでもバックアップの容量を削減しようとして調べてみたところ、容量を喰っている大部分がログファイルであることがわかりました。 もう消してしまってもいいようなものですが、念の為出来るだけ圧縮して取っておくことにします。 その際、サイズが0バイトのファイルを圧縮すると却って容量が増えるので(微々たるものですが)、サイズが0バイトのファイルだけは対象から除外することにします。 このように、「与えられた検索条件に従って、指定したディレクトリより下にあるファイルを再帰的に検索する」必要がある時に使うコマンドと言えば、 find です。find を使えば、ファイルのメタデー
### 背景 2年ぐらい Time Machine のバックアップを取り続けてきているのですが、 どうやらバックアップの格納方法に以下の2種類があるらしく、 Mac OS X のどこかのバージョンで切り替わったようです。 1. バックアップディスクの root directory に Backups.backupdb というディレクトリがあり、その下に各マシンのバックアップが保存される。 2. バックアップディスクの root directory に <ホスト名>.sparsebundle という disk image があり、その image を mount すると Backups.backupdb というディレクトリがあり、その下は 1. と同じ構造 最近 MacBook を新調してデータ移行したのですが、 移行時の何かの間違いにより、新しい MacBook のバックアップ先が 2.
WebサイトにGoogleアナリティクスのトラッキングコードを設置する時、管理画面からトラッキングコードをそのままコピペしただけであれば、「設置したけど動いていなかった」ということはあまりないと思います。 しかし、イベントトラッキングをする時など、アナリティクスの JavaScript に何らかの手を入れた場合は注意が必要です。JavaScriptのエラーなどにより、「トラッキングコードを設置したつもりになっていたけど、データが送信されていなかった」ということがあり得るからです。 この記事では、Googleアナリティクスのサーバにトラッキングデータが正しく送信されているかどうかを確認する方法を3つ紹介します。 ## 1. Googleアナリティクスの「リアルタイム」の確認 Googleアナリティクスの「リアルタイム」では、ユーザーの行動をリアルタイムで確認できます。確認したいサイトをブラウ
iptablesで特定ユーザ以外のSMTP通信をブロックし、SPAMの踏み台になるのを防ぐ方法 2015/1/6 2015/1/6 CentOS, サーバ管理, セキュリティ サーバに侵入されてしまった時、非常によくあるのが「SPAMの踏み台にされる」ことです。 運良く(運悪く?)SPAMをバラ撒いているプログラムを発見出来ればいいのですが、「SPAMの踏み台にされている疑いがある 1が、そのプログラムは特定出来ない」というのが一番嫌なケースかもしれません。 なぜこのようなことが起こるのかと言うと、次のような2つの問題があるからです。 1. すべてのユーザが外部のTCP 25番ポートに通信出来てしまう。 2. ユーザが外部と通信した時のログが残らない。 この2点を解決すれば、 1. PostfixやSendmailなどの、限られたMTAのみが外部のTCP 25番ポートと通信出来る。MTA経
CentOS 7 で sshd のポートを変更する(firewalld, SELinuxの設定) 2014/11/21 CentOS, Linux, サーバ管理, セキュリティ sshd をデフォルトポート(TCPの22番)で待ち受けていると、ログファイル(/var/log/secure)に大量のブルートフォースアタックのログが残ります。パスワード認証を無効にして公開鍵認証のみにしておけば、実際に侵入されることはまずないのですが、見ていて気分の良いものではありません。そんな理由で、sshdの待ち受けポートを変更している人も多いと思います。 最近セットアップした CentOS 7 でも同じ設定をしようとしたのですが、長らく使っていた iptables が firewalld に替わったため 1、その設定も必要になりました。また、今回から SELinux も有効にして運用しているので、そちらの
WordPress の固定ページで「次のページ」「前のページ」ナビゲーションを表示する 2014/11/19 2014/12/3 WordPress WordPress の固定ページを使って、例えば次のような階層化されたサイトを作りたいとします。 この時、よくあるCMSのように、以下のようなナビゲーションが欲しくなります。 * 同じ親ページを持つページ同士で「前のページ」「次のページ」のリンク * 親ページへ上がるリンク イメージとしてはこんな感じ。読み物系のサイト(?)で良く見掛けるやつです。 固定ページではなく「投稿」であれば、previous_post_link() や next_post_link() で「前のページ」「次のページ」へのリンクを取得出来るのですが、固定ページで上記の条件を満たすものを取得しようとすると、ちょっとコードを書かないといけません。 ## データベース(wp
SEO最適化済みのシンプルな無料WordPressテーマ「Simplicity」と WP Super Cache を組み合わせて使う 2014/10/30 WordPress 最近このブログの WordPressテーマを twentyforteen から「Simplicity」に変更してみました。かなりSEOに最適化されているし、Google AdSense 広告を貼るスペースも用意されてていい感じなのですが、1つだけ大きな問題が… 本ブログでは WP Super Cache を使ってるのですが、下記の記事にあるように、Simplicityは WP Super Cacheと相性が良くないのです。 * Simplicityが「ファイルを生成するキャッシュプラグイン」と相性が悪い理由(いいわけ) 具体的には、リンク先記事にあるように、PCでモバイル向け記事が表示されたり、その逆が起こったりしま
前回の記事「WordPressに仕込まれたマルウェアのコードが恐ろしすぎた」ですが、予想を遥かに越えて反響が大きくて、正直ビックリしているところです。 この記事を読んだ方からのお問い合わせが何件かあったのですが、その中に「マルウェアが仕込まれた経緯を教えて欲しい」というものがあったので、ここに書いてみることにします。 十分なログが取られていなかったため、最終的な結論までは出せなかったのですが、以下の順番で可能性が高いと考えてます。 1. 脆弱なパスワードが使われているユーザが存在した 2. WordPress本体またはプラグインの脆弱性を突かれた 3. WordPress本体またはプラグインにマルウェアが仕込まれていた 1.ですが、「おそらく脆弱なパスワードが使われているであろうユーザ(リテラシーの低いユーザ)」が存在したこと、および、wp-login.php へのアクセスログが大量に残っ
サーバをセキュアにするために最低限やっておくべきOpenSSHの設定 2012/9/18 2014/11/22 CentOS, Linux, サーバ管理, セキュリティ SSHのブルートフォース攻撃(ユーザー名・パスワード総当り攻撃)が一般化してから もう5年以上経つ気がしますが、 いまだに「アタックされて侵入された」という話を良く聞く気がします。 むしろ、サーバの知識もセキュリティの知識もないまま Linuxサーバを管理することになった人が増えたためか、 被害者の数は増えてる気さえします。 本当はOS(ディストリビューション)の出荷時に 一番セキュアな設定になっていてくれるのが一番良いのですが、 利便性との兼ね合いのせいか、OSによっては必ずしもそうなっていない場合があります。 特に CentOS とか、CentOS とか、、、 ということで、今 Webサーバで一番良く使われているであろ
『Googleから「マルウェアに感染している」という警告が届いたので、調査して欲しい』という依頼を受けて、とあるサイトの調査をしたところ、どうやらWordPressにマルウェアが仕込まれている模様。 かなり時間を掛けて広範囲にヤラれていたので、マルウェアをすべて取り除くのに苦労したのですが、その際に見付けたマルウェアが中々恐しいものだったので、ここに書き残しておきたいと思います。 なお、真似してマルウェアを作られても困るので、ソースの一部を画像で載せることにします。 ## マルウェアのソースを人間に読めるようにしてみる では、早速マルウェアの中身を見てみましょう。 まず、いきなり始まるコメント行。そして、長くて一見ランダムに見える文字列。 そして2行目でランダムに見える文字列を base64_decode() し、eval() しています。base64_encode()しているのは、ソース
OpenSSH の ChallengeResponseAuthentication と PasswordAuthentication 2014/6/14 2014/11/22 CentOS, Linux, サーバ管理, セキュリティ “ChallengeResponseAuthentication” で検索してこのブログに辿り着く人が多いのですが、ChallengeResponseAuthentication についてはちゃんと書いてないし、PasswordAuthentication との違いは昔から気になっていたので、調べてみることにしました。 調べたのは CentOS 6.5 の openssh-5.3p1-94.el6 です。これ以降のバージョンの OpenSSH でもおそらく同じだと思います。 結論から言うと、 * PasswordAuthentication: RFC 4252
curl を使って Web API をテストする(2) 2014/7/7 2015/1/29 Linux, UNIX一般, Web 前回は Web APIをテストする時によく使う curl のオプションについて解説しました。 * [curl を使って Web API をテストする(1)](http://lovepeers.org/2014/06/30/curl-web-api/) 今回はよく使うシチュエーションをいくつか挙げて、curl の具体的な使い方を解説します。 ## GETリクエストを送信 一番基本的なGETリクエスト送信。 リダイレクトが発生することを考慮して、”-L” オプションを付けておくと良いでしょう。 curl -L http://api.examples.com/ レスポンスヘッダも見たい時は、”-i” オプションを付けます。 curl -i -L http://api
curl を使って Web API をテストする(1) 2014/6/30 2015/1/29 Linux, UNIX一般, Web 例えばスマートフォンアプリを開発していて、データをサーバに保存しないといけない時など、Web APIを使った開発をする機会だけでなく、Web APIそのものを開発する機会が増えて来ていると思います。 Web APIのサーバサイドプログラムを開発する時、Web APIを単体テスト出来るツールを持っていると便利です。クライアント側の開発を待たなくてもサーバ側の開発が進められますし、トラブルが起こった時にサーバ側とクライアント側で問題を切り分けるのにも役立ちます。 今回は Web APIのテストに使えるツールとして、curlの解説をします。Mac OS X や Linux であれば標準でインストールされてされていますし、公式サイトでは Windows用のバイナリも
JavaScript において、文字列を正規表現にマッチさせるためのメソッドは、以下の4つがあります。 1. RegExp.test() 2. RegExp.exec() 3. String.match() 4. String.search() RegExpオブジェクトのメソッド(引数がStringオブジェクト)と、Stringオブジェクトのメソッド(引数がRegExpオブジェクト)があり、しかもすべてのメソッドで微妙に動作が違うので、非常に紛らわしい… ということで、これらがどう違うのか、どう使い分ければいいかをまとめてみました。 ## RegExp.test() とString.search() まずはパターンにマッチするかどうかだけをチェックしたい時。 あるパターンが文字列に存在するかどうかだけを知りたいときは、RegExp.test() または String.search() を使
WordPressのドメインを変更する方法について。例えば、「開発サーバで作成したコンテンツをステージングサーバに移す」なんて場合を想定しています。 単純に 1. DocumentRoot 以下のファイルを丸ごとコピー 2. 開発サーバのDBの中身をmysqldump 3. mysqldump の中身をエディタで編集して、開発サーバのURLとインストールパス(DocumentRoot)をステージングサーバのものに変更 4. ステージングサーバのDBにリストア で良さそうな気がするのですが、これをやると wp_postmeta テーブルや wp_optionsテーブルの中のserializeされた値がことごとく壊れます… なぜなら、serializeされたデータは s:19:”http://examples.com” のように、文字列の大きさを含んでいるからですね。これを単純に http:/
PHPの mt_rand() で生成される乱数はどのように初期化されているのか? 2013/8/4 2014/11/21 PHP, セキュリティ 疑似乱数を使う時は、まず乱数に「種」(初期値)を与えて初期化しなければならないのですが、mt_srand()のマニュアルを読むと、 Note: As of PHP 4.2.0, there is no need to seed the random number generator with srand() or mt_srand() as this is now done automatically. とあります。「乱数が初期化されていない場合、ランダムな値で初期化される」ということなので、大変便利に見えるのですが、どうも生成される乱数の分布が偏ってる気がする。ということで、初期化に使われる「ランダムな値」というのはどの程度ランダムなのか? 気
EC-CUBE 2.12からAjaxで使う用のAPIがコソッと入ってるんですね。 リリースアナウンスとかではまったく触れられてなかったので、 ソース見るまでまったく気付かなかった。。。 使い方を解説してるページとかも全然見付からないので、 使い方を簡単に書いてみることにしました。 ## リクエストURL APIリクエストを送るためのURLは、以下の形式になります。 http://ホスト名/api/出力フォーマット.php 出力フォーマットとしては、以下の3種類が使えます。 フォーマット 説明
JavaScriptだけで動くLinux、jslinuxを今さら使ってみる 2012/10/22 2014/6/8 JavaScript, jslinux, Linux 1年半ほど前に話題になった [jslinux](http://bellard.org/jslinux/) (JavaScriptだけで動くLinux)を 今さらながら動かしてみました。 実は地味に進化していて、IDEドライブのエミュレーションが出来るようになっているし、 「4MB以下のRAMディスクしか使えない」という制限もなくなってます。 – [Javascript PC Emulator – News](http://bellard.org/jslinux/news.html) 実際、今のjslinuxのディスクイメージは57MBほどあり、 なんと gcc 4.3.5 が入ってたりします! サイズの制限などもあり、li
Windows XP上で作成したZIPファイルを [Unix上の unzip コマンド](http://www.info-zip.org/UnZip.html)で展開すると、 中のファイルの日本語ファイル名が化けてしまうことがあります。 $ unzip -l hoge.zip Archive: hoge.zip Length Date Time Name ——— ———- —– —- 0 11-06-2010 17:46 В┘В.txt ——— ——- 0 1 file 調べてみると、unzipコマンドはファイル名の8bit目が1の場合に おかしな変換をすることがあるみたい。 この辺の解説は以下のページが詳しいです。 – [日本語のファイル名を含んだZIPアーカイブが、UNZIPで展開すると文字化けすることがある](http://nhh.mo-blog.jp/ttt/2007/03/zip
EC-CUBE APIの話はちょっとお休みして、今回はEC-CUBEのバッドノウハウをw EC-CUBEの商品一覧をTOPページ(というか、商品一覧ページ以外)に表示させたい場合が あるわけですが、その場合の一番何も考えないやり方としては、 1. data/class/pages/products/LC_Page_Products_List.php の内容を data/class_extends/page_extends/LC_Page_Index_Ex.php にコピー (クラス名等は適宜調整するとして) 2. data/Smarty/templates/default/products/list.tpl を data/Smarty/templates/default/index.tpl にコピーして、カスタマイズ となるかと思うのですが、それではあまりに何も考えてなさ過ぎるというか、
PC-BSD 8.1 を使って ZFS boot な FreeBSD をインストールする 〜補足〜 2010/11/22 2014/6/8 FreeBSD – [「PC-BSD 8.1 を使って ZFS boot な FreeBSD をインストールする」](http://lovepeers.org/2010/11/16/install_zfs-boot-enabled-freebsd_using_pcbsd/) の落穂拾い。 ## PC-BSD のインストーラ実行中にコンソールを使う PC-BSD のインストーラを実行中、Ctrl+Alt+F2〜F6 でコンソールに切り替えられます。 まぁ、ふつーにXの仮想コンソールの切り替えですね。 戻る時は Alt+F7 です。 コンソールでログインするためのユーザ名は root、パスワードはなしです。 ## インストールログ /tmp/.pc-sys
PC-BSD 8.1 を使って ZFS boot な FreeBSD をインストールする 2010/11/16 2014/6/8 FreeBSD [PC-BSD](http://www.pcbsd.org/) と言えば、 FreeBSD をベースにしてより優れたデスクトップ環境を提供する プロジェクトと一般に認識されているわけですが、 実は PC-BSD 8.0 以降では FreeBSD の GUIインストーラとしても動作するようになっています。 1. [PC-BSD 8.0登場、FreeBSD 8.0インストーラ](http://journal.mycom.co.jp/news/2010/02/23/049/index.html) 2. [EuroBSDCon2010 – PC-BSD 9はKDE、GNOME、XFce4に対応](http://journal.mycom.co.jp/ar
このページを最初にブックマークしてみませんか?
『lovepeers.org』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く