Yuki猫のおうち

気ままに自由に日々を生きるエンジニアのブログ

みんなこのブログに何を期待しているの...?

月間アクセス数が100PVを超えた

ここ最近全く更新していないんだけれど、なぜか1月の月間アクセス数が100PVを超えた。

f:id:yukineko4you:20160129130040p:plain

一体みんなこのブログの何を見に来ているのだ...?

f:id:yukineko4you:20160129125912p:plain

unixのコマンド周りは結構覚えることが多くて面倒くさいし、みんな困ってるのかしら?

macとwindowsのテキストファイルの改行コード問題を解決してみる

あれ、私の一行長すぎ...!?

macで作成したテキストファイルをwindowsで開いた時に、改行コードの違いで複数行の文章が一行になっちゃうこととか、ありますよね。

一般的なmac OS Xの改行コードは LF で、windowsの改行コードは CR+LF なので、この違いによるものなんですが...

あの現象を解決する方法を調べたのでメモっておきます。

nkf最強説

どうやら、nkfコマンドで簡単に変換できるらしい。

参考ブログ >> 改行コードの変換

以前当ブログで文字コード問題でnkfコマンドを使った記事を書いたけど、改行コード問題も解決出来るとは...
まぁ改行コードも言ってしまえば文字コードだし、結局一緒か。

yukineko4you.hatenablog.com


以下のコマンドで、macの改行コード -> windowsの改行コード の変換ができる。

$ nkf -Lw hogehoge_mac.txt > hogehoge_windows.tx

nkfコマンド、とても強いです。

卒論に便利!TeXで表を書くときにお世話になったサイト

TeXで卒論書きました

さてさて、卒論提出の時期ですね。

僕もTeXで卒論を書きました。そのときに、numbersでまとめていた実験のデータを論文に乗せるときにお世話になったサイトです。

カンマやタブで区切られたデータ列を、TeXの表の形式に変換してくれます。

csvをLaTeXのtabularで使える形式に


これを...

f:id:yukineko4you:20160129124636p:plain

こうすると...

f:id:yukineko4you:20160129124653p:plain

こうなる!!

f:id:yukineko4you:20160129124658p:plain

超便利!

追記: 無事卒業できそうです。

小説書きました『初恋の君へ』

文学活動です!

僕は趣味で物書きをしているものだ。

どこぞのヒーローみたいにワンパンで読者を沈めることはできません。

久しぶりに時間ができたので、一本短編を書き上げましたのでご報告をば。

初恋の君へ
※ なろうに飛びます

[java]DateFormatクラスでログファイルの命名が簡単に!

DateFormatクラス

Javaでコーディングしていて、ログを出力するときのファイル名を決めるのにDateFormatクラスがすごく便利だったのでメモ。

SimpleDateFormatクラスのコンストラクタの引数に、出力したい形式の文字列を渡せばいいだけ。
それぞれの記号の意味や実例などの詳細はJavaDocにめっちゃ詳しく書いてある(しかもすごくわかりやすい)のでここでは省略。

SimpleDateFormat (Java Platform SE 6)

ソースコード

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
  public static void main(String [] args) {
    DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
    System.out.println(df.format(new Date()));
  }
}

実行結果

2015/11/13 01:22:44.183

[PHP]日付から曜日を求める

はじめに

PHPで日付から曜日を計算してくれるプログラムが必要になったのでメモ。

ソースコード

<?php
   date_default_timezone_set('Asia/Tokyo');

   function getDateOfWeek($dateString) {
     $parseDate = explode("/", $dateString);
  
    $date = $parseDate[0].'-'.$parseDate[1].'-'.$parseDate[2];
    $datetime = date_create($date);
    $week = array("", "", "", "", "", "", "");
    $w = (int)date_format($datetime, 'w');
    echo $dateString.' ('.$week[$w].")\n";
}

4行目のexplode関数の第一引数を変更すれば、いろんな区切り文字に対応できる。

実行結果

入力: 2015/11/13
出力: 2015/11/13 (金)

入力: 2015/11/13
出力: 2015/11/14 (土)

入力: 2015/11/15
出力: 2015/11/15 (日)

入力: 2015/11/22
出力: 2015/11/22 (日)

Eclipseで作ったjarを実行したら文字化けした時のお話

Eclipse上には独自の環境が構築されているらしいぞ

Eclipse上では正常に動作していたプログラムを、jarファイルとして出力してwindowsで実行したらなぜか正常に動作しなかった時のお話。

プログラムとしては、キーワードが書かれたファイルを読み込んで、Wikipedia APIを使ってキーワードのwikipediaページを取得するというもの。

wikipedia.simpleapi.net

それで、httpでPOSTした時になぜか結果が表示されないという問題が起こりました。

悪いのはだいたい文字コード

何が原因だったかというと、文字コードでした。

windowsでは、OS標準の文字コードがShift-JISになっているのですが、ファイルの入出力の際にFileInputStreamでUTF-8指定して読み込めば大丈夫だと思ってました。

事実、Eclipse上ではそれで実行できていたわけですし。
ただいろいろ調べてみると、どうやらこれはEclipseの環境設定でText file encodingの設定をUTF-8にしていたから動作していたわけであって、jarとして出力した場合は実行時に以下のように環境変数でencodingを設定しないといけないらしい。

java -Dfile.encoding=UTF-8 -jar hogehoge.jar

でも、いちいちターミナルから実行するなんてめんどくさいですよね。
せっかくjarにしたんだからクリックで起動したい。

そこで、ソースコードに次の一文を書き加えれば、実行時ではなく、実行後に環境変数の設定を行うことができます。

System.setProperty("file.encoding", "UTF-8");

これで文字コード問題は解消されて、クリックで起動してもちゃんと結果が返ってくるようになりました。

注) setPropertyメソッドの第二引数を変更すると、UTF-8以外の文字コードも設定できます。