.NET
Табы, пробелы и ваша зарплата — какая связь?
Пару дней назад Дэвид Робинсон опубликовал на Stack Overflow статью с очень провокационным названием: Разработчики, использующие пробелы, зарабатывают больше использующих табуляцию (перевод на Хабре). Автор взял данные из исследования разработчиков, проведённого Stack Overflow, и в самом деле показал, что использование пробелов ассоциируется с более высокими зарплатами, даже принимая в расчёт одинаковый уровень опыта. Так что, нужно вместо табуляций использовать пробелы, чтобы увеличить свою зарплату?
Типичные распределения вероятности: шпаргалка data scientist-а
У data scientist-ов сотни распределений вероятности на любой вкус. С чего начать?
Data science, чем бы она там не была – та ещё штука. От какого-нибудь гуру на ваших сходках или хакатонах можно услышать:«Data scientist разбирается в статистике лучше, чем любой программист». Прикладные математики так мстят за то, что статистика уже не так на слуху, как в золотые 20е. У них даже по этому поводу есть своя несмешная диаграмма Венна. И вот, значит, внезапно вы, программист, оказываетесь совершенно не у дел в беседе о доверительных интервалах, вместо того, чтобы привычно ворчать на аналитиков, которые никогда не слышали о проекте Apache Bikeshed, чтобы распределённо форматировать комментарии. Для такой ситуации, чтобы быть в струе и снова стать душой компании – вам нужен экспресс-курс по статистике. Может, не достаточно глубокий, чтобы вы всё понимали, но вполне достаточный, чтобы так могло показаться на первый взгляд.
Разработка web API
Интро
Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs. Apigee занимается разработкой различных API-сервисов и консталтингом. Кстати, среди клиентов этой компании засветились такие гиганты, как Best Buy, Cisco, Dell и Ebay.
В тексте попадаются комментарии переводчика, они выделены курсивом.
Собираем API-интерфейсы, которые понравятся другим разработчикам
Понятные URL для вызовов API
Первый принцип хорошего REST-дизайна — делать вещи понятно и просто. Начинать стоит с основных URL адресов для ваших вызовов API.
Ваши адреса вызовов должны быть понятными даже без документации. Для этого возьмите себе за правило описывать любую сущность с помощью коротких и ясных базовых URL адресов, содержащих максимум 2 параметра. Вот отличный пример:
/dogs для работы со списком собак
/dogs/12345 для работы с отдельной собакой
Как мы улучшали TFS
Ранее, когда у нас не было своего корпоративного блога, я писал о том, как мы используем Microsoft TFS (Visual Studio Team Servives on Premises) для управления жизненным циклом разработки ПО и для автоматизации тестирования. В частности мы собрали большой набор автотестов по разным системам в один пакет, который запускаем каждый день. Подробнее об этом я рассказывал на конференции DevOpsDaysMoscow ( презентация, видео выступления )
Ценности GitLab

Компания GitLab уже несколько раз привлекала наше внимание: мы писали об инциденте с базой данных, решении перейти на собственное железо и о том, как пользователи убедили GitLab не уходить из облака. Все эти истории объединяет небывалая открытость, которую проявила компания при ликвидации последствий аварий и принятии жизненно важных решений. Мы решили узнать причины такой публичности и нашли замечательный документ, в котором описаны ценности GitLab.
Помимо открытости в нем оказалось много вещей, с которыми, как нам кажется, будет интересно познакомиться и читателям Хабра. Многие из нас работают в похожих условиях: из дома, общаясь удаленно, иногда годами не видя своих коллег. У такого типа работы есть не только преимущества, но и недостатки, а компания GitLab накопила немалый опыт, который может оказаться полезен нам всем. Перевод ценностей GitLab вы можете найти под катом.
Создание игры Match-3 в Unity

Несколько лет назад на SeishunCon я заново открыл для себя игры match-3. Я играл в Dr. Mario детстве, но такие более соревновательные игры, как Magical Drop, Bust-A-Move и Tokimeki Memorial Taisen Puzzle-Dama, сильно отличаются от неё.

Dr. Mario
В результате я осознал, как много нейтральных решений связано с созданием игры match-3.
На следующем джеме Ludum Dare я решил поэкспериментировать, но сначала за неделю до этого для разогрева попробовал разработать алгоритм «Тетриса», обнаруживающий и удаляющий линии. Мне очень помог этот туториал Unity Plus. [Прим. пер.: у меня ссылка не открывается. Если вы знаете, как решить проблему, напишите мне, я дополню статью.] Разумеется, алгоритм «Тетриса» для поиска заполненных рядов гораздо проще, чем алгоритм, выискивающий разнообразные сочетания совпадающих тайлов.
Если вы хотите изучить эти примеры кода в контексте, то зайдите в мой репозиторий Ludum Dare 30. (Для бесстыдной саморекламы я снова использовал эту логику для игры Shifty Shapes.)
Два мира

Magical Drop 3 (источник: Kazuya_UK)
Самая мудрёная часть создания игры-головоломки в Unity заключается в том, что игра не живёт в пространстве мира. Во всяком случае, живёт не полностью.
В этом её отличие от других жанров. Платформеры, например, почти полностью живут в игровом мире Unity. Transform игрока сообщает о его положении. Коллайдеры (или, в некоторых случаях, raycast) говорят, находится ли игрок на земле, ударяется ли об потолок или столкнулся с врагом. Даже если вы не используете внутриигровую физику, то всё равно, скорее всего, добавляете силу или указываете скорость Rigidbody, чтобы обеспечить распознавание столкновений без затрат.
Открытый курс машинного обучения. Тема 10. Градиентный бустинг

Всем привет! Настало время пополнить наш с вами алгоритмический арсенал.
Сегодня мы основательно разберем один из наиболее популярных и применяемых на практике алгоритмов машинного обучения — градиентный бустинг. О том, откуда у бустинга растут корни и что на самом деле творится под капотом алгоритма — в нашем красочном путешествии в мир бустинга под катом.
UPD 01.2022: С февраля 2022 г. ML-курс ODS на русском возрождается под руководством Петра Ермакова couatl. Для русскоязычной аудитории это предпочтительный вариант (c этими статьями на Хабре – в подкрепление), англоговорящим рекомендуется mlcourse.ai в режиме самостоятельного прохождения.
Видеозапись лекции по мотивам этой статьи в рамках второго запуска открытого курса (сентябрь-ноябрь 2017).
Как давать определения?
Поскольку как аналитики мы вынуждены давать определения постоянно, неплохо было вспомнить эти правила.
Почему я так серьезно рассматриваю тему определений? Потому что регулярно встречаю определения, пользоваться которыми на практике невозможно. И тенденции к улучшению я не вижу. Для начала разберем термин процесс по аналогии с тем, как в прошлой статье мы разобрали термин система.
Рецепт идеального Хабропоста

На наш взгляд, создание «идеального поста» — это не только процесс выбора темы и написание текста. Немалая доля успеха заложена в оформлении и тех обстоятельствах, при которых статья опубликована. Длина заголовка, количество текста до ката и привлекающая картинка — все эти факторы имеют свой вес. Хотели бы Вы получить на 30% больше просмотров, просто поменяв оформления поста и время размещения?
Мы в Cloud4Y хотели бы. Поэтому мы провели глубокий анализ публикаций на Хабрахабре за последние полгода и сегодня хотим поделиться новыми полезными находками.
Как я перехотел быть космонавтом

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

Кто самый легкий?
(иллюстрация из журнала «Веселые картинки», 1983, №4)
В далеком 2004 году со мной случилась вполне обычная история. Прямо от лабораторных столов, загруженных ПЦР-машинами, центрифугами, пробирками и микроскопами, в горячем угаре написания статей по биоремедиации засоленных почв я попала в комнату с погремушками, книжками-малышками и маленьким ребенком.
Применение погремушек и сосок оказалось делом более-менее простым, но вот с «развивающими играми» все показалось намного интереснее. Можно ли на самом деле усиливать развитие мыслительных способностей у ребенка, и как это делать?
Чтобы ответить на этот вопрос, я оставила карьеру ученого и пошла работать педагогом дополнительного образования. То, что вы прочитаете дальше – результат, пардон, опытов над детьми (не волнуйтесь, ни один подопытный ребенок не пострадал).
Доказательное планирование
Примечание переводчика: оригинальная статья была написана в 2007-м году, однако, на мой взгляд, полностью сохраняет актуальность и сегодня.
Разработчики программного обеспечения не любят составлять план работ. Обычно пытаются вовсе от него отказаться. «Закончу, когда закончу!», — говорят они, ожидая, что этот смелый и веселый поступок вызовет одобрение у босса, а о планировании будет успешно забыто.
Большая часть расписаний, с которыми вы встретитесь, будет представлять из себя бездушные отписки. Совершенно забытые, они хранятся в каком-нибудь общем каталоге. После выпуска продукта с опозданием на пару лет странный парень, в чьем офисе, говорят, видели картотеку, принесет на обсуждение причин провала старую распечатку, которую все засмеют. «Только гляньте! Мы запланировали две недели, на переписывание системы с нуля на Ruby!»
MMO в реальном мире, или Инструкция по созданию живых игр, или Как сделать так, чтобы детям в лагере было интересно
Никогда мне не быть Milfgard'ом
Мои строки не так понятны
Но я тоже делаю игры
И это довольно приятно
К.В.Давыденко 2016 г.
Представьте, что вас заперли в комнате, как на картинке ниже, с горстью детей. И вы сделаны из леденцов. Да, вы сделаны из леденцов. В общем, вы обречены, если не придумаете, чем занять детей, чтобы отвлечь их от вашей леденцовой сущности. Что вы будете делать?
Как некоторые из хаброжителей знают, по предыдущей статье я в свободное время работаю в детских лагерях. Я занимаюсь в них много чем, но специализируюсь я (если это можно так сказать) на создании игр в реальном мире. Это не такая уж и простая задача. Перед создателем игры встаёт много трудностей. В этой статье я хочу рассказать о них на примере большой игры-симуляторе города, под названием Big City Jail Detective RPGame. Но прежде чем переходить к чему-то настолько глобальному, рассмотрим ситуацию выше.
Что же делать, если вы человек-леденец запертый с детьми?
Для начала, я вам посоветую не паниковать. Не вы первый, не вы последний человек из леденцов, оказавшийся в такой ситуации. Вам нужно чем-то занять этих детей. Может попробуете придумать для них игру?
Теория относительности в картинках
Под катом много картинок (и ни одной формулы).
Сказ о стажировке в маленькой компании или как мы с Контуром конкурировали [Часть I]
Под катом первая часть повествования, из которой вы узнаете, почему мы решили проводить свою маленькую стажировку, как мы её видели и планировали. По каждому пункту постараюсь привести сравнительные примеры, как на аналогичные вопросы отвечают в Контуре, — где-то мы были ограничены в ресурсах, в чём-то нам не хватало опыта, а по каким-то этапам стажировки наши подходы совпадали.
Во второй части расскажу о том, как всё получилось на самом деле, какие выводы мы сделали и чему научились. Здесь продолжение статьи.
Авторизация в ASP.NET Core MVC

Logo designed by Pablo Iglesias.
В статье описаны паттерны и приемы авторизации в ASP.NET Core MVC. Подчеркну, что рассматривается только авторизация (проверка прав пользователя) а не аутентификация, поэтому в статье не будет использования ASP.NET Identity, протоколов аутентификации и т.п. Будет много примеров серверного кода, небольшой экскурс вглубь исходников Core MVC, и тестовый проект (ссылка в конце статьи). Приглашаю интересующихся под кат.
Содержание:
- Claims
- Подготовительные работы
- Атрибут Authorize и политики доступа
- Настройки политик доступа
- Resource-based авторизация
- Авторизация в Razor-разметке
- Permission-based авторизация. Свой фильтр авторизации
Как получать пятёрки с помощью анализа данных?

Привет, Хабр! Я уверен, что среди нас есть много студентов и, наверное, все из них признают, что на своём студенческом пути встречали такие науки, о гранит которых можно сломать зубы. Вот поэтому хочу вам рассказать о том, как хобби — наука о данных, помогло мне сдать один из самых сложных предметов в семестре на пятёрку. Если вам интересно — прошу под кат.
Самая нужная программа на свете

Какими программами постоянно пользуются люди? Если подумать над этим вопросом, то окажется, что список этот не такой уж большой. К постоянно используемым программам можно отнести: саму операционную систему, файловый менеджер, текстовый редактор, браузер, мессенджер. Это именно тот базовый набор, которым пользуется на компьютере практически каждый человек. Требования к таким программам должны быть высокими: безотказная работа, быстрое выполнение всех функций, понятный и удобный интерфейс.
Можно сказать, что вышеперечисленный набор программ — это самые нужные программы, которыми пользуется человек в цифровую эпоху. Этот список покрывает все базовые потребности человека-пользователя. Или не все? Есть ли еще одна базовая потребность, которая не учтена в вышеприведенном списке самых необходимых программ? Является ли эта потребность самой важной из тех, что должен автоматизировать компьютер? Для меня такая потребность есть, но в списке самых используемых программ ей места не нашлось. Что же это за потребность?
Тестирование с базой данных в .NET

Обычным подходом в .NET к тестированию приложений работающих с базой данных является внедрение зависимостей (Dependency Injection). Предлагается отделить код работающий с базой, от основной логики путем создания абстракции, которую в дальнейшем можно подменить в тестах. Это очень мощный и гибкий подход, который тем не менее имеет некоторые недостатки — увеличение сложности, разделение логики, взрывной рост количества типов. Подробнее в предыдущей статье Что-то не то с тестированием в .NET (Java и т.д.) или в Wiki/Dependency Injection.
Есть более простой подход, широко распространенный в мире динамических языков. Вместо создания абстракции, которую можно контролировать в тестах, этот подход предлагает контролировать саму базу. Тестовый фреймворк предоставляет чистую базу для каждого теста и вы можете создать в ней тестовый сценарий. Это проще и дает больше уверенности в тестах.
Information
- Rating
- Does not participate
- Registered
- Activity