Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2016-07-31

Dynamic Programming

Всё, что вы хотели знать про Dynamic Programming
-- brute-force, memoization, subproblems, guess, recursion.

Лекции от Erik Demaine (MIT)
https://youtu.be/ENyox7kNKeY


http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/lecture-videos/

В частности,
1. что такое memoization, почему так называется?
2. Почему Dynamic Programming, откуда такое название?

1: Memo pad, внесение заметок в memo pad -- memoization.
2: Ученый работал на вояк и не мог сказать, что занимается "исследованиями", поэтому придумал загадочный термин, чтобы генералы не доебались.





original post http://vasnake.blogspot.com/2016/07/dynamic-programming.html

2016-07-20

Spark 2

Apache Spark 2: DataFrames, Datasets, Streaming.

Серьезные изменения в скорости и возможностях
https://www.youtube.com/playlist?list=PL-x35fyliRwiz70bTSSK4HmOZ4JazCFUj

https://www.google.com/search?q=spark+2+dataframe+dataset+streaming

https://spark-summit.org/2016/schedule/





original post http://vasnake.blogspot.com/2016/07/spark-2.html

2016-07-15

FP

Всем, кто начал вникать в functional programming, смотреть и слушать обязательно:

Основные принципы объясняются настолько доступно, что даже я всё понял.

О чём речь, собственно:

Core Principles of FP design
– functions, types, composition
Functions as parameters
– functions as interface
– partial application & dependency injection
– continuations, chaining & the pyramid of doom
Monads
– error handling, async
Maps
– dealing with wrapped data
– functors
Monoids
– aggregating data and operations


types are not classes (more like sets, valid input/output values)

types separate data from behaviour, can compose types

algebraic types; product types; sum types (choice/union)

totality, total/partial functions

for composition you need functions with one parameter:
currying – every function is a one parameter function

currying/partial application – dependency injection, continuations

chaining continuations takes us to monads: monadic bind;
use bind to chain error handlers, Railway Oriented Programming

Mappable types are 'functors':
Option.map: lifting operations to Option world / List, Future, … other monads and wrapped types

monoid: math term: closure + 'zero' (identity element) + associativity
semigroup = monoid – zero

any combination of monoids = monoid; define a combinator and get aggregation for free (reduce);
incremental updates, parallelizm, missing data handling

convert non-monoid (customer) to a monoid (customerStats), using map;
… reduce // 'Hadoop make me a sandwich'

convert expensive monoids to cheap monoids: map blocks to aggregated data, incremental updates;
monoid homomorphism

monoid from functions? input type == output type: endomorphism (remember monoid closure?);
all endomorphisms are monoids, you can aggregate them
example: Event Sourcing

monads are monoids: monoid in the category of endofunctors.


Hadoop make me a sandwich:
оригинал ищите в твиттере




Отсмотрено по наводке http://thedeemon.livejournal.com/112356.html









original post http://vasnake.blogspot.com/2016/07/fp.html

2016-07-06

Подрезово-1

Сегодня устроили себе каталку в Подрезово - 1, на Пироговском водохранилище.
Я про это место ранее писал: http://vasnake.blogspot.com/2016/07/blog-post.html

На парковку пляжную, за шлагбаумом, пустили за 250 рублей. Деньги пошли вратарю на карман -- ни чека, ни карточки я не видел. Несмотря на это, подъехать поближе к воде не разрешили, даже на 5 минут для разгрузки/погрузки. Не положено.
Пришлось матчасть на горбу тащить метров 150.

Пляж хороший, но грязновато.

Прогноз был: юго-западный ветер 8-12 м/с. На самом деле было что-то вроде 5-10 м/с с редкими порывами до 12. Что хуже -- ветер на редкость рваный, порывы по нескольку секунд, тольком разогнаться не успеешь. Все руки себе оборвал.

Хреновая каталка получилась.






original post http://vasnake.blogspot.com/2016/07/1.html

2016-07-04

Scala Type Classes

Что-то поперло про type classes, просто поперло.
Только на днях я упоминал зачетные слайды https://speakerdeck.com/raulraja/typeclasses-tour

Не прошло и недели, как мне попадается изумительный материал про тайп классы

Настолько все доступно изложено, что даже я всё понял.
И применил на практике:

Идея очень проста и отвечает на запрос: как нам облегчить ad-hoc polymorphism в системах со строгой типизацией? Нужно абстрагировать некий алгоритм, повысить степень DRY.

Ну как, делаем интерфейс, реализуем алгоритм в терминах этого интерфейса. Реализацию интерфейса подмешиваем в нужный класс – опля, этот класс можно пихать в упомянутый алгоритм.
Проверка типов в Scala делается через implicit переменные.


Повторюсь: как же люди без дактайпинга мучаются. Зато всё под контролем.




original post http://vasnake.blogspot.com/2016/07/scala-type-classes.html

2016-07-02

About Typeclasses, Spark and other FP shit

Я просто оставлю это здесь.

Пара материалов, опубликованных в недельной подборке на 47 Degrees
http://www.47deg.com/blog/fp-news-update-week-of-7-01

Как люди мучаются без ducktyping: вот, придумали typeclasses для выхода на следующий уровень абстракции. Зато всё под контролем
https://speakerdeck.com/raulraja/typeclasses-tour


12 видеороликов про Спарк
The video presentations from Spark Summit this June
https://www.youtube.com/watch?list=PL-x35fyliRwiz70bTSSK4HmOZ4JazCFUj&v=1a4pgYzeFwE






original post http://vasnake.blogspot.com/2016/07/about-typeclasses-spark-and-other-fp.html

2016-07-01

Пара пляжей на Пироговском

Сегодня разведали два пляжа на Пироговском водохранилище.
На обоих виндсерфер может выйти на воду относительно легко.
А если одолеет шлагбаум, так и вовсе заипца.
https://maps.yandex.ru/?um=constructor:WaVdZ4EoSLnD3jjLMAjycx1l4Y0d-XtV&source=constructor

Parallel computing: Amdahl's law

Закон Амдала ограничивает применимость параллельных вычислений.

Нет, не так. Закон устанавливает границы на количество параллельных процессов.
Обратно не так. Бляха. Короче:
любая задача, которую можно посчитать параллельно, имеет границу, после которой увеличение параллелизма уже не помогает ускорить вычисления.

Два прикольных видео на тему

Understanding Parallel Computing: Amdahl's Law



Understanding Parallel Computing (Part 2): The Lawn Mower Law



И одно серъезное

Amdahl's Law in the Multicore Era




original post http://vasnake.blogspot.com/2016/07/parallel-computing-amdahls-law.html

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)