Skip to content

Instantly share code, notes, and snippets.

View enpedasi's full-sized avatar

Yoshihiro Ueno enpedasi

  • Delight Systems., co Ltd.
  • Fukuoka, Japan
View GitHub Profile
@enpedasi
enpedasi / map_join.ex
Last active December 17, 2018 12:18
Example for Elixir left join
vers = [%{name: "js", ver: 1}, %{name: "c", ver: 3}, %{name: "elixir", ver: 1.74}]
langs = [%{ id: 1, name: "elixir"}, %{ id: 2, name: "js"}]
langs |> Enum.map( fn rec -> %{ id: rec.id, rec: rec.name, ver: Enum.find(vers, fn v -> v.name == rec.name end)[:ver]} end)
@enpedasi
enpedasi / Imagenet.ex
Last active August 20, 2018 12:51
Image-netのスクレイピング用スクリプト
defmodule Imagenet do
@urls_filename "urls/fall11_urls.txt"
@words_filename "urls/words.txt"
@moduledoc """
# Image-netのスクレイピング用スクリプト
```
defp deps do
[
@enpedasi
enpedasi / receiver.ex
Created July 3, 2018 13:12
NIF Thread Reciever (GenServer)
defmodule NIFThread.Receiver do
use GenServer
def start_link(init_list\\[]) do
GenServer.start_link(__MODULE__, init_list)
end
def init(list) do
{:ok, list}
end
@enpedasi
enpedasi / lib.rs
Last active July 4, 2018 02:26
logistic_map multi-thread & send_message(to GenServer) . see `fn map_calc_send`
extern crate scoped_pool;
use rustler::types::pid::Pid;
lazy_static! {
static ref POOL: scoped_pool::Pool = scoped_pool::Pool::new(8);
}
fn map_calc_send<'a>(env: Env<'a>, args: &[Term<'a>]) -> NifResult<Term<'a>> {
let mut my_env = OwnedEnv::new();
@enpedasi
enpedasi / flow_win_trigger.ex
Created May 24, 2018 12:04
Elixir Flow Window and Trigger
defmodule Flowtest do
@chunk 10
def run( counts \\ 100, stages \\ 4 ) do
window = Flow.Window.global
|> Flow.Window.trigger_every(@chunk, :reset) #トリガーの定義
0..counts
|> Flow.from_enumerable
|> Flow.partition(window: window, stages: stages, hash: fn event -> {event, rem(div(event, @chunk), stages) } end )
|> Flow.reduce(fn -> [] end, fn e, acc -> [e | acc] end)
|> Flow.map_state(fn e -> Enum.reverse(e) end)
@enpedasi
enpedasi / rustler_example.rs
Created May 20, 2018 13:01
rustler nif example
#[macro_use] extern crate rustler;
#[macro_use] extern crate rustler_codegen;
#[macro_use] extern crate lazy_static;
extern crate kana;
use rustler::{NifEnv, NifTerm, NifResult, NifEncoder};
use rustler::types::atom::NifAtom;
use rustler::types::map::NifMapIterator;
use kana::*;
@enpedasi
enpedasi / ising_ets.ex
Last active May 6, 2018 15:43
ising model ets version
defmodule IsingEts do
@moduledoc """
Documentation for Ising.
map reduce version
Iex > Ising.main()
"""
defp get_state(ary2d, idx) do
:ets.lookup_element(ary2d, elem(idx,0)*1000+elem(idx,1) , 2)
end
@enpedasi
enpedasi / genstage_partition_example.ex
Created May 2, 2018 07:27
Elixir GenStage PartitionDispatcher Example
#
# GenStage PartitionDispatcher Example
#
# reference: http://www.elixirfbp.org/2016/08/genstage-example-no-3-dispatching.html
defmodule Comsumer do
use GenStage
def start_link(state) do
GenStage.start_link(__MODULE__, state)
@enpedasi
enpedasi / genstage_test.ex
Last active April 18, 2018 23:23
Elixir GenStage test
# ussage:
# GenStageTest.run()
#
defmodule A do
use GenStage
def start_link(number) do
GenStage.start_link(A, number)
end
@enpedasi
enpedasi / hot_pepper.ex
Last active April 22, 2018 14:02
Recruit Hot Pepper API for Elixir
defmodule HotPepperApi do
@hit_per_page 50
def get_shops({addr, freeword}) do
iget_shops({addr, freeword}, 1, [])
end
# ページング:最終ページ
def iget_shops({_addr, _freeword}, _offset, [%{:islast => true}|result] ) do
result
end