<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Reçete Şablonu</title>
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-5">
<h4 class="text-center mb-4">Göz Reçetesi</h4>
<div class="row justify-content-center">
<div class="col-md-8">
<table class="table table-bordered text-center">
<thead>
<tr>
<th></th>
<th colspan="3">SAĞ GÖZ</th>
<th colspan="3">SOL GÖZ</th>
</tr>
<tr>
<th></th>
<th>SPH</th>
<th>CYL</th>
<th>AKS</th>
<th>SPH</th>
<th>CYL</th>
<th>AKS</th>
</tr>
</thead>
<tbody>
<tr>
<th>UZAK</th>
<td>+0.50</td>
<td>-0.50</td>
<td>89</td>
<td>+0.50</td>
<td>-0.75</td>
<td>80</td>
</tr>
<tr>
<th>YAKIN</th>
<td>+2.25</td>
<td>-0.50</td>
<td>90</td>
<td>+2.25</td>
<td>-0.75</td>
<td>80</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- Bootstrap JS -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
Kodunuzu şu şekilde güncelledim:
let style = `
@font-face {
font-family: NotoColorEmojiLimited;
unicode-range: U+0000-001F U+0021-99999;
src: url(https://raw.githack.com/googlefonts/noto-emoji/main/fonts/NotoColorEmoji.ttf);
font-display: swap;
}
`;
let s;
document.head.append(s = document.createElement('style'));
s.innerHTML = style;
for (let sheet of document.styleSheets) {
try {
for (let rule of sheet.cssRules) {
try {
if (rule.style.fontFamily.length > 0) {
rule.style.fontFamily = 'NotoColorEmojiLimited,' + rule.style.fontFamily;
}
} catch (error) {}
}
} catch (error) {}
}
Güncellenen kodda, unicode-range özelliğini U+0000-001F aralığını ekleyerek boşluk karakterinin (U+0020) dışarıda bırakıldığını göreceksin. Böylece sadece boşluk karakteri dışındaki diğer karakterler "Noto Color Emoji" yazı tipi tarafından gösterilecektir.
import pyautogui
import time
import keyboard
time.sleep(1)
def mesaj():
pyautogui.write("Jakob !")
pyautogui.press('enter')
while True:
mesaj()
time.sleep(5)
if keyboard.is_pressed('ctrl') and keyboard.is_pressed('s'):
break
Saniye çubuğunun akıcı bir şekilde ilerlemesi için CSS'te "transition" yerine "animation" kullanabilirsiniz. Saniye çubuğunu kendi başına döndürmek için de bir keyframe animasyonu kullanabilirsiniz.
Örnek CSS kodları:
.saniye {
width: 2px;
height: 130px;
background-color: red;
margin-bottom: 130px;
z-index: 99;
animation: saniyeDondur 60s linear infinite; /* saniye çubuğu animasyonu */
}
@keyframes saniyeDondur {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
Bu kodlar, saniye çubuğunu 60 saniyede bir tam tur atacak şekilde döndürür. Bu şekilde saniye çubuğu sürekli olarak akıcı bir şekilde hareket edecektir. Ayrıca, saniye çubuğunun z-index değerini yükselterek, diğer çubukların üzerinde yer almasını sağlayabilirsiniz.
@istek61
ZXing
BarcodeReader.js
Bu kütüphaneleri kullanarak barkod okuyucu desteği ekleyebilirsiniz. (Umarım bunlardan biri çalışır)
Not:Üzgünüm, barkod okuyucunun size önerdiğim QuaggaJS kütüphanesi tarafından desteklenmeyebileceği mümkündür. Barkod okuyucu, kamera veya resim ile ilgili farklı bir format veya protokol kullanıyor olabilir ve bu kütüphane bu formatı desteklemiyor olabilir.
Merhaba,
JOIN ve FOREIGN KEY, iki farklı kavramdır ve farklı amaçlar için kullanılırlar.
JOIN, SQL sorgularında iki veya daha fazla tabloyu birleştirerek, verileri birleştirilmiş bir sonuç setinde görüntülemek için kullanılır. JOIN, iki tablo arasındaki ilişkiyi belirlemez, sadece tabloları birleştirir. JOIN sorguları, tablolardaki belirli sütunları birleştirerek, sonuç setindeki verileri filtrelemek ve sorgulamak için kullanılabilir.
Öte yandan, FOREIGN KEY, iki tablo arasında ilişki kurmak için kullanılır. FOREIGN KEY, bir tablodaki bir sütunun, başka bir tablodaki bir sütunun değerleriyle eşleştirildiği bir kısıtlama oluşturur. Bu ilişki, iki tablonun birbirine bağlanmasına olanak tanır ve verilerin tutarlılığı sağlar.
Örneğin, bir "Orders" tablosu ve bir "Customers" tablosu olduğunu varsayalım. "Orders" tablosunda bir "customer_id" sütunu var ve bu sütun, "Customers" tablosundaki "id" sütunuyla eşleştirilmiştir. Bu durumda, "customer_id" sütunu FOREIGN KEY olarak belirlenir ve "Customers" tablosundaki "id" sütununa referans verir. Bu sayede, "Orders" tablosundaki "customer_id" sütununa yalnızca "Customers" tablosundaki geçerli bir "id" değeri eklenebilir.
Bu nedenle, JOIN ve FOREIGN KEY farklı amaçlar için kullanılır. JOIN, sorgulama işlemleri için kullanılırken, FOREIGN KEY, tablolar arasındaki ilişkiyi kurmak için kullanılır. FOREIGN KEY, CASCADE gibi davranışlarla, bir tablodaki kaydın diğer tablodaki kayıtlarla birlikte silinmesini sağlayabilir, ancak bu davranışı zorunlu değildir ve belirli bir durum için tercihe bağlıdır.
Umarım bu açıklama yardımcı olmuştur.
Merhaba,
Zoom’un web SDK’sı sayesinde, canlı yayınları Zoom’un altyapısını kullanarak web sitenize gömmeniz mümkündür. Bu, iframe veya api servisleri kullanarak yapılabilmektedir.
İlk önce, Zoom’un web SDK’sını indirin ve web sitenize ekleyin. Daha sonra Zoom hesabınızı kullanarak bir Zoom Webinarı yaratın ve canlı yayını başlatın. Canlı yayınınıza erişmek için Webinar ID ve webinar key kullanmanız gerekecektir.
Iframe kullanarak yapmak istiyorsanız, aşağıdaki kodları web sitenize ekleyebilirsiniz:
<iframe src="https://zoom.us/wc/<Webinar ID>/join?prefer=1&pwd=<Webinar Key>" width="800" height="600" frameborder="0" allow="microphone; camera; fullscreen" sandbox="allow-forms allow-scripts allow-same-origin"></iframe>
API servislerini kullanarak yapmak istiyorsanız, Zoom’ın REST API’sini kullanabilirsiniz. Bu, Zoom hesabınızın doğru şekilde yapılandırılmış olmasını gerektirir ve ayrıntıları belge olarak bulunur:
https://marketplace.zoom.us/docs/api-reference/zoom-api/webinars/webinarstatus
Umuyorum yardımcı olabilmişimdir.
Bu hatanın nedeni, Sass dosyası içinde appearance özelliği için tarayıcı uyumluluğu eklenmesi gerektiği ancak bu özelliğin zaten Bootstrap tarafından eklenmiş olmasıdır. Bu nedenle, hem Bootstrap SCSS dosyasını hem de kendi SCSS dosyanızı içe aktardığınızda bu hatayı alırsınız.
Bu hatayı çözmek için, kendi SCSS dosyanızda @import "../node_modules/bootstrap/scss/bootstrap";
satırını kaldırmanız gerekir. Bunun yerine, Bootstrap stil dosyalarını projenizdeki HTML dosyasına bağlamak için <link>
etiketini kullanabilirsiniz.
Ayrıca, appearance
özelliği için tarayıcı uyumluluğu sağlamak isterseniz, bu özelliği varsayılan olarak devre dışı bırakabilirsiniz. Bu özelliği kullanmak istiyorsanız, tarayıcınızın güncel bir sürümünü kullanmanız gerekir.
Offcanvas modalinde scrollbar'ın tıklandığında aşağıya inmesini sağlamak için aşağıdaki adımları izleyebilirsiniz:
Offcanvas modalinin içerisindeki verilerin yüklendiğinden emin olun. Veriler yüklendikten sonra, scrollbar'ın aşağıya inmesini istediğiniz öğenin id veya ref özelliğine sahip olduğundan emin olun.
Offcanvas modalinin shown.bs.offcanvas etkinliği için bir dinleyici oluşturun. Bu dinleyici, offcanvas modalinin açıldığı zaman çalışacak ve scrollbar'ın aşağıya inmesini sağlayacak kodları içerecektir.
Örneğin, scrollIntoView yöntemini kullanarak belirli bir öğenin görüntülenebilir olmasını sağlayabilirsiniz. Bu yöntemi, shown.bs.offcanvas etkinliği dinleyicisi içinde kullanabilirsiniz. Örneğin:
$('#myOffcanvas').on('shown.bs.offcanvas', function () {
var el = document.getElementById('myElement'); // myElement, scrollbar'ın aşağıya inmesini istediğiniz öğenin id'si
if (el) {
el.scrollIntoView({ behavior: "smooth" }); // offcanvas modalinde görünür hale getirmek istediğiniz öğenin aşağıya kaydırılması
}
});
Yukarıdaki kodu, kendi offcanvas modalinizdeki öğelerin id özellikleriyle değiştirin ve bu kodu kullanarak scrollbar'ın tıklandığında aşağıya inmesini sağlayabilirsiniz.
Merhaba,
Bu durumda yapmanız gereken işlem, öncelikle verileri içe aktarırken, ekleme işleminin başarısız olması durumunda, hata mesajını kontrol ederek, "Duplicate entry" şeklinde bir hata mesajı var mı yok mu diye kontrol etmek. Eğer böyle bir hata mesajı varsa, ilgili kaydın zaten veritabanında olduğunu ve bu kaydın tekrar eklenmeye çalışıldığını anlayabiliriz. Böyle bir durumda, eklemeyi yoksayabilir ve işleme devam edebiliriz.
Bu nedenle, verileri içe aktarırken şu değişiklikleri yapmanız gerekebilir:
- INSERT INTO ifadesinin sonuna "ON DUPLICATE KEY UPDATE" ekleyin.
- Sonrasında, ekleyeceğiniz sütunların altına, "sütun adı=sütun değeri" şeklinde bir ifade ekleyin.
Bir örnek vermek gerekirse, şu şekilde yapabilirsiniz:
INSERT INTO employees (`name`, `surname`, `email`, `employee_id`)
VALUES (?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
`name`=?, `surname`=?, `email`=?
Bu şekilde, ekleme işlemi başarısız olursa, "ON DUPLICATE KEY UPDATE" ifadesi devreye girer ve ilgili kaydın güncellenmesini sağlar. Bu sayede, verileri içe aktarırken tekrar eden verileri eklemiş olursunuz.
Umarım yardımcı olabilmişimdir.