Recent Content
When programming a single page application, especially if it is designed to
run within different time zones, you often use UTC on the REST interfaces to
the backend and let the single page application handle the time zone
calculation.
When I first tried to implement this in Elm, I first tried to do this using
the tools at hand when using the standard package for time handling: elm/time
:
On the start-up of my SPA I send a Cmd
to the Elm runtime, requesting that it
generated a SetTimezone
event with the local time zone of the user (here
).
getTimezone : Cmd Msg
getTimezone =
Task.perform SetTimezone Time.here
When we give the Elm architecture this command, we get back this message:
type Msg
= SetTimezone Time.Zone
Then I stored the provided Zone
in my model and used it within a helper
function to format timestamps:
formatTime : Zone -> Posix -> String
formatTime zone timestamp =
let
hour =
toHour zone timestamp
minute =
toMinute zone timestamp
in
(padLeft 2 '0' <| fromInt hour) ++ ":" ++ (padLeft 2 '0' <| fromInt minute)
formatTimeOfIsoTimestamp : Zone -> String -> String
formatTimeOfIsoTimestamp zone isoTimestamp =
toTime isoTimestamp |> Result.map (formatTime zone) |> Result.withDefault isoTimestamp
The problem with this approach is, that actually here
does not tell the user's
actual time zone, that would take into account the shifts between standard time
and daylight saving time, but just something generic for the current offset to
UTC. So the
time zone we get will never be Europe/Berlin
but Etc/GMT+1
or Etc/GMT+2
depending on whether we currently have standard time or daylight saving time.
The problem with that is, that you can display “current” timestamps with that
zone, but it fails for example as soon as you try to show timestamps within the
winter while it is still summer.
The solution to this is to use the functionality of justinmimbs/timezone-data
.
Instead of using the here
Task
as in the code above, this Elm package
provides a different task, to get the time zone of the web browser the
application is running in:
getZone
The function, that generates the Cmd
to request the time zone gets this:
getTimezone : Cmd Msg
getTimezone =
Task.attempt SetTimezone TimeZone.getZone
With this change, also the definition of the SetTimezone
message changes a
bit as the retrieval of the time zone may fail:
type Msg
= SetTimezone (Result TimeZone.Error ( String, Time.Zone ))
When we handle the SetTimezone
message we can unwrap this result and
use a default zone, if the correct zone couldn't be determined:
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case ( msg, model ) of
( SetTimezone result ) ->
let
zone = case result of
Ok ( _, timezone ) ->
timezone
_ ->
TimeZone.europe__berlin()
in
Vor eineinhalb Jahren schrieb ich, als ich gerade mein HSK2-Zertifikat beim
Konfuzius Institut in München abgeholt hatte. Heute nun habe ich wieder ein
Prüfungsergebnis bekommen: die HSK4-Prüfung vor zwei Wochen habe ich
bestanden. Das ist nun zwei Stufen höher und man merkt, dass die Stufen
zwischen den Prüfungen immer größer werden: von HSK2 zu HSK3 brauchte ich 9
Monate, von HSK3 zu HSK4 war es schon ein Jahr. Die Menge der notwendigen
Vokabeln verdoppelt sich auch jedes Mal, von der Gramatik ganz abgesehen.
(Wikipedia: Hanyu Shuiping
Kaoshi)
Die Prüfungen haben sich für mich als gute Methode herausgestellt
mein Lernen voran zu treiben. Es ist Ziel, Motivation und ein Paket an
Anforderungen, die ich mir vornehme.
Nächstes Ziel nun also: HSK5 ... irgendwann im nächsten Jahr. Aber die
Vorbereitung beginnt jetzt und das ist ab sofort meine Motivation.
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.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
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.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
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.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »
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.
The book is available in print at your preferred book shop, or
can be read online and free of charge.
Links to resources
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.
Feliz ano novo!
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.
weiterlesen | read more | lee mas | lê mais | 閱讀更多 »