Selamlar... 
TFS'ten, bir ekip içerisinde proje geliştirirken tüm ekibple beraber projenin yürütülmesini sağlamak, geçmiş sürümleri saklamak, farklı ortamlardan projelere erişim,...vs işlerde faydalanılabilir.
TFS ile ilgili daha detaylı bilgi için https://www.visualstudio.com/tr-tr/products/tfs-overview-vs.aspx adresi ziyaret edilebilir.
TFS'e Visual Studio 2012/2013'ten erişim aşağıdaki şekilde yapılabiliyor:
Peki TFS 2012 sunucusuna Visual Studio 2008 içerisinden nasıl erişebiliriz?
Bunun için ufak bir kaç püf noktasını bilmemiz gerekiyor.
Buradaki arkadaşın da dediği gibi;
- Visual Studio'da Yardım menüsü altında "About Microsoft Visual Studio" seçeneğini seçiyoruz.
- Microsoft Visual Studio 2008 Team Explorer Version 9.0.???? gibi bir girdi var mı kontrol ediyoruz.
Daha sonra Tools -> Options altında Source Control seçeneğinden "Team Foundation Server" seçilmeli.
Tools -> Connect To Team Foundation Server seçeneği ile TFS sunucusuna bağlanılabilir.
TFS sürümüne göre uyumluluk yaması yüklemek gerekebilir:
Visual Studio 2008'de bir farklılık da sunucu adresinin yazımında var.
http://192.168.0.???:8080/tfs/DefaultCollection/
şeklinde yazmak gerekiyor.
Saygılar...
# Kategoriler : C# Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz
Selamlar... 


Çalıştığım firmada şöyle bir ihtiyacımız oldu. Canlı veritabanın yedeğini her gün bir arşiv sunucusuna yükleyip raporları buradan almamız icabetti.
Şu şekilde bir çözüme gittik.
Bir C# konsol uygulaması yazdık.
Bunu da Windows zamanlanmış görevlere yedeğin ortalama tamamlanma süresinden 1 saat kadar sonraya.
Uygulama şu şekilde çalışıyor:
- Veritabanı yedeği bir NAS cihazında(bir yedekleme sunucusunda).
- Öncelikle o sunucuya kullanıcı adı-şifre doğrulaması ile bağlanıp yedek dosyasını arşiv sunucusuna(uygulamamızın çalıştığı sunucu) alıyoruz.
- Yedekleme sunucusunda çok sayıda yedek olduğundan en güncel yedeği bulup kopyalıyor uygulamamız.
- Sonra yedeği arşiv sunucusuna kopyaladığımız yedek dosyasını veritabanına yüklüyoruz..
- Sonra yedek dosyamızı siliyoruz.
- Son olarak işlem ile ilgili bilgilendirme mesajı atıyoruz.
- Uygulamanın başlangıç ayarlarını normalde bir xml dosyasından alıyorum, ancak burada direkt kodun içinden alacak şekilde yazdım. 


Program.cs
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml;
namespace VtYedekYukleMesajAt
{
    class Program
    {
        private static string _uygulamaDizini = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
        private static string _sunucuAdresi = @"\\192.168.0.101\sqlbackup";
        private static string _sunucudakiYedekDosyaYolu = @"\\Z:\VERITABANI_backup_2015_06_16_020000_8320823.bak";
        private static string _veritabaniAdi = "VERITABANI";
        private static string _yedekDosyaYolu = _uygulamaDizini + "\\VERITABANI_Yedek.bak";
        private static string _sunucuAdi = @"\\192.168.0.55";
        private static string _veritabaniKullaniciAdi = "sa";
        private static string _veritabaniSifre = "123456";
        private static string _sunucuKullaniciAdi = "sqlbackup";
        private static string _sunucuSifre = "123456";
        private static string _fizikselDataDosyasi = "VERITABANI.mdf";
        private static string _fizikselLogDosyasi = "VERITABANI.ldf";
        private static string _mantiksalDataDosyasi = "VERITABANI_Data";
        private static string _mantiksalLogDosyasi = "VERITABANI_Log";
        private static string _sunucuDomain = "firmaismi";
        private static string _agYoluHarfi = "Z:";
        private static string _bilgiEPostaAdresi = "zamkinos@firmaismi.com.tr";
        private static string _smtpAdi = "zamkinos@firmaismi.com.tr";
        private static string _smtpSifresi = "123456";
        private static DateTime _baslangicZamani;
        private static DateTime _bitisZamani;
        static void Main(string[] args)
        {
            try
            {
                _baslangicZamani = DateTime.Now;
   dosyayiKopyala(_sunucuKullaniciAdi, _sunucuSifre);
                yedegiYukle(_veritabaniAdi, _yedekDosyaYolu, _sunucuAdi, _veritabaniKullaniciAdi, _veritabaniSifre);
                dosyayiSil(_yedekDosyaYolu);
                _bitisZamani = DateTime.Now;
                epostaYolla(_sunucudakiYedekDosyaYolu);
            }
            catch (Exception ex)
            {
                hatayiYaz(ex);
            }
        }
        private static void epostaYolla(string sunucudakiYedekDosyaYolu)
        {
            EPosta.EPostaYolla(_bilgiEPostaAdresi, "<br />" + sunucudakiYedekDosyaYolu + " yedek dosyasi basariyla yuklendi.<br />Baslangic Zamani: (" + _baslangicZamani.ToString() + ")<br />Bitiş Zamani: (" + _bitisZamani.ToString() + ")", "Yedek Yukleme Islemi", "sql@firmaismi.com.tr", "Sql Yedek", _smtpAdi, _smtpSifresi, new EPostaEki[] { });
        }
        private static void dosyayiKopyala(string username, string password)
        {
            NetworkConnection objNetworkConnection = new NetworkConnection(_sunucuAdresi, new System.Net.NetworkCredential(_sunucuKullaniciAdi, _sunucuSifre, _sunucuDomain), _agYoluHarfi);
            _sunucudakiYedekDosyaYolu = _sunucuAdresi + "\\" + objNetworkConnection.DosyaYolu;
            File.Copy(_sunucudakiYedekDosyaYolu, _yedekDosyaYolu, true);
        }
        private static void dosyayiSil(string yedekDosyaYolu)
        {
            File.Delete(_yedekDosyaYolu);
        }
        private static void yedegiYukle(String databaseName, String backUpFile, String serverName, String userName, String password)
        {
            ServerConnection conn = new ServerConnection(serverName, userName, password);
            conn.StatementTimeout = int.MaxValue;
            //conn.ServerInstance = serverName;
            Server srv = new Server(conn);
            int satir = 0;
            try
            {
                // Generate new FilePath for both Files.
                string fileMdf = System.IO.Path.Combine(srv.MasterDBPath, _fizikselDataDosyasi);
                string fileLdf = System.IO.Path.Combine(srv.MasterDBLogPath, _fizikselLogDosyasi);
                RelocateFile relocateMdf = new RelocateFile(_mantiksalDataDosyasi, fileMdf);
                RelocateFile relocateLdf = new RelocateFile(_mantiksalLogDosyasi, fileLdf);
                Restore res = new Restore();
                res.Devices.AddDevice(backUpFile, DeviceType.File);
                res.RelocateFiles.Add(relocateMdf);
                res.RelocateFiles.Add(relocateLdf);
                res.Database = databaseName;
                res.NoRecovery = false;
                res.ReplaceDatabase = true;
                satir = 1;
                srv.KillAllProcesses(databaseName); // 26.01.2016.
                satir = 2;
                res.SqlRestore(srv);
                satir = 3;
                conn.Disconnect();
            }
            catch (SmoException ex)
            {
                hatayiYaz(ex);
                throw new SmoException("[SmoException]:" + satir + ex.Message, ex.InnerException);
            }
            catch (IOException ex)
            {
                hatayiYaz(ex);
                throw new IOException("[IOException]:" + satir + ex.Message, ex.InnerException);
            }
            catch (Exception ex)
            {
                hatayiYaz(ex);
                throw new Exception("[Exception]:" + satir + ex.Message, ex.InnerException);
            }
        }
        private static void hatayiYaz(Exception ex)
        {
            StreamWriter file = new StreamWriter(_uygulamaDizini + "\\Hata.txt", true);
            file.WriteLine(Environment.NewLine + "=================");
            file.WriteLine("Tarih:" + DateTime.Now.ToString() + Environment.NewLine);
            file.WriteLine("Ex:(" + ex.Message + "), InnerEx:(" + ex.InnerException + ")");
            file.Close();
        }
    }
}


NetworkConnection.cs
using System;
using System.ComponentModel;
using System.IO;
using System.Net;
using System.Runtime.InteropServices;
namespace VtYedekYukleMesajAt
{
    public class NetworkConnection : IDisposable
    {
        #region Private Members
        private string _networkName;
        [DllImport("mpr.dll")]
        private static extern int WNetAddConnection2(NetResource netResource, string password, string username, int flags);
        [DllImport("mpr.dll")]
        private static extern int WNetCancelConnection2(string name, int flags, bool force);
        #endregion Private Members
        #region Public Members
        /// <summary>
        /// 
        /// </summary>
        public string DosyaYolu;
        #endregion Public Members
        #region Constructor
        /// <summary>
        /// 
        /// </summary>
        /// <param name="networkName"></param>
        /// <param name="credentials"></param>
        public NetworkConnection(string networkName, NetworkCredential credentials, string agYoluHarfi)
        {
            _networkName = networkName;
            var netResource = new NetResource()
            {
                Scope = ResourceScope.GlobalNetwork,
                ResourceType = ResourceType.Disk,
                DisplayType = ResourceDisplaytype.Share,
                RemoteName = networkName
            };
            var userName = string.IsNullOrEmpty(credentials.Domain)
                ? credentials.UserName
                : string.Format(@"{0}\{1}", credentials.Domain, credentials.UserName);
            var result = WNetAddConnection2(
                netResource,
                credentials.Password,
                userName,
                0);
            if (result != 0)
            {
                if (result == 1219) // Zaten baglanti var...
                {
                    System.IO.DriveInfo[] drives = System.IO.DriveInfo.GetDrives();
                    foreach (var drive in drives)
                    {
                        if (drive.Name.Equals(agYoluHarfi.Replace("\\", "").Replace(":", "")) && drive.DriveType == DriveType.Network)
                        {
                            DirectoryInfo hdDirectoryInWhichToSearch = new DirectoryInfo(agYoluHarfi);
                            guncelDosyayiBul(hdDirectoryInWhichToSearch);
                            break;
                        }
                    }
                    if (string.IsNullOrEmpty(this.DosyaYolu))
                    {
                        DirectoryInfo hdDirectoryInWhichToSearch2 = new DirectoryInfo(networkName);
                        guncelDosyayiBul(hdDirectoryInWhichToSearch2);
                    }
                }
                else
                {
                    throw new Win32Exception(result, "Error connecting to remote share");
                }
            }
            else
            {
                DirectoryInfo hdDirectoryInWhichToSearch = new DirectoryInfo(networkName);
                guncelDosyayiBul(hdDirectoryInWhichToSearch);
            }
        }
        #endregion Constructor
        #region Private Methods
        private void guncelDosyayiBul(DirectoryInfo hdDirectoryInWhichToSearch)
        {
            FileInfo[] filesInDir = hdDirectoryInWhichToSearch.GetFiles("*" + "VERITABANI" + "*.bak*");
            DateTime oncekiTarih = DateTime.MinValue;
            foreach (FileInfo foundFile in filesInDir)
            {
                if (oncekiTarih != DateTime.MinValue)
                {
                    if (oncekiTarih < foundFile.CreationTime.Date)
                    {
                        this.DosyaYolu = foundFile.Name;
                        oncekiTarih = foundFile.CreationTime.Date;
                    }
                }
                else
                {
                    oncekiTarih = foundFile.CreationTime.Date;
                    this.DosyaYolu = foundFile.Name;
                }
            }
        }
        #endregion Private Methods
        #region Public Methods
        ~NetworkConnection()
        {
            Dispose(false);
        }
        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }
        protected virtual void Dispose(bool disposing)
        {
            WNetCancelConnection2(_networkName, 0, true);
        }
        #endregion Public Methods
    }
    /// <summary>
    /// 
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public class NetResource
    {
        /// <summary>
        /// 
        /// </summary>
        public ResourceScope Scope;
        /// <summary>
        /// 
        /// </summary>
        public ResourceType ResourceType;
        /// <summary>
        /// 
        /// </summary>
        public ResourceDisplaytype DisplayType;
        /// <summary>
        /// 
        /// </summary>
        public int Usage;
        /// <summary>
        /// 
        /// </summary>
        public string LocalName;
        /// <summary>
        /// 
        /// </summary>
        public string RemoteName;
        /// <summary>
        /// 
        /// </summary>
        public string Comment;
        /// <summary>
        /// 
        /// </summary>
        public string Provider;
    }
    /// <summary>
    /// 
    /// </summary>
    public enum ResourceScope : int
    {
        /// <summary>
        /// 
        /// </summary>
        Connected = 1,
        /// <summary>
        /// 
        /// </summary>
        GlobalNetwork,
        /// <summary>
        /// 
        /// </summary>
        Remembered,
        /// <summary>
        /// 
        /// </summary>
        Recent,
        /// <summary>
        /// 
        /// </summary>
        Context
    };
    /// <summary>
    /// 
    /// </summary>
    public enum ResourceType : int
    {
        /// <summary>
        /// 
        /// </summary>
        Any = 0,
        /// <summary>
        /// 
        /// </summary>
        Disk = 1,
        /// <summary>
        /// 
        /// </summary>
        Print = 2,
        /// <summary>
        /// 
        /// </summary>
        Reserved = 8
    }
    /// <summary>
    /// 
    /// </summary>
    public enum ResourceDisplaytype : int
    {
        /// <summary>
        /// 
        /// </summary>
        Generic = 0x0,
        /// <summary>
        /// 
        /// </summary>
        Domain = 0x01,
        /// <summary>
        /// 
        /// </summary>
        Server = 0x02,
        /// <summary>
        /// 
        /// </summary>
        Share = 0x03,
        /// <summary>
        /// 
        /// </summary>
        File = 0x04,
        /// <summary>
        /// 
        /// </summary>
        Group = 0x05,
        /// <summary>
        /// 
        /// </summary>
        Network = 0x06,
        /// <summary>
        /// 
        /// </summary>
        Root = 0x07,
        /// <summary>
        /// 
        /// </summary>
        Shareadmin = 0x08,
        /// <summary>
        /// 
        /// </summary>
        Directory = 0x09,
        /// <summary>
        /// 
        /// </summary>
        Tree = 0x0a,
        /// <summary>
        /// 
        /// </summary>
        Ndscontainer = 0x0b
    }
}


EPosta.cs
using System;
using System.IO;
using System.Net.Mail;
using System.Text;
namespace VtYedekYukleMesajAt
{
    public class EPosta
    {
        public static string UygulamaDizini = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
        public static void EPostaYolla(string to, string body, string subject, string fromAddress, string fromDisplay, string credentialUser, string credentialPassword, params EPostaEki[] attachments)
        {
            string host = "mail.firmaismi.com.tr";
            //body = UpgradeEmailFormat(body);
            try
            {
                MailMessage mail = new MailMessage();
                mail.Body = body;
                mail.IsBodyHtml = true;
                mail.To.Add(new MailAddress(to));
                mail.From = new MailAddress(fromAddress, fromDisplay, Encoding.UTF8);
                mail.Subject = subject;
                mail.SubjectEncoding = Encoding.UTF8;
                mail.Priority = MailPriority.Normal;
                foreach (EPostaEki ma in attachments)
                {
                    mail.Attachments.Add(ma.File);
                }
                SmtpClient smtp = new SmtpClient();
                smtp.Credentials = new System.Net.NetworkCredential(credentialUser, credentialPassword);
                smtp.Host = host;
                smtp.Send(mail);
            }
            catch (Exception ex)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("\nTo:" + to);
                sb.Append("\nbody:" + body);
                sb.Append("\nsubject:" + subject);
                sb.Append("\nfromAddress:" + fromAddress);
                sb.Append("\nfromDisplay:" + fromDisplay);
                sb.Append("\ncredentialUser:" + credentialUser);
                sb.Append("\ncredentialPasswordto:" + credentialPassword);
                sb.Append("\nHosting:" + host);
                sb.Append("\nException:" + ex.Message);
                // Write the string to a file.
                StreamWriter file = new StreamWriter(UygulamaDizini + "\\Hata.txt", true);
                file.WriteLine(Environment.NewLine + "=================");
                file.WriteLine("Tarih:" + DateTime.Now.ToString() + Environment.NewLine);
                file.WriteLine(sb.ToString());
                file.Close();
                //ErrorLog(sb.ToString(), ex.ToString(), ErrorLogCause.EmailSystem);
            }
        }
    }
}


Saygılar...
# Kategoriler : C# Sql Server Veritabanı Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz
Selamlar...
MVC ile ExtJs kullanarak excel çıktısı alma işlemine http://zamkinos.net/blog/Posts.aspx?PostID=5 yazımızda değinmiştik.
Kabaca tarif etmek gerekirse; js dosyamızda yazdığımız adresi Controller sınıfının içinde tanımladığımızda çağırabiliyorduk.
Web Form'da da WebMethod tanımlayarak istemci tarafından sunucu tarafındaki metotlara erişebiliyoruz.
Ancak iş excel'den çıktı almaya geldiğinde Web Method işimizi çözmüyor.
İnternette araştırdığım yerlerin tümündeki çözümler işe yaramadı ve bu excel çıktısı işini bir aspx sayfası yaparak çözme yoluna gittim.
Javascript tarafında bir form oluşturup, parametrelerimizi ekliyoruz. Aşağıdaki fonksiyonu bir excele çıktı butonunun click olayında tetikleyebiliriz.
    function formuPostalaExcel() {
        var form = new Ext.form.Panel({});
        form.getForm().submit({
            timeout: 120000,
            hidden: true,
            standardSubmit: true,
            url: 'ExcelExport.aspx',
            params: {
                param1: Ext.getCmp('txtParam1').getValue(),
                param2: Ext.getCmp('txtParam2').getValue(),
                param3: Ext.getCmp('txtParam3').getValue(),
                param4: Ext.getCmp('txtParam4').getValue(),
                param5: Ext.getCmp('txtParam5').getValue()
            },
            failure: function (form, action) {
                alert(action);
            }
        });
    }
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace ExcelCikti
{
    public partial class ExcelExport : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string param1 = Request.Params["param1"].ToString();
            string param2 = Request.Params["param2"].ToString();
            string param3 = Request.Params["param3"].ToString();
            string param4 = Request.Params["param4"].ToString();
            string param5 = Request.Params["param5"].ToString();
            List<Musteri> lst = musterileriGetir(param1, param2, param3, param4, param5);
            StringBuilder sb = GenelIslemler.List2ExcelSb(lst); // http://zamkinos.net/blog/Posts.aspx?PostID=5 
            string sFileName = "MusteriListesi_" + GenelIslemler.strTarihiGetir() + ".xls";
            Response.AppendHeader("content-disposition", "attachment;filename=" + sFileName);
            Response.ContentType = "application/ms-excel";
            Response.ContentEncoding = Encoding.Unicode;
            Response.BinaryWrite(Encoding.Unicode.GetPreamble());
            Response.ContentType = "application/vnd.ms-excel";
            Response.Write(sb.ToString());
            Response.End();
        }
        private List<Musteri> musterileriGetir(string param1, string param2, string param3, string param4, string param5)
        {
            VeritabaniIslemleri vtIslem = new VeritabaniIslemleri();
            DataTable dtMaddeler = vtIslem.ReturnDataTable("SELECT Adi, No FROM Musteri"); // parametreler de eklenecek duruma göre.
            List<Madde> lst = new List<Madde>();
            foreach (DataRow dr in dtMaddeler.Rows)
            {
                lst.Add(new Musteri()
                {
                    Adi = dr["Adi"].ToString(),
                    No = dr["No"].ToString()
                });
            }
            return lst;
        }
    }
}
Saygılar...
# Kategoriler : C# Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz
Selamlar...

Gene gerçek bir örnek üzerinden gidelim.
Edefter için Maliye'den paylaşılan stil dosyaları var. Ona uygun XML hazırlandığında uygun bir şekilde görüntülenmesini sağlıyor.
Bu XML dosyaları HTML biçiminde görüntüleniyor ama boyutları çok büyük olduğundan tarayıcıda açmakta sıkıntı yaşanıyor.
Oysa bu dosyaları PDF'ye çevirsek hem boyutu küçülüyor, hem de çok rahatlıkla görüntülenebiliyor.
Piyasada bunu yapan ücretli programlar var.
Peki ama bunu ücretsiz bir şekilde nasıl yaparız?
NReco.PdfGenerator diye bir DLL var ücretsiz. Ben bunu kullandım.
using NReco.PdfGenerator;
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using System.Xml.Xsl;
namespace Xml2Pdf
{
    public partial class Xml2Pdf : Form
    {
        public Xml2Pdf()
        {
            InitializeComponent();
        }
         
        private void btnXml2Pdf_Click(object sender, EventArgs e)
        {
            DirectoryInfo di = Directory.CreateDirectory("C:\\XmlPdf\\");
            string xsltYevmiye = "yevmiye.xslt";
            string xsltKebir = "kebir.xslt";
            string xsltBerat = "berat.xslt";
            string xsltAdres = "";
            lblBaslangicZamani2.Text = DateTime.Now.ToString("");
            dizinSecimDialog.SelectedPath = @"\\10.0.0.1\EDEFTER";
            DialogResult result = dizinSecimDialog.ShowDialog();
            if (result == DialogResult.OK)
            {
                string[] files = Directory.GetFiles(dizinSecimDialog.SelectedPath,
 "*.xml", SearchOption.AllDirectories);
                foreach (string file in files)
                {
                    string htmlDosyasi = di.FullName + 
Path.GetFileName(file).Replace(".xml", ".html");
                    string pdfDosyasi = di.FullName + 
Path.GetFileName(file).Replace(".xml", ".pdf");
                    if (file.IndexOf("-KB-") > 0)
                    {
                        xsltAdres = xsltBerat;
                    }
                    else if (file.IndexOf("-YB-") > 0)
                    {
                        xsltAdres = xsltBerat;
                    }
                    else if (file.IndexOf("-K-") > 0)
                    {
                        xsltAdres = xsltKebir;
                    }
                    else if (file.IndexOf("-Y-") > 0)
                    {
                        xsltAdres = xsltYevmiye;
                    }
                    else
                    {
                        throw new Exception("Tanımsız şema tipi:(" + file + ")");
                    }
                    pdfOlustur(xsltAdres, file, htmlDosyasi, pdfDosyasi);
                }
                MessageBox.Show("Pdf dosyaları " + di.FullName 
+ " dizini altında oluşturulmuştur.", "İşlem Başarılı", MessageBoxButtons.OK, 
MessageBoxIcon.Information);
                lblBitisZamani2.Text = DateTime.Now.ToString("");
            }
        }
        private void pdfOlustur(string xsltAdres, string file, 
string htmlDosyasi, string pdfDosyasi)
        {
            XslCompiledTransform xslt = new XslCompiledTransform();
            xslt.Load(Path.GetDirectoryName(file) + "\\" + xsltAdres);
            xslt.Transform(file, htmlDosyasi);
            HtmlToPdfConverter htmlToPdf = new HtmlToPdfConverter();
            htmlToPdf.GeneratePdfFromFile(htmlDosyasi, null, pdfDosyasi);
        }
    }
}


Saygılar...
# Kategoriler : C# Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz

Selamlar...

C++ için ücretsiz bir geliştirme ortamı olarak CodeBlocks kullanılabilir.

http://www.codeblocks.org/downloads/26

adresinden mingw olanı indirilebilir.

Sonra da sadece aşağıdaki kodu yazarak uygulamadan web sayfası çağırabiliyoruz.

#include <windows.h>

void main()
{
   ShellExecute(NULL, "open", "http://yourwebpage.com", NULL, NULL, SW_SHOWNORMAL);
}

 

Uygulamayı derlediğimizde exe oluşuyor. Ancak exe'nin simgesini de değiştirmek mümkün.

32 x 32 boyutunda bir simge(.ico) dosyası bulup uygulamamızla aynı dizine atıyoruz. *.cpp dosyası ile aynı dizinde olacak. Projemizi sağ tıklayarak resources.rc isimli bir dosya oluşturuyoruz. İsmi çok mühim değil. Bu dosyayı açıp;

MAINICON  ICON  "uygulamaikonumuz.ico"

satırını ekliyoruz. Uygulamayı derlediğimizde artık simgeli bir şekilde exe oluşacaktır.

 

Saygılar...

# Kategoriler : C Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz
Selamlar...
Bu örnekte kullanacağımız araçlar:
1 adet PostgreSql veritabanı.
1 adet java sınıfı
2 adet jsp sayfası
Bir tutam jar dosyası
Amacımız kişilerin resimlerini veritabanında tutmak ve istendiğinde ekrana basmak.
PostgreSql'de bir tablo oluşturalım. Ben 'KISI_RESIM' dedim adına, siz başka bir isim de verebilirsiniz. Ama kişilere ait resimlerin tutulacağı bir tablo olduğunu göz önünde bulundurursak, GLOBAL_YATIRIM_GOSTERGELERI falan gibi bir isim de vermemek lazım.:)
Tablomuzda iki adet alan olsun. Birincisi KISI_ID, ikincisi de RESIM. Birinci alan(KISI_ID) varchar(50), ikinci alan(RESIM) da BYTEA olsun.
Postgresql kurulumu, tablo oluşturma ile ilgili bilgi için daha evvelki görüntülü anlatımlara bakabilirsiniz.
Buraya kadar sorunsuz geldiğinizi farzedersek devam edebiliriz.
Java sınıfımızın içinde resimYukle metodu ve onun ihtiyacı olan yan metotlar olacak.
ResimIslemleri.java
private boolean resmiIsle(String pResimYolu, String strKisiId)
{         
Connection baglanti = null ; 
String sqlINSERT = " INSERT INTO KISI_RESIM (KISI_ID, RESIM) values (?, ?) " ; 
String sqlDELETE = " DELETE FROM KISI_RESIM WHERE KISI_ID = "   strKisiId ; 
FileInputStream fis = null ; 
PreparedStatement ps = null ; 
Statement stmt = null ; 
int intIslenenKayitSayisi = 0 ; 
boolean iseHataVar = true ; 
try 
{       
    if (!strKisiId.equals("")) 
    { 
        Properties prop = new Properties(); 
        prop.put("user","kullanici"); 
        prop.put("password","sifre");         
        Class.forName("org.postgresql.Driver"); 
        baglanti = DriverManager.getConnection("jdbc:postgresql://localhost:5432/TEST_DB", prop); 
        baglanti.setAutoCommit(false) ; 
        File file = new File(pResimYolu) ; 
        fis = new FileInputStream(file) ; 
        stmt = baglanti.createStatement() ; 
        intIslenenKayitSayisi = stmt.executeUpdate(sqlDELETE) ; 
        if (intIslenenKayitSayisi&amp;gt;0) 
            System.out.println("strKisiId:"   strKisiId); 
        ps = baglanti.prepareStatement(sqlINSERT) ; 
        ps.setLong(1, Long.parseLong(strKisiId)) ; 
        ps.setBinaryStream(2, fis, (int)file.length()) ; 
        ps.executeUpdate() ; 
        iseHataVar = false ; 
    } 
catch(Exception e) 
    System.out.println("GenelIslemler.resmiIsle()"   e.getMessage()); 
    iseHataVar = true ; 
finally 
    try 
    { 
        if(fis != null) 
        { 
            fis.close() ; 
        }
        if (iseHataVar)
        {
            baglanti.rollback() ;
        }
        else
        {
            baglanti.commit() ;
        }
        if (ps != null)
        {
            ps.close() ;
            ps = null ;
        }
        if (baglanti != null)
        {
            baglanti.close() ;
            baglanti = null ;
        }           
    }
    catch(Exception e)
    {
        System.out.println("resmiIsle"   e.getMessage()) ;
    }
}
return !iseHataVar ;
}//private boolean resmiIsle(String pResimYolu, String strKisiId)
 
JSP sayfalarımızdan birisi geriye gif döndüren bir jsp sayfası(ResmiBas.jsp). Ajax örneğimizdeki sayfa da geriye XML döndürüyordu hatırlarsak. Bu sayfa da GIF döndürüyor. Diğer JSP sayfamız da kişiye ait bilgilerin ve resminin basıldığı sayfa(ResimEkleGoster.jsp).
ResmiBas.jsp    
java.sql.Connection baglanti = null ;
ServletOutputStream o = null ;
ResultSet rs = null ;
byte[] imgBytes = null ;
PreparedStatement ps = null ;    
response.setContentType("image/gif") ;
String strKisiId = "" ;
if (request.getParameter("pKisiId") != null)
{
strKisiId = request.getParameter("pKisiId") ;
}   
try
{   
if (!strKisiId.equals(""))            
{
   Properties prop = new Properties();
   prop.put("user","kullanici");
   prop.put("password","sifre");        
   Class.forName("org.postgresql.Driver");
   baglanti = DriverManager.getConnection("jdbc:postgresql://localhost:5432/TEST_DB", prop);
   ps = baglanti.prepareStatement("SELECT RESIM FROM KISI_RESIM WHERE KISI_ID = "   strKisiId) ;
   rs = ps.executeQuery() ;
   if (rs != null)
   {
       while(rs.next())
       {
           imgBytes = rs.getBytes(1);
           o = response.getOutputStream();
       }
       rs.close() ;
   }        
   ps.close();
   baglanti.close() ;
   if (imgBytes != null)
   {
          o.write(imgBytes);
   }
   out.clear();
   out = pageContext.pushBody();
}
}
catch(Exception ex)
{
System.out.println(ex.toString());
}
 
ResmiYukleGoster.jsp
if (!strKisiId.equals(""))            
{
   Properties prop = new Properties();
   prop.put("user","kullanici");
   prop.put("password","sifre");        
   Class.forName("org.postgresql.Driver");
   baglanti = DriverManager.getConnection("jdbc:postgresql://localhost:5432/kullanici", prop);
   ps = baglanti.prepareStatement("SELECT RESIM FROM KISI_RESIM WHERE KISI_ID = "   strKisiId) ;
   rs = ps.executeQuery() ;
   if (rs != null)
   {
       while(rs.next())
       {
           imgBytes = rs.getBytes(1);
           o = response.getOutputStream();
       }
       rs.close() ;
   }        
   ps.close();
   baglanti.close() ;
   if (imgBytes != null)
   {
          o.write(imgBytes);
   }
   out.clear();
   out = pageContext.pushBody();
}
 
Resmin boyutlarını java sınıfı içerisinde ayarlamak(genişletmek, uzatmak) falan mümkün ama ben uğraşmadım. Ben 105x130'dan büyükse yüklememe yöntemini seçtim. İsterseniz siz, gelen resmi boyutlandırabilirsiniz. Ayrıca resmi önce diskte 'kisiResimler' adında bir dizin oluşturup oraya atıyorum sonra da ordan veritabanına yazıyorum. Siz işlem bittikten sonra diksten silebilirsiniz de. 
ResimYukleGoster.zip
ya da
 
İhtiyaç olacak Jar dosyaları
ya da
Saygılar...
# Kategoriler : Java Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz

Selamlar...

Tek bir bilgisayarda farklı Java projelerini farklı portlardan aşağıdaki çalıştırabiliriz.
Öncelikle Apache Tomcat'i indiriyoruz. http://tomcat.apache.org/download-70.cgi 

Zip olan sürümünü indirirseniz kurulum yapmaniza da gerek kalmaz. 
Eğer yoksa Eclipse'i indirmemiz gerek. http://www.eclipse.org/downloads/ (Eclipse IDE for Java EE Developers)


İndirdiğimiz tomcat klasörünün adını apache-tomcat-7_8020 yapalım. Sonra aynı yere bundan bir tane daha kopyalayıp adını apache-tomcat-7_8010 yapalım.
Yani birisi 8010 portundan çalışacak, birisi de 8020'den.
Tabi bunun için bir ayar yapmamız lazım.
apache-tomcat-7_8010/conf/server.xml dosyasını açıyoruz notepad ile.    

1
<Server port="8005" shutdown="SHUTDOWN">

satırını    

1
<Server port="8015" shutdown="SHUTDOWN">

olarak değiştiriyoruz. 

 

 

1
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

satırını

1
<Connector port="8010" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

olarak değiştiriyoruz.

 

 

1
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

 satırını    

1
<Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />

olarak değiştiriyoruz.

Eclipse'te projelerimizi sağ tıklayıp yeni sunucu ekleme seçeneği ile her ikisine farklı tomcat sunucularını gösterirsek işlem tamamlanmış olur. 

 

Saygılar...

# Kategoriler : Java Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz
Selamlar...
Java'da dosya yükleme işlemini aşağıdaki şekilde yapabiliriz.
// Önce kullanacağımız değişkenleri tanımlamakla başlıyoruz.
// Tek bir sayfada yapacağız işlemi
     
String tt = "" ;
String dosyaAdi = "" ;
String contentType = request.getContentType() ;
String dosyaYolu = "" ;
String yuklenecekDizin = "" ;
 
// Eğer sayfanın altındaki form postalandıysa contentType null değildir ve içinde "multipart/form-data" geçiyordur.
// Bu durumda if'in içine giriyoruz ve gelen dosyayı belirttiğimiz dizine yüklüyoruz.
// Ben yüklenecek dizini değişkenden aldım ve değerine de "C:" dedim.
// Bunu siz sayfadan da alabilirsiniz.
// Formun içinden bize gelen elemanlara bakıyoruz ve sadece dosya türünde olanı alıyoruz. 
// Başka tipte elemanlar da gelebilir. Onları almamalıyız.
 
// Eğer sayfanın ilk yüklenişi ise de o zaman else kısmına giriyoruz ve formumuzu oluşturuyoruz.
// Formumuzda neler var? Bir adet "File" elemanı, bir adet "Reset" butonu, bir adet de "Submit" butonu.
// Ben boş mu diye kontrol etmedim ama siz formu postalamadan evvel dosya seçilmemişse formu postalamayabilirsiniz.
// 
if ((contentType != null) &amp;amp;&amp;amp; (contentType.indexOf("multipart/form-data") &amp;gt;= 0)) 
{        
    DiskFileItemFactory diskFile = new DiskFileItemFactory() ;
    ServletFileUpload fu = new ServletFileUpload(diskFile) ;
    fu.setSizeMax(301401501);    //bayt    
    java.util.List&amp;lt;DiskFileItem&amp;gt; fileItems = new ArrayList&amp;lt;DiskFileItem&amp;gt;() ; 
    fileItems = fu.parseRequest(request);
    Iterator&amp;lt;DiskFileItem&amp;gt; itr = fileItems.iterator();    
    FileItem fi = null ;
    File olusacakDosya = null ;
    yuklenecekDizin = "C:" ;
    while(itr.hasNext()) 
    {
          fi = (FileItem)itr.next();    
          if(!fi.isFormField()) //isFormField() degilse File turunde bi elemandir gelen.
          {
              dosyaAdi = fi.getName();
              if (dosyaAdi != null) 
              {
                  dosyaAdi = FilenameUtils.getName(dosyaAdi);
              }
              else
              {
                  dosyaAdi = "" ;                      
              }
                dosyaYolu = yuklenecekDizin "/" dosyaAdi ;
            if (!dosyaAdi.equals(""))
            {
                olusacakDosya = new File(dosyaYolu) ;
                   fi.write(olusacakDosya) ;
            }
            else
            {        
                out.println("&amp;lt;span class=\"renkliKelime\"&amp;gt;Dosya adı boş. Yükleme başarısız!&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;") ;
                return ; 
            }
          }//if(!fi.isFormField())           
    }//while(itr.hasNext())
    out.println("&amp;lt;span class=\"renkliKelime\"&amp;gt;Dosya başarı ile karşıya yüklendi : &amp;lt;span style=\"color:#ff0000; font-weight:bold; \"&amp;gt;" dosyaYolu "&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;") ;        
}        
else
{
     tt = "&amp;lt;form method=\"post\" ACTION=\"DosyaYukle.jsp\" id=\"frmUpload\" name=\"frmUpload\" ENCTYPE=\"multipart/form-data\"&amp;gt;" ;
     tt = "&amp;lt;table id=\"tblUpload\" name=\"tblUpload\"&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td colspan=\"2\"&amp;gt;" ;
     tt = "&amp;lt;input type=\"file\" name=\"dosyaUpload\" id=\"dosyaUpload\"&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;" ;
     tt = "&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;input type=\"submit\" name=\"btnGonder\" id=\"btnGonder\" value=\"GÖNDER\"&amp;gt;&amp;lt;/td&amp;gt;" ;
     tt = "&amp;lt;td&amp;gt;&amp;lt;input type=\"reset\" name=\"btnTemizle\" id=\"btnTemizle\" value=\"TEMİZLE\"&amp;gt;" ;
     tt = "&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;" ;
    tt = "&amp;lt;/form&amp;gt;" ; 
    out.println(tt) ;
}
DosyaYukle.jsp:
ya da
İhtiyaç olacak JAR dosyaları
ya da
 
Saygılar...
# Kategoriler : Java Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz
Selamlar...
Java-JSP ile bir zip dosyasını tarayıcımızdan seçip C dizinine bu zipi açan bir uygulama yazmıştım zamanında. 
Ekte ihtiyacınız olan JSP, JAVA ve JAR dosyaları mevcuttur.
ZipInputStream zipDosyasi = new ZipInputStream(inputStream) ;
ZipEntry zipIcindekiDosya = null ;
String strDosyaAdi = "" ;
int zipIcindekiDosyaSayisi = 0 ;
if (!pDizin.endsWith(DOSYAAYIRACI))
{
    pDizin  = DOSYAAYIRACI ;
}
if ((zipIcindekiDosya = zipDosyasi.getNextEntry()) != null)
{
    do
    {
        String entryName = zipIcindekiDosya.getName();
        if (!zipIcindekiDosya.isDirectory())
        {
            strDosyaAdi = pDizin   entryName;
            dosyayiOlustur(zipDosyasi, strDosyaAdi);//Dosya oluşturulurken dizin de oluşturuluyor.
            zipIcindekiDosyaSayisi   ;
        }
    }
    while ((zipIcindekiDosya = zipDosyasi.getNextEntry()) != null) ;
    System.out.println("Açılan zip dosyası sayısı : "   zipIcindekiDosyaSayisi) ;
}
else
{
    throw new IOException("Açılmak istenen dosya zip dosyası değil!") ;
}
 

Unzip.java ZipiAc.jsp
ya da
İhtiyaç olacak JAR dosyaları
ya da
Bu JAR dosyalarını projenizin olduğu dizindeki WebContent altındaki WEB-INF dizini içine atıp Eclipse üzerinde projenizi sağ tıklayıp yenilemeniz gerekmektedir.
 
Saygılar...
# Kategoriler : Java Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz

Selamlar...

Tomcat'te sanal dizin oluşturmak mümkün. Hem 5.5 hem de 6.0'da aşağıdaki şekilde yapabilirsiniz.
Misal resimlerin olduğu bir dizin var ve diskin E:\Resimler dizininde olsun.
1. Tomcat'in kurulduğu dizinde conf klasörü altında Catalina/localhost klasörleri yoksa bunları oluşturmak lazım. 
2. Bu dizinin altına(Tomcat dizini/Catalina/localhostresimler.xml adında bir xml dosyası oluşturmak lazım.
3. XML'in içeriği de şu şekilde olacak:
<Context path=”/resimler” docBase=”E:/Resimler” debug=”0″ privileged=”true”>
</Context>

4. Tomcat'i yeniden başlatıyoruz.
5. İşlem tamam.

http://localhost:8080/resimler/deneme.gif
şeklinde yazarsak, E:\Resimler\deneme.gif resmine tarayıcıdan ulaşılabilir.

 

Saygılar...

# Kategoriler : Java Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz
Arama
  Ara
Sayfalar
Takvim
<Temmuz 2017>
PSÇPCCP
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456
Bağlantılar