SQLServerに大量のテストデータを入れる

SQL Serverのパーティション分割の検証で、大量に日付をを含むテストデータが欲しかったので、
http://d.hatena.ne.jp/dotnetmemo/20111015/1318663995
http://d.hatena.ne.jp/qaz76/20110512/1305251400
を参考にしてみた。

先輩方に感謝!

testdata

[code]
# テーブル作成
CREATE TABLE [dbo].[TestTable](
[id] [int] NULL,
[data] [varchar](50) NULL,
[add_date] [datetime2](7) NULL
)

GO
[/code]

[code]
— ランダムな日付返す
CREATE VIEW
V_RAND
AS
SELECT RAND() RND
GO
–UDF
CREATE FUNCTION
RANDNUM
(
@START AS INT,
@END AS INT
)
RETURNS INT
AS
BEGIN
RETURN (SELECT FLOOR(@START + (RND * (@END – @START + 1))) FROM V_RAND)
END
GO

–UDF
CREATE FUNCTION
RANDDATE
(
@START AS DATETIME,
@END AS DATETIME
)
RETURNS DATETIME
AS
BEGIN
RETURN DATEADD(DAY, DBO.RANDNUM(0, DATEDIFF(DAY, @START, @END)), @START)
END
GO

[/code]

[code]
— 100万件レコード作る
— add_dateには、2015/01/01から2016/07/31までの日付をランダムでくっつける(重複あり)
Declare @p_NumberOfRows Bigint
Select @p_NumberOfRows=1000000;
With Base As
(
Select 1 as n
Union All
Select n+1 From Base Where n < Ceiling(SQRT(@p_NumberOfRows))
),
Expand As
(
Select 1 as C From Base as B1, Base as B2
),
Nums As
(
Select Row_Number() OVER(ORDER BY C) As n From Expand
)
INSERT INTO TestTable
Select n, ‘DATA’ + right(‘0000000000’ + convert(varchar, n), 10),dbo.RANDDATE(‘2015/01/01’, ‘2016/07/31’)
from Nums Where n<=@p_NumberOfRows
OPTION (MaxRecursion 0);
[/code]

Let’s EncryptでブログをHTTPS通信にしてみた

参考:Let’s Encrypt 総合ポータル

基本的には上のリンク通りだがメモしておく。
Apache(RPM) + wordpressの構成

[code]
# 実行ファイルを置く場所 ※今回は/usr/bin

cd /usr/bin

# リポジトリ取得
git clone https://github.com/certbot/certbot

# インストール&設定 ※ 事前に80/tcpを落としておく
cd certbot
/usr/bin/certbot-auto certonly -a standalone -m メールアドレス -d www.jhhk-family.net –agree-tos –no-bootstrap

# ssl.conf修正
# 事前にssl.confを設定してたとして、Let’s Encryptに上書きされるので、もう一度修正。
vim /etc/httpd/conf.d/ssl.conf
<VirtualHost _default_:443>
DocumentRoot "/var/www/wordpress"
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

<Directory "/var/www/wordpress/">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</vertualhost>

# 最後にDocumentRoot直下の.htaccessに、rewriteの設定を追加し、HTTP接続をHTTPSにリダイレクトする

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off # 追加
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] # 追加
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

[/code]

Let’s Encryptの有効期限が3ヶ月なので、crontagで毎月更新している人が多い。

00 16 * * 2 root /usr/bin/certbot-auto renew –post-hook “service httod restart”

Elastic CacheにAWS外からアクセスする

基本的にはAWS 外部からの ElastiCache リソースへのアクセスの通り。

Elastic CacheにはAWS以外からのアクセスが出来ないので、
インターネット-[Elastic IP]–[EC2]–[Elastic Cache]
みたいに、中間にEC2インスタンスを噛ます必要がある。

EC2は、PREROUTINGしかt1.microインスタンスでも十分じゃないかな

[code]
#中間のEC2上で

iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 6379 -j DNAT –to ElasticCacheのIP:6379
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables-save

#/etc/sysctl.conf
net.ipv4.ip_forward = 1

sysctl -a
[/code]