5 Ağustos 2019 Pazartesi

AZURE DEVOPS SONARQUBE GRADLEW BUILD ( android mobile build gradlew gradle )

This build definition with these settings overcome " Task 'sonarqube' not found in root Project " error for me.

Build Definiton



Build definition Variable settings 

( that solves UNABLE_TO_VERIFY_LEAF_SIGNATURE error)


Sonarqube Prepare analysis Configuration Task Settings




Gradle build task settings 1/2



Gradle build task settings 2/2

Tags
AZURE DEVOPS SONARQUBE
GRADLEW BUILD
android mobile build
gradlew
gradle

12 Ekim 2018 Cuma

Could not add application insights to project.

If you get the following error when you try to add Applicition Insights Service to your web Application, make sure that your app's web.config file has the encoding attribute in the xml node
<?xml version="1.0" encoding="utf-8"?>

ERROR
System.IO.InvalidDataException:
An error occurred while applying transformation to 'web.config' in project 'YnaWebApp' No element in the source document matches '/configuration/system.web'
---> Microsoft.Web.XmlTransform.XmlNodeException: No element in the source document matches '/configuration/system.web'
at Microsoft.Web.XmlTransform.XmlTransformationLogger.LogErrorFromException(Exception ex)
at Microsoft.Web.XmlTransform.XmlTransformation.Apply(XmlDocument xmlTarget)
at NuGet.ProjectManagement.XdtTransformer.<PerformXdtTransformAsync>d__2.MoveNext()

19 Nisan 2018 Perşembe

VSTS - BITNAMI SONARQUBE INTEGRATION WITH HTTPS ( SSL ) SUPPORT

0) Configure your Sonarqube VM to Support SSL.
You may create your own certificate for testing purposes.

1) VSTS build definition tasks overview


2) Upload Certificate
Secure File : The certificate file that should normally be installed on a client machine that consumes the https sonar service.

3) Install the certificate to the machine store
-enterprise -f -v -AddStore "Root" %DOWNLOADSECUREFILE_SECUREFILEPATH%


This definition resolves the issue below
2018-04-17T08:22:01.9086691Z 08:22:01.907  Failed to request and parse 'https://xxxx.westeurope.cloudapp.azure.com/api/server/version': The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
2018-04-17T08:22:01.9090730Z 08:22:01.908  A server certificate could not be validated. Possible cause: you are using a self-signed SSL certificate but the certificate has not been installed on the client machine. Please make sure that you can access https://xxxx.westeurope.cloudapp.azure.com/ without encountering certificate errors.
2018-04-17T08:22:01.9107214Z 08:22:01.91  Pre-processing failed. Exit code: 1


4) Install the certificate to the java store
-importcert -v -trustcacerts -alias xxxxxsonar -file %DOWNLOADSECUREFILE_SECUREFILEPATH% -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit -noprompt

This definition resolves the issue below
ERROR: SonarQube server [https://xxxx.westeurope.cloudapp.azure.com] can not be reached
ERROR: Error during SonarQube Scanner execution
ERROR: Unable to execute SonarQube
ERROR: Caused by: Fail to get bootstrap index from server
ERROR: Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
ERROR: Caused by: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
ERROR: Caused by: unable to find valid certification path to requested target

5) Configure Sonarqube endpoint



6) Configure Build Definition Sonarqube tasks
No additional settings



7) Configure Environment Variables
This definition resolves the issue below
2018-04-19T08:47:57.5278222Z ##[error][SQ] Could not fetch metrics
2018-04-19T08:47:57.5288112Z ##[error][SQ] API GET '/api/metrics/search' failed, error was: {"code":"DEPTH_ZERO_SELF_SIGNED_CERT"}
2018-04-19T08:47:58.8930802Z ##[error][SQ] API GET '/api/ce/task' failed, error was: {"code":"DEPTH_ZERO_SELF_SIGNED_CERT"}
2018-04-19T08:47:58.8937152Z ##[error][SQ] Could not fetch task for ID 'AWLdFrLHT4lYqxgABePI'
2018-04-19T08:47:58.9046267Z ##[section]Finishing: Publish Quality Gate Result
DEPTH_ZERO_SELF_SIGNED_CERT

And finally, enjoy your build green :)




29 Kasım 2017 Çarşamba

SCRUM WORKSHOP ÇALIŞMA NOTLARIM

Manifesto for Agile Software Development

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
 


Pozitif Kaygılarımız
Backlog'um değerli mi? (Maddelerim net ve önceliklendirilmiş, iş sahipleri için değer taşıyor)
Backlog'umu tüketebiliyor muyum? (maddelerim bitiyor mu?)
Ekip mutlu mu?

Scrum Framepwork Guide PDF


Product Owner (PO)

O ürünün değerinden sorumludur.
Müşteriye karşı sorumludur.
"Delivery Date" den sorumludur.
Developer %10 zamanını PO ya ayırır.
Bu sürede "backlog grooming" yani PBI ların içlerinin zenginleştirilmesi, son haline getirilmesi aktivitesi gerçekleştirilir.
Product Backlog unu yeni sprintler için hazır tutar.
Teknik borç azaltmaya yönelik altyapı - kaliteye yönelik maddeler iş değeri açısından PO ya iyi anlatılmalı ve bir PBI olarak sprint içine alınmalıdır.




SCRUM Master (SM)
SM = Agile Coach olarak da ifade edilebilir.
SCRUM konusunda ustadır. Yarım zamanlı bir iştir.
Ekip zamanla scrum'a alıştıkça ve ustalaştıkça SM ye ihtiyaç duymayacak bir konuma gelebilir.
Ekip üyelerinin mevcut işlerinde kesintiye uğramadan çalışmasını sağlamalıdır.
Takımın motivasyonunu devamlı yüksek tutmalıdır.
Takımın sprinti koşmasında, hedefe varmasını engelleyecek her türlü sorunun ortadan kaldırılmasından sorumludur.
Takımın refahını sağlar.




Süreçler üzerinde yeni şeyler deneyelim. En fazla 1 veya 2 sprint kaybederiz.
Waterfallà İnşaat ve Askeriye de geçerli olabilir. Vasıfsız isçiler eliyle yapılan işler içerir.
Scrumà Inovasyon ve sanat içeren yazılım sektörü için uygundur.
Proje ekibi: Eğitimli, sosyal beklentisi olan, başarılı olmaya odaklı, potansiyelinin engellenmemesi gereken bir topluluktur.

Değişiklikleri ne kadar çabuk kabul eder ve benimsersek o kadar çabuk değer üretiriz.

  PLANLAR TAŞA YAZILMAZ.
  PLANA TAPILMAZ.

Hata yapıldığında utanç duyulan bir sistem yaratmamak gerekir.

USER STORY
àDEFINITION OF READY
Madde yazıldı. Analizi, iş değeri belirlendi. Talebe başlamak için beklenen bir şey yok. Ekip arkadaşıma ve PO ya sorup devam edebileceğim derinlik yeterlidir.
à DEFINITON OF DONE
Build, Test, Reviev, Otomatik Testler, Sonar, Güvenlik à DONE

BU TANIMLAR MUTLAKA YAPILMALI. TÜM PAYDAŞLAR BU TANIMDA EL SIKIŞMALI VE BU TANIM GÜNCEL TUTULMALIDIR.

Theory of Constraints 3 Bottle Demo to Improve Flow
https://www.youtube.com/watch?v=PMiTVUDiNQ4


SCRUM SERENOMİLERİ

SABAH TOPLANTILARI: àFOCUS ON SPRINT GOAL
Toplantıdan önce ekip üyelerinin maddelerinin son halini TFS de güncellenmesi güzel bir pratiktir. Kalan iş BURNDOWN chart'ın güncel olmasını sağlar.
Hedefe koşarken önümüzdeki engeller nelerdir. Nasıl kaldırırız? Bunlar konuşulmalıdır.
Scrum Master (SM'ye) bu konuda en az 1 madde çıkması lazım.
Sen bu işle uğraşırsan sprint yetişmez. Buna bakalım.
Önemli olan sprintin yetişmesi önündeki engellerin kaldırılmasıdır. Sprint'e koşan faaliyetler konuşulur.
"Sprint için ne yaptım, ne yapacağım, kime bu yolda destek oldum" konuşulur.
Uzayan konu daha sonra ilgililerin kendi arasında halletmesi için kesilir. Sonra onlar devam edebilir.
Sabah toplantıları 15 dakikayı kesinlikle geçmemelidir.

Bir nedenden dolayı beklemeye geçen kişiler, kendi gündeminden veya düşük öncelikli bir işle değil, MEVCUT SPRINT PLANINA dahil bir iş ile uğraşmalıdır. Aksi halde sprint hedefi tutmaz.

SPRINT PLANLAMA TOPLANTISI
Hafta başına 2 saat planlama faaliyeti olmalıdır. Backlog'dan sıradan başlanarak o sprinte alınacak maddeler seçilir.

RETROSPECTIVE TOPLANTISI
PO bulunmaz.
SM ye bir KAIZEN çıkarmalıdır. Bu KAIZEN sonucu yapılacak değişiklik bir sonraki sprinte PBI olarak yansıtılabilir. SM bunu en tepeye koyabilir.
Daha sonra işe yaradı mı yaramadı mı değerlendirilir.
Devreye alımdan sonra değişikliklerin etkisi ne oldu? Hata üretiyor muyuz? Bir sonraki sprinte neleri daha iyi yapabiliriz.
Bu toplantıları stressiz bir ortamda belki yemek söyleyerek, iyileştirme amaçlı yapmak lazım. Ekip kendi içinde rahatça öz eleştiri yapabilmelidir.

SPRINT PERFORMANSI?
Velocity (ekibin planladığı sprintte çıkacak maddelerin iş değeri toplamı) değerinin artırılması performans hedefi olarak verilirse kalite düşebilir. Bununla birlikte ekip tahminleme çalışmasında otomatik olarak maddelere yüksek velocity değerleri verme eğilimine girebilir. Sonuçta çıkan iş aynı olacaktır ama velocity istatistiği bozulmuş olacak. Yani bu işe yaramaz. Önemli olan verimliği düşüren tüm engellerin kaldırılmasıdır.
Önceki sprintte tüm çalışmaya rağmen tamamlanamayan bir USER STORY varsa, ekip planladığı kadarını bir nedenden yapamadıysa, yeni sprintte yapabileceğimiz kadar alalım. Başarılı spirintten sonra bir sonrakinde yapabileceğimiz kadar tekrar planlarız. Yapamayacağımızı bile bile fazla madde planlamanın hiçbir anlamı yoktur. Önemli olan ortadan engelleri kaldırarak, daha verimli bir şekilde sprint amacına yönelik çalışmaktır.

Her takımın kendi hızı vardır. Takımlar arası VELOCITY REKABETİ / karşılaştırması yanlıştır. BUG lar veya diğer olumsuz durumlar işler için kişisel sorumlu aramak ve performans sistemine yansıtmaya çalışmak takım ruhuna zarar verecektir. Cadı avına çıkılmamalıdır.

BİR SPRINT NASIL "BAŞARISIZ" OLUR?
Given that each Sprint is an experiment and Scrum is an empirical process:
An unsuccessful Sprint is one where at the end we have not learned anything. We did not Inspect and Adapt the results for customizing the Product and Processes.
https://www.scrum.org/resources/blog/what-failed-sprint  


BUG CAP
Takımın backlog undaki / havuzundaki açık hata sayısı bir üst sınır koyuyoruz. 30 diyelim. BUG sayısı 30'a ulaştığında ekip kayıt kalemi bırakıp (sprintteki "feature" geliştirimini bırakıp) hata kayıtlarını azaltıyor. Bu isteyemeyen bir durum olduğu için ekip hata sayılarını bu sınırın altımda tutma eğilimine giriyor. Hata adetlerimiz her zaman mümkün olduğunda az olmalıdır.

TASK/CONTEXT SWITCHING
Kaçınmamız gereken bir durumdur. Bitirebileceğimiz kadar is alalım. Birden fazla isin yarım yarım ilerlemesindense teker teker yapılıp bitirilmesi daha hızlı sürüyor.

--> Bir günden fazla suren TASK olmamalıdır
--> TASK ları hep back log un tepesinden alalım. En değerli iş en önce yapılmalıdır.

GÜÇLÜ PIPELINE, AGILE PROJE
Kod silebilmek yazmaktan daha zordur. Kolayca kod silebilecek güçlü bir pipeline kurmak önemlidir.
Bundan kasıt şudur: unit testler, integration ve ui testlerin olmalı ki kod üzerinde değişiklik yapmaktan veya silmekten çekinmeyelim.


Root Cause Analysis From Juran
https://www.youtube.com/watch?v=IETtnK7gzlE

Fibonacci Sequence in Nature
https://www.youtube.com/watch?v=nt2OlMAJj6o

Scaled Agiled Framework  (Enterprise için uyarlanmış bir framework)
http://www.scaledagileframework.com/


Acil / Araya Giren Maddeler
Bunların etiketlenmesi, daha sonra ekip ve SM tarafından etki analizinin yapılması gerekir. Süreç neden araya giren talep üretiyor. Mutlaka bir yerdeki sıkıntıya işaret edecektir. Acil işler kesinti yaratır. Bunların da iyi yönetilmesi gerekir. Bu maddeler için nöbetçi atanabilir.

Acil Talepler için BUFFER
Sprint planında bu gibi maddeler için BUFFER zaman koymak yaygın bir yaklaşımdır. BUFFER dan kullanılmaz ise (mevcut sprintte her şey yolunda ise) yerine bir sonraki sprintten madde çekilebilir. Motivasyon yükselten bir şeydir.
Acil istekler veya BUG lar için nöbetçi de tanımlanabilir. Ekibin toplama TASK SWITCHING kaybını azaltmış oluruz.

EMAIL HUNTING
Kim ne demişti kendimize kanıt aramak yerine arayıp konuşalım sorunu halledelim. Analiz ve test uzmanları ekibin bir parçası olabilirler. İletişimin artması beklemeleri azaltacaktır.

BROOKS LAW
Geciken projeye adam almak işleri kötüleştirir.

CHANGE MANAGEMENT
https://www.prosci.com/adkar/adkar-model
Awareness of the business reasons for change. Awareness is the goal/outcome of early communications related to an organizational change
Desire to engage and participate in the change. Desire is the goal/outcome of sponsorship and resistance management
Knowledge about how to change. Knowledge is the goal/outcome of training and coaching
Ability to realize or implement the change at the required performance level. Ability is the goal/outcome of additional coaching, practice and time
Reinforcement to ensure change sticks. Reinforcement is the goal/outcome of adoption measurement, corrective action and recognition of successful change

Value Stream Mapping (VSM)
Süreç iyileştirme yöntemidir.
Ürünün kodlanmasından müşteriye çıkmasına kadar olan süreç sondan başa doğru şemaya aktarılır. Bir işin toplamda beklemeler ile kadar sürdüğü, aslında asıl işin ne kadar sürdüğü karşılaştırılır. Manuel yapılan işler ve beklemelerin tespitine yarar.

Her kırmızı (bekleme/manuel iş) için bir yorum yapmak gerekir.

Kitap
  • Implementing Lean Software Development: From Concept to Cash (Addison-Wesley Signature)

  • The Toyota Way: 14 Management Principles from the World's Greatest Manufacturer

MAKİGAMİ (Roll of Paper)
Bir Başka Süreç İyileştirme Yöntemidir.
http://www.makigami.info/


NOTLAR
Bir metodun ismine karar verdiğin anda işin (kodun) yarısını yazmış oluyorsun.
 https://devopsgames.com/

KAYNAKLAR

--> Scrum eğitimi
http://scrumtrainingseries.com/

--> Hızlıca okumak ve fikir sahibi olmak için.
https://34slpa7u66f159hfp1fhl9aur1-wpengine.netdna-ssl.com/wp-content/uploads/2014/06/The-Basics-of-Scrum.pdf

-->Bütün dokümantasyon
www.scrumguides.org/docs/scrumguide/v2017/2017-Scrum-Guide-US.pdf#zoom=100

-->Spotify
http://www.full-stackagile.com/2016/02/14/team-organisation-squads-chapters-tribes-and-guilds/
https://labs.spotify.com/2014/03/27/spotify-engineering-culture-part-1/  (part-2 de var)

23 Mart 2015 Pazartesi

Entityframework Include İşleminde Many Tablo Üzerinden Dolaşım

Selamlar,

 

EF Include kullanımı ile join sorgular üretip, nesneleri baştan yükleyebiliyoruz.

Genellikle sorulan kısım; 1-n bir nesneye include tanımladım, ancak hedef nesnede yer alan 1-1 entity için include nasıl tanımlayabilirim şeklinde oluyor.

 

Çözümlü örnek şu şekilde;

Modelimiz:

var query = ctx.Counties.Include(x => x.Cities.Select(c => c.State))

 

ilgili linkler:

http://stackoverflow.com/questions/4811557/ef-ctp5-strongly-typed-eager-loading-how-to-include-nested-navigational-prop/4812229#4812229

 

http://stackoverflow.com/questions/4750900/multi-level-includes-in-codefirst-entityframework/4751376#4751376

 

İyi çalışmalar

Serkan

 

21 Ekim 2014 Salı

Visual Studio 2013 Task host node exited prematurely.

Derleme yaparken aşağıdaki hata geliyor ise

 

ERROR C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2348,5): Task host node exited prematurely. Diagnostic information may be found in files in the temporary files directory named MSBuild_*.failure.txt.

ERROR C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2366,7): The "GenerateResource" task's outputs could not be retrieved from the "FilesWritten" parameter. Object does not match target type.

 

C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe  dosyasını   C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe  klasorune kopyalıyoruz.

 

 

http://stackoverflow.com/questions/23791689/visual-studio-2013-and-update-2-intermittent-build-errors

 

14 Ekim 2014 Salı

worker process'in process id'sini bulmak için

 
C:\Windows\System32\inetsrv> 

Dizininde
 
 > appcmd list wps
 
Komutunu çalıştırmalısınız.

1 Ekim 2014 Çarşamba

RadWindow ReloadOnShow

Aşağıdaki şekilde çağırdığımız sayfalarda (dialog windowlarda) Eğer ReloadOnShow=true olarak tanımlanmış ise, İlgili window içinden açılan (dialog) sayfası, PrepareControls() den 2 defa geçiyor (sayfa 2 kez yükleniyor). Bu da hem performans kaybına, (veri güncelleyen) bazı senaryolarda da hataya neden oluyor. (YNA şu ana kadar hep böyle çift dikiş çalışmış.)
 
CS
        private void DhDaHizmetEkleDialogGoster(long DhDaHizmetId)
        {
            PopUpBoyutlari popUpBoyutlari = new PopUpBoyutlari(800, 980, 100, 10);
            PopUpOzellikleri popUpOzellikleri = new PopUpOzellikleri(false, true, false, false, false, false);
            List<Parameter> parametreList = ParametreleriAta(DhDaSeferKumpanyaId, DhDaHizmetId);
            JScriptFactory.RadPopUpEkranAc(this, DisHesaplarPath.DhDaHizmetEkleDialogPath, DhDaHizmetEkleDialogRadWindow, parametreList);
        }
 
ASPX
<telerik:RadWindow ID="BildirimZamaniEkleWindow" runat="server" Width="500px" ReloadOnShow="true" AutoSize="false" Height="200px" Behaviors="Close" VisibleOnPageLoad="false" ShowContentDuringLoad="false" Modal="true">
        
 
2 Defa çalışan metod
    public partial class DhDaHizmetEkleDialog : YnaDialogBasePage
    {
       protected override void PrepareControls()
        {
            PreparePageTitle(ResourceHelper.GetString("HizmetSaglayici", "PageTitleHizmetEkle"));
 
 
Peki bu alan neden var derseniz, window’un içeriğinin cachlenmeden farklı kaynaklardan doldurulması için olduğu söylenmekte.  Biz iki sayfada değişikliklerimizi test ettik. Sorun gözükmüyor. İçerik her zaman güncel. Buna rağmen olur da AÇILAN PENCERELERDE ESKİ BİLGİLER GELİYOR..**acil** acil*** mesajları gelirse bir yerden, önce burayı kontrol edelim.
 
Detayli bilgi için buyrun...

30 Eylül 2014 Salı

ScalableList: Index outside the allowed range

“ScalableList: Index outside the allowed range” hatası alıyorsanız,
 
Rapordaki Column  Properties’i  “HIDDEN” yapılmış kolonları kaldırıp SİLİP tekrar deneyiniz.  Kolonlar expressiona bağlı olmaksızın HIDDEN tanımlandığı için rapor çıktısında bir değişiklik olmayacaktır.
 
(Remove “HIDDEN” Columns and try again.)
 
 
 
 
source="Microsoft.ReportViewer.WebForms"
  detail="Microsoft.Reporting.WebForms.ReportServerException: An internal error occurred on the report server. See the error log for more details. (rsInternalError)&#xD;&#xA;   at Microsoft.Reporting.WebForms.ServerReport.ServerUrlRequest(Boolean isAbortable, String url, Stream outputStream, String&amp; mimeType, String&amp; fileNameExtension)&#xD;&#xA;   at Microsoft.Reporting.WebForms.ServerReport.InternalRender(Boolean isAbortable, String format, String deviceInfo, NameValueCollection urlAccessParameters, Stream reportStream, String&amp; mimeType, String&amp; fileNameExtension)&#xD;&#xA;   at Microsoft.Reporting.WebForms.ServerReport.Render(String format, String deviceInfo, NameValueCollection urlAccessParameters, String&amp; mimeType, String&amp; fileNameExtension)&#xD;&#xA;   at Microsoft.Reporting.WebForms.ServerModeSession.RenderReport(String format, Boolean allowInternalRenderers, String deviceInfo, NameValueCollection additionalParams, Boolean cacheSecondaryStreamsForHtml, String&amp; mimeType, String&amp; fileExtension)&#xD;&#xA;   at Microsoft.Reporting.WebForms.ExportOperation.PerformOperation(NameValueCollection urlQuery, HttpResponse response)&#xD;&#xA;   at Microsoft.Reporting.WebForms.HttpHandler.ProcessRequest(HttpContext context)&#xD;&#xA;   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()&#xD;&#xA;   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously)"

Missing URL parameter: IterationId

Chrome ve firefoxtan gelen bir hata.
2 çözümü var.
1))Birincisi giden requestlerde URL’i güncelleyeip, ?IterationId=0  eklemek.
2)) Raporda buna sebebiyet veren bir LINE kontrolu olmalı. Onu bulup, silip devreye alıp tekrar deneyelim.
Bu işleme başlamadan önce CHROME’dan hatayı önce alalım li, çözdüğümüze emin olalım.

<error
  host="34ISTYNAWEBSRV1"
  type="Microsoft.Reporting.WebForms.HttpHandlerInputException"
  message="Missing URL parameter: IterationId"
  source="Microsoft.ReportViewer.WebForms"
  detail="Microsoft.Reporting.WebForms.HttpHandlerInputException: Missing URL parameter: IterationId&#xD;&#xA;   at Microsoft.Reporting.WebForms.HandlerOperation.GetAndEnsureParam(NameValueCollection urlQuery, String paramName)&#xD;&#xA;   at Microsoft.Reporting.WebForms.ReportImageOperation.PerformOperation(NameValueCollection urlQuery, HttpResponse response)&#xD;&#xA;   at Microsoft.Reporting.WebForms.HttpHandler.ProcessRequest(HttpContext context)&#xD;&#xA;   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()&#xD;&#xA;   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously)"