{"id":33699,"date":"2013-07-22T09:30:00","date_gmt":"2013-07-22T06:30:00","guid":{"rendered":"https:\/\/fatihboy.com\/?p=33699"},"modified":"2021-06-21T13:07:07","modified_gmt":"2021-06-21T10:07:07","slug":"jsrt-betik-sonlandirma","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/jsrt-betik-sonlandirma\/","title":{"rendered":"JsRT; Betik Sonland\u0131rma"},"content":{"rendered":"<p>&nbsp;&nbsp; <a href=\"\/en\/?tag=jsrt\">\u00d6nceki makalelerimde<\/a> <em>JsRT (JavaScript RunTime)<\/em> ile tan\u0131\u015fm\u0131\u015f ve kendi geli\u015ftirdi\u011fimiz bir uygulamada nas\u0131l bar\u0131nd\u0131rabilece\u011fimizi g\u00f6rm\u00fc\u015ft\u00fck. Bu makalemde JsRT kullanarak geli\u015ftirdi\u011finiz bir uygulamay\u0131 sahaya sundu\u011funuzda kar\u015f\u0131n\u0131za gelebilecek \u00f6nemli bir problemi ve \u00e7\u00f6z\u00fcm\u00fcn\u00fc payla\u015faca\u011f\u0131m.<\/p>\n\n\n\n<p>&nbsp;&nbsp; \u00d6nceki makalemde \u00f6rnekledi\u011fim basit betikte hat\u0131rlarsan\u0131z, ekrana <em>Merhaba D\u00fcnya <\/em>yazarak uygulamam\u0131z\u0131 sonland\u0131rm\u0131\u015ft\u0131k. Sizde kabul edersiniz ki ger\u00e7ek hayatta bundan \u00e7ok daha kar\u0131\u015f\u0131k betikler kar\u015f\u0131m\u0131za \u00e7\u0131kacakt\u0131r. Hele ki bu betikler bizim taraf\u0131m\u0131zdan de\u011fil de son kullan\u0131c\u0131 taraf\u0131ndan yaz\u0131l\u0131yorsa daha da kar\u0131\u015f\u0131k olabilir. Kimi i\u015f mant\u0131klar\u0131nda, uygulamam\u0131z\u0131n sistem kaynaklar\u0131n\u0131 d\u00fczg\u00fcn kullanabilmesi i\u00e7in x dakika sonra ya da kullan\u0131c\u0131n\u0131n bir tu\u015f kombinasyonu ile tetiklemesi ard\u0131ndan beti\u011fimizin sonlanmas\u0131 istenebilir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; B\u00f6ylesi bir senaryoda, runtime i\u00e7erisinde \u00e7al\u0131\u015fmakta olan beti\u011fimizi durdurabilmemizin tek yolu JsRT taraf\u0131ndan bize sunulan ve parametre olarak beti\u011fin \u00e7al\u0131\u015ft\u0131\u011f\u0131 runtime\u2019\u0131 kabul eden <strong>JsDisableRuntimeExecution<\/strong> fonksiyonudur. Bu fonksiyonun \u00e7al\u0131\u015fma mant\u0131\u011f\u0131 asl\u0131nda olabildi\u011fine basittir; bir durum de\u011fi\u015fkeninin de\u011ferini ayarlar diye d\u00fc\u015f\u00fcnebilirsiniz. As\u0131l i\u015f ise Runtime taraf\u0131ndan \u00e7oktan yap\u0131lm\u0131\u015ft\u0131r bile\u2026 Runtime, yazd\u0131\u011f\u0131m\u0131z beti\u011fi al\u0131p \u00e7al\u0131\u015ft\u0131rabilir kodlara derlerken araya iptal durumunu kontrol eden kodlar\u0131 enjekte eder. Bu sayede beti\u011fimizin normal i\u015fleyi\u015fi s\u0131ras\u0131nda iptal durumu de\u011fi\u015fti\u011finde bir sonraki kontrol noktas\u0131nda fark edilecek ve \u00e7al\u0131\u015fmas\u0131 sonland\u0131r\u0131lacakt\u0131r. Mant\u0131kl\u0131, de\u011fil mi!<\/p>\n\n\n\n<p>&nbsp;&nbsp; Tabi ki ka\u00e7\u0131n\u0131lmaz olarak, Runtime taraf\u0131ndan derleme s\u0131ras\u0131nda kodumuza b\u00f6ylesi eklemeler yap\u0131lmas\u0131n\u0131n bir performans maliyeti olacakt\u0131r. Runtime tasar\u0131m\u0131nda bu durum g\u00f6z \u00f6n\u00fcne al\u0131narak performans maliyetinin minimuma indirilebilmesi i\u00e7in gerekli \u00f6nlemler al\u0131nm\u0131\u015f durumda. Bu \u00f6nlemlerden en basiti \u015f\u00fcphesiz ki her kod sat\u0131r\u0131n\u0131n ard\u0131na b\u00f6ylesi bir kontrol eklememek \ud83d\ude09 Bir ba\u015fkas\u0131 ise d\u00f6ng\u00fclerde bu kontrol\u00fc ger\u00e7ekle\u015ftirmemek. Bu sayede basit d\u00f6ng\u00fclerde katlanarak giden bir performans maliyetinin \u00f6n\u00fcne ge\u00e7ilmi\u015f olur. Tabi b\u00f6yle bir karar\u0131n dezavantaj\u0131da olmakta; basit d\u00f6ng\u00fcler i\u00e7erisinde beti\u011fimiz sonland\u0131r\u0131lamamakta, uygulamam\u0131z ask\u0131da kalarak hi\u00e7 bir zaman sona eremeyebilir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bir \u00f6nceki paragrafta bahsetti\u011fim durumun \u00f6n\u00fcne ge\u00e7ebilmekte tabi ki m\u00fcmk\u00fcn, bunun i\u00e7in Runtime ilklendirilirken ge\u00e7ece\u011fimiz <strong>JsRuntimeAttributeAllowScriptInterrupt<\/strong>&nbsp; bayra\u011f\u0131 ile d\u00f6ng\u00fc sonlar\u0131nda da bu kontrol\u00fcn yap\u0131lmas\u0131n\u0131 sa\u011flayabiliriz. Bu de\u011fi\u015fikli\u011fin beti\u011fin \u00e7al\u0131\u015fma performans\u0131n\u0131 az da olsa olumsuz etkileyece\u011fini s\u00f6ylememe gerek yok san\u0131r\u0131m.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Konuyu peki\u015ftirmek ad\u0131na; bir \u00f6nceki makalede payla\u015ft\u0131\u011f\u0131m kodlardan devam ederek, a\u015fa\u011f\u0131daki beti\u011fi \u00e7al\u0131\u015ft\u0131rmay\u0131 deneyelim;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var i = 0;\nfor (i = 0; i>-1; i++) {\n    alert(\"D\u00f6ng\u00fc : \" + i);\n}<\/pre>\n\n\n\n<p>&nbsp; Sonsuz bir d\u00f6ng\u00fc i\u00e7erisinde ekrana o anki d\u00f6ng\u00fc de\u011feri yaz\u0131lacakt\u0131r;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-sonsuz-dongu.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-sonsuz-dongu_thumb.png\" alt=\"Yazd\u0131\u011f\u0131m\u0131z basit bir betik ile sonsuz bir d\u00f6ng\u00fc olu\u015fturduk\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; E\u011fer bir \u00f6nceki makalemde payla\u015ft\u0131\u011f\u0131m \u00f6rnek MSDN kodlar\u0131n\u0131 kullan\u0131yorsan\u0131z beti\u011fi sonland\u0131rmak i\u00e7in do\u011frudan <em>JsDisableRuntimeExecution<\/em> \u00e7a\u011fr\u0131s\u0131 yapman\u0131za gerek olmad\u0131\u011f\u0131n\u0131 farketmi\u015fsinizdir. Bu i\u015f i\u00e7in <strong>JavaScriptRuntime<\/strong> s\u0131n\u0131f\u0131 i\u00e7erisinde yer alan <strong>Disabled<\/strong> \u00f6zelli\u011fini kullanabilirsiniz. Bu \u00f6zellikle kendi i\u00e7erisinde gerekli fonksiyon \u00e7a\u011fr\u0131lar\u0131n\u0131 yapmakta.<\/p>\n\n\n\n<p>&nbsp;&nbsp; \u00d6nceki makalemdeki kodumuzu test amac\u0131yla a\u015fa\u011f\u0131daki \u015fekilde asenkrona d\u00f6n\u00fc\u015ft\u00fcrd\u00fcm;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"17-29\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using Enterprisecoding.JSHosting.Hosting;\nusing System;\nusing System.IO;\nusing System.Threading.Tasks;\n\nnamespace Enterprisecoding.JSHosting {\n    class Program {\n        private static JavaScriptSourceContext currentSourceContext = JavaScriptSourceContext.FromIntPtr(IntPtr.Zero);\n        private static JavaScriptRuntime calismaZamani;\n        static void Main(string[] args) {\n            if (args == null || args.Length == 0) {\n                Console.Error.WriteLine(\"Kullan\u0131m :  JSHosting &lt;betik ad\u0131> &lt;parametreler>\");\n\n                return;\n            }\n\n            Task&lt;JavaScriptValue?> scriptTask = Task.Factory.StartNew(() => {\n                return BetigiCalistir(args);\n            });\n\n            if (scriptTask.IsCompleted) {\n                var sonuc = scriptTask.Result;\n            }\n            else {\n                scriptTask.Wait(300);\n\n                calismaZamani.Disabled = true;\n                var sonuc = scriptTask.Result;\n            }\n\n            Console.ReadKey();\n        }\n\n        private static JavaScriptValue? BetigiCalistir(string[] args) {\n            using (calismaZamani = JavaScriptRuntime.Create()) {\n                var context = calismaZamani.CreateContext();\n\n                using (new JavaScriptContext.Scope(context)) {\n                    var globalObject = JavaScriptValue.GlobalObject;\n\n                    var propertyId = JavaScriptPropertyId.FromString(\"alert\");\n                    var function = JavaScriptValue.CreateFunction(Alert);\n                    globalObject.SetProperty(propertyId, function, true);\n\n                    var betikAdi = args[0];\n                    var betik = File.ReadAllText(betikAdi);\n\n                    JavaScriptValue? sonuc = null;\n                    try {\n                        sonuc = JavaScriptContext.RunScript(betik, currentSourceContext++, betikAdi);\n                    }\n                    catch (JavaScriptScriptException e) {\n                        if (e.ErrorCode == JavaScriptErrorCode.ScriptTerminated) {\n                            Console.Error.WriteLine(\"JSHosting: script sonland\u0131r\u0131ld\u0131\");\n                        }\n                        else {\n                            var messageName = JavaScriptPropertyId.FromString(\"message\");\n                            var messageValue = e.Error.GetProperty(messageName);\n                            var message = messageValue.ToString();\n\n                            Console.Error.WriteLine(\"JSHosting: Hata: {0}\", message);\n                        }\n                    }\n                    catch (Exception e) {\n                        Console.Error.WriteLine(\"JSHosting: Betik \u00e7al\u0131\u015ft\u0131r\u0131l\u0131rken hata olu\u015ftu: {0}\", e.Message);\n                    }\n\n                    return sonuc;\n                }\n            }\n        }\n\n        private static JavaScriptValue Alert(JavaScriptValue callee, bool isConstructCall, JavaScriptValue[] arguments, ushort argumentCount) {\n            for (uint index = 1; index &lt; argumentCount; index++) {\n                if (index > 1) {\n                    Console.Write(\" \");\n                }\n\n                Console.Write(arguments[index].ConvertToString().ToString());\n            }\n\n            Console.WriteLine();\n\n            return JavaScriptValue.Invalid;\n        }\n    }\n}<\/pre>\n\n\n\n<p>Yukar\u0131daki kod par\u00e7ac\u0131\u011f\u0131nda beti\u011fimizi ba\u015flatt\u0131ktan sonra bitip bitmedi\u011fini kontrol ederek bitmemesi durumunda tamamlanmas\u0131 i\u00e7in 300 milisaniyelik bir s\u00fcre veriyorum. Dikkat ederseniz hen\u00fcz JsRuntimeAttributeAllowScriptInterrupt&nbsp; tan\u0131mlamas\u0131n\u0131 yapmad\u0131k. Bu kod par\u00e7ac\u0131\u011f\u0131n\u0131 sonsuz d\u00f6ng\u00fc ile \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda beti\u011fin \u00e7al\u0131\u015fmas\u0131n\u0131n sonland\u0131r\u0131lamad\u0131\u011f\u0131na dair \u201c<em>Cannot disable execution.<\/em>\u201d hatas\u0131n\u0131 alaca\u011f\u0131z;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-cannot-disable-execution.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-cannot-disable-execution_thumb.png\" alt=\"Beti\u011fimizi \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda &quot;Cannot disable execution&quot; hatas\u0131 alaca\u011f\u0131z\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Bu hata mesaj\u0131n\u0131 almamak i\u00e7in \u00e7al\u0131\u015fma zaman\u0131n\u0131 olu\u015fturdu\u011fumuz kodu a\u015fa\u011f\u0131daki \u015fekilde g\u00fcncellemeliyiz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">calismaZamani = JavaScriptRuntime.Create(JavaScriptRuntimeAttributes.AllowScriptInterrupt, JavaScriptRuntimeVersion.Version11)<\/pre>\n\n\n\n<p>&nbsp; Dikkat ederseniz Runtime&#8217;\u0131 ilklendirirken JsRuntimeAttributeAllowScriptInterrupt belirtmek i\u00e7in JavaScriptRuntimeAttributes.AllowScriptInterrupt kulland\u0131k. Ard\u0131ndan kodumuzu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda ba\u015far\u0131l\u0131 sonucu g\u00f6rebiliriz;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-sonlandirildi.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-sonlandirildi_thumb.png\" alt=\"Beti\u011fimiz ba\u015far\u0131l\u0131 \u015fekilde sonland\u0131r\u0131ld\u0131\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Koda dikkat ettiyseniz, asl\u0131nda betik ba\u015far\u0131yla sonland\u0131r\u0131ld\u0131\u011f\u0131nda da bir hata f\u0131rlat\u0131lmakta. kodumuz i\u00e7erisinde bu hata t\u00fcr\u00fcn\u00fc yakalay\u0131p kullan\u0131c\u0131y\u0131 uygun \u015fekilde bilgilendiriyoruz.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Toparlad\u0131\u011f\u0131m\u0131zda kodumuzun son hali a\u015fa\u011f\u0131daki \u015fekilde olacakt\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"35,53-55\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using Enterprisecoding.JSHosting.Hosting;\nusing System;\nusing System.IO;\nusing System.Threading.Tasks;\n\nnamespace Enterprisecoding.JSHosting {\n    class Program {\n        private static JavaScriptSourceContext currentSourceContext = JavaScriptSourceContext.FromIntPtr(IntPtr.Zero);\n        private static JavaScriptRuntime calismaZamani;\n        static void Main(string[] args) {\n            if (args == null || args.Length == 0) {\n                Console.Error.WriteLine(\"Kullan\u0131m :  JSHosting &lt;betik ad\u0131> &lt;parametreler>\");\n\n                return;\n            }\n\n            Task&lt;JavaScriptValue?> scriptTask = Task.Factory.StartNew(() => {\n                return BetigiCalistir(args);\n            });\n\n            if (scriptTask.IsCompleted) {\n                var sonuc = scriptTask.Result;\n            }\n            else {\n                scriptTask.Wait(300);\n\n                calismaZamani.Disabled = true;\n                var sonuc = scriptTask.Result;\n            }\n\n            Console.ReadKey();\n        }\n\n        private static JavaScriptValue? BetigiCalistir(string[] args) {\n            using (calismaZamani = JavaScriptRuntime.Create(JavaScriptRuntimeAttributes.AllowScriptInterrupt, JavaScriptRuntimeVersion.Version11)) {\n                var context = calismaZamani.CreateContext();\n\n                using (new JavaScriptContext.Scope(context)) {\n                    var globalObject = JavaScriptValue.GlobalObject;\n\n                    var propertyId = JavaScriptPropertyId.FromString(\"alert\");\n                    var function = JavaScriptValue.CreateFunction(Alert);\n                    globalObject.SetProperty(propertyId, function, true);\n\n                    var betikAdi = args[0];\n                    var betik = File.ReadAllText(betikAdi);\n\n                    JavaScriptValue? sonuc = null;\n                    try {\n                        sonuc = JavaScriptContext.RunScript(betik, currentSourceContext++, betikAdi);\n                    }\n                    catch (JavaScriptScriptException e) {\n                        if (e.ErrorCode == JavaScriptErrorCode.ScriptTerminated) {\n                            Console.Error.WriteLine(\"JSHosting: script sonland\u0131r\u0131ld\u0131\");\n                        }\n                        else {\n                            var messageName = JavaScriptPropertyId.FromString(\"message\");\n                            var messageValue = e.Error.GetProperty(messageName);\n                            var message = messageValue.ToString();\n\n                            Console.Error.WriteLine(\"JSHosting: Hata: {0}\", message);\n                        }\n                    }\n                    catch (Exception e) {\n                        Console.Error.WriteLine(\"JSHosting: Betik \u00e7al\u0131\u015ft\u0131r\u0131l\u0131rken hata olu\u015ftu: {0}\", e.Message);\n                    }\n\n                    return sonuc;\n                }\n            }\n        }\n\n        private static JavaScriptValue Alert(JavaScriptValue callee, bool isConstructCall, JavaScriptValue[] arguments, ushort argumentCount) {\n            for (uint index = 1; index &lt; argumentCount; index++) {\n                if (index > 1) {\n                    Console.Write(\" \");\n                }\n\n                Console.Write(arguments[index].ConvertToString().ToString());\n            }\n\n            Console.WriteLine();\n\n            return JavaScriptValue.Invalid;\n        }\n    }\n}<\/pre>","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; \u00d6nceki makalelerimde JsRT (JavaScript RunTime) ile tan\u0131\u015fm\u0131\u015f ve kendi geli\u015ftirdi\u011fimiz bir uygulamada nas\u0131l bar\u0131nd\u0131rabilece\u011fimizi g\u00f6rm\u00fc\u015ft\u00fck. Bu makalemde JsRT kullanarak geli\u015ftirdi\u011finiz bir uygulamay\u0131 sahaya sundu\u011funuzda kar\u015f\u0131n\u0131za gelebilecek \u00f6nemli bir problemi ve \u00e7\u00f6z\u00fcm\u00fcn\u00fc payla\u015faca\u011f\u0131m. &nbsp;&nbsp; \u00d6nceki makalemde \u00f6rnekledi\u011fim basit betikte hat\u0131rlarsan\u0131z, ekrana Merhaba D\u00fcnya yazarak uygulamam\u0131z\u0131 sonland\u0131rm\u0131\u015ft\u0131k. Sizde kabul edersiniz ki ger\u00e7ek hayatta bundan \u00e7ok daha&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/jsrt-betik-sonlandirma\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":33703,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28],"tags":[328,329,330],"class_list":["post-33699","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-turkce","tag-chakra","tag-javascript","tag-jsrt"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JsRT; Betik Sonland\u0131rma - Fatih Boy<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihboy.com\/en\/jsrt-betik-sonlandirma\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JsRT; Betik Sonland\u0131rma - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"&nbsp;&nbsp; \u00d6nceki makalelerimde JsRT (JavaScript RunTime) ile tan\u0131\u015fm\u0131\u015f ve kendi geli\u015ftirdi\u011fimiz bir uygulamada nas\u0131l bar\u0131nd\u0131rabilece\u011fimizi g\u00f6rm\u00fc\u015ft\u00fck. Bu makalemde JsRT kullanarak geli\u015ftirdi\u011finiz bir uygulamay\u0131 sahaya sundu\u011funuzda kar\u015f\u0131n\u0131za gelebilecek \u00f6nemli bir problemi ve \u00e7\u00f6z\u00fcm\u00fcn\u00fc payla\u015faca\u011f\u0131m. &nbsp;&nbsp; \u00d6nceki makalemde \u00f6rnekledi\u011fim basit betikte hat\u0131rlarsan\u0131z, ekrana Merhaba D\u00fcnya yazarak uygulamam\u0131z\u0131 sonland\u0131rm\u0131\u015ft\u0131k. Sizde kabul edersiniz ki ger\u00e7ek hayatta bundan \u00e7ok daha...Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/jsrt-betik-sonlandirma\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2013-07-22T06:30:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-21T10:07:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/bricks-stop.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"1200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Fatih Boy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Boy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"JsRT; Betik Sonland\u0131rma\",\"datePublished\":\"2013-07-22T06:30:00+00:00\",\"dateModified\":\"2021-06-21T10:07:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/\"},\"wordCount\":772,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/bricks-stop.jpg\",\"keywords\":[\"Chakra\",\"Javascript\",\"JsRt\"],\"articleSection\":[\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/\",\"url\":\"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/\",\"name\":\"JsRT; Betik Sonland\u0131rma - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/bricks-stop.jpg\",\"datePublished\":\"2013-07-22T06:30:00+00:00\",\"dateModified\":\"2021-06-21T10:07:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#primaryimage\",\"url\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/bricks-stop.jpg\",\"contentUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/bricks-stop.jpg\",\"width\":1800,\"height\":1200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JsRT; Betik Sonland\u0131rma\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihboy.com\/#website\",\"url\":\"https:\/\/fatihboy.com\/\",\"name\":\"Fatih Boy\",\"description\":\"Ki\u015fisel Web Sitesi\",\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihboy.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\",\"name\":\"Fatih Boy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"caption\":\"Fatih Boy\"},\"logo\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/fatihboy.com\"],\"url\":\"https:\/\/fatihboy.com\/en\/author\/fatih\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JsRT; Betik Sonland\u0131rma - Fatih Boy","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihboy.com\/en\/jsrt-betik-sonlandirma\/","og_locale":"en_US","og_type":"article","og_title":"JsRT; Betik Sonland\u0131rma - Fatih Boy","og_description":"&nbsp;&nbsp; \u00d6nceki makalelerimde JsRT (JavaScript RunTime) ile tan\u0131\u015fm\u0131\u015f ve kendi geli\u015ftirdi\u011fimiz bir uygulamada nas\u0131l bar\u0131nd\u0131rabilece\u011fimizi g\u00f6rm\u00fc\u015ft\u00fck. Bu makalemde JsRT kullanarak geli\u015ftirdi\u011finiz bir uygulamay\u0131 sahaya sundu\u011funuzda kar\u015f\u0131n\u0131za gelebilecek \u00f6nemli bir problemi ve \u00e7\u00f6z\u00fcm\u00fcn\u00fc payla\u015faca\u011f\u0131m. &nbsp;&nbsp; \u00d6nceki makalemde \u00f6rnekledi\u011fim basit betikte hat\u0131rlarsan\u0131z, ekrana Merhaba D\u00fcnya yazarak uygulamam\u0131z\u0131 sonland\u0131rm\u0131\u015ft\u0131k. Sizde kabul edersiniz ki ger\u00e7ek hayatta bundan \u00e7ok daha...Read More","og_url":"https:\/\/fatihboy.com\/en\/jsrt-betik-sonlandirma\/","og_site_name":"Fatih Boy","article_published_time":"2013-07-22T06:30:00+00:00","article_modified_time":"2021-06-21T10:07:07+00:00","og_image":[{"width":1800,"height":1200,"url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/bricks-stop.jpg","type":"image\/jpeg"}],"author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"JsRT; Betik Sonland\u0131rma","datePublished":"2013-07-22T06:30:00+00:00","dateModified":"2021-06-21T10:07:07+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/"},"wordCount":772,"commentCount":0,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"image":{"@id":"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/bricks-stop.jpg","keywords":["Chakra","Javascript","JsRt"],"articleSection":["T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/","url":"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/","name":"JsRT; Betik Sonland\u0131rma - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#primaryimage"},"image":{"@id":"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/bricks-stop.jpg","datePublished":"2013-07-22T06:30:00+00:00","dateModified":"2021-06-21T10:07:07+00:00","breadcrumb":{"@id":"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#primaryimage","url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/bricks-stop.jpg","contentUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/bricks-stop.jpg","width":1800,"height":1200},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/jsrt-betik-sonlandirma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"JsRT; Betik Sonland\u0131rma"}]},{"@type":"WebSite","@id":"https:\/\/fatihboy.com\/#website","url":"https:\/\/fatihboy.com\/","name":"Fatih Boy","description":"Ki\u015fisel Web Sitesi","publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihboy.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158","name":"Fatih Boy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","caption":"Fatih Boy"},"logo":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/fatihboy.com"],"url":"https:\/\/fatihboy.com\/en\/author\/fatih\/"}]}},"brizy_media":[],"_links":{"self":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33699","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/comments?post=33699"}],"version-history":[{"count":1,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33699\/revisions"}],"predecessor-version":[{"id":33700,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33699\/revisions\/33700"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media\/33703"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=33699"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=33699"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=33699"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}