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.
erişilebilirlik adı altında kullanılan niteliklerden bir tanesi, daha çok ekran okuyucular için ilgili elemanın yaptığı işi belirtmek için kullanılıyor, görme engelli arkadaşların kullandığı ekran okuyucu programlar bunları algılayıp ona göre mesela tıklanan bir buton olduğunu, bir link bağlantısı olduğunu vs. anlayabiliyor.
erişilebilirlik konusuyla ilgili bir ders hazırlama niyetindeyim, daha detaylasını orada anlatırım ama şimdilik bu kadar bilgi yeterli olacaktır sanırım.
css'lerini ayrıca dahil edebilirsin, mesela github'ın markdown css'i için:
https://github.com/sindresorhus/github-markdown-css
.markdown-body class'ı aynen kalsın, buradaki css dosyasını import etmen yeterli olur. Kodları renklendirmek içinse başka eklentiler kullanman gerek tabi :)
fetch apisi de aslında promise dönüyor, yani muhtemelen fetch'i direk return etsekte aynı işi yapardı ancak ben kontrolü sevdiğim için resolve ve reject durumlarını bazı koşullara göre yönetmek ve bunu her servis istediğinde ayrıca yapmak istemediğim için tek fonksiyon içinde bu tarz bir yaklaşıma gittim, diğer türlü fetch'i direk return etsek her bir servis isteğinde then bloğu koyup res.json() dedikten sonra aynı kontrolleri vs. yapmak gerekecektir. toastr vs. daha global yönetmek adına böyle bir yaklaşıma gittim.