GithubHelp home page GithubHelp logo

pharo-open-documentation / pharo-wiki Goto Github PK

View Code? Open in Web Editor NEW
240.0 23.0 76.0 13.37 MB

Wiki related to the Pharo programming language and environment.

Home Page: https://twitter.com/PharoOpen

License: Creative Commons Attribution 4.0 International

pharo smalltalk wiki tips-and-tricks tips tricks tutorial tutorials examples guide

pharo-wiki's People

Contributors

akgrant43 avatar badetitou avatar bpieber avatar carolahp avatar clementdemade avatar demarey avatar dieken avatar ducasse avatar dupriezt avatar fuhrmanator avatar gdayne avatar hernanmd avatar jecisc avatar juliendelplanque avatar kasperosterbye avatar kilon avatar labordep avatar lin777 avatar macta avatar majella67 avatar medicka avatar myroslavarm avatar nikosk84 avatar olekscode avatar pavel-krivanek avatar stephaneggermont avatar stevencostiou avatar vincentblondeau avatar xh4 avatar zer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pharo-wiki's Issues

Guide on DataFrame

Hello,
I would like to add a small guide about DataFrame.
Where should I put it?

I don't think it fits into External projects > Data exchange.
Perhaps External projects > Data structures?

Conventions

Could be great to add a guide on Pharo convensions.

  • Instance var begins with a lower case
  • Class var begins with an upper case
  • Classes begins with an upper case
  • methods begins with a lower case
  • A test package is in the form MyPackage-Tests
  • A test class name is MyClassTest
  • Explain conventions on some protocols
    ...

Documentation on text export formats

Version FT full FT less Tonel
3 V With Metacello update? X
4 V V With Metacello update + Tonel install
5 V V With Metacello update + Tonel install
6.0 V V With Metacello update + Tonel install
6.1 V V V
7 V V V
8 V V V

Guide on streams

  • Binary
  • Buffered
  • Encoding
  • Newline
  • Fast line reader ((ZnFastLineReader on: aStream) linesDo: [ :line | line doSomething ])
  • ...

Add links to other baseline documentations

We should add links to the Deep into pharo metacello chapter and to Metacello documentation.

They are not necessarily complete but they go deeper into some subjects.

Icons

Smalltalk ui icons inspect

Think about changing the name

  1. For this repository - if you look at the pages that we already have, these are not tips and tricks.
  2. For organization - GitHub organization that hosts this repository also has two awesome lists. And none of the three repositories contain actual tips and tricks.

How to share code

Explain some methods to share Smalltalk code.

  • VCS
  • Fileout
  • .st files to execute via command line
  • remote workspace (via the playground)

Page about Seamless

It seems a cool project.
But I'll need help because I do not now anything about it yet ;D

Simplified "starting pharo" instructions

Based on the comments on reddit for the 7.0 release, I think it would be good to have a "How to get started" documentation that's up to date and really simple. I had a look at Pharo by Example and it's pretty out of date (Pharo Launcher is very different now). It would be nice to have:

  • Installing Pharo with Pharo Launcher (the curl/bash approaches are technical and set off alarms for people who are rightly paranoid of running scripts to install things).
  • Up-to-date explanation of Pharo Launcher
  • Explaining simply what is a Pharo environment: Image, VM, Package, File, Git repo. I'm not sure beginners will need the .changes files or more details. They're in the other docs anyway.
    Here's a diagram (I can attach the PlantUML source if you need) to give an idea:
    image

Add page on profiling

This page should go in Pharo Projects I guess

Profiling

Profiling a program is the act of measuring, for example, the time or space it takes to execute.

Time Profiling

Method 1

If SimpleGridExample new open is the program you want to profile, run:

TimeProfiler spyOn: [ SimpleGridExample new open ]

Result: a breakdown of the methods in which the program spent time.
image

Method 2

If SimpleGridExample new open is the program you want to profile, inspect:

[ SimpleGridExample new open ] bench.

Result: the number of times the profiler was able to run the program per second.
image

Method 3

You can access a UI for the time profiler tool via the menu.
image

Result: type your code in the top box and click "Profile it".
image

Space Profiling

Imagine you want to know how much instances of the classes Point and TextMorph there are in the system, and how much space they occupy. Inspect:

((SpaceTally new spaceTally: (Array with: TextMorph with: Point)) 
	asSortedCollection: [:a :b | a spaceForInstances > b spaceForInstances])

Result:
image

Write a Manifest

We need a Manifest file that clearly explains what this repository is and what it isn't.
Is it a wiki?
Is it documentation?
Is it a place for tutorials?
Good practices?
Personal advices?
Should it copy existing books, booklets, docs?
How do we reference them?

Advanced Image Level debugging

Hi Dario,

if you look at the end of the PharoDebug.log you will see:

Most recent primitives
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:
.......
......
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:
doesNotUnderstand:

So you have a recursive doesNotUnderstand: error and the system is running
out of memory. The questions are where and why? You can try and debug
this further by running the VM with --trace=259, e.g.

pharo-vm/pharo --trace=259 my image.image

This will produce lots of output, eventually ending in an endless stream of
doesNotUnderstand:'s. So capture the first few megabytes of output (see
e.g. head(1) ($ man head))

FYI
"traceFlags is a set of flags.
1 => print trace (if something below is selected)
2 => trace sends
4 => trace block activations
8 => trace interpreter primitives
16 => trace events (context switches, GCs, etc)
32 => trace stack overflow
64 => send breakpoint on implicit receiver (Newspeak VM only)
128 => check stack depth on send (simulation only)
256 => trace linked sends "

Alternatively you could use a debugger such as gdb and I can tell you how
to put a breakpoint on doesNotUnderstand:

Page about deployment of Pharo applications

  • How to clean the image
  • How to block the acces to code
  • How to change the logo of the application
  • How to change the name of the application
  • How to deploy a seaside application with nginx?
  • How to sign the application on OSX and Windows
  • ...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.