- 248 Okunma
- 0 Yorum
- 0 Beğeni
ERLENG PROGRAMLAMA DİLİYLE KENDİ YAPMIŞ OLDUĞUM BASİT BİR KOMUT SATIRI TABANLI MESAJLAŞMA UYGULAMA
Merhaba arkadaşlar bu benim kendi programlama bilgilerimle ERLANG programlama diliyle yapmış olduğum basit bir komut satırı tabanlı mesajlaşma uygulamasıdır. Uygulamayı geliştireceğim. Ama geliştirmeden sizlerle paylaşmak istedim. Kodları veriyorum.
İşte uygulamanın kodu:
```erlang
-module(messenger).
-export([start/0, send/2, receive/1]).
-record(state, {name, contacts, messages}),
start() ->
io:format("Welcome to Messenger! Please enter your name: "),
Name = io:get_line(""),
State = #state{name = Name, contacts = [], messages = []},
loop(State).
loop(State) ->
io:format("What do you want to do?~n"),
io:format("1. Add a contact~n"),
io:format("2. Send a message~n"),
io:format("3. Receive a message~n"),
io:format("4. Exit~n"),
Choice = io:get_line(""),
case Choice of
"1
" -> add_contact(State);
"2
" -> send_message(State);
"3
" -> receive_message(State);
"4
" -> exit(normal);
_ -> io:format("Invalid choice. Please try again.~n"), loop(State)
end.
add_contact(State) ->
io:format("Please enter the name of the contact you want to add: "),
Contact = io:get_line(""),
case lists:member(Contact, State#state.contacts) of
true -> io:format("You already have this contact.~n"), loop(State);
false -> NewState = State#state{contacts = [Contact | State#state.contacts]},
io:format("Contact added successfully.~n"), loop(NewState)
end.
send_message(State) ->
io:format("Please enter the name of the contact you want to send a message to: "),
Contact = io:get_line(""),
case lists:member(Contact, State#state.contacts) of
true -> io:format("Please enter the message you want to send: "),
Message = io:get_line(""),
send(Contact, {State#state.name, Message}),
NewState = State#state{messages = [{sent, Contact, Message} | State#state.messages]},
io:format("Message sent successfully.~n"), loop(NewState);
false -> io:format("You don’t have this contact. Please add them first.~n"), loop(State)
end.
receive_message(State) ->
receive
{From, Message} ->
NewState = State#state{messages = [{received, From, Message} | State#state.messages]},
io:format("~s sent you a message: ~s~n", [From, Message]), loop(NewState);
after 10000 ->
io:format("No new messages.~n"), loop(State)
end.
```
Bu Erlang dilinde yazılmış bir basit bir mesajlaşma uygulamasıdır. Kod, bir modül olan `messenger` içerir ve `start/0`, `send/2` ve `receive/1` olmak üzere üç adet dışa aktarılmış fonksiyon içerir.
1. `start/0`: Bu fonksiyon, kullanıcının adını girmesini bekler ve ardından bir başlangıç durumu oluşturur. Bu başlangıç durumu, kullanıcının adını, kişi listesini ve mesajları saklamak için bir kayıt yapısı içerir. Daha sonra `loop/1` fonksiyonunu çağırarak kullanıcının uygulamayla etkileşimde bulunmasını sağlar.
2. `loop/1`: Bu fonksiyon, kullanıcıya bir dizi seçenek sunar ve kullanıcının seçimine göre ilgili işlemi yapar. Örneğin, yeni bir kişi eklemek, mesaj göndermek veya mesaj almak gibi işlemler bu fonksiyon içinde işlenir. Kullanıcı "4" tuşuna basarak uygulamadan çıkana kadar bu işlem döngüsü devam eder.
3. `add_contact/1`: Bu fonksiyon, kullanıcıya yeni bir kişi eklemesini sağlar. Kullanıcıdan eklemek istediği kişinin adını alır ve bu kişiyi mevcut kişi listesine ekler. Eğer kişi zaten listede varsa, kullanıcıya bilgilendirme yapar.
4. `send_message/1`: Bu fonksiyon, kullanıcının belirlediği kişiye mesaj göndermesini sağlar. Kullanıcıdan önce mesaj göndermek istediği kişinin adını ve ardından mesajı alır. Eğer belirtilen kişi kişi listesinde bulunuyorsa, mesaj gönderir ve gönderilen mesajı kullanıcının mesaj geçmişine ekler.
5. `receive_message/1`: Bu fonksiyon, kullanıcının gelen mesajları almasını sağlar. Erlang’ın `receive` ifadesi ile mesaj beklemesi gereken bir fonksiyondur. 10 saniye boyunca yeni bir mesaj gelmezse kullanıcıya bilgilendirme yapar.
Bu kod, basit bir komut satırı tabanlı mesajlaşma uygulamasının temel işlevlerini gerçekleştirir. Kullanıcılar bu uygulama aracılığıyla kişileri ekleyebilir, mesajlar gönderebilir ve alabilirler. Mesaj geçmişi de kullanıcı tarafından takip edilir.
Bu kodu çalıştırmak için Erlang’ın yüklü olduğu bir bilgisayara ihtiyacınız var. Ayrıca, uygulamanın birden fazla kullanıcı arasında mesajlaşmasını sağlamak için bir sunucu da gerekiyor. Bu kod sadece basit bir örnektir ve gerçek bir uygulama yapmak için daha fazla çalışma gerektirir.
Erlang ile Android uygulaması geliştirmek için [Erlang4Android] ve [SL4A] gibi araçlar kullanabilirsiniz. Bu araçlar sayesinde, Erlang kodunu Android cihazlarda çalıştırabilir ve Android API’lerine erişebilirsiniz.
Erlang ile mesajlaşma uygulaması yapmak için [OTP] gibi kütüphanelerden ve tasarım ilkelerinden yararlanabilirsiniz. OTP, eşzamanlılık, dağıtım ve hata toleransı gibi konularda size yardımcı olur.
[Erlang4Android]: ^2^
[SL4A]: ^2^
[OTP]: ^3^
Kodu test etmek için farklı yöntemler vardır. Örneğin, aşağıdaki kaynaklarda belirtildiği gibi:
- VS Code gibi bir editör kullanarak Erlang programını hata ayıklayabilirsiniz. Bu sayede, kodunuzda kırılma noktaları koyabilir ve değişken değerlerini izleyebilirsiniz.
- Erlang’ın yerleşik komut satırı hata ayıklayıcısı olan dbg’yi kullanabilirsiniz. Bu sayede, işlemleri, fonksiyon çağrılarını ve istisnaları izleyebilir ve kodunuzu adım adım çalıştırabilirsiniz.
- Erlang’ın ortak test çerçevesi olan Common Test’i kullanarak otomatik test senaryoları yazabilir ve çalıştırabilirsiniz. Bu sayede, kodunuzun doğruluğunu ve performansını ölçebilir ve test sonuçlarını analiz edebilirsiniz.
- IntelliJ IDEA gibi bir IDE kullanarak Erlang kodunu derleyebilir, çalıştırabilir, hata ayıklayabilir ve test edebilirsiniz. Bu sayede, kodunuzu kolayca düzenleyebilir, tamamlatabilir ve refaktör edebilirsiniz.
VS Code’da Erlang programını hata ayıklamak için aşağıdaki adımları izleyebilirsiniz:
- VS Code’u açın ve Erlang programınızın bulunduğu bir klasörü açın.
- Uzantılar paneline gidin (Ctrl + Shift + X) ve Erlang uzantısını arayın ve yükleyin. Bu uzantı, Erlang kodunuz için sözdizimi vurgulaması, kod tamamlaması, belgeleme ve hata ayıklama desteği sağlar.
- Hata ayıklama paneline gidin (Ctrl + Shift + D) ve Hata Ayıklama ve Başlat’ı tıklayın. Bu, hata ayıklama yapılandırmanızı seçmenizi sağlayan bir açılır menü açar.
- Açılır menüden Erlang’u seçin. Bu, .vscode klasörü altında launch.json adlı bir dosya oluşturur. Bu dosya, hata ayıklama ayarlarınızı içerir.
- launch.json dosyasında, program özelliğini Erlang programınızın adıyla değiştirin. Örneğin, messenger.erl gibi.
- Hata ayıklama panelinde, Yeşil Oynat düğmesini tıklayın veya F5 tuşuna basın. Bu, Erlang programınızı çalıştırır ve hata ayıklamaya başlar.
- Hata ayıklama panelinde, kırılma noktaları ekleyebilir, değişken değerlerini izleyebilir, kodunuzu adım adım çalıştırabilir ve diğer hata ayıklama işlemlerini yapabilirsiniz.
IntelliJ IDEA’da Erlang kodunu test etmek için aşağıdaki yöntemleri kullanabilirsiniz:
- IntelliJ IDEA’nın yerleşik Erlang derleyicisini kullanarak Erlang projelerini derleyebilir, çalıştırabilir, hata ayıklayabilir ve test edebilirsiniz. Bu sayede, kodunuzu kolayca düzenleyebilir, tamamlatabilir ve refaktör edebilirsiniz.
- Erlang’ın ortak test çerçevesi olan Common Test’i kullanarak otomatik test senaryoları yazabilir ve çalıştırabilirsiniz. Bu sayede, kodunuzun doğruluğunu ve performansını ölçebilir ve test sonuçlarını analiz edebilirsiniz.
- Rebar3 gibi bir araç kullanarak Erlang uygulamalarını derleyebilir, çalıştırabilir, hata ayıklayabilir ve test edebilirsiniz. Bu sayede, Rebar3 komutlarını terminalden çalıştırmak yerine, IntelliJ IDEA’da ayrı bir hata ayıklama yapılandırması olarak kaydedebilir ve değiştirebilirsiniz.
Bu kod sadece tek bir kullanıcıyı destekler. Bu kod mesajların teslim edilip edilmediğini veya okunup okumadığını kontrol etmez. Bu kod mesajların şifrelenmesini veya güvenilir bir şekilde iletilmesini sağlamaz. Bu kod kullanıcıların profil resmi, durum mesajı, grup özellikleri gibi ekstra özelliklere sahip olmasını sağlamaz.
YORUMLAR
Henüz yorum yapılmamış.