Inzwischen steht mein Kopf eher schon beim nächsten Test. Trotzdem wollte ich
noch von meinen Prüfungen im September abschließend berichten:
Mein Gefühl hat sich bestätigt, ich habe beide Prüfungen bestanden. HSK1 sogar
ohne Fehler. Die Ergebnisse waren ab dem 16. Oktober online einsehbar. Hierzu
kann man sich einfach mit den persönlichen Zugangsdaten auf der Seite anmelden
über die der Test auch gebucht wurde und sieht dann
die Ergebnisse oder man kann auch ohne Login dort die Ergebnisse abfragen,
wenn man seinen Namen und die Admission-Ticket-Nummer eingibt. Am 9. November
war es dann soweit und ich konnte auch meine Zertifikate im Konfuzius Institut
München abholen.
Letzten Sonntag habe ich mein Chinesisch testen lassen. Ich hatte mich zu den
Prüfungen HSK 1 und HSK 2
angemeldet. Ursprünglich
wollte ich nur die niedrigste Stufe HSK 1 schreiben und meldete mich
entsprechend an. In der Vorbereitung merkte ich jedoch schnell, dass die
Anforderungen hierfür nicht so hoch waren wie ich dachte. Zwar gab es noch ein
paar Vokabeln, die ich nicht kannte, aber im Großen und Ganzen hatten wir den
Stoff längst im Unterricht behandelt.
Dann laß ich beim Konfuzius Institus München,
dass es auch möglich ist sich für zwei benachbarte Prüfungslevel gleichzeitig
anzumelden. Die Prüfungszeiten sind so geplant, dass dies geht. Das klang gut:
für HSK 1 konnte ich mich eh nicht mehr abmelden und ich könnte parallel
versuchen, ob ich nicht schon die nächste Stufe schaffe. Gedacht getan, ich
meldete mich auch hierfür an.
Meine Vorbereitung habe ich entsprechend auf die 300 Wörter/Zeichen des HSK 2
ausgedehnt und mich mit der erweiterten Gramatik beschäftigt. Ich fühlte mich
bis zum Tag davor recht gut vorbereitet. Dann allerdings machte ich
Probeaufgaben zum HSK 2 und war nicht mehr ganz so sicher. Die Sprache in den
Höraufgaben war doch deutlich schneller als ich es gewohnt war. Die Beispiele
in den Textaufgaben teilweise schwer verständlich für mich. Nach der
Auswertung der Probeaufgaben dachte ich: okay, es könnte doch knapp werden.
Sonntag begann mein Prüfungstag zuerst mit HSK 2 um 10:00 Uhr, Prüfungsdauer
etwa eine Stunde. In der Prüfung kam dann schnell das gute Gefühl zurück. Die
Audiotexte waren langsamer und besser verständlich als das was ich von den
Probeaufgaben kannte. Bei den meisten Aufgaben bin ich ziemlich sicher, dass
ich sie richtig gelöst habe. Die Antwort ist fast immer eine
Multiple-Choice-Auswahl und die falschen Möglichkeiten waren meist eindeutig
falsch – mir schienen keine Gemeinheiten eingebaut. Auch die Textaufgaben habe
ich ganz gut verstanden.
Am Nachmittag stand dann noch HSK 1 an. Diese Prüfung dauert nur etwa eine
Dreiviertelstunde. Nach der guten Erfahrung im schwereren Niveau hatte ich keine
Sorgen vor dieser Prüfung. So war es dann auch: Ich habe diese wirklich als sehr
einfach empfunden. Ich hätte mich wohl geärgert, wenn ich nicht auch an HSK 2
versucht hätte. Jetzt muss ich etwa einen Monat warten, dann kann ich meine
Ergebnisse abrufen.
Cuando hablo con otros estudiantes de idiomas, es una pregunta muy común.
También en los libros de aprender otra lengua siempre hay un capítulo en el que
se habla de las lenguas que se habla y porque se las aprende.
Yo siempre nota que la lengua que tiene más impresión a la persona de enfrente
es el chino. Para la mayoría de personas aquí en Europa todavía parece algo
imposible para aprender. Piensen que se tiene que ser un genio ya si se lo
intenta. La verdad es diferente, no es tan complicado. Pero es otro tema, quizás
escriba de eso en otro momento.
Lo más especial normalmente es la razón de aprender el chino. En general es nota
en las clases que cada lengua tiene un público diferente. Por ejemplo mis
compañeros en las clases de neerlandés lo aprendieron porque son artistas y
quisieron trabajar en Ámsterdam o porque tuvieron novio neerlandés. Al contrario
en las clases de español una razón muy común es el turismo. España es un destino
de vacaciones muy popular.
Si alguien me pregunta por qué aprendo el chino normalmente sólo contesto que es
por la escritura. Eso es verdad, pero no es la verdad completa. Claro que los
signos chinos son bonitos y a mí me gustan también. Pero la belleza no es mi
razón. Hay algo diferente que tiene que ver con los signos también.
Todo ya empezó en el año 1996. Fui el año en que me inscribí a la universidad de
Stuttgart. Por mis estudios allí estuve en la biblioteca universitaria cada unos
días. No sólo me interesaban los libros de las ciencias físicas (mi asignatura
en aquella ocasión) pero también los de informática. En esa sección de la
biblioteca había un libro en dos tomos: Unicode Standard: Worldwide Character
Encoding, Version 1.0.
Suena aburridísimo, ¿no? Pero no para mí. En nuestros días es el estándar
habitual para ser capaz de representar todos los idiomas en los ordenadores al
mismo tiempo. Es un presupuesto para que WhatsApp funciona sin problemas y
sin límites en todo el mundo.
Pero entonces fue muy moderno. La realidad en 1996 fue que se tuve que
seleccionar una «code page» (página de código) en la instalación de Windows.
Después se pudo escribir bien en una región del mundo, pero no fue posible
escribir en lenguas muy distintas en el mismo ordenador.
Los dos tomos del estándar Unicode contienen casi sólo tablas de carácteres y
un número que represente ese carácter en el ordenador porque dentro de un
ordenador sólo hay números. Además, había unas páginas en que se habló de los
problemas adicionales en producir software plurilingüe. Depende de la escritura
se escribe en direcciones diferentes, hay espacio entre palabras y se cambia la
línea sólo allí o se puede cambiar la línea a cualquier posición, es posible
que letras cambian su aspecto en función de la posición dentro una palabra o
dependiente de las letras vecinas y mucho más. Eso me desengañó que producir
software para el mundo no sólo requiere traducir todos los textos, se tiene
que considerar mucho más.
Probablemente si tú vives en Europa ya notaste algunas de eses problemas:
software en que la semana empieza el domingo (en vez de lunes), en
que una dirección requiere que se inserta un estado o números de teléfono que
tienen que tener exactamente diez cifras. Probablemente el software estaba
producido en los E.E.U.U. Para estadounidenses todo eso parece normal,
no piensan que pueda ser diferente en otro país.
Yo quise ser diferente, especialmente hoy trabajando en el sector informático
profesionalmente. No es posible evitar todos los problemas, pero quiero que
considere lo más posible. Por eso a mí me parece que tengo que trabajar con
el software que yo produzco y con software en general en idiomas diferentes.
Por eso yo busqué una lengua muy distinto, para practicar pensar de software
en una forma muy diferente. Y eso es el aspecto de que yo hablo cuando digo que
mi razón para aprender el chino es la escritura.
Solo hay unas pocas clases más antes del fin del semestre en mi escuela de
la noche. Por eso pienso mucho como continuaré el semestre que viene. En
general últimamente he notado cada vez más que quiero aprender con más velocidad.
Esto noto especialmente en portugués y chino. Actualmente puedo seguir en
las clases sin practicar en casa. No me parece bien. A mí me parece importante
conseguir un nivel comunicativo lo más rápido que posible. Si se tiene ese
nivel se aprende una lengua casi sin hacer nada, solo se tiene que hablar con
amigos y personas interesantes.
En portugués una solución se ha resultado automáticamente. La escuela
Volkshochschule no ofrece un curso a continuación del actual. Ya en este
curso solo somos el mínimo de estudiantes. Por eso hace unas semanas hablamos
en la clase como podíamos continuar. Buscamos curso adecuado para cada
estudiante. Para mí significa que voy a omitir las clases del último quinto
del libro actual y ya voy a empezar las clases de B1. Espero que sea nueva
motivación para mí. No creo que tenga problemas porque ya aprendí todas las
palabras del libro en el invierno y no es mucho gramática que aún no sé. Voy
a repasarla antes del semestre nuevo en octubre.
Más difícil es el planeamento en chino. Los cursos tienen velocidades diferentes
pero en el programa de la escuela no se informan sobre ese aspecto. Por eso
hablé con mi profesora, mi escuela actual y el Instituto Confucio.
Afortunadamente todos entendieron muy bien y me ayudaron mucho. Por eso ahora
tengo unas opciones para elegir. Básicamente tengo que decir si quiero omitir
clases o no y con que velocidad quiero continuar. Si cambiaré la escuela
también tendré que cambiar el libro. Por eso ya empecé a praticar con el
otro libro también. Pero todavía no he decidido que haré. Depende de la
programación final en las escuelas. Aún no sé los días de todos los cursos.
De una u otra forma no tendré clases normales en agosto. Por eso para ese
mes me inscribí a un curso intensivo de arender japonés. Espero que aprenda
algunos principios básicos de esta lengua que siempre me ha interesado.
This is the first book on Haskell, that really made me want to read it.
I had it with me as an e-book on my vacations. I couldn't stop reading
it before I finished. It is a very good introduction to the basics of
the Haskell programming language. It even contains an understandable
explanation of the infamous monads. (Side note: they are a very simple
concept, and you shouldn't fear them.)
For me this book was the right amount of introduction to get me started.
Everything else I think I will be able to learn while using the language.
Wenn ich auf ein Meetup gehe, lautet die erste Frage immer „was machst du so?“.
Beginnt das typische Gespräch hingegen mit „benutzt du Clojure in der Arbeit?”,
bin ich auf der :clojureD in Berlin gelandet.
Am 24. Februar war ich auf meiner ersten Clojure-Konferenz. Nach einem Treffen
der Munich Clojurians war das
erst mein zweites Zusammentreffen mit anderen, die der Begeisterung dieser
Programmiersprache erlegen sind.
Es war ein tolles Erlebnis. Auf keiner Konferenz bisher hatte ich so den
Eindruck, dass alle einfach ein rießen Interesse an Softwareentwicklung haben
und alle dafür brennen neue Gedankenanstöße aufzunehmen. Keiner der einfach
nur seine Arbeit erledigt bekommen will. Ich hatte das Gefühl wirklich unter
den Besten zu sein, die es in meinem Beruf gibt.
Wie schade, dass anscheinend trotzdem das Potential der Sprache so oft noch
nicht genutzt wird. Obwohl ich im
Cognicast oft genug auch schon die
andere Seite gehört habe: Firmen, die darüber klagen zu wenige
Clojure-Entwickler zu finden. Die Antwort auf der :clojureD war leider öfters:
„nein, in der Arbeit nutze ich kein Clojure“.
Uma vez por ano reviso que aprendi nas minhas aulas de línguas. O mais notável
este ano é que comecei a aprender Português em Agosto. Durante quatro semanas,
eu tinha 36 horas de aulas intensivas. Gostei muito de aprender uma língua nova.
É bem aprender algo mais fácil que o chinês. Lamentavelmente não posso continuar
assim. Por um lado porque não há ensino intensivo depois de os capítulos de
verão. Por outro lado também tenho aulas no chinês e espanhol durante o
semestre.
No espanhol fiz o exame DELE B2. Suponho passei todas as partes mas até agora
não tenho nenhum resultado. Espero que me comuniquem-o no Janeiro. Segundo o meu
sentimento tive menos problemas que no nível B1 um ano e meio atrás.
Especialmente foi mais fácil entender todos os textos na parte compreensão oral.
Também continuei as minhas aulas de chinês. Todo é um pouco mias lento. O idioma
não é semelhante com os idiomas europeus e se tem de aprender as letras também.
Apesar disso gosto de aprender esta língua cada vez mais. Começo a reconhecer
letras e palavras no meu quotidiano.
Provavelmente este texto contem muitos erros. É a minha primeira vez que escreve
um artículo português para a internet. Mas o mais importante para mim é provar
expressar algumas coisas básicas na minha língua nova.
I like the books from O'Reilly. For many years I've seen the ad on the
backside advertising Safari. Sure, I checked out what this is, but I
wasn't really interested to have a digital copy for a limited amount of time.
I already had the print version.
I love to read real books made of paper. I use highlighters and add
notes, while reading. I make the book mine. And after finishing the book, I can
place it on my bookshelf, to show the books I like to others. This doesn't work
with my Tolino e-book reader. While I have this device,
I still buy most books as a paper copy.
Some days ago, I heard of Safari again on a podcast. I thought, that at least I
should check it out. It's not only O'Reilly books anymore and it includes videos
and other podcasts as well. There is a free 10 days trial, so I did not have to
invest more than some of my time.
It didn't take long and I was captivated by Safari. I noticed how cool it is to
checkout nearly any computer book I am normally reading. Curious about
something? I can just log in and start reading. It didn't take long, that I
had a regular, payed subscription …
The price? It's quite expensive. I have to pay around 40 € per month (including
VAT). I saw several people on the net comparing this to about two e-books a
month. This comparison doesn't work for me: I still want to read paper books.
For me Safari is a tool to fossick for new content.
Another big down-side of Safari is, that you have to read it on the web, or with
an Android or iOS app. This limits the user to read on devices with a screen not
optimized for reading. You cannot read using an e-book reader with an e-ink
display and much less weight per screen size.
For the moment I am still enjoying the service as a big index to books I might
been interested in. To bad, that there is no offer for people using it and
buying the books at the same time. As a Safari subscriber I'd like to get a
discount on the books I buy. Or they could offer some free days for every bought
paper book.
RxJava is an implementation of “Reactive Extensions” (Rx) in Java. But what is
this? Originally Rx are an implementation of Microsoft to address the
increasing complexity of software. It is a model to build large scale
asynchronous service architectures.
Another company that has to be mentioned is Netflix: they implemented the
Rx in Java which resulted in RxJava.
On the programming side Rx looks very similar to how streams
(java.util.stream.Stream) work. The main difference in my opinion is that
streams are pull and lazy. They produce only as much data as someone is reading
from them. RxJava on the other side is more push style. The source of data is
pushing events through a pipe of operators similar to what you know from streams
(filter(), map(), and so on) to the sink. And as I know from this book, Java
streams are the wrong tool to parallelize anything that is not CPU bound–like
network requests. There reason for this is, that (parallel) streams are executed
on a thread pool that is shared with several other features of Java. This thread
pools is limited to have only that many workers as the system has CPU
cores. Therefore this pool gets exhausted very soon, when threads in it get
blocked by I/O operations. Any thread waiting for an I/O operation effectively
results in a processor core not used by your program.
RxJava on the other hand is not limited to a fixed thread pool. Any source
(Observable) and sink (Subscriber) of data can be bound declaratively to
user defined Schedulers. As well as Rx favours a model in which I/O
operations are done asynchronously and non-blocking. Therefore resulting in a
need for much fewer threads. In a traditional model of using one thread per
network connection, threads become very soon the first thing that limits
scalability.
What is really great about this book
The best part of this book for me were the reflections on Relational Database
Access in chapter 5. While as a developer you might be tempted to convert
everything to the reactive model, this part of the book shows where it doesn't
make sense to do so.
By converting the access to your relational database to an asynchronous model
you won't gain anything. Whatever you are doing on the client side, let's say
for example your PostgreSQL will run all of your concurrent requests in
different processes. This results in a noticeable limit on the number of
parallel queries you're able to run. You cannot lift this limit by becoming
asynchronous on the client side.
ZooKeeper is a component that facilitates building distributed applications.
It is:
a distributed hierarchical key value store,
chooses C(onsistency) and A(availability) in the CAP theorem,
works best on read-dominated workloads (< 10% writes),
keeps content in the memory of each instance, and
expects the data stored on each node (key) to be small (maybe several KiB).
The data managed by ZooKeeper is presented in a file system like manner with
directories and files whose names get separated by slashes (/). The difference
to a file system is, that you can store information in the directories as well.
Or seen differently: directories are files at the same time. Based on this
simple abstraction, users of ZooKeeper can implement things like leader election
in a cluster of software instances.
The book by Flavio Junqueira and Benjamin Reed
The book is written by two experts of ZooKeeper, that know how it works
internally and what are the pitfalls in which the users can trap. Flavio
Junqueria is one of the ZooKeeper's contributors. Benjamin Reed helped to
start ZooKeeper.
I was reading the book, because I is the basis for other distributed software
systems I made myself familiar with the last months, including Akka and Mesos.
I always think, that it's a good idea to know at least one layer below the
layer I am actually using. I allows me to understand better what I'm doing
and how to do it right.
The book starts by giving an overview of the concepts and basics used by
ZooKeeper. It introduces an example master-worker application, that is
implemented using different languages afterwards:
First it gets implemented using the command line client of ZooKeeper in
a shell-script like way.
Then it gets implemented using ZooKeeper's Java-Client-API.
Afterwards a third implementation is made using the C client API.
As a fourth implementation it gets implemented using Curator, a high level
API for ZooKeeper.
Other topics discussed in the book are:
Common errors in using ZooKeeper (and how to prevent them)
How ZooKeeper works internally (with references to the source code and
the protocol used by it).
How to administrate a ZooKeeper cluster (configuration, what kind of
hardware is required).
I think, that this book is a highly valuable resource for anybody working
with ZooKeeper either directly or indirectly by using some other software,
that uses it.