Thread overview
Pazar Sohbeti: 12 Haziran'22, TSİ.11
Jun 01, 2022
Salih Dincer
Jun 05, 2022
Salih Dincer
Jun 06, 2022
Salih Dincer
Jun 11, 2022
Ali Çehreli
Jun 11, 2022
Salih Dincer
Jun 12, 2022
Ali Çehreli
June 01, 2022

Bu Pazar, Türkiye saati ile 11'de...
12/06/22-TSİ.11

**Erişim için: ** https://meet.jit.si/Ddili

Geçen ay önemli bir kilometre taşı olduğunu düşündüğüm v2.100.0 (hayır psikolojik bir sayı değil, farklı olaylar var, konuşacağız...) yayınlandı. Müsaadenizle ilk konu başlığımız veya başlıklarımız bunun üzerine olsun:

  • Alt başlıkları dolduracağız...

Ayrıca 2 ay sonra Londra'da DConf '22 BeerConf gerçekleştirilecek. Bence bunu kritik etmenin tam zamanı çünkü temmuz ayında tatile çıkmış olabiliriz. Buradan eminim çok alt başlık çıkacak:

Bir de alt alt başlıklardan biri yabancı forumdaki tartışmalar olabilir mi? Özellikle ilk başlıkla alakalı eleştiriler var. Sanırım yeni sürümde beğenilmeyen noktalar var. Özellikle kendini Satoshi olduğunu iddia eden biri tarafından argo sözcüklerle dolu konular açılmış durumda. Geçmişte kendisi konuşmacı da olmuş ve sanırım Walter tarafından eleştirilmeyen serbest bırakılan biri ama şahsen ben de bu tür tartışmaların D camiasına zarar verdiğini düşünüyorum.

Hoş, gereksiz uzun uzadıya devam eden konular da öyle belki de hiç değinmeyiz bu başlığa.

Sevgiler, saygılar...

June 05, 2022

On Wednesday, 1 June 2022 at 02:16:09 UTC, Salih Dincer wrote:

>

Yukardakilere önceki ayın konusunu ekleyebilir miyiz?

  • async/await

Neden mi? Duyduğuma göre Steven, libasync üzerine çalışıyormuş. Öte taraftan konferans sonrasına da erteleyebiliriz ya da kısaca değinebiliriz. Ne dersiniz?

Çünkü kütüphane tarafına yeni bir güncelleme gerekecek sanırım. Öyle ya, en son sürümde değişen birçok şey ve etkilenenler var. Gelen tepkiler yakın bir güncelleme ile karşılaşacağımızın göstergesi.

Bu arada son 1 hafta, başka konu başlığı eklemek isteyen var mı?

Sevgiler...

June 05, 2022

On Sunday, 5 June 2022 at 00:31:44 UTC, Salih Dincer wrote:

>

Sevgiler...

Salih hocam, açık kaynak dünyasında daha özgüvenli davranmam için düzenli bir işim olması gerektiğine karar verdiğim için memurluk sınavlarına hazırlanmaya karar verdim. Bu sebeple Ekim ayına kadar sohbetlerinize katılmayacağımı tahmin ediyorum.

Ama çalışmalarınıza devam etmeniz aramıza sonra katılacağını umduğum diğer arkadaşlarımız için ne kadar donanımlı insanların bir araya gelip verimli tartışmalar yaptığını görebilecek ve tahminimce burada da aralayacak bir kapı bulmaya çalışacaklardır.

June 06, 2022

On Sunday, 5 June 2022 at 18:46:18 UTC, İsmail Emre ARIKAN wrote:

>

On Sunday, 5 June 2022 at 00:31:44 UTC, Salih Dincer wrote:

>

Sevgiler...

Salih hocam, açık kaynak dünyasında daha özgüvenli davranmam için düzenli bir işim olması gerektiğine karar verdiğim için memurluk sınavlarına hazırlanmaya karar verdim. Bu sebeple Ekim ayına kadar sohbetlerinize katılmayacağımı tahmin ediyorum.

Bize bildirmen çok iyi oldu çünkü geçen ay neden gelmediğini merak ettik :)

Bir de hakkını helal et lütfen, seni Hüseyin ile karıştırdım. Demek ki gönlüm senden yazı bekliyormuş, merak ediyormuş.

İş hayatında başarılarbdilerim...

June 11, 2022
On 5/31/22 19:16, Salih Dincer wrote:
> **Bu Pazar, Türkiye saati ile 11'de...**
> 12/06/22-TSİ.11
>
> **Erişim için: ** https://meet.jit.si/Ddili

Hatırlatıyorum...

Ali

June 11, 2022

On Saturday, 11 June 2022 at 16:26:18 UTC, Ali Çehreli wrote:

>

Ben o tersten okuma konusunu anlamıyorum. Bir sonraki toplantıda konuşalım.

Şu başlık hakkında nur topu gibi bir konumuz oldu ama bir başlangıç yapayım:

void main()
{ /* Önce insancıl şekilde 2x3 formda kutularımızı yazalım...
   * Bu matematikteki matris derslerine çok benziyor: [X/Y]
   */
  enum
  {
    sat = 2,
    süt = 3
  }

  void kutuYaz(int satır, int sütun, int doluOlan = 0)
  {
    enum kutu
    {
      boş = "[ ]",
      dolu = "[x]"
    }
    const d = (doluOlan - 1) / sütun;
    const m = (doluOlan - 1) % sütun;

    for(int x; x < satır; x++)
    {
      for(int y; y < sütun; y++)
      {
        string s = (x == d && y == m) ?
                   kutu.dolu : kutu.boş;
        s.write;
      }
      writeln;
    }
  }

  kutuYaz(sat, süt, 6);
/*
  birDizi[sat-1][süt-1] = true;
  birDizi.writefln!"%-(%-(%s %)\n%)";

ÇIKTISI:
=========
[ ][ ][ ]
[ ][ ][x]

Görüldüğü gibi 2 satır ve 3 sütun halinde 6 kutumuz var ve
bu kutulardan en sondaki 6.'yı doldurduk. İsteseydik aynı
sıradaki parametreler ile dizi olarak da yapabilirdik ama
öncesinde şunu farklı sırada tanıtmalısınız:            */

  auto birDizi = new bool[süt][sat];

// Tabi bir fark daha var, diziler 0'dan başlar...
}

En önemli farkı da yarın sabah saat 11'de görüntülü sohbetimizde işleriz. Hatta şu dersin konusuna da değinsek ha:

Dynamic Arrays

Gerçi burada D'de anlatmamış. Ne güzel olurdu böyle bir vidyo ile anlatsak ve bunu kaydedip Youtube alemine koysak?

Saygılar...

June 12, 2022
Şunları karaladık:


/*

  DDili sohbet - 12 Haziran 2022

  - dmd 2.100

  - DConf ve BeerConf

  - "Why is D unpopular?" gibi konular

  - async/await

  - Dizi tanımı söz dizimi

*/


/+
struct S {
  int i;
  int j;

  invariant() {
    assert(i == 10 * j);
  }
}

version (D_PreConditions) {
  import std.format;
}


void foo(int i)
in (i > 42, format!"i yanlış: %s"(i))
{
}

void bar(int i)
in (i <= 42, format!"i yanlış: %s"(i))
{
}

void main() {
}
+/


/+
@mustUse
struct Hata {
  int kod;
}

Hata foo() {
  return Hata(42);
}

void main() {
  foo();
}
+/





/+
import std.traits;
import std.stdio;

auto çiftle(T)(T değer)
if (isIntegral!T) {
  return 2 * değer;
}

auto çiftle(T)(T değer)
if (isSomeString!T) {
  return değer ~ değer;
}

void main() {
  writeln(5.çiftle);
  writeln("hello".çiftle);
}
+/




// Go ile Brand X'in karşılaştırılması:
// http://cowlark.com/2009-11-15-go/




/+
import std.stdio;
import std.array;
import std.exception;

struct Yumurta {
  // invariant() { // Error
  // }
}

Yumurta[] sepet;

Yumurta yumurtaSeç() {
  // Error
  // assert(!sepet.empty, "Yumurta kalmamış.");

  // Exception
  enforce(!sepet.empty, "Yumurta kalmamış.");
  // enforce'un aynısı
  // if (sepet.empty) {
  //   throw new Exception("Yumurta kalmamış.");
  // }

  auto y = sepet.front;
  sepet.popFront();

  return y;
}

struct Tabak {}

Yumurta[] sote;

static this () {
  sote.length = 10;
}

Tabak yumurtaYap() {
  auto y = {
    try {
      return yumurtaSeç();

    } catch (Exception exc) {
      writeln("Yumurta kalmamış; gizliden kullanıyorum.");
      auto y = sote.front;
      sote.popFront();
      return y;
    }
  }();

  // ...
  return Tabak();
}

void program() {
  Tabak tabak = yumurtaYap();
  writeln(tabak);
}

int main() {
  try {
    program();

  } catch (Exception hata) {
    stderr.writefln!"HATA: %s"(hata.msg);
    return 1;
  }

  return 0;
}


// https://medium.com/hackernoon/im-harvesting-credit-card-numbers-and-passwords-from-your-site-here-s-how-9a8cb347c5b5

+/





/+
import std;
import core.thread;

void işçiImpl(size_t i) {
  while (true) {
    ownerTid.send(i);
    Thread.sleep(10.msecs);
    const r = uniform(0, 5);
    assert(r != 3);
  }
}

void işçi(size_t i) {
  try {
    işçiImpl(i);

  } catch (Exception exc) {
    ownerTid.send(cast(shared)exc);

  } catch (Error err) {
    puts("Error oldu.");
    import core.stdc.stdlib;
    exit(1);
  }
}

void main() {
  enum n = 4;
  iota(n).each!(i => spawnLinked(&işçi, i));

  size_t sonlanan;
  while (sonlanan < n) {
    receive(
      (const(LinkTerminated) msg) {
        ++sonlanan;
      },

      (const(Exception) exc) {
        writeln("Hata: ", exc.msg);
      },

      (size_t i) {
        writeln(i);
      });
  }
}
+/






/+
import std;

void main() {
  int[3] arr = [ 1, 2, 3 ];

  foreach (i, e; arr) {
    writeln(i, " - ", e);
  }

  auto r = arr.each!(e => e * 10);
}
+/





/+
import std.stdio;
import std.range;
import std.algorithm;
import std.functional;

void printWithLineNumbers(File f)
{
    // f.byLine
    //     .enumerate
    //     .each!(bind!((num, line) {
    //         writefln("%8d %s", num, line);
    //     }));

  // f.byLine
  //       .enumerate
  //       .each!(t => writefln("%8d %s", t[0], t[1]));

  f.byLine
        .enumerate
        .each!(t => writefln("%8d %s", t.index, t.value));
}

void main() {
  printWithLineNumbers(stdin);
}
+/





/+
import std;

void main() {
  int[2][3] a1;
  auto a2 = new int[2][3];


  // auto a3 = new int[][](3, 2);

  /*
    length
    ptr

    length
    ptr

    length
    ptr
  */

  a1[2][1] = 42;
  a2[2][1] = 42;
  // a3[2][1] = 42;

  writeln(a1);
  writeln(a2);
  // writeln(a3);
}
+/

Ali