Linux check list

Install tools for operation.

yum install nano wget epel-release

Update

If you update some packages, your config files override with new ones. You can find old files with rpm extension in same directory.

Latest Packages

Some linux distributions update their package with delay. IUS is good option for using latest package. You can get IUS package list here and install them with below command.

Install ius rpm package first:

yum install https://centos7.iuscommunity.org/ius-release.rpm

Use u suffix for Installing package from ius repo. For example use below for installing git 2.x:

yum install git2u

Postgres

Download rpm package, check this list for other versions.

wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

Install package.
rpm -i pgdg-centos96-9.6-3.noarch.rpm
yum install postgresql96-server postgresql96-contrib
/usr/pgsql-9.6/bin/postgresql96-setup initdb

Create db and user.

su postgres
createuser --interactive
createdb -O myuser mydb

Run psql for setting password to new user.

psql
ALTER USER mydbuser WITH PASSWORD 'mynewpass';
\q

Proxy

If you need proxy you can use nginx. You need give permission to nginx for accessing http resources.

setsebool httpd_can_network_connect true -P

Check nginx.log with

tail -10f /var/log/nginx/error.log

php & php-fpm

Use IUS for latest release, php72u.

Permissions overwritten after update, check /var/lib/php/fpm permissions.

Java

JRE

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jre-8u181-linux-x64.rpm"

yum localinstall jre-8u181-linux-x64.rpm

JDK
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.rpm"

Firewall

firewalld

My React Native notes

Start emulator from CLI:

cd $ANDROID_HOME/tools
emulator -list-avds
emulator -avd KitKat

Start project for android:

react-native run-android

 

LC_CTYPE: cannot change locale (UTF-8)

When connect to centos machine with ssh, you can get below warning.

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

You need to set environment variable for encoding. Add below lines to /etc/environment file.

 

LANG=en_US.utf-8
LC_ALL=en_US.utf-8

Source: https://gist.github.com/ibrahimlawal/bfec7092cb64d46d8f9d1fd2c0c3d9c8

Mount shared folder in VM

You can use below command for mount shared folder to VM guest. You need install vmware tools before use this.

/usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o subtype=vmhgfs-fuse,allow_other

Belli başlı git komutları

Sıkça kullandığım git komutlarını listelemeye çalıştım.

No Komut Açıklama
1 git checkout dev Lokaldeki dev brach’ine geçmenizi sağlar.
2 git pull Tüm brach güncellemelerini sunucudan indirir.
3 git checkout -b bug/yeni Yeni bir lokal brach oluşturur.
4 git checkout bug/yeni  Lokal bug/yeni branch’ine geçmeyi sağlar.
5 git commit -m “Açıklama” Yapılan değişiklikleri çalışılan lokal brach’e kaydeder.
6 git push Kaydedilen değişiklikleri çalışılan brach ile aynı isimle sunucuya gönderir.
7 git merge dev Çalışılan brach’i lokal dev branch’ine birleştirir.
8 git stash Yapılan değişikliği geçici olarak kaydeder.
9 git stash pop Kaydedilen geçici değişikliği geri getirir.
10 git cherry-pick commitno Commit’i aktif branch’a taşır.
11 git reset --hard HEAD~x hard yapılan değişiklikleri geri alır.
HEAD commit referansı vermek için kullanılır, kullanılmazsa sadece commit edilmemiş değişiklikleri dikkate alır.
x commit öncesine döner. ~x yerine ^ kullanılırsa son commit’i ifade eder.
12 git push -f <remote> <branch> brach geçmişini temizleyerek gönderir.
13 git stash clear Geçici dosyaları temizler.
14 git reset HEAD^ Son commit’i geri alır, değişiklikler korunur.
15 git clean -fd Takip edilmeyen dosya ve klasörleri siler

Komutların kullanımı için örnek senaryolar:

Yeni geliştirme yapılması:
1 -> 2 -> 3 -> 5 -> 6 -> 1 -> 2 -> 4 -> 7 -> 6

Henüz sunucuya gönderilmemiş (6) değişiklikleri farklı bri brach’e taşımak:
4 -> 10

Sunucuya gönderilmiş commitleri silmek:
11 -> 12

Sunucuya gönderilmiş commit’i silerek yeni bir commit ile göndermek için:
14 -> 12

Henüz commitlenmemiş değişikleri geri alarak takip edilmeyen dosya ve klasörleri silmek için:
11 -> 15

Sunucuya gönderdilmiş commit içindeki bir dosyaya ait değişliğin kaldırılması:
git show commitno -- some_file.c | git apply -R

Aynı kodların başka bir git sunucusuna aynalanması / kopyalanması:
git push --mirror https://github.com/mkysoft/myproject.git

Detaylar: http://ohshitgit.com/

Git konusunda değerli bir kaynak: https://www.slideshare.net/lemiorhan/git-antipatterns-extended-version-with-28-common-antipatterns-scturkey-meetup

Üniversite öğrencilerine ücretsiz bitbucket hesabı

Bitbucket 2011 yılından beri üniversite öğrencilerine ücretsiz ve sınırsız hesap sağlıyor. Yararlanmak için ihtiyacınız olan tek şey edu uzantılı mail adresi.

https://blog.bitbucket.org/2011/04/01/free-unlimited-user-source-code-hosting-for-university-students/
Benzer şekilde ücretsiz GitHub hesabı da alabilirsiniz.

C# ‘da X509 sertifikasını PkiPath formatında kaydetmek

Her zaman olduğu gibi C# bu formatı desteklemiyor. Normalde X509Certificate2 nesnesnin Export() metodu mevcut ancak PkiPath formatını destelemiyor. Bu işlemi yapabilmek için ücretis Bouncy Castle kütüphanesi kullanabilirsiniz. Kütüphane içinde yer alan Org.BouncyCastle.Pkix.PkixCertPath class’ın GetEncoded() metodunu kullanabilirsiniz.

C# Uygulamanın yada DLL’nin dosya sürümünü almak için

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetEntryAssembly(); //DLL’i çağıran ana uygulama
if (assembly == null)
assembly = System.Reflection.Assembly.GetExecutingAssembly(); //Kodu çalıştıran uygulama
string version = System.Diagnostics.FileVersionInfo.GetVersionInfo(assembly.Location).FileVersion; //versiyon