<commit_before># RestartLessOften

When programming an iOS or OS X application in Objective-C almost every minor parameter or code change requires a recompilation of the changed sources followed by an application restart to see the change.

This project offers some tools to reduce the number of restarts when adjusting numbers, strings, colors, images, OpenGL shaders, xib files and so forth even code changes can be done with limitations.

To enable your code to use RestartLessOften you have to include some source files into your Xcode project and create a configuration file for your app which you can modify at runtime to feed parameter changes into your app.

## QuickStart

First start `rlo_server.py` in a Terminal window. RestartLessOften comes with two preconfigured examples, one for iOS another for OS X that should just build and run.
When you make changes in `rloconfig.py` and save the file, the app should react to the changed parameter, try this with `backgroundcolor` in `GLExample/rloconfig.py`.
In GLExample at the end of `ViewController.m` you see `self.paused = NO;`. Change this into a YES and just build the app without restarting. The animation should stop immediately because a new version of `ViewController.m` was patched into the running code.

If you get this running you can try to run GLExample on an iOS device which should also work but this is usually more likely to fail. Change `self.paused` several times between YES and NO and build and see if it works for you.

DrawExample is a simple Cocoa app with a `-drawRect:` method in `DrawView.m` that you can modify as well at runtime. Try commenting out some drawing code and just build.

`InstallingRLO.md` explaines all steps necessary to add RestartLessOften into an existing app. There are quite some steps and if you follow everything correctly the code updates still might not work.
`RefactoringForRLO.md` explains how to restructure your code to make better use of RLO.

## The Client-Server Architecture
<commit_msg>Added screenshot of XcAddedMarkup support for RLO<commit_after># RestartLessOften

When programming an iOS or OS X application in Objective-C almost every minor parameter or code change requires a recompilation of the changed sources followed by an application restart to see the change.

This project offers some tools to reduce the number of restarts when adjusting numbers, strings, colors, images, OpenGL shaders, xib files and so forth even code changes can be done with limitations.

To enable your code to use RestartLessOften you have to include some source files into your Xcode project and create a configuration file for your app which you can modify at runtime to feed parameter changes into your app.

If the optional Xcode plugin [XcAddedMarkup](https://github.com/mikr/XcAddedMarkup) is installed you can even change parameters via a popup in your Xcode source editor.

<p align="center" >
  <img src="https://raw.github.com/mikr/XcAddedMarkup/master/images/rloslider.png" alt="RestartLessOften with XcAddedMarkup" title="RestartLessOften with XcAddedMarkup">
</p>

## QuickStart

First start `rlo_server.py` in a Terminal window. RestartLessOften comes with two preconfigured examples, one for iOS another for OS X that should just build and run.
When you make changes in `rloconfig.py` and save the file, the app should react to the changed parameter, try this with `backgroundcolor` in `GLExample/rloconfig.py`.
In GLExample at the end of `ViewController.m` you see `self.paused = NO;`. Change this into a YES and just build the app without restarting. The animation should stop immediately because a new version of `ViewController.m` was patched into the running code.

If you get this running you can try to run GLExample on an iOS device which should also work but this is usually more likely to fail. Change `self.paused` several times between YES and NO and build and see if it works for you.

DrawExample is a simple Cocoa app with a `-drawRect:` method in `DrawView.m` that you can modify as well at runtime. Try commenting out some drawing code and just build.

`InstallingRLO.md` explaines all steps necessary to add RestartLessOften into an existing app. There are quite some steps and if you follow everything correctly the code updates still might not work.
`RefactoringForRLO.md` explains how to restructure your code to make better use of RLO.

## The Client-Server Architecture

{'fraction_non_alphanumeric': 0.04230769230769231, 'fraction_numerical': 0.0, 'mean_word_length': 4.68983268983269, 'pattern_counts': {'":': 0, '<': 6, '<?xml version=': 0, '>': 6, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6552986', 'n_tokens_mistral': 1124, 'n_tokens_neox': 1093, 'n_words': 670}