ブックマーク / dqn.sakusakutto.jp (16)

  • Vagrantのport forwardは普通に80 → 80に転送すればよいのでは · DQNEO日記

    Vagrantfileのforwarded_portの設定で、よく config.vm.network :forwarded_port, guest: 80, host: 8080 と書いてる例を見かけます。 Vagrantfileのコメントにそう書いてあるので、そのままそれを使ってしまってる人が多いようです。 私もそうでした。 でもこれだとブラウザでいちいち http://localhost:8080/ みたいにうつのがめんどくさいし、 SSL環境だと https://localhost:8443/ になちゃって、やる気が失せる。 で今日気付いたんです。 普通に80 -> 80 , 443 -> 443に転送してしまえばいいんじゃないかと。 config.vm.network :forwarded_port, guest: 80, host: 80 config.vm.network :

    Vagrantのport forwardは普通に80 → 80に転送すればよいのでは · DQNEO日記
    kkeisuke
    kkeisuke 2017/12/20
  • 1000記事あるブログをMovableTypeからHugoへ乗り換えたのでやったことまとめ · DQNEO日記

    ブログをMovableTypeからHugoへついに乗り換えました。 調査期間やデザイン作業を含めるとトータルで1週間くらいかかったのでノウハウをここに記します。 MovableTypeと私 MTに始めて触れたのはMT3のときでした。インストールして触ってみたものの使いこなせず挫折。 その後MT4がリリースされたのを機に格的に使い出し、それまでBloggerで書いていた記事をMTにインポートして格的なMTライフがはじまりました。 当時MT4に関する情報がWeb上に全くなく、ぐぐってもMT3に関する情報ばかり出てきて苦労したのを覚えています。むやみに新技術に飛びつくと苦労するというのを痛感した出来事でした。 その後MT5,MTOSへと順調にアップグレードし、Apache+CGIだったのをPlack/PSGI化したり、プレビュー画面が遅かったので自作したりしながらブログを書き続けました。

    1000記事あるブログをMovableTypeからHugoへ乗り換えたのでやったことまとめ · DQNEO日記
    kkeisuke
    kkeisuke 2015/10/19
  • [JavaScript] 猿でもわかるクロージャ超入門 1 問題 - DQNEO起業日記

    問題です。 問題: 呼び出すたびに、1,2,3,...を返すような関数 f( )を定義せよ。 f(); // 1 f(); // 2 f(); // 3 この問題、解けますでしょうか? 普通の関数では、できないと思います。 しかし「クロージャ」というのを使えば、このようなことができます。 クロージャって何だ? 「クロージャ」という言葉を、プログラムのやサイトで目にすることがありますよね。 私が最初に見たのは続・初めてのPerl 改訂版(アルパカ)でした。 まったく理解できませんでした。 その後、404 Blog not foundやnaoyaさんのブログなどで「クロージャ」という単語を目にしました。 やはり、まったく分かりませんでした。 とどめの一撃はWikipediaの解説記事。 クロージャ (クロージャー、Closure) は、プログラミング言語において引数以外の変数を実行時の環境

    [JavaScript] 猿でもわかるクロージャ超入門 1 問題 - DQNEO起業日記
    kkeisuke
    kkeisuke 2015/07/17
  • PHP5.6からPHP7にアップグレードして実際にはまった点9個 · DQNEO日記

    仕事で使っているPHPアプリケーションをPHP7 beta1で動かしてみたらそのままでは動きませんでした。 私が実際にはまった点を紹介します。 なお、PHP7の変更点についてはhnwさんの記事に詳しく網羅されているのでご一読ください。 PHP7で変わること - hnwの日記 Apacheのモジュール名が変わっていた ApacheにPHPを組み込むためのモジュール(俗にいうmod_php)のモジュール名・ファイル名が変更になっていました。 LoadModule php5_module modules/libphp5.so ↓ LoadModule php7_module modules/libphp7.so memcache extensionがインストールできない PHPからMemcachedを使うためのExtensionには2つあります。 memcache memcached memca

    PHP5.6からPHP7にアップグレードして実際にはまった点9個 · DQNEO日記
    kkeisuke
    kkeisuke 2015/07/16
  • cdせずに任意のgitレポジトリを操作する-Cオプションの紹介 · DQNEO日記

    例えば、git pullとかするときはcdしてからgit pullする人が多いと思います。 たとえばrbenvをアップデートしたいとき、 $ cd ~/.rbenv $ git pull $ cd ~/.rbenv/plugins/ruby-build $ git pull なんてしますよね。 でもいちいち cd するの面倒くさいと思いませんか? 実はgitには -C オプションというのがあって、これを使うと cd せずにレポジトリの場所を指定することができます。 git -C <レポジトリの場所> サブコマンド という風に使います。 なので、さっきの rbenvを更新する例はこのように書けます。 $ git -C ~/.rbenv pull $ git -C ~/.rbenv/plugins/ruby-build pull シェルスクリプとかcrontabから git を実行するときは大

    kkeisuke
    kkeisuke 2014/10/19
  • [PHP] getimagesizefromstringという関数が便利な件 · DQNEO日記

    getimagesizefromstring という関数が、PHP5.4から追加されていたので紹介します。 http://php.net/manual/ja/function.getimagesizefromstring.php getimagesizeにはメモリ上の画像を渡せない PHPにはもともとgetimagesizeという関数があって、画像ファイルのサイズやメタ情報をお手軽に取得することができました。 list($width, $height, $type, $attr) = getimagesize("/path/to/image.jpg"); ただこの関数には1個残念なところがあって、変数に格納したメモリ上の画像(バイナリ文字列)を引数として渡すことができないのです。 私はよくAmazonS3などから取得したメモリ上の画像を処理することがあるのですが、getimagesizeに

    kkeisuke
    kkeisuke 2014/08/31
  • CentOS6.4+PHP5.5+Apache環境を一撃で構築するVagrantfileを公開します · DQNEO日記

    https://github.com/DQNEO/vagrant-php55-apache やっていることは、下記記事の手順をVagrantfile化しただけです。 (PHP5.5はremiレポジトリからインストール) 3分でCentOS6にPHP5.5とApacheをインストールする方法 上記Vagrantfileを使う利点は、 コンパイルが一切走らないのでインストールがすぐ終わる Chefを使ってないので仕組みが単純。(カスタマイズも簡単。setup.shをいじるだけです。) PHPを自前ビルドしたい/php-fpmを使いたい人は phpenv + php-build + nginx + php-fpmで動かしたい人は下記のVagrantfileを使うとよいでしょう。 phpenv + php-build 環境を Vagrant で構築する - Shin x blog

    CentOS6.4+PHP5.5+Apache環境を一撃で構築するVagrantfileを公開します · DQNEO日記
    kkeisuke
    kkeisuke 2014/02/13
  • 3分でCentOS6にPHP5.5とApacheをインストールする方法 · DQNEO日記

    まっさらなCentOS6に、PHP5.5とApacheをインストールする方法を紹介します。 意外と簡単なのでやってみましょう。 # epelとremiレポジトリを追加 sudo rpm -Uvh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm # php5.5をインストール(Apacheも芋づる式についてくる) sudo yum install --enablerepo=remi-php55 php php-mbstring # Apacheを起動 sudo service httpd start # 動作確認のためにinfo.php

    3分でCentOS6にPHP5.5とApacheをインストールする方法 · DQNEO日記
    kkeisuke
    kkeisuke 2014/02/02
  • ソースコード20万行の大規模サイトのPHPを5.1から5.4に上げるためにやったことまとめ · DQNEO日記

    所要期間 着手しはじめたのが2010年12月ごろ、完了したのが2013年9月だったので何と3年近くかかったことになります。 長引いた原因は、日々の機能追加や運用をしながら孤独に片手間で細々とやってたからです。(単純に人手不足とも言う) また、PHPバージョンアップと同時にCentOSサーバを5から6にあげることにしたのでサーバ再構築のための工数も含まれています。 後半は仕事仲間が増えてその人が専業でバージョンアップ作業をやってくれたのでだいぶ楽できました。 それと専任のテスターさんたちにも参加していただいたので番で大きなトラブルなく完了することができました。 感謝感謝です。 サーバ入れ替え作業が終わってPHP5.1の入った古いサーバを削除したときの、まさに「技術的負債」を返済し終わった瞬間の、あのスッキリ感、もう言葉にはできません。 終わってみてこの件に関するRedmineのチケットを数

    ソースコード20万行の大規模サイトのPHPを5.1から5.4に上げるためにやったことまとめ · DQNEO日記
    kkeisuke
    kkeisuke 2013/11/19
  • git diffで、異なるブランチの異なるファイルを比較する方法 · DQNEO日記

    "ブランチ名:ファイルパス名" という表記を使えば簡単です。 例:br1ブランチのfoo/bar.tx と br2ブランチのhoge/fuga.txtを比較したい git diff br1:foo/bar.txt br2:hoge/fuga.txt ちなみに異なるブランチ間の同じファイルを比較する場合は、 git diff br1 br2 foo/bar.txt のように書けます。

    git diffで、異なるブランチの異なるファイルを比較する方法 · DQNEO日記
    kkeisuke
    kkeisuke 2013/08/09
  • 仕事で使ってる巨大SVNレポジトリをGithubに移管するためにやったことまとめ · DQNEO日記

    動機 Subversionで困ってない ぶっちゃけSubversionで全然困っていませんでした。 コードレビューはちゃんとやっていたし、マージ・ブランチングも自作シェルスクリプトのおかげてスムーズにやれていました。 よく「Gitはマージが賢い、ブランチ作成が一瞬でできる」とかいわれますが、Subversionだってちゃんと使えばコンフリクトなんかめったに起きないし、ブランチ管理・マージだって全然めんどくさくない。 特にver1.7からはサーバもクライアントも大幅に高速化されたし、.svnディレクトリが.gitみたいに1個になったし、rebaseみたいなことだってできる。(sync merge & reintegrate) ただ、世の中が一斉にGitにシフトしている中でいつまでもSubversionを使っててよいのかという不安がありました。 また、月から金までSubversionにどっぷり

    kkeisuke
    kkeisuke 2012/10/21
  • Git超入門 - 猿でもできるGit rebase · DQNEO日記

    むちゃくちゃわかりやすい例を考えてみた 今あなたは、羊を数えるプロジェクトをGitで開始しました。 羊を1匹数えるごとに1コミットして、3コミットまで終わりました。 ひつじが1ぴき (←1コミット目) ひつじが2ひき (←2コミット目) ひつじが3ひき (←3コミット目) masterブランチ歴史 (左から右に進みます) 1ぴき 2ひき 3ひき ○ - ○ - ○ ワイルドプログラマ、wildブランチを作る ここで突然ワイルドプログラマのスギちゃんが登場します。 スギちゃんは、masterブランチをもとにwildブランチを作成して、そこで1コミットずつ発言をワイルドに変えてしまいました。 ひつじが1ぴきだぜぃ ひつじが2ひきだぜぃ ひつじが3ひきだぜぃ wildブランチ歴史 (左から右に進みます) 1ぴき 2ひき 3ひき 1ワイルド 2ワイルド 3ワイルド ○ - ○ - ○ -

    Git超入門 - 猿でもできるGit rebase · DQNEO日記
    kkeisuke
    kkeisuke 2012/10/16
  • jQueryオブジェクトの裏側をのぞいてみよう! · DQNEO日記

    jQueryオブジェクトとは何か? 最初に答えを言います。 jQueryオブジェクとは、jQuery.fn.jQuery.initクラスのインスタンスである 下記の式を評価してみればわかります。 var obj = $('div'); alert(obj instanceof jQuery.fn.init); // => true Google Chrome Developper Toolsで変数を見てみると、確かにそのように表示されます。 次に、jQueryのソースコードを見てみましょう。 冒頭にこのように書かれています。 var jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context, rootjQuery ); }, (ここでrootjQueryとは$(document

    jQueryオブジェクトの裏側をのぞいてみよう! · DQNEO日記
    kkeisuke
    kkeisuke 2012/07/16
  • jQueryのeachの仕組みを徹底的にわかりやすく解説してみた。 · DQNEO日記

    eachのキホン:要素を1個ずつ処理する まずおさらい。 このようなHTMLがあるとします。 <ul> <li>foo</li> <li>bar</li> </ul> eachを使うと、要素1個ずつに対して順繰りに処理を行うことができます。 <script> $(function(){ $('li').each(function(){ alert( $(this).text() ); // 'foo', 'bar'と表示 }); }); </script> これがキホンです。 変形してみる 上のeach式は、下のように変形できます。 (一番外側のブロック$(function(){....})は省略します) $.each( $('li'), function(){ alert($(this).text()); }); さらに変形してみます。 グローバル変数 "$" はグローバル変数 "jQu

    jQueryのeachの仕組みを徹底的にわかりやすく解説してみた。 · DQNEO日記
    kkeisuke
    kkeisuke 2012/05/28
  • [HTML5]世界一インストールが簡単なWikiをリリースしました。 #jswikimini - DQNEO起業日記

    IE6,7,8,9, Firefox, Google Chrome, iPhone, iPadで動く!(たぶんAndroidも) このシステムは非常に奇妙なアーキテクチャで、いろんなプラットフォームで動きます。 プラットフォームごとに動作モデルが異なります。(ここが奇妙な点です。) IE6,7,8,9で動かす場合 PCローカルにHTMLファイルをダウンロードして、それをIEで開いてください。 (セキュリティレベルを下げる必要があるかもしれません。自己責任でお願いします。) IEでの動作モデルは前作 JSWikiMini と同じです。 データはテキストファイルとしてPC内に保存されます。 USBメモリや共有フォルダに置いて使うこともできます。 (逆に、Webサーバ上に置いた場合は使えません) windows環境では、一種のネイティブアプリとして振る舞います。 この仕組みはActiveXObj

    kkeisuke
    kkeisuke 2012/05/14
    localStorage
  • [JavaScript] 猿でもわかるクロージャ超入門 まとめ - DQNEO起業日記

    クロージャとは クロージャは、言葉で説明するのが大変難しい概念です。 あなたは、自転車の乗り方を、口だけで説明できるでしょうか? あなたは、螺旋(らせん)の形を、言葉だけで説明できるでしょうか? ずばり、できないでしょう。 しかし、自転車に乗ることはできますし、針金で螺旋の形を作ることはできるでしょう。 「クロージャ」もこれと同じです。 だから、Wikipediaのこんな解説を見ても落ち込まないでください。 クロージャ (クロージャー、Closure) は、プログラミング言語において引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決する関数のことである。 理解できないですよね? 私もそうでした。 クロージャを既に知っている人にしか、この文章は理解できないでしょう。 クロージャを作るのは難しくない しかし、説明するのは難しくても、作るのは意外と簡単。それが

    kkeisuke
    kkeisuke 2012/02/28
  • 1