Fegeya Komitesi
 Resm
i
 Gazetesi



Tarih: 1/0
8
/21

Ele alinacak konular
:
 * 
Gretea
 (syf: 2)
 * 
curl4cpp
 (syf: 3-4)
 * 
Gretea standart kutuphanesi
 (syf: 5-6)

Kose yazi/lari
:
 * 
fasht
 karma kod (hash) algoritmasi. (syf: 7)
 * 
Elite
'ye ne eklendi yine? (syf: 8)
 * 
escafe
 de ne yahu!? (syf: 9)

Ek
:
 * Sunucuda yapilan degisikliklerin siralanmasi.
 * Kucuk degisiklikler.


Gretea
 degisiklikleri?
------------

Gretea
'ya yeni, guzel mi guzel ozellikler eklendi.

Bunlardan birisi acikcasi bana gore 
compile
 
anahtar kelimesidir. Ne katiyor gelin bakalim:

Surekli yeni degiskenler olusturuyorsunuz diyelim,
hepsine benzer verileri atamak sizin icin zor olmali.

Gretea
'ya eklenen 
compile
 anahtar kelimesi ile 
turlere farkli farkli evrensel varsayilan degerler
atamaniz mumkun:

  
compile
 
default
 for 
string
 {
    "Her \'default\'u kullandigim zaman, okudugunuz dizeyi atayacak"
  }

  
var
 test: 
string
 = [[ 
default
 ]]
            ^^^^^^   ^^ ^^^^^^^ ^^
              x      y     z     y

x: 
compile
'i kullanabilmemiz icin oncelikle tur tanimini 
yapmamiz gerekir. 

y: bildiniz 
Gretea
 belirteclere sahip, boylece derleyici tarafindan
belirlenmis ozellikleri degistirebiliyoruz.

z: iste burasi belirtec ozelligidir, az once 
compile
 default 
icin ~
derlemistik
~, belirtec bize bu tur icin uygun bir surekleme
oldugunu belirtiyor, derleyici de bunlari evrensel 
compile
 listesinden
cekerek yerlestiriyor.

"
Eeee? Bu kadar mi yani?
" dediginizi duyar gibiyim, bir diger ozellik ise
unsafe
'ye yeni eklenen ozelliktir.

Gretea
'da her degiskene bir veri, deger (ya da her ne diyorsaniz) atamaniz
bir zorunluluktur, diger turlu hicbir sey atanmamis bir deger sorunlar 
yaratabilir.

Iste burada 
unsafe
'ye yeni bir is dusuyor:

Artik veri atamak zorunda degilsiniz (
ama atama yapmayip da sonradan 
soylenmek yok
tamam mi
?):

  
var
 test: 
string
 = [[ 
unsafe
 ]]
            ^^^^^^   ^^ ^^^^^^ ^^
               x     y    q     y

x: ustte var
y: ustte var
q: 
unsafe
 de bir diger belirtec ozelligidir, bununla derleyicinin
kisitlamalarini kaldirabilirsiniz. Bu 
C++
 ve 
C
 baglayicilarinda kullanilabilir.
Derleyici tarafindan kisitli olaylar projenin calistirilmasi esnasinda olabilecek
bellek tasmasi gibi olaylari engellemek icin var.

Sunucumuzdan birkac alintilar:
============
Suanlik sadece '
default
' var '
compile
' icin ama 
gelecekte 
[[
 x ]] seklinde olan tum ozellestirmeler icin destek sunacagim.
Mesela '
no_optimize
' icin belirli bloklar optimize edilmeyebilir.“ - @ferhatgec

Ek olarak bunlar (
c
 yapilari) '
immutable
' (
degistirilemez
) olamazlar.
“ - @ferhatgec
============

Kaynak/lar:
 https://github.com/ferhatgec/gretea
 https://github.com/ferhatgec/bufsize.tea
 https://github.com/ferhatgec/colorite

curl4cpp
 neyin nesi?
------------
curl4cpp
libcURL
'nin 
modern
 
C++
'a sarmalanmis bir halidir
diyebilirim. Tek baslik, 
RAII
'ye saygili bir kutuphane.

Bunu kullanarak bir proje daha yaptim, normalde '
curl
' ve '
wget
'
kullaniliyor genel olarak internetten bir veri cekmek icin vs.

Fegeya Felsefesine tam anlamiyla saygili bir sekilde yapiyorum
tabii ki de. 

Gelecekte farkli farkli dillere de sarmalamayi planliyorum diyebilirim,
ozelikle 
Gretea


Kaynak/lar:
 https://github.com/ferhatgec/gretea
 https://github.com/ferhatgec/curl4cpp

Gretea standart kutuphanesi
ne neler eklenmis?
------------
Bayagi yeni seyler ekledik:

 * 
c
o
l
o
r
i
z
e
d
 kutuphanesi gibi bir modul
 * gunluk (log) modulu.
 * matematiksel ifade ayristirici ve olusturucu bir modul.
 * ucbirim genisligini ve uzunlugunu alabilmeniz icin bir modul.
 * cok ama cok basit bir dil yorumlayicisi (standart kutuphanede degil) 
 * kacis dizisi olusturucu ve ayristirici bir modul.

Colorite:
 * colorite, su renk turlerine sahip:
    Reset
    
Black

    
Red

    
Green

    
Yellow

    
Blue

    
Magenta

    
Cyan

    
White

    Default

    
Light
 (usttekiler gibi)
    Background (usttekiler gibi)
    BackgroundLight (usttekiler gibi)
   
 * colorite, su yazi stillerine sahip:
    Light     
    
Bold
      
    
Dim
       
    
Italic
    
    
Underlined

    
Blink
     
    
RapidBlink
 (sadece 
Windows
 icin)
    Reverse
    Hidden

 standart kutuphanedeki yeri:
  -> tea.green.color
 
 fonksiyon tanimi:
  -> 
fn
 color#print(__data: 
string
, color: __Colors__, type: __Color_Types__)

Logre:
 * logre, su gunluk turlerine sahip:
    Info
    Warning
    
Error

    Help

 standart kutuphanedeki yeri:
  -> tea.green.log

 fonksiyon tanimi:
  -> 
fn
 log#print<'Args>(__type: __Log_Types__, log_datas: Args)
                 ^^^^^^^
                    v
  v: genisletilebilir fonksiyon.

Grexpr:
 * grexpr, su operatorlere sahip:
    Plus
    Minus
    Multi
    Div
    Undefined (sayi olabilir)

 standart kutuphanedeki yeri:
  -> tea.green.expr

 fonksiyon tanimi:
  -> 
fn
 expr#eval(data: 
string
) = 
int32


Bufsize:
 * bufsize, su yapiya sahip:
    
struct
 BufSize {
      
mut
 columns : 
uint32
 [[ 
default
 = 0 ]]
      
mut
 rows    : 
uint32
 [[ 
default
 = 0 ]]
    }

 standart kutuphanedeki yeri:
  -> tea.green.bufsize

 fonksiyon tanimi:
  -> 
fn
 bufsize#init() = 
BufSize

  -> 
compile
 
default
 for 
BufSize


Ceylon:
 * ceylon, su anahtar kelimelere sahip:
    Put
    Val
    Undef (tanimlanmamis, her sey olabilir)

 standart kutuphanede degil.

 fonksiyon tanimi:
  -> ana fonksiyonun icinde
  -> 
compile
 
default
 for 
string


Escafe:
 standart kutuphanedeki yeri:
  -> tea.green.escape

 fonksiyon tanimi:
  -> 
fn
 escape#run(data: 
string
) = 
string


Bunlar gercekten kullanisli, normalde de cok
kullandigim, farkli diller icin de surekledigim
projeler. 
Gretea
 kullanirken bunlari da kullanmayi
ihmal etmeyin. Olabildigince 
optimizeler
.

Kaynak/lar:
 https://github.com/ferhatgec/gretea
 https://github.com/ferhatgec/bufsize.tea
 https://github.com/ferhatgec/escafe.tea
 https://github.com/ferhatgec/colorite
 https://github.com/ferhatgec/logre
 https://github.com/ferhatgec/ceylon
 https://github.com/ferhatgec/grexpr


„Kose yazisi“: 
fasht
'in algoritmasini aciklayalim:
------------
fasht
 asiri basit, 4 bloktan olusan karma kod olusturucu
bir algoritma. Ben Python ve 
C++
 icin surekledim.

Sifrelenebilir, geri dondurulebilir. Bu yuzden sifreleme algoritmasi
degildir.


Algoritmasini pseudo kod ile aciklayacagim. Anlayacaginizi umuyorum.

bloklar sunlar:
  0x2
  0x5
  0x7d5
  0x7e5

 pseudo kodu burada:
  rounds := [
    0x2
    0x5
    0x7d5
    0x7e5
  ]

  
function
 h(data: 
string
) := 
string
 :=
    table := 
uint
[]
    result := 
string
("")

    
for
 round : rounds :=
      
for
 character : data :=
        table += (character << 2) ^ round

    
for
 argument : table := 
      result += hex(argument >> 2).last_character()
    
    
if
 result.length() > 32 := 
      result = result[0..32]
    
else
 :=
      h(result)

    result

Simdi bu bana bir dize verir, <= 32 karaktere sahip.

"Peki bunu nasil gercekten bir karma koda cevirebilirim" diyorsaniz,

pseudo kodu su:
  
function
 hb(data: 
string
) := 
ulong
 := 
    string_to_long(h(data), base(16))

Gelecekte 
Gretea
 icin de yazmayi planliyorum.

Kaynak/lar:
 https://github.com/ferhatgec/fasht
 https://github.com/ferhatgec/fasht.py

„Kose yazisi“: 
Elite
'ye ne eklendi yine?
------------
Elite
'ye uzun zamandir yapacagimi soyledigim ancak usendigimden 
yapmadigim cikti baskilama ozelligini ekledim.

Eger siz bir sistem cagrisi yuruyorsaniz ve ciktisini bastirmak 
istemiyorsaniz kullanacaginiz tek anahtar kelime: '
suppress
'.

Ornek:
  
println
 
suppress
 "
stdout baskilandi, bunu sadece burada gorebilirsiniz.
"

  
use
 
exec
 
suppress
 "
echo Sistem cagrisi baskilandi bile, sadece burada gorebilirsiniz.
"


„Kose yazisi“: 
escafe
 de ne yahu!?
Escafe
3 farkli dile surekledigim bir kacis dizesi ayristiricisi ve 
verilen dizeye gore tekrardan onu olusturabilen bir olusturucudur.

Hani sizin kullandiginiz (
\r
\n
\b
) falan var ya. Onlar iste.

Ek olarak 
\w
 dizesini de destekliyor. Bunu 
Gretea
'da 
cok ama cok 
kullaniyoruz
.

\w
 = whitespace (bosluk)

Ornek girdi:
  escafe\\wis\\winteresting\\n\\x1b[0;33mtest\\x1b[0m\\n\\\\

Ornek cikti:
  escafe is interesting
  
test

  \

Ve... Son olarak sunucuda yapilan degisiklikler.
(1/
07
/21‘den 1/
08
/21‘e)

Yeni rol/ler eklendi:
 * @'\n' -> ';'
 * @';' -> '\n'
 * @Fegeya Sanal Makinesine Giren Kisi
 * @Naneli Yesil Cay
 * @Nanesiz Siyah Cay
 * @xsey, xmisiniz, xde, herkez, ptyhon, cplus, hoşgeldiniz
 * @Tuvalette Gazete Okuyan Kisi
 * @ACT
 * @Hmm...
 * @:
gech
:
 * @Lotzertfuil zum Fegeya
 * @Surekli '
Surekleyen
' Surekleyici

Yeni kanal/lar:
 * `#curl4
cpp
` kanali eklendi.

Kucuk degisiklikler:
 * 
Discord
'un yeni ozelliklerini aktiflestirdik.

-------------------------------------
Bu gazeteye erisebildiginize gore sunucuda
olabilirsiniz. Sunucuda degilseniz daha cok bos
yer var, gelin gelin.

→ https://discord.gg/WrsFW4rzr9

-------------------------------------
Gazetemiz artik 
GitHub
'da! Yildiz atmayi ihmal etmeyin!

→ https://github.com/ferhatgec/gazete
-------------------------------------

Kose yazilarinda siz de olabilirsiniz!
Istediginiz herhangi bir konu hakkinda kose yazisi/lari yazin,
sunucumuzdan gonderin. Biz de 
yayimlayalim
!

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

Gazetemiz icin elestiride mi bulunmak
istiyorsunuz?
`#
feedback
` kanalina fisildamayi unutmayin!

=================================