Skip to content

Instantly share code, notes, and snippets.

View eMaringolo's full-sized avatar

Esteban A. Maringolo eMaringolo

View GitHub Profile
@eMaringolo
eMaringolo / ZnSimpleWebServer.st
Created May 28, 2012 02:18
The simplest hello world server using Zinc HTTP Components <http://zn.stfx.eu/zn/index.html>
(ZnServer startDefaultOn: 1701)
onRequestRespond: [ :request |
ZnResponse ok: (ZnEntity text: 'Hello World!') ]
@eMaringolo
eMaringolo / gist:3228968
Created August 1, 2012 17:23
Smalltalk Quine
[ :s | Transcript show: s; show: s printString ] value: '[ :s | Transcript show: s; show: s printString ] value: '
renderChartOn: html
| graphId graph |
graphId := html nextId.
html div class: 'chart'; id: graphId.
graph := Rickshaw graph element: graphId.
graph width: 300.
graph height: 200.
graph addSerieNamed: 'Demo' color: 'steelblue' elements: { 0 @ 40. 1 @ 49. 2 @ 38. 3 @ 30. 4 @ 32 }.
html document addLoadScript: graph
mkdir marina
cd marina
wget "https://ci.inria.fr/pharo-contribution/job/marina/PHARO=30,VERSION=development,VM=vm/lastSuccessfulBuild/artifact/Marina.zip"
wget -O- get.pharo.org/vm | bash
git clone https://github.com/tide-framework/marina.git
cd marina
git submodule init
git submodule update
bower install
cd tide
@eMaringolo
eMaringolo / wrongSlotScope.st
Created April 27, 2014 13:53
All the layout of some classes is wrong, due to some ancient bug. The bug fix has been integrated but all the classes that have been modified in-between may have this problem. To fix that you have to force the rebuild of these classes (by adding then removing a dummy inst var for ex).
ivName := 'anIVNameImPrettySureNobodyUses'.
all := Smalltalk allClasses flatCollect: [ :e | { e . e class } ].
candidates := all reject: [ :e | e superclass isNil or: [e layout slotScope isKindOf: LayoutEmptyScope ] ].
toRebuild := candidates reject: [ :e | e superclass layout slotScope == e layout slotScope parentScope ].
toRebuild do: [ :e | e addInstVarNamed: ivName ].
toRebuild do: [ :e |
(e isClassSide
@eMaringolo
eMaringolo / generator.st
Created May 24, 2014 03:39
8 byte pretty much unique ID generator
"http://instagram-engineering.tumblr.com/post/10853187575/sharding-ids-at-instagram"
| epoch generator ids runLength shardId seqId|
epoch := '01-01-2014' asDateAndTime asUnixTime. "1388545200"
generator := [:seed1 :seed2 |
| id |
id := (DateAndTime now asUnixTime - epoch) bitShift: 64-41.
id := id bitOr: (seed1 bitShift: (64-41-13)).
id := id bitOr: seed2 ].
@eMaringolo
eMaringolo / MandrillClient.st
Created May 30, 2014 03:57
Simple example on how to send emails from Pharo using MandrillApp client
"Get client at http://smalltalkhub.com/#!/~NorbertHartl/Mandrill"
"Set the api key only once."
MandrillClient apiKey: 'yourApiKeyGoesHere'.
(MandrillMessage new
addRecipient: (MandrillRecipient new email: 'alice@there.com');
fromName: 'Bob';
fromEmail: 'bob@yourdomain.com';
subject: 'Sending mails from Pharo';
"Compares the parse speed of three different JSON parsers."
{'file1.json'. 'file2.json'. 'file3.json' } do: [ :filename |
jsonString := fileName asFileReference contents.
Transcript cr; show: jsonString size printString, 'bytes JSON:'; cr.
Transcript show: 'NeoJSON: '; show: [ NeoJSONReader fromString: jsonString] bench; cr.
Transcript show: 'JSON: '; show: [Json readFrom: jsonString readStream ] bench; cr.
Transcript show: 'WAJsonParser: '; show: [WAJsonParser parse: jsonString] bench; cr.
]
@eMaringolo
eMaringolo / load-script
Created April 28, 2015 13:45
IntelliJ icons in Pharo
Gofer it
smalltalkhubUser: 'estebanlm' project: 'IconsForPharo';
package: 'Polymorph-Icons-Idea';
load.
ThemeIcons current: IdeaUIThemeIcons new.
AbstractNautilusUI resetIconCaches.
"(you will need to reopen all your windows)"
"The coolness of this icons set is that they work very fine with Dark Theme too :)"
@eMaringolo
eMaringolo / bitcoin
Created August 2, 2017 02:34
Ubuntu's /etc/init.d/bitcoin script to run a bitcoin node as daemon/service
#!/bin/sh
### BEGIN INIT INFO
# Provides: bitcoin
# Required-Start: $local_fs $network $named $time $syslog
# Required-Stop: $local_fs $network $named $time $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Bitcoin Fullnode
### END INIT INFO