Pull to refresh
10
0
Арсений Лисунов @NonGrate

User

Send message

Как объяснить дизайн четырехлетним?

Reading time5 min
Views20K
image

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

Я планировал пообщаться со старшими ребятами, рассказать то, что считал действительно крутым в своей работе, поделиться каким-то интересным опытом, но в итоге меня попросили провести урок с учениками подготовительной группы (примерно 4-5 лет). Несмотря на то что сначала я был скорее разочарован, это оказалось очень интересной задачей!

Главная особенность работы с детьми такого возраста в том, что ты не можешь ничего рассказать о брендах с которыми работал. Четырехлетние дети не будут восторженно реагировать на истории о работе на Channel 4, BBC и Disel. «Я получал награды BRIT, и даже разработал веб-сайт, на котором получил запись imdb!» — дети не поймут, о чем я вообще говорю. Поэтому нужно было в самых простых выражениях объяснить то, что я сделал, и почему это так важно. Я подумал: было бы здорово показать детям дизайн во всех его формах.

Что я сделал?

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

Жизнь в воздушном океане. Что происходит в 326 метрах над Петербургом

Reading time8 min
Views42K
Впервые высотная линия Петербурга отодвинулась на 326 метров 2011-м, когда с помощью вертолетов на телебашню установили новую антенну. Эта отметка оставалась неприступной вплоть до 10 мая в 2017. В 9.50 утра строители Лахта Центра залили стены ядра 78 этажа башни – это уровень 327,6 метра. Одновременно разменяли последний десяток этажей. Со старта поэтажного строительства прошло чуть больше 20 месяцев.

Рост небоскреба Лахта Центр по месяцам

Узнаем, что там, наверху? Наши проводники сегодня – люди, которые управляют самыми высокими кранами в городе.

Крановщик Лахта центра на площадке у кабины крана
Total votes 67: ↑66 and ↓1+65
Comments96

Трагедия стопроцентного покрытия кода

Reading time3 min
Views34K
Забавно, как всё меняется. Пятнадцать лет я свято придерживался принципов TDD (разработка через тестирование, или, как её раньше называли, подход test-first) или уж по крайней мере того взгляда, что разработчикам следует писать юнит-тесты. Но в последнее время я всё чаще говорю не «Это нужно затестить», а «Зачем вы писали этот тест?».

Читать дальше →
Total votes 103: ↑96 and ↓7+89
Comments138

Опасайтесь прозрачных пикселей

Reading time6 min
Views45K
image

Если вы используете в своей игре спрайты с прозрачностью (а обычно так и бывает, как минимум для UI), то вам, вероятно, стоит уделить внимание к полностью прозрачным пикселям текстур (или «текселам»).

Даже если значение альфа-канала равно 0, с пикселем всё равно связано значение цвета. Этот цвет ни на что не влияет, так ведь? В конце концов, пиксель полностью прозрачен, кому есть дело до его цвета…

Так вот, на самом деле этот цвет важен, если этого не понимать, то можно получить артефакты, которые заметны во многих играх. Чаще всего искажения очень малы и их не заметно, но иногда они действительно бросаются в глаза.
Читать дальше →
Total votes 146: ↑145 and ↓1+144
Comments83

4 крутые штуки про разработку игр

Reading time4 min
Views39K


Привет! Это не полноценный пост, мы просто сделали четыре перевода блогозаписей Тайнана Сильвестра, мужика, который в одну харю создал игрушку Rimworld. Он выдаёт хорошие мысли про разработку игр, за некоторые из которых в приличной компании его бы вообще побили. Ниже короткая выжимка каждой и ссылка на перевод.

В «Симуляторе мечты» описывается старая добрая история мира из сериала Westworld – когда игрокам предлагают сложный мир со внутренними конфликтами, прямо шедевр искусства. А они сразу всех убивают и насилуют. Не обязательно в такой последовательности.

После выпуска Ultima Online Ричард Гэрриот сказал: «Мы думали, это будет что-то фантастическое. Мы потратили на неё огромное количество времени и сил. Но случилось то, что игроки просто шли и убивали всех так быстро, что игра даже не переходила на новый виток, и симулятор жизни даже не начинался. И эту часть, на которую мы потратили столько времени, даже никто ни разу не заметил, ни разу! И в итоге мы просто удалили ее из игры».

А дальше вводится совершенно сумасшедшая концепция оценки плотности сюжета – модель в голове игрока. Это очень многое для меня перевернуло.
Читать дальше →
Total votes 39: ↑33 and ↓6+27
Comments51

Аспекты удачной архитектуры мобильных приложений

Reading time9 min
Views16K
Очень часто, приступая к разработке приложения, мы под давлением менеджера берем один из распространенных паттернов разработки и быстро кодим, чтобы получить живой прототип за день-другой. Вроде все работает, уходит в прод, и все довольны.

Вот только потом, когда встает вопрос о поддержке, рефакторинге и введении новых фич, оказывается, что в контроллерах у нас тонны кода, количество boilerplate застилает 4к экран, а вкорячивать новые фишки сложнее, чем переписать все снова. И вот вы уже снова перепиливаете все в стиле *уяк-*уяк и в продакшн…

А может стоило выделить время и выбрать не просто модную, а подходящую вашей задаче архитектуру?


Под катом ответы на распространенные вопросы и некоторые советы, которые помогут создать качественный продукт.
Читать дальше →
Total votes 33: ↑30 and ↓3+27
Comments2

Разумна ли материя: почему основная проблема нейробиологии отражается в физике

Reading time12 min
Views39K
image

Природа сознания – уникальная загадка среди всех тайн науки. Нейробиологи не просто не могут дать фундаментального объяснения тому, каким образом оно появляется из физических состояний мозга – мы даже не уверены, что мы когда-нибудь сможем это объяснить. Астрономам интересно, что есть тёмная материя, геологи ищут истоки жизни, биологи пытаются понять рак – и это всё, разумеется, сложные задачи, но, по крайней мере, мы более-менее представляем себе, в каком направлении нам нужно копать, и у нас есть грубые концепции того, как должны выглядеть их решения. А наше собственное «я», с другой стороны, лежит за пределами традиционных научных методов. Вслед за философом Дэвидом Чалмерсом, мы называем его "трудной проблемой сознания".

Но, возможно, сознание – не одна такая уникальная по сложности задача. Философы науки, Готфрид Лейбниц и Иммануил Кант, сражались не с такой известной, но с настолько же сложной задачей, как материя. Что есть по сути физическая материя, если отвлечься от математических структур, описываемых физикой? И эта проблема, судя по всему, лежит за пределами традиционных научных методов, поскольку мы можем лишь наблюдать воздействие материи, но не её сущность – «ПО» Вселенной, но не её «железо». На первый взгляд эти проблемы кажутся совершенно отдельными. Но если приглядеться, окажется, что они глубоко связаны между собой.
Читать дальше →
Total votes 42: ↑30 and ↓12+18
Comments168

Аспектно ориентированное программирование в Android

Reading time3 min
Views12K
Услышав об аспектно ориентированном программировании я, как Android разработчик, сразу подумал, что на Android это вряд ли заработает, однако, решил попробовать. Я был очень удивлен, когда уже через 5 минут приложение, использующее AspectJ, успешно заработало на телефоне.

Не буду убеждать в необходимости использования аспектов в Android и приводить примеры «uses cases», просто приведу пример того, как добавить к своему приложению возможность использования аспектов. Что такое аспекты и для чего их использовать прекрасно описано, например, на wiki.
Кому интересно - добро пожаловать под кат
Total votes 19: ↑16 and ↓3+13
Comments9

Знакомство с АОП

Reading time10 min
Views127K

Парадигмы программирования


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

У каждой парадигмы есть свои особенности, однако, главным фактором, различающим их, является понятие основной единицы программы. Вот самые популярные из них:
  • инструкция (императивное программирование, FORTRAN/C/PHP),
  • функция (функциональное программирование, Haskell/Lisp/F#/Scala),
  • прототип (прототипное программирование, JavaScript),
  • объект (объектно-ориентированное программирование, С++/Java),
  • факт (логическое программирование, PROLOG).

Стоит заметить, что в общем случае язык программирования однозначно не определяет используемую парадигму: на том же PHP можно писать как императивные, так и объектно-ориентированные программы.

В этой статье я хочу рассказать о сравнительно молодой, но крайне, на мой взгляд, полезной парадигме программирования – аспектно-ориентированном программировании.

Читать дальше →
Total votes 105: ↑101 and ↓4+97
Comments70

Секретные цвета Commodore 64

Reading time7 min
Views17K
COMMODORE FORMAT выпуск 13, Q&A:

Невозможно увеличить количество цветов в палитре C64, но существуют хитрые подпрограммы, которые позволяют создать впечатление большего количества цветов. Dragon Breed от Activision использует очень быстрое переключение цветов, чтобы дать промежуточный тон, а PD-кодеры создали механизм Fli-Pic, который позволяет вам использовать более четырех цветов на блок символов.

Total votes 69: ↑68 and ↓1+67
Comments27

Сложно быть Junior'ом

Reading time3 min
Views33K

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


Но не всем так повезло – многие начинали свою карьеру в конторах довольно среднего уровня, где их попросту было некому учить. Или вовсе не хотелось.


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


  • История, которую я слышал
  • Что в ней не так
  • Как это было со мной
  • Краткий вывод

Если вопросов нет, то поехали.

Читать дальше →
Total votes 43: ↑39 and ↓4+35
Comments35

Gen Jam 2016: процедурно генерируемые спрайты

Reading time4 min
Views19K
GenJam 2016

19 ноября 2016 года в Сан-Франциско прошёл первый ежегодный Gen Jam (геймджем по процедурной генерации). Идея была в том, чтобы за субботу создать генератор графики, «объект, создающий объекты», если вам угодно.

Я создал программу, рисующую спрайты персонажей в удивительном стиле набора 16-битных спрайтов Кристофера «Oryx» Барретта из Oryx Design Lab. Посмотрите на примеры того, что делает программа:

image
Читать дальше →
Total votes 46: ↑45 and ↓1+44
Comments29

Ваш язык программирования — отстой

Reading time54 min
Views139K
1 Почему JavaScript отстой
• 1.1 Плохая конструкция
• 1.2 Система типов
• 1.3 Плохие функции
• 1.4 Отсутствующие функции
• 1.5 DOM
2 Почему Lua отстой
3 Почему PHP отстой
• 3.1 Исправлено в поддерживаемых в настоящее время версиях
4 Почему Perl 5 отстой
5 Почему Python отстой
• 5.1 Исправлено в Python 3
6 Почему Ruby отстой
7 Почему Flex/ActionScript отстой
8 Почему скриптовые языки отстой
9 Почему C отстой
10 Почему C++ отстой
11 Почему .NET отстой
12 Почему C# отстой
13 Почему VB.NET отстой
15 Почему Objective-C отстой
16 Почему Java отстой
• 16.1 Синтаксис
• 16.2 Исправлено в Java 7 (2011)
• 16.3 Модель
• 16.4 Библиотека
• 16.5 Обсуждение
17 Почему Backbase отстой
18 Почему XML отстой
19 Почему отстой XSLT/XPath
20 Почему CSS отстой
• 20.1 Исправлено в CSS3
21 Почему Scala отстой
22 Почему Haskell отстой
23 Почему Closure отстой
24 Почему Go отстой
• 24.1 Базовые средства программирования (базовый язык)
• 24.2 Взаимосовместимость
• 24.3 Стандартная библиотека
• 24.4 Набор инструментальных средств
• 24.5 Сообщество
25 Почему Rust отстой
• 25.1 Безопасность
• 25.2 Синтаксис
• 25.3 Конструкция API и система типов
• 25.4 Сообщество
• 25.5 Набор инструментальных средств

Почему JavaScript отстой


Учтите, что некоторые положения относятся не к самому JavaScript, а к программным интерфейсам веб-приложений (https://developer.mozilla.org/en/docs/Web/API).

Плохая конструкция

• Каждый скрипт исполняется в едином глобальном пространстве имён, доступ в которое возможен в браузерах с оконным объектом.
• Camel-регистр никуда не годится:

XMLHttpRequest
HTMLHRElement

Читать дальше →
Total votes 314: ↑167 and ↓147+20
Comments353

Демонстрация брутфорса пароля iPhone 5c c зеркалированием флэш-памяти

Reading time4 min
Views58K


В апреле 2016 года ФБР и Apple устроили настоящее шоу вокруг телефона iPhone 5c стрелка из Сан-Бернардино, для которого якобы никак не удавалось подобрать пароль без помощи компании Apple.

ФБР давило на Apple, требуя технической помощи. Тим Кук опубликовал открытое письмо, в котором обвинил ФБР в принуждении Apple встроить бэкдор в iOS. Дело дошло до Конгресса и Сената США, проблему обсуждали все крупнейшие американские СМИ и телеканалы. Мир с замиранием сердца следил за санта-барбарой и гадал: даст Apple федералам или не даст доступ к криптосистеме iPhone.

iPhone защищён от брутфорса через опцию уничтожения данных на устройстве после десяти некорректных попыток ввода и увеличивающееся время задержки между наборами кода разблокировки (5 секунд после 5 попыток, затем 1 минута, 5 минут, 15 минут и 60 минут).
Читать дальше →
Total votes 69: ↑66 and ↓3+63
Comments88

Синий. Нет! Жёлтый! — или — Дают ли новые языки программирования прирост скорости разработки

Reading time8 min
Views21K
Какой язык использовали для написания самых первых программ для самых первых компьютеров с хранимой программой?

Двоичный машинный язык, конечно.

Почему?

Очевидно потому, что не было символьного ассемблера. Первые программы необходимо было писать двоичным кодом.

Насколько легче писать программы на ассемблере, чем на двоичном машинном языке?

Намного легче.

Можно цифру? Во сколько раз легче?

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

Экономия объёмов работы огромная.
Читать дальше →
Total votes 55: ↑31 and ↓24+7
Comments119

У вас нет высыпаний? Будут

Reading time5 min
Views63K
Меня зовут Евгений и я жаворонок. Сегодня проснулся в 6 утра, открыл окно в кухне, заварил кофейку и решил глянуть, «что нового». Мне написал мой бывший коллега «Андроид»… Точнее «Андроид-разработчик» Максим, но так звучит фантастичнее…

image

Он спросил:
– Женя, привет. (wave) Вопрос к тебе, как мега лайв хакеру. Сколько времени нужно спать, что бы мозг отдохнул и можно было плодотворно работать? Умные будильники сильно помогают?

Я ответил, а потом подумал, ведь и парочке сотен человек с Хабра тоже пригодится хоть один пунктик из вычитанных мною ранее советов, ведь «так как никто не слушает, приходится повторять»:
Читать дальше →
Total votes 88: ↑63 and ↓25+38
Comments203

Эффект кофты на шейдерах для мобильных устройств

Reading time3 min
Views17K

Пролог


Доброго времени суток! После опубликовании статьи о визуализации квадратичного дерева(Quad-tree), меня попросили написать статью, показывающую работу шейдера, переводящего изображение в «кофту».



Так что, давай рассмотрим данную методику.
Читать дальше →
Total votes 49: ↑49 and ↓0+49
Comments6

Застывшее время. Научные подходы к датированию

Reading time26 min
Views35K

Сегодняшний рассказ будет о методологии науки, в частности о том, каким образом мы можем устанавливать возраст археологических находок, какие основные методы при этом используются и какие физические принципы и процессы лежат в их основе.
Прелесть научных методов датировок состоит в том, что они взаимодополняемы и взаимопроверяемы, то есть с помощью одного метода мы можем проверить корректность другого и наоборот, при необходимости внося в него поправки. Также эти «часы» перекрывают огромный временной диапазон – около 9 порядков (на самом деле больше, но для исторических целей «быстрые» часы бесполезны, масштабы эволюционного времени захватывают семь или восемь порядков).
Это можно сравнить с работой опоздавших криминалистов, где нет непосредственных свидетелей с «места преступления», и нашедших лишь его следы.
Далее
Total votes 43: ↑42 and ↓1+41
Comments105

50 лет первым снимкам с поверхности Луны

Reading time4 min
Views7.3K
50 лет назад был решен вопрос проблемы лунного грунта. Твердая поверхность Луны или покрыта толстым слоем пыли? Способен ли выдержать лунный грунт космический корабль и космонавта или они провалятся вглубь пыльного слоя?
Многие годы этот вопрос рождал гипотезы и научные споры. Нам сложно понять восхищение наших предков этой первой посадкой — мы ведь всегда знали что Луна твердая, а обратную сторону Луны можно легко найти в интернет. Точно также наши потомкам будет сложно понять то, что восхищает в наше время.
Пройдет каких-нибудь двадцать лет, и в космос станут летать по профсоюзным путевкам, люди достигнут ближайших планет — Луны, Марса, Венеры… Возможно, мы с вами не доживем — доживут дети. Но никто никогда не повторит того, что было совершено нами. Мы были первыми — и останемся ими уже на века! А это так трудно — быть первыми...

к/ф «Укрощение огня»
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments6

Почему некоторые ноты гармонично звучат вместе

Reading time4 min
Views45K


Вы никогда не задумывались, почему некоторые ноты больше подходят друг другу, чем другие? Как связаны между собой частоты их волн? Почему ноты одной тональности звучат «хорошо»? Почему «хорошо» звучат ноты в составе аккорда?
Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments65
1
23 ...

Information

Rating
Does not participate
Location
Praha, Hlavni Mesto Praha, Чехия
Date of birth
Registered
Activity