Задать вопрос
Профиль пользователя заблокирован сроком с 16 октября 2023 г. и навсегда по причине: систематические нарушения правил сервиса
  • Как реализовать запросы в WinForms Entity Framework?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Вы спрашивайте если не понятно.

    https://docs.microsoft.com/ru-ru/dotnet/api/system...

    private static int _interval = 60;
            private static DatabaseCtx _ctx = DatabaseCtx.Instance;
            public static BindingList<Data> Items { get; set; } = new BindingList<Data>();
    
    public ExportGridForm()
            {
                InitializeComponent();
                ReloadData();
                bindingSource1.DataSource = Items;
            }
    
    private void ReloadData()
            {
                Items.Clear();
                foreach (var data in _ctx.GetDatas()) Items.Add(data);
            }
    Ответ написан
    Комментировать
  • Чему учат на практиках / стажировках?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Ну вот я сейчас прохожу стажировку.

    Дали 3 недели что бы освоить Dynamics 365 CRM
    Созваниваемся с PM. Я ему видосики шлю с клипами Snap и руганью на компанию Microsoft.
    Одно спасает что я с этой штукой работал в версии X-3
    Ответ написан
    Комментировать
  • Нормально ли использовать архитектуру MVC + web api вместе?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Почему и нет.
    Только обратите внимание что статику лучше вынести в отдельные локайшены для nginx что бы не гонять понапрасну kestrel
    Ответ написан
    2 комментария
  • Как отслеживать изменения репозитория GitHub на Windows?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    1. git clone
    2. Я бы написал какой нибудь скрипт и периодически его запускал. При наличии нового коммита что то делал.
    https://developer.github.com/v3/guides/getting-started/
    3. (другой вариант) либо настроил CI и добавил бы какой нибудь шаг на коммит, допустим отправку почты, ну или что то еще
    Ответ написан
    Комментировать
  • Как распознавать дорожные знаки?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Opencv js ищите
    Ответ написан
    Комментировать
  • Как установить Ubuntu, если зависает экран на логотипе Ubuntu?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Хм стандартно действуйте так. После логотипа выберите установку в текстовом режиме ну или мучайте техподдержку
    Ответ написан
    Комментировать
  • За сколько можно освоить такую программу?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    1. Изучить UNIX-систему какую-либо. (Unix руководство системного администратора 500 стр. 10 дней)
    2. Изучить HTML, CSS. (entry level MDN ~20 дней)
    3. Изучить пару языков программирования
    3.1 Python (entry level ~40 дней)
    3.2 JavaScript (entry level ~30 дней)
    3.3 C++ (entry level ~120 дней)
    3.4 JQuery (entry level ~5 дней) после 2 и 3.2
    3.5 SQL 92 (entry level ~20 дней)
    4 Изучить устройства сетей (берите дампы Cisco CCNA Примерно полгода или отсюда https://linkmeup.ru/blog/11.html)
    5 изучить криптографию (хрен его знает)
    Ответ написан
    Комментировать
  • Почему эти вершины такие "острые"?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Выделите снэйп который идет по этим точкам и сморите кривые.

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

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Передавайте
    CultureInfo(1033)
    CultureInfo(1049)

    При парсинге чисел причем проверяйте строку на наличие точки тогда 1033
    в другом случае 1049
    Ответ написан
  • Использование DynamicRouteValueTransformer в ASP.NET Core?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Что то мне подсказывает
    Что это вам поможет
    https://docs.microsoft.com/ru-ru/dotnet/api/system...
    Ответ написан
    Комментировать
  • Как можно отправить MsgBox определенному пользователю из домена?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    В про есть

    msg kvn "Вова вырубай"
    Ответ написан
    Комментировать
  • В каких книгах можно узнать о разработке высоконагруженный систем на C++?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Смотрите кальмара, там много всего в исходных кодах. А так выше вам ответили
    Ответ написан
    Комментировать
  • Как изменить размер жесткого диска через реестр?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    1. Мошенничество это плохо.
    2. В реестре эта информация не хранится.
    3. Там хранится временная информация, создаваемая загрузчиком, для мэппинга дисков на DosDevices
    4. Информация о диске содержится в разделе NTFS + в разметке диска (вот ее можно зашаманить)
    5. WD лучше не брать
    Ответ написан
    2 комментария
  • Каким способом защитить сайт от сканирования на наличие файлов через nginx?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Ответ написан
    Комментировать
  • Как подключить базу данных в приложение Xamarin.Forms?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Опишу одно из своих:

    Бэкенд написанный на PHP давным давно.

    Xamarin.FORM приложение отображающиее разделы, подразделы и статьи.
    Приложение может сохранять все статьи для доступа в офлайне.

    Соответственно есть сервис который отдает одинаковые данные для обоих режимов.
    При попытке перехода в офлайн пользователю выводится предложение о скачивании всех ресурсов ок 60 мб.

    Дальше оно работает offline.

    Вот базовые классы

    using System;
    using System.IO;
    using System.Linq;
    using System.Threading.Tasks;
    using Polly;
    using SQLite;
    using Xamarin.Essentials;
    
    namespace SpecialForcesDirectory.Code
    {
        public abstract class BaseContentDatabase
        {
            public static readonly string DatabasePath = Path.Combine(FileSystem.AppDataDirectory, Settings.DataBaseName);
            static readonly Lazy<SQLiteAsyncConnection> DatabaseConnectionHolder = new Lazy<SQLiteAsyncConnection>(() => new SQLiteAsyncConnection(DatabasePath, SQLiteOpenFlags.ReadWrite | SQLiteOpenFlags.Create | SQLiteOpenFlags.SharedCache));
    
            private static SQLiteAsyncConnection DatabaseConnection => DatabaseConnectionHolder.Value;
    
    
            protected static async ValueTask<SQLiteAsyncConnection> GetDatabaseConnection<T>()
            {
                if (DatabaseConnection.TableMappings.Any(x => x.MappedType == typeof(T))) return DatabaseConnection;
                // On sqlite-net v1.6.0+, enabling write-ahead logging allows for faster database execution
                await DatabaseConnection.EnableWriteAheadLoggingAsync().ConfigureAwait(false);
                await DatabaseConnection.CreateTablesAsync(CreateFlags.None, typeof(T)).ConfigureAwait(false);
                return DatabaseConnection;
            }
    
            public static Task<T> AttemptAndRetry<T>(Func<Task<T>> action, int numRetries = 10)
            {
                return Policy.Handle<SQLiteException>().WaitAndRetryAsync(numRetries, PollyRetryAttempt).ExecuteAsync(action);
    
                static TimeSpan PollyRetryAttempt(int attemptNumber) => TimeSpan.FromMilliseconds(Math.Pow(2, attemptNumber));
            }
    
            protected static async Task Close()
            {
                await DatabaseConnection.CloseAsync();
            }
        }
    public class ContentDatabase : BaseContentDatabase
        {
            #region Category repository
            private async Task<SQLiteAsyncConnection> GetCategoryConn()
            {
                return await GetDatabaseConnection<Category>().ConfigureAwait(false);
            }
            public async Task<IEnumerable<Category>> GetCategories()
            {
                var conn = await GetCategoryConn();
                return await AttemptAndRetry(() => conn.Table<Category>().ToListAsync()).ConfigureAwait(false);
            }
            public async Task<Category> GetCategory(int id)
            {
                var conn = await GetCategoryConn();
                return await AttemptAndRetry(() => conn.GetAsync<Category>(id)).ConfigureAwait(false);
            } 
            #endregion
    
            #region Content Repository
            private async Task<SQLiteAsyncConnection> GetCtxConn()
            {
                return await GetDatabaseConnection<Content>().ConfigureAwait(false);
            }
            
            public async Task<IEnumerable<Content>> GetItems()
            {
                var conn = await GetCtxConn();
                return await AttemptAndRetry(() => conn.Table<Content>().ToListAsync()).ConfigureAwait(false);
            }
    
            public async Task<Content> GetItem(int id)
            {
                var conn = await GetCtxConn();
                return await AttemptAndRetry(() => conn.GetAsync<Content>(id)).ConfigureAwait(false);
            }
    
            public async Task<int> DeleteItem(int id)
            {
                var conn = await GetCtxConn();
                return await AttemptAndRetry(() => conn.DeleteAsync<Content>(id)).ConfigureAwait(false);
            }
    
            public async Task SaveItem(Content item)
            {
                var conn = await GetCtxConn();
                if (item.Id == 0) await AttemptAndRetry(() => conn.InsertAsync(item)).ConfigureAwait(false);
                await AttemptAndRetry(() => conn.UpdateAsync(item)).ConfigureAwait(false);
            }
    
            public async Task<IEnumerable<SRawItem>> GetItemsByQuery(string q, int lim)
            {
                var qu = q.ToUpper();
                var list = new List<SRawItem>();
                var conn = await GetCtxConn();
                var result = conn.Table<Content>()
                    .Where(x => x.EnableTab1 == 1 && x.Tab1.ToUpper().Contains(qu)
                                || x.EnableTab2 == 1 && x.Tab2.ToUpper().Contains(qu)
                                || x.EnableTab3 == 1 && x.Tab3.ToUpper().Contains(qu)).Take(lim);
    
                var r = await result.ToListAsync();
                foreach (var content in r)
                {
                    var st = GetSt(content, qu);
                    var title = await conn.Table<Category>().Where(x => x.Id == content.CatId).FirstAsync();
                    var ni = new SRawItem
                    {
                        Body = st.Body,
                        CatId = content.CatId.ToString(),
                        Title = title.Title,
                        Id = content.Id.ToString(),
                        MType = "a",
                        Tab = st.Tab
                    };
                    list.Add(ni);
                }
    
                return list;
            }
    
            private static TabStruct GetSt(Content content, string q)
            {
                if (content.Tab1.ToUpper().Contains(q))
                    return new TabStruct { Tab = "1", Body = content.Tab1 };
                if (content.Tab2.ToUpper().Contains(q))
                    return new TabStruct { Tab = "2", Body = content.Tab2 };
                return new TabStruct { Tab = "3", Body = content.Tab3 };
            }
    
            private struct TabStruct
            {
                public string Body { get; set; }
                public string Tab { get; set; }
            }
    
            #endregion
    
            public async Task Clear()
            {
                await BaseContentDatabase.Close();
            }
        }
    [Table("quote")]
        public class Quote
        {
            [PrimaryKey]
            [AutoIncrement]
            [Column("id")] 
            public int Id { get; set; }
    
            [Column("author")] public string Author { get; set; }
    
            [Column("body")] public string Body { get; set; }
    
            [Column("image")] public string Image { get; set; }
    
            [Column("created")] public DateTime Created { get; set; }
        }
    
    public class QuoteRepository : BaseUserDatabase
        {
            private async Task<SQLiteAsyncConnection> GetConn()
            {
                return await GetDatabaseConnection<Quote>().ConfigureAwait(false);
            }
            public async Task<IEnumerable<Quote>> GetItems()
            {
                var conn = await GetConn();
                return await AttemptAndRetry(() => conn.Table<Quote>().ToListAsync()).ConfigureAwait(false);
            }
    
            public async Task<Quote> GetItem(int id)
            {
                var conn = await GetConn();
                return await AttemptAndRetry(() => conn.GetAsync<Quote>(id)).ConfigureAwait(false);
            }
    
            public async Task<int> DeleteItem(int id)
            {
                var conn = await GetConn();
                return await AttemptAndRetry(() => conn.DeleteAsync<Quote>(id)).ConfigureAwait(false);
            }
    
            public async Task<int> SaveItem(Quote item)
            {
                var conn = await GetConn();
                return await AttemptAndRetry(() => conn.InsertOrReplaceAsync(item)).ConfigureAwait(false);
            }
    
            public async Task DeleteAll()
            {
                var conn = await GetConn();
                await AttemptAndRetry(() => conn.DeleteAllAsync<Quote>()).ConfigureAwait(false);
            }
        }
    
    
    }
    Ответ написан
    Комментировать
  • Как взаимодействовать с JS кодом сайта на C#?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Крупные порталы противятся скрапингу, это в общем то обычная проблема.
    Решается Headless браузерами селениумом который вы упомянули. В общем вам желательно полностью совпадать с типичным клиентом.

    Может показаться дурацким, но посмотрите в api и поговорите со службой поддержки, возможно они согласятся что такой функционал нужен и дадут вам добро. Часто бывало такое
    Ответ написан
  • C# Почему экземпляр класса в var инициализируется с null?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Область видимости же, вы перекрываете одну переменную другой.

    Кстати что бы такого не возникало рекомендую https://www.jetbrains.com/resharper/
    Это практически стандарт для любого программиста на c#

    Ну и да глобальные переменные лучше именовать либо с большой буквы либо с подчеркивания в зависимости от доступности.
    Ответ написан
    1 комментарий
  • Файловая структура сайта?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Смотрите
    есть 2 папки
    / html (грубо то что отдается клиенту веб сервером)
    /app (тут ваш бэкенд)

    Больше на продуктовом сервере ничего не должно быть.
    Варианты конечно возможны, но я изложил идеальный сферический сайт в ваккуме
    Ответ написан
    Комментировать
  • Почему не работает запрос в несколько таблиц?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Изучайте join
    Ответ написан
    Комментировать
  • Имеют ли все login формы свой url?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Все зависит от разработчика. Допустим криворукие на эппле и Майкрософте и гугле сначала выводят адрес а потом пароль, реально бесит.
    Ответ написан
    Комментировать