Wednesday, May 28, 2014

[Programming] #3: How NOT to use default arguments

A friend of mine described this code he saw the other day to me in the legacy code of the game he is working in that involves default arguments in functions. I imagine that it looks something like this (it's in PHP):

//PHP!!
bool someFunc( $a = -1, $b = -1 ) {
    // Defensive programming!
    if ( $a == -1 ) {
        return false;
    }

    // More defensive programming!
    if ( $b == -1 ) {
        return false;
    }

    return true;
}
It's funny because you can tell the innocent thought process of the programmer who wrote this. It's simple: preset default unwanted values and reject them if they are not set. That way you can ensure that they are set by the invoker!

Except that it is much more robust and safer if the programmer would just remove the default arguments, together with the defensive programming lines of code.

I wonder if that programmer got stuck while dealing with a language without default argument support?

Tuesday, May 20, 2014

[Programming] #2: Negate bits without conditions

So here's a quick trick with bits! I love bits operations ^_^.

Back when I was a student in Digipen, I did this rather naive way to negate bits:
char bits = 11 //1011
char mask = 2  //0010
if ( bits & mask ) { // AND operator
  bits ^= mask; // XOR operator
} 

Code itself is pretty self explanatory. You will need the 'if' condition because if you XOR 0 and 1, you'll get 1 which is wrong (remember that I wanted to set a 1 to 0). It's a rather shortsighted method that looks only at the bit I want to set to 0, and just...sets it to 0.

There has to be a better way to do this though. Invoking an 'if' condition to do a quick bit-wise operation seems counter-productive. So I sort of wrote them down like so and solve for w, x, y and z.

1011
wxyz &
-----
1001

There are actually 2 answers: 1001 and 1101. From here it just seems kind of mathemagical from my point of view, because the next step in my mind is to somehow find the answer closest to 0010 (closest meaning the least amount of steps to get to 0010), which is 1101. Negating 0010 would just give me 1101.

It's kind of baffling how much sense the answer makes, and how elegant it is since it works for any other values. I don't really know if there is a less accidental approach to derive the answer. If there is let me know. This is how I accidentally derived it (without Google).

Anyway, knowing that we can simply make the adjustment:
char bits = 11 //1011
char mask = 2  //0010
bits &= ~mask; // NEGATE and AND operator, bits = 1001

And we are done!

Sunday, May 18, 2014

茅原実里の重大発表会見

ええ。。。

明日はニコニコで茅原実里の重大発表会見を見ました。そこで、みのりんは10周年のためにいろんなイベントと製品を発表しました。。。え?

10年? もう10年!?

放送が始まるとき、先ずはみのりんの2004の長門有希の声優役のこと、そしてその後の数年間のシングルとアルバム、最後に「みのりんの10周年のデビュー軌跡」と言う文を見せられました。

本当に10年か。。。

みのりんのファンになった理由は長門有希ので、私最初からみのりんのファンだという意味ですか。そしてもう10年ですか。

速いね。私は古いねww。

とりあえず、みのりんは製品の発売日を発表しただけじゃない!二つコンサート開催するつもりです!8月2日と3日に「SUMMER DREAM2」です。それからみのりんの誕生日の11月18日に武道館公園です。

どうしよう。。。。

8月29日の私はアニサマの予定です。コンサートは全部行きたいけど、1つを選べなきゃ。航空券が高いから、1年に1回だけ日本に旅行できます。。。

(泣)












Tuesday, May 13, 2014

[Programming] #1: Accidental assignment to constants in conditions

Since I'm programming like...ALL THE TIME, might as well share some cool/stupid/retarded/awesome stuff along the way right? 

So let's start with something simple. You should have seen this at least once in your programming career. You want to write a simple statement like so:
bool isHappy = true; // I AM HAPPY!
if ( hello == false ) {   // WHEE~~
  // Awesome stuff happens
}

And you end up writing this:
bool isHappy = true; // I AM HAPPY!
if ( hello = false ) { // WAIT WHAT ARE YOU DOING?!
// Unintentional crap happens
}

Nobody I know does this on purpose, so it's usually an accident of forgetting the extra '=' to turn it into the comparative '==' operator. If you DO write code like this, please don't. For saving 1 extra line (basically placing it outside), you are confusing everyone including and potentially your future self when you revisit the code.

There is a surprisingly elegant way to handle this though. Basically flip the values like so!
bool isHappy = true; // I AM HAPPY!
if ( false = hello ) {   // compile ERROR
  // nothing happens!
}

This will force an error because you are trying to assign the boolean 'hello' to a constant value. If you write it correctly like so:
bool isHappy = true; // I AM HAPPY!
if ( false == hello ) { // YAY!!  
   // Awesome stuff happens
}

It is the same as the original intent! And you won't go wrong this time! Now you can rest assured that all your conditional statements involving constants are safe.

最近の話し

誕生日に過ごしました!

家族と親戚たちは誕生日のために祝ってもらいました。嬉しかったけど、あの日の私は本当に出かけたくなかったね。ですが、私そんなに非常識な人じゃないので、皆さんに感謝しました。

そんなこんなで!

二週前、このブログに日本で書きましたね。実は他のブログは日記のために作って日本で書きましたけど、すぐに諦めてしまいました。それは二つのブログを管理することは大変だと思いました。又は作ったとき、大学生なので時間が持ってないから。

とりあえず、どうして急にまた日本語で書きたいですか?

先ずは、私最初から日本のこと興味があります。日本食べ物とかゲームとかアニメとか文化とか習慣は全部興味があります。さらに、働いている会社は日本会社です。そんな環境で働いたら、耐えられないほど日本語を習いたくなります。それに、日本語に慣れるためです。日本語で書けば書くほど慣れると思います。それで、日本語で書きましょう理由です。

というわけです。

最近、いろんなアニメにはまっちゃったんだね。

「ラブライブ」というのは、実は二年前初めて日本に行った時、秋葉原にアニメの開催お知らせは気づけましたけど、あまり興味がありませんね。先々週の私は、友達が困らせた後で、やっと見ました。見たあとで「ラブライブ」のμ’sの皆さんはとっても可愛いと思ったんだw。自分の大好きな部員は勿論小泉花陽です!突然に「ラブライブ」のファンになっちゃった!携帯ゲームもやります!


今季のアニメとして、「ラブライブ」以外、「一週間フレンズ」と「ご注文はウサギですか」です。

「一週間フレンズ」のストーリは自分の期待どおりちょっと悲しいです。このアニメは何か親切な感じを気にしました。絵のスタイルは新鮮で似合います。悲しいから、放送が終わったら一回で見てしまいましょうかな?でも、このアニメのホームページは毎週の放送に関係した内容で更新します。困るね。。。


最後の話は「ご注文はウサギですか」。友人によると、これは今季のヒーリングアニメです。そういうヒーリングアニメは自分の一番大好きなジャンルです!このアニメはすごっっっく可愛い!多分「きんいろモザイク」と「のんのんびより」よりふわふわを感じますかな。それに、自分の好きな飲み物の関係もある!そうだ、それはお茶とコーヒーだ!>:3


それでは以上です!それじゃ!

Thursday, May 1, 2014

ランダム日本語ポスト

はい、今度のポストは日本語でしてみましょう。

じゃ、只今夜中に過ごして五月になりました。時間は本当に早いですね。私今日までコーエーテクモに働くことはもう11月でありますね。すぐに1年になります。。。

実際にこの1年は、僕の初めて真面目に働きました。むかしの仕事はいつも3月以下で退屈になちゃった。この会社に入ったとき、僕はこの会社に3月以上で続けて働けるかなと思いました。突然に1年に過ごしましたww

この1年で、本当にたくさんものが起こった。考えれば、過去の例年よりもっとものが起こりました。理由の一つは多分僕の毎日の生活が多く変わりました。例えば、遊ぶ時間が少なくなるとか、お金が持っているになるとか、体は毎日朝から夜まで働くのでいつも疲れるとか、などなどです。この間、会社外の友達に会いたいけど、会う機会は少なくなった。この間、格闘ゲームを時間がないので練習できなくなった。週末以外、毎日この起きて働いて帰って寝る生活を過ごします。そう考えれば、その生活について嬉しいかな?

嬉しくないと答えれば嘘でしょ!(笑)

今時間がないですが、仕事があるから、自由度が増えました!仕事から、買いたいものは買えます。特に日本に旅行できます!最終の日本旅行はとても楽しかった。みのりんの演奏も参加しました!あの時は泣いたほど嬉しかったですw!仕事がなければ、今まで26歳で、日本に行かなかったオタクでしょ。

そして、コーエーテクモに働くことは楽しんです。いろんなことを習えるし、同僚は親切し、働くゲームは可愛いですから。疲れても、今まで満足ですよね。

でも、確かに全て持てないね。嬉しくても、もっと時間を持ちたいなw。

ま、いいか!今の幸せは間違いません。来年のは楽しみましょう!