• Какие стратегии повышения зарплаты существуют?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Центральный показатель для бизнеса, а следовательно и руководителей, как людей представляющих интересы этого самого бизнеса - это коэффициент возврата инвестиций (ROI). Соответственно, сотрудник должен приносить компании больше денег, чем потребляет. Естественно, что чем выше разрыв между затратами и прибылью, тем лучше, поэтому фонд оплаты труда руководитель должен держать на том минимальном уровне, который гарантирует бесперебойную работу сотрудников. Один из факторов этой бесперебойности - низкая текучка. Сотрудников терять нежелательно. И чем ценнее для компании сотрудник, чем более он профессионален и/или чем больше на него завязано, тем дороже обходится его потеря. Натурально в деньгах. Придётся затратить больше, чем обычно, денег на поддержание работы без него. Придётся затратить деньги и время (те же деньги) на поиск, найм, введение в работу, возможно, обучение нового сотрудника. При этом он может оказаться совсем неподходящих и цикл придётся повторить. Или может оказаться просто хуже прошлого и эффективность отдела снизится. Поэтому, когда сотрудник приходит просить прибавку, руководитель оценивает может ли этот сотрудник уйти или только блефует, насколько легко его будет заменить, какой урон компании будет нанесён его уходом. Потом руководитель оценивает стоимость расширения ФОТ - есть ли резервы, какой сейчас ROI, будет ли больший ROI от реинвестиции этих средств во что-то другое? Если уход сотрудника будет стоить меньше, чем увеличение ФОТа, сотруднику откажут.

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

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

    DevMan
    @DevMan
    зачем? есть офигительная софтина ukelele, которая позволяет создать раскладку какую хошь.

    лично я пользуюсь фонетической с доработками.
    которая успешно мигрирует со мной начиная с 10.7.
    Ответ написан
    Комментировать
  • Почему код выполняется асинхронно в конструкции async/await?

    BenderIsGreat34
    @BenderIsGreat34 Автор вопроса
    junior front-end
    Отвечу за тех токсиков, что понабежали в комментарии.
    Проблема была в том, что метод мап запускаеся и код выполняется дальше.
    Чтобы это исправить я делаю обработку цикла параллельно при помощи Promise.all(), куда передаю необходимые промисы. За наводку спасибо @notiv-nt
    export const getDataMovie = (filmName) => {
      const movieData = [];
      async function getData(film) {
        let resp = await fetch(`http://www.omdbapi.com/?t=${film}&apikey=...`);
        resp = await resp.json();
        const title = await resp.Title;
        const year = await resp.Year;
        const genre = await resp.Genre;
        movieData.push({ title, year, genre });
      }
      return async (dispatch) => {
        // делаем проверку на массив, потому что в компоненте favorite
        // мы передаем массив названий фильмов
        if (Array.isArray(filmName)) {
          const result = filmName.map((item) => getData(item));
          console.log(result);
    
          await Promise.all(result);
          dispatch(getFavoriteMovie(movieData));
        } else {
          getData(filmName);
          dispatch(getFavoriteMovie(movieData));
        }
      };
    };
    Ответ написан
    1 комментарий
  • Best practice бэкенда на express?

    @ned4ded
    Верстка, Фронтенд
    я просто оставлю это здесь
    Ответ написан
    Комментировать
  • Как запускать скрипт при попытке подключения к SSH-серверу?

    @ComodoHacker
    Поместите нужные команды в /etc/ssh/sshrc, и они будут выполняться после успешного логина, но до шелла. IP адрес клиента можно взять из переменной SSH_CONNECTION или SSH_CLIENT. Подробнее см. man sshd, раздел SSHRC.

    Учтите, что выполняеться это будет с правами клиента.
    Ответ написан
    1 комментарий
  • Метод call объекта-функции в js как работает?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    6 комментариев
  • Как обойти через for строку "[1,2,3]" Как массив?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    JSON.parse('[1, 2, 3]')
    Ответ написан
    Комментировать
  • Есть ли актуальные курсы по хакингу для новичков?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Курсы. По хакингу. Для новичков.

    5e7591afbfd94542739129.jpeg
    Это абсолютно несовместимое сочетание слов!

    Почитайте этот ответ и комментарии к нему. И этот ещё полезно будет.
    Ответ написан
    Комментировать
  • Пора-ли использовать css grid?

    contraomnes
    @contraomnes
    Frontend developer
    Какой проект? От этого всё зависит ведь. Если много пользователей приходит с ie11 и подобного, то, наверное, не стоит

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

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    Как я сам переходил с постоянной работы на Upwork:
    сначала брал небольшие заказы и делал их в свободное время. Заказов становилось всё больше. В какой-то момент подработка по вечерам стала приносить столько же денег, сколько основная работа full-time. В этот момент решил, что пора полностью уходить во фриланс.
    Уволился. Стал фрилансить фулл-тайм. Поначалу было сложно забить всё свободное время, но даже при 50% занятости по деньгам выходило лучше, к тому же полная свобода, постоянно новые задачи.

    Теперь по твоим вопросам.
    1) Первое время необязательно заморачиваться за законность. Пока не выйдешь на стабильный доход хотя бы 100к/месяц, париться особо не за что. Можешь выводить деньги на PayPal или Payoneer или другими полулегальными способами. На первых порах лучше сосредоточиться на работе.
    2) Когда появится стабильный ощутимый доход, то нужно регистрировать ИП, открывать расчётный счёт. В качестве налогообложения либо патент, либо упрощёнка 6%. Особо ничего сложного, инфы в инете в и на тостере куча.
    3) Обычный расчётный счёт для ИП. На упрощёнке платишь 6% со всех доходов, которые поступают на счёт, платить нужно в определённые даты, чтобы налоги взаимовычлись с обязательными взносами ИП.
    На патенте платишь годовую стоимость патента и обязательные годовые взносы и больше ничего. Далее только ведёшь КУДиР.
    Нужно выбрать как вести бухгалтерию: электронные системы (Эльба, Моё Дело); услуга бухгалтера от банка или стороннего сервиса; наёмный бухгалтер; или тупо самому в экселе. Я пользуюсь первым способом.

    4) В классическом фрилансе (когда делаешь заказ за заказом) действительно редко бывает энтерпрайз. Там обычно небольшие конечные проекты. Но когда долго работаешь на фрилансе, то начинает надоедать постоянный поиск клиентов и стремишься к одному большому проекту. По сути фриланс в какой-то момент перерастает в удалённую работу. И тут уже вполне может быть энтерпрайз. По технологиям это ты сам для себя решай. Нужно посмотреть, какие есть проекты, что востребовано. Возможно что-то подучить.
    Ответ написан
    1 комментарий
  • Практическое использование схем в Postgresql - когда они нужны?

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

    Важно понимать, что различные БД плохо подходят для логического группирования, т.к. разбиение по базам данных нужно скорее для администраторов, а не для приложений. Плюс, в большинстве СУБД, где существует понятие схемы, возможно ставить внешние ключи на таблицы в другой схеме, но нельзя на таблицы в другой БД. Иными словами, отдельные БД удобно создавать тогда, когда вы разделяете данные абсолютно не связанных приложений или сервисов. Например, складского учета и форума поддержки пользователей. С другой стороны, если вы хотите логически разделить таблицы в соответствии с компонентами одного приложения (например, корпоративный портал: 4 таблицы для поддержки авторизации, 10 таблиц для поддержки форума, еще 5 для чата со службой поддержки или отделом продаж) - то именно схемы будут удобным механизмом для этого.

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

    А что будет если несколько юзеров будут на одну public-схему коннектиться?

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

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

    то есть при работе в постгре предпочтительнее вместо отдельных баз делать разные схемы в одной

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

    Вот вам еще хороший пример. У вас есть приложение для ведения бухгалтерии и складского учёта на фирме. При этом сложилось так, что вам нужно хранить на одном сервере данные нескольких разных фирм (например, вы предоставляете готовый сервис под ключ нескольким клиентам). В этой ситуации более чем логично хранить данные разных клиентов в разных БД, а данные бухгалтерского и складского учета - в различных схемах в рамках одной БД конкретного клиента.
    Ответ написан
    2 комментария
  • Как вам вёрстка 2.0?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    5e53414c9f9e8058292009.jpeg

    У вас форма залезает на карту в медиа-брейкпоинте md. Поэтому и так сойдет - не применимо.
    5e53418d0e056579757891.jpeg
    Ответ написан
    5 комментариев
  • Что делать дальше?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    просто хотел узнать, что делали вы, после того как вы закончили основы

    У меня не было курсов. И Тостера тоже не было. Доступ в Интернет был, но не чаще, чем раз в неделю, на час и на скорости примерно 15 килобит в секунду. У меня даже IDE не было. Был только учебник, текстовый редактор, компилятор с интерфейсом командной строки и желание стать программистом. Я прочитал учебник и пытался писать программы. Когда не получалось, перечитать учебник ещё и ещё раз, экспериментировал с кодом снова и снова. А так как писал я на Ассемблере, ошибки в программах в лучшем случае заканчивались её молчаливым закрытием, а в худшем перезагружали или завешивали компьютер. Через год упорных ежедневных стараний я достиг уровня достаточного, чтобы устроиться на работу.

    Ну как, помогло вам знание о том, что делал я?
    Ответ написан
    2 комментария
  • Где можно увидеть сравнение кода (плохой, хороший и идеальный) джуна, мидла и синьёра?

    joeberetta
    @joeberetta Куратор тега JavaScript
    Читай: https://epdf.pub/google-for-dummies.html
    К примеру такой вариант
    https://github.com/ryanmcdermott/clean-code-javascript
    Ответ написан
    Комментировать
  • Скажите как вам мой код?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    require_once 'classes.php';
    Перейти на Композер и неймспейсы

    class smartPhoneProduct
    Оставить Product, а тип товара вынести в свойство товара type или в category

    Все, что касается модификаций — вынести в характеристики, например может подойтиEAV, то есть некая сущность Характеристика с product_id, name, value и таких быть может много у одного товара. Или иной способ работы, главное чтобы при добавлении сотен характеристик вам не пришлось бы сотнями файлов классы придумывать и всегда был один Product, ну или были др причины создавать детей, например простой товар и цифровой...
    Альтернативы EAV обсуждались например тут: Альтернатива EAV, структура базы?

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

    echo "\nСкидка: " .$discountOnProduct. "P";
    echo — вывод, бизнес-объект не должен ничего знать про вывод, ответ сервера и прочее, должен быть просто return $this->description()
    Тем более цена не должна идти в описании, а быть неким getPrice(), причем как правило это делают не у товара, а у вариантов/предложений товара, которые с товаром связаны 1 к 1

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

    это основное... к код-стайлу пока претензии не имеют смысла
    Ответ написан
    6 комментариев
  • Сложный и интересный проект для новичка?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    ## Анонимный чат с темами для обсуждения деликатных офисных проблем
    Иногда хочется обсудить что-то с коллегами в офисе, но не хочется смущать их или показывать лишнюю инициативу.
    Например кто-то не смывает в туалете или слишком громко орёт и сам того не замечает. Может быть кто-то слишком интенсивно пользуется парфюмом.
    - Анонимность
    - Постоянная ссылка на чат, тему или дерево чатов
    - ссылки в виде QR-кодов
    - голосовалка
    - закрепленные посты

    ## Сайт checklist
    Веб-сервис и мобильное приложение для краудсорсинга чеклистов для всего: зарегать ИП, получить визу, что делать при ДТП, как влезть в ипотеку, как вылезть из неё, чем заняться с ребенком на выходных (N-ле

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

    Примеры:
    - Что делать при ДТП
    - Открыть ИП
    - Осмотр авто при покупке (подветки для разных конкретных моделей)
    - Первая помощь при...
    - Диагностика инсульта
    - Зомби-акопалипсис: как приготовиться
    - Атомный взрыв неподалёку - что делать
    - Планетарная катастрофа - как выживать
    - Поход выходного дня - что взять
    - Подготовка авто к поездке
    - Путешествие: Алжир (виза, прививки, документы, отели, транспорт)
    - Как влезть в ипотеку
    - Как вылезть из ипотеки
    - Как быстро заработать (во все тяжкие)
    - Покупка квартиры (на что обратить внимание)
    - Самостоятельное строительство дома (общий план)
    - Чем заняться с ребёнком N-лет
    - Как отметить новый год
    - Что интересного в районе <пос. Майский>
    - Номера телефонов и документы в автомобиле

    ## Эротический краудфандинг
    Интернет ресурс, где девушки могут делать крауд-фандинговые кампании

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

    ## Простой открытый сервис для обмена сообщениями
    - HTTP API, Web-sockets
    - p2p rtsp
    - опциональное end-to-end шифрование
    - хранение истории на клиентах
    - возможность использования нескольких серверов
    - возможность использования альтруистичных клиентов для проксирования трафика p2p
    - поиск узлов на основе блокчейн технологий и DHT таблиц

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

    ## Поэтический онлайн редактор
    - выбор стопа, стиля и жанра
    - шаблон с плейсхолдерами, разбивающий текст на слоги
    - облако рифм
    - подражающий автогенератор
    - многосегментный словарный банк (дифференциально-слоистая древовидная структура, своя специфика в верхнем слое, поэлементное ранжирование сегментов)
    - тезаурус
    - словарь сочаетаемости
    - N-граммы поэзии по авторам и стилям
    - корпус поэзии
    Ответ написан
    13 комментариев
  • Как импортировать правильно запрос graphql на node js?

    @twolegs
    Для gql можно не тащить весь Apollo, достаточно подключить пакет graphql-tag.
    Чтобы привести это все к строке можно сделать так:
    import { print } from 'graphql/language/printer'
    
    console.log(print(query))
    Ответ написан
    Комментировать
  • Как отследить изменение значения в переменной?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Если есть возможность изменить код создания этой переменной..
    Например, вместо
    var a = 'QnA.habr.com';
    написать
    Object.defineProperty(this, 'a', {
        set: function(v) {console.log('Изменяют!'); this.value = v;},
        value: 'QnA.habr.com'
    });
    то теперь любое изменение значения переменной вызовет панику в консоли:
    a = 'StackOver...';
    // Изменяют!


    Upd. выяснилось, вопрос был совсем про другое )
    Ответ написан
  • Как сделать такой градиент на текст?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <style>
    h1 {
      font-family: 'Rubik One', sans-serif;
    font-size: 50px;
    background-image: radial-gradient(circle, #ffffff, #c4bcc7, #947a8a, #683d49, #370505);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    display: table;
    }
      </style>
      <title>Document</title>
    </head>
    <body>
    <h1>Test Text</h1>
    </body>
    </html>
    Ответ написан
    2 комментария