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!
=================================