• Где практиковаться после прочтения книг по JavaScript?

    @mkone112
    Начинающий питонист.
    В смысле после? Если ты не практиковался при чтении - считай что ты ничего не читал.
    Ответ написан
    Комментировать
  • На чем сделать самый простой сайт?

    ThunderCat
    @ThunderCat Куратор тега HTML
    {PHP, MySql, HTML, JS, CSS} developer
    Если сайт чисто информационный а-ля лэндинг, то ничего придумывать не надо, какя-нибудь тильда вполне подойдет.
    Ответ написан
    Комментировать
  • Как справиться с выгоранием в профессии?

    @unk1nD000
    Не хотелось бы давать тупые советы, аля ставить маленькие цели и досигать их.
    По этому поделюсь собственными техниками искусства нинзя.

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

    Примерно год назад я начал актвно интересоваться ctf - что это такое легко гуглится. Как это все началось.... Я наткнулся на канал одного рыжего американского ipsec'а который решал задачу на tryhackme. И честно говоря я охренел насколько мало я знаю в этой области и тут же погрузился в такие темы как форензика, шифрование, web, так же мне стал интересен python, захотелось стать бородачем в с++.... итд. Но все мы люди из мяса и такую широкую область как "все подряд" охватить невозможно, и в тоже время постоянно углубляться в одну и туже технологию, язык или область без пропадания к ней интереса невозможно, как по мне.
    Не буду дальше перечислять все свои такие "о как может этот чувак из видоса я хочу так же", а выведу из него небольшую закономерность и пронумерую её нулём и...
    Пункт 0: Поиск объекта заинтересованности.

    Моя корпорация использовала говночат. По вышеописанному методу я узнал про докер, и всякие интересные self-hosted приложения которые можно на нём развернуть. Реализация такой технологи была для меня незнакомой и отточив на тестовых машинах свои навыки, я внедрил в свою организацию сервер с рядом полезных приложений работающих на docker.
    Пункт 1: Реализация полученных знаний на практическом применении.

    После нового года из моего штата ушёл человек занимавший должность эдакого трушного админа, который занимается глобальными вопросами: Сервера, сети, mssql, AD и прочим такими вещами.
    Человека на это место сразу начали искать, предлагая соискателям хорошие деньги, но пока поиски шли я не терял возможность возможность проявить инициативу и взять на себя его задачки. Собственно говоря человек этот оставил за собой кучу нерешенных проблем, сомнительных костылей и «ручной работы». Я их переделал, автоматизировал и собственно получил повышение, значительное повышение. (Без капли преувеличений). Сейчас смотря на плоды своей работы у меня радуется душа и тело, но порой заглядывая в свой старый скрипт я вижу как его улучшить, сделать более гибким итд.
    Пункт 2: Автоматизация всего, что занимает более 2х минут. Усовершенствование имеющихся наработок, используя вновь приобретенные знания. Стремление к совершенству.

    В моём айти отделе работает 7 человек. Два программиста, дежурный админ, два дежурных на удалённых комплексах и чел который старожил-аля-руководитель. Мы постоянно шутим, понимаем шутки друг друга итд, так же в отделе процветает взаимопомощь совместные мозговые штурмы итп. Это сплочает и позволяет чувствовать себя нужным, полезным, сопричастным к общему делу. Всегда, почти всегда, ну или всё же всегда…. Найдётся то, что я делаю лучше коллег или наоборот и обменяться знаниями, шуточками и историями будет отличным подспорьем любить свое ремесло.
    Пункт3: Общение с единомышлениками. Обмен накопленным опытом.

    Я думаю всем знакома ситуация когда на связи та самая тетка у которой опять *Очень легкий вопрос*. В голове глагол на ЗАЕ….. Её проблема решается перезагрузкой или вытаскивание ярлычка из корзины….. Веду я собственно к тому, что зачастую я был приучен решать явление устранением того, что есть, ну а что если я сработаю на опережение?
    Пункт 4: Решение источника проблемы. Работа на опережение.

    Пятница, я еду домой совершенно обессиленный, в голове поесть, поспать, посрать и другие плотские утехи. Казалось бы, выходные пройдут и я снова вернусь улыбчивым на работу. Но вот понедельник, есть работенка, есть задачи, но куда же делся тот я который так смачно жаждал знаний и новых побед? А этот я, точнее эта часть меня залезла глубоко между двух булок одна из которых: «Думать о работе когда надо отдыхать», а вторая: «Постоянно заниматься одним ремеслом». Другой случай, еду я такой же в пятницу как и текстом выше. Приезжаю домой и отлично провожу время в кругу своей жены, утром мы идём в элегантное место %куданибудь%, мило отвлеченно беседуем, обсуждаем проблемы общества, вечерком я надеваю очки и читаю художественную литературу, на следующий день под модный энергичный трек готовлю завтрак и делаю разминку.
    Пункт 5: Работа=Работа. Жизнь=Жизнь. Хобби, увлечения, отвлечения, всему свое время.
    Пункт 6: Рывковый подход. Не идёт – брось на время.

    Подводя итоги хочу сказать, что человек такое существо, что выполняя одни и те же действия вырабатывает дисциплину, привыкает. Чувствуя выгорания стремлюсь всячески разнообразить свои действия, расширить зону привычных вещей, иногда даже делаю то, что мне вовсе не свойственно ради новых ощущений. Надеюсь что мой доклад положительно на вас скажется, коллегаЪ. Похлопайте себя по плечу и не обесценивайте того, чего добились, вы молодец, но не останавливайтесь на достигнутом!
    Ответ написан
    Комментировать
  • Вам нужно нанять "Android junior developer". Какие у вас будут требования?

    GavriKos
    @GavriKos
    Те навыки, которые нужны на проектах куда идет найм.
    Ответ написан
  • Что можно посоветовать вечному джуниор разработчику?

    AleksandrB
    @AleksandrB
    Совсем недавно вывел "Hello world"
    Я вижу, что тут все пишут, что тебе на мидла надо идти, но с этим я в край не соглашусь. Ты джун. Не джун+, не мидл, никто кроме джуна. Есть гораздо важнее проблема в твоей карьере. Ты не умеешь и не хочешь учиться. Разработчиков мало и никого просто так не сокращают. Называй вещи своими именами - тебя уволили. Видимо, ты просто был очень плох. Если даже ты зазубришь вопросы с собесов, тебе это не поможет на самой работе. Обмануть собеседующего можно, но ложь быстро вскорется.

    Что тебе с этим делать? Сложно сказать, тебе уже под тридцатник и я не знаю кейсов когда человек в таком возрасте успешно осваивал настолько важный и сложный скилл как самообучение, но попытаться стоит. Как это сделать?
    - Во-первых, не перекладывай ответственность за свое обучение на курсы, учись сам. Начни уже читать книги по программированию, сторренти курсы, пили что-то.
    - Научись проявлять инициативу. Стань, что называется proactive
    - Не думай, что устроившись на работу можно остановиться учиться. Тебя уже увольняли, а среднячков просто так не увольняют, я думаю, ты ниже среднячка в софт скиллах.
    - Выбери уже что-то одно. Бери то что лучше знаешь и начинай штудировать это.

    Ну и если отвечать на вопрос "Как попасть на работу и сидеть там до конца жизни?", то просто зазубри их систему (скорее всего это твой путь). И, к слову, у шарперов таких работ много. Код будет говно, роста не будет, денег будет мало, но за то будет работа.
    Ответ написан
    Комментировать
  • Как можно объяснить/оправдать поступок этого HR менеджера?

    hint000
    @hint000
    у админа три руки
    Например, это был не HR, а другой соискатель, который не знал, как вести беседу со своим HR. :)
    Иоганн Цукерторт, один из известнейших шахматистов второй половины XIX века, как-то заключил пари с двумя другими гроссмейстерами - Стейницем и Блэкберном, которые были явно сильнее его. Суть пари состояла в том, что Цукерторт проведет с мастерами сеанс одновременной игры вслепую, набрав при этом не менее одного очка. Чтобы выиграть спор, необходимо иметь либо один выигрыш, либо две партии сыграть вничью. Цукерторт пари выиграл, но благодаря не шахматному искусству, а собственной сообразительности. Как ему это удалось?
    В качестве гарантии выигрыша Цукерторт использовал… своих противников. Он не играл с каждым из мастеров, а просто передавал своим противникам ходы друг друга. Фактически Блэкберн и Стейниц играли между собой, а Цукерторт был всего лишь посредником. Исход поединка был предрешен заранее: ничья или победа одного из гроссмейстеров была обеспечена, даже если бы Цукерторт вообще не умел играть в шахматы.
    Ответ написан
    2 комментария
  • Как убрать .html в конце адреса каждой веб-страницы сайта?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    site.com -> home
    site.com/about -> home/about/index.html

    и так далее
    Ответ написан
    Комментировать
  • На собеседовании сказали, что не все функции - замыкания. Так ли это?

    @lazarevBoris
    Тред просто огонь!:)
    Дело в том, что такой же спор (из 8 страниц, на эту же тему) был не так давно на другом ресурсе, где мудрый дядька под ником "javascript" объяснял окружающим (которые тоже уперлись рогом, как и многие здесь), почему в js по факту всё является замыканием.
    Поэтому было крайне интересно, чем же и здесь дело закончится.
    И в очередной раз было доказано, что где бы ни была объявлена функция (а начиная с es6 и let - и блок кода) - она образует замыкание с цепочкой внешних лексических сред (или хотя бы одной LE), что полностью соответствует определению, предысторию которого хорошо описал Александр.
    Что наглядно изобразил Alexandroppolus (надеюсь, вы не будете против, если я достану ваш пример из jsfiddle и размещу здесь, чтобы он не пропал с течением времени):

    description:
    функция, созданная внутри iframe, замкнула внутрифреймовую глобальную переменную, и продолжает работать, даже когда фрейм удалили. Кнопкой frameValue можно убедиться, что в window той переменной нет.

    html:
    <script>
      var globalValue = 1000;
      var globalCounter = function() {
        return globalValue++;
      };
    </script>
    <div>
      <button>iframe counter</button>
      <button>globalCounter</button><br >
      <button>frameValue</button>
      <button>globalValue</button>
    </div>

    JS:
    const iframeHTML = 'iframe...<' + `script>
      var frameValue = 1;
      var counter = function() {
        // debugger;
        return frameValue++;
      };
      
      window.parent.iframeCounter = counter;
    <` + '/script>';
    
    function createTempFrame() {
    	const blob = new Blob([iframeHTML], {type: "text/html"});
      const frm = document.createElement('iframe');
      frm.src = URL.createObjectURL(blob);
      
      document.body.appendChild(frm);
      
      setTimeout(() => {
      	document.body.removeChild(frm);
      }, 900);
    }
    
    window.onload = function () {
      const buttons = document.querySelectorAll('button');
      
      buttons[0].onclick = function() {
        alert(iframeCounter());
      };
    
      buttons[1].onclick = function() {
        alert(globalCounter());
      };
      
      buttons[2].onclick = function() {
        alert(window.frameValue);
      };
      
      buttons[3].onclick = function() {
        alert(window.globalValue);
      };
     
      createTempFrame();
    };


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

    @Arlekcangp
    Разработчик, Лид, Архитектор ПО
    Похоже вас поймали на том что в js кто-то решил переопределить термин "замыкание"... Т к javascript далеко не первый язык, в котором есть нечто, претендующее называться термином "замыкание", то следует в первую очередь рассмотреть общее определение. Возьмём его из википедии:

    Замыкание (англ. closure) в программировании — функция первого класса, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся её параметрами. Говоря другим языком, замыкание — функция, которая ссылается на свободные переменные в своей области видимости.
    Замыкание, так же как и экземпляр объекта, есть способ представления функциональности и данных, связанных и упакованных вместе.
    Замыкание — это особый вид функции. Она определена в теле другой функции и создаётся каждый раз во время её выполнения. Синтаксически это выглядит как функция, находящаяся целиком в теле другой функции. При этом вложенная внутренняя функция содержит ссылки на локальные переменные внешней функции. Каждый раз при выполнении внешней функции происходит создание нового экземпляра внутренней функции, с новыми ссылками на переменные внешней функции.
    В случае замыкания ссылки на переменные внешней функции действительны внутри вложенной функции до тех пор, пока работает вложенная функция, даже если внешняя функция закончила работу, и переменные вышли из области видимости.[1]
    Замыкание связывает код функции с её лексическим окружением (местом, в котором она определена в коде). Лексические переменные замыкания отличаются от глобальных переменных тем, что они не занимают глобальное пространство имён. От переменных в объектах они отличаются тем, что привязаны к функциям, а не объектам.


    Как видим из этого длинного определения (а не только его первого предложения) интервьюер оказался формально прав (что является неожиданностью и для меня самого. Кто знает, возможно это веяние нового или всё же творчество чрезмерного ЧСВ js-кодерков, но не будем предвзятыми) Посмотрим дальше...Переходим в английскую версию той же страницы в википедии:

    In programming languages, a closure, also lexical closure or function closure, is a technique for implementing lexically scoped name binding in a language with first-class functions. Operationally, a closure is a record storing a function[a] together with an environment.[1] The environment is a mapping associating each free variable of the function (variables that are used locally, but defined in an enclosing scope) with the value or reference to which the name was bound when the closure was created.[b] Unlike a plain function, a closure allows the function to access those captured variables through the closure's copies of their values or references, even when the function is invoked outside their scope.


    О! А тут нет никаких "функций, вложенных в функцию" и нет никаких "создающихся каждый раз" Хм... Интересно. Ну за то есть абзац о том как появились замыкания:

    The concept of closures was developed in the 1960s for the mechanical evaluation of expressions in the λ-calculus and was first fully implemented in 1970 as a language feature in the PAL programming language to support lexically scoped first-class functions.[2]

    Peter J. Landin defined the term closure in 1964 as having an environment part and a control part as used by his SECD machine for evaluating expressions.[3] Joel Moses credits Landin with introducing the term closure to refer to a lambda expression whose open bindings (free variables) have been closed by (or bound in) the lexical environment, resulting in a closed expression, or closure.[4][5] This usage was subsequently adopted by Sussman and Steele when they defined Scheme in 1975,[6] a lexically scoped variant of Lisp, and became widespread.


    Ага. Оказывается первоначально они появились в такой не конвенциональной, с сегодняшней точки зрения VM, как SECD... И их создатель прямо говорит, что это код плюс данные. Далее термин применяют к лямбда-выражениям. Ничего не говорится, должны ли эти выражения возвращаться функцией, или достаточно того, что бы они захватывали переменные из своего лексического (или динамического, как в common lisp) окружения. Далее нам сообщают, что некие мистеры, Сасман и Стил, спустя каких то 11 лет добавили это в свой язык Scheme... Ну что же. Посмотрим замыкания в Scheme... А именно откроем книгу Сасмана и соавторов "Структура и интерпретация компьютерных программ" или "SICP" Первый раз (исключая содержание) слово "замыкание" встречается в главе 2 "Поcтроение абстракций c помощью данных"


    Важная идея в работе с составными данными — понятие замыкания (closure): клей для
    сочетания объектов данных должен позволять нам склеивать не только элементарные
    объекты данных, но и составные.


    Но, как выяснилось, это не те замыкания... Это замыкание в том смысле, что структуру одного типа (в данном случае пары) могут ссылаться на самих себя. И это то как термин "замыкание" понимают математики. Далее в SICP никаких других определений замыканий нет (несмотря на то, что само их использование конечно же есть) Ну ничего не остаётся как посмотреть что же сегодня называют замыканиями в языке Scheme... Гугл по этому запросу выдал первой ссылкой: https://www.cs.utexas.edu/ftp/garbage/cs345/schint....
    Цитирую:

    Procedures are Closures
    Scheme procedure's aren't really just pieces of code you can execute; they're closures.

    A closure is a procedure that records what environment it was created in. When you call it, that environment is restored before the actual code is executed. This ensures that when a procedure executes, it sees the exact same variable bindings that were visible when it was created--it doesn't just remember variable names in its code, it remembers what storage each name referred to when it was created.

    Since variable bindings are allocated on the heap, not on a stack, this allows procedures to remember binding environments even after the expressions that created those environments have been evaluated. For example, a closure created by a lambda inside a let will remember the let's variable bindings even after we've exited the let. As long as we have a pointer to the procedure (closure), the bindings it refers to are guaranteed to exist. (The garbage collector will not reclaim the procedure's storage, or the storage for the let bindings.)

    Here's an example that may clarify this, and show one way of taking advantage of it.

    Suppose we type the following expression at the Scheme prompt, to be interpreted in a top-level environment:

    Scheme> (let ((count 0))
               (lambda ()
                  (set! count (+ count 1))
                  count)))

    ##

    Evaluating this let expression first creates a binding environment with a binding for count. The initial value of this binding is 0. In this environment, the lambda expression creates a closure. When executed, this procedure will increment the count, and then return its value. (Note that the procedure is not executed yet, however--it's just created.) This procedure, returned by the lambda expression, is also returned as the value of the let expression, because a let returns the value of its last body expression. The read-eval-print loop therefore prints a representation of the (anonymous) procedure.


    Что имеем ? В Scheme - вообще любая функция - это замыкание! Т к она всегда захватывает контекст, даже если там пусто!. Что видим в коде ? Ну с точки зрения Scheme тут конечно вложенная функция, т к let - это на самом деле lambda, но так происходит потому, что в Scheme нет переменных в понимании js. В js же можно считать, что глобальный контекст - результат действия нечто, что эквивалентно let. Захватывает ли любая функция в js этот контекст ? Не знаю. Но точно знаю, что в вашем примере это определенно так - х часть контекста, который захватывается функцией. Кто хочет поспорить - идите спорьте с создателями Scheme (скажите, когда попкорн покупать, я посмотрю как вас пороть будут. Набежало тут вайтишников =)) Кто то может сказать "а вот у нас в js замыкания определяются не так" На что я отвечу: знаете, товарищи, а идите ка вы лесом! Если есть однажды созданный и определенный термин, нужны весьма веские причины что бы менять его определение. Желания левой ноги очередного вайтишника тут не достаточно.
    Ответ написан
    30 комментариев
  • По БЭМ'у классы должны быть вложенными?

    delphinpro
    @delphinpro
    frontend developer
    Вы хотя бы это прочитайте от и до – https://ru.bem.info/methodology/ (первые пять разделов)
    А потом уже вопросы задавайте, если останутся. Хотя там детально всё расписано и таких простых вопросов возникать не должно.

    В частности по вашему вопросу тоже есть ответ https://ru.bem.info/methodology/css/#Вложенные-сел...
    Ответ написан
    Комментировать
  • Что писать в резюме чтобы были шансы куда-то попасть без опыта?

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

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

    И рассылайте, рассылайте, рассылайте резюме. На HH, linked.in, и других площадках. При прошлом поиске работы у меня было отправлено более 150 резюме и только с десяток дошли до собеседования, кстати. И, замечу. я уже много лет в разработке. Но бывает что везет и даже первое резюме оборачивается оффером.

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

    Удачи в поиске!
    Ответ написан
    Комментировать
  • Джуны в андроид не нужны?

    @mkone112
    Начинающий питонист.
    Это твоя главная ошибка.
    Джуны в андроид не нужны?

    мониторю вакансии

    Джунов разработчиков практически не ищут

    Однако вакансий для мидлов и синьоров прилично.

    Спрос и число вакансий - связаны примерно никак. Джуны(не трейни) нужны везде, всегда и много.
    Ответ написан
    4 комментария
  • Устройство на работу после фриланса, как лучше?

    @Drno
    Ищите устраивающие по деньгам и прочем вакансии.
    Если видите что проходите по скиллу - откликаетесь
    Далее при собеседовании объясняете ситуацию и так же что это первая работа

    Перебором найдете место, их полно

    Хз где искали вакансии, но реально рынок щас от 60к будет (30 я не видел давно уже)
    Ответ написан
    Комментировать
  • Почему одни языки быстрее, другие медленнее, и почему новички гуглят самый быстрый язык, а не самый медленный?

    Jacen11
    @Jacen11
    Я тут погуглил, и мне стало интересно, большинство вопросов о том, какой язык самый лучший, какой язык самый популярный, какой язык самый быстрый.

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

    Вот я могу вызвать метод, или написать метод какого-то вычисления, то это скорость чего будет?Скорость языка или грамотность программиста? Или производительность компьютера?
    А если один язык посчитал быстрее, значит он лучше?
    ответом на этот вопрос будет ответ на мой вопрос - Вот ты можешь прыгнуть, можешь подумать, то это скорость чего будет? Скорость твоего языка или твоя грамотность? Или атмосферное давление? А если одна рука быстрее, значит нога лучше?

    А количество написанных строк кода при достижении одинакового результата показывает какой язык лучше?
    конечно. Вот смотри решение задачи на брейнфаке под спойлером. Используется только 8 символов для команд и все в одну строку, что может быть лучше? Самый лучший язык
    Пользователь вводит буквы одну за другой, пока не введет символ точки (код 46). Выведите введенные символы в алфавитном порядке (с повторениями)
    >>,[>>,]<<[[<<]>>>>[<<[>+<<+>-]>>[>+<<<<[->]>[<]>>-]<<<[[-]>>[>+<-]>>[<<<+>>>-]]>>[[<+>-]>>]<]<<[>>+<<-]<<]>>>>[.>>]


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

    pluffie
    @pluffie
    Стыдно за старые вопросы
    я не знаю как правильно назвать тот или иной класс

    Так, чтоб было понятно, за что он отвечает.

    нужно ли для всех тегов писать классы

    Нет. Без контекста, ответить что-либо более осмысленное я не смогу.

    не понимаю зачем нужен container и wrapper

    Если ты не понимаешь, зачем тебе что-либо нужно, то тебе это не нужно

    Я забросил вёрстку и начал изучать JavaScript. Но после изучения основ я вернулся к проблеме что не умею верстать.

    Авось поможет

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

    Задавай себе вопросы, когда пишешь код.
    Нужна шапка. Что подразумевается под шапкой? Панель с кнопками для навигации сверху сайта.
    <nav></nav>
    Что в ней должно быть? Название сайта и ссылки на страницы.
    <nav>
      <span>My site</span>
      <a href="page1.html">Page1</a>
      <a href="page2.html">Page2</a>
    </nav>

    Тег a подчёркивается. Я так хочу? Нет.
    a {
      text-decoration: none;
    }

    Проблема решена, но теперь a вообще нигде не подчёркивается. Я хочу так? Нет.
    nav a {
      text-decoration: none;
    }

    Теперь a не подчёркивается, если оно находится в элементе nav. А если я создам ещё один такой элемент, но для немного других целей, и там подчёркивания понадобятся?
    <nav class="main-navbar">
      <span>My site</span>
      <a href="page1.html">Page1</a>
      <a href="page2.html">Page2</a>
    </nav>

    .main-navbar a {
      text-decoration: none;
    }

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

    Не знаю может это мне не дано или я делаю что то не так. Я не могу решить эту ОГРОМНУЮ проблему.

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

    Хочется изучать что то новое но я застрял на этой вёрстке и не могу двигаться дальше.

    Как то, что ты не умеешь верстать, мешает тебе изучить, допустим, историю Танзании?
    Ответ написан
    1 комментарий
  • Почему за просмотр резюме HR необходимо платить деньги, а на биржах фриланса наоборот?

    @spaceatmoon
    На бирже покупателем является исполнитель, а на сайтах по поиску работы является работодатель.

    Биржа не занимается поиском исполнителей. Это такие услуги по рекламе на максималках с кабальными условиями. Кто будет исполнителем вообще не важно, его личность должна быть скрыта, ведь только хозяин должен видеть его паспорт. Исполнители хозяина должны слушаться и говорить с гостем Биржи должны так, как говорит хозяин и держать голову ниц. За лишние слова хозяин наказывает, вплоть до выгона на мороз без права вернуться. При выполнении поручения от гостя исполнитель обязуется платить дань на доход. В некоторых биржах есть ещё оброк раз в месяц. Каждый хозяин ведёт учёт лучших исполнителей. Прикол в том, что эти звёздочки ничего не дают при выходе из этой биржи. Совершив Юрьев день, исполнителю придётся начинать всё сначала, ибо звать вас никак. Ведь внутри любой биржи, личности вашей нет.

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

    Свободные люди не зависят от работодателей и соответственно их внимание привлечь сложнее. Чтобы привлечь внимание такого человека, необходимо немного поделиться золотом. У кого больше золота, тот имеет больший выбор и может выбрать себе подходящего кандидата.
    Ответ написан
    1 комментарий
  • Для чего используется React?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Для написания SPA приложений.
    Основная идея не гонять данные туда сюда.
    В первую загрузку вам приходит клиентский код и первоначальное состояние.
    Дальше между вами и сервером идет обмен только данными.
    То есть вместо 2мегабайт на каждый запрос вы передаете 10 килобайт.

    Выигравает и сервер освобожденный от генерации разметки и клиент который экономит трафик и получает более отзывчивое приложение
    Ответ написан
    2 комментария
  • Код для подтверждения email адреса при регистрации на сайте написанном на react js?

    Lynn
    @Lynn
    nginx, js, css
    Подтверждение email адреса обычно заключается в отправке на этот самый адрес письма со ссылкой и обработкой перехода по этой ссылке на сервере. Реакт тут вообще никаким боком не прикладывается.
    Ответ написан
    1 комментарий
  • Куда развиваться Python разработчику (не для поиска первой работы)?

    @PkQDark
    А с чего ты за пол года решил, что ты ограничен?) Основываясь на своем личном опыте, я сейчас понимаю, что первые два года вообще не понимал, что делаю, хотя тогда я так не думал:) А развиваться надо не в технологии, а а направлении, если хочешь заниматься вебом, то занимайся им. Разбери в деталях как работает все mvc. Как можно реализовать одно и тоже на django, flask, fast api и aiohttp, если тебе зачем то захотелось разобрать несколько фреймворков. Разберись как работает фронт, выучи react, angular, vue. Разберись в деталях асинхронности, что бы слова async и await, не вызывали у тебя вопросов. Изучи как работает многопоточность в питоне (херово), и что вообще такое GIL и зачем это надо. Разберись с другими протоколами, как минимум с веб сокетами. Копни глубже в архитектуру и проектирование и изучи хотя бы все основные патерны и антипатерны, научись писать код согласно SOLID. Копни глубже в питон и разберись как работают метаклассы и в чем их суть. Залезь в детали разных CI/CD и деплоймент процессы, разбери как минимум докер, кубкрнетс и/или ансибл. Копни глубоко в тестирование и разберись со всеми деталями юнитов, интеграционных, ацептанс, перформанс текстов. Закопайся в детали баз данных, что бы вообще хорошо понимать SQL, что бы вопросы чем where отличается от having, или в чем разница между postgres и mysql вообще не вызывали проблем. Опять же понимание транзакций и уровня изолированности транзакций. Понимание и умение использовать NoSQL базы, и как минимум знать где и какие применяются. Понимание где и зачем нужна микросервисная архитектура. Если вдруг ты действительно все это понял и разобрал за пол года, то я искренне тебе завидую и готов помогать и подсказывать куда развиваться и что изучать. Если что сам senior python developer / release manager, в крупной международной компании:)
    Ответ написан
    Комментировать