-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathyazilim-gundemi-21.html
732 lines (682 loc) · 33.9 KB
/
yazilim-gundemi-21.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
<?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 - 21</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 - 21
<br />
<span class="subtitle">9-15 Aralık 2019</span>
</h1>
<div id="table-of-contents">
<h2>İçindekiler</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#orgd5c121f">1. Windows sistemleri etkileyen kritik Git güvenlik açıkları kapatıldı</a></li>
<li><a href="#org9989c01">2. NPM, dosyalara erişim sağlamaya yol açan bir güvenlik açığını kapattı</a></li>
<li><a href="#org975fcc3">3. NGINX Rusya ofisi polis tarafından basıldı ve 2 kişi tutuklandı</a></li>
<li><a href="#org09226a8">4. Dart programlama dilinin 2.7 sürümü duyuruldu</a>
<ul>
<li><a href="#org600bf9e">4.1. Eklenti metodları</a></li>
<li><a href="#orgddd25a5">4.2. Null Safety</a></li>
</ul>
</li>
<li><a href="#orge40adfa">5. Flutter 1.12 duyuruldu</a></li>
<li><a href="#org8842814">6. Android Açık Kaynak Projesine code search web arayüzü eklendi</a></li>
<li><a href="#org25ba82c">7. Mikro-kontrolcüler için Qt kütüphanesinin 1.0 sürümü yayınlandı</a></li>
<li><a href="#orgc9a7596">8. Visual Studio Code Kasım 2019 (v1.41) sürümü yayınlandı</a></li>
<li><a href="#orga3ddba7">9. Yaklaşan Etkinlikler</a></li>
<li><a href="#orgbc4116a">10. Diğer Haberler</a></li>
<li><a href="#orgbbe02a1">11. 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="../20/yazilim-gundemi-20.html">< Önceki Gündem</a> | <b>9-15 Aralık 2019</b> | <a href="../22/yazilim-gundemi-22.html">Sonraki Gündem ></a>
</p>
<p>
<a href="https://teknoseyir.com/blog/yazilim-gundemi-21-9-15-aralik-2019">TeknoSeyir'de Oku</a>
</p>
</div>
<div id="outline-container-orgd5c121f" class="outline-2">
<h2 id="orgd5c121f"><span class="section-number-2">1</span> Windows sistemleri etkileyen kritik Git <a href="https://github.blog/2019-12-10-multiple-git-vulnerabilities-in-2-24-and-older/">güvenlik açıkları kapatıldı</a></h2>
<div class="outline-text-2" id="text-1">
<p>
Aslında güvenlik açıkları sadece Windows sistemleri etkilemiyor, aynı zamanda
sisteminizde NTFS olarak formatlanmış bir disk bölümünüz varsa bu açıklarsan
sizde etkilenebilirsiniz. Git geliştiricileri, mümkün olan en kısa sürede Git
sürümlerinizi güncellemenizi öneriyor. Güvenlik açıklarının teknik detayları
başka güvenlik sorunlarına neden olabileceği için henüz yayınlanmamış fakat yol
açtıkları sorunlar hakkında kısa bilgilendirmelere ulaştım. Şöyle ki:
</p>
<ul class="org-ul">
<li><a href="https://github.com/git/git/security/advisories/GHSA-2pw3-gwg9-8pqr">CVE-2019-1348</a>: <code>git fast-import</code> komutunun <code>--export-marks</code> argümanından
kaynaklanan dosya yollarının üzerine yazmayla ilgili bir güvenlik açığı.</li>
<li><a href="https://github.com/git/git/security/advisories/GHSA-4qvh-qvv7-frc7">CVE-2019-1349</a>: <code>git clone</code> komutu ile resurcive olarak submodule indirirken
uzaktan kod çalıştırmaya yarayan güvenlik açığı.</li>
<li><a href="https://github.com/git/git/security/advisories/GHSA-44fr-r2hj-3f4x">CVE-2019-1350</a>: Unutulan bir tırnak işaretiyle <code>git clone
--recurse-submodules</code> komutunun farklı komutlar çalıştırmasına yol açan bir
güvenlik açığı.</li>
<li><a href="https://github.com/git/git/security/advisories/GHSA-39hj-fvvf-mq4f">CVE-2019-1351</a>: <code>git clone</code> komutunun, Windows'daki alfabetik olmayan (C,D
yerine 1 ya da Unicode karakter içeriyorsa) mantıksal disk bölümlerinin
üzerine yazmasına neden olan güvenlik güvenlik açığı.</li>
<li><a href="https://github.com/git/git/security/advisories/GHSA-5wph-8frv-58vj">CVE-2019-1352</a>: <code>git clone</code> işlemi sırasında NTFS Alternate Date Streams ile
ilişkili bir sorun yüzünden <code>.git</code> klasörü içerisindeki dosyaların üzerine
yazmaya neden olan bir güvenlik açığı.</li>
<li><a href="https://github.com/git/git/security/advisories/GHSA-589j-mmg9-733v">CVE-2019-1353</a>: WSL üzerinde Git kullanırken NTFS'in Shortnames özelliğinden
kaynaklanan bir sorun yüzünden <code>git clone</code> sırasında uzaktan kod çalıştırmaya
imkan sağlayan bir güvenlik açığı.</li>
<li><a href="https://github.com/git/git/security/advisories/GHSA-xjx4-8694-q2fq">CVE-2019-1354</a>: Windows'daki klasör isimlerinde \ işaretinin farklı amaç için
kullanılmasından doğan dosyaların üzerine yazabilmeyi sağlayan bir güvenlik
açığı.</li>
<li><a href="https://github.com/git/git/security/advisories/GHSA-4wfr-gwrh-8mj2">CVE-2019-1387</a>: Submodule isimlerinin doğrulaması sırasında oluşan hatadan
doğan güvenlik açığı.</li>
<li><a href="https://github.com/git/git/security/advisories/GHSA-cj5c-9839-g2ch">CVE-2019-19604</a>: <code>.gitmodules</code> dosyasında bir scripti ya da çalıştırılabilir
dosyayı işaret eden komut barındırmaya yarayan bir güvenlik açığı.</li>
</ul>
<p>
Görüldüğü gibi güvenlik açıklarının sayısı epey bir fazla, bu yüzden mutlaka
mümkün olan en kısa zamanda Git sürümlerinizi güncelleyin. Eğer yakın bir
zamanda güncelleyemeyecek durumdaysanız şunları yapmaktan kaçının:
</p>
<ul class="org-ul">
<li><code>git clone --recurse-submodule</code> ve <code>git submodule update</code> komutlarını çalıştırmak,</li>
<li>Güvenmediğiniz depolar için <code>git fast-import</code> komutunu çalıştırmak,</li>
<li>Güvenmediğiniz depoları NTFS formatlı bir disk barındıran sistem üzerinde
clone etmek.</li>
</ul>
<p>
Bu güvenlik açıklarını kapatan Git sürümleri ise şu şekilde: v2.24.1, v2.23.1,
v2.22.2, v2.21.1, v2.20.2, v2.19.3, v2.18.2, v2.17.3, v2.16.6, v2.15.4 ve
v2.14.6.
</p>
</div>
</div>
<div id="outline-container-org9989c01" class="outline-2">
<h2 id="org9989c01"><span class="section-number-2">2</span> NPM, dosyalara erişim sağlamaya yol açan bir <a href="https://blog.npmjs.org/post/189618601100/binary-planting-with-the-npm-cli">güvenlik açığını kapattı</a></h2>
<div class="outline-text-2" id="text-2">
<p>
Güvenlik açığı hakkında yeterince teknik bilgi sağlanmasa da NPM
geliştiricileri, package.json dosyasının işlenmesi sırasında doğan bir güvenlik
açığı kullanıcının bilgisayarındaki herhangi bir dosyaya erişim ve değiştirme
yetkisi verilmesine neden oluyor. Anladığım kadarıyla bu işlemi yapabilmesi
için paket yayınlayıcısının package.json dosyasına bir takım binary kodlar
eklemesi gerekiyor. Sorun package.json dosyasının işlenmesinden doğduğu için
aynı güvenlik açığı yarn paket yöneticisinde de mevcut. NPM takımı, npm
sistemindeki kayıtlı tüm package.json dosyalarında bu tarz bir açıktan
faydalanan paketleri bulmaya çalışmış fakat bir şey çıkmamış. Tabii ki yine de
gerekli güncellemelerin en kısa zamanda yapılmasını şiddetle tavsiye ediyorlar.
</p>
</div>
</div>
<div id="outline-container-org975fcc3" class="outline-2">
<h2 id="org975fcc3"><span class="section-number-2">3</span> NGINX Rusya ofisi polis tarafından <a href="https://www.zdnet.com/google-amp/article/russian-police-raid-nginx-moscow-office/">basıldı</a> ve 2 kişi tutuklandı</h2>
<div class="outline-text-2" id="text-3">
<div class="figure">
<p><img src="gorseller/nginx-polis-baskını.png" alt="nginx-polis-baskını.png" height="250" />
</p>
</div>
<p>
NGINX'i hepimiz, şu anda en çok kullanılan web sunucu araçlarından birisi
olarak tanıyoruz, geliştiricisi Igor Sysoev, NGINX'i 2004 yılında açık kaynak
olarak lisanslı şekilde duyurmuştu fakat o zamanlarda henüz NGINX kendisinin
tam zamanlı işi değildi ve Rusya'nın popüler arama motorlarından biri olan
Rambler için çalışıyormuş. Bu haftanın gündemine oturmasının sebebi de bundan
kaynaklı. Geliştirici başka bir firma için çalışırken o firmanın sağladığı
imkanlar ile bu yazılımı geliştirdiği için bir telif hakkı sorunu ortaya çıkmış
ve polis baskını ile kaynak kodlar ve çeşitli belgelere el konulmuş. Aslında bu
durumun yeni ortaya çıkması çok ilginç çünkü geliştirici 2012 yılında verdiği
<a href="https://habr.com/ru/company/xakep/blog/136354/">bir röportajda</a> (rusça) kendisi de söylemişti "o zamanlar Rambler için
çalışıyordum" diye fakat ilgili firmanın yeni aklına düşmüş herhalde ya da
başka bir takım olaylar var. Ayrıca kodlara el koymaları da ilginç olmuş NGINX
zaten açık kaynak, el koymak için baskın yapmanıza gerek yoktu. Zaten böyle bir
telif hakkı sorunu için polis baskını yapmak ayrı bir saçmalık gibi geliyor
bana. Baskında polisler şöyle mi seslendiler acaba: "Şimdi sakin ol ve elindeki
klavyeyi yavaşça bana doğru uzat evlat!" :)
</p>
<p>
Tutuklanan kişilerin de NGINX'in yaratıcı Igor Sysoev ve şirketin ortaklarından
biri olduğu yönünde haberler var. Konu <a href="https://news.ycombinator.com/item?id=21771144">HackerNews</a> ve <a href="https://www.reddit.com/r/linux/comments/e9oub4/sorry_cannot_find_good_related_subreddits_to/">Reddit</a> gibi platformlarda
yaklaşık bir gün boyunca üst sıralarda kaldı ve geliştiricilerin gündemine
oturdu.
</p>
</div>
</div>
<div id="outline-container-org09226a8" class="outline-2">
<h2 id="org09226a8"><span class="section-number-2">4</span> Dart programlama dilinin 2.7 sürümü <a href="https://medium.com/dartlang/dart-2-7-a3710ec54e97">duyuruldu</a></h2>
<div class="outline-text-2" id="text-4">
<div class="figure">
<p><img src="gorseller/dart-2-7.png" alt="dart-2-7.png" />
</p>
</div>
<p>
Google tarafından geliştirilen, <a href="https://github.com/flutter/flutter">Flutter</a> isimli hibrit mobil uygulamalar
geliştirmeye yarayan uygulama çatısıyla popülerlik kazanan yine Google
tarafından geliştirilen programlama dili Dart programlama dilinin bu hafta
içerisinde 2.7 numaralı sürümü duyuruldu. Aynı zamanda Dart, bu yıl yayınlanan
GitHub Octoverse raporunda (bkz: <a href="../17/yazilim-gundemi-17.html">Yazılım Gündemi - 17</a>) en hızlı büyüyen birinci
programlama dili seçilmişti. Dille ilgili hiçbir deneyimim yok ama eklenen
özellikleri anlayabildim. O halde 2 özelliğe birlikte bakalım:
</p>
</div>
<div id="outline-container-org600bf9e" class="outline-3">
<h3 id="org600bf9e"><span class="section-number-3">4.1</span> Eklenti metodları</h3>
<div class="outline-text-3" id="text-4-1">
<p>
Bu özellik sayesinde artık herhangi bir tip için özel bir fonksiyon
ekleyebileceksiniz. Tip'in sizin tarafınızdan yaratılmış olması da
gerekmiyor. Örnek verecek olursak:
</p>
<div class="org-src-container">
<pre class="src src-dart">extension <span class="org-type">ParseNumbers</span> <span class="org-variable-name">on</span> <span class="org-type">String</span> {
<span class="org-type">int</span> <span class="org-function-name">parseInt</span>() {
<span class="org-keyword">return</span> <span class="org-type">int</span>.parse(<span class="org-keyword">this</span>);
}
}
<span class="org-function-name">main</span>() {
<span class="org-type">int</span> <span class="org-variable-name">i</span> = <span class="org-string">'55'</span>.parseInt();
print(i);
}
</pre>
</div>
<p>
Yukarıda String veri tipine <code>parseInt</code> isminde bir fonksiyon ekledik ve String
içerisine yazılan bir sayının <code>int</code> veri tipine çevrilmesini sağladık.
</p>
</div>
</div>
<div id="outline-container-orgddd25a5" class="outline-3">
<h3 id="orgddd25a5"><span class="section-number-3">4.2</span> Null Safety</h3>
<div class="outline-text-3" id="text-4-2">
<p>
Henüz preview aşamasında olsa da faydalı bir özellik. Örnek üzerinden
inceleyelim:
</p>
<div class="org-src-container">
<pre class="src src-dart"><span class="org-keyword">class</span> <span class="org-type">Kisi</span> {
<span class="org-type">String</span> <span class="org-variable-name">ad</span>;
<span class="org-type">DateTime</span> <span class="org-variable-name">dogumTarihi</span>;
<span class="org-type">Kisi</span>(<span class="org-keyword">this</span>.ad, <span class="org-keyword">this</span>.dogumTarihi);
<span class="org-type">void</span> <span class="org-function-name">tanit</span>() {
print(ad);
<span class="org-type">int</span> <span class="org-variable-name">dogumYili</span> = dogumTarihi?.year;
print(<span class="org-string">"</span><span class="org-variable-name">${DateTime.now().year - dogumYili}</span><span class="org-string"> yıl önce doğmuştur"</span>);
}
}
</pre>
</div>
<p>
Örnekte dikkat etmeniz gereken <b>?</b> karakterinin kullanımı. <b>?</b> karakteri ile
yapılan aslında şuydu: <code>dogumTarihi</code> property'sinde değer tanımlıysa year
property'sini getir. Yani doğum tarihinin girilmediği durumlarda <i>year metodu
bulunamadı</i> gibi bir takım hatalardan kaçınılmış oldu.
</p>
<p>
Dart programlama dilinin yeni sürümü ile gelen diğer özellik ve değişiklikler
için konu başlığına eklediğim blog yazını okuyabilirsiniz.
</p>
</div>
</div>
</div>
<div id="outline-container-orge40adfa" class="outline-2">
<h2 id="orge40adfa"><span class="section-number-2">5</span> Flutter 1.12 <a href="https://medium.com/flutter/announcing-flutter-1-12-what-a-year-22c256ba525d">duyuruldu</a></h2>
<div class="outline-text-2" id="text-5">
<p>
Google tarafından Dart programlama dili ile geliştirilen hibrit uygulama
geliştirme çatısının bu hafta 1.12 sürümü duyuruldu. Duyurulan bazı şeyler bu
şekilde:
</p>
<ul class="org-ul">
<li>MacOS desteği eklendi. Windows ve Linux desteği de eklenecek.</li>
<li>Web desteği beta olarak duyuruldu.</li>
<li>Geliştirici ve tasarımcıların birlikte çalışmasını kolaylaştırmak için
Google ve Adobe XD partnerliği duyuruldu.</li>
<li>iOS 13'de eklenen Dark mode özelliğine erişebilme desteği,</li>
<li>AndroidX desteği,</li>
<li>Google Fonts desteği,</li>
</ul>
<div class="figure">
<p><img src="gorseller/flutter112-macos.gif" alt="flutter112-macos.gif" />
</p>
</div>
<p>
Bu hafta <a href="https://teknoseyir.com/durum/1186783">benim de katıldığım</a> <a href="https://www.meetup.com/tr-TR/GDGTrabzon/events/265973568/">GDG DevFest '19 Trabzon</a> etkinliğinde Flutter
1.12'de eklenen MacOS ve Web desteğinin de demosu yapıldı. Açıkcası her ne
kadar Google teknolojileri ilgimi çekmese de mobil uygulamanın aynısın hem
mobilde hem de masaüstü ve web ortamlarında aynı şekilde çalıştığını kanlı
canlı görmek beni şaşırtmadı değil. Sunumu yapan kişinin Flutter 1.12 ile gelen
özellikler hakkında <a href="https://medium.com/@sercanyusuf/flutter-interact-all-you-need-to-know-207f5ffccfb9">yayınlandığı yazıyı da</a> okumanızı tavsiye ederim.
</p>
</div>
</div>
<div id="outline-container-org8842814" class="outline-2">
<h2 id="org8842814"><span class="section-number-2">6</span> Android Açık Kaynak Projesine code search <a href="https://android-developers.googleblog.com/2019/12/code-search-with-cross-references-for-aosp.html">web arayüzü eklendi</a></h2>
<div class="outline-text-2" id="text-6">
<p>
Biliyorsunuz ki Android ilk 1.0 sürümünden beri açık kaynak bir mobil işletim
sistemi. Şu anda Google'ın dağıttığı daha özel bir hali olsa da orijinal
Android kaynak kodları da yine Google tarafından sunulmaktaydı. Fakat bu kaynak
kodlar içerisinde gezinmek o kadar kolay değildi. Şimdi ise yepyeni ve modern
bir arayüze sahip bir proje haline geldi. Üstelik fonksiyonun tanımlandığı ve
kullanıldığı yerleri de göstermek gibi özellikleri de mevcut. İlgili arkadaşlar
mutlaka incelesinler: <a href="https://cs.android.com/">https://cs.android.com/</a>
</p>
</div>
</div>
<div id="outline-container-org25ba82c" class="outline-2">
<h2 id="org25ba82c"><span class="section-number-2">7</span> Mikro-kontrolcüler için Qt kütüphanesinin 1.0 <a href="https://www.qt.io/blog/qt-for-mcus-1.0">sürümü yayınlandı</a></h2>
<div class="outline-text-2" id="text-7">
<p>
Geçtiğimiz yazılım gündemi yazılarında (bkz: <a href="../06/yazilim-gundemi-06.html">Yazılım Gündemi - 6</a>) bahsettiğim
mikro-kontrolcüler üzerinde Qt kütüphanesi ile kullanışlı ve güzel arayüzler
tasarlamaya yarayan kütüphanenin 1.0 sürümü bu hafta yayınlandı. Maalesef C++
deneyimim pek olmadığı için detaylar hakkında fazla bilgiye sahip değilim.
Bilgi olan arkadaşların yorumlar bölümünde katkılarını bekliyorum. Detaylar ve
rehberler için konu başlığına eklediğim bağlantıya tıklayabilirsiniz.
</p>
</div>
</div>
<div id="outline-container-orgc9a7596" class="outline-2">
<h2 id="orgc9a7596"><span class="section-number-2">8</span> Visual Studio Code Kasım 2019 (v1.41) <a href="https://code.visualstudio.com/updates/v1_41">sürümü yayınlandı</a></h2>
<div class="outline-text-2" id="text-8">
<div class="figure">
<p><img src="gorseller/vscode-1-41.png" alt="vscode-1-41.png" />
</p>
</div>
</div>
</div>
<div id="outline-container-orga3ddba7" class="outline-2">
<h2 id="orga3ddba7"><span class="section-number-2">9</span> Yaklaşan Etkinlikler</h2>
<div class="outline-text-2" id="text-9">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides" width="100%">
<colgroup>
<col class="org-left" />
<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">Yeri</th>
<th scope="col" class="org-left">Tarihi</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left"><a href="https://www.ariteknokent.com.tr/tr/ekosistem/beetech">Beetech</a></td>
<td class="org-left">İstanbul</td>
<td class="org-left">17 Aralık 10:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://www.eventbrite.com/e/postgresql-de-sharding-fdw-ve-partitioning-tickets-85763158917">PostgreSQL' de sharding & FDW ve Partitioning</a></td>
<td class="org-left">Ankara</td>
<td class="org-left">17 Aralık 18:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://www.meetup.com/Teknolot/events/267080760/">Global AI Bootcamp 2019 Türkiye</a></td>
<td class="org-left">İstanbul</td>
<td class="org-left">17 Aralık 19:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://kommunity.com/software-craftsmanship-turkey/events/panel-yazilimcinin-yolu">Panel: Yazılımcının Yolu</a></td>
<td class="org-left">İstanbul</td>
<td class="org-left">18 Aralık 19:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://www.eventbrite.com/e/oyun-gelistirme-gunleri-2-tickets-84091625315">Oyun Geliştirme Günleri 2</a></td>
<td class="org-left">İstanbul</td>
<td class="org-left">19 Aralık 12:30</td>
</tr>
<tr>
<td class="org-left"><a href="https://www.meetup.com/Ankara-Tech-Talks/events/267184427/">Ankara Tech Talks & JetBrains - S02E3 - Kotlin Night</a></td>
<td class="org-left">Ankara</td>
<td class="org-left">19 Aralık 18:30</td>
</tr>
<tr>
<td class="org-left"><a href="https://www.meetup.com/Sahibinden-D2D-Events/events/267159689/">Agile’dan DevSecOps’a giden yol</a></td>
<td class="org-left">İstanbul</td>
<td class="org-left">19 Aralık 19:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://www.meetup.com/Istanbul-Java-User-Group/events/267106749/">Alternatif JVM'ler ve Java'nın geleceği</a></td>
<td class="org-left">Online</td>
<td class="org-left">19 Aralık 19:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://www.eventbrite.com/e/siber-guvenlikte-kariyer-tickets-85975261321?aff=ebdssbdestsearch">Siber Güvenlikte Kariyer</a></td>
<td class="org-left">İstanbul</td>
<td class="org-left">20 Aralık 18:30</td>
</tr>
<tr>
<td class="org-left"><a href="https://www.eventbrite.com/e/snort-ile-savunma-keyfi-hacknightsorg-tickets-78022805311">Snort ile Savunma Keyfi</a></td>
<td class="org-left">Ankara</td>
<td class="org-left">20 Aralık 19:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://www.meetup.com/rladies-ankara/events/267184624/">Temel R Eğitimi 2</a></td>
<td class="org-left">Ankara</td>
<td class="org-left">21 Aralık 12:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://www.meetup.com/IzmirGophers/events/267057206/">Go 101 Workshop ve Yazılım Tasarımında Paradigmalar</a></td>
<td class="org-left">İzmir</td>
<td class="org-left">21 Aralık 15:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://www.meetup.com/IBMCloudTR/events/266704608/">Deploy Java Microservices to OpenShift on IBM Cloud</a></td>
<td class="org-left">İstanbul</td>
<td class="org-left">24 Aralık 19:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://www.meetup.com/ING-%25C4%25B0novasyon-Merkezi/events/266639841/">Bir Yazılım Geliştirici İçin Çeviklik Neden Önemli?</a></td>
<td class="org-left">İstanbul</td>
<td class="org-left">27 Aralık 18:30</td>
</tr>
<tr>
<td class="org-left"><a href="https://www.meetup.com/Facebook-Developer-Circle-Ankara/events/267134880/">Facebook Developer Circle: Ankara, Advanced React Concepts</a></td>
<td class="org-left">Ankara</td>
<td class="org-left">28 Aralık 10:00</td>
</tr>
<tr>
<td class="org-left"><a href="https://www.meetup.com/rladies-istanbul/events/267184117/">R ile Zaman Serileri</a></td>
<td class="org-left">İstanbul</td>
<td class="org-left">28 Aralık 12:30</td>
</tr>
<tr>
<td class="org-left"><a href="https://www.meetup.com/Facebook-Developer-Circle-Istanbul/events/267037979/">PyTorch ile Deep Learning'e Giriş</a></td>
<td class="org-left">İstanbul</td>
<td class="org-left">28 Aralık 15:00</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-orgbc4116a" class="outline-2">
<h2 id="orgbc4116a"><span class="section-number-2">10</span> Diğer Haberler</h2>
<div class="outline-text-2" id="text-10">
<ul class="org-ul">
<li>İlk ticari bilgisayar için programlama dili yazan Tony Brooker, 94
yaşında <a href="https://www.nytimes.com/2019/12/13/technology/tony-brooker-dead.html">hayata veda etti</a>.</li>
<li>Google Compute Engine için yeni bir sanal makine ailesi <a href="https://cloud.google.com/blog/products/compute/google-compute-engine-gets-new-e2-vm-machine-types">duyurdu:
E2</a>.</li>
<li>Lincoln Labs: "Uzay araçlarının yazılımları için <a href="https://www.reddit.com/r/rust/comments/earm80/lincoln_labs_endorses_rust_for_spacecraft/">Rust kullanılabilir</a>"</li>
<li>Visual Studio 2019 16.4 sürümü <a href="https://docs.microsoft.com/en-us/visualstudio/releases/2019/release-notes">duyuruldu</a>.</li>
<li>Vim 8.2 sürümü <a href="https://www.vim.org/vim-8.2-released.php">yayınlandı</a>.</li>
<li>JDK 14 Erken Erişim sürümü <a href="https://jdk.java.net/14/">yayınlandı</a>.</li>
<li>Crystal programlama dilinin 0.32.0 sürümü <a href="https://crystal-lang.org/2019/12/11/crystal-0.32.0-released.html">yayınlandı</a>.</li>
<li>Python için geliştirilmiş bağımlılık yönetimi aracı Poetry 1.0.0
sürümünü <a href="https://python-poetry.org/blog/announcing-poetry-1-0-0.html">duyurdu</a>. <a href="https://github.com/python-poetry/poetry">GitHub Deposu</a></li>
<li>Qt 5.14 sürümü <a href="https://www.qt.io/blog/qt-5.14-has-released">yayınlandı</a>.</li>
<li>Açık kaynak takım için sohbet aracı Zulip, 2.1 sürümünü <a href="https://blog.zulip.org/2019/12/13/zulip-2-1-released/">duyurdu</a>.</li>
<li>Komut satırından JSON görüntülemeye yarayan araç fx, 16.0.0
sürümünü <a href="https://github.com/antonmedv/fx/releases/tag/16.0.0">yayınladı</a>.</li>
<li>Rust ile yazılmış 3D renger kütüphanesi <a href="https://leod.github.io/rust/gamedev/rendology/2019/12/13/introduction-to-rendology.html">duyuruldu</a>: <a href="https://github.com/leod/rendology">Rendology</a>.</li>
<li>MathSharp, 2.0.0-pre sürümü <a href="https://www.nuget.org/packages/MathSharp/">çıktı</a>.</li>
<li>Barman, 2.10 sürümü <a href="https://www.pgbarman.org/barman-2-10-released/">çıktı</a>.</li>
<li>LibICal 0.1.0 sürümü <a href="https://imag-pim.org/blog/2019/12/13/libical-v0.1.0/">duyuruldu</a>. <a href="https://github.com/matthiasbeyer/libical/">GitHub Deposu</a></li>
</ul>
</div>
</div>
<div id="outline-container-orgbbe02a1" class="outline-2">
<h2 id="orgbbe02a1"><span class="section-number-2">11</span> Lisans</h2>
<div class="outline-text-2" id="text-11">
<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-21.html">Yazılım Gündemi - 21</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: 16 Aralık 2019</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>