[R] vectorとlistの関係

generic vector

Rのドキュメントを見ると、listの説明として、"Generic Vectors"という言葉が出てくる。

https://www.rdocumentation.org/packages/base/versions/3.4.3/topics/list

んー、なんだこれ。と思ったんだけど、vector関数の挙動を見たら、なんとなくわかったような気がする。

[Python] classメソッドとstaticメソッド

classメソッドとstaticメソッド

Pythonにはclassメソッドとstaticメソッドがあるけど、Javaなんかに慣れたプログラマーからすると、最初はわかりづらい。

具体的にはこんな感じ。

class.py
#!/usr/bin/python
class BaseClass:
  @classmethod
  def class_method(cls):
    print("class_method: {0}".format(cls))

  @staticmethod
  def static_method():
    print("static_method: {0}".format(BaseClass))

class SubClass(BaseClass):
  pass

BaseClass.class_method()
BaseClass.static_method()
SubClass.class_method()
SubClass.static_method()

[C] inline関数再び

インライン展開されない場合の挙動

以前、[C] ヘッダファイルで、関数マクロではなくstatic inline関数を使うでstatic inlineにすれば、関数名の競合が起こらないという記事を書いた。

この方法だと安全ではあるけど、インライン展開は必ずされるわけではないので、コンパイル時にインライン展開されなかった場合、各コンパイル単位で関数の実体が作られてしまう。
そうすると、ソースファイルが多い場合、バイナリファイルのサイズに影響を及ぼしてくる。

[R] Rの標準入出力

Rで他のスクリプトと連携できないかと思って、標準入力から読み込んで、標準出力に加工後のデータを出力するスクリプトを作ろうとしたら、変なところではまってしまった。

まずはこれ

最終的にはこうなった。

[R] vector要素へのアクセス

CやJavaに慣れたプログラマーがRを使おうとすると、配列の扱いという基本的なところで、いきなり戸惑ってしまうことがある。

array? vector?

まず異なるのはarrayというのが、CやJavaのいわゆる配列とは別のデータ構造を意味しているということ。
https://cran.r-project.org/doc/manuals/r-release/R-lang.html#Attributes

CやJavaの配列に相当するのはvectorになる。

[Java] 符号なし整数の扱い

符号なし用メソッド達

Javaのintやlongは符号あり整数で、Cのunsignedのような修飾子は存在しないため、Javaでは変数の型を明示的に符号なし整数にすることはできない。
ただし、Long,Integerに用意されているメソッドを使えば、intやlongを実質符号なし整数とみなして計算することはできる。

それぞれ、以下のようなメソッドが用意されている。

[Oracle] SQLのトークン区切り

2FFROM

OracleでSQLのトークンの間にスペースが入っていないのに正常に実行されてしまうケースがあった。
要約するとこんな感じ。

> SELECT 2 FROM DUAL;
2

> SELECT '2' FROM DUAL;
2

> SELECT 2FROM DUAL;
ORA-00923: FROMキーワードが指定の位置にありません。

> SELECT 2FFROM DUAL;
2.0