Python – Dizin İçerisindeki Görsellerin Boyutlarını Küçültme

Bir önceki yazımda bir dizin içerisindeki dosyaların isimlerinin nasıl değiştirileceğini anlatan bir Python script’i paylaşmıştım. Bu yazımda ise bir dizin içerisindeki görsel boyutlarının nasıl küçültüleceğini hakkındaki script’imi (python image resize) paylaşacağım.

Görsel küçültme işlemi için yararlandığım kaynak: https://www.techtrekking.com/how-to-compress-images-using-python/

Şimdi ise bu işlemi bir dizin içerisindeki tüm dosyalar üzerinde nasıl gerçekleştireceğimize bakalım. İlk olarak Python Image Library olarak da bilinen PIL (Pillow) paketini pip ile sisteminize dahil etmeniz gerekiyor.

pip install Pillow

Eğer Python 2.x ve 3.x versiyonlarını aynı sistemde kullanıyorsanız bu işlemi yaparken pip3 kullanmanız gerekebilir.

Yukarıdaki script içerisinde ‘path’ değişkeni ile script’i çalıştıracağımız dizinin adresini alıyoruz ve bu ana dizin yolumuz oluyor. ‘extensions’ değişkeni ise bir liste halinde bu script’ten etkilenmesini istediğiniz dosya türlerini içerisinde tutuyor.

‘files’ değişkeni sayesinde sizin ‘path’ değişkeni altındaki belirttiğiniz tüm klasörlerin içerisine tek tek girerek yine sizin ‘extensions’ listesi içerisinde belirttiğiniz tüm dosyalara erişebilir hale geliyoruz.

Ardından ‘files’ içerisindeki tüm dosyaları tek tek gezerek boyut küçültme işlemini yapıyoruz. Bu işlem için öncelikle resmi seçiyoruz ve seçtiğimiz resmi belirtmiş olduğumuz ‘quality’ ve ‘optimize’ parametreleri ile tekrar kaydetme işlemi yapıyoruz.

Script’i çalıştırdıktan sonra dizin içerisinde yer alan dosyalarınızın boyutlarını arasındaki farkı komut satırın üzerinden görebilirsiniz.

Python – Dizindeki Dosya İsimlerini Topluca Değiştirme

Python dili ve kullanım alanları hakkında bilgi sahibi değilseniz araştırarak ne kadar kuvvetli bir dil olduğunu öğrenebilirsiniz. Şu an çalıştığım yerde Raspberry Pi üzerinden GPIO işlemleri yapmak için, hem masaüstü hem de Raspberry Pi ekranı için görsel arayüzler tasarlamak için ve de bazı hayatınızı kolaylaştırabilecek kod blokları yazarak iş yükünüzü çok kolay bir şekilde azaltabilmenize fayda sağlıyor.

Üzerinde çalıştığımız bir projede içerisinde neredeyse 2.000 JPG, PNG ve PDF dosyası olan bir klasör vardı ve bizden ilk aşama için istenilen şey bu görsellerin hepsinin ismindeki boşlukların “-” ile değiştirilmesi, tüm Türkçe karakterlerin Unicode karakterlere dönüştürülmesi ve tüm görsel adının küçük harf olmasıydı. Belki 20-30 dosya için bu işlemi el ile yapmak daha kolay bir yol olabilir ancak söz konusu 2.000 dosya ise bu iş çok farklı boyutlara gidiyor demektir. Bu işlem için bir Python script’i yazarak tüm işlemi tek bir komut ile yapabileceğimi düşündüm ve aşağıda gördüğünüz script’i yazdım.

Burada yaptığımız şey “path” değişkeni ile script’in bulunduğu klasörün yolunu alıyoruz ve ardından bu yolunda altındaki – tüm alt klasörler de dahil olmak üzere – tüm PDF dosyalarını bir listeye atıyoruz.

Ardından “rename()” fonksiyonu içerisinde “replace” fonksiyonu ile tüm boşlukları “-” ile değiştiriyoruz ve sonra “lower” fonksiyonu ile tüm karakterleri küçültükten sonra “translate” fonksiyonu sayesinde bir üst satırda oluşturmuş olduğumuz “translationTable” içerisinde belirttiğimiz karakterlerin değişimini yapıyoruz.

Eğer PDF değil de JPG veya PNG dosyalarına – veya istediğiniz herhangi bir farklı dosya tipi için – aynı işlemi uygulamak istiyorsanız “files” listesini oluşturduğumuz satır içerisindeki “.pdf” uzantısını istediğiniz uzantı ile değiştirmeniz yeterli olacaktır.

Bu işlem sayesinde belki 1 günden fazla sürecek bir işlemi yarım saatlik araştırmanın ardından yaklaşık 4 saniyede tamamlamış olduk. Bu şekilde kullandığım birkaç script daha mevcut. Önümüzdeki dönemlerde hepsini tek tek paylaşıyor olacağım.

SPI Nedir ve Nasıl Çalışır?

Seri haberleşme ve Paralel haberleşme arasındaki farktan daha önceki yazılarımda bahsetmiştim. Seri haberleşmelerin en çok kullanılanlarından birisi olan SPI yani Serial Peripheral Interface haberleşme protokolünden bahsedeceğiz.

SPI haberleşme protokolü master/slave yapısını baz alarak çalışır ve full-duplex işleme izin verir. SPI haberleşmesi gerçekleştirebilmek için 4 pin gereklidir. Bunlar;

  • MOSI (SDO) (Master Out Slave In)
  • MISO (SDI) (Master In Slave Out)
  • CS (SS) (Chip Select)
  • Clock (SCL, CLK)

Burada bulunan MOSI ve MISO veri aktarımını gerçekleştirdiğimiz pinlerdir. CS pini ile hatta bulunan herhangi bir slave aygıtı seçmemiz sağlanıyor. Clock pini ise seri haberleşme gereği olarak verilerin iletilmesini sağlıyor.

Veri iletimi 8-bit olarak gerçekleşir. CS pinini kullanarak slave seçimini yaptıktan sonra master cihazından göndermek istediğiniz veriyi MOSI pinini Lojik 0 ve Lojik 1 şeklinde binary olarak değiştirerek hatta yazarsınız. Her bir bit için CLK pinini 0 – 1 yapmanız yeterlidir. Aşağıdaki resimde daha net bir şekilde görülmektedir.

Kaynaklar:

http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf

https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi/all

https://ondergormez.files.wordpress.com/2015/01/spi-iletim-yapisi.png

Yeni Yazıcımız: Tevo Tarantula

Bu yazıyı yazmaya başladığımda Ocak ayıydı ancak bir türlü tamamlayamadım. Artık yeni yazıcımız demeyelim de uzun kullanım testimiz diyelim. 2016’da 1 adet Prusa i3 modeli kendi topladığımız yazıcımız vardı. 2017 yaz başında bir tane de Prusa i3 model metal şaseye sahip yazıcı satın aldık. 3 ay kullandıktan sonra artık bu 2 yazıcının da kalibrasyonları, kaymaları, arızalarının bize çok fazla vakit ve para kaybettirdiğinin farkına vardık. O kadar fazla uğraştırıyorlardı ki gönül rahatlığı ile bir baskıyı bırakıp dışarı çıkamıyordunuz.

Biz de Burak’la birlikte elimizdeki iki aleti de satıp yeni bir yazıcı almaya karar verdik. Biraz araştırdıktan sonra yeni aletimizin Tevo Tarantula olmasında karar kıldık. Aşağıda da resimlerini gördüğünüz aleti sipariş etmek için uygun bir vakit kollamaya başladık. Siparişi vereceğimiz sıralarda “Black Friday”in yaklaştığı farkettik ve indirim olacak diye 11 Kasım tarihini beklemeye başladık. 11 Kasım günü siparişimizi tamamladık ve siparişimiz 25 Kasım günü elimize ulaştı. Satıcı firmaya 194$, gümrüğe ise bu tutarın %20’i olan 38.8$ ödeme yaptık. O günkü dolar kuru ile cebimizden yaklaşık ola  rak 890-900 TL para çıkmış oldu. Gümrük sürecinde DHL firması ile muhattap olduk ve hiçbir sıkıntı olmadan, gümrüğe geldikten hemen sonra ödememizi yaparak kargomuzun yola çıkmasına yardımcı oldular.

Yeni Yazıcı: Tevo Tarantula

Aslında ana yapıya baktığınız zaman Tevo Tarantula da Prusa i3 model alınarak yapılmış bir yazıcı. Ama farklı olan kısımları, farklı tasarlanmış bir kart kullanıyor. Burda bahsetmek istediğim konu, üzerinde bulunan kartı istediğiniz yazıcıya takıp kullanabiliyorsunuz, onun da üzerinde Atmega2560 çipi var. Aslında bizim kullandığımız Arduino Mega’dan bir farkı yok, ancak üzerine ekstra bir RAMPS kartı takmadan, tümleşik olarak motor sürücüleri ile birlikte geliyor ve sizin tek yapmanız gereken şey motor kablolarının bağlantısını yapmak oluyor.

Onun dışında ray yapısında Prusa i3 modeli lineer rulmanlar kullanırken Tevo Tarantula’da tekerlek rulmanlar kullanılmış. Bunun artı ve eksileri var. Lineer rulman sistemini belirli periyotlarla yağlamamız gerekiyordu anca teker sisteminde buna ihtiyaç duymuyoruz. Ancak tekerin sıkıntıs da havada tozlar tekeri ve yüzük rulmanı dolduruyor.

Tabla kısmında Prusa i3 üzerinde tüm tablaları denemiştim, cam, bant, ısıtıcı tabla, düz tabla, PEI tabla. Bu yöntemlerin de hepsinin birbirinden farklı eksi ve artıları var ama burda bunlardan bahsetmeyeceğim. Tevo Tarantula’da ise gönderdikleri tabla yeterli oluyordu ama ben baskıları kaldırırken tablaya zarar vermemek için PEI tabla alarak üzerine yapıştırdım ve ısıtıcı tabla ile birlikte kullanıyorum. Herhangi bir kalkma sorunu yaşamadığımı söyleyebilirim. Hatta çok yapışmadan dolayı kaldırırken kırdığım parçalar da oldu.

Tevo’nun dikey ekseni bir yere sabitlenmediği için biraz sallantı yapabiliyordu ve biz de bu sorunu çözmek için Thingiverse üzerinden bulduğumuz destek parçaları ile almış olduğumuz sehpaya sabitledik. Şu an sallantılar %90 oranında azaldı. Ayrıca sehpamızın üzerine LCD ekranı koymak için bir parça basarak onu da sabitledik. Prusa’da LCD ekranımız olmadığı için sadece bilgisayara bağlı olarak baskı alabiliyorduk ve bu bizi yazıcıya bağlı kalmak zorunda bırakıyordu. Ama artık hafıza kartına GCODE dosyasını atıp baskıyı başlatıp evden laptop ile çıkabiliyoruz. Bu çok büyük bir avantaj sağladı. Sürekli satışını yaptığımız parçaların dosyaları hafıza kartının içerisinde duruyor, evde olmadığımız zamanlarda eğer sipariş gelirse evde olan birisini arayarak direk baskının başlamasını sağlayabiliyorsunuz.

Aldığımız baskıların kalitesinin çok çok çok ekstrem bir şekilde değişim olduğunu söyleyemem. Ama az da olsa gözle farkedebileceğimiz bir kalite artışı oldu. Kalitenin yanı sıra en önemli avantajı güven oldu. Artık baskının %90 ihtimalle biteceğini bilerek baskı yapıyoruz. Bu uzun baskılar için de geçerli, gönül rahatlığıyla baskı alabiliyoruz.

Burun Kıkırdağı Eğriliği Ameliyatı Oldum

Uzun zamandır çektiğim burundan nefes alamama sorunum vardı. Sol burundan bir nebze nefes alabilsem de sağ burundan neredeyse sıfıra yakın bir nefes alabiliyordum. Burundan nefes alamamanın getirebileceği tüm sorunları yaşamaya başladım. Gece uyuduğum uyku, uyku değildi. Bazen nefes alamadığım için uyanıyordum, fazlasıyla horlamaya başlamıştım ve horladığımı hissedebiliyordum. Spor yapmaya başladıktan çok kısa bir süre sonra vücut nefesi ağızdan almamdan dolayı yığılıp kalıyordu. Yemek yerken insan hiç çiğnemeyi bırakıp nefen alma molası verir mi? Ben veriyordum, çünkü burundan nefes yok, tüm oksijeni ağızdan almanız gerekiyor ve çiğnemeye ara verip, nefes alıp bir sonraki nefese kadar çiğnemeye devam ediyordum. Geçtiğimiz son 6 ayda neredeyse hiç iyileşemedim, sürekli griptim. Çünkü burundan nefes alamıyorum, tüm nefes ağızdan alınıyor ve yanımda birisi hapşursa hasta oluyordum.

Kitap okumak tamamen bir eziyet haline gelmeye başlamıştı. Nefesi ağızdan alırken aynı anda kitabı takip etmek çok zor bir şey, çok fazla dikkat dağıtıyordu. Artık bu durumun son aşamasına geldiğini anladım. Ama bir sorun vardı, ameliyat olmaktan korkuyordum 🙂

Ameliyat Kararı

Ocak ayında apartmanımızdan bir abi benimle aynı sorunu yaşadığı için ameliyat olmuştu ve onunla konuşarak artık tüm korkularımı yendim. “Ben yaz tatiline gittiğim zaman ilk işim ameliyat olmak olacak.” dedim kendi kendime.

Memlekete geldim, 2 gün dinlendikten sonra 3. gün, perşembe sabahı saat 7:45’te hastaneye gidip sıra aldım – randevu sisteminden birkaç gün daha sonraya veriyordu randevuyu, ben beklemek istemedim. Bir de ameliyat olan abi doktorun ameliyat günlerinin cuma günü olduğunu söylemişti, ben de bu cumayı kaçırıp da önümüzdeki haftaya kalsın istemedim. – Doktora göründüm, doktor daha önceki göründüğüm doktorlar gibi burun kıkırdağımda eğrilik (C tipi Septum Deviasyonu) olduğunu söyledi, basit bir operasyonla (Septoplasti ameliyatı) sorun kalmayacağını söyledi ama ameliyat günlerini salı günü ile değiştirdiği için salı günü yapabileceğini söyledi. Benim de iş durumumdan dolayı çok fazla tatilim yoktu ve rica ettim, cuma günü ameliyathane boş olduğu taktirde beni alabileceğini söyledi. Ramazan ayı içerisinde olduğumuz için hastanede çok fazla hasta yoktu ve cuma günü bana sıra geldi.

http://www.nazimcerkes.com/burun-egriligi-septum-deviasyonu/

Ameliyat Günü

Ameliyat masasını gördüğüm zaman çok korkacağımı falan düşündüm ama bu sorundan kurtulup artık daha rahat bir hayat geçireceğimi bilmek daha ağır bastı ve hiçbir korku duymadan ameliyata girdim. Yaklaşık 1.5 saat sonra tekrar çıktım. Genel anestezi uygulamışlardı. Kendime geldiğimde burnumda bir bandaj vardı ve neredeyse hiçbir ağrım, sızım yoktu. Ertesi sabaha kadar müşahede altında tuttular ve daha sonra eve çıktım. Burnuma silikon tampon takılmıştı. Silikon tamponlar, eski tip, nefes almayı engelleyici, alınırken oldukça acı veren bez tamponların yerine kullanılmaya başlanmış. Esnek bir yapısı var ve ortasında bir boru var. Bu boru sayesinde az da olsa nefes alabiliyorsunuz ve verilen tedavi yöntemlerinden birini o sayede uygulayabiliyorsunuz.

Tampon Çıkartılması

Doktor çarşamba günü kontrole gelmemi ve tamponları çıkartmak için bakacağını söyledi. Çarşambaya kadar hiç ağrım, sızım, yüzümde şişlik, morluk vs. olmadı. Yüzde şişlik ve morluk olması durumu, ameliyat sırasında burun etine müdahele yapılması gerekirse oluyormuş. Ama bende ete bir müdahele olmadığı için öyle bir durum söz konusu olmadı. Çarşamba doktor çıkartmak istemedi, araya bayram tatili giriyordu ve o yüzden önümüzdeki pazartesi gününe kaldı. Pazartesiye kadar da tamponla gezdikten sonra pazartesi tamponları aldırmaya gittim. Aslında beni ameliyattan çok tampon aldırma konusu korkutuyordu. Çünkü okuduğum her yerde, izlediğim her videoda, konuştuğum her burnundan ameliyat olmuş insandan bunu duydum. “Tampon alınırken sanki beynini alıyorlarmış gibi acı veriyor.” Kesinlikle böyle bir şey olmadı. O kadar acı olmadan, o kadar hafif bir şekilde çıktı ki o tampon çok şaşırdım. Çünkü doktor tam çıkartmaya başlayacağı zaman ben kendimi ve oturduğum koltuğun kolunu o kadar sıkmıştım ki kaslarım ağrımıştı ama bir sinek ısırığı canınızı daha çok yakıyor. Zaten sağ taraftakini çıkarttıktan sonra ben acımadığını anlayıp kendimi bıraktım, sol taraftakini çıkartırken yüzüm gülüyordu.

http://www.kulakburunbogaz.info/Septoplasti-SMR-AmeliyativeAmeliyatSonrasiHastaBakimi.html

Ameliyat Sonrası

Evet, artık normal hayata dönebildim. Artık burnumun iki deliğinden de sorunsuz bir şekilde nefes alabiliyordum. Bu gerçekten bambaşka bir hismiş. Şu an aldığım nefesi, vücudumun rahatlamış halini gördükten sonra ben daha önce nasıl yaşıyormuşum diye sormaya başladım. Gerçekten burundan nefes almak çok çok çok çok önemli bir olay. Yemek yemem, spor yapmam, çalışmam, uyumam, kitap okumam, hepsi değişti.Şu an çok rahatım ve iyi ki ameliyat olmuşum diyorum. Burnun dış görünüşünde ise hiçbir değişiklik olmuyor, çünkü yapılan işlen sadece iç tarafta yapılıyor. Buradan ameliyat doktorum Sayın Murat Doğrusöz’e teşekkür ediyorum.

Sözün özü, eğer burnunuzdan veya sağlığınızı kötü etkileyen bir rahatsızlığınızdan şikayetçi iseniz ve tek çözümü ameliyatsa, kesinlikle olmanızı tavsiye ederim.

Sağlık kadar önemli bir şey yok.

UART Nedir ve Nasıl Çalışır?

Daha önce Seri Haberleşme Protokolleri (UART, SPI, I2C) yazımda küçük bir değinme ile bahsettiğim haberleşme protokollerine biraz daha detaylı olarak girmeye başlayacağımız serimizin ilk yazısı olan “UART Nedir (USART Nedir) ve Nasıl Çalışır?” yazısı ile karşınızdayım.

UART (Universal Asynchronous Receiver Transmitter), bilgisayar ve mikrokontroller veya mikrokontroller ve çevre birimler arasında haberleşmeyi sağlayan haberleşme protokolüdür. Asenkron olarak çalıştığı için herhangi bir “clock” ihtiyacı duymaz. USART (Universal Synchronous Asynchronous Receiver Transmitter) ise hem senkron hem de asenkron olarak çalışabilir. UART’a göre daha gelişmiş bir protokoldür. Haberleşme mantıklı aynı şekilde çalışır ancak USART aynı zamanda senkron haberleşmeleri de gerçekleştirebilir. Yeni çıkan bir mikroişlemcinin datasheet’ine baktığınız zaman bu birimleri genelde USART birimi olarak görüyoruz çünkü USART aynı zamanda UART’ı da kapsayan bir birim olarak tasarlanmıştır.

USART, 5 ve 9 bit arası data uzunluğuna sahip veriyi taşıma özelliğine sahiptir. Ancak genel olarak 8 veya 9 bitlik kullanımlar tercih edilir.

UART – USART Haberleşmesi

UART haberleşmesini gerçekleştirirken ilk olarak baudrate (veri taşıma hızı) ayarlanması gerekir. Veri taşıma hızı çok çeşitli aralıklarda olabilir ancak piyasada yaygın olarak kullanılan baudrate’ler 4800, 9600, 57600, 115200 ve mikroişlemciler için çok fazla tercih edilmese de 921600. (921600 genelde hızlı işlem gerektiren yerlerde kullanılır.) Baudrate bizim verimizin saniyede ne kadarlık byte’ını taşıyacağını belirlememize yarar. Örneğin veri taşıma hızımızı 115200 seçersek bu bizim için saniyede yaklaşık olarak 11520 byte veri iletimi sağlayacaktır.

Veri iletimi için aşağıdaki görseldeki gibi bir yapı kullanılır. Yani haberleşme işlemimiz bir başlangıç bitinden sonra data bitleri, ardından parity biti ve son olarak da bitiş biti gönderilerek sonlandırılır. Bu işlem sırasında data uzunluğu ve parity biti opsiyonel olarak değişkenlik gösterebilir.

Bu haberleşme tipini kullanabilmemiz için alıcı ve vericinin veri taşıma hızlarının (baudrate) aynı olması gerekiyor (veya birbirine çok yakın değerler olması gerekiyor.) Bunun sebebi ise aktarım sırasında oluşabilecek hataları minimuma indirmek. Hata payları tolere edilebilir seviyede olması taktirde bir sorun yaratmayacaktır (~%1-3)

Yukarıdaki görselde gördüğünüz gibi haberleşme gerçekleşmesi için ilk önce verici tarafında logic 1 (HIGH) seviyesinde bulunan iletişim hattı iletişimin başlaması için logic 0 (LOW) seviyesine çekilir ve bu bizim Başlangıç Bit’imizi (Start Bit) temsil eder. Ardından göndermek istediğimiz verileri başlangıç bitinin arkasına ekleriz. Eğer parity bitine sahipsek onu da ekledikten sonra son olarak iletişime sonlandırmak için gerekli olan bitiş bitini (stop bit) HIGH seviyesine çekerek iletişimin sonlandığını alıcıya bildiririz. Biz verici kısmında bu işlemleri yaparken alıcı da aynı şekilde işlem yapar ve sadece bizim gönderdiğimiz dataları kendi UART Data Register’ına yazar.

Nasıl Kullanabiliriz?

USART haberleşmesi yapabilmek için mikroişlemcimizdeki daha önceden tanımlanmış olan pinleri kullanarız. Bunun için ya USB-TTL dönüştürücü ya da RS232 modülü kullanırız. Her iki modülü de RX-TX pinleri mikroişlemcimizin RX-TX pinleri ile ters olarak bağlanacak şekilde bağlantısını yaptıktan sonra iletişimi başlatabiliriz. (Yani mikroişlemci TX —> Modül RX, mikroişlemci RX —> Modül TX). RS232 ile daha ayrıntılı bilgi için ilgili yazımı ( RS232 Nedir? ) inceleyebilirsiniz.

Kaynaklar:

http://enderunix.org/docs/hard_soft-uart.pdf

https://learn.sparkfun.com/tutorials/serial-communication/uarts

https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter

http s://www.slideshare.net/canezgiaydemir/uart-ve-seri-haberleme

http://www.mcu-turkey.com/wp-content/uploads/2012/11/maximsoftuartfig1.jpg

http://www.bb-elec.com/Images/whitepaper-images/DataByte.aspx

WordPress SMTP Ayarları – Contact Form

Yakın zamanda yaptığımız bir websitesinde iletişim ve diğer formlar için Contact Form eklentisini kullanmamız istendi. Ancak bu eklentiyi kullanırken “Failed to send your message. Please try again later or contact the administrator with another method.” (İletinizi gönderme başarısız oldu. Lütfen daha sonra tekrar deneyin ya da yönetici ile başka bir yöntemle iletişime geçin.) şeklinde bir hata ile karşılaştık. Biraz araştırma yaptıktan sonra sorunun WordPress‘in SMTP ayarlarından kaynaklandığının farkına vardık. Bu da hosting firmamızın mail fonksiyonlarını kapatmasından kaynaklanıyor. Kapatılmadığı taktirde ciddi bir spam mail tehlikesi ile karşı karşı kaldığımız için otomatik olarak kapalı olarak geliyor ve biz bu ayarları yapılandırarak artık özel olarak kullanabilir hale geliyoruz.

SMTP açılım olarak Simple Mail Transfer Protocol (Basit Posta Aktarım Protokolü) demektir. Yani sizin gönderdiğiniz bir mailin karşı tarafa iletilmesi geçmesi gerek prosedürlerinde büyük bir rolü olan yapıdır. Bazı sunucularda SMTP ayarlanmamış olarak gelebiliyor. Bizim bunu kullanabilmemiz için ayarlarını yapmamız lazım.

Bu ayarları yapmak için ben basit bir eklenti kullanarak duruma müdahele ettim. Eklentimizin adı “WP Mail SMTP“. Eklentiyi kurduktan sonra Ayarlar sekmesi altında bulunan eklenti kontrol panelini açıp ayar yapmaya başlayabiliriz.

Öncelikle “From Email” ve “From Name” kısımlarını doldurup, daha sonra kendi sunucumuza üzerinden iletişim sağlayacağımız için “Mailer” kısmının altında yer alan “Other SMTP” seçeneğini işaretliyoruz. Bu işaretlemeyi yaptıktan sonra bize aşağıda bir alan açılıyor. O alanda yer alan bilgileri doldurmamız gerekiyor. Kendi sunucumuzun bize vermiş olduğu SMTP host ve port numaralarını girdikten sonra şifreleme yöntemimizi seçmemizi istiyor. O kısmında altında yazdığı gibi TLS önerilen şifreleme yöntemi olarak geliyor. Ama eğer size SSL sertifikasına sahipseniz ve korumanızı daha da kuvvetlendirmek istiyorsanız bu seçeneği seçerek ilerleyebilirsiniz. Biz TLS şifreleme yöntemini seçerek devam edeceğiz.

TLS seçildikten sonra alt kısmında yer alan “Authentication” alanı otomatik olarak kapalı olarak geliyor. Kullandığımız sunucularda uzaktan bağlantı yapabilmek için kullanıcı adı ve şifrelerini biliyor ve sisteme tanıtıyor olmamız lazım. Bu yüzden bu ayarı etkinleştirerek açılan alan içerisine kullanıcı adımızı ve şifremizi yazıyoruz. Ardından yine eklentinin bizi bilgilendirmek için verdiği kodu wp-config.php dosyamıza yapıştırıyoruz ve “your_password” alanını kendi şifremiz ile değiştiriyoruz.

define( 'WPMS_ON', true );
define( 'WPMS_SMTP_PASS', 'your_password' );

Ayarları kaydettikten sonra artık sunucumuz mail gönderme işlemlerine hazır hale geliyor.

RS232 nedir?

RS232 bir haberleşme standartıdır (communication standart). RS, Recommended Standard‘ın kısaltılmış halidir. Kısa mesafede haberleşme sağlamak için 1960’ların başlarında ortaya çıkmıştır. Şu an kullanılan standart ise 1987’de standart haline getirilmiştir.

Yapılan çalışmalar kabloların kapasitansından dolayı 15 metre üzerinde yapılan haberleşmelerde verinin bozulmalara uğradığını göstermiş. Ancak düşük kapasitanslı kablolar ile bu haberleşmenin 300 metreye kadar sağlanabildiği görülmüş. RS232 haberleşme standartı  seri asenkson olarak çalışmaktadır. Aynı zamanda ‘tam çift yönlü (full duplex)’ olarak çalışabilmektedir.

RS-232 iletimi yapılarken veriler ASCII karakterlerininden dolayı 8 bitlik karakterler halinde iletilmektedir. İletim seri bir şekilde gerçekleşmektedir. Gönderilecek veri gönderici tarafından belirli bir formatta hazırlanır ve hatta iletilir. Bu işlem yapılırken alıcı sürekli olarak hattı dinlemektedir. Alıcı, başlangıç bitini (start bit) gördükten sonra bitiş bitine (stop bit) kadar olan aralıktaki verileri okur.

Aslında hepimizin bilgisayarında, televizyon alıcılarımızda (receiver), modemlerimizde RS232 çıkışları mevcut. Şu an kullanılan standart RS232 kablosu ve çıkışını aşağıdaki görselden inceleyebilirsiniz.

Kaynak: https://cdn.sparkfun.com//assets/parts/1/4/9/00449-01a.jpg

Kaynak: https://images-na.ssl-images-amazon.com/images/G/02/aplusautomation/vendorimages/c25d08b1-7aa6-41a5-89b6-851db089ef4e.jpg._CB292758830_.jpg

 

RS232 neden kullanılır?

RS232, TTL seviyesinde (Transistor – Transistor Logic) iletim yapmaz. Gerilim aralığı +12v ve -12v arasındadır. Bilgisayarın binary sayı sisteminde 0 değeri 0V’u, 1 değeri ise 5V temsil etmektedir. Buna aynı zamanda TTL seviyesi de denir. Ancak veri iletimini TTL seviyesinde gerçekleştirmek oldukça risklidir. Çünkü TTL seviyesi gürültülerden çok çabuk etkilenip bozulmaya uğrayabilir. Burda devreye – kısa mesafeler için – RS232 giriyor. RS232, TTL seviyesinde iletilmiş olan veriyi kendi gerilim aralığı olan +12V ve -12V aralığına çekerek dışardan gelecek olan gürültülerden etkilense bile veri kaybolması yaşanmamasını sağlıyor.

Kaynak: http://www.best-microcontroller-projects.com/image-files/xhow-rs232-works-tx-logic-rs232-diag.png.pagespeed.ic.ymGeZe71tB.png

Kaynak: http://4.bp.blogspot.com/-oe0ZJvhNrBw/TdEM50BeSQI/AAAAAAAAgEQ/0uL8BJdElLc/s1600/RS232+TTL.png

Mikroişlemciler kullanarak yaptığınız projelerde bilgisayar ile uyumlu kablolar (RS232’den USB’ye dönüştüren kablolar da mevcut) kullanarak UART biriminden bilgisayarınızdaki seri monitöre (Real Term, Tera Term veya Arduino Seri monitörü bile olabilir) verileri aktarmanız mümkün. Herhangi bir görüntü aygıtı (LCD gibi) kullanmıyorsanız RS232 bu konuda size oldukça kolaylık sağlayabiliyor.

Kaynaklar:

 

2018 Yılı Hedeflerim

Şirketler sene sonlarında gelecek senenin planını yaparak önlerindeki sene için hazırlanırlar. Bu planların arasına hedefleri de dahildir. “Gelecek sene pazar hacmimizi X katına çıkartacağız.” gibi hedefler koyarak hem çalışanları motive ederler hem de kendilerine hedefler doğrultusunda bir rota çizmiş olurlar.

2 senedir olduğu gibi bu sene de hedefler listemi oluşturup kendimi motive edeceğim. Geçen sene koymuş olduğum hedeflerin bir çoğunu yerine getirmiş olmam, bu sene o hedeflerimi biraz daha üst seviyeye çıkartabileceğim anlamına geliyor. Bu seneki hedef listem:

  • Şu an çalıştığım şirkette güzel projelere imza atmak
  • Çalışırken elde ettiğim tecrübeleri işten bağımsız bir projede birleştirmek
  • Yeni aldığımız yazıcı ile mutlu mesut bir sene geçirmek
  • Instagram üzerinden @13boyut hesabını canlı tutarak satış yapabilmek
  • Programlama ve elektronik anlamda kendimi çok daha fazla geliştirmek
  • Herenkeskin.com‘u canlı tutmak
  • Günlük 500 kişi ziyaret kapasitesine ulaştırabilmek (Çok düştük, eskiden böyle miydi? Günlük 1000 rahattı.)
  • Front-end’e vakit ayırıp projeler çıkartabilmek
  • En az 20 kitap okumak
  • Her gün en az 20 sayfa kitap okuyabilmek
  • Okulu sıkınıtısız devam ettirebilmek
  • Güzel sözlerin paylaşıldığı bir site – uygulama yapmak (Geçen seneden)
  • 87 kiloda seneyi bitirmek (Geçen seneden)
  • Ve tabiki yine ehliyet almak

Listeme giren ve çıkan veya değişen bazı maddeler var. Bu seneki hedeflerim konusunda ise geçen sene göre daha kararlıyım. Son 3 hedefim hariç, hepsini tamamlayabileceğimi düşünüyorum. Bunun için çalışmaları tam gaz devam ettiriyorum.

Umarım koyduğum hedeflerin hepsini 2018 yılı içerisinde tamamlarım ve 2019 yılı yaklaştığı zaman yine bir gönderi paylaşarak size ben bu listedekilerin hepsini yaptım diyebilirim.

C dili BCD to Decimal – Decimal to BCD çevirimi

Yapmakta olduğumuz bir projede kullanacağımız RTC modülü için zaman verilerini decimal değerden BCD (Binary Coded Decimal) formatına çevirmemiz gerekiyordu. Bunun için araştırma yaparken değişik yöntemler gördüm. Bizim projemiz için en uygun yapıyı ise bulamadık. Biz de kalem kağıdı elimize alıp sıvadık kolları.

Bu işlemi itoa() fonksiyonunu kullarak da kolayca yapabiliyorsunuz, ama mikrokontroller ile çalıştığımız için bize en az boyuta sahip kod lazım oluyor. O yüzden bir arayış içerisine girdik.

Projede bize lazım olan yapı için 2 basamaklı sayıların dönüşümünün yapılması yeterli olacaktı. Biz de bu yüzden kodu şişirmeden, sadece işimize yarayacak kadar olan yapıyı oluşturduk. Eğer size kullanmak istediğiniz yerde 2’den fazla basamaklı sayılar için dönüşüm yapmak isterseniz küçük matematik hesaplamaları ile bunu yapabilirsiniz. Biz bu yapı için daha büyük sayılara göre denemelerimizi yaptık ve düzgün sonuçlar aldık.

Aşağıdaki kodu kullanarak Decimal to BCD (Binary Coded Decimal) dönüşümünü yapabilirsiniz.

https://gist.github.com/d72fdcf96426f1b235453513e71101ab

Aşağıdaki kodu kullanarak BCD to Decimal dönüşümünü yapabilirsiniz.

https://gist.github.com/adb3353092c3394d1c5217a05540f2d9

C ve C++ dillerini kullanarak Decimal to BCD ve BCD to Decimal dönüşümlerini yapmanız bu kadar kolay.