Рубрика «Программирование» - 720

Побеждаем злой вулкан с Rails и RGeo​ - 1
Автор: Сергей Зиновьев

Многие мобильные и веб-приложения включают в себя разные географические данные, ведь мы сталкиваемся с картами практически везде. Так, они используются в разных социальных приложениях — от геосоциальных сетей вроде Foursquare до сервисов по поиску попутчиков вроде BlaBlaCar. Google, Microsoft, Yahoo и многие другие IT-гиганты предоставляют свой API для простых операций: отображение карт, маркеров на этих картах и проведение наиболее востребованных вычислений. Популярный фреймворк для быстрой разработки Ruby on Rails часто используется для разработки геоинформационных систем (ГИС) и веб-приложений с использованием картографических данных. На простом примере продемонстирую, какие проблемы могут ждать при использовании пространственных данных и как их избежать в Ruby on Rails-приложении.

Как не встретиться со злым вулканом

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

Дэниэл предлагает нам рассмотреть следующую гипотетическую ситуацию. Представьте самолет, которому нужно совершить рейс из Сан-Франциско в Афины во время очередного извержения ТогоСамогоВулканаКоторыйНевозможноПроизнести в Исландии. Задача летчика — спланировать маршрут так, чтобы пролететь на безопасном расстоянии от вулкана. Также ему нужно знать длину маршрута, чтобы заправить самолет достаточным количеством топлива. Чтобы верно все рассчитать, командир воздушного судна делает запрос в центр организации воздушного движения.Читать полностью »

Представьте, что у вас есть legacy проект Asp.NET MVC версии 5, которому немало лет. В нем используется самописный ResourceProvider, который умеет доставать из базы ресурс и показывать его на UI. В зависимости от различных условий (например, от того, откуда пользователь пришел на сайт), ресурсы будут показаны разные. Теперь пришло время сделать так, чтобы все намертво захардкоженные строки в Data Annotation атрибутах, такие как:

[Display(Name = "Username")]
[Required(ErrorMessage = "Please enter the username")]
[StringLength(64, ErrorMessage = "Username cannot exceed 64 characters")]
public string Username{ get; set; }

тоже могли получать свои значения, используя ResourceProvider. Как это сделать, используя немного наследования и доступной в Asp.NET MVC кастомизации, я покажу под катом.
Читать полностью »

Символьная регрессия считается очень интересной. «Найди мне функцию, которая будет лучше всего подходить для решения поставленной задачи». И на Хабре я уже встречал пост, в котором автор рассматривал один из эволюционных алгоритмов в применении к этой проблеме (вот он).

Генетическое программирование действительно является мощным методом. Но в этой статье я хочу рассмотреть другой (не менее интересный) метод — грамматическая эволюция. Рассказывать о нем долго не буду. Скажу лишь то, что метод использует свободную грамматику в форме Бакуса-Наура, а также любой эволюционный алгоритм в качестве «движка» (я выбрал генетическое программирование). И метод очень крутой!
Читать полностью »

Привет. В этой статье я кратко расскажу о деталях реализации микросервисной архитектуры с использованием инструментов, которые предоставляет Spring Cloud на примере простого концепт-пруф приложения.

Микросервисная архитектура, Spring Cloud и Docker - 1

Код доступен для ознакомления на гитхабе. Образы опубликованы на докерхабе, весь зоопарк стартует одной командой.Читать полностью »

Как объять необъятное: система сборки .NET Micro Framework Часть 1 - 1

Большинство разработчиков давно привыкли использовать ту или иную IDE и не задумываются о том, как их исходный код превращается в исполняемый модуль. Современные средства разработки содержат UI и автоматизацию сборки для огромного числа типов проектов на все случаи жизни. И это очень здорово, так как позволят не задумываться над вещами, не имеющими непосредственного отношения к решаемой задаче. Но иногда задача бывает настолько сложной, что уже не получается использовать стандартные типы проектов. И тут появляется "Система сборки проектов".

Ярким примером такого типа проектов является .NET Micro Framework — реализация платформы Microsoft .NET для микроконтроллеров. В этой статье будет сделан обзор его системы сборки и особенности ее реализации.

Читать полностью »

Предыдущую статью восприняли лучше, чем я ожидал, так что решился на продолжение эксперимента. Это своеобразный ответ на перевод статьи Programming in D for C Programmers за авторством Дмитрия aka vintage. Как мне кажется, в области применения C Rust более уместен, чем замена Go, как предполагалось в прошлой статье. Тем интереснее будет сравнить. Опять таки, код на С приводить не буду, тем более что аналог на D всё равно смотрится лаконичнее.

Читать полностью »

Заявки студентов на проекты KolibriOS в рамках Google Summer of Code - 1

25 марта закончился приём заявок от студентов в рамках Google Summer of Code. Всего подавали заявки 16 человек, т. е. некоторые студенты подали заявки сразу на несколько проектов. Поступили заявки от студентов из Индии (6), Испании (1), России (7), Украины (1), США (1). И нам было надо определиться с количеством проектов, финансовую поддержку которых мы просим у Google.
Читать полностью »

На первый взгляд, dynamic в C# — просто object с поддержкой машинерии компилятора. Но не совсем.

Ядром времени выполнения является DLR (Dynamic Language Runtime) — подсистема/фреймворк для поддержки динамических языков программирования. Существует реализация под собственно C#, который идет в поставке с .NET и отдельная для Iron-языков.

Когда мы работаем с обобщениями (generics), то CLR имеет свои оптимизации на предмет специализации оных. В тот момент, когда CLR+DLR должны работать с generics вместе, поведение написанного кода может стать непредсказуемым.
Читать полностью »

Dynamism of A Dog on a Leash (1912) Giacomo BallaВообще, в InterSystems Caché и динамические объекты, и поддержка JSON есть уже достаточно давно, но в версии 2016.1 они были переосмыслены, а код реализации переведён с COS уровня на уровень ядра/С, что позволило добиться существенного повышения производительности в этих областях. О том, что есть нового и как переходить (а также о том, как сохранить совместимость с предыдущими версиями) я расскажу в этой статье.

Возможности по работе с JSON

И начну с примера. Теперь такой синтаксис — работает и это самое большое нововведение в синтаксисе COS:
Читать полностью »

Бродя по просторам интернета, заинтересовался такой вещью как генетическое программирование. Если в двух словах, это автоматическое создание программ, которые выполняют ту или иную цель, в соответствии с принципом естественного отбора. То есть сначала случайным образом создается поколение «существ»-программ, которые сортируются по разным критериям (близость к достижению цели), затем часть из них мутирует (также случайно), часть вымирает и часть заменяется новыми случайными существами.

Таким образом, самые достойные существа продолжают свое дело и дают потомков, а самые слабые — отсеиваются в процессе отбора. Несколько экспериментов и их результаты — под катом.

Генетическое программирование. ELTRUT-проблема - 1
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js