Share

http://api.beritasaku.net/static/appServer/shareIncome.html?sid=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpbWVpIjoiODY4MjA5MDM4MjA4MjAxIiwiY3JlYXRlZF9hdCI6MTUyODQxNDQwMjI2NCwidXNlcl9pZCI6MTczMDA1ODU4NCwicGhvbmUiOiJlbXB0eSJ9.IW2J3FonUIgEWFH5PCvJNZ6NbZ30ykxtPaf80qOUm7Q&time=1533488400

What’s is Web Programming ?

Web programming refers to the writing, markup and coding involved in Web development, which includes Web content, Web client and server scripting and network security. The most common languages used for Web programming are XML, HTML, JavaScript, Perl 5 and PHP. Web programming is different from just programming, which requires interdisciplinary knowledge on the application area, client and server scripting, and database technology.

Web programming can be briefly categorized into client and server coding. The client side needs programming related to accessing data from users and providing information. It also needs to ensure there are enough plug ins to enrich user experience in a graphic user interface, including security measures.

  1. To improve user experience and related functionalities on the client side, JavaScript is usually used. It is an excellent client-side platform for designing and implementing Web applications.
  2. HTML5 and CSS3 supports most of the client-side functionality provided by other application frameworks.

The server side needs programming mostly related to data retrieval, security and performance. Some of the tools used here include ASP, Lotus Notes, PHP, Java and MySQL. There are certain tools/platforms that aid in both client- and server-side programming. Some examples of these are Opa and Tersus.

 

Membangun Aplikasi Java Menggunakan Eclipse

Pada tulisan ini dibahas beberapa hal mendasar yang saya rasa penting diketahui dalam penggunaan Eclipse untuk membangun aplikasi Java. Beberapa hal yang dibahas adalah: pembuatan workspace, cara membuat project, cara membuat Java class, dan cara membuat package.

Konsep abstraction, encapsulation, inheritance dan polymorphism yang telah dibahas pada Tutorial Object Oriented Programming dengan Java Bagian 2, 3 dan 4 dapat diterapkan menggunakan Eclipse. Yang berbeda di sini hanyalah Integrated Development Environment (IDE) saja. Pada artikel-artikel tersebut IDE yang digunakan adalah Netbeans.

Java Development Kit

Pastikan Java Development Kit (JDK) sudah terinstall pada komputer. Bila belum, install JDK terbaru pada komputer Anda. Pada contoh ini di komputer saya telah terinstal JDK 1.7 seperti terlihat pada gambar di bawah:

1-a program and features - JDK 1.7 sudah terinstall

Bila JDK belum terinstall, download saja JDK ini dari situs Oracle. Kemudian lakukan proses install (cari petunjuk cara install JDK di google, gampang kok). Tanpa JDK, kita tidak akan bisa mencompile program yang kita buat. Dengan kata lain, kita tidak bisa membuat program Java tanpa JDK.

Persiapan

Buat sebuah direktori pada C:\ dengan nama “TUTORIAL”. Direktori ini akan kita gunakan sebagai workspace. Workspace merupakan direktori tempat kita bekerja. Semua file-file project yang dibuat akan disimpan dalam workspace ini.

Download Eclipse. Kemudian ekstrak file hasil download tersebut. Proses ekstrak ini menghasilkan sebuah direktori bernama eclipse. Pindahkan (copy-kan) direktori eclipse ini ke C:\TUTORIAL. Eclipse dapat dijalankan tanpa harus diinstall. Cukup didownload, diekstrak, lalu tinggal dijalankan. Karena itu eclipse dapat dijalankan walau disimpan dalam flashdisk. Eclipse yang digunakan pada artikel ini adalah Eclipse Juno.

Di dalam direktori eclipse tersebut terdapat sebuah file bernama eclipse.exe. Untuk menjalankan eclipse, jalankan file eclipse.exe tersebut. Bila perlu, buat shortcut pada desktop untuk file eclipse.exe ini.

Ketika menjalankan eclipse pertama kali, eclipse akan meminta kita untuk memilih workspace. Pilihlah C:\TUTORIAL sebagai workspacenya. Bila Anda kehendaki, centang pada bagian “Use this as the default and do not ask again” untuk membuat C:\TUTORIAL sebagai default workspace. Dengan pencentangan ini eclipse tidak akan bertanya tentang workspace ketika dinyalakan kembali.

1

Setelah eclipse menyala, pada bagian kiri terdapat panel “project explorer” (lihat pada gambar).

2

Namun bila panel “project explorer” tidak ada, panel ini dapat ditampilkan dengan cara mengklik Window –> Show View –> Other. Setelah itu akan muncul window “Show View”.

3

Pada window “Show View“ ini pilih General –> Project Explorer. Kemudian klik “OK”.

4

Hasilnya adalah panel “Project Explorer” akan muncul dalam eclipse di sebelah kiri.

Membuat Project Baru

Dalam eclipse, setiap pembuatan program Java harus dilakukan dalam sebuah project. Untuk itu, hal pertama yang harus dilakukan adalah membuat project dalam eclipse.

Untuk membuat project baru, lakukan klik kanan pada panel “Project Explorer”. Kemudian pilih New –> Project.

4b

Setelah muncul window “New Project”, pilih Java –> Java Project. Lalu tekan tombol “Next”.

5

Pada window “New Java Project”, isikan nama project pada field “Project name:”. Misalkan di sini kita memberi nama projectnya “CobaEclipse”. Perhatikan juga pada bagian checkbox “Use default location”. Pada bagian bawah checkbox tersebut ditunjukkan lokasi tempat menyimpan file-file project kita. Pada gambar terlihat project ini disimpan pada lokasi default yaitu: C:\TUTORIAL\CobaEclipse. Kemudian klik “Next”.

6

Pada window “New Java Project” berikutnya klik saja “Finish”.

7

Kini pada panel “Project Explorer” di sebelah kiri muncul sebuah node bertuliskan “CobaEclipse”. Node itulah project yang baru kita buat barusan. Di dalam node tersebut terdapat folder “src”. Di dalam folder itulah nantinya kita akan menyimpan semua source code program java yang kita buat.

Bila Anda lihat menggunakan windows explorer, pada direktori C:\TUTORIAL akan muncul sebuah direktori baru dengan nama CobaEclipse. Setiap kali membuat project baru, Eclipse akan membuatkan sebuah folder pada file system di sistem operasi untuk menyimpan file-file project tersebut. Nama folder ini sama dengan nama project yang dibuat.

Untuk mencegah kehilangan data, direktori-direktori inilah yang perlu Anda backup bila Anda bekerja menggunakan Eclipse. Di dalam direktori project inilah tersimpan semua source code program yang kita buat.

Membuat File Java Class

Untuk membuat file source code kelas Java, klik kanan pada folder “src”. Kemudian pilih New –> Other.

8

Pada window “New” pilih Java –> Class. Kemudian klik “Next”.

9

Pada window “New Java Class” isikan field “Name: “ dengan “CobaSatu”. Ini artinya kita akan membuat sebuah class java dengan nama “CobaSatu”. Kemudian klik tombol “Finish”.

10

Setelah menekan tombol “Finish” kini pada folder “src” muncul file class yang barusan kita buat. Di sini ditunjukan dengan nama CobaSatu.java. Pada panel editor, di sebelah kanan, ditampilkan source code class CobaSatu.java ini.

11

Ubah koding kelas CobaSatu ini menjadi seperti ini:

1

2

3

4

5

public class CobaSatu {

public static void main(String[] args) {

System.out.println("Coba kelas pertamaku");

}

}

Kemudian simpan dengan cara File –> Save All. Setelah itu klik kanan pada node CobaSatu.java di panel Project Explorer. Kemudian pilih Run As –> Java Application. Proses ini akan menjalankan/mengeksekusi source code program yang baru kita buat barusan.

12

Hasil eksekusi program ini ditampilkan pada panel Console yang ada di bagian bawah Editor eclipse. Output yang dihasilkan adalah tulisan pada console:

Coba kelas pertamaku

13

Sampai di sini kita sudah selesai membuat sebuah project pada eclipse sekaligus membuat sebuah sebuah kelas dan menjalankan kelas tersebut pada eclipse. Kira-kira seperti inilah gambaran umum cara membuat program menggunakan eclipse.

Membuat Package

Pada panel Project Explorer, klik kanan pada node “src” kemudian pilih New –> Other.

14

Pada window “New” pilih Java –> Package. Kemudian klik “Next”.

15

Pada window “New Java Package” isikan nama package dengan nama “id.co.firman” pada field “Name:”. Kemudian klik tombol Finish.

16

Kini coba perhatikan pada panel Project Explorer. Di dalam node “src” kini bertambah package yang barusan kita buat yaitu node “id.co.firman”.

17

Memindahkan File Class Ke Package Lain

File CobaSatu.java masih berada di luar package id.co.firman. Dalam hal ini dalam eclipse terlihat file CobaSatu.java berada pada default package. Kita akan memindahkan file CobaSatu.java ini ke dalam id.co.firman.

Pada panel Project Explorer, klik kanan pada class CobaSatu.java. Kemudian pilih Refactor –> Move.

18

Pada window “Move” pilih package tujuan pemindahan file. Dalam hal ini kita pilih “id.co.firman”. Kemudian klik “OK”.

19

Coba perhatikan di panel Project Explorer. Kini file kelas CobaSatu.java sudah berada di dalam package id.co.firman.

20

Dan lihat pula pada source code CobaEclipse.java. Pada baris pertama kini ditambahkan statement “package id.co.firman;”. Statement ini secara otomatis ditambahkan oleh Eclipse. Dalam Java, statement ini menyatakan lokasi package tempat kelas ini berada. Biasanya statement ini harus ditulis secara manual oleh sang programmer. Tapi bila menggunakan fasilitas refactor kepunyaan Eclipse, si Eclipse akan mengeditkannya untuk kita.

Demikianlah cara memindahkan file, yaitu dengan cara Refactor –> Move.

Membuat File Class dalam Package

Klik kanan pada package id.co.firman. Pilih New –> Other.

21

Pada window “New” pilih Java –> Class. Kemudian klik “Next”.

22

Pada window “New Java Class”, beri nama kelas yang baru ini dengan nama “CobaDua” dengan mengisi field “Name:” dengan nilai “CobaDua”. Coba perhatikan field “Package:” tertulis nilai “id.co.firman”. Ini artinya kelas yang kita buat ini akan berada di dalam package id.co.firman. Kemudian klik “Finish”.

23

Pada panel Project Explorer, kini file kelas CobaDua.java berada dalam package id.co.firman.

24

Membuat Getter dan Setter pada Eclipse

Sebaiknya atribut sebuah kelas menggunakan akses level selain public. Untuk itu, di sini kita akan membuat method getter dan setter dengan bantuan eclipse.

Pada kelas CobaDua, buat dua buah atribut String dengan level akses private. Kedua atribut ini adalah nama dan alamat.

1

2

private String nama;

private String alamat;

Kemudian, tempatkan kursor di bawah kedua atribut tersebut. Lalu klik kanan pada daerah tersebut. Pllih Source –> Generate Getters and Setters…

25

Pada window “Generate Getters and Setters”, beri centang pada checkbox atribut alamat dan nama seperti pada gambar. Lalu tekan “OK”.

26

Coba perhatikan pada source code kini sudah ditambahkan method getter dan setter untuk atribut nama dan alamat. Simpan semua perubahan ini dengan memilih File –> Save All.

27

Secara lengkap kode pada kelas CobaDua menjadi seperti ini:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

package id.co.firman;

public class CobaDua {

private String nama;

private String alamat;

public String getNama() {

return nama;

}

public void setNama(String nama) {

this.nama = nama;

}

public String getAlamat() {

return alamat;

}

public void setAlamat(String alamat) {

this.alamat = alamat;

}

}

Shuffling Card Algorithm

Card games have been mankind’s favorite passtime long
before the era of computers. Many, perhaps
most, popular card games have been programmed
into computer software.

Every card game I have ever seen starts by shuffling the
cards. The purpose of the shuffling is to rearrange the
cards in a more-or-less random order.

Surprisingly, despite the popularity of card
games among computer users, just about
any programming textbook teaches several algorithms on
how to sort a pack of cards but most offer no clue on
how to shuffle it.

In this node I will present my own card-shuffling algorithm. I also hope others will present other
card-shuffling algorithms.

Preliminaries

First of all, to use my algorithm we need to represent
the cards as an integer array of size n, where n is the
total number of cards.

For example, a typical solitaire game uses one deck of
cards consisting of four suits each containing 13 cards
(from ace to king). In this case, n is equal to 4 times 13,
or 52.

A different game can use two decks, plus four jokers, for
an n of 108, etc.

Whatever the size of n, we will have n cards which we
will refer to as card[0] … card[n-1]. Each card has a
unique value in the [0…n-1] range.

It is quite simple to convert the integer value of a card
into its suit and face value. For example, with n = 52 we
have four suits (0…3), so any card[i] is inside the
suit card[i] / 13, while its face value is card[i] MOD 13,
where MOD designates modulo division.

The Algorithm

Step 1 : Initialize the cards. For each i in the [0…n-1] range, set card[i] = i.
Step 2 (optional) : Seed the random number generator.
Step 3 : Let i = 0.
Step 4 : Let j = random_number MOD n.
Step 5 : Exchange the values of card[i] and card[j].
Step 6 : Let i = i + 1. If i is less than n, go to step 4.

Sample Source Code

Here is a sample C function implementing the algorithm:
void shuffle(int *card, int n) {
int i, j, k;
for (i = 0; i < n; i++)
card[i] = i;
for (i = 0; i < n; i++) {
j = rand() % n;
k = card[i];
card[i] = card[j];
card[j] = k;
}
}

Jacques Mesrine

It has been 17 months since Jacques Mesrine, 42, the self-styled Robin Hood of the French underworld, became the first inmate ever to scale the walls of the 112-year-old Santé Prison in Paris and embarked on a picaresque Odyssey of plunder and kidnapping (PEOPLE, June 26, 1978). As always, the ex-soldier
turned killer and stick-up man has courted the spotlight like a preening jambon; U.S. admirers of the French cinema need not be told of the Gallic
appreciation of mayhem and anarchy. One month after he held up a suburban Paris bank, making off with $100,000 in cash, he wined and dined an attractive French journalist in his hideout. Following the roast lamb and champagne, Mesrine launched into his customary diatribe of self-justification and maudlin self-pity. “I would have
preferred to sleep without a gun,” he told her, “to have a wife and kids and be happy. But I know it’s not possible. From now on, it’s war.” For awhile, Mesrine’s deadliest ammunition was verbal. After a botched attempt to kidnap the judge who had once sentenced him to 20 years in prison, Monsieur Jacky bombarded the press with explanations. Then last June, he scored his greatest coup yet. Posing as a policeman, he abducted millionaire Henri Lelièvre from his country estate near Le Mans, returning him for a ransom of $1.4 million. Gendarmes stewed, the public tittered and the master criminal retired smugly into hiding. Frenchmen might still be laughing had not Mesrine’s egomania overcome his sense of public relations. Apparently angered by a critical magazine article, the killer invited crime reporter Jacques Tillier to a rendezvous, then drove him to an underground quarry. There, at gunpoint, Mesrine and another thug ordered Tillier to strip, handcuffed him, beat him bloody and shot him. Wisely, Tillier played dead, then stumbled to safety, naked and shivering, after his assailants had driven away. Mesrine, adding grisly insult to injury, mailed Polaroid photographs of his battered victim to several newspapers and claimed he had
never intended to kill him. “Tillier paid the price as a warning,” he wrote. “He is not dead because I did not wish his death. But I have gone to the limit of violence.” Indeed he had—and beyond the
limit, at last, of what his sickened fellow Frenchmen could stomach., France’s romanticization of its Robin Hood was over.

Model of Conventional Crytosystem

 model-of-conventional-cryptosystem.jpg

Model of Conventional Crytosystem

 Cryptanalysis

Cryptanalysis is the study of principles and methods of transforming an unintelligible message back into an intelligible message without knowledge of the key. Also called codebreaking.

In addition to mathematical analysis of cryptographic algorithms, cryptanalysis also includes the study of side-channel attacks that do not target weaknesses in the cryptographic algorithms themselves, but instead exploit weaknesses in their implementation.

 Encryption

Encryption is the process of encoding messages (or information) in such a way that eavesdroppers or hackers cannot read it, but that authorized parties can. In an encryption scheme, the message or information (referred to as plaintext) is encrypted using an encryption algorithm, turning it into an unreadable ciphertext (ibid.). This is usually done with the use of an encryption key, which specifies how the message is to be encoded. Any adversary that can see the ciphertext should not be able to determine anything about the original message. An authorized party, however, is able to decode the ciphertext using a decryption algorithm, that usually requires a secret decryption key, that adversaries do not have access to. For technical reasons, an encryption scheme usually needs a key-generation algorithm to randomly produce keys.

Decryption 

Forensic analysis, in particular forensic accounting (the utilization of accounting, auditing, and investigation to assist in financial legal matters), can involve dealing with information that has been altered so as to be unreadable and impossible to understand without using decryption to convert it into readable material. This scrambling of information is done in a controlled fashion, according to a pre-determined pattern. If this pattern can be understood, then the meaningless scramble can be reconverted to intelligible text. If this pattern can be understood, then the meaningless scramble can be reconverted to intelligible text. Decryption is simply the reverse of encryption, the process by which ordinary data, or plain text, is converted into a cipher. A cipher, often incorrectly identified as a code, is a system in which every letter of a plain text message is replaced with another letter so as to obscure its meaning. To decipher a message requires a key, an algorithm that provides the method by which the message was encrypted.

Secure Channel

In cryptography, a secure channel is a way of transferring data that is resistant to overhearing and tampering. A confidential channel is a way of transferring data that is resistant to overhearing, but not necessarily resistant to tampering.

• A stream with these security requirements:

– Authentication

• Ensures sender and receiver are who they claim to be

– Confidentiality

• Ensures that data is read only by authorized users

– Data integrity

• Ensures that data is not changed from source to destination

– Non-repudiation (not discussed today)

• Ensures that sender can’t deny message and rcvr can’t deny msg.

Creating Secure Channels

• Authentication and Data Integrity

– Use Public Key Infrastructure or third-party

server to authenticate each end to the other

– Add Message Authentication Code for

integrity

• Confidentiality

– Exchange session key for encrypt/decrypt ops

• Bulk data transfer

• Key Distribution and Segmentation

Symmetric Key-based Secure Channel

• Sender (A) and receiver (B) share secret keys

– One key for A è B confidentiality

– One for A è B authentication/integrity

– Each message sent from A è B contains:

• Ciphertext = E_KABencrypt(nonce + msg)

• Authenticity/Integrity check = MAC_KABauth(Ciphertext)

• Different keys for each direction = 4 keys

– KABencrypt, KABauth, KBAencrypt, KBAauth

Security Computer: X.800 and RFC 2828

The similar function X.800 and RFC 2828

ITU-T Recommendation X.800 (Security Architecture for OSI) and IETF RFC 2828(Internet Security Glossary) are used as references to systematically evaluate and define security requirements. Though coming from different standardization bodies, the two standards have many points in common. X.800 is used to define general security-related architectural elements needed when protection of communication between open systems is required. X.800 establishes guidelines and constraints to improve existing recommendations and/or to develop new recommendations in the context of OSI. Similarly, RFC 2828 provides abbreviations, explanations and recommendations for information system security terminology.Both X.800 and RFC 2828 are designed to assist security managers in defining security requirements and possible approaches to meeting those requirements. They also help hardware and software manufacturers to
develop security features for their products and services that follow certain standards. X.800 and RFC 2828 both mention several aspects of security systems, namely security threat and attack, security services and mechanisms and security management.

Different X.800 and RFC 2828

RFC 2828 describes the difference Threat and Attack as follows:
Threat is a potential attack against security is there when there is a state possible, actions, or events that may penetrate security and may cause damage. A threat is a possibility hazards arising from the weakness in the systems.Attack is an attack on the system security that comes from an act intended to get rid of the security service and
violate safety rules on the system.

ITU-T 2 recommend X.800, Security Architecture for OSI which defines a systematic approach to provide security needs. It is a standard that international security vendors will always refer to these standards. OSI focuses on security services, mechanisms, and attack.Security Services X.800 defines the security services as a service (service) provided by a protocol layer of the communications system open, which ensure of the security system or adequate data transfer. X.800 divides services into five categories as will discussed below.

Security Service

1. Authentication
Authentication ensures that entities do communication is the correct entity. This service is ensure there is no interference from the third of the communication is done. There is
two types of authentication services, namely:
l Peer entity authentication provide evidence the identity of the connected entities. It is used at the time of formation and during transfer The data from a connection.
l Data origin authentication provides evidence source of the data unit. Provide assurance that the source of the data is claimed.
2. Access Control
The ability to limit and control access to the host system and applications use an communication. Its implementation is done by early identification of the entity that will enter the lines of communication. Prevent users not authorized to access the resource.
3. Data Confidentiality
Trasmisi protect data from passive attacks and ensure no changes to the data attack. The aspects that exist in Data confidentiality is:
l Connection Confidentiality: protecting all data owned by the user on a connection.
l Connectionless Confidentiality: protection of all user data on a data block.
l Selective-Field Confidentiality: confidentiality of selection portion of the user data on a connection or in a single data block.
l Traffic-flow Confidentiality: protecting information may be obtained from observation of traffic flow.
4. Data Integrity
Data integrity is the assurance that the data received is really from the data sent from the correct sender. That is not changes occur during data transmission performed. There are five aspects related to data integrity, that is:
l Connection Integrity with Recovery Provide integrity for all users on what one connection and detect the occurrence of modification, addition, deletion, oriteration of any data from a data sequentially to attempt a repair.
l Connection Integrity without Recovery Same as before, but not done improvement.
l Selective-Field Connection Integrity Providing integrity of the passage (Fields) were selected for user data a block of data is transferred at a connection and to determine whether these fields’ve made modifications, additions, removal, looping or not.
l Connectionless Integrity Provide connectionless integrity of the single Data blcok and provide detection of the modification.
l Selective-Field Connectionless Integrity Providing integrity of the (field) that elected in single connectionless Data blcok and provide detection of the modification.
5. Nonrepudation
Prevent sending or receiving deny that the message is correct messages been sent / received. There are two aspects, namely:
l Nonrepudation, origin: proving that the message sent a party set.
l Nonrepudation, destination: ensure messages been received by the set.

Security Mechanisms

Specific Security Mekanisms
OSI security services performed on different protocol layer.
l Encipherment is the use of algorithms mathematics to transform to the data into a form that is not can be understood.
l Digital Signature is a cryptographic transformation of a data unit that allows the recipient data unit to prove the source and integrity of the data unit and protect against forgery.
l Access Control is a mechanism that ensures access to a resource by a user who have rights.
l Data integrity is a mechanism that used to ensure the integrity of a data unit or stream of data units.
l Authentication Exchange is a mechanism which aims to ensure the identity of danri entity for purposes of the exchange of information.
l Traffic padding is added to the data bits stream analysis attempts to confuse traffic.
l Routing Control receives the selection of a safe route to certain data and allow changes routing especially when security breaches made it known.
l Notarization is the use of third party reliably during the process of data exchange.

Pervasive Security Mechanisms

The mechanisms that are not specific to the protocol layer particular.
l Trusted Functionality: faith in the truth a certain criteria.
l Security Labels: signs of the limits of a resource that describes the security attributes of the resource.
l Event Detection: detection security of a events.
l Security Audit Trail: data collection used for security audits,
l Security Recovery: do event handling and management functions, and take action recovery.

X.800 distinguishes mekansisme enchiperment be reversible and irreversible. Mechanism enchiperment reversible encryption algorithm is which allow data to be encrypted and decryption. Mechanisms enchiperment including irreversible hash algorithms and message authentication codes are used for digital signatures and message authentication applications.

Security Attack

X.800 categorize the attacks into two, namely passive attack and active attack. Passive attack conduct experiments to determine / observing or using the information
taken on the victim but did not damage the system resouce system. Examples of passive attack was eavesdropping or monitoring of transmission. These attacks are difficult to be detected, conducted security is in the form of prevention attacker knows the message passed on by way of transmission encryption. Active attack is an attempt to
change and impact on system resources operations. Active attack to do some
modification of data, can be divided into four category: masquarade, replay, modification of messages, and denial of service.

Hello world!

Welcome to WordPress.com. After you read this, you should delete and write your own post, with a new title above. Or hit Add New on the left (of the admin dashboard) to start a fresh post.

Here are some suggestions for your first post.

  1. You can find new ideas for what to blog about by reading the Daily Post.
  2. Add PressThis to your browser. It creates a new blog post for you about any interesting  page you read on the web.
  3. Make some changes to this page, and then hit preview on the right. You can always preview any post or edit it before you share it to the world.