28 Aralık 2022 Çarşamba

ModuleNotFoundError: No module named 'Tkinter'

 Ubuntu için:

sudo apt-get install python3-tk

27 Aralık 2022 Salı

Ansible'da Değişkenler ve Inventory Dosyasında Sunucuları Gruplandırma

 Ansible'ın yeteneklerini gördükçe heyecanlanıyorum ve gerçekten ufkum genişliyor diyebilirim. Birçok şey yapmaya başladık. Bugün varsayılan yml dosyası oluşturup inventory dosyamızda sunuclarımızı gruplandırdık ve görevleri yine worker'lar üzerindeki sunucu tiplerine göre çalıştırmayı başardık. Yeni yml dosyamızda artık görev görev yapılacak işlemleri ekleyip sonucunun gerçekleşmesini bekliyoruz. Yml dosyasının son hali:

inventory:

[web_sunuculari]
192.168.1.64 

[veritabani_sunuculari]
192.168.1.65 

apache_varsayilan.yml:

apache_sunucusu: apache2
php_kutuphane: libapache2-mod-php

***

---
  - hosts: all
    become: true
    tasks:

    - name: Bu gorev, sunucu güncellemeleri için hazırlanmıştır.
      ansible.builtin.package:
        upgrade: dist
        update_cache: yes
      when: ansible_distribution == "Ubuntu"
    # worker'ların arasında Rocky olsaydı update_only: yes ve
    distirbution kısmı "Rocky" olarak ayrıca eklenecekti.
       

    # Bu görev Ubuntu için Apache ve Php kütüphanesini yükler.
  - hosts: web_sunuculari
    become: true
    tasks:

      - name: İşletim sistemlerini tespit et.
        debug: var=ansible_os_family

      - name: Dosyalardan değişkenleri oku
        include_vars: "{{ lookup('first_found', params) }}"
        vars:
          params:
            files:
            - "vars/apache_{{ ansible_os_family }}"
            - "vars/apache_varsayilan.yml"

      - name: Bu gorev, Ubuntu için apache ve php kütüphanesi ile
                birlikte paket index'ini gunceller.
        ansible.builtin.package:
            name:
              - "{{ apache_sunucusu }}"
              - "{{ php_kutuphane }}"
            state: latest

26 Aralık 2022 Pazartesi

gather_facts komutu

 Ansible otomasyonu eğitimi çok güzel gidiyor. Playbook'ları özelleştirmeye ve farklı yöntemler kullanmaya başladık. Örneğin değişkenleri kullanarak playbook'ları özelleştirdik. Listede yer alan farklı türdeki linux dağıtımları için parametrelerden yararlanarak görevi detaylandırabiliyorsunuz. Ansible ile ilgili yaptığımız çalışma hakkında daha sonra detaylı bilgi tekrar paylaşmaya çalışacağım. Bir de şöyle bir komut kullandık bu hoşuma gittiği için özellikle blog yazmak istedim. Bir worker hakkında dözet bilgi çekip detayına bakmanıza yardımcı oluyor, hangi Linux dağıtımı vs. gibi.

$ ansible all -m gather_facts --limit 192.168.1.64 | grep ansible_distribution

Ve dönen yanıt:

Ansible


24 Aralık 2022 Cumartesi

Ansible Playbook ile Apache Kurulumu Yaptım

 Playbook oluşturmak ve içerisine eklediğimiz görevleri tek bir komutla tüm sunuculara uygulamak gerçekten büyük bir kolaylık. Ufkum genişledi diyebilirim. Eğitim sürecinde şöyle bir şey yaptık, ansible-otomasyonu klasörümüzde bir yml dosyası oluşturduk ve içerisine yapmak istediğimiz görevleri ekleyip kaydettik. Komutlar sırasıyla apt index'ini güncelliyor, ardından apache ve php kurulumunu da yaparak görevi tamamlıyor.

apache_yukleme.yml dosyasının içeriği:

---
  - hosts: all
    become: true
    tasks:

    - name: Bu gorev, apt paket index'ini gunceller.
      apt:
        update_cache: yes

    - name: Bu gorev, apache2 yuklemesini gerceklestirir.
      apt:
       name: apache2
       state: latest

    - name: Bu gorev, apache icin php kutuphanesini yukler.
      apt:
       name: libapache2-mod-php
       state: latest


Playbook'u çalıştırdığımız komut:

ansible-playbook --ask-become-pass apache_yukleme.yml

Visual Studio Terminal ile Githup Commit

git config --global user.name "name"
git config --user.email "e-mail"

21 Aralık 2022 Çarşamba

Ansible Maratonuna Devam - ansible.cfg Dosyasını Oluşturdum

Yazdığımız konfigürasyonla birlikte tüm sunuculara tek bir komutla ve o komutu kısaltarak ping atmayı başardık. Ayrıca bunun dışında tüm sunucuları tek bir komut ile reboot edebildik. Gayet keyifli bir konuydu. Çok yavaş ilerlediğimin farkındayım ama en azından ilerliyorum diyelim :)



17 Aralık 2022 Cumartesi

SSH Remote Host Identification Has Changed - knowsn_hosts Dosyası

 Daha önce ssh bağlantısı kurulmuş ve belirli anahtarlarla bu parmak izleri dijital olarak bilgisayara tanıtılmış ancak sıfırdan yepyeni bir ssh atılmak isteniyorsa cmder veya kabuk aşağıdaki gibi bir hata verecektir. Bu aslında bir kimlik saldırısı olma ihtimaline karşı önlem amaçlı kullanıcıyı uyaran bir sistemdir. Hangi durumda karşılaştım: Daha önce kurduğum ve ssh bağlantısı oluşturduğum sanal sunucumu yeniden aynı konfigürasyonlarla kurduğumda ve ssh atmak istediğimde bu uyarıyla karşılaştım. Yani bilgisayar ssh atılacak yer için daha önce oluşturulmuş bir kayıtla verilerin uyuşmadığını dolayısıyla bunun bir tehdit olabileceğine karşı beni uyarıyor. Çözüm olarak knowsn_hosts dosyasının içerisindeki ilgili kayıtları temizledim ve bağlantıyı yeniden oluşturdum.

knowsn_hosts Dosyası


14 Aralık 2022 Çarşamba

İlk Shell Dosyamı Oluşturdum

 Ansible otomasyonu için kurulum aşamalarını shell ile yapmaya çalışıyorum.

nano ansible.sh
chmod +rx ansible.sh
bash ansible.sh

7 Aralık 2022 Çarşamba

Visual Studio Code ile SSH Yapmak

Bunun için Microsoft'un SSH araçlarını Visual Studio'ya yükledim. Yükleme işlemi için daha önceden oluşturduğum dosya üzerinden Ctrl+Shift+P kombinasyonunu kullandım. Kurulum sonrasında aynı kombinasyonu kullanarak SSH host'u tanımladım ve bunu yaparken ssh panel@192.169.1.63 komutunu girdim. Bağlantı sırasında tabii ki şifre soruyor. Birde bugünkü çalışmalarımın arasında Githup üzerinden yeni bir repostory oluşturarak master sunucum için kullanacağım Visual Studio ile eşleştirmek oldu. Böylece sunucu üzerinde yaptığım işlemleri, oluşturduğum klasörleri vs. Github'a rahatlıkla gönderebileceğim.


Bunu henüz çözemedim, şimdilik ansible otomasyonunda bu aşamadayım.


6 Aralık 2022 Salı

Ubuntu Sunucularına Kalıcı (Statik) DNS Ayarı Girmek

 /etc/resolv.conf dosyasını nano ile açarak DNS girebiliyorsunuz ancak bu o anki oturumunuz sırasında geçerli oluyor ve sunucuyu kapatıp açtığınızda veya yeniden başlattığınızda DNS ayarlarınız eski haline geri dönüyor. Bunu kalıcı olarak düzeltebilmek için öncelikle Resolv.conf dosyasını unutmanız gerekmekte. Öncelikle bu dosyayla bir işiniz yok. Daha statik bir işlem yaparak bunu düzeltmek mümkün.

sudo nano /etc/netplan/00-installer-config.yaml

Ardından ilgili tabloyu DNS dahil diğer IP bilgilerinizle birlikte sytax'a uygun doldurmanız gerekiyor. Bu tabloda yazım kurallarına dikkat etmelisiniz. Çünkü doğru yazılmadığında IP veya DNS bilgileriniz okunmayacaktır. Aşağıdaki resimde yer aldığı gibi doldurabilirsiniz.

Netplan Yaml

Dosyayı Ctrl+X ve Y tuşları ile birlikte kaydettikten sonra network değişikliklerini uygulamak için aşağıdaki komutu çalıştırabilirsiniz.

sudo netplan apply

Hepsi bu kadar. Geçmiş olsun.

3 Aralık 2022 Cumartesi

Çözümü resolv.conf Dosyasında Bulduk!

 Kurduğum Ubuntu sunucuları internete çıkmıyordu. sudo nano /etc/resolve.conf komutu ile DNS kayıtlarını kontrol ettim ve yeni bir nameserver kaydı ekleyerek karşılığına 8.8.8.8 verdim ve Ctrl+x ve Y ile yani nanoyu kaydederek çıkış yaptım. Sonuç: yeni kurduğum sunucu internete çıkabildi.

28 Kasım 2022 Pazartesi

Cmder ile SSH Bağlantısı Kurmayı Öğrendim - Ayrıca SSH Key Oluşturup Sunuculara Kopyaladım

 Bugün çok verimli bir gündü. Öncelikle Cmder isimli bir uygulamayı keşfettim ve bilgisayarıma indirdim. SSH bağlantısı yapmak ve consol'a erişmek için büyük kolaylık. Birde daha kolay yoldan SSH bağlantısı yapmak için hazır görevler (tasks) ekleyebiliyorsunuz. SSH bağlantısı için bir görev ekledim ve bir tıkla erişim isteği atıp şifreyi girebiliyorum. Ardından sunucuda veya istediğim hostta login olmuş oluyorum. Gerçekten güzel bir teknoloji.



cmd /c "%ConEmuDir%\..\git-for-windows\usr\bin\ssh panel@192.168.1.63 -i E:\LifePlusSystem.pem" -new_console:d:%USERPROFILE% "-new_console:t:dev.lifeplus.tw"

Linux'ta kullandığım komutlar ise aşağıdaki gibi:

SSH Bağlantıları için key oluşturma:
ssh-keygen -t ed25519 -C "Ansible Anahtarı"
: /home/panel/.shh/ansible
ls /home/panel/.ssh/

Oluşturulan anahtar dosyasının diğer sunuculara kopyalanması:
ssh-copy-id -i /home/panel/.ssh/ansible.pub 192.168.1.64

Rocky Linux üzerinde panel kullanıcısı olmadığı için orada öncelikle root dışında hesap oluşturma işlemi
sudo useradd panel
sudo passwd panel

Ansible kurulumuna geçmeden önce ana sunucuda update işlemi:
sudo apt update

27 Kasım 2022 Pazar

Ansible Demo Ortamı İçin Sunucu IP ve Hostname Değişikliği Yaptım

 Kısa bir not düşmek için bugün kullandığım basit komutları ekliyorum:

ip a
hostname
sudo hostnamectl set-hostname worker1
sudo nano /etc/netplan/00-installer-config.yaml
(Ctrl o kaydeder ve Ctrl X ile çıkılır)
sudo netplan apply
reboot now
shutdown now

4 Kasım 2022 Cuma

Scratch mi Yoksa Scoolcode'mu Daha Etkili? | Çocuklarda Kodlama Eğitiminin Önemi ve Logiscool'un Farkını İnceliyoruz

Çocuklara erken yaşlarda kodlama ve dijital okuryazarlık eğitimleri aldırmak ve onların tüketen yerine biraz daha üreten tarafta olmalarını sağlamak günümüz dünyasında en önemli kazanımlardan biri diyebiliriz. STEM eğitimi olarak da adlandırılan, bazı kurumlarda robotik kodlama adı altında verilen veya direkt blok kodlama, görsel programlama da diyebileceğimiz yazılım ve teknoloji tabanlı eğitimlerin ne kadar önemli olduğunu artık çok daha iyi anlıyoruz.

Çocuklar kodlama ve dijital okuryazarlık eğitimlerini erken yaşlarda almadıklarında sadece dijital içerikleri tüketen, oyun oynayan, video izleyen veya sosyal medya platformlarını kullanan bir "kullanıcı" olmaktan dışarıya çıkamıyorlar. Bu aslında onların hayal kurmalarını, fikir üretmelerini, proje geliştirmelerini, yani gelişimlerini kısıtlayan, aynı zamanda diğer derslerinin de başarısını etkileyen çok önemli bir faktör.

Kodlama ile erken yaşlarda tanışan çocuklar neler öğreniyor?

Erken yaşlarda kodlama ile tanışan çocuklar algoritma ile birlikte aslında kodlamanın temel kavramlarını ve terimlerini öğrenmeye başlıyorlar. Sadece algoritmayı bile öğrenmeleri onların problem çözme yeteneklerini geliştiren, olaylara farklı bakış açılarıyla yaklaşmalarını sağlayan, hayal kurmalarını destekleyen en basit kavramlardan biri. Ancak etkisi çok büyük. 

Steve Jobs kısaca bu konuda şöyle diyor: "Bilgisayar programlamayı herkes öğrenmeli. Çünkü bu, size düşünmeyi öğretir."

Çocuklarda düşünmeyi ve hayal kurmayı öğrenirler. İşte bundan daha değerli ne olabilir. Bırakın çocuklarınız hayal kurabilsinler, düşünsünler, kendileri bir fikir bulsun ve çok basit bir oyun bile olsa somut bir proje yapıp başarma duygusunu tatsın. Bu inanılmaz kıymetli bir kazanım. Kodlama eğitimleri elbette algoritma ve yazılımın temellerini kazandırdığı gibi matematik, fizik ve İngilizce gibi diğer derslerin gelişimlerini destekleyici içeriklere sahip olduğu için çocuğun genel olarak okul başarısını olumlu yönde etkiler.

Scratch

Kısaca Scratch nedir? Nasıl kullanılır?

Scratch MIT üniversitesinin geliştirdiği ve ücretsiz olarak kullanıma sunulan blok tabanlı bir programlama dili ve arayüzü. Junior olarak adlandırılan biraz daha küçük yaş gruplarına hitap eden, telefonla kullanılabilen arayüze sahip oldukları gibi birde web sitesi üzerinden veya bilgisayara yüklenebilen bir programla da kod yazma imkanı sunan platform. Ücretsiz olması, dünya tarafında geliştiriciler tarafından desteklenmesi, çizim desteği, diğer platformlarla entegre proje geliştirmeyi desteklemesi artı yönleri olarak sıralanabilir. 

Ancak Scratch dilinin ve platformunun eksi yönleri nelerdir diye soracak olursanız: Yaş gruplarına ve seviyelere göre kod paletlerinin değiştirilememesi ve yazılı kodlama dillerine geçişi kolaylaştıran bir arayüze sahip olmamasını söyleyebiliriz.

Logiscool'un farkı nedir ve scoolcode'u öne çıkaran şeyler nelerdir?


Logiscool

Logiscool 2014 yılında Macaristan'da kurulmuş uluslararası bir kodlama okulu. Web sitelerinden gördüğüme göre 36 ülkeden fazla bölgede ve on binlerce öğrencisi olan hedef kitle olarak çocuklara odaklanmış, kendi geliştirme platformu ve programlama dili olan bir okul. 

Scratch'e göre sıralayabileceğimiz farkları ve öne çıkan özellikleri:

  •  Macaristan'daki merkezleri tarafından geliştirilen bir müfredatlarının olması (tüm dünyadaki Logiscool okullarından gelen geri bildirimlerle desteklenen ve iyileştirilen bir sistem/müfredat)
  • Dünya standartlarında bir eğitim görme fırsatı; Türkiye'deki Logiscool okulunda ders gören öğrenci ile Almanya veya Amerika'daki bir Logiscool öğrencisi aynı sürelerde, aynı eğitim içeriklerine ulaşabiliyor olması
  • Ders saatleri dışında kullanılabilen canlı bir platform (my.logiscool), böylece öğrenciler ders dışında da kendileri serbest zamanlarında proje geliştirebiliyor veya diğer öğrencilerin geliştirip toplulukta paylaştıkları oyunların kodlarını inceleyip, projeleri deneyebiliyor.
  • Farklı yaş grup ve seviyelerine göre değişen kod paletlerinin olması. Böylece ilkokul öğrencisi ile ortaokul veya lise öğrencisi aynı kod paletlerini kullanmıyor. Basitten gelişmişe doğru ilerliyor.
  • Kurs sonlarında verilen sertifikalar
  • Yazılı programlamaya geçişi kolaylaştıran MIX metot olarak adlandırdıkları bir arayüze sahip olmaları. Bu ekran ve kurslarda hem blok kodlama hem de yazılı programlama eğitimi aynı anda tek bir ekranda veriliyor. 
  • Sadece kodlama değil, aynı zamanda dijital okuryazarlığı destekleyici kamplar ve atölye dersleriyle gelişimi destekleyen geniş müfredata sahip olmaları. Dijital illüstrasyon, video prodüksiyonu, Minecraft, Roblox, mobil uygulama geliştirme, Junior hacker gibi farklı alanlardaki içerik.
  • Ücretsiz deneme dersi imkanı; Web sitelerinden başvuru yaparak gerçek bir derse katılabilir ve sistemlerini, bir dersin nasıl işlendiğini kolaylıkla gözlemleyip kararınızı verebilirsiniz.
  • Ve tabii ki kaliteli eğitmen kadrosu. Detaylı bilgi için logiscool.com adresini ziyaret edebilirsiniz.

Erken yaşlarda kodlama eğitimi aldırmanın faydaları elbette burada yazdıklarımızdan çok daha fazlası ve bu yazımda sadece dünya üzerinde en çok kullanıcısı olan iki büyük programlama dilini karşılaştırmaya çalıştım. Scratch ve Scoolcode. Ancak bildiğiniz gibi farklı diller, eğitim setleri veya programlama dilleri dahi bulunmakta. Doğru bir okulda, doğru bir network'te bu eğitime başlamak önemli. Logiscool'u bu anlamda ücretsiz deneme dersi almanız için önerebilirim. Çocuklarınıza hayal kurmaları için fırsat verin ve hayal kurmalarını destekleyin. Bu onların geleceği için önemli. Ve bizler çok kısa bir süre sonra kodlama eğitimi almış çocuklarımızın geliştirdikleri oyunları oynayacağız veya onların yazdıkları programları bilgisayarlarımızda kullanacağız, belki de dünya üzerinde büyük bir problemin çözümüne katkıda bulunacaklar, kurdukları şirketler dünya üzerindeki en değerli şirketler arasına girecek, büyük projelere imza atabilecekler. Ancak bunun için erken yaşlarda kodlama eğitimine başlamak ve çocuklarımızı desteklemek önemli. İzin verin çocuklarınız hayal kurmayı öğrensinler. 

28 Ekim 2022 Cuma

BeamNG Drive Mod Nasıl Yüklenir?

 Mod yüklemenin 2 yöntemi var, birincisi BeamNG Drive'ın kendi web sitesinde yer alan kütüphaneyi kullanarak mod indirmek ve bilgisayarımızda ilgili klasöre yüklemek. Diğeri ise oyun içerisinden kütüphaneyi kullanarak aynı işlemi yapmak.

Bu videoda kütüphane kullanarak bilgisayarımıza nasıl modu indiririz kısaca aktarmak istiyorum. Öncelikle BeamNG Drive'ın web sitesine gidiyoruz ve aradığımız, oyunumuza dahil etmek istediğimiz mod'u araştırıp buluyoruz ve tabii ki bilgisayarımıza bu modu zip dosyası olarak indiriyoruz.

Örneğin 1994 ETK K-Series modunu bilgisayarıma indirmek istiyorum, web sitesinden ilgili modu bulduktan sonra sağ taraftadaki turuncu butonu kullanarak bilgisayarıma mod dosyasını indirebilirim.

BeamNG Drive


Bir sonraki aşamada indirdiğim mod klasörünü zip dosyasından çıkartmadan BeamNG Drive oyununun mod klasörüne taşıyorum. Bu klasörün yolu oyunun kurulu olduğu sürücüdeki şu adreste olmalıdır:  C:\Users\user\AppData\Local\BeamNG.drive\0.26\mods

BeamNG Drive

Ve artık oyunu başlatabilir, oynamak istediğim mod paketini yükledikten sonra (paketten çıkarma işlemi) aracımı seçebilirim. Mod yükleme işlemi burada bitiyor. Unutmamanız gereken: paketi çıkarttıktan sonra yüklediğiniz aracı normal araç galerisinden bulmanız gerektiğidir. Ayrı bir yerden mod araçlarını seçmiyorsunuz yine normal galeriyi kullanıyorsunuz. Keyifli oyunlar :)



BeamNG Drive

BeamNG Drive


12 Haziran 2022 Pazar

Forza Horizon 5 İçin Hız Göstergenizi KMH Olarak Ayarlayın

 MPH olarak gelen standart hız göstergesini KMH olarak değiştirmek için yapmanız gereken çok basit bir işlem var. Forza Horizon ayarlarına girdikten sonra ingilizce şu adımları takip ederek rahatlıkla değişikliği yapabilirsiniz. Hud and Gameplay > Units > Metric

Daha sonrasında değişikliği kaydederek oyuna geri dönebilirsiniz.

17 Nisan 2022 Pazar

Ve TikTok Maceram Başlar

 TikTok nasıl bu kadar popüler oldu ve kullanıcı sayısına ulaştı bir fikrim yok ancak sosyal medya kullanıcısı dediğimiz belirli bir kitle hızlı bir şekilde TikTok'ta yerini almaya başladı. Bende deneme amaçlı açtığım bir TikTok hesabıma yakın zamanda oyun videoları yüklemeye başladım. Gerçekten de burası çok hızlı bir tüketim ve etkileşim yeri. Bir süre TikTok ile içerik paylaşmayı sürdürmeyi planlıyorum ve bakalım neler olacak. Belki de bizi yüksek takipçi sayıları ve beğeni istatistikleri bekliyordur, kim bilir? :)

2 Ocak 2022 Pazar

Ubuntu'da Yeni Kullanıcıları İlk Oturum Açma İşleminde Şifre Değişimine Zorlama

 sudo passwd -e kullanici komutundan sonraki ilk oturum açma işleminde kullanıcı kendisine özel şifre belirlemeye zorlanır.

sudo usermod kullanici -e 2023-01-01 komutu ile kullanıcı hesabının ne zaman devre dışı bırakılacağı belirlenir.

İlk Group Policy Kuralımı Oluşturdum ve Uygulamaya Aldım :)

 Group Policy kullanımına ve detaylarına baktığım şu sıralar ilk kuralımı oluşturdum ve bunu domainimdeki bilgisayarlara uygulayarak sonucunu gözlemledim. Oluşturduğum basit bir kural ile domaindeki bilgisayarların masaüstünde yer alan "Bilgisayarım/My Computer" simgesini disable yani görünmez olarak güncelledim. Böylece kullanıcılar özelleştirme ve kişiselleştirme ekranından bu simgeyi masaüstlerine eklemek isteseler dahi GPO sayesinde bu engellenmiş oluyor.

gpupdate


1 Ocak 2022 Cumartesi

Umask İle Kullanıcı Yetkilerini Sınırlandırmak

Yeni bir kullanıcı oluşturulduğunda diğer kullanıcıların erişimine kapalı olarak gelmesini sağlamak için etc dizini altındaki login.defs dosyası içerisinde bulunan UMASK değeri 077 olarak güncellenir ve dosya kaydedilir.

Bunun için:

sudo nano /etc/login.defs

Ubuntu