• Как найти и заменить второе вхождение?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Примерно так:
    sed ':a;N;$!ba;s/""/"world"/2'

    , где двоеточие - определение метки с именем a;
    N - добавить новую строку к pattern space;
    $ - к последней строке;
    ! - применить;
    b - переход к метке, в данном случае к метке a;
    s - поиск и замена;
    /""/ - что ищем, в данном случае пустые кавычки;
    "world" - на что заменить найденное совпадение, в данном случае на "world";
    /2 - замена второго совпадения.

    echo "hello: \"\"
    hello: \"\"
    hello: \"\"" | sed ':a;N;$!ba;s/""/"world"/2'

    Еще можно такой вариант попробовать:

    sed '2s/""/"world"/1'
    Ответ написан
    4 комментария
  • 'props' is not defined no-undef. Что я делаю не так?

    w13vitaliy
    @w13vitaliy
    self-taught developer since 2020
    у вас в компоненте Dialogs передается в props функция sendMessage вы должны ее прокинуть в компонент AddMessageForm :



    import React from 'react';
    import classes from './Dialogs.module.css';
    import DialogItem from "./DialogItem/DialogItem";
    import Message from "./Message/Message";
    import {Redirect} from "react-router-dom";
    import {Field, Form, Formik} from 'formik';
    
    const Dialogs = (props) => {
        let state = props.dialogsPage;
    
        let dialogsElements = state.dialogs
            .map(el => <DialogItem name={el.name} key={el.id} id={el.id} avatar={el.avatar}/>);
        let messagesElements = state.messages
            .map(el => <Message message={el.message} key={el.id}/>);
    
    
        if (!props.isAuth) return <Redirect to={"/login"}/>;
    
        return (
            <div className={classes.dialogs}>
                <div className={classes.dialogsItems}>
                    {dialogsElements}
                </div>
                <div className={classes.messages}>
                    <div>{messagesElements}</div>
                </div>
                <AddMessageForm sendMessage={props.sendMessage}/>
            </div>
        )
    }
    
    
    
    const AddMessageForm = (props) => {
    const initialValues = {
        newMessageBody: ''
    }
    const onSubmit = values => {
        props.sendMessage(values.newMessageBody);
        console.log('запись', values)
    }
        return (
            <Formik initialValues={initialValues} onSubmit={onSubmit}>
                <Form>
                    <div>
                        <div>
                            <Field as='textarea'
                                   id='newMessageBody'
                                   name='newMessageBody'/>
                        </div>
                        <button type='submit'>Submit</button>
                    </div>
                </Form>
            </Formik>
        )
    }
    
    export default Dialogs;
    Ответ написан
    2 комментария
  • Как обрезать mp3-файл?

    Neuroware
    @Neuroware
    Программист в свободное от работы время
    Почему сразу не в блокноте резать?
    Если по сути вот
    ffmpeg -ss 00:00:30.00 -t 25 -i bar.mp3 -acodec copy bar-new.mp3
    режет с любой точностью любой файл который скормишь, даже видео
    Ответ написан
    1 комментарий
  • В чем разница императивного и декларативного подхода в javascript? Это процедурный и ООП стили?

    @pikkvile
    developer
    Моё понимание такое.
    Декларативное программирование - это когда в коде описано что должно получиться, а императивное - когда написано как это сделать. Т.е. в первом случае мы совершенно не интересуемся, каким именно образом машина сделает работу, какие инструкции в каком порядке выполнятся и так далее, мы просто объясняем ей, что хотим увидеть в результате. Примеры декларативных языков - html, css, sql, конфиг nginx. Ещё тут стоит упомянуть функциональные языки (lisp, haskell), программы на них тоже, как правило, являются описанием (декларацией) того "что должно получиться". Ну, короче говоря, мы говорим компьютеру: вот смотри, мне надо чтобы было так, а как ты это сделаешь, мне не интересно. Аналогия такая: у меня есть чертёж бани, я даю его бригаде строителей и уезжаю. Как именно они там будут таскать брёвна, пилить доски и прочее - я не в курсе.
    Программируя императивно, мы описываем конкретные шаги, действия и точный порядок, в котором их нужно исполнять. Напрямую руководим процессом, непосредственно отдаём приказания. Примеров масса, большинство популярных языков императивны, в том числе и javascript. Ты пишешь: вот, сделай-ка переменную myVar, потом запиши туда число 5, повторяй это до тех пор, пока что-то не случится... и так далее. Возвращаясь к примеру с баней, ты теперь - начальник бригады, именно говоришь какое бревно куда класть.
    Что касается процедурного и объектно ориентированного стилей, это немного о другом. Я бы сказал, что это два разных способа писать императивные программы. В процедурном случае мы организуем код, наши команды (приказы машине) в виде процедур. Процедура - набор команд. Это довольно простой способ организации кода и исторически более ранний. ООП - это чуть более сложный подход к организации кода, когда мы группируем инструкции и данные, которыми они манипулируют, вместе. Объект - это состояние (данные) плюс поведение (набор методов). Но это уже немного другая история.
    Ответ написан
    2 комментария
  • Как работает apt-get autoremove?

    plin2s
    @plin2s
    IT, инженер
    man apt-get
    autoremove
    autoremove is used to remove packages that were automatically
    installed to satisfy dependencies for some package and that are no
    more needed.


    Действует на основании зависимостей. Если пакет ставился по зависимостям от другого, который уже удален, то программа помечает его доступным для autoremove. Примерно то е самое происходит со старыми ядрами. N версий считаются актуальными, остальные (более старые) подлежат удалению.
    Ответ написан
    2 комментария
  • Как продолжить работу в командной строке после запуска sh-скрипта?

    AlexMcArrow
    @AlexMcArrow
    Люблю РНР, да я такой!
    command &
    добавить в конце амперсанд ( & )
    Ответ написан
    5 комментариев
  • Tmux, скрипт, в одной из панелей запустить часы?

    sotvm
    @sotvm
    Умный поймёт, а дураку и так всё равно.
    3 комментария
  • Откуда ошибка Uncaught TypeError: Cannot read property 'addEventListener' of null?

    Isolution666
    @Isolution666
    Full-Stack Developer
    $(document).ready(function() {
                setInterval(window.onload = function(){
                       ...тут ваш код
                });
            });

    js в конце, перед </body>
    Ответ написан
    1 комментарий
  • Откуда ошибка Uncaught TypeError: Cannot read property 'addEventListener' of null?

    @del993788 Автор вопроса
    Проблему решил перетащив js код из отдельного файла script.js в index.html.... Код засунул в body под ... Бред...
    Ответ написан
    1 комментарий
  • Где найти человека способного быстро и качественно научить основам JS за деньги?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Чувак, идешь сначала сюда https://learn.javascript.ru/
    Пока Илья с товарищами по команде тебе надоедают, учишь английский.
    Потом переключаешься на бритоголового https://egghead.io/
    Потом, если покажется мало, начнешь курить спеки. К этому времени уже освоишь гугл и сможешь сам их найти.

    Лучшие практики SPA

    1. KISS - использовать только то, что действительно нужно. Например вам не нужен Javascript, если нужно просто сделать выпадающее меню. Достаточно просто CSS. Тоже самое применяется и к JS, вам не нужен Angular, если есть просто форма обратной связи. Такая задача решается на vanillajs.
    2. Использование фреймворков, например bootstrap, foundation и т.д. Обычно из них берется типография и сетки. Иногда формы. Я обычно беру bootstrap-stylus и собираю из него.
    3. Critical rendering path - минимальный набор CSS, который требуется для отображения первого экрана страницы, который потом будет встроен внутрь html-файла. Пример.
    4. Применение систем сборки, например gulp. Основной смысл заключается в том, что сначала вы дробите SPA на множество мелких компонентов/модулей/блоков. Затем унифицируете их. В итоге получается набор небольших файлов. Затем из этого набора собирается два больших файла (css, js) и они прогоняются через оптимизатор и минификатор.
    5. Использование CDN. CDN позволяет ускорить загрузку для часто-посещаемых и популярных страниц за счет уменьшения времени доставки контента. Особенно актуально для SPA, поскольку они представляют собой статический контент, который можно кэшировать без последствий.
    Системы сборки

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

    Модули AMD, CJS, UMD

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

    Сборка и подключение css

    Здесь и так ясно, что нужно сначала освоить сборщики. postcss - это когда обычный css скармливается фильтру, который разбирает его, добавляет префиксы к свойствам, оптимизирует наименования цветов и т.д. Убирает дублирующие свойства.

    В целом очень толково про оптимизацию расписано здесь https://developers.google.com/web/?hl=ru
    Ответ написан
    4 комментария
  • Почему говорят что jquery не нужен?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Скрипач не нужен, родной (с)
    Аргументы против jq:
    - современные браузеры достаточно хорошо поддерживают единый синтаксис современного екмаскрипт(native js)(на самом деле нет).
    - сторонняя библиотека, работает медленнее чем натив и в основном состоит из с-сахара (тоже не совсем правда)
    - тащить еще один ресурс весом от 64 кб до 200 кб, еще и со сторонних ресурсов замедляет загрузку( правда, но бред)
    Аргументы за:
    - Современные браузеры как и всегда один другого "ровнее", всегда есть косяки и "нюансы", на которые еще и попадаешь обычно в самый неподходящий момент, в жк обычно все работает одинаково везде, ну или лучше чем в нативе.
    - В жк реализована куча плюшек в 1 функцию которые в нативе занимают "многабукав", не каждый начинающий напишет их правильно, да и профи не все напишут оптимально, уверен что в большинстве случаев написанный нативом функционал будет хуже аналога из жк.
    - размер мин пакета жк 64 кб, и все они лежат на быстрых цдн серверах. Думаю это последнее что может повлиять на скорость загрузки страницы.
    - есть ОГРОМНОЕ количество скриптов написанных с учетом жк, не использовать их глупо, писать свой велосипед - вообще только в целях обучения(не берем крайние случаи когда плагин писал упоротый пингвин).
    - Синтаксис и краткость записи - вообще вне конкуренции.
    - Старые браузеры никто не отменял, часто заказчик требует чтобы работало в ие8, натив не канает или доставляет море анального удовольствия.
    Вывод: Если ты крут в жс, еще и работаешь в ангуларе/ещечетамдляфронта и тебе нужно сделать 2 действия в очень современных браузерах - jquery не нужен, и ты это сам знаешь. Если слова ангулар, вуе и проч для тебя не больше чем шум листвы за окном, а навесить плагинов и эффектов нужно - jquery наше все.

    UPD: для всех кто там отписался а ля "в связи (...), исчезновением проблемы совместимости со старыми IE (что и было основным назначением jQuery)." - свежачок
    Ответ написан
    4 комментария
  • Имеются ли ресурсы, на которые можно загрузить код для проверки другими пользователями?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Задайте себе вопрос: "зачем кому-то тратить свое время, что бы помочь Вам?"
    На мой взгляд причин может быть несколько:
    1. это очень короткий код и проверка не займет много времени - тогда сюда (на тостер)
    2. этот код будет полезным другим людям, тогда как посоветовал Леха Ярков на гитхаб
    3. не 1 и не 2 - тогда на freelance, там за деньги сделают все что попросите

    А для самого размещения кода есть https://jsfiddle.net, http://codepen.io, phptester.net и др.
    Ответ написан
    4 комментария
  • Как научиться пользоваться ОС без мышки?

    @undefined_title
    учи хоткеи во всех приложениях которыми пользуешься, поставь linux и на него window-manager, закастомизируй и настрой хоткеи под себя, по возможности пользуйся терминалом, тренируй скорость печати - слепой набор. полезно было бы научиться работать с vim модом, скорость работы в редакторе увеличить на много, поставь в браузер расширение vimium - сможешь серфить без мышки. но при всем этом управлять курсором иногда будет более удобно и где то без него вообще не обойтись, например в том же фотошопе.
    Ответ написан
    Комментировать
  • Как научиться пользоваться ОС без мышки?

    dummyman
    @dummyman
    диссидент-схизматик
    Начните с малого
    Выкинь кеды и гном, используй человеческий менеджер окон.
    Пройди $ vimtutor и открой для себя vim awesome.

    Прямо стихами получилось.

    Чуть не забыл добавить tmux + powerline или terminator чтобы стать риил ганста хакер.

    UPD: Блин, забыл еще очень важное хозяйство. Как же без общения?
    Есть mcabber - поддерживает только xmpp, но к нему на github можно найти тысячи неофициальных плагинов, неговоря о сотнях официальных. Многие xmpp серверы поддерживают транспорты на другие более модные протоколы (icq, skype и проч.).

    Есть древний, но еще обновляемый неофициальными форками centericq. Этот мультипротокольный изначально. Официальный поддерживает без всяких транспортов ICQ, Yahoo!, AIM, MSN, IRC, XMPP, LiveJournal, and Gadu-Gadu. Но тут тоже... Можно найти много разных форков и тысячи неофициальных плагинов. Скорее всего можно прикрутить все современные непроприетарные протоколы.
    Ответ написан
    4 комментария
  • Книга или ресурсы по node.js?

    Anton_Mal
    @Anton_Mal
    Когда я уже буду зарабатывать?!
    Ответ написан
    Комментировать
  • Книга или ресурсы по node.js?

    fnnzzz
    @fnnzzz
    front-end dev
    Ответ написан
    Комментировать
  • Заработок на вёрстке?

    @rudants
    Front-end разработчик
    Что за бредовые подсчеты знаний в процентном соотношении? Не занимайтесь ерундой, прекратите выдумывать эти мнимые значения - это невозможно подсчитать.
    Пришли сюда за советом и помощи ищете? Постараюсь помочь:
    1. Для начала, снизьте свои требования и ожидания от фриланса. Никто вам не будет платить и 2$/час на биржах. Вы не имеете опыта, не работаете с современными технологиями, нет портфолио, не умеете подстраиваться под других людей, и т.д.
    2. Если что-то делаете - делайте нормально. Не нужно делать глупых умозаключений, что портфолио можно набить мусорными работами, найденными в интернете. Да, можно. А теперь спросите себя - нормально ли это? Если вы уже на старте пытаетесь сделать плохо? Тех, кто делает работу плохо предостаточно, а вот хороших, ответственных и грамотных специалистов - мало. Вторых хотят везде и спрос на них бесконечно велик. К кому хотите относиться?
    3. Нарабатывайте портфолио. Не надо на начальных этапах гнаться за деньгами, на первых порах нужно набираться опыта, развивать навыки и очень много учиться. Делайте работу и просите, чтобы ее оплатили в таком размере, в каком заказчик посчитает нужным.
    4. Верстать нужно много, не стоит лениться набирать код руками, даже если уже есть готовое решение и его можно скопировать. Лучше будете запоминать, быстрее соображать и научитесь быстро шлепать пальцами по клавиатуре.
    5. Нужно много учиться, но при этом не распыляться. Я уже заметил, что вы с одного на другое перепрыгивать любите. То верстку, то программирование изучаете. Остановитесь на чем-то одном для начала, и когда будете чувствовать, что получается одно, то можно и другое будет начать.
    6. Научитесь подстраиваться под других. Не надо думать, что вы самый классный и самый нужный - это не так. Вас легко заменить. Если вам говорят, что есть работа здесь и сейчас - соглашайтесь, это ваши перспективы и ваша возможность заработать. Если говорят, что готовы помочь прямо сейчас - ищите возможность получить ее, это нужно только вам, потом такой возможности может и не быть. Хотите развиваться как специалист - много работайте и научитесь лишать себя удовольствий. Если не научитесь - будете нытиком-ремесленником всю жизнь, который оправдания на все неудачи в ком-то ищет, а не в себе.

    Ну и самое главный совет - забить на фриланс. Это рутина, от которой стремиться уйти любой нормальный человек. Фриланс - это работать 24 часа в сутки, самостоятельно дисциплинировать себя и формировать график индивидуально. Хотите расти и зарабатывать - ищите место, где вас примут в штат и будут готовы обучать.
    Ответ написан
    Комментировать
  • Как найти ментора (наставника) Front-end?

    @DarCKoder
    А здесь просто задачки, с не большим описанием тем(очень интересные):
    https://gist.github.com/codedokode/ce30e7a036f18f416ae0
    Ответ написан
    Комментировать