ilk sorunun cevabi: https://prototurk.com/makaleler/react-router-netlify-404-sorunu
test derken yazdigin kodlari test etmekten bahsediyorsan jest gibi daha bir cok test araci mevcut. playwright test aracida farkli isler yapmani saglayabilir.
front-end guvenligi diye bir sey yok buyun olay backend de bitiyor, react zaten xss aciklarini kapatiyor ekstra bir sey yapmana gerek yok backendin de saglamsa ya da sen front-end ile ilgileniyorsan cok bir seye ihtiyacin yok bu konuda :)
selamlar, pwa ile yapabilirsin, youtube kanalında anlatmıştık
ilgili video: https://www.youtube.com/watch?v=I-ptHZ9oUq4
senin bakman gereken FIND_IN_SET()
metodu:
https://www.youtube.com/watch?v=MQoXH9yNUyo su videoda anlatiyorum belki isine yarayabilir
sol tarafa padding verebilirsin icon genişliği kadar, orada yer alır taşırmak yerine overflow kullanıyorsan başka çözümü yok, ya overflow'un dışına koyacaksın bu ikonu ya da sola padding verip içeride göstereceksin
yanlış hatırlamıyorsam pointer
versiyonları var. Yani;
mousedown -> pointerdown
mouseup -> pointerup
mousemove -> pointermove
bunlar touch
olayı ile tetikleniyor, bu şekilde bir dene istersen
CHMOD ayarı olarak geçiyor, RWX yani read (okuma), write (yazma) ve execute (çalıştırma) izinlerini temsil eder.
Örnek vermek gerekirse:
Owner. Group. Public
--- --- ---
rwx. rwx. rwx
Yukarıdaki gibi bir değerin karşılığı 777
dir.
Çünkü üç gruba da okuma, yazma ve çalıştırma izni veriliyor.
Atıyorum 444
olsaydı, bütün grupba sadece okuma izni verilmiş olurdu. Ya da 400
olsaydı sadece sahibi okuyabilir geriye kalan kimse işlem yapamaz olurdu. 700
olsaydı sahibi okuyabilir, yazabilir ve çalıştırabilir diğer gruplar hiçbir şey yapamazdı. Bu mantıkta PHP tarafında da dosya yazamama ya da mevcut dosyayı güncelleyememe gibi durumlar olabilir.
Bu hesapları daha kolay yapmak için şuraya gözatabilirsin:
https://chmod-calculator.com/
öncelikle input'u bir <form></form>
etiketi içine al. Input id'si exampleInputname1
yani şuradaki kodu:
scanner.addListener('scan',function(c){
document.getElementById('text').value=c;
});
şöyle değiştirirsen olacak:
scanner.addListener('scan',function(c){
document.getElementById('exampleInputname1').value = c;
});
php kısmında formu gönderdiğinde $_POST['text']
diyerek deneme-14.45
değerini alacaksın. Bunu da ister PHP tarafında ister JS tarafında parçalayıp kullan.
JS tarafında parçalamak istersen:
scanner.addListener('scan',function(c){
const [text, version] = c.split('-')
console.log(text) // deneme
console.log(version) // 14.45
document.getElementById('exampleInputname1').value = c;
});
PHP tarafında parçalamak istersen:
<?php
$data = explode('-', $_POST['text']);
echo $data[0]; // deneme
echo $data[1]; // 14.45
PHP değilde PHP'yi kullanan cahillerin sonucunda ortaya çıkan bir gerçek bu. Evet, PHP her konuda hiçbir zaman yeterli olmayacak ancak kendi alanında yeterince yeterli ve kullanılabilir bir dil.
Bir dilden beklentinizin ne olduğu da önemli, yıllar önce bir arkadaş php ile roketlere programlama yapmak isteyip yapamayıp go'ya geçtiği bir hikaye vardı (yarım yamalak hatırladım ama çok önemli değil) o hikayede go ile isteklerini karşıladı, bu php'yi kötü ya da yetersiz yapmadı.
PHP'yi kullananlar PHP'nin limitlerini bilmeden onu bunu yapamıyor, yavaş kalıyor diyerek dili kötülese de dil yıllardır zaten yapması gerekeni yapıyor, yavaşlıkların çoğuda veritabanı kaynaklı, daha veritabanı mimarisi bile kurmayı bilmeyenler 50k hit alınca site kasıyor der tabi, cahillerin lafıyla hareket etsekdik orta çağa geri dönerdik :)
araştırdığım kadarıyla şu an sağlıklı bir çözümü yok, eğer chromium tabanlı tarayıcılarda şu flag'ı açarsan:
chrome://flags/#enable-web-bluetooth-new-permissions-backend
getDevices()
metodu kullanılıyor. Ama deneysel olduğu için henüz pek işe yarar değil.
Yine de bir butona tıkladığında kullanıcıya bluetooth cihazlarını çıkartıp eşlersen, sadece eşlediğin cihazları bu metodla alabiliyorsun. Yani yine bütün cihazları alıp ekleyemiyorsun. Eşlediklerini almak için:
navigator.bluetooth.getDevices()
.then(devices => console.log(devices))
ama dediğim gibi, çok sağlıklı bir çözümü yok şu an için :)
en pratik yolu;
const params = new Proxy(new URLSearchParams(window.location.search), {
get: (searchParams, prop) => searchParams.get(prop),
});
console.log( params?.isim )
console.log( params?.soyisim )
?.
- optional chaining - yoksa hata vermemesi için kullanabilirsin.