How to Change TFS Server 2015 Build Path ?

Merhaba TFS üzerinde takıldığım ve internette nasıl çözeceğimi bulamadığım bir konuyu buraya not alıyorum. Aldığım hata şöyle: 

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets(232):Cannot evaluate the item metadata "%(FullPath)". The item metadata "%(FullPath)" cannot be applied to the path

C:\Program Files\Microsoft Team Foundation Server 14.0\Build\settings.json dosyasını açın. RootFolder - WorkFolder iki adresi değiştirin. Sonra ki build sorun düzelecektir.

{
"AutoUpdate": "True",
"RootFolder": "C:\\MyBuilds",
"WorkFolder": "C:\\MyBuilds\\_work",
"ServerUrl": "http://localhost:8080/tfs",
"AgentName": "Agent-???????????",
"PoolId": "6",
"PoolName": "??????????????????",
"AgentId": "3",
"RunAsWindowsService": "True",
"WindowsServiceName": "??????????????????????",
"WindowsServiceDisplayName": "??????????????????"
}

C# ile Web Api Get-POST ve JSON Array Sending Ve Postman Google Plugin

 Merhaba Arkadaşlar Web Api Üzerine Json objeleri Javascript, Jquery ile gönderirken sorun yaşamıyoruz fakat C# ile bu tarz bir iş yaparken ufak tefek sorunlar çıkabiliyor. "RestSharp" denen bir libary keşfettim. Nuget aracılığı ile projeme dahil ettim. JSON.stringfy yerine "Newtonsoft.Json.JsonConvert.SerializeObject" ekledim. nuget aracılığı ile onuda eklemeniz gerekmektedir.  

Bu RestSharp en güzel yanı POSTMAN denen chrome extention ile ortak çalışabilmesi, kodlarının otomatik üretilmesi ayrı bir olay. Aşağıdaki resimde çağrıyı hazırlıyoruz ve Generate Code diyerek bu ekrana ulaşıyoruz. Sonrası zaten kodu sisteme dahil etme işi oluyor.

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.Generic;
using RestSharp; 

[TestClass]
    public class SyncController_Test
    {
        [TestMethod]
        public void SyncController_Test_Get()
        {
            var url = "http://localhost:38405/api/Sync/GetJsonObject";
            var client = new RestClient(url);
            var request = new RestRequest(Method.GET); 
            IRestResponse response = client.Execute(request);
            Console.WriteLine(response.Content);
        }

        [TestMethod]
        public void SyncController_Test_Post()
        {
            var client = new RestClient("http://localhost:38405/api/Sync/UploadMaterialSeriLot?id=1");
            var request = new RestRequest(Method.POST);
            request.AddHeader("accept", "application/json");
            request.AddHeader("content-type", "application/json");
            var jsonObject = Newtonsoft.Json.JsonConvert.SerializeObject(new{ Name="Test",SurName="Test"});           
            request.AddParameter("application/json", jsonObject, ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);
            Console.WriteLine(response.Content);
        }
    }

 

iTextSharp Image Kaybolma, Sayfaya Sığmama !

PDF dosyama eklemiş olduğum html içerisinde bulunan <img /> için boyut kontrollerinin sağlanıp sayfa boyutunu aşma koşuluna göre yeniden boyutlandırılmasının sağlanması için gerekli Provider aşağıdaki gibidir. Eksikleri olabilir ama şuanlık iş görür durumdadır. Tam bir örnek için file aşağıdaki linkte verilmiştir. Kod parçacığı ise hızlıca ulaşım için aşağıda yer almaktadır.

PdfTestControllerFile.cs (11,25 kb)

    public class CustomImageProvider : AbstractImageProvider
    {
        public override string GetImageRootPath()
        {
            return ToString();
        }

        public override Image Retrieve(string src)
        {
            if (src.StartsWith("data:image/", StringComparison.InvariantCultureIgnoreCase))
            {
                var base64Data = src.Substring(src.IndexOf(",", StringComparison.Ordinal) + 1);
                var imagedata = Convert.FromBase64String(base64Data);
                var image = Image.GetInstance(imagedata);
                image.Alignment = Element.ALIGN_CENTER;
                return image;
            }
            else if (!src.Contains("http"))
            {
                var imageT = System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath(src));
              
                var pic = Image.GetInstance(imageT, BaseColor.WHITE);
                if (pic.Height > pic.Width)
                {
                    //Maximum height is 800 pixels.
                    float percentage = 0.0f;
                    percentage = 700 / pic.Height;
                    pic.ScalePercent(percentage * 100);
                }
                else
                {
                    //Maximum width is 600 pixels.
                    float percentage = 0.0f;
                    percentage = 540 / pic.Width;
                    pic.ScalePercent(percentage * 100);
                }

                //pic.Border = iTextSharp.text.Rectangle.BOX;
                //pic.BorderColor = iTextSharp.text.BaseColor.BLACK;
                //pic.BorderWidth = 3f;
                return pic;
            }
            return base.Retrieve(src);
        }
    }

 

Front End Developer Tarifini Beğendiğim Bir Güzel Yazı Mutlaka Okumalısınız...

Front-end Web Developer, CSS Developer, Front-end JavaScript Developer, Front-end Software Developer, Front-end JavaScript Application Developer, Web/Front-end user Interface Developer, Mobile/Tablet Front-end Developer, Front-end SEO Expert, Front-end Accessibility Expert, Front-end Testing/QA

Yukarıda yazdığım terimler ile ilgili açıklayıcı bir yazı olmuş, güzel bir harita olabilir diye düşündüm. Çünkü buradaki deneyim paylaşımları çok önemli detaylar içermektedir.

Bu yazı için Metin Yılmaz'a teşekkür ederim.


ASP.NET Web Sitenizin Hızı Yavaş Mı ?

Web sitenizin hızını arttırabilmek için yapabileceğimiz çok şey ama basitçe aklıma gelenleri hızlıca yazıp uzatmadan kapatcam konuyu.

  1. JS, Css dosyalarınızı sıkıştırın ve tek dosya halinde getirin. Örnek 30 adet js ve css dosyanız var. Bunları 15 js, 15 css düşünün. Sunucunuza ayrı ayrı 30 çağrı atılmasındansa tek dosya olacak şekilde ScriptFiles.js ve StyleFiles.css olarak iki çağrı atacaktır. Dosya boyutlarınız büyüyecektir fakat bu sorunuda StaticFile Caching ile çözebilirsiniz. Bu konu ile ilgili araştırma yapacağınız anahtar kelime grupları şöyle; Bundle And Minification ayrıca bu link içerisinde anlatılanları eksiksiz yapın derin çok faydalı oluyor. Ayrıca Javascript dosyalarınızı kesinlikle body'nin sonuna koyun head içerisinde olduğunda sayfa açılma beklemesini etkiyor.
  2. Server Gücü, İnternet Hızı ve Server Region Seçimi; Bu konuda da Amazon Web Server(AWS) kullandığımız için en ucuz server olan OREGON Serverlarını tercih ettim fakat Türkiye'deki bir sunucu 1 kb dosyayı 10-30ms civarında getirebilirken ABD(Oregon) sunucusu 230ms ve üzerinde cevap veriyordu. 
  3. Web Sitenizi klasik mantıktan kurtarın en azından Yönetim Paneli için söyleyebileceklerim şu yönde;
    Her sayfa açılışında en az 1-2 MB scriptiniz ve yönetim panelini kullanan kişiler size küfür ediyorlar :) Çok yavaş diye. Burada çözüm ilk açılışta Scriptler yüklendikten sonra sayfa geçişlerini Ajax ile Bir div içerisinde gerçekleştiriyor olmak. bu bize ne kadar diye düşünelim. 
    2 MB Script, 400kb Style, Sayfanın normal açılma hızı 500ms olsun. 1mbps internet hızı olan birisi server iyi durumdaysa bunu 3-5 saniyede indirebilecek ve düşünün kü bir rapor sayfası Sayfa açılma hızı 2-3 saniye üzerine çıkmaya başladıkça üzerinde birde 3-5 saniye binecek. Eğer dediğim şekilde bir yöntem tercih edersiniz. sayfa geçiş hızınız 500ms olacak. 5 saniye yerine... Konu ile ilgili AngularJS Routing veya SammyJS önerebilirim. Bence performans için ve maliyetleri düşürmek için önemli büyük bir bandwith bu sayede ortadan kalkıyor.
Bu konu ile ilgili aklıma gelenler şimdilik bu kadar sorularınız olursa müsait olduğum zamanlar yazarım onlarıda...

Devam Eden Projeler...

Bir projeye hevesle başlarsınız, harika planlar, harika tasarımlar yaptığınızı düşünürsünüz. Yazdığınız kod, kurduğunu model ve mimarinin harika olduğunu delinmez olduğunu düşünür sistemi yazarsınız. aradan 1 sene geçtiğinde şöyle geri dönüp bir baktığınızda genelde gelişme sürecinden kaynaklı yazdığınız kodun ne kadar gereksiz yanları olduğunu görürsünüz veya tasarımda ne kadar büyük hatalar yapmışsınız onları anlarsınız. 
Sonra bir refactoring sürecine girişmek istersiniz tüm kodlarınızı ve tasarımlarınızı elden geçirmek istersiniz. Ama İşler ilk başta yazdığınız gibi kolay değildir. Live bir sistem ve binlerce müşteriniz vardır. Her sayfayı kafanıza göre değiştiremez yenilikleri kafanıza göre kararlaştıramazsınız. Yenilerini yapıp yavaş yavaş bir geçiş yapmak zorunda kalırsınız.

bu yazıyı bir yere bağlayamadım. Fakat böyle bir sürecin içerisinde olduğumu biliyorum. Ben kendimce buna Devamlı Gelişim Modeli diyorum. Durmadan gelişiyoruz. Geliştiriyoruz. 

Bunun sonucu olarak, geçmişi beğenmiyor, geleceği hayal ediyoruz. Bunun aksi beni güçsüzleştiriyor ve yoruyor.

Projelerinizi başlayıp bitirmek isteyebilirsiniz. Fakat Yazılım dünyasındaki ürünler çikolata gibi değildir. Yaşayan Canlılar gibidir. Bu nedenle Projenize başlayın yapabildiğiniz en iyi planlamayı yapın. Harika bir mimari kurgulayın, Harika kod blokları yazın, Harika tasarımlar gerçekleştirin..

Sonra bir gün dönün ve yaptıklarınıza bakın, Egonuzu bir köşeye atın ve ne kadar kötü bir iş yapmışım diyebilin(dünya'nın en harika işi olduğunu düşünseler dahi etrafınızdakiler) Sonra oturun ve daha iyisini yapmak üzere işe koyulun...

Başka nasıl gelişilebilir ki ?