• Какую библиотеку использовать для парсинга большого количества страниц?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Вы бы определились - с чем именно проблемы могут возникнуть в вашем случае.
    Толку от быстрой библиотеки парсинга страницы не будет если сайт вам страницу полминуты отдавать будет...
    Толку от обычного подхода парсинга не будет, если страницу для получения данных на стороне броузера рендерить надо будет или какие-то действия выполнять.
    Толку от большого количества запросов в единицу времени не будет, - если сервер будет в бан отправлять за частые запросы.
    Ну и т.п.... Так что правильно вам говорят - беритесь уже хоть за что нибудь, да решайте проблемы по мере поступления.
    Ответ написан
    Комментировать
  • Обязательно ли читать книгу по языку/технологии что бы быть тру и продвинутым кодером?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Вы не найдёте ни одного авторитетного программиста с мировой известностью, который бы утверждал, что курсы и видео-уроки лучше книг. Обычно это утверждают либо профаны, оправдывающие своё нежелание читать, либо авторы курсов, делающие деньги на лентяях и глупцах. И я лично за 18 лет в отрасли встретил множество программистов, но ни одного хорошего, выучившегося по курсам и видео-урокам.

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

    К тому же, после достижения профессионального уровня достаточного чтобы называться специалистом, вы обнаружите, что необходимые на этом уровне знания можно почерпнуть только из документации. То есть всё равно придётся читать. Много и часто.

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

    Кроме того, чтение развивает абстрактное мышление - основной инструмент разработчика.
    Ответ написан
    16 комментариев
  • Как верстать под печать?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Ну давай посмотрим на примере тостера.

    Попробуем распечатать страницу с вопросом.
    Для начала вопрос: для чего мы его распечатываем? Очевидно, нам интересен вопрос, и главное его решение. Именно это мы хотим распечатать на бумаге.

    Что же нам предлагают верстальщики из ТМ?
    5f98935dba783645914348.png


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

    Смотрим дальше
    5f98942e4692f875969058.png


    Форма комментирования. Ну что же. Наверное я отстал от современных технологий в своей деревне и во всем мире уже давно можно комментировать распечатанные страницы...

    В самом конце аж три листа совершенно бесполезной информации.

    В общем мы видим совершенно не оптимизированную под печать страницу.

    А вот если не забывать про печатные устройства, можно все это лишнее как минимум спрятать.
    Ответ написан
    2 комментария
  • Где найти технические задания, Java?

    @frozen_coder
    Java-developer
    А вы с этими двумя справились? На GitHub залили свои труды? Попробуйте найти стажировку, она вас задачами обеспечит. А потом работу.

    Но у меня есть коллекция ссылок, которая может вас заинтересовать:
    1. 9 учебных проектов для бэкендера
    2. Идеи для проектов для практики навыков программирования - очень много всего и просто попрактиковаться и проект накрутить, полистайте-повыбирайте
    3. Список тестовых заданий для прокачки
    4. Тестовое задание Xored
    5. Тестовое - не помню чьё. Там вроде под .Net, но ничто вам не мешает реализовать его на Java и Spring
    6. Тут идея под Django, но можно и на Spring же
    7. На Java Junior тестовое
    8. Финансовый калькулятор
    9. Это просто бомбезная статья
    10. Project Ideas
    11. Тут много всякого. И задачки и проекты.
    12. 40 Side Project Ideas for Software Engineers
    13. Примеры тестовых заданий на позиции Middle и Senio...

    И просто можно погуглить тестовые задания :) Часто бывают в открытом доступе.
    Ответ написан
    5 комментариев
  • Где найти годный парсер адресов?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    У вас в примере очень чистые аккуратные адреса.
    Не очень понятно что вы имели в виду под "разложить по полочкам" и какие именно вам нужны полочки.
    Общий подход для переработки таких массивов слабо структурированных данных следующий.
    1. Процесс переработки должен быть поэтапный. Каждый этап должен вносить минимальные не калечащие изменения в как можно бОльшую часть датасета.
    2. Каждый этап должен быть прозрачным. Затронутые модификацией значения можно для удобства контроля (глазами) дедуплицировать и сортировать. Это позволит легко увидеть любые аномалии.
    3. Нужно вести подробную статистику изменений на каждом этапе. Все выбросы статистики должны проверяться глазами: слишком короткое минимальное слово или число слов, слишком длинные слова или наборы, слишком большие или малые числа...
    4. На каждом этапе нужно сохранять предыдущее состояние датасета или держать исходное и иметь удобный инструментарий для быстрого полного накатывания всех этапов на исходный датасет. Иногда этапы имеет смысл переставить местами, потому что обнаружилось незамеченное ранее калечащее изменение пару этапов назад.
    5. Серия мелких правок простыми операциями предпочтительнее сложных алгоритмов и регэкспов. Например в вашем случае гораздо лучше серией прсотых и понятных реплейсов заменить "ул." на "улица", "пл." на "площадь" и т.д.
      Чтобы не городить сложные регекспы имеет смысл сплитнуть строки по словам и заменять слова целиком, либо одним из шагов добавить в начало и конец строки пробелы. Это упростит регекспы и не даст наделать незаметных сразу косяков.
      Затронутые реплейсами строки можно отсортирвоать и дедуплицировать для просмотра глазами. Вдруг у вас есть много переулков Плава-Лагуны, которые принято тоже так сокращать.
    6. Если у вас есть справочник улиц, можно все записи в обработанном датасете, для которых нашлось однозначное соответствие улицы из справочника, пометить специальным флагом и больше не трогать в них улицы. Остаток можно снова подвергнуть сортировке и дедупликации (заодно можно частотность посчитать) и вычищать массово или точечно начиная с чамых частых случаев реплейсами, регекспами, и т.д.

    В вашем случае:
    1. Разделите адреса по запятой, сохраните в отдельные поля. лучше CSV, а не в БД. Проще. При обнаружении больше двух (в вашем случае) запятых сразу падайте, кричите, считайте число таких случаев, решайте вручную, если их не много, делайте отдельный фильтр с фиксом на отдельном этапе если много.
    2. Отсортируйте и дедуплицируйте (на секундочку) все три столбца по отдельности, просмотрите глазами получившиеся множества, поищите проблемы. Автоматизируйте этот шаг, он вам понадобится еще не раз.
    3. Обработайте датасет серией очевидных реплейсов, которые снизят разнообразие. Устранятся сокращения, множественные варианты одного и того же написания, различия в регистрах букв.
    4. Вытащите из ФИАС каталог улиц. Можно взять в формате КЛАДР, там попроще может оказаться и в отдельном файле. Разметьте очищаемый датасет ссылками на найденные в справочнике улицы. Просмотрите дедуплицированные и отсортированные (по алфавиту и по частотности) оставшиеся улицы. Поищите стандартные проблемы, которые можно пофиксить автоматически, внесите ручные правки для узких частных случаев (но программно реплейсами в отдельном этапе, чтобы можно было повторно обработать исходный датасет).


    Если у вас датасет весь примерно такой, как в примере, то я за пару тысяч рублей его вам почищу независимо от его размера. Почти независимо.=)
    Ответ написан
    2 комментария
  • Какие книги (материалы) по проектированию ПО стоит читать новичкам?

    EvgenyMamonov
    @EvgenyMamonov
    Senior software developer, system architect
    Нужно изучить принципы SOLID (в своё время это просто перевернуло моё сознание)

    Хорошие книги по этой теме:
    - Роберт Мартин "Чистый код Создание, анализ и рефакторинг"
    - Роберт Мартин "Чистая архитектура"
    - Стив Макконнелл "Совершенный код"

    Чтобы быстро понять о чём речь - посмотрите эту статью на Хабре (или поищите по фразе SOLID)
    https://habr.com/ru/company/mailru/blog/412699/

    Посмотреть в сторону предметно ориентированного проектирования (DDD).

    - https://habr.com/ru/post/269589/
    - https://habr.com/ru/post/269893/
    - https://habr.com/ru/post/267125/

    Изучить паттерны (шаблоны) проектирования.

    - https://refactoring.guru/ru/design-patterns/what-i... (хороший сайт, очень толково описано + много примеров)
    - https://habr.com/ru/company/mailru/blog/325492/

    Освоить разработку через тестирование (TDD)
    реально экономит время + код сразу получается более качественный

    - https://habr.com/ru/company/ruvds/blog/450316/
    Ответ написан
    Комментировать
  • Сколько стоит час веб-разработчика-фрилансера?

    @deliro
    Ты веcь такой кругом молодец, то знаешь, это знаешь. А теперь представь себе среднестатистический проект, который должен приносить бизнесу деньги. За две недели работы ты едва напишешь хлипкий CRUD для данных, неправильно смаппив бизнес-сущности в объекты ORM, ещё через месяц натянешь какой-то слайдер на jQ, попутно захватив 2мб JS кривых библиотек, а через два заказчик поставит тебе плохую оценку, потому что твой ценник он оплатил не за то, что ему нужно, а потому что ты знаешь монады, которые ему даром не сдались.

    А теперь давай представим простого программиста. Из алгоритмов он с трудом вспоминает сортировку пузырьком, а двусвязный список — предел его знаний о структурах данных, и даже этим списком он пользовался два раза в жизни. Хаскель он никогда не видел в глаза, C++ учил только в школе, вместо этого пишет неэффективный код на PHP. И у него есть опыт. За день он распишет сущности, за второй сделает универсальный CRUD, на третий день поднимет фронт на React'е с SSR. Да, внутренности проекта будут "медленными". Вместо O(logN) что-то будет выполняться за O(N) или даже O(N^2), но всем похер. Пока всё работает на приемлемом уровне — бизнес радуется.

    Кстати, к чему эта поучительная лапша? Я хотел сказать, что всеми этими модными словами можно пугать друзей и преподавателей, но в реальной жизни все алгоритмы уже реализованы, все типы данных уже подобраны оптимально. Знать их полезно для себя (чтобы мозг не атрофировался), но не для работы. Для работы тебе нужны такие навыки как:

    * Оптимальный баланс между говнокодом и идеальным кодом
    * Оптимальный баланс между скоростью разработки и оптимизацией кода
    * Оптимальный баланс между поддерживаемым кодом и костылями
    * Умение использовать те инструменты, с которыми ты работаешь. Опять же, для того, чтобы писать быстро, при этом имея минимальное количество говнокода и обеспечивая максимальную поддерживаемость (в пределах сроков). Например, можешь выкинуть в помойку свой Vim, как бы круто ты себя не чувствовал, разрабатывая в консольном редакторе, если продукты от JetBrains позволят за это же время сделать что-то лучше или чего-то больше
    * Чувство "знаю больше менеджеров". Это то чувство, когда тебе кажется, что "вот эта фича скоро изменится" и надо сделать архитектуру заранее более гибкой. Или "вот эту фичу мы через месяц выпилим" и не надо тратить на неё силы — напиши костыль и через месяц с чистой совестью удали его
    * Знания, как сделать ту или иную фичу. Потому что фичи повторяются (немного видоизменяясь) от проекта к проекту. И если ты сделал что-то за два дня, в следующий раз ты похожее сделаешь за три часа

    Что касается инструментов, выбери любой полноценный фреймворк, который умеет решать 90%+ потребностей "из коробки": Symfony, Django, Laravel

    Всякие "минималистичные" поделия вроде Falcon, Flask (в PHP не знаю, я на питоне пишу) оставь хипстерам. Пусть они говорят: "Мой фалкон такой быстрый, он написан на Cython". Тебя это не должно волновать, потому что бизнес с твоей скоростью разработки уже заработал достаточно денег, чтобы купить ещё десять серверов, пока фалконисты неделю гуглили, как прикрутить миграциии и запустить юнит-тесты на VPSке за пять баксов.
    Ответ написан
    5 комментариев
  • У вас есть какие-то интересные идеи для проектов, на которые нету времени?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    кроссплатформенную читалку, которая хранит открытые книжки и текущую позицию в указанном месте (cloud, ftp, ssh, etc), чтобы можно было почитать на телефоне, потом перейти на ноут, потом дома на десктопе дочитать и все синкалось само.
    Ответ написан
  • С чего начать создание магазина под SEO?

    Kadzi
    @Kadzi
    Ом
    — Мне нужно SEO, Игорь. Я запускаю прибыльный магазин по продаже белья. Между прочем на ларавель. Вопросы?
    — Я понял, Олег. Скажите, а в чем полезное действие вашего магазина?
    — Ладно, вообщем смотри: есть ниша, постельное белье, уже собиралась семантика, сказали что неправильно. Я как ты понял в вопросе разобрался и вижу, что нужно подготовить структуру и категории.
    — Я вас понял, Олег. Скажите, а чем ваш магазин будет отличаться от тысячи таких же?
    — Ха, ну ты приколист Игорь. У меня белье марки Лёвушка, таких в интернете нет, конкуренции тоже.
    — Я вас понял, Олег. Скажите, а почему вы так часто упоминаете сеошника?
    — Почему, почему! Потому!
    — Вы упомянули, что про сео знаете достаточно мало. А достаточно ли вы знаете про маркетинг? Про информационные архитектуры? Хорошо ли вам известно о продажах? О психологии? — не останавливался Игорь, — О дизайне вам хорошо известно?
    — Не грузи меня Игорь. Ты тупой? У меня есть деньги, товар и идея. Мне нужно сделать правильную структуру, собрать семантику и запустить продвижение. Сложно что ли подсказать как правильно?
    — Я вас понял, Олег. А каково полезное действие магазина?
    — Блин, что за вопрос? Человек ищет товар в интернете, попадает на мой сайт, покупает.
    — А почему покупает? — уточнил Игорь.
    — ДА ПОТОМУЧТО В ТОПЕ! — вскипел Олег.
    — Я вас понял, Олег. А почему вы хотите создать магазин под SEO, а не под людей?
    — Игорь я думал ты разбираешься...Что не понятно то? Чтобы человек нашел мой товар, сайт где должен быть? Во-о-о-т, в ТОПе. А чтобы быть в ТОПе, нужно что? SEO продвижение. Я уже делал магазины и зарабатывал на них, че ты понтуешься тогда?

    ps я устал, но за 10 лайков быть может продолжу :-))
    Ответ написан
    2 комментария
  • Как новичку в IT поступить со своими большими идеями?

    @auoa16
    насколько вообще типична эта ситуация

    Более чем типична

    у меня есть идея грандиозного IT-проекта

    Правильнее сказать, что у вас есть ощущение, что ваш проект грандиозный. Я не знаю ни одного программиста в мире, у которого нет идей "грандиозных" проектов. Помимо программистов, еще десятки миллионов других людей имеют идеи "грандиозных" проектов. В итоге же, из всего количества стартапов выживают спустя 3 года менее 5%. Из них половина работает в небольшой плюс, лишь оставшиеся 2% становятся успешными проектами. Иными словами, даже если ваш проект грандиозный, вероятность того что он станет успешным примерно 2%. Чтобы Вы понимали насколько это мало, просто поставить в рулетке на конкретное число и выиграть намного более вероятно, чем запустить успешный стартап. Только в случае рулетки вы теряете лишь деньги, а в случае с проектом деньги и драгоценные годы.

    но почти нет скиллов в программировании

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

    Что нужно понять?
    1) Понять, что ваша идея это обычная идея, коих в мире миллиарды. Она в среднем не лучше и не хуже других идей.
    2) Понять, что даже если ваша идея потрясающая и даже если вы освоили программирование на уровне лучших инженеров гугла, при этом собрали сильную команду из разработчиков, менеджера продукта, специалиста по маркетингу и т.д., все равно ваши шансы на успех равны 2%.
    3) Понять, что если у вас нет команды из предыдущего пункта, то ваши шансы примерно чуть более 0%.

    Что в таких случаях надо делать?
    1) Получить словесное подтверждение того, что идея чего-то стоит. Например, рассказав о проекте 20и людям, посмотреть сколько из них сочтут вашу идею хотя бы "нормальной", не нужно грандиозной.
    2) Поискать аналоги. С вероятностью 95% вашу идею уже реализовали ранее, проверить популярность продукта, посмотреть в чем различия с вашим виденьем, плюсы/минусы и т.д.
    3) Как только получили предварительное подтверждение, что идея не го*но, пора делать прототип. Тут уже смотрите сами: либо ищите людей, готовых работать на вашу идею, либо сами прокачивайтесь до уровня, позволяющего сделать MVP, либо подзаработайте денег и наймите того, кто сделает MVP.
    4) Как только MVP сделан, пора показывать его людям. Если хотя бы 10 человек будут в восторге от вашего продукта - это успех, можно искать инвестора. Если хотя бы 50 человек будут просто пользоваться без восторга вашим продуктом - можно искать инвестора. Если ваш продукт платный и его купят хотя бы 5 человек - можно начинать искать инвестора.

    Вообще это все сложный путь и с большой долей вероятности он никуда и ни к чему вас не приведет, поэтому не стройте надежд, чтобы было меньше разочарований. В любом случае удачи
    Ответ написан
    8 комментариев
  • Какая в 2019 актуальная смотрелка картинок под Win10?

    FreeMan94
    @FreeMan94
    Frontend developer
    Давно юзаю FastStone Image Viewer, очень много форматов поддерживает.
    Ответ написан
    Комментировать
  • Какова перспектива транслита HTML в ELF?

    DevMan
    @DevMan
    поздравляю, вы решили переизобрести браузер.
    Ответ написан
    3 комментария
  • Что учить front-end разработчику в 2019?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Английский
    Ответ написан
    Комментировать
  • Как получить офлайн-копию современного сайта?

    @BorisKorobkov
    Web developer
    Как получить копию чертежа современного вооружения?

    В эпоху "почтовых ящиков" я получал их копии с помощью микрофотоаппарата. Современные конструкторские бюро используют доступ по биометрии, обыскивают и изымают шпионское оборудование, шифруют данные. Соответственно, старые инструменты вроде подделки документов на пишущей машинке, пленочные фотоаппараты и т.п. уже не актуальны.
    Какие инструменты можно использовать сегодня, чтобы получать копии современной военной техники (с вооружением и без)?
    Ответ написан
    7 комментариев
  • Можно-ли скачать видео с YouTube используя DevTools?

    Есть такая «секретная» ссылка: www.youtube.com/get_video_info?video_id=XXXXXX
    Вместо XXXXXX подставьте хэш видео, который в ссылке на ролик, типа youtu.be/BWCiWZtrWXU после слеша.

    По этой (первой) ссылке вернутся URL-encoded данные. Распакуйте их и возьмите параметр url_encoded_fmt_stream_map. Его значение опять надо распаковать как URL-параметры. И из результата вытащить параметр url – это ссылка на единый скачивабельный видеофайл.

    Например, в консоли браузера:
    function getUrlParams(search) {
        let hashes = search.slice(search.indexOf('?') + 1).split('&')
        let params = {}
        hashes.map(hash => {
            let [key, val] = hash.split('=')
            params[key] = decodeURIComponent(val)
        })
    
        return params
    }
    var s = '------'; // здесь длиннющая строка из ответа /get_video_info
    var a = getUrlParams(s);
    var b = getUrlParams(a.url_encoded_fmt_stream_map);
    console.log(b.url); // эту ссылку открываем в браузере - это скачиваемый видеофайл


    Очень надеюсь, что вы покопаетесь в этих данных более подробно, разберётесь, как получать прямые ссылки на скачиваемые файлы во всех форматах и размерах, которые предлагает YouTube, и напишете короткий материал на Хабр по результатам, а также опубликуете gist с рабочим кодом для консоли браузера.
    Ответ написан
    3 комментария
  • Может ли быть талант к программиованию?

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

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

    https://github.com/it-shark-pro/mobile-school/blob...
    https://github.com/it-shark-pro/mobile-school/blob...
    https://habr.com/ru/company/edison/blog/430126/

    Некоторые страницы содержат примеры мобильных приложений. Можете взять идею и адаптировать под свой стек.
    Ответ написан
    Комментировать
  • Как раскидать файлы по папкам в?

    Jump
    @Jump Куратор тега Windows
    Системный администратор со стажем.
    Как раскидать файлы по папкам?
    Элементарно.
    Считаем хэш файла и записываем в папку по первм символам хэша.

    Например хэш D41D8CD98F00B204E9800998ECF8427E значит файл пишем в папку D
    В итоге файлы будут раскиданы по шестнадцати папкам с именами от 0 до F
    Или пишем файла в папку D и подпапку 4.
    В итоге файлы будут раскиданы по шестнадцати папкам с именами от 0 до F и в каждой папке будет шестнадцать вложенных папок.
    Или можно записать в папку D4 тогда файлы будут раскиданы по 256папкам.
    В общем по первым буквам хэша.

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