17 Haziran 2020 Çarşamba

Xna Nedir? [27-03-2012]

   XNA bir framework olup ,C# ile oyun programlayabilmemizi sağlar.Burada framework ile anlatmak istediğimiz oyun geliştirme konusunda temel işlemleri geniş çaplı bir sınıflar ve fonksiyonlar kütüphanesi halinde paketlenmesidir.

      Microsoft'un milyar dolarlara varan oyun piyasasına yönelik hamlesidir.Şirket sadece ilk aklınıza gelen işlerle uğraşmıyor yani.Halo,Age of Empires veya Rise of Nations gibi oyunların yapımları konusunda adres Microsoft Game Studio'yu gösteriyor(1).Microsoft'un,göz bebeği olan C# programlama dilinin bu sektörde artık C++'ın yerini zamanla almasını planladığını söyleyebiliriz.Genellikle tasarlanmış veya günümüzde yapım aşamasında olan video oyunlarının büyük çoğunluğunun C++ dili ile programlandığını göz önüne alırsak alışkanlıkları aşma konusunda şirketi zaman gerektiren ama imkansız olmayan bir süreç bekliyor diyebiliriz.

      XNA,DirectX(2) destekli bir oyun tasarlamamızı sağlar.Bilindiği gibi DirectX ve OpenGL API'leri(3) sayesinde video oyunları başta olmak üzere çoklu ortam yazılımlarını rahat,hızlı ve uyumlu şekilde hazırlayabiliyoruz.(?)Tam burada bunlardan herhangi biriyle uğraşmış olanların söylendiğini duyabiliriz.Hiç dokunmamış olanlar ise karşılarında balta girmemiş ormanlar gibi karışık en basidinden bir pencere(4) oluşturabilmek için on takla atılan ortam buluyorlar.XNA tam bu noktada devreye girerek düzenli ve kolay anlaşılır bir durumda olan yapısıyla karşımıza çıkıyor.Aslında balta girmemiş orman API'lerimize göre karmaşık olmaması sayesinde dünya genelinde var olan oyun geliştirici sayısının kat kat fazlası tarafından indirilip denenmiştir.

     XNA ile geliştirdiğimiz oyunları tüm Windows işletim sistemli bilgisayarlarda,Windows Phone'lar ve Xbox(5) gibi sistemlerde yürütebiliriz.XNA'nın en büyük avantajlarından birisi Xbox oyun konsolu için programlama yapabiliyor olmamızdır.Ayrıca belirtmemizde fayda var geliştirdiğimiz uygulamaları Xbox ve Windows Phone için oluşturulmuş marketlerde satabiliyoruz.Fakat şunu biliyorum ki Xbox için geliştirilen bir oyunun satışı için Microsoft'a belli bir miktar lisans ücreti ödememiz gerekiyor.Microsoft'un en çok önemsediği şeylerden biriside bu konu hakkında şirkete ait platformlar için geliştirilen uygulamaların sayıca zenginleşmesi diyebiliriz.Profesyonel olan veya olmayan tüm geliştiricilerin desteği sayesinde ortaya çıkan çeşitli uygulamaların birde işletim sistemine bağımlı olduğunu söylersek şaşırmazsınız heralde.Klasik şirket politikalarından biri olan bu durum elimizin altında gerekli malzeme(6) var ise ve sadece oyun yapmak istiyorum diye düşünüyorsak pek sıkıntı yapmamızı gerektirecek bir şey değil.

      XNA eğer oyun yapmak istiyorsanız ve karmaşıklıktan uzak durmak istiyorsanız,belki kaliteli birşeyler ortaya çıkarabilirim ve bunu uygun fiyattan(7) satabilirim diye düşünüyorsanız ama satışlar için geniş pazara sahip platformlar olması gerekir diyorsanız sadece benim sizlere şahsi önerim olacaktır.Bu konuda yapacağınız detaylı araştırmalar sonucu framework u öğrenme hızınız diğer balta girmemiş ormanlarda hayatta kalmayı öğrenmenizden daha hızlı ve kolay olacağını söyleyebilirim.XNA ile şu projeleri başarabiliriz veya şunların üstesinden geliriz gibisinden şeyler söylemiyeceğim.Umarım elimden geldiğince sizlere bu konu hakkında bildiklerimin yettiği ölçüde kaliteli,verimli yazılar sunarım.XNA ile yapabileceklerimizin önünde ki en büyük engellerden biri hayal gücümüz ve çalışma azmimizdir.

(1)Tamam silahımı yavaş bir şekilde yere bırakıyorum,bela istemiyorum.
(2)Microsoftun grafik programlama API'si
(3)Yazılım programlama arayüzü
(4)Kullanıcı açısından hiçbir değeri olmayan
(5)Microsoft'un oyun konsolu
(6)Windows işletim sistemi,Visual Studio,XNA Framework,.Net Framework,DirectX
(7)Yarısı dolu bardağa bakan kapitalist esprisi

19 Eylül 2019 Perşembe

The breakpoint will not currently be hit. The source code is different from the original version.

'The breakpoint will not currently be hit. The source code is different from the original version.'

This error mostly is appearing due to unclear reasons while working on the solution with multi-project on visual studio.

When you put a breakpoint for a line it doesn't work what you expect. It skips over the line you need to observe. It doesn't stop on the line and breakpoint's color(redpoint) turns to yellow. Then the tooltip which starts to appear when you mouse over the yellow dot breaking point.

Consequently, your breakpoints don't be hit when they are required to work. And they never will be hit.


In my solution, there are 3 projects called ArarGameLibrary, PuzzleMeWindowsProject, TestProject.Suddenly the error started to appear when I was working on PuzzleMeWindowsProject which uses ArarGameLibrary.dll.Writing code withoud debugging is a complete disaster.
I found some solutions on the web but they don't give a real solution us to keep going on.

I tried 3 ways. Firstly do 'Clean and Rebuild' PuzzleMeWindowsProject project. It won't work forever.

Secondly, in the top menu of Visual Studio,Uncheck Tools/Options/Debugging/General/
'Require source files to exactly match the original version'.It won't work forever.Actually a breakpoint will not work even where it should work.



As the third way, inside bin/debug files of the project remove files with pdb extension.Unfortunately it does'nt solve the problem too.

Anyway, you don't have to do one of them.

There is a configuration manager, where there is a debug drop-down list at the top of the visual studio



Inside the Configuration Manager you need to configure your debug build for your project.I select all my projects to build in my debug configuration as you see below.


As a result my projects will be build when I click to debug.Everybody is happy now? Thank you.


17 Eylül 2019 Salı

List View Edit Modes in XtraReports in DevExpress (InLineEditMode:Batch)






https://documentation.devexpress.com/eXpressAppFramework/113249/Concepts/UI-Construction/Views/List-View-Edit-Modes

The data source does not support server-side data paging


In DevExpress you have to set ASPxGridBase.DataSourceForceStandardPaging property true to use paging functionality of the grid. DataSourceForceStandardPaging property comes default with false value.



Note : Also you can check this link out if you couldnt solve the problem.

How can I make a glyphicon bigger in bootstrap 3 ?

This is a very simple step for someone who knows CSS. All you have to do is to add a style into page about your element which has glyphicon on it.

We will use the euro as a glyph icon and add style into the page as internal.

As you can see below :

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>

<style>
span.glyphicon-euro{
    font-size: 1.9em;
}
</style>

</head>
<body>

<div class="container">

      <h2>Euro Glyph</h2>
      <p>Euro icon: <span class="glyphicon glyphicon-euro"></span></p> 

</div>

</body>
</html>


You can change the font size of the span element whose class name is glyphicon-euro to make bigger glyphicon in bootstrap. Test by increasing and decreasing values of font-size.

Note : There are about 260 glyphs available from http://glyphicons.com/  for those use Bootstrap 3 on their web site. You have already known that glyphicons are not supported by Bootstrap 4 and you need to use the alternative toolset deliverer such awesome font.

27 Aralık 2017 Çarşamba

Delete a record using JQuery with AJAX functionality in ASP.NET MVC without using Html.AntiForgeryToken

I need a button posting to manage deleting process when it is clicked. After clicking the button a bootstrap module will appear and then it will ask us whether we continue or not.All will be done without using @Html.AntiForgeryValidation.Because we can not use it in this case.
First of all, I put a button on my HTML table's row to click on it.You can place it wherever you want.Also, I bind a javascript function which is ShowDeleteModal to call confirmation module.

<div class='btn-group'>

    <button type='button' class='btn btn-danger btn-sm' onclick="ShowDeleteModal('Log', 'Delete', '@Model.Id' )">

        <span class='glyphicon glyphicon-remove'></span> Delete

    </button>

</div>

The following image shows how the source HTML code looks in browser(F12)





And here is the ShowDeleteModal function,

function ShowDeleteModal(controller, action, id) {
            $("#deleteModal").modal("show");

            $("#controllerToDelete").val(controller);
            $("#actionToDelete").val(action);
            $("#deletedObject").val(id);
        }

When the user clicked the button a deleting confirmation message will display to ask will you continue or not?





 This message will be inside a bootstrap modal which has three inputs field those are hidden.Those inputs are stored in order of Controller Name(controllerToDelete), Action Name(actionToDelete), and GUID id(deletedObject) is relevant to which object will be deleted. You can see the following code.


    <div class="modal fade" id="deleteModal">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                    <h4 class="modal-title">Deleting Operation</h4>
                </div>
                <div class="modal-body">
                    <p>The data temporarily will be deleted, Will you continue?</p>

                    @{
                        var deleteRequestVerificationToken = Guid.NewGuid();
                        TempData["DeleteRequestVerificationToken"] = deleteRequestVerificationToken;
                    }

                    <input hidden="hidden" id="DeleteRequestVerificationToken" value="@deleteRequestVerificationToken" />
                    <input hidden="hidden" id="deletedObject" value="" />
                    <input hidden="hidden" id="controllerToDelete" value="" />
                    <input hidden="hidden" id="actionToDelete" value="" />
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" onclick="ConfirmDelete()" data-dismiss="modal">Continue</button>
                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                </div>
            </div>
        </div>
    </div>

We will post them inside AJAX data.But here I want to be sure that if a post request is coming from somewhere it must be coming from my page or my delete button on the table. It requires a validation system such as MVC's @Html.AntiForgeryToken. We can create our own key on the inside of modal of the deleting to validate the token in Action method after submitting. Place the following code on the page,

                @{
                        var deleteRequestVerificationToken = Guid.NewGuid();
                        TempData["DeleteRequestVerificationToken"] = deleteRequestVerificationToken;
                    }
When the page is loaded it sets up a value named 'deleteRequestVerificationToken ' with new GUID.
We store it inside TempData to reach it on the Controller's Action.

Posting process using JQuery with AJAX functionality inside 'ConfirmDelete' function,

        function ConfirmDelete() {

            var securityToken = $("#DeleteRequestVerificationToken").val();

            var controllerToDelete = $("#controllerToDelete").val();
            var actionToDelete = $("#actionToDelete").val();
            var deletedObject = $("#deletedObject").val();


         $.ajax({
                type: "POST",
                url: "/" + controllerToDelete + "/" + actionToDelete + "?id=" + deletedObject + "&securityToken=" + securityToken,
                success: function (response) {
                    if (response.success == true) {
                     window.location.href = response.urlToRedirect;
                    }
                }

            });

        }

In this sample, we assume that we have a Log table and are trying to delete a row from the table. 


If you prepare your Action's parameter like the following code you can find out whether we created this ticket or not. If the coming token(securityToken) is equal to the token inside TempData(DeleteRequestVerificationToken) we can keep going on deleting operation.

     // POST: Log/Delete/5
        [HttpPost]
       // [ValidateAntiForgeryToken]
        public ActionResult Delete(Guid? id,Guid? securityToken)
        {
            if (id == null || securityToken == null || TempData.Keys.Any(k => k == "DeleteRequestVerificationToken") || securityToken.ToString() != TempData["DeleteRequestVerificationToken"].ToString())
                return Json(new { success = false, message = "Bad Request" }, JsonRequestBehavior.AllowGet);

            var model = Get<Log>(id);

            if (model != null)
            {
                model.IsActive = false;
                //EditEntity<Log>(model);
                //return DeleteEntity<Log>(model, new Route() { Controller = "Log", Action = "Index" });

                return Json(new { success = true, urlToRedirect = string.Format("{0}", Url.Action("Index","Log")) } , JsonRequestBehavior.AllowGet);
            }
            else
            {
                ModelStateIsNotValid();

                return Json(new { success = false , urlToRedirect = string.Format("{0}", Url.Action("Index", "Log")) }, JsonRequestBehavior.AllowGet);
            }
        }



As you see above, the values that the two keys carry are matched so we can continue on our way.



26 Eylül 2017 Salı

28 Yaş Ortodonti Tedavisi

Evet böyle bir ihtiyaç için 10-15 yıl gecikmek. Olaya böyle bakmak lazım. 28 yaşındayım. Ama ortalama 'T' yıl yaşayacağımız hayatta ortalama 2 yıl sürdüğü söylenen bir tedaviye ne zaman başlamalı? 'T-2' yaşında mı? Yoksa şu an halledip 'T-28=Kalan yıllarım' yıl mutlu yaşamak mı? İkinci seçenecek daha mantıklı. Bu tedaviyi görüp ömür boyu rahat yaşamak, mutlu gülümsemek. Bir şeyler değişir mi? 10-20-30 yıl sonra keşke deneseydim demek yerine evet denedim ama istediğim gibi olmadı demek. Hangisini tercih ederdiniz?

Ortodontik tedavinin ne olduğunu bildiğinizi varsayarak tanımını yapmayacağım. İşte dişlerine tel takacaklar falan... Burada önemli olan beklentileriniz. Benim 1 latarel eksiği ve diğer lateral yerinde var olan süt dişinin çekimi ile 2.lateral eksikliği.Evet 28 yıl boyunca taşıdığım süt dişim vardı,bembeyazdı,kökü pek yoktu zaten artık kendiside yok ortodontiye başladıktan sonra çektirdik. Benim beklentilerim diş eksikliğimden dolayı dişlerimin sağlıklı bir kapanışa sahip olmaması dolayısıyla bunun çözümü,orta hattın kayık olması ve tabiki yanında özgüvenli bir gülümseme. Sonuç sağlık ve estetik, değer mi? Şöyle bir söz duymuştum S.Freud'e ait. Hayatta insanların 3 şeye para harcamaktan sakınmaması gerektiğini söyler : Eğitim,Sağlık ve Seyehat. Evet son zamanlar bilinç düzeyinin artmasıyla erken yaşlarda alınan bu tedavinin fiyatı eskiye oranla oldukça artmıştır. Ama tabi ki neye göre ? Sağlığın,mutluluğun fiyatı var mıdır? Öyle insanlar var ki kendi dişlerinin sırf diziliminden,çapraşıklığından vb durumlarından dolayı kendini rahat hissetmemekte. Bu ne kadar doğru?

Tamam, çok fazla takmamak lazım falan ama altın oran gibi şeyler var bu evrende.Neden kişi dişlerine baktığı halde sırf dişlerindeki diziliş bozukluğundan dolayı kendini rahatsız hissetsin? Elimizde ki herşeye şükürler olsun fakat hayatta daha güzele ulaşabilecekken neden vazgeçelim? Şöyle bir şey vardır toplumda,'hocam sana kısa saç yakışıyor'.Adamın saçı dökülüyordur. Eyvallah herkes elindekinin kıymetini bilsin tabikide. Fakat şu gerçek var keşke adamın saçı dökülmesede gene kısa kesim dolaşsa o arkadaş. Burada mecburiyet var. Kimse eğer şansı olsa kellik bana yakışıyor Jason Statham'a benziyorum diye düşünmek istemez,eğer mümkünse 3 numara dolaşan bir Jason Statham olarak dolaşmak varken. Gene saç ekimi vb yöntemler belli bir seviyeye gelmeye başladı ama tam tatmin edici değil. Ortodonti öyle bir şey mi? Hayır,artık eskiye nazaran çok hızlı sonuçlar alınabilen yani olabildiğince hızlı bir çözüm. Sonuçlar baskı ve zamanla ilgili olduğundan ve ek olarak işin içinde yıllardır belli bir basınç altında kapanışa alışmış kemikler olduğundan zaman alan bir çözüm. Ama başlangıçta dediğim gibi 'T-Şu an ki yaşınız' kadar mutlu yaşamak için değer veya en azından denedim olmadı demek için değer.

Belirtmek isterim ki daha önceden kimse elimden tutupta normalde ihtiyacım olan bu tedaviye beni götürmedi. Ama sorun değil hayatımda ilk defa şu an her anlamda hazır olduğum için şu an başladım. Daha erken yaşlarda yaptırabilenler çok şanslılar.Ben bunu denemeye karar verdim ve çok kısa süre içerisinde sonuçlarını gördüm diyebilirim.