В новинку для Базовых Данных для iPhone

Один способ генерировать пароли, которые 'походят' на слова, состоял бы в том, чтобы использовать цепь Маркова. Цепь Маркова n-градуса является в основном большим набором n-кортежей, которые появляются в Вашем входном корпусе, наряду с их частотой. Например, "муравьед", с цепью Маркова 2-го градуса, генерировал бы кортежи (a, a, 1), (a, r, 2), (r, d, 1), (d, v, 1), (v, a, 1), (r, k, 1). Дополнительно, можно также включать 'виртуальное' начинать-слово и словоупотребления конца.

для создания полезной цепи Маркова в целях, Вы питались бы в большом корпусе английских данных языка - существуют многие доступные, включая, например, Проект Гутенберг - для генерации ряда записей, как обрисовано в общих чертах выше. Для генерации слов естественного языка или предложений, которые по крайней мере главным образом следуют правилам грамматики или составу, 3-я цепь Маркова градуса обычно достаточна.

Затем для генерации пароля Вы выбираете случайный 'стартовый' кортеж от набора, взвешенного его частотой, и производите первую букву. Затем неоднократно выбирайте наугад (снова взвешенный частотой) 'следующий' кортеж - то есть, тот, который запускается с тех же букв, которыми заканчивается Ваш текущий, и имеет, только один обозначает буквами отличающийся. Используя пример выше, предположите, что я запускаю в (a, a, 1), и произвожу 'a'. Мой единственный следующий выбор (a, r, 2), таким образом, я произвел другой 'a'. Теперь, я могу выбрать любого (r, d, 1) или (r, k, 1), таким образом, я выбираю тот наугад на основе их частоты возникновения. Предположим, что я выбираю (r, k, 1) - я произвел 'r'. Этот процесс продолжается, пока Вы не достигаете маркера конца слова или решаете остановиться независимо (так как большинство цепей Маркова формирует циклический график, Вы никогда не можете потенциально заканчивать генерировать, если Вы не применяете искусственное ограничение длины).

В уровне слова (например, каждый элемент кортежа является словом), эта техника используется некоторыми 'ботами разговора' для генерации разумно кажущихся предложений ерунды. Это также используется спаммерами, чтобы попытаться уклониться от спам-фильтров. На уровне буквы, как обрисовано в общих чертах выше, это может использоваться для генерации слов ерунды, в этом случае для паролей.

Один недостаток: Если Ваш входной корпус ничего не содержит кроме букв, ни будут Ваши выходные фразы, таким образом, они не передадут самые 'безопасные' требования пароля. Можно хотеть применить некоторую последующую обработку для заменения некоторыми символами числа или символы.

9
задан Peter Hosey 1 November 2009 в 10:32
поделиться

5 ответов

There exist Xcode templates for Core Data-based applications; these are a great start to getting Core Data off the ground. However, it sounds like you want to integrate Core Data into your existing app, so you'll need to...

  • Add three main Core Data objects: the managed object context (MOC), the managed object model (MOM), and the persistent store coordinator (PSC). These need to be accessible wherever you want Core Data available, so either in your app delegate or, more preferably, in the controller or data source for your table view.
  • Create a MOM in Xcode. This will be a file of type .xcdatamodel, and it's an object graph that defines all the Core Data entities you want in your app.
  • Use NSFetchedResultsController (as suggested by Louis Gerbarg) to get data out of Core Data and display it into your table view.
  • Add code in your existing RSS-fetching-and-parsing routines to store new Core Data objects back into the store, when appropriate.

A good way to start is just to create a new Core Data application and play around with it a bit; you can also look at Apple's fantastic resources on the subject, like the Core Data Programming Guide and the sample apps Recipes and Locations. (Developer registration may be required.)

One last thing to note is that for the most part, a lot of the Core Data code you need to add can be ripped straight out of one of the Xcode template apps and pasted into your program (this holds especially true for the accessors for the three Core Data objects you need). Be careful not to use code you don't understand, though.

8
ответ дан 4 December 2019 в 15:22
поделиться

Если вы используете CoreData для заполнения UITableView, вы действительно хотите использовать NSFetchedResultsController , а не пытаться самостоятельно заполнить и синхронизировать массив. Документация для NSFetchedResultsController включает ссылки на несколько руководств по CoreData, включая те, которые заполняют представления таблиц.

3
ответ дан 4 December 2019 в 15:22
поделиться

Also, any better method of doing what I'm trying to accomplish would also be appreciate

yes, it sounds like Core Data might be overkill for your application. Assuming your feed items are stored in a collection object you can easily use OSX's built in serializaition.

1
ответ дан 4 December 2019 в 15:22
поделиться

NSFetchedResultsController по-прежнему немного глючит и требует нестабильных обходных решений. Я бы начал с более простого учебника «Местоположение» основных данных iPhone, прежде чем перейти к учебнику «Книги».

1
ответ дан 4 December 2019 в 15:22
поделиться

Было отмечено в других сообщениях Stack-Overflow, но я настоятельно рекомендую книгу Prag Prog «Основные данные: API Apple для сохранения данных в Mac OS X» - большинство из них также имеет отношение к iPhone Core Приложения для передачи данных; есть целая глава о создании приложения для iPhone.

http://pragprog.com/titles/mzcd/core-data

0
ответ дан 4 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: