Skip to content

Latest commit

 

History

History
198 lines (135 loc) · 8.46 KB

TODO.org

File metadata and controls

198 lines (135 loc) · 8.46 KB
  • raft убрать отсюда, перенести в другой репозиторий

курсовой проект

  • общее описание архитектуры, модулей, процессов текстом и картинками
  • strategy proj
    • player gen_server
    • start player under sup from st_tcp_api
    • player sessions storage
    • keep {socker, player_srv} in storage почему st_player_storage:add_player нужно вызывать в st_player_srv:init? почему call а не cast?
    • storage мониторит player_srv и удаляет из storage при завершении процесса
      • Проблема хранения ресурсов с ограниченым временем жизни (pid, socket)
      • gproc
    • API Protocol template
    • start/stop player_srv from game_protocol
    • player_srv is owner of socket
    • API
      • ping
      • auth: player_srv:auth, protocol:handle_auth
      • get players list
    • close player session
  • battle
    • начало уже есть, ff_game, нужно перенести в проекту
    • убрать zippers, заменить на map
    • реализовать взаимодействие с клиентом по текстовому протоколу через telnet
  • match maker

=======

  • bit syntax – отдельная тема, и упражнения по ней
  • pipeline: формулировка задачи, решение на исключениях, решение на pipeline, как это выглядил на Haskell или OCaml
  • не работают тесты для 14, 15 уроков и final_exercise там не хватает ebin/*.app с метаинфой и настройками. видимо, просто не запушил в репозиторий (возможно остались в bitbucket, в упражнениях для hexlet.org)
  • #6
  • raft
    • разбить на этапы для каждого этапа свой код, и описание, какое должно наблюдаться поведение системы на 4х нодах
    • презентация

00. Intro.

  • подготовить черновик
  • подготовить презентацию
  • отдельной презентацией сделать, какие книги и курсы есть по эрланг

http://learnyousomeerlang.com/relups тут клевая катринка, надо брать в доклад

pipeline урок по валидации входящих данных

вложенные case исключения схемы erlmonads и то, как я сделал для отписок в NC

модель акторов

добавить в урок про многопотоность Модель акторов в других языках (akka)

урок по raft

глубже изучить теорию хорошо подготовить практику

01. типы данных

  • добавить что-то еще из основ языка
  • показать фичи консоли. И встроенные функции.
  • fun “и даже посылать на другую ноду, чтобы выполнить там.” кажись это не правда. Было в рассылке. Надо проверить
  • bit syntax – больше примеров. Упаковка RGB в 2 байта. Потеря точности при попытке упаковать большое число в недостаточное количество байт.

02. ссылочная прозрачность, устройство списков

Схема: Var -> Memory, const var, const memory copy on write Схема: переиспользование памяти разными структурами невозможность циклических структур императивные алгоритмы и структуры часто быстрее, а функциональные надежнее, устойчивее к ошибкам

рекурсивные функции с аккумуляторами:

  • добавить пример filter + map
  • split_by_age, Age передать как аргумент, а не хардкодить

Задание повышеной сложности trim пробелов с обоих сторон строки, с сохранением пробелов внутри строки

  • легко: в 4 прохода: drop while, reverse, drop while, reverse)
  • сложнее: в 1 проход

03. функции высшего порядка

Конструкторы списков, добавить пример, когда шаблон матчится не со всеми элементами списка [Cat || {cat, _} = Cat <- [{cat, A}, {user, B}]] V может быть шаблоном, если он не матчится, то этот элемент списка пропускается.

Пифагоровы тройки. Добавить фильтр X < Y, чтобы исключить дубликаты.

04. pattern matching

добавить объяснение про синтаксис: в конце строки может быть запятая, точка с запятой, точка, ничего в каких случаях что ставится.

русскоязычный термин – “охранное выражение”

05. kv структуры

Нативные: map (реализация внутри виртуальной машины на С, императивными алгоритмами) Построенные поверх tuple & list: proplist, dict, orddict, gb_trees (интерпретируемый функциональный код)

dict, orddict, gb_trees – устарели proplist – широко используется

CRUD операции 2 вида функций read/update:

  • бросающие исключение
  • возвращающие монаду {ok, Val} | error

таблица CRUD операций для разных структур показать неконсистентность синтаксиса по именам функций, аргументам, возвращаемым значениям (монады сделаны по-разному) которая характерна и для других мест в стандартных либах

Наличие map, fold, filter

06. ets

в практическом задании сложности с отладкой объяснить, как это лушче делать. (тестить через консоль, читать сообщения об ошибках)

07. строки

Вроде бы все ок, но кажется, что можно сделать как-то лучше. Много мелких примеров, в которых я ошибаюсь при live coding. Наверное, поможет, если сделать хорошую презентацию.

08. concurrency

картинка-схема, как работает почтовый ящик (нарисую на доске, сфоткаю, нарисую нормально)

добавить про exit(Pid, shutdown)

Подготовить к практике MapReduce. Схема как можно наладить общение между потоками. Должна быть в README.

09. gen_server_1

  • схема из 4х квадратов, как в gen_server_2 только для нашей кастомной реализации

10. gen_server_2

схема deadlock прямой и через цепочку вызовов

12. supervisor

simple_one_for_one, можно ли остановить/удалить child?

убрать старые версии init, оставить только новые, на мапах

13. Application

  • показывать observer. На примере solution или на каком-нибудь другом примере.

14. OTP

  • структуру проекта на примере rebar3 а не rebar2
  • показать wgnet либы
  • cowboy, cowlib, ranch – пример OTP приложений
  • схема – проблема с транзитивными либами

15. обработка ошибок

  • рассказать про pipeline
  • показать, как это выглядит на OCaml (Haskell)

https://github.com/yzh44yzh/erl_fun_composition