Прпограммист веб-сервисов
После прочтения применить. 25 книг для игрового разработчика
Что такое Forming, Storming, Norming, Performing и Adjourning. И почему это важно знать каждому PM
Одним из часто задаваемых вопросах на собеседовании на позицию Project Manager, а также для сдачи экзамена на сертификат Project Management Professional (PMP)® Exam является вопрос о пяти стадиях формирования команды, таких как Forming, Storming, Norming, Performing, Adjourning, её также называют моделью Такмена в честь её автора Брюса Такмена. Предлагаю разобраться в том, что представляют из себя эти стадии и почему так важно понимать данную концепцию.
Практическое руководство по level-дизайну с видом от первого лица
При создании игры нам всегда приходится проходить через level-дизайн, однако он является одним из наиболее недооцененных аспектов геймдева, особенно в небольших/независимых командах.
В этом материале я постараюсь дать несколько советов о том, как создать хороший level-дизайн, используя примеры из собственного опыта. В основном я буду делать отсылки к одним и тем же играм (Bad Company 2 и Mirror's Edge), потому что в них я много играл, и чувствую себя комфортно, говоря о них, а также потому, что у них довольно разные игровые механики.
СТРАННЫЕ Люди. Как западная цивилизация вырвалась вперед?
По нашей планете распространяется необычная и СТРАННАЯ человеческая психика - Western, Educated, Industrialized, Rich and Democratic (WEIRD) - западный, образованный, индустриальный, богатый и демократичный.
Лучшие книги по Apache Kafka
«Effective Kafka: A Hands-on Guide to Building Robust and Scalable Event-Driven Applications», «Kafka: The Definitive Guide» и другие издания.
В этой статье я расскажу, как изучал Apache Kafka и с какими трудностями столкнулся. Я очень надеюсь, что мои наблюдения помогут тем, кто ещё только приступает к знакомству с платформой. Здесь мы обсудим полезные ресурсы, в основном, книги, которые я прочитал, и мой опыт с платформой#nbsp;— до чтения книг и после.
Как мы отказались от JPEG, JSON, TCP и ускорили ВКонтакте в два раза
На протяжении всей жизни мне приходится экономить вычислительные и сетевые ресурсы: сначала были компьютеры с 300 кГц (кило — не гига!) и 32 Кбайт RAM, интернет по dial-up. Потом я решал олимпиадные задачки. Теперь имею дело с терабайтами трафика и 50 млрд событий в сутки. И хотя современные телефоны в 1 000 раз мощнее любого оборудования двадцатилетней давности, я до сих пор оптимизирую. Думал даже, что это со мной что-то не так. Но потом понял, что все постоянно что-нибудь оптимизируют.
Эта статья в меньшей степени о том, почему нужно бороться за производительность, и в большей о том, на что сейчас стоит заменить устаревший стек из JPEG, JSON, gzip и TCP — и как это сделать.
Спойлер: у нас есть решение и мы его не только показываем — ссылки на open source в конце статьи.
У нас проблемы с промисами
У нас проблемы с промисами
Дорогие JavaScript разработчики, настал момент признать это — у нас проблемы с промисами.
Нет, не с самими промисами. Их реализация по спецификации A+ превосходна. Основная проблема, которая сама предстала передо мной за годы наблюдений за тем, как многие программисты борются с богатыми на промисы API, заключается в следующем:
— Многие из нас используют промисы без действительного их понимания.
Если вы мне не верите, решите такую задачку:
Вопрос: В чем разница между этими четырьмя вариантами использования промисов?
doSomething().then(function () {
return doSomethingElse();
});
doSomething().then(function () {
doSomethingElse();
});
doSomething().then(doSomethingElse());
doSomething().then(doSomethingElse);
Первичный ключ – GUID или автоинкремент?
Бесплатно или хотя бы недорого — где взять музыку для коммерческого использования
В одном из прошлых материалов мы рассказали о доступных мониторных наушниках, которые пригодятся тем, кто совмещает отдых за прослушиванием любимых композиций с рабочими задачами, — пишет музыку или монтирует видео.
Об источниках аудиодорожек и сэмплов как раз для этих целей мы сегодня и поговорим. Рассказываем, где можно скачать треки с лицензией Creative Commons, которая зачастую позволяет использовать музыку в коммерческих проектах.
Что нужно знать об SSD каждому программисту
На фото SSD Samsung PM1733
Твердотельные накопители (Solid-State Drives, SSD) на основе флэш-памяти уже заменили многие магнитные диски в качестве стандартных накопителей. С точки зрения программиста SSD и диски очень похожи: и те, и другие являются устройствами постоянного хранения, обеспечивающими страничный доступ через файловые системы и системные вызовы, и имеющими большой объём.
Однако у них есть и важные различия, которые становятся существенными, если нужно достичь оптимальной производительности SSD. Как мы увидим, SSD устроены сложнее и если воспринимать их просто как быстрые диски, то их производительность может вести себя довольно загадочным образом. Цель этого поста — показать, почему SSD так себя ведут, что поможет вам создавать ПО, способное использовать их особенности. (Стоит заметить, что я буду говорить о NAND-памяти, а не о памяти Intel Optane, имеющей другие характеристики.)
Юмористичный обзор Rust с перспективы JavaScript
В этой статье я в несколько забавном ключе документирую кое-какие размышления о своем знакомстве с Rust с позиции прожженного энтузиаста JavaScript. Здесь вас ждет импровизированная прогулка по феодам Вестероса, встреча с Ланнистерами и даже замаскированный под остров корабль — занятные аналогии, которые можно провести с работой в этом языке.
Как придумали кодировку UTF-8: выдержки из переписки создателей
Всем известна кодировка UTF-8, что давно доминирует в интернет пространстве, и которой пользуются много лет. Казалось бы, о ней все известно, и ничего интересного на эту тему не рассказать. Если почитать популярные ресурсы типа Википедии, то действительно там нет ничего необычного, разве что в английской версии кратко упоминается странная история о том, как ее «набросали на салфетке в закусочной».
На самом деле изобретение этой кодировки не может быть настолько банальным хотя бы потому, что к ее созданию приложил руку Кен Томпсон — легендарная личность. Он работал вместе с Деннисом Ритчи, был одним из создателей UNIX, внес вклад в разработку C (изобрел его предшественника — B), а позднее, во время работы в Google, принял участие в создании языка Go.
Перед вами — перевод нескольких писем, в которых разработчики вспоминают историю создания кодировки.
Улучшение качества изображения с помощью нейронной сети
Пример улучшения качества изображения с использованием технологии Super Resolution.
Об open-source реализациях хэш-функции ГОСТ Р 34.11-2012 и их влиянии на электронную подпись ГОСТ Р 34.10-2012
Очередные странности в алгоритмах ГОСТ Кузнечик и Стрибог
Криптографические алгоритмы в России не проходят через открытые конкурсы, их просто спускают нам свыше. И рано или поздно это сильно нам аукнется. Эта статья об очередном исследовании наших ГОСТов.
Как без усталости кодить по восемь с лишним часов
Всю свою жизнь я писал код неправильно.
Я думал, что достаточно просто сесть за стол, открыть ноутбук, выбрать задачу из моего списка to-do и кодить, пока не устану.
Но на самом деле такой стиль работы убивал мой уровень продуктивности спустя 2–4 часа написания кода. Я ощущал себя таким уставшим, что мне не хотелось ничего, кроме как других задач, требующих низких затрат энергии (например, code review).
Сейчас я могу писать код по восемь с лишним часов, не чувствуя себя после этого развалиной.
Что же изменилось?
Мой подход к работе.
После 62 книг по саморазвитию, десятков статей и исследований продуктивности, собственных проб и ошибок я создал систему продуктивности, помогающую мне кодить, писать, создавать и жить по максимуму без прокрастинации, усталости и тумана в голове.
В статье я расскажу, как этого достиг.
Решение Fizzbuzz при помощи теоремы Эйлера
FizzBuzz — это известная задачка на программирование, которую обычно дают в технической части собеседований. Она формулируется примерно так:
Напишите функцию, выводящую список целых чисел от 1 до 100, но вместо каждого числа, кратного 3, она должна выводить «Fizz», а вместо каждого числа, кратного 5, выводить «Buzz». Вместо чисел, кратных и 3, 5, программа должна выводить «FizzBuzz»; все остальные числа должны выводиться без изменений.
Можно написать функцию, вообще не использующую условную логику и вместо этого разделяющую целые числа на 4 возможные категории (обычное решение оставим в качестве упражнения заинтересованному читателю):
- Имеющие делитель 3, но не 5
- Имеющие делитель 5, но не 3
- Имеющие делитель и 3, и 5
- Не имеющие делитель 3 и 5
Нам нужна функция, которая будет возвращать:
- «Fizz», если и является взаимно простым с 5
- «Buzz», если и является взаимно простым с 3
- «FizzBuzz», если и
- во всех остальных случаях.
Рассмотрим реализацию такой функции на Python:
[(lambda n: { 1: n, 6: "Fizz", 10: "Buzz", 0: "FizzBuzz" }[n**4%15])(n+1) for n in range(100)]
Та же функция на Ruby:
(1..100).map{|n| {1 => n, 6 => "Fizz", 10 => "Buzz", 0 => "FizzBuzz"}[n**4%15] }
Как мы и ожидали, каждая из этих функций возвращает список целых чисел от 1 до 100 с подставленными в нужные места «Fizz», «Buzz» и «FizzBuzz».
Но почему? Откуда взялись постоянные значения 0, 6, 10 и 1? Почему возвращает 6 для чисел, кратных 3, но не 5, 10 для чисел, кратных 5, но не 3, 0 для чисел, кратных 5 и 3 и 1 во всех остальных случаях? И самое важное — справедливо ли это для любого , которое мы выберем?
Ржавеем дальше. Как появился Rust и можно ли на нём WEB?
Моя предыдущая статья про rust вызвала положительную реакцию и большое количество обсуждений о том что да как с rust. Мне исключительно приятно видеть что вам понравился этот материал.
В комментариях я встретил много вопросов типа «А можно ли использовать rust для WEB?» Лаконичный ответ таков: «Можно». Можно и brainfuck использовать, если хочется. Нужно ли? Скажем так, brainfuck для WEB использовать категорически не стоит. А вот rust – тут надо понимать что именно делает rust и каковы его цели. Для того чтобы это понять мы должны погрузиться в компилятор и разобраться в устройстве процессоров. Под катом вы найдёте глубокий заныр в историю того как появился rust и поймёте что это такое и когда его нужно использовать а когда можно и на «ноде запилить».
Данные всех стран, не объединяйтесь
Информация
- В рейтинге
- Не участвует
- Откуда
- British Columbia, Канада
- Дата рождения
- Зарегистрирован
- Активность