2023年9月20日水曜日
MoneyForwardの口座の更新ボタンが遅いから改善要望を出したらとんでもないことになった
2020年11月17日火曜日
サイトの表示高速化のためにPage Speed Insightsを利用しましたとさ。
1.レンダリングを妨げるリソースの除外
2.適切なサイズの画像
3.効率的な画像フォーマット
2020年11月16日月曜日
Googleアナリティクスでイベントを送信する。
アナリティクス数年見てなかったけど、だいぶ進化しているようですね。
進化して色々機能が増えてて、逆に見方がまだよくわからないですが・・・w
なんか独自のイベントを送信して測定できるようなので試しにやってみました。
イベントを送信ってのは、サイト内の特定のページをみたり、フォームを送信したり、リンクをクリックしたとかを検知することができるということですね。
やり方としては、この辺書いてある通りなんですが
新バージョンのアナリティクス(GA4)で管理→データストリームから詳細を開いて
タグの設定手順の「グローバル サイトタグ(gtag.js)」ってところにコードがあるのでこれをまずheadタグ内に貼り付けます。
リンクをクリックとかだったらリンクにonclick="gtag('event','xyz');"とかやればひとまずそれっぽくなりますが、こちらのドキュメントにあるようにイベントコールバック関数の実装とかした方がいいです。
このドキュメントほぼコピペでいけるんじゃねえかな(適当)
私は今のところ使い道がないので試しに触っただけなのでやってないですが一応検知はできてました。
(逃してるのもあるかもしれないけど逃したら逃したことすらわからないぜ)
要望がどっかから聞こえてきたらもっと詳しく解説するかもしれない(気分)
ネトゲ廃人になりたいので投資について勉強しなおしています。
2020年10月31日土曜日
このサイト明るすぎて目が痛い!って時に使うディスプレイの設定を変えずに画面を暗くするブックマークレット。
たぶん需要はほとんどない、いやむしろ全くないと思う無駄スクリプトのご紹介です。
本スクリプトご紹介する前にブックマークレットというものについて軽く説明しておきます。
ブックマークレットというのはブックマークの機能を利用してURLのとこにjavascriptなどの?コードを入力しておくことでブックマークを利用するかのように、スクリプトを手軽に実行できる裏技的なものです。
例えばどんなことができるのかというと
- 通常はリピート再生できないYouTube動画をリピート再生する
- YouTubeの動画ページで起動すると、通常はない「ダウンロード」ボタンが出現します。
とかできるようですね。
もっと詳しい説明と上記のようなブックマークレットのご紹介はこちらのサイトにありました。
このようにブックマークレットも誰かが配布してくれてたりするので、こんなのできないかな~?って思ったら探してみてもいいかもしれません。
もちろん自分で作っても良いでしょう。
さてそれでは今回のスクリプトはこちらです。
下記をドラッグアンドドロップでブックマークバーに追加すれば使えるはず!
スクリプトの中身としては下記になります。
javascript:
if (document.getElementById('ranaRuta')) {
document.getElementById('ranaRuta').remove();
} else {
let d = document.createElement('div');
d.id = 'ranaRuta';
d.style.cssText = 'top:0; left:0; width:100%; position: fixed; height:100%; background-color:black; opacity:0.5; z-index:10000; ';
let b = document.getElementsByTagName('body')[0];
b.insertBefore(d, b.firstChild);
}
(あ、なんかすげえ見づらいけど、ま、いいか)
真っ黒だけど半透明なdivで画面全部覆ってだけです。
divで覆ってしまうので画面内のボタンとか押せなくなります。
もう一度使うと元に戻りますので戻してから操作してください。
下記のcssの部分をいじれば色をかえたり、明るさを調節できますね。
top:0; left:0; width:100%; position: fixed; height:100%; background-color:black; opacity:0.5; z-index:10000;
一体なんのためにつくったのか、それは画面が明るすぎると目が痛いけど、ディスプレイの設定をいちいち変えるのが面倒だからです。
2020年8月23日日曜日
Lets's Encryptで無料のサーバー証明書でhttps化する!
はいどうもマッスルハンターです。
久々のまともな投稿です。
最近httpだとブラウザに怪しげな文言が表示されますよね。
こういうやつ↓
やはりちゃんとしたサイトを運営しようとするとこれはよろしくないので
長年放置していたhttps化をやってやりました。
手順としてはCertbotというツールが公開されているのでこれをインストールするだけって感じでとても簡単でした。
Let's Encryptっていうのがアメリカの無料の認証局だそうなんです。
企業の寄付で認証局運用のコストをなんとかしているそうです。
(詳しく知りたい人は別途調べてください)
なのでひとまずこちらを利用しようということで開いてみましたら
Let's Encrypt お優しい事に日本語でした。
こちらの証明書は90日毎に更新しなきゃないそうなんですが
certBotっていうのを使えば自動化できるとのことだったので
certBotさんをお訪ねして下記キャプチャ部分のsoftwareとsystemを選択すると設定方法の書いてあるページに飛びますのでその通りに設定するだけでございます。
私の場合はsoftwareはnginx
systemはCentOS7だったのでCentOS/RHEL 7を選択しました。
記載の手順通りですが
- SSH into the server
サーバーにSSHでログインします。
- Enable EPEL repo
EPELレポジトリが有効でなければ有効にします。
CentOS7ならこんな感じっぽいyum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
その他はこちらからどうぞ
https://fedoraproject.org/wiki/EPEL#Quickstart - Install Certbot
Certbotさんをインストールします。
sudo yum install certbot python2-certbot-nginx
- Choose how you'd like to run Certbot
- Either get and install your certificates...
certbotさんにnginxさんをごにょごにょして頂きます。
sudo certbot --nginx
- メアドとか聞かれます。たぶん期限切れが近くなると通知とかくんのかなぁくらいに捕らえました。本当のところは英語を解読してください。
- 最初nginx側でドメインを設定していなかったのでなんたらかんたら言われました。
- ngnx.confにserver_name を設定してからやり直したらよさげでした。
- 上記コマンド実行後にnginx.confを確認すると
- # managed by Certbotというコメントがついた行が追加されてました。
- 証明書のパスとかも書き込んどいてくれてるみたいなので特にいじる必要はなかったです。
- ここでいったんhttpsでアクセスし、無事に閲覧可能な事を確認しました。
- Either get and install your certificates...
- Set up automatic renewal
これはたぶん証明書が90日で切れるので更新を自動かする処理をcronに登録しておけってことだと思われます。
いつの間にか切れてると面倒なので登録しておきましょう。
echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
2015年10月11日日曜日
お名前.comでドメイン取得して、dnsをServerQueenで登録
既にserverqueenのサービスを利用中なので管理上こっちで取得したかったが、tokyoドメインが取得できないようなので、お名前.comにて取得した。
サーバークイーンのメンバーサービスにログインして管理ツール上からドメインの追加を行った。
お名前ドットコムのドメインNaviでネームサーバーをサーバークイーンの物に変更した。
2015年9月1日火曜日
wiresharkで特定のURLのパケットだけ確認する方法
フィルタの設定がよくわかってなかったんで、5分くらいかかってしまったのでメモす。
ぐぐるとプロトコルでフィルタするとこまではすぐ出てくるんですけど、その先がなかったんで。
ipでホストを絞る
http://www.atmarkit.co.jp/ait/articles/0808/29/news132.html
プロトコルで絞る
http://troushoo.blog.fc2.com/blog-entry-108.html
俺がやりたかったのは
http://hogehoe.com.jp.hoge/iiiii/index
http://hogehoe.com.jp.hoge/iiiii/form
http://hogehoe.com.jp.hoge/aaaa/index
http://hogehoe.com.jp.hoge/aaaaa/form
http://hogehoe.com.jp.hoge/image/unko.jpg
のようなリクエストが大量にある中で
iii/indexとiii/formだけに絞りたいとかそんな雰囲気でした。
こんな感じで行けます。
http.request.uri contains "hogehoe.com.jp.hoge/iiii"こんな感じで名前だけで絞ることも当然できます。
http.host == "hogehoge.com.jp.hoge"フィルター条件作成ウィザードの中に大量に条件があるので探すのがめんどかった。
2013年9月25日水曜日
CentOS6.4にVLC playerをインストールして動画を見る
リポジトリ追加しまくったけど、
最終的に参考にした記事
http://ameblo.jp/blue-sea-dog/entry-10491949346.html
とりあえずrpmforgeだけ追加してやってみたらよかったのかもしれない。
もうめんどくさいので振り返りたくもない。
とりあえず再生できたし、再生速度も変更できて音もちゃんと聞こえるからよしだね。
2013年8月15日木曜日
CentOSにソースからPython3インストールしたんだけど tkinterがimport errorで実行できなかった
tkinter使ったプログラムを実行しようとしたらインポートエラーの前にpython3がない。
CentOSのデフォルトのリポジトリにpython3がないんですね。
というわけでソース落としてインストールしたけどtkinterでこける。
python3がないのでpython3-tkもないわけですね。
そもそもtk/tclの共有ライブラリをpythonからなんたらしてるのかな?
っていうわけでそもそものそのライブラリがねーんじゃねーのかと思われ
tkとかtclとかのそれっぽいものを適当に入れてしまって、makeしなおしたらいけたってわけさ。ついでにSSLでもこけたので同じようにしただけさ。
あとは眠いんで羅列
File "/usr/local/lib/python3.3/tkinter/__init__.py", line40, in <module> import _tkinter # If this fails your Python may not be configured for Tk ImportError: No module named _tkinter
If it fails with "No module named _tkinter", your Python configuration needs to be modified to include this module (which is an extension module implemented in C). Do **not** edit Modules/Setup (it is out of date). You may have to install Tcl and Tk (when using RPM, install the -devel RPMs as well) and/or edit the setup.py script to point to the right locations where Tcl/Tk is installed. If you install Tcl/Tk in the default locations, simply rerunning "make" should build the _tkinter extension.
yum search tkでそれっぽいの探してインストールした。
yum install tk tcl tk-devel たぶんこの辺だと思われる。
File "/usr/local/lib/python3.3/ssl.py", line 60, in <module>
import _ssl # if we can't import it, let the error propagate
ImportError: No module named '_ssl'
yum install openssl openssl-devel./configure
make
make install
2013年5月29日水曜日
tcpdumpしてWiresharkで確認しようと思ったらエラーがでて困ったんす。
<code>sudo tcpdump host hoge.com and port 80 -s 0 -w dumpfile</code>
The capture file appears to be damaged or corrupt.
(pcap: File has 1702194273-byte packet, bigger than maximum of 65535
とかいうエラーがでて見れませんでした。
グーグル先生に聞いたら
wireshark Q&Aで
The usual cause of this error is the file being mangled by transferring it over FTP in ASCII mode instead of BINARY mode. If you did transfer the file by FTP, please transfer the file again, now using BINARY mode.
と仰られていたので、バイナリモードで落としてみたら見れました。
Filezillaの場合は転送→転送の種類で変更できます。(デフォルトは自動)
それって気にしたことなかったけど重要だったんですね!
2013年5月7日火曜日
プロキシサーバー構築(squid)
OSはCentOS5.7
sudo yum install squid
sudo vi /etc/squid/squid.conf
acl [aclname] src [ipアドレス]/255.255.255.255 ← 追加([ipアドレス]/255.255.255.255からのプロキシサーバーへのアクセスを許可(1/2))
http_access allow localhost
http_access allow [aclname]← 追加([ipアドレス]/255.255.255.255からのプロキシサーバーへのアクセスを許可(2/2))
http_access deny all
# forwarded_for on
forwarded_for off ←追加(プロキシサーバーを使用している端末のローカルIPアドレスを隠蔽化)
:wq
sudo iptables -I INPUT 10 -s [ipアドレス] -d [鯖アドレス] -p tcp --dport 3128 -j ACCEPT
sudo service iptables save
sudo service iptables restart
sudo service squid start
sudo chkconfig squid on
という感じで終了
参考:プロキシサーバー構築(Squid)
2013年4月12日金曜日
Memcachedサーバ構築
CentOS5.8にMemcachedをインストールする
まずはlibeventのインストール
ダウンロードはこちらから
http://libevent.org/
libevent-2.0.21-stable.tar.gz
wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar zxf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable
./configure
make
make install
次にMemcachedのインストール
ダウンロードはこちらから
http://memcached.org/
Memcached v1.4.15
wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
tar zxf memcached-1.4.15.tar.gz
cd memcached-1.4.15
./configure --with-libevent=/usr/local/lib/
(./configure --with-libevent=/usr/lib64/)
make
make install
これでインストールが完了したので起動してみると
memcached -d -u nobody -m 2048
memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
とかなんとかエラーがでた。
shared objectが見つからねーとかいってるのでldconfigしてもういちど
[hoge@test memcached-1.4.15]# ldconfig /usr/loca/lib
memcached -d -u nobody -m 2048
無事動いた模様。
PHPから使うなら pecl memcache と pecl memcached があって
memcachedの方はlibememcached依存なんだそうです。
で、memcachedを入れようとしてたんですけど、コンパイルがエラーになっていれられないので、あきらめてmemcacheを使用することにしましたとさ。
2013年3月5日火曜日
filezillaの転送が遅い
暗号化のオーバーヘッドが大きいのかとFTPで接続しなおしたが、FTPのがはやいっぽいけどなんか転送中固まるorz
これはクライアントを起動してるPCの問題くさいけど。
あとそれとは別に編集→設定→転送→最大同時転送数を10にしとくべしだった。
composerの続編だお。
composer.jsonのrequireに下記のように記述するとできたっぽいよ。
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.1.*",
"doctrine/orm": ">=2.2.3,<2.5-dev",
"doctrine/doctrine-bundle": "1.1.*",
"doctrine/data-fixtures": "dev-master",
"twig/extensions": "master",
"symfony/assetic-bundle": "2.1.*",
"symfony/swiftmailer-bundle": "2.1.*",
"symfony/monolog-bundle": "2.1.*",
"sensio/distribution-bundle": "2.1.*",
"sensio/framework-extra-bundle": "2.1.*",
"sensio/generator-bundle": "2.1.*",
"sensio/buzz-bundle": "*",
"jms/security-extra-bundle": "1.2.*",
"jms/di-extra-bundle": "1.1.*",
"kriswallsmith/assetic": "1.1.*",
"kriswallsmith/buzz": "dev-master",
"knplabs/knp-oauth-bundle": "dev-master"
},なんて書いたらいいかわからない時はpackagistで調べた方がよさげだね。
ここならバージョンもなんて書いたらいいかわかるね。
でも本当はpackagistってなんなのかまだよくわかってないよ(ぉぃ
参考:Composerの使い方を調べたメモ(1)
2013年3月4日月曜日
Symfony2のcomposerでDoctrineFixturesBundleを入れようとした時に困った件
重要なこと
Symfony2.1からはComposerで外部ライブラリの管理をしているらしい。
参考:PHPの外部ライブラリの管理にComposerを使うオートロード用のファイルも生成するらしく(まだよくわかってないんですけど)
オートローダー関連のところもドキュメントとずれてるのかなんなのかアレだった。Composer使えば管理が簡単になって、APCクラスローダーと同等のスピードだとかなんとか言ってるじゃねえかなこれは→Composer vs Symfony 2 autoloader
DoctrineFixturesBundleのインストール
で、本題なんですけど、本家マニュアル通りだとうまくいかず、"doctrine/doctrine-fixtures-bundle"を"doctrine/data-fixtures"にしたらうまくいった。
まだバンドルを使ってみてないけどvendorには入っている。
要はgitのアドレスに合わせて変更したってことなんです。
"kriswallsmith/assetic": "1.1.*@dev" もエラー吐いてたので、"kriswallsmith/assetic": "1.1.*"に変更したらオッケー風でしたよ。
2013年2月27日水曜日
pukiwiki-1.4.7_notb.tar.gzをphp5.4.12で動作させる
lib/func.php
hex2binの修正、コメントアウトでもいいんでないか?
if(! function_exists('hex2bin')){
function hex2bin($hex_string)
{
// preg_match : Avoid warning : pack(): Type H: illegal hex digit ...
// (string) : Always treat as string (not int etc). See BugTrack2/31
return preg_match('/^[0-9a-f]+$/i', $hex_string) ? pack('H*', (string)$hex_string) : $hex_string;
}}あとは参照渡しにしているところが色々エラーはいてるので治す。
全部見るのがめんどいのでとりあえずまるっと置換したけど、今のところ大丈夫っぽい。
重要なwikiではないのでこれでよしとするw
何かあったらまた対応する。
以下メモ、適当にやったのでよく覚えてない。
こんなのに時間かけていられない。
Deprecated: Assigning the return value of new by reference is deprecated in
532行目辺り
$config = &new Config('AutoLink');
の&を取る
Only variable references should be returned by reference
Only variables should be passed by reference
lib/convert_html.php
$body = & new Body(++$contents_id);
&をとる
$obj = new Paragraph('', $class);
&をとる
& $obj
& new
とにかく&を取る
Call-time pass-by-reference has been removed
plugin/ls2.inc.php 69行目
&をとる
lib/init.phpのなんだっけか
2013年1月16日水曜日
redmineのインストール
オープンソースソフトウェアですので、誰でも自由に利用できます。
プロジェクトの進捗管理は重要ですよね。ってことでredmineを導入しようと試みてみましたよ。
まずはCentOS5.8に入れようとして、RMagickが入らなくてハマリましたよ。
結論から言うとImageMagickの最新版6.8.xにRMagickが対応してないですよっていうことでした。
ですので、ImageMagickの6.5.8をインストールすればできました。
基本的にはRedmine2.2をCentOS6.3にインストールする手順を参考にすすめました。
違ったのは下記2点でございます。
- libyamlをソースからインストールした
- ImageMagickはyumからではなくて、ソースから最新版ではなくて、6.5.8をインストールした
libyamlをソースからインストール
libyamlはEPELレポジトリを追加してとあるんですけど、
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm を取得中
警告: /var/tmp/rpm-xfer.v8PdyA: ヘッダ V3 RSA/SHA256 signature: NOKEY, key ID 0608b895
エラー: 依存性の欠如:
rpmlib(FileDigests) <= 4.6.0-1 は epel-release-6-8.noarch に必要とされています
rpmlib(PayloadIsXz) <= 5.2-1 は epel-release-6-8.noarch に必要とされています
# yum install rpm-devel
Loaded plugins: downloadonly, fastestmirror
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
base | 1.1 kB 00:00
extras | 2.1 kB 00:00
updates | 1.9 kB 00:00
Setting up Install Process
Package rpm-devel-4.4.2.3-28.el5_8.x86_64 already installed and latest version
Package rpm-devel-4.4.2.3-28.el5_8.i386 already installed and latest version
Nothing to doって感じでインストールできなかったので、いっそソースからインストールしました。
libyaml
wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
tar zxf yaml-0.1.4.tar.gz
cd yaml-0.1.4
./configure
make
sudo make installImageMagick-6.5.8-10をソースからインストール
2013年1月3日木曜日
Bloggerの記事をFacebookでシェアしようとして自動的に付加された説明が記事ではなくてブログのdescriptionっぽくてどうにかならないかと悩んだ挙句Facebookなんかやめちまえばいいんだと思った。
FacebookのOpen Graphのとことか見たり、ブロガーのテンプレートのHTML覗いたりして、metaタグで設定するみたいだからどうにかなるとしてもちょっとめんどくせぇなと思った。
しかし、ここでgoogle+ではちゃんと記事の説明が付加されていることに気づいた。
いやほんとわざと不便にしてるんじゃないかとかは思うよ。うん。でも俺はgoogle信者だからいっそFacebookなんかやめちまえばいいんだと思ったわけさ。
まぁなぜか知り合いがFacebookで次々と現れるからFacebook使おうとしてたが、そもそもSNSとか基本めんどくせぇからGoogle+に生息するってことでいいんじゃねぇかな。
2013年1月2日水曜日
iPhoneがiPhoneなのは何故なのかが気になるのでパケットキャプチャしちゃうぞ^ー^
なんのパケット覗いてるかって言うとiPhoneです。
squidで自PC経由させて覗いてます。ちょっと回りくどいような気もします。
CCNAやってた頃を思い出します。懐かしい。
事の発端は、スマホっていうのはWi-Fiからつないだ時点でPCと区別がつかなくなるはずなんじゃ?って思ったのでPCからiPhoneのフリしてapp storeにつないだり、アプリをごにょごにょしたりしてます。
要は好奇心ってことですねきっと。仕事関係ってのも多少ありますけども。
app storeのアプリって普通にsafariで開いた時とuser-agent違うんですね。
あとネイティブアプリかと思ったらウェブアプリだったりしたのとかちょっと驚いたっす。っていうかそんな上手にアニメーションできる時代なんすねみたいな。自分の技術不足実感する瞬間であります。
あ、これだけは言っときますが、誰かの不利益になるような事はしませんよ!
というわけで(?)wiresharkでパケットキャプチャする時のフィルターの仕方をついでにメモっときます。
古い情報をみて混乱したけど、起動時の画面からインターフェースをダブルクリックしてinterface毎に設定するようになったってのがミソですね。
詳しくはWireshark 1.8 でちょっと変更された事 をどうぞ。
参考にさせていただきました。


