Desktop etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Desktop etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

8 Nisan 2025 Salı

WxRuby3 ile Masaüstü Uygulama Geliştirmek 6

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


Selam, WxRuby ile masaüstü uygulama geliştirme yazı dizimizin son bölümünde bir Tetris oyunu yazacağız nasipse. Yavaş yavaş sindire sindire adım adım uygulamamızı oluşturacağız. 

Haydi başlayalım.



Tetris Oyunu

Öncelikle bir uygulama iskeleti oluşturarak başlayalım. Küçük kibar bir frame ile başlayalım.

tetris.rb

require "wx"

class Tetris < Wx::Frame
 
  def initialize(parent)
    super(parent, size: [180,380],
      style: Wx::DEFAULT_FRAME_STYLE ^ Wx::RESIZE_BORDER ^ Wx::MAXIMIZE_BOX)
    init_UI
  end

  def init_UI
    set_title "Tetris"
    centre

    @statusbar = create_status_bar
    @statusbar.set_status_text '0'
  end
end

Wx::App.run {
  Tetris.new(nil).show
}

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.

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.

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

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. 

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

18 Aralık 2024 Çarşamba

Go Dilinde Modül Oluşturmak

 İçerik

Bu yazımda iki modül üreteceğiz. İlki başka uygulama ya da kütüphaneler içerisinde çağırabileceğiniz bir kütüphane, ikincisi ise bunu kullanacak olan uygulama.

Bunları yaparken Go dilinin değişik özelliklerini kullanmayı öğreneceğiz. 

Go Programlama Dili - 2

 Selam Go dilini öğrenmeye kaldığım yerden devam ediyorum. Nerede kalmıştık?


Go Operatörleri

Operatörler değişkenlerle ve değerlerle işlemler yapmanızı sağlar. 

Örneğin + operatörü aşağıda örnekte görüldüğü gibi toplamanızı sağlar.

package main
import "fmt"

func main() {
  var a = 15 + 25
  fmt.Println(a)
}

10 Aralık 2024 Salı

Go Programlama Dili

 Selam bu yazımda Go programlama dilini öğrenmeye çalışacağım.

Go popüler bir programlama dilidir. Go bilgisayar programları oluşturmak için kullanılır. 


Go Nedir?

  • Go her platformda çalışan , açık kaynak kodlu bir programlama dilidir. Mesela ben bu yazıyı hazırlarken Windows, WSL üzerinde Ubuntu ve Linux Lite işletim sistemlerinde çalıştım.
  • Go , performansı yüksek uygulamalar geliştirmekte kullanılabilir. 
  • Go , basitliği ve verimliliği ile öne çıkan hızlı, static typed (yani değişken tiplerini bildirmek zorundasınız) ve derlenerek kullanılan bir programlama dilidir.
  • Go , Google'da Robert Griesemer, Rob Pike, ve Ken Thompson tarafından 2007'de geliştirilmiş. 
  • Go'nun deyim yapısı biraz C++ 'a benzer.

27 Eylül 2023 Çarşamba

C# Yeni Eklenen Property ile Veri Bağlama (Binding)

 Selam. Bu yazıda veri bağlama işlerini deşmeye devam edeceğim. Daha önce basit yollarını gördüğümüz işlemlerin şimdi daha kuralına uygun yapılmasını göreceğiz. Amacımız bir sınıfta Property (özellik) olarak tanımlanan bir değişkeni veri başlama işleminde kullanmak. Adım adım gidelim.

Öncelikle yeni bir WPF .Net masaüstü uygulaması üreterek başlayalım:

25 Ağustos 2023 Cuma

C#'ta Veri Bağlamak Zor (mu?)

 Selam, bu yazı kısa olacak. Hep kafama takılan bir soru, veri bağlama bu kadar uğraşma gerektirmeden Visual Studio kabiliyetlerini kullanarak yapılamaz mı? Mevcut iki kontrolün özelliklerini birbirine karşılıklı bağlayabiliyoruz. Ama "bir değişken olsun , ben de bu değişkene kontrolü bağlarsam onun özelliğini değiştirsin, arkaplan kodundan da değere müdahale edebileyim", deyince bir sürü iş çıkıyor başımıza. Yazılımcının iyisi tembel olanıdır deyip , bu işe kolay bir çözüm aradım ve aşağıda yazdıklarım çıktı ortaya. Hadi bakalım,

17 Nisan 2023 Pazartesi

Python Tkinter ile Slant Oyunu Yazalım

 Selam , bu sıralar oyunlara taktım. Mantık oyunlarını ya oynamak ya da çözmek için kod denemeleri yapıp duruyorum. Bu oyunlardan biri de Slant oyunu. Bu oyun için de çözmek değil ama oynamak için kod yazdım. Bu yazımda sizlerle bu kodu  yazarken nasıl düşündüğümü ve hangi yollardan gittiğimi paylaşacağım.

Pek uzun bir program olmayacak, bu yüzden tek bir Python dosyası ile bitireceğiz. Ama yanında oyun haritaları olacağı için ayrı bir klasörde olsa daha iyi olacak. 

Öncelikle temel ihtiyacımız olan görsel yapıları bir oluşturalım. Öncelikle minimum bir uygulama .

import tkinter as tk

app = tk.Frame(None, width=500, height=500, bg="gray")

app.pack()
app.master.title("SLANT")
app.master.resizable(0, 0)
app.mainloop()