To parallelise code, either multiple processes or multiple threads can be created from the main process.
- A bit faster to start up
- They can access all memory from all other threads, therefore sharing data is easy
- Lower memory consumption
To parallelise code, either multiple processes or multiple threads can be created from the main process.
Це коротка інструкція про те, як бути білим фрілансером. Почав писати для себе, бо не все знайшов в інтернеті. І вирішив, що це корисно всім, хто працює на біржі Upwork і хоче розібратися як легально там заробляти. Тут є офіційна стаття, яку я вирішив доповнити конкретним своїм прикладом.
Про відкриття фопа і його облікування не буду розписувати. Якщо у вас фопа немає, то краще звернутися до консалтингових компаній, які на цьому спеціалізуються. Єдине, на чому я хотів би зупинитися, це кведи. Бажано, щоб вони збігалися з послугами, які ви надаватимете. Наприклад, «Software Development» відповідає найкраще «62.01 Комп'ютерне програмування». Якщо у вас інші, то пошукайте те, чому найбільше відповідаєт
ruby '2.7.1' | |
gem 'rails', github: 'rails/rails' | |
gem 'tzinfo-data', '>= 1.2016.7' # Don't rely on OSX/Linux timezone data | |
# Action Text | |
gem 'actiontext', github: 'basecamp/actiontext', ref: 'okra' | |
gem 'okra', github: 'basecamp/okra' | |
# Drivers |
#!/usr/bin/env ruby | |
ADDED_OR_MODIFIED = /^\s*(A|AM|M)/.freeze | |
changed_files = `git status --porcelain`.split(/\n/) | |
unstaged_files = `git ls-files -m`.split(/\n/) | |
changed_files = changed_files.select { |f| f =~ ADDED_OR_MODIFIED } | |
changed_files = changed_files.map { |f| f.split(" ")[1] } |
/* | |
******************************************************************************** | |
Golang - Asterisk and Ampersand Cheatsheet | |
******************************************************************************** | |
Also available at: https://play.golang.org/p/lNpnS9j1ma | |
Allowed: | |
-------- | |
p := Person{"Steve", 28} stores the value |
Method lookup is a simple affair in most languages without multiple inheritance. You start from the receiver and move up the ancestors chain until you locate the method. Because Ruby allows you to mix in modules and extend singleton classes at runtime, this is an entirely different affair.
I will not build contrived code to exemplify the more complicated aspects of Ruby method lookup, as this will only serve to confuse the matter.
When you pass a message to an object, here is how Ruby finds what method to call:
class Node | |
attr_accessor :value | |
attr_accessor :next, :previous | |
def initialize(value) | |
@value = value | |
@next = nil | |
@previous = nil | |
end | |
end |