{"id":128143,"date":"2021-03-29T09:31:32","date_gmt":"2021-03-29T08:31:32","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=blog&#038;p=128143"},"modified":"2021-03-29T09:31:32","modified_gmt":"2021-03-29T08:31:32","slug":"projector-ile-ide-nize-uzaktan-erisin","status":"publish","type":"blog","link":"https:\/\/blog.jetbrains.com\/tr\/blog\/2021\/03\/29\/projector-ile-ide-nize-uzaktan-erisin\/","title":{"rendered":"Projector ile IDE&#8217;nize Uzaktan Eri\u015fin"},"content":{"rendered":"<p>Bug\u00fcn, JetBrains IDE&#8217;lerini ve Swing uygulamalar\u0131n\u0131 a\u011f\u0131n\u0131z \u00fczerinden uzaktan \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 sa\u011flayan ara\u00e7 ve \u00e7er\u00e7evemiz Projector&#8217;\u0131n ilk s\u00fcr\u00fcm\u00fcn\u00fc duyuruyoruz.<\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/03\/Blog_1280x720.png\" alt=\"Projector Logosu\" \/><\/p>\n<p>Bildi\u011finiz \u00fczere, Swing, Java&#8217;ya y\u00f6nelik bir grafik widget&#8217;t\u0131r. Mevcut JetBrains IDE&#8217;leri UI \u00e7izimi i\u00e7in Swing kullan\u0131r. Ayn\u0131 durum, Android Studio gibi IntelliJ tabanl\u0131 di\u011fer IDE&#8217;ler i\u00e7in de ge\u00e7erlidir.<\/p>\n<p>JetBrains IDE&#8217;leri ve Swing uygulamalar\u0131n\u0131n masa\u00fcst\u00fc uygulamalar\u0131 olmas\u0131 olumlu bir olgu olsa da zay\u0131f istemciler gibi \u00f6zel bir yakla\u015f\u0131m gerektiren ola\u011fan d\u0131\u015f\u0131 bir\u00e7ok durum s\u00f6z konusudur. \u0130\u015fte tam bu noktada Projector devreye girer.<\/p>\n<p>\u015eirket i\u00e7inde bar\u0131nd\u0131r\u0131lan bir teknoloji olan Projector, IntelliJ tabanl\u0131 IDE&#8217;ler ve Swing tabanl\u0131 uygulamalar\u0131 sunucuda \u00e7al\u0131\u015ft\u0131rarak bunlara taray\u0131c\u0131 ve yerel uygulamalar kullanarak diledi\u011finiz yerden eri\u015fmenizi sa\u011flar.<\/p>\n<h1><strong>Kullan\u0131m Senaryolar\u0131<\/strong><\/h1>\n<p>IDE&#8217;leri sunucuda \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 gerektirebilecek \u00e7e\u015fitli \u00f6zel ko\u015fullar\u0131 bulunur. Bu sorunlardan baz\u0131lar\u0131, \u00f6zellikle kapsaml\u0131 altyap\u0131lara sahip b\u00fcy\u00fck \u015firketlerde yayg\u0131nd\u0131r. Projector&#8217;\u0131n \u00f6zellikle ideal bir bi\u00e7imde ele ald\u0131\u011f\u0131 sorunlar\u0131n \u00f6zet listesine buradan ula\u015fabilirsiniz:<\/p>\n<ul>\n<li><strong>\u00c7al\u0131\u015ft\u0131rma zaman\u0131 yak\u0131nlar\u0131nda<\/strong> kod veya <strong>veritaban\u0131<\/strong> \u00e7al\u0131\u015ft\u0131rarak tekrarl\u0131 i\u015flemleri azaltma.<\/li>\n<li><strong>Y\u00fcksek g\u00fcvenlikli<\/strong> kurumsal ortamlar.<\/li>\n<li>\u00c7ok <strong>b\u00fcy\u00fck projeler<\/strong>.<\/li>\n<li><strong>Kaynak kodun<\/strong> yerel kopyas\u0131n\u0131n tutulmas\u0131 yasakt\u0131r.<\/li>\n<li>Kullan\u0131c\u0131 <strong>donan\u0131m\u0131 k\u0131s\u0131tlamalar\u0131<\/strong>.<\/li>\n<li><strong>Zay\u0131f istemciler<\/strong>.<\/li>\n<li>Windows makinelerde veya ChromeOS gibi <strong>geleneksel olmayan i\u015fletim sistemlerinde<\/strong> GNU\/Linux ortam\u0131nda IDE \u00e7al\u0131\u015ft\u0131rma ihtiyac\u0131.<\/li>\n<li>Uygulaman\u0131z sunucuda \u00e7al\u0131\u015fmaya devam ederken <strong>bilgisayar\u0131n\u0131z\u0131 kapatma ihtiyac\u0131<\/strong>.<\/li>\n<li><strong>Uzaktan hata ay\u0131klama<\/strong> sunucu taraf\u0131 (devtest, devprod).<\/li>\n<li>Hata ay\u0131klama kaynaklar\u0131 ve \u00f6nceden yap\u0131land\u0131r\u0131lm\u0131\u015f IDE&#8217;ye sahip <strong>Sanal Makine veya Docker<\/strong> g\u00f6r\u00fcnt\u00fcleri.<\/li>\n<li><strong>Uzaktan eri\u015fim<\/strong> gerektiren bir yap\u0131land\u0131rma.<\/li>\n<\/ul>\n<p><em>Projector&#8217;\u0131n ortak \u00e7al\u0131\u015fmayla geli\u015ftirmeyi desteklemedi\u011fini unutmay\u0131n. Ortak \u00e7al\u0131\u015fma arac\u0131na ihtiyac\u0131n\u0131z varsa <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/code-with-me.html\" target=\"_blank\" rel=\"noopener\">Code With Me<\/a>&#8216;yi deneyin. Code With Me ve Projector&#8217;\u0131n i\u015flevlerini bir araya getiren yeni bir uzaktan geli\u015ftirme \u00e7\u00f6z\u00fcm\u00fc \u00fczerinde de \u00e7al\u0131\u015f\u0131yoruz. Bu sayede, a\u011f gecikmesi sorunlar\u0131 daha da azalt\u0131labilecek.<\/em><\/p>\n<h1><strong>A\u00e7\u0131k Kaynak<\/strong><\/h1>\n<p>Projector&#8217;\u0131n her bile\u015feni, bir A\u00e7\u0131k Kaynak lisans\u0131 kapsam\u0131nda yay\u0131nlanmaktad\u0131r. Bu \u00f6zellik, bu teknolojiyi temel alarak \u00f6zel \u00e7\u00f6z\u00fcmler geli\u015ftirmek isteyen \u015firketler i\u00e7in b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. En pop\u00fcler \u00fc\u00e7 lisans\u0131 kullan\u0131yoruz:<\/p>\n<ul>\n<li>\u0130stemci: MIT Lisans\u0131 (Expat)<\/li>\n<li>Sunucu: GNU GPL v2.0 + Classpath Exception<\/li>\n<li>Dockerfile&#8217;lar: Apache Lisans\u0131 2.0<\/li>\n<\/ul>\n<p>Sizi, GitHub pull istekleriyle yeni \u00f6zellikler ve hata d\u00fczeltmeleri sunarak katk\u0131da bulunmaya davet ediyoruz. Belirli projelerin GitHub ba\u011flant\u0131lar\u0131n\u0131 a\u015fa\u011f\u0131da bulabilirsiniz.<\/p>\n<h1><strong>Mimari<\/strong><\/h1>\n<p>Projector, istemci-sunucu t\u00fcr\u00fcnde bir yaz\u0131l\u0131md\u0131r. IDE&#8217;yi sunucunuzda \u00e7al\u0131\u015ft\u0131rarak a\u011f \u00fczerinden ba\u011flanabilirsiniz. \u0130stemci ile sunucu aras\u0131ndaki ba\u011flant\u0131 olduk\u00e7a h\u0131zl\u0131 ve hafiftir. <\/p>\n<p>Bu ba\u011flant\u0131y\u0131 VNC gibi bir uzak masa\u00fcst\u00fc \u00e7\u00f6z\u00fcm\u00fc gibi d\u00fc\u015f\u00fcnebilirsiniz. Burada yaln\u0131zca IDE pencereleri g\u00f6r\u00fcnt\u00fclenir ve Java tabanl\u0131 uygulamalarda maksimum aktarma h\u0131z\u0131 i\u00e7in ayarlanm\u0131\u015ft\u0131r.<\/p>\n<p>Projector, sunucu veya istemci kurulumu i\u00e7in bir\u00e7ok se\u00e7enek sunar. <\/p>\n<h1><strong>\u0130stemci Uygulamalar\u0131<\/strong><\/h1>\n<p>IDE&#8217;ye ba\u011flanmak i\u00e7in taray\u0131c\u0131 veya yerel uygulama kullanabilirsiniz. Yerel uygulama, daha iyi i\u015flevler (\u00f6rne\u011fin klavye k\u0131sayollar\u0131 sunar) sa\u011flar ancak yaln\u0131zca masa\u00fcst\u00fc i\u015fletim sistemleri i\u00e7in sunulmaktad\u0131r. \u015eu anda, mobil cihazlar i\u00e7in tek se\u00e7enek taray\u0131c\u0131 kullan\u0131m\u0131d\u0131r ancak gelecekte mobil platformlar i\u00e7in de yerel istemciler olu\u015fturmay\u0131 planl\u0131yoruz.<\/p>\n<h2><strong>Web \u0130stemcisi<\/strong><\/h2>\n<p>Taray\u0131c\u0131 deneyimi, etkile\u015fimli bir web sitesi kullan\u0131m\u0131na olduk\u00e7a benzerdir. Ancak  masa\u00fcst\u00fcne daha yak\u0131n bir deneyim sunan tam ekran moduna girme se\u00e7ene\u011fi bulunur.<\/p>\n<p>URL parametrelerini de\u011fi\u015ftirerek web istemcisinin \u00f6zelliklerini kontrol edebilirsiniz. \u00d6rne\u011fin mobil cihazlarda, URL&#8217;ye <em>&quot;mobile&quot;<\/em> parametresini ekleyerek sanal klavye a\u00e7ma \u00f6zelli\u011fi dahil olmak \u00fczere katman d\u00fc\u011fmelerini etkinle\u015ftirebilirsiniz.<\/p>\n<p>Web istemcisi, HTML5 Canvas API kullan\u0131larak uygulan\u0131r ve bu API ile uyumlu t\u00fcm taray\u0131c\u0131larda \u00e7al\u0131\u015fmas\u0131 beklenir. Chrome\/Chromium, Firefox ve Safari&#8217;de test edilmi\u015ftir.<\/p>\n<p>Web istemcisini hi\u00e7bir yere y\u00fcklemeniz gerekmez: Projector&#8217;\u0131n web sunucusu b\u00f6l\u00fcm\u00fcne zaten dahil edilmi\u015ftir. Tek yapman\u0131z gereken URL&#8217;yi girmektir. Kodun tamam\u0131na <a href=\"https:\/\/github.com\/JetBrains\/projector-client\/tree\/master\/projector-client-web\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>&#8216;dan ula\u015fabilirsiniz.<\/p>\n<h2><strong>Yerel Uygulama<\/strong><\/h2>\n<p>macOS, Windows ve Linux i\u00e7in bir yerel uygulama kullanabilirsiniz. \u0130kili dosyalara <a href=\"https:\/\/github.com\/JetBrains\/projector-client\/releases\" target=\"_blank\" rel=\"noopener\">buradan<\/a> ula\u015f\u0131labilir ve kaynaklar <a href=\"https:\/\/github.com\/JetBrains\/projector-client\/tree\/master\/projector-launcher\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>&#8216;da yay\u0131nlanm\u0131\u015ft\u0131r.<\/p>\n<p>Dock\/G\u00f6rev \u00c7ubu\u011fu entegrasyonu gibi beklenen avantajlar\u0131n yan\u0131 s\u0131ra bu uygulama, Ctrl+W\/Cmd+W gibi klavye k\u0131sayollar\u0131n\u0131 destekler. Bu k\u0131sayollar, taray\u0131c\u0131 istemcisinde genellikle bulunmaz.<\/p>\n<h1><strong>Sunucu Taraf\u0131<\/strong><\/h1>\n<h2><strong>Python Y\u00fckleme Komut Dosyas\u0131<\/strong><\/h2>\n<p><a href=\"https:\/\/github.com\/JetBrains\/projector-installer\" target=\"_blank\" rel=\"noopener\">Y\u00fckleme komut dosyam\u0131z<\/a>, sunucu taraf\u0131 bile\u015fenlerinin y\u00fcklenmesinde esneklik sa\u011flar. Bu, ba\u011f\u0131ms\u0131z bir da\u011f\u0131t\u0131md\u0131r ve \u015fu anda yaln\u0131zca GNU\/Linux ana makineleri i\u00e7in mevcuttur. S\u00fcr\u00fcm\u00fc, g\u00fcvenlik se\u00e7enekleri ve di\u011fer \u00f6zellikleriyle birlikte y\u00fcklemek istedi\u011finiz IDE&#8217;yi se\u00e7ebilirsiniz.<\/p>\n<h2><strong>Docker G\u00f6r\u00fcnt\u00fcleri<\/strong><\/h2>\n<p>Docker, Projector&#8217;\u0131 bulut ortam\u0131nda \u00e7al\u0131\u015ft\u0131rman\u0131n en kolay yoludur. JetBrains IDE&#8217;lerini ve Projector&#8217;\u0131 \u0130\u00e7eren Docker g\u00f6r\u00fcnt\u00fcleri olu\u015fturman\u0131z\u0131 sa\u011flayacak <a href=\"https:\/\/github.com\/JetBrains\/projector-docker\" target=\"_blank\" rel=\"noopener\">\u00f6rnek bir komut dosyas\u0131<\/a> sunuyoruz. Bu komut dosyas\u0131, IDE&#8217;leri Docker&#8217;\u0131n mevcut oldu\u011fu her yerde \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 sa\u011flar. IDE, g\u00f6zetimsiz ve yal\u0131t\u0131lm\u0131\u015f bir \u015fekilde \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Ayr\u0131ca, sunucuya X11 y\u00fcklemeniz gerekmez. G\u00f6r\u00fcnt\u00fc kendi i\u00e7inde yer al\u0131r.<\/p>\n<p>DockerHub kullanmak yerine, \u00f6zel Docker Kayd\u0131m\u0131z\u0131 kullanarak \u00f6nceden olu\u015fturulmu\u015f g\u00f6r\u00fcnt\u00fcler yay\u0131nlad\u0131k. \u00d6rne\u011fin, bu kod par\u00e7ac\u0131\u011f\u0131 IntelliJ IDEA Community Edition i\u00e7in pull i\u015flemi ger\u00e7ekle\u015ftirmenize olanak tan\u0131r: <\/p>\n<p><code>docker pull registry.jetbrains.team\/p\/prj\/containers\/projector-idea-c<\/code><\/p>\n<h2><strong>IDE Eklentisi<\/strong><\/h2>\n<p>Son olarak, <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/16015-projector\" target=\"_blank\" rel=\"noopener\">eklentiyi<\/a> sunucu taraf\u0131 \u00f6\u011felerini ayr\u0131 bir sunucuya da\u011f\u0131tmak zorunda kalmadan do\u011frudan IDE&#8217;nize y\u00fckleyebilirsiniz. Bu eklenti sayesinde cihaz\u0131n\u0131z sunucuya d\u00f6n\u00fc\u015f\u00fcr. Her zaman oldu\u011fu gibi, kaynak kodunu <a href=\"https:\/\/github.com\/JetBrains\/projector-server\/tree\/master\/projector-plugin\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>&#8216;da bulabilirsiniz.<\/p>\n<p>Ancak eklenti \u00e7ok daha az yal\u0131t\u0131lm\u0131\u015ft\u0131r. Bu durum, i\u015fletim sistemiyle etkile\u015fimlerle kar\u015f\u0131la\u015fabilece\u011finiz anlam\u0131na gelir. \u00d6rne\u011fin, macOS i\u015fletim sistemindeki genel men\u00fcy\u00fc olu\u015fturamay\u0131z.<\/p>\n<h1><strong>Kendiniz Geli\u015ftirin<\/strong><\/h1>\n<p>Projector, bir son kullan\u0131c\u0131 \u00e7\u00f6z\u00fcm\u00fc de\u011fil, bir teknolojidir. Bu teknolojiyi, kendi altyap\u0131n\u0131z\u0131 \u00f6zelle\u015ftirerek i\u015fletmenizin ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131lamak i\u00e7in kullanabilirsiniz. Ansible? Elbette. Kubernetes? Hi\u00e7 sorun de\u011fil. <\/p>\n<p>Yeterli d\u00fczeyde teknik uzmanl\u0131\u011fa sahip oldu\u011funuzu varsayd\u0131\u011f\u0131m\u0131zda diledi\u011finiz her \u015feyi olu\u015fturabilirsiniz. Kod a\u00e7\u0131k kaynakt\u0131r. Bu nedenle, diledi\u011finiz her \u015feyi de\u011fi\u015ftirmenizin veya katk\u0131da bulunman\u0131z\u0131n \u00f6n\u00fcnde hi\u00e7bir engel yoktur. En \u00f6nemli sunucu taraf\u0131 kodunun yan\u0131 s\u0131ra daha fazla bilgiyi <a href=\"https:\/\/github.com\/JetBrains\/projector-server\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>&#8216;da bulabilirsiniz.<\/p>\n<p>Projector halen yeni bir teknoloji olmas\u0131na ra\u011fmen, uzak IDE eri\u015fimi i\u00e7in en iyi \u00e7\u00f6z\u00fcmlerden biri olma potansiyeline sahip oldu\u011funa inan\u0131yoruz. Geri bildirimlerinizi almaktan memnuniyet duyar\u0131z. <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/PRJ\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a> ve <a href=\"https:\/\/twitter.com\/ProjectorJB\" target=\"_blank\" rel=\"noopener\">Twitter<\/a> \u00fczerinden diledi\u011finiz zaman bizimle ileti\u015fime ge\u00e7ebilirsiniz.<\/p>\n<p>\u2014 Projector ekibi<\/p>\n","protected":false},"author":902,"featured_media":123889,"comment_status":"closed","ping_status":"closed","template":"","categories":[],"tags":[],"cross-post-tag":[6284],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/tr\/wp-json\/wp\/v2\/blog\/128143"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/tr\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/tr\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/tr\/wp-json\/wp\/v2\/users\/902"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/tr\/wp-json\/wp\/v2\/comments?post=128143"}],"version-history":[{"count":2,"href":"https:\/\/blog.jetbrains.com\/tr\/wp-json\/wp\/v2\/blog\/128143\/revisions"}],"predecessor-version":[{"id":128145,"href":"https:\/\/blog.jetbrains.com\/tr\/wp-json\/wp\/v2\/blog\/128143\/revisions\/128145"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/tr\/wp-json\/wp\/v2\/media\/123889"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/tr\/wp-json\/wp\/v2\/media?parent=128143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/tr\/wp-json\/wp\/v2\/categories?post=128143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/tr\/wp-json\/wp\/v2\/tags?post=128143"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/tr\/wp-json\/wp\/v2\/cross-post-tag?post=128143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}