Skip to content

Commit d425da9

Browse files
committed
update
1 parent 80d4d38 commit d425da9

File tree

8 files changed

+121
-121
lines changed

8 files changed

+121
-121
lines changed

2018-09-20-berlin-cplusplus-meetup/Berlin-cplusplus-2018.ipynb

Lines changed: 121 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -23,121 +23,6 @@
2323
"https://gitter.im/QuantStack/Lobby"
2424
]
2525
},
26-
{
27-
"cell_type": "code",
28-
"execution_count": 1,
29-
"metadata": {
30-
"slideshow": {
31-
"slide_type": "skip"
32-
}
33-
},
34-
"outputs": [],
35-
"source": [
36-
"#include <xtensor-io/ximage.hpp>\n",
37-
"#include <xtensor/xtensor.hpp>\n",
38-
"#include <xwidgets/ximage.hpp>\n",
39-
"#include <xtensor/xinfo.hpp>\n",
40-
"\n",
41-
"std::vector<char> read_file(const char* filename)\n",
42-
"{\n",
43-
" std::basic_ifstream<char> file(filename, std::ios::binary);\n",
44-
" return std::vector<char>((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());\n",
45-
"}"
46-
]
47-
},
48-
{
49-
"cell_type": "code",
50-
"execution_count": 2,
51-
"metadata": {
52-
"slideshow": {
53-
"slide_type": "skip"
54-
}
55-
},
56-
"outputs": [],
57-
"source": [
58-
"template <class E>\n",
59-
"std::vector<char> to_png_buffer(const xt::xexpression<E>& e)\n",
60-
"{\n",
61-
" const char* temp_filename = \"/tmp/xio_image.png\";\n",
62-
" xt::dump_image(temp_filename, e);\n",
63-
" return read_file(temp_filename);\n",
64-
"}"
65-
]
66-
},
67-
{
68-
"cell_type": "code",
69-
"execution_count": 3,
70-
"metadata": {
71-
"slideshow": {
72-
"slide_type": "skip"
73-
}
74-
},
75-
"outputs": [],
76-
"source": [
77-
"template <class E>\n",
78-
"auto display(const E& e)\n",
79-
"{\n",
80-
" xw::image ls_image;\n",
81-
" ls_image.value = to_png_buffer(e);\n",
82-
" return ls_image;\n",
83-
"}"
84-
]
85-
},
86-
{
87-
"cell_type": "code",
88-
"execution_count": 4,
89-
"metadata": {
90-
"slideshow": {
91-
"slide_type": "skip"
92-
}
93-
},
94-
"outputs": [],
95-
"source": [
96-
"template <std::ptrdiff_t I, class T, class Tuple>\n",
97-
"struct tuple_idx_of_impl;\n",
98-
"\n",
99-
"template <std::ptrdiff_t I, class T>\n",
100-
"struct tuple_idx_of_impl<I, T, std::tuple<>>\n",
101-
"{\n",
102-
" static constexpr std::ptrdiff_t value = -1;\n",
103-
"};\n",
104-
"\n",
105-
"template <std::ptrdiff_t I, class T, class... Types>\n",
106-
"struct tuple_idx_of_impl<I, T, std::tuple<T, Types...>>\n",
107-
"{\n",
108-
" static constexpr std::ptrdiff_t value = I;\n",
109-
"};\n",
110-
"\n",
111-
"template <std::ptrdiff_t I, class T, class U, class... Types>\n",
112-
"struct tuple_idx_of_impl<I, T, std::tuple<U, Types...>>\n",
113-
"{\n",
114-
" static constexpr std::ptrdiff_t value = tuple_idx_of_impl<I + 1, T, std::tuple<Types...>>::value;\n",
115-
"};\n",
116-
"\n",
117-
"template <class T, class Tuple>\n",
118-
"struct tuple_idx_of\n",
119-
" : std::integral_constant<std::ptrdiff_t, tuple_idx_of_impl<0, T, Tuple>::value>\n",
120-
"{\n",
121-
"};\n",
122-
"\n",
123-
"template <class R, class T, class L, std::ptrdiff_t I>\n",
124-
"void safe_extract(R& target, const T& args, L&& extractor, std::integral_constant<std::ptrdiff_t, I>)\n",
125-
"{\n",
126-
" target = extractor(std::get<I>(args));\n",
127-
"}\n",
128-
"\n",
129-
"template <class R, class T, class L>\n",
130-
"void safe_extract(R& target, const T& args, L&&, std::integral_constant<std::ptrdiff_t, -1>)\n",
131-
"{\n",
132-
"}\n",
133-
"\n",
134-
"template <class S, class R, class T, class L>\n",
135-
"constexpr void extract(R& target, const T& args, L&& extractor)\n",
136-
"{\n",
137-
" safe_extract(target, args, std::forward<L>(extractor), tuple_idx_of<S, T>{});\n",
138-
"}"
139-
]
140-
},
14126
{
14227
"cell_type": "markdown",
14328
"metadata": {
@@ -241,7 +126,7 @@
241126
}
242127
},
243128
"source": [
244-
"![](images/jupyter_server.svg)"
129+
"![](images/jupyter_server.png)"
245130
]
246131
},
247132
{
@@ -252,7 +137,7 @@
252137
}
253138
},
254139
"source": [
255-
"![](images/jupyter_server_after.svg)"
140+
"![](images/jupyter_server_after.png)"
256141
]
257142
},
258143
{
@@ -263,7 +148,7 @@
263148
}
264149
},
265150
"source": [
266-
"<img src=\"images/xeus-cling.svg\" width=\"400px\"></img>\n",
151+
"<img src=\"images/xeus-cling.png\" width=\"400px\"></img>\n",
267152
"\n",
268153
"- xeus + cling\n",
269154
"- cling: clang based C++ interpreter from the CERN\n",
@@ -643,7 +528,7 @@
643528
"cell_type": "markdown",
644529
"metadata": {},
645530
"source": [
646-
"![](images/jupyter_server_after.svg)"
531+
"![](images/jupyter_server_after.png)"
647532
]
648533
},
649534
{
@@ -669,7 +554,7 @@
669554
}
670555
},
671556
"source": [
672-
"<img src=\"images/xtensor.svg\" width=\"500px\" />\n",
557+
"<img src=\"images/xtensor.png\" width=\"500px\" />\n",
673558
"\n",
674559
"- n-dimensional array computing library\n",
675560
"- Support for lazy computation, broadcasting \n",
@@ -1022,6 +907,66 @@
1022907
"std::cout << a * brcast << std::endl;"
1023908
]
1024909
},
910+
{
911+
"cell_type": "code",
912+
"execution_count": 1,
913+
"metadata": {
914+
"slideshow": {
915+
"slide_type": "skip"
916+
}
917+
},
918+
"outputs": [],
919+
"source": [
920+
"#include <xtensor-io/ximage.hpp>\n",
921+
"#include <xtensor/xtensor.hpp>\n",
922+
"#include <xwidgets/ximage.hpp>\n",
923+
"#include <xtensor/xinfo.hpp>\n",
924+
"\n",
925+
"std::vector<char> read_file(const char* filename)\n",
926+
"{\n",
927+
" std::basic_ifstream<char> file(filename, std::ios::binary);\n",
928+
" return std::vector<char>((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());\n",
929+
"}"
930+
]
931+
},
932+
{
933+
"cell_type": "code",
934+
"execution_count": 2,
935+
"metadata": {
936+
"slideshow": {
937+
"slide_type": "skip"
938+
}
939+
},
940+
"outputs": [],
941+
"source": [
942+
"template <class E>\n",
943+
"std::vector<char> to_png_buffer(const xt::xexpression<E>& e)\n",
944+
"{\n",
945+
" const char* temp_filename = \"/tmp/xio_image.png\";\n",
946+
" xt::dump_image(temp_filename, e);\n",
947+
" return read_file(temp_filename);\n",
948+
"}"
949+
]
950+
},
951+
{
952+
"cell_type": "code",
953+
"execution_count": 3,
954+
"metadata": {
955+
"slideshow": {
956+
"slide_type": "skip"
957+
}
958+
},
959+
"outputs": [],
960+
"source": [
961+
"template <class E>\n",
962+
"auto display(const E& e)\n",
963+
"{\n",
964+
" xw::image ls_image;\n",
965+
" ls_image.value = to_png_buffer(e);\n",
966+
" return ls_image;\n",
967+
"}"
968+
]
969+
},
1025970
{
1026971
"cell_type": "code",
1027972
"execution_count": 41,
@@ -1801,6 +1746,61 @@
18011746
"}"
18021747
]
18031748
},
1749+
{
1750+
"cell_type": "code",
1751+
"execution_count": 4,
1752+
"metadata": {
1753+
"slideshow": {
1754+
"slide_type": "skip"
1755+
}
1756+
},
1757+
"outputs": [],
1758+
"source": [
1759+
"template <std::ptrdiff_t I, class T, class Tuple>\n",
1760+
"struct tuple_idx_of_impl;\n",
1761+
"\n",
1762+
"template <std::ptrdiff_t I, class T>\n",
1763+
"struct tuple_idx_of_impl<I, T, std::tuple<>>\n",
1764+
"{\n",
1765+
" static constexpr std::ptrdiff_t value = -1;\n",
1766+
"};\n",
1767+
"\n",
1768+
"template <std::ptrdiff_t I, class T, class... Types>\n",
1769+
"struct tuple_idx_of_impl<I, T, std::tuple<T, Types...>>\n",
1770+
"{\n",
1771+
" static constexpr std::ptrdiff_t value = I;\n",
1772+
"};\n",
1773+
"\n",
1774+
"template <std::ptrdiff_t I, class T, class U, class... Types>\n",
1775+
"struct tuple_idx_of_impl<I, T, std::tuple<U, Types...>>\n",
1776+
"{\n",
1777+
" static constexpr std::ptrdiff_t value = tuple_idx_of_impl<I + 1, T, std::tuple<Types...>>::value;\n",
1778+
"};\n",
1779+
"\n",
1780+
"template <class T, class Tuple>\n",
1781+
"struct tuple_idx_of\n",
1782+
" : std::integral_constant<std::ptrdiff_t, tuple_idx_of_impl<0, T, Tuple>::value>\n",
1783+
"{\n",
1784+
"};\n",
1785+
"\n",
1786+
"template <class R, class T, class L, std::ptrdiff_t I>\n",
1787+
"void safe_extract(R& target, const T& args, L&& extractor, std::integral_constant<std::ptrdiff_t, I>)\n",
1788+
"{\n",
1789+
" target = extractor(std::get<I>(args));\n",
1790+
"}\n",
1791+
"\n",
1792+
"template <class R, class T, class L>\n",
1793+
"void safe_extract(R& target, const T& args, L&&, std::integral_constant<std::ptrdiff_t, -1>)\n",
1794+
"{\n",
1795+
"}\n",
1796+
"\n",
1797+
"template <class S, class R, class T, class L>\n",
1798+
"constexpr void extract(R& target, const T& args, L&& extractor)\n",
1799+
"{\n",
1800+
" safe_extract(target, args, std::forward<L>(extractor), tuple_idx_of<S, T>{});\n",
1801+
"}"
1802+
]
1803+
},
18041804
{
18051805
"cell_type": "code",
18061806
"execution_count": 64,
@@ -2135,7 +2135,7 @@
21352135
}
21362136
},
21372137
"source": [
2138-
"<img src=\"images/jupyter_connection.svg\" width=\"80%\" />"
2138+
"<img src=\"images/jupyter_connection.png\" width=\"80%\" />"
21392139
]
21402140
},
21412141
{
57.8 KB
Loading
48.1 KB
Loading
60.8 KB
Loading
41.5 KB
Loading
26 KB
Loading
30.9 KB
Loading
27.1 KB
Loading

0 commit comments

Comments
 (0)