-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathyazilim-gundemi-2020-19.html
884 lines (818 loc) · 44.5 KB
/
yazilim-gundemi-2020-19.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr">
<head>
<!-- 2021-01-24 Sun 22:46 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Yazılım Gündemi - 2020/19</title>
<meta name="generator" content="Org mode" />
<meta name="author" content="Eren Hatırnaz" />
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #ccc;
box-shadow: 3px 3px 3px #eee;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: visible;
padding-top: 1.2em;
}
pre.src:before {
display: none;
position: absolute;
background-color: white;
top: -10px;
right: 10px;
padding: 3px;
border: 1px solid black;
}
pre.src:hover:before { display: inline;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { width: 90%; }
/*]]>*/-->
</style>
<link rel="stylesheet" href="../../../css/org.css" type="text/css" />
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
</script>
</head>
<body>
<div id="content">
<h1 class="title">Yazılım Gündemi - 2020/19
<br />
<span class="subtitle">11-17 Mayıs 2020</span>
</h1>
<div id="table-of-contents">
<h2>İçindekiler</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org446af24">1. Yanlış ayarlanmış Firebase veritabanları binlerce Android uygulamasının kullanıcı verilerinin sızmasına yol açtı</a></li>
<li><a href="#orgb5682e1">2. Deno 1.0 yayınlandı</a></li>
<li><a href="#orgb172882">3. Unreal Engine 5 ilk bakış duyuruldu</a></li>
<li><a href="#org134a1fb">4. Eclipse Foundation Avrupa'ya taşınıyor</a></li>
<li><a href="#org615fe2b">5. Firefox 77 ile birlikte <code><input></code> ve <code><textarea></code> elemanlarında davranış değişiklikleri geliyor</a></li>
<li><a href="#orgb64c53e">6. GitHub Desktop 2.5 ve GitHub CLI 0.8 sürümü yayınlandı</a>
<ul>
<li><a href="#orgd819736">6.1. [GitHub Desktop] Etiket oluşturma ve gönderme</a></li>
<li><a href="#orgd0cf219">6.2. [GitHub CLI] Isseu ve Pull Requestleri kontrol etme</a></li>
</ul>
</li>
<li><a href="#orgc2360e0">7. SourceHut, PeerTube projesini desteklemek için fon programını duyurdu</a></li>
<li><a href="#org7a11fcf">8. Yaklaşan Online Etkinlikler #EvdeKal</a></li>
<li><a href="#org151510b">9. Diğer Haberler</a></li>
<li><a href="#orgdbdfa4d">10. Lisans</a></li>
</ul>
</div>
</div>
<div class="figure">
<p><img src="gorseller/yazilim-gundemi-banner.png" alt="yazilim-gundemi-banner.png" />
</p>
</div>
<div class="org-center">
<p>
<a href="../18/yazilim-gundemi-2020-18.html">< Önceki Gündem</a> | <b>11-17 Mayıs 2020</b> | <a href="../20/yazilim-gundemi-2020-20.html">Sonraki Gündem ></a>
</p>
<p>
<a href="https://teknoseyir.com/blog/yazilim-gundemi-2020-19">TeknoSeyir'de Oku</a>
</p>
</div>
<div id="outline-container-org446af24" class="outline-2">
<h2 id="org446af24"><span class="section-number-2">1</span> Yanlış ayarlanmış Firebase veritabanları binlerce Android uygulamasının <a href="https://www.theregister.co.uk/2020/05/12/report_thousands_of_android_apps/">kullanıcı verilerinin sızmasına yol açtı</a></h2>
<div class="outline-text-2" id="text-1">
<p>
Firebase, genelde mobil ve front-end geliştiricileri için içerisinde
veritabanından, uygulama içi mesajlaşmaya kadar birçok ürünü barındıran bir
Google hizmeti. Gündeme girmesine neden olan ise sunduğu veritabanı
ürünlerinin yanlış konfigüre edilmesinden doğan bazı güvenlik sorunları.
Comparitech isimli firma geçtiğimiz haftanın başında <a href="https://www.comparitech.com/blog/information-security/firebase-misconfiguration-report/">blog sitesinde
yayınladığı yazı</a> ile bazı Android uygulamalarının kaynak kodlarını açarak,
içerisinden Firebase veritabanı URL'lerini alıp kullanıcı verilerine
erişebildiklerini açıkladılar.
</p>
<div class="figure">
<p><img src="gorseller/firebase-1.jpg" alt="firebase-1.jpg" />
</p>
<p><span class="figure-number">Şekil 2: </span>Sızan bilgiler arasında binlerce E-posta adresi, telefon numarası, parola, ad soyad ve hatta GPS verisi bile mevcut.</p>
</div>
<p>
Comparitech Güvenlik Araştırması Takım Lideri Bob Diachecko'nun açıkladığına
göre 515.735 Android uygulaması incelenmiş ve bunların içerisinden 4.282
uygulamanın hassas kullanıcı verilerini sızdırığını tespit etmiş.
</p>
<p>
Firmanın bu güvenlik açığını ortaya çıkarmak için kullandığı ise çok basit
hiçbir yüksek teknoloji ürünü gerektirmeyen bir yöntem. Şöyle ki; uygulamanın
kaynak kodları (biliyorsunuz ki APK dosyaları aslında kaynak kodların bir
çeşit sıkıştırılmış hali ve gerekli uygulamalar ile açılabiliyorlar)
içerisinde "*.firebaseio.com" ifadesini aramak ve buldukları tüm bağlantıların
sonuna ".json" ekleyerek istek göndermek. Eğer ilgili veritabanı yanlış
ayarlanmışsa bu isteğin cevabı tüm veritabanının içeriğinin JSON formatında
sunulmuş hali oluyor. Burada hatırlatmak lazım ki, APK dosyanız şifrelenmiş
(encrypted) olsa bile veritabanınızın URL'sini bir string değişkeninde
tuttuğunuz için yine görülebiliyor.
</p>
<p>
Comparitech firması 22 Nisan tarihinde bu güvenlik sorununu Google'a bildirmiş
ve Google'da "biz geliştiricilere yanlış konfigüre edilmiş durumlar için
bildirim gönderiyoruz. Bu durum için de etkilenen uygulamaların
geliştiricilerini bilgilendireceğiz" demiş. Eğer sizin de Firebase veritabanı
ürünlerini kullanan bir uygulamanız varsa açığın olup olmadığını kontrol
ederek ve <a href="https://firebase.google.com/docs/database/security">ilgili dokümantasyon sayfalarını</a> detaylıca inceleyerek olası bir
güvenlik sızıntısının önüne geçebilirsiniz. Hassas verileri veritabanında
şifrelenmiş bir şekilde tutmanın ne kadar önemli olduğunu bir kez daha anlamış
olduk.
</p>
</div>
</div>
<div id="outline-container-orgb5682e1" class="outline-2">
<h2 id="orgb5682e1"><span class="section-number-2">2</span> Deno <a href="https://deno.land/v1">1.0 yayınlandı</a></h2>
<div class="outline-text-2" id="text-2">
<p>
Gün geçmiyor ki yeni bir JavaScript teknolojisi daha çıkmasın. Şaka bir yana,
bu yeni teknoloji diğerlerine göre daha fazla gündemde kaldı ve konuşuldu.
Node.js'e alternatif olarak geliştirilen(fork değil), yine Node.js'i yaratan
kişinin de (Ryan Dahl) yazarları arasında olduğu <a href="https://deno.land/">Deno</a> projesinin ilk stabil
versiyonu 1.0, geçtiğimiz hafta içerisinde duyuruldu. Deno da Node.js gibi
sunucu tarafında JavaScript çalıştırmaya yarayan bir runtime çözümü.
</p>
<p>
Deno'nun neden ortaya çıktığını anlamak için önce Node.js'in sorunlarını
anlamak gerekiyor. Node.js'de <code>Promise</code> yapısının olmaması, güvensiz bir
runtime'a sahip olması, paket yönetimi, testler vb. konularda içerisinde bir
çözüm barındırmaması gibi sorunlar uzun zamandır Node.js kullananlar
tarafından dile getiriliyordu fakat bu ihtiyaçlar hep üçüncü parti araçlar
tarafından giderilebiliyordu. Node.js paket yönetimi için <code>npm</code> ile birlikte
geliyor fakat <code>npm</code> doğrudan Node.js tarafından geliştirilen bir araç değil,
kontrol onlarda değil yani. Güvensiz runtime'dan kast edilen ise Node.js'in
kontrolsüz sistem çağrıları (sys calls) yapabiliyor olması. Node.js ile bir
JavaScript dosyası çalıştırdığınızda o işlem, sistemin tüm kaynaklarını
kullanabiliyordu. Örneğin istediği bir dosyayı okuyabilir ya da yazabiliyordu.
Bunun gibi Node.js'in tasarımından kaynaklanan diğer sorunlar için doğrudan
Node.js'in yaratıcılarından Ryan Dahl'ın JSConf EU 2018 etkinliğinde yaptığı
konuşmayı <a href="https://www.youtube.com/watch?v=M3BM9TB-8yA">buraya tıklayarak izleyebilirsiniz</a>.
</p>
<div class="figure">
<p><img src="gorseller/deno-logo.png" alt="deno-logo.png" height="150" />
</p>
<p><span class="figure-number">Şekil 3: </span>Deno'nun resmî logosu</p>
</div>
<p>
Gel gelelim Deno'ya… Deno'da yukarıdaki birçok sorun çözülmüş durumda, artık
tek bir araç kurarak geliştirme ortamınızdaki birçok ihtiyacınızı
giderebiliyorsunuz. Şöyle ki:
</p>
<ul class="org-ul">
<li><code>deno run</code>: Bu komut ile kodlarınızı direkt çalıştırabilirsiniz. Üstelik
kendi içerisinde TypeScript desteği ile geliyor, yani TypeScript
kodlarınızı derleyici ile JavaScript'e dönüştürüp o şekilde kullanmanıza
gerek yok. Direkt <code>deno run deneme.ts</code> şeklinde çalıştırabiliyorsunuz.</li>
<li><code>deno bundle</code>: Bu komuta parametre olarak verdiğiniz bir kaynak kod dosyası
(JS ya da TS olabilir), tüm bağımlılıklarıyla birlikte tek bir dosya haline
getiriliyor. bir dosya haline getirmeye yarıyor.</li>
<li><code>deno fmt</code>: Kodlarınızın otomatik olarak formatlanmasını sağlar.</li>
<li><code>deno doc</code>: Bir modül için tanımlanmış dokümantasyon metinlerini
gösteriyor.</li>
<li><code>deno test</code>: Projeniz için yazdığınız testleri bu komut yardımıyla
çalıştırabiliyorsunuz.</li>
</ul>
<div class="figure">
<p><img src="gorseller/deno-deniyoruz.png" alt="deno-deniyoruz.png" />
</p>
<p><span class="figure-number">Şekil 4: </span>Deno'yu sizler için denedim. Örnek tabii ki çok basit ama Node.js'e göre daha hızlı geliştirebildim.</p>
</div>
<p>
Yukarıdaki örnekte de gördüğünüz gibi hiç package.json dosyası gibi şeylerle
uğraşmadan doğrudan ilgili dosyanın adresini import olarak belirterek dosyama
ekledim ve <code>deno info</code> komutuyla hem kodlarımı derledim hem de bağımlılıkları
indirdim. <code>deno info</code> komutunu çalıştırmak zorunda değilsiniz elbette direkt
<code>deno run teknoseyir.ts</code> komutu da çalıştırabilirsiniz. Eğer siz de yukarıdaki
dosyayı denemek isterseniz bu adresten indirip, deneyebilirsiniz:
<a href="https://gist.github.com/erenhatirnaz/fc6e726fff2731bc1ed763bb2ba7d3e8">https://gist.github.com/erenhatirnaz/fc6e726fff2731bc1ed763bb2ba7d3e8</a>
</p>
<p>
Hepimizin aklındaki soru ise "Node.js'yi bitirir mi?" olduğunu tahmin ediyorum
fakat henüz böyle bir çıkarım yapabilmek için çok erken olsa da sunduğu
özellikler bakımından gerçekten umut vaat ettiğini düşünüyorum. Node.js için
yazılmış kütüphaneler için henüz bir uyumluluk çözümü yok fakat şu an
geliştirilme aşamasındaymış, ileride Node.js için de yazılmış kütüphaneleri
kullanabilir hale geldiğimizde belki o zaman Node.js'in ömrünü konuşmaya
başlayabiliriz. Bakalım JavaScript ekosistemini ileride ne gibi değişlikler
bekliyor. Hep birlikte göreceğiz.
</p>
<p>
Deno hakkında daha detaylı bilgiler için konu başlığına eklediğim bağlantıya
tıklayabilir ya da DevNot sitesinden Zafer Ayan'ın yazdığı <a href="http://devnot.com/2020/deno-nedir-nodejsin-sonunu-getirir-mi/">şu türkçe yazıyı
okuyabilirsiniz</a>.
</p>
<p>
Siz Deno hakkında ne düşünüyorsunuz? Deneyebildiniz mi? Denediyseniz
olumlu/olumsuz eleştirileriniz neler? Yorumlar bölümünde fikir alışverişi
yapalım.
</p>
</div>
</div>
<div id="outline-container-orgb172882" class="outline-2">
<h2 id="orgb172882"><span class="section-number-2">3</span> Unreal Engine 5 <a href="https://www.unrealengine.com/en-US/blog/a-first-look-at-unreal-engine-5">ilk bakış duyuruldu</a></h2>
<div class="outline-text-2" id="text-3">
<p>
Geçtiğimiz hafta içerisinde Epic Games firmasının sahip olduğu Unreal Engine
oyun motorunun 5 numaralı versiyonunun ilk bakış videoları ve yayınlanma
süreci hakkında bazı detaylar duyuruldu. Zaten geçtiğimiz haftanın olay
yaratan konularından biri de bu oldu.
</p>
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=qC5KtatMcUw">Konuyla ilgili YouTube videosu</a></li>
</ul>
<p>
Front-end geliştirme alanından bile daha uzak olduğun oyun geliştirme alanıyla
ilgili bir haber olduğu için teknik kısımlarını pek iyi yorumlayamayacağım
fakat duyurulan şeyleri anladığım ölçüde sizlere aktarmaya çalışayım:
</p>
<ul class="org-ul">
<li><b>Nanite</b>: Bu yeni teknoloji sayesinde artık 3D tasarım yapan sanatçılar
poligon sayısını çok kafasına takmadan hayallerindeki tasarımları dijital
ortama aktarabilecekler. ZBrush ile taratılmış nesnelerden, CAD verilerine
kadar birçok obje bu şekilde kullanılabilecek. Gerçek zamanlı olarak
çalışan bu teknoloji kalite kaybı olmadan daha hızlı geliştirme yapmaya
olanak sağlayacak.</li>
<li><b>Lumen</b>: Bu sürümle birlikte gelecek olan tamamen dinamik aydınlatma
çözümü. Bu özelliği okuyunca benim aklıma NVIDIA'nin RTX çözümü geldi. Bu
da aynı onun gibi ışığın dinamik olarak hesaplanmasını ve dolayısıyla
ortamlara ve zamana göre nesnelere vuran ışığın değişmesini sağlıyor. Tabii
ki bu da gerçek zamanlı olarak GPU üzerinde hesaplanıyor ve oyuna
yansıtılıyor. Teknik bilgim olmadığı için bu özelliğin RTX ile bağlantılı
olup olmadığını bilemiyorum fakat konu hakkında bilgisi olan arkadaşlar
yorumlar bölümünde belirtirse buraya ekleme yapabilirim.</li>
</ul>
<p>
Unreal Engine 5 ile birlikte çekirdeğe eklenen yeni teknolojiler bu
şekildeydi. Unreal Engine 5 ön izleme sürümünün 2021'in ilk ayları içerisinde
duyurulması beklenirken, tamamen stabil sürümün ise 2021'in daha ileri
tarihlerinde yayınlanması planlanıyor. Unreal Engine 4 kullanan
geliştiricilerin 5'e geçebilmeleri için uyumluluk çalışmalarının da devam
ettiğini, geçiş sürecini kolaylaştırmak için çaba gösterdiklerini
aktarıyorlar.
</p>
<p>
Unreal Engine 5 ile birlikte Epic Games bir de <a href="https://www.unrealengine.com/en-US/blog/epic-online-services-featuring-epic-account-and-game-services">yeni bir servis duyurdu</a>: <a href="https://dev.epicgames.com/en-US/services">Epic
Online Services</a>. Bu yeni servis sayesinde oyun geliştiricileri oyunlarına daha
kolay bir şekilde çoklu oyuncu desteği eklemenin yanı sıra, lider tabloları,
başarımlar vb. şeyleri de ekleyebilecekler. Üstelik bu hizmet tüm
geliştiriciler için ücretsiz olarak sunuluyor. Epic Games, bu hizmeti sadece
kendi oyun mağazası için sınırlamamış platformlar arası (cross-platform)
desteği de eklemiş. Yani Playstation'dan XBox'a oradan iOS ve Android'e kadar
birçok platformda oyuncular aynı şeylere sahip olabilecek.
</p>
<p>
Son olarak ise artık Unreal Engine kullanan geliştiriciler ve oyun yapımcıları
yıllık gelirleri 1 milyon dolar olana kadar Unreal Engine'e lisans ücreti
ödemek zorunda değiller. Lisanslama ile ilgili sorular için <a href="https://www.unrealengine.com/faq">şu bağlantıda yer
alan sıkça sorulan sorular</a> kısmına göz atabilirsiniz.
</p>
<p>
Bu gelişme oyun geliştirme dinamiklerini nasıl etkiler, ilerleyen süreçlerde
bizi neler bekliyor pek bilemiyorum ama oyun geliştirme alanında çalıştığını
tahmin ettiğim Sosyal'den @ardazeytin arkadaşımızın yazdığı şu gönderiye
bakabilirsiniz: <a href="https://teknoseyir.com/durum/1265228">https://teknoseyir.com/durum/1265228</a>.
</p>
<p>
Oyun geliştirme alanında çalışan başka arkadaşlar varsa bu konu hakkında
düşündüklerini yorumlar bölümünde dile getirirse çok memnun olurum.
</p>
</div>
</div>
<div id="outline-container-org134a1fb" class="outline-2">
<h2 id="org134a1fb"><span class="section-number-2">4</span> Eclipse Foundation <a href="https://newsroom.eclipse.org/news/announcements/open-source-software-leader-eclipse-foundation-announces-transition-europe-part">Avrupa'ya taşınıyor</a></h2>
<div class="outline-text-2" id="text-4">
<div class="figure">
<p><img src="gorseller/eclipse-foundation-tasindik.jpg" alt="eclipse-foundation-tasindik.jpg" height="200" />
</p>
</div>
<p>
Çoğunlukla Java IDE'si olarak tanıdığımız Eclipse, aslında <a href="https://www.eclipse.org/">Eclipse Foundation</a>
isimli bir yapının parçası. Geçtiğimiz hafta içerisinde ise Eclipse
Foundation, tüzel kişiliklerini Brüksel'e taşıyarak bir Uluslararası kâr amacı
gütmeyen dernek haline geleceklerini açıkladılar.
</p>
<p>
Şu anda Amerika merkezli bir vakıf olan Eclipse Foundation, taşınma nedeniyle
ilgili açıklamalarda genelde "üyelerimiz ve katkı sağlayanlarımızın çoğu
Avrupa'da olduğu için biz de onlara yakın olmak için merkezimizi oraya
taşıyoruz" şeklinde özetliyorlar fakat ben Amerika'daki güncel siyasi durumun
da konu üzerinde etkisi olabileceğini düşünüyorum. Bir de tüzel kişilikle
ilgili bazı yasal kolaylıklardan bahsedilmiş sanırım fakat alanım olmayan bir
konu olduğu için pek fazla bir şey anlamadım.
</p>
<p>
Taşınma süreciyle ilgili detaylar şu şekilde özetlenebilir:
</p>
<ul class="org-ul">
<li>Uluslararası kar amacı gütmeyen derneğin resmî işlemlerinin Temmuz 2020'de
tamamlanması bekleniyor.</li>
<li>Fiziksel olarak Avrupa'da barındırılan, üzerinde GitLab kurulu sunucularda
tüm projelerinin kaynak kodlarına ve dokümanlarına bu yılın yaz ayları
itibariyle erişilebilecek. Burası geliştiriciler ve katkı sağlayanlar için
üçüncü bir seçenek olarak sunulacak.</li>
<li>Eclipse ve Eclipse Foundation isimleri ve markaları yeni Belçika varlığı olarak
kontrol edilecek.</li>
<li>Eclipse Foundation zaten hali hazırda Kanada ve Avrupa (Almanya ofisi
mevcuttu) üzerinde eş zamanlı yönetildiği için vakfın operasyonlarının en
düşük seviyede etkileneceği tahmin ediliyor.</li>
</ul>
<p>
Biz geliştiricileri pek fazla etkileyeceğini sanmıyorum ama yinede
sektörümüzdeki önemli bir vakıfın böyle büyük bir taşınma işine girişmesini
gündeme almak istedim. Daha detaylı bilgiler için konu başlığına eklediğim
bağlantıya tıklayabilir ya da <a href="https://www.eclipse.org/europe/faq.php">şu adresdeki sıkça sorulan sorular sayfası</a>nı
ziyaret edebilirsiniz. Eclipse Foundation Europe ana sayfası için burayı
ziyaret edebilirsiniz: <a href="https://www.eclipse.org/europe/">https://www.eclipse.org/europe/</a>
</p>
</div>
</div>
<div id="outline-container-org615fe2b" class="outline-2">
<h2 id="org615fe2b"><span class="section-number-2">5</span> Firefox 77 ile birlikte <code><input></code> ve <code><textarea></code> elemanlarında <a href="https://www.fxsitecompat.dev/en-CA/docs/2020/text-exceeding-maxlength-will-no-longer-be-truncated-when-pasted-into-input-or-textarea/">davranış değişiklikleri geliyor</a></h2>
<div class="outline-text-2" id="text-5">
<p>
Mozilla tarafından geliştirilen web tarayıcısı Firefox'un bir sonraki sürümü
olarak yayınlanacak 77 numaralı sürümünde <code><input></code> ve <code><textarea></code>
elemanlarında değişiklikler olacağı geçtiğimi hafta Firefox Site Compatibility
sitesinde duyuruldu.
</p>
<p>
Artık bu elemanlara kopyala/yapıştır ile bir içerik yapıştırdığımızda eğer
içeriğin boyutu, elemanın <code>maxlength</code> property'sindeki boyuttan büyükse,
yapıştırdığımız içerik otomatik olarak kırpılmayacak. Yani kullanıcılar o
elemana daha uzun içerikler yapıştırabilecekler fakat bu demek değil ki
Firefox bizim koyduğumuz kuralı görmezden geliyor. Firefox, <code>maxlength</code>
değerine uymayan formları submit etmemeye devam edecek. Yapılan davranış
değişikliğinin sebebi ise kullanıcıların şifre yönetim uygulamalarının ilgili
elemana otomatik olarak yapıştırdığı şifrelerin kırpılmamasını sağlamak. Yani
kullanıcının "acaba parolamla ilgili bir sıkıntı mı var" endişesini gidermeye
yönelik. Eğer girilen metin olması gerekenden uzunsa Firefox kullanıcıya şöyle
bir mesaj gösterecekmiş: "Lütfen bu metini 20 karakter ya da daha az olacak
şekilde kısatın (şu an 30 karakter kullanıyorsunuz)".
</p>
<p>
Çalışan projelerimizi doğrudan etkileyecek bir durum göremiyorum ama yine de
dikkate almaya değer bir davranış değişikliği olduğu için değinmeden geçmek
istemedim. Daha detaylı bilgiler ve referanslar için konu başlığına eklediğim
bağlantıya tıklayabilirsiniz.
</p>
</div>
</div>
<div id="outline-container-orgb64c53e" class="outline-2">
<h2 id="orgb64c53e"><span class="section-number-2">6</span> <a href="https://github.blog/changelog/2020-05-11-github-cli-allows-you-to-close-reopen-and-add-metadata-to-issues-and-pull-requests/">GitHub Desktop 2.5</a> ve <a href="https://github.blog/changelog/2020-05-11-github-cli-allows-you-to-close-reopen-and-add-metadata-to-issues-and-pull-requests/">GitHub CLI 0.8</a> sürümü yayınlandı</h2>
<div class="outline-text-2" id="text-6">
<p>
GitHub'ın grafiksel masaüstü uygulaması ve komut satırı üzerinden çalışan
aracı geçtiğimiz hafta içerisinde yeni sürümlerine kavuşturlar. Yeni sürümler
ile gelen bazı özellikler şu şekilde:
</p>
</div>
<div id="outline-container-orgd819736" class="outline-3">
<h3 id="orgd819736"><span class="section-number-3">6.1</span> [GitHub Desktop] Etiket oluşturma ve gönderme</h3>
<div class="outline-text-3" id="text-6-1">
<div class="figure">
<p><img src="gorseller/github-desktop-tag.gif" alt="github-desktop-tag.gif" />
</p>
</div>
<p>
Artık GitHub uygulaması üzerinden yeni git etiketleri (<code>git tag</code>) oluşturup,
bunları GitHub.com üzerindeki uzak deponuza gönderebileceksiniz. Tabii ki
var olan etiketleri de listeleme özelliği mevcut.
</p>
</div>
</div>
<div id="outline-container-orgd0cf219" class="outline-3">
<h3 id="orgd0cf219"><span class="section-number-3">6.2</span> [GitHub CLI] Isseu ve Pull Requestleri kontrol etme</h3>
<div class="outline-text-3" id="text-6-2">
<p>
GitHub CLI üzerinden zaten bir proje üzerinde issue oluşturabiliyor ya da
pull request gönderebiliyorduk fakat işlemler sadece bunlarla kısıtlıydı.
Diğer ek işlemler için tarayıcıda açmak gerekiyordu. Bu sürümle birlikte
artık issue ve pull requestlerimizi yaratırken onlara label, reviewer,
projects, milestone gibi ek bilgiler iliştirebileceğiz. Aynı zamanda <code>gh pr
close</code>, <code>gh pr reopen</code> ve <code>gh issue close</code>, <code>gh issue reopen</code> gibi komutlarla
ilgili issue ya da pull requestleri açıp kapatabileceğiz. Komut satırı
kullanmayı seven biri olan beni mutlu eden gelişmeler fakat henüz tam zamanlı
kullanılabilecek kadar gelişmedi hele bir 1.0 sürümü çıksın bakalım…
</p>
</div>
</div>
</div>
<div id="outline-container-orgc2360e0" class="outline-2">
<h2 id="orgc2360e0"><span class="section-number-2">7</span> SourceHut, PeerTube projesini desteklemek için <a href="https://sourcehut.org/blog/2020-05-15-peertube-bootstrap-fund/">fon programını duyurdu</a></h2>
<div class="outline-text-2" id="text-7">
<p>
<a href="https://sourcehut.org/">SourceHut</a>'ın ne olduğundan ve felsefesinden önceki yazılım gündemi yazılarının
birinde (bkz: <a href="../../2019/17/yazilim-gundemi-2020-17.html">Yazılım Gündemi - 2020/17</a>) bahsetmiştim. O yazıyı okumayanlar
için kısa bir özet: SourceHut da GitHub ve GitLab gibi uzak bir git deposu
hizmeti fakat tamamen özgür yazılım prensiplerine göre ve açık kaynak şekilde
geliştiriliyor (ve JavaScript kullanmıyor). <a href="https://joinpeertube.org/">PeerTube</a> ise YouTube'a benzer,
gelişmiş ve dağıtık bir video paylaşma platformu. Teknik detaylarına pek fazla
hakim değilim fakat siz bir PeerTube sitesine bir video yüklediğinizde aslında
bir çeşit torrent paylaşmış gibi oluyorsunuz ve tarayıcı üzerinden o videoyu
izleyen diğer kişiler de hem indiriyor hem de diğer kullanıcılar için
gönderiyor. Bu sayede dağıtık bir yapı kurulmuş oluyor. İsterseniz sizde kendi
sunucularınızda bir PeerTube ayağa kaldırabilir ve bu ağın bir parçası
olabilirsiniz. İkisi de çok sevdiğim ve bir çeşit gönül bağı kurduğum
projeler. Hazır yeri gelmişken ikisini birden gündemde konuk etmek istedim :).
</p>
<p>
SourceHut ise geçtiğimiz hafta içerisinde PeerTube projesini desteklemek ve
içerik sayısını arttırmak için bir çeşit fon ayırdığını açıkladı. 5.000$'lık
bu fon sayesinde PeerTube'a içerik üretmek isteyen kişilere ekipman desteği ve
kitle fonlama araçları sağlanacak. Kitle fonlama aracı ise yine özgür yazılım
prensipleriyle geliştirilen <a href="https://liberapay.com/">Librepay</a>. Fakat bu fondan faydalanabilmenin bazı
şartları var:
</p>
<ul class="org-ul">
<li>Hali hazırda başka bir platform üzerinde videolu içerik üretmiyor olmanız
gerekiyor fakat bu o kadar sert bir kural değil sanırım, birkaç video
üretmişseniz yine de başvurunuzda bunu açıkca belirterek değerlendirilme
süreçlerine dahil olabiliyorsunuz.</li>
<li>Videolarınızı <b>sadece PeerTube'a</b> yükleyebilirsiniz. YouTube, Vimeo vb.
platformlarda PeerTube için özel ürettiğiniz içerikler bulunamaz.</li>
<li>Oluşturduğunuz video içerikler <a href="https://creativecommons.org/">Creative Commons</a> lisansları ile
paylaşılmalıdır.</li>
<li>En az 5 video üretmeniz bekleniyor. Eğer bu 5 videodan sonra videolu içerik
üretmenin size göre olmadığına karar verirseniz fon yardımıyla aldığınız
ekipmanları geri vermeniz gerekiyor.</li>
<li>Librepay üzerinden aylık en az $20'dan fazla kazanmaya başladığınızda,
devam eden barındırma maliyetleri tüm içerik oluşturucular arasında eşit
olarak paylaştırılacak. Yani şimdilik aylık $45 olan bu maliyet içerik
oluşturucular arasında eşit bir şekilde bölüştürülür. Librepay gelirinizin
%25'inden fazla ödeme yapmanız asla beklenmiyor; SourceHut gerisini
tamamlıyor.</li>
</ul>
<p>
Eğer bu fona başvurmak isterseniz [email protected] e-posta adresine, başlığı
"<i>PeerTube bootstrap application: <ad soyad></i>" olan ve içeriğinde de kendinizi
tanıtarak ne tür bir içerik oluşturmak istediğinizden bahsedebilirsiniz.
</p>
<p>
SourceHut'ın kendi barındırdığı PeerTube hizmeti için burayı ziyaret
edebilirsiniz: <a href="https://spacepub.space/">SpacePub</a>. Diğer detaylar için konu başlığına eklediğim
bağlantıya tıklayabilirsiniz.
</p>
<p>
Geçtiğimiz hafta SourceHut'daki diğer bazı gelişmeler de bu şekilde:
</p>
<ul class="org-ul">
<li>Mayıs 2020 için SourceHut'da pişen özellikler <a href="https://sourcehut.org/blog/2020-05-15-whats-cooking-may-2020/">yazısı yayınlandı</a>.</li>
<li>SourceHut'a <a href="https://sourcehut.org/blog/2020-05-11-sourcehut-plus-plan-9/">Plan 9 desteği eklendi</a>.</li>
</ul>
</div>
</div>
<div id="outline-container-org7a11fcf" class="outline-2">
<h2 id="org7a11fcf"><span class="section-number-2">8</span> Yaklaşan Online Etkinlikler #EvdeKal</h2>
<div class="outline-text-2" id="text-8">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides" width="100%">
<colgroup>
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Etkinlik İsmi</th>
<th scope="col" class="org-left">Tarihi</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left"><a href="https://kommunity.com/bilge-adam-teknoloji/events/react-ile-javascript-uygulamalari-gelistirme-b70b2cb9">React ile JavaScript Uygulamaları Geliştirme</a></td>
<td class="org-left">18 Mayıs 16:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/cloud-and-serverless-turkey/events/ramazan-ozel-8-bulutta-yuksek-performansli-ve-verimli-sistem-tasarlama-a72398fb">Bulutta Yüksek Performanslı ve Verimli Sistem</a></td>
<td class="org-left">18 Mayıs 23:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/pgtr/events/postgresql-sohbetleri-18-postgresqlde-gozlemleme-monitoring-d78fab87">PostgreSQL Sohbetleri 18: PostgreSQL'de gözlemleme</a></td>
<td class="org-left">19 Mayıs 13:30</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/tracikkaynak/events/acik-seminer-22-gun-postgresql-53dbbb44">Açık Seminer 22. Gün: PostgreSQL'e Giriş</a></td>
<td class="org-left">19 Mayıs 13:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/bilge-adam-teknoloji/events/net-core-refit-kullanimi-f9c2215b">.NET Core Refit Kullanımı</a></td>
<td class="org-left">19 Mayıs 14:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/jstanbul/events/deno-yeni-javascript-runtimei-3bc240d7">Deno: Yeni JavaScript Runtime'ı</a></td>
<td class="org-left">19 Mayıs 21:15</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/teknopark-istanbul-yazilimci-bulusmalari/events/orneklerle-unit-testing-ve-tdd-3f5cc824">Örneklerle Unit Testing ve TDD</a></td>
<td class="org-left">20 Mayıs 12:30</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/tracikkaynak/events/acik-seminer-23-gun-postgressql-temel-bilgiler-b31504bc">Açık Seminer 23. Gün: PostgreSQL Temel Bilgiler</a></td>
<td class="org-left">20 Mayıs 14:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/bilge-adam-teknoloji/events/html-ve-css-ile-web-arayuz-tasarimi-48e9156f">HTML ve CSS ile Web Arayüz Tasarımı</a></td>
<td class="org-left">20 Mayıs 18:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/bilge-adam-teknoloji/events/building-net-core-31-serverless-application-in-aws-5c948e36">Building .NET Core 3.1 Serverless Application in AWS</a></td>
<td class="org-left">20 Mayıs 22:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/tracikkaynak/events/acik-seminer-24-gun-postgresde-kurulus-ve-gelisim-yolculugu-80e1191a">Açık Seminer 24. Gün: Postgres’de Kuruluş ve Gelişim Yolculuğu</a></td>
<td class="org-left">21 Mayıs 14:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/frontend-istanbul/events/asynchronous-code-execution-under-the-hood-605ea817">Asynchronous Code Execution Under the Hood</a></td>
<td class="org-left">21 Mayıs 18:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/cloud-and-serverless-turkey/events/ramazan-ozel-9-aws-cloud-ogrenmeye-nereden-ve-nasil-baslarim-7d516704">AWS - Cloud öğrenmeye nereden ve nasıl başlarım?</a></td>
<td class="org-left">21 Mayıs 23:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/mdisec-cyber-security-twitch-streams/events/hackerconfstream-virtual-cyber-security-conference-b7bd6be7">HackerConf.Stream Virtual Cyber Security Conference</a></td>
<td class="org-left">22 Mayıs 09:59</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/tracikkaynak/events/acik-seminer-25-gun-gelistiriciler-icin-postgresql-e7c76ef0">Açık Seminer 25. Gün: Geliştiriciler için PostgreSQL</a></td>
<td class="org-left">22 Mayıs 14:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/mavidurakio/events/s1e43-unity-ile-oyun-programlamaya-giris-101-23658c44">Unity ile Oyun Programlamaya Giriş 101</a></td>
<td class="org-left">22 Mayıs 21:15</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-org151510b" class="outline-2">
<h2 id="org151510b"><span class="section-number-2">9</span> Diğer Haberler</h2>
<div class="outline-text-2" id="text-9">
<ul class="org-ul">
<li>GitLab.com 13.0 sürümüne <a href="https://about.gitlab.com/releases/2020/05/06/gitlab-com-13-0-breaking-changes/">güncellenecek</a>. 22 Mayıs günü kesintiler
yaşanabilir.</li>
<li>GitHub "Organizastion secrets" <a href="https://github.blog/changelog/2020-05-14-organization-secrets/">özelliğini duyurdu</a>.</li>
<li>Java <a href="https://blogs.oracle.com/java/our-world-moved-by-java">25 yaşında</a>.</li>
<li>Rust <a href="https://blog.rust-lang.org/2020/05/15/five-years-of-rust.html">5 yaşında</a>.</li>
<li>Amazon ve Red Hat yeni <a href="https://www.zdnet.com/article/amazon-red-hat-openshift-announced-for-public-cloud-kubernetes-users/">ortak projelerini duyurdu</a>: <a href="https://aws.amazon.com/quickstart/architecture/openshift/">Amazon Red Hat OpenShift</a>.
<a href="https://www.redhat.com/en/blog/red-hat-and-aws-extend-collaboration-introducing-amazon-red-hat-openshift">Alternatif</a></li>
<li>AWS, Kubernetes için bulut geliştirme kitini <a href="https://siliconangle.com/2020/05/13/aws-open-sources-cdk8s-make-kubernetes-easier-use/">açık kaynak hale getirdi</a>:
<a href="https://siliconangle.com/2020/05/13/aws-open-sources-cdk8s-make-kubernetes-easier-use/">cdk8s</a>.</li>
<li>AWS kendi ARM-tabanlı çipi için <a href="https://aws.amazon.com/blogs/aws/new-m6g-ec2-instances-powered-by-arm-based-aws-graviton2/">yeni EC2 servisini tanıttı</a>: EC2 M6g.</li>
<li>Google Cloud VMware Engine <a href="https://cloud.google.com/blog/topics/hybrid-cloud/announcing-google-cloud-vmware-engine">Genel Erişilebilir (GA) hale geldi</a>.</li>
<li>Amazon Kendra <a href="https://techcrunch.com/2020/05/11/amazon-releases-kendra-to-solve-enterprise-search-with-ai-and-machine-learning/">Genel Erişilebilir (GA) hale geldi</a>.</li>
<li>JetBrains'den haberler:
<ul class="org-ul">
<li>YouTrack, 10 kişilik takımlar <a href="https://blog.jetbrains.com/youtrack/2020/05/youtrack-is-now-free-for-10/">için ücretsiz oldu</a>.</li>
<li>Python Geliştiricileri Anketi 2019 <a href="https://www.jetbrains.com/lp/python-developers-survey-2019">sonuçları açıklandı</a>.</li>
<li>MPS 2020.1 <a href="https://blog.jetbrains.com/mps/2020/05/mps-2020-1-has-been-released/">sürümü yayınlandı</a>.</li>
<li>IntelliJ IDEA, Çince, Japonca ve Korece dil desteği için <a href="https://blog.jetbrains.com/idea/2020/05/intellij-idea-localization-eap1/">erken erişim
programı başlatıldı</a>.</li>
</ul></li>
<li>TypeScript programlama dilinin <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-3-9/">3.9 sürümü duyuruldu</a>.</li>
<li>Erlang/OTP <a href="https://www.erlang.org/news/140">23 sürümü yayınlandı</a>.</li>
<li>Switft 5.3 ile birlikte Windows ve bazı Linux dağıtımları <a href="https://www.infoq.com/news/2020/05/swift-5-3-windows-linux/">için destek
gelecek</a>.</li>
<li>WebAssembly çalıştırabilen ilk <a href="https://medium.com/wasmer/announcing-the-first-java-library-to-run-webassembly-wasmer-jni-89e319d2ac7c">Java kütüphanesi duyuruldu</a>: <a href="https://github.com/wasmerio/java-ext-wasm">Wasmer JNI</a>.</li>
<li>Next.js <a href="https://nextjs.org/blog/next-9-4">9.4 sürümü yayınlandı</a>.</li>
<li>Bootstrap <a href="https://blog.getbootstrap.com/2020/05/12/bootstrap-4-5-0/">4.5.0 sürümü yayınlandı</a>.</li>
<li>Apache Kafka, Apache ZooKeeper <a href="https://www.confluent.io/blog/removing-zookeeper-dependency-in-kafka/">bağımlığımından kurtuluyor</a>.</li>
<li>PostgreSQL 12.3, 11.8, 10.13, 9.6.18 ve 9.5.22 <a href="https://www.postgresql.org/about/news/2038/">sürümleri yayınlandı</a>.</li>
<li>CockroachDB <a href="https://www.cockroachlabs.com/blog/cockroachdb-20-1-release/">20.1 sürümü duyuruldu</a>.</li>
<li>MongoDB <a href="https://www.mongodb.com/blog/post/introducing-mongodb-for-vs-code">4.2.6 sürümü yayınlandı</a>.</li>
<li>VSCode için MongoDB eklentisi <a href="https://www.mongodb.com/blog/post/introducing-mongodb-for-vs-code">ön izleme olarak yayınlandı</a>.</li>
<li>HAProxy Data Plane API <a href="https://www.haproxy.com/blog/announcing-haproxy-dataplane-api-20/">2.0 sürümü duyuruldu</a>.</li>
<li>Haxe <a href="https://haxe.org/blog/haxe-4.1.0-release/">4.1.0 sürümü yayınlandı</a>.</li>
<li>Proxmox VE <a href="https://www.proxmox.com/en/news/press-releases/proxmox-ve-6-2">6.2 sürümü yayınlandı</a>.</li>
<li>Zabbix <a href="https://www.zabbix.com/rn/rn5.0.0">5.0.0 sürümü yayınlandı</a>.</li>
<li>Hyperdrive <a href="https://blog.hypercore-protocol.org/posts/announcing-hyperdrive-10/">v10 sürümü duyuruldu</a>.</li>
<li>Mun <a href="https://mun-lang.org/blog/2020/05/16/release-mun-v0-2-0/">v0.2.0 sürümü yayınlandı</a>.</li>
</ul>
</div>
</div>
<div id="outline-container-orgdbdfa4d" class="outline-2">
<h2 id="orgdbdfa4d"><span class="section-number-2">10</span> Lisans</h2>
<div class="outline-text-2" id="text-10">
<div class="org-center">
<div class="figure">
<p><img src="../../../img/CC_BY-NC-SA_4.0.png" alt="CC_BY-NC-SA_4.0.png" height="75" />
</p>
</div>
<p>
<a href="yazilim-gundemi-2020-19.html">Yazılım Gündemi - 2020/19</a> yazısı <a href="https://erenhatirnaz.github.io">Eren Hatırnaz</a> tarafından <a href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons
Atıf-GayriTicari-AynıLisanslaPaylaş 4.0 Uluslararası Lisansı</a> (CC BY-NC-SA 4.0)
ile lisanslanmıştır.
</p>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="date">Tarih: 18 Mayıs 2020</p>
<p class="author">Yazar: Eren Hatırnaz</p>
<p class="date">Oluşturuldu: 2021-01-24 Sun 22:46</p>
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>
</html>