• Как распознавать абзацы в тексте?

    @fireSparrow
    С хорошей точностью - никак.
    Но если какой-то процент ошибок допустим, то можно попробовать взять достаточно большой корпус текстов уже разбитых на абзацы, вычленять в нём отдельные предложения и считать для этих предложений какие-то метрики. Например, количество слов, количество знаков препинания, отношения числа знаков препинания к число слов, средняя длинна слова, результирующий вектор в пространстве слов, ну и ещё хотя бы несколько десятков подобных метрик придумать.

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

    А дальше вы просто ставите абзац после тех предложений с высокой вероятность "хвоста", за которым идёт предложение с высокой вероятностью "головы".
    Ответ написан
    Комментировать
  • Запустить 10 потоков и запустить 10 раз скрипт, есть разница?

    Konstantin18ko
    @Konstantin18ko
    Стоматолог
    Особенность потоков от скриптов отличается в том чтоб потоки внутри программы могут взаимодействовать между собой - так в java, а как в python не знаю.
    Ответ написан
    2 комментария
  • Как делать GUI в Java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Правильнее разделять логику и представление.
    Ответ написан
    2 комментария
  • Появится ли такой тип программиста?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    CodeReview-еры они зовутся и давно уже изобретены, но редко это отельная должность :)
    Ответ написан
    3 комментария
  • Что делать веб разработчику, если уже всё придумано?

    AgentProvocateur
    @AgentProvocateur
    Правильно заметили, что есть люди-исполнители, а есть люди-генераторы идей. Нужно реально взглянуть на себя и...принять это. Быть профессиональным исполнителем гораздо кошернее, чем быть генератором провальных идей. По статистике, 9 из 10 стартапов провальны...зачем пополнять собой этот список? Если ты - рыба, то многого ли ты добьешься от фрустрации по поводу неумения залезать на дерево?

    Самый верный путь к рабочей идее:
    1. Проработать в какой-либо сфере достаточное количество времени;
    2. Познать её изнутри на собственной шкуре;
    3. Выявить в ней боли/проблемы/недостатки;
    4. Решить их с помощью прикладного навыка (программирования);
    5. Обкатать в собственной работе;
    6. Упаковать решение и реализовать коллегам по сфере;
    ...
    7. PROFIT!

    Далее...даже если завтра в голову залетит рабочая идея, готов ли ты её реализовать? У тебя есть команда, готовая работать минимум полгода-год бесплатно на время создания беты, тестов, обкатки, раскрутки? Она сможет действительно реализовать всё как надо? Если нет команды, имеются ли у тебя средства на зарплатный фонд хотя бы для 5 человек на эти полгода-год? А с учетом налогов и отчислений (+30% к зарплате на руки)? У тебя есть условия для работы этих 5 человек? Есть ли у тебя сумма на маркетинговое исследование твоей идеи (или лучше облажаться на авось)? Есть ли у тебя хотя бы миллион на первичный трафик из директа? Или надеешься донести свой стартап до пользователей путём емэйл-спама?)) Я не указал и доли того, что потребуется для реализации небольшого web-сервиса, даже при наличии действительно рабочей идеи. Может быть, идеи не прут именно потому, что ты просто не готов к их реализации, и неча порожняка гонять?)

    Как выглядит стартап глазами романтичного юноши, начитавшегося глянцевых историй успеха:
    1. Придумать гениальную идею;
    2. Закодить в гараже в одну харю или в паре с дружбаном;
    3. Разместить на сервере и получать от мира благодарности, признание и мешки денег.

    Как выглядит стартап на самом деле:
    1. Пахота минимум 10 лет в одном направлении/сфере;
    2. Наработка профессионализма, идей, контактов, связей, клиентской базы, понимания всех нюансов сферы;
    3. Угон базы, угон клиентов на себя, переманивание лучших коллег/сотрудников, оформление юрлица, открытие "своего дела" на рабочей идее)))

    К примеру, "икона стиля" стартаперов - Павел Дуров, он идеолог? Нет! Прикол в том, что он именно стырил рабочую идею (также, как тырят клиентскую базу у работодателя), собрал команду, создал для неё условия, привлек корешей-евреев с еврейскими ресурсами, бюджетами и влиятельной питерской крышей, и обеспечил этому всему грамотный проект-менеджмент и маркетинг. Дело в идее? Нет, дело в реализации:)

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

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Очевидно же, что они должны стоять М-Ж-М-Ж-М-Ж-М-Ж-М-Ж либо Ж-М-Ж-М-Ж-М-Ж-М-Ж-М.
    В каждом из вариантов видна независимая перестановка 5 мужчин и независимая перестановка 5 женщин. Всего получается (5! * 5!) * 2 = 28800
    Ответ написан
    Комментировать
  • Не могу получить заказ на бирже?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Это закат WEB разработки?
    Это рассвет качества web-разработки на фрилансе !
    59d1302d86732308296040.jpeg
    1. Будут больше заказывать "под ключ"
    2. Будут чаще работать через безопасную сделку
    3. Будут работать с теми, кто прошёл тесты на знания направлений на фриланс-ресурсе.

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

    Минимум для веб-сайтов:
    1. Внешний вид (презентабельный и "рабочий" дизайн для ЦА, корректная работа вёрстки),
    2. Удобство (UI/UX),
    3. Скорость обработки пользовательских запросов сервером.
    Ответ написан
    4 комментария
  • Не могу получить заказ на бирже?

    Jump
    @Jump
    Системный администратор со стажем.
    Выходит, через какое то время, такая дикая конкуренция будет и на совсем сложные проекты с React, Angular итд? Это закат WEB разработки?
    Это не закат, а расцвет. Конкуренция двигатель прогресса. Выживают сильнейшие, и ценник падает, в результате продукт становится более доступным.
    Ответ написан
    Комментировать
  • Как решить проблему с преобразованием типа, когда мешает NaN?

    Проверяйте на NaN при помощи специальной функции isNaN, и будет вам счастье. Возвращает true, если получилось NaN, и false – для любого другого значения.
    Ответ написан
    1 комментарий
  • Как понять, что жрет память жесткого диска?

    sHinE
    @sHinE
    веб-разработчик, php/js/mysql и сопутствующее
    Программой типа https://www.jam-software.com/treesize_free/ посмотрите что у вас занимает больше всего места. Дальше надо будет выяснять, что это за файлы и от этого плясать.
    Ответ написан
    3 комментария
  • Как отдавать видео с сервера?

    webinar
    @webinar Куратор тега Веб-разработка
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Я понимаю, что этому в университете не учат, поэтому напишу. Есть такая штука "видеосервер" и есть такая штука "поиск". Если совместить получится как создать свой видео сервер
    Ответ написан
    6 комментариев
  • Как улучшить читаемость кода (много операторов if)?

    usdglander
    @usdglander
    Yipee-ki-yay
    Тут не паттерны, а рефакторинг нужен. Например "выделение метода".
    Ответ написан
    Комментировать
  • Как написать алгоритм поиска соседних элементов?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Идея с отдельной работой по X и по Y неплохо работает. На каждом кадре проверяем каждую из 200 точек (это совсем не много).

    Сортируем массив точек по их X-координате. Двигаемся слева направо, выбирая очередную точку.

    Смотрим от неё влево (чтобы не проверять одну связь дважды, выбираем полуплоскость от точки) и отбираем только те точки, чей X отличается не более, чем на radius.

    Из них смотрим только на те, у которых Y не более, чем на radius отличается (уже в любую сторону: и вверх и вниз).

    У них проверяем уже евклидово расстояние – корень из суммы квадратов расстояний по X и по Y – чтобы было не больше radius. У таких есть «связь» – рисуем им ребро.

    Работающий fiddle (неминифицированный исходник на github)
    538264abb31847baa28fe05e015ac13c.png

    На компе даёт около 60 fps, на мобильнике от 40 до 55, т.е. совершенно приемлемая скорость при 200 точках.

    Первая версия ответа

    Интересна ситуация, наихудшая для оптимизации: когда за 1 кадр может поменяться максимальное число связей. Предположу, что это сетка из равносторонних треугольников, где длина ребра равна «триггерной» дистанции:
    картинка треугольной сетки
    5297fe1c584f4551aca5b77a2a987549.jpg
    Тут большинство точек, кроме крайних, взаимосвязаны. У каждой по 6 ближайших соседей. Примерно 200 * 6 / 2 = 600 связей (чуть меньше из-за краёв).

    Если такую сетку пропорционально увеличить на любую малую величину, сразу все связи порвутся, их станет ноль. Пусть на месте останется, скажем, левый верхний угол сетки. Тогда наибольший путь проделает нижний правый угол. Тут вопросы к особенностям вашей задачи:
    1. округляются ли координаты до целых или до какой-то точности?
    2. какой наибольший путь может проделать за один кадр точка?

    В идеальном мире всем достаточно проделать бесконечно малый шаг, и, вуаля!, было 600 связей, стало 0. Такой же шажок назад – не было связей, и вот их 600. Т.е. надо бы в каждый кадр проверять 600 ребер. Считать это за теоретический предел оптимизации?

    Сущности
    Точки и рёбра. Ребро ссылается на две точки. Точка ссылается на рёбра. Ребро имеет длину и, в зависимости от длины, может быть «видимым».

    Важнее всего следить за рёбрами, длина которых близка к пороговой – и с меньшей и с большей стороны. Такие стоит проверять почти каждый кадр, т.к. статус ребра может поменяться за один кадр. Прочие рёбра и кандидаты в рёбра проверять можно изредка.

    Можно давать рёбрам веса, пропорциональные желаемой частоте их обновления. Скажем, от 0 до 1. Вес равный 1 значит, что нужно проверять каждый кадр. Например, вес W = Math.max(0, D - Math.abs( length - D))/D, где D – пороговая дистанция.

    Остаётся сделать механизм, отбирающий рёбра в работу на очередном кадре, исходя из их весов. Запоминать время, когда ребро было обновлено. Приоритет его попадания в обработку равен W * (time - timeUpdated)
    Ответ написан
    3 комментария
  • Какой алгоритм подойдет для описания полета насекомого?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Можно сделать цепочку преследования: к случайной точке тянется одна, к ней другая, и т.д., а последняя – муха.

    Очередную точку ставить на плоскости случайно, в любом месте внутри допустимой области. Эта точка – цель, к которой стремится следующая, невидимая точка: каждый следующий кадр её координаты изменяются на k * векторИзТекущегоПоложения-в-Цель:
    x = x + k * (xTarget - x);
    y = y + k * (yTarget - y);

    Так «преследователь» замедляется, по мере приближения к цели, никогда её не достигая.

    Эта невидимая точка – не одна. К ней, как к цели, стремится следующая. К той ещё одна. Наконец, сама муха по этому закону стремится к хвосту этой цепи - очередной точке.

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

    Сделал рабочий пример.

    Можно поменять алгоритм и сделать, скажем, линейную скорость постоянной. Или случайно варьировать параметры k и D – от этого поменяется скорость и траектория от плавной ближе к ломаной.
    Ответ написан
    Комментировать
  • Каким образом выполнить множественную замену строк в файле?

    JaxxDexx
    @JaxxDexx
    def editapache(self,oldmail,mail,name,oldname,charset,oldcharset,vhid):
          with open(filename,'r+') as config:
            map(config.replace, [oldmail, oldname, oldcharset], [mail, name, charset])
        config.write(config)
    Ответ написан
    1 комментарий
  • Какой минимальный набор знаний для Junior QA?

    paulpricker
    @paulpricker
    Senior Test Automation Engineer
    Здравствуйте. Во многом зависит от вашего будущего работодателя - именно он формирует требования. Также картина может сложиться, если вы посмотрите, допустим, на hh.ru (любой другой сайт для поиска работы) перечень знаний и умений, необходимых для замещения позиции младшего специалиста по тестированию. Если брать нечно среднее, то обычно список примерно такой: ОС на уровне продвинутого пользователя, аналитический склад ума, всякие soft-skills а-ля умение ясно излагать свои мысли, коммуникабельность и т.д. Если дело касается веба, то представление о том, как это всё работает (клиент-сервер, http и т.д.), HTML, CSS, минимальное умение работать в консоли браузера; возможно, где-то понадобится также какое-то представление об SQL (на уровне простых запросов). Если мобайл, то знакомство с мобильными осями. На собеседовании от вас потребуется в большей степени показать, что вы можете задействовать своё логическое мышление (обязательно будут логические задачки), в нужной ситуации воспользоваться социальными навыками (тоже могут спроектировать какой-нибудь жизненный случай на проекте, чтобы посмотреть, какое решение вы примете), также (опять же, в зависимости от работодателя) может потребоваться доказать, что вы владеете теми или иными технологиями, которые внесены в ваше резюме и желаемы работодателем. Где-то могут спросить про иностранные языки. В общем, попробуйте полистать вакансии, пооткликайтесь, почитайте пару основополагающих книжек для начинающих тестировщиков, и паззл сложится сам. Удачи вам!
    Ответ написан
    Комментировать
  • Что должен уметь и знать project management?

    Atanvar
    @Atanvar
    Frontend developer
    Суть - убрать все преграды на пути работы команды.

    Уметь слышать и понимать

    Преграда 1 - коммуникации, разработчики не хотят этим заниматься, по этому мы должны сделать это за них, понять, что необходимо заказчику.

    Уметь говорить

    Мало понимать заказчика, мы должны еще объяснить программистам \ дизайнерам на на их языке то что необходимо заказчику. Из этого пункта мы получаем следующее:

    1) Коммуникации - наше всё.
    2) Говорить с командой на одном языке жизненно необходимо

    Формулируй, властвуй, распределяй.

    Хорошо написанное ТЗ - минус дохрелион человекочасов работы и тонны нервных клеток, помните, что даже если ТЗ написано идеально - программист все равно скажет, что оно херовое (чтоб ПМ не расслаблялся, а то иш тут менеджер...)

    Планируй

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

    Риск менеджмент

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

    Менеджмент

    Ну и разумется ПМ это менеджер, который может управлять командой, настроем команды, управлять конфликтами (искусственными) либо нейтрализовать их если они негативные.

    Минутка полезного чтения - советы начинающим руководителям проектов
    Ответ написан
    2 комментария
  • Как добиться независимости в тестах (phpunit)?

    @kn0ckn0ck
    Продюсер
    Не стоит смешивать модульные тесты и интеграционные (или функциональные). Цель модульных тестов проверить работу одного модуля (класса, например). В этом случае все его зависимости мокаются. Целью интеграционных тестов является проверка взаимодействия цепочки модулей (сервисов, с БД и т.п.) друг с другом.

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

    То есть правильно было бы сформулировать вопрос таким образом: "какой процент покрытия модульными тестами будет достаточным для моего кода?" Обычно останавливаются где-то на 70-80%

    Также очевидно, что 100% работающих модульных тестов не гарантирует работу интеграционных тестов или функциональных. Поэтому необходимо писать и те и другие.

    Я бы не стал фанатично закрывать все методы классов тестами, а только те, в которых имеется высокая цикломатическая сложность, либо которые скорее всего будут меняться. Короче, нет большого смысла в тестировании примитивных/стабильных участков кода.
    Ответ написан
    Комментировать
  • Какие книги по разработке игр стоит прочитать?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    gameprogrammingpatterns.com
    Сорян, что не на русском, но без английского в IT далеко не уедешь все равно.
    Ответ написан
    Комментировать