Go Elixir
2018/6/14
Fukuoka.go#11
•
• Fusic
• Go Elixir React PHP 

• Twitter : @kobatako_
• Qiita : @kobatako
Elixir
Elixir
• 

• 

• 

Elixir
• 

Go
• 

Go
• 

Go
Elixir
• 

Go
• 

Go
• 

Go
🤔
※23
Elixir
Elixir
• Elixir
•
•
• Erlang VM
Go
func CalculateSleepTime(series map[string][]SleepTerm, results vital.SleeptimemeterResults) map[string][]SleepTerm {
var start time.Time
for _, value := range results.Data {
//
sleep, _ := time.Parse(datetimeFormat, value.SleepDatetime)
wakeup, _ := time.Parse(datetimeFormat, value.WakeupDatetime)
//
// 12
if isTimeAm(sleep) {
start = replaceTime(sleep.AddDate(0, 0, -1), 12, 0, 0)
// 12
} else {
start = replaceTime(sleep, 12, 0, 0)
}
//
startTime := sleep.Sub(start)
wakeupTime := wakeup.Sub(start)
series[start.Format(dateFormat)] =
append(series[start.Format(dateFormat)], SleepTerm{
Start: sleep,
Wakeup: wakeup,
StartTime: startTime,
WakeupTime: wakeupTime,
Duration: wakeup.Sub(sleep),
}
)
}
return series
}
Elixir
def calculate_sleep_time([data | tail], series) do
##
with {:ok, sleep} <- Timex.parse(data.sleep_datetime, @datetime_format),
{:ok, wakeup} <- Timex.parse(data.wakeup_datetime, @datetime_format) do
#
start =
if time_am?(sleep) do
# 12
Timex.shift(sleep, days: -1)
|> replace_time(12, 0, 0)
else
# 12
replace_time(12, 0, 0)
end
#
start_time = Timex.diff(sleep, start)
wakeup_time = Timex.diff(wakeup, start)
res_list = series ++ [{Timex.format!(start, @date_format), %{start: sleep, wakwup: wakeup,
start_time: start_time, wakeup_time: wakeup_time, duration: Timex.diff(wakeup,
sleep, :duration)}}]
calculate_sleep_time(tail, res_list)
end
end
// Go
sleep, _ := time.Parse(datetimeFormat, value.SleepDatetime)
wakeup, _ := time.Parse(datetimeFormat, value.WakeupDatetime)
# Elixir
with {:ok, sleep} <- Timex.parse(data.sleep_datetime, @datetime_format),
{:ok, wakeup} <- Timex.parse(data.wakeup_datetime, @datetime_format) do
#
end
•
• Elixir with
// Go
if isTimeAm(sleep) {
start = replaceTime(sleep.AddDate(0, 0, -1), 12, 0, 0)
} else {
start = replaceTime(sleep, 12, 0, 0)
}
# Elixir
start =
if time_am?(sleep) do
Timex.shift(sleep, days: -1) # Timex.shift
|> replace_time(12, 0, 0) # replace_time
else
replace_time(12, 0, 0)
end
• Elixir if
// Go
series[start.Format(dateFormat)] =
append(series[start.Format(dateFormat)], SleepTerm{
Start: sleep,
}
)
# Elixir
res_list = series ++ [
{Timex.format!(start, date_format), %{start: sleep }}
]
• ++
// Go
for _, value := range results.Data {
}
# Elixir
# data tail
def calculate_sleep_time([data | tail], series) do
with {:ok, sleep} <- Timex.parse(data.sleep_datetime, @datetime_format),
{:ok, wakeup} <- Timex.parse(data.wakeup_datetime, @datetime_format) do
calculate_sleep_time(tail, res_list)
end
end
•
// Go
return series
}
# Elixir
def calculate_sleep_time([], series) do
series
end
def calculate_sleep_time([data | tail], series) do
end
• return
Go
•
•
•
Go
•
• Json
•
Elixir
• Json
•
• 

Elixir
•
•
•
Go & Elixir
Go & Elixir
• 

•
• Go Elixir
•
Elixir
🤣
Go
&
※
GoとElixir、同時開発した時の気づき

GoとElixir、同時開発した時の気づき

  • 1.
  • 2.
    • • Fusic • GoElixir React PHP 
 • Twitter : @kobatako_ • Qiita : @kobatako
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 18.
  • 19.
  • 21.
    Go func CalculateSleepTime(series map[string][]SleepTerm,results vital.SleeptimemeterResults) map[string][]SleepTerm { var start time.Time for _, value := range results.Data { // sleep, _ := time.Parse(datetimeFormat, value.SleepDatetime) wakeup, _ := time.Parse(datetimeFormat, value.WakeupDatetime) // // 12 if isTimeAm(sleep) { start = replaceTime(sleep.AddDate(0, 0, -1), 12, 0, 0) // 12 } else { start = replaceTime(sleep, 12, 0, 0) } // startTime := sleep.Sub(start) wakeupTime := wakeup.Sub(start) series[start.Format(dateFormat)] = append(series[start.Format(dateFormat)], SleepTerm{ Start: sleep, Wakeup: wakeup, StartTime: startTime, WakeupTime: wakeupTime, Duration: wakeup.Sub(sleep), } ) } return series }
  • 22.
    Elixir def calculate_sleep_time([data |tail], series) do ## with {:ok, sleep} <- Timex.parse(data.sleep_datetime, @datetime_format), {:ok, wakeup} <- Timex.parse(data.wakeup_datetime, @datetime_format) do # start = if time_am?(sleep) do # 12 Timex.shift(sleep, days: -1) |> replace_time(12, 0, 0) else # 12 replace_time(12, 0, 0) end # start_time = Timex.diff(sleep, start) wakeup_time = Timex.diff(wakeup, start) res_list = series ++ [{Timex.format!(start, @date_format), %{start: sleep, wakwup: wakeup, start_time: start_time, wakeup_time: wakeup_time, duration: Timex.diff(wakeup, sleep, :duration)}}] calculate_sleep_time(tail, res_list) end end
  • 23.
    // Go sleep, _:= time.Parse(datetimeFormat, value.SleepDatetime) wakeup, _ := time.Parse(datetimeFormat, value.WakeupDatetime) # Elixir with {:ok, sleep} <- Timex.parse(data.sleep_datetime, @datetime_format), {:ok, wakeup} <- Timex.parse(data.wakeup_datetime, @datetime_format) do # end • • Elixir with
  • 24.
    // Go if isTimeAm(sleep){ start = replaceTime(sleep.AddDate(0, 0, -1), 12, 0, 0) } else { start = replaceTime(sleep, 12, 0, 0) } # Elixir start = if time_am?(sleep) do Timex.shift(sleep, days: -1) # Timex.shift |> replace_time(12, 0, 0) # replace_time else replace_time(12, 0, 0) end • Elixir if
  • 25.
    // Go series[start.Format(dateFormat)] = append(series[start.Format(dateFormat)],SleepTerm{ Start: sleep, } ) # Elixir res_list = series ++ [ {Timex.format!(start, date_format), %{start: sleep }} ] • ++
  • 26.
    // Go for _,value := range results.Data { } # Elixir # data tail def calculate_sleep_time([data | tail], series) do with {:ok, sleep} <- Timex.parse(data.sleep_datetime, @datetime_format), {:ok, wakeup} <- Timex.parse(data.wakeup_datetime, @datetime_format) do calculate_sleep_time(tail, res_list) end end •
  • 27.
    // Go return series } #Elixir def calculate_sleep_time([], series) do series end def calculate_sleep_time([data | tail], series) do end • return
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
    Go & Elixir •
 • • Go Elixir •
  • 35.
  • 36.
  • 37.
  • 38.