Well I have been learning to use lotus notes at work... And I am not so sure how good it is. There are many things that would need to be improved. It is used as a platform for some software which thus provides as a whole an interesting CRM solution. But I believe there is much room for improvement there.
Friday, 5 December 2008
Subversion and unicode
I was having some difficulty at work with documents which were not saved as unicode in the subversion repository. This caused problems with eclipse which has not been able to open it.
What I did to solve my problem was to use the command: file to determine the encoding, and use pconv to reencode the documents.
I am planning to do a small perl script (though some java program one would be also OK) which downloads files, checks the type and then reload and then performs a commit on the documents. However, I must make sure there is no problem with different encodings of the document for the history.
RAP
Well I learnt some things about RAP these days and I recalled a few things about eclipse I had forgotten as well I learnt new ones.
Part of the interesting things are targets in eclipse, which allow you to choose exactly the plugins available to the eclipse platform. This is particularly helpful when some packages conflict with each other.
In the case of RAP, the RCP and RAP plugins seems to have difficulty working together. I must admit though that I do not know what is the issue there.
So expect a RAP intro tutorial and perhaps other issues.
Tuesday, 18 November 2008
Common Errors in C
Sunday, 2 November 2008
Java Workqueue API
- executors
- queues
- concurrent collections
- synchronizers
- atomic (in package: java.util.concurrent.atomic )
- locks (in package: java.util.concurrent.locks )
Executors
Executors are containers taking care of the execution of tasks, just as SwingUtilities used to do it. Different kinds of executors are imaginable:- DirectExecutor (performing the task but not asynchronously)
- ThreadPerTaskExecutor (one thread is created for each task to be performed)
- SerialExecutor (each task is performed sequentially)
- ThreadPoolExecutor (executor performing using a pool of threads)
- ScheduledThreadPoolExecutor (executor performing using a pool of threads at certain specified moments or periodically)
Queues
Another useful data structure for performing task in parallel and asynchronously are queues (also known as FIFO data structures). The java.util.concurrent package provides a number of data structures for this purpose too. One particular kind of FIFO are blocking queues, for which five different versions exist:- LinkedBlockingQueue
- ArrayBlockingQueue
- SynchronousQueue
- PriorityBlockingQueue
- DelayQueue
Synchronizers
A number of possible techniques can be used to synchronize threads. Among these are semaphores which we discussed in the linux kernel context. Other types provided by the java.util.concurrent package, such as the CountDownLatch, used to block some actions until a number of events or elements have been counted, the CyclicBarrier, which is a resettable multiway synchronization mechanism, an exchanger to allow threads to exchange objects at some definite point and the already mentioned locks.Concurrent Collections
The java.util Collection Framework already contained a number of snychronized or synchronizable classes. However, the java.util.concurrent package introduces new structures useful in a multithreaded context:- ConcurrentHashMap,
- ConcurrentSkipListMap,
- ConcurrentSkipListSet,
- CopyOnWriteArrayList, and
- CopyOnWriteArraySet
Timing Units
The java.util.concurrent package also introduces a new class TimingUnit to provide different kind of granularity as to which unit of interval for time measurements should be used. Here again, it would be useful to take a look at the implementation of the kernel and compare.Atomic and Locks
Since atomic variables and locks are in other packages, I will describe them in other entries. However, it is again interesting to note that the same topics were already discussed in other entries of this blog.Flash with Flex
So I tried a few things with Flash now that I more or less know the basics of flex (and only the basics).
So I wrote my first little movie in flash and compiled it using flex's compiler.
I can not really do an introduction yet to flash and flex. I still need to get use to too many things. For example, I am not really happy not knowing which data structures are available in action script. Maybe I have been spoiled by java using the java.util collections. Yet I think it sensible to expect the existence of a number of standard libraries one can use to prevent the inventingthewheelitis.
One thing I found at least im internet is from a developer from Mannheim who wrote some data structures for games in action script. I will have to take a look at it. It sure sounds really interesting.
I have also been interested in what is the best way to create small movies for fun. So I just thought of the general object oriented structure of my character creations. Actually I already had some project of the sort in java. But I had not that much because other priorities popped up as they always do.
Oprofile - What are thou ?
O.K Apart from doing stupid references to films I actually have not really liked. What am I doing?
After reading a few mails from the Linux Kernel Mailing list, I found the following tool which seems useful: oprofile. I must admit I still do not have a clear idea of all the possibilities that this tool offers.
The first thing to know it is a profiler and it is a profiler capable of giving a number of information on a program with quite a low overhead. But what is a profiler?
A profiler collects information on running processes of a computer to analyze the performance of a program (see the wikipedia article on performance analysis).
It gives the possibility to look at the following aspects of a system:
- Call-graphs (i.e it looks at the graph of the functions calls of programs)
- libraries used by a program
- instruction level information collections (also on assembly code level)
Saturday, 25 October 2008
Interesting Week
- network problems with TCP/UDP broadcast
- flash/flex sandbox security issues
Monday, 6 October 2008
Performance according to Martin Fowler
- response time
- responsiveness
- latency
- throughput
- the load
- load sensitivity
- efficiency
- capacity
- response time
- the time it take to a system to process a request
- responsiveness
- the time that the system takes to acknowledge a request
- latency
- the minimum time that the system needs to perform any task even if the task has nothing to be done
- throughput
- how much work can be done in a given amount of time
- load
- how much strain are put on the resources (for example how many users ( or processes ) are logged on (or running)
- load sensitivity
- an indicator of the variation in the response time depending on the load
- efficiency
- the efficiency is the performance (i.e, either throughput or response time) divided by resources
- capacity
- indicate the maximum effective throughput or load for the system
Thursday, 2 October 2008
What's the ack is that ?
Well! as I was looking at the programs I was updating on my fedora 9 box. I fell upon the program ack. I had no idea what it was so I ran rpm -qi ack... And it told me that it was a kind of grep replacement. It seems to be faster than grep in most cases. Some people tried it out it seems. Though some other seem to disagree.
One of the advantage of ack is that it allows to select more easily the type of files to be checked. So I guess I will have to take a look at it....