• Отличие DevOps от эникейщика?

    ruddy22
    @ruddy22
    Спасение утопающих — дело рук самих утопающих
    эникейщик - поддержка пользователей компании
    devops - поддержка процессов разработки и релиза ПО
    Ответ написан
    2 комментария
  • Использую услугу VPS. Как проверить защиту авторизации на VPS без влезания в тонкости вопроса?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    ключ на SSH существенно повышает защиту
    Ответ написан
    Комментировать
  • Может ли Линукс работать c жестким диском по сети?

    gbg
    @gbg Куратор тега Linux
    Любые ответы на любые вопросы
    Технологии отдачи диска по сети:
    - iSCSI
    - ATAoE
    - FCoE
    - nbd
    Ответ написан
    2 комментария
  • Возможно ли создавать пользовательские графические интерфейсы для программ написанных на C# .NET, при помощи CSS и HTML?

    @Melz
    Можно, но не нужно. Лучше выучите XAML, там много не надо и все в дизайнере есть. Hover точно можно сделать и вообще кастомизировать до посинения.
    Самое простое - использовать BrowserControl и рендерить ваш хтмл там. Можно еще поднять встроенный сервер и отдавать стразу страницу.

    Как только вы подумаете как вы все это будете обрабатывать ваше желание сразу пройдет.

    Хотя на C# можно и веб-сайты делать.
    Есть Apache Cordova. Есть WinJS если вам хочется использовать контролы.
    Ответ написан
    3 комментария
  • С# уменьшение кода?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    label.Content = (Convert.ToInt32(textBox.Text) + Convert.ToInt32(textBox1.Text)).ToString();

    Или функцию написать и использовать её:
    private static string Sum(string a, string b)
    {
      return (Convert.ToInt32(a) + Convert.ToInt32(b)).ToString();
    }

    Или даже так:
    label.Content = Sum(textBox.Text, textBox1.Text);
    label.Content = Sum(textBox.Text, textBox1.Text, textBox2.Text, textBox4.Text);
    
    private static string Sum(params string[] n)
    {
      return n.Sum(itm => Convert.ToInt32(itm)).ToString();
    }


    Еще можно расширение написать, но это только на случай, если сложение чисел в TextBox являются частыми в проекте :-)
    public static class TextBoxExtension
    {
    
      public static string SumWith(this TextBox value, params TextBox[] n)
      {
        return (Convert.ToInt32(value.Text) + n.Sum(itm => Convert.ToInt32(itm.Text))).ToString();
      }
    
    }

    label.Content = textBox.SumWith(textBox1, textBox2, textBox3);

    Либо расширить string:
    public static class StringExtension
    {
    
      public static string SumWith(this string value, params string [] n)
      {
        return (Convert.ToInt32(value) + n.Sum(itm => Convert.ToInt32(itm))).ToString();
      }
    
    }

    label.Content = textBox.Text.SumWith(textBox1.Text);
    Ответ написан
    Комментировать
  • В чем различие между?

    petermzg
    @petermzg
    Самый лучший программист
    function Person(){} - Вы обьявляете функцию с именем Person.
    var person = Person() - Вы вызываете функцию Person и результат сохраняете в переменную person
    var person = new Person()- Вы создаете новый обьект использую функцию-конструктор Person
    Ответ написан
    Комментировать
  • Как поддерживать две версии приложения (платная и бесплатная)?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Можно использовать 2 ветки в репозитории:
    master, master2.

    Но.

    Я бы делал все в одной ветке, просто с помощью опций компиляции отсекал бы нужный функционал в процессе компиляции.

    Т.е нужна платная версия - выставил опцию - получил платную.
    Нужна бесплатная - выставил опцию - получил бесплатную.
    Соответственно тестировать придется 2 версии одновременно.
    Ответ написан
    3 комментария
  • C# конкатенация строк?

    newross
    @newross
    Product owner
    Используйте параметры команды вместо конкатенации.
    var commandText = "UPDATE Sales.Store SET Demographics = @demographics WHERE CustomerID = @ID;";
    
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand(commandText, connection);
            command.Parameters.AddWithValue("@ID", customerID);
            command.Parameters.AddWithValue("@demographics", demoXml);
    
            connection.Open();
            command.ExecuteNonQuery();
        }
    Ответ написан
    1 комментарий
  • Как на лету добавлять столбцы в базу данных?

    @dmitryKovalskiy
    программист средней руки
    А что вы понимаете под "на лету"? Реакция на некое действие пользователя? Для 99,9% случаев - такое поведение не нужно. Нужно чуть чуть пересмотреть задачу и сделать без добавки столбцов. БД - вещь в высокой степени статичная должна быть. Исходя из этого можно заниматься ее оптимизацией работы.

    Ну а если вы хотите накатывать обновления без остановки приложения, то банального ALTER TABLE вам должно хватить.
    Ответ написан
    2 комментария
  • Почему char занимает 1 байт, а строка с одним символом - 2 байта?

    @redakoc
    Существует 2 типа строк:

    Типа С.
    Тип Паскаль.

    К языкам это не имеет отношения: язык Паскаль может использовать строки типа С, язык С может использовать строки типа Паскаль. Название просто исторически возникло, т.к. изначально в С и Паскале были только одного вида строки (разные, такие как описано ниже).

    Строка типа С - это массив байтов, заканчивающийся нулем. То есть строка не может содержать символ с кодом 0 (не числом 0, а символ с кодом 0, нулевой байт). Длина строки всегда = количество символов + 1 байт (с нулевым кодом) в конце строки.

    Строка типа Паскаль в начале хранит 1 байт, указывающий длину строки, затем идет массив символов. Строка может содержать внутри себя символы с кодом 0. Но не может быть длиннее 255 байт. В памяти такая строка занимает те же что и С = число символов в строке + 1 байт в начале, хранящий её длину.

    А еще есть строки UNICODE, UTF8, строки типа Паскаль, где длина указана 2-мя байтами (т.е. максимальная длина 65535 символов в строке).

    Длина таких строк в байтах может быть очень и очень разной. Совсем не соответствующей числу символов. Разница будет не на 1 байт (как в простых строках типа С и типа Паскаль). Более того, например, в UTF8 длина строки в байтах будет зависеть от того, что именно написано. )))

    В наше время я настоятельно рекомендую изучать не простые char, а обратить внимание именно на UNICODE.
    А там вовсе не один байт на один символ. )))))
    Ответ написан
    41 комментарий
  • Почему char занимает 1 байт, а строка с одним символом - 2 байта?

    Djaler
    @Djaler
    Сеньор-помидор
    Все правильно, этот 1 байт занимает символ конца строки '\0'
    Ответ написан
    Комментировать
  • Почему не отрабатывает перегруженный конструктор класса?

    @MiiNiPaa
    Потому что это copy-initialization. Чтобы она работала, нужен конструктор копирования который умеет принимать в качестве параметра временные обекты. (даже учитывая то что он не будут вызван благодаря copy-elision)

    Edit: en.cppreference.com/w/cpp/language/copy_initialization
    If T is a class type, and the type of other is different, or if T is non-class type, but the type of other is a class type, user-defined conversion sequences that can convert from the type of other to T (or to a type derived from T if T is a class type and a conversion function is available) are examined and the best one is selected through overload resolution. The result of the conversion, which is a prvalue temporary if a converting constructor was used, is then used to direct-initialize the object. The last step is usually optimized out and the result of the conversion is constructed directly in the memory allocated for the target object, but the appropriate constructor (move or copy) is required to be accessible even though it's not used.
    Грубо говоря сначала то, что справа неявно приводится к типу слева (при помощи конструктора) а потом используется для инициализации переменно с помощью move или copy-конструктора.
    Ответ написан
    Комментировать
  • Администрирование Linux - актуально ли?

    athacker
    @athacker
    Если собираетесь куда-то из города валить, или есть потенциальная возможность устроиться в такое место, где будут нужны юниксовые сервера и прочие нано-технологии, то начать изучать что-то очень просто.

    Придумайте себе сеть организации. С доменами Active Directory, с внутренней почтой (сначала, допустим, на linux/FreeBSD/postfix/dovecot, а потом -- на Exchange, или наоборот), с внутренними DNS и DHCP-серверами.

    С файловыми серверами, доступ к которым на уровне доменных учётных записей и групп распределяется. И запилите эту сеть на виртуальных машинах. Несколько виртуальных серверов Windows/Unix, парочку клиентских станций с виндой/линуксом.

    Поднимите свой веб-сервер, нарисуйте на нём простенький веб-сайт на базе какой-нибудь популярной CMS типа Joomla, Wordpress, чо-там-ещё-нынче-модно.

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

    А потом сделайте так, чтобы VPN-канал между филиалами был зарезервирован через двух разных провайдеров, да причём переключения производились автоматически и абсолютно прозрачно для клиентов. В этом вам поможет динамическая маршрутизация и протоколы OSPF или BGP.

    Факультативно -- можете поднять в удалённом филиале так называемый RoDC -- read-only domain controller :-)

    Вот когда всё это запилите, то приходите за новым заданием.

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

    @MiiNiPaa
    Ошибка. Почему?
    Потому что вы не вызываете оператор присваивания, а совершаете copy-initializtion. Вам может помочь простое правило: все действия совершаемые при объявлении переменной вызывают конструктор.
    Ответ написан
    1 комментарий
  • Что почитать по санитаризации С++ кода?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Не нужно никак код трогать.
    Запускайте проги в виртуальных машинах с ограничением ресурсов.
    Например в QEMU
    Ответ написан
    3 комментария
  • Как получить имя текущего юзера в C++?

    @none7
    Windows ведь. В заголовках фунция определена так:
    BOOL WINAPI GetUserNameW(LPWSTR  lpBuffer, LPDWORD lpnSize);
    BOOL WINAPI GetUserNameA(LPSTR  lpBuffer, LPDWORD lpnSize);
    #ifdef _UNICODE
    #define GetUserName GetUserNameW
    #else
    #define GetUserName GetUserNameA
    #endif

    Решения на выбор:
    • Убрать в настройках компиляции определение _UNICODE
    • Использовать GetUserNameA
    • Переписать с использованием TCHAR, size при этом должен быть sizeof(buffer) / sizeof(*buffer)

    И да asd111 прав буфер обязан быть размером UNLEN+1, иначе может случится переполнение буфера, хоть это и маловероятно.
    Ответ написан
    4 комментария
  • Как конкретного наследника связать с конкретным родителем?

    @balamyt92
    ; select * from users; --
    Ну как то так(сферический код в вакууме):

    COM1.write(Dev1.value)

    или

    Dev1.write(COM1, value)

    это если в общем случает. Без заголовков классов ничего конкретного сказать не могу.
    Вообще есть предположение о том что вы не отличаете экземпляр объекта от его описания.
    Ответ написан
    Комментировать
  • Какие задачи решает реактивное программирование?

    @lega
    wikipedia говорит - в общем распространение изменений, как в формулах exсel таблиц

    Excel - наверно самый показательный пример, когда вы меняете одну ячейку, то все зависимые ячейки пересчитываются (сами), зависимые ячейки от зависимых тоже пересчитываются и т.д. Т.е. получается такой поток/разлив информации. Для реализации исходная ячейка должна обладать списком всех зависимых ячеек (первого уровня/напрямую зависимых).

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

    neatsoft
    @neatsoft
    Life is too short for bad software
    Дикая конкуренция на биржах - миф, многие проекты так и остаются без исполнителя. На прошлой неделе срочно нужен был фронтендер на небольшую задачу с нормальным бюджетом (5 дней - $1000) и перспективой работы на постоянных проектах - найти фрилансера так и не удалось. Заказчик из Европы, адекватный, платежеспособный. Из 30 заявок не оказалось ни одного вменяемого предложения - одни индусы (которые по опыту заказчика на таких проектах лажают в 100% случаев).

    Вещи, на которые необходимо обращать внимание на начальном этапе:
    1. не стоит пристально изучать все описания проектов - установите собственные критерии, и выбирайте только те что нравятся;
    2. описание понравившегося проекта нужно читать внимательно, а в заявке излагать свое понимание задачи (пересказ) и план ее решения;
    3. ставьте реальные сроки захода во фриланс - от 3-х до 6-ти месяцев (такой промежуток времени требуется чтобы детально во всем разобраться и наработать рейтинг);
    4. обещайте меньше, делайте больше;
    5. и самый главный совет - начните прямо сейчас! не нужно бросаться учить английский язык или осваивать модные технологии - все что нужно само придет в процессе работы. Большинству заказчиков совершенно налевать сколько вы делаете ошибок в словах, владеете ли граматикой, и применяете ли паттерны проектирования. Главное - умение эффективно решать поставленные задачи - быстро, и без чрезмерного усложнения.

    ps. Список проектов доступный на бирже - лишь вершина айсберга, там достаточно сложно оценить объем повторных заказов и длительных контрактов. Если первые пол-года потратить с умом, впоследствии расходовать время на поиски проектов больше не придется - будет очередь из заявок на выполнение заказов.

    pps. Ищу опытного фронтендера для совместной работы над интересными проектами. Сам занимаюсь бэкэндом, базами данных, линуксом, архитектурой.
    Ответ написан
    9 комментариев