Friday, November 13, 2015

Ekologi dan Open Source

Ekologi adalah lingkungan hidup. Tempat kita hidup. Menerima masukan dan memberikan keluaran, apapun itu bentuknya. Ada berita mengenai masalah kualifikasi dosen (Kompas, 14 November 2015). Disitu pada dasarnya dosen berusaha untuk meningkatkan kualifikasi akademisnya menjadi lebih tinggi dari strata yang diajarnya. Tentunya para dosen juga membimbing mahasiswanya untuk menuju derajat yang lebih tinggi. 

Saya pernah mendengar istilah subtance of form dan form of substance. Kurang lebih bermakna isi dari suatu bentuk, dan bentuk dari suatu isi. Disini kita contohkan cincau hijau tanpa campuran agar-agar dan cincau hijau dengan campuran agar-agar. Substansinya tentu berbeda tetapi bentuknya sama. Manakah yang lebih dihargai tentunya tergantung kepada ekologi konsumennya.

Pertanyaan yang saya coba maknai untuk diri sendiri adalah bagaimana kita menghitung determinan matriks : dengan menggunakan software open source ataukah menggunakan salinan software + "crack" yang harga salinan legalnya lebih dari USD 40 untuk edisi pelajar/mahasiswa.

Pertanyaan ini tentunya dijawab oleh diri kita masing-masing sesuai dengan nilai-nilai yang berlaku didalam lingkungan hidup kita masing-masing. Saya pribadi akan menggunakan software open source, karena masa perploncoan saya untuk dapat melakukan instalasi dan menggunakan program open source dilingkungan komputasi linux sudah saya lewati.

Tentunya para pelajar atau praktisi TI yang masih memiliki energi yang maha dahsyat mencari aktifitas alternative selain mencari "crack" dan menyelesaikan masalah hanya dengan "donlot doang entar beres", tetapi mencari cara pemecahan yang lebih bermakna.

Saya bukan praktisi grafika komputer. Tetapi saya dapat menggunakan Blender untuk membuat bentuk 3 dimensi. Blender berharga kecapekan saya untuk menuliskan apt-get install blender, dst. Kebisaan saya adalah hasil pencarian untuk memperoleh free ware untuk keperluan kesukaan saya tersebut. Jika saya menganggap apa yang saya kerjakan cukup berharga tentunya saya dapat menjualnya secara legal pula. Tentunya gambar 3d yang saya buat legal dijual, karena tidak menggunakan program turunan illegal.

Saya menggunakan java sebagai bahasa pemrograman utama saya, saya juga sedang menjajaki pascal bukan turbo pascal, dengan Lazarus ber-IDE lebih mutakhir dan berjalan didalam linux. Saya menggunakan bahasa C-GNU berstandar paling mutakhir.

Jadi kemauan menggunakan Teknologi Open Source tergantung kepada Ekologi cara berpikir kita. Saya merasa, bahwa jika kita mahir menggunakan teknologi Open Source maka kita seperti Ikan Hiu yang dapat hidup diair asin, air tawar, dan air payau.

Saturday, July 11, 2015

Membuat Program General Ledger

Dua hal yang harus dilakukan dalam pembuatan aplikasi multi tier untuk general ledger, yaitu :
  1. Membuat Database
  2. Membuat Tampilan
 Hari ini : Minggu 12-Juli-2015 dimulai pembuatan program General Ledger.

Tuesday, May 26, 2015

Upward Accumulation dengan bst

Saya memiliki data sebagai berikut :
1000 0    0
1100 1000 0
1110 1100 0
1111 1110 100
1112 1110 100
1200 1000 0
1210 1200 0
1211 1210 200
1212 1210 200
1220 1200 0
1221 1220 10
1222 1220 10
1223 1220 10
1224 1220 10
1300 1000 0
1310 1300 300
diakumulasi menjadi
 1310  1300 300
 1300  1000 300
 1224  1220 10
 1223  1220 10
 1222  1220 10
 1221  1220 10
 1220  1200 40
 1212  1210 200
 1211  1210 200
 1210  1200 400
 1200  1000 440
 1112  1110 100
 1111  1110 100
 1110  1100 200
 1100  1000 200
 1000     0 940
bagaimanakah caranya ??. Saya membuat program pendek sebagai berikut :
/*
Copyright [2015] [Joko Adianto]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

typedef struct DATA{
    int key;
    int parent;
    int value;
    struct DATA* left;
    struct DATA* right;
    }Node;

void PostorderAkumulasi(Node *root, Node* r);
Node* SearchV(Node* root,int data, int v);
Node* Insert(Node *root,Node *data);
void postOrder(Node *root,FILE *fptr);

void postOrder(Node *root,FILE *fptr){
    if(root == NULL) return;
    postOrder(root->left,fptr);
    postOrder(root->right,fptr);
    printf("%d %d %d \n",root->key,root->parent,root->value);
    fprintf(fptr,"%5d %5d %d\n",root->key,root->parent,root->value); //print di berkas kedua
}

void PostorderAkumulasi(Node *root, Node* r) {
    if(root == NULL) return;

    Node* p=NULL;
    PostorderAkumulasi(root->left, r);
    PostorderAkumulasi(root->right, r);

    if (root->value!=0){
        SearchV(r, root->parent, root->value);
        }

    printf("key : %5d parent : %5d value : %5d\n",
            root->key, root->parent, root->value);  //Print data di layar
}

Node* SearchV(Node* root,int key, int v) {
if(root == NULL) {
    return NULL;
    }
else if(root->key == key) {
    root->value= root->value + v;
    return root;
    }
else if(key <= root->key) {
    return SearchV(root->left,key, v);
    }
else {
    return SearchV(root->right,key, v);
    }
}

Node* Insert(Node *root,Node *data) {
    if(root == NULL) {
        root = (Node*) malloc(sizeof(Node));
        root->key = data->key;
        root->parent=data->parent;
        root->value=data->value;
        root->left = root->right = NULL;
    }
    else if(data->key <= root->key)
        root->left = Insert(root->left,data);
    else
        root->right = Insert(root->right,data);
    return root;
}

int main(){
    Node data;
    Node* root = NULL;
    int t=1;
    printf("Membaca File : filedata \n");
    FILE* fptr = fopen("filedata.txt", "r");
    if (fptr == NULL)
        {
           printf("Tidak dapat dibuka");
           return 0;
        }
    fscanf(fptr, "%d%d%d", &data.key, &data.parent, &data.value);
    while(!feof(fptr)){
        printf("key : %5d parent : %5d value : %5d\n", data.key, data.parent, data.value);
        root=Insert(root, &data);
        fscanf(fptr, "%d%d%d", &data.key, &data.parent, &data.value);
    }
    printf("Postorder Akumulasi: \n");
    PostorderAkumulasi(root, root);
    fclose(fptr);
    fptr = fopen("hasilAkumulasi.txt","w");
    postOrder(root,fptr);
    fclose(fptr);
    return 0;
}