Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
History is littered with hundreds of conflicts over the future of a community, group, location or business that were "resolved" when one of the parties stepped ahead and destroyed what was there. With the original point of contention destroyed, the debates would fall to the wayside. Archive Team believes that by duplicated condemned data, the conversation and debate can continue, as well as the richness and insight gained by keeping the materials. Our projects have ranged in size from a single volunteer downloading the data to a small-but-critical site, to over 100 volunteers stepping forward to acquire terabytes of user-created data to save for future generations.
The main site for Archive Team is at archiveteam.org and contains up to the date information on various projects, manifestos, plans and walkthroughs.
This collection contains the output of many Archive Team projects, both ongoing and completed. Thanks to the generous providing of disk space by the Internet Archive, multi-terabyte datasets can be made available, as well as in use by the Wayback Machine, providing a path back to lost websites and work.
Our collection has grown to the point of having sub-collections for the type of data we acquire. If you are seeking to browse the contents of these collections, the Wayback Machine is the best first stop. Otherwise, you are free to dig into the stacks to see what you may find.
The Archive Team Panic Downloads are full pulldowns of currently extant websites, meant to serve as emergency backups for needed sites that are in danger of closing, or which will be missed dearly if suddenly lost due to hard drive crashes or server failures.

public class InputObservable : MonoBehaviour
{
public ISubject<Vector2> axis_ = new Subject<Vector2>();
public void Update()
{
var next = new Vector2(
Input.GetAxis("Horizontal"),
Input.GetAxis("Vertical")
).normalized;
Debug.Log(next);
axis_.OnNext(next);
}
}
//axis_ = axis_.SubscribeOnMainThread().ObserveOnMainThread();
//var interval = Observable.IntervalFrame(1);
////var interval = Observable.EveryUpdate();
////var interval = Observable.EveryFixedUpdate();
////var interval = Observable.ThrottleFrame(1);
Hi all, is this the correct behaviour for SelectMany?
var A = new ReactiveProperty<int>(10);
var B = new ReactiveProperty<int>(20);
var V = new ReactiveProperty<ReactiveProperty<int>>(A);
var Vsm = V.SelectMany(_ => _).ToReadOnlyReactiveProperty();
Assert.AreEqual(10, Vsm.Value, "Flattened value initialized to A's value == 10");
A.Value = 11;
Assert.AreEqual(11, Vsm.Value, "Value change in initial value should be reflected in flattened value");
V.Value = B;
Assert.AreEqual(20, Vsm.Value, "New flattened value should be reflected");
B.Value = 21;
Assert.AreEqual(21, Vsm.Value, "So far so good");
A.Value = 1024;
Assert.AreNotEqual(1024, Vsm.Value, "We should no longer be listening to A");This isn't better...
var A = new Subject<int>();
var B = new Subject<int>();
var V = new Subject<IObservable<int>>();
var Vsm = V.SelectMany(_ => _);
var VsmLatest = 0;
Vsm.Subscribe(v => VsmLatest = v);
Assert.AreEqual(0, VsmLatest);
V.OnNext(A);
Assert.AreEqual(0, VsmLatest);
A.OnNext(10);
Assert.AreEqual(10, VsmLatest);
A.OnNext(11);
Assert.AreEqual(11, VsmLatest);
B.OnNext(20);
V.OnNext(B);
Assert.AreEqual(11, VsmLatest);
B.OnNext(21);
Assert.AreEqual(21, VsmLatest);
A.OnNext(1024);
Assert.AreNotEqual(1024, VsmLatest, "We should no longer be listening to A");
await UniTaskAsyncEnumerable.EveryUpdate().ForEachAsync UniTask notation for Update loopprivate void Update()
{
ReadInput();
}
private void FixedUpdate()
{
CharacterUpdate();
}
I tried doing like this
private async UniTaskVoid Start()
{
var cancellationToken = this.GetCancellationTokenOnDestroy();
await UniTaskAsyncEnumerable.EveryUpdate().ForEachAsync(_ =>
{
ReadInput();
}, cancellationToken);
await UniTaskAsyncEnumerable.EveryUpdate(PlayerLoopTiming.FixedUpdate).ForEachAsync(_ =>
{
CharacterUpdate();
}, cancellationToken);
}But then, the second await UniTaskAsyncEnumerable.EveryUpdate(PlayerLoopTiming.FixedUpdate) never gets called
In this case, ReadInput() and CharacterUpdate() are declared as void methods
await UniTask.WhenAll() it's just what I was looking for (to do concurrent task processing)private async UniTaskVoid Start()
{
var cancellationToken = this.GetCancellationTokenOnDestroy();
var updateTask = UniTaskAsyncEnumerable.EveryUpdate().ForEachAsync(_ =>
{
ReadInput();
}, cancellationToken);
var fixedUpdateTask = UniTaskAsyncEnumerable.EveryUpdate(PlayerLoopTiming.FixedUpdate).ForEachAsync(_ =>
{
CharacterUpdate();
}, cancellationToken);
await UniTask.WhenAll(updateTask, fixedUpdateTask);
}
private IObservable<T> Request<T>(string route, string method, object body, HttpOptions options) {
return Observable.Create<T>(observer => { // async missing
// Set default values
var request = new UnityWebRequest(route, method);
foreach (var header in options.Headers) {
request.SetRequestHeader(header.Key, header.Value);
}
foreach (var interceptor in interceptors) {
await interceptor.InterceptAsync(request);
}
var response = await request.SendWebRequest().AsObservable();
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
Hi guys,
new to unirx, sorry if this has been asked- Is there some preferred way to fire off an event or method at under specific conditions? For example
// hp = reactiveproperty<float>
if (hp <= 0) execute()I'm currently messing around with ReactiveProperties and the MessageBroker to try and achieve this but am not sure if this is the correct aproach
hp.Select(x => x <= 0).Subscribe(x => {
if (x) {
Debug.Log("Fire!");
MessageBroker.Default.Publish(new Empty());
hp.Dispose();
}
}).AddTo(this);Does this seem like an okay way to achieve this functionality?
Hi guys!
var a = new ReactiveProperty<bool>();
_button.OnClickAsObservable().Subscribe(_ => a.Value = !a.Value);
a.SelectMany(v => v ? Observable.EveryUpdate().Select(_ => true) : Observable.Return(false)).Subscribe(v => Debug.Log(v));I only want Debug.Log work if a.Value==true and when a.Value==false nothing should happen
But with this code if I switch a.Value = false - Console once print false and then continuously true ( obviously from EveryUpdate )