WebFileBrowser: a Seaside application for accessing files

By Mike Filonov on 12 February 2015 at @mikefilonov under #seaside, #filesystem, #cloudapp   1 thanks

<p>WebFileBrowser is a Seaside application which allows you to manage files via web interface. WebFileBrowser can be configured to work with a local file-system or with a remote file-system such as WebDAV or FTP server.</p><p>The applicaiton is designed to be an additional tool you install into a Seaside server and use it for administrative purposes. Please note that it is not designed to be a file sharing application due to performance limitations.</p><p>WebFileSystem allows a user to perform basic file operations using a browser: list directories, create new folders, upload/download/delete files.</p><p>The project is very useful when Pharo is used as an appliance and there is no easy way to access files inside the server (like at Pharocloud). By installing WebFileBrowser you can do backups and updates of your projects.</p>

How to install SandstoneDb to your Image

By Mike Filonov on 21 October 2014 at @mikefilonov  0 thanks

I have added a configuration for SandstoneDb to the official repository of the project so now it is very easy to install. Just open a workspace and evaluate:

PharoNOS - Pharo No Operating System

By Mike Filonov on 16 October 2014 at @mikefilonov under #pharo   0 thanks

<p>Do you remember Squeak NOS Project which aim was to run Squeak on a bare hardware? I liked the idea very much as Smalltalk always tends to provide self-sufficient system. However, I was not able to play much with it as it has very small hardware support. I was hardly able to use my mouse. Lately I had a thought: why not to use a linux kernel for driver support and use Pharo for everything else? Please welcome PharoNOS: a bootable Pharo which can be run on a "bare hardware" or as a Virtual Machine.</p><p>The ISO image consists of a minimal amount of utilities. The size of the distribution file is just 60 Mb! In the runtime Linux footprint is really small: around 60Mb of RAM. All other resources of a host system are dedicated for Pharo only.</p>

How to update a Seaside component without a page refresh

By Mike Filonov on 3 October 2014 at @mikefilonov under #seaside, #ajax, #webannouncement, #tutorial   2 thanks

Smalltalk Seaside has Ajax support, which can help you create web applications with great user experience. However, there is a lack of documentation so sometimes it is hard to have things done. In this article, I will show you how to implement a page with a progress bar which shows and constantly updates a state of server process. The component will pool the server via ajax calls and update it's state withouth a page refresh in the browser.

Seaside sessions are not what they seem!

By Mike Filonov on 20 July 2014 at @mikefilonov under #seaside   1 thanks

If you worked with Smalltalk Seaside framework, you know that there is an object called "Session" which you can use to store a global state for your application. For instance, you may have a current user object stored and shared between components in session. If you use it, you must know that name "session" is very misleading and dangerous as "session" in other platforms means completely different thing than it means in Seaside. Understanding the difference is essential for security and usability of your application. In this article, I would like to show the difference between "usual session" and "seaside session" and why cookie-tracking policy should not be used for "securing" the urls.

Session timeout workaround in Seaside

By Mike Filonov on 2 July 2014 at @mikefilonov under #seaside   1 thanks

You may face a problem with a Seaside application when you have a component which is used for some time without any requests. Like a text-editing form which is used for writing long texts. If it takes a user to write a text for time longer then a session timeout then all his work will dissappear due to an invalid session when the form is submited. Here is a small code that solves this problem by making session prolongate while user's browser is open.