Задать вопрос
  • Как привязать объекта класса Bitmap к компоненту в WPF?

    tomnolane
    @tomnolane
    профессиональный разработчик
    1)
    // image создаю программно, но можно и из x:Name использовать аналогично (без var image = new System.Windows.Controls.Image();)
                            var image = new System.Windows.Controls.Image();
                            BitmapImage bitmap = new BitmapImage();
                            bitmap.BeginInit();
                            bitmap.UriSource = new Uri(path, UriKind.Absolute);
                            bitmap.EndInit();
                            Image.Source = bitmap;


    2)
    [SerializableAttribute]
    [ComVisibleAttribute(true)]
    public sealed class Bitmap : Image


    3) тык
    4)
    <Image Width="90" Height="90" 
           Source="{Binding Path=ImageSource}"
           Margin="0,0,0,5" />

    public object ImageSource {
        get {
            BitmapImage image = new BitmapImage();
    
            try {
                image.BeginInit();
                image.CacheOption = BitmapCacheOption.OnLoad;
                image.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
                image.UriSource = new Uri( FullPath, UriKind.Absolute );
                image.EndInit();
            }
            catch{
                return DependencyProperty.UnsetValue;
            }
    
            return image;
        }
    }

    5)
    <Image>
        <Image.Source>
            <BitmapImage UriSource="{Binding Path=ImagePath, Converter=...}" />
        </Image.Source>
    </Image>

    BitmapImage image = new BitmapImage();
    image.BeginInit();
    image.UriSource = new Uri(value as string);
    image.EndInit();
    
    return image;

    6)
    img.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("/www/image.png");
    Ответ написан
    2 комментария
  • Почему выдает undefined?

    tomnolane
    @tomnolane
    профессиональный разработчик
    Цикл do…while, где идет проверка coord1 на undefined

    do
    {  
    } while(typeof coord1 == "undefined");
    console.log(coord1);
    Ответ написан
  • Что не так с этим кодом?

    tomnolane
    @tomnolane
    профессиональный разработчик
    так сойдет?
    using System;
    
    namespace auto
    {
        class Program
        {
            public class Auto
            {
                private int _speed = 0;
                private int _time = 0;
                private string name_car = string.Empty;
    
                public int Speed { get { return _speed; } set { _speed = value; } }
                public int Time { get { return _time; } set { _time = value; } }
                public string Name_car { get { return name_car; } set { name_car = value; } }
    
                public void Drive()
                {
                    Console.WriteLine(Speed * Time + " class Auto" + " name car: " + Name_car);
                }
            }
    
    
            public class fastCar : Auto
            { 
                public void fastDrive(int time, string name)
                {
                    Console.WriteLine(Speed * time * 2 + " class fastCar" + " name car: " + name);
    
                }
    
            }
    
            public class slowCar : Auto
            { 
                public void slowDrive(int time, string name)
                {
                    Console.WriteLine(Speed * time / 2 + " class slowCar" + " name car: " + name); 
                }
    
            }
            static void Main(string[] args)
            {
                fastCar x = new fastCar(); 
                x.Speed = 100;
                x.Time = 15;
                x.Name_car = "fastCar-x";
                x.Drive();
                x.fastDrive(x.Time, x.Name_car);
    
    
                slowCar y = new slowCar();
                y.Speed = 100;
                y.Time = 15;
                y.Name_car = "slowCar-y";
                y.Drive();
                y.slowDrive(y.Time, y.Name_car);
                Console.ReadLine();
            }
        }
    }


    п.с. логику лучше переделать под норму "don't repeat your self"

    хотя бы вот так:
    using System;
    
    namespace auto
    {
        class Program
        {
            public class Auto
            {
                private int _speed = 0;
                private int _time = 0;
                private string name_car = string.Empty;
    
                public int Speed { get { return _speed; } set { _speed = value; } }
                public int Time { get { return _time; } set { _time = value; } }
                public string Name_car { get { return name_car; } set { name_car = value; } }
    
                public void Drive()
                {
                    Console.WriteLine(Speed * Time + " class Auto" + " name car: " + Name_car);
                }
            }
    
    
            public class fastCar : Auto
            { 
                public void fastDrive()
                {
                    Console.WriteLine(Speed * Time * 2 + " class fastCar" + " name car: " + Name_car);
    
                }
    
            }
    
            public class slowCar : Auto
            { 
                public void slowDrive()
                {
                    Console.WriteLine(Speed * Time / 2 + " class slowCar" + " name car: " + Name_car); 
                }
    
            }
            static void Main(string[] args)
            {
                fastCar x = new fastCar(); 
                x.Speed = 100;
                x.Time = 15;
                x.Name_car = "fastCar-x";
                x.Drive();
                x.fastDrive();
    
    
                slowCar y = new slowCar();
                y.Speed = 100;
                y.Time = 15;
                y.Name_car = "slowCar-y";
                y.Drive();
                y.slowDrive();
                Console.ReadLine();
            }
        }
    }
    Ответ написан
    Комментировать
  • Трабл с линукс (kali): как восстановить дефолтные настройки?

    tomnolane
    @tomnolane Автор вопроса
    профессиональный разработчик
    пишу с кали)
    на экране ввода логина запустил косноль (вроде alt+f2)
    и методом (научным - пальцем в небо)
    ввёл: dpkg --configure -a
    (новые update не хотел скачивать - так как уже скачан "новый", который мне всё и запорол)
    пошла процедура выше указанная, пару раз ругался на CRYPTSETUP,
    потом на postgresql (типо нужно вручную установить новую версию) и на
    privoxy (типо скачал файл и заменить или нет на новый).
    После процедуры - reboot. Grub стал нормальный, с дракончиком) и всё остальное запустилось и работает отлично (вроде).
    *тут скрин должен быть* но почему-то опять пишет ошибку - типо не могу загрузить(
    вообщем, обошлось без переустановки. Спасибо всем, кто откликнулся.
    Ответ написан
    Комментировать
  • Может ли facebook закрыть группу за рекламу?

    tomnolane
    @tomnolane
    профессиональный разработчик
    У меня был случай, когда то ли с группы журнала "Вокруг Света" скопировал статью в свою группу, точнее на fan-страницу, и мне "выписали" предупреждение "ай-ай-ай, ещё раз и бо-бо-бо". Есть страница - где я продвигаю реальный салон красоты в МО, и естественно реклама и прочее. Нет, не банили, но... есть но... слышал/читал, что если заниматься рекламой (например страницы) как-то в обход официального таргетирования фейсбук - тогда забанят. Т.е. использовать сервисы/сайты для накрутки/подписывания фейков/лайков и пр. могут забанить. Это вычисляется неким хитрым способом специальными "роботами" в фейсбуке, которые отслеживают очень и очень многое. А именно: при создании фейк страницы, он смотрит на аватарку в инете - если она очень распространена (проверить можно тут (открывается гугл картинки) перетаскивается фото в поиск, и если есть совпадения - он тут же выдаст где и как (это типо "аналог", программа работает примерно аналогично), то может забанить аккаунт как "фейк" и попросить подтвердить документом. Аналогично другая программа в фейсбуке, проверяет контент. Т.е. если слишком "спам" идёт, да ещё и ссылками одинаковыми и подряд... опять же, блокирует до предоставления копии паспорта (у меня нечто такое было Когда блокировка вашего аккаунта на facebook'e появилась, какими были ваши действия (какая была причина блокировки вашего аккаунта)? ). Вообщем, фейсбук (как и другие соц. сети, в частности российские) - это не просто портал общения, бизнеса, рекламы, пиара, троллей и т.д. А очень сложный и многоуровневый организм, где куча всякой защиты (к примеру, зайдите в любой соц. сети кроме Твиттер, и попробуйте почитать ограничения сколько и чего нужно... и ответа не найдёте.. только методом тыка либо на форумах тех, кто "доходил" до ограничений.). Т.е. в целях безопасности всё скрыто (сколько можно постить, с каким интервалом, какие ссылки, сколько подряд ну и т.д.). И есть как минимум несколько внутренних роботов/программ в фейсбуке - которые это всё отслеживают. В плоть до того, что с вас "соскребают" всю возможную информацию через браузер и передают на множество серверов для статистики и вечное хранение (посмотрите через сниф, как только вы ввели https://facebook.com - сколько и куда отправились различных запросов от вас...) Так, что "грубой силы" не прокатит, нужно подстраиваться более менее под правила Фейсбук и в рамках их уже делать то, что хотите

    и собственно ответ на вопрос: Фейсбук не заблокирует группу - Фейсбук заблокирует весь аккаунт, если вы нарушите выше указанные правила. Т.к. очень сильно борится с рекламой, которая не через покупку в Фейсбук идёт, и которая "отнимает" хлеб у фейсбука. Но, если делать не через "посторонних", а например через их официальный API (извините за мою рекламу, я как раз создал такой сервис CatPost) или "ручками" - то проблем быть не должно.

    Если да, то как вычисляют, могут ли конкуренты как-то жаловаться? И как это предотвратить?

    как вычисляют - уже написал.
    на счёт конкурентов - если вы "скопируете" их контент (целиком и без изменений) и не укажите что он от них (грубо говоря не репостните - а скопируете без указания что это их), и они это увидят - то могут подать жалобу (как мне поступила однажды). Возможно есть специальные функции - которые отслеживают плагиат.
    Как предотвратить - через репост - это официально и без последствий. Либо (наверно) скопировать всё и в сааааамом внизу указать источник, ну или "переписать" своими словами, чтобы не выглядил как плагиат. Но, если вы создаёте свой "контент", то в теории любой может подать жалобу. Но не думаю, что они этим чего-то добьются.

    UPD
    подавляющее большинство блокировок делают не люди/модераторы/сисадмины, а автоматически "роботы" которые ищут по "фильтрам"
    Ответ написан
    Комментировать
  • Почему vk api возвращает пустое "photo":"[]" ???

    tomnolane
    @tomnolane
    профессиональный разработчик
    $img_src = '4.png'; 
    
    $post_params = array(
    'file1' => '@'.$img_src,
    );
    
    file_get_contents('https://api.vk.com/method/photos.getWallUploadServ...'.$access_token);
    $dataArray=json_decode($data);
    
    $ch = curl_init( $dataArray->response->upload_url );
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params);
    $response = curl_exec( $ch );
    curl_close( $ch );
    print_r($response); 
    }
    Ответ написан
  • Как называется такая конструкция в C#?

    tomnolane
    @tomnolane
    профессиональный разработчик
    геттер (свойство).

    Оно позволяет возвращать объект типа Matrix под именем transform, который храниться в приватной "Области видимости". И это стандартная "тема".

    Допустим, есть объект который только хранит в себе что-то private string my_string = "что-то";
    он находится в области видимости "private" - т.е. доступен для использования только в рамках того класса, где он находится. В другом классе к нему (my_string) нельзя получить доступ и изменить. И в идеале так и нужно делать, чтобы созданные объекты были доступны только там, где надо, а не везде...
    далее создаём геттер (который только отдаёт значение объекта my_string, при этом сам в себе ничего не хранит (только ссылку),
    private string my_string = "что-то";
    public string My_String { get { return my_string ; } }

    его (My_String ) делают открытым (public) и позволяют безопасно получать данные из my_string;

    аналогично можно сделать сеттер, но ниже покажу самый распространённый:
    private string my_string = "что-то";
    public string My_String { get { return my_string ; } set { my_string  = value; }}

    в этом случае мы можем записывать (условно безопасно из другого класса к примеру) в my_string какие-то данные через My_String.

    всё это делается очень легко:
    //получить данные из my_string (get)
    var temp = My_String; 
    //записать/установить/изменить данные в my_string (set)
    My_String = "я тебя изменяю";  // в этом случае в  будет не my_string = "что-то", а my_string = "я тебя изменяю"
    Ответ написан
    1 комментарий
  • Как в graph facebook выглядит отложенная запись с картинкой?

    tomnolane
    @tomnolane Автор вопроса
    профессиональный разработчик
    решение:
    для публикации отложенной записи с картинкой, не нужно сначала её загружать (для получения ID), потом прикреплять к POST отправке. Надо во время загрузки картинки на сервер Facebook через GraphAPI, добавить в ваш POST дополнительные поля:
    "scheduled_publish_time= ...тут время timespan..."
    вместо "message=ваш_текст" используется "caption=ваш_текст" (для видео используется "description") ну и самом собой "published=false "
    2d1f2a08a1f44a2ebffc543526161fbf.JPG

    т.е. вы одним POST запросов загружаете картинку + текст + делаете отложенным пост и всё)
    Ответ написан
    Комментировать
  • Как передать нажатую кнопку в другой метод C#?

    tomnolane
    @tomnolane
    профессиональный разработчик
    public void TakeMessage(string btnStatus, string userName, Button btnTest)
            {
    
    
                if (userName == "")
                {
                    MessageBox.Show("Введите Ваше имя!");
                }
    
                else if (btnStatus == "Red")
                {
                    btnTest.BackColor = Color.Green;
                    btnTest.Text = "Свободно";
                }
                else
                {
                    btnTest.BackColor = Color.Red;
                    btnTest.Text = userName;
                }
            }
    
    private void btnClick(object sender, EventArgs e)
            {
                var btn = sender as Button; 
    
                if (btn.BackColor == Color.Green)
                {
                    btnStatus = "Green";
                }
    
                else
                {
                    btnStatus = "Red";
                }
    
                Server.SendMessageToAll(btnStatus, tbLogin.Text);
                TakeMessage(btnStatus, tbLogin.Text, btn);
            }


    в вашем случае не вижу смысла создавать отдельный метод TakeMessage ... все что есть в TakeMessage, можно реализовать в одном методе обработчике: btnClick
    Ответ написан
  • Как парсить HTML при помощи HttpClient?

    tomnolane
    @tomnolane
    профессиональный разработчик
    способов много, но предложу использовать универсальный, пусть это и костыль, но много место не занимает, дополнительные (сторонние библиотеки не нужны...):
    using System;
    using System.IO;
    using System.Net;
    using System.Net.Http;
    using System.Text.RegularExpressions;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication3
    {
        public static class Program
        {
            private static string html = "Ошибка";
    
            private static void Main()
            {
                ShowTags("https://www.yandex.ru/","a");
                Console.ReadKey();
            }
    
            private static async void ShowTags(string my_url, string tag = "a") // Тег по умолчанию для поиска, ищем теги <a></a>
            { 
                // Загружем страницу 
               string data = await GetHtmlPageText(my_url);
    
               if (!data.Contains("Ошибка"))
                { 
                    string pattern = string.Format(@"\<{0}.*?\>(?<tegData>.+?)\<\/{0}\>", tag.Trim());
                    // \<{0}.*?\> - открывающий тег
                    // \<\/{0}\> - закрывающий тег
                    // (?<tegData>.+?) - содержимое тега, записываем в группу tegData
    
                    Regex regex = new Regex(pattern, RegexOptions.ExplicitCapture);
                    MatchCollection matches = regex.Matches(data);
    
                    foreach (Match matche in matches)
                    {
                        Console.WriteLine(matche.Value);
                        Console.WriteLine("Содержание:");
                        Console.WriteLine(matche.Groups["tegData"].Value);
                        Console.WriteLine("---------------------------");
                    } 
                }
                else
                {
                    Console.WriteLine("Ошибка при загрузке со страницы: " + my_url);
                }
            }
    
            private static async Task<string> GetHtmlPageText(string url)
            {  
                await Task.Run(async()=>{
                   
                    // ... используем HttpClient.
                    using (HttpClient client = new HttpClient())
                    using (HttpResponseMessage response = await client.GetAsync(url))
                    using (HttpContent content = response.Content)
                    {
                        // ... записать ответ
                        string result = await content.ReadAsStringAsync();
                        if (html != null)
                        {
                            html = result;
                        }
                    } 
                });
                return html;
            }
        }
    }


    результат на примере yandex.:
    <a href="http://mail.yandex.ru"onclick="c(this,17,1080)">Войти&nbsp;в&nbsp;почту</a>
    Содержание:
    Войти&nbsp;в&nbsp;почту


    Regex работает быстрее чем остальные парсеры
    Ответ написан
  • Progress Bar & Thread в C#?

    tomnolane
    @tomnolane
    профессиональный разработчик
    Kirill Rud: я не понял что вы в коде подразумеваете под "Downloder"... если это WebClient downloader= new WebClient(); то, у него есть специальный метод для асинхронной загрузки (чтобы не создавать отдельный поток)
    // DownloadFile(...) - загрузка в главном потоке
    downloader.DownloadFileAsync(new Uri("ввв.сайт.ру"), "C:\\temp.zip"); // - загружает асинхронно в отдельном потоке, т.е. "DATA.SubThread = new Thread(() =>" <- создавать не нужно.

    после чего "Downloder" нужно подписать на эвенты (события).. ниже в примере создаётся два события: во время загрузки и по окончанию загрузки:
    private void button1_Click(object sender, EventArgs e) //нажимаем кнопку "загрузить"
      {
       string url = "http://****.ру.*****1.zip";
       WebClient downloader = new WebClient();
       downloader.DownloadFileCompleted += new AsyncCompletedEventHandler(downloader_DownloadFileCompleted); // привязываем эвент когда файл загрузится
       downloader.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downloader_DownloadProgressChanged); // привязываем эвент когда файл загружается (в процессе)
       downloader.DownloadFileAsync(new Uri(url), "C:\\temp.zip"); // загружаем не блокируя главный поток
      }
    
     void downloader_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) // событие по которому передается в прогресс бар кол-во процентов загруженной информации
       { 
          progressBar1.Value =  e.ProgressPercentage; // progressBar1 - ваш прогресс бар
        }
      void downloader_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) // событие по окончанию загрузки (п.с. как пример, в рабочем варианте использовать MessageBox лучше не стоит, т.к. он блокирует основной поток (форма зависает, пока не нажмёте кнопку "ок")
       {
           if (e.Error != null)
             MessageBox.Show(e.Error.Message);
           else
             MessageBox.Show("Загружено!!!");
       }

    усё вроде...
    Ответ написан
    7 комментариев
  • Какой ноутбук лучше подходит для рассчетов на GPU с Cuda на Linux?

    tomnolane
    @tomnolane
    профессиональный разработчик
    Добрый день! я не могу подсказать какой ноутбук подойдет, но рекомендую пересмотреть видео карту, т.к. AMD работает для этих целей гораздо быстрее. (см. https://habrahabr.ru/post/226431/ глава "Статистика" где-то на середине страницы - и где-то в этом районе идёт описание почему быстрее....)
    Ответ написан
  • Зависимость размера шрифтов от разрешения экрана?

    tomnolane
    @tomnolane
    профессиональный разработчик
    Через binding: тык
    (п.с. только вместо ползунка - размер экрана)
    System.Windows.SystemParameters.PrimaryScreenWidth;
    System.Windows.SystemParameters.PrimaryScreenHeight;

    п.с.с. доп.
    Ответ написан
  • Как возможно получить инстанс объекта по имени его статического класса?

    tomnolane
    @tomnolane
    профессиональный разработчик
    если нужна рефлексия, то вот:
    using System.Reflection;
    
    Assembly assembly = Assembly.LoadFrom(@"полный путь к dll в виде строки"); // загружаем dll 
                    Type type = assembly.GetType("Library2.MainWindow"); // namespace.class
                    dynamic obj = Activator.CreateInstance(type); //получаем/создаём объект
                    Window dd = (Window)obj; // преобразовываем объект как вам нужно, в данном случае создаётся объект WIndow (dll - от WPF)
                    dd.Show();  //и работает уже с ним...


    UPD

    Assembly assembly = Assembly.LoadFrom("https://tft.a*****.SDK.dll"); 
                    Type type = assembly.GetType("SkalarkiIO.SDK.Outputs+GLARE+FCU");
                    MethodInfo myMethodInfo = type.GetMethod("get_All");
                    var t = myMethodInfo.Invoke(type, null);
    Ответ написан
  • С помощью чего можно открыть pdf-файл?

    tomnolane
    @tomnolane
    профессиональный разработчик
    может через это ??? и вот ещё
    Ответ написан
    Комментировать
  • Как преобразовать из object в string[,]?

    tomnolane
    @tomnolane
    профессиональный разработчик
    в шапку добавить
    using System.Collections;

    string[,] str_arr = new string[2,2] {{"строка1-1","строка1-2"},{"строка2-1","строка2-2"}};
                object ojb = str_arr;
    
                string[,] target = new string[2, 2];
    
                var myList = ojb as IEnumerable; int i = 0; int y = 0;
                if (ojb != null)
                {
                    foreach (var element in myList)
                    {  
                        if (i != 0 && i % 2 == 0 && y == 0)
                        {
                            y = 1;
                        }
                        else if(y == 2)
                        {
                            y = 0; i++;
                        }
    
                        target[i,y] = element.ToString(); 
                         y++;
                    } 
                    Console.ReadKey();
                }


    и посмотреть что лежит в string[,] target уже будет не проблема...

    UPD

    object ojb = str_arr;
    
                string[,] target = new string[2000, 2];
    
                var string_Arr = ojb as IEnumerable; int i = 0; int y = 0;
                if (ojb != null)
                {
                    foreach (var elements in string_Arr)
                    { 
                        if (elements != null)
                        {
                            var enum_elements = elements as IEnumerable;
                            foreach (var elem in enum_elements)
                            {
                                if (i != 0 && i % 2 == 0 && y == 0)
                                {
                                    y = 1;
                                }
                                else if (y == 2)
                                {
                                    y = 0; i++;
                                }
    
                                target[i, y] = elem.ToString();
                                y++;
                            } 
                        } 
                    } 
                    Console.ReadKey();
                }


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

    tomnolane
    @tomnolane
    профессиональный разработчик
    static int[,] Func(int[,]Arr) //функция которая должна переставлять первый и второй столбец 
            {
                
                int[,] arr = new int[Arr.GetLength(0),Arr.GetLength(1)];
                
                int k;
                for (int i = 0; i < arr.GetLength(1); i++)
                {
                    for (int j = 0; j < arr.GetLength(0); j++)
                    {
                        arr[i, j] = Arr[i, j];
                    }
                }
                for (int i = 0; i < Arr.GetLength(0); i++)
                {
                    k = arr[i, 0]; //0 - индекс первого столбца
                    arr[i, 0] = arr[i, 1]; // 1 - индекс второго столбца
                    arr[i, 1] = k;
                }
                return arr;
             }


    п.с. рекомендую сначала гуглить (если типовые и вполне земные вопросы) и уж если никак не удалось - искать в тостере и уже потом задавать вопросы. Т.к. преодоление любой трудности - сначала должно быть с Вашей стороны, чтобы успешно развиваться в дальнейшем. Это к тому, что много в тостере повторяют одни и теже вопросы даже не вводя сам вопрос в поиске.
    Ответ написан
    1 комментарий
  • Как узнать параметры сайта?

    tomnolane
    @tomnolane
    профессиональный разработчик
    Ответ написан
    Комментировать
  • Как посмотреть аналитику любого сайта?

    tomnolane
    @tomnolane
    профессиональный разработчик
    максимум можно что-то вроде через это и так и так
    Ответ написан
    1 комментарий