Notes on the Curl web programming language and Curl markup using the Curl Surge Runtime Engine (RTE), the expression-based Curl language and Curl's macro facilities and class libraries
Pages
on the Curl Web Content Markup Language
on the Curl Web Content Markup and Programming Language from www.curl.com and www.curlap.com
Tuesday, December 11, 2012
Japanese vocabulary
The Curl web applet at http://www.aule-browser.com/kanji/jlpt-5-1.curl has a curious property − can you spot it ?
hint: click in vertical slider; resize page; click again.
note: a Curl applet will only run with the Surge RTE browser plugin from www.curl.com installed.
Monday, December 3, 2012
How to enable the Curl plugin in Google Chrome browser
With the latest updates - whether to Chrome or to Curl - my own Curl applets ceased to run in my Chrome browser.
There was no warning and the plugins are not in the Tools list.
The cure is to enter
as a URI in the address bar and then set the Curl Surge RTE plugins to Always allowed.
There was no warning as with either Java or Adobe Flash.
NOTE: on that plugins page, the Curl plugins were NOT listed as DISABLED !
Google has decided that they know what is best for what they view as "little used plugins" - something decidely anti-competitive.
There was no warning and the plugins are not in the Tools list.
The cure is to enter
chrome://plugins/
as a URI in the address bar and then set the Curl Surge RTE plugins to Always allowed.
There was no warning as with either Java or Adobe Flash.
NOTE: on that plugins page, the Curl plugins were NOT listed as DISABLED !
Google has decided that they know what is best for what they view as "little used plugins" - something decidely anti-competitive.
Saturday, December 1, 2012
Curl in Puppy linux
The latest release of the Curl web language browser plugin (8.0.03 for curl9) is now running in my RAM-resident Puppy linux on this old Asus 900A netbook - it boots from an SD chip thanks to grub.
Gettting Curl to run required going into a bin in the path as root and adding a sym-link to surge-do over in /opt/curl/surge/9/bin/surge-do which made possible manually launching the Surge manager, the Curl docs viewer and the development IDE.
What remained was to get Curl applets to run in SeaMonkey and Firefox browsers. That required visit as root to /usr/lib/mozilla/plugins and the creation of 3 sym-links to the 3 key .so files in /opt/curl/surge/9/lib
EX:
su
cd /usr/lib/mozilla/plugins
ln -s /opt/curl/surge/9/lib/libcurl-surge-8-0.so ./libcurl-surge-8-0.so
and ditto for 7-0 and for the generic libcurl-surge.so
Gettting Curl to run required going into a bin in the path as root and adding a sym-link to surge-do over in /opt/curl/surge/9/bin/surge-do which made possible manually launching the Surge manager, the Curl docs viewer and the development IDE.
What remained was to get Curl applets to run in SeaMonkey and Firefox browsers. That required visit as root to /usr/lib/mozilla/plugins and the creation of 3 sym-links to the 3 key .so files in /opt/curl/surge/9/lib
EX:
su
cd /usr/lib/mozilla/plugins
ln -s /opt/curl/surge/9/lib/libcurl-surge-8-0.so ./libcurl-surge-8-0.so
and ditto for 7-0 and for the generic libcurl-surge.so
Saturday, October 13, 2012
Unicode to kanji
I have a small Curl applet at kanji.aule-browser.com which works as you see below ( before and after a request )
The original JPG is at http://kanji.aule-browser.com/unicode-to-kanji.jpg
The original JPG is at http://kanji.aule-browser.com/unicode-to-kanji.jpg
Thursday, August 2, 2012
factory naming
My plea over at curlap.com is this Monday-morning on Thursday-morning whine:
I wonder if a Curl engineer has a moment to add from-String to those classes using from-string as that is generally our pattern and as we also only have to-String
Such a small but maddening thing
( yes, I know: "consistency is the ... " ;-)
humor: APL from STSC had "laod" as well as "load" - just as some Smalltalkers need "slef" for "self" ...
Saturday, July 21, 2012
{value } and {example }
Here is some code from the {stringify } docs in Curl using the {example } macro
{value
let str:String =
{stringify
{define-proc public {foo}:void
{output "hi"} || a comment
}
}
{pre {value str}}
}
The equivalent in the {example } macro or within an applet is
{let str:String =
{stringify
{define-proc public {foo}:void
{output "hi"} || a comment
}
}
}
{pre {value str}}
which I find strikes many first time users as not obvious.
Where {value } is required is in cases such as within an applet
{applet name="our value example"}
def str = "some text"
{Frame height=20pt, width=200pt,
{text {value str} and some more text}
}
to avoid the result without the embedded {value } expression which would be
str and some more text
so as to obtain the intended
some text and some more text
The remarkable thing about the Curl docs is that you can experiment with the code changes within the documentation example page, run the code, save the code or restore the original code (and even go into the applet manager and exit misbehaving code.)
Here is a snapshot: (we have clicked execute and the applet is running)
If you click on the image you will see the {example } macro has buttons for execute, revert, save and to close the popup (applet) {View }.
Friday, July 20, 2012
Save Knowtes
I was force to add a SAVE button to my web page notepad and its for scratch note areas.
The details are posted over at the Curl Community.
The local web app on my PC now has these before and after:
and
The details are posted over at the Curl Community.
The local web app on my PC now has these before and after:
and
Thursday, July 19, 2012
alpha testers
I am looking for alpha testers for a Curl app (www.curl.com) - just a utility.
Would you consider ? It is intended to help recall secure multi-word passphrases used as alternatives to passwords. It is web browser based in this alpha (no JavaScript but does use Curl )
There is a snapshot view at passphrases.aule-browser.com
I have committed to moving this to Pharo Smalltalk 2.0 for Android. Curl also has an Android app generator called CAEDE at curlap.com
And then there is Mobl ...
( I sometimes generate Curl markup with Seaside in Pharo or VW Smalltalk but Seaside remains very tied to SGML in some base classes.)
Tuesday, July 17, 2012
Minimalist Web Notes
Here is my minimalist web notes app without tables, SQL, JavaScript or HTML5:
This runs against local binary files using Curl 7.0 or Curl 8.0 from curlap.com
I am running the current Curl beta for the Caede Android app builder.
This runs against local binary files using Curl 7.0 or Curl 8.0 from curlap.com
I am running the current Curl beta for the Caede Android app builder.
Labels:
Android,
app,
CAEDE,
Curl,
local notes,
minimalist,
notepad,
notes,
scratchpad
Monday, July 16, 2012
Two Kanji Day
It is another 2 kanji day at the new 400+ frequent non-jōyō Japanese kanji page at aule-browser.com's kanji home page.
There is one "kanji of the day" in the Curl applet's search pane and the list of kanji is randomized each session so that at least the top character in the list may also strike you as yet another "kanji of the day".
Many of the kanji pages are now using randomized lists, although this will soon be an option for the user to select as a CSPD preference.
The webpage requires the Surge® RTE Curl browser plugin from www.curl.com
The Curl applet is fully packaged with a super-package for AULE and a sub-package for "KANJI" but required some attention to avoid having to use a {define-alias } macro in the applet itself.
The kanji are loaded from a serialized array placed in a bin file and the applet uses a pre-sized FastArray for the content to be displayed.
Sunday, July 15, 2012
Difference Proc
Over at http://kanji.aule-browser.com/ I have added a page with the Japanese kanji listed in the top 2500 in kanjidic2 but not in the Joyo kanji list.
This Curl applet is based on serialized array generated from a set-set difference.
The problem that I encountered generating this was that the {value-hash } and {equal } proc's to specifiy element identity in these parameterized sets could not be anon proc's and indeed could not even be class proc's due to a Curl compiler non-compile-time constant complaint.
Contrary to the docs, the proc's must be locally defined and named in the applet with simple {define-proc } macros.
The kanji Curl applet is in an HTML wrapper at http://www.aule-browser.com/kanji/kanjidic2-non-joyo.html and looks as follows:
Thursday, July 12, 2012
applet resync redux
As I noted over at the Curl forum, nothing forces a resync on an applet using a resync file ( Curl 7.0+ ) without
in the applet. No amount of work on the Surge RTE settings, the browser settings or the HTML wrapper's meta tags has any effect in a browser caching nothing.{on-applet-suspend do{exit 0}}
That places the issue in Surge: when it says it has purged a suspended applet, it has not.
Wednesday, July 11, 2012
Curl Knowtepage
This is the Curl equivalent to our Knowte Firefox re-sizable text areas:
And compared to the Knote TiddlyWiki's EXE, this applet has a tiny footprint.
Here is an HTML wrapper for the Curl applet: http://www.aule-browser.com/knowtepages/index-curl.html.
You can install the Curl browser plugin at curl.com (English) or curlap.com (Japanese.)
Labels:
Curl,
knowte page,
knowtepages,
notepad,
Pane,
Sash,
scratchpad,
TextArea,
web notes
Pale Moon browser
I am very happy with Pale Moon as a Firefox browser build for 32-bit Windows.
This looks to be a great way to run Curl applets on an Atom netbook with Windows. There are also 64-bit versions.
I have been running 12.1.2
Sunday, July 8, 2012
Applet Resync
I have placed a post on Curl applet resync at http://communities.curl.com/showthread.php?tid=555
The comments on version control versus release management may trigger a response ....
The virtual filenames available in Curl manifests ( mcurl files) are one of the great strengths of Curl projects - but that geat feature can trip you up by confounding VC, CM and RM.
At least in my experience.
I am not aware of any public documentation of gotcha's in this Curl PM area.
Thursday, July 5, 2012
SCSK Curl and Beta Etiquette
SCSK's Curl team disabled my local PC applets.
How? By expiring the runtime engine for their Andoid development CAEDE beta IDE.
So I reinstall the old 8.0 runtime Surge® engine.
Nope. No applet will run under that 8.0.0 browser plugin until the NON-browser 8.0.1 IDE is uninstalled ( a separate selectable/optional step in the uninstaller itself !! )
My Smalltalk vendor did something like this back in the big merger that killed Smalltalk (it was years before I was willing to buy another professional Smalltalk IDE license.)
Now Instantiations owns the VA code and Pharo may get onto Android devices. And there is the Mobl language - and Red may replace Rebol.
In its day, Borland could be outrageous as could IBM and Microsoft and Oracle. But we are now in the post-Java manager-gotta-buzzword era - are we not? Don't managers now talk about "open-source methodology" as if that meant something? JavaScript is no longer a bad ECMA joke?
But here I am - hung out to dry again by a language vendor.
Challenge: name one web app framework that generates non-HTML markup such as Curl without significant revisions which break updates. No, it is not yet Seaside 3.0.x - that future must wait a little longer.
Remember when XHTML was declared by committee to be the future of web markup? Ahem. How long can it take me to start calling HTML5 simply 'HTML' ? By 2014?
At least I never fell for Google Gears ... just DBX, Nuon, OS/2 SOM/DSOM, Rebol 3 ...
How? By expiring the runtime engine for their Andoid development CAEDE beta IDE.
So I reinstall the old 8.0 runtime Surge® engine.
Nope. No applet will run under that 8.0.0 browser plugin until the NON-browser 8.0.1 IDE is uninstalled ( a separate selectable/optional step in the uninstaller itself !! )
My Smalltalk vendor did something like this back in the big merger that killed Smalltalk (it was years before I was willing to buy another professional Smalltalk IDE license.)
Now Instantiations owns the VA code and Pharo may get onto Android devices. And there is the Mobl language - and Red may replace Rebol.
In its day, Borland could be outrageous as could IBM and Microsoft and Oracle. But we are now in the post-Java manager-gotta-buzzword era - are we not? Don't managers now talk about "open-source methodology" as if that meant something? JavaScript is no longer a bad ECMA joke?
But here I am - hung out to dry again by a language vendor.
Challenge: name one web app framework that generates non-HTML markup such as Curl without significant revisions which break updates. No, it is not yet Seaside 3.0.x - that future must wait a little longer.
Remember when XHTML was declared by committee to be the future of web markup? Ahem. How long can it take me to start calling HTML5 simply 'HTML' ? By 2014?
At least I never fell for Google Gears ... just DBX, Nuon, OS/2 SOM/DSOM, Rebol 3 ...
Sunday, July 1, 2012
Android app for passphrase mnemonics
How quickly can CAEDE take the Curl desktop passphrases application to running as an Android app on 4.1 "Jelly Bean"?
Labels:
ADT,
Android,
app,
CAEDE,
Curl,
Dalvik,
eclipse,
Jelly Bean,
mnemonics,
passphrase,
VM,
webkit
Saturday, June 30, 2012
Delicious Firefox plugin bug
My Curl Kanji applet was refusing to center itself correctly in Firefox as the window width was collapsed to the applet's width. Mystery padding was fixed to the left of the applet.
The applet resizing and centering behaved correctly in WIndows Chrome, IE, Opera and Safari.
The culprit? Delicious bookmarking.
Delicious placed its icons left of the address field on the navigation toolbar. Result: a minimum width of padding left forced into the page.
Turn off the Navigation Bar and the padding vanishes.
Move the tagging icons to the right of the address field and padding vanishes.
Thursday, June 28, 2012
Android 4.1 Jelly Bean for Asus Nexus 7
I linked the version article to the See Also for Android OS on en wp this A.M. - there is the list at the moment:
( Of course, always painful to see another tool on eclipse - the IDE from the IBM Visual Age team - while that Smalltalk version, VA, remains unknown at instantiations.com after their great Java tools were sold to ... Google. )
Here's what the SDK lists: (click the PNG below to get a legible view)
Here's the listed ADT changes:
- Vsync timing across all drawing and animation done by the Android framework
- Triple buffering in the graphics pipeline
- Enhanced accessibility
- Bi-directional text and other language Support
- User-installable keyboard maps
- Expandable notifications
- Automatically resizable app widgets
- Multichannel audio
- Bluetooth data transfer for Android Beam
- Offline Voice Dictation
( Of course, always painful to see another tool on eclipse - the IDE from the IBM Visual Age team - while that Smalltalk version, VA, remains unknown at instantiations.com after their great Java tools were sold to ... Google. )
Here's what the SDK lists: (click the PNG below to get a legible view)
Here's the listed ADT changes:
ADT 20.0.0 (June 2012)
- Dependencies:
- Java 1.6 or higher is required for ADT 20.0.0.
- Eclipse Helios (Version 3.6.2) or higher is required for ADT 20.0.0.
- ADT 20.0.0 is designed for use with SDK Tools r20. If you haven't already installed SDK Tools r20 into your SDK, use the Android SDK Manager to do so.
- General improvements:
- Application Templates
- Added Android application templates to allow developers to create specific types of applications faster, using Android-recommended best practices.
- Performance
- Improved overall ADT performance and fixed memory issues. Loading SDK data should be up to 30% faster.
- Tracer for GLES
- Added new perspective view and tools for tracing OpenGL calls for an application and track the visual results of each call. (more info)
- Lint
- Added new Lint rules for manifest registrations, duplicate activity registrations, security checking, correct use of Toast, missing SharedPreferences commit() calls, Fragment class instantiation, and handler leaks.
- Created tighter integration of lint with the layout editor. (more info)
- Added execution of Lint tool on save option for Java files. (more info)
- Layout Editor (more
info)
- Added highlighting (in bold) for important attributes, inline preview of colors and images, including the corresponding resource name.
- Added display of default values, when available.
- Added completion of resource values and enum and flag constants.
- Added support for displaying advanced properties, and nested properties for better categorization, for example, layout params are listed first as a single nested property.
- Display Tooltips over the attribute names, not values, so they never obscure the value column.
- Provided checkbox support for boolean values.
- Added support for switching between alphabetical and natural sort orders.
- Improved layout editor tool's window management for more usable editing views.
- Improved the layout editor's configuration chooser header user interface.
- XML Editing
- Added go to declaration support for theme references (?android:attr, ?attr:).
- Improved code completion in style definitions.
- Improved code completion for the
minSdkVersion
andtargetSdkVersion
attributes in manifest files so that version descriptions are displayed for each of the API levels - Provided support for code completion of custom attributes for custom views, including current edits to the style files.
- Improved synchronization of text and graphic editors with the XML outline view, including outline changes and display of current selection.
- Build System
- Added automatic merging of library project manifest files into the including
project's manifest. Enable this feature with the
manifestmerger.enabled
property. - Added automatic ProGuard support for the
aapt -G
flag. This change causes the build system to generate a temporary ProGuard keep-rules file containing classes that are referenced from XML files (such as custom views) and pass this to ProGuard at shrink-time. This can make the resulting APK much smaller when using just a small portion of a large library project (such as the Android Support library), since the catch-all rules to keep all custom views from the default ProGuard configuration file have also been removed.
- Added automatic merging of library project manifest files into the including
project's manifest. Enable this feature with the
- Added support building and debugging NDK-based Android projects.
- Added support to the Asset Studio Wizard for padding and turning off background shapes.
- Improved LogCat to allow developers to set colors for different priorities.
- Improved app Run functionality to allow running on multiple devices with a single launch. The target tab in the launch configuration dialog includes an option to allow launching on all connected devices, with the option to further narrow the list to just physical devices or just emulators. (This feature is available only for Run configurations, and not for Debug or JUnit tests.)
- Application Templates
- Bug fixes:
- Fixed a number of issues where Lint incorrectly reported code errors or failed to flag code issues.
- Fixed several bugs in the layout editor.
- Fixed compatibility issues with Eclipse 4.x (Juno), including cut/copy/paste functions.
Labels:
4.1,
Android,
ARM,
CAEDE,
eclipse plugin,
Jelly Bean,
Nexus 7,
SDK
Wednesday, June 27, 2012
Curl versus prototype.js
Here is what the prototype.js site suggests:
Here is my Curl equivalent
Now here is my naive test code:
Long-John: ahoy matey, yarr!
Note the lack of sigil's, var's and strange parenthetical matings.
But Curl also has 3D graphics and 2D paths and db interfaces and an IDE ... and now generates Android app's. Oh ... and a debugging environment with graphical inspectors and color outline and fill debug inspection highlighters ... and is almost Smalltalk-ish LISP.
And from the same DARPA project as WWW. SCSK Curl (formerly MIT Curl).
Did I mention multiple inheritance? Mix-in's ? Anonymous proc's? Async workers?
|| public classes, library classes, packages, imports, includes, macros, enums, Array-2-of
|| abstract classes, final classes, sealed classes, shared, serializable,deprecated,open ...
var Person = Class.create({
initialize: function(name) {
this.name = name;
},
say: function(message) {
return this.name + ': ' + message;
}
});
var Pirate = Class.create(Person, {
say: function($super, message) {
return $super(message) + ', yarr!';
}
});
Here is my Curl equivalent
{define-class public Person
field public-get private-set name:String
{method public {say msg:String}:String
{return {String self.name, ": ", msg}}
}
{constructor {default name:String}
set self.name = name
}
}
{define-class public Pirate {inherits Person}
{constructor {default name:String}
{construct-super name}
}
{method public {say msg:String}:String
{return {String {super.say msg}, ", yarr!"} }
}
}
Now here is my naive test code:
{output {{Pirate "Long-John"}.say "ahoy matey"}}
and here is the output:Long-John: ahoy matey, yarr!
Note the lack of sigil's, var's and strange parenthetical matings.
But Curl also has 3D graphics and 2D paths and db interfaces and an IDE ... and now generates Android app's. Oh ... and a debugging environment with graphical inspectors and color outline and fill debug inspection highlighters ... and is almost Smalltalk-ish LISP.
And from the same DARPA project as WWW. SCSK Curl (formerly MIT Curl).
Did I mention multiple inheritance? Mix-in's ? Anonymous proc's? Async workers?
{after (10s * long-wait) do
{more-than-HTML-JS-lib for-the-web}
}|| public classes, library classes, packages, imports, includes, macros, enums, Array-2-of
|| abstract classes, final classes, sealed classes, shared, serializable,deprecated,open ...
Labels:
AJAX,
Android,
app,
async,
class,
Curl,
DARPA,
debugging,
IDE,
inheritance,
inspection,
JavaScript,
MIT,
prototype.js,
WWW
Tuesday, June 19, 2012
Kanji of the Day
Because a collection of Curl objects underlies the Kanji by Grade pages at http://www.aule-browser.com/kanji/kanjidic2-grades.html the pages now have a Kanji of the Day feature with only a minimal change (a variable's value replaces a character literal and a procedure is called with two integers to delimit a safe and reasonable range.)
The Kanji character for the session is placed as the default in the search text field. A student clicks the 'Find' button to jump to the definition for that Japanese kanji character.
Within the applet, the kanji character is found by using a factory method on the class Random and a seed from a DateTime instance. The instance of a Random type is likely LinearRandom as Random is itself an abstract class.
The same class declaration 'scurl' file is included by all of these kanji-by-grade applets.
Note: I also generalized the search function today by using one more instance of GuiMark.
Labels:
definition,
find,
grade 10,
Grade 6,
grade 9,
graphical hierarchy,
GuiMark,
Japanese-English dictionary,
joyo,
Kanji,
Kanji of the day,
learn Japanese,
meaning,
search,
student,
study kanji,
Today's Kanji
Sunday, June 17, 2012
Find a haiku: GuiMark and TextSearchPattern
It was time to put a search panel into the views of Bashō haiku, so that was done today using the Curl GuiMark facility and the TextSearchPattern class.
What you see below is ぬ夜の雪 entered into the TextField next to the FIND button and the ScrollBox has scrolled down to place that poem at the top of our view.
This will now be the norm for these Curl applets on the web pages at aule-browser.com
Note added June 19: this is now generalized as a search using rotating GuiMark's.
Friday, June 8, 2012
Kanjidic2 Japanese kanji by School Grade
There is a new set of 12 Curl applets for studying Japanese kanji this morning.
They are linked at http://www.aule-browser.com/kanji/kanjidic2-grades.html
Here is a snapshot of the applet for combined Grade 9 and Grade 10 Japanese kanji from kanjidic2 with meanings and both on and kun readings in katakana and hiragana:
These pages require the MIT Curl Surge RTE browser plug-in from www.curl.com
They are linked at http://www.aule-browser.com/kanji/kanjidic2-grades.html
Here is a snapshot of the applet for combined Grade 9 and Grade 10 Japanese kanji from kanjidic2 with meanings and both on and kun readings in katakana and hiragana:
These pages require the MIT Curl Surge RTE browser plug-in from www.curl.com
Monday, June 4, 2012
Varying Joyo kanji order of presentation
re: varying the order of presentation of Joyo kanji definitions without edits of the text original
By using the serialization technique of my last note, the pages from Kanjidic2 can be varied in their order without touching the text original or using a DB.
A Curl applet could use SQLite, MySQL or JSON to achieve the same, but this varying order of presentation can also be accomplished using just the one web language, namely, MIT's Curl from www.curl.com
By using the serialization technique of my last note, the pages from Kanjidic2 can be varied in their order without touching the text original or using a DB.
A Curl applet could use SQLite, MySQL or JSON to achieve the same, but this varying order of presentation can also be accomplished using just the one web language, namely, MIT's Curl from www.curl.com
serialization of an off-line text resource
To see the effect of my Curl serialization effort look at the speed of the small daily pages such as http://www.aule-browser.com/kanji/poets/basho-mee-indexed.html
The new daily page generated fast and it loads very fast. I have already cycled twice through the BIN serialization files as I find minor transcription errors in the principal text resource - but that text resource now does not need to reside on the applet web server !
Here is a snapshot for 見
Sunday, June 3, 2012
serialization for text source integrity
I now have a Curl applet up using only serialized data as the source - this will make all of the "Learn Kanji" applets faster hereafter and help keep my fingers off my input text source !
The applet uses the {deserialize } macro to load its data and does not reach the original source.
The approach will result in much faster "kanji of the day" applets using the Basho Haiku as their learning resource as no iteration through the data will occur at load time and the applets are one degree away from the vulnerable source.
This will be even more significant when working with no SQL and no JSON for the large JMDict Japanese resource as well as the smaller Kanjidic2 and its Edict2.
Entire arrays are serialized with a simple call to a stream to write one object. The object classes are declared as serializable and all affected fields have at least a default value.
The result is that my own annotations are kept independent of the source file.
I may turn this same approach to an applet for viewing the tags in my 9000+ Firefox booksmarks so as to avoid both HTML and JSON.
Here is a snap:
Tuesday, May 29, 2012
Basho Haiku as a Curl applet in HTML
Basho's haiku poetry in a Curl apple with hiragana and romaji transliterations/transcriptions.
www.aule-browser.com/kanji/poets/basho-complete.html
www.aule-browser.com/kanji/poets/basho-complete.html
Japanese Punctuation in UNICODE
Over at http://www.aule-browser.com/kanji/kana-charts-curl.html there is now a view of all Japanese punctuation listed at ja.wikipedia.org with UNICODE 16-bit and often also the utf-8 for urlencode.
Unfortunately, my favourite HanaMinA font was not adequate to the task, but neither were any of the default Unicode DejaVu, Lucida or Arial fonts.
Here is a snap of the result:
The font-family selection for punctuation characters required the use of a CharClass - a char-map class in Curl. A total of 4 font families contributed to forming a complete list - most often with half-width presentation preserved.
Monday, May 28, 2012
Curl data versus JSON data (light-weight markup)
Here is the top of a validated JSON katakana data file for Japanese e-learning:
and here is the Curl:
In Curl, both require field definitions for processing - except that the Curl data requres a minimal class definition and a default constructor declaring all fields as being assigned (simple value class).
Of course both could have been reduced to mere arrays of strings, but then the iteration over the data would use no tags or keys. The Curl version is tagged, but internally:
The iterator block accesses each instance as, e.g., val.ucs and so forth.
In fairness, the JSON could have been
{"katakana-array": [
{"katakana": ["ucs": "30AB", "utf-8": "E382AB", "kana": "カ", "info": "katakana letter KA"]},
but it further complicated iterating over the data.
The JSON data can be used anywhere, e.g., by Pharo Smalltalk or jQuery in web page widgets.
Note: the UTF-8 can be used to urlencode: "E382B6" becomes %E3%82%B6 for a URL.
Here is one result using the Curl data: (click to view)
The applet is located at www.aule-browser.com/kanji/kana-charts.html
{"katakana": [
{"ucs": "30AB", "utf-8": "E382AB", "kana": "カ", "info": "katakana letter KA"},
{"ucs": "30AC", "utf-8": "E382AC", "kana": "ガ", "info": "katakana letter GA"},
{"ucs": "30AD", "utf-8": "E382AD", "kana": "キ", "info": "katakana letter KI"},
{"ucs": "30AE", "utf-8": "E382AE", "kana": "ギ", "info": "katakana letter GI"},
{"ucs": "30AC", "utf-8": "E382AC", "kana": "ガ", "info": "katakana letter GA"},
{"ucs": "30AD", "utf-8": "E382AD", "kana": "キ", "info": "katakana letter KI"},
{"ucs": "30AE", "utf-8": "E382AE", "kana": "ギ", "info": "katakana letter GI"},
{let katakana-array:{Array-of Katakana} = {new {Array-of Katakana},
{Katakana "30AB", "E382AB", "カ", "katakana letter KA"},
{Katakana "30AC", "E382AC", "ガ", "katakana letter GA"},
{Katakana "30AD", "E382AD", "キ", "katakana letter KI"},
{Katakana "30AE", "E382AE", "ギ", "katakana letter GI"},
{Katakana "30AC", "E382AC", "ガ", "katakana letter GA"},
{Katakana "30AD", "E382AD", "キ", "katakana letter KI"},
{Katakana "30AE", "E382AE", "ギ", "katakana letter GI"},
Of course both could have been reduced to mere arrays of strings, but then the iteration over the data would use no tags or keys. The Curl version is tagged, but internally:
{define-value-class public final Katakana
field private constant ucs-code:String || = "0000"
field private constant utf8-code:String || = "000000"
field private constant kana-char:String || = {String '\u5B57'} || "字"
field private constant kana-name:String || = "Ji"
{getter public {ucs}:String
{return self.ucs-code}
}
{getter public {utf-8}:String
{return self.utf8-code}
}
{getter public {katakana}:String
{return self.kana-char}
}
{getter public {character}:String
{return self.kana-name}
}
{constructor {default ucs:String, utf:String, kana:String, info:String}
set self.ucs-code = ucs
set self.utf8-code = utf
set self.kana-char = kana
set self.kana-name = info
}
}
{include "./katakana-unicode.scurl"}
field private constant ucs-code:String || = "0000"
field private constant utf8-code:String || = "000000"
field private constant kana-char:String || = {String '\u5B57'} || "字"
field private constant kana-name:String || = "Ji"
{getter public {ucs}:String
{return self.ucs-code}
}
{getter public {utf-8}:String
{return self.utf8-code}
}
{getter public {katakana}:String
{return self.kana-char}
}
{getter public {character}:String
{return self.kana-name}
}
{constructor {default ucs:String, utf:String, kana:String, info:String}
set self.ucs-code = ucs
set self.utf8-code = utf
set self.kana-char = kana
set self.kana-name = info
}
}
{include "./katakana-unicode.scurl"}
The iterator block accesses each instance as, e.g., val.ucs and so forth.
In fairness, the JSON could have been
{"katakana-array": [
but it further complicated iterating over the data.
In the Curl applet the Curl data is processed dramatically faster, naturally.
Note: the UTF-8 can be used to urlencode: "E382B6" becomes %E3%82%B6 for a URL.
Here is one result using the Curl data: (click to view)
The applet is located at www.aule-browser.com/kanji/kana-charts.html
Monday, May 14, 2012
joyo kanji
I have added a Curl applet with the joyo kanji from the 2010 revision (that's 2136 dictionary entries from kanjidic2.)
I discuss the features over at my Curl Community blog. Here's the short account: suppose you are at 919; enter 40 and press ENTER. Once the generic "water" kanji displays, the RIGHT INNER button beside the thin top right-arrow will let you "jump back up" to this 919 "window" kanji.
If you instead jump forward by entering 1926, you can "jump back" with the left "inner" button which is beside of the skinny LEFT arrow at the top.
Why the "jumps" ? The code was needed to add "red" and "green" buttons to a list on which to base "spaced-repetition".
A desktop version for Mac, linux or windows is about 24-hours away.
The list is just a CSV file, so you could move the applet to your own machine if you have a simple script in Rebol or the like - but it will then be a local browser page. The desktop version will use no browser and store ts state in client-side persistent data instead of cookies.
I discuss the features over at my Curl Community blog. Here's the short account: suppose you are at 919; enter 40 and press ENTER. Once the generic "water" kanji displays, the RIGHT INNER button beside the thin top right-arrow will let you "jump back up" to this 919 "window" kanji.
If you instead jump forward by entering 1926, you can "jump back" with the left "inner" button which is beside of the skinny LEFT arrow at the top.
Why the "jumps" ? The code was needed to add "red" and "green" buttons to a list on which to base "spaced-repetition".
A desktop version for Mac, linux or windows is about 24-hours away.
The list is just a CSV file, so you could move the applet to your own machine if you have a simple script in Rebol or the like - but it will then be a local browser page. The desktop version will use no browser and store ts state in client-side persistent data instead of cookies.
Labels:
app,
applet,
client-side persistent data,
cookie,
Curl web programming language,
flashcard,
Japanese-English dictionary,
joyo,
Kanji,
Kanjidic2,
spaced repetition,
UCS,
UNICODE,
utf-8
Monday, May 7, 2012
Saturday, May 5, 2012
Desktop Kanji
While there are a great many useful Kanji webpages for learning, studying and reviewing Japanese, I find that I like my small desktop app.
One reason is that I can flip off English and just leave it sit there on the desktop. The web browser can close, I can do some programming, and then I give a click and confirm that I recall what that particular Kanji can mean.
新
Saturday, April 28, 2012
Curl CDK SQLite Library link
Looking for the Curl SQLite CDK ?
Ignore the DOWNLOAD link: the three links at http://sourceforge.net/projects/curl-cdk/files/ here will lead to the zip files - such as what you want -
http://sourceforge.net/projects/curl-cdk/files/curl-cdk/
The DOWNLOAD at http://sourceforge.net/projects/curl-cdk/ is JUST what it says it is ( "util" and NOT the "cdk".)
I guess most people just figure this out ... but the link for SQLite library in the Curl docs viewer lands you there and not where you need to be ... where the zip's are.
I posted a note on this over at the Curl community.
As for UNSQL, Curl already had several features to use for structured external information instead of relational data tables.
Labels:
CDK,
Curl,
download,
library,
open source,
sourceforge.net,
SQLite
Tuttle Kanji Flashcard app
At http://www.aule-browser.com/kanji/tuttle-henshall-kanji.html there is now a Curl applet for the Tuttle kanji cards ( I am still on the red flashcard set ! )
I used this card as a reminder of the Bayware "Power" Kanji software for Windows 95 later marketed by Transparent Language as Kanji Power2 or some such. That software had some real strengths in its visual interactive approach to syntax and post-position particles for Who-Where-When-verb basics and modifier-before-modified.
The strength of the Tuttle cards is that each flashcard includes four 2-Kanji combinations with the Kanji of that card. At my age, my quarrel is with the small font for these - also an issue with the O'Neill paperback.
Font-size is even an issue in Firefox with the Perapera plugin as using CTRL-+ for the browser window content causes the plugin's popups to explode in size.
The Curl* applet illustrated above includes the UNICODE value and the Henshall number.
Request a variant, and I can produce it in about an hour (skip-code, Nelson etc) so long as the information is in the Kanjidic2 XML file.
I will post a download link for the CSV file for the Tuttle flash card set for anyone using Excel or the like. Now to go look on-line for the "green" set ...
* Curl requires the Curl browser plugin from curl.com or curlap.com (in Japanese.) Curl is in version 8.0 and is very secure and my preferred alternative to Java as both language and browser plugin. I will add desktop versions today or soon.
Labels:
2-Kanji,
card,
flashcard,
Henshall,
Japanese,
Nihon-go,
translation,
Tuttle,
two-Kanji,
UNICODE,
word
Friday, April 27, 2012
Heisig Remembering Kanji with Curl
The Curl applet is here: http://www.aule-browser.com/kanji/heisig-kanji.html
This one is for the entries in the Kanjidic2 online Japanese-English dictionary which have a number in Heisig "Remembering The Kanji" book (3007 Kanji translations in this set and only a max of 7 variants shown.)
Again, if you only want the CSV file, it is there for download. For other options, visit
http://www.aule-browser.com/kanji/
Curl Kanji Study Applet for Remembering the Henshall Kanji
There is a view of the first version of my Curl Kanji applet at http://kanji.aule-browser.com/
These are the Kanji entries in the Kanjidic2 XML Japanese-English dictionary which correspond to Henshall's "Remembering Japanese Characters" book. I also include the UNICODE UTF-8 codepoint for use in HTML
塦 = Curl's \u5866 for our 学 character or U+5866, if your prefer.
The web applet is a few lines in the Curl web programming language from SCSK at curl.com or curlap.com
Wednesday, April 25, 2012
Kanjidic2 as CSV in HTML and text
To aid a neutral party in assessing approaches to digital dictionaries for Japanese, I have posted an HTML file displaying 10,000+ of the first entries in Kanjidic2 at
http://kanji.aule-browser.com/kanjidic2-m12.htmlI have restricted the dump to the Kanji, the UCS code and a max of 12 of a possible 14 meanings.
There are less than 10,200 due to the fact that in the first 12,155 entries, many had no XML meaning content which was not assigned a language attribute. Those few thousand may have English translations in markup previously used for foreign languages.
The file can be found as
http://kanji.aule-browser.com/kanjidic2-m12.csvwith a three line header which you may have to alter for your purposes.
The Kanjidic2 XML file was parsed using the Curl XDM library from curl.com (Nihon-go http://www.curlap.com)
As it stands, the HTML file should be useful for building custom Anki flashcards (themselves stored as SQLite.) I will be using variant CSV output to construct dictionary software with annotations and spaced-repetition options. Curl has both CSV and SQLite libraries in addition to the XML libraries.
Labels:
anki,
CSV,
download,
HTML,
Japanese-English dictionary,
Kanji dictionary,
Kanjidic2,
lexicon,
Nihon-go,
text,
UCS,
UNICODE,
utf-8,
和英辞典,
日本語辞書
Tuesday, April 17, 2012
Curl to COBOL via server-side Java
A industrial project using an interface for Curl to Cobol is outlined at curlap.com (at this time in Japanese only.)
This seems to be the first major project using the Curl-Java ORB project which can be seen at sourceforge.net in open source.
The various modules were built by a small team using the Curl Visual Layout Editor to produce the UI.
Daido Metal is located in Nagoya and manufactures such things as precision automotive bearings.
This seems to be the first major project using the Curl-Java ORB project which can be seen at sourceforge.net in open source.
The various modules were built by a small team using the Curl Visual Layout Editor to produce the UI.
Daido Metal is located in Nagoya and manufactures such things as precision automotive bearings.
Labels:
COBOL,
Curl,
Java,
mainframe,
manufacturing,
ORB,
receivables
Friday, April 6, 2012
Android numbers
The numbers for newly activated Android devices look very good.
Compared to some of the JavaScript frameworks, Curl CAEDE should look very good - but the CAEDE option is getting no press whatever in USA, Brazil, Europe, China, Korea, India, Africa, Malaysia, Indonesia ...
Tuesday, February 14, 2012
HTML5 RIA
The hype is here (preview-version).
I won't repeat the claims made by Microsoft here, but the RIA acronym remains with .NET and Silverlight - but: Visual WebGui (VWG)
is the .NET RIA solution that Microsoft has been trying to achieve with Silverlight but with one significant difference: VWG unlike Silverlight opens the new cross-platform, cross-browsers HTML5 horizons for Microsoft .NET developerswhich is another way of saying bye-bye Silverlight.
Curl's CAEDE strategy is to place Curl in the developers' hands but to leave the Curl runtime off the users' device. Hmmm.
Sunday, January 22, 2012
Kindle PC Reader
I am running the Kindle PC Reader 1.8.3 and it is dreadful. Hopeless footnote formatting.
My post on this at Global Curl is somewhat polemical and rhetorical, but really - given the lack of features in the iBook 2 Author tool, both Apple and Amazon are inviting competition.
Kobo's new owners? I'm thinking of the disregard for Toyota back when they were a minor vendor in North America - only now we are talking China, Indonesia, India and many other cultural regions where Amazon, Apple and Google just don't cut it. And I don't mean "pages".
For an interesting language with a natural bent for such things as flowing footnotes, see co-expressions in Icon, Unicon, Converge or Object Icon (or constraint-handling rule libraries elsewhere post-PROLOGIA IV and CLP.)
Saturday, January 21, 2012
iBook Author Tool
Here are recent comments from the Apple page on the iBook Author tool:
I link to this post over at the global Curl community.
Customer ReviewsAnd
No mathematical notation support
by D. Ernst
This would be great if there was (1) reasonable support for mathematical notation and (2) a way to import LaTeX documents (the standard for typesetting mathematics). Until that happens, mathematically heavy texts are a no go.
No way to note "references"But I did not validate either.
by Conrad Fischer
There is no way to note "references" or "endnotes". How do you write a textbook without having references?
I link to this post over at the global Curl community.
Labels:
Apple,
author,
Curl,
e-book,
e-text,
e-textbook,
ibook,
JavaScript,
Objective-C,
Self,
Smalltalk,
Visual Smalltalk
netstring markdown md2curl
1) add a Curl class for parsing netstring such as
2) md2curl is available as name for markdown-to-Curl parser. See Java PEG parser. Q: what advantages to having Traits for parsers ?
note: true-length of presented string varies also with Unicode composing marks such as accents for presenting Russian as text in e-learning applications. Given these issues, a parser in Icon, UNICON or Object Icon seems appealing as an alternative to PROLOG. alternative: compiled Red (Rebol-like).
ironic, in a way, that we move to 64-bit while shy of UTF-16 as we get terabyte DASD and higher-speed networks: 16-bit text could have been planned as the markdown delight (we might even have been spared XML.)
I have a link to this post over at the global Curl community.
14:4:this,1: ,9:netstring,,with docs note on handling true length of utf-8 strings in light-weight markup. A PEG parser ?
2) md2curl is available as name for markdown-to-Curl parser. See Java PEG parser. Q: what advantages to having Traits for parsers ?
note: true-length of presented string varies also with Unicode composing marks such as accents for presenting Russian as text in e-learning applications. Given these issues, a parser in Icon, UNICON or Object Icon seems appealing as an alternative to PROLOG. alternative: compiled Red (Rebol-like).
ironic, in a way, that we move to 64-bit while shy of UTF-16 as we get terabyte DASD and higher-speed networks: 16-bit text could have been planned as the markdown delight (we might even have been spared XML.)
I have a link to this post over at the global Curl community.
Labels:
BB,
bulletin board,
Curl,
light-weight markup,
markdown,
markup,
md2curl,
netstring,
Object Icon,
parser,
PEG parser,
Rebol,
Red,
UNICODE,
utf-8,
WordPress
Friday, January 6, 2012
gwt CAEDA
How does the Java-to-JavaScript Google gwt environment compare to the CURL-to-JavaScript (both are eclipse plugins.)
[to be continued]
Instantiations
[to be continued]
Instantiations
Subscribe to:
Posts (Atom)