• Лучшее время дня для усвоения / запоминания новой информации — какое оно?

    @Akela_wolf
    Extreme Programmer
    У каждого человека свое. Кому-то проще всего делать это утром, сразу после пробуждения. Кому-то - после "раскачки", у кого-то активность мозга повышается в середине дня, а у кого-то - вообще к вечеру.

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

    Так что наблюдайте за своим организмом и своим мозгом - они вам дадут ответ лучше чем сотня комментирующих на Тостере.
    Ответ написан
    9 комментариев
  • Что такое абстракция?

    @Akela_wolf
    Extreme Programmer
    Не претендую на истину в последней инстанции, но в моей голове это выглядит так:

    Абстракция - это некоторое обобщение. Например, есть кошка, собака и попугай. Мы можем ввести абстракцию "домашние животные". Добавив в эту конструкцию волка и рысь мы можем ввести абстракцию "дикие животные". А затем ввести абстракцию "животные". А затем "живые существа" и т.д.

    В объектно-ориентированном программировании абстракции принимают форму абстрактных классов и интерфейсов.
    В обобщенном программировании абстракции принимают форму шаблонных классов и функций.
    В функциональном программировании абстракции принимают форму функций высшего порядка.

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

    @Akela_wolf
    Extreme Programmer
    Да, разумеется. Поэтому некоторые Java-программы распространяются в виде установщика, который сразу же ставит вместе с программой и JVM (причем часто в папку программы). Например, так делает JetBrains IDEA.
    Ответ написан
    3 комментария
  • Можно ли создать свой тег html?

    @Akela_wolf
    Extreme Programmer
    Есть такая технология как Web Components. Это то что вы хотите сделать?
    Ответ написан
    Комментировать
  • Как увидеть предыдущий коммит без удаления текущего?

    @Akela_wolf
    Extreme Programmer
    Он не удалился. Прочитайте Git Book, чтобы понимать что делает каждая команда

    Вы сдвинули указатель HEAD на конкретный коммит. Теперь сделайте git checkout master (если основная ветка master, что скорее всего) и наблюдайте оба коммита.
    Ответ написан
    1 комментарий
  • Как создать список разделенный по классам?

    @Akela_wolf
    Extreme Programmer
    ORDER BY klass, podklass отсортирует так что будут овощи, затем фрукты. А строить вот такую древовидную структуру MySQL не умеет, придется это делать вручную на PHP
    Ответ написан
    1 комментарий
  • Вывод двух различный значений из двух разных таблицах, связанных третьей?

    @Akela_wolf
    Extreme Programmer
    JOIN

    Если что - JOIN можно объединять в цепочку, то есть table1 JOIN table2 ON ... JOIN table3 ON ...
    Ответ написан
    Комментировать
  • Как переименовать java в jar?

    @Akela_wolf
    Extreme Programmer
    "Как переименовать .txt в .exe чтобы он двойным кликом открывался?"

    Это называется не "переименовать", а "скомпилировать". Про вашу IDE не скажу, но вообще в целом это делается так:
    1. Компилируете java-файлы в классы (.class) используя javac (не java, а именно javac - компилятор)
    2. Добавляете к этому набору классов файл манифеста
    3. Опционально добавляете туда зависимости (если нужен fat jar)
    4. Собираете все это в zip-архив
    5. Меняете расширение на jar


    В более-менее сложных проектах это все автоматизируется системой сборки, такой как gradle или maven.
    Ответ написан
    2 комментария
  • Как обновлять только часть кода автоматически, чтобы страница не перезагружалась?

    @Akela_wolf
    Extreme Programmer
    На PHP - никак.

    Чтобы такое сделать, нужно выделить отдачу обновляемого фрагмента в отдельный url и реализовать обновление на стороне клиента, используя Javascript

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

    @Akela_wolf
    Extreme Programmer
    Критерий знания языка программирования - практика. Ты знаешь язык программирования когда можешь читать код других программистов на этом языке (и тебе понятно что они хотели выразить этими конструкциями) и писать свои программы. Знание библиотек относится к предметной области (скажем знание Spring Boot полезно в области веб-разработки, но бесполезно для программирования под Android) и напрямую к "языку программирования" не относится.

    Я бы не советовал скакать по языкам программирования. Лучше знать 1-2 языка глубоко, чем иметь поверхностное представление о десятке разных. Выберите интересный проект - игру, сайт, полезную утилиту (список дел, учет бюджета, каталог книг и т.п.) и реализуйте её. Считайте это одним из экзаменов на знание языка. Ну и не советую учить язык "просто так". Язык лучше всего учить "под задачу". Скажем ассемблер - это что-то низкоуровневое (как вариант, возьмите Arduino и пишите на асме для него).
    Ответ написан
    Комментировать
  • Как дозаполнить корректно поля для Entity при конвертации из DTO?

    @Akela_wolf
    Extreme Programmer
    Да ктож знает-то кроме вас? Может быть у вас есть разумные значения по умолчанию. Может быть у вас есть какой-то источник данных (настройки, шаблоны и т.д.). Может быть это вообще ситуация ошибки.
    Ответ написан
  • Java кодировки из windows-1251 в utf-8?

    @Akela_wolf
    Extreme Programmer
    windows-1251 не использует unicode. Это старая кодировка, из тех времен, когда юникода еще даже не существовало (наряду с cp866, koi-8r и другими)

    Латиница же работает потому что кодовые таблицы для латиницы в ASCII, windows-1251 и utf-8 совпадают (то есть один и тот же символ кодируется одним и тем же числом из диапазона 0-127)
    А для кириллицы - нет, числа кодирующее кириллический символ в windows-1251 и в utf-8 разные (если точнее, то в windows-1251 это будет одно число, а в utf-8 - пара чисел)
    Ответ написан
    1 комментарий
  • Нарушает ли переопределение конструктора принцип подстановки Лисков в частных случаях?

    @Akela_wolf
    Extreme Programmer
    Нет, не нарушает. Принцип подстановки Лисков говорит о том, что клиент не должен видеть разницы между базовым объектом (в вашем случае интерфейсом) и его потомком. То есть потомки должны соблюдать контракт, определенный предком (могут делать его строже, но не слабее)

    Конструктор не является частью интерфейса, поэтому переопределение конструктора никак принцип подстановки Лисков нарушать не будет.
    Ответ написан
    3 комментария
  • Сколько раз будет выделена память?

    @Akela_wolf
    Extreme Programmer
    Конечно нет, массив же создается при инициализации цикла.
    Ответ написан
    Комментировать
  • Как правильно реализовать структуру таблицы mysql?

    @Akela_wolf
    Extreme Programmer
    Если у новости одна картинка - можно прямо в таблицу новости засунуть (кстати, а модерируется только картинка? Сама новость не проходит модерацию?)

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

    @Akela_wolf
    Extreme Programmer
    От сложного к простому:
    1. Программирование в машинных кодах. "Что такое имя переменной?". А нету его, как вы правильно заметили. На уровне машинного кода есть только циферки. Переменные могут храниться в регистрах процессора или в оперативной памяти по какому-то адресу. И программист должен везде указывать код регистра или адрес памяти к которому обращается программа. Впрочем, программирование в машинных кодах осталось далеко в прошлом (с появлением языков ассемблера, это конец 40-х).
    2. Язык ассемблера. Тут можно задать псевдонимы для адресов памяти. Но это именно псевдонимы. Так как на ассемблере программист полностью контролирует память программы - он сам решает какой блок памяти как называть. В процессе сборки ассемблер заменит псевдонимы на реальные адреса памяти.
    3. Языки высокого уровня (такие как C/C++, Паскаль, FORTRAN, LISP и т.п.). Компилятор сам планирует использование памяти и назначает переменным какие-то адреса (может разместить переменную в регистре, может в стеке, может даже в динамической памяти). На этапе компиляции в машинный код помещаются только адреса переменных.

    Собственно на этих исторических этапах имя переменной нигде не хранится. И по коду программы можно понять что в каком-то адресе памяти размещена некая переменная, но узнать её имя (каким оно было в исходном коде) нельзя никаким образом. Впрочем, есть одно исключение - таблица отладочных символов. Это именно то соответствие "имя-адрес", чтобы программисту было проще отлаживать программу. Используя эту таблицу отладчик может "подписать" адреса в памяти, облегчая программисту понимание что происходит внутри программы. Но это касается именно отладки, для работы программы эта таблица не нужна и конечному пользователю, как правило, не предоставляется.

    4. Байт-код. Это касается языков с виртуальными машинами, таких как Java, C# и подобных. Компилятор преобразует текст программы в промежуточный байт-код. И в этом байт-коде могут сохраняться имена переменных (в частности в Java сохраняются имена классов, полей классов, методов классов). Могут - потому что могут и не сохраняться, допустим не сохраняются имена аргументов функций и локальных переменных (в Java, про C# утверждать не буду), в байт-коде на них ссылаются по порядковому номеру. Нужны они в байт-коде для работы механизма рефлексии, то есть когда программа обращается "сама к себе", спрашивая: "Какие свойства есть у этого объекта?" (имеет смысл, например, если объект из какого-нибудь плагина, то есть код на момент своей компиляции об этом объекте и понятия не имел). Но когда виртуальная машина исполняет байт-код, то она преобразует его в машинный код в котором, опять же, каждой переменной сопоставлен какой-то регистр процессора или адрес памяти.

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

    @Akela_wolf
    Extreme Programmer
    Мне кажется, в вашем вопросе не хватает "выбери любые два"

    Безопасность бесплатной не бывает. Если кто-то предоставляет вам услугу бесплатно - значит он как-то зарабатывает на чем-то другом (либо услуга соответствующего качества).

    Чтобы соблюсти пункты 2 и 3 - лучше всего иметь почту на собственном сервере. Но это, разумеется, небесплатно (как в плане оплаты за сервер, так и в плане усилий по настройке/оплаты специалиста)
    Ответ написан
    1 комментарий
  • Почему не могу скопировать свой ssh на другую ноду?

    @Akela_wolf
    Extreme Programmer
    man ssh-copy-id
    -i identity_file

    Use only the key(s) contained in identity_file (rather than looking for identities via ssh-add(1) or in the default_ID_file). If the filename does not end in .pub this is added. If the filename is omitted, the default_ID_file is used.

    Note that this can be used to ensure that the keys copied have the comment one prefers and/or extra options applied, by ensuring that the key file has these set as preferred before the copy is attempted.


    Что вы сказали - то команда и пытается сделать: использовать ключ root@192.168.1.150 которого не находит, о чем вам и сообщает.
    Ответ написан
  • Как правильно реализовать паттерн repository с hibernate?

    @Akela_wolf
    Extreme Programmer
    В случае Spring Boot JPA вам не нужно создавать реализацию интерфейса репозитория. Достаточно написать интерфейс - реализацию спринг создаст сам.

    Если же хочется сделать руками - то да, 4 интерфейса, 4 реализации. У реализаций может быть общий абстрактный предок, в который будет вынесен общий для всех реализаций код (тут generic-и в помощь).

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

    @Akela_wolf
    Extreme Programmer
    "Нуль" - это вопрос выбора точки отсчета. Например у вас есть 2 батарейки по 3 вольта, которые соединены последовательно.
    Если вы выбрали "нулем" отрицательный полюс, то у вас будет +6 вольт.
    Если вы выбрали "нулем" среднюю точку (в которой соединяются батарейки), то у вас будет +3 вольта и -3 вольта (двухполярный источник питания)
    Если вы выбрали нулем положительный полюс, то у вас будет -6 вольт.
    Последнее встречается редко, разве что в каких-то очень специфичных схемах. А вот двухполярный источник с "нулем" в средней точке - вполне.
    Ответ написан
    2 комментария