Skip to content

Instantly share code, notes, and snippets.

@CLCL
CLCL / mojo_helper_commify.pl
Created May 26, 2013 10:11
Mojoliciousでcommifyってどうすればいいのかなとりあえず自家製。
helper commify => sub {
my ($self, $string) = @_;
1 while $string =~ s/^(-?\d+)(\d{3})/$1,$2/;
$string;
};
@CLCL
CLCL / Shift_JIS_grep.sh
Created May 29, 2013 06:42
CentOS6近辺のコンソールでShift_JISのファイル群から特定の文字列を含む奴を探す。 ネットを探すとnkf使っている例があるけれども、今どきnkfもないよね、iconvで。 あと、LANG= ja_JP.UTF-8のコンソールだと、LANG=Cが無いとgrepで引っかかってくれないよ。
LANG=C grep -r -e `echo 'ピーチ'|iconv -tcp932`./
@CLCL
CLCL / pi.pl
Created May 30, 2013 06:50
ストレージの利用率とかに使える単純円グラフのCSS Spliteを生成します。 出来上がりはごちら http://labo.dtpwiki.jp/pi/pi.png
#!/usr/bin/perl
# ストレージの利用率とかに使える単純円グラフのCSS Spliteを生成します。
# 出来上がりはごちら http://labo.dtpwiki.jp/pi/pi.png
use strict;
use warnings;
use File::Spec;
use FindBin;
use Image::Magick;
@CLCL
CLCL / modalScreen.js
Last active December 18, 2015 01:59
jQueryを使って、モーダルスクリーンを表示したり消したりするオブジェクトmodalScreen(jQueryプラグインではない)。毎回ベタで書きそうなのでコピペ元として。
/* jQueryで、ウェブブラウザの画面全体をグレーに覆う
モーダルスクリーンを表示します。
var s = new ModalScreen; // オブジェクト作成
s.show(); // モーダルスクリーンに切り替え
s.hide(); // モーダルからモードレスに戻す
*/
var ModalScreen = function() {
this.div = $("<div>").css({
position : "absolute",
background: "rgba(64, 64, 64, 0.9)",
@CLCL
CLCL / CentOS6-L2TP-IPsec.md
Last active September 26, 2022 18:21
L2TP/IPsec(AndroidやiPhoneからのVPN接続)を経路を用意すべくVPSにL2TP/IPsecサーバを設置するとき、ネットにある情報だとなかなかつながらないから、標準環境としてAWSのCentOS 6.3 x86_64 Release Media(ami-3fe8603e)の起動直後から最短距離で設定する方法をまとめた。

CentOS 6でとにかくL2TP/IPsecサーバ

  • AWSでEC2のインスタンスを借りる
  • 今回は東京リージョンのCentOS 6.3 x86_64 Release MediaのAIM(ami-3fe8603e)でインスタンスを建てる
  • Security Group: L2TP/IPsec(Inbound 22/TCP: SSH, 500/UDP: ISAKMP, 1701/UDP: L2TP, 4500/UDP: IPSec NAT Traversal)を許可
  • ec2-54-249-173-214.ap-northeast-1.compute.amazonaws.com(グローバルIPアドレス:54.249.173.214)にrootでログイン

SELinuxを無効にする

[root@ip-10-132-164-105 ~]# setenforce 0
@CLCL
CLCL / adobeMMdel.pl
Last active December 18, 2015 15:19
Adobe MAGIC MASTER( https://magic-master.jp/pc/index.html ) のTwitter連動で自動的に投稿されてしまったうざいメッセージを即座に消します。自分のアカウントで作ったTwitterアプリのConsumer Key、Access Tokenなどなどが必要。
#!/usr/bin/perl
use version; our $VERSION = qv('0.0.1');
use AnyEvent::Twitter::Stream;
use FindBin;
use File::Spec;
use Net::Twitter;
use utf8;
use YAML;
binmode STDOUT => ':utf8';
@CLCL
CLCL / centos6_mod_geoip.md
Last active September 8, 2016 22:34
CentOS 6で稼働しているdtpwiki.jpのWikiサイトに外国からのスパム書き込みが激しいので、GeoIPというIPアドレスから国を判別するApacheモジュールをインストールして、対応した。なお、mod_security使うと書き込み内容でBANすることができるのですが、あれけっこう設定がパラノイアなので、導入時にしっかりテストをする必要があるかな。

CentOS 6のApacheで外国のspamロボットのアクセスを制限する

すべて root で作業しています。

GeoIPとmod_geoipのインストール

GeoIP関連パッケージはEPELにありますので、あらかじめEPELの設定をしたうえで、

# yum --enablerepo=epel install GeoIP mod_geoip
@CLCL
CLCL / ip2geo.pl
Created July 25, 2013 06:34
Apacheログとかで国特定したいときに使う/root/bin/ip2geo.pl。 GeoIPを調べるgeoiplookupコマンド(CentOS 6だったらEPELから入る)があることが前提。 パイプして使おう。
#!/usr/bin/perl
# CentOS 6: yum --enablerepo=epel install geoip
# GeoIPのデータベース更新は自分で設置すること!
use strict;
use warnings;
my $dic = {
};
@CLCL
CLCL / limit_outgoing_packets(iptables).md
Last active December 31, 2015 17:09
iptablesで150kbps/sの帯域制御(トラフィックシェーピング)回線をエミュレート

サーバ側で外行きのパケットにiptablesでlimitつけてあげれば、細い回線のマネができる。 たとえばブラウザのプロキシをSquid:3128でつなげている場合、Squidがあるサーバで以下の通り。

iptables -I OUTPUT -p tcp -m tcp --sport 3128 -j REJECT
iptables -I OUTPUT -p tcp -m tcp --sport 3128 -m limit --limit 13/s --limit-burst 13 -j ACCEPT

OUTPUTチェーンに「-I」で挿入しているということはチェーンの頭に追加しているということなので、実質的には↑のコマンドで挿入されるルールは、OUTPUTチェーンのリスト内では順番が逆になっていることに注意。先にlimit付きの条件成立すればACCEPT(外に行ってよし)、成立しなければREJECTされる。

これで、13(通過できるパケット数/sec)×1500(MTU、単位はbyte)=19500(bytes/sec)=152.3kbps の回線がエミュレートできて、MVNO SIMであったり、JPEGがじわじわ表示される昔のインターネット体験ができるのだけれども、そこで「昔のインターネットはみんなこうだったんだ」とか言ってしまうとおっさん認定されるので要注意だ。

@CLCL
CLCL / bom_check.sh
Last active January 2, 2016 16:29
bom_check.sh PHPとかHTMLにBOM付きUTF-8があるかどうか探す あったらリスト表示して終了コード255 無かったら何も表示せず終了コード0
#!/bin/bash
##########################################################
#
# bom_check.sh : BOM付きファイルを検索してレポート
# findでbash依存の記述($'\xef\xbb\xbf')をしているので、bashでないと動かない
#
##########################################################
CMDNAME=`basename $0`