Pull to refresh
1
0.1

User

Send message

Советуют разработчики: подборка популярных книг о программировании, языках, алгоритмах

Reading time9 min
Views64K
В сегодняшнем материале мы собрали одни из наиболее популярных книг, отобранных самими разработчиками — резидентами Reddit, Quora, Stack Exchange, Stack Overflow и Hacker News.

В нашу подборку попали работы по популярным языкам программирования, проектированию ПО, работе с Linux-системами, сборники практических советов для разработчиков — от начинающих, до опытных. Объединяют эту подборку высокие оценки самих программистов, которым эти книги помогали на разных этапах их карьеры.

Читать дальше →
Total votes 27: ↑22 and ↓5+17
Comments12

Что ещё необходимо узнать про OpenCL C перед тем, как на нём писать

Reading time13 min
Views16K
Как было написано
float4 val = (0, 0, 0, 0);

Что хотел написать автор
float4 val = (float4)(0, 0, 0, 0);

Как нужно было написать
float4 val = 0;


Если Вы сталкивались с OpenCL или планируете столкнуться и не видите разницы между первым и вторым вариантом, а третий вызывает у Вас сомнения — «А скомпилируется ли вообще?» — добро пожаловать под кат, там много нюансов языка и совсем ничего про API и оптимизацию производительности.
Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments4

Нотной грамоте учат неправильно*

Reading time11 min
Views236K

ФейспалмПреподаватели готовы разделить с вами все таинства музыкальной теории но не раньше, чем вы научитесь читать эти закорючки самостоятельно.


Предполагается, что студент должен страдать самостоятельно освоить ноты, путем многократного повторения. И вообще, если «ниасилил», значит у тебя нет Таланта — иди мести двор.


Представьте что было бы, если бы обычной грамоте учили так же. Но мы, почему-то, в большинстве своем читать и писать таки научились.


Под катом я опишу свою методику, которая на мой дилетантский взгляд работает лучше, чем то, что обычно предлагают начинающим.


* Дисклеймер

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


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


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


Эффективность я оценивал исключительно на себе, поскольку сей субъект оказался самым доступным для исследования.

Читать дальше →
Total votes 124: ↑123 and ↓1+122
Comments212

Объяснение SNARKs. Спаривание эллиптических кривых (перевод)

Reading time6 min
Views5.9K
Привет, Хабр! Представляю вашему вниманию перевод статей блога ZCash, в которых рассказывается о механизме работы системы доказательств с нулевым разглашением SNARKs, применяемых в криптовалюте ZCash (и не только).

Источник

Предыдущие статьи:

Часть 1: Объяснение SNARKs. Гомоморфное скрытие и слепое вычисление полиномов (перевод)
Часть 2: Объяснение SNARKs. Знание о принятом коэффициенте и достоверное слепое вычисление полиномов (перевод)
Часть 3: Объяснение SNARKs. От вычислений к многочленам, протокол Пиноккио и спаривание эллиптических кривых (перевод)
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments2

Достижение максимальной производительности Быстрого Преобразования Фурье на основе управления данными

Reading time1 min
Views19K
Статья поддерживается здесь:
[3] Caterpillar Implementation Based on Generated Code

// не вижу смысла писать на ресурсе а) с цензурой тэгов б) где каждый проходящий бот, набравший рейтинг галиматьей, сносит твой рейтинг и объяснение причины с него не требуется
Total votes 23: ↑22 and ↓1+21
Comments15

Способы визуализации в многомерных играх

Reading time3 min
Views12K
… Пару лет назад здесь уже был топик на сходную тему, хочу поделиться своими соображениями…

Одной из проблем, возникающих при написании игры, пространство действия которой содержит больше трех пространственных измерений, является визуализация сцены действия, в достаточной мере понятная пользователю, и пригодная для управления как персонажем (или объектом) игры, так и виртуальной камерой, создающей изображение.
Большинство многомерных игр, которые попадались мне в последнее время, были головоломками — аналогами кубика Рубика. Но для разных размерностей головоломки авторам приходилось использовать различные способы визуализации.

Читать дальше →
Total votes 72: ↑69 and ↓3+66
Comments108

Правильные многогранники. Часть 2. Четырёхмерие

Reading time10 min
Views26K
Предыдущая публикация: Правильные многогранники. Часть 1. Трёхмерие

Вступление

image
Вижу, что на Хабре люди серьёзные собрались. Статью про трёхмерие на счёт «раз» разобрали. Однако пространствами постоянной кривизны никого не удивишь в наше время. Тем не менее всегда находятся желающие заглянуть выше, в четырёхмерие. Ну что ж, именно с такими любознательными коллегами мы продолжаем разговор и переходим на следующий уровень по размерности.

Моя задача не просто рассказать про разбиения пространств постоянной кривизны любой размерности на правильные многогранники, а сделать это так, чтобы материал поняли даже вчерашние школьники, окончившие 11 классов. Я люблю статьи на Хабре именно за их доходчивость, понятность, простоту, не смотря на сложность материала, и в таком же качестве стараюсь подавать сведения в публикациях. В ВУЗах и в отечественных публикациях предлагаемый материал возможно рассматривается, но, как мне кажется, не в таком виде. Думаю, что информация будет полезна и для студентов. В иностранной литературе данный материал есть, соответственно не на русском языке, в сильно сжатом виде и с использованием высшей математики. Тут я всё «разжёвываю» для школьников, без высшей математики, фактически на одной геометрической интуиции. Мы увидим в следующей статье, как будет сделан переход от 4D к 5D с помощью геометрии, наглядно, без высшей алгебры. Это будет самый сложный шаг, но кто его поймёт, тот поймёт и все остальные размерности от 6 и выше. Не уверен, что мне удалось всё основательно «разжевать», поэтому, если будут дополнительные вопросы — задавайте, это поможет мне улучшить статью.

В данной публикации идея выкладок полностью та же, что и в предыдущей статье, только на одну размерность выше
Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments29

Правильные многогранники. Часть 1.1 Символ Шлефли

Reading time13 min
Views26K
image Хабрахабр, уважаемые коллеги! Когда смотрю на соты, то думаю не о пчёлах, а о Символе Шлефли. Прочитав эту статью, вы уже не сможете смотреть на мир по старому, вы поймёте, что между сотами и правильными многогранниками есть прямая связь.

По опыту разъяснения друзьям вывода правильных многогранников в четырёхмерном пространстве и пространствах высших размерностей, оказывается, что мало кто знает, что такое Символ Шлефли, поэтому решил посвятить этому отдельную статью с картинками, без аналитических вычислений, которые делаются у меня в других, соседних, статьях, при непосредственном выводе многогранников. В данной статье моя задача дать образно-интуитивное понимание термина Символ Шлефли, поэтому я не буду тратить ваше внимание на строгие определения и формулировки, которые можно почитать в википедии. Понятие Символа Шлефли будем осваивать от лёгкого к трудному. Самое простое на плоскости.
Total votes 42: ↑41 and ↓1+40
Comments25

Повторное использование кода — как это бывает на практике

Reading time8 min
Views17K
Среди программистов очень популярны разговоры о «повторном использовании кода» — и в основном об этом говорят в позитивном ключе. Нам нравится говорить, что спроектированные нами конструкции являются «универсальными» и «пригодными к использованию в других проектах». Почему это считается хорошей вещью легко понять — всем хочется реализовать следующий проект вдвое быстрее предыдущего за счет использования уже имеющихся наработок.

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

Это указывает нам на изъяны в теории о том, что переиспользование всегда является желанной и благородной целью.
Читать дальше →
Total votes 27: ↑24 and ↓3+21
Comments16

Трёхмерная графика с нуля. Часть 1: трассировка лучей

Reading time42 min
Views130K
image


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

В этой работе мы сосредоточимся не на скорости, а на чётком объяснении концепций. Код примеров написан наиболее понятным образом, который не обязательно является самым эффективным для реализации алгоритмов. Есть множество способов реализации, я выбрал тот, который проще всего понять.

«Конечным результатом» этой работы будут два завершённых, полностью рабочих рендереров: трассировщик лучей и растеризатор. Хотя в них используются очень отличающиеся подходы, при рендеринге простой сцены они дают схожие результаты:


Читать дальше →
Total votes 90: ↑90 and ↓0+90
Comments53

Learn OpenGL. Урок 4.1 — Тест глубины

Reading time10 min
Views35K
OGL3

Буфер глубины


В уроке, посвящённом системам координат, мы выполнили рендер трехмерного контейнера с использованием буфера глубины, что позволило предотвратить ошибочный вывод граней, находящихся позади других. В этом уроке мы пристальнее взглянем на буфер глубины (или z-буфер) и хранимые в нем значения, а также узнаем как конкретно проходит проверка находится ли фрагмент позади других.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments3

Прекрасные чудовища математики

Reading time11 min
Views55K
image

UPD: добавлен график функции.

Подобно своему создателю Карлу Вейерштрассу, это чудовище возникло из ниоткуда. Потратив четыре года учёбы в университете на кутежи и фехтование, Вейерштрасс выпустился из него с пустыми руками. В конце концов он взялся за преподавание и бо́льшую часть 1850-х был школьным учителем в Браунсберге. Ему была отвратительна жизнь в маленьком прусском городишке, он находил своё существование там одиноким. Единственной отдушиной для него стали математические задачи, над которыми он работал между уроками. Но ему не с кем было поговорить о математике, и у него не было технической библиотеки для обучения. Даже результатам его работ не удавалось покинуть пределов Браунберга. Вместо публикации в академических журналах, как это сделал бы университетский исследователь, Вейерштрасс добавлял их к школьным проспектам, пугая потенциальных учеников заумными уравнениями.

В конце концов Вейерштрасс отправил одну из своих статей в уважаемый «Журнал Крелле». Несмотря на то, что предыдущие статьи остались едва замеченными, эта вызвала огромный всплеск интереса. Вейерштрасс обнаружил способ работы с ужасным классом уравнений, известным как «абелевы функции». В статье было приведено краткое изложение его методов, но этого было достаточно, чтобы убедить математиков в наличии у автора уникального таланта. Не прошло и года, как Кёнигсбергский университет дал Вейерштрассу почётную докторскую степень, а вскоре после этого Берлинский университет предложил ему должность профессора. Несмотря на то, что Вейерштрасс проделал интеллектуальный аналог пути «из грязи в князи», многие из его старых привычек сохранились. Он редко публиковал статьи, предпочитая делиться своими работами со студентами. Но он был малопочтителен не только к процессу публикации: не пугали его и «священные коровы» математики.
Читать дальше →
Total votes 99: ↑99 and ↓0+99
Comments63

Как правильно оформить Open Source проект

Reading time7 min
Views53K

В свободное и не свободное время[1] я развиваю несколько своих проектов на github, а также, по мере сил, участвую в жизни интересных для меня, как программиста, проектах.


Недавно один из коллег попросил консультацию: как выложить разработанную им библиотеку на github. Библиотека никак не связана с бизнес-логикой приложения компании, по сути это адаптер к некоему API, реализующему определённый стандарт. Помогая ему, я понял что вещи, интуитивно понятные и давно очевидные для меня, в этой области, совершенно неизвестны человеку делающему это впервые и далёкому от Open Source.


Я провел небольшое исследование и обнаружил что большинство публикаций по этой теме на habrahabr освещают тему участия (contributing), либо просто мотивируют каким-нибудь образом примкнуть к Open Source, но не дают исчерпывающей инструкции как правильно оформить свой проект. В целом в рунете, если верить Яндекс, тема освещена со стороны мотивации, этикета контрибуции и основ пользования github. Но не с точки зрения конкретных шагов, которые следует предпринять.


Так что из себя представляет стильный, модный, молодёжный Open Source проект в 201* году?

Читать дальше →
Total votes 89: ↑84 and ↓5+79
Comments135

Scratch — подтягиваем математику, развиваем самоконтроль

Reading time6 min
Views33K
image
Люди, которые никак не могут уснуть и тщетно пытаются это сделать перед телевизором, наверняка, давно заметили, что самые интересные передачи почему-то крутят по ночам. Да, действительно, днем «… телевизор как унитаз, только не мы в него, а из него на нас» (к сожалению не смог найти автора цитаты, но тот, кто раньше постоянно читал журнал «Хакер», возможно, испытал дежавю). Зато ночью, просто листая каналы, можно наткнуться на что-то действительно интересное. Именно так я и наткнулся на фильм о Данидинском исследовании. Фильм смотрел не моргая. А когда авторы исследования заявили, что выяснили от чего больше всего зависит успех ребенка в будущем — даже привстал. Оказывается — основополагающий фактор успеха ребенка (любого человека) — это самоконтроль!

Когда-то у меня самого были серьезные проблемы с самоконтролем и самообладанием, поэтому, после просмотра еще очень долго вспоминал, размышлял, анализировал. А потом, вдруг подумал: если этот самый самоконтроль — такая важная черта характера то, может его можно развивать у ребят целенаправленно? Надо попробовать!

И попробовал. Кому интересно, что получилось, прошу под кат.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments35

Топливо для ИИ: подборка открытых датасетов для машинного обучения

Reading time6 min
Views80K


Связанные проекты сообщества Open Data (проект Linked Open Data Cloud). Многие датасеты на этой диаграмме могут включать в себя данные, защищенные авторским правом, и они не упоминаются в данной статье


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


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


Мы разобрались в этом вопросе и собрали данные по датасетам, удовлетворяющим критериям открытости, востребованности, скорости работы и близости к реальным задачам.

Читать дальше →
Total votes 65: ↑65 and ↓0+65
Comments10

[CppCon 2017] Бьёрн Страуструп: Изучение и преподавание современного C++

Reading time9 min
Views29K

Сейчас проходит конференция CppCon 2017, и на их youtube-канале уже стали появляться видео оттуда. И я подумал, почему бы не попробовать сделать конспекты интересных лекций. Конечно, не очень уверен, надолго ли меня хватит, зависит от того насколько вам это понравится.


Это первое вступительное видео. Оно не такое интересное для меня, но пропустить тоже не мог, это же Страуструп. Далее, текст от его лица. Заголовки взяты из слайдов.


Total votes 30: ↑29 and ↓1+28
Comments24

На шаг ближе к С++20. Итоги встречи в Торонто

Reading time8 min
Views28K
Несколько недель назад состоялась встреча международного комитета по стандартизации C++. На ней люди (в основном) не разменивались на мелочи и совершили несколько больших шагов на пути к С++20.

image

Главные новости:

  • Расширению Concepts быть в C++20!
  • Ranges, Networking и Coroutines/сопрограммы: выпущены в эксперимент в виде TS.
  • Модули: черновик TS готов.

Что всё это значит, как это упростит написание кода и что было ещё — читайте под катом.
Читать дальше →
Total votes 104: ↑104 and ↓0+104
Comments269

Доступно о криптографии на эллиптических кривых

Reading time37 min
Views243K
image


Тем, кто знаком с криптографией с открытым ключом, наверно известны аббревиатуры ECC, ECDH и ECDSA. Первая — это сокращение от Elliptic Curve Cryptography (криптография на эллиптических кривых), остальные — это названия основанных на ней алгоритмов.

Сегодня криптосистемы на эллиптических кривых используются в TLS, PGP и SSH, важнейших технологиях, на которых базируются современный веб и мир ИТ. Я уже не говорю о Bitcoin и других криптовалютах.

До того, как ECC стала популярной, почти все алгоритмы с открытым ключом основывались на RSA, DSA и DH, альтернативных криптосистемах на основе модулярной арифметики. RSA и компания по-прежнему популярны, и часто используются вместе с ECC. Однако несмотря на то, что магия, лежащая в фундаменте RSA и подобных ей алгоритмов легко объяснима и понятна многим, а грубые реализации пишутся довольно просто, основы ECC всё ещё являются для большинства людей загадкой.

В этой серии статей я познакомлю вас с основами мира криптографии на эллиптических кривых. Моя цель — не создание полного и подробного руководства по ECC (в Интернете полно информации по этой теме), а простой обзор ECC и объяснение того, почему её считают безопасной. Я не буду тратить время на долгие математические доказательства или скучные подробности реализации. Также я представлю полезные примеры с визуальными интерактивными инструментами и скриптами.
Читать дальше →
Total votes 127: ↑125 and ↓2+123
Comments72

Достижения в глубоком обучении за последний год

Reading time13 min
Views88K

Привет, Хабр. В своей статье я расскажу вам, что интересного произошло в мире машинного обучения за последний год (в основном в Deep Learning). А произошло очень многое, поэтому я остановился на самых, на мой взгляд, зрелищных и/или значимых достижениях. Технические аспекты улучшения архитектур сетей в статье не приводятся. Расширяем кругозор!

Total votes 105: ↑101 and ↓4+97
Comments29

learnopengl. Уроки 3.1 (Assimp) + 3.2 (класс Mesh)

Reading time10 min
Views36K
OGL3

Assimp


Во всех уроках, мы, в основном, использовали нашего маленького друга — контейнер, но через некоторое время, даже наши лучшие друзья становятся немного скучными. В большом графическом приложении, обычно присутствуют много моделей, на которые намного приятнее смотреть, чем на наш статичный контейнер. Хотя, в отличие от контейнера, нам будет очень сложно, вручную, определить все вершины, нормали и текстурные координаты таких сложных моделей, как например дом или человекоподобные персонажи. Вместо этого, мы будем имортировать модели в наше приложение; модели, которые были тщательно нарисованы, в 3D редакторах, таких как Blender, 3DS MAX или Maya.


Эти, так называемые инструменты 3D моделирования, позволяют художникам создавать сложные модели и применять текстуры к ним с помощью процесса, который называется текстурная развертка (uv-mapping). Инструменты автоматически генерируют все вершинные координаты, вершины нормалей и текстурные координаты, экспортируя их в файл модели. Таким образом, художники имеют обширный набор инструментов для создания высококачественных моделей, не заботясь о технических деталях. Все технические аспекты спрятаны в экспортируемом файле. Мы, как программисты графики, должны позаботится об этих технических деталях.
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments1

Information

Rating
2,970-th
Registered
Activity