Pull to refresh
0
@Shetaniread⁠-⁠only

User

Send message

Готовим Physically Based Rendering + Image-based Lighting. Теория+практика. Шаг за шагом

Reading time24 min
Views36K
Хей, привет. 2017 год на дворе. Даже простенькие мобильные и браузерные приложения начинают потихоньку рисовать физически корректное освещение. Интернет пестрит кучей статей и готовых шейдеров. И кажется, что это должно быть так просто тоже обмазаться PBR… Или нет?

В действительности же честный PBR сделать достаточно сложно, потому что легко достичь похожего результата, но сложно правильного. И в интернете полно статей, которые делают именно похожий результат, вместо правильного. Отделить мух от котлет в этом хаосе становится сложно.
Поэтому цель статьи не только разобраться, что же такое PBR и как он работает, но и научиться писать его. Как отлаживать, куда смотреть, и какие ошибки типично можно допустить.
Статья рассчитана на людей, которые в достаточной мере уже знают hlsl и неплохо знакомы с линейной алгеброй, и можете написать свой простейший неPBR Phong свет. В общем я постараюсь как можно проще объяснить, но рассчитываю на то, что некоторый опыт работы с шейдерами вы уже имеете.
Читать дальше →
Total votes 46: ↑46 and ↓0+46
Comments11

Нейробайесовский подход к задачам машинного обучения. Лекция Дмитрия Ветрова в Яндексе

Reading time15 min
Views33K
Этим постом мы завершаем серию лекций с Data Fest. Одним из центральных событий конференции стал доклад Дмитрия Ветрова — профессора факультета компьютерных наук НИУ ВШЭ. Дмитрий входит в число самых известных в России специалистов по машинному обучению и, начиная с прошлого года, работает в Яндексе ведущим исследователем. В докладе он рассказывает об основах байесовского подхода и объясняет, какие преимущества дает этот подход при использовании нейронных сетей.


Под катом — расшифровка и часть слайдов.
Total votes 53: ↑52 and ↓1+51
Comments3

Черновик книги Эндрю Ына «Жажда машинного обучения», главы 1-7

Reading time10 min
Views32K
В декабре прошлого года в переписке американских коллег по data science прокатилась волна обсуждения долгожданного черновика новой книги гуру машинного обучения Эндрю Ына (Andrew Ng) «Жажда машинного обучения: стратегии для инженеров в эпоху глубинного обучения». Долгожданного, потому что книга была анонсирована ещё летом 2016 года, и вот, наконец, появилось несколько глав.

image

Представляю вниманию Хабра-сообщества перевод первых семи глав из доступных в настоящий момент четырнадцати. Замечу, что это не финальный вариант книги, а черновик. В нем есть ряд неточностей. Эндрю Ын предлагает писать свои комментарии и замечания сюда. Начинает автор с вещей, которые кажутся очевидными. Дальше ожидаются более сложные концепции.
Читать дальше →
Total votes 48: ↑47 and ↓1+46
Comments9

Лень двигатель прогресса. Генератор задач. Часть 2

Reading time12 min
Views9.4K
Иногда помогаю проводить математический анализ у первых курсов и нужно им подбирать задачи, на которых можно набить руку. Да, можно брать задачи из книги. Но что, если не находишь нужных по уровню задач в книгах, которые есть под рукой?

О том, как сделать свой генератор простых задач на нахождение пределов/производных/интегралов и пойдёт речь после ката.


Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments13

6 типичных ошибок при заключении договоров на разработку ПО

Reading time9 min
Views34K
В очередной раз хотим затронуть тему, когда компания разработчик ПО выполняет свою работу, но заказчик не хочет ее оплачивать. И судя по количеству публикаций на подобную тему, актуальность данного вопроса для отечественных разработчиков ПО растет.

Описанная ниже ситуация — это ситуация из жизни. В момент написания статьи данная ситуация еще не получила окончательного положительного разрешения для компании разработчика ПО (далее будем называть ее ИТ компания, название компании в данный момент раскрыть не можем), с которым мы работаем вот уже более года по взысканию семизначной суммы задолженности. Возможно, для кого-то данная статья окажется полезной и позволит избежать подобной участи, либо позволит минимизировать возможные потери если ситуация еще не сильно запущена.
Читать дальше →
Total votes 38: ↑31 and ↓7+24
Comments47

Почему стоит нанимать джуниоров

Reading time10 min
Views42K
image

Когда я начинал как разработчик на Rails, я постоянно ковырялся с фреймворками все свое свободное время, которого, однако, у меня было достаточно. Я не был женат, работал в Coles и подрабатывал на фрилансе, выполняя заказы на PHP и Rails.

Как-то я услышал о проводимом в городе Аделаида Ruby Meetup. Сразу после работы я рванул на поезд и отправился на это мероприятие. Когда я туда попал, несколько человек спросили меня, чем я занимаюсь. Я рассказал о работе в Coles, о PHP и Rails, на что мне ответили «ты не должен больше работать в Coles» и трое из них протянули мне свои визитные карточки, сказав, чтобы я подал им резюме. Я отправил заявку в Sealink и меня взяли.

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

В Мельбурне есть много джуниоров, посещающих Ruby Meetup'ы. Я знаю это наверняка, так как помогал организовывать ночные хакатоны, на которые они тоже ходят. И вот представьте, если бы какой-нибудь новичок на митапе сказал бы вам, что он активно ищет работу, вы бы его наняли? Возможно, нет. Создается впечатление, что на таких мероприятиях царит атмосфера отвращения к найму джуниоров, ведь потому, что они, джуниоры, отнимают столь драгоценное время команды, которое могло быть потрачено на разработку, на их обучение.
Читать дальше →
Total votes 48: ↑41 and ↓7+34
Comments64

Пять способов пагинации в Postgres, от базовых до диковинных

Reading time13 min
Views78K
Вас может удивить тот факт, что пагинация, распространенная, как таковая, в веб приложениях, с легкостью может быть реализована нерационально. В этой статье мы испробуем различные способы пагинации на стороне сервера и обсудим их удобство при использовании в PostgreSQL. Статья поможет Вам понять, какая техника более уместна в Вашей ситуации, в том числе некоторые Вы, возможно, не видели прежде, а именно те, которые полагаются на физическую кластеризацию и сборщика статистики базы данных.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments33

О полезности индексов по выражениям

Reading time6 min
Views18K
На обучающих занятиях по PostgreSQL, и на продвинутом, и на базовом курсах, я часто сталкиваюсь с тем фактом, что обучающиеся практически ничего не знают о том, насколько мощными могут быть индексы по выражениям (если они вообще знают об их существовании). Так что позвольте мне сделать для Вас небольшой обзор.
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments8

Как перезагрузить сервер?

Reading time6 min
Views131K
Abstract: описание видов ребута, рассказ про sysrq, ipt_SYSRQ, ipmi, psu.

Как перезагрузить сервер? — Это вопрос, который обычно задают ну очень начинающим пользователям, которые путаются между halt, shutdown -r, reboot, init 6 и т.д.

Опытный администратор уточнит вопрос: «а что с сервером не так?» Разные виды отказов серверов требуют разных видов ребута — и неверно выбранный вариант приведёт к тяжелейшим последствиям, из которых визит в веб-морду IPMI/DRAC/iLO с целью «доперезагрузить» будет самым лёгким. Самым тяжёлым в моей личной практике была командировка эникейщика в соседний город. С целью «нажать ребут» на одиноко стоящем сервере.

В этой статье: что мешает серверу перезагрузиться и как ему помочь.

Начнём с теории ребута.

При выключении или перезагрузке сервера менеджер инициализации (в большинстве современных дистрибутивов — systemd, в эксцентричной Ubuntu 14.04 до сих пор upstart, в архаичном хламе — sysv-init) в определённом порядке посылает всем демонам команду «выключись». И большинство демонов (например, СУБД, вроде mysql) знают, как выключаться правильно. Например, закончить все транзакции, сохранить все несохранённые данные на диск и т.д. Для in-memory СУБД, наподобие redis, это и вовсе может быть критичным: не сохранил — потерял.

Старые системы иницализации ждали неограниченно долго каждый из инит-скриптов. Например, если «шутник» добавил вам в «stop» веточку «sleep 3600», то ваш сервер будет перезагружаться час с хвостиком. А если там цифра поболе, или просто программа, которая не хочет завершаться, то и ребут никогда не закончится.
Читать дальше →
Total votes 93: ↑86 and ↓7+79
Comments82

Рудольф Сворень — человек легенда (автор книги «Электроника шаг за шагом»). Часть 2

Reading time7 min
Views77K
"Knowledge is power" — известная фраза («Знание — сила») не менее значима и в наши дни.

Знание определяет профессионализм и ценность сотрудника, успешность компании, уровень развития государства и в итоге возможности всего человечества.

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

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

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


«Книга редкая и отличная по содержанию и манере изложения. Рудольф Сворень вне конкуренции. Замечательные рисунки Фролова дополняют текст и увлекают еще больше. Сын подрастёт, обязательно распечатаю для него. Жаль, теперь таких книг не делают в принципе»

Примерно так же оценивают то, что сделал Рудольф Анатольевич Сворень, который более 40 лет был редактором и автором в журнале «Наука и жизнь».

«С удовольствием читал публикации Свореня в „Науке и жизни“ на протяжении многих-многих лет. Как-то он чувствовал грань между „простотой изложения“ и „примитивностью изложения“. Даже будучи уже вполне „образованным“, было интересно взглянуть на давно известную вещь как-бы со стороны, глазами пацана. И понимаешь, что если бы эта статья попалась тебе в отрочестве, то ты бы понял всё, о чем в ней говорится!»

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

Вторая часть воспоминаний Рудольфа Анатольевича Свореня и его планы (публикуется впервые):


Мой переход в редакцию [журнала «Радио»] совпал по времени с невиданно быстрым прогрессом радиоэлектроники – появились и совершили переворот в схемотехнике серийные транзисторы, а вскоре их высокочастотные и достаточно мощные типы. Широко осваивались сантиметровые и дециметровые диапазоны. Были созданы новые технологии производства транзисторов, а затем и интегральных схем – достаточно вспомнить, что уже несколько лет выпускаются размером с почтовую марку интегральные схемы, в каждой из которых до трех миллиардов (!!!) сложным образом точно соединенных деталей. А ведь для того, чтобы получился миллиард песчинок, нужно собрать 6 тысяч мешков песка. Отметим, что вся эта новейшая техника выпускалась, как говорится, без прикосновения человеческой руки – её делали и проверяли автоматы.
Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments17

Более чем 80 средств мониторинга системы Linux

Reading time12 min
Views315K
Ниже будет приведен список инструментов мониторинга. Есть как минимум 80 способов, с помощью которых ваша машинка будет под контролем.



1. первый инструмент — top

Консольная команда top- удобный системный монитор, простой в использовании, с помощью которой выводится список работающих в системе процессов, информации о этих процессах. Данная команда в реальном времени сортирует их по нагрузке на процессор, инструмент предустановлен во многих системах UNIX.
читать дальше
Total votes 94: ↑82 and ↓12+70
Comments68

Загрузочный сервер — как загрузочная флешка, только сервер и по сети

Reading time12 min
Views446K
Загрузочная флешка с набором нужного софта — замечательный инструмент системного администратора. Казалось бы, что может быть лучше? А лучше может быть загрузочный сервер!

Представьте, вы выбрали в BIOS загрузку по сети и можете установить ОС/вылечить компьютер от вирусов/реанимировать диски/протестировать ОЗУ/etc с PXE Boot сервера, ведь это куда удобнее, нежели бегать с флешкой от машины к машине.
А в случае большого компьютерного парка, такой инструмент и вовсе незаменим.

Вот такое меню встречает нашу команду инженеров при загрузке с PXE



Под катом вас ждет описание всех настроек, а так же небольшой сюрприз.
Поехали!
Total votes 141: ↑138 and ↓3+135
Comments82

LTSP: Терминальный сервер на Linux

Reading time11 min
Views187K


Сейчас я расскажу вам о том, как можно сэкономить немалое количество времени и денег на вашей IT-инфраструктуре.
Как централизованно админить большое количество linux рабочих станций не разводя при этом хаос в вашей экосистеме.
И так, что же такое LTSP?


LTSP — Это терминальное решение на Linux.
Говоря "терминальное", я в первую очередь имею в виду не подключение к удаленному рабочему столу как в Windows. Я подразумеваю гораздо более гибкую и продвинутую систему доставки ПО, конфигов, домашенего каталога, да и самой операционной системы на клиентские рабочие станции с вашего терминального сервера.


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


У LTSP есть несколько режимов работы:


  • тонкий клиент
  • толстый клиент
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments28

Анализ производительности блочных устройств с blktrace

Reading time6 min
Views12K
blktrace

Операции ввода-вывода, как известно, принадлежат к числу критических ресурсов с точки зрения производительности в современных linux-системах. Выявление и анализ «узких мест» производительности в Linux-системах — дело достаточно сложное. Обычно для этой цели используются специализированные утилиты. В числе наиболее известных инструментов анализа производительности следует в первую очередь назвать утилиты, входящие в пакет sysstat (iostat, sar и т.п.). Однако в некоторых ситуациях информации получаемой с помощью этих утилит, бывает недостаточно. Например, с помощью iostat нельзя узнать, какой именно процесс совершает ту или иную операцию. Между тем такая информация бывает необходимой при решении некоторых специфических задач: например, для поиска и анализа «узких мест» в системах хранения данных.

Известный разработчик ядра Linux Йенс Аксбо в 2007 году создал blktrace — специальную утилиту, осуществляющую трассировку операций ввода-вывода и предоставляющую пользователю подробную информацию о них. В этой статье мы хотели бы подробно рассказать о возможностях blktrace.
Читать дальше →
Total votes 30: ↑26 and ↓4+22
Comments5

Все врут или почему в MySQL лучше не использовать партиции

Reading time8 min
Views28K
Начиная с версии 5.1 в MySQL появилась такая полезная фича как партиции. Конечно же большинство разработчиков БД сразу не побрезговали ей воспользоваться. Спустя пару лет работы я наконец пожал плоды всей ущербности реализации этой технологии специалистами MySQL AB …
но обо всем по порядку
Total votes 127: ↑123 and ↓4+119
Comments68

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

Reading time14 min
Views336K
abstract: разница между текущей производительностью и производительностью теоретической; latency и IOPS, понятие независимости дисковой нагрузки; подготовка тестирования; типовые параметры тестирования; практическое copypaste howto.

Предупреждение: много букв, долго читать.

Лирика



Очень частой проблемой, является попытка понять «насколько быстрый сервер?» Среди всех тестов наиболее жалко выглядят попытки оценить производительность дисковой подсистемы. Вот ужасы, которые я видел в своей жизни:
  • научная публикация, в которой скорость кластерной FS оценивали с помощью dd (и включенным файловым кешем, то есть без опции direct)
  • использование bonnie++
  • использование iozone
  • использование пачки cp с измерениема времени выполнения
  • использование iometer с dynamo на 64-битных системах


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

Как мерять правильно
Total votes 151: ↑145 and ↓6+139
Comments164

Сделаем код чище: работа с 64-битными регистрами оборудования в Linux

Reading time3 min
Views9.3K
Нередко у программистов, пишущих драйверы, возникают некоторые трудности с обменом данными в 64-битном формате. Давайте разберём некоторые ситуации.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments1

Зоопарк Алгебрaических Типов Данных

Reading time8 min
Views24K
В этой статье мы попытаемся рассмотреть всё разнообразие Алгебраических Типов Данных.

Надо сказать, задача это достаточно неподъёмная, и понять человеку, если он ранее с Алгебраическими Типами не имел дело — не очень просто.
АТД были впервые использованы в языке Hope, но основную популярность они приобрели благодаря языкам ML, такими как Standart ML, OCaml, F#, и языку Haskell.
Ныне АТД в той или иной мере поддерживаются в значительно большем количестве языков: Scala, Rust, Nemerle, Racket,…
АТД — это универсальный тип данных. С помощью него можно представить большинство типов данных.
АТД называются алгебраическими, потому что их можно представить как некую алгебраическую композицию типов его составляющих. Это знание даёт своё преимущество: понимая свойства алгебраической композиции, можно посчитать какой тип необходим для построения тех или иных данных.
Будем рассматривать типы на основе языка Haskell, однако подобного с лёгкими изменениями можно добиться в других языках с поддержкой АТД.
Читать дальше →
Total votes 43: ↑38 and ↓5+33
Comments34

Включение внешних языков в программы на Haskell

Reading time12 min
Views7.8K
В данной статье приведено краткое описание техники, которое позволяет использовать в программах на Haskell библиотеки, написанные на других языках программирования. При этом нет необходимости ни переписывать эти библиотеки на Haskell, ни писать бесчисленные обертки на C, ни писать явные байндинги. В получающейся программе можно как напрямую вызывать “чужой” код, так и вызывать из чужого кода Haskell функции. Сам же код функций может быть написан на расширенном подключаемом языке, что позволяет работать с ним специалистам в подключаемых языках, которые, к сожалению, пока не знакомы с Haskell.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments3

Безопасное криптопрограммирование. Часть 2, заключительная

Reading time12 min
Views19K
Продолжаем перевод набора правил безопасного криптопрограммирования от Жана-Филлипа Омассона…

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


Проблема


Некоторые компиляторы оптимизируют операции, которые они считают бесполезными.

Например, компилятор MS Visual C++ посчитал лишним оператор |memset| в следующем фрагменте кода реализации анонимной сети Tor:
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments17
1
23 ...

Information

Rating
Does not participate
Registered
Activity