Kayıtlar

scala etiketine sahip yayınlar gösteriliyor

Sbt #2: Proje yonetimi

Resim
Postun basligi iki yillik bolum adi gibi oldu ama idare edelim.  IntelliJ Yeni projesi Oncelikle IntelliJ ile bir sbt projesi olsuturuyoruz. (IntelliJ community edition ucretsiz ve scala plugini de kurulabiliyor). Sbt'nin de sisteminizde yuklu oldugunu varsayarak (onceki postta bahsetmistik), yeni proje'ye tikliyoruz ve sbt'yi seciyoruz. Projeye bir isim verim tamam'a tikliyoruz. Akabinde IntelliJ hemen build.sbt'yi yuklemeye baslayacak ve karsimiza su sekilde bir klasor yapisi cikacaktir: build.sbt'ye goz atarsak, 3 adet key tanimlanmis oldugunu goruyoruz. Ek olarak IntelliJ spesifik dosyalari ve de projeyi build ettikten sonra olusan artifactlari source repository'e gondermemek icin bir .gitignore dosyasi olusutup su iki satiri ekliyoruz: .idea/ target/ Sub-project yapisi Genisletilebilir (extensible) bir proje yapisi elde etmek icin proje icerisinde sub-proje'ler olsuturmak yaygin bir yaklasim. Bu sayede buyuk bir projenin alt sistemlerini izole veya

Sbt #1 : Temeller

Resim
 Sbt, scala icin var olan en populer build system'lerden bir tanesidir. Peki neden bir build system kullanmaliyiz? 1. compile 2. dependency management 3. test 4. package Bu asamalarin hepsini manuel olarak yapmak heralde cok sacma olacaktir.  Sbt, 2008'de ortaya cikiyor.  Ilk ciktiginda ismi simple build tool seklinde olsa da sonra scala build tool olarak degistiriliyor. Ancak gunumuzde java ve scala projeleri icin kullanilabildiginden artik o anlamini da yitirdi ve sbt bir anlama gelmiyor. Java build tool'lari olan Maven ve Ant ile ayni isi yapiyor denilebilir. Gelistirilmesi ise komunite ve Lightbend (scala ve ekosisteminin arkasinda olan sirket) tarafindan gerceklestiriliyor ki arkasi saglam. Sbt'nin baslica ozellikleri: 1. Zero config: cok az bir konfigurasyon gerektirmesi 2. Testing: scala-test, junit, scala-check ve specs testing frameworkleri ile iyi integrasyon saglar 3. Incremental compilation: proje ve testler icin incremental compilation saglar 4. Multi-p

Spark #11 : Örtük dönüştürmeler

Resim
Bugun Scala implicit conversions'dan bahsediyoruz. Mesela ki, bir sekilde, iki integer toplamak istedigimde soyle bisey yapmak istiyorum: scala> 1.plus(1) <console>:24: error: value plus is not a member of Int        1.plus(1)       ^ Tabi boyle bisey yok. O zaman bir case class tanimliyorum: scala> case class IntExtensions(value: Int){          |     def plus(operand: Int) = value + operand          | } defined class IntExtensions ve daha sonra: scala> IntExtensions(1).plus(1) res8: Int = 2 Bu sekilde calistirabilirim. Ama bu cok cirkin ve cok uzun. Her seferinde IntExtensions class'ini kullanmak istemiyorum. O zaman scala'nin implicit conversions guzelligini sahneye davet ediyorum: scala> import scala.language.implicitConversions import scala.language.implicitConversions ve daha sonra implicit ve fonskyion tanimliyorum ki her bir integer'e, IntExtensions muamelesi yapabileyim: scala> implicit def intToIntExtensions(value: Int) = {         | IntExt