Size: a a a

2019 December 19

C

Combot in pro.elixir
Alert! Who are you? Asho is a known spammer and is CAS banned. Ban is strongly recommended.
источник

V

V in pro.elixir
Кто тут спрашивал про выбор языка - посмотрите видео https://youtu.be/v1CmGbOGb2I , там хоть и не про эликсир, но очень близко.
Там освещены иммутабельность, система типов, уменьшение зоопарка инструментов, кадровый вопрос, лаконичность кода.
источник

YS

Yuri S. in pro.elixir
def cast(timestamp) when is_integer(timestamp) do
   if String.length("#{timestamp}") > 10 do
     DateTime.from_unix(timestamp, :millisecond)
   else
     DateTime.from_unix(timestamp)
   end
 end


мне говорят что это красиво
источник

V

V in pro.elixir
Yuri S.
def cast(timestamp) when is_integer(timestamp) do
   if String.length("#{timestamp}") > 10 do
     DateTime.from_unix(timestamp, :millisecond)
   else
     DateTime.from_unix(timestamp)
   end
 end


мне говорят что это красиво
В коде silent error, нет проверки на отрицательные timestamp. На мой взгляд эта ошибка - следствие плохого дизайна.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
V
Нужны аргументы.

"Питон по сравнению с руби это то же самое", "clojure это из мира java" - игра слов. Что означает "то же самое"? Что означает "X из мира Y"? Что вообще стоит за этими словами кроме "мне так кажется"?

"Я такт считаю что или вообще никакой Java или полностью Java." - какие аргументы не разделять язык и рантайм кроме "я такт считаю"?
То же самое означает, что в формошлепстве Джанго и рельс показывают одинаковые плюсы и минусы

Жаба мир обозначает, что либо ты пользуешься жвм везде - либо нигде, потому что глупо крутит всю эту экосистему ради 10% своего стека
источник

YS

Yuri S. in pro.elixir
if опустим, я бы case написал, меня смущает вызов DateTime.from_unix с разным кол-ом параметров
источник

PG

Pïg Grëënëst in pro.elixir
Меня смущает to_string и потом length
источник

PG

Pïg Grëënëst in pro.elixir
Код прямо из анекдотов про индусов и джаву
источник

АН

Алексей Новоселов in pro.elixir
Николай
Я поэтому в даль и смотрю. Хотя, тот же гитхаб и шопифай сидят на рельсе. Хотя шопифай к го бегает)
в гитхабе есть эрланг

GitHub — крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки.
Веб-сервис основан на системе контроля версий Git и разработан на Ruby on Rails и Erlang компанией GitHub, Inc  (c) Wikipedia
источник

V

V in pro.elixir
Źmićer Rubinštejn
То же самое означает, что в формошлепстве Джанго и рельс показывают одинаковые плюсы и минусы

Жаба мир обозначает, что либо ты пользуешься жвм везде - либо нигде, потому что глупо крутит всю эту экосистему ради 10% своего стека
> либо ты пользуешься жвм везде - либо нигде, потому что глупо крутит всю эту экосистему ради 10% своего стека

Отличный аргумент против jvm, запомню и буду его использовать. Более того, я пожалуй соглашусь, потому что мы использовали java-вундервафлю в не-java-стеке, и нам не понравилось.
Тем не менее, ради кложуры пожалуй можно сделать исключение - можно завернуть в контейнер, да и Leiningen штука беспроблемная.
источник

Н

Николай in pro.elixir
Алексей Новоселов
в гитхабе есть эрланг

GitHub — крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки.
Веб-сервис основан на системе контроля версий Git и разработан на Ruby on Rails и Erlang компанией GitHub, Inc  (c) Wikipedia
Про рельсы знал, про эликсир нет
источник

АН

Алексей Новоселов in pro.elixir
эрланг, не эликсир. в 2008 эликсира не было
источник

Н

Николай in pro.elixir
Алексей Новоселов
эрланг, не эликсир. в 2008 эликсира не было
О. Ну одно из другого, в общем то. Ок, спасибо
источник

V

V in pro.elixir
Yuri S.
if опустим, я бы case написал, меня смущает вызов DateTime.from_unix с разным кол-ом параметров
А то что код неверно считает, т.е. с ошибкой написан - тебя не смущает?
источник

V

V in pro.elixir
defmodule D do
def cast(timestamp) when is_integer(timestamp) do
   if String.length("#{timestamp}") > 10 do
     DateTime.from_unix(timestamp, :millisecond)
   else
     DateTime.from_unix(timestamp)
   end
 end
end

D.cast(1234567890)
{:ok, ~U[1930-11-18 00:28:30Z]}
DateTime.from_unix(1234567890)
{:ok, ~U[1930-11-18 00:28:30Z]}
D.cast(-1234567890)
{:ok, ~U[1969-12-17 17:03:52.110Z]}
DateTime.from_unix(-1234567890)
{:ok, ~U[1930-11-18 00:28:30Z]}
источник

V

V in pro.elixir
При описании f(x) оговаривается допустимый диапазон x. Это школьный курс алгебры. В программировании то же самое. Ты описываешь cast(timestamp) - значит либо cast должен корректно работать для всех целых timestamp, либо ты должен ограничить допустимые значения timestamp. Иначе это silent data corruption.
источник

V

V in pro.elixir
Далее. Неортогональная система типов. У тебя cast принимает по сути два типа аргументов, где timestamp может означать секунды и где timestamp может означать миллисекунды. Правильно должно быть так:
def cast({:seconds, timestamp}), do: DateTime.from_unix(timestamp)
def cast({:milliseconds, timestamp}), do: DateTime.from_unix(timestamp, :milliseconds)
источник

YS

Yuri S. in pro.elixir
ну я бы так и написал
источник

YS

Yuri S. in pro.elixir
про ограничение на положительные числа спасибо
источник

YS

Yuri S. in pro.elixir
я не заметил
источник