24. C-sharp 20 28-01-2014

Created Tuesday 28 January 2014

  1. Начинаем 4 курса по 36 часов.
    1. 10265 — Data access — 36 часов
      1. Работа с базами данных
    2. 20480 — HTML, JS — 36 часов
    3. 20486 — ASP.NET MVC — 36 часов
    4. 20487 — Web services — 36 часов
  2. 3 последних темы этого этапа
    1. Использование структуры данных для удобного хранения и манипуляцией CSV
    2. Сериализация/десериализация
    3. Окончательная формулировка проекта (две недели с сегодняшнего дня)
  3. Delimited files
    1. CSV
      1. 10, "abc", 15.00
    2. Специальные технологии Майкрософт для работы с базами данных, многие из которых могут использоваться для доступа к delimited файлам
      1. Data set
        1. Namespace: System.Data
        2. Существует класс DataSet, который можно рассматривать как некоторый контейнер для группы CSV-подобных файлов
          1. Имеет коллекцию объектов типа DataTable
            1. DataTable можно использовать без DataSet, но не наоборот
          2. DataTable — это объектная модель, предназначенная для хранения табличных данных
          3. Таблица похожа на коллекцию структур (строк, склаывающихся из полей)
          4. Каждый DataTable имеет коллекцию объектов DataRow
          5. Именно DataRow хранит данные
          6. У каждого DataTable есть коллекция DataColumn для определения типа данных столбца (схемы)
          7. Схема - сколько столбцов, какие у них имена и какие типы данных
          8. Row == record, column == field
          9. Эти классы относятся к системе классов ADO.NET, созданной для организации работы с базами данных
          10. DataRelation — связь между таблицами DataTable (возможность автоматического обхода нескольких таблиц)
          11. DataSet хранит свои данные в виде XML (можно и наоборот, если XML подходит под табличную структуру)
        3. DataSet ds = new DataSet();
        4. DataTable dt = new DataTable("Products");
        5. DataColumn dc = new DataColumn("id", System.Type.GetType("System.Int32"));
        6. dt.Columns.Add(dc);
        7. DataColumn dc = new DataColumn("ProductName", System.Type.GetType("System.String"));
        8. dt.Columns.Add(dc);
        9. dt.Columns.Add(new DataColumn("Price", System.Type.GetType("System.Double")));
        10. dt.Columns.Add(new DataColumn("CategId", System.Type.GetType("System.Int32")));
        11. ds.Tables.Add(dt);
        12. В принципе можно заполнять DataTable произвольными объектами, их тип будет определяться автоматически (но лучше не нужно :)
        13. DataTable dt1 = new DataTable("Categs");
        14. dt1.Columns.AddRange(new DataColumn[] {
new DataColumn("id", System.Type.GetType("System.Int32")),
new DataColumn("Title", System.Type.GetType("System.String"))});
  1. ds.Tables.Add(dt1);
  2. // data
  3. ds.Tables["Categs"].NewRow().ItemArray = new object[] {1, "comp"}; — didn't work
  4. string delimrow = "3, meat";
  5. object[] row = delimrow.Split(',');
  6. ds.Tables["Categs"].Rows.Add(2, "footware");
  7. ds.Tables["Categs"].Rows.Add(1, "comp");
  8. ds.Tables["Categs"].Rows.Add(row);
  9. // search
  10. foreach (DataRow dr in ds.Tables["Categs"].Rows)
  11. {
    1. if ((int)dr["id"] > 1)
    2. {
      1. ...
    3. }
  12. }
  13. // OR
  14. DataRow[] result = ds.Tables["Categs"].Select("id > 1 and id < 3"); // and, or, ()
  15. // relation (part of DataSet)
  16. DataColumn dc_parent = ds.Tables["Cagegs"].Columns["id"];
  17. DataColumn dc_child = ds.Tables["Products"].Columns["CategId"];
  18. DataRelation rel = new DataRelation("lnk_cat_prod", dc_parent, dc_child);
  19. // GetChildRows — look into it...

Project:
Информация о рабочих местах хранится в текстовых файлах сайта cji.co.il (Bi-Weekly). При запуске программы пользователь выбирает одну из 3-х опций:
1) Загрузить информацию в XML-документ (читать из всех файлов в один XML-документ)
2) Загрузить всё в свою объектную модель (придумать)
3) DataSet, DataTable
После этого (вся информация ) пользователь видит меню, при помощи которого он может искать работу:
1) Пользователь просит "Company List (Display)" — выдать список всех компаний, которые содержатся в модели
2) Пользователь может запросить "Positions By Company"

Искать в структуре все позиции, относящиеся к компании и сохранять их на диск в виде одного HTML-файла следующей структуры:
Company Name
------------
Position 1:
Position 2:
Position 3:
Company Name
------------
Position 1:
Position 2:
Position 3:
Ничего не пропустить, идентифицировать компанию по её параметрам. Лучше относиться к каждому Intel как к отдельной компании

3) Список позиций, у которых в описании или в требованях (description, requirements) встречается тот текст, который ввёл пользователей (например, ".NET").
Сохранить на диск в виде файла HTML следующего вида:

Position:
-some description-
Company
----------------
Position:
-some description-
Company

Сериализация
Модуль 6 из 5420406
Читать уроки 2 и 3

Процесс преобразования объектов в памяти в некоторый формат данных (например, XML).
Десериализация - обратный процесс.
Для того, чтобы иметь возможность:
1) Метод serialize
2) deserialize
Разбираться дома (хотя бы SOAP formatter — потому что XML формат)



Backlinks: