• Как определить, что клиент зашел на сайт через браузер iPhone?

    searching on the net there are two common ways of achieving this. My favorite though is in PHP its just so clean? wow. :D

    In PHP you can write

    <?php function isIphone($user_agent=NULL) { if(!isset($user_agent)) { $user_agent = isset($_SERVER[′HTTP_USER_AGENT′]) ? $_SERVER[′HTTP_USER_AGENT′] : ′′; } return (strpos($user_agent, ′iPhone′) !== FALSE); } if(isIphone()) { header(′Location: http://www.yourwebsite.com/phone′); exit(); } // ...THE REST OF YOUR CODE HERE ?>

    and in javascript you can write

    var agent = navigator.userAgent; var isIphone = ((agent.indexOf(′iPhone′) != -1) || (agent.indexOf(′iPod′) != -1)) ; if (isIphone) { window.location.href = ′http://www.yourwebsite.com/phone′; }



  • Unity3D: Исключение NullReferenceException при переключении платформы на Android

    NULLREFERENCEEXCEPTION IN MOBILECONTROLRIG.ENABLECONTROLRIG AFTER SWITCHING PLATFORM IN EDITOR

    Steps to repro:

    1. Open attached project;
    2. Go to BuildSettings (File -> Build Settings);
    3. Select any other available platform (i.e. WebGL);
    4. Click Switch Platform.

    Expected result:
    Platform is switched without errors.

    Actual result:

    Error:

    NullReferenceException
    UnityStandardAssets.CrossPlatformInput.MobileControlRig.EnableControlRig (Boolean enabled) (at Assets/Standard Assets/CrossPlatformInput/Scripts/MobileControlRig.cs:89)
    UnityStandardAssets.CrossPlatformInput.MobileControlRig.CheckEnableControlRig () (at Assets/Standard Assets/CrossPlatformInput/Scripts/MobileControlRig.cs:82)
    UnityStandardAssets.CrossPlatformInput.MobileControlRig.OnActiveBuildTargetChanged (BuildTarget previousTarget, BuildTarget newTarget) (at Assets/Standard Assets/CrossPlatformInput/Scripts/MobileControlRig.cs:98)
    UnityEditor.Build.BuildPipelineInterfaces.OnActiveBuildTargetChanged (BuildTarget previousPlatform, BuildTarget newPlatform) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildPipelineInterfaces.cs:345)
    UnityEditor.Build.BuildPipelineInterfaces:OnActiveBuildTargetChanged(BuildTarget, BuildTarget)

    Notes:

    - Reproducible in 2017.2.0b3, 2017.1.0f3;
    - The code doesn′t compile in 5.6.1p2;
    - Reproducible on Windows 10;
    - Uncommenting line 82 in ′MobileControlRig.cs′ script fixes the issue.


    Solution:

    Change de namespace to
    namespace Standard_Assets.CrossPlatformInput.Scripts

    if has error about UnityEngine dont found, use
    #if UNITY_EDITOR
    using UnityEditor;
    #endif



  • Unity3D: Вводная в синтаксис

    Представлен систаксис на Javascript

    Игровой объект


    Создание нового игрового объекта с именем MyObject.

    var myObject = new GameObject("MyObject");

    Созданный объект будет доступен по ссылку myObject.

    Поиск объекта по его имени.

    var myObject = GameObject.Find("MyObject");



    Теги можно использовать для помечания группы объектов со сходными свойствами, либо использующиеся в единой сцене.
    Поиск объекта по тегу, возвращает единственный объект:

    var myObject = GameObject.FindWithTag("MyTag");



    Возвращает список всех объектов с указанным тегом:

    var objectList = GameObject.FindGameObjectsWithTag("MyTag");



    Проверка на наличие у объекта требуемого тега. Возвращает true, если у указанного объекта имеется тег MyTag:

    var isCompare = GameObject.CompareTag("MyTag");



    Уничтожение объекта:

    Destroy(myObject);



    Уничтожение объекта через минуту, после его создания:

    Destroy(myObject, 60);





  • Особенности текстурирования в 3ds Max

    Предположим, у вас уже установлен 3ds Max и вы готовы начать текстурирование объекта. Если нет — воспользуйтесь нижеприведенной ссылкой.

    Простое текстурирование

    1. Откройте 3ds Max и создайте несколько примитивов: бокс, шар и цилиндр.

    Простое текстурирование в 3ds Max 1

    Остальное - под катом.



  • Как запустить видео YouTube в фоновом режиме?

    Ну вот не хочу я покупать Premium аккаунт. Не хочу, и всё. А некоторые видео и не требуют наличия картинки. Скажем, интервью Д.Пучкова с интересным человеком. Я вот, например, хочу воткнуть наушники и слушать ролик, когда еду в транспорте или на машине. Что же делать? Не могу же я положить телефон с включенным экраном в карман. Но выход есть. Несколько телодвижений - и можно слушать любой ролик с YouTube в фоновом режиме.

    Телодвижения следующие:

    1. Запускаем браузер Google Chrome

    2. Заходим на сайт https://youtube.com

    Дальше смотрите под катом



  • Строительство. Некачественный инструмент.

    Когда в прошлом году начинал строить баню, подумал, что неплохо было бы сразу обзавестись инструментом, который поможет мне в работе. Еще зимой положил глаз на сабельную пилу Skil 1065 LA в магазине "220 Вольт". Стоила она на тот момент около 4000руб. Вместе с ней отдельно приобрел одно полотно для резки газобетона и одно - для дерева.

    В комплекте шли 3 полотна - два по металлу, одно - по дереву. Полотно по металлу вышло из строя при первой же проверке. Остальные даже пробовать не стал.

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

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

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

    Честно говоря, нисколько не жалею, поскольку пила не оправдала ожидания.

    Еще один инструмент, который разочаровал меня - циркулярная пила Military DS1250 в магазине "МаксиДом". В то время она продавалась по акции за 1800 рублей. К слову, сейчас данная пила стоит около 3 тысяч.

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

    Сначала я пилил ей газобетонные блоки. Справлялась с ними на "ура". Потом пришел черед досок. Доски 20х150 пилила, как масло. Но, когда пришел черед 50х100, стала заметно напрягаться. Я уже почти закончил готовить дерево для стропил, и в этот момент пила приказала долго жить. Упала мощность, а потом и вовсе пошел дым.

    В этот раз из сервиса позвонили уже через неделю. Деньги вернули без проблем.

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

    Пока это все. Скоро выложу материал о том, как я делал крышу своей баньки. 



  • Клонирование объекта в Javascript

    Метод Object.assign() используется для копирования значений всех собственных перечисляемых свойств из одного или более исходных объектов в целевой объект. После копирования он возвращает целевой объект.

    Метод Object.assign() копирует из исходных объектов в целевой объект только перечисляемые и собственные свойства. Он использует внутренний метод [[Get]]на исходных объектах и внутренний метод [[Set]] на целевом объекте, так что он также вызывает геттеры и сеттеры. Именно поэтому он присваивает свойства вместо простого копирования или определения новых свойств. Это поведение может сделать метод непригодным для вливания новых свойств в прототип, если вливаемые исходные объекты содержат геттеры. Вместо него для копирования в прототипы определений свойств, включая признак их перечисляемости, следует использовать методы Object.getOwnPropertyDescriptor()и Object.defineProperty().

    Копируются свойства типов как String, так и Symbol.

    В случае возникновения ошибки, например, когда свойство является незаписываемым, возбуждается исключение TypeError, а целевой объект targetостаётся неизменным.

    Обратите внимание, что метод Object.assign() не выкидывает исключения, если в качестве исходных значений выступают null или undefined.


    Пример: клонирование объекта

    var obj = { a: 1 };
    var copy = Object.assign({}, obj);
    console.log(copy); // { a: 1 }

    Пример: слияние объектов

    var o1 = { a: 1 };
    var o2 = { b: 2 };
    var o3 = { c: 3 };
    var obj = Object.assign(o1, o2, o3);
    console.log(obj); // { a: 1, b: 2, c: 3 }
    console.log(o1); // { a: 1, b: 2, c: 3 }, изменился и сам целевой объект.

    Больше информации тут



  • Самогон. Быстрая брага

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



Загрузка...

Войти на сайт

Регистрация