Database Handling Using Lists
Category: programming
В рамках программы изучения Erlang я делаю упражнения из книги «Erlang programming» Франческо Чезарини и Саймона Томпсона. Оказалось что это на редкость полезное занятие, – теперь синтаксис не кажется таким уж страшным, и решение хоть и простых, но практических задач, придает уверенности в себе. Ниже я приведу условия задачи (уж простите, без перевода) и свой вариант решения (зачастую не оптимальный). Exercise 3-1: Evaluating Expressions Write a function sum/1which, given a positive integer N, will return the sum of all the …
Операции 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 -> “что-то там”. В остальном более-менее привычно, за исключением того что все время приходится мыслить “рекурсивно”. На самом деле, операторы …
Strings (строки) Символы в erlang представляются целыми числами, а строки – списками числовых значений ASCII символов. Это связано с тем что erlang пришел из телекома, а там, работа со строками это почти экзотика. Поскольку символы это ASCII, то в 32х разрядной версии для сравнения символа в памяти используется два байта, а в x64 – четыре, что не эффективно, но, насколько я понимаю, эта проблема решается в новых версиях. Разница между атомами, рассмотренными прежде, и строками в том что атомы можно …
Мы с командой пишем небольшое мобильное приложение. Было любопытно узнать что неспотря на всю бурность развития мобильных приложений, классических интерфейсных решений очень мало, при чем с планшетами дело обстоит даже хуже чем с телефонами. Поэтому хочу поделиться неплохим набором паттернов пользовательского интерфейса для 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
В нескольких последних проектах у нас были довольно жесткие требования по производительности и отказоустойчивости, и как следствие мы усложняли архитектуру, перекладывая часть работы на демоны, оставляя php только роль веб-фронтенда. Для демонов php принципиально не подходит, потому как работа с многопоточностью, всякого рода блокировками и утечками памяти это отдельная головная боль, которую приходится лечить вместо решения конкретной проблемы. Как-то исторически, мы использовали для этого дела питон, но и он не лишен недостатков, особенно в высоко нагруженной среде. Интерес к флексу …
Хочу поблагодарить Сергея, одного из своих читателей, задавших интересный вопрос. Я решил ответить на него в блоге, так как тема может быть интересна еще кому-нибудь. Вопрос был о том, насколько актуальна сегодня парадигма ООП, и что ждет программирование дальше. Сергей ссылался на интересное обсуждение здесь. Из комментариев этого обсуждения можно видеть, насколько тема неоднозначна и противоречива. Я, ни в коем случае не считаю себя большим экспертом в этой области, но есть некоторые мысли, которыми хочу поделиться, надеюсь это будет интересно, ведь недаром, спору «нужен ли C++» уже почти пол века. Первое, о чем хочется упомянуть, это …
Google app engine, очень удобная и гибкая платформа, для веб разработки, но к сожалению постоянно приходится думать об ограничениях, налагаемых на процессорное время, объем занимаемой памяти, запросы к хранилищу, тем самым, организовывая нас, заставляя писать более оптимизированный код. С другой стороны, а что если действительно нужно выполнять сложную операцию, или «тяжелый запрос»? Тогда хотелось бы «спрятать», сложности и ограничения app engine внутрь изящного синтаксиса python. В данном случае предлагается использовать питоновые итератиры, для того, что бы прозрачно для пользователя, выбирать неограниченное количество записей из app engine. Хотя, как видно из кода, все-таки некоторые ограничения …
Какое-то время назад я увлекся экспериментами с платформой google app engine. Впечатления очень положительные. Безусловно не всякое приложение можно сделать в силу ограничение на скорость работы скрипта, время работы, некоторые возможности (например сокетные коннекты). Подкупает простота. Сделано программистами для программистов. Масса возможностей и ничего лишнего. Очень легко настраиваются задачи запускаемые по времени (типа отложенных задач и типа задач по крону). Очень просто работать с хранилище, которое не совсем SQL, что конечно дает свои достоинства и недостатки, но надо не забывать что это хранилище с неограниченным горизонтальным масштабированием, что само по себе нечто. Кеш, авторизация, язык темплейтов — …
Какое-то время тому назад, мы с группой энтузиастов: Романом Павленко Денисом “Barmaleychik” Волохом Дмитрием “Reijii” Кочетовым Ростиславом “RostislavR” Сирыком cделали перевод документации к PureMVC а Клифф Холл опубликовал. Со временем в переводе было найдено массу огрехов, благодаря читателям flash-ripper.com но обновленный документ развалил нам структуру вордовского документа, который Клифф использует для конвертации документации в pdf, и окончательно опустив руки в борьбе с Microsoft Word исправленный перевод был закинут в долгий ящик. Недавно, разгребая завалы неоконченных дел, я нашел этот документ …