Все потоки
Поиск
Написать публикацию
Обновить
1015.82

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

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

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

10 особенностей Webpack

Время на прочтение8 мин
Количество просмотров80K
Webpack считается лучшим инструментом для сборки приложений на React и Redux. Полагаю, многие из тех, кто сегодня использует Angular 2 и другие фреймворки, не обходят вниманием и Webpack. И поскольку начинать работу с данным инструментом всегда непросто, я решил посвятить этой теме несколько публикаций в надежде облегчить старт другим разработчикам и заодно продемонстрировать некоторые особенности Webpack.

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

Памяти Соломона Голомба (1932-2016): автора регистра сдвига с линейной обратной связью максимальной длины и полиомино

Время на прочтение29 мин
Количество просмотров16K

Перевод поста Стивена Вольфрама (Stephen Wolfram) "Solomon Golomb (1932–2016)".
Выражаю огромную благодарность Полине Сологуб за помощь в переводе и подготовке публикации




Содержание


Наиболее часто используемый математический алгоритм в истории
Как я встретил Сола Голомба
История Соломона Голомба
Регистры сдвига
Предыстория регистров сдвига
Для чего нужны последовательности, генерируемые регистрами сдвига?
Ну и где же эти регистры?
Клеточные автоматы и регистры сдвига с нелинейной обратной связью
Полиомино
Остальная часть истории



Наиболее часто используемый математический алгоритм в истории


Октиллион. Миллиард миллиардов миллиардов. Это очень приблизительная оценка того, сколько раз мобильный телефон или другое устройство сгенерировало бит с помощью регистра сдвига с линейной обратной связью максимальной длины. Думаю, это самый используемый математический алгоритм в истории. Автор — Соломон Голомб, скончавшийся 1 мая, с которым мы были знакомы больше 35 лет.

Основой книги Соломона Голомба «Последовательности регистрового сдвига», опубликованной в 1967 году, были его работы 1950-х гг. А ее содержание живет в каждой из современных систем связи. Прочтите спецификации для 3G, LTE, Wi-Fi, Bluetooth или даже для GPS, — и вы найдете упоминания о многочленах, определяющих последовательности, генерируемые регистрами сдвига, которые эти системы используют для кодирования отправляемых ими данных. Соломон Голомб — человек, который создал эти многочлены.
Читать дальше о Соломоне Голомбе...

Интервью с Артёмом Малышевым, который выступит на Moscow Python в октябре

Время на прочтение3 мин
Количество просмотров6.3K
Айтишных конференций в Москве проходит много. Если ходить на каждую — то можно только этим и заниматься. Разработчики-интроверты ходить на конференции не очень любят: кто все эти люди, почему доклады либо неинтересны либо для полутора узких спецов, все равно ничего нового не узнаю и так далее. Но ходят. Потому что конференция — это уникальная возможность пообщаться с такими же разработчиками, которые собрались в одно месте специально для этого. А чтобы не промахнуться, мы ориентируемся на доклады.

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

На прошлой неделе я проинтервьюировал Ивана из Positive Technologies, который чуть больше чем через месяц расскажет нам, почему 100% покрытие тестами это плохо. А сегодня я предлагаю вам почитать ответы его коллеги Артёма Малышева, который расскажет нам про Django Channels. Штуку, благодаря которой больше не нужно будет каждый второй проект начинать с развертывания и настройки Celery.
Что мне рассказал Артём?

Android Data Binding for RecyclerView: flexible way

Время на прочтение7 мин
Количество просмотров15K


Со времени первого анонса на Google IO 2015 новой библиотеки Data Binding Library прошло немало времени. Появилось много примеров, много гайдов и много исправлений и доделок в самой библиотеке. Вот уже и биндинг стал two-way, и ссылаться на другие View по их id можно в самом layout-файле да и армия поклонников этой библиотеки неуклонно растет. И, наверное, каждый новый адепт начинает с поиска примеров — как правильно использовать так чтобы и удобно, и меньше кода, и по-феншуй. Если сейчас вбить запрос на подобии «Android DataBinding + RecyclerView» то, наверняка, получим целую кучу ссылок на различные гайды. Даже на Хабре уже была подобная статья — Android Data Binding in RecyclerView.

Но не смотря на такое обилие ресурсов/гайдов, многие из них показывают базовый функционал, и каждый разработчик, начиная активно использовать Data Binding, придумывает свой, удобный ему способ работы. Далее будет показан один из таких способов.
Пример тут: DataBinding_For_RecyclerView
Читать дальше →

Частные неструктурированные типы и повторное использование типов

Время на прочтение3 мин
Количество просмотров4.9K

В 1972 году три популярных компьютерных ученых написали книгу Структурное Программирование, где они упомянули частные неструктурированные типы:


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

(...) Такой тип называют перечислением (прим. enumeration), и мы советуем стандартную нотацию для имени типа и ассоциации имени типа с каждым из его альтернативных значений.
`
type suit = (club, diamond, heart, spade);
(...)
type year = 1900… 1960;
type coordinate = 0… 1023;
`
Читать дальше →

Изучаем OpenGL ES2 для Android Урок №4. Текстуры

Время на прочтение8 мин
Количество просмотров21K
Перед тем как начать

» Если вы новичок в OpenGL ES, рекомендую сначала изучить предыдущие 3 урока: раз / два / три
» Основы кода, используемого в этой статье, взяты отсюда и отсюда.

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


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

Вывод типов в программировании

Время на прочтение5 мин
Количество просмотров12K
При написании алгоритмов зачастую возникает ситуация, когда какая-то функция нуждается в вызове с тем же количеством аргументов, но с не совпадающими типами. Решаем.
Читать дальше →

Приглашаем на второй хакатон Neurohack

Время на прочтение2 мин
Количество просмотров5.7K


9 сентября в Москве при поддержке Mail.Ru Group стартует Neurohack 2.0 — это 48-часовой марафон, в ходе которого вы сможете воплотить свои идеи, связанные с темой искусственного интеллекта и нейронных сетей. Хакатон проводится благодаря сообществу ведущих ученых России — Science Guide.
Читать дальше →

Логика сознания. Часть 3. Голографическая память в клеточном автомате

Время на прочтение10 мин
Количество просмотров29K
Ранее мы описали клеточный автомат, в котором могут возникать волны, имеющие хитрый внутренний узор. Мы показали, что такие волны способны распространять информацию по поверхности автомата. Оказалось, что любое место автомата может быть, как приемником, так и источником волн. Чтобы принять волну в каком-либо месте, достаточно посмотреть, какой узор получается в нем в момент прохождения волны. Если этот узор запомнить и впоследствии воспроизвести в том же месте, то от этого узора распространится волна, повторяющая на своем пути узор исходной волны.

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

Автомат, который мы описываем обладает памятью. Точнее, памятью обладают все его элементы. Память элемента специфична. Единственное, что видит элемент автомата – это узор, составленный из активности своих соседей. Единственное, как элемент может отреагировать на тот или иной узор – это либо самому стать активным, либо, наоборот, выключиться. Память элемента – это набор запомненных им узоров с указанием, как на них реагировать: включаться или выключаться.
Читать дальше →

Intel Software Conference 2016. Сентябрь, Москва, Санкт-Петербург

Время на прочтение1 мин
Количество просмотров3.1K


В сентябре Intel приглашает профессиональных разработчиков, преподавателей и научных сотрудников, а также руководителей IT-компаний на конференцию Intel Software Conference. Вас ждут доклады ведущих российских и зарубежных специалистов о ключевых разработках Intel, в том числе о недавно вышедших новых версиях Intel Parallel Studio XE 2017 и Intel Media Server Studio.

В этом году конференция будет состоять из двух сессий: «Высокопроизводительные вычисления» и «Интернет вещей и медиа-приложения». В ходе первой сессии вы узнаете, как добиться максимальной эффективности ваших приложений на последних архитектурах Intel, в том числе на новейших процессорах Intel Xeon и сопроцессорах Xeon Phi. Вторая сессия будет посвящена эффективному использованию инструментов Intel на высокопроизводительных многоядерных и кластерных системах, а также на встроенных системах на базе архитектур Intel. Во время проведения конференции будет работать демо-зона, на которой будут показаны последние демо, используемые на международных мероприятиях.
Читать дальше →

1 сентября — снова на курсы

Время на прочтение3 мин
Количество просмотров24K


Первый день осени на всю жизнь ассоциируется с началом учёбы. Лето заканчивается, пора браться за ум дело. А чтобы вы не блуждали по сети в поисках учебных материалов, мы подготовили для вас небольшой обзор наших новых курсов лекций, мастер-классов и полезных трансляций. Добро пожаловать за виртуальную парту!

Пойдём от старого к новому. Для начала напомним о нашей последней мегаподборке, здесь учебных материалов хватит на несколько высших образований: «Время учиться: дайджест бесплатных образовательных материалов от Mail.Ru Group». А далее поговорим о новых материалах, туда не вошедших.
Читать дальше →

Биткойн — деньги для всех

Время на прочтение71 мин
Количество просмотров70K
Перевод книги Adam Tepper «Bitcoin — The People's Money». Книга представляет собой отличное введение в биткойн «с нуля», но может оказаться полезной и тем, кто уже разбирается в теме.


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

Извините, мы запускаем новый продукт

Время на прочтение7 мин
Количество просмотров24K

Иногда приходит время остановиться и взглянуть по-новому на то, что ты делаешь. Что если прежние решения когда-то казались верными, а теперь создают проблемы? Наберитесь храбрости и начните с чистого листа. А я тем временем расскажу, как 8 лет назад компания QIWI сделала коммерчески правильный выбор при запуске продукта, но в 2015 пришлось многое переделать.



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

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

Табы или пробелы? Анализ 400 тысяч репозиториев GitHub, миллиарда файлов, 14 ТБ кода

Время на прочтение3 мин
Количество просмотров97K


Для пытливых разработчиков до сих пор остается актуальным вопрос использования табуляции и пробелов для форматирования кода. Могут ли они быть взаимозаменяемы: например, 2 пробела на табуляцию или 4? Но единого стандарта нет, поэтому иногда между разработчиками возникает непонимание. Кроме того, различные IDE и их компиляторы обрабатывают табуляцию также по-своему.

Решением вопроса обычно становится соглашение о правилах форматирования в рамках проекта или языка программирования в целом.

Команда разработчиков из Google исследовала проекты в репозитории Github. Они проанализировали код, написанный на 14 языках программирования. Целью исследования было выявить соотношение табуляций и пробелов — то есть, наиболее популярный способ форматирования текста для каждого из языков.

Сортировка огромного файла с массивом при известном словаре данных

Время на прочтение2 мин
Количество просмотров15K
Привет Хабр! Недавно пришло интересное задание:
Имеется многогигабайтный файл, содержащий массив целых чисел от 1 до 10000. Элементы расположены хаотично с повторениями. Необходимо его отсортировать. Принять во внимание ограниченность в ресурсах.

Самым ленивым способом отсортировать можно используя «внешнюю сортировку со слиянием», но это весьма тяжёлый и долгий метод. В этой публикации я расскажу, какой метод пришёл мне в голову — я не смог не поделиться им.
Читать дальше →

iKnow Review Analyzer (iKRA)

Время на прочтение4 мин
Количество просмотров12K
image

Intro


С помощью технологии InterSystems iKnow мы сделали систему оценки отзывов под названием iKnow Reviews Analyzer (iKRA). О прототипе проекта можно прочитать здесь. iKRA анализирует текстовые отзывы пользователей, автоматически выставляя численную оценку предмету исследования. Эти функции могут быть очень кстати, например, на сайтах онлайн-продаж, тематических форумах или сборниках медиа контента. Другими словами, везде, где идет обсуждение сообществом каких-либо вещей.
Читать дальше →

Логика сознания. Часть 2. Дендритные волны

Время на прочтение16 мин
Количество просмотров48K

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

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

Let the Holy War begin: Java vs С++

Время на прочтение19 мин
Количество просмотров44K


В преддверии Joker 2016 мы накатали пост про Java Performance, который вызвал бурю эмоций у читателей. Дабы вбросить топлива в вентилятор и попытаться все-таки прийти к какому-то единому решению, мы решили привлечь экспертов из разных «лагерей»:

  • Дмитрий Нестерук. Эксперт по .NET, С++ и инструментам разработки, автор курсов по технологиям и математике, квант.
  • Андрей Паньгин. Ведущий программист компании Одноклассники, специализирующийся на высоконагруженных бэкендах. Знает JVM как свои пять пальцев, поскольку ранее на протяжении нескольких лет разрабатывал виртуальную машину HotSpot в Sun Microsystems и Oracle. Любит ассемблер и низкоуровневое системное программирование.
  • Владимир Ситников. Десять лет работает над производительностью и масштабируемостью NetCracker OSS — ПО, используемого операторами связи для автоматизации процессов управления сетью и сетевым оборудованием. Увлекается вопросами производительности Java и Oracle Database.
  • Олег Краснов. CTO компании SEMrush и адепт ANSI C.

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

Лекции Техносферы. Программирование на Perl (осень 2015)

Время на прочтение3 мин
Количество просмотров12K


Сегодня мы предлагаем вам ознакомиться с одним из курсов Техносферы, который посвящён программированию на Perl. Этот курс открытый — на него может записаться любой студент или аспирант МГУ имени М.В. Ломоносова. Также в Техносфере есть еще несколько открытых курсов, 1 сентября на них открывается запись. В этом семестре вас ждет приятное дополнение: они будут подкреплены методическим материалом, который будет содержать достаточно информации, чтобы по нему можно было вспомнить материал любой лекции и при необходимости более глубоко её изучить.

Цель курса «Программирование на Perl» — узнать возможности языка (его сильные и слабые стороны), научиться писать программные продукты на этом языке, научится быстро ориентироваться в чужом коде. Под катом находятся все лекции в формате видео и краткое описание к ним.
Читать дальше →

Когда «О» большое подводит

Время на прочтение8 мин
Количество просмотров37K


"О" большое — это отличный инструмент. Он позволяет быстро выбрать подходящую структуру данных или алгоритм. Но иногда простой анализ "О" большого может обмануть нас, если не подумать хорошенько о влиянии константных множителей. Пример, который часто встречается при программировании на современных процессорах, связан с выбором структуры данных: массив, список или дерево.


Память, медленная-медленная память


В начале 1980-х время, необходимое для получения данных из ОЗУ и время, необходимое для произведения вычислений с этими данными, были примерно одинаковым. Можно было использовать алгоритм, который случайно двигался по динамической памяти, собирая и обрабатывая данные. С тех пор процессоры стали производить вычисления в разы быстрее, от 100 до 1000 раз, чем получать данные из ОЗУ. Это значит, что пока процессор ждет данных из памяти, он простаивает сотни циклов, ничего не делая. Конечно, это было бы совсем глупо, поэтому современные процессоры содержат несколько уровней встроенного кэша. Каждый раз когда вы запрашиваете один фрагмент данных из памяти, дополнительные прилегающие фрагменты памяти будут записаны в кэш процессора. В итоге, при последовательном проходе по памяти можно получать к ней доступ почти настолько же быстро, насколько процессор может обрабатывать информацию, потому что куски памяти будут постоянно записываться в кэш L1. Если же двигаться по случайным адресам памяти, то зачастую кэш использовать не получится, и производительность может сильно пострадать. Если хотите узнать больше, то доклад Майка Актона на CppCon — это отличная отправная точка (и отлично проведенное время).

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

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