busecoban / IBM_CyberStart

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MasterHead

IBM ile Kodluyoruz: CyberStart - 🐍

“Yaratıcı bir fikrin iyi bir ağla buluşması, sıfırdan milyonlara gitmek için en iyi yoldur."

Jonah Peretti

Hafta 6

Genel Kültür

Açık Yazılım, Kapalı Yazılım ve Özgür Yazılım

Açık Yazılım (Open Source)

Açık Yazılım, kaynak kodunun herkese açık ve erişilebilir olduğu yazılım türüdür. Bu, yazılımın geliştirilmesi, değiştirilmesi ve dağıtılması için izin verir. Açık Yazılım, genellikle bir topluluk tarafından geliştirilir ve kaynak kodu herkesin inceleyebilmesi ve katkıda bulunabilmesi için yayınlanır. Açık Yazılım, şeffaflık, işbirliği ve yenilikçilik gibi değerlere dayanır.

Örnekler:
  • Linux işletim sistemi
  • Apache HTTP Server
  • Mozilla Firefox
  • Blender 3D modelleme yazılımı

Kapalı Yazılım (Closed Source)

Kapalı Yazılım, kaynak kodunun geliştirici veya şirket tarafından gizli tutulduğu yazılım türüdür. Kullanıcılar, yazılımı kullanabilirler, ancak kaynak kodunu göremezler veya değiştiremezler. Kapalı Yazılım, genellikle ticari şirketler tarafından geliştirilir ve sadece belirli bir lisans altında kullanıcılar tarafından satın alınır veya lisanslanır.

Örnekler:
  • Microsoft Windows işletim sistemi
  • Adobe Photoshop
  • Microsoft Office paketi

Özgür Yazılım (Free Software)

Özgür Yazılım, kullanıcıların yazılımı özgürce kullanma, inceleme, değiştirme ve dağıtma özgürlüğüne sahip olduğu yazılım türüdür. "Özgür" burada "özgürlük" anlamında kullanılır, maliyetle ilgili değildir. Özgür Yazılım, kullanıcıların kontrol ve esneklik sağlamayı amaçlar. Kaynak kodu genellikle herkese açıktır ve yazılımı kullanan herkes bu özgürlüklere sahiptir.

Örnekler:
  • GNU/Linux işletim sistemi
  • LibreOffice ofis paketi
  • GIMP grafik düzenleyici

Notlar

Özgür Yazılım ve Açık Yazılım bazen karıştırılabilir, ancak aralarında bazı farklar vardır. Açık Yazılım, sadece kaynak kodunun açık olmasını gerektirirken, Özgür Yazılım, kullanıcılara belirli özgürlükleri sunar. Özgür Yazılım, kullanıcıların özgürce yazılımı kullanma, paylaşma ve değiştirme hakkına sahip olduğunu vurgular. Açık Yazılım genellikle Özgür Yazılım prensiplerini destekler, ancak her Açık Yazılım Özgür Yazılım olarak kabul edilmez.

Generative AI

Generative AI

"Yaptığımız her şeyde, çevik bir biçimde çalışmak asli önem taşıyor. Bir sonucun öngörülmesi, prototip oluşturma, yineleme, disiplinler arası ekipler... bunları günümüzde IBM'in çoğu biriminde yapıyoruz, ancak şimdi bunu kurumsal düzeyde ölçeklendiriyoruz."

– Ginni Rometty, IBM CEO, 2012-2020

Screenshot 2024-05-16 at 02 36 32

"Çevik metodolojide yalnızca tek soru vardır: Nasıl daha iyi olabilirim?"

– Phil Abernathy, Çevik liderlik koçu

Deneyebileceğiniz çevik uygulamalar!

Çevik bir biçimde çalışmaya başlamak için ne yapabilirsiniz? Sonraki projenizde deneyebileceğiniz birkaç uygulamayı aşağıda bulabilirsiniz.

  • Günlük ayak üstü toplantılar gerçekleştirin
  • Daha fazlasını yapmak için yavaşlayın
  • Geriye dönük değerlendirmeler gerçekleştirin
  • Shu-Ha-Ri: Çevik bir biçimde çalışmaktan çevik olmaya geçiş

Shu-Ha-Ri: Çevik bir biçimde çalışmaktan çevik olmaya geçiş

"Dövüş sanatlarını öğrenirken Shu-Ha-Ri'yi görürsünüz. Başlangıçta ustayı taklit edersiniz, daha sonra kendi tekniklerinizle denemeler yapar ve en sonunda bir öğretmen olursunuz." – Alistair Cockburn, bilgisayar bilimci ve çevik hareketinin kurucularından

Çevik metodolojileri ve uygulamaları öğrenirken ve uygularken, belirli bir yaklaşımı benimseyebilirsiniz. Örneğin, çevik uygulamaları ilk kez kullanmaya başladığınızda, yönergeleri kelimesi kelimesine takip edebilirsiniz. Uygulamaları birkaç defa gerçekleştirdikten sonra, deneyler yapmak ve ekibiniz için nelerin işe yaradığını bulmak isteyebilirsiniz. Ekibiniz için nelerin işe yaradığını gördükten sonra, tekniklerinizi ve fikirlerinizi diğer ekiplerle paylaşabilirsiniz.

Öğrenmeye ilişkin bu düşünce yapısı, Japonca'da "Shu-Ha-Ri" olarak anılır.

  • Shu - kuralı takip et (beyaz kuşaklı dövüş sanatları öğrencisi)
  • Ha - kuralı yık (sarı kuşaklı dövüş sanatları öğrencisi)
  • Ri - kendi kurallarını belirle (siyah kuşaklı dövüş sanatları öğrencisi)

Bu seviyeler ne anlama geliyor?

  • Shu: Kuralı takip et
    • Yönergeler alır ve yönergeleri kelimesi kelimesine uygularsınız. Oyun oynamazsınız.
  • Ha: Kuralı yık
    • Birkaç alıştırma yaptıktan sonra, deneyler yapabilir ve farklı şeyler deneyebilirsiniz.
  • Ri: Kendi kurallarını belirle
    • Deneylerinizde ustalaştığınızda, kendi yönergelerinizi yazabilir veya insanlara kendi yaklaşımınızdan bahsedebilirsiniz.
Screenshot 2024-05-16 at 02 38 39

Hafta 5

Siber Saldırı Vaka Çalışmaları

Her gün haberlerde gördüğümüz siber saldırılar, hem kamu hem de özel sektördeki kişileri ve kuruluşları etkiliyor. Bu belgede, neyin mümkün olduğunu ve dünyada nelerin yaşandığını anlamak için üç yüksek profilli siber saldırı vaka çalışmasını inceleyeceğiz. Her vaka çalışması, farklı bir tehdit aktörüne odaklanmakta ve uluslararası ortamda sürekli büyüyen güvenlik ihlali kataloğunun bir parçasıdır. Güvenlik toplumunun bir katılımcısı olarak, bu örneklerden ders çıkarmak gelecekteki kararlarınıza yön verecektir.

Stuxnet: Siber Silahların Tanıtımı

Stuxnet, 2010 yılında tespit edildiğinde, güvenlik topluluğu tarafından gözlemlenen en gelişmiş ve hedefi belli kötü amaçlı yazılımlardan biriydi. Stuxnet, belirli bir sektör kontrol sistemini hedeflemek ve temel alanlarını değiştirmek üzere tasarlanmıştı. Genel kanı, bu kötü amaçlı yazılımın, nükleer bomba üretiminin öncüsü olan İran uranyum işleme sektöründe kullanılan santrifüjleri hedeflemek üzere tasarlandığı yönündedir.

Saldırının Öne Çıkan Özellikleri:

  • Stuxnet, daha önce tespit edilmemiş dört güvenlik açığını kullandı.
  • Kötü amaçlı yazılım, virüs bulaşmış USB sürücüleri yoluyla yayıldı.
  • Kötü amaçlı yazılımın yazarları ısrarcıydı ve sürekli güncellemelerle operasyonu aylarca sürdürdüler.

Stuxnet, somut bir askeri ve siyasi hedefe ulaşmak için bir siber silahın devreye alınmasının çok net bir örneğidir ve gelecekteki siber silahlar için uluslararası beklentileri belirlemiştir.

Equifax: Önlenebilir Geniş Ölçekli Veri İhlali

2017'de ABD kredi derecelendirme kurumu Equifax, bilgisayar korsanlarının saldırısına uğradı. Kuruluşun bir veritabanına güvenlik yaması uygulamaması sonucunda, bir grup bilgisayar korsanı Equifax'ın ağına erişim sağlamayı başardı. Ağda, şifreleme veya temel erişim kontrolleri olmadan depolanan bir dizi yönetici kimlik bilgisi bulunmaktaydı. Saldırganlar bu kimlik bilgilerini ele geçirerek sistemlerin çoğunu kontrol edebildiler ve bunu aylar boyunca fark edilmeden yaptılar.

İhlalin Boyutu:

  • 147 milyon adı ve doğum tarihi
  • 145,5 milyon Sosyal Güvenlik numarası
  • 209.000 ödeme kartı numarası ve son kullanma tarihi

Bu vaka çalışması, veri ihlalinin hem etkisi hem de boyutu nedeniyle yankı uyandırdı ve veri ihlali fikrinin ABD'nin dikkatini çekmesini sağladı.

Ulusal Güvenlik Ajansı: Snowden Vakası

2013 yılında Ulusal Güvenlik Ajansı'nın (NSA) alt yüklenicilerinden biri olan Edward Snowden, önemli miktarda gizli bilgiyi açığa çıkardı. İş rolü ve birkaç teknik araç sayesinde bu bilgilere erişebilmişti. Dosyalar kamuya açıklandığında, ABD ve uluslararası müttefikleri üzerindeki etkisi kayda değer seviyedeydi.

Sızdırılan Bilgiler:

  • Teknik kapasite incelemeleri
  • Operasyon kılavuzları
  • Oldukça hassas materyaller

Bu, oldukça bilinen bir kötü niyetli köstebek örneğidir ve genel kanıya göre bu veri ihlali, ABD'nin yaşadığı en yüksek zararı veren veri sızdırma olaylarından biriydi.

SolarWinds: Büyük Ölçekli Tedarik Zincir Saldırısı

SolarWinds, bilişim teknolojisi sistemlerini yönetmek için kullanılan Orion adında bir ürünü içermektedir. 2020'de SolarWinds'ın güvenliğinin ihlal edildiği ve kötü amaçlı yazılımın SolarWinds'ın binlerce müşterisine yayıldığı öğrenildi. Saldırganlar SolarWinds'ın güvenliğini tehlikeye attı ve bu nedenle müşteriler Orion'u güncelleştirdiklerinde kötü amaçlı yazılımı da cihazlarına yüklemiş oldular.

Saldırının Önemi:

  • Tedarik zincirlerindeki güvenilir ilişkilerin saldırganlar tarafından nasıl kullanılabileceğini gösteren bir örnektir.
  • SolarWinds, sonrasında büyük ölçekli tedarik zinciri saldırılarına nadiren maruz kaldı.

Bu örneklerdeki gibi tedarikçi güvenlik açıklarına rağmen yama uygulaması, hâlâ rutin bir adım olarak önerilmektedir.


Aktivite

https://medium.com/@buseccoban/log4shell-2022nin-en-kritik-g%C3%BCvenlik-a%C3%A7%C4%B1%C4%9F%C4%B1-ve-teknik-analizi-f07db755ce7b

Aktivite

Şifrelemeyi öğrenmenin en kolay yolu, onu denemektir! CyberChef adlı araç, Birleşik Krallık Devlet İletişim Merkezi (GCHQ) tarafından, şifreleme gibi veri işleme operasyonlarına yardımcı olmak üzere yazılmış web tabanlı bir araçtır.

Genel Kültür

Kod Okunabilirliği İpuçları

  1. Doğru Sözdizimini Kullanın:
  2. Açıklayıcı İsimler Kullanın:
  3. Yorum Satırları Ekleyin:
  4. Mantıksal Bloklara Bölün:
  5. Temiz ve Düzenli Kod Yazın:
  6. Geri Bildirim Alın:

Fonksiyonel Programlama ve Nesne Tabanlı Programlama

Fonksiyonel programlama (FP) ve nesne tabanlı programlama (OOP), yazılım geliştirmede kullanılan iki farklı yaklaşımdır. Her ikisinin de kendi güçlü yanları ve zayıf yanları vardır.

Fonksiyonel Programlama (FP)

Fonksiyonel programlama (FP), programların seri olarak hesaplanmış fonksiyonlar olarak görüldüğü bir paradigmadır. Bu yaklaşımın bazı özellikleri şunlardır:

  • Yan Etkisiz (Pure) Fonksiyonlar: Fonksiyonlar, girdilerine göre çıktılar üretir ve genellikle dış dünyayla etkileşimde bulunmazlar.

  • İlk-sınıf (First-class) Fonksiyonlar: Fonksiyonlar, başka bir fonksiyonun çıktısı olarak kullanılabilir veya bir başka fonksiyonun girdisi olarak kullanılabilir.

  • Yüksek Seviye Fonksiyonlar: map, reduce, filter gibi yüksek seviye fonksiyonlar genellikle kullanılır.

  • Özyineleme: Döngüler yerine genellikle özyineleme kullanılır.

Fonksiyonel programlamaya örnek olarak C ve Lisp gibi diller verilebilir.

Nesne Tabanlı Programlama (OOP)

Nesne tabanlı programlama (OOP), programları bir dizi birbiriyle etkileşimde bulunan nesneler olarak tasarlar. OOP'nin bazı özellikleri şunlardır:

  • Sınıflar ve Nesneler: Veri ve fonksiyonları bir arada tutan nesneler ve bu nesnelerin şablonları olan sınıflar bulunur.

  • İnheritance: Bir sınıfın özellikleri, başka bir sınıftan kalıtılarak yeniden kullanılabilir.

  • Enkapsülasyon: Nesne, veri ve davranışları (fonksiyonlar) bir araya getirerek veriyi dış dünyadan korur.

  • Polimorfizm: Nesneler, aynı arayüzü farklı şekillerde uygulayabilir.

Nesne tabanlı programlamaya örnek olarak Java, Python ve C++ gibi diller verilebilir.

Her iki programlama paradigması da kendi kullanım senaryolarına sahiptir. Fonksiyonel programlama, durumun önemli olmadığı veya yan etkilerin minimal olduğu durumlar için genellikle daha uygundur. Nesne tabanlı programlama ise genellikle büyük ve karmaşık yazılım sistemlerinde, nesneler arasındaki etkileşimi modellemek için kullanılır. Ancak, modern diller genellikle birkaç paradigmayı birleştirebilen çok-paradigmali yaklaşımları benimser, bu yüzden bir programcının her iki yaklaşımla da rahat olması önemlidir.

Yazılım Alanları Tanıyalım 5: Veri Bilimi

Veri Bilimi

Hafta 4

1. Veri Yapıları

Arrays (Diziler)

  • Tanım: Sabit boyutlu, homojen veri tipi elemanları içeren yapı.
  • Özellikler: Hızlı erişim, sabit boyut.
  • Kullanım Alanları: Sabit boyutlu veri saklama.
  • Big O Notation:
    • Erişim: O(1)
    • Arama: O(n)
    • Ekleme: O(n)
    • Silme: O(n)

Linked Lists (Bağlı Listeler)

  • Tanım: Dinamik boyutlu, düğümlerle bağlantılı elemanlar içeren yapı.
  • Özellikler: Kolay ekleme/çıkarma, ardışık erişim.
  • Kullanım Alanları: Değişken boyutlu veri saklama, öncelik kuyruğu.
  • Big O Notation:
    • Erişim: O(n)
    • Arama: O(n)
    • Ekleme: O(1)
    • Silme: O(1)

Stack (Yığın)

  • Tanım: LIFO (Last In First Out - Son Giren İlk Çıkar) prensibi ile çalışan veri yapısı.
  • Özellikler: Son giren ilk çıkar.
  • Kullanım Alanları: Fonksiyon çağrı yığınları, geri alma mekanizmaları.
  • Big O Notation:
    • Erişim: O(n)
    • Arama: O(n)
    • Ekleme: O(1)
    • Silme: O(1)

Queue (Kuyruk)

  • Tanım: FIFO (First In First Out - İlk Giren İlk Çıkar) prensibi ile çalışan veri yapısı.
  • Özellikler: İlk giren ilk çıkar.
  • Kullanım Alanları: İşletim sistemi iş kuyruğu, veri akışı.
  • Big O Notation:
    • Erişim: O(n)
    • Arama: O(n)
    • Ekleme: O(1)
    • Silme: O(1)

Trees (Ağaçlar)

  • Tanım: Hiyerarşik veri yapısı, düğümler ve kenarlar içerir.
  • Özellikler: Kök düğüm, alt ağaçlar.
  • Kullanım Alanları: Dosya sistemleri, XML verileri.
  • Big O Notation:
    • Erişim: O(log n)
    • Arama: O(log n)
    • Ekleme: O(log n)
    • Silme: O(log n)

Binary Search Tree (BST - İkili Arama Ağacı)

  • Tanım: Her düğümün en fazla iki alt düğümü olan ağaç yapısı.
  • Özellikler: Hızlı arama, ekleme, silme.
  • Kullanım Alanları: Veri tabanı indeksleri, dinamik sıralama.
  • Big O Notation:
    • Erişim: O(log n)
    • Arama: O(log n)
    • Ekleme: O(log n)
    • Silme: O(log n)

Hash Tables (Hash Tablolar)

  • Tanım: Anahtar-değer çiftleri saklayan veri yapısı.
  • Özellikler: Hızlı veri erişimi, eşsiz anahtarlar.
  • Kullanım Alanları: Veri tabanı indeksleri, önbellekleme.
  • Big O Notation:
    • Erişim: O(1)
    • Arama: O(1)
    • Ekleme: O(1)
    • Silme: O(1)

Graphs (Grafikler)

  • Tanım: Düğümler (vertex) ve kenarlardan (edge) oluşan yapı.
  • Özellikler: Yönlü/yönsüz, ağırlıklı/ağırlıksız.
  • Kullanım Alanları: Ağ analizi, yol bulma algoritmaları.
  • Big O Notation:
    • Erişim: O(1)
    • Arama: O(V+E)
    • Ekleme: O(1)
    • Silme: O(1)

2. Algoritmalar

Sorting Algorithms (Sıralama Algoritmaları)

  • Selection Sort (Seçmeli Sıralama): En küçük elemanı seçip başa alır.
    • Örnek: [5, 3, 6, 2, 10] -> [2, 3, 6, 5, 10] -> [2, 3, 5, 6, 10]
    • Big O Notation: O(n^2)
  • Bubble Sort (Kabarcık Sıralama): Yan yana elemanları karşılaştırır ve sıralar.
    • Örnek: [5, 3, 6, 2, 10] -> [3, 5, 2, 6, 10] -> [3, 2, 5, 6, 10] -> [2, 3, 5, 6, 10]
    • Big O Notation: O(n^2)
  • Quick Sort (Hızlı Sıralama): Pivot eleman seçer ve alt listelere böler.
    • Örnek: [5, 3, 6, 2, 10] -> Pivot: 5 -> [3, 2] [5] [6, 10] -> [2, 3] [5] [6, 10]
    • Big O Notation: O(n log n)
  • Merge Sort (Birleştirme Sıralaması): Listeleri bölüp birleştirerek sıralar.
    • Örnek: [5, 3, 6, 2, 10] -> [5, 3, 6] [2, 10] -> [5] [3, 6] [2] [10] -> [3, 5, 6] [2, 10] -> [2, 3, 5, 6, 10]
    • Big O Notation: O(n log n)

Searching Algorithms (Arama Algoritmaları)

  • Linear Search (Doğrusal Arama): Elemanları tek tek kontrol eder.
    • Örnek: [5, 3, 6, 2, 10] -> 6 araması: 5, 3, 6 (bulundu)
    • Big O Notation: O(n)
  • Binary Search (İkili Arama): Sıralı listede ortadan başlayarak arama yapar.
    • Örnek: [2, 3, 5, 6, 10] -> 6 araması: 5, 6 (bulundu)
    • Big O Notation: O(log n)

Graph Algorithms (Graf Algoritmaları)

  • Dijkstra's Algorithm (Dijkstra Algoritması): En kısa yolu bulur.
    • Örnek: Başlangıç: A, Hedef: D -> Yol: A -> B -> D
    • Big O Notation: O(V^2) veya O(E + V log V) (öncelik kuyruğu kullanarak)
  • Kruskal's and Prim's Algorithms (Kruskal ve Prim Algoritmaları): Minimum Örtücü Ağaç (MST) oluşturur.
    • Örnek: Graf: {A-B, B-C, A-C} -> MST: {A-B, B-C}
    • Big O Notation (Kruskal): O(E log V)
    • Big O Notation (Prim): O(V^2) veya O(E + V log V) (öncelik kuyruğu kullanarak)

Divide and Conquer (Böl ve Fethet)

  • Özellikler: Problemi küçük parçalara böler ve çözer.
  • Kullanım Alanları: Hızlı sıralama, birleştirme sıralaması.
  • Örnek: Merge Sort -> [5, 3, 6, 2, 10] -> [5, 3, 6] [2, 10] -> [5] [3, 6] [2] [10] -> [3, 5, 6] [2, 10] -> [2, 3, 5, 6, 10]
  • Big O Notation: O(n log n)

Dynamic Programming (Dinamik Programlama)

  • Özellikler: Alt problemlerin çözümlerini saklar, tekrar kullanır.
  • Kullanım Alanları: Fibonacci, en uzun ortak alt dizi.
  • Örnek: Fibonacci -> F(5) = F(4) + F(3) -> F(4) = F(3) + F(2) -> F(3) = F(2) + F(1)
  • Big O Notation: O(n)

Greedy Algorithms (Açgözlü Algoritmalar)

  • Özellikler: Her adımda en iyi görünen seçimi yapar.
  • Kullanım Alanları: Prim, Kruskal, aktivite seçimi.
  • Örnek: Aktivite Seçimi -> [1, 2], [3, 4], [0, 6], [5, 7] -> Seçim: [1, 2], [3, 4], [5, 7]
  • Big O Notation: O(n log n)

Veri Bilimi

R:

  • İstatistik analizi ve veri bilimi için sıkça kullanılan bir programlama dili ve ücretsiz bir donanım ortamıdır.
  • R içerisinde, ggplot2 gibi veri görselleştirmesi konusunda yardımcı olacak yüzlerce paket bulunmaktadır.
  • RStudio, R'de çalışmanın popüler bir arabirimidir.

Python:

  • Veri bilimi için de kullanılabilen genel amaçlı bir programlama dilidir.
  • pandas gibi kütüphaneler ve kullanıcı dostu arayüzlerle birleştirildiğinde, yeni içgörüler ve veri görselleştirmeleri oluşturmanıza yardımcı olabilir.

MATLAB:

  • Sayısal hesaplamalara odaklanmış bir programdır.
  • Genellikle yüksek öğrenimde kullanılır.

Apache Spark:

  • Aşırı derecede büyük veri setleri ve makine öğrenimi için özellikle kullanışlı olan, tescilli bir genel amaçlı çerçevedir.

Veri görselleştirmesi için doğru aracı seçin

  • Tableau, kod yazmadan interaktif görselleştirmeler oluşturmanıza yardımcı olabilir. Çoğu çevrimiçi kuruluş tarafından kullanılması, bu aracı keşfetmeniz için harika bir araç haline getirir.

  • En popüler R çalışma alanlarından birisi olan ggplot2, daha az güçlü diğer programlar için daha karmaşık olan verilerin görselleştirilmesine yardımcı olabilir.

  • Matplotlib, Python programlama diliyle çalışan popüler bir görselleştirme aracıdır. Programcıların birçok farklı formatta çizelge, grafik ve harita oluşturmalarına yardımcı olur.

Makine öğrenimine güç katmak için verileri kullanın

Screenshot 2024-05-16 at 01 37 36
  • Makine öğrenimi, verileri kullanarak bilgisayar sistemlerinin öğrenmesini sağlar.

  • Bu sistemler, adımlara tabi programlar veya belirli kurallar olmadan öğrenebilir.

  • Günümüzde, makine öğrenimi sayesinde bilgisayarlar çevrelerini algılayarak hedeflerine yönelik kararlar alabilir hale geldi.

  • Örneğin, bankaların sistemleri artık el yazısını okuyarak çekleri işleyebilir hale geldi.

  • Ayrıca, kanser tedavisinde de makine öğrenimi kullanılarak hastalara daha iyi ve kişiselleştirilmiş tedavi seçenekleri sunulabiliyor.

  • Doktorlar, binlerce araştırma raporunu okuyarak hastalar için en iyi tedavi seçeneklerini belirlemek yerine, makine öğrenimi modellerinin sunduğu verilere dayanarak daha hızlı ve etkili kararlar alabiliyorlar.

Blockchain

IBM CEO'su Ginni Rometty (2012-2020) sıklıkla şunu söylüyor: "İnternet'in bilgi için yaptığını blockchain işlemler için yapacak".

  • Bu ne anlama geliyor? Blockchain'in işlem verilerinden çok daha fazlası olduğunu açıklar. Teknolojinin olgunluk seviyesine ulaşmasıyla birlikte blockchain, muhtemelen internet'in erken dönemleriyle paralellik gösterecek, ancak çok daha hızlı bir şekilde ilerleyip diğer sistemlerle, hizmetlerle ve analitikle bağlantı kurabilecektir. İnternet; analitik ve veriler, yapay zeka ve kognitif teknolojiler ve nesnelerin interneti (IoT) ile bağlantılı olacak şekilde nasıl büyüme kaydettiyse blockchain de benzer bir rota izleyecek.

Peki Nasıl Çalışır?

  • Blok Nedir?

    • Blok, kronolojik sırada tutulan ve bir blockchain içinde kodlanan işlemler grubudur.
    • Her bir blok, bir önceki ve bir sonraki bloğa bağlıdır.
    • Yeni işlemlerle birlikte yeni bloklar oluşturulur ve bu bloklar birleşerek değiştirilemeyen bir zincir olan blockchain'i oluşturur.
  • Blockchain Oluşturma Süreci:

    • Her işlem bir bloğa yerleştirilir.
    • Her blok, önceki ve sonraki bloğa bağlıdır.
    • İşlemler bir araya gelerek blokları oluşturur ve değiştirilemeyen bir zincir olan blockchain'i oluşturur.
  • Dijital Varlıkların Takibi:

    • Blockchain, dağıtık defter teknolojisini kullanarak dijital varlıkların A noktasından B noktasına hareketini izler.
    • Bu, blockchain defterlerinin, yazılımını çalıştıran tüm bilgisayarlara dağıtılmış olduğu anlamına gelir.
  • Blockchain ve Veritabanı Arasındaki Fark:

    • Blockchain'de kayıtlar tek bir merkezi noktada tutulmaz; eşzamanlı olarak bilgisayarlarda paylaşılır.
    • Her katılımcı tüm kayıtların ve değişikliklerin güvenli bir kopyasına sahip olduğundan verilerin denetim geçmişini herkes görüntüleyebilir.
    • Blockchain teknolojisi, merkezi bir üçüncü kişiye gerek olmadan işlemlerin denetlenmesini ve doğruluğunun onaylanmasını sağlar.
  • Blockchain Türleri:

    • Genel Blockchain'ler:
      • Güveni ve gücü ağdaki tüm katılımcılara dağıtır, yani herkes bunun bir parçası olabilir.
      • Örnekler: Bitcoin, Ethereum
    • Özel Blockchain'ler:
      • “Güvenilir” bir ortamda çalışır ve daha güvenli oldukları düşünülür.
      • Örnek: Hyperledger Fabric
  • Bitcoin ve Blockchain:

    • Bitcoin, gerçekleşen tüm Bitcoin işlemlerini takip etmek için blockchain teknolojisini kullanır.
  • Önemli Noktalar:

    • Blockchain, internet üzerinden ürün ve hizmet karşılığı para transferinde iki taraf arasındaki güven, şeffaflık ve hesap verebilirlik sorunlarını çözmek için tasarlanmıştır.
    • Blockchain, dijital dünyada işlemlerin yetkilendirilmesi ve doğrulanması için yeni yöntemler sunar.
  • Dijital bir defterdir! Blockchain'ler işlemler hakkındaki bilgileri depolamak ve korumak için kullanılır.

  • Dağıtıktır! Blockchain, katılımcılar arasında paylaşılan bir kayıt sistemi olarak çalışır.

  • İzinlere dayanır! Ağdaki her üyenin erişim hakları vardır ve gizli bilgiler 'bilmesi gerekenler' temelinde paylaşılır.

  • Güvenlidir! Tüm ağ üyelerinden mutabakat gereklidir ve tüm geçerli işlemler kalıcı olarak kaydedilir. Hiç kimse bir işlemi silemez.

Satoshi Nakamoto, kripto para birimi Bitcoin'in yaratıcısıdır, ancak gerçek kimliği hala bilinmemektedir. 2008 yılında yayınladığı Bitcoin beyaz kağıdıyla (Bitcoin: A Peer-to-Peer Electronic Cash System) kripto para birimi dünyasını başlattı. Ancak, Satoshi Nakamoto'nun kimliği hala bir gizem olarak kalmaktadır. Satoshi'nin gerçek kimliği hakkında birçok spekülasyon var, ancak kimliği hakkında kesin bir bilgi bulunmamaktadır.

  1. Ulaşım:

    • Bir taşımacılık şirketi, sevkiyatı yapılan malların çıkış birimine kadar hareketini anında izlemek için blockchain tabanlı bir tedarik zinciri yaratabilir.
    • Örnek: Digitizing global trade with Maersk and IBM
  2. Kamu:

    • Devlet yönetimleri, işlem ve varlıklar yığınını yönetmek ve dijitalleştirmek için blockchain'i kullanabilirler. Örneğin, her yıl başa çıkmak zorunda oldukları tahsilatlar, tediyeler, transferler, ücretler, para cezaları, onaylar gibi işlemleri blockchain ile yönetebilirler.
    • Örnek: How the UAE is empowering its citizens through blockchain
  3. Gıda zinciri:

    • Bir gıda şirketi, yiyecekleri kaynağına kadar hızla izlemek için blockchain'i kullanabilir ve gıda kaynaklı hastalık tehdidini azaltabilir.
    • Örnek: Blockchain in food safety
  4. Bankacılık:

  5. Sağlık bilimi:

Blockchain: Yeni Başlayanlar İçin Sözlük

Varlık

  • Değer üretmek üzere sahip olunabilen veya kontrol edilebilen fiziksel veya dijital herhangi bir şey.
  • Ev, müzik, patentler veya nakit buna örnek verilebilir.

Bitcoin

  • Para birimi (bitcoin) oluşturma sürecini düzenlemek ve para transferini doğrulamak için şifreleme tekniklerini kullanan bir tür dijital para birimi (tüm bunlar bir merkez bankasından bağımsız olarak yürütülür).

Blockchain

  • Eşler arası bir ağda gerçekleşen zincir işlemler ve alışverişlerdeki veri bloklarını kaydeden bir dağıtık defter teknolojisi uygulaması.

İş ağı

  • Bir ekonomi işlemindeki katılımcı grubu. Üyeler, her bir üyenin sahip olduğu ve içeriğinin diğerleriyle her zaman eşit olduğu bir defter aracılığıyla değerli öğeleri değiş tokuş eder ve doğrularlar. Bir iş ağında müşteriler, rakipler, tedarikçiler, bankalar, düzenleyiciler, devletler ve diğerleri bulunabilir.

Mutabakat

  • Bir blockchain'deki tüm katılımcıların ağın doğruladığı bir işlemi kabul etme süreci. Mutabakat, paylaşılan defterlerin bire bir aynı kopyalar olmasını sağlar ve müdahalenin aynı anda birçok yerde gerçekleşmesi gerekeceğinden dolandırıcılık işlemleri riskini azaltır.

Kripto para

  • Kripto para elektronik bir para birimidir; kağıt veya madeni para biçiminde bulunmaz. Güvenlik amacıyla şifreleme kullanılarak satıcı ve alıcı arasında dijital olarak değiş tokuş edilir; bankaların gözetiminde değildir veya devletler tarafından desteklenmez.

Kriptografi

  • Bilgileri, şifreli metin adı verilen okunamayan bir biçime dönüştürerek (şifreleyerek) koruma yöntemi. Yalnızca bir gizli anahtara sahip olan kullanıcılar mesajı düz metin olarak deşifre edebilir (veya şifresini çözebilir).

Dağıtık defter teknolojisi

  • Bir iş ağındaki katılımcılar arasında paylaşılan kayıt sistemi.

Şifreleme

  • Özellikle anlamını gizlemek amacıyla (bilgileri) bir formdan diğer bir forma dönüştürme işlemi. Bkz. kriptografi.

Hyperledger

  • İşlemlerin dünya çapında gerçekleştirilme biçimini dönüştürebilen dağıtık defterler için sektörler genelinde bir açık standardın önemli özelliklerini belirleyerek ve bunları ele alarak blockchain teknolojisini geliştirmeyi amaçlayan bir Linux Foundation açık kaynak projesi. Hyperledger; IBM Blockchain ürünleri, hizmetleri ve çözümleri için temel kod işlevi görür.

Defter

  • Bir işle ilgili işlemleri kaydetmek için kullanılan sistem.

Akıllı sözleşmeler

  • Bunlar defterle etkileşimleri yöneten bilgisayar protokolleridir ve ağ katılımcılarının bazı işlem özelliklerini otomatik yürütmelerine olanak sağlayabilir.

İşlem

  • Bir kullanıcı tarafından defterde bir fonksiyonun çalıştırılması için blockchain'e iletilen istek.

Nesnelerin İnterneti nedir?

https://www.zdnet.com/article/iot-devices-will-outnumber-the-worlds-population-this-year-for-the-first-time/

Screenshot 2024-05-16 at 01 51 22

Nesnelerin İnterneti (IoT) Kullanım Senaryoları:

Parça kullanım ömrü, izleme ve bakım sürecinde IoT

  • Tek tek nesneler veya parçalar ürünün durumu hakkında kritik bilgiler sağlar.
  • Bağlantılı sensörler ve kapsamlı analitik, parçanın menşeini izlemeye ve bakımını yapmaya olanak tanır.

Tedarik zincirinde IoT

  • IoT teknolojisi, tedarik zincirindeki bileşenlerin konumunu izleyip arz ve talebi paylaşılan bir blockchain ortamında yayınlayabilir.
  • Verilere anında erişilebilir ve analiz edilebilir, böylece üretim süreci optimize edilebilir.

Mevzuat uyumluluğu için IoT

  • Düzenleyici kurumlar ve üreticiler, IoT teknolojisi sayesinde ürün kullanım ve bakım bilgilerini paylaşabilir, uyumluluk belgelerini anında erişilebilir hale getirebilir.

Bina yönetimi

  • Bağlı sensörler, bina içindeki sistemlerin işleyişi hakkında veri oluşturur.
  • Bu veriler, binanın nasıl kullanıldığıyla ilgili bir log oluşturur ve bina sahipleri, kiracılar ve bina yönetim ekipleriyle paylaşılabilir.

Enerji tüketimi

  • IoT, karbon kredilerinin ve enerji tüketiminin doğru bir şekilde takibini sağlar.
  • Karbon emisyon kredisi alışverişinde karbon ayak izini dengelemek isteyenler için önemli bir araçtır.

Sevkiyat lojistiği sektörü

  • IoT destekli sensörler, kargonun konumunu ve taşıma üniteleri içindeki sıcaklığı tespit edip paylaşabilir.
  • Yükleme belgeleri ve gümrük formları gibi sevkiyat dokümanları elektronik olarak kolayca paylaşılabilir.

"İyi ifade edilmiş bir sorunun yarısı çözülmüş sayılır."

– Charles Kettering, 1920 - 1947 arasında General Motors'ta Araştırma lideri, mühendis ve mucit

Screenshot 2024-05-16 at 02 20 42

"Karşılaştığımız zorlukların kusursuz çözümleri, kusursuz olmayan bir dünyada aranmamalıdır."

– Sir Winston Churchill, 2. Dünya Savaşı yıllarında Birleşik Krallık Başbakanı

Genel Kültür

Akış Diyagramları

Akış Diyagramları

Akış diyagramları, bir sistemin işleyişini veya bir algoritmanın adımlarını görsel olarak temsil eden diyagramlardır. Bu diyagramlar, yazılım geliştirme sürecinde bir programın işleyişini anlamak ve analiz etmek için kullanılır.

Temel Semboller ve Açıklamaları

  1. Başlangıç/Bitiş Sembolü:

    • Programın başlangıcını veya sonunu gösterir.
    • Tipik olarak bir oval ile temsil edilir.
  2. Giriş/Çıkış Sembolü:

    • Kullanıcıdan bir veri alınması veya bir verinin ekrana yazdırılması gibi giriş/çıkış işlemlerini gösterir.
    • Genellikle paralel kenarlarla (elmas şeklinde değil) bir dikdörtgen ile temsil edilir.
  3. Atama - İşlem Sembolü:

    • Bir eylem veya işlemi temsil eder.
    • Tipik olarak bir dikdörtgen ile temsil edilir.
  4. Denetim (Karar) Sembolü:

    • Bir kararın veya şartın kontrol edildiği yeri gösterir.
    • Genellikle bir şartın doğru mu yoksa yanlış mı olduğuna karar vermek için kullanılır.
    • Elmas şeklinde bir sembol ile temsil edilir.
  5. Çıkış Sembolü:

    • Ekrana bir çıktı (output) bastırmak veya bir log kaydetmek için kullanılır.
    • Eğimli kenarlı bir dikdörtgen şeklinde temsil edilir.
  6. Döngü Sembolü:

    • Belirli bir şart sağlanana kadar tekrar tekrar yapılan işlemleri temsil eder.
    • Altıgen olarak temsil edilir.
  7. Akış Yönü:

    • Akışın hangi yönü takip edeceğini gösteren oklar.
    • Akışın yönüne bağlı olarak farklı yönlerde olabilir.
  8. Bağlantı Sembolü:

    • Diyagramın farklı bir kısmına geçişi gösterir.
    • Genellikle büyük bir diyagramı daha küçük parçalara bölmek için kullanılır.
    • Küçük bir daire veya dairesel bir sembol ile temsil edilir.

Örnek Diller

  • Derleme Dilleri: C, C++, Java, C#, Go gibi diller.

  • Yorumlama Dilleri: Python, JavaScript, Ruby, PHP, Perl gibi diller.

Tercih Edilen Yöntem

Her dilin kendine özgü avantajları ve dezavantajları vardır ve tercih edilen yöntem, projenin gereksinimlerine ve hedeflerine bağlı olarak değişir.

Kaynak Kod Nedir?

Kaynak kod, bir programın yazılım dilindeki orijinal kodudur. Yazılım geliştiricileri tarafından oluşturulur ve programın makine koduna dönüştürülmesi için kullanılır.

Derleme ve Yorumlama

Derleme: Kaynak kodunun doğrudan derleyici tarafından makine koduna dönüştürülmesiyle gerçekleştirilir. Derleme sonucunda oluşan makine kodu doğrudan bilgisayar tarafından çalıştırılabilir.

Yorumlama: Kaynak kodunun yorumlayıcı tarafından satır satır okunarak çalıştırılmasıdır. Yorumlama sonucunda elde edilen çıktı, kullanıcının görebileceği bir sonuçtur.

Farklar

  • Derleme işlemi, kaynak kodunun derleyici tarafından doğrudan makine koduna dönüştürülmesiyle gerçekleştirilirken, yorumlama işlemi kaynak kodunun yorumlayıcı tarafından satır satır okunarak çalıştırılmasıyla gerçekleştirilir.

  • Derlenen program, doğrudan makine kodu olarak çalıştırılabilirken, yorumlanan program ise yorumlayıcı tarafından yorumlanarak çalıştırılır.

  • Derleme işlemi daha uzun sürebilirken, yorumlama işlemi daha hızlı gerçekleştirilebilir.

  • Derlenen programlar farklı platformlarda çalıştırılamazken, yorumlanan programlar farklı platformlarda yorumlayıcı mevcut olduğu sürece çalıştırılabilir.

Örnek Diller
  • Derleme Dilleri: C, C++, Java, C#, Go gibi diller.

  • Yorumlama Dilleri: Python, JavaScript, Ruby, PHP, Perl gibi diller.

Tercih Edilen Yöntem

Her dilin kendine özgü avantajları ve dezavantajları vardır ve tercih edilen yöntem, projenin gereksinimlerine ve hedeflerine bağlı olarak değişir.

Temel Bilgisayar Ağları

Temel İnternet Kavramları

Bilgisayar Ağlarına Giriş

Nedir?

Bilgisayar ağları, birbiriyle iletişim kurabilen ve kaynakları paylaşabilen birden fazla bilgisayarın bir araya gelmesinden oluşur. Bu ağlar, kablolu veya kablosuz bağlantılar aracılığıyla kurulabilir.

Faydaları

  • Kaynak paylaşımı: Yazıcılar, tarayıcılar ve sabit diskler gibi kaynaklar ağdaki tüm bilgisayarlar tarafından kullanılabilir.
  • İletişim: E-posta, anlık mesajlaşma ve video konferans gibi araçlarla ağdaki kullanıcılar birbirleriyle kolayca iletişim kurabilir.
  • Dosya paylaşımı: Dosyalar ağdaki bilgisayarlar arasında kolayca paylaşılabilir.
  • İnternet erişimi: Ağdaki bilgisayarlar internete erişebilir.

Farklı Türde Bilgisayar Ağları

  • PAN (Kişisel Alan Ağı): 10 metreye kadar olan bir alanda birbiriyle iletişim kuran cihazları kapsar. Örnek: Bluetooth bağlantısı.
  • LAN (Yerel Alan Ağı): Bir binada veya sınırlı bir alanda birbiriyle iletişim kuran cihazları kapsar. Örnek: Bir evdeki veya ofisteki bilgisayar ağı.
  • WAN (Geniş Alan Ağı): Şehirler veya ülkeler arası gibi geniş bir alanda birbiriyle iletişim kuran cihazları kapsar. Örnek: İnternet.
  • MAN (Metropol Alan Ağı): Bir şehir gibi bir bölgede birbiriyle iletişim kuran cihazları kapsar. Örnek: Bir şehrin kamu kurumlarının ağı.

Ağ Donanımı

  • Ağ kabloları ve konektörleri: Ağ kabloları, bilgisayarları ve diğer ağ cihazlarını birbirine bağlamak için kullanılır. En yaygın ağ kablosu türleri RJ-45 konektörlü Ethernet kablolarıdır.
  • Ağ kartları: Ağ kartları, bilgisayarların ağa bağlanmasını sağlayan donanım cihazlardır. Her bilgisayarın bir ağ kartı olması gerekir.
  • Hub, switch ve yönlendiriciler: Hub'lar, birden fazla ağ cihazını birbirine bağlamak için kullanılan donanım cihazlardır. Switch'ler, hub'lara benzer şekilde birden fazla ağ cihazını birbirine bağlar, ancak daha fazla özellik sunarlar. Yönlendiriciler, birden fazla ağ arasında veri trafiğini yönlendirmek için kullanılır.
  • Modemler: Modemler, internet servis sağlayıcısının sinyalini bilgisayarların kullanabileceği bir sinyale dönüştüren donanım cihazlardır.

Ağ Yazılımı

  • IP adresleri ve alt ağ maskeleri: IP adresleri, ağdaki her bir cihazın benzersiz bir adresini belirler. Alt ağ maskeleri, IP adresinin hangi kısmının ağ kimliğini ve hangi kısmının cihaz kimliğini belirlediğini gösterir.
  • Protokol katmanları (TCP/IP modeli): TCP/IP modeli, ağ iletişiminin nasıl gerçekleştiğini tanımlayan bir dizi katmandan oluşur. Her katman farklı bir işlevden sorumludur.
  • DHCP ve DNS: DHCP, ağdaki cihazlara otomatik olarak IP adresi atayan bir hizmettir. DNS, web sitesi adlarını IP adreslerine dönüştüren bir hizmettir.
  • NAT: NAT, birden fazla ağ cihazının tek bir IP adresi ile internete erişmesine izin veren bir teknolojidir.

Ağ Güvenliği

  • Temel ağ güvenliği tehditleri: Virüsler, casus yazılımlar ve kimlik avı gibi çeşitli ağ güvenliği tehditleri vardır.
  • Güvenlik duvarları ve antivirüs yazılımı: Güvenlik duvarları, izinsiz girişleri engellemek için ağdaki trafiği izleyen yazılım programlarıdır. Antivirüs yazılımı, bilgisayarları virüslere karşı korumak için kullanılır.
  • Şifreleme: Şifreleme, verileri yetkisiz erişime karşı korumak için kullanılır.

Yazılım Alanları Tanıyalım 4: Oyun Geliştirme

Video

Hafta 3

Bulut Bilişim

Screenshot 2024-05-11 at 03 57 27

Genel Bulut (Public Cloud):

  • Genel bulut, hizmet sağlayıcıları tarafından sunulan ve geniş bir kullanıcı kitlesi tarafından paylaşılan bir bilgi işlem kaynağıdır. Bu kaynaklar, internet üzerinden erişilebilir ve genellikle pay-per-use (kullanıma göre öde) modeliyle sunulur. Genel bulut hizmetleri, kullanıcıların donanım veya yazılım satın almalarına gerek kalmadan altyapıyı, platformu veya yazılımı kullanmalarını sağlar. Örnek genel bulut sağlayıcıları arasında Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP) gibi büyük şirketler bulunur.

    Genel bulutun temel özellikleri şunlardır:

  • Pay-Per-Use (Kullanıma Göre Ödeme): Kullanıcılar sadece kullandıkları kaynaklar için ödeme yaparlar.

  • Ölçeklenebilirlik: Kullanıcılar ihtiyaçlarına göre kaynakları kolayca artırabilir veya azaltabilirler.

  • Paylaşılan Kaynaklar: Fiziksel kaynaklar birden fazla müşteri arasında paylaşılır.

  • Geniş Erişim: İnternet aracılığıyla dünyanın her yerinden erişilebilir.

Özel Bulut (Private Cloud):

  • Özel bulut, tek bir kuruluşa veya kuruluşa özel bir topluluğa ait olan ve bu kuruluşun kendi veri merkezinde barındırdığı bir bulut bilişim ortamıdır. Özel bulut, şirket içi uygulamaların ve verilerin depolanması ve işlenmesi için kullanılır. Bu tür bir bulut, genellikle işletmelerin güvenlik ve uyumluluk gereksinimlerini karşılamak için tercih edilir. Özel bulut, işletmelerin donanımı ve yazılımı barındırmak ve yönetmek için kendi kaynaklarını kullanmalarını sağlar.

    Özel bulutun temel özellikleri şunlardır:

  • Özel Kaynaklar: Kaynaklar yalnızca belirli bir kuruluş veya topluluk için ayrılmıştır.

  • Güvenlik ve Uyumluluk: Veriler ve uygulamalar, şirket içi güvenlik politikalarına ve düzenlemelere uygun olarak korunur.

  • Daha Fazla Kontrol: Kuruluşlar, altyapıyı ve kaynakları kendi gereksinimlerine göre özelleştirebilirler.

  • Düşük Paylaşım Oranı: Kaynaklar yalnızca belirli bir kuruluş veya topluluk tarafından kullanılır.

Hibrit Bulut (Hybrid Cloud):

  • Hibrit bulut, hem genel bulut hem de özel bulutun bir arada kullanıldığı bir bulut bilişim modelidir. Bu modelde, işletmeler belirli veri ve uygulamalarını özel bulutta saklarken, diğerlerini genel bulutta saklarlar. Hibrit bulut, işletmelere esneklik, güvenlik ve maliyet verimliliği sağlar.

    Hibrit bulutun temel özellikleri şunlardır:

  • Esneklik: İşletmeler, ihtiyaçlarına göre özel ve genel bulutları bir arada kullanarak esneklik sağlayabilirler.

  • Maliyet Etkinliği: Daha hassas veriler özel bulutta saklanırken, daha az hassas olanlar genel bulutta saklanarak maliyetler optimize edilir.

  • Yedekleme ve Kurtarma: İşletmeler, özel bulutta hassas verilerini yedekleyebilir ve genel bulutta bu verilere erişim sağlayabilirler.

  • Güvenlik ve Uyumluluk: Özel bulut, işletmelere daha fazla kontrol ve güvenlik sağlar, aynı zamanda belirli düzenlemelere uyum sağlamalarına yardımcı olabilir.

  • Performans: Duyarlı uygulamalar özel bulutta barındırıldığı için daha iyi performans gösterebilir.

Screenshot 2024-05-11 at 04 01 04

## hizmet olarak sunulan yazılım (SaaS)

  • SaaS ile hem yazılımlar hem de veriler çevrimiçi ortamda barındırılır. Kullanıcılar, neredeyse her tür işletim sistemi üzerindeki neredeyse her tür aygıtı kullanarak bir tarayıcıda oturum açabilir, ihtiyaç duydukları şeyleri girebilir ve anında sonuç alabilirler. Kuruluşlarının SaaS'yi kullanmak için özel yazılımlara ihtiyacı olmadığından, uygulama satın almaları gerekmez. Bunun yerine, hizmete yıllık ya da kullanıcı başına abonelik ücreti öderler.

  • SaaS'yi bir başkasının mutfağı olarak düşünebilirsiniz. Çevrimiçi olursunuz ve siparişinizi verirsiniz. Size tarifi verirler, yemeği pişirirler ve size sunarlar.

  • SaaS ifadesini duyduğunuzda, e-posta veya çevrimiçi alışveriş gibi kullanım biçimlerini düşünün.

hizmet olarak sunulan platform (PaaS)

  • Satıcı firma, PaaS ile yalnızca platformu sağlar; yani, altyapıyı, işletim sistemlerini, depolamayı ve kodun büyük bir kısmını sağlar. Uygulamanın kaynaklarını ve verileri kullanıcının kuruluşu tarafından yönetilir. (Altyapıya ilişkin daha fazla bilgi için sonraki bölüme bakın.)

  • PaaS'yi bir başkasının mutfağı olarak düşünebilirsiniz. Ancak malzemeleri ve tarifi siz sağlarsınız ve pişirmeyi de siz yaparsınız.

  • PaaS'yi duyduğunuzda, konteynerleri, veritabanlarını, çalıştırma zamanını ve entegrasyonu düşünün.

hizmet olarak sunulan altyapı (IaaS)

  • Şirketler, kendi uygulamalarını sıfırdan oluşturmak veya BT maliyetlerini düşürmek için mevcut uygulamaları bir veri merkezinden kuruluşa taşımak istediklerinde IaaS'yi tercih ederler. Satıcı firma, IaaS ile donanım, yazılımlar, sunucular ve depolama gibi altyapıyı ve mimariyi sağlarken aynı zamanda yedekleme, güvenlik ve bakım gibi pahalı destek sistemlerini yönetir. Bu, kuruluşun bilişim mimarisinin web üzerinde kalmasını sağlar, böylece farklı lokasyonlardaki ekipler birlikte çalışabilirler ve aynı zamanda uygulama geliştirme de şirketin kendi çevrimiçi yapısı içinde kalır.

  • IaaS'yi kendi mutfağınız olarak düşünebilirsiniz. Burada tarifi kendiniz sağlar ve pişirmeyi de kendiniz yaparsınız. Ancak, beyaz eşyanızın bakımı ve aletlerinizin yönetimi başka biri tarafından sağlanır.

  • IaaS'yi duyduğunuzda, bilişim, depolama ve ağ kaynaklarını düşünün.

Screenshot 2024-05-11 at 04 02 22

https://bundles.yourlearning.ibm.com/skills/learn/assets/JYNVQZYDVRRR3423/Cloud%20Computing%20Terminology_tr-TR.pdf

Bulut bilişim becerilerinizi geliştirmek için başka neler yapabilirsiniz?

  • IBM blog yazarları, bulut bilişime ilişkin daha derinlemesine bir bakış açısı için harika bir kaynaktır. Bulut bilişimi dünyanın her yanında iş başında görmek için zaman zaman yeniden ziyaret edin.

  • Bulut bilişim hakkında daha fazla bilgi edinmek ve iş başındaki IBM Cloud hizmetlerine ilişkin örnekler için Thoughts on Cloud sitesini inceleyin.

  • Thoughts on Cloud https://www.ibm.com/blog/

IBM Thoughts on Cloud sayfasından bu makalelerle bulut bilişim teknolojisini daha derinlemesine inceleyin ve bu alandaki potansiyel kariyerler hakkında bilgi edinin:

Zayıf Yapay Zeka

  • Çoğu şirket, işleri daha hızlı ve daha düşük maliyetle otomatik hale getirmek için zayıf yapay zekayı kullanır.
  • Zayıf yapay zeka, belirlenmiş işlerde insanlardan daha iyi performans gösterir.
  • Örnekler:
    • Müşteri hizmetleri sorularını yanıtlayan sohbet robotları
    • Facebook'taki yüz tanıma özelliği
    • Amazon'daki satın alma önerileri
    • Ses metnini dönüştürebilen uygulamalar (Alexa, Google Assistant, Siri)

Arttırılmış Zeka

  • İnsan zekasına yönelik tamamlayıcı bir rol oynar, insanların daha iyi karar almalarına yardımcı olur.
  • İnsanların yerini almaz, uzmanlıklarını geliştirir ve verimliliklerini artırır.
  • Örnek: IBM Watson for Oncology, sağlık uzmanlarının kanser tedavisi üzerine karar almalarına yardımcı olur. Tedaviyi seçmez, sadece önerir.

Genel Yapay Zeka

  • Henüz icat edilmedi, ancak bir hedef olarak belirtiliyor.
  • Bir makinenin birçok farklı konuda karar alabileceği bir tür "tam beyin emülasyonu" olacak.
  • Pratik bir teknoloji değil, uzun vadeli bir hedef.
  • Ulaşmak için ek araştırma ve daha güçlü bilgisayarlar gerekecek.

Akıllı Makineleri Oluşturmanın Yolları

Yapay Zeka

  • Yapay zeka, genellikle insan zekasıyla ilişkilendirilen yetenekleri kullanan makineleri tanımlar.
  • Günümüzdeki yapay zeka çalışmaları; öğrenme, mantık yürütme, sorun çözme, algılama ve insan dilini anlamaya odaklanır.
  • Yapay zeka, insanların daha zeki olmalarına, iletişim kurmalarına, toplum için sorunları çözmelerine ve çalışma şekillerini değiştirmelerine yardımcı olabilir.

Makine Öğrenimi

  • Makine öğrenimi (ML), verilerden öğrenmek için algoritmaları kullanır.
  • Veri girişiyle, istatistik analizi yaparak bir çıktı elde eder.
  • Veri miktarı arttıkça, doğruluk seviyesi de artar.
  • Gözetim altında öğrenim, gözetimsiz öğrenim ve pekiştirme öğrenimi olmak üzere üç türü vardır.
  • Dinamiktir ve daha fazla veriye maruz bırakıldıkça kendini düzeltebilir.

Derin Öğrenme

  • Derin öğrenme, problem çözerken istatistik modellerine odaklanan bir makine öğrenimi alt kategorisidir.
  • Karmaşık problemleri çözmek için insan beyninden ilham alan yapay sinir ağları kullanır.
  • Büyük veri ve devasa bilişim gücü gerektirir.
  • Görseller, metinler veya seslerden yüksek doğrulukla sınıflandırma yapabilir.
  • Örnek: Sürücüsüz araçların dur işaretlerini tanıması veya yayaları trafik ışıklarından ayırması gibi.

Yapay Zeka için Oyun Uygulamaları

  • En ünlü yapay zeka uygulamalarından bazıları, oyun dünyasından çıkmıştır.
  • Örnek olarak, satrançta IBM'in Deep Blue'su ve şu anki şampiyon Stockfish 9'a karşı en büyük satranç ustalarının becerilerini test ettiği bilgisayar programları verilebilir.
  • Bu tür gelişmiş ancak kısıtlı yapay zeka, sürücüsüz araç kontrolü gibi karmaşık görevleri yerine getiremez, ancak satranç gibi belirli oyunlarda insan rakiplere karşı üstünlük sağlayabilir.
  • IBM Watson'un, Wikipedia ve diğer kaynaklardan elde edilen büyük veri setleriyle Jeopardy! şampiyonluğunu kazanmasının, doğal dil işleme konusundaki ilerlemelerde nasıl bir rol oynadığını gösteren bir örnek vardır.
  • Oyun sistemleri, yapay zeka teknolojisinin karmaşık ve hızlı zorluklar sunarak gelişmesine katkıda bulunur ve çözümleri yeni yapay zeka uygulamalarına öncülük eder.

Siber Güvenlik

Bilgisayar Korsanları ve Siber Saldırılar:

Crash Course Bilgisayar Bilimi No. 32 videosunun özetini içerir.

  • Sosyal Mühendislik:

    • Kullanıcıları kandırarak bilgisayar sistemlerine sızma.
    • Kimlik avı dolandırıcılığı gibi yöntemlerle kullanıcıların gizli bilgilerini çalma.
  • Sahte Senaryolar:

    • Kurbanı oldukları kişilere güvenli bir BT birimi çalışanı olduklarını iddia ederek sahte senaryolar uydurma.
  • Kötü Amaçlı Yazılım:

    • E-postalar aracılığıyla yayılan kötü amaçlı yazılımlar.
    • Veri çalma, dosyaları şifreleme ve fidye talep etme gibi zararlı faaliyetler.
  • Arabellek Taşması (Buffer Overflow):

    • Program belleğine fazla veri göndererek sistemleri çökertme veya kontrolü ele geçirme yöntemi.
  • Kod Enjeksiyonu (Code Injection):

    • Web sitelerine saldırmak için kullanılan bir yöntem.
    • Veritabanı kullanan web sitelerinde yaygın olarak kullanılır.
  • Sıfır Gün Güvenlik Açıkları (Zero-Day Exploits):

    • Henüz fark edilmemiş veya düzeltilmemiş güvenlik açıklarını hedef alma.
    • Siyah Şapkalı Bilgisayar Korsanları, bu tür açıkları hızlıca keşfederek sistemlere sızma.
  • Botnet ve DDoS Saldırıları:

    • Birçok bilgisayarı ele geçirerek botnet oluşturma.
    • DDoS saldırıları ile hedef sistemlere büyük miktarda trafik gönderme.

Video Linki

Bilgisayar Korsanları ve Siber Saldırılar

Şifreleme: Crash Course Bilgisayar Bilimi No. 33

Bu README dosyası, Crash Course Bilgisayar Bilimi No. 33 "Şifreleme" videosunun özetini içerir.


Her bilgisayar sisteminin %100 güvenli olmadığını bilmek önemlidir. Bu nedenle, güvenlik uzmanları, derinlemesine savunma olarak adlandırılan bir strateji uygularlar. Şifreleme, bu stratejinin önemli bir parçasıdır.

  • Şifreleme Nedir?

    • Bilgiyi gizlemek için bir algoritma kullanma.
    • Düz metni şifreli metne dönüştürme ve şifrelenmiş metni orijinal haline döndürme işlemi.
  • Tarihçe:

    • Jül Sezar'ın Sezar şifresi gibi eski şifreleme yöntemleri.
    • İskoçya Kraliçesi Mary'nin yerine koyma şifresi ile yakalanması.

Simetrik Şifreleme

  • Permütasyon Şifreleri:

    • Sütun yer değiştirme şifresi gibi bir örnek.
    • Anahtarın sıralama yönü ve ızgara boyutunun önemi.
  • Enigma Makinesi:

    • Almanya'nın II. Dünya Savaşı'nda kullandığı şifreleme makinesi.
    • Çarklar, reflektör ve fiş panosu kullanımı.
  • Data Encryption Standard (DES):

    • IBM ve NSA tarafından geliştirildi.
    • 56 bit uzunluğunda anahtarlar kullanıyordu.
  • Advanced Encryption Standard (AES):

    • DES'in yerini aldı.
    • 128, 192 veya 256 bit uzunluğunda anahtarlar kullanır.

Asimetrik Şifreleme

  • Diffie-Hellman Anahtar Değişimi:

    • Paylaşılan bir anahtar oluşturmak için modüler üs alma kullanır.
    • Gizli anahtarların paylaşılmadan birbirine güvenli bir şekilde gönderilmesini sağlar.
  • RSA (Rivest, Shamir, Adleman):

    • Asimetrik şifreleme yöntemlerinden biri.
    • Bugünün en popüler şifreleme yöntemlerinden biri.

Sonuç

  • Şifreleme, iletişimi güvende ve gizli tutar.
  • Simetrik ve asimetrik şifreleme yöntemleri, bilgi güvenliğinde kritik bir rol oynar.

Video linki: Şifreleme: Crash Course Bilgisayar Bilimi No. 33

ŞUNA GÖZ ATIN!

https://bundles.yourlearning.ibm.com/skills/learn/assets/XVPQVZGJWWQV54A6/Blog_How%20to%20land%20a%20career%20in%20cybersecurity_tr-TR.pdf

Tony Stark'ın Jarvis'i var ve şimdi IBM'in de Havyn'i var :)

https://www.wired.com/2017/02/ibm-havyn-cybersecurity/

  1. Gelişmiş Sürekli Tehdit (APT):

    • Uzun süreli ve çok aşamalı bir ağ saldırısıdır.
    • Yetkisiz kullanıcılar değerli kurumsal verilere erişir ve bunları toplar.
  2. Kimlik Doğrulaması:

    • Bir bilgisayar sisteminin kullanıcısının gerçekten olduğunu iddia ettiği kişi olduğunun kanıtını sunan bir güvenlik hizmetidir.
  3. Yedekleme:

    • Bir bilgisayarın ele geçirilmesi durumunda tüm önemli verilerin kaybolmasını önlemek için verilerin güvenli bir uzak konumda depolanmasını sağlar.
  4. Botnet:

    • Bir kötü amaçlı yazılım parçasının bulaşmış olduğu bir grup bilgisayar sistemidir.
    • Bir bilgisayar korsanı, bu ağ üzerindeki tüm botların tam kontrolünü elde eder ve kötü amaçlı görevleri yerine getirebilir.
  5. İhlal:

    • Bir bilgisayar veya aygıttaki güvenlik açığını başarıyla istismar eden ve dosyaları ile ağına erişim elde eden yetkisiz bir kullanıcının veya erişen bir kişinin eylemidir.
  6. Kaba Kuvvet Saldırısı:

    • Bir bilgisayar sistemine yetkisiz olarak erişmek için kullanılan bir yöntemdir.
    • Örneğin, bir bilgisayar korsanı, parolayı "tahmin etmeye" çalışabilir.
  7. Bulut:

    • Yüksek depolama kapasitesine sahip olan ve müşteri dosya taleplerine uzaktan hizmet sunan bir dizi bilgisayardır.
    • Dosyalara İnternet üzerinden dünyanın herhangi bir yerinden erişilebilir.
  8. Komuta ve Kontrol Merkezi:

    • Bir botnetin tüm botlarını kontrol eden bir uygulamadır.
    • Bir bilgisayar korsanı, bir uygulama aracılığıyla bir komut gönderir ve bu uygulama daha sonra komutu ağdaki tüm ele geçirilmiş bilgisayarlara aktarır.
  9. Siber Saldırı:

    • Siber yöntemler aracılığıyla bilgisayar sistemlerine, ağlara veya aygıtlara zarar verilmesine, bunlarda aksaklık oluşturulmasına veya bunlara yetkisiz erişim elde edilmesine yönelik kötü amaçlı girişimlerdir.
  10. Siber Güvenlik:

    • Bilgilerin siber uzaydaki gizliliğinin, bütünlüğünün ve kullanılabilirliğinin korunmasıdır.
  11. Dijital İmza:

    • Bir mesajın veya nesnenin orijinalliğini ve bütünlüğünü alıcıya garanti etmek için bir mesaja veya nesneye eklenmiş olan, bir özel anahtar ile şifrelenmiş bilgilerdir.
  12. Şifreleme:

    • Bir dosyanın içeriğini, iletişim zincirinin dışındaki kişiler için okunamaz bir hale dönüştüren algoritmik bir yöntemdir.
  13. İstismar:

    • Bir bilgisayarın güvenlik açığından yararlanmak amacıyla kullanılabilecek kötü amaçlı bir uygulama veya komut dosyasıdır.
  14. Güvenlik Duvarı:

    • Yetkisiz erişimi engellemeye odaklanan donanım veya yazılım tabanlı bir savunma teknolojisidir.
  15. Bal Çanağı (honeypot):

    • Savunma amaçlı bir siber güvenlik yöntemidir.
    • Ağ üzerinde yasal ve yüksek değerli bir hedef gibi görünecek şekilde tasarlanmış bir bilgisayarın (sunucu) kullanılmasını kapsar.
  16. İç Tehdit:

    • Bir kuruluşun karşı karşıya olduğu ve kuruluşun güvenlik uygulamalarına, verilerine ve bilgisayar sistemlerine ilişkin olarak "içeriden bilgi sahibi olan" mevcut ve eski çalışanları, yüklenicileri veya iş ortakları gibi kişilerden kaynaklanan kötü amaçlı bir tehdittir.
  17. Jailbreak:

    • Bir aygıt üzerindeki yazılım kısıtlamalarını atlayarak bir kullanıcının bir işletim sistemine veya çekirdeğe kök erişimi elde etmesidir.
    • Genellikle cep telefonu güvenliği bağlamında kullanılır.
  18. Kötü Amaçlı Yazılım:

    • Bir bilgisayarda karmaşaya neden olmak amacıyla tasarlanmış her tür kötü amaçlı yazılımı ifade eden genel bir terimdir.
    • Virüsler, Truva Atları, solucanlar ve fidye yazılımları gibi türler içerir.
  19. Ortadaki Adam (MitM):

    • Bir saldırganın, işlemleri gözlemek ve kaydetmek amacıyla bir kullanıcı ile web sitesi arasındaki mesajları yakaladığı izinsiz giriş yöntemidir.
  20. Tek Kullanımlık Parola:

    • Tek oturum açma işlemi için kullanılan bir paradır.
    • Güvenli bir kanal aracılığıyla istemci ile sunucu arasında iletilir.
  21. Açık Wi-Fi:

    • Bağlı olan kullanıcıların aygıtlarını ve etkinliklerini (trafik) ağdaki diğer tüm kullanıcılara açık hale getiren, kısıtlamaların az olduğu veya hiç bulunmadığı, halka açık bir ağdır.
  22. Yama:

    • Yazılım hatasını düzeltmek için yayınlanan yeni bir yazılım parçasıdır.
  23. Kimlik Avı Dolandırıcılığı (Saldırısı):

    • Bilgisayar korsanları tarafından hassas bilgilerin ele geçirilmesi için kullanılan bir yöntemdir.
    • Kullanıcıya beklenmedik bir zamanda yasal bir kaynaktan gönderilmiş gibi görünen bir e-posta gönderilir.
  24. Fidye Yazılımı:

    • Bir bilgisayardaki dosyalara erişimi kasıtlı olarak engelleyen bir tür kötü amaçlı yazılımdır.
    • Dosyaları şifreler ve şifrelerinin çözülmesi için bir "fidye" ödenmesini talep eder.
  25. Belirteç:

    • Bir ağ hizmetine erişim için yetki veren bir öğedir.
    • Donanım güvenlik belirteci veya kimlik doğrulaması belirteci gibi küçük donanım aygıtlarını ifade eder.
  26. Truva Atı:

    • Genellikle bir bilgisayar korsanının bir bilgisayara uzaktan erişim elde etmesine olanak sağlayan bir kötü amaçlı yazılım parçasıdır.
  27. İki Faktörlü Kimlik Doğrulaması:

    • Bir kullanıcının iddia ettiği kimliğinin doğrulanması için iki farklı bileşenin kullanılmasıdır.
  28. Virüs:

    • Kişisel bilgisayarlara yönelik bir tür kötü amaçlı yazılımdır.
    • Bilgileri bozmak, silmek veya değiştirmek ve diğer bilgisayarlara yayılmak için tasarlanmıştır.
  29. Sanal Özel Ağ (VPN):

    • Bir kullanıcının İnternet'i kullanırken anonim olarak kalmasına izin veren bir araçtır.
    • Lokasyonu gizler ve kullanıcının bilgisayarı ile ziyaret ettiği web sitesi arasındaki trafiği şifreler.
  30. Su Kaynağı (Saldırısı):

    • Belirli bir hedef kitlenin sıklıkla ziyaret ettiği bir web sitesine kötü amaçlı kod yerleştirerek belirli bir ilgi alanına sahip olan bir grubu hedefleyen bir saldırıdır.
  31. Beyaz Şapkalı Bilgisayar Korsanı:

    • Bilgisayar korsanlığı yeteneklerini etik bir amaçla kullanan bir kişidir.
    • İşletmeler genellikle siber güvenlik yeteneklerini test etmek için beyaz şapkalı bilgisayar korsanlarını işe alır.
  32. Solucan:

    • Diğer bağlı bilgisayarlara bulaşmak için kendini çoğaltabilen bir kötü amaçlı yazılım parçasıdır.
  33. Sıfır Gün (Saldırısı):

    • Belirli bir tür yazılım istismarıdır ve genellikle kötü amaçlıdır.
    • Güvenlik açığı keşfedildiğinde, yazılım satıcı firmaları genellikle yeni yazılım parçaları yayınlarlar.

Genel Kültür

  • Java:

    • Java Virtual Machine (JVM) kullanılarak farklı işletim sistemlerinde çalışabilir.
  • JavaScript:

    • Web sayfalarında kullanılan bir programlama dilidir.
  • Python:

    • Veri analizi, bilimsel hesaplamalar, web sayfası oluşturma veya oyun geliştirme gibi birçok alanda kullanılır.
  • PHP:

    • Web sayfalarında dinamik içerik oluşturmak için kullanılan bir programlama dilidir.
    • Sunucu tarafında çalışır ve web sayfalarını dinamik hale getirir.
  • C:

    • Bilgisayar programlamasının temelini oluşturan bir programlama dilidir.
    • Düşük seviyeli bir dil olarak bilinir ve yüksek performanslı uygulamaların geliştirilmesinde kullanılır.
  • C++:

    • Bilgisayar yazılımları ve oyunlar için yaygın olarak kullanılan bir programlama dilidir.
    • Yüksek performanslı uygulamaların geliştirilmesi için idealdir.
  • C#:

    • Microsoft tarafından geliştirilmiş bir programlama dilidir.
    • Windows işletim sistemi ve .NET Framework ile uyumludur.
    • Masaüstü uygulamaları, web uygulamaları ve oyunlar gibi birçok farklı uygulama türü için kullanılabilir.

IBM Professional Skills

"İletişimde en önemli şey söylenmeyeni duymaktır."

– Peter Drucker, yazar, yönetim danışmanı ve sosyal ekolog

"Altı dürüst adamım var. Bildiğim her şeyi bana onlar öğretti. Adları; ne, neden, ne zaman, nasıl, nerede ve kim."

– Rudyard Kipling, İngiliz gazeteci, yazar ve şair

"Etkili olmak için 'nüfuslu insan' olmanıza gerek yok."

– Scott Adams, Dilbert çizgi romanın yaratıcısı ve yazarı

İş yerindeki anlaşmazlıklar kişilerarası becerileri geliştirme fırsatlarıdır

Screenshot 2024-05-11 at 03 20 57

Anlaşmazlığın üstesinden gelmenize yardımcı olacak beş adım

Screenshot 2024-05-11 at 03 21 18

Geribildirim kör noktaların etkisini ortadan kaldırır

Screenshot 2024-05-11 at 03 22 00

İş yerindeki anlaşmazlıkları çözme

Screenshot 2024-05-11 at 03 24 07

ChatGPT'yi Verimli Kullanmanın Yolları

GitHub Link

Yazılım Alanları Tanıyalım 3: IOS vs. Android Developer | w/Gamze Yılmaz & Nalan Ulusoy

YouTube Video

Hafta 2

https://open.spotify.com/playlist/022a26waGCUp9FZIqVVsan?si=92293015c8c045ba

Genel Kültür

VCS : version control system

  • Git: Git, özellikle açık kaynaklı yazılım projelerinde sıklıkla kullanılan bir VCS aracıdır. Projelerin kaynak kodlarının takip edilmesine ve değişikliklerin yönetilmesine yardımcı olur.

  • SVN: SVN (Subversion), bir diğer açık kaynaklı VCS aracıdır. Projelerin tarihçesini yönetir ve farklı sürümleri saklayarak geri dönüşümlü işlemler yapılmasına imkan tanır.

  • Mercurial: Mercurial, dağıtık bir VCS aracıdır. Projelerin kaynak kodlarını yönetmek ve farklı sürümlerini saklamak için kullanılır.

Öğrenci Olmanın Nimetleri

  • Github Student Pack
  • Microsoft Azure -proje deploy ederken ve bulut çalışmalarımda kullandım
  • Autodesk
  • JetBrains
  • Amazon Prime Student
  • Apple Education Store

IBM SkillsBuild

Çeviklikle Kaliteli İş Sunun

"Yazmak bir araştırmadır. Hiçbir şeyle başlar ve ilerledikçe öğrenirsiniz."

– E.L. Doctorow, Amerikalı yazar, romancı

Screenshot 2024-05-11 at 00 03 44

Ne düşünüyorsunuz?

  • Sizinle aynı düzeydeki birinden gelen talebi, bir müdürün talebinden farklı şekilde mi ele alırsınız? Benim için talebin kaynağı önemli değil, talebin içeriği ve nasıl ele alınması gerektiği önemlidir. Her talebi dikkatlice değerlendirir ve gereken yanıtı en iyi şekilde vermeye çalışırım. Talebin ciddiyetine, önemine ve önceliğine bağlı olarak uygun şekilde hareket ederim. Müdürün talebi olsa da, aynı düzeydeki birinden gelen talep olsa da, her ikisine de aynı özenle ve saygıyla yaklaşırım.

Kaliteli iş teslim etmenin beş adımı

Screenshot 2024-05-11 at 00 07 29

"Bana dürüstçe hizmet eden altı adamım var (bana bildiğim her şeyi öğrettiler). Adları Ne, Neden, Ne Zaman, Nasıl, Nerede ve Kim."

– Rudyard Kipling, İngiliz kraliyet şairi

"İnsan vadiden büyük şeyler görür, zirveden ise yalnızca küçük şeyler."

– G.K. Chesterton, İngiliz yazar ve filozof

"İnsan aklı paraşüt gibidir, açık olduğunda daha iyi çalışır."

– Anonim

Screenshot 2024-05-11 at 00 16 11

"Bir şeyi yapabilmeniz için öncelikle bunu aklınızda açık bir biçimde görmeniz gerekir."

– Alexander Morrison, Kanadalı bilim insanı ve politikacı

İşbirliğine ilişkin temel bilgiler

İşbirliği, ortak bir hedef doğrultusunda birlikte çalışma eylemidir. İşbirliği başarılı olduğunda, 1 + 1 gerçekten 3 edebilir!

"Başkalarının iyiliğini garanti altına almak isteyen kişi, kendi iyiliğini garanti altına almak için uzun bir yol katetmiş olur."

– Konfüçyüs, Çinli filozof, öğretmen ve politikacı

  • İşbirliğine odaklı davranışların sergilenmesi, diğerleriyle çalışma biçiminizi olumlu etkileyebilir: -- Özgün olmak. -- Adil biçimde vermek ve almak. -- Karşılıklı düşünmek. -- Güven kazanmak. -- Tutkulu olmak. -- Etkili iletişim kurmak.
  • İşbirliğinin önündeki engeller, diğerleri ile çalışma biçiminizi olumsuz etkileyebilir.
  • Diğer davranışlar, makul ölçüler dahilinde sergilendiğinde işbirliği çabalarına yardımcı olurken, aşırıya kaçtığında zarar verebilir. Farkındalık, normal ile aşırı davranışları ayırt etmenize yardımcı olabilir.

"Bir araya gelmek başlangıçtır. Bir arada kalmak ilerlemedir. Birlikte çalışmak başarıdır."

– Henry Ford, Amerikalı sanayici

Ekibin gelişimindeki dört aşama

Screenshot 2024-05-11 at 00 32 33

Oluşum aşamasında sergilenen davranışlar:

Diğerleri tarafından kabul edilmek için güçlü bir istek vardır. Üyeler arkadaş canlısı ve açıktır. Üyeler genellikle çatışmadan kaçınır. Üyeler, hiyerarşideki konumlarından emin değildir. Üyeler, grubun hedeflerinden emin değildir. Oluşum aşamasındaki yaygın tehlikeler:

Grup, yapıcı çatışmadan kaçınabilir. Gerilim ya da tehdit olmadan çok fazla iş yapılamaz.

Beyin Fırtınası aşamasında sergilenen davranışlar:

Üyeler rahatsız ve rekabetçi hisseder. Üyeler odaklı değildir. Üyeler başarısızdır. Üyeler işbirliğine odaklı değildir. Beyin Fırtınası aşamasındaki yaygın tehlikeler:

İnsanlar birbirlerinin duygularını incitir. Grup bu aşamada takılıp kalır. Çok az iş yapılır.

Biçimlenme aşamasında sergilenen davranışlar:

Üyeler, çatışmanın sona ermesi nedeniyle rahatlar. Fikirlerinden bazıları uygulanmayacağı için üyeler hayal kırıklığına uğramış olabilir. Üyeler, karşılıklı olarak kabul edilen hedeflere ulaşmak için sabırsızlanır. Biçimlenme aşamasındaki yaygın tehlikeler:

Memnuniyetsizlik ve dışarıda bırakılmış olma hissi vardır. Kararlaştırılan hedefler doğrultusunda çalışma motivasyonu yoktur. Bir rehavet—işin zor kısmının yapıldığı ve gerisinin kolay olduğu düşüncesi—duygusu oluşur.

Performans aşamasında sergilenen davranışlar:

Üyeler motivedir ve iş hakkında heyecanlıdır. Üyeler, diğerlerinin onayladığı kararlar alabilir. Ekip, üretken ve etkilidir. Performans aşamasındaki yaygın tehlikeler:

Ekip, değiştirilen hedefler veya farklı bir liderlik gibi koşullarda oluşan değişiklikler nedeniyle Beyin Fırtınası veya Biçimlenme aşamasına geri dönebilir. Üyeler rehavete kapılabilir ve gevşeyebilir.

Ekip çalışması ve 1+1=3! Mattie Stepanek, Amerikalı bir yazardı. Altı şiir kitabı ve bir deneme kitabı, The New York Times çok satanlar listesine girdi. 13 yaşında ölmeden önce, barış savunucusu ve motivasyon konuşmacısı olarak tanınıyordu.

Bu alıntı, kursun en önemli fikri olan insan gruplarının birlikte, üyelerinin tek başına yapabileceğinden çok daha fazlasını başarabileceği fikrini bir araya getiriyor.

"Birlik, güçtür. Ekip çalışması ve işbirliği olduğunda, harika şeyler başarılabilir."

— Mattie Stepanek

"İletişimdeki en önemli sorun, gerçekleşmiş olduğu yanılgısıdır."

– George Bernard Shaw, İrlandalı oyun yazarı, eleştirmen ve siyasi aktivist

Screenshot 2024-05-11 at 00 38 43

Python

Liste Oluşturma:

# Boş liste oluşturma
my_list = []

# Stringlerden oluşan bir liste oluşturma
fruits = ["apple", "banana", "cherry"]

# Sayılardan oluşan bir liste oluşturma
numbers = [1, 2, 3, 4, 5]

# Farklı veri tiplerinden oluşan bir liste oluşturma
mixed_list = [1, "apple", True, 2.5]

Liste Elemanlarına Erişme:

fruits = ["apple", "banana", "cherry"]

# Belirli bir indeksteki elemana erişme
print(fruits[0])  # "apple"

# Negatif indekslerle son elemana erişme
print(fruits[-1])  # "cherry"

# Bir aralıktaki elemanlara erişme (dilimleme)
print(fruits[1:3])  # ["banana", "cherry"]

# Listeyi tersine çevirme
print(fruits[::-1])  # ["cherry", "banana", "apple"]

Liste Metodları:

fruits = ["apple", "banana", "cherry"]

# Liste uzunluğunu alma
print(len(fruits))  # 3

# Listenin sonuna eleman ekleme
fruits.append("orange")
print(fruits)  # ["apple", "banana", "cherry", "orange"]

# Belirli bir indekse eleman ekleme
fruits.insert(1, "grape")
print(fruits)  # ["apple", "grape", "banana", "cherry", "orange"]

# Belirli bir indeksteki elemanı silme
fruits.pop(1)
print(fruits)  # ["apple", "banana", "cherry", "orange"]

# Belirli bir değere sahip tüm elemanları silme
fruits.remove("banana")
print(fruits)  # ["apple", "cherry", "orange"]

# Liste elemanlarını sıralama
fruits.sort()
print(fruits)  # ["apple", "cherry", "orange"]

# Liste elemanlarını tersine sıralama
fruits.reverse()
print(fruits)  # ["orange", "cherry", "apple"]

tuple

Python'da tuple, değiştirilemez (immutable) bir veri yapısıdır. Tuple, virgülle ayrılmış öğelerden oluşur ve genellikle parantez içinde tanımlanır. İşte tuple oluşturma ve kullanma örnekleri:

Tuple Oluşturma:

# Boş tuple oluşturma
my_tuple = ()

# Tek bir eleman içeren tuple oluşturma
my_singleton_tuple = (1,)  # Tek elemanlı bir tuple tanımlarken virgül kullanılmalıdır.

# Stringlerden oluşan bir tuple oluşturma
fruits = ("apple", "banana", "cherry")

# Sayılardan oluşan bir tuple oluşturma
numbers = (1, 2, 3, 4, 5)

# Farklı veri tiplerinden oluşan bir tuple oluşturma
mixed_tuple = (1, "apple", True, 2.5)

Tuple Elemanlarına Erişme:

fruits = ("apple", "banana", "cherry")

# Belirli bir indeksteki elemana erişme
print(fruits[0])  # "apple"

# Negatif indekslerle son elemana erişme
print(fruits[-1])  # "cherry"

# Bir aralıktaki elemanlara erişme (dilimleme)
print(fruits[1:3])  # ("banana", "cherry")

# Tuple'ın uzunluğunu alma
print(len(fruits))  # 3

Tuple Metodları:

Tuple'lar değiştirilemez olduğundan, tuple veri yapısı üzerinde değişiklik yapmak mümkün değildir. Ancak, index() ve count() gibi bazı metodlar kullanılabilir:

fruits = ("apple", "banana", "cherry")

# Belirli bir değerin indeksini alma
print(fruits.index("banana"))  # 1

# Belirli bir değerin tuple içinde kaç defa geçtiğini alma
print(fruits.count("cherry"))  # 1

set

Python'da bir set, benzersiz ve değiştirilebilir (mutable) bir koleksiyon veri tipidir. Bir set, süslü parantezler {} içinde virgülle ayrılmış öğelerden oluşur. Set'ler, bir liste veya tuple gibi sıralı değildir ve öğeler arasında sıralama garantisi vermez. Ayrıca, bir set içinde aynı öğeden yalnızca bir tane bulunabilir. İşte set oluşturma ve kullanma örnekleri:

Set Oluşturma:

# Boş bir set oluşturma
my_set = set()

# Elemanlarıyla bir set oluşturma
my_set = {1, 2, 3, 4, 5}

# Bir liste veya tuple'dan bir set oluşturma
my_set = set([1, 2, 3, 4, 5])

Set Elemanlarına Erişme:

Set'lerde indeksleme veya dilimleme yapılamaz çünkü set'ler sıralı değildir. Ancak, bir elemanın bir set içinde bulunup bulunmadığını kontrol etmek için in operatörü kullanılabilir.

my_set = {1, 2, 3, 4, 5}

# Bir elemanın set içinde bulunup bulunmadığını kontrol etme
print(3 in my_set)  # True
print(6 in my_set)  # False

Set Metodları:

my_set = {1, 2, 3}

# Bir elemanı set'e ekleme
my_set.add(4)
print(my_set)  # {1, 2, 3, 4}

# Bir elemanı set'ten silme
my_set.remove(2)
print(my_set)  # {1, 3, 4}

# Set'i temizleme
my_set.clear()
print(my_set)  # set()

dictionary

Python'da bir sözlük (dictionary), anahtar-değer çiftlerini depolayan bir veri yapısıdır. Sözlükler, süslü parantezler {} içinde tanımlanır ve her bir öğe anahtar ve değer olarak adlandırılan bir çiftle temsil edilir. İşte sözlük oluşturma ve kullanma örnekleri:

Sözlük Oluşturma:

# Boş bir sözlük oluşturma
my_dict = {}

# Anahtarlar ve değerlerle bir sözlük oluşturma
my_dict = {"apple": 1, "banana": 2, "cherry": 3}

# dict() fonksiyonu kullanarak bir sözlük oluşturma
my_dict = dict(apple=1, banana=2, cherry=3)

# Liste veya tuple kullanarak bir sözlük oluşturma
my_dict = dict([("apple", 1), ("banana", 2), ("cherry", 3)])

Sözlük Elemanlarına Erişme:

my_dict = {"apple": 1, "banana": 2, "cherry": 3}

# Bir anahtara karşılık gelen değeri alma
print(my_dict["banana"])  # 2

# Bir anahtara karşılık gelen değeri get() metoduyla alma
print(my_dict.get("cherry"))  # 3

# Bir anahtara karşılık gelen değeri varsayılan bir değerle alma
print(my_dict.get("orange", "Varsayılan değer"))  # Varsayılan değer

Sözlük Metodları:

my_dict = {"apple": 1, "banana": 2, "cherry": 3}

# Bir anahtarın varlığını kontrol etme
print("banana" in my_dict)  # True

# Bir anahtarın varlığını kontrol etme (get() metoduyla)
print(my_dict.get("orange") is not None)  # False

# Bir anahtara karşılık gelen değeri değiştirme
my_dict["banana"] = 5
print(my_dict)  # {'apple': 1, 'banana': 5, 'cherry': 3}

# Yeni bir anahtar-değer çifti ekleme
my_dict["orange"] = 4
print(my_dict)  # {'apple': 1, 'banana': 5, 'cherry': 3, 'orange': 4}

# Bir anahtarı ve karşılık gelen değeri silme
del my_dict["cherry"]
print(my_dict)  # {'apple': 1, 'banana': 5, 'orange': 4}

# Tüm anahtar-değer çiftlerini alma
print(my_dict.items())  # dict_items([('apple', 1), ('banana', 5), ('orange', 4)])

split ve join methodu

# Bir stringi boşluklara göre bölmek
sentence = "Python çok güçlü bir dil"
words = sentence.split()
print(words)  # ['Python', 'çok', 'güçlü', 'bir', 'dil']

# Bir stringi farklı bir ayırıcıya göre bölmek
numbers = "1,2,3,4,5"
num_list = numbers.split(',')
print(num_list)  # ['1', '2', '3', '4', '5']
# Bir liste elemanlarını boşlukla birleştirmek
words = ['Python', 'çok', 'güçlü', 'bir', 'dil']
sentence = ' '.join(words)
print(sentence)  # Python çok güçlü bir dil

# Bir liste elemanlarını farklı bir ayırıcıyla birleştirmek
num_list = ['1', '2', '3', '4', '5']
numbers = ','.join(num_list)
print(numbers)  # 1,2,3,4,5

list compheransion

new_list = [expression for item in iterable if condition]

numbers = [1, 2, 3, 4, 5]
even_numbers = [x for x in numbers if x % 2 == 0]
print(even_numbers)  # [2, 4]

#### enumerate() Fonksiyonu: enumerate() fonksiyonu, bir iterable nesnenin indeksini ve değerini döndürür. Bu, bir döngü içinde hem indeks hem de değer ile birlikte çalışmanıza olanak sağlar.

fruits = ["apple", "banana", "cherry"]

for index, fruit in enumerate(fruits):
    print(index, fruit)

# Çıktı:
# 0 apple
# 1 banana
# 2 cherry

zip fonksiyonu

zip() fonksiyonu, farklı iterable nesneleri paralel olarak birleştirerek birleştirilmiş bir tuple listesi oluşturur.

numbers = [1, 2, 3]
letters = ['a', 'b', 'c']

zipped = zip(numbers, letters)
print(list(zipped))  # [(1, 'a'), (2, 'b'), (3, 'c')]

------------------------------------------------------------------

numbers = [1, 2, 3]
letters = ['a', 'b', 'c', 'd']

zipped = zip(numbers, letters)
print(list(zipped))  # [(1, 'a'), (2, 'b'), (3, 'c')]

------------------------------------------------------------------
numbers = [1, 2, 3]
letters = ['a', 'b', 'c']
symbols = ['!', '@', '#']

zipped = zip(numbers, letters, symbols)
print(list(zipped))  # [(1, 'a', '!'), (2, 'b', '@'), (3, 'c', '#')]

function

def hello():
    print("Merhaba, dünya!")

hello()  # Fonksiyonu çağırma

Esnek Sayıda Argümanlar:


def add(*args):
    total = 0
    for num in args:
        total += num
    return total

print(add(1, 2, 3))  # 6
print(add(1, 2, 3, 4, 5))  # 15

Lambda Fonksiyonları:

double = lambda x: x * 2
print(double(5))  # 10

Clean Code

Yeniden Kullanılabilirlik ve DRY Prensibi

  • Yeniden Kullanılabilirlik, bir kod parçasının veya bir bileşenin farklı yerlerde veya farklı projelerde tekrar tekrar kullanılabilir olmasıdır. Bu, yazılan kodun daha modüler, daha esnek ve daha verimli olmasını sağlar. Örneğin, bir fonksiyon veya bir bileşen yazıldığında, bu kod parçasının farklı projelerde veya farklı modüllerde kullanılabilir olması, yeniden kullanılabilirliği sağlar. Bu sayede aynı kod parçasını tekrar tekrar yazmak zorunda kalmazsınız ve kodunuz daha temiz ve daha bakımı kolay hale gelir.
  • DRY prensibi (Don't Repeat Yourself), "Kendini Tekrarlama" anlamına gelir. Bu prensip, her bilginin tek ve kesin bir temsili olması gerektiğini savunur. Yani aynı kod parçasının veya aynı bilginin birden fazla yerde tekrar tekrar yazılmasını önler. DRY prensibi, kodun daha okunabilir, daha sürdürülebilir ve daha kolay düzenlenebilir olmasını sağlar. Bu prensibi uygulamak, yazılım geliştirme sürecinde verimliliği artırır ve hataların azalmasına yardımcı olur.
  • Single Responsibility Principle (SRP), bir sınıfın veya modülün yalnızca bir sorumluluğu olması gerektiğini belirten bir tasarım prensibidir. Bu prensip, her bir sınıf veya modülün yalnızca tek bir görevi yerine getirmesi gerektiğini savunur. Bir sınıf veya modül ne kadar az göreve sahip olursa, o kadar esnek, okunabilir ve sürdürülebilir olur.Tek Sorumluluk İlkesi, genellikle Robert C. Martin (Uncle Bob) tarafından popülerleştirilmiş ve SOLID prensiplerinin ilkini oluşturan bir yazılım geliştirme prensibidir.
# DRY prensibine uymayan kod
def toplama(a, b):
    sonuc = a + b
    print("Toplam:", sonuc)

def cikarma(a, b):
    sonuc = a - b
    print("Fark:", sonuc)

def carpma(a, b):
    sonuc = a * b
    print("Çarpım:", sonuc)

def bolme(a, b):
    if b != 0:
        sonuc = a / b
        print("Bölüm:", sonuc)
    else:
        print("Sıfıra bölme hatası!")

# Kod tekrarı var
def hesapla(a, b):
    toplama(a, b)
    cikarma(a, b)
    carpma(a, b)
    bolme(a, b)
# DRY prensibine uygun kod
def toplama(a, b):
    return a + b

def cikarma(a, b):
    return a - b

def carpma(a, b):
    return a * b

def bolme(a, b):
    if b != 0:
        return a / b
    else:
        return "Sıfıra bölme hatası!"

# Tekrar kullanılabilir fonksiyonlar
def hesapla(a, b):
    print("Toplam:", toplama(a, b))
    print("Fark:", cikarma(a, b))
    print("Çarpım:", carpma(a, b))
    print("Bölüm:", bolme(a, b))

# DRY prensibine uyan kod, aynı işi yapar ancak kod tekrarı yoktur
# SRP'ye uymayan kod
class KütüphaneYönetimi:
    def kitap_ekle(self, kitap):
        print(f"{kitap} kütüphaneye eklendi.")
    
    def kitap_sil(self, kitap):
        print(f"{kitap} kütüphaneden silindi.")
    
    def kitap_al(self, kitap):
        print(f"{kitap} kitabı ödünç alındı.")
    
    def kitap_iade(self, kitap):
        print(f"{kitap} kitabı iade edildi.")
# SRP'ye uyan kod
class Kütüphane:
    def kitap_ekle(self, kitap):
        print(f"{kitap} kütüphaneye eklendi.")
    
    def kitap_sil(self, kitap):
        print(f"{kitap} kütüphaneden silindi.")

class ÖdünçVerme:
    def kitap_al(self, kitap):
        print(f"{kitap} kitabı ödünç alındı.")
    
    def kitap_iade(self, kitap):
        print(f"{kitap} kitabı iade edildi.")

Yazılım Alanları Tanıyalım 2: Web Geliştirme

https://www.youtube.com/watch?v=ZCQlk5ZZ30E&t=1s


Hafta 1

Genel Kültür

  • El Harezmi , Algoritma , Cebir Kitabı
  • Charles Babbage , Analitik Makine , girdileri ve çıktıları hesaplamak için bir dizi dişli, krank ve kıvılcım alıcısı
  • Augusta Ada King , Charles Babbage'in Analitik Makine üzerindeki çalışmaları , bir bilgisayar tarafından işlenmek üzere yazılan ilk algoritma , ilk bilgisayar programcısı
  • 1950'lerde COBOL, FORTRAN ve BASIC dilleri , bilgisayarların karmaşık işlemler yapması
  • 1960'ların ve 1970'lerin ardından C ve Pascal dilleri , daha fazla kontrol ve esneklik
  • 1980'lerde, Apple ve Microsoft'un kişisel bilgisayarları , C++ ve Java
  • 2000'lerde, web uygulamalarının yükselmesiyle JavaScript ve PHP , Python ve Ruby

Python

Jupyter Notebook

The steps below shows how to install Jupyter on Mac : I use homebrew for quick and easy installation.

Step 1 — Install pyenv : Mac Os X come with Pythong 2.7 pre-installed but many Machine Learning packages are progressing to Python 3.x. Therefore, it’s recommended you start using Python 3 and the best way to do that is to first install pyenv version manager. This will allow you to install any version of Python you'd like.

First update Homebrew package manager.

brew update && brew doctor

Install pyenv version manager.

brew install pyenv

Step 2 — Install Python

Install Python 3.x using pyenv. You can see a list of version from Python Website.

pyenv install -l | grep -oE '[0-9]+\.[0-9]+\.[0-9]+'

pyenv install 3.10.4

Double check your work.

pyenv versions

You’ll also need to configure your ~/.bash_profile.

echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

Step 3 — Set Python to Local or Global If you only want to use Python 3.x for a specific project, then cd to your specific directory and type:

pyenv local 3.x.x

If you’d prefer to just have Python 3.x installed globally throughout your operating system, then type:

pyenv global 3.x.x

Step 4 — Install Jupyter Jupyter is an acronym for Julia, Python and R but these days, other languages are also included such as Ruby.

brew install jupyter

Step 5 — Start Jupyter

jupyter notebook
Jupyter Notebook shortcuts
  • dd delete
  • ctrl enter çalıştır
  • shift enter çalıştır alta geç
  • a üste yeni cell
  • b üste yeni cell

Veri Tipleri

Veri objeleri ikiye ayrılır 1)Scalar (Skaler): Tek bir değeri temsil eden veri tipleridir. Scalar veri tipleri şunlardır:

  • int (Tam sayılar)
  • float (Ondalık sayılar)
  • complex (Karmaşık sayılar)
  • bool (Boolean - Mantıksal değerler: True veya False)
  • NoneType (None - boş değer)

2)Non-scalar (Skaler olmayan): Birden fazla değeri içeren ve birbiriyle ilişkili olan veri tipleridir. Non-scalar veri tipleri şunlardır:

  • list (Listeler)
  • tuple (Demetler)
  • set (Kümeler)
  • dict (Sözlükler)

Aritmetik Operatörler:

  • +: Toplama
  • -: Çıkarma
  • *: Çarpma
  • /: Bölme (gerçek sayı bölmesi)
  • //: Bölme (tam sayı bölmesi)
  • %: Mod (kalanı bulma)
  • **: Üs alma

Karşılaştırma Operatörleri:


== Eşit mi?

!= Eşit değil mi?

<  Küçük mü?

>  Büyük mü?

<= Küçük veya eşit mi?

>= Büyük veya eşit mi?

Mantıksal Operatörler:

  • and: VE
  • or: VEYA
  • not: DEĞİL

Atama Operatörleri:

  • =: Değer atama
  • +=: Toplama ve atama
  • -=: Çıkarma ve atama
  • *=: Çarpma ve atama
  • /=: Bölme ve atama
  • //=: Tam bölme ve atama
  • %=: Mod ve atama
  • **=: Üs alma ve atama

Üyelik Operatörleri:

  • in: Bir öğe bir veri yapısında bulunuyor mu?
  • not in: Bir öğe bir veri yapısında bulunmuyor mu?

Kimlik Operatörleri:

  • is: İki nesnenin aynı nesne olup olmadığını kontrol eder.
  • is not: İki nesnenin aynı nesne olmadığını kontrol eder.

print() Fonksiyonu:

x = 5
y = 10
print("x değeri:", x, "ve y değeri:", y)  # "x değeri: 5 ve y değeri: 10" çıktısını verir.

input() Fonksiyonu:

isim = input("Adınızı girin: ")
print("Merhaba,", isim)  # Kullanıcının girdiği ismi ekrana yazdırır.

Python String İfadeleri

Python'da string (dize) veri tipi metin verilerini temsil etmek için kullanılır. Bir string, karakterlerin birleşimidir ve tek tırnak (') veya çift tırnak (") içinde tanımlanır.

String Tanımlama
s1 = 'Hello, world!'     # Tek tırnak içinde string
s2 = "Python Programming"   # Çift tırnak içinde string
s3 = """Bu çoklu
satırlı bir stringdir."""   # Üç çift tırnak içinde çok satırlı string

String Birleştirme (Concatenation)

s1 = "Hello"
s2 = "world"
s3 = s1 + " " + s2   # "Hello world" stringini oluşturur

String Dizinleme (Indexing) ve Dilimleme (Slicing)

s = "Python"
print(s[0])    # 'P' - İlk karakter
print(s[-1])   # 'n' - Son karakter
print(s[2:4])  # 'th' - 2. indeksten 4. indekse (dahil değil) kadar dilimleme

String Uzunluğu

s = "Python Programming"
print(len(s))  # 18 - stringin karakter sayısı

String Metodları

s = "hello, world!"
print(s.upper())   # Tüm karakterleri büyük harfe dönüştürür
print(s.lower())   # Tüm karakterleri küçük harfe dönüştürür
print(s.capitalize())  # Stringin ilk karakterini büyük harfe dönüştürür
print(s.split(","))   # Belirtilen bir ayraçla stringi böler

String Formatlama

name = "Alice"
age = 30
print("My name is {} and I am {} years old.".format(name, age))
# "My name is Alice and I am 30 years old." çıktısını verir

veya

name = "Alice"
age = 30
print(f"My name is {name} and I am {age} years old.")
# "My name is Alice and I am 30 years old." çıktısını verir

comment

# Bu bir yorumdur
print("Hello, world!")  # Bu da bir yorumdur

# print("Bu kod çalışmayacak")

short-circuit

Python'da kısa devre (short-circuit) değerlendirme, mantıksal operatörlerin (and, or) kullanımında gerçekleşen bir özelliktir. Kısa devre, bir ifadeyi değerlendirirken, sonucun zaten bilindiği durumlarda diğer ifadelerin değerlendirilmesini atlamaktır.

and Operatörü Kısa Devre

# Kısa devre olmayan durum
x = 5
y = 0
if x > 0 and x / y > 2:
    print("Bu satır çalışmayacak")
else:
    print("Kısa devre meydana geldi")

# Kısa devreli durum
x = 5
y = 0
if y != 0 and x / y > 2:
    print("Bu satır çalışmayacak")
else:
    print("Kısa devre meydana geldi")

or Operatörü Kısa Devre

# Kısa devre olmayan durum
x = 0
y = 5
if x == 0 or y / x > 2:
    print("Bu satır çalışmayacak")
else:
    print("Kısa devre meydana geldi")

# Kısa devreli durum
x = 0
y = 5
if x != 0 or y / x > 2:
    print("Kısa devre meydana geldi")
else:
    print("Bu satır çalışmayacak")

Yukarıdaki örneklerde, and operatöründe eğer ilk ifade False ise ikinci ifadeyi değerlendirmeye gerek kalmaz. Benzer şekilde, or operatöründe eğer ilk ifade True ise ikinci ifadeyi değerlendirmeye gerek kalmaz. Bu durum kısa devre (short-circuit) olarak adlandırılır. Bu özellik, kodun daha verimli ve hızlı çalışmasını sağlar.

if else elif

x = 10

if x > 0:
    print("x pozitif")
elif x == 0:
    print("x sıfır")
else:
    print("x negatif")

ternary conditions

# Ternary ifade kullanmadan
x = 5
if x > 0:
    result = "positive"
else:
    result = "non-positive"
print(result)  # "positive" çıktısını verecek

# Ternary ifade kullanarak
x = 5
result = "positive" if x > 0 else "non-positive"
print(result)  # "positive" çıktısını verecek

for Döngüsü:

# Liste üzerinde döngü
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

# Liste yerine bir string üzerinde döngü
for letter in "Python":
    print(letter)

# Belirli bir aralıkta döngü
for i in range(5):
    print(i)

# Belirli bir aralıkta belirli bir artış miktarı ile döngü
for i in range(0, 10, 2):
    print(i)

while Döngüsü:

# Belirli bir koşul sağlandığı sürece döngü
i = 0
while i < 5:
    print(i)
    i += 1

# Sonsuz döngü (Ctrl + C ile durdurulmalı)
# while True:
#     print("Sonsuz döngü")

break ifadesiyle döngüden çıkılır:

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)
    if fruit == "banana":
        break

continue ifadesiyle döngünün bir sonraki iterasyonuna geçilir:

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    if fruit == "banana":
        continue
    print(fruit)

Clean Code

  • Her dilin ve projenin kendi isimlendirme standartları vardır.Bunlara uymak, kodunuzun okunabilirliğini artırır.Python'da genellikle snake_case (örn. degisken_adi),Java'da ise camelCase (örn. degiskenAdi) kullanılır.
  • Boolean değerleri temsil eden değişkenler genellikle bir durumu ifade eder. Bu tür değişkenler için is, has, can gibi ön ekler kullanmak kodun anlaşılırlığını artırır.
  • Statik tipte, değişkenlerin türleri, değişkenler oluşturulurken belirlenir ve programın çalışma zamanı boyunca değiştirilemez. Bu, hataları daha erken yakalamamızı sağlar ve derleyici optimizasyonlarına olanak sağlar. Java, C, C++ ve Swift statik tipli dillere örnek olarak verilebilir.

Örneğin, Java'da bir değişken tanımlarken türünü belirtmemiz gerekmektedir:

int sayi = 5;
  • Dinamik tipte ise, değişkenlerin türü, programın çalışma zamanında belirlenir. Bu, daha az kod yazmamıza olanak sağlar ve daha esnek olmamızı sağlar. Ancak, bu esneklik tip hatalarını daha zor tespit edilebilir hale getirir. Python, Ruby, PHP ve JavaScript dinamik tipli dillere örnektir.

Python'da bir değişkeni tanımlarken, türünü belirtmemize gerek yoktur:

sayi = 5
  • Generic programlama, kodun belirli türlere bağımlı olmadan çalışabilmesini sağlar. Bu, kodun tekrar kullanılabilirliğini artırır ve tip güvenliğini sağlar. Generic'ler, statik tipli dillerin esneklik kazanmasına yardımcı olur. Java, C#, Swift gibi dillerde Generic programlama kullanılır.

Örneğin, Java'da bir liste oluştururken, listenin içinde ne tür bir veri tutacağını belirtmeliyiz:

List<String> isimler = new ArrayList<String>();
  • Ancak, bu liste sadece String türünde değerleri kabul eder. Eğer bizim bir liste oluşturmamız ve bu listenin farklı türleri kabul etmesi gerekiyorsa, generic'ler devreye girer:
List<?> herTurluListe = new ArrayList<>();

Tavsiyeler

  • Temiz kod hakkında daha fazla bilgi almak için Robert C. Martin'in "Clean Code" kitabını okumanızı öneririm. Ayrıca “teknik borç(technical debt)” ifadesini de araştırmanız güzel olabilir.

IBM SkillsBuild

Konular :
- Sunumunuz için doğru hedefleri belirlemek neden önemlidir?

- Hedef kitlenizi nasıl tanımlarsınız?

- Sunumunuzun yapısını nasıl oluşturursunuz?

- Sunum slaytlarınızı nasıl tasarlıyorsunuz?

- Nasıl daha etkili sunum yaparsınız?

- Sinirlerinizi nasıl yönetirsiniz?

- Beklenmedik durumlarla nasıl başa çıkıyorsunuz?

Notlar:

  • Başarılı bir sunum iki etkene bağlıdır - hazırlık - sunumu yapış
  "Sunumunuzda neyi başarmak istediğinizi siz bilmiyorsanız hedef kitleniz hiç bilemez."

– Amerikalı yazar, Harvey Diamond
    1. Sunumunuzun sonucu hakkında net olun
    1. Sunumunuzun sonucunu belirlemek için işbirliği yapın
  • Bilgi edinme, harekete geçme ve hissetme

    Screenshot 2024-04-25 at 22 06 41

Slayt setinizi hedef kitlenize dağıtmalı mısınız? Slayt setleri okumak için değil, sunum yapmak içindir. Bunların paylaşılması, hedef kitlenize aşırı düzeyde bilgi yüklemenize yol açar; bu da sunumunuza olan ilgilerini kaybetmelerine neden olur ve sunum yapan kişi olarak size odaklanmalarını engelleyebilir. Sunumunuzu paylaşmaktan kaçının.

Yapılandırılmış bir sunum, açılış, gelişme ve kapanışı içermelidir; ancak hikaye zorunlu değildir.

Screenshot 2024-04-25 at 22 17 17
Düşünce 1: 
"Bir çok politikacı, hedef kitle için neyin en çok işe yarayacağına dair akıllıca bir fikir geliştirmiştir."

– Amerikalı haber spikeri, Jessica Savitch
  • Düşünce 1: Ne düşünüyorsunuz?
Düşünce 2: 
Ekibinizin yeni bir teknoloji türüyle çalışma deneyimi hakkında bir sunum üzerinde çalıştığınızı varsayalım. Sunumu meslektaşlarınıza, ekibinize, müdürünüze veya üst düzey yöneticilerinize yapıyor olsaydınız sunum aynı mı olurdu? Düşüncenizi açıklayın.
  • Düşünce 2: Ne düşünüyorsunuz?
Daha pozitif, samimi ve ilgi çekici görünmek için beden dilinizi nasıl ayarlayabilirsiniz?
  • Ne düşünüyorsunuz?

Etkili sunum teknikleri

Sunum sırasında kullanabileceğiniz, aşağıda belirtilenler dahil olmak üzere, birden fazla teknik vardır:

  • Anımsatmaya yönelik bir dil kullanma
  • Harika hikayeler anlatma
  • Fiziksel sahne donanımı veya ayırt edici görsel resimler kullanma
  • Hedef kitlenizi tartışmaya dahil etme
  • Kontrollü, ancak canlı bir şekilde konuşma ve hareket etme
  • İyi sunum yapanların tamamı, bu tekniklerin tümünü olmasa da çoğunu kullanma eğilimi gösterir.

#### Teknik 1: Anımsatıcı bir dil kullanma Anımsatıcı dili aşağıdakileri yaparak kullanabilirsiniz:

  • Şaşırtıcı bilgiler paylaşma
  • Kışkırtıcı bir soru sorma
  • İnanılmaz bir istatistik paylaşma
  • Bir benzetme kullanma
  • İlginç veya komik bir hikaye anlatma

Benzetme kullanma

Tüm dünya bir sahnedir."

– İngiliz şair, oyun yazarı ve aktör William Shakespeare

Teknik 2: Harika hikayeler anlatma

"Tarih, hikayeler biçiminde öğretilseydi, asla unutulmazdı."

– İngiliz yazar, Rudyard Kipling
Screenshot 2024-04-25 at 22 26 14

Harika hikayeler anlatmanın dört adımı

  • canlı bir ortam
  • ana karakter için bir sorun
  • karakterimiz sorunla nasıl mücadele ediyor
  • en can alıcı nokta ve sonuç

Teknik 3: Fiziksel sahne donanımı veya ayırt edici görsel resimler kullanma

  • Steve Jobs'un karton zarfı, sahne donanımına bir örnektir
  • Sahne donanımı seçiminize dikkat edin. "Fazla ilginç" olan bir nesne seçerseniz, hedef kitleniz sizi dinlemeyi bırakacaktır.

Teknik 4: Hedef kitlenizi tartışmaya dahil etme

hedef kitlenize sorular sorarak veya küçük tartışmalar başlatarak onların ilgisini çekebilirsiniz. Hedef kitle, genellikle soruların sunumun sonunda sorulmasını bekler, ancak sunumun ortasında veya sunum boyunca sorular sorarak onları şaşırtabilirsiniz.

  • Hedef kitlenizi izleyicilerden katılımcılara dönüştürebilirsiniz
  • Anlatmaktan tartışmaya geçebilirsiniz

Teknik 5: Kontrollü, ancak canlı bir şekilde konuşma ve hareket etme

"İki tür konuşmacı vardır: gergin olanlar ve yalancılar."

– Amerikalı yazar, Mark Twain
Screenshot 2024-04-25 at 22 35 42

-Soru-Cevap oturumunu ne zaman yapmalısınız?

Çoğu sunum, Soru-Cevap ile sona erme eğilimi gösterir. Bazen bu oturumlar, sunum yapan kişi için sürprizler oluşturabilir. Hedef kitlenin bir üyesinden gelen bir soru sunumunuzun yönünü saptırabilir. İnsanların en son duydukları bilgileri hatırlama eğiliminde oldukları göz önüne alındığında, Soru-Cevap kısmını sona bırakmaktan kaçının. Hedef kitlenin sorulan soruları veya verilen cevapları hatırlamasını istemezsiniz. İdeal olarak, sunumunuzun ana mesajını hatırlamalarını istersiniz veya zihinlerinde bir eylem çağrısı veya benzeri bir ifade uyandırmak isteyebilirsiniz.

Bunu birkaç yolla sağlayabilirsiniz. Örneğin, sunum boyunca Soru-Cevap molaları verebilirsiniz. Bu yöntem, siz ve hedef kitleniz için gerekli olan ve fazlasıyla ihtiyaç duyulan molayı sağlarken, şüpheleri netleştirmenize yardımcı olacaktır. Sonunda Soru-Cevap için biraz zaman ayırmak isteseniz bile bu sorun olmaz. Sunumu belirsiz veya yetersiz biçimde sona erdirmekten kaçınmak için Soru-Cevap bölümünden sonra kapanış yorumlarınızı sunmayı unutmamanız yeterlidir.

Yazılım Alanlarını Tanıyalım 1 : Siber Güvenlik

https://www.youtube.com/watch?v=y-xthksY0yY&t=3s

IBM ile Kodluyoruz: CyberStart 🐍 Neden Python Programlama Dili? - 30.04.2024

Screenshot 2024-04-30 at 16 13 04

https://medium.com/kodcular/python-neden-bu-kadar-pop%C3%BCler-d7f0f6819de5

------ makale alıntısıdır ------

Her dönem tercih edilen Python’un son dönemlerdeki kullanımı ise ciddi bir ivmelenme gösterdi. İşte bu hızlı artışın nedenleri:

    1. Aktif Kullanıcı Toplulukları
    1. Sponsor Desteği
Screenshot 2024-04-30 at 16 18 37
    1. Büyük Veri’de Python
    1. Sahip Olduğu Geniş Kütüphane
Screenshot 2024-04-30 at 16 19 27
    1. Güvenilir ve Etkili
    1. Ulaşılabilir

------ son ------


About


Languages

Language:Python 100.0%