【Hyper-V】ホストOSからCentOS7のデスクトップにファイルをコピペする方法(クリップボード共有)

当該記事では、Hyper-Vで構築したCentOS7環境にxrdp経由でアクセスすることで、ホストOSであるWindows環境からCentOS環境へファイルをコピペする方法をご紹介致します。 「続:Hyper-VでCentOS7環境を作る」でHyper-Vで構築したCentOS7環境にxrdpを使ってアクセスすることでファイル共有できるようにする方法をご紹介致しましたが、xrdp 0.9.11では不具合の為接続できませんでした。 2020年4月19日現在ではxrdpのバージョンは0.9.13となっており、hvsockを利用したアクセスに関する不具合は解消しております。

【Java】gzipやwgetなどの外部プロセスを実行する方法

Javaで外部プロセスを実行する方法についてご紹介致します。 Javaで例えばgzipコマンドやwget、curlコマンド、nkfコマンド等の外部プロセスを実行したい場合、方法としてはProcessBuilderとProcessを利用します。 Java1.4以前はRuntimeを利用しておりましたが、1.5以降からはRuntimeではなくProcessBuilderが推奨されます。 外部プロセスを実行する場合、外部プロセスの標準出力、標準エラーはProcessのInputStreamが受け手になります。 そのため、注意点としましては、InputStreamを読み込まずにいると、外部プロセスの標準出力、標準エラーがバッファサイズを超えてしまう可能性があり、そのような状況になると外部プロセスは標準出力への出力ができず、待ち状態となってしまいます。 さらにJavaプログラム上で外部プロセスの終了を待つようにしていると、外部プロセスはバッファが空くのを待っており、Javaプログラム側はプロセス終了を待っているというお見合い(デッドロック)状態となってしまう可能性があります。 従って、外部プロセスを実行する場合は標準出力と標準エラーを読み込むようにするか、ProcessのInputStreamではなくファイルへ出力するなど標準出力、標準エラーへの出力が待ち状態とならないように工夫する必要があります。

【PHP】ファイルダウンロード処理を記述する場合の注意点

PHPにおけるファイルダウンロード処理のサンプルを紹介致します。 PHPでファイルダウンロードをする際、ファイルサイズが小さければさほど問題になりませんが、大きなファイルをダウンロードする場合はバッファリングに注意する必要があります。 そうしないとPHPに割り当てられたメモリでは処理できずにファイルダウンロードに失敗します。

【Java】Google Drive APIで大きいサイズのファイルをダウンロードする方法

皆さんはGoogle Drive APIを利用したことがありますでしょうか? 最近Google Drive APIを利用する機会があり、その際に提供されているAPIではどうにも解決できない問題に直面しました。 それはサイズの大きなファイルをアップロードすることはできても、ダウンロードすることができないという問題です。 なぜダウンロードできないかというと、Google Driveからファイルをダウンロードする際、対象ファイルは自動的にウィルススキャンされる仕組みとなっているのですが、100MB以上の大きなファイルについてはウィルススキャンの実行に失敗してしまうためです。 色々と検証を重ねた結果、最終的にダウンロードに成功しましたので、備忘録を兼ねてGoogle Driveからサイズの大きなファイルをダウンロードする方法についてご紹介致します。

【Java】Google Drive APIでGoogle Driveに接続する方法

最近Google Drive APIを利用する機会があり、API利用までの手順がやや面倒でしたので、備忘録を兼ねてご紹介したいと思います。 プログラムのサンプルはJavaですが、基本はGoogleから提供されているサンプルがベースになります。 API利用までの事前準備は他の言語においても共通になりますので、他の言語を利用の方はGoogleで公開されているサンプルソースをもとにプログラム部分だけ差し替えて読んで頂ければ幸いです。

MySQL5.7における全文検索の実装方法について

以前、MySQLのデータベースエンジンであるInnoDBの全文検索を導入するために、MySQL5.6から5.7へバージョンアップしたのですが、InnoDBにおける全文検索は思ったほどのパフォーマンスは得られず、全文検索に特化したMroongaエンジンを利用することにしました。

本記事ではInnoDBおよびMroongaの両方について紹介致します。

※ おすすめはMroongaです。

全文検索とは簡単にイメージを掴んで頂くと、Google検索のようなキーワードによるデータ検索機能です。

例えば、会社でPCを貸与してもらうとき、交通費などの精算を行うときなど、何か所属部署の上長に許可を頂く際は申請書を提出すると思います。ほとんどの会社では紙での申請ではなく、システム上で申請する会社が多いと思います。

このようなシステムにおいては、自分自身が登録した申請書や、自分が承認しなければならない申請書を検索したり、〇〇申請書やXX申請書といった申請書種類で検索したりなど、目的のデータを発見するために検索機能が備わっています。

【yumの基本】CentOS環境でyumを使ってソフトウェアをインストール、アンインストールしたり、インストール済みライブラリを調べたりする方法

CentOSで様々なパッケージライブラリをインストールする際にyumを利用します。 perl, php, mysql, postfix, python, java, httpd 等々ソフトウェア開発に必要なものも大抵はyumコマンドでインストール可能です。 開発環境を整えたり、ライブラリのバージョンアップを行ったりする際にyumは利用しますので、yumを利用する際に最低限知っておきたいコマンドを紹介致します。

Linuxにおける日本語名フォルダを英語名に変更する方法(デスクトップ、ダウンロードフォルダ等)

Hyper-Vを使ってCentOS7をインストールし、xrdp,xorgxrdpを利用した接続をする方法を紹介した際にも触れましたが、インストール手順の記事は長く、目的も違うため、改めて該当部分のみ再掲載致します。 CentOS7を日本語でインストールすると、各種標準のフォルダ名が日本語名になります。GUI環境であるとはいえ、Linuxでは端末(ターミナル)を開いてコマンドでファイル操作を行うのが一般的です。(そのほうが便利で楽なのです。) その際、コマンドでファイルのコピーや移動を行ったりするのですが、端末操作は基本アルファベットなので、フォルダ名が日本語だと端末でのコマンド入力が煩雑になります。そのため、フォルダ名は英語のほうが扱いやすいです。文字化け防止にもなります。

MySQL5.6から5.7へのアップグレード手順 (全文検索でngramを利用するために)

MySQLで全文検索機能を実装しようとした場合、MySQL5.6以上から日本語の全文検索に対応しています。しかしながら、MySQL5.6ではngram等のパーサに非対応で、FULLTEXTインデックスの利便性が悪いです。検索精度を向上させるためには、FULLTEXTインデックスを付与したカラムに自前で工夫したキーワードを登録する必要があります。 キーワード生成の自前作成をアプリ側でやろうとするとパフォーマンスも悪く、煩雑なデータ登録ロジックになるため、ngramのパーサに対応しているMySQL5.7へバージョンアップすることにしました。 基本的には古いmysqlのライブラリを削除して新しいライブラリをインストールすることでバージョンアップ可能なのですが、依存関係にあるpostfix、crontabも削除されてしまうため注意が必要です。