【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からファイルをダウンロードする際、対象ファイルは自動的にウィルススキャンされる仕組みとなっているのですが、25MB以上の大きなファイルについてはウィルススキャンの実行に失敗してしまうためです。 色々と検証を重ねた結果、最終的にダウンロードに成功しましたので、備忘録を兼ねてGoogle Driveからサイズの大きなファイルをダウンロードする方法についてご紹介致します。

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

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

Linux、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も削除されてしまうため注意が必要です。

MariaDB(MySQL)におけるデータベースの作成とユーザ作成および権限付与について

MariaDBとMySQLは姉妹関係にあるRDBMSになります。どちらもアプリケーションで登録するデータを保存するために必要なソフトウェアです。 違いはMySQLをもとにパフォーマンス改善し、後発として誕生したものがMariaDBです。 MariaDBもしくはMySQLをインストールした後はデータベース(DB)の作成と、作成したDBを操作するためのユーザ作成が必要になります。自身でWebアプリケーションを構築する際やWordPress、DrupalといったCMSをインストール際にDBの構築作業は必要になります。 また、MariaDB(MySQL)はレンタルサーバでよく使われています。 レンタルサーバでは大抵管理メニューから簡単にDBの作成ができるようになっておりますが、管理メニュー等の便利機能に頼らずともデータベースの作成やユーザの作成ができるようにしておいたほうが吉です。

青色事業専従者の給与と労働基準法の最低賃金の関係性

最低賃金が改定され、東京都で1013円、神奈川県で1011円と1000円を超えるようになってきましたね。 しかしながら、個人事業主と青色事業専従者は労働基準法の定義から「労働者」ではないため、労働基準法でいう最低賃金はあまり関係がありません。個人事業主は賃金を支払う立場であり、「事業に使用される者」「賃金を支払われる者」である労働者の定義から外れます。青色事業専従者につきましても、個人事業主と生計をともにする家族であり、個人事業主と同じ立場としてみなされます。 従って、最低賃金の改定にあわせて青色事業専従者への給与額の見直しは基本的には不要です。 しかしながら、最低賃金が関係しないからといって仕事量に対して賃金の支払いが過度に少ない・多いとなると、それはそれで問題があります。 法的には青色事業専従者の給与と最低賃金は無関係になりますが、給与額を決める際には、最低賃金を目安に仕事の内容や1日の作業時間などから適切な給与額を算出すると良いと思います。