サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
satake7.hatenadiary.org
ruby-debugで自分がよく使うコマンド(しかもオプションなし)だけの抜粋です。 p 変数(式) 変数(式)を表示 pp 変数(式) pより少し見やすい形式で表示 l 次のページのソースコード表示 l- 前のページのソースコード表示 l= いまデバッグしている周辺のソースコード表示 n ステップオーバー s ステップイン c 続きを実行 irb irbの起動 q デバッグ終了(WEBサーバも終了) exit qと同じ info args 渡された引数一覧 info global_variables グローバル変数一覧 info instance_variables インスタンス変数一覧 info locals
設定ファイル(/etc/postfix/main.cf)の変更 postfixの設定ファイル(/etc/postfix/main.cf)を必要最小限変更します。 smtpd_banner = $myhostname ESMTP ← 自分がpostfixだということを隠蔽 biff = no append_dot_mydomain = no delay_warning_time = 4h ← 4時間以内に送れなかったら送信者へ通知 # TLS parameters ← 今回は外からMailを送らないので暗号化はなし #smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem #smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key #smtpd_use_tls=yes #smt
なにが悪くてそうなっているかわからないんだけど、一応解決したので対処方法だけ書いておく。 setcookie('wp-postpass_'.COOKIEHASH,$_POST['post_password'],time()+864000,COOKIEPATH); setcookie('wp-postpass_'.COOKIEHASH,$_POST['post_password'],time()+864000,COOKIEPATH,COOKIE_DOMAIN); wp-pass.php は本来上の行だけなんだけど、これだとIE8ではクッキーを上書きしてくれなかった。(クッキーがないときの書き込みはOK) プライバシー設定なんかはもちろん大丈夫で、Firefox、Chromeではこういう問題は起きないんだけど、なぜかIEだけ。ちなみに2行にしてるのは、下の行だけだと今度は Firefox、Ch
コントローラとビューで同じメソッドを使いたいことがわりとあります。Validationとか文字列変換とか。そういうとき、コントローラ部(application.rb)に置くか、ヘルパ部(application_helper.rb)に置くか悩むところですが、メソッド自体はたぶん軽量なので(決め付け)、ヘルパに置くことにしています。 呼び出し方 application_helper.rbに置いてあるので、ビューで使う分には何の問題もありませんが、コントローラから使おうとすると、『NoMethodError』になってしまいます。 class SessionsController < ApplicationController include ApplicationHelper def is_another_ipaddress? if is_right_ipaddress? # ← これがヘルパの
クラスメソッドとインスタンスメソッドがわかっているようで、いつの間にかあやふやになってしまうので後で迷わないように整理しておく。 インスタンスメソッド class User < ActiveRecord::Base def not_using_openid? identity_url.blank? end end User.new.not_using_openid? # => OK User.not_using_openid? # => NG インスタンス(User.new)を作ってからでないと使えないメソッド。デフォルトはこっち。インスタンスで使うので、当然のことながら、このメソッドの中にクラスメソッドを入れてはならない。 class User < ActiveRecord::Base def find_ip(id) find(:first, :select=>"ip", :condit
文字列はいいけど、画像にリンクを張るのってどうやるんだっけと思ったのでメモ。 link_to と image_tag そのまんまでした。 <%= link_to image_tag('/images/newreg.png', { :border => '0', :alt => '新規登録'}), new_user_path %> link_toに image_tagを渡すだけ。「:border => '0'」にしているのは、リンクの枠が出るのが嫌だから。 書くほどのこともないけど実際忘れていたので、次また忘れている可能性が高いからメモ。
WordPressにはトップページを固定ページにする機能があって、いわゆるブログっぽくない見た目に簡単にできますよということなんですが、いざやってみると思わぬところではまってしまったのでメモっておきます。 やりたいこと http://example.comでアクセスすると「about」のページが出る メニューの「home」を選ぶと「最近の投稿」一覧が出る こういうことがやりたかっただけなんですが、1は確かに簡単にできました。この設定をするだけです。 設定 >> 表示設定 >> トップページの表示 >> 固定ページ (以下を選択) トップページ: - 選択 - about 投稿ページ: - 選択 - なし 2の「最近の投稿」一覧を出すのが難しいです。テーマのデフォルトで表示されている「Blog」は「http://example.com」へのリンクになっていて、これで飛ぶと「about」のペ
しばらくUbuntuを触ってなくて、「Apache、大丈夫かなぁ?」と思うことってありますよね、ありますよ、ハイ。そういうとき、うる覚えの頭で「Apacheのログって確か /var/log だったよね」と「la /var/log」(alias la='ls -alg --color=auto')なんてやると、/var/log/apache2 なんかがあるもんだから、「そうだ、そうだ、/var/log/apache2/access.log と error.log を見ればいいんだ」なんて思いませんか? 本題 で、こうやってみるわけです。 xam:~$ tail /var/log/apache2/access.log xam:~$ tail /var/log/apache2/error.log [Sun Jun 01 06:25:03 2008] [notice] Apache/2.2.4 (
認証系のソースを読んでいると『options.reverse_merge! :title => ip_addr』というのが出てきて、こんなの Rubyにあったっけと思って調べたら、やっぱ Rubyにはなくて ActiveSupportのクラス拡張でした。せっかく調べたのでまとめ。 Hash#reverse_merge, Hash#reverse_merge! Hash#merge(こちらは Rubyに元々あるメソッド)の逆。mergeはキーが重複する場合、値を置き換えるが、reverse_mergeはキーが重複する場合、値を置き換えない。 用途としてこれは便利だとパッと思いつくものはないんだけど、強いてあげれば、初期値のセット(2回目以降の値はセットしない)とか、デフォルト値のセット(値を書き換えない)くらいかな。 options = { :a => 1, :b => 2, :c => 3
Railsで、少し古いユーザ認証プラグイン(Restful Authentication)を使っていて、ブラウザが IEか Opera、WebTVで、『before_filter login_required』に引っかかったときのこと。超限定的な話題。 状況 例えば、Usersコントローラの showにアクセスがある場合、事前にログインしていなければログインページに飛ばすということはよくあることです。 class UsersController < ApplicationController before_filter :login_required, :only => [:show, :edit, :update] 『login_required』はどこで定義されているかというと、ここ(↓)です。少し古いソースです。 def login_required authorized? || a
さて、基本的な『WordPress MU』のインストールは終わったわけですが、これだとマルチユーザではあるもののマルチドメインになっているわけではありません。次はマルチドメインに挑戦です。 ※ 結論を先に書いておきますが、プラグインを入れる方法ではどうしてもうまくいかず(たぶん Apacheのバーチャルドメイン絡みか、プラグインの設定の問題だと思いますが)、結局 DNSの URL Frame転送と Apache Redirectを使用して、ドメインをリダイレクトさせる方法に逃げてしまいました。 Multi-Site Managerプラグイン 『WordPress MU』をマルチドメイン対応にするためのプラグインがあるということで、Maintain All Your WordPress Websites From A Central Location - WPMU DEVから『Multi-S
郵便番号を入力して『住所検索』ボタンを押したら Ajaxでサーバに問合せにいって、コントローラで郵便番号辞書から住所を引っ張って返すというのを作ろうと思って、「待てよ、そういうのって巷に溢れてるんじゃないか?」と思ってググったら、すごくいい JavaScriptのライブラリが見つかったので、これを使わせていただくことにしました。 AjaxZip2のインストール こちら(→ AjaxZip 2.0 - Ajax郵便番号→住所自動入力フォーム(CGI不要版) )がそのライブラリです。onKeyUpイベントに仕込むようになっているので、『住所検索』ボタンみたいなものは必要ありません。 インストールといっても特別難しいことはなにもなく、一括アーカイブファイルをダウンロードして、適当に展開するだけですが、一応、Railsに組み込む場合の構成を書いておきます。(この通りにすべきというわけではありません
設定ファイル(named.conf.options) 設定ファイルをこのようにします。 $ sudo nano /etc/bind/named.conf.options acl localnet { 192.168.1.0/24; // 内部ネットワーク 127.0.0.1; // ループバック }; options { directory "/var/cache/bind"; version "DNS Server"; // Versionを隠す allow-query { localnet; }; // DNSクエリを許可する allow-recursion { localnet; }; // 再帰検索(DNSキャッシュ)を許可する allow-transfer { none; }; // ゾーン転送を許可する forward first; // 自身のzone、キャッシュに無いものは
インストール(続き) dovecotをインストールします。『sudo apt-get dovecot』はそんなパッケージねぇよといわれたので、ググってこんなふうにしてみました。 $ sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d The following packages were automatically installed and are no longer required: rake rdoc libredcloth-ruby1.8 liberb-ruby libsqlite3-ruby1.8 Use 'apt-get autoremove' to remove them. 以下のパッケージが新たにインストールされます: dovecot-common dovecot-imapd dovecot-po
すでに Subversion は導入済みだったんだけど、SSL でログインして使うやり方だったので、これを Apache の WEBDAV として使う(http://でアクセスできる)ようにします。 インストール ググると dav_svn.conf という設定ファイルに svn系の設定を書くらしいのですが、そんなファイルはどこを探してもないため、当初のインストールが Subversion 単独だった模様。入れ直してみます。 $ s apt-get install subversion subversion-tools libapache2-svn subversion はすでに最新バージョンです。 以下のパッケージが新たにインストールされます: libapache2-svn subversion-tools Enabling dav as a dependency Module dav i
サーバ運用上、重要そうなログを確認してみる。 主なログ /var/log/auth.log 認証に関するログ /var/log/syslog 認証を除くほぼすべてのログ /var/log/daemon.log 各種デーモンが出力するログ /var/log/messages 認証、メール、cron、デーモンを除くほぼすべてのログ /var/log/mail.log メールに関するログ /var/log/kern.log カーネルが出力するログ /var/log/user.log ユーザープロセスが出力するログ auth.log $ tail /var/log/auth.log CRON[6581]: pam_unix(cron:session): session opened for user root by (uid=0) CRON[6581]: pam_unix(cron:session
常時起動している Rubyスクリプトで「MySQL server has gone away」というエラーが出てビビリました。ActiveRecord使ってるからいけないのかとか、自分の書き方が悪くて(Rubyが)メモリリークしてるんじゃないかとか、簡単に解決しそうにない方向に想像がいってしまったのですが、ググればすぐ解決方法が見つかりました。「案ずるより産むが易し」、「心配するくらいならググれ」ですね。 どういうエラーか MySQLのリファレンスマニュアルによると、「MySQLサーバはデフォルト設定では、何も起きない状態が 8 時間続くと接続をクローズします」だそうです。接続がクローズされた状態で MySQLサーバにアクセスにいくと「MySQL server has gone away」となるわけです。 どうするか 8時間、誰もアクセスしないということ自体、サイトの運営としてどうなの?
Extended-Bort をベースにした Railsで開発しているので、いままで使っていた prototype.jsベースのカレンダーが使えず(使えないわけじゃないんですが、そのためだけに jQueryのほかに prototype.jsも入れるなんてどうよ、ということです)、jQueryベースのカレンダーを探していたところ、よさげなものがあったので簡単に使うための設定を書いておきます。 Date Picker DatePicker - jQuery plugin がそうです。このページの Downloadから『datepicker.zip (50 kb)』を落っことしてきます。Example用のファイルも入っていますが、最低限必要なファイルはこれだけです。言わずもがなのことですが、cssは RAILS_ROOT/public/stylesheetsに、jsは javascriptsに、i
ActiveRecordで予約されたメソッド名をテーブルのフィールド名として使うとエラーになるので注意しましょう。 「SELECT * FROM」を使わないで、「SELECT attributes as attr FROM」というように別名を定義して使えばいいらしいですが、最初から予約メソッド名は使わないほうが吉なので「使ってはいけないカラム(フィールド)名一覧」を自分用メモとして貼っておきます。 ActiveRecordで使ってはいけないカラム(フィールド)名一覧 == === =~ [] []= __id__ __send__ ` A acts_like? after_create after_destroy after_save after_update after_validation after_validation_on_create after_validation_on_u
Rails2.2.2で、こんな(↓)エラーが出たとき、どこをチェックすればいいかのメモ。 translation missing: ja, activerecord, errors, template, header translation missing: ja, activerecord, errors, template, body config/locales/ja.yml 『<%= f.error_messages %>』あたりで I18nが出すエラーなので、ja.ymlをチェックする。 このあたり(↓)がダブっている可能性大。 activerecord: errors: あと、ymlではタブはダメ。スペースでインデントすること。(NetBeansでインデントが揃わないことに腹を立てて、タブのスペース置き換えを止めてしまったりするとこういう目にあう) 参考 http://d.ha
「会員専用のページとか投稿はできないの?」と言われ、「.htaccess置いてベーシック認証かければいいんじゃね?」と答えたんですが、ちらっとググったところによるとパーマリンクの管理で WordPress自体が .htaccessを書き換えていると。 そうすると、ページのディレクトリ構造に依存するような .htaccessを置いておくのはどうなの、「RewriteEngine On」絡みで嫌らしいことがあっても平気なの、ということが心配になって、「個別ページじゃなくて、新しく会員専用のブログを作って、ブログ全体にパスワードかけるというのでどうか」という話になりました。 それ用プラグイン こちら(→ http://blog.taragana.com/index.php/archive/angsumans-authenticated-wordpress-plugin-password-prot
ごくごく簡単な本当に最小限の nanoの使い方です。 キー操作 ・Ctrl+O ファイルSAVE ・Ctrl+X 終了 ・Ctrl+^ マーク(選択開始) ・Ctrl+K カット(選択終了)。Ctrl+^で選択してCtrl+Kでカット。コピーはわからず。 ・Ctrl+U ペースト ・Ctrl+W 検索。次を検索はわからず。 ・Ctrl+D DEL(カーソルの文字を削除)。DELキーはBSキーになる。 エラーの回避法 sudoをつけず、普通にnanoとやるとこんなエラーが出るようになった。状況から考えると、『sudo nano』でファイルを開いて、一番最初にCtrl+Wで検索をやった時点で所有者rootで検索履歴ファイル(.nano_history)ができてしまい、立ち上がり時にこれを読み込もうとしてパーミッションがないって言ってるようだ。 $ nano Error reading /hom
こういうふうにテーブルの行の背景色を変えたいときに使えるヘルパーが「cycle」です。 もともとは「<% i += 1 %>」、「<%= (i%2 == 0) ? 'even' : 'odd' %>」としていたので、あまり手数は変わらないのですが、偶数奇数の判定にわざわざループ変数持ち出すのもねぇと思っていたので。こちらの方がスマートです。 <table id="table"> <% for item in @items %> <tr class="<%= cycle('even', 'odd') -%>">こうしておいて、cssをこんなふう(↓)に書くと、行の背景が水色と白の交互になります。 #table tr.even td { BACKGROUND: #edf3fe; /* 偶数行:薄い水色 */ } #table tr.odd td { BACKGROUND: #FFFFFF; /
特に強い動機があったわけじゃないんですが、Extended-Bort をベースにした Railsで開発を始めてしまったので、必然的に prototype.js じゃなくて jQuery.jsに移行することになりました。 で、prototype.js環境のものをポツポツと移行していったんですが、link_to_remoteで詰まってしまったので、その対処法をメモしておきます。 jRails jQueryで Ajax関係(link_to_remoteなど)を扱うためには、http://ennerchi.com/projects/jrailsが必要です。 Extended-Bort には http://ennerchi.com/projects/jrails が含まれていないので、まずこれを RAILS_ROOTにインストールします。 ruby script/plugin install htt
ことの起こりは Ubuntu7.10に GNU Mailmanをインストールしようとしたときのことでした。 ここ(→ GNU Mailman - インストールマニュアル )はもちろんのこと、参考にさせていただいたここ(→ http://infolinux.jp/?p=15 )でもソースからインストールしているので、なんの疑いもなく最新版ソースをとってきて、make installしたわけですが、途中、「pthon-develがないよ。pythonをソースからコンパイルしなおすと直るかもよ」(意訳)というメッセージが出たわけです。 じゃあ、そうするかと、pythonの最新版をとってきて自分環境でコンパイルして、/usr/binの pythonをリネームしてシンボリックリンクを張り直してみたんですが、事態は全然変わらず。 「これはきっと前の python環境が残ってて悪さしてるんだな。じゃあ、
設定ファイル(/etc/dovecot/dovecot.conf)の変更 dovecotの設定ファイル(/etc/dovecot/dovecot.conf)を必要最小限変更します。 $ sudo nano /etc/dovecot/dovecot.conf login_greeting = POP3 ready. ← dovecotの隠蔽 protocols = imap imaps pop3 pop3s ← imapかpop3を使う mail_location = maildir:~/Maildir ← Maildir形式のメールボックス disable_plaintext_auth = no ← パスワードを平文で使うため この『disable_plaintext_auth = no』がないと、メールクライアントで接続したとき、dovecotに『NO Plaintext authent
2009年はエコの年なので(いま決めました)、もったいないを重点的に追求していきます。まず手始めに、DB(MySQL)で安直に int(11)を使っているケースを弾劾します。 Rails2.1.0の場合 class CreateTests < ActiveRecord::Migration def self.up create_table "tests", :force => true do |t| t.integer :int0, :limit => 0 t.integer :int3, :limit => 3 t.integer :int4, :limit => 4 t.integer :int8, :limit => 8 t.integer :int9, :limit => 9 t.integer :int20, :limit => 20 t.integer :int21, :lim
Rails(2.2.2)が11/21にリリースされたのはわかっていますし、インストールも終わっているんですが、Rails(2.1.0)の話です。 timezone config/environment.rbというファイルに config.time_zoneという指定があって、これを'Tokyo'にすると幸せが来そうな感じがするじゃないですか。しませんか? config.time_zone = 'Tokyo' config/environment.rb で、やってみたわけです。そうすると確かに日本のローカルタイムになって、OK、OKというわけなんですが、MySQLの DBの中を見てあらびっくり。DBに書かれている DateTimeは UTCのままです。ググってみると、これだけじゃ足りないと。 config.time_zone = 'Tokyo' config.active_record.de
AdSenseやアフィリエイトで多少でも収益をというのであれば、はてなダイアリーじゃなくて FC2ブログなり Livedoorブログでやればいいんでしょうが、「はてな」には「はてな」のいいところがたくさんあって、書きなれるとこれはこれで別のところでと簡単に乗り換えられない魅力があるわけです。 そこで、じゃあ、はてなダイアリーに、できればうるさくないような AdSenseを付けたいなぁということでやってみます。 準備 AdSenseを付けるにも自分のAdSenseがないと話にならないので、Google AdSense - Make Money Online through Website Monetization で Googleに申し込みをしておきます。この辺は本編じゃないので省略。はてなでちゃんと日記を書いていればすんなりとれるはずです。 次に、自分の AdSenseを付けるために、はて
次のページ
このページを最初にブックマークしてみませんか?
『satake7’s memo』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く