Ещё по теме — Airbnb JavaScript Style Guide. Не думаю, что я полностью согласен со всеми пунктами, изложенными там, но в любом случае материал полезный и по текущей теме.
Вы считаете, что поменять название функции, если код в ней поменял свою суть никто не забывает и это проще, чем поменять комментарий?
// Create font
...
// Draw rectangle
...
А если подобный код, который продемонстрировал Azy, нужно выполнить в большом количестве итераций? Тут можно слегка сэкономить — не производя лишних вызовов функций (а иногда и в определении функций).
Спасибо, хорошая ссылка. Наглядно указали на некоторые плюсы и минусы такого стиля (comma-first и dot-first). В этой дискуссии обсуждают только JS, но мне довелось повстречаться в различных проектах с такой нотацией и в других языках. Иногда попадались интересные решения в стилях.
Я считаю, что очень важно что бы в проекте стиль был единым, а какой стиль выбран для проекта — не такой важный вопрос. IDE можно настраивать под стили и нотации каждого отдельного проекта, а глаз программиста достаточно легко перестраивается.
Если вам для печати, то это делается за 5-10 минут с помощью простых манипуляций в HTML через DevTools в браузере и последующей печати (в файл в формате PDF). Вот, я уже подготовил такой PDF (в гуглодоках). Он может подойти и для чтения в электронном варианте, но ссылки в содержании являются не внутренними относительно документа, что может быть неудобным. Возможно есть специализированный софт, который может создать PDF из web-документа, удобный для чтения в электронном виде, но я не озадачивался.
Вот оно! То, что радовало меня в Опере больше всего и что по сей день расстраивает при использовании Хрома.
Ещё нравились многие пункты контекстного меню, например «Сохранить по ссылке», «Показать изображение», «Как изображение рабочего стола» и многое другое. Если всё то, что полюбилось когда-то в Опере, останется в ней даже после смены движка для рендеринга, то на этот раз она снова станет моим основным браузером.
Я никогда и не пользовался этим полем поиска. Всегда использую «Ctrl + F» и дальше печатаю запрос (а во вкладке Source, если фокус в дереве, то нет необходимости даже в этом горячем сочетании клавиш — просто ввожу что либо и поисковое поле открывается автоматически), и нет необходимости икать это поле мышкой для перевода ей фокуса. А теперь просто сэкономили визуальное пространство и стало очень здорово.
Почему никто не вспомнил про такое слово как — Agile!? Ведь описанное в топике пересекается с принципами этой методологии. На каждую итерацию разработки берём самые важные и ценные пользовательские истории (фичи, желания, требования, хотелки, фидбеки) и разрабатываем только их, получая результаты в кратчайшие сроки. И так с каждой итерацией, быстро реагируя на изменения пользовательских историй, дорабатываем только то, что оказалось востребованным, и выкидываем то, что оказалось не востребованным и разрабатывая фичи под новые пользовательские истории.
При этом нужно помнить, что код бывает разной степени говна и что какая-либо его степень, даже пусть самая малая, всегда присутствует в любом коде — ведь всё это относительно. Я так понимаю, что автор данного топика под говнокодом подразумевал, вполне вменяемых хороший, но очень простой код, написанный в краткие сроки, охватывая только то, что было нужно на текущем этапе. Всегда нужно помнить, что код должен быть простым, понятным и читабельным.
Нельзя разумно допускать ошибок, которые характерны малой квалификации, опытности или незнанию азов, теории и правил поведении при определённых используемых программных средств и языков программирования, правил, принятых на проекте и вообще в команде — если при этом ты знаешь, что это будет ошибкой такого уровня. Если увидел такие ошибки в чужом коде — укажи на них его автору, минимальными усилиями поправьте и продолжайте работу.
Не, не… пароль и соль рядышком конечно. Брутфорс ведь может проводится и без факта кражи БД или получения доступа к таблицам с паролями и солью. К примеру атака на внешние сервисы/API приложения. А для последних, просто даже добавление соли к хешам паролей уже является хорошим лекарством. Поэтому и решил уточнить.
Согласен. Но только в случае получения доступа к таблицам с солью. И это я всего лишь один пример привёл, в скобочках, который не является панацеей. В любом случае нужно поддерживать множество различных техник. А я, своим комментарием, только хотел поинтересоваться, зачем выдумывать временный криптостойкий пароль, если потом пользователь его сменит.
… высылаю достаточно криптостойкий пароль… Потом юзер с ним входит и может уже поменять на свое усмотрение.
А потом пользователь может установить себе не криптостойкий пароль?
Криптостойкость можно улучшать программными общеизвестными средствами (к примеру — использование соли), и не нужно, при этом, заставлять пользователя придумывать сверхсложные пароли.
Вы придумали другую сложность для пользователя, просто зашли с другой стороны. Возможно этим, вы облегчили себе (как «разработчику») жизнь или упростили форму регистрации сделав её более привлекательной на первый взгляд, но…
Это плохой способ потому, что:
Это непривычный сценарий;
Никто не ожидает увидеть в почте пароль, да ещё и открытым текстом;
Не всегда есть возможность его скопировать для первого входа или это вызовет определённые сложности, что бы потом поменять;
Не сработает паролехранилка/паролегенерилка, которые не редко используют;
Многим не нравится когда за них решают и придумывают, тем более в таких вопросах (может у пользователя свой, достаточно хороший генератор паролей в голове, например с использованием правил составления пароля с использованием имени сайта и т. п.).
Почему вы вообще посчитали, что заходить по придуманному роботом паролю проще, чем придумать его привычным способом? У меня, к примеру, на придумывание сложного, уникального под каждое приложение или сайт, пароля, часто уходит не более 30 секунд.
Можно было бы придумать пару более удобных способов:
Можно сразу же в форме ввода email показать и автоматически сгенерённый пароль, с возможностью ручного изменения/копирования/переписывания в блокнот/запоминания в голове или с помощью паролехранилок;
В вашем случае можно было хотя бы высылать ссылку на автоматическую авторизацию, которая бы работала до смены пароля (только обязательно после такой автоматической авторизации, скрыть из адресной строки параметры этой ссылки).
Я с вами согласен. Мне почти всегда вполне хватало различных инструментов типа SASS, Sylus и т. п. для того, что бы весь код был достаточно наглядным и удобным.
При обычной верстке html – задает структуру контента, а css – управляет и позиционированием и визуальным представлением документа. Эта двойственность css приводит к раздутым файлам стилей, внутри которых бывает сложно ориентироваться. Одни и те же свойства управляют и положением и внешним видом элементов – это вносит путаницу и затрудняет отладку.
И:
При этом естественно я не предлагаю отказываться от css верстки. Предлагаемый инструмент только помогает реализовать некоторые вещи проще и быстрее, а степень его использования определяет верстальщик.
В приложениях как раз таки узкое место производительность, т. к. приложения и так насыщены различным функционалом в JS. В таком случае всё же лучше выполнить основные тяжелые действия на стороне сервера. Часть функционала можно генерить в CSS (всё то, с чем справится современный CSS), а всё остальное в легковесный JS для максимальной производительности на стороне клиента.
А если подобный код, который продемонстрировал Azy, нужно выполнить в большом количестве итераций? Тут можно слегка сэкономить — не производя лишних вызовов функций (а иногда и в определении функций).
Я считаю, что очень важно что бы в проекте стиль был единым, а какой стиль выбран для проекта — не такой важный вопрос. IDE можно настраивать под стили и нотации каждого отдельного проекта, а глаз программиста достаточно легко перестраивается.
Ещё нравились многие пункты контекстного меню, например «Сохранить по ссылке», «Показать изображение», «Как изображение рабочего стола» и многое другое. Если всё то, что полюбилось когда-то в Опере, останется в ней даже после смены движка для рендеринга, то на этот раз она снова станет моим основным браузером.
Ctrl + F
» и дальше печатаю запрос (а во вкладке Source, если фокус в дереве, то нет необходимости даже в этом горячем сочетании клавиш — просто ввожу что либо и поисковое поле открывается автоматически), и нет необходимости икать это поле мышкой для перевода ей фокуса. А теперь просто сэкономили визуальное пространство и стало очень здорово.При этом нужно помнить, что код бывает разной степени говна и что какая-либо его степень, даже пусть самая малая, всегда присутствует в любом коде — ведь всё это относительно. Я так понимаю, что автор данного топика под говнокодом подразумевал, вполне вменяемых хороший, но очень простой код, написанный в краткие сроки, охватывая только то, что было нужно на текущем этапе. Всегда нужно помнить, что код должен быть простым, понятным и читабельным.
Нельзя разумно допускать ошибок, которые характерны малой квалификации, опытности или незнанию азов, теории и правил поведении при определённых используемых программных средств и языков программирования, правил, принятых на проекте и вообще в команде — если при этом ты знаешь, что это будет ошибкой такого уровня. Если увидел такие ошибки в чужом коде — укажи на них его автору, минимальными усилиями поправьте и продолжайте работу.
А потом пользователь может установить себе не криптостойкий пароль?
Криптостойкость можно улучшать программными общеизвестными средствами (к примеру — использование соли), и не нужно, при этом, заставлять пользователя придумывать сверхсложные пароли.
Это плохой способ потому, что:
Почему вы вообще посчитали, что заходить по придуманному роботом паролю проще, чем придумать его привычным способом? У меня, к примеру, на придумывание сложного, уникального под каждое приложение или сайт, пароля, часто уходит не более 30 секунд.
Можно было бы придумать пару более удобных способов:
И:
Вы ошибаетесь. Позиционирование блоков — одна из исторически важных функций каскадных таблиц стилей.