Обновить
1372.45

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Rust и Swift (третья, четвёртая, пятая и шестая части)

Время на прочтение9 мин
Охват и читатели9.1K

Продолжаю переводить цикл, в котором автор параллельно изучает Rust и Swift и сравнивает их между собой. Перевод вступления и первых двух частей вы можете найти тут. В этой части речь пойдёт о перегрузке операторов, манипуляциях со строками и коллекциях.

Читать дальше →

PHP UK Conference 2016

Время на прочтение5 мин
Охват и читатели6.4K
В начале каждого года мы с коллегами составляем список интересных нам конференций, как российских, так и зарубежных. Поскольку я многократно посещал «конференции широкого профиля», то в этот раз решил посетить более узкоспециализированную, и мой выбор пал на PHP UK Conference.

PHP UK Conference проводится с 2006 года и изначально задумывалась как профильная конференция для местного PHP-сообщества, где разработчики могли бы делиться знаниями и узнавать из первых уст о об опыте профессионалов и последних достижениях в индустрии.
Читать дальше →

F.A.Q. по Java-конференции для студентов в Москве

Время на прочтение3 мин
Охват и читатели6.1K


В последнее время мы получаем множество запросов по JPoint 2016 Student Day — Java-конференции для студентов, которую мы проведем в Москве уже в следующее воскресенье, 24 апреля.

Среди наиболее часто задаваемых вопросов — следующие:
  • зачем мы делаем конференции для студентов?
  • откуда взялось возрастное ограничение на участников — 25 лет?
  • чем конференция отличается от «взрослого» JPoint?
  • будет ли онлайн-трансляция?


В этом посте я постараюсь расставить все точки над i и объяснить, что к чему.
Читать дальше →

QtWebApp — пошаговый разжёванный пример с подробными комментариями

Время на прочтение13 мин
Охват и читатели32K


В процессе разработки приложения на Qt, может понадобиться добавить в данное приложение веб-интерфейс, что особенно может быть актуально при разработке встраиваемых систем с использованием Qt. Для решения данной задачи можно либо написать собственное решение, либо воспользоваться готовыми решениями. Например, библиотекой QtWebApp, которая предоставляет необходимый функционал для создания web-интерфейса.

К достоинствам данной библиотеки можно отнести:
  1. формирование страниц с динамическим содержанием по шаблонам;
  2. формирование полностью динамических страниц;
  3. работу с Cookie, что позволит добавить авторизацию на приложении;
  4. работу со статическими файлами, например, style.css или изображения;
  5. реализацию загрузки файлов.

Предлагаю подробно рассмотреть один из вариантов запуска небольшого приложения на Qt, которое будет иметь несколько web-страниц, работающих с применением библиотеки QtWebApp.

На момент написания статьи изначально использовалась библиотека QtWebApp 1.6.3 и Qt 5.6. Проект успешно был запущен с комплектами сборки MSVC2013 и MinGW. В процессе отладки был замечен баг в классе Template библиотеки QtWebApp. После исправления бага и связи с разработчиком версия библиотеки была повышена до 1.6.4. Исходя из этого, можно отметить также плюс библиотеки, что разработчик ответил в течение суток на информацию о баге, и в тот же день версия библиотеки была повышена. Окончательный вариант примера приложения был подготовлен на версии 1.6.4.
Читать дальше →

Искусственный интеллект: что о нем думают ученые

Время на прочтение6 мин
Охват и читатели34K


Сегодня об искусственном интеллекте не пишет только ленивый. Например, в Autodesk считают, что искусственный интеллект может учитывать гораздо больше факторов, чем человек, и, таким образом, давать более точные, логичные и даже более креативные решения сложных проблем. В Оксфордском университете вообще высказывают предположения о том, что искусственный интеллект в недалеком будущем может заменить штатных журналистов и писать за них обзоры и статьи (и того и гляди выиграет Пулитцеровскую премию).

Общее увлечение темой искусственного интеллекта давно вышло за рамки научных конференций и будоражит умы писателей, кинематографистов и широкой общественности. Кажется, что от будущего, в котором роботы (или Скайнет) правят миром или, как минимум, решают большую часть повседневных задач, рукой подать. Но что по этому поводу думают сами ученые?
Читать дальше →

Бесплатный мониторинг CRC ошибок

Время на прочтение4 мин
Охват и читатели15K
image

Нередко на сети хранения данных возникают такие неприятные вещи, как рост числа ошибок на портах и увеличение уровня затухания сигнала на sfp модулях. Принимая во внимание высокий уровень надежности SAN инфраструктуры, состоящей из двух и более фабрик, вероятность возникновения аварийной ситуации не так велика, но наложение негативных факторов может привести к потере данных или деградации производительности. К примеру, представьте себе ситуацию: на одной из фабрик проводится обновление FOS, все работает через вторую фабрику, а на ней между коммутатором к которому подключен дисковый массив и коммутатором к которому подключены серверы начинают быстро расти CRC ошибки на одном из транковых портов. Или еще хуже, пропадает линк из-за понижения уровня сигнала, вызванного повышением температуры SFP модуля, которая в свою очередь возросла из-за повысившейся утилизации данного канала. В таких случаях обычно говорят: «Ну кто же знал» или «100% надежных систем не бывает» и тд.
Читать дальше →

Что такое грамматическая эволюция + легкая реализация

Время на прочтение8 мин
Охват и читатели10K
Совсем недавно я написал статью, в которой без объяснений показал то, на что способен метод грамматической эволюции. Я полностью, согласен, что так делать нельзя, но как хотелось показать результаты интересного метода. Я думал «что будет лучше: перевести первоисточник или дать свое собственное объяснение». Лень взяла верх.

Если кому-то интересны эволюционные методы и задача символьной регрессии(и не только), то прошу к прочтению.
Читать дальше →

Пишем замену find(1) на golang под Linux

Время на прочтение4 мин
Охват и читатели15K
Для одной внутренней утилиты мне понадобилось написать сканирование изменений в директории, по аналогии с утилитой find, и я столкнулся с неожиданной вещью: стандартный Open()+Readdir()+Close() в go очень медленным по сравнению с тем, как работает linux'овая утилита find. На картинке можно видеть strace этой утилиты. Можно видеть, что она делает какие-то очень странные системные вызовы, и в этих системных вызовах мы и попытаемся разобраться и написать аналог find на go, который будет работать только под Linux, но зато со сравнимой скоростью.

Читать дальше →

Перегружаем стандартные DataAnnotation атрибуты для использования с custom resource provider

Время на прочтение3 мин
Охват и читатели5.5K
Представьте, что у вас есть 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 кастомизации, я покажу под катом.
Читать дальше →

Символьная регрессия и еще один подход

Время на прочтение2 мин
Охват и читатели10K

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


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


Читать дальше →

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

Время на прочтение14 мин
Охват и читатели269K

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



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

Читать дальше →

man!(C => D => Rust)

Время на прочтение10 мин
Охват и читатели12K

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

Читать дальше →

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

Время на прочтение2 мин
Охват и читатели8.7K


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

Ближайшие события

The dangers of not looking ahead

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

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

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

Новые динамические объекты и поддержка JSON в InterSystems Caché

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

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


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

Семь вещей, которые нужно знать начинающему программисту

Время на прочтение4 мин
Охват и читатели39K
Если вы недавно в мире профессиональных разработчиков, вы могли слышать о вещах, которым не учат в университете или на курсах.

Выпускник ли, начинающий карьеру разработчика, или человек, переходящий к программированию из другой сферы, остановись и прочти эти семь советов для начинающих программистов от тех, кто занимается этим уже много лет.


Читать дальше →

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

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

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


Читать дальше →

Пять причин, почему мы отказались от русского перевода конференции “Piter Py”

Время на прочтение2 мин
Охват и читатели11K

Раз в год мы собираем в Питере python-программистов из разных уголков, чтобы послушать доклады и пообщаться. Мы считаем, что конференции не для обучения, а для общения и обмена опытом. Приходить на конференцию чтобы слушать то, что можно за пять минут прочитать на stackoverflow — не самое лучшее занятие. Приходить, чтобы пообщаться с коллегами-разработчиками, обсудить индустрию, подзардиться позитивной энергетикой — правильный способ максимально эффективно использовать возможности конференции.

Зачем вы это сделали?!

Что такое Simics?

Время на прочтение8 мин
Охват и читатели11K
Simics – полноплатформенный симулятор, используемый для запуска немодифицированных исполняемых файлов целевой платформы. Изначально разрабатывался Шведским институтом информатики, из которого в 1998 году была выделена компания Virtutech для коммерческой разработки симулятора. В 2010 году компания Virtutech была приобретена компанией Intel, и сейчас симулятор Simics продаётся ее дочерней компанией Wind River Systems.
Simics может симулировать системы с архитектурой Alpha, x86-64, IA-64, ARM, MIPS (32х- и 64х-битной), MSP430, PowerPC (32х- и 64х-битной), POWER, SPARC-V8 и x86. На разнообразных симулируемых системах были запущены многие операционные системы, включая MS-DOS, Windows, VxWorks, OSE, Solaris, FreeBSD, Linux, QNX и RTEMS. Портирование операционной системы NetBSD на процессоры AMD64 было изначально осуществлено с использованием симулятора Simics до публичной доступности данных процессоров. Часто Simics используется как виртуальная платформа для разработки ПО для конкретного вида встроенных аппаратных средств. Одной из уникальных возможностей симулятора является возможность проигрывать симуляцию в обратном направлении.
Текущая версия симулятора 5.0, она доступна для операционных систем Windows и Linux.
Узнать больше о Simics

Студенческий JPoint — счастливый билет в будущее

Время на прочтение9 мин
Охват и читатели7.3K
Кто ещё не знает, 24 апреля 2016 года в Москве пройдёт JPoint Student Day — конференция для студентов, изучающих Java-технологии и JVM-языки. На ней выступят гуру Java-мира с докладами, которые совсем не похожи на то, что читают на лекциях и рассказывают на практике. Это будет полное погружение в мир настоящей, боевой разработки — для кого-то первое, а для кого-то более тесное знакомство с профессией. Причём это не будет игра в одни ворота — можно будет задавать вопросы докладчикам, общаться с ними в перерывах и любое свободное время, рассказывать о своих проектах и заводить полезные знакомства. Которые, поверьте, вам пригодятся совсем скоро. Но обо всём по порядку.


Читать дальше →

Вклад авторов