Задать вопрос
  • Почему нельзя создать приложение на habr?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    5fbfa4be54dee863355942.png
    Что из этих строчек не понятно?
    Ответ написан
    8 комментариев
  • Почему V::set() не является членом "V"? В чем ошибка?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В чем ошибка?

    В том, что в классе объявлено void set(int) а определяется -- void V::set(). Объявление должно соответствовать определению.
    Ответ написан
    1 комментарий
  • Как найти сумму чисел на промежутке от 1 до n(n вводит пользователь), шаг 1?

    Завести счетчик (переменная) и в цикле от 1 до n прибавлять к счетчику единицу.
    Либо испльзовать формулу подсчета суммы для арифметической прогрессии.
    Ответ написан
    Комментировать
  • Closure Vs Common Function pointer?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Если лямбда или анонимный класс не используют переменных из объемлющей области видимости, то компилятор не станет их захватывать и разницы со ссылкой на метод не будет. Чтобы убедиться в этом, проведём эксперимент. Нам понадобится три класса:
    import java.util.function.Supplier;
    
    public class ExampleWithMethodRef {
        private static String someMethod() {
            return "Internal value";
        }
    
        public static void main(String[] args) {
            String value = "External value";
            Supplier<String> lambda = ExampleWithMethodRef::someMethod;
        }
    }

    import java.util.function.Supplier;
    
    public class ExampleWithLambda {
        public static void main(String[] args) {
            String value = "External value";
            Supplier<String> lambda = () -> "Internal value";
        }
    }

    import java.util.function.Supplier;
    
    public class ExampleWithCapturingLambda {
        public static void main(String[] args) {
            String value = "External value";
            Supplier<String> lambda = () -> value;
        }
    }

    Скомпилируем все три и запустим с параметром -Djdk.internal.lambda.dumpProxyClasses=. В рабочем каталоге появятся классы, в которые разворачиваются лямбды и ссылки на методы. Посмотрим, что у них внутри:

    javap -p -c ExampleWithMethodRef$$Lambda$1
    final class ExampleWithMethodRef$$Lambda$1 implements java.util.function.Supplier {                       
      private ExampleWithMethodRef$$Lambda$1();                                                               
        Code:                                                                                                 
           0: aload_0                                                                                         
           1: invokespecial #10                 // Method java/lang/Object."<init>":()V                       
           4: return                                                                                          
                                                                                                              
      public java.lang.Object get();                                                                          
        Code:                                                                                                 
           0: invokestatic  #19                 // Method ExampleWithMethodRef.someMethod:()Ljava/lang/String;
           3: areturn                                                                                         
    }


    javap -p -c ExampleWithLambda$$Lambda$1
    final class ExampleWithLambda$$Lambda$1 implements java.util.function.Supplier {                          
      private ExampleWithLambda$$Lambda$1();                                                                  
        Code:                                                                                                 
           0: aload_0                                                                                         
           1: invokespecial #10                 // Method java/lang/Object."<init>":()V                       
           4: return                                                                                          
                                                                                                              
      public java.lang.Object get();                                                                          
        Code:                                                                                                 
           0: invokestatic  #19                 // Method ExampleWithLambda.lambda$main$0:()Ljava/lang/String;
           3: areturn                                                                                         
    }


    javap -p -c ExampleWithCapturingLambda$$Lambda$1
    final class ExampleWithCapturingLambda$$Lambda$1 implements java.util.function.Supplier {                                            
      private final java.lang.String arg$1;
                                                                                                                                         
      private ExampleWithCapturingLambda$$Lambda$1(java.lang.String);                                                                    
        Code:                                                                                                                            
           0: aload_0                                                                                                                    
           1: invokespecial #13                 // Method java/lang/Object."<init>":()V                                                  
           4: aload_0                                                                                                                    
           5: aload_1                                                                                                                    
           6: putfield      #15                 // Field arg$1:Ljava/lang/String;                                                        
           9: return                                                                                                                     
                                                                                                                                         
      private static java.util.function.Supplier get$Lambda(java.lang.String);                                                           
        Code:                                                                                                                            
           0: new           #2                  // class ExampleWithCapturingLambda$$Lambda$1                                            
           3: dup                                                                                                                        
           4: aload_0                                                                                                                    
           5: invokespecial #19                 // Method "<init>":(Ljava/lang/String;)V                                                 
           8: areturn                                                                                                                    
                                                                                                                                         
      public java.lang.Object get();                                                                                                     
        Code:                                                                                                                            
           0: aload_0                                                                                                                    
           1: getfield      #15                 // Field arg$1:Ljava/lang/String;                                                        
           4: invokestatic  #28                 // Method ExampleWithCapturingLambda.lambda$main$0:(Ljava/lang/String;)Ljava/lang/String;
           7: areturn                                                                                                                    
    }


    Невооружённым глазом видно, что байткод вариантов со ссылкой на метод и лямбдой, не использующей переменную, идентичен, в обоих случаях происходит обращение в пул констант. Но если лямбда обращается к переменной, то в прокси-классе появляется поле arg$1, содержащее значение захватываемой переменной. Формально это влияет на потребление памяти, но если вы не собираетесь генерировать лямбды миллионами, то это влияние которым можно пренебречь, тем более во времена, когда даже на мобильных устройствах объёмы памяти измеряются гигабайтами.
    Ответ написан
    1 комментарий
  • Как найти машинную бесконечность?

    @Mercury13
    Программист на «си с крестами» и не только
    Важный вопрос: есть ли неявная единица и денормализованные числа?
    Считаем, что всё-таки есть, порядок несмещённый, записан дополнительным кодом, денормализованное число записывается 10…00 в порядке. (А то всяко бывает, в нашем родном float порядок смещён на 01…11).
    Тогда максимальное число, которое можно записать, равняется 1,1…1112·22^13−1.
    Ну а бесконечность — примерно 2·22^13−1 = 22^13.
    Wolfram Alpha говорит, что это 1,091·102466.
    Ответ написан
    5 комментариев
  • С помощью Retrofit2 пытаюсь получить и вывести png. Но он упрямо выдает NullPointerExeption?

    Jacen11
    @Jacen11
    Вообще не понимаю что вы тут за хрень творите. Glide или пикасо используйте для загрузки картинки.

    Где нпе вылетает? что за классы используются? где нормальные логи? почему поток байтов должен внезапно декадироваться в битмап из пнг? что вообще происходит?
    Ответ написан
    Комментировать
  • Минимум знаний для андроид приложения?

    alekseyHunter
    @alekseyHunter
    Android developer
    Если нажать на кнопку, скажем "А", то счётчик будет считать сколько раз на была нажата.
    И затем по свайпу куда-то либо в меню чтоб мог смотреть сколько раз та или иная кнопка была нажата.

    Это назвать приложением нельзя.
    Какой минимум знаний нужен чтоб сделать андроид приложение.

    Моя история: На чемпионате дали задание - сделать галерею на Android. До этого момента Android не изучал вообще. Передо мной была Android Studio, Java и 15 минут на сессию для выхода в Интернет. Взял время и пошел гуглить - "Java, создать галерею". В итоге, за 1,5 часа сделал галерею. Надеюсь, понятно объяснил.

    Теперь к решению вопроса:
    1) Android Studio + ЯП Kotlin
    2) Создаешь шаблонный проект
    2) Добавляешь в XML макеты кнопки (Button) и TextView
    3) Создаешь в Activity счетчик
    4) Навешиваешь на каждую кнопку OnClickListener
    5) В обработчике увеличиваешь на единицу твой счетчик и перезаписываешь текст в TextView

    Думаю сделать его на Пайтоне, поскольку некоторое время назад начал его изучать

    Вот не надо запихивать питон, куда не следует. Да, на нем можно писать, но не надо! Отставьте его ML и вебу. Он не для Android разрабатывался. Используй языки программирования, которые предназначены для решения задачи, а не потому, что ты только начал изучать какой-то язык и хочешь на нем попрактиковаться..
    Ответ написан
    3 комментария
  • Как сделать чтобы hint PlainText'a выезжал вверх при нажатии?

    @davidnum95
    Дефолтный material edit text
    https://material.io/develop/android/components/tex...
    Либо попроще
    <android.support.design.widget.TextInputLayout
        android:id="@+id/text_input_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Label">
    
        <EditText
            android:id="@+id/edit_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text" />
    
    </android.support.design.widget.TextInputLayout>
    Ответ написан
    Комментировать
  • Как создать цилиндрическую винтовую линию?

    @inFureal
    Смотри, используешь формулу для спирали
    espiral.png
    И двигаешь по оси Z. Чем чаще ты вызовы, тем плотнее точки, соединяешь и рисуешь
    Ответ написан
    1 комментарий
  • Какие есть сферы в системном программировании?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Относится.
    Но вот зачем такие вещи спрашивать?

    Если вы настолько не разбираетесь в ИТ, что не понимаете сферы, то какой смысл этим интересоваться?
    Если интересуетесь, то просто изучайте что-нибудь, в процессе все это узнаете.

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

    @dmshar
    Хотелось бы уточнить, если позовлите.

    Я новичок в нейронных сетях, как и в машинном обучении в целом. Поэтому хотелось бы получить как можно больше подробностей, спасибо


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

    А поскольку хотелось бы знать, на какой уровень подготовки ориентировать свой краткий ответ, расскажите пожалуйста, что по теме вы уже прочитали, какие книжки (не научную фантастику, а по теме) или с какими видеокурсами вы уже ознакомились, и главное - что конкретно осталось непонятным. Это поможет людям тут немножко сэкономить свое время для более полного удовлетворения вашего запроса.
    Ждем.
    Ответ написан
    Комментировать
  • Как повернуть n-мерный вектор на заданный угол?

    GavriKos
    @GavriKos
    Умножить его на матрицу поворота соответствующей размерности:
    https://ru.wikipedia.org/wiki/Матрица_поворота
    Ответ написан
    Комментировать
  • Если способ научится читать исходники без головной боли?

    Adamos
    @Adamos
    Чтобы уверенно читать исходники, нужно, во-первых, несколько лет их писать.
    Тогда вы сможете понимать логику пишущих и узнавать популярные решения.
    Вместо исследования письма Чужих к Хищнику.
    Ответ написан
    Комментировать
  • Не могу понять почему работает последняя исключения?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Числа с плавающей точкой подчиняются стандарту IEEE-754.

    Если v > 0 и h == 0, то v/h == INFINITY. Гарантировано, что INFINITY > 0.5.
    Если v < 0 и h == 0, то v/h == -INFINITY. Для него -INFINITY < 0.5.
    Если v == 0 и h == 0, то v/h == NaN. Для него любое сравнение, ЕМНИП, возвращает false.

    INFINITY -- бесконечность, у нее тип double/float

    https://en.wikipedia.org/wiki/Division_by_zero#In_...
    Ответ написан
    Комментировать
  • Как ускорить этот код(клеточный автомат)?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    В общем смысле, как я вижу по твоему коду, ты вляпался в True Sharing, попутно обмазавшись Cache Misses и окончательно убив свою производительность с помощью неоправданно огромного размера клеток.

    8Б на клетку, состояние которой может поместиться в 1Б, это действительно огромный размер.
    enum CellState : uint8_t уменьшит размер состояния с 4Б до 1Б. А еще этот тип стоит переименовать, т.к. это не CellState, а что-то относящееся к поведению клетки. А вот CellState будет выглядеть так:
    // Renamed from `CellState`.
    enum CellBehavior : uint8_t
    {
        Empty,
        Alive,
    };
    
    struct CellState final
    {
    	CellBehavior	current_behavior : 4;
    	CellBehavior	next_behavior : 4;
    };

    Это позволяет уменьшить размер клетки до 1 байта.

    Данные оперативной памяти процессор подтягивает к себе во внутренний кэш. Кэшей у процессора много и все они связаны. Кэш процессора поделен на линии, работа с которыми синхронизируется между ядрами процессора. Вот именно тут появляется два термина: False cacheline sharing и True cacheline sharing. Если "False", то обрабатываемые разными ядрами данные разделены в разные кэш-линии. Когда "True" - требуемые разным ядрам данные находятся в одной кэш-линии и привет синхронизация. А это ой как медленно.

    В каждом процессоре сегодня сидит гадалка, которая предсказывает какие тебе надо подтянуть данные из RAM в CPU Cache. Выборка из RAM - это довольно долгая процедура, поэтому нужна гадалка чтобы предсказать что судьбой твоего алгоритма предначертано выбрать на следующем этапе. Бывает что гадалка ошибается и тогда твой лагоритм встает в синхронизацию до завершения нужной выборки из памяти. А это - еще медленнее чем синхронизация по кэш-линиям. Это называется промахом по кэшу - cache miss.
    К счастью, это не гадалка виновата в своей ошибке, а ты просто неправильно написал лагоритм. Вот чтобы из лагоритма сделать алгоритм, следует озаботиться чтобы он был более лоялен к гадалке и кэшу процессора.

    Докину еще немного полезной информации.
    Сходи к Адаму Мартину и к Unity, посмотри на парадигму ES/ESP/ECS. Изучи DOD. Попробуй реорганизацию из твоего текущего потока сущностей с полями в потоки полей сущностей. Переделай батчинг обработки клеток так, чтобы данные не синхронизировались между ядрами процессора.
    Возможно тебе еще поможет понимание подхода Out of line, т.к. там хорошо объясняется почему очень большие объекты при их поточной обработке - это не очень дружественно кэшу процессора.
    Еще сюда можно добавить информацию о автоматической векторизации. Это позволит задействовать SIMD инструкции для твоего кода. DOD очень элегантно ложится для обработки твоих клеток SIMD командами.

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

    @koperagen
    val map = "AABCFD".groupBy { it }
    // {A=[A, A], B=[B], C=[C], F=[F], D=[D]}
    Ответ написан
    Комментировать
  • Android не открывается http приложение. Что делать?

    Jacen11
    @Jacen11
    держи
    https://habr.com/ru/post/173469/
    https://habr.com/ru/post/460221/

    еще подобное побольше поизучай
    Ответ написан
    Комментировать
  • ListView может в 2 колонки выводиться?

    iLLuzor
    @iLLuzor
    Java, Kotlin, Android Developer
    RecyclerView + GridLayoutManager
    Ответ написан
    Комментировать
  • Как получить значения с Android context?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Андроид-приложение написано на Java, а не на андроид.
    Ты с Java переписываешь на Java?
    Ответ написан
    3 комментария