• Чем отличаются пиксели на компьютерном мониторе от пискелей на экране смартфона?

    DevMan
    @DevMan
    смарты работают в hidpi-режиме: на 1 логический пиксель приходится 4 физических.
    1920х1080 в смарте соответствует 960х540 на десктопе (если конечно десктоп тоже не в hidpi).
    Ответ написан
    3 комментария
  • Как установить utf8 локаль для postgresql?

    lesovsky
    @lesovsky
    System engineer and PostgreSQL DBA
    к этому нужно еще добавить TEMPLATE = template0.

    т.е. получится
    CREATE DATABASE "имя_базы"
      WITH OWNER "postgres"
      ENCODING 'UTF8'
      LC_COLLATE = 'ru_RU.UTF-8'
      LC_CTYPE = 'ru_RU.UTF-8'
      TEMPLATE = template0;
    Ответ написан
    Комментировать
  • Оптимизируется ли UPDATE, если значения полей на самом деле не меняются?

    Melkij
    @Melkij
    PostgreSQL DBA
    В postgresql создаётся физически новая версия строки при update (с обновлением всех индексов либо hot update если применимо) даже если ни одно поле не меняет своё действительное значение. Есть встроенный триггер suppress_redundant_updates_trigger, который можно повесить на таблицу, тогда ничего действительно не меняющий в данных update будет пропускаться.

    Если меняется хотя бы одно значение - оптимизации не подлежит, должна быть записана новая версия строки в таблицу (чтобы MVCC обеспечить). Если возможно, оптимизация HOT update исключит сопутствующее обновление индексов.
    Ответ написан
    9 комментариев
  • Почему вылетает VPS на DigitalOcean?

    pomeo
    @pomeo
    reboot server on out-of-memory condition

    /etc/sysctl.conf

    vm.panic_on_oom=1
    kernel.panic=10

    The vm.panic_on_oom=1 line enables panic on OOM, the kernel.panic=10 line tells the kernel to reboot ten seconds after panicking.
    Ответ написан
    2 комментария
  • Как правильно администрировать VPS?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ни в коем случае не ставить никаких ISP Manager / Vesta / CPanel, иначе никогда не научитесь тому, чему хотите научиться. Кроме того, они жрут ресурсы. Даже Vesta, которая самая легкая, их жрет прилично, а я сильно сомневаюсь, что у вас VPS c 8+ Gb памяти.

    Изучать надо по урокам и статьям, читая мануалы и best practices по каждому package. Порядок, плюс-минус, таков:

    - развернули ось
    - сделали сразу апдейты
    - создали и настроили swap
    - поменяли пароль рута на что-нибудь супер-мега-сложное (его мы использовать все равно не будем)
    - создали себе обычного юзера с паролем нормальной сложности (он будет использоваться для sudo)
    - дали юзеру права sudo
    - закрутили гайки по SSH - сменили порт, запретили вход руту и вход по паролю (только по ssh-ключам), разрешили вход только одному своему новому логину
    - настроили UFW - простой, но эффективный firewall на основе iptables - default deny, allow http, https, свой кастомный ssh-порт. Если логиниться будете только из нескольких мест (офис, дом) - можно вообще ssh разрешить только на эти IP.
    - sudo dpkg-reconfigure tzdata чтобы установить свою временную зону, так логи потом легче читать и понимать
    - настроили logrotate
    - настроили logwatch
    - настроили Postfix, чтобы сервер вам письма мог слать (мы его настраиваем на внешний мейлер, например Mandrill, чтобы все письма точно в спам не падали)
    - настроили fail2ban (потом, после установки и настройки веб-сервера и сайтов, в fail2ban можно дополнения писать, например мы на WordPress-сайтах мониторим попытки авторизации в админку и блочим тем же fail2ban)
    - дальше ставим все что нужно - Git, Nginx, HHVM, PHP5-FPM, MariaDB, Memcached/Redis и так далее.

    Регулярно заходите на сервер, делайте apt-get update && apt-get dist-upgrade.

    p.s.: это по ubuntu/debian, для других систем все то же самое, но packages и команды могут немного отличаться
    Ответ написан
    26 комментариев
  • В какой стране проще получить торговый эквайринг для приема платежей?

    mihavxc
    @mihavxc
    Регистрирует в России самозанятость/ИП/ООО. Открываете счёт в Райфе.

    Затем идете на mycommerce.com или payproglobal.com. Это екоммерс платформы, которые работают с РФ. Они собирают платежи и выводят вам деньги свифтом в Райф.
    Ответ написан
    2 комментария
  • Как обработать post запрос на nodejs?

    black1277
    @black1277
    Вольный стрелок
    Есть простые и сложные запросы CORS. Когда запрос сложный - браузер отправляет 2 запроса сначала OPTIONS затем основной. GET - простой запрос - поэтому у вас всё работает правильно. POST - тоже простой запрос, но если изменить ему Content-Type на 'application/json' он становится сложным. Ваш сервер не отвечает на предварительный запрос OPTIONS, поэтому браузер блокирует ответ. Читайте подробнее, например здесь
    Ответ написан
    Комментировать
  • Как людям удается столько зарабатывать на фрилансе?

    copist
    @copist
    Empower people to give
    Создать новостной портал с дизайном, адаптивной версткой и посадить все это дело на Drupal за 4000р.


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

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


    И какой-нибудь CMS надо владеть. Какая архитекрута, как конфигурируется, что в штатной поставке, какие бывают плагины, где купить темы? Приготовить сборки под типовые решения. Можно в ответ на задачу предложить решение с использованием другой CMS - иногда заказчики не в курсе, что есть и другие.

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

    Не пробовал удалёнку поискать? Аутсорс? (на сайтах вакансий искать "удалённо", "неполный день", "по совместительству"). И попутно ещё разовые заказы брать на биржах.

    А ещё есть биржи труда для стартапов, там бывают неплохие предложения по удалённой работе.

    и другие ресурсы по фразе стартап поиск команды
    Ответ написан
    9 комментариев
  • С чего начать изучение JS?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Добавлю еще одно очень хорошее и полезное руководство: https://bonsaiden.github.io/JavaScript-Garden/ru/
    Ну а далее - берем реальную задачу и решаем.
    Ответ написан
    Комментировать
  • Как повысить свои навыки в построении архитектуры сложных приложений?

    bingo347
    @bingo347
    Crazy on performance...
    Если по теории, то мне в свое время вот эта книга помогла:
    https://www.litres.ru/robert-s-martin/chistaya-arh...

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

    Через несколько месяцев прочел еще раз, анализируя все затупы, что записал за это время в блокнот. После прочтения начал потихоньку рефакторить в существующих проектах места, которые уж очень жить мешали.

    Еще через пол года прочел третий раз, опять же с оглядкой на личный опыт. И тут я кажется уже совсем въехал. По крайней мере многие проблемы с организацией взаимодействия между компонентами стали разрешаться. И вообще появилось достаточно четкое понимание, как структурировать приложение и где разбивать его на компоненты.
    Ну и после 3 прочтения еще помог момент: мне дали с нуля проектировать новое, достаточно крупное приложение на Rust. Притом заказчик кричал "микросервисы - это круто, хочу, хочу, хочу", а тимлид мне сказал "давай монолит, но так чтоб потом легко было распилить, а то все сроки про**ем". Вот тут прямо вообще понимание пришло. Ну и плюс в Rust архитектурные компоненты очень хорошо ложатся на отдельные крейты (это такая единица компиляции в Rust), а компилятор в принципе не дает делать циклические зависимости между крейтами.

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

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Как бы это странно не звучало, но одно из главных преимуществ TypeScript - это ускорение разработки в несколько раз. Да, когда еще ничего нет - разработка незначительно замедлится, так как помимо логики нужно описать еще и типы. Но это только в начале. И это не только возможность писать большую часть кода с помощью автодополнения. Поддержка существующего кода занимает в десятки раз больше времени, чем его начальное написание. Стоит ли вложить несколько лишних часов на старте, чтоб сэкономить в последствии месяцы? Как по мне стоит.

    Еще одним огромным плюсом является возможность проектировать на типах. Познав дзен TypeScript'а я перестал пользоваться UML, так как типы дают мне ту же наглядность, но при этом еще и сокращают время, так как типы - это уже код. Ну и источник правды остается один. Бизнес требования выраженные в типах не дают отклонится от них при написании логики, исключая возможность неправильной трактовки задачи. Перенеся задачу в типы, я могу обсудить ее с коллегами и исправить неточности еще до написания кода, что опять же сильно экономит время.

    Ну и отвчечу на некоторые Ваши сомнения:
    TSLint в VSCode прям жутко тугой
    TSLint официально deprecated, вместо него стоит использовать плагин к eslint, заодно можете мой конфиг попробовать.

    Типы? Есть JSDOC
    JSDoc в плане типов не умеет и 10% того, что умеет TypeScript. Кроме того, никто в здравом уме не пишет JSDoc на приватную логику, а значит проверки типов там не будет. JSDoc не гарантирует корректность рефакторинга, а вот благодаря TypeScript я, опять таки, точно не забуду обновить JSDoc.

    многие библиотеки nodejs не имеют типов
    может лет 5 назад так и было, но сейчас встретить библиотеку без типов - скорее исключение. Если библиотека популярная, но не предоставляет типов, скорее всего их уже написал кто-то другой, достаточно просто установить одноименный модуль из npm скоупа types и все будет работать само.

    Поддержка браузерами скомпилированного кода? Да какбы почти весь JS имеет поддержку 95%+, тот же Babel уже забыл когда использовал.
    Вообще это не основная задача компилятора TypeScript, а опциональная возможность. И babel + preset-env с ней справляются гораздо лучше. И никто не мешает использовать их вместе. А еще думаю вопрос времени, когда кто-то напишет оптимизатор кода использующий информацию о типах из TS.

    Примерно в каждой второй есть инстансы, на которые смотришь - и чешешь репу - а как называется тип этой переменной в @types/?
    import {someObject} from 'some-library';
    
    type TypeFromValue = typeof someObject;
    const valueCopy: TypeFromValue = {
        ...someObject,
        type: 'overrides',
        with: 'type check',
    };
    и кстати, вот пример того что JSDoc типы не умеют.

    //@ts-check
    и почти везде останется бесполезный any.

    P.S. удачи такие типы на JSDoc описывать
    P.P.S. Еще прелести современного TypeScript невозможные у...
    Ответ написан
    8 комментариев
  • Как сделать 302 редирект fetch?

    @cloudz Автор вопроса
    В итоге сделал так:

    const response = fetch(url, {
      method: "POST",
      headers: {
        Accept: "applicaton/json",
      },
      dataType: "JSON",
      body: data,
    })
    .then(res => {
      if (res.redirected) {
          document.location = res.url;
      }
    })
    Ответ написан
    Комментировать
  • Что такое синхронный и асинхронный код?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Синхронный вешает весь процесс до тех пор, пока не выполнится, и лишь затем передает управление дальше, нижестоящему коду.

    Асинхронный код делает паузу и передает управление дальше, но точка останова запоминается и управление к ней возвращается в будущем при каком-то условии. Например, таймер или событие. Таким образом, процесс не висит. Более того, ниже могут быть инициализированы какие-то переменные, которые нужны для выполнения асинхронного кода, а пока этот код нельзя выполнять.
    Ответ написан
  • Можно ли объеденить большое количество классов в одну функцию js?

    Seasle
    @Seasle Куратор тега JavaScript
    Изучайте фабрики (1, 2).
    Ответ написан
    Комментировать
  • Где почитать о защите сервера на Node?

    hzzzzl
    @hzzzzl
    у меня есть такое в закладках, тут явно немного, но хоть что-то
    https://medium.com/@nodepractices/were-under-attac...
    Ответ написан
    Комментировать
  • Нужен совет по выбору направление в IT как программисту?

    DevMan
    @DevMan
    любого работодателя не волнует чем вы владеете. его волнует можете ли вы решить его проблемы.
    и ваша задача убедить его в этом.

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

    если вы хотите реально совета: легких путей и однозначных ответов нет. делайте то, что вам нравится, и делайте это лучше других. тогда у вас будут и удовлетворение, и деньги.
    Ответ написан
    Комментировать
  • В чем отличия модуля firebase от firebase-admin в nodejs?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Открываешь страничку модуля и читаешь:
    firebase:
    This SDK is intended for end-user client access from environments such as the Web, mobile Web (e.g. React Native, Ionic), Node.js desktop (e.g. Electron), or IoT devices running Node.js. If you are instead interested in using a Node.js SDK which grants you admin access from a privileged environment (like a server), you should use the Firebase Admin Node.js SDK.

    firebase-admin:
    The Firebase Admin Node.js SDK enables access to Firebase services from privileged environments (such as servers or cloud) in Node.js.

    Короче: первое для клиента, второе для сервера.

    Учись сам искать инфу, ты не сможешь вечно на каждый чих спрашивать тут.
    (Нет, не сможешь. Точно не сможешь. Инфа 100%)
    Ответ написан
    Комментировать
  • Зачем нужна jwt стратегия?

    devellopah
    @devellopah
    Справка(упрощённо).
    Аутентификация - вход в систему.
    Авторизация - получение доступа к инфе из базы данных.

    Если ты создаёшь сессию для пользователей своего приложения, то когда юзер залогинился на сервере инициируется сессия и сервер в куках отправляет на клиент session id.
    В последующих запросах к базе данных сервер читает этот session id из кук, обращается к некой внутренней базе ( обычно имеет форму ключ-значение, где ключ - это session id, значение - mail пользователя, к примеру ) затем обращается к базе данных, достаёт данных для пользователя ( мы определили его на предыдущем шаге ) и возвращается в response.
    Такая система называется stateful ( поскольку мы вынуждены хранить инфу об аутентифицированных пользователях на сервере ). Это не вяжется с концепцией RESTful API, подразумевающей, что сервер должен быть stateless ( не хранить инфу аутентифицированных пользователях ).
    Добиться этого помогает json web token, поскольку он хранит всю необходимую для авторизации пользователя инфу. Это позволяет тебе написать RESTful API(stateless)

    Что почитать: session-based authentication, token-based authentication
    Ответ написан
    Комментировать
  • Направление для развития в React?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Redux в React-разработке надо знать обязательно. Еще, хорошо знать MobX, так как все больше компаний используют его в новых проектах.

    Так же, вам стоит познакомиться с такими инструментами как:
    typescript
    webpack/babel
    react-router
    redux-thunk
    redux-act (имхо, лучшая упрощалка бойлерпелйта redux)
    styled-components
    reselect
    next/create-react-app
    axios
    react-helmet
    react-portal
    classnames
    eslint/tslint/prettier/lint-staged/husky
    jest
    express

    Перечисленные инструменты, кроме redux-act, используют в React-разработке чаще всего.
    Ответ написан
    1 комментарий