• Будет ли работать IPS-монитор 23 дюйма на ноутбуке?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    MD Radeon HD 8670M (1024 Мб GDDR3)


    4K конечно не потянет, но FullHD норм. Если конечно в игрушки не играться.
    Ответ написан
    1 комментарий
  • Зачем нужен Gulp?

    @sergeystepanov1988
    Если по простому, то Gulp это некий интерфейс для подключения и настройки различных плагинов, которые выполняют различные операции с файлами:
    • преобразование файлов (сжатие картинок, минификация js и css, объединение в один файл)
    • слежение за изменениями файлов и реакция на эти изменения
    • автоматизированное тестирование
    • автоматическое генерирование документации
    • компиляция с одного языка на другой (LESS -> CSS, TypeScript -> JavaScript, ES6 -> ES5)
    Ответ написан
    8 комментариев
  • Где можно найти хорошие задачи по JS?

    @yoyoy2
    Что может быть лучше, чем извращенцы на фрилансе ?)
    Ответ написан
    Комментировать
  • Как делаются 3D-панорамы?

    sanchezzzhak
    @sanchezzzhak
    Ля ля ля...
    сфера + снимок панорамный

    threejs.org/examples/webgl_panorama_equirectangular
    Ответ написан
    Комментировать
  • Почему стала разряжаться быстрее батарея?

    BVadim
    @BVadim
    Вероятнее всего, какой-то процесс нагружает CPU, в следствии неправильной работы после обновления. Прежде всего в мониторинге системы обратите внимание на процессы, процент использования CPU у которых высок, если такие имеются, то тут Google в помощь по конкретному случаю. Часто такое решается через сброс smc и pram. Там же, в мониторинге системы, есть вкладка Энергия, на которой можно отсортировать процессы по энерговоздействию.
    Маловероятно, что батарея резко просела физически сразу после обновления, но чтобы себя успокоить, можно посмотреть текущую ёмкость батареи в приложении "Информация о системе" на вкладке электропитание.
    Ответ написан
    Комментировать
  • В чем проблема с учебой программированию?

    @nirvimel
    Умение программировать - это не тоже самое, что владение одним или несколькими языками программирования. Мы все (кто как) владеем русским языком, но это не делает нас писателями автоматически. Об этом не упоминают авторы книг по ЯП, что их прочтение не сделает программиста из читателя, как учебник русского языка ни из кого еще не сделал писателя. Одно дело - уметь писать код, другое - уметь программировать. Задачи, на которые вы натолкнулись, требуют именно программирования, а не просто выражения в программном коде некоторой последовательности действий, описанной естественным языком.

    Надеюсь, вы воспримете это без обид. Я сам не считаю себя великим программистом. И многие конкретно программистские задачи у меня тоже вызывают закипание мозга, несмотря на хорошее владение ЯП и достаточный опыт. Просто не всем русскоговорящим (т.е. русскопишущим в интернете) быть великим русскими писателями, и не всем кодерам быть великим программистами.
    Ответ написан
    6 комментариев
  • Как урезать свой перфекционизм?

    Foror
    @Foror
    Графоман
    Если для себя пилите, то пихать 40кб кода для небольшой фичи - перебор. Такими темпами проект скатится в говно и будет тормозить. С другой стороны если в итоге не взлетит, то все эти оптимизации будут упущенным временем.

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

    Но делайте такой проект с мыслью, что в итоге будете все переделывать. И это действительно так, будете переделывать. Что фичи, на которые вы ставили - не взлетят, а фичи которым не уделили внимания будут приносить 80% дохода.

    Если же делаете ради денег, кто-то там сказал или где-то там прочитали, что здесь можно поднять баблосов. То пилите как попало - 90% что не взлетит, а если взлетит - потом переделаете )
    Ответ написан
    1 комментарий
  • Почему не работают background-image для дивов?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега CSS
    Раз вы ни кода, ни ссылки на сайт не привели, будем говорить про сферический CSS в вакууме:

    CSS 2.1 properties (well-supported subset): background-image
    These properties are supported in effectively all browsers (since IE6+, Firefox 2+, Chrome 1+ etc)
    Includes the following:
    ...
    background-image
    ...

    caniuse.com/#search=CSS%202.1%20properties

    Скорее всего, проблема в чём-то другом. Но гадалок здесь нет - ищите девайс с проблемой и дебажьте.
    Ответ написан
    Комментировать
  • Как урезать свой перфекционизм?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Чтобы перестать делать лучше то, что ещё не сделано до конца, нужно понять одну простую истину: Запущенный проект лучше, чем не запущенный.

    Давайте потренируемся:
    • Что лучше: запущенный проект с несжатыми стилями или незапущенный со сжатыми?
    • Что лучше: не запущенный проект с десятью страницами или запущенный с тремя?
    • Что лучше: запущенный проект c jQuery или не запущенный без jQuery?


    Надеюсь, вы смогли выбрать! Как узнать, что пора запустить проект? (Под запуском я имею в виду «показать людям». Например, если вы решили написать библиотеку, давайте считать «проект запущенным», если вы выложили её на гитхаб) Нужно прикинуть, сколько времени вам надо на разработку и умножить на два. Если получилось больше двух недель, то стоит разбить проект на части и прикинуть так про каждую часть. Соответственно, ставите дедлайны.

    Промежуточные дедлайны помогают успеть к последнему. Старайтесь сначала реализовать основную функциональность, а потом дополнительную. Если не успеете к дедлайну доделать дополнительное — сначала запустите основное, а потом видно будет, надо ли вообще доделывать дополнительное.

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

    Удачи!
    Ответ написан
    4 комментария
  • Бесплатный проект для портфолио превратился в бесконечный. Как быть?

    customtema
    @customtema
    arint.ru
    Взялся я однажды бесплатно сделать корпоративное приложение, дабы начать формировать портфолио.


    Привет! Я занимаюсь корпоративными приложениями. "Бесплатно" - это хорошо, конечно. Но поверьте, проблема не в заказчике. Разработка так называемых "корпоративных приложений" действительно стоит тех сотен и тысяч нормочасов, которые прописываются в сметах. То, что вы со своим заказчиком изначально не учли этого и других тонкостей, на законы мироздания не повлияло. И ничего удивительного в последствиях ваших взаимоотношений нет. Напротив, все очень даже закономерно.

    Бесплатный сыр бывает... где?

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

    В подобных случаях я или сразу отказываю, или, как минимум, стараюсь сделать главное - не обещать многого. Работа стоит денег. Квалифицированная работа стоит еще больших денег. Известный приличный объем квалифицированной работы "бесплатным" быть не может. Только если вы инвестируете его бизнес за свой счет. Речь идет о сотнях тысяч и миллионах рублей - в перерасчете на нормочасы, вы можете себе позволить потратить такое количество личного времени? Не дороговато получается, за портфолио?

    Чтобы закончить проект, сделайте не-знаю-что с заказчиком, и изучите DDD и бизнес-аналитику. Это позволит вам адекватно оценивать объемы задач, при работе в этой отрасли.

    Как палочка-выручалочка, вот список методик из разных областей, которые могут вам помочь. Изучение этих методик, естественно, займет некоторые силы и время, но вероятно они спасут вас и дадут определенное понимание перспективы. Все гуглится:
    • Getting Real
    • DDD
    • Бизнес-анализ
    • Книги Мартина Фаулера
    Ответ написан
    Комментировать
  • Как вызвать popup после клика на кнопку Submit в Contact Form 7?

    Так не пробовал: on_sent_ok: "$("#id").css("display", "block");"
    Ответ написан
    Комментировать
  • Пойдет ли Xcode на Macbook 7.1 (2010) года?

    @Leonid0
    Евгений, если сможете найти подходящую оперативку, то стоит. Сам сижу на MBP 13 2010 с 6GB, одну планку поменял с 2 до 4ГБ в 2012 г. Сейчас "популярная" оперативка на нем не заводится. Недавно обновился на OS X 10.11.3 и параллельно Win 10, ничего не тормозит (SSD). Только надо ставить на диск с разбивкой MBR. Если найдете подходящую оперативку, просьба отписаться здесь. Возможно и 16Гб заведется, раз 10Гб доступно у Андрей Мамченко.
    Ответ написан
    Комментировать
  • Стоит ли брать бу MacBook Air 13" 2009 или докинуть 10к и взять аналог 2013 года?

    @evgenytimin
    Air 2009 cлабенький будет, не советую. Берите Macbook Pro 13 mid 2012, при желании нарастите опертивку и замените на SSD.
    Ответ написан
    Комментировать
  • Как выучить js творческому человеку?

    lazalu68
    @lazalu68
    Salmon
    "Как выучить js творческому человеку?"

    Представления не имею)

    "Код выполняется построчно и не перескакивает с строки на строку?"

    Код выполняется в порядке появления инструкций. Упрощенно: движок разбирает исходный код, проверяет его на соответствие синтаксису, и если все Ок, то выполняет инструкции в том порядке, в каком они были описаны. Например:
    var a = 5;
    
    var test = function() {
    	var b = 192847;
    
    	var sum = a + b;
    
    	alert('a + b = ' + sum);
    };
    
    test();

    Первая инструкция это "var a = 5;", она сложная, т.к. состоит из двух инструкций: одна это объявление переменной a, другая - присвоение переменной a значения 5. Если разделить эту сложную инструкцию на две элементарные, то получится так:
    var a;
    
    a = 5;

    Далее. Вторая инструкция в моем коде это "var test = function() { var b = 192847; var sum = a + b; alert('a + b = ' + sum); };". Она тоже сложная, порядок выполнения такой:

    1. Объявление переменной test,
    2. Присвоение переменной test значения "function() { var b = 192847; var sum = a + b; alert('a + b = ' + sum); };", (на самом деле в переменной test будет лежать ссылка на эту функцию, но мне кажется, что это пока можно пропустить)

    Все инструкции внутри этой функции будут выполняться только тогда, когда эта функция будет вызвана посредством обращения к переменной, в которой она сохранена, с явным указанием передаваемых аргументов (даже если ни одного аргумента не будет передано). Следующая инструкция в моем коде как раз это и будет делать - вызывать функцию test:
    test();
    test - это название переменной, в которой лежит функция, а в скобках указаны аргументы, которые мы передаем функции, то есть никаких. Функция test содержит такие инструкции:
    var b = 192847;
    
    var sum = a + b;
    
    alert('a + b = ' + sum);

    Выполняться эти инструкции будет так, опишу в элементарных инструкциях:

    1. var b; - объявление переменной b,
    2. b = 192847; - присвоение переменной b значения 192847,
    3. var sum; - объявление переменной sum,
    4. sum = a + b; - присвоение переменной sum значения, равного сумме значений, которые сохранены в переменных a и b, то есть 5 + 192847 = 192852,
    5. alert('a + b = ' + sum); - вызов функции alert и передача этой функции единственного аргумента 'a + b = ' + sum, который равен сумме строки 'a + b = ' и числа сохраненного в переменной sum. В JS можно прибавить строку к числу, потому что в этом случае число будет принудительно приведено к строке, таким образом произойдет объединение строк 'a + b = ' и '192852'. То есть эта инструкция вызывает функцию alert и передает ей аргумент 'a + b = 192852'. Функция alert выводит переданные ей аргументы в диалоговом окне в браузере, то есть вызов alert('a + b = ' + sum); покажет пользователю диалоговое окошке с текстом 'a + b = 192852'.

    Посмотрите еще раз на пример. Соберем вместе все элементарные инструкции, выполняемые им:
    var a;
    
    a = 5;
    
    var test;
    
    test = function() {	var b = 192847; var sum = a + b; alert('a + b = ' + sum); };
    
    // выполнение следующих инструкций инициировано вызовом функции test()
    
    var b;
    
    b = 192847;
    
    var sum;
    
    sum = a + b;
    
    alert('a + b = ' + sum);

    Вызов функции alert на самом деле не является элементарной инструкцией, потому что сама по себе эта функция состоит еще из многих других, но посмотреть что в ней внутри, я не смогу) Поэтому схема останется такой. К тому же, схема от этого не теряет наглядности.

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

    "Если что то будет не по синтаксису то будет ошибка?"

    Верно, любое несоответствие синтаксису вызовет ошибку. Возьмем наш же пример:
    var a = 5;
    var test = function() {
    	var b = 192847;
    	var sum = a + b;
    	alert('a + b = ' + sum);
    test();

    В этом примере я намеренно пропустил символ "}", который показал бы движку (который выполняет код JS), что инструкция объявления функции (начавшаяся на второй строке) закончена.
    При выполнении этого кода появляется такая ошибка:

    "SyntaxError: missing } after function body"

    Поскольку проверка синтаксиса происходит до выполнения кода, даже синтаксически правильно описанная инструкция var a = 5; не была выполнена, несмотря на то, что шла перед ошибочной инструкцией.

    "Как можно манипулировать классом lowPosition которого нет?"

    Ну, это можно делать так же, как можно на листочке бумаги рисовать несуществующих животных) Я так понял, речь об этой части кода: _block.toggleClass('lowPosition');
    Метод .toggleClass('someClass') делает вот что: проверяет, имеет ли элемент класс 'someClass', и если элемент имеет класс 'someClass', то убирает этот класс, а если не имеет, то добавляет к элементу этот класс. Список классов, которые имеет элемент, описаны просто строкой: элемент <div class="container fluid"></div> имеет классы "container" и "fluid", а элемент <a href="example.com">example</a> так же как элемент <p class="">some paragraph</p> не имеет классов. Поэтому чтобы "манипулировать классом lowPosition которого нет", достаточно добавить строку "lowPosition" к строке с классами элемента. Например, если мы хотим добавить к элементу <div class="container fluid"></div>, класс "lowPosition", то в результате у нас получится такой элемент: <div class="container fluid lowPosition"></div>

    ".hasClass функция которая проверяет наличие класса, допустим. Мне обязательно это делать?"

    Ну код это же не черная магия какая-нибудь, код выполняет определенную цель, и для того чтоб ее достигнуть, нужно совершить определенные действия. Вот ваш код например:
    $(document).ready(function () {
    
        $('.menu-trigger').click(function () {
            $('nav ul').slideToggle(500);
        }); 
    
        $(window).resize(function () {
            if ($(window).width() > 600) {
                $('nav ul').removeAttr('style');
            }
        }); 
    
    	var _menu = $("#menu");
    	var _block = $("#block");
    
    	_menu.click(function () {
    	    _block.toggleClass('lowPosition');
    	    var nextpos = _block.hasClass('lowPosition') ? '10%' : '4%';
    	    _block.animate({
    	        'bottom': nextpos
    	    }, 300);
    	});
    
    });

    Это одна длинная инструкция. Тут происходит вот что: метод .ready() принимает аргументом функцию, которую он выполнит сразу же по рендеру (отрисовке) документа. Давайте сразу будем обсуждать ту часть этой функции, которая начинается с инструкции "var _menu = $("#menu");". В ней происходит вот что:

    1. var _menu = $("#menu"); - объявляется переменная _menu, которой присваивается ссылка на элемент #menu,
    2. var _block = $("#block"); - объявляется переменная _block, которой присваивается ссылка на элемент #menu,
    3. _menu.click( function() {} ); (инструкции внутри функции опущены) - вызывается метод .click(), который принимает аргументом функцию function() {}. Метод .click( function() {} ) "связывает" некоторые события, происходящие в браузере, с функциями, которые должны быть выполнены, когда эти события произойдут, а именно: функция function() {} будет выполнена, когда для элемента _menu произойдет событие, то есть когда пользователь кликнет на него.

    А теперь по инструкциям внутри этой функции. Когда пользователь кликает на элемент _menu происходит следующее:

    1. _block.toggleClass('lowPosition'); - если элемент _block имеет класс 'lowPosition', то этот класс с него убирается, а если не имеет - добавляется,
    2. var nextpos = _block.hasClass('lowPosition') ? '10%' : '4%'; - объявляется переменная nextpos, которой присваивается значение '10%' если элемент _block имеет класс 'lowPosition', или значение '4%' если элемент _block не имеет класс 'lowPosition',
    3. _block.animate({ 'bottom': nextpos }, 300); - метод .animate() принимает аргументом объект с необходимыми для анимации свойствами и длительность анимации в миллисекундах, (в результате свойство 'bottom' элемента _block за 300 миллисекунд примет достаточное количество промежуточных значений, чтобы пользователю этот переход показался плавным. Например, если изначально свойство 'bottom' имело значение '4%', и мы в первом аргументе метода .animate() задали конечное значение '10%', и если предположить что за 300 миллисекунд метод .animate() анимирует 6 кадров, то свойство 'bottom' будет принимать такие значения, начиная с исходного и заканчивая тем, которое задано в первом аргументе для метода .animate(): 4%, 5%, 6%, 7%, 8%, 9%, 10%. Через 50 миллисекунд после начала анимации свойство будет равно 5%, через 100 - 6, и так далее).

    ...
    Ответ написан
    1 комментарий
  • Отличие DevOps от эникейщика?

    @FoxInSox
    Ну, разница примерно как между обезьяной и человеком. У меня всего один знакомый DevOps, и кстати недавно он переехал в Европу по работе. Он умеет писать на Go, Питоне(наверняка чем-то еще), знает как работать с целой горой железа(начиная от Arduino и заканчивая Цисками разных поколений) на профессиональном уровне. Плюс он очень хорошо подкован теоретически и время от времени читал лекции в вузах.
    Ответ написан
    1 комментарий
  • Пойдет ли Xcode на Macbook 7.1 (2010) года?

    @evgenytimin
    Сам сижу на MBP 13 2010. Тоже хочу обновить старичка. Имеет ли смысл ставить оперативку 8GB?
    Ответ написан
    1 комментарий
  • Пойдет ли Xcode на Macbook 7.1 (2010) года?

    Работаю уже около года на полностью идентичном маке, но конечно с SSD и 10Г ОЗУ.
    Все в порядке, иногда на свифте подвисает, но н смертельно.
    Ответ написан
    8 комментариев
  • Пойдет ли Xcode на Macbook 7.1 (2010) года?

    Сам обучаюсь и вовсю разрабатываю небольшие приложения на Macbook Pro 2009 с C2D 2.26ГГц.
    После покупки поставил 6 Гб оперативной памяти, SSD на 120Гб, обновил до OS X 10.11.3, проверил Trim, отключил индексацию, отключил анимацию окон. Работаю с Xcode 7.2, Sketch 3.5, плюс всякие скайп-firefox-sourcetree-и-прочие-утилиты. Особых проблем не испытываю, за ноутбуком спокойно отрабатываю каждый рабочий день (внешний монитор, клава, мышь). Также рекомендую сами собой разумеющиеся вещи - чистка СО, замена термопасты, "кастомные" правила управления СО. Тогда и на вашем ноутбуке сможете вполне успешно все делать.
    Ответ написан
    7 комментариев
  • Пойдет ли Xcode на Macbook 7.1 (2010) года?

    Antonio-banderas
    @Antonio-banderas
    iOS Developer
    У знакомого работает более менее последняя версия Mac OS X на iMac 2008 года, добавили оперативы до 8 гб и Fusion Drive поставили, тоже Core 2 Duo
    Ответ написан
    Комментировать
  • Как понять регулярные выражения?

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    Их не нужно понимать, ты просто читаешь их.
    Очень просто.

    Есть ограничители
    ^ - начало строки
    $ - конец строки
    | - символ "или" - используется между символами или группами, чтобы показать "или то или другое"
    Выглядит так:
    /^(([a-z]+)|([а-я]+))$/
    читается как строка, состоящая из любого количества букв от a до z (английских маленьких букв) или любого количества русских букв, не включая ё, на выходе будет три выборки - первая - вся строка, вторая строка из английских букв, третья - строка из русских.

    Но конкретно этот код еще может быть переписан так:
    /^([a-zа-я]+)$/
    Поскольку нет смысла разделять русские и английские в отдельные группы. Так просто короче и легче.

    Есть символы
    . - это "точка". любой символ, не включая совсем некоторых типа табуляций, переносов строк разных там
    \w - это слово - вот прям любая конструкция из любого количества букв
    (есть другие разные)

    Есть количественные знаки
    .* - звездочка означает или есть, или нет, в любом количестве
    .+ - плюс - обязательно есть, хотя бы одна "точка"
    .{2,} - от двух и до бесконечности "точек"
    .{2,5} - от двух и до пяти "точек"

    Есть шаблоны
    [a-zA-Z] - любая английская буква. просто же?
    [a-яА-ЯёЁ] - любая русская буква
    [?!] - вопрос или восклицательный знак

    Есть группы
    ([a-z][a-z]) - группа состоящая из двух букв. каждая из которых в промежутке между a-z английскими
    Группы от шаблонов отличаются тем, что они захватываются твоим поиском. Ты ведь не забыл, что регулярка - это в первую очередь ПОИСК?

    Есть модификаторы
    /([a-z][a-z])/gi - g(global), i(ignorcase) - глобал означает искать во всем тексте не учитывая переносы строк, если не поставить - будет искать только в пределах одной строки, ignorcase - позволит не указывать большие буквы
    /([a-z][a-z])/gu - g(global), u(utf-8) - утф8 позволит корректно работать с русскими буквами в utf-8 кодировке, частая проблема на форумах
    Ответ написан
    Комментировать