SSE2033: System Software Experiment 2 (Spring 2017)

Programming Assignment 5 (Due: 6/12 11:59PM)

Notice (6/1)

  • 테스트 스크립트를 업로드 했습니다.
    sys서버에서 측정되는 runtime을 얻기 위해서는 ./test_t.sh를 실행시키시면 됩니다.
    ./test_t.sh이 잘 동작하기 위해 server는 가장 마지막에 "\n\n"를 출력해야 합니다.
  • PA5의 runtime 측정을 위해서는 첨부된 client_t 만을 사용합니다.
    때문에 구현한 server도 client_t와 함께 동작할 수 있어야 합니다.

Programming Assignment 4 (Due: 5/29 11:59PM)

  • Tester (Revised at 00:22 on May 28)
  • Runtime (Revised at 21:25 on May 28)
  • Score (Revised at 14:58 on May 30)

Notice (5/27)

  • 테스트 과정에 대해 설명해드리면,
    먼저 5개의 성경(genesis isaiah 3john daniel mark)에 대해 index를 생성한 후
    10개의 client를 실행시켜 각각 ans/in에 있는 내용대로 검색을 하는 방식으로 테스트가 진행됩니다.
  • 이전 수업시간에서, sys서버에서 공개하는 테스트 결과외에
    추가적으로 다른 테스트를 더 해서 결과에 반영하는걸 생각하는 중이라 얘기했었는데,
    그 이야기는 잊으셔도 됩니다. 이전과 같이 sys서버의 결과를 그대로 반영합니다.

Programming Assignment 3 (Due: 5/22 11:59PM)

Notice (5/14)

  • '*'이 포함된 검색의 경우, 문제의 복잡도를 줄이기 위해
    찾고자 하는 구절이 여러번 나타나더라도 처음과 마지막에 한번씩만 표시하면 맞도록 정했습니다.
    만일 "A * B"를 찾는다면
    [A C B A C B] 과 같이 표시해주시면 되요

Notice (5/13)

  • "A * B"를 검색했을 때,
    1:1: A A ... B가 있다면
    1:1: [A A ... B] 이렇게 출력하는게 맞습니다.
    '*'를 포함한 검색의 경우, 가장 처음과 가장 마지막에 한번씩만 출력하는게 맞습니다.

Notice (5/12)

  • 헤더파일과 관련해서 어떤 파일을 include 해도 되는지 / 하면 안되는지에 대한 질문이 많습니다.
    기본적으로는 더 쉬운 구현을 위해 함수를 가져오는 일만 아니면 어떤 헤더파일이든 걱정없이 사용하셔도 되요
    특정 함수를 위해 어떤 헤더파일이 필요한지에 대한 정보가 필요할 때는 linux man page를 참고하시면 됩니다.
    man 2 <사용하고자 하는 함수 이름> 을 터미널에 실행시키시면
    어떤 파일을 include 해야 하는지 설명이 나올꺼에요
  • 과제 스켈레톤 코드에 시스템콜을 위한 헤더파일이 몇개 빠져있습니다.
    이전 과제에서 사용한 헤더파일이 스켈레톤 코드에 빠져있어도 당황하지 마시고
    필요한 헤더파일은 넣으셔도 괜찮습니다.
  • 이전에 업로드한 정답에 문제가 발견되어 수정된 내용을 다시 업로드했습니다. - Answer(fixed)
  • 여러 성경을 동시에 겁색하는 테스트케이스도 포함되어 있습니다.
    test1 : genesis job esther
    test2 : numbers 2john 1corinth
    test3 : habakkuk mark 2chron
    test4 : romans hosea mark
    test5 : philemon 1corinth jonah

Programming Assignment 2 (Due: 5/1 11:59PM)

Notice (4/26)

  • 과제가 Tester에서 잘 동작하는데 필요한 것들입니다.
    1. 터미널과 소통하는 부분이 write(1, ...) / read(0, ...) 로 작성되었는지 확인해주세요
    2. 유저에게 입력을 받기 전 "> "을 입력하는지 확인해주세요
    3. 유저에게 "!q"를 입력받기 전 종료되는 일은 없는지 확인해주세요
  • Correctness 검사를 위해서는 ./test.sh 이후 diff -bsq out ans/out
    Implementation 검사를 위해서는 ./test_impl.sh 이후 diff -bsq out ans_impl/out 을 입력하시면 됩니다.
    디버깅은 ans/out, ans_impl/out 폴더를 확인해
    어떤 입력에 어떤 출력이 나오면 되는건지 확인하시길 바랍니다.
  • Runtime 결과는 오늘부터 매일 저녁에 이 곳에 업데이트 하겠습니다.

Notice (4/13)

  • 기존에 올려드린 Tester가 잘 동작하지 않는 문제가 있어 고친 버전을 다시 업로드했습니다.
    혹시 이전에 다운받은 Tester가 잘 동작하지 않는 것 같다면 이 문제 때문일 수 있으니
    다시 다운받아서 시도해보세요

Notice (4/12)

Tester 사용 방법입니다.

  • 여러 폴더 중 src폴더에 자신의 소스코드를 붙여넣기 합니다.
  • ./test.sh 을 실행시킵니다.
  • 결과에 따라 identical / differ가 표시될겁니다.
  • 왜 틀렸는지를 비교하고 싶다면, out폴더와 ans/out폴더를 비교하면 됩니다.
  • 각 성경에 대해 실행되는 모습을 보고싶다면 (스크립트로 실행하지 않고 직접 실행하고 싶다면)
    'run/run.sh genesis' 의 방식으로 입력하면 됩니다.
  • 사용자에게 입력을 받기 전, 예제와 같이 '> '를 화면에 출력해야 테스트가 진행됩니다.
  • 20개씩 5개의 파일로 총 100번 테스트합니다. 모두 맞으면, correctness 80점을 받을 수 있습니다.
    채점은 정확한 결과를 보이는 키워드의 수에 비례해 점수를 매길 예정입니다.
  • 'run/run.sh genesis' 의 방식으로 실행해도 끝까지 진행되지 않는다면,
    세그멘테이션 오류 때문일 수 있습니다. 여러 단어를 받아드리는 걸 아직 구현하지 않았다면,
    아무 출력을 내보내지 않고 지나가는 방식으로라도 구현해야 합니다.

Notice (4/7)

Keyword Searcher에 대해 질문 들어왔던 내용들을 알려드립니다.
Q1. "단어1 단어2"를 검색했을 때, 두 단어 사이에 ',' 등이 있어도 검색이 되야하는지?
A1. 네 둘 사이에 다른 단어가 없다면, 인접하다고 판단해야 합니다.

Q2. 각 검색방식이 혼합 될 수 있는지? (ex: "work and" the)
A2. 아니요, ""가 입력된다면, 무조건 처음 혹은 끝입니다.

Q3. 검색을 할 때 3장 2절에 해당하는 단어가 여러번 나타나면, 여러번 출력해야 하는지?
A3. 아니요, 입력된 단어를 여러개 포함하고 있더라고 한번만 출력해야 합니다.

Q4. 검색어가 255자 이상 입력되는 경우도 고려해 코딩을 해야 하는지? / 검색어에 특수문자나 대문자가 나타나는지?
A4. 검색어는 255자 이하로만 입력할 것입니다. 그리고 검색어는 소문자와 두 개의 특수문자만 입력됩니다.
(indexPrinter가 출력하는 단어들만 입력합니다.)

Programming Assignment 1 (Due: 4/3 11:59PM)

Notice (3/24)

Index Builder와 Index Printer의 차이점과 대해 알려드립니다.

  • Index Builder
    전체적으로, 이번 과제에서 구현해야 하는 거의 모든건 Index Builder에 해당합니다.
    가능한 한 빠른 시간 내에, 각 단어의 총 출현 횟수와 위치 정보를 얻어 Index라는 파일로 출력하는게 Index Builder의 목적입니다.
    채점에 실행 시간도 포함될꺼라 얘기드렸는데, Index Builder의 속도만 측정합니다.

    Index 파일의 형식은 기본적으로는 결과적으로 출력해야 하는 output 파일의 형식과 같습니다.
    다만, 만일 좀 더 간결한 형식이 정보 전달에 편할 것 같다고 생각이 된다면, (','나 ':' 같은걸 쓰기 싫다면) 그렇게 구현하셔도 좋습니다.
    만일 Int → ASCII로 바꾸는 과정이 너무 불편한 것 같다고 생각이 든다면, 그런걸 생략하셔도 좋습니다.
    하지만, 모든 연산은 Index Builder에서 끝나야 하고, Index Printer는 단순히 읽기만 해야 합니다.
  • Index Printer
    Index파일의 형식이 output파일의 형식과 매우 비슷하다보니, Index Printer를 단순히 'cp'와 비슷하게 구현하면 되지 않을까
    생각할 수도 있습니다. 하지만, 이 경우 점수로 인정되지 않습니다.
    Index Builder에서와 같은 모양으로 자료구조(링크드 리스트 등)을 만든 후에 출력을 해야 합니다.
    대신, Index Printer의 runtime은 채점항목에 포함되지 않아, 느리게 구현하셔도 됩니다.

skeleton of ex3

Programming Assignment 0 (Due: 3/20 11:59PM)

  • Score
  • Submission status: (Revisied at 06:54 on March 21)
    • No delay: 신준영, 조한진, 이수용, 김성환, 권도완, 김경모, 송민우, 정재인, 신준혁, 윤종준, 정예준, 이준호, 이재명, 우지원
    • 1-day delay: 손현국
  • skeleton of pa0
  • answer for pa0
    • 1. http://www.stewartonbibleschool.org.uk/bible/text/
      모든 파일에 대해 정답을 출력해야만 100점입니다.
    • 2. unistd.h / fcntl.h를 제외한 다른 헤더파일은 include하면 안됩니다.
    • 3. Warining이 하나 나타날 때마다 1점씩 최대 10점 감점됩니다.
    • 4. 3/20일이 마감입니다. 이후엔 하루 초과할 때마다 10점씩 감점됩니다.

Notice (3/15)

  • 과제를 진행하시면서 어려울 수 있는 부분들이 있어 미리 알려드립니다.
    1. isaiah.txt의 경우, 중간(651줄)에 성서와 관계없는 내용이 갑자기 나타나기도 합니다.
    2. romans.txt의 경우, 각각의 줄이 숫자가 아닌 ' '로 시작합니다.
    때문에 모든 성서 파일에 대해 테스트를 통과하기 위해서는 각각의 줄이
    "[ ]숫자1:숫자2:"
    의 형식으로 시작하는지를 확인하는 과정이 필요합니다.
  • 과제 0번의 output에 대해 질문이 많았습니다.
    과제 0번은 터미널 화면에만 결과를 출력하면 되는게 맞습니다.
    터미널 화면에 내용을 출력하는 방법은
    write(1, "내용", length)
    와 같이 fd 자리에 1을 넣어주면 됩니다.
    pa0.pdf에 genesis_out.txt와 같이 파일로 출력하라는 내용이 있지만,
    이번 과제에 해당되는 내용이 아닙니다. 이 부분은 무시하시면 됩니다.
  • 제출된 프로그램이 잘 동작하는지 확인은 오직
    (http://www.stewartonbibleschool.org.uk/bible/text/)
    위의 링크에서 다운 받을 수 있는 성경 파일에 대해서만 확인할 예정입니다.
    위 성경 파일에 대해서 잘 동작한다면, 과제 점수를 다 받으실 수 있습니다.
  • 스켈레톤 코드에서 파일 이름을 받아오는 코드에 문제가 있습니다.
    코드에서 argc < 1 부분이 있는데, 이 부분이 의도한 것처럼 동작하기 위해서는
    argc < 2로 바뀌어야 합니다.
    문제를 수정한 스켈레톤 코드를 다시 업로드 했습니다.