2014/08/09

この会社どうして存在できるのだろう?


入社してまだ4ヶ月程度だがこの会社は杜撰すぎる。理由を淡々と述べていく
  • ソースコードが汚い
新規に書くコードでもF77スタイルなんですが? 馬鹿なの?
  • ソースコードの管理体制が適当
svnを一部の人が使用していたので、担当するパッケージに導入しました。私以外の人は使えてませんが
  • 他社のコードが入っていた
はいアウト。私が消しました。
  • スキルが新入社員の私にも劣る人がほとんど
どうしようもない 。実装に関する知識では、ある専門学校出身の人が一番凄いと思う、分野によっては私もかなわない部分もある。でも給与面でかなり冷遇されている。早めに老害を切って優秀な人を安い金で雇え。
  • スキル高い人ももう諦めている
このまま残ったら自分もこうなってしまうのだろうか?
  • 経営陣の技術及び管理スキルが低い
なぜ、少しの機能追加に1000行も追加が必要なコード vs カプセル化されたコードで前者が優れていると判断するのだろう? 個人スキルで前者をどうにかしていく方針らしい。社長が32bitと64bitのアドレス空間の違いを理解していない。
  • 自転車操業
メインバンク以外に2行が頻繁に訪れているのだがどうしよう。
もう転職考えてる

2014/05/04

2014/05/02

会社が停電

メンテナンスのため会社が停電するらしいので、データのバックアップをかれこれ4時間ぐらいしてる。もう帰りたい。きょうは実家に帰っていぬをもふもふする (重要)。

2014/04/29

未だにPPP通信

DHCPなんで技術はいらねーぜ。

暇になったら、いらない古いノートをrouterにする。

プロバイダからのはハゲのところに返却しないとお金取られる。

2014/03/30

明治の人

妹の結婚式の写真で自分だけ笑ってなくて, 母に「あんただけ明治の写真の人みたいだ」と言われました。orz

2014/03/29

母親が出席した結婚式

今起こったことをありのまま話すぜ。

1) 今日、母親が母親の職場の同僚の結婚式に出席した。

2) ついさっき、小中の同級生が本日結婚したことをfacebookで書いていた。ちなみにこの同級生は、母親の同僚。

3) 母親に聞く

4) 母、白状する。

5) 引き出物を父と食べる (゚Д゚)ウマー

正直、写真見てもあんまり思い出せない人なんだよね、facebookで繋がってもないし。一応お祝いのメッセージぐらい送っておくべきなのだろうか ?

母校のサーバー

母校のfep死んでるな. 今日中にデータ移したいものがいくつかあったのに.

隣の研究室の某fepも死んでいるところを考えるとネットワークが御逝きになられたようだ.

installation of debian 7.4.0 to HP mini 2140

installation of debian 7.4.0 to HP mini 2140 has done.

Troubles I faced.

USB debian image was not detected by HP mini 2140. Use external CD/DVD drive.

broadcom 4233 wireless firmware was not installed by default. Install firmware-b43-installer

of just type

sudo apt-get install firmware-b43-installer


ノートの再インストール

linux使い始めてかれこれ10年ぐらいにして初Debianにすることにした.

今CDを焼いてる. ノートにcent OS入れてみたけどwirelessのドライバーのビルドがどうしても出来なくて諦めた. やっぱ端末用にはcentは使えないのか ? 使用者の腕の問題という節もありますが.

慣れているUbuntuにしようとしたけど, 4月に新しいの出るし今クリーンインストールしてもバージョン上げるなり,  もう一回クリーンインストールするの面倒くさいので, Debianでいんじゃね? と思って入れて見ることにした.

Ubuntuみたいにlinuxの標準dir構造を無視していないはずなので, configファイルとか探すのは楽そう.





ちなみに所有するゴミPCが増えた

iBook G4, power 7450

Sun Ultra 40, Opteron 280

自作 Intel Atom 510

 増えたのが以下

友人からもらった (彼はMac教になりました)
HP mini 2140

研究室からぶんどった
Lenovo  2008 ぐらいのidea book

同じく研究室からぶんどった
Dell E4200

2014/03/27

実家で休み

卒業したよ。

お仕事始まるまで実家ぐらし、毎日実家のわんこをもふもふできる生活。

2014/03/16

GNU Privacy Guardの公開鍵の使いかた

医療画像と公開されていないコードなどを扱うので, 覚書しとく

秘密鍵と公開鍵の暗号化の方法が異なって半日ぐらい悩んだぜ.

公開鍵のほうがよく使うと思うので公開鍵の方法だけ
----------------------------------------------------------------------
送る側
----------------------------------------------------------------------
鍵の生成
gpg --gen-key

鍵の確認
gpg --list-keys

公開鍵の出力
gpg --export

暗号化 (公開鍵用)
gpg -c ${target_file}

----------------------------------------------------------------------
受け取る側
----------------------------------------------------------------------
鍵のインポート
gpg --import ${key}.pub

本当はtrustしたほうがいいがめんどくさいので省略

逆暗号化
gpg -d ${target_file}

2014/03/12

paraview-4.1.0

paraview-4.1.0のコンパイルに成功したのでconfigureの仕方からCMakeCacheも載せておく.

Qt-4.7.5以上が必要. Qtの5系には対応していないようだ. 私は4.8.5を使用した. Vtkは6.0.0を使用.

https://sites.google.com/site/cfdmemorandum/paraview/building_paraview-4-1-0

2014/02/12

gnuplotの小技

Times系のフォントが指定されている出版物が非常に多い.

こんなのを用意しておくと便利.
圧力波形出力用のやつ

-----------------------------------------------------------
pplot.sh
-----------------------------------------------------------
set grid
set key below
set tics font "Times New Roman"
set xlabel font "Times New Roman"
set ylabel font "Times New Roman"
set key font "Times New Roman"
set xlabel "Time / Second"
set ylabel "Pressure / Pascal"

gnuplotを起動して

gnuplot > load "pplot.sh"

でロードあとは普通にplotする. 画像出力まで自動でできるけど, 確認しながらグラフ作るとき便利.

2014/02/04

並列gmshのデータフォーマット

並列gmshのデータフォーマットを頑張って読解した.





赤: 要素の番号 (c/c++ユーザーは1から始まることに注意)
青: 要素のタイプgmshの reference見てくれ 4は四面体要素
茶: このタグのあとに続くタグの数
水色: 物理タグ, 境界認識のために自分で設定しているはずだ
黄色: メモリータグ, gmshの中で与えたメモリー番号
ピンク: 並列メッシュ形式にしかでない, このタグに続くタグの数
オレンジ: 要素の領域番号
緑: もし要素が他の領域と接しているなら, マイナスで隣り合う要素の番号が示される
群青: 要素の接点番号

2014/01/29

高次の形状関数

有限要素法の高次形状関数の実装は, 出来そうだ.
c++ならばtemplateをつかって再帰的に計算できる.

参考にしました.
 http://www.colorado.edu/engineering/cas/courses.d/IFEM.d/IFEM.Ch18.d/IFEM.Ch18.pdf

高次のガウス積分の実装を今度は考えなくては.

2014/01/27

static polymorphismとgcc

はてgccのバージョン4.8.2にしたら静的多様性を使ったコードがコンパイル出来なくなったぞい. なぜじゃ? 4.7.3でもでるな ???? なんかミスったか ?

c/c++, fortranとかは普通に作れるんだけど, meta化すると急にできなくなる.

2014/01/25

大量に作成しております

とある先進的な解析ソフトを見つけてコンパイルしようとしたら, どうもconfigすら通らない. いろいろ探ってみたのだけれども理由がわからず, mailing listに質問してみたら

"ごめん, ホームページ更新してなくて. 依存情報かなり古いんだと言われた"

おっさんは, その程度でめげる人ではないので,

gmp-5.1.3
mpfr-3.1.2
mpc-1.0.2
gcc-4.8.2
boost-1.55.0
openmpi-1.6.5

をつくった.

あとpetsc-3.4.3を作れば問題ないはず.

2014/01/24

FLTK

FLTK -fPICオプション付けないとコンパイル通らないな. FLTK-1.3ね

2014/01/22

c++ テンプレートメタプログラミング 3 静的多様性を用いた行列の足し算



いくつでも行列足し算できる奴も出来た. gcc-4.8.0で動作確認, 4.3.4ではコンパイル出来なかった.

元ネタ
http://itee.uq.edu.au/~conrad/misc/sanderson_templates_lecture_uqcomp7305.pdf
#include<iostream>

template< typename T1, typename T2 >
class Glue;

template< typename derived>
struct Base {
    const derived & get_ref() const{
        return static_cast<const derived&>(*this);
    }
};

class Matrix : public Base < Matrix >{
public:
    int rows;
    int cols;
    double *data;
  
    Matrix(){}
    Matrix( int in_rows, int in_cols ){
        set_size( in_rows, in_cols );
    }
    void set_size( int in_rows, int in_cols ){
        rows = in_rows;
        cols = in_cols;
        data = new double [rows*cols];
        for( int i=0; i<rows*cols; i++ ) data[i] = 1.0;
    }

    Matrix( const Matrix & X );
    const Matrix& operator=( const Matrix & X );

    template< typename T1, typename T2 >
    Matrix( const Glue<T1, T2> & X );

    template< typename T1, typename T2 >
    const Matrix & operator=( const Glue<T1, T2> & X );
};

template< typename T1, typename T2 >
class Glue : public Base< Glue<T1,T2> >{
public:
    const T1 & A;
    const T2 & B;

    Glue( const T1 & in_A, const T2 & in_B ): A(in_A), B(in_B) {

    }
};


template< typename T1, typename T2 >
inline const Glue< T1, T2 >
operator+( const Base<T1>&A, const Base<T2> & B ){
    return Glue< T1, T2 >( A.get_ref(), B.get_ref() );
}

template< typename T1 >
struct depth_lhs{
    static const int num = 0;
};

template< typename T1, typename T2 >
struct depth_lhs< Glue<T1, T2 > >{
    static const int num = 1 + depth_lhs<T1>::num;
};

template< typename T1 >
struct mat_ptrs{
    static const int num = 0;

    inline static void
    get_ptrs( const Matrix** ptrs, const T1 & X ){
        {
            ptrs[0] = reinterpret_cast<const Matrix*>(&X);
        }
    }
};

template< typename T1, typename T2 >
struct mat_ptrs< Glue<T1, T2> >
{
    static const int num = 1 + mat_ptrs<T1>::num;

    inline static void
    get_ptrs( const Matrix** in_ptrs, const Glue<T1,T2>& X ){
        mat_ptrs<T1>::get_ptrs(in_ptrs, X.A );

        in_ptrs[num] = reinterpret_cast< const Matrix*>( & X.B );
    }
};

template< typename T1, typename T2 >
const Matrix & Matrix::operator=( const Glue<T1,T2>& X ){
    int i,j;
    double sum;
    int N = 1 + depth_lhs < Glue<T1,T2> >::num;
    const Matrix* ptrs[N];
    mat_ptrs< Glue<T1,T2> >::get_ptrs(ptrs,X);
  
    int r = ptrs[0]->rows;
    int c = ptrs[0]->cols;

    set_size( r, c );

    for( j=0; j<r*c; ++j ){
        double sum = ptrs[0]->data[j];
        for( i=1; i<N; ++i ){
            sum += ptrs[i]->data[j];
        }
        data[j] = sum;
    }
    return *this;
}

int main(){
    Matrix A(2,2);
    Matrix B(2,2);
    Matrix C(2,2);
    Matrix D(2,2);
    Matrix X(2,2);

    X = A+B+C+D;

    for( int i=0; i<4; i++ ) std::cout << X.data[i] << std::endl;
return 0;}

c++ テンプレートメタプログラミング 2 行列足し算


 3つの行列を足し算する版できた.

元ネタ
 http://itee.uq.edu.au/~conrad/misc/sanderson_templates_lecture_uqcomp7305.pdf

#include<iostream>

template < typename T1, typename T2 >
class Glue;

class Matrix {
    public:
    int rows;
    int cols;
    double *data;

    Matrix(){}
    Matrix( int in_row, int in_cols ){
        set_size( in_row, in_cols );
    }
    void set_size( int in_rows, int in_cols ){
        data = new double [ in_rows*in_cols ];
        rows = in_rows;
        cols = in_cols;
        for( int i=0; i<rows*cols; i++ ) data[i]=1.0;
    }

    Matrix( const Matrix & X );
    const Matrix operator=( const Matrix& X );

    Matrix( const Glue<Matrix,Matrix> & X );
    const Matrix & operator=( const Glue<Matrix,Matrix> & X );
   
    Matrix( const Glue< Glue<Matrix,Matrix>, Matrix > & X );
    const Matrix & operator=( const Glue< Glue<Matrix,Matrix>, Matrix >  & X );
   
};

template < typename T1, typename T2 >
class Glue {
public:
    const T1 & A;
    const T2 & B;
    Glue( const T1 & in_A, const T2 & in_B ): A(in_A), B(in_B){}
};

Matrix::Matrix( const Glue<Matrix,Matrix> & X ){
    operator=(X);
}

const Matrix & Matrix::operator=( const Glue< Glue<Matrix,Matrix>, Matrix> & X ){
    const Matrix & A = X.A.A;   
    const Matrix & B = X.A.B;   
    const Matrix & C = X.B;   

    set_size( A.rows, A.cols );

    for( int i=0; i<A.rows * A.cols; i++ ){
        data[i] = A.data[i] + B.data[i] + C.data[i];
    }
    return *this;
}

const Matrix & Matrix::operator=( const Glue<Matrix,Matrix> & X ){
    const Matrix & A = X.A;   
    const Matrix & B = X.B;   

    set_size( A.rows, A.cols );

    for( int i=0; i<A.rows * A.cols; i++ ){
        data[i] = A.data[i] + B.data[i];
    }
    return *this;
}

const Glue<Matrix,Matrix> operator+( const Matrix & A, const Matrix & B ){
    return Glue<Matrix, Matrix>(A,B);
}

const Glue< Glue<Matrix,Matrix> ,Matrix> operator+( const Glue<Matrix, Matrix> & P, const Matrix & Q ){
    return Glue< Glue<Matrix,Matrix>, Matrix >(P,Q);
}

int main(){
    Matrix A1(3,4);
    Matrix B1(3,4);
    Matrix C1(3,4);
    Matrix X(3,4);
   
    X = A1 + B1;
    X = A1 + B1 + C1;

    for( int i=0; i<X.rows*X.cols; i++ ) std::cout << X.data[i] << std::endl;

return 0;}

まとめページ

      

リンク

The Wizard of Science
友達のブログ文化人類学とか難しい話をしております。あとホームページから自作ゲームも配布。