• Существует ли какая- та тула, плагин или просто сервис который бы помогал улучшить код.?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Как только такая появится, вы станете не нужны.
    Ответ написан
    Комментировать
  • Стоит ли покупать mac mini?

    vabka
    @vabka Куратор тега Веб-разработка
    P.S Максимальная сумма которую я могу себе позволить 2k $

    За эти деньги легко можно купить комп, который будет гораздо мощнее, чем макмини:
    https://www.dns-shop.ru/conf/00dd052744ea3d03/ (на некоторых штуках можно сэкономить)
    Ryzen 9 + 1tb NVMe + 64gb RAM
    Ещё и зимой согреет.
    Ответ написан
    5 комментариев
  • Стоит ли покупать mac mini?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    На пк полетела мать - купил новую мать. Подозрения на проблемы с оперативкой - переткнул в другой слот. Нашёл неисправную оперу/слот, заменил оперу/мать. Захотел винт побольше - купил второй/третий/четвёртый, засунул, пользуешься. Полетела сетевуха/звуковуха - купил pci-e вариант. Понадобилась видеокарта - поставил видеокарту (кек). Полетел блок питания - сходил в ближайший магазин за новым блоком питания.
    А в прочем, раз вы такой вопрос задаёте, и имеете денежный ресурс в 2к бакинских на новый комп, то да, вероятно вы целевая аудитория мака, берите.
    Ответ написан
    2 комментария
  • Как перестать комментировать всё подряд?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Писать код так, чтобы он сам себя документировал.
    Давать осмысленные имена переменным и функциям, пусть длиннее, зато читабельнее.
    Почитать про архитектуру, паттерны.
    Рекомендую "Чистый код" Р. Мартин. Там эта тема поднимается.
    Ответ написан
    Комментировать
  • Где сейчас тусуются серьезные PHP программисты?

    @asd111
    На конференциях посвященных php. Там и люди из core и из фреймворков и из крупных компаний тип фейсбука.
    Ответ написан
    Комментировать
  • Где сейчас тусуются серьезные PHP программисты?

    Sanes
    @Sanes
    На работе.
    Ответ написан
    Комментировать
  • На чём писать UDP-сервер под VPS: Java vs Node.js?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Никакой разницы. Выбирайте то, что лучше знаете и считаете более удобным.
    Ответ написан
    Комментировать
  • Как изменить пароль от raspberry pi без доступа к ней?

    @kirdik
    Если есть доступ по ssh к дефолтному пользователю pi, то нужно в терминале написать "sudo su", это залогинит вас как root и там уже написать "passwd pi", если писать "passwd pi" от пользователя pi, то он будет запрашивать старый пароль. Под рутом он этого не спрашивает.
    Либо примонтировать sd на другом компьютере (линукс) и в любом текстовом редакторе скопировать хэш известного пароля нужному пользователю в файле /etc/shadow
    Ответ написан
    Комментировать
  • Как продумать тестовое задание / отбор для Bitrix-разработчика (middle и выше)?

    Rema1ns
    @Rema1ns
    и так сойдет
    Если задача стоит оценить уровень разработчика, я бы начал последовательно, от каких то базовых вещей к наиболее сложным.
    Из базового уровня:
    1. Поговорить с человеком как шаблон сайта утроен ( с точки зрения интеграции дизайна), какие файлы входят в него. Про могосайтовость спросить. Можно зацепить языковые файлы.
    2. Поболтать о компонентах - какие файлы могут входить в состав компонента, какие данные заходят в компонент. Спросить о фильтрации элементов (эсли это списковые), о кэшировании.

    Как тестовое задание на понимание и знание апи
    1. Предложить сделать список новостей с фильтрацией по месяцу и году.
    2. Вывести предыдущий элемент и следующий (можно так же на примере списка новостей)

    Среднячок:
    1. Это конечно же более глубокое знание АПИ и принципов работы Системы.
    2. Конечно же евенты платформы.
    3. Поспрашивать про оптимизацию кода при разработке на бх фреймвок.
    4. Умение создать свой компонент (хотя бы по аналогии с уже созданным)

    Если шоп:
    5. В целом спросить про коммерс модуль системы, что в ходит в него (товары, sku, группы)
    6. Интеграция с 1с.
    7. Настройка оплат, складов, заказов, скидок, доставок.
    8. Фильтрация и поиск по каталожику.

    Задания:
    На эвенты:
    1. Для заполнения веб формы (из модуля форм) создать 2 доп поля, и при добавлении результата дописывать урл и название страницы с которой была отправлена.
    2. Так же для веб форм реализовать "подмену" получателя, получатель будет устанавливаться полем - селектом, например поле Офис, и под каждый офис свой получатель письма.
    Компонент:
    1. Создать свой компонент например аккордеон или сгруппированный по разделам список. (можно поизвращаться с парамертрами :)

    Ну все кто выше уровнем:
    1. d7 \ ORM
    2. Свои модули или сложные архитектурые решения.
    3. Оптимизация хостинга \ вм под
    4. Сложные интеграции

    Тут тестовое задание кроме написать модулек я не придумал)) Скорее всего будет реальное портфолио из решений задач.

    P.S список накатал за пару минут, не панацея, может быт деструтурирован или переосмыслен.
    Ответ написан
    Комментировать
  • Как мне быть в такой ситуации.Куда двигаться дальше?

    titov_andrei
    @titov_andrei
    All my life I learn - and die a fool!
    Учителем "информатики" на дистанционные курсы идите и рассказывайте , какая перспективная нынче IT-сфера, и что спрос на "специалистов" только будет расти и зарплаты повышаться, так как "нормальных" специалистов не хватает.
    Ответ написан
    Комментировать
  • Для чего существуют другие парадигмы программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Нельзя в двух словах сказать зачем нужны парадигмы программирования, потому что для этого нужно иметь опыт программирования, чтобы вы могли усвоить ответ.

    Например, ваше представление: "ООП удобен для бизнеса, можно разделять программу на модули" - неверно.
    Модульность появилась задолго до ООП. Бизнес появился задолго до программирования, и ООП и бизнес не слишком и связаны.

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

    Просто так сложилось, что ООП - крайне удобно для написания средних и крупных проектов, а практически невозможно представить себе высококлассного специалиста, который бы не работал на крупным проектом - как бы иначе у него мог бы набраться опыт? Следовательно опытный специалист, привыкший работать в ООП, будет его использовать уже везде, просто потому что так ему привычнее, удобнее и проще.

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

    И напоследок - полиморфизм и все другие фичи ООП - это уже следствие того, что парадигму стараются сделать максимально гибкой.
    Самая главная суть ООП заключается в следующем:

    Объект - это набор данных и методов работы с этими конкретными данными.
    Если вдруг нужно что-то подправить в структуре данных (изменить тип, добавить еще переменных) - методы для них лежат в этом же объекте, и не нужно лазить по всему коду и что-то искать что еще сломается - вы просто знаете ЧТО методы должны возвращать, и внешние связи не нарушатся, если вы это сохраните.
    Все другие объекты вашей программы общаются с данными этого конкретного объекта исключительно через его методы - поэтому если у вас меняется формат данных - вы правите методы, чтобы они умели работать с новыми данными, можно вообще их переписать - главное чтобы эти методы возвращали то же, что и раньше.
    Если нужно переходить на новое - пишем новый метод который будет возвращать уже в новом формате, остальные объекты будут постепенно переходить от работы со старых методом к новым методам, позволяя сделать миграцию комфортной, включая даже сбор статистики - в старых методах добавляется логирование и счетчики, чтобы выяснить кто еще не переехал.

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Оправдано ли будет использование NodeJS в качестве бэкенда крупного приложения?

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

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

    Приведу несколько примеров.

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

    С тестами асинхронного кода все очень плохо, вам придется обмазываться всякими proxyquire, sinon и т.д. При этом очень внимательно следить за очисткой состояния. Да, я понимаю, что моки и в других языках нужно юзать, но тот же proxyquire можно сравнить с php-шным runkit, что как бы вообще по хорошему трогать не надо, а придется. Примите также за исходную, что вы будете много времени тратить на то, что бы понять какой из тестов асинхронщины у вас сфейлился.

    Рано, или поздно у вас возникнет потребность в неком DI контейнере, привычный require 'myService' уже не прокатит. Пробросы зависимостей станут источником ошибок. Если вы не будете это дело покрывать функциональными тестами много ошибок обнаружите уже на stage сервере.

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

    Лука Никитин
    Не проводили тест, когда по 2 сервера и на ноду и на php?
    Ответ написан
    2 комментария
  • Как совместить фабрику и закон Деметры?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Заюзал в очередной раз абстрактную фабрику, и неожиданно вспомнил, что метод класса не должен обращаться к объектам, которые вернул какой-либо метод.

    Фабрика возвращает интерфейс объекта, который был специально введён, чтобы предоставить обобщённый доступ к разным типам объектов создаваемых фабрикой. Пользователи фабрики взаимодействуют только с этими интерфейсами, не с самими объектами. Т.о. пользователи фабрики не зависят от модулей реализующих конкретные объекты. Закон Деметры как раз и нужен для того, чтобы уменьшить зацепление между модулями. Следуйте духу закона, а не букве.
    Ответ написан
    Комментировать
  • Что можно считать глубокими знаниями в js?

    pm_wanderer
    @pm_wanderer
    junior-HTML
    Немного дополню, чтобы новички не пугались. А то страшилок много о том, что надо знать все, хотя в реальности, тех кто действительно "знает все" можно пересчитать по пальцам:

    Как работает браузер - можно знать лишь в общих чертах, для общего развития. В повседневной жизни это в 99% случаев не нужно. Браузер предоставляет нам API и мы его используем. То как оно устроено внутри пусть остается инкапсулировано внутри.

    Как работает V8 - опять же, достаточно общего представлени об event loop. Все остальное пусть остается скрыто и используется через API.

    Оптимизация кода под браузерные движки - в большинстве случаев вообще не надо.

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

    Написание быстрого кода - практически не нужно (он и так будет достаточно быстрый). Лучше сосредоточиться над написанием читаемого, тестируемого и поддерживаемого кода.

    К общему списку еще можно добавить паттерны проектирования. Это будет намного полезней, чем всякие техники спичечной оптимизации)
    Ответ написан
    40 комментариев
  • Почему возникает ошибка Cannot set property 'user' of undefined?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    req.session - undefined
    в undefined и null не может быть полей и соответственно попытка записи или чтения таких вызывает ошибку
    Ответ написан
    Комментировать
  • Можно ли писать на TypeScript под NodeJS?

    @bromzh
    Drugs-driven development
    Можно ли писать на TypeScript под NodeJS? Вопрос о том, хорошая ли это практика?

    Да, да
    Смогу ли я использовать без особых проблем пакеты из npm, либо какие-то сторонние скрипты/классы написанные на js?

    Если разобраться, для чего нужны .d.ts-файлы и как использовать typings, то проблем не будет.

    Плюсы:
    - свежие фичи из спецификаций ES
    - статическая типизация, а, следовательно, все плюсы, которые она даёт. если в двух словах: часть ошибок будет отлавливаться ещё до запуска и, соответственно, нужно меньше тестов
    - хорошая поддержка языка всякими редакторами. IDE от Jetbrains лучше будут выдавать подсказки. И даже простые редакторы кода, например Atom, Sublime, VS Code начнут выдавать нормальные подсказки, переходить по определениям в коде, выдавать сигнатуру методов, и т.д.

    Минусы:
    - Нужно понять, как правильно подключать обычные js-библиотеки к проекту. В целом, это не сложно, но многие не осиливают.
    - Типы "существуют" только в compile-time. На выходе обычный JS со всей его динамической природой. Если код написан плохо (например, часто используется тип any), то typescript не поможет.

    А про отладку я уже говорил: с ней проблем нет. Просто нужно подключить вот эту штуку, и всё будет нормально. VS Code точно умеет подключаться к нодовскому (и хромовскому) дебагеру и будет прыгать по исходникам, а не по скомпилированной каше.
    Ответ написан
    Комментировать
  • Какой правильный workflow должен быть для code review?

    fornit1917
    @fornit1917
    Без ревью мержим только хот фиксы.
    На остальные задачи делаем пулл реквесты, обязательно проходящие ревью.
    Ответ написан
    3 комментария