Hangisisin bul bakalım ? Ninja, çaylak, kod eleştirmeni ? - [ Ninja kodları ]

13 Ara 2021
135
60
vcRcLMS.png

İyi günler Türk Hack Team ailesi.

Ninja kodlaması, kısa, hızlı, gizemli ve çoğu zaman anlaşılması zor olan kodlama tarzıdır. 🤪

Bu gün sizlerle programcı Ninjaların, yazdıkları kodları nasıl okunmaz hale getirdiklerini inceleyeceğiz. Acemi geliştiriciler bazen bunları programcı ninjalardan bile daha iyi kullanırlar. 😄

Kod inceleme uzmanları ise bunları testler yazarak ararlar.


Kim olduğunuzu öğrenmek için okumaya devam edin -
Bir ninja mı, bir acemi mi, yoksa belki de bir kod yorumcusu mu?


DISCLAIMER:
18 yaşından küçükseniz videoyu izlemeden okumaya devam edin.





F3beZqk.png



4ncrwnH.jpeg



[01] Öz olmak ince zekanın ruhudur

Kodunuzu mümkün olduğunca kısa yapın, Ne kadar zeki olduğunuzu gösterin.

JavaScript:
// iyi bilinen bir javascript kitaplığından alınmıştır
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;

Güzel, değil mi? Böyle yazarsanız, bu satırla karşılaşanlar baya bir uzaklara dalar. i'nin değerinin ne olduğunu anlamaya çalışırlar.
Onlara daha kısa olanın her zaman daha iyi olduğunu gösterin.


KOD İNCELEMESİ:
JavaScript:
// TERNARY OPERATOR (ÜÇLÜ KOŞUL OPERATORU)
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;

/*

YAPI: koşul ? doğruysa_yapılacak_ifade : yanlışsa_yapılacak_ifade;

Üçlü koşul operatörü, if-else ifadesinin kısa bir alternatifidir ve sadece
tek bir satırda kullanılır.

DİKKAT: Ancak, yukarıdakı ifadede iç içe geçmiş üçlü koşul operatörleri bulunmaktadır.

*/

DdzsXA4.jpg


Şimdi ise, dikkatinizi ( i = i ? ... : ...; ) dış ternary operatora vermenizi istiyorum, burada bir atama gerçekleştirilmiş. Bildiğiniz üzere tek eşittir işareti değer atama ve değişken tanımlama için kullanılıyor.

Peki, neden ( i ? ... : ...; ) böyle bir ifade yerine, ( i = i ? ... : ...; ) şu şekilde bir ifadeni tercih etmiş ?

Monoton düzeni bozmak ve etkileşimi artırmak adına, bu soruyu cevaplamağı sizlere bırakıyorum, kim bize bu gizemi çözecek acaba 🤨


01 kod incelemesi bu kadar, diğer syntax ifadeler ve methodlar basic level, eğer aramızda diğer kodları anlaya bilmeyen arkadaşlar varsa - onlar için hiç bilinmedik bir site bırakıyorum, hemen hızlıca giriş yapıp araştırma yapa bilirler.

[ Gizli siteye giriş yapmak için bana tıkla ]
F3beZqk.png


[02] Tek harfli değişkenler

Daha kısa kodlamanın başka bir yolu da her yerde tek harfli değişken adları kullanmaktır. a, b veya c gibi.

Kısa bir değişken, ormandaki gerçek bir ninja gibi kodun içinde kaybolur. Hiç kimse editörün "Find" özelliğini kullanarak onu bulamayacaktır. Ve birisi bulsa bile, a veya b adının ne anlama geldiğini "çözemeyecektir".

Ama bir istisna var. Asıl bir ninja genellikle for döngüsünde sayaç olarak kullanılan i harfini kullanmaz. ( i - increment)


Herhangi bir yerde kullanır, ama burada değil. Kullanılmasını bekleyen başka harfler vardır, kod yorumcularını düşünmeye zorlayan. Örneğin x veya y gibi.

Döngü sayacı olarak egzotik bir değişken, özellikle döngü gövdesi 1-2 sayfa alıyorsa harikadır (mümkünse daha uzun yapın). O zaman birisi döngünün derinliklerine bakarsa, x adlı değişkenin döngü sayacı olduğunu hemen anlayamaz.

F3beZqk.png


[03] Kısaltmalar kullanın

Takım kuralları tek harfli ve belirsiz isimlerin kullanılmasını yasaklıyorsa, kısaltın, kısaltmalar yapın.

JavaScript:
list → lst.
userAgent → ua.
browser → brsr.
customerName → custName.
productPrice → prodPrice.
calculateTotalPrice → calcTotalPrice.
ve.b

Her şeyi kısaltmaya çalışın. Sadece sizin yaptıklarınızı anlayanların kodu geliştirmesine izin vermek gibi bir şey.


F3beZqk.png

Fazla uzatmadan ve ilgilendiğinizi anlamak için burada bitireyim. Eğer ilginizi çekerse part 2 gelebilir. Lütfen yorumlarda belirtin.
Eğer konu ilginizi çektiyse diğer konularıma göz atmayı unutmayın!
Broken Access Control [ IDOR ve MFLAC arasındakı fark ]


Sorunlarınız varsa, lütfen sorun.
Okuduğunuz için Teşekkürler.



N0FPWLq.png
 
Son düzenleme:

Agent-47

Katılımcı Üye
23 Mar 2023
411
261
HACKERİSTAN
e
vcRcLMS.png

İyi günler Türk Hack Team ailesi.

Ninja kodlaması, kısa, hızlı, gizemli ve çoğu zaman anlaşılması zor olan kodlama tarzıdır. 🤪

Bu gün sizlerle programcı Ninjaların, yazdıkları kodları nasıl okunmaz hale getirdiklerini inceleyeceğiz. Acemi geliştiriciler bazen bunları programcı ninjalardan bile daha iyi kullanırlar. 😄

Kod inceleme uzmanları ise bunları testler yazarak ararlar.


Kim olduğunuzu öğrenmek için okumaya devam edin -
Bir ninja mı, bir acemi mi, yoksa belki de bir kod yorumcusu mu?


DISCLAIMER:
18 yaşından küçükseniz videoyu izlemeden okumaya devam edin.





F3beZqk.png



4ncrwnH.jpeg



[01] Öz olmak ince zekanın ruhudur

Kodunuzu mümkün olduğunca kısa yapın, Ne kadar zeki olduğunuzu gösterin.

JavaScript:
// iyi bilinen bir javascript kitaplığından alınmıştır
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;

Güzel, değil mi? Böyle yazarsanız, bu satırla karşılaşanlar baya bir uzaklara dalar. i'nin değerinin ne olduğunu anlamaya çalışırlar.
Onlara daha kısa olanın her zaman daha iyi olduğunu gösterin.


KOD İNCELEMESİ:
JavaScript:
// TERNARY OPERATOR (ÜÇLÜ KOŞUL OPERATORU)
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;

/*

YAPI: koşul ? doğruysa_yapılacak_ifade : yanlışsa_yapılacak_ifade;

Üçlü koşul operatörü, if-else ifadesinin kısa bir alternatifidir ve sadece
tek bir satırda kullanılır.

DİKKAT: Ancak, yukarıdakı ifadede iç içe geçmiş üçlü koşul operatörleri bulunmaktadır.

*/

DdzsXA4.jpg


Şimdi ise, dikkatinizi ( i = i ? ... : ...; ) dış ternary operatora vermenizi istiyorum, burada bir atama gerçekleştirilmiş. Bildiğiniz üzere tek eşittir işareti değer atama ve değişken tanımlama için kullanılıyor.

Peki, neden ( i ? ... : ...; ) böyle bir ifade yerine, ( i = i ? ... : ...; ) şu şekilde bir ifadeni tercih etmiş ?

Monoton düzeni bozmak ve etkileşimi artırmak adına, bu soruyu cevaplamağı sizlere bırakıyorum, kim bize bu gizemi çözecek acaba 🤨


01 kod incelemesi bu kadar, diğer syntax ifadeler ve methodlar basic level, eğer aramızda diğer kodları anlaya bilmeyen arkadaşlar varsa - onlar için hiç bilinmedik bir site bırakıyorum, hemen hızlıca giriş yapıp araştırma yapa bilirler.

[ Gizli siteye giriş yapmak için bana tıkla ]
F3beZqk.png


[02] Tek harfli değişkenler

Daha kısa kodlamanın başka bir yolu da her yerde tek harfli değişken adları kullanmaktır. a, b veya c gibi.

Kısa bir değişken, ormandaki gerçek bir ninja gibi kodun içinde kaybolur. Hiç kimse editörün "Find" özelliğini kullanarak onu bulamayacaktır. Ve birisi bulsa bile, a veya b adının ne anlama geldiğini "çözemeyecektir".

Ama bir istisna var. Asıl bir ninja genellikle for döngüsünde sayaç olarak kullanılan i harfini kullanmaz. ( i - increment)


Herhangi bir yerde kullanır, ama burada değil. Kullanılmasını bekleyen başka harfler vardır, kod yorumcularını düşünmeye zorlayan. Örneğin x veya y gibi.

Döngü sayacı olarak egzotik bir değişken, özellikle döngü gövdesi 1-2 sayfa alıyorsa harikadır (mümkünse daha uzun yapın). O zaman birisi döngünün derinliklerine bakarsa, x adlı değişkenin döngü sayacı olduğunu hemen anlayamaz.

F3beZqk.png


[03] Kısaltmalar kullanın

Takım kuralları tek harfli ve belirsiz isimlerin kullanılmasını yasaklıyorsa, kısaltın, kısaltmalar yapın.

JavaScript:
list → lst.
userAgent → ua.
browser → brsr.
customerName → custName.
productPrice → prodPrice.
calculateTotalPrice → calcTotalPrice.
ve.b

Her şeyi kısaltmaya çalışın. Sadece sizin yaptıklarınızı anlayanların kodu geliştirmesine izin vermek gibi bir şey.


F3beZqk.png

Fazla uzatmadan ve ilgilendiğinizi anlamak için burada bitireyim. Eğer ilginizi çekerse part 2 gelebilir. Lütfen yorumlarda belirtin.
Eğer konu ilginizi çektiyse diğer konularıma göz atmayı unutmayın!
Broken Access Control [ IDOR ve MFLAC arasındakı fark ]


Sorunlarınız varsa, lütfen sorun.
Okuduğunuz için Teşekkürler.



N0FPWLq.png
eline sağlık :)
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.