├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── VERSION.txt ├── business ├── aarrr.md ├── images │ └── aarrr-1.jpg ├── kurumsallasma.md └── teklif-hazirlama-surecleri.md └── development ├── cevik_proje_yonetimi.md ├── check_list.md ├── database.md ├── development-guide.md ├── git_github_gitflow.md ├── html_css.md ├── images └── aarrr-1.jpg ├── javascript.md ├── laptop.md ├── mukemmel_proje.md ├── productivity.md ├── resources.md ├── ruby.md ├── scrum.md ├── server.md ├── servisler.md ├── training ├── README.md ├── coffeescript_101.md ├── css_101.md ├── css_201.md ├── git_101.md ├── html_101.md ├── javascript_101.md ├── project_management_101.md └── sass_compass_101.md └── yazilim_prensipleri_ve_tasarim_sablonlari.md /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | # 3 | # If you find yourself ignoring temporary files generated by your text editor 4 | # or operating system, you probably want to add a global ignore instead: 5 | # git config --global core.excludesfile ~/.gitignore_global 6 | 7 | # Ignore .DS_store file 8 | .DS_Store 9 | 10 | # Ignore IDE files 11 | .idea/ -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | #### [Current] 3 | * [668e7d7](../../commit/668e7d7) - __(Tayfun Öziş ERİKAN)__ Typo fixed 4 | 5 | #### v1.0.1 6 | * [1ddc6f2](../../commit/1ddc6f2) - __(Tayfun Öziş ERİKAN)__ Bump version v1.0.1 7 | * [f9fcdf2](../../commit/f9fcdf2) - __(Tayfun Öziş ERİKAN)__ Typo fixed. Gitignore file was updated. 8 | 9 | #### v1.0.0 10 | * [7bee2ec](../../commit/7bee2ec) - __(Tayfun Öziş ERİKAN)__ Bump version v1.0.0 11 | * [9bc23b5](../../commit/9bc23b5) - __(Tayfun Öziş ERİKAN)__ Typo fixed 12 | * [067806b](../../commit/067806b) - __(Tayfun Öziş ERİKAN)__ Typo fixed 13 | * [e8d918d](../../commit/e8d918d) - __(Tayfun Öziş ERİKAN)__ Merge pull request [#19](../../issues/19) from eyupatis/patch-1 14 | 15 | typo fixes in aaarr.md 16 | * [5288663](../../commit/5288663) - __(Eyüp Atiş)__ typo fixes in aaarr.md 17 | * [900ecf3](../../commit/900ecf3) - __(Muhammet Dilek)__ typo fix 18 | * [dddad27](../../commit/dddad27) - __(Muhammet Dilek)__ Fix broken link 19 | * [f05728d](../../commit/f05728d) - __(Muhammet Dilek)__ Update servisler.md 20 | * [a1be57c](../../commit/a1be57c) - __(Tayfun Öziş ERİKAN)__ Update server.md 21 | * [f8f202b](../../commit/f8f202b) - __(Tayfun Öziş ERİKAN)__ Update kurumsallasma.md 22 | * [0e8e73c](../../commit/0e8e73c) - __(Tayfun Öziş ERİKAN)__ Update README.md 23 | * [64878cf](../../commit/64878cf) - __(Murat Kemal BAYGÜN)__ Merge pull request [#17](../../issues/17) from Sdogruyol/master 24 | 25 | Dynamic Git Branch Name 26 | * [335af13](../../commit/335af13) - __(Serdar Dogruyol)__ Dynamic Git Branch Name 27 | 28 | Updated branch name to be the current branch name for :check_revision task 29 | * [736cc37](../../commit/736cc37) - __(Murat Kemal BAYGÜN)__ Fix typo 30 | * [d979955](../../commit/d979955) - __(Serdar Dogruyol)__ Remove capistrano-ext from Gemfile 31 | 32 | Remove capistrano-ext from Gemfile since it comes bundled with Capistrano 2.x 33 | * [eb327a8](../../commit/eb327a8) - __(Serdar Dogruyol)__ Added unicorn.rb config 34 | 35 | Added the missing unicorn.rb config for Unicorn ! 36 | * [9b6aaca](../../commit/9b6aaca) - __(Tayfun Öziş ERİKAN)__ Alternative installing informations was added. 37 | * [ed8ba6c](../../commit/ed8ba6c) - __(Onur Özgür ÖZKAN)__ Create scrum.md 38 | * [c003122](../../commit/c003122) - __(Muhammet DİLEK)__ Create project_management_101.md 39 | * [b4db66c](../../commit/b4db66c) - __(Onur Özgür ÖZKAN)__ Update README.md 40 | * [14d65f8](../../commit/14d65f8) - __(Onur Özgür ÖZKAN)__ Create README.md 41 | * [faca6fd](../../commit/faca6fd) - __(Onur Özgür ÖZKAN)__ Rename coffeescript101.md to coffeescript_101.md 42 | * [988c9e6](../../commit/988c9e6) - __(Onur Özgür ÖZKAN)__ Rename css101.md to css_101.md 43 | * [f6cf115](../../commit/f6cf115) - __(Onur Özgür ÖZKAN)__ Rename css201.md to css_201.md 44 | * [330a5e2](../../commit/330a5e2) - __(Onur Özgür ÖZKAN)__ Rename git101.md to git_101.md 45 | * [a1be7d2](../../commit/a1be7d2) - __(Onur Özgür ÖZKAN)__ Rename html101.md to html_101.md 46 | * [368554f](../../commit/368554f) - __(Onur Özgür ÖZKAN)__ Rename javascript101.md to javascript_101.md 47 | * [8cee3dd](../../commit/8cee3dd) - __(Onur Özgür ÖZKAN)__ Create sass_compass_101.md 48 | * [dd016cb](../../commit/dd016cb) - __(Onur Özgür ÖZKAN)__ Create git101.md 49 | * [0f64211](../../commit/0f64211) - __(Onur Özgür ÖZKAN)__ Create coffeescript101.md 50 | * [b7fe5f8](../../commit/b7fe5f8) - __(Onur Özgür ÖZKAN)__ Create javascript101.md 51 | * [9338f74](../../commit/9338f74) - __(Onur Özgür ÖZKAN)__ Update css201.md 52 | * [2c72396](../../commit/2c72396) - __(Onur Özgür ÖZKAN)__ Create css201.md 53 | * [b2b44ca](../../commit/b2b44ca) - __(Onur Özgür ÖZKAN)__ Create css101.md 54 | * [e50bf72](../../commit/e50bf72) - __(Onur Özgür ÖZKAN)__ Create html101.md 55 | * [a4aaaba](../../commit/a4aaaba) - __(Tayfun Öziş ERİKAN)__ Update cevik_proje_yonetimi.md 56 | * [e97fed9](../../commit/e97fed9) - __(Tayfun Öziş ERİKAN)__ HEX codes were added 57 | * [b0470d1](../../commit/b0470d1) - __(Tayfun Öziş ERİKAN)__ Typo fixed 58 | * [8fb24ae](../../commit/8fb24ae) - __(Muhammet DİLEK)__ typo fixed 59 | * [5247d31](../../commit/5247d31) - __(Muhammet DİLEK)__ typo fixed 60 | * [cceb820](../../commit/cceb820) - __(Onur Özgür ÖZKAN)__ Create resources 61 | * [764aa36](../../commit/764aa36) - __(Tayfun Öziş ERİKAN)__ Ruby version was updated 62 | * [d381380](../../commit/d381380) - __(hamitturkukaya)__ Logrotator updates 63 | * [f500404](../../commit/f500404) - __(Tayfun Öziş ERİKAN)__ Update server.md 64 | * [a825746](../../commit/a825746) - __(Tayfun Öziş ERİKAN)__ Update server.md 65 | * [1214dab](../../commit/1214dab) - __(Tayfun Öziş ERİKAN)__ Update server.md 66 | * [a28be51](../../commit/a28be51) - __(Tayfun Öziş ERİKAN)__ Rubygems update command was added 67 | * [a4da8da](../../commit/a4da8da) - __(Muhammet DİLEK)__ Capistrano ile deploydan önce yedek almak 68 | * [1dbcf36](../../commit/1dbcf36) - __(Tayfun Öziş ERİKAN)__ Update server.md 69 | * [d9d949c](../../commit/d9d949c) - __(Tayfun Öziş ERİKAN)__ Update server.md 70 | * [bffce52](../../commit/bffce52) - __(Muhammet DİLEK)__ typo fixed 71 | * [b4bad0e](../../commit/b4bad0e) - __(Muhammet DİLEK)__ capistrano ile deploy eklendi 72 | * [867a54a](../../commit/867a54a) - __(Onur Özgür ÖZKAN)__ Merge pull request [#15](../../issues/15) from serdarb/master 73 | 74 | yazım yanlışı düzeltmesi 75 | * [0596d0d](../../commit/0596d0d) - __(Tayfun Öziş ERİKAN)__ Rbenv rehash fix 76 | * [fdf5ff2](../../commit/fdf5ff2) - __(Tayfun Öziş ERİKAN)__ Ruby-build install.sh eklendi 77 | * [564b46b](../../commit/564b46b) - __(Serdar Büyüktemiz)__ yazım yanlışı düzeltmesi 78 | 79 | bu commit istanbul hackers etkinliğinde açık kaynağa ilgi çekmek adına 80 | bir örnek commit olarak yapılmıştır :) 81 | 82 | * [a7763d6](../../commit/a7763d6) - __(Onur Özgür ÖZKAN)__ Merge pull request [#13](../../issues/13) from tayfunoziserikan/master 83 | 84 | Changelog, katip projesi linki ve gitignore oluşturuldu 85 | * [e98673d](../../commit/e98673d) - __(Tayfun Öziş ERİKAN)__ Yeni bilgiler eklendi. - CHANGELOG.md oluşturulması eklendi. - Katip projesine link verildi. - .gitignore oluşturuldu. 86 | * [b5b6f8e](../../commit/b5b6f8e) - __(Tayfun Öziş ERİKAN)__ Yazım yanlışları giderildi. 87 | * [85a90b1](../../commit/85a90b1) - __(Murat Kemal BAYGÜN)__ Merge pull request [#12](../../issues/12) from tayfunoziserikan/master 88 | 89 | Özel ve açık kaynaklı projeler kontrol listesi eklendi. 90 | * [3559df8](../../commit/3559df8) - __(Tayfun Öziş ERİKAN)__ Özel ve açık kaynaklı projeler kontrol listesi eklendi. 91 | * [75b007b](../../commit/75b007b) - __(Onur Özgür ÖZKAN)__ Delete roller-ofis.md 92 | * [6ad7594](../../commit/6ad7594) - __(Onur Özgür ÖZKAN)__ Delete training.md 93 | * [c9ade9b](../../commit/c9ade9b) - __(Onur Özgür ÖZKAN)__ Delete homeoffice.md 94 | * [56706c3](../../commit/56706c3) - __(Onur Özgür ÖZKAN)__ Merge pull request [#10](../../issues/10) from baygunm/develop 95 | 96 | Huboard Etiketleri 97 | * [d0feea5](../../commit/d0feea5) - __(Murat Kemal BAYGÜN)__ Huboard Etiketlerini iyileştir 98 | * [9ad591b](../../commit/9ad591b) - __(Onur Özgür ÖZKAN)__ release çıkarma checklisti. 99 | * [b27ae53](../../commit/b27ae53) - __(Onur Özgür ÖZKAN)__ Update check_list.md 100 | * [dec7a8d](../../commit/dec7a8d) - __(Onur Özgür ÖZKAN)__ wice_grid kaldırıldı, tolk ve sitemap_generator eklendi. 101 | * [2fad243](../../commit/2fad243) - __(Onur Özgür ÖZKAN)__ Update check_list.md 102 | * [dbcf5c7](../../commit/dbcf5c7) - __(Onur Özgür ÖZKAN)__ Create check_list.md 103 | * [e5e1a0f](../../commit/e5e1a0f) - __(Onur Özgür ÖZKAN)__ Update training.md 104 | * [dfbf9a3](../../commit/dfbf9a3) - __(Onur Özgür ÖZKAN)__ Rename kurum-ici-egitim.md to training.md 105 | * [9917993](../../commit/9917993) - __(Onur Özgür ÖZKAN)__ Create kurum-ici-egitim.md 106 | * [f818af0](../../commit/f818af0) - __(Onur Özgür ÖZKAN)__ Update server.md 107 | * [edfd664](../../commit/edfd664) - __(Onur Özgür ÖZKAN)__ Create database.md 108 | * [a21d74c](../../commit/a21d74c) - __(Murat Kemal BAYGÜN)__ Merge remote-tracking branch 'upstream/master' into develop 109 | * [5cdbd86](../../commit/5cdbd86) - __(Murat Kemal BAYGÜN)__ Merge pull request [#8](../../issues/8) from tayfunoziserikan/master 110 | 111 | Deploy süreçleri dokümantasyonuna ilaveler yapıldı. 112 | * [aaca75d](../../commit/aaca75d) - __(Tayfun Öziş ERİKAN)__ Merge pull request [#9](../../issues/9) from baygunm/master 113 | 114 | fix typo 115 | * [0b68269](../../commit/0b68269) - __(Murat Kemal BAYGÜN)__ fix typo 116 | * [eb9b096](../../commit/eb9b096) - __(Tayfun Öziş ERİKAN)__ Update server.md 117 | * [a957739](../../commit/a957739) - __(Tayfun Öziş ERİKAN)__ Update server.md 118 | * [8c2ae4d](../../commit/8c2ae4d) - __(Tayfun Öziş ERİKAN)__ Merge pull request [#7](../../issues/7) from baygunm/master 119 | 120 | git flow davranışı 121 | * [26db87c](../../commit/26db87c) - __(Murat Kemal BAYGÜN)__ git flow init davranışını düzeltir 122 | * [eaa9707](../../commit/eaa9707) - __(Tayfun Öziş ERİKAN)__ Update cevik_proje_yonetimi.md 123 | * [3ead45f](../../commit/3ead45f) - __(Onur Özgür ÖZKAN)__ Update cevik_proje_yonetimi.md 124 | * [e563770](../../commit/e563770) - __(Onur Özgür ÖZKAN)__ Typo improved 125 | * [6de2790](../../commit/6de2790) - __(Tayfun Öziş ERİKAN)__ Typo fixed 126 | * [955b2c3](../../commit/955b2c3) - __(Murat Kemal BAYGÜN)__ Update cevik_proje_yonetimi.md 127 | 128 | Bullets corrected 129 | * [7f275d5](../../commit/7f275d5) - __(Murat Kemal BAYGÜN)__ Update cevik_proje_yonetimi.md 130 | 131 | Huboard application to projects added 132 | * [dea985f](../../commit/dea985f) - __(Onur Özgür ÖZKAN)__ Merge pull request [#6](../../issues/6) from tayfunoziserikan/master 133 | 134 | Deploy süreçleri dokümante edildi. 135 | * [0307c94](../../commit/0307c94) - __(Tayfun Öziş ERİKAN)__ Update server.md 136 | * [f1e7e8f](../../commit/f1e7e8f) - __(Tayfun Öziş ERİKAN)__ Update server.md 137 | * [da298fe](../../commit/da298fe) - __(Tayfun Öziş ERİKAN)__ Update server.md 138 | * [c9982e9](../../commit/c9982e9) - __(Onur Özgür ÖZKAN)__ Merge pull request [#5](../../issues/5) from tayfunoziserikan/master 139 | 140 | PostgreSQL backup/restore için yeni bir kaynak eklendi. 141 | * [82cda61](../../commit/82cda61) - __(Tayfun Öziş ERİKAN)__ Update server.md 142 | * [471a15d](../../commit/471a15d) - __(Tayfun Öziş ERİKAN)__ Update server.md 143 | * [24129ae](../../commit/24129ae) - __(onurozgurozkan)__ remove folders 144 | * [5769dbe](../../commit/5769dbe) - __(Onur Özgür ÖZKAN)__ Merge pull request [#4](../../issues/4) from baygunm/master 145 | 146 | fixed a typo 147 | * [5e193b3](../../commit/5e193b3) - __(Murat Kemal BAYGÜN)__ added a comma 148 | * [c3337b4](../../commit/c3337b4) - __(Onur Özgür ÖZKAN)__ Update productivity.md 149 | * [5af5be6](../../commit/5af5be6) - __(Onur Özgür ÖZKAN)__ Update productivity.md 150 | * [a69f877](../../commit/a69f877) - __(Onur Özgür ÖZKAN)__ Update javascript.md 151 | * [5bbcf36](../../commit/5bbcf36) - __(Onur Özgür ÖZKAN)__ Update html_css.md 152 | * [7f90154](../../commit/7f90154) - __(Onur Özgür ÖZKAN)__ Create server.md 153 | * [5a1d831](../../commit/5a1d831) - __(Onur Özgür ÖZKAN)__ Create ruby.md 154 | * [3d8739e](../../commit/3d8739e) - __(Onur Özgür ÖZKAN)__ Create productivity.md 155 | * [c14c41a](../../commit/c14c41a) - __(Onur Özgür ÖZKAN)__ Create javascript.md 156 | * [8dd6dfa](../../commit/8dd6dfa) - __(Onur Özgür ÖZKAN)__ Create html_css.md 157 | * [176a2c5](../../commit/176a2c5) - __(Muhammet DİLEK)__ Update ruby.md 158 | * [58f26c6](../../commit/58f26c6) - __(Muhammet DİLEK)__ Update deploy.md 159 | * [939801d](../../commit/939801d) - __(Muhammet DİLEK)__ Update deploy.md 160 | * [8b1d619](../../commit/8b1d619) - __(Muhammet DİLEK)__ Update postgresql.md 161 | * [a8eba9f](../../commit/a8eba9f) - __(Muhammet DİLEK)__ Update deploy.md 162 | * [02027cb](../../commit/02027cb) - __(Tayfun Öziş ERİKAN)__ Exception Notification (Hata Bildirici) 163 | * [6e48a92](../../commit/6e48a92) - __(Tayfun Öziş ERİKAN)__ Ubuntu server 12.10 kurulum notları eklendi... 164 | * [5c6a07b](../../commit/5c6a07b) - __(Onur Özgür ÖZKAN)__ Update postgresql.md 165 | * [bfbe17d](../../commit/bfbe17d) - __(Onur Özgür ÖZKAN)__ Update postgresql.md 166 | * [e72131e](../../commit/e72131e) - __(Onur Özgür ÖZKAN)__ Update deploy.md 167 | * [163c36b](../../commit/163c36b) - __(Muhammet DİLEK)__ Update deploy.md 168 | * [39bedbb](../../commit/39bedbb) - __(Muhammet DİLEK)__ Update deploy.md 169 | * [ef77d68](../../commit/ef77d68) - __(Muhammet DİLEK)__ letter_opener eklendi 170 | * [13c4e54](../../commit/13c4e54) - __(Onur Özgür ÖZKAN)__ Update and rename haml.md to html_erb_haml.md 171 | * [94bddc8](../../commit/94bddc8) - __(Muhammet DİLEK)__ Update araclar_ve_servisler.md 172 | * [320f495](../../commit/320f495) - __(Muhammet DİLEK)__ Update gelistirme_ortami.md 173 | * [0524007](../../commit/0524007) - __(Onur Özgür ÖZKAN)__ Update kurumsallasma.md 174 | * [f9a2639](../../commit/f9a2639) - __(Onur Özgür ÖZKAN)__ Update kurumsallasma.md 175 | * [50cd010](../../commit/50cd010) - __(Onur Özgür ÖZKAN)__ Create kurumsallasma.md 176 | * [faffd27](../../commit/faffd27) - __(Onur Özgür ÖZKAN)__ Update roller-ofis.md 177 | * [d23a6bd](../../commit/d23a6bd) - __(Onur Özgür ÖZKAN)__ Rename kurumsal.md to roller-ofis.md 178 | * [6c09866](../../commit/6c09866) - __(Onur Özgür ÖZKAN)__ Create kurumsal.md 179 | * [6227eed](../../commit/6227eed) - __(Onur Özgür ÖZKAN)__ Update homeoffice.md 180 | * [8e6312d](../../commit/8e6312d) - __(Onur Özgür ÖZKAN)__ Create homeoffice.md 181 | * [8084ef6](../../commit/8084ef6) - __(Onur Özgür ÖZKAN)__ Update teklif-hazirlama-surecleri.md 182 | * [d1ef423](../../commit/d1ef423) - __(Onur Özgür ÖZKAN)__ Create development-guide.md 183 | * [3f3becf](../../commit/3f3becf) - __(onurozgurozkan)__ Dizinleri tekrar organize ettik. 184 | * [d9ed295](../../commit/d9ed295) - __(onurozgurozkan)__ dosyalar yeniden adlandırıldı. 185 | * [cdfb61b](../../commit/cdfb61b) - __(Onur Özgür ÖZKAN)__ Rename 800-development-env.md to gelistirme_ortami.md 186 | * [eaa5643](../../commit/eaa5643) - __(Onur Özgür ÖZKAN)__ Rename 900-perfect-project.md to mukemmel_proje.md 187 | * [8712439](../../commit/8712439) - __(Onur Özgür ÖZKAN)__ Rename 902-translate.md to ceviriecek_kaynaklar.md 188 | * [80ec950](../../commit/80ec950) - __(Onur Özgür ÖZKAN)__ Rename 502-db-redis.md to redis.md 189 | * [5b3a22e](../../commit/5b3a22e) - __(Onur Özgür ÖZKAN)__ Rename 503-gems.md to gemler.md 190 | * [eedd528](../../commit/eedd528) - __(Onur Özgür ÖZKAN)__ Rename 250-git-github-gitflow.md to git_github_gitflow.md 191 | * [7757828](../../commit/7757828) - __(Onur Özgür ÖZKAN)__ Rename 200-agile-project-management.md to cevik_proje_yonetimi.md 192 | * [eb6920b](../../commit/eb6920b) - __(Onur Özgür ÖZKAN)__ Rename 1000-newbie.md to yeni_baslayanlar_icin_kaynaklar.md 193 | * [5b3503c](../../commit/5b3503c) - __(Onur Özgür ÖZKAN)__ Rename 100-architecture.md to yazilim_prensipleri_ve_tasarim_sablonlari.md 194 | * [fae583a](../../commit/fae583a) - __(onurozgurozkan)__ Business bölümü eklendi. AARRR ve Teklif eklendi. 195 | * [b9d1ad0](../../commit/b9d1ad0) - __(onurozgurozkan)__ remove tr folder 196 | * [8075ec3](../../commit/8075ec3) - __(onurozgurozkan)__ Rename folder 197 | * [65d1054](../../commit/65d1054) - __(Onur Özgür ÖZKAN)__ Update 200-agile-project-management.md 198 | * [794a1fb](../../commit/794a1fb) - __(Muhammet DİLEK)__ Update 503-gems.md 199 | * [8605593](../../commit/8605593) - __(Muhammet DİLEK)__ Update 503-gems.md 200 | * [9904149](../../commit/9904149) - __(Tayfun Öziş ERİKAN)__ Update 600-deployment.md 201 | * [98d82ba](../../commit/98d82ba) - __(Tayfun Öziş ERİKAN)__ Update 400-client-side-technologies.md 202 | * [c6bc62c](../../commit/c6bc62c) - __(Muhammet DİLEK)__ Update 503-gems.md 203 | * [74c54f7](../../commit/74c54f7) - __(Muhammet DİLEK)__ typo fixed 204 | * [041b26f](../../commit/041b26f) - __(Onur Özgür ÖZKAN)__ Update 800-development-env.md 205 | * [d1e89f7](../../commit/d1e89f7) - __(Onur Özgür ÖZKAN)__ Update 200-agile-project-management.md 206 | * [5e52de9](../../commit/5e52de9) - __(Onur Özgür ÖZKAN)__ Update 200-agile-project-management.md 207 | * [64ab494](../../commit/64ab494) - __(Onur Özgür ÖZKAN)__ Create 902-translate.md 208 | * [a7e42b1](../../commit/a7e42b1) - __(Onur Özgür ÖZKAN)__ Merge pull request [#3](../../issues/3) from sedatkocadogan/patch-1 209 | 210 | Update 900-perfect-project.md 211 | * [1d4faf8](../../commit/1d4faf8) - __(Sedat KOCADOĞAN)__ Update 900-perfect-project.md 212 | * [c39ebe8](../../commit/c39ebe8) - __(Onur Özgür ÖZKAN)__ Merge pull request [#2](../../issues/2) from sedatkocadogan/master 213 | 214 | A Big update :) 215 | * [95121c9](../../commit/95121c9) - __(Sedat KOCADOĞAN)__ Big update 216 | * [7a62dc9](../../commit/7a62dc9) - __(Onur Özgür ÖZKAN)__ Merge pull request [#1](../../issues/1) from sedatkocadogan/master 217 | 218 | Fix some typo's 219 | * [4dd6822](../../commit/4dd6822) - __(Onur Özgür ÖZKAN)__ Add JQuery 220 | * [56d5f6f](../../commit/56d5f6f) - __(Sedat KOCADOĞAN)__ Update 901-AARRR.md 221 | 222 | Bazı küçük noktalama hataları düzeltmesi 223 | * [3b9f64e](../../commit/3b9f64e) - __(Onur Özgür ÖZKAN)__ Update 600-deployment.md 224 | * [3bc98ef](../../commit/3bc98ef) - __(Onur Özgür ÖZKAN)__ Update semver.org 225 | * [9871384](../../commit/9871384) - __(Onur Özgür ÖZKAN)__ Fixed Turkish character 226 | * [029d77c](../../commit/029d77c) - __(onurozgurozkan)__ add aarrr image 227 | * [ec499a8](../../commit/ec499a8) - __(Onur Özgür ÖZKAN)__ Update aarrr 228 | * [08d2c95](../../commit/08d2c95) - __(Onur Özgür ÖZKAN)__ Typo fixed. 229 | * [3222500](../../commit/3222500) - __(Onur Özgür ÖZKAN)__ update aarrr 230 | * [dc3013a](../../commit/dc3013a) - __(Onur Özgür ÖZKAN)__ Create 901-AARRR.md 231 | * [73bed6a](../../commit/73bed6a) - __(Onur Özgür ÖZKAN)__ Update 250-git-github-gitflow.md 232 | * [74a391d](../../commit/74a391d) - __(Onur Özgür ÖZKAN)__ add gitflow 233 | * [8a50a36](../../commit/8a50a36) - __(Yunus ÖZCAN)__ Merge remote-tracking branch 'origin/master' 234 | * [bcf7932](../../commit/bcf7932) - __(Yunus ÖZCAN)__ Update tr/503-gems.md 235 | * [2183d6b](../../commit/2183d6b) - __(Muhammet DİLEK)__ Update tr/503-gems.md 236 | * [4755e01](../../commit/4755e01) - __(Onur Özgür ÖZKAN)__ move annotate gem to develop section 237 | * [9e00317](../../commit/9e00317) - __(Onur Özgür ÖZKAN)__ Add annotate gem 238 | * [d961ae9](../../commit/d961ae9) - __(Onur Özgür ÖZKAN)__ Update tr/1000-newbie.md 239 | * [09261d6](../../commit/09261d6) - __(Onur Özgür ÖZKAN)__ Update tr/1000-newbie.md 240 | * [ba82a3e](../../commit/ba82a3e) - __(Onur Özgür ÖZKAN)__ Update tr/1000-newbie.md 241 | * [c56e9a9](../../commit/c56e9a9) - __(Onur Özgür ÖZKAN)__ Create 1000-newbie.md 242 | * [dd69118](../../commit/dd69118) - __(Yunus ÖZCAN)__ Update tr/503-gems.md 243 | * [403942d](../../commit/403942d) - __(Onur Özgür ÖZKAN)__ Remove sublime 244 | * [b190e23](../../commit/b190e23) - __(Onur Özgür ÖZKAN)__ Update tr/200-agile-project-management.md 245 | * [3f42f86](../../commit/3f42f86) - __(Onur Özgür ÖZKAN)__ Add railscasts videos 246 | * [f6d12cc](../../commit/f6d12cc) - __(Muhammet DİLEK)__ Update tr/503-gems.md 247 | * [b664238](../../commit/b664238) - __(Muhammet DİLEK)__ Update tr/503-gems.md 248 | * [48b920c](../../commit/48b920c) - __(Muhammet DİLEK)__ Update tr/503-gems.md 249 | * [3ded769](../../commit/3ded769) - __(Muhammet DİLEK)__ Update tr/503-gems.md 250 | * [b5657aa](../../commit/b5657aa) - __(Muhammet DİLEK)__ Update tr/503-gems.md 251 | * [f5e471a](../../commit/f5e471a) - __(Onur Özgür ÖZKAN)__ Add AARRR 252 | * [ea87510](../../commit/ea87510) - __(Onur Özgür ÖZKAN)__ Update tr/900-perfect-project.md 253 | * [9fe96c4](../../commit/9fe96c4) - __(Onur Özgür ÖZKAN)__ Update tr/900-perfect-project.md 254 | * [6d5c192](../../commit/6d5c192) - __(Onur Özgür ÖZKAN)__ Update tr/900-perfect-project.md 255 | * [13774ee](../../commit/13774ee) - __(Onur Özgür ÖZKAN)__ Update tr/900-perfect-project.md 256 | * [a9b3dec](../../commit/a9b3dec) - __(Onur Özgür ÖZKAN)__ Update tr/503-gems.md 257 | * [533ff99](../../commit/533ff99) - __(Onur Özgür ÖZKAN)__ Update tr/503-gems.md 258 | * [bd6cd36](../../commit/bd6cd36) - __(Onur Özgür ÖZKAN)__ Update tr/503-gems.md 259 | * [6936510](../../commit/6936510) - __(Onur Özgür ÖZKAN)__ Update tr/503-gems.md 260 | * [efc8fb7](../../commit/efc8fb7) - __(Onur Özgür ÖZKAN)__ Update tr/500-server-side-technologies.md 261 | * [0c15c8d](../../commit/0c15c8d) - __(Onur Özgür ÖZKAN)__ Update tr/500-server-side-technologies.md 262 | * [faa557a](../../commit/faa557a) - __(Tayfun Öziş ERİKAN)__ Update tr/502-db-redis.md 263 | * [26b930b](../../commit/26b930b) - __(Tayfun Öziş ERİKAN)__ Update tr/502-db-redis.md 264 | * [0006fb7](../../commit/0006fb7) - __(Tayfun Öziş ERİKAN)__ Redis OS X installation instructions was added. 265 | * [f1f5d08](../../commit/f1f5d08) - __(Tayfun Öziş ERİKAN)__ Update tr/300-tools-and-services.md 266 | * [21f119d](../../commit/21f119d) - __(Onur Özgür ÖZKAN)__ Update tr/900-perfect-project.md 267 | * [b76fe17](../../commit/b76fe17) - __(Onur Ozgur OZKAN)__ Add some rules which improve developers productivity 268 | * [f00007c](../../commit/f00007c) - __(Onur Ozgur OZKAN)__ Rename files name 269 | * [119eb94](../../commit/119eb94) - __(Onur Özgür ÖZKAN)__ Update tr/08-development-env.md 270 | * [d936f00](../../commit/d936f00) - __(Onur Özgür ÖZKAN)__ Update tr/03-tools-and-services.md 271 | * [ed9829e](../../commit/ed9829e) - __(Onur Özgür ÖZKAN)__ Update tr/03-tools-and-services.md 272 | * [8c06f38](../../commit/8c06f38) - __(Muhammet DİLEK)__ Update tr/05-gems.md 273 | * [12b1e70](../../commit/12b1e70) - __(Muhammet DİLEK)__ Update tr/05-gems.md 274 | * [2ade84e](../../commit/2ade84e) - __(Muhammet DİLEK)__ Update tr/05-gems.md 275 | * [c897592](../../commit/c897592) - __(Onur Özgür ÖZKAN)__ Update tr/08-development-env.md 276 | * [fd992c9](../../commit/fd992c9) - __(Onur Özgür ÖZKAN)__ Update tr/09-perfect-project.md 277 | * [0d7d3b7](../../commit/0d7d3b7) - __(Onur Özgür ÖZKAN)__ Update tr/05-gems.md 278 | * [22a0a37](../../commit/22a0a37) - __(Onur Özgür ÖZKAN)__ Update tr/05-gems.md 279 | * [ffc6578](../../commit/ffc6578) - __(Onur Özgür ÖZKAN)__ Update tr/05-gems.md 280 | * [01d1f67](../../commit/01d1f67) - __(Onur Özgür ÖZKAN)__ Create 05-gems.md 281 | * [2e9b43c](../../commit/2e9b43c) - __(Muhammet DİLEK)__ Update tr/05-server-side-technologies.md 282 | * [9a750db](../../commit/9a750db) - __(Muhammet DİLEK)__ Update tr/05-server-side-technologies.md 283 | * [bbe11c7](../../commit/bbe11c7) - __(Muhammet DİLEK)__ Update tr/05-server-side-technologies.md 284 | * [af691bd](../../commit/af691bd) - __(Onur Özgür ÖZKAN)__ Update tr/03-tools-and-services.md 285 | * [995af32](../../commit/995af32) - __(Tayfun Öziş ERİKAN)__ Update tr/04-client-side-technologies.md 286 | * [8d7ae80](../../commit/8d7ae80) - __(Onur Özgür ÖZKAN)__ Update tr/01-architecture.md 287 | * [208faea](../../commit/208faea) - __(Onur Özgür ÖZKAN)__ Update tr/01-architecture.md 288 | * [5a376b6](../../commit/5a376b6) - __(Onur Özgür ÖZKAN)__ Open/closed principle 289 | * [67878fe](../../commit/67878fe) - __(Onur Özgür ÖZKAN)__ Add Single responsibility principle 290 | * [3f7c3a9](../../commit/3f7c3a9) - __(Onur Özgür ÖZKAN)__ Update tr/02-agile-project-management.md 291 | * [fda71b2](../../commit/fda71b2) - __(Onur Özgür ÖZKAN)__ Update tr/05-db-postgresql.md 292 | * [f6c4891](../../commit/f6c4891) - __(Onur Özgür ÖZKAN)__ Update tr/05-db-postgresql.md 293 | * [61e9f96](../../commit/61e9f96) - __(Onur Özgür ÖZKAN)__ Update tr/05-db-postgresql.md 294 | * [e4e66d4](../../commit/e4e66d4) - __(Onur Özgür ÖZKAN)__ Update tr/05-db-postgresql.md 295 | * [53a9b32](../../commit/53a9b32) - __(Onur Özgür ÖZKAN)__ Update tr/05-db-postgresql.md 296 | * [b0a523c](../../commit/b0a523c) - __(Onur Özgür ÖZKAN)__ Update tr/05-db-postgresql.md 297 | * [b4a5457](../../commit/b4a5457) - __(Onur Özgür ÖZKAN)__ Update tr/05-db-postgresql.md 298 | * [e2cbcd9](../../commit/e2cbcd9) - __(Onur Özgür ÖZKAN)__ Update tr/05-db-postgresql.md 299 | * [89d28e2](../../commit/89d28e2) - __(Onur Özgür ÖZKAN)__ Remove db sections 300 | * [a946f38](../../commit/a946f38) - __(Onur Özgür ÖZKAN)__ Create 05-db-redis.md 301 | * [b17dea1](../../commit/b17dea1) - __(Onur Özgür ÖZKAN)__ Update tr/05-db-postgresql.md 302 | * [665684f](../../commit/665684f) - __(Onur Özgür ÖZKAN)__ Create 05-db-postgresql.md 303 | * [9641fe0](../../commit/9641fe0) - __(Muhammet DİLEK)__ Update tr/05-server-side-technologies.md 304 | * [1d4a2bd](../../commit/1d4a2bd) - __(Onur Özgür ÖZKAN)__ Update tr/03-tools-and-services.md 305 | * [5fddca3](../../commit/5fddca3) - __(Onur Özgür ÖZKAN)__ Add source tree 306 | * [26ceaf0](../../commit/26ceaf0) - __(Onur Özgür ÖZKAN)__ Add huboard 307 | * [2ca423a](../../commit/2ca423a) - __(Onur Özgür ÖZKAN)__ Update tr/09-perfect-project.md 308 | * [091547f](../../commit/091547f) - __(Onur Özgür ÖZKAN)__ Update tr/09-perfect-project.md 309 | * [5dcfbfd](../../commit/5dcfbfd) - __(Muhammet DİLEK)__ Update tr/05-server-side-technologies.md 310 | * [22146cf](../../commit/22146cf) - __(Muhammet DİLEK)__ Update tr/05-server-side-technologies.md 311 | * [374d134](../../commit/374d134) - __(Muhammet DİLEK)__ Update tr/05-server-side-technologies.md 312 | * [521652f](../../commit/521652f) - __(Onur Özgür ÖZKAN)__ Update tr/01-architecture.md 313 | * [5841e6e](../../commit/5841e6e) - __(Onur Özgür ÖZKAN)__ Update tr/01-architecture.md 314 | * [1b847a6](../../commit/1b847a6) - __(Onur Özgür ÖZKAN)__ Update tr/01-architecture.md 315 | * [93365c4](../../commit/93365c4) - __(Onur Özgür ÖZKAN)__ Add solid 316 | * [ace162a](../../commit/ace162a) - __(Onur Özgür ÖZKAN)__ Please enter the commit message for your changes. Lines starting with '#' will be ignored, and an empty message aborts the commit. 317 | * [91764b1](../../commit/91764b1) - __(Onur Özgür ÖZKAN)__ add md 318 | * [f03ea42](../../commit/f03ea42) - __(Onur Özgür ÖZKAN)__ Update tr/README.md 319 | * [23fc4f7](../../commit/23fc4f7) - __(Onur Özgür ÖZKAN)__ Update tr/05-server-side-technologies 320 | * [96abce4](../../commit/96abce4) - __(Onur Özgür ÖZKAN)__ Update tr/06-deployment.md 321 | * [0d80f98](../../commit/0d80f98) - __(Onur Özgür ÖZKAN)__ Update tr/README.md 322 | * [637d367](../../commit/637d367) - __(Onur Özgür ÖZKAN)__ Update tr/09-perfect-project.md 323 | * [f2e3eab](../../commit/f2e3eab) - __(Onur Özgür ÖZKAN)__ Update tr/04-client-side-technologies 324 | * [5eee05f](../../commit/5eee05f) - __(Onur Özgür ÖZKAN)__ Update tr/01-architecture.md 325 | * [f9d5cef](../../commit/f9d5cef) - __(Onur Özgür ÖZKAN)__ Update tr/01-architecture.md 326 | * [7a1cb77](../../commit/7a1cb77) - __(Onur Özgür ÖZKAN)__ Update tr/03-tools-and-services.md 327 | * [307c103](../../commit/307c103) - __(Onur Özgür ÖZKAN)__ Update tr/README.md 328 | * [8b1666a](../../commit/8b1666a) - __(Onur Özgür ÖZKAN)__ Update tr/02-agile-project-management.md 329 | * [8adb9fa](../../commit/8adb9fa) - __(Onur Özgür ÖZKAN)__ Update tr/README.md 330 | * [04f3fb9](../../commit/04f3fb9) - __(Onur Özgür ÖZKAN)__ Create README.md 331 | * [f9d3163](../../commit/f9d3163) - __(Onur Özgür ÖZKAN)__ Create 09-perfect-project.md 332 | * [5b298c1](../../commit/5b298c1) - __(Onur Özgür ÖZKAN)__ Create 08-development-env.md 333 | * [88bec2d](../../commit/88bec2d) - __(Onur Özgür ÖZKAN)__ Create 07-tdd.md 334 | * [24eba5f](../../commit/24eba5f) - __(Onur Özgür ÖZKAN)__ Create 06-deployment.md 335 | * [de2eb7b](../../commit/de2eb7b) - __(Onur Özgür ÖZKAN)__ Create 05-server-side-technologies 336 | * [95f949e](../../commit/95f949e) - __(Onur Özgür ÖZKAN)__ Create 04-client-side-technologies 337 | * [8e8e68c](../../commit/8e8e68c) - __(Onur Özgür ÖZKAN)__ Create 03-tools-and-services.md 338 | * [102c26c](../../commit/102c26c) - __(Onur Özgür ÖZKAN)__ Create 02-agile-project-management.md 339 | * [abedc4f](../../commit/abedc4f) - __(Onur Özgür ÖZKAN)__ add 01 340 | * [39e7d7b](../../commit/39e7d7b) - __(Onur Özgür ÖZKAN)__ Initial commit 341 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015 lab2023 - information technologies 2 | 3 | MIT License 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Playbook 2 | 3 | lab2023 - bilişim teknolojileri aş standartlarının belirlendiği kitaptır. 4 | 5 | # Contributing 6 | 7 | Once you've made your great commits: 8 | 9 | 1. Fork Project 10 | 2. Create a topic branch - git checkout -b my_branch 11 | 3. Push to your branch - git push origin my_branch 12 | 4. Create a Pull Request from your branch 13 | 5. That's it! 14 | 15 | # Credits 16 | 17 | ![lab2023](http://lab2023.com/assets/images/named-logo.png) 18 | 19 | - Playbook is maintained and funded by [lab2023 - information technologies](http://lab2023.com/) 20 | - Thank you to all the [contributors!](../../graphs/contributors) 21 | - The names and logos for lab2023 are trademarks of lab2023, inc. 22 | 23 | # License 24 | 25 | Copyright 2014 lab2023 – information technologies -------------------------------------------------------------------------------- /VERSION.txt: -------------------------------------------------------------------------------- 1 | v1.0.2 -------------------------------------------------------------------------------- /business/aarrr.md: -------------------------------------------------------------------------------- 1 | # AARRR 2 | 3 | AARRR, [Dave McClure](https://twitter.com/davemcclure) tarafından internet projelerinin başarılarının ölçülmesini sağlayan beş aşamadan oluşan bir yöntemdir. 4 | 5 | Peki nedir bu beş aşama? 6 | 7 | * **Toplama** (Acquisition) kullanıcılar değişik kanallardan siteye gelirler. 8 | * **Aktivasyon** (Activation) kullanıcı siteye ilk geldiğinde mutlu ayrılmalıdır. 9 | * **Tutma** (Retention) kullanıcı siteye birden fazla gelmelidir. 10 | * **Sevk** (Referral) kullanıcı siteyi diğer kullanıcılara önermelidir. 11 | * **Gelir** (Revenue) kullanıcılar siteye para vermeyi hazır olmalıdır. 12 | 13 | ![AARRR Modeli](images/aarrr-1.jpg) 14 | 15 | Peki AARRR bize ne sağlar? 16 | 17 | * Ekipte ki herkesin aynı dili konuşmasını sağlar. 18 | * Ürünün gidişatında bir hata varsa hatanın tespiti daha kolay olacaktır. 19 | * AARRR girişimcinin yatırımcılara somut veriler sunmasını sağlar. 20 | * AARRR size başarılı olup olmadığınızı söyler. 21 | 22 | Girişimci, her seferinde bir aşamaya odaklanmalıdır. Aksi takdirde sıkıntı yaşar. 23 | 24 | 1. **İyi bir ürün yapmak** Aktivasyon ve tutma. 25 | 2. **Ürünün pazarlamasını yapmak** Toplama ve sevk. 26 | 3. **Para kazanma** Gelir ve Karlılık ile ilgilidir. 27 | 28 | Girişimci aşamaların birbirine dönüşüm oranlarını görebilmek için AARRR metriklerini belirlemelidir. Bu işi yaparken az aslında çoktur mantığını unutmamalıdır. Dönüşüm kriterleri hesaplanabilir olmalıdır. 29 | 30 | Örneğin; 31 | 32 | Son bir aydaki siteye yapılan toplan ziyaret / Son bir aydaki üye olma sayısı 33 | 34 | Diğer önemli olan konu ise sizin müşterilerinize sunduğunuz hizmetin ne olduğudur. Düşünülenin aksine müşterilere yeni özellikler sunmak genellikle müşteri kaçışlarına neden olur. Girişimci zamanının %80'ini mevcut özelliklerin mükemmel olmasına ayırmalı, %20 zamanını yeni özellikler eklemeye ayırmalıdır. Unutmayın ne kadar az o kadar iyidir. Her hafta müşterilerinizi zorlayan, kullanılmayan, kullanımı zor olan bir özelliği programdan çıkartın veya düzeltin. 35 | 36 | ## Aşamalar 37 | 38 | ### Toplama (Acquisition) 39 | 40 | Kullanıcılar siteye bir çok kanaldan ulaşırlar. Girişimcinin görevi bu kanalları tespit etmek, doğru kanallara yatırım yapmak, aksayan kanallardaki problemleri gidermektedir. 41 | 42 | Kanallar 43 | 44 | * Arama motorları, 45 | * Adwords, 46 | * Davetiye sistemi, 47 | * Haber Grubu & Email marketing, 48 | * Viral, 49 | * Blog yazıları, 50 | * Sosyal medya paylaşımları, 51 | * Uygulamalar & Widgets, 52 | * Halkla İlişkiler, 53 | * Kuponlar, 54 | * Kampanyalar, 55 | * Yarışmalar, 56 | * Satış ortaklığı, 57 | * Doğrudan pazarlama, 58 | * Radyo / TV / Print. 59 | 60 | Kanalları doğru seçmeliyiz. Seçim işinde; 61 | 62 | * En geniş topluluğa ulaşabileceğimiz, 63 | * En düşük maliyetli, 64 | * En iyi performansı alacağımız 65 | 66 | şekilde seçim yapmamız gerekir. 67 | 68 | NOT: Amaç çok kişiye ulaşmak değil müşteri kitlemize ulaşmaktır. Bu bağlamda 100.000 üyesi olan genel bir foruma reklam vermek yerine 1000 üyesi olan müşterilerimizin olduğu bir foruma reklam vermek daha iyidir. 69 | 70 | Yukarıdaki kanallardan arama motorları, davetiye sistemi, haber grubu, viral, blog, sosyal medya paylaşımları, widgetler ücretsiz olanlardır. Eğer müşteri segmentinize bunlar ile ulaşabiliyorsanız şanslısınız. 71 | 72 | ### Aktivasyon (Activition) 73 | 74 | Toplama sonucunda kullanıcılar siteye gelir. Bu andan itibaren aktivasyon süreci başlar. Aktivasyon için bir kriter belirlemeniz gerekmektedir. lab2023 olarak biz atkivasyonu kullanıcıya ulaşabileceğimiz bir yolun açılması olarak görüyoruz. 75 | 76 | * En güzeli siteye üye olması 77 | * RSS Kaydı 78 | * Facebook like 79 | * Haber grubu üyeliği 80 | 81 | Aktivasyon sayfasının en önemli konusu kullanıcıyı siteden kaçırmadan, en kısa yoldan siteye üye yapacak çözümler bulmaktır. 82 | 83 | * Sade bir site tasarımı, 84 | * Üyelik ekranında e-posta ve parola dışında bir şey istememek, 85 | * Facebook sistemi üzerinden üyelik, 86 | * Kullanıcıya çok seçenek sunmamak, ne istiyorsa onu göstermek, 87 | * A/B Testi. (Eğer ziyaretçi sayınız 1000'in üzerinde değilse yapmayın.) 88 | 89 | ### Tutma (Retention) 90 | 91 | Kullanıcıların sitenize birden fazla gelmesini sağlayacak özellikleri sitenizde bulundurmalısınız. Aksi takdirde kullanıcılar bir daha sitenize gelmeyeceklerdir. 92 | 93 | Tutmaya yarayan bazı özellikler 94 | 95 | * Alarmlar, 96 | * Blog RSS'leri, 97 | * E-posta göndermek, 98 | * Haber RSS, 99 | * Sistem olayları, 100 | * Zaman tabanlı işler, 101 | * Leaderboard. 102 | 103 | ### Sevk (Referral) 104 | 105 | Kullanıcılarınızın sizi diğer kullanıcılara önermesidir. 106 | 107 | * Viral döngüler, 108 | * Widgetler, 109 | * Satış ortaklığı, 110 | * Kampanyalar, 111 | * Davetiye sistemi, 112 | * E-posta göndermek. 113 | 114 | NOT: Uygulamanız mükemmel olmadan böyle bir çabaya girmeyin. Reklamın iyisi de **kötüsüde** olur. Eğer ürününüz hazır değilse kullanıcılar gelecek, beğenmeyecek ve bir daha fikirlerini değiştirmek çok mümkün olmayacaktır. 115 | 116 | ### Gelir (Revenue) 117 | 118 | Kullanıcılardan para kazanma yoludur. Bu daha çok iş modeli ile ilgili bir kısımdır ancak bir internet sitesi aşağıdaki yollardan da para kazanabilir. 119 | 120 | * Reklam alarak, 121 | * Kullanıcılarından iş bağlayarak, 122 | * Aylık bir üyelik ile, 123 | * E-ticaret yaparak, 124 | * Sponsor alarak, 125 | * Kendi içinde sanal bir para yapıp kullanıcılara bunu satarak. (Şunu yapmak için 3 altına ihtiyacınız var gibi...) 126 | 127 | Yapılan uygulamaya ve iş modeline göre girişimci bunlardan birini veya bir kaçını seçebilir. 128 | 129 | ## Araçlar, Servisler & Hizmetler 130 | 131 | **GtMetric** 132 | 133 | Sayfanızın internet standartlarına uygun olup olmadığına bakar ve puan verir. Sayfanızda ki hataları tespit eder, bunları size söyler. 134 | 135 | * http://gtmetrix.com/ 136 | 137 | **Fiver** 138 | 139 | Sosyal medya hesap yönetimi, seo backlink çalışması, e-posta tasarımı, grafik ve içerik tasarımı yapacak insanları burada $5 - $10 dolar arasına bulabilirsiniz. 140 | 141 | * http://fiverr.com/ 142 | 143 | **Google Analytcis** 144 | 145 | Google'ın ücretsiz sunduğu bir servistir. Sayfanıza yapılan ziyaretleri gösterir. Bazı metrikleri ölçmek için kullanabilirsiniz. 146 | 147 | * https://www.google.com/analytics 148 | 149 | **Google Webmaster Tools** 150 | 151 | SEO ile ilgili sitenizde ki yanlışları gösteren google aracıdır. 152 | 153 | * https://www.google.com/webmasters/tools 154 | 155 | **Campaign Monitor** 156 | 157 | E-mail Marketing yapmak için uygun bir araçtır. 12 bin maile kadar ücretsiz gönderimi vardır. 158 | 159 | * http://www.campaignmonitor.com/ 160 | 161 | **Adwords Kelime Bulucu** 162 | 163 | Google reklamları için doğru kelimeleri bulmanızı sağlayan araçtır. 164 | 165 | * http://adwords.google.com/select/KeywordToolExternal 166 | 167 | **SEO için gerekli bazı araçlar** 168 | 169 | SEO için gerekli ücretli ve ücretsiz olan bir servistir. İstenirse günlüğü $10'dan bir SEO uzmanı kiralanır. http://tools.seobook.com/#freew adresinde ücretsiz olanları da vardır. 170 | 171 | * http://tools.seobook.com/ 172 | 173 | **Add This veya Share This** 174 | 175 | Sitenize sosyal medyada paylaşım için gerekli olan kodu üretir. 176 | 177 | * http://www.addthis.com/ 178 | * http://sharethis.com/ 179 | 180 | ## Kaynaklar 181 | 182 | **Videolar** 183 | 184 | * [Dave McClure - Startup Metrics for Pirates: AARRR!](http://www.youtube.com/watch?v=irjgfW0BIrw) 185 | * [Dave McClure - Startup Metrics for Pirates Farklı bir sunum](http://www.ustream.tv/recorded/5336115) 186 | * [Matt Kaplan & Alex Kieft](http://www.knowledgevision.com/aarrr_metrics) 187 | 188 | **Sunumlar** 189 | 190 | * http://www.slideshare.net/dmc500hats/startup-metrics-4-pirates-20-march-2011-sxsw 191 | * http://www.slideshare.net/dmc500hats/startup-metrics-for-pirates-long-version 192 | 193 | **Blog Yazıları** 194 | 195 | * http://blog.acerpro.com.tr/2012/05/dijital-pazarlamada-basarinin-formulu-aarrr/ 196 | * http://colearningbe.wordpress.com/2012/10/02/startup-retreat-custdev/ 197 | -------------------------------------------------------------------------------- /business/images/aarrr-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lab2023/playbook/9a5b59005d17faa8000f00864ecf75758fb44d44/business/images/aarrr-1.jpg -------------------------------------------------------------------------------- /business/kurumsallasma.md: -------------------------------------------------------------------------------- 1 | # Email İmzaları 2 | 3 | Maillerin imzaları aşağıdaki standartta olacaktır. 4 | 5 | ```` 6 | Tayfun Öziş ERİKAN, Genel Koordinatör 7 | LAB2023 AŞ | www.lab2023.com 8 | Pamukkale Teknokent D-Blok 116-117 Denizli / Türkiye 9 | ```` 10 | -------------------------------------------------------------------------------- /business/teklif-hazirlama-surecleri.md: -------------------------------------------------------------------------------- 1 | # Teklifler 2 | 3 | ## İyi Bir Teklifin Unsurları 4 | 5 | Aşağıdaki bilgiler teklifde bulunmalıdır. 6 | 7 | * Firmanızın logosu 8 | * Teklif tarihi 9 | * Geçerlilik süresi 10 | * Termin 11 | * Teklif başlığı 12 | * Kapsam 13 | * Bölüm bölüm uygulamanın özellikleri 14 | * Bölüm bölüm teknik özellikler 15 | * Ücretlendirme ve Ödeme Planı 16 | * Penaltı 17 | * İrtibat personeli 18 | 19 | ## Ücretlendirme 20 | 21 | Projenin bedeli adam gün hesabından yapılır. Ücretlendirme de bir indirim yapılmaz, yapılamaz çünkü bizler zamanımızı satan insanlarız. Burada yapılacak her türlü indirim, zararına yapılan işlerdir. 22 | 23 | ## Ödeme Planı 24 | 25 | Projelerin ödeme planı projenin süresine göre değişmektedir. Ödemeler aylık olmalıdır ve proje bitiminden en fazla iki ay sonrasın son ödeme alınmış olmalıdır. 26 | 27 | Örneğin 4 aylık bir projenin yapılabilecek adil anlaşması, bir peşinat dört taksittir ancak bu ödeme planı müşteri açısından zor olursa yapılabilecek en son ödeme planı bir peşinat, alt taksit olabilir. 28 | 29 | İkinci örnek olarak bir ay sürecek bir projenin süresinin varsayılan teklifi bir peşinat, bir taksit şeklindeyken, ödeme planı müşteri için uygun değilse bir peşinat, üç taksit yapılabilir. 30 | 31 | ## Penaltı 32 | 33 | Penaltı eğer projeyi teslim süresine uymazsak firma olarak ödeyeceğimiz günlük ceza bedelidir. Bu bedel projenin toplam bedelinin, iş gününün üç katına bölünmesiyle bulunur. 34 | 35 | Örneğin 10.000 TL lik ve 20 iş günü sürecek bir projenin günlük penaltı bedeli 10000 / (20 * 3) = 166.6 TL dir. 36 | -------------------------------------------------------------------------------- /development/cevik_proje_yonetimi.md: -------------------------------------------------------------------------------- 1 | # Çevik Süreçler 2 | 3 | Proje yönetimi için çevik süreçler kullanılır. 4 | 5 | * [Çevik Manifesto](http://agilemanifesto.org/iso/tr/) 6 | * [Çevik İlkeler](http://agilemanifesto.org/iso/tr/principles.html) 7 | * [Kanban](http://kanban.lab2023.com) için huboard programını kullanıyoruz. 8 | * Sürüm kontrolü için [semver](http://semver.org/) kullanıyoruz. 9 | 10 | # Huboard 11 | 12 | Huboard' un proje üzerinde uygulanması için github'da aşağıdaki 6 + 4 etiket açılır ve ilgli renk kodları düzenlenir: 13 | 14 | * 0 - Backlog [HEX: #DDDDDD] 15 | * 1 - Ready [HEX: #FBCA04] 16 | * 2 - In Progress [HEX: #07D8E2] 17 | * 3 - Done [HEX: #02E10C] 18 | * 4 - Reviewed [HEX: #1007E2] 19 | * 5 - Rejected [HEX: ##F7C6C7] 20 | * Enhancement [HEX: #84B6EB] 21 | * Bug [HEX: #FC2929] 22 | * Future [HEX: #E6E6E6] 23 | * Question [HEX: #CC307C] 24 | 25 | Etiketlerin anlamları: 26 | 27 | * 0 - **Backlog** : Müşteri ile görüşülmeye devam eden veya görüşülmüş, detaylandırılması sonuçlanmamış, yani henüz analizi tamamlanmamış iş birimi. 28 | * 1 - **Ready** : Analizi tamamlanmış, detaylandırılması yapılmış, geliştirilmeye hazır iş birimi 29 | * 2 - **In Progress** : Geliştirici iş birimini geliştirmeye başlamış, yani geliştiricini hali hazırda üzerinde çalıştığı iş birimi 30 | * 3 - **Done** : Geliştirici iş birimini geliştirmeyi tamamlamış, geliştirme ortamında çalışan iş birimi. 31 | * 4 - **Reviewed** : Geliştiricinin tamamladığı iş birimi kontrol edilmiş, yazım standartlarına uygun olduğu, istenilen işlevi yaptığı ve çalışır olduğu doğrulanmış iş birimi. Üretim ortamına atılabilir, yayınlamaya hazır iş birimi. 32 | * 5 - **Rejected** : Geliştiricinin tamamladığı iş birimi kontrol edilmiş, ancak yazım standartlarına uyulmadığı, istenilen işlevi yapmadığı veya doğru çalışmadığı tespit edilmiş iş birimi. 33 | 34 | ## Github ve Etiketler 35 | 36 | lab2023 projelerinde github'da 4 adet etiket açılır. 37 | 38 | * **Bug** - Hata bildirimleri için kullanılır. 39 | * **Enhancement** - Programdaki bir özelliği veya arayüzü iyileştirmek için kullanılır. 40 | * **Question** - Soru sormak, öneride bulunmak veya tartışmak için kullanılır. 41 | * **Future** - Proje süresince müşterinin aklına gelen ancak anlaşmadığımız gelecekte yapılması planlanan işlerdir. Bunlar yapılmaz ancak fikirler unutulmasın diye future etiketi ile etiketlenir. 42 | 43 | NOT: 44 | 45 | 1. wontfix, dublicate, invalid gibi etiketler kullanılmaz. 46 | 2. Eğer yeni iş istek varsa buna etiket yapılmaz. 47 | 48 | # Semantik Versiyonlama 49 | 50 | lab2023 olarak www.semver.org adresinde ki standartlara göre versiyonlama yapıyoruz. Bu reponun Türkçesini https://github.com/lab2023/semver/blob/master/semver_tr.md adresinde bulabilirsiniz. 51 | 52 | **Kurallar** 53 | 54 | * X.Y.Z şeklinde ifade edilecen bir versiyonlama da X -> Major, Y -> Minor, Z -> Patchi ifade eder. 55 | * Z -> Uygulamaya yapılan hotfix ve typo düzeltmelerinden de yapılır. Yani uygulamaya yeni bir özellik eklemediyseniz, belli bir yerdeki bir hatayı veya yazıyı değiştirdiyseniz Z sayısı değişir. 56 | * Y -> Uygulamaya eklenen yeni özellikler, iyileştirmeler sonucunda değişir. Y deki değişiklikler eski kullanıcıları eklemez. Y de ki değişiklikler **GERİYE UYUMLU**dur. 57 | * X -> Uygulamada yapılan büyük değişikliklerdir. Örneğin yapının komple değişmesi, teknolojinin değişmesi gibi gibi. X de yapılan bir değişiklik **GERİYE UYUMLULUĞU** desteklemez. 58 | * Bir uygulama 0.1.0 versiyonu ile başlar. 59 | * Bir uygulama product olunca 1.0.0 olmalıdır. 60 | * Eğer X = 0 ise o uygulama stable değildir. Yani her an her şeyi değişebilir. Hala develop aşamasındadır. 61 | * Her uygulmanın versiyonunu gösteren bir API si olmalıdır. Yani kullancılar, diğer developerlar mutlaka hangi sürümü kullandıklarını bilmelidir! **Bu programcının birinci ve en önemli görevidir.** 62 | * Versiyonlamada [0-9A-Za-z-] ifadelerini kullanabilirsiniz. 63 | * 1.0.0-alpha.1 gibi prepatchleri kullanmanızı biz lab2023 olarak önermiyoruz. Hayat zaten yeterince karışık! 64 | 65 | # Üretkenlik 66 | 67 | Bu bölümde geliştiricilerin üretkenliğini artırmaya yönelik kurallar vardır. 68 | 69 | * Gelişticiler ile toplantılar günde bir alınır. Bu toplantılar günlük 5 dakikayı geçemez. 70 | * Geliştiricilere işler iteratif olarak haftalık verilir. 71 | * Geliştirici aynı anda iki projeye de çalışmaz. Bir proje bitmeden başka projeye geçemez. 72 | * Mümkün olduğunca iki geliştirici bir projede çalışır. 73 | * Geliştiriciler sorularını mail grubunda sorarlar. Böylece sorular kayıt altına alınır. Aynı sorular iki defa sorulmaz. 74 | * İletişim aracı olarak sırasıyla 1. mail, 2. gtalk, 3. cep telefonu tercih edilir. Böylece geliştiriciler bir birlerini rahatsız etmez. 75 | * lab2023 geliştiricilerine donanım, lisans vb unsurları alması için kredi verir, bu konuda maddi olarak destekler. 76 | -------------------------------------------------------------------------------- /development/check_list.md: -------------------------------------------------------------------------------- 1 | # Kontrol Listesi 2 | 3 | Bir işi yapmadan önce yapılması gereken işlerin listesidir. 4 | 5 | ## Deploy 6 | 7 | * Veritabanı yedeklerinin alınması. 8 | * Yeni bir versiyon atılması. version.txt'nin güncellenmesi. 9 | * Müşterinin projesi ise proje grubuna email atılması 10 | * Açık kaynaklı bir proje ise şirket mail grubuna mail atılması ve konu ile ilgili tweet atılması 11 | 12 | ## Proje Başlangıcı 13 | 14 | Aşağıdaki kontrol listesini açık Kaynaklı veya özel projeler için uygulayınız. 15 | 16 | **Müşteri adına açılacak hesaplar** 17 | 18 | * Gmail mail adresi 19 | * Github hesabı açılması 20 | * Mandrill hesabının açılması 21 | * Amazon S3 hesabının açılması 22 | * İletişim için email grubu açılması 23 | * Facebook app gerekli ise facebook app açılması 24 | * SSL sertifikası alınacak 25 | 26 | **Müşteriye sorulacak sorular** 27 | 28 | * Sosyal medya hesaplarını aldınız mı? 29 | * Marka tescili yaptınız mı? 30 | * Takımın gtalk, email, iletişim bilgileri sizde var mı? 31 | * Sizin adınıza hollywood lansmanı yapalım mı? 32 | 33 | **Ekibin yapması gerekenler** 34 | 35 | * Proje yöneticisi sözleşme ek1′e göre github issuelardan iterasyonları ayarlar. Böylece huboard kullanılmaya başlanır. 36 | * Müşteri ile github, huboard, çevik süreçler ile ilgili kaynaklar paylaşılır. Müşteriye kısa bir bilgi verilir. 37 | * Stagging ve production için sunucu kurulur. Bu işlem daha ilk kod yazılması ile yapılır. 38 | 39 | **Araçlar** 40 | 41 | * Github, git versiyon kontrol sitesi 42 | * Huboard, github etiketleri ile oluşturulmuş bir kanban 43 | * Semver 44 | * Gitflow 45 | * Yapılacak iş listesi 46 | 47 | **Huboard ve topluluk için Github etiketlerini için düzenlemek.** 48 | 49 | * 0 - Backlog [HEX: #DDDDDD] 50 | * 1 - Ready [HEX: #FBCA04] 51 | * 2 - In Progress [HEX: #07D8E2] 52 | * 3 - Done [HEX: #02E10C] 53 | * 4 - Reviewed [HEX: #1007E2] 54 | * 5 - Rejected [HEX: ##F7C6C7] 55 | * Enhancement [HEX: #84B6EB] 56 | * Bug [HEX: #FC2929] 57 | * Future [HEX: #E6E6E6] 58 | * Question [HEX: #CC307C] 59 | 60 | **README.md dosyasını güncellemeyiliz** 61 | 62 | Bu iş için bir standartınız olursa güzel olabilir. 63 | Örnek olarak [https://github.com/kebab-project/cybele/blob/develop/README.md](https://github.com/kebab-project/cybele/blob/develop/README.md) dosyasına bakabilirsiniz 64 | 65 | **VERSION.txt dosyasını eklemeliyiz** 66 | 67 | Unutmamak lazım ki versiyonlamayı Semver.org kullanıyoruz. Unutmayalım ki ilk milestonemuz 0.1.0 olmalıdır. 68 | Bknz [semver.org](semver.org) 69 | 70 | **LICENSE.txt dosyasını eklemeliyiz** 71 | 72 | MIT candır. Örnek olarak [https://github.com/lab2023/builder/blob/master/LICENSE.txt](https://github.com/lab2023/builder/blob/master/LICENSE.txt) 73 | dosyasına bakabilirsiniz. 74 | 75 | **Projeyi [git-flow](https://github.com/nvie/gitflow) ile yönetmeliyiz** 76 | 77 | Etkin geliştirme süreçleri için git branchlar ile manuel uğraşmamamız gerekir. 78 | 79 | **CHANGELOG.md dosyasını oluşturmalıyız** 80 | 81 | Oluşturulan haftalık iterasyonlar, milestone'lar ve issue'ların hangi versiyonlara ait olduğunu gösteren genel bir 82 | changelog oluşturmalıyız. Ve her release'de güncellemeliyiz. Bu süreçleri otomatikleştirmek için hazırladığımız 83 | ruby rake görevlerini içeren [katip](https://github.com/lab2023/katip) adlı projemize göz atabilirsiniz. 84 | 85 | ## Sunucu Kurulumu 86 | 87 | * Firewall var mı? 88 | * Periyodik yedek alınıyor mu? 89 | * Sunucu şifreleri Keepass programına girildi mi? 90 | 91 | ## Siteye Makale Yazılması 92 | 93 | * Yazan kişişi - Mail grubuna mail atmak 94 | * Sosyal medya sorumlusu - Twitter ve Facebook hesabında paylaşılması 95 | 96 | ## Yeni Sürüm Çıkarılması 97 | 98 | **Açık Kaynak Projelerde** 99 | 100 | * VERSION.txt değişmeli 101 | * CHANGELOG.md değişmeli 102 | * Yeni etiket oluşturulmalı 103 | * Yeni etiket, master ve develop branch push edilmeli 104 | * lab2023-dev mail grubuna email atılmalı 105 | 106 | Sonra 107 | 108 | * Yeni versiyon ile ilgili lab2023'e makale yazılmalı. 109 | * Blog yazısında versiyonda ne olduğu anlatılmalı ve rubygems, changelog gibi unsurlara link verilmeli 110 | * Blog yazısı twitter ve facebook hesabından paylaşılmalı 111 | 112 | NOT: Kendinize işkence yapmayın! Git-flow kullanın. 113 | 114 | **Müşteri Projelerinde** 115 | 116 | * VERSION.txt değişmeli 117 | * CHANGELOG.md değişmeli 118 | * Yeni etiket oluşturulmalı 119 | * Yeni etiket, master ve develop branch push edilmeli 120 | * Proje email grubuna email atılmalı 121 | * Staging sunucusuna deploy edilmeli 122 | 123 | NOT: Hotfix olmadıkça yeni sürümler cumadan cumaya çıkar. 124 | -------------------------------------------------------------------------------- /development/database.md: -------------------------------------------------------------------------------- 1 | ## Ruby on Rails Geliştiricileri için PostgreSQL 2 | 3 | Bu belgede lab2023 - internet teknolojileri olarak özel projelerde ve SAAS ürünlerimizde kullandığımız PostgreSQL 4 | veritabanını nasıl kullandığımızı dökümante edilmiştir. Aşağıdaki konuları içerir, 5 | 6 | * Genel Bilgiler 7 | * Kurulum 8 | * DB Yaratma 9 | * Kullanıcılar ve Roller 10 | * Ayarlar 11 | * Performans 12 | * Partition 13 | * Replikasyon 14 | * Backup Restore 15 | * Active Record ve PostgreSQL 16 | 17 | Daha detaylı bilgi için http://www.postgresql.org/files/documentation/pdf/9.2/postgresql-9.2-A4.pdf bakabilirsiniz. 18 | 19 | ## Genel Bilgiler 20 | 21 | ### Genel veritabanı bilgileri 22 | 23 | * 1 TB altındaki veritabanları küçüktür. 24 | * Veritabanında hızdan çok stabil olması önemlidir. 25 | 26 | ### Genel PostgreSQL bilgileri 27 | 28 | * PostgreSQL veritabanı dışındaki işlemleri işletim sistemine bırakır. Yani fazla bir kaynağa gerek yoktur. 29 | * PostgreSQL 32 coredan fazlasını kullanamıyor. 64 core makine satın almaya gerek yoktur! 30 | * Default 24 MB ile geliyor. 31 | * 8.4 versiyonuna kadar yavaş ancak stabil bir versiyonu var. 9.2 den sonra diğer veritabanlarından daha hızlı çalışır. 32 | * 1975-85 yılında invest adıyla ilk yapılıyor. İlk yapım amacı veritabanlarının yeterli komplex işlemleri yapamıyor. 33 | * 1995 yılında PostgreSQL yapılıyor. 10 kişilik bir developer ile yapılıyor. 34 | 35 | ### Limitler 36 | 37 | * Veritabanında bir limit sınırımız yok. 38 | * Bir tablo 32 TB olabilir. 39 | * Bir satırın uzunluğun max 1.6 TB olabilir. 40 | * Bir satırın bir columnu max 1 TB olabilir. 41 | * Bir tabloda 250 den fazla index olmamalı fazlası sıkıntıdır. 42 | 43 | ### Süreçler 44 | 45 | * Postmaster bütün işleri yapar. 46 | * Her işlem bir process olarak olur. 47 | * PostgreSQL i kurduktan bir cluster oluşur. Her cluster bir port kullanır, sistem kaynaklarını ayrıca tüketir. 48 | 49 | ## Kurulum 50 | 51 | ### Ubuntu Server 12.04 52 | 53 | **Gerekli olan kütüphane** 54 | 55 | ```bash 56 | sudo apt-get install libpq-dev 57 | ```` 58 | 59 | **Kurulum** 60 | 61 | ```bash 62 | sudo add-apt-repository ppa:pitti/postgresql 63 | sudo apt-get update 64 | sudo apt-get install postgresql-9.2 65 | ```` 66 | 67 | **Alternatif Kurulum Senaryosu** 68 | 69 | Eğer yukaridaki yöntem başarısız olursa asağıdaki alternatif senaryoyu deneyebilirsiniz. 70 | 71 | ```bash 72 | sudo bash -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > /etc/apt/sources.list.d/pgdg.list' 73 | sudo apt-get update 74 | ``` 75 | 76 | **Güncelleme** 77 | 78 | ```bash 79 | sudo apt-get upgrade 80 | ```` 81 | 82 | **Varsayılan ayar dosyaları** 83 | 84 | ```bash 85 | /etc/postgresql/9.2/main 86 | /var/lib/postgresql/9.2/main 87 | ```` 88 | 89 | ### Ubuntu Server 12.10 90 | 91 | Kuruluma başlamadan önce 92 | 93 | ```$ sudo apt-get update && sudo apt-get upgrade``` 94 | 95 | Ardından Aşağıdaki paket kuruluyor. Bu paketleri kurmamızın sebebi ```add-apt-repository ppa:pitti/postgresql``` komutunu çalıştırabilmek içindir. Bu komut ubuntu 12.10 ile birlikte varsayılan olarak çalışmamakta. 96 | 97 | ```$ sudo apt-get install python-software-properties && sudo apt-get install software-properties-common``` 98 | 99 | Bu işlemlerin ardından postgresql 9.2 için gereken paketi repoya ekliyoruz. 100 | 101 | ```$ sudo add-apt-repository ppa:pitti/postgresql``` 102 | 103 | Bu işlemlerden sonra aşağıdaki komutla repoları güncelliyoruz. 104 | 105 | ```$ sudo apt-get update``` 106 | 107 | Son olarak aşağıdaki komut ile postgresql 9.2 kurulumunu tamamlıyoruz. Ben kurulumu yaptıgım zamanda 9.2.4 kurulumunu yapmıştı. 108 | 109 | ```console 110 | $ sudo apt-get install postgresql-9.2 111 | Reading package lists... Done 112 | Building dependency tree 113 | Reading state information... Done 114 | The following extra packages will be installed: 115 | libpq5 libxml2 postgresql-client-9.2 postgresql-client-common postgresql-common sgml-base ssl-cert xml-core 116 | Suggested packages: 117 | oidentd ident-server locales-all postgresql-doc-9.2 sgml-base-doc openssl-blacklist debhelper 118 | The following NEW packages will be installed: 119 | libpq5 libxml2 postgresql-9.2 postgresql-client-9.2 postgresql-client-common postgresql-common sgml-base 120 | ssl-cert xml-core 121 | 0 upgraded, 9 newly installed, 0 to remove and 2 not upgraded. 122 | Need to get 6,652 kB of archives. 123 | After this operation, 26.3 MB of additional disk space will be used. 124 | Do you want to continue [Y/n]? Y 125 | ..... 126 | ..... 127 | ..... 128 | * Starting PostgreSQL 9.2 database server [ OK ] 129 | Processing triggers for libc-bin ... 130 | ldconfig deferred processing now taking place 131 | Processing triggers for sgml-base ... 132 | Updating the super catalog... 133 | ``` 134 | 135 | ### Mac geliştirme (homebrew) 136 | 137 | ## Cluster yaratma 138 | 139 | ## Dizin yapısı 140 | 141 | ## Kullanıcı ve Roller 142 | 143 | ## Tablespace 144 | 145 | ## Ayarları 146 | 147 | ## DB İşlemleri 148 | 149 | **Create DB** 150 | 151 | * Serverin locale si ayarlanması 152 | * ENCODING'ı unutmayın! 153 | 154 | ```sql 155 | CREATE DATABASE xxxx_production OWNER xxxx ENCODING 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' TEMPLATE template0; 156 | ```` 157 | 158 | **DROP DB** 159 | 160 | ```sql 161 | DROP DATABASE xxxx_production; 162 | ```` 163 | 164 | **Can't Drop Db Sorunsali** 165 | 166 | DB yi kullanan sessionlarin olmasi durumu. 167 | 168 | ```sql 169 | SELECT pid FROM pg_stat_activity where pid <> pg_backend_pid(); 170 | SELECT pg_terminate_backend(pid); 171 | ```` 172 | 173 | ### Bağlantı ve Yetkilendirme 174 | 175 | * http://www.postgresql.org/docs/9.2/interactive/runtime-config-connection.html 176 | 177 | ### Kaynak Tüketimi 178 | 179 | * http://www.postgresql.org/docs/9.2/interactive/runtime-config-resource.html 180 | 181 | ### Logların yazımı 182 | 183 | * http://www.postgresql.org/docs/9.2/interactive/runtime-config-wal.html 184 | 185 | ### Log Ayarları 186 | 187 | * http://www.postgresql.org/docs/9.2/interactive/runtime-config-logging.html 188 | 189 | ### Auto Vacum ve Analiz 190 | 191 | * http://www.postgresql.org/docs/9.2/interactive/routine-vacuuming.html#AUTOVACUUM 192 | * http://www.postgresql.org/docs/9.2/interactive/runtime-config-autovacuum.html 193 | 194 | ## Partition 195 | 196 | ## Replikasyon 197 | 198 | * http://www.postgresql.org/docs/9.2/static/runtime-config-replication.html 199 | 200 | ## Backup - Restore 201 | 202 | * http://www.postgresql.org/docs/9.2/interactive/backup.html 203 | * http://www.muhammetdilek.com/blog/2013/01/21/postgresql-yedek-alma-ve-geri-yukleme/ 204 | * https://github.com/tayfunoziserikan/articles/blob/master/PostgreSQL%20AB2013%20Eg%CC%86itim%20Notlar%C4%B1%20-%20I.md#yedekleme--geri-ykleme-backup--restore 205 | 206 | # Redis 207 | 208 | ## Ubuntu Server Kurulum Talimatları 209 | 210 | ## OSX Kurulum Talimatları 211 | 212 | Redis'i OSX ortamına kurmanın en kolay yolu [Homebrew](http://mxcl.github.com/homebrew/) kullanmaktır. Homebrew OSX için hazırlanmış daha ziyade geliştiricilere yönelik hazırlanmış paketlerin bulunduğu bir repo'dur diyebiliriz. 213 | 214 | Kurulum için aşağıdaki komutu terminalden çalıştırmanız yeterlidir. 215 | 216 | ```bash 217 | $ brew install redis 218 | ``` 219 | 220 | Kurulum işleminiz tamamlandıktan sonra konsola aşağıdaki komutu yazın ve hemen altındakine benzer bir çıktı aldığınızdan emin olun. 221 | 222 | ```bash 223 | $ redis-server 224 | [13193] 07 Jul 21:34:25 # Warning: no config file specified, using the default config. In 225 | order to specify a config file use 'redis-server /path/to/redis.conf' 226 | [13193] 07 Jul 21:34:25 * Server started, Redis version 2.4.15 227 | [13193] 07 Jul 21:34:25 * The server is now ready to accept connections on port 6379 228 | [13193] 07 Jul 21:34:25 - 0 clients connected (0 slaves), 922304 bytes in use 229 | ``` 230 | 231 | Güzel, şimdi yukarıdaki konsol çıktılarını aldığınıza göre redis varsayılan ayarlarla çalışmaya başladı demektir. Eğer redis'in ayarlarını değiştirip kendi belirlediğiniz ayarlarla çalışmasını istiyorsanız aşağıdaki yöntemi deneyin. 232 | 233 | ```bash 234 | $ redis-server /path/to/redis.conf 235 | ``` 236 | 237 | Bunun dısında genellikle tercih edilen bir yöntem de redis config dosyasını ~/.redis dizinine kopyalamanızdır. Böylelikle redis-server başlarken default ayarlarını buradan okuyarak ayaklanacaktır. 238 | 239 | ```bash 240 | $ mkdir ~/.redis 241 | $ cp /usr/local/src/redis-x.x.x/redis.conf 242 | ``` 243 | 244 | -------------------------------------------------------------------------------- /development/development-guide.md: -------------------------------------------------------------------------------- 1 | # Development 2 | 3 | Bu bölüm, lab2023 geliştiricileri için standartların ve notların alındığı bölümdür. 4 | 5 | Toplam beş alt bölümden oluşur. 6 | 7 | 1. Html Css 8 | 2. Javascript 9 | 3. Ruby 10 | 4. Server 11 | 5. Üretkenlik 12 | 13 | Bütün bölümlerin içlerinde o bölüm ile ilgili kaynaklar vardır. 14 | -------------------------------------------------------------------------------- /development/git_github_gitflow.md: -------------------------------------------------------------------------------- 1 | # Git, Github, Git flow 2 | 3 | ## Git 4 | 5 | ## Github 6 | 7 | ## Git Flow 8 | 9 | Git-flow [Vincent Driessen](http://nvie.com/) tarafından etkili dallanma (branching) yapmak için geliştirilmiştir. 10 | 11 | Aşağıdaki dökümanlarda git-flow'un basit kullanımı anlatılmıştır. Daha detaylı kullanım için kaynakçada ki makale ve videoları izleyebilirsiniz. 12 | 13 | ### Temel İpuçları 14 | 15 | * git-flow mükemmel bir komut satırı yardıma ve çıktısına sahiptir. Lütfen okuyun! 16 | * [Sourcetree](http://www.sourcetreeapp.com/) ürünü git-flow için gui sağlıyor. Eğer komut satırı ile aranız yoksa değerlendirebilirsiniz. 17 | 18 | ### Kurulum 19 | 20 | Kurulum esnasında git-flow dal (branch), yayım (release), etiket (tag) ön ekleri ile ilgili size sorular sorar. Bunların hepsini boş bırakırak enter tuşuna başıyoruz. 21 | 22 | **OSX** 23 | 24 | `brew install git-flow` 25 | 26 | **Linux** 27 | 28 | `apt-get install git-flow` 29 | 30 | **Windows** 31 | 32 | Şaka yapıyorsunuz... *nix çekirdekli bir makine kullanın. 33 | 34 | ### Başlayalım 35 | 36 | Havuza (repository) git-flow'un kurulması için `git flow init` kodu koşuyoruz. 37 | Eğer git havuzunuz yoksa, git-flow bunu sizin için hazırlar. 38 | 39 | ### Özellikler (Features) 40 | 41 | * Yeni gelen release için geliştiricilerin eklediği yeni özellikler için 42 | * Sadece mevcut develop havuzuna uygulanır. 43 | 44 | #### Yeni özellik ekleme 45 | 46 | * Diyelim ki size yeni bir görev verildi programa yeni bir özellik ekleyeceksiniz. O zaman develop dalından 47 | 48 | `git flow feature start NEW_FEATURE` 49 | 50 | kodunu çalıştıracaksınız. Bu kod size develop branchtan türemiş yeni bir dal varecektir. 51 | 52 | #### Yeni özelliğin bitirilmesi 53 | 54 | Yeni özelliği bitirilmesi 55 | 56 | * NEW_FEATURE dalını develop dalına birleştirir (merge) 57 | * NEW_FEATURE dalını kaldırır 58 | * Varsayılan dalı develop yapar 59 | 60 | `git flow feature finish NEW_FEATURE` 61 | 62 | #### Yeni özelliği yayınlama 63 | 64 | Eğer bu yeni özelliği birden fazla developer ile geliştiriyorsanız uzak sunucuyada göndermeniz gerekmektedir. Eğer sadece siz kodluyorsanız yapmayınız. 65 | 66 | `git flow feature publish NEW_FEATURE` 67 | 68 | #### Yayınlanmış bir özelliği alma 69 | 70 | Eğer bir geliştiricinin yayınladığı özelliği almanız gerekiyorsa 71 | 72 | `git flow feature pull NEW_FEATURE` 73 | 74 | yapmalısınız. 75 | 76 | ### Yayım (release) yapma 77 | 78 | * Yeni ürünüzün producta hazırlamanızı sağlar. 79 | * Bu yapı ile ürünlerinize hotfix imkanı gelir ve yayım olunca otomatik etiketlenir. 80 | 81 | #### Yayıma başlama 82 | 83 | Yeni bir yayıma başlamak için git-flow'un `release` kodunu kullanırız. 84 | 85 | `git flow release start RELEASE` 86 | 87 | Örneğin `git flow release start 0.1.0` gibi 88 | 89 | Eğer aynı özellik gibi yayımıda yayınlamak isterseniz 90 | 91 | `git flow release publish RELEASE` 92 | 93 | yapmanız gerekmektedir. 94 | 95 | #### Yayımı bitirme 96 | 97 | Bir yayımın bitmesi git-flow için büyük bir iştir. Aşağıdakileri yapar. 98 | 99 | * release dalını master dalına birleştirir (merge) 100 | * master dalını etiketler (tag) 101 | * release dalını develop dalı ile birleştirir 102 | * ilgili release dalını siler 103 | 104 | ### Düzeltmeler (Hotfixes) 105 | 106 | * Kullanılmakta olan bir uygulamada beklenmeyen hatalar oluşabilir. Bunların hızlı bir şekilde düzenlenmesi gerekmektedir. 107 | * Bu düzelmeler yeni bir versiyon ile tekrer sunucuya gönderilmelidir. 108 | 109 | #### Düzenlemeye başlama 110 | 111 | `git flow hotfix start VERSION` 112 | 113 | #### Düzenlemeyi bitirme 114 | 115 | `git flow hotfix finish VERSION` 116 | 117 | ### Komutlar 118 | 119 | * git flow init 120 | * git flow feature start NEW_FEATURE 121 | * git flow feature finish NEW_FEATURE 122 | * git flow feature publish NEW_FEATURE 123 | * git flow feature pull NEW_FEATURE 124 | * git flow release start RELEASE 125 | * git flow release publish RELEASE 126 | * git flow release finish RELEASE 127 | * git flow hotfix start VERSION 128 | * git flow hotfix finish VERSION 129 | 130 | **Kaynaklar** 131 | 132 | * https://github.com/nvie/gitflow 133 | * http://nvie.com/posts/a-successful-git-branching-model/ 134 | * http://danielkummer.github.com/git-flow-cheatsheet/ 135 | * http://buildamodule.com/video/change-management-and-version-control-deploying-releases-features-and-fixes-with-git-how-to-use-a-scalable-git-branching-model-called-gitflow 136 | * http://vimeo.com/16018419 137 | * http://vimeo.com/37408017 138 | -------------------------------------------------------------------------------- /development/html_css.md: -------------------------------------------------------------------------------- 1 | # HTML5 2 | 3 | # ERB 4 | 5 | * Hiç bir yerde ERB kullanmıyoruz. Haml kullanıyoruz. 6 | 7 | # HAML 8 | 9 | * http://haml.info/ 10 | 11 | # CSS 12 | 13 | * CSS kullanmıyoruz. SASS kullanıyoruz. 14 | 15 | # SASS 16 | 17 | * http://sass-lang.com/ 18 | * http://compass-style.org/ 19 | 20 | # TWITTER BOOTSTRAP 21 | 22 | * http://twitter.github.com/bootstrap/ 23 | 24 | -------------------------------------------------------------------------------- /development/images/aarrr-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lab2023/playbook/9a5b59005d17faa8000f00864ecf75758fb44d44/development/images/aarrr-1.jpg -------------------------------------------------------------------------------- /development/javascript.md: -------------------------------------------------------------------------------- 1 | # JAVASCRIPT 2 | 3 | # JQuery 4 | 5 | * http://jquery.com/ 6 | * http://try.jquery.com/ 7 | 8 | # COFFEESCRIPT 9 | 10 | * http://coffeescript.org/ 11 | 12 | # SENCHA EXT JS - SENCHA TOUCH 13 | 14 | * http://www.sencha.com/products/extjs 15 | * http://www.sencha.com/products/touch/ 16 | -------------------------------------------------------------------------------- /development/laptop.md: -------------------------------------------------------------------------------- 1 | # Geliştirme Ortamın Ayarlanması 2 | 3 | ## Mac 4 | 5 | ### İletişim 6 | 7 | * GTalk 8 | * Google Mail grubu 9 | * Xchat Azur 10 | 11 | ### İş Takibi 12 | 13 | * Basecamp 14 | 15 | ### Üretkenlik 16 | 17 | * Google Chrome 18 | * Twitter 19 | * Marked 20 | * Keynote 21 | * iBook 22 | * KeepAssX-2.0 23 | * Camtasia for mac 24 | * Mac Keeper 25 | * Dropbox 26 | 27 | ### Tasarım 28 | 29 | * Pixelmator 30 | * GIMP 31 | 32 | ### Geliştirme 33 | 34 | * SourceTree 35 | * Sublime 2 36 | * RubyMine 37 | * FileZilla 38 | * Dash 39 | * http://www.iterm2.com/ 40 | * Virtual Box 41 | 42 | ### Kütüphane 43 | 44 | * xCode 45 | * Command Line within xCode 46 | * Mac Intstaller 47 | * Pow 48 | 49 | ## Ubuntu 50 | 51 | * Rbenv 52 | -------------------------------------------------------------------------------- /development/mukemmel_proje.md: -------------------------------------------------------------------------------- 1 | Bir uygulamanın müşterinin istediği şekilde tam ve eksiksiz çalışması onu mükemmel yapmaz!. Çünkü müşterilerimiz bizim 2 | kadar ne **pazarlama** ne de **teknik** bilgiye sahiptir. Bir uygulamanın mükemmel olması için o uygulamanın 3 | müşterinin hayallerini gerçekleştirmesine yardımcı olması gerekir. 4 | 5 | Eğer müşterinin hayali sahibinden.com gibi bir siteye sahip olmak ise bizim müşterimize, o istemese bile, aşağıdaki 6 | maddeleri tek tek anlatmamız ve projeye eklememiz gerekmektedir. Aksi halde uygulama müşterinin isteklerini gerçekleştirse 7 | bile hayallerini gerçekleştirmeyeceğinden mükemmel bir uygulama olmayacaktır. 8 | 9 | # Uygulamanın Performansı ve Ölçeklenmesi 10 | 11 | İyi bir yazılım performanslı ve ölçeklenebilir olması gerekir. 12 | 13 | ## Veritabanı 14 | 15 | * Veritabanınında replikasyon 16 | * Veritabanı tablolarında bölümleme (partition) 17 | 18 | ## Statik içerikler 19 | 20 | * Uygulamaların CDN desteği olmalıdır. 21 | 22 | ## Web sunucusu 23 | 24 | * Uygulama birden fazla web sunucusuna dağıtılabilmelidir. Nginx load-blance 25 | 26 | # Uygulamanın Pazarlama Stratejisine Uygunluğu 27 | 28 | Bütün uygulamalarda pazarlama unsuru olması gerekmez ancak start-up'ların bir çoğunda pazarlama 29 | hatta internet üzerinden pazarlama vardır. Bir çok müşteri fikrine çok inanır ancak fikirler ne 30 | kadar özgün olursa olsun pazarlama olmadan olmaz!. Bizler müşterilerimize pazarlama konusunda da 31 | yardımcı olmak zorundayız. 32 | 33 | * Yapılan uygulamada bir pazarlama unsuru olacak mı ? 34 | * Eğer olacaksa internet üzerinden tanıtım ve satış yapılacak mı ? 35 | * Müşterinin daha önce kullandığı bir CRM var mı ? 36 | 37 | ## AARRR 38 | 39 | AARRR, [Dave McClure](https://twitter.com/davemcclure) tarafından internet projelerinin başarılarının ölçülmesini sağlayan beş aşamadan oluşan bir yöntemdir. Bizler yazılımlarmızı [AARRR](https://github.com/lab2023/playbook/blob/master/tr/901-AARRR.md) süreçlerini destekleyecek şekilde yazmaya özen gösteriyoruz. 40 | 41 | ## Satış Ortaklığı 42 | 43 | ## Davetiye Sistemi 44 | 45 | ## Widgets 46 | 47 | # Uygulamanın Diğer Uygulamalar ile Entegrasyonu 48 | 49 | ## API 50 | 51 | Her uygulamanın API'ye ihtiyacı yoktur ancak API'si olan uygulamalar diğer sistemler ile entegrasyona açık olduklarından ticari olarak daha başarılıdırlar. 52 | 53 | * https://github.com/applicake/doorkeeper 54 | 55 | ## JSON Response type 56 | 57 | * Web uygulamalarına sadece kullanıcılar değil mobil ve diğer web uygulamalarıda erişir. Eğer bir veri herkezin kullanımına açık ise bu verinin rahat bir şekilde kullanılabilmesi için JSON formatında da sunulması gerekmektedir. 58 | 59 | # Destek ve Geri bildirim Servisler 60 | 61 | Bir uygulama yapması gereken işleri yapmalıdır. Uygulama için destek, geri bildirim gibi ihtiyaçlar 3. parti servisler tarafından karşılanmalıdır. 62 | 63 | Bizler destek için http://www.desk.com 'u öneriyoruz. Basitçe özellikleri; 64 | 65 | * Bilgi Havuzu, 66 | * Twitter, facebook, e-posta ile gelen soruların bir yerde toplanması, 67 | * Canlı destek, 68 | * Özelleştirilebilmesi, 69 | * Esnek ödeme seçenekleri, Birinci kullanıcı ücretsiz 70 | 71 | Geri bildirim süreçleri için eğer desk.com karmaşık gelirse http://www.userreport.com/ servisini öneriyoruz. Bu serviste ücretsizdir. 72 | -------------------------------------------------------------------------------- /development/productivity.md: -------------------------------------------------------------------------------- 1 | # GIT, GITHUB, GITFLOW 2 | 3 | ## Git 4 | 5 | ## Github 6 | 7 | ## Git-flow 8 | 9 | Git-flow [Vincent Driessen](http://nvie.com/) tarafından etkili dallanma (branching) yapmak için geliştirilmiştir. 10 | 11 | Aşağıdaki dökümanlarda git-flow'un basit kullanımı anlatılmıştır. Daha detaylı kullanım için kaynakçada ki makale ve videoları izleyebilirsiniz. 12 | 13 | ### Temel İpuçları 14 | 15 | * git-flow mükemmel bir komut satırı yardıma ve çıktısına sahiptir. Lütfen okuyun! 16 | * [Sourcetree](http://www.sourcetreeapp.com/) ürünü git-flow için gui sağlıyor. Eğer komut satırı ile aranız yoksa değerlendirebilirsiniz. 17 | 18 | ### Kurulum 19 | 20 | Kurulum esnasında git-flow dal (branch), yayım (release), etiket (tag) ön ekleri ile ilgili size sorular sorar. Bunların hepsini boş bırakırak enter tuşuna başıyoruz. 21 | 22 | **OSX** 23 | 24 | `brew install git-flow` 25 | 26 | **Linux** 27 | 28 | `apt-get install git-flow` 29 | 30 | **Windows** 31 | 32 | Şaka yapıyorsunuz... *nix çekirdekli bir makine kullanın. 33 | 34 | ### Başlayalım 35 | 36 | Havuza (repository) git-flow'un kurulması için `git flow init` kodu koşuyoruz. Unutmayın git-flow için sizin önceden git havuzunuz olmalıdır. 37 | 38 | ### Özellikler (Features) 39 | 40 | * Yeni gelen release için geliştiricilerin eklediği yeni özellikler için 41 | * Sadece mevcut develop havuzuna uygulanır. 42 | 43 | #### Yeni özellik ekleme 44 | 45 | * Diyelim ki size yeni bir görev verildi programa yeni bir özellik ekleyeceksiniz. O zaman develop dalından 46 | 47 | `git flow feature start NEW_FEATURE` 48 | 49 | kodunu çalıştıracaksınız. Bu kod size develop branchtan türemiş yeni bir dal varecektir. 50 | 51 | #### Yeni özelliğin bitirilmesi 52 | 53 | Yeni özelliği bitirilmesi 54 | 55 | * NEW_FEATURE dalını develop dalına birleştirir (merge) 56 | * NEW_FEATURE dalını kaldırır 57 | * Varsayılan dalı develop yapar 58 | 59 | `git flow feature finish NEW_FEATURE` 60 | 61 | #### Yeni özelliği yayınlama 62 | 63 | Eğer bu yeni özelliği birden fazla developer ile geliştiriyorsanız uzak sunucuyada göndermeniz gerekmektedir. Eğer sadece siz kodluyorsanız yapmayınız. 64 | 65 | `git flow feature publish NEW_FEATURE` 66 | 67 | #### Yayınlanmış bir özelliği alma 68 | 69 | Eğer bir geliştiricinin yayınladığı özelliği almanız gerekiyorsa 70 | 71 | `git flow feature pull NEW_FEATURE` 72 | 73 | yapmalısınız. 74 | 75 | ### Yayım (release) yapma 76 | 77 | * Yeni ürünüzün producta hazırlamanızı sağlar. 78 | * Bu yapı ile ürünlerinize hotfix imkanı gelir ve yayım olunca otomatik etiketlenir. 79 | 80 | #### Yayıma başlama 81 | 82 | Yeni bir yayıma başlamak için git-flow'un `release` kodunu kullanırız. 83 | 84 | `git flow release start RELEASE` 85 | 86 | Örneğin `git flow release start 0.1.0` gibi 87 | 88 | Eğer aynı özellik gibi yayımıda yayınlamak isterseniz 89 | 90 | `git flow release publish RELEASE` 91 | 92 | yapmanız gerekmektedir. 93 | 94 | #### Yayımı bitirme 95 | 96 | Bir yayımın bitmesi git-flow için büyük bir iştir. Aşağıdakileri yapar. 97 | 98 | * release dalını master dalına birleştirir (merge) 99 | * master dalını etiketler (tag) 100 | * release dalını develop dalı ile birleştirir 101 | * ilgili release dalını siler 102 | 103 | ### Düzeltmeler (Hotfixes) 104 | 105 | * Kullanılmakta olan bir uygulamada beklenmeyen hatalar oluşabilir. Bunların hızlı bir şekilde düzenlenmesi gerekmektedir. 106 | * Bu düzelmeler yeni bir versiyon ile tekrer sunucuya gönderilmelidir. 107 | 108 | #### Düzenlemeye başlama 109 | 110 | `git flow hotfix start VERSION` 111 | 112 | #### Düzenlemeyi bitirme 113 | 114 | `git flow hotfix finish VERSION` 115 | 116 | ### Komutlar 117 | 118 | * git flow init 119 | * git flow feature start NEW_FEATURE 120 | * git flow feature finish NEW_FEATURE 121 | * git flow feature publish NEW_FEATURE 122 | * git flow feature pull NEW_FEATURE 123 | * git flow release start RELEASE 124 | * git flow release publish RELEASE 125 | * git flow release finish RELEASE 126 | * git flow hotfix start VERSION 127 | * git flow hotfix finish VERSION 128 | 129 | **Kaynaklar** 130 | 131 | * https://github.com/nvie/gitflow 132 | * http://nvie.com/posts/a-successful-git-branching-model/ 133 | * http://danielkummer.github.com/git-flow-cheatsheet/ 134 | * http://buildamodule.com/video/change-management-and-version-control-deploying-releases-features-and-fixes-with-git-how-to-use-a-scalable-git-branching-model-called-gitflow 135 | * http://vimeo.com/16018419 136 | * http://vimeo.com/37408017 -------------------------------------------------------------------------------- /development/resources.md: -------------------------------------------------------------------------------- 1 | # Linux 2 | 3 | # Tasarım 4 | 5 | # Html & Css 6 | 7 | ## Html 8 | 9 | ### Basit 10 | 11 | * [Dash](https://dash.generalassemb.ly) 12 | * [Code Academy](http://www.codecademy.com/courses/web-beginner-en-HZA3b/0/1) 13 | * [Html Dog](http://htmldog.com/guides/html/beginner) 14 | * [Teamtreehouse](http://teamtreehouse.com/learning-adventures/learn-html-and-css) 15 | 16 | ### Orta 17 | 18 | ### İleri 19 | 20 | # Javascript 21 | 22 | # Ruby Env. 23 | 24 | # iOS 25 | 26 | # Productivity 27 | -------------------------------------------------------------------------------- /development/ruby.md: -------------------------------------------------------------------------------- 1 | # Ruby ekosistemi 2 | 3 | lab2023 olarak projelerimizi daha çok Ruby ekosisteminde yapmaktayız. 4 | 5 | ## Ruby 6 | 7 | Ruby nesne tabanlı bir programlama dilidir. 8 | 9 | **Websitesi** 10 | * http://www.ruby-lang.org 11 | 12 | **Popüler Kütüphanelerin arandığı site** 13 | * https://www.ruby-toolbox.com 14 | 15 | ### Kaynaklar 16 | 17 | **İnteraktif** 18 | 19 | * http://tryruby.org/levels/1/challenges/0 20 | * http://www.codeschool.com/courses/tag/ruby 21 | * http://rubymonk.com/learning/books 22 | 23 | **Videolar** 24 | 25 | * http://www.lynda.com/Ruby-tutorials/essential-training/47905-2.html 26 | * https://cooperpress.com/19walkthrough 27 | 28 | **Kitaplar** 29 | 30 | * http://www.amazon.com/Programming-Ruby-1-9-Pragmatic-Programmers/dp/1934356085 31 | * http://www.amazon.com/Metaprogramming-Ruby-Program-Like-Pros/dp/1934356476/ref=pd_sim_b_9 32 | * http://www.amazon.com/Practical-Object-Oriented-Design-Ruby-Addison-Wesley/dp/0321721330/ref=pd_sim_b_13 33 | * http://www.amazon.com/Design-Patterns-Ruby-Russ-Olsen/dp/0321490452/ref=pd_sim_b_20 34 | 35 | ## Rack 36 | ## Rake 37 | ## Bundler Gemfile 38 | ## Rails 39 | 40 | Rails, DHH tarafından oluşturulmuş Ruby dilindeki web frameworküdür. 41 | 42 | # Background jobs 43 | Kullancıyı süre olarak bekletecek işlemleri arkaplan işlerine alıyoruz. Örneğin mail göndermek, excelden veri almak gibi. 44 | ## Resque 45 | [resque](https://github.com/defunkt/resque) Arkaplan işlerini yönetir. 46 | ## resque_mailer 47 | [resque_mailer](https://github.com/zapnap/resque_mailer) mailleri arkaplan işlerine alıyor. 48 | # Full text search 49 | Proje başlangıcında full text search kullanmıyoruz. Projenin ilerleyen aşamalarında durumuna göre entegre ediyoruz. 50 | ## Sphinx 51 | Rails' te [thinking-sphinx](https://github.com/pat/thinking-sphinx) gem' i ile kullanıyoruz. Detaylı döküman http://pat.github.com/ts/en/ 52 | 53 | # Ruby Gems 54 | 55 | ## Client Side 56 | 57 | ### Twitter Bootstrap 58 | 59 | #### bootstrap-saas 60 | Twitter Bootstrap' ın Sass versiyonunu Rails' e entegre ediyor. 61 | 62 | * https://www.ruby-toolbox.com/categories/css_with_ruby#bootstrap-sass 63 | * https://github.com/thomas-mcdonald/bootstrap-sass 64 | * http://rubydoc.info/gems/bootstrap-sass/frames 65 | 66 | #### bootstrap-wysihtml5-rails 67 | Bootstrap temalı HTML5 wysing editör. 68 | 69 | * https://www.ruby-toolbox.com/projects/bootstrap-wysihtml5-rails 70 | * https://github.com/Nerian/bootstrap-wysihtml5-rails 71 | * http://rubydoc.info/gems/bootstrap-wysihtml5-rails/frames 72 | 73 | #### haml 74 | Markup language. 75 | 76 | * http://haml-lang.com 77 | * https://www.ruby-toolbox.com/projects/haml 78 | * https://github.com/haml/haml 79 | * Ruby doc linki 80 | * http://screencasts.org/episodes/introduction-to-haml 81 | * http://www.youtube.com/watch?v=ILt6q_o2hts 82 | 83 | #### haml-rails 84 | Haml - Rails entegrasyonu yapar. 85 | 86 | * https://www.ruby-toolbox.com/projects/haml-rails 87 | * https://github.com/indirect/haml-rails 88 | * Ruby doc linki 89 | * http://screencasts.org/episodes/using-haml-with-rails-3 90 | 91 | #### bootstrap-datepicker-rails 92 | Bootstrap temalı date picker. 93 | 94 | * ruby-toolbox linki 95 | * https://github.com/Nerian/bootstrap-datepicker-rails 96 | * Ruby doc linki 97 | 98 | #### breadcrumbs_on_rails 99 | Breadcrumb(ekmek kırıntısı) için kullanıyoruz. 100 | 101 | * ruby-toolbox linki 102 | * https://github.com/weppos/breadcrumbs_on_rails 103 | * Ruby doc linki 104 | 105 | #### client_side_validations 106 | Modeldeki validasyonları alıp javascript ile client side' ta yapıyor. 107 | 108 | * ruby-toolbox linki 109 | * https://github.com/bcardarella/client_side_validations 110 | * Ruby doc linki 111 | * http://railscasts.com/episodes/263-client-side-validations 112 | 113 | #### compass-rails 114 | Sass mixin kütüphanesi. 115 | 116 | * ruby-toolbox linki 117 | * https://github.com/chriseppstein/compass 118 | * Ruby doc linki 119 | * http://railscasts.com/episodes/334-compass-css-sprites 120 | 121 | #### simple_form 122 | Form generator. 123 | 124 | * ruby-toolbox linki 125 | * https://github.com/plataformatec/simple_form 126 | * Ruby doc linki 127 | * http://railscasts.com/episodes/234-simple-form 128 | 129 | #### chosen-rails 130 | [chosen](https://github.com/harvesthq/chosen) javascript kütüphanesini projeye entegre etmemizi sağlıyor. Chosen uzun ve hantal select box' ları güzelleştiriyor. 131 | 132 | * ruby-toolbox linki 133 | * https://github.com/tsechingho/chosen-rails 134 | * Ruby doc linki 135 | 136 | #### cocoon 137 | Nested formları yönetmemizi sağlıyor. Form generator için gem kullanıyorsanız Gemfile' da hemen o gemin altına ekleyiniz. Böyle olmadığı zaman production' da çalışmıyor. Alternatif olarak https://github.com/ryanb/nested_form kullanılabilir. Fakat client side validasyonlarda sıkıntı çıkarıyor. 138 | 139 | * ruby-toolbox linki 140 | * https://github.com/nathanvda/cocoon 141 | * http://rubydoc.info/gems/cocoon/1.1.2/frames 142 | 143 | ## Server Side 144 | 145 | #### https://github.com/kjvarga/sitemap_generator 146 | sitemap.xml.gz oluşturur. 147 | 148 | * https://github.com/kjvarga/sitemap_generator 149 | 150 | #### rails_config 151 | Projeye config ayarları eklememizi sağlıyor. 152 | 153 | * ruby-toolbox linki 154 | * https://github.com/railsjedi/rails_config 155 | * Ruby doc linki 156 | 157 | #### to_xls 158 | Excel export yapar. 159 | 160 | * ruby-toolbox linki 161 | * https://github.com/arydjmal/to_xls 162 | * Ruby doc linki 163 | 164 | #### state_machine 165 | Durum yönetimi yapıyor. 166 | 167 | * ruby-toolbox linki 168 | * https://github.com/pluginaweek/state_machine 169 | * Ruby doc linki 170 | * http://railscasts.com/episodes/392-a-tour-of-state-machines 171 | 172 | #### savon 173 | SOAP client. 174 | 175 | * ruby-toolbox linki 176 | * https://github.com/savonrb/savon 177 | * Ruby doc linki 178 | * http://railscasts.com/episodes/290-soap-with-savon 179 | 180 | #### ransack 181 | Arama ve sıralama. 182 | 183 | * ruby-toolbox linki 184 | * https://github.com/ernie/ransack 185 | * Ruby doc linki 186 | * http://railscasts.com/episodes/370-ransack 187 | 188 | #### whenever 189 | Zamanlanmış görevler. 190 | 191 | * ruby-toolbox linki 192 | * https://github.com/javan/whenever 193 | * Ruby doc linki 194 | * http://railscasts.com/episodes/164-cron-in-ruby-revised 195 | 196 | #### resque 197 | Arkaplan işlerini yönetir. 198 | 199 | * ruby-toolbox linki 200 | * https://github.com/defunkt/resque 201 | * Ruby doc linki 202 | * http://railscasts.com/episodes/271-resque 203 | 204 | #### cancan 205 | Kullanıcı yetkilendirmesi yapıyor. 206 | 207 | * ruby-toolbox linki 208 | * https://github.com/ryanb/cancan 209 | * Ruby doc linki 210 | * http://railscasts.com/episodes/192-authorization-with-cancan 211 | 212 | #### friendly_id 213 | İnsancıl url üretir. 214 | 215 | * ruby-toolbox linki 216 | * https://github.com/norman/friendly_id 217 | * Ruby doc linki 218 | * http://railscasts.com/episodes/314-pretty-urls-with-friendlyid 219 | 220 | #### devise 221 | Kullanıcı authentication. 222 | 223 | * ruby-toolbox linki 224 | * https://github.com/plataformatec/devise 225 | * Ruby doc linki 226 | * http://railscasts.com/episodes/235-devise-and-omniauth-revised 227 | * http://railscasts.com/episodes/209-devise-revised 228 | * http://railscasts.com/episodes/209-introducing-devise 229 | * http://railscasts.com/episodes/210-customizing-devise 230 | * http://railscasts.com/episodes/233-engage-with-devise 231 | * http://railscasts.com/episodes/235-omniauth-part-1 232 | * http://railscasts.com/episodes/236-omniauth-part-2 233 | 234 | #### globalize3 235 | Model katmanına çoklu dil desteği eklemek için kullanıyoruz. 236 | 237 | * ruby-toolbox linki 238 | * https://github.com/svenfuchs/globalize3 239 | * Ruby doc linki 240 | * http://railscasts.com/episodes/338-globalize3 241 | 242 | 243 | #### devise_invitable 244 | Kullanıcı davet sistemi için kullanıyoruz. İsmindende anlaşılacağı gibi devise gemi ile birlikte çalışıyor. 245 | 246 | * ruby-toolbox linki 247 | * https://github.com/scambra/devise_invitable 248 | * Ruby doc link 249 | 250 | #### enumerize 251 | ActiveRecord ve i18n destekli enum türünde veri oluşturmamızı sağlıyor. Örneğin `homes` tablosundaki `home_type` alanı için model katmanında enumları belirleyerek kullanabiliriz. Simple Form desteği mevcut. 252 | * ruby-toolbox linki 253 | * https://github.com/brainspec/enumerize 254 | * http://rubydoc.info/gems/enumerize/0.5.1/frames 255 | 256 | #### validates_timeliness 257 | Tarih validasyonları için kullanıyoruz. 258 | 259 | * https://github.com/adzap/validates_timeliness 260 | 261 | ## Development Tools 262 | 263 | #### letter_opener 264 | Geliştirme sürecinde proje içerisindeki mailleri göndermek yerine tarayıcıdan gösteriyor. Oluşturulan mailleri ise `tmp` klasörünün altına atıyor. 265 | 266 | * https://github.com/ryanb/letter_opener 267 | 268 | #### sextant 269 | Geliştirme sürecinde route' ları veiwde gösteren bir gem. rails 4 ile birlikte varsayılan olarak geliyor. 270 | 271 | * ruby-toolbox linki 272 | * https://github.com/schneems/sextant 273 | * Ruby doc linki 274 | 275 | #### better_errors 276 | Rails' in standart error sayfasını daha kullanışlı bir sayafa ile değiştiriyor. 277 | 278 | * ruby-toolbox linki 279 | * https://github.com/charliesome/better_errors 280 | * Ruby doc linki 281 | * http://railscasts.com/episodes/402-better-errors-railspanel 282 | 283 | #### binding_of_caller 284 | Better errors için hata veren instancelerin inpectionlarının görünmesini sağlar. 285 | Better Errors' advanced features(REPL, local/instance variable inspection, pretty stack frame names) 286 | 287 | #### rails_panel & meta_request 288 | Google chrome ile rails'ın debug edilmesine yarıyor. 289 | 290 | * https://github.com/dejan/rails_panel 291 | * https://www.ruby-toolbox.com/gems/meta_request 292 | * http://railscasts.com/episodes/402-better-errors-railspanel 293 | 294 | #### bullet 295 | Uygulamadaki N+1 problemlerini tespit ediyor. 296 | 297 | * https://github.com/flyerhzm/bullet 298 | * http://railscasts.com/episodes/372-bullet 299 | 300 | #### annotate 301 | Modellerin başlarına gerekli açıklamalari koyuyor. 302 | 303 | * https://github.com/ctran/annotate_models 304 | * http://rubydoc.info/gems/annotate/2.5.0/frames 305 | 306 | ## i18n Data 307 | 308 | #### rails-i18n 309 | Rails için bir çok dilde tarih, saat, pluralization vb i18n dosyalarını barındırır. 310 | 311 | * https://github.com/svenfuchs/rails-i18n/ 312 | 313 | #### devise-i18n 314 | Devise geminin bir çok dilde i18n dasyalarını barındırır. 315 | 316 | * https://github.com/tigrish/devise-i18n 317 | 318 | #### i18n_generators 319 | Modellerin locale dosyalarını oluşturur ve eski dosyalar ile senkronize eder. 320 | 321 | * http://github.com/amatsuda/i18n_generators 322 | 323 | #### tolk 324 | Yml formatında ki dil dosyalarının çevrilmesi için bir arayüz sağlar. 325 | 326 | * http://rubygems.org/gems/tolk 327 | * http://rubydoc.info/gems/tolk/1.3.9/frames 328 | * https://github.com/tolk/tolk 329 | -------------------------------------------------------------------------------- /development/scrum.md: -------------------------------------------------------------------------------- 1 | # Scrum 2 | 3 | ## Roller 4 | 5 | ### Ürün Sahibi 6 | ### Süreç Yöneticisi 7 | ### Geliştirme Takımı 8 | 9 | ## Toplantılar 10 | 11 | ### Sprint Planlama Toplantısı 12 | ### Günlük Scrum Toplantıları 13 | 14 | * Sabah 08.30 - 08.45 arasında alınır. 15 | 16 | ### Sprint Değerlendirme Toplantısı 17 | ### Sprint Süreç Değerlendirme Toplantısı 18 | 19 | ## Çıktılar 20 | 21 | ### Ürün Tanımı 22 | ### Sprint Tanımı 23 | -------------------------------------------------------------------------------- /development/server.md: -------------------------------------------------------------------------------- 1 | # Ubuntu Server 12.10 2 | 3 | Ubuntu Server'ı kurup root kullanıcısı ile terminalden ssh bağlantısını oluşturduğunuzu varsayıyoruz. 4 | Aşağıdaki işlemleri sırasyıla takip edin; 5 | 6 | ## Varsayılan SSH Port Numarasını Değiştirin 7 | 8 | ```bash 9 | $ nano /etc/ssh/sshd_config 10 | # What ports, IPs and protocols we listen for 11 | # Port 22 -> Bu satıra rasgele bir port numarası veriniz. 12 | $ /etc/init.d/ssh restart 13 | ``` 14 | 15 | ## Mevcut Paketleri Güncelleyin 16 | 17 | ```bash 18 | $ apt-get update && apt-get upgrade 19 | ``` 20 | 21 | ## Aşağıdaki Paketleri Kurun 22 | 23 | Bu paketleri kurmamızın sebebi ```add-apt-repository ppa:*/*``` gibi kanal ekleme komutunu çalıştırabilmek içindir. 24 | Bu komut ubuntu 12.10 ile birlikte varsayılan olarak çalışmamaktadır. 25 | 26 | ```bash 27 | $ sudo apt-get install python-software-properties && sudo apt-get install software-properties-common 28 | ``` 29 | 30 | ## Locale Uyarılarından Kurtulun 31 | 32 | ```bash 33 | $ export LANGUAGE=en_US.UTF-8 && export LANG=en_US.UTF-8 && export LC_ALL=en_US.UTF-8 && locale-gen en_US.UTF-8 && sudo dpkg-reconfigure locales 34 | ``` 35 | 36 | ## Eğer Sunucuda Apache2 ve MySQL gibi şu anda kullanmak istemeceğiniz paketler varsa kaldırın. 37 | 38 | ``` 39 | $ dpkg --get-selections # Size mevcut kurulu paketleri gösterir 40 | $ sudo apt-get --purge remove apache2* 41 | $ service apache2 stop 42 | $ sudo apt-get remove --purge mysql-server mysql-client mysql-common 43 | $ sudo apt-get autoremove 44 | $ sudo apt-get autoclean 45 | ``` 46 | 47 | ## Htop kurun (Bu bir tavsiyedir) 48 | 49 | ```bash 50 | $ apt-get install htop 51 | ``` 52 | 53 | Sıradakı aşama olan Nginix kurulumuna başlayabilirisiniz... 54 | 55 | # Nginx 56 | 57 | ## Stabil Güncel Sürüm İçin Nginx Kanalını Ekleyin 58 | 59 | ```bash 60 | $ add-apt-repository ppa:nginx/stable 61 | $ apt-get update 62 | ``` 63 | 64 | ## Nginx'i Kurun 65 | 66 | ```bash 67 | $ apt-get install nginx 68 | ``` 69 | 70 | Kurulmu tamamlandıktan sonra nginx'i ```service nginx start``` komutu ile konsoldan başlatın. 71 | 72 | ### DİKKAT: Ubuntu 12.10 da nginx 1.2.7 versiyonunu kurdugunuzda nginix'i başlatırken aşağıdaki gibi bir hata alırsanız: 73 | 74 | ```bash 75 | * Starting nginx nginx 76 | nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) 77 | nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) 78 | nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) 79 | nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) 80 | nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) 81 | nginx: [emerg] still could not bind() 82 | ...done. 83 | ...done. 84 | ``` 85 | 86 | Nano v.b. bir editör ile Nginx default site ayarlarını açın. 87 | 88 | ```bash 89 | $ nano /etc/nginx/sites-available/default 90 | ``` 91 | 92 | Server ayarlarının olduğu satırdaki aşağıdakı kısmı bulun ve belirtildiği (```ipv6only=on``` kısmına dikkat!) 93 | şekilde değiştirip, dosyayı kaydedip kapatın. 94 | 95 | ** Önce ** 96 | 97 | ```bash 98 | server { 99 | listen 80; 100 | listen [::]:80 default_server; 101 | ... 102 | ``` 103 | 104 | ** Sonra ** 105 | 106 | ```bash 107 | server { 108 | listen 80; 109 | listen [::]:80 ipv6only=on default_server; 110 | ... 111 | ``` 112 | 113 | Bu işlemi yaptıktan sonra konsoldan ```service nginx start``` komutunu koştuğunuzda nginx başlatılacaktır. 114 | 115 | ## Nginx'i Başlatın 116 | 117 | ```bash 118 | $ service nginx start 119 | ``` 120 | 121 | Sunucu ip'nizi yada domaini yazarak nginx start sayfasının geldiğinden emin olunuz. 122 | 123 | # Git & Curl 124 | 125 | Sunucunuzdaki kodları Capistrano aracılığı ile deploy edebilmemiz için Git kurulu olması gerekmektedir. 126 | Aynı zamadan sunucunuzda Curl da kurulu olmalıdır. Aşağıdakı paketleri kurun. 127 | 128 | ```bash 129 | $ apt-get -y install curl git-core 130 | ``` 131 | 132 | ## Sunucuya github proje reposundaki ssh key'i ekleyin ve github bağlantısını doğrulayın. 133 | 134 | Bu işlemi yapmadan önce aşağıdakı komutu çalıştırın ve çıktıyı doğrulayın. 135 | 136 | ```bash 137 | $ ssh git@github.com 138 | # The authenticity of host 'github.com (207.97.227.239)' can't be established. 139 | # RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. 140 | # Are you sure you want to continue connecting (yes/no)? yes 141 | # Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts. 142 | # Permission denied (publickey). 143 | ``` 144 | 145 | Sunucuya GitHub reponuzda bulunan Settings > Deploy Keys sekmesine eklemek üzere bir public ssh_key oluşturun. 146 | Deploy sırasında GitHub'ın sormaması için herhangi bir şifre vermeyin. Böylelikle deploy süreci hızlanmış olacaktır. 147 | 148 | ```bash 149 | $ ssh-keygen -t rsa -C "user@example.com" 150 | # GitHub üyelik e-postanız veya herhangi bir e-posta adresi. 151 | # Örneğin sunucuda barındırılacak ygulamanın info@... adresi olabilir. 152 | ``` 153 | 154 | Oluşturulan public ssh_key'in içeriğini kopyalayın ve GitHub'da belirtilen sekmeye gidip "Add Deploy Key" diyerek ekleyin. 155 | 156 | ```bash 157 | $ cat ~/.ssh/id_rsa.pub 158 | ``` 159 | 160 | ## Bir Deployer kullanıcısı ekleyin 161 | 162 | Bunun için öncesinde bir admin grubu oluşturmalısınız ve ardından deployer adında bir kullanıcıyı bu gruba ekleyin. 163 | 164 | ```bash 165 | $ groupadd admin && adduser deployer --ingroup admin 166 | ``` 167 | 168 | Kullanıcı şifresini ve verilen soruları cevaplayın. Artık deployer kullanıcımız oluşturuldu. 169 | Bu kullanıcıya daha sonra ruby rbenv ve diper deploy süreçlerinde ihtiyaç duyacağız. 170 | 171 | # Rbenv 172 | 173 | Sunucumuza Rbenv kurabilmek için öncesinde deployer olarak ssh bağlantısı oluşturmalıyız. 174 | 175 | ```bash 176 | $ ssh deployer@127.0.0.1 -p xxxx 177 | ``` 178 | 179 | Yada eğer root olarak bağlı iseniz 180 | 181 | ```bash 182 | $ su - deployer 183 | ``` 184 | 185 | 186 | Bu işlemden sonra aşlağıdaki paketleri kurun. Bu paketlerden daha önceden mevcut kurulu olanlar olabilir. 187 | 188 | ```bash 189 | $ sudo apt-get install zlib1g-dev openssl libopenssl-ruby1.9.1 libssl-dev libruby1.9.1 libreadline-dev git-core make make-doc 190 | ``` 191 | 192 | Deployer kullanıcısının home dizinine gidin. Rbenv'i GitHub reposundan klonlayın vekabuk ve konsol 193 | ayarlarını yapıp tekrar başlatın. 194 | 195 | ```bash 196 | $ cd ~ 197 | $ git clone git://github.com/sstephenson/rbenv.git .rbenv 198 | $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc 199 | $ echo 'eval "$(rbenv init -)"' >> ~/.bashrc 200 | $ exec $SHELL 201 | ``` 202 | 203 | Rbenv kurulumunu ```which rbenv``` komutu ile konsoldan doğrulayın. 204 | Herşey yolunda gidiyorsa şu şekilde bir çıktı almalısınız: ```/home/deployer/.rbenv/bin/rbenv``` 205 | 206 | Şimdi gerekli pluginleri kurmak için aşağıdaki adımları takip edin. 207 | 208 | ```bash 209 | $ mkdir -p ~/.rbenv/plugins 210 | $ cd ~/.rbenv/plugins 211 | $ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build 212 | $ git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash 213 | $ rbenv install 2.0.0-p247 214 | $ rbenv rehash 215 | $ rbenv global 2.0.0-p247 216 | $ ruby -v 217 | # ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux] 218 | ``` 219 | 220 | Eğer yukarıdakı adımları izleyip ruby versiyonunu doğruladıysanız işlem tamamlanmış demektir. 221 | Artık Rbenv aktif ve ilgili ruby versiyonu sunucunuza kurulmuş demektir. 222 | 223 | # RubyGems 224 | 225 | Kurulumlara başlamadan önce rubygems'i güncellemek önerilir. Aşağıdaki komutu çalıştırın. 226 | 227 | ```bash 228 | $ gem update --system 229 | ``` 230 | 231 | # Bundler 232 | 233 | Rbenv kurumulundan hemen sonra sisteme bundler gem'i kurmamız gerekmekte. Aşağıdaki komutları çalıştırın. 234 | 235 | ```bash 236 | $ gem install bundler --no-ri --no-rdoc 237 | $ rbenv rehash 238 | $ bundle -v 239 | 240 | ``` 241 | 242 | # Node.js 243 | 244 | En temel haliyle Rails projelerinde assets-precompile işlemleri için node.js'in de sunucuda kurulu olması gerekmektedir. 245 | 246 | ```bash 247 | $ sudo add-apt-repository ppa:chris-lea/node.js 248 | $ sudo apt-get update 249 | $ sudo apt-get install nodejs 250 | ``` 251 | 252 | Evet. Deploy için gereken tüm temel bileşenleri sunucuya kurduk. Bu aşamadan sonra size bir veritabanı sunucusu gerekmekte. 253 | Bunun için 2 yöntem tercih edebilirsiniz. 1. halihazırda kurduğunuz sunucunun üzerine bir veritabanı yönetim sistemi kurabilir 254 | veya 2. bir veritabanı sunucusu oluşturabilirsiniz. Biz genellikle veritabanı ile application sunucusunu ayırmayı 255 | tercih ettiğimizden bu sunucunun üzerine postgresql kurmuyoruz. 256 | 257 | Ayrı bir sunucuda (veya bu sunucuda) jasıl Postgresql kurmanız gerektiğii öğrenmek istiyorsanız 258 | [PostgreSQL Veritabanı Kurulumu](https://github.com/lab2023/playbook/blob/master/development/database.md#kurulum) 259 | kaynağını ziyaret edebilirsiniz. 260 | 261 | Veritabanı sunucunuz da hazırlandıktan sonra artık rails application'ununuz Capistrano ile deploy edebilirsiniz... 262 | 263 | # Capistrano & Unicorn 264 | 265 | `gem install capistrano` 266 | 267 | Gemleri kurduktan sonra `capify .` komutunu çalıştıralım. Oluşan `config/deploy.rb` dosyasını aşağıdaki gibi düzenleyelim. 268 | 269 | ```ruby 270 | require "bundler/capistrano" 271 | #require "whenever/capistrano" 272 | 273 | set :stages, %w(staging production) 274 | set :default_stage, "production" 275 | require 'capistrano/ext/multistage' 276 | 277 | default_run_options[:pty] = true 278 | 279 | set :whenever_command, "bundle exec whenever" 280 | 281 | set :application, "project_name" 282 | set :user, "deployer" 283 | set :deploy_to, "/home/#{user}/apps/#{application}" 284 | 285 | set :deploy_via, :remote_cache 286 | set :use_sudo, false 287 | 288 | set :scm, "git" 289 | set :repository, "git@github.com:UserName/#{application}.git" 290 | set :branch, "master" 291 | 292 | default_run_options[:pty] = true 293 | ssh_options[:forward_agent] = true 294 | 295 | after "deploy", "deploy:cleanup" # keep only the last 5 releases 296 | 297 | 298 | after "deploy:symlink", "deploy:update_crontab" 299 | 300 | namespace :deploy do 301 | 302 | task :precompile, :role => :app do 303 | run "cd #{release_path}/ && rake assets:precompile" 304 | end 305 | 306 | after "deploy:finalize_update", "deploy:precompile" 307 | 308 | %w[start stop restart].each do |command| 309 | desc "#{command} unicorn server" 310 | task command, roles: :app, except: {no_release: true} do 311 | run "/etc/init.d/unicorn_#{application} #{command}" 312 | end 313 | end 314 | 315 | after "deploy:setup", "deploy:setup_config" 316 | 317 | task :symlink_config, roles: :app do 318 | run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml" 319 | end 320 | after "deploy:finalize_update", "deploy:symlink_config" 321 | 322 | desc "Make sure local git is in sync with remote." 323 | task :check_revision, roles: :web do 324 | unless `git rev-parse HEAD` == `git rev-parse origin/#{branch}` 325 | puts "WARNING: HEAD is not the same as origin/#{branch}" 326 | puts "Run `git push` to sync changes." 327 | exit 328 | end 329 | end 330 | before "deploy", "deploy:check_revision" 331 | 332 | task :install_bundler, :roles => :app do 333 | run "type -P bundle &>/dev/null || { gem install bundler --no-rdoc --no-ri; }" 334 | end 335 | before "deploy:cold", "deploy:install_bundler" 336 | 337 | desc "Update the crontab file" 338 | task :update_crontab, :roles => :db do 339 | #run "cd #{release_path} && whenever --update-crontab #{application}" 340 | end 341 | after "deploy:update_crontab", "deploy:resque_setup" 342 | 343 | desc "Resque QUEUE Start" 344 | task :resque_setup, :roles => :db do 345 | #run "cd #{release_path} && resque:work QUEUE='*'" 346 | end 347 | end 348 | 349 | # Production 350 | set :default_environment, { 351 | 'PATH' => "$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH" 352 | } 353 | 354 | after "deploy", "deploy:cleanup" 355 | ``` 356 | 357 | `config/deploy/production.rb` ve `config/deploy/staging.rb` dosyalarını oluşturalım. 358 | 359 | ```ruby 360 | server "2.2.2.2", :web, :app, :db, primary: true 361 | set :port, 2222 362 | set :rails_env, 'production' 363 | 364 | namespace :deploy do 365 | task :setup_config, roles: :app do 366 | # Production 367 | sudo "ln -nfs #{current_path}/config/nginx.#{rails_env}.conf /etc/nginx/sites-enabled/#{application}" 368 | sudo "ln -nfs #{current_path}/config/unicorn_init_#{rails_env}.sh /etc/init.d/unicorn_#{application}" 369 | run "mkdir -p #{shared_path}/config" 370 | put File.read("config/database.example.#{rails_env}.yml"), "#{shared_path}/config/database.yml" 371 | puts "Now edit the config files in #{shared_path}." 372 | end 373 | end 374 | ``` 375 | 376 | ```ruby 377 | server "1.1.1.1", :web, :app, :db, primary: true 378 | set :port, 1111 379 | set :rails_env, 'staging' 380 | 381 | namespace :deploy do 382 | task :setup_config, roles: :app do 383 | # Staging 384 | sudo "ln -nfs #{current_path}/config/nginx.#{rails_env}.conf /etc/nginx/sites-enabled/#{application}" 385 | sudo "ln -nfs #{current_path}/config/unicorn_init_#{rails_env}.sh /etc/init.d/unicorn_#{application}" 386 | run "mkdir -p #{shared_path}/config" 387 | put File.read("config/database.example.#{rails_env}.yml"), "#{shared_path}/config/database.yml" 388 | puts "Now edit the config files in #{shared_path}." 389 | end 390 | end 391 | ``` 392 | 393 | Gemfile a `gem 'unicorn'` ekleyelim. Öncelikle `config/unicorn.rb` dosyasını oluşturup Unicorn ayarlarını yapalım. 394 | 395 | ```ruby 396 | @shared_dir = "/home/deployer/apps/project_name/shared/" 397 | @working_dir = "/home/deployer/apps/project_name/current/" 398 | 399 | worker_processes 2 400 | working_directory @working_dir 401 | timeout 30 402 | 403 | listen "/tmp/sockets/unicorn_project_name.sock", :backlog => 64 404 | 405 | pid_file = "#{@shared_dir}pids/unicorn.pid" 406 | old_pid = "#{pid_file}.oldbin" 407 | 408 | pid pid_file 409 | 410 | stderr_path "#{@shared_dir}log/unicorn.stderr.log" 411 | stdout_path "#{@shared_dir}log/unicorn.stdout.log" 412 | 413 | preload_app true 414 | 415 | # combine Ruby 2.0.0dev or REE with "preload_app true" for memory savings 416 | # http://rubyenterpriseedition.com/faq.html#adapt_apps_for_cow 417 | preload_app true 418 | GC.respond_to?(:copy_on_write_friendly=) and 419 | GC.copy_on_write_friendly = true 420 | 421 | check_client_connection false 422 | 423 | before_fork do |server, worker| 424 | # the following is highly recomended for Rails + "preload_app true" 425 | # as there's no need for the master process to hold a connection 426 | defined?(ActiveRecord::Base) and 427 | ActiveRecord::Base.connection.disconnect! 428 | end 429 | 430 | after_fork do |server, worker| 431 | # the following is *required* for Rails + "preload_app true", 432 | defined?(ActiveRecord::Base) and 433 | ActiveRecord::Base.establish_connection 434 | end 435 | 436 | ``` 437 | 438 | Daha sonra `config/unicorn_init_production.sh` ve `config/unicorn_init_staging.sh` 439 | dosyalarını oluşturalım. Dosyaları şu şekilde güncelleyelim. 440 | 441 | * https://gist.github.com/muhammetdilek/d45a30d5fd26889ef5ea 442 | * https://gist.github.com/muhammetdilek/d37e6b31d1b02e652255 443 | 444 | Bu dosyalarda `project_name` kısmını proje ismiyle değiştirmeyi unutmayınız. 445 | 446 | Ardından yukarıdaki dosyaları çalıştırılabilir hale getirmek için, aşağıdakı komutu konsoldan çalıştırın. 447 | 448 | ```bash 449 | $ chmod +x config/unicorn_init_production.sh && chmod +x config/unicorn_init_staging.sh 450 | ``` 451 | Ardından; 452 | 453 | `config/database.example.staging.yml` ve `config/database.example.production.yml` dosyalarını oluşturup 454 | staging ve production sunucu için kullancağınız veritabanı bilgilerini ilgili environment değerleri ile oluşturunuz. 455 | 456 | `config/nginx.staging.conf` ve `config/nginx.production.conf` dosyasını oluşturup aşağıdaki gibi güncelleyiniz. 457 | Bu aşamada eğer staging ve production sunucularında farklı nginx ayarları yapmak isterseniz dosyaları modifiye edebilirsiniz. 458 | Örneğin. Staging sunucu için domain sadece ```stage.example.com``` şeklinde kullanılabilir. 459 | 460 | ```shell 461 | upstream project_name { 462 | server unix:/tmp/unicorn.project_name.sock fail_timeout=0; 463 | } 464 | 465 | server { 466 | listen 80; 467 | server_name *.example.com example.com; 468 | root /home/deployer/apps/project_name/current/public; 469 | 470 | location ^~ /assets/ { 471 | gzip_static on; 472 | expires max; 473 | add_header Cache-Control public; 474 | } 475 | 476 | try_files $uri/index.html $uri @project_name; 477 | location @project_name { 478 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 479 | proxy_set_header Host $http_host; 480 | proxy_redirect off; 481 | proxy_pass http://project_name; 482 | } 483 | 484 | error_page 500 502 503 504 /500.html; 485 | client_max_body_size 4G; 486 | keepalive_timeout 10; 487 | } 488 | ``` 489 | 490 | `project_name` olan yerleri proje ismi ile değiştirmeyi unutmayınız. 491 | 492 | Artık deploy için hazırız. 493 | 494 | Proje dizininde; 495 | 496 | *Staging deploy için* 497 | 498 | `cap staging deploy:setup` 499 | `cap staging deploy:cold` 500 | 501 | *Production deploy için* 502 | 503 | `cap deploy:setup` 504 | `cap deploy:cold` 505 | 506 | komutlarını çalıştırarak ilk deployumuzu yapıyoruz. Bundan sonraki deploylar için `cap staging deploy` 507 | veya `cap deploy` komutunu çalıştırmak yeterli olacaktır. 508 | 509 | # Backup 510 | Backup işlemleri için [backup](https://github.com/meskyanichi/backup) gemini kullanıyoruz. 511 | Veritabanı yedeği, assets(resim, video) yedekleri ve log yedeklerini almamız yeterli. 512 | Uygulamalarımızı githubda geliştirdiğimiz için uygulamanın yedeğini alma ihtiyacı duymuyoruz. 513 | Yedeği hem locale hemde yedek işlemleri için ayırdığımız sunucuya alıyoruz. 514 | 515 | ### Capistrano ile deploydan önce yedek almak 516 | 517 | Deploydan önce yedek alacak komutu çalıştırtmalıyız. Tabi bunun için backup geminin kurulu olması gerekmektedir. Backup kurulum işleminide capistranoya yaptıralım. 518 | 519 | Aşağıdaki task' i `deploy.rb` nin içine ekleyelim. 520 | 521 | ```ruby 522 | namespace :deploy do 523 | task :configure_backup do 524 | on_rollback do 525 | puts 'I can not install backup gem.' 526 | end 527 | puts "Create backup model" 528 | run "backup generate:model -t #{application} --storages='local' --compressors='gzip' --databases='postgresql'" 529 | puts "Now edit ~/Backup/models/#{application}.rb" 530 | end 531 | end 532 | ``` 533 | 534 | `cap deploy:cold` işleminden sonra bu task' i calıştırmak için şu satırı ekleyelim. 535 | 536 | ```ruby 537 | after 'deploy:cold', 'deploy:configure_backup' 538 | ``` 539 | Sunucuda backup modelinizin bilgilerini değiştirmeyi unutmayın. `~/Backup/models/project_name.rb` 540 | 541 | Şimdi de her deployan önce yedek alcak bir task yazalım. 542 | 543 | ```ruby 544 | namespace :deploy do 545 | task :backup do 546 | transaction do 547 | on_rollback do 548 | puts 'I can not backup.' 549 | end 550 | run "backup perform --trigger #{application}" 551 | end 552 | 553 | end 554 | end 555 | ``` 556 | 557 | Bunuda `deploy.rb` dosyasına ekleyelim. Her `cap deploy`işleminden önce bu task' i çalıştırmak için aşağıdaki satırı ekleyelim 558 | ```ruby 559 | before 'deploy', 'deploy:backup' 560 | ``` 561 | 562 | ### Log Yedekleri ve Log rotation 563 | Log dosyalarının çok şişmesi genel problemimiz. Biz bunu nasıl çözüyoruz ? Linux logrotate kullanıyoruz. 564 | Logrotate log dosyalarını rotate ederek şişmesini önler. 565 | Öncelikle kurulu değilse `sudo apt-get install logrotate` komutu ile log ratator'ı kuruyoruz. 566 | Logrotate kullanmak için `/etc/logrotate.conf` dosyasına aşağıdaki kodları ekliyoruz. 567 | 568 | ```bash 569 | # Rotate Rails application logs 570 | /home/deployer/apps/project/current/log/*.log { 571 | daily #Bu işlemi günlük yap 572 | missingok # İşlem yapılacak log dosyaları eksik ise hata verme 573 | rotate 7 # 7 tane dosya tut 574 | compress # Sıkıştır gzip varsayılan 575 | delaycompress # Bir sonraki log ortasyonuna kadar sıkıştırmayı beklet. Yani sıkıştırma 576 | notifempty # Log dosyası boş ise rotate etme 577 | copytruncate # O anki yazılan log dosyasını rotate ederken rotate anında yazılan verile kaybetmemek için 578 | size 1024M # Magabayt olarak boyut 1024 olsun 579 | } 580 | ``` 581 | Ardından logrotator günlük olarak çalışıp yedekleme işlemlerini yapacaktır 582 | Eğer daha önceki log dosyalarını o an sıkıştırmak istersek 583 | 584 | ```bash 585 | sudo logrotate -f /etc/logrotate.conf 586 | ``` 587 | 588 | komutuyla logrotator'ı çalıştırabiliriz. 589 | 590 | Ayrıca log rotatorda işlenecek log dosyalarını görmek için 591 | 592 | ```bash 593 | cat /var/lib/logrotate/status 594 | ``` 595 | komutunu kullanabiliriz. 596 | 597 | Sıkıştırılmış log dosyalarının backup gemi ile yedeğini alıyoruz. 598 | 599 | # Monitoring 600 | ## Exception Notification (Hata Bildirici) 601 | Sunucudaki 500 hatalrından haberdar olmak için 602 | [exception_notification](https://github.com/smartinez87/exception_notification) gemini kulanıyoruz. 603 | Gem sunucu 500 verirse anında bize mail atıyor. 604 | Gemin kullanımı ile ilgili şu yazıyı http://www.muhammetdilek.com/blog/2013/04/04/exception-notification-hata-bildirici/ 605 | okuyabilirsiniz. 606 | 607 | # Heroku 608 | 609 | Bkz: 610 | [Lab2023 Blog - Rails Uygulamalarını Heroku'da Çalıştırmak](http://lab2023.com/rails-uygulamalarini-heroku-da-calistirmak.html) 611 | -------------------------------------------------------------------------------- /development/servisler.md: -------------------------------------------------------------------------------- 1 | # Servisler 2 | 3 | ## Github 4 | 5 | Versiyon kontrol, issue tracker için www.github.com kullanıyoruz. 6 | 7 | ## Balsamiq 8 | 9 | Arayüz çizimi için http://www.balsamiq.com/ kullanıyoruz. 10 | 11 | ## Gtmetric 12 | 13 | Web sitesinin performans analizi için http://gtmetrix.com/ kullanıyoruz. 14 | 15 | ## Huboard 16 | 17 | Github issue ve milestonelardan aldığı bilgiler ile Scrum yapmamıza yarayan yazılımdır. Kendisini lab2023.com altına kuruyoruz. 18 | 19 | * http://huboard.com/ 20 | 21 | ## İş Takibi 22 | 23 | Proje dışındaki yapılacak işler için http://basecamp.com/ kullanıyoruz. 24 | 25 | ## Dökümantasyon 26 | 27 | Belgelendirme için https://drive.google.com kullanıyoruz. 28 | 29 | ## Zamanlanmış Görev Düzenleyici 30 | 31 | Bizler Ruby uygulamalarında Whenever gemini kullanmamıza rağmen manuel cron yaratacaksak corntab.com sitesini kullanıyoruz. 32 | 33 | * http://www.corntab.com/pages/crontab-gui 34 | 35 | ## HTML den HAML 36 | 37 | * http://html2haml.heroku.com/ 38 | 39 | ## JS den CoffeScript 40 | 41 | * http://js2coffee.org/ 42 | 43 | ## Css den SASS 44 | 45 | * http://css2sass.herokuapp.com/ 46 | -------------------------------------------------------------------------------- /development/training/README.md: -------------------------------------------------------------------------------- 1 | # Books 2 | 3 | ## Done 4 | 5 | * [Html 101](https://github.com/lab2023/playbook/blob/master/development/training/html_101.md) 6 | * [Css 101](https://github.com/lab2023/playbook/blob/master/development/training/css_101.md) 7 | * [Css 201](https://github.com/lab2023/playbook/blob/master/development/training/css_201.md) 8 | * [Sass Compass 101](https://github.com/lab2023/playbook/blob/master/development/training/sass_compass_101.md) 9 | * [JavaScript 101](https://github.com/lab2023/playbook/blob/master/development/training/javascript_101.md) 10 | * [CoffeeScript 101](https://github.com/lab2023/playbook/blob/master/development/training/coffeescript_101.md) 11 | * [Git 101](https://github.com/lab2023/playbook/blob/master/development/training/git_101.md) 12 | 13 | ## In progress 14 | 15 | * Linux 101 16 | * Ruby 101 17 | * Rails 101 18 | * PostgreSQL 101 19 | * Project Management 101 20 | * Development Environment 101 21 | * Design 101 22 | -------------------------------------------------------------------------------- /development/training/coffeescript_101.md: -------------------------------------------------------------------------------- 1 | # CoffeeScript 101 2 | 3 | ## Contents 4 | 5 | 1. CoffeeScript Syntax 6 | 2. CoffeeScript Class 7 | 3. CoffeeScript Idioms 8 | 4. Compiling CoffeScript 9 | 5. The Good Parts 10 | 6. The Little Conclusion 11 | 12 | ## Resources 13 | 14 | * [1-6 Chapters] http://arcturo.github.io/library/coffeescript/index.html 15 | -------------------------------------------------------------------------------- /development/training/css_101.md: -------------------------------------------------------------------------------- 1 | # CSS 101 2 | 3 | ## Contents 4 | 5 | 1. Structure 6 | 2. Color 7 | 3. Text 8 | 4. Boxed 9 | 5. Lists, Tables, Forums 10 | 6. Layout 11 | 7. Images 12 | 8. HTML5 Layout 13 | 9. Process & Design 14 | 10. Practical Information 15 | 16 | ## Resources 17 | 18 | * [10-19 Chapters] http://www.amazon.com/HTML-CSS-Design-Build-Websites/dp/1118008189/ 19 | -------------------------------------------------------------------------------- /development/training/css_201.md: -------------------------------------------------------------------------------- 1 | # CSS 201 2 | 3 | ## Contents 4 | 5 | 1. HTML for CSS 6 | 2. Creating Styles and Style Sheets 7 | 3. Selectors 8 | 4. Saving Time with Style Inheritance 9 | 5. Managing Multiple Styles 10 | 6. Formatting Text 11 | 7. Margins, Padding, and Borders 12 | 8. Adding Graphics to Web Pages 13 | 9. Sprucing Up Your Site's Navigation 14 | 10. CSS Transforms, Transitions, And Animations 15 | 11. Formatting Tables and Forms 16 | 12. Introducing CSS Layout 17 | 13. Building Float-Based Layouts 18 | 14. Responsive Web Design 19 | 15. Positioning Elements on a Web Page 20 | 16. CSS for the Printed Page 21 | 17. Improving Your CSS Habits 22 | 23 | ## Resources 24 | 25 | * [1-17 Chapters] http://www.amazon.com/CSS3-Missing-Manual-Manuals/dp/1449325947 26 | -------------------------------------------------------------------------------- /development/training/git_101.md: -------------------------------------------------------------------------------- 1 | # Git 101 2 | 3 | ## Contents 4 | 5 | 1. Introduction 6 | 2. Getting Started 7 | 3. Git Basics 8 | 4. Git Branching 9 | 5. Git on the Server 10 | 6. Distributed Git 11 | 7. Git Tools 12 | 8. Customizing Git 13 | 9. Git and Other Systems 14 | 10. Git Internals 15 | 16 | ## Resources 17 | 18 | * [1-10 Chapters] http://www.amazon.com/Pro-Experts-Voice-Software-Development/dp/1430218339 19 | -------------------------------------------------------------------------------- /development/training/html_101.md: -------------------------------------------------------------------------------- 1 | # HTML 101 2 | 3 | ## Contents 4 | 5 | 1. Structure 6 | 2. Text 7 | 3. Lists 8 | 4. Links 9 | 5. Images 10 | 6. Tables 11 | 7. Forums 12 | 8. Extra Markup 13 | 9. Flash, Video & Audio 14 | 15 | ## Resources 16 | 17 | * [1-9 Chapters] http://www.amazon.com/HTML-CSS-Design-Build-Websites/dp/1118008189/ 18 | -------------------------------------------------------------------------------- /development/training/javascript_101.md: -------------------------------------------------------------------------------- 1 | # Javascript 101 2 | 3 | ## Contents 4 | 5 | 1. Introduction to Javascript 6 | 2. Lexical Structure 7 | 3. Types, Values, and Variables 8 | 4. Expressions and Operators 9 | 5. Statements 10 | 6. Objects 11 | 7. Arrays 12 | 8. Functions 13 | 9. Classes and Modules 14 | 10. Pattern Matching with Regular Expressions 15 | 11. Javascript Subsets and Extensions 16 | 12. Server-Side Javascript 17 | 13. Javascript in Web Browsers 18 | 14. The Window Object 19 | 15. Scripting Documents 20 | 16. Scripting CSS 21 | 17. Handling Events 22 | 18. Scripted HTTP 23 | 19. The JQuery Library 24 | 20. Client-Side Storage 25 | 21. Scripted Media and Graphics 26 | 22. HTML5 APIs 27 | 28 | ## Resources 29 | 30 | * [1-22 Chapters] http://www.amazon.com/JavaScript-Definitive-Guide-Activate-Guides/dp/0596805527 31 | -------------------------------------------------------------------------------- /development/training/project_management_101.md: -------------------------------------------------------------------------------- 1 | # Project Management 101 2 | 3 | ## Contents 4 | 5 | 1. Git, Git Flow 6 | 2. Semver 7 | 3. Milestons and Issues 8 | 4. Huboard(Kanban) 9 | 5. Agile Development [http://en.wikipedia.org/wiki/Agile_software_development](http://en.wikipedia.org/wiki/Agile_software_development) 10 | 6. Modeling 11 | 7. Code Review 12 | 8. Deploy Strategy 13 | -------------------------------------------------------------------------------- /development/training/sass_compass_101.md: -------------------------------------------------------------------------------- 1 | # Sass Compass 101 2 | 3 | ## Contents 4 | 5 | 1. Basics 6 | 2. Advanced 7 | 3. Compass 8 | 4. Blueprint Css 9 | 10 | ## Resources 11 | 12 | * [1-3 Chapters] http://www.amazon.com/Pragmatic-Guide-Sass-Hampton-Catlin/dp/1934356840 13 | -------------------------------------------------------------------------------- /development/yazilim_prensipleri_ve_tasarim_sablonlari.md: -------------------------------------------------------------------------------- 1 | # SOLID 2 | 3 | ## SRP - Tek Sorumluluk Prensibi (Single responsibility principle) 4 | 5 | Bir sınıfın tek bir sorumluluğu olmalıdır. Örneğin aşağıdaki `User` sınıfında kullanıcının yaratılması, silinmesi, 6 | kayıttan sonra email atılması, login logout olması gibi çok fazla sorumluluk vardır. 7 | 8 | ```ruby 9 | 10 | class User 11 | attr_accessor :username, :password, :email 12 | 13 | def create username, password, email 14 | # Kodlar 15 | end 16 | 17 | def delete username 18 | # Kodlar 19 | end 20 | 21 | def send_register_email email 22 | # Kodlar 23 | end 24 | 25 | def login email, password 26 | # Kodlar 27 | end 28 | 29 | def logout email 30 | # Kodlar 31 | end 32 | 33 | end 34 | ``` 35 | 36 | Daha doğru bir yaklaşım emaili Email sınıfının, login logout işlemlerini Session sınıfının, hatta kullanıcının kaydedilip, 37 | silinmesi işlemlerine DAO sınıfının bakması gerekmektedir. Eğer bir sınıfın birden fazla sorumluluğu olursa o sınıfın ileride 38 | modifiye edilmesi yüksek bir olasılıktır ki buda açık kapalı prensibine aykırıdır. 39 | 40 | 41 | ```ruby 42 | class User 43 | attr_accessor :username, :password, :email 44 | end 45 | ``` 46 | 47 | 48 | ```ruby 49 | class UserDao 50 | def create username, password, email 51 | # Kodlar 52 | end 53 | 54 | def delete username 55 | # Kodlar 56 | end 57 | end 58 | ``` 59 | 60 | 61 | ```ruby 62 | class SendEmail 63 | def send_register_email user 64 | # Kodlar 65 | end 66 | end 67 | ``` 68 | 69 | 70 | ```ruby 71 | class Session 72 | def login user, password 73 | # Kodlar 74 | end 75 | 76 | def logout user 77 | # Kodlar 78 | end 79 | end 80 | ``` 81 | 82 | ## OCP - Açık Kapalı Prensibi (Open/closed principle) 83 | 84 | Ivar Jacobson söyle demiştir. "Her program görev süresince değişikliğe uğrar. Bu ilk sürümden ötesi düşünülen 85 | programların yazılımında göz önünde bulundurulmalıdır." Yani mutlaka ama mutlaka yazılımınız ileride gelen yeni 86 | istekleri karşılabilecek kapasitede olmalıdır. Sektörde müşterilerine yazılımları satıp yeni istekler gelince 87 | köşe bucak kaçan bir sürü yazılım firması vardır. 88 | 89 | Bu prensibe göre programlar geliştirilmeye açık ama değiştirilmeye kapalı olmalıdır. Yani yeni bir istek geldiğinde 90 | eski yazdığınız kodları değiştirmemeli yeni kodlar yazarak müşterinin yeni isteklerini karşılamalısınız. Kodlar 91 | değişeme kapalı, geliştirilmeye açık olmalıdır. 92 | 93 | Basit bir örnek verelim. Müşterimiz bize AVEA ve Turkcell'den SMS atan bir program istedi diyelim. 94 | 95 | ```ruby 96 | class Sms 97 | send_sms number, msg 98 | if number is turkcell 99 | # Turkcell'den SMS gönder 100 | elsif number is avea 101 | # Avea'dan SMS gönder 102 | end 103 | end 104 | end 105 | ``` 106 | 107 | Yukarıda kod tam bir beladır. İleride müşteriniz Vodofan'dan bir kampanya alırsanız. Yukarıda ki kodu switch'e çevirmeniz 108 | gerekecektir. Yani eski yazdığınız kodu değiştirmeniz gerekecektir. Bunun yerine aşağıdaki kod daha kalitelidir. 109 | 110 | ```ruby 111 | # Kadu yazalım 112 | 113 | ``` 114 | 115 | ## LSP - Liskov substitution principle 116 | ## ISP - Interface segregation principle 117 | ## DIP - Dependency inversion principle 118 | 119 | # Design patterns 120 | 121 | http://en.wikipedia.org/wiki/Design_pattern_(computer_science) 122 | 123 | ## Oluşturucu 124 | 125 | ### Factory 126 | ### Abstract Factory 127 | ### Singleton 128 | ### Builder 129 | ### Prototype 130 | 131 | ## Yapısal 132 | 133 | ### Adapter 134 | ### Bridge 135 | ### Facede 136 | ### Composite 137 | ### Decorator 138 | ### Proxy 139 | ### Flyweight 140 | 141 | ## Davranışsal 142 | 143 | ### Command 144 | ### Iterator 145 | ### Memento 146 | ### State 147 | ### Observer 148 | ### Strategy 149 | ### Chain of responsibility 150 | ### Mediator 151 | ### Visitor 152 | ### Template Method 153 | --------------------------------------------------------------------------------