• Где и как искать заказы электронщику?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Что мешает создать цикл статей с плашкой: Вот я, я этим занимаюсь, а вот мой сайт?
    https://habr.com/ru/post/434658/
    Ответ написан
    3 комментария
  • Почему не переопределяется стиль?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Потому что .form-control — это непосредственно сам input должен быть
    Ответ написан
    3 комментария
  • Для чего здесь обрезается строка?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    это попытка получить путь к папке проекта во время отладки, возможно программа использует какие то файлы включенные в проект - txt, json, xml, или еще что либо подобное. такие файлы удобно редактировать прямо в студии, во время разработки, но они не копируются в папку бинарного кода автоматически. а по задумке разработчика, вероятно, они должны лежать вместе с исполняемым фалом. может это конфиги.

    ps в точности для этого сценария, есть и встроенный способ - открываем свойства любого такого файла, и там есть пунктик копировать в выходную папку

    но если программа, во время работы изменяет содержимое дополнительных файлов, и его надо сохранить. тогда доступ в папку проекта - то что надо
    Ответ написан
    Комментировать
  • Как передать данные для строго типизированного частичного представления или для _Layout.cshtml?

    Valeriy1991
    @Valeriy1991
    Разработчик .NET C# (ASP.NET MVC) в Alfa-B, Moscow
    Добрый день!
    Используя
    @{Html.RenderPartial("_Navigation");}
    Вы просто отображаете представление.

    Чтобы передать модель в представление, нужно эту модель сформировать. Модель лучше сформировать в методе действия, например, так:
    [HttpGet]
    public ActionResult Navigation()
    {
    	List<MyClass> classes = new List<MyClass>();
    	classes.Add(new MyClass() { Id = 1, Name = "item 1" });
    	classes.Add(new MyClass() { Id = 2, Name = "item 2" });
    	classes.Add(new MyClass() { Id = 3, Name = "item 3" });
    	
    	return View("_Navigation", classes);
    }


    Теперь Вам нужно заменить
    @{Html.RenderPartial("_Navigation");}
    на это:
    @{Html.RenderAction("Navigation", "YourController");}


    RenderPartial просто рендерит представление, а RenderAction грубо говоря, "запрашивает представление у метода действия".

    Второй Ваш вопрос
    Или можно ли как то передать для _Layout.cshtml? тогда получится глобально
    не понял.

    Надеюсь, помог Вам чем-нибудь.
    Успехов!
    Ответ написан
    1 комментарий
  • Как победить несоответствие типов?

    AlexNineteen
    @AlexNineteen
    Привет.
    У тебя представление принимает список сотрудников (IEnumerable<TST_net_core_EF_web.Models.Emploee>), а ты передаёшь List<string>.
    Вот и вся ошибка
    Ответ написан
    1 комментарий
  • Как заставить бота автоматически отправлять сообщения в заданное время?

    @nllm
    Самый простой вариант.
    В базу писать дату, время, id пользователя и текст сообщения. Для каждого сообщения существует статус: новое, отправка, отправлено.

    С помощью крона запускать скрипт каждую минуту (или другой период времени). При запуске смотреть каким пользователям уже можно/пора отправлять сообщения.
    Если уже пора, то делаем отметку в базе "идет отправка" и начинаем отправлять сообщения.
    После отправки пишем в базу "отправлено".
    Ответ написан
    4 комментария
  • Почему ограничение скорости downlink не работает, а uplink работает?

    А сеть 192.168.83.0/24 у вас за натом?
    Если да , то mangle prerouting срабатывает еще перед dst-nat.
    Попробуйте в mangle forward маркировать.
    Ответ написан
    1 комментарий
  • Выборка из двух таблиц

    AGvin
    @AGvin
    В дополнение к вышеуказанному:

    Aldorr скинул ссылку на описание JOIN-ов, но, что бы легче было понять, что это и с чем его едят, советую посмотреть: www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

    Akint описал рабочий запрос, но, он не будет выводить пользователей без «девайсов», для выводов таковых, лучше использовать:

    SELECT a.id,a.phone,b.device,b.address FROM users AS a LEFT JOIN devices AS b ON a.id = b.user_id;
    
    Ответ написан
    Комментировать
  • Кто разъяснит строчку из C# кода?

    @lil_Toady
    Методу Enum.Parse нужно знать тип enum'а, чтобы понять список возможных значений. Для значений не входящих в перечисление будет выкинуто исключение ArgumentException.

    В перечисление DayOfWeek соответственно входят входят Sunday, Monday, Tuesday, Wednesday, Thursday, Friday и Saturday, если введенная вами строка в консоль не будет соответствовать одному из этих значений, то получите исключение.

    В последних версиях стандарта это же самое можно достичь более простым способом, передавая нужный тип как generic аргумент, и не приходится делать приведение типа:
    favDay = Enum.Parse<DayOfWeek>(Console.ReadLine());

    Думаю такая запись и проще для понимания при чтении кода :)
    Ответ написан
  • Каким VPN вы пользуетесь для работы api.telegram.org?

    Если уже есть vps то почему бы туда и впн не поставить? Для себя, нагрузки минимум, а надежности и безопасности побольше чем у непонятно кого...
    Ответ написан
    4 комментария
  • Каким VPN вы пользуетесь для работы api.telegram.org?

    @YuriyCherniy
    Я Windscribe пользуюсь. 10 гигов бесплатно и есть консольный клиент под Linux, последнее для меня стало решающим фактором.
    Ответ написан
    Комментировать
  • Почему не могу найти работу Junior'ом C#?

    @kttotto
    пофиг на чем писать
    Это не резюме, это набор слов, ничем Вас не выделяет из общей массы и даже делает низовым в списке общей массы.

    1. Такой кучи тегов даже у меня нет)) Если Вы знаете названия технологий, не говорит о том, что Вы знаете сами технологии. С Вашим опытом никто не поверит, что Вы имели реальный опыт со всем этим, а не просто hello world написали. Выберите те, в которых по Вашему мнению Вы лучше всего разбираетесь.

    2.
    Отличное знание WinForms, ASP.NET, LINQ и WPF. Паттерны: MVVM, MVP, Repository, IoC.

    Для третьекурсника звучит самонадеяно. При такой формулировке на техническом собеседовании будут проверять "отличное" знание и я почти уверен, что Вы его провалите. Лучше сказать что-то подобие: имел опыт работы с, для реализации использовал технологии, имею <начальные> навыки работы с и т.д.

    3.
    Занимался исправлением мелких багов, написанием небольших SQL-запросов и unit-тестов, решал небольшие задачи.

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

    4.
    Если вспомнить css и html

    Вот такое никогда не пишите. Лучше соврать или преувеличить, или даже написать "Отличное знание", но не так как Вы здесь сформулировали.

    5. Не нужно оставлять ссылки на каждый проект в репозитории. Либо один, самый интересный на Ваш взгялд, либо одна ссылка на сам репозиторий. Работодатель пойдет туда только, если Вы заинтересуете его, не раньше. И ему пары файлов хватит оценить ваш уровень. Он не будет делать ревью всех Ваших проектов.

    6. Опыта одного проекта мало. Где опенсерс проекты, где участия в хакатонах, где амбиции стартапов, посещение конференций? Работодатель хочет понимать как Вы заинтересованы развиваться, какие у Вас планы для дальнейшего роста. Он берет вас нулевым не из альтруистических побуждений, а с надеждой, что Вы быстро вырастите и вернете ему прибылью затраченное на Вас время. Из Вашего резюме видно только одно: я студент - дайте работу. А почему Вам, за какие такие заслуги и что с этого будет иметь работодатель - не понятно.

    7. Я посмотрел Ваш код. Я бы не хотел, чтобы так писали у меня в проекте, начиная от именований и заканчивая некоторой логикой. Вас надо очень осторожно подпускать к реальным задачам и контролить, что Вы там напишете, просто чувствуется маленький опыт и до "отличных знаний" там далеко.

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

    @S0HardCore
    максимально просто

    try {
    dynamic json = JsonConvert.DeserializeObject<dynamic>(response);
    string myValue = json.suggestions[0].value.ToString();
    }
    catch (JSONException je){
    // handle
    }
    Ответ написан
    8 комментариев
  • Как в NewTonSoft задать схему десериализации ответа?

    @kttotto
    пофиг на чем писать
    Думаю, что ошибка в строке
    string json2 = @"{['Шляпа','Кепка']}";
    Все, что в фигурных скобках - это объект, но у Вас массив. Попробуйте
    string json2 = @"['Шляпа','Кепка']";
    Ответ написан
    1 комментарий
  • Можете оценить уровень кода?

    @basrach
    Пунктуация и стилистика бросается в глаза, вы можете аргументировать типа "не на писателя устраиваюсь же", но встречают по одежке, знаете ли...
    По коду.
    Вот вы говорите DDD, а похоже на Transaction Script. Поскольку в классе FeedLoader в каждом не-query методе происходит сохранение изменений, т.е. нет понятия бизнес транзакции. В данном случае это не особо нужно, но раз уж вы про DDD заикались... Также богатой изолированной модели не видно. Возможно в данном случае опять же эту богатую модель неоткуда взять, потому как предметная область тривиальная. Но тогда выходит, что вы выбрали неправильный способ решения задачи. В модуле Core у вас какие-то классы, очевидно для сериализации, непонятно что они делают в Core. Да и вообще, если бы увидел код без описания, мне бы никогда даже не закралась мысль, что его создавали по DDD.
    API не REST, хотя в требованиях было про REST.
    Нет конфигурирования кэша, что, где и насколько кэшировать. При этом само кэширование реализовано в BusinessLayer, что странно, поскольку кэш, как и, например, DataAccess, это чисто инфраструктурные вещи.
    Логирование только в API и только ошибок.
    В тестах нет моков. И похоже что тестирование только интеграционное, т.е. без базы данных не получится протестировать ничего.
    Пустой catch в ApiTester. Да, это не основная кодовая база, но когда не работает и при этом не сообщает почему не работает, всегда бесит, даже если это тесты.
    Итоговая оценка зависит от ваших ожиданий и ожиданий ревьюверов. Если вы junior, и на эту же то позицию претендовали, то вполне неплохо. Если senior, то зависит от уровня ревьюверов/проекта/компании и т.д.
    Ответ написан
    1 комментарий
  • В чем фишка Dapper?

    EreminD
    @EreminD
    Кое-что умею
    Первый коммент к той статье:
    Очень мощная штука для массивных запросов. Не нем написан Stack Overflow. Там в документации есть несколько примеров использования: получение строго типизированной коллекции, динамических объектов и запрос без ответа. (как то так). Если бы их здесь вкратце (так удобнее) освеить - было бы здорово :)


    Отличие, пожалуй в том, что у вас происходит маппинг автоматом (судя по статье).
    В ADO.NET, вам надо из ридера самому вручную забирать значения (типа reader.GetInt32(0)). Что не очень приятно, особенно при работе с большим числом сложных таблиц

    Толи дело, когда описываешь класс, делаешь запрос и просишь вернуть экземпляр
    User user = null;
    using (IDbConnection db = new SqlConnection(connectionString))
       {
             user = db.Query<User>("SELECT * FROM Users WHERE Id = @id", new { id }).FirstOrDefault();
       }


    Собственно, вот вам и ORM. Вы не работаете с результатом запроса напрямую. У вас есть возможность сразу получить экземпляр класса и работать с ним.
    А то, что на вход подается SQL-команда - выглядит, в какой-то степени, даже приятно и удобно.

    Еще вот о том, почему Dapper (особенно раздел "Dapper и реляционные запросы" - ваще огонь) - https://msdn.microsoft.com/ru-ru/magazine/mt703432.aspx
    А вот про то, кто быстрее - https://www.exceptionnotfound.net/dapper-vs-entity...
    Ответ написан
    5 комментариев
  • Как отправить смс в WhatsApp?

    @JunDevTest
    Контакты: thejundev@gmail.com | @juniordev
    К сожалению, WhatsApp ведёт очень жёсткую политику по отношению к разработчикам, у него отсутствует публичный API и возможность отправки сообщений на номера, которые не находятся в ваших контактах. Однако, в сети существуют сервисы, которые предоставляют такой API, однако он не официальный, его использование несет в себе риск бана вашего аккаунта без возможности восстановления. К тому-же такая услуга не бесплатна ( на одном из сервисов, стоит 900р/мес. за 1 аккаунт ) и как правило, с лимитом на количество отправленных сообщений.

    Существует так называемое WhatsApp Business API которое доступно лишь "средним и крупным компаниям", заявка отправляется через Facebook, где её проверяют и выносят свой вердикт, по поводу допуска. Простым смертным и ИП-шникам оно не доступно. https://www.whatsapp.com/business/api

    Как отметил пользователь storm57, на GitHub можно найти несколько открытых проектов, которые предоставляют API для WhatsApp в виде библиотек и компонентов для различных языков программирования.
    Однако, использование такого способа, может сильно повысить риск бана аккаунта, даже по сравнению с платными сервисами, которые работают через WhatsApp WEB.

    Относительно безопасный и практически бесплатный способ: https://github.com/sigalor/whatsapp-web-reveng
    Библиотека, работающая на собственном сервере, с возможностью получения API и отправки сообщений.
    Когда-то хотел с ней "поиграться", если захотите, могу установить и настроить её для вас на вашем или моём сервере, мои контакты сверху под ником.
    Ответ написан
    2 комментария
  • Как сделать умножение Stimulsoft?

    @d-stream
    Готовые решения - не подаю, но...
    {(double)UPD_Table.kol_vo * (double)UPD_Table.price} - либо спасет, либо вывалится более подробное сообщение.

    Какая версия репортера?
    Ответ написан
    3 комментария
  • Как из DispatcherTimer вывести данные в UI не дожидаясь его завершения?

    @Melz
    UI обновляется в отдельном треде через dispatcher. В вашем случае он еше не успел сделать свою работу.
    те или делать sleep-delay или как-то так:

    this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Render, (Action)delegate()
      {
         Todo: print
      });


    Можно еше повысить приоритет диспатчера, но это так себе идея.
    Ответ написан
    1 комментарий
  • Как добавить в ListBox кнопку в начало или конец списка?

    WNeZRoS
    @WNeZRoS
    При бидинге коллекции к ItemsControl создаётся CollectionView (для IEnumerable, для IList - ListCollectionView), который может дополнительно отсортировать или отфильтровать коллекцию. Элементы, видимые на экране, берутся из этого CollectionView, а не из оригинальной коллекции.

    ListCollectionView имеет проперти NewItemPlaceholderPosition, с помощью которого можно добавить фейковый элемент в начало или конец.
    // CollectionView можно получить двумя способами:
    // 1. Просто получить дефолтный вариант для коллекции
    var collectionView = (ListCollectionView)CollectionViewSource.GetDefaultView(Items);
    // 2. Создать свой, тогда именно этот созданный collectionView надо передавать для биндинга в ItemsSource.
    var collectionView = new ListCollectionView(Models);
    
    // После, можно добавить фейковый элемент
    collectionView.NewItemPlaceholderPosition = NewItemPlaceholderPosition.AtBeginning;

    После этого в ListBox появится элемент CollectionView.NewItemPlaceholder, который можно отдельно стилизовать с помощью DataTemplateSelector.

    DataTemplateSelector
    public sealed class NewItemTemplateSelector : DataTemplateSelector
    {
       public DataTemplate ItemTemplate { get; set; }
       public DataTemplate NewItemPlaceholderTemplate { get; set; }
    
       public override DataTemplate SelectTemplate(object item, DependencyObject container)
       {
          if (item == CollectionView.NewItemPlaceholder)
             return NewItemPlaceholderTemplate;
    
          return ItemTemplate;
       }
    }

    <ListBox.ItemTemplateSelector>
        <t:NewItemTemplateSelector>
            <t:NewItemTemplateSelector.ItemTemplate>
                <DataTemplate>
                    <!-- Шаблон обычного элемента -->
                </DataTemplate>
            </t:NewItemTemplateSelector.ItemTemplate>
            <t:NewItemTemplateSelector.NewItemPlaceholderTemplate>
                <DataTemplate>
                    <!-- Шаблон CollectionView.NewItemPlaceholder -->
                    <Button Content="+" />
                </DataTemplate>
            </t:NewItemTemplateSelector.NewItemPlaceholderTemplate>
        </t:NewItemTemplateSelector>
    </ListBox.ItemTemplateSelector>

    Ответ написан
    Комментировать