26 Mart 2015 Perşembe

Videoları Seri İşleme - Yazılım

Seçilen bir ayarı, tüm videolara seri olarak işleyen bir yazılımdır. Yazılım bulunduğu klasördeki her video için tek tek bir video işleme programını çağırarak işlemden geçirir. Örneğin videoları seri olarak sıkıştırma işleminden geçirebilir.

Public Class Form1

    'Nesneler
    'txtAyarAdı adlı TextBox
    'cmdBaşla adlı Button
    'cmdDur adlı Button
    'txtIşlenen adlı TextBox
    'DosyaListesi adlı ListBox
    'DenetlemeZamani adlı Timer
    'Uyut adlı CheckBox

    Const ProgExe As String = "C:\Program Files (x86)\Program\Program.exe"
    Const ProgAdı As String = "Program" 'İşlemin bittiği, çalışan programlar listesinden denetlenecek
    Const ProgDizini As String = "C:\Program Files (x86)\Program\"
    Dim AyarAdı As String
    Const AyarUzantı As String = ".vcf"
    Dim AyarSeç As String
    Dim IşlemDizini As String
    Const IşlemDiziniHedef As String = "Islenenler"
    Dim IşlemDosyası As String
    Dim IşlemDosyasıHedef As String
    Dim İşlemSırası As Integer
    Dim Durduruldu As Boolean
    Dim tnk As String 'Tırnak karakteri için

    Private Sub cmdBasla_Click(sender As Object, e As EventArgs) Handles cmdBasla.Click

        DosyaListesi.Items.Clear()
        İşlemSırası = 0
        Durduruldu = False

        'Çağrılacak programın hangi ayarıyla işlem yapacağı seçiliyor.
        If txtAyarAdı.Text = "" Then Exit Sub
        AyarSeç = ProgDizini & txtAyarAdı.Text & AyarUzantı

        'Yazılım bulunduğu klasörü tespit ediyor.
        IşlemDizini = Application.StartupPath

        'Hedef dizin oluşturuluyor.
        If IO.File.Exists(My.Computer.FileSystem.CombinePath(IşlemDizini, IşlemDiziniHedef)) Then
            MsgBox("Hedef dizin var, onu korumak gerekebilir")
            Exit Sub
        Else
            IO.Directory.CreateDirectory(My.Computer.FileSystem.CombinePath(IşlemDizini, IşlemDiziniHedef))
        End If

        'Yazılım bulunduğu klasördeki işlenecek dosyaları buluyor.
        DosyalarıBul(IşlemDizini)
        If DosyaListesi.Items.Count = 0 Then
            MsgBox("Klasörde dosya yok")
            Exit Sub
        End If
       
        SonrakiniIşle()
        DenetlemeZamani.Enabled = True

    End Sub

    Private Sub DosyalarıBul(dbDizin As String)
        Dim dirinfo As New System.IO.DirectoryInfo(dbDizin)
        Dim Dosyalar() As System.IO.FileInfo
        'Bulunduğu üst dizindeki belli türdeki dosyaları arıyor.
        Dosyalar = dirinfo.GetFiles("*.avi", IO.SearchOption.TopDirectoryOnly)
        Dim Dosya As System.IO.FileInfo

        'Dosya adları listeye alınıyor.
        For Each Dosya In Dosyalar
            DosyaListesi.Items.Add(Dosya)
        Next
    End Sub

    Private Sub DenetlemeZamani_Tick(sender As Object, e As EventArgs) Handles DenetlemeZamani.Tick
        'Çağrılmış programın işleminin bitmesi denetleniyor.
        If İşlemSürüyor() Then Exit Sub

        If Durduruldu Then
            DenetlemeZamani.Enabled = False
            Exit Sub
        End If

        Dim oTarihi As Date 'Oluşturma tarihi
        Dim dTarihi As Date 'Değiştirme tarihi

        'Dosya üzerinde işlem bittiğinde yaratılan dosyanın oluşturma ve değiştirilme tarihi özgün dosyadakine eşitleniyor.
        'Böylece tarihler de korunuyor.
        oTarihi = System.IO.File.GetCreationTime(IşlemDosyası)
        dTarihi = System.IO.File.GetLastWriteTime(IşlemDosyası)

        System.IO.File.SetCreationTime(IşlemDosyasıHedef, oTarihi)
        System.IO.File.SetLastWriteTime(IşlemDosyasıHedef, dTarihi)


        İşlemSırası = İşlemSırası + 1

        If DosyaListesi.Items.Count <= İşlemSırası Then
            DenetlemeZamani.Enabled = False
            If Uyut.Checked Then
                'Tüm dosyalar işlendiğinde işaretlenmişse bilgisayar uyutulur.
                System.Diagnostics.Process.Start("Shutdown", "-h")
            End If
            MsgBox("Tüm dosyalar işlendi")
            Exit Sub
        End If

        'Şimdi sonraki işlenebilir.
        SonrakiniIşle()

    End Sub

    Private Sub SonrakiniIşle()
        Dim KBaşarısı As Integer

        Dim Komut As String

        IşlemDosyası = IşlemDizini & "\" & DosyaListesi.Items.Item(İşlemSırası).ToString()
        IşlemDosyasıHedef = IşlemDizini & "\" & IşlemDiziniHedef & "\" & DosyaListesi.Items.Item(İşlemSırası).ToString()

        DosyaListesi.SelectedIndex = İşlemSırası
        DosyaListesi.TopIndex = DosyaListesi.SelectedIndex

        txtIşlenen.Text = CStr(İşlemSırası + 1) & "/" & DosyaListesi.Items.Count & " " _
        & DosyaListesi.Items.Item(İşlemSırası).ToString()

        'Çağrılacak program için işlenecek dosya komutu oluşturuluyor.
        Komut = tnk & ProgExe & tnk & " /s " & _
        tnk & AyarSeç & tnk & _
        " /p " & _
        tnk & IşlemDosyası & tnk & _
        " " & _
        tnk & IşlemDosyasıHedef & tnk & _
        " /r /x"

        'Program çağrılıyor.
        KBaşarısı = Shell(Komut)

        'İşlemSırası = İşlemSırası + 1

    End Sub

    Private Function İşlemSürüyor() As Boolean
        'Çağrılmış program, işlemi bitince kapanacak.
        'İşlemler listesinde görünüyorsa görevi bitmemiş demektir.
        Dim işlem As Process
        For Each işlem In Process.GetProcesses
            If Not InStr(işlem.ProcessName, ProgAdı) = 0 Then
                İşlemSürüyor = True
                Exit Function
            End If
        Next
    End Function

    Private Sub cmdDur_Click(sender As Object, e As EventArgs) Handles cmdDur.Click
        Durduruldu = True
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        tnk = Chr(34)

    End Sub
End Class

Yazılım son kullanıcıya yönelik değildir. Kişisel amaçlar için yazıldığından denetim kodları filan sade tutulmuştur. Elbette kodlarda -Const değişkenlerinde- ufak değişiklikler yapılarak başka programlar çağrılabilir. Sadece videolar değil farklı türdeki dosyalara da seri işlem uygulaması sağlanabilir.

Alıntı: Ve Kayıt :-)

Gates bir teknoloji dehası olabilir ama Seattle'ı ziyaret eden
Jay Leno gülerek şöyle dedi:
"Aslında o da bizlerden pek farklı sayılmazdı. Dün gece
onun çalışma odasına gittim, VCR'ında hala 12:00 yanıp sönüyordu."

Alıntı: Tropik Ekosistem

Dışarıdan gelen birine göre IBM'in içinde bir sera havası vardı.
Sanki çok uzun bir süre dünyayla bağlantısı kesilmiş, yapayalnız
kalmış bir tropik ekosistem gibiydi. Sonuçta da başka hiçbir yerde
bulunmayan egzotik yaşam biçimleri ortaya çıkmıştı. IBM kendi
içine öylesine dönmüş, kendi kuralları ve çelişkilerine öylesine dalmıştı
ki, sağlamlığını yitirmişti ve dışarıdan gelecek herhangi bir
saldırıya karşı koyamaz hale gelmişti.

Önemli olan her şeyin şirketin içinde filizlendiği görüşü, sanırım
çoğu sorunun temel kaynağıydı. Görev yapamama durumunun
ne kadar yayıldığını açıklayabilmek için bazı olguları kısaca tanımlamak
zorundayım.

Müşteri gereksinimlerine karşı genel bir ilgisizliğin yanı sıra,
içsel politikalarla yeterinden fazla ilgilenmek derhal göze çarpıyordu.
Bürokratik altyapı, işbirliğini desteklemek yerine kendi konumunu
korumaya yönelik olduğundan, başlanan projelerin olduğu gi-
bi bırakılmasına izin veriliyordu. Yönetim kadrosu ise hareket etmek
yerine uzaktan gözlemlemeyi yeğliyordu. IBM'in kendine özgü
bir dili bile vardı.

Bunları IBM ile alay etmek için söylemiyorum. Tam tersine,
daha önce de belirttiğim gibi, şirketin özgün güçlerinden birini oluşturuyordu.
Ama tüm canlılar gibi hastalıklara yakalanma riski vardı
ve tedavinin ilk adımı semptomların tanımlanması olmalıydı.

***

Buradaki analiz çok şıktır. Kolay unutulamaz. Bir işletme kitabında değil de sanki bir edebiyat eserinde rastlanabilecek tanımlamalar. Özellikle tropik ekosistem benzetmesi yaratıcıdır. Sıcak serada egzotik yaşam biçimlerinin türemesi... Bunlar şaşırtıcı özellikler sergileyebilir. Ne var ki reel dünyada -reel ekonomide- çok talihli olamayacaklardır. Dünyayla bağlantısı kesilmiştir. Sonunda asıl varlık nedenine, müşteriye ilgi dağılıp gider. Tüm bunlara rağmen “teknolojiye dair tüm önemli fikirleri, nasıl olsa bizden başka bulan olmayacaktır” umudunun korunabilmesi. Bunlar, bir şirket gibi aslında bir insanı da tarif edebilecek sözler. Bunlar, neredeyse Oblomovvari teşbihler. :-)

Alıntı: Elini Eteğini Çekmek :-)

Bütün bunlara rağmen dostu Ştolts onu zaman zaman
insan içine çıkarıyordu; ama o da sık sık Petersburg’dan
ayrılıyor; Moskova’ya, Nijni’ye, Kırım’a, yabancı ülkelere
gidiyordu. O gidince Oblomov evine ve kendi içine öyle
kapanıyordu ki, ancak günlük hayatının dışında büyük olaylar
onu yerinden oynatabilirdi: Böyle olayların da ne olduğu, ne
olacağı vardı.

Zaten Oblomov yaşlandıkça, kendisine bir çocuk
utangaçlığı geliyordu. Dışarı ile bağlantısı azala azala kendi
hayatının dışında kalan her şeyden ürküyor, çekiniyordu. Ama
odasının tavanındaki çatırtılardan korkmuyordu; onlara
alışmıştı. Odasındaki kapanık havanın, bütün gün dört duvar
arasında oturmanın sağlığına gece rutubetinden daha zararlı
olacağını, durduğu yerde yemek üstüne yemek yemenin
insanı yavaş yavaş çökerteceğini düşünmüyordu; çünkü
bunlara alışmıştı; alıştığı şeylerden korkmuyordu. Alışmadığı
şey, hareket etmek, hayata karışmak, adam görmek, öteye
beriye koşmaktı. Fazla kalabalıkta boğulur gibi oluyordu; bir
kayığa binse, bir daha karaya ayak basamayacağı
kuruntusuna kapılıyordu; arabaya binse atlar gemi azıya alıp
kaçacaklar sanıyordu. Bazen delice korkulara düşüyor,
çevresindeki sessizlikten ürküyor, şaşırıp kalıyor, vücudunu
soğuk ürpermeler sarıyordu. Gözleri karanlık bir köşeye
saplanıyor, oradan bir hayalet çıkıverecek sanıyordu.

İşte Oblomov’un dışarı hayatı da böylece sona erdi. Yavaş
yavaş bütün gençlik hülyaları dağılıp gitti; ihtiyarken bile
düşünüp coştuğumuz o içli, hüzünlü, tatlı serüvenlerden elini
çekti.

***

Alıntısını yaptık, tanıtımını da tam yapalım:
Ivan Gonçarov yarattığı karakter Oblomov'la alay etmez. Aslında O'nu sever. En başta Rus aristokrasinin değişime uyum sağlayamayışını başaramayışını sevimli bir dille anlatır.
“Rus edebiyatının hiçbir kahramanı, ne Raskolnikov, ne
Mişkin, ne Prens Andrey, eski Rus insanını, hatta bütün
Doğuluları Oblomov kadar açıklıkla, en özlü yanıyla temsil
etmez. Doğu, belki de ilk defa olarak Gonçarov’un bu büyük
eserinde kendi kendini tanımaya, Batı’dan farkını anlamaya
başlamıştır.”
“Toplumsal bir kaderin Oblomov’u içine düşürdüğü bu
kaçınılmaz uyuşmayı rasgele bir tembellikle karıştırmamak
gerekir. Tembel, işten kaçan ve işsizlikte mutluluğu bulan
adamdır. Oblomov’sa hiçbir zaman işe giremeyen,
işsizlikten de zevk alamayan bir adamdır. Zaman zaman
kendi durumunu açıkça gören Oblomov, üstüne çöken,
hayatını bir bataklığa çeviren bu durgunluğa acı acı isyan bile
eder: “Yarım kalmış bir adam olduğunu, ruh güçlerinin
gelişmeden kaldığını, hayatına bir ağırlığın çöktüğünü
düşündükçe içi parçalanıyordu. Başkalarının zengin ve
hareketli hayatını kıskanıyor; kendi hayatının yolunu ağır bir
kaya parçasıyla tıkanmış, daracık zavallı bir patika gibi
görüyordu. İçinde hiç uyanmadan kalmış, biraz kurcalanmış,
fakat hiçbiri sonuna kadar işlenmemiş birçok imkânlar
olduğunu acı acı seziyordu...” “
Evet, eserin ana fikrini oldukça güzel yansıtmışlar, İş Bankası Kültür Yayınları'nın baskısının çevirenleri Sabahattin Eyüboğlu ve Erol Güney. Daha fazla söze gerek yok. :-)