Month: October 2014

Visual Basic .NET – czytelniejszy kod

Posted on

To drugie jest bardziej czytelne:
If Not sheet Is Nothing Then
If sheet IsNot Nothing Then

Ruby – pierwsze kroki

Posted on Updated on

5.times { print ‘Hey’ }

a = [1,2]
a << 5

Męcząca instalacja ruby for windows (tylko 32bit, nie brać 64bit). Lepiej VirtualBox, ściągamy dysku ubuntu http://www.ubuntu.com/download/desktop i tam piszemy w Ruby'm.

rake db:setup
rake db:migrate

rails s

gem 'underscore-rails'
//= require underscore

rails c
Skill.all
Skill.first.delete
Skill.find_by(skill: nil).delete

Kroki aby zrobić update na bazie:
rails g migration AddIsConfirmedToUsers is_confirmed:boolean
rake db:migrate

binding.pry
i podglądam tam gdzie jest consola bo się zatrzymała

User.first.update(is_confirmed: false)

Person.find_by(name: ‘Spartacus’, rating: 4)

Nauczone po dotNetConfPL

Posted on

W consoli (np gita): ‘explorer .’

Jak wystartować

Posted on

https://github.com/msysgit/msysgit/releases

git config –global user.email “your_email@example.com”
git config –global user.name “Your name”

Pytania na rozmowę

Posted on Updated on

Jak sprawdzić czy zapytanie do bazy jest optymalne – spojrzeć w SQL data execution/profiler.

Czy connection pool to jest sprawa klienta czy serwera?

F# – po prostu programuj

Posted on Updated on

Trzeba sie od kilku rzeczy odzwyczaić:

  1. Brak R# (na chwilę pisania tego)
  2. Żeby intellisense załapało zmiany trzeba zapisać plik
  3. Żeby inny projekt załapał zmiany trzeba przebudować projekt

F# everything

Posted on Updated on

Tutorial: http://www.tryfsharp.org/Learn

REPL: View->Other Windows->F# Interactive

Book:

First files in project:
http://putridparrot.com/blog/entrypoint-into-f/

The usual idiom is to define the function to take one argument of type Unit (let functionName () = 42). It will then be called as functionName () (() being the one and only value of type unit).
http://stackoverflow.com/questions/2797662/f-function-with-no-arguments

Equality is not default for classes, for other yes.

Tuple and primitives comparision.

#time – tryb który pokazuje szybkość wykonywania funkcji

List.rev – odwraca listę na końcu (przy warunku | [] ->), uzywać zamiast foldBack

Jaką licencję wybrać

Posted on Updated on

Jeśli ktoś publikuje jakiś kod i nie daje licencji to domyślnie jest on czyjąś zastrzeżoną własnością i nie można go wykorzystać przez inne osoby. Jeśli chcemy by ludzie mogli go kopiować/używać trzeba to (wyraźnie) określić.

MIT

Najpopularniejsza licencja dla kodu na którym nie chce się zarabiać, ale dzielić z każdym (open-source). Oznaczą, że ktoś inny może skorzystać w dowolnym celu i musi umieścić informacje o twórcy z którego kodu skorzystał. Licencja jest krótka, tłumaczenie na polski Licencja MIT – po polsku. Korzysta z niej np. Angular, Nancy, Bootstrap

Apache v2

Założenia jak w MIT, dodane min punkt o patentach. Krótko mówiąc, możemy używać produktu z danym patentem na swoim projekcie, możemy później zrobić z tego własny patent, ale za to nie możemy pójść się sądzić z ludźmi, którzy wydali kod pod licencją Apache (źródło). Korzysta z niej np. Roslyn Compiler

GNU General Public License (GPL)

Jedna ze sformalizowanych form CopyLeft:

Copyleft to ogólny sposób na nadanie wolności programowi lub innej pracy i nakazanie, by wszystkie jego zmienione i rozszerzone wersje były również wolne.

Licencja Wolnego Oprogramowania z którym to ruchem bardzo sympatyzuję. Mając taką licencję kod jest open-source (na odwrót niekoniecznie). Korzystający z kodu na takiej licencji ma następujące prawa:

  • wolność uruchamiania programu, w dowolnym celu (wolność 0)
  • wolność analizowania programu oraz dostosowywania go do swoich potrzeb (wolność 1)
  • wolność rozpowszechniania kopii programu (wolność 2)
  • wolność udoskonalania programu i publicznego rozpowszechniania własnych ulepszeń, dzięki czemu może z nich skorzystać cała społeczność (wolność 3)

Za Wikipedia.

Niektórzy nazywają to oprogramowanie wirusowym, jako że wymusza taką samą licencję na każdym kto korzysta z oprogramowania GPL. Nie zabrania to zarabianiu na produktach na tej licencji. Z drugiej strony skoro ktoś może dowolnie kopiować to znaczy, że może wypuszczać taki sam soft i też na nim zarabiać.

Przykłady ekosystemu GNU/Linux pokazały że można w ten sposób prowadzić biznes zarabiając nie na samym kodzie, ale na jego wdrażaniu do firm, ulepszaniu, pomaganiu użytkownikom, dodawaniu nowych funkcji specyficznych dla danej firmy itp.

Domena publiczna

Chodzi o zrzeczenie się praw i przekazanie ich do tzw domeny publicznej czyli czegoś co jest dostępne naturalnie dla każdego. Np. nikt nie może sobie rościć praw do utworów Chopina. Każdy może je grać. Czytając opisy tego ‘sposobu’ na licencje najszybciej się zgubiłem.

W sofcie sprawa nie jest już taka oczywista, to się bardziej stosuje do innych form twórczości (piosenki, teksty). Chyba najprostszym sposobem tej idei dla softu jest Unlicense.org

Zamknięte

To mnie zupełnie nie dotyczy. Np. Microsoft sprzedaje swój soft klientom bez kodu źródłowego.

Dodanie licencji na GitHub

Powyższe licencje (bez zamkniętej oczywiście) można jednym kliknięciem gdy tworzymy projekt na GitHubie

github licenses

Ciężki orzech

Prawa autorskie to nie taka prosta sprawa. Sam do końca nie wiem jakie jest dobre podejście, jak wyważać pragmatyczność podejść wielu stron, które uczestniczą w tej dyskusji. W samych opisach niektórych licencji są kontrowersje co do tego jak naprawdę traktować ich treść.

Na przykład obecne prawo patentowe uważam za zdecydowanie zbyt restrykcyjne i blokujące rozwój w wielu dziedzinach.

Dowiedziane po prezentacji o Dependency Injection

Posted on

Nie wstrzykiwać Loggera przez DI

Odświeżone:
Nie używać ServiceLocatora