home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

211 - 220 / 1320    [|<]  [|<]  [<]  21  22  23  24  25  26  27  28  29  30   [>]  [>|][>|]
タイトル/名前 更新者 更新日
日記/2014/02/03/JAX-RS 2.0, Jersey のメモ msakamoto-sf 2014-02-03 00:23:26
技術/Linux/CentOS/512MB以下のメモリ搭載マシンにインストールメモ msakamoto-sf 2014-01-19 14:19:58
Java/SSH実装 msakamoto-sf 2014-01-19 14:16:11
Python/MultiVersionCoexisting(複数バージョン共存) msakamoto-sf 2014-01-19 12:24:32
Python/インタープリタがコンパイルされた時のコンパイルオプションを確認する msakamoto-sf 2014-01-19 00:32:47
Python/setuptools, easy_install, eggパッケージ, pipメモ msakamoto-sf 2014-01-19 00:16:39
技術/Windows/バックアップのお供, robocopy msakamoto-sf 2014-01-13 12:56:09
技術/VirtualBox/ネットワークアダプタの設定メモ msakamoto-sf 2014-01-13 12:50:15
技術/RCS/Git/GitHubClone/GitBucket msakamoto-sf 2014-01-12 23:08:59
Java/FindBugs msakamoto-sf 2014-01-12 12:55:39
ソート項目 / ソート順     1ページ 件ずつ表示

日記/2014/02/03/JAX-RS 2.0, Jersey のメモ  

所有者: msakamoto-sf    作成日: 2014-02-03 00:22:38
カテゴリ: Java 

割りと使える感じ。あとはIDEでのHotDeploy連携が動作すれば大体実用に問題ない。

JAX-RS 2.0 仕様

Wiki:
http://en.wikipedia.org/wiki/Java_API_for_RESTful_Web_Services

実装:

JAX-RSの入門

HTTPリクエストヘッダの取得

セッションやCookie使いたい:

HTTPレスポンスヘッダの操作

脱線。Ninja Web Frameworkというのを見つけて、Servlet 3.1, JAX-RS 2.0 とちょっと比べてみたよ!という記事。

NettyとJAX-RSのBindingってあるんだっけ?

JAX-RS 2.0 ではasyncも登場してるだけあり、Servlet 3.0をメインに対応を進めている。TomcatでServlet 3.0に対応しているのはTomcat7になる。が、そもそもTomcat7で何が変わるの?


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2014-02-03 00:23:26
md5:d40fce083fe5a97d565ed0a0aff876ec
sha1:964d6aa3fe8103fa8f25855f9d392ad41b1e3b00

技術/Linux/CentOS/512MB以下のメモリ搭載マシンにインストールメモ  

所有者: msakamoto-sf    作成日: 2014-01-19 14:18:04
カテゴリ: Linux 

512MBしかメモリ載せてないVMにCentOS 6.3をインストールしたら、テキストモードのインストーラが強制され、インストールタイプもMinimalが強制された。

関連?:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2014-01-19 14:19:58
md5:d122a744adeb74b4376b3cf1284e7303
sha1:9dd7fa42dd4388c8250e6759b356b5fbe9367380

Java/SSH実装  

所有者: msakamoto-sf    作成日: 2014-01-19 14:13:31
カテゴリ: Groovy Java SSH 

JVM言語で使えるSSH実装ライブラリのメモ

メジャー:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2014-01-19 14:16:11
md5:59883c421ccc4a7ca6c5f2398509ae6c
sha1:d669b83a034fdd00070262cda5a14e33b76b3106

Python/MultiVersionCoexisting(複数バージョン共存)  

所有者: msakamoto-sf    作成日: 2014-01-19 12:19:09
カテゴリ: Python 

一つのマシンで複数バージョンのPythonを共存させるメモ。

複数バージョンといっても、Pythonのインタープリタを共存させるのか、site-packages以下のライブラリ空間を共存させるのか、あるいはその両方か、でアプローチが変わる。

site-packages以下のライブラリ空間を共存させたい場合:

目的
システムにインストールされたPythonパッケージライブラリとは別に、site-packages以下のライブラリ空間を分離したい。
  • ディストリビューションがインストールして使用するライブラリXXXXのバージョンと、使用したいアプリが必要とするライブラリXXXXのバージョンが異なり、メジャーバージョンが違うためインターフェイスの互換性が無い。そのため、アプリ専用にライブラリXXXXをインストールするディレクトリを分離したい。
  • 複数のプロダクトを開発するときに、プロダクトごとに必要とするライブラリとそのバージョンが異なるため、それぞれに専用のライブラリインストール先を用意して使い分けたい。
アプローチ
virtualenv, virtualenvwrapper

Pythonインタープリタを複数バージョン共存させたい場合:

目的
システムにインストールされたPythonインタープリタとは異なるバージョンを使いたい。
  • 使用したいアプリが必要とするPythonのバージョンが、ディストリビューションがインストールするものとは異なっている。安全のため、アプリ専用に分離してPythonインタープリタをインストールしたい。
アプローチ
手動コンパイル, pyenv

なお、virtualenv(wrapper)は手動コンパイルやpyenvと組み合わせることも出来る。そのため、Pythonインタープリタ+ライブラリ空間をペアにして、丸ごと分離したsandbox環境を構築することも可能。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2014-01-19 12:24:32
md5:68064168b8caca8365641da300b00136
sha1:f690db10553d071f8c826da8bc280c42dd475350

Python/インタープリタがコンパイルされた時のコンパイルオプションを確認する  

所有者: msakamoto-sf    作成日: 2014-01-19 00:25:19
カテゴリ: Python 

Pythonインタープリタがコンパイルされた時の、コンパイルオプションを確認するメモ。

Python 2.6:

import distutils.sysconfig
print distutils.sysconfig.get_config_vars()

Python 2.7以降:

import sysconfig
print sysconfig.get_config_vars()

参考:

"get_config_vars()"の戻り値はdictionaryなので、そのままget()で取り出したりkeysでfor文に回せます。
また、"get_config_vars(key名)"で直接オプション名を指定して値を取り出せます。

インタプリタがコンパイルされた時のコンパイルオプションに関連しそうなkey名:

CONFIG_ARGS : "./configure" スクリプトのオプション
CFLAGS, OPT : コンパイラのオプションぽい。
PY_CFLAGS : 謎。

例1: CentOS 6.3ベースの python-2.6.6-51.el6.x86_64:

$ python
Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import distutils.sysconfig
>>> distutils.sysconfig.get_config_vars('CONFIG_ARGS')
["'--build=x86_64-redhat-linux-gnu' ...

例2: CentOS 6.3に自前でインストールしたPython 2.7

$ workon py27t1
(py27t1)[...]$ python
Python 2.7.6 (default, Jan 18 2014, 20:36:47) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sysconfig
>>> sysconfig.get_config_vars('CONFIG_ARGS')
["'--prefix=/work/pythonbuilds/2.7.6' '--enable-ipv6' '--enable-unicode=ucs4' '--enable-shared'"]


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2014-01-19 00:32:47
md5:5774f9be552ba5a1b682f8b1af620c7d
sha1:f51ac8ac0e0f95ad64406000db760ea62533ce41

Python/setuptools, easy_install, eggパッケージ, pipメモ  

所有者: msakamoto-sf    作成日: 2009-05-01 19:06:25
カテゴリ: Python 

基本的に本家一次サイト群およびGoogle検索を駆使して閲覧できる先人達のドキュメントを元に、easy_install, pipを中心とした使い方やノウハウを調べられる。

Egg

JavaのJarファイルに相当するPythonにおけるパッケージフォーマット。拡張子は ".egg" 。
setuptoolsの導入により、.eggファイル中のPythonモジュールや設定ファイルを展開せずにそのまま読み込むことが可能になる。(拡張Cモジュールの場合は別)
冒頭には自己拡張方式のシェルスクリプトが埋め込まれている為、UNIX系のシェルが動作する環境であれば

sh abc-0.0.1.egg

のように直接実行してインストールすることも可能。

参考:

setuptools

distutilsを発展させたPythonパッケージで、Eggファイルの生成とロード機能を提供する。easy_installもこの中に含まれる。
RubyGemsを知っている人であれば分かりやすいかも知れない。
一時期開発が停滞し、"distribute"というパッケージに引き継がれた。
ところが2014年1月時点では、distributeがsetuptoolsにマージされ、結果としてdistributeが非推奨扱いになってしまっている。
Python - setuptools - pip はバージョン依存の問題で、新しいのと古いのの組み合わせだとトラブルにつながりやすいので、十分注意が必要。

"easy_install"はsetuptoolsを導入するとインストールされるライブラリセットアップ用コマンド。
つまり、easy_installコマンドを使う=setuptoolsを導入することと同義である。

インストール方法についてはsetuptoolsの公式ドキュメントを参照するのが確実だろう。OSとPythonのバージョン、Pythonのインストール場所、site-packageの場所など、Pythonのインストール状態を丁寧に確認しておくと、トラブルになっても自信をもって調査・対処出来るだろう。

インストール例:

$ curl -O http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py

(2014-01時点でやや時代遅れとなった参考記事:)

easy_install

setuptoolsによるEggファイルおよび、Pythonライブラリのソースツリーのビルド・インストールや管理を行うコマンド。
tarボールやURL、さらにはSVNリポジトリなどから直接ソースツリーを取得してEgg化し、インストールすることも可能。
ネット上にも先人達の苦労の跡が沢山見つかる為、使うのに困ることは少ないだろう。

pip

Pythonパッケージのインストール・管理に特化したパッケージ。
easy_installよりも、pipの方がパッケージ管理としてはモダンで洗練された機能を提供している・・・と、思います。(超大雑把な肌感覚レベル。)

インストールはeasy_installからインストールするのが簡単なようです。

$ easy_install pip

setuptoolsを入れ終わったら、最初にeasy_installでインストールするパッケージ、のようです。

rpmなりdpkgなり、yumやaptなりを使ったことがあれば、あるいはgemやPEARやcpanなど扱ったことがあれば、すぐ使えると思います。

setuptoolsとdistributeについて

上述の通り、setuptoolsの開発が一時期停滞していた時期があり、"distribute"というパッケージが後継として開発された。

参考:distributeがsetuptoolsの後継として頑張っていた時代。

ところが、2014-01時点でdistributeの公式ページを確認してみると・・・

ということで、2014-01現在は素直に最新版のsetuptoolsを導入すれば、distributeは不要です。
もしインストールしてしまっていたら、以下の手順で綺麗にアンインストール出来ます。

例:
# rm /usr/bin/pip
# rm /usr/bin/pip2.6
# rm /usr/bin/pip2
# rm /usr/bin/easy_install
# rm /usr/bin/easy_install-2.6
# rm -rf /usr/lib/python2.6/site-packages/pip-1.5-py2.6.egg
# rm -rf /usr/lib/python2.6/site-packages/setup*
# rm -rf /usr/lib/python2.6/site-packages/distribute-0.6.49-py2.6.egg
# rm -rf /usr/lib/python2.6/site-packages/easy_install*

2014-01時点の最新のsetuptoolsのドキュメント

distributeマージ後の最新のsetuptoolsを使ったeasy_install, pipの導入参考:



プレーンテキスト形式でダウンロード
現在のバージョン : 2
更新者: msakamoto-sf
更新日: 2014-01-19 00:16:39
md5:075b8fcc288719f2f2755d40f9e55a72
sha1:824d679b44d8ae1b16c184f0396002367da20f7c

技術/Windows/バックアップのお供, robocopy  

所有者: msakamoto-sf    作成日: 2014-01-13 12:55:40
カテゴリ: Windows 

非常に便利だったのでメモ。

スペースが入るフォルダを扱う場合は "" で囲むこと。

実例:

空白混じりのフォルダ名を扱う
robocopy C:\Users\Foobar\Pictures "D:\backup2\My_Documents\My Pictures" /mir

USBメモリの"M:"ドライブのツリーを丸ごと、別のドライブのフォルダにミラーリング
robocopy "M:" "D:\backup2\refs" /mir


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2014-01-13 12:56:09
md5:51ffaaec80dacacad7e4c461d3e16ce2
sha1:0af3f5654d3e5dd26f0fd1abd566c88494678a81

技術/VirtualBox/ネットワークアダプタの設定メモ  

所有者: msakamoto-sf    作成日: 2014-01-13 12:49:52
カテゴリ: Linux VirtualBox 

VirtualBoxのネットワーク設定がよく分からなかったので実際に実験したメモ。

実験日 : 2014-01-13
Host : Win7SP1
VirtualBox : 4.3.6

主なネットワークアダプタの種類

名称 外部 <- Guest Guest <-> Guest Guest <- Host
NAT OK NG NG(要ポートフォワーディング)
NAT Networks(NATネットワーク) OK(?) OK NG(要ポートフォワーディング)
Host-only networking(ホストオンリーアダプター) NG OK OK
Inetrnal networking(内部ネットワーク) NG OK NG

NAT

  • Guestマシンそれぞれに、専用のNATルータが割り当てられるイメージ。Guest <-> Guest間は独立しており、通信出来ない。
  • HostからGuestへの通信については、ポートフォワーディングを使う。
    • VirtualBoxマネージャーから、ゲストOSのネットワークアダプター設定画面で「ポートフォワーディング」のボタンが有効化される。クリックすると、Host -> Guestへのポートフォワーディング設定画面が表示される。
    • ゲストOSのネットワークアダプタそれぞれに個別にポートフォワーディングの設定を行う形になる。

NAT Networks(NATネットワーク)

  • VirtualBox 4.3で追加された。複数のGuestマシンが同じNATルータの下にぶら下がる。
  • 4.3.6の時点ではまだ"experimental"扱い。そのためか、実験時にはいくつか問題が発生した。
  • 予めVirtualBoxマネージャーの「ファイル」→「環境設定」→「ネットワーク」→「NAT ネットワーク」タブで、仮想のNATルータに相当する設定を追加しておく必要がある。
  • HostからGuest方向のポートフォワーディングについては、VirtualBoxマネージャー側でそれぞれのNATごとに設定する形になる。ただの"NAT"の時は、ゲスト毎に設定していたのとは対照的。

実験時に遭遇したトラブル(いずれも原因不明で、未解決):

  • Guestから外部ネットワークへの接続ができなくなってしまった。
    • NAT ネットワークのIPv4設定は 10.0.2.0/24 で、Guestへは10.0.2.15などが割り当てられ、デフォルトゲートウェイは 10.0.2.1 に設定された状態。
    • ここまでは良いのだが、ping 10.0.2.1 してもDestination Host Unreachableになってしまい、外に出れなくなってしまった。
    • Guset <-> Guest間は問題なく通信できた。
  • また、ポートフォワーディングを設定しても、Host -> Guestへ接続できなかった。SSH接続しても"read: Connection reset by peer"でTCPのレイヤーで接続エラーとなる。

Host-only networking(ホストオンリーアダプター)

  • HostOnlyの仮想ネットワークの下に、GuestとHostが仲良くぶら下がるイメージ。
  • VitualBoxのマネージャーから、ホストオンリー用のIPアドレス・サブネットマスクを設定出来る。

Host側(Win7)

イーサネット アダプター VirtualBox Host-Only Network:

   接続固有の DNS サフィックス . . . :
   説明. . . . . . . . . . . . . . . : VirtualBox Host-Only Ethernet Adapter
   物理アドレス. . . . . . . . . . . : 08-00-27-00-EC-FB
   DHCP 有効 . . . . . . . . . . . . : いいえ
   自動構成有効. . . . . . . . . . . : はい
   リンクローカル IPv6 アドレス. . . . : fe80::d84:62c8:29f7:2c64%25(優先)
   IPv4 アドレス . . . . . . . . . . : 192.168.56.1(優先)
   サブネット マスク . . . . . . . . : 255.255.255.0
   デフォルト ゲートウェイ . . . . . :
   DHCPv6 IAID . . . . . . . . . . . : 419954727
   DHCPv6 クライアント DUID. . . . . . . . : 00-01-00-01-17-D7-6E-11-94-DB-C9-3A-8A-E4
   DNS サーバー. . . . . . . . . . . : fec0:0:0:ffff::1%1
                                       fec0:0:0:ffff::2%1
                                       fec0:0:0:ffff::3%1
   NetBIOS over TCP/IP . . . . . . . : 有効

Guest1(CentOS6):

eth0      Link encap:Ethernet  HWaddr 08:00:27:01:26:50
          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe01:2650/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:58 errors:0 dropped:0 overruns:0 frame:0
          TX packets:57 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:12175 (11.8 KiB)  TX bytes:8864 (8.6 KiB)

Guest2(CentOS6):

eth0      Link encap:Ethernet  HWaddr 08:00:27:1B:8A:69
          inet addr:192.168.56.102  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe1b:8a69/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:50 errors:0 dropped:0 overruns:0 frame:0
          TX packets:61 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:7631 (7.4 KiB)  TX bytes:7735 (7.5 KiB)

Inetrnal networking(内部ネットワーク)

  • Host-onlyと異なり、VirtualBoxマネージャーなどからIPアドレスの設定は出来ない。

参考

NAT/NAT Networks/Host-onlyの組み合わせで皆さん、それぞれ苦労されているようです。

感想(2014-01-13)

"NAT Networks"はexperimentalというだけ有り、まだ安定してないかも。

GuestOS単体で完結するような環境構築であれば、そのGuestにNATとHost-onlyの2つのアダプタを設定するだけで問題ないだろう。

Webサーバ <> DBサーバ構成など2台以上のGuestが相互に通信できるようにする場合も、それぞれにNATとHost-onlyの2つを設定する方式でも良いが、やや設定が冗長であるし、実運用環境とネットワーク設定が異なりそれによる諸問題が発生する可能性もある。
その場合は、個人的には以下のような構成の方がシンプルで、実運用環境にも近くなると考えます。Guest1, Guest2のdefault gatewayはGuest3のHost-onlyアダプタになるように設定し、Guest3側はルータとして、Host-onlyに入ってきたoutboundをNAT側のアダプタにルーティングします。

[Guest1]
Host-only <--------+
                   |
[Guest2]           |
Host-only <--------+--------> [Host]
                   |
[Guest3(router)]   |
Host-only <--------+
NAT       ------------------> Internet

デメリットとしては、Host-onlyアダプタについて、DHCPではなく静的に色々設定する必要があります。また、1台分余分に動かす必要があります。とはいえ、これもこれで構成パターンの一つとしてアリではなかろうかと。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2014-01-13 12:50:15
md5:de4018adce0cd9174a309827e20a98b6
sha1:3c92dd0be01d4fa7180620007914092a864ed3af

技術/RCS/Git/GitHubClone/GitBucket  

所有者: msakamoto-sf    作成日: 2014-01-11 23:11:03
カテゴリ: Git 

Scalaで開発され、Gitの実装にはJGit(JavaのOSS)を使用したGitHubクローン。

紹介記事:

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 2
更新者: msakamoto-sf
更新日: 2014-01-12 23:08:59
md5:15a3280d2ac61bc00a2eb6d65a400244
sha1:69b9fb0aeef48a1ed9fa71262bed2852c8507d56

Java/FindBugs  

所有者: msakamoto-sf    作成日: 2014-01-12 12:54:42
カテゴリ: Eclipse Java Maven 

FindBugsの利用メモ。

FindBugs

メモ:

  • Javaのクラスファイルに対して静的解析を行います。
  • 有名なバグ解析ソフトで、利用者も多く、ノウハウもWebで検索して容易に調べることができます。
  • 本家サイトに日本語マニュアルが用意されている点も魅力です。
  • 開発は UNIVERSITY OF MARYLAND の人間が主体となり、"Google Faculty Research Awards"からの支援も受けてSourceForge上で開発。

Requirements:

  • 解析できるクラスファイルは、1.0 - 1.7 のJDKでコンパイルされたクラスファイル。
    • JDK 1.8 でコンパイルしたクラスの一部では、FindBugs 2.0.x ではFindBugsがエラーとなるケースがある。
    • 次のメジャーアップデートで、1.8のクラスファイルにも対応する予定。

参考:

感想:

  • 利用して、まず損にはならない、非常に有益な解析ソフト。
  • 実際の現場では色々と運用ルールを工夫する必要があるだろう。
    • どういうバグをどこまで見つけ、どのタイミングで修正するか、や、「動いている」既存コードに対する対応方針などを決める必要がありそう。
    • Eclipse/Maven/Ant/Jenkinsといろいろなインテグレーションが可能だが、設定をそれぞれのプラグインで共通化するとなるとそれぞれのプラグインの実装に左右されて、苦労する点も出てくるだろう。
  • Javaクラスファイルに対して解析するため、GroovyプロジェクトでFindBugsを実行できる。ただし、Groovyがコンパイルしたクラスファイルになるため正しい解析結果とならない。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2014-01-12 12:55:39
md5:7a979c5384f589a3ac275d8a4655d489
sha1:c67e7984a0d725f3bf6e379966206cf2b4cc7e64