• Ubuntu で KVM 今回は設定方法ではなく、雑感です。
    Ubuntu で KVM 今回は設定方法ではなく、雑感です。
    No Comments on Ubuntu で KVM 今回は設定方法ではなく、雑感です。

    久しぶりにたたき起こしたデスクトップPC。 WindowsとUbuntuのDualブート(厳密には5つぐらいブート)環境。 Ubuntuの環境(12.04)はあっという間に、Updateができ、ついでに13.10をクリーンインストールしたので、ひとまず、環境は出来た。で、せっかくなのでWindowsの方も使えるようにしておこうと思いました。 こんなにWindowsを触ったのは1年以上ぶり。さすがメジャーなWindows。 これだけ放置しておくとセキュリティアップデートの量が半端無く、おまけにアップデートにやたら時間がかかります。正直嫌気が差しました。 とりあえず、Railsを開発できる環境を構築して、まぁこれでいいかと。 ここ最近はSubversionをやめ、Gitに乗り換えたせいもあるし、そもそもRailsはコマンドをよく叩くし、Windowsのコマンドプロンプトはきっついなぁ・・・などなど強く思いましたね。 とはいえ、Windowsを使わなきゃいけない局面もあるわけで、どうしようかと考えた挙句、KVMという結論にたどり着きました。 CentOSではKVMを試したことはあったのですが、Ubuntuで利用するのは初めて。ググって、何個かインストールページを眺めて、KVMインストール。 CentOS時代に作ってあったWindows7イメージがあったので、これを起動してみる。案の定、このイメージも1年以上放置してあったもの。またもやセキュリティアップデート地獄。おまけに、なんだかKVM上のWindowsがめっちゃ重い。 あれこれチューニング方法を調べ、ホストOS側のネットワークの設定をいじったり、WindowsがKVM上で利用する Disk DriverとNic Driverを VirtIOのものに変更してみたりしました。が・・・・、あまり改善される雰囲気はなし。 一段落したところで、別の空HDDイメージをUbuntuで作成し、そこにWindows7をクリーンインストールしてみた。不思議なんだが、さっきより2段階か3段階(感覚的でごめんなさい)速い。 ドライバーも同じだし、イメージもRawイメージで一緒。なのに速度が違う。 なんでなんでしょう??? よくわかりません。 まぁ、結果的にはこれでよかったのかもしれないが、なんか違うよね。 仮想化のメリットの1つは、過去に作成した OSイメージをクローンしたりして、簡単に環境を移し替えたり出来ることである。 が、今回は過去に作成したイメージを、別のホストOS(今回はUbuntu12.04.4)上で動かしたら、遅くなる。 解決策あったのかなぁ・・・、まぁ そこまで研究するほどのことでもないから、放置するけれど、誰か知っていたら教えてください。

    Read more
  • CSSちょっとメモ 〜 Pタグ内で折り返さず、省略表示(…表示)
    CSSちょっとメモ 〜 Pタグ内で折り返さず、省略表示(…表示)
    No Comments on CSSちょっとメモ 〜 Pタグ内で折り返さず、省略表示(…表示)

    ちょっとしたきっかけで、CSSを真面目に再勉強中。 自分でデザインを考えるのが面倒だったので、とあるサイトを目で見て 真似してみようかと・・・ そこには、メール一覧のようなものが表示されるのだが、大雑把に言うとDivタグ2つが float:left で並んでいて、左側のDivタグ内にPタグが存在する。今回はこのPタグに入る文字列が長すぎて、勝手に折り返されてしまう現象を回避する方法をメモっておく。 [css mark=”6,7,8,9,10″] div.icon p{ font-size: 13px; color: #333333; width: 170px; margin: 0px 10px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; -webkit-text-overflow: ellipsis; /* Safari */ -o-text-overflow: ellipsis; /* Opera */ } [/css] 面倒なので成功した結果を画像として貼り付けておきます。

    Read more
  • CentOS6 にMozcを入れたい!迷子になったリポジトリ対策
    CentOS6 にMozcを入れたい!迷子になったリポジトリ対策
    1 Comment on CentOS6 にMozcを入れたい!迷子になったリポジトリ対策

    先日構築したCentOSにMozcをインストールしようとして、ググってみた。 どの記事もsawaさんという方が構築したリポジトリーを参照するようにして、インストール説明をしている。真似してみたが、sawaさんリポジトリーが行方不明。あれこれ調べるも、なかなか解決策が見つからなかったが、Vine6がMozcをデフォルトIMEにしたということで、そのRPMを拝借してみることに。 以下から、RPMをダウンロードして、rpm -ivh で、めでたくインストール完了! http://ftp.jaist.ac.jp/pub/Linux/Vine/Vine-6.0/x86_64/Vine/RPMS.main-dvd/ 以下の4つのRPMをダウンロード ibus-mozc-1.1.717.102-2vl6.x86_64.rpm mozc-1.1.717.102-2vl6.x86_64.rpm mozc-server-1.1.717.102-2vl6.x86_64.rpm mozc-utils-gui-1.1.717.102-2vl6.x86_64.rpm ※入れる順番メモっておくの忘れたので、以下ではすんなり入らないと思います。 出力されるメッセージに従って、適当にインストールしてみてください。 [bash] $ sudo rpm -ivh ibus-mozc-1.1.717.102-2vl6.x86_64.rpm $ sudo rpm -ivh mozc-1.1.717.102-2vl6.x86_64.rpm $ sudo rpm -ivh mozc-server-1.1.717.102-2vl6.x86_64.rpm $ sudo rpm -ivh mozc-utils-gui-1.1.717.102-2vl6.x86_64.rpm [/bash] 以上

    Read more
  • ieServer.Net用 IPアドレス更新スクリプト(python版)
    ieServer.Net用 IPアドレス更新スクリプト(python版)
    No Comments on ieServer.Net用 IPアドレス更新スクリプト(python版)

    このブログは ieServer.Net さんの無料ダイナミックDNSのドメインを利用して公開している。 ダイナミックDNSとは、固定IPアドレスを持っていない人が、自分のサーバーを独自ドメインっぽく公開する際に利用できる便利なサービスである。固定IPアドレスがないということは、自分が契約しているプロバイダーのルールに従って、一定期間ごとに自分のグローバルIPアドレスが変更される。ieServerさんにユーザー登録した際に、自身の好みのサブドメインを申請する。そして、現在のIPアドレスとそのサブドメインを関連付ける。申請したドメイン名をブラウザーに入力し、自サイトにアクセスすると、当然正しくトップページが表示される。しばらくはこれでOKなのだが、自分の契約しているプロバイダーが任意のタイミングであなたのグローバルIPアドレスを更新(変更)する。そうすると当然だが、申請したドメイン名で、自分のサーバーにアクセスできなくなる。 この問題を回避するために、一定期間ごとに、自分のグローバルIPアドレスをチェックし、IPアドレスの変更を検知したら、ieServer.Netへその変更を通知しなきゃならない。手動でやっても良いのだが、いつ変更されるかわからないグローバルIPアドレスの変更をチェックし続けるのは大変。なので、自分のIPアドレスを定期的に監視し、変更を検知したら、変更内容をieServer.Netへ自動通知するプログラムを作ってみました。 perlのスクリプトがネット上にあったんですが、IPアドレスの変更が長期間ない場合、一切ieServer.Netへ更新通知を行わないように見受けられたので、ちょっと改造してみようかなと。perlはしらないし、pythonも勉強時間5時間未満なんですが、どうせ書くなら pythonでと思い、作ってみましたので、公開します。良かったら使ってみてください。 以下のハイライトされている行を、ご自身の環境に合わせてみてください。 ダウンロードは こちらから ieserver-update.py うまく動かないぞ! 等々ありましたら、コメント欄に文句書いてください。よろしく。 ダウンロードしたファイルを/usr/local/bin/ieserver/ へコピーし、実行権限をつける。 [bash] $ sudo mkdir /usr/local/bin/ieserver $ sudo cp iesrver-update.py /usr/local/bin/ieserver $ sudo chmod 700 /usr/local/bin/ieserver/ieserver-update.py [/bash] cronに登録 [bash] $ sudo crontab -e [/bash] 登録内容 [diff] 5,15,25,35,45,55 * * * * /usr/local/bin/ieserver/ieserver-update.py [/diff] 更新スクリプト本体 [python mark=”1,19-22,28″] #!/usr/bin/python # coding: UTF-8 # ############################################################################# # ieServer.Net: 無料ダイナミックDNS(DDNS)サービス用 IPアドレス更新スクリプト # バージョン : 0.1 # 作成日時: 2014/01/21 # 更新日時: 2014/01/22 # 作者 : hiro # ############################################################################# import commands import os import codecs from datetime import datetime #以下の部分をご自身の環境に合わせて、調整してください MYPATH = “/usr/local/bin/ieserver/” #このpythonスクリプトの配置場所 SUBDOMAIN_NAME = “example” #サブドメイン名 DOMAIN_NAME = “dip.jp” #ドメイン名 PWD = “xxxxxxx” #パスワード #強制アップデート時間帯 #このスクリプトの実行間隔を1時間以下(0〜59分)に設定している場合は変更する必要はありません。 #1日に一度ぐらいは更新処理をかけておいたほうが良いので、ご自身がCronで実行する #時刻をセットしておいてください。(時間は二桁で記述してください。 2時なら 02 とする。) FORCE_UPDATE_HOUR = “02” #設定終わり(これ以下は変更する必要はありません) #Crontab 設定方法 # sudo crontab -e として、以下のように記述(10分間隔で実行) # 5,15,25,35,45,55 * * * * /usr/local/bin/ieserver/ieserver-update.py REMOTE_ADDR_CHK = “http://ieserver.net/ipcheck.shtml” DDNS_UPDATE = “http://ieserver.net/cgi-bin/dip.cgi” currIp = commands.getoutput(“wget -q -O – ” + REMOTE_ADDR_CHK) line = “none” if os.path.exists(MYPATH + “saveip.txt”) == True: f = open(MYPATH + “saveip.txt”,”r”) for line in f: dummy = line f.close hour = datetime.now().strftime(‘%H’) if (currIp != line) or hour == FORCE_UPDATE_HOUR: cmd = “wget -q -O – ‘” cmd += DDNS_UPDATE + “?username=” + SUBDOMAIN_NAME cmd += “&domain=” + DOMAIN_NAME cmd += “&password=” + PWD cmd += “&updatehost=1′” ret = commands.getoutput(cmd) #f2 = codecs.open(MYPATH + “return.html”,”w”,”eucjp”) #f2.write(ret.decode(“eucjp”)) #f2.close #222.222.222.222 に設定されています if (currIp + u” に設定されています”) in ret.decode(“eucjp”): f2 = open(MYPATH + “saveip.txt”,”w”) f2.write(currIp) f2.close f2 = open(MYPATH + “update.log”,”a”) line = datetime.now().strftime(‘%Y/%m/%d %H:%M:%S’) line += “\tIP Address を更新しました。[” + currIp + “]\n” f2.write(line) f2.close else: f2 = open(MYPATH + “update.log”,”a”) line = datetime.now().strftime(‘%Y/%m/%d %H:%M:%S’) line += “\tIP Address の更新に失敗しました。\n” f2.write(line) f2.close #else: # f2 = open(MYPATH + “not-update.log”,”a”) # line = datetime.now().strftime(‘%Y/%m/%d %H:%M:%S’) # line += “\tIP Address 更新を保留しました。[” + currIp + “]\n” # f2.write(line) # f2.close [/python]

    Read more
  • GitLabとRedmine連携 CentOS 6.5編
    GitLabとRedmine連携 CentOS 6.5編
    No Comments on GitLabとRedmine連携 CentOS 6.5編

    はじめに CentOS 6.5上に構築した GitLabのリポジトリとRedmineを連携する方法について説明します。 GitLab環境の構築については、前々記事を、Redmineのインストールについては前の記事を参照ください。 GitLabの設定変更 GitLabはデフォルトで /home/git/repositories/ フォルダ配下にリポジトリーを作成するようになっています。Redmineとの連携においてあれこれ試行錯誤しましたが、私の結論としては、/home/git 配下のファイルにはRedmineがアクセスできないようなので、GitLabのリポジトリーの配置場所を変え、両者の連携をはかってみました。 GitLab Shell の調整 [bash] # mkdir /var/gitlab # chown git:git /var/gitlab -R # su – git $ cd gitlab-shell $ nano config.yml [/bash] リポジトリーの位置を /var/gitlab とします。 [diff] # Repositories path # Give the canonicalized absolute pathname, # REPOS_PATH MUST NOT CONTAIN ANY SYMLINK!!! # Check twice that none of the components is a symlink, including “/home”. – repos_path: “/home/git/repositories” + repos_path: “/var/gitlab/repositories” [/diff] gitlab-shell再インストール [bash] $ ./bin/install [/bash] GitLabの調整 [bash] cd /home/git/gitlab nano config/gitlab.yml [/bash] [diff] # REPOS_PATH MUST NOT BE A SYMLINK!!! – repos_path: /home/git/repositories/ + repos_path: /var/gitlab/repositories/ hooks_path: /home/git/gitlab-shell/hooks/ [/diff] サービス再起動 [bash] service gitlab restart service httpd restart [/bash] GitLabリポジトリー追加 http://gitlab.myhost.jp へアクセスし、新規にプロジェクトを作成してください。 /var/gitlab/repositories 配下に正しくGitリポジトリーが出来ているか確認してみてください。 正しく作成されていれば、今後の作業の確認のために、このリポジトリに接続し、何らかのコミット作業を行います。 Redmineの設定 Redmineにログインし、対象のプロジェクトに移動します。 タブより、設定>>リポジトリを選択します。 左下に表示される 「新しいリポジトリ」をクリックし、リンクするリポジトリーの設定を行います。 以下のような感じで設定を行います。 では、プロジェクトのリポジトリタブに移動して、リポジトリーの参照が出来ているか確認してみましょう。 上記のような感じで、表示されていたら、GitLabとRedmineの連携は完了です。 もしうまく行かない場合は、redmineを実行するユーザに/var/gitlab/repositoriesへのアクセス権限を与えてみましょう。 [bash] # usermod -aG git apache [/bash] 上記を実行後、再度、確認してみてください。

    Read more
  • CentOS 6.5 にRedmineをインストール
    CentOS 6.5 にRedmineをインストール
    No Comments on CentOS 6.5 にRedmineをインストール

    はじめに CentOS 6.5に Redmineをインストールする方法について説明します。 最終目標は、既に作成済みのGitLabリポジトリーとの連携です。 この記事では、Redmineのインストールのみについて記載し、次の記事で、連携についての説明をしたいと思います。 GitLab環境の作成に興味がある方は、前の記事をご覧ください。 追記2(CentOS7) CentOS7 で redmineを導入する方法を公開しました。CentOS7でredmineをとお考えの方は、こちらへどうぞ。 Redmine用データベースの作成 [bash] # mysql -uroot -p > create database redmine default character set utf8; > grant all on redmine.* to ‘redmine’@’localhost’ identified by ‘xxxxxxxx’; > flush privileges; > exit; [/bash] ライブラリーのインストール [bash] # yum install ImageMagick ImageMagick-devel # yum install ipa-pgothic-fonts [/bash] Redmineのインストール 以下のURLにアクセスし、Redmineの最新版あたりをダウンロードください。 http://rubyforge.org/frs/?group_id=1850 [bash] # tar xvzf redmine-2.4.0.tar.gz # mv redmine-2.4.0 /var/lib/redmine # cd /var/lib/redmine # cp config/database.yml.example config/database.yml # nano config/database.yml [/bash] Mysqlへの接続パスワードを調整します。 [diff] production: adapter: mysql2 database: redmine host: localhost username: root – password: “” + password: “xxxxxxx” encoding: utf8 [/diff] 設定ファイル作成 [bash] # cp config/configuration.yml.example config/configuration.yml # nano config/configuration.yml [/bash] 以下の部分、お好きなフォントを指定ください。 [diff] – rmagick_font_path: + rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf [/diff] バンドルインストールとデータベース作成 [bash] # bundle install –without development test postgresql sqlite # bundle exec rake generate_secret_token # RAILS_ENV=production bundle exec rake db:migrate [/bash] Passengerインストール(既に導入済みであればよみ飛ばしてください) [bash] # gem install passenger # passenger-install-apache2-module # passenger-install-apache2-module –snippet > /etc/httpd/conf.d/passenger.conf [/bash] ApacheとPassenger連携を調整 [bash] # chown -R apache:apache /var/lib/redmine # ln -s /var/lib/redmine/public /var/www/html/redmine # echo “RailsBaseURI /redmine” >> /etc/httpd/conf.d/passenger.conf # service httpd restart [/bash] 動作確認 http://myhost.jp/redmine へアクセスすると、トップページが表示されます。 admin/admin でログイン出来ればOKです。 Redmine初期設定 Redmine本家のサイトによい記事がありますので、そちらを参照ください。 Redmineを使い始めるための初期設定 http://redmine.jp/tech_note/first-step/admin/ 以上

    Read more
  • CentOS 6.5にGitHubクローンであるGitLab(6.4.3)をインストール
    CentOS 6.5にGitHubクローンであるGitLab(6.4.3)をインストール
    No Comments on CentOS 6.5にGitHubクローンであるGitLab(6.4.3)をインストール

    はじめに Gitのソースコードをインターネット上で共有したいけれど、セキュリティもろもろの関係からインターネット上に置くのがためらわれる場合など、GitHubライクなweb管理機能のあるGitlabを利用することができます。他にもGitHubをクローンしたようなものもありますが、これが一番メジャーそうだったので、今回はCentos6にGitlab 6.4.3をインストールする方法をご紹介します。 追記 多くのアクセスありがとうございます。CentOSに加え、Debian系OSでのGitLabの導入方法も別記事にて追加しましたので、よろしければご参照ください。 debian/ubuntu/LMDE に GitLab 6.6.5をインストールし、nginxのサブフォルダで公開する 追記2(CentOS7) CentOS7 で GitLabを導入する方法を公開しました。CentOS7でGitLabをとお考えの方は、こちらへどうぞ。 仮定 ご自身のドメインを myhost.jp と仮定し、GitLabを gitlab.myhost.jp (バーチャルホスト)で運用するものとします。 Rubyをインストールする Gitlab自体がRailsプロジェクトなので、Rubyの環境が必要になります。インストールに関しては、あちこちに優秀な記事がありますので、そちらをご参照ください。 必要なRPMパッケージをFedoraプロジェクトより取得 [bash] # wget http://dl.fedoraproject.org/pub/epel/6/x86_64/libunwind-1.1-2.el6.x86_64.rpm # wget http://dl.fedoraproject.org/pub/epel/6/x86_64/libunwind-devel-1.1-2.el6.x86_64.rpm # wget http://dl.fedoraproject.org/pub/epel/6/x86_64/gperftools-libs-2.0-11.el6.3.x86_64.rpm # wget http://dl.fedoraproject.org/pub/epel/6/x86_64/redis-2.4.10-1.el6.x86_64.rpm [/bash] RPMインストール [bash] # rpm -ivh libunwind-1.1-2.el6.x86_64.rpm # rpm -ivh libunwind-devel-1.1-2.el6.x86_64.rpm # rpm -ivh gperftools-libs-2.0-11.el6.3.x86_64.rpm # rpm -ivh redis-2.4.10-1.el6.x86_64.rpm [/bash] 足りないライブラリをインストール [bash] # yum install icu4c libicu-devel libxml2 libxml2-devel libxslt libxslt-devel [/bash] REDIS起動、起動設定 [bash] # service redis start # chkconfig –level 35 redis on [/bash] gitlab インストールのために git ユーザー追加 [bash] # useradd git # su – git [/bash] Gitlab-shellのインストール [bash] $ git config –global user.name “GitLab” $ git config –global user.email “gitlab@localhost” $ git clone https://github.com/gitlabhq/gitlab-shell.git $ cd gitlab-shell/ $ git checkout -b 1.8.0 v1.8.0 $ cp config.yml.example config.yml $ nano config.yml [/bash] 以下のURL指定の部分を調整(gitlabをホストするURLを記述) [diff] – gitlab_url: “http://localhost/” ←コメントアウト + gitlab_url: “http://gitlab.myhost.jp/” [/diff] インストール実行 [bash] $ ./bin/install [/bash] gitlabインストール [bash] $ cd .. $ git clone https://github.com/gitlabhq/gitlabhq.git gitlab $ cd gitlab $ git checkout -b 6.4.3 v6.4.3 $ cp config/gitlab.yml.example config/gitlab.yml $ nano config/gitlab.yml [/bash] ホスト名設定(gitlabをホストするURLを記述) [diff] – host: localhost + host: gitlab.myhost.jp [/diff] Productionモードでのユーザ名、パスワードを設定 [bash] $ cp config/database.yml.mysql config/database.yml $ nano config/database.yml [/bash] [diff] # # PRODUCTION # production: adapter: mysql2 encoding: utf8 reconnect: false database: gitlabhq_production pool: 10 – username: git – password: “secure password” + username: root + password: “xxxxxxxxx” # host: localhost # socket: /tmp/mysql.sock [/diff] バンドルインストール(かなり長い時間を要します) [bash] $ bundle install –deployment –without development test postgres [/bash] 不足フォルダ作成 [bash] $ mkdir /home/git/gitlab/tmp/pids $ mkdir /home/git/gitlab/public/uploads [/bash] データベース作成 [bash] $ bundle exec rake db:create RAILS_ENV=production $ bundle exec rake gitlab:setup RAILS_ENV=production $ exit [/bash] 起動スクリプト作成、設定 [bash] # wget https://github.com/gitlabhq/gitlab-recipes/raw/master/init/sysvinit/centos/gitlab-only-sidekiq # cp gitlab-only-sidekiq /etc/init.d/gitlab # chmod 744 /etc/init.d/gitlab # chkconfig –add gitlab # chkconfig –level 35 gitlab on # service gitlab start [/bash] バーチャルホストの設定 [bash] # nano /etc/httpd/conf.d/virtual.conf [/bash] 設定内容 [bash] NameVirtualHost *:80 # GITLAB…

    Read more
  • jqGridとRuby on Rails4 でインタラクティブなCRUDアプリケーション作成(その1)
    jqGridとRuby on Rails4 でインタラクティブなCRUDアプリケーション作成(その1)
    2 Comments on jqGridとRuby on Rails4 でインタラクティブなCRUDアプリケーション作成(その1)

    はじめに Webアプリケーションフレームワークで、自動生成可能なページ遷移型のCRUDアプリケーションではなく、一旦ページ表示したら、そのページから移動せず、CRUD処理をすべて完了してしまうようなインタラクティブなWebアプリ(俗に言うSPA)の構築方法についてお話します。今回はクライアントに jQuery/jQueryのグリッドコンポーネントとしてメジャーなjqGridを利用し、通信はjQueryのajax機能を利用します。サーバーサイドはRuby2.0とRails4.0の構成となります。また、記載したソースコードはgithub上のパブリックリポジトリに公開しますので、興味のある方は、ダウンロードして、お手元で試してみることも可能です。 Rails 新規プロジェクト作成、GitHubにPush 事前準備として、ご自身のGitHubに リポジトリを作成しておく必要があります。 今回は リポジトリ名:jqgridrails としてリポジトリを作成しました。 [bash] $ rails new jqgridrails $ cd jqgridrails $ git init $ git add . $ git commit -m “first commit” $ git config user.name “登録したい名前” $ git config user.email “登録したいEmail” XXXXX は githubのユーザー名です $ git remote add origin https://XXXXX@github.com/h-mito/jqgridrails.git $ git push -u origin master [/bash] EclipseにRailsプロジェクトを取り込む ファイル>>新規>>プロジェクト 一般>>プロジェクトを選択 既にローカルにあるフォルダ名をプロジェクト名とする。 プロジェクト>>プロパティ>>プロジェクト・ネーチャー Railsにチェックを入れる。 Railsサーバー作成 名前:jqgridrails プロジェクト:jqgridrails Host/IP:127.0.0.1 ポート:3000 Railsサーバーテスト起動 起動するとエラー [bash] cd workspace/jqgridrails cp bin script -R [/bash] あらめて起動 http://localhost:3000 で動作確認できます。 一旦コミットして、Pushしておく [bash] $ git add . $ git commit -m “Eclipse Env create” $ git push [/bash] Sectionマスターを作ろう! [bash] $ git checkout -b Sectmast [/bash] eclipse でdatabase.ymlを 自身のmysql環境に書き換える。データベースの接続情報はセキュアに扱いたいので、.gitignoreにdatabase.ymlを追記。 [bash] $ nano .gitignore 最終行に追記 config/database.yml $ git rm config/database.yml –cached $ git add . $ git commit -m “Database Setting” [/bash] コントローラーを作ろう 一般的なCRUDではなく、AjaxでSPAを作成するので、初期ページ表示用のindexメソッドと、更新用のupdateメソッドのみ指定 [bash] $ rails g controller sectmasts index update [/bash] モデルを作ろう! モデルを作る前に、Railsではデフォルト、sqliteを利用するようになっているので、mysqlを利用するように変更する。まずはGemfileの ‘sqlite3’の行をコメントアウトし、 ‘mysql2’の行を追記する。 Gemfileにmysql2を追記 [ruby] # Use sqlite3 as the database for Active Record # gem ‘sqlite3’ # Use mysql as the database for Active Record gem ‘mysql2’, ‘0.3.13’ [/ruby] モデル sectmastの自動生成 [bash] $ rails g model sectmast [/bash] データベースにテーブルを作成しよう モデルの作成時にマイグレーションファイルというのが自動的に作成される。 db/migrateフォルダに出来た migrationファイルを修正する。 修正内容は sectcd/sectnameの追加。 [ruby mark=”4,5″] class CreateSectmasts < ActiveRecord::Migration def change create_table :sectmasts do |t| t.column :sectcd, "varchar(2)" t.column :sectname, "varchar(255)" t.timestamps end end end [/ruby] テーブル作成実行! [bash] $ rake db:migrate [/bash] クライアントサイドで必要な、JavaScript、StyleSheetをコピー jquery / jquery UI / jqgrid 関連のJavaScript、StyleSheetをコピー コピー先は app/assets/javascripts & app/assets/stylesheets [bash] $ git add . $ git commit -m “create table and add jquery/jqueryUI/jqGrid Javascripts and StyleSheets” [/bash] 動作確認 では、一旦動作確認 Eclipseより、Railsサーバーを起動します。 ブラウザーで http://localhost:3000/sectmasts/index で以下のような空っぽのページが表示されればOKです。 テストデータ投入 [bash] $ rails c > Sectmast.create :sectcd=>”01″ ,:sectname => “market section” (0.3ms) BEGIN SQL (0.5ms) INSERT INTO `sectmasts` (`created_at`, `sectcd`, `sectname`, `updated_at`) VALUES (‘2014-01-17 12:13:24′, ’01’, ‘market section’, ‘2014-01-17 12:13:24’) > Sectmast.all Sectmast Load (0.6ms) SELECT `sectmasts`.* FROM `sectmasts` => #<ActiveRecord::Relation [#<Sectmast id: 1, sectcd: “01”, sectname: “market section”, created_at: “2014-01-17 12:13:24”,…

    Read more
  • JavaScriptで汎用コンポーネントを作る
    No Comments on JavaScriptで汎用コンポーネントを作る

    ちょっとしたJavaScriptのテクニックのご紹介。 JavaScriptを多用するようなWebアプリケーションを書いていると、よく利用する汎用的な関数なんかが出てくると思います。ただ単にJSファイルに functionを定義してしまうと、グローバルfunctionになってしまいます。小さなサイトならこれで問題ないケースが多いと思うのですが、中規模ぐらいになると名前がバッティングしたりして、問題が発生したりします。 そんなこんなで、JavaScriptで汎用的なコンポーネントを作り、名前のバッティング、グローバルfunctionになるのを避けつつ、便利に使いましょう的なテクニックです。 テストしてみよう! ここで実際にテストできます。 new Date() new Date()をyyyy/MM/dd化 テスト用HTML [html] <button id=”btnNormal” class=”btn btn-primary”>new Date()</button> <br> <button id=”btnUseComponent” class=”btn btn-primary”>new Date()をyyyy/MM/dd化</button> [/html] こちらがテスト用スクリプト [javascript mark=”9″] jQuery(function($){ $(“#btnNormal”).click(function(){ alert(new Date()); }); $(“#btnUseComponent”).click(function(){ //new はしない、即時実行 var dtStr = Common.getFormatDate(new Date()); alert(dtStr); }); }); [/javascript] ポイント説明! 上記のソースコードのハイライトされた部分、つまり Common.getFormatDate(new Date()); この部分が汎用コンポーネント呼び出しです。 Commonとは、以下のソースコードに定義されており、 function convertNum(num, keta) function getDate(dateStr) function getFormatDate(rcvDate, rcvFormat) の3つのメソッドを持っている。 このメソッドを、下のソースの最後の方で globalsという変数にセットし、 var Common = function(){} の戻り値としている。 そして、最後の行の }(); この ()がもうひとつの肝で、Commonを即時実行関数にしなさいという命令。このようにした場合、利用する側で、いきなり Common.メソッド名として利用できるようになります。 今回はCommonに定義されている getFormatDateメソッドを利用しましたが。残りの2つのメソッドも同様の呼び出し方で利用できます。オブジェクト指向言語に慣れている人なら、new Common().xxxx じゃないのか???などと疑問を抱くかもしれませんが、ここは new しないところがポイントです。 var Common = functon(){ return globals; } で、戻り値のglobalsがJavaScriptの連想配列であり、ここに定義されているメソッド(function)がつめ込まれている形になります。ちょっと難しかったですかね?この方法を利用すると Common という変数自体はグローバルになってしまいますが、それ以外は隠蔽した形で利用できますので、何かと便利です。 こちらがJavaScript 汎用コンポーネント [js mark=”1,3,11,25,51,65,66″] var Common = function(){ function convertNum(num, keta) { var str = String(num); while (str.length < keta) { str = "0" + str; } return str; } function getDate(dateStr){ if (dateStr.length != 10){ return null; } var y = dateStr.substr(0,4); var m = dateStr.substr(5,2); var d = dateStr.substr(8,2); var dt = new Date(y,m -1 ,d); return dt; } function getFormatDate(rcvDate, rcvFormat){ var year = rcvDate.getFullYear(); var month = rcvDate.getMonth() + 1; var day = rcvDate.getDate(); if ( month < 10 ) { month = '0' + month; } if ( day < 10 ) { day = '0' + day; } var str = ''; if (typeof rcvFormat === 'undefined'){ str = year + '/' + month + '/' + day; } else if (rcvFormat == 'mm/dd'){ str = month + '/' + day; } return str; } var globals = { convertNum: function(num, keta){ return convertNum(num, keta); }, getDate : function(dateStr){ return getDate(dateStr); }, getFormatDate : function(rcvDate, rcvFormat){ return getFormatDate(rcvDate, rcvFormat); } } return globals; }(); //即時実行とする [/js]

    Read more
  • CentOSに最新版のphpMyAdminをインストール
    CentOSに最新版のphpMyAdminをインストール
    No Comments on CentOSに最新版のphpMyAdminをインストール

    yum で phpMyAdmin インストール まずは、CentOSのリポジトリに含まれるphpMyAdminをインストールします。 [bash] $ sudo yum install phpmyadmin [/bash] これで、http://localhost/phpmyadmin にアクセスすると、phpmyadminが表示されるようになります。 ただ、このバージョンはかなり古いものなので、最新版にしましょう。 yum で phpmyadminを導入したことにより、Apacheに対するphpmyadminの設定は完了していますので、既にインストールしてあるphpmyadminのフォルダへ、最新版をインストールしてやることで、めでたく、最新のphpmyadminを利用できるようになります。 phpMyAdmin ダウンロード http://www.phpmyadmin.net/home_page/index.php ここにあるDownloadリンクより、phpMyAdmin-4.1.4-all-languages.zipをダウンロードする。 [bash] インストール済みのphpmyadminフォルダをリネーム $ sudo mv /usr/share/phpmyadmin /usr/share/phpmyadmin.org/ 最新版を解凍し、上記のフォルダへコピー $ unzip phpMyAdmin-4.1.4-all-languages.zip $ sudo mv phpMyAdmin-4.1.4-all-languages /usr/share/phpmyadmin フォルダ権限の変更 $ sudo chown apache:apache /usr/share/phpmyadmin -R $ sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php [/bash] これで、http://localhost/phpmyadmin にアクセスすると、最新版のphpmyadminが表示されるようになります。 もし Forbidden のエラーが出る場合は [bash highlight=”10″] $ sudo nano /etc/httpd/conf.d/phpmyadmin.conf # # Web application to manage MySQL # Order Deny,Allow Deny from all Allow from 127.0.0.1 localhost 192.168.1.0/24 Alias /phpmyadmin /usr/share/phpmyadmin Alias /phpMyAdmin /usr/share/phpmyadmin Alias /mysqladmin /usr/share/phpmyadmin [/bash] Allow from の行を適切にセットしてやり、Apacheを再起動すると表示されると思います。 [bash] $ sudo service httpd restart [/bash]

    Read more

Back to Top