Laboratórios de Informática I

Licenciatura em Engenharia Informática (2011/12)

Tópicos

Avisos

01 Fev - Encontram-se afixadas as classificações finais da disciplina em tinynew.gifAvaliação.

19 Jan - As orais de avaliação do projecto terão lugar no período 23-30 Jan nos respectivos turnos indicados no calendário . As orais serão feitas por ordem de chegada. Os turnos OT1 e OT2 tiveram que ser transferidos para dia 30-Jan por incompatibilidade de horário da equipa docente.

12 Jan - As classificações dos dois primeiros elementos de avaliação estão disponíveis em Alunos.

10 Jan - Novas datas para entrega e avaliação do projecto (uma semana depois, 21-Jan). Ver o calendário actualizado da disciplina.

08 Jan - Estejam sempre atentos às novas FAQs que vão aparecendo em Projecto.

15 Dez - Estão disponíveis várias FAQs para ajuda à realização do projecto - ver Projecto.

08 Dez - No mini-teste de LaTeX é consultável a documentação disponível no Material da disciplina.

02 Dez - Foi hoje publicado na rúbrica Material o enunciado e material auxiliar para realização do projecto da disciplina.

30 Nov - Devido a um atraso na construção do 'kit' para realização do trabalho o enunciado será publicado dia 02-Dez.

25 Nov - O enunciado e 'kit' para realização do trabalho será publicado no dia 30-Nov.

25 Nov - A segunda Ficha de Avaliação individual (LaTeX) terá lugar nas aulas da semana 12-Dez a 16-Dez.

25 Nov - A data limite para comunicação de mudança de grupo passou para dia 29-Nov.

22 Nov - Fotografias : os alunos que não tem fotografia no portal académico (logo também não no BB) devem colocá-la o mais depressa possível. Recorda-se que, sem a fotografia do aluno, dificilmente poderá ser tida em conta na classificação final da disciplina a sua avaliação contínua.

16 Nov - Acaba de ser publicada em Alunos a constituição dos grupos de trabalho para o projecto cujo enunciado irá ser lançado brevemente.

27 Out - A primeira Ficha de Avaliação (individual) terá lugar nas aulas da semana 14-Nov a 18-Nov

27 Set - As aulas iniciam-se 6ª-feira, dia 30-Set (turnos das 14h00 e das 16h00) - ver calendário

16 Set - Data prevista para o arranque das aulas: dia 30 de Setembro

13 Set - Criação do site.

2011/12 : Projecto

Enunciado

  • Kit para desenvolvimento (ficheiro ZIP, 5 MB, tinynew.gif revisto) : a sua expansão gera, entre outros, o enunciado do trabalho (Projecto.pdf) , a ler cuidadosamente, até ao fim, antes de se começar a trabalhar.

NB: tendo o sítio referido na nota de rodapé da página 4 do enunciado ficado indisponível entretanto, encontra-se temporariamente tinynew.gif aqui a informação em falta.

Relatório

Deverá ser escrito um pequeno relatório em LaTeX sobre o projecto que deverá adoptar o formato article, com tamanho de letra 10pt, tamanho de página a4wide, e ter no máximo 8 páginas. Devido a esta limitação de espaço, não é recomendável incluir todo o código no relatório: apenas se devem listar extractos que se julguem mais interessantes.

Regime de Avaliação

  • O projecto deverá ser realizado em grupos de 2 alunos e apresentado aos monitores na semana de 23-27 de Janeiro de 2012 nos turnos práticos da disciplina - ver Sumários.
  • Os projectos (relatório e código) devem ser submetidos por email até às 12h do dia 21 de Janeiro para o monitor do turno respectivo (Ver Horário).
  • Cada turno terá 2 aulas de apoio à realização do projecto (ver sumários previstos para tal em Sumários). Contudo, os alunos não deverão esperar por essas aulas para iniciar a realização do trabalho - devem começá-lo já. Eventuais dúvidas devem ser tiradas junto do monitor do respectivo turno.
  • Para a apresentação deverão trazer o código desenvolvido e o relatório impresso (idealmente em frente-e-verso).
  • Os grupos que não enviarem o projecto até ao dia 14 de Janeiro não poderão ser avaliados.
  • As notas dos elementos do grupo podem ser diferentes, de acordo com a sua prestação durante a apresentação.
  • Caso se detectem cópias entre os trabalhos, todos os membros dos grupos envolvidos ficarão imediatamente reprovados.

FAQs tinynew.gif

Q1 - Os PDFs gerados têm que ter música e vídeo incluídos?

R: Essa inclusão faz parte da valorização - ver enunciado.


Q2 - A execução do exiftool nem sempre dá o campo YEAR. Como se faz neste caso?

R: Isso pode de facto acontecer, não só para esse campo mas também para outros. Têm que prever esta dificuldade e, se necessário, usar a biblioteca do anexo B do enunciado para lidar com esse tipo de situações.


Q3 - O que devemos fazer em relação aos caracteres especiais que apareçam nos outputs do exiftool?

R: As funções para processamento de strings em Haskell permitem-vos lidar com esses caractéres.


Q4 - Em relação à ordenação fazemos somente funções que ordenem segundo os campos que são pedidos?

R: Devem programar a função sortOn em primeiro lugar e depois usá-la para os campos que tiverem sido definidos. O enunciado explica como fazer isso para um campo em particular (size). Deverá ser o utilizador do vosso programa que escolhe a função que pretende usar para esse efeito.


Q5 - O programa final é para executar na pasta onde estão os conteúdos ou temos que descer às subdirectorias?

R: O programa é para executar onde entenderem. Se fizerem find /mnt/kit -type f (cf. instruções do anexo D do enunciado) têm os caminhos todos a processar pelo exiftool. Mas se correrem exiftool -r directoria obtêm o mesmo efeito.


Q6 - Em relação aos .ogv, o exiftool (Ubuntu 10.10) não lê os campos Height e Width desses formatos. Mas por exemplo no Mint já lê. O que fazer?

R: A omissão de campos já foi abordada na FAQ Q2.


Q7 - Quais são os formatos que irão aparecer? Só mp3 para música e mp4/ogv para vídeo?

R: Sim, esses são os formatos a processar pelo exiftool.


Q8 - Apresentação da informação: o programa apenas tem que apresentar a informação gerada pelo exiftool e mais tarde tratada no ficheiro.tex?

R: O programa deverá apresentar a meta-informação obtida através da ferramenta exiftool no terminal (como é visível na página 4 do enunciado). Além disso, a biblioteca Exif.hs deverá incluir uma função de "pretty-printing" que permita "exportar" essa mesma informação para um ficheiro LaTeX.


Q9 - Copyright: na informação exibida pelo exiftool o único campo referente ao copyright é o estado das flag. O programa tem que apresentar o estado das mesmas?

R: Atenção, há dois campos: Copyright e Copyright Flag (experimentem com ficheiros diferentes). O campo pedido é o Copyright e não o Copyright Flag.


Q10 - A criação das "caixas" para apresentação dos dados no terminal tem que ser definidas ou se existe alguma maneira automática de o fazer?

R: Essas caixas são para se fazer explicitamente usando funções de processamento de `strings', isto é, listas de caracteres, como or exemplo take, drop, (++) , length etc. O que espera é a definição de uma função genérica que constói automaticamente cada caixa, mediante as dimensões dos ´strings' nela contidos.


Q11 - O programa final deverá ser capaz de diferenciar os ficheiros nos quais é aplicado (vídeo ou audio) ou poderá ser somente aplicado a directorias com apenas video ou audio?

R: O programa deverá ser capaz de lidar com directorias que contenham simultaneamente áudio e vídeo.


Q12 - A página 2 do enunciado refere que deverá ser possível "construir catálogos em PDF da informação seleccionada usando Haskell para exportar essa informação para LaTeX (…)". Essa informação é a que surge em tabela mais à frente no enunciado (nome, tamanho do ficheiro, título,…) ou a que é seleccionada na altura pelo utilizador?

R: É a que é selecionada pelo utilizador. Por exemplo, após visualização dos resultados de uma 'query' ao terminal, o utilizador pode querer ter a mesma informação impressa em PDF.


Q13 - Ao realizar as funções de pesquisa e de ordenação, que funções é que é necessário programar? Achamos desnecessário, por exemplo, seleccionar videos a partir do valor exacto da sua largura ou altura (width ou height) ou com valores acima ou abaixo desses parâmetros, ou então procurar ou ordenar ficheiros por tipo, uma vez que o programa só deve ser capaz de ler ficheiros mp3 para áudio, ou mp4/OGV para vídeo... Outro parâmetro que achamos desnecessário para ordenação é o copyright.

R: Reparem que, se definirem a função (genérica) sortOn :: (Ord b) => (a -> b) -> [a] -> [a] que ordena quaisquer listas de acordo com a função que é passada como primeiro parâmetro e a função select :: (a -> Bool) -> [a] -> [a] que seleciona os elementos de uma lista que validam o predicado que é passado como primeiro parâmetro, têm praticamente tudo feito. O resto é mostrar como usar essas funções para fazer seleções e ordenações concretas de conteúdos multimédia. No fundo, dá-se liberdade aos utilizadores finais para fazerem o que quiserem: desde que esteja tudo bem tipado, é com eles (utilizadores) o fazerem ou não sentido as coisas que estão a pedir...


Q14 - Preciso de instalar o ReGex mas quando o tento instalar pelo terminal (no Ubuntu) diz-se que o pacote não é encontrado. Se tentar correr o regex no terminal diz que não está instalado.

R: Façam, ao terminal, sudo apt-get install libghc6-regex-* . Outra hipótese é instalar o haskell-platform (para ter o cabal) e fazer cabal-install regex-base.


Q15 - Ao analisar a função mymain, repara-se que o comando "ls -l > txt.txt" dá diferentes formatos em diferentes sistemas operativos. Por exemplo, a data tem um campo a mais em Mac que em Linux e Windows, que não têm a sua separação em duas partes. Isso faz com que seq9tofile não funcione.

R: Devem adaptar essa função ao número de campos do vosso sistema operativo (no kit está preparada para 9, daí o caracter 9 no nome seq9tofile). Podem inclusivamente definir mais do que uma versão dessa funcionalidade.


Q16 - E não é preciso também alterar a estrutura do tipo File? Não deixam de fazer sentido os campos month, day etc?

R: Tem toda a razão, faltou dizer isso na FAQ anterior. Vamos ver dois exemplos,

a = "-rw-r--r-- 1 xxx xxx 257 Dec 1 12:27 txt.txt"

e

b = "-rw-rw-r-- 1 xxx xxx 2356 2011-12-03 18:06 Dir.lhs"

No primeiro caso,

words a = ["-rw-r--r--","1","xxx","xxx","257","Dec","1","12:27","txt.txt"]

com 9 ítens, encaixando no tipo File que é dado. Já no segundo se terá

words b = ["-rw-rw-r--","1","xxx","xxx","2356","2011-12-03","18:06","Dir.lhs"]

com 8 ítens. Neste caso, dever-se-á adaptar File a

data File = File { perms :: String , nrlnk :: String , owner :: String , group :: String , size :: Int , date :: String , time :: String , name :: String }

(date em vez de month, day). Agora só têm de adaptar o código que utiliza File. É um bom exercício, ler e adaptar código escrito por outros. Não o desvalorizem.


-- Criação da página: JoseNunoOliveira - 13 Sep 2011

r9 - 14 Apr 2012 - 11:39:27 - JoseNunoOliveira
This site is powered by the TWiki collaboration platform Copyright © by the contributing authors. Ideas, requests, problems? Send feedback.
Syndicate this site RSSATOM