• Какие существуют объективные недостатки у systemd?

    @pcdesign
    Обычно systemd-хейтеры находятся в возрасте 14-18 лет и настоящих Unix™ в глаза не видели.
    1. systemd — лучшее что случалось с init-системой дистрибутивов GNU/Linux за последние 18 лет(именно столько я работаю с *nix-like и именно за этот отрезок времени я могу отвечать)
    2. systemd — прямой аналог launchd и smf которые как раз в сертифицированных Unix™ живут.

    А все эти визги про «не юниксвейно» раздаются от тех, кто только с мамкиных компов на лоре читал, что так надо попискивать.

    Цитата взята отсюда:
    https://habr.com/ru/company/southbridge/blog/31570...

    Я согласен с автором на 100%.
    Ответ написан
    1 комментарий
  • В reg.ru украли домен с уникальными 10 миллионами посетителями, что делать?

    Reg-ru
    @Reg-ru
    Nikita Linberg, здравствуйте!

    Я представляю компанию REG.RU. Пожалуйста, назовите номер заявки в службу поддержки? Передадим тикет нашим юристам и постараемся дать рекомендации и оказать помощь в решении этого вопроса.
    Ответ написан
  • Как соблюсти принцип последней буквы SOLID?

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

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

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

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

    Кстати можешь посмотреть эти курсы, самое толковое из того что есть
    Ответ написан
    64 комментария
  • Аналог google spreadsheets для локальной сети?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    На сколько мне известно, единственный более-менее сравнимый с Google Docs вариант, который можно развернуть на собственном сервере - это OnlyOffice. Гуглить по запросу "self-hosted google docs alternative".

    Фронтенд Google Docs реализован на GWT, а бэкенд на собственном web-фреймворке для Google App Engine. Сплошная Java.
    Ответ написан
    Комментировать
  • Обращение к свойствам объекта из другого объекта?

    profesor08
    @profesor08 Куратор тега JavaScript
    Потому что внутри объекта можно обратиться к полям самого объекта. В твоем случае у это объект, а его поля c, d, знают только о друг друге. Ничего о родителе они не знают. Да и вообще, пытаться делать то, что ты хочешь это плохо. Код должен быть ясен и понятен.

    const x = {
      a: "fw",
      b: 2,
    };
    
    const c = 323232;
      
    const y = {
      c: c,
      d: function() {
      	return c * x.b;
      },
    };
      
    const location = {
      x: 500,
      y: 600,
    };
        
    items.push({
      x,
      y,
      location,
    });
    Ответ написан
    Комментировать
  • Как перехватить HTTP запросы php скрипта?

    SilenceOfWinter
    @SilenceOfWinter Куратор тега PHP
    та еще зажигалка...
    Делал бы по мануалу:
    Guzzle c curl адаптером curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888'); + консоль
    curl --proxy 127.0.0.1:8888
    Ответ написан
    Комментировать
  • Получить данные всех сессий поднятых на сервере?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ответ простой: не надо хранить корзину в сессии. Ей там нечего делать.
    Корзину надо хранить в базе данных. Пользователя идентифицировать по куке.
    Соответственно, проблема "получить данные всех сессий" больше не существует.
    Проблема "найти все брошенные корзины" сводится к примитивному запросу в БД.
    Ответ написан
    Комментировать
  • Как работать с websocket в php без библиотек?

    @xfg
    Прочитать соответствующий RFC https://tools.ietf.org/html/rfc6455 чтобы понять, как происходит рукопожатие и какие байты в переданном сообщении за что отвечают. После этого будет понятно как написать реализацию. Я досконально уже не помню, но фактически от клиента приходит обычный http запрос с определенными заголовками, сервер разбирает этот запрос и если всё ок, то сохраняет открытое соединение в массив, если нет, то отправляет соответствующий ответ и закрывает соединение. Дальше по открытому соединению начинает сыпаться поток байтов от клиента их нужно разбирать, чтобы понять длину сообщения, сами данные переданные в фрейме, закончился фрейм или еще нет и тому подобное. Обратно также кодировать данные в поток байтов и отправлять по открытому соединению. Каждый байт в переданном фрейме несет определенный смысл. Обо всем этом подробно написано в RFC, но на английском. Вообще это хорошо примерно понимать как работает, но глупо писать такую низкоуровневую реализацию, когда есть готовые. Такие вещи развивают и поддерживают годами. Вы же не пишите HTTP серверы, а берете готовые вроде nginx и тому подобное.

    В каком месте можно полученные данные подготовить к записи в бд.

    Как сделать, что бы на стороне клиента, один websocket отвечал за сообщения, другой за статьи. (Или за эти два действия отвечает один websocket, тогда как мне на сервере это различать).

    Вебсокет это низкоуровневая штука, для передачи потока байтов от клиента на сервер, в отличии например от HTTP, где есть заголовки и тело сообщения. Поверх вебсокета нужно делать еще один протокол или самописный или выбрать один из готовых. Это проще говоря, то как выглядят ваши фреймы (сообщения), которые вы отправляете с клиента на сервер и назад. Например клиент может отправлять такой фрейм:
    ["id", "controller/action", {param1: value1, param2: value2}]

    в ответ получать
    ["id", "OK"]
    если запрос был обработан успешно или
    ["id", "ERR", {error: "action not found"}]
    если произошла ошибка. По переданному id в массиве, можно понимать, к какому запросу относится ответ.
    Для уведомлений (событий) сервер может отправлять клиентам что-то такое
    ["user_added", {user: {...}}]
    и т.д. Этот протокол необходимо придумать самому или выбрать из готовых (популярных пока нет) и написать его реализацию (клиентскую и серверную часть) или опять же взять уже готовую.

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

    Но это уже всё должно быть, просто возьми real-time фреймворк. Там за тебя написали и websocket сервер и протокол поверх него и экшены уже есть. Всё низкоуровневое уже готово. Бери и пиши приложение. В nodejs самый популярный это например https://github.com/socketio/socket.io, а в php я не знаю, но уверен, что тоже есть что-то популярное.

    Своё написать не получится, без опыта и без попыток сделать приложение на чем-то готовом. Нужно как минимум прочитать RFC и посмотреть реализации других разработчиков. Для этого нужно быть кем-то больше, чем "программистом сайтов".
    Ответ написан
    1 комментарий
  • Как работать с websocket в php без библиотек?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Как работать с websocket в php без библиотек?

    если в кратце, то никак.

    в PHP нет реализации протокола websocket из коробки.

    Библиотеки как раз нужны потому что в них и описан весь websocket причем с поддержкой старых/разных версий для разных браузеров.

    И это вообще не fsockopen или socket_create. Эти функции вообще о другом и ничего общего с вебсокетом не имеют. Точнее это низкоуровневые функции для создания любого сервера, но они сами по себе ничего не умеют из коробки на них как вебсокет можно реализовать так и http сервер например.

    https://github.com/ratchetphp/RFC6455/blob/master/...
    Как-то так выглядит вебсокет на "чистом похапе".
    Без этого работать не будет ничего.
    Ответ написан
    Комментировать
  • Как не превратиться в мамонта?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    1. Видимо тем, кто собеседует, нечего делать или они слишком зеленые чтобы понимать смысл управления проектом. На собеседовании нужно спрашивать не все нюансы языков/фреймворков а то, что реально требуется в проекте, и умение разбираться с новым в пределах проекта. При собеседовании практически всегда можно завалить при желании, но нужно ли это делать неясно.

    2. Окей, а если не на собеседовании вам поставят задачу - вы разберетесь или будете волноваться что наизусть не знаете?

    3. Самоорганизация и умение работать зачастую важнее, чем специализированные знания, ибо все в мире ИТ и бизнеса к этому ведет - упрощение языков программирования, автоматизация, все эти скрамы - все это ведет к уменьшению человеческой ошибки и возможности замены программиста.
    Ответ написан
    1 комментарий
  • Есть ли в открытом доступе инструменты компьютерной лингвистики с целью анализа предложений русского языка?

    deepblack
    @deepblack
    Готового решения нет, но возможно вас заинтересуют следующие проекты:

    • Dostoevsky - Sentiment analysis library for russian language

    • Natasha - библиотека для поиска и извлечения именованных сущностей (Named-entity recognition) из текстов на русском языке. На данный момент разбираются упоминания персон, даты и суммы денег.
    • Yargy is a Earley parser, that uses russian morphology for facts extraction process, and written in pure python
    • razdel — библиотека для разделения русскоязычного текста на токены и предложения. Система построена на правилах.


    В догонку
    https://github.com/yandex/tomita-parser

    SyntaxNet (ссылка на Хабр) — это основанная на TensorFlow библиотека определения синтаксических связей, использует нейронную сеть. В настоящий момент поддерживается 40 языков, в том числе и Русский.

    UPD (17.03.2020):
    • Az.js A NLP library for Russian language
    • isanlp Natural language processing tools for English and Russian (postagging, syntax parsing, SRL, NER, language detection etc.)
    • russiannames Russian names parsers, gender identification and processing tools
    • rulemma Лемматизатор для русскоязычных текстов
    Ответ написан
    3 комментария
  • Как выучить английский язык до уровня B2?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Приложить усилия. Нельзя выучить английский, просто заплатив куда-то денег.
    Поэтому выделять нужно не просот 1.5к в месяца, а много времени и УСИЛИЙ, которые реально тратятся на изучение, а не просто полистать учебник полтора часа, не вникая в смысл.

    Советую воспользоваться поиском и найти уже готовые ответы вроде
    * онлайн-ресурсов (lingualeo и др игровые варианты для регулярных занятий).
    * Посещение курсов (любых, где есть преподаватель и общение)
    * Регулярный просмотр видео на английском

    Опять же, если у вас сейчас уровень elementary, то 6 месяцев может оказаться недостаточно, если вы не живете в стране с носителями.
    Ответ написан
    Комментировать
  • Как разгадать капчу?

    @nvdfxx
    Senior Pomidor developer
    Ответ написан
    Комментировать
  • Как разгадать капчу?

    @LODIII
    Python/SQL developer
    большинство капчей даже гугл 2 разгадываются включением звука и лексическим анализатором с ML или без.
    Ответ написан
    2 комментария
  • Зачем нужен HTML если есть WordPress?

    Stalker_RED
    @Stalker_RED
    Представим вместо вас новичка автомеханика:

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

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

    Посмотри на яндекс-маркет или на гуглокарты. Посмотри на вконтактик или на тостер, на котором ты этот вопрос задал. Сможешь повторить это на вордпрессе? Вот затем и учат, чтобы уметь делать что-то отличающееся от блогов на вордпрессе.
    Ответ написан
    2 комментария
  • Определить тип трафика на сайте, 3G или WI-FI?

    vvpoloskin
    @vvpoloskin
    Инженер связи
    Через js получить локальный IP-адрес пользовательского устройства (сценарии есть в интернете), если он из 100.64.0.0/12 - мобильный оператор, из других частных диапазонов - фиксированный. Не поможет, если абонент подключен через wifi, у которого аплинк 3G/LTE.

    Если есть возможность выполнить http-запрос на клиентском устройстве, попробовать открыть личный кабинет четырёх операторов (типа lk.megafon.ru), если открывает без логина - вы нашли своего провайдера.
    Ответ написан
    2 комментария
  • Определить тип трафика на сайте, 3G или WI-FI?

    @vadimek
    Полуджун
    UPDATE: добавил connection.type для определения типа соединения, помимо его скорости (effectiveType). connection.type не работает на десктопе.

    Так:
    let connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
    let connectionSpeed = connection.effectiveType;
    let connectionType = connection.type || "No mobile";

    Но wifi не определяет почему-то, пробовал так
    Ответ написан
    3 комментария