6 Kasım 2017 Pazartesi

Multiple types were found that match the controller named 'Home'. This can happen if the route that services this request ('{controller}/{action}/{id}') does not specify namespaces to search for a controller that matches the request. If this is the case, register this route by calling an overload of the 'MapRoute' method that takes a 'namespaces' parameter.

Bazı durumlarda eğer bir solution altında birden çok proje kullanıyor ve bu projelerde asp.net mvc projesi ile çalışıyor iseniz birden fazla HomeController ınız olur ise aşağıdaki hatayı alabilirsiniz.


Multiple types were found that match the controller named 'Home'. This can happen if the route that services this request ('{controller}/{action}/{id}') does not specify namespaces to search for a controller that matches the request. If this is the case, register this route by calling an overload of the 'MapRoute' method that takes a 'namespaces' parameter.


Bu durumda sorunu çözmek için yapmanız gereken şey sadece RouteConfig.cs dosyanızda MapRoute işlemine  yeni bir parametre daha ekleyerek kullanılan controller namespace inizi belirtmektir.

Örnek olarak aşağıda bold olarak işaretlenmiş kodu inceleyebilir ve kendi projenizde sadece ilgili satırı ekleyebilir, problemi çözebilirsiniz.

 public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "GamePayment.WebAdmin.Home", action = "Index", id = UrlParameter.Optional },
                namespaces: new[] { "ProjeNameSpace.Controllers" }
            );
        }

11 Ekim 2017 Çarşamba

Angular URL Escape character problem solving

While you try to redirect anything with url query paremeter with angular property, you may have problem with url encoding. my problem was # character to search with hashtag.

example url which I was going to trying and fall to problem : www.websitename.com/search?searchkey=#somehastagword

if try it like that, you will have problem :
<a href="www.websitename.com/search?searchkey={{ hashtagValue}}"> {{ hashtagValue}} </a>


you should use escape filter as following;

angular.module('angularModuleName').filter('escape', function () {
    return function (input) {
        if (input) {
            return window.encodeURIComponent(input);
        }
        return "";
    }
});


use it in html like that :

<a href="www.websitename.com/search?searchkey={{ hashtagValue | escape }}"> {{ hashtagValue}} </a>


After added angular filter function in our angular app, we solved our problem deal with url parameter escape characters.Now we have result url as following:

http://www.websitename.com/search?searchkey=%23searchkeyword

14 Ağustos 2017 Pazartesi

Yandex Kurumlar Eposta Ek Yönetici Yetkisi Tanımlama

Uzun zamandır google ın eposta kullanımını ücretli hale getirmesinden sonra herkez yandex kurumlar eposta alt yapısını kullanmaya başladı.

Öncelikle herkes kolay bir şekilde mail alt yapısını yandex e taşıyabiliyor fakat bir süre sonra yaşanan sorun bu eposta yönetici yetkisini devretme yada yeni birini eposta yönetici olarak tanımlama ihtiyacı ortaya çıkıyor.


Bu durumda kurumlar yandex alt yapısındaki eposta alt yapınız için yeni birine yönetici yetkisi vermek için izlemeniz gereken adımlar sırası ile aşağıdaki gibidir.


1.mail.yandex.com.tr ye girerek yönetici hesabınızın mail ini açın
2.kurum.yandex.com.tr ye girin, burada yöneticisi olduğunuz eposta sunucularını görebilir, yeni bir eposta alt yapısı ekleyebilirsiniz.

3.Şimdi sıra geldi yeni bir yönetici atama işlemi için öncelikle yetki alma işlemine, bu url yi alan adınızı değiştirerek url ye yapıştırıp enter a basın.
https://api.kurum.yandex.com.tr/get_token.xml?domain_name=alanadi.com.tr

4.İlgili url ye gittiğinizde sayfada bir xml veri yapısı karşınıza çıkacak bu bölümdeki token değerini kopyalıyoruz.

5.Şimdi  aşağıdaki link üzerinden gerekli alanları değiştirip yine tarayıcımıza yapıştırıyoruz ve yetki işlemi tamam.

URL : https://api.kurum.yandex.com.tr/api/multiadmin/add_admin.xml?domain=alanadi.com.tr&token=yourtoken&login=adminlogin

Değişmesi gereken alanlar: 

alanadi.com.tr -> buraya eposta alt yapısını değiştirmek istediğiniz alan adınızı yazıyorsunuz.
yourtoken -> bu alana kopyalamış olduğumuz token değerini koyuyoruz.
adminlogin -> Bu alana yönetici olarak tanımlamak istediğiniz yeni eposta adresini yazıyorsunuz.

Ve işlem tamam bu linke gittiğinizde ekranda size yeni admin ve eposta alt yapısı ile ilgili kısa bir bilgilendirme gelecek ve işlem tamamdır :)

7 Haziran 2017 Çarşamba

How to Drop All the tables, procedures, views and related things in database

/* Drop all non-system stored procs */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 ORDER BY [name])

WHILE @name is not null
BEGIN
    SELECT @SQL = 'DROP PROCEDURE [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped Procedure: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO

/* Drop all views */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 ORDER BY [name])

WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP VIEW [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped View: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO

/* Drop all functions */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] IN (N'FN', N'IF', N'TF', N'FS', N'FT') AND category = 0 ORDER BY [name])

WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP FUNCTION [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped Function: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] IN (N'FN', N'IF', N'TF', N'FS', N'FT') AND category = 0 AND [name] > @name ORDER BY [name])
END
GO

/* Drop all Foreign Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)

WHILE @name is not null
BEGIN
    SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    WHILE @constraint IS NOT NULL
    BEGIN
        SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint) +']'
        EXEC (@SQL)
        PRINT 'Dropped FK Constraint: ' + @constraint + ' on ' + @name
        SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)
END
GO

/* Drop all Primary Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)

WHILE @name IS NOT NULL
BEGIN
    SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    WHILE @constraint is not null
    BEGIN
        SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint)+']'
        EXEC (@SQL)
        PRINT 'Dropped PK Constraint: ' + @constraint + ' on ' + @name
        SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
    END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)
END
GO

/* Drop all tables */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 ORDER BY [name])

WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP TABLE [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped Table: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO

6 Haziran 2017 Salı

XCode Swift App Error: the maximum number of apps for free development profiles has been reached

English Part :

When you exceeded limit of publishing app to your device. this error message appear, don't worry about it just delete one of published app in your device(iphone, ipad, etc.) then try to run it your device in xcode again.



Türkçe Bölüm :
XCode ile uygulama geliştirirken genellikle geliştirdiğimiz uygulamaları telefon ve tabletlerimize yüklemek ve test etmek isteriz. Ve eğer cihazlarımıza yüklediğimiz uygulama sayısı 3 ü geçti ise XCode karşımıza böyle bir hata çıkarır çünkü ücretsiz apple hesabı ile daha fazla uygulama cihazınıza yükleyemezsiniz.

Problemi çözmek için cihazınızdan 1 uygulama silmeniz yeterli. Yeni uygulamanız için otomatik olarak yer açacaktır.

5 Haziran 2017 Pazartesi

could not locate device support files xcode 8 iphone



Solution English Part :

While you are trying to simulate your XCode ios app in your phone, you may see this error message as "could not locate device support files. xcode". In this situation, you just need to download and update latest XCode version in App Store. it can be solve your problem easily.


Türkçe :

XCode üzerinde geliştirdiğiniz uygulamayı kendi telefonunuzda test etmeye çalıştığınızda "could not locate device support files." şeklinde bir hata alabilirsiniz bu muhtemelen XCode un eski telefonları similator olarak desteklenmediğinden kaynaklanmaktadır.

Çözüm olarak XCode unuzun güncel versiyonunu indirmeniz sorunu çözmek için yeterlidir.



3 Haziran 2017 Cumartesi

Github vs bitbucket

Github ve bitbucket ı tüm yazılımcılar muhtemelen çoğunlukla duyuyordur. Bu yazıda bunları genel anlamda ne olduğunu ve aralarındaki farkların ne olduğunu anlatmak istedim.


Github tüm dünya üzerindeki yazılım geliştiriciler tarafından kullanılan popüler bir platform, şöyle diyebiliriz ki eğer github üzerinde bir projeniz var ise ve birkaç da proje eklediyseniz yazılımcılar arasında bunu söylediğinizde çok havalı olabilirsiniz.

Hatta ve hatta bir iş başvurusu, görüşmesinde referanslarım ve yaptığım işlerle ilgili github hesabıma göz atabilirseniz demeniz çoğunlukla işe alınmanızda diğerlerine göre sizi bir hatta birkaç adım öne çıkartacak ve işe alınmanıza sebep olacaktır :)

Şimdi çıtayı yükselttik, oldukça havalı hale getirdik. Nedir bu github ?

Github ve bitbucket aslında hemen hemen aynı şeyler. İki amaç için kullanılabilir.
1.Versiyon Kontrol : Projeleriniz için bir versiyon kontrole ihtiyacınız var ise yada kodlarınızı bulutta güvende tutmak istiyorsanız bu araçları kullanabilirsiniz. Evet ilk satırdan anlaşıldığı gibi bu platformlar bir çeşit versiyon kontrol sistemi.

Versiyon kontrol sistemleri kodlarınızın her versiyonunu tutan, skıntı yaşadığınızda geçmiş kodlarınızı geri dönebileceğiniz yada göz atabileceğiniz, takım halinde tek bir projede aynı anda rahatca çalışabileceğiniz araçlardır.

2.Proje Paylaşım ve Bir Toplulukla Projeyi Geliştirmek:
Github üzerinde projelerinizi herkese açabilir insanların görüp inceleyip yorumlarda bulunmasını , katkıda bulunup projelerinizi geliştirmenize yardımcı olmanızı sağlayabilir, açık kaynak olarak projelerinizi burada tutabilrisiniz.

Projelerinizi genele açabildiğiniz gibi kimseye göstermeden dış erişime kapalı halde de bu platformları kullanabilirsiniz.



Peki Hangisini Tercih Etmeliyim ? 
Eğer projelerinizi paylaşma gibi bir amacınız var ise kesinlikle Github kullanın derim, çünkü oldukça popüler ve tüm dünya tarafından erişilebilir bir profil, proje paylaşımınız olur.


Fakat eğer projelerinizi bulutta versiyon kontrolü olarak tutup da başkaları ile paylaşmak isterseniz Github sizden para istiyor. Bu noktada bitbucket kullanabiliyorsunuz. Bitbucket gizli projelerinizde de ücretsiz hesap sağlıyor. Ücreti sadece 5 kullanıcıdan fazla kişi projelerinize erişmek istediğinde istiyor ki bu da küçük takımlar için gayet uygun maliyetli bir sistem.


Sonuç olarak bu iki sistem de aynı işi yapıyor, seçim için projelerinizi gizli mi tutacak yoksa genel paylaşıma açacakmısınız bu duruma göre hangisni kullanabileceğinizi seçebilirsiniz.

Soruları olanlar yorum yazabilir. Memnuniyet ile cevaplarım.