Add Linked Server Ekleme

Add Linked Server Ekleme
USE [master]
GO
/****** Object: LinkedServer [SERVERADTAKMAAD] Script Date: 5.11.2024 15:57:03 ******/
EXEC master.dbo.sp_addlinkedserver @server = N’SERVERADTAKMAAD’, @srvproduct=N’SQL Server’
/* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N’SERVERADTAKMAAD’,@useself=N’False’,@locallogin=NULL,@rmtuser=N’balparmak’,@rmtpassword=’########’
GO
EXEC master.dbo.sp_serveroption @server=N’SERVERADTAKMAAD’, @optname=N’collation compatible’, @optvalue=N’false’
GO
EXEC master.dbo.sp_serveroption @server=N’SERVERADTAKMAAD’, @optname=N’data access’, @optvalue=N’true’
GO
EXEC master.dbo.sp_serveroption @server=N’SERVERADTAKMAAD’, @optname=N’dist’, @optvalue=N’false’
GO
EXEC master.dbo.sp_serveroption @server=N’SERVERADTAKMAAD’, @optname=N’pub’, @optvalue=N’false’
GO
EXEC master.dbo.sp_serveroption @server=N’SERVERADTAKMAAD’, @optname=N’rpc’, @optvalue=N’true’
GO
EXEC master.dbo.sp_serveroption @server=N’SERVERADTAKMAAD’, @optname=N’rpc out’, @optvalue=N’true’
GO
EXEC master.dbo.sp_serveroption @server=N’SERVERADTAKMAAD’, @optname=N’sub’, @optvalue=N’false’
GO
EXEC master.dbo.sp_serveroption @server=N’SERVERADTAKMAAD’, @optname=N’connect timeout’, @optvalue=N’0′
GO
EXEC master.dbo.sp_serveroption @server=N’SERVERADTAKMAAD’, @optname=N’collation name’, @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N’SERVERADTAKMAAD’, @optname=N’lazy schema validation’, @optvalue=N’false’
GO
EXEC master.dbo.sp_serveroption @server=N’SERVERADTAKMAAD’, @optname=N’query timeout’, @optvalue=N’0′
GO
EXEC master.dbo.sp_serveroption @server=N’SERVERADTAKMAAD’, @optname=N’use remote collation’, @optvalue=N’true’
GO
EXEC master.dbo.sp_serveroption @server=N’SERVERADTAKMAAD’, @optname=N’remote proc transaction promotion’, @optvalue=N’true’
GO
Dijital Duyarsızlık Nedir ?

Dijital Duyarsızlık Nedir ?
Dijital Duyarsızlık Nedir ?
Dijital duyarsızlık, bireylerin dijital ortamda yaşanan olaylara, bilgilere veya insanlara karşı duyarsızlaşması durumunu ifade eder. Bu durum, özellikle sosyal medya ve diğer çevrimiçi platformlarda sıkça görülen bir kavramdır.
Dijital duyarsızlık, birkaç farklı şekilde ortaya çıkabilir:
- Empati Eksikliği: Dijital ortamdaki insanlara karşı duygusal bağ kurmada zorluk yaşamak. Dijital ortamda insanlar, yazılı ve görsel içerikler aracılığıyla etkileşime geçer. Ancak yüz yüze iletişimdeki duygusal ipuçları (ses tonu, beden dili gibi) eksik olduğunda, bireyler diğerlerinin duygularını anlamakta zorlanabilir. Bu durum, özellikle sosyal medya üzerinden yapılan paylaşımlarda, empati eksikliğine yol açabilir. İnsanlar, tanıdıkları ya da tanımadıkları kişilerin yaşadığı olaylara daha az duygusal tepki verme eğiliminde olabilirler.
- Bilgi Aşırı Yüklemesi: Sürekli olarak maruz kalınan bilgi akışı, bireylerin önemli konulara karşı ilgisini azaltabilir. Günümüzde, her an yeni bilgilere ve içeriklere ulaşmak mümkün. Ancak bu sürekli bilgi akışı, insanların dikkatini dağıtarak önemli olaylara karşı kayıtsızlaşmalarına neden olabilir. Sürekli kötü haber veya trajik olaylarla karşılaşmak, bu tür içeriklere karşı duyarsızlaşma yaratabilir. Bireyler, bir noktadan sonra bu bilgileri algılamamaya başlar.
- Duygusal Tükenmişlik: Sürekli kötü haber veya olumsuz içeriklere maruz kalma, bireylerin bu tür içeriklere karşı daha az hassas hale gelmesine yol açabilir. Dijital platformlarda sıkça karşılaşılan olumsuz içerikler, kullanıcıların duygusal olarak tükenmesine yol açabilir. Bu durum, bireylerin sosyal adalet, toplumsal olaylar veya krizler gibi konularda duyarsızlaşmasına neden olabilir. Duygusal tükenmişlik, insanların bu olaylara karşı daha soğuk ve ilgisiz bir tutum sergilemesine yol açabilir.
- Sosyal İzolasyon : Dijital etkileşimlerin artması, yüz yüze ilişkilerin azalmasına neden olabilir. İnsanlar, dijital ortamda etkileşim kurarken gerçek hayattaki sosyal bağları zayıflatarak, yalnızlık hissi yaşayabilirler. Bu izolasyon, dijital duyarsızlığı artırabilir; çünkü bireyler, gerçek hayattaki ilişkilerdeki duygusal derinlikten uzaklaşabilir.
- Etik ve Sorumluluk Algısı : Dijital duyarsızlık, bireylerin çevrimiçi davranışlarını da etkileyebilir. İnsanlar, anonimlik hissiyle birlikte başkalarına karşı daha sert ve düşüncesizce davranabilirler. Bu durum, çevrimiçi ortamda söylenen ya da paylaşılan şeylerin sonuçlarını göz ardı etme eğilimini artırabilir.
Bu durum, bireylerin gerçek hayattaki ilişkilerini ve toplumsal duyarlılıklarını da etkileyebilir. Bu durumu aşmak için, dijital medya kullanımı konusunda farkındalık geliştirmek, empati becerilerini güçlendirmek ve sağlıklı bir dijital denge kurmak önemlidir.
Dinamik XML Oluşturma (Ör

Dinamik XML Oluşturma (Ör
Dinamik XML Oluşturma (Örn Logo)
Dinamik bir dataset’i Logo’nun anlayabileceği bir xml formatına dönüştürmek gereken bir projeye giriştim.
Bir dispatch yani irsaliye oluşturmak için logo xml formatında çıktı oluşturmak gerekir, Eğer logo com objesi çalışıyor ise, yani tiger versiyonunda bir logo ya entegrasyon yapacaksanız veya logo tiger için bir xml oluşturacaksanız, logo com objesi referansları altındaki clsunity altında yeni bir irsaliye tipinde obje oluşturup daha sonra ilgili objeyi xml export yaptığınızda hedefinize ulaşmış oluyorsunuz.
Fakat eğer logo tiger versiyonu yoksa ve bu versiyon go versiyonu ise, işte o zaman ilgili sistemden aynı objeyi yaratamayacaksınız “Çok Zararlı Hata” diye garip ve açıklayıcı olmayan bir hata alacaksınız demektir.
Özellikle dispatch tipindeki xml aşağıdaki gibi bir xml olacak,

XML verisinin tamamına ulaşmak için logo go veya tiger’a bir irsaliye girişi yapıp sağ tıklayıp xml olarak export yap seçeneğini kullanabileceksiniz.
Biz şimdi bu makalede size com objesi çalıştırmadan dışarıya çıkartılan xml’i class’a dönüştürüp nasıl aynı class’tan aldığımızı anlatacağım.
Örnek bir belge girip xml olarak çıkardıktan sonra ilgili class’ın property’lerine ait bir class oluşturalım.
Imports System.Xml.Serialization
<XmlRoot(ElementName:="TRANSACTION")>
Public Class TRANSACTION
<XmlElement(ElementName:="INTERNAL_REFERENCE")>
Public Property INTERNALREFERENCE As Integer
<XmlElement(ElementName:="TYPE")>
Public Property TYPE As Integer
<XmlElement(ElementName:="MASTER_CODE")>
Public Property MASTERCODE As Integer
<XmlElement(ElementName:="QUANTITY")>
Public Property QUANTITY As Integer
<XmlElement(ElementName:="PRICE")>
Public Property PRICE As Integer
<XmlElement(ElementName:="TOTAL")>
Public Property TOTAL As Integer
<XmlElement(ElementName:="UNIT_CODE")>
Public Property UNITCODE As String = ""
<XmlElement(ElementName:="UNIT_CONV1")>
Public Property UNITCONV1 As Integer
<XmlElement(ElementName:="UNIT_CONV2")>
Public Property UNITCONV2 As Integer
<XmlElement(ElementName:="VAT_INCLUDED")>
Public Property VATINCLUDED As Integer
<XmlElement(ElementName:="VAT_RATE")>
Public Property VATRATE As Integer
<XmlElement(ElementName:="VAT_BASE")>
Public Property VATBASE As Integer
<XmlElement(ElementName:="TOTAL_NET")>
Public Property TOTALNET As Integer
<XmlElement(ElementName:="DATA_REFERENCE")>
Public Property DATAREFERENCE As Integer
<XmlElement(ElementName:="FA_INFO")>
Public Property FAINFO As String = ""
<XmlElement(ElementName:="SL_DETAILS")>
Public Property SLDETAILS As String = ""
<XmlElement(ElementName:="DETAILS")>
Public Property DETAILS As String = ""
<XmlElement(ElementName:="QCLIST")>
Public Property QCLIST As String = ""
<XmlElement(ElementName:="DIST_ORD_REFERENCE")>
Public Property DISTORDREFERENCE As Integer
<XmlElement(ElementName:="CAMPAIGN_INFOS")>
Public Property CAMPAIGNINFOS As String = ""
<XmlElement(ElementName:="MULTI_ADD_TAX")>
Public Property MULTIADDTAX As Integer
<XmlElement(ElementName:="ADDTAXLINELIST")>
Public Property ADDTAXLINELIST As String = ""
<XmlElement(ElementName:="EDT_CURR")>
Public Property EDTCURR As Integer
<XmlElement(ElementName:="ORGLOGOID")>
Public Property ORGLOGOID As String = ""
<XmlElement(ElementName:="GENIUSFLDSLIST")>
Public Property GENIUSFLDSLIST As String = ""
<XmlElement(ElementName:="DEFNFLDSLIST")>
Public Property DEFNFLDSLIST As String = ""
<XmlElement(ElementName:="MONTH")>
Public Property MONTH As Integer
<XmlElement(ElementName:="YEAR")>
Public Property YEAR As Integer
<XmlElement(ElementName:="FAREGDEFNFLDLIST")>
Public Property FAREGDEFNFLDLIST As String = ""
<XmlElement(ElementName:="PREACCLINES")>
Public Property PREACCLINES As String = ""
<XmlElement(ElementName:="GUID")>
Public Property GUID As String = ""
<XmlElement(ElementName:="FOREIGN_TRADE_TYPE")>
Public Property FOREIGNTRADETYPE As Integer
<XmlElement(ElementName:="DISTRIBUTION_TYPE_WHS")>
Public Property DISTRIBUTIONTYPEWHS As Integer
<XmlElement(ElementName:="DISTRIBUTION_TYPE_FNO")>
Public Property DISTRIBUTIONTYPEFNO As Integer
<XmlElement(ElementName:="DETAIL_LEVEL")>
Public Property DETAILLEVEL As Integer
<XmlElement(ElementName:="DISCEXP_CALC")>
Public Property DISCEXPCALC As Integer
End Class
<XmlRoot(ElementName:="TRANSACTIONS")>
Public Class TRANSACTIONS
<XmlElement(ElementName:="TRANSACTION")>
Public Property TRANSACTION As List(Of TRANSACTION)
End Class
<XmlRoot(ElementName:="DISPATCH")>
Public Class DISPATCH
<XmlElement(ElementName:="INTERNAL_REFERENCE")>
Public Property INTERNALREFERENCE As Integer
<XmlElement(ElementName:="TYPE")>
Public Property TYPE As Integer
<XmlElement(ElementName:="NUMBER")>
Public Property NUMBER As String = ""
<XmlElement(ElementName:="DATE")>
Public Property [DATE] As String = ""
<XmlElement(ElementName:="DOC_NUMBER")>
Public Property DOCNUMBER As String = ""
<XmlElement(ElementName:="ARP_CODE")>
Public Property ARPCODE As String = ""
<XmlElement(ElementName:="NOTES1")>
Public Property NOTES1 As String = ""
<XmlElement(ElementName:="CREATED_BY")>
Public Property CREATEDBY As Integer
<XmlElement(ElementName:="DATE_CREATED")>
Public Property DATECREATED As String = ""
<XmlElement(ElementName:="DATA_REFERENCE")>
Public Property DATAREFERENCE As Integer
<XmlElement(ElementName:="ORIG_NUMBER")>
Public Property ORIGNUMBER As String = ""
<XmlElement(ElementName:="TRANSACTIONS")>
Public Property TRANSACTIONS As TRANSACTIONS
<XmlElement(ElementName:="ORGLOGOID")>
Public Property ORGLOGOID As String = ""
<XmlElement(ElementName:="DEFNFLDSLIST")>
Public Property DEFNFLDSLIST As String = ""
<XmlElement(ElementName:="DEDUCTIONPART1")>
Public Property DEDUCTIONPART1 As Integer
<XmlElement(ElementName:="DEDUCTIONPART2")>
Public Property DEDUCTIONPART2 As Integer
<XmlElement(ElementName:="AFFECT_RISK")>
Public Property AFFECTRISK As Integer
<XmlElement(ElementName:="DISP_STATUS")>
Public Property DISPSTATUS As Integer
<XmlElement(ElementName:="GUID")>
Public Property GUID As String
<XmlElement(ElementName:="SHIP_DATE")>
Public Property SHIPDATE As String = ""
<XmlElement(ElementName:="DOC_DATE")>
Public Property DOCDATE As String = ""
<XmlElement(ElementName:="LABEL_LIST")>
Public Property LABELLIST As String = ""
<XmlElement(ElementName:="XRELATED_ARP")>
Public Property XRELATEDARP As String = ""
<XmlAttribute(AttributeName:="DBOP")>
Public Property DBOP As String = ""
<XmlText>
Public Property Text As String = ""
End Class
<XmlRoot(ElementName:="SALES_DISPATCH")>
Public Class SALESDISPATCH
<XmlElement(ElementName:="DISPATCH")>
Public Property DISPATCH As DISPATCH
End Class
Ve söz konusu xml’i otomatik oluşturacak bir extension tasarlayalım.
Module LogoExtension
<Extension()>
Function ToXml(Of T)(ByVal obj As T) As String
Dim serialiser As XmlSerializer = New XmlSerializer(GetType(T))
Using streamm = New MemoryStream()
serialiser.Serialize(streamm, obj)
Return Encoding.UTF8.GetString(streamm.ToArray())
End Using
End Function
<Extension()>
Function ToXml(Of T)(ByVal obj As T, ByVal removeNamespace As Boolean) As String
Dim ns = New XmlSerializerNamespaces({XmlQualifiedName.Empty})
Dim settings = New XmlWriterSettings With {
.Indent = True,
.OmitXmlDeclaration = True
}
If removeNamespace Then
Return ToXml(Of T)(obj, settings, ns)
End If
Return ToXml(Of T)(obj)
End Function
<Extension()>
Function ToXml(Of T)(ByVal obj As T, ByVal settings As XmlWriterSettings, ByVal ns As XmlSerializerNamespaces) As String
Using stream = New StringWriter()
Using writer = XmlWriter.Create(stream, settings)
Dim serializer = New XmlSerializer(GetType(T))
serializer.Serialize(writer, obj, ns)
Return stream.ToString()
End Using
End Using
End Function
End Module
Şimdi bu methodları çağırarak xml classımızı dolduralım.
Dim sd = GetDispatchData()
Dim xml = sd.ToXml(True)
Class set etme işini statik yaptım, ama siz kodlama yaparken dinamik olarak classınızı algoritmanıza göre set edebilirsiniz.
Public Shared Function GetDispatchData() As SALESDISPATCH
Dim sd As SALESDISPATCH = New SALESDISPATCH()
Dim dispatch As DISPATCH = New DISPATCH()
sd.DISPATCH = dispatch
dispatch.DBOP = "INS"
dispatch.INTERNALREFERENCE = 0
dispatch.TYPE = 7
dispatch.NUMBER = "~"
dispatch.DATE = DateTime.Now.ToString("dd.MM.yyyy")
dispatch.DOCNUMBER = "VOID-51"
dispatch.ARPCODE = "PESINSATIS"
dispatch.NOTES1 = "PESINSATIS"
dispatch.CREATEDBY = 1
dispatch.DATECREATED = DateTime.Now.ToString("dd.MM.yyyy")
dispatch.DATAREFERENCE = 1
dispatch.DEDUCTIONPART1 = 2
dispatch.DEDUCTIONPART2 = 3
dispatch.AFFECTRISK = 0
dispatch.DISPSTATUS = 1
dispatch.GUID = Guid.NewGuid().ToString()
dispatch.SHIPDATE = DateTime.Now.ToString("dd.MM.yyyy")
dispatch.DOCDATE = DateTime.Now.ToString("dd.MM.yyyy")
dispatch.TRANSACTIONS = New TRANSACTIONS() With {
.TRANSACTION = New List(Of TRANSACTION)()
}
Dim trans As TRANSACTION = New TRANSACTION()
trans.INTERNALREFERENCE = 0
trans.TYPE = 0
trans.MASTERCODE = 10001
trans.QUANTITY = 2
trans.PRICE = 100
trans.TOTAL = 100
trans.UNITCODE = "ADET"
trans.UNITCONV1 = 1
trans.UNITCONV2 = 1
trans.VATINCLUDED = 1
trans.VATRATE = 10
trans.VATBASE = 100
trans.TOTALNET = 100
trans.DATAREFERENCE = 0
trans.DISTORDREFERENCE = 0
trans.MULTIADDTAX = 0
trans.EDTCURR = 1
trans.MONTH = 5
trans.YEAR = 2024
trans.GUID = Guid.NewGuid().ToString()
trans.FOREIGNTRADETYPE = 0
trans.DISTRIBUTIONTYPEWHS = 0
trans.DISTRIBUTIONTYPEFNO = 0
dispatch.TRANSACTIONS.TRANSACTION.Add(trans)
trans = New TRANSACTION()
trans.INTERNALREFERENCE = 0
trans.TYPE = 2
trans.DETAILLEVEL = 1
trans.DISCEXPCALC = 1
trans.QUANTITY = 0
trans.TOTAL = 100
trans.UNITCONV1 = 0
trans.UNITCONV2 = 0
trans.DATAREFERENCE = 0
trans.DISTORDREFERENCE = 0
trans.MULTIADDTAX = 0
trans.GUID = Guid.NewGuid().ToString()
trans.FOREIGNTRADETYPE = 0
trans.DISTRIBUTIONTYPEWHS = 0
trans.DISTRIBUTIONTYPEFNO = 0
dispatch.TRANSACTIONS.TRANSACTION.Add(trans)
Return sd
End Function
Sonuç olarak class’ı aşağıdaki gibi set etmek için ilgili fonksiyon içine değişkenleri set ederek dilediğiniz xml’i oluşturabilirsiniz.
Şuan size logo xml dokümanı hazırladım, ama siz bu algoritmayı farklı bir xml formatına da dönüştürebilirsiniz.
Yazılım Dünyasında NDA Sözleşmesinin Önemi

Yazılım Dünyasında NDA Sözleşmesinin Önemi
Günümüzün rekabetçi iş dünyasında, şirketlerin en değerli varlıklarından biri olan fikri mülkiyet haklarının korunması büyük önem taşımaktadır. Bu bağlamda, gizlilik sözleşmeleri (NDA — Non-Disclosure Agreement) şirketlerin ticari sırlarını, patentli teknolojilerini, müşteri bilgilerini ve diğer hassas verilerini korumak için sıklıkla kullanılan bir hukuki araçtır.
Bu yazımda aslında NDA kavramına daha farklı bir bakış açısı katmayı hedefliyorum.
İş hayatında hukuki konular daha gözardı edilerek zaman zaman birlikte iş yaptığımız her paydaşımıza ticari sır niteliğindeki bilgileri bol keseden dağıtıyoruz.
Hatta bir çok işte artık anlaşma aşamasına geldiğimizde NDA sözleşmeleri hazırlıyor veya hazır olanlar üzerinden anlaşmalar sağlamaya çalışıyoruz.
Peki bu sözleşmelerin bağlayıcılığı ve hatta sözleşme imzalanana kadar ortada dolaşan ticari sırların korunmasını kim sağlayacak ?
Aslında teorikte biriyle iş konuşacaksan daha henüz başlangıçta nasılsın iyi misin den sonra NDA sözleşmesini imzalamak gerektiğini düşünüyorum.
Düşünüyorum ama uyguluyor muyum hayır ? Fakat uygulayacağım. Bunun için gerekli altyapıyı hazırlamaya başladım.
Özellikle yazılım projelerinde eğer nitelikli bir proje yapılıyorsa anlaşma aşaması müşteriyi ikna ettikten sonra başlıyor. Yani bir müşteriyi ikna etmek için o işi nasıl ve ne şekilde yaptığınızın detaylarını anlatıyor ve hatta şema, doküman, teknik analiz veya kavramsal analiz paylaşıyorsunuz. Müşteriyle NDA sözleşmesi yapmadan teknik şartnameleri hazırlayıp veriyorsunuz ve sonuç, müşteri sizden aldığı değerli know how’ı (fiyat kısmını kaldırıp) rakibinize yolluyor ve bu işi sen kaça yaparsın diyor.
Bu durumda rakibiniz sizin iş yapma şeklinizi veya yönteminizi görüp ona göre bir model çıkarabiliyor. Belki bu durumdan sizin haberiniz olmuyor ama olmayacağı anlamına gelmez.
Daha önce benim başıma geldi, Bir entegrasyon uzmanı olarak hangi sistem ile neyi ne şekilde entegre edebileceğimiz, hangi sistemin webhook’u vardır, hangisinin yoktur, hangisi ne kadar güvenlidir veya hangisinin hangi servisi yeterlidir değildir bunları bildiğimiz için fiyatlandırmayı ona göre çalışıyoruz. Ve bu durumu müşteriye izah ederek güvenini kazanmaya çalışırken aslında güvenmememiz gereken müşterimiz bizim bilgi birikimimizi ve tecrübemizi, mal veya hizmeti biraz daha ucuz’a almak için rakibimize yollayıveriyor.
Hep söylemişimdir, mal veya hizmet satın almak bir uzmanlık ister. Uzman olan herkes başkasının uzmanlığına saygı gösterir ve etik kuralların dışına çıkmaz.
Tanımlamak gerekirse; NDA, iki veya daha fazla taraf arasında yapılan, bir tarafın diğer tarafa açıkladığı gizli bilgilerin belirli bir süre veya amaç doğrultusunda üçüncü kişilere ifşa edilmeyeceği konusunda karşılıklı bir taahhüdün yer aldığı yazılı bir sözleşmedir. Bu sözleşmeler, işbirliği, ortaklık, satın alma, lisanslama ve benzeri birçok iş ilişkisinde kullanılmaktadır.
Genellikle müşterinin bilgisi değerli olduğu için biz yükleniciler müşterinin verisini koruyacağımıza ve 3. kişilerle paylaşmayacağımıza dair imzalar atarız, peki bizim o işi yapmak için uyguladığımız yöntem ve bilgi birikimi ne olacak ? Müşteri bu yöntemi işi daha ucuza satın almak için farklı bir yöntem izlemeye başladığında ne yapacağız ?
İşte bu yüzden iş birlikteliği bir nevi ortaklıktır ve ortaklar birbirlerine ihanet etmemelidirler. Bu da ticaret hukuku tarafından korunması gereken ve cezası ağır olması gereken konular arasındadır.
Değerli bir iş yapan herkes kendini korumak için yazal mevzuatı iyi bilmeli ve mutlaka iyi bir avukat ile söz konusu sözleşmeleri hazırlamalıdır.
Piyasada bir çok soruna çözüm bulan yazılım çözümü geliştirilmiştir, Müşteriye göre söz konusu probleme çözüm sunan yazılım sadece bir araçtır. Ama o yazılımın üreticisine göre o çözüm bir amaçtır. Bir proje fikri öyle bir günde ortaya çıkmadığı gibi, o probleme çözüm getiren bir yazılım ürünün geliştmesi, yaygınlaştırılması, ekosistem yaratması ve sürdürülebilirliğini sağlamak için çok ciddi emek ve zaman gerekmektedir.
Bu kadar uğraşarak yaratılan ürünün korunması ve sahipliği ile ilgili konular için devlet bir çok yasa ve prosedür ortaya koymuştur o kesin, fakat toplumun bu konuda bilinçlenmesi, bir başkasının fikir veya çözümüne saygı duyup eser sahipliğine değer vermek insani ve etik kavramlardır.
Okullarda ders olarak okutulan etik kavramlar toplumun kolay yoldan köşeyi dönme algısına pek bir etki etmiyor olsa gerek, herkes var olan bir fikrin kopyasını yaparak birşeyler elde etmeye çalışmakta.
Genellemeyi sevmem ama maalesef bu durum böyle.
Nitekim işini severek yapan ve ciddiye alan her kurum veya kişi, eğer iş konuşulacaksa öncelikli olarak NDA sözleşmesini masaya koymalı ve bu masada konuşulan bu masada kalmalı kuralını uygulamalıdır. (Artık herşey online olduğu için bu online toplantı odasında konuşulan diye de dönüştürülebilir)
Sonuç olarak;
NDA sözleşmeleri, şirketlerin en değerli varlıklarından biri olan fikri mülkiyet haklarını korumak için vazgeçilmez bir araçtır. Bu sözleşmeler, şirketlerin rekabet avantajını korumalarına, işbirliklerini güvenilir hale getirmelerine ve yatırımcı güvenini artırmalarına yardımcı olur. Ancak, bir NDA sözleşmesinin etkili olabilmesi için, sözleşmenin hukuki olarak doğru bir şekilde hazırlanması ve tüm taraflarca dikkatlice okunması gerekmektedir.
Sosyal Medyaların Güvenliği

Sosyal Medyaların Güvenliği
Sosyal medya veya yeni nesil mesajlaşma uygulamalarını ele aldığımızda etkileşimin baş aktör olduğunu görebiliriz, yani özellikle eski medyaya göre reyting kavramı ne kadar önemliyse, yeni sistemde etkileşim yaratmak için çarpıcı ve ilgi çekici içerikler üretiyor olmak hayati öneme sahip. Örneğin bugün x platformunda tt olan bir içeriğe göre gündemi belirleyebiliyor olmak, söz konusu platformlarda etkili etkileşim yaratmak doğal olarak yönlendirici olmayı sağlıyor.
Aslında bu yeni sosyal medya kavramı biraz multi disipliner bir kavram, yani medya, iletişim, dijitalleşme, güvenlik gibi kavramları da içinde barındırıyor. Eskiden televizyon karşısında tek kanallı bir iletişim ile evimizde güvenli bir biçimde oturup sadece bize verilen haberi izlerken, şuan ortaya atılan habere yorum yapma hatta kendimiz haber yaratıp sosyal medya havuzuna atma şansına sahibiz. Tabi bu durumda iletişimci olmayan (yani mesleği gazetecilik olmayan) kişilerin haber yaratabildiği ve toplumu etkileyip yönlendirebilecek potansiyeldeki içerikleri yayınlama hakkına sahip olduğu bir ortamda etik değerlerin gözetilmesi için sürekli iyileştirmeler yapılmakta. Bu Telegram konusunda alınan karar geç kalınmış ama bir şekilde doğru alınmış bir karar.
2000 li yılların başında Facebook hayatımıza girdiğinde basit bir arkadaşlık uygulaması sanmıştık, fakat sonradan geldiği noktada kişilerin ilgi alanlarına göre içeriklerin yönlendirilmesi aslında iyi bir kavram gibi gözükse de farklı siyasi aktörlere hizmet eder bir biçimde kullanıldığı ortaya çıkmıştı.
Telegram konusunu ele alalım.
Telegramın özgürlükçü söylem ile Rusyada 2018 yılında yasaklanmasının amacı da bence hiç iyi niyetli değil. Yani biz Rusya ile anlaşamıyoruz, biz çok özgürlükçüyüz, rusya bize kişisel verileri veya mesajlaşma bilgilerini ver dedi diye Rusyadan çıkıp dünyanın diğer ülkelerinde (dubai’de) sunucularımızı barındıracağız diyorlar. Yani aslında Uygulamanın globalleşmesi bu dönem başlıyor.
Yani kullanıcılar Rusya’ya bilgilerimizi paylaşmıyor uygulama ne kadar da özgürlükçü diye bu platformu tercih ettiler.
Ama aslında o sıralar yapılan açıklamalarda terör eylemleri dışındaki diğer bilgileri paylaşmıyoruz du.
Özellikle teröristlerin Telegram veya diğer mesajlaşma uygulamalarını kullandığını pek sanmıyorum, terör propagandası yapan Telegram gruplarının olduğunu zaten biliyoruz, fakat bu gruplardaki kişileri tespit etmek ve bu gruplara sızıp radikal düşünen grupları takip etmek için illaki telegram’ın veya diğer platformların bilgi paylaşmasını beklemeye gerek yok.
İstihbarat ekipleri zaten çeşitli yöntemlerle söz konusu gruplara sızmış veya gruplardaki kişileri angaje etmiştir diye düşünüyorum.
Özellikle bu uçtan uca şifreleme mekanizmasına gelirsek, özellikle bu şifrelemenin güvenli olabilmesi için cihazın, veya internetin güvenli olması gerekmekte ki buradaki güvenliği sağlamak uygulama ile mümkün değil.
Yani kısacası telefonun içine bir siber espiyonaj(örneğin pegasus) yazılımı yerleştirildiyse, yada telefonun bağlı olduğu internet ağına bir aradaki adam saldırısı gerçekleştirildiyse uçtan uca şifreleme mantığının bir manası kalmıyor, daha henüz gönderilen veri şifrelenmeden ve Telegram sunucularına gönderilmeden önce yakalanabiliyor, hatta ele geçirilen veri söz konusu casus yazılımlarla manipüle edilebiliyor.
Yani aslında bir aktivist hacker grubuysanız, veya bir terör örgütü statüsüne kavuştuysanız kendi siber espiyonaj veya siber güvenlik ekibiniz zaten vardır. Dolayısıyla bir siber güvenlik ekibinin kendine ait güvenli sunucuları, ve kendi geliştirdiği kapalı kutu mesajlaşma uygulamaları vardır. Bugünün istihbarat örgütleri, casus faaliyet yürüten örgütler veya özel istihbarat şirketleri kendi iletişim yöntemlerini sürekli olarak geliştirmeye devam etmektedirler.
Söz konusu kitle iletişim aracı haline gelmiş olan uygulamalar zaten sürekli güvenlik açıkları açıklamaktalar. Telegram için en yakın tarihte Örneğin 29.04.2024 (Usom — Ulusal Siber Olaylara Müdahale Merkezinde)(https://www.usom.gov.tr/bildirim/tr-24-0372) zafiyet bildirimi yayınlandı, bu da gösteriyor ki, sürekli olarak delinmeye çalışan bir sistemin kişisel verileri hükümetler şuan paylaşıyor olması olmayan veri gizliliğinin en azından resmi kurumlar ile paylaşılması demek.
Peki bu merkezi yapının güvenli olmaması demek aslında ne demek; uçtan uca şifreli giden verinin merkezde çeşitli programlanmış AI ler ile ters mühendislik formülü ile çözülmesi ve analiz edilmesi demek. Özellikle illegal toplulukları barındıran bu platformlar merkezi bir yapıda tüm veri akışını zaten kontrol etmek zorunda demek.
Sonuç olarak, merkezi olmayan ve uçtan uca açık uçlu anahtarlama yöntemi ile şifrelenmiş bir veri yapısı sayesinde güvenli haberleşme mümkün ama bu sefer bu güvenli haberleşme methodunun doğru ve insani amaçlara uygun bir biçimde kullanılıp kullanılmadığını bilmiyor olmak güvenliğimizi yine riske sokacaktır.
Örneğin bir terör eyleminin talimatı güvenli bir biçimde hedefe ulaştırılacak diye daha güvensiz bir ortam yaratmış olmamak adına, bu tarz merkezi yapıların devletlerin kontrolünde olması bence son derece güvenli olacaktır.
Logo E-Fatura ve E-Arşiv Durum Kodları

Logo E-Fatura ve E-Arşiv Durum Kodları
Merhaba;
Kolayınızda bulunsun, sık kullanılanlarınıza eklersiniz diye kendi dokümanımı sizlerle paylaşıyorum.
E-Arşiv statü değiştirme
SELECT * FROM LG_006_01_INVOICE WHERE FICHENO = ‘ARV2024000000042’
SELECT EARCHIVESTATUS,* FROM LG_006_01_EARCHIVEDET WHERE INVOICEREF= ‘36603’
UPDATE LG_006_01_EARCHIVEDET SET EARCHIVESTATUS= ‘13’ WHERE INVOICEREF= ‘36603’
0 e-arşiv oluşturulacak
1 e-arşiv oluşturuldu.
2 rapor dosyasına yazıldı
3 sunucuya iletildi.
4 gib’e iletildi
5 sunucuda hata alındı
6: imzalandı
13:iptal
Veri tabanı sorgulaması ve statü kodları aşağıdaki şekildedir.
UPDATE LG_001_01_INVOICE SET ESTATUS=1 WHERE FICHENO=’00000001′
E-FATURA STATÜLER
0-GİB’e Gönderilecek
1-Onay Gönderildi
2-Onaylandı
3-Paketlendi
4-GİB’e Gönderildi
5-GİB’e Gönderilemedi
6- GİB’de İşlendi — Alıcıyaİletilecek
7- GİB’de işlenemedi
8-Alıcıya Gönderildi
9- Alıcıya Gönderilemedi
10-Alıcıda İşlendi — BaşarıyaTamamlandı
11-Alıcıda İşlenemedi
12-Kabul Edildi
13-Reddedildi
14-İade Edildi
15-Sunucuya İletildi — İşlenmeyiBekliyor
16-Sunucuda Mühürlendi
17-Sunucuda Zarflandı
18-Sunucuda Hata Alındı
19-Alındı
20-Kabul Edildi — Yanıt Oluştulmadı
21-Reddedildi — yanıtOluşturulamadı
22-Sunucuya Gönderildi
Growth hacking nedir

Growth hacking nedir
Günümüzün rekabetçi iş dünyasında, şirketlerin hayatta kalabilmesi ve büyümesi için sürekli olarak yeni stratejiler geliştirmesi gerekmektedir. Geleneksel pazarlama yöntemlerinin yanı sıra, son yıllarda özellikle startup’lar arasında popüler hale gelen “büyüme hack’leri”, sınırlı kaynaklarla maksimum büyümeyi sağlamak için kullanılan yaratıcı ve veri odaklı yöntemlerdir.
Ülkemizde bu kavramı en çok kullanan örneklerden biri Martı Tag yaratıcısı Oğuz Alper Öktem’dir. Özellikle sosyal medya platformlarını bu bağlamda çok fazla kullanmaktadır ve bir şekilde herkesin hemen hemen her hafta en az bir kere karşısına çıkmaktadır. Bu operasyonel süreci iyi yönetmek için ciddi bir çalışma ve projelendirme gereklidir. Özellikle hedeflediği konuyu kitlelere iyi ve akıcı bir biçimde aktarmayı başardığını görmekteyiz. Genellikle toplumsal sorunlara çözüm bulan dijitalleşme uygulamaları bu tarz yöntemleri genellikle uygulamış ve büyük oranda başarılı olmuşlardır.
Büyüme Hack’i Nedir?
Büyüme hack’i, bir şirketin hızlı büyümesine odaklanan bir pazarlama alt alanıdır. Hem bir süreç hem de bir dizi disiplinler arası beceri olarak tanımlanabilir. Growth hacker’lar, pazarlama, ürün geliştirme, analiz ve hatta mühendislik gibi farklı alanlardaki bilgi ve becerilerini kullanarak, ürünlerini veya hizmetlerini daha fazla kişiye ulaştırmak ve kullanıcı sayısını artırmak için deneyler yaparlar. Bu deneyler, genellikle A/B testleri, viral pazarlama, içerik pazarlaması ve sosyal medya pazarlaması gibi yöntemlerle gerçekleştirilir.
Büyüme Hack’lerinin Temel İlkeleri
- Veri Odaklılık: Büyüme hack’lerinin en önemli özelliklerinden biri, veriye dayalı kararlar alınmasıdır. Growth hacker’lar, kullanıcı davranışlarını analiz ederek, hangi yöntemlerin daha etkili olduğunu belirler ve stratejilerini bu doğrultuda şekillendirirler.
- Yaratıcılık: Büyüme hack’leri, standart pazarlama yöntemlerinin dışına çıkarak, yeni ve farklı çözümler bulmayı gerektirir. Growth hacker’lar, mevcut kaynakları en etkin şekilde kullanarak, dikkat çekici ve akılda kalıcı kampanyalar oluştururlar.
- Hız: Büyüme hack’leri, hızlı sonuçlar almak için tasarlanmıştır. Growth hacker’lar, hızlı bir şekilde deneyler yapar, sonuçları analiz eder ve başarılı olan yöntemleri ölçeklendirirler.
- Ölçülebilirlik: Büyüme hack’lerinin başarısı, somut metriklerle ölçülür. Bu metrikler, kullanıcı sayısı, dönüşüm oranı, müşteri yaşam boyu değeri gibi farklı faktörleri içerebilir.
Dünyadaki Büyüme Hack’i Örnekleri
- Hotmail’in Viral Büyüme Hack’i: Hotmail, e-posta adresinin sonunda “invite a friend” (bir arkadaşını davet et) yazısıyla ücretsiz e-posta hizmetini tanıtarak, kullanıcı tabanını hızla genişletmiştir.
- Dropbox’ın Referans Programı: Dropbox, kullanıcıların arkadaşlarını davet etmesi durumunda, hem davet eden hem de davet edilen kullanıcıya ek depolama alanı vererek, kullanıcı sayısını katlayarak artırmıştır.
- Uber’in İndirim Kuponları: Uber, yeni kullanıcıları çekmek için indirim kuponları ve promosyon kodları kullanarak, hızlı bir şekilde pazar payı kazanmıştır.
Bu konu; genellikle teknoloji sistemleri için kullanılan bir method gibi gözükse de kendi içinde birden fazla kavramı barındırdığından aslında konu daha derindir.
Acquisiton, Activation, Retention, Revenue ve Referral sırasıyla (Edinme, Etkinleştirme, Elde tutma, Gelir ve Yönlendirme)
Aslında tanımlamaya çalıştığım şeyi tanımlarken bile bir growth hacking yapmaya çalışıyorum. Yani blog yazısı yayınlamak bir growth hacking yöntemi sayılmaktadır.
Örneğin kendi sosyal medya hesabından blog sayfasına yönlendirme yapan bir yemek tarifi yayıncısı tariflerini kendi bloğunda yazarken amacı kullanıcıyı mütemadiyen elde tutmaktır. Kullanıcıların ilgisini çekip sürekli kendini takip eder hale dönüştürmeyi amaçlar.
Zamanında bu blog yazarlığı çok meşhurdu, çünkü kullanıcılar bu çok tutan ve okunan blogları takip etmeyi ve sürekli olarak güncellenen bloglarla etkileşime girmeyi çok severdi, sanıyorum görsel sosyal medya kavramı yaygınlaştıkça insanların uzun uzun makaleler okuma yetisi azalmaya başladı. Bu yüzden içerik üreticiler daha çok görsel sosyal medya kanallarına yöneldiler. Yazacaklarını ekran başında anlatarak kitleleri etkinleştirmeye çalışıyorlar.
Bir başka yöntem ise SEO kavramının derinleşmesiyle ortaya çıktı. Arama motoru algoritmalarının sürekli geliştmesi ile web sitelerinin motorlar tarafından daha iyi anlaşılması adına SEO kavramı hayati önem taşımaktadır. Henüz satılan ürünün veya hizmetin kalitesini tam ölçemeyen arama motorları, o ürünü veya hizmeti tanıtan web sitesini anlayabilmek için yetenekli SEO culara ihtiyaç duyulmaktadır. Başlı başına farklı bir uzmanlık olan bu seo kavramı sayesinde pazarlanan ürün veya hizmetin tanınırlığı ve yaygınlaştırmalar çok etkili olmaktadır.
Konuk yazarlık kavramı da aslında bireysel etkinliği artırmak için çok etkilidir. Özellikle sosyal medya üzerindeki takipçi sayısının etkili olması da buna bağlıdır. Eskiden Ekşisözlük de yazar olmak bir statü göstergesiyken, şuan instagramda takipçi sayısının çok olması ciddi bir ektileşim yöntemine dönüşmektedir. Bugün bir çok yemek gurmesinin başarısı takipçi sayısıyla ölçülmektedir. Yada birini takibe almadan önce o kişinin takipçi sayısına bakıyor olmak bile söz konusu sistemin çerçevesini belli etmektedir.
Dilden dile dolaşan yemek sepeti, getir veya trendyol indirimleri kavramları da büyüme hacking kavramına örnektir. Sosyal medya fenomenlerinin bir ürün veya hizmet pazarlamasında bir araç olarak kullanan sistem sayesinde büyüme hacking kavramı daha da güçlenecektir.
Örneğin, sen hangi “Kurtlar Vadisi karakterisin” analizine sokan Onedio sistemi seni o anketin içine sevdiğin bir mekanizmayı kullanarak sokmaktadır. Bu sayede girdiğin test’in sonucunu arkadaşlarınla paylaşacağın bir altyapı sayesinde dilden dile, linkten linke dolaşan bağlantıyı da başlatmış oluyorsun.
OnePage web sayfaları ile zayıflama hapı satan ticari sistemler de söz konusu yapıda bir paydaş olabilmektedir. Örneğin, bir zayıflama hapının veya çayının ünlülerin elinde işte tam olarak bu yüzden tutuşturmalar. Falanca ünlü kullanıyormuş ve fayda görmüş, yalan söyleyecek hali yok ya deyip o zayıflama çayından satın alıp büyüme hacking kavramının içine düşmektedir. Aslında o ünlünün o çayı içiyormuş gibi gözükmesi için ne kadar para kazandığını bilmiyoruz.
5 Arkadaşını sisteme üye et bizden toplamda %10 indirim kazan gibi sistemler de aynı amaca hizmet etmektedir. Burada amaç eğer indirim kazanmak ise 5 arkadaşını getiren indirimi kazanacak ama siz de yeni 5 müşteriyi kazanmış olacaksınız. Tabi o 5 müşteri gerçek bir müşteriyse ve söz konusu 5 müşteriyi gerçekten kazandınız mı sorusu da çok önemli.
Eskiden dilden dile dolaşan reklamlar vardı, falanca şirket ne kadar güzel reklam yapmış diye konuşurduk, şimdi artık paylaşma kavramı var. Bu sayede kullanıcılara bir reklamı veya bildiriyi paylaştırmak çok zor.
Viral reklamlar hazırlıyor olmak yine aynı amaca hizmet eder. Örneğin sosyal medyada gezerken oyun reklamlarınında çok basit hatalar yapılıyor olması, Siz o reklamı izlediğinizde nasıl geçemedi o bölümü deyip tıklayıp oyunu indirmeniz hedeflenmekte. Genellikle bet (kumar) reklamları da bu şekilde yapılmaktadır.
Teknik olarak en zor kısım aslında istatistik verileri toplayıp onu analiz etmektir. Örneğin bir sipariş formuna bilgilerinizi girdiniz ve son anda sipariş vermekten vazgeçtiniz, fakat ilgili firmanın sizin girip sonradan sildiğiniz verileri çoktan almış olabilir. Ve hangi sayfada ne kadar gezinip gezinmediğiniz bilgisinin de istatistiği tutuluyor olabilir.
Örneğin Instagramın sizin ilgi alanlarınıza göre reklam ve içerik gösteriyor olması bu konuya tam bir örnektir.
Farkındaysanız özellikle halkla ilişkiler kavramlarından daha çok bahsettiğim bu makalede özellikle disiplinlerarası kavramı tam olarak ortaya çıkmaktadır. Yani yazılım ve halkla ilişkiler (pazarlama) kavramları doğru birleştirildiğinde yenilikçi kavramların ortaya çıkıp hayatımızı etkilemesi kaçınılmaz olmaktadır.
Kurumsal Mail Çilesi

Kurumsal Mail Çilesi
Önceden yandex üzerinden kullandığım kurumsal eposta bilgilendirmesi maili için kurumsal eposta satan mail servisleri ile görüşüp içinden beğendiğim bir tanesini satın aldım.
Bu süreçte yaşadıklarımı ve tecrübelerimi sizlerle paylaşıp bu yazıyı okuyanlara zaman kazandırmayı amaçlıyorum.
Bilen bilir, bir hosting hesabınız varsa pop3 mail üzerinden kurumsal eposta yollayabilirsiniz. Fakat pop3 mailler ücretsiz mail sunucular ile yapılandırıldığı ve ip blokları belli zamanlarda kara listeye girmesi durumu olduğunda mail hesaplarınız sizin kontrolünüzde olmayacak şekilde kara listeye düşebiliyor.
Bu durumdan sonra para veya itibar kaybına uğradığınızda anlıyorsunuz ki, ucuz hatta bedava etin tadı çok yavan oluyor. Bu sebepten biraz para harcayayım ve en azından profesyonel bir mail hizmeti alayım düşüncesine kapılıyorsunuz ve başlıyorsunuz araştırmaya.
Bunun için microsoft yada gmail servisleri bu işin piri fakat çok ama çok pahalı.
Eğer ticari kullanım için değil de bir bilgilendirme servisi amacıyla bu mail servisini kullanacaksanız, ara ara mail adresi açmanız gerekecekse gmail’e veya microsoft a kullanıcı başına para ödeme derdine giremezsiniz.(Eğer para probleminiz yoksa ayrı tabi)
Öncesinde yandex (bedava) kullanan biri olarak söylemeliyim ki, beni bu yandex’in kurumsal hesabı (ben bedava olan sürece yetiştiğim için söylüyorum) (Artık paralı ) beni çok uzun süre idare etti.
Fakat belli bir süre sonra yandex sunucularının yurt dışında olması, ara ara yandex sunucularına ambargolar uygulanması, mailler ile ilgili sağlıklı bir muhatap bulamamamdan kaynaklı bu işe giriştim diyebilirim.
Süreci baştan anlatayım.
- aşamada kurumsal eposta satan bir firma ile satın alma gerçekleştirdim. Hosting ‘im de orada olduğu için çok hızlı bir biçimde kurulumu yaptılar. Mail gönderme ve almada bir sorunum yok fakat ben bu maili kendim mail atayım diye değil, yazdığım yazılım mail atsın diye satın aldım.
Satın aldığım hesap üzerinden mail atarken 587 portundan SSL=True ile yolladığım maile istinaden sunucu güvenli bağlantı kabul etmiyor hatası aldım ve bunu ticket açarak firmaya ilettim.
Yaklaşık 1 günlük yazışmadan sonra firmadan aşağıdaki cevabı aldım ve resmen aydınlandım.
“Sorunun kaynağı olarak System.Net.Mail kütüphanesinin SSL/TLS bağlantı yönetimi görünüyor. System.Net.Mail eski ve bazen modern SSL/TLS gereksinimlerini karşılamada yetersiz kalıyor görünüyor. Smarter mail sisteminin bizlere sunduğu SSL/TLS bağlantı seçeneklerindeki sürümler ile System.Net.Mail kütüphanesinin kullandığı sürümler uyumlu görünmemekte. Bu sebeple Mailkit kullanarak deneme sağladığımızda mailler sorunsuz olarak SSL portu üzerinden iletildi. https://vshot.com.tr/s/smt/2024/07/30/s265nm7i.png - System.Net.Mail: Bu kütüphane, daha eski SSL/TLS protokollerini kullanıyor. Modern SMTP sunucuları, daha güvenli ve güncel protokolleri zorunlu kılıyor ve eski protokollerle bağlantıları reddediyor.
MailKit: Daha güncel bir kütüphane olarak, daha yeni ve güvenli SSL/TLS protokollerini destekliyor. Bu, sunucuların taleplerine daha iyi yanıt verebiliyor. - System.Net.Mail üzerinde SSL false durumdayken sorunsuz iletim sağlarken, SSL true iken bu kütüphane sunucudaki SSL/TLS versiyonlarını karşılayamadığı için hata alıyor.
- Bu durumda yukarı ilettiğim kod satırları ile Mailkit kütüphanesi kullanarak işlem sağlayabilir ya da System.Net.Mail ile SSL false durumunda kullanım sağlayabilirsiniz. Maalesef ki smartermail sistemi eski sürümleri aktif edebilme imkanı sunmamakta. Buna ek olarak edilmesi de güvenlik zaafiyeti yaratacaktır.
“Sorunun kaynağı olarak System.Net.Mail kütüphanesinin SSL/TLS bağlantı yönetimi görünüyor. System.Net.Mail eski ve bazen modern SSL/TLS gereksinimlerini karşılamada yetersiz kalıyor görünüyor. Smarter mail sisteminin bizlere sunduğu SSL/TLS bağlantı seçeneklerindeki sürümler ile System.Net.Mail kütüphanesinin kullandığı sürümler uyumlu görünmemekte. Bu sebeple Mailkit kullanarak deneme sağladığımızda mailler sorunsuz olarak SSL portu üzerinden iletildi.
System.Net.Mail: Bu kütüphane, daha eski SSL/TLS protokollerini kullanıyor. Modern SMTP sunucuları, daha güvenli ve güncel protokolleri zorunlu kılıyor ve eski protokollerle bağlantıları reddediyor.
MailKit: Daha güncel bir kütüphane olarak, daha yeni ve güvenli SSL/TLS protokollerini destekliyor. Bu, sunucuların taleplerine daha iyi yanıt verebiliyor.
System.Net.Mail üzerinde SSL false durumdayken sorunsuz iletim sağlarken, SSL true iken bu kütüphane sunucudaki SSL/TLS versiyonlarını karşılayamadığı için hata alıyor.
Bu durumda yukarı ilettiğim kod satırları ile Mailkit kütüphanesi kullanarak işlem sağlayabilir ya da System.Net.Mail ile SSL false durumunda kullanım sağlayabilirsiniz. Maalesef ki smartermail sistemi eski sürümleri aktif edebilme imkanı sunmamakta. Buna ek olarak edilmesi de güvenlik zaafiyeti yaratacaktır.”
Yani diyor ki, senin c# üzerinden yolladığın mailde system.net.mail kütüphanesini kullanma mail.kit diye 3. parti bir kütüphane var git onu kullan 🙂
Öyle şey olur mu ? ben niye başka bir kütüphaneye bağımlı kalayım. Sonuç olarak firmadan paramı geri iade istedim ve hesabımı kapattım.
Sonra başladım araştırmaya.
İnanın arkadaşlar bu işler öyle internetten araştırarak olmuyor, tanıdığım bir sunucu firmasının sahibini aradım, konuyu anlattım ve sizde de aynı şeyi yaşarsak para iadesi isterim bozuşmayalım dedim.
O da tabiiki isteyebilirsin ama bizde böyle sorunlar olmaz dedi.
Ve sonuç olarak tabiiki sorun oldu 🙂
Ama nasıl bir sorun oldu, “Güvenli bağlantıya izin vermiyor” hatası almadık, ssl kullanıyorsan handshake yapman gerekiyor diye bir hata aldık. Bu hatayı ticket’e ilettiğimizde ise aldığımız cevap şu şekildeydi.
aşağıdaki portları kullanmanız gerekiyor 🙂 (Yazının sonuna doğru kodlamayı paylaşacağım, zaten onlara da yollamıştım) Yani yazıştığım arkadaş konuyu hiç anlamamış ve anladım ki anlamayacak.
IMAP Sunucu Portu: 993 / SSL
143 / STARTTLS
POP3 Sunucu Portu: 995 / SSL
110 / STARTTLS
Giden Sunucu Portu: 465 / SSL
587 / STARTTLS
Bu hatayı geçmek için ise, aşağıdaki kod parçasını kullandık.
ServicePointManager.ServerCertificateValidationCallback = delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
};
Ve sessiz bir şekilde ticket’i kapattım.
Sorun çözüldü.
Şimdi sizlere örnek c# kodunu paylaşacağım. Umarım faydalı olur.
try
{
string smtpAddress = "sunucumailurl"; // SMTP sunucusunun adresi
int portNumber = 587; // SSL için 465, TLS için 587 kullanın
bool enableSSL = true; // SSL/TLS etkinleştir
string emailFrom = "epostaad@domain.net";
string password = "*****";
string emailTo = "haktan.akdag@dokuzsistem.com";
string subject = "Hello";
string body = "Hello, this is a test email.";
using (MailMessage mail = new MailMessage())
{
mail.From = new MailAddress(emailFrom);
mail.To.Add(emailTo);
mail.Subject = subject;
mail.Body = body;
mail.IsBodyHtml = true;
using (SmtpClient smtp = new SmtpClient(smtpAddress, portNumber))
{
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential(emailFrom, password);
smtp.EnableSsl = enableSSL;
smtp.Timeout = 100000; // 100 saniye
//smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
ServicePointManager.ServerCertificateValidationCallback = delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
};
smtp.Send(mail);
Console.WriteLine("Email sent successfully.");
}
}
}
catch (Exception ex)
{
Console.WriteLine("Email send failed: " + ex.Message);
}
return "";
İyi kodlamalar..
Sqlcmd -Q ile batch dosyası oluşturma ve Rapor Tetikleme

Sqlcmd -Q ile batch dosyası oluşturma ve Rapor Tetikleme
Merhaba arkadaşlar;
Netsis tarafında hazırlanan bir raporun (Stored Procedure) bat dosyası ile çalıştırılması sürecini anlatacağım.
ERP Süreçleriyle sürekli olarak uğraşanlar bilir, Sabit raporlar pek bir işe yaramaz, illaki rapora bakan yönetici bir eksik veya fazlalık bulur.
Netsiste Muavin raporunda hangi cari hesap ne kadar borç veya alacak bakiyesi vermiş’i alabilirsiniz. Fakay bütün 120 li hesaplar bazen borç bazen alacak bakiyesi verirken bazıları da 0 bakiye vererek hesap kapalı gözükmektedir.
Muhasebe departmanımız ilgili raporu netsis’den aldıktan sonra bakiye vermeyen hesapları yönetici istemediği için tek tek silmekle uğraşıyordu.Bu konuda bizden destek isteyen muhasebe biriminin işini kolaylaştırabilmek adına bir stored procedure yazmaya karar verdim. Rapor çıktısını sıralı bir biçimde oluşturmak, excel’de daha az takla atarak rapor çıktısını konforlu bir biçimde sunabilmek adına SP yaptım bilginize.
Ayrıca hesapların altında toplamların gözüktüğü toplam bakiyelerin de hesap bazında gözükebilmesi için bu çalışma yapıldı.
Şimdi size Stored Procedure’yi paylaşıyorum.
Öncelikle doldurulacak temp tabloyu şu şekilde.
CREATE TABLE MUAVIN_CIKTI(RN INT ,SIRA INT,FISNO NVARCHAR(50),HES_KOD NVARCHAR(50),TARIH NVARCHAR(50),ACIKLAMA NVARCHAR(500),BORCUTTAR DECIMAL(28,2),ALACAKTUTAR DECIMAL(28,2), TOPLAM DECIMAL(28,8),HESAP_ADI NVARCHAR(500))
alter PROC [dbo].[SP_HA_MUAVIN]
AS
CREATE TABLE #MUAVIN (FISNO NVARCHAR(50),HES_KOD NVARCHAR(50),TARIH NVARCHAR(50), ACIKLAMA NVARCHAR(500),BORCTUTAR DECIMAL(28,2),ALACAKTUTAR DECIMAL(28,2))
INSERT INTO #MUAVIN
select FISNO,HES_KOD,CONVERT(VARCHAR(50),TARIH,120),DBO.TRK(ACIKLAMA) ACIKLAMA, CASE WHEN BA=1 THEN TUTAR ELSE 0 END BORCTUTAR,CASE WHEN BA=2 THEN TUTAR ELSE 0 END ALACAKTUTAR
from TBLMUHFIS WITH(NOLOCK)
--WHERE AY_KODU=1
SELECT HES_KOD, SUM(BORCTUTAR) BORCUTUTAR ,SUM(ALACAKTUTAR) ALACAKTUTAR,SUM(BORCTUTAR) - SUM(ALACAKTUTAR) TOPLAM INTO #MUAVINTOPLAM FROM #MUAVIN GROUP BY HES_KOD
CREATE TABLE #S0NUC (SIRA INT,FISNO NVARCHAR(50),HES_KOD NVARCHAR(50),TARIH NVARCHAR(50), ACIKLAMA NVARCHAR(500),BORCTUTAR DECIMAL(28,2),ALACAKTUTAR DECIMAL(28,2),TOPLAM DECIMAL(28,2))
INSERT INTO #S0NUC
SELECT 1,* ,0 TOPLAM FROM #MUAVIN WITH(NOLOCK) WHERE HES_KOD NOT IN (SELECT HES_KOD FROM #MUAVINTOPLAM WHERE TOPLAM =0)
INSERT INTO #S0NUC
SELECT 2,'TOPLAM',HES_KOD,'','TOPLAM',BORCUTUTAR,ALACAKTUTAR,TOPLAM FROM #MUAVINTOPLAM WITH(NOLOCK) WHERE TOPLAM<>0
TRUNCATE TABLE MUAVIN_CIKTI
--CREATE TABLE MUAVIN_CIKTI(RN INT ,SIRA INT,FISNO NVARCHAR(50),HES_KOD NVARCHAR(50),TARIH NVARCHAR(50),ACIKLAMA NVARCHAR(500),BORCUTTAR DECIMAL(28,2),ALACAKTUTAR DECIMAL(28,2), TOPLAM DECIMAL(28,8),HESAP_ADI NVARCHAR(500))
SELECT ROW_NUMBER() OVER(ORDER BY FISNO ASC) AS Row,* INTO #T FROM #S0NUC ORDER BY HES_KOD,SIRA,FISNO
INSERT INTO MUAVIN_CIKTI
SELECT T.*,dbo.TRK(MP.HS_ADI)HS_ADI FROM #T T
INNER JOIN TBLMUPLAN MP ON MP.HESAP_KODU=T.HES_KOD ORDER BY HES_KOD,Row
GO
--EXEC [SSP_HA_MUAVIN]
Rapor çıktısı da şu şekilde.

Şimdi bu prosedürü nasıl manuel çalıştıracağız ondan bahsedelim.
sqlcmd -Q "exec SP_HA_MUAVIN" -S SUNUCUADRESI -d DBADI -o C:bcikti.txt -U "USERNAME" -P "PASSWORD"
Text dosyaya bu kodları yazdıktan sonra bat olarak kaydetmeyi unutmayın.
Önemli Not : Bu arada sql cmd’nin çalışabilmesi için sql provider ayarlarını yapmak gerekiyor, internette nasıl yapıldığını bulabilirsiniz.
Rapor çalıştıktan sonra aşağıdaki ekran çıkıyor ve

Rapor tablosu dolduruluyor.
Eğer uygulamayı PowerShell ile çalıştırmak isterseniz aşağıdaki kodları da ps1 uzantılı dosya ile çalıştırabilirsiniz.
Invoke-Sqlcmd -ServerInstance "HAKTANPC" -Database "DBNAME" -Query "EXEC sys.sp_tables" -Username "USERNAME" -Password "PASSWORD"
Umarım faydalı olur.
AUDIT Nedir ?

AUDIT Nedir ?
AUDIT Nedir ?
Denetim, günümüz karmaşık ekonomik sisteminin temel taşlarından biridir. Şeffaflığı, hesap verebilirliği ve güveni teşvik ederek, kurumların ve bireylerin sağlıklı ve sürdürülebilir bir şekilde faaliyet göstermesine yardımcı olur. Bu makalede, denetimin ne olduğunu, farklı türlerini ve önemini inceleyeceğiz.
Denetim Nedir?
Denetim, bir sistemin, faaliyetlerin veya süreçlerin önceden belirlenmiş kriterlere uygunluğunu sistematik bir şekilde incelemesidir. Bu inceleme, bağımsız bir denetçi tarafından yapılır ve objektif bulgulara dayanır. Denetim raporu, denetçinin bulgularını ve önerilerini içerir ve ilgili taraflara sunulur.
Denetim, karmaşık bir süreci basitleştirerek şeffaflık ve güven inşa eden kapsamlı bir değerlendirmedir. Bu dinamik ve sistematik süreç, gerekli kanıt ve bilgilerin temin edilmesi, işlenmesi ve tarafsız bir şekilde değerlendirilmesiyle başlar. Bu değerlendirme, önceden belirlenmiş ölçütlere dayalı olarak yapılır ve denetlenen birimin uyumluluk seviyesini belirler.
Denetim, standartların varlığını zorunlu kılar. Bu standartlar, yasal düzenlemeler, yönetimsel ilkeler veya sektörel normlar gibi çeşitli kaynaklardan oluşabilir. Denetçi, bu standartları referans alarak, denetlenen birimin performansını objektif bir şekilde ölçer ve değerlendirir.
Denetimin temel amacı, standartlara uyumu belirlemektir. İster ihbar ve şikayetler üzerine ister rutin kontroller kapsamında olsun, denetim, denetlenen birimin önceden belirlenmiş kriterlere ne kadar uyduğunu analiz eder. Bu analiz sonucunda elde edilen bulgular, bir rapor halinde ilgililere sunulur.
Denetim, tarafsız bir bakış açısıyla yürütülmesi gereken hassas bir süreçtir. Denetçi, her türlü önyargıdan uzak durmalı ve objektif bir şekilde kanıt toplamalı ve değerlendirmelidir. Bu sayede, denetlenen birimin adil ve doğru bir şekilde değerlendirilmesi sağlanır.
Denetim süreci, somut bir sonuca varmakla tamamlanır. Denetçi, toplanan kanıtlar ve yapılan değerlendirmeler ışığında, denetlenen birimin performansı ile ilgili bir kanaate varır. Bu kanaat, bir rapor halinde ilgililere sunularak, denetlenen birimin güçlü ve zayıf yönleri ortaya konulur.
Denetim Türleri:
- Mali Denetim: Finansal tabloların doğruluğunu ve güvenilirliğini değerlendirmeyi amaçlar.
- Performans Denetimi: Bir programın, projenin veya faaliyetin önceden belirlenmiş hedeflere ne kadar ulaştığını değerlendirmeyi amaçlar.
- Uygunluk Denetimi: Bir kurumun yasalara, düzenlemelere veya politikalara uygunluğunu değerlendirmeyi amaçlar.
- Operasyonel Denetim: Bir kurumun iş süreçlerinin verimliliğini ve etkililiğini değerlendirmeyi amaçlar.
- İç Denetim: Kurumun kendi personeli tarafından yapılan denetimdir.
- Dış Denetim: Bağımsız bir denetçi firma tarafından yapılan denetimdir.
Denetimin Önemi:
Denetim, birçok açıdan önemlidir:
- Güveni Artırır: Şeffaflık ve hesap verebilirlik sağlayarak, paydaşlar arasında güveni artırır.
- Riskleri Azaltır: Potansiyel hataları ve usulsüzlükleri belirleyerek, kurumların risklerini azaltmasına yardımcı olur.
- Performansı Geliştirir: Süreçlerin ve faaliyetlerin değerlendirilmesi aracılığıyla, kurumların performansını geliştirmelerine yardımcı olur.
- Yasal Uyumluluğu Sağlar: Yasalara ve düzenlemelere uyulmasını sağlayarak, kurumları yaptırımlardan korur.
- Kurumsal Yönetimi Geliştirir: Kurumların daha iyi yönetilmesine ve karar verme süreçlerini geliştirmelerine yardımcı olur.
Sonuç:
Denetim, karmaşık dünyamızda hayati önem taşıyan bir araçtır. Şeffaflığı, hesap verebilirliği ve güveni teşvik ederek, kurumların ve bireylerin sağlıklı ve sürdürülebilir bir şekilde faaliyet göstermesine yardımcı olur. Denetimden elde edilen bilgiler, kurumların risklerini yönetmelerine, performanslarını geliştirmelerine ve yasalara uymalarına yardımcı olur. Bu nedenle, denetim her sektörde ve her ölçekteki kuruluş için vazgeçilmez bir unsurdur.