Tuesday, December 30, 2014

Map of Dart learning subjects and their values, exercise for cloning Anagram example.

When cloning / theming dart-html example: anagram, I wanted to make it like Dart-learning course, I made this map of casual Dart keywords, that popped to my mind, and setted some time / effort values to them.  These values present 1-9 numbers of time / effort / importance, of ao. learning subject... just my opinion.

Here is original anagram HTML dart example in gitHub
     https://github.com/dart-lang/www.dartlang.org/blob/master/src/site/docs/tutorials/add-elements/examples/anagram/anagram.dart 
I'm now on phase 2 / 10 on this cloning, and next should put this map in use; instead of ..what..?  and how..?   Long way to go..

here are  all tutorial samples:   https://github.com/dart-lang/dart-tutorials-samples


// Dart learn subjects and their values
Map dartLearnSubjects = {
          'await' : 6,  'analyzer' : 1, 'as' : 2, 'assert' : 4, 'abstract' : 3,
          'build' : 02, 'bool' : 0, 'button' : 5,

          'continue' : 2,  'client' : 5, 'comment' : 1, 'css' : 3, 'class' : 7,
          'case' : 2, 'const' : 3, 'closure' : 5, 'cascade' : 3, 'constructor' : 4,

          'default' : 3,  'do' : 2, 'datetime' : 3, 'dynamic' : 3, 'double' : 2,
          'debugger' : 2,
          'equality' : 2,  'extend' : 3, 'export' : 3, 'error' : 5, 'element' : 5,
          'external' : 9, 'enum' : 4,
       
          'factory' : 8,  'final' : 2, 'for' : 2, 'future' : 9, 'function' : 7,
          'generics' : 6, 'get' : 4,

          'hint' : 1, 'html' : 8,
          'implement' : 3,  'io' : 8, 'int' : 3, 'import' : 3, 'iterate' : 4,
          'intl' : 2, 'isolates' : 5, 'immutable' : 3, 'interface' : 3,

          'json' : 3, 'joke :)' : 0, 'joker :)' : 0, 'join?' : 0,
          'key' : 2,
          'lazy loading' : 2, 'label' : 3, 'library' : 5, 'list' : 2,

          'metadata' : 3,  'mixin' : 9, 'math' : 3, 'main' : 1, 'map' : 2,
          'methods' : 2,
          'new' : 2, 'null' : 1, 'num' : 2,
          'objcet' : 3,  'output' : 1, 'or?' : 1, 'operators' : 05, 'on--?' : 3,

          'parameter' : 4,  'parse' : 5, 'pub' : 7, 'print' : 1, 'part' : 2,
          'problems' : 1,
          'query' : 4, 'queue' : 2,

          'rune' : 2, 'run?' : 2, 'random' : 2, 'return' : 2,
          'server' : 8,  'static' : 5, 'sdk' : 5, 'string' : 1, 'set' : 2,
          'system?':4, 'switch' : 1, 'super' : 4, 'symbol' : 2, 'scope' : 2,

          'this' : 3,  'throw' : 3, 'task' : 1, 'type' : 7, 'try' : 2,
          'typedefs' : 6, 'typecast' : 6, 'todo' : 2,

          'unordered' : 0,
          'void' : 1, 'value' : 1, 'var' : 3,
          'web sql' : 7,  'web audio' : 7, 'while' : 1, 'worker' : 4, 'with' : 3,

          'x1' : 0, 'y1' : 0, 'yield?' : 0, 'z1' : 0
               
};

//TODO  howTo :  Print a map :)
dartLearnSubjects.forEach((k, v) { print('$k, $v'); });
--------------------------------------------------------------------------------------------------
You can run above code putting it directly inside main function.
void main()  {
print('.. hello here we go!! ');
  //  code here
}
.

Saturday, February 15, 2014

Quick tips for Dart newcomers (to be continued...)

- Abreviations- Know Internet Slang- ALL Wikipedia stuff about web, server, programming... - Basic idea and control flow of programming.

At the beginning of 2014 DartLang is still a work in progress. It do not yet have all the goodies that older lanquages have, but it is gonna go far. Dart may not be the best-laquage-possible to-bebuilt-now, BUT it is best, that can survive now, and to get great bunch of developers behind it.

Writing this in Nexus... numbering... must fix it in laptop. (lost in transition lol)

Put jre in jre folder in your dart-program folder, if you don't use path variable. if problems, read:
Read ALL here: dartlang.org AND read it again. Consider keeping notes in Evernote, Google Keep, Springpad, GTask or...

Choose short names for your main data folders, you use them daily, you learn them. EXAMPLE here. (coming)

Trust editor tools; ctrl-tab for advices on subject. You do not have to memorize all

Trust Google search. try: dart foreach print ...xx
DartEditor keyboard shortcuts: choose, wich ones you need from HERE (coming)
" Play with Darteditors windows, until you got Happy state.
LEFT: Files, under: Object inspector. Middle: edit, Under: Problems, output, progress, breakpoints aso... Right: Debugger, Outline"

(...) Use Google spreadsheets to scetch, analyze and plan your programs and their classes, functions and variables, and their naming conventions.

Take time and plan NAMES for you variables and classes: MEANING.

Love your lanquage. Dont be angry to other languages. Trust it. Trust the community. It will develope; every week something new.

Make a cheatSheet for usual stuff. HERE sample.(coming) Until Darteditor gets templates.

Dont start to build a bridge until you see, where is other end. Build first a small bridge.

Give Dart editor time to analyze sometimes. Prevent analyzing in other folders, when you want to work.

Start writing, when you have clear picture in your mind about the reality (or tale) which you want to program,

Plan variables, which you need when you BUILD and plan your prog.

Make BASE library, which is for all your programs. Make (local)BASE library, which is for you current work.

Make MyPackage_Use -program which all the time uses and tests your package.

Dont use cryptic names, which you do not remember later.

Logic.

Be ready to change names, if they do not feel good. Refactoring!!
Close editor, when you make BIG changes in folder structures. Destroying Metadata, darteditor -folder, is not a bad idea.

Trust dart documentation.... Be with community. use Github and StackOverFlow.

Ready? So sit, take a little cup... start writing and let the ideas come to reality....

(to be continued.. and modified..)

Originally pubished in etdart.blogspot.fi

Sunday, February 9, 2014

Collection of small Pub packages, for learning purposes, best suited to study Dartlang.



Collecting links to Pub packages, in ordxer to find those, which are best suited for learning purposes, and to present different Dart properties.
- Trying to avoid using BIG environmets, like Polymer, Angular, Hop, Bot aso.

game_loop http://pub.dartlang.org/packages/game_loop This main loop is responsible for processing inputs from keyboards, mice, gamepads, and time. Also, the main loop manages browser state, e.g., pointer lock and fullscreen.

mailer https://pub.dartlang.org/packages/mailer Compose and send emails from Dart. Supports file attachments, HTML emails and multiple transport methods.

solitaire http://pub.dartlang.org/packages/solitaire Solitaire card game.


Next I have not tested:

chess http://pub.dartlang.org/packages/chess A port of chess.js to Dart. chess.dart is a library for legal chess move generation, maintenance of chess game state, and conversion to and from the formats FEN and PGN.

bulls_eye http://pub.dartlang.org/packages/bulls_eye Bulls-Eye is an Dart-IO Extension to build up an WebServer (like node.js and Express)

image http://pub.dartlang.org/packages/image Provides server and web apps the ability to load, manipulate, and save images with various image file formats including PNG, JPEG, GIF and WebP.

more http://pub.dartlang.org/packages/more Various extension libraries that make Dart a better place. More Dart — Literally

mongo_dart http://pub.dartlang.org/packages/mongo_dart MongoDB driver for Dart

eventable http://pub.dartlang.org/packages/eventable simple event system for implementing model->event->view design pattern.

streamable http://pub.dartlang.org/packages/streamable a library of helpful custom stream candies

geo http://pub.dartlang.org/packages/geo A set of geographic's functions

dartminer http://pub.dartlang.org/packages/dartminer A Bitcoin miner with Dart language.

stillshot http://pub.dartlang.org/packages/stillshot A simple, bare-bones static site generator with markdown and mustache templating support.

color http://pub.dartlang.org/packages/color A simple Dart package exposing a Color class which can be used to create, convert, and compare colors.

chrome http://pub.dartlang.org/packages/chrome An library for accessing the Chrome APIs in a packaged app or extension.

ace http://pub.dartlang.org/packages/ace High performance code editor for the web.

dartcoin http://pub.dartlang.org/packages/dartcoin A Bitcoin library for Dart. Pud-test release.

lawndart http://pub.dartlang.org/packages/lawndart An easier way to access storage APIs in the browser.

intl http://pub.dartlang.org/packages/intl internationalization and localization facilities, including message translation, plurals and genders, date/number formatting and parsing, and bidirectional text.



watch http://pub.dartlang.org/packages/watch Simple file watcher



Just 20 links now... most of them I have not tested.

To be continued.... most likely..    published originally in  etdart.blogspot.fi
.

Monday, February 3, 2014

My note: Dart. Functions. A bunch of instructions, which executes sequentially.


Class. You can pick class methods one at a time, and execute it.

Function. wikipedia; Function: (subroutine)

In computer programming, a subroutine is a sequence of program instructions that perform a specific task, packaged as a unit.

...................


Commands are fullfilled in sequential order. Nothing can stop functions execution. "When a function that returns a Future is invoked, two things happen:

The function queues up work to be done and returns an uncompleted Future object immediately.
Later, when the value is available, the Future object completes with that value or with an error."

spec 1.1 Functions abstract over executable actions. Because Dart is optionally typed, we cannot guarantee that a function that does not return a value will not be used in the context of an expression. Therefore, every function must return a value. A return without an expression returns null.
A function declaration is a function that is neither a member of a class nor a function literal. Function declarations include library functions, which are function declarations at the top level of a library, and local functions, which are functions declarations declared inside other functions. Library functions are often referred to simply as top-level functions.


If a function does not declare a return type explicitly, its return type is dynamic.


From: https://www.dartlang.org/articles/event-loop/
Once a Dart function starts executing, it continues executing until it exits. In other words, Dart functions can’t be interrupted by other Dart code.




https://www.dartlang.org/docs/dart-up-and-running/contents/ch02.html
A closure is a function object that has access to variables in its lexical scope, even when the function is used outside of its original scope. Functions can close over variables defined in surrounding scopes.

Typedefs
In Dart,functions are objects, just like strings and numbers are objects. A typedef, or function-type alias, gives a function type a name that you can use when declaring fields and return types. A typedef retains type information when a function type is assigned to a variable.


My note: Nowhere (or where?) in Dart doc is clearly said "Function is a collection of elements/code, which are all evaluated in sequence"
".. bunch of logic".

Published originally  in  etdart.blogspot.fi   

Sunday, February 2, 2014

Understanding Dart Futures and Isolates; their different way to work in time factor


Different cheme to use time factor to enhance programs effeciency.

Some clips gathered from dartlang.org pages:
Understanding Isolates:

Isolate api: https://api.dartlang.org/docs/channels/stable/latest/dart_isolate.html

https://www.dartlang.org/articles/event-loop/#use-isolates-or-workers-if-necessary
Note: A Dart command-line app can run code in parallel by creating isolates. (Dart web apps can’t currently create additional isolates, but they can create workers.) Isolates don’t share memory; they’re like separate apps that communicate with each other by passing messages. With the exception of code that an app explicitly runs in additional isolates or workers, all of an app’s code runs in the app’s main isolate. For more information, see Use isolates or workers if necessary, later in this article.

How many isolates should you use? For compute-intensive tasks, you should generally use as many isolates as you expect to have CPUs available. Any additional isolates are just wasted if they’re purely computational. However, if the isolates perform asynchronous calls—to perform I/O, for example—then they won’t spend much time on the CPUs, so having more isolates than CPUs makes sense.


http://programming.oreilly.com/2013/05/8-dart-features-those-fat-cats-dont-want-you-to-know.html

Dart replaces shared-memory threads with isolates
Concurrency is great, but shared-memory threads are error prone. Dart implements an isolate system for safer concurrent programming. Isolates are “isolated memory heaps” that can be spawned from a top-level function or URI. Isolates communicate by passing messages, which are copied before they are sent.
Understanding Futures:
Future is here: https://api.dartlang.org/docs/channels/stable/latest/dart_async.html
https://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html#ch03-futures

https://www.dartlang.org/articles/event-loop/#use-isolates-or-workers-if-necessary :



Fun facts about Future:
The function that you pass into Future’s then() method executes immediately when the Future completes. (The function isn’t enqueued, it’s just called.)
If a Future is already complete before then() is invoked on it, then a task is added to the microtask queue, and that task executes the function passed into then().
The Future() and Future.delayed() constructors don’t complete immediately; they add an item to the event queue.
The Future.value() constructor completes in a microtask, similar to #2.
The Future.sync() constructor executes its function argument immediately and (unless that function returns a Future) completes in a microtask, similar to #2.


The event queue has entries from both Dart (futures, timers, isolate messages, and so on) and the system (user actions, I/O, and so on).
My conclusion:
Summary: Futures are: Asked my frend to do it, he returns with result .
I started the process, I get a response in due course.
Are part of (BIG) async.api
Isolates are: Outside workers to enhance our work. And to bring safety.
Are in (small) dart:isolate library api
Command line... parallel
Concurrent programming, independent workers similar to threads

Futures and Isolates work with time factor differently, to enhance programs effectiveness.

Questions arise: to be continued....

Friday, December 27, 2013

DartEditor Keyboard Shortcuts 12-2013, from Pop-Up window in Editor

Dart Editor KeyBoard Shortcuts 12/2013
Find And ReplaceCtrl+ Shift + Fa
InlineAlt + Shift + Ia
RefreshF5a
Open Class HierarcyF4a USE
Show Key AssistCtrl + Shift + La USE
Content AssistCtrl + SpaceHelp
Extract Local VariableAlt + Shift + LLearn
Extract MethodAlt + Shift +MLearn
Quick FixCtrl + 1Learn
RedoCtrl Shift ZLearn
Rename RefactoringAlt Shift RLearn
Run ScriptCtrl + Shift + F1Learn
Save AllCtrl + Shift + SLearn
Search BoxCtrl + 3Learn
Show in FinderCtrl Alt Shift FLearn
Toggle BreakpointCtrl + Shift + BLearn
Open GlanceCtrl + FLearn __
CloseCtrl + WMenu
Manage LaunchesCtrl + Shift + MMenu
Reanalyze SourcesCtrl Alt Shift B --Menu
Who need these __NoNee
Activate EditorF12NoNeed
Backward HistoryAlt+ LeftNoNeed
Maximize Active Viev of EdCtrl + MNoNeed
Close allCtrl + Shift + WNoUse
Format ElementCtrl + Shift + RNoUse
Forward HistoryAlt+ RightNoUse
Generate JavaScriptCtrl + Shift + GNoUse
Next EditorCtrl + F6NoUse
Previous EditorCtrl + Shift + F6NoUse
Quick Switch EditorCtrl + ENoUse
PropertiesAlt + EnterObious )
No need to learn< easy to rememberObviou
CopyCtrl + CObvious
CutCtrl + XObvious
DeleteDeleteObvious
New FileCtrl + NObvious
Open Existing folderCtrl + OObvious
PasteCtrl + VObvious
RunCtrl + RObvious
SaveCtrl + SObvious
Select AllCtrl + AObvious
UndoCtrl + ZObvious


In this table is information from DartEditors keyboard-shortcyts, as they are in the end of year 2013.  Checked two times... but errors may still be...
I use them, want to learn, No-Use, or use menu instead.  Many are obvious...
For the case you do not want to memorize them all....
Check, if they are changed.  And be thankful co's this was not easy to do.. lol..
Maybe in SDK-folder there is easy copy of this information...


Here it is in Google-Docs for everybody to see and comment.

Friday, March 15, 2013

About Dart functions and Closures, Dart funktiot ja sulkemiset

Understanding Closures.. hard.. and Functions. (spec: Functions abstract over executable actions)

This conversation is from:
https://groups.google.com/a/dartlang.org/forum/?fromgroups=#!topic/misc/NOuoGrxW2nE

https://groups.google.com/a/dartlang.org/d/msg/misc/NOuoGrxW2nE/DHTVT-_qq40J
Direct link to just this piece of conversation.. Great!!

Alex Tatumizer Mar 14 (16 hours ago)

@Ladislav:

Somehow, I overlooked the fact that whatever is called Function in dart in fact doesn't correspond to javascript notion of Function - it's really a closure, e.g.
Function f="abcd".substring;
print(f(0,2));


This is a great feature, so I withdraw my sarcasm. I thought dart makes distinction between Function (as pointer to function "codes") and Closure, but it probably doesn't.
Won't it be better to call it Closure, not Function then, to avoid confusion?

Ladislav Thon asvered:

Function is just something that can be called. Even this, I believe:

class Answer {
call() => 42;
}


main() {
var a = new Answer();
print(a());
print(a is Function);
}


Some Functions are in fact closures, meaning that they carry their lexical environment, but not all of them. I'm not sure about renaming Function to Closure, I think it would make some situations more clear and some less.


Tatumizer ansvered:


Probably you are right, but then things get a bit confusing indeed for anyone coming from javascript (huge army of potential dart users).
Look at "Tour of the dart language" - they are talking about functions AND closures, without elaborating on subtleties - but this are very important subtleties, deserved to be featured much more prominently.
Needs to be better documented maybe?


Check link for more conversation...

And next theme: Orthogonal Wikipedia:

Computer scienceOrthogonality in programming language design is the ability to use various language features in arbitrary combinations with consistent results.[9] This usage was introduced by von Wijngaarten in the design of Algol 68:


The number of independent primitive concepts has been minimized in order that the language be easy to describe, to learn, and to implement. On the other hand, these concepts have been applied “orthogonally” in order to maximize the expressive power of the language while trying to avoid deleterious superfluities.[10]

Orthogonality is a system design property which guarantees that modifying the technical effect produced by a component of a system neither creates nor propagates side effects to other components of the system. Typically this is achieved through the separation of concerns and encapsulation, and it is essential for feasible and compact designs of complex systems. The emergent behavior of a system consisting of components should be controlled strictly by formal definitions of its logic and not by side effects resulting from poor integration, i.e. nonorthogonal design of modules and interfaces. Orthogonality reduces testing and development time because it is easier to verify designs that neither cause side effects nor depend on them.

An instruction set is said to be orthogonal if it lacks redundancy (i.e. there is only a single instruction that can be used to accomplish a given task)[11] and is designed such that instructions can use any register in any addressing mode. This terminology results from considering an instruction as a vector whose components are the instruction fields. One field identifies the registers to be operated upon, and another specifies the addressing mode. An orthogonal instruction setuniquely encodes all combinations of registers and addressing modes.[citatio


Published originally   in etdart.blogspot.fi