Новый логотип Группа русскоязычных пользователей Smalltalk

Изучение Smalltalk

Отложенная публикация постов

Многие блоги и системы управления контентом имеют возможность публиковать материалы в определённое время, то есть задавать точное время "появления" чего-либо на сайте. Pier CMS тоже предоставляет такую возможность.

  1. Написать пост
  2. Поменять дату/время публикации Posting
  3. Сохранить
  4. PROFIT!
Posted by Ivan Zhdanov at 27 July 2010, 7:20 am with tags pier, blog, posting comment link

Каракули вместо русских букв? Исправим!

После настройки русских шрифтов в окружении, когда вы с радостью можете писать в workspace

'Здравствуй мир!' asString.

остаются некоторые недоработки.

Например, выполнив такой код

(HTTPSocket httpGet: 'www.yandex.ru') asString copyFrom: 96 to: 107.

я имел счастье лицезреть такие каракули ’Ð¯Ð½Ð´ÐµÐºÑ’ вместо весёлой надписи ’Яндекс’.

Починить данное безобразие очень просто (когда знаешь как, естественно). Посылаем сообщение на конвертирование

((HTTPSocket httpGet: 'www.yandex.ru') asString copyFrom: 96 to: 107)
convertFromWithConverter: UTF8TextConverter new.

Волшебные ctrl+p поселяют слово ’Яндекс’ в нашем образе

Posted by Ivan Zhdanov at 27 July 2010, 7:02 am with tags pharo, encode, utf-8 comment link

Встроенная подсветка кода в Pier

Неожиданно обнаружилась интересная деталь Pier CMS. Подсветка smalltalk кода на лету. Вот такая строчка


== HTTPSocket httpGet: ’www.google.ru’


показывается как

HTTPSocket httpGet: 'www.google.ru'

Двойное равенство необходимо начинать с новой строки.

Также можно пользоваться структурой +value:source+. Например, +value:source|class=Object+ показывает так

ProtoObject subclass: #Object
instanceVariableNames: ''
classVariableNames: 'DependentsFields'
poolDictionaries: ''
category: 'Kernel-Objects'
Метод на стороне класса +value:source|class=HTTPSocket|classmethod=httpGet:+
httpGet: t1 
^ self httpGet: t1 accept: '*/*'
Обычный метод +value:source|class=HTTPSocket|method=contentType+
contentType
| type i |
type := self getHeader: 'content-type' default: nil.
type ifNil: [ ^nil ].
type := type withBlanksTrimmed.
i := type indexOf: $;.
i = 0 ifTrue: [ ^type ].
^(type copyFrom: 1 to: i-1) withBlanksTrimmed

Posted by Ivan Zhdanov at 26 July 2010, 2:41 am with tags pier, подсветка_кода comment link

Подключаем прокси на раз-два

У меня на работе инет идёт через прокси, а в Pharo хочется скачать свежий пакет с репозиториев. Можно указать прокси через HTTPSocket, послав следующее сообщение:

HTTPSocket 
useProxyServerNamed: 'ip-address'
port: 'port'
proxyUser: 'user'
password: 'password'.

Теперь можно творить дальше

Posted by Ivan Zhdanov at 26 July 2010, 1:54 am with tags pharo, HTTPSocket, proxy comment link

Несколько сайтов Pier CMS в одном образе

Руководство для Pier 1.2 на Seaside 2.8

  1. Меняем название ядра в системных настройках Pier System
  2. Копируем само приложение в новый объект Copy
  3. Запускаем новое ядро командой PRDistribution new kernel Newkernel
  4. В свойствах новой копии выбираем новое ядро Config
  5. PROFIT!
Posted by Ivan Zhdanov at 23 July 2010, 10:48 am with tags seaside, pier, kernel, site comment link