6 Ekim 2025 Pazartesi

Bugün ne yiyeceğiz? 🥸 🥄 🍚

Bugün ne yiyeceğiz? 🥸

Bugün ne yiyeceğiz? 🥸 🥄 🍚

    🏆 KAZANAN 🏆

    8 Mart 2024 Cuma

    Chrome'da yalnızca okunabilir (read-only) dökümanları indirmek

     Merhaba Arkadaşlar!

    Bu yazımda indirmeye karşı korumalı, yalnızca okunabilen dökümanları chrome üzerinden indirme yöntemini anlatacağım.

    1- İndirilemeyen dökümanınızı açın

    2- Geliştirici Konsolunu açın (F12 veya Ctrl + Shift + J) (Edge kullanıyorsanız Ctrl + Shift + I)

    3- Konsol (Console) sekmesine gidin

    4- Aşağıdaki kodu yapıştırıp çalıştırın:


    let jspdf = document.createElement( "script" );

    jspdf.onload = function () {

    let pdf = new jsPDF();

    let elements = document.getElementsByTagName( "img" );

    for ( let i in elements) {

    let img = elements[i];

    if (!/^blob:/.test(img.src)) {

    continue ;

    }

    let canvasElement = document.createElement( 'canvas' );

    let con = canvasElement.getContext( "2d" );

    canvasElement.width = img.width;

    canvasElement.height = img.height;

    con.drawImage(img, 0, 0,img.width, img.height);

    let imgData = canvasElement.toDataURL( "image/jpeg" , 1.0);

    pdf.addImage(imgData, 'JPEG' , 0, 0);

    pdf.addPage();

    }

    pdf.save( "download.pdf" );

    };

    jspdf.src = 'https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.2/jspdf.min.js' ;

    document.body.appendChild(jspdf);

    İndirilemeyen dökümanınız hayırlı olsun :) 

    6 Kasım 2023 Pazartesi

    Github istediğimiz tarihe push yapmak

     Merhaba arkadaşlar!


    Bu yazıda github üzerinde dilediğiniz tarihe nasıl push atabileceğinizi anlatacağım


    Sırasıyla bu komutları uygulayarak verdiğiniz tarihe push atabilirsiniz:

    git add .

    git commit --amend --no-edit --date="Wed Mar 16 20:00:00 2022 -0600" 

    git pull --allow-unrelated-histories

    git push

    Angular yardımıyla dinamik isimlenen click event'ı oluşturma

    Selamlar!

    Bu yazıda typescript tarafta tanımlanmış bir değişken tipinden yardım alarak dinamik isimli click event'ı oluşturuyoruz.
    Typescript tarafta Event isimlerimiz

    • checkEN()
    • checkTR()
    • checkJP()
    • checkCN()
    • checkDE()
    gibi isimler ise ve bunları ngFor ile dönülen bir değişken butonuyla kullanmak istiyorsak alttaki kod yapısını kullanmamız gereklidir.


    <button (click)="this['check' + translation.language.substr(0,2)]()" type="button" name="phoneType_Type{{translation.language}}" id="PhoneType_Type{{translation.language}}" class="form-control"> </button>

    TypeScript Çok boyutlu diziyi tek boyutlu diziye dönüştürmek

    Merhaba! Eski notlarımdan bulduğum bir kodu burada sizinle paylaşmak istedim. let denemeResult: Array = new Array(); Çok boyutlu bir diziyi Örnek : [ [1,2],[1],[1,3,3],[[1],[2]]] gibi bir yapıyı tek boyutlu diziye dönüştürme cal0EventsDeneme.forEach(item => { denemeResult = denemeResult.concat(item.calendarEvents) }); const comperator = function (a, b) { return a.calendarId === b.id; } let eslesenler = indexedData.filter(a => this.selectedCalendars.some(b => comperator(a, b))); let eslesmeyenler = indexedData.filter(a => !this.selectedCalendars.some(b => comperator(a, b)));

    5 Ekim 2023 Perşembe

    Kurulu programları Program kaldır veya değiştir 'den gizlemek

    Merhaba arkadaşlar,


    Bilgisayarımızda yüklü olan uygulama ve oyunları program ekle kaldırdan gizleme yöntemini uygulayacağız.

    Öncelikle eski program ekle kaldır arayüzünü açalım. (win 10 ve win 11 sürümlerinde gözükmeyen bazı özellikler için)

    Başlat -> Çalıştır -> appwiz.cpl


    Eski görünümlü program ekle kaldır menümüz geldi.


    Şimdi Kayıt Defteri Düzenleyicisi'ni açmamız gerekiyor.

    Başlat -> Çalıştır -> regedit


    Açılan ekranda şu konuma gidelim:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

    Eğer bilgisayarınız 64 bit ancak gizlemek istediğiniz program 32 bit olarak kurulmuş ise şu konuma gidelim:

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall




    Bazı uygulamaların isimleri düzgün iken bazı uygulamaların isimleri {FAFEE5E3-E00A-4CE8-B495-8F66A5FAB236} gibi garip bir şekilde yazıyor olabilir. Burada;
    • Eğer gizlemek istediğiniz uygulamanın ismi düzgün ise onu bulalım ve şu adımı uygulayalım:

    Sağ klik -> Yeni -> DWORD (32 bit) Değeri

    Bu şekilde bir değer oluşacak:

    İsmine SystemComponent yazalım ve kaydedelim.
    Sonrasında çift SystemComponent'e çift klik atalım.
    Açılan ekranda Değer Verisi: yazan kısma 1 yazıp Tamam'a tıklayalım.

    Veee tebrikler! Artık Program ekle kaldır ekranınızdan bu uygulamayı gizlediniz. Tekrar açmak isterseniz yine buraya gelip SystemComponent'in değerini 0 yapmanız ya da SystemComponent'i silmeniz yeterli olacaktır.

    • Eğer gizlemek istediğiniz uygulamanın ismi düzgün değil ise
    Örneğin Ori and the Blind Forest: Definitive Edition isimli oyunu gizlemek istedim. Eski program ekle kaldır menüsünden o uygulamayı bulup üzerine 1 kere tıklayarak aşağıda çıkan Destek bağlantısını kopyalıyorum. (Tıklayıp açıp kopyalayabilir ya da kenara not alarak kopyalayabilirsiniz)

    Sonrasında Kayıt Defteri Düzenleyicisine gelip az önce bulduğumuz Uninstall klasörüne sağ tıklayarak Bul diyorum. 

    Çıkan alana az önce kopyaladığım linki yapıştırıp Sonrakini Bul butonuna tıklıyorum.

    Ve tadaaa! O bizi bulamadığımız klasöre götürüyor!

    Şimdi ise buraya tıklayarak çıkan adımları takip edip uygulamanızı Program Ekle veya Kaldır menüsünden gizleyebilirsiniz!


    Yazıda kullandığım kaynaklarım: 

    2 Ekim 2023 Pazartesi

    Windows 10/11 Uzak Masaüstü Bağlantısı "Başvuru hesabı şu anda kilitlenmiş ve buna oturum açılamayabilir." Hatası

     Merhaba arkadaşlar,


    Bugün kendim yeni formatladığım 2 makina arasında bağlantı sorunu yaşadığım için bunu nasıl çözdüğümü anlatacağım.

    Öncelikle aldığım hata buydu:


    Bu hatayı alıp dururken deneyip durduğum için hesap bloklandı ve bağlanmak istediğim bilgisayarı normalde bile açamaz hâle geldim.

    Önce bu ayarın nereden nasıl kapatıldığını göstereyim:

    Başlat -> Grup İlkesini Düzenle


    Yerel Bilgisayar İlkesi -> Bilgisayar Yapılandırması -> Windows Ayarları -> Güvenlik Ayarları -> Hesap İlkeleri -> Hesap Kilitleme İlkesi   

    Bu menünün altına geldiğimizde Hesap kilitleme eşik değeri'ne çift klik atıp "geçersiz oturum açma girişimi sayısı" değerini 0 yaparsanız ne kadar hatalı deneme yaparsanız yapın kilitlenmeyecektir.


    Peki varsayalım bu ayarı bilmiyorduk ve deneye deneye kilitledik. Ne yapmalıyız?

    Şu anda gördüğümüz ekran şu şekilde:


    Sağ alttaki güç butonundan Yeniden Başlat'a klavyede Shift tuşuna basılı tutarak tıklıyoruz.

    Karşımıza şu ekran gelecek:


    Sorun Gider'e tıklıyoruz.

    Bir sonraki ekranda Gelişmiş Seçenekler'i tıklıyoruz.


    Bir sonraki ekranda ise Komut İstemi seçeneğini tıklıyoruz.



    Sonrasında kendi kullanıcımızı seçeceğiz ve o kullanıcı ile bilgisayarın komut istemini çalıştıracak.

    Komut isteminde Windows'umuzun kurulu olduğu dizine girmemiz gerekiyor. Bende C olduğu için

    "C:" yazarak o dizine giriş sağlıyorum.

    Sonrasında:

    cd Windows\System32 



    yazarak System32 klasörünün içerisine gitmiş oluyorum. 

    Sonrasında:

    ren utilman.exe utilman1.exe


    yazıp Erişilebilirlik butonunun açacağı kısayolun adını değiştirmiş oluyoruz.

    Sonrasında: 

    ren cmd.exe utilman1.exe



    yazıp Login ekranında Erişilebilirlik butonumuzun açacağı kısayolu Komut istemi olarak ayarlamış oluyoruz. Bu sayede Windows arayüzü yüklenmiş hâldeyken login olmadan komut istemine erişebileceğiz.

    Komut istemi ekranımızı kapatıp Devam diyelim.


    Login ekranımız geldi ve hâlâ hata alıyoruz! Endişe etmeyin. Sağ alttaki saate benzeyen ikona basın. Bastığınızda karşınıza erişim kolaylığı ekranı değil de Komut istemi açılacak!


    Açılan Komut istemine "netplwiz" yazalım ve açılan Kullanıcı Hesapları ekranında o anki kullanıcımıza tıklayıp Parolayı Sıfırla diyelim.


    Yeni Parola kısımlarını boş bırakarak Tamam dediğimizde aynı şekilde şifresiz olarak kullanıcımız devam edecek ve kilidi kalkacaktır.



    Bağlanacağımız bilgisayara sonunda yeniden erişebiliyoruz!

    Haydi artık bağlanmak için gerekli son ayarımızı yapalım:

    Başlat -> Grup ilkesini düzenle

    Ekranını açalım.

    Sonrasında:

    Yerel Bilgisayar İlkesi -> Bilgisayar Yapılandırması -> Windows Ayarları -> Güvenlik Ayarları -> Yerel İlkeler -> Güvenlik seçenekleri


    Bu menünün altına geldiğimizde Hesaplar: Yerel hesabın boş parola kullanmasını yalnızca konsol oturumuyla sınırla seçeneğine çift klik atalım.


    Açılan ekranda Devre dışı seçeneğini seçip tamam dediğimiz zaman her şey hazır hâle gelmiş demektir.

    Artık diğer bilgisayarımızdan bu bilgisayarımıza Uzak Masaüstü Bağlantısı ile bağlanabiliriz:






    Araştırmalarımda kullandığım kaynaklar: 




    19 Ağustos 2021 Perşembe

    C# Linq Select'in içerisinde istenilen tüm işlemleri yapmak

     List<TaskDto> tasks = pagedAndFilteredTasks.Select(o =>
                {
                    var assigneds = ObjectMapper.Map<List<TaskAssignedDto>>(o.Assigneds.ToList());

                    return new TaskDto
                    { 
                        Subject = o.Subject,
                        Content = o.Content,
                        IsImportant = o.IsImportant,
                        IsPrivate = o.IsPrivate,
                        TaskType = o.TaskType,
                        ActionTime = o.ActionTime,
                        Id = o.Id,
                        Assigneds = assigneds
                    };
                }).ToList();

    Select süslü parantezinin içerisinde istediğimiz değişkeni oluşturup istediğimiz işlemleri uygulayıp aşağıda return ederken kullanabiliyoruz

    25 Haziran 2021 Cuma

    Typescript object array'i tekilleştirme

      const keys = ["question"];  //tekilleştirilecek olan field


            this.task.questions = this.task.questions.filter((s => o => (k => !s.has(k) && s.add(k)) (keys.map(k => o[k]).join('|'))) (new Set));




    ------------------------------------------------

    bu kısımda da farklı fieldları olmayan diziyi tekilleştiriyor

    var myArray = ['a', 1, 'a', 2, '1'];
    
    let unique = [...new Set(myArray)];

    11 Mayıs 2021 Salı

    Typescript async for örneği

    Selamlar!

    Bazı durumlarda asenkron for işlemi gerekiyor. Bu işlemler için alttaki kodu kullanabilirsiniz:


    for await (let dizininElemani of this.dizi) {         
                    dizininElemani.property = "ben yeni value'yum";           
            }


    İyi günler!

    12 Nisan 2021 Pazartesi

    Çalıştır kısmına istediğiniz ismi yazarak kendi uygulamanızı çalıştırma yöntemi

    Merhabalar!

    Bu yazımızda Başlat -> Çalıştır (Win + R) kısmından istediğimiz uygulamayı direk çalıştırabilme yöntemini anlatacağım.

    • Öncelikle Kayıt defteri'ni açıyoruz. (Veya başka bir yoluyla Win + R yaptıktan sonra regedit yazabilirsiniz)


    • Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths Yoluna gidiyoruz.


    • App Paths'a sağ klik atıp New -> Key diyoruz.



    • Çalıştır'a yazmak istediğimiz ismin sonuna .exe ekleyerek bir klasör oluşturuyoruz.  Örneğin ben bdoboss.exe yazıyorum.



    • Sağ tarafta oluşan (Default) isimli nesneye çift klik atıyoruz ve "Value data:" şeklinde istediği alana programımızın tüm uzantısını yazıyoruz. (Örnek olması için yazıyorum bendeki uzantı şu şekilde: C:\Users\DEVELOPER01\source\repos\virDeneme\virDeneme\bin\Debug\netcoreapp3.1\virDeneme.exe )


    • Yine sağdaki boş bir alana sağ klik atıp New -> String Value seçeneğini seçiyoruz.



    • New Value #1 şeklinde oluşan ismine Path yazıyoruz.


    • Path'e çift klik atıp "Value data:" alanına az önceki tüm uzantısınız verdiğimiz programımızın sadece yolunu yazıyoruz. (Yine örnek olması için bendeki yolu yazıyorum: C:\Users\DEVELOPER01\source\repos\virDeneme\virDeneme\bin\Debug\netcoreapp3.1 )



    • Tebrikler! Artık Çalıştır'a ayarladığınız ismi yazarak programınızı çalıştırabilirsiniz!










    27 Ocak 2021 Çarşamba

    C# Kullanıcı arayüzü (UI) donmadan async metod kullanımı

    Sayfamıza bir adet buton ve bir adet label ekleyelim.

    Yeni thread açmadan async şekilde fonksiyon çalıştırma yöntemi:

    private async void button1_Click(object sender, EventArgs e)     
    {           
            var t = Task.Factory.StartNew(async () =>
                    {
                         for (int i = 0i < 1000000i++)
                         {
                            await Task.Delay(1);
                            label1.Text = i.ToString();
                         }
                    },CancellationToken.None,
                    TaskCreationOptions.None,
                    TaskScheduler.FromCurrentSynchronizationContext());
     }

    ------------------------------------------------------------------------------------------------

    Yeni thread açarak (eski tarz) async metod çalıştırma yöntemi:

    public
    Form1()
    {
         InitializeComponent();
         Control.CheckForIllegalCrossThreadCalls = false;
     }

    private async void button1_Click(object sender, EventArgs e)
    {
                await Task.Run(() =>
                {
                    for (int i = 0; i < 1000000; i++)
                    {
                        label1.Text = i.ToString();
                    }
                });
    }

    Bu yöntem daha fazla thread oluşturarak işlemciyi daha fazla yoracaktır.

    3 Aralık 2020 Perşembe

    C# Array.ForEach kullanımı

     using System;

    public class SamplesArray { public static void Main() { // üç elemanlı bir sayı dizisi oluşturun int[] intArray = new int[] {2, 3, 4}; // KareleriniGoster yöntemi için bir temsilci belirleyin Action<int> action = new Action<int>(KareleriniGoster);
           // ve kullanın Array.ForEach(intArray, action); } private static void KareleriniGoster(int sayi) { Console.WriteLine("{0:d}'nin karesi= {1:d}", sayi, sayi*sayi); } } /* Bu kod aşağıdaki çıktıyı üretir: 2'nin karesi= 4 3'nin karesi= 9 4'nin karesi= 16 */

    Kaynak : Microsoft

    29 Eylül 2020 Salı

    JavaScript ile konsola renkli ve farklı boyutta yazı yazdırma

     Selam arkadaşlar bu sefer çok kısa bir bilgi ile karşınızdayım. JavaScript'te console.log() yaparken birbirinden farklı şekilde loglar yazdırmak isterseniz bu şekilde komutlar kullanmanız gerekli.

         setTimeout(console.log.bind(console, '%cFoo' , 'color: #FF00FF; font-size: 35px;'), 0);



    18 Ağustos 2020 Salı

    Angular Custom Pipe Yazımı

    Herkese Merhaba!

    Bu yazıda kendi istediğimizi yapan bir pipe nasıl yazılır onu anlatacağım.

    İstediğimiz konuma xyz123.pipe.ts dosyasını oluşturup;

    export class xyz123 implements PipeTransform {}

    şeklinde bir class oluşturalım.

    Main module dosyamıza import ettiğimiz bir utilities modülümüz var ise utilities modülünün içine, yok ise main module dosyasına oluşturduğumuz pipe dosyasını import edelim.

    import xyz123 } from './xyz123.pipe';

    @NgModule({

        imports: [
            CommonModule
        ],
        providers: [  ],
        declarations: [
            xyz123 
        ],
        exports: [
            xyz123 
        ]
    })

    (Typescript dosyamızda bu pipe'ımızı kullanmak istiyorsak pipe class'ımızı modülümüzdeki providers kısmına da eklememiz gerekmektedir.)

    Oluşturduğumuz xyz123.pipe.ts dosyamıza geri dönelim. Pipe'ı baz alan importumuzu yapalım ve Pipe olduğunu dışarıya belli edip yapmasını istediğimiz kodu yazalım.

    import { Pipe, PipeTransform } from '@angular/core';

    @Pipe({
        name: 'xyzPipe'
    })

    export class xyz123 implements PipeTransform {

        transform(value: any, args?: any): any {

            let firstDigit = value.match(/\d/); // metindeki ilk sayıyı(digit'i) bulur
            let index = value.indexOf(firstDigit); // sayının indexini verir
            return value.substring(0, index) + ' ' + value.substring(index); //metnin arasına bir boşluk ekleyip return eder
       }
    }

    Şimdi html dosyamıza dönüp pipe'ımızı kullanalım.

     {{ 'istediğim yazı ve sonuna boşluksuz rakamlar123' | xyzPipe }}

    Çıktı:        "'istediğim yazı ve sonuna boşluksuz rakamlar 123"

    Bu yazdığımız pipe'a göre metindeki ilk rakamı bulup bir öncesine boşluk ekledik. Metodumuzun içinde bu olayı istediğimiz gibi yazabiliriz.

    5 Ağustos 2020 Çarşamba

    Team Foundation Sidekicks 2015 / 2017 / 2019 Kurulumu

    Merhaba arkadaşlar! 



        TFS (Azure DevOps) kullanan ya da kullanmış olan kişiler bazı durumlarda projesini kullanan ya da daha önce kullanmış kişilerin sunucu üzerindeki workspace kaydınız kaldırmak isteyebilir. Bunun için yetkili bir hesaptan (VS2017 için)
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer
    dosya konumunda komut istemini açıp tf komutları yazmanız gereklidir. Bazı 3. parti yazılımlar ile bunu güzel bir arayüz ile komutlar ile uğraşmadan halletmek mümkündü. Ancak bu yazılım en son Visual Studio 2015 için geliştirilmiş ve daha yenisi yok bu yüzden çalışmamakta. Yabancı bir kaynakta bulduğum olayı uyguladım ve gerçekten çalıştı bunu da sizinle paylaşmak istedim.

    Adım 1: Gerekli Dosyaları indirelim. İndir
    Adım 2: Gerekli Dosyalar\Kurulum Dosyaları içerisinde bulunan TF_Sidekicks_6.0.0 kurulum dosyasını çalıştırın ve yazılımı bilgisayarınıza kurun.
    Adım 3: (Eğer Visual Studio 15 kurulu değil ise) Regedit'i açıp HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio konumuna gidin. 
    Adım 4: VisualStudio klasörüne sağ klik atıp sırasıyla New -> Key seçeneklerini seçin ve 14.0_Config isminde klasör oluşturun.
    Adım 5: 14.0_Config klasörüne sağ klik atıp sırasıyla New -> String Value seçeneklerini seçin ve oluşan değere InstallDir ismini verin. 
    Adım 6: InstallDir isimli değerin Data'sına Sidekicks'in kurulu olduğu konumu girin. (Default kurulum yolu: C:\Program Files (x86)\Attrice Corporation\Team Foundation Sidekicks 2015)
    Adım 7: Gerekli Dosyalar\DLL Dosyaları içerisinde bulunan Dll dosyalarını kopyalayıp Sidekicks'in dosya konumuna gidip yapıştırın.
    Yazılımı sağlıklı şekilde çalıştırabilirsiniz!

    Dipnot: Ben ille de komut isteminden kod ile silmek istiyorum diyenler şu kodlar ile listeleme ve silme yapabilir:

    - Sunucudaki tüm workspace konumlarını ve sahip bilgisayarlarını listeler:
    tf workspaces /owner:* /collection:"https://abcxyz123.visualstudio.com"

    - İstediğin bilgisayardaki istediğin workspace'i silme komutu (aradaki boşluğu silip birleşik yazın):
    tf workspace /delete /server:https://abcxyz123.visualstudio.com 
                                        DESKTOP-4S9PDLR;c8c6fef5-0f3b-4b57-8baf-002669bdc2fb 
    | |
    | |
           ▼       ▼
    Bilgisayar adı Kullanıcı ismi (Örn: John DOE veya 
                                                                                            TFS Sidekicks'te gözüken owner name)

    Kaynak: dotnetcatch

    29 Haziran 2020 Pazartesi

    JSON veriyi otomatik sınıflandırma eklentisi

    Selamlar!

    Bu yazıda Visual Studio ve XCode için JSON veriyi çekilebilir metoduyla beraber otomatik sınıf olarak ayarlayan bir site ve eklentiden bahsedeceğim.

    Öncelikle sitemizin adı QuickType, siteye buradan ulaşabilirsiniz. Sitenin Visual Studio, Visual Studio Code ve XCode'a ait eklentileri bulunmakta. Siteyi kullanmadan direk yazılım içerisinden işinizi halledebilmeniz için.


    • Visual Studio 2017 için resmi indirme linki: Link - Alternatif Link
    • Visual Studio 2019 için resmi olmayan ama portlanmış yazılım linki: Link - Alternatif Link
    • Visual Studio Code için resmi indirme linki: Link
    • XCode için resmi indirme linki: Link


    Visual Studio üzerinde kullanım yöntemi: