• Возможно ли на TensorFlow работать с обычными массивами чисел?

    vabka
    @vabka
    Токсичный шарпист
    Да, возможно. Картинка - это по сути тоже массив чисел, просто очень большой.
    В вашем случае НС будет сильно проще, чем которая определяет оъекты на фото
    Ответ написан
    2 комментария
  • Как сделать правильный выбор между C# и Java?

    MalkovVladimir73
    @MalkovVladimir73
    Fullstack (node + vue.js)
    Как человек, который 1.5 года учился java, а потом вышел работать с C# - точно могу сказать, разница несущественна. Специалисту всё равно какой инструмент он использует. Хотите наиболее производительное мобильное приложение - используете java, хотите desktop windows, вэб бэкенд, игры - C# (имхо). ML - python. Микроконтроллеры - C (C++). Хотите делать качественное ПО для всего вышеперечисленного, тогда я вам огорчу, серебряной пули нет придется использовать разные инструменты, но с опытом, вы поймёте, что различия весьма преувеличены.
    Ответ написан
    2 комментария
  • Откуда быстрее получать информацию, mysql или файл?

    @ollisso
    Способы решения:
    1. читаем из файла всегда
    2. читаем 1 раз, храним где либо:
    2.1. в БД
    2.2. в xml или csv
    2.4. в json
    2.5. в виде пхп кода

    Для того чтобы ответить на вопрос, нужно знать следующее:
    1. как часто читается файл после обновления, насколько это критично чтобы работало быстро ?
    2. Размер файла
    3. Как именно читается - нужно читать все строки из него, или всего несколько?
    4. Что с файлом дальше делается ? Например если после чтения выводим просто хтмл реестр, то почему бы его сразу не готовить, и не хранить его?
    5. Ссколько много времени на разработку.

    Простой пример кейса:
    система уже работает, файл читается 1-2 раза в неделю.
    В данный момент из оригинального файла читается около секунды
    Особых лагов нет.
    На разботку метода конвертация уйдёт 1-2 дня.

    => Выгоды нет по замене

    Другой пример:
    1. файл читается каждый раз раз в секунду.
    2. из файла нужно 1-10 строк всего, по номеру
    3. В файле миллионы строк

    => лучше хранить в базе обычно.

    третий пример:
    1. файл читается каждый раз раз в секунду.
    2. файл нужен всегда весь
    3. В файле миллионы строк

    => лучше хранить в пхп коде

    Т.е. способы хранения данных таковы:

    1. БД
    + быстрая выборка, когда нужно несколько элементов из миллиона
    + можно использвоать в качестве данных для других запросов (джойны и тп)
    - временные издержки

    2. XML/CSV
    + можно использовать как есть, если нужен этот формат для чего либо другого.
    - очень "дорого" парсить файл каджый раз.
    Не рекомендую если нет особых причин

    3. JSON
    + Относительно быстро
    + удобно хранить
    + на некоторых данных быстрее чем ПХП (что странно)
    - надо парсить, опкешеры не помогают
    - невозможно брать только часть элементов. Если нужно 10 строк из миллиона, то придётся брать весь миллион в память.

    4. PHP
    Тут я имею в виду: хранить через var_export и подключать через require/include
    Обязательно: чтобы был APC/opcache
    + быстро
    + удобно хранить. обрабатывать. Получаешь сразу же массив
    - невозможно брать только часть элементов. Если нужно 10 строк из миллиона, то придётся брать весь миллион в память.
    - иногда JSON быстрее

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

    a13xsus
    @a13xsus
    Lazy developer
    Для API < 24:

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

    Uri fileUri = Uri.fromFile(new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/alpha_stmoritz_train.jpg"));
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.putExtra(Intent.EXTRA_STREAM, fileUri);
    intent.setType("image/*");
    intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
    startActivity(Intent.createChooser(intent, "Share Image:"));


    К примеру, открыть фото в галерее. Как это сделать?

    Uri fileUri = Uri.fromFile(new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) +
                    "/alpha_stmoritz_train.jpg"));
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);
    intent.setDataAndType(fileUri, "image/*");
    intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
    startActivity(intent);


    Для Andorid 7 Nougat (API >=24) необходимо использовать FileProvider, т.к. Uri.fromFile() будет вызывать FileUriExposedException.

    1. В AndroidManifest.xml добавляем:
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    и после активити тега:
    <provider
                android:name="android.support.v4.content.FileProvider"
                android:authorities="${applicationId}.provider"
                android:exported="false"
                android:grantUriPermissions="true">
                <meta-data
                    android:name="android.support.FILE_PROVIDER_PATHS"
                    android:resource="@xml/provider_paths"/>
            </provider>


    2. Создаем xml/provider_paths:
    <?xml version="1.0" encoding="utf-8"?>
    <paths xmlns:android="http://schemas.android.com/apk/res/android">
        <root-path name="root" path="." />
    </paths>


    3. Обязательно даем разрешения на Storage для нашего приложения в настройках приложения (либо пишем код, который их будет спрашивать).

    4. Пишем Intent:
    String localUri = "/storage/emulated/0/Pictures/alpha_stmoritz_train.jpg"; //тут уже как хотите так и формируйте путь, хоть через Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + имя файла
    File file = new File(localUri);        
    Uri contentUri = FileProvider.getUriForFile(this, this.getApplicationContext().getPackageName() + ".provider", file);
    Intent openFileIntent = new Intent(Intent.ACTION_VIEW);
    openFileIntent.setDataAndTypeAndNormalize(contentUri, "image/*");
    openFileIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
    startActivity(openFileIntent);


    5. Для поддержки ранних версий API можно написать что-то типа
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
          ...
    } else {
          ...
    }
    Ответ написан
  • Где и как используют деревья в программировании?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Деревья везде:)
    Самый банальный пример - дерево поиска, BST, сбалансированное BST(например, красночерное дерево, rb-tree), используется для организации структур, хранящих пары ключ-значение(например имплементация SortedMap - TreeMap в Java).

    Сильно ветвистые сбалансированные деревья (В-дерево), используются для реализации индексов в СУБД

    Дерево решений в машинном обучении, используется для принятия решений. Развитие идеи - случайный лес, использование множества деревьев решений.

    Хэш-дерево, или дерево Меркла - в блокчейнах для хранения транзакций.

    Префиксное дерево - для хранения и поиска ключей-строк

    Октодеревья, q-деревья в играх и графике для разбиения пространства на области.

    Даже вьюхи в большинстве GUI фреймворков организуются в виде деревьев.

    И это я ещё далеко не всё перечислил, 100%
    Ответ написан
    Комментировать
  • Почему в Котлине отказались частично от примитивов?

    vabka
    @vabka
    Токсичный шарпист
    1. в котлине отказались от null, тк это знаменитая ошибка на миллиард долларов
    2. От примитивов не отказывались - они называются basic types
    Ответ написан
    8 комментариев
  • Есть ли резон переучиться на программиста?

    php666
    @php666
    PHP-макака
    В IT, если говорить о простых исполнителях, мало кому нужны люди за 40 - они в силу возраста работают медленнее, чем программисты 25+ лет. Кто бы что не говорил и не писал на профильных сайтах о 90-летних программистах.

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

    Легче в такси устроиться.

    Основой посыл - более высокая зарплата
    Высокая зарплата - это миф. Она не дается просто так. Это результат многих лет изучения и практики, это путь длинной во многие годы.
    Ответ написан
    1 комментарий
  • Объясните пожалуйста 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. в вопросе процитирована какая-то белиберда. Не читай ты книги на русском по андроиду.
    Ответ написан
    Комментировать
  • Где широта, а где долгота яндекс карты?

    forgotten
    @forgotten
    Руководитель разработки API Яндекс.Карт
    Широт больше 90 не бывает ;)
    Ответ написан
    4 комментария
  • Где широта, а где долгота яндекс карты?

    SagePtr
    @SagePtr
    Еда - это святое
    Учитывая, что широта не может быть больше 90 градусов, думаю, ответ очевиден.
    Ответ написан
    Комментировать
  • Какая марка смартфонов лучше подходит для debugging в Android studio?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Для отладки на реальных устройствах надо иметь десяток самых распространённых устройств.
    Ответ написан
    3 комментария
  • Какая марка смартфонов лучше подходит для debugging в Android studio?

    GavriKos
    @GavriKos
    Есть парк из пары десятков разных девайсов. Ни на одном нет проблем. И на ксайоми тоже.
    Ответ написан
    1 комментарий
  • Куда лучше податься: ios или android?

    zoo
    @zoo
    Сначала android, поднакопите денег — ios, потом будете знать всю подноготную обеих платформ и смело делать кроссплатформенные приложения. Я иду по такому пути, хотя в последнее время зацепили игры, так что работаю с unity3d. На самом деле, раньше тоже было ощущение, что нужно было начинать с ios, обусловлено это «пафосом» вокруг этой платформы, а так же зп у спецов на 10-20% больше, т.к. в России опытных ios-прогеров днем с огнем не найти. Да еще эти байки, мол на android не заработать — на мой взгляд, у платформы большое будущее, на крайняк можно перейти в java-прогера, а вот Obj-C будет обузой, имхо.
    Ответ написан
    Комментировать
  • Куда лучше податься: ios или android?

    charon
    @charon
    для бедных — только Андроид. Абсолютно все эпловские штуки раскрывают свой потенциал только при использовании комплекта эпловской техники. Эмуляторы, хакинтоши и прочее — это фигня и мучения. Для иОс — только Мак, без вариантов.
    Ответ написан
    Комментировать
  • В каком случае лучше использовать абстрактный класс, а в каком интерфейсы?

    @Barmunk
    Интерфейс нужно создавать, если ты архитектор, и в дальнейшем остальные работники будут наследовать свои классы только от этого интерфейса/ов. Тем самым ты можешь рулить масштабированием всего проекта.

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

    valerium
    @valerium
    Изобретая велосипед
    Абстрактный класс реализует часть своих методов, а часть требует реализовать у потомков. Интерфейс же не делает вообще ничего, вся логика целиком перекладывается на плечи потомков.

    UPD. Интерфейсы, имхо, удобно использовать для описания шлюзов. То есть приложение получает данные из разрозненных источников в самых разных форматах, и не хочет об этих форматах ничего знать. А абстрактные классы хороши для описания родственных сущность, например, организации с различной формой собственности (им всем потребуется метод для валидации ИНН и запроса адреса регистрации с сайта налоговой). Но вообще, повторюсь, грань тонка.
    Ответ написан
    2 комментария
  • Retrofit 2, POST запрос(multipart/form-data) как передать параметры?

    @morotkin Автор вопроса
    В общем сделал так и заработало:

    интерфейс
    public interface APIv1 {
    
        @Multipart
        @POST("/api/v1/order/create")
        Call<ResponseBody> SendOrder(@PartMap Map<String, RequestBody> params);
    
    }


    упаковка параметров:
    RequestBody rb;
            LinkedHashMap<String, RequestBody> mp= new LinkedHashMap<>();
    
            rb = RequestBody.create(MediaType.parse("text/plain"), String.valueOf((int)OrderProducts.getBoxSumm()));
            mp.put("price", rb);
    
            rb = RequestBody.create(MediaType.parse("text/plain"), "1");
            mp.put("number_person", rb);
    
            rb = RequestBody.create(MediaType.parse("text/plain"), "cash");
            mp.put("payment_type", rb);
    
            rb = RequestBody.create(MediaType.parse("text/plain"), "yes");
            mp.put("delivery", rb);
    
            rb = RequestBody.create(MediaType.parse("text/plain"), this.clientname);
            mp.put("client[name]", rb);
    
            rb = RequestBody.create(MediaType.parse("text/plain"), this.clientphone);
            mp.put("client[phone]", rb);
    
            rb = RequestBody.create(MediaType.parse("text/plain"), this.clientaddress);
            mp.put("client[address]", rb);
    
            List<OrderProducts> orderProducts = OrderProducts.getOrderProductsNew();
            for (int i = 0; i < orderProducts.size(); i++) {
                OrderProducts p = orderProducts.get(i);
    
                Product product = Product.getProductById(p.productid);
                if (product != null) {
    
                    rb = RequestBody.create(MediaType.parse("text/plain"), String.valueOf(product.extid));
                    mp.put("products["+ String.valueOf(i)+"][product_id]", rb);
    
                    rb = RequestBody.create(MediaType.parse("text/plain"), String.valueOf(p.amount));
                    mp.put("products["+ String.valueOf(i)+"][amount]", rb);
    
                }
            }


    выполнение запроса:
    Call<ResponseBody> call = intface.SendOrder(mp);
    
            call.enqueue(new Callback<ResponseBody>() {
                @Override
                public void onResponse(Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
                    Log.v("Upload", "success");
                }
    
                @Override
                public void onFailure(Call<ResponseBody> call, Throwable t) {
                    Log.e("Upload error:", t.getMessage());
                }
            });
    Ответ написан
    Комментировать
  • Разработка web-сервисов – LAMP (Python/Django) vs. MEAN (Node.js)? Или что-то другое?

    alexsurfer
    @alexsurfer
    Программист Python, Django, PostgreSQL, Golang.
    Если ты учишься и хочешь навыки развить, что бы в будущем тебя кормило программирование, тогда мой совет такой. Начинай изучать python и javascript. Реальность такова, что без js не напишешь фронт, а python имеет множество библиотек под все задачи. Py очень понятный язык, js не очень понятный.

    Есть проект PonyORM + PonyJS + ReactJS https://www.youtube.com/watch?v=6AWL4iSfZXU
    За такими технологиями будущее, python на бэкенде и react на фронте.
    Ответ написан
    3 комментария
  • Как задеплоить Django-проект на beget.com?

    @ivreone
    Данная ошибка возникает на уровне веб-сервера, поэтому debug самого джанго здесь ничего не покажет. Чаще всего она возникает из-за ошибок в файле .htaccess. Если это так, то в разделе https://cp.beget.com/log вы можете включить лог ошибок веб сервера, который будет писаться в папку вашего сайта.

    P.S. Знаю, что для вас наверное это уже не актуально, но может помочь людям которые столкнулись с схожей проблемой.
    Ответ написан
    Комментировать
  • Как выложть сайт созданный на django в интернет?

    solotony
    @solotony
    покоряю пик Балмера
    я кладу на хостинг бегет (простой шаред, никакие ВДС не нужны). подходит любой тариф - WSGI у них включен.

    немного танцев с бубном (с их стандартным руководством) - и все работает. (правда при последнем деплое вылезли проблемы с установкой python3 - не хватало библиотек в юзерспейсе), но их саппорт сам мне python3 поставил)
    Ответ написан
    Комментировать