Plot grafik ping time delay


setelah kita membuat program sederhana untuk meplot grafik temperature kali ini kita mencoba membuat grafik plot delay ping, seperti yang kita ketahui ping pada terminal akan menghasilkan hasil seperti berikut

Screenshot from 2015-09-19 14:17:05

sekarang kita mencoba memplot kolom time menggunakan bahasa pemgoraman python, pada dasarnya program ini hanya menggabungkan script deteksi suhu dengan script Python Ping


import os, sys, socket, struct, select, time
import serial # import Serial Library
import numpy  # Import numpy
import matplotlib.pyplot as plt #import matplotlib library
from drawnow import *

ICMP_ECHO_REQUEST = 8 # Seems to be the same on Solaris.
tempF= []
#arduinoData = serial.Serial('/dev/ttyACM0', 9600) #Creating our serial object named arduinoData
plt.ion() #Tell matplotlib you want interactive mode to plot live data

 
def checksum(source_string):
    """
    I'm not too confident that this is right but testing seems
    to suggest that it gives the same answers as in_cksum in ping.c
    """
    sum = 0
    countTo = (len(source_string)/2)*2
    count = 0
    while count<countTo:
        thisVal = ord(source_string[count + 1])*256 + ord(source_string[count])
        sum = sum + thisVal
        sum = sum & 0xffffffff # Necessary?
        count = count + 2
 
    if countTo<len(source_string):
        sum = sum + ord(source_string[len(source_string) - 1])
        sum = sum & 0xffffffff # Necessary?
 
    sum = (sum >> 16)  +  (sum & 0xffff)
    sum = sum + (sum >> 16)
    answer = ~sum
    answer = answer & 0xffff
 
    # Swap bytes. Bugger me if I know why.
    answer = answer >> 8 | (answer << 8 & 0xff00)
 
    return answer
 
 
def receive_one_ping(my_socket, ID, timeout):
    """
    receive the ping from the socket.
    """
    timeLeft = timeout
    while True:
        startedSelect = time.time()
        whatReady = select.select([my_socket], [], [], timeLeft)
        howLongInSelect = (time.time() - startedSelect)
        if whatReady[0] == []: # Timeout
            return
 
        timeReceived = time.time()
        recPacket, addr = my_socket.recvfrom(1024)
        icmpHeader = recPacket[20:28]
        type, code, checksum, packetID, sequence = struct.unpack(
            "bbHHh", icmpHeader
        )
        if packetID == ID:
            bytesInDouble = struct.calcsize("d")
            timeSent = struct.unpack("d", recPacket[28:28 + bytesInDouble])[0]
            return timeReceived - timeSent
 
        timeLeft = timeLeft - howLongInSelect
        if timeLeft <= 0:
            return
 
 
def send_one_ping(my_socket, dest_addr, ID):
    """
    Send one ping to the given >dest_addr<.
    """
    dest_addr  =  socket.gethostbyname(dest_addr)
 
    # Header is type (8), code (8), checksum (16), id (16), sequence (16)
    my_checksum = 0
 
    # Make a dummy heder with a 0 checksum.
    header = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, my_checksum, ID, 1)
    bytesInDouble = struct.calcsize("d")
    data = (192 - bytesInDouble) * "Q"
    data = struct.pack("d", time.time()) + data
 
    # Calculate the checksum on the data and the dummy header.
    my_checksum = checksum(header + data)
 
    # Now that we have the right checksum, we put that in. It's just easier
    # to make up a new header than to stuff it into the dummy.
    header = struct.pack(
        "bbHHh", ICMP_ECHO_REQUEST, 0, socket.htons(my_checksum), ID, 1
    )
    packet = header + data
    my_socket.sendto(packet, (dest_addr, 1)) # Don't know about the 1
 
 
def do_one(dest_addr, timeout):
    """
    Returns either the delay (in seconds) or none on timeout.
    """
    icmp = socket.getprotobyname("icmp")
    try:
        my_socket = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)
    except socket.error, (errno, msg):
        if errno == 1:
            # Operation not permitted
            msg = msg + (
                " - Note that ICMP messages can only be sent from processes"
                " running as root."
            )
            raise socket.error(msg)
        raise # raise the original error
 
    my_ID = os.getpid() & 0xFFFF
 
    send_one_ping(my_socket, dest_addr, my_ID)
    delay = receive_one_ping(my_socket, my_ID, timeout)
 
    my_socket.close()
    return delay
 
 
def verbose_ping(dest_addr, timeout = 2, count = 4):
  	def verbose_ping(dest_addr, timeout = 2, count = 4):
  	cnt = 0
	
	while True: # While loop that loops forever
		delay  =  do_one(dest_addr, timeout) #read the line of text from the serial port
		tempF.append(delay)                     #Build our tempF array by appending temp readings
		drawnow(makeFig)                       #Call drawnow to update our live graph
		plt.pause(.000001)                     #Pause Briefly. Important to keep drawnow from crashing
		cnt=cnt+1
		if(cnt>50):                            #If you have 50 or more points, delete the first one from the array
			tempF.pop(0)      


 
def makeFig(): #Create a function that makes our desired plot
    #delay  =  do_one(dest_addr, timeout)
    #plt.ylim(int(delay)-3,int(delay)+3)                                 #Set y min and max values
    plt.title('My Live Streaming Sensor Data')      #Plot the title
    plt.grid(True)                                  #Turn the grid on
    plt.ylabel('Temp C')                            #Set ylabels
    plt.plot(tempF, 'ro-')       #plot the temperature
    plt.legend(loc='upper left')                    #plot the legend
  

if __name__ == '__main__':
    #verbose_ping("heise.de")
    #verbose_ping("google.com")
    #verbose_ping("a-test-url-taht-is-not-available.com")
    verbose_ping("192.168.0.1")

grafik yang dihasilkan sebagai berikut

Screenshot from 2015-09-19 14:27:49

Perubahan Bit LSB MSB pada citra digital


Pada dasarya setiap citra digital 2D direpresentasikan kedalam bentuk nilai pixel pada setiap posisi 2 dimensi (x,y). Disetiap pixel nya itu dapat direpresentasikan derajat keabuabuannya dalam bentuk nilai 0-255 atau juga bisa kita representaikan dalam bentuk byte yang terdiri dari 8 bit (catatan: tentunya tergantung dari format yang digunakan, saat ini kita menggunakan bmp atau png)

b0,b1,b2,b3,b4,b5,b6,b6 ==> adalah susunan bit dengan b0 adalah adalah MSB Most significant bit atau high order bit dengan kata lain nilai terbesar dari susunan bit, sedangkan b6 adalah nilai terkecil dari susunan bit.

Misal citra digital grayscale mempunyai pixel 512×512 Pixel, kita hanya mengambil b0 atau b4 atau b6 nya saja apa yang akan terjadi?

melalui program script sederhana matlab dapat kita dapatkan hasil sebagai berikut
Screenshot from 2015-09-05 17:10:52
Program tanpa uint8 (unsigned integer 8)

Screenshot from 2015-09-05 17:12:37
Program dengan uint8 (unsigned integer 8)

dari gambar diatas dapat kita simpulkan bahwa perbuahan pada bit MSB akan membuat citra “rusak” dan sebaliknya pada perubahan bit pada LSB. Hal ini sering dimanfaatkan untuk enkripsi citra ataupun steganografi citra

Script matlab

clc, clear all, close all
Im=imread('Cameraman.bmp');
subplot(3,3,1), subimage(Im)
set(gca,'visible','off')
[M N]=size(Im);
Im_b=de2bi(Im,8,'left-msb');
[Mb Nb]=size(Im_b);
for j=1:Nb
    Im_bx=zeros(Mb,Nb);
    for i=1:Mb
        Im_bx(i,j)=Im_b(i,j);
    end
    Im_r=reshape((bi2de(Im_bx,'left-msb')),N,M);
    subplot(3,3,j+1), subimage(uint8(Im_r))
    set(gca,'visible','off')
end

Membuat Grayscale Image dengan java


pada postingan terdahulu kita sempat membahas bagaimana mengkonversi gambar digital ke dalam hitam putih / grayscale. Sekarang bagaimana teori tersebut diaplikasikan dengan menggunakan script sederhana java

yang perlu diperhatikan pada script java adalah sebagai berikut

copy paste file gambar digital kita kedalam folder script java kita, dan sesuaikan nama file gambar kita “digital_image_processing.jpg”

File input = new File("digital_image_processing.jpg");

bagian script ini adalah rumus bagaimana kita mengatur kompsisi penggabungan warna antara Red, Green dan Blue dengan menggunakan operasi perkalian, kita dapat merubah2 parameter angka 0.299, 0.587, 0.114 sesuai dengan keinginan

int red = (int)(c.getRed() * 0.299);
int green = (int)(c.getGreen() * 0.587);
int blue = (int)(c.getBlue() *0.114);

bagian script ini adalah penamaan file yang akan kita save “grayscale.jpg”

File ouptut = new File("grayscale.jpg");

Berikut script full sederhananya:

import java.awt.*;
import java.awt.image.BufferedImage;

import java.io.*;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

public class grayscalegambar {

   BufferedImage  imager;
   int width;
   int height;
   
   public grayscalegambar() {
   
      try {
         File input = new File("digital_image_processing.jpg");
         imager = ImageIO.read(input);
         width = imager.getWidth();
         height = imager.getHeight();
         
         for(int i=0; i<height; i++){
         
            for(int j=0; j<width; j++){
            
               Color c = new Color(imager.getRGB(j, i));
               int red = (int)(c.getRed() * 0.299);
               int green = (int)(c.getGreen() * 0.587);
               int blue = (int)(c.getBlue() *0.114);
               Color newColor = new Color(red+green+blue,red+green+blue,red+green+blue);
               
               imager.setRGB(j,i,newColor.getRGB());
            }
         }
         
         File ouptut = new File("grayscale.jpg");
         ImageIO.write(imager, "jpg", ouptut);
         
      } catch (Exception e) {}
   }
   
   static public void main(String args[]) throws Exception 
   {
      grayscalegambar obj = new grayscalegambar();
   }
}


Konversi Image berwarna ke hitam putih


Sedikit nya ada 3 algoritma untuk mengkonversi gambar berwarna ke dalam hitam putih

1. The lightness method averages the most prominent and least prominent colors: (max(R, G, B) + min(R, G, B)) / 2.

2. The average method simply averages the values: (R + G + B) / 3.

3. The luminosity method is a more sophisticated version of the average method. It also averages the values, but it forms a weighted average to account for human perception. We’re more sensitive to green than other colors, so green is weighted most heavily. The formula for luminosity is 0.21 R + 0.71 G + 0.07 B.

Lebih baik yang mana diantara ketiga metode tersebut? mari kita lihat sample nya

original image

The luminance

metode 1 lightness method averages

The lightness

metode 2 simple average

simply_averages

metode 3 Luminosity method 

The luminance

apa yang akan terjadi jikalau kita hanya mengambil komponen red green atau blue nya saja

Red

red only

blue

blue only

green

green only

sms secure


belakangan ini diprediksikan intensitas penggunaan sms akan mengalami penurunan dikarenakan maraknya penggunaan smartphone. Penggunaan smartphone memungkinkan penggunaan aplikasi chatting seperti whatsApp, line, kakao talk ataupun Blackberry messenger yang sudah berpengalaman. Hal tersebut pernah kami sharing dalam buletin permira edisi 2 yang dapat di download di http://www.4shared.com/office/w24nwZ91/SI_Edisi_2.html

menurut pandangan saya pribadi sms merupakan aplikasi atau teknologi yang sulit untuk hilang selama masih adanya teknologi selular, tentu ada beberapa alasan mengenai hal tersebut.

yang menarik adalah penggunan sms gratis melalui web web tertentu seperti http://smstexter.com/index.php , sampai sekarang saya masih sering menggunakan sms gratis tersebut. Tetapi yang menjadi kendala saya jalur komunikasi tersebut tidaklah aman, untuk itu saya cukup khawatir untuk mengirim pesan informasi yang bersifat rahasia. dan yang menjadi problem lainnya adalah penerima akan menerima nomor telefon yang random yang tentunya kita tidak dapat mengatur kepemilikan nomor tersebut. Hal tersebut akan sangat mudah untuk dimanipulasi seperti kasus “mama minta pulsa”.

oleh sebab itu, muncul suatu ide untuk membuat jalur komunikasi itu aman dengan mengunakan beberapa sistem dan algortima kriptografi. Dan tentunya sebagai user tidak dipusingkan dengan istilah istilah kriptografi yang rumit

ps: sampai sekarang saya pun tidak yakin aman kita dapat berkomunikasi menggunakan sms konvesional

How to make fixer…


Chemical

– sodium tiosulfate 250 gram @ Rp.10000 / Kg*

–  sodium sulfite 50 gram, @ Rp.25000 / Kg*

Pour with 40C water for 1 liter solution (stock).

I can’t fix with stock, but I test with 1+3 solution with 3 minute to fix it at 30C. you can test time fixer with your film which not developed to mixed with fixer and you calculate this

* I buy it at September 2012 in pasar baru jakarta

you can any receipt from google and http://www.apug.org/