tag:blogger.com,1999:blog-36167613204618664732024-02-19T11:45:10.717+09:00ボンタン飴プログラミングとかLinux関連のこととかなんかそんなようなことのメモ書き程度な感じ。もし何か役に立ったなら「ありがとよ」とだけでも言っていただけるとすごく嬉しいです。マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.comBlogger149125tag:blogger.com,1999:blog-3616761320461866473.post-91163739955632535712023-09-20T14:14:00.004+09:002023-10-22T18:24:00.018+09:00MoneyForwardの口座の更新ボタンが遅いから改善要望を出したらとんでもないことになったはい、どうもご無沙汰しておりまっする。<div>マッスルハンターです。</div><div><br /></div><div>もうブログの存在は完全に忘れて<a href="https://www.youtube.com/@MuscleHunterJP">youtube</a>とかTwitchとかやってました。</div><div><br /></div><div>自分は昔からお金の管理にMoneyForwardを使ってて(何年経ったんだろう)</div><div>確定申告もMoneyForwardつかってやってるんですが</div><div>最近口座の一括更新ボタン押すと中々更新されなくてずっと更新中のぐるぐる回ったままで画面に向かって「遅すぎるわ!」と叫ぶほどでした。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpnlnv-Uydz_QggzarC6xXuUq5dQUGwZog0QyBGeW309os4YGB1eY8L3RjYEP1he_ieEidWnJhWN2OA2U8Vo3wcYMV1qQgqKeuSRJibl4TozeQ-_lImCvvBZhtiwwwijwZN6tyIJbsr1UdywzOaLsU6362VMhf5BEONguMAEbSKGTlNUYauuo0SlNrdSg/s1024/bontan2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1024" data-original-width="1024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpnlnv-Uydz_QggzarC6xXuUq5dQUGwZog0QyBGeW309os4YGB1eY8L3RjYEP1he_ieEidWnJhWN2OA2U8Vo3wcYMV1qQgqKeuSRJibl4TozeQ-_lImCvvBZhtiwwwijwZN6tyIJbsr1UdywzOaLsU6362VMhf5BEONguMAEbSKGTlNUYauuo0SlNrdSg/s320/bontan2.png" width="320" /></a></div><br /><div><br /></div><div>そこでお問い合わせから「こんなに時間かかるわけないだろ改善しろぼけえ!」という勢いのままの改善要望を送ったところ</div><div>数日たったら見事に改善されていて爆速になっていました。</div><div><br /></div><div>驚きました。</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi02-9zD1685Z0LFXVolOU3SmzzjZwwSUjhTk54RAMjDVg420SBCTJyJ2z3kL0E78WNIdS7vCnvvA8db-H6FtBvBZ7O5-g-ce8mQE8z_dHTk_fy07SWH5d3tCc3gDMCXS-QmnGP62iE00pP0nSSEqRpBsutuEUnu-OcbYEqWC51sS7fhEyMfFCIX6EVz3g/s1024/bontan3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1024" data-original-width="1024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi02-9zD1685Z0LFXVolOU3SmzzjZwwSUjhTk54RAMjDVg420SBCTJyJ2z3kL0E78WNIdS7vCnvvA8db-H6FtBvBZ7O5-g-ce8mQE8z_dHTk_fy07SWH5d3tCc3gDMCXS-QmnGP62iE00pP0nSSEqRpBsutuEUnu-OcbYEqWC51sS7fhEyMfFCIX6EVz3g/s320/bontan3.png" width="320" /></a></div><br /><div><br /></div><div>できないわけはないけどやろうとしてるとこだったのかなんなのか。</div><div>対応早すぎてびつくりした。</div><div> いやほんとまじで爆速なったからすごく嬉しい。<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGPGCktWLV8hJ2IcOTn5Ft3BWV779GaJSOHcdDbnTg2h50KEka_lxkKLbckX22254uMe9f3WfrPJLl0-b-Xa-vhMCA-OnZgfwphEGsO6M13RfvUnQKj6u3Cw8iY0vouQLNB0ZUNAUw8IrL5zWxjiu_ED9ROTK8E8KMH4sSUhIs2T-dhZK4tRQvRVSUW_U/s1024/bontan4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1024" data-original-width="1024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGPGCktWLV8hJ2IcOTn5Ft3BWV779GaJSOHcdDbnTg2h50KEka_lxkKLbckX22254uMe9f3WfrPJLl0-b-Xa-vhMCA-OnZgfwphEGsO6M13RfvUnQKj6u3Cw8iY0vouQLNB0ZUNAUw8IrL5zWxjiu_ED9ROTK8E8KMH4sSUhIs2T-dhZK4tRQvRVSUW_U/s320/bontan4.png" width="320" /></a></div><br /></div><div>ありがとうございまっする。</div><div><br /></div><div> ただの偶然かもしれないけど、ユーザーの声をきちんと聞いて紳士に対応してくれる運営さんは応援したくなりますね。 </div><div>というわけで広告を貼っておく。</div><div><br /></div><div> 今後ともよろしくお願いしまっする!</div>
<a href="https://px.a8.net/svt/ejp?a8mat=3BQMW6+2WSC0Q+4JGQ+BZGEP" rel="nofollow">
<img alt="" border="0" height="60" src="https://www25.a8.net/svt/bgt?aid=201117030176&wid=002&eno=01&mid=s00000021185002013000&mc=1" width="468" /></a>
<img alt="" border="0" height="1" src="https://www17.a8.net/0.gif?a8mat=3BQMW6+2WSC0Q+4JGQ+BZGEP" width="1" />マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-37252688048905742052020-11-17T05:21:00.003+09:002020-11-17T15:51:15.707+09:00サイトの表示高速化のためにPage Speed Insightsを利用しましたとさ。<div>はいどうもマッスルハンターです。</div><div><br /></div><div>とにかくサイトの表示は速い方が良い。そう信じて疑わないけど、何をすればいいのかわからない。</div><div>そんなあなたは是非こちらを利用しましょう。</div><div><br /></div><a href="https://developers.google.com/speed/pagespeed/insights/" target="_blank">Page Speed Insights</a><div><br /></div><div>こちらに高速化したいサイトのURLを送信すれば分析してアドバイスをくれます。</div><div><br /></div><div>1回やれば言われるまでもなく次からできる事もありますのでまずは見てみると良いでしょう。</div><div><br /></div><div>私の場合はただ作っただけで全く気にしてなかったゴミのようなページがあったんでそれで試して下記を改善しました。</div><div><br /></div><h2 style="text-align: left;"><span face="Roboto, Helvetica, Arial, sans-serif" style="color: #212121; font-size: 16px;">1.レンダリングを妨げるリソースの除外</span></h2><div><span face="Roboto, Helvetica, Arial, sans-serif" style="color: #212121;">この「画面の最初の描画のために必要な情報に絞る」というのがとても重要なようです。</span></div><div><span face="Roboto, Helvetica, Arial, sans-serif" style="color: #212121;">javascriptやCSSの読み込みを非同期で行ったり、最初の描画に必要なCSSをインラインで設定したりしろとのこと。</span></div><div><span face="Roboto, Helvetica, Arial, sans-serif" style="color: #212121;">私の場合はhead内で読み込んでたcssがこれに該当してたので「rel="preload" as="style" </span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="color: #385d34; font-size: 1em; word-spacing: normal;"> </span><span class="token attr-name" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="box-sizing: border-box; color: #9f1c59; font-size: 1em; word-spacing: normal;">onload</span><span class="token attr-value" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="box-sizing: border-box; color: #183691; font-size: 1em; word-spacing: normal;"><span class="token punctuation attr-equals" style="box-sizing: border-box; color: #9f1c59;">=</span><span class="token punctuation" style="box-sizing: border-box;">"</span>this.onload=null;this.rel=<span class="token punctuation" style="box-sizing: border-box;">'</span>stylesheet<span class="token punctuation" style="box-sizing: border-box;">'</span><span class="token punctuation" style="box-sizing: border-box;">"」</span></span><span style="color: #212121;">を追加したところ改善しました。</span></div><div><br /></div><div><span face="Roboto, Helvetica, Arial, sans-serif" style="color: #212121;">javascriptの場合はasyncやdefer属性で解決できます。</span></div><div><span face="Roboto, Helvetica, Arial, sans-serif" style="color: #212121;"><br /></span></div><div><span face="Roboto, Helvetica, Arial, sans-serif" style="color: #212121;">参考</span></div><div><span face="Roboto, Helvetica, Arial, sans-serif" style="color: #212121;"><a href="https://developers.google.com/web/fundamentals/performance/critical-rendering-path/render-blocking-css" target="_blank">https://developers.google.com/web/fundamentals/performance/critical-rendering-path/render-blocking-css</a><br /></span></div><div><span face="Roboto, Helvetica, Arial, sans-serif" style="color: #212121;"><a href="https://web.dev/defer-non-critical-css/" target="_blank">https://web.dev/defer-non-critical-css/</a></span></div><div><br /></div><h2 style="text-align: left;"><span face="Roboto, Helvetica, Arial, sans-serif" style="color: #212121; font-size: 16px;">2.適切なサイズの画像</span></h2><div><span face="Roboto, Helvetica, Arial, sans-serif" style="color: #212121; font-size: 16px;">これはフリー素材を拾ってきたままあげてて、無駄にでかい解像度だったので下記のフォーマットと合わせて修正しました。</span></div><div><br /></div><h2 style="text-align: left;"><span style="color: #212121; font-size: 16px;">3.効率的な画像フォーマット</span></h2><div><span style="color: #212121; font-size: 16px;">最近はjpegにも種類があるようでして、JPEG2000やJPEGXRなんていう次世代フォーマットがあるようです。jpegではありませんが、同じくgoogleさんの提唱する?webpも助言に含まれていたので、既にインストール済みだった<a href="https://www.gimp.org/downloads/" target="_blank">GIMP</a>でWEBPに変換しました。</span></div><div><span style="color: #212121; font-size: 16px;"><br /></span></div><div><span style="color: #212121; font-size: 16px;">ただ、この画像フォーマットについてはブラウザの対応状況の問題もあるかのような雰囲気も無きにしも非ずです。</span></div><div><span style="color: #212121; font-size: 16px;">その中で下記を見るとwebpはおおむね大丈夫そうなのかと思いました。</span></div><div><span style="color: #212121; font-size: 16px;">対象とするユーザーによって考える必要がありそうです。</span></div><div><span style="color: #212121; font-size: 16px;"><br /></span></div><div><span style="color: #212121; font-size: 16px;"><a href="https://caniuse.com/?search=WebP" target="_blank">https://caniuse.com/?search=WebP</a><br /></span></div><div><br /></div><div>あまり中身のないページだったため以上を改善しただけでモバイル90、PC95までスコアがあがりました。</div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLynbM6ap6jYRDLMnoc45aH-v2P2wmEYcYOpQIo-y5eWQA6BdvPmgq_nte0qBzo3y7rBhzi39UyP0ld11Uy-F8VSRNcZo1b7GOw9uPJ7gYcb73r90LlkaT4XtyBymSLojsdNECh7Q7GCo/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="144" data-original-width="184" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLynbM6ap6jYRDLMnoc45aH-v2P2wmEYcYOpQIo-y5eWQA6BdvPmgq_nte0qBzo3y7rBhzi39UyP0ld11Uy-F8VSRNcZo1b7GOw9uPJ7gYcb73r90LlkaT4XtyBymSLojsdNECh7Q7GCo/" width="307" /></a></div><br />めでたしめでたし。</div><div><span style="color: #212121; font-size: 16px;"><br /></span></div>マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-44065635292051717852020-11-16T00:59:00.002+09:002020-11-16T01:00:40.607+09:00Googleアナリティクスでイベントを送信する。<p>アナリティクス数年見てなかったけど、だいぶ進化しているようですね。</p><p>進化して色々機能が増えてて、逆に見方がまだよくわからないですが・・・w</p><p><br /></p><p>なんか独自のイベントを送信して測定できるようなので試しにやってみました。</p><p>イベントを送信ってのは、サイト内の特定のページをみたり、フォームを送信したり、リンクをクリックしたとかを検知することができるということですね。</p><p>やり方としては、<a href="https://developers.google.com/analytics/devguides/collection/gtagjs/sending-data">この辺</a>書いてある通りなんですが</p><p><br /></p><p>新バージョンのアナリティクス(GA4)で管理→データストリームから詳細を開いて</p><p>タグの設定手順の「<span face=""Google Sans", "Helvetica Neue", sans-serif" style="background-color: #f8f9fa; color: #202124; font-size: 13px;">グローバル サイトタグ(gtag.js)</span>」ってところにコードがあるのでこれをまずheadタグ内に貼り付けます。</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ7xSax-w-19PaB979YbbT7D_bUC8vuXqtjjDOs8F5UzX7j-39J5s087ESSTGfvitXpoxqOn22Q94ZCIfVOR78qCALV19T7ZvbE022KtGNJp4lNYiy-JaEoAPSjIH5mRH1kWEwTleRuqA/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="741" data-original-width="1496" height="159" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ7xSax-w-19PaB979YbbT7D_bUC8vuXqtjjDOs8F5UzX7j-39J5s087ESSTGfvitXpoxqOn22Q94ZCIfVOR78qCALV19T7ZvbE022KtGNJp4lNYiy-JaEoAPSjIH5mRH1kWEwTleRuqA/" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div>そしたらイベントを設定したいところに仕込めばいいです。<p></p><p>リンクをクリックとかだったらリンクにonclick="gtag('event','xyz');"とかやればひとまずそれっぽくなりますが、<a href="https://developers.google.com/analytics/devguides/collection/gtagjs/sending-data" target="_blank">こちらのドキュメント</a>にあるようにイベントコールバック関数の実装とかした方がいいです。</p><p>このドキュメントほぼコピペでいけるんじゃねえかな(適当)<br /><br /></p><p>私は今のところ使い道がないので試しに触っただけなのでやってないですが一応検知はできてました。</p><p>(逃してるのもあるかもしれないけど逃したら逃したことすらわからないぜ)</p><p>要望がどっかから聞こえてきたらもっと詳しく解説するかもしれない(気分)</p>マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-27041393399984382032020-11-16T00:31:00.001+09:002020-11-16T00:31:41.269+09:00ネトゲ廃人になりたいので投資について勉強しなおしています。楽しく仲間と遊んで暮らしたいのでそれには一体いくら必要なのだろうかと色々考えていました。<div><br /></div><div>まず自分だけが生活するにしても年間1000万を下回ると耐えられないと思うので、1000万円の不労所得を得るには?</div><div><br /></div><div>なんと<span style="background-color: white; color: red; font-size: medium;">年率10%で運用できても1億円必要</span>じゃありませんか。</div><div><br /></div><div><br /></div><div>毎月〇万円積み立てて、〇%で運用したとして、〇十年でいくらになるか計算してみました。</div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_wiyOuq4fkZzcGrZhOvn1fNs1hqRvWjG72toKRSB_0ynFG6p-BE9FNYIf-cSDuhSlYamm6aqRnpVPfYlJtmFKW3HEFiviRTJdojniIWLtBCujAnBhEQIFscR_Ruxxfmp_D8dg3lcodfw/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="410" data-original-width="627" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_wiyOuq4fkZzcGrZhOvn1fNs1hqRvWjG72toKRSB_0ynFG6p-BE9FNYIf-cSDuhSlYamm6aqRnpVPfYlJtmFKW3HEFiviRTJdojniIWLtBCujAnBhEQIFscR_Ruxxfmp_D8dg3lcodfw/" width="320" /></a></div><br />毎月20万円ずつ積み立てて、年率5%で運用できたとして、20年でやっと8000万円です。</div><div><br /></div><div>なんということでしょう。20年たったらもうアラウンドシックスティじゃあーりませんか。</div><div>(ちなみに<a href="https://support.google.com/docs/answer/3093224" target="_blank">FV関数</a>を使用して計算しました)</div><div><br /></div><div>毎月10万で5%だと30年かかるじゃあーりませんか。</div><div><br /></div><div>なんという恐ろしい数字でしょう。<span style="color: red; font-size: large;">あと20年や30年も働くんですか??</span></div><div><br /></div><div><span style="color: #2b00fe; font-size: large;">えええええええええ!!!絶対そんなの無理ですぅぅぅぅ既に働きたくないのにいいいいいいいいい</span></div><div><span style="color: #2b00fe; font-size: large;"><br /></span></div><div>というわけで、知っていたのにやらなかったがために投資だけでネトゲ廃人になるには遅すぎました。どげんかせんといかん。</div><div><br /></div><div>節約は続かないから程々にしかできないので、稼ぎを増やす必要があります。</div><div><br /></div><div>投資はさっさと始めて時間を味方につけるのが正解ですね。</div><div><br /></div><div>税金対策になったりもするしね。</div>マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-21813342344361408242020-10-31T09:23:00.008+09:002020-10-31T09:59:00.183+09:00このサイト明るすぎて目が痛い!って時に使うディスプレイの設定を変えずに画面を暗くするブックマークレット。<p>たぶん需要はほとんどない、いやむしろ全くないと思う無駄スクリプトのご紹介です。</p><p>本スクリプトご紹介する前にブックマークレットというものについて軽く説明しておきます。</p><p>ブックマークレットというのはブックマークの機能を利用してURLのとこにjavascriptなどの?コードを入力しておくことでブックマークを利用するかのように、スクリプトを手軽に実行できる裏技的なものです。</p><p>例えばどんなことができるのかというと</p><p></p><ul style="text-align: left;"><li><span face=""Hiragino Kaku Gothic Pro", "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", メイリオ, sans-serif" style="background-color: #eeeeee; color: #444444;">通常はリピート再生できないYouTube動画をリピート再生する</span></li><li><span face=""Hiragino Kaku Gothic Pro", "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", メイリオ, sans-serif" style="background-color: #eeeeee; color: #444444;">YouTubeの動画ページで起動すると、通常はない「ダウンロード」ボタンが出現します。</span></li></ul><p></p><p><span face="Hiragino Kaku Gothic Pro, ヒラギノ角ゴ ProN W3, Hiragino Kaku Gothic ProN, メイリオ, sans-serif" style="color: #444444;"><span style="background-color: #eeeeee;">とかできるようですね。</span></span></p><p><span face="Hiragino Kaku Gothic Pro, ヒラギノ角ゴ ProN W3, Hiragino Kaku Gothic ProN, メイリオ, sans-serif" style="color: #444444;"><span style="background-color: #eeeeee;">もっと詳しい説明と上記のようなブックマークレットのご紹介は<a href="https://www.lifehacker.jp/2013/04/130402bookmarklet_matome.html" target="_blank">こちらのサイトにありました。</a></span></span></p><p><span face=""Hiragino Kaku Gothic Pro", "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", メイリオ, sans-serif" style="background-color: #eeeeee; color: #444444;"><br /></span></p><p><span face=""Hiragino Kaku Gothic Pro", "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", メイリオ, sans-serif" style="background-color: #eeeeee; color: #444444;">このようにブックマークレットも誰かが配布してくれてたりするので、こんなのできないかな~?って思ったら探してみてもいいかもしれません。</span></p><p><span face=""Hiragino Kaku Gothic Pro", "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", メイリオ, sans-serif" style="background-color: #eeeeee; color: #444444;">もちろん自分で作っても良いでしょう。</span></p><p><span face="Hiragino Kaku Gothic Pro, ヒラギノ角ゴ ProN W3, Hiragino Kaku Gothic ProN, メイリオ, sans-serif" style="color: #444444;"><span style="background-color: #eeeeee;">さてそれでは今回のスクリプトはこちらです。</span></span></p><p><span face="Hiragino Kaku Gothic Pro, ヒラギノ角ゴ ProN W3, Hiragino Kaku Gothic ProN, メイリオ, sans-serif" style="color: #444444;"><span style="background-color: #eeeeee;">下記をドラッグアンドドロップでブックマークバーに追加すれば使えるはず!</span></span></p><p><span face="Hiragino Kaku Gothic Pro, ヒラギノ角ゴ ProN W3, Hiragino Kaku Gothic ProN, メイリオ, sans-serif" style="color: #444444;"><span style="background-color: #eeeeee;"><a href="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); }">暗転</a></span></span></p><p>スクリプトの中身としては下記になります。</p>
<pre><code class="javascript">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);
}</code></pre>
<p><span face="Hiragino Kaku Gothic Pro, ヒラギノ角ゴ ProN W3, Hiragino Kaku Gothic ProN, メイリオ, sans-serif" style="color: #444444;"><span style="background-color: #eeeeee;">(あ、なんかすげえ見づらいけど、ま、いいか)</span></span></p><p>真っ黒だけど半透明なdivで画面全部覆ってだけです。</p><p>divで覆ってしまうので画面内のボタンとか押せなくなります。</p><p>もう一度使うと元に戻りますので戻してから操作してください。</p><p>下記のcssの部分をいじれば色をかえたり、明るさを調節できますね。</p>
<pre><code class="css">top:0; left:0; width:100%; position: fixed; height:100%; background-color:black; opacity:0.5; z-index:10000;</code></pre>
<p>一体なんのためにつくったのか、それは画面が明るすぎると目が痛いけど、ディスプレイの設定をいちいち変えるのが面倒だからです。</p><p></p><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><br /><p></p>マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-20251819166295494392020-08-23T21:26:00.003+09:002020-08-23T21:28:58.147+09:00Lets's Encryptで無料のサーバー証明書でhttps化する!<p> はいどうもマッスルハンターです。</p><p>久々のまともな投稿です。</p><p>最近httpだとブラウザに怪しげな文言が表示されますよね。</p><p>こういうやつ↓</p><p><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKEAAAAjCAYAAAD8KWplAAAJM0lEQVR4Ae1cv2/jNhvOf1K7cfuhRe9H72sL2EjHHBCgQAEHBhJkSO8DLghwwQ1GBiNDckvRwbghyZBkcRZ7ib0oi7JYk26RF3nSxFu46Z94PryUKFG0JDtXOLleORikSYp8+fLh8/4Q7JWff2nAfIwOHhMDK4+5uFnbgJ8wkAvCZ89/wnffP0Ht2+/w9ep/UKl+g0q1Zj5GB0vBQALCn36u44cnz1Fd/XYpCxkQm0tchAEBwqdPX2C1ZsBXpCTTvtwLtPL02QvDfMbMPioGVr6qrD6qAIZllssy/wT9rvwThDQyftlANSA0pvjRLeHCIHzy5Dn+/PMvuK6LMAzFh+rURn1/h63adgBmHS08R8+L1hdysDt0YiB17CnGJ8QaR7DZBL0igO2O4HMXp0X91N6bIPSuF5bp7+x/7rNdBzy4xesyee/ZV++MYF3uxPsjfSk6jc83Omce6zTLxnRmwfAtKp07sMx4OQ+D3c4+U7TPhUB4cPAWjDEBvOFwJIBH4KM6CUp9NKZokfL2t7CCANZBDR07WkOCPCkVoOXNlQFljkK8nq4MUjrHuKu3K98JhO75/D0RQMSaHJzLD0PgB3F7CGbHF4wObM5e8vbXtlk6RwnYSA+ze1X2pD67fQ2PT3Gzrfa/Rc8aoP2S2nZw6gRg7hVeN9QxVG/hxo/OLE/e+7bNBSGBi8Dw4cMHNBq/zhwKtVEfjfnjj//N9M8V6MQB8wdoViMQzirxGp56cDM3j8Hu1NDsT8DYBFZ7DRcuA2MuLlSlK/X17X1cOBzcu4XlTOAzDq4DrjdJDn7r7A4+pxvO4Q/nM/bWmYOALqc3wPFuC3W5dhEIuw5YcIs3chyVM/uMGIYA/VtvAs4ZPHuA7sFGovN8EL5C3+dwL9eScfJM6mcuuD/Ab8q66+0RPDaF5wfw+oep7MqYysEtAn+AbhFpKESQXED1ea1eCkIys8RyBDIpOJWSodQ2GkNj72eaW+h5DO5ZpCBiwrkg1DYgZNikWy3NgFYmAL6GFytHMpYAlTVAr3uILXH7NTbmDk4JDMQY7Q2IQ0vm09kh+l4X4GEYn0lTp4wrAmGVrEGYC5RK9RxuOMXNpjJPtYb65hF69gQsSN2RfBDWUL90EeogF3rcQHMz0n2pNcm4JWvoOjy5oCoGPrVeCkIyuQQ4nQHzQEhjqJ2eWVQYcahhxGT0zKLmWB3H7AEsn4Enh3EE20sPpliWFvp+CL/fypWX1uCeA498S2myCkEkARL5VoFV4JqUPN8cToUPmrCmvGz0zIL+YBEIK9X3GPNUz3k6ITIgiyLPISWDa3gqCIkFieVVF0NhPomNMCzxyeXe4rIUhMRu5PflCZ3XRmMpWMnrm2mLfRI/SDefjpkTWGQ2sYN2+7zQsU6VKYGilHTA3EF3xueJLgSZvHFXMWMlIBKyn7kIuYPjjHzaekVMukeHO0FPk+W1FYA77xWdkm7ydFZDMQhrOHUV4IjALbYYsTyLMSExNsPYmaYgLNrrPdpLQVjEbBLtKWgiRUvm1Ntzv3dGsHs7whzLG5iOKwdhlgnJR1PZT60rAMhVSmpasgz0DmMeCj8x0z4HhCRXwhB565U+H7Goe6bKvA8rmA2gVNZKdVYOwjoFWjOMmvrb6py0j/TyKky4OYBtH4HmSvZJe1omEy4VhPEhRZuPDkCCu6j0LtUDUutlzytmobGPU3sKpviPnDHwkMPrpT5csz8VkW6iaAmoGERt+V0ry5hIgKUUhJKtDlPWE+w4m0oqWqeoXawtmTYjswpCzZdWgaWaY3peBWFmPvVMFq+XMmGROZYgUW8h1ckc60GMPkb/rt7AqC9iRwIG9+/Q0cwTjcmYDl1BhUpZw6nLhe94ISPKRgu7J1ewvADjODiqVIkFA7gUYUu/R845J3dIJs/vK+ZbPifLdnmKRvqFUkdvrCA3TVQENmovXj/PL1RBmJr4QiaU+1BAqFoliYuoTOeT+ykqS0EozeuyApMIUKqwGzimJKg9EMnmfucOvj9CWwNiCtzYVBA41Jsr65mENEXHs1GmrpgtChDi9EMZCCmHZovEeHrjBYjcq/y0hjhAkiFl5q49hRUHA0IO8ikTnzGOmIV53hFppygfGTEW9wboxJGt3EPGHdgciICCUl9RP5l2PY+4AAg3R/D1i66BMDXdci0iCvVc03Ypq1qWgpDSLR8/fpwJNuSBqxMRA9LY+6VoUmHre+ewfYbAfod15Y2HyLmxKeyz/eRw0w0q/kp1DfTGxB8eYr2xjws3EPXUp8tPdah7qFR/x7E9FeDKHKg8SAK7P0JzewCfT9HX0iYVkSqinFxq2rPzHypBBbkQ2kGRuaZAidbbvYYX3IkgR7gH/gBvRBppQ0T15EaEIcvm8mKmpj0LH9C7TnRGckRM+Sox91uUbwyjpPPx0EFvLwJLs3OF7kE8Rxgi0N9mPSQISXCZrKaoV2dE6qc2+SrvU5LVAlCXI/gZoNEBpYwhAepe/i4UmG+O19DcfSccecr/MfscuxmmiMxxGLjonbxCU2PXLFii6HiGCZN8ZHHSmvKEUaJ6hG57B+sSwHF5HOfY1uNXcZkEtTZWyiQiZPc8kvnlO4xZCApg1k/uBEslbLcZX47tHdwUJKijOTfQHk4FAMc2Jb6nsLqHmr5qqLzcweu9ffE57h6JFwr0fL2fRsdLN8dSCQREYjliwJubYfLajurURn2fAkCaP2U1lbKzIJRyyDJ95gquO0BfvCEJ4Dm3uOi0UG+00Lm8xdijIIT8vQi8FQpMrAkCxjPm2+/H/QoIcplQ6Zey5JX1vfe4cQMRAAXWfsI8YqxITZFJDWB3SvxHda3GESw/lZlepW2p/UmdrEEg9sa964IxpOcW+l4AS6y/hvalE701km6MVorkvnuV7EPVDdXzzTEXFyVPP3pbqTlWB5OZJR+RzK40x1SntvuaYHVeU1cv37+zvjAIDVj+nQB5iHM3IExMmQHZQwAubw0DQgPCxNfLA8hDtK08e/bfRxfiITZq1vh8mV785PPHF79gtUY/cv98BTWyfblno/34/Ufz43dzER+cjBIQqv8LY/4G5Mtlnc/RouSCUAWkqZs/LVo2BgwIzV/jPfpfAxoQGhAaEC6b6s38n787YZjQMOGjM+H/AXvQaZOaQDmFAAAAAElFTkSuQmCC" /></p><p><br /></p><p>やはりちゃんとしたサイトを運営しようとするとこれはよろしくないので</p><p>長年放置していたhttps化をやってやりました。</p><p><br /></p><p>手順としてはCertbotというツールが公開されているのでこれをインストールするだけって感じでとても簡単でした。</p><p><br /></p><p>Let's Encryptっていうのがアメリカの無料の認証局だそうなんです。</p><p>企業の寄付で認証局運用のコストをなんとかしているそうです。</p><p>(詳しく知りたい人は別途調べてください)</p><p>参考:<a href="https://ssl.sakura.ad.jp/column/free-or-paid/" target="_blank">無料証明書と有料証明書の違い|さくらのSSL</a></p><p>なのでひとまずこちらを利用しようということで開いてみましたら</p><p><a href="https://letsencrypt.org/ja/" target="_blank">Let's Encrypt</a> お優しい事に日本語でした。</p><p>こちらの証明書は90日毎に更新しなきゃないそうなんですが</p><p>certBotっていうのを使えば自動化できるとのことだったので</p><p><a href="https://certbot.eff.org/" target="_blank">certBot</a>さんをお訪ねして下記キャプチャ部分のsoftwareとsystemを選択すると設定方法の書いてあるページに飛びますのでその通りに設定するだけでございます。<br /></p><p><img alt="certbotのsoftwareとsystemの選択ボックス" src="data:image/png;base64,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" style="width: 80%;" /></p><p>私の場合はsoftwareはnginx</p><p>systemはCentOS7だったのでCentOS/RHEL 7を選択しました。</p><p><br /></p><p>記載の手順通りですが</p><p><br /></p><ol style="line-height: 30px; margin: 1em 1.1em 1em 30px; padding: 0px;"><li style="background-color: white; color: #111111; font-family: "roboto slab"; font-size: 30px;">SSH into the server<p style="font-family: roboto, helvetica, arial, sans-serif; font-size: 18px; margin: 0px 0px 1em; padding: 0px; position: relative;">サーバーにSSHでログインします。</p></li><li style="color: #111111; font-family: "roboto slab";"><span style="background-color: white; font-size: 30px;">Enable EPEL repo</span><p style="font-family: roboto, helvetica, arial, sans-serif; margin: 0px 0px 1em; padding: 0px; position: relative;"><span style="background-color: white; font-size: 18px;">EPELレポジトリが有効でなければ有効にします。</span><br /><span style="background-color: white; font-size: 18px;">CentOS7ならこんな感じっぽい</span><br /><code style="background-color: #cccccc;">yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm</code><br />その他はこちらからどうぞ<br /><a href="https://fedoraproject.org/wiki/EPEL#Quickstart" style="background-color: white; font-size: 18px;">https://fedoraproject.org/wiki/EPEL#Quickstart</a><br /><br /></p></li><li style="background-color: white; color: #111111; font-family: "roboto slab"; font-size: 30px;">Install Certbot<p style="font-family: roboto, helvetica, arial, sans-serif; font-size: 18px; margin: 0px 0px 1em; padding: 0px; position: relative;">Certbotさんをインストールします。</p><pre style="background-color: #f3f3f3; border-radius: 0px; border: 1px solid rgb(233, 233, 233); font-family: veramono; font-size: 14px; margin-bottom: 2em; margin-top: 2em; overflow-wrap: break-word; overflow: auto; padding: 16px; white-space: pre-line;">sudo yum install certbot python2-certbot-nginx</pre><p style="font-family: roboto, helvetica, arial, sans-serif; font-size: 18px; margin: 0px 0px 1em; padding: 0px; position: relative;"></p></li><li style="background-color: white;"><span face="" style="color: #111111; font-family: "roboto slab"; font-size: 30px;">Choose how you'd like to run Certbot</span><ul style="list-style-type: none; margin: 0px 0px 0px 1em; padding: 0px;"><li style="color: #111111; font-family: "roboto slab"; font-size: 30px;">Either get and install your certificates...<p style="font-family: roboto, helvetica, arial, sans-serif; font-size: 18px; margin: 0px 0px 1em; padding: 0px; position: relative;">certbotさんにnginxさんをごにょごにょして頂きます。</p><pre style="background-color: #f3f3f3; border-radius: 0px; border: 1px solid rgb(233, 233, 233); font-family: veramono; font-size: 14px; margin-bottom: 2em; margin-top: 2em; overflow-wrap: break-word; overflow: auto; padding: 16px; white-space: pre-line;">sudo certbot --nginx</pre></li><li style="color: #111111; font-family: "roboto slab";">メアドとか聞かれます。たぶん期限切れが近くなると通知とかくんのかなぁくらいに捕らえました。本当のところは英語を解読してください。</li><li style="color: #111111; font-family: "roboto slab";">最初nginx側でドメインを設定していなかったのでなんたらかんたら言われました。</li><li style="color: #111111; font-family: "roboto slab";">ngnx.confにserver_name を設定してからやり直したらよさげでした。</li><li style="color: #111111; font-family: "roboto slab";">上記コマンド実行後にnginx.confを確認すると</li><li style="color: #111111; font-family: "roboto slab";"> # managed by Certbotというコメントがついた行が追加されてました。</li><li style="color: #111111; font-family: "roboto slab";">証明書のパスとかも書き込んどいてくれてるみたいなので特にいじる必要はなかったです。</li><li style="color: #111111; font-family: "roboto slab";">ここでいったんhttpsでアクセスし、無事に閲覧可能な事を確認しました。</li><li style="color: #111111; font-family: "roboto slab";"><br /></li><li><p style="color: #111111; font-family: roboto, helvetica, arial, sans-serif; font-size: 18px; margin: 0px 0px 1em; padding: 0px; position: relative;"></p></li></ul></li><li style="color: #111111;"><span face="" style="font-family: "roboto slab";"><span style="background-color: white;"><span style="font-size: 30px;">Set up automatic renewal</span><br />これはたぶん証明書が90日で切れるので更新を自動かする処理をcronに登録しておけってことだと思われます。<br />いつの間にか切れてると面倒なので登録しておきましょう。<br /></span></span><pre class="one-line" style="border-radius: 0px; border: 1px solid rgb(233, 233, 233); margin-bottom: 2em; margin-top: 2em; overflow-wrap: break-word; overflow: auto; padding: 16px;"><span style="font-family: veramono;"><span style="background-color: #f3f3f3; font-size: 14px; white-space: nowrap;"><br /></span></span><span style="background-color: #f3f3f3; font-family: veramono; font-size: 14px; white-space: nowrap;">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</span></pre></li></ol><div><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAiCAYAAAAZHFoXAAABuUlEQVRYCe2YWW6DMBCGc5OwplCFNYBapB4y9DLpO7zDBTgAl5hqaJHQhJgyGChqH0begv1/M9jBc4iTFPZshz2LR+3/AKIIen4E9rMDxskGTX8CRTVBUQ2pJj0CUfwKZ8cHVT9JFfoIXCqA64agG8sLP2IUFb11kDQA1wtX8XgbiW/xWJcCgJ4/9iZ9FO4l+mcD+GGynucHDoBZALhhdcPaLwCeNku8FlPmZEfgEr2AqvFOHMfx4XrNoCzL1rA+RXT/t2wAxw3Yi2bZO9xuH5Cmb61hHfv6wn5aZwNY1pm1IAqr67oV3olEkKqqWPOxAUzTZi2IopumuXt2qK8DFJVsAI35j1sURQuAgqnleX4HJhKPY2wA7ocZFU3bY4Lp+N8F4L5C1OO0TT081mZHwGBuYiqYtscE03E2gGXzjlEqmLapwLE2GwBvW2OTD42LTiEcG3pG1McGwKvk1h9yCDYLwPUukz0m8iZnbBbAb4jCbIAgjDeNwmwAjIKz4askBQAhvDUhevdvaQAIEYQJ6AYmsOQmr+h8i6RVEADtK7EV7DOx1UF05S5Ti534tUqpe2At0f11dg/wCRk6NYzoNd3EAAAAAElFTkSuQmCC" /></div><div>というわけで無事に鍵付きになりました。めでたしめでたし。</div><p><br /></p>マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com1tag:blogger.com,1999:blog-3616761320461866473.post-51216477264872321542015-10-11T04:16:00.001+09:002015-10-11T04:16:54.708+09:00お名前.comでドメイン取得して、dnsをServerQueenで登録ほとんど自分用のメモ<br />
<br />
既にserverqueenのサービスを利用中なので管理上こっちで取得したかったが、tokyoドメインが取得できないようなので、お名前.comにて取得した。<br />
<br />
サーバークイーンのメンバーサービスにログインして管理ツール上からドメインの追加を行った。<br />
<br />
お名前ドットコムのドメインNaviでネームサーバーをサーバークイーンの物に変更した。<br />
<br />
<br />マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-63053485524400778032015-09-01T02:29:00.004+09:002015-09-01T02:29:51.896+09:00wiresharkで特定のURLのパケットだけ確認する方法WireSharkで特定のURLへの通信だけ確認したいと思ったんですが、<br />
フィルタの設定がよくわかってなかったんで、5分くらいかかってしまったのでメモす。<br />
<br />
ぐぐるとプロトコルでフィルタするとこまではすぐ出てくるんですけど、その先がなかったんで。<br />
<br />
ipでホストを絞る<br />
<a href="http://www.atmarkit.co.jp/ait/articles/0808/29/news132.html">http://www.atmarkit.co.jp/ait/articles/0808/29/news132.html</a><br />
<br />
プロトコルで絞る<br />
<a href="http://troushoo.blog.fc2.com/blog-entry-108.html">http://troushoo.blog.fc2.com/blog-entry-108.html</a><br />
<br />
俺がやりたかったのは<br />
http://hogehoe.com.jp.hoge/iiiii/index<br />
http://hogehoe.com.jp.hoge/iiiii/form<br />
http://hogehoe.com.jp.hoge/aaaa/index<br />
http://hogehoe.com.jp.hoge/aaaaa/form<br />
http://hogehoe.com.jp.hoge/image/unko.jpg<br />
のようなリクエストが大量にある中で<br />
<br />
iii/indexとiii/formだけに絞りたいとかそんな雰囲気でした。<br />
<br />
<br />
こんな感じで行けます。<br />
<code>http.request.uri contains "hogehoe.com.jp.hoge/iiii"</code><br />
<br />
こんな感じで名前だけで絞ることも当然できます。<br />
<code>http.host == "hogehoge.com.jp.hoge"</code><br />
<br />
<br />
<br />
フィルター条件作成ウィザードの中に大量に条件があるので探すのがめんどかった。マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-69115143743857402532013-09-25T02:26:00.001+09:002013-09-25T02:26:22.082+09:00CentOS6.4にVLC playerをインストールして動画を見るいやなんかもうわけわかんなかったっす。<br />
<br />
リポジトリ追加しまくったけど、<br />
最終的に参考にした記事<br />
<a href="http://ameblo.jp/blue-sea-dog/entry-10491949346.html">http://ameblo.jp/blue-sea-dog/entry-10491949346.html</a><br />
<br />
とりあえずrpmforgeだけ追加してやってみたらよかったのかもしれない。<br />
もうめんどくさいので振り返りたくもない。<br />
<br />
とりあえず再生できたし、再生速度も変更できて音もちゃんと聞こえるからよしだね。 マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-5972750750806572802013-08-15T03:40:00.002+09:002013-08-15T03:42:54.853+09:00CentOSにソースからPython3インストールしたんだけど tkinterがimport errorで実行できなかった CentOS6.4にてPython3をインストール後<br />
tkinter使ったプログラムを実行しようとしたらインポートエラーの前にpython3がない。<br />
CentOSのデフォルトのリポジトリにpython3がないんですね。<br />
というわけでソース落としてインストールしたけどtkinterでこける。<br />
python3がないのでpython3-tkもないわけですね。<br />
<br />
そもそもtk/tclの共有ライブラリをpythonからなんたらしてるのかな?<br />
っていうわけでそもそものそのライブラリがねーんじゃねーのかと思われ<br />
tkとかtclとかのそれっぽいものを適当に入れてしまって、makeしなおしたらいけたってわけさ。ついでにSSLでもこけたので同じようにしただけさ。<br />
<br />
<br />
あとは眠いんで羅列<br />
<br />
<blockquote class="tr_bq"><br />
<pre class="lang-py prettyprint prettyprinted"><code><span class="typ">File</span><span class="pln"> </span><span class="str">"/usr/local/lib/python3.3/tkinter/__init__.py"</span><span class="pun">,</span><span class="pln"> line40</span><span class="lit"></span><span class="pun">,</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> </span><span class="pun"><</span><span class="pln">module</span><span class="pun">></span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> _tkinter </span><span class="com"># If this fails your Python may not be configured for Tk</span><span class="pln">
</span><span class="typ">ImportError</span><span class="pun">:</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> module named _tkinter</span></code></pre></blockquote><blockquote class="tr_bq">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. </blockquote><br />
<code>yum search tk</code><br />
でそれっぽいの探してインストールした。<br />
<code>yum install tk tcl tk-devel </code><br />
たぶんこの辺だと思われる。<br />
<br />
<blockquote class="tr_bq"><br />
File "/usr/local/lib/python3.3/ssl.py", line 60, in <module><br />
import _ssl # if we can't import it, let the error propagate<br />
ImportError: No module named '_ssl'</blockquote><br />
<code>yum install openssl openssl-devel</code><br />
<br />
./configure<br />
make<br />
make install<br />
マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-6710771215561806862013-05-29T11:23:00.000+09:002013-05-29T11:23:42.364+09:00tcpdumpしてWiresharkで確認しようと思ったらエラーがでて困ったんす。サーバー上でtcpdumpして、FTPでダンプファイルを落としてwiresharkで見ようとしたら<br />
<code>sudo tcpdump host hoge.com and port 80 -s 0 -w dumpfile</code><br />
<br />
<span style="color: red;">The capture file appears to be damaged or corrupt.</span><br />
<span style="color: red;">(pcap: File has 1702194273-byte packet, bigger than maximum of 65535</span><br />
<br />
とかいうエラーがでて見れませんでした。<br />
グーグル先生に聞いたら<br />
<a href="http://ask.wireshark.org/questions/5924/error-in-pcap-file">wireshark Q&A</a>で<br />
<span style="color: blue;"><i>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.</i></span><br />
と仰られていたので、バイナリモードで落としてみたら見れました。<br />
Filezillaの場合は転送→転送の種類で変更できます。(デフォルトは自動) <br />
<br />
それって気にしたことなかったけど重要だったんですね!マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-58783169189840611062013-05-07T15:43:00.002+09:002013-05-07T15:46:39.306+09:00プロキシサーバー構築(squid)ServerQueenのVPSを数年使用しております。<br />
<br />
OSはCentOS5.7<br />
<code>sudo yum install squid<br />
sudo vi /etc/squid/squid.conf<br />
acl [aclname] src [ipアドレス]/255.255.255.255 ← 追加([ipアドレス]/255.255.255.255からのプロキシサーバーへのアクセスを許可(1/2))<br />
<br />
http_access allow localhost<br />
http_access allow [aclname]← 追加([ipアドレス]/255.255.255.255からのプロキシサーバーへのアクセスを許可(2/2))<br />
http_access deny all<br />
<br />
# forwarded_for on<br />
forwarded_for off ←追加(プロキシサーバーを使用している端末のローカルIPアドレスを隠蔽化)<br />
:wq<br />
<br />
sudo iptables -I INPUT 10 -s [ipアドレス] -d [鯖アドレス] -p tcp --dport 3128 -j ACCEPT<br />
sudo service iptables save<br />
sudo service iptables restart<br />
sudo service squid start<br />
sudo chkconfig squid on<br />
</code><br />
という感じで終了<br />
<br />
参考:<a href="http://centossrv.com/squid.shtml">プロキシサーバー構築(Squid)</a>マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-15349222769848550682013-04-12T18:20:00.001+09:002013-04-16T11:24:47.378+09:00Memcachedサーバ構築<h2>CentOS5.8にMemcachedをインストールする</h2><br />
<h3>まずはlibeventのインストール</h3><br />
ダウンロードはこちらから<br />
<a href="http://libevent.org/">http://libevent.org/</a><br />
libevent-2.0.21-stable.tar.gz<br />
<br />
<code>wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz<br />
<br />
tar zxf libevent-2.0.21-stable.tar.gz<br />
cd libevent-2.0.21-stable<br />
./configure<br />
make<br />
make install<br />
</code><br />
<br />
<h3>次にMemcachedのインストール</h3><br />
ダウンロードはこちらから<br />
<a href="http://memcached.org/">http://memcached.org/</a><br />
Memcached v1.4.15<br />
<br />
<code>wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz<br />
tar zxf memcached-1.4.15.tar.gz<br />
cd memcached-1.4.15<br />
./configure --with-libevent=/usr/local/lib/<br />
(./configure --with-libevent=/usr/lib64/)<br />
make<br />
make install<br />
</code><br />
これでインストールが完了したので起動してみると<br />
<code>memcached -d -u nobody -m 2048<br />
memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory<br />
</code><br />
とかなんとかエラーがでた。<br />
shared objectが見つからねーとかいってるのでldconfigしてもういちど<br />
<code>[hoge@test memcached-1.4.15]# ldconfig /usr/loca/lib<br />
memcached -d -u nobody -m 2048<br />
</code><br />
無事動いた模様。<br />
<br />
<br />
PHPから使うなら pecl memcache と pecl memcached があって<br />
memcachedの方はlibememcached依存なんだそうです。<br />
<br />
で、memcachedを入れようとしてたんですけど、コンパイルがエラーになっていれられないので、あきらめてmemcacheを使用することにしましたとさ。<br />
<br />
マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-10002681031153092622013-03-05T12:46:00.000+09:002013-03-05T12:47:40.016+09:00filezillaの転送が遅いファイル数が多く、SFTPで接続してて、どうもLAN内のくせに遅い気がした。<br />
暗号化のオーバーヘッドが大きいのかとFTPで接続しなおしたが、FTPのがはやいっぽいけどなんか転送中固まるorz<br />
これはクライアントを起動してるPCの問題くさいけど。<br />
<br />
あとそれとは別に編集→設定→転送→最大同時転送数を10にしとくべしだった。<br />
<br />
マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-56730814115000424472013-03-05T12:42:00.001+09:002013-03-05T12:42:23.336+09:00composerの続編だお。Symfony2でKnpLabs/KnpOAuthBundleを入れようとしてたんだお。<br />
<br />
composer.jsonのrequireに下記のように記述するとできたっぽいよ。<br />
<code>"require": {<br />
"php": ">=5.3.3",<br />
"symfony/symfony": "2.1.*",<br />
"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"
},</code><br />
<br />
なんて書いたらいいかわからない時は<a href="https://packagist.org/">packagist</a>で調べた方がよさげだね。<br />
ここならバージョンもなんて書いたらいいかわかるね。<br />
でも本当はpackagistってなんなのかまだよくわかってないよ(ぉぃ<br />
<br />
参考:<a href="http://k-holy.hatenablog.com/entry/2012/06/08/194807">Composerの使い方を調べたメモ(1)</a><br />
マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-44113167656529861972013-03-04T17:25:00.000+09:002013-03-04T17:25:31.912+09:00Symfony2のcomposerでDoctrineFixturesBundleを入れようとした時に困った件<h2>重要なこと</h2><h4>Symfony2.1からは<a href="http://www.blogger.com/getcomposer.org/doc/01-basic-usage.md#autoloading">Composer</a>で外部ライブラリの管理をしているらしい。</h4>参考:<a href="http://www.ryuzee.com/contents/blog/5681">PHPの外部ライブラリの管理にComposerを使う</a><br />
<br />
<h4>オートロード用のファイルも生成するらしく(まだよくわかってないんですけど)</h4>オートローダー関連のところもドキュメントとずれてるのかなんなのかアレだった。<br />
Composer使えば管理が簡単になって、APCクラスローダーと同等のスピードだとかなんとか言ってるじゃねえかなこれは→<a href="http://stackoverflow.com/questions/13892614/composer-vs-symfony-2-autoloader">Composer vs Symfony 2 autoloader</a><br />
<br />
<h2>DoctrineFixturesBundleのインストール</h2>で、本題なんですけど、<br />
<a href="http://symfony.com/doc/2.1/bundles/DoctrineFixturesBundle/index.html">本家マニュアル</a>通りだとうまくいかず、"doctrine/doctrine-fixtures-bundle"を"doctrine/data-fixtures"にしたらうまくいった。<br />
まだバンドルを使ってみてないけどvendorには入っている。<br />
<br />
要はgitのアドレスに合わせて変更したってことなんです。<br />
<br />
<br />
"kriswallsmith/assetic": "1.1.*@dev" もエラー吐いてたので、"kriswallsmith/assetic": "1.1.*"に変更したらオッケー風でしたよ。<br />
マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-16445253782097544342013-02-27T12:54:00.000+09:002013-02-27T12:54:20.258+09:00pukiwiki-1.4.7_notb.tar.gzをphp5.4.12で動作させるindex.phpのerror_repotingをコメントアウトして入れ替える<br />
<br />
lib/func.php<br />
hex2binの修正、コメントアウトでもいいんでないか?<br />
<code>if(! function_exists('hex2bin')){<br />
function hex2bin($hex_string)<br />
{<br />
// preg_match : Avoid warning : pack(): Type H: illegal hex digit ...<br />
// (string) : Always treat as string (not int etc). See BugTrack2/31<br />
return preg_match('/^[0-9a-f]+$/i', $hex_string) ? pack('H*', (string)$hex_string) : $hex_string;<br />
}}</code><br />
<br />
あとは参照渡しにしているところが色々エラーはいてるので治す。<br />
全部見るのがめんどいのでとりあえずまるっと置換したけど、今のところ大丈夫っぽい。<br />
重要なwikiではないのでこれでよしとするw<br />
何かあったらまた対応する。<br />
<br />
以下メモ、適当にやったのでよく覚えてない。<br />
こんなのに時間かけていられない。<br />
<br />
Deprecated: Assigning the return value of new by reference is deprecated in <br />
532行目辺り<br />
$config = &new Config('AutoLink');<br />
の&を取る<br />
<br />
Only variable references should be returned by reference<br />
Only variables should be passed by reference<br />
lib/convert_html.php<br />
$body = & new Body(++$contents_id);<br />
&をとる<br />
$obj = new Paragraph('', $class);<br />
&をとる<br />
<br />
& $obj<br />
& new<br />
とにかく&を取る<br />
<br />
Call-time pass-by-reference has been removed<br />
plugin/ls2.inc.php 69行目<br />
&をとる<br />
<br />
<br />
lib/init.phpのなんだっけかマッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-61356659891304660472013-01-16T19:10:00.002+09:002013-01-16T19:14:50.254+09:00redmineのインストール<i><a href="http://redmine.jp/">Redmine</a>はwebベースのプロジェクト管理ソフトウェアです。タスク管理、進捗管理、情報共有が行えます。ソフトウェア開発やwebサイト制作などITプロジェクトでの利用に最も適していますが、それ以外の業務でも幅広く活用できます。</i><br />
<i><br />
</i> <i>オープンソースソフトウェアですので、誰でも自由に利用できます。</i><br />
<br />
<br />
プロジェクトの進捗管理は重要ですよね。ってことでredmineを導入しようと試みてみましたよ。<br />
まずはCentOS5.8に入れようとして、RMagickが入らなくてハマリましたよ。<br />
<br />
結論から言うとImageMagickの最新版6.8.xにRMagickが対応してないですよっていうことでした。<br />
<br />
ですので、ImageMagickの6.5.8をインストールすればできました。<br />
<br />
基本的には<a href="http://blog.redmine.jp/articles/2_2/installation_centos/">Redmine2.2をCentOS6.3にインストールする手順</a>を参考にすすめました。<br />
<br />
違ったのは下記2点でございます。<br />
<br />
<ul><li>libyamlをソースからインストールした</li>
<li>ImageMagickはyumからではなくて、ソースから最新版ではなくて、6.5.8をインストールした</li>
</ul><h3>libyamlをソースからインストール</h3><br />
libyamlはEPELレポジトリを追加してとあるんですけど、<br />
<code># rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm<br />
http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm を取得中<br />
警告: /var/tmp/rpm-xfer.v8PdyA: ヘッダ V3 RSA/SHA256 signature: NOKEY, key ID 0608b895<br />
エラー: 依存性の欠如:<br />
rpmlib(FileDigests) <= 4.6.0-1 は epel-release-6-8.noarch に必要とされています<br />
rpmlib(PayloadIsXz) <= 5.2-1 は epel-release-6-8.noarch に必要とされています<br />
# yum install rpm-devel<br />
Loaded plugins: downloadonly, fastestmirror<br />
Loading mirror speeds from cached hostfile<br />
* base: www.ftp.ne.jp<br />
* extras: www.ftp.ne.jp<br />
* updates: www.ftp.ne.jp<br />
base | 1.1 kB 00:00<br />
extras | 2.1 kB 00:00 <br />
updates | 1.9 kB 00:00<br />
Setting up Install Process <br />
Package rpm-devel-4.4.2.3-28.el5_8.x86_64 already installed and latest version<br />
Package rpm-devel-4.4.2.3-28.el5_8.i386 already installed and latest version<br />
Nothing to do</code><br />
<br />
って感じでインストールできなかったので、いっそソースからインストールしました。<br />
<a href="http://pyyaml.org/wiki/LibYAML">libyaml</a><br />
<code>wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz<br />
tar zxf yaml-0.1.4.tar.gz <br />
cd yaml-0.1.4<br />
./configure<br />
make<br />
sudo make install</code><br />
<br />
<br />
<h3>ImageMagick-6.5.8-10をソースからインストール</h3><div>yumからインストールしたImageMagickだと古くてRMagick2.13がはいりませぬ。</div><div>なのでまずはソースから6.8.1-9をインストールしてやってみるけどだめなんすよ。</div><div>参考</div><div><a href="http://www.pistolfly.jp/weblog/2011/03/centosimagemagick.html" target="_blank">CentOSにImageMagickをソースからインストール → RMagickをインストール</a></div><div><a href="http://akkunchoi.github.com/imagemagick-rmagick-centos.html" target="_blank">CentOS に ImageMagick, RMagick のインストール</a></div><div><br />
</div><div>最終的に「'InitializeMagick' is deprecated...」とかなんとかってエラーになりまして</div><div>.soはなんぞや?とか色々紆余曲折を経て<a href="http://rubyforge.org/forum/forum.php?thread_id=47450&forum_id=33" target="_blank">ImageMagickの最新版じゃRMagick入らないんじゃん!</a></div><div>というところへ行き着きます。</div><div>そして<a href="http://sourceforge.jp/projects/sfnet_imagemagick/downloads/old-sources/6.x/6.5/ImageMagick-6.5.8-10.tar.gz/" target="_blank">ImageMagick-6.5.8-10.tar.gz</a>をインストールして、あとは手順通りでめでたしめでたし。</div><div><br />
</div>マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-28383676957073975452013-01-03T01:02:00.000+09:002013-01-03T01:02:16.142+09:00Bloggerの記事をFacebookでシェアしようとして自動的に付加された説明が記事ではなくてブログのdescriptionっぽくてどうにかならないかと悩んだ挙句Facebookなんかやめちまえばいいんだと思った。Bloggerの記事をFacebookでシェアしようとして自動的に付加された説明が記事ではなくてブログのdescriptionっぽくてどうにかならないかと悩んだ。<br />
<br />
FacebookのOpen Graphのとことか見たり、ブロガーのテンプレートのHTML覗いたりして、metaタグで設定するみたいだからどうにかなるとしてもちょっとめんどくせぇなと思った。<br />
<br />
しかし、ここでgoogle+ではちゃんと記事の説明が付加されていることに気づいた。<br />
いやほんとわざと不便にしてるんじゃないかとかは思うよ。うん。でも俺はgoogle信者だからいっそFacebookなんかやめちまえばいいんだと思ったわけさ。<br />
まぁなぜか知り合いがFacebookで次々と現れるからFacebook使おうとしてたが、そもそもSNSとか基本めんどくせぇからGoogle+に生息するってことでいいんじゃねぇかな。<br />
<br />
<br />マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-54057719967980632722013-01-02T12:50:00.000+09:002013-01-02T14:02:34.880+09:00iPhoneがiPhoneなのは何故なのかが気になるのでパケットキャプチャしちゃうぞ^ー^佐藤正伸さんは今wiresharkでパケットキャプチャしてあんなことやこんなことをしています。<br />
なんのパケット覗いてるかって言うとiPhoneです。<br />
squidで自PC経由させて覗いてます。ちょっと回りくどいような気もします。<br />
CCNAやってた頃を思い出します。懐かしい。<br />
<br />
事の発端は、スマホっていうのはWi-Fiからつないだ時点でPCと区別がつかなくなるはずなんじゃ?って思ったのでPCからiPhoneのフリしてapp storeにつないだり、アプリをごにょごにょしたりしてます。<br />
<br />
<br />
要は好奇心ってことですねきっと。仕事関係ってのも多少ありますけども。<br />
<br />
<br />
app storeのアプリって普通にsafariで開いた時とuser-agent違うんですね。<br />
<br />
あとネイティブアプリかと思ったらウェブアプリだったりしたのとかちょっと驚いたっす。っていうかそんな上手にアニメーションできる時代なんすねみたいな。自分の技術不足実感する瞬間であります。<br />
<br />
あ、これだけは言っときますが、誰かの不利益になるような事はしませんよ!<br />
<br />
というわけで(?)wiresharkでパケットキャプチャする時のフィルターの仕方をついでにメモっときます。<br />
<br />
古い情報をみて混乱したけど、起動時の画面からインターフェースをダブルクリックしてinterface毎に設定するようになったってのがミソですね。<br />
詳しくは<a href="http://hebikuzure.wordpress.com/2012/07/07/wireshark-1-8-%E3%81%A7%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%E5%A4%89%E6%9B%B4%E3%81%95%E3%82%8C%E3%81%9F%E4%BA%8B/" target="_blank">Wireshark 1.8 でちょっと変更された事 </a>をどうぞ。<br />
参考にさせていただきました。 <br />
マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-79481447416551736812012-12-13T01:58:00.001+09:002012-12-13T02:09:37.689+09:00Zend Frameworkでつくるソーシャルゲーム 第4回 Zend_Application_Resource_Db毎度どうも佐藤です。 <br />
<h2><span style="font-size: x-large;">Zend Frameworkでつくるソーシャルゲーム第4回まできました。 </span></h2>ブログで書いたシリーズ物では最長ではないでしょうか(爆)<br />
<br />
今回はZend FrameworkからDBを利用できるようにします。<br />
ここみたら終わりますが→<a href="http://framework.zend.com/manual/1.12/ja/zend.application.available-resources.html">利用できるリソース-Zend Manual</a><br />
それはそれという事にして始めましょうか。<br />
<br />
<h3>まずは設定ファイルをiniからymlに変更します。</h3>(個人的にiniよりymlが好きなので)<br />
<br />
NetBeansから編集していきますよ!<br />
<h3>iniをいじる前にindex.phpを変更します。(別にどっちからでもいいんですが)</h3>23行目あたりのZend_Applicationをインスタンス化しているところにiniファイルを指定しているところがあるのでそこをymlに変えます。<br />
<code><pre><i>//public/index.php</i>
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.<span style="background-color: red;">yml</span>'
);</pre></code><br />
<br />
index.phpはこれで終わりです。CTRL+Sで保存しておきましょう。<br />
<br />
<h3>次は「application/configs/application.ini」を編集します。</h3>まずはapplication.iniを右クリックして拡張子をymlに変更します。<br />
<br />
それから当然中身も書き換えなければならないのでyml風に書き換えます。<br />
CTRL+Hとかうまく使ってささっと書き換えてください。<br />
これを<br />
<code><pre><i>;application/configs/application.ini</i>
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
[staging : production]
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
</pre></code><br />
<br />
<br />
こんな感じにします。<br />
<code><pre><i>#application/configs/application.yml</i>
production:
phpSettings:
display_startup_errors: false
display_errors: false
includePaths:
library: APPLICATION_PATH/../library
bootstrap:
path: APPLICATION_PATH/Bootstrap.php
class: "Bootstrap"
appnamespace: "Application"
resources:
frontController:
controllerDirectory: APPLICATION_PATH/controllers
params:
displayExceptions: false
staging:
_extends: production
testing:
_extends: production
phpSettings:
display_startup_errors: true
display_errors: true
development:
_extends: production
phpSettings:
display_startup_errors: true
display_errors: true
resources:
frontController:
params:
displayExceptions: true
</pre></code><br />
<br />
<br />
参考<br />
<a href="http://framework.zend.com/manual/1.12/en/zend.config.adapters.yaml.html">Zend_Config_Yaml</a><br />
<br />
<h3>書き換えが正常にできたか確認</h3>これでまずは実行してみてください<br />
<br />
余分なスペースとかインデントにタブ使ったりするとエラーがでたりします。<br />
:の前にスペースはいってたらダメで5分ハマリました。<br />
前回と同じくWelcome to the Zend Framework!が見えてればミスはないと思われます。<br />
もしエラーがでてたらZendServerのMonitor→LogsとかからPHPエラーログあたりを見て原因をさぐり修正してください。<br />
多分今のところスペルミスとか、無駄なスペースが・・・とかインデントが・・・とかよくあるケアレスミスだと思います。<br />
<br />
<h3>DBの設定をymlに記入</h3>表示できたらresourceのところにdbの設定を追記します。<br />
※今動作しているlocalのサーバはこのブログの通りならdevelopmentですが、developmentはproductionの設定を継承しているのでどちらの箇所でも大丈夫です。<br />
<br />
<code><pre>resources:
db:
adapter: Pdo_Mysql
params:
dbname: dragonfantasy
username: dragon
password: fantasy
host: localhost</pre></code><br />
<br />
とかいう具合に。<br />
追記したらまた実行して書き方にミスが無いか確認します。<br />
<br />
<h3>コントローラからDBを呼び出す </h3>正常なら「application/controllers/IndexController.php」を編集します。<br />
indexAction()でDBからデータを取り出してみます。<br />
<code><pre>public function indexAction()
{
$db = $this->getInvokeArg('bootstrap')->getPluginResource('db')->getDbAdapter();
$db->query('set names utf8');
$res = $db->fetchRow('select id,name from dfaccount where id=1');
Zend_Debug::dump($res);
}</pre></code><br />
<br />
どうでしょうか?DBから正常にデータを取り出せましたか!?<br />
できなかった方は画面やlogファイルに書かれたエラーメッセージを元にがんばってみてください!<br />
最後眠くなって来てたので何か書き間違えたかもしれないけれど・・・(ぇ<br />
何か突っ込みどころがあれば気軽にコメントください。<br />
マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-76049870949646593632012-12-13T01:06:00.000+09:002012-12-13T01:06:13.418+09:00 Zend Frameworkでつくるソーシャルゲーム-第3回 DBの設定二日目に続きました。おめでとう俺。<br />
<h2>
<span style="font-size: x-large;">Zend Frameworkでつくるソーシャルゲーム</span></h2>
<h2>
<span style="font-size: x-large;">第3回はDBの設定です。</span></h2>
<br />
<h3>
MySQLのユーザの作成とテスト用テーブルの作成までやります。</h3>
<h3>
まずはユーザの作成です。</h3>
MySQL Workbenchを起動します。<br />
ZendServerと一緒にMySQLがインストールしてあれば、既にworkbenchの方でコネクションが設定されていると思います。<br />
rootでパスワードなしで接続可能な状態になっているはずです。<br />
ローカルでしか動かしてないうちはあまり問題無いとは思いますが、念のためrootにパスワードを設定し、さらに開発で使うユーザを作成します。<br />
ServerAdministrationからLocal_MySQL_Zendserver51とかそんなのをダブルクリックして接続します。<br />
Users and PrivilegesからAdd Accountでユーザを追加します。<br />
設定例<br />
<h4>
まずLoginタブ</h4>
Login Name:dragon<br />
Limit Connectivity to Hosts Matching:localhost<br />
password:fantasy<br />
<h4>
次にAdministrative Rolesタブ</h4>
DBManagerにチェックいれる<br />
Applyボタンを押して完了<br />
<br />
<h3>
開発用DBの作成</h3>
ユーザーの追加が完了したらそのServerAdministrationのタブを閉じて、New Connectionから先ほど作ったユーザーで接続しましょう。<br />
接続したら左上の左から3番目のアイコンをクリックして(Create a new schema in the connected server)開発用のDBを作りましょう。<br />
name:dragonfantasy<br />
collation:utf8-utf8_general_ci<br />
Apply<br />
Apply<br />
Finish!<br />
<br />
<h3>
テーブルの作成</h3>
ついでにテスト用にテーブルを作っておきます。<br />
できあがったDBのアイコンをダブルクリックしてTablesのところを右クリック→Create table<br />
table name:dfaccount<br />
collation:utf8-utf8_general_ci<br />
engine:InnoDB<br />
Columns<br />
id int PK NN AI<br />
name varchar(45) NN<br />
という感じで適当に。<br />
<br />
<h3>
テスト用データの挿入 </h3>
テーブルが作成できたらテーブルを右クリックしてedit table dataからテスト用データをいれておきます。<br />
nameだけいれてapplyすればOKです。<br />
idはAIにチェックを入れ忘れてなければ自動ではいります。<br />
<br />
とりあえずMySQL側の準備はこれで完了です。<br />
意外と長くなったので続きは第4回にします。マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-32848418612224015262012-12-11T23:45:00.001+09:002012-12-11T23:47:48.935+09:00Zend Frameworkでつくるソーシャルゲーム-第2回 プロジェクトの作成<br />
<h2>
<span style="font-size: large;"><b>第2回 Zend Frameworkのプロジェクトの作成</b></span></h2>
<br />
連載第2回ですが、書いているのは同じ日です。<br />
今回はプロジェクトを作成してブラウザでインデックスページを見るところまでです。<br />
<h3>
<br />
</h3>
<h3>
まずはZendFrameworkを入手しましょう。</h3>
<br />
<span style="font-size: x-small;">あ、ちなみに私の開発環境はWindowsXPでございます。</span><br />
<span style="font-size: x-small;">その他環境の方は適宜脳内変換をお願いします。</span><br />
<span style="font-size: x-small;">何かお気づきの点などありましたら気軽にコメントください。</span><br />
<br />
はい、ではこちらから<a href="http://www.zend.com/en/products/server-ce/downloads?src=zfdfirst"><b>Zend Server CE (PHP 5.3)</b></a>をダウンロードしてインストールします。<br />
<br />
インストールする時にApacheとMySQLも一緒にいれましょう。<br />
Apacheはデフォルトで入るっぽいですが、<span style="color: red;">MySQLはデフォルトでは入らないっぽい</span>のでチェックボックスにチェックいれてください。<br />
<br />
<h3>
インストールが完了したらNetBeansを起動します。</h3>
<h4>
起動したら新規プロジェクトを作成します。</h4>
ファイル→新規プロジェクト→PHPアプリケーション(新規作成)で次へ<br />
プロジェクト名は半角英字で適当に。<br />
ソースフォルダはcドライブ直下とかで日本語パスは避けておきましょう。 <br />
<br />
<ul>
<li>プロジェクト名:DoragonFantasy </li>
<li>ソースフォルダ:c:\dev\DragonFantasy</li>
<li>PHPのバージョン:5.3</li>
<li>デフォルトエンコーディング:UTF-8</li>
<li>NetBeansのメタデータを別のディレクトリに配置にチェックいれて「c:\dev\DragonFantasyBeans」</li>
</ul>
<br />
とかいう具合で次へ<br />
<br />
<ul>
<li>ローカルWEBサイト </li>
<li>http://dragonfantasy.local/</li>
</ul>
次へ<br />
<br />
最後にZend PHP Web Frameworkにチェックいれて完了です。<br />
<br />
すると、<span style="color: red; font-size: large;">あら不思議!プロジェクトファイルができあがっているではありませんか!! </span><br />
いやー便利ですね。このブログ書いたおかげで今知りました。<br />
NetBeansさんはプロジェクトの作成までやってくれるんですね。<br />
いたれりつくせりだわー知らなかったー。<br />
<br />
それではこれを実行してみましょう。<br />
と言いたいところですが、まだ設定が2つほど終わっていません。<br />
<br />
<h3>
一つ目はApacheの設定です。 </h3>
WIN+Eでエクスプローラを起動します。<br />
<span style="background-color: #cfe2f3;">ZendServerのインストールフォルダの中のetc\sites.dフォルダ</span>を開いてエディタで「vhost_doragonfantasy.local.conf」というファイルを作成します。<br />
(vhost_という文字で始まるところがミソです) <br />
(デフォルトでのパスは<span style="background-color: #cfe2f3;">C:\Program Files\Zend\ZendServer\etc\sites.d</span>になるはず) <br />
NetBeansに一旦戻りdocsのREADME.txtを開き<br />
<VirtualHost *:80>から</VirtualHost>までをコピーして先ほどのファイルに貼り付けます。<br />
<span style="background-color: #b6d7a8;">ServerName .local</span>を<span style="background-color: #b6d7a8;">ServerName dragonfantasy.local</span>になおして保存します。<br />
保存したらタスクトレイの再生ボタンがついたようなApacheのアイコンをクリックしてRestartしてください。<br />
<br />
<h3>
そして二つ目、hostsファイルを書き換えます。</h3>
エクスプローラでC:\WINDOWS\system32\drivers\etcを開き、hostsファイルを開きます。<br />
127.0.0.1 localhost<br />
と書いてある部分がありますね?<br />
そこに「 dragonfantasy.local」を書き足して<br />
<code>127.0.0.1 localhost dragonfantasy.local</code><br />
と変更して保存します。<br />
これで設定が完了したのでNetBeansに戻り実行してみましょう。<br />
F6を押すか、実行→プロジェクトを実行で実行します。<br />
ブラウザが起動して<span style="font-size: large;">Zend Server Test Page</span>という文字が見えたあなた!おそらく<span style="color: red;">Apacheの再起動を忘れています!!</span><br />
<span style="font-size: large;">Welcome to the Zend Framework!</span>という文字が見えたあなた!<br />
おめでとうございます!正常にプロジェクトを作成し、設定を終えることができたようです!<br />
<br />
それでは今回はここまで!<br />
次回はDBへの接続です! マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-41365434898624382762012-12-11T21:37:00.000+09:002012-12-11T21:41:11.299+09:00Zend Frameworkで作るソーシャルゲーム-第1回 準備編<h2>
<span style="font-size: large;">Zend Frameworkで作るソーシャルゲーム</span></h2>
と題して連載予定のこの記事は一体どこまで続くでしょう。<br />
今までシリーズ物は完成したことがありません。<br />
とりあえず今日は<b>第1回 準備編</b>です。<br />
まずは私が使っているツールを紹介します。<br />
<br />
すべてのツールに共通することですが、背景色が変更できるものは灰色にする。<br />
白だと目が痛くなるから。<br />
<br />
<h3>
<span style="font-size: large;"><a href="http://ja.netbeans.org/">NetBeans</a></span></h3>
まぁ何かしらIDEは使った方が効率がいいと思うんですよ。<br />
何しろスペルミスが減りまくるし、スペルミスが減るからね。<br />
アレ結構気づかないでハマるじゃん?(汗<br />
まぁあと色々便利なんでとりあえず使う。<br />
別にNetBeansにこだわっているわけではないです。<br />
eclipse?とかまともに使ったこと無いです。<br />
<br />
<h3>
<span style="font-size: large;"><a href="http://www.forest.impress.co.jp/lib/offc/document/txteditor/emeditor.html">EmEditor</a></span></h3>
まともなエディタならなんでもいいと思うけど、自分が使いやすいやつでね。ちなみに使用しているのは無料版ではないです。無料版でも十分使えると思いますが。teraPadとか秀丸とかでもいいんじゃないですか。<br />
<br />
<h3>
<span style="font-size: large;"><a href="http://www-jp.mysql.com/products/workbench/">MySQL WorkBench</a></span></h3>
SQLがわかるなら便利だと思う。<br />
<br />
<h3>
<span style="font-size: large;"><a href="http://sourceforge.jp/projects/tortoisesvn/">TortoiseSVN</a></span></h3>
基本的にはNetBeansだけでも概ね問題ないと思います。<br />
<br />
<h3>
<span style="font-size: large;"><a href="http://ja.poderosa.org/">Poderosa</a></span></h3>
タブがいいんだ。きっと。<br />
<span style="font-size: large;"><br /></span>
<h3>
<span style="font-size: large;">FTPとかブラウザ</span></h3>
FTPは基本的にNetBeansで済ませる。必要なら<a href="http://filezilla-project.org/">FileZilla</a>。<br />
ブラウザは基本Firefox時々Chromeだけど、何向けの何を開発するかによるよね。<br />
あとコピペツールとして<a href="http://www.vector.co.jp/soft/win95/util/se227914.html">tomoclip</a>使うかもしれない。<br />
むしろ開発じゃない部分でよく使うかもしれない。<br />
<br />マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0tag:blogger.com,1999:blog-3616761320461866473.post-46287674230073800032012-07-24T00:30:00.000+09:002012-07-24T00:31:00.989+09:00Firefoxアドオン開発-設定値の保存ドラゴンクルセイド2F用アドオン開発日記でございます。<br />
事前審査も通りましたんで絶賛?テスト公開中です。<br />
<br />
チャットの自動読み込みと税金の自動徴収を設定値を保存できるようにいたしました。<br />
その際に「アドオンの設定を保存する方法」を学んだのでメモしておきます。<br />
<br />
<a href="https://developer.mozilla.org/ja/Code_snippets:Preferences">Preferences-MDN</a> ←に書いてある事ほぼそのままなんですけど、ブランチ取得してsetなんちゃら、getなんちゃらメソッドでやるだけです。<br />
<br />
<code>// "extensions.myext" ブランチを取得<br />
var prefs = Components.classes["@mozilla.org/preferences-service;1"].<br />
getService(Components.interfaces.nsIPrefService);<br />
prefs = prefs.getBranch("extensions.myext.");</code><br />
<br />
<blockquote class="tr_bq">nsIPrefBranch には設定の取得・設定のための 6 つのメソッドがあります。getBoolPref(), setBoolPref(), getCharPref(), setCharPref(), getIntPref() そして setIntPref() です。</blockquote><br />
<code>// nsIPrefBranch 経由の設定操作<br />
// branch を取得する方法は一つ上の章を読んでください<br />
var value = prefs.getBoolPref("accessibility.typeaheadfind"); // 取得<br />
prefs.setBoolPref("accessibility.typeaheadfind", !value); // 設定</code><br />
<br />
prefs.getBranch()の時に最後のドットを忘れて10分くらいハマりました。はい。<br />
<br />
規定値の設定は「/defaults/preferences/*.js」だそうで、<br />
そこに<br />
<code>pref("extensions.extensionname.preferencename", false);</code><br />
って感じで書いてやれば勝手に読み込んでくれます。<br />
<br />
やってみると非常に簡単なんですけど、MDNのページ読んでると難しそうに見えました。<br />
扁桃炎でちょっとボケてるのかも・・・。<br />マッスルハンターhttp://www.blogger.com/profile/17822026611896819819noreply@blogger.com0