2 Nisan 2025 Çarşamba

Rails 7 Denemeler 5

https://ujk-ujk.blogspot.com/2025/04/rails-7-denemeler-5.html
İçindekiler +


İletişim sayfası

Uygulamamıza İletişim sayfası ekleyerek devam edeceğiz. Öncelikle test rutinlerini ekleyelim. 

test/controllers/static_pages_controller_test.rb

require "test_helper"

class StaticPagesControllerTest < ActionDispatch::IntegrationTest
  ....

  test "should get contact" do
    get static_pages_contact_url
    assert_response :success
    assert_select "title", "İletişim | Yeni App"
  end

end

31 Mart 2025 Pazartesi

Rails 7 Denemeler 4

https://ujk-ujk.blogspot.com/2025/03/rails-7-denemeler-4.html
İçindekiler +

 

Selam bu bölümde Rails uygulamalarımızın görselleriyle uğraşacağız biraz.



Yerleşimi Doldurmak

Yeni App (statik sayfalar) uygulamamızı yaparken stil dosyalarının yerini ve sayfalarımıza yerleşim dosyasında nasıl eklendiğini görmüştük. app/assets/stylesheets/application.css stil dosyamız şu anda boş. Bu bölümde bir CSS framework kullanarak uygulamamıza stiller ekleyeceğiz. Önce yerleşim dosyasında sayfalarımıza bağlantılar koyacağız. Bunları yaparken kısmi (partial) görselleri öğreneceğiz. Sass kütüphanesini kullanacağız. 

29 Mart 2025 Cumartesi

WxRuby3 ile Masaüstü Uygulama Geliştirmek 5

https://ujk-ujk.blogspot.com/2025/03/wxruby3-ile-masaustu-uygulama_29.html
İçindekiler +


Selam, WxRuby öğrenmeye kendi widget'larımızı üreterek devam ediyoruz. 


Kendi Wx Nesnemizi Tanımlamak  

GUI araç kitlerinde genelde button'lar, text widget'lar, scrollbar'lar, slider'lar gibi temel elemanlar olur. Her istediğimizi barındırmaları mümkün değil tabi ki. Daha gelişmiş elemanları programcı kendi üretir. 

Kendi widget'ımızı iki yolla üretebiliriz. Ya mevcut bir nesneyi değiştiririz ya da sıfırdan yeni bir widget tanımlarız.

24 Mart 2025 Pazartesi

Rails 7 Denemeler 3

https://ujk-ujk.blogspot.com/2025/03/rails-7-denemeler-3.html
İçindekiler +

Selam Rails 7 denemelerine Ruby programlama temellerini göreceğimiz bir bölümle devam ediyoruz. Önceki bölümde yazdığımız "yeni_app" uygulamamız üzerinden devam edeceğiz. 




Rails Aromalı Ruby 

Önceki bölümde Rails açısından önemli olan bazı Ruby programlama teknikleri kullandık. Ruby çok büyük bir programlama dili, neyse ki Rails uygulaması geliştirmek için bilmemiz gerekenler çok da fazla değil. Bu bölümde Rails'de kullanılan Ruby tekniklerine bir göz atacağız. İleride uygulamalar geliştirdikçe Ruby dili hakkında daha geniş bilgileri tekrarlarla öğrenmeye devam edeceğiz. 

22 Mart 2025 Cumartesi

WxRuby3 ile Masaüstü Uygulama Geliştirmek 4

https://ujk-ujk.blogspot.com/2025/03/wxruby3-ile-masaustu-uygulama_22.html
İçindekiler +

 Selam WxRuby ile masa üstü uygulamalara gelişmiş widget'larla devam ediyoruz.


WxRuby Gelişmiş Widget'lar

Bu bölümde Wx::ListBox, Wx::HTML::HtmlWindow ve Wx::ListCtrl widget'larını göreceğiz. 

Wx kütüphanesinde gelişmiş elemanlar var, tree widget, bir HTML window, bir grid widget, bir listbox widget, bir list widget, veya gelişmiş stillendirme özelliklerine sahip editor widget gibi.



Wx::ListBox

ListBox nesnesi bir liste olarak verilen değerleri göstermek için kullanılır. ListBox nesnesi iki farklı şekilde üretilebilir, tek seçimli ya da çoklu seçimli olarak. Default olan tek seçimli olandır.

Rails 7 Denemeler 2

https://ujk-ujk.blogspot.com/2025/03/rails-7-denemeler-2.html
İçindekiler +

 Selam Rails 7 ile denemelerimize devam ediyoruz. 


Statik Sayfalar

Bu seferki uygulamamızda biraz daha gelişmiş ve bundan sonraki uygulamalarımıza temel teşkil edecek bir uygulama planlıyoruz. Burada veri tabanına bağlı olmayan statik web sayfaları yapacağız. Statik web sayfalarını Rails yöntemiyle yapmak , bize Rails işleyişini anlamak için çok yararlı olacaktır. 

Rails, veri tabanına dayalı web siteleri yapmak için geliştirilse bile , her uygulamanın statik sayfalara ihtiyacı vardır .Rails ile geliştirilen statik sayfalar ise her ne kadar statik dense de kolayca içlerine dinamik davranışlar eklenebilir. Bu uygulama da ayrıca otomatik testler için de bir giriş yapacağız. 

18 Mart 2025 Salı

Rails 7 Denemeler 1

https://ujk-ujk.blogspot.com/2025/03/rails-7-denemeler-1.html
İçindekiler +

 

Selam RubyOnRails versiyon 7 ile bazı denemeler yaparken framework özelliklerini öğrenmeyi amaçlıyorum. 



RubyOnRails Kurulumu

Rails kullanarak uygulama geliştirirken kullandığımız Ruby ve Rails gem versiyonlarının stabil olması , ileride sıkıntılar yaşamamak için önemli. Bu yüzden kurulumları Ruby Version Manager - rvm ile yapacağız. 

RVM Linux sistemlerde kuruluyor Windows'ta da WSL Ubuntu terminal kullanarak kurulabilir. 

Öncelikle PPA kaynaklarını kullanmak için yüklenmesi gereken paket için konsolda

$ sudo apt-get install software-properties-common

Bu baştaki $ işareti prompt'u ifade için kullanılan bir genel gösterim konsola onu yazmayacağız tabi ki.

Şimdi rvm kaynaklarını sisteme eklemek için konsolda şu iki satırı girelim.

$ sudo apt-add-repository -y ppa:rael-gc/rvm
ve
$ sudo apt-get update

Son olarak rvm kurulumunu yapalım.

$ sudo apt-get install rvm

15 Mart 2025 Cumartesi

Ruby Temelleri 9

https://ujk-ujk.blogspot.com/2025/03/ruby-temelleri-9.html
İçindekiler +

 

Selam, Ruby temellerini öğrenmeye devam ediyoruz.



Örtülü Alıcılar ve Self


-- Her zaman örtülü bir alıcı vardır

Ruby'de bir metod çağırdığımızda, o metodun mutlaka bir alıcısı (gönderildiği nesne) vardır. Eğer bu alıcı net olarak belirtilmiyorsa Ruby bu örtülü alıcıyı self değerinde saklar. class ve module deyimleri de self değerinin işaret ettiği nesneye göre değişir. Bu davranışları anlamak Ruby dilini anlamamızda çok yardımcı olacaktır.

Örneğin bir IRB oturumunu ilk açtığımızda,

>> self
=> main

12 Mart 2025 Çarşamba

WxRuby3 ile Masaüstü Uygulama Geliştirmek 3

https://ujk-ujk.blogspot.com/2025/03/wxruby3-ile-masaustu-uygulama_12.html
İçindekiler +

 Selam WxRuby3 GUI kütüphanesi denemelerimize widget'ları inceleyerek devam ediyoruz.


Wx::ToggleButton

Wx::ToogleButton iki pozisyonu olan bir buton nesnesi: basılı ve basılı olmayan görünümleri var. Her tıkladığımızda bu iki durum arasında değişiyor. Bazen bu şekil çalışan butonlar lazım olur. 

Wx::ToggleBuuton.new metodunun parametreleri.

initialize(parent, id, label, pos = Wx::DEFAULT_POSITION,
  size = Wx::DEFAULT_SIZE, style = 0, val = Wx::DEFAULT_VALIDATOR,
  name = Wx::CHECK_BOX_NAME_STR)

parent, id ve label sıralı verilmek zorunda onları verdikten sonra diğerlerini sırası olmadan key parametre olarak verebiliriz.

9 Mart 2025 Pazar

Ruby Temelleri 8

https://ujk-ujk.blogspot.com/2025/03/ruby-temelleri-8.html
İçindekiler +

 Selam Ruby'nin temel tekniklerine kaldığımız yerden devam ediyoruz.



Enumerator Sınıfı

Bir Enımerator elemanlarına iterasyon uygulanabilen bir nesnedir. Bir koşul karşılanana kadar döngüye girmek yerine, nesne gerektiği gibi eleman değerlerini sıralar (enumerates). 

8 Mart 2025 Cumartesi

WxRuby3 ile Masaüstü Uygulama Geliştirmek 2

https://ujk-ujk.blogspot.com/2025/03/wxruby3-ile-masaustu-uygulama_8.html
İçindekiler +

 Selam WxRuby3 GUI kütüphanesi denemelerimize olay işleme teknikleri ile devam ediyoruz. 


WxRuby'de Olaylar

Olaylar her GUI uygulamanın vazgeçilmez parçasıdır. Tüm GUI uygulamaları olay yönelimlidir. Bir uygulama çalıştığı müddetçe değişik olaylara tepki gösterir. Bir uygulamada olaylar genellikle kullanıcı tarafından oluşturulur. Ama başka şeyler de olay üretebilir, mesela internet bağlantısı, pencere yöneticisi veya zamanlama ile üretilen olaylar. Uygulamamızda run metodunu çalıştırdığımızda, uygulamamız olayların oluşmasını beklemeye başlar. 

6 Mart 2025 Perşembe

WxRuby3 ile Masaüstü Uygulama Geliştirmek 1

https://ujk-ujk.blogspot.com/2025/03/wxruby3-ile-masaustu-uygulama.html
İçindekiler +

 Selam Ruby ile masaüstü program yazmak üzerine neler yapabilirim bir göreyim dedim ve başladım denemelere. Denemelerimi Windows'ta yaptım. Windows üzerinde bende kurulu olan versiyon ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [x64-mingw-ucrt] olarak geliyor. Ruby installer sitesinden Ruby+Devkit 3.4.2-1 (x64) versiyonu indirip kurdum. 


WxRuby3 Kurulumu

WxRuby3 GUI kütüphanesini yüklemek için komut isteminde 

gem install wxruby3

komutunu girdim ve sıkıntısız yüklendi. Sizde sorun olurssa bendeki versiyon Ruby ile deneme yaparsınız. 

Hemen deneme yapmak için hello.rb adında bir dosya üretip içine şu kodu yazdım.

require 'wx'
Wx::App.run { puts 'Merhaba Dünya!' }

5 Mart 2025 Çarşamba

Ruby Temelleri 7

https://ujk-ujk.blogspot.com/2025/03/ruby-temelleri-7.html
İçindekiler +

 Selam, Ruby temel tekniklerine kaldığımız yerden devam ediyoruz. 



Singleton Sınıflar

Singleton (tekil) sınıfların sadece bir tane oluşum nesnesi olabilir. 

Ruby'de 3 çeşit nesne vardır

  • Class ve Module sınıflarının oluşumu olan sınıflar ve modüller
  • Sınıfların oluşum nesneleri
  • Singleton sınıflar

1 Mart 2025 Cumartesi

Ruby Temelleri 6

https://ujk-ujk.blogspot.com/2025/03/ruby-temelleri-6.html
İçindekiler +

 

Merhaba kaldığımız yerden devam edelim.



Comparable Modülü

Deyim yapısı

include Comparable


Uzay gemisi operatörü (<=>) uyarlamasını yapar. Nesneleri sıralanabilir sınıflara karşılaştırma özelliği eklemekte kullanılır. Sınıfa metodun uyarlaması yapılır.

Aynı sınıf oluşumu olan x ve y nesnelerini alalım.

  • x < y ise , x <=> y negatif bir sayı dönmelidir.
  • x == y ise , x <=> y sıfır dönmelidir.
  • x > y ise , x <=> y pozitif bir sayı dönmelidir

25 Şubat 2025 Salı

Ruby Temelleri 5

https://ujk-ujk.blogspot.com/2025/02/ruby-temelleri-5.html
İçindekiler +

 

Selam , Ruby temel tekniklerine kaldığımız yerden devam ediyoruz.



Metodlar

Metodlar bir kısım aksiyonu tekrar tekrar kullanılması için isimlendirilmiş bloklar içine toplamaya yarar. Aynı şeyleri tekrar tekrar yazmanıza gerek kalmadan yapabilmenizi sağlayarak kodunuzun takibini kolaylaştırır. Bu başlık altında Ruby metodlarının tanımlaması, kullanılması, parametreleri, "yield" ifadelerini göreceğiz. 

21 Şubat 2025 Cuma

Ruby Temelleri 4

https://ujk-ujk.blogspot.com/2025/02/ruby-temelleri-4.html
İçindekiler +

 

Merhaba, Ruby dilinin temel tekniklerini incelediğimiz yazımıza devam ediyoruz.


String Değerler

-- Deyim yapıları

"Bir string" # tek tırnak kullanarak string nesne üretimi
"Bir string" # çift tırnak kullanarak string nesne üretimi
String.new("Bir string") # String sınıfı 'new' metodu ile
%q(Bir string) # tek tırnakla string üretmenin alternatif şekli
%Q(Bir string) # çift tırnakla string üretmenin alternatif şekli

16 Şubat 2025 Pazar

Ruby Temelleri 3

https://ujk-ujk.blogspot.com/2025/02/ruby-temelleri-3.html
İçindekiler +

Merhaba, 3. bölümde sınıflarda kalıtım sistemi ile devam ediyoruz.


Sınıflarda kalıtım

-- Deyim yapısı

class AltSınıf < ÜstSınıf
 
end



-- Alt sınıflar

15 Şubat 2025 Cumartesi

Ruby Temelleri 2

https://ujk-ujk.blogspot.com/2025/02/ruby-temelleri-2.html
İçindekiler +

 Selam,

Yazının 2. bölümünde sınıflarla devam ediyoruz.



Sınıflar

Bu kısımla ilgili daha değişik bilgileri tercüme ettiğim Wikibooks/Ruby/Sınıflar sayfasında da bulabilirsiniz.

Bir sınıf tanımlamanın deyim yapısı.

class İsim
    # sınıf davranışını belirleyen bir kısım kod
end


Ruby'de sınıf isimleri, veri tipi olarak sabitlerdir, o yüzden büyük harfle başlamaları gerekir.

10 Şubat 2025 Pazartesi

Ruby Temelleri 1

https://ujk-ujk.blogspot.com/2025/02/ruby-temelleri-1.html
İçindekiler +

Ruby birçok platformda çalışan, açık kaynak, dinamik, nesne temelli, yorumlamalı bir dildir. Basit ve üretken olmak amaçlı geliştirilmiştir. 1995 yılında Yukihiro Matsumoto (Matz) tarafından geliştirilmiştir.

Bu yazıda Ruby'nin temel tekniklerini inceleyeceğiz. Ruby programlama dili hakkında bilgilendirme amaçlayan Wikibooks Ruby Tercümesi de tarafımdan büyük kısmı yapılmış bir tercüme olarak birçok bilgi içeriyor. Okumanızı tavsiye ederim.


Merhaba Dünya

Ruby programlama dilinin bilgisayarınızda kurulu olduğunu kabul ederek ilk programı yazmaya başlayalım. Ben genelde Ubuntu işletim sisteminde ve editör olarak da VSCode editör kullanıyorum.

Şimdi denemelerimizi yapacağımız bir klasör oluşturup içinde ilk programımız olan merhaba.rb dosyasını ekleyelim ve içine şu kodu yazalım:

puts 'Merhaba Dünya!'

18 Ocak 2025 Cumartesi

Ubuntu'da CSharp Uygulaması Geliştirmek

 Merhaba, bu yazımda Ubuntu Linux sistemde C# program geliştirmeyi çalışacağım. Daha önceleri Windows uygulamaları geliştirmek için C# programlama dilini birçok kez kullandım. Ama şimdi yeni bir ihtiyaç doğdu, RaspberyPi benzeri bir sisteme ekran bağlayıp oluşturulan terminallerle veri toplamak. 

Amacımı gerçekleştirmek için daha önce duyduğum fakat hiç denemediğim Linux Mono kurulumu yaparak C# programlarımı Ubuntu sistem üzerinde çalıştırmayı deneyeceğim. Amacıma ulaşırken aynı programları hem Ubuntu hem de Windows üzerinde çalıştırarak her iki sistemde de çalıştığını görmek istiyorum.

Kurulumlarla başlayalım.



Ubuntu'da Mono Kurulumu

14 Ocak 2025 Salı

Go ile Web Uygulaması Yapmak

 Selam bu yazımda Go programlama dili ile web uygulaması yazmasını inceliyorum. 

Bu yazıda şunları görecekmişiz :

  • Kaydetme ve okuma metodlarıyla beraber bir veri yapısı (struct) tanımlamak
  • net/http paketini kullanarak bir web uygulaması yapmak
  • html/template paketi kullanarak HTML şablonları işlemek
  • regexp paketini kullanarak kullanıcının girdiği bilgiyi doğrulamak
  • closure kullanmak