• Какие книги почитать по параллельному программированию на Scala?

    denisftw
    @denisftw
    Зависит от целей. Если нужно получить теоретический обзор по всем возможным подходам, то да, можно посмотреть на книгу "Learning Concurrent Programming in Scala", которую написал Александр Прокопец из EPFL. Если интересуют более практические вещи, то это конечно лишнее.

    По большому счету, основная абстракция для организации асинхронной обработки в Scala - это Future. Они типизированы, они composable, они поддерживаются практически всеми mainstream-библиотеками, описаны практически в любой книге по Scala 2.10+. Основной их минус - это то что они не lazy by design, из-за чего начинают сразу выполняться и требуют ExecutionContext для большинства операций. У Typelevel-тусовки есть множество альтернатив, которые этого недостатка лишены - ScalaZ Task, FS2 Task и наконец, Monix Task (кстати, очень хорошая документация - https://monix.io/docs/2x/eval/task.html).

    Akka, как таковая, конечно не является альтарнативой Future'ам - и применяться должна весьма ограничено: Actor'ы не типизированные, не composable. Основной их use case - это долгоживущие процессы с изменяемым состоянием. STM и блокировки на Scala практически никто не использует.
    Ответ написан
    Комментировать
  • Как посчитать БЖУ?

    hint000
    @hint000
    у админа три руки
    https://www.google.com/search?q=линейная+алгебра+п...
    https://ru.wikipedia.org/wiki/Матрица_перехода
    gre=11.7*pro+2.7*fat+75*cbh
    egg=12.7*pro+11.5*fat+0.7*cbh
    sal=1.4*pro+90*fat+0*cbh
    Матрица перехода:
    11.7 2.7 75
    12.7 11.5 0.7
    1.4 90 0
    Нужно вычислить обратную матрицу и умножить эту обратную на искомый столбец (100, 50, 150). Не забыть, что за единицу измерения взяли 100 г.
    Ответ написан
  • Есть пример как оформить репозиторий для портфолио?

    vabka
    @vabka
    Токсичный шарпист
    1. Сделай в репе всё что можешь сделать. Тоесть например тесты, настроенный ci/cd, и прочее такое.
    Бейджики, что тесты прошли/не прошли
    2. Полностью опиши проект, что это такое, и как его у себя задеплоить. В идеале какой-нибудь автоматизированный скрипт (например через Docker)
    3. Добавь скрины и ссылку на демку, если это возможно.
    4. Если проект сложный, то напиши документацию о том, что и где там есть.
    5. Естественно, опиши в отдельном разделе все используемые технологии, и для чего они использовались.
    Ответ написан
    1 комментарий
  • Git: объясните «на пальцах» разницу между rebase и cherry-pick?

    Все красиво объяснил Nkly777, только в блоке PS merge с rebase перепутаны.
    Добавлю картинок.

    git rebase devel - собачка на молнии - "сшивает" коммиты по дате их создания
    (ветка devel "растворяется" в основной ветке)
    518b8dbce1cd4f96b30de9782ae38fcd.png
    git merge devel - пожарная лестница, все коммиты ветки devel крепятся в конец, образуется пересечение
    (devel остается отдельной веткой, к которой можно вернуться)
    1ba8186d879d46ff85ea7c1e192328e2.png
    git chery-pick idea - забрать коммиты из ветки idea
    2717e3091f644ef2954aa2de4514f446.png
    Ответ написан
    2 комментария
  • Зачем учить jvm языки кроме Java?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    время идет, мир меняется, а в месте с этим и потребности к продуктам, например сейчас сильно увеличилось количество фреймворков/инструментов требуемых для среднего разработчика, железо также сильно изменилось с тех времен когда разрабатывалась джава, стали массового распространены многоядерные системы, в обыденность вошли продукты которые работают на кластерах и тд. Scala - разработан чтоб упростить нарастающую сложность.
    при этом Scala - это не better java, это не про ООП или ФП, это язык практикующий в первую очередь практичный/прагматичный подход, стремящийся упростить работу с фреймворками, многоядерными системами, кластерами, различными платформами (компилироваться в js, нативно компилироваться и работать без jvm, работа с видеокартами и тд).
    И как любой прагматичный язык, он позволяют работать с ним таким образом, как кто-то уже привык работать, например работать как с Java.
    один из примеров упрощения : типы в скала, автоматически выводятся, их не обязательно указывать, из-за чего легко можно эксперементировать с кодом и его рефакторить, все зависимости по типам будут автоматически выводится сами.
    Например зная интерфейсы Scala коллекций ты автоматически знаешь интерфейсы подавляющей части существующих в экосистеме фреймворков (общие интерфейсы).
    Также ты можешь код разработанный как однопоточный, перенести на многопоточную среду, а затем и на кластер, и тд.
    Есть простые схемы для создания собственных элегантных домен специфичных языков (используя перегрузку операторов, неявные параметры, неявные функции, автоматическую конвертацию типов).
    Ответ написан
    Комментировать
  • Где посмотреть открытые вкладки на других устройствах в Google Chrome?

    FiLinX
    @FiLinX
    Знать то - что не придумали ещё..
    автор, решил загадку?
    гугл и Хабр говорит, что их можно увидеть открыв на ПК новую кладку, и где-то там в каком-то меню, должен появится пункт Другие устройства (Other Devices)
    но как я только не пробовал, даже в режиме инкогнито, но так и не увидел нигде такого пункта..
    как же меня это достало.. уу

    пс: порылся в справочном форуме гугла по этой проблеме, но и там как такогого решения не нашёл.. наиболее близкое это вот https://support.google.com/chrome/forum/AAAAP1KN0B...
    ну и да, пункта Другие устройства (Other Devices) давно вроде бы как нет уже, его типо перенесли в хистори..
    вот тут да показываются вкладки открытые на других девайсах chrome://history/syncedTabs
    но это только на в данный момент реально открытых девайсах..
    а вот то, что в управлении синхронизации - их не найти и не убрать никак...
    Ответ написан
    1 комментарий
  • Почему IE 11 ругается на синтаксическую ошибку?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Говорят, IE не поддерживает arrow functions.
    Ответ написан
    3 комментария
  • MySQL запрос из двух таблиц

    seriyPS
    @seriyPS
    Надеюсь эту картинку вы знаете?



    Допустим, таблица A это SELECT * FROM games, а таблица B это SELECT * FROM uploaded_games WHERE user_id = ?.

    Т.е. вам нужно из таблицы A вычесть таблицу B (в терминах теории множеств). На картинке это левый столбец, второй сверху.

    SELECT *
    FROM games as A
    LEFT JOIN uploaded_games as B ON (A.game_id = B.game_id)
    WHERE B.game_id is NULL AND B.user_id = ?
    


    Можно записать более наглядно, но, скорее всего, MySQL его не соптимизирует эффективно

    SELECT *
    FROM games
    WHERE game_id NOT IN (
      SELECT game_id FROM uploaded_games WHERE user_id = ?
    )
    
    Ответ написан
    Комментировать
  • Что делать веб разработчику, если уже всё придумано?

    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 комментария
  • Как правильно разработать структуру плагина для Wordpress?

    @maxus99
    фрилансер
    Я лично использую этот шаблон для своих плагинов - wppb.io (https://tommcfarlin.com/wordpress-plugin-boilerplate/).
    Для маленького плагина структура может быть слишком исчерпывающей, но можете изучить, что-бы понять как нужно делать.

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

    Кроме этого подумайте над кэшированием или выборкой данных в Javascript, потому что если внешний сервер будет тупить и долго отвечать, сайт у Вас так-же будет тупить.
    Ответ написан
    1 комментарий
  • Как организовать работу над Веб-проектом с двух компьютеров?

    DaFive
    @DaFive
    Наладить работу с обоих с синхронизацией внесенных изменений.

    GIT не рассматриваю ввиду разработки в одиночку

    Вам система контроля версий нужна. Кто сказал что гит только для командной разработки? Гит подойдёт как нельзя лучше. И изменения удобно смотреть и не надо кучи плагинов для размещения и заливания файла на удаленный сервер. Запушили ветку, на сервере подтянули, конфликты решили, если потребуется, вот и всё. Не хотите свой гит поднимать? Возьмите битбакет или гитхаб. Для одного человека все бесплатно.

    В PhpStorm есть возможность синхронизации на сервер рабочей директории через sftp или ftp (секция deployment в настройках).
    Ответ написан
    2 комментария
  • FTP-клиент

    seagull
    @seagull
    Очень нравится WinSCP.
    Удобно, есть Portable версия.
    Ответ написан
    3 комментария
  • PHP. Яндекс Карты. Как определить расстояние между двумя точками по дорогам?

    kentovsky
    @kentovsky
    php, js, mysql разработчик
    Можно считать по гугль картам
    $from = "Санкт-Петергубг Ленина 5";
    $to = "Выборг Ленина 20";
    
    $from = urlencode($from);
    $to = urlencode($to);
    
    $data = file_get_contents("http://maps.googleapis.com/maps/api/distancematrix/json?origins=$from&destinations=$to&language=ru-RU&sensor=false");
    
    $data = json_decode($data);
    echo "Откуда: ".$data->destination_addresses[0] . "<br/>" .
         "Куда: ". $data->origin_addresses[0] . "<br/>" .
         "Время: ". $data->rows[0]->elements[0]->distance->text . "<br/>" .
         "Путь: ".$data->rows[0]->elements[0]->duration->text;
    Ответ написан
    1 комментарий
  • Существует ли плагин для создания произвольных опций любого типа с их группированием?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Их не просто 3 десятка, их даже несколько типов есть:

    - родной Customizer API (еще тут, плюс набор компонент kirki)
    - родной Settings API
    - сторонние theme frameworks (Redux, Options Framework, Titan, Unyson, Vafpress и куча других)
    - плагины для работы с метаданными wp_****meta (ACF, Pods, CMB2 и прочие)
    Ответ написан
    7 комментариев
  • Решение для развертывания и настройки Wordpress?

    Sanes
    @Sanes
    WP-CLI
    Ответ написан
    Комментировать
  • В чем могут помочь js фреймворки(React, Angular)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    C MVC фреймворками все понятно, но они меня не интересуют. А что делать с инструментами, нацеленными больше на фронтенд (React, Angular) ?


    Открою вам страшную тайну - MVC фреймворки как раз на фронтэнд и нацелены, а не на бэкэнд.

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

    Angular - полноценный фреймворк, к которому можно подключить тот же React для вьюх. Используют его в основном при реализации Single Page Application-ов.

    Были ли у вас практические задачи, с которыми мог справиться только js фреймворк? Какие?

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

    Могут ли быть полезны данные инструменты в совместной работе с Rails, например?

    Если брать ангуляр - я его использую только в контексте SPA. Это может быть не все приложение а только какая-то его часть но все же... А для SPA разницы нет вообще на чем бэкэнд реализован. От бэкэнда нужна только апишка.

    Реакт же можно использовать в принципе для построения view на клиенте. Так что можно и его юзать. Зависит от задачи. Скажем если в задачи входит организация работы жирной формы - то лучше взять knockout.js. А если вам нужно рендрить какие-то данные в реалтайме - можно вооружиться реактом.

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

    Куча народу знает jQuery но не знает JS. И это грусть и печаль. Скорее всего если у вас в задачах стоит реализовать слайдер какой или что-то такое то ни Angular ни React вам не нужны. Ну или в контексте сайтиков тоже не особо есть от них польза (только в специфических случаях). А вот если пишите приложения какие-то, можно уже задуматься ибо если вам придется реализовывать весь бойлерплейт, да еще и не будет DI то с высокой долей вероятности (все же нормальные разработчики существуют) вы получите шматок гуано дико связанный и приносящий боль при рефакторинге. А еще использование только jQuery это на 99% отсутствие каких-либо тестов на фронтэнде.

    p.s. Я на ангуляре пишу админки к примеру для своих проектов. Ну и все все все что вписывается в концепцию SPA. Реакт планирую использовать как альтернативу phonegap (react-native вышел), поскольку он является слоем абстракции над формированием представления (за счет промежуточного виртуального DOM).
    Ответ написан
    1 комментарий
  • Какой php фреймворк наиболее прост в освоении?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Самыми быстрыми и максимально простыми считаются микрофреймворки, которые берут начало от рубишной синатры (www.sinatrarb.com/). Они практически не отличаются друг от друга, знаете один знаете все другие на всех других языках). В php популярны два www.slimframework.com и lumen.laravel.com/.

    Как минимум с них стоит начинать изучение если вы до этого с фреймворками не работали.
    Ответ написан
    1 комментарий
  • Как не выводить пустой get в url строку?

    if (!empty($_GET)) {
                $new_get = array_filter($_GET);
                if (count($new_get) < count($_GET)) {
                    $request_uri = parse_url('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], PHP_URL_PATH);
                    header('Location: ' . $request_uri . '?' . http_build_query($new_get));
                    exit;
                }
            }

    Где-нибудь в самом начале страницы или точки входа вставьте, будет чистить любые пустые GET-параметры, и не надо в каждой форме что-то мудрить.
    Ответ написан
    1 комментарий
  • Почему Google Chrome грузит процессор под 100%?

    @asd111
    В Хроме Настройки > Дополнительно > Сброс настроек и удаление вредоносного ПО > Удалить вредоносное ПО > Найти
    Можно ещё нажать "сбросить" в той же вкладке после удаления вирусов.
    https://support.google.com/chrome/answer/2765944?v...
    Ответ написан
    Комментировать