November 2022 Newsletter

Welcome to the November edition of our monthly newsletter! In this issue, we have a lot of exciting news and updates to share with you. From highlights from the past month to upcoming events, there's a lot to catch up on. We hope you enjoy reading this newsletter and encourage you to share it with others. Thanks for being a part of our community, and we look forward to staying connected with you in the coming month.

The opening you have read is brought to you by “chat.openapi”, and it has prepared some jokes for you as well.

Contents 📋


News & Explore

If you have noticed the images are all output of AI. You can test it out yourselves at ChatGPT (opens in a new tab) to make a conversation, refactor your code…

Eslint Rewrite

After nearly ten years of usage, improvements, and developments, Eslint is about to get a makeover and will be rewritten.

Complete rewrite of ESLint · Discussion #16557 · eslint/eslint (opens in a new tab)

State of JS 2022

The annual developer survey of the JavaScript ecosystem has prepared the latest survey, and it is waiting for you to fill it out.

State of JavaScript 2022 (opens in a new tab)

tRPC - Biggest Release

End-to-end typesafe API tool “tRPC” has released its new major version, 10. Packed with improvements, improvements on DX.

Announcing tRPC v10 | tRPC (opens in a new tab)

GraphQL replacement: tRPC

Since tRPC has its biggest release Echobind team has migrated its codebase from GraphQL to tRPC. Usage, performance, bundle size differences, and more…

Why we ditched GraphQL for tRPC (opens in a new tab)

Ant Design 5.0

Ant Design a design language that we are using in our projects has released its major version 5.

Ant Design 5.0 is released!✨ ANNOUNCEMENT (opens in a new tab)

Expo SDK 47

This one is for mobile developers, Expo has released its new version, and it brings a lot of new features like file-based routing, an updated React version…

Medium Blog Post (opens in a new tab)

Angular is back…

Angular has come back to the playground with its release of version 15. Removing legacy compiler and rendering pipeline, standalone APIs, better stack traces…

https://blog.angular.io/angular-v15-is-now-available-df7be7f2f4c8 (opens in a new tab)

Duplicates in 28 Million Strings

Have you ever tried to figure out how you can find unique values from a given array of values? Imagine this array size is 28 million. How would you solve it?

Deduping 28 Million Strings Using JavaScript (opens in a new tab)


Read & Watch

Let’s Refactor that code

No code shaming; we all have been there and written unnecessary, long code blocks. We are happy that it works, and that’s all you need when starting your journey but let’s see how this can be refactored and optimized.

Refactoring A Junior’s React Code - 43% Less Code With A Better Data Structure (opens in a new tab)

Next.js and TS plugin

Watch the thread on Twitter that explains a new plugin that is made for Next.js to see how it can help you.

Delba on Twitter (opens in a new tab)

GitHub Universe

GitHub’s online conference, updates, news, and the latest information. Check out their videos to go through for GitHub Universe Event.

GitHub (opens in a new tab)

Traits You Can Change and Traits You Can't

As humans, we tend to adapt, improve, and change; some things that we might be able to change, and some we may not able to.

Traits You Can Change, and Traits You Can’t (opens in a new tab)


Challenge

Like our introduction this month, our challenge is generated by AI as well.

Create a class called Tree that represents a binary tree. The class should have the following methods:

  • insert(value: T): void: inserts a value into the tree. The value should be inserted in the correct position according to the rules of a binary tree (i.e., to the left of a node if it is less than the node's value, and to the right if it is greater than the node's value).
  • find(value: T): T | null: searches the tree for the specified value and returns it if it is found, or null if it is not found.
  • traverse(): T[]: returns an array of all the values in the tree in the order they were inserted.
  • remove(value: T): void: removes the specified value from the tree if it exists.

The Tree class should be generic so that it can work with any type of value (not just numbers).

To solve this challenge, you will need to use TypeScript's type system and type-checking features to ensure that the Tree class works correctly with any type of value. You will also need to implement the binary tree data structure and its associated methods in a correct and efficient manner.

Good luck!

Here is an example of how the class should be used:

// create a new Tree of numbers
const tree = new Tree<number>();
 
// insert some values
tree.insert(10);
tree.insert(5);
tree.insert(15);
tree.insert(3);
 
// traverse the tree and get an array of all the values in order
const values = tree.traverse();
console.log(values);
// should print [3, 5, 10, 15]
 
// search for a value
const searchResult = tree.find(5);
console.log(searchResult);
// should print 5
 
// remove a value
tree.remove(5);
 
// traverse the tree again to verify that the value was removed
const updatedValues = tree.traverse();
console.log(updatedValues);
// should print [3, 10, 15]

Merhaba! Bu ayki haber bültenimizin Kasım sayısına hoş geldiniz! Bu sayıda, paylaşmak için heyecan verici haberler ve güncellemeler var. Geçen ayın öne çıkanlarından gelecekteki etkinliklere kadar, burada okumaya değecek çok şey var. Bu haber bültenini okumayı keyifli bulacağınızı umuyoruz ve başkalarıyla paylaşmanızı teşvik ediyoruz. Topluluğumuza katılımınız için teşekkür ederiz ve gelecek ayda sizinle iletişimde kalmayı dört gözle bekliyoruz.

Okuduğunuz bu giriş yazısı sizlere “chat.openapi” tarafından yazıldı. Sizler için bazı şakalarda hazırladı.

İçerik 📋

Haberler & Keşif

Farkettiğiniz üzere yukardaki şaka ve giriş metni sizlere AI tarafından hazırlandı. ChatGPT (opens in a new tab) ile sizlerde sohbet edebilir yada kodunuzu refactor edebilirsiniz.

Eslint’i yeniden yazma

Yaklaşık 10 senedir kullanım, geliştirme ve iyileştirme, Eslint yeniden yazılıcak.

https://github.com/eslint/eslint/discussions/16557 (opens in a new tab)

State of JS 2022

Her yıl olduğu gibi bu yıl da düzenlenen “State of JS” anketi sizlerin yanıtlarını bekliyor.

https://survey.devographics.com/survey/state-of-js/2022 (opens in a new tab)

tRPC - En büyük Versiyon

Sonuç odaklı türde güvenli API aracı "tRPC", yeni büyük sürümü 10'u yayınladı. Gelişmelerle dolu ve DX'de iyileştirmelerle dolu.

Node 19 Release (opens in a new tab)

GraphQL yerine tRPC

Echobind ekibi, kodlarını GraphQL'den tRPC'ye taşıdı. Kullanım, performans, paket boyutu farklılıkları ve daha fazlası…

https://echobind.com/post/why-we-ditched-graphql-for-trpc (opens in a new tab)

Ant Design 5.0

Projelerde genellikle kullanılan ve büyük tasarım dillerinden biri olan Ant Design yeni sürümü 5’i yayınladı

https://github.com/ant-design/ant-design/issues/38671 (opens in a new tab)

Expo SDK 47

Bu sefer mobil geliştiriciler için. Expo, yeni sürümünü yayınladı ve dosya tabanlı routing, güncellenmiş React sürümü gibi birçok yeni özellik getiriyor…

https://blog.expo.dev/expo-sdk-47-a0f6f5c038af (opens in a new tab)

Angular geri geliyor…

Angular, 15. sürümünün yayınlanmasıyla oyun alanına geri döndü. Eski derleyici ve işleme hatlarını kaldırarak, bağımsız API'ler, daha iyi yığın izleriyle…

Duplicates in 28 Million Strings

Bir verilen değerler dizisinden benzersiz değerleri nasıl bulabileceğinizi düşündünüz mü? Bu dizinin boyutunun 28 milyon olduğunu düşünün. Bunu nasıl çözerdiniz?

https://stackoverflow.com/questions/74329830/deduping-28-million-strings-using-javascript (opens in a new tab)


Oku ve Izle

Let’s Refactor that code

Code shaming yapmıyoruz; hepimiz zamanında gereksiz ve gereğinden uzun kodlar yazdık. Çalıştığı için mutluyuz ve daha yolun başında iken gereken tek şey. Bakalım bu kodları nasıl refactor ve optimize edebiliriz.

https://profy.dev/article/react-junior-code-review-and-refactoring-1 (opens in a new tab)

Next.js ve TS eklentisi

Twitter thread’ini taki edin ve Next.js’in yeni getirdiği eklentisinin sizlere nasıl yardım edebileceğini görün.

https://twitter.com/delba_oliveira/status/1592209522281439232 (opens in a new tab)

**GitHub Universe**

GitHub’ın online konferansı, geliştirmeleri, haberleri ve son durum hakkında bilgilendirmeleri. Konferansın videolarını online bi şekilde bulup izleyebilirsiniz.

https://www.youtube.com/@GitHub (opens in a new tab)

Değiştirebiliceğiniz ve Değiştiremeyeceğiniz Özellikleriniz

İnsanlar olarak, ortama adapte olur, gelişir yada değişiriz: bakalım hangi özelliklerimizi değiştirebilir hangilerini değiştiremeyiz.

https://staysaasy.com/leadership/2022/11/06/traits-you-can-change-and-traits-you-cant.html (opens in a new tab)


Meydan Okuma

Giriş yazısı gibi bu ayki meydan okuma’da sizlere AI tarafından getirildi.

Bir ikili ağaç temsil eden Tree adlı bir sınıf oluşturun. Sınıf, aşağıdaki yöntemlere sahip olmalıdır:

  • insert(value: T): void: ağaca bir değer ekler. Değer, ikili ağaç kurallarına göre doğru pozisyona eklenmelidir (yani, bir düğümün değerinden düşükse bir düğümün soluna, büyükse de sağına).
  • find(value: T): T | null: ağacı belirtilen değer için arar ve bulursa döndürür, bulamazsa null döndürür.
  • traverse(): T[]: ağaçtaki tüm değerlerin bir dizisini, eklenme sırasına göre döndürür.
  • remove(value: T): void: belirtilen değeri, eğer varsa, ağaçtan kaldırır.

Tree sınıfı, sadece sayılarla değil, herhangi bir türdeki değerlerle çalışabilecek şekilde genel olmalıdır.

Bu meydan okumayı çözmek için, Tree sınıfının herhangi bir türdeki değerlerle doğru bir şekilde çalıştığından emin olmak için TypeScript'in tür sistemi ve tür kontrolü özelliklerini kullanmanız gerekir. Ayrıca, ikili ağaç veri yapısını ve ilişkili yöntemlerini doğru ve verimli bir şekilde uygulamanız gerekir.

Bol şanslar.

Aşağıda nasıl çalışması gerektiğine dair örnek bulabilirsiniz.

// Sayılardan oluşan bir Tree oluşturalım
const tree = new Tree<number>();
 
// insert some values
tree.insert(10);
tree.insert(5);
tree.insert(15);
tree.insert(3);
 
// traverse methodu ile "Tree" yi gezerek array şeklinde değerleri alalım
const values = tree.traverse();
console.log(values);
// should print [3, 5, 10, 15]
 
// Değeri arayalım
const searchResult = tree.find(5);
console.log(searchResult);
// should print 5
 
// Değeri silelim
tree.remove(5);
 
//  traverse methodu ile "Tree" yi gezerek array şeklinde değerleri alalım ve 5'in silindiğini görelim
const values = tree.traverse();
const updatedValues = tree.traverse();
console.log(updatedValues);
// should print [3, 10, 15]