Задать вопрос
  • Как справиться с выгоранием в профессии?

    @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();
    Там же извлекайте введённые значения.
    Ответ написан
    Комментировать
  • Как в C# сделать метод доступный для любой формы?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    var form = new StForm(this);
    form.Show();

    В дочерней форме

    (Parent as ParentForm).randGetWord()
    Ответ написан
    7 комментариев
  • Как правильно спроектировать приложение на C#?

    @rPman
    Для образовательных целей хранить в БД - нормально

    Используй Dataset, DataBinding и т.п. поддержка всего этого вместе с подключением к базе данных из коробки в интерфейсе visual studio, приложения пишутся почти полностью кликая мышкой в дизайнере.

    Используй упрощенные базы данных в файле - майкрософтовская mdb (это формат microsoft office access, можно создать и редактировать из Libreoffice) или лучше sqlite (нужна будет библиотека и сторонние утилиты для создания, например SQLiteStudio), не придется на старте ковыряться с серьезными базами данных, ну потом почему нет.

    Так же Dataset могут храниться в оперативной памяти и одной командой загружаться и сохраняться в xml файл
    Ответ написан
    Комментировать
  • Как перевести приложение с WinForm на Web?

    @maximsemin23
    Как перевести приложение с WinForm на Web?

    Изучить html, css, js, php
    Ответ написан
    Комментировать
  • Как перевести приложение с WinForm на Web?

    @rPman
    Тебе не понравится результат но возможность есть
    https://github.com/roozbehid/WasmWinforms

    p.s. лучше конечно так не делать, а пилить нормальное веб приложение
    веб и так из-а неадекватно глупых и ленивых разработчиков превратился в лагучее кошмарище, не надо это приумножать.
    Ответ написан
    1 комментарий
  • Как перевести приложение с WinForm на Web?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Посмотрите в сторону телерика или office ui kit. Саму бизнес логику оформите в виде net core api + react там даже есть такой тип шаблона.
    Ответ написан
    Комментировать
  • Как перевести приложение с WinForm на Web?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    WinForm нельзя "перевести" в web. По той простой причине, что оно работает на WinAPI. Все окна, вся графика и взаимодействие контролов работает через WinAPI. Есть, конечно, костыли, которые пытаются обернуть всю эту кашу и заставить работать в Web, но это костыли и их эффективность достаточно мала.

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

    Morpheus_God
    @Morpheus_God
    Получите просто все кнопки с формы.
    var buttons = Form1.Controls.OfType<Button>();
    // получите коллекцию кнопок на форме.
    Ответ написан
    4 комментария
  • Как спроектировать приложение переводчик слов?

    > сделать функциональным подходом (как делал на delphi)
    Это процедурный. Хотя делфи умеет в ООП.
    > (вместо ** ru)
    На этот сайт можно нормальные ссылки давать)
    Я так понял, вы хотите перевод по словам, как в каком-нибудь сократе.
    В вашем случае ок будет завести какой-нибудь класс Translator, который будет иметь метод Translate, который переводит весь текст и возвращает переведённый текст.
    И интерфейс IWordTranslateProvider, который будет предоставлять перевод для каждого слова - можно будет завести реализацию для получения переводов из базы или из файла.
    Потом в GUI вы будете использовать результат, полученный от Translator
    Для Translator тоже можно выделить интерфейс, чтобы можно было переводить не по словам, а, например, использовать API какого-нибудь гугл или яндекс переводчика.
    Ответ написан
    Комментировать