サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
パリ五輪
plus-idea.net
Windowsのバッチ内などで、文字列の置換を行いたい場合があります。 よく使うのは、現在日付や時間を取得して、そのスラッシュ(/)などを置換し、「YYYYMMDD」形式の文字列にして、ファイル名などに利用するシーンでしょうか。 このような場合、%date%で取得した文字列の何番目から何番目を取って。。。という風に加工してもよいですが、文字列置換の方法を使うと記述がすっきりします。 文字列の置換は以下のような構文で可能です。 実際の例を見てみましょう。
Javaでプログラムを組んでいると、StringからInputStreamに変換したり、逆に、InputStreamからStringに変換を行う必要があることがあります。 特に、ライブラリを利用していて、そのライブラリの関数の引数の型に合わせなければならないシーンで良く使うTipsですね。 最近は、Webサービスを利用することが多く、その戻り値をxmlで解析する場合には、パーサの引数がInputStream型だったり、それをデバッグ用にString型に変換したりするのに多用しています。。 BufferedReader br = new BufferedReader( new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line; while ((line = br.readLine()) !=
ここでは、Linux(私の場合は、CentOS)環境で、Java(JDK またはjre)をインストールする手順を載せておきます。 JDK6とJDK7で、少し手順が異なっているので、両方を解説します。 いずれの場合も、最初に、インストールするディレクトリを作成します。ここでは、/usr/local/javaの下にインストールするものとして話しを進めます。
Windows7の環境にMinGWをインストールする機会があったので、概要とその手順を記述しておきます。 MinGWとは何か MinGWは”Minimalist GNU for Windows”の略であり、ネイティブなWindowsアプリケーションを作成する環境を提供します。 そのために、大きくは2つの主要なパッケージを含んでいます。 ひとつはgccコンパイラで、これによりWindows環境でのアプリのコンパイルを行うことができます。 もうひとつは、MSYSです。これは、”minimal system”の略で、UNIX風シェル環境であり、端末エミュレータと、POSIXライクなコマンド群とが含まれています。 ただし、POSIX準拠にすることに、完全にこだわっているわけではないため、Windows上でPOSIX準拠の開発環境を望む場合は、Cygwinの選択肢も考慮するよう、公式ページにもうたっ
Linuxではファイルのタイムスタンプを更新する場合、「touch」コマンドが使えますが、Windowsではどうするのかのメモ。 Windowsの場合、「copy」コマンドで代用することができます。 上記のようにすると、ファイルの日付(タイムスタンプ)が更新されます。 (filename の部分を変更したいファイルの名称に変えてコマンドプロンプトで実行してください。) 実際には、 「/B(バイナリモード)でファイルの連結を行うが、+の後ろに何もないので、結局は「空白」を追加(=何も追加しない)」 ということになり、更新日付だけが変わるということになります。
TortoiseSVNでは、Windowsのエクスプローラから右クリックでファイルを最新版に更新で来て便利ですが、たまに、 Error Working copy ‘C:<ディレクトリ名>’ locked. Error ‘C:<ディレクトリ名>’ is already locked. のようなエラーが出て、ファイル更新ができなくなってしまうことがあります。
テーブルの結合は、技術者であれば様々な局面で使用することが多いですが、少し間が空いてしまうと、忘れることが多い自分のために、まとめておこうかと。。 まず、例として以下のようなテーブルを用意。 CREATE TABLE 売上 ( "売上ROW_ID" NUMBER, "売上日" DATE, "顧客CD" VARCHAR2(4) ); CREATE TABLE 顧客 ( "顧客CD" VARCHAR2(4), "顧客名" VARCHAR2(255) );
前回の記事(Subversionサーバーをインストール(Windows編))では、svnserveを利用して、主にLAN内のネットワークでのリポジトリ管理を実現しました。 今回は、もうひとつのリポジトリ共有方法である、Apacheサーバを使用してみましょう。これにより、インターネット経由や、もう少し規模の大きいプロジェクトでのリポジトリ共有が実現できます。 Apacheのインストール 最初に、Windows版のApacheをインストールします。これはそれほど手間のかかる作業ではありません。 このページからApache2.2をダウンロードします。今回は、「httpd-2.2.22-win32-x86-no_ssl.msi」としました。 ダブルクリックして、インストールしましょうね。 リポジトリをWebDAV経由で公開する設定 Apacheのインストールが終了したら、subversionのリポ
OpenCVの勉強も、テンプレートマッチングのところまでやってきました。 ひとくちにマッチングと言っても、いろいろな手法があるようで、テンプレートマッチングを実際にコーディングする前に、各手法の大まかな立ち位置を理解しておこうと思います。 特徴ベースマッチング(Feature-Based Matching)と領域ベースマッチング(Area-Based Matching)の違い マッチングの手法には大きく分けて、特徴ベースマッチング(Feature-Based Matching)と領域ベースマッチング(Area-Based Matching)があります。 特徴ベースマッチングでは,画像からエッジやコーナー等の特徴点を抽出し、その周囲の領域から特徴量を計算することで画像間のマッチングを行います。 特徴点を元にマッチングを行うので、画像の変形に強いマッチング方法であると言われています。特徴点の抽
一昔前までは、LinuxからWindowsのデスクトップにリモートでアクセスするためにはVNCを使うのが一般的でした。 でも、世の中ずいぶん進化しているんですねー。最近ではリモートデスクトップ(RDP)で接続できます。 操作感、セキュリティともにRDPの方が上だと思いますので、これからやってみようという人は、ぜひ、RDPを試してみてください。 では、今回私がやろうと思ったことと、その方法について書きたいと思います。 実現したいこと 今、私が外に持ち歩いているネットブックは、Vaio p50で、LinuxMint13がインストールされています。さらに、Windowsでないと動かない常時起動のソフトがあることから、VPSでWindows2013Serverを契約しています。 このWindowsに外出先からRDPでアクセスしたいわけです。 Remminaのインストール LinuxでRDP接続を行
dbms_lob.substr(CLOB型のカラム名,1000,1) AS column1 で、column1に実際の文字列データが入りますが、column1はVARCHA2型に暗黙で変換されるので、最大値は4000バイトということになるんですよね。。。 SQLを投げたときに下記のエラーが出てしまう場合は、バイト数がVARCHAR2に入る最大値を超えていないか確認してみましょう。 ORA-06502: PL/SQL: 数値または値のエラー: 文字列バッファが小さすぎます。が発生しました。 ORA-06512 “PL/SQL: numeric or value error%s”
javaの「java.util.HashMap」はスレッドセーフではありません。 つまり、複数のスレッドから同時に値の変更が行われた場合には、どの状態の値が返ってくるか、保障されていないということになります。 アプリ内でシングルトンのオブジェクトとして値を保持しておくような場合、スレッドセーフな状態に制御するのはすこしコツが要ります。 今までは、synchronizedを使って自分で実装したり、Collections.synchronizedMapを使っていました。 しかし、jdk1.5からは「ConcurrentHashMap」という便利なクラスが使えるようになっています! ConcurrentHashMapはjava.util.concurrentパッケージで提供されている、並行性をサポートする、スレッド・セーフなMapで、パフォーマンスもsynchronized等で実装したときより、
JavaをWindowsのコマンドプロンプト等で実行していた場合に、エラーが出力されることがあります。 エラー内容を見ようとして、 java -classpath libaxis.jar;libwsdl4j-1.5.1.jar org.apache.axis.wsdl.WSDL2Java -a sand_enterprise.wsdl -o src > log.txt のように単純にリダイレクトしても、何も出力されていない。。ということありますよね。 Javaには標準出力と標準エラー出力があり、標準エラー出力の方がリダイレクトされていないためです。
たまに必要に駆られるのが、2つのテーブルを比較して、1つのテーブルには存在するが、もう一方のテーブルにはないレコードを抽出するというもの。 いくつか方法がありますが、今回は主な2つをご紹介。特に②の方法が汎用的で、原理を覚えておくと、様々な場面で応用がききます。 ①差集合演算を使う・・・簡単ですが、比較するテーブルの列数、型を合わせる必要あり。 ②SQLのみで抽出・・・汎用的に使えます。一度原理を覚えると応用がききます。 はじめにデータを用意 では、さっそくやってみます。比較するテーブルは、この記事で用意した【売上テーブル】と【顧客テーブル】を使うことにしましょう。 各々のテーブルには以下のようにデータが入っていることにします。 ①差集合演算を使う 各DBには演算のための組み込み関数があり、差分を演算するものもあります。 PostgreSQL、Oracle、DB2・・・minus MySQ
リモートのWindowsサーバ上のバッチ(.batファイル)を起動する要件があり、方法を検討していたのですが、いろんな方法がありますね。 今回検討した方法に対しては、もうひとつ要件があり、バッチの実行結果(リターンコード)を取得でき、その結果によって呼び出しプログラム側で制御をおこなわなければいけません。 いくつか考えた方法を挙げると、、、 sshdのサーバを立てて、cmd.exeをシェル実行する。SFU後継のSUA(Subsystem for UNIX-Based Application)をインストールして、rshで実行する。IISなどのWebサーバを立てておき、Webアプリとして実行する。JavaのRMIサーバを立てて、RMIクライアントプログラムから実行する。 といったところです。 この中で今回は、3番目のWebアプリとして実行する方法をメモしておこうと思います。 実際のコードを書く
毎晩、家に帰ってきてからPUTTYを使ってサーバにログインして作業しているのですが、毎回ユーザIDとパスワードを入力するのが大変です。 特にパスワードは覚えられるような文字列でもないので、毎回、パスワード管理ソフトを立ち上げて、コピーしているという有様。。。 なんとか、簡単にログインする方法がないかと探してみたところ、コマンドラインにユーザIDとパスワードを渡すことができるんですね。 そこで、PUTTYのショートカットを作成して、「プロパティ」⇒「ショートカット」⇒「リンク先」のところに以下のように設定しました。 "C:Program Files (x86)PuTTYputty.exe" -load 「セッション名」 -l 「ユーザ名」 -pw 「パスワード」 これで、ようやく、ダブルクリックするだけで、自動でログインまでできるようになりました! 他にもいろいろと使えそうなコマンドライン引
Javaのコレクションフレームワークのひとつ、Mapについて、まとめておきます。 結構頻繁に利用するので、、、。 一番良く利用すると思われるHashMapを例にします。 HashMapはキーと値のペアを保持しておくことができるクラスです。 下記例を実行すると分かるように、同じキー名で値をputすると、後からputした値で上書きされます。 また、以前はキーと値をループで回しながら扱うのがすこしめんどくさかったのですが、拡張for文を使うことで、すごくすっきりとした記述で扱うことができるようになりました。 記述例 import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class TestBatch { public static void main(String args[]){ Ha
運営しているサーバのサービスで、ある検索条件に対する結果を一覧で表示しているのですが、結果を全て表示するのではなく、なるべく似た結果を省いて表示したいという要望に駆られました。 例えば、あるタレントが出演しているDVDや番組を一覧表示するとして、全ての番組名を表示すると、同じ番組名の放送日が異なるものや、同じシリーズのDVDで巻数が異なるものがたくさん表示されてしまいます。 そのため、こういうものを除外して、そのタレントが、どんな作品に出てきたかのサマリーを俯瞰できるような結果を返したいと思ったわけです。 そこで考えたのは、2つの文字列を比較して、類似度がある閾値より高ければ、同じ作品の巻数違いとか放送日違いだと見做せるのではないかということです。 そこで、2つの文字列の類似度を判定する方法を探したところ、あるんですね。世の中にはすごい人がいるものです。 良く知られた方法としては、以下の2
Javaのclassファイルをでコンパイルして確認したい時に利用できる方法です。 Javaのeclipseでデバッグをしている時、なんだか振る舞いが想定と違う場合があります。 自分で書いたソースだと、不具合が発生している部分が特定しやすいですが、jarライブラリを利用していると、どこで不具合を生じているのか、検証しにくい場合があり、ソースを閲覧してみたい場合があります。 通常、classファイルをeclipseでダブルクリックしても、ソースを見ることはできません。 そんな時には、Javaのデコンパイル可能なモジュールをセットアップすることで、ソースを見ることができるようになります。 どのJavaのデコンパイラを使うか 一昔前までは、「Jad」というプロジェクトが有名だったのですが、開発がストップしており、javaのバージョン1.5以上だと、対応していません。 また、一時期有名だった、「Ec
前回の記事では、「Microsoft Translator」を利用するために、ユーザ情報の登録までを行いました。 一カ月当たり20万文字までは無料で翻訳できるんでしたね。これはすごい。個人レベルの仕様では充分だと思います。 さて、今回は登録した「Microsoft Translator」のAPIを利用します。 Javaを利用してAPIに翻訳してもらうことにしましょう。 アプリケーションの登録 前回、「プライマリアカウントキー」と「顧客ID」が重要ですというお話をしましたが、ここで、新規にアプリケーションを登録して、「クライアントID」と「秘密キー」を生成しておきましょう。 APIの使用には、この「クライアントID」と「秘密キー」が必要でした。実際にCalしたところ、上記の「プライマリアカウントキー」と「顧客ID」でも呼び出しは成功しましたが、失敗する確率が非常に多く、使い物にならず、悩んで
前回の記事で、eclipseにJava Decompilerプラグインをセットアップしましたが、動かない場合があります。 その原因と対処法について、2通りご紹介したいと思います。 ①class用のエディタが正しく設定されていない。 Eclipseでclassファイルを開くためのエディタを正しく設定する必要があります。 Window -> Preferences -> General -> Editors -> File Associations を確認してください。 「J010」のアイコンのClassFileViewerではなく、コーヒーカップのアイコンのViewerが設定されていることを確認しましょう。 ②ClassFileEditorのライブラリが正しく呼び出されていない。 eclipseに下記のようなエラーが出ている場合は、Java Decompiler用のClassFileView
プロキシのタイプ(Proxy type)・・・HTTPを選択します。プロキシホスト名(Proxy hostname)・・・企業または学校のプロキシサーバのアドレスを設定します。ポート(Port)・・・企業または学校のプロキシサーバのポート番号を設定します。 です。後の項目はデフォルトでOKです。 それでも接続できない場合 特に、「HTTPエラー403-アクセス不可」や「Proxy error: 403 Forbidden」が出てしまう場合には、利用しているproxyの設定で、httpのポートで「connect」メソッドが許可されていないのが原因であることが多いです。 セキュリティ上、httpポートでの上記メソッドが発行できない設定になっていることがあります。 そのような場合は、ssl通信を装うため、sshサーバの方のポートを443番に変更して接続します。 (接続先のsshサーバの設定を変更
ダウンロードとインストール まず、このページからインストールモジュールをダウンロードしてきます。今回はバージョン1.7.4の、「Setup-Subversion-1.7.4.msi」にしました。 Windows版のSubversionでは、サーバとして、軽量スタンドアロンサーバであるsvnserveとApacheも利用することができますが、1.6.0以上のバージョンではApahceサーバとしては、Apache2.2以上をサポートしています。 それでは、ローカルのPCに保存したセットアップファイルをダブルクリックしてインストールを開始します。 インストールが終わったら、下記のコマンドをコマンドプロンプトから打ち込んで、インストールが正常に終了したかを確認します。 このような画面が表示されたら成功です。 上記でエラーが出た場合など、必要であれば、環境変数PATHに、SVNの実行ファイルの場所を
Serveltのフィルタを使う場合 私のWebサービスはJavaのサーブレットで作成しているので、フィルタを作って、Servletのレスポンスに上記のヘッダを付加してあげることにしました。 こんな感じです。 public class CorsFilter implements Filter{ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest)request; HttpServletResponse res = (HttpServletResponse)response; res.setHeader
次に、svnserveサーバの設定を行いましょう。Subversionのサーバとしては、軽量なsvnserveサーバと、ApacheのWebDAVを利用したサーバ公開を利用できますが、まずはsvnserveで設定と動きを確認することにします。ローカルのネットワークでバージョンの管理を行うには十分です。 svnserve用の設定ファイルは、上記の例でいうと、/var/myrepo/confに「svnadmin create」コマンドにより生成されています。/var/myrepo/confに、authz、passwd、svnserve.confのファイルができているはずですので、確認してみましょう。 svnserve.confは、svnserveサーバが利用する、アクセス制限等を管理する設定ファイルですので、このファイルに、以下のように設定をします。
前回述べた一次微分フィルタは、画素同士の輝度の変化が大きいところを捕らえるのに向いていました。 ただ、輝度の変化が大きいところが必ずしも、輪郭を示しているわけではない場合があります。 そういう場合、一次微分だけでなく、二次微分を使うといい場合があります。 その基礎的な原理について理解しておきましょう。 一次微分と比べた、二次微分の幾何学的な意味 たとえば、陰影のあるりんごの画像を思い浮かべてみてください。 輝度変化に基づくエッジ抽出ロジックだと、光の当たっていると影の部分がエッジとして抽出されてしまうことになります。 そこで、隣り合った画素の輝度変化だけでなく、周りに比べて「その変化の程度」が大きいところを抽出するというロジックが考えられます。 隣り合った画素同士の変化量を一次部分だとすると、その変化の程度というのはそれをさらに微分すること、すなわち2次微分することによって求まるといえます
この方法はApacheのライブラリを使います。 別に、Javaの標準クラス「HttpURLConnection」を使った方法もあり、場合によってはそちらの方がシンプルで良いという人もいるかもしれません。 その方法については、以下に記事を書きましたので、そちらを参考にしてください。 import java.util.ArrayList; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apa
javaのプログラムからSSLで接続する場合に、OpenSSH等で作成した自己証明書を使っているサイトを利用する場合があると思います。 特に、開発時など、正式な証明書が用意されていない時や、開発環境へのアクセスなどが考えられますね。 それ以外にも、javaが正式なルート証明書だと認識していない証明書を使っている場合には、以下のようなエラーが出て、接続に失敗してしまいます。 javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated at com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates(Unknown Source) at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVeri
キーワードで画像を検索した結果を自分の管理しているBlogに表示したいと思い立ち、Webサービスから無料で利用できる画像検索サービスについて調べてみました。 以前は様々なWebサービスが無料で利用できていたような印象がありますが、最近ではサービスを提供する各企業が徐々に収益化を考えており、無料での利用に制限を設けていることが多いようです。 そのため、Webサービスを利用する際には、その特徴や制限を良く理解したうえで選択しないと、後で痛い目にあいそうな気がします。 同じようなことを考えている方の参考になればと思い、いくつかの画像検索サービスについてまとめてみます。 Google Image Search API Googleのイメージ検索用APIです。 各プログラム言語から呼び出しが可能です。 JavaScriptからの呼び出しだと、非常に簡単ですが、残念なことに、2011/05/26より、
次のページ
このページを最初にブックマークしてみませんか?
『plus-idea.net』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く