• Laravel. Что такое "eager loading" в двух словах на пальцах?

    @Inclusive
    В документации все просто расписано.
    Есть модель:
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class User extends Model
    {
        /**
         * Get the phone record associated with the user.
         */
        public function phone()
        {
            return $this->hasOne('App\Phone');
        }
    }


    Выбрали вы пользователей:
    $users = (new User())->newQuery()->get();

    Если вы сделаете так:
    foreach($users as $user){
       $phone = $user->phone;
    }

    То при каждом запросе к отношению - будет отдельный запрос.
    Вместо этого можно сделать либо:
    $users = (new User())->newQuery()->with('phone')->get();

    либо уже после получения:
    $users->load('phone');
    В первом случае при наличии 10 записей с пользователями произойдет 11 запросов, во втором и третьем всего 2 запроса.
    Ответ написан
    7 комментариев
  • Ультразвук из ПК, что можно сделать?

    @pfg21
    ex-турист
    свистит дроссель/катушка в цепях питания.
    найти можно с помощью стетоскопа, в автомастерских часто так выслушивают, у них специальный стетоскоп с узким носиком.
    разобрать комп - прослушать каждый дроссель материнки (питание процессора) и блока питания. все делать крайне аккуратно ибо в БП 220 вольт гуляет.
    обычно свистят "квадратные" и броневые. они в отличии от тороидальных состоят из двух половинок, стянутых/склеяных меж собой. стяжка ослабляется, клей разрушается и половинки начинают вибрировать/стучать об друг друга.
    хотя теоритически и тороиды могут треснуть...
    ремонт "правильный" - замена элемента/платы/блока.
    ремонт "подручный" - выключить, подожать полчаса на разряд кондеров и прокапать суперклеем места стыков магнитопровода и сжать. неплохо еще прокапать места крепления магнитопровода к корпусу элемента.
    Ответ написан
    4 комментария
  • Какой объём трафика у websocket если ничего не передавать и просто держать соединение?

    @deliro
    Агрессивное программирование
    PING/PONG кидается раз в 20 секунд https://websockets.readthedocs.io/en/latest/topics...
    PING/PONG фреймы — по одному байту. Плюс, если считаем, объём TCP и IP фреймов.

    Итого за час 180 пингов и 180 понгов или 360 байт не считая оверхэда на нижележащие фреймы.
    Если считать оверхэд, то примерно 65 байт x (180 пингов + 180 понгов) ~ 23кб/час

    Плюс, какой-то оверхэд даст TLS и его хэндшейки, плюс, незначительный оверхэд дадут хэндшейки TCP. Но это явно не близко к 70мб
    Ответ написан
    2 комментария
  • Есть ли ORM для .NET ориентированная на database first-подход?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Нашёл например проект Dapper, вроде подходит, но вдруг есть ещё какие?

    Есть LinqToDb - он ориентирован на работу с Linq, но при этом быстрый и легковесный (сравним с даппером).
    При этом на linq можно в нём выразить почти весь SQL, включая оконные функции и CTE, в отличие от EF Core.
    Есть генератор кода к существующей базе на основе T4.
    Также можно вызывать и сырой SQL, но для такого лучше даппер.

    Можно ли так работать в Entity Framework Core?

    Да. Можно сгенерировать контекст по уже существующей базе данных при помощи команды
    dotnet ef dbcontext scaffold
    Сырой SQL можно вызывать при помощи FromSqlInterpolated
    Ответ написан
    Комментировать
  • Пишут ли в компаниях коммиты в git на русском?

    BorLaze
    @BorLaze
    Java developer
    ИМХО, в этом случае лучше плохой английский, чем хороший русский.

    UPD: вот представь сам - смотришь ты гит соискателя, и там коммент "сдес я делаль пузырек сортировка". Плохо? ну, но фонтан, конечно, но гораздо лучше абсолютно грамотного комментария на монгольском "бзых дащщь бызынг клангмы".

    Вот точно так же твоему "потенциальному работодателю" из-за бугра будут смотреться твои комменты на русском :-)
    Ответ написан
    6 комментариев
  • Как учиться новому после рабочего дня?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    1. 9 часов. Это уже ошибка. КЗОТ писали не дурни. 8 часов достаточно для работы, если человек не чаи пьет
    2. Пересмотрите процесс работы. По приходу на работу сначала делать самые важные. Прошу прочесть внимательно: сначала важные, а только потом срочные и другие. Отличие важных от срочных в том, что одни, как правило, делаются разово и про них забываются, а другие хоть и не срочные, но они влияют стратегически.
    3. Уделяйте время на то, чтобы подумать над "светлым будущим", т.е. создать\актуализировать список страгеческих целей и задач
    4. Делайте утром зарядку. Растяжку, отжимания, приседания. Это влияет на энергетику в организме
    5. Делайте перерывы во время работы.
    6. Чаще пейте воду
    7. Займитесь спортом. На своей шкуре опробовал и четко знаю то, что до занятия плаванием делал меньше, чем сейчас
    8. Окружите себя теми, кто куда-то стремится. Это не значит что надо всех других послать в Южную Америку на оз. Нахой. Это значит, что надо чаще общаться с одним типом людей и меньше с другим
    9. Стремитесь работать на результат, а не подсчет "жопочасов". В дальнейшем ставьте работодателю на собеседовании вопрос "Вам нужны жопо-часы или результаты?". Старайтесь выявить жмотов. Если вы вдруг справились не за 5, а за 4 часа, а работодатель жмотится и боится выделить время на самообучение сотрудника, хотя эти же знания будут применены при решении рабочих задач, то уходите от такого работодателя!

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

    После работы лучше тупить. Мозг должен "отдыхать". То есть заниматься структуризацией, обработкой того, что произошло за день.

    Старайтесь избегать рывко-образной работы. Все должно быть стабильно. Пусть даже небольшими кусками работы, но стабильно и бессбойно!
    Ответ написан
    6 комментариев
  • Xubuntu или Lubuntu?

    mindtester
    @mindtester
    https://www.youtube.com/watch?v=Dn9_ogWhk9s
    В чём отличие?xubuntu или Lubuntu
    гугл просто ломится от таких запросов и ответов на них по простой причине:
    Что лучше?
    это дело личного вкуса и навыков. чужие вам не помогут. к примеру мой выбор - кубунту. это за примерно 10 лет, медленного, настороженного вхождения, имея за спиной 30 лет жизни в MS, начиная еще с DOS
    Ответ написан
    Комментировать
  • Как реализовать мгновенную фильтрацию DataGrid'a, используя многопоточность (WPF)?

    @Sumor
    Вам не нужно для фильтрации пересобирать коллекцию. Для этого в wpf уже разработаны нужные механизмы.
    В первую очередь нужно коллекцию с которой вы работаете поместить в CollectionView. CollectionView привязать к DataGrid.
    У CollectionView есть встроенные механизмы фильтрации — результат будет отображаться в DataGrid.
    См. Свойство Filter CollectionView.

    Для использования CollectionView обёртывается ещё в CollectionViewSource или что-то подобное. Это подробно описывается в примерах. Его можно просто описать даже в Xaml.
    Пример, примерного кода с динамическим созданием CollectionViewSource над List и фильтрацией через TextBox:
    Xaml
    <Window x:Class="WpfApplication3.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">    
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="47*"/>
                <RowDefinition Height="275*"/>
            </Grid.RowDefinitions>
            <TextBox x:Name="filter" TextChanged="filter_TextChanged"/>
            <ListBox x:Name="lst" Grid.Row="1" />
        </Grid>
    </Window>


    C#
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            List<string> lstSource = new List<string>() { "1", "2","3" };
            viewSource = new CollectionViewSource();
            viewSource.Source = lstSource;            
            viewSource.Filter += viewSource_Filter;
            lst.ItemsSource = viewSource.View;
        }
    
        CollectionViewSource viewSource;
        void viewSource_Filter(object sender, FilterEventArgs e)
        {
            e.Accepted = ((string)e.Item).IndexOf(filter.Text) >=0;
        }
    
        private void filter_TextChanged(object sender, TextChangedEventArgs e)
        {
            viewSource.View.Refresh();
        }
    }
    Ответ написан
    2 комментария
  • Зачем использовать реляционные субд для этой ситуации?

    @xfg
    Если комментариев к статье неограниченное количество, то хранить данные таким образом - неудачная идея. В mongodb документ по умолчанию не может превышать более 16 mb, но даже при отсутствии подобного ограничения, это привело бы к единовременному считыванию большого объема данных в память. В таком случае данные следует моделировать также, как и в РСУБД.

    Есть CAP-теорема и выбирать тип базы данных нужно исходя из того, какие 2 из 3 свойств для вас важнее. РСУБД дают согласованность и доступность (CA), но жертвуют возможностью разделения такой базы, nosql решения идут другим путем и жертвуют согласованностью в пользу доступности и устойчивости к разделению (AP). Согласованность данных в таких системах достигается при помощи шаблона Saga вместо ACID.

    В целом NoSQL это про проекты данные которых не помещаются в рамках одного сервера, а не про то, каким образом моделировать эти данные. Вложенные документы в mongodb - это скорее следствие её архитектуры, которое используют как маркетинговый ход, чем решение, которое будет использоваться повсеместно. В подавляющем большинстве случаев документы будут ссылаться друг на друга, точно также как это происходит и в РСУБД.

    Для проекта с крохотными объемами данных логичнее выбирать РСУБД и тем самым значительно упростить себе жизнь. Но в целом как используют NoSQL, шардируют данные и как достигают согласованности данных при отсутствии ACID знать желательно, хотя бы в общих чертах.

    Самое ужасное, это выбрать базу данных и использовать её неправильно, как пример документа с вложенными комментариями при условии их бесконечности в mongodb. Пишем скрипт генерирующий триллион комментариев к статье, а затем просим нам выдать эту статью и сайт уходит в офф. Хорошо что в mongodb есть защита от дурака.
    Ответ написан
    1 комментарий
  • Где Junior разработчику искать компаньона/компаньонку для переезда в Москву?

    @vxiomv
    заходи в группы сдам сниму жилье в мск, там полно тех кто ищет напарников для съема жилья, на крайний случай с подселением ищи, подселишься каким нибудь таджикам кумыс научишься пить из горла при это считая мелочь и разговаривать по телефону через слово говорить алаху акбар.
    Ответ написан
    Комментировать