Задать вопрос
  • Как строить карьеру senior разработчику?

    opium
    @opium
    Просто люблю качественно работать
    вам 33 года уже поздно спрашивать пора уже самому решать что делать в жизни.
    Ответ написан
    3 комментария
  • Объясните пожалуйста getApplicationContext(), getContext(), getBaseContext()?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    getApplicationContext это метод Context'a, возвращающий класс приложения. Если ты расширишь Application, и укажешь этот класс в манифесте, то getApplicationContext вернёт объект этого класса.

    getBaseContext() это метод ContextWrapper'a, который возвращает оборачиваемый Context. ContextWrapper оборачивает произвольный контекст, и проксирует его методы, чтобы как-то изменить поведение.

    getContext() это не метод какого-либо контекста. Это может быть метод View, тогда он вернёт контекст, с которым создана вьюха. Например, Activity или ContextThemeWrapper.
    Или это может быть метод фрагмента, тогда он вернёт активити, к которой приаттачен фрагмент в данный момент.

    Вывод:
    getApplicationContext() когда нужно получить доступ к классу Application, например для реализации графа DI.
    getBaseContext() когда нужно получить доступ к базовому контексту(очень-очень редко. Когда до этого дойдёт, ты, скорее всего, поймёшь, что тебе нужно).
    getContext() когда нужен контекст, но есть только фрагмент/вьюха.

    P.S. в вопросе процитирована какая-то белиберда. Не читай ты книги на русском по андроиду.
    Ответ написан
    Комментировать
  • Есть ли библиотеки на Android позволяющие через WebWiew работать с устройством как нативным кодом?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Можно всё это сделать, написав соответствующие JavaScriptInterface.
    Ответ написан
    Комментировать
  • Не видели похожий сайт?

    DevMan
    @DevMan
    мож и видел.
    но не помню.
    но это не точно.

    vanga mode: https://repl.it/ или jsfiddle.net
    Ответ написан
    1 комментарий
  • Как понять что ты знаешь javascript и готов приступить к изучению фреймворков?

    @dimoff66
    Кратко о себе: Я есть
    Один мальчик не зная javascriipt-а приступил к фреймворкам, нашел себе работу, дорос до тимлида, создал свои курсы, так и не поняв, что он не знал javascript и совершенно не был готов к изучению фреймворка. А время то не вернешь.

    PS Если говорить серьезно, то доказательство существования пудинга в его вкусе. Если пишете работающий код на js - значит знаете на уровне, достаточном для фреймворка. Процесс познания почти бесконечен. Поэтому какой-то точки, где можете сказать "Да, теперь я знаю" не существует. просто получайте удовольствие от изучения и программирования и не парьтесь знаете вы что-то или нет.
    Ответ написан
    Комментировать
  • Кто может посоветовать книгу по Android которая подтянет до уровня junior android develope?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Не надо читать никакие книги по андроиду. Пиши код и читай документацию. Так победишь.
    Ответ написан
    2 комментария
  • Есть ли терминал с соханеием логина, пароля и хоста для быстрого подключения для MacOS?

    DevMan
    @DevMan
    авторизацию по ключу предлагать не буду. но можно:
    - сделать алиасы
    - использовать iterm
    - использовать ещё 100500 программ для этого
    Ответ написан
    Комментировать
  • Как архитектурно правильно управлять пагинацией?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    PagedListAdapter, серьёзно? Гугол в очередной раз родил какую-то хренотень. Похоже, создатели RecyclerView не рассказали автору этой либы, что адаптер никакого отношения к получению данных(коим, конечно, является пагинация) не имеет.

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

    Конец.

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

    P.S. статья использует Rx в качестве фреймворка коллбеков. Божественно.
    Ответ написан
    2 комментария
  • Выбор ноутбука для программирования?

    Zoominger
    @Zoominger Куратор тега Ноутбуки
    System Integrator
    MacBook.
    Ответ написан
    Комментировать
  • Какие технологии андроид-разработки актуальны в 2020?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Я бы сказал
    Kotlin, RxJava+RxAndroid+RxKotlin, Conductor, Dagger 2, Retrofit+okhttp, Moshi, Glide, AdapterDelegates, Timber, Firebase, SQLDelight. Может что-то забыл, но на первое время точно хватит.

    Ещё сейчас форсятся корутины, почти везде есть к ним биндинги. Но я бы не стал, не нравятся они мне. Пользуюсь только по необходимости (мультиплатформа).
    Либы, которые форсят архитектуру, имхо, нафиг, проще писать руками, ничего там такого сложного нет. Но Architecture components можно посмотреть, иногда полезно. И архитектуры выбранной придерживаться.

    Jetpack compose не так чтобы production-ready, хоть его и форсят из всех углов.
    Flutter от всего этого сбоку находится, там своя атмосфера, пишут на Dart, и с обычным приложением это всё плюс-минус несовместимо.
    splitties посмотрел, полезно, но, имхо, в любом более-менее крупном проекте возникнет своя библиотека экстеншнов, а искать на каждый чик там зависимость.. ну такое. Проще за пару минут своё написать.
    Ответ написан
    3 комментария
  • Почему не работает setOnItemClickListener в ListView?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Не надо использовать ListView. Используй RecyclerView. Обработчик кликов ставь непосредственное на вьюху.
    В твоей случае, я думаю, одна из вьюх перехватывает клики(чекбокс, наверное).
    Ответ написан
    6 комментариев
  • Почему последнее время в Разработке такие маленькие зарплаты?

    Zoominger
    @Zoominger
    System Integrator
    Лол, а что вы хотели-то?

    Вместо людей, пришедших в IT по призванию и добившихся успеха многолетним тяжким трудом, подкреплённым истинным фанатизмом и любовью к своему труду (это я про себя, да), в сферу ломанулось стадо откровенно глупеньких и недалёких вайтишников, которые насосались пропаганды от курсоводов про "триста тыщ на удалёнки на пехепе нинапригаясь", причём оглянитесь - этих балбесиков даже не переубедить, они свято верят, что в IT деньги раздают просто так и что веб - это лежать под пальмами с Макпуком и пить коктейли, которые подносят мулатки. По факту же вместо Мальдив - хрущёвка, вместо Макпука - убогий Хлаоми, а вместо мулаток и коктейлей - мамка с чаем из пакетика.

    И да:
    условно говоря юниор средняя около 30-40к

    15-20k. Рублей. В мегаполисе. В галере с полной загрузкой.
    Ответ написан
    6 комментариев
  • Возможно ли установить библиотеку tchar.h на macOS?

    @ivanpizhenko
    Software Engineer
    tchar.h это не библиотека, это один из заголовочных файлов, входящих в состав Microsoft C Runtime Library. Cоответствено, доступен только на Windows. Вам просто нужен Windows. Вот что можно сделать.

    Бесплатный вариант. Установите VirtualBox, создайте учетную запись Microsoft, зарегистрируйтесь в Windows Insider Program (это программа публичного бета тестирования Windows), вы получите возможность скачать и установить экспериментальную сборку Windows. Для регулярного использования я бы не рекомендовал, но для ваших учебных целей подойдет. Далее в VirtualBox создаете виртульную машину, устанавливаете в нее Windows, при установке вводите свою учетную запись Microsoft. Далее устанавливаете в Windows Visual Studio 2019 Community Edition, в установщике выбираете обязательно что-то вроде "Desktop C++ Workload". Далее запускаете студию и тоже вводите свою учетную запись Microsoft - это дает бесплатную лицензию на студию Community Edition. И пользуйтесь на здоровье.

    Платные альтернативы - за определенные деньги можно завести облачный сервер с Windows в службах Amazon AWS, Microsoft Azure, Google Cloud, Digital Ocean, Alibaba Cloud - изучите расценки и выберите где подешевле. Чтобы ну хоть как-то боле-менее можно было работать, а не вечно "тормозить", минимум 2 проц и 4гб памяти, лучше 8гб (это кстати также касается варианта вм, описанного выше). Если не будете держать сервер включеным постоянно, то много денег не набежит. После того как ваш курс закончился и сервер вам больше не нужен, его можно удалить полностью (при выключенныом сервере тоже взымается плата, как правило относительно небольшая, за виртуальный жесткий диск). Поделючаться с помощью Remote Desktop (но это на Windows, на маке я уверен есть аналоги).
    Ответ написан
    Комментировать
  • В сфере IT для новичков нет перспектив?

    prrrrrrr
    @prrrrrrr
    Верстаю сразу на PHP.
    ...а требования (по знаниям и опыту) как к высококвалифицированному специалисту

    всё правильно. помощник для того чтобы помогать программисту делать то, что делает он, и использовать те технологии которые использует он.
    у меня есть тоже знакомый который постоянно проситься ко мне "помощником" за копейки, но нафиг он мне нужен если он в программировании 0. в чём он сможет мне помогать? отвлекать?

    Ну как начать работу, если никуда не берут

    для начала нужно как минимум что то знать
    Ответ написан
    7 комментариев
  • Попинайте. Работодатель сказал, что у меня код PHP устаревший. В чем именно проблемы?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В общем да, на первый взгляд этот код производит ужасное впечатление
    Тут даже не 2010-е, тут скорее 1990-е

    По пунктам
    - конструктор, совпадающий с именем класса, уже отсутствует в языке
    - в конструктор передается бессмысленная переменная дб, которая нигде не используется
    - функции вида formField() - это явно какой-то адок и инъекции
    - про mysql_query уже сказали
    - про собаку уже сказали. причём она здесь не нужна, mysql_query практически не выдаёт ошибок
    - die ( mysql_error () ); - это вообще зашквар. Я кстати однажды наблюдал результат похожего кода на тостере много лет назад, хе-хе. На боевом сайте системные сообщения об ошибках никогда не должны выводиться в браузер. Вообще, это родовая ошибка похапешников, сохранившаяся до наших дней - у них все ошибки в обязательном порядке обрабатываются здесь и сейчас. В то время как код приложения должен только выбросить ошибку, а обрабатываться все ошибки должны централизованно, в другом месте.

    Однако есть и хорошее.
    Сам по себе класс неплохой, и довольно грамотный ООП в целом.
    пожалуй, надо только подправить синтаксис, и задействовать какой-нибудь осмысленный объект $db, чтобы запрос выполнялся как-то так

    function addPlace($place) {
        $query = "INSERT INTO place
            (name,english, countryID, globalRatingID, typeID, worldPartID, datecreated,
            datelastmodified,datepublished,permissionLevel,tansliterated)
            VALUES (
            (:name,:english, :countryID, :globalRatingID, :typeID, :worldPartID, now(),now(),
            now(),:permissionLevel,:tansliterated)";
        $this->db->query($query, [
            'name' => $place->getName(),
            'english' =>$place->getEnglish(),
            // и так далее, всё массивом
        ]);
        return true;
    }
    Ответ написан
    2 комментария
  • На чем написать rest api для kanban доски?

    @ghostiam
    На Go писатель, серверов пинатель.
    На GO, "православный" стек, это стандартный пакет net/http + какой нибудь внешний роутер, например chi, либо вообще не http/rest, а gRPC (если мы говорим об API).
    Для БД чистый SQL, максимум какой нибудь маппер на структуру, типа sqlx(можно ещё использовать sql builder, но в IDE Goland хорошая поддержка чистого sql).

    ORM очень не советую, есть конечно gorm(генерирует запросы не эффективно, N+1 при связях), для мелких проектов хватит, но вот со сложными запросами любая ORM не справляется.
    Я категорически против ORM, так как за всё время моей работы в вебе, в любом проекте, самым слабым звеном всегда была ORM(долбит кучей запросов БД, когда на чистом sql это 1-2 запроса), либо программист, вместо того, чтобы написать запрос вида "SELECT SUM(amount) FROM book WHERE author = 'Petya'", достаёт все записи и суммирует это в коде(делает работу за БД + тратит ресурсы БД на чтение данных с диска и передачу их по сети).

    Не нужно использовать фреймворки, это не даст опыта написания на go(как и в большинстве языков).
    Go используют, где производительности других решений не достаточно, или нужна многопоточность, что фреймворки так себе обеспечивают.
    Шаблоны в go практически не использую, пишу фронт на vuejs и обращаюсь к go api.
    Есть генераторы документаций, но я тут не посоветую, их нужно тестировать отдельно, у каждого есть свои плюсы и минусы, сам использую другое решение(опишу в конце).

    Самое главное, побыстрее понять, что на go нужно писать как на go, а не так как привыкли в других языках, потому-что, в нём нет привычных классов, строгая типизация, процесс живёт долго и могут быть race condition(гонка состояний) при многопотоке(веб сервер многопоточный), поэтому о подходах из php советую поскорее забыть.

    В своих проектах(в проде), использую go только как сервис предоставляющий апи. Недавно начал использовать grpc-gateway(так как использую gRPC, но так же необходимо делать API доступное через web), проект позволяет описать всё что необходимо в proto файлах (см. gRPC), сгенерировать модели и обёртки под большенство языков + документацию в OpenAPI 2.0. Это не фреймворк, это обёртка над стандартным net/http, которая сразу валидирует и маппит данные на структуру.

    Коротко:
    Для новичка, советую забыть про фреймворки(они не помогут в изучении) и ORM(не эффективно).

    Использовать для веб сервера:
    net/http - встроен в го
    chi(проще) или gorilla/mux - роутер

    Для взаимодействия с БД:
    sqlx - обёртка над стандартным пакетом sql, но позволяет сразу считывать данные в структуру, без ручного сканирования.
    Ответ написан
    3 комментария
  • Залитый ноутбук. Как это скрыть?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Что было однажды, может и не повториться. Но что случилось дважды, обязательно случится и в третий раз.

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

    А скрыть - очевидно, обманом, это либо заказать ремонт, либо самостоятельный ремонт, либо покупка ноута / его частей, либо подставить кого-то, чтобы он попал на бабки, а не вы и т.д. Всё это гадко и не стоит того, чтобы оставшуюся часть жизни считать себя какашкой. Даже в случае увольнения вы сами будете продолжать помнить, кто вы. Вспоминать не приятно, делиться с кем-то - тоже. Оно вам надо, такой багаж иметь? Лучше честно рассказать, и дай бог вас снова простят, но если нет - придётся расплачиваться. Это в любом случае придется делать, вопрос лишь в цене - деньгами или частичкой своей души. Что дешевле?
    Ответ написан
    Комментировать
  • Какой модуль комментариев выбрать для будущего сайта?

    anton_reut
    @anton_reut
    Начинающий веб-разработчик
    5f58c43040f8e807350228.png
    Ответ написан
    Комментировать
  • Как чистить macbook 16?

    lamer350
    @lamer350
    กำลังสูงสุด
    Ну я вообще раз в год меняю термопасту и чищу от пыли самостоятельно (после того как отвалилась дискретка на старом макбуке лет 6-7 назад из за перегрева), купите хорошие отвертки по типу Xiaomi MiJia Wiha Precision Screwdriver, там есть все необходимое, а самое главное качество бит, так как дешевые китайские слизывают болты по итоге после пары разборов...
    Клаву вы не разберете, разве что по кнопке снимать - что опасно, так как скорее всего какие то кнопки поломаете. Купите баллончик с сжатым воздухом и продуйте, есть даже инструкция епла как для бабочки продувать, для ваших ножниц я думаю можно точно так же сделать, благо высота кнопок больше и мусору есть место где вылетать)
    Касательно термопаст, ну может в первый год можно и не лазить пока, так как нужно будет снять плату полностью... Но если руки откуда надо и есть желание то стоит купить так же хорошую пасту, по типу mx-4 (главное не жидкий метал, лекции читать тут не буду, но на всякий предупреждаю, НЕ НАДО) и заменить.
    Ответ написан
    1 комментарий
  • Куда двигаться дальше?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Дальше двигаться нужно исключительно в одном направлении - учиться пользоваться поиском и анализировать уже существующие миллионы ответов.
    Постоянно такое ощущение, что вы ждете волшебной карты, хотя все уже расписано.
    Постоянно ощущение, что ищут путь полегче, хотя везде указано что нет секретного ингредиента. Просто пишешь и пишешь.
    Постоянно такое ощущение, что человек еще не начал даже работать, а уже хочет делать именно то, что делают профессионалы.

    Научитесь пользоваться поиском. Реально ведь все ответы уже есть. Без этого навыка все остальные будут даваться с большим трудом.
    Ответ написан
    Комментировать