27 Kasım 2017 Pazartesi

Sql Server T-Sql Notları



Sql query'leri tabify (formatlı) yapmak için:

http://www.dpriver.com/pp/sqlformat.htm



-String üzerinden hash üretme

HashBytes('MD5', [Sentence]) as hash  > varbinary to string ?
select cast(@b as varchar(max)) - olmadı
SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);

-Sayfalama

FROM [TableX]
Order by Id --(mecburi)
  OFFSET (500000) ROWS FETCH NEXT (10000) ROWS ONLY
 
 

-String içerikte tümü büyük harf olanları bulma

select top 1000 * from [Table] 
where Text COLLATE Latin1_General_CS_AI = Upper(Text)
  
  

-Bir kelimenin text de kaç defa geçtiğini bulmak  

 SELECT CHARINDEX ( 'TEST',  
       'This is a Test'  
       COLLATE Latin1_General_CS_AS);
  
https://www.dbrnd.com/2016/02/sql-server-tsql-script-to-find-count-the-number-of-occurrences-of-a-string/
http://dataeducation.com/counting-occurrences-of-a-substring-within-a-string/

 

-ESCAPE 

WHERE LargePhotoFileName LIKE '%greena_%' ESCAPE 'a' ;  
Using WHERE with LIKE and ESCAPE syntax
and uses the ESCAPE option because is a wildcard character. Without specifying the ESCAPE option, the query would search for any description values that contain the word green followed by any single character other than the character.  


String Functions


https://docs.microsoft.com/en-us/sql/t-sql/functions/string-functions-transact-sql

20 Ağustos 2017 Pazar

İstemciye göre ASP.Net MVC Core yanıt formatı için Global Filter uygulaması

2008 Yılında Microsoft ASP.Net MVC Framework'ü yayınladığında fikir veya çözüm olarak ilk kez ortaya çıkmış olmasa da yaygınlaşmasına ön ayak olmuştur.
Bu sayede yazılım geliştirme yapanlar için bazı temel değerler de yaygınlaşmaya başladı.
Bunlardan bazıları "seperation of corserns" ve "decoupling". Yani geliştirilen çözümün parçalarını birbirinden soyutlayarak farklı alanlarda fayda sağlama.

Sql Server Full Text Search Oluşturma ve kullanım

Index oluşturma ve tanım aşamaları


Burada ftCatalog, Index'e verilen isim:
CREATE FULLTEXT CATALOG ftCatalog AS DEFAULT;

Tablonun bir Primary Key index'i olmalı:
-SalesLT schema. Default dbo olarak alınabilir. ProductDescription ise Tablo adı.
CREATE FULLTEXT INDEX ON SalesLT.ProductDescription(Description) KEY INDEX ui_ukProductDescription ON ftCatalog; 
Var olan veriden Full text index oluşturmak için:
ALTER FULLTEXT INDEX ON SalesLT.ProductDescription ENABLE; 
GO 
ALTER FULLTEXT INDEX ON SalesLT.ProductDescription START FULL POPULATION;


1 Ağustos 2017 Salı

Azure üzerinde "Continuous Delivery" tanımları ve anahtar noktalar



Visual Studio ile geliştirilen projeyi Azure üzerinde yayına almak için yeni bir "Publish Profile" oluşturulabilir ve sonradan istenildiği anda geliştirmeler bu tanım üzerinden doğrudan yayına alınabilir:
https://docs.microsoft.com/en-us/aspnet/core/tutorials/publish-to-azure-webapp-using-vs

Projeyi yayına almak için diğer alternatif yöntemler:
https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-deploy

Genel olarak .Net Core ile geliştirilen projelerde hem Azure üzerinden hem VSTS üzerinden standart şablonlar ile CI/CD tanımlarını yapmak problemli. (Temmuz 2017 itibariyle).
Dolasıyla hem entegrasyonu çalışır hale getirmek hemde ihtiyaçları karşılaması amacıyla oluşturulan şablonları düzenlemek gerekiyor.


Azure CLI

Azure portal'e giriş yapmadan https://shell.azure.com ya da Azure CLI tools kullararak alttaki komutlarda slot swap işlemi gerçekleştirilebilir

azure site -h > To list the commands available for Azure App Service in the Azure CLI

azure site list

azure site list lingo-member > will list lingo-member and lingo-member-staging

azure site swap lingo-member > Swap slot "staging" from site "lingo-member" with slot "production" ? [y/n]

---cli swap
az webapp deployment slot swap -g lingo-live -n lingo-member -s staging
---log download
az webapp log download -n lingo-parse -g lingo-live


Geliştirme ortamından yayına alma süreci


Kalitenin korunması başta olmak üzere diğer nedenlerle birlikte önerilen yöntem otomasyon sürecinin oluşturulması.
Geliştirme ortamından yayına alma sürecinde yaşanabilecek olumsuzluklar:

Problemler

Geliştirme ortamından Azure ortamında aktarım yaparken karşılaşılabilecek hatalardan biri;

24 Temmuz 2017 Pazartesi

Hyper-V üzerinde Ubuntu kurulumu ve düşündürdükleri



VMWare ya da Virtual Box ile sanal Linux kurulumu genellikle problemsiz olmakta.
Hatta buradan çalıştırılmaya hazır sanal Linux kurulumları indirilebilir: http://www.osboxes.org/


Hyper-v üzerinde dikkat edilmesi gerekenler:

Aşağıdaki adımlar Lubuntu 17.04 64bit üzerinde uygulanmıştır.

Sanal disk oluşturma

Standart tanımlar ile bir Ubuntu kurulumu 9GB olarak yer kaplamakta.
Burada belirtilen yöntem ile önce sanal disk oluşturulmalı. Power shell ile:
PS > New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Dynamic -BlockSizeBytes 1MB

https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/best-practices-for-running-linux-on-hyper-v

Devamında sanal makinayı oluştururken üstteki yöntem ile oluşturulan sanal disk seçilmeli.

Integration services problemleri

Sanal Linux ancak Hyper-V ile sağlanan "Integration Services" etkinleştirildiğinde performanslı çalışmakta. Bununla birlikte ekran, clipboard, dosya paylaşımı gibi özellikler de aktif olmakta.
Sanal bilgisayar ayarlarından Settings/Management> Integration services adımında aktif olan seçenekler görülebilir. Guest services aktif edilmeli.

https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/supported-ubuntu-virtual-machines-on-hyper-v
Bu dökümandaki tanıma göre gerekli sürücüler zaten Linux kernel ile birlikte gelmekte. Ama malesef beklendiği gibi istenen özellikler çalışmıyor.

Burada 6. adım takip edilmeli.

Düzgün çalışmayan özelliklerden biri ekran ayarları. Düzenlemek için:
https://blogs.msdn.microsoft.com/virtual_pc_guy/2014/09/19/changing-ubuntu-screen-resolution-in-a-hyper-v-vm/

vi kullanımı sıkıntılı olduğu için text dosya düzenlemesinde gedit kullanılabilir:

Dosya paylaşımı

https://www.tectut.com/2015/02/hyper-v-file-sharing-between-and-host-and-guest/
Linux üzerinde yapılan tanımarda gerekli kullanıcı adı şifre bilgileri, windows da oluşturulmalı ve bu kullanıcıya paylaşılan dizin üzerinde yetki tanımlanmalı.