• ООП + jQuery, как правильно делать?

    @Arik
    var self = this;

    Еще есть call(), apply() и bind()
    Ответ написан
    Комментировать
  • Какой шрифт вы используете для баннеров?

    zahmTOD
    @zahmTOD
    Графический дизайнер
    Про какой в брендбуке написано, тот и беру )
    Если фирменный стиль не требователен, то Roboto. У него есть Condenced )
    Ответ написан
    Комментировать
  • Какой шрифт вы используете для баннеров?

    sabolch
    @sabolch
    Web devoloper
    Я человек простой. Вижу, что надо выбрать шрифт - беру Open Sans
    Ответ написан
    2 комментария
  • Переход из С++ в PHP?

    Daniro_San
    @Daniro_San
    Программист
    Не мне давать советы, но
    Гляньте на ASP.NET - компилируемый язык со строгой типизацией и крестоподобным синтаксисом, зрелая бекенд технология, есть немало вакансий по РФ.
    Всяко приятнее PHP будет
    Ответ написан
    2 комментария
  • Как сделать выборку с округлением до 50?

    @Sayonji
    В математике округление с произвольным шагом делается стандартной операцией:
    50 * round(X / 50)
    Ответ написан
    1 комментарий
  • Как вести множество проектов на Go и не запутаться с папками и импортами?

    Храните ваши проекты в $GOPATH (C:\Go\src\supertool\)
    Зависимости конкретного пакета кладите в C:\Go\src\supertool\vendor
    Пакеты вашего проекта кладите в папку с проектом C:\Go\src\supertool\superpackage

    Собирать это всё дело потом через go build supertool
    Ответ написан
    8 комментариев
  • Как реализовать интерфейс в Go?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Вы реализовали интерфейс для типа "указатель на IPAddr", а распечатываете тип "IPAddr".

    С этим возникает сложность из-за двойных стандартнов, принятых в Go, хотя и логичных. Запомните навсегда:

    Pointer type can access the methods of its associated value type, but not vice versa. That is, a *Dog value can utilize the Speak method defined on Dog, but as we saw earlier, a Cat value cannot access the Speak method defined on *Cat.


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

    Объясняется это просто - если метод реализован для указателя, он, скорее всего, может что-то менять в объекте по этому указателю, поэтому передавая объект по значению, а не по указателю - он бы менял не в самом объекте, а в его копии, которая бы делалась при передачи по значению. Это явно не то, чего ожидал писатель метода.
    В обратном же случае, если метод определён для типа по значению, а не по указателю, очевидно что метод ничего в самом значении не меняет (если бы попытался, то менял бы опять же в копии значения). А раз он там ничего не меняет, можно смело передать наш объект под ссылкой.

    Тут объясняется всё подробно: https://github.com/golang/go/wiki/MethodSets
    Ответ написан
    8 комментариев
  • Как научиться писать самостоятельно код?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В школах и институтах учили строить алгоритмы, еще когда рисовали блок-схемы.
    Это не зависит от языка программирования - нужно просто составить алгоритм для решения задачи. Изучая различные аспекты языка программирования, различные библиотеки, фреймворки и так далее вы просто приобретаете знания о дополнительных инструментах, которым нужно пользоваться для решения задачи.

    Но само решение придумывает программист, а не язык программирования.

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

    Например, взять какую-нибудь игрушку с множеством товара и найти самый выгодный или дешевый товар. Вам будет понятна цель - найти нужный вам товар
    При этом не будет важно в каком виде - в виде веб-странички, в виде простого текста на экран, или в виде заполненной таблички в базе данных.
    При этом не будет важно какими инструментами вам нужно воспользоваться.
    Главное, что вы осознаете что именно хотите получить. И пишете программу, которая выдает вам результат, используя имеющиеся знания.
    Чем больше знаний, тем удобнее в конечном счете пользоваться тем что вы написали и тем быстрее и проще вам это писать.
    Ответ написан
    Комментировать
  • Как запускать скомпилированные бинарники Golang под Ubuntu?

    @bnytiki
    К Go это отношения не имеет.

    Под Linux слушать 80-й порт (а точнее все порты меньше 1024) может только приложение с правами root.

    Можно например, прокинуть через nginx. Тем более, что nginx будет очень хорош для статики и для защиты от медленных клиентов.

    Лучший способ запускать веб-сайты написанные на Go?


    Есть куча вариантов. Конечная цель - хоть как-то запускать приложение, в т.ч. при перезагрузки компьютера.

    Например, можешь превратить в демона (осторожно, программа Go так просто в демона не превращается https://habrahabr.ru/post/187668/ поэтому проще будет использовать сторонние готовые пакеты для демонизации программы на go )

    Модно-молодежный метод - через Docker/rkt - также написанные на Go.

    Еще более модный-молодежный метод - через шедулер, предназначенный для кластеров, например Hashicorp Nomad (который, кстати, сам тоже на Go написан).

    Вот тут написано как запускать сам Nomad https://github.com/hashicorp/nomad/tree/master/dist

    Если обойтись без Docker и Nomad - тем же рецептом можно воспользоваться для вашего приложения.
    Ответ написан
    4 комментария
  • Пользователи и группы Linux: как делать правильно?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!

    я хочу, чтобы мой сайт находился в папке /home/danforth/www/

    Зачем, простите? Домашний каталог юзера danforth предназначен для файлов юзера danforth - в том числе для настроек различных систем. Некоторые файлы могут хранить весьма любопытную для посторонних информацию. Это все равно что на винде разместить файт в каталоге профиля пользователя.
    Сайты, не имеющие отношения к юзеру danforth, лучше размещать вне его домашнего каталога, например в /var/www (как это обычно делается в линухе) или в /usr/local/www (как во FreeBSD).

    mysql работает от юзера mysql, остальные не знаю - у меня апач :) работчющий - внезапно - от юзера apache :) Есть еще ruby, модуль passenger работает от юзера nobody
    Ответ написан
    Комментировать
  • Пользователи и группы Linux: как делать правильно?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    "755 для файлов
    644 для папок"
    наоборот для папок (755 - rwxr-xr-x), Иначе никто не сможет зайти в папки, и для файлов 644 (rw-r--r--)

    "nginx чтобы он смотрел в этот каталог"
    Зачем? Если запускается не от вашего danforth, то не нужно это делать, пусть nginx смотрит в свой каталог. А вот юзера danforth можно добавить в www-data, чтобы вы могли туда заходить и писать, и да тогда нужно будет 775 и 664 соответственно.

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

    moropsk
    @moropsk
    как вариант.
    https://debian.pro/2017
    Ответ написан
    Комментировать
  • Как понять что меняет элемент сразу после загрузки страницы?

    DirecTwiX
    @DirecTwiX
    "display: flex;" уже предлагали?
    Установив Break on subtree modifications для html, всё-таки понял, из-за чего текст прыгает.
    ebrL7oO.png

    В общем, это происходит, когда вот сюда .menu_wrapper.clearfix добавляется класс .fluid.

    supreme.js -> MenuInit()
    menuWrapper = $('.h_menu2 .menu_wrapper');
    
    			if (totalMenuWidth < menuWrapper.width()) {
    				menuWrapper.addClass('fluid');
    			} else {
    				menuWrapper.removeClass('fluid');
    			}
    Ответ написан
    3 комментария
  • Знания Junior php разработчика?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    что должен знать идеальный джуниор (мое личное мнение):

    - Сетевой стэк. Нужно иметь хотя бы базовое представление о том как с сервером общаются. Ну то есть не нужно лезть в дебри, но понимать что такое HTTP или чем TCP от UDP отличается - нужно. В целом это пара часов чтения википедии.
    - GIT или любая другая распределенная VCS. Базовые навыки, что бы хотя бы понимал что есть git revert или git rebase, что такое фичабрэнчи и примерное представление как это работает и зачем надо.
    - Базовые основы unix. Ну то есть что бы не пугаться таких вещей как ssh хотя бы.
    - PHP. Без этого никуда. Он должен понимать что такое слабая динамическая типизация (не заучивать табличку кастов типов, а понимать плюсы и минусы, такая же история с приоритетами операторов - не заучивать а знать как избегать проблем с чтением кода)
    - Понимать что код чаще читают чем пишут, а потому не экономить 5 минут на написании кода, а писать так, чтобы сэкономить 30 минут человеку, разбирающемуся в куске кода.
    - Знать базовые вещи в плане безопасности. XSS и как защищаться, SQL инъекции и как защищаться, CSRF, MITM. Понимать что такое NDA, что данные пользователей - секретная информация. Как хэшировать пароли (не md5 а password_hash) и почему это важно.
    - Знать SQL. Глубоких знаний не требуется, нужно лишь понимание того, что такое нормальная форма, желательно разобраться с вопросом денормализации данных. Идеально иметь хотя бы базовые представления о том как работать с NoSQL решениями.
    - Процедурное программирование: почему глобальные переменные порождают сложность, что такое состояние, как можно использовать классы для изоляции состояния и т.д. Инкапсуляция. Инварианты, пост/пред условия, сохранение целостности...
    - Разделение ответственности. Это один из важнейших принципов, и упрощать все это до "mvc фреймворк" слегка неправильно. Вы должны понимать что от чего отделяете и главное зачем.
    - Автоматические тесты. Джуниор должен знать что это такое и иметь хотя бы минимальный опыт их написания. Должен понимать разницу между юнит и интеграционными тестами. Быть знакомым с пирамидой тестирования.
    - Уметь решать стандартные задачи не задавая слишком много вопросов. Например регистрацию пользователя по email-у вы должны написать, или авторизацию через соц сети, или комментарии, или новостную ленту.
    - Уметь дебажить. xdebug, blackfire и тд.

    В целом где-то за годик весь этот список можно влегкую покрыть с нуля.

    p.s. Я в списке специально не указывал ООП, поскольку всеравно первые пару лет у разработчиков выходит процедурщина на классах. Это не плохо, но того что в моем списке более чем должно хватать для решения стандартных задач. Но термины вроде "инкапсуляция/полиморфизм/наследование" требуются в обязательном порядке подавляющем количеством интервьюверов, а стало быть знать это надо. Единственное что - рекомендую в свободное время глубже погрузиться в этот вопрос а не тупо заучивать формулировки.

    Так же вещи вроде docker джуниорам знать не обязательно просто потому, что их врядли допустят сходу к управлению инфраструктурой. А так пару неделек на изучение и вперед.
    Ответ написан
    12 комментариев
  • Как можно максимально ускорить загрузку страницы?

    @antonowano
    Профессиональный самоучка
    Нужно иметь две версии css и js: dev и prod. Во время разработки вы работаете только с dev версией, а prod у вас создается позже (перед запуском на продакшане выполняете минификацию и комбинирование).
    Чтобы реализовать это автоматически вам нужен frontend сборщик такой как Grunt.JS или Gulp.JS, которые работают на node.js.
    Главное преимущество вы получите возможность использовать css, js-препроцессоры и собирать минимизированный единственные файлы для сайта со стилями и JS.

    Также попробуйте избавиться от не нужных библиотек в JS. Чаще всего они имеют излишний функционал и занимают много места. Возможно у вас получится отказаться от JQuery или хотя бы подключить slim версию.
    Ответ написан
    3 комментария
  • Для чего нужные побитовые операции в Python?

    @deliro
    Например, флаги. Юзер может:
    0b1  # Читать
    0b10  # Писать
    0b100  # Редактировать
    0b1000  # Удалять
    
    0b1010  # юзер может писать и удалять, но не может читать и редактировать

    Итого, все флаги можно запихнуть в инт, который можно запихнуть в 1 байт.
    Ответ написан
    5 комментариев
  • Как правильно тестировать в Golang?

    Не надо на него писать юнит-тест, потому что этот метод достаточно тривиальный.

    P.S. Если бы мы все-таки писали на него тест, то создали бы в тесте объект Connection, инициализировали у него канал и проверяли бы через чтение канала, пишется ли сообщение туда.
    Ответ написан
    Комментировать
  • Stylus + БЭМ, как правильно унаследовать?

    werty1001
    @werty1001
    undefined
    Зачем тут @extends ? Только ради ширины? Это не разумно. Зачем псевдокласс nth-child? Если row поменять местами - вся ваша верстка сломается, это совсем от бэма далеко.

    <header class="header">
    	<div class="row header__row">
    		<div class="row__col"></div>
    		<div class="row__col"></div>
    	</div>
    </div>

    .header
    	
    	&__row
    		height 300px
    Ответ написан
    Комментировать
  • Как сделать такой hover-эффект?

    HamSter007
    @HamSter007
    HTML/CSS верстальщик
    Ответ написан
    Комментировать