Fwd: [ANN] Nursery Framework 1.0.1 (build with Xcode 9) released
Fwd: [ANN] Nursery Framework 1.0.1 (build with Xcode 9) released
- Subject: Fwd: [ANN] Nursery Framework 1.0.1 (build with Xcode 9) released
- From: Akifumi Takata <email@hidden>
- Date: Wed, 25 Oct 2017 06:37:52 +0900
Dear all,
I'm sorry, I noticed that I did not designate Cocoa-dev as my destination.
I will forward the mail I sent in the past to Cocoa-dev.
Regards,
Takata
> 転送されたメッセージ:
>
> 差出人: 高田 明史 <email@hidden>
> 件名: Re: [ANN] Nursery Framework 1.0.1 (build with Xcode 9) released
> 日付: 2017年10月24日 12:12:13 JST
> 宛先: Jens Alfke <email@hidden>
>
> Dear Jens Alfke,
>
> I am going to understand the importance of documents and comments.
> Nevertheless, it is one of the reasons that I am Japanese and English skills
> are very weak about the absence of documents and comments.
> Another reason is that I prioritized implementing the framework rather than
> creating a document.
>
> Regarding open source licenses, I do not know much, but I would like to use
> licenses that users can use for both commercial and non-commercial purposes
> and do not need to return changes made by users to the source code .
>
> Are there any recommended licenses?
>
> I will consider using Github or Bitbucket.
> However, I think that it will take some time as I have no experience using
> them.
>
> The reason I did not use the existing engine is because I did not want to
> rely on frameworks and libraries other than the Cocoa framework as much as
> possible.
>
> Regarding the durability, I am carrying out write ahead logging (WAL -
> although, unless my understanding is wrong.) In order to avoid corruption of
> data already recorded on the database. At least existing data will not be
> lost if power is lost or crashed while writing.
>
> Reading the object into memory, the root object is first loaded when the root
> method of the instance of NUPlayLot's subclass is called.
>
> The timing at which each object reads its instance variables depends on how
> you implemented the NUCoding protocol.
> Initializer of NUCoding protocol By implementing to load instance variable
> inside initWithAliaser: method, instance variable is read at object
> initialization.
> If you use the NUGetIver () function to load an instance variable in the
> accessor method of the object implementing the NUCoding protocol, it will be
> read when the accessor method is first called.
>
> Supplementally, the subclass of NUCoder is a class for persisting instances
> of classes that do not implement the NUCoding protocol such as existing
> NSString and NSArray.
> An instance of a class persisted in an instance of a subclass of NUCoder
> normally reads its instance variables all at once when initializing the
> object.
>
> But even then, the instance variable of the object stored in the instance of
> NSArray will be loaded, depending on how the object implemented persistence.
>
> The timing when the loaded object is freed from memory is when the object can
> not be traced from the root object of the instance of the subclass of
> NUPlayLot and the reference count reaches zero.
>
> In order to persist the loaded object again, you need to call that object
> changed as an argument to the instance of NUPlayLot's subclass with the
> object changed to the markChangedObject: method.
> Also, since the object implementing the NUCoding protocol refers to an
> instance of NUBell, you can use a convenience method like [[self bell]
> markChanged] inside its accessor method etc.
>
> Multiple processes can simultaneously use instances of the same NUNursery
> subclass.
> Within the framework distributed objects are used for communication between
> processes.
>
> Regards,
> p,t,a
>
> The following is Japanese version.
>
> ドキュメントとコメントの重要性は理解しているつもりです。
> それにもかかわらず、ドキュメントやコメントが無い事については、私が日本人であり英語の技能がとても弱いことが理由の一つです。
> もう一つの理由は、私がドキュメントを作成することよりも、フレームワークを実装することを優先したためです。
>
> オープンソースライセンスについては、私は詳しく無いのですが、ユーザーが商用と非商用のどちらの目的でも利用でき、ソースコードに対してユーザーが行なった変更を還元しなくてもいいライセンスを使用したいです。
>
> 何かお勧めのライセンスはありますか。
>
> 私は、Github または Bitbucketを使用することを検討しようと思います。
> ですが、私はそれらを使用した経験がないので多少時間がかかると思います。
>
> 私が既存のエンジンを使用しなかった理由は、Cocoaフレームワーク以外のフレームワークやライブラリに出来る限り依存したくなかったからです。
>
> 耐久性に関しては、私はデータベース上にすでに記録されたデータの破損を避ける目的で、ログ先行書き込み(WAL -
> ただし、私の理解が間違っていなければですが。)を行なっています。少なくとも既存データは、書き込み中に電源が失われたりクラッシュしても失われません。
>
> オブジェクトのメモリへの読み込みは、NUPlayLotのサブクラスのインスタンスのrootメソッドが呼び出された時に、まず、ルートオブジェクトが読み込まれます。
>
> 個々のオブジェクトが、そのインスタンス変数を読み込むタイミングは、NUCodingプロトコルをどのように実装したかによって変わります。
> NUCodingプロトコルのイニシャライザ
> initWithAliaser:メソッドの内部で、インスタンス変数を読み込むように実装すれば、オブジェクトの初期化時にインスタンス変数が読み込まれます。
> NUCodingプロトコルを実装したオブジェクトのアクセッサメソッドでNUGetIver()関数を使用してインスタン変数を読み込むようにすれば、最初にそのアクセッサメソッドが呼び出された時に読み込まれます。
>
> さらに補足すると、NUCoderのサブクラスは既存のNSStringやNSArray等のNUCodingプロトコルを実装していないクラスのインスタンスを永続化するためのクラスです。
> NUCoderのサブクラスのインスタンスで永続化したクラスのインスタンスは、通常、オブジェクトの初期化時にそのインスタンス変数を一度に全て読み込みます。
>
> しかし、その場合でも、例えばNSArrayのインスタンスに格納されたオブジェクトのインスタンス変数が読み込まれるタイミングは、そのオブジェクトがどのように永続化を実装したかによって変わります。
>
> 読み込まれたオブジェクトがメモリから解放されるタイミングは、そのオブジェクトがNUPlayLotのサブクラスのインスタンスのルートオブジェクトから辿ることができなくなり、なおかつ参照カウントが0になった時です。
>
> 読み込んだオブジェクトを再び永続化するには、そのオブジェクトが変更されたことをNUPlayLotのサブクラスのインスタンスにmarkChangedObject:メソッドに変更されたオブジェクトを引数にして呼び出す必要があります。
> また、NUCodingプロトコルを実装するオブジェクトはNUBellのインスタンスを参照しているので、そのアクセッサメソッドの内部等で、[[self
> bell] markChanged]のようにコンビニエントメソッドを使用できます。
>
> 一つのNUNurseryのクラスのインスタンスに対して、複数のNUPlayLotのサブクラスのインスタンスを作成できます。
> それぞれのPlayLotは、そのルートが読み込まれた時点のNurseryの情報(Grade:整数で表されます)を持っています。
>
> そのため、PlayLot A, PlayLot Bの二つがあったとして、PlayLot
> Bで保存処理が成功すると、NurseryのGradeが読み込み時点より一つ増え、PlayLot BのGradeもNurseryのGradeと同じになります。
>
> しかし、PlayLot AのGradeは読み込み時点のままなので、PlayLot
> Aは自身が存在する限り、最初の時点のNurseryの状態を読み込むことができます。
>
> 複数のプロセスで同時に同じNUNurseryのサブクラスのインスタンスを使用できます。
> フレームワーク内部ではプロセス間の通信に分散オブジェクトが使用されています。
>
>> 2017/10/24 5:46、Jens Alfke <email@hidden>のメール:
>>
>> Some notes on the packaging:
>>
>> * I couldn’t find any documentation, or any doc-comments describing classes
>> or methods. That’s going to make it very hard for anyone to learn how to use
>> the library.
>> * The implementation is also completely uncommented as far as I could tell.
>> That makes it much harder for anyone else to diagnose problems, or to extend
>> the library or fix bugs.
>> * There’s no open source license given. You really should pick one and add
>> it to the source code and as a separate LICENSE file.
>> * Consider hosting this on Github or Bitbucket. It will improve visibility,
>> make it easier to upload changes, provide an issue tracker, and make it
>> possible for people to send you patches.
>>
>> It looks like you’ve implemented a custom b-tree file manager. I know from
>> experience that this is quite difficult (I’ve worked on Couchbase’s storage
>> engine.) What led you to do this instead of using an existing engine like
>> Kyoto Cabinet, LevelDB, LMDB, etc? I would worry about durability,
>> especially. How does your engine recover from file corruption caused by a
>> crash or power failure during a write?
>>
>> Since there are no docs I don’t know how the engine stores objects, or what
>> its performance is like. When are objects loaded into memory or evicted from
>> memory? When are in-memory changes persisted? Are there transactions? Can
>> multiple processes use a database simultaneously?
>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden