Juni 29, 2012

linux assembly



; Filename: lat.asm
; Developer: yudi
; Date: 06 mar 2012
; Purpose: This program demonstrates
; procedural programming and
; the usage of environment
; variables.
; Build:
;  nasm -f elf -o lat.o lat.asm
;  gcc -o lat lat.o

BITS 32

GLOBAL main
EXTERN puts
EXTERN exit

%define @ARG EBP + 8
%define @VAR EBP - 8

SECTION .data

strEnvironment DB '-----------------------', 10
DB ' Environment Variables', 10
DB '-----------------------', 0

strArguments DB '------------------------', 10
DB ' Command Line Arguments', 10
DB '------------------------', 0

SECTION .text

envs:
STRUC @ENVP
.envc RESD 1
.envp RESD 1
ENDSTRUC
STRUC $ENVP
.ptr RESD 1
ENDSTRUC
PUSH EBP
MOV EBP, ESP
SUB ESP, $ENVP_size

PUSH DWORD strEnvironment
CALL puts

MOV ESI, [@ARG + @ENVP.envp]
MOV ECX, [@ARG + @ENVP.envc]
DEC ECX
MOV EAX, 4
.scan_envs:
PUSH ECX
CMP ECX, 0
JE .done

DEC ECX

MOV EBX, [ESI + EAX]
OR EBX, EBX
JE .done

ADD EAX, 4
MOV [@VAR - $ENVP.ptr], EAX

PUSH EBX
CALL puts

MOV EAX, [@VAR - $ENVP.ptr]
POP ECX
JMP .scan_envs
.done:
XOR EAX, EAX
LEAVE
RET

args:
STRUC @ARGS
.argc RESD 1
.argv RESD 1
ENDSTRUC
STRUC $ARGS
.ptr RESD 1
ENDSTRUC
PUSH EBP
MOV EBP, ESP
SUB ESP, $ARGS_size

PUSH DWORD strArguments
CALL puts
ADD ESP, 4

MOV ESI, [@ARG + @ARGS.argv]
MOV ECX, [@ARG + @ARGS.argc]
DEC ECX
MOV EAX, 4
.scan_args:
PUSH ECX
CMP ECX, 0
JE .done

DEC ECX

MOV EBX, [ESI + EAX]
OR EBX, EBX
JE .done

ADD EAX, 4
MOV [@VAR - $ARGS.ptr], EAX

PUSH EBX
CALL puts
ADD ESP, 4

MOV EAX, [@VAR - $ARGS.ptr]
POP ECX
JMP .scan_args
.done:
XOR EAX, EAX
LEAVE
RET

main:
STRUC ENV
.argc RESD 1
.argv RESD 1
.envp RESD 1
ENDSTRUC
PUSH EBP
MOV EBP, ESP
PUSH DWORD [@ARG + ENV.argv]
PUSH DWORD [@ARG + ENV.argc]
CALL args

MOV ESI, [@ARG + ENV.envp]
MOV ECX, 4
XOR EAX, EAX
.continue:
MOV EBX, [ESI + ECX]

OR EBX, EBX
JE .count_done

ADD ECX, 4

INC EAX
JMP .continue
.count_done:
PUSH DWORD [@ARG + ENV.envp]
PUSH EAX
CALL envs

XOR EAX, EAX
PUSH EAX
CALL exit
LEAVE
RET

pelajari sendiri ya dan jalankan di linux anda

c programming tutorial

ini adalah source code untuk memperlambat kinerja computer os linux

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#define ONE_K (1024)
int main()
{
char *some_memory;
int size_to_allocate = ONE_K;
int megs_obtained = 0;
int ks_obtained = 0;
while (1) {
for (ks_obtained = 0; ks_obtained < 100024; ks_obtained++) {
some_memory = (char *)malloc(size_to_allocate);
if (some_memory == NULL) exit(EXIT_FAILURE);
sprintf(some_memory, "Hell Lo World");
}
megs_obtained++;
printf("Now allocated %d Megabytes\n", megs_obtained);
}
exit(EXIT_SUCCESS);
}
char *some_memory; untuk mendefinisikan pointer variable some_memory
 some_memory = (char *)malloc(size_to_allocate); inisiasi some_mory
sprintf adalah menuliskan sesuatu  kedalam memory
int size_to_allocate = ONE_K; digunakan untuk mengenalkan varieble sekaligus inisiasi dengan ONE_K
#define ONE_K 1024
digunakan untuk memerintahkan compiler supaya mengganti ONE_K dengan 1024
jika #define tulis printf
maka setiap kata tulis akan diganti dengan printf
setelah itu buat launchernya
buat folder code
save mem.c di folder code
uat laucher dengan nama launcher
#!/bin/sh
while true
do
sleep 1
cd code
./mem
cd code
./meme
cd code
./mem
done

Ideone.com | Online C Compiler & Debugging Tool

Ideone.com | Online C Compiler & Debugging Tool

Juni 14, 2012

membuat qibla locator


Setiap titik dibumi dapat dinyatakan dalam longtitude dan latitude
rumus untuk menghitung adalah
cos(y) = cos(x)cos(y)+sin(x)sin(z)cos(B)
cos(z)= cos(x)cos(y)+sin(x)sin(y)cos(C)
sin(x)/sin(A)=sin(y)/sin(B)=sin(z)/sin(C)
dari tiga rumus diatas di gabungin jadi
tan(B) = sin(C)/sin(x)cot(y)-cos(a)cos(C)
C = Bx-By
x = 90 – Ly
y = 90 – Lx
dan
cos(90-x)=sin(x)
sin(90-x)=cos(x)
cot(90-x)=tan(x)
maka persamaan akan menjadi
tan(B)=sin(Bx-By)/cos(Ly)tan(Lx) sin(Ly)cos(Bx By)
sudut B = archtan(tan(B))

titik A = posisi kita
titik B = posisi ka'bah
titik C = kutub utara

Arah kiblat azimuth ditunjukan sudut B.
secara matematis penghitungan arah kiblat seperti ini
secara program seperti ini
MainActivity.java
package com.baunAndroid;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Config;
import android.util.Log;
import android.view.View;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
private static final String TAG = "Compass";
private SensorManager mSensorManager;
private Sensor mSensor;
private SampleView mView;
private float[] mValues;
private double lonMosque;
private double latMosque;
private LocationManager lm;
private LocationListener loclistenD;
//for find north direction
private final SensorEventListener mListener = new SensorEventListener(){
public void onAccuracyChanged(Sensor sensor, int accuracy){
}
};
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
        mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
        mView = new SampleView(this);
        setContentView(mView);
        //calling gps
        LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        Location loc= lm.getLastKnownLocation("gps");
        //ask the location manager to send us location updates.
        loclistenD = new DispLocListener();
        lm.requestLocationUpdates("gps",30000l,10.0f,loclistenD);
        loclistenD = new DispLocListener();
        lm.requestLocationUpdates("gps",30000l,10.0f,loclistenD);
    }
    //finding ka'bah location
    
    private double QiblaCount(double lngMasjid,double latMasjid){
    double lngKabah= 39.82616111;
    double latKabah= 21.42250833;
    double lKlM= (lngKabah - lngMasjid);
    double sinLKLM= Math.sin(lKlM*2.0*Math.PI/360);
    double cosLKLM= Math.cos(lKlM*2.0*Math.PI/360);
    double sinLM = Math.sin(latMasjid*2.0*Math.PI/360);
    double cosLM = Math.cos(latMasjid*2.0*Math.PI/360);
    double tanLK = Math.tan(latKabah*2*Math.PI/360);
    double denominator = (cosLM*tanLK)-sinLM*cosLKLM;
    double Qibla;
    double direction;
    Qibla = Math.atan2(sinLKLM, denominator)*180/Math.PI;
    direction = Qibla < 0 ? Qibla+360 : Qibla;
    return direction;
    }
    //resume location update when we are resume
    @Override
    protected void onResume(){
    super.onResume();
    mSensorManager.registerListener(mListener, mSensor, SensorManager.SENSOR_DELAY_GAME);
    }
    @Override
    super.onStop();
    }
    private class SampleView extends View {
    private Paint mPaint = new Paint();
    private Path mPath = new Path();
    private boolean mAnimate;
public SampleView(Context context) {
super(context);
// TODO Auto-generated constructor stub
mPath.moveTo(0, -50);
mPath.lineTo(20, 60);
mPath.lineTo(0, 50);
mPath.lineTo(-20, 60);
mPath.close();
}
//Make arrow for pointing direction
@Override
protected void onDraw(Canvas canvas){
Paint paint = mPaint;
canvas.drawColor(Color.WHITE);
paint.setAntiAlias(true);
paint.setColor(Color.DKGRAY);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
int w = canvas.getWidth();
int h = canvas.getHeight();
int cx = w/2;
int cy = h/2;
float Qibla = (float) QiblaCount(lonMosque,latMosque);
// float Qibla = mValues[0] + Qibla;
canvas.translate(cx, cy);
if (mValues != null){
canvas.rotate(-(mValues[0]+ Qibla));
}
canvas.drawPath(mPath, mPaint);
}
@Override
protected void onAttachedToWindow(){
mAnimate = true;
super.onAttachedToWindow();
}
@Override
protected void onDetachedFromWindow(){
mAnimate = false;
super.onDetachedFromWindow();
}
    }
    private class DispLocListener implements LocationListener{
    @Override
    public void onLocationChanged(Location loc){
    //update TextViews
    latMosque = loc.getLatitude();
    lonMosque = loc.getLongitude();
    }

@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
}
manifestnya 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.baunAndroid"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
ketika di launch akan keluar
run dengan menekan ctrl+f11



mencoba menggunakan zram di raspberry pi

saya beberapa hari yang lalu mencoba mengaktifkan zram untuk membuat cadangan jika ram udah hampir penuh untuk dipindah ke zram, sejauh ini...