yine ben yine ben yine ben.

dataset deyu bir şey öğrendim. bu dataset şeysi sql, access gibi veritabanı yönetim programlarında yapılacak sorguları tek bir sefer tanımlamayla otomatik hale getiriyor. bir kere hazırladıktan sonra ihtiyaç halinde çıkarıp tek bir satır yazarak sorgunuzu yapabiliyorsunuz. atıyorum elimizdeki tc kimlik no'yu daha önce veritabanında var mı diye programınızın bir sürü yerinde sorgulamanız gerekiyorsa dataset ile sorgu oluşturup iş yükünüzü azaltmış oluyorsunuz.

bunların haricinde windows 10'un içinde de olan toggle switclere kanım çok kaynadı. her yere ondan koyasım var.(bkz: swh)

kullanıcı tarafından yüklenmiş görsel

bunlara otomatik bir şey yaptırınca sevindirik oluyorum. örneğin en son uğraştiğım personel formunda veritabanından gelen bilgilere göre izinli ya da ayrıldı bilgisine göre toggle'lar kendi kendine pozisyon alıyor. ayrıyaten kişi ayrılmışsa izne de çıkamayacağı için izinli toggle'ı görünmüyor. sevdim bu işi.

yarının programında departmanlar ve personeller oluştuğu için artık hammadde giriş formu yapacağım. bu kısım personelden çok da farklı değil. daha sonrasında ürün reçesi oluşturmaya başlayacağım form/ pencere daha heyecanlı. çünkü yapabilirsem bir listeden diğer listeye sürükle bırak yapacağım olursa. teoride olur gibi duruyor. bunun kullanıcıya faydası ise bir tablo içinde küçücük küçücuk listelerden neyin ne olduğunu anlamaya çalışmayacak. detaylı şekilde tabloda gördüğü hammaddelerden birini seçip sürükle bırak yapıp işi bitirecek olursa eğer. sonucunda mamul ve yarımamüllerden bir ürün içeriği oluşturmuş olacak.

aslında yarı mamül gibi ürün haline gelmemiş ama hammadde de olmayan öğeleri diyagram haline getiren bir şey yazabilsem süfer olur. onu da hazır mazır kodlardan yapmaya çalışacağım. muhtemelen çizim kütüphanesini ekleyip bir şeyler yapmak gerekiyordur. iki öğe arasına çizgi çektirip öğeler hareket etse bile çizginin başlangıç ve bitiş konumu buna göre ayarlanacak. çok da zor olmasa gerek. ha bunu böyle yaparsan muhtemelen iki öğe arasındaki çizgiler height farkından dolayı çapraz çapraz kötü bir görüntü oluşturur muhtemelen. o yüzden a noktasından atıyorum önce 50 birim right ya da left yapacak b nesnesinin konumuna göre. sonra b nesnesinde tutması gereken noktaya kadar up ya da down yapacak kendini. daha sonra ise yükseklik olarak çizginin ucu b nesnesiyle eşit olacağı için hedefe var demek kalıyor.

bu algoritmayı oturttuktan sonra bir önceki entry'imde bahsettiğim class yapıları da kullanılabilir. diagram alanını açtığında seni bir dialog kutusu karşılayabilir örneğin. sana kaç malzemeli bir ürün yapmak istediğini sorar. atıyorum 20 dedin. sana 20 tane input noktası olan bir dikdörygen çizer. hatta diyalog kutusu hazır açılmışken ürününün kategori, kod, isim, açıklama gibi bilgilerini de alır senden.
bu dörtgen şey çizim alanına oturdu ok dediğimizde. bu bir class aslında. daha sonra sağ tık yapıp malzeme getir diyoruz. karşımıza bir pencere çıkıyor. oradan hammaddeyi ve kullanılacak adedi seçiyoruz. ok deyince daha ufak bir dörtgen yani class çıkıyor. hatta bu dörtgen nesneleri sürüklenebilir yapalım.

daha sonra iki nesne arasına çizgimizi çekiyoruz. bu nasıl olabilir? hammaddenin daha önceden tanımladığımız bir yuvarlağının merkezine gelince mouse'un eventi etkinleşir. bastığımızda ise önceden yazdığımız metot işlemeye başlar. yani çizgimizi çizeriz. aslında burada canlı olarak çizgiyi çekmenin de çok bir espirisi yok. işaretlediğimiz iki ayrı noktaya kendi çeksin çizgisini.

bunun bir sonraki ileri versiyonu çizim programlarındaki tool mantığını kullanmak olur sanırım. sol tarafa şu yüzebilen ya da kenarlara sabitlenebilen barlardan koyarsın bir tane. içine de kendi sektörüme özel hammaddeleri, yarı mamülleri tanımlarsın ayrı butonlar olarak. mesela benim mesleğim için lensler bir buton, güç kaynakları bir buton, kablolar bir buton, gövdeler bir buton olabilir bu barın içinde. buton dediysek öyle kocaman şeyler değil.

kullanıcı tarafından yüklenmiş görsel

yukardaki gibi modern şeyler. bunlar program içinde sabit de durmuyor. soldan koparıp simge gibi ekranda gezdirebiliyorsun.

konumuza dönecek olursak, diyelim lens tool'undan sürükledin ekrana bıraktın. hemen bir pencere çıkıyor ufak ve oradan 25 derece, 50 derece, 80 derece gibi lens tiplerinden birini seçiyorsun. ana ürününe ekleyip diğer malzemeye geçiyorsun. toollar sabit gibi dursa da bilgiler veritabanından geldiği için ilerde e bende bu malzemeden yok derdi de olmaz. yeni bir malzeme geldiyse listeye otomatik eklenir.

burada eksik kalan tek şey lensler, güç kaynakları gibi az önce tool dediğim ama aslında veritabanında kategori başlığı şeklinde ayrı tabloların nasıl çizim alanında güncel tutulacağı kalıyor. aklıma gelen şey ise kategorileri veri tabanından okutmak ve onu sidebar'ın içine kodla ekletmek geliyor. bunların resimleri de olduğu için muhtemelen veritabanına bir tane de simge sütunu açmak gerekir. simge sütunundan aldığı resim bilgisini, isim sütunundan aldığı isim bilgisini kullanıp örneğin 37 kategori varsa bir satırda iki tane olacak şekilde alt alta 19 satırlık bir side bar çizdirilebilir. sınırı belirleyecek şey bir panel olabilir örneğin. panelin sağ kenarına varınca bir alt satıra yerleştirsin. hatta kurguyu panelin sağına varınca diye kurgularsan paneli genişletsen bile kendi otomatik dizip 2'li değilde 4'lü yapar. kategori bilgilerini de veri tabanından çektiği için tool derdin kalmaz.

bunun da bir ilerisini düşünürsek sık kullanılanları ilk sıraya yerleştirebilir toolbox'ta. buna da veritabanında kayıt tutmak gibi bir absürtlük yapabiliriz. şöyle ki bir tabloda tüm kategorilerin yanında bir de tıklanma sayısını kaydeden bir sütun olabilir. biz her defasında lensi çağırdığımızda değişkene 1 ekleyip veritabanına kaydeder. ha bunu veri tabanı değilde bir not defterinde bile yapabilirsin ama ben veritabanı tercih ediyorum.
çizim alanını yüklerken de oradaki tıklanma sayısına bakıp çok kullanılanı üst sıraya taşır. böylece sık kullandıklarımı bir nebze olsun kolay bulurum.

bu kadar şeyi anlattım ama bir sor niye anlattım? senin için değil elbette. kendime ufak da olsa bir algoritma yazıyorum gibi düşün. önemli olan sistemi kurgulayabilmek. sistemi kurgupadıktan sonra bilmediğin yerler de olabilir -ki hayvan gibi bilmediğim bir sürü kısım var- ama bunların ufak tefek aramalarla bulunabilecek şeyler. örneğin butonları otomatik dizdirmek, iki nesne arasına çizgi çektirmek, grafiksel olan şeyden bilgi alıp veritabanına kaydetmek, sonrasında bu yapıyı tekrar açıp düzenleyebilmek ana başlıklar sanırım. sonrası bildiğin hamallık, işçilik.
devamını gör...
do diyez majör. tenörlerin bolca kullandığı karar sesidir.
devamını gör...
bugünki konumuz workspace alanlarını kaydetme idi.

devexpress'in kullanışlı bir aracı olur kendileri. tasarım programlarında çalışanlar bilirler workspace'i. bilmeyenler için kullandığınız tool pencerelerini keyfinize göre programda yerleriyle serbestçe oynayabiliyorsunuz. söz gelimi illustratorde bazen o kadar dağıtırım ki pathfinder aracı bir yerlerde gezer, fırça başka yerde gezer. böyle bir şeyin icat olma sebebi toollar çok fazla olduğunda menülerde gezinmek vakit kaybı oluyor. hepsini görünür bir yere koymaya kalksan çalışacak alan kalmıyor.

devexpressin tool'larında gezinirken workspace tuşunu gördüm. şu anki yazılımım öyle aman aman kalabalık olmasa bile dedim şuna bir bakayım. öncelikle projeye ekliyoruz ilgili toll'u. bir de çalışma alanının düzenini kaydedebilmek için save layout butonu ekliyoruz bir bara. normalde bu kadar. aşağıda da biraz daha geliştirilmiş senaryolar var.

ilk senaryo farklı hazır ayarlar koymak. devexpress'in şu dökümandan ulaşabilirsiniz.

kullanıcı tarafından yüklenmiş görsel


hazır ayarlardan sonra bunun bir ilerisi de çalışırken serbestçe sağa sola dağıttığınız tolların yerlerinin program kapatılırken kayıt edilip açıldığında da bıraktığınız düzende açılması. bunun için de form load kısmına ve formun event'larından form closed kısmına bir iki bir şeyler yazmanız gerekiyor.

benim yaptığım ana sayfa için oldu fakat alt formlar için olmadı. daha doğrusu aslında oluyor fakat işe yaramıyor. şöyle ki alt form açıkken kimse programı kapatırken alt formları da kapatıp öyle çıkayım demez. çat diye kapatır. alt formun exit tuşuna basılıp çıkılmadığı için de program alt formun form closed event'ını işletemiyor. elektrikler gitti gibi bir durum oluşuyor onun için. programın içinde gezinirken alt formu kapatıp açmalarda yerleri hayet güzel kaydediyor.

bu sorunu aşmak için close tuşuna basıldığında if else gibi bir karar yapısı falan tasarlamak lazım ama sadece geç oldu ve o kadar uğraşamadım. kabaca kapatmadan önce belki if else bile yapmadan alt formları da teker teker workspace'ini kaydeden bir şey yapmak gerekiyor. ama bunun için o kadar hakim değilim c#'a. kurcalaya kurcalaya, deneye deneye bulursam bulurum.

bu arada basit bir şeyi programın da kendi kod tahmin yeteneği sayesinde buldum. dock denilen ekranda serbestçe gezinebilen pencerelerden ekranımda 3 tane var. ben bunların tam ekran yapma, kapatma gibi özelliklerini iptal ediyordum. çünkü kapatınca geri çağırmayı bilmiyorum. (bkz: swh) bir tane deneme yaptım ve tuttu. bir buton koyup koduna dock3.show(); dedim yetti. hatta hızımı alamayıp child formu falan da ayırıp bir ara kodlardan açıl ve tam ekran ol komutları verdim. basit şeyler ama yapabilince sevindirik oluyor insan. yazılımın zaten o kadar güzel bir tahmin yeyeneği var ki iki harf yazıyorsun kalan bütün kodu kendi tamamlıyor otomatik. syntax hataları falan minnimum'a iniyor.

bir diğer konu ise bu yazılımcılar da az değil ha. herşeyin hazırını üretmişler, çok uğraşmıyorlar aslında. nuget diye bir bölüm var. şık butonlar mı istiyorsun mesela. oradan aratsan online bulup kesin indirirsin. android'in play store'u bu nuget dediğim şey. ama paralı çıkıyor çoğu. bufin mi neydi modern ui indirelim dedik indirdik oldu ama butonu ekrana sürükleyeyim dedim para istedi haysiyetsizler. (bkz: swh)

hiç bilmeyenler için bir de belki adını duymuş olabileceğiniz github denilen yazılım paylaşma platformu diye bir şey var. yazılımcıların normal sözlük'ü bir nevi. ama çok güçlü bir şey yazılım paylaşma konusunda. paylaşma dediysem instagram'da resim paylaşır gibi beğeni kasmak değil dertleri. ekiplerin dünyanın öbür ucunda bile olsa bir projede beraber çalışabilmelerini sağlayan birşey. tam hatırlamıyorum ama parasız kullanırsan yani bedava olunca yayınlanan kodları herkes görebiliyor. kimse göremesin, private olsun dersen o paralı. elbette benim gibi yeni öğrenenlerin bunu pek taktığını sanmıyorum. consolwrite kodunu görse nolur görmese nolur. (bkz: swh)
devamını gör...
geçen günki konumuz github içindeki read me kısmıydı. projenizin read me dosyası inceleyenler için kabaca. fakat öyle dümdüz yazmıyonuz. baya baya kendi dili var gibi ama basit şeyler. html'den türetmişler sanırım.
devamını gör...
ah o yıllar önce yazdığım ilk winform'lar, access database'e record girdirmeler, while döngüsünü kapatmayıp loopa soktuğum kodu virüs yazdım diye havalanmalar. şimdilerde ben bile* low-code takılıyorum
devamını gör...
ortaya bir şeyler çıkmaya başladı ufaktan. sevindirik oldum. erp programlarında en sinir olduğum şey her şeyin birbirine girmiş olmasıydı. allah izin verirse ürün sihirbazı da yapacağım ilerde. aynı şeyleri baştan baştan yapmanın ya da seçmenin manası yok.

kullanıcı tarafından yüklenmiş görsel
devamını gör...
eğer biraz alt yapı oluşturursanız yapay zekaya ufak sorular sora sora baya baya ortaya anlamlı bir şeyler çıkarılabilen şey.

şöyle ki; elinizde butonlar, açılan listeler falan var ama yaptırmak istediğiniz işlemi bilmiyorsanız yapay zeka çok güzel yardım ediyor. google'ın gemini baya baya iş görüyor.

benim sorunum veritabanından çekilen veritablosunda açılır listeler ile filtreleme yapmaktı. bunu veritablosunun (gridcontrol) olay tetiklemesi ile metin kutularına ya da açılır listelere (lookup edit) aktarabiliyordum zaten. fakat ortalığı butonlara (kaydet, güncelle, sil, sıfırla) , metin kutularına boğmadan da bu veritabanıyla bağlantılı veri kutusundan yapılabiliyor. hücrenin değeri değiştiği anda veri tabanına kayıt da yapılabiliyor. hatta veri kutusunun yeni değer ekleme bölümüne de açılır kutu eklenebiliyor. bu açılır kutular da veri tabanından alıyor listeyi.

fakat ben bu verikutusunun içindeki açılır kutuları kontrol ettiremedim. yapay zekaya sorayım dedim. kolay bir şekilde anlattı. yaptırmak istediğim şey ise şu; ilk açılır listeden stok türünü seçeceğiz. orada hazır ürün seçiliyse ikinci açılır kutumda sadece hazır ürün ana kategorisindeki içerik görülecek. örneğin dışardan philips, jupiter, siemens marka ürünleri gösterecek sadece. diğer benim şirketimde ürün imal etmek için aldığım parçaları göstermeyecek.

yapay zekanın verdiği kodlar yanlış bile olsa (denemedim daha) gayet güzel fikirler de verdi. örneğin filtreyi yapacak ilk açılır kutunun seçtiği değeri bir değişkene yükle gitsin. sonra ikinci açılır kutuya sorgu oluşturup kolayca hallederim. bazen bilsen de aklına gelmiyor resmen.

sözün özü evet yapay zeka bugün kocam bir şey belki yazamaz ama (keşke yazıverse) birazcık bilgin varsa programını ufak ufak örebilir. yapay zekaya gönderdiğim promptlar şu buton nasıl kullanılır, bunun filtreleme özelliği ne gibi basit basit şeyler aslında.

androiddeki gemini chatgpt'den daha iyiydi. çünkü chatgpt 15 dakika kadar galiba tam sürüm çalıştırıyor. gemini'de böyle bir kısıt görmedim. artı olarak gemini dikkat edilmesi gereken noktaları belirtip ekstra sorular sorarak sohbeti devam ettirmeye çalışıyor. örneğin devexpress'ten başka bir şey kulanmak istersen şunlar şunlar da var diyor.
devamını gör...
takılıp kaldığım dil. birincisi sorgularda takıldım kaldım. ikincisi katmanlı mimaride takıldım kaldım. ben var hiçbir şey anlamamak.
devamını gör...
bi ingilizce degildir. evet.
devamını gör...
c# 12 ile gelen primary constructor özelliğini çok beğendiğim dil. dto'lar için oldukça pratiklik sağlıyor.

public sealed record responsedto(guid id);

bitti gitti. nefis.
devamını gör...
bir başarı kilidini daha açtığım program. aslında basit ama nedense zorlandım. şimdi şöyle, şirketinize mal geldiğinde faturasını sisteme girersiniz. aynı zamanda o ürün stoklara da girer.

benim zar zor güç bela yapabildiğim şey ise stoklarda o malzemeyi önce aratıyorum where like ile. eğer bulamazsa demekki stokta olmayan bir şey. text boxlarda ne varsa aynen kaydediyor.

ama o malzemeden stokta atıyorum önceden 50 tane varsa ve senin yeni 100 tane aynı ürünü girmen gerekiyorsa üzerine ekleme yapman gerekiyor. bu yüzden önce ürünü bulduruyorum. sonra mevcut değeri değişkene yazdırıyorum. daha sonra textbox'daki miktarı üzerine okutup başka bir değişkene kaydediyorum. daha sonra klasik update komutu ile güncelliyorum. benim için büyük başarı.

sıradaki işlem ise imalat bir hammaddeyi kullandığında stoktan düşmek. fakat bu toplu bir şekilde gerçekleşecek. çünkü imalat şefi bir ürünün reçetesini önceden oluşturmuş olacak. 827 kodlu üründen 50 tane üretime aldığında stoklardan otomatik olarak o ürünün reçetesindeki malzemelerin kendi miktarlarınca topluca düşülecek. örneğin 827 ürününde 5 tane 2x10 yıldız başlı vida kullanılıyorsa 50 ürün için 250 tane vida düşülecek otomatik.

bir diğer kafamı kurcalayan şey ise birimler değişiyor. örneğin vida adet cinsinden fakat kablo metre cinsinden. fakat bunu çözdüm. sql tarafında tablo oluşturdum birim diye. bunu da ilişkili hale getirdim. bunun bir faydası da c# içinde birimler için form oluşturduğumda program bitip kullanıma açıldığında benim tahmin etmediğim bir birim olsa bile kullanıcı yeni birim ekleyebilecek.

aynı şeyi para birimler için de yaptım. firma atıyorum azerbaycanla çalışmaya başlarsa para birimi formundan yeni birim ekleyip önayarlı kurunu girebilecek. bu noktada dolar, euro gibi popüler birimlerin tcmb'den güncel kurlarını çekebilirim. şu an nasıl yapıldığını bilmesem de teknolojisinin olduğunu bilmem yeterli. yeni eklenecek birimlerin güncel kurları için de verinin alınıp koyulacağı textbox'ı olan bir form oluşturup yardım bölümünde nasıl yapılacağı kullanıcıya aktarılabilir.

bunlar da bittiğinde satış, teklif verme gibi kısımlar var onlar da kolay hallolur diye tahmin ediyorum. işyerinde benim kullanacağım asıl kısımlardan biri de bu zaten. gerçekte de kullanacağım yani. şöyle ki müşterilere verdiğim teklifler, revizyonlar ve autocad, dialux, datasheet gibi dökümanlar derken ortalık çorba oluyor. bunları bir düzene sokabilirsem ne ala. olursa olur, bakacağım duruma göre.

programın genel yapısı şimdiye kadar veriyi al, listele, filtrele, kaydet, güncelle, sil işlemlerini ekle diyerek geçiyor. ilerde de yazdırma ve raporlama işlemleri olacak. şimdiye kadar fena gitmedi.
devamını gör...
#3261635

c# ile hiç alakam yok ama "where like" ile ürün aratman pek mantıklı gelmedi.
gerçek hayatta benzer isimli bir çok ürün olabilir!!!

bir de stok hareketleri tablon olsun.
bu tabloya da ürün bazında, girenler için +, çıkanlar için - değerler girip gerektiğined de aynı şekilde toplam aldırırsın...

benim ayorlamam bu kadar.
devamını gör...

bu başlığa tanım girmek için olabilirsiniz.

zaten üye iseniz giriş yapabilirsiniz.

normal sözlük'ü kullanarak 3. parti dahil tarayıcı çerezlerinin kullanımına izin vermektesiniz. Daha detaylı bilgi için çerez ve gizlilik politikamıza bakabilirsiniz.

online yazar listesini görmek için lütfen giriş yapın.
zaman tüneli köftehor rehberi portakal normal radyo kütüphane kulüpler renk modu online yazarlar puan tablosu yönetim kadrosu istatistikler iletişim