This week my wife was described to me as a "sweetheart", by someone who has never met my wife. Just from me describing her, and most importantly, from describing what she has done yesterday, Friday November 21.
At this moment there is an action in Belgium from "The Association Against Cancer" in collaboration with Pantene:
Now you have to know that in Dutch, "hair" is the same word as "her". What this action does is ask women to cut their hair (minimum lenght 20 cm), to donate to a foundation that creates wigs for women who have lost their hair due to chemotherapy.
And my wife did that! She went to the hairdresser yesterday and had her long hair cut (it was more than 20 cm), and now she is sporting a new, and wonderful, short haircut.
Needless to say that I think this is a wonderful thing to do, and I am very proud of her. The thought that a woman will enjoy the hours of hair caressing on the exact same hairs is really nice.
If you are a women, live in Belgium, and have long hair, I would encourage you to think about this. Your hair will grow back, you have the opportunity to go for a new style, and most importantly, you can help out someone who is going through a terrible time.
Join Apache in creating Apache Meet Up Beijing on Friday, 5 December. We’re inviting local open source developers to share their skills and knowledge during the meet-up. Two hours of the day will be dedicated to 20 minute sessions presented by local open source experts. If you would like to participate, please send us your idea.
Help make BarCamp Beijing happen
Experts of all talents and stripes, not just open source software developers, are invited to participate in this year’s BarCamp Beijing to be held the day after the meet-up on Saturday, 6 December. Visit the BarCamp wiki for more information on how to participate. All are welcome!
Location
Intel China Research Center Ltd 8F, Raycom Infotech Park A No. 2, Kexueyuan South Road, Zhong Guan Cun, Haidian District Beijing, China 100190
Jim and I went to fuzhou software park and talked with the people who were interested in the open source technical community, everybody introduced and got known each other, we talked and shared different thoughts.That was a great day! Looking forward to seeing them to create the OpenSolarisuser group soon.
ECM Touchstones: The Amazon Exclusive Digital Sampler
Absolutely awesome sampler album from ECM, including Pat Metheny, Keith Jarrett, Chick Corea and others, and it's a free download of MP3s. Instant win for anyone able to use the Amazon US MP3 store.
Wikimedia Selects Sun Microsystems
Seems Sun's storage is a big hit with the new wave of web businesses with deep storage needs. Some good news at least...
Apologies for the quiet week, I have been fighting a flu-ish cold when I've not been in long, depressing training sessions.
2008 Sun Tech Day is coming to beijing during11/21-11/22! I participated Sun Tech Day since 2005, this is the third year to me to be there! It was really amazing to see so many people here, I thought there were thounds of people, in a word, a lot! :) See some pics from the venue:
As part of a database tuning effort you increase the SGA/PGA sizes; and Oracle greets with an ORA-27102: out of memory error message. The system had enough free memory to serve the needs of Oracle.
SQL> startup
ORA-27102: out of memory
SVR4 Error: 22: Invalid argument
Diagnosis
$ oerr ORA 27102
27102, 00000, "out of memory"
// *Cause: Out of memory
// *Action: Consult the trace file for details
Not so helpful. Let's look the alert log for some clues.
% tail -2 alert.log
WARNING: EINVAL creating segment of size 0x000000028a006000
fix shm parameters in /etc/system or equivalent
Oracle is trying to create a 10G shared memory segment (depends on SGA/PGA sizes), but operating system (Solaris in this example) responded with an invalid argument (EINVAL) error message. There is a little hint about setting shm parameters in /etc/system.
Prior to Solaris 10, shmsys:shminfo_shmmax parameter has to be set in /etc/system with maximum memory segment value that can be created. 8M is the default value on Solaris 9 and prior versions; where as 1/4th of the physical memory is the default on Solaris 10 and later. On a Solaris 10 (or later) system, it can be verified as shown below:
% prtconf | grep Mem
Memory size: 32760 Megabytes
% id -p
uid=59008(oracle) gid=10001(dba) projid=3(default)
% prctl -n project.max-shm-memory -i project 3
project: 3: default
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.max-shm-memory
privileged 7.84GB - deny -
system 16.0EB max deny -
Now it is clear that the system is using the default value of 8G in this scenario, where as the application (Oracle) is trying to create a memory segment (10G) larger than 8G. Hence the failure.
So, the solution is to configure the system with a value large enough for the shared segment being created, so Oracle succeeds in starting up the database instance.
On Solaris 9 and prior releases, it can be done by adding the following line to /etc/system, followed by a reboot for the system to pick up the new value.
set shminfo_shmmax = 0x000000028a006000
However shminfo_shmmax parameter was obsoleted with the release of Solaris 10; and Sun doesn't recommend setting this parameter in /etc/system even though it works as expected.
On Solaris 10 and later, this value can be changed dynamically on a per project basis with the help of resource control facilities . This is how we do it on Solaris 10 and later:
% prctl -n project.max-shm-memory -r -v 10G -i project 3
% prctl -n project.max-shm-memory -i project 3
project: 3: default
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.max-shm-memory
privileged 10.0GB - deny -
system 16.0EB max deny -
Note that changes done with prctl command on a running system are temporary, and will be lost when the system is rebooted. To make the changes permanent, create a project with projadd command as shown below:
Anonymous Bob suggested the following settings for Oracle RAC in the form of a comment for the benefit of others who run into similar issue(s) when running Oracle RAC. I'm pasting the comment as is (Disclaimer: I have not verified these settings):
Thanks for a great explanation, I would like to add one comment that will help those with an Oracle RAC installation. Modifying the default project covers oracle processes great and is all that is needed for a single instance DB. In RAC however, the CRS process starts the DB and it is a root owned process and root does not use the default project. To fix ORA-27102 issue for RAC I added the following lines to an init script that runs before the init.crs script fires.
# Recommended Oracle RAC system params
ndd -set /dev/udp udp_xmit_hiwat 65536
ndd -set /dev/udp udp_recv_hiwat 65536
# For root processes like crsd
prctl -n project.max-shm-memory -r -v 8G -i project system
prctl -n project.max-shm-ids -r -v 512 -i project system
# For oracle processes like sqlplus
prctl -n project.max-shm-memory -r -v 8G -i project default
prctl -n project.max-shm-ids -r -v 512 -i project default
So simple yet it took me a week working with Oracle and SUN to come up with that answer...Hope that helps someone out.
Bob
# posted by Blogger Bob : 6:48 AM, April 25, 2008
New public API was recently introduced in NetBeans. Its name is External Execution Support and it provides the necessary support to execute external program and/or to read the output from process streams (as well as other sources of data). This post focuses on the second and less advanced part of the API usage - reading and processing data from various sources in a convenient way. This is in fact introduction of the basic API concepts. You will see more useful and advanced usages in the next post.
The main purpose of this API is to process growing streams or files (this will became more obvious in the second part). For this reason one important thing to know is that the read cycle does not exit when the stream starts returning EOF. Lets start with an example. We suppose you have a streams as a source of data and you want to parse the lines and print them to system output.
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.netbeans.api.extexecution.input.InputProcessor;
import org.netbeans.api.extexecution.input.InputProcessors;
import org.netbeans.api.extexecution.input.InputReaderTask;
import org.netbeans.api.extexecution.input.InputReader;
import org.netbeans.api.extexecution.input.InputReaders;
import org.netbeans.api.extexecution.input.LineProcessor;
public final class StreamExample1 {
private final ExecutorService service = Executors.newCachedThreadPool();
public void execute(InputStream stream) {
InputReader reader = InputReaders.forStream(stream, Charset.defaultCharset());
LineProcessor lineProcessor = new LineProcessor() {
public void processLine(String line) {
System.out.println(line);
}
public void reset() {
}
public void close() {
}
};
InputProcessor inputProcessor = InputProcessors.bridge(lineProcessor);
InputReaderTask task = InputReaderTask.newTask(reader, inputProcessor);
service.execute(task);
}
public void finish() {
service.shutdownNow();
}
}
Now imagine what would you have to do without this API. To start a thread, read characters from the stream, parse the lines (your self or with help of java.io.BufferedReader) and process them. When you use the API you have it all for free - the only important part is the code saying what to do with parsed lines.
As you see from the sample the abstraction of data source is InputReader. The custom processing is provided as implementation of InputProcessor or LineProcessor depending on your needs (InputProcessor handles characters, not waiting for the whole line). InputReader and InputProcessor are then passed to factory method of InputReaderTask. InputReaderTask implements Runnable and Cancellable so you can pass it to ExecutorService, run in dedicated thread or invoke run method directly. Once the run() method of the InputReaderTask is invoked it is reading the data from the reader processing them with processor until it is cancelled.
The task can be canceled in two ways. You can either interrupt the thread or explicitly call the cancel() method. The latter is useful when you are using the third party code which reacts to interruption in undesirable way (throwing exception, immediately terminating etc.).
To make things easier API also provides several useful factory classes for InputReader, InputProcessor and LineProcessor [put javadoc links here]. If you want to print output to NetBeans' output window you have even greater posibilities. API provides four factory methods for InputProcessor and LineProcessor writing to the output window. Two of these factory methods accept LineConvertor through which you can change the printed lines and register listeners to them. Enough talking; lets see another sample. It's doing the same thing as the first one however it writes lines to the output window and whenever there is a http URL it provides a listener that will open a browser. Too complicated? I don't think so - see it for yourself.
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.netbeans.api.extexecution.input.InputProcessors;
import org.netbeans.api.extexecution.input.InputReaderTask;
import org.netbeans.api.extexecution.input.InputReader;
import org.netbeans.api.extexecution.input.InputReaders;
import org.netbeans.api.extexecution.input.LineProcessor;
import org.netbeans.api.extexecution.print.LineConvertors;
public final class StreamExample2 {
private final ExecutorService service = Executors.newCachedThreadPool();
public void execute(InputStream stream, InputOutput io) {
InputReader reader = InputReaders.forStream(stream, Charset.defaultCharset());
LineProcessor lineProcessor = LineProcessors.printing(io, false,
LineConvertors.httpUrl());
InputReaderTask task = InputReaderTask.newTask(reader,
InputProcessors.bridge(lineProcessor));
service.execute(task);
}
public void finish() {
service.shutdownNow();
}
}
The API is generally usable, but its main purpose is to be used for continuous processing of stream and files (yes, files are supported as well). In this blogpost I presented just the first (less interesting part) and I introduced some key interfaces. If you would like to use it to support external process execution wait with that for the next post which will introduce the part of the API designed specifically for this.
Me invitaron al Simposium JAFoE 2008 que se efectuó entre el 17 y 19 de Noviembre en Kobe, Japón y ahora me estoy yendo para California. No había tenido tiempo para bloggear pues he andado corriendo pero dado que me atrasaron el vuelo en 4 hrs. no me queda más remedio que ponerme al día con los emails y demases. Por lo menos ofrecen Internet gratis desde el aeropuerto Kansai en Osaka así que me quedaré conectada por unas horas.
El simposium es organizado por la Academia Nacional de Ingeniería (NAE) de los EEUU y tiene como finalidad juntar destacados ingenieros de los EEUU y Japón. Este año tocó hacer la reunión en Kobe y la experiencia fue fantástica. Eramos cerca de 60 participantes, la mitad de EEUU y la otra mitad locales. Cuatro fueron los tópicos que se trataron: (1) Avances en la instrumentación y automatización para biotecnología, (2) El futuro del modelamiento de sequencias, (3) Enegía alternativa y (4) Tecnología avanzada de sensores. Cuatro presentaciones se realizaron por cada tópico, dos por parte de los Japoneses y dos por parte de los Americanos.
Todos los temas fueron muy interesantes aunque no directamente relacionados con mi área de investigación. La idea de este tipo de conferencia es permitir la interacción interdisciplinaria para buscar soluciones a los problemas vigentes. Fue interesante como gente de distintas areas ingenieriles pudieron interactuar y opinar con respecto a tecnologías que tradicionalmente no se aplican en sus áreas.
Nos llevaron a ver el sincrotón de radiación más grande del mundo, SPring-8. El lugar permite la emisión de rayos de onda corta (¿? no estoy muy segura si asi se dice en Español), los cuales permiten el estudio de varios efectos en diferentes ciencias. Mejor leer la página de web para obtener más información.
En resumen, la experiencia fue genial. Gasté dos días y medio en Kyoto turisteando y la ciudad es increible con tantos templos. Durante la segunda guerra no la bombardearon asi que los templos estan intactos e increiblemente mezclado con la arquitectura moderna de la ciudad.
Sun Campus Ambassadors are students that work for Sun as interns to educate students about the benefits of open source technologies from Sun. Last year, Zhiqi Tao served as our Campus Ambassador at the University of Melbourne. After graduation, Tao came to work for Sun as a Support Engineer focusing on Sun's SW stack for high performance computing (HPC).
I learned of Tao's tutorial when he emailed the current generation of Campus Ambassadors to let them know about this great new student resource. One of the best aspects of the Campus Ambassador Program is the sense of community and mutual support amongst the more than 500 students participating in the program. So it was very gratifying to see the Campus Ambassador alumni continue to participate and support our community.
US $3.00 End Date: Saturday Nov-22-2008 3:54:50 PST Buy It Now for only: US $3.00 Buy it now | Add to watch list
Random News Feed
Teen Facts - Hormones Animated educative film showing a scientific experiment. For three minutes two kids are exposed to ten years of puberty. Girls Rodeo A great battle wearing just bikinis and sitting on a special chair: the rodeo boy. Asimo's revenge Honda's Humanoid Robot at CES 2007 Las Vegas. Second Life: Room 101 vs. Anshe Chung Anshe Chung, the most sucessful company in Second Life, is 'nquot;attacked'nquot; by a storm of penis during an interview. monoface Click the mouth, nose, head and each eye to create a different monoface. And keep clicking. There are 759,375 possible faces. Crazy Cruise Use the left mouse button to control the squirrel. See how far you can go!