Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: [code-review] JS галерея, какие замечания?

Лучший ответ:
1. Вы подключили 'use strict'; в самом начале кода. Этим подключением вы можете потенциально сломать чей-то чужой код, который написан без учета новых правил. Ваша первая задача - инкапсулировать свой код. Перенесите внутрь Gallery.
2. Не хватает возможности подключать код как модуль: https://github.com/umdjs/umd
3. throw new Error('I cant find gallery-element on this page'); - не нужно кидать ошибку тут. Ваш плагин должен тихо проверять есть ли нужные элементы, и, если их нет, тихо НЕ запускаться. Мало ли, вдруг его подключат на весь сайт, а галерея будет только на одной из страниц.
4. В остальном код выглядит немного сумбурно. Нет визуального разделения на части, разная функциональность не вынесена в отдельные функции, трудно понять логику и последовательность выполнения. Возможно не хватает немного комментариев. При расширении функциональности через какое-то время поддерживать этот код станет очень тяжело.

Худший ответ:
Добрый день!
1) Для удобства оформите библиотеку как npm пакет.
И что бы этот пакет можно было использовать разными системами сборки, можно использовать формат определения модуля UMD
2) При создании экземпляра const gallery = new Gallery({})  -  неплохо бы иметь доступ к управлению галереей через JS, например:gallery.pause();
gallery.next();
Возможно вам захочется добавлять слайды на лету, это тоже отдельный метод.
3) Так же, можно добавить изменение настроек на лету, gallery.setOptions({})
В связи с этим можно сделать вывод, что нужен более объекто-ориентированный код, то есть вы создаете класс Gallery, который имеет методы для управления, сохраняет свойства себе в контекст (this), например:var defaultOptions = {
  ...
}

privateMethod() {
  ...
}

function Gallery(options) {
  this.options = extend(defaultOptions, options);
  this.interval = this.createInterval();
  ...
}

Gallery.prototype.init = function() {
  ...
}

Gallery.prototype.next = function() {
  ...
}

Gallery.prototype.createInterval= function() {
  ...
}

function extend(a, b) {
  ...
}
То есть, всю логику вы разделяете на отдельные функции, которые являются методами класса Gallery, если нужен публичный доступ к этой логике, либо выносите эти методы и свойства наружу, если их нельзя менять пользователям.
Вопрос: Vuejs и Angular аналоги? В чём разница?

Лучший ответ:
1) vuejs - простой и ненавязчивый фреймворк  который призван максимально просто и тесно взаимодействовать с произвольной версткой, в этом плане он очень похож на angular 1 , только проще, чище и чуть логичнее. При этом оп предоставляет инструменты для  компонентного  подхода(для фанатов клиента)  и даже серверный рендеринг. На мой взгляд  vuejs -  это идеальное решение для быстрой разработки с допустимым уровнем качества.   
2) Backbone - это далеко не библиотека и он в прошлом. Его главный минус - это невозможность управлять поведением dom, если этот dom не был сформирован через backbone-engine. Что делает его почти бесполезным, если только ты не хочешь написать проект , который будет намертво зависеть от выбранного инструмента и в котором будет невероятное множество клинтских шаблонов  
3) React - это скорее концепция + движек для ее реализации,  чем фреймворк Его существенный плюс в том, что  верстка идет с изолированной логикой в паре, но это плюс скорее концептуальный ,  точно также можно поступать и используя jquery в изолированом скоупе прямо в верстке в html- фалах - виджетах (Я пробовал уже после реакта и это очень просто и надежно, но я fullstack и мне от клиента большего не нужно) 
Минус реакта в том, что верстка должна рендериться только через шаблонизатор реакта, это значит что весь проект нужно рендерить через реакт иначе же в проекте будет хаос.  
4) Ember - тоже говорят вещь хорошая, но я бы никогда не выбрал Ember по той же причине что и backbone. 
5) Riot  и еще 50 подобных фреймворков похожи либо на Angular, либо подражают React, либо идут по пути Backbone&Ember или же какие-то "гибридные" со своими фишками. 
6) Angular 2 - я пока не понял его фишку. 
Если рассматривать весь этот зоопарк с точки зрения бизнеса - то лучше выбрать то, что максимально проще и либеральней

Худший ответ:
https://vuejs.org/v2/guide/comparison.html
универсальный гайд как узнать в чем отличия js_framework1 от js_framework2:
1. пишем в адресной строке  "js_framework1 VS js_framework2"
2. нажимаем enter
Вопрос: Debian на флешке — как продлить жизнь?

Лучший ответ:
нахрена козе баян?

Худший ответ:
Проблема решилась сама собой, когда я посмотрел, как ставится ОС на заводских NAS. К примеру Synology откусывает часть харда под себя. Попытался реализовать подобное - не особо вышло. Забил, решил, что лучше просто купить мелкий SSD под ОС, а порты можно и контроллером добавить
Вопрос: Как в ajax сделать так чтоб кликать по рандомному количеству ссылок на странице?

Лучший ответ:
Добавьте всем ссылкам, которые должны обрабатываться, какой-нибудь класс и вместо селектора по id используйте селектор по классу в jq. Параметры для гет запроса получайте из самой ссылки при помощи того же jQuery, создавайте строку запроса динамически, после клика.

Худший ответ:
все может быть проще:$('[data-toggle="myloader"]').on('click',function(e){
    e.preventDefault(); //отменили get
    var url = $(this).attr('href'), // взяли ссылку
          container_selector = $(this).attr('data-container'); // взяли селектор
    $(container_selector).load(url); //отправили ajax, получили html вставили в контейнер
});
Вот и все. Главное у ссылок должен быть data-toggle="myloader" и у каждой свой href и свой data-container, например:<a href="/some/url/to/?hrenEgoZnaet=kuda" data-container="#some_id" data-toggle="myloader">жмакай нежно</a>
Вопрос: Как, при помощи Photoshop, массово сделать картинки квадратными?

Лучший ответ:
Решение проблемы:
1. В текстовом файле создаем скрипт (копируем в него код):var savedRuler= app.preferences.rulerUnits;  
app.preferences.rulerUnits = Units.PIXELS;  
var w = app.activeDocument.width;  
var h = app.activeDocument.height;  
if(w>h) app.activeDocument.resizeCanvas (w, w, AnchorPosition.MIDDLECENTER);  
if(w<h) app.activeDocument.resizeCanvas (h, h, AnchorPosition.MIDDLECENTER);  
//if w==h already square  
app.preferences.rulerUnits = savedRuler;
Сохраняем файл с расширением .js
2. Добавляем скрипт в Photoshop (легко гуглится путь, по которому находится папка Scripts
3. Запускаем photoshop, открываем картинку, которую нужно изменить. Далее Окно>Операции. Создаем и сохраняем Action (последовательность действий, которую в последствии автоматизируем).
4. На основе этого Action создаем Дроплет.
Спасибо ребятам за наводку.
В ютубе наберите: "Создаем дроплет в Photoshop для пакетной обработки фото"
.

Худший ответ:
Есть такая штука, как пакетная обработка фото через дроплет фотошопа. Погуглите, как один из вариантов.
Вопрос: Как присвоить один массив другому (создать копию)?

Лучший ответ:
Добрый день.
array_fill
или$new = $old;

Худший ответ:
Ждем таких же вопросов про стринг и инт.
Вопрос: Провайдер блокирует wifi роутер можно ли как то обойти?

Лучший ответ:
Клонируйте MAC компьютера или откуда происходит соединение

Худший ответ:
Скорее всего провайдер ничего не блокирует, вы просто не настроили роутер корректно.
А техподдержка провайдера не хочет возится с левым оборудованием и предлагает арендовать у них. 
Либо берите у провайдера и он будет его настраивать и гарантировать его работоспособность, либо настраивайте сами.
Вопрос: Не проверяются пароли, в чем проблема?

Лучший ответ:
$password = crypt($_POST['password'], $salt);
Не изобретайте велосипед и откройте для себя эти функции: password_hash, password_verify 
И как уже подсказали выше, нужно проверять длину не хеша пароля, а исходного пароля (у хэша длина в любом случае будет больше 6 символов и проверку он автоматом пройдёт, даже при пустом пароле)

Худший ответ:
Слишком много ветвлений и они слишком сложные. Сделайте класс, функции, и внутри каждой:if(strlen($password) < 6){
  $_SESSION['error'] = 'Password must be at least 6 characters';
  return false;
}
if(strlen($username) < 4){
  $_SESSION['error'] = 'Username must not be less than 4 characters';
  return false;
}
И т.д. для каждого условия своя проверка без else, а если все проверки прошло и нигде не вышло - значит всё ок.
Вопрос: Как можно замостить изображение цветом?

Лучший ответ:
Рисуете SVG-шку.
И... и всё. Дальше как обычноpath:hover { fill: orange; }

Худший ответ:
Использовать либо canvas, либо svg
Вопрос: Как усовершенствовать класс Queue таким образом, чтобы в очереди можно было хранить другие типы данных, например значения типа int или double?

Лучший ответ:
Именно int, double, float, char, byte, long, short - никак. Несмотря на то, что в джаве ООП, эти типы не являются объектами. Они не наследуются от Object'a, у них нет общего предка. Поэтому для них не работают дженерики.
Можно использовать boxed-типы Integer, Double, Float, etc. Тогда можно обобщить тип очереди  в духеclass Queue <T> {
    private T[] q;
   ...
}
...
Queue<Integer> = new Queue<>();

Худший ответ:
Как то так: public class Queue<T> {
  
      T q[]; // Array to storage elements in queue	
      int putloc, getloc;
      
      // indexes of placement and extracting  queue elements
      
      Queue(int size) { q = (T[])new Object[size+1];;
      
      // allocate memory for queue
      
      putloc = getloc = 0; }
      
      // put symbol in queue
      
      void put(T ch) {
        if(putloc==q.length-1) {
          System.out.println(" - Queue is full.");
          return; }
        putloc++;
        q[putloc] = ch; }
      
      // extract symbol from the queue
      
      T get() { 
        if(getloc == putloc) { 
          System.out.println(" - Queue is empty."); 
          return null; } 
        getloc++;
        return q[getloc]; 
        }
    }
Важно понимать что типами в queue могут быть только ссылочные типы:Queue<int> queue = new Queue<>(5);  // не правильно
Queue<Integer> queue = new Queue<>(5); // правильно
Вопрос: Какой java framework посоветуете для gui?

Лучший ответ:
Никакой, не пишите ГУИ на джаве.

Худший ответ:
Используйте js фрэймворк для GUI.(например Angular) На серверной части реализуйте REST API. И будет вам счастье.
Вопрос: Сайт курсов по программированию с практикой?

Лучший ответ:
может оно https://www.codecademy.com ?

Худший ответ:
https://ru.hexlet.io/ не оно ?
Вопрос: Какой стандарт EcmaScript учить, ES6 or ES5?

Лучший ответ:
Учить все шаг за шагом. Стандарт ES6 расширяет стандарт ES5. Для React разработки придется еще изучить экспериментальные фичи пока не добавленные в стандарт, которые используют и транспилируют в валидный код с помощью babel и соответствующих прессетов.

Худший ответ:
Все вместе, на собеседованиях спрашивают оба стандарта
Вопрос: Настраивать DMARC/SPF/DKIM нужно на dns-хостинге или на почтовом сервере?

Лучший ответ:
spf/dkim/dmarc на DNS
dkim ключ генерируется на почтовом сервере
В яндексе откройте редактор DNS там будет ключ. И делайте CNAME запись для mail

Худший ответ:
Изменения следует вносить в действующий DNS. На Яндекс у вас не делегирован домен, а значит настройки DNS там не применяются
Вопрос: Можно ли безпроблемно зашифровать уже зашифрованный файл?

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

Худший ответ:
Ну сбои всегда возможно. Из-за глюков памяти или носителя, например, из-за ошибок в алгоритме шифрования, которые на определенном наборе данных проявляются.
Зашифрованный файл для другого контейнера ничем не отличается от любого другого файла. Только для получения данных эту капусту из шифрований замучаешься разбирать.
Вопрос: Как вывести на печать ВЕСЬ массив матриц?

Лучший ответ:
Если используете numpy, то можно просто:numpy.set_printoptions(threshold=numpy.nan)
В таком случае выводы сразу будут без сокращений.

Худший ответ:
for row in matrix:
    print(' '.join(str(col) for col in row))
Или:print('\n'.join(' '.join(str(col) for col in row) for row in matrix))
Вопрос: Есть ли анонимность если подключаться к интернету с помощью сотового оператора в следующих условиях?

Лучший ответ:
Есть ли анонимность если подключаться к интернету с помощью сотового оператора в следующих условиях?Нет.Сим карта оформлена на самого человека.Если симкарта оформлена на другого человека - в принципе ничего не меняется. Хотя идентифицировать уже сложнее.
Оператор сотовой связи получает следующие данные -Собственно идентификатор симкарты -  и может по базе проверить кому она выдана.Идентификатор телефона - и может по базе посмотреть с какими симкартами этот телефон работал в сети. Если вы  в этот телефон вставляли свою симкарту это тоже легко отследить.Местоположение абонента - точность позиционирования бывает разной, иногда можно сказать с точностью до десятка метров, иногда с точностью до десятка километров. Если вы находитесь в городе, используя историю местоположений можно составить маршрут с точной разбивкой по времени, прогуляться по этому маршруту, и пособирать данные с видеокамер, которых в городе множество, и получить кучу ваших портретов, и узнать места где вы часто бываете.
Кроме этой чисто технической информации сейчас внедряют систему которая сохраняет все СМС, голосовые звонки, и некоторый трафик который был передан с этой симкарты.
Понятно что такое отслеживание процесс сложный,  дорогостоящий, и далеко не всем доступный.
простой участковый или опер, такую информацию не получит, даже если сильно захочет, но в рамках дела может послать запрос, так же эту информацию могут получить спецслужбы, и люди имеющие достаточно серьезные деньги и связи.

Худший ответ:
Вы сами и ответили на свой вопрос - в данном случае никакой анонимности нет.
Вопрос: Легально ли парсить форумы?

Лучший ответ:
Технически скачивать странички вы можете, если не нарушаете работу сайта при этом. А вот распоряжаться полученной информацией уже надообращаться к лицензионным соглашениям и правилам конкретного форума

Худший ответ:
когда не легально - тогда прибыльно
Вопрос: Какая литература подойдёт для новичка в JavaScript?

Лучший ответ:
И снова #посоветуйтекнигу на Тостере.
И снова очередной зародыш программиста спрашивает, что бы ему почитать, посмотреть и послушать.
Видимо, он думает, что программирование - это такое тайное знание и ключ от него лишь у избранных. Он ждёт, что сейчас сюда придут кулхацкеры в солнцезащитных очках и скажут: "Давай мы покажем тебе Матрицу", возьмут его за ручку и поведут к Тайным Знаниям, куда дан вход далеко не всем и только какие-то особые, недоступные другим познания, которые не найти в Гугле, пропустят его туда. Ведь тру-программеры не ищут лёгких путей, всё, что в Гугле - для быдла, а ему нужно только Лучшее.
Ан нет, идите в Гугл.

Худший ответ:
https://learn.javascript.ru/first-steps
https://habr.com/ru/company/ruvds/blog/416375/
Или посмотрите книгу тут по тегам "js", "javascript", "для начинающих", можете выбрать вариант по отзывам.
Вопрос: Как открыть веб-сервер на Node.js для доступа из Интернета?

Лучший ответ:
Как вариант для экспериментов и хомяков:
1. Купить доменное имя (например тут, хотя выбор конечно за вами. В зоне .ru примерно 600 руб в год)
2. Получить статический IP (купить у провайдера, примерно 50р в месяц), либо настроить чтото типа ddns (умеют почти все современные роутеры через свою вэбку).
3. В случае статического IP настроить привязку купленного доменного имени к вашему статическому IP. Для этого порывшись по сайту конторы, продавшей вам доменное имя найти сервис DNS для их клиентов. У большинства пользование таким сервисом бесплатно.
В случае ddns и ему подобных настроить привязку купленного доменного имени к вашей учетке в сервисе ddns
4. Купить что то типа raspbery PI или orange PI, установить на него чтото типа armbian, nodejs, подключить к роутеру, настроить IP в локалке (пункт не обязательный, но удобства неоспоримы, висит себе бесшумно на стене возле роутера, прибитый гвоздем и раздает ваши сайты в нет :). 
5. Прокинуть необходимые порты в роутере на IP вашего сервера (raspbery PI или orange PI) (учтите что внешний порт будет 80 а внутренний на сервере скорее всего 3000. Номер внутреннего порта зависит только от того на каком порту вы запустите ваше nodejs приложение)
6. Профит!!! Как только обновятся DNS записи (от пары минут до суток, в зависимости от выбранного DNS сервиса) вы, и весь мир вместе с вами сможет посетить ваше nodejs приложение по адресу http://ваш_домен.зона/
PS: Далее вам останется только:
1. Озаботится https (Let's Encrypt вам в помощь)
2. Зарегать в вашем домене несколько поддоменов (например forum.ваш_домен.зона, game.ваш_домен.зона, chat.ваш_домен.зона, cloud.ваш_домен.зона). Хорошая новость в том, что у большинства сервисов, содержание вашего доменного имени и регистрация поддоменов бесплатны (если конечно вы их клиент - купили доменное имя у них)
3. Установить на серв nginx и настроить его, чтобы перекидывал http запросы на https, сам проверял сертификаты и чтобы раскидывал входящие запросы по соответствующим сервисам уже в локалке и через http. (можно конечно озадачится чтобы сервисы на node сами свои сертификаты проверяли, но на мой взгляд это бессмысленно, потому что если кто взломает ваш сервер, ему будет глубоко наплевать зашифрованными или нет ходят пакеты между вашим nginx и сервисами на ноде через lo0.

Худший ответ:
Загрузить приложение на сервер, например http://netbreeze.net, или digitaloucean. А дальше уже как архитектуру захотите построить, распределённое приложение клиент-сервер по http или ваш бэк на ноде будет генерить клиентку и отдавать в браузер. Не забудьте о настройке nginx, в доках digitaloucean подробно о настройке сервера.
https://www.digitalocean.com/community/tutorials/n... о Nginx
В качестве сервера лучше использовать Linux (Ubuntu). 
** на вашем компьютере, если что, без покупки статического IP развернуть приложение, чтобы его видели во всём интернете не получится. Да и смысла нет, довольно много проблем с бесперебойной работой сервера, у хостера будет надёжнее.
Вопрос: Какой есть аналог $emit для модулей vuex?

Лучший ответ:
А функция subscribe у стора не решит вашу проблему? Подпишитесь на мутации каким-то обсервером, и по приходу определенной мутации, изменяющей пользователя - каскадом диспатчите экшны для изменения связанных данных.
Или через watch на конкретно блок данных user, аналогично.
Описано в документации скудно, см. раздел API Reference

Худший ответ:
Подписка на мутации решает вашу задачу.
Диспатчите нужные экшены, набивающие стэйты других модулей. В компонентах используйте вотчеры и геттеры.
Если что то не понимаете, не получится. Напишите, вечером буду дома по МСК, накидаю пример.
Вопрос: Где как и когда применять многочлены?

Лучший ответ:
Я не уверен, что понимаю, что значит "решать многочлены" (упрощать их, что ли?). Тем не менее:
Представь, что тебе нужно соединить гладкой кривой несколько точек. Зачем? Для красоты, чтобы не ломаной ) Вот точки в формате (x,y): (0,0),(1,1),(2,0),(3,1), вот решение. Это - одно из бесконечного множества решений, среди прочих оно выделяется тем, что это - многочлен минимальной степени, удовлетворяющий условию. Это очень хорошо - умножать и складывать процесор может гораздо быстрее, чем вычислять, скажем, синусы, и, значит, можно очень быстро вычислить высоту точки на кривой при любом X.

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

Лучший ответ:
Вам нужно протянуть локалку проводом. Я вам это еще в прошлый раз написал.

Худший ответ:
для локальных сетей с файлообменом - ваш вариант самый худший
Вопрос: Что важнее: опыт или диплом?

Лучший ответ:
В 99.99% случаев ваш диплом никому не интересен. 
При этом класть на учебу не стоит.

Худший ответ:
"бесценный многолетний опыт разработки" конечно круче, чем корочка бакалавра.
Вопрос только, будет ли 3 года работы джуном равен бесценному многолетнему опыту?
Пока молод, хотя бы заочно стоит поучиться.
Вопрос: Как сделать так чтобы при нажатии на клавишу окошко программы закрывалось?

Лучший ответ:
Как то так.WinForms
У формы есть событие KeyPress и KeyDown.if(e.KeyChar == 'д')
            {
                Application.Exit();
            }
Или так по событию KeyDownprivate void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if(e.KeyCode == Keys.L)
            {
                Application.Exit();
            }
        }
Если для консоли.Consoledo
        {
           //Тут что надо делать. Или не надо.
        } while (Console.ReadKey().Key != ConsoleKey.L);

Худший ответ:
Искал в своё время такой метод. Нашел, на стаке вроде...
Для WPF.IntPtr hWnd = CloseThisWindow.FindWindowByCaption(IntPtr.Zero, "НАЗВАНИЕ ОКНА");
            bool ret = CloseThisWindow.CloseWindow(hWnd);
Вопрос: Подсчет количества автомобилей для перевозки n пассажиров?

Лучший ответ:
Если нет других ограничений, то [(n-1)/30]+1 30-местных автомобилей.

Худший ответ:
Это вариация на тему задачи об укладке рюкзака. Теоретически она NP-полная. Практически подходы к решению есть: самое простое, конечно отсортировать автомобили по возрастанию удельного коэффициента стоимости поездки ( на человека, то есть
4.2 / 30 = 0.14
1.6 / 7 = 0.22
1.2 /  4 = 0.3
...)
и выбирать автомобили по списку сверху вниз. Однако помним, что так мы можем получить решение, наверное, разумное, но сколько угодно далекое от оптимального.
Вопрос: Какая из малых операционных систем перспективнее?

Лучший ответ:
У перечисленных ОС никаких реальных перспектив нет. Если вас интересуют ОС, отличные от Unix/Linux, добро пожаловать в мир RTOS. Их много: FreeRTOS, RTEMS, QNX, VxWorks, и ещё десятки, всех размеров и сортов, и они активно используются.

Худший ответ:
В каком смысле перспективная?
Нужно понимать, что у каждой ОС есть своя ниша, в которой она живет. Если ниши нет - ОС умирает.
Вопрос: MacBook Pro 13 2012 почему сами собой откручиваются болтики крышки?

Лучший ответ:
1. Купите синий фиксатор резьбы в любом автомагазине
2. https://geektimes.ru/post/157969/

Худший ответ:
Про винтики уже все написали, откручиваются они от вибрации, часто таскаете с собой значит. Вот у байкеров там вообще катастрофа, очень быстро откручиваются причем и внутренние. Если их не протянуть и не зафиксировать.
По поводу характеристик то тут: https://geektimes.ru/post/285624/
Если плату меняли недавно, то в 17 году думаю уже невозможно найти новую плату 12 модельного года. Их давно уже не делают, а запасы на складах ограниченны. Но если она восстановленная официальным ремонтным заводом Apple, то это нестрашно.
Вопрос: Подойдёт ли C++ для создания игр?

Лучший ответ:
Т.е. освоить Unreal - сложно (потому что так на форуме сказали), а написать с нуля игровой движок на C++...почему бы нет?)))
Осваивай Unreal и не парься (и не ищи легких путей).Подойдёт ли C++ для создания игр?
Да.

Худший ответ:
Если вы так уж хотите C++, то на UE свет клином не сошелся. SFML, SDL, Torque 2D. Почитайте эту тему: https://www.reddit.com/r/gamedev/comments/20mgt7/c... погуглите, в конце концов — без этого навыка все равно ничего не выйдет:)
Вопрос: Есть ли возможность выполнить поиск по истории браузера в JS?

Лучший ответ:
Нет. Вам не кажется, что тем самым вы нарушаете приватность?

Худший ответ:
https://developer.mozilla.org/ru/docs/Web/API/Hist... - это про историю браузера.
Если Ваш сайт хочет проверять свое наличие/отсутствие в истории браузера, можно использовать cookie.
Вопрос: Почему нельзя присвоить новое значение переменной в классе?

Лучший ответ:
Потому что код нельзя писать внутри класса вне методов и секций инициализации.

Худший ответ:
Вы уже один раз проинициализировали переменную значением, вне метода насколько мне известно, менять переменную нельзя. В теле метода можете присвоить новое. В рамках класса нет.