31 Temmuz 2024

Trajikomik bir developing hikayesi

ile hasan

Kütüphane yazılımımız ile ilgili bir kullanıcımızdan şöyle güzel bir geri bildirim aldık: malum eserler raflarda duruyor. Biz raflara da etiket yapıştırıyoruz. Raf listesini de Kitapi’den alsak, otomatik etiket bastırsak, bu etiketlerde de kitaplardaki gibi rafa ait bir QR kod olsa. Biz o QR kodu tarattığımızda o raftaki kitapların listesini görsek ona göre rafları düzenlemek daha kolay olur.

Harika bir fikir deyip teşekkür ettim ve kolları sıvadım.

Raflar bizde eserin üstünde string olarak tutuluyordu. Bunları distinct ile çekip qr kod basmak ve sonrasında bu qr koda göre aramak çok basit bir iş.

Fakat biz Kitapi olarak QR kod yanında barkod’a da destek veriyoruz. Bizim elimizdeki cihazlar (ve tahminimize göre piyasadaki pek çok cihaz) string okumada iyi değiller ama rakamları iyi okuyabiliyorlar. zaten stringin barkodu cok uzun ve ince detaylı oluyor. Printer çıktısı iyi olmuyor vs. Bu sorun daha önce de karşıma çıkmıştı. Uniq eser kodlarını string olarak ürettiğimiz için barkod kullanamamıştık ve eser kodlarını bir şekilde integer’a çeviren bir sanal sütun oluşturup cache’e bu sanal olanları da atmıştım. Arama sırasında bulabildiği için sorun kalmamıştı. Aynı taktiği kullanacaktım.

Bu zahmete bir şekilde girmeliydik çünkü raf ismini QR kodda da doğrudan kullanamıyorduk. Türkçe özel karakterler çıkmıyordu. İsme göre ararken sorun olacaktı.

Neyse bir sanal sütun daha oluşturup ChatGPT’nin tavsiyesiyle crc32 kullanarak raf ismini integer’a çevirdim. Sonradan başına da kütüphane id’sini koydum çünkü bu aramayı oturum açmadan yapmak gerekebilecekti. Hangi kütüphanede arayacağım telaşına düşmemek için indexlerken kütüphane id’sini de koyunca bu sorunu da aştık. Bir de garanti olsun diye cache yazarken başına “raf-” diye bir metin de ekledik ki elde ettiğimiz değer başka bir sütuna göre match etmesin.

Sıra geldi etiketleri oluşturmaya. Zaten sürecin başından beri etiket üretip deniyordum. Tam artık işimi bitirdim, çıktı vereceğim sayfayı auth’un dışına almıştım ki aklıma bu kodun bir URL olması gerektiği geldi. Çünkü henüz bir mobil uygulamamız yoktu. Adam telefonunun kamerasıyla okutup bir listeye ulaşmak istiyordu. Zaten auth’u da bu yüzden devre dışı bırakmıştım. Ee.. URL bir “integer” değil ki ben onun barkodunu basabileyim 🙁 Yani sabahtan beri barkod için boşuna uğraşmışım. Nihayetinde mecburen bunu sadece QR kod için yapmam gerekiyormuş. QR kod için de Türkçe karakter sorununu basit bir slug ile çözebilirdim. Yine başına da “raf” ve kütüphane id’si bilgisini koyardım. Mis gibi işin içinden çıkardım 🙂

Neyse sonunu düşünen kahraman olamazmış. Güzel bir amelelik oldu.