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

image

Пишу данную статью для того, чтобы закрепить знания полученные в процессе изучения языка Elixir и его инфраструктуры. Надеюсь, что данная статья будет полезна программистам решившим писать Elixir-приложения.

Вступление

"Elixir — динамический, функциональный язык программирования, разработанный для создания масштабируемых и легко поддерживаемых систем." — elixir-lang.org

Используя Elixir для создания ваших приложений вы обязательно столкнётесь с Mix. Он станет вам незаменимым помощником, так как через него вы сможете выполнять такие команды как создание, сборка, тестирование и публикация приложений, а также управление зависимостями и многое другое. Если вы знакомы с Ruby, то этот инструмент очень похож на Bundler, RubyGems и Rake, вместе взятые. В двух словах Mix — это удобный инструмент, который поставляется с Elixir и выполняет не меньше задач, чем швейцарский нож.

Инициализация нового приложения

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

image

11 декабря 2016 Marionette.js исполняется 5 лет. Этот проект постепенно рос все эти годы. Его развивали сотни контрибьюторов, было создано сотни коммитов и десятки сотен проектов, которые используют Marionette. Мы были инновационными и были устаревшими. Мы видели как новые фреймворки приходят и некоторые уходят. Мы, возможно, никогда уже не будем новыми и модными, но мы будем делать все возможное чтобы постоянно двигаться вперед.

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

Неуловимые баги: ошибки, ускользнувшие от всех тестов и проверок - 1

Даже в относительно простых продуктах изредка встречаются баги, которые успешно скрываются от любых тестов и попадают в релиз. И чем сложнее приложение, тем выше вероятность появления таких багов. В продуктах, содержащих миллионы строк кода, вообще нереально выловить все ошибки, можно лишь максимально снизить их поголовье к выпуску очередной версии. И после релиза такие баги иногда дают о себе знать. О том, как мы охотимся за нинзя-багами и чем мы их лечим, нам рассказал Александр Гречишкин, project manager Parallels.Читать полностью »

Гарвардский курс CS50 «Основы компьютерных наук и искусства программирования» - 1

Вот уже несколько месяцев специально для JavaRush мы переводим и озвучиваем самый популярный в мире университетский курс о CS50 — «Основы компьютерных наук и искусства программирования» (трейлер). Его уже много лет очно читают для студентов Гарварда и для воспитанников Йельского университета, а в последнее время ещё и заочно для многомиллионной аудитории интернета.
Это перевод самой новой версии курса, который стартовал осенью 2015 года. В курсе 24 лекции и постепенно мы переведём их все. Намедни мы перевели 15-ю лекцию, её вы найдёте под катом в списке всех переведённых на сегодняшний день лекций.

Что вы узнаете, прослушав этот курс:

  • Основы компьютерных наук и программирования;
  • Концепции алгоритмов и алгоритмичности мышления. Какие задачи можно решать с помощью программирования и каким образом;
  • Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка;
  • Основы языка программирования C и Scratch;
  • Основы баз данных и SQL;
  • Веб-разработка: основы CSS, HTML, JavaScript и PHP;
  • Основы подготовки презентации проектов по программированию.

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

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

Состоятельный человек

Далее вы узнаете: как реактивность побеждает асинхронность, как императивная реактивность уживается с функциональной, как простые абстракции позволяют писать надёжный и быстрый код, а также как я однажды перешёл на идемпотентную сторону силы и всё заверте

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

Прим. перев.: Это перевод истории о том, как нелегко оказалось написать параллельную быструю сортировку (quicksort) на Хаскеле. Оригинал статьи написан в 2010 году, но, мне кажется, он до сих пор поучительный и во многом актуальный.

Есть много примеров того, как Хаскель делает простые проблемы сложными. Вероятно, самый известный из них—это решето Эратосфена, которое легко написать на любом императивном языке, но настолько сложно написать на Хаскеле, что почти все решения, которые преподавались в университетах и использовались в исследованиях последние 18 лет, оказались неправильными. На их несостоятельность обратила внимание Мелисса О'Нил [Melissa O'Neill] в своей важной научной работе "Настоящее решето Эратосфена". В ней приводится прекрасное описание того, что не так в старых подходах, и как их надо исправить. Решением Мелиссы было использовать очередь с приоритетом [priority queue] для реализации решета. Правильное решение оказалось в 10 раз длиннее, чем намного более простое решение на F# и в целых 100 раз длиннее, чем оригинальный изуродованный алгоритм на Хаскеле.
Читать полностью »

mctf

Доброго времени суток! В этом небольшом опусе я хотел бы глазами участника рассказать как проходят соревнования CTF типа attack-defence и, в частности, освятить минувшее соревнование m*ctf. Но перед всем этим хочется поблагодарить свой Университет Иннополис за возможность побывать на этом (и множестве других) мероприятий.

Под катом как организационные, так и технические детали прошедших соревнований. И конечно же много-много фотографий!

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

Статья-конспект по книге Роберта Мартина «Идеальный программист». После прочтения книги у меня поменялось отношение к программистической жизни. В книге рассматривается процесс написания кода, сам код, отношение к задачам, TDD и много других полезностей. Читать нужно разработчикам и менеджерам проектов. Частично применимо к дизайнерам.
Идеальный программист. Часть 1 - 1
Читать полностью »

image

Продолжение исследования способов ускорить компиляцию Swift.
Издевательство над семантическим анализатором и неожиданные настройки проекта.

Ссылка на первую часть для тех, кто пропустил.

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

Мейнтейнер ядра Linux забраковал патч для AMDGPU - 1

8 декабря 2016 года компания AMD выложила для скачивания последнюю версию проприетарного драйвера AMDGPU-PRO 16.50 для операционных систем на ядре Linux. Этот драйвер основан на свободном модуле ядра AMDGPU. В нём реализована поддержка DirectGMA для OpenGL и технологии FreeSync, которая в некоторых гибридных и графических процессорах AMD решает проблему коммуникации между процессором и монитором и устраняет разрывы изображения, особенно в играх. AMDGPU-PRO 16.50 поддерживает некоторые модели графических ускорителей GNC 1.0 AMD серии Southern Islands, а именно Radeon R7 M465X, AMD Radeon R7 M370 и AMD Radeon R7 M350. Опубликованы скрипты для установки на RedHat Enterprise Linux 7.3, CentOS 7.3, CentOS 6.8, and SLED/SLES 12 SP2.

Одновременно представитель компании AMD Гарри Уентлэнд (Harry Wentland) обратился в список рассылки разработчиков ядра Linux с предложением включить в ядро скромный патч размером около 100 000 строк кода со слоем аппаратных абстракций. Мейнтейнер ядра Дэйв Эйрли (Dave Airlie) доступно объяснил представителю AMD, почему такой патч не примут в ядро. Хотя мейнтейнер не вспоминал знаменитую фразу Линуса в адрес Nvidia, но многие помнят те слова. AMD тоже отправили в пешее путешествие, пусть и не в такой грубой форме.
Читать полностью »


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