31 Mayıs 2021 Pazartesi

git tag seçeneği

Giriş
Açıklaması şöyle
In Git, tags are helpful, and you can use them to manage the release. You can think of a Git tag like a branch that will not change. It is significantly more important if you are making a public release.
Örnek
Şöyle yaparız. Bu bir bash metodu ve betiğe girilen tag'i hem yerel hem de uzak depodan siler sonra tekrar yaratır.
function update_remote_tag() {
  local TAG=$1
  if [ -z "$TAG" ]; then
    echo "Usage: update_remote_tag <tag>"
    return 1
  fi 

  # Delete local tag
  git tag -d $TAG

  # Create new local tag
  git tag $TAG

  # Delete from remote. upstream is the remote repo
  git push upstream :refs/tags/$TAG
  
  # Push to remote
  git push upstream $TAG
}
-a seçeneği
Örnek 
Şöyle yaparız
$ git tag -a v1.0.0
Eğer bir tag'i doğrulamak istersek şöyle yaparız
$ git verify-tag <tag>
-l seçeneği
Tag'leri listeler
Örnek
Şöyle yaparız
git tag -l
O tag'i checkout etmek için şöyle yaparız
git checkout tags/release-6.0.0 -b orcun
-m seçeneği
Örnek
Şöyle yaparız
git tag -a 21.01.0 -m "tag: release"
--points-at seçeneği
Örnek
Şöyle yaparız.
git tag --points-at HEAD

git cherry-pick seçeneği

Giriş
Açıklaması şöyle
It's a robust command and allows you to pick any commit from any branch and apply it to any other branch.
Örnek
Açıklaması şöyle
Cherry picking is a very powerful feature of git. It allows you to pick specific commits from one branch and merge it into another branch. So let’s say develop branch is 3 commits ahead of master, out of those 3, just 2nd commit need to be merged on master. Here is how you would handle this situation in git

Step 1: Checkout to the master branch
Step 2: Use git cherry-pick <commit-hash> to merge the specific commit to the master branch
Note: You can view all the commits you have made and their hashes by using the git log command

Now later on if you want to merge the rest of the develop branch with master branch simply run the following command:

git rebase develop
Örnek
Şöyle yaparız
$ git cherry-pick <commit-hash>
commit hash'i öğrenmek için git log seçeneği kullanılabilir.

--abort seçeneği
Örnek
Şöyle yaparız
$git cherry-pick --abort

28 Mayıs 2021 Cuma

Voice Recognition

Giriş
Modern yöntemlerle eski yöntemler arasında fark var.

Modern Yöntem
Neural Networks kullanılıyor

Eski Yöntem
Açıklaması şöyle
I did basic voice recognition on an Atari ST (8MHz 68000, 8-bit mono sampling1). If it could be done on a 1985 desktop2 then it should be no problem for an early naughties cell-phone3.

IIRC4, the algorithm was roughly as follows:

- Sample the audio (8-bit mono @ 22kHz?)
- Split the audio into short (½ second?) pieces
- Do an FFT on each piece. The results are placed into a 2-dimensional array (piece #, binned frequency intensity)
- Compare the array against a set of reference patterns (one for each recognizable word, stored in the same format) and return the closest match (along with the strength of the 
match). A diagram illustrating this is at the end of this answer.

No neural networks were used (though I undoubtedly experimented with them), just basic arithmetic. Training was done by recording the same word multiple times and then averaging the resulting arrays. Note that the algorithm only worked for discrete words, not continuous speech.
Algoritma için  şekil şöyle



27 Mayıs 2021 Perşembe

Domain Driven Design - Application Services

Giriş
Domain Driven Design servisleri iki çeşit olarak sınıflandırıyor

1. Application Services

Application Services - Dış Dünyaya Sunulan Servisler
Açıklaması şöyle.
Application Services are the services used by the outside world which may have representations of data. A example of an application service is a database CRUD operation.
Örnek
Application services olarak Real-time stock control alanından şunlar verilebilir
payments microservices
ensure specific focus on consistent integration with the retail organizations preferred payment infrastructure

promotions microservices
allow the retail organization to provide consistent integration with price and supplier fluctuations in stock they are maintaining.

available to sell microservices
providing retail locations and suppliers with consistent integration to stock information, such as depleted stock items, updating stock items, and more

retail processes 
where long running processes can be captured, implemented, and leverage tasks for retail associates at the store level integration microservices and integration data microservices

26 Mayıs 2021 Çarşamba

Electro-optical Systems - Elektro optik Sistemler

Giriş
Açıklaması şöyle
Electro-optical, or EO, systems are systems that utilise a combination of electronics and optics to generate, detect, and/or measure radiation in the optical spectrum. 
Kameralar
EO sistemlerde farklı tiplerde kameralar bulunur. Örneğin Day TV, Thermal, Night Vision kameralar gibi.

Kameraların focus vs. gibi özellikleri ayarlanabilir.

Electro-optical Targeting Systems
EO sistemdeki lazer işaretleyici ile bir hedefin işaretlenmesidir.

ASELSAN Denizgözü, Kuzgun, Kırlangıç gibi ürünler denizde kullanılan EO sistemler

25 Mayıs 2021 Salı

Audio Kavramları

Audio Format
Açıklaması şöyle
An audio format is basically defined by three different things: sample rate, bit depth and compression type. The compression type can be either lossless (WAV, PCM, FLAC, ALAC) or "lossy" (AAC, MP3, OGG, MQA, etc). Lossy compression works by shaping the quantization noise so it's masked by the remaining content and inaudible. Lossy formats are characterized by their bit-rate: the higher the bit-rate, the less quantization is done.
AAC Format
Açıklaması şöyle
aac files are just a "raw" audio stream, they do not support MP3-style tag embedding because AAC is meant to be used with a separate "wrapper" container format to carry those tags instead. Typically MP4 container files (.mp4 or .m4a) are used for AAC audio.
Örnek
m4a olarak yeniden paketlemek için şöyle yaparız
ffmpeg -i Foo.aac -c:a copy Foo.m4a

24 Mayıs 2021 Pazartesi

Apache Airflow - Workflow Engine

Giriş
Açıklaması şöyle
Apache Airflow is an open-source workflow engine created by Airbnb. It allows users to create their workflow definitions using Python code. The workflow can be executed based on a specified time interval (Cron based) or by an external (or manual) trigger (via the cli or web UI for example). Airflow also provides a UI in which you can monitor the progress of an execution
Açıklaması şöyle
Apache Airflow is an orchestration tool that helps you to programmatically create and handle task execution into a single workflow. It then handles monitoring its progress and takes care of scheduling future workflows depending on the schedule defined.

Workflows are created using Python scripts, which define how your tasks are executed. They are usually defined as Directed Acyclic Graphs (DAG).

The workflow execution is based on the schedule you provide, which is as per Unix cron schedule format. Once you create Python scripts and place them in the dags folder of Airflow, Airflow will automatically create the workflow for you.
YAML
Normalde Apache Airflow için Python kodu yazmak gerekir ama daha karmaşık şeyler için şablon YAML dosyalarını okuyan Python kodları kullanılıyor. Açıklaması şöyle. Hatta Kestra bu işi daha kolay hale getiriyor
Engineers who treat Apache Airflow deployments seriously often build a config system on top of it, e.g., in the form of templated YAML files. This way, the end users don’t need to write a boilerplate configuration in Python DAGs
Örnek
Burada ki örnekte Apache Airflow, Airbyte sunucusundan veriyi okuyup, Apache Spark'a gönderiyor

10 Mayıs 2021 Pazartesi

National Maritime Electronics Association - NMEA ECDIS Mesajları

Giriş
Electronic Chart Display Information System (ECDIS) haritaları gösterir. Açıklaması şöyle
ECDIS is a development in the navigational chart system used in naval vessels and ships. With the use of the electronic navigation equipment, it has become easier for a ship’s navigating crew to pinpoint locations, and attaining directions are easier than before.
Electronic Navigational Charts
ECDIS cihazında Electronic Navigational Charts yani ENC gösterilir. Harita olarak S-57 veya S-100 haritalar kullanılır

ECDIS Cihazı
Bu cihazın NMEA çıktısı yoktur ancak bazı mesajlarla beslemek gerekir. Bunlar şöyle
Echo Sounder'dan
DBT - Depth below transducer
DPT - Depth of Water

GPS'ten
DTM - Datum Reference
GGA - Global Positioning System Fix Data - Konum
GLL - Geographic Position – Latitude/Longitude
VTG -  Vector track an Speed over the Ground - Hız
ZDA - Time & Date - UTC, day, month, year and local time zone - Saat ve Takvim

Meteorolojik Alıcından
MWM - Wind Speed And Angle - Geminin Kendisine Göre, Bağıl (Relative) Rüzgar Bilgisi

GyroCompass'tan
HDT - Heading True
ROT - Rate Of Truen

SpeedLog Alıcısından
VBW - Dual Ground/Water Speed - Ground ve Suya Göre Hız
VHW - Water speed and heading - Suya Göre Bağıl Hız

AIS Alıcısından
VDM - Received Data From Other Vessels
VDO - Wwn Vessel's Information

National Maritime Electronics Association - NMEA Echo Sounder (İskandil) Mesajları

Giriş
Açıklaması şöyle
There are many modern ship navigation tools present on ship and echo sounder is one of the instruments which has been in the play from almost 100 years now. It is used to measure the depth of the water below the ship’s bottom using sound waves which work on the principle of transmission of sound waves and an audio pulse which will bounce off a reflecting layer, returning as an echo to the source.
Bu cihazın panelinde göstermek için şu mesajlar kullanılabilir.
GGA - Global Positioning System Fix Data, yani konum
VTG - Track made good and Ground speed, yani hız
ZDA - Time & Date - UTC, day, month, year and local time zone, yani takvim ve saat

Bu mesajları anlamak için aşağıdaki şekle bakmak lazım

1. DBS - Depth Below Surface - Kullanmayın
Bu mesajın yeni tasarımlarda kullanılmaması öneriliyor. DTP kullanılmalı.

Su derinliği. Şekilde 1 numara. feet, meters, Fathoms cinsinden belirtilir

2. DBT - Depth below transducer
Transducer''ın altındaki suyun derinliği. Şekilde 2 numara. Açıklaması şöyle
In real-world sensors, sometimes not all three conversions are reported. So you might see something like $SDDBT,,f,22.5,M,,F*cs

3. DBK - Depth Below Keel - Kullanmayın
Bu mesajın yeni tasarımlarda kullanılmaması öneriliyor. DTP kullanılmalı.

Keel yani omurganın altındaki su derinliği. Şekilde 3 numara. feet, meters, Fathoms cinsinden belirtilir

4. DPT - Depth of Water
Transducer 'a göre suyun derinliği. 
- Offset alanı artı bir değerse, su yüzeyinden transducer 'a kadar olan mesafeyi verir. Artı değer eklenirse, gerçek su derinliği bulunur.
- Eksi bir  değerse transducer ve keel arasındaki mesafedir.  Eksi değer eklenirse aslında keel 'ın altındaki su derinliği bulunur. Açıklaması şöyle
Offset from transducer, meters positive means distance from transducer to water line negative means distance from transducer to keel

National Maritime Electronics Association - NMEA Magnetic Compass Mesajları

Giriş
Bu cihaz tek başına çalıştığı için başka bir cihazla beslemek gerekmez. Açıklaması şöyle
The magnetic compass work in conjunction with the magnetic field of the earth and is the essential means of the direction indicating device. It is used to get a planned course for the voyage. This ship navigation equipment is usually fitted at the centre line of the ship on the monkey island.  A transmitting magnetic type compass is fitted so that the output can be displayed in the bridge panel.
1. HDG - Heading, Deviation & Variation
Eğer elimizde Gyro varsa, bu cihaz daha hassas olduğu için Gyro'dan gelen HDT mesajı tercih edilebilir

Cihazın okuduğu değer "Magnetic sensor heading, degrees" alanında gelir. 
- Deviation alanı kullanılarak Magnetic Heading bulunur
- Variation alanı kullanılarak True Heading bulunur. Varition genelde [0-45] derece arasında bir değerdir.

National Maritime Electronics Association - NMEA GyroCompass Mesajları

Giriş
GyroCompass hem pusula hem de gyro bileşenlerinden oluşur.

1. Gyro Olarak

- Yaw, Pitch, Roll  değerlerini verir. Bu değerler genellikle radyan cinsindendir.

- YawRate, PitchRate, RollRate  değerlerini verir. Bu değerler genellikle radyan/second cinsindendir.

- Bazı gyro cihazları Heave yani Y ekseninde batıp çıkmayı da ölçebilir. Heave eğer hava aracı terminolojisinde düşünüyorsak, biraz Altitude kavramına benzer.

2.  Compass Olarak
Yani Gerçek Kuzey'i (True North) gösterir. Açıklaması şöyle
It is used for finding the right direction. Unlike magnetic compass, gyro compass is not hampered by an external magnetic field.  It is used to find the correct North Position, which is also the earth’s rotational axis to provide a stable directional source. Its repeater system must be present in the steering platform for emergency steering.
3 tane bileşenden oluşur. Açıklaması şöyle
Master Compass: Discovers and maintains the true north reading with the help of gyroscope.
Repeater Compasses: Receive and indicate the true direction transmitted electrically from the Master Compass.
Course Recorder: Makes a continuous record of the maneuvering on a moving strip of paper.
GyroCompass sistemlerini GPS gibi diğer sistemlerle destekleyerek hatalı ölçüm azaltılabilir. Açıklaması şöyle
Modern ships use a GPS system or other navigational aids feed data to the Gyrocompass for correcting the error.
HDT - Heading True
Gerçek kuzeyi bildirmek için kullanılır. Gerçek kuzeye göre açıyı verir

3. Diğer
ROT - Rate of Turn
Açıklaması şöyle
This navigational tool indicates how fast the ship is turning at a steady rate (useful during pilotage and manoeuvring), normally shown as a number of degrees turned. The rate a ship is turning is measured in degrees per minute. This essential tool assists a coxswain in steering a course safely.
Açıklaması şöyle. Burada TalkerId olarak GP yani GPS gösteriliyor.
An example of the ROT string is:

$GPROT,35.6,A*4E

ROT message fields
Field Meaning
0 Message ID $GPROT
1 Rate of turn, degrees/minutes, “–” indicates bow turns to port
2 A: Valid data
                V: Invalid data

3 The checksum data, always begins with *