{"id":1911,"date":"2005-09-21T07:08:00","date_gmt":"2005-09-21T07:08:00","guid":{"rendered":"http:\/\/gurkan.wordpress.com\/?p=1911"},"modified":"2017-09-08T03:30:14","modified_gmt":"2017-09-08T03:30:14","slug":"poor-mans-tfs","status":"publish","type":"post","link":"https:\/\/www.havatopraksu.org\/blog\/2005\/09\/21\/poor-mans-tfs\/","title":{"rendered":"Poor Man&#8217;s TFS"},"content":{"rendered":"<p>Last weekend, I sat down and decided to install one of my crappy computer as<br \/>\na Source Control and<br \/>\n<a href=\"http:\/\/www.martinfowler.com\/articles\/continuousIntegration.html\"><br \/>\nContinues Integration<\/a> machine. What I need is<br \/>\n<a href=\"http:\/\/subversion.tigris.org\/\">Subversion<\/a> source control and other<br \/>\nbits and pieces to have a fully functional<br \/>\n<a href=\"http:\/\/better-scm.berlios.de\/comparison\/comparison.html\">Source Control<br \/>\nSystem<\/a>.<\/p>\n<p>I put down my requirements first so that I can measure the quality of my work<br \/>\nlater.<\/p>\n<p>My requirements are:<\/p>\n<ol>\n<li>A source control system is necessary to keep track of different<br \/>\n\tprojects.<\/li>\n<li>Source Control should be browse able with a browser.<\/li>\n<li>Source code should be colored in browser for easy reading.<\/li>\n<li>Source Control should be used for different technologies like .NET,<br \/>\n\tJava, PHP, Pearl etc.<\/li>\n<li>The System should compile the code automatically when there is a change<br \/>\n\tin Source Control.<\/li>\n<li>The System should deploy the executables to proper servers for further<br \/>\n\ttests.<\/li>\n<li>The System should run the Nunit tests and reflect the results.<\/li>\n<li>An Issue tracking system should be exist.<\/li>\n<li>Issue Tracking system should have a connection to Source Control. So<br \/>\n\tthat each defect can be tracked down in code.<\/li>\n<li>Development machines should be able to check-in and out the code<\/li>\n<li>Developers should be warned if tests are not successful.<\/li>\n<li>Developers should be informed when the defects are assigned to them.<br \/>\n&nbsp;<\/li>\n<\/ol>\n<p>After I put down my requirements, I have started to work. First off all, I<br \/>\nhave installed a clean Windows XP Professional on a Celeron 500, 128mb ram, 40gb<br \/>\nHD machine. I have installed IIS, Service Pack 1, and all other updates<br \/>\navailable on <a href=\"http:\/\/windowsupdate.microsoft.com\/\">Windows Update<\/a><br \/>\nsite. .NET Framework 1.1 is also available from the Windows Update.<\/p>\n<p>I knew, I was going to use Subversion as the bases of this continues<br \/>\nintegration machine. It is free, open source and easy to install and use. I have<br \/>\ndownloaded latest version from <a href=\"http:\/\/www.tigris.org\">www.tigris.org<\/a><br \/>\nand installed without a problem. <span style=\"background-color:#FFFF00;\">Don&#8217;t<br \/>\nforget to add the subversion\\bin directory to your PATH variable.<\/span> <\/p>\n<p>Now, I need to create my repository database. Create a directory called<br \/>\n&quot;Repository&quot; in your C: drive and enter the following command on DOS Shell:<\/p>\n<p><span style=\"font-family:Fixedsys;\">C:\\&gt;svnadmin create C:\\Repository<\/span><\/p>\n<p>And also to secure the repository with a user id and password, I have changed<br \/>\nconfiguration and added my name and a password to passwd file. I don&#8217;t know if<br \/>\nthere is a way to hash the passwords in this file, it looks like so vulnerable.<br \/>\n<span style=\"background-color:#FFFF00;\">Go to<br \/>\nC:\\Repository\\conf and open<br \/>\nsvnserve.conf file with your text editor. Uncomment the lines below.<\/span><\/p>\n<p style=\"margin-top:2px;margin-bottom:0;\">\n<span style=\"font-family:Fixedsys;\">[general]<\/span><\/p>\n<p style=\"margin-top:2px;margin-bottom:0;\">\n<span style=\"font-family:Fixedsys;\">anon-access = none<\/span><\/p>\n<p style=\"margin-top:2px;margin-bottom:0;\">\n<span style=\"font-family:Fixedsys;\">auth-access = write<\/span><\/p>\n<p style=\"margin-top:2px;margin-bottom:0;\">\n<span style=\"font-family:Fixedsys;\">password-db = passwd<\/span><\/p>\n<p><span style=\"background-color:#FFFF00;\">Create a new file in the same folder<br \/>\ncalled <b><u>passwd<\/u><\/b> <\/span>and enter the lines below. This is a user<br \/>\nname&nbsp; and password pair.<\/p>\n<p style=\"margin-top:0;margin-bottom:0;\"><span style=\"font-family:Fixedsys;\"><br \/>\n[users]<br \/>\ngurkan = asdfgh<\/span><\/p>\n<p>I also need the Subversion service running all the time so that I don&#8217;t have<br \/>\nto login to the machine and start the service manually. To install the<br \/>\nsubversion server as a service I have downloaded<br \/>\n<a href=\"http:\/\/dark.clansoft.dk\/~mbn\/svnservice\/\"><br \/>\n<span style=\"background-color:#FFFF00;\">SvnService<\/span><\/a><span style=\"background-color:#FFFF00;\"><br \/>\nand copied SVNService.exe into Subversion\\bin directory<\/span>. To install the<br \/>\nservice go to DOS shell and enter:<\/p>\n<p><span style=\"font-family:Fixedsys;\">C:\\&gt;SVNService -install -d -r C:\\Repository<\/span><\/p>\n<p>And to start the service:<\/p>\n<p><span style=\"font-family:Fixedsys;\">C:\\&gt;net start SVNService<\/span><\/p>\n<p>My first requirement is alright now. I have a fully functional Source Control<br \/>\nSystem. My second requirement was to be able to browse the Source Control over<br \/>\nthe intranet with a browser. So developers don&#8217;t need to install another<br \/>\napplication to browse the Source Control. There are couple of choices for<br \/>\nSubversion, I have downloaded <a href=\"websvn.tigris.org\">WebSvn<\/a>. WebSVN is<br \/>\na PHP application so I also need the <a href=\"http:\/\/www.php.net\/downloads.php\"><br \/>\nPHP<\/a> installed and configured to work with IIS. Download the 7.8meg zip<br \/>\npackage. You may need other things later if you want to run MySql like<br \/>\napplications. Extract the package to hard disk and add the directory where the<br \/>\nphp5isapi.dll resides to your PATH variable. You also need to register this dll<br \/>\nin Internet Information Services as an ISAPI filter. Right click on your Default<br \/>\nWeb Site go to properties and ISAPI Filters tab.<br \/>\n<span style=\"background-color:#FFFF00;\">Add php5isapi.dll by clicking<br \/>\nthe Add button. Give the name php for the Filter Name.<\/span><\/p>\n<p>I have extracted and copied WebSVN to the inetpub\\wwwroot directory and<br \/>\ncreated an application on IIS on WebSVN directory.<br \/>\n<span style=\"background-color:#FFFF00;\">Change the name of the file<br \/>\ndistconfig.inc to config.inc in WebSvn\\include directory.<\/span> I need to adjust couple of<br \/>\nthings in config.inc file. These are:<\/p>\n<p style=\"margin-top:0;margin-bottom:0;\"><font face=\"Fixedsys\"><br \/>\n<font color=\"#00FFFF\">\/\/ For syntax colouring, if option enabled&#8230;<\/font><\/font><\/p>\n<p style=\"margin-top:0;margin-bottom:0;\">\n<font face=\"Fixedsys\" color=\"#FF0000\">\/\/My Enscript installation is in<br \/>\nC:\\Enscript1639<\/font><\/p>\n<p style=\"margin-top:0;margin-bottom:0;\">\n<font face=\"Fixedsys\" color=\"#FF0000\">\/\/Also C:\\Enscript1639\\bin is in PATH<\/font><font face=\"Fixedsys\"><font color=\"#FF0000\"><br \/>\n<\/font>$config-&gt;setEnscriptPath(&quot;C:\\\\enscript1639\\\\bin&quot;);<br \/>\n<font color=\"#00FFFF\">\/\/ To configure the repositories by hand, copy the line<br \/>\nbelow, uncomment it and replace the name and path<br \/>\n<\/font>$config-&gt;addRepository(&quot;Repository&quot;, &quot;C:\\\\Repository&quot;);<\/font><\/p>\n<p style=\"margin-top:0;margin-bottom:0;\"><font face=\"Fixedsys\">.<\/font><\/p>\n<p style=\"margin-top:0;margin-bottom:0;\"><font face=\"Fixedsys\">.<\/font><\/p>\n<p style=\"margin-top:0;margin-bottom:0;\"><font face=\"Fixedsys\"><br \/>\n<font color=\"#00FFFF\">\/\/ &#8212; BUGTRAQ &#8212;<br \/>\n\/\/ Uncomment this line if you wish to use bugtraq: properties to show links to<br \/>\nyour BugTracker<br \/>\n\/\/ from the log messages.<br \/>\n<\/font>$config-&gt;useBugtraqProperties();<\/font><\/p>\n<p>When I was reading the file config.inc, I have seen an entry for colouring the<br \/>\ncode. I thought, maybe this thing will make it easier for my third requirement.<br \/>\nIt was requiring an Open Source application called<br \/>\n<a href=\"http:\/\/gnuwin32.sourceforge.net\/packages\/enscript.htm\">EnScript 1.6.3<\/a><br \/>\n(don&#8217;t forget to download dependencies). After a bit of<br \/>\nreading about it I have realised that EnScript is a scripting engine based on<br \/>\nstate definitions to produce colored html outputs. For each file extension you<br \/>\nneed to have a state file in a certain directory to make it colored. As usual<br \/>\nthere was no support for C# and VB.NET. I have found a state file on Sourceforge<br \/>\nfor C# but no luck for VB.NET. You can download this file from<br \/>\n<a href=\"http:\/\/www.analystdeveloper.com\/progs\/csharp.zip\">this link<\/a>. Also need to register the .cs<br \/>\nextension in WebSVN&#8217;s config.inc file.<\/p>\n<p style=\"margin-top:0;margin-bottom:0;\"><font face=\"Fixedsys\">&nbsp;<font color=\"#00FFFF\">\/\/<br \/>\n&#8212; COLOURISATION &#8212;<br \/>\n\/\/ Uncomment this line if you want to use Enscript to colourise your file<br \/>\nlistings<br \/>\n\/\/ You&#8217;ll need Enscript version 1.6 or higher AND Sed installed to use this<br \/>\nfeature. <br \/>\n\/\/ Set the path above.<br \/>\n<\/font>$config-&gt;useEnscript();<\/font><\/p>\n<p style=\"margin-top:0;margin-bottom:0;\">\n<font face=\"Fixedsys\" color=\"#00FFFF\">\/\/Register cs extension here<\/font><\/p>\n<p style=\"margin-top:0;margin-bottom:0;\"><font face=\"Fixedsys\"><br \/>\n$extEnscript[&quot;.cs&quot;] = &quot;csharp&quot;;<\/font><\/p>\n<p>There are also options for diff, gzip and sed (I don&#8217;t know what sed is). But<br \/>\nyou need to install <a href=\"http:\/\/www.cygwin.com\/\">CygWin<\/a> to get these. CygWin is a project to provide Unix<br \/>\nshell tools on Windows 32bit systems. I have fired up CygWin installation and<br \/>\nselected all the packages (that was a mistake). Installation took nearly a day<br \/>\nbecause of the selected modules and all downloaded first before installation.\n<\/p>\n<p>You need to provide paths for each application (diff, gzip and sed) in<br \/>\nWebSvn&#8217;s config.inc file. It is good because developers can download executables<br \/>\nas a zip file or look for differences between two versions of a file through the<br \/>\nbrowser. This is great, because I have even more functionality than my initial<br \/>\nrequirements and they are certainly very useful to have. Here are the lines in<br \/>\nconfig.inc that you need to uncomment. Also download TAR&nbsp; from<br \/>\n<a href=\"http:\/\/gnuwin32.sourceforge.net\/packages\/tar.htm\">here<\/a> to be able<br \/>\nto download an entire folder from WebSVN.<\/p>\n<p style=\"margin-top:0;margin-bottom:0;\"><font face=\"Fixedsys\"><br \/>\n<font color=\"#00FFFF\">\/\/ $config-&gt;setSVNCommandPath(&quot;Path\/to\/svn and svnlook\/<br \/>\ne.g. c:\\\\program files\\\\subversion\\\\bin&quot;);<br \/>\n<\/font>$config-&gt;setDiffPath(&quot;C:\\\\cygwin\\\\bin&quot;);<\/font><\/p>\n<p style=\"margin-top:0;margin-bottom:0;\"><font face=\"Fixedsys\">$config-&gt;setSedPath(&quot;C:\\\\cygwin\\\\bin&quot;);<br \/>\n<font color=\"#00FFFF\">\/\/ For delivered tarballs, if option enabled&#8230;<br \/>\n<\/font>$config-&gt;setTarPath(&quot;C:\\\\Program Files\\\\GnuWin32\\\\bin&quot;);<br \/>\n<font color=\"#00FFFF\">\/\/ For delivered GZIP&#8217;d files and tarballs, if option<br \/>\nenabled&#8230;<br \/>\n<\/font>$config-&gt;setGZipPath(&quot;C:\\\\cygwin\\\\bin&quot;);<\/font><\/p>\n<p style=\"margin-top:0;margin-bottom:0;\"><font face=\"Fixedsys\">.<\/font><\/p>\n<p style=\"margin-top:0;margin-bottom:0;\"><font face=\"Fixedsys\">.<\/font><\/p>\n<p style=\"margin-top:0;margin-bottom:0;\"><font face=\"Fixedsys\">.<\/font><\/p>\n<p style=\"margin-top:0;margin-bottom:0;\"><font face=\"Fixedsys\"><br \/>\n<font color=\"#00FFFF\">\/\/ &#8212; TARBALLS &#8212;<br \/>\n\/\/ You need tar and gzip installed on your system. Set the paths above if<br \/>\nnecessary<br \/>\n\/\/<br \/>\n\/\/ Uncomment the line below to offer a tarball download option across all your<br \/>\n\/\/ repositories.<\/font><br \/>\n$config-&gt;allowDownload();<\/font><\/p>\n<p>Another thing to do is to define the <span style=\"background-color:#FFFF00;\">port 3690 for Subversion on Windows XP&#8217;s<br \/>\nfirewall <\/span>so that you can access from other developer computers. I kept the scope<br \/>\nto subnet, so only internal network computers with this subnet can access to<br \/>\nSubversion service.<\/p>\n<p>To download binary files as zipped you need to add these:<\/p>\n<p><font face=\"Fixedsys\"><font color=\"#00FFFF\">\/\/ &#8212; FILE CONTENT &#8212;<br \/>\n\/\/<br \/>\n\/\/ You may wish certain file types to be GZIP&#8217;d and delivered to the user when<br \/>\nclicked upon.<br \/>\n\/\/ This is useful for binary files and the like that don&#8217;t display well in a<br \/>\nbrowser window!<br \/>\n\/\/ Copy, uncomment and modify this line for each extension to which this rule<br \/>\nshould apply.<br \/>\n\/\/ (Don&#8217;t forget the . before the extension. You don&#8217;t need an index between the<br \/>\n[]&#8217;s).<br \/>\n\/\/ If you&#8217;d rather that the files were delivered uncompressed with the<br \/>\nassociated MIME type,<br \/>\n\/\/ then read below.<br \/>\n\/\/<br \/>\n<\/font>$zipped[] = &quot;.dll&quot;;<br \/>\n$zipped[] = &quot;.exe&quot;;<br \/>\n$zipped[] = &quot;.class&quot;;<\/font><\/p>\n<p>After everything set up, I&#8217;ve logged in to my developer machine and installed<br \/>\n<a href=\"tortoisesvn.tigris.org\">TortoiseSVN 1.2.2<\/a> which works with Subversion 1.2.3 and it also claims that<br \/>\nthere is a fix for VS.NET web projects. I have uploaded a small .Net project to<br \/>\nSubversion and browse to http:\/\/xpserver\/WebSvn (xpserver is the machine that I<br \/>\nam setting up for Continues Integration) with Internet Explorer but I have got<br \/>\nan error message. <span style=\"background-color:#FFFF00;\">Apparently the IUSR_XPSERVER user didn&#8217;t have execute<br \/>\npermission on cmd.exe<\/span> which is used by WebSVN to run Subversion commands.<br \/>\nActually, giving this permission is a security risk but as long as this machine<br \/>\nis in intranet and not accessible from outside, I think it is safe. I set the<br \/>\nexecute permission and it worked like a charm. Now I can access to Subversion<br \/>\nwith Internet Explorer and when I click onto a .cs file it is displayed colored<br \/>\nlike in VS.NET editor. Also when I click onto executables like .dll or .exe, it<br \/>\ndownloads the file zipped. So my requirements 2, 3 and 9 are realised.<\/p>\n<p>I have also installed<br \/>\n<a href=\"http:\/\/btnet.sourceforge.net\/bugtrackernet.html\">BugTracker.NET<\/a> to coordinate issues and bugs in the<br \/>\nprojects. One thing that I want is to hook issues to Source Code Control so that<br \/>\nevery check-in and out process can be traced back to some issues, bugs or<br \/>\nenhancements. <span style=\"background-color:#FFFF00;\">When you right click on a folder which is a project checked-out<br \/>\nfrom Subversion with TortoiseSVN, you will see an extra tab called Subversion<br \/>\nproperties. <\/span>Here you can set<br \/>\n<span style=\"font-weight:700;background-color:#FFFF00;\">bugtraq<\/span> properties. These properties will provide<br \/>\nyou an extra field to enter issue number when you are using TortoiseSVN to<br \/>\ncheck-in the project. This issue number will be a link to your issue tracking<br \/>\nsoftware and this link is visible from WebSvn. Now, that&#8217;s what I call<br \/>\nintegration.<\/p>\n<p align=\"center\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" border=\"0\" src=\"https:\/\/i0.wp.com\/www.analystdeveloper.com\/progs\/websvn.jpg?resize=488%2C482\" width=\"488\" height=\"482\"><\/p>\n<p>The bugtraq properties that I&#8217;ve used are:<\/p>\n<p><u><b>bugtraq:label<\/b><\/u>: this is the label for the Issue\/bug number which will appear<br \/>\non TortoiseSVN&#8217;s check-in dialogue<\/p>\n<p><u><b>bugtraq.url<\/b><\/u>: This is the heart of this integration. The URL that you are<br \/>\nproviding is the address of your bug\/issue tracking software with a parameter at<br \/>\nthe end which will be replaced by issue number. So my setting is<br \/>\n<a href=\"http:\/\/xpserver\/btnet\/edit_bug.aspx?id=%BUGID%\"><br \/>\nhttp:\/\/xpserver\/btnet\/edit_bug.aspx?id=%BUGID%<\/a>. The parameter %BUGID% will<br \/>\nbe replaced with issue number.<\/p>\n<p><u><b>bugtraq.message<\/b><\/u>: This will appear in WebSVN with the number linked to your<br \/>\nissue tracking software<\/p>\n<p><u><b>bugtraq:number<\/b><\/u>: Your issue tracking software may keep the issue sequence with<br \/>\na combination of chars and numbers like IS1, IS2. If you give &quot;true&quot; for this<br \/>\nvariable, only numbers can be entered when you are check-in the code.<\/p>\n<p><u><b>bugtraq:warnifnoissue<\/b><\/u>: If &quot;true&quot; and the developer did not enter an issue<br \/>\nnumber during the check-in, they will kindly be informed to enter.<\/p>\n<p align=\"center\">\n<img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" border=\"0\" src=\"https:\/\/i0.wp.com\/www.analystdeveloper.com\/progs\/bugtraqProp.jpg?resize=397%2C545\" width=\"397\" height=\"545\"><\/p>\n<p>Now the real continues integration part comes. For this purpose, I am using<br \/>\n<a href=\"ccnet.thoughtworks.com\">Cruise Control.NET<\/a> and<br \/>\n<a href=\"nant.sourceforge.net\">NAnt<\/a> (with<br \/>\n<a href=\"nantcontrib.sourceforge.net\">NAnt Contribute<\/a>). When there is a change on<br \/>\nregistered projects the code should be checked-out and compiled. This will make<br \/>\nsure that the test environment will always have the latest executables. After<br \/>\ncompilation of the code, testers should get an e-mail or some sort of<br \/>\nnotification about the changes and start testing for that particular change.<\/p>\n<p>CruiseControl.NET comes with an easy to follow installation package. It also<br \/>\ninstalls the service and creates Virtual Directory on IIS. Once you install,<br \/>\neverything is ready to use. I have also unzipped NAnt to a<br \/>\nfolder and <span style=\"background-color:#FFFF00;\">added NAnt\\bin directory to PATH variable<\/span>.<br \/>\n<span style=\"background-color:#FFFF00;\">Unzip NAntContrib and copy bin directory<br \/>\nto NAnt\\bin<\/span>. Download<br \/>\n<a href=\"http:\/\/www.analystdeveloper.com\/progs\/CCDeneme.zip\">this little<br \/>\nproject<\/a> and unzip it to test NAnt installation. Open a dos prompt and get<br \/>\ninto the project folder and enter:<\/p>\n<p><font face=\"Fixedsys\">C:\\&gt;&lt;projectfolder&gt;\\nant<\/font><\/p>\n<p>You should get a BUILD SUCCEEDED message on the DOS prompt. If everything is<br \/>\nworking we can change the ccnet.config to register the projects for continues<br \/>\nintegration. <span style=\"background-color:#FFFF00;\">Go to C:\\Program Files\\CruiseControl.NET\\server<br \/>\ndirectory and edit <b>ccnet.config<\/b> file. <\/span>Or you can download my copy<br \/>\n<a href=\"http:\/\/www.analystdeveloper.com\/progs\/ccnet.zip\">here<\/a>. Please read<br \/>\nthe file and do the necessary changes before you run the Cruise Control service.<\/p>\n<p><span style=\"background-color:#FFFF00;\">The port 21234 needs to be added to Windows XPs firewall to<br \/>\nallow access from intranet for the Cruise Control.NET service<\/span>. This<br \/>\nservice will be checked with either CCNet Tray application or<br \/>\n<a href=\"https:\/\/addons.mozilla.org\/extensions\/moreinfo.php?id=896\">FireFox CCNet plugin<\/a> from the<br \/>\ndevelopers computer.<\/p>\n<p>If you browse to your continues integration computer with IE<br \/>\n<a href=\"http:\/\/xpserver\/ccnet\">http:\/\/xpserver\/ccnet<\/a> you will see something<br \/>\nlike the below screen shot<\/p>\n<p align=\"center\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" border=\"0\" src=\"https:\/\/i0.wp.com\/www.analystdeveloper.com\/progs\/ccnet.jpg?resize=530%2C336\" width=\"530\" height=\"336\"><\/p>\n<p align=\"left\">For the NAnt integration, pleas check<br \/>\n<a href=\"http:\/\/www.analystdeveloper.com\/blogs\/gurkaneng\/archive\/2005\/03\/10\/179.aspx\"><br \/>\nmy other blog entry<\/a>. I think all my 12 requirements are realised. I am happy<br \/>\nand humble. What is next?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last weekend, I sat down and decided to install one of my crappy computer as a Source Control and Continues Integration machine. What I need is Subversion source control and other bits and pieces to have a fully functional Source Control System. I put down my requirements first so that I can measure the quality [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[207,213],"tags":[],"class_list":["post-1911","post","type-post","status-publish","format-standard","hentry","category-bilisim","category-english"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p90nFK-uP","jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.havatopraksu.org\/blog\/wp-json\/wp\/v2\/posts\/1911","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.havatopraksu.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.havatopraksu.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.havatopraksu.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.havatopraksu.org\/blog\/wp-json\/wp\/v2\/comments?post=1911"}],"version-history":[{"count":1,"href":"https:\/\/www.havatopraksu.org\/blog\/wp-json\/wp\/v2\/posts\/1911\/revisions"}],"predecessor-version":[{"id":3524,"href":"https:\/\/www.havatopraksu.org\/blog\/wp-json\/wp\/v2\/posts\/1911\/revisions\/3524"}],"wp:attachment":[{"href":"https:\/\/www.havatopraksu.org\/blog\/wp-json\/wp\/v2\/media?parent=1911"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.havatopraksu.org\/blog\/wp-json\/wp\/v2\/categories?post=1911"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.havatopraksu.org\/blog\/wp-json\/wp\/v2\/tags?post=1911"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}