Blog Posts

Erlang. Операции if/then/else/case.

Операции if/then/else Напишем несложную функцию, находящую максимальный элемент массива: -module(test). -export([list_max/1]). list_max([]) -> []; list_max([Head | Rest]) -> list_max(Head, Rest). list_max(Head, []) -> Head; list_max(Head, [NewHead | List]) -> if Head > NewHead -> list_max(Head, List); true -> list_max(NewHead, List) end. 1> c(test.erl). {ok,test} 2> test:list_max([1,2,3,4,5]). 5 Первое, на что стоит обратить – аналог оператора else отсутствует, вместо этого true -> “что-то там”. В остальном более-менее привычно, за исключением того что все время приходится мыслить “рекурсивно”. На самом деле, операторы

Continue Reading

Erlang. Функции. Модули.

Функции Понятно что это такое, понятно для чего они используются. В erlang функции это все. Они вызываются, передаются в качестве аргументов, создаются другими функциями. Давайте определим, для примера, бесполезную функцию считающую произведение двух чисел: mul(A, B) -> A * B. В консоли такой синтаксис работать не будет, но можно изощрться создать через лямбда-функцию: 1> F = fun(A, B) -> A * B. 2> F(2, 3). 6 Классический пример факториала: factorial(0) -> 1; factorial(N) -> N * factorial(N-1). Как видите, сопоставление используется для аргументов

Continue Reading

Сопоставление.

Сопоставление (pattern matching) Сопоставление или pattern matching, это еще один способ присвоения, извлечения значений из списков или кортежей. Работает это так – сравнивается две переменные, если они не эквивалентны по типу или по значению возникнет исключение (ошибка). Если они равны, но отличаются только в переменных, то переменным в левой части выражения будет присвоено соответстветствующие значения справа. Проще всего это тоже пояснить на примере. Напомню, переменные всегда начинаются с заглавной: 1> {A, B} = {111, 222}. {111,222} 2> A. 111 3>

Continue Reading

Erlang. Строки. Работа со списками.

Strings (строки) Символы в erlang представляются целыми числами, а строки – списками числовых значений ASCII символов. Это связано с тем что erlang пришел из телекома, а там, работа со строками это почти экзотика. Поскольку символы это ASCII, то в 32х разрядной версии для сравнения символа в памяти используется два байта, а в x64 – четыре, что не эффективно, но, насколько я понимаю, эта проблема решается в новых версиях. Разница между атомами, рассмотренными прежде, и строками в том что атомы можно

Continue Reading

Erlang. Tuples, Lists.

Tuples (кортежи) Кортежи встречаются не во многих языках. Это своего рода контейнеры, которые могут содержать другие типы. Их часто сравнивают со структурами в C, только поля кортежа не имею имени. Несколько примеров: {1,2,3}. {a, b,c}. {}. {true, false}. {{1, 2, 3}, {one, two, three}, {"One", "Two", "Three"}}}. И несколько функций, для работы с кортежами: 1> tuple_size({one, {111, 222}, true, false, 3.1415}). 5 2> element(2, {one, {111, 222}, true, false, 3.1415}). {111,222} 3> setelement(2, {one, {111, 222}, true, false, 3.1415}, result).

Continue Reading

Erlang. Операторы. Atoms, Integers, Booleans.

Математические операторы Тип Описание Тип данных + Сложение (addition) Integer | Float – Вычитание (substraction) Integer | Float * Умножение (multiplication) Integer | Float / Деление с плавающей запятой (floating point division) Integer | Float div Деление нацело (integer division) Integer rem Остаток от деления (integer remainder) Integer Примеры использования математических операторов в консоли erlang: 1> 1 + -1. 0 2> 2/3. 0.6666666666666666 3> 3 div 2. 1 4> 3 rem 2. 1 Атомы (константы) Атомы это строковые константы типа:

Continue Reading

Мобильные интерфейсы

Мы с командой пишем небольшое мобильное приложение. Было любопытно узнать что неспотря на всю бурность развития мобильных приложений, классических интерфейсных решений очень мало, при чем с планшетами дело обстоит даже хуже чем с телефонами. Поэтому хочу поделиться неплохим набором паттернов пользовательского интерфейса для iOS и Android. Android Android Interaction Design Patterns Android Patterns iOS Inspired UI – mobile patterns Mobile UI Patterns | Recently Added Recent / iOS UI Patterns iPad Landing Pad — an iPad App Gallery

Почему Erlang?

В нескольких последних проектах у нас были довольно жесткие требования по производительности и отказоустойчивости, и как следствие мы усложняли архитектуру, перекладывая часть работы на демоны, оставляя php только роль веб-фронтенда. Для демонов php принципиально не подходит, потому как работа с многопоточностью, всякого рода блокировками и утечками памяти это отдельная головная боль, которую приходится лечить вместо решения конкретной проблемы. Как-то исторически, мы использовали для этого дела питон, но и он не лишен недостатков, особенно в высоко нагруженной среде. Интерес к флексу

Continue Reading

Маленькие хитрости и трюки с Amazon Kindle

Снимок экрана можно сделать по комбинации клавиш Alt-Shift-G Комбинация клавиш Alt-M запускает встроенную игру «минер» Если вы зальете фотографии на устройство, их можно будет просматривать Если вы читаете новости или проверяете почту через веб, лучше использовать мобильные версии, например m.gmail.com Не забывайте выключать wifi, он значительно быстрее разряжает батарею Отсылайте на свой имейл ваше-имя@free.kindle.com книги и документы и они автоматически попадут вам на читалку в сконвертированном виде после включения wi-fi Если вам нужно искать текст по всей библиотеке, вы просто печатаете этот текст на Home. По клику на найденной книге вы увидите все фрагменты содержащие искомый текст Киндл

Continue Reading

Site Footer

Sliding Sidebar

About Me

About Me

For whom this blog for?

For those who are interested in modern Internet technologies, IT business, startups, management, quality control, personal effectiveness, motivation. Here I write about what is interesting, about problems I faced and solutions I found. I hope it will be interesting to you either.

What motivates me to write?

The desire to improve, to study deeper topics that interest me. Find people with similar problems and tasks, together look for ways out and solutions.

Feel free to contact if you have anything to say to me

Old Flash site with my artistic works and misuc.