投稿

GPLライセンスについて整理

まず基本的なことは wikipedia を読む。 ここ の記事もがんばって読むと詳しくなった気になれる。 あとは 本家 のよくある質問を読めば、いくつかの疑問は晴れる。 GNU General Public Licenseの日本語訳 以下はいろんなサイトを見て間違えそうな部分を自分用にメモ。 GPLライセンスのコードを利用して作ったソフトを商用利用(お金を取って売る)ことは可能(用途の制限がない)。 課金して売ったとしても、そのソフト(とソースコード)の配布方法に制限をかけることができない。 ソフトを配布(頒布)する場合はソースコードも渡さなければならない(もしくは要求すれば渡すことを明示)。だから個人的に使用する場合はソースコードを公開する必要はない。誰もが手に入れる場所にソフトを公開(頒布)したら、誰もが手に入れる場所にソースコードを公開しないといけない(もしくは要求すれば渡すことを明示)。 Webアプリケーションの場合、カスタマイズしてサーバにインストールして利用するだけなら、例えサーバが外部に公開していようとソースコードを公開する必要はない。そのWebアプリケーションにログインするのに料金が発生しようとGPL違反にはならない。→配布(頒布)してないから GPL準拠のWebアプリケーションをカスタマイズして販売(納品)する場合は、いくらで売っても構わないが、ソースコードを渡さないといけないし、そのWebアプリケーションもGPLとなる。→配布(頒布)しているから どこまでを配布(頒布)しているとみなすかは議論が分かれるところ。個人的な解釈では、そのソフトを別の環境で起動できるな状態で公開するのが配布(頒布)だと思う。 自分の言葉で書いているので、間違っている部分があったら修正します。 その他のライセンスについては ここ のブログにリンク集が。 <2009/7/22 追記> ライセンス条項の日本語訳をまとめたサイトがあったので覚え書き。 OSI承認オープンソースライセンス 日本語参考訳

【CentOS】いらないデーモン(daemon)を削除する

私は昔から Vine Linux を使ってサーバ構築しますが、会社の推奨は CentOS らしいです。VMware上にCentOSをいれて開発してますが、CentOSをインストールした直後はいろいろよく分からないデーモンがたくさん動いていて精神上よくない。(気にしないのが一番よい。) Vineのときは ここ にメモってますが、CentOSでいらないデーモンを削除しようとしても # chkconfig --list のあまりの多さに萎える。誰か一覧で作ってないかなと思ったら、 ここ にスクリプトが。他にも探せば出てくるかも。 ここ の人もがんばって調べてた。 一応、自分でいらないデーモンをメモってたので置いときます。 # yum remove <名前> でアンインストールする一覧です。依存関係で他のソフトも一緒に消えることがあります。 名前 説明 sendmail メール配送サービス cups 印刷制御サービス ypbind NIS バインド情報を管理 nfs-utils NFS を利用するためのツール群。NFS関係のdaemonが消える bluez-utils bluez-gnome bluez-libs bluetoothを使うためのツール群。 dhcdbd DHCP D-BUSデーモン pcsc-lite スマートカードを使うためのソフト irda-utils 赤外線通信規格「irDA」を使った通信を実現するサービス portmap RPC関連のport mapper NFSやNISを使用する場合に必要 ...

Sambaの設定ファイルsmb.confメモ

ネットワーク内にLinuxを導入したらWindowsのファイル共有を使えると効率がいいので、Sambaをインストールして設定していますが、その設定ファイルsmb.confをメモのために置いときます。 < 2017/06/26 追記 >  CentOS7向け最新記事はこちら。 【CentOS7】開発用仮想マシンに設定するsmb.conf インストールした直後はとりあえず/etc/samba/smb.confに次の記述して保存。 [Samba_Conf]     comment = Samba config     path = /etc/samba     guest ok = No     browseable = Yes     write list = root sambaのユーザにrootを追加 $ pdbedit -a root 追加したらsambaを再起動 $ /etc/rc.d/init.d/smb restart そのあとWindowsからネットワーク経由でサーバにアクセス。 下に書いてあるsmb.confに上書きしてsambaを再起動。 日本語が含まれているので文字コードを注意。 再起動後はたまにsambaユーザが消えるので $ pdbedit –L で確認。いなかったらもう一回rootユーザを追加。 $ pdbedit -a root sambaを自動起動させる。 $ chkconfig smb on 以下smb.confの中身 [global] #動作モード     smb ports = 139 #ユーザの認証する方法(user, server, domain, share)     security = user #Unix Windows互換機     dos charset = CP932 ...

【PHP】全角、半角を変換して統一させたい

PHPではmb_convert_kanaという便利な関数があり、全角/半角変換をしてくれます。マニュアルは ここ 。 まだ使う機会はないですが、そのうち使うことになりそうなのでメモ。

【PHP】入力した値がShift-JISか判定する(文字コード判定)

データベースの文字コードがEUC-JPとかShift-JISとかだと、ユーザが入力したデータが文字化けしないでちゃんとデータベースに保存できるかチェックしたいときがあります。 PHPだと mb_check_encoding という便利な関数があるので、これでチェックすればいいやーと思っていましたが、実装してみるとうまく判定してくれず。ソースファイルの文字コードによって返値が変わってくる。例えば、UTF-8nのファイルに次のコードを記述して実行すると値はfalse。 var_dump( mb_check_encoding( '1', 'Shift-JIS')); //全角の1 これは正しい?使い方間違っている? しょうがないので、mb_check_encodingはあきらめて、 mb_convert_encoding を使って、一度チェックした文字コードに変換して、元に戻した結果が同じかどうかでチェックすることに。 こんな感じ↓ $sMoji = "1"; $sTemp = mb_convert_encoding($sMoji, 'Shift-JIS'); //変換 $sTemp = mb_convert_encoding($sTemp, 'UTF-8', 'Shift-JIS'); //元に戻す if ($sMoji === $sTemp) {     echo "Shift-JISで表現できる文字:$sMoji"; } else {     echo "Shift-JISで表現できない文字:$sMoji"; } ちなみにShift-JISで表現できない文字で有名なのが森鴎外の鴎(かもめ)がメでなくて品となっている「鷗」という文字。「かもめ」とか「おう」で変換すれば出てくる。 さらに mb_internal_encoding を使って現在の文字コードを取得すれば、汎用的になる。↓こんな感じかな。(試してはないです) $sMoji = "1"; $sEncode ...

Google八分?Googleのインデックスから削除された?

イメージ
昨日おもむろに自分のブログを見ようと「se suganuma」とgoogleの検索窓から入力してみました。いつもならトップに自分のブログが出てきていましたが、この日はなぜか自分のブログが出てこない・・・。 2ページを見てみるとやっといつかのエントリーが出てきましたが、これはもしや噂に聞く「google八分?」と思い、 google八分 について調査しました。 ここ に自分が本当にGoogle八分なのかの確認方法と対応方法が載っているので参考に。 Googleの検索窓に自分のブログのURLを記述して検索してみて、自分のブログが出てくればとりあえずGoogleのインデックスから削除されている訳ではないようです。このブログの場合もちゃんと表示されたので、Googleのインデックスから削除されてないことは分かりました。 Googleの Webマスターツール にも登録してありますが、こっちを見ても特に変わったことはありませんでした。怪しいと思ったのは、 ↑この記述があったので、このときになんか悪いサイトとして判断されたのかなーと思っています。 なんででしょうね? Googleの ウェブマスター向けガイドライン を読んで、心当たりがありそうなのは 会社へのリンクがいっぱいあったので過剰なSEO対策として判断された? 引用が著作権違反と判断された?もしくは誰かに通報された? ぐらいかなー とりあえずSEO対策で会社へのリンクをいっぱい付けてたのは削除してみました。 それが原因かは分からないですが、今日になって「se suganuma」で検索するとちゃんとトップに出てきてくれたので、時間が経てば元に戻るような気はしてます。 一時的なものだと祈りつつ・・・。

【PHP】【DOM】ノードをコピーする方法

PHPのDOMを使ってXMLを操作していると、別々に作ったDOMを一つのノードにまとめたい場合があります。cloneNodeとか使って簡単にできるかと思ったけど、ちょっとつまずいたのでメモ。 最初に書いたコード↓ $objDom2 = new DOMDocument(); $objDom2->encoding = 'UTF-8';  //文字化け対策. $objDom2->formatOutput = true;  //字下げや空白を考慮してきれいに整形した出力を行う。. $objNode = $objDom2->appendChild( $objDom2->createElement('copy') ); $objNode->appendChild( $objAddNode->cloneNode(true) ); echo $objDom2->saveXML(); 単純にもう一つDOMドキュメントを作ってコピーしたいノードをcloneNodeを使って追加しようとしてる。しかし、これだと'Wrong Document Error'で怒られる・・・。JavaScriptだとできたのに・・・。 調べてみると importNode を使って、現在のDOMドキュメントに関連づけを変更しないと追加できないみたい。 修正したコード↓ $objDom2 = new DOMDocument(); $objDom2->encoding = 'UTF-8'; //文字化け対策. $objDom2->formatOutput = true;  //字下げや空白を考慮してきれいに整形した出力を行う。. $objNode = $objDom2->appendChild( $objDom2->createElement('copy') ); $objNewNode = $objDom2->importNode( $objAddNode, true ); $objNode-...

【PHP】XMLReaderでXMLを高速に処理をする

ここ と ここ でDOMとSimpleXMLについて書きましたが、調べていくうちに目にとまるようになったのがXMLReaderなるもの。 XMLReaderを使うとread()を行うたびに階層(ノード)単位で読み込んでいくので、すべてのXMLを読み込まなくても、必要な階層(ノード)に辿りついた時点で処理を行えます。そのため、大きなXMLファイルを扱う場合などメモリの消費を抑えることができ、高速に処理ができるようです。 ここ にサンプルコードがあるのでメモ。マニュアルは ここ 。 XMLReaderはPHP5.1.0以上であればデフォルトで組み込まれているので、インストールは不要。 大量のデータをXMLでやり取りする場合は必須となりそう。

【PHP】SimpleXMLを使ってXMLを直感的に操作

ここ の続き。PHP5のDOMでXMLを操作するときにXpathの記述方法のめんどくささに萎える。JavaScriptみたいにselectSingleNodeとかselectNodesとか書きたくなるけど、これができない。 DOMXpath を使うとこんな感じ $objDom = new DOMDocument(); $objDom->preserveWhiteSpace = false; //余分な空白を取り除く. $objDom->load('sample.xml'); $objXpath = new DOMXPath($objDom); $sQuery = '//root/comment'; $objSelectNodes = $objXpath->query($sQuery); echo $objSelectNodes->item(0)->nodeValue; echo $objSelect->item(0)->getAttribute('id'); Xpathを記述しようと思うだけで別のオブジェクトを生成しないといけないので、非常にめんどくさい。 こういう場合はSimpleXMLを使うと非常に分かりやすくなる。上のコードをSimpleXMLを使って書くとこんな感じ $objDom = new DOMDocument(); $objDom->preserveWhiteSpace = false; //余分な空白を取り除く. $objDom->load('sample.xml'); //SimpleXMLの方が扱いやすいので変換. $objXml = simplexml_import_dom($objDom); $sQuery = '/root/comment'; $objSelectNodes = $objXml->xpath($sQuery); //配列で返る. echo $objSelectNodes[0];       //nodeVa...

【PHP】DOMを使ってXMLを操作(導入インストール編)

イメージ
PHPでXMLを扱いときによく使われるのが DOM 。 気をつけないといけないのがPHP4とPHP5では使用するメソッド名がかなり違うので、システム構築する際は環境をちゃんと確認しないといけない。どっちでも動くように作り込むのはかなり大変そう・・・。 参考 。 PHP4:DOM XML関数 $dom = domxml_open_file($xmlfilename); PHP5:DOM Function $dom = new DOMDocument; $rtn = $dom->load($xmlfilename); ちなみにインストールは簡単でPHP5の場合 # yum install php-xml # service httpd reload で終了。 phpinfoで確認するとDOMの項目が表示されている。 JavascriptでDOMを使ったことがあるなら、PHP5のメソッドは見慣れたものばかりなのでプログラムは(比較的)作りやすい。 なぜならPHP5で標準DOMインターフェイスに対応したから。 参考 。 でもXpathを使った記述方法は、JavaScriptに比べめんどくさい。その辺は SimpleXML と組み合わせて使うと幸せになれる。 これについてはまた後日書きます。 PHP4で作りたいときは ここ のマニュアルを参考に。 PHP5は こっち 。 XMLを読み込むサンプルコード $objDom = new DOMDocument(); $objDom->preserveWhiteSpace = false; //余分な空白を取り除く. if ($objDom->load('sample.xml')) { return $objDom; } else { return null; } preserveWhiteSpaceはインデント部分の余分な空白を取り除いてくれるので、空白で悩まされなくていい。ファイルに書き出すときのサンプルコード $objDom = new DOMDocument(); $objDom->encoding = 'UTF...