2013年03月06日

GPLのライブラリを利用したWebサイトのコードは公開すべきか


タイトルに書いた通りの疑問を持っておりました。どうやら公開の必要はないみたいです。

参考

http://se-suganuma.blogspot.jp/2008/05/gpl.html

http://wp-d.org/2012/11/07/1046/

http://q.hatena.ne.jp/1210785986

http://www.gnu.org/licenses/gpl-faq.ja.html#IfLibraryIsGPL

http://okwave.jp/qa/q7424938.html

PHP と GPL の javascript でサイトを作ろうとしていたところ、「phpコード内のパスワードも公開対象?」っていうところから発展した。


posted by けんじ at 20:20 | Comment(0) | パソコンいろいろ

Ruby に isset みたいなのないの?


Ruby に PHP の isset みたいなのはないのかな?

定義していない変数名で if var_name なんてやるとエラー。ま、そんなことめったにやらないけどさ。

ActiveRecord の結果(Model.where(...).select(...).first)が nil だった場合にどうやって判定すればいいかがわからずさまよった。if result でやればいいだろうってことにして進めることにした。


posted by けんじ at 18:23 | Comment(0) | パソコンいろいろ
2013年03月04日

何が違う? numeric と integer (postgresql)


postgresql でストアドファンクションを作っていました。

integer で計算していたのですが、過去のデータを発掘したら小数の計算をする必要が出てきました。ということで、integer では無理。とりあえず numeric を使って計算することにしました。

さて、このふたつは暗黙の型変換なんかが行われるのか?

はい、行われるみたいです。

パーサはまず定数にそれぞれintegerとnumericであると印を付けます。 システムカタログには、integer + numericという演算子はありませんが、numeric + numericという演算子は存在します。 したがって、integerからnumericへのキャストが利用可能であり、そのキャストにAS IMPLICITが付いていればこの問い合わせは成功します(実際このようになっています)。 パーサは暗黙的なキャストを行い、問い合わせをあたかも次のように記載されたものとして解決します。

SELECT CAST ( 2 AS numeric ) + 4.0;

ここで、カタログはまたnumericからintegerへのキャストも提供しています。 もしこのキャストにAS IMPLICITが付いていたら(実際は付いていません)、パーサは上のように解釈するか、それとも、numeric定数をintegerにキャストし、integer + integerという演算子を適用するかを選択しなければなりません。 どちらがより良いかという知見がなければ、選択をあきらめ、問い合わせがあいまいであると宣告します。 2つのキャストの内1つのみが暗黙的であるという事実が、パーサに、numericとintegerが混在する式をnumericとして扱うという適切な解決方法を知らせる方法です。 これに関する組み込まれた知見は存在しません。

暗黙キャストは、多用しない方が賢明です。 暗黙的キャストを使用し過ぎると、PostgreSQLがコマンドを思わぬ意味に解釈してしまう原因になります。 また、複数の解釈が可能なため、コマンドをまったく解読できなくなってしまう可能性もあります。 経験的には、2つのデータ型が同一の一般的なデータ型のカテゴリに属しており、変換によって情報が保持される場合のみ、暗黙キャストを呼び出し可能にするのが良い方法と思われます。 例えば、int2型からint4型へのキャストは、暗黙キャストにするのが妥当ですが、float8型からint4型へのキャストは、代入キャストのみにすべきと思われます。 text型からint4型への変換のような、カテゴリを越えるデータ型のキャストは、明示的にのみ使用するのが適切です。

integer か numeric かがどうしてもあいまいになるとエラーメッセージを返すようなことも書いてある。あまり使わないほうがいいよとも書いてある。 AS NUMERIC とかをつけるといいんですね。

また、numeric は計算が遅いらしい。


postgresql の NUMERIC は 1000桁まで格納可能らしく、 ORACLE の NUMBER に比べると許容範囲が広い。また、 NUMERIC(10, 2) っていうのは oracle で NUMBER(10, 2) になるらしい。oracle では位取り(2番目の数字)をマイナスにできるらしいが、PostgreSQLではできないとか・・・。


posted by けんじ at 19:54 | Comment(0) | パソコンいろいろ
2013年02月28日

PostgreSQL の CREATE TABLE で困惑


rails db:migrate がバージョンの問題で動かないということになり、pgAdmin を参考にテーブル作成のSQLを作ってテーブルを作成しようと試みたのですが、なぜか CREATE が思うように動きませんでした・・・。

(この記事には続きがあります)


posted by けんじ at 14:40 | Comment(0) | パソコンいろいろ
2013年02月27日

A5SQL か pgAdmin かを迷っている人へ


PostgreSQL で使用できるツールに A5SQLpgAdmin がある。

思ったことを書いてみる。


A5SQL

いろんなデータベースに対応している。ちょっと反応が遅い場合がある。

pgAdmin

とても速く動く。ただし、不安定になることが多い。


というわけで、A5SQL をおすすめする。


posted by けんじ at 12:46 | Comment(0) | パソコンいろいろ
2013年02月24日

rails s で静的ファイルが読み込まれない!


rails アプリケーションの中にものすごく重い処理があるので、そこだけ社内のパソコンでやってしまおうと、社内のノートパソコンで Webrick を起動することにした。

rails s ではとりあえずうまくいく。

rails s -e production でやると・・・css, javascript が読み込まれない・・・。rails 3.0.1, ruby 1.8.7 なので assets は存在しない。しばらく考えて解決した方法が、

config.serve_static_assets = true

これを production の設定に書き込む。development でも同じなんだけど、とりあえずこれでうまくいった。config.serve_static_assets の値が false だと、webrick エンジン ががんばってなにかをするらしい。


posted by けんじ at 08:42 | Comment(0) | パソコンいろいろ
2013年01月28日

prefix を rails の url につける


rails で出てくるURLの頭に prefix をつける方法。

いろんな事情があって、別サーバの nginx でアクセスを受け付ける。でも、この待ち受けサーバの上でも rails が動いているため、アクセスをなんとかして分けなければいけない。次の記述を追加する。

なんでこれをやるかというと、target_server では、いつも通り 80番ポートで localhost みたいな感じでアクセスできる。proxy_pass の指定により、 server_name/mypage/ABC でアクセスしたときは target_server/ABC のコンテンツを出力することになる。

これだけで、モノとしては動くが、css が読み込めなくなる場合がある。どういうことかというと、背景に指定した画像が /assets/XXX.png などの指定になっているため、 server_name/assets/XXX.png を見に行ってしまうのだ。これについてはうまい解決策が思いつかなかったが、/mypage/assets/XXX.png に書き換えてやれば動くようにはなる。


環境: rails 3.2, ruby 1.9.3


posted by けんじ at 13:09 | Comment(0) | パソコンいろいろ
2013年01月23日

nginx : sites-available と sites-enabled


sites-enabled の下のファイルは、すべて sites-available の下のファイルへのリンク。


posted by けんじ at 17:23 | Comment(0) | パソコンいろいろ

Gemfile : group の設定


Gemfile では group :production do ... end という書き方でグループ設定ができる。

標準ではすでに assets というグループがある。

例えば上のように production というグループを作った場合・・・ production を除くすべての gem をインストールする場合は bundle install --without production という書き方をすればよい。

一度 --without をつけた bundle install をした場合は その時の設定が保存され、次回からは bundle install を入力するだけで同じオプションでインストールができる。


posted by けんじ at 13:47 | Comment(0) | パソコンいろいろ

style.css isn't precompiled 結局...


Ruby 1.9.3p374, Rails 3.2.9 でのこと。

WEBRICK, production 環境で動かそうとしたところ、style.css isn't precompiled と表示された。unicorn_rails では解読不能なスピードでエラーが表示された。

rake assets:precompile をやっても変わらず・・・

bundle exec rake assets:precompile RAILS_ENV=production をやっても変わらず・・・

そこで、 config/environments/production.rb の config.assets.compile = false を config.assets.compile = true にしてやった。できた。


production 環境 では、scss やらなんやらの自動コンパイルがオフになっている。そのため、コンパイル済みファイルがないとエラーになる。

rake assets:precompile で解決できると Ruby on Rails 3 ポケットリファレンス に書いてあったのだが・・・解決できなかった。

変更した production.rb の設定は、もしコンパイルされていなければ自動でコンパイルするというもの。一番最初に読み込むときにはちょっと時間かかる。


posted by けんじ at 10:37 | Comment(0) | パソコンいろいろ
2013年01月21日

AMI で ruby on rails をインストール


AWS (Amazon Web Service) で Ruby on Rails の実行環境を作った時の記録。

細かいところは省略している。また、いろいろと後付けでインストールした部分を整理しているので、一応この通りにやればうまくいくようになっている。OS は AMI (Amazon Linux)。

unicorn, nginx, ruby on rails でやる前提。

必要プログラムをインストール

$ sudo yum update
$ sudo yum groupinstall 'Development tools'
$ sudo yum groupinstall 'Development Libraries'
$ sudo yum erase ruby.x86_64

/etc/ld.so.conf に /usr/local/lib を追加して ldconfig を実行しておく。

Ruby, Nginx のインストール

$ sudo yum install libyaml-devel.x86_64
$ sudo yum install zlib-devel
$ sudo yum install openssl-devel
$ sudo yum install postgresql-devel
$ cd /usr/local/src
$ sudo wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.tar.gz
$ sudo tar xvfz ruby-1.9.3-p374.tar.gz
$ cd /ruby-1.9.3-p374
$ sudo ./configure --enable-shared
$ sudo make test
$ sudo make
$ sudo make install

ruby は /usr/local/src の中でこねくりまわしてインストール。

nginx と rails

$ sudo yum install nginx.x86_64
$ sudo /usr/local/bin/gem install bundler
$ cd /project_directory (Gemfile の https://rubygems.org を http://rubygems.org に変更)
$ sudo /usr/local/bin/bundle install

(プロジェクト(rails)のコードはすでに /project_directory に入っていました。)


Unicorn 起動

プロジェクトのディレクトリで、

-D はデーモンとして起動するオプション。このときのポートは8080。

Nginx 起動

$ sudo nginx

/etc/nginx/nginx.conf は次のように設定(主要部分のみ掲載)。最低限必要なのは、upstream backend と proxy_pass ってやつみたい。キャッシュを探すとかなんとかいうのもあったけど、今はよくわからん。

port 80 を経由して port 8080 へ到達させるようにしているんだな。で、sudo nginx で起動するわけだが、これをマシン起動時に動くようにしておく。

sudo chkconfig --level 345 nginx on

runlevel が 3, 4, 5 のときに自動起動するようになる。


AWS で postgresql, mysql などのDBMSを導入しても、自動起動するようにはなっていません。そのため再起動しても自動ではデータベースが使えるようになりません。

sudo chkconfig --list でデーモンの名前を調べて、 sudo chkconfig --level xxx mysqld on みたいにやらないといけないです。(2013/02/04時点)


posted by けんじ at 20:47 | Comment(0) | パソコンいろいろ
2013年01月17日

Oracle 使っていて postgresql にハマった


転職したので開発環境も変わり、データベースは oracle から postgresql になった。いくつか手間取った点をメモ。

トランザクション

標準では postgresql は 自動コミット。そこで、手動コミットに切り替えるために psql でコマンドを入力する前に、\set AUTOCOMMIT off を実行する。AUTOCOMMIT は必ず大文字。これをやらないと ROLLBACK できない。DELETE コマンド の WHERE 句 とか間違えたら大変なのです。

接続

Oracle では、例えば connect .../...@... なんてことをやっていた。接続方法はいくつかあるけど。postgreでは \connect db_name user_name となるらしい。ただしこれだと localhost の db に接続することになる。リモートに接続する場合はどうすればいいのだ?

DELETE

Oracle では DELETE table_name ... とやればよかったが、 postgresql は DELETE FROM ... と書かないと受け付けてくれない。

DESC

mysql でも oracle でも DESC table_name でテーブル構造を見ることができた。mysql はセミコロンが必要だったかな? postgresql では \d table_name と入力する。

IS NULL

IS NULL は全部大文字じゃないと受け付けてくれない。Oracle も確か大文字小文字を区別していたように思うけど、以前開発していた環境では、設定を変更して大文字小文字を区別しないようにしていたから気にしていなかった。

プロシージャ・ファンクション

プロシージャは PostgreSQL には存在しない。VB のサブプロシージャが Java ではファンクションになるような感じで、すべてファンクションで記述する。

文字列はクオート2つで囲む(クオート計4つ)。

PL/pgSQL ってのが PL/SQL に対応するものらしい。ただし、データベースサーバとは別に別途インストールしないと使えないみたい。

PL/pgSQL のプロシージャ(void を返すファンクション)はこんな書き方するお!

Oracle では、コンパイル時に存在しない列を指定していたらエラーを出してくれたけど、postgres では実際にそのコードを実行するまでわからない。数値型のフィールドに文字列を入れる場合も同じことになる。

Oracle で ソースを見る場合は SELECT TEXT FROM USER_SOURCE WHERE NAME=xxx ORDER BY LINE で見える。PostgreSQL は SELECT prosrc FROM pg_proc WHERE proname = '関数名' って感じで確認できる。

セッション一覧

Oracle だと、v$session ってのがある。これでセッションの一覧を見ることができる。postgre では、 pg_stat_activity っていうテーブルを見るとそれっぽいのが見えます。

エクスポート

Oracle では exp で、MySQL では mysqldump でデータをエクスポートできる。postgresql では pg_dump というのを使う。pg_dump db_name [-t table+name] -U user_name [-v] [-W] といった感じ。詳しくは調べてください。

なぜか su - postgres でユーザを変更しないと実行できなかった。

SQLをファイルから実行

Oracle では SQL*Plus を開いて @"C:\xxxxxx" なんていう書き方で、ローカル環境にあるファイル内のSQLを実行できた。postgresql では psql -f とかで、サーバ内部にあるファイルは使えるみたいだが、ローカル環境のファイルをリモート環境で実行する方法はいのか?

演算子

Oracle でも postgresql でも 文字列の結合には || が使える。

コンソール

Oracle では sqlplus で ed と入力すれば、テキストエディタでのSQL編集が可能だった。postgresql では psql というコンソールがあり、そこで \e と入力すればテキストエディタでの編集が可能。そして、編集したテキストの保存と同時に実行される。Oracle では バックスラッシュを入力しないと実行されなかった気がする。

COMMIT & ROLLBACK

Oracle だと、CREATE などの DDL を実行するとそこで自動コミットされる。postgresql では、CREATE, REPLACE を行ってもCOMMITされない! 安心と言えば安心だが、毎回COMMITをしていかないと今まで通りできないという・・・CREATE の後でコミットせずに SELECT文をいくつか発行して、ひとつでもエラーが出た場合、CREATE前の状態に戻ってやり直す必要があるのだ。


posted by けんじ at 10:43 | Comment(0) | パソコンいろいろ
2013年01月16日

Ruby on Rails の開発環境 on Windows


Ruby on Rails を Windows上 で開発する必要があり、上司の指示通り pleiades を使って git ではなく svn へのコミットをしておりました。pleiades というのは ruby on rails のためのいろんなプラグインを同梱したeclipse のことです。

eclipse はいいのですが、・・・重いんです。やってられないです。subclipse というプラグインがあり、使いやすいはずなんだけど、遅いと使いにくい。

そこでいろいろとみてみました。

aptena, eclipse + RadRails

これはベースが eclipse なので基本的に変わりません。

Vim

キーバインドは好きなんですが、windows だとプラグイン動かすのに苦労することがあるので却下です。そんなに時間の余裕はありません。

Notepad++

よさそう・・・ですが、Ruby on Rails のコードの色つけがいまいち・・・。subversion はプラグインがあります。

Sublime

こいつはなかなか使えます。TextMate っぽいらしいです。プラグインで subversion と ime に対応させて使っています。ただ、実のところ subversion の機能は使っておらず、今のところ TortoiseSVN を使っています。


注: Rails の開発には、linux, mac が推奨されています。


posted by けんじ at 16:17 | Comment(0) | パソコンいろいろ
2012年12月05日

MML についてメモ


MML : Music Macro Language

テキストを音楽にして演奏するもの。音楽の元となるテキストは、2chに貼り付けられていることもある。スーパーマリオブラザーズ地上とか。

文法

ドレミファソラシ: cdefgab

シャープ: +

フラット: -

全音符: 1

2分音符: 2

4分音符: 4

8分音符: 8

16分音符: 16

32分音符: 32

符点: .(ピリオド)

基本的にはこれを組み合わせて記述する。c4.>c<c など。

連符: {efg}8 ...... 8分音符で3連符になる


無料ソフト

TSS Clipboard Player ・・・クリップボードにコピーすると再生できる。

Tiny MID(SMF)2MML Converter ・・・MIDIをMMLに変換できる。

WPAK32 ・・・WAVE, MP3 の音程やテンポを変化させることが出来る。耳コピによいとか。

採譜の達人 ・・・WAVE を MIDI に変換できる。WAVE なので完璧には無理だが、MIDIにすればMMLにしやすくなる。


参考サイト: http://tutorial.jp/muic/ MMLの勉強にどうぞ。


posted by けんじ at 11:52 | Comment(0) | パソコンいろいろ
2012年11月21日

Vista で画面の明るさを調整する方法


Windows Vista で画面の明るさを調整する方法。前に書こうと思ったけど、書いた記憶がないのでメモ。

Windows XP と違ってて戸惑った。たぶん Windows 7 でも同じ。


スタートメニュー からコントロールパネルを開く。ハードウェアとサウンド、電源オプションと進む。電源プランの選択で、プランがいくつか出てくる。

俺がやったときは、HP Optimized、省電力、高パフォーマンスの3つがあった。

どれかひとつプランを選んで、プラン設定の変更を行う。輝度を最低にして変更の保存をクリック(いつも明るさを最低にしている)。


posted by けんじ at 19:29 | Comment(0) | パソコンいろいろ
2012年11月18日

大量のファイルをコピーするとき


windows で大量のファイルをコピーするときの話。

大量のファイルをコピーしようと、貼り付けを実行すると、”コピーの準備をしています”というダイアログが出て、まったく先に進まないことがある。そんなときは XCOPY。

COPY でもよいのだが、 XCOPY のほうが機能が豊富。

コマンドプロンプトを起動して、 XCOPY コピー元ディレクトリ コピー先ディレクトリ /E 、とやると、ダーッ!とコピーが始まる。

「コピーの準備をしています」が表示されるのは、おそらくファイルサイズと転送速度を計算し、プログレスバーの表示制御をして、予想官僚時間を計算するためだと思われる。

理由はどうあれ、これからは XCOPY を使おうと思う。


posted by けんじ at 14:24 | Comment(0) | パソコンいろいろ
2012年11月17日

.Net で出てくる XML


Visual Studio で開発をやっていると、.dll や .exe にあわせて .xml が生成される。こいつらはいったいナニモノなのか。

実はこれ、メソッドなどの説明が詰まったファイル。これがあるから インテリセンス で項目を選んだときなどに説明が出てくる。

そう、実行には必要ないのだが、開発には必要なのだ。

そんなわけで、顧客に納品するときはこのxmlを除いても問題ないのである。


posted by けんじ at 15:12 | Comment(0) | パソコンいろいろ
2012年10月20日

Acrobat Reader をコマンドラインで起動する


忘れそうなのでメモしておく。

Linux Debian 6 で Acrobat Reader をコマンドから起動するには acroread と入力する。


posted by けんじ at 09:31 | Comment(0) | パソコンいろいろ

httpd.conf を変更してみた


CentOS 6.0 でサーバを立ててみた。httpd.conf の設定をメモしておく。

Option Indexes と書いてあるものは Indexes を削除。... Index は、index.htm などが存在しない場合に、ディレクトリ内のファイル一覧を表示する設定。不要なので消しておく。

ServerTokens Prod ... レスポンスを返すときに Apache のデータを綿巣瀬設定にする。

ServerSignature Off ... エラー出力時のフッタをオフにする。

ServerTokens Prod ... Apache のバージョンを、どれだけ詳細に出力するか設定。

マニュアルに関する行を全部コメントアウト。これは、/manual へのアクセス時にマニュアルを出す設定らしいが、使うことはない。

# This should be changed to the ServerRoot/manual/. The alias provides
# the manual, even if you choose to move your DocumentRoot. You may comment
# this out if you do not care for the documentation.
#
#AliasMatch ^/manual(?:/(?:de|en|fr|ja|ko|ru))?(/.*)?$ \
"/usr/local/apache-2.0.59/manual$1"

#<Directory "/usr/local/apache-2.0.XX/manual"> ... </Directory>

PHP のバージョンが出力されているのでそれを非表示にする。php.ini の中の expose_php=On を Off に変更する。使っているのは PHP 5.2.17。


posted by けんじ at 06:34 | Comment(0) | パソコンいろいろ
2012年10月14日

Header V3 RSA/SHA256 Signature, key ID XXXXXXX: NOKEY


centos で rpm をダウンロードしてインストールしようとしたら、こんな警告が出た。

warning: openssl-1.0.0-4.el6_0.2.i686.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/487warningrpm.html によると、

 これは、RPMパッケージにGnuPGを使った署名が行われていないという警告で、このメッセージが表示されたからといって、インストールが失敗することはない。気になる場合は、--nosignatureオプションを付けてrpmコマンドを実行すればいい。

 Red Hat Linuxでは、この機能を利用することでRed Hat社からリリースされるオフィシャルなRPMファイルを検証することができる。

というわけで、署名がないってことだったみたい。

余計なパッケージをインストールしないためにも yum は避けた方がいいらしいのだが、本当だろうか・・・? ひとつインストールするために wget コマンドを何度も打ち込むのは大変なんだけど・・・ま、勉強ですね。


posted by けんじ at 20:50 | Comment(0) | パソコンいろいろ
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。