01 April, 2015

Welcome to StackEdit!

Welcome to StackEdit!

Hey! I’m your first Markdown document in StackEdit1. Don’t delete me, I’m very helpful! I can be recovered anyway in the Utils tab of the Settings dialog.


Documents

StackEdit stores your documents in your browser, which means all your documents are automatically saved locally and are accessible offline!

Note:

  • StackEdit is accessible offline after the application has been loaded for the first time.
  • Your local documents are not shared between different browsers or computers.
  • Clearing your browser’s data may delete all your local documents! Make sure your documents are synchronized with Google Drive or Dropbox (check out the Synchronization section).

Create a document

The document panel is accessible using the button in the navigation bar. You can create a new document by clicking New document in the document panel.

Switch to another document

All your local documents are listed in the document panel. You can switch from one to another by clicking a document in the list or you can toggle documents using Ctrl+[ and Ctrl+].

Rename a document

You can rename the current document by clicking the document title in the navigation bar.

Delete a document

You can delete the current document by clicking Delete document in the document panel.

Export a document

You can save the current document to a file by clicking Export to disk from the menu panel.

Tip: Check out the Publish a document section for a description of the different output formats.


Synchronization

StackEdit can be combined with Google Drive and Dropbox to have your documents saved in the Cloud. The synchronization mechanism takes care of uploading your modifications or downloading the latest version of your documents.

Note:

  • Full access to Google Drive or Dropbox is required to be able to import any document in StackEdit. Permission restrictions can be configured in the settings.
  • Imported documents are downloaded in your browser and are not transmitted to a server.
  • If you experience problems saving your documents on Google Drive, check and optionally disable browser extensions, such as Disconnect.

Open a document

You can open a document from Google Drive or the Dropbox by opening the Synchronize sub-menu and by clicking Open from…. Once opened, any modification in your document will be automatically synchronized with the file in your Google Drive / Dropbox account.

Save a document

You can save any document by opening the Synchronize sub-menu and by clicking Save on…. Even if your document is already synchronized with Google Drive or Dropbox, you can export it to a another location. StackEdit can synchronize one document with multiple locations and accounts.

Synchronize a document

Once your document is linked to a Google Drive or a Dropbox file, StackEdit will periodically (every 3 minutes) synchronize it by downloading/uploading any modification. A merge will be performed if necessary and conflicts will be detected.

If you just have modified your document and you want to force the synchronization, click the button in the navigation bar.

Note: The button is disabled when you have no document to synchronize.

Manage document synchronization

Since one document can be synchronized with multiple locations, you can list and manage synchronized locations by clicking Manage synchronization in the Synchronize sub-menu. This will let you remove synchronization locations that are associated to your document.

Note: If you delete the file from Google Drive or from Dropbox, the document will no longer be synchronized with that location.


Publication

Once you are happy with your document, you can publish it on different websites directly from StackEdit. As for now, StackEdit can publish on Blogger, Dropbox, Gist, GitHub, Google Drive, Tumblr, WordPress and on any SSH server.

Publish a document

You can publish your document by opening the Publish sub-menu and by choosing a website. In the dialog box, you can choose the publication format:

  • Markdown, to publish the Markdown text on a website that can interpret it (GitHub for instance),
  • HTML, to publish the document converted into HTML (on a blog for example),
  • Template, to have a full control of the output.

Note: The default template is a simple webpage wrapping your document in HTML format. You can customize it in the Advanced tab of the Settings dialog.

Update a publication

After publishing, StackEdit will keep your document linked to that publication which makes it easy for you to update it. Once you have modified your document and you want to update your publication, click on the button in the navigation bar.

Note: The button is disabled when your document has not been published yet.

Manage document publication

Since one document can be published on multiple locations, you can list and manage publish locations by clicking Manage publication in the menu panel. This will let you remove publication locations that are associated to your document.

Note: If the file has been removed from the website or the blog, the document will no longer be published on that location.


Markdown Extra

StackEdit supports Markdown Extra, which extends Markdown syntax with some nice features.

Tip: You can disable any Markdown Extra feature in the Extensions tab of the Settings dialog.

Note: You can find more information about Markdown syntax here and Markdown Extra extension here.

Tables

Markdown Extra has a special syntax for tables:

Item Value
Computer $1600
Phone $12
Pipe $1

You can specify column alignment with one or two colons:

Item Value Qty
Computer $1600 5
Phone $12 12
Pipe $1 234

Definition Lists

Markdown Extra has a special syntax for definition lists too:

Term 1
Term 2
Definition A
Definition B
Term 3

Definition C

Definition D

part of definition D

Fenced code blocks

GitHub’s fenced code blocks are also supported with Highlight.js syntax highlighting:

// Foo
var bar = 0;

Tip: To use Prettify instead of Highlight.js, just configure the Markdown Extra extension in the Settings dialog.

Note: You can find more information:

  • about Prettify syntax highlighting here,
  • about Highlight.js syntax highlighting here.

Footnotes

You can create footnotes like this2.

SmartyPants

SmartyPants converts ASCII punctuation characters into “smart” typographic punctuation HTML entities. For example:

ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

Table of contents

You can insert a table of contents using the marker [TOC]:

MathJax

You can render LaTeX mathematical expressions using MathJax, as on math.stackexchange.com:

The Gamma function satisfying is via the Euler integral

Tip: To make sure mathematical expressions are rendered properly on your website, include MathJax into your template:

<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>

Note: You can find more information about LaTeX mathematical expressions here.

UML diagrams

You can also render sequence diagrams like this:

Created with Raphaël 2.1.2AliceAliceBobBobHello Bob, how are you?Bob thinksI am good thanks!

And flow charts like this:

Created with Raphaël 2.1.2StartMy OperationYes or No?Endyesno

Note: You can find more information:

  • about Sequence diagrams syntax here,
  • about Flow charts syntax here.

Support StackEdit


  1. StackEdit is a full-featured, open-source Markdown editor based on PageDown, the Markdown library used by Stack Overflow and the other Stack Exchange sites.
  2. Here is the text of the footnote.

05 March, 2015

Bookmarklet idea — Collapse all subsections?

When looking at some articles at Rosetta Code I came up with the idea of «What if we could collapse all the language subsections?», or in the more general sense «What if we could add collapsing to all subsections of a web page?».

The gist of the idea is that for a site like Rosetta Code where you could be interested in mainly one or a few languages, most of the sections are not so interesting. Similarily on a web page with rather a long text, it could be interesting to look only at a particular section. Wouldn’t it then be nice to collapse all the other sections, and expand them when needed?

Introducing bookmarklets

To achieve this one needs to change the web page in question. Ideally one could contact the web author and ask them to add collapsible sections, but this is not feasible in all cases. Another option would be to use some Greasemonkey scripts (or user scripts), but these are depreceated by a number of reasons.

Bookmarklets are however still applicable, and not so dangerous to use, as you choose when and on which pages you want to activate them. You might need to reenable them after clicking on a new link, but they could do the trick for this task.

Make Your Own Bookmarklets With jQuery from Smashing Magazine and Create bookmarklets the right way from tuts+, shows examples of what is needed to make an jQuery enabled bookmarklet. Either of these could be used as a base template together with the pseudocode and specifics given below. For those interested in playing a little with this, you could also install the jQuerify extension for Chrome.

General pseudocode

The gist of the idea to get collapsible section are:

  • The web site needs to use logical well-structured html, and header elements (h1 through h6) which will be used to divide into sections
  • If a header element does not have an id, assign an unique id to the header element
  • Add div’s between header elements at same level, where the id of the div corresponds to the header id
  • For each header element add span element with text of show or hide
  • Use jQuery (or similar) to hide/show sections when clicking the span elements
  • Possibly change formatting of header elements so that they don’t use that much space

Some specifics for Rosetta Code

When applied to Rosetta Code, i.e. see String_length and/or String_lenght#Swift, one could imagine that the first would render the whole page, but collapse all sections from h2 and lower. The second variant (with a language tag) could then autoexpand the Swift section, and thusly show the general description and the corresponding solution for the Swift language.

Maybe it also would be nice to auto-hide the TOC, and possibly change all the headers into a comma separated list, which could expand the given section. (In other words, auto-hide all the header’s and all div’s, and only show a clickable language name which would show/hide that language.

The main part of the page would then look something like:

<h1>String length</h1>
In this task, the goal is to find the character and byte length of a string …
… and 14 bytes when encoded in UTF-8.
Contents [show ]

4D, ActionScript, Ada, … , Standard ML
<h2>Swift ______________________________________ (edit) </h2>
<h3>Character length</h3>
Swift has a concept of …
… end of text
Tcl, TI-89 BASIC, …, zkl

Do note that none of the links are actually working!

Can someone make the bookmarklet?

I do believe this is possible to achieve without to much work, but I’m not sure if I’m currently able to do this in javascript (both due to time constraints and due to limited knowledge of javascript/jQuery). But if someone attempts to do implement this, please let me know, and please let the code be open sourced.

Possibly the specific version for Rosetta Code could be made into a Chrome extension, or if some of the system administrators sees this and like the idea, they could make it a part of the Rosetta Code site as well.

I for one would at least love to see this implemented on Rosetta Code, in addition to having the category pages for a given language auto-link to that language section.

01 March, 2015

Learning Swift through Rosetta Code Contributions

Spring 2015 I decided to learn Swift so that I could develop applications for the Apple platforms of Mac OS X and iOS. I soon found that Swift is an evolving language, and that online resources are getting there bit by bit.

Rosetta Code – Loads of Programming Examples

One of the resources I found was Rosetta Code which describes itself like:

Rosetta Code is a programming chrestomathy site. The idea is to present solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different, and to aid a person with a grounding in one approach to a problem in learning another.

This site therefore can both provide me with information as to how different tasks are accomplished using Swift, and maybe just as interesting since I want to learn Swift a list of tasks not implemented in Swift.

I’m planning to implement some of these unimplemented tasks, and if you want to you can see the special page of my contributions.

Connection to «Odds by Even»

In addition to making contributions to Rosetta Code I will also from time to time, I hope, be posting articles here on Odds by Even on given themes which I find interesting when stumbling along learning Swift.

As an example when doing research to extend the String repeat sections on Rosetta Code, I found stuff talking about extensions and overloading, and I also dived into a performance analysis on various alternatives. These areas will be covered in future articles.

The plan is also to include blog articles which links to Swift playgrounds, which is an interesting tool/approach to playing with different snippets of Swift code. In due time also articles on other languages, or some tidbits on the tools I’m using will be presented.

Questions and Resources through StackOverflow

As I’m only starting out, I’m not quite sure what other resources are available beside random articles, but I do know that StackOverflow holds loads of articles tagged for Swift, and my homepage on StackOverflow will link to my activity and contributions.

StackOverflow also has a page on the Swift tag which has links to different resources related to Swift. And when doing searches on google, I tend to favour the results from StackOverflow as they usually are concrete and to the point.

Do however be notified that since Swift is an evolving language, some of the answers might be referring to a previous version of Swift. This especially is true for older questions and answers from first half of 2014. comment test…