SQL’de önceki ve sonraki kayıt

SQL de önceki ve sonraki kaydı bulmak için hazır bir komut yok ama bunun için şu komutları kullanabiliriz.

id name
17 kayit1
42 kayit2
9 kayit3
77 kayit4
65 kayit5
Önceki


SELECT top 1 name FROM db where id<42 order by id desc


SELECT top 1 name FROM db where id>42 order by id

SQL’de kullanışlı sorgular

Belirli bir kolon adını bütün veri tabanındaki tablolarda aramak için:

(find column name in database tables)


SELECT c.name AS 'Kolon'
,t.name AS 'Tablo'
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%ARANACAK%'
ORDER BY t.name
,c.name;

Tablo ve Viewlerde aramak için:

(find column name in database tables and views)

SELECT COLUMN_NAME AS 'Kolon'
,TABLE_NAME AS 'Tablo'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%ARANACAK%'
ORDER BY Tablo
,Kolon;

Tekrar eden satırları silmek

(remove duplicate rows)

DEMO


CREATE TABLE Table1([col1] varchar(5), [col2] int, [col3] int, [col4] int, [col5] int, [col6] int, [col7] int);

INSERT INTO Table1
([col1], [col2], [col3], [col4], [col5], [col6], [col7])
VALUES
('john', 1, 1, 1, 1, 1, 1),
('john', 1, 1, 1, 1, 1, 1),
('sally', 2, 2, 2, 2, 2, 2),
('sally', 2, 2, 2, 2, 2, 2),
('sally', 2, 2, 2, 3, 2, 2)
;

SELECT * FROM dbo.Table1

;WITH CTE AS(
SELECT [col1], [col2], [col3], [col4], [col5], [col6], [col7],
RN = ROW_NUMBER()OVER(PARTITION BY col1 , col2 , col3 , col4 , col5 , col6 , col7 ORDER BY col1)
FROM dbo.Table1
)
DELETE FROM CTE WHERE RN > 1

SELECT * FROM dbo.Table1

İki tarih arasını ay bazlı olarak listelemek

(get all months and years between two dates)
DEMO


DECLARE 
      @start    DATE = '01.01.2018'
    , @end        DATE = '09.09.2018'

;WITH cte AS 
(
    SELECT dt = DATEADD(DAY, -(DAY(@start) - 1), @start)

    UNION ALL

    SELECT DATEADD(MONTH, 1, dt)
    FROM cte
    WHERE dt < DATEADD(DAY, -(DAY(@end) - 1), @end)
)
SELECT AY = MONTH(DT), YIL = YEAR(DT)
INTO #Dates FROM cte
option (MaxRecursion 0);

SELECT * FROM #Dates

DROP TABLE #Dates

IOS deep linking ve universal links nedir & nasıl yapılır

Deep linking, türkçe ifade etmeye çalışırsak: derin bağlantılama;

Bildiğiniz gibi, bağlantıları web sitelerin içeriğine ulaşmak için kullanırız,

http://www.ftorun.com gibi veya site içerisindeki bir bağlantı

http://www.ftorun.com/programlama/c-sharp/webconfigde-deger-tutmak.aspx gibi.

Bu adresler sizin direk olarak istediğiniz web sayfayasına ulaşmanızı sağlar.

Ancak bir mobil uygulama geliştirdiysek ve uygulama içerisindeki bir sayfaya direk ulaşma ihtiyacımız olursa ne yapacağız, bu tarz durumlar için URL şemaları tanımlamamız gerekiyor. Uygulamamızı oluştururken mesela myapp şemasını kullanmayı seçtiğimiz zaman myapp:// yazarak herhangi bir başka uygulama üzerinden veya web sitesinden uygulamanızı kolayca açabilirsiniz.

Peki uygulamanızın içerisindeki özel bir içeriğe bu adresten direk ulaşmak istersek ? O zaman da myapp://takvim yazarak içerisine takvim parametresini göndermiş oluruz, burada gönderdiğimiz parametre tamamen bize kalmış bu noktada hiyerarşik düzenli bir yapı kullanarak uygulamanın bütün alanlarına kolayca dışarıdan erişim sağlayabiliriz.

Peki ama bizim bir web sitemiz var ve bu web sitesine uyumlu bir de mobil uygulama yaptık.  Mobil  uygulama üzerinden web sitesine girmeye çalışıldığında da uygulama yüklüyse uygulamanızın ilgili kısmının açılmasını istiyoruz. Eminim bu şekilde çalışan bir çok uygulama görmüşsünüzdür. Şimdi kendi uygulamanızda bunu nasıl gerçekleştirebileceğinizi anlatmaya çalışacağım.

IOS 9dan önce web sitenizi uygulamanız ile entegre etmek için webden mobil cihazı algılayıp kendi custom şemanıza yönlendirme yapmanız gerekiyordu, IOS 9 ile birlikte apple “IOS Universal Link” sistemini getirdi, böylelikle uygulamanız ve web siteniz ortak bir şemayı kullanabilecek.

Peki neler yapmamız gerekiyor.

1. Apple geliştirici sitesinden App Id  Associated Domains düzenlemesi: developer.apple.com sitesine girip App IDs kısmından uygulamanızı daha önceden oluşturmuş olmalısınız, oradan edit seçeneğini seçerek Associated Domains özelliğini aktif yapalım.

2. XCode projemizden uygulamamızın Capabilities kısmını aktif edip ardından aşağıda yer alan domains kısmından applinks:www.mywebsite.com şeklinde ekleyelim.

3.Web sitemizde yapmamız gereken düzenlemeler: web sitemizin bize ait olduğunu ve onu mobil uygulamanın yansıması olarak kullanacağımızı apple’a (bir nevi) inandırmak için uygulamamızın ana dizinine apple-app-site-association isimli bir dosya oluşturmamız gerekiyor.

Kısaca AASA (apple-app-site-association) dosyası da denilen bu dosyanın yapısı şu şekilde olmalı:

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": “JHGFJHHYX.com.facebook.ios",
        "paths": [
          "*"
        ]
      }
    ]
  }
}

Dosyayı oluşturduktan sonra uygulamanın ana dizinine eklediğinizde ve şu adrese girdiğinizde dosyayı gördüğünüzden emin olun

https://<<sitenizin_adresi>>/apple-app-site-association 

ayrıca şunlara dikkat edin:

  • Dosyanın uzantısı olmadığından emin olun, adı direk “apple-app-site-association” olsun.
  • Siteniz HTTPS üzerinde çalışmalı.
  • Sunucunuzda application/json MIME tipi tanımlanmış olsun.
  • dosyanın büyüklüğü 128kb ı geçmemeli.

işiniz bittiğinde bu siteden kontrol edebilirsiniz:

https://branch.io/resources/aasa-validator/#resultsbox

Artık uygulamamıza IOS evrensel bağlantılarını neredeyse kurduk ve web sitemiz ile bağladık geriye bir tek bunu uygulamanın içerisinden yakalamak kaldı.

Uygulama içerisinde appdelegate içinden

application:continueUserActivity:restorationHandler

metodunu kullanarak gelen adres içeriğine ulaşabiliriz,


func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    print("Continue User Activity called: ")
    if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
        let url = userActivity.webpageURL!
        print(url.absoluteString)
    }
    return true
}

Algoritma ve Akış Diagramları

ALGORİTMANIN HAZIRLANMASI

Algoritma,herhangi bir sorunun çözümü için izlenecek yol anlamına gelmektedir.Çözüm için yapılması gereken işlemler hiçbir alternatif yoruma izin vermeksizin sözel olarak ifade edilir.Diğer bir deyişle algoritma verilerin bilgisayara hangi çevre biriminden girileceğinin,problemin nasıl çözüleceğinin,hangi basamaklardan geçirilerek sonuç alınacağının,sonucun nasıl ve nereye yazılacağının sözel olarak ifade edilmesi biçiminde tanımlanabilir.

Algoritma hazırlanırken,çözüm için yapılması gerekli işlemler,öncelik sıraları gözönünde bulundurularak ayrıntılı bir biçimde tanımlanmalıdırlar. Aşağıda algoritma hazırlanmasına ilişkin örnekler yer almaktadır.

ÖRNEK 1:Verilen iki sayının toplamının bulunmasının algoritması aşağıdaki gibi yazılır:

AlgoritmaAdım 1-Başla
Adım 2-Birinci sayıyı oku
Adım 3-İkinci sayıyı oku
Adım 4-İki sayıyı topla
Adım 5-Dur

Algoritmaya dikkat edilirse işlemlerin sıralanmasında,işlem önceliklerinin gözönünde bulundurulduğu görülür.Ayrıca algoritma yazımı sorun çözümünün başladığını gösteren “BAŞLA” ifadesi ile başlamakta ve işlemlerin bittiğini belirten “DUR” ifadesi ile sona ermektedir.

AKIŞ ŞEMALARI(DİYAGRAMLARI)

Continue reading

SQL Dersleri – 1

Bu yazıda SQL komutlarının işlevlerini örneklerle anlatmaya çalışacağım umarım birilerine faydası dokunur.

Kısaca SQL‘den bahsedersek; SQL, ingilizce “Structured Query Language” kelimelerinin baş harfleri ile oluşturulmuş olup türkçesi “Yapısal Sorgulama Dili” dir, bir programlama dili değildir. SQL ile veri tabanı üzerinde işlem yapabilir,kayıt ekleyebilir, olan kayıtlar değiştirebilir, silebilir veya bu kayıtlardan listeler oluşturulabiliriz.

başlıca sql komutları

CREATE TABLE tabloAdı

–Yeni bir tablo yaratmak için kullanılır.

ALTER TABLE tabloAdı

–Sütun eklemek, sütunun tipini veya uzunluğunu değiştirmek veya yapısal değişiklikler yapılması için kullanılır.

DROP TABLE tabloAdı

–Tabloyu silmek için kullanılır.

CREATE VIEW goruntuAdı

–SQL görüntüsü oluşturmak için kullanılır.

DROP VIEW goruntuAdı

–Görüntüyü siler.

CREATE INDEX indeksAdı

–Tablonun veya (en azından bir) sütun adı üzerinde indeks oluşturmak için kullanılır.

DROP INDEX indeksAdı

–Yaratılan indeksleri veri tabanından kaldırmak için kullanılır

Veri işlemleri için:

–SELECT :

SELECT ad,soyad uyeler yas=16

–Yaşı 16 olan üyelerin ad ve soyadlarını gösterir

–UPDATE :

UPDATE uyeler SET ad = ‘ali’ WHERE soyad = ‘pazarcı’

–soyadı ‘pazarcı’ olan üyelerin adını ‘ali’ ile değiştir

–INSERT :

INSERT INTO uyeler VALUES (‘Ahmet’, ‘Küçükoğlu’,26)

–Yeni bir kayıt ekler

–DELETE :

DELETE FROM uyeler WHERE yas>40

–yaşı 40 dan büyük olan üyeleri siler