Users reported that zkanji crashed after they updated to v0.73 from an earlier version. The current solution is to return to the previous version and keep using that until I release v0.731. This of course means that you will have to use the old data as well, which could mean that you will lose all data that you changed since you updated.
Only those users are affected, whose program data matches all of the following criteria:
- There are items added to the long-term study list.
- The dictionary was updated after the program update.
- Words were in the long-term study list before the update, that are missing in the updated dictionary.
- You either use the main English dictionary for study OR you use a user dictionary for study and the previous points are about that dictionary.
A little explanation for the fourth point is needed. You probably updated to the latest English dictionary if you are using v0.73, but if you were only using the long-term study in another language and that language wasn’t updated, the bug won’t show up. If you use a user dictionary, but haven’t received an update for that dictionary from some other user, there won’t be any problems. In case you use the English dictionary and the long-term study list didn’t contain anything which has no match in the updated dictionary, the bug won’t cause problems.
As far as I know, v0.73 is safe to use. Only the update process is problematic and only if all of the listed points apply to you.
Update: I have fixed the program and will upload it as v0.731 in a few days after a little testing.
(This is not the release yet.)
Here is the current “changes” for zkanji v0.719 compared to v0.717. I’ll update this list with dates as I’m fixing bugs and adding some small features I wanted before the next release. Take this as a preview of what to expect soon:
– Checking dictionary changes on startup, showing dialog if word changes affect the user data and there is need for user interaction.
– Brand new dictionary export and import:
- Entries can be exported from selected groups, or from the whole dictionary.
- Both word and kanji group export/import.
- Expanding dictionary from exported word entries, adding missing entries and resolving meaning differences.
- Creating new dictionary from exported file, or completely replacing an existing dictionary.
- Importing kanji definitions to a user dictionary.
- Aborting the import leaves the dictionaries untouched. (Actually they will be reloaded.)
- Wakan word groups no longer supported. Import with a previous version of the program before update.
– There will be dictionary updates beside rare program updates. Automatically downloading new dictionaries.
– New example sentences data format independent from the dictionary version making it unnecessary to update it when the dictonary changes.
– Possibility to change words in the main dictionary:
- Add word not currently in the dictionary.
- Edit existing words.
- Revert edits to match the original dictionary, or delete added words.
- Dictionary updates don’t corrupt edits.
– Updated backup:
- User data backup at selectable intervals.
- Backups don’t overwrite each other.
- Old backup files are deleted after a number of days, which can be configured.
– The kanji, group or dictionary areas in the main window can be hidden by dragging the corresponding sizing bar near the edge of the window.
– Added katakana input to the kana edit box. Any syllable which contains an upper-case character will be converted to katakana.
– Added kana input for てゃ,てぃ,てぇ,てゅ,てょ and でゃ,でぃ,でぇ,でゅ,でょ. tha, thi, the, thu, tho and dha, dhi, dhe, dhu, dho.
– Tool windows, like the kanji information window, paint their border in different color when they are active.
– When changing the word filters window’s size, the controls area grows to fill the space.
– Scrollbar thumb size reflects size of word list/kanji list windows.
– Only real changes cause the user files to be saved to disk, instead of always saving everything when something changed or even after a dialog was shown.
– Capitalized first letter of words in menu items.
– Limited possible meaning count of words to 100.
– Word meanings can be reordered in the word editor dialog.
– It is not allowed anymore for a word to contain the same meaning twice. The word editor shows a message box when this happens.
– Updated the settings window. Moved text (number) input boxes from the middle of text to the end of lines for better compatibility with planned internationalization.
– Preventing changes to the data files while the settings window is open.
(05.10) – Example sentences file import from the Tanaka Corpus, if user can access data folder. (Requires admin privileges if program installed in Program Files.)
(05.11) – Switched from handling virtual key codes to characters where possible. Hopefully this will work for people not on QWERTY keyboards.
(05.12) – Custom textual data can be stored for dictionaries to be used for licensing information or list of authors. This information can be entered when creating a new dictionary or in the dictionary rename dialog.
(05.12) – The “dictionary stats” dialog has been renamed to “dictionary information”. Besides statistics, it also displays the custom information stored for each dictionary.
(05.12) – Changed most exclamation marks to full stop/period characters in message boxes for a friendlier interface.
(05.14) – Random selection in word groups’ word list control.
(05.14) – Added “Translate Kanji” menu item to the kanji information window popup menu.
Fixed: inserting invalid character for some roomaji combinations in the kana edit box. Namely any vowel version of vy, fy, wy and cy.
Fixed: minimizing and restoring the program while the handwriting recognizer window was active caused the recognizer window to appear without being connected to an edit box.
Fixed: the small pause button on the kanji information window stayed down indefinitely once it was pressed, even though the play or stop button was pressed too.
Fixed: access violation when multiple kanji are selected at the top and one is deselected at the middle with ctrl+left mouse button.
Fixed: pressing Ctrl+D in a kanji list with multiple kanji selected makes the list deselect all kanji, without leaving at least one selected.
Fixed: when trying to add new words to user dictionary, the add button stayed disabled even after filling in the meaning field. It only became enabled when changing something else.
Fixed: for some kanji where the KUN readings hanged over the bottom gradient in the kanji information window (i.e. 生), the readings hid the gradient with white background.
Fixed: labels for some word group options had the up/down resize cursor, and undefined behavior when clicking on them.
Fixed: typo in long-term study test window (“coldn’t”).
Fixed: memory leak when reading ini files.
Fixed: changing a font in the settings did not update the example sentences panel.
Fixed: not initialized an object which was holding points of strokes in the handwriting recognizer.
Fixed: access violation when trying to filter a word group’s word list in the groups window.
Fixed: Used == instead of = when finding the reading of kanji (furigana) in words. The position of kanji within a reading block was not set in many cases. The algorithm still worked but less reliably.
Fixed: accessing the group of a dictionary being deleted, which caused an index out of bounds error.
Fixed: not repainting the kanji list background when it was resized.
(05.09) Fixed: if a tool window (kanji info or clipboard viewer) was on screen when the main window was minimized, restoring the window caused the tool window to reappear with an unresponsive close button.
(05.09) Fixed: not hiding the kanji hint tooltip when the control it is shown for becomes hidden.
(05.13) Fixed: access violation when the example sentences panel listed sentences from a dictionary being deleted and the mouse moved over it.
(05.14) Fixed: not hiding the “Selected Text” row in the popup menu for a word’s selected part, when no items were available for it
Believe it or not, I haven’t been slacking off the past few weeks, though I haven’t been doing anything useful either. In its lifetime every project reaches a point, where the next big step requires fundamental changes in its inner structure. How it structures data, how it manages its windows etc. and zkanji is no exception. I have already made big changes in the program code before without any visible sign on the outside, but I hope it will be a bit different this time. First I start off with a big announcement.
I got rid of the multiple windows interface:
In its many early releases, the interface was divided to 3 separate windows, without the possibility to stick them together into a huge superwindow. I think I got the idea from the Delphi/C++Builder’s user interface of the time, that also had separate windows for everything. They changed that into a single window that I hated so much, I wanted to use the old idea somewhere. Probably. I can’t remember clearly but this must have been the reason. Anyway, as time went, I realized that many windows only make it difficult to move the program out of the way, so I finally gave in and created the current form of the user interface. This is it. I hope you didn’t expect anything fascinating.
If you are still using the interface with multiple windows, it’s time to get familiar with the single window version. I believe that there can’t be that many people like that so nobody will send hate mails.
Why change it if it works, you might ask. The answer is simple, it works seemingly, but the zkanji window was not shown in Flip 3D (the pretty program selector in Win7 that you can bring up with startkey+tab), and to change that, I had to select a single window to show, and with the 3 window interface, zkanji would have 3 taskbar buttons when it’s on the screen. Of course I could still keep the old interface without trouble, but it looks unprofessional and also I would have to keep managing 2 window modes in zkanji that I got enough of for some time now.
This is not the only reason to throw out the old interface though. “Ownership” of windows was not solved in a good way. (Windows manages a hierarchy of windows and in zkanji to keep dialog forms on top, I had to copy that behavior.) I don’t want to get into the details as it would be even more technical and nobody would want that. Maybe in a comment if anyone is interested.
I almost forgot the main reason! I wanted the default taskbar button behavior for zkanji, so you can minimize it without placing a silly icon in the tray, and in Win 7 there would also be a “tasks list” that behaves the same way the old popup menu for the tray icon did. And that’s only possible with a single window interface where the main windows don’t race for priority.
Shadow under tool windows:
This is just an experimental feature, but I wanted to do something like this for a long time now. In Vista/Windows 7 Aero, the default windows have this shadow effect that helps distinguish between the currently active windows, and it looks nice. The tool windows didn’t have such a shadow, because with programming magic I have replaced their borders to something custom that doesn’t take up so much useless space. It would be possible to draw custom borders and still have all effects that come with Aero, but that’s a huge work and the result would probably look quite different, as in that case I would not only have to make custom borders for my windows, but also custom drawn contents as well. (This is not entirely true, but it would still be messy.)
The solution I found was just as difficult though, but it was fun… in a way. These shadows are custom made, they look exactly like the shadows in Aero, and (you probably won’t believe it), they work in XP and probably Win 2000 as well. A huge waste of CPU time if you ask me, and as they are only an experimental feature, I’ll have them turned off by default. (You’ll be able to turn on shadows in the settings.)
To accomplish this I had to dive into the deepest pits of the windows API and also had to hack a bit around the component library I use. I had to fight strange monsters. (i.e. the “combo box items are lost forever when a window has a shadow” monster or the “program crashes randomly because of unknown problems” monster and even the “mysterious empty window appears in the alt-tab menu when it should be hidden and disabled” monster etc. etc.)
You would think that creating an installer is easy as pie, and it probably is if you have the right tools ready in front of you, but if you have to search for a solution it’s not that easy. As you can see from the screenshot, I still haven’t replaced the icon for the setup and it uses the default picture on the left which can also be replaced by something pretty. The setup I’ll use is the Nullsoft Scriptable Install System (or NSIS), and although the first line of the documentation states that “NSIS is a free scriptable win32 installer/uninstaller system that doesn’t suck and isn’t huge”, it does suck, but at least it doesn’t suck as much as its competition.
To be able to create a setup program with any freely available tool, you first have to write a “script” or an XML thingy (depends on what system you use). In any case, if you want more than the default “press the next button a few times, select a directory, then go!” kind of installer, and “press OK to uninstall” kind of uninstaller, for example you want the installer to recognize previous installs and offer “repair” among the other options and an uninstaller to ask nicely whether to delete user files, and, say, the user files can be at a few different locations, you are out of luck. In that case creating the setup program takes weeks in itself as the scripting languages are all counter-intuitive, lack features and force you to write assembly like code. So I gave up on the “repair” option.
For those who hate installers and don’t want their registry to be polluted with unnecessary data, I’ll continue to release the usual zip package as well.
I also wanted to write an auto updater that downloads new versions when found, but I’m not sure whether that will fit in the next release.
Apart from these pretty changes, I also worked on smashing bugs and silencing them forever. Just to mention a few:
- zkanji didn’t find main dictionary data when started in Vista/Win 7 from program files as simple user
- Initially unchecked written form of words that are usually written with kana only were also added to the long-term study list.
- Minimizing then restoring zkanji sometimes caused index out of bounds (-1) error and the program windows were not restored, just a big white blob showed.
- Access violation in the popup dictionary when “Paste from clipboard when activated” is turned on and the text in the clipboard is longer than 1023 characters. This resulted in the popup dictionary to stop searching.
- Access violation when first opening the stats window or choosing “generate word group” right at startup.
- Changing a kanji definition from the dictionary caused a stack overflow and an error message.
- Using the site manager in the settings caused access violation later.
Many of these could count as “critical” bugs, but as no real data loss occurs, the good old “restart the program” tradition, that is a trademark of Windows since its very beginning is followed.
P.S. I wanted to write a tutorial about how to create custom drawn shadow that looks exactly like the ones in Aero for programmers who might be interested, but as half of what I did is still a mystery for myself, I won’t act like I knew what I do.
P.S. II I still want to make the auto inclusion to the long-term study and an internationalized interface, but as I found so many interesting bugs I thought I should work on them instead, and got carried away with shadows on the way.
As usual many bugs only came to the surface after the release of v0.7. A new bugfix release named v0.71 will be posted in a few days. The interesting thing is, that many bugs were lurking through several versions (months or maybe even years), that started to appear now and not only for me. For anyone who hasn’t downloaded v0.7 yet, it’s probably better to wait a few days till I release the next version. In case you have download v0.7 and already replaced your own version with it, at least you won’t have to download a whole new dictionary as well, because I won’t be updating it 😉
I have to thank many users for notifying me of the problems. Please keep sending your bug reports to help improve zkanji!
The latest version or last few versions of zkanji had a bug. (I admit this is not news to most people who have been following the development of the program.) Fortunately that bug is not serious, it simply causes a scary “Access violation” message on program startup (but not always), but in most cases can’t make any other problems. The program has another, more alarming bug though. I was neglecting the old word tests, as I’ve completely switched to using and developing the long-term study list instead, but that’s no excuse in letting bugs pop up here and there. The bug only appears when you have a suspended test and then quit the program. The next time the program runs the test and a round is over, the program freezes. This means that even if you suspend a test, you shouldn’t quit zkanji, or even if you do, you should reset that test and start over. The bug is already fixed, but I want to fix a few smaller ones before I release the next version of the program. This time I won’t sit on it too long… hopefully.
…only for Vista and Win 7. No, this is not a feature, this is a bug. I will have to look into it but not today, and probably not tomorrow either. If you have one of those systems, it is safe to download the latest zkanji, but otherwise stay with v0.59. The zkanji page at SourceForge will keep pointing to that old version, but if you need the latest one already, you can grab it from here.
UPDATE: I couldn’t wait and had to fix this annoying bug. The updated v0.591 should work on XP as well. (It was tested on one.) You can get the latest version from the zkanji page on SourceForge.
I have already posted test versions of the Unicode zkanji, but this one is somewhat different. I think that I have smashed most critical bugs this time, and so I’m confident enough to release the latest preview version of the fully Unicode zkanji. There are still bugs, mainly visual, or in other words user interface errors that I don’t consider critical. Most only appear for fresh “installs” of zkanji, when no .ini file was generated previously, or if that .ini file was made with a relatively new version.
List of currently known errors:
The clipboard viewer doesn’t come up, when it should. Switching to multiple windows mode shoves all the windows to the corner of the screen the first time, which is really ugly. Switching back to single window mode messes up the z-order of some controls, and some gets hidden.(Couldn’t reproduce these since something else was fixed.) Adding more than 10 example words for a single reading of a kanji and including that kanji in the long-term study only adds the first 10 words to the study list. Double-clicking on the first item in word groups do nothing in custom dictionaries. (This bug only comes up when the first item is the first word ever added to the dictionary.) Too large kanji drawn in the kanji list for font sizes above 100%.It seems that many windows fell apart when the font size was set to anything above 100%, and the problem wasn’t merely drawing kanji too large. I have tried to fix this for as many windows as possible but there might still be visual glitches at higher font sizes. At least the program looks usable now in those cases as well.
These errors will be fixed in the final release, but it should be safe to use the program already. Still, I would advise anybody switching to this version, to make a safe copy of their data files before starting the new version, unless you don’t have any important data. If you find any errors not listed here, please write a comment.
Full version with data: Download (Example sentences included)
Version with no data: Download Please get the latest version.
These are still not “official” releases, just previews for anyone wanting to see how the program should have been since the beginning. I still plan to add several smaller features to the long-term study list. Namely settings to limit the mistaken/repeated words’ new deck, or to be able to shuffle the readings in the reading test. I will also experiment with using the windows IME for dictionary searches, but this might not be included in the final version, as I always found switching between input languages inconvenient and unnecessary in dictionaries where only one language can be used in a given input field.
If your native language doesn’t use Latin characters, then you have to switch to English just to type Japanese in the dictionary, right? In that case I might be able to make your life easier, but I need your help in doing so.
That’s all for today. See you again next time, when I have finally released the first Unicode version of zkanji! (Or in the comments before that.)
UPDATE: Most bugs are fixed. I still want to change things to make a more solid release, but the final release of the next version is much closer now.