• Пытаться изучить несколько технологий === стагнировать по обоим?

    Shull
    @Shull
    хочу быть хорошим IT-шником
    Я учу детишек информатике.
    HTML/CSS, Pascal, Python, JS,PHP,SQL, C#,C++ . . .
    Да, это проблема. Голова идёт кругом. И, как вы догадываетесь, я не специалист ни в одном из этих направлений.
    Ответ написан
    Комментировать
  • Есть у кого диск к книге с исходниками?

    @i_sigor
    зарегистрируйся у них, но не на сайте на издательства , а на их сайте электронно-библиотечной системы Лань и качай - там будет ссылка - приложения к книге.

    https://e.lanbook.com/book/183317
    Ответ написан
    1 комментарий
  • Что почитать про практическое использование на JS?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Варианты практического использования обычно рассматриваются на курсах по JS-фреймворкам (Angular, React, Vue и пр.). Их полно: платные, бесплатные, краткие на ютуп, Эти же те техники можно использовать и для написания программы на чистом JS.
    Что касается плагина. Для чего? Для браузера? Так тоже полно всяких руководств.
    Ответ написан
    Комментировать
  • Как вернуть стиль обратно по клику в js именно таким же способом?

    noder_ss
    @noder_ss
    Линуксоид-энтузиаст и SQL разработчик
    elem.classList.toggle("название-класса")
    Ответ написан
    Комментировать
  • Как правильно разбить код по файлам?

    @oleg_ods
    1) Базовое правило: каждый класс в отдельном файле.

    2) Если класс нарушает SRP из SOLID: разбиваем его на несколько классов.

    3) Если класс нельзя разбить на несколько, но он сильно разросся: разбиваем один класс на несколько файлов через partial. Как пример, можете посмотреть на проект WinForms. Там как раз инициализация компонентов отделена от обработчиков событий через partial.
    Ответ написан
    Комментировать
  • AUX и Jack 3,5 - это одно и то же?

    @Mercury13
    Программист на «си с крестами» и не только
    AUX ≠ Jack 3,5 ≠ наушники.
    1. AUX (неусиленный линейный выход) может быть и другими разъёмами — чаще всего DIN-5 или два RCA. Допустим, в моём самодельном переключателе колонки-наушники на колонки идут два RCA из-за сверхнадёжности, а на наушники — ну, так и быть, джек.
    2. На миниджеке 3,5 мм может быть и микрофон. У микрофонов отдельный механизм работы, и ухи от микрофона отличают омметром — наушник имеет сопротивление около 30 Ом, а микрофон — около 1к. И даже ухи с микрофоном, если джек 4-контактный.
    3. В советской аппаратуре существуют разъёмы для высокоомных наушников, и низкоомные могут плохо работать. (Сомневаюсь, что погорят — для проверки полярности часто берут и подключают к ним батарейку, хотя на AUX меньше вольта.) Впрочем, не видел ни одного устройства, где этот разъём — джек.

    Но в целом разъёмы для современных низкоомных наушников и внешней аудиоаппаратуры электрически сходны, подключай свободно. Могут быть проблемы с громкостью и/или помехами (как у меня в машине — если заряжать смартфон и выводить звук с него на магнитофон, будут помехи, зависящие от оборотов двигателя), но работать будет.
    Ответ написан
    2 комментария
  • Как грамотно использовать this в данном коде?

    @grek_cheburek
    Программист самоучка
    Этот this действует, когда ты на кнопку вешаешь обработчик.
    Вот ты его подвесил, вот внутри него он и действует.
    onclick="alert(this.value);"
    Иначе он не работает.
    Ты можешь в javascript подвесить его, типо так
    btn.onclick = function() {
    alert(this.value);
    }
    Но если ты хочешь, чтобы пользователь нажал любую кнопку и тебе выводило value, да и при чем кнопки могут автоматически создаваться, тогда только класс назначать и через него делать что-то подобное.
    let classlist = document.getElementsByClassName('myclass');
    let classlength = classlist.length-1;
    for (i=0; i<=classlength; i++) {
    classlist[i].onclick = function(e) {
    alert(this.value);
    }
    }


    Что тут произошло.
    1. Получаем список элементов.
    2. Получаем количество элементов и отнимаем единицу, так как отсчет начинается с нуля, а значит последний пункт будет undefined
    3. Запускаем цикл по всем элементам и назначаем им событие onclick
    Ну а дальше выводим в alert value кнопки.

    Надеюсь понятно объяснил.
    Ответ написан
    4 комментария
  • Как прижать footer к низу страницы?

    mizutsune
    @mizutsune
    Frontend Developer
    Это реализуется многими способами, но вот например как можно сделать гридами:

    Разметка:

    <div class="wrapper">
         <header></header>
         <main></main>
         <footer></footer>
    </div>


    Стили:

    .wrapper {
        display: grid;
        grid-template-rows: auto 1fr auto;
        grid-template-columns: 100%;
        min-height: 100vh;
    }
    Ответ написан
    Комментировать
  • Как справиться с выгоранием в профессии?

    @unk1nD000
    Не хотелось бы давать тупые советы, аля ставить маленькие цели и досигать их.
    По этому поделюсь собственными техниками искусства нинзя.

    Занимаясь рутиной и однообразной работой я всегда выгораю и устаю, заняться порой после работы собственными проектами у меня либо нет времени, либо нет сил либо я просто хочу зачилить деструктивно.

    Примерно год назад я начал актвно интересоваться ctf - что это такое легко гуглится. Как это все началось.... Я наткнулся на канал одного рыжего американского ipsec'а который решал задачу на tryhackme. И честно говоря я охренел насколько мало я знаю в этой области и тут же погрузился в такие темы как форензика, шифрование, web, так же мне стал интересен python, захотелось стать бородачем в с++.... итд. Но все мы люди из мяса и такую широкую область как "все подряд" охватить невозможно, и в тоже время постоянно углубляться в одну и туже технологию, язык или область без пропадания к ней интереса невозможно, как по мне.
    Не буду дальше перечислять все свои такие "о как может этот чувак из видоса я хочу так же", а выведу из него небольшую закономерность и пронумерую её нулём и...
    Пункт 0: Поиск объекта заинтересованности.

    Моя корпорация использовала говночат. По вышеописанному методу я узнал про докер, и всякие интересные self-hosted приложения которые можно на нём развернуть. Реализация такой технологи была для меня незнакомой и отточив на тестовых машинах свои навыки, я внедрил в свою организацию сервер с рядом полезных приложений работающих на docker.
    Пункт 1: Реализация полученных знаний на практическом применении.

    После нового года из моего штата ушёл человек занимавший должность эдакого трушного админа, который занимается глобальными вопросами: Сервера, сети, mssql, AD и прочим такими вещами.
    Человека на это место сразу начали искать, предлагая соискателям хорошие деньги, но пока поиски шли я не терял возможность возможность проявить инициативу и взять на себя его задачки. Собственно говоря человек этот оставил за собой кучу нерешенных проблем, сомнительных костылей и «ручной работы». Я их переделал, автоматизировал и собственно получил повышение, значительное повышение. (Без капли преувеличений). Сейчас смотря на плоды своей работы у меня радуется душа и тело, но порой заглядывая в свой старый скрипт я вижу как его улучшить, сделать более гибким итд.
    Пункт 2: Автоматизация всего, что занимает более 2х минут. Усовершенствование имеющихся наработок, используя вновь приобретенные знания. Стремление к совершенству.

    В моём айти отделе работает 7 человек. Два программиста, дежурный админ, два дежурных на удалённых комплексах и чел который старожил-аля-руководитель. Мы постоянно шутим, понимаем шутки друг друга итд, так же в отделе процветает взаимопомощь совместные мозговые штурмы итп. Это сплочает и позволяет чувствовать себя нужным, полезным, сопричастным к общему делу. Всегда, почти всегда, ну или всё же всегда…. Найдётся то, что я делаю лучше коллег или наоборот и обменяться знаниями, шуточками и историями будет отличным подспорьем любить свое ремесло.
    Пункт3: Общение с единомышлениками. Обмен накопленным опытом.

    Я думаю всем знакома ситуация когда на связи та самая тетка у которой опять *Очень легкий вопрос*. В голове глагол на ЗАЕ….. Её проблема решается перезагрузкой или вытаскивание ярлычка из корзины….. Веду я собственно к тому, что зачастую я был приучен решать явление устранением того, что есть, ну а что если я сработаю на опережение?
    Пункт 4: Решение источника проблемы. Работа на опережение.

    Пятница, я еду домой совершенно обессиленный, в голове поесть, поспать, посрать и другие плотские утехи. Казалось бы, выходные пройдут и я снова вернусь улыбчивым на работу. Но вот понедельник, есть работенка, есть задачи, но куда же делся тот я который так смачно жаждал знаний и новых побед? А этот я, точнее эта часть меня залезла глубоко между двух булок одна из которых: «Думать о работе когда надо отдыхать», а вторая: «Постоянно заниматься одним ремеслом». Другой случай, еду я такой же в пятницу как и текстом выше. Приезжаю домой и отлично провожу время в кругу своей жены, утром мы идём в элегантное место %куданибудь%, мило отвлеченно беседуем, обсуждаем проблемы общества, вечерком я надеваю очки и читаю художественную литературу, на следующий день под модный энергичный трек готовлю завтрак и делаю разминку.
    Пункт 5: Работа=Работа. Жизнь=Жизнь. Хобби, увлечения, отвлечения, всему свое время.
    Пункт 6: Рывковый подход. Не идёт – брось на время.

    Подводя итоги хочу сказать, что человек такое существо, что выполняя одни и те же действия вырабатывает дисциплину, привыкает. Чувствуя выгорания стремлюсь всячески разнообразить свои действия, расширить зону привычных вещей, иногда даже делаю то, что мне вовсе не свойственно ради новых ощущений. Надеюсь что мой доклад положительно на вас скажется, коллегаЪ. Похлопайте себя по плечу и не обесценивайте того, чего добились, вы молодец, но не останавливайтесь на достигнутом!
    Ответ написан
    Комментировать
  • Законно ли писать программу из процедур без in/out параметров, которые оперируют глобальными переменными?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Не стреляйте в пианиста - он играет как умеет.

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

    Как я понимаю, программа эта выполняется локально и монопольно, вряд ли многопоточная, и даже допускаю, что не разрешающая одновременного запуска нескольких инстансов (хотя вот это уже совсем предположение). А потому не вижу никаких противнопоказаний к нормальному рефакторингу и получению в конечном итоге приложения, сохранившего весь функционал, но написанного "по науке".

    Сейчас главное - полностью разобраться в том, что и как программа делает, и просто понять, что будет дешевле - модифицировать программу или, при сохранении текущей версии и используя её как основу, написать новую версию с нуля.

    Армянское Радио
    Такие программы пишут или в лютой спешке, или при полном отсутствии опыта - а это больше говорит о работодателе, чем о разработчике программы.

    Такие программы сплошь и рядом начинаются как маленькие приблуды, создаваемые одним работником для себя, для облегчения своей работы и снятия с себя тупой рутины. И работодатель тут вообще никаким боком - он не поручал и не заказывал, оно само родилось. И тут уж как работник смог, так и сделал. И то, что программа не просто работает, но и полезна настолько, что принято решение её развивать и это развитие оплачивать - так это работнику жирный плюс.
    Ответ написан
    2 комментария
  • Как перекодировать utf-8 в windows-1251 на javascript?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Кодировка файла: UTF-8
    Кодировка страницы: windows-1251
    var DMap = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24, 25: 25, 26: 26, 27: 27, 28: 28, 29: 29, 30: 30, 31: 31, 32: 32, 33: 33, 34: 34, 35: 35, 36: 36, 37: 37, 38: 38, 39: 39, 40: 40, 41: 41, 42: 42, 43: 43, 44: 44, 45: 45, 46: 46, 47: 47, 48: 48, 49: 49, 50: 50, 51: 51, 52: 52, 53: 53, 54: 54, 55: 55, 56: 56, 57: 57, 58: 58, 59: 59, 60: 60, 61: 61, 62: 62, 63: 63, 64: 64, 65: 65, 66: 66, 67: 67, 68: 68, 69: 69, 70: 70, 71: 71, 72: 72, 73: 73, 74: 74, 75: 75, 76: 76, 77: 77, 78: 78, 79: 79, 80: 80, 81: 81, 82: 82, 83: 83, 84: 84, 85: 85, 86: 86, 87: 87, 88: 88, 89: 89, 90: 90, 91: 91, 92: 92, 93: 93, 94: 94, 95: 95, 96: 96, 97: 97, 98: 98, 99: 99, 100: 100, 101: 101, 102: 102, 103: 103, 104: 104, 105: 105, 106: 106, 107: 107, 108: 108, 109: 109, 110: 110, 111: 111, 112: 112, 113: 113, 114: 114, 115: 115, 116: 116, 117: 117, 118: 118, 119: 119, 120: 120, 121: 121, 122: 122, 123: 123, 124: 124, 125: 125, 126: 126, 127: 127, 1027: 129, 8225: 135, 1046: 198, 8222: 132, 1047: 199, 1168: 165, 1048: 200, 1113: 154, 1049: 201, 1045: 197, 1050: 202, 1028: 170, 160: 160, 1040: 192, 1051: 203, 164: 164, 166: 166, 167: 167, 169: 169, 171: 171, 172: 172, 173: 173, 174: 174, 1053: 205, 176: 176, 177: 177, 1114: 156, 181: 181, 182: 182, 183: 183, 8221: 148, 187: 187, 1029: 189, 1056: 208, 1057: 209, 1058: 210, 8364: 136, 1112: 188, 1115: 158, 1059: 211, 1060: 212, 1030: 178, 1061: 213, 1062: 214, 1063: 215, 1116: 157, 1064: 216, 1065: 217, 1031: 175, 1066: 218, 1067: 219, 1068: 220, 1069: 221, 1070: 222, 1032: 163, 8226: 149, 1071: 223, 1072: 224, 8482: 153, 1073: 225, 8240: 137, 1118: 162, 1074: 226, 1110: 179, 8230: 133, 1075: 227, 1033: 138, 1076: 228, 1077: 229, 8211: 150, 1078: 230, 1119: 159, 1079: 231, 1042: 194, 1080: 232, 1034: 140, 1025: 168, 1081: 233, 1082: 234, 8212: 151, 1083: 235, 1169: 180, 1084: 236, 1052: 204, 1085: 237, 1035: 142, 1086: 238, 1087: 239, 1088: 240, 1089: 241, 1090: 242, 1036: 141, 1041: 193, 1091: 243, 1092: 244, 8224: 134, 1093: 245, 8470: 185, 1094: 246, 1054: 206, 1095: 247, 1096: 248, 8249: 139, 1097: 249, 1098: 250, 1044: 196, 1099: 251, 1111: 191, 1055: 207, 1100: 252, 1038: 161, 8220: 147, 1101: 253, 8250: 155, 1102: 254, 8216: 145, 1103: 255, 1043: 195, 1105: 184, 1039: 143, 1026: 128, 1106: 144, 8218: 130, 1107: 131, 8217: 146, 1108: 186, 1109: 190}
    
    function unicodeToWin1251_UrlEncoded(s) {
        var L = []
        for (var i=0; i<s.length; i++) {
            var ord = s.charCodeAt(i)
            if (!(ord in DMap))
                throw "Character "+s.charAt(i)+" isn't supported by win1251!";
            L.push('%'+DMap[ord].toString(16));
        }
        return L.join('').toUpperCase();
    }
    alert(decodeURIComponent(unicodeToWin1251_UrlEncoded('тест'))); //тест
    Ответ написан
  • Как отследить модальное окно страницы в расширении chrome?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    MutationObserver

    Ну либо костыль через setInterval().
    Ответ написан
    1 комментарий
  • Как упростить код?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    А почему только до 5ти?

    var items = document.querySelectorAll('#selcheckbox > ul > li > div > ui-state > span')
    for (var i = 0, len = Math.min(items.length, 5); i < len; i+=1) {
      items[i].click()
    }
    
    //Math.min(items.length, 5) на случай если окажется меньше 5ти элементов.


    Если их всегда 5 или нужно нажимать на все, то так можно ещё короче:
    document.querySelectorAll('#selcheckbox > ul > li > div > ui-state > span').forEach(function(i){
      i.click()
    })


    UPD: на основе предложения выше для первых 5ти получаем:
    document.querySelectorAll('#selcheckbox > ul > li:nth-child(-n+5) > div > ui-state > span').forEach(function(i){
      i.click()
    })


    p.s. клик на спане это фиаско. Кнопки где?
    Ответ написан
    2 комментария
  • Как упростить код?

    uDenX
    @uDenX
    PHP Developer
    Вынести в переменную кол-во наследников и подставлять индекс в цикле

    Либо попробуйтеli:nth-child(-n+6)

    https://developer.mozilla.org/ru/docs/Web/CSS/:nth...
    Ответ написан
    4 комментария
  • Как изменить фон textbox в зависимости от пустоты текста в нем?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    input:placeholder-shown {
        border: 1px solid red;
    }

    Если конечно есть placeholder
    Ответ написан
    1 комментарий
  • Тестовые задания по C#?

    Xapu3ma-NN
    @Xapu3ma-NN
    Я делал так. Сказал себе "Хочу написать клиент-сервер, который передает изображение рабочего стола одного компьютера на другой" и побежал в гугл, а оттуда на киберфорум, стэковерфлоу и.т.п. И написал, попутно разбираюсь как реализовать ту функцию или ту. А что будет если я сделаю не как в примере, а вот так ну и тому подобное. Потом сказал "Хочу написать автоапдейтер резюме на hh.ru" ну и алгоритм описан выше :)

    Мне просто было это интересно, и это мотивировало разбираться с языком для решения моей задачи. Тестовые задания я не осилил делать в силу лени и не интересности. Хотя подход в целом можно назвать корявым.)
    Ответ написан
    1 комментарий
  • Как десериализовать xml с последующим заполнением textbox?

    FoggyFinder
    @FoggyFinder
    У вас xml не соответствует классу.

    0) Нет закрывающего тега (полагаю, это опечатка)
    1) В xml описывает вложенный элемент radiostation тогда как в классах этого типа нет
    2) name это аттрибут, а вы пытаетесь десериализовать как элемент.

    В таких случаях проще не писать классы самому а использовать сервисы, такие как Xml2Csharp

    Вставляем xml, получаем

    [XmlRoot(ElementName = "radiostation")]
    public class Radiostation
    {
        [XmlElement(ElementName = "country")]
        public string Country { get; set; }
        [XmlElement(ElementName = "genre")]
        public string Genre { get; set; }
        [XmlElement(ElementName = "subgenre")]
        public string Subgenre { get; set; }
        [XmlElement(ElementName = "title")]
        public string Title { get; set; }
        [XmlElement(ElementName = "urlwww")]
        public string Urlwww { get; set; }
        [XmlElement(ElementName = "ico")]
        public string Ico { get; set; }
        [XmlAttribute(AttributeName = "name")]
        public string Name { get; set; }
    }
    
    [XmlRoot(ElementName = "users")]
    public class Users
    {
        [XmlElement(ElementName = "radiostation")]
        public Radiostation Radiostation { get; set; }
    }


    Ответ написан на предположении что менять структуру классов допустимо, если это не так то уточните этот момент в комментариях.

    Также небольшое замечание относительно метода LoadFile: вы в нем совсем не используете параметр filePath
    Ответ написан
    Комментировать
  • Как правильно открыть главную форму в событии closing C#?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    if (result != DialogResult.Yes)
    {
    f.Show();
    e.Cancel = true;
    }

    Это в дочерней форме - лишнее.
    Обрабатывайте DialogResult в основной форме, после вызова
    Form2 .ShowDialog();
    Там же извлекайте введённые значения.
    Ответ написан
    Комментировать