→ No CommentsCategorias: Uncategorized

Diante de tanta hipocrisia sobre as drogas e seu combate o texto de Artaud dá o que pensar (trechos):
Deixemos que os perdidos se percam: temos mais o que fazer que tentar uma recuperação impossível e ademais inútil, odiosa e prejudicial. Enquanto não conseguirmos suprimir qualquer uma das causas do desespero humano, não teremos o direito de tentar a supressão dos meios pelos quais o homem tenta se livrar do desespero.
Veja mais em:
→ No CommentsCategorias: Uncategorized
Fonte: http://www.animamundi.com.br
→ No CommentsCategorias: Uncategorized
→ No CommentsCategorias: Vela

De 21 a 26 de junho acontece o panorama.
Programação
Dia 21, Sábado 19:00 Cerimônia de abertura Canções de amor 22:00 Satã Dia 22, Domingo 13:00 O advogado do terror 15:30 Lady Jane 17:45 A última amante 20:30 O segredo do grão Dia 23, Segunda 18:00 As aventuras de Moliére 20:30 O escafandro e a borboleta Dia 24, Terça 18:00 Canções de amor 20:30 A última amante Dia 25, Quarta 18:00 O escafandro e a borboleta 20:30 O segredo do grão Dia 26, Quinta 16:00 Lady Jane 18:00 O advogado do terror 20:30 As aventuras de Moliére
Fonte:
→ No CommentsCategorias: Cidade & Região · Cinema · Cultura · Evento · Filme
Uma funcionalidade nova no Google Docs parece ser bem útil:
→ No CommentsCategorias: Software · Web
![]()
Veja a entrevista em O pensador americano Douglas Hofstadter.
Hofstadter escreveu o livro GEB que estou tentando obter em português, sem sucesso.
No link abaixo um admirador de Hofstadter brinca com frases autoreferenciais:
→ 2 CommentsCategorias: Ciência · Cultura · Livro

Este hack mostra como usar #onAnswer. Para mais detalhes veja o link lá embaixo.
Criaremos 4 classe e seus métodos para obter imagens fáceis de seguir.
Crie a primeira classe com o código:
SeasideHack subclass: #OnAnswerHack
instanceVariableNames: ‘a’
classVariableNames: ”
poolDictionaries: ”
category: ‘Seaside-Hacks’
E os métodos:
initialize
super initialize.
a := A new
renderContentOn: html
html render: a
children
^ Array with: a
Crie a segunda classe com:
SeasideHack subclass: #A
instanceVariableNames: ”
classVariableNames: ”
poolDictionaries: ”
category: ‘Seaside-Hacks’
E os métodos:
renderContentOn: html
html div id: ‘letter-A’;
with: [html text: 'A'.
html
form: [html submitButton text: 'call B';
callback: [self call: B new]]]
style
^ ‘#letter-A {background-color: hotpink; width: 300px; height: 300px}’
Crie a terceira classe com:
SeasideHack subclass: #B
instanceVariableNames: ‘c’
classVariableNames: ”
poolDictionaries: ”
category: ‘Seaside-Hacks’
Com os métodos:
initialize
super initialize.
c := C new
renderContentOn: html
html div id: ‘letter-B’;
with: [html text: 'B'.
html render: c.
html
form: [html submitButton text: 'answer';
callback: [self answer]]]
style
^ ‘#letter-B {background-color: darkseagreen; width: 200px; height: 200px}’
children
^ Array with: c
E finalmente a quarta classe:
SeasideHack subclass: #C
instanceVariableNames: ”
classVariableNames: ”
poolDictionaries: ”
category: ‘Seaside-Hacks’
E os métodos:
renderContentOn: html
html div id: ‘letter-C’;
with: [html text: 'C'.
html
form: [html submitButton text: 'answer';
callback: [self answer]]]
style
^ ‘#letter-C {background-color: aquamarine; width: 100px; height: 100px}’
Para registrar a aplicação no Seaside execute:
OnAnswerHack registerAsApplication: ‘onanswerhack’
A execução da aplicação leva à aparição da seguinte figura:
Um clique no botão call B substitui o componente A pelo componente B e faz aparecer a figura:
O botão answer do componente B (botão de baixo) invoca self answer que retorna ao componente A, mas o botão answer no componente C, embedded em B, envia a mensagem self answer que não retorna para nenhum componente pois o componente C não foi invocado com self call:. No componente B a última linha do código abaixo (que você deve inserir agora) serve para interceptar o retorno e redirecioná-lo para o componente que invocou o componente B (o componente A):
initialize
super initialize.
c := C new.
c
onAnswer: [:dummy | self answer]
Fonte: Aprendendo a usar o método #onAnswer: em Seaside na prática: autenticação de usuários
→ No CommentsCategorias: Smalltalk
Tagged: seaside, hack

WAAlphabeticBatchedList efetua a paginação de uma lista de forma alfabética.
Para testar crie a classe com o código:
WAComponent subclass: #AlphabeticBatchedListHack
instanceVariableNames: ‘items batchedlist’
classVariableNames: ”
poolDictionaries: ”
category: ‘Seaside-Hacks’
Os métodos são:
initialize
super initialize.
items := Collection allSubclasses..
batchedlist := WAAlphabeticBatchedList new.
batchedlist items: items
renderContentOn: html
html heading: self class description.
html heading: ‘All subclasses of Collection’ level: 2.
batchedlist batch
do: [:item | html render: item. html break].
html render: batchedlist
children
^ Array with: batchedlist
A página apresentada é como abaixo:
→ No CommentsCategorias: Smalltalk
Tagged: hack, seaside
Neste hack colocamos alguns códigos que podem esclarecer como usar o componente WABatchedList no Seaside. Primeiro crie a classe de teste com:
WAComponent subclass: #BatchedListHack
instanceVariableNames: ‘items batchedlist’
classVariableNames: ”
poolDictionaries: ”
category: ‘Seaside-Hacks’
Depois implemente os seguintes métodos:
initialize
super initialize.
items := OrderedCollection new.
1
to: 100
do: [:k | items add: 'item ' , (k asString padded: #left to: 3 with: $0)].
batchedlist := WABatchedList new.
batchedlist batchSize: 15.
batchedlist items: items
renderContentOn: html
html heading: ‘Batched List Test’.
batchedlist batch
do: [:item |
html render: item.
html break].
html render: batchedlist
children
^ Array with: batchedlist
A página gerada é como abaixo:
→ No CommentsCategorias: Smalltalk
Tagged: seaside, hack